64-ia-32架构优化手册(1)

第二章.Intel®64与IA-32处理器架构

本章给出了当前Intel 64与IA-32处理器(基于Intel®微架构Skylate、Intel®微架构Broadwell、Intel®微架构Haswell、Intel®微架构IvyBridge、Intel®微架构SandyBridge的处理器,基于IntelCore微架构、增强IntelCore微架构、Intel®微架构Nehalem的处理器)软件优化相关特性的一个概览。这些特性有:

·        以高时钟率、高吞吐率执行指令的微架构,一个高速缓存架构系统以及高速系统总线。

·        从Intel Core处理器到IntelXeon处理器家族都存在的多核架构。

·        超线程技术[1](HT技术)支持。

·        Intel 64位处理器上的Intel 64位架构。

·        SIMD指令扩展:MMX技术,流SIMD扩展(SSE),流SIMD扩展2(SSE2),流SIMD扩展3(SSE3),补充流SIMD扩展3(SSSE3),SSE4.1与SSE4.2。

·        Intel®先进向量扩展(Intel®AVX)。

·        半精度浮点转换与RDRAND。

·        融合乘加扩展。

·        Intel®先进向量扩展2(Intel®AVX2)。

·        ADX与RDSEED。

Intel Core 2,Intel Core 2 Extreme,IntelCore 2 Quad处理器家族, Intel Xeon处理器3000、3200、5100、5300、7300系列基于高性能与节能的IntelCore微架构。IntelCore 3100、3300、5200、7400系列,IntelCore 2 Extreme处理器QX9600、QX9700系列,IntelCore 2 Quad Q9000、Q8000系列基于增强Intel Core微架构。IntelCore i7处理器基于Intel微架构Nehalem。Intel® Xeon®处理器5600系列,IntelXeon处理器E7与IntelCore i7、i5、i3处理器基于Intel微架构Westmere。

Intel® Xeon®处理器E5家族,Intel®Xeon®处理器E3-1200家族,Intel®Xeon®处理器E7-8800/4800/2800家族,Intel®CoreTM i7-3930K处理器,第二代Intel® CoreTMi7-2xxx,CoreTMi5-2xxx,CoreTMi3-2xxx处理器系列基于Intel®微架构Sandy Bridge。

Intel® Xeon®处理器E3-1200 v2家族与第三代Intel®CoreTM处理器基于Ivy Bridge微架构,且支持Intel 64位架构。Intel®Xeon®处理器E5v2与E7v2家族基于IvyBridge-E微架构,支持Intel64位架构及在一个平台上封装多个物理处理器。

Intel® Xeon®处理器E3-1200 v3家族与第四代Intel®CoreTM处理器基于Haswell微架构且支持Intel 64位架构。Intel®Xeon®处理器E526xx v3家族基于Haswell-E微架构,支持Intel64位架构,以及在一个平台上封装多个物理处理器。

Intel® CoreTM M处理器,第五代IntelCore处理器以及IntelXeon处理器e3-1200v4系列基于Broadwell微架构,支持Intel64位架构。

第六代Intel Core处理器,IntelXeon处理器E3-1500v5基于Skylake微架构,支持Intel64位架构。

2.1. SKYLAKE微架构


Skylake微架构构建在Haswell与Broadwell微架构的基础上。图2-1显示了Skylake微架构的基本流水线功能。


[1]超线程技术要求支持HT技术的Intel处理器以及激活HT技术的芯片集、BIOS与操作系统的计算机系统。性能按照使用的硬件与软件而不同。


Skylake微架构提供以下增强:

·        更大的内部缓冲,使更深的OOO(乱序)执行与更高的缓存带宽成为可能。

·        提升前端的吞吐能力。

·        改进分支预测。

·        提升除法器的吞吐能力,降低时延。

·        更低的功耗。

·        以超线程技术提升SMT性能。

·        平衡浮点ADD,MUL,FMA的吞吐率与时延。

