首页 > 其他分享 >计算机组成原理·指令系统

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

时间:2024-06-04 16:25:10浏览次数:27  
标签:寻址 指令系统 计算机 EA 操作数 地址 指令 寄存器 原理

指令系统

指令系统

是指令集体系结构ISA的核心
ISA主要包括:

  • 指令格式
  • 数据类型及格式
  • 操作数的存放方式
  • 程序可访问的寄存器个数、位数和编号
  • 存储空间大小和编址方式
  • 寻址方式
  • 指令执行过程的控制方式等

指令的基本格式

一条指令包括操作码和地址码字段

操作码 地址码

操作码:

  • 指出指令应执行的操作
  • 识别指令
  • 了解指令功能
  • 区分操作数地址内容的组成和使用方法

地址码:

  • 给出被操作的信息的地址
  • 参加运算的一个或多个操作数所在的地址
  • 运算结果的保存地址
  • 程序的转移地址
  • 被调用的子程序的入口地址等

指令长度是指一条指令中包含的二进制代码的位数
指令字长取决于

  • 操作码的长度
  • 操作数地址码的长度
  • 操作数地址个数

单字长指令:等于机器字长
半字长指令:一半机器字长
双字长指令:二倍机器字长
定长指令字结构:一个指令系统所有指令的长度都是相等的

零地址指令:无显示地址

OP
  • 不需要操作数的指令
  • 零地址运算指令仅用于堆栈计算机,通常参与运算的两个操作数隐含的从栈顶和次栈顶弹出,送至运算器,运算结果再隐含的压入堆栈

一地址指令:

OP $A_1$

OP($A_1$) $\to$ $A_1$

  • 只有目的操作数,按$A_1$地址读取操作数,进行OP操作后,结果存回原地址

(ACC)OP($A_1$) $\to$ ACC

  • 隐含约定目的地址的双操作数指令,按指令地址$A_1$地址读取操作数,指令可隐含约定另一个操作数由ACC提供,运算结果也将存放在ACC中
  • 若指令长度为32位,操作码占8位,1个地址码字段占24位,指令操作数直接寻址范围$2^{24}=16M$

二地址指令

OP $A_1$ $A_2$

($A_1$)OP($A_2$) $\to$ $A_1$

  • 常用的算术和逻辑运算指令,需要两个操作数,需要分别给出目的操作数和源操作数,其中目的操作数地址还用于存放本次运算结果
  • 指令字长位32位,操作码占8位,两个地址码各占12位,则指令操作数的直接寻址范围$2^{12}=4K$

三地址指令

OP $A_1$ $A_2$ $A_3$(结果)

($A_1$)OP($A_2$) $\to$ $A_3$

  • 指令字长位32位,操作码占8位,3个地址码各占8位,直接寻址范围$2^8=256$,地址字段为主存地址,则完成一条三地址需要4次访存,取指令1次,取两个操作数2次,存放结果1次

四地址指令

OP $A_1$ $A_2$ $A_3$ $A_4$

($A_1$)OP($A_2$) $\to$ $A_3$ ,$A_4$ = 下一条执行指令的地址

  • 地址字长为32位,操作码占8位,4个地址码各占6位,直接寻址范围$2^6=64$

定长操作码指令格式

在指令字的最高位部分分配固定的若干位(定长)表示操作码。
n位操作码字段的指令系统最大能表示$2^{n}$条指令

扩展操作码指令格式

  • 不允许短码是长码的前缀
  • 各指令的操作码一定不能重复
0000 0001 0010 0011
0100 0101 0110 0111
1000 1001 1010 1011
1100 1101 1110 1111
操作码情况 OP $A_1$ $A_2$ $A_3$ 说明
15条三地址 0000-1110 余出16-15=1,1*2^4=16种
12条二地址 1111 0000-1011 余出16-12=4,4*2^4=64种
62条一地址 1111 (1100-1110)/1111 (0000-1111)/(0000-1101) 余出64-62=2,2*2^4=32种
32条零地址 1111 1111 1110-1111 0000-1111

指令的操作类型

  • 数据传送
  • 算术和逻辑运算
  • 移位
  • 转移
  • 输入输出

