48 ビットをスキップして 32 ビットから 64 ビットに移行しますか?

48 ビットをスキップして 32 ビットから 64 ビットに移行しますか?

コンピュータ アーキテクチャは 16 ビットから 32 ビット、そして 64 ビットにアップグレードされました。48 ビットをスキップした理由は何ですか? 他の指数ではなく 64 ビットにアップグレードした理由は何でしたか?

次の表は、2^32 は 2^16 の 65536 倍であることを示しています。したがって、2^32 の 65536 倍である 2^48 を使用するのが理にかなっているようです。2^64 を使用すると、比較すると大幅な飛躍のように思えます。(amd64 の導入から 10 年が経過し、デスクトップ コンピューターは 2 桁の GB RAM を搭載して販売されていますが、サーバーは 3 桁の GB RAM を使用しています。)

    2^16                        65.536
    2^32                 4.294.967.296  2^16 X 65536
    2^48           281.474.976.710.656  2^32 X 65536
    2^64    18.446.744.073.709.600.000  2^32 X 4294967296

以下を編集

私はオンライン 10 進数から 2 進数へのコンバーターそして、次の結果が得られました。どうやら、2^48 は 48 個の 2 進数の 1 で最大になるようです。

    1111111111111111                      65535  2^16 - 1 (16 ones)
    10000000000000000                     65536  2^16

    11111111111111111111111111111111                    4294967295  2^32 - 1 (32 ones)
    100000000000000000000000000000000                   4294967296  2^32

    111111111111111111111111111111111111111111111111            281474976710655 2^48 - 1 (48 ones)
    1000000000000000000000000000000000000000000000000           281474976710656 2^48

    1111111111111111111111111111111111111111111111111111111111111111    18446744073709551615    2^64 - 1 (64 ones)
    10000000000000000000000000000000000000000000000000000000000000000   18446744073709551616    2^64

答え1

64 ビットは次の論理的なステップアップです。

主な理由は、異なるサイズでネイティブに動作するシステムでは、ビット数を 2 倍 (または半分) にする手順がソフトウェアとハ​​ードウェアで簡単に処理できるためです。64 ビット CPU が利用可能になる前から、32 ビット システムでは、内部ですでに 64 ビットの値が日常的に処理されていました。

たとえば、32 ビット システムでは、64 ビットの数値を 2 つの 32 ビット変数/レジスタに格納することで簡単に処理できます。48
ビットの数値の処理は面倒です。32 ビット変数と 16 ビット変数を一緒に使用するか、32 ビット変数の一部のみを使用するか、3 つの 16 ビット変数を使用する必要があります。48 ビットの場合、これらのソリューションはどれも最適ではありません。

一般的に、X ビットで動作するシステムは、(N * X) および (X / N) のサイズを簡単に処理できます。ここで、N は 2 の累乗です。したがって、ロジックは 1、2、4、8、16、32、64、128、256、512 などとなります。
その他のサイズでは、ハードウェアおよび/またはソフトウェアでより複雑な処理が必要になるため、最適ではありません。

したがって、ハードウェア アーキテクチャでより大きなビット サイズを目指す場合、新しいビット サイズをサポートするには、オペレーティング システム、ソフトウェア、およびコンパイラーに小さな更新を加えるだけで済むため、同じ手順を使用するのが合理的です。

(これはすべて、CPU レジスタのネイティブ ビット サイズに当てはまります。RAM チップをアドレス指定する「アドレス ラインの数」について考えると、アーキテクチャにとって自然な数よりも小さい数値が表示されることがあります。
内部的には、これらの CPU はより多くのビットを使用しますが、すべてのビットが実際のアドレス ラインに接続されているわけではありません。
たとえば、8088 および 8086 CPU では 20 ライン、80286 では 20 ライン、Pentium II では 36 ラインです)

答え2

基本的に何が起こったかというと、バイト アドレス指定です。それ以前は、プロセッサに 2 の累乗のワード長を持たせる強い理由はありませんでした (ただし、回路がそのような倍数で作られていたため、一般に 2 または 4 の倍数にする物理的な理由がありました)。

バイト アドレス指定の前は、メモリ ワードはプロセッサ ワードと同じ幅で、メモリは (主に) ワード単位でアドレス指定されていました。しかし、バイト アドレス指定では、「ワード」の長さがバイト サイズの 2 の累乗になるという利点があり、「ワード」の境界が適切な 2 進数で表されます (人間にとっても、コンピュータ ハードウェアにとっても扱いやすい)。

(バイト アドレス指定がなぜ「流行」したのかについては、今のところ説得力のある議論はできません。)

おそらく、標準文字が 8 ビットではなく 10 ビットであれば、16 ビット、32 ビット、64 ビットではなく、20 ビット、40 ビット、80 ビットのプロセッサが使用されるでしょう。

関連情報