《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。


网课

计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili


笔记

《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记_友人帐_的博客-CSDN博客


课后习题答案

计算机组成原理(第三版)唐朔飞-课后习题(完整版)_计算机组成原理唐朔飞第三版答案_蓝净云的博客-CSDN博客


哈尔滨工业大学计组实验

计算机组成原理实验一 运算器 预习报告_基本运算器实验_旅僧的博客-CSDN博客

计算机组成原理实验二 存储系统 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验三 系统总线和具有基本输入输出功能的总线接口 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验四 微程序控制器 实验报告_旅僧的博客-CSDN博客


第七章 指令系统

7.1 机器指令

7.1.1 指令的一般格式

在这里插入图片描述

1. 操作码

用来指明该指令所完成的操作,其位数反映了机器允许的指令条数。

(1)操作码的长度

  • 长度固定:将操作码集中放在指令字的一个字段内。便于硬件设计,指令译码时间段,广泛用于字长较长的精简指令集计算机(RISC)中。

  • 长度不固定:操作码分散在指令字的不同字段中。可以有效地压缩操作码的平均长度,在字长较短的微型计算机中广泛使用。

(2)扩展操作码技术

操作码长度不固定会增加指令译码和分析的难度,使控制器的设计复杂。通常采用扩展操作码技术,使操作码的长度随地址数的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。

保留码点方式:

操作码的位数随着地址数的减少而增加。为了使计算机能够识别操作码的位数,保留1111字段,作为拓展标记(见下图,图中操作数的地址码为4位)。

在这里插入图片描述

零地址、一地址、二地址指的是操作数有几个。指令字长固定的情况下,操作码的位数 = 指令字长 - 地址字长。可以通过不断减少多地址指令的操作码种类,来增加少地址指令的条数。

2. 地址码

地址码用来指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一条指令的地址。这里的“地址"可以是主存的地址,也可以是寄存器的地址,甚至可以是I/О设备的地址。

以主存地址为例,分析指令的地址码字段。通过下面的分析可见,通过利用一些硬件资源(ACC、PC等),可在不改变指令字长的前提下,扩大指令操作数的直接寻址范围、减少访存次数,以提高机器性能。

(1)四地址指令

OP A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4

其中,OP为操作码; A 1 A_1 A1为第一操作数地址; A 2 A_2 A2为第二操作数地址; A 3 A_3 A3为结果地址; A 4 A_4 A4为下一条指令的地址。

  • 完成 ( A 1 ) O P ( A 2 ) → A 3 (A_1)OP(A_2)\rightarrow A_3 (A1)OP(A2)A3的操作。
  • 访问4次内存(取指令1次,取两个操作数2次,存放结果1次)。

(2)三地址指令

程序计数器PC既能存放下一条指令的地址,又可以自加1,使用PC代替 A 4 A_4 A4字段,得到三地址指令格式。

OP A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3
  • 完成 ( A 1 ) O P ( A 2 ) → A 3 (A_1)OP(A_2)\rightarrow A_3 (A1)OP(A2)A3的操作。
  • 访问4次内存(取指令1次,取两个操作数2次,存放结果1次)。

(3)二地址指令

没必要将每次结果都存入主存,可以暂存在CPU的寄存器中,省去 A 3 A_3 A3字段,得到二地址指令。

OP A 1 A_1 A1 A 2 A_2 A2
  • 完成 ( A 1 ) O P ( A 2 ) → A 1 (A_1)OP(A_2)\rightarrow A_1 (A1)OP(A2)A1的操作。
  • 访问4次内存(取指令1次,取两个操作数2次,存放结果1次)。
  • 若完成 ( A 1 ) O P ( A 2 ) → A C C (A_1)OP(A_2)\rightarrow ACC (A1)OP(A2)ACC的操作,则访问3次内存。

(4)一地址指令

将一个操作数的地址隐含在运算器的ACC中,指令字中只需给出一个地址码。

