當前位置: 華文問答 > 數位

為什麽沒有128位元甚至更多位的處理器呢?用不著?還是做不出來?

2013-09-13數位

轉一篇

@Skogkatt

的博文:

為什麽沒有「128位元」的通用處理器

在專用領域,比如DSP,GPU中,通用寄存器通常都很寬,也就是說大於通常的32位元或者64位元。其原因在於,這些針對特定領域設計的處理器,其硬體架構是為問題服務的,舉例來說,GPU處理顏色的時候,一個像素ARGB是四個32位元或者16位元的浮點數,所以寄存器有128位元或者64位元寬也就不足為奇了。

那麽我們為什麽沒有見到,或者說市場上為什麽沒有「128位元」的通用處理器呢?這有很多電腦體系結構的原因在裏面,容我一一說來:

首先,我們得定義這個「128位元」是什麽。以傳統的POWER、x86和x64來說,處理器的位數是用通用寄存器的寬度來定義的,即32位元處理器的通用寄存器是32位元,64位元處理器的寄存器是64位元,那麽如果我們有了128位元處理器,也應該一樣。但是,這麽做有必要麽?常規的整數運算是用不到這麽大的寄存器的,真正的大數運算也不會用這種方法來實作。而在現代的32位元、64位元處理器中,更重要的浮點運算所使用的浮點寄存器早已經是128位元甚至256位了。所以128位元通用寄存器在這裏沒什麽意義。

那麽就有人說,我們需要128位元的尋址能力。好吧,64位元的尋址能力是2^64字節,大約是1.84467441 × 10^19 字節,如果你對這個科學計數法表示的數位沒什麽感覺,我用另外一種寫法:18.45 EB 也就是大約18200000 TB,如果說這個不夠用,那你需要的不是人類目前的矽芯片電腦,你需要求助於E.T.。

使用大地址空間有幾個額外的問題,尤其是對RISC處理器來說,會帶來致命的效能問題。很多使用者,尤其是初級的電腦使用者,並不知道RISC這四個字母下隱藏的電腦哲學,或者說藝術:所有的OP code都是定長。以POWER為例,存取32位元的常量地址,需要分兩次計算16位元的地址,因為OP code中只有16bits來存放這樣的數據,64位元則需要四個OP存放。而在CISC處理器中,地址可以直接編碼在指令裏,導致指令明顯變長,比如32位元的跳轉通常是5個字節,而64位元下面甚至需要15個字節。這只是問題的開始:隨著使用的OP的增多,對CPU匯流排和cache的壓力也越來越大,原本一個時鐘周期能fetch兩條指令,現在可能一條都取不到;原本可以存放兩條、四條指令的cache空間,現在只能存放一條指令。

另一個原因是程式中的數據結構。學過電腦科學初級內容的人都知道,現代數據結構中最最最最最基本的要素是:指標。大多數關鍵的數據結構都離不開指標:連結串列、樹……,對於程式來說,從32位元編譯成64位元會大幅增加執行時的記憶體消耗,道理很簡單,指標本身變長了,儲存指標自身需要的空間增加了。變成128位元是什麽樣呢?可想而知。同樣存取記憶體中的數據需要更多的時間,因為數據本身變大了,假設一個結構體裏面有兩個指標,32位元下編譯出來需要8個字節,64位元就需要16個字節(假設4字節對齊)。同理,cache面臨更大的壓力。

上面是軟體上的,或者說是理論上的,那麽我們來看看硬體上的問題。既設我們需要制造「128位元」的通用處理器,有128位元的地址匯流排,128位元甚至256位的數據匯流排,那麽什麽樣的封裝能滿足要求呢?在現代處理器3~~4G的這個工作頻率上,安排這麽大量的匯流排連線,那麽保守估計需要1500~~2500個針腳的封裝才能穩定工作(需要大量的供電和接地針腳來平衡電流和改善訊號品質),而且這麽高密度的,還有大電流,估計要12~24層布線,設計生產這樣的一塊PCB本身就是挑戰電子制造業,至於良品率和價格就不敢想了。

既然我們有了便宜的4核、8核處理器,為什麽要設計生產完全不可行,沒有任何工業和商業價值的「128位元」處理器呢?所以,市場上沒有「128位元」通用處理器。