虽然Dothan和Banias相比在整数除法方面已经有了一定的性能改进,但是Yonah把这种改进再往前推进了一步。例如32位整数相除的时候,如果除数为17~24位,而被除数为1~16位时候,Dothan的延迟是12个周期,而Yonah的延迟只有4个周期;当在被除数为为17到24位的时候,Dothan的延迟是20个周期,而Yonah的延迟只有12个周期。
Yonah微架构的死穴?
任何微架构的设计都需要根据制造工艺、兼容性、复杂性等因素做出性能上的妥协,Yonah微架构和当前英特尔自己的Presler、AMD的Toledo(E6)相比存在哪些先
天性的不足呢?
4-1-1格局的x86指令解码能力
Yonah集成了许多P6家族的特点,也包括其中的弱点。其中的一些弱点在Yonah得到了改善,例如SSE指令由于需要解成两个微操作,之前的Pentium M(自从Pentium III引入SSE指令以来都)只能使用唯一的一个复杂指令解码器作解码。而现在由于Yonah能够对SSE指令作微操作融合,三个解码器都能把SSE指令解码成对应Yonah执行内核的微操作指令,理论上Yonah的解码带宽达到了以前Pentium III/Pentium
M的三倍,SSE指令的解码能力从每个周期一条指令达到每个周期三条指令。
在AMD的K8微体系结构中集成了内存控制器和HyperTransport总线
在AMD K8微架构里,也是可以看作有三个x86指令解码器,但是这三个解码器能力是对等,都能完成中等复杂度的x86指令转换操作,理论上最高可以达到相当于2-2-2
的指令解码能力。
所谓中等复杂度,就是指可转换成包含两个定长微操作的宏操作(Macro-Op),简称MOP,而对于微操作,AMD则称之为ROP,即RISC-Op的意思,含义和Intel说的micro-op(μOp)都是一样的东西(当然,不同的架构具体的微操作实际上是截然不
同的)。
AMD这样的设计既减少了对编译器的依赖,也能提高Packed SSE指令的效率。K8的解码器每个周期能够把三个宏操作发送给指令控制单元(ICU,也就是Intel所说的ROB),再由ICU把这些宏操作转换成ROP(RISC-ops),发送给K8的乱序执行单元,K8的乱序执行单元每个周期最高能执行9个ROP(乱序,不包括load/store的话,有5个算术ROP)。相比之下,P6、PM、Core Duo T2000/T1000就只能做到5个μOp(乱序,不计算load/store的话,只有两个算术或者逻辑μOp)。
64位浮点及SIMD指令执行能力较低
不论是Pentium M(Banias、Dothan)还是Core Duo T2000/Core Solo T1000,
它们那继承自Pentium Pro的执行单元“骨架”都存在在现在看来一个非常明显的弱点:那个用于80位x87浮点指令和64位SSE指令的浮点单元,在执行4x32bit SSE指令和2X64bit SSE2指令的时候,需要把这些128-bit指令拆开成两个64位的操作
然后连续执行获得结果。
如果所有的这些64位操作都能够以全速执行的话,这种拆开执行的方式在速度还是可以让人接受的,然而这样的想法对它们的浮点乘法单元来说却是无法达成的事情。 Pentium III、Pentium M、Core Duo T2000/T1000的浮点乘法单元能够单周期完成一个32位标量浮点SSE乘法操作(即延迟时间为1个周期),在执行4X32位向量浮点SSE乘法操作的时候能在比较合理的两个周期完成,但是对于64位SSE2乘
法或者80位x87乘法指令就都需要两个周期而不是1个周期。
因此在某些情况下,同样是总共128位长的指令,在Pentium III、Pentium M、Core Duo T2000/Core Solo T1000上,2x64bit的双精度指令执行时间就是要比4x32bit
的单精度指令执行时间就是要多50%以上。
AMD K8的指令控制单元(ICU,包含ROB、整数调度器、浮点调度器)能够最高每个周期分发出9个微操作,其中6个流向整数执行流水线,3个流向浮点执行流水线。 K8的整数执行流水线有三个整数执行单元以及三个地址计算单元,对于大多数的简单整数微操作,K8每个周期能完成三个,但是乘法和除法计算则是例外,这是因为K8的乘法和除法操作都需要在整数执行单元0->共享乘法单元->整数执行单元1上辗转
地执行。尽管如此,K8的执行单元数量要比Yonah多一些,略胜一筹。
缺乏EM64T支持,运行大型程序可能吃力
Yonah的另一个问题就是缺乏对EM64T的支持,作为笔记本处理器,4GB的平铺定址能力限制暂时还不是什么大问题,但是随着Windows Vista的推出,内存容量的饥渴问题将会显露出来,届时Yonah将可能成为昨日黄花被新的AMD64/EM64T处理
器替换。
比较遗憾的是,英特尔其实一直都没有公布Pentium M和Core Duo T2000/Core Solo T1000的体系架构细节,使得我们无法对其架构做更深入的了解,但是从种种迹象来看,Yonah以及之前的Pentium M在微架构上的确和Pentium III非常非常类
似。
代号Conroe——次世代微架构概述
Conroe是英特尔针对桌面应用的下一代微架构代号,和它同属一个系列的还有针对笔记本电脑的Meorm以及针对工作站/服务器的Woodcrest,有时候它们又被统称为Core微架构,不过我认为这篇文章主要是给桌面用户的读者阅读而且称呼作Core容
易和英特尔的新品牌\混淆,所以还是觉得叫Conroe比较准确。
我们并不清楚一开始的Conroe设计目标是如何的,但是自从Tejas被取消后,我们可以看到英特尔已经放弃了不惜一切追求更高时钟频率极限,转向全力以赴推动双内核、多内核计划,让英特尔的庞大先进制程优势能够以另一种方式得到释放。不管之前的
Conroe计划是如何的,此刻的Conroe设计必被确定为单管芯双核、追求高性能/耗
电比率为导向的产品计划。
正如我们之前所介绍的那样,Conroe并非英特尔的第一枚单管芯双内核处理器,Yonah才是,但是从微体系架构来看,Conroe却拥有不少的第一,例如:英特尔第一个4路IA32微体系结构、英特尔第一个引入Macro-Fusion技术的微体系结构、英特
尔第一个具备单周期执行两个128bit浮点微操作的IA32微体系架构等等。 对于Conroe的出身,比较多的倾向于源自Banias微体系,这样想法主要是来自于从微架构的角度看,Conroe更多的像是Banias的横扩版,例如解码器、执行单元的数
据元宽度、执行单元数量、各类预拾取等。
上图为英特尔三款65纳米处理器的管芯比较图,已经尽可能地根据L2 cache的尺寸做出按比例的缩放(Conroe、Yonah、CedarMill的管芯尺寸分别为140mm^2左右、84mm^2左右和81mm^2)。从图中大家可以看到,Conroe的尺寸虽然达到了Yonah的1.6倍左右,但是和由两枚CedarMill组成的Pesler(2*81mm^2=162mm^2)双核处理器相比还是会小一些。
其中,Conroe的单个内核尺寸(不包括总线控制、L2 cache)相当于1MB L2 cache的2.67倍,而Yonah和CedarMill的内核(单个,不包括总线控制、L2 cache)则分别是1MB L2 cache的1.48倍和4.34倍。换句话说,Conroe的单个内核尺寸达到了Yonah单个内核的1.8倍、CedarMill的62%。
由于晶体管的增多,在同样的65纳米工艺制程下,同频下的Conroe发热应该比Yonah更高,英特尔提供的Conroe E6000系列TDP(典型设计功耗)为65瓦特,而Yonah E系列的TDP为50瓦特(Yonah另有低耗电版即L系列的TDP为24瓦特,超低电压版即U系列的TDP为14瓦特)。 在英特尔的路线图中,针对桌面的Conroe就比针对笔记本市场的Merom提前半年推出。这意味着英特尔需要更多的时间来作细调才能让同样微架构的Merom在笔记本电脑上维持Yonah相当的性能/耗电水平,例如挑选同频下工作电压可以更低的芯片、搭配工艺更加先进耗电更低的芯片组来抵消处理器耗电的增加等等。
对于经历了之前Pentium 4动辄100瓦特高发热时代的桌面电脑来说,65瓦特的TDP实在是算不了什么,绝大多数的LGA775散热器都能轻松应付这样的发热,而且还留有一定的盈余应付更高性能产品的需求(例如3.33GHz的E8000,TDP为95瓦特,同样是Conroe微结构)。
Conroe微体系架构深入分析——前端(Front End)
Conroe微架构体系图
Conroe微体系结构的前端(Front End)
处理器的微结构主要可以分成前端和后端,所谓的前端主要是由指令拾
取(Instruction Fetch)、指令解码(Instruction Decode)、分支预测(branch