OP A 1 A_1 A1
  • 完成 ( A C C ) O P ( A 1 ) → A C C (ACC)OP(A_1)\rightarrow ACC (ACC)OP(A1)ACC的操作。
  • 访问2次内存(取指令1次,取操作数1次)。

(5)零地址指令

无地址码,例如空操作(NOP)、停机(HLT)这类指令只有操作码;子程序返回(RET)、中断返回(IRET)这类指令操作数的地址隐含在堆栈指针SP中。

7.1.2 指令字长

指令字长取决于操作码的长度、操作数地址的长度和操作数的个数。

(1)指令字长固定

​ 可以设置为机器字长和存储字长相等,因此访问某个存储单元,便可取出一条完整的指令或一个完整的数据。

(2)指令字长可变

​ 一般按照字节的倍数变化。

7.2 操作数类型和操作类型

7.2.1 操作数类型

  • 地址:绝对地址无符号整数;相对地址有符号数。

  • 数字:定点数、浮点数、十进制数。

  • 字符:普遍使用ASCII码。

  • 逻辑数据:1真0假,参与逻辑运算。

7.2.2 数据在存储器中的存放方式

1. 大端序与小端序

在这里插入图片描述

(左:小端序;右:大端序)

2. 边界对准

​ 数据存放的起始地址是数据类型大小的整数倍。

  • 既保证了在一个存取周期可以进行访问,又不会过于浪费空间。

7.2.3 操作类型

1. 数据传送

目的指令示例
寄存器寄存器MOVE
寄存器存储器STORE; MOVE; PUSH
存储器寄存器LOAD; MOVE; POP
存储器存储器MOVE

置1、清0等。

2. 算数逻辑操作

  • 算术运算:加减乘除、增1、减1、求补(取负数);
  • 逻辑运算:与或非、异或;

3. 移位

  • 算术移位
  • 逻辑移位
  • 循环移位

4. 转移(跳转)

(1)无条件转移 JMP

(2)条件跳转

​ 根据条件码来进行跳转。

(3)调用CALL与返回RET

​ CALL用于从当前的程序位置转至子程序的入口;RETURN用于子程序执行完成后返回到原程序的断点。

(4)陷阱Trap与陷阱指令

​ 一旦运行过程中出现意外故障,计算机就发出陷阱信号,暂停当前程序的执行,转入故障处理程序进行相应的故障处理。

​ 陷阱指令一般不提供给用户直接使用,而是作为隐指令在出现意外故障时由CPU自动产生并执行。

5. 输入输出

​ 对于I/O单独编址的计算机而言,通常设有输入输出指令,它完成从外设中的寄存器读人-个数据到CPU的寄存器内,或将数据从CPU的寄存器输出至某外设的寄存器中。

6. 其他

其他包括等待指令、停机指令﹑空操作指令、开中断指令.关中断指令、置条件码指令等。

7.3 寻址方式

寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法。

7.3.1 指令寻址

在这里插入图片描述

1. 顺序寻址

通过程序计数器PC加1,自动形成下一条指令的地址。(加1并不是实际上加1,而是加1个单位,使得指向下一条指令。可能是2字节、4字节、8字节等)

2. 跳跃寻址

通过转移类指令实现。

7.3.2 数据寻址

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

  • 形式地址A:指令字中的地址。通常都不代表操作数的真实地址。

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

在这里插入图片描述

假设指令字长、存储字长、机器字长相等。

1. 立即寻址

形式地址A不是操作数的地址,而是操作数本身(补码),称为立即数。使用#表示立即寻址特征标记。

在这里插入图片描述

2. 直接寻址

形式地址A就是操作数的真实地址EA。

在这里插入图片描述

  • 比较简单。
  • A的位数限制了操作数的范围;且修改操作数必须修改A的值。

3. 隐含寻址

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

例如,一地址格式的加法指令只给出一个操作数的地址,另一个操作数隐含在累加器ACC中,这样累加器ACC成了另一个数的地址。

在这里插入图片描述

  • 有利于缩短指令字长。

