Bootstrap

【计算机组成原理-指令系统知识点及习题练习】

指令系统

定义:

  指令就是计算机执行某种操作的命令。计算机的指令包括微指令,机器指令,宏指令

  指令系统是指计算机所能识别并执行的所有指令的集合,是计算机硬件与软件之间的接口,用于规定计算机能够执行的基本操作。

指令类型定义属性作用关系实现方式
微指令微程序级的命令,属于硬件由若干条微指令组成,用于解释和执行一条机器指令的功能控制计算机的基本操作,完成独立的算术或逻辑运算介于机器指令与硬件之间,每条机器指令由若干条微指令组成通过微程序控制单元实现,由微指令存储器和序控制器组成
机器指令介于微指令和宏指令之间,通常简称为指令,可完成一个独立的算术运算或逻辑运算操作由操作码和地址码组成,每条指令可完成一个独立的算术或逻辑运算直接由计算机的中央处理器(CPU)执行,控制计算机的基本操作介于微指令与宏指令之间,每条机器指令由若干条微指令组成通过CPU直接执行,由操作码和地址码组成
宏指令由若干条机器指令组成的软件指令,属于软件可以简化重复操作,自动化常见的任务或简化复杂的编程步骤主要用于简化程序编写,提高代码的可维护性和可复用性由多条机器指令组成,是机器指令的高级抽象在编译时被处理,通过简单的替换机制,将宏指令展开为实际的代码

CISC与RISC

  CISC架构最初出现于20世纪50年代末和60年代初,其特点是复杂的指令集和灵活性,通过增加复杂指令来提高性能。然而,随着技术的发展,CISC架构的硬件复杂性和高功耗问题逐渐显现,导致“指令浪费现象”,即大量不常用指令的存在。
  为解决这些问题,RISC架构于20世纪70年代末至80年代初被提出,并由加州大学伯克利分校的Berkeley RISC项目等推动发展。RISC架构通过简化指令集、减少指令数量、优化流水线执行等方式,提高了处理器的执行效率和性能。

CISC(complex)RISC(reduce)
指令系统复杂,庞大简单,精简
指令数目一般大于200条一般小于200条
指令字长不固定固定
可访存指令不加限制只有Load/Store指令
各种指令执行时间相差较大绝大多数一个周期内完成
各种指令使用频率相差较大都比较常用
通用寄存器数量
控制方式绝大多数为微程序控制绝大多数为组合逻辑控制(硬布线逻辑)
指令流水线可通过一定方式实现必须实现

格式指令

定义

  指令格式,是指令以二进制代码表示的结构形式,通常由操作码字段(OP)地址码字段(A)组成。

操作码字段:指令的操作特性与功能。
地址码字段:参与操作的操作数地址。

在这里插入图片描述

操作码

  操作码(Opcode)是计算机指令系统中用于指示CPU执行特定操作的部分,通常由0和1的编码组成,代表不同的指令。操作码的长度和结构因计算机架构的不同而有所差异,例如x86架构的操作码长度可变,而MIPS架构的操作码固定为6位。操作码可以分为定长和变长两种形式,定长操作码的优点是译码简单快速,而变长操作码则能更高效地利用指令空间。操作码与操作数一起构成指令,其中操作码描述指令的功能,操作数描述操作的对象和范围。

地址码

  根据有几个操作数地址,可以将该指令称为几操作数指令或几指令地址。

在这里插入图片描述

  零指令地址是指在计算机指令中不含操作数地址的指令。这些指令通常是一些简单的控制指令,例如跳转、清零等。在执行这些指令时,CPU不需要访问内存来获取操作数,因此不需要操作数地址。

  一指令地址是指在计算机指令中只含有一个操作数地址的指令。这些指令通常是一些简单的算术或逻辑运算指令,例如加法、减法、与运算等。在执行这些指令时,CPU需要访问内存来获取操作数的地址。

