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

指令系统

  • 指令系统
    • 指令的概述
      • 指令的格式
      • 指令的字长取决于
    • 操作数类型和操作种类
      • 操作数的类型
      • 数据在存储器中的存放方式
      • 操作类型
    • 寻址方式
      • 指令寻址
      • 数据寻址
        • 立即寻址
        • 直接寻址
        • 隐含寻址
        • 间接寻址
        • 寄存器寻址
        • 寄存器间接寻址
        • 基址寻址
        • 变址寻址
        • 堆栈寻址
    • 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指令
控制方式绝大多数为微程序绝大多数用组合逻辑
通用寄存器数量较少

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业无线网关在汽车制造企业的应用效果和价值-天拓四方

随着智能制造的快速发展,工业无线网关作为关键通信设备,在提升生产效率、优化生产流程、实现设备间的互联互通等方面发挥着越来越重要的作用。以下是一个关于工业无线网关在智能制造行业应用的具体案例,展示了其在实际生产中的应用效果和价值…

Linux系统使用Docker部署Portainer结合内网穿透实现远程管理容器和镜像

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

vue2高德地图选点

<template><el-dialog :title"!dataForm.id ? 新建 : isDetail ? 详情 : 编辑" :close-on-click-modal"false" :visible.sync"show" class"rv-dialog rv-dialog_center" lock-scroll width"74%" :before-close&q…

windows上打开redis服务闪退问题处理

方法1&#xff1a;在windows上面打开redis服务时&#xff0c;弹窗闪退可能是6379端口占用&#xff0c;可以用以下命令查看&#xff1a; netstat -aon | findstr 6379 如果端口被占用可以用这个命令解决&#xff1a; taskkill /f /pid 进程号 方法2&#xff1a; 可以使用…

利用python搭建临时文件传输服务

场景 如果想从一台服务器上传输文件又多种方法&#xff0c;其中常见的是利用scp进行传输&#xff0c;但是需要知道服务器的账号密码才能进行传输&#xff0c;但有时候我们并不知道账号密码&#xff0c;这个时候我们就可以通过python -m SimpleHTTPServer 命令进行传输文件 启…

2014年认证杯SPSSPRO杯数学建模B题(第一阶段)位图的处理算法全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 B题 位图的处理算法 原题再现&#xff1a; 图形&#xff08;或图像&#xff09;在计算机里主要有两种存储和表示方法。矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形&#xff0c;位图则使用像素来描述图像。一般来说&#…

记录 AI绘图 Stable Diffusion的本地安装使用,可搭建画图服务端

开头 最近刷短视频看到了很多关于AI绘图&#xff0c;Midjourney&#xff0c;gittimg.ai&#xff0c;Stable Diffusion等一些绘图AI工具&#xff0c;感受到了AI绘画的魅力。通过chatGPT生成关键词再加上绘图工具&#xff0c;真是完美&#xff0c;文末教大家如何用gpt提词 Midj…

零基础学习挖掘PHP网站漏洞

教程介绍 本套课程&#xff0c;分为三个阶段&#xff1a;第一阶段&#xff1a;基础篇 学习PHP开发的基础知识&#xff0c;对PHP常见的漏洞进行分析&#xff0c;第二阶段&#xff1a;进阶篇 实战PHP漏洞靶场&#xff0c;了解市面上的PHP主流网站开发技术&#xff0c;并对市面上…

为什么Python不适合写游戏?

知乎上有热门个问题&#xff1a;Python 能写游戏吗&#xff1f;有没有什么开源项目&#xff1f; Python可以开发游戏&#xff0c;但不是好的选择 Python作为脚本语言&#xff0c;一般很少用来开发游戏&#xff0c;但也有不少大型游戏有Python的身影&#xff0c;比如&#xff1…

打造核心竞争力:高效Web系统数据中台的设计与实践_光点科技

在数字化的浪潮中&#xff0c;数据已经成为企业赖以生存和发展的核心资源。一个高效的Web系统数据中台&#xff0c;能够赋予企业在激烈的市场竞争中立于不败之地的能力。本文将深入探讨如何设计和实施一个能够提升企业数据管理水平和支持业务决策的高效数据中台架构。 数据中台…

小米还涉足了哪些领域

小米作为一家全球性的移动互联网企业&#xff0c;其业务领域相当广泛&#xff0c;除了核心的智能手机业务外&#xff0c;还涉足了许多其他领域。以下是对小米涉足领域的简要介绍&#xff1a; 智能硬件与IoT平台&#xff1a;小米是全球领先的智能硬件和IoT平台公司&#xff0c;致…

启动性能优化

一、应用启动慢的原因 1.在主线程执行了太多耗时的操作&#xff0c;比如加载数据&#xff0c;或者初始化三方库等等&#xff0c;导致在Application的oncreate或者Activity的oncreate方法中耗时太久 2.布局嵌套太深&#xff0c;或者一些不会立即使用的布局也在一开始一起加载到…

【爬虫基础】第6讲 opener的使用

在爬虫中&#xff0c;opener是一个用来发送HTTP请求的对象。它可以用来模拟浏览器发送请求&#xff0c;包括设置请求头、处理Cookie等操作。使用opener可以实现一些高级功能&#xff0c;如模拟登录、处理验证码等。 方法1&#xff1a; from urllib.request import Request,bu…

【iOS ARKit】3D文字

首先&#xff0c;3D场景中渲染的任何虚拟元素都必须具有网格&#xff08;顶点及顶点间的拓扑关系&#xff09;&#xff0c;没有网格的元素无法利用GPU 进行渲染&#xff0c;因此&#xff0c;在3D 场景申渲染 3D文字时&#xff0c;文字也必须具有网格。在计算机系统中&#xff0…

#Linux(SSH软件安装及简单使用)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;终端键入&#xff08;root权限&#xff09;安装 apt-get install openssh-server 安装时遇到报错 E: Could not get lock /var/lib/dpkg/…

【前端学习——js篇】6.事件模型

具体见&#xff1a;https://github.com/febobo/web-interview 6.事件模型 ①事件与事件流 事件(Events) 事件是指页面中发生的交互行为&#xff0c;比如用户点击按钮、键盘输入、鼠标移动等。在js中&#xff0c;可以通过事件来触发相应的操作&#xff0c;例如执行函数、改变…

javaScript | 报错:JSX expressions must have one parent element

#错误记录&#xff1a;在做一个练习时候出现这个错误 #错误原因分析&#xff1a;在React和JSX中&#xff0c;每个JSX表达式都必须有一个父元素。这意味着你想要渲染的所有组件或元素都必须被一个单独的容器所包含。这个规则的原因是JSX最终会被编译成调用React.createElement()…

C++基本语法

C是如何工作的 文章目录 C是如何工作的1、新建Hello World工程1.1使用Visual Studio新建项目1.2 HelloWorld1.2.1 命名空间1.2.2 输出输出 1.3 注释1.4 函数1.4.1 使用有返回的函数1.4.2 自定义函数 1、新建Hello World工程 1.1使用Visual Studio新建项目 按照下面的图片&…

星云小窝项目1.0——项目介绍(一)

星云小窝项目1.0——项目介绍&#xff08;一&#xff09; 文章目录 前言1. 介绍页面2. 首页2.1. 游客模式2.2. 注册用户后 3. 星云笔记3.1. 星云笔记首页3.2. 星云笔记 个人中心3.2. 星云笔记 系统管理3.3. 星云笔记 文章展示3.3. 星云笔记 新建文章 4. 数据中心5. 交流评论6. …