【计算机系统结构】重叠方式

📝本文介绍
本文主要内容位计算机系统结构的重叠方式

👋作者简介:一个正在积极探索的本科生
📱联系方式:943641266(QQ)
🚪Github地址:https://github.com/sankexilianhua
🔑Gitee地址:https://gitee.com/Java_Ryson
由于本人的知识所限,如果文章有问题,欢迎大家联系并指出,博主会在第一时间修正。

文章目录

  • 📕重叠原理
    • 📖顺序执行和重叠执行
  • 📘一次重叠及问题解决
    • 📖一次重叠
    • 📖时间重叠问题及解决
      • 🔖访存冲突
      • 🔖部件数量
      • 🔖步骤处理时间
      • 🔖转移指令
  • 📙相关处理
    • 📖数相关
      • 🔖主存空间数相关
      • 🔖通用寄存器数相关
    • 📖指令相关

📕重叠原理

📖顺序执行和重叠执行

  在几乎所有的冯诺依曼体系计算机中,一条指令从开始到执行完毕,大致可以分为5个阶段:取指,译码,执行,访存,写回。
  在这里,我们将其暂时分为三个阶段:取值,译码,执行。
  顺序执行:一条指令完整的执行完之后,才可以让下一条指令开始取指。也就是指令之间是串行的关系。在我们执行第k条指令时,必须将第k条指令的三个阶段完整执行完,才可以取出下一条指令开始执行。
  重叠执行:在解释第k条指令的操作完成之前,就可开始解释第k+1条指令。也就是,第k条指令进入译码阶段时,就可以开始第k+1指令的取值,从而达到不同阶段重叠,加快多条指令的运行。
  注意:重叠执行并不能加快一条指令的解释,但能加快相邻两条乃至一段程序的解释
在这里插入图片描述

📘一次重叠及问题解决

📖一次重叠

  一次重叠,将一条指令的解释分为两部分:分析和执行,这样再执行过程中,就只会有分析和指令这两部分的重叠,且只重叠一次。

📖时间重叠问题及解决

🔖访存冲突

  • 将指令与数据分开存放在单独的存储器中(哈佛结构)
  • 混存,采用多体交叉存储结构。也就是对存储器内部区域进行重新规划,连续的地址分开存放。
    在这里插入图片描述
  • 增设指令缓冲寄存器

🔖部件数量

  • 在重叠执行中,希望分割成多个小步骤实现流水,必须有独立的指令分析部件和指令执行部件。也就是,需要有足够的硬件数量来支持一条指令多个部分的同时进行。才不会出现两个重叠的步骤需要使用同一个部件的情况。(若是出现此情况,那么大多数情况下这两个步骤也不能分开,强行分开了也没用,后步骤仍然要等先步骤把事情做完,本质上还是串行。)

🔖步骤处理时间

  • 步骤之间的时间不可能完全相同,若是先步骤比后步骤的时间长,那么流水线仍能建立,先步骤做完,后步骤马上就可以处理。若是先步骤比后步骤时间短,那么后步骤就会出现时间来不及的问题。先步骤处理完,但是后步骤还未处理好上一条指令,这时就会出现流水中断。流水线由于这个后步骤的时间原因,需要中断等待后步骤处理完。
  • 解决方法:先行控制方式。先行控制是指在处理机内部设置一定容量的指令缓冲栈,把指今分折器所需要的指令事先取到指令缓冲栈中,而不必访问主存储器。这样,就能够使取指令、分析指令和执行指令重叠起来执行。(这里也就是一次重叠了。)

🔖转移指令

  • 转移指令对于计算机执行来说,是一个较大的问题。从PC寄存器的工作方式,我们也可以看出,每次+1取指。当出现跳转时,就需要重新计算PC,重新取指。若不做任何处理,当出现转移指令时,就会浪费一个时钟周期。
    在这里插入图片描述
  • 解决方式:延迟转移技术。假设,第k+1条指令为转移指令(跳转到k+5),第k指令为与k+1条指令无关的指令,则可以将转移指令提前,也就是第k+1条先解释。而第k条指令是一定要执行的,这样就不会浪费第k+2条指令的分析周期时间
    在这里插入图片描述

📙相关处理

📖数相关

🔖主存空间数相关

  原因:相邻两条指令之间要求对主存同一单元先写入而后再读出的关联。(也就是后一条指令涉及了前一步骤的处理数。)
  解决方法:延迟。等待上一步骤执行完,将数写入后,再读出,才会是最新数据。

🔖通用寄存器数相关

  • 通用寄存器组数相关
    • 延迟
    • 增加相关专用通路(计算完毕后,通过相关专用通路可以直接把数据也如到对应的寄存器)
  • 通用寄存器组变址或基址相关(也就是前一步的计算会涉及到后一步对操作数地址的改变)
  • 这里会涉及一次相关和二次相关。一次相关指的是,与下一条指令计算地址有关,二次相关指的是与该指令往后第二条指令有关。一次相关没有好办法,只能延迟。而二次相关就可以采用设置相关专用通路的方法,直接送入对应寄存器,从而不用推迟。
    • 延迟(推后分析法)
    • 设置相关专用通路

📖指令相关

  原因:冯诺曼型机器的指令允许修改
  解决方法:

  • 程序执行过程中不允许修改指令
  • 改变指令的执行方式,采用“执行” 指令将指令相关改成数相关。

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

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

相关文章

深入浅出落地应用分析:AI数字人「微软小冰」

hi,各位,今天要聊的是AI小冰,机缘巧合,投递了这家公司的产品,正好最近在看数字人相关的,就详细剖析下这款产品! 前言 小冰,全称为北京红棉小冰科技有限公司,前身为微软(亚洲)互联网工程院人工智能小冰团队,是微软全球最大的人工智能独立产品研发团队。作为微软全…

Redis中的缓存设计

缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常处于容错的考虑,如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。…

mysql5.7离线安装 windows

windows上离线安装mysql5.7 下载安装包 去官网下载对应版本的mysql官网 点击archives,接着选择自己要下载的版本,选择windows系统,并根据自己电脑的位数选择相应的版本【找到“此电脑”,鼠标右击,出来下拉框,选择“属性…

【django framework】ModelSerializer+GenericAPIView接口数据流

GenericAPIView数据从序列化到最终返回响应的数据流 // 以ModelSerializergenerics.CreateAPIView为例 程序终归是为了处理数据,怎么处理,以怎样的顺序和方法去处理,就涉及到了具体的业务流程。当我们是用了一个牛掰的框架,发现原…

考察c语言关键字

C语言——关键字 1.问题:简述goto语句的作用 答:无条件跳转 具体来说,其作用在于允许程序在执行时无条件地跳转到指定的标签位置,并从该标签位置继续执行。通过goto语句,可以实现程序流程的无条件转移,使得…

使用PWM实现呼吸灯功能

CC表示的意思位捕获比较,CCR表示的是捕获比较寄存器 占空比等效于PWM模拟出来的电压的多少,占空比越大等效出的模拟电压越趋近于高电平,占空比越小等效出来的模拟电压越趋近于低电平,分辨率表示的是占空比变化的精细程度&#xf…

离线安装docker、docker-compose、Mysql镜像

离线安装docker docker-compose mysql镜像 一、下载docker docker-compose mysql 镜像文件 1、首先下载docker镜像 博主所用文件版本号: docker-23.0.6.tgz 下载docker 地址 :https://blog.csdn.net/xiaohanshasha/article/details/135489623?spm1001…

【Hadoop大数据技术】——MapReduce经典案例实战(倒排索引、数据去重、TopN)

📖 前言:MapReduce是一种分布式并行编程模型,是Hadoop核心子项目之一。实验前需确保搭建好Hadoop 3.3.5环境、安装好Eclipse IDE 🔎 【Hadoop大数据技术】——Hadoop概述与搭建环境(学习笔记) 目录 &#…

