MIPS体系结构透视图书
人气:27

MIPS体系结构透视

本书是一本关于MIPS体系结构的经典之作。第2版延续了第1版的可读性传统,通过应用具体的实例对硬件和软件的接口进行强调,并将广泛应用的RISC系统结构MIPS与开源操作系统Linux结合在一起,从MIPS设计原理开始,阐...
  • 所属分类:图书 >计算机/网络>计算机体系结构  
  • 作者:(英)[斯威特曼] 著,[李鹏] 等译
  • 产品参数:
  • 丛书名:计算机科学丛书
  • 国际刊号:9787111233626
  • 出版社:机械工业出版社
  • 出版时间:2008-05
  • 印刷时间:2008-05-01
  • 版次:1
  • 开本:16开
  • 页数:--
  • 纸张:胶版纸
  • 包装:平装
  • 套装:

内容简介

本书是一本关于MIPS体系结构的经典之作。第2版延续了第1版的可读性传统,通过应用具体的实例对硬件和软件的接口进行强调,并将广泛应用的RISC系统结构MIPS与开源操作系统Linux结合在一起,从MIPS设计原理开始,阐述MIPS指令集和程序员的可用资源。

第2版在描述Linux/MIPS应用代码如何载入到内存、如何连接到库以及如何运行等方面做了介绍。此外,书中还提供了完整的、经过更新的MIPS指令集指南。

本书既可作为高等院校计算机体系结构、嵌入式系统编程和高级计算技术等课程的教材或教学参考书,也很适合科研机构专业人士和软硬件开发人员参考阅读。

编辑推荐

本书是"计算机科学丛书"之一,全书共分16个章节,对MIPS的体系结构透视作了系统地介绍,具体包括MIPS体系结构、MIPS处理器的高速缓存、底层内存管理与TLB、浮点支持、MIPS指令集指南、在MIPS体系结构上移植软件等。该书可供各大专院校作为教材使用,也可供从事相关工作的人员作为参考用书使用。

大多数"体系结构概览"类的书籍对体系结构的汇编语言语焉不详,只是给出令人厌烦的概述。然而,本书却是一个典型的反例,为所有这类书的作者树立了一个榜样。作者不但提供了体系结构参考所必需的细节,还以对关键体系结构特点(及其原理)富有洞察力的视角表达出这些细节。

元论对于通用的计算机还是对于MlPS来说,本书都是非常有用的书籍。它阐述了渗入到体系结构发展中的技术、经济和历史和政治等因素。

第2版的一个重要补充涉及操作系统、移植以及ABl等问题。本书对于软件开发者来说是一本的参考书。任何从事MIPS体系结构相关工作的人都会乐于拥有这本书。

——Randy AIIen,Catalytic公司的创始人和首席技术官

本书是任何MIPS体系结构参考手册的极好伴侣。本版延续了第1版的传统,通过具体实例强调硬件/软件接口。另外,第2版增加了的,从MIPS—I/V体系结构到MIPS-32/64体系结构的转变,其中包括支持多线程的体系结构。总之,这是任何热衷MIPs体系结构的程序员的必备书籍。

——Jan-WiIlem van de Waerdt,飞利浦半导体研究院

第2版不仅对第1版进行了彻底的更新,而且将应用广泛的RISC系统结构MIPS与开源操作系统Linux结合在一起。本书的部分从MIPS设计原理开始,进而阐述MIPSt旨令集和程序员资源。书中以MIPS 32/MIPS64标准为基准,对其他体系结构进行了比较。

与第1版相比,第2版的显著变化是面图片的小企鹅坐在驾驶员的位置上,本书以此作为研究来自Linux 内核的真正的低层操作系统的实例,展示Linux(包括单处理器和DSMP)如何构建于MIPS体系结构所提供的基础之上。本书从操作系统的底层(中断、内存调度)开始,进而描述Linux/MIPS应用代码如何载入到内存、连接到库并运行。

作者简介

Dominic Sweetman富有大理实践经验的硬件系统、CPU、网络和操作系统设计者和开发者。他的丰富经验来自于低层编码、操作系统开发、局域网和分布式系统。他是Whitechapel WorkstatIons的创立者之一,并在1988年创建了一家MIPS咨询公司——AIgomhmics。

目录

出版者的话

专家指导委员会

推荐序

译者序

第1章 RISC和MlPS

1.1 流水线

