指令系统

Posted yimumengke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指令系统相关的知识,希望对你有一定的参考价值。

第四章 指令系统

【复习提示】

指令系统是表征一台计算机性能的重要因素。读者应注意扩展操作码技术,各种寻址方式的特点及有效地址的计算,相对寻址有关的计算,CISC与RISC的特点与区别。本章知识点出选择题的概率较大,但也有可能结合其他章节出有关指令的综合题。2014年、2015年已连续两次出现指令系统和指令流水线的大题。指令系统格式和指令寻址方式与CPU指令执行过程部分紧密结合,希望读者引起重视。

在学习本章时,请读者思考以下问题

  • 1)什么是指令?什么是指令系统?为什么要引入指令系统?
  • 2)一般来说,指令分为哪些部分?每部分有什么用处?
  • 3)对于一个指令系统来说,寻址方式多和少有什么影响?

请读者在本章的学习过程中寻找答案,本章末尾会给出参考答案。

4.1 指令格式

4.1.1 指令的基本格式










4.2 指令寻址方式



4.2.1 指令的寻址方式


4.2.2 常见的数据寻址方式




隐含寻址

立即寻址

直接寻址


间接寻址

寄存器寻址

寄存器间接寻址

偏移寻址








堆栈寻址


4.3 CISC和RISC的基本概念




4.4本章开头提出的问题回答

1)什么是指令?什么是指令系统?为什么要引入指令系统?

  • 1)什么是指令?什么是指令系统?为什么要引入指令系统?

    指令就是要计算机执行某种操作的命令,一台计算机中所有机器指令的集合,称为这台计算机的指令系统。引入指令系统后,避免了用户与二进制代码直接接触,使得用户编写程序更为方便。另外,指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。

2)一般来说,指令分为哪些部分?每部分有什么用处?

  • 2)一般来说,指令分为哪些部分?每部分有什么用处?

    一条指令通常包括操作码字段和地址码字段两部分。其中,操作码指出指令中该指令应该执行什么性质的操作和具有何种功能,它是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。地址码用于给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用子程序的入口地址等。

3)对于一个指令系统来说,寻址方式多和少有什么影响?

  • 3)对于一个指令系统来说,寻址方式多和少有什么影响?

    寻址方式的多样化能让用户编程更为方便,但多重寻址方式会造成CPU结构的复杂化(详见下章),也不利于指令流水线的运行。而寻址方式太少虽然能够提高CPU的效率,但对于用户而言,少数几种寻址方式会使编程变得复杂,很难满足用户的需求。

4.5常见问题

1.简述各常见指令寻址方式的特点和适用情况

  • 1.简述各常见指令寻址方式的特点和适用情况

    立即寻址操作数获取便捷,通常用于给寄存器赋初值。
    直接寻址相对于立即寻址,缩短了指令长度
    间接寻址扩大了寻址范围,便于编制程序,易于完成子程序返回。
    寄存器寻址的指令字较短,指令执行速度较快
    寄存器间接寻址扩大了寻址范围。
    基址寻址扩大了操作数寻址范围,适用于多道程序设计,常用于为程序或数据分配存储空间。
    变址寻址主要用于处理数组问题,适合编制循环程序。
    相对寻址用于控制程序的执行顺序、转移等。
    基址寻址和变址寻址的区别:两种方式有效地址的形成都是寄存器内容+偏移地址,但是在基址寻址中,程序员操作的是偏移地址,基址寄存器的内容由操作系统控制,在执行过程中是动态调整的;而在变址寻址中,程序员操作的是变址寄存器,偏移地址是固定不变的。

2.一个操作数在内存可能占多个单元,怎样在指令中给出操作数的地址?

  • 2.一个操作数在内存可能占多个单元,怎样在指令中给出操作数的地址?

    现代计算机都采用字节编址方式,即一个内存单元只能存放一字节的信息。一个操作数(如char、int、foat、 double)可能是8位、16位、32位或64位等,因此可能占用1个、2个、4个或8个内存单元。也就是说,一个操作数可能有多个内存地址对应。
    有两种不同的地址指定方式:大端方式和小端方式。
    大端方式:指令中给出的地址是操作数最高有效字节(MSB)所在的地址
    小端方式:指令中给出的地址是操作数最低有效字节(LSB)所在的地址。

3.装入/存储(Load/ Store)型指令有什么特点?

  • 3.装入/存储(Load/ Store)型指令有什么特点?

    装入/存储型指令是用在规整型指令系统中的一种通用寄存器型指令风格。这种指令风格在RISC指令系统中较为常见。为了规整指令格式,使指令具有相同的长度,规定只有 Load/Store指令才能访问内存。而运算指令不能直接访问内存,只能从寄存器取数进行运算,运算的结果也只能送到寄存器。因为寄存器编号较短,而主存地址位数较长,通过某种方式可使运算指令和访存指令的长度一致。
    这种装入/存储型风格的指令系统的最大特点是,指令格式规整,指令长度一致,一般为32位。由于只有 Load/Store指令オ能访问内存,程序中可能会包含许多装入指令和存储指令,与ー般通用寄存器型指令风格相比,其程序长度会更长。

