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

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

ただいまの
回答率

90.48%

  • CPU

    54questions

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

解決済

回答 5

投稿

  • 評価
  • クリップ 1
  • VIEW 4,113

ogura87

score 98

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+3

ところでこの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/07 00:03

    otn様

    なるほど、そういう事ですか。。。
    だから、同じ32bitCPUでも扱えるメモリ容量がまちまちなんですね。

    メモリアドレスというまた別のbit数で決まるんですね。。。
    で、メモリアドレスが32bitだと、2の32乗 = 4,294,967,295 = 4GBなんですね
    よく理解できました。

    キャンセル

+3

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/07 08:16

    tacsheaven様

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

    ありがとうございました。
    大変勉強になりました。

    キャンセル

+1

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/06 23:55

    rkhs様

    う、うーん。

    キャンセル

  • 2017/11/07 08:21

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

    キャンセル

+1

 はじめに

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

 前提

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

 何故か

レジスタの役割の一つにメモリのアドレスの保管がありますよね。
例えば、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→バイト
    (分かりづらく感じたので足しました)

 参考

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/07 00:06

    akatou様

    うわ!わかりやす~!
    凄く深い知識をお持ちですね。

    非常によく理解できました。
    ありがとうございましたm(_ _)m

    キャンセル

  • 2017/11/07 00:09

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

    キャンセル

  • 2017/11/07 00:19

    お役に立てたようで嬉しいです。

    あと私自身、全く賢くないですし、まだ卒業してないですよw

    キャンセル

  • 2017/11/07 00:23 編集

    あ、すいません。現役高専生の方!
    しかも、ブログなど拝見させて頂きましたが、すごいですね!
    私の高校時代を思い出すと恥ずかしくて人間やめたくなりますわ。。。(^-^;

    akatouおぼっちゃま、どうぞ将来は日本の為に出世して下さいね~

    キャンセル

  • 2017/11/07 00:32

    ブログ等に関しては、少しマイナーな部分が多いだけで、そこまですごくはないですよ。

    出世できるかはわかりませんが、何かしら貢献できるように頑張ります。

    キャンセル

0

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/06 23:54

    mike2mike4様

    そ、そんなもんですか。。。?

    キャンセル

同じタグがついた質問を見る

  • CPU

    54questions

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