技术上有什么不同?
适用在那些方面?
特色是什么?
參考答案:要了解Pentium何以能使80x86的性能达到新的高度,就必须将它同I
ntel原先速度最高的486芯片即486DX2-66芯片(以下简称486)进行
比较。这种比较有深远的意义,因为这些芯片在内部都用同一频率的时钟。然而由于芯片
内部构造不同,引起性能上有这样大的差别。
一、用0.8μm Bi-CMOS
Pentium是大型的芯片,在13.9cm,〔2〕的273针脚PGA(针栅
阵列)封装中容纳310万个晶体管。在66MHz下工作时Pentium的功耗为1
3瓦。它用0.8μm B-CMOS技术制造。其特点是对命令和数据高速暂存、高速
暂存标记、高速暂存TLB(变换后备缓冲区:用以存放读出地址变换结果的缓冲区)来
说,拥有检出基于奇偶的内部误差的机构。这一机构也能对微程序ROM起作用。
Pentium的命令系统几乎同486的没有什么不同。只是追加几条新的命令,
使系统程序员可以实行MESI(Modified Exclusive Share
d Invalid:修改的独占分享无效)式多处理高速暂存整合协议,Pentiu
m通过硬件支持它。此外,还追加了8字节的比较交换命令和CPU识别命令。Pent
ium还比486多一个控制寄存器CR4。此外,还拥有Intel最初在386SL
上使用的System Management Mode(系统管理方式,用于节电)
。
二、有两条并行整数流水线可同时执行两条命令
Intel使用优化编译,从Pentium获得64.5 SPECint92的
速度,它为486的两倍。Pentium和486都采用5工位的整数流水线,命令分
散在处理器内部的各个工位执行。这5个工位是:预取指、译码、地址生成、执行、写回
。命令在1个工位执行完毕后便移动到下一工位,而把地方空出给下一个命令。Pent
ium拥有两条并行整数流水线。
Pentium的整数单元,同时对两个整数命令进行取指和解码。然后检验这些命
令能否并行地执行。通常,这些命令是所谓单纯(简单)命令,即第二条命令不依赖于第
一条命令的结果。这时,Pentium便可把这两条命令分别发给U流水线和V流水线
。这些流水线分别拥有自己的ALU。当两条命令满足适当条件时,Pentium便可
同时执行它们。
根据Intel定义,单纯命令不需要微程序,通常1个时钟周期便可执行。只有从
存储器往寄存器的命令,以及从寄存器往存储器的命令,对后面的条件才是例外。这些命
令分别需2个和3个时钟周期。对Pentium来说,内藏有顺序管理硬件,可以把这
些例外当作单纯命令处理。对于这一例外命令和与之配对的1周期命令,由于可使其等待
一二个周期,所以两条流水线内仍可使命令保持无间隙的进行状态。
如果一对命令不符合并行发行条件,处理器控制单元把第一条命令发往U流水线,而
第二条命令则留待同下一个译码出来的命令(第三条命令)配对,然后判定这两条命令能
否并行发行。控制单元如果不能同时发行这两条命令,便把第二条命令先发出去。Pen
tium不支持改变执行顺序。
U流水线和V流水线不完全一样。U流水线有位层次操作用的筒状位移器。也可以执
行80x86的命令。此外,浮点小数运算的第一工位系在这一流水线都可以取出FPU
的运算数)。进而,U流水线还可以根据命令执行的结果置以标志。
三、命令和数据的高速暂存分开,数据总线为64位
通过追加第二个整数ALU,整数单元的潜在处理能力实际上可增加一倍。同只支持
一个整数流水线时相比,处理器也需要对命令和数据进行双倍的访问。为了使这些访问不
互相干涉,Intel把486上共用的高速暂存,在Pentium上改为按命令和数
据分开,它们都是8K字节的2路径置位相联(way·set·associativ
e)高速暂存。此外,内部和外部的数据总线,也都扩大一倍成为64位的。因此,Pe
ntium发往芯片以外的访问,可比486时多一倍,对命令或数据都是这样。
把命令和数据高速暂存分开时,Intel遇到一个问题。这就是由于分开,有可能
破坏自己修正的码段。为使码段发挥功能,Pentium要使命令和数据两个高速暂存
之间保持整合性。
但是,使整数流水线装满的努力,不只限于把命令和数据高速暂存分开。Intel
在处理器的命令和数据两方面,在基本的486结构上都追加了强化处理能力的新功能。
几乎所有的整数命令,都至少要求有一个操作数,几乎在所有场合下它都位于数据高
速暂存中。在有两个并行的ALU时,经常同是两条命令都需要操作数,而要访问数据高
速暂存。为了支持同时访问高速暂存,Intel使Pentium数据高速暂存的TL
B和高速暂存标记,都成为双端口型的(即两个ALU可同时读出)。
Intel为避免对全部高速暂存都用双端口,代之以高速暂存在4字节边界上交错
地放置8个存储体(Bank)。除非另一个ALU访问同一存储体,高速暂存可以同时
向对同一高速暂存进行的访问提供两个数据。在这一点上,Pentium的数据高速暂
存采用了写回方式。这同486的穿过高速暂存写方式相比,可以增加高速暂存的命中(
Hit)率(数据高速暂存的TLB和高速暂存标记,实际上都是三端口的。就是说还有
用于多处理高速界存整合化线路读出用的第三端口)。
四、在命令系统中追加了分支预测
关于命令系统,Intel追加了用于命令预取指的分支预测。Pentium有两
个32字节的缓冲区。不管什么情况下,在遇到分支命令前,一个预取指缓冲区将依次处
理命令地址。在遇到分支的时刻,保持分支履历信息的BTB(Branch Targ
et Buffer:分支目标缓冲区)把预测预取出来的分支命令的执行是否将导致分
支。
如果BTB预测不发生分支,预取指将按顺序继续进行下去。如果BTB预测会发生
分支,第二个预取指缓冲区便根据这一预测开始预先取出命令。因此,如果BTB预测正
确,分支将毫不迟延流水线的执行,因为适当的后续命令早在预取指缓冲区等待着。如果
BTB预测有分支而实际没有分支,或者预测没有分支而实际有分支,尽管和预测的目标
地址不一样,但Pintium能快速刷新流水线,取出正确命令。在这种情况下,将产
生最低3个时钟周期的延迟。
五、浮点小数运算高度流水线化
实数运算性能一直是80x86结构的弱点。考虑到需要高速实数运算性能的PC应
用程序并不多,Intel对此不重视是可以理解的。然而,现在需要图形功能的应用程
序越来越重要,优良的浮点小数运算性能的必要性,较之486刚问世时更增加了。从竞
争的观点看,Pentium的浮点小数运算性能至少应不低于RISC结构的。
浮点小数运算性能是硅芯片的一个重要指标。Pentium已能达到56.9SP
ECflop92这样的速度,它是486的3.5倍。最重要的进步是,Pentiu
m的FPU拥有加法、乘法、除法单元。这些专用电路取得了惊人的效果。加法和乘法单
元不管对什么样的精度,都可以在3个时钟周期内完成处理。除法单元最慢,但每一时钟
周期也能计算出3位商。这样的速度较之486的FPU也有大幅度改善,因为486F
PU对FADD命令需要10时钟周期,对FMUL命令需要12至15时钟周期。
Pentium的浮点小数运算实现了高度流水线化,并同整数运算流水线化,并同
整数运算流水线相统一。浮点小数运算流水线由8个工位组成,前4个工位同整数流水线
的前4个工位一样(Pentium在整数命令时,8个工位流水线只使用5个工位)。
浮点小数命令使用两条流水线,64位操作数可在一个周期里取出。命令在使取出的操作
数传送到ALU后,便在U流水线进行浮点小数的运算。
六、同RISC相比还不算是最先进的设计
将FPU流水线化后的一个结果是,可以把产生3个周期延迟的新的加法和乘法命令
在一个周期里发出。因而如果编译程序能持续地装满流水线,则Pentium在一开始
为了装满流水线而产生2个周期的延迟后,在一个周期里便能达到进行加法、乘法运算的
吞吐能力。
浮点小数命令为了取出操作数,使用了两条流水线,所以不可能并行地进行两个浮点
小数的运算。但是,FXCH命令是个重要的例外。在80x86的浮点小数结构中,F
PU的寄存器文档是作为栈而组织起来的。FXCH命令将栈最上面的FPU寄存器内容
,同80x86浮点小数累加器的内容进行交换。在Pentium中,FXCH命令和
其他的几乎所有浮点小数命令,可并行地发往V流水线。其积极效果是,完成浮点小数命
令后,其结果立即放入浮点小数累加器,因而可以用于下一条浮点小数命令。通过这一措
施使浮点小数运算可以大幅度地提高速度。
就结构而言,Pentium并非最先进的设计。几乎所有的RISC设计都用上了
Super Scalar(超标量)技术,拥有整数、浮点小数的并行流水线。Pen
tium的双重整数流水线也不是独自的创新。在Sun Microsystems的
SuperSparc和Motorola的88110都可看到这一特点。Penti
um的重要意义在于它是80x86的最先进的设计。不管怎么说,它是目前计算机领域
中最为重要的计算机结构。
性能王 英特尔Conroe