计算机体系结构基础知识介绍之硬件预测(二)

news2024/10/7 9:49:45

一、ROB详述

指令执行的四个步骤是:

  • 发射(Issue):从指令队列中获取一条指令。如果有空闲的保留站和ROB条目,就发射指令;如果寄存器或ROB中有可用的操作数,就发送操作数到保留站。更新控制字段来表示缓冲区正在使用。为结果分配的ROB条目号也发送到保留站,以便在结果放到公共数据总线(CDB)时用来标记结果。如果所有保留站或ROB都满了,就暂停指令发射,直到两者都有可用条目。
  • 执行(Execute):如果一个或多个操作数还没有准备好,就监视CDB,等待寄存器被计算出来。这一步检查RAW(读后写)冒险。当两个操作数都在保留站中可用时,执行操作。指令可能在这一阶段花费多个时钟周期,并且加载仍然需要在这一阶段分两步完成。存储只需要在这一步有基址寄存器,因为存储在这一点的执行只是有效地址计算。
  • 写结果(Write result):当结果可用时,将结果写到CDB(带有发射时发送的ROB标记)和从CDB到ROB,以及任何等待这个结果的保留站。标记保留站为可用。存储指令需要特殊处理。如果要存储的值已经可用,就将它写入对应存储指令的ROB条目的值字段。如果要存储的值还没有准备好,就必须监视CDB,直到该值被广播,在此时更新存储指令的ROB条目的值字段。为了简单起见,我们假设这发生在存储指令的写结果阶段;我们稍后讨论放宽这个要求。
  • 提交(Commit):这是完成指令的最后阶段,在此之后只剩下它的结果。(有些处理器称这个提交阶段为“完成”或“毕业”。)根据提交指令是一个错误预测的分支、一个存储还是其他任何指令(正常提交),提交时有三种不同的操作序列。正常提交情况发生在当一个指令到达ROB头部并且其结果在缓冲区中存在时;此时,处理器用结果更新寄存器,并从ROB中移除指令。提交一个存储类似,只是更新内存而不是结果寄存器。当一个错误预测的分支到达ROB头部时,它表明推测是错误的。ROB被清空,并且在分支正确后继处重新开始执行。如果分支被正确预测,分支就完成了。

一旦一个指令提交,它在ROB中的条目被回收,并且更新寄存器或内存目标,消除了对ROB条目的需要。如果ROB填满了,我们只需停止发射指令,直到有一个条目被释放。

假设浮点功能单元的延迟与前面的示例相同:加法为 2 个时钟周期,乘法为 6 个时钟周期,除法为 12 个时钟周期。 使用以下代码段显示当 fmul.d 准备好提交时状态表的样子。

 

 

请注意,虽然 fsub.d 指令已完成执行,但直到 fmul.d 提交后它才会提交。 保留站和寄存器状态字段包含与 Tomasulo 算法相同的基本信息。 不同之处在于Qj和Qk字段以及寄存器状态字段中的保留站号被替换为ROB条目号,并且我们在保留站中添加了Dest字段。 Dest字段指定ROB条目,该条目是由该保留站条目产生的结果的目的地。 

由于在指令提交之前寄存器值和任何内存值都不会被实际写入,因此当发现分支预测错误时,处理器可以轻松撤消其推测操作。当分支之前的指令到达 ROB 的头部时,将简单地提交;当分支到达该缓冲区的头部时,缓冲区被简单地清除,并且处理器开始从另一条路径获取指令。

在实践中,推测的处理器会在分支预测错误后尝试尽早恢复。 可以通过清除 ROB 中出现在错误预测分支之后的所有条目、允许 ROB 中分支之前的条目继续、并在正确的分支后继处重新启动提取来完成此恢复。 在推测处理器中,性能对分支预测更加敏感,因为错误预测的影响会更大。 因此,处理分支的所有方面,预测准确性、错误预测检测的延迟和错误预测恢复时间的重要性都增加了。

异常的处理方式是在准备好提交之前不识别异常。 如果推测的指令引发异常,则该异常将记录在 ROB 中。 如果出现分支预测错误并且指令不应该被执行,则当 ROB 被清除时,异常将与指令一起刷新。 如果指令到达 ROB 的头部,那么我们就知道它不再是推测的,并且应该真正采取异常。 

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

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

相关文章

gigachad1靶机详解

gigachad_vh靶机详解 扫描到ip后对ip做一个全面扫描,发现有一个匿名服务器,是可以免密登陆的。 登陆上后发现就一个文件,get到我们电脑上。 file一下发现是一个zip文件,unzip解压一下,发现给了一个用户名chad&#xf…

ESP32设备驱动-直流电机与L298N电机驱动器

直流电机与L298N电机驱动器 文章目录 直流电机与L298N电机驱动器1、L298N介绍2、硬件准备3、软件准备4、驱动实现在本文中,我们将介绍如何使用ESP32通过L298N电机驱动器驱动直流电机。 1、L298N介绍 L298N 电机驱动器模块非常易于与微控制器一起使用,而且相对便宜。 它被广泛…

基于springboot的微信小程序宠物领养医院系统(源代码+数据库+10000字论文)085

基于springboot的微信小程序宠物领养医院系统(源代码数据库10000字论文)085 一、系统介绍 本项目有网页版和小程序端 本系统分为管理员、医生、用户三种角色 用户角色包含以下功能: 登录、注册、宠物领养、医生在线咨询、查看挂号、个人中心、密码修改、宠物寄…

