10

I was refreshing myself on memory information and I am confused on the size of a Word. From my understanding, a Word is not a universally defined size, but is a size defined by the specific system (in terms of number of bytes).

According to wikipedia:

Hence, a processor with 32-bit memory addresses can directly access 4 GiB of byte-addressable memory.

Does that mean that a 32-bit processor can address 4,294,967,295 Words? 32-bit windows is limited to 4GB of RAM, but reading over the meaning of a word had me wondering. Does each Word in windows equate to 1 byte? Could the size of a word just be a larger number of bytes and a 32-bit processor be able to address 8GB, 10GB, 12GB or even more memory?

4

2 に答える 2

10

これは、32 ビット プロセッサが 4,294,967,295 ワードをアドレス指定できるということですか?

それは、CPU と、それをどのように見ているかによって異なります。

1 ワードよりも小さなアドレスを指定できない CPU があります。Texas Instruments 社の 16 ビット デジタル シグナル プロセッサがその良い例です。それらの C/C++ char(AKA byte)shortint型はすべて同じサイズの 16 ビットです。これは、一意のアドレス (ポインター) でアドレス指定できるメモリの最小単位であり、同時にマシン語でもあります。これらのプロセッサではデータ アドレス/ポインタは 16 ビットであるため、データ メモリ内の最大 2 16の 16 ビット ワードをアドレス指定できます。

ここで、32 ビット動作モードの x86 CPU に戻ると、状況は少し異なります。アドレス指定可能なメモリの最小単位は 8 ビット バイトで、最大は 32 ビット ワード (マシン ワード) です。アドレスとポインターも 32 ビットです (セグメンテーションとページ変換を無視した場合)。これにより、2 32 個の一意のメモリ アドレスを持つことができます。そして、自明なことに、それらを使用すると、最大 2 32 8 ビット バイトのメモリにアクセスできます。しかし、2 32 個の一意のアドレスを使用して、いくつの 32 ビット ワードをアドレス指定できるでしょうか? 答えは、重複しない単語が必要か、重複する単語が必要かによって異なります。ご覧のとおり、x86 CPU は、4 バイトの倍数のアドレスだけでなく、任意のアドレスで 32 ビット単位のメモリにアクセスできます。

x86 ではこれに限定されません。

  0 1 2 3 4 5 6 7  <- address
  \word/  \word/

これらはすべて、x86 での 32 ビット ワード アクセスの有効なアドレスです。

  0 1 2 3 4 5 6 7  <- address
  \word/  | | | |
    \word/  / | |
      \word/  / |
        \word/  /
          \word/
            ...

では、 x86で 2 32の一意のアドレスを使用して、いくつの 32 ビット ワードをアドレス指定できるでしょうか? 一意にアドレス可能で重複するものすべてについて話している場合、それはそれらのうちの 2 32です。OTOH、一意にアドレス指定可能で重複しないものすべてについて話している場合、それはそれらの 2 30です。

OTOH、32 ビット CPU が 32 ビット以外のアドレスを使用している場合、合計数は異なります。

于 2013-04-01T01:47:34.823 に答える