指令格式
指令是指计算机执行某种操作的命令,是计算机运行的最小功能单位。
1.指令的基本格式
指令包括操作码字段和地址码字段
操作码是识别指令,了解指令功能与区分操作数地址内容的组成和使用等关键信息。
指令长度指所包含的二进制代码的位数,取决于操作码的长度,操作数地址码的长度和操作数地址的个数。
单字长指令:指令长度等于机器字长
- 零地址指令:只给出操作码OP,没有显地址;如空操作指令,停机指令,关中断指令;用在堆栈计算机中
- 一地址指令:只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果返回源地址;
- 二地址指令:(A1)OP(A2)——》A1
- 三地址指令:(A1)OP(A2)——》A3
- 四地址指令:(A1)OP(A2)——》A3,A4=下一条将要执行指令的地址
指令寻址方式
寻址方式是指寻找指令或操作有效地址的方式,也就是指确定本条指令的数据地址,以及下一条将要执行的指令的方法。
1.指令寻址
- 顺序寻址可通过程序计数器PC加1(指令字长),自动形成下一条指令的地址
- 跳跃寻址通过转移类指令实现,跳跃是指下条指令的地址码不是有程序计数器给出,而是由本条指令给出下条指令地址的计算方式。
2.数据寻址
操作码 寻址特征 形式地址A
1)隐含寻址
不明显的给出操作数的地址,在指令中隐含着操作数的地址。如单地址的指令格式,在累加器ACC作为第二操作数地址。优点是有利于缩短指令字长,缺点是需增加存储操作数或隐含地址的硬件。
2)立即(数)寻址
指令的地址字段指出的不是操作数的地址,而是操作数本身,又称为立即数。优点是指令在执行阶段不访问主存,指令执行时间短,缺点:A的位数限制了立即数的范围
3)直接寻址
指令中的形式地址A就是操作数的真实地址EA;优点:简单,缺点:A的位数决定了该指令操作数的寻址范围。
4)间接寻址
指令中的形式地址A不是操作数的真实地址,而是操作数有效地址所在的存储单元的地址。地址的地址。
优点:可扩大寻址范围,缺点:指令在执行阶段要多次访问
5)寄存器寻址
在指令字中直接给出操作数所在的寄存器编号
优点:在指令执行期间不访问主存,只访问寄存器;缺点:价格贵
6)寄存器间接寻址
间接寻址是在寄存器R中给出的不是一个操作数,而是操作数所在主存单元的地址,特点是比间接寻址速度快,但是需要访问主存。
7)相对寻址
相对地址是把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址;优点是操作数的地址不是固定的,随PC的变化而变化。
8)基址寻址
指CPU中基址寄存器(BR) 的内容加上指令格式中的形式地址A,形成操作数的有效地址,基址寄存器的内容不变,形式地址可变,面向系统。优点:扩大寻址范围,有利于多道程序设计;偏移量(形式地址A)的位数较短。
9)变址寻址
有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,(ix)+A,面向用户,变址寄存器的内容可由用户改变,形式地址A不变;优点是可扩大寻址范围(变址寄存器的位数大于A)
10)堆栈寻址
堆栈是存储器中一块特定的按后进先出(LIFO)原则管理的存储区,该存储区中被读写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)
CISC和RISC的基本概念
指令系统的发展朝两种不同方向:一种增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC),典型的有采用X86架构的计算机;另一种是减少指令种类和简化指令功能,提高指令的执行速度这类机器称为简略指令系统计算机(RISC)典型的是ARM,MIPS架构的计算机。
1.复杂指令系统计算机CISC
特点:
- 指令系统复杂庞大,指令数目一般为200条以上
- 指令的长度不固定,指令格式多,寻址方式多
- 可以访存的指令不受限制
- 各种指令使用频度相差很大
- 各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成。
- 控制器大多数采用微程序控制
- 难以用优化编译生成高效的目标代码程序
2.精简指令系统计算机RISC
- 选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行
- CPU中通用寄存器数量多
- RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成
- 以硬布线控制为主,不用或少用微程序控制
- 特别重视编译优化工作,以减少程序执行时间
3.比较
- RISC更能充分的利用VLSI芯片的面积,CISC的控制器大多采用微程序控制,其控制存储器在CPU芯片内所占的面积为50%以上而RISC控制器采用组合逻辑控制,其硬布线逻辑只占CPU芯片面积的10%左右。
- RISC更能提高运算速度,RISC的指令数,寻址方式和指令格式种类少,又设有多个通用寄存器,采用流水线技术,所以运算速度更快,大多数指令在一个时钟周期内完成
- RISC便于设计,可降低成本,提高可靠性。RISC指令系统简单,机器周期短,逻辑简单,可靠性高
- RISC有利于编译程序代码优化。RISC指令类型少,寻址方式多,使编译程序容易选择更有效地指令和寻址方式,并适当的调整指令顺序,使得代码执行更高效化。