计算机体系结构实验——Branch-Target Buffers

实验五 Branch-Target Buffers

本次实验的主要目的是加深对Branch-Target Buffers的理解。掌握使用Branch-Target Buffers减少或增加分支带来的延迟的情况。

实验内容: 将以下程序段修改为可利用WinMIPS64模拟器运行的程序。假设R3的初始值为R2+40
在这里插入图片描述

在使用forwarding的情况下,对比采用BTB与不采用BTB技术时流水线的变化。重点分析两种情况下每次循环的stall周期数,都是由什么原因造成的?重点分析与分支指令相关的stall。采用BTB技术时何时能够减少分支指令带来的暂停?何时会增加暂停?为什么?

实验报告:

将程序段3修改为WinMIPS64模拟器可以运行的程序如下:

.text
main:
DADDI R3,R2,40;Loop: LW R1,0(R2)DADDI R1,R1,1SW R1,0(R2)DADDI R2,R2,4DSUB R4,R3,R2BNEZ R4,Loop
end: halt

在使用forwarding,不使用BTB技术的情况下造成的暂停以及原因介绍如下:

数据相关:

1、由于LW指令取数放入R1中在Mem阶段才能到内存中取到数值,而下一条指令需要使用到R1寄存器的数值,存在RAW相关会造成一个周期的暂停

在这里插入图片描述

2、由于DSUB那条指令最后要将结果写到R4中并且在EX阶段结束后才能获得存放到R4中的数值,而跳转指令需要在ID阶段判断是否要跳转,所以会产生RAW相关,暂停一个周期

在这里插入图片描述

控制相关:

3、由下图红框中的指令可以看出,它在处理跳转指令的时候采用的是预测转移失败的行为,但在实际指令运行过程中,指令成功转移,所以会清空流水线,重新取指令,造成一个周期的暂停

在这里插入图片描述

在使用forwarding技术,并且使用BTB技术的情况下造成的暂停以及原因介绍如下:

数据相关:

由于在这种情况下所产生的数据相关与不使用BTB的情况下的数据相关相同,所以不再加以介绍

结构相关:

1、在第一次循环结束时,由于BTB表为空,预测为转移失败,但实际转移成功。所以在ex段执行中会将转移指令地址连同下一条指令的pc值放入BTB中,并且清空流水线,重新取指执行,造成两个周期的暂停。

在这里插入图片描述

2、在第二次循环以及后续的八次循环中,由于该条跳转指令在IF段会查找BTB表,并且会在表中查到对应的指令的地址,所以会预测转移成功,并且将转移地址放入PC中,因此不存在结构相关,不会造成暂停。

在这里插入图片描述

3、在最后一次循环时,由于BTB表中存在对应跳转指令的地址,所以会预测转移成功,但实际上会转移失败,所以会在转移指令的EX阶段中删除BTB表中对应的表项,同时在ex阶段执行结束后会清空流水线重新取指来运行,造成两个周期的暂停。

在这里插入图片描述

由以上可以发现在:

预测正确的时候可以减少暂停:跳转指令在IF阶段会查找BTB表,如果查找到会将下一条指令的地址放入PC寄存器中。如果预测正确则可以在下一个周期就开始下一条指令的取指阶段,而不需要等待跳转指令的ID段执行结束才能执行下一条指令的取指阶段。

预测错误时会增加暂停:由上述程序第一个阶段和最后一个可以看到,如果预测失败,不仅要清空流水线还要修改BTB表中存储的指令地址以及下一条指令的PC值,会造成两个周期的暂停。

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

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

相关文章

业务逻辑漏洞有哪些?漏洞攻击防御及代码示例

文章目录 简介危害成因攻击防御代码示例1. 未经验证的重要操作2. 认证绕过3. 逻辑时间窗口漏洞4. 负载测试漏洞 修复 业务逻辑漏洞是指软件或系统的逻辑设计上的缺陷,这些缺陷可能被攻击者利用,从而导致意料之外的行为。下面是对业务逻辑漏洞的简介、危害…

基于 FFmpeg 的跨平台视频播放器简明教程(十二):Android SurfaceView 显示图片和播放视频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

【LeetCode:2866. 美丽塔 II | 单调栈 + 前后缀数组】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

flink watermark 实例分析

WATERMARK 定义了表的事件时间属性,其形式为: WATERMARK FOR rowtime_column_name AS watermark_strategy_expression rowtime_column_name 把一个现有的列定义为一个为表标记事件时间的属性。该列的类型必须为 TIMESTAMP(3)/TIMESTAMP_LTZ(3),且是 sche…

2023年12月GESP认证图形化编程四级真题试卷

2023年12月GESP认证Scratch图形化等级考试(四级)真题试卷 题目总数:27 总分数:100 选择题 第 1 题 单选题 现代计算机是指电子计算机,它所基于的是( )体系结构 A. 艾伦图灵 B. …

Valentina Studio Pro for Mac:高效数据库管理工具