指令寻址方式

确定本条指令的数据地址以及下一条待执行指令的地址,分为:

  • 指令寻址:寻找下条要执行的指令
    (1)顺序寻址
    通过PC+(1),自动形成下一条指令
    (2)跳跃寻址
    通过转移指令实现,下条指令的地址不由PC自动给出,而由本条指令给出下条指令地址的计算方式。是否可跳跃受到状态寄存器和操作数的控制,跳跃的结果是当前指令修改PC值,下一条指令仍通过PC给出

  • 数据寻址:寻找本条指令的数据
    通常在指令字中设一个字段指明寻址方式

    操作码 寻址特征 形式地址A

常见数据寻址方式

隐含寻址

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

  • 优:有利于缩短指令字长
  • 缺:需要增加存储操作数或隐含地址的硬件

立即(数)寻址

指令的地址字段指出的不是操作数地址,而是操作数本身,又称立即数,#表示立即寻址特征,使用补码表示

  • 优:指令在执行阶段不访问主存,指令执行时间最短
  • 缺:A的位数限制立即数的范围

直接寻址

指令中的形式地址A是操作数的真实地址EA,EA=A

  • 优:简单,访存1次,不需要专门计算操作数的地址
  • 缺:A的位数决定了指令操作数的寻址范围,操作数的地址不易修改

间接寻址

指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址的存储单元地址,EA=(A),间接寻址可以迭代多次
间接寻址,主存第一位表示是否为多次间址

  • 优:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数),便于编制程序(用间址寻址可方便的完成子程序返回)
  • 缺:访问速度慢

寄存器寻址

指令字中直接给出操作数所在的寄存器编号EA= $R_i$,操作数在由$R_i$所指的寄存器内

  • 优:指令执行阶段不访存,只访问寄存器,寄存器对应地址码长度较小,使得指令字短且因不用访存,所以执行速度快,支持向量/矩阵运算
  • 缺:寄存器昂贵,有限

寄存器间接寻址

寄存器$R_i$中给出的不是一个操作数,而是操作数所在主存单元的地址EA=($R_i$)

  • 优:与一般间址寻址速度快
  • 缺:需要访存

相对寻址

PC的内容加上指令格式的形式地址A而形成操作数的有效地址EA=(PC)+A,A是相对于当前PC的值的位移量,可正可负,用补码表示,A的位数决定寻址范围

  • 操作数的地址是不固定的,随PC的值变化而变化,且与指令地址之间相差一个固定值,便于程序浮动,广泛用于转移指令
  • JMP A,CPU从存储器取出一字节,自动执行(PC)+1 $\to$ PC,若转移指令的地址为X,且占2B,取出该指令后,PC自增2,(PC)=X+2,执行完该指令,会自动跳转至X+2+A的地址继续执行

基址寻址

将CPU的基址寄存器BR的内容加上指令格式的形式地址A形成操作数的有效地址EA=(BR)+A,基址寄存器可采用专用寄存器也可为通用寄存器

  • 基址寄存器面向操作系统,内容通过操作系统或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关性

  • 执行过程中基址寄存器内容不变,形式地址可变(偏移量)

  • 采用通用寄存器作为基址寄存器,用户可决定使用哪个寄存器,内容由操作系统确定

  • 优:可扩大寻址范围(基址寄存器位数大于形式地址A的位数),用户不必考虑自己的程序存于主存哪个区域,有利于多道程序设计,可用于制成浮动程序

  • 缺:偏移量位数较短

变址寻址

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

  • IX可使用专用寄存器或通用寄存器
  • 变址寄存器面向用户,在程序执行过程,变址寄存器内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)
  • 可扩大寻址范围(变址寄存器位数大于形式地址A的位数),适合编制循环程序,偏移量的位数(IX)足以表示整个存储空间

堆栈寻址

堆栈是存储器(或专用寄存器组)中一块特定的、按照后进先出(LIFO)的原则管理的存储区,存储区读写单元地址是用一个特定寄存器给出的称为堆栈指针(SP),分为硬堆栈(不适合做大容量堆栈)和软堆栈(主存划出一段区域)

