首页>参考读物>计算机科学与技术>计算机组织与体系结构

CPU设计实战
作者 : 汪文祥 邢金璋 著
出版日期 : 2021-03-22
ISBN : 978-7-111-67413-9
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 374
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书系统介绍了CPU设计的开发过程、各个开发环节的知识要点、开发过程中需要关注的工程问题等内容。通过学习本书,读者可以自行设计出一个具有基本功能的CPU。本书内容循序渐进,从设计CPU所需的基础知识,到设计简单流水线CPU设计、多周期流水线CPU、高速缓存,以及提升主频、运行Linux内核等进阶功能,使读者逐步掌握CPU设计的方法和设计要点。本书适合作为高校计算机及相关专业计算机组成、计算机体系结构等课程的实践教材,也可供对CPU开发感兴趣的读者阅读。

图书特色

深入剖析CPU设计与开发的关键环节
  从零开始逐步构建一个功能完善的CPU
  全面培养CPU设计的工程化思维与实战能力

图书前言

CPU,中文全称为中央处理单元,简称处理器,是现代电子计算机的核心器件。如果你想了解一台计算机是如何构建并工作的,那么深入了解CPU的设计非常有用。不过,这个美好的愿望是否会遭遇“骨感”的现实呢?毕竟一谈及CPU,大家马上想到的是英特尔(Intel)、超微半导体(AMD)、苹果(Apple)、安谋(ARM)、高通(Qualcomm)这些国际知名公司生产的产品,进而认为CPU设计是一件遥不可及的事情,普通学习者要想掌握它简直就是天方夜谭。
那么CPU设计到底难不难呢?实话说,要做出具有世界一流水平的产品确实不容易。别看CPU个头不大,它却是一个复杂度极高的系统。设计CPU挑战的是一个团队进行复杂系统工程研发的能力。不过,从20世纪60年代第一款CPU问世至今,CPU设计所涉及的基本技术已经很成熟了。同时,自动化设计工具的水平也有了大幅度提升。普通学习者想在CPU设计领域初窥堂奥,不再是无法实现的梦想。
本书作者在给新入行的工程师进行培训以及给高校学生授课的过程中,得到的反馈却并不乐观。对于大多数新手来说,设计一个入门级的CPU还是很有难度的。结合我们在研发工作中的成长经历,以及在培训和教学过程中获得的反馈,我们认为最大的难点在于设计一个CPU需要综合掌握多方面的知识,而初学者往往在“综合”这个环节遇到了困难。毫不夸张地说,对于设计一个入门级CPU所需要的各方面知识,我们都能找出很多优秀的教材、讲义、论文、代码。如果仅仅把这些资料交给一个初学者,让他通过自学这些资料来设计CPU,那么能把CPU设计出来的只有少数“悟性高”的人。我们都知道,一个国家要想提高某项体育运动的水平,关键的因素是从事该项运动的人数足够多。同理,要想在信息技术的核心领域做到世界一流,没有一大批“懂行”的技术开发人员是很难实现的。面对当前急需芯片开发人才的形势,要想在短时间内培养出大量行业急需的高素质人才,仅仅指望学习者自身“悟性高”是行不通的,需要找到行之有效的学习和训练方法。
本书作者所在的龙芯团队自主研发CPU产品近20年,在CPU设计方面积累了丰富的实战经验。在本书中,我们将结合自身的研发实践,尽可能深入浅出地介绍如何从零开始一步步设计出一个入门级的CPU,以及在这个过程中应该掌握哪些知识、遵守哪些设计原则、规避哪些设计风险、使用哪些开发技巧。我们希望这些从工程实践中总结的经验能作为高校课程教学中知识讲授环节的有益补充,帮助更多初学者更快、更扎实地掌握CPU设计的知识,具备CPU设计能力。
本书的内容安排
本书分为三个部分。第1~3章为第一部分,介绍业界进行CPU研发的过程以及硬件/云端平台、FPGA设计、Verilog等CPU设计中必要的基础知识。第4~10章为第二部分。在第二部分,我们从设计一个简单的单周期CPU开始,逐步引入流水线设计,添加指令,增加例外和中断的支持,并完成AXI总线接口、TLB MMU和高速缓存(Cache)的设计与实现,最终完成一个入门级CPU的设计。这样一个处理器核已经不再是用来玩“过家家”游戏的玩具,而是一个能够满足绝大多数实际的嵌入式应用场景需求、可以运行教学用的操作系统的真实产品。第11章为第三部分,在这里,我们会对一些进阶设计内容给出建议,例如会介绍如何在第二部分完成的产品基础上添加少量的指令和功能,再在CPU上运行Linux内核。
各章的内容简要介绍如下。
第1章介绍CPU芯片产品的研发过程,使读者对CPU产品开发的全过程有初步的认识和了解,为后续各章的学习奠定基础。
第2章介绍硬件实验平台及FPGA设计流程,包括“龙芯CPU设计与体系结构教学实验系统”硬件实验平台的介绍,以及FPGA的一般设计流程和基于Vivado工具的FPGA设计流程。
第3章介绍数字逻辑电路设计。这一章会结合CPU的实际设计开发工作,对如何使用Verilog代码进行数字逻辑电路设计给出建议,并给出CPU设计中常用的数字逻辑电路的可综合Verilog描述。此外,这一章还会介绍数字逻辑电路功能仿真中常见的错误及其调试方法。对于缺少电路仿真调试经验的初学者来说,这部分内容具有很好的指导作用。
第4章介绍简单流水线CPU设计。这一章将从一个支持19条指令的单周期CPU设计开始,先讨论如何将其改造成不考虑相关冲突的流水线,然后考虑用阻塞解决相关冲突,最后引入数据前递设计。在介绍设计方法的同时,这一章还对书中所采用的实验开发环境进行介绍,并讲解相关的仿真调试技术。
第5章介绍如何在流水线CPU中添加运算类指令。主要内容包括如何在第4章完成的简单流水线CPU基础之上添加算术逻辑运算类指令、乘除法运算类指令,以及乘除法配套的数据搬运指令。
第6章介绍如何在流水线CPU中添加转移指令和访存指令。主要内容包括如何在第5章完成的CPU基础之上添加条件分支、间接跳转和Link类转移三类转移指令,以及添加对齐与非对齐访存指令。
第7章介绍例外和中断。这一章首先对例外和中断的基本概念,以及MIPS指令系统中的例外和中断的定义进行简要的梳理,然后介绍如何在第6章完成的CPU基础之上添加对于例外和中断的支持。CPU有了这两部分的支持之后,就可以运行一些简单的嵌入式操作系统了。
第8章介绍AXI总线接口设计。这一章首先对完成CPU设计所需要的AXI总线协议的相关内容加以回顾,然后通过实现类SRAM总线接口、实现类SRAM-AXI转接桥、集成类SRAM-AXI转接桥三个阶段性任务来完成CPU中AXI总线接口的添加。
第9章介绍TLB MMU的设计。这一章首先对TLB相关的知识点进行梳理,然后通过TLB模块的设计实现、TLB相关CP0寄存器与指令的实现、将TLB模块集成到流水线中完成虚实地址转换功能并支持TLB例外这三个阶段性任务来完成整个TLB MMU的设计。
第10章介绍高速缓存(Cache)设计。这一章只介绍最简单的Cache设计,其设计任务同样被分解成Cache模块设计、Cache模块集成、CACHE指令支持三个循序渐进的阶段性任务。
第11章就一些进阶设计问题给出我们的建议,主要涉及启动内核需要补充哪些设计、如何进一步提升主频、如何进行超标量设计、如何设计动态调度机制、如何设计转移预测器、如何优化访存性能、如何设计动态调度机制以及如何添加多核支持。
本书的附录分别对本书案例相关的开发板、Vivado的安装与进阶使用、MIPS指令系统规范、在线调试等内容进行了补充介绍。
可以看到,本书主体内容是围绕着一系列进阶任务展开的。在第二部分的每一章中,都会给出有针对性的任务,同时给出与之对应的知识点与设计建议。完成本书各章“任务与实践”部分所需资源可登录华章网站(www.hzbook.com)下载。我们希望读者在时间和精力允许的情况下,先尝试根据自己的想法完成设计任务,有了自己的深入思考和亲身实践后,再来看书中给出的讲解,相信会有不一样的体会,正所谓“不愤不启,不悱不发”。之所以推荐这种比较“虐”自己的学习方式,源于作者在长期的研发工作中得到的一个感悟:好的工程师是bug“喂”出来的。对于CPU设计与开发这种工程性、实践性极强的工作来说,眼观千遍不如手过一遍。前辈们千叮咛、万嘱咐不要犯的错,非要自己错过一次才能刻骨铭心;教科书上、论文中已经写得清清楚楚的设计思路,只有自己在设计的路上碰壁无数次之后才会有如获至宝的欣喜。要想真正进入CPU设计的大门,仅仅靠坐在图书馆里看书几十个小时是远远不够的,它需要走路、吃饭甚至是睡觉的时候都在思考如何设计的那种“为伊消得人憔悴”,更需要通宵达旦调试的那份执着与坚持。
致谢
本书的写作得到了作者所任职的龙芯中科技术有限公司的大力支持。正是在多个部门的众多同事的帮助之下,我们才能从零开始写完本书并完成了所有的实验任务的开发。在此感谢他们对本书无私的支持!特别感谢龙芯公司芯片研发部IP组的全体同事、通用事业部和教育事业部的同事们,没有他们的辛勤付出,本书将无法面世。
我们非常感谢教育部高等学校计算机类专业教学指导委员会、系统能力培养教学研究专家组、机械工业出版社华章分社的各位专家和老师,感谢所有致力于我国大学生计算机系统能力培养的老师们,正是他们的满腔热情和不懈努力激励着我们写出这本书。我们衷心希望这本书能为我国大学生计算机系统能力培养事业尽一份绵薄之力。
我们还要特别感谢中国科学院大学参与计算机体系结构研讨课的同学们,以及历届“龙芯杯”全国大学生计算机系统能力培养大赛的参赛选手们,他们的反馈让这本书的内容更加充实和完整。
由于CPU设计和开发工作体系庞大、内容繁多,尽管我们已经尽力展现其中的核心内容,但难免有挂一漏万之处,恳请各位老师和读者批评、指正。

作者

上架指导

计算机\计算机组成

封底文字

长期以来,我国一直面临CPU人才短缺的困境。一方面,CPU芯片虽小,但它是一个复杂的大型系统,涉及软件、硬件的方方面面,因此设计CPU是一项工程量极大的工作。另一方面,CPU设计考验设计者综合运用知识和经验的能力,即使学过CPU设计有关的所有课程,要设计出一个完整的CPU也是很有难度的,更不用说在设计过程中要根据实践经验对各种工程细节进行权衡和考量。
本书作者从事CPU产品自主研发工作近20年,在CPU设计方面积累了丰富的经验,并一直尝试在教学过程中将这些经验转化为教学内容,探索一条培养CPU设计人才的行之有效的途径。本书是作者在这项工作上的总结。
本书特点:
按照CPU设计的实际工程过程安排内容。本书分为三个部分:第一部分从工程化的视角介绍业界进行CPU研发的过程,并且提炼出完成CPU设计应具备的FPGA设计、Verilog、软硬件平台等方面的基础知识;第二部分围绕一个基本的单周期CPU的设计,逐步引入流水线、指令、例外和中断、总线、高速缓存等部分的设计和实现,最终完成一个入门级的CPU设计;第三部分则在基本CPU的基础上进一步添加常见指令和功能,启发读者的创造力,使设计出的CPU更接近真实产品。通过这样循序渐进、层层深入的安排,引导读者逐步掌握CPU的设计方法。
融入大量工程实践经验、设计原则、开发技巧、需要规避的设计风险、常见错误等内容,帮助读者理解在真实的工程场景中应该考虑的问题,学会在各种现实条件下进行权衡,根据目标找到最优的解决方案。
涵盖设计思维、设计方法到设计工具的全面介绍,案例丰富,可操作性强。通过学习本书,读者不仅可以掌握CPU的设计方法,更能在这个过程中很好地训练工程设计思维,为今后的工作打下坚实的基础。