4. 间接寻址 @

形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址,即EA=(A)。(指针)

在这里插入图片描述

  • 扩大了操作数的寻址范围(由A那么长变成了整个存储字长那么长)。
  • 多次间接寻址时用存储字的首位来标记间接寻址是否结束。1表示继续,0表示结束。故存储字首位不能作为EA的组成部分。
  • 便于编写程序,方便调用子程序跳转。多次寻址导致指令执行时间延长。

5. 寄存器寻址

在寄存器寻址的指令字中,地址码字段直接指出了寄存器的编号,即 E A = R i EA=R_i EA=Ri。其操作数在由R所指的寄存器内。

  • 无须访存,减少了执行时间。
  • 地址字段只需指明寄存器编号(计算机中寄存器数有限),故指令字较短,节省了存储空间。

在这里插入图片描述

6. 寄存器间接寻址

寄存器中存放的是操作数所在主存单元的地址,即 E A = ( R i ) EA=(R_i) EA=(Ri)

在这里插入图片描述

7. 基址寻址

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

!BR的值由操作系统自动给出,用户不得修改。

基址寄存器分为显式和隐式两种:

  • 隐式:计算机内专门设有一个BR,使用时不必指出,体现出指令为基址寻址方式即可。
  • 显式:在一组通用寄存器中,由用户明确指出哪个寄存器用作基址寄存器,存放基地址。

在这里插入图片描述

  • 扩大操作数的寻址范围(将主存空间分为若干段,BR里存放段首地址,A里存放偏移量,采用段地址+段内偏移量来寻址)

8. 变址寻址

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

!IX的值由用户给定。

在这里插入图片描述

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

  • 基址寻址主要用于为程序或数据分配存储空间,故基址寄存器的内容通常由操作系统或管理程序确定,在程序的执行过程中其值是不可变的,而指令字中的A是可变的。
  • 在变址寻址中,变址寄存器的内容是由用户设定的,在程序执行过程中其值可变,而指令字中的A是不可变的。

变址寻址主要用于处理数组问题,在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。

9. 相对寻址 *

有效地址是将程序计数器PC与指令字中的形式地址A相加而得,即EA=(PC)+A。

  • 常用于跳转,A称为位移量,可正可负,用补码表示。
  • 转移地址不固定,可随PC的变化而变化,无论程序在主存的哪段区域都可正常运行。

在这里插入图片描述

10. 堆栈寻址

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

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

以软堆栈为例,可用堆栈指针SP(Stack Point)指出栈顶地址,也可用CPU中一个或两个寄存器作为SP。操作数只能从栈顶地址指示的存储单元存或取。可见堆栈寻址也可视为一种隐含寻址,其操作数的地址总被隐含在SP中。堆栈寻址就其本质也可视为寄存器间接寻址,因SP可视为寄存器,它存放着操作数的有效地址。

SP的修改与主存编址方式有关。进栈-,出栈+,向低地址生长。

  • 按字编址:进出栈SP±1
  • 按字节编址
    • 存储字长16位:进出栈SP±2
    • 存储字长32位,进出栈SP±4

在这里插入图片描述

7.4 指令格式举例

7.4.1 需考虑因素

  • 指令系统的兼容性

  • 操作类型:包括指令数及操作的难易程度。

  • 数据类型:确定哪些数据类型可以参与操作。

  • 指令格式:包括指令字长、操作码位数、地址码位数、地址个数、寻址方式类型,以及指令字长和操作码位数是否可变等。

  • 寻址方式:包括指令和操作数具体有哪些寻址方式。

  • 寄存器个数:寄存器的多少直接影响指令的执行时间。

7.5 RISC技术

精简指令系统计算机 (Reduced Instruction Set Computer)
与之对应的为:CISC ,复杂指令系统计算机 (Complex Instruction Set Computer)

