?? 00000032.htm
字號:
有如此簡單。AMD和摩托羅拉對于執行單元的定義是不同的: <br />1)同是LSU,G4把它看成一個執行單元,而K7的LSU并不是一個獨立的部分,反而把三個 <br />AGU看成是一個執行單元。 <br />2)G4的分支處理單元是一個執行單元,K7卻不是。 <br />3)G4有系統寄存器單元,K7沒有。 <br />如果按照AMD的計算方法,7400只是一個六路超標量機器,詳細對比如下: <br />-------------------------------------------- <br />MPC7400: <br />- 1個浮點單元 <br />- 2個向量單元 <br />- 2個整數單元 <br />- 1個地址生成單元,包含Load/Store單元 <br />K7: <br />- 3個浮點/向量單元 <br />- 3個整數單元 <br />- 3個地址生成單元 <br />-------------------------------------------- <br />從表中可見,它們的內核架構是極為相似的,唯一不同的是K7的浮點單元可以處理SIMD <br />(Single Instruction Multiple Data,單指令多數據流)等向量指令,而7400的每一個 <br />單元只能進行相應的工作。 <br />3、Load/Store單元 <br />G4只有一個Load/Store單元,所以內存存取的工作非常簡單。 <br />圖5 <br />比如要進行一項兩個數的相加工作,CPU先計算操作數的內存地址,再從內存中把操作數 <br />load到兩個寄存器,然后進行ADD計算,最后把結果Store回到內存。 <br />圖6 <br />由于內存的速度較慢,CPU需要等待指令載入到寄存器,上面已經說過,絕不允許CPU出 <br />現空閑,因此提早載入指令也是增加運算速度的一種方法。至于儲存結果的時候,CPU可 <br />以同時載入下一條要執行的指令,內存潛伏期的長短并不會對Store過程造成影響。 <br />G4的LSU可以進行地址計算和6入口地址存取,LOAD操作為亂序執行,Store操作為按序寫 <br />回(最大吞吐量為1條指令/時鐘周期),其Load/Store操作面向所有執行單元。 <br />K7的Load/Store比G4要復雜一些,處理器的管道線過長更易造成內存讀取的延遲。K7的 <br />44入口LSU是一個大型的Load/Store進程序列,并不能做地址計算工作,它依靠三個AGU <br />(Address Generation Units,地址產成單元)來作為補充,峰值性能為2條load指令/時 <br />鐘周期。 <br />G4和K7的共通點如下,它們都遇到了相同的問題,并用類似的方法解決了。 <br />- 兩者都有LSU <br />- LSU載入都受到內存速度的影響 <br />- LSU可以作亂序執行 <br />- 要花費額外的硬件來計算操作數地址 <br />4、整數和浮點單元 <br />眾所周知,K7的整數能力非常強大,這與三個完全的整數單元有關,它們可以處理復雜 <br />和簡單兩種操作。G4的IEU(Integer Execution Units,整數執行單元)卻比較弱小,只 <br />有兩條處理管道,其中一條只能運算簡單的操作,在整數運算方面剛好和K7打個平手。 <br /> <br />圖7 <br />在浮點方面,AMD為了改變一直以來FPU性能較差的局面,花大力氣增加了三個并行的浮 <br />點處理單元:FADD(Floationg Point Addition,浮點加)、FMUL(Floationg Point M <br />ultiplication,浮點乘)、FSTORE,每個單元都可以完成特定的浮點操作(包括單精度 <br />、雙精度和SIMD)。 <br />- FADD:普通浮點加、減和比較操作,MMX整數ALU操作,3DNow!浮點加 <br />- FMUL:普通浮點乘、除、求余、平方根,MMX整數ALU和乘法、3DNow!乘法 <br />- FSTORE:存儲浮點、MMX數字和其它函數 <br />G4的FPU單元和SIMD單元都只能各自完成特定的任務,因而依靠一個FPU單元,每時鐘周 <br />期僅能執行一個雙精度浮點操作(K7可執行2個)。如果混合執行浮點和SIMD指令將拖慢 <br />7400的運算速度,不過在現實的應用程序之中,很少軟件會使用混合型指令,所以K7和 <br />G4的速度差距極為有限。 <br />-------------------------------------------------------- <br />算法 7400 K7 <br />SIMD向量計算 Altivec單元 FPU <br />單精度和雙精度浮點 FPU FPU <br />-------------------------------------------------------- <br />5、向量計算 <br />向量計算是一種新型的浮點指令,MMX、3DNow!、SSE都是向量指令集,當然,也可以稱 <br />之為SIMD(Single Instruction Multiple Data,單指令多數據流)。 <br />G4使用一個專門的Altivec單元(Velocity引擎)來處理向量計算,它擁有32個128位寄 <br />存器。K7的向量計算是通過FPU完成的,3DNow!用7個64位寄存器來存儲SIMD數據,這些 <br />寄存器是映射自x87浮點寄存器的。另外,K7還采用寄存器重命名來獲得88個物理浮點寄 <br />存器。對寄存器進行改名或映射等工作,會減低運算的速度,一句話,x86架構寄存器不 <br />足的缺點嚴重影響了K7的發揮。 <br />四、總結 <br />從上述比較中,我們看到K7和7400都是同一種類型的芯片,K7并不是擁有RISC特性的CI <br />SC芯片,而是全新的POST-RISC芯片。為了兼容傳統的x86架構,它不得不花費大量的晶 <br />體管來制造額外的硬件,這導致芯片的面積加大和能耗升高。摩托羅拉的設計技術讓我 <br />感到十分驚嘆,它竟然能以如此小型的芯片和低能耗,實現和K7相當的性能。Altivec單 <br />元是一種非常強大的浮點引擎,雖然它只能處理SIMD指令,但正因為它的專注而使7400 <br />擁有出類拔萃的多媒體性能,不僅能用于圖形工作站,而且作為高端服務器亦毫不為過 <br />。結論已經很明顯了----“K7比不上7400”,不過,AMD通過先進的RISC內核,在x86領 <br />域取得了優異的成績,確實是一著妙棋。最后,我聽說G4和K7都將采用摩托羅拉的銅線 <br />互連技術來提高處理器的頻率,除非AMD徹底改變架構(如:K8),否則在相同的設計之 <br />下,是沒可能勝過7400的。 <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.edu.cn·[FROM: 202.112.137.7] <br /><a href="00000032.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一頁</a><a href="index.htm">回到目錄</a><a href="#top">回到頁首</a></center><center><h1>BBS 水木清華站∶精華區</h1></center></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -