新書推薦:
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
根源、制度和秩序:从老子到黄老学(王中江著作系列)
》
售價:NT$
550.0
《
索恩丛书·北宋政治与保守主义:司马光的从政与思想(1019~1086)
》
售價:NT$
345.0
《
掌故家的心事
》
售價:NT$
390.0
《
农为邦本——农业历史与传统中国
》
售價:NT$
340.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:NT$
614.0
《
无法忍受谎言的人:一个调查记者的三十年
》
售價:NT$
290.0
|
編輯推薦: |
采用龙芯团队推出的LoongArch指令系统,全面展现指令系统设计的发展趋势从硬件工程师的角度理解软件,从软件工程师的角度理解硬件优化篇章结构与教学体验,全书开源且配有丰富的教学资源
|
內容簡介: |
本书由国内从事微处理器设计的一线科研人员编写而成。作者从微处理器设计的角度出发,充分考虑计算机体系结构的学科完整性,强调体系结构、基础软件、电路和器件的融会贯通。全书共分12章,包括指令系统结构、计算机硬件结构、CPU微结构、并行处理结构、计算机性能分析等主要内容,重点放在作为软硬件界面的指令系统结构,以及包含CPU、GPU、南北桥协同的计算机硬件结构上。 本书可作为高等院校“计算机体系结构”课程的本科生教材,同时也适合相关专业研究生或计算机技术人员参考阅读。
本书特色
系统性。计算机系统结构研究的是“系统”而非“结构”,既要上知应用程序、编译程序和操作系统等“天文”知识,还要下知逻辑、电路和集成电路工艺等“地理”知识,把体系结构、基础软件、电路和器件融会贯通,才能做好体系结构设计。基础性。计算机体系结构千变万化,但几十年发展下来,沉淀下来的原理性的东西不多,作者对计算机体系结构技术进行了仔细的鉴别、分析、选择,仅将一些内在的、本质的东西写入教材。实践性。计算机体系结构是实践性很强的学科,作者强调要设计在“硅”上实现而非“纸”上实现的体系结构。
|
關於作者: |
胡伟武
1991年毕业于中国科学技术大学计算机系,随后免试进入中科院计算所直接攻读博士学位,师从著名计算机专家夏培肃院士,1996年3月博士毕业并获工学博士学位。
现任中国科学院计算技术研究所研究员、博士生导师,龙芯中科技术股份有限公司董事长、龙芯CPU首席科学家。全国青联委员,第十一届全国人大代表,党的十八大、十九大代表。主要研究方向为计算机系统结构和微处理器设计,作为总设计师成功研制多款国产龙芯高性能通用CPU。主持国家自然科学基金、国家863高技术研究、国家“核高基”科技重大专项、中国科学院知识创新工程等项目10余项。出版专著3部,在国内外期刊和会议上发表论文70多篇,申请专利62件。曾先后获“中科院科技进步二等奖”“中科院院长奖学金特别奖”“全国首届优秀博士论文奖”“中国科学院第五届优秀青年”“中国科学院第七届杰出青年”“全国青年五四奖章”等奖励。
|
目錄:
|
丛书序言
推荐序
第3版自序
第2版自序
前言
部分 引言
第1章 引言2
1.1 计算机体系结构的研究内容2
1.1.1 一以贯之2
1.1.2 什么是计算机5
1.1.3 计算机的基本组成6
1.2 衡量计算机的指标9
1.2.1 计算机的性能9
1.2.2 计算机的价格11
1.2.3 计算机的功耗12
1.3 计算机体系结构的发展13
1.3.1 摩尔定律和工艺的发展15
1.3.2 计算机应用和体系结构19
1.3.3 计算机体系结构发展20
1.4 体系结构设计的基本原则22
1.4.1 平衡性22
1.4.2 局部性24
1.4.3 并行性24
1.4.4 虚拟化25
1.5 本章小结26
习题26
第二部分 指令系统结构
第2章 指令系统30
2.1 指令系统简介30
2.2 指令系统设计原则30
2.3 指令系统发展历程32
2.3.1 指令内容的演变32
2.3.2 存储管理的演变34
2.3.3 运行级别的演变36
2.4 指令系统组成37
2.4.1 地址空间37
2.4.2 操作数39
2.4.3 指令操作和编码41
2.5 RISC指令集比较43
2.5.1 指令格式比较43
2.5.2 寻址方式比较44
2.5.3 公共指令功能44
2.5.4 不同指令系统的特色46
2.6 C语言的机器表示47
2.6.1 过程调用48
2.6.2 流程控制语句49
2.7 本章小结52
习题52
第3章 特权指令系统53
3.1 特权指令系统简介53
3.2 异常与中断56
3.2.1 异常分类56
3.2.2 异常处理58
3.2.3 中断60
3.3 存储管理62
3.3.1 存储管理的原理63
3.3.2 TLB的结构和使用64
3.3.3 TLB地址翻译相关异常的处理70
3.4 本章小结73
习题74
第4章 软硬件协同75
4.1 应用程序二进制接口75
4.1.1 寄存器约定76
4.1.2 函数调用约定78
4.1.3 进程虚拟地址空间82
4.1.4 栈帧布局84
4.2 六种常见的上下文切换场景87
4.2.1 函数调用87
4.2.2 异常和中断88
4.2.3 系统调用89
4.2.4 进程91
4.2.5 线程92
4.2.6 虚拟机93
4.2.7 六种上下文切换场景的对比94
4.3 同步机制94
4.3.1 基于互斥的同步机制95
4.3.2 非阻塞的同步机制96
4.4 本章小结97
习题97
第三部分 计算机硬件结构
第5章 计算机组成原理和结构100
5.1 冯·诺依曼结构100
5.2 计算机的组成部件101
5.2.1 运算器101
5.2.2 控制器103
5.2.3 存储器105
5.2.4 输入/输出设备110
5.3 计算机系统硬件结构发展113
5.3.1 CPU-GPU-北桥-南桥四片结构113
5.3.2 CPU-北桥-南桥三片结构114
5.3.3 CPU-弱北桥-南桥三片结构114
5.3.4 CPU-南桥两片结构115
5.3.5 SoC单片结构116
5.4 处理器和IO设备间的通信116
5.4.1 IO寄存器寻址117
5.4.2 处理器和IO设备之间的同步117
5.4.3 存储器和IO设备之间的数据传送119
5.4.4 龙芯3A3000 7A1000桥片系统中的CPU、GPU、DC通信120
5.5 本章小结122
习题122
第6章 计算机总线接口技术124
6.1 总线概述125
6.2 总线分类125
6.3 片上总线126
6.4 内存总线132
6.5 系统总线139
6.5.1 HyperTransport总线140
6.5.2 HT包格式143
6.6 设备总线145
6.6.1 PCIE总线145
6.6.2 PCIE包格式146
6.7 本章小结147
习题148
第7章 计算机系统启动过程分析149
7.1 处理器核初始化149
7.1.1 处理器复位150
7.1.2 调试接口初始化152
7.1.3 TLB初始化156
7.1.4 Cache初始化157
7.2 总线接口初始化160
7.2.1 内存初始化160
7.2.2 IO总线初始化161
7.3 设备的探测及驱动加载162
7.4 多核启动过程167
7.4.1 初始化时的多核协同167
7.4.2 操作系统启动时的多核唤醒168
7.4.3 核间同步与通信169
7.5 本章小结170
习题170
第四部分 CPU微结构
第8章 运算器设计172
8.1 二进制与逻辑电路172
8.1.1 计算机中数的表示172
8.1.2 MOS晶体管工作原理178
8.1.3 CMOS逻辑电路180
8.2 简单运算器设计188
8.2.1 定点补码加法器188
8.2.2 减法运算实现193
8.2.3 比较运算实现194
8.2.4 移位器194
8.3 定点补码乘法器195
8.3.1 补码乘法器196
8.3.2 Booth乘法器198
8.3.3 华莱士树202
8.4 本章小结206
习题206
第9章 指令流水线208
9.1 单周期处理器208
9.2 流水线处理器210
9.3 指令相关和流水线冲突213
9.3.1 数据相关引发的冲突及解决办法214
9.3.2 控制相关引发的冲突及解决办法216
9.3.3 结构相关引发的冲突及解决办法219
9.4 流水线与异常处理219
9.5 提高流水线效率的技术220
9.5.1 多发射数据通路220
9.5.2 动态调度221
9.5.3 转移预测225
9.5.4 高速缓存229
9.6 本章小结231
习题232
第五部分 并行处理结构
第10章 并行编程基础236
10.1 程序的并行行为236
10.1.1 指令级并行性236
10.1.2 数据级并行性237
10.1.3 任务级并行性237
10.2 并行编程模型238
10.2.1 单任务数据并行模型…238
10.2.2 多任务共享存储编程模型238
10.2.3 多任务消息传递编程模型239
10.2.4 共享存储与消息传递编程模型的编程复杂度239
10.3 典型并行编程环境242
10.3.1 数据并行SIMD编程242
10.3.2 POSIX编程标准244
10.3.3 OpenMP标准247
10.3.4 MPI消息传递编程接口253
10.4 本章小结259
习题259
第11章 多核处理结构260
11.1 多核处理器的发展演化260
11.2 多核处理器的访存结构263
11.2.1 通用多核处理器的片上Cache结构263
11.2.2 存储一致性模型265
11.2.3 Cache一致性协议267
11.3 多核处理器的互连结构272
11.4 多核处理器的同步机制278
11.5 典型多核处理器282
11.5.1 龙芯3A5000处理器282
11.5.2 Intel SandyBridge架构…284
11.5.3 IBM Cell处理器286
11.5.4 NVIDIA GPU287
11.5.5 Tile64处理器289
11.6 本章小结289
习题291
第六部分 系统评价与性能分析
第12章 计算机系统评价和性能分析294
12.1 计算机系统性能评价指标294
12.1.1 计算机系统常用性能评价指标295
12.1.2 并行系统的性能评价指标299
12.2 测试程序集300
12.2.1 微基准测试程序301
12.2.2 SPEC CPU基准测试程序310
12.2.3 并行系统基准测试程序316
12.2.4 其他常见的基准测试程序集319
12.3 性能分析方法320
12.3.1 分析建模的方法322
12.3.2 模拟建模的方法和模拟器322
12.3.3 性能测量的方法325
12.4 性能测试和分析实例334
12.4.1 SPEC CPU基准测试程序的分值对比335
12.4.2 微结构相关统计数据338
12.4.3 基础性能参数344
12.5 本章小结348
习题348
总结:什么是计算机体系结构350
参考文献359
|
內容試閱:
|
推 荐 序
“计算机体系结构”(Computer Architecture)也称为“计算机系统结构”,是计算机科学与技术一级学科下重要的二级学科。“计算机体系结构”是研究怎么造计算机而不是怎么用计算机的学科。我国学者在如何用计算机的某些领域的研究已走到世界前列,例如近很红火的机器学习领域,中国学者发表的论文数和引用数都已超过美国,位居世界。但在如何造计算机的领域,参与研究的科研人员较少,科研水平与国际上还有较大差距。2016年国家自然科学基金会计算机学科的面上项目共有4863项申请,但申报“计算机体系结构”(F0203)方向的项目只有22项,占总申报项目的0.45%,而申报计算机图像与视频处理方向的项目有439项。
做计算机体系结构方向研究的科研人员较少与大学及研究生的课程教育直接相关。计算机体系结构是工程性很强的学科,而我国的大学老师大多没有机会实际参与设计CPU和操作系统,对计算机的软硬件工作过程不能融会贯通,教学时只能照本宣科,学生只学到一些似懂非懂的名词概念,难以培养“造计算机”的兴趣。目前全国许多高校使用从国外翻译的体系结构教材,John L.Hennessy和David A.Patterson合著的《计算机体系结构:量化研究方法》已经不断改版至第5版,被认为是计算机体系结构的经典教材,但此书有近千页之厚,本科生未必都能接受。国内也出版了不少体系结构(系统结构)方面的教材,但多数兼顾了研究生和参考书的需求。因此,迫切需要一本为本科生量身定制的计算机体系结构精品教材。
摆在读者面前的这本《计算机体系结构基础》就是为满足本科教育而编著的精品教材。过去出版的体系结构教材大多是“眼睛向上”编写的,作者既考虑了做本科教材的需求,又考虑了参考书的需求,为了体现参考书的技术前瞻性,往往会包含一些未经受考验的新技术。而本书是作者在2011年已经出版的硕士生教材《计算机体系结构》的基础上,“眼睛向下”编著的本科生教材,多年的研究生授课经历使作者十分明确本科生应学习哪些体系结构的基础知识。凡写进这本教科书的内容都是本科生应该掌握的知识,不会为追求时髦而增加额外的内容。
与过去出版的计算机体系结构教科书相比,本书有以下几个特点:
个特点是特别重视知识的基础性。计算机发明至今已经70余年,曾经用来造计算机的技术多如牛毛,计算机期刊与会议上发表的文章数以万计,但是许多技术如过往烟云,已经被丢进历史的垃圾堆。我在美国读博士时,一位很有权威的教授讲了一个学期计算机体系结构课,基本上都是讲并行计算机的互连(Interconnection)结构,如蝶形(Butterfly)互连、超立方体(Hypercube)互连、胖树(Fat Tree)互连等,现在这些内容已不是计算机界普遍关心的问题。20世纪90年代,计算机体系结构国际会议(ISCA)几乎成了专门讨论缓存(Cache)技术的会议,但没有几篇文章提出真正可用的缓存技术,以至于计算机界的权威John L.Hennessy教授1997年说出这样的话:“把1990年以来计算机系统结构方面所有的论文都烧掉,对计算机系统结构没有任何损失。”本书作者在“自序”中写道:“计算机体系结构千变万化,但几十年发展沉淀下来的原理性的东西不多,希望从体系结构快速发展的很多现象中找出一些内在的、本质的东西。”在《实践论》中归纳总结了十六个字:“去粗取精,去伪存真,由此及彼,由表及里。”本书作者遵循这十六个字的精神,对几十年的计算机体系结构技术做了认真的鉴别、选择和对比、分析,写进教科书的内容是经得起历史考验的基础知识。
第二个特点是强调“一以贯之”的系统性。“计算机系统结构”的关键词是“系统”而不是“结构”,国外做计算机系统结构研究的学者介绍自己时往往是说:“我是做系统(System)研究的。”计算机专业的学生应具有系统层面的理解能力,能站在系统的高度解决应用问题。对计算机系统是否有全面深入的了解是区别计算机专业人才和非专业人才的重要标志。长期以来我们采用“解剖学”的思路进行计算机教学,按照硬件、软件、应用等分类横切成几门相对独立的课程,使得计算机系毕业的学生对整个计算机系统缺乏完整的理解。如果问已经学完全部计算机课程的学生,在键盘上敲一个空格键到屏幕上的PPT翻一页,在这一瞬间计算机中哪些硬件和软件在运转,如何运转,可能绝大多数学生都讲不清楚。本书有若干章节专门讲述计算机的软硬件协同、计算机系统的启动过程等,着力培养学生的全局思维能力。为了使学生一开始就对计算机有全局的框架性认识,此教材的第1章对全书内容做了尽可能通俗易懂的描述,这是追求系统性教学的刻意安排。本书作者强调:“一个计算机体系结构设计人员就像一个带兵打仗的将领,要学会排兵布阵。要上知天文、下知地理,否则就不会排兵布阵,或者只会纸上谈兵地排兵布阵,只能贻误军国大事。”这里讲的“天文”是指应用程序、编译程序和操作系统,“地理”是指逻辑、电路和工艺。只有上下贯通,才能真正掌握计算机体系结构。
第三个特点是强调能在硅上实现的实践性。由于CMOS电路集成度的指数性提高,一块CPU芯片已可以集成几十亿晶体管。计算机体系结构的许多知识现在都体现在CPU中,因此从某种意义上讲,不懂CPU设计就不能真正明白计算机体系结构的奥妙。CPU的结构通常称为微体系结构,主要在硕士课程中讲授,但本科生的体系结构课程也应学习在硅上能实现的技术。陆游诗云:“纸上得来终觉浅,绝知此事要躬行。”只会P2P的学习(从Paper到Paper的学习)往往学不到真本事,只有后能“躬行”到硅上的知识才是过硬的知识。本书作者有十几年从事CPU设计的经验,能正确区分哪些是纸上谈兵的知识,哪些是能落实到硅上的知识,这是他们独特的优势。在中国科学院大学的本科教学中,计算机体系结构课程还辅以高强度的实验课,实践证明这对学生真正理解课堂学到的知识大有好处。
本书内容选材还需要经过课堂教学的长期检验,需要不断听取学生的反馈意见和同行的批评建议,希望经过几年的完善修改,本书能真正成为受到众多大学普遍欢迎的精品教材。
FOREWORD 第3版自序
在中国科学院大学讲授“计算机体系结构基础”课程五年以来,发现了《计算机体系结构基础》教材不少值得改进的地方。除了修订第2版的一些错误,这次第3版的主要改进内容包括以下三个方面。
一是加强计算机软硬件协同方面的内容。如第4章中对应用程序二进制接口(Application Binary Interface,简称ABI)的描述更加清楚,增加了操作系统中关于用户程序地址空间分布的内容,并介绍了函数调用、例外处理、系统调用、线程切换、进程切换和虚拟机切换等六种场景的现场保留和恢复过程,希望读者可以通过上述过程更深入地了解计算机系统软硬件的配合。又如第7章在介绍计算机系统启动过程时把串口作为一只“麻雀”进行解剖,希望读者可以借此了解CPU对IO设备的访问与对内存的访问的不同。这样的地方还有不少。
二是对部分内容进行调整以使之更完整和适用。如第3章的特权指令系统部分,从例外、中断、存储管理等方面更详细地分析了操作系统内核专用的特权指令系统的内容。第12章的性能分析部分,在详细介绍Perf性能分析工具的基础上去掉了对Oprofile性能分析工具的介绍,适当缩减了性能测试与分析的具体案例内容,突出基准程序性能测试、Perf微结构数据统计和微测试程序(Microbench)等不同角度的方法与工具在性能分析工作中的应用。
三是在指令系统举例时使用LoongArch指令系统而不是MIPS指令系统。LoongArch是由龙芯团队在2020年推出的新型RISC指令系统。该指令系统摒弃了传统指令系统中部分不适应当前软硬件设计技术发展趋势的陈旧内容,吸纳了近年来指令系统设计领域诸多先进的技术发展成果,有助于硬件实现高性能低功耗的设计,也有利于软件的编译优化以及操作系统、虚拟机的开发。
一门课程的成熟往往需要十年时间。上述根据五年的教学经验进行的修改肯定还不够,需要在未来的教学工作中继续进行改进。
胡伟武
2021年6月29日
FOREWORD 第2版自序
计算机专业有几门“当家”的核心课程是关于“如何造计算机”的,硬件方面以计算机组成原理和计算机体系结构为主,软件方面以操作系统和编译原理为主。其他如离散数学、编程语言、数据结构、数字逻辑等计算机专业的学科基础课也很重要,除了计算机专业,其他使用计算机的专业如自动化专业、电子专业也在学。
我从2001年就开始从事龙芯处理器的研发,并从2005年起在中国科学院大学教授计算机体系结构课程,其间接触了很多从各高校计算机专业毕业的学生,发现他们在大学时主要练就了诸如编程等“怎么用计算机”的本领,对操作系统和体系结构这种“如何造计算机”的课程,或者没有系统学习,或者只学到一些概念。比如对于“从打开电源到计算机启动再到登录界面”或者“从按一下空格键到翻一页PPT”这样的过程,如果问及计算机系统内部包括CPU、南北桥、GPU在内的硬件以及包括操作系统和应用程序在内的软件是如何协同工作的,计算机专业毕业的学生几乎没有人说得明白。
我1986年到中国科学技术大学计算机系学习的时候,教授我计算机体系结构课程的老师都是亲自造过计算机的,他们能够讲明白计算机软硬件工作的原理性过程。改革开放以来,我国主要使用国外的CPU和操作系统“攒”计算机,学术界也几乎不从事CPU和操作系统这种核心技术的研究工作,全国两千多个计算机专业主要使用国外教材或者翻译的国外教材教授学生“如何造计算机”。由于计算机体系结构和操作系统都是工程性很强的学科,而任课老师却没有机会参与设计CPU和操作系统,因此教学生的时候难免照本宣科,使学生只学到一些概念,难以对计算机的软硬件工作过程融会贯通。
发展以CPU和操作系统为代表的自主基础软硬件,是国家的战略需求,而人才培养是满足该战略需求的必要条件。因此,自2005年开始,我便结合龙芯CPU的实践在中国科学院研究生院开设计算机体系结构课程,并于2011年依托清华大学出版社出版了《计算机体系结构》教材。2014年,中国科学院大学设立并开始招收本科生,要求我也给本科生讲授计算机体系结构课程。刚开始觉得难度很大,因为计算机体系结构非常复杂,给研究生讲清楚都不容易,给本科生讲清楚就更难。
经过反复思考,我觉得可以利用这个机会,建设包括本科生、硕士生、博士生在内的计算机体系结构课程体系,由浅入深地培养“造计算机”的人才。为此,我们计划编写一套分别面向本科生、硕士生、博士生的“计算机体系结构”课程教材。
面向本科生的教材为《计算机体系结构基础》。主要内容包括:作为软硬件界面的指令系统结构,包含CPU、GPU、南北桥协同的计算机硬件结构,CPU的微结构,并行处理结构,计算机性能分析等。上述面面俱到的课程安排主要是考虑到体系结构学科的完整性,但重点是软硬件界面及计算机硬件结构,微结构则是硕士课程的主要内容。
面向硕士生的教材为《计算机体系结构》。主要介绍CPU的微结构,包括指令系统结构、二进制和逻辑电路、静态流水线、动态流水线、多发射流水线、运算部件、转移猜测、高速缓存、TLB、多核对流水线的影响等内容。
面向博士生的教材为《高级计算机体系结构》。中科院计算所的“高级计算机体系结构”课程是博士生精品课程的一部分,主要强调实践性,使学生通过设计真实的(而不是简化的)CPU,运行真实的(而不是简化的)操作系统,对结构设计、物理设计、操作系统软件做到融会贯通。
在此基础上,还将推出计算机体系结构实验平台和实验教材。
这套教材的编写突出以下特点:一是系统性,体系是“系统的系统”,很难脱离软硬件环境纯粹就体系结构本身讲解计算机体系结构,需要对体系结构、基础软件、电路和器件融会贯通;二是基础性,计算机体系结构千变万化,但几十年发展沉淀下来的原理性的东西不多,希望从体系结构快速发展的很多现象中找出一些内在的、本质的东西;三是实践性,计算机体系结构是实践性很强的学科,要设计在“硅”上运行而不是在“纸”上运行的体系结构。
胡伟武
PREFACE 前 言
计算机体系结构是一门比较抽象的学科,很有可能经过一个学期的学习只学到一些概念。本课程教学希望达到三个目的。一是建立学生的系统观。计算机系统的复杂性体现在计算机中各部分之间的关系非常复杂。如苹果iPhone的CPU性能不如Intel的X86 CPU,但用户体验明显好于桌面计算机,这就是系统优化的结果。希望学生学完这门课程后能够从系统的角度看待计算机,不再简单地以主频论性能,或者简单地把用户体验归结于CPU的单项性能。二是掌握计算机体系结构的若干概念。计算机体系结构中的概念很多,虽然抽象,但是必须掌握。比如计算机体系结构的四大设计原则,指令系统结构,处理器流水线,等等。三是掌握一些重点知识并具备一些重点能力。主要包括:计算机的ABI接口,存储管理中的虚实地址转换过程,通过IO地址空间扫描进行IO设备初始化,计算机系统的启动过程,重要总线如AXI总线、内存总线、PCIE总线的信号及其时序,用Verilog编写RTL代码的能力,先行进位加法器的逻辑,两位一乘补码乘法器逻辑,用Perf进行性能分析的能力,等等。
本书部分为引言,介绍体系结构研究内容、主要性能指标、发展趋势以及设计原则。计算机体系结构(Computer Architecture)是描述计算机各组成部分及其相互关系的一组规则和方法,是程序员所看到的计算机属性。计算机体系结构的主要研究内容包括指令系统结构(Instruction Set Architecture,简称ISA)和计算机组织结构(Computer Organization)。微体系结构(Micro-architecture)是微处理器的组织结构,并行体系结构是并行计算机的组织结构。冯·诺依曼结构的存储程序和指令驱动执行原理是现代计算机体系结构的基础。
本书第二部分介绍以指令系统结构为核心的软硬件界面,包括指令系统总体介绍、指令集结构、异常与中断、存储管理、软硬件协同等内容。贯穿该部分内容的一个核心思想是建立高级语言(如C语言)与指令系统结构的关系。例如,C语言的语句与指令系统的关系,算术语句可直接映射为相关运算指令,for循环映射为条件跳转,switch语句映射为跳转索引和跳转表等;操作系统中地址空间的组织与指令访问内存的关系,静态全局变量映射到地址空间的静态数据区,局部变量映射到堆栈区,动态分配的数据则映射到进程空间的堆中;操作系统中进程和线程的表示及切换在指令和地址映射方面的具体体现;敲击键盘和移动鼠标等事件如何通过指令系统的外部中断传递到CPU,以及指令系统对操作系统处理外部中断的必要支持;等等。
本书第三部分介绍计算机硬件结构。该部分的核心思想是搞清楚计算机内部,包括CPU、GPU、内存、IO之间是如何协同完成软件规定的各种操作的。例如,在计算机开机过程中,BIOS完成硬件初始化后把操作系统从硬盘拷贝到内存执行的过程中南北桥与CPU是如何配合的;CPU和GPU是如何协同操作完成计算机屏幕显示的,在显示过程中哪些活是CPU干的,哪些活是GPU干的;以太网接口、USB接口等各种接口的驱动在硬件上的具体体现是什么;等等。
本书第四部分介绍微结构。该部分的核心思想是建立指令系统和晶体管之间的“桥梁”。微结构是决定CPU性能的关键因素。由于微结构是“计算机体系结构”硕士课程的主要内容,因此本科课程的微结构内容在追求系统地介绍有关概念的基础上,重点把先行进位加法器和五级静态流水线讲透,希望学生通过对先行进位加法器、五级静态流水线、简单转移猜测和高速缓存原理的深入了解,举一反三地了解微结构的实现方式。微结构中动态流水线、乱序执行和多发射等内容只做概念性的介绍。
本书第五部分介绍并行处理结构。应用程序的并行行为是并行处理的基础,现代计算机通过多层次的并行性开发来提高性能。并行处理编程模型包括消息传递模型(如MPI)和共享存储模型(如OpenMP)等。多核处理器的设计需要考虑存储一致性模型、高速缓存一致性协议、片上互连、多核同步等核心问题。
本书第六部分介绍计算机的性能分析方法。性能不是由一两个具体指标(如主频)决定的,而是若干因素综合平衡的结果;性能评测也没有合理公平的办法,不同的计算机对不同的应用适应性不一样,对某类应用甲计算机比乙计算机性能高,对另外一类应用可能反之。巨大的设计空间和工作负载的多样性,导致计算机系统的性能分析和评价成为一个非常艰巨的任务。计算机性能分析的主要方法包括理论建模,用模拟器进行性能模拟,以及对实际系统进行性能评测等。
上述面面俱到的课程安排主要是考虑体系结构学科的完整性,但本科课程重点是软硬件界面及计算机硬件结构。对于一般高校,并行处理结构和计算机系统性能分析可以不讲。
在选修本课程前,学生应对C语言程序设计、数字逻辑电路有一定的基础。本课程试图说明一个完整的计算系统的工作原理,其中涉及部分操作系统的知识。为了有更好的理解,学生还可以同时选修操作系统课程。课程中的实例和原理介绍以LoongArch体系结构为主。与传统课程中讲授的X86体系结构相比,LoongArch结构相对简单明晰而又不失全面。学生可以通过配套的实验课程,自底而上构建自己的计算机系统,包括硬件、操作系统以及应用软件,从而对“如何造计算机”有更深刻的认识。
|
|