图书介绍

MIPS处理器设计透视PDF|Epub|txt|kindle电子书版本网盘下载

MIPS处理器设计透视
  • (英)Dominic Sweetman著;赵俊良,张福新,陶品译 著
  • 出版社: 北京:北京航空航天大学出版社
  • ISBN:7810774301
  • 出版时间:2005
  • 标注页数:427页
  • 文件大小:24MB
  • 文件页数:453页
  • 主题词:微处理器-系统设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

MIPS处理器设计透视PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

目录2

第1章 RISC和MIPS2

1.1 流水线2

1.1.1 什么使流水线效率降低?3

1.1.2 流水线和缓存4

1.2 MIPS的五级流水线4

1.3 RISC和CISC6

1.4 迄今为止一些重要的MIPS芯片7

1.4.1 R2000到R30007

1.4.2 R6000:一次偏轨7

1.4.3 R4000革命8

1.4.4 R5000和R100009

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章 内存管理与TLB101

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 使用ASID117

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的TLB126

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和n64245

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库函数和POSIX276

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位MIPS310

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 MIPS16388

附录D MIPS的发展388

D.1.1 MIPS16中的特殊编码和指令389

D.1.2 MIPS16的评价389

D.2 MIPS Ⅴ/MDMX390

D.2.1 编译器可以使用多媒体指令吗?391

D.2.2 MDMX的应用392

D.2.3 MIPS Ⅴ的应用393

D.2.4 MDMX/MIPS Ⅴ可能的成功393

MIPS术语说明394

热门推荐