408五级流水线强化课笔记

news/2024/9/19 20:56:54/文章来源:https://www.cnblogs.com/CauchyPt/p/18416270

408强化课录播五级流水线相关内容笔记

  • 指令流水线基本概念:简单的概念题
  • 指令流水线基本实现:指令按序发射,按序完成
  • 各种冒险:结合MIPS指令序列分析并处理冒险
  • 超标量和动态流水线:简单的概念题

五级流水线

五级流水线的设计是为了通过并行提高处理器的吞吐量。
img
图片来自CSAPP。
一个指令通常被划分为五个阶段:

  • 取指(IF)
  • 译码(ID)
  • 执行(EX)
  • 访存(MEM)(如果需要的话)
  • 写回(WB)(如果需要的话)
    总体的图如下
    image

结构冒险(考的少)

一个被请求的资源仍处于忙碌状态。

多个阶段可能请求同一份资源,例如IF和MEM需要同一块Cache,就会发生结构冒险。
解决方法有:

  • 阻塞指令
  • 把指令Cache和数据Cache分离

数据冒险

需要等待上一个指令完成数据读写。

img
如上图所示,因为指令I1对寄存器R1的写操作发生在WB写回阶段,因此指令I2在ID译码阶段需要读寄存器时,R1的值还没有被写回,这就是数据冒险。
核心特点:两条指令,先写后读同一个寄存器。如果某条指令写了一个寄存器,则要观察后面三条指令是否读了这个寄存器。(个人感觉可能画图更直观)
img
解决方案:

  • 硬件阻塞:将读寄存器的指令ID段阻塞若干时钟,直到写寄存器的指令完成WB。
  • 转发(旁路)技术:将写寄存器的数据直接转发给读寄存器的指令。但转发旁路不能解决Load指令写寄存器引发的Load-Use数据冒险。

Load-Use数据冒险

Load指令把数据从内存读到寄存器,后面的指令需要用到这个寄存器的值。这种情况下,即使使用转发技术也无法解决数据冒险。
img

控制冒险

一些控制取决于上一条指令的结果。

img
转移类指令会更改PC,因此下一条指令不是I2而是其他,会产生控制冒险。
解决方案:

  • 硬件阻塞:将转移类指令后一条指令IF段阻塞3时钟

冒险总结

img

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

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

相关文章

关键字检索分析-案例2:开源代码分析

第一次拿来分析一下开源代码,上效果图代码和文件地址 具体内容参考我前面一篇博客 spring-frameworkredis, redis单个文件非常大mybatis我实话我没有看过这些源码。 之前的博客里的脚本,bug挺多的。可以以gitee这里为主(链接在最上面)。

小林coding学习笔记(进程调度算法)

//进程调度算法 进程调度算法是CPU通过进程调度算法决定某个时刻去调用哪个进程到CPU上运行的算法 1、先来先服务调度算法 每次从就绪队列的队头调度到CPU上运行,直到进程退出或被阻塞,才会继续从队列中调度进程运行。 特点:对短作业不利,对长作业有利,无法平衡短作业与长…

spring mvc详细讲解(前后端分离模式)

在前后端分离模式下,Spring MVC 的作用主要集中在处理后端的业务逻辑和 API 接口,而不再直接管理视图部分。也就是说,Spring MVC 的重点是如何处理客户端的请求并返回数据(通常以 JSON 或 XML 格式),而视图渲染交给前端框架(如 Vue.js、React 等)来完成。 下面是针对前…

关于API淘宝数据接口

在当今数字化商业时代,淘宝作为全球领先的电商平台,提供了丰富的API接口,使开发者能够高效地获取和管理电商数据。淘宝API接口不仅简化了与淘宝平台的交互,还为商家提供了强大的数据支持,帮助他们更好地分析市场趋势、优化店铺运营、提升用户体验。 淘宝API接口概述 淘宝A…

解决 Debian下 nvm ls-remote 列表只出现iojs版本的问题

1.进入 .bashrc 里vi ~/.bashrc2. o键新开一行增加下面内容export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist 3.重载nvm配置source ~/.bashrc4.验证配置是否修改成功,如图则表示成功echo $NVM_NODEJS_ORG_MIRROR 5.再次查看可安装的node版本nvm ls-remote 备注:如果上…

解决 nvm ls-remote 列表只出现iojs版本的问题

1.进入 .bashrc 里vi ~/.bashrc2. o键新开一行增加下面内容export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist 3.重载nvm配置source ~/.bashrc4.验证配置是否修改成功,如图则表示成功echo $NVM_NODEJS_ORG_MIRROR 5.再次查看可安装的node版本nvm ls-remote

Arrays类的使用

1.Arrays 在IDEA中有一个叫Arrays的类,它可以执行数组的一系列操作 2.Arrays.toString 该代码用于执行数组的打印,因为数组的打印用sout并不能输出出来(数组面向于对象),所以得用该代码输出3.Arrays.sort 将数组的数字从小到大排序4.Arrays.fill 将数组中的数字用其他数字…

跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例

在数字化时代,地理信息系统(GIS)技术正以其独特的空间分析和可视化能力,为游戏产业带来革命性的变革。《黑神话:悟空》作为中国首款3A级别的动作角色扮演游戏,不仅在游戏设计和技术上取得了突破,更在商业模式上展现了跨界融合的新路径。 1. GIS技术在游戏设计中的应用《…

如何在windows中设置系统代理

1.左下角搜索设置或直接搜索代理 2.Gemini后台复制需要访问的那个设备IP 3.windows上设置代理 4.使用提示 1.不用的时候清取消此代理,避免你的网络都走此代理; 2.要走你本地电脑的网络的话,可以加上方的忽视操作少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一…

常回家看看之house_of_cat

house_of_cat 前言: house of cat 这个利用手法和前面提到的 house of kiwi ,和 house of emma 利用的手法是一个链子,当程序无法通过main函数返回时候,或者程序不能显性调用exit函数的时候,我们可以通过 __malloc_assert 来刷新IO流,当然这个函数在2.35之后移除了刷新IO…

mysql-v8.x设置权限可以远程访问

PS:mysql-v8.4.2不支持原先的权限修改方式了,需要先创建再分配才行mysql -u root -p #先登录 SELECT user,host FROM mysql.user; #看下当前的权限 CREATE USER your_name@% IDENTIFIED BY your_password; #需要创建用户 grant all privileges on *.* to your_name@%; #分配权…

04: 代理模式

代理模式是一种对象结构型模式,在该模式中引入了一个代理对象,在客户端和目标访问对象之间起到中介的作用。代理对象可以屏蔽或删除客户不想访问的内容和服务,也可以根据客户需求增加新的内容和服务1. 案例: B帮助A追求C 2. 代理模式结构 - Subject(抽象主题角色): 声明了…