您当前的位置:首页 > 计算机科学丛书:计算机体系结构精髓 原书第2版 [美]Douglas Comer 2019年版 > 下载地址2
计算机科学丛书:计算机体系结构精髓 原书第2版 [美]Douglas Comer 2019年版
- 名 称:计算机科学丛书:计算机体系结构精髓 原书第2版 [美]Douglas Comer 2019年版 - 下载地址2
- 类 别:计算机与网络
- 下载地址:[下载地址2]
- 提 取 码:
- 浏览次数:3
新闻评论(共有 0 条评论) |
资料介绍
计算机科学丛书:计算机体系结构精髓 原书第2版
作者:[美]Douglas Comer
出版时间:2019年版
丛编项: 计算机科学丛书
内容简介
本书是计算机体系结构的入门教材,从程序员的视角展开讨论,重点介绍基础知识和概念,不深入底层技术的细节。这种视角旨在帮助程序员新手和计算机专业新生理解体系结构对编程的影响,书中浓缩的核心知识点涵盖了程序员需要掌握的所有硬件层面,从而有利于其更好地进行软件的设计、实现和运维。本书分为五个部分,包括数字逻辑、门和数据通路的基础知识,以及体系结构的三个主要方面——处理器、内存和I/O系统。此外,书中还涉及并行、流水线、能源和性能等高级主题,以及一个动手操作的实验。第2版共包含了三个全新的章节,并在整体上进行了与时俱进的修订。
目录
出版者的话
译者序
前言
关于作者
第1章 简介及概览 1
1.1 体系结构的重要性 1
1.2 学习基础知识 1
1.3 本书结构 1
1.4 一笔带过的内容 2
1.5 术语:体系结构和设计 2
1.6 小结 2
第一部分 基础知识
第2章 数字逻辑基础 4
2.1 引言 4
2.2 数字计算装置 4
2.3 电气术语:电压和电流 4
2.4 晶体管 5
2.5 逻辑门 5
2.6 使用晶体管实现的“与非”逻辑门电路 7
2.7 表示逻辑门的符号 8
2.8 逻辑门互连的例子 8
2.9 实现二进制加法的数字电路 10
2.10 多逻辑门的集成电路 10
2.11 不只需要组合逻辑电路 11
2.12 维持状态的电路 11
2.13 传播延迟 12
2.14 使用锁存器构建存储器 12
2.15 触发器和波形图 13
2.16 二进制计数器 14
2.17 时钟和时序 15
2.18 反馈的重要概念 17
2.19 启动序列 18
2.20 软件迭代与硬件复制 18
2.21 门和芯片的最简化 19
2.22 使用闲置门 19
2.23 配电和散热 20
2.24 时序和时钟域 20
2.25 无时钟逻辑 21
2.26 电路规模和摩尔定律 21
2.27 电路板和层 22
2.28 抽象层次 23
2.29 小结 23
习题 23
第3章 数据和程序的表示 25
3.1 引言 25
3.2 数字逻辑与抽象的重要性 25
3.3 位和字节的定义 25
3.4 字节大小和可能的值 25
3.5 二进制位权表示法 26
3.6 位序 27
3.7 十六进制记法 28
3.8 十六进制和二进制常数记法 29
3.9 字符集 29
3.10 Unicode 30
3.11 无符号整数、溢出和下溢 30
3.12 给位和字节编号 31
3.13 有符号二进制整数 31
3.14 一个补码数字的例子 32
3.15 符号扩展 33
3.16 浮点数 33
3.17 IEEE浮点值的范围 34
3.18 特殊值 35
3.19 二进制编码的十进制表示 35
3.20 有符号数、分数和压缩BCD表示法 36
3.21 数据聚合 36
3.22 程序的表示 37
3.23 小结 37
习题 37
第二部分 处理器
第4章 处理器和计算引擎的多样性 40
4.1 引言 40
4.2 两种基本的体系结构 40
4.3 哈佛与冯·诺依曼体系结构 40
4.4 处理器的定义 41
4.5 处理器的范围 41
4.6 分层结构和计算引擎 42
4.7 传统处理器的结构 43
4.8 处理器的分类和角色 44
4.9 处理器技术 44
4.10 存储程序 45
4.11 取指–执行周期 45
4.12 程序转换 46
4.13 时钟速率和指令速率 46
4.14 控制:启动和停止 47
4.15 启动取指–执行周期 47
4.16 小结 48
习题 48
第5章 处理器类型和指令集 49
5.1 引言 49
5.2 数学能力、便利性和成本 49
5.3 指令集架构 49
5.4 操作码、操作数和结果 50
5.5 典型的指令格式 50
5.6 可变长度指令与固定长度指令 50
5.7 通用寄存器 51
5.8 浮点寄存器和寄存器标识 51
5.9 使用寄存器编程 51
5.10 寄存器存储体 52
5.11 复杂指令集和精简指令集 53
5.12 RISC设计和执行流水线 53
5.13 流水线和指令延迟 54
5.14 引起流水线停顿的其他原因 55
5.15 对程序员的影响 56
5.16 编程、停顿和无操作指令 56
5.17 转发 56
5.18 操作类型 57
5.19 程序计数器、取指–执行以及分支 57
5.20 子程序调用、参数以及寄存器窗口 58
5.21 一个示例指令集 59
5.22 极简化的指令集 61
5.23 正交性原则 61
5.24 条件码和条件分支 62
5.25 小结 62
习题 62
第6章 数据通路和指令执行 64
6.1 引言 64
6.2 数据通路 64
6.3 示例指令集 64
6.4 内存中的指令 66
6.5 移到下一条指令 67
6.6 取指令 68
6.7 解码指令 69
6.8 连接到寄存器单元 69
6.9 控制和协调 70
6.10 算术运算和复用 70
6.11 涉及存储器中数据的操作 71
6.12 执行过程的示例 72
6.13 小结 73
习题 73
第7章 操作数寻址和指令表示 75
7.1 引言 75
7.2 零、一、二或三地址设计 75
7.3 每指令零操作数 75
7.4 每指令单操作数 76
7.5 每指令两操作数 76
7.6 每指令三操作数 77
7.7 操作数来源和立即数 77
7.8 冯·诺依曼体系结构的瓶颈 77
7.9 显式和隐式操作数编码 78
7.10 组合多个值的操作数 79
7.11 权衡操作数的选择 79
7.12 内存中的值和间接引用 80
7.13 操作数寻址模式的示例 80
7.14 小结 81
习题 81
第8章 CPU:微码、保护和处理器模式 83
8.1 引言 83
8.2 中央处理器 83
8.3 CPU的复杂性 83
8.4 执行模式 84
8.5 向后兼容性 84
8.6 改变模式 84
8.7 特权和保护 85
8.8 多级保护 85
8.9 微码指令 86
8.10 微码变体 87
8.11 微码的优势 87
8.12 FPGA和指令集的改变 88
8.13 垂直微码 88
8.14 水平微码 88
8.15 水平微码的例子 89
8.16 水平微码程序示例 91
8.17 需要多个周期的操作 91
8.18 水平微码和并行执行 92
8.19 前瞻性和高性能执行 92
8.20 并行和执行顺序 93
8.21 乱序指令执行 93
8.22 条件分支和分支预测 94
8.23 对
作者:[美]Douglas Comer
出版时间:2019年版
丛编项: 计算机科学丛书
内容简介
本书是计算机体系结构的入门教材,从程序员的视角展开讨论,重点介绍基础知识和概念,不深入底层技术的细节。这种视角旨在帮助程序员新手和计算机专业新生理解体系结构对编程的影响,书中浓缩的核心知识点涵盖了程序员需要掌握的所有硬件层面,从而有利于其更好地进行软件的设计、实现和运维。本书分为五个部分,包括数字逻辑、门和数据通路的基础知识,以及体系结构的三个主要方面——处理器、内存和I/O系统。此外,书中还涉及并行、流水线、能源和性能等高级主题,以及一个动手操作的实验。第2版共包含了三个全新的章节,并在整体上进行了与时俱进的修订。
目录
出版者的话
译者序
前言
关于作者
第1章 简介及概览 1
1.1 体系结构的重要性 1
1.2 学习基础知识 1
1.3 本书结构 1
1.4 一笔带过的内容 2
1.5 术语:体系结构和设计 2
1.6 小结 2
第一部分 基础知识
第2章 数字逻辑基础 4
2.1 引言 4
2.2 数字计算装置 4
2.3 电气术语:电压和电流 4
2.4 晶体管 5
2.5 逻辑门 5
2.6 使用晶体管实现的“与非”逻辑门电路 7
2.7 表示逻辑门的符号 8
2.8 逻辑门互连的例子 8
2.9 实现二进制加法的数字电路 10
2.10 多逻辑门的集成电路 10
2.11 不只需要组合逻辑电路 11
2.12 维持状态的电路 11
2.13 传播延迟 12
2.14 使用锁存器构建存储器 12
2.15 触发器和波形图 13
2.16 二进制计数器 14
2.17 时钟和时序 15
2.18 反馈的重要概念 17
2.19 启动序列 18
2.20 软件迭代与硬件复制 18
2.21 门和芯片的最简化 19
2.22 使用闲置门 19
2.23 配电和散热 20
2.24 时序和时钟域 20
2.25 无时钟逻辑 21
2.26 电路规模和摩尔定律 21
2.27 电路板和层 22
2.28 抽象层次 23
2.29 小结 23
习题 23
第3章 数据和程序的表示 25
3.1 引言 25
3.2 数字逻辑与抽象的重要性 25
3.3 位和字节的定义 25
3.4 字节大小和可能的值 25
3.5 二进制位权表示法 26
3.6 位序 27
3.7 十六进制记法 28
3.8 十六进制和二进制常数记法 29
3.9 字符集 29
3.10 Unicode 30
3.11 无符号整数、溢出和下溢 30
3.12 给位和字节编号 31
3.13 有符号二进制整数 31
3.14 一个补码数字的例子 32
3.15 符号扩展 33
3.16 浮点数 33
3.17 IEEE浮点值的范围 34
3.18 特殊值 35
3.19 二进制编码的十进制表示 35
3.20 有符号数、分数和压缩BCD表示法 36
3.21 数据聚合 36
3.22 程序的表示 37
3.23 小结 37
习题 37
第二部分 处理器
第4章 处理器和计算引擎的多样性 40
4.1 引言 40
4.2 两种基本的体系结构 40
4.3 哈佛与冯·诺依曼体系结构 40
4.4 处理器的定义 41
4.5 处理器的范围 41
4.6 分层结构和计算引擎 42
4.7 传统处理器的结构 43
4.8 处理器的分类和角色 44
4.9 处理器技术 44
4.10 存储程序 45
4.11 取指–执行周期 45
4.12 程序转换 46
4.13 时钟速率和指令速率 46
4.14 控制:启动和停止 47
4.15 启动取指–执行周期 47
4.16 小结 48
习题 48
第5章 处理器类型和指令集 49
5.1 引言 49
5.2 数学能力、便利性和成本 49
5.3 指令集架构 49
5.4 操作码、操作数和结果 50
5.5 典型的指令格式 50
5.6 可变长度指令与固定长度指令 50
5.7 通用寄存器 51
5.8 浮点寄存器和寄存器标识 51
5.9 使用寄存器编程 51
5.10 寄存器存储体 52
5.11 复杂指令集和精简指令集 53
5.12 RISC设计和执行流水线 53
5.13 流水线和指令延迟 54
5.14 引起流水线停顿的其他原因 55
5.15 对程序员的影响 56
5.16 编程、停顿和无操作指令 56
5.17 转发 56
5.18 操作类型 57
5.19 程序计数器、取指–执行以及分支 57
5.20 子程序调用、参数以及寄存器窗口 58
5.21 一个示例指令集 59
5.22 极简化的指令集 61
5.23 正交性原则 61
5.24 条件码和条件分支 62
5.25 小结 62
习题 62
第6章 数据通路和指令执行 64
6.1 引言 64
6.2 数据通路 64
6.3 示例指令集 64
6.4 内存中的指令 66
6.5 移到下一条指令 67
6.6 取指令 68
6.7 解码指令 69
6.8 连接到寄存器单元 69
6.9 控制和协调 70
6.10 算术运算和复用 70
6.11 涉及存储器中数据的操作 71
6.12 执行过程的示例 72
6.13 小结 73
习题 73
第7章 操作数寻址和指令表示 75
7.1 引言 75
7.2 零、一、二或三地址设计 75
7.3 每指令零操作数 75
7.4 每指令单操作数 76
7.5 每指令两操作数 76
7.6 每指令三操作数 77
7.7 操作数来源和立即数 77
7.8 冯·诺依曼体系结构的瓶颈 77
7.9 显式和隐式操作数编码 78
7.10 组合多个值的操作数 79
7.11 权衡操作数的选择 79
7.12 内存中的值和间接引用 80
7.13 操作数寻址模式的示例 80
7.14 小结 81
习题 81
第8章 CPU:微码、保护和处理器模式 83
8.1 引言 83
8.2 中央处理器 83
8.3 CPU的复杂性 83
8.4 执行模式 84
8.5 向后兼容性 84
8.6 改变模式 84
8.7 特权和保护 85
8.8 多级保护 85
8.9 微码指令 86
8.10 微码变体 87
8.11 微码的优势 87
8.12 FPGA和指令集的改变 88
8.13 垂直微码 88
8.14 水平微码 88
8.15 水平微码的例子 89
8.16 水平微码程序示例 91
8.17 需要多个周期的操作 91
8.18 水平微码和并行执行 92
8.19 前瞻性和高性能执行 92
8.20 并行和执行顺序 93
8.21 乱序指令执行 93
8.22 条件分支和分支预测 94
8.23 对