RISC体系结构
本章将RISC分为两类讨论,第一类是桌面和服务器上的RISC:
- Digital Alpha
- MIPS, Inc.
- Hewlett-Packard PA-RISC
- IBM and Motorola PowerPC
- Sun Microsystems SPARC
第二类是嵌入式的RISC:
- Advanced RISC Machines ARM
- Advanced RISC Machines Thumb
- Hitachi SuperH
- Mitsubishi M32R
- MIPS, Inc. MIPS16
这其中的Alpha,PA-RISC和M32R已经被淘汰。
对这10种RISC体系结构的相似之处将会讨论50页左右,表1罗列了桌面和服务器RISC的主要特点,表2则罗列了嵌入式RISC的。
嵌入式RISC倾向于提供8到16个通用寄存器,桌面/服务器提供32个,嵌入式的寄存器可能是16位或者32位,服务器的都是32位的。现在的情况则是,嵌入式的一般会是32位或者64位,而桌面/服务器的都是64位了。
Thumb和MIPS16虽然是独立的体系结构,但是更多的是作为ARM和MIPS的可选模式。这两种模式都使用16位长的指令,提供体系结构的子集,一般情况下的程序,这种指令集已经足够了。所有的机器都会希望16位和32位的模式没有本质的差别。当它们需要代码密度的时候就用16位的模式,当需要性能的时候可以选择32位的模式。
老一些的RISC这么多年来会有新的扩展,所以,我们只比较最新的版本: 桌面/服务器的RISC是:Alpha第三版,MIPS64,PA-RISC 2.0和SPARC第九版,嵌入式的是:ARMv4,Thumb,SH-3,M32R和MIPS16.
Alpha | MIPS I | PA-RISC 1.1 | PowerPC | SPARC v.8 | |
---|---|---|---|---|---|
发布时间 | 1992 | 1986 | 1986 | 1993 | 1987 |
指令位数 | 32 | 32 | 32 | 32 | 32 |
地址空间(大小,模式) | 64位,扁平 | 32位,扁平 | 48位,分段 | 32位,扁平 | 32位,扁平 |
数据对齐 | 对齐 | 对齐 | 对齐 | 不对齐 | 对齐 |
寻址模式 | 1 | 1 | 5 | 4 | 2 |
保护模式 | 页 | 页 | 页 | 页 | 页 |
最小页大小 | 8KB | 4KB | 4KB | 4KB | 8KB |
I/O | 内存映射 | 内存映射 | 内存映射 | 内存映射 | 内存映射 |
内部寄存器(数量,模式,大小) | 31 个通用寄存器,64位 | 31 个通用寄存器,32位 | 31 个通用寄存器,32位 | 31 个通用寄存器,32位 | 31 个通用寄存器,32位 |
浮点寄存器 | 31x32或者31x64位 | 16x32或者16x64位 | 56x32或者28x64位 | 32x32或者32x64位 | 32x32或者32x64位 |
浮点格式 | IEEE 754 单精度,双精度 | IEEE 754 单精度,双精度 | IEEE 754 单精度,双精度 | IEEE 754 单精度,双精度 | IEEE 754 单精度,双精度 |
表1:五种桌面和服务器的指令集第一版汇总。除了数据寻址方式和指令集的细节,整形指令集很相似。跟表34比较,新版本的指令集都支持64位的地址空间。
ARM | Thumb | SuperH | M32R | MIPS16 | |
---|---|---|---|---|---|
发布时间 | 1985 | 1995 | 1992 | 1997 | 1996 |
指令位数 | 32 | 16 | 16 | 16/32 | 16/32 |
地址空间(大小,模式) | 64位,扁平 | 32位,扁平 | 32位,扁平 | 32位,扁平 | 32/64位,扁平 |
数据对齐 | 对齐 | 对齐 | 对齐 | 对齐 | 对齐 |
寻址模式数量 | 6 | 6 | 4 | 3 | 2 |
I/O | 内存映射 | 内存映射 | 内存映射 | 内存映射 | 内存映射 |
内部寄存器(数量,模式,大小) | 15个通用寄存器,32位 | 8个通用寄存器,SP,LR,32位 | 16个通用寄存器,32位 | 16个通用寄存器,32位 | 8个通用寄存器,SP,RA,32/64位 |
表2:五种嵌入式指令集。对比表34,除了数据寻址方式和指令集的细节,整形指令集很相似。
接下来的章节会按下面的顺序来讨论:
- 以MIPS核的指令为基础,说明最基础的指令集,定义放在附录A
- 桌面/服务器RISC的多媒体扩展
- 嵌入式RISCs指令的DSP扩展
- MIPS不包含,但是有两个以上的指令集包含了的指令
- 10种指令集各自独有的指令和特点
我们在最后一节叙述指令集的进化和未来的发展方向。