计算机组成原理——指令系统

定义

是指计算机执行某种操作的命令,是计算机运行的最小功能单位。

一台计算机的所有指令的集合构成了该机的指令系统,也称指令集。一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。例如:x86架构,ARM架构。

指令格式

一条指令就是机器语言的一个语句,通常包含操作码和地址码。

由操作码和若干个地址吗组成

一条指令可能包含0个,1个,2个,3个,4个地址码,根据地址码的数量也分为不同的指令。

按地址数分

零地址指令:

1.不需要操作数,如空指令,停机,关中断等指令。

2.堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶。

一地址指令:

1.只需要单操作数,如加一,减一,取反,求补。

2.需要两个操作数,但其中一个操作数隐含在某个寄存器中。

二地址指令:

常用于两个操作数的算术运算,逻辑运算。

完成这样一条指令需要访存四次:取指,读1,读2,写1。

三地址指令:

常用于两个操作数的算术运算,逻辑运算。

完成这样一条指令需要访存四次:取指,读1,读2,写3。

和二地址指令的区别就是存放运算结果的地址不同。

四地址指令:

和三地址指令前面一样,只是多了一个地址用来指向下一条指令的地址。

正常情况是取指令之后pc+1,指向下一条指令。

四指令是执行指令后,将pc的值修改为4所指地址。

按指令字长分

指令字长:一条指令的总长度。

机器字长:cpu进行一次整数运算所能处理的二进制数据的位数。(和ALU直接相关)

存储字长:一个存储单元中的二进制位数。

半字长指令,单字长指令,双字长指令。这里指的是指令长度是机器字长的多少倍

指令字长会影响取指令所需的时间。例如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访问。

按操作码长度分

定长操作码:指令系统中所有指令的操作码长度都相同。控制器的译码电路设计简单,但灵活性较低。

可变长操作

码:指令系统中个指令操作码长度可变。控制器的译码电路设计复杂,但是灵活度较高。

按操作类型分

1.数据传送

LOAD:  把存储器中的数据放到寄存器中

STORE:把寄存器中的数据存到存储器中。

2.算数逻辑操作

算数:加减乘除,加一减一,求补,浮点,十进制运算。

逻辑:与或非,异或同或,位操作,位清除,位求反。

3.移位操作

算数移位,逻辑移位,循环移位

4.转移指令

无条件转移,条件转移,调用返回,陷阱。

转移操作就会改变pc的值,改变程序的执行顺序。

5.输入输出操作

cpu寄存器和IO端口之间的数据传输。

指令寻址

顺序寻址

说到寻址,首相想到的就是pc+1,但是你真的理解这个”1“的含义么?

1. 如果系统采用定长指令字结构,主存也按字编址,则指令寻址就是简单的程序计数器pc+1,指向下一条指令的存放地址。

2. 若系统采用定长指令字结构,主存采用按字节编址,指令字长=存储字长=16bit。

则指令寻址就需要每次pc+2

3. 若系统采用变长指令字结构,主存采用字节编址

则每条指令的长度并不固定,图中相同颜色为一条指令。所以每次寻址就需要pc+n来读取到一条完整的指令。

所以综上:pc+1,这个1是意义上的下一条完整指令,但实际中并不是单纯的+1。

跳跃寻址

由转移指令指出。jmp,跳跃指令会直接修改pc中的值。直接跳跃到想要执行的指令地址。

数据寻址

确定本条指令的地址码的真实地址。

所以在原有的形式地址码前加上寻址特征。来辨别此地址是采用那种方式来寻址的。

直接寻址

形式地址就是真实地址。简单,指令执行阶段只用访问一次主存。但是寻址范围有限,受到有效地址的位数限制。

间接寻址

可扩大寻址范围,便于编制程序。但是指令在执行阶段需要多次访存。

寄存器寻址

在指令字中直接给出操作数所在的寄存器编号,其操作数就在所致的寄存器内。

指令在执行阶段不需要访问主存,之访问寄存器。指令字短且访问速度快。

隐含寻址

不是明显的给出操作数的地址,而是在指令中隐含着操作数的地址。

优点:有利于缩短指令字长。

缺点:需要增加存储操作数或隐含地址的硬件。

立即寻址

形式地址就是操作数的值本身,又称为立即数,一般采用补码形式。

#表示立即数寻址。

只需用取指令时访存一次。指令执行时间最短。但是长度受限。

偏移寻址

1.基址寻址

以程序的起始存放地址作为起点

将cpu中基质寄存器BR的内容加上指令格式中的形式地址A,形成操作数的有效地址。

或者使用cpu中的通用寄存器来作为BR使用。

便于程序浮动,解决了程序存储时并非从零号地址开始存的问题。

程序运行前,cpu会将BR中的值修改为程序的起始地址,存在于进程PCB中。

注:基址寄存器是面向操作系统的,其内容由操作系统修改,在程序执行过程中,基址不变。

2.变址寻址

程序员自己决定从哪里作为起点。

和基址寻址几乎一样,就是存放起始地址的寄存器不同。这里使用IX寄存器。

有效地址=IX中内容+A形式地址。

IX寄存器程序员可以进行操作。

3.相对寻址

以程序计数器pc所指的地址为起点

把pc内容加上指令格式中的形式地址A而形成有效地址。其中A是相对于PC所指的位移量,可正可负,补码表示。

堆栈寻址

操作数存放在堆栈中,隐含使用堆栈指针SP作为操作数地址。

总结:

CISC和RISC设计思想

CISC:一条指令完成一个复杂的基本功能

代表:x86架构,主要用于笔记本,台式机。

RISC:一条指令完成一个基本功能,多条指令组合完成一个复杂的基本功能。

代表:ARM架构,主要用于手机,平板。

  • 44
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值