这个微架构支持多个处理器核与一个带有若干组件,包括一个连接了多个L3片的环(一个片外L4是可选的)、显卡、内存控制器、互联光纤的共享uncore(非计算内核)子系统灵活整合。可以支持类似图2-3显示布局的一个四核配置。

2.1.1. 前端

Skylake微架构的前端提供超越前代微架构的改进如下:

·        相比前代的4个微操作,遗留解码流水线(LegacyDecode Pipeline)每周期向IDQ交付5个微操作。

·        相比前代的4个微操作,DSB每周期向IDQ交付6个微操作。

·        在同一个核里的同级逻辑处理器是活动时,相比前代的每逻辑处理器28个微操作,IDQ对每个逻辑处理器保持64个微操作(每核2x64对2x28)。如果核上只有一个逻辑处理器是活动的,IDQ可以保持64个微操作(在ST操作中64个微操作对56个微操作)。

·        IDQ中的LSD可以检测多达每逻辑处理器64个微操作,不管是ST还是SMT操作。

·        改进分支预测。

2.1.2. 乱序执行引擎

Skylake微架构中乱序执行引擎的改变包括:

·        相比前代,更大的缓冲允许更深OOO(乱序)执行。

·        对除法/开平方及近似倒数提升吞吐率,降低时延。

·        所有运行在FMA单元中的操作具有统一的时延与吞吐率。

·        更长的暂停时延使得更高的功效与更好的SMT执行资源使用率成为可能。

表2-1总结了OOO引擎向各个端口分发各种类型操作的能力。

表2-1. Skylake微架构的分发端口与执行栈

端口0

端口1

端口2, 3

端口4

端口5

端口6

端口7

ALU,

Vec ALU

ALU,

Fast LEA,

Vec ALU

LD

STA

STD

ALU,

Fast LEA,

Vec ALU

ALU,

Shft

STA

Vec Shft,

Vec Add

Vec Shft,

Vec Add

 

 

Vec Shuffle

Branch

 

Vec Mul,

FMA

Vec Mul,

FMA

 

 

 

 

 

DIV

Slow Int

 

 

 

 

 

Branch2

Slow LEA

 

 

 

 

 

表2-2列出了执行单元以及依赖这些单元的一般指令表示。SSE,AVX与通用指令集间吞吐率的提升,与各操作的单元数以及使用一个特定单元的指令种类有关。

表2-2. Skylake微架构执行单元与指令表示1

执行单元

单元数

指令

ALU

4

add, and, cmp, or, test, xor, movzx, movsx, (v)movdqu, (v)movdqa, (v)movap*, (v)movup*

SHFT

2

sal, shl, rol, adc, sarx, adcx, adox等

Slow Int

1

mul, imul, bsr, rcl, shld, mulx, pdep等

BM

2

andn, bextr, blsi, blsmsk, bzhi等

Vec ALU

3

(v)pand, (v)por, (v)pxor, (v)movq, (v)movap*, (v)movup*, (v)andp*, (v)orp*, (v)paddb/w/d/q, (v)blendv*, (v)blendp*, (v)pblendd

Vec Shft

2

(v)psllv*, (v)psrlv*, imm8中的向量偏转数(vector shift count)

Vec Add

2

(v)addp*, (v)cmpp*, (v)max*, (v)min*, (v)padds*, (v)paddus*, (v)psign, (v)pavgb, (v)pcmpeg*, (v)pmax, (v)cvtps2dq, (v)cvtdp2ps, (v)cvtsd2si, (v)cvtss2si

Shuffle

1

(v)shufp*, vperm*, (v)pack*, (v)unpck*, (v)punpck*, (v)pshuf*, (v)pslldq, (v)alignr, (v)pmovzx*, vbroadcast*, (v)pslldq, (v)psrldq, (v)pblendw

Vec Mul

2

(v)mul*, (v)pmul*, (v)pmadd*

SMID Misc

1

STTNI, (v)pclmulqdq, (v)psadw, 在xmm中的向量偏转数

FP Mov

1

