五级经典流水线执行

时间统计

forwarding策略:

来自EX/MEM 和 MEM/EX 流水线寄存器的ALU结果总是被反馈回ALU的输入端

也就是,下一条指令,直接可以从上一条指令的EX中获得数据

但是,forwarding算法并不是完美的

它需要停顿的数据冒险:

LD/LW 的数据要在MEM结束以后才能将数据传给下一个指令的ALU(即EX环节)

所以载入指令需要增加一种称为流水线互锁 , 以保持正确的执行模式

流水线互锁检测冒险 , 并在该冒险被清除之前使流水线停顿

每个时钟周期只能添加一条指令

关于指令类型:

本实验提供的指令序列文件,不包含跳转指令,只涉及到ALU指令和load/store指令,Trace中会出现的指令类型主要是如下的几种:

ALU类型:DADD, DSUB, AND, OR, XOR

Load/store类型:LD, SD, LW, SW

模拟器正确性的验证:

trace4.txt:

DADD R2, R3, R1
DSUB R4,, R2, R1
LW   R7, 0(R1)
DADD R6, R5,, R7
XOR   R5, R6, R4
AND  R3, R5, R2
AND  R3, R5, R2

注意点:

1、只有当LD/LW 的 目的操作数 , 作为下一条指令的元操作数时 , 才会发生停顿!!!!

2、每个始终周期只能执行一条指令

这也是为什么,最后一条指令要往后再退一格

代码:

#include#include #include #include #include #include using namespace std; int main() { string buffer; string str[4]; string temp = "normal"; int index = 0;//判断是否 int num = 0; ifstream in("trace4.txt"); if (! in.is_open()) { cout << "Error opening file"; exit (1); } //初始 num = 4; while (!in.eof() ) { //每执行一条指令至少多一个cycle num++; //cout << buffer << endl; getline空格也算一个字符 getline(in, buffer);/*要用#include */ int s = 0, i; istringstream stream(buffer); stream >> str[0] >> str[1] >> str[2] >> str[3]; //一个字符串一个字符串地取出 //去掉逗号 size_t found; for(i=1 ; i<4 ; i++){ found = str[i].find(','); while(found != string::npos){ str[i] = str[i].erase(found,1); found = str[i].find(','); } } //去掉括号,去掉多余的数字 if(str[0] == "LD" || str[0] == "LW" || str[0] == "SD" || str[0] == "SW") str[2] = str[2].substr(str[2].find("(")+1 ,str[2].find(")")-str[2].find("(")-1); //输出检验 //cout << str[0] << str[1] << str[2] << str[3] << endl; //如果是Load的时候,做标记,因为只有在lod的时候会导致 , 整个流水线出现停顿的情况 if(str[0] == "LD" || str[0] == "LW"){ temp = str[1]; } else{ if(temp == "normal") continue; else{ //只有当上一个是LD / LW ,且LD / LW 的下一条命令中 , 有上一条命令的目的操作数时 //会对下一条命令产生影响,否则不会 if(str[0] == "SD" || str[0] == "SW"){ if(str[1] == temp || str[2] == temp ) num++; temp = "normal"; }else{ if(str[1] == temp || str[2] == temp || str[3] == temp) num++; temp = "normal"; } } } } cout << "num of cycles =" << num << endl; return 0; } 