指令系统——指令格式


首先我们再回忆一下现代计算机的结构
在这里插入图片描述
搞错了,再来!

现代计算机的结构

在这里插入图片描述
这次就开搞控制器!

学会指令系统就可以更精进之前搞的典型过程了:https://yangyongli.blog.csdn.net/article/details/116792581

指令格式

指令的定义

指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。

一台计算机的所有指令的集合构成该机的指令系统,也称为指令集

注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。

例如:x86 架构、ARM架构之间不能互相执行对方架构系统的指令。

指令格式

一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。

一条指令通常要包括操作码字段和地址码字段两部分(如下图所示):
在这里插入图片描述

操作码就是要表达用户要干什么?
比如:停机中断、求反求补、加减乘除……

地址码就是要说明对谁进行操作?
比如:不需要操作对象、需要一个操作对象、需要两个操作对象……


其中 一条指令可能包含 0个、1个、2个、3个、4个 地址码…

根据地址码数目不同,可以将指令分为 零地址指令、一地址指令、二地址指令…

零地址指令

在这里插入图片描述

  1. 不需要操作数,如空操作、停机、关中断等指令
  2. 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶

一地址指令

在这里插入图片描述

  1. 只需要单操作数,如加1、减1、取反、求补等
    指令含义:OP(A1)→A1 ,完成一条指令需要3次访存:取指→ 读A1 →写A1
  2. 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)
    指令含义: (ACC)OP(A1)→ACC,完成一条指令需要2次访存:取指→ 读A1

注:A1 指某个主存地址, (A1)表示 A1 所指向的地址中的内容

二、三地址指令

在这里插入图片描述
常用于需要两个操作数的算术运算、逻辑运算相关指令

指令含义:(A1)OP(A2)→A1
完成一条指令需要访存4次,取指→读A1→读A2→写A1

在这里插入图片描述
常用于需要两个操作数的算术运算、逻辑运算相关指令

指令含义:(A1)OP(A2)→A3
完成一条指令需要访存4次,取指→ 读A1→读A2 →写A3

四地址指令

在这里插入图片描述
指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址

完成一条指令需要访存4次,取指 →读A1 →读A2 →写A3

正常情况下:取指令之后 PC+1,指向下一条指令
四地址指令:执行指令后,将PC的值修改位 A4 所指地址

小杨同学表示:事真多!
在这里插入图片描述

地址码的位数有什么影响?

n位地址码的直接寻址范围=2n若指令总长度固定不变,则地
址码数量越多,寻址能力越差

分类

指令-按地址码数目分类

在这里插入图片描述

指令-按指令长度分类

可以分为:半字长指令、单字长指令、双字长指令 ——指令长度是机器字长的多少倍

指令字长:一条指令的总长度(可能会变)
机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)

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

定长指令字结构:指令系统中所有指令的长度都相等
变长指令字结构:指令系统中各种指令的长度不等

指令-按操作码长度分类

  1. 定长操作码:指令系统中所有指令的操作码长度都相同(n位 → 2n条指令)
    ——控制器的译码电路设计简单,但灵活性较低
  2. 可变长操作码:指令系统中各指令的操作码长度可变
    ——控制器的译码电路设计复杂, 但灵活性较高
  3. 扩展操作码指令格式:定长指令字结构+可变长操作码

指令—按操作类型分类

  1. 数据传送(数据传送类:进行主存与CPU之间的数据传送
    LOAD 作用:把存储器(源)中的数据放到寄存器(目的)中
    STORE 作用:把寄存器(源)中的数据放到存储器(目的)中

  2. 算术逻辑操作
    算术:加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算
    逻辑:与、或、非、异或、位操作、位测试、位清除、位求反

  3. 移位操作
    算术移位、逻辑移位、循环移位(带进位和不带进位)

  4. 转移操作(程序控制类:改变程序执行的顺序
    无条件转移 JMP
    条件转移 JZ:结果为0;JO:结果溢出;JC:结果有进位
    调用和返回 CALL和RETURN
    陷阱(Trap)与陷阱指令

  5. 输入输出操作(输入输出类(I/O):进行CPU和I/O设备之间的数据传送
    CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

小结

在这里插入图片描述

以上是关于指令系统的主要内容,如果未能解决你的问题,请参考以下文章

(指令系统)

计算机系统5-; 计组与体系结构2 | MIPS指令集(上)| 指令系统

(计算机组成原理)第四章指令系统-第一节1:指令指令格式和指令分类

指令系统

指令系统

计算机按指令系统如何分类?都有哪些计算机?