计算机硬件系统设计(下篇共上下2篇)_第1页
计算机硬件系统设计(下篇共上下2篇)_第2页
计算机硬件系统设计(下篇共上下2篇)_第3页
计算机硬件系统设计(下篇共上下2篇)_第4页
计算机硬件系统设计(下篇共上下2篇)_第5页
已阅读5页,还剩317页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

存储系统实验框架谭志虎存储系统实验内容RAM组件使用data.circ汉字字库扩展storage.circMIPSRAM设计MIPS寄存器文件设计硬件Cache机制设计全相联直接相联组相联storage.circ谭志虎下节课再见…stan@存储扩展实验谭志虎实验目的理解存储系统位扩展、字扩展的基本原理能利用相关原理解决汉字字库的存储扩展问题实现汉子字库中存储器的数据填充汉字字库汉字字库:利用区号,位号进行检索的字形码存储器地址输入:区号(7位)位号(7位)

逻辑地址:(区号-1)*94+位号-1区号、位号从1开始数据输出:1024位点阵信息位扩展:Logisim中ROM存储器最多32位需要1024/32=32片16K*32位ROM031逻辑地址(14位)(区号-1)*94+位号-1字形码内容(1024位)0XXXXXX1XXXXXX…XXXXXX214-1XXXXXX实验要求实现16*16点阵的标准汉字字库利用容量扩展的方式构建汉字字库参考实现:8片16K*32位ROM并发实现16*16点阵输出逻辑地址16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits实验任务:利用4片小容量ROM替换原有存储器用4片小容量ROM替换16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits存储扩展实验(汉字字库)用4片小容量ROM替换存储扩展地址线连接数据线连接需要的组件译码器多路选择器数据填充字库数据分割16K*32bits16K*32bits16K*32bits16K*32bits16K*32bits4K*32bits4K*32bits4K*32bits4K*32bits16K*32bits16K*32bits16K*32bits汉字字库自动测试时钟频率8Hz,Ctrl+k,Command+k自动测试,提交检查谭志虎下节课再见…stan@MIPSRAM设计谭志虎实验目的理解主存地址基本概念掌握存储系统位扩展基本思想能构建能同时支持字节、半字、字访问的存储子系统数据位宽可变movah,[200]#按字节访存ah=0x01movax,[200]#按半字访存ax=0x0201moveax,[200]#按字访存eax=0x04030201movax,[201]#未对齐moveax,[201]#硬件强制对齐到200010203040200203主存实验任务:MIPS存储器设计设计支持MIPSLoad/Store指令的存储器lblhlwsbshsw字节/半字/字访问封装规格所需器件:多路选择器,译码器,三态门…引脚输入/输出位宽功能描述Addr输入12字节地址(字访问半字访问时应硬件强制对齐)Din输入32写入数据,不同访问模式有效数据均存放在最低位,高位忽略WE输入1写使能,高电平有效CLK输入1时钟信号,上跳沿有效Mode输入2访问模式00:字访问,01:字节访问,10:2字节访问Dout输出32输出数据,不同访问模式有效数据均存放在最低位,高位忽略输入输出总线控制Byte3Byte2Byte1Byte0Dout组成字读出Byte3Byte2Byte1Byte0Din组成字写入00000000Byte3Byte2高半字读出00000000Byte3Byte2高半字写入Byte4Byte3Byte1Byte0低半字读出Byte4Byte3Byte1Byte0低半字写入00000000Byte4Byte3最高字节读出00000000Byte4Byte3最高字节写入Byte4Byte3Byte2Byte2次高字节读出Byte4Byte3Byte2Byte2次高字节写入00000000Byte4Byte1次低字节读出00000000Byte4Byte1次低字节写入Byte4Byte3Byte2Byte0最低字节读出Byte4Byte3Byte2Byte0最低字节写入手动测试对连续空间依次进行字写入,半字写入,字写入注意测试非对齐写入,重复覆盖写入然后进行字读出,半字读出,字读出自动测试MIPSRAM测试时钟频率4KHz,Ctrl+k,Command+k自动测试谭志虎下节课再见…stan@MIPS寄存器文件设计谭志虎实验目的设计MIPS寄存器文件32个寄存器,两个读端口,一个写入端口熟悉多路选择器、译码器、解复用器OPRsRtshamtRd6bitsfunct5bits5bits5bits5bits6bitsCLKPCRDA指令存储器20:1625:2115:11R1#R2#W#WDWE寄存器组R1R2ALU(Rs)+(Rt)CLKRegWriteAluOPCLKRDA指令存储器IM指令字20:1625:2115:11ALUR1#R2#W#WDWE寄存器文件RD1RD2RsRtRd(Rs)(Rt)add$s0,$s1,$s2(Rs)+(Rt)RdMIPS寄存器文件设计封装规格所需器件多路选择器,译码器,解复用器引脚输入/输出位宽功能描述R1#输入5第1个读寄存器的编号R2#输入5第2个读寄存器的编号W#输入5写入寄存器编号Din输入32写入数据WE输入1写使能信号,为1时在CLK上跳沿将Din数据写入W#寄存器CLK输入1时钟信号,上跳沿有效RD1输出32R1#寄存器的值,0号寄存器值恒零RD2输出32R2#寄存器的值,0号寄存器值恒零MIPS寄存器文件引脚定义寄存器文件自动测试自动测试故障记录自动评分时钟频率4KHz,Ctrl+k,Command+k

自动测试谭志虎下节课再见…stan@直接相联Cache逻辑实现谭志虎直接相联映射L1L0Ln-1B0B1…TagTag区地址区地址VVVVDDDDBn-1Cache

SRAMCache块号i,共n块,主存块号j,i=jmodns位b位区地址行地址(索引)字地址t位主存地址Cache槽Hit=?BnBn+1…B2n-1WmnWmn+1…B2nB2n+1…B3n-1Wmn+n-1B0B1…Bn-1…………主存DRAM0区1区2区m区n=2s,m=2t直接相联映射逻辑实现TAG数据块副本缓冲区0012377716661000001230有效位主存地址Tagindexoffset1=?L0L1L2L3L4L5L6L7行索引译码器L0L1L2L3L4L5L6L7SlotDataW1W0W2W3字输出字选择OESRAMHit/miss

Hit1=?L1行索引译码器L1666166612字输出字选择OEHit/missmissHit直接相联映射载入过程TAG数据块副本缓冲区010000000主存地址有效位tagindexoffset=?1F20241E4854107Cache8行,块大小4W,主存29WCache总容量=(valid+标记位+标志位+副本容量)*总行数访问序列Tagindexoffset0000100101001010001100011202122232425262748494A4B104105106107545556571C1D1E1F00001111100010000000010010000001111000100100000101010010001L0L1L2L3L4L5L6Hitmiss100000111L7L0L1L2L3L4L5L6L7字输出SlotDataW0W1W2W3字选择OE行地址译码器谭志虎下节课再见…stan@全相联Cache逻辑实现谭志虎全相联映射L0L1Ln-1BnBn+1…B2n-1BmnBmn+1…B2nB2n+1…B3n-1Bmn+n-1B0B1…Bn-1…………B0B1…VVVVDDDDBn-1主存(DRAM)cache副本(SRAM)主存块可放置在任意cache行b位主存块地址(标记)字(块内字偏移)t位主存地址主存块主存块主存块主存块Cache块Cache块Cache块Cache块查找表(CAM)Cache槽Hit=?=?=?全相联映射逻辑实现Tag(块地址)offset主存地址数据块副本缓冲区01230123比较结果1多路并发比较电路SlotDataL0L1L2L3L4L5L6L7字输出W0W1W2W3字选择OE译码信号L0L1L2L3L4L5L6L7========有效位TAG主存块地址66610000000查找表L0L0SRAMCAM22666Hit/miss字输出W0W1W2W3字选择OEL0全相联映射动态载入过程有效位TAG数据块副本缓冲区0000000W0W1W2W3011F20241E4854107访问序列tagoffset00001111000100012021222300010011242526270010010148494A4B1000001110410510610700101011545556571C1D1E1FmissCache8行,块大小4W,主存29WCache总容量=(valid+标记位+标志位+副本容量)*总行数比较结果Hit1FL1L2L3L4L5L6L7L0L1L2L3L4L5L6L7L0字输出SlotDataTagoffset主存地址000011111000100000000100100000011110001001000001010100100000111W0W1W2W3八路并发比较电路missHitmiss字选择OE谭志虎下节课再见…stan@组相联Cache逻辑实现谭志虎组相联映射L0组n-1L0组1L0组0L1BnBn+1…B2n-1B2nB2n+1…B0B1…Bn-1………高速缓存B0高速缓存B1标记标记VVDD主存Caches位b位标记组(索引)字地址t位主存地址L1高速缓存B0高速缓存B1标记标记VVDDL1高速缓存B0高速缓存B1标记标记VVDD…Cache分n组,n=2s每组k块,k路组相联Hit=?=?组索引译码输出组相联映射逻辑实现数据块副本缓冲区0123Hit/miss01231S0S1S2S3k路并发比较组索引译码器L0L1L2L3L4L5L6L7字输出SlotDataW0W1W2W3字选择OEL1L0L2L3L4L5L6L7==有效位Tag11666177710000S0S1S2S3行译码信号逻辑主存地址TagindexoffsetSRAMCAMK0K1查找表组相联映射动态载入过程有效位数据块副本缓冲区1主存地址Hit/missTagindexoffsetTAG1F20241E4854107访问序列00000000tagindexoffset000101000101001011001001000011100001202122232425262748494A4B104105106107545556571C1D1E1F000011111000100000000100100000011110001001000001010100100000111S0S1S2S3组索引译码器组索引译码输出行译码信号逻辑L0L1L2L3L4L5L6L7字输出SlotDataW0W1W2W3字选择OES3S0S1S2Cache8行,分4组,块大小4W,主存29WCache总容量=(valid+标记位+标志位+副本容量)*总行数L1L0L2L3L4L5L6L7K0K1S3L6字输出W0W1W3字选择OEW2Hit2路并发比较Miss谭志虎下节课再见…stan@硬件Cache机制设计谭志虎实验目的掌握cache实现的三个关键技术:数据查找,地址映射,替换算法熟悉译码器,多路选择器,编码器,寄存器的使用能根据不同的映射策略在Logisim平台中实现cache机制实验要求设计实现一个具有8个cache槽的cache主存地址16位,cache块大小为4字节直接相联、全相联、2路组相联、4路组相联