五级经典流水线执行 时间统计相关推荐

  1. CPU指令的流水线执行

    指令集是CPU体系架构的重要组成部分.C语言的语法是对解决现实问题的运算和流程的方法的高度概况和抽象,其主要为算术.逻辑运算和分支控制,而指令集就是对这些抽象的具体支持,汇编只不过是为了让开发人员更好 ...

  2. 如何计算k段流水线执行n条指令的执行时间

    来源:http://blog.sina.com.cn/s/blog_4ec38d4f01007uw2.html 计算k段流水线执行n条指令的执行时间,有必要区分两种情况: 如果流水线中的各段执行时间均 ...

  3. 计算k段流水线执行n条指令的执行时间

    计算k段流水线执行n条指令的执行时间,有必要区分两种情况: 如果流水线中的各段执行时间均为t,那么执行n条指令的时间就是执行第一条指令的时间kt,加上其余n-1条指令各执行一段的时间(n-1)t. 如 ...

  4. 【Unity3D】Unity 游戏画面帧更新 ( 游戏帧相关概念 | MonoBehaviour#Update() 帧更新方法 | 帧更新时间统计 | 设置游戏更新帧率 )

    文章目录 一. 游戏帧相关概念 二. MonoBehaviour#Update() 帧更新方法 三. 帧更新时间统计 四. 设置游戏更新帧率 一. 游戏帧相关概念 游戏画面由 连续的 帧 Frame ...

  5. mysql统计数据的代码_MySQL按时间统计数据的方法介绍(代码示例)

    本篇文章给大家带来的内容是关于MySQL按时间统计数据的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做数据库的统计时,经常会需要根据年.月.日来统计数据,然 ...

  6. 统计通话次数和时间的软件_通话时间统计app下载|通话时间统计安卓版下载 v1.0.3 - 跑跑车安卓网...

    这是一款通话记录APP,用户可通过该软件来查看电话未接来电.通话时长等信息,十分便捷好用,有需要的快来下载使用吧! 软件介绍 本程序用于通话记录.时长显示.分类统计.时段统计等参考. 想知道最近你跟某 ...

  7. android 屏幕统计,OffScreen - 屏幕时间统计

    编辑点评 你康康你今天又玩了多少次手机! OffScreen - 屏幕时间统计 介绍 OffScreen - 屏幕时间统计 日常生活中,大多数人有轻微甚至严重的「手机依赖症」,我们无时无刻盯着手机,不 ...

  8. android 打卡统计日历表,GitHub - lw1243925457/clickApp: 一个日常事务打卡和统计的APP,用于日常任务记录、任务所需时间记录、任务花费时间统计显示...

    目标打卡APP 时间管理类型APP,目前功能较少,有基本的目标清单.目标花费时间记录.花费时间统计展示 右侧release已发布编译好的安装包,可进行下载 有需要的小伙伴,可以自行拉取进行自己的特定需 ...

  9. 计算机英语词汇频率统计,托福英语语法经典词汇与频率统计

    托福英语语法经典词汇与频率统计 英语词汇一直是困绕许多考生的难题,我们用尽了种种办法,但还是记了忘,忘了记,记得当时我的一位室友非常爱统计规律,他把历年的考题总结归类,总结出几十个单词,告诉我们考试的 ...

最新文章

  1. 百度echarts使用
  2. Java Programming Test Question 3
  3. 期末Java面向对象程序设计复习稳过不挂指南(更新中)
  4. 下载和安装Nginx之添加Nginx作为系统服务(CentOS7为例)
  5. 计算机操作系统实验一,计算机操作系统实验一.doc
  6. linux终端的背景_如何在终端显示图像缩略图 | Linux 中国
  7. GDALSetProjection使用的一个注意事项
  8. HDU 4651 Partition(整数拆分)
  9. HDU 6188:Duizi and Shunzi(贪心)(广西邀请赛)
  10. c花体复制_能复制的花体英文字母
  11. history linux 位置,Linux基础知识之history的详细说明
  12. 学生用计算机计算分数,Excel案例(十三)——学生计算机成绩表
  13. 2022年9月电子学会Python等级考试试卷(五级)答案解析
  14. 315晚会实在涨知识
  15. 苹果开放降级通道_苹果出手,关闭降级系统iOS13验证,iOS14再也回不去了!
  16. aliexpress商品详情API接口(速卖通商品详情页面数据接口)
  17. pfx格式是什么文件
  18. linux打开文件夹
  19. “无穷大”与“老鼠会”
  20. VC获取系统空闲时间

热门文章

  1. 计算机中找不到u盘怎么办,电脑无法找到u盘如何解决
  2. iphone文件访问Windows共享文件夹
  3. realme真我X7和X7Pro的区别 哪个好
  4. mac上免token一键登录跳板机
  5. [项目管理]项目经理应该做什么——全程建模绩效管理办法执行中出现的偏差之二
  6. 计算机网络二进制反码求和校验算法
  7. axios 拦截器封装
  8. 双目立体视觉建立深度图_双目立体视觉技术的实现及其发展
  9. CF 758A Holiday Of Equality
  10. Licode Docker映像