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

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

👋作者简介:一个正在积极探索的本科生
📱联系方式: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,一经查实,立即删除!

相关文章

Python JSON 序列化以及反序列化 文件读写

Python JSON 序列化以及反序列化 JSON (JavaScript Object Notation) 是一种轻量级的文本数据存储格式。JSON 数据通常存储在字符串中,即JSON字符串,其实就是一字符串,只是带有一定的格式,可以被解析。本文使用的 Python 版本为3…

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

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

Redis中的缓存设计

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

mysql5.7离线安装 windows

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

力扣爆刷第95天之hot100五连刷61-65

力扣爆刷第95天之hot100五连刷61-65 文章目录 力扣爆刷第95天之hot100五连刷61-65一、131. 分割回文串二、51. N 皇后三、35. 搜索插入位置四、74. 搜索二维矩阵五、34. 在排序数组中查找元素的第一个和最后一个位置 一、131. 分割回文串 题目链接:https://leetcod…

工业制造企业能耗是怎么一回事

1.1 环境信息感知设备 当前,工业制造企业能耗监控使用的传感装置包含电量传感器、测温传感器、ESR型燃气传感器、温度隔离变送器以及水位计,用于多源环境信息的感知、采集与处理分析[1]。而射频识别(RadioFrequencyIDentification&#xff…

【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…

使用动态ip上网稳定吗?

随着互联网的普及,越来越多的用户开始关注网络隐私和安全。代理IP服务应运而生,为广大用户提供了一个有效的解决方案。许多用户在使用代理IP时可能会担心其稳定性问题,本文将为您详细解答。 一、什么是动态IP? 动态IP是指由DHCP…

CNN 论文及代码汇总,持续更新中~~

转载请注明作者和出处:http://blog.csdn.net/john_bh/ ** CNN 论文及代码汇总,持续更新中~~** 文章目录 1. Metrics2. Paper List2.1 Survey2.2 Papers20241. Metrics 2. Paper List 2.1 Survey XXXXX2.2 Papers 2024 PeLK: Parameter-efficient Large Kernel ConvNets …

【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 …

docker实战(2)

docker安装redis 一,搭建docker环境 二,docker安装redis 1,查看redis版本:docker search redis redis镜像仓库地址:Docker Hub 2,获取最新镜像版本:docker pull redis:latest 3&#xff0…

Vue3.0+vite vite.config.ts配置与env

目录 摘要 在项目中新项目前期可能需要配置各种来运行项目,以Vue3.0+vite来说明主要配置 正文 1.import.meta的理解 JavaScript中的一个特殊对象,它提供了有关当前模块的元数据信息。 2.env配置 访问evn命令 要获取环境变量,可以通过import.meta.env来访问。下面是一个…