命中(HIT)读请求CacheCache硬件设计实验Cache模块引脚分布引脚输入/输出位宽功能描述Addr输入16数据地址Data输出8cache数据输出Miss输出1缺失状态,高电平有效BlkDin输入32块数据BlkReady输入1二级存储器块数据就绪信号,高电平有效CLK输入1时钟信号,上跳沿有效实验步骤(全相联为例)Tagoffset主存地址数据块副本缓冲区012301230123比较结果1多路并发比较电路SlotDataL0L1L2L3L4L5L6L7字输出W0W1W2W3字选择OE译码信号L0L1L2L3L4L5L6L7有效位TAG10000000查找表Hit/missL0L0字输出W0W1W2W3字选择OECache槽多路并发比较电路1.设计Cache槽2.设计查找逻辑3.读命中逻辑4.读缺失逻辑字输出W0W1W2W3字选择OE5.块载入逻辑读缺失逻辑全相联if(存在空行)

写入行=空行号(编码器)else

写入行=淘汰行LRU算法8路归并比较找到淘汰行计数器累加,命中清零块载入逻辑

if(blkready==1)

写入行写入数据块BlkDin、标记直接相联写入行=当前地址对应行

无淘汰算法组相联if(当前地址对应组存在空行)

写入行=空行号(编码器)else

写入行=淘汰行LRU算法Cache槽(行)设计样例(全相联为例)数据块副本,元数据(Valid标志、主存块地址标记位、淘汰标志计数)寄存器存储数据,位宽?槽数据输出控制数据输出到同一总线,如SlotData,增加三态门控制,数据并发输出,各槽不同标签名,如V0、Tag0、C0,复制8份后修改各槽标签名淘汰计数位宽?累加时机?清零时机?Cache性能测试谭志虎下节课再见…stan@单周期MIPSCPU---1谭志虎MIPSCPU控制器设计定长指令周期:单周期实现所有指令均在一个时钟周期内完成,CPI=1

性能取决于最慢的指令,时钟周期过长变长指令周期:多周期实现缩短时钟周期,复用器件或数据通路可支持流水操作,提升性能MIPS指令格式OPRSRtshamtRd6bitsfunct5bits5bits5bits5bits6bitsR型指令OPRSRt

6bits立即数5bits5bits16bitsI型指令OP6bits立即数26bitsJ型指令R型指令格式R型指令OPRsRtshamtRd6bitsfunct5bits5bits5bits5bits6bitsadd$s1,$s2,$s30181901732sub$s0,$s1,$s20171801634sll$s0,$s1,200172160I型指令格式I型指令OPRSRt

6bits立即数5bits5bits16bitsaddi$s1,$s2,200818

17200lw$s1,300($s2)351817300beq$s1,$s2,40041817400取指令数据通路PC单周期不能设置AR,DR,IR寄存器程序和数据分开存放---哈佛结构指令存储器数据存储器指令cache数据cache运算器和PC累加器分离CLKRDA指令存储器指令字4+PC+4AddrMem[PC++]

