Core2 and Nehalem pipeline

Core2 and Nehalem pipeline

(The microarchitecture of Intel, AMD and VIA CPUs https://www.agner.org/optimize/)

  1. 介绍:

    • 相对于之前的PM的设计,流水线能够每周期处理四条微操作,执行单元由原本的64位宽变为128位宽
    • Core2处理器有着两个或更多的CPU,每个CPU具有私有的L1 cache,共享的L2 cache。Nehalem则是私有的L1和L2 cache,L3 cache共享
    • Nehalem的四核处理器在每个核上可以同时执行两个线程
    • Core2同样存在power-saving策略,能够关闭部分未被使用的部分,例如内部总线,执行单元。当执行的工作负载较小时,时钟频率也会随之下降。在Nehalem可以支持提高某一个核的频率,如果其它的核都是空闲的。
  2. 流水线结构:

    • Core2 据称只有14级流水线,以减少能耗,推测执行和分支错误预测的代价。
    • 论文作者实验发现转移预测错误代价最小是15个周期。作者发现Core2的取指和提交部分相对于PM有了一定的改进,因此推测Core2增加了一级用于改善指令取指和预译码,增加了另外一级用于改善指令提交
    • Nehalem的转移预测错误代价最小是17个周期,因此至少也要比Core2多两个流水级
    • 根据Intel官方的文档介绍,Core2的ROB大小为96表项,Nehalem为128表项。Core2的RS具有32表项,Nehalem为36表项
  3. 指令取指和预译码

    • 相对于之前的处理器,Core2在转移预测和指令取指之间增加了一个队列,以减少跳转分支带来的延迟问题。
    • 取指带宽受到预译码的限制,每周期16B
    • 预译码和译码阶段之间存在一个64B的队列。预译码主要工作是检测每个指令的开始位置(每条指令长度在1-15B),同时也要识别指令的前缀和指令的其它组件
    • 预译码的最大吞吐量为每周期16B或者6条指令(两者之间最小的为准)。如果16B的代码块中超过了6条指令,则预译码器需要至少两个周期才能够加载下一个代码块。任何跨越了16B的代码块的指令需要被遗留到下一个代码块进行处理。(编译的时候可以调整指令位置和长度)
  4. L

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值