机组 指令系统

机器指令

机器指令:每一条机器语言的语句

指令系统:全部机器指令的集合

指令的一般格式

指令由操作码和地址码两部分组成

操作码

作用:指明该指令要完成的操作

位数:反映机器的操作种类,即机器允许的指令条数

长度:可以是固定的,可以是变化的

  • 固定长度:操作码集中放在指令字的一个字段内,便于硬件设计,指令译码时间短,广泛用于字长较长的、大中型计算机和超级小型计算机以及 RISC
  • 不固定长度:操作码分散在指令字的不同字段,有效地压缩操作码地平均长度,在字长较短地微型计算机中被广泛使用

n 地址指令的操作码的高位不可以复用 n+1 地址指令的操作码

尽量安排指令使用频度高的指令占用短的操作码,对使用频度低的指令可占用较长的操作码,以缩短经常使用的指令的译码时间

地址码

作用:指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一个指令的地址【地址:主存的地址、寄存器的地址、I/O 设备的地址】

四地址指令

(A1)OP(A2)--->(A3)

若地址字段均指示主存的地址,完成一条四地址指令,需访存四次,取指令一次,取操作数两次,存放结果一次

三地址指令

(A1)OP(A2)--->(A3)

后续指令的地址隐含在程序计数器 PC 中

若地址字段均指示主存的地址,完成一条四地址指令 四次访存

二地址指令

(A1)OP(A2)--->(A1) A1 字段既代表源操作数的地址,又代表存放本次运算结果的地址 四次访存

(A1)OP(A2)--->(A2) A2 字段既代表源操作数的地址,又代表中间结果的存放地址 四次访存

(A1)OP(A2)--->ACC 中间结果暂存于累加器 ACC 中 三次访存(取指、取操作数、取操作数 )

一地址指令

(ACC)OP(A1)--->ACC ACC 既存放参与运算的操作数,又存放运算的中间结果 两次访存(取指、取操作数)

零地址指令

零地址指令在指令中无地址码

空操作 NOP、停机 HLT ......这类指令只有操作码

子程序返回 RET、中断返回 IRET ......这类指令没有地址码,其操作数的地址隐含在堆栈指针 SP 中

注意

硬件资源(PC、ACC......)承担指令字中需指明的地址码,在不改变指令字长的前提下,扩大指令操作数的直接寻址范围,缩短指令字长,减少访存次数

地址字段可用来表示寄存器。当 CPU 中含有多个通用寄存器时,对每个寄存器赋予一个编号,便可指明源操作数和结果存放在的寄存器,地址字段表示寄存器也有三地址、二地址、一地址之分,其共同点是,在指令的执行阶段都不必访问存储器,直接访问寄存器,提高机器运行速度 一次访存(取指)

指令字长

决定因素:操作码的长度、操作数地址的长度和操作数地址的个数

不同机器的指令字长不同

操作

操作数类型

操作类型

寻址方式

定义:指确定本条指令的数据地址以及下一条将要执行的指令地址的方法

与硬件结构紧密相关,直接影响指令格式和指令功能

分类:指令寻址、数据寻址

指令寻址

分类:顺序寻址、跳跃寻址

顺序寻址:通过程序计数器 PC +1,自动形成下一条指令的地址

跳跃寻址:通过转移类指令实现

数据寻址

数据寻址方式种类多,在指令字中必须设一字段指明属于哪一种寻址方式

形式地址 A:指令的地址码字段,通常不表示操作数的真实地址

有效地址 EA:操作数的真实地址,由寻址方式和形式地址共同确定

立即寻址

特点:操作数本身设在指令字内,形式地址 A 不是操作数的地址,而是操作数本身,称为立即数,数据采用补码形式存放

"#"表示立即寻址特征标记

优点:只要取出指令,便可立即获得操作数,指令执行阶段不必再访问存储器

缺点:A 的位数限制了这类指令所表述的立即数的范围

访存:一条指令的执行,不考虑存结果,访存一次(取指令)

直接寻址

特点:指令字中的形式地址 A 是操作数的真实地址 EA,即 EA=A

优点:寻找操作数比较简单,不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次

缺点:A 的位数限制了操作数的寻址范围,必须修改 A 的值,才能修改操作数的地址

访存:一条指令的执行,不考虑存结果,访存两次(取指令,取操作数)

隐含地址

特点:指令字中不明显地给出操作数的地址,其操作数的地址隐含再操作码或某个寄存器中

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

间接寻址

特点:有效地址由形式地址间接提供 EA=(A)

多次间接寻址时,可用存储字的首位标志间接寻址是否结束,当存储字首位为"1"时,标明还需继续访存寻址;当存储字首位为"0"时,标明该存储字即为 EA,存储字的首位不能作为 EA 的组成部分

优点:扩大了操作数的寻址范围【因为 A 的位数通常小于指令字长,存储字长可以与指令字长相等】,便于编制程序

缺点:指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),使指令执行时间延长

寄存器寻址

特点:地址码字段直接指出寄存器的编号 EA=Ri ,操作数在由 Ri 所指的寄存器内