7.5.1 RISC的主要特征

  • 选用使用频度较高的一些简单指令,复杂指令的功能由简单指令来组合
  • 指令长度固定、指令格式种类少、寻址方式少
  • 只有LOAD/STORE指令访存
  • CPU中有多个通用寄存器
  • 采用流水技术一个时钟周期内完成一条指令
  • 采用组合逻辑实现控制器

7.5.2 CISC的主要特征

  • 系统指令复杂庞大,各种指令使用频度相差大
  • 指令长度不固定、指令格式种类多、寻址方式多
  • 访存指令不受限制
  • CPU中设有专用寄存器>
  • 大多数指令需要多个时钟周期执行完毕
  • 采用微程序控制器

7.5.3 RISC和CISC的比较

  • RISC更能充分利用VLSI芯片的面积
  • RISC更能提高计算机运算速度:指令数、指令格式、寻址方式少,通用寄存器多,采用组合逻辑,便于实现指令流水
  • RISC便于设计,可降低成本,提高可靠性
  • (缺点)RISC不易实现指令系统兼容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256584.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

HTTPX从入门到放弃

1. 什么是HTTPX? HTTPX是一款Python栈HTTP客户端库,它提供了比标准库更高级别、更先进的功能,如连接重用、连接池、超时控制、自动繁衍请求等等。HTTPX同时也支持同步和异步两种方式,因此可以在同步代码和异步代码中通用。 HTTP…

FPGA纯vhdl实现XGMII接口10G万兆网UDP协议 配合10G Ethernet PCS/PMA使用 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案本 10G-UDP 协议栈功能和性能描述本 10G-UDP 协议栈设计框图用户发送AXIS接口描述用户接收AXIS接口描述控制接口描述XGMII接口描述 4、vivado工程详解10G-UDP协议栈10G Ethernet PCS/PMA IP核 5、上板调试验证并演示6、福利&…

iOS 13修复了FaceTime最大的烦恼之一

黑客技术 点击右侧关注,了解黑客的世界! Java开发进阶 点击右侧关注,掌握进阶之路! Linux编程 点击右侧关注,免费入门到精通! iOS 13 第三个开发者 beta 版本增加了一个新功能,可以让用户在 Fac…

多人聊天、预约会议,FaceTime登录Windows和Android系统

整理 | Carol 出品 | CSDN(ID:CSDNnews) 在一年一度的WWDC苹果开发者盛会中,Apple除了宣布引入iOS15以外,还宣布将面向Windows和Android用户开放FaceTime。而过去,这项能力只能在iOS和Mac设备上试用。 Face…

iPhone曝严重漏洞,用户接听FaceTime前或被“监听”!

作者 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 近日,据 9to5Mac 等多家外媒报道,苹果手机 FaceTime 一项重大漏洞被曝光,该漏洞可以让用户通过 FaceTime 群聊功能(Group FaceTime)打电话给任…

黑苹果facetime_如何在消息或FaceTime中添加或删除电话号码

黑苹果facetime If you have an iPhone and a Mac or iPad, you can link your phone number to your iCloud account to send and receive calls and messages from the same number on both devices. 如果您拥有iPhone和Mac或iPad,则可以将电话号码链接到iCloud帐…

苹果 iOS 15 正式发布

本文转载自IT之家 IT之家 6 月 8 日消息 今日凌晨,苹果召开 WWDC21 全球开发者大会,正式公布了全新 iOS 15 系统。 IT之家了解到,在 iOS 15 系统中,苹果带来了全新 FaceTime 与通知界面,并对照片、天气、钱包、地图等…

【苹果imessage相册推信】黑apple苹果经常出现FaceTime群设备推和Imessage群发设备推

黑色苹果经常出现FaceTime和Imessage,无法正常登录。 需要正常登录,你需要提到3码,一些帖子甚至复制在真正的白色苹果机上方。 但实际上,我希望上述服务将正常使用,我们需要补充SMUUID,BoardSerialNumber和…

FaceTime 在苹果电脑macOS与iPhone iOS上视频聊天配置步骤

