资源大小: 67.41MB
发布时间: 2013-01-31
文件格式: pdf
下载次数: 9
分享到:

下载地址:

下载地址1
(本站为飞网专业下载站,域名:down.cfei.net)

资源简介:

中文名: MIPS体系结构透视作者: 斯威特曼译者: 李鹏资源格式: PDF版本: 扫描版出版社: 机械工业出版社书号: 9787111233626发行时间: 2008年05月01日地区: 大陆语言: 简体中文简介: 内容介绍:《计算机科学丛书•MTPS体系结构透视》是一本关于MIPS体系结构的经典之作。第2版延续了第1版的可读性传统,通过应用具体的实例对硬件和软件的接口进行强调,并将广泛应用的RISC系统结构MIPS与开源操作系统Linux结合在一起,从MIPS设计原理开始,阐述MIPS指令集和程序员的可用资源。第2版在描述Linux/MIPS应用代码如何载入到内存、如何连接到库以及如何运行等方面做了介绍。此外,书中还提供了完整的、经过更新的MIPS指令集指南。 目录: 第1章 RISC和MlPS1.1 流水线1.1.1 什么使流水线效率降低1.1.2 流水线和缓存1.2 MIPS的五段流水线1.3 RISC和CISC1.4 迄今为止一些重要的MIPS芯片1.4.1 R2000处理器到R3000处理器1.4.2 R6000处理器:一次偏轨1.4.3 第一批CPLJ内核1.4.4 R4000处理器:一次革命1.4.5 ACE联盟的兴衰1.4.6 SGI收购MIPS1.4.7 QED:嵌入式系统中的快速MIPS处理器1.4.8 R10000处理器和它的后继者1.4.9 消费类电子产品中的MIPS处理器1.4.10 网络路由器和激光打印机中的MIPS1.4.11 现代的MIPS处理器1.4.12 MIPS Technologies的重生1.4.13 现状1.5 MIPS和CISC体系结构的比较1.5.1 对MIPS指令的各种限制1.5.2 编址及内存访问1.5.3 发展MIPS不支持的特性1.5.4 程序员可见的流水线效果第2章 MIPS体系结构2.1 MIPS汇编语言的风格2.2 寄存器2.3 整数乘法单元和寄存器2.4 加载和存储:寻址方式2.5 存储器和寄存器中的数据类型2.5.1 整数数据类型2.5.2 未对齐的加载和存储2.5.3 内存中的浮点数据2.6 汇编语言中的合成指令2.7 MIPS 1发展到MIPS 64指令集:64位(和其他)的扩展2.7.1 迈向64位2.7.2 谁需要64位2.7.3 关于64位与无模式转换:寄存器中的数据2.8 基本地址空间2.8.1 简单系统的寻址2.8.2 核心与用户特权级别2.8.3 整体视图:内存映射的64位视图2.9 流水线的可见度第3章 协处理器0:MIPS处理器控制3.1 CPU控制指令3.2 相关寄存器与时序3.3 CPU控制寄存器及其编码3.3.1 状态寄存器(SR)3.3.2 原因寄存器3.3.3 异常返回地址(EPC)寄存器3.3.4 无效虚地址(BadVaddr)寄存器3.3.5 计数/比较寄存器(Count/Compare)CPU上的计时器3.3.6 处理器ID(PRId)寄存器3.3.7 配置(Config)寄存器:CPU资源信息与配置3.3.8 EBase和IntCtl:中断与异常设置3.3.9 SRSCtl和SRSMap:影子寄存器设置3.3.10 链接加载地址(LLAddr)寄存器3.4 CPO冒险——不经意间的陷阱3.4.1 冒险屏障指令3.4.2 指令冒险与用户冒险3.4.3 CPO指令之间的冒险第4章 MIPS处理器的高速缓存4.1 高速缓存和高速缓存的管理4.2 高速缓存怎样工作4.3 早期MIPS CPU中的写透式高速缓存4.4 MIPs CPU中的写回式高速缓存4.5 高速缓存设计的其他选择4.6 管理高速缓存4.7 二级和三级高速缓存4.8 MIPS CPU高速缓存的配置4.9 编程MIPS32/64高速缓存4.9.1 Cache指令4.9.2 高速缓存初始化和Tag/Data寄存器4.9.3 CacheErr,ERR和ErrorEPC寄存器:内存/高速缓存的错误处理4.9.4 计算高速缓存大小和配置方式4.9.5 初始化例程4.9.6 在高速缓存中无效或写回一个内存区域4.10 高速缓存效率4.11 重组软件来影响高速缓存效率4.12 高速缓存别名笫5章 异常、中断和初始化5.1 精确异常5.2 异常发生时刻5.3 异常向量:异常处理开始的地方5.4 异常处理:基础5.5 从异常返回5.6 嵌套异常5.7 一个异常处理例程5.8 中断5.8.1 MIPS CPU中的中断资源5.8.2 通过软件实现中断优先级5.8.3 原子性和SR的原子改变5.8.4 中断使能时的临界区:MIPS中的信号量机制5.8.5 MIPS32/64中向量化和EIC扣断5.8.6 影子寄存器5.9 启动5.9.1 探测和识别CPU型号5.9.2 启动序列5.9.3 启动一个应用程序5.10 模拟指令第6章 底层内存管理与TLB6.1 TLB/MMU硬件和它的功能6.2 TLB/MMU的寄存器描述6.2.1 TLB关键字域——EntryHi和PageMask6.2.2 TLB输出域——EntryLo0-16.2.3 选择一个TLB表项——Index,Random和Wired寄存器6.2.4 页表访问助手——Context和XContext6.3 TLB/MMU的控制指令6.4 对TLB编程6.4.1 如何进行重填6.4.2 使用ASID6.4.3 Random寄存器与被锁定表项6.5 硬件友好的页表和重填机制6.5.1 TLB缺失处理6.5.2 XTLB的缺失处理函数6.6 MIPS TLB的日常使用6.7 更简单操作系统中的内存管理第7章 浮点支持7.1 浮点的基本描述7.2 IEEE 754标准及其背景7.3 怎样存储IEEE浮点数7.3.1 IEEE尾数和规格化7.3.2 使用特殊值时的预留指数值7.3.3 MRS浮点数据格式7.4 IEEE 754的MIPS实现7.5 浮点寄存器7.6 浮点异常/中断7.7 浮点控制:控制/状态寄存器7.8 浮点实现寄存器7.9 浮点指令指南7.9.1 加载/存储7.9.2 寄存器间的传递7.9.3 三操作数算术运算7.9.4 乘加运算7.9.5 一元(改变符号)运算7.9.6 转换操作7.9.7 条件分支和测试指令7.10 成对单精度浮点指令和MIPS-3D ASE7.10.1 成对单精度指令的异常7.10.2 成对单精度的三操作数算术、乘加、改变符号和无条件移动操作7.10.3 成对单精度转换操作7.10.4 成对单精度测试和条件移动指令7.10.5 MIPS-3D指令7.11 指令时序需求7.12 指令加速的时序7.13 按需初始化和使能7.14 浮点仿真笫8章 MIPS指令集完全指南8.1 一个简单的例子8.2 汇编指令及其含义8.2.1 U和非U助记符8.2.2 除法助记符8.2.3 指令的详细清单8.3 浮点指令8.4 MIPS32/64发行版1的区别8.4.1 在发行版2中加入的常规指令8.4.2 发行版2新加入的特权指令8.5 特殊指令和它们的用途8.5.1 向左加载/向右加载:地址非对齐的存取操作8.5.2 链接加载/条件存储8.5.3 条件传递指令8.5.4 可能分支指令8.5.5 整数乘累加指令和乘加指令8.5.6 浮点乘加指令8.5.7 多浮点条件标志位8.5.8 缓存数据预取8.5.9 存取内存屏障:Sync指令8.5.10 冒险屏蔽指令8.5.11 Synci:指令写入的缓存管理8.5.12 读取硬件寄存器8.6 指令的机器编码8.6.1 指令编码表中的域8.6.2 指令编码表的注意事项8.6.3 编码方式和处理器的简单实现8.7 指令集的功能分组8.7.1 空操作8.7.2 寄存器间的数据传递指令8.7.3 常数加载指令8.7.4 算术/逻辑操作指令8.7.5 整数乘法、除法以及求余指令8.7.6 整数乘累加指令8.7.7 存取指令8.7.8 跳转、分支和子程序调用指令8.7.9 断点及陷阱指令8.7.10 协处理器0功能8.7.11 浮点操作指令8.7.12 用户模式下对“底层”硬件的有限访问第9章 阅读MIPS汇编语言9.1 一个简单的例子9.2 句法9.3 指令的约定9.3.1 计算指令:3寄存器、2寄存器和1寄存器9.3.2 立即数:带常量的计算指令9.3.3 关于64位和32位指令9.4 寻址模式9.5 目标文件和内存布局第10章 在MIPS体系结构上移植软件10.1 MIPS应用的底层软件:经常会遇到问题的列表10.2 尾端:字、字节和位的顺序10.2.1 位、字节、字和整数10.2.2 软件和尾端10.2.3 硬件和尾端10.2.4 MIPS CPU的双尾端软件10.2.5 可移植性和尾端无关代码10.2.6 尾端和外来数据10.3 可见缓存的问题10.3.1 缓存管理和DMA数据10.3.2 缓存管理和写指令:自修改代码10.3.3 缓存管理和非缓存或写透数据10.3.4 缓存别名和页面着色10.4 存储访问顺序和重排10.4.1 排序与写缓冲10.4.2 实现wbflush10.5 写C程序10.5.1 用GNU C编译器包装汇编代码10.5.2 映射为内存的I/O寄存器和“Volatile”10.5.3 用C写MIPS应用程序的其他问题第11章 MIPS软件标准(ABI)11.1 数据表示和对齐11.1.1 基本类型的大小11.1.2 “long”型和指针型数据大小11.1.3 对齐要求11.1.4 基本类型的内存布局和尾端如何产生影响11.1.5 内存的布局结构、数组类型和对齐11.1.6 结构中的位域11.1.7 C中的不对齐数据11.2 参数传递以及MIPS ABI中的堆栈约定11.2.1 堆栈、子例程链接和参数专递11.2.2 032的堆栈参数结构11.2.3 使用寄存器传递参数11.2.4 C库中的例子11.2.5 特殊的例子:传递结构11.2.6 传递可变参数11.2.7 函数返回值11.2.8 扩展寄存器一使用约定:SGIn32和n6411.2.9 堆栈布局、堆栈帧和辅助调试器11.2.10 可变参数和stdargs第12章 调试MIPS设计——调试和剖析特性12.1 “EJTAG”片上调试单元12.1.1 EJTAG历史12.1.2 探头如何控制CPU12.1.3 通过JTAG调试通信12.1.4 调试模式12.1.5 单步12.1.6 dseg内存译码区域12.1.7 EJTAG CPO寄存器,特殊调试12.1.8 DCR(调试控制)内存映射寄存器12.1.9 EJTAG断点硬件支持12.1.10 理解断点条件12.1.11 非精确调试断点12.1.12 PC取样与EJTAG12.1.13 使用没有探头的EJTAG12.2 EJTAG之前的调试支持——break指令和CPO观察点12.3 PDtrace12.4 性能计数器第13章 GNU几inux概览13.1 组件13.2 内核代码的层次13.2.1 异常模式下的MIPS CPU13.2.2 屏蔽部分或全部中断的MIPS CPU13.2.3 中断上下文13.2.4 线程上下文中执行内核第14章 硬件与软件如何协同工作14.1 中断的生命周期14.2 线程、临界区和原子性14.2.1 MIPS体系结构和原子操作14.2.2 Linux自旋锁14.3 系统调用时发生了什么14.4 Linux/MIPS系统如何进行地址翻译14.4.1 为什么进行内存翻译14.4.2 基本进程布局与保护14.4.3 映射进程地址到真实内存14.4.4 选择页式映射14.4.5 我们真正需要的14.4.6 MIPs设计的起源14.4.7 记录被修改的页面(模拟“脏”位)14.4.8 内核如何服务一个TLB重填异常14.4.9 TLB的注意事项与维护14.4.10 内存翻译与64位指针第15章 Linux内核中的MIPS特有问题15.1 显式缓存管理15.1.1 DMA设备访问15.1.2 写入指令稍后执行15.1.3 缓存/内存映射问题15.1.4 缓存别名15.2 CPO流水线冒险15.3 多处理器系统与一致性缓存15.4 对一个关键例程的极度优化调整第16章 Linux应用程序代码、PIC和库16.1 链接单元如何进入程序16.2 全局偏移表(GOT)组织附录A MIPS多线程附录B MIPS指令集的其他可选扩展MIPS术语表参考文献


飞网下载站,免费下载共享资料,内容涉及教育资源、专业资料、IT资源、娱乐生活、经济管理、办公文书、游戏资料等。