书籍详情

安腾体系结构:理解64位处理器和EPIC原理

安腾体系结构:理解64位处理器和EPIC原理

作者:James S.Evans,Gregory L.Trimper著;蒋敬旗[等]译;蒋敬旗译

出版社:清华大学出版社

出版时间:2005-01-01

ISBN:9787302096085

定价:¥49.80

购买这本书可以去
内容简介
  本书全面介绍了新型64位安腾体系结构及其具有突破性的性能。通过使用标准命令行工具和大量实例,循序渐进地介绍了安腾汇编语言,并结合当代计算机体系结构的发展,详细阐述了安腾体系结构设计。本书涵盖的内容包括:·显式并行指令计算(EPIC)的潜能·安腾体系结构中的创新,例如寄存器栈引擎(RSE)和广泛使用的谓词等·过程调用以及过程调用机制·浮点操作·I/O技术,包括从简单的调试到文件的使用等·开主和源码、Intel和HP-UX编译程序的输出优化本书每章都包括翔实的数字、论述以及编程练习,并且提供了大量的参考文献和丰富的网上资源。本书可作为计算机及相关专业学生学习计算机体系结构或汇编语言的教材,也是研究人员系统了解安腾体系结构的必备资源。
作者简介
  蒋敬旗,男,1967年7月生,2001年在北京理工大学计算机科学工程系获计算机应用技术专业工学博士学位。2001年1~6月在信息产业部数字技术研究中心技术总监。2001年7月至2003年10月在中国科学院计算技术研究所做博士后研究工作。1993年曾获大学英语专业文学学士学位。现在海南省信息产业局、海口市科学技术与信息产业局工作,同时兼任海南大学信息技术学院教授,国经协经济研究院科学、艺术家、企业家联谊会理事,中国自动化学会制造技术委员会常务委员,全国工业自动化系统与集成标准化技术委员会委员,全国集成电路标准化技术委员会委员,全国电气信息结构、文件编制和图形符号标准化技术委员会委员,中国科学院博士后联谊会资深理事,海南省电子商务协会顾问,海南省软件行业协会专家组成员,海南省博士·院士产业促进会专家组成员等职。发表学术论文20余篇,出版三部著作。