注意:地址码中的A表示不是操作数本身,而是操作数的地址。

  二指令地址是指在计算机指令中含有两个操作数地址的指令。这些指令通常是一些复杂的算术或逻辑运算指令,例如乘法、除法、比较等。在执行这些指令时,CPU需要访问内存来获取两个操作数的地址,两个地址码字段A1,和A2,分别指明参与操作的两个数在内存中或运算器中通用寄存器的地址,其中地址A1兼作存放操作结果的地址
  在二指令格式中,从操作数的物理位置来说,分为三种类型:
  第一种是访问内存的指令格式,我们称这类指令为存储器-存储器(SS)型指令。这种指令操作时都是涉及内存单元,即参与操作的数都放在内存里。从内存某单元中取操作数,操作结果存放至内存另一单元中,因此机器执行这种指令需要多次访问内存。
  第二种是访问寄存器的指令格式,我们称这类指令为寄存器-寄存器(RR)型指令。机器执行这类指令过程中,需要多个通用寄存器或个别专用寄存器,从寄存器中取操作数,把操作结果放到另一寄存器。机器执行寄存器-寄存器型指令的速度很快,因为执行这类指令,不需要访问内存。
  第三种类型为寄存器-存储器(RS)型指令,执行此类指令时,既要访问内存单元,又要访问寄存器。
  三指令地址是指在计算机指令中含有三个操作数地址的指令。这些指令通常是一些更加复杂的运算指令,例如数组操作、矩阵运算等。在执行这些指令时,CPU需要访问内存来获取三个操作数的地址。A1为被操作数地址,称为源操作地址,A2为操作数地址,称为终点操作数地址,A3为存放操作数结果的地址

指令字长度

  一个指令字中包含二进制代码的位数,称为指令字长度。而机器字长是指计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。机器字长通常与主存单元的位数一致指令字长度等于机器字长度的指令,称为单字长指令;指令字长度等于半个机器字长度的指令,称为半字长指令;指令字长度等于两个机器字长度的指令,称为双字长指令

习题

1,指令格式结构如下所示,试分析指令格式及寻址方式特点。
在这里插入图片描述
参考答案:指令格式及寻址方式特点如下:
  ①双字长二地址指令;
  ②操作码OP可指定 26=64条指令;
  ③ RS型指令,两个操作数一个在寄存器中(16个寄存器之一),另一个在存储器中;
  ④有效地址通过变址求得:E=(变址寄存器) ± ± ±D,变址寄存器可有16个。

1,指令格式结构如下所示,试分析指令格式及寻址方式特点。
在这里插入图片描述
参考答案:该指令格式及寻址方式特点如下:
  (1)该指令为单字长双操作数指令;
  (2)源操作数和目的操作数均由寻址方式和寄存器4构成,寄存器均有8个,寻址方式均有8种。根据寻址方式的不同,指令可以是RR型、RS型、也可以是SS型;
  (3)因为OP为4位,所以最多可以有16种操作。

接下来重点来了!!!

请添加图片描述

指令和数据的寻址方式

  在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。几乎所有的计算机,在内存中都采用地址指定方式。当采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式。寻址方式分为两类,指令寻址方式数据寻址方式,前者比较简单,后者比较复杂。简记:寻找操作数有效地址的方式称为寻址方式

指令的寻址方式

  指令的寻址方式有两种,一种是顺序寻址方式,另一种是跳跃寻址方式

顺序寻址方式

  由于指令地址在内存中按顺序安排,)当执行一段程序时,通常是按一条指令接一条指令的顺序进行。就是说,从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,再执行第二条指令;接着再取出第三条指令……这种程序顺序执行的过程我们称为指令的顺序寻址方式
在这里插入图片描述

跳跃寻址方式

  当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的也址码不是由程序计数器给出的,而是由本条指令给出。下图画出了指令跳跃寻址方式的示意图。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
在这里插入图片描述

