Intel Core & Enhanced Core微架构(9)
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:不同延迟的操作混和使用同一个发射口时可以会导致回写总线冲突,这种情况可能会减低总体吞吐量。
注2:128位指令执行时具有更长的延迟和更低的吞吐量
注3:Enhanced Intel Core微架构使用发射口5下面的shuffle unit做128位的shuffle
注4:为存储转发和存储退役逻辑准备欲存储的数据的地址
注5:为存储转发和存储退役逻辑准备欲存储的数据
注6:延迟随指令不同;128位指令使用QW Shuffle单元
注7:延迟随指令不同;128位shuffle单元替换了Intel Core微架构中的QW shuffle单元。
在每个周期,预约站RS(即调度器scheduler)可以分发6条微指令,同时最多达4条微指令的执行结果可以被回写到预约站RS和重排序缓冲区ROB,这些结果在下一个周期即可被预约站使用。如此高的执行带宽使得微指令执行速度可以跟得上微熔合后的微指令的译码与退役所带来的函数级增长。注:这句话的意思就是:有了微熔合机制,指令的译码和退役带宽实质上都增加了,所以执行核的执行带宽也要相应的增长,以匹配译码和退役速度。
执行核包括了一下3个执行栈(每个栈有若干个位于不同发射口下的同类型操作执行单元):
- SIMD整型栈
- 常规整型栈
- x87/SIMD浮点栈
执行核也包括了到存储器簇(即一级缓存,存储器等的合称)的连接。
注意:在执行核的框图中有两个深色的方框,分别位于1)SIMD整型栈到浮点栈,和2)整型栈到浮点栈,代表了一个周期的额外延迟,被称为旁路延迟(bypass delay)。来自于一级缓存的数据到浮点栈也会有一个周期的额外延迟。可能技术上不准确,但是可以这样辅助理解和记忆:整型栈与浮点栈传递数据时会存在一个类型转换,需要一个额外周期;数据缓存中的数据传递给浮点单元也需要一个额外的周期做转换。