优点:因为操作数不在主存中,所以寄存器寻址在指令执行阶段无须访存,减少了执行时间;由于地址字段只需指明寄存器编号,故指令字较短,节省了存储空间

访存:指令执行阶段不需要访存

寄存器间接寻址

特点:Ri 中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址 EA=(Ri)

访存:比间接寻址少访存一次,指令的执行阶段需要访存

基址寻址

特点:设基址寄存器 BR,其操作数的有效地址 EA 等于指令字中的形式地址与基址寄存器中内容相加,即 EA=A+(BR)

分类:隐式、显式

  • 隐式:在计算机内专门设有一个基址寄存器 BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征位反映出基址寻址即可
  • 显式:在一组通用寄存器里,由用户明确指出哪个寄存器作为基址寄存器,存放基地址

优点:扩大操作数的寻址范围(基址寄存器的位数可以大于形式地址 A 的位数)

基址寻址在多道程序中极为有用,操作系统或管理程序根据主存的使用状况,赋予基址寄存器内一个初始值(基地址),便可将用户程序的逻辑地址转换为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域

在程序执行过程中,用户不知道自己的程序在主存的哪个空间,用户不可修改基址寄存器的内容,以确保系统安全可靠地运行

变址寻址

特点:有效地址 EA 等于指令字中的形式地址 A 与变址寄存器 IX 的内容相加之和,即 EA=A+(IX)

变址寻址和基址寻址的区别:

  • 基址寻址:主要用于为程序或数据分配存储空间,基址寄存器中的内容通常由操作系统或管理程序确定,在程序的执行过程中其值不可变,而指令字中的 A 是可变的
  • 变址寻址:变址寄存器的内容由用户设定,在程序执行过程中其值可变,而指令字中的 A 是不可变的。变址寻址主要用于处理数组问题,在数组处理过程中,可设定 A 为数组的首地址,不断改变变址寄存器 IX 的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序

变址寻址与其他寻址方式结合:

  • 变址寻址与基址寻址合用:EA=A+(IX)+(BR)
  • 变址寻址与间接寻址合用:形成变址后间址或先间址再变址

相对寻址

特点:有效地址是将程序计数器 PC 的内容(即当前指令的地址)与指令字中的形式地址 A 相加而成,即

EA=(PC)+A

相对寻址常被用于转移类指令,转移后的目标地址与当前指令有一段距离,称为相对位移量,由指令字的形式地址 A 给出,A 称为位移量【A可正可负,通常用补码表示】

若位移量为 8 位,则指令的寻址范围为 (PC)+127~(PC)-128

最大特点:转移地址不固定,可随 PC 值的变化而变

相对寻址可与间接寻址配合使用

堆栈寻址

堆栈寻址要求计算机中设有堆栈

堆栈既可用寄存器组(硬堆栈)实现,也可利用主存的一部分空间作堆栈(软堆栈)

堆栈的运行方式为先进后出和先进先出两种

RISC 技术

RISC 精简指令系统计算机

CISC 复杂指令系统计算机

RISC 主要特点

  1. 选取使用频度较高的一些简单指令以及一些很有用但不复杂的指令,让辅助指令的功能由频度高的简单指令的组合实现 指令系统复杂庞大,各种指令使用频度相差很大
  2. 指令长度固定,指令格式种类少,寻址方式种类少 指令字长不固定,指令格式多,寻址方式多
  3. 只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器内完成 可以访存的指令不受限制
  4. CPU 中有多个通用寄存器 CPU中设有专用寄存器
  5. 采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期 绝大多数指令需要多个时钟周期方可执行完毕
  6. 控制器采用组合逻辑控制,不用微程序控制 采用微程序控制器
  7. 采用优化的编译程序 难以用优化编译生成高效的目标代码

紫色是 CISC 的特点

相关推荐
YY_D_S_6 天前
【机组】概述精炼考点(冯诺依曼、层次结构、翻译语言、执行程序的过程、基本工作原理、运算器、控制器、存储器)
计算机组成原理·机组
superiony9 天前
【计算机组成原理】实验二:通用寄存器单元实验
计算机组成原理·通用寄存器
青春pig头少年15 天前
《计算机组成原理》(408大题)
学习笔记·408·计算机组成原理
moonless022216 天前
【GISer精英计划_00】从二进制到协议、到计算机通信、到服务器
网络协议·gis·计算机组成原理
运维小文17 天前
linux的磁盘管理
linux·运维·网络·磁盘·计算机组成原理·硬件
shengjk11 个月前
从零开发操作系统-聊一下GDT 和 IDT
人工智能·后端·计算机组成原理
小新_-1 个月前
第五章:指令系统
计算机组成原理
啊呦.超能力3 个月前
计算机硬件的工作原理
计算机组成原理
旅僧3 个月前
多处理器基本概念(SISD、SIMD、MISD、MIMD)--自用
计算机组成原理
dulu~dulu3 个月前
数据冒险与控制冒险
java·开发语言·计算机组成原理