图书序言

人工智能、大数据、云计算、物联网、移动互联网以及区块链等新一代信息技术及其融合发展是当代智能科技的主要体现,并形成智能时代在当前以及未来一个时期的鲜明技术特征。智能时代来临之际,面对全球范围内以智能科技为代表的新技术革命,高等教育正处于重要的变革时期。目前,全世界高等教育的改革正呈现出结构的多样化、课程内容的综合化、教育模式的学研产一体化、教育协作的国际化以及教育的终身化等趋势。在这些背景下,计算机专业教育面临着重要的挑战与变化,以新型计算技术为核心并快速发展的智能科技正在引发我国计算机专业教育的变革。
计算机专业教育既要凝练计算技术发展中的“不变要素”,也要更好地体现时代变化引发的教育内容的更新;既要突出计算机科学与技术专业的核心地位与基础作用,也需兼顾新设专业对专业知识结构所带来的影响。适应智能时代需求的计算机类高素质人才,除了应具备科学思维、创新素养、敏锐感知、协同意识、终身学习和持续发展等综合素养与能力外,还应具有深厚的数理理论基础、扎实的计算思维与系统思维、新型计算系统创新设计以及智能应用系统综合研发等专业素养和能力。
智能时代计算机类专业教育计算机类专业系统能力培养2.0研究组在分析计算机科学技术及其应用发展特征、创新人才素养与能力需求的基础上,重构和优化了计算机类专业在数理基础、计算平台、算法与软件以及应用共性各层面的知识结构,形成了计算与系统思维、新型系统设计创新实践等能力体系,并将所提出的智能时代计算机类人才专业素养及综合能力培养融于专业教育的各个环节之中,构建了适应时代的计算机类专业教育主流模式。
自2008年开始,教育部计算机类专业教学指导委员会就组织专家组开展计算机系统能力培养的研究、实践和推广,以注重计算系统硬件与软件有机融合、强化系统设计与优化能力为主体,取得了很好的成效。2018年以来,为了适应智能时代计算机教育的重要变化,计算机类专业教学指导委员会及时扩充了专家组成员,继续实施和深化智能时代计算机类专业教育的研究与实践工作,并基于这些工作形成计算机类专业系统能力培养2.0。
本系列教材就是依据智能时代计算机类专业教育研究结果而组织编写并出版的。其中的教材在智能时代计算机专业教育研究组起草的指导大纲框架下,形成不同风格,各有重点与侧重。其中多数将在已有优秀教材的基础上,依据智能时代计算机类专业教育改革与发展需求,优化结构、重组知识,既注重不变要素凝练,又体现内容适时更新;有的对现有计算机专业知识结构依据智能时代发展需求进行有机组合与重新构建;有的打破已有教材内容格局,支持更为科学合理的知识单元与知识点群,方便在有效教学时间范围内实施高效的教学;有的依据新型计算理论与技术或新型领域应用发展而新编,注重新型计算模型的变化,体现新型系统结构,强化新型软件开发方法,反映新型应用形态。
本系列教材在编写与出版过程中,十分关注计算机专业教育与新一代信息技术应用的深度融合,将实施教材出版与MOOC模式的深度结合、教学内容与新型试验平台的有机结合,以及教学效果评价与智能教育发展的紧密结合。
本系列教材的出版,将支撑和服务智能时代我国计算机类专业教育,期望得到广大计算机教育界同人的关注与支持,恳请提出建议与意见。期望我国广大计算机教育界同人同心协力,努力培养适应智能时代的高素质创新人才,以推动我国智能科技的发展以及相关领域的综合应用,为实现教育强国和国家发展目标做出贡献。

