第1章 处理器与计算机系统的基础
1.1 计算机的结构
计算机组成部分——处理器、内存、输入/输出设备
专栏 处理器封装的物理结构
计算机使用二进制进行计算
专栏 2值和多值 非二进制不可吗?不一定!
处理器——计算机的大脑,负责解释程序
专栏 处理器、微处理器的定义 计算机最重要的组件
——处理器
专栏 流水线级
专栏 表示数量级的前缀
内存——存储计算机的指令和数据
输入/输出设备——计算机的眼睛、耳朵和嘴巴
北桥和南桥——逐渐淡化的称呼
1.2 支撑计算机高速化的半导体技术
摩尔(Moore)定律——更多的晶体管,更高的并行度
缩放定律——晶体管的性能提升
源源不断的开发投资带来的半导体微型化——微型化的步伐
还将长期维持
提升性能的三大支柱——提高频率、并行处理和功能扩展
1.3 计算机和数据表示方法
字节、半字、字……——比特组及用途
文字编码
专栏 日语与文字编码
无符号整数与有符号整数、反码与补码表示法
浮点小数——IEEE 754标准
Big Endian与Little Endian
1.4 处理器和指令
指令架构入门
机器指令——处理器的指令
地址空间
专栏 AMD和Intel的64位扩展架构
1.5 机器指令程序编写方法
用汇编语言编程
利用编译器进行高级语言编程
解释语言编程
1.6 小结
专栏 半导体的微型化
第2章 处理器发展史
2.1 计算机之前的计算设备
算盘——最早的计算工具
纳皮尔算筹(Napier's bones)——乘法辅助工具
机械式计算机——Schikard计算机、Pascaline
巴贝奇的差分机——使用齿轮的超级计算机
2.2 最早的电子计算机
最早的电子计算机——ABC和ENIAC
FUJIC——日本最早的电子计算机
2.3 处理器组成元件的变迁
根据主要部件划分计算机的时代
第1代:真空管
第2代:晶体管
第3代:集成电路
第4代:大规模集成电路(VLSI)
VLSI处理器的元件数目和时钟频率的发展趋势
2.4 指令架构的变迁
指令架构的发展之路
存储程序的计算机——程序也从内存中读入
虚拟内存——更加丰富、取之不尽的内存
多任务——需要改变程序的部署
分时系统与内存管理设施的出现
专栏 MULTICS之后的事
内存管理机构、特权态——多用户需要解决安全问题
指令架构扩展——指令架构的确立与指令兼容性的实现
2.5 微架构的发展
微架构的发展之道
流水线处理——通过流水线寄存器有效利用硬件
运算器的高速化——整数运算器、浮点数运算器
高速缓存——解决内存访问问题的锦囊
RISC的出现——RISC与CISC
超标量执行——一个周期内执行多条指令
乱序执行——改变指令顺序以提高性能
专栏 乱序执行(Out of Order):请注意!?
分支预测与预测执行——“条件分支指令”对策
多核心——耗电量的限制推动了多核心的发展
2.6 处理器的用途越来越广泛
活跃在各种舞台的处理器
节能、高可靠技术、实时性——各种各样的需求
2.7 小结
第3章 [详解]面向程序员的处理器架构
3.1 支撑微架构的技术
流水线执行的原理——并行处理指令
高速缓存的构造——提高内存访问速度
RISC与CISC——定长指令与变长指令
提高运算器的速度——处理器中因处理复杂而处理时间长
的组件之一
超标量执行的原理——一个周期内并行执行多条指令
乱序执行的原理——减轻数据冒险的影响
分支预测的原理——降低控制冒险造成的损失
现代处理器会消除或减轻各种冒险以提高性能
内存、I/O与输入/输出接口
性能计数器——性能分析器和处理器内部执行状况的信息
3.2 架构扩展扩大了处理器的使用范围
多任务和内存管理机构
中断处理机构
专栏 异常、中断、陷阱——术语整理
虚拟化支持——内存访问和内存管理机构
多媒体、加密等支持——需要大量数据的计算
3.3 x86 Nehalem架构处理器
x86的指令体系和Intel 64架构
Core i7处理器的结构
内存管理采用4级页表
新的处理器接口QPI
3.4 小结
第4章 虚拟化支持
4.1 虚拟化的目的和优缺点
虚拟化的基础知识(复习)
虚拟化的目的
实现用户间强隔离——虚拟化的优点
集合多台服务器,提高利用率——虚拟化的优点
VMM运行时的额外开销——虚拟化的缺点、注意点
4.2 实现虚拟化的条件
为操作系统提供独立的(虚拟)硬件的VMM
4.3 支撑虚拟化的硬件设施
检测硬件操作命令
硬件状态的保存和还原——切换虚拟机
双重地址转换、TLB
I/O的虚拟化
实时迁移(Live Migration)
4.4 小结
专栏 虚拟化的前世今生
第5章 多处理器的出现和普及
5.1 多线程处理器
线程、多线程的纷繁芜杂(!?)——首先总结一下术语
多线程的两种方式
VMT的原理——短时间内切换线程
SMT的原理——混杂执行多个线程的指令
专栏 历史悠久的SMT
SMT必需的机制
多线程的效果如何——通过Windows任务管理器查看效果
5.2 多处理器系统
多处理器、多核心是什么意思
多核心处理器的结构
专栏 众核处理器(Many-core processor)的结构
缓存一致性控制——多处理器之间缓存的一致性
多插槽系统
专栏 插槽还是芯片
专栏 多核心时代的处理器、CPU的含义
提高多处理器系统的性能——问题和解决方案
共享内存系统和分布式内存系统
5.3 小结
第6章 处理器周边技术
6.1 内存技术
内存历史概览
DRAM内存的工作原理——利用电荷存储信息
DRAM芯片和内存DIMM
DRAM芯片的内部结构——内存单元阵列、行/列解码器、
检测放大器、Bank
处理器和DIMM的连接
内存系统的错误处理
6.2 输入/输出设备的连接
处理器的I/O连接
PCI总线
专栏 通向PCI总线之路
Intel Core i系列处理器的I/O结构
Intel PCH的I/O控制结构
6.3 小结
专栏 DRAM的刷新第7章 GPGPU和超并行处理
7.1 GPGPU的原理
3D图形和GPU——需要大量计算
GPU系统
从GPU到GPGPU
作为“超并行SIMD处理器”的GPGPU
作为“超多线程处理器”的GPGPU
专栏 Warp!
GPGPU的内存层次结构
GPGPU中的多线程需要分割使用通用寄存器
CPU和GPGPU的巨大区别
7.2 GPGPU编程
现代GPGPU编程
CUDA的运行模型——线程块、网格
CUDA中的函数声明和变量声明
OpenCL编程
如何发挥GPGPU的性能
7.3 小结
专栏 Top500和GPU计算
第8章 处理器的发展趋势
8.1 耗电量是决定因素
为何处理器要消耗电力
节能技术的发展
8.2 更高、更快、更强
半导体细微化技术
如何有效利用增加的晶体管
利用部分晶体管降低生产成本
有效利用部分块不合格的芯片
8.3 更可靠、更安全的处理器设计
为何处理器会有错误行为——故障、噪声
防止错误行为,确保安全运转
8.4 未来处理器的发展方向
无处不在的处理器
家电用处理器
汽车用处理器
个人计算机用处理器
智能手机用处理器
服务器用处理器
8.5 小结
索引