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

指令系统

  • 指令系统
    • 指令的概述
      • 指令的格式
      • 指令的字长取决于
    • 操作数类型和操作种类
      • 操作数的类型
      • 数据在存储器中的存放方式
      • 操作类型
    • 寻址方式
      • 指令寻址
      • 数据寻址
        • 立即寻址
        • 直接寻址
        • 隐含寻址
        • 间接寻址
        • 寄存器寻址
        • 寄存器间接寻址
        • 基址寻址
        • 变址寻址
        • 堆栈寻址
    • RISC 和 CISC 技术
      • RISC 即精简指令系统计算机
      • CISC 即复杂指令系统计算机
      • RISC 和 CISC 的比较


大家好呀!我是小笙,本章我主要分享计算机组成原理的指令系统知识,希望内容对你有所帮助!

指令系统

指令的概述

指令的格式

image-20240322124839520
  • 操作码:反映机器做什么操作

    • 长度固定:将操作码集中放在指令字的一个字段内(用于指令字段较长的情况。例如: IBM370)

    • 长度可变:操作码分散在指令字的不同字段中(有效地压缩操作码的平均长度,在字长较短的微型计算机中被广泛采用。例如:PDP-11)

    • 扩展操作码技术:操作码的位数随地址数的减少而增加

      image-20240322125211160
  • 地址码:地址码用来指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一条指令的地址

    分类:四地址指令、三地址指令、二地址指令、一地址指令、零地址指令

指令的字长取决于

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

指令字长可以分为固定和可变:固定的时候,指令字长 = 存储字长 ; 可变的时候,按字节的整数倍数变化

操作数类型和操作种类

操作数的类型

  • 地址:无符号整数
  • 数字:定点数、浮点数、十进制数
  • 字符:ASCII
  • 逻辑数:逻辑运算

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

  • 不对准边界(从任意位置开始访问)

    优点:不浪费存储资源

    缺点:除了访问每个字节之外,访问其他任何类型的数据都可能花费两个存储周期的时间;读写控制比较复杂

    image-20231113221113765

  • 对准边界(从一个存储字的起始位置开始访问)

    优点:无论访问任何类型的数据,在一个周期均可完成;读写控制简单

    缺点:浪费了宝贵的存储资源

    image-20231113221137383

  • 边界对转方式(从地址的整数倍位置开始访问)

    数据存放的起始位置是数据长度的整数倍(前面两种方式的折中方案)

操作类型

  • 数据传送:数据传送包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送
  • 算术逻辑操作:算术运算和逻辑运算
  • 移位操作:分为算术移位、逻辑移位和循环移位
  • 转移:跳转、无条件/条件转移等
  • 输入输出:从外设中的寄存器读入一个数据到 CPU 的寄存器内,或将数据从 CPU 的寄存器输出至某外设的寄存器中

寻址方式

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

寻址方式分为指令寻址和数据寻址两大类

指令寻址

  • 顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址
  • 跳跃寻址则通过转移类指令实现
image-20240326124133642

数据寻址

指令的地址码字段通常都不代表操作数的真实地址

image-20240326124748293

  • 形式地址:指令中的地址(可以理解为逻辑地址)
  • 有效地址:操作数的真实地址

以下寻址方式建立在 指令字长 = 存储字长 = 机器字长


立即寻址

操作数本身设在指令字内,即形式地址 A 不是操作数的地址,而是操作数本身,又称之为立即数(数据是采用补码形式存放的)

image-20240326124901358

优点:只要取出指令,便可立即获得操作数,这种指令在执行阶段不必再访问存储器

缺点:显然 A 的位数限制了这类指令所能表述的立即数的范围


直接寻址

EA = A 有效地址由形式地址直接给出

image-20240326125244468

优点:寻找操作数比较简单,也不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次

缺点:A 的位数限制了操作数的寻址范围,而且必须修改A的值,才能修改操作数的地址


隐含寻址

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

image-20240326125334507

由于隐含寻址在指令字中少了一个地址,因此,这种寻址方式的指令有利于缩短指令字长


间接寻址

倘若指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址,也就是说,有效地址是由形式地址间接提供的,即为间接寻址,即EA=(A)

image-20240326125446727

优点:它扩大了操作数的寻址范围以及便于编程

缺点:在于指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),致使指令执行时间延长


寄存器寻址

在寄存器寻址的指令字中,地址码字段直接指出了寄存器的编号,即EA=Ri

image-20240327124227915

优点

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

寄存器间接寻址

Ri 中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址EA=(Ri)(有效地址不是存放在存储单元中,而是存放在寄存器中)

image-20240327124329884
基址寻址

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

  • 隐式:计算机内部专门设置一个基址寄存器 BR,使用时用户不必明显指出该基址寄存器
  • 显式:一组通用的寄存器里,由用户来明确指出哪个寄存器用作基址寄存器
image-20240327124532788

优点

  • 基址寻址可以扩大操作数的寻址范围
  • 基址寻址在多道程序中极为有用
  • 用户也不可以修改基址寄存器的内容,确保系统安全可靠地运行

变址寻址

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

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

image-20240327125011238

优点

  • 只要变址寄存器位数足够,也可扩大操作数的寻址范围
  • IX 的内容由用户给定
  • 在程序执行过程中 IX 内容可变,形式地址A是不可变的
  • 便于处理数组问题

堆栈寻址

堆栈分为硬堆栈(多个寄存器)、软堆栈(指定的存储空间)

堆栈寻址就其本质也可视为寄存器间接寻址,因SP可视为寄存器,它存放着操作数的有效地址

image-20240327125542646

RISC 和 CISC 技术

RISC 即精简指令系统计算机

主要特征:

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

CISC 即复杂指令系统计算机

主要特征:

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

RISC 和 CISC 的比较

CISCRISC
指令系统复杂,庞大简单,精简
指令数目大于200条小于100条
指令字长不固定定长
可访存指令不加限制只有Load/Store指令
控制方式绝大多数为微程序绝大多数用组合逻辑
通用寄存器数量较少

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过组策略统一开启终端系统的远程桌面,并修改远程桌面的端口号

通过组策略可以统一开启终端系统的远程桌面服务,但是修改远程桌面端口号则需要通过注册表或者其他方式实现,因为组策略本身不提供直接修改远程桌面端口的功能。以下是如何操作: 开启终端系统的远程桌面: 打开“组策略管理编辑器…

『Apisix系列』破局传统架构:探索新一代微服务体系下的API管理新范式与最佳实践

文章目录 『Apisix基石篇』『Apisix入门篇』『Apisix进阶篇』『Apisix安全篇』 『Apisix基石篇』 🚀 手把手教你从零部署APISIX高性能API网关 利用Docker-compose快速部署Apache APISIX及其依赖组件,实现高效的API网关搭建通过编写RPM安装脚本来自动化安…

cesium加载.tif格式文件

最近项目中有需要直接加载三方给的后缀名tif格式的文件 <script src"https://cdn.jsdelivr.net/npm/geotiff"></script> 或者 yarn add geotiff npm install geotiff 新建tifs.js import GeoTIFF, { fromBlob, fromUrl, fromArrayBuffer } from geotif…

反勒索组件的核心功能是什么

反勒索组件是一种重要的网络安全工具&#xff0c;旨在防止和应对勒索软件的攻击。勒索软件&#xff0c;通常被称为“勒索病毒”&#xff0c;是一种恶意软件&#xff0c;它会加密用户的文件并要求支付赎金以获取解密密钥。反勒索组件通过一系列的技术和策略&#xff0c;帮助用户…

操作教程|在MeterSphere中通过SSH登录服务器的两种方法

MeterSphere开源持续测试平台拥有非常强大的插件集成机制&#xff0c;用户可以通过插件实现平台能力的拓展&#xff0c;借助插件或脚本实现多种功能。在测试过程中&#xff0c;测试人员有时需要通过SSH协议登录至服务器&#xff0c;以获取某些配置文件和日志文件&#xff0c;或…

前端如何判断元素是否到达可视区域

以图片显示为例&#xff1a; window.innerHeight 是浏览器可视区的高度&#xff1b;document.body.scrollTop || document.documentElement.scrollTop 是浏览器滚动的过的距离&#xff1b;imgs.offsetTop 是元素顶部距离文档顶部的高度&#xff08;包括滚动条的距离&#xff0…

Python 从0开始 一步步基于Django创建项目(13)将数据关联到用户

在city_infos应用程序中&#xff0c;每个城市信息条目是关联到城市的&#xff0c;所以只需要将城市条目关联到用户即可。 将数据关联到用户&#xff0c;就是把‘顶层’数据关联到用户。 设计思路&#xff1a; 1、修改顶层数据模型&#xff0c;向其中添加‘用户’属性 2、根…

泛微OA 主表字段更改 修改明细字段的必填或修改属性

1、申请类型&#xff1a;其它类&#xff0c;供应商、规格、金额必填。 2、申请类型&#xff1a;IT设备类&#xff0c;供应商、规格、金额可编辑。 <script>jQuery(document).ready(function(){//绑定主表字段变更事件WfForm.bindFieldChangeEvent("field6669",…

python实战之基础篇

1. 注释 # coding utf-8 # 该注释放到文件第一行, 这个注释告诉python解释器该文件的编码集是UTF-82. 导入语句有三种形式 import <模块名> from <模块名> import <代码元素> from <模块名> import <代码元素> as <代码元素别名>3. 获取…

C语言 大小写字母转换

目录 1.问题描述 1.1描述 1.2输入描述&#xff1a; 1.3输出描述&#xff1a; 1.4示例 1.5备注&#xff1a; 2.代码解读 2.1使用ASCII码值的版本 2.2使用getchar吸收回车的版本 2.3使用函数的版本 3.以下是三种方式的全部代码 4.结语 1.问题描述 1.1描述 实现字母的…

Vue过渡动画,组件动画,元素动画(vue2元素、组件过渡动画)

​简介&#xff1a;Vue的过渡动画允许你定义一个进入和离开的过渡&#xff0c;然后在元素的状态改变时自动应用这些过渡&#xff0c;提升用户体验。它通过 <transition> 标签 这个内置组件&#xff0c;在元素或组件的插入、更新和移除时应用过渡效果&#xff08;也就是动…

什么是 MySQL 回表?

什么是 MySQL 回表&#xff1f; 题目 什么是 MySQL 回表&#xff1f; 推荐解析 回表简介 1&#xff09;索引结构&#xff1a;MySQL 使用 B 树索引结构来加速数据的查找。B 树是一种多叉树&#xff0c;它的叶子节点中存储了完整的数据行&#xff0c;而非叶子节点存储了索引…

第十篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作Excel

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列博文目录 前言一、重要作用解说二、Python操作Excel的常用库介绍三、数据处理和分析示例代码四、自动化报表生成示例代码五、数据导入和导出示例代码六、数据可视化示例代码八、数据校验和清洗示例代码九、…

【海贼王之强者之路】经典动漫影视改编火爆剧情回合卡牌手游-Win服务端源码视频架设教程-开放多区-GM后台-安卓苹果IOS双端版本!

【海贼王之强者之路】站长推荐经典动漫影视改编火爆剧情回合卡牌手游-2024年3月27日最新打包Win服务端源码视频架设教程-开放多区-GM后台-安卓苹果IOS双端版本&#xff01;

Dynamo一键清理Revit中未放置的房间和多余的房间

今天我们来解决一个Revit中比较常见的小问题&#xff0c;就是清理未放置的房间和多余的房间。 首先&#xff0c;我们可以先做个测试样例&#xff0c;看看问题在哪里&#xff0c;如下图&#xff0c;我简单画了个模型&#xff0c;生成一个房间明细表&#xff0c;如下图&#x…

【javaWeb 第三篇】Vue快速入门

VUE vue是一套前端框架&#xff0c;免除原生的js的DOM操作&#xff0c;简化书写 基于MVVM&#xff08;model-view-viewmodel&#xff09;思想&#xff0c;实现数据的双向绑定&#xff0c;将编程的关注放在数据上。 什么是框架&#xff1a; 框架相当于一个半成品&#xff0c;是一…

【Java程序设计】【C00391】基于(JavaWeb)Springboot的校园疫情防控信息管理系统(有论文)

基于&#xff08;JavaWeb&#xff09;Springboot的校园疫情防控信息管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff…

【SpringCloud微服务实战10】DevOps自动化部署微服务项目(Jenkins+Docker+K8s)

一、什么是 DevOps DevOps 是一种重视软件开发人员&#xff08;Developer&#xff09;和运维人员&#xff08;Operations&#xff09;之间沟通与协作的文化、运动或实践&#xff0c;目标在于快速交付高质量的软件产品和服务。DevOps 强调自动化流程、持续集成与交付&#xff08…

C语言二叉树和堆(个人笔记)

二叉树和堆 二叉树1二叉树的概念和结构1.1特殊的二叉树1.2二叉树的性质&#xff08;规定根节点的层数为1&#xff09;1.3二叉树的存储结构 2.二叉树的顺序结构和实现2.1二叉树的顺序结构2.2堆的概念和结构2.3堆的实现2.4堆的应用2.4.1堆排序 2.5TOP-K问题 3.二叉树的遍历4.二叉…

管理阿里云服务器ECS -- 网站选型和搭建

小云&#xff1a;我已经学会了如何登录云服务器ECS了&#xff0c;但是要如何搭建网站呢&#xff1f; 老王&#xff1a;目前有很多的个人网站系统软件&#xff0c;其中 WordPress 是使用非常广泛的一款&#xff0c;而且也可以把 WordPress 当作一个内容管理系统&#xff08;CMS…