IRRDA指令存储器+RDA指令存储器R型指令数据通路CLKPCRDA指令存储器20:1625:2115:11R1#R2#W#WDWE寄存器组R1R2ALU(Rs)+(Rt)CLKRegWriteAluOPCLKRDA指令存储器IM指令字20:1625:2115:11ALUR1#R2#W#WDWE寄存器组R1R2RsRtRd(Rs)(Rt)add$s0,$s1,$s2(Rs)+(Rt)Rd6bits5bits5bits5bits5bits6bitsOPRSRtshamtRdfunctLw指令数据通路CLKPCRDA指令存储器20:1625:2115:0SignExtendSignImmR1#R2#W#WDWE寄存器组R1R2ALUWERDA数据存储器WDCLKCLKRegWriteAluOPCLKPC20:1625:2115:0SignImmALU寄存器组R1#R2#W#WDWER1R2CLKWERDA数据存储器DMWDCLKRsRtlw$s0,32($s1)(Rs)地址RDA指令存储器IMSignExtendMem[(Rs)+Imm])Rt指令字立即数OPRSRt

6bits立即数5bits5bits16bitssw指令数据通路sw$s0,32($s1)CLKPCRDA指令存储器指令字20:1625:2115:0SignExtendR1#R2#W#WDWE寄存器组R1R2ALUWERDA数据存储器WDCLKCLKRegWriteAluOPMemWriteCLKPC指令字20:1625:2115:0R2WERDA数据存储器WDCLK(Rt)

Mem[(Rs)+Imm])SignExtendRsRt地址(Rs)(Rt)ALU立即数R1#R2#W#WDWE寄存器组R1CLKR2RDA指令存储器OPRSRt

6bits立即数5bits5bits16bits谭志虎下节课再见…stan@单周期MIPSCPU---2谭志虎数据通路综合CLKPCRDA指令存储器指令字20:1625:2115:1115:0SignExtendSignImm010101SrcBSrcAALUALUResultWriteDataWERDA数据存储器WDReadDataWriteBackDataR1#R2#W#WDWE寄存器组R1R2CLKCLKRegWriteAluSrcAluOPMemToRegRegDst凡是有多个输入来源的,增加MUX,引入控点OPRSRt

6bits立即数5bits5bits16bits6bits5bits5bits5bits5bits6bits000000RSRtshamtRdfunctR型指令I型指令rtrd单周期MIPS数据通路MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:2115:1115:0SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R201010101<<2+PCBranchSrcBSrcAEqualALUALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4控制器FuncOprsrtrdPC+4R型指令数据通路建立过程MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:21SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R2010101<<2+PCBranchSrcBSrcAEqualALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4rsrtrdMemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPC指令字4PC+45:020:1625:2115:1115:0SignExtendSignImm+PCBranchSrcAEqualALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKPC+4rsrtRDA指令存储器01R1#R2#W#WDWE寄存器堆R1R2CLK+01控制器FuncOp控制器FuncOp①①ALUALU01010101移位指令如何实现OPRSRtshamtRd6bitsfunct5bits5bits5bits5bits6bitsR型指令R1#R2#W#WDWE寄存器堆R1R2CLKLW指令数据通路建立过程MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:21SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R2010101<<2+PCBranchSrcBSrcAEqualALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4rsrtrdMemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPC指令字4PC+45:020:1625:2115:1115:0SignExtendSignImm+PCBranchSrcAEqualALUResultWriteDataReadDataWriteBackData++BranchAddress31:26WERDA数据存储器WDCLKPC+4rsrtRDA指令存储器01R1#R2#W#WDWE寄存器堆R1R2CLK+01控制器FuncOp控制器FuncOp①①ALUALU01010101R1#R2#W#WDWE寄存器堆R1R2CLKSignExtendOPRSRt

6bits立即数5bits5bits16bitsSW指令数据通路建立过程MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:21SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R2010101<<2+PCBranchSrcBSrcAEqualALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4rsrtrdMemtoRegMemWriteBranchAluOPALUSrcRegDstPCSrcCLKPC指令字4PC+45:020:1625:2115:1115:0SignExtend+PCBranchSrcAEqualALUResultWriteDataReadDataWriteBackData++BranchAddress31:26WERDA数据存储器WDCLKPC+4rsrtRDA指令存储器01R1#R2#W#WDWE寄存器堆R1R2CLK+01控制器FuncOp控制器FuncOp①①ALUALU01010101SignExtendOPRSRt