FaceTime 在macOS与iPhone视频聊天配置步骤 前提,毫无疑问,你要有Apple ID。 1,在苹果电脑,到Applications目录下打开运行FaceTime 2,还是在电脑,输入你的Apple ID 3,还是在电脑,这里…

iMessage, Facetime 解决办法

不需要白苹果三码,亲测可用:原帖地址: https://www.reddit.com/r/hackintosh/comments/2wohwn/getting_imessage_working_on_10102_generating/ 感谢原帖的大神,感谢搜索。如果你得到一个错误信息,那么你很辛运。这意味…

【苹果推软件】安装OS imessage和faceTime

推荐内容IMESSGAE相关 作者推荐内容参考此文档来操作 *** 点击即可查看作者要求内容信息作者推荐内容1.参考此文档来操作 *** 点击即可查看作者要求内容信息作者推荐内容2.参考此文档来操作 *** 点击即可查看作者要求内容信息作者推荐内容3.参考此文档来操作 *** 点击即可查看…

如何解决FaceTime在苹果Mac上不起作用的问题?

由于多种原因,FaceTime无法在Mac上正常工作。在某些情况下,该应用程序行为不正常或将您注销,因此您将无法使用FaceTime。同样,如果您在使用相机或麦克风时遇到问题,Mac的日期和时间不正确,或者互联网连接状…

黑苹果解决 iMessage 与 Facetime 以及苹果三码的问题

教程来自http://www.heimac.net 若有侵权,及时私信我删除本文,再次感谢! 作者:超级管理员 黑苹果经常出现Facetime 和 iMessage 无法正常登陆。需要正常登陆则需要所说的白苹果 3 码,有些帖子甚至已经到真正的白苹果机…

C++ 和机器学习:使用 C++ 执行 ML 任务的简介

C 和机器学习:使用 C 执行 ML 任务的简介 介绍 C 是一种高性能编程语言,非常适合机器学习( ML ) 任务。尽管它在 ML 中可能不像 Python 或 R 那样流行,但它在速度和内存效率方面具有优势。 在本文中,我们将概述使用 C 执行 ML 任务…

【上篇】我们邀请了4位专家来探讨消费市场的新增量:W型机会、单客经济、日本市场、DTC......

好久不见了,我是增长黑盒的创始人yolo。最近我们总是发布一些严肃型的行业报告,相信大家的动作都是在第一时间点个收藏,然后....就没有然后了。 所以,今天我们的内容没有复杂的图表和数据,想用比较轻松的对话形式来呈现…

二、高通相机bringup 流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、相机Sensor 点亮相关的文件二、Sensor 驱动文件详解 一、相机Sensor 点亮相关的文件 1.1 Sensor 驱动XML以及CPP文件 Sensor 文件路径:…

react antd Modal里Form设置值不起作用

问题描述: react antd Modal里Form设置值不起作用,即使用form的api。比如:编辑时带出原有的值。 造成的原因:一般设置值都是在声明周期里设置,比如:componentDidMounted里设置,hook则在useEff…

Dockerfile

Docker镜像原理: docker镜像是由特殊的文件系统叠加而成最低端的是boofs,并使用宿主机的bootfs第二层是root文件系统rootfs,称为base image让再往上叠加其他的镜像文件统一文件系统(Union FileSystem)技术能够将不同的层整合成一个文件系统&…

CVPR 2023 | 南大王利民团队提出LinK:用线性核实现3D激光雷达感知任务中的large kernel...

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【Transformer】微信交流群 【CVPR 2023】LinK:用线性核实现3D激光雷达感知任务中的large kernel 本文介绍我们媒体计算研究组(MCG)在3D激…

Arm推出新一代高性能CPU内核Cortex-X4以及GPU Immortalis-720 GPU

每年差不多这个时候,智能手机芯片背后的大脑 Arm 都会推出高通、联发科等公司用于下一代SoC的构建模块。在 2023 年 Arm 技术日期间,Arm 推出了一系列涵盖高性能和低功耗用例的新 CPU 内核,以及其第五代 GPU,并提供光线追踪图形支…