智能时代计算机类专业教育计算机类专业系统能力培养2.0研究组
2020年1月

图书目录

丛书序言

前言
第1章 CPU芯片研发过程概述 1
1.1 处理器和处理器核 1
1.2 芯片产品的研制过程 2
1.3 芯片设计的工作阶段 3
第2章 硬件实验平台及FPGA设计流程 5
2.1 硬件实验平台 5
2.1.1 龙芯CPU设计与体系结构教学实验系统 5
2.1.2 龙芯计算机系统能力培养远程实验平台 7
2.2 FPGA的设计流程 8
2.2.1 FPGA的一般设计流程 9
2.2.2 基于Vivado的FPGA设计流程 10
2.2.3 Vivado使用小贴士 33
2.3 任务与实践 35
第3章 数字逻辑电路设计基础 36
3.1 数字逻辑电路设计与Verilog代码开发 36
3.1.1 面向硬件电路的设计思维方式 37
3.1.2 行为描述的Verilog编程风格 38
3.1.3 自顶向下的设计划分过程 38
3.1.4 常用数字逻辑电路的Verilog描述 39
3.2 数字逻辑电路功能仿真的常见错误及其调试方法 55
3.2.1 功能仿真波形分析 56
3.2.2 波形异常类错误的调试 60
3.3 进一步使用Vivado 66
3.3.1 定制同步RAM IP核 66
3.3.2 定制异步RAM IP核 68
3.3.3 查看时序结果和资源利用率 69
3.4 任务与实践 69
3.4.1 实践任务一:寄存器堆仿真 70
3.4.2 实践任务二:同步RAM和异步RAM仿真、综合与实现 71
3.4.3 实践任务三:数字逻辑电路的设计与调试 72
第4章 简单流水线CPU设计 74
4.1 设计一个简单的单周期CPU 75
4.1.1 设计单周期CPU的总体思路 75
4.1.2 单周期CPU的数据通路设计 76
4.1.3 单周期CPU的控制信号生成 88
4.1.4 复位的处理 91
4.2 不考虑相关冲突的流水线CPU设计 92
4.2.1 添加流水级间缓存 92
4.2.2 同步RAM的引入 93
4.2.3 调整更新PC的数据通路 96
4.2.4 不考虑相关冲突情况下流水线控制信号的设计 96
4.3 CPU设计开发环境(CPU_CDE) 97
4.3.1 快速上手CPU设计的开发环境 97
4.3.2 CPU设计开发环境的组织与结构 99
4.3.3 CPU设计开发环境使用进阶 113
4.4 CPU设计的功能仿真调试技术 117
4.4.1 为什么要用基于Trace比对的调试辅助手段 117
4.4.2 基于Trace比对调试手段的盲区及其对策 119
4.4.3 学会阅读汇编程序和反汇编代码 119
4.4.4 CPU调试中要抓取的信号以及如何看这些信号 124
4.5 指令相关与流水线冲突 125
4.5.1 处理寄存器写后读数据相关引发的流水线冲突 126
4.5.2 转移计算未完成 127
4.6 流水线数据的前递设计 127
4.6.1 前递的数据通路设计 128
4.6.2 前递的流水线控制信号调整 130
4.6.3 前递引发的主频下降 131
4.7 任务与实践 131
4.7.1 实践任务一:简单CPU参考设计调试 132
4.7.2 实践任务二:用阻塞技术解决相关引发的冲突 132
4.7.3 实践任务三:用前递技术解决相关引发的冲突 133
第5章 在流水线中添加运算类指令 134
5.1 算术逻辑运算类指令的添加 134
5.1.1 ADD、ADDI和SUB指令的添加 134
5.1.2 SLTI和SLTIU指令的添加 135
5.1.3 ANDI、ORI和XORI指令的添加 135
5.1.4 SLLV、SRLV和SRAV指令的添加 135
5.2 乘除法运算类指令的添加 136
5.2.1 调用Xilinx IP实现乘除法运算部件 136
5.2.2 电路级实现乘法器 140
5.2.3 电路级实现除法器 147
5.3 乘除法配套数据搬运指令的添加 154
5.3.1 乘法运算实现为单周期的情况 155
5.3.2 乘法运算实现为多周期流水的情况 155
5.4 任务与实践 156
第6章 在流水线中添加转移指令和访存指令 157
6.1 转移指令的添加 157
6.1.1 BGEZ、BGTZ、BLEZ和BLTZ指令 158
6.1.2 J指令 158
6.1.3 BLTZAL和BGEZAL指令 158
6.1.4 JALR指令 158
6.2 访存指令的添加 158
6.2.1 LB、LBU、LH和LHU指令的添加 158
6.2.2 SB和SH指令的添加 159
6.2.3 非对齐访存指令的说明 160
6.2.4 LWL和LWR指令的添加 162
6.2.5 SWL和SWR指令的添加 164
6.3 任务与实践 164
第7章 例外和中断的支持 166
7.1 例外和中断的基本概念 166
7.1.1 例外是一套软硬件协同处理的机制 166
7.1.2 精确例外 167
7.2 MIPS指令系统中与例外相关的功能定义 168
7.2.1 CP0寄存器 168
7.2.2 例外产生条件的判定 168
7.2.3 例外入口 170
7.2.4 MFC0和MTC0指令 170
7.2.5 ERET指令 170
7.3 流水线CPU实现例外和中断的设计要点 170
7.3.1 例外检测逻辑 170
7.3.2 精确例外的实现 172
7.3.3 CP0寄存器 173
7.3.4 CP0冲突 179
7.4 任务与实践 180
7.4.1 实践任务一:添加syscall例外支持 181
7.4.2 实践任务二:添加其他例外支持 181
第8章 AXI总线接口设计 184
8.1 类SRAM总线 184
8.1.1 主方和从方 185
8.1.2 类SRAM总线接口信号的定义 185
8.1.3 类SRAM总线的读写时序 186
8.1.4 类SRAM总线的约束 189
8.2 类SRAM总线的设计 189
8.2.1 取指设计的考虑 190
8.2.2 访存设计的考虑 195
8.3 AXI总线协议 195
8.3.1 AXI总线信号一览 195
8.3.2 理解AXI总线协议 197
8.3.3 类SRAM总线接口信号与AXI总线接口信号的关系 202
8.4 类SRAM-AXI的转接桥设计 203
8.4.1 转接桥的顶层接口 203
8.4.2 转接桥的设计要求 204
8.4.3 转接桥的设计建议 204
8.5 任务与实践 205
8.5.1 实践任务一:添加类SRAM总线支持 205
8.5.2 实践任务二:添加AXI总线支持 208
8.5.3 实践任务三:完成AXI随机延迟验证 210
第9章 TLB MMU设计 211
9.1 TLB模块的基础知识 212
9.1.1 TLB的虚实地址转换 212
9.1.2 TLB的软件访问 214
9.1.3 TLB的软硬件交互机制 215
9.2 TLB模块设计的分析 217
9.3 TLB相关的CP0寄存器与指令的实现 219
9.4 利用TLB进行虚实地址转换及TLB例外 221
9.5 任务与实践 222
9.5.1 实践任务一:TLB模块设计 222
9.5.2 实践任务二:添加TLB相关指令和CP0寄存器 224
9.5.3 实践任务三:添加TLB相关例外支持 225
第10章 高速缓存设计 226
10.1 Cache模块的设计 227
10.1.1 Cache的设计规格 227
10.1.2 Cache模块的数据通路设计 228
10.1.3 Cache模块内部的控制逻辑设计 237
10.1.4 Cache的硬件初始化问题 241
10.2 将Cache模块集成至CPU中 242
10.2.1 Cache命中情况下的CPU流水线适配 242
10.2.2 Cache缺失情况下的CPU流水线适配 243
10.2.3 Uncache访问的处理 243
10.3 CACHE指令 245
10.3.1 CACHE指令的定义 245
10.3.2 CACHE指令的实现 247
10.4 性能测试程序 247
10.4.1 Dhrystone 247
10.4.2 Coremark 250
10.5 Cache的性能 251
10.6 任务与实践 252
10.6.1 实践任务一:Cache模块设计 252
10.6.2 实践任务二:在CPU中集成ICache 254
10.6.3 实践任务三:在CPU中集成DCache 255
10.6.4 实践任务四:在CPU中添加CACHE指令 256
第11章 进阶设计 258
11.1 运行Linux内核 258
11.1.1 复杂SoC搭建 259
11.1.2 CPU的进一步完善 259
11.1.3 调试建议 260
11.2 提升主频的常用方法 261
11.2.1 平衡各级流水线的延迟 261
11.2.2 优化大概率事件的处理逻辑 261
11.2.3 用面积和功耗换时序 262
11.2.4 进一步切分流水线 262
11.3 静态双发射流水线的实现 262
11.4 动态调度机制的实现 263
11.4.1 一个双发射动态调度流水线的设计实例 263
11.4.2 动态调度中常见电路结构的RTL实现 266
11.5 硬件转移预测技术 266
11.5.1 硬件转移预测的流水线设计框架 267
11.5.2 一个轻量级转移预测器的设计规格 268
11.6 访存优化技术 269
11.6.1 store buffer 269
11.6.2 Non-blocking Cache 270
11.6.3 访存乱序执行 271
11.6.4 多级Cache 271
11.6.5 Cache预取 272
11.7 多核处理器的实现 272
11.7.1 多核互联结构 273
11.7.2 多核编号 273
11.7.3 核间中断 273
11.7.4 多核情况下的存储一致性 274
11.7.5 LL-SC指令对的访存原子性 282
附录A 龙芯CPU设计与体系结构教学实验系统 285
附录B Vivado的安装 288
附录C 简单MIPS指令系统规范 301
附录D Vivado使用进阶 345

教学资源推荐
作者: (美)Edward Ashford Lee, Sanjit Arunkumar Seshia 著
作者: [美]爱德华?阿什福德?李(Edward Ashford Lee) 等编著
作者: [美]戴维·A. 帕特森(David A. Patterson) 约翰·L. 亨尼斯(John L. Hennessy) 著
作者: 袁春风 主编武港山 吴海军 余子濠 编著
参考读物推荐
作者: (美)Elecia White 著
作者: 国际商业机器中国有限公司
作者: [丹麦]克劳斯·埃尔克(Klaus Elk) 著
作者: NVIDIA 技术服务(北京)有限公司 著