
電腦架構從16位元升級到32位元再到64位元。跳過 48 位元的邏輯是什麼?升級到 64 位元而不是其他指數的原因是什麼?
下表說明:2^32 是 2^16 的 65536 倍。因此,使用 2^48 是合乎邏輯的,它也比 2^32 大 65536 倍。相比之下,使用 2^64 似乎是一個巨大的跳躍。 (amd64 推出 10 年後,桌上型電腦以兩位數 GB RAM 出售,而伺服器則使用三位數 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
編輯如下
我用了一個線上十進位到二進位轉換器我得到了這些結果。顯然,2^48 最大有 48 個二進位 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 位元是下一個合乎邏輯的步驟。
原因主要是因為對於以不同大小本機運作的系統,將位數加倍(或一半)的步驟很容易在軟體和硬體中處理。在 64 位元 CPU 可用之前,32 位元系統已經在內部常規地處理 64 位元值。
例如:32 位元系統可以透過將 64 位元數字儲存在 2 個 32 位元變數/暫存器中來輕鬆處理它。
處理 48 位數很尷尬:您需要同時使用 32 位元和 16 位元變量,或僅使用 32 位元變數的一部分,或使用 3 個 16 位元變數。這些 48 位元解決方案都不是最佳的。
一般來說:任何以 X 位元工作的系統都可以輕鬆處理 (N * X) 和 (X / N) 的大小,其中 N 是 2 的冪。 、64、128、256、512等。
所有其他尺寸都需要更複雜的硬體和/或軟體處理,因此不是最佳的。
因此,當在硬體架構中尋求更大的位元大小時,使用相同的進程是有意義的,因為只需對作業系統、軟體和編譯器進行較小的更新即可支援新的位元大小。
(這一切都適用於 CPU 暫存器的本機位元大小。當您考慮對 RAM 晶片進行尋址的「位址線數量」時,您可能確實會看到一個比架構自然的數字更小的數字。
在內部,這些CPU 使用更多位,但並非所有位都連接到實際位址線,
例如:8088 和 8086 cpu 上有 20 行,80286 上有 20 行,Pentium II 上有 36 行。
答案2
基本上,發生的事情是位元組尋址。在此之前,沒有令人信服的理由讓處理器具有兩個字長的冪(儘管通常存在 2 或 4 的倍數的物理原因,因為電路是以這樣的倍數出現的)。
在位元組尋址之前,記憶體字的寬度與處理器字的寬度相同,且記憶體(主要)是按字尋址的。但是,對於位元組尋址,“字”長度是位元組大小的兩倍的冪是有優勢的,因此“字”邊界將落在一個很好的二進制級數中(對人類和電腦硬體來說都很好處理)。
(至於為什麼位元組尋址成為“最流行的東西”,我現在無法提供任何令人信服的論點。)
很可能,如果標準字元是 10 位元而不是 8 位元,我們就會有 20、40、80 位元的處理器,而不是 16、32、64 位元。