Intel Core & Enhanced Core微架构(9)

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

Issue Ports and Execution Units

通过发射口,调度器可以每周期分发6条微指令。Intel Core微架构和Enhanced Intel Core微架构的发射口以及支持的操作在下表中列出。其中,Intel Core微架构的标识是06_0FH,Enhanced Intel Core微架构的标识是06_17H,这种标识法是根据执行CPUID指令获得的处理器标识中的的Family和Model组合而来的,即DisplayFamily_DisplayModel。表中提供了常用的整型和浮点操作,发射口支持,以及对应的按周期数计算的延迟和吞吐量。

可执行的操作

延迟,吞吐量

注释1

Signature: 06_0F

(Core)

Signature:06_17H

(Enh.  Core)

Integer ALU

Integer SIMD ALU

FP/SIMD/SSE2 Move and Logic

1, 1

1, 1

1, 1

1, 1

1, 1

1, 1

包括64位模式整型乘法

发射口0;回写口0;

Single-precision (SP) FP MUL

Double-precision (DP) FP MUL

4, 1

5, 1

4, 1

5, 1

发射口0;回写口0;

FP MUL (x87)

FP Shuffle

DIV/SQRT

5, 2

1, 1

TODO:

5, 2

1, 1

原文缺失

发射口0;回写口0;

FP shuffle不支持QW shuffle

Integer ALU

Integer SIMD ALU

FP/SIMD/SSE2 Move and Logic

1, 1

1, 1

1, 1

1, 1

1, 1

1, 1

不包括64位模式整型乘法

发射口1;回写口1

FP ADD

QW Shuffle

3, 1

1, 12

3, 1

1, 13

发射口1,回写口1

Integer Loads

FP loads

3, 1

4, 1

3, 1

4, 1

发射口2;回写口2

Store address4

3, 1

3, 1

发射口3

Store data5

 

 

发射口4

Integer ALU

Integer SIMD ALU

FP/SIMD/SSE2 Move and Logic

1, 1

1, 1

1, 1

1, 1

1, 1

1, 1

发射口5;回写口2

QW shuffles

128-bit Shuffle/Pack/Unpack

1, 12

2-4, 2-46

1, 13

1-3, 17

发射口5;回写口5

1:不同延迟的操作混和使用同一个发射口时可以会导致回写总线冲突,这种情况可能会减低总体吞吐量。

2128位指令执行时具有更长的延迟和更低的吞吐量

3Enhanced Intel Core微架构使用发射口5下面的shuffle unit128位的shuffle

4:为存储转发和存储退役逻辑准备欲存储的数据的地址

5:为存储转发和存储退役逻辑准备欲存储的数据

6:延迟随指令不同;128位指令使用QW Shuffle单元

7:延迟随指令不同;128shuffle单元替换了Intel Core微架构中的QW shuffle单元。

 

在每个周期,预约站RS(即调度器scheduler)可以分发6条微指令,同时最多达4条微指令的执行结果可以被回写到预约站RS和重排序缓冲区ROB,这些结果在下一个周期即可被预约站使用。如此高的执行带宽使得微指令执行速度可以跟得上微熔合后的微指令的译码与退役所带来的函数级增长。注:这句话的意思就是:有了微熔合机制,指令的译码和退役带宽实质上都增加了,所以执行核的执行带宽也要相应的增长,以匹配译码和退役速度。

执行核包括了一下3个执行栈(每个栈有若干个位于不同发射口下的同类型操作执行单元):

  • SIMD整型栈
  • 常规整型栈
  • x87/SIMD浮点栈

 

执行核也包括了到存储器簇(即一级缓存,存储器等的合称)的连接。

注意:在执行核的框图中有两个深色的方框,分别位于1)SIMD整型栈到浮点栈,和2)整型栈到浮点栈,代表了一个周期的额外延迟,被称为旁路延迟(bypass delay)。来自于一级缓存的数据到浮点栈也会有一个周期的额外延迟。可能技术上不准确,但是可以这样辅助理解和记忆:整型栈与浮点栈传递数据时会存在一个类型转换,需要一个额外周期;数据缓存中的数据传递给浮点单元也需要一个额外的周期做转换。

猜你喜欢

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