Intel Haswell/Broadwell架构/微架构/流水线 (3)-流水线乱序引擎

版权声明:转载必须保留原出处,没有书面许可不可用于商用目的, https://blog.csdn.net/qq_43401808/article/details/86359289

The Out-of-Order Engine

乱序引擎的关键部件与重大增强概述如下:

重命名器(Renamer:重命名器将微指令从微指令队列中移到调度器中,同时绑定对应的发射口与执行资源。Zero-idiom,one-idiom和zero-latency register MOV操作由重命名器来执行,这样可以节省调度器和执行核的资源,提升性能。

注:zero-idiom操作,将某个寄存器清零,例如XOR EAX, EAX。重命名器可以分配一个全新的目标寄存器,然后立即将其清零。

注:one-idiom操作,即CMPEQ指令比较两个相同的寄存器值,例如PCMPEQB mm0, mm0。重命名器可以将mm0对应的内部寄存器的所有比特位全部置1。

关于零习语壹习语的详细情况,可以参看Sandy Bridge微架构的对应章节。

注:zero-latency register MOV,将一个寄存器的值move到另一个寄存器,不需要做“实际”的工作。重命名器可以简单地将x86寄存器对应的内部寄存器重新指向源寄存器即可。参看下图的MOV ECX, EAX指令,只需将ECX从指向内部寄存器r4重命名为r2,即完成了MOV指令,无需使用调度器/执行单元。

调度器Scheduler:调度器负责将微指令分发到发射口,一共有8个发射口用来支持乱序执行核。其中4个口提供了计算操作需要的执行资源(即众多执行单元),另外4个口支持访存操作,每个周期可以实现最多两个256位读存操作和一个256位写存操作。

执行核Execution Core:调度器每周期可以分发最多8条微指令,每个发射口一条。对于提供执行资源的4个发射口(发射口0,1,5,6),每个口提供了一个算逻单元ALU,共4个算逻单元。其中2个口(发射口0和1)提供了专用的FMA单元。除了出发/平方根单元以及STTNI/AESNI单元,大部分浮点和整型SIMD执行单元都是256位宽。

用于访存的4个发射口(发射口2,3,4,7):两个用于加载与存储地址的双用途发射口2,3,一个专用于存储地址的发射口7,以及一个专用于存储数据的发射口4。所有的访存发射口都可以处理256位宽的访存微指令。

对于浮点数的峰值吞吐量,使用FMA可以达到每周期32个单精度浮点操作或者16个双精度操作,是前代Sandy Bridge微架构的两倍。

乱序引擎可以处理192条进行中微指令,前代Sandy Bridge是168条微指令。

猜你喜欢

转载自blog.csdn.net/qq_43401808/article/details/86359289