《深入浅出计算机组成原理》学习笔记 Day17

news2024/10/8 15:31:49

冒险和预测(一)

    • 1. 结构冒险
    • 2. 数据冒险
    • 参考

1. 结构冒险

结构冒险本质上是一个硬件层面的资源竞争问题,也就是一个硬件电路层面的问题。

CPU 在同一个时钟周期内,同时在运行两条计算机指令的不同阶段,但这两个不同阶段可能会用到同样的硬件电路。

经典例子就是内存的数据访问。访存和取指令,都可能要进行内存数据的读取。而内存只有一个地址译码器作为地址输入,即只能在一个时钟周期内读取一条数据,没办法同时执行读取内存数据和读取指令代码。

解决方案:增加资源。对于访问内存数据和取指令的冲突,一个直观的解决方案就是把内存分成两部分,让它们各有各的地址译码器。这两部分分别是存放指令的程序内存存放数据的数据内存(哈佛架构)。

在这里插入图片描述
我们今天使用的 CPU,仍然是冯·诺依曼体系结构的,并没有把内存拆成程序内存和数据内存这两部分。因为如果那样拆的话,对程序指令和数据需要的内存空间,我们就没有办法根据实际的应用去动态分配了。虽然解决了资源冲突的问题,但是也失去了灵活性。

现代的 CPU 虽然没有在内存层面进行对应的拆分,却在 CPU 内部的高速缓存部分进行了区分,把高速缓存分成了指令缓存(Instruction Cache)和数据缓存(Data Cache)两部分。

2. 数据冒险

数据冒险分为三种依赖关系:

  1. 先写后读(Read After Write)。一般称为数据依赖,即前面的数据没有写入,后面不能读取数据。
  2. 写读后写(Write After Read)。一般称为反依赖,即前面的数据必须先被读取,如果先写会改变数据的一致性。
  3. 写后再读(Write After Write)。一般叫做输出依赖,即前面的数据必须更新完,后面才能读取新数据。

常用解决办法:
可以通过“等待”,也就是插入无效的 NOP 操作的方式,来解决冒险问题。这就是所谓的流水线停顿。流水线停顿这样的解决方案,是以牺牲 CPU 性能为代价的。因为,实际上在最差的情况下,流水线架构的 CPU 又会退化成单指令周期的 CPU 了。

参考

极客时间《深入浅出计算机组成原理》

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

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

相关文章

Github消息推送到Telegram,并使用Vercel部署

Github buibuibui Telegram 仓库地址:https://github.com/yesmore/gh-buibuibui-tg 借助 Github 的 Webhooks、Vercel’s Serverless API 和 Telegram Bot,连接 Github 和 Telegram,在 Telegram chat 中接收仓库的消息。 效果:你…

深入分析ConcurrentHashMap1.8的扩容实现

什么情况会触发扩容 当往hashMap中成功插入一个key/value节点时,有可能触发扩容动作: 1、如果新增节点之后,所在链表的元素个数达到了阈值 8,则会调用treeifyBin方法把链表转换成红黑树,不过在结构转换之前&#xff0…

做跨境电商日本市场,如何才能让客户满意?

跨境电商作为互联网技术的产物,现如今早就风靡全世界。我国跨境电商行业的发展起步时间比较晚,但在各方力量的加持下,行业的发展日趋完善,行业对国内经济的带动作用也更加明显。当下许多国潮品牌在Starday等跨境电商服务平台的支持…

如何选择研发效能管理平台?好用的研发效能管理平台有哪些

本文将对比介绍8款比较知名的效能度量管理平台:1.PingCode;2.思码逸;3.云效;4.金山云;5.Git;6.Jenkins;7.Bamboo;8.Docker。但在对比研发效能平台之前,我们先来聊一些研发…

Linux驱动开发基础__POLL机制

目录 1 适用场景 2 POLL机制的内核代码详解 2.1 sys_poll 函数 2.2 do_sys_poll 函数 2.3 do_poll函数 3 poll机制使用流程 4 驱动编程 5 应用编程 6 代码 6.1 gpio_key_drv.c 6.2 button_test.c 6.3 Makefile 可以看 字符设备驱动程序之poll机制 那篇文章中的机…

【认证相关】FTA

FTA 测试需要涉及的工作与流程测试大致流程及涉及的工作送测Lab 之前需做的准备工作项目与测试样机基本信息如下信息请填写发给MTK,以便MTK 了解基本的认证项目与产品信息PICS 相关MTK 会提供一份Chip 的default PICS,但是客户还需要自行修改一些项的Val…

分享154个ASP源码,总有一款适合您

ASP源码 分享154个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 154个ASP源码下载链接:https://pan.baidu.com/s/1Jt3X-WAZv-rZswzjwyEtSQ?pwdt46u 提取码&#x…

