408计算机组成原理学习笔记——指令系统(上)

简介: 408计算机组成原理学习笔记——指令系统

1.指令格式

1.1.指令的基本格式

1.操作码:干什么;地址码:对象

2.零地址指令:没有操作数或者操作数隐含

c22ab190846d4830b408e9f8797047c0.png

3.一地址指令:单操作数或者双操作数中一个隐含一个给出

1c8bb3ba2a8846c4ad29760e76a63b7d.png

4. 二三地址指令:区别在于运算的结果写入位置d086064be8ba4d1c9fbe11db5e7814b3.png

5.四地址指令:除最后一步需要跳转指令地址外,跟三地址指令相同

af872f17979e450ea71336bc78a86331.png

7.在指令总长度不变的情况下,地址码个数越多,寻址能力越差(每个地址码的个数更少)

1.1.2.按指令长度分类

指令字长可能会发成变化,但是机器字长、存储字长不变b45d3107a6a84388a8ee260242570da4.png

1.1.3.按操作码长度分类45186645b65242c8bd2621622bca0b90.png

1.1.4.按操作类型分类

转移类指令将会导致PC(下一跳指令的地址)的值发生改变

0a4b038f5ea54e77b6a8acbf5b375d8b.png

1.2.扩展操作码指令格式

扩展操作码指令格式:定长指令字结构 + 可变长操作码(不同地址数的指令使用不同长度的操作码)

设地址长度为n,上一层留出m种状态,下一层可以扩展出m * 2 ^ n种状态


该扩展操作码方法下,每个地址/操作数都需要保留某些特定二进制数用于CPU判断是哪一种指令

7145b08a5c8c4750aac0cc19e01b255d.png

①15条三地址指令,至少需要4位表示,使用0000 - 1110,剩余1111

②12条二地址指令,至少需要4位表示,使用0000 - 1011,剩余1100、1101、1110、1111

③62条一地址指令,至少需要6位表示,但是加上②中所剩余的四个地址,4 * 4位的方式可以表示64条指令,剩余1110 - 1111

④32条零地址指令,至少需要5位表示,但是加上③中所剩余的两个地址,2 * 4位的方式可以表示32条指令

582e11ec7f25485d9ebb216073a4c445.png

CPU会读入这16位指令(0-15位):

①判断0-3位是否为全1,非全1则是三地址指令,全1则进行②

②判断4-5位是否为全1,非全1则是二地址指令,全1则进行③

③判断6-10位是否为全1,非全1则是一地址指令,全1则为零地址指令

2.指令的寻址方式

2.1.指令寻址

PC:指明下一条指令的存放地址

2.1.1.顺序寻址

下一条指令的地址:(PC)+ “1”→PC(1为指令字长)

1.当前指令被取出时,PC进行+1操作

2.PC+1操作是根据不同的场合加不同的1(定长指令)

①设字长为16位,按字编址时,每个字都刚好存放一个指令,因此,PC + 1

②设字长为16位,按字节编址时,每两个字节存放一个地址,因此,PC + 2

3.变长指令:无法预估指令长度,可能需要多次访存,每次读入一个字

设字长为16位,按字节编址

①读入一个完整的字,根据操作码判断这条指令的总字节数 n

②若这条指令的长度>字长,则读入剩余指令,并且PC + n

③若这条指令的长度 = 字长,则PC + 2

2.1.2.跳跃寻址

由转移指令给出

1.当取出转移指令后,PC还是会先进行 PC + 1的操作

2.当执行转移指令时,PC的内容将会被转移指令所改变

2.2.数据寻址

2.2.1.六种寻址

1.确定本条指令的地址码指明的真实地址

2.指令增加寻址特征位,用于判断该如何解读形式地址(A)的含义,从而得到有效地址(EA)

①直接寻址:

Ⅰ访存:取指令1次,取A中的地址1次

Ⅱ缺点:寻址范围不能扩展(形式地址位数有限);当操作数的地址发生改变时,指令失效(仍然指向改变前的地址)e900a6fee404421cba2d7435fdf24921.png

②间接寻址:

Ⅰ访存:取指令1次,取A中EA的地址1次,找到EA中的地址1次(一次间接两次寻址)

可以进行多次间接寻址,当开头第一位为1时,说明该地址存储的地址仍然不是最终的有效地址;当开头第一位为0时,说明该地址存储的地址为最终的有效地址

Ⅱ优点:主存中EA的位数可以远大于形式地址的长度;函数之间可以相互调用,方便返回

Ⅲ缺点:多次访存导致效率降低

a8ecb211a225487e89e84e0fcadea7d2.png

③寄存器寻址:

Ⅰ访存:取指令1次,执行指令时,访问的是寄存器

Ⅱ优点:速度快(执行指令无需再次访存)、指令短(寄存器个数少)87734f7743c64e1088cc4b6e8c1ac434.png

④寄存器间接寻址:

Ⅰ访存:取指令1次,取出寄存器存放的主存地址EA 0次,取出主存EA中存放的地址1次

Ⅱ优点:比一般间接寻址快(EA存放在寄存器中,取出无需访存)

b53de420bc724e9492a5b83297410982.png

⑤隐含寻址:6f2f7b8587e94d1385f8e2a8021552af.png

⑥立即寻址:  访存:仅取指令一次,无需再次访存寄存器/主存

09040feec09249c58fb13944b5bcd156.png

2.2.2.偏移寻址

1.偏移寻址包括基址寻址、变址寻址和相对寻址

2.三者都是经过偏移量寻址,区别在于起点的不同

3.都仅需访存一次

①基址寻址(基址寄存器(BR)Base Address Register)):EA = (BR)+ A(多道程序)bcb7669ca08e4f19ad39e6ee2bd78b22.png

1.基址寄存器中存放的是当前程序的首地址(基地址,运行中基址寄存器中的内容不变,形式地址作为偏移量可变)

2.基址寄存器可以是专用,也可以是指定一个通用寄存器(需要在指令中指明是哪个通用寄存器)

3.便于程序浮动(整段程序在内存中的浮动),多道程序并发运行(仅需修改基址寄存器的内容实现正确寻址,相较于直接寻址,直接寻址需要修改每条指令的地址);可以增加寻址范围(基址寄存器的位数大于形式地址位数,但由于形式地址决定偏移量,因此偏移量有限

4.基址寄存器面向操作系统(用户可以决定使用哪个基址寄存器,但内容由操作系统决定)

②变址寻址(IX——index register):EA = (IX)+ A(数组、循环程序)

1.变址寄存器中的内容(可变)作为偏移量,形式地址A(不变)作为基地址(与基址寻址刚好相反):可以通过不断的改变变址寄存器中的内容,访问数组中的元素,因此适合循环程序

2.变址寄存器可以是专用,也可以是指定一个通用寄存器(需要在指令中指明是哪个通用寄存器)

3.变址寄存器面向用户(用户可以修改变址寄存器的内容)

4.变址寄存器的作用:9e1c037482ed43e79c095dfae714cd2e.png

采用直接寻址的方式:每进行一轮循环都需要一条相应的直接寻址指令

18c78a12d61242fe8ab57f38b883f46e.png

采用变址寻址的方式:通过改变IX的内容(用比较的IX内容的方式)循环执行程序

③相对寻址(转移指令)

1.PC的内容加上指令中形式地址A形成操作数的有效地址,即EA = (PC)+ AA为相对于PC的偏移量,正负都可,用补码表示

2.PC在取出使用相对寻址的指令时,就会进行+ “1”操作,即相对寻址是相对于下一条指令的存放地址的偏移量

3.优点:无论代码被放在什么位置,都不用更改跳转指令的地址码(若使用直接寻址的方式,则每次都需要更改)便于程序浮动(一段代码在程序内部浮动),广泛被用于转移类指令

2.2.3.堆栈寻址

1.操作数存放在堆栈中,隐含使用堆栈指针(SP:Stack Pointer)作为操作数地址

2.堆栈指针存在专门的寄存器中,其指向栈顶元素

3.堆栈两种实现方式:

①专用寄存器:不同情况下对SP的操作顺序和操作方式不同(参考数据结构栈),取指令需访存,执行指令无需访存8e8401b3cd1d41c0a1c31f151f403352.png


②主存中开辟堆栈空间:每次操作都需要进行访存

相关文章
|
消息中间件 设计模式 人工智能
掌握全维度智能体提示词框架(CAP)重塑AI提示词工程​
本文介绍了全维度智能体提示词框架CAP,通过四层架构实现对AI智能体行为的精准控制,涵盖身份定义、能力调度、安全约束与执行优化,助力企业构建可控、可维护的AI应用系统。
1922 0
|
存储 Unix 程序员
计算机组成原理(5)----指令系统(2)
计算机组成原理(5)----指令系统
3396 2
|
数据采集 运维 监控
数据分析异步进阶:aiohttp与Asyncio性能提升
本项目基于aiohttp与Asyncio开发异步爬虫,目标采集今日头条新闻数据。初期因网站限制机制导致请求异常,通过设置代理IP、Cookie和UserAgent解决拦截问题,并优化异步任务调度与异常捕获提升性能。方案包括动态代理池、统一请求头配置及日志监控,确保高并发下的稳定性。示例代码展示代理IP、请求头设置与错误处理方法,为类似项目提供参考。
448 1
数据分析异步进阶:aiohttp与Asyncio性能提升
|
Linux iOS开发 MacOS
硬盘分区怎么做?这几款分区工具新手也能轻松上手
本文介绍了五款实用的硬盘分区工具,满足不同用户需求。Windows用户可使用内置的磁盘管理器或DiskPart命令行工具,简单易上手;DiskGenius功能全面,适合进阶用户进行复杂操作和数据恢复;Mac用户可借助Disk Utility完成基本磁盘管理任务;Linux用户及高级玩家可选择开源工具GParted,支持多种文件系统并具备高度自由度。根据自身需求和技术水平选择合适的工具,可高效完成硬盘分区与管理。
|
存储 监控 网络协议
一次读懂网络分层:应用层到物理层全解析
网络模型分为五层结构,从应用层到物理层逐层解析。应用层提供HTTP、SMTP、DNS等常见协议;传输层通过TCP和UDP确保数据可靠或高效传输;网络层利用IP和路由器实现跨网数据包路由;数据链路层通过MAC地址管理局域网设备;物理层负责比特流的物理传输。各层协同工作,使网络通信得以实现。
|
SQL 前端开发 NoSQL
若依(ruoyi)管理系统(前后端分离版)本地运行教程(Windows)
若依(ruoyi)管理系统(前后端分离版)本地运行教程(Windows)
若依(ruoyi)管理系统(前后端分离版)本地运行教程(Windows)
|
存储
外部排序快速入门详解:基本原理,败者树,置换-选择排序,最佳归并树
外部排序用于处理无法一次性加载到内存中的大规模数据排序问题。其基本原理是将外存数据划分为若干已内部排序的小块,利用内存中的缓冲区进行多路归并排序,并逐步合并以生成更大的有序块。通过增加缓冲区数量、优化关键字比较次数(如使用败者树)和调整归并段长度等方法可进一步提高排序效率。最佳归并树的应用则能有效减少磁盘I/O次数,从而优化整个排序过程。
1545 9
|
机器学习/深度学习 Web App开发 测试技术
『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!
该文章介绍了八种常用的黑盒测试方法,包括等价类划分、边界值分析、错误推测法、因果图法、决策表测试、状态转换法、场景法以及随机测试,并提供了相应的案例说明。
平衡二叉树的插入和删除(从现在开始摆脱旋转)
平衡二叉树的插入和删除(从现在开始摆脱旋转)
844 9
|
块存储 芯片 内存技术
计算机组成原理(4)-----Cache的原理及相关知识点(1)
计算机组成原理(4)-----Cache的原理及相关知识点
1878 2