作为一款强大而高效的数据库管理工具,Valentina Studio Pro for Mac在Mac平台上的表现无疑是令人印象深刻的。无论您是初学者还是专业数据库管理员,Valentina Studio Pro都能够满足您的需要,并提供一流的工具和功能来简化数据库管理的过程。 …

KBU808-ASEMI适配高端电源KBU808

编辑:ll KBU808-ASEMI适配高端电源KBU808 型号:KBU808 品牌:ASEMI 封装:KBU-4 最大平均正向电流:8A 最大重复峰值反向电压:800V 产品引线数量:4 产品内部芯片个数:4 产品内…

Docker 编译OpenHarmony 4.0 release

一、背景介绍 1.1、环境配置 编译环境:Ubuntu 20.04OpenHarmony版本:4.0 release平台设备:RK3568 OpenHarmony 3.2更新至OpenHarmony 4.0后,公司服务器无法编译通过,总是在最后几十个文件时报错,错误码4000&#xf…

C#电源串口调试

目的 记录串口调试的遇到的一些问题以及相应的解决方法 1.串口定义:串口是计算机与其他硬件传输数据的通道,在计算机与外设通信时起到重要作用 2.串口通信的基础知识 C#中的串口通信类 C#使用串口通信类是SerialPort(),该类使用方法是 new 一个 SerialPort对象 为S…

【C语言】自定义类型:结构体深入解析(二)结构体内存对齐宏offsetof计算偏移量结构体传参

文章目录 📝前言🌠 结构体内存对齐🌉内存对齐包含结构体的计算🌠宏offsetof计算偏移量🌉为什么存在内存对⻬?🌠 结构体传参🚩总结 📝前言 本小节,我们学习结构的内存对…

R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

cli_abort(message,...,call .envir,.envir parent.frame(),.frame .envir ) 先从那些不需要下大力气理解的参数入手: 参数【.envir】:进行万能表达式编译的环境。 参数【.frame】:抛出上下文。默认用于参数【.trace_bottom】&#xff…

Redis实现日榜|直播间榜单|排行榜|Redis实现日榜01

前言 直播间贡献榜是一种常见的直播平台功能,用于展示观众在直播过程中的贡献情况。它可以根据观众的互动行为和贡献值进行排名,并实时更新,以鼓励观众积极参与直播活动。 在直播间贡献榜中,每个观众都有一个对应的贡献值&#…

力扣日记12.21【二叉树篇】98. 验证二叉搜索树

力扣日记:【二叉树篇】98. 验证二叉搜索树 日期:2023.12.21 参考:代码随想录、力扣 98. 验证二叉搜索树 题目描述 难度:中等 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义…

啥?你还不道数据库?赶紧进来看吧!

操作系统: windows:win10、win11、win7、windows Server2016 Linux/Unix :红帽(RedHat)、Bebian、SUSE MacOS Linux系统:CantOS(yum、dnf)、Ubuntu(apt、apt—get&am…

Ubuntu 常用命令之 df 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 在Ubuntu系统下,df命令是用来查看文件系统的磁盘空间占用情况的。df是disk free的缩写,这个命令可以获取硬盘被占用了多少空间,还有多少空间是可用的,硬盘的挂载点等信息。 df命令的…

【Python】matplotlib画图_饼状图

柱状图主要使用pie()函数,基本格式如下: plt.pie(x,explodeNone,labelsNone,colorsNone,autopctsNone,pctdistance0.6,shadowFalse,labeldistance1.1,staatangleNone,radiusNone,counterclockTrue,wedgepropsNone,textpropsNone,center(0,0),frameFalse…

PIC单片机项目(7)——基于PIC16F877A的智能灯光设计

1.功能设计 使用PIC16F877A单片机,检测环境关照,当光照比阈值低的时候,开灯。光照阈值可以通过按键进行设置,同时阈值可以保存在EEPROM中,断电不丢失。使用LCD1602进行显示,第一行显示测到的实时光照强度&a…

代码随想录算法训练营Day7 | 344.反转字符串、541.反转字符串||、替换数字、151.反转字符串中的单词、右旋字符串

LeetCode 344 反转字符串 本题思路:反转字符串比较简单,定义两个指针,一个 i 0, 一个 j s.length-1。然后定义一个临时变量 tmp,进行交换 s[i] 和 s[j]。 class Solution {public void reverseString(char[] s) {int i 0;int …

华为二层交换机与防火墙配置实例

二层交换机与防火墙对接上网配置示例 组网图形 图1 二层交换机与防火墙对接上网组网图 二层交换机简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 二层交换机简介 二层交换机指的是仅能够进行二层转发,不能进行三层转发的交换机。也就是说仅支持二层…

OceanMind海睿思入选中国信通院首批“高质量智能审计工具目录”,获多项认证

近日,由中国信息通信研究院(以下简称“中国信通院”)、中国通信标准化协会支持的“2023 GOLF IT新治理领导力论坛”在北京顺利举行。 中新赛克海睿思作为国内领先的审计数字化代表企业受邀参会。 在内部审计数字化转型走深向实以及智能化演进…