6bits立即数5bits5bits16bitsBeq指令数据通路建立MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:21SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R2010101<<2+PCBranchSrcBSrcAEqualALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4rsrtrdMemWriteAluOPALUSrcPCSrcCLKPC指令字4PC+45:020:1625:2115:1115:0SignExtendSignImm+PCBranchSrcAEqualALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKBranchPC+4rsrtRDA指令存储器01控制器FuncOp控制器FuncOp①ALUALU010101SignExtend+<<2R1#R2#W#WDWE寄存器堆R1R2CLKOPRSRt

6bits立即数5bits5bits16bitsJ型指令数据通路建立?MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:2115:1115:0SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R201010101<<2+PCBranchSrcBSrcAEqualALUALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4控制器FuncOprsrtrd单周期MIPS控制器设计输入信号指令字Opcode,Func字段(12位)输出信号多路选择器选择信号寄存器写使能信号内存访问控制信号运算器控制信号,指令译码信号纯组合逻辑电路,无时序逻辑MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWrite5:031:26FuncOp控制器谭志虎下节课再见…stan@多周期MIPSCPU---1谭志虎单周期MIPS关键路径---LW指令CLK指令字4PC+420:1625:21SignExtendSignImm0101<<2+PCBranchSrcBSrcAALUResultWriteDataReadDataWriteBackData++BranchAddressCLKPC+4rsrtrdCLK指令字4PC+420:1625:2115:1115:0SignImm+PCBranchSrcAALUResultWriteDataReadDataWriteBackData++BranchAddressPC+4rsrtALU0101RDA指令存储器ALU01Tclk_to_qTregfile_readTmemTaluTmemTmuxTsetupR1#R2#W#WDWE寄存器堆R1R2CLKRDA指令存储器性能取决于最慢的指令,时钟周期过长SignExtendWERDA数据存储器WDPCPC多周期MIPS数据通路特点不再区分指令/数据存储器,分时使用功能部件时钟周期变小、传输通路变短功能部件输出端增加寄存器锁存数据PCAddress存储器DinWDR1#R2#W#ABALUALUOutIRDRR1R2DoutRegFile多周期MIPSCPU数据通路ALUENCLK31:265:001AddrInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultCAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101WERDAMemoryWDCLKALUCLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101C多周期MIPS取指令阶段T1CLK31:265:0AddrInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultAluoutEN01rsrtrdCLKWERDAMemoryWDCLKCLKCLKCLKIRDRMemWriteBranchPCSrcAluOpALUSrcAPCEnPCPCWriteALUSrcBIRWrite01010101Mem[PC]IRPC+4PCALUPC+4PCMem[PC]IRCLKENENCLKCLKEN控制器FuncOp多周期MIPS取指令阶段T2ALUENCLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21SignExtendABSignImm4<<2SrcASrcBEqualAluResultAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101CLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21ABSignImm4SrcASrcBEqualAluResultAluout01rsrtrdENCLKCLKCLKCLKIRDRPC+4010101译码、RegA、B、PC+4+Imm16<<2CENCLKSignExtend<<2CCLKCAluOpALUSrcBALU控制器FuncOpIorDIRWriteMemWritePCWriteBranchPCSrcALUSrcARegWritePCEnRegDstMemtoReg00011011CLKR1#R2#W#WDWER1R2RegisterFileCLKR1#R2#W#WDWER1R2RegisterFileCLK谭志虎下节课再见…stan@多周期MIPSCPU---2谭志虎R型指令执行状态周期T3~T4ALUENCLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultCAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101ENCLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21ASignImm4<<2SrcASrcBEqualAluResult01rsrtrdENCLKCLKCLKCLKCCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcPCEnRegWriteRegDstMemtoRegPC+400011011AluOpALUSrcBALUSrcA010101ALUT3:运算CLKT4:写回R1#R2#W#WDWER1R2RegisterFileLW指令执行状态周期T3~T5ENCLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21SignExtendABSignImm4<<2SrcASrcBEqualAluResultAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC010101ENCLK31:265:0AddrInstrData15:015:1120:1625:21ASignImm4<<2SrcASrcBEqualAluResult控制器FuncOprsrtrdENCLKCLKCLKCLKIRDRIRWriteMemWritePCWriteBranchPCSrcPCEnRegDstRegWriteMemtoRegPC+400011011AluOpALUSrcBALUSrcAIorD01010101T4:访存T3:算操作数地址T5:写回00011011R1#R2#W#WDWER1R2RegisterFileCLKR1#R2#W#WDWER1R2RegisterFile01CCCLKALUALUWERDAMemoryWDCLKBeq指令执行状态周期T3ALUENCLK31:265:001AddrWERDAMemoryWDInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultCAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101CLK31:265:0AddrWERDAMemoryWDInstrData15:015:1120:1625:21ASignImm4<<2SrcAEqualAluResultC控制器FuncOp01rsrtrdENCLKCLKCLKCLKCLKIRDRIRWriteMemWritePCWritePCEnRegDstMemtoRegPC+40101R1#R2#W#WDWER1R2RegisterFile01比较00011011CLK分支地址ALUSrcBAluOpALUSrcA01ALUBranchPCSrcENCLK多周期状态转换图MemtoReg=1RegWrite=1lorD=1ALUSrcA=1ALUSrcB=10ALUOp=XXAluSrcB=01ALUop=xxIRWrite=1PCWrite=1ALUSrcB=11ALUOp=xxALUSrcA=1ALUOp=xxALUSrcA=1ALUOp=xxPCSrc=1BranchlorD=1MemWrite=1RegDst=1RegWrite=1S4:MemWritebackS3:MemReadS2:MemAdrS6:ExecuteS7:ALUWritebackS8:Branch0S5:MemWriteResetLW/SWR-typeLWSWBEQ运算运算结果写回运算地址S0:Fetch取指令S1:Decode译码计算分支地址比较分支读内存写内存访存结果写回谭志虎下节课再见…stan@单周期MIPSCPU设计谭志虎实验目的掌握硬布线控制器设计的基本原理能利用相关原理在Logisim平台中设计实现MIPS单周期CPU主要任务绘制MIPSCPU数据通路实现单周期硬布线控制器测试联调核心指令集(可实现内存区域冒泡排序)#MIPS指令RTL功能描述1add

