描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111724605丛书名: “芯”科技前沿技术丛书
《高性能超标量CPU:微架构剖析与设计》融合了多位一线自研高性能处理器资深工程师多年工作经验,以业界主流高性能CPU规格为基准,全面深入讲解微架构设计与优化,循序渐进、由浅入深。书中配有二维码视频,使读者身临其境,迅速、深入地掌握各种经验和技巧。本书还附赠ubuntu虚拟机,供广大学者使用。虚拟机内包含RISC-V工具链,以及多个开源RISC-V CPU项目,可以进行RISC-V CPU的仿真和学习。
《高性能超标量CPU:微架构剖析与设计》基于当前主流的高性能CPU设计规格,全面介绍了高性能超标量CPU微架构的设计,并做出对应的分析。主要内容包括业界主流高性能处理器架构及超标量流水线背景知识(第1章);CPU前端,包括指令提取单元、分支预测单元、指令译码单元的设计和优化,以及指令缓存的相关设计(第2、3章);分支预测单元的原理、设计和优化,寄存器重命名与发射队列的原理和设计(第4、5章);执行单元与浮点运算单元的设计实现(第6、7章);访存单元与数据缓存设计(第8章);重排序缓冲的原理及设计(第9章);Intel P6 CPU微架构设计实例(第10章)。微架构设计对应于指令的生命周期,为读者提供直观和清晰的视角,便于读者对高性能CPU设计深入理解。
《高性能超标量CPU:微架构剖析与设计》提供了高清学习视频,读者可以直接扫描二维码观看。
《高性能超标量CPU:微架构剖析与设计》可作为从事高性能CPU相关研发工作专业人员的参考书,或用作高等院校计算机及集成电路相关专业研究生和高年级本科生的教学参考用书,也可供对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.2×86指令格式概述
2.8.3×86指令译码设计
第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微架构内存子系统设计
CPU被誉为“人类科技皇冠的明珠”,数十年来无数从业者争相撷取。在半导体工业的发展历程中,“奔腾之芯”Intel、“蓝色巨人”IBM、“性能之王”DEC、“落寞贵族”Motorola等巨头都曾是CPU界的弄潮者,命途多舛的Sun Microsystems也曾称雄一时。后来的AMD与Intel双雄争霸、Apple异军突起、ARM后来居上以及RISC-V崭露头角也为业内人士津津乐道,不断吸引着有志之士投身于此。
在计算机体系结构领域,无论对于在校生还是从业者,加州大学伯克利分校的David Patterson博士和斯坦福大学的John Hennessy博士的两部经典著作Computer Organization and Design: The Hardware/Software Interface和Computer Architecture: A Quantitative Approach都是主要参考书。笔者在求学时,这两部著作是初阶和高阶核心课程的主要参考书,主讲课程的Gandhi Puvvada教授熟稔两部著作的全部版本,被学生戏称比作者还懂自己的著作。当笔者进入业界后,导师建议的也是去阅读Computer Architecture: A Quantitative Approach一书。然而,从笔者的视角来看,经典著作与业界实际微架构设计之间是“道”与“术”的关系。“道”是本源,“术”是法门,“道”可以在微观上以不同的“术”来呈现,但是求“道”需要从“术”入手,再由“术”印证“道”,方能融会贯通。在工程实践中,从一个循序渐进的个体角度看,也许在相当长的一段时间内更多地需要引导具体实操的“术”而非高屋建瓴的“道”,直到经验积累到一定的程度之后能够回过头思考总结归纳出一套方法学。南加州大学教授Michel Dubois博士是IEEE会士,笔者认为他的著作Parallel Computer Organization and Design看来是一部非常优秀的讲解CPU设计的书籍,内容详实逻辑清晰。然而,笔者在校时Michel Dubois博士开设的课程并没有得到学生的追捧,究其原因有其个人风格的关系,但是归根结底还是偏重于高屋建瓴,这有可能会让学生对于CPU设计的“道”和“术”无法顺畅地相互印证。
笔者才疏学浅,不敢称“融会贯通”,然而这并不妨碍笔者根据自身的经验和思考为读者提供一种CPU微架构设计的视角,交流一种CPU微架构设计的思路和方法学。毫无疑问,学习CPU微架构设计的一个不错的入门方式是读架构设计文档和源代码。然而,芯片设计领域相对来讲较为封闭,很难仅凭公开材料或者开源代码就接触到核心的设计。对于绝大多数人来说,超越前人之前的一个必经阶段就是模仿和学习,在CPU设计领域也是同理,在对现有设计理解透彻之前就谈重构创新无异于空中楼阁。所谓“图难于其易,为大于其细”,笔者籍由本书,为读者展现笔者所理解的CPU微架构设计。希望读者阅读完本书后,能够自行印证业界各类相关文献,理解并逐渐找到适合自己的CPU设计方法。同时笔者和写作团队的同事们也希望通过本书的写作和出版,能够在时代的浪潮中尽一些绵薄之力,做一点微小的工作。
本书的内容分为10章,第1章介绍业界主流高性能处理器架构及超标量流水线背景知识;第2~9章对应于CPU指令的生命周期,按顺序分别展开讲解CPU各个功能单元的架构设计;第10章对经典的x86架构CPU微架构Intel P6的设计进行了详细剖析,便于读者通过设计实例来印证前9章的相关内容。具体如下所示。
第1章由李东声和任子木编写,介绍了复杂指令集与精简指令集,超标量CPU相关的基本概念,包括流水线技术、指令的顺序执行与乱序执行,以及超长指令字设计。同时介绍了当前主流的CPU指令集,从宏观上为读者搭建出CPU设计的一个大体框架,便于后续内容的理解。
第2章和第3章由李东声编写,介绍了构成超标量CPU前端的指令提取单元、译码单元,以及分支预测单元的微架构设计。其中,在介绍指令提取单元设计的同时,着重介绍了指令缓存的基本概念、分类和替换策略选择、性能衡量标准、组织方式与预取设计,而后介绍指令提取单元微架构和数据流设计。在分支预测单元的介绍中,首先介绍了分支预测的原理,之后通过分支跳转方向预测与分支跳转目标预测两个部分对分支预测单元的设计进行介绍,然后给出分支预测单元的微架构设计以及优化思路。
第4章和第5章由孙小明编写,介绍了超标量CPU乱序引擎的核心组件——寄存器重命名与发射队列的设计。在寄存器重命名单元的介绍中,对寄存器重命名的原理、过程、映射方法和实现过程,以及微架构设计空间进行了阐述,同时给出了实现方案。在发射队列的介绍中,对发射队列的原理和工作机制、操作数获取策略,以及微架构设计空间进行了阐述。
第6章和第7章由任子木编写,浮点运算单元独立于执行单元另起一章。首先介绍了执行单元中算术逻辑运算单元、定点乘法、SIMD及旁路网络设计,之后介绍了浮点数据格式和运算标准,以及浮点运算单元中的加法、乘法、除法和开方的运算原理及硬件微架构设计。
第8章由梧桐编写,介绍了访存单元的设计。内容从内存模型和数据缓存展开,进一步介绍了一级数据缓存的控制以及硬件预取设计。
第9章由孙小明编写,对重排序缓冲的原理以及微架构设计空间进行了阐述,然后给出了一个重排序缓冲运行的实例。
第10章由李东声编写,对Intel P6微架构进行了深度分析,通过经典的高性能超标量CPU设计来帮助读者对第2~9章中介绍的每一部分微架构的设计进行融会贯通,从宏观上理解超标量乱序CPU的工作流程和设计优化思路。
全书的统稿由李东声负责。内容讲解资源由任子木负责。
在本书的规划和编写过程中,得到了黄静、李伟、杨巍等业界前辈的指导和帮助;王晓天、杨宁、 滕宏峰、余浩等同事对内容提出了许多宝贵的意见和建议;机械工业出版社的李培培编辑全程给予了极大的关照和支持,这里由衷表示感谢。
CPU设计是一个宏大而复杂的工程,笔者水平有限,也深感生有涯而知无涯,写作过程中时常发觉很多知识点没能详细展开阐述。同时,笔者参阅了许多业界前辈和同仁的著作,包括且不限于专著、论文及技术博客等网络资源,在此对原作者表示敬意。在笔者自我学习之余深感有所收获,读者也可以自行查阅相关文献进行学习和相互印证。如果参考文献列表有所疏漏,在此深表歉意。对于本书内容中的疏漏和错误,敬请读者批评指正。
李东声
马恺声 清华大学助理教授、北极雄芯创始人兼首席科学家
CPU是所有通用计算的核心。本书从指令入手,以样例为抓手,同时辅助穿插整个CPU发展历史中的起伏历程,深入浅出讲解高性能超标量CPU的关键技术,是国内少见的CPU专业书籍之一,相信能对有志于在高性能CPU领域进一步深造的读者有所帮助。
李伟 北京数渡信息科技首席架构师/研发高级总监、清华创新领军工程博士生
本书针对高性能超标量CPU进行讲解,从微架构的角度阐述了CPU核的主要组成部分,内容丰富全面,深入浅出,并有实际的工程设计实例,有很强的指导意义和参考作用。对于从事CPU微架构设计的读者来说,是一本难得的中文参考书。
姚永斌 北京奕斯伟计算云处理器设计团队主管、《超标量处理器设计》作者
随着RISC-V的兴起,国内的CPU设计进入了蓬勃发展、百花齐放的时期,有越来越多的公司在向着高性能CPU的高地发起冲锋,而本书正好可以帮助读者更进一步地了解现代高性能CPU处理器内部的工作机制。作者根据自己多年的工作经验,把在高性能CPU设计中需要考虑到的知识点都进行了详细的描述,内容翔实,对于有志进入高性能CPU设计领域的读者来说,是一本难得的中文参考书。
杨巍 字节跳动CPU研发负责人
非常高兴看到本书出版,这是一本为CPU设计工程师编写的专注于处理器微架构的中文参考书,通过真实世界的实例,描述了处理器微架构的设计空间,以及如何分析、度量、取舍实现工作的系统。对于未来从事高性能处理器微架构研究实现的读者来说,本书无疑是好的一个起点。
刘宏伟 中科院计算技术研究所高级工程师
作为一个多年来一直从事CPU设计的专业人员,看到本书出版,内心非常欣喜。市面上的书籍基本上都是从教学视角或者初学者视角介绍CPU设计,而本书真正做到了从一个专业CPU设计工程师的视角来阐述CPU架构的设计理念和思考方法。这种专业性表现在以下两个方面:一方面是模块设计的深度上,微架构特性基本达到当前主流处理器的设计水平; 另一方面是不同体系结构间广度的兼顾上,既没有因面面俱到而失去重点,又给予了适当兼顾而不失偏颇。本人深耕CPU设计多年,有幸深入地剖析过多种CPU的结构,看到本书内容仍倍感亲切。因此,本书既可作为CPU爱好者深入了解处理器设计的参考读物,也可以作为从业人员仔细品读的领域著作。
评论
还没有评论。