第1章 引言 1
1.1 CPU时代 1
1.2什么是MIPS CPU 1
1.3为什么选择MIPS CPU 2
1.4本书适用的读者 3
1.5本书的主要内容 3
1.6本书的结构 5
第2章 MIPS体系结构概述 7
2.1走进MIPS的世界 7
2.2 MIPS体系结构的发展 8
2.2. 1 CISC和RISC 8
2.2.2 MIPS I到MIPS V 9
2.2.3 MIPS32和MIPS64 9
2.2.4 MIPS体系结构的特点 12
2.3 MIPS处理器核 13
2.4 MIPS数据类型与寄存器 17
2.4.1数据类型 17
2.4.2 MIPS CPU寄存器概述 17
2.4.3 MIPS CPU通用寄存器 17
2.4.4 MIPS CPU特殊功能寄存器 19
2.4.5 MIPS FPU寄存器 19
2.5 MIPS体系存储空间的编址 20
第3章MIPS32 4K处理器及流水线 22
3.1 MIPS32 4K处理器核的组成 22
3.1.1执行单元 23
3.1.2乘/除单元 23
3.1.3系统控制协处理器 24
3.1.4存储管理单元 24
3.1.5缓存控制器 24
3.1.6总线接口单元 24
3.1.7功率控制 24
3.1.8指令缓存和数据缓存 25
3.1.9 EJTAG控制器 25
3.2 MIPS32 4K处理器核的流水线结构 25
3.2.1流水线的各阶段 25
3.2.2流水线的指令流 27
3.2.3分支延时槽 28
3.2.4互锁 29
3.2. 5旁路 29
第4章 MIPS32指令集 31
4.1加载和存储指令 31
4.1.1对齐加载和存储指令 32
4.1.2非对齐加载和存储指令 33
4.1.3链接加载和条件存储指令 36
4.2算术指令 40
4.2.1 ALU立即数和三操作数指令 41
4.2.2 ALU两操作数指令 41
4.2.3移位指令 42
4.2.4乘除指令 42
4.3跳转和分支指令 44
4.3.1在256MB区域中无条件跳转的指令 45
4.3.2与PC相关的寄存器比较条件分支指令 46
4.3.3与PC相关的零比较条件分支指令 46
4.4杂类指令 47
4.4.1同步指令 47
4.4.2异常指令 50
4.4.3条件转移指令 52
4.4.4预取指令 53
4.4.5空操作指令 55
4.5协处理器指令 55
第5章 系统控制协处理器 57
5.1协处理器概述 57
5.2 CPU控制指令 58
5.3 CP0寄存器 59
5.3.1 CP0寄存器概述 59
5.3.2 Index寄存器(0) 61
5.3.3 Random寄存器(1,只读) 61
" 5.3.4 EntryLo0和EntryLol寄存器(2, 3,读/写) 62
5.3.5 Context寄存器(4,读/写) 63
5.3.6 PageMask寄存器(5,读/写) 64
5.3.7 Wired寄存器(6,读/写) 65
5.3.8 BadVAddr寄存器(8,只读) 66
5.3.9 Count寄存器(9,读/写) 66
5.3.10 EntryHi寄存器(10,读/写) 66
5.3.11 Compare寄存器(11,读/写) 67
5.3.12 Status寄存器(12,读/写) 67
5.3.13 Cause寄存器(13) 70
5.3.14 EPC寄存器(14,读/写) 72
5.3.15 Prid寄存器(15,只读) 72
" 5.3.16 Config寄存器(16,选0) 73
5.3.17 Configl寄存器(16,选1,只读) 75
5.3.18 LLAddr寄存器(17,只读) 78
5.3.19 WatchLo寄存器(18,读/写) 78
5.3.20 WatchHi寄存器(19,读/写) 79
5.3.21 Debug寄存器(23) 79
5.3.22 DEPC寄存器(24,读/写) 83
5.3.23 ErrCtl寄存器(26,读/写) 84
" 5.3.24 TagLo寄存器(28,选0,读/写) 84
5.3.25 DataLo寄存器(28,选1,读/写) 85
5.3.26 ErrorEPC寄存器(30,读/写) 85
5.3.27 DeSave寄存器(31,读/写) 86
第6章存储管理 87
6.1存储管理单元MMU概述 87
6.2虚拟存储空间的分段 89
6.2.1用户模式 90
6.2.2内核模式 90
6.2.3调试模式 93
6.3地址转换单元TLB 94
6.3.1联合地址转换单元JTLB 94
6.3.2指令地址转换单元ITLB 96
6.3.3数据地址转换单元DTLB 96
6.3.4地址转换过程 96
6.3.5 TLB指令 97
6.3.6 TLB寄存器 98
6.3.7页大小和替换算法 98
6.4固定映射 99
第7章 高速缓存 101
7.1高速缓存概述 101
7.2缓存的组织结构 101
7.3缓存的工作原理 104
7.3.1指令缓存 105
7.3.2数据缓存 106
7.4替换策略 109
7.5缓存指令 109
第8章MIPS异常 112
8.1精确异常 112
8.2异常分类 114
8.3异常解释 116
8.4异常处理 118
8.4.1异常入口向量地址 118
8.4.2各种异常对应的ExcCode 120
8.4.3异常处理流程 120
8.4.4异常处理的C代码介绍 126
第9章MPS汇编语言程序设计 130
9.1 MIPS汇编程序简单示例及其处理过程介绍 130
9.2 MIPS汇编程序结构 133
9.3 MIPS汇编程序语句格式 134
9.3.1规则概要 134
9.3. 2数据定义 135
9.3.3寻址方式 136
9.4汇编程序伪操作 138
9.4.1段选择伪操作 139
9.4.2数据定义和对齐伪操作 141
9.4.3标记的属性 143
9.4.4函数伪操作 144
9.4.5汇编控制伪操作 146
9.4.6其他伪指令 149
9.5程序举例 149
第10章MIPS应用程序 159
10.1启动程序 160
10.1.1启动过程介绍 160
10.1.2启动代码实例 163
10.2 MIPS ABI简介 171
10.3 MIPS函数调用规范 174
10.3.1堆栈与函数参数 174
10.3.2寄存器与参数传递 175
10.3.3函数返回值 176
10.3.4堆栈布局、栈帧以及调试信息 177
10.3.5实例 179
10.4目标文件格式 190
10.5 Linux应用程序 191
10.6实践中的要点 193
10.6.1关于C版本 193
10.6.2关于编译器 193
10.6.3其他 194
第11章MI PS程序调试 195
11.1 EJTAG与调试 195
11.1.1 EJTAG介绍 195
11.1.2 EJTAG的功能 195
11.1.3调试需要用到的寄存器 197
11.2调试模式 198
11.2.1调试模式指令集 198
11.2.2调试模式下的地址空间 198
11.2.3调试模式下对处理器资源的处理 199
11.3调试异常 200
11.3.1调试异常的种类 200
11.3.2调试异常的优先级 202
11.3.3调试异常处理 203
11.3.4调试模式中的异常处理 204
第12章SDE编程环境 207
12.1 SDE概述 207
12.2使用快速入门 207
12.3 SDE的目标平台 212
12.4调试器的使用 214
12.4.1使用MIPSsim仿真器进行调试 215
12.4.2使用GNU仿真器进行调试 220
12.4.3 RAM版本与ROM版本程序 220
12.5 profile——剖析程序的执行 220
12.5.1 profile简介 220
12.5.2 profile的编译选项 221
12.5.3使用MIPSsim进行profile 222
12.5.4使用GNU仿真器进行profile 227
12.6 SDE与调试器 228
12.6.1调试器举例 228
12.6.2在SDE下进行调试 230
第13章MIPS开发平台 231
13.1 Malta开发平台 231
13.1.1 Malta概述 231
13.1.2基于Malta的软硬件开发工具 231
13.1.3 Malta主板的基本特征 232
13.1.4 Malta主板的系统结构 233
13.1.5 Malta平台的使用 235
13.2 SEAD-II开发平台 239
13.2.1 SEAD-I概述 239
13.2.2 SEAD-II模块与总线 241
13.2.3 SEAD-II平台的使用 243
第14章 硬件接口 246
14.1 4K处理器核的接口 246
14.1.1时钟接口 248
14.1.2初始化接口 248
14.2总线接口 248
第15章 仿真及验证模型 262
15.1 SmartModel仿真模型 262
15.1.1 SmartModel仿真库 262
15.1.2 MIPS核的SmartModel仿真模型 263
15.2 MIPS32 4K系列BFM模型 264
15.2.1 BFM模型简介 264
15.2.2 BFM模型的组成 265
15.2.3 BFM模型的事务处理流程 265
15.3 BFM模型的仿真和验证 266
15.3.1验证模型的实现 266
15.3.2仿真结果与分析 269
15.4 MIPS32 4K系列VMC模型 270
15.4.1 VMC模型简介 270
15.4.2寄存器观测窗口 271
15.4.3 VMC模型仿真配置 272
15.4.4跟踪文件 273
15.4.5实例化多个VMC模型的情况 274
15.5 VMC模型的仿真和验证 274
15.5.1仿真模型的实现 275
15.5.2仿真结果与分析 278
缩略语 280
参考文献 282