计算机设计-CPU设计-计算机实验.pdf
哈尔滨工业大学计算机科学与技术学院实验报告:CPU设计与实现课程名称:计算机设计与实践课程类型:必修目录CPU设计与实现.1CPU设计.31.设计思路图.32.内部信号设计.3二模块设计.41.BEATER:节拍生成器.42.MEMI0:内存10访问接口.43.T0取指模块.54.T1运算模块.55.T2读写周期.66.T3回写周期.6CPU设计L设计思路图节拍生成器BEAT节拍内逻辑TO:取指周期T1:运算周期T 2:读写周期T 3:回写周期指令计数器PC指令寄存器IR四1 境存器ADDR运算器结果ALU暂存器RTEMP更新寄存器Rdata更新指令计数器PCnew地址总线ABUS数据总统DBU2信息接口,I。地址QADKW 据 10而 _访存控制、I。控制2.内部信号设计1)控制信号BEAT:节拍信号Order:指令信号2)T0取指周期TOJOMAR:取指周期所用的指令地址3)T1运算周期Tl_T3PCupdate:零旗帜,主要用于辅助判别是否要对指令地址进行更新Tl_IOMMAR_T3PCnew:生成地址,在存数、取数指令中作为数据地址,在条件跳转、无条件跳转指令中作为更新指令地址;Tl_T2Rtemp_IOMMDR:运算器输出,根据指令的不同分别送入回写缓存或数据总线低八位4)T2读写周期T2_T3Rdata:回写缓存5)T3回写周期T3_T1REG:回写缓存T3_TOPCupdate:决定是否更新指令地址T3_T0PC:更新指令地址6)内存10访问接口IOM_TOIR:完整的十六位数据总线,作为指令;IOM_T2Rtemp:低八位数据总线,作为回写缓存;二模块设计1.BEATER:节拍生成器输入:CLK(l):时钟信号RST(l):重置信号输出:B E A T (3 d o w n t o 0):节拍信号重置信号有效时输出为0 0 0 0;否则,从 1000开始,每过一个时钟周期循环右移一位2.MEMIO:内存10访问接口控制:C L K(l):时钟信号R S T(l):重置信号B E A T (3 d o w n t o 0):节拍信号O r d e r (1 5 d o w n t o 0):指令输入:P C o u t (1 5 d o w n t o 0):指令地址A D D R o u t (1 5 d o w n t o 0):数据地址A L U o u t (7 d o w n t o 0):运算器输出输出:R t e m p(7 d o w n t o 0):回写数据I R(1 5 d o w n t o 0):取得指令交互端口:主存-A B U S (1 5 d o w n t o 0):地址总线D B U S(1 5 d o w n t o 0):数据总线n M R E Q(l)n R D(l)n W R(l)n B H E(l)n B L E(l)1/0-I O A D(1 d o w n t o 0)I O D B(7 d o w n t o 0)n P R E Q(l)n P R D(l)n P W R(l)在重置信号有效时,输出与所有交互端口都输出高阻;否则,考察节拍情况。如为第一拍10 0 0,则地址总线接指令地址,主存选中并读有效,数据高低位传送,取得指令接数据总线,其余端口与输出均输出高阻;如为第二拍0 1 0 0,输出与所有交互端口都输出高阻;如为第三拍0 0 1 0,则根据指令高五位决定动作一如为00100存数指令,则地址总线接数据地址,数据总线低八位接运算器输出,主存选中并写有效,数据低位传送,其余端口与输出均输出高阻;一如为00101取数指令,则地址总线接数据地址,回写数据接地址总线低八位,主存选中并读有效,数据低位传送,其余端口与输出均输出高阻;一如为0 1 0 0 0 输入指令,则 1 0 地址接指令中的对应数据,回写数据接1 0 数据,I。选中并读有效,其余端口与输出均输出高阻;一如为0 1 0 0 1 输H i 指令,则 I。地址接指令中的对应数据,。数据接运算器输出,1 0 选中并写有效,其余端口与输出均输出高阻;如为其他指令,所有交互端口与输出均输出高阻:如为第四排0 0 0 1,所有输出与端u均输出高阻。3.T0取指模块控制:C L K(l):时钟信号R S T(l):重置信号B E A T (3 d o w n t o 0):节拍信号内部信号:P C (1 5 d o w n t o 0):指令地址I R (1 5 d o w n t o 0):指令输入:P C i n(1 5 d o w n t o 0):更新指令地址P C u p d a t e(l):指令地址更新信号I R i n(1 5 d o w n t o 0):取得指令输出:P C o u t (1 5 d o w n t o 0):目前指令地址I R o u t (1 5 d o w n t o 0):输出指令在重置信号有效时,输出与所有交互端口都输出高阻;否则,考察节拍情况。如为第一拍1 0 0 0,则输出指令接输入指令,其余端口输出高阻;如为第二拍0 1 0 0,在时钟下跳沿为指令地址进行自增操作;如为第三拍0 0 1 0,不改变接线;如为第四排0 0 0 1,若指令地址更新信号有效,则指令置为更新指令地址。4.T1运算模块控制:C L K(l):时钟信号R S T(l):重置信号B E A T (3 d o w n t o 0):节拍信号O r d e r (1 5 d o w n t o 0):指令内部信号:P C (1 5 d o w n t o 0):指令地址I R (1 5 d o w n t o 0):指令A、B:运算器寄存器输入:R d a t a i n (7 d o w n t o 0):更新数据输出:Z F(1):零旗帜A D D R o u t (1 5 d o w n t o w n 0):生成地址A L U (7 d o w n t o 0):运算器结果运算模块内部又可分为三个子模块:运算器、通用寄存器与数据地址寄存器。运算器由运算器寄存器、运算器结果和零旗帜组成,仅 在 0 1 0 0 拍工作,默认把指令中R i字段对应寄存器值送进A,把指令中Rj字段对应寄存器值送进B,运算结果为零时零旗帜置1,而后根据指令高五位进行工作:对于加减指令00000.00001,对运算寄存器执行相应运算,并把运算结果送到端口;对于寄存器转存指令00010,直接将B送到运算结果;对于立即数转存指令00011,将指令低八位送到运算结果;对于存数指令00101和条件跳转00110,将 A送到运算结果;对于无条件跳转00111,将 00000000送到运算结果;对于输出指令01001,将 A 送到运算结果;其余情况下,运算结果一律置为高阻。通用寄存器模块在0100拍时,负责把寄存器值送入运算寄存器,在 0001拍时,根据指令决定是否读入更新寄存器值,并改写对应的寄存器。数据地址寄存器模块仅在0100拍工作,把指令低八位送到生成地址低八位,而 把 R7送到生成地址高八位,而后根据指令高五位工作:对于存数指令00101,把生成地址送入内存10访问端口;对于条件跳转00110和无条件跳转00111,把生成地址送入回写模块的更新指令地址;其余情况下送出值为高阻。5.T2读写周期控制:C L K(l):时钟信号R S T d):重置信号B E A T (3 d o w n t o 0):节拍信号O r d e r (1 5 d o w n t o 0):指令输入:A L U o u t (7 d o w n t o 0):运算器输出l O m o u t (7 d o w n t o 0):1 0 主存输出输出:R t e m p o u t (7 d o w n t o 0):回写缓存在 0010拍,回写缓存根据指令类型读入运算器结果或数据总线低八位;在 0001拍,把回写缓存送往寄存器。6.T3回写周期控制:C L K(l):时钟信号R S T(l):重置信号B E A T (3 d o w n t o 0):节拍信号O r d e r (1 5 d o w n t o 0):指令输入:R t e m p(7 d o w n t o 0):回写缓存P C n e w i n (1 5 d o w n t o 0):更新指令地址Z F(1):零旗帜输出:P C u p d a t e(l):更新指令地址信号P C n e w(1 5 d o w n t o w n 0):更新指令地址R d a t a(7 d o w n t o 0)回写数据在 0100拍,读入零旗帜,在指令高五位为00110条件跳转或00111无条件跳转时,更新指令地址信号置1。在 0001拍,根据指令类型输出回写数据、回写指令地址或高阻。三仿真波形L节拍发生器Name ValueJr Clkrstbeatout3:0cclk_period10100010000 psU U ITU_ r-LG D Gi_ riooo oiX)X 0010 X 0010CX)1 Y 1000 0 ps2.主存10端口NameValue1 1 1 1 1 1 1 1 190i n s i 1 10I0l lnsi&elk0_r_r&rst0A 飞 beat3X)100000(0(_ 中 order15:000000000000X X X X X X X X X X JO O O O O R S pcout15:000000000000 y addrout15:000000000000 飞 aluout7:000000000ooocxO O P k dbus15:011111111111uuuuinnnnuuuuuuu y dbusout15:011111111111iniuuuinnnuuuuuinj1111113 R j iodbin7:0uuuuuuuu y iodbout7:0uuuuuuuu R8 rtemp7:0zzzzzzzz R8 m5:011111111111ZZZZZZZZ2zzzzzzz(-A*abus15:000000000000ZZZZZZZZ2zzzzzzzJoocxxxxA Y ioad(lX)zzIfe clk_period10000 psiorder7:0 01000111u r n111:【010重置信号有效期间,访存控制字全1,其余端口输入高阻I Name1 Value90 ns 1100 ns 1110 ns 120 n*pcout(lSX)000000000000000000(00000000A Q dddrcxit15:000000000000(XXXXXXX ooooooooAaluoutpxi11111111000000001111:111 R0 dbus15XJz z z z z z z z z z zu nm m m nnnm uuu)zzzzzzzz 1ZZZZZZr、一 dbusout(15:0ZZZZZZZZZZ2u ruutmjuuuuunnju)zzzzzzzzzzzzzzz*iodbinpOuuuuuuuuunin uuuu*iodboutp)uuuuuuuucum JUUU*rtemppoz z z z z z z zZZZ2 zzzz,忧3 0 11111111111z IZZZIZZZZZZZZZZ111111111111111A*abus15)z z z z z z z z z z zz rzzzzzzzzzzzzzz;0000000000000-zzzzzzzzzzzzzzzJ R f ioadL0zz2z1*clk_period10000 paXO(X)ptA lorderp)1111111111111111);01000111;11111111zzzzzzzz1111 1111J立即数转存指令I Name1 Value1 一150 QB 1160 ns 170 ns 1180 ns 190 ns 1200 ns 1&dk0LW l R8 beat13:0A R!order15X)pcout(15:0Aaddrout15 0*aluoutp:0 y dbus(15:0 Y dbu$out15OA W9 odbinp:0)odbout7:0rtempP:0*0010000000000000000000000000000000000011111111z z z z z z z z z z zz z z z z z z z z z zUUUUUUXJUuuuuuuuuz z z z z z z z11111111111000110000100:001000)1;1000000II 0000001111oo 00000000000X0oooooooooooooocx000000000000000(X l l l ll l lz z z z z z-1111111111111-zzzzzzzz ZZZZZZZz z z z z z-zzzzzzzzzzzzzzzzuuuuuuuuuuuuuuuuzzzzzzzz111111111111111口,abu$15 0z z z z z z z z z z az z z z z z-;0000000000000:zzzzzzzz rzzzzzzz:0000000蟹 ioad(lX)dk_period*orderp:0zz10000 pa11111111IZXOOOO pt0100011111111111:zzzzzzzz1111 1111;:01000111加法指令NameValue.1.310 ns4 dkQ r s t4由切000010_l-1000;:0100:A orderflSPI 0 0 1 0。011101)000010010000-r q pcout15)中 addrout15:0 飞 aluoutp:0 dbus15:0 -dbusout15:0 中 iodbinp)iodbout7:0 +rtempP:0 R8 H15:0 1 abus15:0 R!ioadL01ft clk_period Y iorderp:00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0z z z z z z z zo o o o o o o o zz zo o o o o o o o zz zuuuuuuuuuuuuuuuuz z z z z z z z1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0zz1 0 0 0 0 p s0 0 1 0 0 1 1 1_1111 L illmi i i i i mi -1、zz z z z z z z z z z z z-111111111111 )zz z z z z z z z z z z z-00 0 0 0 0 0 0 0 0 0 0-)zzzzzzzzzzzzz0100011111111111320 ns330 ns340 ns350 ns 1_r一r;0010:00:10000010001110100011-(XXXX 00000000000ocxxx 00000000000oooooooozzzzz-oooooooozzzzz-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz):1111111111111:I JUUUUUUI uuuuuuu2zzzzzzz11111 11111111111zzzzzzzzzzooooooo o o o o o o-:zzzzzzzz:ooooooooooooo-10000 ps00100111 ;1111 1111):01000111)存数指令|Name1 Value500 ns510 ns 520 ns 530 ns 1540 ns 550 ns dk10R0 beat3X)100010000100;0010)oc)11000)|00000zzzzzzzzzzzzzzzz:OOOOOOOOOOOOOOOQ1111111111X111 x:iruuuuvuuz z z z z z z z z z zzzzzzzzzzz NZZZZoooooooc XXJOOOOO_、ZZZZZZZZZZ2zzzzzzzzzz rzzzzz_ oooooooc XXXXXXX)bUUUubbuUUVUUlR111 1X11z z z z z z z zzzzzz ZZ2z z z z z z z zzzzzzz:z:)zzzzzzzzz z z z z z z z z z z一zzzzzzzzzzzzzzzz000000000000000000000000000OOOOOCXXXXXXX)-zzzzzzzz zzzzzzzzzzzz8 )zz10000 pa_ 10000p_01000111二0100011111111111:11111010)(1111 1111:01000211 1输入指令I Name1 Value540 ns 550 ns560 ns570 ns 1580 nt590 ns地dk地rst壁 beat3D10000100011000:0 1 80010;_ 00 21 orde,15:0I 0100001100t)010000100000:01001000 xxxxxxR0 pcout(15:0 addrout15:0+aluoutp:0dbus15:0dbusout(15:0)+iodbinp:0飞 iodbout7:0R j rtempP:0.ir15:0+abuslS:ORg ioadl)逐 clk_period*iorderp:000000000000z z z z z z z z z z zuuuuuuuu000000000000000000000011111111z z z z z z z zz z z z z z z zz z z z z z z z z z zz z z z z z z z z z zzz10000 p s111111110000000000 00000_zzzzzzzzzzzzzzaooooooooooooooouuuuuuuu11111111000000(000000(90000:5oooo:zzzzzzzzzzzzzzzzrzzzzzrzIZZZZZJZmi nIzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz tzzzz30000000000000000000000000000zzzzzzzzzzZZZZZIZz:00:10000s11111111010001111111111111111001111Xi l l输出指令3.取指模块I Name1 Value60 ns 80 ns100 ns 1120 ns 140 ns 160 ns 吆elk&r s t *bMt【3:0J L,000100I 00000000000011110000000011101010010000000000010000 p sCr-T llj-000(0010)(00Q-X 0010 X )T-X loop X oiX 01”jQ-X 0010/o o0101001111111000 X oicX01100001001地 peupdate pcin15:0,!irin15X)飞 pcout15.0腺 clk_period000000000(000000:1X110000 XXXXXXX)000000000(000000:01110101 x u in i)on o o o o i X1U111000000000(000000;00000000 XXXXXJ01):00000000 XXXXXJ10100(0 psNameI Value,1 1 I,1 ,200 ns 1220 ns 1240 ns 1260 ns 280 ns 1300 ns1,8 Edk00ri r-r-c j_ rY j-_ r+beat3:0J01000010 D O)1 X looo r oiK)X 1 X oo)1 x 1 X o i)0 X 0010 X 8)1 x looo x 0】a rout15I o m o i o i o o J01100001(X)111:i i y o n:)10100111011X 0111X o i 100001001H ill&peupdate0 R!pcn(15X00000000000_000000000010000+irin(15D011101010010111010 0011101101110101 0111111OHM00100111111 R0 pcout(15)OOOOOOOOOOGOOOOOO-;(X 000000000X0000oooooooc)0010001oooooooa)0010010.poo 4.运算模块I NameI ValueSO ns1(X120 ns X40 ns160 ns.180 ns,2Q&dk0-nCi-Tilj-.rnLJ-_rn_i-l&r s t0 beat3O10000000X0 0:。:ooio x 0 c)1 X 1 0 0 0:0100 X 00100001;o rd e r(1 5 0|ooooooooooq00X000110000000:000110(1001X0000 *rdatainp)0 0 0 000000 XX XXX)0000111100110000Q z fz y addrout(15 0z z z z z z z z z z zzzzzzzzZZZZZZZZ R0洲 卬 必ZZZZZZZZzzzzzzzu00001111)zzzzzz:Z PC 110000零旗帜仅在运算周期改变,下一周期前维持不变。5.读写模块01000000000000000000m order(15:0alu?omoutp:0rtempo1 x 1001C-0 3:000000 KJOOOOOOOOO0001:0000000I I I【000X100X00X1000L0000000090001X11;,oonooo00000000ZZZZZZZZZZZZZZZZ0000111X)znz till 00110000b e a t 010000000001I order15:0|o o io o o i.lioaluoutpDiomoutpOrtempout7X)ZZZZZZZZZZZZZZZZ,500 ns520 ns 1540 ns 560 ns 1军,叱一600 ns-1 r-r-r-rYj-_r i Lr _m r-|-00)11000;0100;0010 7 oc)1 x 1000:(0 1 0 0 0010:0001:100000001001000)0010001000X10100011X-?XXXMzzzzzzzZZlrzzzz11101110X11011101OOOOXX)1ZZZZZZZZ6.回写模块I NameI Value60 ns 80 nc 1100 ns120 ns(140 ns 1160 ns&elk0产广r d r _ r L r 一 LLIHIJ-_rrst0“beat3010000001000:0100)0010 00)1 X 10000100-r|口 g order115吗|o o o n o o o o o q(XXXXXXXXXXX 000000011000(X00 411【000rtempp.-O00000000_00a 0000_:”8 1 8 _A*pcnewin15X)0000000000 0ooooooo 000000000000(XXXXXXXXX)1Q z f0&peupdate0 Y pcnew(15Oz z z z z z z z z z zZZT,ZZZZZZZZUZIA r d a t a p:O00000000ZZZZZZZZ00(X)000:a 9101100I NameI Value280 ns 1300 ns 320 ns340 ns360 ns 1380 ns 4&elk1一,TnLr fiU-r n 尸_rY_rQ r s t R f beat300001-/【00011000 X S 8:0010 X 00”X w oo::5 8 X 8;。:open:口 韦。rd e G 5 61 o o o o io o io o q(xx)o ioo:o o a c0 X001000111010 on【001010110100011,rtemppX)y pcnewin15)JQx挖 peupdate W!pcnew15A*rdataRX)00101100z z z z z z z z z z z00z z z z z z z z z z z0010110000101 100zzzzzzz;IZUZZ0001 0001000:0000X OOP000100010001ZZZZZZZ22zzzzzzz001(11 ZZZZZZZZ00101100ITTTTIT X ITIC3010 X“口uu X T in。二 二 :n i l r.3X)TO XTTTOOOTOadw pjoi 为 OOTXOOOXOTtTOT)T00_ _、-z z zz-TOTTTIOOTOOz z z z z z z z z z zg h n o ja p jo 为 4ZZZZ(Oilpeot 俏 ZZ;ZZZZZZZ(-0 0 0 0 0KXXXXXX)-ZZZZZZZZZZZZ-OOIOTTTTITTT:-ZZZZZ tzzzzzzz-0 0 00 KXXXXXX)-Z Z Z0000000000 00:STsnqe 为ZZZZZZZz z z z z z z z(0:4inoqpoi 尢 Z2ZZZZ2ZnnnnnnnnnnnnnnnnO duiqpoi 尢 4I I(OXIOOOTOOTXOO;X IX IT IIIX IIIX IIT :OOIOXXIOTOIOO;nnnnnr n uiannnnnnnnnnnnnnnnaSTlinosnqp 尢 _ nOUOOOTOOTTOO XXXtXXIlT lH T tT T :XTOOOTOX T:OXO:OO-z z z z z z z z z z zTOTTTOTOTOOO:ST)snqp 为 4ooI MI O OX m:tYOOOXOXttOT HOO_)-Z Z Zik z z z z z z z z z z I_oxo X o(乂 X l00 01oo X(X xo XX01 X xooo0001【0:樨“1尢T(_X _ _ t u nx n t x x x n t t t:【1K0TTTOOOTOTTTXTTITOOOZZ0000000000 0z z z z z z z znnnnnnnnnnnnn n n n rn nZZZZZZZZZZZ(xdpjoi 3(OSlJinowpjo 3 tollpeoi 3 O:STsnqe 为 (0 noqpoi 3 to d u iq p o.力 4(O STlinosnqp 尢(O STlsnqp 为 0000000)zzzzzzzzzZZZZZZZZZZzzzzzzQss-ZZZZJ ZZZZn Jinnnnnnnnnn nnnnnnnnnZZZZZZZ2 zzzzzzzz:OYOOOCXXTOOTOOOO_,zzzzzzzzzzzzZZ0 1 0 0)-ZZZZZOXOOOOOOXOOt)0001-ZZZZZIT n ttT tT T IT00E v n v r n o o o l-w pj。ooio X oc.1OX X T(_l _JO X_ oiJ0Pxpc_ 1TO X (X_ 1DI【001-OOOTT0【】更叫a 加 粗w啦SU OOEso 063u 082n O NSU 0921 o OSZauieN;|(ElTOOOOOOtXK E X E CoooooooXDCHQ X ElK E ZZZ2OOOOXtOOTOOItOOGzzzz t i l l :_ _ m(,HTXOtJOTO X匕8 0 S 1000zzzzzzzzzzzzzzZZZZz z z z z z z z z z zz z z z z z z znnnnnnnnnnnnnnnnnnnTOOTOOTTOOOTOOTOOTTOOO0010T0(Hlpeoi 为 .feSTjsnqe%(O dinoqpoi 为 4(Orduiqpoi 为 O STlinosnqp 为 toSTlsnqp 为 te s rW J o 3 foeq 施 举,无)0000000)ZZZZZZZ2ZZZZZZZZzzzzzzzz.00000-:-ccoo-nnnnnnnnOOPQOOOOOCX00000000000:0000000/_nnnnnnnnnnnnnnnooooxxoaOOOOXXOOTOOXXOOO:ooxiooo111X0(:ooitoooJOOOOIIOOOX _o Jto X a1oi X u_1笫 X oi_I-w X x,1,1 i,l A 1MUSN JOOOIO;T T IIH i t ZZZZTH 10000000:zzzz t i n000ttTT X _oooio)ZZZZZooooo):IoooooIIT tT l0000000000TTTOOOTOZZZZZZZZZZZZZ00000000000z z z z z z z znnnnnnnnnnnnnnnnnnnOOOOOOTTOOOz z z z z z z z z z zOOOT000:japK)!力 (aSTVojpjo 为 (HJpeoi 为(O STlsnq 鼻 Odjnoqpoi*0:du iq p o!如 (0:ST)nosnqp*O:STsnqp 尢(KSTlwpJO 3【】H i b .空 粗00000)ZZZZZZZ2 zzzzzzzzZZ22Z2ZZZZZZZZiiuniuinn.nnnnnnnnnnn nnnnnnnnnEIOOCX 00011000:nnnnn.nnnnnnnnnnooox n_jITTTOOOOOOOTDO X CH_|OOPDO X “_1_ _ .52_)C_rZZZZZXXH)(ooooo_100000000000000_1n 0T1 ozx1,u o il!U OOI1 n 06gu osa n M A n(o z四感悟L 自顶而下的设计思路最初,我设计电路时仍沿用以往设计具体部件的思路,着眼于每个部件,从具体电路开始直接设计。但刚开始设计运算模块时我就发现,这种思路会给设计带来极大的不便,往往会陷入任意调用信号而不知来源的境况。于是我改变思路,从指令出发,划分每个动作所应处于的节拍,进而明确信号的需求,从而设计各个模块。果然,设计效率极大提高。2.不要滥用时钟跳变最初,我的设计非常依赖时钟跳变,经常借助跳变来分隔不同的动作。但实际上,有很多动作可以并行执行,也不必划分在不同跳变沿上;对于访存指令和10指令,甚至有必要使用电平触发以保证稳定性。因此我取消了很多条边条件,改用电平触发。3.不要滥用进程进程的意义是构建时序逻辑;但很多时候,我们用组合逻辑就能解决问题。这个时候就应该用赋值语句等直接解决问题,使用进程降低效率。4.结构复用在运算器模块中,很多不同的操作其实可以标准化为相同的结构;尽管对于部分指令,这么做显得繁琐,但经过这样的标准化可以反复利用相同的结构,使得实际的电路比较简单。附:各指令对应的数据流首先为取指模块的数据流动;此后所有指令数据流都相同,故不做赘述。而后便是根据不同指令,各个模块间的数据流动。