Ⅻ 2.17实例:x86指令集…101 3.11练习题 ………4… 173 2.17.1 intel x86的改进 …101 第4章处理器…… 182 2.17.2x86寄存器和数据寻址模式…103 4.1引言…… 182 2.17.3x86整数操作 …104 4.1.1一个基本的MIPS实现…183 2.17.4x86指令编码… 106 4.1.2实现方式概述 …183 2.17.5x86总结…107 4.2逻辑设计惯例…… 185 2.18谬误与陷阱… 107 4.3建立数据通路 44444t… 187 2.19本章小结… 108 4.4一个简单的实现机制 192 2.20拓展阅读…… 110 4.4.1ALU控制… 192 2.21练习题 110 44.2主控制单元的设计………194 第3章计算机的算术运算…135 4.4.3数据通路的操作…… 197 3.1引言… 135 4.4.4控制的结束…199 3.2加法和减法… 135 4.4.5为什么不使用单周期实现方式…201 3.2.1多媒体算术运算 …… 137 4.5流水线概述 202 3.2.2小结… 138 4.5.1面向流水线的指令集设计…205 3.3乘法… 139 4.5.2流水线冒险…205 3.3.1顺序的乘法算法和硬件… 139 4.5.3对流水线概述的小结… 210 3.3.2有符号乘法… 141 4.6流水线数据通路及其控制… 211 3.3.3更快速的乘法 142 4,6.1图形化表示的流水线… 219 3.3.4MPS中的乘法 142 4.6.2流水线控制…222 3.3.5小结… 142 4.7数据冒险:转发与阻塞…225 3.4除法… 143 4.8控制冒险…234 3.4.1除法算法及其硬件结构… 143 4.8.1假定分支不发生…234 3.4.2有符号除法 145 4.8.2缩短分支的延迟 ………,235 3.4.3更快速的除法 …146 4.8.3动态分支预测 …237 3.4.4MIPS中的除法…146 4.8.4流水线小结 …239 3.4.5小结… 147 4.9异常…240 3.5浮点运算… 148 4.9.1异常在M体系结构中的处理…241 3.5.1浮点表示… 149 4.9.2在流水线实现中的异常…242 3.5.2浮点加法… 152 4.10并行和高级指令级并行 …245 3.5.3浮点乘法 44, 154 4.10.1推测的概念…… 246 3.5.4MIPS中的浮点指令 。…004004。 157 4.10.2静态多发射处理器 …247 3.5.5算术精确性 162 4.10.3动态多发射处理器 250 3.5.6小结… 164 4.11实例:AMD Opteron X4(Barcelona) 3.6并行性和计算机算术:结合律… 165 流水线…253 3.7实例:x86的浮点…165 4.12 高级主题:通过硬件设计语言描述 3.7.1x86浮点体系结构…166 和建模流水线来介绍数字设计以及 3.7.2 Intel SIMD流扩展2(SSE2) 更多流水线示例… 255 浮点体系结构 …167 4.13谬误与陷阱… 255 3.8谬误与陷阱… 168 4.14本章小结 …256 3.9本章小结… 170 4.15拓展阅读 4004.04。。00。年 257 3.10拓展阅读 …172 4.16练习题 257 PDG
N 第5章大容量和高速度:开发存储器 5.7.1一个简单的cache……330 层次结构……280 5.7.2有限状态机……331 5.1 引言…280 5.7.3一个简单的cache控制器的 5.2 cache的基本原理…283 有限状态机…333 5.2.1 cache访问…285 5.8并行与存储器层次结构:cache 5.2.2 cache缺失处理…· 288 一致性……………334 5.2.3写操作处理……… 289 5.8.1实现一致性的基本方案…335 5.2.4-个cache的例子:内置 5.8.2监听协议…335 FastMATH处理器…,290 5.9高级内容:实现cache控制器…336 5.2.5设计支持cache的存储系统…292 5.10实例:AMD Opteron X4(Barcelona)和 5.2.6小结…… 294 Intel Nehalem的存储器层次结构…337 5.3 cache性能的评估和改进 …295 5.10.】Nehalem和Opteron的存储器 5.3.1通过更灵活地放置块来减少 层次结构…337 cache缺失……297 5.10.2减少缺失代价的技术 …339 5.3.2在cache中查找一个块… 300 5.11谬误和陷阱… 340 5.3.3替换块的选择…302 5.12本章小结…342 5.3.4使用多级cache结构减少缺失 5.13拓展阅读 ……343 代价……302 5.14练习题…343 5.3.5小结…305 第6章存储器和其他/0主题…355 5.4虚拟存储器… 305 61引言…355 5.4.1页的存放和查找…308 6.2可信度、可靠性和可用性…357 5.4.2缺页… 309 6.3磁盘存储器…359 5.4.3关于写……3l2 6.4.快闪式存储器…362 5.4.4加快地址转换:TLB…312 6.5连接处理器、内存以及/0设备…363 5.4.5集成虚拟存储器、TmB和cache…315 6.5.1互联基础…364 5.4.6虚拟存储器中的保护…317 6.5.2x86处理器的/0互联… 365 5.4.7处理TLB缺失和缺页… 318 6.6为处理器、内存和操作系统提供 5.4.8小结…322 /0设备接口…366 5.5存储器层次结构的一般架构… 323 6.6.1给/0设备发送指令…367 5.5.1问题1:一个块可以被放在何处…323 6.6.2与处理器通信…368 5.5.2问题2:如何找到一个块… 324 6.6.3中断优先级… 369 5.5.3问题3:当cache缺失时替换 6.6.4在设备与内存之间传输数据…370 哪一块… 325 6.6.5直接存储器访问和内存系统…371 5.5.4问题4:写操作如何处理… 325 6.7V0性能度量:磁盘和文件系统 5.5.53C:一种理解存储器层次结构 的例子…372 行为的直观模型…326 6.7.1事务处理/0基准程序…372 5.6虚拟机… 328 6.7.2文件系统和Wb/0的 5.6.1虚拟机监视器的必备条件…329 基准程序……373 5.6.2指令集系统结构(缺乏)对 6.8设计/0系统…373 虚拟机的支持…329 6.9并行性与V0:廉价磁盘冗余阵列…374 5.6.3保护和指令集系统结构…329 6.9.1无冗余(RAD0) …376 5.7使用有限状态机来控制简单的cache…330 6.9.2镜像(RAD1)...376 PDG
W 6.9.3错误检测和纠错码(RAID2)·376 7.15练习题…… 429 6.9.4位交叉奇偶校验(RAD3)…376 附录A图形和计算GPU… 439 6.9.5块交叉奇偶校验(RAID4)…376 A.1引言 … 439 6.9.6分布式块交叉奇偶校验 A.1.1GPU发展简史 …439 (RAID 5) …377 A.1.2异构系统 …440 6.9.7P+Q冗余(RAID6) …378 A.1.3GPU发展成了可扩展的 6.9.8RAID小结…378 并行处理器…440 6.10实例:Sun Fire x4150服务器…379 A.1.4为什么使用CUDA和GPU 6.11 高级主题:网络…383 计算…440 6.12谬误与陷阱………383 A.1.5GPU统一了图形和计算 ……441 6.13本章小结 ……386 A1.6GPU可视化计算的应用…441 6.14拓展阅读 …387 A2GPU系统架构…441 6.15练习题 387 A.2.1异构CPU-GPU系统架构…442 第7章多核、多处理器和集群… 394 A.2.2GPU接口和驱动… 443 7.1引言…394 A.2.3图形逻辑流水线 ……443 7.2创建并行处理程序的难点……396 A2.4将图形流水线映射到统一的 7.3共享存储多处理器…………398 GPU处理器…443 7.4集群和其他消息传递多处理器…400 A.2.5基本的统一GPU结构 444 7.5硬件多线程… 403 A.3可编程GPU ..... 445 7.6SISD、MIMD、SIMD、SPMD和 A3.1为实时图形编程… 446 向量机…………404 A3.2逻辑图形流水线 888848888e4。e。e04 446 7.6.1在x86中的SMD:多媒体扩展…405 A3.3图形渲染程序 ………447 7.6.2向量机……406 A.3.4像素渲染示例 447 7.6.3向量与标量的对比…407 A.3.5并行计算应用编程 448 7.6.4向量与多媒体扩展的对比…408 A.3.6 使用CUDA进行可扩展并行 7.7图形处理单元简介 ………408 编程…449 7.7.1 NVIDIA GPU体系结构简介 …410 A.3.7一些限制 453 7.7.2深入理解GPU…411 A3.8体系结构隐含的问题…453 7.8多处理器网络拓扑简介…412 A.4多线程的多处理器架构 …454 7.9多处理器基准测试程序… 415 A4.1大规模多线程…454 7.10 Roofline:一个简单的性能模型 417 A.4.2多处理器体系结构 …455 7.10.1 Roofline模型 418 A.4.3单指令多线程(SMT) …456 7.10.2两代0 pteron的比较… 419 A.4.4 SIMT warp执行和分支 457 7.11实例:使用屋顶线模型评估四种 A.4.5管理线程和线程块 ……457 多核处理器……422 A4.6线程指令…458 7.11.14个多核系统… 422 A4.7指令集架构(ISA) 458 7.11.2稀疏矩阵… 424 A.4.8流处理器(SP) …… 461 7.11.3结构化网格…425 A.4.9特殊功能单元(SFU) …461 7.11.4生产率… 426 A.4.10与其他多处理器的比较 **……461 7.12谬误与陷阱… 427 A.4.11 多线程多处理器总结 462 7.13本章小结 428 A5并行存储系统… 462 7.14拓展阅读 429 A.5.1 DRAM的考虑 ……462 PDG
M A.5.2 cache …………463 A10小结 489 A.5.3 MMU 4t4……444…… 463 A.11拓展阅读 …489 A.5.4存储器空间………………… 463 附录B汇编器、链接器和SPIM A.5.5全局存储器 463 仿真器… 490 A.5.6共享存储器 464 B.1引言… 490 A.5.7局部存储器 4444 464 B.1.1什么时候使用汇编语言… 493 A.5.8常量存储器 ……464 B.1.2汇编语言的缺点 …493 A.5.9纹理存储器 464 B.2汇编器… 494 A.5.10表面 465 B.2.1目标文件的格式 495 A.5.11load/store访问 …465 B.2.2附加工具 496 A.5.12R0P……… 465 B.3链接器…… 498 A.6浮点算术…465 B.4加载… 499 人6.1支持的格式……………… 465 B.5内存的使用…499 A.6.2基本算术… 465 B.6过程调用规范…500 A6.3专用算术…466 B.6.1过程调用 …502 A6.4性能……… 467 B.6.2过程调用举例 503 A.6.5双精度……467 B.6.3另外一个过程调用的例子…505 A.7资料:NVIDIA GeForce88O0 468 B.7异常和中断… 507 A7.1流处理器阵列(SPA) ……468 B.8输人和输出… 509 A.7.2纹理/处理器簇(TPC) ……469 B.9 SPIM 511 A.7.3流多处理器(SM)…470 B.10 MIPS R2000汇编语言…513 A7.4指令集…471 B.10.1寻址方式…514 A.7.5流处理器(SP) 471 B.10.2汇编语法…515 A.7.6特殊功能单元(S)… 471 B.10.3MIPS指令编码 40… 515 A.7.7光栅化… 471 B.10.4指令格式… 516 A.7.8光栅操作处理器(ROP)和 B.10.5常数操作指令 520 存储系统…471 B.10.6比较指令… 520 A.7.9可扩展性… 472 B.10.7分支指令… 521 A.7.10性能 40404… 472 B.10.8跳转指令… 523 A7.11密集线性代数性能…472 B.10.9陷阱指令… 523 A.7.12FFT性能… 473 B.10.10取数指令 …525 A.7.13排序性能 474 B.10.11保存指令 526 A.8资料:将应用映射到GPU 474 B.10.12数据传送指令 …527 A.8.1稀疏矩阵 …475 B.10.13浮点运算指令 …528 A.8.2在共享存储器中进行缓存…477 B.10.14异常和中断指令 532 A8.3扫描和归约…… 478 B.11小结… 533 A8.4基数排序…… 480 B.12参考文献 …533 A8.5GPU上的N-Body应用…482 B.13 练习题 …533 A9谬误与陷阱…… 486 PDG
第1章 Computer Organization and Design:The Hardware/Software Interface,4E 计算机概要与技术 我们可以完成更多重要的操作而不必考虑其完成的过程,这促进了文明的进步。 一Alfred North Whitehead,《An Introduction to Mathematics)》,Igli 1.1引言 欢迎阅读本书!非常高兴有这样的机会和大家一起共享令人兴奋的计算机系统世界。这并 不是个枯燥无味的领域,其进步不像冰河期那般漫长,新思想也不会因为受到忽视而萎缩。事 实上,计算机是一种令人难以置信的、激动人心的信息技术工业的产物,其相关产品几乎占全美 国民生产总值的10%,并按摩尔定律一直持续增长。在过去的二十多年里,出现了许多导致计 算产业革命的新型计算机,但是这些计算机很快就被更好的计算机所取代。 电子计算自20世纪40年代后期出现以来,其创新性的竞争导致了史无前例的进步。如果运 输业的发展速度也像计算器工业那样快,那么今天我们从纽约到伦敦的旅行时间只需1秒钟,花 费只有几美分。想象一下,这样的进步将如何改变社会一生活在南太平洋的塔希提岛,而工作 在旧金山,傍晚去莫斯科吃夜宵一你能够想象得出这种进步意味着什么。 计算机已导致人类文明的第三次革命一信息革命,它是沿着农业革命、工业革命的发展 方向产生的。信息革命导致了人类能力和智慧的成倍增长,自然而深刻地影响着我们的日常生 活,甚至改变了寻求新知识的方法。现在有一种科学探索的新方式,即计算科学家联合理论和实 验科学家,共同探索天文学、生物学、化学和物理学的前沿问题。 计算机革命一直在向前推进。每当计算成本降低10倍,计算机的发展机遇就会增加10倍。 原本经济上不可行的应用,突然变得可行了。例如,下述的各项应用在过去曾经是“计算机科 学幻想”: ·车载计算机在20世纪80年代初微处理器的性能和价格得到极大改进之前,用计算机 来控制汽车几乎是天方夜谭。而今天,用计算机控制汽车发动机是极为普遍的应用,车 载计算机不仅改进了燃油效率,减轻了污染,还通过防险刹车和安全气囊实现了撞车 保护。 ·手机谁曾想到计算机系统的发展会产生移动电话,让人们几乎在全世界的任何地方都 可以自由通信。 ·人类基因项目目前用于绘图和分析人类基因序列的计算机设备价值达几亿美元,这在 10多年前就更加昂贵了。然而,随着计算机设备价格的持续下降,有望在未来实现按个 人基因序列来治疗疾病。 ·万维网在编写本书第1版时,万维网尚不存在,而现在万维网已经改变了整个社会。 在许多地方,它已取代了传统的图书馆。 ·搜索引擎随着万维网规模的扩大和价值的与日俱增,如何快速精确地找到所需信息变 得越来越重要。今天,如果没有搜索引擎,许多人在万维网中将寸步难行。 显而易见,计算机技术的进步儿乎影响着社会的每一个方面。硬件的进步使得程序员可以 编写出各种优秀的应用软件,进而证实计算机几乎是无所不能的。今天的科学幻想在未来就会 成为现实,诸如虚拟世界、实用级别的语音识别和个性化保健等技术正在向我们走来