【Microarchitecture of Intel and AMD CPU】 9 Sandy Bridge and Ivy Bridge pipeline 【9.1~9.3】

Intel命名Sandy Bridge 的微架构是基于Core 2 和Nehalem的第二代设计。在解码器后面加入了新的uop cache,并且浮点执行单元从128bit扩展到256bit。

Sandy Bridge 有2-8 个core,其中的一些版本可以在每个core上运行双线程。

支持新的AVX 指令。将16个128bit的XMM寄存器扩展到256bit的YMM寄存器用于支持浮点向量运算。大多数的XMM和YMM指令是AVX指令集中non-destructive three-operand 版本。

9.1 Pipeline

Sandy Bridge 和 Ivy Bridge 与Core2 和 Nehalem的流水线非常类似,但是在译码器后面增加了uop cache。

Sandy Bridge 的重排序缓冲区有168项,Ivy Bridge 的有192项。Sandy Bridge 的保留站有54项,Haswell有60项。Sandy Bridge 有160个整数寄存器和144个向量寄存器。Haswell各有168个。

9.2 取指和解码

预先解码和解码器可以每周期处理16byte或者是4条指令。在macro-op fusion的情况下可以处理5条指令。这看上去基本上和Core2 和Nehalem中的基本一致。

任意个数前缀的指令都可以单周期被译码掉。

在一些case中,变长前缀的惩罚已经被解决。还有一部分遗留:

  • 使用立即数的move指令没有惩罚
  • 使用立即数的算术和逻辑计算有2-3个周期的惩罚
  • 单16bit操作数的NEG,NOT,DIV,IDIV,MUL和IMUL指令没有惩罚
  • 地址大小前缀没有惩罚,即使已经改变了指令长度。

有4个译码器,可以在特定模式下处理一条或者多条uops。如下的指令在我个人的测试中,在单周期被成功地解码。

  • 1-1-1-1
  • 2-1-1
  • 3
  • 4

产生3-4条uops的指令被单独的译码。产生超过4条uop的指令由microcode处理,较为低效。

多byte的NOP指令和操作数0F,1F 只能在Sandy Bridge的第一个译码器中译码。然而一个简单的NOP,带有格外的前缀(opcode 66 66 90)可以被四个译码器中的任意一个译码。Ivy Bridge 对此没有限制。在Ivy Bridge 中,长NOPs可以按照每周期4条指令的速度译码。

9.3 uop cache

Sandy Bridge 和Ivy Bridge 在decoders之后有一个cache用于存放解码过的微指令。考虑到平均指令长度超过4byte,fetch和译码单元每周期传输16byte将会是一个很严重的瓶颈。因此这个uop cache将会十分有效。uop cache使吞吐率加倍达到每周期32byte。

uop cache为32sets * 8 ways * 6uops,总计最多可以存储1536条uops。它一次最多分配3line * 6uops 给对齐且连续的32-byte 指令。

来自uop cache的code,不会被fetch和解码单元所限制。它可以实现4uops的吞吐率,等效于每周期32byte的指令。

Uop cache很少能够用满1536条uops。无法发挥全部潜能的原因如下:

  • uop cache line是被分配到特定的32 byte 指令block。 新的uop cacheline将被分配到新的 32byte 边界。即使前一条uop cacheline只被部分使用
  • 产生多条uops的指令不能占用两个uops cache line。如果指令不能完全的被两条 cacheline所打断,那么剩余的cache line就不会被使用。它会另起一行,放入新的cache line
  • 产生超过4条uops的使用microcode ROM。这样的指令会使用完整的一条cacheline
  • 无条件跳转和调用函数指令通常结束 uop cacheline
  • 要求超过32bit的存储空间的指令可能占用uop cache 中的两项,加载时可能会多花费一个周期
  • 每周期不能加载超过一条cache line。这在多个指令使用两项时,可能会造成瓶颈
  • 一个32byte 的指令block 产生超过18条uops 或者要求uop cache中的18 项的指令不会被分配到uop cache中
  • pipeline频繁的在译码单元和uop cache之间切换,切换可能会花费一个周期。

 


翻译自【Microarchitecture of Intel and AMD CPU  An optimization guide for assembly programmers and compiler makers】

欢迎关注我的公众号《处理器与AI芯片》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值