寻址方式 有效地址 访存次数
隐含寻址 程序指定 0
立即寻址 A是操作数 0
直接寻址 EA=A 1
一次间接寻址 EA=(A) 2
寄存器寻址 EA= $R_i$ 0
寄存器间接一次寻址 EA = ($R_i$) 1
相对寻址 EA=(PC)+A 1
基址寻址 EA=(BR)+A 1
变址寻址 EA=(IX)+A 1

标签:寻址,指令系统,计算机,EA,操作数,地址,指令,寄存器,原理
From: https://www.cnblogs.com/blueflylabor/p/18231125

相关文章

  • 计算机组成原理·虚拟存储器页式段式和段页式
    虚拟存储器·页式·段式·段页式主存和辅存共同构成了虚拟存储器,在硬件和系统软件的共同管理下工作。对于程序员而言,虚拟存储器是透明的,将主存和辅存的地址空间统一编址用户编程允许涉及的地址称为虚地址或逻辑地址,虚拟地址对应的是存储空间称为虚拟空间实际的主存单元地址称为......
  • 计算机组成原理·中央处理器
    中央处理器控制器:负责协调并控制计算机各部件执行程序的指令序列:取指令、分析指令、执行指令运算器:对数据加工指令控制操作控制数据加工时间控制中断处理基本结构运算器和控制器两大部分组成运算器:算术逻辑单元(ALU)暂存寄存器累加寄存器(ACC)通用寄存器组(AX/BX/CX/D......
  • 基于51单片机的RFID密码锁门禁系统设计资料(源码+原理图等)
    目录1、实物图  2、原理图3、PCB4、器件清单5、设计描述6、源码 7、资料清单资料下载地址:基于51单片机的RFID密码锁门禁系统设计资料(源码+原理图+论文等)​​​​​​​1、实物图  2、原理图3、PCB 4、器件清单5、设计描述 本设计采用STC89C52作......
  • 容斥原理
    容斥原理的基本原理是根据集合之间的交来求集合之间的并,以下仅为容斥原理的部分相关习题https://codeforces.com/problemset/problem/803/F题意了然,即求出所有符合公共最小公约数为1的序列数目,那么考虑一种特殊情况:只有数字i,很明显他们的最小公约数一定是i,且对于每个位置都有选或者......
  • 面试官:说说Netty对象池的实现原理?
    Netty作为一个高性能的网络通讯框架,它内置了很多恰夺天工的设计,目的都是为了将网络通讯的性能做到极致,其中「对象池技术」也是实现这一目标的重要技术。1.什么是对象池技术?对象池技术是一种重用对象以减少对象创建和销毁带来的开销的方法。在对象池中,只有第一次访问时会创建对......
  • 飞睿uwb定位tag防丢器,蓝牙智能防丢器原理,支持苹果IOS的本地防丢查找
    在当今这个快节奏的社会,人们的注意力经常被各种琐事分散,丢三落四的情况时有发生。随着科技的发展,智能防丢器应运而生,成为帮助我们解决这一烦恼的助手。今天,我们就来深入探讨一款备受瞩目的智能防丢产品——飞睿UWB定位Tag防丢器,它不仅结合了新的蓝牙技术,还拥有自己的APP,支持苹......
  • 适合小白学习的项目1901java体育馆管理系统Myeclipse开发mysql数据库web结构java编程
    一、源码特点java体育馆管理系统是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。java体育馆管理系......
  • XSS攻击原理及危害,说的太详细了!(值得收藏)
    随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,在移动互联网时代,web除了传统的XSS、CSRF等安全问题之外,又时常遭遇网络劫持、非法调用HybridAPI等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入CSP、Same-SiteCookies等新技术来增强安全......
  • Springboot计算机毕业设计医院门诊小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的迅猛发展,人们对于医疗服务的便捷性和高效性提出了更高要求。传统医院门诊流程复杂、耗时较长,已无法满足现代患者快速就医的需求......
  • Springboot计算机毕业设计医院排班&预约小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在现代医疗服务体系中,医生与患者的对接效率直接影响着医院的运营效率和患者的就医体验。传统的排班与预约方式往往存在信息更新不及时、预约流程繁琐......