HTTP第18讲——HTTP的缓存控制

诞生背景 由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高。所以,非常有必要把“来之不易”的数据缓存起来,下次再请求的时候尽可能地复用。这样,就可以避免多次请求 - 应答的通信成本,节…

测试工程师简历编写指南,送简历模板

目录 概述 简历元素 1. 基础信息 2. 个人情况 3. 教育背景 4.专业技能 5.工作经历&项目经 6. 自我评价&兴趣爱好 7. 其他内容 总结: 概述 在人才市场中,一次完整的求职过程通常包括以下阶段: 简历筛选电话面试笔试面谈意向…

Linux信号机制-3

转自:深入理解Linux内核——signals | linkthinking 信号很早就在 unix 系统中出现了,它用于用户进程之间的交互,几十年以来,变化都不大。信号是一个发送给进程或者进程组的消息,它只是一个数字,没有参数或…

spring AOP中pointcut表达式详解

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

纹理过滤方式

纹理坐标不依赖于分辨率,opengl需要知道如何将纹理像素映射到纹理坐标。 纹理像素和纹理坐标的区别: 纹理像素是有限的。 纹理坐标的精度是无限的,可以是任意的浮点值。 一个像素需要一个颜色。 因此,所谓采样就是通过纹理坐标获取…

图像处理之图像灰度化

图像灰度化 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万 (255255255)的颜色的变化范用。而灰度图像是R、G、B三个分量相同的一种特…

分析 jsjiami.v6 代码混淆和加密技术:特点、优点和缺点

当涉及到 JavaScript 代码混淆和加密技术时,开发人员常常寻求方法来保护他们的代码免受逆向工程和未授权访问的威胁。这种技术可以增加代码的复杂性,使其难以理解和修改,同时也可以隐藏关键信息和保护数据的安全性。本文将探讨 JavaScript 代…

echarts在vue上使用模版可粘贴!!!一站式搞定以及动态数据渲染关键问题解决(附带模版)

阿丹: 之前的项目中涉及到echarts都是使用jsp写的,但是现在越来普及vue。所以使用在vue上使用echarts就成了问题。 导入相关依赖 在官网上面有说明npm安装Echarts依赖 在vue中使用Echarts 上模版!!!!!!!!!!!!使用了mounted()这个…

在使用yum时报错Loaded plugins: fastestmirror

在使用yum时报错Loaded plugins: fastestmirror 在我安装更高版本的gcc编译器时,发现了这个问题 意思是加载插件,加载后面两个插件,查阅得知其中fastestmirror是yum的一个加速插件,这个提示意思是这个插件不能使用,那么就先把他禁…

4 款非常好用的AI生成图片软件

AI生成图片最近是越来越火了,越来越多的AI生成图片工具上线。 本文就给你推荐4款非常好用的AI生成图片工具,避免你碰雷。 即时灵感 「即时灵感」是通过文字描述等方式生成精致图像的AI绘图工具。输入文字,即可将创意变为现实! …

centos7升级openssh修复安全漏洞

查看linux版本 cat /etc/redhat-releaseCentOS Linux release 7.9.2009 (Core) 升级 yum update openssh -y升级openssl和openssh 下载openssl https://ftp.openssl.org/source/ 下载openssh http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ yum update openssh…

盘点spring-boot-3-jwt-security中如何使用jwt+security

目录 SecurityApplication类中 AuthenticationService register方法 authenticate方法 saveUserToken略 revokeAllUserTokens方法 refreshToken方法 ApplicationConfig Bean:UserDetailsService Bean:AuthenticationProvider Bean&#xff1a…

浅谈智能集成电力电容器的应用意义

安科瑞 华楠 摘要:该文通过智能集成电力电容器研发背景的说明,介绍该产品基于数字信号处理器(DSP)和单片机相结合的双CPU技术智能无功补偿技术,集成复合开关的过零投切与计算机智能网络模块技术,实现了现代…

语音信号的采集--电脑录音

准备条件: 1.电脑麦克风打开。(联想小新AIR2021 打开方式:点击电脑右下角“电源”,点击“麦克风打开”) 2.打开电脑自带的录音机。(电脑界面搜索框中键入“录音机”) 3.打开音乐播放软件&…

【JavaEE】Linux基本使用

Linux基本使用 文章目录 【JavaEE】Linux基本使用1. 如何获取一个Linux的环境2. 终端软件来远程登录3. Linux基本使用3.1 命令提示符3.2 ls3.3 cd3.4 pwd3.5 touch3.6 cat3.7 man3.8 echo3.9 vim3.9.1 打开文件3.9.2 编辑文件3.9.3 保存退出3.9.4 vimtutor 3.10 mkdir3.11 rm3.…

【设计模式】23种设计模式——单例模式(原理讲解+应用场景介绍+案例介绍+Java代码实现)

单例模式(Singleton) 介绍 所谓类的单例设计模式,就是采取一定的方法,保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的Sessio…

UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(三)SG_CopyPointsWithHierarchy

继续解析《Electric Dreams》项目中的自定义节点和子图:SG_CopyPointsWithHierarchy和PostCopyPoints-OffsetIndices 文章目录 前导文章标准组合拳SG_CopyPointsWithHierarchyPostCopyPoints-OffsetIndices使用情景Execute with ContextIteration Loop Body 小结 前…