支撑处理器的技术:永无止境地追求速度的世界.pdf

支撑处理器的技术:永无止境地追求速度的世界.pdf
 

书籍描述

编辑推荐
《支撑处理器的技术:永无止境地追求速度的世界》对于普通读者来说,是本学习知识的科普读物;对于程序员来说,是一把打开现代处理器宝库的钥匙。

作者简介
作者:(日本)安藤桐(Hisa Ando) 译者:李剑

安藤桐(Hisa Ando),拥有40年尖端处理器的开发经验。曾作为sPARC架构委员会委员参与了SPARC V9架构的开发,后作为HAL公司副总裁兼处理器开发部总经理参与了SPARC64的开发。后来又担任过富士通株式会社计算机事业本部的技师长等职务。现在作为技术作家,主要从事处理器、超级计算机相关的报道和介绍等。此外,还担任了几所大学的客座讲师,负责计算机架构的课程。拥有工学博士学位。

目录
第1章处理器与计算机系统的基础 1
1.1计算机的结构 2
计算机组成部分——处理器、内存、输入/输出设备 2
专栏处理器封装的物理结构 4
计算机使用二进制进行计算 4
专栏2值和多值非二进制不可吗?不一定! 5
处理器——计算机的大脑,负责解释程序 6
专栏处理器、微处理器的定义计算机最重要的组件
——处理器 7
专栏流水线级 8
专栏表示数量级的前缀 10
内存——存储计算机的指令和数据 13
输入/输出设备——计算机的眼睛、耳朵和嘴巴 18
北桥和南桥——逐渐淡化的称呼 21
1.2支撑计算机高速化的半导体技术 22
摩尔(Moore)定律——更多的晶体管,更高的并行度 22
缩放定律——晶体管的性能提升 24
源源不断的开发投资带来的半导体微型化——微型化的步伐
还将长期维持 24
提升性能的三大支柱——提高频率、并行处理和功能扩展 25
1.3计算机和数据表示方法 26
字节、半字、字……——比特组及用途 26
文字编码 27
专栏日语与文字编码 28
无符号整数与有符号整数、反码与补码表示法 29
浮点小数——IEEE754标准 30
Big Endian与Little Endian32
1.4处理器和指令 34
指令架构入门 34
机器指令——处理器的指令 36
地址空间 36
专栏AMD和Intel的64位扩展架构 38
1.5机器指令程序编写方法 39
用汇编语言编程 39
利用编译器进行高级语言编程 40
解释语言编程 41
1.6小结 43
专栏半导体的微型化 44
第2章处理器发展史 46
2.1计算机之前的计算设备 47
算盘——最早的计算工具 48
纳皮尔算筹(Napier'sbones)——乘法辅助工具 49
机械式计算机——Schikard计算机、Pascaline 50
巴贝奇的差分机——使用齿轮的超级计算机 52
2.2最早的电子计算机 53
最早的电子计算机——ABC和ENIAC 53
FUJIC——日本最早的电子计算机 54
2.3处理器组成元件的变迁55
根据主要部件划分计算机的时代 55
第1代:真空管 55
第2代:晶体管 56
第3代:集成电路 57
第4代:大规模集成电路(VLSI) 58
VLSI处理器的元件数目和时钟频率的发展趋势 61
2.4指令架构的变迁 62
指令架构的发展之路 62
存储程序的计算机——程序也从内存中读入 63
虚拟内存——更加丰富、取之不尽的内存 64
多任务——需要改变程序的部署 66
分时系统与内存管理设施的出现 67
专栏MULTICS之后的事 68
内存管理机构、特权态——多用户需要解决安全问题 68
指令架构扩展——指令架构的确立与指令兼容性的实现 69
2.5微架构的发展 70
微架构的发展之道 70
流水线处理——通过流水线寄存器有效利用硬件 72
运算器的高速化——整数运算器、浮点数运算器 73
高速缓存——解决内存访问问题的锦囊 74
RISC的出现——RISC与CISC 76
超标量执行——一个周期内执行多条指令 77
乱序执行——改变指令顺序以提高性能 78
专栏乱序执行(OutofOrder):请注意!? 80
分支预测与预测执行——“条件分支指令”对策 80
多核心——耗电量的限制推动了多核心的发展 81
2.6处理器的用途越来越广泛 82
活跃在各种舞台的处理器 82
节能、高可靠技术、实时性——各种各样的需求 83
2.7小结 83
第3章[详解]面向程序员的处理器架构86
3.1支撑微架构的技术 87
流水线执行的原理——并行处理指令 87
高速缓存的构造——提高内存访问速度 99
RISC与CISC——定长指令与变长指令 112
提高运算器的速度——处理器中因处理复杂而处理时间长的组件之一 116
超标量执行的原理——一个周期内并行执行多条指令 126
乱序执行的原理——减轻数据冒险的影响 128
分支预测的原理——降低控制冒险造成的损失 134
现代处理器会消除或减轻各种冒险以提高性能 140
内存、I/O与输入/输出接口 141
性能计数器——性能分析器和处理器内部执行状况的信息 147
3.2架构扩展扩大了处理器的使用范围 149
多任务和内存管理机构 149
中断处理机构 155
专栏异常、中断、陷阱——术语整理 156
虚拟化支持——内存访问和内存管理机构 160
多媒体、加密等支持——需要大量数据的计算 162
3.3x86Nehalem架构处理器 167
x86的指令体系和Intel64架构 167
Corei7处理器的结构 175
内存管理采用4级页表 180
新的处理器接口QPI 184
3.4小结 185
第4章虚拟化支持 188
4.1虚拟化的目的和优缺点 189
虚拟化的基础知识(复习) 189
虚拟化的目的 190
实现用户间强隔离——虚拟化的优点 190
集合多台服务器,提高利用率——虚拟化的优点 191
VMM运行时的额外开销——虚拟化的缺点、注意点 193
4.2实现虚拟化的条件 194
为操作系统提供独立的(虚拟)硬件的VMM 195
4.3支撑虚拟化的硬件设施 196
检测硬件操作命令 196
硬件状态的保存和还原——切换虚拟机 198
双重地址转换、TLB 199
I/O的虚拟化 203
实时迁移(Live Migration) 207
4.4小结 208
专栏虚拟化的前世今生 209
第5章多处理器的出现和普及 211
5.1多线程处理器 212
线程、多线程的纷繁芜杂(!?)——首先总结一下术语 212
多线程的两种方式 213
VMT的原理——短时间内切换线程 214
SMT的原理——混杂执行多个线程的指令 216
专栏历史悠久的SMT 216
SMT必需的机制 217
多线程的效果如何——通过Windows任务管理器查看效果 219
5.2多处理器系统 222
多处理器、多核心是什么意思 222
多核心处理器的结构 223
专栏众核处理器(Many—coreprocessor)的结构 224
缓存一致性控制——多处理器之间缓存的一致性 225
多插槽系统 231
专栏插槽还是芯片 234
专栏多核心时代的处理器、CPU的含义 236
提高多处理器系统的性能——问题和解决方案 238
共享内存系统和分布式内存系统 244
5.3小结 246
第6章处理器周边技术 249
6.1内存技术 250
内存历史概览 250
DRAM内存的工作原理——利用电荷存储信息 251
DRAM芯片和内存DIMM 254
DRAM芯片的内部结构——内存单元阵列、行/列解码器、检测放大器、Bank 256
处理器和DIMM的连接 258
内存系统的错误处理 259
6.2输入/输出设备的连接 265
处理器的I/O连接 265
PCI总线 266
专栏通向PCI总线之路 267
IntelCorei系列处理器的I/O结构 272
IntelPCH的I/O控制结构 273
6.3小结 273
专栏DRAM的刷新 274
第7章GPGPU和超并行处理 276
7.1GPGPU的原理 277
3D图形和GPU——需要大量计算 277
GPU系统 279
从GPU到GPGPU 280
作为“超并行SIMD处理器”的GPGPU 281
作为“超多线程处理器”的GPGPU 283
专栏Warp! 284
GPGPU的内存层次结构 285
GPGPU中的多线程需要分割使用通用寄存器 287
CPU和GPGPU的巨大区别 288
7.2GPGPU编程 289
现代GPGPU编程 290
CUDA的运行模型——线程块、网格 290
CUDA中的函数声明和变量声明 292
OpenCL编程 293
如何发挥GPGPU的性能 295
7.3小结 303
专栏Top500和GPU计算 304
第8章处理器的发展趋势 306
8.1耗电量是决定因素 307
为何处理器要消耗电力 307
节能技术的发展 310
8.2更高、更快、更强 313
半导体细微化技术 314
如何有效利用增加的晶体管 315
利用部分晶体管降低生产成本 316
有效利用部分块不合格的芯片 318
8.3更可靠、更安全的处理器设计 320
为何处理器会有错误行为——故障、噪声 320
防止错误行为,确保安全运转 322
8.4未来处理器的发展方向 323
无处不在的处理器 324
家电用处理器 324
汽车用处理器 324
个人计算机用处理器 325
智能手机用处理器325
服务器用处理器 327
8.5小结 329
索引 331

文摘
版权页:

支撑处理器的技术:永无止境地追求速度的世界

插图:

支撑处理器的技术:永无止境地追求速度的世界

流水线处理——通过流水线寄存器有效利用硬件
第1章说过,处理器以流水作业的方式处理指令。
但是,第1代处理器元件很少,无法实现流水作业,只能顺序完成指令读取到写回结果这一连串操作,然后再开始读取下个指令。负责指令读取、指令解释、操作数(指令运算对象)读取、运算、写回结果的硬件各自独立,执行一个操作时,负责其他功能的单元处于无事可做的状态。
这很浪费,于是人们涉及了流水线处理方式,将各个功能单元的处理结果保存在寄存器中,下个时钟周期开始处理下一条指令。这样,每个时钟周期都可以开始处理新指令,与顺序执行相比,性能得到了大幅度提升。
流水线处理方式就是流水作业,就像原油的管道(pipeline)一样,可以把一连串的功能单元看成管道,而指令就相当于原油在这些管道中流动,流水线处理也因此而得名。
流水线处理的实现难点——随着元件数目增加,流水线处理得到普及
流水线处理能大幅度提升性能,但实现起来也有难点。
例如,如果下一条指令要使用上一条指令的计算结果,那么前一条指令写回结果之前,下一条指令就无法开始;遇到分支指令,下一条指令就会发生跳转,从而必须读取跳转目的地的指令。这些情况都无法进行流水线处理,需要检测这些情况并暂时中断流水作业。
因此,要实现流水线处理,就要在功能单元之间增加流水线寄存器,还要添加上述控制电路,整体来看需要的元件数会大幅度增加。由于这些原因,直到1961年IBM开发的Stretch(IBM7030)超大型计算机才第一次采用了流水线处理。不过,随着可用元件数的增加,小型处理器也开始广泛应用流水线处理。
运算器的高速化——整数运算器、浮点数运算器
处理器的运算对象大致可分为整数和浮点数。整数有时表示数字,有时只是当做比特序列使用。另一方面,如第1章所述,浮点数包含尾数部分和指数部分,能够表示非常大和非常小的数。
整数运算包括加减乘除运算,以及把整数当做比特序列的AND、OR、NOT等逻辑运算,左右移位处理等运算。加减法、逻辑运算一般由一个运算器执行,这个运算器称为ALU(Arithmetic Logic Unit,算术逻辑运算单元)。乘除法与加减法差别很大,因此分别采用独立的运算器。此外,有的处理器把移位运算器作为ALU的一部分,不过最近也有移位运算器独立于ALU的情况。

内容简介
《支撑处理器的技术:永无止境地追求速度的世界》用通俗易懂的语言和大量的插图,介绍了处理器的历史、基本结构、实现原理等,还对时下流行的虚拟化技术、多任务、多核心、GPGPU等进行了全面的讲解,并介绍了有效利用处理器的各种功能来提高应用程序性能的方法。《支撑处理器的技术:永无止境地追求速度的世界》最后还介绍了处理器在移动设备、汽车、家电等方面的应用,并展望处理器的未来发展趋势,希望能对相关软硬件的开发者有所帮助。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多