$rd,$rs,$rtR[$rd]←R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd]2slt

$rd,$rs,$rtR[$rd]←R[$rs]<R[$rt]小于置1,有符号比较3addi$rt,$rs,immR[$rt]←R[$rs]+SignExt16b(imm)溢出产生异常4lw$rt,imm($rs)R[$rt]←Mem4B(R[$rs]+SignExt16b(imm))5sw$rt,imm($rs)Mem4B(R[$rs]+SignExt16b(imm))←R[$rt]6beq

$rs,$rt,immif(R[$rs]=

R[$rt])

PC

PC

+

SignExt18b({imm,00})7bne

$rs,$rt,immif(R[$rs]!=

R[$rt])

PC

PC

+SignExt18b({imm,00})8syscall系统调用,这里用于停机单周期MIPS参考数据通路MemtoRegMemWriteBranchAluOPALUSrcRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:2115:1115:0SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R201010101<<2+PCBranchSrcBSrcAEqualALUALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4控制器FuncOprsrtrd步骤1:构建MIPS主机通路在MIPS单周期CPU子电路中,利用如下组件构建MIPS单周期CPU数据通路PC、IMEM、RegFile、ALU、DMEM、Controller步骤2:设计单周期MIPS控制器输入信号指令字Opcode,Func字段(12位)输出信号多路选择器选择信号内存访问控制信号寄存器写使能信号运算器控制信号、指令译码信号纯组合逻辑电路、无时序逻辑控制信号功能说明(8条核心指令集)#控制信号信号说明产生条件1MemToReg写入寄存器的数据来自存储器

lw指令2MemWrite写内存控制信号

sw指令未单独设置MemRead信号3BeqBeq指令译码信号Beq指令4BneBne指令译码信号Bne指令5AluOP运算器操作控制符加法,比较两种运算6AluSrcB运算器第二输入选择Lw指令,sw指令,addi7RegWrite寄存器写使能控制信号寄存器写回信号8RegDst写入寄存器选择控制信号R型指令9Halt停机信号,取反后控制PC使能端syscall指令完善硬布线控制器内部逻辑打开CPU.circ打开单周期硬布线控制器电路实现指令译码、ALU控制逻辑完善控制信号逻辑增加简单的组合逻辑根据给出的指令译码信号,实现所有控制信号逻辑步骤3:CPU测试在指令存储器中载入排序程序sort.hex时钟自动仿真,Windows:

Ctrl+kMac:command+k运行程序程序停机后,查看数据存储器中排序情况,有符号降序排列谭志虎下节课再见…stan@单周期MIPS(24条指令)谭志虎实验目的掌握单周期MIPSCPU设计的基本原理熟悉MIPS基本指令系统在Logisim平台中设计实现MIPS单周期CPU24条基础指令运行标准测试程序主要任务构建MIPSCPU数据通路单周期硬布线控制器实现软硬件测试联调24条指令#指令类型指令1R型指令移位运算:SLL、SRA、SRL算术运算:ADD、ADDU、SUB逻辑运算:AND、OR、NOR比较运算:SLT、SLTU分支指令:JR系统调用:SYSCALL功能细分:输出/停机2I型指令分支指令:BEQ、BNE立即数运算指令:ADDI、ADDIU、SLTI、ANDI、ORI访存指令:LW、SW3J型指令J、JALSyscall指令MIPS系统调用输入参数:$a0,$v0寄存器If$v0==34

数码管显示$a0值else暂停,等待Go按钮事件步骤1:构建MIPS主机通路cpu24.circ

单周期MIPS

子电路利用如下组件构建单周期MIPSCPU数据通路数据存储器单周期MIPSCPU示意图MemtoRegMemWriteBranchAluOPALUSrcBRegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:2115:1115:0SignExtendSignImmR1#R2#W#WDWE寄存器堆R1R201010101<<2+PCBranchSrcBSrcAEqualALUALUResultWriteDataWERDA数据存储器WDReadDataWriteBackData++BranchAddress31:26CLKCLKPC+4控制器FuncOprsrtrd步骤2:设计单周期MIPS控制器纯组合逻辑输入信号指令字OpCode(6位)Funct字段(6位)输出信号多路选择器选择信号功能部件控制信号控制器输出信号说明信号分类#控制信号信号说明产生条件(信号为1)功能部件控制信号1RegWrite寄存器写使能寄存器写回信号2MemWrite写内存控制信号

sw指令未单独设置MemRead信号3AluOP运算器操作控制符(4位)

R型指令根据Funct选择多路选择器选择信号4MemToReg寄存器写入数据来自存储器

lw指令5RegDst写入寄存器编号rt/rd选择R型指令6AluSrcB运算器B输入选择lw指令,sw指令,立即数运算类指令7SignedExt立即数符号扩展ADDI、ADDIU、SLTI指令8JR寄存器跳转指令译码信号JR指令9JALJAL指令译码信号JAL指令,选择寄存器写回编号,写回值10JMP无条件分支控制信号J、JAL、JR指令,选择无条件分支地址11BeqBeq指令译码信号Beq指令,用于有条件分支控制12BneBne指令译码信号Bne指令,用于有条件分支控制13SyscallSyscall指令译码信号根据$V0寄存器的值,决定是停机还是输出控制器内部结构运算器控制器控制信号生成利用表达式自动生成两子电路真值表

逻辑表达式Logisim电路自动生成构建控制信号生成电路真值表输入信号输出信号自动生成表达式EXCEL自动筛选控制信号生成电路打开控制信号生成子电路ProjectAnalyzeCircuit点击表达式选项卡找到对应的输出信号输入表达式,点击Enter注意去掉最后一个加号点击BuildCircuit(生成电路)31245步骤3:CPU测试在指令存储器中载入测试程序镜像文件benchmark.hex时钟自动仿真,Windows:

Ctrl+kMac:command+k运行程序程序自动停机周期数1546数据存储器中数据有符号降序排列内存排序结果谭志虎下节课再见…stan@多周期MIPS微程序谭志虎实验目的掌握多周期MIPSCPU设计原理掌握微程序控制器设计的基本原理利用微程序控制器的设计实现多周期MIPS处理器主要任务绘制多周期MIPSCPU数据通路实现微程序控制器测试联调核心指令集8条(可实现内存区域冒泡排序)#MIPS指令RTL功能描述1add

$rd,$rs,$rtR[$rd]←R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd]2slt

$rd,$rs,$rtR[$rd]←R[$rs]<R[$rt]小于置1,有符号比较3addi$rt,$rs,immR[$rt]←R[$rs]+SignExt16b(imm)溢出产生异常4lw$rt,imm($rs)R[$rt]←Mem4B(R[$rs]+SignExt16b(imm))5sw$rt,imm($rs)Mem4B(R[$rs]+SignExt16b(imm))←R[$rt]6beq

$rs,$rt,immif(R[$rs]=

R[$rt])

PC

PC

+

SignExt18b({imm,00})7bne

$rs,$rt,immif(R[$rs]!=

R[$rt])

PC

PC

