具体描述
《支撑处理器的技术:永无止境地追求速度的世界》用通俗易懂的语言和大量的插图,介绍了处理器的历史、基本结构、实现原理等,还对时下流行的虚拟化技术、多任务、多核心、GPGPU等进行了全面的讲解,并介绍了有效利用处理器的各种功能来提高应用程序性能的方法。《支撑处理器的技术:永无止境地追求速度的世界》最后还介绍了处理器在移动设备、汽车、家电等方面的应用,并展望处理器的未来发展趋势,希望能对相关软硬件的开发者有所帮助。
作者简介
Hisa Ando
拥有40年尖端处理器的开发经验。曾作为SPARC架构委员会委员参与了SPARC V9架构的开发,后作为HAL公司副总裁兼处理器开发部总经理参与了SPARC64的开发。后来又担任过富士通株式会社计算机事业本部的技师长等职务。现在作为技术作家,主要从事处理器、超级计算机相关的报道和介绍等。此外,还担任了几所大学的客座讲师,负责计算机架构的课程。拥有工学博士学位。
Ando's Processor Information
URL: http://www.geocities.jp/andosprocinfo/
目录信息
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
无符号整数与符号整数、1 的补数表示与2 的补数表示...............29
浮点小数——IEEE 754 标准...........................30
Big Endian 与Little Endian...............................32
1.4 处理器和指令........................... 34VIII
指令架构入门....................................34
机器指令——处理器的指令............................36
地址空间............................................36
专栏 AMD 和Intel 的64 位扩展架构.......................... 38
1.5 机器指令程序编写方法......................... 39
用汇编语言编程................................39
利用编译器进行高级语言编程................................40
解释语言编程....................................41
1.6 小结............................................. 43
专栏 半导体的微型化................................ 44
第2 章 处理器发展史......................................46
2.1 计算机之前的计算设备.............................. 47
算盘——最早的计算工具................................48
纳皮尔算筹(Napier's bones)——乘法辅助工具............................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
TSS 与内存管理设施的登场............................67
专栏 MULTICS 之后的事.......................... 68
内存管理设施、特权管理——多用户需要解决安全问题..............68
ISA 扩展——指令架构的确立与指令兼容性的实现.......................69
2.5 微架构的发展........................... 70
微架构的发展之道............................70
流水线处理——通过流水线寄存器有效利用硬件..........................72
运算器的高速化——整数运算器、浮点数运算器..........................73
缓存——解决内存访问问题的锦囊...........................74
RISC 的出现——RISC 与CISC ...........................76
超标量执行——一个周期内执行多条指令.................. 77
乱序执行——改变指令顺序以提高性能...................78
专栏乱序执行(Out of Order):请注意!? ............................. 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
中断处理设施..................................155X
专栏异常、中断、陷阱——术语整理.......................................159
虚拟化支持——内存访问和内存管理设施..................................160
多媒体、加密等支持——需要大量数据的计算............................162
3.3 x86 Nehalem 架构处理器............................. 167
x86 的指令体系和Intel 64 架构.................................167
Core i7 处理器的结构.....................................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-core processor)的结构..............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
Intel Core i 系列处理器的I/O 结构......................272
Intel PCH 的I/O 控制结构.............................273
6.3 小结........................................... 273
专栏 DRAM的刷新.................................274
第7 章 GPGPU 和超并行处理...............................276
7.1 GPGPU 的原理...................................... 277
3D 图形和GPU——需要大量计算..........................277
GPU 系统.........................................279
从GPU 到GPGPU..........................280
作为“超并行SIMD 处理器”的GPGPU......................................281
作为“超多线程处理器”的GPGPU........................283
专栏 Warp! .............................284
GPGPU 的内存层次结构................................285
GPGPU 中的多线程需要分割使用通用寄存器..............................287
CPU 和GPGPU 的巨大不同..........................288
7.2 GPGPU 编程........................... 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
· · · · · · (收起)
读后感
不过也只能说是比一般的计算机系统入门书稍微深入一点,话题面很广,所以也因此都无法深入。对于每个话题,只要多问一个为什么,就会发现他什么都没讲。 尤其是对于做科研的人来说,这本书都只是“介绍”了相关技术。我其实本来是比较期待他是否能介绍某些特定的体系结构中一...
不过也只能说是比一般的计算机系统入门书稍微深入一点,话题面很广,所以也因此都无法深入。对于每个话题,只要多问一个为什么,就会发现他什么都没讲。 尤其是对于做科研的人来说,这本书都只是“介绍”了相关技术。我其实本来是比较期待他是否能介绍某些特定的体系结构中一...
书刚看了3分之一,作为非计算机专业的人来说,并没有系统的接触过其他类似的书籍所以没法具体对比,只是自己以前也曾经看过一部分的量化研究方法,对比之下这本书更适合我这种没有太多基础的人来看,作为系统性的了解这本书绝对值得推荐,没有太过于枯燥的语言,读着会有继续...
书刚看了3分之一,作为非计算机专业的人来说,并没有系统的接触过其他类似的书籍所以没法具体对比,只是自己以前也曾经看过一部分的量化研究方法,对比之下这本书更适合我这种没有太多基础的人来看,作为系统性的了解这本书绝对值得推荐,没有太过于枯燥的语言,读着会有继续...
不过也只能说是比一般的计算机系统入门书稍微深入一点,话题面很广,所以也因此都无法深入。对于每个话题,只要多问一个为什么,就会发现他什么都没讲。 尤其是对于做科研的人来说,这本书都只是“介绍”了相关技术。我其实本来是比较期待他是否能介绍某些特定的体系结构中一...
用户评价
我最近有幸接触到一本名为《支撑处理器的技术》的书,虽然我对于书中详述的各种处理器架构和底层优化策略还处于初步探索阶段,但它所展现出的深度和广度已经深深吸引了我。从我对这本书初步的了解来看,它似乎深入剖析了现代计算核心的运作机制,包括但不限于CPU的设计演进、指令集架构(ISA)的演变对软件性能的影响,以及各种缓存机制(如L1、L2、L3缓存)如何协同工作以最大化数据访问效率。我尤其对书中可能涉及到的流水线技术、乱序执行、分支预测等现代处理器内部实现细节感到好奇。想象一下,作者是如何将那些抽象的逻辑门和时序信号转化为易于理解的理论框架,并通过具体的案例来阐释这些技术的精妙之处。书中提到的“支撑技术”或许涵盖了内存管理单元(MMU)、虚拟内存、中断处理、以及操作系统如何与硬件进行交互的底层机制,这些都是构建高效计算系统的基石。我期待书中能够详细解释如何通过软件层面(例如编译器优化、汇编语言编程)来更好地利用这些硬件特性,从而实现性能的飞跃。此外,书中关于功耗管理、散热设计以及不同应用场景下处理器选择的考量,也无疑会为我提供宝贵的实践指导。我已经在脑海中勾勒出这本书在我解决实际计算瓶颈问题时,将扮演多么重要的角色。
这本书,我必须说,它所描绘的处理器技术图景,远比我最初想象的要复杂且迷人。它不仅仅是关于速度的堆砌,更是一门关于如何精妙调度和管理海量晶体管,使其协同工作以完成指令的艺术。我特别关注书中可能对CPU流水线(pipeline)的深入解析,例如如何应对流水线冒险(hazards),以及像超标量(superscalar)和乱序执行(out-of-order execution)这样的技术如何打破指令执行的线性依赖,显著提升指令级并行度。对我而言,理解分支预测(branch prediction)的准确性对性能的影响至关重要,以及那些复杂的预测算法是如何被实现和优化的。这本书的“支撑技术”部分,我猜测也触及了内存层次结构(memory hierarchy)的优化,包括缓存一致性协议(cache coherence protocols)在多核处理器中的作用,以及如何通过软件手段减少缓存未命中(cache misses)的发生。还有,关于指令集架构(Instruction Set Architecture, ISA)的演进,比如RISC-V的兴起,以及它如何与x86、ARM等传统架构形成竞争与互补,这部分内容无疑极具前瞻性。它似乎还可能涉及一些低功耗设计(low-power design)的策略,对于移动设备和物联网(IoT)应用来说,这至关重要。总而言之,这本书提供了一个看待处理器如何工作的全景视角,从微观的逻辑门到宏观的系统集成,都充满了智慧的结晶。
我最近开始阅读《支撑处理器的技术》,这本书给我的初步印象是,它极大地拓宽了我对现代计算硬件的认知边界。我一直对处理器内部的工作原理充满好奇,而这本书似乎恰好填补了我在这方面的知识空白。我尤其对书中可能详细介绍的指令集架构(Instruction Set Architecture, ISA)的演进过程很感兴趣,比如从早期的复杂指令集计算机(CISC)到精简指令集计算机(RISC)的转变,以及RISC-V等新兴架构的出现,这些都直接影响着软件的开发效率和硬件的实现成本。书中提及的“支撑处理器的技术”可能也包含了对CPU内部各个单元如何协同工作的阐述,例如算术逻辑单元(ALU)、浮点单元(FPU)、寄存器文件(register file)以及它们之间的数据通路设计。我对书中关于提高处理器性能的关键技术,如流水线(pipelining)、超标量(superscalar)、乱序执行(out-of-order execution)以及分支预测(branch prediction)的解释尤为期待,理解这些技术如何协同工作以最大限度地发挥CPU的潜力,对我来说是学习过程中的一大亮点。此外,内存管理单元(MMU)、缓存层次(cache hierarchy)和缓存一致性(cache coherence)这些概念,在我看来是现代处理器高效运作的核心,我相信这本书会对此有深入的论述。
我最近阅读了《支撑处理器的技术》这本书,它为我描绘了一幅现代处理器精细运转的宏大图景。我尤其对书中对处理器流水线(pipeline)的深入解读感到着迷,例如如何通过增加流水线段数来提升时钟频率,以及如何应对数据冒险(data hazards)、控制冒险(control hazards)等问题,特别是书中可能提到的超流水线(superpipelining)和超标量(superscalar)技术,这都极大地扩展了我对并行处理的理解。我还对书中关于分支预测(branch prediction)的详细介绍充满了兴趣,它如何通过预测分支方向来避免流水线停顿,以及各种预测算法的优劣势分析,这对于优化程序执行效率至关重要。乱序执行(out-of-order execution)是现代处理器提升性能的核心技术之一,我非常期待书中能够详细解释它如何通过执行单元的动态调度、寄存器重命名(register renaming)和结果重排序(reordering of results)来最大限度地发挥指令级并行性(Instruction-Level Parallelism, ILP)。此外,内存管理单元(MMU)和缓存(cache)的设计,包括TLB(Translation Lookaside Buffer)的工作原理,以及如何通过软件优化来提升数据访问速度,这些也都是我非常关注的知识点。
我近期翻阅了《支撑处理器的技术》这本书,尽管我还在消化书中复杂的技术概念,但我不得不说,它所展现出的对现代处理器内部机制的深刻洞察力,让我对这个领域有了全新的认识。我特别想了解书中是如何剖析指令流水线(instruction pipeline)的实现细节,比如如何通过重叠指令的执行来提高吞吐量,以及当遇到分支指令时,分支预测(branch prediction)单元是如何工作的,它又是如何尽可能地减少分支误判带来的性能损失。书中对乱序执行(out-of-order execution)的解释,以及它如何通过保留站(reservation stations)和重排序缓冲区(reorder buffer)来实现指令的非线性执行,这无疑是处理器设计中最具挑战性的部分之一。我尤其期待书中关于内存层次结构(memory hierarchy)的论述,包括不同级别缓存(L1, L2, L3 cache)的设计原则,以及它们如何通过一致性协议(coherence protocols)来保证多核处理器中的数据一致性。此外,书中对指令集架构(ISA)的演变,比如从x86到ARM再到RISC-V的转变,以及它们在不同应用场景下的优劣势分析,这部分内容对我理解现代计算生态的演变至关重要。
从我目前的阅读体验来看,《支撑处理器的技术》这本书,它所传递的知识深度和广度,足以让任何一个对计算机底层原理有兴趣的人感到着迷。我尤其对书中关于处理器设计中那些“看不见”但至关重要的技术细节感到惊叹。例如,关于指令流水线(instruction pipeline)的每一个阶段——取指、译码、执行、访存、写回——是如何精确协调的,以及如何通过各种技术来解决流水线中的冲突(pipeline hazards),如数据冒险(data hazards)和控制冒险(control hazards),这些内容如果能被清晰地阐述,无疑将极大地加深我对CPU工作流程的理解。我还对书中可能涉及的动态调度(dynamic scheduling)技术,例如 Tomasulo 算法,感到非常好奇,它如何实现指令的乱序执行(out-of-order execution)并隐藏延迟。同时,关于分支预测(branch prediction)的各种算法,如静态预测、动态预测、基于历史的预测,以及它们如何影响程序执行效率,这本身就是一个非常值得深入研究的领域。我期待书中能够提供关于缓存(cache)设计的详细分析,包括不同层次缓存的容量、延迟、关联度(associativity)以及它们之间的替换策略(replacement policies),这些都直接影响着程序的内存访问性能。
《支撑处理器的技术》这本书,从我初步接触到的内容来看,它为我打开了一扇通往处理器核心运作机制的“黑箱”。我特别对书中可能详细介绍的处理器微架构(microarchitecture)设计中的各种技术感到好奇。例如,指令流水线(instruction pipeline)是如何通过将指令执行分解为多个阶段来实现并行处理的,以及如何应对各种流水线冒险(pipeline hazards)以确保指令的正确执行。书中对分支预测(branch prediction)的讲解,我认为是提升处理器性能的关键之一,我期待了解各种预测算法的实现原理以及它们如何降低因分支跳转带来的性能损失。我还对乱序执行(out-of-order execution)的技术细节充满期待,它如何通过动态调度指令、寄存器重命名(register renaming)以及重排序缓冲区(reorder buffer)来隐藏延迟,充分利用指令级并行性(Instruction-Level Parallelism, ILP)。此外,关于缓存(cache)的设计,包括其层次结构、容量、延迟、关联度以及替换策略,这些都会直接影响程序执行效率,我希望能从书中获得深入的理解。
在我研读《支撑处理器的技术》这本书的过程中,我越发感到它不仅仅是关于硬件参数的堆砌,更是对处理器如何将复杂的计算任务分解、调度并高效执行的深度剖析。我特别关注书中对指令流水线(instruction pipeline)的解释,包括如何通过增加流水线深度来提高时钟频率,以及如何通过技术手段来解决流水线冒险(pipeline hazards),比如数据前推(data forwarding)和气泡插入(bubble insertion)。书中对乱序执行(out-of-order execution)的阐述,特别是它如何通过执行缓冲(execution buffers)、保留站(reservation stations)和重排序缓冲区(reorder buffer)来维持指令的正确执行顺序,这让我对处理器的动态调度能力有了更深的认识。我同样对书中关于分支预测(branch prediction)的详细讨论充满期待,理解其各种算法(例如基于历史的预测、模式识别预测)如何工作,以及它们如何减少因分支指令带来的流水线停顿。此外,内存层次结构(memory hierarchy)的优化,包括多级缓存(multi-level caches)的设计、缓存一致性协议(cache coherence protocols)的实现,以及如何通过软件优化来提高缓存命中率,这些都是我希望深入了解的内容。
我最近购入的《支撑处理器的技术》这本书,着实让我感受到了处理器设计背后隐藏的复杂性和精妙性。我特别期待书中能够深入浅出地讲解现代CPU是如何通过流水线(pipelining)技术来提高指令吞吐量,以及如何处理流水线中出现的各种冒险(hazards),例如数据冒险、结构冒险和控制冒险。书中对分支预测(branch prediction)机制的阐述,包括其预测准确性对程序执行性能的巨大影响,以及各种预测算法的实现细节,这部分内容对我来说至关重要。我还对书中可能涉及到的缓存(cache)设计原理很感兴趣,例如 L1、L2、L3 缓存的容量、延迟、关联度,以及它们之间的配合工作模式,还有缓存一致性协议(cache coherence protocols)在多核处理器中的作用。我期待书中能够清晰地解释乱序执行(out-of-order execution)的实现,它如何通过执行单元的动态调度和结果的重排序来隐藏指令延迟,最大化处理器的利用率。此外,书中关于内存管理单元(MMU)和虚拟内存(virtual memory)的解释,以及它们如何与操作系统协同工作,为应用程序提供安全、高效的内存访问环境,这同样是我关注的重点。
这本书,在我初步阅读后,给我最深刻的感受是它对处理器性能优化所涉及的方方面面都给予了详尽的解读。我尤其期待书中能够对CPU内部的微架构(microarchitecture)层面进行深入的剖析,比如指令解码(instruction decoding)阶段是如何将复杂指令转换为微操作(micro-operations)的,以及执行单元(execution units)是如何并行处理这些微操作的。书中对于乱序执行(out-of-order execution)的讲解,我预估会详细介绍其背后的关键组件,如指令调度(instruction scheduling)、寄存器重命名(register renaming)和重排序缓冲区(reorder buffer),这些技术如何协同工作来提高指令级并行性(Instruction-Level Parallelism, ILP)是我的主要关注点。我还对书中关于缓存(cache)的设计和优化策略抱有浓厚的兴趣,比如缓存行的填充(cache line filling)、写策略(write policies,如写回write-back和写通write-through)、以及如何通过软件手段来提高缓存命中率(cache hit rate)。内存管理单元(MMU)的运作原理,它如何支持虚拟内存(virtual memory)和地址翻译(address translation),以及这其中涉及到的TLB(Translation Lookaside Buffer)缓存,这些都是我渴望了解的细节。
较少见到的中文的 计算核心的体系结构的书。 x86,SPARC,IBM Power 处理器架构和AMD 5870,Nvidia Fermi GPU。对理解计算机工作和编程有帮助。无可执行代码演示,实用性不强。
大赞,通俗易懂,应该作为大学cs 科系的必读 ,详细介绍cpu ,内存,外围IO设备 等,了解系统cpu 系统 how to work。
大赞,通俗易懂,应该作为大学cs 科系的必读 ,详细介绍cpu ,内存,外围IO设备 等,了解系统cpu 系统 how to work。
kita~~~~~~ (审校路过)
一句多余的话也没有