计算机组成原理实验报告硬设Word文档格式.docx

上传人:b****0 文档编号:13918186 上传时间:2022-10-15 格式:DOCX 页数:45 大小:258.55KB
下载 相关 举报
计算机组成原理实验报告硬设Word文档格式.docx_第1页
第1页 / 共45页
计算机组成原理实验报告硬设Word文档格式.docx_第2页
第2页 / 共45页
计算机组成原理实验报告硬设Word文档格式.docx_第3页
第3页 / 共45页
计算机组成原理实验报告硬设Word文档格式.docx_第4页
第4页 / 共45页
计算机组成原理实验报告硬设Word文档格式.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

计算机组成原理实验报告硬设Word文档格式.docx

《计算机组成原理实验报告硬设Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验报告硬设Word文档格式.docx(45页珍藏版)》请在冰豆网上搜索。

计算机组成原理实验报告硬设Word文档格式.docx

2.额外设计要求

时间允许的情况下,进行一些额外的、探索性的改造,可用于加分。

例如,

(1)利用TEC-CA平台上的16位RAM来存放8位的指令和数据;

(2)实现一条JRS指令,以便在符号标志位S=1时跳转。

需要改写ID段的控制信息,并改写IF段;

(3)实现一条CMPJDR,SR,offset指令,当比较的两个数相等时,跳转到目标地址PC+1+offset;

(4)可以探索从外部输入指令,而不是初始化时将指令“写死”在RAM中;

(5)此5段流水模块之间,并没有明显地加上流水寄存器,可以考虑在不同模块间加上流水寄存器;

(6)探索5段流水带cache的CPU的设计。

各组亦可根据实际情况来做一些创新性的探索,酌情加分。

1.3实验设备

本课程综合设计中,需要用到的实验设备如下:

1.PC两台;

2.TEC-CA硬件实验箱一个;

3.QuartusII软件平台一个;

4.DebugController软件一个;

5.JTAG连接线。

1.4主要成果

实现5级流水无cache的8位实验CPU,16条简单的命令执行,输出确认无误。

2.8位无Cache的5段流水CPU总体设计

2.1指令系统的设计(注:

要给出指令功能、指令格式、指令列表)

constantADD:

std_logic_vector(3downto0):

="

0000"

;

//加法

constantSUBB:

0001"

//减法

constantANDins:

0011"

//与

constantMOV:

0010"

//赋值

constantLOAD:

1000"

//load指令

constantSTORE:

1010"

//store指令

constantLOADH:

1011"

//高位load指令

constantLOADL:

1001"

//低位load指令

constantJR:

0100"

//跳转

constantJRZ:

0111"

//Z==1跳转

constantNOP:

1100"

//空操作

constantMOVI:

1101"

//

constantNOPIns:

std_logic_vector(7downto0):

11000000"

2.2数据通路的设计(注:

可参考16位CPU,然后指出变为8位时,作了哪些修改)

一、数据通路图

图1无cache五级流水线数据通路示意图

整个CPU由下边几个模块组成:

控制器:

在每个时钟周期给出cpu其它部件的控制信号。

运算器:

本运算器包括寄存器堆。

BusMUX:

通过控制信号BusSel数据的来源,通过Wr来控制送往外部数据总线上的数据内容。

AR(地址寄存器):

驱动地址总线。

IR(指令寄存器):

存放根据当前PC值取得的指令。

2.3控制信号的设计(注:

要分析控制信号有哪些,最后总结一个控制信号列表,可参考上个学期综合实验参考文档中控制信号的列表方法)

wrMem

信号

含义

w_memToReg

‘1’:

内存数据到寄存器

‘0’:

ALU输出到寄存器

wRegEn

允许写寄存器

禁止写寄存器

wRegEn&

MemToReg

ALUSrc

R

S

000

A

001

B

010

1

011

100

FFFF

101

立即数

ALUOpr

功能

0000

R+S

0001

S–R

0010

RANDS

0011

RORS

0100

RXORS

0101

SHLS

0110

SHRS

0111

SARS

1000

LOADHR

1001

LOADLR

1010

MOVIR

setFlag(3位:

###)

Flag_hold

Flag_update

Flag_innerDB

Flag_C0

Flag_C1

Flag_clear

其它

未定义

2.4结构相关的处理

由于我们的设计中不包含缓存,因此会有取指和访存的冲突,即结构相关(见下图)。

当冲突发生时,必须先“访存”,将“取指”延后一个时钟周期,这样才能保证指令的正确执行。

处理结构相关需要做两项工作:

1)冲突检测2)取指延后。

