数据冒险、控制冒险、结构冒险

计算机组成原理
数据冒险、控制冒险、结构冒险
275894f57be259ae2abf96707ea4189

95f956581cd6a31b98849959b62d277

对所有用户(所有程序员)可见:PSW、PC、通用寄存器

  • PSW(条件转移需要用到,程序员使用CMP指令的时候也需要用到所以是对用户可见)
  • PC(跳转指令需要使用PC+n ,所以对用户可见)
  • 通用寄存器(程序员写指令可以使用到通用寄存器R)
    • 通用寄存器:包括(数据寄存器、地址指针寄存器、变址寄存器)

对所有用户(所有程序员)透明:MAR,MDR,IR,Cache, 微程序结构和功能,控制存储器,锁存器/暂存器

  • (这些都是辅助CPU工作,所以是透明的)
  • 微指令寄存器属于微程序控制器的组成部分,它是硬件设计者的任务。
  • 控制存储器:存放微指令即控制信号
  • 锁存器/暂存器:流水线间存储数据
  • MAR:存储器地址寄存器
  • MDR:存储器数据寄存器

1.结构冒险

image-20241007180711371

结构冒险=结构冲突=资源冲突

image-20241007181613356

load指令是取数指令;Store指令是存数指令

运算类指令

算术运算指令

  1. 加法指令
    • 用于实现两个操作数的相加操作。例如在 RISC-V 指令集中有add指令,它可以将两个寄存器中的值相加,并将结果存放在一个寄存器中。
    • 格式可能为add rd, rs1, rs2,其中rd是目的寄存器,用于存放结果,rs1rs2是源寄存器,提供操作数。
  2. 减法指令
    • 实现两个操作数的相减操作。如sub指令,它从rs1寄存器的值中减去rs2寄存器的值,并将结果存放在rd寄存器中。
  3. 乘法指令
    • 完成两个操作数的乘法运算。不同的指令集可能有不同的乘法指令形式。例如,有些指令集可能有mul指令用于无符号数乘法,imul指令用于有符号数乘法等。
  4. 除法指令
    • 用于执行除法操作。像div指令用于无符号数除法,idiv指令用于有符号数除法。在执行除法指令时,通常会涉及到商和余数的处理。

逻辑运算指令

  1. 与指令
    • 实现按位与操作。例如and指令,它对rs1rs2寄存器中的对应位进行与操作,并将结果存放在rd寄存器中。
  2. 或指令
    • 执行按位或操作。如or指令,将rs1rs2寄存器中的对应位进行或操作,结果存于rd寄存器。
  3. 非指令
    • 也叫取反指令,对一个操作数的每一位进行取反操作。在一些指令集中可能有not指令来实现这个功能。
  4. 异或指令
    • 进行按位异或操作。例如xor指令,对rs1rs2寄存器中的对应位进行异或操作,结果放在rd寄存器中。

移位运算指令

  1. 逻辑左移指令
    • 将一个操作数的所有位向左移动指定的位数,右边空出的位用 0 填充。例如shl指令。
  2. 逻辑右移指令
    • 把一个操作数的所有位向右移动指定的位数,左边空出的位用 0 填充。比如shr指令。
  3. 算术右移指令
    • 对于有符号数,将其所有位向右移动指定的位数,左边空出的位用符号位填充。通常有sar指令来实现。

2.数据冒险的分析和处理

image-20241007215522119

3.控制冒险的分析和处理

注意:修改PC只在M阶段

image-20241007215829237

4.采用转发技术

6e49d171d5c4affb732ec96897257a5

Load-use:load指令在M(访存阶段才会产生结果),故采用转发旁路已经不能解决数据冒险。

image-20241127155848373

6cc7f81983778819f3f8c565ad63004

image-20241008210214469

image-20241008210232886

ca1113062707cde21fabff615e80d64

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

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

相关文章

基于32单片机的RS485综合土壤传感器检测土壤PH、氮磷钾的使用(超详细)

1-3为RS485综合土壤传感器的基本内容 4-5为基于STM32F103C8T6单片机使用RS485传感器检测土壤PH、氮磷钾并显示在OLED显示屏的相关配置内容 注意:本篇文件讲解使用的是PH、氮磷钾四合一RS485综合土壤传感器,但里面的讲解内容适配市面上的所有多合一的RS…

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情况下我们在开发系统的时候都是使用一个数据源,但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大,便会一个项目对应多个数据源…

Node.js教程入门第一课:环境安装

对于一个程序员来说,每学习一个新东西的时候,第一步基本上都是先进行环境的搭建! 从本章节开始让我们开始探索Node.js的世界吧! 什么是Node.js? 那么什么是Node.js呢?简单的说Node.js 就是运行在服务端的 JavaScript JavaScript…

vim优化

1.编辑如下内容&#xff1a; cat > /root/.vimrc <<EOF set tabstop2 " 设置 Tab 为 2 个空格 set shiftwidth2 " 设置自动缩进为 2 个空格 set expandtab " 将 Tab 转换为空格 " 基本设置 set number syntax on" 快捷键设置…

移动网络的原理

无线网络是如何解决移动通信问题的 场景&#xff1a;用户在一辆轿车内以150km/h的时速沿高速公路急速行驶时穿过多个无线接入网&#xff0c;用户希望在整个旅程中保持一个与远程应用的不间断的TCP连接。 解决方案&#xff1a;移动节点的间接路由选择方法可解决TCP链接不间断的…

python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入

