+ -
当前位置:首页 → 问答吧 → 64位和128位CPU的那些事兒

64位和128位CPU的那些事兒

时间:2009-10-12

来源:互联网

這幾天論壇上討論這個問題,引發了一些爭議。其中一大疑問,是像PS2這樣遊戲機所用的CPU的位寬問題——由於分析其內部規格的時候,寄存器的位寬各不相同,所以難以判定。

類似情形,在用於PC的CPU上也時有發生。例如以前的Pentium Pro,含有36位地址總線,但是只支持32位指令集,而地址操作可通過PAE擴展來實現,所以仍然是32位CPU。

所以,要判斷CPU的位寬,更簡便有效的方法是查看它的架構和指令集,因為兩者都規定了它能操作數據的位寬。支持多個指令集的CPU,其架構取決於能完成通用數據操作的主指令集;而那些用來操作特定數據的指令集,並不能作為判斷的依據。此外,由多個不對等單元構成的CPU,其位寬應由主控單元決定。

下面我來簡單分析一下,望高手莫笑。
  • Emotion Engine

    PS2採用的Emotion Engine處理器,由八個單獨的單元構成:一個CPU核心(雙路超標量順序RISC處理器)、兩個Vector Processing Units (VPU)、一個Graphics interface(GIF,圖形接口)、一個十通道DMA單元、一個內存控制器、一個Image Processing Unit (IPU,圖像處理單元)和一個Input Output Interface(輸入輸出接口)。

    上述中的CPU核心支持MIPS-III和大量MIPS-IV指令以及一個索尼定製的128位SIMD指令集:前兩個都是64位通用指令集;後者還可操作特定128位數據。

    它包含了128位的整數寄存器來支持其定製指令集,因此在廣告中被稱為128位處理器。但是由於只能使用64位內存地址,從傳統意義上講僅僅是一款64位處理器。

  • Cell

    PS3採用的Cell處理器,由一個”Power Processing Element”(PPE,基於Power架構的雙路多線程處理器,含有64位的通用寄存器,64位浮點寄存器和128位的Altivec寄存器,作為SPEs的控制器)和七個Synergistic Processing Elements(SPEs,帶128位SIMD結構的RISC處理器,僅含128位寄存器)構成。

    PPE於上面Emotion Engine的CPU核心類似,支持一種可操作128位浮點和整數的SIMD指令集——AltiVec指令集。

    由於PPE作為控制器與SPE和外界打交道,所以Cell的位寬由PPE決定。由於Power架構是64位架構,因此PPE是64位的處理器,Cell處理器也就是64位。

  • Xenon

    Xbox 360上的Xenon處理器,由三個稍作修改的PPE核心(就是上面為PS3設計的Cell處理器中的那個)構成,是64位。

  • Broadway

    Wii上的Broadway處理器,沒有其核心數量方面的資料,但是可知其核心是基於Power架構的,所以是64位。
總之,與英文維基百科上的結論一致,目前的64位CPU已經能夠處理部分128位數據,但還沒有能處理任意128位數據的主流通用CPU。

下面是按架構分類的當前常見64位CPU。
  • Intel Itanium architecture (先前稱為IA-64)
    • Itanium
  • MIPS64 architecture
    • Emotion Engine (用於PS2)
  • Power architecture
    • Broadway (用於Wii)
    • Cell Broadband Engine (用於PS3)
    • Xenon (用於Xbox 360)
  • x86-64 (又稱x64,AMD稱之為AMD64,Intel先前稱之為EM64T,現稱之為Intel 64)
    • AMD K8 及後繼核心構成的CPU
    • Intel Atom (N和Z系列除外)
    • Intel Celeron (2005年中的Prescott-256及以後核心)
    • Intel Core (2 · i5 · i7)
    • Intel Pentium Dual-Core (Yonah核心的除外)
    • Intel Xeon (Nocona及以後核心)
    • VIA Nano

----------------------------------------------------------------------------------------------------------------------------------------------
在分析的過程中,也看了下中文和日文的維基,相對來講,無論是質還是量都比英文維基要差了很多。英文維基不僅有詳盡的描述,還給出了充分的引用和外部鏈接,所以權威性更強。但是,學習的過程中,也不能完全依賴維基——畢竟維基是人寫的,不免有疏漏。至於其它一般的中文資源,常常是錯誤百出。

行文倉促,如有疏漏,請不吝賜教。

------------------------
原文鏈接:
位於 coderoar.wordpress.com

作者: coderoar   发布时间: 2009-10-12

楼主用心了,顶

作者: allisfree   发布时间: 2009-10-12

这事, 看wiki还是不靠谱, 谁有EE的datasheet能给看一眼就好了.

128位的SIMD指令并不能说明CPU就是128位的.

但是假如真如英文wiki所说, EE能把两个64位ALU聚合起来变成128位ALU来使用, 并且配合上128位通用寄存器和128位LOAD/STORE指令(这意味着EE可以处理128位地址, 而不是你说的64位), 那他是128位CPU就没啥争议了, custom instruction set应该不是全是SIMD指令吧.

不知道哪儿有更权威点儿的资料.

作者: kevinlei   发布时间: 2009-10-12

佩服这样的仔细,学习了。。

作者: jarryson   发布时间: 2009-10-12

引用:
作者: kevinlei
这事, 看wiki还是不靠谱, 谁有EE的datasheet能给看一眼就好了.

128位的SIMD指令并不能说明CPU就是128位的.

但是假如真如英文wiki所说, EE能把两个64位ALU聚合起来变成128位ALU来使用, 并且配合上128位通用寄存器和128位LOAD/STORE指令(这意味着EE可以处理128位地址, 而不是你说的64位), 那他是128位CPU就没啥争议了, custom instruction set应该不是全是SIMD指令吧.

不知道哪儿有更权威点儿的资料.
嗯,這個ALU的確有待考證。

看着個PDF,來自維基里的引用部分,裡面講的很詳細。
Diefendorff, Keith. "Sony's Emotionally Charged Chip", Microprocessor Report, Volume 13, Number 5, 19 April 1999. Microdesign Resources.

作者: coderoar   发布时间: 2009-10-12