MIPS处理器设计透视PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:(英)Dominic Sweetman著;赵俊良,张福新,陶品译
- 出 版 社:北京:北京航空航天大学出版社
- 出版年份:2005
- ISBN:7810774301
- 页数:427 页
目录 2
第1章 RISC和MIPS 2
1.1 流水线 2
1.1.1 什么使流水线效率降低? 3
1.1.2 流水线和缓存 4
1.2 MIPS的五级流水线 4
1.3 RISC和CISC 6
1.4 迄今为止一些重要的MIPS芯片 7
1.4.1 R2000到R3000 7
1.4.2 R6000:一次偏轨 7
1.4.3 R4000革命 8
1.4.4 R5000和R10000 9
1.5 MIPS和CISC体系结构的比较 11
1.5.1 MIPS指令集的一些规定 11
1.5.2 编址及内存访问 12
1.5.3 MIPS不支持的特征 13
1.5.5 程序员可见的流水线效果 14
1.5.4 可能没有预料到的特征 14
第2章 MIPS体系结构 18
2.1 MIPS汇编语言 18
2.2 寄存器的特点 19
2.3 整数乘法单元和寄存器 22
2.4 加载和存储:寻址方式 23
2.5 存储器和寄存器中的数据类型 24
2.5.1 整数数据类型 24
2.5.3 存储器中的浮点数据 25
2.5.2 未对齐的加载和存储 25
2.6 汇编语言的合成指令 26
2.7 MIPS Ⅰ发展到MIPS Ⅳ:64位(和其他)的扩展 27
2.7.1 迈向64位 28
2.7.2 谁需要64位? 29
2.7.3 关于64位与无模式转换:寄存器中的数据 30
2.7.4 MIPS Ⅲ的一些其他改进 31
2.8 基本地址空间 32
2.8.3 64位CPU的存储映射 34
2.8.2 核心与用户权限 34
2.8.1 简单系统的寻址 34
2.9 流水线冒险 36
第3章 协处理器0:MIPS处理器控制 41
3.1 CPU控制指令 41
3.2 起作用的寄存器及起作用的时机 42
3.3 标准CPU控制寄存器编码 43
3.3.1 处理器ID(PRId)寄存器 43
3.3.2 状态寄存器(SR) 44
3.3.3 原因寄存器(Cause) 49
3.3.4 异常返回地址(EPC) 51
3.3.5 无效虚地址寄存器(BadVaddr) 51
3.4 R4000以后的CPU专有的控制寄存器 51
3.4.1 Count/Compare寄存器:R4000时钟 51
3.4.2 Config寄存器:R4x00配置 52
3.4.3 Load-Linked Address(LLAddr)寄存器 54
3.4.4 调试观测点(WatchLo/WatchHi)寄存器 54
4.2 缓存怎样工作 56
4.1 缓存和缓存的管理 56
第4章 MIPS的缓存 56
4.3 早期MIPS CPU中的写透缓存 58
4.4 近期MIPS CPU中的回写缓存 59
4.5 缓存设计的其他选择 59
4.6 缓存管理 60
4.7 二级和三级缓存 62
4.8 MIPS CPU缓存的构造 63
4.9 对R3000风格的缓存编程 64
4.9.1 使用缓存隔离和交换 65
4.9.2 初始化和判断大小 66
4.9.3 缓存无效 66
4.9.4 测试和探察 67
4.10 对R4000风格的缓存编程 67
4.10.1 CacheERR、ERR和ErrorEPC寄存器:缓存错误处理 68
4.10.2 缓存指令 70
4.10.3 计算缓存的大小和配置方式 71
4.10.4 初始化程序 72
4.11 缓存效率 73
4.10.5 在缓存中无效或者写回一个内存区域 73
4.12 修改软件来影响缓存的效率 75
4.13 写缓冲区和需要关心它的时候 77
4.14 关于MIPS缓存的其他话题 79
4.14.1 多处理器的缓存特征 79
4.14.2 缓存别名 79
第5章 异常、中断和初始化 81
5.1 精确异常 81
5.3 异常向量:异常处理开始的地方 83
5.2 异常发生时刻 83
5.4 异常处理基础 86
5.5 从异常返回 87
5.6 嵌套异常 87
5.7 一个异常处理例程 88
5.8 中断 88
5.8.1 MIPS处理器的中断资源 89
5.8.2 实现中断优先级 91
5.8.3 原子性和对SR的原子改变 92
5.8.4 中断使能下的关键区:MIPS中的信号量机制 93
5.9 启动 94
5.9.1 识别CPU型号 96
5.9.2 启动序列 97
5.9.3 启动一个应用程序 97
5.10 模拟指令 98
第6章 内存管理与TLB 101
6.1 大型计算机上的内存管理 101
6.1.1 基本进程空间布局和保护 101
6.1.3 最佳页映射 103
6.1.2 把进程空间映射到真正的物理内存 103
6.1.4 我们真正想要的 104
6.1.5 MIPS设计的起源 106
6.2 MIPS TLB的特点 106
6.3 MMU的寄存器 109
6.3.1 EntryHi、EntryLo和PageMask寄存器 110
6.3.2 Index寄存器 112
6.3.3 Random寄存器 113
6.3.5 Context寄存器及XContext寄存器 114
6.3.4 Wired寄存器 114
6.4 MMU的控制指令 115
6.5 对TLB编程 116
6.5.1 如何产生重装入 116
6.5.2 使用ASID 117
6.5.3 Random寄存器与被绑定入口 117
6.6 建立内存译码机制 118
6.7 TLB的异常处理代码 119
6.7.1 32位R3000系列CPU的TLB异常处理函数 120
6.7.2 R4x00系列CPU的TLB异常处理函数 122
6.7.3 XTLB的失效处理函数 124
6.8 跟踪已修改的页(模拟dirty位) 124
6.9 内存地址译码和64位指针 125
6.10 使用MIPS的TLB 126
6.11 在非Unix系统中的内存管理 127
第7章 浮点支持 128
7.1 浮点的基本描述 128
7.2 IEEE754标准及其背景 129
7.3 怎样保存IEEE浮点数 130
7.3.2 对使用特殊值时的保留指数值 131
7.3.1 IEEE尾数的标准化 131
7.3.3 MIPS浮点数据格式 132
7.4 IEEE754的MIPS实现 134
7.5 浮点寄存器 135
7.6 浮点异常/中断 136
7.7 浮点控制:控制/状态寄存器 137
7.8 浮点实现/校正寄存器 139
7.9.1 装入/存储 140
7.9 浮点指令指南 140
7.9.2 寄存器间的传送 141
7.9.3 三个操作数算术操作 142
7.9.4 乘加操作 143
7.9.5 一元(可变符号)操作 143
7.9.6 转换操作 143
7.9.7 条件分支和测试指令 144
7.10 指令时序安排的要求 146
7.12 按需初始化和使能 147
7.11 指令时序对速度需求 147
7.13 浮点模拟 148
第8章 MIPS指令集完全指南 149
8.1 一个简单的例子 149
8.2 汇编助记符及其含义 150
8.2.1 U和Non-U(非U)助记符 152
8.2.2 除法助记符 153
8.2.3 指令的详细清单 153
8.3 浮点处理指令 175
8.4.1 向左加载/向右加载(load left/load right):地址非对齐的存取操作 179
8.4 特殊指令及其用途 179
8.4.2 关联加载/条件存储(load-linked/store-conditional) 183
8.4.3 条件拷贝(conditional move)指令 184
8.4.4 可能跳转的指令(branch-likely) 185
8.4.5 整数乘累加指令(interget multiply-accumulate)和乘加指令(multiply-add) 186
8.4.6 浮点乘加指令(floating-point multiply-add) 187
8.4.7 多浮点条件标志位 187
8.4.8 缓存数据预取 188
8.4.9 存取同步屏障:Sync指令 189
8.5 指令的机器编码 190
8.5.1 指令编码中的域 190
8.5.2 指令编码表的注意事项 202
8.5.3 编码方式和处理器实现的简单剖析 203
8.6 指令集的功能分组 203
8.6.1 空操作 204
8.6.2 寄存器间的数据拷贝指令 204
8.6.3 立即数加载指令 204
8.6.4 算术/逻辑操作指令 205
8.6.5 整数乘法、除法以及求余指令 207
8.6.6 整数乘累加指令 208
8.6.7 存取指令 209
8.6.8 跳转、分支和子程序调用指令 211
8.6.9 断点及异常指令 212
8.6.10 0#协处理器(CP0)处理指令 212
8.6.11 浮点操作指令 213
8.6.12 ATMizer-Ⅱ系统的专用浮点指令 215
9.1 一个简单的例子 216
第9章 汇编程序设计 216
9.2 语法简介 220
9.3 指令使用规则 221
9.3.1 带1~3个寄存器的计算型指令 221
9.3.2 带立即数的运算指令 222
9.3.3 关于32/64位指令 223
9.4 寻址模式 223
9.5 汇编伪指令 226
9.5.1 段的选择 226
9.5.2 包含堆栈的程序布局 228
9.5.3 数据的定义与对齐 229
9.5.4 符号绑定属性 231
9.5.5 函数伪指令 233
9.5.6 汇编器控制伪操作(.set) 235
9.5.7 编译/调试支持 237
9.5.8 SGI汇编语言中增加的伪操作 237
10.1 堆栈、子程序链接以及参数传递 239
第10章 MIPS上的C语言编程 239
10.2 堆栈参数结构 240
10.3 使用寄存器传递参数 241
10.4 C库范例 242
10.5 一个特殊的例子传递数据结构 243
10.6 传递不定数量的参数 244
10.7 函数的返回值 245
10.8 扩展寄存器——使用标准SGI n32和n64 245
10.9 堆栈分布、堆栈帧以及辅助调试器 248
10.9.1 leaf函数 250
10.9.2 nonleaf函数 251
10.9.3 适用于复杂堆栈要求的堆栈帧指针 254
10.10 数目可变的参数列表 257
10.11 不同线程间的共享函数和共享库问题 258
10.11.1 单一地址空间的代码共享 259
10.11.2 MIPS ABI中的共享库代码 259
10.12 编译器的优化 261
10.12.1 普通优化 262
10.12.2 优化不友好的代码并且如何避免 264
10.12.3 优化约束 265
10.13 通过C进行器件访问的提示 265
10.13.1 使用“volatile”制约破坏性的优化 266
10.13.2 C中的非对齐数据 267
第11章 可移植性和C代码 270
11.1 MIPS的移植:常见问题清单 270
11.2 一个理想的程序移植过程 272
11.2.1 程序移植的3个选择 272
11.2.2 解决系统相关的问题 273
11.2.3 分离不可移植代码 274
11.2.4 何时使用汇编 274
11.3 可移植C程序和语言标准 275
11.4 C库函数和POSIX 276
11.5 数据表示和对齐 277
11.6 尾端:字、字节和位的顺序 279
11.6.1 尾端和程序员 281
11.6.2 尾端:描述和脑力问题 282
11.6.3 尾端:硬件问题 284
11.6.4 互相对立尾端阵营之间的连接 286
11.6.5 可配置尾端的连接 287
11.6.6 处理MIPS CPU的两种尾端的软件 288
11.6.7 可移植性与尾端无关代码 290
11.6.8 尾端和外部数据 291
11.6.9 尾端问题“预知”和“治愈”的假象 292
11.7 高速缓存会引起什么样的错误?怎样才能阻止它? 292
11.7.1 高速缓存的管理和DMA数据 294
11.7.2 高速缓存的管理和指令数据的写入 295
11.7.3 高速缓存的管理和非高速缓存(或写透)的数据 295
11.8 MIPS的不同实现 295
第12章 软件举例 298
12.1 MIPS的启动 298
12.2 MIPS缓存管理 309
12.2.1 缓存操作:缓存指令出现前的32位MIPS 310
12.2.2 Cache操作:遵从MIPS Ⅲ和Cache指令 320
12.3.1 xcption:为程序员做些什么? 337
12.3 MIPS异常处理 337
12.3.2 xcption:C语言接口代码 338
12.3.3 xcption:低层模块(low-level module) 339
12.4 MIPS中断 355
12.5 MIPS的优化 357
附录A 指令时序与优化 363
A.1 避免冒险:确保代码正确 363
A.2 避免互锁提高性能 364
A.4 避免CP0冒险:要使用多少nop? 365
A.3 乘法单元冒险:hi和lo的早期修正 365
A.5 CP0指令/指令调度(instruction scheduling) 367
A.6 CP0标志位(flags)和指令 369
附录B 汇编语言语法 377
附录C 目标代码 377
C.1 工具 377
C.2 区和段(section segment) 378
C.3 ECOFF(RISC/OS) 379
C.3.1 文件头 379
C.3.2 可选的a.out头 381
C.3.3 调入器(loader)举例 382
C.3.4 进一步阅读 383
C.4 ELF(MIPS ABI) 383
C.4.1 文件头 383
C.4.2 程序头 385
C.4.3 调入器举例 385
C.4.4 进一步阅读 387
C.5 目标代码工具 387
D.1 MIPS16 388
附录D MIPS的发展 388
D.1.1 MIPS16中的特殊编码和指令 389
D.1.2 MIPS16的评价 389
D.2 MIPS Ⅴ/MDMX 390
D.2.1 编译器可以使用多媒体指令吗? 391
D.2.2 MDMX的应用 392
D.2.3 MIPS Ⅴ的应用 393
D.2.4 MDMX/MIPS Ⅴ可能的成功 393
MIPS术语说明 394
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《设计十六日 国内外美术院校报考攻略》沈海泯著 2018
- 《计算机辅助平面设计》吴轶博主编 2019
- 《高校转型发展系列教材 素描基础与设计》施猛责任编辑;(中国)魏伏一,徐红 2019
- 《景观艺术设计》林春水,马俊 2019
- 《大数据Hadoop 3.X分布式处理实战》吴章勇,杨强 2020
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《Cinema 4D电商美工与视觉设计案例教程》樊斌 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019