📄 00000032.htm
字号:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>G4(MPC7400)和K7的比较 turbolinux </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人: flew (游泳的鱼), 信区: Embedded <br />标 题: G4(MPC7400)和K7的比较 <br />发信站: BBS 水木清华站 (Thu Oct 10 19:17:06 2002), 站内信件 <br /> <br />尽管PowerPC平台在很久之前已经建立了,但发展一直不太顺利,其主要原因是:1、I <br />BM的AIX系统没有取得成功;2、苹果对它的重用还是近几年的事情,而最新的G4系统采 <br />用Power PC 7400芯片,使此平台达到了引人注目的顶峰。 <br />K7是AMD目前在x86平台上最强的武器,依靠其出色的整数和浮点性能,吸引了所有人的 <br />注意。虽然K7与G4处于不同平台,但运行的应用程序都相差无几,很应该作一次全面的 <br />比较。 <br />G4(MPC7400)和K7都是性能强大的芯片,它们不仅架构相似,同时拥有向量处理和乱序执 <br />行等POST-RISC系的先进特性,还在各自的领域取得了惊人的成就,是目前最强的两款家 <br />用型RISC内核。下面,就让我们来对比一下分别位于CHRP(Common Hardware Referenc <br />e Platform,共用硬件平台,IBM为PowerPC制定的标准,可以兼容Mac OS, Windows NT <br />, Solaris, OS/2, Linux和AIX等多种操作系统)和x86的芯片。 <br />一、规格对比 <br />首先,K7的晶体管是G4的两倍(22M vs 10.5M),它的芯片尺寸和能耗自然要也比G4大 <br />。除此之外,K7还有极深的管道线和丰富的功能单元,这些都是非常出色的特性。但是 <br />,K7的性能并没有G4的两倍,而且G4的应用范围比K7要广得多,在工作站、嵌入式处理 <br />器、移动式处理器都有其用武之地,由此可见摩托罗拉的芯片制造技术确实非常先进。 <br /> <br />二、内核外部的对比 <br />微处理的内核可以分为内外两个部分,外部负责指令获取、解码和分派,内部就是主要 <br />的运算单元,包括:IEU(Integer Execution Units,整数执行单元)、FPU(Float Poin <br />t Unit,浮点运算单元)和VPU(vector processing units,向量处理单元,即处理MMX、 <br />SSE等SIMD指令的地方)。在这一节中,我们先讨论一下微内核的外部。 <br />1、解码 <br />K7是一种外部CISC(Complex Instruction Set Computing,复杂指令集计算机),内部P <br />ost-RISC的芯片,为了提高它的性能,AMD已经尽力把x86体系的潜力发掘出来。CPU从缓 <br />存或主内存获取指令之后,第二步工序是解码,解码分为硬件解码和微码解码,从速度 <br />上来说,硬件解码的比微码解码要快。硬件解码需要统一长度的指令集才能实现,这恰 <br />好是RISC(Reduced Instruction Set Computing,精简指令集计算机)芯片的特长。 <br />现代的RISC处理器实际上属于Post-RISC架构,它们和原始的少量指令型RISC机器不同, <br />7400等产品增加的指令数目甚至多于CISC芯片。G4并不受指令数量的影响,即使加入更 <br />多指令,也能保持一贯的快速成获取和硬件解码。相比之下,K7就没那么幸运,维持x8 <br />6的兼容性使解码工作异常复杂:1、为了应付长度可变的x86指令,增加指令获取速度, <br />必须加入预解码缓存;2、K7不能直接执行x86指令,需要先把1或2条指令组合成微操作 <br />代码(类似P6的rop)来仿效统一长度的RISC指令,再发给运算单元。解码工作刚开始, <br />K7已经做多了两项步骤,落在G4之后自然不足为奇了,不过,这只是理论分析,实际又 <br />是另一回事了。 <br />Athlon使用两条各自分离的管道来处理繁重的解码工作:硬件解码器负责简单的x86指令 <br />,微操作代码解码器处理复杂的x86指令。但在真实世界中,应用程序很少使用复杂的x <br />86指令,再加上K7有大量的晶体管作为后盾,所以微码解码对它的整体性能影响不大。 <br /> <br />Athlon采用大量晶体管的设计会增加管道的深度,在指令获取之后,K7需要用3个管道( <br />或3个时钟周期)来把长短不一的x86指令定位到6个解码位置(3个微操作代码=6个ops) <br />,换言之,比RISC多用了3个时钟周期。K7花费在解码方面的时间比G4多,这才是它败下 <br />阵的真正原因。 <br />2、分支预测 <br />虽然更深的管道能够增加CPU的时钟频率,但受到分支预测单元处理能力的限制。如果相 <br />应的配套设施跟不上,加深管道只会导致预测命中率大大降低,严重阻碍CPU的运算。 <br />旧式芯片是没有分支预测单元的,当遇到“if then else”的语句,必须等待条件判断 <br />成立之后,才能继续执行运算,浪费了不少时间。分支预测所做的工作为估计成立的条 <br />件,在条件未成立之前,预先进行计算。在此过过程中,BPU(Branch Processing Unit <br />,分支处理单元)的预测准确性是非常重要的,预测正确固然能节省大量时钟周期,但预 <br />测错误重头开始的计算将花费更多时间。 <br />图1显示CPU有不少空闲时间,if执行后第六个时钟周期,then才开始执行。 <br />图2显示CPU被充分利用了,在if执行的同时,then分支已经开始工作。 <br />K7拥有大量的分支指令和分支记录表,其预测的准确性十分高。G4的管道比K7少,对BP <br />U的要求没有Athlon那么严格,在分支记录较少的情况下,也能获得较高的预测正确率。 <br /> <br />3、分派 <br />K7每个时钟周期可以分派3条微操作代码到9个执行单元,而每条微操作代码包括一条内 <br />存存取指令(LOAD/STORE, LOAD或STORE)和一条寄存器指令,这意味着Athlon的峰值处 <br />理能力为6条指令/秒。 <br />7400每个时钟周期可以分派2条指令(向量、浮点、整数、内存存取等),比K7要少得多 <br />,但它的计算单元和K7有稍微不同,就是这点差异使它追上了Athlon。 <br />三、内核内部的对比 <br />微处理器内核的内部才是其运算的真正区域,K7和7400都拥有乱序执行和超标量的特性 <br />。 <br />1、OOO(out of order exectuion,乱序执行)。 <br />图3 <br />CPU的存储单元和运算单元均是有限的,不同类型的指令将用不同的方法使用这些资源。 <br />为了提高处理器的速度,我们要使CPU的流水线不停工作,避免idle的情况出现(也许你 <br />已经知道,CPU降温软件的原理只是反其道而行,尽量让CPU休息)。传统的按序执行方 <br />式是完成一条指令后,再操作另一条,不可能充分利用到CPU的所有资源。乱序执行即对 <br />指令队列进行重新排序,借助指令缓冲区,以一种全新的顺序来执行指令流。 <br />乱序执行需要许多额外的硬件,以便记录指令的原有顺序、当前顺序和使用的资源,这 <br />些都是旧式RISC芯片所没有的,缺点是使处理器的制造更为复杂。 <br />2、超标量架构和执行单元 <br />图4 <br />7400是8路超标量设计,K7为9路超标量设计,从表面来看,K7要领先一些,但实际却没 <br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -