当前: 首页 - 图书专区 - 计算机体系结构基础
计算机体系结构基础


  教辅下载
  在线购买
胡伟武 等著
978-7-111-57978-6
49.00
312
2017年09月01日

计算机 > 计算机组织与体系结构

344
简体中文
16

教材
计算机类专业系统能力培养系列教材








本书由国内从事微处理器设计的一线科研人员编写而成。作者从微处理器设计的角度出发,充分考虑计算机体系结构的学科完整性,强调体系结构、基础软件、电路和器件的融汇
会贯通。全书共分16章,包括指令系统结构、计算机硬件结构、CPU微结构、并行处理结构、计算机性能分析等主要内容,重点放在作为软硬件界面的指令系统结构,以及包含CPU、GPU、南北桥协同的计算机硬件结构。
  本书可作为高等学校“计算机体系结构”课程的本科生教材,同时也适合相关专业研究生或计算机技术人员参考阅读。
“我国学者在如何用计算机的某些领域的研究已走到世界前列,例如最近很红火的机器学习领域,中国学者发表的论文数和引用数都已超过美国,位居世界第一。但在如何造计算机的领域,参与研究的科研人员较少,科研水平与国际上还有较大差距。”
“摆在读者面前的这本《计算机体系结构基础》就是为满足本科教育而编著的精品教材……希望经过几年的完善修改,本书能真正成为受到众多大学普遍欢迎的精品教材。”
—— 中国工程院院士 李国杰

本书作者皆为国内从事微处理器设计的一线科研人员,针对我国“计算机体系结构”课程本土化教材欠缺的现状,计划出版一套分别面向本科、硕士、博士教育的“计算机体系结构”教材,目的是建设完整的课程体系,由浅入深地培养“造计算机”的人才。这套教材具有以下特点:
● 系统性。计算机系统结构研究的是“系统”而非“结构”,既要上知应用程序、编译程序和操作系统等“天文”知识,也要下知逻辑、电路和集成电路工艺等“地理”知识,把体系结构、基础软件、电路和器件融会贯通,才能做好体系结构设计。
● 基础性。计算机体系结构千变万化,但几十年发展沉淀下来的原理性的东西不多,作者对计算机体系结构技术进行了仔细的鉴别、分析、选择,仅将一些内在的、本质的东西写入教材。
● 实践性。计算机体系结构是实践性很强的学科,作者强调要设计在“硅”上实现而非“纸”上实现的体系结构。

胡伟武 1991年本科毕业于中国科技大学计算机系,随后免试进入中国科学院计算所直接攻读博士学位,师从著名计算机专家夏培肃院士,1996年获工学博士学位。现任中国科学院计算所总工程师、研究员、博士生导师,龙芯中科技术有限公司总经理。主要研究方向为计算机系统结构和微处理器设计,作为总设计师成功研制多款国产龙芯高性能通用CPU。主持国家自然科学基金、国家863高技术研究、国家“核高基”科技重大专项、中国科学院知识创新工程等项目10余项。出版专著和教材两部,发表科研论文50余篇,获国家授权发明专利50多项。是国家自然杰出青年基金获得者、中科院百人计划入选者、全国新世纪百千万人才工程入选者、国家自然科学领域咨询专家、国家“核高基”科技重大专项实施专家。曾获“中科院杰出科技成就奖”“全国首届优秀博士论文奖”“全国青年五四奖章”“光华工程科技奖”“中国青年科技奖”“中国科学院教学成果奖一等奖”等奖励。
计算机体系结构是一门比较抽象的学科,很有可能经过一个学期的学习只学到一些概念。本课程教学希望达到三个目的。一是建立学生的系统观。计算机系统的复杂性体现在计算机中各部分之间的关系非常复杂。如苹果iPhone的CPU性能不如Intel的X86 CPU,但用户体验明显好于桌面计算机,这就是系统优化的结果。希望学生学完这门课程后能够从系统的角度看待计算机,不再简单地以主频论性能,或者简单地把用户体验归结于CPU的单项性能。二是掌握计算机体系结构的若干概念。计算机体系结构中的概念很多,虽然抽象,但是必须掌握。比如计算机体系结构的四大设计原则,指令系统结构,处理器流水线,等等。三是掌握一些重点知识并具备一些重点能力。主要包括:计算机的ABI接口,存储管理中的虚实地址转换过程,通过IO地址空间扫描进行IO设备初始化,计算机系统的启动过程,重要总线如AXI总线、内存总线、PCIE总线的信号及其时序,用Verilog编写RTL代码的能力,先行进位加法器的逻辑,两位一乘补码乘法器逻辑,用Perf或Oprofile进行性能分析的能力,等等。
本书第一部分为引言,介绍体系结构研究内容、主要性能指标、发展趋势以及设计原则。计算机体系结构(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等在内的各种IO接口的驱动在硬件上的具体体现是什么;等等。
本书第四部分介绍微结构。该部分的核心思想是建立指令系统和晶体管之间的“桥梁”。微结构是决定CPU性能的关键因素。由于微结构是“计算机体系结构”硕士课程的主要内容,因此本科课程的微结构内容在追求系统地介绍有关概念的基础上,重点把先行进位加法器和五级静态流水线讲透,希望学生通过对先行进位加法器和五级静态流水线的深入了解,举一反三地了解微结构的实现方式。微结构中动态流水线、乱序执行和多发射等内容只做概念性的介绍。
本书第五部分介绍并行处理结构。应用程序的并行行为是并行处理的基础,现代计算机通过多层次的并行性开发来提高性能。并行处理编程模型包括消息传递模型(如MPI)和共享存储模型(如OpenMP)等。多核处理器的设计需要考虑存储一致性模型、高速缓存一致性协议、片上互连、多核同步等核心问题。
本书第六部分介绍计算机的性能分析方法。性能不是由一两个具体指标(如主频)决定的,而是若干因素综合平衡的结果;性能评测也没有绝对合理公平的办法,不同的计算机对不同的应用适应性不一样,对某类应用甲计算机比乙计算机性能高,对另外一类应用可能反之。巨大的设计空间和工作负载的多样性,导致计算机系统的性能分析和评价成为一个非常艰巨的任务。计算机性能分析的主要方法包括理论建模,用模拟器进行性能模拟,以及对实际系统进行性能评测等。
上述面面俱到的课程安排主要是考虑到体系结构学科的完整性,但本科课程重点是软硬件界面及计算机硬件结构。对于一般高校,并行处理结构和计算机系统性能分析可以不讲。
在选修本课程前,学生应对C语言程序设计、数字逻辑电路有一定的基础。本课程试图说明一个完整的计算系统的工作原理,其中涉及部分操作系统的知识。为了有更好的理解,还可以同时选修操作系统课程。课程中的实例和原理介绍以MIPS体系结构为主。与传统课程中讲授的X86体系结构相比,MIPS结构相对简单明晰而又不失全面。学生可以通过配套的实验课程,自底而上构建自己的计算机系统,包括硬件、操作系统以及应用软件,从而对“如何造计算机”有更深刻的认识。
由于时间仓促,本书还存在不少问题,主要包括不少内容的详略失衡,文字严谨性不够,举例不够导致很多内容过于抽象。好在总体结构基本完整了,在下一版改版时可以重点解决上述问题。下一版改版时争取精选100个例子覆盖本书重要内容,使计算机体系结构进一步从抽象走向具体化。
丛书序言
推荐序
自序
前言
第一部分 引言
第1章 引言2
 1.1 计算机体系结构的研究内容2
   1.1.1 一以贯之2
   1.1.2 什么是计算机5
   1.1.3 计算机的基本组成6
 1.2 衡量计算机的指标8
   1.2.1 计算机的性能8
   1.2.2 计算机的价格10
   1.2.3 计算机的功耗11
 1.3 计算机体系结构的发展12
   1.3.1 摩尔定律和工艺的发展13
   1.3.2 计算机应用和体系结构17
   1.3.3 计算机体系结构发展18
 1.4 体系结构设计的基本原则20
   1.4.1 平衡性20
   1.4.2 局部性21
   1.4.3 并行性22
   1.4.4 虚拟化23
 1.5 本章小结24
 习题24
第二部分 指令系统结构
第2章 指令系统26
 2.1 指令系统简介26
 2.2 指令系统设计原则26
 2.3 指令系统发展历程28
   2.3.1 指令集的演变28
   2.3.2 存储管理的演变29
   2.3.3 运行级别的演变31
 2.4 本章小结32
 习题32
第3章 指令集结构33
 3.1 地址空间33
 3.2 操作数36
   3.2.1 数据类型36
   3.2.2 访存地址36
   3.2.3 寻址方式36
 3.3 指令操作和编码37
 3.4 RISC指令集比较38
 3.5 C语言的机器表示43
 3.6 本章小结46
 习题47
第4章 异常与中断48
 4.1 异常分类48
 4.2 异常处理48
 4.3 中断50
   4.3.1 中断的优先级和原子性50
   4.3.2 向量化中断51
   4.3.3 中断传递机制52
 4.4 本章小结52
 习题52
第5章 存储管理53
 5.1 存储管理的原理53
 5.2 TLB的结构和使用55
 5.3 TLB异常的处理57
 5.4 本章小结60
 习题61
第6章 软硬件协同62
 6.1 函数调用规范62
   6.1.1 MIPS ABI整数寄存器约定62
   6.1.2 MIPS ABI函数调用约定63
   6.1.3 MIPS堆栈布局64
 6.2 中断的生命周期66
 6.3 系统调用过程67
 6.4 同步与通信68
   6.4.1 基于互斥的同步机制68
   6.4.2 非阻塞的同步机制69
 6.5 本章小结70
 习题70
第三部分 计算机硬件结构
第7章 计算机组成原理和结构…72
 7.1 冯·诺依曼结构72
 7.2 计算机的组成部件73
   7.2.1 运算器73
   7.2.2 控制器73
   7.2.3 存储器74
   7.2.4 输入设备77
   7.2.5 输出设备77
 7.3 计算机系统硬件结构发展79
   7.3.1 CPU-GPU-北桥-南桥四片结构80
   7.3.2 CPU-北桥-南桥三片结构81
   7.3.3 CPU-弱北桥-南桥三片结构81
   7.3.4 CPU-南桥两片结构82
   7.3.5 SoC单片结构82
 7.4 处理器和IO设备间的通信82
   7.4.1 IO寄存器寻址83
   7.4.2 处理器和IO设备之间的同步83
   7.4.3 存储器和IO设备之间的数据传送84
   7.4.4 IO中断控制器85
 7.5 本章小结86
 习题86
第8章 计算机总线接口技术87
 8.1 总线概述87
 8.2 总线分类88
 8.3 片上总线88
 8.4 内存总线93
 8.5 系统总线99
   8.5.1 HyperTransport总线99
   8.5.2 HyperTransport包格式…102
 8.6 IO总线103
   8.6.1 PCIE总线103
   8.6.2 PCIE包格式104
 8.7 本章小结105
 习题105
第9章 计算机系统启动过程分析106
 9.1 处理器核初始化106
   9.1.1 处理器复位107
   9.1.2 调试接口初始化107
   9.1.3 TLB初始化108
   9.1.4 Cache初始化109
 9.2 总线接口初始化111
   9.2.1 内存初始化112
   9.2.2 IO总线初始化113
 9.3 设备的探测及驱动加载113
 9.4 多核启动过程117
   9.4.1 初始化时的多核协同117
   9.4.2 操作系统启动时的多核唤醒118
 9.5 本章小结120
 习题120
第四部分 CPU的微结构
第10章 二进制与逻辑电路122
 10.1 计算机中数的表示122
   10.1.1 二进制122
   10.1.2 定点数的表示123
   10.1.3 浮点数的表示125
 10.2 MOS晶体管工作原理127
   10.2.1 半导体128
   10.2.2 NMOS和PMOS晶体管128
 10.3 CMOS逻辑电路130
   10.3.1 数字逻辑电路130
   10.3.2 常见CMOS电路134
   10.3.3 CMOS电路延迟136
 10.4 本章小结137
 习题137
第11章 简单运算器设计139
 11.1 定点补码加法器139
   11.1.1 一位全加器139
   11.1.2 行波进位加法器140
   11.1.3 先行进位加法器141
 11.2 减法运算实现144
 11.3 比较运算实现145
 11.4 移位器145
 11.5 本章小结146
 习题147
第12章 定点补码乘法器148
 12.1 补码乘法器148
 12.2 Booth乘法器150
 12.3 华莱士树154
 12.4 本章小结158
 习题158
第13章 指令流水线159
 13.1 单周期处理器159
 13.2 流水线处理器161
 13.3 指令相关和流水线冲突164
 13.4 提高流水线效率的技术168
   13.4.1 多发射数据通路169
   13.4.2 动态调度169
   13.4.3 转移预测173
   13.4.4 Cache174
 13.5 本章小结175
 习题177
第五部分 并行处理结构
第14章 并行编程基础180
 14.1 程序的并行行为180
   14.1.1 指令级并行性180
   14.1.2 数据级并行性181
   14.1.3 任务级并行性181
 14.2 并行编程模型181
   14.2.1 单任务数据并行编程模型182
   14.2.2 多任务共享存储编程模型182
   14.2.3 多任务消息传递编程模型182
   14.2.4 共享存储与消息传递编程模型的编程复杂度183
 14.3 典型并行编程环境186
   14.3.1 数据并行SIMD编程…186
   14.3.2 POSIX编程标准187
   14.3.3 OpenMP标准189
   14.3.4 消息传递编程接口195
 习题198
第15章 多核处理结构200
 15.1 多核处理器的发展演化200
 15.2 多核处理器的访存结构203
   15.2.1 通用多核处理器的片上Cache结构203
   15.2.2 存储一致性模型205
   15.2.3 Cache一致性协议207
 15.3 多核处理器的互连结构211
 15.4 多核处理器的同步机制216
 15.5 典型多核处理器221
   15.5.1 龙芯3号多核处理器…221
   15.5.2 Intel SandyBridge架构222
   15.5.3 IBM Cell处理器224
   15.5.4 NVIDIA GPU225
   15.5.5 Tile64处理器227
 习题229第
六部分 系统评价与性能分析
第16章 计算机系统评价和性能分析232
 16.1 计算机系统性能评价指标232
   16.1.1 计算机系统常用性能评价指标232
   16.1.2 并行系统的性能评价指标236
 16.2 测试程序集237
   16.2.1 微基准测试程序238
   16.2.2 SPEC CPU基准测试程序246
   16.2.3 并行系统基准测试程序251
   16.2.4 其他常见的基准测试程序集252
 16.3 性能分析方法253
   16.3.1 分析建模的方法255
   16.3.2 模拟建模的方法和模拟器256
   16.3.3 性能测量的方法258
 16.4 性能测试和分析实例270
   16.4.1 动态执行指令的数目和分类271
   16.4.2 SPEC CPU基准测试程序的分值对比273
   16.4.3 动态执行指令数对比274
   16.4.4 IPC对比276
   16.4.5 分支误预测率和分支吞吐率对比277
   16.4.6 存储访问延迟对比280
   16.4.7 存储访问操作的并发性281
   16.4.8 并发操作性对比282
 习题283
总结:什么是计算机体系结构285
参考文献293
计算机科学及应用
读者书评
发表评论



高级搜索
数字设计:系统方法
逻辑与计算机设计基础(原书第5版)
数字逻辑设计与计算机组成


版权所有© 2017  北京华章图文信息有限公司 京ICP备08102525号 京公网安备110102004606号
通信地址:北京市百万庄南街1号 邮编:100037
电话:(010)68318309, 88378998 传真:(010)68311602, 68995260
高校教师服务
华章教育微信
诚聘英才
诚聘英才