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

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

👋作者简介:一个正在积极探索的本科生
📱联系方式: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条指令的分析周期时间
    在这里插入图片描述

📙相关处理

📖数相关

🔖主存空间数相关

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

🔖通用寄存器数相关

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

📖指令相关

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

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

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

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

相关文章

不可变集合

2. 3. 如果键值对超过10个的话 优化之后 要生成不可变的集合直接使用copyof就可以

Python XML处理实战指南:从基础到高级技巧

Python XML处理实战指南:从基础到高级技巧 介绍XML基础XML的定义和特点XML结构组成命名空间(Namespaces)小结 Python中处理XML的库ElementTreeminidomlxml 使用ElementTree解析XML读取XML文件遍历XML元素查找特定元素修改XML文件 使用lxml处理…

除了「au revoir」,「再见」还能怎么说?柯桥成人学外语来银泰附近

1. Je dois y alle#15857575376r I have to go there Y there,意思是“我要走了”。 例如,”Moi, je dois y aller.” 对不起,我该走了。 如果你和同伴都要离开,那就可以说"On y va",它相当于英语里…

C#集合和数据结构,随笔记录

C#集合和数据结构 System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表/链表、位数组、哈希表、队列和堆栈)的集合 System.Collections.Generic命名空间: 所有集合都直接或间接基于ICollection接口 列表类集…

Redis数据结构对象(一)

对象 概述 Redis并没有直接使用简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、 哈希对象、集合对象和有序集合对象这五种类型…

Cesium 获取 3dtileset的包围盒各顶点坐标

Cesium 获取 3dtileset的包围盒各顶点坐标 /*** 获取 3dtileset的包围盒各顶点坐标, z 方向取高度最低的位置* param {*} tileset* param {*} options* returns* ref https://blog.csdn.net/STANDBYF/article/details/135012273* ref https://community.cesium.com/t/accurate-…

基于SpringBoot+Vue的IT博客管理系统

目录 一、绪论1.1 开发背景1.2 系统开发平台1.2.1 Java语言的简介1.2.2 MySQL的简介1.2.3 IntelliJ IDEA的简介 二、需求分析2.1 系统简介2.1.1 系统类型2.1.2 系统用法2.1.3 系统特点 2.2 需求分析2.2.1 系统设计任务2.2.2 系统设计目标2.2.3 系统设计步骤 三、系统设计3.1 用…

视频素材库大全高清素材必备网站,总有一个值得收藏!

喜欢制作短视频的朋友们,你们是否时常苦于寻找合适的视频素材库大全高清素材必备网站?今天,我为大家整理了五个超棒的短视频素材下载网站,希望能够为你们的视频创作提供更多灵感和选择! 1.蛙学网: 蛙学网不…

qt可以信号触发信号(信号与槽)信号串联

使用场景:一大堆lineEdit要更新数据上面10几个QLineEdit,z,只要任意改一个数据我都要把所有数据封装成一个包 connect(ui.radar_name_, &QLineEdit::textChanged, ui.antenna_height, &QLineEdit::textChanged); connect(ui.antenna_height, &a…

裸机编程的几种模式、架构与缺陷。

大多数嵌入式的初学者都是从单片机裸机编程开始的,对于初学者来说,裸机编程更加直观、简单,代码所见及所得,调试也非常方便,区别于使用操作系统需要先了解大量的操作系统基础知识,调度的基本常识&#xff0…

【JavaEE Spring 项目】消息队列的设计

消息队列的设计 一、消息队列的背景知识二、需求分析核心概念⼀个⽣产者, ⼀个消费者N 个⽣产者, N 个消费者Broker Server 中的相关概念核⼼ API交换机类型 (Exchange Type)持久化⽹络通信消息应答 三、 模块划分四、 项⽬创建五、创建核心类创建 Exchange创建 MSGQUeue创建 B…

C语言数据结构基础笔记——树、二叉树简介

1.树 树是一种 非线性 的数据结构,它是由 n ( n>0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 (图片来源于网络)…

计算机考研|王道四本书够吗?

如果你是跨考生,王道的四本书只能覆盖你需要的80% 如果你是计算机专业的考生,王道四本书可以覆盖你需要的90% 我已经说的很明显了,王道的内容覆盖不了408考研的全部大纲,有的知识点虽然在王道书上提到了,但是因为不是…

拿捏指针(二)

个人主页:秋邱博客 所属栏目:C语言 (感谢您的光临,您的光临蓬荜生辉) 目录 前言 数组与指针 数组名的理解 指针数组与数组指针 指针数组 数组指针 数组传参 一维数组传参的本质 二维数组传参的本质 二维数组…

【数据结构与算法】:选择排序与快速排序

🔥个人主页: Quitecoder 🔥专栏:数据结构与算法 我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:腾讯云 欢迎来到排序的第二个部分:选择排序与快速排序! 目录 1.选择排序1.…

【网站项目】325企业OA管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

SpringBoot启动后出现Please sign in页面

1. 问题 项目启动后&#xff0c;出现莫名其妙的页面&#xff0c;如下 2. 原因 当您启动 Spring Web 应用程序后出现 “Please sign in” 页面时&#xff0c;这通常是由于引用依赖Spring Security默认的身份验证方式导致的。 <dependency><groupId>org.springfr…

Element 选择季度组件

<template><el-dialogtitle"选择季度":show-close"false":close-on-click-modal"false":close-on-press-escape"false":visible"visiable"class"dialog list"append-to-body><div><div>&…

如何本地搭建hMailServer邮件服务

文章目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpola…

51单片机基础篇系列-定时/计数器的控制工作方式

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制&#xff0c;TMOD用于设置其工作方式&#xff1a; 1.工作方式寄存器TMOD 工作方式寄存器TMO…