+SignExt18b({imm,00})8syscall系统调用,这里用于停机多周期MIPSCPU数据通路参考ALUENCLK31:265:001AddrInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultCAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101WERDAMemoryWDCLK步骤1:构建多周期MIPSCPU数据通路在MIPS多周期CPU(微程序)子电路中,利用如下组件构建CPU数据通路PC、MEM、IR、DR、RegFile、ALU、Controller步骤2:设计微程序控制器输入信号指令字Opcode,Func字段(12位)时钟信号、复位信号输出信号多路选择器选择信号内存访问控制信号寄存器写使能信号运算器控制信号、指令译码信号控制信号功能说明(8条核心指令集)#控制信号信号说明产生条件1PCWritePC写使能控制取指令周期,分支指令执行2IorD指令还是数据

0表示指令,1表示数据3IRwrite指令寄存器写使能高电平有效4MemWrite写内存控制信号

sw指令5MemRead读内存控制信号lw指令取指令6BeqBeq指令译码信号Beq指令7BneBne指令译码信号Bne指令8PcSrcPC输入来源顺序寻址还是跳跃寻址9AluOP运算器操作控制符4位

ALU_Control控制,00加,01减,10由Funct定10AluSrcA运算器第一输入选择

11AluSrcB运算器第二输入选择Lw指令,sw指令,addi12RegWrite寄存器写使能控制信号寄存器写回信号13RegDst写入寄存器选择控制信号R型指令14MemToReg写入寄存器的数据来自存储器

lw指令微程序控制器内部架构译码阶段地址转移逻辑下址字段逻辑微指令载入微程序,设计地址转移逻辑1.完善控制器内部逻辑打开CPU.circ打开多周期微程序控制器电路首先完成如下电路逻辑:指令译码、ALU控制2.实现微程序地址转移逻辑填写微程序地址入口表(Excel表微程序地址转移逻辑自动生成.xlsx

)左侧是译码信号,右侧是对应类型指令对应的入口地址,地址转移逻辑会自动生成自动生成微程序地址转移逻辑子电路Logisim的分析电路功能ProjectAnalyzeCircuit构建指令状态变换图一个状态对应一个时钟周期一个状态对应一条微指令状态值对应微指令地址3.根据状态图构建微程序状态值

微指令地址不同状态

微控制信号、P字段设置、下址字段

微指令

微程序微指令、微程序自动生成Excel表格步骤3:CPU测试在存储器中载入排序程序sort.hex时钟自动仿真,Windows:

Ctrl+kMac:command+k运行程序程序停机后,查看数据存储器中排序情况,有符号降序排列谭志虎下节课再见…stan@多周期MIPS硬布线谭志虎实验目的熟悉多周期MIPSCPU设计原理掌握硬布线控制器设计的基本原理利用硬布线控制器的设计实现多周期MIPS处理器主要任务绘制多周期MIPSCPU数据通路实现多周期硬布线控制器测试联调核心指令集8条(可实现内存区域冒泡排序)#MIPS指令RTL功能描述1add

$rd,$rs,$rtR[$rd]←R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd]2slt

$rd,$rs,$rtR[$rd]←R[$rs]<R[$rt]小于置1,有符号比较3addi$rt,$rs,immR[$rt]←R[$rs]+SignExt16b(imm)溢出产生异常4lw$rt,imm($rs)R[$rt]←Mem4B(R[$rs]+SignExt16b(imm))5sw$rt,imm($rs)Mem4B(R[$rs]+SignExt16b(imm))←R[$rt]6beq

$rs,$rt,immif(R[$rs]=

R[$rt])

PC

PC

+

SignExt18b({imm,00})7bne

$rs,$rt,immif(R[$rs]!=

R[$rt])

PC

PC

+SignExt18b({imm,00})8syscall系统调用,这里用于停机多周期MIPSCPU数据通路参考ALUENCLK31:265:001AddrInstrData15:015:1120:1625:21SignExtendR1#R2#W#WDWER1R2RegisterFileABSignImm4<<2SrcASrcBEqualAluResultCAluoutEN控制器FuncOp01rsrtrdCLKCLKCLKCLKCLKCLKIRDRIorDIRWriteMemWritePCWriteBranchPCSrcAluOpALUSrcBALUSrcARegWritePCEnRegDstMemtoRegPC00011011010101WERDAMemoryWDCLK步骤1:构建多周期MIPSCPU数据通路在MIPS多周期CPU(硬布线)子电路中,利用如下组件构建CPU数据通路PC、MEM、IR、DR、RegFile、ALU、Controller步骤2:设计硬布线控制器输入信号指令字Opcode,Func字段(12位)时钟信号、复位信号输出信号多路选择器选择信号内存访问控制信号寄存器写使能信号运算器控制信号、指令译码信号控制信号功能说明(8条核心指令集)#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论