(v)movsd/ss, (v)movd gpr

DIVIDE

1

divp*, divs*, vdiv*, sqrt*, vsqrt*, rcp*, vrcp*, rsqrt*, idiv

注:

1.  这个表没有涵盖映射到MMX指令的执行单元。参考11.16.5节关于MMX指令吞吐率的补救。

SSE,AVX与通用指令的一个重要部分也包含了时延降低。附录C列出具体的细节。指令的软件可见时延有时包括依赖于生产者指令微操作流与消费者指令微操作流之间关系的额外贡献。例如,一个像VPMULLD的两微操作指令可能经历两个累积的1周期旁路(bypass)时延,分别来自这两个微操作中的一个。

表2-3描述了生产者微操作与消费者微操作之间的旁路时延周期数。最左列列出生产者微操作在各种情况下的特点。最上行列出消费者微操作在各种情况下的特点。

表2-3. 生产者与消费者微操作间的旁路时延

 

SIMD/0, 1/1

FMA/0, 1/4

VIMUL/0, 1/4

SIMD/5/1, 3

SHUF/5/1, 3

V2I/0/3

I2VI/5/1

SIMD/0, 1/1

0

1

1

0

0

0

 NA

FMA/0, 1/4

1

0

1

0

0

0

NA

VIMUL/0, 1/4

1

0

1

0

0

0

NA

SIMD/5/1, 3

0

1

1

0

0

0

NA

SHUF/5/1, 3

0

0

1

0

0

0

NA

V2I/0/3

NA

NA

NA

NA

NA

NA

NA

I2VI/5/1

0

0

1

0

0

0

NA

对旁路而言,与生产者/消费者相关的属性是微操作的三元组,缩写/一个或多个端口号/时延周期。例如:

·        “SIMD/0, 1/1”适用于分发到端口0或端口1的1周期的向量SIMD微操作。

·        “VIMUL/0, 1/4”适用于分发到端口0或端口1的4周期的向量整数乘法微操作。

·        “SIMD/5/1, 3” 适用于分发到端口5的1周期或3周期非混排(non-shuffle)微操作。

2.1.3. 缓存与内存子系统

Skylake微架构的缓存层次结构具有以下增强:

·        相比前代,更宽的缓存带宽。

·        通过扩大的缓冲同时处理更多的读写。

·        相比Haswell微架构与更前世代的一个页面的遍历,处理器可以并行遍历两个页面。

·        页面分解读的代价从前代的100个周期降到5个周期。

·        L3写带宽从前代的每行4个周期增加到每行2个周期。

·        支持CLFLUSHOPT指令刷出缓存行,以及使用SFENCE管理被刷出数据的内存序。

·        降低一个指定空指针的软件预取的性能损失。

·        L2的关联性从8路改为4路。

表2-4. Skylake微架构的缓存参数

层级

容量/关联性

行大小(字节)

最小时延[1]

带宽峰值(字节/周期)

持续带宽(字节/周期)

更新策略

第一级数据

32KB/8

64

4周期

96(2x32B读+32B写)

~81

回写

指令

32KB/8

64

N/A

N/A

N/A

N/A

第二级

256KB/4

64

12周期

64

~29

回写

第三级(共享L3)

每核多达2MB/多达16路

64

44

32

~18

回写

TLB层次结构包含专用于指令缓存的第一层TLB,用于L1D的TLB,加上用于L2的一体TLB。表2-5的划分列表示在激活超线程技术时的资源共享策略。

表2-5. Skylake微架构的TLB参数

层级

页大小

入口数

关联数

划分

指令

4KB

128

8路

动态

指令

2MB/4MB

每线程8个

 

固定

第一级数据

4KB

64

4

固定

第一级数据

2MB/4MB

32

4

固定

第一级数据

1GB

4

4

固定

第二级

由4KB及2/4MB页面共享

1536

12

固定

第二级

1GB

16

4

固定



[1] 软件可见时延依赖于访问模式与其他因素而不同。


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值