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

2019-04-21 15:14

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指令延迟周期与指令吞吐间隔周期列表


英特尔新一代处理器Core 2 Duo架构分析(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2 土木水利类

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: