【计算机组成原理】指令系统

news2024/11/16 23:50:20

目录

指令格式

按指令数目分类:

零地址指令

一地址指令

二地址指令

三地址指令

四地址指令

按指令长度分类:

指令字长

机器字长

存储字长

按操作码的长度分类

定长操作码

可变长操作码

定长指令字结构+可变长操作码------>拓展操作码指令格式

按操作类型分类

数据传送(数据传输类)

算数逻辑操作(运算类)

移位操作(运算类)

转移操作(程序控制类)

输入输出操作(输入输出类I/O)

拓展操作码

拓展操作码举例

定长操作码与拓展操作码

指令寻址


指令格式

何为指令?(指令定义)

指令:指令又称为机器指令,是指计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该计算机的指令系统,也成指令集。(一台计算机只能执行自己的指令系统,不能执行其他系统的指令)

比如说x86架构和ARM架构,目前的Intel电脑芯片基本上都是支持x86架构的,而手机芯片一般是使用ARM架构,因此在手机上的app不能够直接在电脑上运行。因为两个不同的架构所拥有的指令系统是不一样的。

    • 一条指令就是及其语言的一个子句,它是一组有意义的二进制代码。
    • 一条指令通常要包括操作码字段和地址码字段两个部分。
    • 根据一条指令可能包含几个地址码数目的不同,可将指令的分为零地址指令、一地址指令、二地址指令...

按指令数目分类:

零地址指令

  1. 不需要操作数,如空操作、停机、关中断等指令
  2. 堆栈计算机:两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶。(后缀表达式)

一地址指令

  1. 只需要简单操作数,如加1、减1、取反、求补等

指令含义:OP(A1)--->A1 A1为某个主存地址

完成一条指令需要3次访存:取指--->读A1--->写A1

  1. 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)

指令含义:(ACC)OP(A1)--->ACC

完成一条指令需要2次访存:取指--->读A1(存结果到寄存器中不需要执行,因此两次就可以了)

二地址指令

常用于两个操作数的算数运算、逻辑运算相关指令

指令含义:(A1)OP(A2)--->A1

完成一条指令需要访存4次:取指--->读A1--->读A2--->写A1

三地址指令

常用于需要两个操作数的运算符、逻辑运算相关指令

指令含义:(A1)OP(A2)--->A3

完成一条指令需要访存4次:取指--->读A1--->读A2--->写A3

四地址指令

指令含义:(A1)OP(A2)--->A3 ,A4=下一条将要执行指令的地址

完成一条指令需要访存4次:取指--->读A1--->读A2--->写A3

按指令长度分类:

指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则读取一条双字长指令需要两次访存

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

变长指令子结构:指令系统中各种指令的长度不等

指令字长

一条指令的总长度(可能会改变)

机器字长

CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)

存储字长

一个存储单元中的二进制代码位数(通常和MDR位数相同)

按操作码的长度分类

定长操作码

指令系统中所有指令的操作码长度相同

n位-->条指令

控制器的译码电路设计简单,但灵活性较低

可变长操作码

指令系统中各指令的操作码长度可变

控制器的译码电路设计复杂,但灵活性较高

定长指令字结构+可变长操作码------>拓展操作码指令格式

按操作类型分类

数据传送类:进行主存与CPU之间的数据传送

程序控制类:改变程序执行的顺序

算数类:实现了各种运算,算数、逻辑、移位

输入输出类(I/0) :进行CPU和I/0设备之间的数据传送

数据传送(数据传输类)

LOAD作用:把存储器中的数据放到寄存器中去。

STORE作用:把寄存器中的数据放到存储器中去。

算数逻辑操作(运算类)

算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算

逻辑:与、或、非、异或、位操作、位测试、位清除、位求反

移位操作(运算类)

算术移位、逻辑移位、循环移位(带进位和不带进位)

转移操作(程序控制类)

无条件转移JMP

条件转移 JZ:结果为0 ;

JO: 结果溢出;

JC:结果有进位。

调用和返回CALL和RETURN

陷阱(Trap)与陷阱指令

输入输出操作(输入输出类I/O)

CPU寄存器与I0端口之间的数据传送(端口即I0接口中的寄存器)

拓展操作码

每个指令字长是16位,每个地址码占4位

4位基本操作码若全部用于三地址指令,则有16条。

但至少须将1111留作扩展操作码之用,即三地址指令为15条;

留下1111拓展码的作用是为了让计算机在识别前4位为1111时能够知道这是一条二地址码,而不是一条三地址码。

1111 1111留作扩展操作码之用,二地址指令为15条;

1111 1111 1111留作扩展操作码之用,一地址指令为15条;

零地址指令为16条;

在设计操作码指令格式时的注意点:

  • 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同;
  • 各指令的操作码一定不能重复。

这就是为什么留下1111为拓展码的原因了!

通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较高的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间

拓展操作码举例

定长操作码与拓展操作码

定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码;

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

拓展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。

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

指令寻址

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

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

相关文章

女子举重问题

一、问题的描述 问题及要求 1、搜集各个级别世界女子举重比赛的实际数据。分别建立女子举重比赛总成绩的线性模型、幂函数模型、幂函数改进模型,并最终建立总冠军评选模型。 应用以上模型对最近举行的一届奥运会女子举重比赛总成绩进行排名,并对模型及…

Java分布式事务(二)

文章目录🔥分布式事务处理_认识本地事务🔥关系型数据库事务基础_并发事务带来的问题🔥关系型数据库事务基础_MySQL事务隔离级别🔥MySQL事务隔离级别_模拟异常发生之脏读🔥MySQL事务隔离级别_模拟异常发生之不可重复读&…

信息安全与数学基础-笔记-②同余

知识目录同余完全剩余系剩余类完全剩余系❀简化剩余系❀欧拉函数逆元!欧拉定理 !同余 a,b 两个数字,都模m,当两个数字模m后余的数一样即为同余。 例子: a bq r (mod m),这里的a 和 r 就是同余 &#xff…

如何使用Unity3d实现多人对战联机游戏

所需资源 课程来源(请支持正版课程) 安装Unity Hub 安装Visual Studio 角色模型 环境准备 ①Unity设置 不设置的话编写有些代码没有自动补全 点开 Preferences 选择 visual studio ②角色导入 点击 windows—>Package Manager 左上角 My Ass…

数据结构与算法(七):排序算法

排序算法是《数据结构与算法》中最基本的算法之一,排序算法可以分为内部和外部排序。 内部排序:数据记录在内存中进行排序。 外部排序:因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常…

xgboost:分割Sparsity-aware Split Finding

Sparsity-aware Split Finding1 在许多现实问题中,输入xxx是稀疏的是很常见的。造成稀疏性的可能原因有很多: 1)数据中存在缺失值; 2)统计中频繁出现零项; 3)特征工程的处理结果,如独热编码。 重要的是使算法意识到数据中的稀…

RocketMQ5.1.0单机安装与启动

RocketMQ单机安装与启动系统要求下载地址安装步骤RocketMq启动NameServer查看是否启动成功启动BrokerProxy查看是否启动成功修改tool.sh测试消息产生消息的消费关闭服务器系统要求 下载地址 官网下载地址 二进制包是已经编译完成后可以直接运行的,源码包是需要编译…

javaWeb核心02-RequestResponse

文章目录Request&Response1,Request和Response的概述2,Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数的通用方式基于上述理论,request对象为我…

python:使用 Jupyter notebook(测试 matplotlib 和 opencv)

环境: window1python 3.10.6 参考: https://jupyter.org/https://opencv.org/ 一、创建虚拟环境 这个步骤可以跳过(因为笔者不喜欢在全局环境安装任何东西,所以搞一个新环境)。 先选中一个目录:D:\jackl…

论文笔记 | Conducting research in marketing with quasi-experiments

这篇论文是Journal of Marketing上的论文,讲了使用准实验来进行论文研究的一些事项。外生性识别的来源、几种准实验方法的注意点还有内生性的解决。 这篇论文对于准实验或者是平常论文的展开有一个非常友善的指导功能,可以阅读~ 摘要:本文旨…

多线程实现的三种方法、线程名称的获取

文章目录多线程实现的三种方法1、通过继承Thread,并重写里面的run()方法2、实现Runnable接口,并重写其中run()方法将runnable类传递给Thread类中3、实现Callable接口,重写其中的call()方法Callable接口时有泛型的,该泛型值call()方…

字符串模式匹配,经典KMP算法你还不会?我可不允许你不会!

文章目录重点1. 简单模式匹配算法2. 部分匹配值PM的算法(Move j-1 PM[j-1])3. 部分匹配值PM的两次改进(Move j-next[j])4. 快速得到next数组5. KMP匹配算法重点 童鞋们看网上讲解的时候一定要分清楚序列是从0开始还是从1开始&…

大数据框架之Hive:第1章 Hive入门

1.1 什么是Hive 1)Hive简介 Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 那为什么会有Hive呢?它是为了解决什么问题而诞生的呢? 下…

性能优化|记一次线上OOM问题处理

概述最近线上监控发现 OOM 涨幅较大,因此去尝试定位和修复这个问题,在修复了一些内存泄漏和大对象占用问题后, OOM 依旧未达到正常标准,在这些新上报的 hprof 文件中,发现几乎所有 case 中都有个叫 FinalizerReference 的对象&…

集合体系概述以及Collection集合常用API

一. 集合 集合与数组类似,都是一种容器。集合是Java中存储对象数据的一种容器。集合也被称为对象容器。 数组的特点 集合的特点 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。集合更像气球,可大可小。集合非常适合…

python与pycharm从零安装

python(解释器)下载地址:Welcome to Python.orgpycharm(编译器)下载地址:PyCharm: the Python IDE for Professional Developers by JetBrains一、python的下载与安装到官网后根据步骤下载安装包后&#xf…

xgboost:分割查找:Weighted Quantile Sketch

Weighted Quantile Sketch 专门处理流式和分布式加权数据集的一种分桶的方法 近似算法的一个重要步骤是提出候选分裂点。通常使用特征的百分位数来使候选数据均匀分布。形式上,设Dk(x1k,h1),(x2k,h2)⋅⋅⋅(xnk,hn)D_k {(x_{1k}, h_1),(x_…

Redis持久化:RDB、AOF

Redis持久化一. RDB(1) save(2) bgsave(3) 总结二. AOF(1) 重写优化(2) RDB和AOF的区别引入:Redis用内存存储数据,有数据丢失的问题; 一. RDB RDB(Redis Database Bcakup file)即Redis数据备份文件,或Red…

如何用 Python采集 <豆某yin片>并作词云图分析 ?

嗨害大家好鸭!我是小熊猫~ 总有那么一句银幕台词能打动人心 总有那么一幕名导名作念念不忘 不知道大家有多久没有放松一下了呢? 本次就来给大家采集一下某瓣电影并做词云分析 康康哪一部才是大家心中的经典呢? 最近又有哪一部可能会成为…

拉链表详解

目录 一、拉链表概念 二、拉链表对应的业务需求 三、代码实现 3.1 数据初始化: 3.2 创建ods层增量表: 3.3 创建dwd层拉链表 3.4 数据更新 ,将数据日期为2023-3-4的日期添加到拉链表中 3.4.1 先追加数据到ods层表 3.4.2 更新dwd层表数据 …