【1】引言 前序学习过程中&#xff0c;我们偶然发现&#xff1a;如果原始图像是png格式&#xff0c;将其从BGR转向HSV&#xff0c;再从HSV转回BGR后&#xff0c;图像的效果要好于JPG格式。 文章链接为&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图…

java基础概念49-数据结构2

一、树 1-1、树的基本概念 1、树的节点 2、二叉树 3、树的高度 1-2、二叉查找树 普通二叉树没有规律&#xff0c;不方便查找&#xff0c;没什么作用。 1、基本概念 2、添加节点 此时&#xff0c;该方式添加形成的二叉查找树&#xff0c;根节点就是第一个节点。 3、查找节点 4…

12.12 枚举 共用体 数据结构 创建顺序表

1.思维导图 2. 创建顺序表 1>头文件 test.h #ifndef __TEST_H__ #define __TEST_H__#include<stdlib.h> #include<stdio.h> #include<string.h>#define MAX 30 //typedef int datatype;typedef struct sequence {int data[MAX];int len;}seqlist,*se…

如何对小型固定翼无人机进行最优的路径跟随控制?

控制架构 文章继续采用的是 ULTRA-Extra无人机&#xff0c;相关参数如下&#xff1a; 这里用于guidance law的无人机运动学模型为&#xff1a; { x ˙ p V a cos ⁡ γ cos ⁡ χ V w cos ⁡ γ w cos ⁡ χ w y ˙ p V a cos ⁡ γ sin ⁡ χ V w cos ⁡ γ w sin ⁡ χ…

【Flink-scala】DataStream编程模型之延迟数据处理

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之水位线 4.【Flink-scala】DataStream编程模型之窗口计算-触发器-…

2024告别培训班 数通、安全、云计算、云服务、存储、软考等1000G资源分享

大类有&#xff1a;软考初级 软考中级 软考高级 华为认证 华三认证&#xff1a; 软考初级&#xff1a; 信息处理技术员 程序员 网络管理员 软考中级&#xff1a; 信息安全工程师 信息系统监理师 信息系统管理工程师 嵌入式系统设计时 数据库系统工程师 电子商务设…

《操作系统 - 清华大学》8 -1:进程的组成

文章目录 1. 进程的组成2. 进程与程序的联系3. 进程与程序的区别4. 进程与程序关系 1. 进程的组成 进程具体包含哪些东西&#xff1a; 首先要执行相应的代码&#xff0c;所以执行代码需要放到内存中代码执行需要处理数据&#xff0c;数据需要放到内存中需要知道现在要执行哪条…

【Java】String类API

创建字符串 字符串字面量"Hello"高效&#xff0c;常量池复用常见、简单的字符串创建 new 关键字new String("Hello")每次创建新对象&#xff0c;性能开销较高显式创建新对象 字符数组new String(char[])转换字符数组字符数组转字符串 StringBuilder/St…

数据结构初阶---二叉树---堆

一、树 1.树的概念 树是一种非线性的数据结构&#xff0c;由n(n≥0)个有限结点组成的一个有层次关系的集合。形状类似一棵倒挂的树&#xff0c;根朝上&#xff0c;分支向下。 根结点没有前驱结点&#xff0c;可以有n(n≥0)个后继结点。 其余结点被分为M个互不相交的集合&am…

C语言 字符串输入输出函数、scanf(“%[^\n]“,)可输入空格 、fgets删除换行符

字符串输入函数&#xff1a; scanf&#xff08;"%s"&#xff0c;数组名&#xff09; gets&#xff08;数组名&#xff09; fgets&#xff08;&#xff09; --- 文件流输入函数 函数原型&#xff1a; int scanf( const char *format, ...…

深度学习camp-第J4周:ResNet与DenseNet结合探索

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 本周任务&#xff1a; 探索ResNet和DenseNet的结合可能性本周任务较难&#xff0c;我们在chatGPT的帮助下完成 一、网络的构建 设计一种结合 ResNet 和 Den…

「iOS」通过CoreLocation Framework深入了解MVC架构

「iOS」通过CoreLocation Framework重新了解多界面传值以及MVC架构 文章目录 「iOS」通过CoreLocation Framework重新了解多界面传值以及MVC架构前言CoreLocation了解根据需求建模设计属性方法设计协议传值Block传值KVONotification通知方式 总结参考文章 前言 在这个学期的前…

ArrayList源码分析、扩容机制面试题,数组和List的相互转换,ArrayList与LinkedList的区别

目录 1.java集合框架体系 2. 前置知识-数组 2.1 数组 2.1.1 定义&#xff1a; 2.1.2 数组如何获取其他元素的地址值&#xff1f;&#xff08;寻址公式&#xff09; 2.1.3 为什么数组索引从0开始呢&#xff1f;从1开始不行吗&#xff1f; 3. ArrayList 3.1 ArrayList和和…

【C++】- 掌握STL List类:带你探索双向链表的魅力

文章目录 前言&#xff1a;一.list的介绍及使用1. list的介绍2. list的使用2.1 list的构造2.2 list iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers2.6 list的迭代器失效 二.list的模拟实现1. list的节点2. list的成员变量3.list迭代器相关问题3.1…

Docker--Docker Container(容器) 之容器实战

对docker容器的前两篇文章 Docker–Docker Container(容器) 之 操作实例 Docker–Docker Container(容器&#xff09; Mysql容器化安装 我们可以先在Docker Hub上查看对应的Mysql镜像,拉取对应的镜像&#xff1a; 拉取mysql5.7版本的镜像&#xff1a; docker pull mysql:5.7…