⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000032.htm

📁 水木社区 embeded 版精华区 下载
💻 HTM
📖 第 1 页 / 共 2 页
字号:
有如此简单。AMD和摩托罗拉对于执行单元的定义是不同的:&nbsp;<br />1)同是LSU,G4把它看成一个执行单元,而K7的LSU并不是一个独立的部分,反而把三个&nbsp;<br />AGU看成是一个执行单元。&nbsp;<br />2)G4的分支处理单元是一个执行单元,K7却不是。&nbsp;<br />3)G4有系统寄存器单元,K7没有。&nbsp;<br />如果按照AMD的计算方法,7400只是一个六路超标量机器,详细对比如下:&nbsp;<br />--------------------------------------------&nbsp;<br />MPC7400:&nbsp;<br />-&nbsp;1个浮点单元&nbsp;<br />-&nbsp;2个向量单元&nbsp;<br />-&nbsp;2个整数单元&nbsp;<br />-&nbsp;1个地址生成单元,包含Load/Store单元&nbsp;<br />K7:&nbsp;<br />-&nbsp;3个浮点/向量单元&nbsp;<br />-&nbsp;3个整数单元&nbsp;<br />-&nbsp;3个地址生成单元&nbsp;<br />--------------------------------------------&nbsp;<br />从表中可见,它们的内核架构是极为相似的,唯一不同的是K7的浮点单元可以处理SIMD&nbsp;<br />(Single&nbsp;Instruction&nbsp;Multiple&nbsp;Data,单指令多数据流)等向量指令,而7400的每一个&nbsp;<br />单元只能进行相应的工作。&nbsp;<br />3、Load/Store单元&nbsp;<br />G4只有一个Load/Store单元,所以内存存取的工作非常简单。&nbsp;<br />图5&nbsp;<br />比如要进行一项两个数的相加工作,CPU先计算操作数的内存地址,再从内存中把操作数&nbsp;<br />load到两个寄存器,然后进行ADD计算,最后把结果Store回到内存。&nbsp;<br />图6&nbsp;<br />由于内存的速度较慢,CPU需要等待指令载入到寄存器,上面已经说过,绝不允许CPU出&nbsp;<br />现空闲,因此提早载入指令也是增加运算速度的一种方法。至于储存结果的时候,CPU可&nbsp;<br />以同时载入下一条要执行的指令,内存潜伏期的长短并不会对Store过程造成影响。&nbsp;<br />G4的LSU可以进行地址计算和6入口地址存取,LOAD操作为乱序执行,Store操作为按序写&nbsp;<br />回(最大吞吐量为1条指令/时钟周期),其Load/Store操作面向所有执行单元。&nbsp;<br />K7的Load/Store比G4要复杂一些,处理器的管道线过长更易造成内存读取的延迟。K7的&nbsp;<br />44入口LSU是一个大型的Load/Store进程序列,并不能做地址计算工作,它依靠三个AGU&nbsp;<br />(Address&nbsp;Generation&nbsp;Units,地址产成单元)来作为补充,峰值性能为2条load指令/时&nbsp;<br />钟周期。&nbsp;<br />G4和K7的共通点如下,它们都遇到了相同的问题,并用类似的方法解决了。&nbsp;<br />-&nbsp;两者都有LSU&nbsp;<br />-&nbsp;LSU载入都受到内存速度的影响&nbsp;<br />-&nbsp;LSU可以作乱序执行&nbsp;<br />-&nbsp;要花费额外的硬件来计算操作数地址&nbsp;<br />4、整数和浮点单元&nbsp;<br />众所周知,K7的整数能力非常强大,这与三个完全的整数单元有关,它们可以处理复杂&nbsp;<br />和简单两种操作。G4的IEU(Integer&nbsp;Execution&nbsp;Units,整数执行单元)却比较弱小,只&nbsp;<br />有两条处理管道,其中一条只能运算简单的操作,在整数运算方面刚好和K7打个平手。&nbsp;<br />&nbsp;<br />图7&nbsp;<br />在浮点方面,AMD为了改变一直以来FPU性能较差的局面,花大力气增加了三个并行的浮&nbsp;<br />点处理单元:FADD(Floationg&nbsp;Point&nbsp;Addition,浮点加)、FMUL(Floationg&nbsp;Point&nbsp;M&nbsp;<br />ultiplication,浮点乘)、FSTORE,每个单元都可以完成特定的浮点操作(包括单精度&nbsp;<br />、双精度和SIMD)。&nbsp;<br />-&nbsp;FADD:普通浮点加、减和比较操作,MMX整数ALU操作,3DNow!浮点加&nbsp;<br />-&nbsp;FMUL:普通浮点乘、除、求余、平方根,MMX整数ALU和乘法、3DNow!乘法&nbsp;<br />-&nbsp;FSTORE:存储浮点、MMX数字和其它函数&nbsp;<br />G4的FPU单元和SIMD单元都只能各自完成特定的任务,因而依靠一个FPU单元,每时钟周&nbsp;<br />期仅能执行一个双精度浮点操作(K7可执行2个)。如果混合执行浮点和SIMD指令将拖慢&nbsp;<br />7400的运算速度,不过在现实的应用程序之中,很少软件会使用混合型指令,所以K7和&nbsp;<br />G4的速度差距极为有限。&nbsp;<br />--------------------------------------------------------&nbsp;<br />算法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;K7&nbsp;<br />SIMD向量计算&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Altivec单元&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FPU&nbsp;<br />单精度和双精度浮点&nbsp;&nbsp;&nbsp;&nbsp;FPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FPU&nbsp;<br />--------------------------------------------------------&nbsp;<br />5、向量计算&nbsp;<br />向量计算是一种新型的浮点指令,MMX、3DNow!、SSE都是向量指令集,当然,也可以称&nbsp;<br />之为SIMD(Single&nbsp;Instruction&nbsp;Multiple&nbsp;Data,单指令多数据流)。&nbsp;<br />G4使用一个专门的Altivec单元(Velocity引擎)来处理向量计算,它拥有32个128位寄&nbsp;<br />存器。K7的向量计算是通过FPU完成的,3DNow!用7个64位寄存器来存储SIMD数据,这些&nbsp;<br />寄存器是映射自x87浮点寄存器的。另外,K7还采用寄存器重命名来获得88个物理浮点寄&nbsp;<br />存器。对寄存器进行改名或映射等工作,会减低运算的速度,一句话,x86架构寄存器不&nbsp;<br />足的缺点严重影响了K7的发挥。&nbsp;<br />四、总结&nbsp;<br />从上述比较中,我们看到K7和7400都是同一种类型的芯片,K7并不是拥有RISC特性的CI&nbsp;<br />SC芯片,而是全新的POST-RISC芯片。为了兼容传统的x86架构,它不得不花费大量的晶&nbsp;<br />体管来制造额外的硬件,这导致芯片的面积加大和能耗升高。摩托罗拉的设计技术让我&nbsp;<br />感到十分惊叹,它竟然能以如此小型的芯片和低能耗,实现和K7相当的性能。Altivec单&nbsp;<br />元是一种非常强大的浮点引擎,虽然它只能处理SIMD指令,但正因为它的专注而使7400&nbsp;<br />拥有出类拔萃的多媒体性能,不仅能用于图形工作站,而且作为高端服务器亦毫不为过&nbsp;<br />。结论已经很明显了----“K7比不上7400”,不过,AMD通过先进的RISC内核,在x86领&nbsp;<br />域取得了优异的成绩,确实是一着妙棋。最后,我听说G4和K7都将采用摩托罗拉的铜线&nbsp;<br />互连技术来提高处理器的频率,除非AMD彻底改变架构(如:K8),否则在相同的设计之&nbsp;<br />下,是没可能胜过7400的。&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.edu.cn·[FROM:&nbsp;202.112.137.7]&nbsp;<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 + -