计算机组成原理指令系统

指令的定义

又称机器指令
指令是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。

指令格式

一条指令通常要包括操作码(op)字段和地址码(A)字段两部分:
操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
地址码用于给出被操作的信息的地址。
请添加图片描述

四地址指令

op A1 A2 A3 A4
指令含义:(A1)op(A2)——>A3 ,A4=下一条指令的地址
将A1和A2通过op运算结果存入A3,然后执行A4中存的指令

三地址指令

op A1 A2 A3
指令含义:(A1)op(A2)——>A3
将A1和A2通过op运算结果存入A3

二地址指令

op A1 A2
指令含义:(A1)op(A2)——>A1
将A1和A2通过op运算结果存入A1

一地址指令

op A1
指令含义:op(A1)——>A1
将A1通过op运算结果存入A1 只需要一个操作数
(ACC)op(A1)——>ACC 隐含了一个操作数

空地址指令

op
指令含义:(A1)op(A2)——>A1
不需要操作数
堆栈计算机,两个操作数隐含在栈顶或次栈顶

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

定长操作码:指令系统中所有指令的操作码长度都相同n位 ——> 2^n条指令
可变长操作码:指令系统中各指令的操作码长度可变。

操作码分类

定长操作码

在指令字的最高位部分分配固定的若干位(定长)表示操作码。
一般n位操作码字段的指令系统最大能够表示2^n条指令。
优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。

扩展操作码(不定长操作码)

全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。
最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
优:在指令字长有限的前提下仍保持比较丰富的指令种类;
缺:增加了指令译码和分析的难度,使控制器的设计复杂化。

操作类型

  1. 数据传送
    LOAD 作用:把存储器中的数据放到寄存器中
    STORE 作用:把寄存器中的数据放到存储器中
  2. 算术逻辑操作
    算术:加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算
    逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
  3. 移位操作
    算术移位、逻辑移位、循环移位(带进位和不带进位)
  4. 转移操作
    无条件转移 JMP
    条件转移 JZ:结果为0;JO:结果溢出;JC:结果有进位
    调用和返回 CALL和RETURN
    陷阱(Trap)与陷阱指令
  5. 输入输出操作
    CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)
    6.数据传送类
    进行主存与CPU之间的数据传送
    7.程序控制类
    改变程序执行的顺序
    无(有)条件转移,子程序调用,返回指令,循环指令
    8.运算类
    9.程序控制类
    改变程序执行的顺序
    10.输入输出类(I/O)
    进行CPU和I/O设备之间的数据传送

指令寻址

寻址方式多样化的影响

寻址方式的多样化能让用户编程更方便,但多重寻址方式会造成CPU结构的复杂化,不利于指令流水线的运行。

无条件转移指令

指程序转移到新的地址后继续执行,必须给出下一条指令的执行地址,并送入程序计数器(pc)

数据存放

编址方式

按字地址寻址:给出一个字地址,可以取出长度为一个字的数据。
每个字中最小的字节地址作为字地址。

按字节编址:每个字节存储单元都有一个地址编号
按字节地址寻址:给出一个字节地址,可以取出长度为一个字节的数据

存储方式

大端模式:高位的数据存在低位地址中。
小端模式:高位的数据存在高位地址中。

三种字长

机器字长:CPU一次能处理的二进制数据的位数。
指令字长:一个指令字中包含二进制代码的位数。
存储字长:一个存储单元存储二进制代码的长度。

指令寻址

三种指令

单字长指令:指令长度=机器字长
半字长指令:指令长度=机器字长/2
双字长指令:指令长度=机器字长*2

寻址方式

指令寻址:下一条欲执行指令的指令地址,始终由程序计数器pc给出
顺序寻址:(pc)+1——>pc
跳跃寻址:由转移指令指出
数据寻址:确定本条指令的操作数地址

数据寻址

注:本节的EA代表有效地址

指令格式

一地址指令:操作码 寻址特征 形式地址
二地址指令:操作码 寻址特征 形式地址 寻址特征 形式地址

操作数类型

地址:无符号数
数字:定点数,浮点数,十进制数(NCD码)
字符:ASCLL码
逻辑数:逻辑运算

立即寻址

形式地址就是操作数本身,又称为立即数,一般采用补码形式。#表示立即寻址特征。
优点:指令执行阶段不访问主存,指令执行时间最短。
缺点:形式地址的位数限制了立即数的范围。

直接寻址

指令字中的形式地址A就是操作数的真实地址EA,即EA=A。
优点:简单,指令执行阶段仅访问一次主存,
不需专门计算操作数的地址。
缺点:
A的位数决定了该指令操作数的寻址范围。
操作数的地址不易修改。请添加图片描述

间接寻址

指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)。
优点:
可扩大寻址范围(有效地址EA的位数大于形式地址A的位数)。
便于编制程序(用间接寻址可以方便地完成子程序返回)。
缺点:
指令在执行阶段要多次访存(一次间址需两次访存,多次寻址需根据存储字的最高位确定几次访存)。

请添加图片描述

寄存器寻址

在指令字中直接给出操作数所在的寄存器编号,即EA =(R),其操作数在由R所指的寄存器内。
优点:
指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算。
缺点:
寄存器价格昂贵,计算机中寄存器个数有限。
请添加图片描述

寄存器间接寻址

寄存器R,;中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=®。
特点:
与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。
请添加图片描述

隐含寻址

不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。
优点:有利于缩短指令字长。
缺点:需增加存储操作数或隐含地址的硬件。
请添加图片描述

偏移寻址

基址寻址

将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A。
注:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。
优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数)﹔用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序。
请添加图片描述

变址寻址

有效地址EA等于指令字中的形式地址A与变址寄存器Ix的内容相加之和,即EA= (IX)+A,其中x为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
注:变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)。
优点:可扩大寻址范围(变址寄存器的位数大于形式地址A的位数)﹔在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器x的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。
请添加图片描述

相对寻址

把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于当前指令地址的位移量,可正可负,补码表示。
优点:操作数的地址不是固定的,它随着Pc值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动。
请添加图片描述

堆栈寻址

操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。
堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。

CSIS和RISC两种设计方向

ClSC

Complex Instruction Set Computer
用在一些复杂的平台上。
设计思路:一条指令完成一个复杂的基本功能。
代表:x86架构,主要用于笔记本、台式机等
80-20规律:典型程序中80%的语句仅仅使用处理机中20%的指令。

RISC

Reduced lnstruction Set Computer
用于一些简单的平台。
设计思路:一条指令完成一个基本“动作”;
多条指令组合完成一个复杂的基本功能。
RISC机一定使用流水线技术。
RISC速度快,普遍采用硬布线控制器。
RISC机特点:指令条数少,指令长度固定,指令格式和寻址类型少,只有取数/存数指令访问存储器,其余指令的操作均是在寄存器之间进行,CPU中通用寄存器比较多,大部分指令是在一个存储周期内完成的。
代表:ARM架构,主要用于手机、平板等。
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值