操作数基本寻址方式

  在指令执行过程中,操作数的采源一般有三个:
  ①由指令中的地址码部分直接给出操作数,虽然简便快捷,但是操作数是固定不变的;
  ②将操作数存放在CPU内的通用数据寄存器中,这样可以很快获取操作数,但是可以存储的操作数的数量有限;
  ③更一般化的方式是将缲作数存放在内存的数据区中。而对于内存寻址,既可以在指令中直接给出操作数的实际访存地址(称为有效地址),也可以在指令的地址字段给出所谓的形式地址,在指令执行时,将形式地址依据某种方式变换为有效地址再取操作数。形操作数的有效地址的方法,称为操作数的寻址方式
  由于指令中操作数字段的地址码由形式地址和寻址方式特征位等组合形成,因此,一般来说,指令中所给出的地址码,并不是操作数的有效地址。
在这里插入图片描述

  形式地址 A,也称偏移量,它是指令字结构中给定的地址量。寻址方式特征位,此处由间址位和变址位组成。如果这条指令无间址和变址的要求,那么形式地址就是操作数的有效地址。如果指令中指明要变址或间址变换,那么形式地址就不是操作数的有效地址,而要经过指定方式的变换,才能形成有效地址。因此,寻址过程就是把操作数的形式地址变换为操作数的有效地址的过程

1)隐含寻址

不明显给出操作数的地址,而是在指令中隐含着操作数地址
在这里插入图片描述

2)立即寻址

指令的地址字段指出的不是操作数的地址,而是操作数本身。(即操作数作为指令的一部分直接写在指令中)
在这里插入图片描述

3)直接寻址

指令的地址字段中直接指出操作数存在内存的地址
在这里插入图片描述

4)间接寻址

指令地址字段中的形式地址A不是操作数D的真正地址,而是操作数地址的指示器(地址字段中放的是寻找操作数地址的地址)。
在这里插入图片描述

5)寄存器寻址

操作数不放在内存中,而是放在CPU的通用寄存器中。
在这里插入图片描述

6)寄存器间接寻址

指令中的寄存器内容不是操作数,而是操作数的地址,该地址指明操作数在内存中。
在这里插入图片描述

7)偏移寻址

由直接寻址和寄存器寻址相结合,有效地址计算公式为:EA=A+(R)
有效地址EA=寄存器地址(R)+形式地址A
在这里插入图片描述

常用的三种偏移寻址

  1. 相对寻址:EA=A+(PC)隐含引用的寄存器时程序计数器(PC)

  2. 基址寻址:被引用的专用寄存器含有一个存储器地址,地址字段中含有一个相对该地的偏移量。

  3. 变址寻址:地址域引用了一个主存地址,被引用的专用寄存器含有对那个地址的正偏移量。EA=A+(R),R<--R+1

8)段寻址

  段寻址是一种通过将内存划分为多个段来扩展地址空间的技术,常用于16位处理器如8086/8088。其基本原理是将逻辑地址分为段地址和偏移量两部分,段地址由段寄存器提供,偏移量由寄存器或立即数给出。段基址左移4位(相当于乘以16),然后与偏移量相加,形成20位的物理地址。这种机制允许访问最大1MB的内存空间,同时支持内存的模块化管理和权限控制。
在这里插入图片描述

9)堆栈寻址

  堆栈寻址是一种基于堆栈数据结构的内存管理方式,遵循后进先出(LIFO)原则。堆栈分为硬堆栈和软堆栈两种形式:硬堆栈使用寄存器实现,速度快但成本高;软堆栈在主存中划分区域,成本低但速度较慢。堆栈操作包括压栈(PUSH)和弹栈(POP),通过堆栈指针(SP)指示栈顶位置,实现数据的存取和管理。

练习

  一种单地址指令格式如下所示,其中I为间接特征,X为寻址模式,D为形式地址。I,X,D组成该指令的操作数有效地址E。设R为变址寄存器,R,为基址寄存器,PC为程序计数器,请在下表中第一列位置填入适当的寻址方式名称。
在这里插入图片描述
参考答案

① 直接寻址
② 相对寻址
③ 变址寻址
④ 基址寻址
⑤ 间接寻址
⑥ 基址间址寻址
🆗,到这里就学习结束啦!!!

请添加图片描述

;