
少し前まで、32bitCPUのWindowsマシンならメモリ最大量は4GBまでという覚え方をしていました。
32bitの場合は、よほど構成のでも64GB程度までのようですが、これが64bitの場合は、2TBなど桁違いに多いみたいですね。
Windows OSでサポートされている最大物理メモリサイズは?
ところでこのCPUが扱える最大メモリは、なぜCPUのbit数(レジスタ長?)で決まるのでしょうか?
また、64bitは32bitに比べて桁違いに多いのは何故なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答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
総合スコア86281
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総合スコア13707
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


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アーキテクチャ
投稿2017/11/06 14:59
総合スコア60
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/11/06 15:06

退会済みユーザー
2017/11/06 15:09

退会済みユーザー
2017/11/06 15:23 編集

0
わかりやすく言うと住所を数えるときに指の数(CPUのbit数)が32本か64本かで数えられる限界値が変わってくることです。
投稿2017/11/06 13:19
編集2017/11/06 13:20
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/11/06 14:54

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/06 15:03
2019/11/14 03:44 編集
2019/11/14 08:02 編集
2019/11/14 13:02
2019/11/14 15:06
2019/11/16 01:20