精品单周期CPU设计docx.docx
- 文档编号:11612758
- 上传时间:2023-03-28
- 格式:DOCX
- 页数:15
- 大小:105.73KB
精品单周期CPU设计docx.docx
《精品单周期CPU设计docx.docx》由会员分享,可在线阅读,更多相关《精品单周期CPU设计docx.docx(15页珍藏版)》请在冰豆网上搜索。
精品单周期CPU设计docx
■=・NINGBOUNIVERSITY
短学期综合实验报告
实验名称:
单周期CPU设计
院系:
信息科学与工程学院
专业:
计算机科学与技术
组员:
XXXXXXXXXXX
XXXXXXXXXXX
指导老师:
XXXXXXX
二o—一年七月八日
摘要
中央处理器(CPU)是计算机取指令和执行指令的部件,它是由算术逻辑单元(ALU)、寄存器和控制器组成,简称处理器(或CPU),CPU是计算机系统的核心部件,在各类信息终端中得到了广泛的应用。
处理器的设计及制造技术也是计算机技术的核心之一。
CPU设计的第一步应当根据指令系统来建立数据路径,再定义各个部件的控制信号,确定时钟周期,完成控制器的设计。
然后建立数据路径,进而可以进行数字设计、电路设计,最后完成物理实现。
而在本次试验中,我们研究的重点是数据路径的建立和控制器的实现。
一个机器的性能由三个关键因素决定:
指令数、时钟周期,以及执行每条指令所需的时钟周期数(CPI)。
然而不论是时钟周期,还是每条指令所需的时钟周期数目,都是由处理器的实现情况决定的。
在本次试验中,我们构造了单周期的数据路径和组合逻辑实现的控制器。
本次试验屮,我们运用QuartusII8.0软件设计出了一个拥有6条指令的单周期CPU,并对它进行了简单的测试,最终完成了一个正确的单周期CPU的设计。
关键词:
数据路径,控制器,控制信号,单周期
Abstract
Centralprocessingunit(CPU)isacomputerinstractionfetchandexecutionofcomponents,itisanarithmeticlogicunit(ALU),registersandacontroller,referredtoastheprocessor(orCPU),CPUisthecorecomponentofcomputersystemsinalltypeinformationterminalhasbeenwidelyused・Processordesignandmanufacturingtechnologyisoneofthecorecomputertechnology.
ThefirststepshouldbebasedonCPUdesigninstractiontocreateadatapath,andthendefinethevariouscomponentsofthecontrolsignalstodeterminetheclockcycle,thecontrollerdesign.Thensetupadatapath,andthencanbedigitaldesign,circuitdesign,physicalimplementationfinalized.Inthisexperiment,thefocusofourresearchistoestablishthedatapathandcontrollerimplementation.
Theperformanceofamachineconsistsofthreekeyfactors:
thenumberofinstructions,clockcyclestoexecuteeachinstructionaswellastherequirednumberofclockcycles(CPI).Whetheritbeaclockcycle,eachinstructionorthenumberofclockcyclesrequiredaredeterminedbytheachievementoftheprocessor.Inthisstudy,weconstructedsingle-cycledatapathandthecombinationallogictoachievethecontroller.
Thisexperiment,weuseQuartiisII8.0softwaretodesignasingle-cycleinstructionwith6CPU,anditconductedasimpletest,the
finalcompletionofapropersingle-cycleCPUdesign.
Single-cycle
Keywords:
Datapath,Controller,ControlSignal,
实验内容:
1、通过实验的学习,基本熟悉quartersII软件的使用,并能熟练运用试验所需元件。
2、明白各个指令处理过程,然后设计数据路径的控制信号,最终完成单周期CPU的基本指令的设计。
2、通过本次实验,对CPU指令的读取和执行过穆更加清晰,明确。
实验器材:
PC机,QuartusII&0软件
实验原理:
单周期CPU的特点是每条指令的执行需耍一个时钟周期,-条指令执行完再执行下i条指令。
假设该单周期CPU能够处理的指令格式如下:
(1)ADDrs,rt,rd
000000
rs(5位)
rt(5位)
rd(5位)
reserved
完成功能:
rd*-rs+rt
(2)LWrt,offset(base)
100011
base(5位)
rd(5位)
offset(16位)
完成功能:
16位的offset经过0扩展到32位,与寄存器base
屮值相加,结果作为地址,以此地址取字保存到寄存器rt屮。
(3)SWrt,offset(16位)
101011
base(5位)
rd(5位)
offset(16位)
完成功能:
16位的offset经过0扩展到32位,与寄存器base中值相加,结果作为地址,将寄存器代的值保存到此地址内存中。
(4)MOVErs,rd
000111
rs(5位)
rd(5位)
reserved
完成功能:
rd—rs
(5)ANDrs,rt,rd
111000
rs(5位)
rt(5位)
rd(5位)
reserved
完成功能:
rd—rsANDrt
000010
target(26位)
(6)Jtarget
完成功能:
26位地址的后8位成为跳转的目标地址。
一般来说:
一个CPU在处理指令吋需要经过以下儿个步骤:
1)取指令(IF):
根据程序计数器PC中的指令地址,从存储器中取出一条指令,然后转到译码状态。
同时PC中产生下一条指令需要的指令地址。
2)指令译码(ID):
对取指令操作中得到的指令进彳亍译码,确定这条指令需要完成的操作,从而产生相应的控制信号,驱动执行状态中的各种操作。
3)指令执行(EXE):
根据指令译码得到的控制信号,具体地执行指令动作,然后转移到结果写冋状态。
4)存储器访问(MEM):
所有需耍访问存储器的操作都将在这个步骤中执彳亍,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的位置或者从存储器中得到数据地址所指示的数据。
5)结果写冋(WB):
该步骤负责把指令执行的结果或者访问存储器屮得到的数据写回相应的目的寄存器中。
取指令
IF
—>
指令译码
ID
―►
指令执行
EXE
―►
存储器访问
MEM
—>
结果写冋
WB
图1单周期CPU指令处理过程
图2单周期CPU数据通路和控制线路图
图2是一个非常简单的能够单周期完成上述6条指令的数据通路和必要的控制线路图。
其中存储器和寄存器堆,读操作吋,给出地址,输出端就直接输出相应数据;而在写操作时,在WE使能信号为1时,在时钟上升沿写入,图中控制信号动作由下表所示。
表1・控制信号作用
信号名
无效时作用(0)
有效时作用
(1)
RegDst
写寄存器在寄存器堆得地址来自rt字段
写寄存器在寄存器堆得地址来自rd字段
ALUSrcB
寄存器堆data2输出
符号扩展的立即数
ALUOp
寄存器堆datal输出
加法
RegWrite
无
在吋钟上升沿时,写寄存器
MemtoReg
送往寄存器堆写数据输入的值来自ALU
送往寄存器堆写数据输入的值来自内存
MemWr
无
在时钟上升沿时,写存储器
PCSource
PC+1
扩展的立即数
ALUOp1
寄存器堆datal输出或者加法
与
实验步骤:
(1)控制器的设计
表2
控制信号
ADD
LW
SW
MOVE
AND
J
RegDst
1
0
0
0
1
0
ALUSrcB
0
1
1
0
0
0
ALUOp
1
1
1
0
0
0
RegWrite
1
1
0
1
1
0
MemtoReg
0
1
0
0
0
0
MemWr
0
0
1
0
0
0
PCSource
0
0
0
0
0
1
ALUOp1
0
0
0
0
1
0
由于ADD指令码为000000,LW指令码为100011,SW指令码101011,MOVE指令码为000111,AND指令码为111000,J指令码为000100,因此可以写出所有控制信号的组合逻辑,结果如下:
RegDst二ADD+SUB;
ALUSrcB二LW+SW;
ALUOp二ADD+LW+SW;
RegWrite二ADD+LW+MOVE+AND;
MemtoReg=LW:
MemWr=SW;
PCSource二J;
ALUOpl=AND;
NnstrLCtor(31]氐nstndorfSC^氐nstrvdor[2S3氐nstructor[2Sg^nstrvjctor(27]氐nstructor[羽X
instructcr[31]
^Mnstructor(3C3氐nstrvctor[2S3^Mnstrvctor[2e9幷nstructcr[27]^nstructor[26l
X
njnstrtctcr[3C5
x
zxNr'6trLCtcr[2^
sz
^nstruDtor[2B]sz
Cnstructcr[27]xz
instructor[田
X
Znstructcr[31]
LiveX
instructor[31]幷nstnxlcr[30]^nstructor[29|^Ninstn_iDtcr[2Bl^Nnstnjctcr{27]氐nstiwtcr[羽X
ZW6
inst8
Z>ND6
inst9
inst18
inst19
RegDstOX
K/terrtoRegX
AJLJQdIX
IVterrtoFteg
X
X
IVbnW
CR2
inst14
ZWScBX
Fte^EtetO
X
X
ZWQd1
CR2
inst28
FtegDstX
SrrtoReg疋
inst〔6
l^terrW
ZWQdX
RecpstO关
ZWQd1x-
IVterrtcFteg关
M>/ex-
CR4
inst30
Ftec^/UiteX
(2)各个元件
图4寄存器堆的笃地址选择
MLIX2
图5进入ALU的其中一个数据的选择
c#dO[31・Q
X
resdtf[31..C^
cteta1x[31・QctetaCkQ仁0|
inst22
resultf31・Q
resdtc[31..O]
K
MJX2
图6写入寄存器堆的数据的选择
图7PC
IVterrWx
47.QX—
resUtf[7..O]
elk
X——
resdtc[31..q”resdta[4..q”RegWite*instructcr[25i.21]”
instructcr[2Q.1^”
elk哭
h/errcry
caa(31・・0|wrad±ess[7・・0|wren
rdad±essaTZ.OI
rdactfessW7.Q
clock
inst15
ALU
g-
图8存储器
ctetaf31..0|
wrad±ess[4„0]
wren
-o-
-0-
instrtctoq31..0j
<±[31..CH
cp1[31..0j
rcbcttessaf4..Ol
rctacktessn4..01
dock
inst29
S■
5X
图9寄存器堆
cp1[31..q
X
X
resdtb(31..cq
cfet3a(3仁0|
inst20
A^-
A+e
resdtf31..0l
restit1[31..O
X
qa1[31..0|
caa1x[3仁01「
caaCkf31・Q
resLit[31..(2
resute(31..O|
X
inst32
ix
ANDI
cpi(3i..q
X
resdtb(31..
resdt^31..O
X
resdtG(31..0|
MLIX2
c^a1xf3仁0|卜
cteta£kf31・・0|
resUtf31・Q
resdtf[31..0|
K
inst31
———XLcbnN
(3)实现的功能分析
1•指令的选择:
pc+l(顺序执行),J两个需要一个比较器,
2•取指令的一段:
c*>1[31..0]
h/terrW**
47.X—resdtf[7..qX
dk
X
IVter
cteta(3"1・・0|wrad±essT7・・0|wren
rctacfctessafZ.OI
rctad±essU7.Q
dock
instnctc431..0j
PC+1和J中选择(当PCSource为1,J执行选择跳转地址)。
inst15
图11取指令
指令输出为instructor[31..0]
3•实现扩展:
将16位的按0扩展成32位
gnd[31..16],qa[15..0]
4.ALU运算最后输出的结果:
ALU内部产生了三个运算结果,resultl(加法运算的结果),result2(与运算的结果),qal,但是输出只有一个,所以需要两个选择器,一个是在resultl和qal之间(当ALUOp为1时,输出resultl,否则,输出qal),再将resultl和qal选择的结果resulte与result2进行选择(当ALUOp1为1时,输出resul12,否则,输出resulte)。
画图(建工稈)
7编译(complies)
波图(waveformeditof)
7模拟(simulator)
5.实现效杲的步骤:
6•指令:
0:
00000000010001000011000000000000;
ADD指令:
OP码000000;将寄存器地址00010和寄存器地址00100
的数据相加(4+6=10),放到寄存器地址为00110的寄存器中。
1:
10001100001000110000000000010000;
LW指令:
OP码100011;将寄存器地址00001的数据3和后16位的扩展32位值相加,为19,作为内存地址,找到数据0(000),放到寄存器地址为00011的寄存器屮。
2:
10101100101001110000000000010001;
SW指令:
OP码101011;将寄存器地址00101的数据7和后16位的扩展32位值相加,为24,作为内存地址,找到寄存器地址为00111的寄存器数据,放到内存地址24中。
3:
00011101000010010000000000000000;
MOVE指令:
OP码000111;将寄存器地址01000取出的数据10(1001),放到寄存器地址为01001的寄存器中。
4:
11100001010010110110000000000000;
AND指令:
OP码111000;将寄存器地址01010的数据与寄存器地址
寄存器中。
5:
00001000000000000000000000000000;
JUM指令:
OP码:
000010;PC的值变成后8位;
END;
409M609M809M100PM⑵卩"140PM160Pns180Pns
砸巩0]⑹⑹[19恤]⑹⑹[24硕]⑹【0][10珈】⑹⑹[12^⑹⑹⑹[戦0][0]⑹【10砸]⑹⑹[19则而而丽0]【0]⑹〔1砌而TOX⑹⑹⑹[仍0】⑹⑹【2皿0】⑹【0][10临】⑹⑹[12必⑹⑹⑹[顼0][0]⑹[10讹]⑹[0]⑹)f^WWo】[0][0】[l^WI何風血⑹⑹⑸X血血血⑼厕[oj【o][iiMoHoj[o][i3Mo]⑹⑹血笊0][0][0][瞅⑹⑹⑹〔ojx⑹⑹⑹⑼)to]⑹
nonm
顾WwMojU炭2山67]血h)t^【9j[oHolH225k⑹X(8Ho】⑹[顼〔0】K)⑹力40皿0山6阿面耐皿沏⑷⑹【0阿F
4]
[5]Y[0]
(21X[3]
实验数据分析
图12实验数据
说明:
Name:
1)elk:
指时钟信号;
2)outputa:
指ALU的输出结果;
3)outputb:
指寄存器堆数据数据输入端的数据;
4)outputc:
指内存数据输入端的数据;
5)outputd:
PC里的指令地址;
6)outpute:
扌旨扌旨令;
吋序图的说明:
1)PC%0,ADD指令,将4和6相加的结果10存入到寄存器地址为6(110)的寄存器中。
2)PC为1,LW指令,将3和16相加作为内存地址,将数据0写到寄存器3中。
3)PC为2,SW指令,将7和17的相加作为内存地址,将寄存器7里的数据9写到此内存地址中。
4)PC为3,MOVE指令,将寄存器8里的数据取出,放入到寄存器9里去。
5)PC为4,AND指令,将寄存器10和11的数据相与,得到12放到寄存器12中。
6)PC为5,JUMP指令,将PC变成0;
不断循环,死循环。
实验结论
(1)实验过程中,经常因为输入输出端的名称写错而出现各种错误,所以,各个输入输出端的命名要注意区别,不要重名,并且要注意区分不同输入端对实验结果的影响。
(2)试验中要用到6个多路选择器,一个用于写寄存器地址的选择,一个用于加法器其屮一个输出的选择,一个用于写入寄存器数据的选择,一个用于PC里的指令地址的选择,述有两个用于ALU内部数据输出的选择,要特别注意各个多路选择器的不同作用。
(3)截断点的应用:
1)绘图的过程中可以简洁而节省地方。
2)检查错误的时候也可以思路清晰,方便看过程。
3)32位的数据或者指令引出后命名,需要多少位数,可以直接引过来,只需耍命名与前面的相同,规定需耍的位数就好。
(4)本次试验涉及到的不同的数据输入输出,还有多路选择器比较多,所以一定耍有足够的耐心,耍比较细心。
(5)通过本次实验,我们对单周期CPU内部的指令执行过程,以及数据流通过程有了史加深刻的理解,并且,最终能够自己运用QuartusTT8.0软件设计出一个简单的CPU,虽然只包含了6条指令,但是却覆盖了较广泛的指令类型,使我们对于CPU的认识不再只局限在理论层次,而是通过亲手实践,对CPU的内部运行机制有个更深一步的理解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 周期 CPU 设计 docx