Intel 没有过多的透露关于乱序执行引擎的资料,但是对执行单元子系统的相关资料毫不吝啬,言之甚详。Core
微架构的执行单元部分拥有3个调度端口,通过这3个端口来调度执行单元。执行单元包括3个64bit的整数执行单元(ALU)、2个128bit的浮点执行单元(FPU)和3个128bit的SSE执行单元,或者更准确的说法应该是,向量执行单元或SIMD执行单元。其中,位于端口1的整数执行单元可以处理128bit的Shift和Rotate操作。而2个浮点单元和3个SSE单元共享某些硬件资源。NetBurst
微架构和 Yonah 微架构的执行单元子系统也在图中列出作为比较。
Intel 三代微架构执行单元对比
很明显,我们首先注意到 Core 微架构拥有3个调度端口——比 NetBurst 微架构和 Yonah 微架构的2个端口增加了1个。所以,Core
微架构的执行单元子系统每个周期最多可以执行3条操作,而 Yonah 微架构最多只能执行2条。需要注意的是,对于 NetBurst
微架构来说,并不是2条。NetBurst
微架构的调度机制使得每个周期最多可以执行4条操作,但是这种情况会相当罕见——必须是4个简单的整数单元操作。并且,NetBurst
微架构在执行64bit指令时会有额外的延迟。更重要的是,Core
微架构的功能单元的统筹安排相对平衡,对于整数操作,可以在多个周期内保持单周期执行3个操作的吞吐量。而 NetBurst
微架构在很多情况下只能单周期执行1个操作。
Core
微架构所拥有的3个64bit的整数执行单元并非完全相同。与解码单元部分类似,3个整数执行单元也分为1个复杂整数执行单元和2个简单整数执行单元。不过,Core
微架构是 Intel 的X86架构处理器第一次可以在一周期内完成一次64bit的整数运算。之前的 NetBurst
微架构虽然也可以完成64bit的整数运算,但是需要2个时钟周期。另外,因为3个整数执行单元占据了不同的端口,所以采用 Core
微架构的处理器可以在一周期内最多执行3组64bit的整数运算。
Core 微构架拥有2个浮点执行单元,位于端口0的浮点执行单元负责加减等简单的浮点运算,而端口1的浮点执行单元则负责乘除等浮点运算。这样,在Core
微架构中,浮点加减指令与浮点乘除指令被划分成两部分,使其具备了在一周期中完成两条浮点指令的能力。
Core 微架构在 SSE 运算方面的性能也比它的前任有很大的提高。它的3个128bit的 SSE
单元并不是完全相同的,在移位和乘法的资源方面有微小的差异,但是都可以在单周期内完成1个128bit的 SSE 操作。相比之下,NetBurst 微架构的 SSE
单元无论在数量上还是质量上都有所不如:只有2个64bit的 SSE 单元,需要2个周期来执行1个128bit的操作。Yonah 微架构同样只有2个64bit的
SSE 单元。从SSE指令的执行资源来看,Core 微架构比 NetBurst 微架构和 Yonah 微架构有3倍的提升!
128bit的SSE执行单元有什么样的意义?让我们从 Intel 最初支持128bit的向量执行指令开始说起。当 Intel
最初兼容128bit向量执行的时候,也就是在 P6 微架构上开始出现 SSE 指令集的时候,P6
微构架的向量执行单元单周期内只能进行64bit的运算,对于处理128bit数据的指令,P6
微构架必须把该指令解码成2条处理64bit数据的微指令来执行。这样的执行方案一直沿用了下来,包括采用 NetBurst 微架构的处理器和 Yonah
处理器。
Core 微架构终于拥有了完整的128bit的向量处理单元。配合多达3组的执行单元以及load、store 存储单元,Core
微架构可在一个时钟周期内,同时执行一个128bit乘法操作、一个128bit加法操作、一个128bit load操作与一个128bit
store操作,另外还有可能再加上一条经过宏指令融合的cmp/jmp指令——相当于单周期6条指令!真是令人叹为观止的指令级并行处理能力。做出如此大幅改进的
SSE 处理能力,使得 Core 微架构更加有利于多媒体方面的应用。
(责任编辑:刘伟) |