书籍详情
结构化计算机组成(原书第4版)
作者:(美)Andrew S.Tanenbaum著;刘卫东,徐恪译;刘卫东译
出版社:机械工业出版社
出版时间:2001-10-01
ISBN:9787111089025
定价:¥46.00
购买这本书可以去
内容简介
计算机组成与结构是计算机专业最为核心的课程之一,它讲述的是计算机的组成部件的功能实现和运行原理。传统的计算机组成与结构教材也仅仅描述了这些,而缺乏对各组成部件之间关系的描述。本书开创性地将结构化方法用来描述计算机组成,它以Intel的Pentium II、SUN的Ultra SPARCII和picoJavaII为例,将计算机分解成数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层,详细介绍了各层的组成和实现,并说明了低层为上一层功能的实现提供的支持。最后,讨论了当前方兴未艾的并行计算机技术。本书可以作为计算机专业本科生学习计算机组成与结构课程的教材或参考书,也可供其他相关专业人员了解计算机组成和结构方面的知识时参阅。
作者简介
AndrewcS.Tanenbaum获得过美国麻省理工学院的理学学士学位和加利福尼亚大学伯克利分校的哲学博士学位,目前是荷兰阿姆斯特丹Vrije大学计算机科学系的教授,并领导着一个计算机系统的研究小组.同时,他还是一所计算与图像处理学院的院长,这是由几所大学合作成立的研究生院.尽管社会工作很多,但他并没有中断学术研究.多年来,他在编译技术.操作系统.网络及局域分布式系统方面进行了大量的研究工作.目前的主要研究方向是设计规模达十亿用户的广域分布式系统.在进行这些研究项目的基础上,2他在各种学术杂志及会议上发表了85篇论文.他同时还是5本计算机专著的作者. Tanenbaum教授还开发了大量的软件.他是Amsterdam编译器套件的主要设计师,3这是一个被广泛使用的.用来编写可移植编译器的工具箱.他领导编写的MINIX,是一个用于操作系统教学的类UNIX的小型操作系统.他和他的博士研究生以及其他编程人员一道设计的Amoeba分布式操作系统,是一个高性能的微内核分布式操作系统.目前,可在因特网上免费得到MINIX及Amoeba. 他的一些博士研究生,在获得学位后继续进行研究,并取得了更大的成就,赢得了社会的赞誉,对此他深感自豪.人们称他为桃李满天下的教育家. Tanenbaum是ACM的会员,IEEE的会员,荷兰皇家艺术和科学学院院士,获得过1994年度ACMcKarlcV.Karlstrom杰出教育家奖和1997年度ACM/SIGCSE计算机科学教育杰出贡献奖.他还入选了《世界名人录》.他在万维网上的主页地址为http://www.4cs.4vu.4nl/~ast/.
目录
出版者的话
专家指导委员会
作者简介
译者序
前言
第1章 概述
1.1 结构化计算机组成
1.1.1 语言、层次和虚拟机
1.1.2 现代多层计算机
1.1.3 多层次计算机的演化
1.2 计算机体系结构的里程碑
1.2.1 第零代--机械计算机 (1642--1945)
1.2.2 第一代--电子管计算机 (1945--1955)
1.2.3 第二代--晶体管计算机 (1955--1965)
1.2.4 第三代--集成电路计算机 (1965--1980)
1.2.5 第四代--超大规模集成电路计算机 (1980--?)
1.3 计算机家族
1.3.1 技术和经济的推动
1.3.2 计算机扫视
1.4 系列计算机举例
1.4.1 Pentium II简介
1.4.2 UltraSPARC II简介
1.4.3 picoJava II简介
1.5 本书概览
习题
第2章 计算机系统组成
2.1 处理器
2.1.1 CPU的组成
2.1.2 指令执行
2.1.3 RISC和CISC
2.1.4 现代计算机设计原则
2.1.5 指令级并行
2.1.6 处理器级并行
2.2 主存储器
2.2.1 存储位
2.2.2 内存编址
2.2.3 字节顺序
2.2.4 纠错码
2.2.5 高速缓存
2.2.6 内存条及其类型
2.3 辅助存储器
2.3.1 层次存储结构
2.3.2 磁盘
2.3.3 软盘
2.3.4 IDE盘
2.3.5 SCSI盘
2.3.6 RAID盘
2.3.7 只读光盘
2.3.8 可刻光盘
2.3.9 可擦写光盘
2.3.10 DVD
2.4 输入输出设备
2.4.1 总线
2.4.2 终端
2.4.3 鼠标
2.4.4 打印机
2.4.5 调制解调器
2.4.6 字符编码
2.5 小结
习题
第3章 数字逻辑层
3.1 门和布尔代数
3.1.1 门
3.1.2 布尔代数
3.1.3 布尔函数的实现
3.1.4 等价电路
3.2 基本数字逻辑电路
3.2.1 集成电路
3.2.2 组合逻辑电路
3.2.3 算术电路
3.2.4 时钟
3.3 内存
3.3.1 锁存器
3.3.2 触发器
3.3.3 寄存器
3.3.4 内存组成
3.3.5 内存芯片
3.3.6 RAM和ROM
3.4 CPU芯片和总线
3.4.1 CPU芯片
3.4.2 计算机总线
3.4.3 总线宽度
3.4.4 总线时钟
3.4.5 总线仲裁
3.4.6 总线操作
3.5 CPU芯片举例
3.5.1 Pentium II
3.5.2 UltraSPARC II
3.5.3 picoJavs II
3.6 总线举例
3.6.1 ISA总线
3.6.2 PCI总线
3.6.3 通用串行总线
3.7 接口电路
3.7.1 输入输出芯片
3.7.2 地址译码
3.8 小结
习题
第4章 微体系结构层
4.1 微体系结构举例
4.1.1 数据通路
4.1.2 微指令
4.1.3 微指令控制:Mic-1
4.2 指令系统举例:IJVM
4.2.1 堆栈
4.2.2 IJVM内存模型
4.2.3 IJVM指令集
4.2.4 将Java编译为IJVM
4.3 实现举例
4.3.1 微指令和符号语言
4.3.2 用Mic-1实现IJVM
4.4 微体系结构层设计
4.4.1 速度与价格
4.4.2 缩短指令执行路径长度
4.4.3 带预取的设计:Mic-2
4.4.4 流水线设计:Mic'3
4.4.5 七段流水线设计:Mic-4
4.5 提高性能
4.5.1 高速缓存
4.5.2 分支预测
4.5.3 乱序执行和寄存器重命名
4.5.4 推测执行
4.6 微体系结构层举例
4.6.1 Pentium II CPU的微体系结构
4.6.2 UltraSPARC-II CPU的微体系结构
4.6.3 pioJavaII CPU的微体系结构
4.6.4 三种CPU的比较
4.7 小结
习题
第5章 指令系统层
5.1 指令系统层概述
5.1.1 指令系统层的性质
5.1.2 存储模式
5.1.3 寄存器
5.1.4 指令
5.1.5 PentiumII指令系统层概述
5.1.6 UltraSPARCII指令系统层概述
5.1.7 Java虚拟机指令系统层概述
5.2 数据类型
5.2.1 数值数据类型
5.2.2 非数值数据类型
5.2.3 Pentium II的数据类型
5.2.4 UltraSPARCII的数据类型
5.2.5 Java虚拟机的数据类型
5.3 指令格式
5.3.1 指令格式设计标准
5.3.2 操作码扩展
5.3.3 Pentium II指令格式
5.3.4 UltraSPARCII指令格式
5.3.5 Java虚拟机指令格式
5.4 寻址
5.4.1 寻址方式
5.4.2 立即寻址
5.4.3 直接寻址
5.4.4 寄存器寻址
5.4.5 寄存器间接寻址
5.4.6 变址寻址
5.4.7 基址变址寻址
5.4.8 堆栈寻址
5.4.9 转移指令的寻址方式
5.4.10 操作码和寻址方式的关系
5.4.11 PentiumII的寻址方式
5.4.12 UltraSPARCII的寻址方式
5.4.13 Java虚拟机寻址方式
5.4.14 寻址方式讨论
5.5 指令类型
5.5.1 数据移动指令
5.5.2 双操作数指令
5.5.3 单操作数指令
5.5.4 比较和条件转移指令
5.5.5 过程调用指令
5.5.6 循环控制指令
5.5.7 输入输出指令
5.5.8 Pentium II指令系统
5.5.9 UltraSPARCll指令系统
5.5.10 picoJavaII指令系统
5.5.11 指令集比较
5.6 控制流
5.6.1 顺序控制流和转移
5.6.2 过程
5.6.3 协同过程
5.6.4 陷阱
5.6.5 中断
5.7 详细举例:汉诺塔
5.7.1 PentiumII汇编语言实现的汉诺塔
5.7.2 UltraSPARC II汇编语言实现的汉诺塔
5.7.3 Java虚拟机汇编语言实现的汉诺塔
5.8 Intel的IA-64
5.8.1 Pentium II的问题
5.8.2 IA-64模型:显式并行指令计算
5.8.3 判定
5.8.4 预取
5.8.5 现实障碍
5.9 小结
习题
第6章 操作系统层
6.1 虚拟内存
6.1.1 内存分页
6.1.2 内存分页的实现
6.1.3 请求调页和工作集模型
6.1.4 页置换策略
6.1.5 页大小和碎片
6.1.6 分段
6.1.7 分段的实现
6.1.8 PentiumII中的虚拟内存
6.1.9 UltraSPARC的虚拟内存
6.1.10 虚拟内存和高速缓存
6.2 虚拟输入输出指令
6.2.1 文件
6.2.2 虚拟输入输出指令的实现
6.2.3 目录管理指令
6.3 用于并行处理的虚拟指令
6.3.1 进程创建
6.3.2 竞争条件
6.3.3 使用信号量的进程同步
6.4 操作系统实例
6.4.1 简介
6.4.2 虚拟内存实例
6.4.3 虚拟输入输出实例
6.4.4 进程管理实例
6.5 小结
习题
第7章 汇编语言层
7.1 汇编语言简介
7.1.1 什么是汇编语言
7.1.2 为什么使用汇编语言
7.1.3 汇编语言语句的格式
7.1.4 伪指令
7.2 宏
7.2.1 宏定义、调用和扩展
7.2.2 带参数的宏
7.2.3 高级特性
7.2.4 汇编器中宏处理的实现
7.3 汇编过程
7.3.1 两趟汇编的汇编器
7.3.2 第一趟扫描
7.3.3 第二趟扫描
7.3.4 符号表
7.4 链接和加载
7.4.1 链接器的功能
7.4.2 目标模块的结构
7.4.3 绑定时间和动态重定位
7.4.4 动态链接
7.5 小结
习题
第8章 并行计算机体系结构
8.1 并行计算机设计中的主要问题
8.1.1 通信模型
8.1.2 互连网络
8.1.3 性能
8.1.4 软件
8.1.5 并行计算机的分类
8.2 SIMD计算机
8.2.1 阵列处理机
8.2.2 向量处理机
8.3 共享内存的多处理器系统
8.3.1 内存语义
8.3.2 基于UMA总线的SMP体系结构
8.3.3 使用交叉开关的UMA多处理器系统
8.3.4 使用多级交换网络的UMA多处理器系统
8.3.5 NUMA多处理器系统
8.3.6 cache一致的NUMA多处理器系统
8.3.7 COMA多处理器系统
8.4 基于消息传递的多计算机系统
8.4.1 MPP:大规模并行处理机
8.4.2 COW:工作站集群
8.4.3 调度
8.4.4 用于多计算机系统的通信软件
8.4.5 应用层的共享内存
8.5 小结
习题
第9章 推荐读物和参考文献
9.1 推荐读物
9.1.1 一般性和介绍性的读物
9.1.2 计算机系统组成
9.1.3 数字逻辑层
9.1.4 微体系结构层
9.1.5 指令系统层
9.1.6 操作系统层
9.1.7 汇编语言层
9.1.8 并行计算机体系结构
9.1.9 二进制数和浮点数
9.2 参考文献
附录A 二进制数
附录B 浮点数
索引
专家指导委员会
作者简介
译者序
前言
第1章 概述
1.1 结构化计算机组成
1.1.1 语言、层次和虚拟机
1.1.2 现代多层计算机
1.1.3 多层次计算机的演化
1.2 计算机体系结构的里程碑
1.2.1 第零代--机械计算机 (1642--1945)
1.2.2 第一代--电子管计算机 (1945--1955)
1.2.3 第二代--晶体管计算机 (1955--1965)
1.2.4 第三代--集成电路计算机 (1965--1980)
1.2.5 第四代--超大规模集成电路计算机 (1980--?)
1.3 计算机家族
1.3.1 技术和经济的推动
1.3.2 计算机扫视
1.4 系列计算机举例
1.4.1 Pentium II简介
1.4.2 UltraSPARC II简介
1.4.3 picoJava II简介
1.5 本书概览
习题
第2章 计算机系统组成
2.1 处理器
2.1.1 CPU的组成
2.1.2 指令执行
2.1.3 RISC和CISC
2.1.4 现代计算机设计原则
2.1.5 指令级并行
2.1.6 处理器级并行
2.2 主存储器
2.2.1 存储位
2.2.2 内存编址
2.2.3 字节顺序
2.2.4 纠错码
2.2.5 高速缓存
2.2.6 内存条及其类型
2.3 辅助存储器
2.3.1 层次存储结构
2.3.2 磁盘
2.3.3 软盘
2.3.4 IDE盘
2.3.5 SCSI盘
2.3.6 RAID盘
2.3.7 只读光盘
2.3.8 可刻光盘
2.3.9 可擦写光盘
2.3.10 DVD
2.4 输入输出设备
2.4.1 总线
2.4.2 终端
2.4.3 鼠标
2.4.4 打印机
2.4.5 调制解调器
2.4.6 字符编码
2.5 小结
习题
第3章 数字逻辑层
3.1 门和布尔代数
3.1.1 门
3.1.2 布尔代数
3.1.3 布尔函数的实现
3.1.4 等价电路
3.2 基本数字逻辑电路
3.2.1 集成电路
3.2.2 组合逻辑电路
3.2.3 算术电路
3.2.4 时钟
3.3 内存
3.3.1 锁存器
3.3.2 触发器
3.3.3 寄存器
3.3.4 内存组成
3.3.5 内存芯片
3.3.6 RAM和ROM
3.4 CPU芯片和总线
3.4.1 CPU芯片
3.4.2 计算机总线
3.4.3 总线宽度
3.4.4 总线时钟
3.4.5 总线仲裁
3.4.6 总线操作
3.5 CPU芯片举例
3.5.1 Pentium II
3.5.2 UltraSPARC II
3.5.3 picoJavs II
3.6 总线举例
3.6.1 ISA总线
3.6.2 PCI总线
3.6.3 通用串行总线
3.7 接口电路
3.7.1 输入输出芯片
3.7.2 地址译码
3.8 小结
习题
第4章 微体系结构层
4.1 微体系结构举例
4.1.1 数据通路
4.1.2 微指令
4.1.3 微指令控制:Mic-1
4.2 指令系统举例:IJVM
4.2.1 堆栈
4.2.2 IJVM内存模型
4.2.3 IJVM指令集
4.2.4 将Java编译为IJVM
4.3 实现举例
4.3.1 微指令和符号语言
4.3.2 用Mic-1实现IJVM
4.4 微体系结构层设计
4.4.1 速度与价格
4.4.2 缩短指令执行路径长度
4.4.3 带预取的设计:Mic-2
4.4.4 流水线设计:Mic'3
4.4.5 七段流水线设计:Mic-4
4.5 提高性能
4.5.1 高速缓存
4.5.2 分支预测
4.5.3 乱序执行和寄存器重命名
4.5.4 推测执行
4.6 微体系结构层举例
4.6.1 Pentium II CPU的微体系结构
4.6.2 UltraSPARC-II CPU的微体系结构
4.6.3 pioJavaII CPU的微体系结构
4.6.4 三种CPU的比较
4.7 小结
习题
第5章 指令系统层
5.1 指令系统层概述
5.1.1 指令系统层的性质
5.1.2 存储模式
5.1.3 寄存器
5.1.4 指令
5.1.5 PentiumII指令系统层概述
5.1.6 UltraSPARCII指令系统层概述
5.1.7 Java虚拟机指令系统层概述
5.2 数据类型
5.2.1 数值数据类型
5.2.2 非数值数据类型
5.2.3 Pentium II的数据类型
5.2.4 UltraSPARCII的数据类型
5.2.5 Java虚拟机的数据类型
5.3 指令格式
5.3.1 指令格式设计标准
5.3.2 操作码扩展
5.3.3 Pentium II指令格式
5.3.4 UltraSPARCII指令格式
5.3.5 Java虚拟机指令格式
5.4 寻址
5.4.1 寻址方式
5.4.2 立即寻址
5.4.3 直接寻址
5.4.4 寄存器寻址
5.4.5 寄存器间接寻址
5.4.6 变址寻址
5.4.7 基址变址寻址
5.4.8 堆栈寻址
5.4.9 转移指令的寻址方式
5.4.10 操作码和寻址方式的关系
5.4.11 PentiumII的寻址方式
5.4.12 UltraSPARCII的寻址方式
5.4.13 Java虚拟机寻址方式
5.4.14 寻址方式讨论
5.5 指令类型
5.5.1 数据移动指令
5.5.2 双操作数指令
5.5.3 单操作数指令
5.5.4 比较和条件转移指令
5.5.5 过程调用指令
5.5.6 循环控制指令
5.5.7 输入输出指令
5.5.8 Pentium II指令系统
5.5.9 UltraSPARCll指令系统
5.5.10 picoJavaII指令系统
5.5.11 指令集比较
5.6 控制流
5.6.1 顺序控制流和转移
5.6.2 过程
5.6.3 协同过程
5.6.4 陷阱
5.6.5 中断
5.7 详细举例:汉诺塔
5.7.1 PentiumII汇编语言实现的汉诺塔
5.7.2 UltraSPARC II汇编语言实现的汉诺塔
5.7.3 Java虚拟机汇编语言实现的汉诺塔
5.8 Intel的IA-64
5.8.1 Pentium II的问题
5.8.2 IA-64模型:显式并行指令计算
5.8.3 判定
5.8.4 预取
5.8.5 现实障碍
5.9 小结
习题
第6章 操作系统层
6.1 虚拟内存
6.1.1 内存分页
6.1.2 内存分页的实现
6.1.3 请求调页和工作集模型
6.1.4 页置换策略
6.1.5 页大小和碎片
6.1.6 分段
6.1.7 分段的实现
6.1.8 PentiumII中的虚拟内存
6.1.9 UltraSPARC的虚拟内存
6.1.10 虚拟内存和高速缓存
6.2 虚拟输入输出指令
6.2.1 文件
6.2.2 虚拟输入输出指令的实现
6.2.3 目录管理指令
6.3 用于并行处理的虚拟指令
6.3.1 进程创建
6.3.2 竞争条件
6.3.3 使用信号量的进程同步
6.4 操作系统实例
6.4.1 简介
6.4.2 虚拟内存实例
6.4.3 虚拟输入输出实例
6.4.4 进程管理实例
6.5 小结
习题
第7章 汇编语言层
7.1 汇编语言简介
7.1.1 什么是汇编语言
7.1.2 为什么使用汇编语言
7.1.3 汇编语言语句的格式
7.1.4 伪指令
7.2 宏
7.2.1 宏定义、调用和扩展
7.2.2 带参数的宏
7.2.3 高级特性
7.2.4 汇编器中宏处理的实现
7.3 汇编过程
7.3.1 两趟汇编的汇编器
7.3.2 第一趟扫描
7.3.3 第二趟扫描
7.3.4 符号表
7.4 链接和加载
7.4.1 链接器的功能
7.4.2 目标模块的结构
7.4.3 绑定时间和动态重定位
7.4.4 动态链接
7.5 小结
习题
第8章 并行计算机体系结构
8.1 并行计算机设计中的主要问题
8.1.1 通信模型
8.1.2 互连网络
8.1.3 性能
8.1.4 软件
8.1.5 并行计算机的分类
8.2 SIMD计算机
8.2.1 阵列处理机
8.2.2 向量处理机
8.3 共享内存的多处理器系统
8.3.1 内存语义
8.3.2 基于UMA总线的SMP体系结构
8.3.3 使用交叉开关的UMA多处理器系统
8.3.4 使用多级交换网络的UMA多处理器系统
8.3.5 NUMA多处理器系统
8.3.6 cache一致的NUMA多处理器系统
8.3.7 COMA多处理器系统
8.4 基于消息传递的多计算机系统
8.4.1 MPP:大规模并行处理机
8.4.2 COW:工作站集群
8.4.3 调度
8.4.4 用于多计算机系统的通信软件
8.4.5 应用层的共享内存
8.5 小结
习题
第9章 推荐读物和参考文献
9.1 推荐读物
9.1.1 一般性和介绍性的读物
9.1.2 计算机系统组成
9.1.3 数字逻辑层
9.1.4 微体系结构层
9.1.5 指令系统层
9.1.6 操作系统层
9.1.7 汇编语言层
9.1.8 并行计算机体系结构
9.1.9 二进制数和浮点数
9.2 参考文献
附录A 二进制数
附录B 浮点数
索引
猜您喜欢