




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告课程名称:计算机系统的结构实验学院:计算机科学与工程学院专家:计算机科学和技术指导教师:好老师学生名:喜欢学习的小学生66实验成绩:日期: 2017年5月19日电子科技大学计算机学院实验中心电子科技大学实验报告一、实验项目名称:解决数据风险二、实验室名称:主楼A2-412实验时间: 2017年5月19日三、实验目的根据给定的流水线代码,增加内推数据路径、暂停流水线数据路径和写使能信号的数据路径,解决常规数据和load数据风险,完成本次实验,充分理解、掌握和编程解决数据风险的原理四、实验原理(一)数据风险的定义;由于指令在流水线上重复执行,因此用于原始串行执行的读取/写入操作的顺序改变以致于不能获得依赖于指令结果的指令的数据的现象被称为数据风险(与数据相关)。回顾资料风险的程式范例I1: add r1、r2、r3I2: sub r4、r1、r5I3:与r 6、r7、r1I4: or r8、r1、r9I5: addi r10、r1,100I1下方有3个指令无法从寄存器r1读取正确的数据。(二)数据风险的解决办法;1 .暂停管线如上图所示,从暂停管线到执行第一个指令可以解决数据风险,但存在两个问题:“检测数据风险”和“暂停管线”。如何检测数据风险?a .比较器I-1命令写入寄存器rd、I-2和I-3的源操作数是寄存器rs1或rs2的数据,并且仅当I-2和I-3的rs1或rs2与I-1的目的地寄存器号rd相等时,才可能出现数据风险。b .操作码参与检查在指令格式中,源寄存器号rs2部分地与即时数重叠,但由于即时数不具有风险,因此指令操作码必须参与检测(将寄存器操作数或即时数区分开)。c.WREG信号也要参加检查(实际上,WREG也是从操作码中得到的)。怎样才能暂停管线?暂停条件判断电路uninstall的输入是OPCODE、ID_rsl、ID_rs2、EXE_rd、EXE_WREG、MEM_rd、MEM_WREG。 输出为DEPEN。阻止该命令影响的方法是将DEPEN和解码器的输出Decoder_WZ、Decoder_WMEM和Decoder_WREG相位传递到ID级别和EXE级别之间的流水线寄存器的输入端。因为只有这些写入信号改变处理器和存储器的状态,所以不需要阻塞ALUOP和多路复用器等其他选择信号。阻止后续的命令的方法是禁止向IR和PC写入新数据,即将DEPEN连接至IR和PC的允许写入侧WIR和WPC。 当这两个信号为0时,禁止向IR和PC写入人员数据。2 .内部推动技术数据相关的本质:执行指令时使用上述指令的计算结果,但此结果尚未写入寄存器堆栈。 实质上,通过ALU计算此时的结果,并存在于流水线寄存器r和c中。因此,可以在ALU的两个数据输入端添加多路复用器,使r和c的数据直接传送到ALU的输入端。 这是所谓的内部前锋。与检测数据相关的完整信号如下所示exe _ a _ depen=(id _ rs1=exe _ rd ) (exe _ wreg=1) (id _ rs1 is reg )exe _ b _ depen=(id _ rs2=exe _ rd ) (exe _ wreg=1) (id _ rs2 is reg )(id _ rd=exe _ rd ) (exe _ wref=1) (存储)mem _ a _ depen=(id _ rs1=mem _ rd ) (mem _ wreg=1) (id _ rs1 is reg )mem _ b _ depen=(id _ rs2=mem _ rd ) (mem _ wreg=1) (id _ rs2 is reg )(id _ rd=mem _ rd ) (mem _ wref=1) (存储)id _ rs1 is reg=andandiororiaddisubiloadstoreID_rs2IsReg=and or add sub(exe_wreg=1)exe电平的指令更新寄存器,表示尚未取消(ID_rs1IsReg )条件是为了确认不是立即随机数而是寄存器EXE_rd表示EXE类的流水线目标寄存器rdDEPEN=A_DEPEN B_DEPENA_DEPEN=EXE_A_DEPEN MEM_A_DEPENB_DEPEN=EXE_B_DEPEN MEM_B_DEPEN(load指令处理暂时停止与内部推动的结合。当ALU命令在EXE电平终止时,结果出现在流水线寄存器r中,并且可以将后续命令直接用于内部推送电路。有例外load r 1,200 (r2)add r3、r1、r4;load命令在EXE级别退出后仍然可以访问内存。 MEM电平结束后,结果出现在流水线寄存器d中,请参照下图。 在这种情况下,使用内推技术也不能消除load命令和下一个相关命令之间的第一个“气泡”。我们有责任检测硬件与load指令的关联性。 为了保证操作结果的正确性,采用暂停流水线一个循环的方法。 第二个“气泡”用内部推动技术消除了。提供以下控制信号表达式以实现load管线暂停: 此信号发生在ID级别,使用类似于暂停ALU管线的方法加载深度=exe _ a _ depen exe _ b _ depenexe _ a _ depen=(id _ rs1=exe _ rd ) (exe _ SLD=1) (id _ rs1 is reg )exe _ b _ depen=(id _ rs2=exe _ rd ) (exe _ SLD=1) (id _ rs2 is reg )(id _ rd=exe _ rd ) (exe _ SLD=1) (存储)id _ rs1 is reg=andandiororiaddisubiloadstoreID_rs2IsReg=and or add sub其中,EXE_SLD=1表示WB电平复用器选择了中间寄存器d的值.EXE_SLD表示EXE级别为load命令。 可替代地,可将经翻译的load指令输入到流水线寄存器中,并供使用而非EXE_SLD。五、实验内容根据给定流水线代码,添加内推数据路径,暂停流水线数据路径,关闭写使能信号的数据路径,解决正常数据和load数据风险。六、实验器材(设备、部件)ISE Design Suite 14.7集成开发环境,编程语言: Verilog HDL硬件描述语言七、实验程序(1)制作项目的DataHazardAndForwarding(2)导入原始工程文件(3)在3)pipelinenedcpu中添加以下变量wire 1:0 idadepend,idbdepend; /id类a、b dependwire 1:0 扩展,扩展; /exe类,b dependwire wpc; /写电脑需要两个a、bdepend值,因为必须保存depend值才能解决数据风险wpc用于暂停管线,实现load风险时暂停指令的保留、寄存器的写入和mem的写入(4)为了实现数据路径,需要在以下模块的参数列表中追加参数.添加的代码如下所示pipepc prog_cnt (npc、clock、resetn、pc、wpc) /程序计数器PC/* * * * *pipeir inst_reg (pc4,ins,clock,resetn,dpc4,inst,wpc) /IF级和ID级之间的寄存器,即命令寄存器IR/*pipeID id_stage (dpc4,inst,/命令解码id级别wrn、wdi、wwreg、clock、resetnbpc,jpc,PC源,dwreg,dm2reg,dwmemdaluc,daluimm,da,db,dimm,drn,dshift,djal,z,ern,mrn,ewreg,mwreg,idadepend,idbdepend,em2reg,wpc;pipeedrede_reg(dwreg,dm2reg,dwmem,daluc,daluimm,da,db,dimm,drn,dshift,djal,dp4,clock,resetn,ewreg,em2reg,ewmem,ealuc,ealuimm,ea,eb,eimm,埃尔恩0,eshift,ejal,epc4idadepend,idbdepend,exeadepend,exebdepend,PC源; /ID电平和EXE电平之间的寄存器pipeEXE exe_stage (ealuc,ealuimm,ea,eb,eimm,eshift,ern0,epc4,/指令执行exe层级ejal、ern、ealu、zmalu,wmo,exeadepend,exebdepend;(在id_stage的cu中添加判断冒险的代码,计算a_depend和b_depend的值。 cu的完整代码如下所示模块化pipeidcu (rsrtequ、func )op,wreg,m2reg,wmem,aluc,regrt,aluimmsext、pcsource、shift、jal/*要在数据之前添加的参数*/exe_rd,mem_rd,exe_wreg,mem_wreg,idadepend,idbdepend,rs,rt,rd,exe_m2reg,wpc;input 4:0 exe_rd,mem_rd,rs,rt,rd;输入exe_m2reg,mem_wreg,exe_m2reg;output 1:0 idadepend,idbdepend;输出WPC;/是否写/wreg寄存器/dm2reg为1时将存储数据写入寄存器,否则将ALU结果写入寄存器/dwmem为1时写入内存,否则不写入如果/daluimm为1,则ALUb输入端使用即时计数/dshift为1时,ALUa输入端使用移位位数/如果jal为1,则执行jal指令。 否则不执行输入rsrtequ;input 5:0 func,op;output wreg,m2reg,wmem,regrt,aluimm,sext,shift,jal;output 4:0 aluc;output 1:0 PC源;wire i_add,i_sub,i_mul,i_and,i_or,i_xor,i_sll,i_srl,i_sra,i_jr; /解码命令wire i_addi,i_muli,i_andi,i_ori,i_xori,i_lw,i_sw,i_beq,i_bne,i_lui,i_j,i_jal;and(i_add、op5、op4、op3、op2、op1、op0、func2、func1、func0 ) .and(i_sub、op5、op4、op3、op2、op1、op0、func2、func1、func0 ) .and(i_mul、op5、op4、op3、op2、op1、op0、func2、func1、func0 ) .and(i_and,op5、op4、op3、op2、op1、op0、func2、func1、func0 ) .and(i_or、op5、op4、op3、op2、op1、op0、func2、func1、func0 ) .and(i_xor、op5、op4、op3、op2、op1、op0、func2、func1、func0 ) .and(i_sra、op5、op4、op3、op2、op1、op0、fun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区规划与绿色建筑
- 工业废水处理技术与设备更新
- 工业废水处理技术进展汇报
- 工业废物处理与资源化利用研究
- 工业机器人技术及其产业发展趋势
- 工业自动化系统的日常运行与维护
- 工业自动化技术的未来发展方向预测研究
- 工业设计在产品创新中的重要性
- 285应急管理制度
- 标书制作中心管理制度
- 《陶行知教育名篇》读书笔记
- 2023年江苏省盐城市大丰区部分事业单位招聘专职安监人员8人(共500题)笔试必备质量检测、历年高频考点模拟试题含答案解析
- EXCEL常用函数的教程课件
- 湖北省武汉市江汉区2022-2023学年三年级下学期期末数学试卷
- 井下变电所检修高爆开关施工安全技术措施
- 广东省广州市白云区2022-2023学年数学六年级第二学期期末质量检测试题含解析
- 医疗设备、医用耗材管理制度培训讲座
- 导游基础知识(中职)全套PPT教学课件
- 魅力台州优质获奖课件
- ZZ028 中职法律实务赛项赛题-2023年全国职业院校技能大赛拟设赛项赛题完整版(10套)
- 电动剪刀式升降车作业风险辨识及控制措施清单
评论
0/150
提交评论