计算机系统结构实验报告.docx

上传人:b****5 文档编号:7652000 上传时间:2023-01-25 格式:DOCX 页数:15 大小:468.59KB
下载 相关 举报
计算机系统结构实验报告.docx_第1页
第1页 / 共15页
计算机系统结构实验报告.docx_第2页
第2页 / 共15页
计算机系统结构实验报告.docx_第3页
第3页 / 共15页
计算机系统结构实验报告.docx_第4页
第4页 / 共15页
计算机系统结构实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机系统结构实验报告.docx

《计算机系统结构实验报告.docx》由会员分享,可在线阅读,更多相关《计算机系统结构实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

计算机系统结构实验报告.docx

计算机系统结构实验报告

计算机专业类课程

实验报告

课程名称:

计算机系统结构

学  院:

计算机科学与工程

专  业:

计算机科学与技术

学生姓名:

ZYZ(二木头)

学  号:

2014060103026

实验实在太烦了,发上来供学弟学妹们使用了

日  期:

 2017年06月04日

电子科技大学

实验报告

实验一

一、实验名称:

流水线代码分析

二、实验地点:

主楼A2-412

三、实验学时:

4

四、实验内容和目的:

1.列出代码中的模块名和接口信号,并写出他们的作用;

2.补全流水线的模块图:

a)在现有图的基础上,在对应模块的输入输出接口处补全端口的名字;

b)在现有图的基础上,补全未画出的模块和信号连线。

3.对补全的流水线模块图作必要的文字说明,解释其工作原理。

五、实验原理:

代码中的模块名和接口信号如下表所示:

模块和接口信号表

module

input(description)

output(description)

prog_cnt-pipepc

npc

pc

clk(时钟信号)

clrn(清零信号)

if_stage-pipeif

pcsource(选择下条指令)

npc

pc

pc4

bpc(转移指令)

ins

rpc

jpc

inst_reg-pipeir

pc4

dpc4

ins

inst

clk

clrn

id_stage-pipeid

dpc4

bpc

inst(二进制的指令序列)

jpc

wdi

a

wrn

b

wwreg

imm

clk

rn

clrn

aluc

rsrtequ

pcsource

wreg

m2reg

weme

aluimm

shift

jal

de_reg-pipedereg

da

ea

db

eb

dimm

eimm

dpc4

epc4

drn

ern

daluc

ealuc

dwreg

ewreg

dm2reg

em2reg

dwmem

ewmem

daluimm

ealuimm

dshift

eshift

djal

ejal

clk

clrn

exe_stage-pipeexe

ea

ealu

eb

ern

eimm

z

epc4

ern0

ealuc

ealuimm

eshift

ejal

em_reg-pipeemreg

ealu

malu(malu<=ealu)

eb

mb(mb<=eb)

ern

mrn(mrn<=ern)

ewreg

mwreg(mwreg<=ewreg)

em2reg

mm2reg(mm2reg<=em2reg)

ewmem

mwmen(mwmem<=ewmem)

clk

clrn

mem_stage–IP_RAM

datain

dataout

addr

clk

we

mw_reg-pipemwreg

malu

walu(walu<=malu)

mmo

wmo(wmo<=mmo)

mrn

wrn(wrn<=mrn)

mwreg

wwreg(wwreg<=mwreg)

mm2reg

wm2reg(wm2reg<=mm2reg)

clk

clrn

wb_stage–mux2x32

a0

y(y=s?

a1:

a0)

a1

s

流水线模块图

六、实验器材(设备、元器件)

ISEProjectNavigator

七、实验步骤:

1)根据课堂所学的五级流水线的结构,分析并理解代码含义;

2)根据代码中定义的各个模块的接口,补全流水线模块图相应接口的名称;

3)根据各个信号的输入输出,补全流水线模块图的连线。

八、实验数据及结果分析:

模块和接口信号表

指令依次执行。

九、实验结论、心得体会和改进建议:

今日之日多烦忧

实验二

一、实验名称:

汇编器的实现

二、实验地点:

主楼A2-412

三、实验学时:

4

四、实验内容和目的:

用Java,C或C++任一编程语言实现汇编器,输入流水线的指令序列,输出2进制编码。

该指令编码可复制到指令存储器中执行。

1.写出主要函数模块;

2.提供源代码和可执行文件;

五、实验原理:

(按实验内容分析实验原理并填写)

六、实验器材(设备、元器件)

DEVCPP

七、实验步骤:

欲穷千里目

八、实验数据及结果分析:

(按实验步骤顺序填写代码、数据或截图)

九、实验结论、心得体会和改进建议:

今日之日多烦忧

实验三

一、实验名称:

解决数据冒险

二、实验地点:

主楼A2-412

三、实验学时:

4

四、实验内容和目的:

在给出的流水线代码基础上,增加内部前推数据通路、暂停流水线数据通路和关闭写使能信号的数据通路以解决普通的数据冒险和load数据冒险。

1.画出修改后的流水线图;

2.写出增加的多路选择器的选择信号逻辑函数;

3.流水线仿真结果,对仿真结果作必要说明;

五、实验原理:

可以在ID级完成检测数据相关并把检测结果(多路器的选择信号ADEPEN两位和BDEPEN两位)作为控制信号打入流水线寄存器,在进入EXE级后立即开始ALU的操作。

六、实验器材(设备、元器件)

ISEProjectNavigator

七、实验步骤:

1)检测数据相关

在流水线ID级观察指令的寄存器字段,检测是否有“先读后写”冲突。

可以写出一条指令进入流水线ID级,检测与前面指令很可能有数据相关的基本条件。

由于指令格式中源寄存器号rd与立即数部分重叠,而立即数不会出现相关的,因此,指令操作码需要参与检测以区分是寄存器操作数还是立即数。

WREG信号也应参与检测以区分是写寄存器rd还是store指令中的rd,如果是store指令,也不会产生相关。

DEPEN=A_DEPEN+B_DEPEN

A_DEPEN=EXE_A_DEPEN+MEM_A_DEPEN

B_DEPEN=EXE_B_DEPEN+MEM_B_DEPEN

EXE_A_DEPEN=(ID_rs==EXE_rd)(EWREG==1)(ID_rsIsReg)

MEM_A_DEPEN=(ID_rs==MEM_rd)(MWREG==1)(ID_rsIsReg)

EXE_B_DEPEN=(ID_rt==EXE_rd)(EWREG==1)(ID_rtIsReg)

+(ID_rd==EXE_rd)(EWREG==1)

MEM_B_DEPEN=(ID_rt==MEM_rd)(MWREG==1)(ID_rtIsReg)

+(1D_rd==MEM_rd)(MWREG==1)

ID_rsIsReg=and+andi+or+ori+add+addi+sub+subi+load+store

ID_rtIsReg=and+or+add+sub

2)数据前推

在EXE级中,利用在ID级产生的信号A_DEPEN和B_DEPEN选择ALU输入端的操作数。

将流水线寄存器中计算完成的数据送到ALU输入端。

多路选择器

0

1

2

3

操作数来源

指令(无相关)

立即数

de_reg

em_reg

3)load相关的暂停

实现load流水线暂停的控制信号LOADDEPEN,这个信号是在ID级产生。

本实验指令集中,store取的是rs中的数据,不会与load相关。

LOADDEPEN=(ID_rs==EXE_rd)(em2reg==1)(ID_rsIsReg)+(ID_rt==EXE_rd)(em2reg==1)(ID_rtIsReg)

增加了检测数据相关和load相关的流水线

八、实验数据及结果分析:

在EXE级,根据ADEPEND和BDEPEND的信号,选择相应操作数:

modulepipeexe(ealuc,ADEPEND,BDEPEND,ea,eb,eimm,walu,malu,ern0,epc4,ejal,ern,ealu,z

);

input[31:

0]ea,eb,epc4,eimm,malu,walu;

input[1:

0]BDEPEND,ADEPEND;

input[4:

0]ern0;

input[4:

0]ealuc;

inputejal;

output[31:

0]ealu;

output[4:

0]ern;

wire[31:

0]alua,alub,ealu0,epc8,sa;

outputz;

assignsa={eimm[4:

0],eimm[31:

5]};//移位位数的生成

cla32ret_addr(epc4,32'h4,1'b0,epc8);//将PC+4再加4变成PC+8,供jal用

mux4x32alu_ina(ea,sa,malu,walu,ADEPEND,alua);//选择ALUa端的数据来源

mux4x32alu_inb(eb,eimm,malu,walu,BDEPEND,alub);//选择ALUa端的数据来源

mux2x32save_pc8(ealu0,epc8,ejal,ealu);//选择最后ALU结果的来源,ejal为0时是ALU内部算出的结果,为1时是PC+8

assignern=ern0|{5{ejal}};//当jal指令执行时,把返回地址写入31号寄存器

alual_unit(alua,alub,ealuc,ealu0,z);//ALU

endmodule

LOADDEPEN有效时,封锁相关信号:

modulepipepc(npc,LOADDEPEN,clk,clrn,pc

);

input[31:

0]npc;

inputclk,clrn,LOADDEPEN;

output[31:

0]pc;

dff32program_counter(npc,LOADDEPEN,clk,clrn,pc);//利用32位的D触发器实现PC

endmodule

modulepipeir(pc4,ins,LOADDEPEN,clk,clrn,dpc4,inst

);

input[31:

0]pc4,ins;

inputclk,clrn,LOADDEPEN;

output[31:

0]dpc4,inst;

dff32pc_plus4(pc4,LOADDEPEN,clk,clrn,dpc4);

dff32instruction(ins,LOADDEPEN,clk,clrn,inst);

endmodule

modulecla32(a,b,ci,s,co

);

input[31:

0]a,b;

inputci;

output[31:

0]s;

outputco;

wireg_out,p_out;

cla_32cla(a,b,ci,g_out,p_out,s);

assignco=g_out|p_out&ci;

endmodule

九、实验结论、心得体会和改进建议:

今日之日多烦忧

实验四

一、实验名称:

解决控制冒险

二、实验地点:

主楼A2-412

三、实验学时:

4

四、实验内容和目的:

