📄 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 + -