質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Q&A

解決済

5回答

4040閲覧

CPUがアクセスできるメモリの最大長(32bitなら4GBまで。など)は何によって決まるのですか?

退会済みユーザー

退会済みユーザー

総合スコア0

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

0グッド

2クリップ

投稿2017/11/06 12:06

少し前まで、32bitCPUのWindowsマシンならメモリ最大量は4GBまでという覚え方をしていました。

32bitの場合は、よほど構成のでも64GB程度までのようですが、これが64bitの場合は、2TBなど桁違いに多いみたいですね。

Windows OSでサポートされている最大物理メモリサイズは?

ところでこのCPUが扱える最大メモリは、なぜCPUのbit数(レジスタ長?)で決まるのでしょうか?

また、64bitは32bitに比べて桁違いに多いのは何故なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

ところでこのCPUが扱える最大メモリは、なぜCPUのbit数(レジスタ長?)で決まるのでしょうか?

違います。
CPUのメモリアドレスのビット数で決まります。
昔のCPUだと、
8080という8bitCPUのアドレスは16bit(64KB)
8086という16bitCPUのアドレスは20bit(1MB)
でした。いずれもレジスタサイズとは一致していません。
今のPC用CPUだと、
32bitモードのアドレスは32bit(4GB)
64bitモードのアドレスは48bit(256TB)
です。

アドレスが〇bitだと、「0番地」から「2の〇乗-1番地」までのメモリを扱えます。
上記はCPUの制限で、ハードウェア構成やOSの制限でこれより狭くなることがあります。
Windows/64bitだと2TBが上限のようですね。

投稿2017/11/06 13:42

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/06 15:03

otn様 なるほど、そういう事ですか。。。 だから、同じ32bitCPUでも扱えるメモリ容量がまちまちなんですね。 メモリアドレスというまた別のbit数で決まるんですね。。。 で、メモリアドレスが32bitだと、2の32乗 = 4,294,967,295 = 4GBなんですね よく理解できました。
kazuyakazuya

2019/11/14 03:44 編集

>CPUのメモリアドレスのビット数で決まります。 これはアドレスバス幅のことですか?
otn

2019/11/14 08:02 編集

> これはアドレスバス幅のことですか? そうです。 アドレスバスというと、CPUの仕様のこともあるし、個々のPCの実装の話もあると思いますが。 「CPUの」と付ければ良いのか。
pepperleaf

2019/11/14 13:02

古いのが復活してる。 最近のCPUは、大抵、バイトアドレスみたいですけど、ワードアドレスもあるし、その場合、アドレスバス幅 x データバス幅が 実際のアドレス空間(正確には、バイトでのアドレス空間)サイズ。あとは、CPU外にバンク(セグメント)を持つシステムだと、もっとアドレス空間は大きくなった。
otn

2019/11/14 15:06

pepperleafさん ワードマシンのアドレス空間は少なくとも当時は「32Kワード」等と呼んでいたと思います。 後半は、CPUの仕様の話とは違い、個々のコンピューターの実装の話ですね。
pepperleaf

2019/11/16 01:20

おっと、今だと、 > CPU外にバンク(セグメント)を持つシステム は、CPU内と取り込まれてた。最近だと、論理アドレス ≠ 物理アドレスなんで、アドレスバスと言ってもどこのか限定しないと正確じゃなかったです。 > ハードウェア構成やOSの制限でこれより狭くなることがあります。 でした。 失礼。
guest

0

直接的にはすでに書かれているようにCPUの論理アドレスサイズによって決まるのですが、色々抜け道があります。
例えば Intel x86系の32bit環境では、アドレスサイズは仮想32bitですが、CPUの物理的なアドレスバスは36bitあるため、最大で64GBまで認識させることができます。
でもそうするとプロセスが使えるサイズが4GBのままになってしまうため、ページテーブルというメモリを管理するテーブルの使いかたをちょっと工夫することで、大規模なメモリを扱えるようにする仕組みがあります。
※この方式はx64環境でも取り入れられており、結果仮想48bit、物理52bitのメモリ空間を制御できるようになっています

逆パターンで、80386(インテル初の32bitプロセッサ)の廉価版80386SXでは、物理アドレスバスが24bitしかありませんでした(その前の80286と同じアドレスバス・データバスとすることで、マザーボード開発コストを抑える意味があります)。そのためメモリ空間が16MBしか確保できません。

投稿2017/11/06 15:23

編集2017/11/06 15:29
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/06 23:16

tacsheaven様 さらに詳しいご回答ありがとうございます。 ちょっと知りたかった疑問だったのですが、こんなに深い話が出てくるとは! ありがとうございました。 大変勉強になりました。
guest

0

はじめに

こんにちは。あかこうと申します。
よろしくお願いします。

前提

他の回答者様が仰った通り、レジスタ長で決まります。

何故か

レジスタの役割の一つにメモリのアドレスの保管がありますよね。
例えば、eip(命令ポインタ)というレジスタだと次に実行する命令のアドレスとかを持ってるわけです。

しかしこれらにも長さの限界があります。

これも例えなのですが、指定のeipが32bit分格納できるとしたら、このeipが表せるアドレスの最小値は0x00000000(2進数で0が32個)から、最大値である0xffffffff(2進数で1が32個、10進数で約4Gb分)になります。
このeipの各1bをメモリの1B分ずつ、アドレスとして割り当てれば、結果的に4GB分のアドレスが表現できるのです。

つまりはこのeipはこれ以上の幅の、アドレスは参照できなくなります。
レジスタ長で扱えるメモリの大きさが変更されるのはこの為です。

また他の回答者様が仰ったとおり、上記はあくまでもCPUの制限であって、ハードウェア構成やOSの制限は別に存在します。それらの結果、このアドレスの幅(0x00000000~0xffffffff)より狭くなる可能性があります。

最後に

このような解答でよろしかったでしょうか?
質問者様、他の閲覧された方々、もし間違っている点や質問があれば、コメントをお願いします。

注釈

  • b→ビット
  • B→バイト

(分かりづらく感じたので足しました)

参考

  • [X86アセンブラ/x86アーキテクチャ

](https://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/x86%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3)

投稿2017/11/06 14:59

akakou

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/06 15:06

akatou様 うわ!わかりやす~! 凄く深い知識をお持ちですね。 非常によく理解できました。 ありがとうございましたm(_ _)m
退会済みユーザー

退会済みユーザー

2017/11/06 15:09

追伸ですが、プロフィール拝見させて頂きましたが、高専卒の方。 それは賢いはずですね。
akakou

2017/11/06 15:19

お役に立てたようで嬉しいです。 あと私自身、全く賢くないですし、まだ卒業してないですよw
退会済みユーザー

退会済みユーザー

2017/11/06 15:23 編集

あ、すいません。現役高専生の方! しかも、ブログなど拝見させて頂きましたが、すごいですね! 私の高校時代を思い出すと恥ずかしくて人間やめたくなりますわ。。。(^-^; akatouおぼっちゃま、どうぞ将来は日本の為に出世して下さいね~
akakou

2017/11/06 15:32

ブログ等に関しては、少しマイナーな部分が多いだけで、そこまですごくはないですよ。 出世できるかはわかりませんが、何かしら貢献できるように頑張ります。
guest

0

投稿2017/11/06 12:22

WathMorks

総合スコア1582

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/06 14:55

rkhs様 う、うーん。
退会済みユーザー

退会済みユーザー

2017/11/06 23:21

wikipedia って、こんなことまで記述があるんですね。
guest

0

わかりやすく言うと住所を数えるときに指の数(CPUのbit数)が32本か64本かで数えられる限界値が変わってくることです。

投稿2017/11/06 13:19

編集2017/11/06 13:20
mike2mike4

総合スコア894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/11/06 14:54

mike2mike4様 そ、そんなもんですか。。。?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問