Intel, AMD及VIA CPU的微架构目录(已完结)

1. 介绍

    1.1. 关于本手册

    1.2. 本手册涵盖的微处理器版本

2. 乱序执行(除了P1、PMMX的所有处理器)

    2.1. 指令被分解为微操作

    2.2. 寄存器重命名

3. 分支预测(所有处理器)

    3.1. 条件跳转的预测方法

         饱和计数器

         带有局部历史表的两层自适应预测器

         带有全局历史表的两层自适应预测器

         约定计数器

         循环计数器

         间接跳转预测

         子例程返回预测

         混合预测器

         将来的分支预测方法

    3.2. P1中的分支预测

         BTB是前瞻的(P1)

         连续分支(consecutive branches)

    3.3. PMMX,PPro,P2及P3中的分支预测

         BTB的组织

         误预测惩罚

         条件跳转的模式识别

         紧凑循环(PMMX)

         间接跳转与调用(PMMX,PPro,P2与P3)

         JECX与LOOP(PMMX)

    3.4. P4与P4E中的分支预测

          P4中条件跳转的模式识别

          交替分支

          P4E中条件跳转的模式识别

    3.5. 在PM及Core2里的模式识别

          误预测惩罚

          条件跳转的模式识别

          间接跳转与调用的模式识别

          BTB结构

    3.6. Intel Nehalem中的分支预测

          误预测惩罚

          条件跳转的模式识别

          间接跳转与调用的模式识别

          BTB结构

          函数返回的预测

   3.7. Intel Sandy Bridge与Ivy Bridge中的分支预测

          误预测惩罚

          条件跳转的模式识别

          间接跳转与调用的模式识别

          BTB结构

          函数返回的预测

   3.8. Intel Haswell,Broadwell与Skylake中的分支预测

          误预测惩罚

          条件跳转的模式识别

          间接跳转与调用的模式识别

          BTB结构

          函数返回的预测

   3.9. Intel Atom,Silvermont与Knights Landing中的分支预测

          误预测惩罚

          间接分支的预测

          返回栈缓冲

   3.10. VIA Nano中的分支预测

   3.11. AMDK8与K10中的分支预测

          BTB结构

          误预测惩罚

          条件跳转的模式识别

          间接分支的预测

          返回栈缓冲

           文献

   3.12. AMDBulldozer,Piledriver与Steamroller中的分支预测

          误预测惩罚

          误预测惩罚

   3.13. AMDRyzen中的分支预测

           文献

   3.14. AMDBobcat与Jaguar中的分支预测

          误预测惩罚

          条件跳转的模式识别

          间接分支的预测

          返回栈缓冲

           文献

   3.15. 在更旧处理器上的间接跳转

   3.16. 返回(所有处理器,除了P1)

   3.17. 静态预测

         在P1与PMMX中的静态预测

         PPro,P2,P3,P4,P4E中的静态预测

         PM与Core2中的静态预测

         AMD中的静态预测

.   3.18.邻近的跳转

         在PMMX上的邻近跳转

         PPro,P2与P3上的串接跳转

         在P4,P4E及PM上的串接跳转

         AMD上的串接跳转

4. Pentium 1与Pentium MMX流水线

    4.1. 整数指令成对

         预取成对

         不完美成对

    4.2. 地址生成互锁

    4.3. 将复杂指令分解为更简单的指令

    4.4. 前缀

    4.5. 浮点代码调度

5. Pentium 4(NetBurst)流水线

    5.1. 数据缓存

    5.2. 追踪缓存

          在P4上节省追踪缓存的使用

          P4E上追踪缓存的使用

          追踪缓存提交率

          追踪缓存中的分支

          提升追踪缓存性能的指引

    5.3. 指令解码

    5.4. 执行单元

    5.5. 以一半速度运行浮点及MMX单元

    5.6. 执行单元间传输数据

    5.7. 回收

    5.8. 部分寄存器与部分标记

    5.9. 写转发暂停(Store forwarding stalls)

    5.10. 依赖链中的内存中介

    5.11. 打破依赖链

    5.12. 选择最优的指令

    5.13. P4与P4E中的瓶颈

