当前位置:网站首页>CPU设计实战-第四章实践任务三用前递技术解决相关引发的冲突
CPU设计实战-第四章实践任务三用前递技术解决相关引发的冲突
2022-07-05 14:31:00 【小威程序员】
用前递技术解决数据相关引发的冲突
前言
实践任务三是在实践任务二的基础上进行修改的!!!
在lab4的实验环境下,增加相应代码用前递技术解决相关引发的冲突,最后使得仿真时间相比实践任务二更少。
实验
1.添加将执行级、访存级或者写回级的数据前递到译码级的数据通路
在译码级判断当前时刻处于执行级、访存级或者写回级的指令的目的操作数的寄存器号是否与译码级源操作数的寄存器号是否相同后,表示已经发生了数据相关,需要将执行级、访存级或者写回级的数据前递到译码级。代码如下:
EXE_stage:
output [31:0] EXE_result, //执行级
assign EXE_result = es_alu_result;
MEM_stage:
output [31:0] MEM_result
assign MEM_result = ms_final_result;
WB_stage:
output [31:0] WB_result
assign WB_result = ws_final_result;
ID_stage:
input [31:0] EXE_result,
input [31:0] MEM_result,
input [31:0] WB_result,
在mycpu_top相应模块的实例化中添加对应的信号:
//实例化所用线路声明
wire [31:0] EXE_result;
wire [31:0] MEM_result;
wire [31:0] WB_result;
ID_stage:
.EXE_result (EXE_result),
.MEM_result (MEM_result),
.WB_result (WB_result)
EXE_stage:
.EXE_result (EXE_result)
MEM_stage:
.MEM_result (MEM_result)
WB_stage:
.WB_result (WB_result)
2.判断需要前递的是执行级、访存级还是写回级的数据
我们在译码级得到了当前时刻处于执行级、访存级和写回级的指令需要最终写回到寄存器的目的操作数后,接下来就要产生相应的逻辑来判断需要前递的是执行级、访存级还是写回级的数据。在译码级修改的代码如下:
//删除
/* assign rs_value = rf_rdata1; assign rt_value = rf_rdata2; */
//添加-begin
assign rs_value = rs_wait ? (rs == EXE_dest ? EXE_result :
rs == MEM_dest ? MEM_result : WB_result)
: rf_rdata1;
assign rt_value = rt_wait ? (rt == EXE_dest ? EXE_result :
rt == MEM_dest ? MEM_result : WB_result)
: rf_rdata2;
assign ds_ready_go = ds_valid & ~load_stall;
//load_stall在实践任务二就已经添加,表示第i条指令是load指令,第i+1条指令
//和load指令发生数据相关,此时需要前递的数据还未准备好,需要流水线暂停。
//添加-end
实验结果
仿真结果:
launch_simulation: Time (s): cpu = 00:00:05 ; elapsed = 00:00:12 . Memory (MB): peak = 958.809 ; gain = 0.000
过测试:
----PASS!!!
run: Time (s): cpu = 00:00:18 ; elapsed = 00:00:16 . Memory (MB): peak = 958.809 ; gain = 0.000
边栏推荐
- R語言ggplot2可視化:可視化折線圖、使用theme函數中的legend.position參數自定義圖例的比特置
- ASP. Net large takeout ordering system source code (PC version + mobile version + merchant version)
- Judge whether the variable is an array
- Is the securities account given by the head teacher of qiniu school safe? Can I open an account?
- Which Internet companies are worth going to in Shenzhen for software testers [Special Edition for software testers]
- Time to calculate cron expression based on cronsequencegenerator
- Principle and performance analysis of lepton lossless compression
- How to deeply understand the design idea of "finite state machine"?
- Niuke: intercepting missiles
- Countermeasures of enterprise supply chain management system in UCA Era
猜你喜欢
World Environment Day | Chow Tai Fook serves wholeheartedly to promote carbon reduction and environmental protection
PHP - fatal error: allowed memory size of 314572800 bytes exhausted
区间 - 左闭右开
SaaS multi tenant solution for FMCG industry to build digital marketing competitiveness of the whole industry chain
循环不变式
Share 20 strange JS expressions and see how many correct answers you can get
LeetCode_ 2 (add two numbers)
黑马程序员-软件测试-10阶段2-linux和数据库-44-57为什么学习数据库,数据库分类关系型数据库的说明Navicat操作数据的说明,Navicat操作数据库连接说明,Navicat的基本使用,
Principle and performance analysis of lepton lossless compression
Which Internet companies are worth going to in Shenzhen for software testers [Special Edition for software testers]
随机推荐
LeetCode_ 67 (binary sum)
leetcode:881. lifeboat
Thymeleaf 模板的创建与使用
【学习笔记】图的连通性与回路
R语言使用nnet包的multinom函数构建无序多分类logistic回归模型、使用coef函数获取模型中每个变量(自变量改变一个单位)对应的对数优势比(log odds ratio)
R language ggplot2 visualization: gganimate package is based on Transition_ The time function creates dynamic scatter animation (GIF) and uses shadow_ Mark function adds static scatter diagram as anim
Redis如何实现多可用区?
Make the seckill Carnival more leisurely: the database behind the promotion (Part 2)
How to call the function mode of one hand and one machine
[summary of leetcode weekly competition] the 81st fortnight competition of leetcode (6.25)
Webrtc learning (II)
Shen Ziyu, nouveau Président de Meizu: M. Huang Zhang, fondateur de Meizu, agira comme conseiller stratégique pour les produits scientifiques et technologiques de Meizu
The forked VM terminated without saying properly goodbye
Online electronic component purchasing Mall: break the problem of information asymmetry in the purchasing process, and enable enterprises to effectively coordinate management
注意!软件供应链安全挑战持续升级
Thymeleaf 常用函數
What about SSL certificate errors? Solutions to common SSL certificate errors in browsers
leetcode:881. 救生艇
R语言ggplot2可视化:gganimate包基于transition_time函数创建动态散点图动画(gif)、使用shadow_mark函数为动画添加静态散点图作为动画背景
LeetCode_ 3 (longest substring without repeated characters)