在给出的流水线代码基础上,增加ID级关闭写使能信号,以解决不正确分支指令的影响。

1.画出修改后的流水线图;

2.写出增加的多路选择器的选择信号逻辑函数;

3.流水线仿真结果,对仿真结果作必要说明;

五、实验原理:

只要将branch的译码信号保留在流水线寄存器中,当紧接branch后的指令进入ID时,用这个译码信号封锁当前在ID阶段的那条指令的WZ、WMEM和WREG的信号,这样这条指令的执行就对程序的逻辑没有影响。

六、实验器材(设备、元器件)

ISEProjectNavigator

七、实验步骤:

将branch的译码信号保留在流水线寄存器中,当紧接branch后的指令进入ID时,用这个译码信号封锁当前在ID阶段的那条指令的WZ、WMEM和WREG的信号,这样这条指令的执行就对程序的逻辑没有影响。

八、实验数据及结果分析:

不改变处理器指令执行的效果,即不改变处理机的状态、寄存器堆和存储器的内容。

modulepipeemreg(ewreg,em2reg,ewmem,ealu,eb,ern,ez,B_WZ,clk,clrn,

mwreg,mm2reg,mwmem,malu,mb,mrn,mz

);

input[31:

0]ealu,eb;

input[4:

0]ern;

inputewreg,em2reg,ewmem,B_WZ,ez;

inputclk,clrn;

output[31:

0]malu,mb;

output[4:

0]mrn;

outputmwreg,mm2reg,mwmem,mz;

reg[31:

0]malu,mb;

reg[4:

0]mrn;

regmwreg,mm2reg,mwmem,mz;

always@(negedgeclrnorposedgeclk)

if(clrn==0)

begin

mwreg<=0;mm2reg<=0;

mwmem<=0;malu<=0;

mb<=0;mrn<=0;

mz<=0;

end

else

begin

if(B_WZ==0)

begin

mz<=ez;

end

mwreg<=ewreg;mm2reg<=em2reg;

mwmem<=ewmem;malu<=ealu;

mb<=eb;mrn<=ern;

end

endmodule

modulepipedereg(dwreg,dm2reg,dwmem,daluc,D_BDEPEND,da,db,dimm,drn,

D_ADEPEND,djal,dpc4,D_WZ,D_BTAKEN,clk,clrn,

ewreg,em2reg,ewmem,ealuc,E_BDEPEND,ea,eb,eimm,

ern,E_ADEPEND,ejal,epc4,E_WZ,DE_BTAKEN

);

input[31:

0]da,db,dimm,dpc4;

input[4:

0]drn;

input[4:

0]daluc;

input[1:

0]D_BDEPEND,D_ADEPEND;

inputdwreg,dm2reg,dwmem,djal,D_WZ,D_BTAKEN;

inputclk,clrn;

output[1:

0]E_BDEPEND,E_ADEPEND;

output[31:

0]ea,eb,eimm,epc4;

output[4:

0]ern;

output[4:

0]ealuc;

outputewreg,em2reg,ewmem,ejal,E_WZ,DE_BTAKEN;

reg[31:

0]ea,eb,eimm,epc4;

reg[4:

0]ern;

reg[4:

0]ealuc;

reg[1:

0]E_BDEPEND,E_ADEPEND;

regewreg,em2reg,ewmem,ejal,E_WZ,DE_BTAKEN;

always@(negedgeclrnorposedgeclk)

if(clrn==0)

begin

ewreg<=0;em2reg<=0;

ewmem<=0;ealuc<=0;

E_BDEPEND<=0;ea<=0;

eb<=0;eimm<=0;

ern<=0;E_ADEPEND<=0;

ejal<=0;epc4<=0;

E_WZ<=0;DE_BTAKEN<=0;

end

else

begin

ewreg<=dwreg;em2reg<=dm2reg;

ewmem<=dwmem;ealuc<=daluc;

E_BDEPEND<=D_BDEPEND;ea<=da;

eb<=db;eimm<=dimm;

ern<=drn;E_ADEPEND<=D_ADEPEND;

ejal<=djal;epc4<=dpc4;

E_WZ<=D_WZ;DE_BTAKEN<=D_BTAKEN;

end

endmodule

modulepipemwreg(mwreg,mm2reg,mmo,malu,mrn,clk,clrn,

wwreg,wm2reg,wmo,walu,wrn,B_WMEM

);

input[31:

0]malu,mmo;

input[4:

0]mrn;

inputmwreg,mm2reg,B_WMEM;

inputclk,clrn;

output[31:

0]walu,wmo;

output[4:

0]wrn;

outputwwreg,wm2reg;

reg[31:

0]walu,wmo;

reg[4:

0]wrn;

regwwreg,wm2reg;

always@(negedgeclrnorposedgeclk)

if(clrn==0)

begin

wwreg<=0;wm2reg<=0;wmo<=0;

walu<=0;wrn<=0;

end

else

begin

wwreg<=mwreg;wm2reg<=mm2reg;

wmo<=mmo;walu<=malu;

wrn<=mrn;

end

endmodule

九、实验结论、心得体会和改进建议:

今日之日多烦忧

 

报告评分:

指导教师签字:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1