计算机组成原理——第4章 指令系统
文章目录
- 【绪:内容】
- 一、指令格式
- 1、指令基本格式
- ① 零地址指令
- ② 一地址指令
- ③ 二地址指令
- ④ 三地址指令
- ⑤ 四地址指令
- 2、定长操作码指令格式
- 3、扩展操作码指令格式
- 4、指令操作类型
- 二、寻址方式
- 1、指令寻址
- 2、数据寻址
- ① 隐含寻址
- ② 立即(数)寻址
- ③ 直接寻址
- ④ 间接寻址
- ⑤ 寄存器寻址
- ⑥ 寄存器间接寻址
- ⑦ 相对寻址
- ⑧ 基址寻址
- ⑨ 变址寻址
- ⑩ 堆栈寻址
- 三、 C I S C CISC CISC 和 R I S C RISC RISC
- 1、 C I S C CISC CISC
- 2、 R I S C RISC RISC
【绪:内容】
指令格式
指令的基本格式
定长操作码指令格式
扩展操作码指令格式
指令的寻址方式
有效地址的概念
数据寻址和指令寻址
常见寻址方式
CISC和RISC的基本概念
一、指令格式
指令(机器指令):是指示计算机执行某种操作的命令。
指令系统:也称指令集,一台计算机的所有指令的集合构成该机的。
1、指令基本格式
一条指令通常包括操作码字段和地址码字段两部分:
操作码字段
指出该指令应该执行什么性质的操作以及具有何种功能。
地址码字段
给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。
指令的长度是指一条指令中所包含的二进制代码的位数。指令字长取决于操作码的长度操作数地址码的长度和操作数地址的个数。
单字长指令
指令长度等于机器字长的指令
半字长指令
指令长度等于半个机器字长的指令
双字长指令
指令长度等于两个机器字长的指令
注:指令字长会影响取指令所需时间
在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构。若各种指令的长度随指令功能而异,则称为变长指令字结构。
① 零地址指令
只给出操作码 O P OP OP 1,没有显式地址。
- 不需要操作数的指令,如空操作指令、停机指令、关中断指令等。
- 零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。
② 一地址指令
只有目的操作数的单操作数指令,按A地址读取操作数,进行OP操作后,结果存回原地址
指令含义: O P ( A 1 ) → A 1 {\color{DarkOrange}{OP\left ( A_1\right )}}{\color{#7B68EE}{\rightarrow A_1}} OP(A1)→A1
如操作码含义是加1、减1、求反、求补等。
隐含约定目的地址的双操作数指令,按指令地址A可读取源操作数,指令可隐含约定另一个操作数由 A C C ACC ACC (累加器)提供,运算结果也将存放在 A C C ACC ACC 中。
指令含义: ( A C C ) O P ( A 1 ) → A C C \color{DarkOrange}{\left ( ACC\right )OP\left ( A_1\right )}\color{#7B68EE}{\rightarrow ACC} (ACC)OP(A1)→ACC
若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为 2 24 = 16 M {\color{DarkOrange}{2^{24}=}}{\color{#7B68EE}{16M}} 224=16M。
③ 二地址指令
指令含义: ( A 1 ) O P ( A 2 ) → A 1 \color{DarkOrange}{\left ( A_1\right )OP\left ( A_2\right )}\color{#7B68EE}{\rightarrow A_1} (A1)OP(A2)→A1
使用两个操作数,分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果。
若指令字长为32位,操作码占8位,两个地址码字段各占12位,则指令操作数的直接寻址范围为 2 12 = 4 K {\color{DarkOrange}{2^{12}=}}{\color{#7B68EE}{4K}} 212=4K。
④ 三地址指令
- 指令含义: ( A 1 ) O P ( A 2 ) → A 3 \color{DarkOrange}{\left ( A_1\right )OP\left ( A_2\right )}\color{#7B68EE}{\rightarrow A_3} (A1)OP(A2)→A3
- 若指令字长为32位,操作码占8位,3个地址码字段各占8位,则指令操作数的直接寻址范围为 2 8 = 256 {\color{DarkOrange}{2^{8}=}}{\color{#7B68EE}{256}} 28=256。若地址字段均为主存地址,则完成条 三地址需要, 4次访问存储器 (取指令1次,取两个操作数2次,存放结果1次)。
⑤ 四地址指令
指令含义: A 4 = 下 一 条 将 要 执 行 指 令 的 地 址 \color{DarkOrange}{A4=}\color{#7B68EE}{下一条将要 执行指令的地址} A4=下一条将要执行指令的地址。
若指令字长为32位,操作码占8位,4个地址码字段各占6位,则指令操作数的直接寻址范围为 2 6 = 64 {\color{DarkOrange}{2^{6}=}}{\color{#7B68EE}{64}} 26=64。
注:
正常情况下:取指令之后 P C + 1 \color{red}{PC+1} PC+1,指向下一条指令
四地址指令:执行指令后,将PC的值修改为 A 4 A_4 A4的地址
2、定长操作码指令格式
定长操作码指令
在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般 n n n 位康作码字段的指令系统最大能够表示 2 n 2^n 2n 条指令。
3、扩展操作码指令格式
可变长度操作码
全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。
扩展操作码
使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码。
设地址长度为 n n n ,上一层留出 m m m 种状态,则下一层可扩展出 m × 2 n {\color{#0000FF}{m\times2^n }} m×2n 种状态
设计扩展操作码指令格式时,注意以下两点:
- 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
- 各指令的操作码一定不能重复
4、指令操作类型
数据传送传送指令
- 寄存器之间的传送( M O V MOV MOV )
- 内存单元读取数据到 C P U CPU CPU 寄存器( L O A D LOAD LOAD )
- C P U CPU CPU 寄存器写数据到内存单元( S T O R E STORE STORE )等。
算术和逻辑运算
加( A D D ADD ADD )、 减( S U B SUB SUB )、比较( C M P CMP CMP )、 乘( M U L MUL MUL )、除( D I V DIV DIV )、 加1( I N C INC INC )、减1( D E C DEC DEC )、 与( A N D AND AND )、 或( O R OR OR )、取反( N O T NOT NOT )、 异或( X O R XOR XOR )等。
移位操作
算法移位、逻辑移位、循环移位等。
转移操作
无条件转移( J M P JMP JMP )、条件转移( B R A N C H BRANCH BRANCH )、调用( C A L L CALL CALL )、 返回( R E T RET RET )、陷阱( T R A P TRAP TRAP )等。
二、寻址方式
寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。
指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址( A A A )。
形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址( E A EA EA )。
注意:
( A A A)表示地址为 A A A 的数值, A A A 既可以是寄存器编号,也可以是内存地址。对应的( A A A)就是寄存器中的数值,或相应内存单元的数值。例如, E A = ( A ) {\color{DarkOrange}{EA=}}{\color{#7B68EE}{\left ( A\right )}} EA=(A) 意思是有效地址是地址 A A A 中的数值。
注:
一个操作数在内存可能占多个单元,指令中操作数的地址有两种不同的地址指定方式:
大端方式:指令中给出的地址是操作数最高有效字节( M S B MSB MSB)所在的地址。
小端方式:指令中给出的地址是操作数最低有效字节( L S B LSB LSB)所在的地址。
1、指令寻址
顺序寻址方式
通过程序计数器( P C PC PC) 加1(1个指令字长),自动形成下一条指令的地址。
跳跃寻址方式
指下条指令的地址码不由程序计数器给出,而由本条指令给出下条指令地址的计算方式。注意,跳跃的结果是当前指令修改 P C PC PC 值,所以下一条指令仍然通过程序计数器( P C PC PC)给出。
2、数据寻址
数据寻址是指如何在指令中表示一个操作数的地址。
数据寻址的方式较多,通常在指令字中设一个字段(寻址特征),用来指明属于哪种寻址方式,由此可得指令的格式如下所示:
① 隐含寻址
指令中不明显地给出操作数的地址,而在指令中隐含操作数的地址。
隐含寻址的优点是有利于缩短指令字长;缺点是需增加存储操作数或隐含地址的硬件。
② 立即(数)寻址
指令中的地址字段指出的不是操作数的地址,而是操作数本身,又称立即数。数据采用补码形式存放。
立即寻址的优点是指令在执行阶段不访问主存,指令执行时间最短;缺点是A的位数限制了立即数的范围。
③ 直接寻址
- 指令字中的形式地址 A A A 是操作数的真实地址 E A EA EA ,即 E A = A {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ A}} EA=A。
- 直接寻址的优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址;缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改。
④ 间接寻址
指令中的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即 E A = ( A ) {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ \left(A\right)}} EA=(A)。间接寻址可以是一次间接寻址,还可以是多次间接寻址(套娃)。
间接寻址的优点是可扩大寻址范围(有效地址 E A EA EA 的位数大于形式地址 A A A 的位数),便于编制程序(用间接寻址可方便地完成子程序返回);缺点是指令在执行阶段要多次访存(一次间接寻址需两次访存,多次间接寻址需根据存储字的最高位确定访存次数)。
⑤ 寄存器寻址
- 指令中直接给出操作数所在的寄存器编号,即 E A = R i {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ R_i}} EA=Ri,其操作数在由 R i \color{blue}{R_i} Ri 所指的寄存器内。
- 寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器,因寄存器数量较少,对应地址码长度较小,使得指令字短且因不用访存,所以执行速度快,支持向量/矩阵运算;缺点是寄存器价格昂贵,计算机中的寄存器个数有限。
⑥ 寄存器间接寻址
- 指令中给出在寄存器 R i \color{blue}R_i Ri 中的不是一个操作数, 而是操作数所在主存单元的地址即 E A = ( R i ) {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ \left(R_i\right)}} EA=(Ri)。
- 寄存器间接寻址的特点是,与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。
⑦ 相对寻址
- 相对寻址是把程序计数器( P C PC PC ) 的内容加上指令格式中的形式地址 A A A 而形成操作数的有效地址,即 E A = ( P C ) + A {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ \left(PC\right)+A}} EA=(PC)+A,其中 A A A 是相对于当前指令地址的位移量,可正可负,补码表示。
- 相对寻址的优点是操作数的地址不是固定的,它随PC值的变化而变化,且与指令地址之间总是相差一个固定值,因此便于程序浮动。相对寻址广泛应用于转移指令。
⑧ 基址寻址
- 基址寻址是指将 C P U CPU CPU 中基址寄存器( B R BR BR )的内容加上指令格式中的形式地址 A A A 而形成操作数的有效地址,即 E A = ( B R ) + A {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ \left(BR\right)+A}} EA=(BR)+A。
- 基址寄存器既可采用专用寄存器,又可采用通用寄存器。
- 基址寻址的优点是可扩大寻址范围(基址寄存器的位数大于形式地址A的位数)。
⑨ 变址寻址
- 变址寻址是指有效地址 E A EA EA 等于指令字中的形式地址 A A A 与变址寄存器 I X IX IX 的内容之和,即 E A = ( I X ) + A {\color{DarkOrange}{EA=}}{\color{#7B68EE}{ \left(IX\right)+A}} EA=(IX)+A,
- I X IX IX 为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
- 变址寻址的优点是可扩大寻址范围(变址寄存器的位数大于形式地址 A A A 的位数)。偏移量(变址寄存器 I X IX IX )的位数足以表示整个存储空间。
⑩ 堆栈寻址
- 堆栈是存储器(或专用寄存器组)中一块特定的、按后进先出(LIFO)原则管理的存储区,该存储区中读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。
- 堆栈可分为硬堆栈与软堆栈两种。
- 硬堆栈:寄存器堆栈。寄存器堆栈的成本较高,不适合做大容量的堆栈。
- 软堆栈:从主存中划出一段区域来做堆栈。
- 出栈 S P + 1 SP+1 SP+1 ;进栈 S P − 1 SP-1 SP−1。(1个指令字长)
三、 C I S C CISC CISC 和 R I S C RISC RISC
复杂指令系统计算机( C o m p l e x Complex Complex I n s t r u c t i o n Instruction Instruction S e t Set Set C o m p u t e r Computer Computer, C I S C CISC CISC):增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化。如 X 86 X86 X86 架构。
精简指令系统计算机( R e d u c e d Reduced Reduced I n s t r u c t i o n Instruction Instruction S e t Set Set C o m p u t i n g Computing Computing, R I S C RISC RISC):减少指令种类和简化指令功能,提高指令的执行速度。如 A R M ARM ARM 、 M I P S MIPS MIPS 架构.
1、 C I S C CISC CISC
C I S C CISC CISC 的主要特点:
- 指令系统复杂庞大,指令数目一般为200条以上。
- 指令的长度不固定,指令格式多,寻址方式多。
- 可以访存的指令不受限制。
- 各种指令使用频度相差很大。
- 各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成。
- 控制器大多数采用微程序控制。有些指令非常复杂,以至于无法采用硬连线控制。
- 难以用优化编译生成高效的目标代码程序。
2、 R I S C RISC RISC
R I S C RISC RISC 的主要特点:
- 选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现。
- 指令长度固定,指令格式种类少,寻址方式种类少。
- 只有 L o a d Load Load / S t o r e Store Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。
- CPU中通用寄存器的数量相当多。
- R I S C RISC RISC 一定采用指令流水线技术,大部分指令在一个时钟周期内完成。
- 以硬布线控制为主,不用或少用微程序控制。
- 特别重视编译优化工作,以减少程序执行时间。
目标越接近,困难越增加。——歌德
OP在计算机组成原理中代表“操作码” ,全称为 o p e r a t i o n operation operation c o d e code code ↩︎
计算机组成原理——第4章 指令系统相关推荐
- 计算机组成原理第四章ppt,计算机组成原理-第四章--指令系统.ppt
计算机组成原理-第四章--指令系统.ppt 1,第四章 指令系统,4.1 指令系统的发展与性能要求 4.2 指令格式 4.3 操作数类型 4.4 指令和数据的寻址方式 4.5 典型指令 4.6 ARM ...
- 计算机组成原理第4章-指令系统
写在前面:本文参考王道考研的计算机组成书籍. 简述各常见寻址方式的特点和适用情况 基址寻址和变址寻址的区别 文章目录 第四章 指令系统 4.1指令格式 4.2 指令的寻址格式 4.2.1 指令寻址和数 ...
- (王道计算机组成原理)第四章指令系统-第一节2:扩展操作码
王道考研复习指导获取:密码7281 专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 一:重述几个概念 二:为什么要扩展操作码 三: ...
- 5 计算机组成原理第四章 指令系统
文章目录 1 指令格式 1.1 指令定义 1.2 指令格式 1.3 指令格式-地址码 1.4 指令格式-操作码 1.5 操作码分类 1.6 操作类型 2 数据存放指令寻址 2.1 数据存放方式 2.2 ...
- 计算机组成原理 第四章 指令系统
4.1 指令格式 指令是计算机执行某种操作的命令.一条指令就是机器语言的一个语句,是一串有意义的二进制代码,一般为分操作码和地址码两部分. 操作码指示应该执行什么性质的操作和具有什么样的功能.地址码则 ...
- (计算机组成原理)第四章指令系统-第一节2:扩展操作码
上一节说过,指令由操作码和地址码构成.其中,如果指令系统中所有指令的长度都相等则称为定长指令字结构,如果指令系统中各种指令的长度不等则称为变长指令字结构 另外,如果指令系统中所有指令的操作码长度都相同 ...
- (计算机组成原理)第四章指令系统:本章习题
第一节 第二节
- (计算机组成原理)第四章指令系统-第二节1:指令寻址
文章目录 一:顺序寻址 二:跳跃寻址 注意指令寻址和数据寻址的区别 指令寻址:下一条欲执行指令的地址会由程序计数器 P C PC PC给出,分为顺序寻址和跳跃寻址 数据寻址:执行一条指令时,解释出这条 ...
- 计算机组成原理白朔飞,计算机组成原理(第四章复习).ppt
计算机组成原理(第四章复习) 计算机组成原理 第四章 指令系统 本章复习要点: 1. 理解指令的基本格式. 定长与扩展操作码格式 2. 掌握指令寻址方式的基 本概念.常见寻址方式 及其有效地址的计算 ...
最新文章
- C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)
- linux系统管理命令,压缩命令
- 过滤器(Filter)
- LVS原理详解及部署之五:LVS+keepalived实现负载均衡高可用
- 浅谈如何搭建知识体系
- c或c++语言什么时候用补码来运算,C/C++(基础编码-补码详解)
- 浅谈分布式一致性:Raft 与 SOFAJRaft
- java按钮陷下去_付费?广告?捐款?如何让开源软件活下去?
- java 线程参数 用final,JAVA 关于final修饰变量参数
- Fireworks层与蒙版的概念和用法
- X86-64和ARM64用户栈的结构 (1) ---背景介绍
- 快二游戏数据分析_1.更快的数据分析
- mysql迁移到mysqli_php – 从mysql连接迁移到mysqli
- ListView学习思维导图
- 详解大小额支付与超级网银
- ssm项目搭建(tomcat配置)详解
- Halcon图像修复
- 关于树叶的活动设计_大班社会教案《有趣的叶子》
- 微信指纹服务器,华为公布10月底完成微信指纹适配,网友:等了三年终于有结果...
- 用户的裂变式增长,神秘的病毒系数K是什么样的?
热门文章
- MySQL修改密码(三种方法示例)
- linux修改密码时候提示太简单了怎么办,linux修改密码
- vim autoformat php,Vim 之 vim-autoformat 自动切换使用本地或全局eslint
- Kettle 8.2 打开spoon.bat后闪退的解决办法
- python 爬虫 ip池维护思路
- 谁将成为人工智能行业的“领头羊”?
- 如何在 DAX 中创建 “虚拟关系”
- dau、mau、pcu、dnu、wau、acu、uv的意思是什么?
- linux学习步骤(从入门到精通)
- HTTPS安全通信:HTTPS与SSL