1)冲突检测

只有执行访存指令(LOAD/STORE)时,才会出现冲突。

因此,我们在译码时产生一个标志是否访存的信号wrMem。

含义如下:

wMem

意义

00

写内存(STORE)

01

读内存(LOAD)

不占用内存

通过检查“访存阶段”的m_wrMem就可确定是否冲突。

2)取指延后

在每次取指时,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使取指延后一个节拍。

2.5数据相关的处理

数据相关是指在执行本条指令的过程中,如果用到的操作数是前面指令的执行结果,则必须等待前面的指令执行完成,并把结果写回寄存器或主存之后,本条指令才能继续执行[3]。

我们采用设置专用数据通路(即傍路技术)来解决数据相关问题。

但旁路技术并非一劳永逸。

若前一指令为LOAD,而后一指令和它数据相关,如下图所示,当下一指令的执行阶段需要数据时,上一指令尚未给出,这种情况是无法用旁路技术来解决的。

图五级流水LOAD数据相关示意图

针对上述情况的一般处理方法是通过插入bubble使LOAD之后的两条指令拖后一个节拍执行[4]。

但我们感觉这种处理过于繁琐。

我们发现,如果在LOAD译码时,后面自动加一条空指令,即增加冗余,就可以避免上述情况的出现。

在这种简化处理后,我们将数据相关划分为以下三种情况。

1.相邻指令数据相关

举例:

INCR0

INCR0

在此情形下,将上一指令的ALU输出经缓存后直接送回,作为ALU多路选择器的入口

之一,如下图所示。

图五级流水相邻指令数据相关示意图

具体代码片段为(forwardingentity.vhd):

ifm_wRegEn='

1'

andm_SA=e_SAthen

forwardA<

="

10"

其中m_SA为当前处于访问内存(MEM)中寄存器输出结果的索引,e_SA为处于当前执行阶段中ALU的输入寄存器A的索引,倘若两个索引值相等,则产生相邻指令数据相关

2.中间隔1条指令的两指令数据相关

INCR0

INCR1

在此情形下,将第1条指令的回写数据送回作为ALU多路选择器的入口之一供第3条指令使用,如下图所示。

图五级流水相隔1条指令的两指令数据相关示意图

具体代码片段如下(forwardingentity.vhd):

elsifw_wRegEn='

andw_SA=e_SAthen

01"

其中w_SA为当前处于回写阶段(WB)中寄存器输出结果的索引,e_SA为处于当前执行阶段中ALU的输入寄存器A的索引,倘若两个索引值相等,则产生中间隔1条指令的两指令数据相关

3.中间隔2条指令的两指令数据相关

INCR1

INCR2

第1和第4条指令数据相关,有两种处理方法。

方法1:

在第4条指令的译码阶段作旁路处理,将第1条指令的回写数据作为运算器的输入送入下一级,如下图所示。

方法2:

考虑到读写寄存器的时间较短,因此将写寄存器的时机改在时钟下降沿。

这样1、4指令就没有数据相关了。

图五级流水相隔2条指令的两指令数据相关示意图

由于方法2处理较简洁,因此我们在实现时使用了后者。

具体部分代码如下(ifentity.vhd):

process(reset,clk,PCStall)

begin

ifreset='

0'

then

PC<

=x"

00"

elsifFALLING_EDGE(clk)and(PCStall='

)then

PC<

=PCnext;

endif;

endprocess;

可以看到更新PC的时机为FALLING_EDGE。

2.6控制相关的处理

控制相关是指因为程序的执行方向可能改变而引起的相关。

当执行跳转指令时,就会发生这种情况。

除JR外,JRZ等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定。

常规的也是比较简单的做法是在碰到JRX之类的跳转指令时,延迟后边流水线的进入。

但我们通过分析,认为可以一点都不必延迟,通过旁路处理把控制相关转为数据相关来处理。

这样处理,不必延迟,可以提高流水线的性能。

按我们的方式解决控制相关需要做两项工作:

1)通过旁路,提供状态寄存器的值和临时状态位的值,为判断是否跳转

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

当前位置:首页 > 高等教育 > 其它

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

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