6. PentiumPro,II与III流水线

    6.1. 在PPro,P2与P3中的流水线

    6.2. 指令获取

    6.3. 指令解码

    6.4. 寄存器重命名

    6.5. ROB读

    6.6. 乱序执行

    6.7. 回收

    6.8. 部分寄存器暂停

    6.9. 写转发暂停

    6.10. PPro,P2,P3中的瓶颈

7. Pentium M流水线

    7.1. PM中的流水线

    7.2. Core Solo与Duo的流水线

    7.3. 指令获取

    7.4. 指令解码

    7.5. 循环缓冲

    7.6.  微操作融合

    7.7. 栈引擎

    7.8. 寄存器重命名

    7.9. 寄存器读暂停

    7.10. 执行单元

    7.11. 连接到端口0与1的执行单元

    7.12. 回收

    7.13. 寄存器的部分访问

    7.14. 写转发暂停

    7.15. PM中的瓶颈

8. Core 2与Nehalem流水线

    8.1. 流水线

    8.2. 指令获取与预解码

    8.3. 指令解码

    8.4. 微操作融合

    8.5. 宏操作融合

    8.6. 栈引擎

    8.7. 寄存器重命名

    8.8. 寄存器读暂停

    8.9. 执行单元

    8.10. 回收

    8.11. 寄存器的部分访问

    8.12. 写转发暂停

    8.13. 缓存与内存访问

    8.14. 打破依赖链

    8.15. Nehalem里的多线程

    8.16. Core2与Nehalem中的瓶颈

9. Sandy Bridge与Ivy Bridge流水线

    9.1. 流水线

    9.2. 指令获取与解码

    9.3. μop缓存

    9.4. 回路缓冲

    9.5. 微操作融合

    9.6. 宏操作融合

    9.7. 栈引擎

    9.8. 寄存器分配与重命名

    9.9. 寄存器读暂停

    9.10. 执行单元

    9.11. 寄存器的部分访问

    9.12. VEX与非VEX模式间的转换

    9.13. 缓存与内存访问

    9.14. 写转发暂停

    9.15. 多线程

    9.16. Sandy Bridge与Ivy Bridge中的瓶颈

10. Haswell与Broadwell流水线

    10.1. 流水线

    10.2. 指令获取与掩码

    10.3. μop缓存

    10.4. 回路缓冲

    10.5. 微操作融合

    10.6. 宏操作融合

    10.7. 栈引擎

    10.8. 寄存器分配与重命名

    10.9. 执行单元

    10.10. 部分寄存器访问

    10.11. 缓存与内存访问

    10.12. 写转发暂停

    10.13. 多线程

    10.14. Haswell与Broadwell中的瓶颈

11. Skylake流水线

    11.1. 流水线

    11.2. 指令获取与解码

    11.3. μop缓存

    11.4. 回路缓冲

    11.5. 微操作融合

    11.6. 宏操作融合

    11.7. 栈引擎

    11.8. 寄存器分配与重命名

    11.9. 执行单元

    11.10. 部分寄存器访问

    11.11. 缓存与内存访问

    11.12. 写转发暂停

    11.13. 多线程

    11.14. Skylake中的瓶颈

12. Intel Atom流水线

    12.1. 指令获取

    12.2. 指令解码

    12.3. 执行单元

    12.4. 指令成对

    12.5. X87浮点指令

    12.6. 指令时延

    12.7. 内存访问

    12.8. 分支与循环

    12.9. 多线程

    12.10. Atom里的瓶颈

13. Intel Silvermont流水线

    13.1. 流水线

    13.2. 指令获取与解码

    13.3. 循环缓冲

    13.4. 宏操作融合

    13.5. 寄存器分配与乱序执行

    13.6. 无关的特殊情形

    13.7. 执行单元

    13.8. 部分寄存器访问

    13.9. 缓存与内存访问

    13.10. 多线程

    13.11. Silvermont里的瓶颈

14. Intel Knights Corner流水线

