英特尔新一代处理器Core 2 Duo架构分析

更新时间:2024-05-30 06:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

英特尔新一代处理器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等等)都早就把\当成其自己产品的生招牌使用(例如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风格微操作,另

外两个解码器则是各可以把一条\简单\指令转换成一条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瓦特。

虽然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

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指令合并成一条微操作。

Conroe具备4个x86指令解码器,其中三个能够把简单的x86指令转换成三个微操作(其中一条源自宏融合),还有一个解码器能够把复杂的x86指令转换成两条到4条的微操作。

因此在最理想的情况下,解码器能够向下游发送(4+1+1+1)共计7条或者更多的微操作。为什么这里明明是4+1+1+1=7,而要说7条以上呢?

很简单,在Pentium M(Banias)时代,英特尔就引入了micro-fusion(微融合)技术,虽然都是“融合”,但是微融合和宏融合差别很大。微融合技术是指一个简单解码器能够把一条x86指令转换成两条符合特定条件的微操作。这两条符合特定条件的微操作会被合并成一条发送到ROB,在ROB中占一条微操作的存放位置(一个entry)。 当这条合并的微操作发送到保留站的时候,就会被重新拆开,以并行的方式发送到不同的微操作发射端口或者以连续的方式发送到同一个微操作发射端口。符合微融合的指令最常见的就是load/store类的指令。由于在这个过程中解码器实际发出来的微操作可以做到7条以上,因此我们也就可以说解码器可以给下游的指令ROB(I-ROB)发送7条以上的微操作了。

宏融合技术和微融合技术都能提高解码电路的有效带宽和性能并节省存储晶体管,使处理器的性能/耗电比值提升。

Conroe前端的另一重要单元——分支预测单元沿用了Yonah的技术,而Yonah、Dothan、Banias的分支预测技术其实都是基于Pentium 4的,当初Pentium 4发布的时候,英特尔就曾经宣称Pentium 4的分支预测器命中率优于所有其它已经公开发布的分支预测器。

Conroe的乱序执行单元——更多的指令端口及增强的向量处理能力

x86指令解码后以长度固定的微操作的形式存放到指令ReOrder Buffer(I-ROB),P6的I-ROB能够存放40条微操作,Pentium 4的I-ROB能够存放126条微操作,这些微操作都是经过了重新排序以及寄存器重命名的(减少x86寄存器约束造成的等

待时间,提高性能)。

到了Pentium M(Banias、Dothan)和Core Duo/Solo时代,英特尔没有透露其I-ROB的细节,不过根据渐增的指令(nop)测试来看,Banias、Dothan、Yoanh

的I-ROB容量大约是48条微操作(也有说法认为是72条)。

i-ROB中能放的微操作数量,对于OoO(乱序)执行微架构来说,意味着可以在最接近的距离内有多少个指令随时待命供选择执行,例如指令A执行的时候,指令B如果

和指令B不相关的话,那么这两条指令就可以同时执行。

而在Conroe上,它的I-ROB可以存放96条微操作,就是说最高同时提供给乱序执行单元可供选择的微操作指令达到了96条,当然,除了专门编写的测试程序外,I-ROB

内全是完全不相关指令的情况其实并不多见。

不过I-ROB只是代表在同一时间点内有多少条指令完成了寄存器重命名(re-name)和重新排序(re-order),在Conroe的整个流水线上(包括指令拾取、解码),实际上最多可以有56条指令(每一级流水线上有4条指令在运作,因此是14级流水线工

位*4条指令)处于运作(in-flight)状态。

I-ROB的entries/峰值运作指令的比率为1.7,在P4上这个比率是1.4倍。比率越高,说明流水线上可供乱序执行单元执行的指令资源越充沛,乱序执行单元“碰上”能并行执

行的指令也就更多了。 Yonah乱序执行单元 Pentium 4乱序执行单元 Conroe乱序执行单元 Conroe每个周期能够向乱序执行单元发射出6条微操作(三条算术/逻辑,三条内存

操作),相比之下Yonah是5条(两条算术/逻辑,三条内存操作)。

Pentium 4是4到6条,因为Pentium 4拥有两个双倍CPU主频的简单整数运算逻辑单元,它们有专门的倍速传输指令发射端口,在最理想的情况下能够做到4条加法操作+两条内存操作。但是这里的简单整数运算逻辑单元并不能执行所有的整数操作而且还要肩负计算Store地址,在P4只有一个复杂整数算术逻辑单元能完成所有的整数操

作。

Conroe的整数执行单元

Conroe拥有三个整数算术/逻辑单元,在最理想的情况下每一个都能一个周期完成一条简单的64位整数(例如整数加法)指令,但是只有一个单元能执行整数乘法运算。

此外,这三个单元中的一个具备JEU(跳转执行单元),用于执行分支操作,如果Conroe的前端有宏操作融合的指令转换出来的话,那么那条被转换出来的宏融合微操作也是在

这个JEU执行。 Conroe的浮点执行单元

Conroe拥有两个浮点算术单元,均能执行向量和标量浮点算术操作,一个能执行加法

操作以及还有一些别的简单操作,数据格式如下所示:

?

标量(Scalar):单精度(SSE)、双精度(SSE2)、加长双精度(x87)

?

向量(Vector):4D单精度(SSE)、2D双精度(SSE2)

另一浮点单元能执行浮点乘法(以及除法)操作,数据格式也如上所示,包括32bit单

精度标量和2*64bit双精度标量。

为了确保Conroe能达到单周期128bit向量执行能力,Conroe的解码器能够把IA指令转换成128bit的微操作,而不是像Yonah那样转换成两条64bit的微操作;此外,Conroe SIMD执行单元的数据输入路径和L1 D-cache->保留站的写回路径也都拓展

为128位(Yonah是64位)。

Conroe指令延迟周期与指令吞吐间隔周期列表

上面这个列表是Conroe和Yonah的指令延迟周期数和指令发射间隔周期(吞吐量),这个结果是来自我们(PCINLIFE)运行程序侦测出来的,因此并不代表官方的数字(官

方尚未发布这方面的细节)。

从这个列表来看的话,Conroe的x86指令性能普遍要比Yonah提升,例如ADD r32, r32的 吞吐能力比Yonah提升了50%,Conroe可以每个周期执行3条ADD r32, r32指令,而Yonah只能做到两条;IMUL r32(立即数乘法指令)的 吞吐能力一样,但是延迟时间降低33%。

特别值的关注的是,SSE的ADDPS(4D 32bit共128bit,单精度加法)、MULPS(4D 32bit共128bit,单精度乘法)和SSE2的ADDPD(2D 64bit共128bit,双精度加法)、MULPD(2D 64bit共128bit,双精度乘法),这四条重要SSE算术指令的吞吐周期都降低到1个周期,真正做到了英特尔宣称的每个周期执行一条128位向量加法指令和一条128位向量乘法指令的能力,和Yonah相比Conroe双精度乘法的吞吐能力更加是提升了三倍,毫无疑问,Conroe的向量单元已经全面引入了流水线化的设计。

Conroe的Memory Disambiguation——内存投机资料装载消歧机制

英特尔在Pentium Pro就引入了乱序内存操作,其关键的部件就是MOB(Memory re-Order Buffer,内存重排序缓存),概念类似于I-ROB,可以让多个load和store操作同时处于运作中。不过要实现OoO内存操作,就需要消除出现内存地址重叠造成

的冲突问题,即所谓的Memory Disambiguation。

上图的上半和下半分别代表了没有/有采用内存投机装载消歧技术

不具备内存投机装载消歧的CPU需确保指令1执行后才作新装载动作,否则必须等待 内存投机装载消歧技术的Conore可以在指令1还在执行的时候装载地址C的数据

具备内存投机装载消歧技术可以有效提升内存装载动作的效率 如果遇到前一条指令会改写地址C,那么指令二就会再执行一次装载动作

例如指令a=b+c和指令d=b+e,b在这里被使用两次,理论上它只需要被装载到寄存器一次,然后就可以使用两次了。但是实际上不能这样做,因为加入a指向的内存地址和b是一样的话,就会出现地址重叠产生很大的问题,故此编译器还是会生成两次b

的load操作。

在P6上的OoO内存操作规则是相当保守的,它发现如果有一条store指令包含了未

定的内存地址,那么所有的load操作都会被延后,不能作提前执行。 不过按照RWT David Kanter所提供的资料,即使是同时具有512条运作指令的EV6+处理器,其中97%的load、store指令地址都不会出现重叠(指针指向同一个

内存地址),而对于只有96个同时运作指令的Conroe来说,load、store地址重叠

的现象应该更少,因此会假设所有的load和store不存在重叠问题: Conroe虽然看到b需要两次load操作,但是它先load b一次,然后在引退(retirement)之前如果发现b和a的地址撞车的时候才会再load一次b。整个预测、检查操作对程序和操作系统来说都是透明的。当然这是需要增加晶体管来实现的。 采用了这样激进的规则后,所有的load操作都能够和算术、Store指令一起执行(Conroe有三个算术单元和一个load单元以及两个store单元),比以往有时候必须等待算术指令、Store指令执行完后才跑load显然要快得多,内存读取得延迟相对更短了,有些类似于对内存读操作作分支预测。

由于是猜测性的,所以还是会出现猜错的机会,不过英特尔并没有透露猜错时候的性能损失,更多的是强调命中的机会非常高。

Conroe的高速缓存、预拾取、外部总线、主内存系统

Conore的两个内核各拥有32KB两路相连L1指令高速缓存、32KB两路相连L1数据高速缓存,其中两个内核的L1数据缓存具备一致性总线来实现cache一致性,而两个内核都共享一个16路相连CPU全速运作的4MB L2 cache。 L1数据cache-L2 cache的连接带宽提升为256位(之前的Yonah、Dothan为128位),而Coppermine PIII时代所说的256bit L2 cache总线其实只是指DIB界面和L2 cache的连接带宽为256位。在Pentium 4上,L1 D-cache和L2 cache的位宽为256位。

Conroe的L1/L2 cache都是write back方式,L1-D和L2 cache的cache line长度为64个字节,即每次拾取(fetch)动作都会抓64个字节。相比之下,Pentium 4的L1 cache是write back、64字节;L2 cache是write through 128字节。 cache line越长意味着每次拾取能抓更多的数据,但是这是双刃剑,因为cache line越长也可能意味着被覆盖替换的资料越多造成拾取的动作可能更多。

英特尔宣称Conroe L1D和L1D之间有直通的连接,但是其作用并没有透露。

Conroe的每个内核都有三个独立的预取器(Pre-fetcher),它们分别位于指令拾取、load单元、store单元,此外在共享的L2 cache上也有两个预取器。预取器的作用是在处理器发出请求之前,提前把数据装进更高一级的内存里,你可以在我们的L2 cache延迟测试中看到一些效果。

Conroe的系统总线为AGTL+,和Pentium 4一样,但是频率就提升到1066MHz和1333MHz(Conroe的eXtreme版),作为64位处理器,Conroe可能拥有和Pentium D一样的40位物理内存定制能力,但是未来应该会作进一步的扩充(AMD已经有着方面的计划)。

由于没有集成内存控制器,因此Conroe的内存系统交给了芯片组,我们现在已经看到了来自英特尔、NVIDIA、ATI等厂商推出的全新或者修订的北桥来支持JEDEC协会制定的DDR2-800内存条规格。

Conroe的电力控制——控制粒度更细化

Conroe在Yonah的基础上引入了粒度更细的电力控制观念,即使在高性能运转模式底下,还是有很多电路会被关掉(shut off),例如指令拾取/预解码单元、微代码ROM

(把复杂x86指令拆解成多条微操作的单元)、三个浮点单元都能在高速运转但是并

不需要使用的情况下关闭以节省电力但同时又不会影响性能。

图中左面没有智能电力管理

右面具备智能电力管理,可以看到圈圈中的单元被关掉以节省电力

此外,Conroe的许多总线都被设计成能一次传输128位数据(以适合15个字节长的x86指令),例如ALU的写回总线。但是在某些情况下,这些总线的利用率只有一半,另一半会被关闭掉以节省电力,类似的概念在不少笔记本电脑GPU上也有使用,例如PCIE 16X的总线在低负荷的情况下会变成PCIE 1X模式运作。 我们预计Conore以及它的笔记本版本Merom都属于单处理器,因此它们外部总线的多处理支持部分会被关闭掉,而在服务器/工作站版本的WoodCrest上这部分的电路就会释放出来以支持双处理器。。

Conroe引入了数码化热传感器(DTS),处理器内的所有“热点”都分布有DTS并且有专门的电路对这些DTS作扫描、衡量任何时间点管芯的最高温度。

Conroe上市时程、产品规格、价格、制造成本

这是英特尔提供给厂商的2006年第15周路线图中的双内核处理器报价,这里比较有趣的,Pentium D 9xx系列出现了大幅度的削价,而新的Conore报价出现在了2006年三季度,换句话说还有两三个月我们就能看到Conroe的问世。

从表格中可以看到,E6600、E6400、E6300的定价分别和同期的Pentium D 960 3.6GHz、Pentium D 950 3.4GHz、Pentium D 940 3.2GHz一样,而此时英特尔

所谓的性能(1)价格区间就是由Conroe E6700担当,定价和Pentium D 960上市的价格一样,比3月份的Pentium D 950便宜100美元。

根据英特尔的资料,Conore的管芯面积是143平方毫米,如果使用300mm的晶圆来生产,在预留两毫米管芯边界的情况下,大约可以切出425枚管芯。

在良率为51%(假设为墨菲产量模型并且瑕疵密度为0.50个瑕疵/平方毫米)的情况下,英特尔可以在每个wafer上拿到216枚完好的Conroe管芯,如果每片wafer的成本在7000美元(这个成本其实是偏高了)的话,那么Conroe的制造成本可以做到33美元以下,但是这只是管芯制造成本,还没有考虑到封装测试、行销环节产生的成本以及英特尔持续每年数十亿美元的软硬件研发和晶元厂建造经费,毕竟英特尔就是靠做芯片赚钱的,卖芯片是最主要的途径,维持一个较高的毛利水平是必须的。

本文来源:https://www.bwwdw.com/article/ggc6.html

Top