计算机指令集结构
堆栈结构操作数都是隐式的,只能通过push/pop指令访问存储器,堆栈是不需要变址的数据存储空间。
累加器结构中一个操作数是隐式的,即累加器,另一个操作数则是显式给出,这是一个存储器单元,运算结果送回累加器。
使用通用寄存器结构的好处
1.与其他CPU内部存储单元一样,寄存器的访问速度比存储器快。
2.对编译器而言,能更加容易、有效地分配和使用寄存器。
3.寄存器可以用来存放变量。
寻址方式
寻址方式是指一种指令集结构如何确定所要访问的数据的地址。
指令集结构功能设计
在确定那些基本功能用硬件来实现时,主要考虑的因素有三个:速度、成本和灵活性,硬件实现特点,速度快、成本高还有灵活性差,软件来实现速度慢、价格便宜,灵活性好。
对指令集的基本要求是:完整性、规整性、高效率和兼容性
完整性:在有限存储空间,指令集所提供的指令足够使用
规整性:对称性、均匀性
高效率:指令的执行速度快,使用频率高
CISC指令集结构的功能设计
1.面向目标程序增强指令功能。
增强运算型指令、数据传输指令、程序控制指令的功能
2.面向高级语言的优化实现来改进指令集
增强对高级语言和编译器的支持,还有高级语言计算机
高级语言计算机:进一步提高解释比重,直至几乎没有语义差距,即使高级语言成为计算机的汇编语言,这时高级语言和机器语言是一一对应的,这种计算机称为间接执行高级语言计算机。
3.面向操作系统的优化实现改进指令集
CISC存在的问题
1.指令使用频率差距大
2.指令条数太多
3.指令操作繁杂,占用CPI太多
4.功能复杂规整性不好,不利于采用流水技术来提高性能
设计RISC遵循的原则
1.指令条数少而简单
2.采用简单而又统一的指令格式,并减少寻址方式
3.指令的执行在单个机器周期内完成(采用流水线机制之后)
4.只有load和store指令才能访问存储器,其他指令的操作都是在寄存器之间进行,即采用load-store结构
5.大多数指令都采用硬连逻辑来实现
6.强调优化编译器的作用,为高级语言程序生成优化的代码
7.充分使用流水线技术
操作数的类型和大小
数据表示
是指计算机硬件能够直接识别、指令集可以直接调用的数据结构
数据结构
它是由软件进行处理和实现的各种数据类型,数据结构研究的是这些数据类型的逻辑结构与物理结构之间的关系,并给出相应的算法。
识别操作数类型的方法
1.由指令中的操作码指定操作数的类型(常用)
2.给数据加上标识(tag)
指令格式的设计
指令一般由两部分组成:操作码和地址码。指令格式的设计就是确定指令字的编码方式,包括操作码字段和地址码字段的编码和表示方式
寻址方式的表示方法
1.把它和操作码一起掩码
2.设置专门的地址描述符
指令集的编码格式
1.可变长度编码格式
2.固定长度编码格式
3.混合型编码格式
MIPS的数据寻址方式只有立即数寻址和偏移量寻址两种,有I类指令,R类指令和J类指令。
一些符号表示
1. x ← n y x\leftarrow{_n}y x←ny表示从y传送n位到x。
2.用下标表示字段中具体的位,0表示最高位,次高位为1,如 R e g [ R 4 ] 0 Reg[R4]_0 Reg[R4]0表示寄存器R4的符号位, R e g [ R 4 ] 56...63 Reg[R4]_{56...63} Reg[R4]56...63表示R4的最低字节。
3.Mem表示主存,按字节寻址,可以传输任意个字节。
一些习题
1.计算机指令集结构设计所涉及的内容有哪些?
答:(1)指令集功能设计:主要有RISC和CISC两种技术发展方向
(2)寻址方式的设计
(3)操作数表示和操作数类型
(4)寻址方式的表示
(5)指令集格式的设计:变长定长固定
2.操作码优化的主要目的是(D)
A.缩短指令字长
B.增加指令字表示的信息
C.减少程序总位数
D.A,B,C
3.指令系统的改进以不删除原有指令系统为前提,通过增加少量强功能新指令代替常用指令串,保证了软件(向后兼容),提高了编程效率。
4.RISC执行程序比CISC要快的主要原因是(C)
A.RISC指令系统中指令条数少
B.程序在RISC上编译生成的目标程序较短
C.RISC指令平均执行周期少
D.RISC只允许load和store指令访存