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

news2024/9/29 19:25:40

指令系统

  • 指令系统
    • 指令的概述
      • 指令的格式
      • 指令的字长取决于
    • 操作数类型和操作种类
      • 操作数的类型
      • 数据在存储器中的存放方式
      • 操作类型
    • 寻址方式
      • 指令寻址
      • 数据寻址
        • 立即寻址
        • 直接寻址
        • 隐含寻址
        • 间接寻址
        • 寄存器寻址
        • 寄存器间接寻址
        • 基址寻址
        • 变址寻址
        • 堆栈寻址
    • 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.coloradmin.cn/o/1550475.html

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

相关文章

K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(上)

🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 在上一章节中,我们详细探讨了Pod的概念、创建、…

linux X11窗口开发

X11 控制窗口 窗口信息查询 检索窗口信息工具 xprop xprop执行后会出现一个光标,这个光标可以获取到窗口信息 X11 获取窗口信息,操作窗口 X11 遍历获取当前显示窗口的标题 _NET_WM_NAME, 置顶模拟键盘输入操作 开发依赖 apt install libX11-dev l…

【前端Vue】社交信息头条项目完整笔记第2篇:二、登录注册,准备【附代码文档】

社交媒体-信息头条项目完整开发笔记完整教程(附代码资料)主要内容讲述:一、项目初始化使用 Vue CLI 创建项目,加入 Git 版本管理,调整初始目录结构,导入图标素材,引入 Vant 组件库,移动端 REM 适配,关于 , 配置文件,封装请求模块。十、用户关…

LeetCode-1669题:合并两个链表(原创)

【题目描述】 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。下图中蓝色边和节点展示了操作后的结果: 请你返回结果链表的头指针。 【…

10 - Debian如何让特定用户切换root身份

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何让特定用户切换root身份 《傅老师Debian小知识库系列之10》——原创 前言 傅老师Debian小知识库特点: 1、最小化拆解Debian实用技能…

LNMP架构之mysql数据库实战

mysql安装 到官网www.mysql.com下载源码版本 实验室使用5.7.40版本 tar xf mysql-boost-5.7.40.tar.gz #解压 cd mysql-boost-5.7.40/ yum install -y cmake gcc-c bison #安装依赖性 cmake -DCMAKE_INSTALL_PREFIX/usr/local/mysql -DMYSQL_DATADIR/data/mysql -DMYSQL_…

MySQL为什么会选错索引

在平时不知道一有没有遇到过这种情况,我明明创建了索引,但是MySQL为何不用索引呢?为何要进行全索引扫描呢? 一、对索引进行函数操作 假设现在维护了一个交易系统,其中交易记录表 tradelog 包含交易流水号(tradeid)、交…

【分布式计算框架】Hadoop伪分布式安装

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言 文章目录 Hadoop伪分布式安装一、实验目的二、实验环境三、实验内容基本任务1:安装Linux虚拟机(至…

[Vue3] 配置 Pinia 并存储、读取、修改数据 | 集中式状态(数据)管理

安装 npm i pinia main.ts import ./assets/main.cssimport { createApp } from vue import App from ./App.vue import { createPinia } from pinia // 引入Pinia// 创建一个应用 const app createApp(App)const pina createPinia() app.use(pina) // 挂载整个应用到app容器…

『Apisix进阶篇』动态负载均衡:APISIX的实战演练与策略应用

🚀『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 📣读完这篇文章里你能收获到 🎯 掌握APISIX中多种负载均衡策略的原理及其适用场景。📈 学习如何通过APISIX的Admin API和Dashboard进行负…

AIGC趋势下软件工程强智能编码来临了么?

一、背景 在AIGC(AI Generated Content,人工智能生成内容)的趋势下,软件工程领域的“强智能编码”是指通过深度学习、自然语言处理等前沿技术,使AI具备理解、学习、推理和生成代码的能力,从而实现自动化或…

操作系统:经典进程同步问题的高级探讨

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

ChatGPT提升工作生产力方法和技巧ChatGPT enhances work productivity methods and techniques

使用ChatGPT提升工作效率的一些详细步骤和技巧: 1. 快速撰写和编辑文档 撰写文档:当需要撰写报告、方案、邮件等内容时,可以直接向ChatGPT提出请求,例如:“请帮我写一份关于第一季度销售业绩的总结报告。”之后&#x…

Mybatis-plus + 通用mapper(tk.mybatis)

推荐课程:MyBatisPlus实战教程02-课程介绍与案例演示_哔哩哔哩_bilibili 官网:MyBatis-Plus (baomidou.com) 目录 01 引言 1)MyBatis与MyBatis-Plus区别 2)Mybatis-plus入门案例 案例一:spring容器版本的案例 案例…

将二进制数a的每一位右移b位operator.rshift(a,b)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将二进制数a的 每一位右移b位 operator.rshift(a,b) [太阳]选择题 请问执行operator.rshift(4, 1)的结果为? import operator print("【显示】二进制2:",bi…

Tuxera for Mac2024免费读写硬盘U盘工具

作为软件产品专家,我对各类软件都有较为深入的了解,下面介绍Tuxera for Mac这款读写硬盘/U盘工具的相关信息: Tuxera for Mac是一款高效稳定的NTFS读写工具,专为解决Mac系统无法直接读写NTFS格式驱动器的问题而设计。它提供了完整…

【文献分享】FLUNED(一种用于流体活化计算的开源工具)在水中的开发和验证

题目:Development and validation in water of FLUNED, an open-source tool for fluid activation calculations 链接:Redirecting FLUNED(一种用于流体活化计算的开源工具)在水中的开发和验证 在核聚变装置中,高…

【数据结构】树、二叉树与堆(长期维护)

下面是关于树、二叉树、堆的一些知识分享,有需要借鉴即可。 一、初识树(了解即可) 1.树的概念 概念:一种非线性数据结构,逻辑形态上类似倒挂的树 树的构成:由一个根左子树右子树构成,其中子树…

布隆过滤器详讲

本文旨在讲解布隆过滤器的原理以及实现方式,希望通过本文能使读者对布隆过滤器有一定的认识! 一、布隆过滤器的引入 在讲解布隆过滤器之前,我们还是先提及一下前面讲的位图行,位图可以处理大量的数据,广泛用于查找等…

Vue-vue3

一、Vue3简介二、Vue3有那些优化性能的提升源码升级拥抱TypeScript新的特性 三、创建Vue3.0工程四、Vue3工程结构(使用cli创建的vue3)五、常用的Composition API(组合式API)setupsetup的两个注意点 ref函数reactive函数Vue3.0中的…