32位轉64位跳過48位?

32位轉64位跳過48位?

電腦架構從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 位元。

相關內容