作者 |
[美]威廉·斯托林斯(William Stallings) |
丛书名 |
计算机科学丛书 |
出版社 |
机械工业出版社 |
ISBN |
9787111688358 |
简要 |
简介 |
内容简介书籍计算机书籍 本书是计算机组成与体系结构领域的经典教材。它对组成与体系结构领域的必要基础知识进行了全面的介绍。同时,本书涉及领域的前沿进展。与前一版相比,第10版对许多主题进行了修订,并增加了新内容,包括GPGPU、异构多核处理器、嵌入式系统、微控制器、云计算、系统性能、存储器、直接缓存访问、Intel酷睿微架构等。本书对涉及的理论知识辅以充分的例子,其中大多数例子都来自两种使用广泛的指令集,即x86和ARM。适合作为高校计算机及相关专业学生的教材,对从事计算机组成与体系结构研究和工作的人员也有很大的参考价值。 |
目录 |
译者序 序 前言 作者简介 第一部分 引言 第1章 基本概念和计算机演化 2 1.1 组成与体系结构 2 1.2 结构与功能 3 1.2.1 功能 3 1.2.2 结构 4 1.3 计算机简史 8 1.3.1 第一代:真空管 9 1.3.2 第二代:晶体管 13 1.3.3 第三代:集成电路 15 1.3.4 第三代以后 18 1.4 Intel x86体系结构的演化 20 1.5 嵌入式系统 22 1.5.1 物联网 23 1.5.2 嵌入式操作系统 23 1.5.3 应用处理器和专用处理器 23 1.5.4 微处理器与微控制器 24 1.5.5 嵌入式与深度嵌入式系统 24 1.6 ARM体系结构 25 1.6.1 ARM的演进 25 1.6.2 指令集架构 25 1.6.3 ARM产品 26 1.7 云计算 29 1.7.1 基本概念 29 1.7.2 云服务 30 1.8 关键词、复习题和练习题 31 第2章 性能问题 34 2.1 优化性能设计 34 2.1.1 微处理器速度 35 2.1.2 性能平衡 35 2.1.3 芯片组成与体系结构的改进 37 2.2 多核、MIC和GPGPU 38 2.3 Amdahl定律和Little定律 39 2.3.1 Amdahl定律 39 2.3.2 Little定律 40 2.4 计算机性能的基本度量 41 2.4.1 时钟速度 42 2.4.2 指令执行速率 42 2.5 计算均值 44 2.5.1 算术均值 45 2.5.2 调和均值 46 2.5.3 几何均值 47 2.6 基准测试和SPEC 49 2.6.1 基准测试原则 49 2.6.2 SPEC基准测试 50 2.7 关键词、复习题和练习题 54 第二部分 计算机系统 第3章 计算机功能与互连的顶层视图 60 3.1 计算机组件 60 3.2 计算机功能 62 3.2.1 取指和执行 62 3.2.2 中断 65 3.2.3 I/O功能 71 3.3 互连结构 71 3.4 总线互连 72 3.5 点对点互连 74 3.5.1 QPI物理层 75 3.5.2 QPI链接层 76 3.5.3 QPI路由层 77 3.5.4 QPI协议层 77 3.6 PCI Express 77 3.6.1 PCI物理和逻辑架构 78 3.6.2 PCIe物理层 79 3.6.3 PCIe事务层 80 3.6.4 PCIe数据链路层 82 3.7 关键词、复习题和练习题 83 第4章 高速缓存 87 4.1 计算机存储系统概述 87 4.1.1 存储系统的特性 87 4.1.2 存储器层次结构 89 4.2 高速缓存存储器原理 92 4.3 高速缓存设计要素 94 4.3.1 高速缓存地址 94 4.3.2 高速缓存大小 95 4.3.3 映射函数 96 4.3.4 替换算法 105 4.3.5 写策略 106 4.3.6 数据行大小 107 4.3.7 高速缓存的数量 107 4.4 Pentium 4高速缓存结构 109 4.5 关键词、复习题和练习题 111 附录4A 两级存储的性能特征 116 第5章 内部存储器 121 5.1 半导体存储器 121 5.1.1 组成 121 5.1.2 DRAM和SRAM 121 5.1.3 ROM的类型 123 5.1.4 芯片逻辑 124 5.1.5 芯片封装 126 5.1.6 模块组织 126 5.1.7 交叉存储器 128 5.2 纠错 128 5.3 DDR DRAM 131 5.3.1 同步DRAM 132 5.3.2 DDR SDRAM 133 5.4 闪存 135 5.4.1 操作 135 5.4.2 NOR和NAND闪存 135 5.5 新的非易失性固态存储器技术 137 5.5.1 STT-RAM 137 5.5.2 PCRAM 138 5.5.3 ReRAM 139 5.6 关键词、复习题和练习题 139 第6章 外部存储器 143 6.1 磁盘 143 6.1.1 磁性读写机制 143 6.1.2 数据组织和格式 144 6.1.3 物理特性 146 6.1.4 磁盘性能参数 147 6.2 RAID 149 6.2.1 RAID级别0 151 6.2.2 RAID级别1 153 6.2.3 RAID级别2 153 6.2.4 RAID级别3 154 6.2.5 RAID级别4 154 6.2.6 RAID级别5 155 6.2.7 RAID级别6 155 6.3 固态驱动器 156 6.3.1 SSD与HDD的比较 156 6.3.2 SSD组成 157 6.3.3 实际问题 157 6.4 光存储器 158 6.4.1 光盘 158 6.4.2 数字通用光盘 160 6.4.3 高清光盘 161 6.5 磁带 162 6.6 关键词、复习题和练习题 163 第7章 输入/输出 166 7.1 外部设备 167 7.1.1 键盘和监视器 167 7.1.2 磁盘驱动器 168 7.2 I/O模块 168 7.2.1 模块功能 168 7.2.2 I/O模块结构 169 7.3 可编程I/O 170 7.3.1 可编程I/O概述 170 7.3.2 I/O命令 170 7.3.3 I/O指令 171 7.4 中断驱动I/O 172 7.4.1 中断处理 173 7.4.2 设计问题 175 7.4.3 Intel 82C59A中断控制器 176 7.4.4 Intel 8255A可编程外设接口 177 7.5 直接内存访问 180 7.5.1 可编程I/O和中断驱动I/O的缺点 180 7.5.2 DMA功能 180 7.5.3 Intel 8237A DMA控制器 182 7.6 直接高速缓存访问 184 7.6.1 使用共享的最后一级高速缓存的DMA 184 7.6.2 高速缓存相关的性能问题 186 7.6.3 直接高速缓存访问策略 187 7.6.4 直接数据I/O 188 7.7 I/O通道和处理器 189 7.7.1 I/O功能的演化 189 7.7.2 I/O通道的特性 190 7.8 外部互连标准 190 7.8.1 通用串行总线 190 7.8.2 FireWire串行总线 191 7.8.3 小型计算机系统接口 191 7.8.4 Thunderbolt 191 7.8.5 InfiniBand 192 7.8.6 PCI Express 192 7.8.7 SATA 192 7.8.8 Ethernet 192 7.8.9 Wi-Fi 192 7.9 IBM zEnterprise EC12 I/O结构 193 7.9.1 通道结构 193 7.9.2 I/O系统组织 194 7.10 关键词、复习题和练习题 196 第8章 操作系统的支持 200 8.1 操作系统概述 200 8.1.1 操作系统的目标与功能 200 8.1.2 操作系统类型 202 8.2 调度 208 8.2.1 长期调度 208 8.2.2 中期调度 208 8.2.3 短期调度 209 8.3 内存管理 212 8.3.1 交换 212 8.3.2 分区 213 8.3.3 分页 214 8.3.4 虚拟内存 216 8.3.5 转换后援缓冲器 218 8.3.6 分段 219 8.4 Intel x86内存管理 220 8.4.1 地址空间 220 8.4.2 分段 220 8.4.3 分页 222 8.5 ARM内存管理 224 8.5.1 内存系统组织 224 8.5.2 虚拟内存地址转换 224 8.5.3 内存管理格式 225 8.5.4 访问控制 227 8.6 关键词、复习题和练习题 227 第三部分 算术与逻辑 第9章 数字系统 232 9.1 十进制系统 232 9.2 按位记数系统 233 9.3 二进制系统 233 9.4 二进制与十进制的转换 233 9.4.1 整数 234 9.4.2 小数 234 9.5 十六进制表示 235 9.6 关键词和练习题 237 第10章 计算机算术运算 238 10.1 算术和逻辑单元 238 10.2 整数表示 239 10.2.1 原码表示法 239 10.2.2 二进制补码表示法 240 10.2.3 范围的扩展 242 10.2.4 定点表示法 243 10.3 整数算术运算 243 10.3.1 非 243 10.3.2 加法和减法 244 10.3.3 乘法 246 10.3.4 除法 251 10.4 浮点表示 254 10.4.1 原则 254 10.4.2 二进制浮点表示的IEEE标准 256 10.5 浮点算术运算 260 10.5.1 加减法 260 10.5.2 乘除法 262 10.5.3 精度考量 263 10.5.4 二进制浮点算术运算的IEEE标准 264 10.6 关键词、复习题和练习题 266 第11章 数字逻辑 270 11.1 布尔代数 270 11.2 门 272 11.3 组合电路 274 11.3.1 布尔函数的实现 274 11.3.2 多路复用器 281 11.3.3 译码器 282 11.3.4 只读存储器 283 11.3.5 加法器 285 11.4 时序电路 287 11.4.1 触发器 287 11.4.2 寄存器 290 11.4.3 计数器 290 11.5 可编程逻辑器件 293 11.5.1 可编程逻辑阵列 293 11.5.2 现场可编程门阵列 295 11.6 关键词和练习题 296 第四部分 中央处理单元 第12章 指令集:特性与功能 300 12.1 机器指令特性 300 12.1.1 机器指令的要素 300 12.1.2 指令表示 301 12.1.3 指令类型 302 12.1.4 地址个数 303 12.1.5 指令集设计 304 12.2 操作数类型 305 12.2.1 数字 305 12.2.2 字符 306 12.2.3 逻辑数据 306 12.3 Intel x86和ARM数据类型 306 12.3.1 x86数据类型 306 12.3.2 ARM数据类型 308 12.4 操作类型 309 12.4.1 数据传输 310 12.4.2 算术运算 311 12.4.3 逻辑运算 311 12.4.4 转换 313 12.4.5 输入/输出 313 12.4.6 系统控制 314 12.4.7 转移控制 314 12.5 Intel x86和ARM操作类型 317 12.5.1 x86操作类型 317 12.5.2 ARM操作类型 321 12.6 关键词、复习题和练习题 323 附录12A 小端序、大端序和双端序 328 第13章 指令集:寻址模式与格式 331 13.1 寻址模式 331 13.1.1 立即数寻址 333 13.1.2 直接寻址 333 13.1.3 间接寻址 333 13.1.4 寄存器寻址 333 13.1.5 寄存器间接寻址 334 13.1.6 偏移寻址 334 13.1.7 栈寻址 336 13.2 x86和ARM寻址模式 336 13.2.1 x86寻址模式 336 13.2.2 ARM寻址模式 338 13.3 指令格式 340 13.3.1 指令长度 340 13.3.2 位的分配 341 13.3.3 变长指令 343 13.4 x86和ARM指令格式 346 13.4.1 x86指令格式 346 13.4.2 ARM指令格式 348 13.5 汇编语言 350 13.6 关键词、复习题和练习题 351 第14章 处理器结构与功能 355 14.1 处理器的组织 355 14.2 寄存器的组织 356 14.2.1 用户可见寄存器 356 14.2.2 控制和状态寄存器 358 14.2.3 微处理器寄存器组织示例 359 14.3 指令周期 360 14.3.1 间接周期 360 14.3.2 数据流 361 14.4 指令流水线 363 14.4.1 流水线策略 363 14.4.2 流水线性能 367 14.4.3 流水线冒险 368 14.4.4 处理分支 369 14.4.5 Intel 80486流水线 373 14.5 x86处理器系列 375 14.5.1 寄存器组织 375 14.5.2 中断处理 378 14.6 ARM处理器 380 14.6.1 处理器组织 380 14.6.2 处理器模式 381 14.6.3 寄存器组织 382 14.6.4 中断处理 383 14.7 关键词、复习题和练习题 384 第15章 精简指令集计算机 388 15.1 指令执行的特点 389 15.1.1 操作 390 15.1.2 操作数 390 15.1.3 过程调用 391 15.1.4 启示 391 15.2 使用大型寄存器文件 392 15.2.1 寄存器窗口 392 15.2.2 全局变量 394 15.2.3 大型寄存器文件与高速缓存 394 15.3 基于编译器的寄存器优化 395 15.4 精简指令集架构 397 15.4.1 为什么是CISC 397 15.4.2 精简指令集架构的特点 398 15.4.3 CISC与RISC特性 400 15.5 RISC流水线 401 15.5.1 规整指令的流水线 401 15.5.2 流水线优化 402 15.6 MIPS R4000 404 15.6.1 指令集 405 15.6.2 指令流水线 406 15.7 SPARC 408 15.7.1 SPARC寄存器组 409 15.7.2 指令集 410 15.7.3 指令格式 411 15.8 RISC与CISC之争 412 15.9 关键词、复习题和练习题 413 第16章 指令级并行与超标量处理器 416 16.1 概述 416 16.1.1 超标量与超流水 417 16.1.2 限制 418 16.2 设计问题 420 16.2.1 指令级并行性与机器并行性 420 16.2.2 指令发射策略 421 16.2.3 寄存器重命名 424 16.2.4 机器并行性 425 16.2.5 分支预测 425 16.2.6 超标量执行 426 16.2.7 超标量实现 426 16.3 Intel酷睿微架构 427 16.3.1 前端 429 16.3.2 无序执行逻辑 430 16.3.3 整数和浮点执行单元 431 16.4 ARM Cortex-A8 431 16.4.1 取指单元 433 16.4.2 指令译码单元 434 16.4.3 整数执行单元 436 16.4.4 SIMD和浮点流水线 437 16.5 ARM Cortex-M3 437 16.5.1 流水线结构 438 16.5.2 分支处理 439 16.6 关键词、复习题和练习题 440 第五部分 并行结构 第17章 并行处理 446 17.1 多处理器结构 446 17.1.1 并行处理器系统的类型 446 17.1.2 并行组织结构 447 17.2 对称多处理器 448 17.2.1 组织结构 449 17.2.2 多处理器操作系统设计考量 451 17.3 高速缓存一致性和MESI协议 451 17.3.1 软件解决方案 452 17.3.2 硬件解决方案 452 17.3.3 MESI协议 453 17.4 多线程和芯片多处理器 456 17.4.1 隐式和显式多线程 456 17.4.2 显式多线程的方法 457 17.5 集群 459 17.5.1 集群配置 460 17.5.2 操作系统设计问题 461 17.5.3 集群计算机体系结构 462 17.5.4 刀片服务器 463 17.5.5 集群与SMP的比较 464 17.6 非均匀内存访问 464 17.6.1 动机 465 17.6.2 组织 465 17.6.3 NUMA的优点和缺点 467 17.7 云计算 467 17.7.1 云计算要素 467 17.7.2 云计算参考架构 470 17.8 关键词、复习题和练习题 471 第18章 多核计算机 476 18.1 硬件性能问题 476 18.1.1 增加并行性和复杂性 476 18.1.2 能耗 477 18.2 软件性能问题 478 18.2.1 多核软件 478 18.2.2 应用程序示例:Valve游戏软件 480 18.3 多核组织结构 481 18.3.1 高速缓存的层级 481 18.3.2 同时多线程 483 18.4 异构多核组织结构 483 18.4.1 不同的指令集架构 483 18.4.2 等价指令集架构 486 18.4.3 高速缓存一致性和MOESI模型 488 18.5 Intel Core i7-990X 490 18.6 ARM Cortex-A15 MPCore 490 18.6.1 中断处理 492 18.6.2 高速缓存一致性 493 18.6.3 L2高速缓存一致性 494 18.7 IBM zEnterprise EC12大型机 494 18.7.1 组织结构 494 18.7.2 高速缓存结构 495 18.8 关键词、复习题和练习题 497 第19章 通用图形处理单元 499 19.1 CUDA基础 499 19.2 GPU与CPU 500 19.2.1 CPU与GPU架构之间的基本差异 501 19.2.2 性能与每瓦特性能比较 501 19.3 GPU架构概述 502 19.3.1 基准GPU架构 502 19.3.2 全芯片布局 502 19.3.3 流式多处理器架构的详细信息 504 19.3.4 了解存储器类型和编程的重要性 506 19.4 Intel Gen8 GPU 507 19.5 何时把GPU当作协处理器使用 511 19.6 关键词和复习题 511 第六部分 控制单元 第20章 控制单元操作 514 20.1 微操作 514 20.1.1 取指周期 515 20.1.2 间接周期 516 20.1.3 中断周期 517 20.1.4 执行周期 517 20.1.5 指令周期 518 20.2 处理器的控制 519 20.2.1 功能需求 519 20.2.2 控制信号 520 20.2.3 控制信号示例 521 20.2.4 处理器内部组织结构 522 20.2.5 Intel 8085 523 20.3 硬布线实现 526 20.3.1 控制单元输入 526 20.3.2 控制单元逻辑 527 20.4 关键词、复习题和练习题 528 第21章 微程序控制 530 21.1 基本概念 530 21.1.1 微指令 530 21.1.2 微程序控制单元 532 21.1.3 Wilkes控制 534 21.1.4 优缺点 536 21.2 微指令排序 537 21.2.1 设计注意事项 537 21.2.2 排序技术 537 21.2.3 地址生成 539 21.2.4 LSI-11微指令排序 540 21.3 微指令执行 540 21.3.1 微指令分类法 541 21.3.2 微指令编码 543 21.3.3 LSI-11微指令执行 544 21.3.4 IBM 3033微指令执行 547 21.4 TI 8800 548 21.4.1 微指令格式 549 21.4.2 微序列器 550 21.4.3 寄存器ALU 553 21.5 关键词、复习题和练习题 556 附录A 计算机组成和体系结构教学项目 附录B 汇编语言与相关主题 缩略语 参考文献 在线资源 附录C 系统总线 附录D 协议与协议架构 附录E 加扰 附录F 替换高速缓存策略 附录G 交叉存储器 附录H 国际基准字母表 附录I 栈 附录J Thunderbolt和Infiniband 附录K 虚拟存储器页替换算法 附录L 哈希表 附录M 递归过程 附录N 更多指令流水线内容 附录O 时序图 术语表 |