目录
第1章 体系结构和实现方法
1.1 类比:钢琴的体系结构
1.2 计算机语言的类型
1.3 为什么要学习汇编语言
1.4 二进制倍数的词头
1.5 指令集体系结构
1.6 计算机体系结构的生命周期
1.6.1 32位Intel体系结构及其先前结构
1.6.2 AlphaTM体系结构及其先前结构
1.6.3 安腾体系结构及其先前结构
1.6.4 体系结构和实现方法的命名
1.7 SQUARES:第一个编程实例
1.7.1 C. FORTRAN和COBOL语言描述
1.7.2 安腾体系结构的汇编语言描述
1.8 记数系统的回顾
1.8.1 位置系数和权值
1.8.2 二进制和十六进制表示
1.8.3 带符号整数
本章总结
参考文献
练习题
第2章 计算机结构和数据表示
2.1 计算机结构
2.1.1 中央处理器
2.1.2 存储器
2.1.3 输入输出系统
2.2 指令的执行
2.3 指令集体系结构的类别
2.4 向64位体系结构过渡
2.5 安腾体系结构的信息单位和数据类型
2.5.1 整数
2.5.2 浮点数
2.5.3 字母数字字符
本章总结
参考文献
练习题
第3章 汇编程序和调试程序
3.1 编程环境
3.2 程序开发步骤
3.3 比较源文件的不同
3.4 汇编语句的类型
3.4.1 语句格式
3.4.2 符号地址
3.4.3 汇编语言操作符的种类
3.5 符号汇编程序的功能
3.5.1 常量
3.5.2 符号或标识符
3.5.3 存储器分配
3.5.4 单元计数器
3.5.5 表达式
3.5.6 控制语句
3.5.7 清单文件的组成部分
3.6 汇编过程
3.7 连接过程
3.8 调试程序
3.8.1 调试程序的功能
3.8.2 使用gdb Linux和HP-UX 运行SQUARES
3.8.3 使用adb HP-UX 运行SQUARES
3.8.4 调试命令举例
3.9 编写程序的约定
本章总结
参考文献
练习题
第4章 安腾指令格式和寻址方式
4.1 安腾指令格式概述
4.1.1 指令包
4.1.2 指令位字段格式
4.1.3 安腾指令类型
4.2 整数算术指令
4.2.1 加法和减法
4.2.2 算术溢出
4.2.3 左移相加指令
4.2.4 算术操作的特殊情况
4.2.5 16位带符号整数的乘法
4.2.6 全宽度的乘法和除法
4.3 安腾指令的位编码
4.4 HEXNUM:使用算术指令
4.5 数据存取指令
4.5.1 安腾高速缓存结构
4.5.2 整型存储指令
4.5.3 整型装入指令
4.5.4 长立即数传送指令
4.5.5 存取简单的记录结构
4.5.6 存取专用CPU寄存器
4.6 其他ALU指令
4.6.1 符号扩展指令
4.6.2 零扩展指令
4.6.3 宽度小于64位的指令
4.7 DOTPROD:使用数据存取指令
4.8 安腾寻址方式
4.8.1 立即寻址
4.8.2 寄存器直接寻址
4.8.3 寄存器间接寻址
4.8.4 自动增量寻址
4.8.5 安腾寻址方式小结
4.8.6 前面程序中的寻址细节
4.9 其他体系结构中的寻址
4.9.1 基于寄存器间接寻址的方式
4.9.2 基于偏移寻址的方式
4.9.3 体系结构寻址方式的比较
本章总结
参考文献
练习题
第5章 比较. 转移和判断
5.1 控制流的硬件基础
5.1.1 条件码
5.1.2 状态管理方法
5.1.3 谓词寄存器
5.2 整数比较指令
5.2.1 带符号比较和等式
5.2.2 无符号比较
5.3 程序转移
5.3.1 普通转移指令
5.3.2 转移的时间考虑
5.3.3 if…then…else结构
5.3.4 循环结构
5.3.5 转移的寻址范围
5.3.6 局部性和程序性能
5.4 DOTLOOP:使用计数循环
5.5 暂停. 指令组和性能
5.5.1 DOTLOOP中的暂停和分组
5.5.2 数据相关性的简化规则
5.5.3 安腾汇编程序处理暂停的方法
5.5.4 循环的局部标号
5.5.5 循环. 转移和整体性能
5.6 DOTCLOOP:使用循环计数寄存器
5.7 其他结构化程序设计成分
5.7.1 无条件比较指令
5.7.2 嵌套的if…then…else结构
5.7.3 多路转移
5.7.4 简单的分情况结构
5.8 MAXIMUM:使用条件指令
本章总结
参考文献
练习题
第6章 逻辑操作. 移位操作和字节操作
6.1 逻辑函数
6.1.1 两个变量的布尔函数
6.1.2 逻辑指令
6.1.3 逻辑函数的应用
6.1.4 一位测试指令
6.1.5 并行 逻辑 条件
6.1.6 加法的逻辑基础
6.2 HEXNUM2:使用逻辑掩码
6.3 位操作和字段操作
6.3.1 移位指令
6.3.2 移位操作的应用
6.3.3 右移对指令
6.3.4 提取指令和存放指令
6.4 SCANTEXT:处理字节
6.5 整数乘法和除法
6.5.1 乘法的Booth算法
6.5.2 无符号乘法
6.5.3 使用已知倒数的除法
6.6 DECNUM:将整数转换成十进制格式
6.7 使用C语言进行ASCII输入和输出
6.7.1 GETPUT:封装C函数
6.7.2 IO_C:一个简单的测试程序
6.7.3 其他概念
6.8 BACKWARD:使用字节操作
本章总结
参考文献
练习题
第7章 子例程. 过程和函数
7.1 存储器栈
7.1.1 CISC体系结构的栈寻址
7.1.2 装入/存储体系结构的栈寻址
7.1.3 安腾体系结构的栈寻址
7.1.4 用户定义的栈
7.2 DECNUM2:使用栈操作
7.3 寄存器栈
7.3.1 SPARC寄存器窗
7.3.2 安腾寄存器栈
7.3.3 alloc指令
7.3.4 寄存器栈引擎 RSE
7.3.5 存储体寄存器
7.4 程序分段
7.4.1 源级模块性
7.4.2 传统子例程
7.4.3 协同例程
7.4.4 过程和函数
7.4.5 共享库函数
7.5 调用约定
7.5.1 寄存器竞争和使用约定
7.5.2 调用和返回转移指令
7.5.3 变元传送:位置
7.5.4 变元传送:方法
7.5.5 开始部分和结束部分
7.5.6 regstk命令
7.6 DECNUM3和BOOTH:建立一个函数
7.6.1 定义接口
7.6.2 BOOTH:可调用的函数
7.6.3 DECNUM3:测试程序
7.6.4 位置独立的代码
7.7 整数商和余数
7.7.1 高级语言使用的例程
7.7.2 Intel公司的开放源例程
7.8 RANDOM:一个可调用的函数
7.8.1 选择一个算法
7.8.2 RANDOM:函数的开发
7.8.3 高级语言调用程序
本章总结
参考文献
练习题
第8章 浮点操作
8.1 整数指令和浮点指令之间的并行性
8.2 浮点值的表示
8.2.1 IEEE特殊值
8.2.2 安腾浮点寄存器中的值
8.3 复制浮点数据
8.3.1 浮点存储指令
8.3.2 浮点装入指令
8.3.3 浮点装入对指令
8.3.4 用于寄存器一寄存器复制的浮点伪指令
8.3.5 浮点合并指令
8.4 浮点算术指令
8.4.1 加法. 减法和乘法
8.4.2 熔丝型乘一加和乘一减指令
8.4.3 规范化为另一个特例
8.4.4 最大值和最小值操作
8.4.5 舍入. 异常和浮点控制
8.5 HORNER:计算一个多项式
8.6 基于浮点值的判断
8.6.1 浮点比较指令
8.6.2 浮点类指令
8.7 浮点执行部件中的整数操作
8.7.1 数据转换指令
8.7.2 整数乘法指令
8.7.3 乘法策略
8.7.4 浮点逻辑指令
8.8 倒数和平方根的近似
8.8.1 浮点倒数的近似
8.8.2 倒数平方根的近似
8.8.3 浮点除法
8.8.4 Intel公司的开放源例程
8.9 APPROXPI:使用浮点指令
本章总结
参考文献
练习题
第9章 文本的输入和输出
9.1 文件系统
9.1.1 Unix I/O软件
9.1.2 Linux I/O软件
9.2 键盘和显示器I/O
9.2.1 未格式化的I/O行
9.2.2 格式化的I/O
9.3 SCANTERM:使用C的标准I/O
9.4 SORTSTR:排序串
9.5 文本文件I/O
9.5.1 目录级的访问
9.5.2 未格式化的I/O行
9.5.3 格式化的I/O
9.6 SCANFILE:文件的输入输出
9.7 SORTINT:对文件中的整数进行排序
9.8 二进制文件
本章总结
参考文献
练习题
第10章 性能考虑
10.1 处理器级的并行性
10.1.1 简化的指令流水线
10.1.2 超标量流水线
10.1.3 安腾2处理器流水线
10.1.4 流水线冒险
10.2 指令级并行性
10.2.1 RISC方法
10.2.2 VLIW思想
10.2.3 EPIC:体系结构发展的一个方向
10.3 安腾处理器中的显式并行性
10.3.1 指令模板
10.3.2 数据相关和猜测
10.3.3 控制相关和猜测
10.3.4 组合的控制和数据猜测
10.4 软件流水线循环
10.4.1 传统的循环展开
10.4.2 软件流水线
10.4.3 循环式寄存器
10.4.4 循环阶段
10.4.5 软件流水线的转移指令
10.5 按模调度一个循环
10.5.1 DOTCTOP:独立实现的调度
10.5.2 DOTCTOP2:安腾2处理器的调度
10.5.3 进一步的考虑
10.6 程序优化因素
10.6.1 指令宽度
10.6.2 寻址方式
10.6.3 指令能力
10.6.4 程序长度
10.6.5 将数据预取到高速缓存中
10.6.6 直接插入式函数的使用
10.6.7 指令重新排序
10.6.8 递归及相关因素
10.7 斐波纳契数
10.7.1 FIB1:使用递归的函数
10.7.2 FIB2:无递归的函数
10.7.3 FIB3:使用寄存器栈的函数
10.7.4 TESTFIB:显示递归的开销
本章总结
参考文献
练习题
第11章 查看编译程序的输出
11.1 类RISC系统的编译程序
11.1.1 开放源码编译程序的优化级别
11.1.2 Intel编译程序的优化级别
11.1.3 HP-UX编译程序的优化级别
11.1.4 附加的优化可能性
11.2 编译一个简单程序
11.2.1 比较gcc和ecc Linux 的输出
11.2.2 比较gcc和g77 Linux 的输出
11.2.3 比较cc_bundled和f90 HP-UX 的输出
11.3 优化一个简单程序
11.3.1 比较g77 Linux 的-O1级别和-O2级别的输出
11.3.2 编译程序信息
11.3.3 f90 HP-UX 的循环的长度和优化
11.4 直接插入式优化
11.5 剖面制导的优化或其他优化
11.6 调试经过优化的程序
11.7 重访斐波纳契数的递归
本章总结
参考文献
练习题
第12章 并行操作
12.1 计算系统的分类
12.2 整数并行操作
12.3 整数乘法的应用
12.3.1 源操作数32*32位得到32位无符号乘积
12.3.2 源操作数32*32位得到64位无符号数
12.4 机遇和挑战
12.5 浮点并行操作
12.6 支持并行处理的信号量
12.6.1 先前的体系结构
12.6.2 安腾体系结构
本章总结
参考文献
练习题
第13章 实现方法的变异
13.1 为什么改变实现方法
13.1.1 需求和机遇
13.1.2 摩尔定律的含义
13.1.3 期望体系结构具有较长的生命周期
13.2 如何改变实现方法
13.3 最初的安腾处理器
13.3.1 与安腾2处理器的对比
13.3.2 高速缓存的层次结构
13.3.3 执行部件和发射端口
13.3.4 流水线
13.3.5 等待因子
13.3.6 转移预测
13.3.7 其他区别和特征
13.4 软件的主要作用
13.4.1 新的体系结构
13.4.2 新的实现方法
13.4.3 新的指令或者更多的寄存器
13.5 IA-32指令集模式
13.6 确定扩展和实现方案
本章总结
参考文献
练习题
附录A 命令行环境
参考文献
练习题
附录B 推荐的系统资源
B.1 系统硬件
B.1.1 安腾工作站或服务器
B.1.2 IA-32 Linux系统上的Ski模拟器
B.1.3 Linux虚拟机上的Ski模拟器
B.1.4 其他模拟器
B.2 系统软件
B.2.1 Linux
B.2.2 HP-UX
B.2.3 Ski模拟器
B.2.4 64位Windows
B.2.5 FreeBSD
B.2.6 OpenVMS
B.3 桌面客户访问软件
B.3.1 Linux个人计算机
B.3.2 Macintosh个人计算机
B.3.3 Windows个人计算机
参考文献
附录C 安腾指令集
表C-1 按功能排列的安腾指令
表C-2 按汇编程序操作码排列的安腾指令
参考文献
附录D 安腾寄存器及其用途
D.1 指令指示字
D.2 通用寄存器和NaT位
D.3 谓词寄存器
D.4 转移寄存器
D.5 浮点寄存器
D.6 应用寄存器
D.7 状态管理寄存器
D.8 系统信息寄存器
D.9 系统控制寄存器
参考文献
附录E 条件汇编和宏 GCC汇编程序
E.1 显式停止的干扰
E.2 重复块
E.2.1 简单重复块
E.2.2 使用.irp命令的不定重复块
E.2.3 使用.irpc命令的不定重复块
E.3 条件汇编
E.4 宏的处理
E.4.1 宏的定义
E.4.2 宏的调用
E.4.3 定位参数的处理
E.4.4 默认值和关键词参数的处理
E.4.5 串参数的处理
E.5 宏标号的使用
E.6 递归宏
E.7 目标文件段
E.8 MONEY:用于说明段的宏
本章总结
参考文献
练习题
附录F 直接插入式汇编
F.1 HP-UX的C编译程序
F.2 用于Linux的GCC编译程序
F.3 Intel的Linux编译程序
参考文献
参考文献汇总
部分练习题答案及提示
术语表
猜您喜欢

读书导航