《高性能超标量CPU:微架构剖析与设计》融合了多位一线自研高性能处理器资深工程师多年工作经验,以业界主流高性能CPU规格为基准,全面深入讲解微架构设计与优化,循序渐进、由浅入深。书中配有二维码视频,使读者身临其境,迅速、深入地掌握各种经验和技巧。本书还附赠ubuntu虚拟机,供广大学者使用。虚拟机内包含RISC-V工具链,以及多个开源RISC-V CPU项目,可以进行RISC-V CPU的仿真和学习。
序
前言
第1章 CPU架构与流水线技术概述
1.1复杂指令集与精简指令集概述
1.2ARM指令集概述
1.2.1条件执行与跳转类指令定义
1.2.2数据处理与访存类指令定义
1.3RISC-V指令集概述
1.3.1寄存器结构与特权模式定义
1.3.2RISC-V指令概述
1.4MIPS指令集概述
1.5超标量CPU设计概述
1.5.1流水线技术概述
1.5.2超长指令字设计
第2章 CPU前端与指令缓存设计
2.1内存的层次结构与缓存的基本架构
2.2指令缓存分类与访问读取
2.2.1指令缓存结构的分类
2.2.2指令缓存的访问读取
2.3指令缓存的替换策略选择
2.3.1基于新近的策略设计
2.3.2基于频率的策略设计
2.3.3近少常使用策略设计
2.4指令缓存的性能衡量标准与硬件预取设计
2.5TLB与缓存的组织方式
2.6微操作缓存与循环缓冲器设计
2.7指令提取单元设计
2.8指令译码单元设计
2.8.1RISC指令译码设计
2.8.2x86指令格式概述
2.8.3x86指令译码设计
第3章 分支预测单元设计
3.1分支预测的原理
3.2分支跳转方向预测
3.2.1基于饱和计数器的预测器设计
3.2.2TAGE预测器及其衍生设计
3.2.3感知机预测器设计
3.3分支跳转目标预测
3.3.1分支目标缓冲与分支目标缓冲子系统设计
3.3.2返回地址栈设计
3.3.3循环预测器设计
3.3.4间接跳转分支指令预测设计
3.4分支预测单元与取指令单元解耦合设计
3.5分支预测单元的设计思路
第4章 寄存器重命名单元设计
4.1寄存器重命名技术概述
4.2寄存器重命名的原理与过程概述
4.2.1发射队列前读寄存器重命名设计
4.2.2发射队列后读寄存器重命名设计
4.3寄存器重命名技术的设计空间
4.3.1寄存器重命名的范围与结构
4.3.2重命名缓冲的类型
4.3.3寄存器重命名缓冲的数量设计
4.3.4重命名缓冲的读写端口设计
4.4寄存器重命名的映射方法
4.5寄存器重命名可能的实现方案
4.6寄存器重命名的实现过程
第5章 发射队列设计
5.1发射队列的原理
5.2发射队列设计空间
5.2.1发射队列的范围与结构
5.2.2发射队列的类型与结构参数
5.3操作数获取策略
5.3.1发射队列前读寄存器与发射队列后读寄存器策略
5.3.2整型和浮点寄存器分开的操作数获取策略
5.3.3发射队列前读寄存器与发射队列后读寄存器的比较
5.4发射队列的工作机制
5.5发射队列在超标量CPU中的应用
第6章 执行单元设计
6.1算术逻辑运算单元设计
6.1.1加减法类与移位类指令的实现
6.1.2前导零检测指令实现
6.2定点乘法运算设计
6.2.1部分积生成器实现
6.2.2部分积压缩器实现
6.3单指令多数据SIMD设计
6.4旁路网络设计
第7章 浮点运算单元设计
7.1浮点数据格式与运算标准——IEEE754
7.2浮点加法运算原理与设计
7.2.1浮点加法数据流设计
7.2.2双路径算法原理与实现
7.2.3前导零预测编码原理与实现
7.2.4并行纠错树原理与实现
7.3浮点乘法运算原理与设计
7.4浮点除法开方运算原理与设计
7.4.1SRT算法原理与实现
7.4.2Newton-Raphson迭代法原理与实现
7.4.3Goldschmidt迭代法原理与实现
第8章 访存单元设计
8.1内存模型概述
8.1.1内存类型概述
8.1.2内存格式概述
8.1.3内存的访问顺序
8.1.4内存指令概述
8.2数据缓存概述
8.2.1数据缓存层次概述
8.2.2缓存技术的应用与发展
8.3数据缓存控制设计
8.3.1访存控制结构概述
8.3.2Load指令执行流程
8.3.3Store指令执行流程
8.3.4Load Store交织执行流程
8.4数据缓存预取技术
8.4.1数据缓存硬件预取原理
8.4.2数据缓存硬件预取结构
8.4.3数据缓存硬件预取模式
第9章 重排序缓冲设计
9.1重排序缓冲的原理
9.2重排序缓冲的设计空间
9.2.1重排序缓冲的范围布局与对执行结果的存储
9.2.2重排序缓冲的条目与端口数量
9.3重排序缓冲运行示例
第10章 高性能CPU设计实例:Intel P6微架构
10.1Intel P6微架构概述
10.2Intel P6微架构的流水线设计
10.3Intel P6微架构前端设计
10.3.1指令提取单元设计
10.3.2分支预测单元设计
10.3.3指令译码单元设计
10.3.4寄存器别名表设计
10.3.5分配器设计
10.4Intel P6微架构乱序执行引擎设计
10.4.1保留站设计
10.4.2重排序缓冲设计
10.4.3P6微架构乱序执行示例
10.5Intel P6微架构内存子系统设计