由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
[正版]套装4本 计算机组成与体系结构 深入理解计算机系统 计算机组成原理 计算机科学丛书 程序设计计算机组成概念与理
¥ ×1
店铺公告
为保障消费者合理购买需求及公平交易机会,避免因非生活消费目的的购买货囤积商品,抬价转售等违法行为发生,店铺有权对异常订单不发货且不进行赔付。异常订单:包括但不限于相同用户ID批量下单,同一用户(指不同用户ID,存在相同/临近/虚构收货地址,或相同联系号码,收件人,同账户付款人等情形的)批量下单(一次性大于5本),以及其他非消费目的的交易订单。
温馨提示:请务必当着快递员面开箱验货,如发现破损,请立即拍照拒收,如验货有问题请及时联系在线客服处理,(如开箱验货时发现破损,所产生运费由我司承担,一经签收即为货物完好,如果您未开箱验货,一切损失就需要由买家承担,所以请买家一定要仔细验货)。
关于退货运费:对于下单后且物流已发货货品在途的状态下,原则上均不接受退货申请,如顾客原因退货需要承担来回运费,如因产品质量问题(非破损问题)可在签收后,联系在线客服。
【套装4本】 计算机组成与体系结构 | ||
定价 | 446.00 | |
出版社 | 机械工业出版社 | |
版次 | 10072732 | |
出版时间 | ||
开本 | 16开 | |
作者 | ||
装帧 | 平装 | |
页数 | ||
字数 | ||
ISBN编码 | 9787111616368 |
《深入理解计算机系统(原书第3版)》
第二版销售突破100000册,第三版重磅上市!
理解计算机系统首*书目, 10余万程序员的共同选择
卡内基-梅隆、北京大学、清华大学、上海交通大学等国内外众多知名高校选用指定教材
从程序员视角全面剖析的实现细节,使读者深刻理解程序的行为,将所有计算机系统的相关知识融会贯通。
新版本全面基于X86-64位处理器
全新的阅读和学习体验:由国内名师录制章前导读,使读者可以了解各章的重点内容和知识关联,形成关于计算机系统的知识架构。并开设了本书的网络社区,读者可加入社区,获得本书相关学习资源,了解活动信息。
和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下:
基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。
处理器体系结构修改为支持64位字和操作的设计。
引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠。
扩充关于用GOT和PLT创建与位置无关代码的讨论,描述了更加强大的链接技术(比如库打桩)。
增加了对信号处理程序更细致的描述,包括异步信号安全的函数等。
采用新函数,更新了与协议无关和线程安全的网络编程。
《计算机组成与体系结构(原书第4版)》
全书揭示现代计算机的内部工作方式,采用大量真实的例子,引导读者逐步由浅入深地学习计算机体系结构的概念和理论。
《计算机组成与设计:硬件/软件接口(原书第5版)》
本书是计算机组成的经典教材,着眼于当前计算机设计中最基本的概念,详细展示软硬件件的关系,介绍当代计算机系统发展的主流技术和最新成就。
本书以MIPS处理器为例介绍计算机硬件技术、汇编语言、计算机算术、流水线以及存储器层次结构等基本技术。书中强调从串行处理到并行处理的最新革新,每章中都包含并行硬件和软件的主题,以软硬件协同设计发挥多核性能为最终目标。另外,本版与时俱进地使用了如ARMCortexA8和IntelCorei7等现代设计来说明计算机设计的基本原理。
本书适合作为高等院校计算机专业教材,对广大技术人员也有很高的参考价值。
《计算机组成原理》
本书共三部分。第 一 部分介绍了计算机体系结构的基本内容;第二部分介绍指令集体系结构,这是本书的核心,包括指令集的概念、计算机体系结构的一些重要问题,ARM系列微处理器,处理器适应视频编辑和现代多媒体应用的方法;第三部分介绍计算机是如何工作的,以及它在内部是如何组织的。
《深入理解计算机系统(原书第3版)》
出版者的话
中文版序一
中文版序二
译者序
前言
关于作者
第1章 计算机系统漫游1
1.1 信息就是位+上下文1
1.2 程序被其他程序翻译成不同的格式3
1.3 了解编译系统如何工作是大有益处的4
1.4 处理器读并解释储存在内存中的指令5
1.4.1 系统的硬件组成5
1.4.2 运行hello程序7
1.5 高速缓存至关重要9
1.6 存储设备形成层次结构9
1.7 操作系统管理硬件10
1.7.1 进程11
1.7.2 线程12
1.7.3 虚拟内存12
1.7.4 文件14
1.8 系统之间利用网络通信14
1.9 重要主题16
1.9.1 Amdahl定律16
1.9.2 并发和并行17
1.9.3 计算机系统中抽象的重要性19
1.10 小结20
参考文献说明20
练习题答案20
第一部分
程序结构和执行
第2章 信息的表示和处理22
2.1 信息存储24
2.1.1 十六进制表示法25
2.1.2 字数据大小27
2.1.3 寻址和字节顺序29
2.1.4 表示字符串34
2.1.5 表示代码34
2.1.6 布尔代数简介35
2.1.7 C语言中的位级运算37
2.1.8 C语言中的逻辑运算39
2.1.9 C语言中的移位运算40
2.2 整数表示41
2.2.1 整型数据类型42
2.2.2 无符号数的编码43
2.2.3 补码编码44
2.2.4 有符号数和无符号数之间的转换49
2.2.5 C语言中的有符号数与无符号数52
2.2.6 扩展一个数字的位表示54
2.2.7 截断数字56
2.2.8 关于有符号数与无符号数的建议58
2.3 整数运算60
2.3.1 无符号加法60
2.3.2 补码加法62
2.3.3 补码的非66
2.3.4 无符号乘法67
2.3.5 补码乘法67
2.3.6 乘以常数70
2.3.7 除以2的幂71
2.3.8 关于整数运算的最后思考74
2.4 浮点数75
2.4.1 二进制小数76
2.4.2 IEEE浮点表示78
2.4.3 数字示例79
2.4.4 舍入83
2.4.5 浮点运算85
2.4.6 C语言中的浮点数86
2.5 小结87
参考文献说明88
家庭作业88
练习题答案97
第3章 程序的机器级表示109
3.1 历史观点110
3.2 程序编码113
3.2.1 机器级代码113
3.2.2 代码示例114
3.2.3 关于格式的注解117
3.3 数据格式119
3.4 访问信息119
3.4.1 操作数指示符121
3.4.2 数据传送指令122
3.4.3 数据传送示例125
3.4.4 压入和弹出栈数据127
3.5 算术和逻辑操作128
3.5.1 加载有效地址129
3.5.2 一元和二元操作130
3.5.3 移位操作131
3.5.4 讨论131
3.5.5 特殊的算术操作133
3.6 控制135
3.6.1 条件码135
3.6.2 访问条件码136
3.6.3 跳转指令138
3.6.4 跳转指令的编码139
3.6.5 用条件控制来实现条件分支…141
3.6.6 用条件传送来实现条件分支…145
3.6.7 循环149
3.6.8 switch语句159
3.7 过程164
3.7.1 运行时栈164
3.7.2 转移控制165
3.7.3 数据传送168
3.7.4 栈上的局部存储170
3.7.5 寄存器中的局部存储空间172
3.7.6 递归过程174
3.8 数组分配和访问176
3.8.1 基本原则176
3.8.2 指针运算177
3.8.3 嵌套的数组178
3.8.4 定长数组179
3.8.5 变长数组181
3.9 异质的数据结构183
3.9.1 结构183
3.9.2 联合186
3.9.3 数据对齐189
3.10 在机器级程序中将控制与数据结合起来192
3.10.1 理解指针192
3.10.2 应用:使用GDB调试器193
3.10.3 内存越界引用和缓冲区溢出194
3.10.4 对抗缓冲区溢出攻击198
3.10.5 支持变长栈帧201
3.11 浮点代码204
3.11.1 浮点传送和转换操作205
3.11.2 过程中的浮点代码209
3.11.3 浮点运算操作210
3.11.4 定义和使用浮点常数212
3.11.5 在浮点代码中使用位级操作212
3.11.6 浮点比较操作213
3.11.7 对浮点代码的观察结论215
3.12 小结216
参考文献说明216
家庭作业216
练习题答案226
第4章 处理器体系结构243
4.1 Y86-64指令集体系结构245
4.1.1 程序员可见的状态245
4.1.2 Y86-64指令245
4.1.3 指令编码246
4.1.4 Y86-64异常250
4.1.5 Y86-64程序251
4.1.6 一些Y86-64指令的详情255
4.2 逻辑设计和硬件控制语言HCL256
4.2.1 逻辑门257
4.2.2 组合电路和HCL布尔表达式257
4.2.3 字级的组合电路和HCL整数表达式258
4.2.4 集合关系261
4.2.5 存储器和时钟262
4.3 Y86-64的顺序实现264
4.3.1 将处理组织成阶段264
4.3.2 SEQ硬件结构272
4.3.3 SEQ的时序274
4.3.4 SEQ阶段的实现277
4.4 流水线的通用原理282
4.4.1 计算流水线282
4.4.2 流水线操作的详细说明284
4.4.3 流水线的局限性284
4.4.4 带反馈的流水线系统287
4.5 Y86-64的流水线实现288
4.5.1 SEQ+:重新安排计算阶段288
4.5.2 插入流水线寄存器289
4.5.3 对信号进行重新排列和标号292
4.5.4 预测下一个PC293
4.5.5 流水线冒险295
4.5.6 异常处理306
4.5.7 PIPE各阶段的实现308
4.5.8 流水线控制逻辑314
4.5.9 性能分析322
4.5.10 未完成的工作323
4.6 小结325
参考文献说明326
家庭作业327
练习题答案331
第5章 优化程序性能341
5.1 优化编译器的能力和局限性342
5.2 表示程序性能345
5.3 程序示例347
5.4 消除循环的低效率350
5.5 减少过程调用353
5.6 消除不必要的内存引用354
5.7 理解现代处理器357
5.7.1 整体操作357
5.7.2 功能单元的性能361
5.7.3 处理器操作的抽象模型362
5.8 循环展开366
5.9 提高并行性369
5.9.1 多个累积变量370
5.9.2 重新结合变换373
5.10 优化合并代码的结果小结377
5.11 一些限制因素378
5.11.1 寄存器溢出378
5.11.2 分支预测和预测错误处罚379
5.12 理解内存性能382
5.12.1 加载的性能382
5.12.2 存储的性能383
5.13 应用:性能提高技术387
5.14 确认和消除性能瓶颈388
5.14.1 程序剖析388
5.14.2 使用剖析程序来指导优化390
5.15 小结392
参考文献说明393
家庭作业393
练习题答案395
第6章 存储器层次结构399
6.1 存储技术399
6.1.1 随机访问存储器400
6.1.2 磁盘存储406
6.1.3 固态硬盘414
6.1.4 存储技术趋势415
6.2 局部性418
6.2.1 对程序数据引用的局部性418
6.2.2 取指令的局部性419
6.2.3 局部性小结420
6.3 存储器层次结构421
6.3.1 存储器层次结构中的缓存422
6.3.2 存储器层次结构概念小结424
6.4 高速缓存存储器425
6.4.1 通用的高速缓存存储器组织结构425
6.4.2 直接映射高速缓存427
6.4.3 组相联高速缓存433
6.4.4 全相联高速缓存434
6.4.5 有关写的问题437
6.4.6 一个真实的高速缓存层次结构的解剖438
6.4.7 高速缓存参数的性能影响439
6.5 编写高速缓存友好的代码440
6.6 综合:高速缓存对程序性能的影响444
6.6.1 存储器山444
6.6.2 重新排列循环以提高空间局部性447
6.6.3 在程序中利用局部性450
6.7 小结450
参考文献说明451
家庭作业451
练习题答案459
第二部分
在系统上运行程序
第7章 链接464
7.1 编译器驱动程序465
7.2 静态链接466
7.3 目标文件466
7.4 可重定位目标文件467
7.5 符号和符号表468
7.6 符号解析470
7.6.1 链接器如何解析多重定义的全局符号471
7.6.2 与静态库链接475
7.6.3 链接器如何使用静态库来解析引用477
7.7 重定位478
7.7.1 重定位条目479
7.7.2 重定位符号引用479
7.8 可执行目标文件483
7.9 加载可执行目标文件484
7.10 动态链接共享库485
7.11 从应用程序中加载和链接共享库487
7.12 位置无关代码489
7.13 库打桩机制492
7.13.1 编译时打桩492
7.13.2 链接时打桩492
7.13.3 运行时打桩494
7.14 处理目标文件的工具496
7.15 小结496
参考文献说明497
家庭作业497
练习题答案499
第8章 异常控制流501
8.1 异常502
8.1.1 异常处理503
8.1.2 异常的类别504
8.1.3 Linux/x86-64系统中的异常505
8.2 进程508
8.2.1 逻辑控制流508
8.2.2 并发流509
8.2.3 私有地址空间509
8.2.4 用户模式和内核模式510
8.2.5 上下文切换511
8.3 系统调用错误处理512
8.4 进程控制513
8.4.1 获取进程ID513
8.4.2 创建和终止进程513
8.4.3 回收子进程516
8.4.4 让进程休眠521
8.4.5 加载并运行程序521
8.4.6 利用fork和execve运行程序524
8.5 信号526
8.5.1 信号术语527
8.5.2 发送信号528
8.5.3 接收信号531
8.5.4 阻塞和解除阻塞信号532
8.5.5 编写信号处理程序533
8.5.6 同步流以避免讨厌的并发错误540
8.5.7 显式地等待信号543
8.6 非本地跳转546
8.7 操作进程的工具550
8.8 小结550
参考文献说明550
家庭作业550
练习题答案556
第9章 虚拟内存559
9.1 物理和虚拟寻址560
9.2 地址空间560
9.3 虚拟内存作为缓存的工具561
9.3.1 DRAM缓存的组织结构562
9.3.2 页表562
9.3.3 页命中563
9.3.4 缺页564
9.3.5 分配页面565
9.3.6 又是局部性救了我们565
9.4 虚拟内存作为内存管理的工具565
9.5 虚拟内存作为内存保护的工具567
9.6 地址翻译567
9.6.1 结合高速缓存和虚拟内存570
9.6.2 利用TLB加速地址翻译570
9.6.3 多级页表571
9.6.4 综合:端到端的地址翻译573
9.7 案例研究:Intel Core i7/Linux内存系统576
9.7.1 Core i7地址翻译576
9.7.2 Linux虚拟内存系统580
9.8 内存映射582
9.8.1 再看共享对象583
9.8.2 再看fork函数584
9.8.3 再看execve函数584
9.8.4 使用mmap函数的用户级内存映射585
9.9 动态内存分配587
9.9.1 malloc和free函数587
9.9.2 为什么要使用动态内存分配589
9.9.3 分配器的要求和目标590
9.9.4 碎片591
9.9.5 实现问题592
9.9.6 隐式空闲链表592
9.9.7 放置已分配的块593
9.9.8 分割空闲块594
9.9.9 获取额外的堆内存594
9.9.10 合并空闲块594
9.9.11 带边界标记的合并595
9.9.12 综合:实现一个简单的分配器597
9.9.13 显式空闲链表603
9.9.14 分离的空闲链表604
9.10 垃圾收集605
9.10.1 垃圾收集器的基本知识606
9.10.2 Mark&Sweep垃圾收集器607
9.10.3 C程序的保守Mark&Sweep608
9.11 C程序中常见的与内存有关的错误609
9.11.1 间接引用坏指针609
9.11.2 读未初始化的内存609
9.11.3 允许栈缓冲区溢出610
9.11.4 假设指针和它们指向的对象是相同大小的610
9.11.5 造成错位错误611
9.11.6 引用指针,而不是它所指向的对象611
9.11.7 误解指针运算611
9.11.8 引用不存在的变量612
9.11.9 引用空闲堆块中的数据612
9.11.10 引起内存泄漏613
9.12 小结613
参考文献说明613
家庭作业614
练习题答案617
第三部分
程序间的交互和通信
第10章 系统级I/O622 10.1 Unix I/O622
10.2 文件623
10.3 打开和关闭文件624
10.4 读和写文件625
10.5 用RIO包健壮地读写626
10.5.1 RIO的无缓冲的输入输出函数627
10.5.2 RIO的带缓冲的输入函数627
10.6 读取文件元数据632
10.7 读取目录内容633
10.8 共享文件634
10.9 I/O重定向637
10.10 标准I/O638
10.11 综合:我该使用哪些I/O函数?638
10.12 小结640
参考文献说明640
家庭作业640
练习题答案641
第11章 网络编程642
11.1 客户端服务器编程模型642
11.2 网络643
11.3 全球IP因特网646
11.3.1 IP地址647
11.3.2 因特网域名649
11.3.3 因特网连接651
11.4 套接字接口652
11.4.1 套接字地址结构653
11.4.2 socket函数654
11.4.3 connect函数654
11.4.4 bind函数654
11.4.5 listen函数655
11.4.6 accept函数655
11.4.7 主机和服务的转换656
11.4.8 套接字接口的辅助函数660
11.4.9 echo客户端和服务器的示例662
11.5 Web服务器665
11.5.1 Web基础665
11.5.2 Web内容666
11.5.3 HTTP事务667
11.5.4 服务动态内容669
11.6 综合:TINY Web服务器671
11.7 小结678
参考文献说明678
家庭作业678
练习题答案679
第12章 并发编程681
12.1 基于进程的并发编程682
12.2 基于I/O多路复用的并发编程684
12.3 基于线程的并发编程691
12.4 多线程程序中的共享变量696
12.5 用信号量同步线程698
12.6 使用线程提高并行性710
12.7 其他并发问题716
12.8 小结722
参考文献说明723
家庭作业723
练习题答案726
附录A 错误处理729
参考文献733
《计算机组成与体系结构(原书第4版)》
出版者的话
译者序
前言
第1章 绪论1
1.1 引言1
1.2 计算机的主要部件2
1.3 一个实例系统:吃力地读专业词汇3
1.4 标准组织12
1.5 发展历史13
1.5.1 第零代:机械计算机(1642~1945年)13
1.5.2 第一代:电子管计算机(1945~1953年)15
1.5.3 第二代:晶体管计算机(1954~1965年)18
1.5.4 第三代:集成电路计算机(1965~1980年)20
1.5.5 第四代:超大规模集成电路计算机(1980~)20
1.5.6 摩尔定律22
1.6 计算机层次结构23
1.7 云计算:计算即服务24
1.8 冯·诺依曼模型26
1.9 非冯·诺依曼模型28
1.10 并行处理器和并行计算29
1.11 并行性:机器智能的
推动者——深蓝和沃森30
本章小结32
扩展阅读32
参考文献33
复习题34
习题35
第2章 计算机系统中的数据表示37
2.1 引言37
2.2 按位计数系统37
2.3 不同进制之间的转换38
2.3.1 无符号整数的转换38
2.3.2 小数的转换40
2.3.3 2的幂次作为基数的计数系统之间的转换41
2.4 有符号整数表示42
2.4.1 原码42
2.4.2 补码系统45
2.4.3 有符号数的移码表示49
2.4.4 无符号数与有符号数50
2.4.5 计算机、算术和布斯算法50
2.4.6 进位和溢出53
2.4.7 使用移位进行二进制乘法和除法54
2.5 浮点数表示55
2.5.1 一个简单的模型55
2.5.2 浮点运算57
2.5.3 浮点误差58
2.5.4 IEEE- 754浮点标准59
2.5.5 表数范围、精度和准确度60
2.5.6 有关浮点数的其他问题61
2.6 字符编码62
2.6.1 二进制编码的十进制63
2.6.2 EBCDIC64
2.6.3 ASCII64
2.6.4 Unicode65
2.7 错误检测与纠错67
2.7.1 循环冗余校验67
2.7.2 汉明码69
2.7.3 里德-所罗门纠错码74
本章小结74
扩展阅读75
参考文献75
复习题76
习题76
特别关注:数据记录和传输的编码82
第3章 布尔代数与数字逻辑88
3.1 引言88
3.2 布尔代数89
3.2.1 布尔表达式89
3.2.2 布尔代数的基本定律90
3.2.3 化简布尔表达式91
3.2.4 求反92
3.2.5 表示布尔函数93
3.3 逻辑门94
3.3.1 逻辑门符号94
3.3.2 通用逻辑门95
3.3.3 多输入逻辑门96
3.4 数字组件96
3.4.1 数字电路及其与布尔代数的关系96
3.4.2 集成电路97
3.4.3 汇总:从问题描述到电路99
3.5 组合逻辑电路100
3.5.1 基本概念100
3.5.2 典型的组合逻辑电路示例100
3.6 时序电路105
3.6.1 基本概念105
3.6.2 时钟105
3.6.3 触发器105
3.6.4 有限状态机108
3.6.5 时序电路示例112
3.6.6 时序逻辑的应用:卷积编码和维特比检测115
3.7 电路设计119
本章小结119
扩展阅读120
参考文献120
复习题121
习题122
特别关注:卡诺图128
第4章 一个简单的计算机模型MARIE139
4.1 引言139
4.2 CPU基本知识和组织结构139
4.2.1 寄存器139
4.2.2 ALU140
4.2.3 控制单元140
4.3 总线140
4.4 时钟143
4.5 输入/输出子系统144
4.6 存储器的组成和寻址方式145
4.7 中断148
4.8 MARIE149
4.8.1 组织结构149
4.8.2 寄存器和总线150
4.8.3 指令集架构151
4.8.4 寄存器传输表示153
4.9 指令的执行过程155
4.9.1 取指-译码-执行周期155
4.9.2 中断和指令周期155
4.9.3 MARIE的I/O157
4.10 一个简单的程序157
4.11 关于编译程序的讨论159
4.11.1 编译程序的作用159
4.11.2 使用汇编语言的原因160
4.12 指令集的扩展161
4.13 关于译码的讨论:硬连线和微程序控制166
4.13.1 机器控制166
4.13.2 硬连线控制169
4.13.3 微程序控制171
4.14 实际的计算机体系结构174
4.14.1 Intel体系结构175
4.14.2 MIPS体系结构179
本章小结181
扩展阅读182
参考文献183
复习题184
习题185
第5章 仔细审视指令集架构192
5.1 引言192
5.2 指令格式192
5.2.1 指令集设计决策192
5.2.2 小端和大端方式193
5.2.3 CPU内部的存储:堆栈和寄存器195
5.2.4 操作数个数和指令长度196
5.2.5 扩展操作码199
5.3 指令类型202
5.3.1 数据传送202
5.3.2 算术运算202
5.3.3 布尔逻辑运算指令203
5.3.4 位操作指令203
5.3.5 输入/输出指令203
5.3.6 传送控制指令204
5.3.7 专用指令204
5.3.8 正交指令集204
5.4 寻址204
5.4.1 数据类型204
5.4.2 寻址方式205
5.5 指令流水线207
5.6 指令集架构实例210
5.6.1 Intel211
5.6.2 MIPS211
5.6.3 Java虚拟机212
5.6.4 ARM215
本章小结216
扩展阅读217
参考文献218
复习题218
习题219
第6章 存储器224
6.1 引言224
6.2 存储器类型224
6.3 存储器的层次结构225
6.4 高速缓存227
6.4.1 缓存映射策略229
6.4.2 替换策略240
6.4.3 有效访问时间和命中率240
6.4.4 发生缓存失效的时间241
6.4.5 缓存写策略241
6.4.6 指令和数据缓存243
6.4.7 缓存的级别244
6.5 虚拟存储器244
6.5.1 分页245
6.5.2 使用分页管理的有效访问时间250
6.5.3 汇总:使用缓存、TLB和分页技术252
6.5.4 分页和虚拟存储器的优缺点253
6.5.5 分段253
6.5.6 分段和分页的组合254
6.6 存储器管理实例254
本章小结255
扩展阅读255
参考文献256
复习题256
习题257
第7章 输入/输出和存储系统263
7.1 引言263
7.2 I/O及其性能263
7.3 阿姆达尔定律263
7.4 I/O体系结构266
7.4.1 I/O控制方法267
7.4.2 字符I/O与块I/O271
7.4.3 I/O总线操作272
7.5 数据传输模式274
7.5.1 并行数据传输275
7.5.2 串行数据传输276
7.6 磁盘技术277
7.6.1 硬盘驱动器278
7.6.2 固态硬盘280
7.7 光盘282
7.7.1 CD- ROM282
7.7.2 DVD285
7.7.3 蓝光光盘286
7.7.4 光盘记录方式286
7.8 磁带287
7.9 RAID290
7.9.1 RAID- 0290
7.9.2 RAID- 1291
7.9.3 RAID- 2291
7.9.4 RAID- 3292
7.9.5 RAID- 4293
7.9.6 RAID- 5293
7.9.7 RAID- 6294
7.9.8 RAID DP295
7.9.9 混合RAID系统297
7.10 数据存储的未来298
本章小结300
扩展阅读300
参考文献301
复习题302
习题303
特别关注:数据压缩308
第8章 系统软件327 8.1
引言327
8.2 操作系统327
8.2.1 操作系统的历史328
8.2.2 操作系统的设计332
8.2.3 操作系统的服务332
8.3 保护环境335
8.3.1 虚拟机336
8.3.2 子系统和分区337
8.3.3 保护环境和系统结构的演变339
8.4 编程工具340
8.4.1 汇编程序和汇编340
8.4.2 链接器342
8.4.3 动态链接库342
8.4.4 编译器344
8.4.5 解释器346
8.5 Java:以上全部346
8.6 数据库软件351
8.7 事务管理器354
本章小结356
扩展阅读356
参考文献357
复习题357
习题358
第9章 可供选择的体系结构360
9.1 引言360
9.2 RISC设备361
9.3 Flynn分类法365
9.4 并行和多处理器体系结构367
9.4.1 超标量和超长指令字368
9.4.2 向量处理器369
9.4.3 互连网络370
9.4.4 共享存储器的多处理器373
9.4.5 分布式计算375
9.5 其他的并行处理方法377
9.5.1 数据流计算377
9.5.2 神经网络379
9.5.3 脉动阵列381
9.6 量子计算382
本章小结384
扩展阅读385
参考文献385
复习题387
习题388
第10章 嵌入式系统专题390
10.1 引言390
10.2 嵌入式硬件概述391
10.2.1 标准的嵌入式系统硬件391
10.2.2 可重构硬件394
10.2.3 定制设计的嵌入式硬件398
10.3 嵌入式软件概述403
10.3.1 嵌入式系统的存储器组织403
10.3.2 嵌入式操作系统404
10.3.3 嵌入式系统的软件开发406
本章小结407
扩展阅读408
参考文献409
复习题410
习题410
第11章 性能测量和分析412
11.1 引言412
11.2 计算机性能公式412
11.3 数学准备工作413
11.3.1 均值的含义413
11.3.2 统计学和语义417
11.4 基准测试418
11.4.1 时钟频率、MIPS和FLOPS419
11.4.2 综合测试基准:Whetstone、Linpack和Dhrystone420
11.4.3 SPEC基准421
11.4.4 事务处理性能委员会基准424
11.4.5 系统仿真428
11.5 CPU性能优化428
11.5.1 分支优化429
11.5.2 使用好的算法和简单代码431
11.6 磁盘性能433
11.6.1 理解问题433
11.6.2 物理因素434
11.6.3 逻辑因素434
本章小结438
扩展阅读438
参考文献439
复习题440
习题440
第12章 网络的组成和体系结构444
12.1 引言444
12.2 早期的商用计算机网络444
12.3 早期的学术和科研网络:因特网的根源和体系结构444
12.4 网络协议I:ISO/OSI统一协议447
12.4.1 一个小故事447
12.4.2 OSI参考模型448
12.5 网络协议II:TCP/IP网络体系结构451
12.5.1 IPv4452
12.5.2 IPv4的麻烦453
12.5.3 传输控制协议456
12.5.4 TCP的工作过程457
12.5.5 IPv6460
12.6 网络组成464
12.6.1 物理传输介质465
12.6.2 接口卡469
12.6.3 中继器469
12.6.4 集线器469
12.6.5 交换机470
12.6.6 网桥和网关470
12.6.7 路由器和路由471
12.7 因特网的脆弱性478
本章小结479
扩展阅读479
参考文献480
复习题480
习题481
第13章 选择存储系统和接口483
13.1 引言483
13.2 SCSI架构483
13.2.1 “经典”并行SCSI484
13.2.2 SCSI架构模型3486
13.3 因特网SCSI492
13.4 存储区域网络494
13.5 其他I/O连接494
13.5.1 并行总线:XT到ATA495
13.5.2 串行ATA和串行连接的SCSI496
13.5.3 外围设备互连496
13.5.4 串行接口USB496
13.6 云存储497
本章小结498
扩展阅读499
参考文献500
复习题500
习题500
附录A 数据结构和计算机502
精选习题答案与提示516
《计算机组成与设计:硬件/软件接口(原书第5版)》
出版者的话
本书赞誉
译者序
前言
作者简介
第1章计算机概要与技术1
1.1引言1
1.1.1计算应用的分类及其特性2
1.1.2欢迎来到后PC时代3
1.1.3你能从本书学到什么4
1.2计算机系统结构中的8个伟大思想6
1.2.1面向摩尔定律的设计6
1.2.2使用抽象简化设计6
1.2.3加速大概率事件6
1.2.4通过并行提高性能7
1.2.5通过流水线提高性能7
1.2.6通过预测提高性能7
1.2.7存储器层次7
1.2.8通过冗余提高可靠性7
1.3程序概念入门7
1.4硬件概念入门10
1.4.1显示器11
1.4.2触摸屏12
1.4.3打开机箱12
1.4.4数据安全15
1.4.5与其他计算机通信16
1.5处理器和存储器制造技术17
1.6性能20
1.6.1性能的定义20
1.6.2性能的度量22
1.6.3CPU性能及其因素23
1.6.4指令的性能24
1.6.5经典的CPU性能公式25
1.7功耗墙27
1.8沧海巨变:从单处理器向多处理器转变29
1.9实例:Intel Core i7基准31
1.9.1SPEC CPU基准测试程序31
1.9.2SPEC功耗基准测试程序32
1.10谬误与陷阱33
1.11本章小结35
1.12历史观点和拓展阅读36
1.13练习题36
第2章指令:计算机的语言40
2.1引言40
2.2计算机硬件的操作43
2.3计算机硬件的操作数44
2.3.1存储器操作数45
2.3.2常数或立即数操作数47
2.4有符号数和无符号数48
2.5计算机中指令的表示53
2.6逻辑操作58
2.7决策指令60
2.7.1循环61
2.7.2case/switch语句63
2.8计算机硬件对过程的支持64
2.8.1使用更多的寄存器66
2.8.2嵌套过程67
2.8.3在栈中为新数据分配空间69
2.8.4在堆中为新数据分配空间70
2.9人机交互72
2.10MIPS中32位立即数和寻址75
2.10.132位立即数75
2.10.2分支和跳转中的寻址76
2.10.3MIPS寻址模式总结78
2.10.4机器语言解码79
2.11并行与指令:同步81
2.12翻译并执行程序83
2.12.1编译器83
2.12.2汇编器84
2.12.3链接器85
2.12.4加载器87
2.12.5动态链接库87
2.12.6启动一个Java程序89
2.13以一个C排序程序作为完整的例子90
2.13.1swap过程90
2.13.2sort过程91
2.14数组与指针96
2.14.1用数组实现clear96
2.14.2用指针实现clear97
2.14.3比较两个版本的clear97
2.15高级内容:编译C语言和解释Java语言98
2.16实例:ARMv7(32位)指令集98
2.16.1寻址模式99
2.16.2比较和条件分支100
2.16.3ARM的特色100
2.17实例:x86指令集102
2.17.1Intel x86的改进102
2.17.2x86寄存器和数据寻址模式103
2.17.3x86整数操作105
2.17.4x86指令编码107
2.17.5x86总结108
2.18实例:ARMv8(64位)指令集108
2.19谬误与陷阱109
2.20本章小结110
2.21历史观点和拓展阅读111
2.22练习题112
第3章计算机的算术运算117
3.1引言117
3.2加法和减法117
3.3乘法121
3.3.1顺序的乘法算法和硬件121
3.3.2有符号乘法124
3.3.3更快速的乘法124
3.3.4MIPS中的乘法124
3.3.5小结125
3.4除法125
3.4.1除法算法及其硬件结构125
3.4.2有符号除法128
3.4.3更快速的除法128
3.4.4MIPS中的除法129
3.4.5小结129
3.5浮点运算130
3.5.1浮点表示131
3.5.2浮点加法135
3.5.3浮点乘法138
3.5.4MIPS中的浮点指令139
3.5.5算术精确性145
3.5.6小结146
3.6并行性和计算机算术:子字并行148
3.7实例:x86中流处理SIMD扩展和高级向量扩展149
3.8加速:子字并行和矩阵乘法150
3.9谬误与陷阱153
3.10本章小结155
3.11历史观点和拓展阅读158
3.12练习题159
第4章处理器162
4.1引言162
4.2逻辑设计的一般方法165
4.3建立数据通路167
4.4一个简单的实现机制173
4.4.1ALU控制173
4.4.2主控制单元的设计175
4.4.3为什么不使用单周期实现方式181
4.5流水线概述182
4.5.1面向流水线的指令集设计186
4.5.2流水线冒险186
4.5.3对流水线概述的小结191
4.6流水线数据通路及其控制192
4.6.1图形化表示的流水线200
4.6.2流水线控制203
4.7数据冒险:旁路与阻塞206
4.8控制冒险214
4.8.1假定分支不发生215
4.8.2缩短分支的延迟215
4.8.3动态分支预测216
4.8.4流水线小结220
4.9异常221
4.9.1MIPS体系结构中的异常处理221
4.9.2在流水线实现中的异常222
4.10指令级并行226
4.10.1推测的概念227
4.10.2静态多发射处理器227
4.10.3动态多发射处理器231
4.10.4能耗效率与高级流水线233
4.11实例:ARM Cortex-A8和Intel Core i7流水线234
4.11.1ARM Cortex-A8235
4.11.2Intel Core i7 920236
4.11.3Intel Core i7 920的性能238
4.12运行更快:指令级并行和矩阵乘法240
4.13高级主题:通过硬件设计语言描述和建模流水线来介绍数字设计以及更多流水线示例242
4.14谬误与陷阱242
4.15本章小结243
4.16历史观点和拓展阅读243
4.17练习题243
第5章大容量和高速度:开发存储器层次结构252
5.1引言252
5.2存储器技术255
5.2.1SRAM技术256
5.2.2DRAM技术256
5.2.3闪存258
5.2.4磁盘存储器258
5.3cache的基本原理259
5.3.1cache访问261
5.3.2cache缺失处理265
5.3.3写操作处理266
5.3.4一个cache的例子:内置FastMATH处理器267
5.3.5小结269
5.4cache性能的评估和改进270
5.4.1通过更灵活地放置块来减少cache缺失272
5.4.2在cache中查找一个块275
5.4.3替换块的选择276
5.4.4使用多级cache结构减少缺失代价277
5.4.5通过分块进行软件优化280
5.4.6小结283
5.5可信存储器层次283
5.5.1失效的定义283
5.5.2纠正一位错、检测两位错的汉明编码(SEC/DED)284
5.6虚拟机287
5.6.1虚拟机监视器的必备条件289
5.6.2指令集系统结构(缺乏)对虚拟机的支持289
5.6.3保护和指令集系统结构289
5.7虚拟存储器290
5.7.1页的存放和查找293
5.7.2缺页故障294
5.7.3关于写297
5.7.4加快地址转换:TLB297
5.7.5集成虚拟存储器、TLB和cache 300
5.7.6虚拟存储器中的保护302
5.7.7处理TLB缺失和缺页303
5.7.8小结307
5.8存储器层次结构的一般框架309
5.8.1问题1:一个块可以被放在何处309
5.8.2问题2:如何找到一个块310
5.8.3问题3:当cache缺失时替换哪一块311
5.8.4问题4:写操作如何处理311
5.8.53C:一种理解存储器层次结构行为的直观模型312
5.9使用有限状态机来控制简单的cache314
5.9.1一个简单的cache314
5.9.2有限状态机315
5.9.3一个简单的cache控制器的有限状态机316
5.10并行与存储器层次结构:cache一致性317
5.10.1实现一致性的基本方案318
5.10.2监听协议319
5.11并行与存储器层次结构:冗余廉价磁盘阵列320
5.12高级内容:实现cache控制器320
5.13实例:ARM Cortex-A8和Intel Core i7的存储器层次结构320
5.14运行更快:cache分块和矩阵乘法324
5.15谬误和陷阱326
5.16本章小结329
5.17历史观点和拓展阅读329
5.18练习题329
第6章从客户端到云的并行处理器340
6.1引言340
6.2创建并行处理程序的难点342
6.3SISD、MIMD、SIMD、SPMD和向量机345
6.3.1在x86中的SIMD:多媒体扩展346
6.3.2向量机346
6.3.3向量与标量的对比347
6.3.4向量与多媒体扩展的对比348
6.4硬件多线程350
6.5多核和其他共享内存多处理器352
6.6图形处理单元简介355
6.6.1NVIDIA GPU体系结构简介356
6.6.2NVIDIA GPU存储结构357
6.6.3GPU展望358
6.7集群、仓储级计算机和其他消息传递多处理器360
6.8多处理器网络拓扑简介363
6.9与外界通信:集群网络366
6.10多处理器测试集程序和性能模型366
6.10.1性能模型368
6.10.2Roofline模型369
6.10.3两代Opteron的比较370
6.11实例:评测Intel Core i7 960和NVIDIA Tesla GPU的Roofline模型373
6.12运行更快:多处理器和矩阵乘法376
6.13谬误与陷阱378
6.14本章小结379
6.15历史观点和拓展阅读381
6.16练习题382
附录A汇编器、链接器和SPIM仿真器389
附录B逻辑设计基础437
索引494
省略部分目录。。。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格