网络安全,硬防迪云

要减少被攻击的频率,游戏开发者可以采取以下措施: 1. 强化安全措施:确保游戏服务器和用户数据的安全性,加密网络传输,防止黑客攻击和数据泄露。 2. 更新和修复漏洞:定期检查游戏代码和服务器,…

Java学习笔记(14)

常用API Java已经写好的各种功能的java类 Math Final修饰,不能被继承 因为是静态static的,所以使用方法不用创建对象,使用里面的方法直接 math.方法名 就行 常用方法 Abs,ceil,floor,round,max,minm,pow,sqrt,cbrt,random Abs要注意参数的…

【汇编】#5 80x86指令系统其一(数据传送与算术)

文章目录 一、数据传送指令1. 通用数据传送指令1.1 MOV传送指令tips:MOV指令几条特殊规定 1.2 XCHG交换指令1.3 进栈指令PUSH1.4 出栈指令POP1.5 所有寄存器进出栈指令PUSHA/POPAtips:SP特别处理 2. 累加器专用传送指令2.1 输入指令IN2.2 OUT输出指令2.3 IO端口与8086CPU通讯关…

【Linux-网络编程】

Linux-网络编程 ■ 网络结构■ C/S结构■ B/S结构 ■ 网络模型■ OSI七层模型■ TCP/IP四层模型 ■ TCP■ TCP通信流程■ TCP三次握手■ TCP四次挥手 ■ 套接字:socket 主机IP 主机上的进程(端口号)■ TCP传输文件 ■ 网络结构 ■ C/S结构…

高亮页面任意元素,轻松完成用户引导 | 开源日报 No.201

kamranahmedse/driver.js Stars: 20.1k License: MIT driver.js 是一个轻量级、无依赖的纯 JavaScript 引擎,用于引导用户在页面上聚焦。该项目解决了如何在网页上引导用户关注核心要素的问题。 简单易用:没有任何外部依赖轻量级:仅有 5kb …

中间件 | RPC - [Dubbo]

INDEX 1 Dubbo 与 web 容器的关系2 注册发现流程3 服务配置3.1 注册方式 & 订阅方式3.2 服务导出3.3 配置参数 4 底层技术4.1 Dubbo 的 spi 机制4.2 Dubbo 的线程池4.3 Dubbo 的负载均衡策略4.3 Dubbo 的协议 1 Dubbo 与 web 容器的关系 dubbo 本质上是一个 RPC 框架&…

SpringCloud Stream 消息驱动

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第九篇,即介绍 Stream 消息驱动。 二、消息驱动概念 2.1 消息驱动是什么 官方定义 Spring …

学习通刷视频刷题脚本及安装使用过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装插件二、复制脚本文件链接三、启动脚本四、登录学习通(切记一倍速就行不然被封哦)五、最好先把答题关掉先刷视频 前言 解决学习…

AI技术崛起:数据可视化之路更近

在当今AI技术蓬勃发展的时代,数据可视化作为信息传达的重要手段,其门槛逐渐降低。然而,这并不意味着我们可以忽视学习数据可视化的重要性。即使不需要深入专业技术,对数据可视化的基础知识的了解也是至关重要的。那么,…

02-Java变量和运算符

1. 基本数据类型转换(Conversion) 在Java程序中,不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换,基本数据类型转换有两种转换方式:自动类型转换和强制类型转换。boolean…

Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo

概述 在互联网领域,每个信息资源都有统一的且在网上唯一的地址,该地址就叫 URL(Uniform Resource Locator,统一资源定位符),它是互联网的统一资源定位标志,也就是指网络地址。 URL 本质上就是…

【C++从练气到飞升】03---构造函数和析构函数

🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书。 目录 ⛳️推荐 一、类的6个默认成员函数 二、构造函数 1. 构造函数的概念 2. 构造函数的定义 3. 构造函数的特性 三、析构函…