1.1.1 什么使流水线效率降低

1.1.2 流水线和缓存

1.2 MIPS的五段流水线

1.3 RISC和CISC

1.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收购MIPS

1.4.7 QED:嵌入式系统中的快速MIPS处理器

1.4.8 R10000处理器和它的后继者

1.4.9 消费类电子产品中的MIPS处理器

1.4.10 网络路由器和激光打印机中的MIPS

1.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章 底层内存管理与TLB

6.1 TLB/MMU硬件和它的功能

6.2 TLB/MMU的寄存器描述

6.2.1 TLB关键字域——EntryHi和PageMask

6.2.2 TLB输出域——EntryLo0-1

6.2.3 选择一个TLB表项——Index,Random和Wired寄存器

6.2.4 页表访问助手——Context和XContext

6.3 TLB/MMU的控制指令

6.4 对TLB编程

6.4.1 如何进行重填

6.4.2 使用ASID

6.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 ASE

7.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 实现wbflush

10.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和n64

11.2.9 堆栈布局、堆栈帧和辅助调试器

11.2.10 可变参数和stdargs

第12章 调试MIPS设计——调试和剖析特性

12.1 "EJTAG"片上调试单元

12.1.1 EJTAG历史

12.1.2 探头如何控制CPU

12.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取样与EJTAG

12.1.13 使用没有探头的EJTAG

12.2 EJTAG之前的调试支持——break指令和CPO观察点

12.3 PDtrace

12.4 性能计数器

第13章 GNU几inux概览

13.1 组件

13.2 内核代码的层次

13.2.1 异常模式下的MIPS CPU

13.2.2 屏蔽部分或全部中断的MIPS CPU

13.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术语表

参考文献

在线预览

第1章 RISC和MIPS

在RISC体系结构中,MIPS是雅的一种,甚至连竞争对手也不得不承认这一点。这一点,从后来的体系结构,如DEC的Alpha和惠普的Precision受到MIPS的巨大影响也可以明显地看出来。MIPS自身优雅的设计虽然不能在充满竞争的市场中保障长盛不衰,但其微处理器却总能跻身于每一代最有效率的微处理器之列并保持最简洁的设计。

对MIPS计算机系统公司而言,相对简洁的设计是一种商业上的需要,该公司起源于1985年一个制造并销售芯片的学术项目。后来,该体系结构得到了(或许现在继续得到)工业界制造商们最广泛的支持——从生产专用集成电路核心(ASIC core)的厂商,如MIPS Technologies、飞利浦,到制造低成本CPU的厂商,如IDT、AMD/Alchemy,再到广泛应用的嵌入式领域中的64位CPU厂商,如IPMC—Sierra、东芝和Broadcom。

在低端,MIPS CPU在系统芯片(system on a chip)中用肉眼很难看到;而在高端,Intrinsity公司非凡的处理器可以以2 GHz运行——一个无可匹敌的速度,当然功耗/热量无限攀升的当代PC机除外。

ARM吸引了更多的眼球,但MIPS依然保持了足够良好的销量:2004年在嵌入式应用中就销售了1亿个CPU。

MIPS CPU是一种RISC体系结构的CPU,产生于一个学术研究与开发蓬勃发展的特殊时期。RISC(精简指令集计算)是一个很有魅力的缩写名词,就像类似的其他很多缩写名词一样,其混淆的事实比其揭露的事实更多。但对于1986年到1989年间出现的许多新的CPU体系结构(它们的性能都应归功于几年前的一系列开创性研究项目中发现的一些重要思想)来说,RISC这个词却真正为它们提供了一个有用的标签。有人曾评论到:"1984年以后定义的计算机体系结构都是RISC的"。这句话尽管像是在嘲讽产业界对这个词语的用法,但这一评论在技术上也是事实——1984年以后设计的计算机,没有任何一款能够忽视RISC先驱者们的工作。

……

网友评论(不代表本站观点)

来自morrel**的评论:

这批书是为图书角购买的,大家都反馈内容很不错,赞一个

2014-06-14 11:12:54
来自morrel**的评论:

这本书买了多次了,工具书比较实用

2014-06-14 11:13:24
来自fantasy**的评论:

这个商品不太好

2014-06-14 14:06:15
来自无昵称**的评论:

帮小盆友买的,应该不错

2014-09-19 13:06:58
来自无昵称**的评论:

对MIPS讲解的很好,是老师让买的。

2014-09-19 14:51:24
来自三刀踏**的评论:

这个商品不错~

2014-10-16 09:25:14
来自王不留**的评论:

这个商品不错~

2014-11-12 11:54:47
来自东东乐**的评论:

很不错的一本书。

2016-09-28 17:30:49
来自无昵称**的评论:

翻译很烂,读起来很拗口翻译很烂,读起来很拗口翻译很烂,读起来很拗口

2013-07-07 22:35:29
来自wangjun**的评论:

听说可以但没仔细看 粗略浏览了下 还可以

2009-01-08 12:59:23
来自yuekcc**的评论:

上星期订的书,一个星期后才收到。这次发货有点慢呀。书的质量还好,不过发现里面居然有两没有印好,只看到一部分文字!~~

2009-03-03 20:23:15
来自斑鱼**的评论:

中文不怎么样。如果有能力的话。最好看看原版的。。知识点也多点。更详细

2009-08-17 13:16:21
来自liyi520**的评论:

正在学习,听说是嵌入式处理器比较经典的教材

2011-12-07 20:32:27
来自莱恩0哈**的评论:

最近在研究MMU的机理,需要一本说CPU的书,刚好

2009-08-15 17:19:01
来自无昵称**的评论:

在反编译,看了此书工作完成了一半,继续努力,此书确实名副其实.

2011-12-02 23:24:57
来自无昵称**的评论:

这个商品不错,就是送达的时候,书有点破损,书很好,是mips的经典之作

2013-07-31 18:43:25
来自无昵称**的评论:

书的质量很好,杂志之家也是一家很好的电商,好评。

2014-07-24 11:21:28
来自hellowo**的评论:

对于了解经典的RISC体系结构来说是本优雅易懂的书,就是书的纸张不太好,颜色都不统一,还很薄,都敢太用力翻,不知道出版商怎么回事。

2010-12-10 16:26:17
来自晚饭不**的评论:

纸张质量一般,不过内容很喜欢。MIPS的经典之作

2012-08-20 10:27:53
来自sunseed**的评论:

讲MIPS的书本来就少,不过终于有一本了,呵呵,欣慰

2009-05-04 15:03:53
来自无昵称**的评论:

不少网友认为是经典,但没有MIPS III的内容, 出版早了一点, 了解MIPS历史很好, 想通过这本书了解龙芯的架构,还是令人失望的!

2010-06-16 20:55:29
来自工大小**的评论:

单独讲解MIPS方面的书,还是比较少,不过这本描述还是相当详尽的。虽然还没有真正看完这本书,但现在是受益匪浅,期待后续的阅读中,继续受益!值得推荐的一本好书。

2013-09-02 10:31:22
来自wacc131**的评论:

MIPS的书好少啊,这本书从内容说应该算不错的了,当当送货相当快,当当的书和其他商城有的一拼。

2014-10-31 21:41:02
来自无昵称**的评论:

MIPS经典的书,做比较多的是ARM,买本MIPS的书只是想更了解这方面的东东,粗看了一遍,还没深入研究

2012-05-22 22:40:53
来自casperz**的评论:

MIPS体系结构必读啊,还是纸质的书看起来舒服

2014-05-06 22:42:17
来自纸上幻**的评论:

计算机体系结构真的是一门神课,需要对于组成原理,汇编语言等计算的硬件相关知识有一定的理解,MIPS体系结构透视或许能够帮助你在现实中走的更远一点。

2014-06-08 19:11:27
来自cmd2000**的评论:

本书内容偏向于软件。目录中的标题虽然说的都是硬件,但是事实上介绍的是寄存器。所以看这本书需要有汇编语言和计算机原理方面的基础。这本书对于使用MIPS处理器进行底层驱动开发的程序人员是适合的。第8章的MIPS指令集完全指南更是本书的精华。当然书中的一些长句,可能不大好理解,还要结合上下文来判断,如“流水线的设计规则没有实现可以操作内存变量的指令”。这句话也许可以这样说:流水线的结构使处理器没能实现间接寻址。如果进一步转换成“流水线的结构使处理器被迫放弃间接寻址”那就更好了。可见英语中的从句,翻译时要谨慎对待,否则一不小心就会翻译成费思量…

2008-12-09 20:56:07
登录后即可发表评论

免责声明

更多相关图书
在线咨询