计组—指令及寻址

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwx19921215/article/details/84568336

指令

程序是由一系列指令组成的,指令是要计算机执行某种操作的命令。包括:微指令、宏指令、机器指令。

微指令:微程序级指令,属于硬件

宏指令:由若干条机器指令组成的软件指令,属于软件

机器指令:介于微指令和宏指令之间,每条指令可完成一个独立的算术或逻辑运算

 

指令格式:

指令字(简称指令):表示一条指令的机器字。

指令格式:指令字用二进制代码表示的结构形式,由操作码字段地址码字段组成

操作码字段:指令的操作特性与功能

地址码字段:参与操作的操作数的地址码

注:每条指令都有一个操作码,表示指令应该进行什么性质的操作;不同指令操作码字段编码是不一样的。

 

操作码

操作码可以分为固定长度可变长度的代码。

固定长度编码:

即所以指令操作码长度相同。

例:64条指令,采用固定长度操作码,则需要6位编码,2^6=64 (从000000~111111)

优点:编码简单;缺点:不利于增加新的指令

可变长度编码:

即指令操作码长度不同。

优点:扩展方便(便于增加新的指令);能够缩短指令操作码的平均长度,节约空间

缺点:编码复杂

例:对100条指令进行编码设计。

(1)采用固定长度操作码编码则需要7位操作码(2^7=128,可以多于100但是不能少于100),其中前100(0-99)个用作操作码,后28(100-127)个用于扩展;操作码的平均长度=7

(2)采用不固定长度操作码编码,其中10条指令使用概率为90%,剩余90条指令使用概率为10%;

设计方案:可以先用4位代码对10条常用指令进行编码(2^4=16>10,剩余6个代码用作扩展),由于剩余6个4位代码,而我们还需要对其余90个指令进行编码,那么我们可以在这剩余的6个4位代码中进行扩展;90/6=15<2^4=16,即我们需要在剩余的6个位代码中再扩展4位即可组成一个8位操作码即可对余下的90个指令进行编码;又因为2^4*6=96。所以我们还剩下最后6个8位编码可用于扩展

操作码的平均长度为:4*90%+8*10%=4.4

 

地址码

指令中指定操作数存储位置的字段称为地址码

指令中可以有一个、两个或者三个操作数,也可以没有操作数。根据指令有几个操作数地址,可将指令分为零地址指令(指令中没有地址码)、一地址指令、二地址指令、三地址指令。4个地址码的指令很少使用。

 

二地址指令涉及到2个操作数地址,根据2个操作数地址存在的位置分为,寄存器-寄存器类型(RR)(即两个操作数都在寄存器,速度快),寄存器-存储器类型(RS)(一个数在寄存器,另一个数在存储器),存储器-存储器类型(SS)(两个数都在存储器中,速度慢)

 

指令字

指令字长度:一个指令字中包含二进制代码的位数(包含操作码和地址码),其长度应该与计算机的数据字长(机器字长)相匹配,以简化指令访存的操作。一般指令字长为机器字长的整数倍。

机器字长:计算机一次能直接处理的二进制数据的位数,它确定了计算机的运算精度。指令字长等于机器字长指令称为单字长指令。使用多字长指令的缺点:必须多次访问内存以取出一整条指令,降低了cpu的运算速度,又占用了更多的存储空间。

 

操作码的设计原则:

从操作码较短的入手设计,即从短操作码入手

如指令长度固定的情况下,地址码数量较多(即操作码短)的指令中可以安排较短的操作码,地址码数量较少的指令中可以安排较长的操作码。

 

指令和数据的寻址方式

操作数或指令的地址:某个操作数或某条指令存放在某个存储单元时其存储单元的编号

寻址方式分类:指令寻址和数据寻址

指令寻址:确定下一条欲执行指令的指令地址

数据寻址:确定本条指令的操作数地址

 

指令寻址分类:顺序寻址(pc + 1)、跳跃寻址(跳跃指令)

 

数据寻址方式有如下情况:

(1)存储器寻址:操作数在内存中,指令的操作码部分指明了操作数所在内存单元地址

(2)寄存器寻址:指令的地址码部分指明了操作数所在的cpu中的一个寄存器

(3)立即数寻址方式:指令的地址码部分就是操作数本身

 

地址码分析

形式地址(A):指令字中的地址

有效地址(EA):操作数的真实地址

指令中所给出的地址码,并不一定是操作数的有效地址。可能需要经过寻址特征将形式地址转变为有效地址。

寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程。

 

常见的几种寻址方式

(1).隐含寻址:指令中只给出来了一个操作数地址,另一个操作数存在于累加寄存器ACC中

特点:指令中少了一个地址字段,可缩短指令字长。

(2)立即寻址:指令中给出的形式地址不是地址而是操作数本身

特点:1.指令执行阶段不访问内存(速度快);2.指令中形式地址的位数限制了操作数的范围

(3)直接寻址: EA=A

指令中给出的形式地址就是操作数的有效地址,而不需要经过转换再变为有效地址

特点:1.执行阶段访问一次内存(根据地址取出操作数);2.形式地址的位数决定了指令操作数的寻址范围

(4)间接寻址:EA=(A) 

指令中给出的形式地址是操作数地址的地址;即需要根据形式地址找到内存中操作数的地址,然后根据内存中操作数的有效地址获取内存中的操作数

特点:1.执行指令阶段2次访问内存 2.可扩大寻址范围

(5)寄存器寻址:EA=Ri

指令中给出的形式地址就是有效地址寄存器的编号操作数位于寄存器中

特点:执行阶段不访问内存,只访问寄存器,速度快

(6)寄存器间接寻址:EA=(Ri)

指令中给出的形式地址是寄存器中指定编号单元中的地址,即有效地址位于指定寄存器编号中的地址,然后根据地址访存

特点:有效地址在寄存器中,操作数在存储器中,执行阶段访问一次内存

(7)偏移寻址:EA=A+(R)

有效地址是计算出来的,即有效地址(EA)=形式地址(A)+寄存器(R),其中形式地址是显示存在的,另一个地址字段隐含在某个专用寄存器R中。

常用的三种偏移寻址是相对寻址、基址寻址、变址寻址。

相对寻址:EA = A + (PC)   (pc寄存器:当前正在执行的指令地址)

基址寻址:EA = A + (BR)   (BR:基址寄存器)

变址寻址:EA = A + (IX)     (IX: 变址寄存器)

形式地址A也称位移量D(相对于当前指令的位移量)

(8)段寻址方式:操作数在内存中

 

CISC和RISC 

cisc(Complex Instruction Set Computer):复杂指令系统计算机

risc(Reduced Instruction Set Computer):精简指令系统计算机

 

精简指令系统

对于cisc指令系统而言,实际使用中,经常使用的指令占指令系统的20%,其使用频度为80%。80%的指令使用频度为20%。因此产生了RISC指令系统。

RISC指令系统的特点:

(1)选取使用频率高的简单指令

(2)指令长度固定,指令格式种类少

(3)只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间(速度快)

 

例:精简指令系统SPARC中,对于一些没有选入指令系统的指令,可以通过指令集中的另外一条指令来代替实现

 

展开阅读全文

没有更多推荐了,返回首页