15. Intel Knights Landing流水线

    15.1. 流水线

    15.2. 指令获取与解码

    15.3. 循环缓冲

    15.4. 执行单元

    15.5. 寄存器的部分访问

    15.6. 向量寄存器部分访问与VEX / 非VEX转换

    15.7. 无关的特殊情形

    15.8. 缓存与内存访问

    15.9. 写转发

    15.10. 多线程

    15.11. Knights Landing里的瓶颈

16. VIA Nano流水线

    16.1. 性能监控计数器

    16.2. 指令获取

    16.3. 指令解码

    16.4. 指令融合

    16.5. 乱序系统

    16.6. 执行端口

    16.7. 执行单元间的时延

    16.8. 部分寄存器与部分标记

    16.9. 打破依赖

    16.10. 内存访问

    16.11. 分支与循环

    16.12. VIA特殊指令

    16.13. Nano里的瓶颈

17. AMD K8与K10流水

    17.1. AMD K8与K10处理器中的流水线

    17.2. 指令获取

    17.3. 预解码与指令长度解码

    17.4. 单、双与向量路径指令

    17.5. 栈引擎

    17.6. 整数执行流水线

    17.7. 浮点执行流水线

    17.8. 混用不同时延的指令

    17.9. 64位与128位指令

    17.10. 不同类型指令间的数据时延

    17.11. 寄存器的部分访问

    17.12. 标记寄存器的部分访问

    17.13. 写转发暂停

    17.14. 循环

    17.15. 缓存

    17.16. AMD K8与K10中的瓶颈

18. AMD Bulldozer,Piledriver与Steamroller流水线

    18.1. AMD Bulldozer,Piledriver与Steamroller中的流水线

    18.2. 指令获取

    18.3. 指令解码

    18.4. 循环缓冲

    18.5. 指令融合

    18.6. 栈引擎

    18.7. 乱序调度器

    18.8. 整数执行流水线

    18.9. 浮点执行流水线

    18.10. AVX指令

    18.11. 不同执行域之间的数据时延

    18.12. 不使用执行单元的指令

    18.13. 寄存器的局部访问

    18.14. 打破依赖的指令

    18.15. 分支与循环

    18.16. 缓存与内存访问

    18.17. 写转发暂停

    18.18. 在AMD Bulldozer,Piledriver与Steamroller里的瓶颈

    18.19. 文献

19. AMD Ryzen流水线

    19.1. AMD Ryzen中的流水线

    19.2. 指令获取

    19.3. 指令解码

    19.4. 指令融合

    19.5. μop缓存

    19.6. μop队列

    19.7. 栈引擎

    19.8. 寄存器重命名与乱序调度器

    19.9. 整数执行流水线

    19.10. 浮点执行流水线

    19.11. AVX指令

    19.12. 不同执行域间的数据时延

    19.13. 没有时延的指令

    19.14. 寄存器的局部访问

    19.15. 依赖打破指令

    19.16. 分支与循环

    19.17. 缓存与内存访问

    19.18. 写转发暂停

    19.19. 多线程并发

    19.20. 节能与倍频

    19.21. AMD Ryzen中的瓶颈

20. AMD Bobcat与Jaguar流水线

    20.1. AMD Bobcat与Jaguar中的流水线

    20.2. 指令获取

    20.3. 指令解码

    20.4. 单、双及复杂指令

    20.5. 整数执行流水线

    20.6. 浮点执行单元

    20.7. 混用不同时延的指令

    20.8.  打破依赖指令

    20.9. 不同类型指令间的数据时延

    20.10. 寄存器的局部访问

    20.11. 缓存

    20.12. 写转发暂停

    20.13. Bobcat与Jaguar中的瓶颈

    20.14. 文献

21. 微架构的比较

    21.1. AMD K8与K10核心

    21.2. AMD Bulldozer,Piledriver与Steamroller内核

    21.3. AMD Zen核心

    21.4. Pentium 4核心

    21.5. Pentium M核心

    21.6. Intel Core 2与Nehalem微架构

    21.7. Intel Sandy Bridge及更新的微架构

22. 低功耗微架构的比较

    22.1. Intel Atom微架构

    22.2. VIA Nano微架构

    22.3. AMD Bobcat微架构

    22.4. 结论

23. 未来的趋势

24. 文献

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值