英特尔酷睿微架构产品发布日期一天天地临近,我们犹如感受到了五月天那样扑面而来的热浪。凤凰涅磐,六年的蛰伏,量的积累终于带来了一次质的飞跃。基于英特尔新一代微架构的产品势必将掀起台式机、服务器和笔记本产品的革新。
发布在即 CONROE架构详介及产品体验(8)
通过英特尔酷睿微架构的英特尔宽区动态执行技术,多核处理器中的每个执行内核都更加宽阔。这样每个内核均可以同时获取、分配、执行和返回4条完整的指令。带有4个内核的单枚处理器就可以同时获取、分配、执行和返回16条指令。
动态执行包含多项技术:数据流分析、预测执行、乱序执行与超标量。
目前有越来越的处理器的设计方向开始从乱序执行 (OOOE,或者 OOO)转向顺序执行设计,这些设计普遍更多地使用超长指令集,这些设计更依赖于多线程以及对编码器和编辑器的性能。但是酷睿™ 微架构的设计仍旧是坚定的传统乱序执行设计思想的体现,可以说将OOOE设计思想的巅峰之作。总体说来,酷睿™ 微架构是比NetBurst 微架构或者 Yonah 微架构更宽、更多硬件资源以及更大规模的产品。几乎在酷睿™ 微架构流水线上所有的组成部分都被强化设计了:更多的指令解码逻辑单元;更大的乱序指令缓冲空间;更多的保留站入口;更多的指令调度端口;更多的执行硬件;更多的内存缓冲空间等等。简而言之,“尽可能增强所有对性能有益的配置”似乎成了英特尔以色列海法设计团队的研发Core的指导思想。
在前端,宏融合(acro-fusion)、指令融合(icro-ops fusion)以及强壮分支预测单元(BPU)一起保证执行核心有足够的代码供应量;在后端,大规模扩充的指令窗口确保在每周期供给执行单元足够的指令数量。此外英特尔还解决长期存在于以前设计中的SSE指令处理瓶颈,比起前辈们在SIMD指令处理方面有两到三倍的提高。
宏融合Macro-fusion
所谓宏融合即针对译码工作前的X86指令,可以在预解码阶段将相似类型的X86指令进行融合操作,然后将其送入单译码器中产生一条微指令操作。这项操作的对于X86指令的针对性很强,并不是所有的X86都可以进行,比如像compare 和test指令就可以和分支指令相融合译码,只会产生一条微指令操作。在酷睿的四个译码器单元中,每一个单元都有一周期完成一次宏融合到产生微指令的能力,但是总体存在每周期产生一条微操作的总限制。增加微指令融合不但要在预译码部分和译码部分的流水线增加新的硬件设计,同时也要对后端的ALU和分支执行单元进行修改。这些新增加的硬件部分负担会被宏融合带来节省后端硬件开销弥补,因为宏融合在同样的X86指令输入数量下产生更少的微操作指令,最终完成同等工作需要更少的后端硬件开销,从酷睿核心整体来看就是获得每条X86指令最佳的功耗效率,这就是Intel为何努力尽可能的让译码单元获得X86指令和处理器执行的微操作指令的1:1 译码产生率的原因。
当然,如果说宏融合可以在更少的ROB以及RS后端硬件资源下完成等同甚至更多的工作,那么也意味着该技术的应用为同等或者更宽更强大的后端硬件提供了足够的前端译码能力,总体获得了更大的执行带宽。一个单ALU可以执行一条实际上是两条X86指令融合后的微操作,就好比两条指令同时并行运行,即相同的执行单元数量的前提下获得更强的处理能力。
微指令融合Micro-ops fusion
微指令融合是英特尔在Pentium M首次导入的技术,在效果上和前面说到的宏融合类似,都是尽可能的减少微操作指令的生成数量,但是运行原理却是不同。一般情况下,简单译码器接受了通常转化为两条微指令的X86指令后,它就会产成一对相关联的微指令对,通过ROB的单独入口进行追踪。当这个指令对进入保留站,其中每一个成员指令被允许单独调度分配,根据两条指令的并行度决定它们是并行通过两个不同的调度端口,还是连续的从一个调度端口抵达执行单元。最为常见的关联微操作指令就是载入和存储命令,我们可以来看看它们在P6构架上执行的过程,这样更容易理解Core的微指令融合的不同之处。
在P6构架上,存储指令被分解成两条微指令,存储地址计算微指令和存储数据微指令。前者负责计算数据存储的地址,它是由P6构架中的地址产生器处理然后将生成地址暂存在存储地址单元等待执行;后者存储数据微指令将数据存入到外部存储数据缓冲区,当存储指令完成,这部分数据就被写入外存即系统内存,这条微指令由P6构架中的存储数据单元执行。因为这样的两条微指令存在固有的并行关系,它们可以通过两个不同的调度端口进入不同的执行单元处理,当数据写入到存储缓冲的同时,存储地址已经计算出来了,两条微指令形成自然而然的并行运行关系。
而英特尔说明在Pentium M处理器后,上述传统的P6构架的译码单元结构出现了变化。它不再将存储指令译码为两条单独的微指令,而是将它们融合成一条。这条指令以融合状态通过调度端口,直到抵达真正的存储单元后,才被执行核心分别处理。融合的load操作与此类似,采用了串行调度替代了并行调度方式。
类似于宏融合,微指令融合在更少的入口和硬件开销下让ROB具备更多的微指令调度和提交能力,等同于把Core执行前端译码器、分配器、调度部分的带宽都等效提高了,为每周期处理更多的X86指令提供了前提,也为总体构架性能提升贡献不少。提升前端效率,意味着达到同样处理能力后端可以适当简化,同样可以达到降低处理器功耗的作用。
为了达到性能和功耗的均衡设计,英特尔花费了大量的晶体管在酷睿™ 微架构的分支预测单元上。为什么如此呢,其实现在的处理器设计中,内存和处理器的距离(以CPU周期衡量)不断增大,花费如此多的晶体管资源在分支预测硬件的构建上因为能获得和这种投入相称的回报。我们知道,如果分支预测没有命中,就会用相对慢得多的速度从主内存中重新取得正确的分支目标;在这个漫长的时间里,在单线程处理器处在空闲状态,浪费执行资源,是没有产出的纯功率消耗。所以优秀的分支预测单元不仅关乎处理器的性能,而且极大提高处理器单位时钟有效性,从而达到节省功耗的作用。
酷睿™ 微架构本质上仍旧使用了为Pentium M.开发三段式分支预测器,其核心组成部分是一对预测单元,包括一个双峰统计预测单元和一个全局预测单元,它们记录了最近执行过的分支记录信息。这些预测器基于这些过去的执行历史记录决定处理核心前端可能下一步的分支预测结果。如果处理内核前端决定了要执行的分支,那么分支预测器从分支目标缓存中(BTB)取回分支目标代码的地址,然后依照这个新的地址定位取得相应的指令。

网友评论