英特尔新一代处理器Core 2 Duo架构分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
英特尔新一代处理器Core 2 Duo架构分析
“我们大致回顾了从Pentium到Pentium4架构的演进,细数了Conroe体系结构的特点并以大量的测试结果和深入地分析为大家更透彻地了解Conroe的优缺点。
”
英特尔Core 2微体系架构的前世今生——从586到NetBurst
在1993年3月22日,英特尔引入了该公司的第5代x86处理器,由于x86兼容处理器大量冒起,许多兼容处理器厂商(NEC、西门子、AMD、富士通、Harris、德州仪器、IBM、Cyrix、UMC、NexGen、IDT、SGS-Thomson、C&T等等)都早就把"xxx86"当成其自己产品的生招牌使用(例如1995年就出现了NexGen公司的Nx586),而单纯的数字代号是不能作为商标受到保护的。
为了巩固品牌的知名度,英特尔希望给这个原本代号586(也被称作P5)的处理器注册一个商标,最后选择了内含数字“5”玄机的商标——“Pentium”,中文名称为奔腾。
Pentium(P5)微架构体系图
Pentium处理器是英特尔第一枚桌面超标量处理器,能够最高同时执行两条指令,在
执行条件跳转指令的时候,U-Pipe的预测失误带来的性能损失是4个周期,V-Pipe
的预测失误带来的性能损失是5个周期,其余的控制转移指令预测失误性能损失是4
个周期。
Pentium拥有8KB数据cache和8KB指令cache,初期的Pentium 60/66使用600纳米的BiCMOS工艺,采用273 pin的PGA封装,晶体管数量是3.1百万(大约是1971年4004处理器晶体管数量(2250只)的一千三百倍),L2 cache集成于主板上(常见的预安装容量为256KB)。
Pentium是一枚32位处理器,拥有64
位的外部总线,物理内存定址空间为32位(据说工程样品出现过36位物理定址,但是正式产品降回32位),逻辑内存能力为64TB。
Pentium Pro家族微架构
1995年11月1日,英特尔推出了当时看来可以用“硕大”来形容的Pentium Pro处理器(中文名称是高能奔腾),这款代号P6的产品和Pentium相比革新相当大,例如整数流水线采用了10级工位的超级流水线(预测失误的性能损失为10~20个周期);能作多重分支预测和猜测执行;具备三个能够把x86指令转换成118位定长的RISC风格微操作的译码器(其中一个能把复杂x86指令转换成4个RISC风格微操
作,另外两个解码器则是各可以把一条"简单"x86指令转换成一条RISC风格微操作,即所谓的“4+1+1”的3路解码格局)、实现了乱序执行等。
Coppermine微架构(180纳米Pentium III,属于Pentium Pro家族第3代的改进型)
把x86转换成RISC风格的微操作,有利于简化处理器执行流水线的设计,而且在提高性能的同时能确保兼容性。
由于x86指令转换成若干个RISC风格指令,因此Pentium Pro的实际指令率要低于理论值(只有部分寄存器-寄存器的ALU/Mov x86指令以及内存-寄存器Mov x86 Load指令能转换成一条微操作,其他的x86指令大都需要转换成两条以上的微操作来拼凑)。
此外,由于指令队列的问题,Pentium Pro的16bit指令执行能力其实要低于Pentium,不过它的32位指令执行能力的确给当时的人们留下了深刻的印象。
Pentium Pro的内存定址能力提高到了64GB,而虚拟内存空间能力就和Pentium 一样都是64GB。
Pentium Pro把L2 cache和CPU做到同一个封装上,但是依然是两枚芯片,只是两枚芯片做到了同一个封装的两个腔体内。
Pentium Pro最初采用600纳米的BiCMOS工艺制造,CPU管芯5.5百万晶体管,管芯面积高达306平方毫米(这里未包含同一封装另一腔体内的L2 cache)。
Pentium Pro 256KB L2 cache的电压是3.1伏特,耗电为23瓦特。
到了Pentium III 180nm版(Coppermine)的时候,英特尔终于把L2 cache集成到了和CPU同一枚管芯(die)内。
也是在Pentium III,英特尔引入了71条SSE扩展指令集,显著加强了x86处理器在流媒体处理方面的能力。
AMD虽然也尝试在K6上引入3D Now!指令集,但是3D Now!缺乏SSE所具备的IEEE-754兼容性、视频加速能力以及内存流式传输能力,因此虽然3D Now!一开
始的时候威势不少并且有大量媒体借机炒作,但事实证明3D Now!的确有不少地方不如SSE。
NetBurst体系架构
然而在Pentium III的时候英特尔却遭遇到了有史以来的第一次挫折,突破1GHz的头衔被AMD的Athlon处理器提前数个小时夺去了,别小看这几个小时,对于奉行摩尔定律的英特尔来说这样的局面是无论如何也抬不起头的。
英特尔的上层做出了一个惊人的举措,决定把P6架构的发展暂时冻结,转向激进的甚深流水线架构——P68,也就是Pentium 4,英特尔为这个流水线工位多达20级的架构起了一个当时非常时髦的名字——NetBurst。
Willamette(第一代Pentium 4,180纳米工艺)微架构模块图
采用甚深流水线的目的是为了在同样的工艺下获得更快的时钟频率,传统上,频率提升对开发人员这意味着程序不需要特别的更改就能获得性能提升。
然而对于Pentium 4来说,这样的法则似乎不再是百试百灵的了。
流水线越长,对于采用乱序+猜测执行的处理器来说,预测失败的成本就越高。
Pentium III的流水线在预测失败的时候会损失10个周期,而在第一代的Willamette Pentium 4 上就达到了20个周期(极端的情况下例如流水线塞满了长延迟、低吞吐量的微操作时,就会出现上100个周期的损失)。
2004年推出的Prescott Pentium 4采用31级流水线,因为预测失败造成的性能损失也就更大了。
此外,流水线大幅度增长同时也带来了耗电、管芯成本显著提高,特别是耗电问题,
在Prescott Pentium 4的时候更加突出,原本计划突破4GHz以上的Prescott最后只是止步于3.8GHz。
不过令英特尔蒙羞的是,英特尔当初决定不把IA-64架构快速迁移到桌面平台上,导致64 bit指令集的主导权落到了AMD手上,这个事件所发酵出来的效果比当初1GHz桂冠被AMD首先夺去更具戏剧性。
但是不管怎样,Pentium 4都是英特尔非常有意义的尝试,在它身上我们看到了Trace Cache、超线程、Quad Pump总线、SSE2/SSE3扩展指令集、LGA封装等诸多新技术的首次实际采用。
英特尔Core新体系架构问世背景
2002年4月份推出的第二代Pentium 4(130纳米时代,Northwood微架构)取得了相当大的成功,在耗电、发热、性能等指标上都已经比第一代的Pentium 4好得多。
在笔记本市场方面,Pentium 4的耗电、发热问题依然难以克服,此时的大部分笔记本电脑还是采用130纳米的Tualatin微架构Mobile Pentium III-M而非Mobile Pentium 4-M。
2003年3月12日英特尔推出了代号Banias的Pentium-M处理器,这款出自英特尔以色列研究室的微架构被认为在很大程度上和Pentium III相似。
处理器前端相对Pentium III来说,Pentium M改进很大。
例如分支预测单元上就使用了Pentium 4的分支预测技术并作了较大的增强(这部分增强后来也被回用到Prescott内核的Pentium 4里),引入了相当复杂、高效的节电电路,采用微操作融合技术,具备更大的Cache,流水线工位比Pentium 4短但是比Pentium III略长(没有确切的官方数字,有传闻是12级工位,但是P6微架构的流水线其实也可以说是12级),增加了专门的堆栈引擎,前端总线和Pentium 4一样都是quad pump方式(100MHz时钟,等效400MT/s)。
Banias计划刚刚出现的时候其实并没有引起广泛的注意,但是当Pentium M真的摆到大家面前的时候,不少人都开始疑惑,一个性能如此出众的微结构为什么英特尔不把它用(也许应该说重返)到桌面平台上呢?
此时英特尔其实还是希望NetBurst微架构的Pentium 4继续往更高的时钟频率推,Prescott微架构最初计划是能达到4GHz,英特尔为此还提前给大家准备了诸如BTX 等新的机箱/散热方案。
此外,这个时候AMD的AMD64指令集和Intel的IA64指令集都还在争夺微软的64位操作系统支持,英特尔此时如果有什么大的动作都可能出现不少的变数。
Prescott微架构的表现的确差强人意,31级流水线工位带来了更大的预测失误性能损耗,而4GHz的频率屏障却由于高发热、耗电问题被迫宣布取消了。
按照英特尔的资料,Prescott Pentium 4 3.4GHz(model 550)和Prescott Pentium 4
3.6GHz(model 560)的TDP(热量设计功率)为115瓦特,而竞争对手AMD
Athlon 64同级别的产品TDP也不过是89瓦特。
在英特尔的LGA775插座连接中,775个连接点中的523个触点都被用作于电力传输,给处理器提供119安培的电流,即便是如此强大的电力供应方案,英特尔也表示如果不对Prescott重新设计的话,4GHz的目标依然是无法达成的。
经过这些改动的话英特尔也许有能力推出4GHz的处理器,至少Alienware就推出过水冷的4GHz
整机。
此外也许还有一个生产能力富裕上的原因,那就是英特尔当时至少拥有三家300毫米直径的晶圆铸造厂,2005年年底的时候增加到五家,2007年将至少有七家。
如此庞大的生产力如果都切换到Pentium M上,一片300毫米直径的晶圆用来生产90纳米的第二代Pentium M的话可以生产出最多741枚管芯,相对来说用来生产Prescott 1MB版Pentium 4的话则是568枚,2MB Prescott Pentium 4是438枚,而生产130纳米的Pentium 4 XE(Gallatin微架构,实际上就是Northwood 2MB版iL3版)是288枚。
这就是说,一旦直接切换到90纳米的Pentium M(即Dothan微架构),英特尔所多家晶元厂生产出来的处理器数量将很可能达到市场消化能力的两倍甚至更多,如果只开一半的工厂,那也将是巨大的生产资源浪费。
如何才能很好地利用这些生产资源呢,英特尔在左思右想中。
新方向——全面切换至双核、多核方案
凭借庞大生产力制造出大面积的处理器并以此获得时脉、性能、竞争上的优势,这是英特尔推出Pentium 4的背景和着力点,但是这样的优势随着耗电壁垒的出现而即将嘎然而止,英特尔当初2007年推出10GHz Pentium 4的设想已经不再现实。
在2003年秋季IDF(英特尔开发者论坛)上,时任英特尔首席营运总裁(COO)的Paul Otellini首次向外界表示正计划在其产品线中引入双内核(dual core)产品。
2004年4月英特尔向其合作伙伴以及媒体以正式文档的方式通知,取消Prescott接替者Tejas微架构计划,转而全力推动双核以及多内核产品,这个重大的变动英特尔
称之为“Right-Hand Turn”。
NetBurst又或者Pentium 4微架构的不少部分晶体管都被用于拆分流水线以提高时钟频率,而英特尔现在的Right Hnad Turn方向就希望把这些晶体管用于更多的虚拟
加速、安全加速以及增加更多内核上。
更多的内核能够让英特尔的庞大生产能力得以充分发挥,同时也能显著改善多任务的
性能和拥有功耗上的优势。
为了配合新的产品战略,英特尔也放弃了单纯使用时脉作为产品标示的方式,转而开始采用有一定特殊含义的数字来表示产品型号,例如前面我们提到的3.4GHz
Pentium 4 560。
Smithfield双内核Pentium D实际上
是由两枚Presoctt Pentium 4粘在一
起构成的
在2005年,我们看到了Smithfield登场,这款被用来替换掉Tejas的处理器实际上是两枚Presoctt粘在一同一枚管芯达成的双核方案。
Smithfield的晶体管数量是230百万,管芯面积是213平方毫米,外部总线为800MT/s,每枚内核都有一个1MB大小的L2 cache,CPU频率有
2.8GHz、
3.0GHz、3.2GHz等。
Smithfield的下一代——Presler则更加直截了当,直接采用两枚独立的CedarMill(Prescott 1MB的65纳米版)封装在同一个封装基片上就达成了,由此可以看出,虽然英特尔已经决意全力转向多内核处理器,但是对于末代的NetBurst 处理器已经不再想下多大的力气来专门设计真正的单管芯双核产品,它的目标是Conroe。
65纳米Yonah双内核Core Duo T2000微架构
在Conroe推出之前,英特尔已经试水双内核产品了,除了前面提到的90纳米smithfied内核的Pentium D 8XX、65纳米Presler内核的Pentium D 9XX以及它们衍生的Pentium XE外,还有针对笔记本电脑市场和低能耗服务器市场的65纳米Yonah内核的Core Duo T2000系列。
65纳米Yonah微架构Core Duo T2x00图
Yonah基本上就是Dothan的两个处理内核挂在同一个DIB上。
所谓的DIB,是从Pentium Pro时代引入的,目的是让CPU能直接访问L2 Cache而无须受制于内存控制器,既能确保更高的L2 cache带宽,也能让系统外部总线运作于一个比较合理
的较低频率上。
Yonah采用共享L2 cache和单一外部总线控制器的优势主要有两点,首先是确保了L2 cache的数据一致性,某一个内核更新L2 cache内的数据后,另一个内核无需什么等待就马上可以使用这部分的数据,尽可能快地维持数据的一致性,对双内核、多内核处理器来说是极为重要的性能要素,而且共享L2 cache的方式还可以让L2 cache的可用空间最大化;其次,采用单一外部总线控制器能够有利于降低成本,简
化总线控制设计。
Yonah的CPU内核源自90纳米的Dothan Pentium-M,而Dothan源自130纳米的Banias,Banias源自Tualatin内核的Pentium III,Tualatin则是180纳米Coppermine Pentium III的cache容量、时钟频率增强版,执行单元的“骨架”更可
谓是一脉相承。
这几个微架构的保留站(用来存放尚未执行的微操作,可以看作是ROB的子集)和执行单元之间都总共有5个微操作端口(μOp port),也就是说执行单元最多可以同时执行5个微操作(其中三个是用来分发load/store操作)。
其中Port0/1对应的是算术/逻辑单元(ALU),而Port2/3/4对应的是lord/store 单元,Pentium Pro、Pentium II、Pentium III、Pentium M、Core DUO T2000单个内核同时能跑两条算术指令和三条Load/store指令。
Pentium III乱序执行单元的单元图
代号P6
Klamath
Deschutes
Katmai
Coppermine
Tualatin
Banias/Dothan Yonah
Port #Pentium Pro Pentium II Pentium III Pentium M
Core Duo
T2000
Core Solo
T1000
整数ALU
LEA指令
Shift指令
iMUL整数乘法
指令x87浮点
ALU
FADD浮点加法
指令
FMUL浮点乘法
指令
FDIV浮点除法
指令
整数ALU
LEA指令
Shift指令
iMUL整数乘法指
令x87浮点ALU
FADD浮点加法指
令
FMUL浮点乘法指
令
FDIV浮点除法指
令
MMX SIMD int
ADD
MMX SIMD int
整数ALU
LEA指令
Shift指令
iMUL整数乘法指令
x87浮点ALU
FADD浮点加法指
令
FMUL浮点乘法指
令
FDIV浮点除法指令
MMX int ADD
MMX int MUL
SSE SIMD FP
MUL
整数ALU
LEA指令
Shift指令
iMUL整数乘法指令
x87浮点ALU
FADD浮点加法指令
FMUL浮点乘法指令
FDIV浮点除法指令
MMX int ADD
MMX int MUL
SSE1/2 SIMD FP
MUL
SSE1/2 SIMD FP
MOV
整数ALU
LEA指令
Shift指令
iMUL整数乘法指
令x87浮点
ALU
FADD浮点加法
指令
FMUL浮点乘法
指令
FDIV浮点除法指
令
MMX int ADD
MMX int MUL
MUL SSE SIMD FP
MOV
SSE1/2 SIMD FP
DIV SSE1/2 SIMD FP
DIV
SSE1/2 SIMD
FP MUL
SSE1/2 SIMD
FP MOV
SSE1/2 SIMD
FP DIV
1整数ALU 整数ALU MMX
Shift单元
整数ALU MMX
Shift单元
SSE FP ADD/SUB
SSE SIMD FP
MOV
整数ALU MMX
Shift单元
SSE1/2 FP
ADD/SUB
SSE SIMD FP MOV
整数ALU MMX
Shift单元
SSE1/2 FP
ADD/SUB
SSE1/2 SIMD
FP MOV
2Load Load Load Load Load
3Store Address Store Address Store Address Store Address Store Address 4Store Data Store Data Store Data Store Data Store Data
备注
# LEA即Load Effective Address指令
# 上面列出的对应微操作指令只是其中的一部分,具体不同port对应的微操作指令请查阅Intel优化
指南附录
# Yonah引入了SSE3指令,不过Intel的优化指南尚未发表,因此我们还不是很清楚SSE3在
Yonah上的
基本上,P6(包含Pentium M/Yonah T2000)最多可以每个周期执行一条80位x87浮点指令或者两条64位MMX/SSE/SSE2指令又或者两条32位x86整数算术(最简单的类型,例如add/sub之类能转换成一个微操作的)指令,以及三条
load/store指令。
虽然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 容易和英特尔的新品牌"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 predict)组成,而后端则是保留站和执行单元或者说功能单元,前端和后端之间还有指令控制器用来把前端解码出来的操作分发指令给执行单元。
能不能省略掉解码的环节呢?理论上是可以的,但是现在的CPU厂商大都是在数年甚至数十年前的指令集架构上开发新的处理器,为了让CPU加入新技术既能跑得更快,又要确保兼容采用某个指令集体系的软件,解码这个环节是不可缺少的。
现在的处理器芯片里还集成了L1 cache、L2 cache,有些甚至集成了北桥(AMD K8)和网络控制器(例如IBM的Blue Gene和一些SoC处理器)。
针对不同的市场/产品导向设计出来的处理器微架构往往不一样,但是前端加后端的概念大家都是具备的,我们在这里先从前端开始讨论Conroe的微结构。
Conroe前端——宏融合、4路解码器、微融合
Conroe的“前端”Yonah的“前端”
Conroe具备四个x86解码器,包括三个简单x86指令解码器和一个复杂x86指令解码器。
简单x86指令解码器能够每个周期把一个x86指令转换成一条微操作指令,而复杂x86指令解码器能够每个周期完成两条到四条微操作指令,构成所谓的
4+1+1+1解码格局。
Conroe微架构具备4路解码、4路微操作发送以及7路乱序执行单元,成为4路超标量处理器。
在此之前的Pentium Pro家族、Pentium M家族、Core Duo
T2000、Core Solo T1000均为3路超标量处理器,而Pentium 4虽然在解码上有些特别但是也只能做到每两个周期发送6路微操作,实际上也都还是3路超标量处理器,Pentium则是英特尔第一款超标量处理器(两路超标量)。
需要注意的是,Conroe并非第一个4路超标量处理器,在此之前其他RISC厂商早就有4路或者更多路的超标量处理器;Conroe也并非英特尔的第一个大于3路的处理器,在此之前Itanium就是具备6路超标量处理器;Conroe也并非第一个大于三路的x86超标量处理器,AMD在K5的时候已经引入了4路超标量架构,但是这并不代表什么,多少路架构并不反映性能就是多少倍,K5的设计在很多方面都存在Overkill和不平衡的地方,实际性能和竞争力都不如同期英特尔的产品。
Conroe的解码电路具备一个全新引入的特性:Macro-Fusion(宏融合),这个宏融合的特别之处在于能够在预解码阶段(尚未转换成微操作)的时候,把两个符合某些特定配对条件(例如其中一条为cmp或者test指令,而另一条为分支指令jne)的x86指令合并成一条指令(这里可以合并成被称作cmpjne的新µ-ops,这条指令并不存在于现有的IA32e指令集中)。
解码时,这两条x86指令会以一条微操作的方式发送、存放在Re-Order Buffer(ROB,ROB主要作寄存器重命名、指令排序,降低x86指令集的寄存器数
量限制以提高性能)。
根据Conroe微架构的首席架构师Jack Doweck的估计,对于包含有大量跳转(Jump)操作的快速整数代码,在经过宏融合之后,µ-ops数量和x86指令的比率实际上可以低于1,即1条µ-ops可以相当于1条以上的x86指令。
Conroe的指令拾取单元每个周期能够向解码器发送5条x86指令,解码器每个周期能够对其中符合特定条件的两条x86指令合并成一条微操作。