【C++初阶】七、STL---vector模拟实现

目录 一、模拟实现接口总览 1.1 接口总览 1.2 vector整体框架 1.3 vector成员变量介绍 二、vector模拟实现 2.1 构造函数 2.1.1 无参构造 2.1.2 迭代器区间构造 2.1.3 n个val构造 2.1.4 拷贝构造 2.2 赋值运算符重载 2.2.1 传统写法 2.2.2 现代写法 2.3 析构函数…

蓝桥杯刷题018——和与乘积(贪心)

2021国赛:和与乘积 题目描述 给定一个数列 ,问有多少个区间[L,R] 满足区间内元素的乘积等于他们的和,即 输入描述 输入第一行包含一个整数 n,表示数列的长度。 第二行包含 n 个整数,依次表示数列中的数 a1​,a2​,⋯,a…

【Vue】模板语法——文本插值

一、模板语法什么是模板语法Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。在底层机制中,Vue 会将模板编…

(十四)docker安装nacos

一、简介 操作系统:Linux CentOS 7.3 64位 docker版本:19.03.8 nacos版本:默认拉取最新版本 二、实践 1、拉取镜像 docker pull nacos/nacos-server 2、运行容器 docker run --name nacos -p 8848:8848 \ --privilegedtrue \ --restar…

二、什么是GStreamer

GStreamer是一个用于创建流媒体应用程序的框架。基本的设计来自俄勒冈研究生院的视频管道,还有一些来自DirectShow的想法。 GStreamer的开发框架使编写任何类型的流媒体应用程序成为可能。GStreamer框架旨在使编写处理音频或视频或两者同时处理的应用程序变得容易。…

01_学习springdoc的基本使用

文章目录1 什么是 springdoc ?2 springdoc 基本信息3 maven 依赖4 正文来袭4.1 给 Controller 加注解4.2 给 Model 加注解5 大功告成1 什么是 springdoc ? 网上冲浪🏄🏻‍♂️时,无意间发现 java web 应用程序的在线接口文档,除…

开源大数据分析平台的内容有什么?

在大数据时代,做好数据管理是非常重要的一个步骤。可以给企业做出正确的经营决策,指引新的发展方向。因此,随着数字化时代的到来,很多企业都倾向于寻找适宜的开源大数据分析平台,以此提升企业办公协作效率,…

【184】Win10下Java8调用Python的face_recognition库来实现人脸识别

前言 face_recognition 是一个开源的、人脸识别的Python库。本文讲解了在 Windows 10操作系统上,使用 Java8 来调用 Python 的 face_recognition 库来实现人脸识别。虽然 Java8 有 Jython,但是由于截至发文时 Jython 支持的版本太老(只有Pyt…

oracle——列表分页查询(原理)

文章目录前言数据表的准备分页sql1、简单分页实现2、排序分页3、排序优化前言 在平时的开发中,Oracle的分页查询用的特别多,接下来不止是说使用,更讲分页sql写法的原理。 数据表的准备 创建一张数据表,并填充大量的数据。 cre…

大数据技术架构(组件)12——Hive:判断函数

1.4.6、判断函数1.4.6.1、ifselect if(11,a,b),if(12,a,b) ;1.4.6.2、isnullselect isnull(1),isnull(null);1.4.6.3、isnotnullselect isnotnull(1),isnotnull(null);1.4.6.4、nvlselect nvl(1,1),nvl(null,1);1.4.6.5、coalesceselect coalesce(1,null,2,3,null,4,null),coal…

感谢第三弹 | 开启地铁国产化浪潮 GBASE获多方城市“地下动脉”肯定

岁末年初,GBASE收到了来自深圳地铁、高新现代智能系统股份有限公司、深圳达实智能股份有限公司等客户及合作伙伴发来的荣誉证书及感谢信。作为亲密无间的战友,GBASE携手高新现代、达实智能在深圳地铁CLC、ACC、AFC多个条线项目中通力合作,助力…

背包问题学习

01背包 01背包(0-1 Knapsack Problem) 有NNN件物品和一个容量为VVV的背包。放入第iii件物品耗费的费用是CiC_iCi​,得到的价值为WiW_iWi​。求解将哪些物品装入背包可以使价值总和最大 设F[i,v]F\left[i,v\right]F[i,v]表示前iii件物品敲好放入一个容量…

软件防错设计

出现非预期错误的原因解决方案原理介绍断根原理原理:将可能造成人错误的原因/条件从根本上排除断绝掉。通过冗余设计,屏蔽掉其中9种错误的方式;案例:USB的SD卡防写开关。4种可能性断根设计为只有1种可能是正确的。软件设计&#x…