第2章 计算机系统结构的基本概念
2.1 指令集结构的分类
-
区别不同指令集结构的主要因素
- CPU中用来存储操作数的存储单元的类型
- 堆栈
- 累加器
- 通用寄存器组
- CPU中用来存储操作数的存储单元的类型
-
将指令集结构分为三种类型
- 堆栈结构
- 累加器结构
- 通用寄存器结构
- 根据操作数的来源不同,又可进一步分为:
- 寄存器-存储器结构(RM结构) (操作数可以来自存储器 )
- 寄存器-寄存器结构(RR结构):所有操作数均来自通用寄存器组
- load-store结构:只有load指令和store指令能够访问存储器
- 根据操作数的来源不同,又可进一步分为:
-
对于不同类型的指令集结构,操作数的位置、个数以及操作数的给出方式(显式或隐式)也会不同
- 显式给出:用指令字中的操作数字段给出
- 操作数字段个数
- 寻址方式
- 隐式给出:使用事先约定好的存储单元
- 堆栈栈顶
- 累加器
- 特定寄存器
- 特定存储单元
- 显式给出:用指令字中的操作数字段给出
-
通用寄存器结构
- 现代指令集结构的主流
- 在灵活性和提高性能方面有明显的优势
- 寄存器的访问速度比存储器快。
- 对编译器而言,能更容易、有效地分配和使用寄存器。
- 寄存器可以用来存放变量。
- 减少对存储器的访问,加快程序的执行速度;(因为寄存器比存储器快)
- 用更少的地址位(相对于存储器地址)来对寄存器进行寻址,从而有效地减少程序的目标代码的大小。
-
根据ALU指令的操作数的两个特征对通用寄存器型指令集结构进一步细分
-
ALU指令的操作数个数
- 3个操作数的指令
- 两个源操作数、一个目的操作数
- 2个操作数的指令
- 其中一个操作数既作为源操作数,又作为目的操作数
- 3个操作数的指令
-
ALU指令中存储器操作数的个数
- 可以是0~3中的某一个,为0表示没有存储器操作数
-
-
ALU指令中操作数个数和存储器操作数个数的典型组合
ALU指令中存储器操作数的个数 ALU指令中操作数的最多个数 结构类型 机器实例 0 3 RR MIPS,SPARC,Alpha,PowerPC,ARM 1 2 RM IBM 360/370,Intel 80x86,Motorola 68000 1 3 RM IBM 360/370 2 2 MM VAX 3 3 MM VAX -
通用寄存器型指令集结构进一步细分为3种类型:
- 寄存器-寄存器型(RR型)
- 寄存器-存储器型(RM型)
- 存储器-存储器型(MM型)
-
3种通用寄存器型指令集结构的优缺点[表中(m,n)表示指令的n个操作数中有m个存
储器操作数]
指令集结构类型 优 点 缺 点 寄存器-寄存器型 (0,3) 指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近 与指令中含存储器操作数的指令集结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大 寄存器-存储器型 (1,2) 可以在ALU指令中直接对存储器操作数进行引用,而不必先用load指令进行加载。容易对指令进行编码,目标代码比较紧凑 指令中的两个操作数不对称。在一条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。指令的执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较大 存储器-存储器型 (2,2&#