




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单周期CPU高小鹏北京航空航天大学计算机学院计算机组成与实现目录概述单周期CPU设计模型数据通路基础部件建模组装数据通路控制介绍综合数据通路与控制器MIPS-C0指令集加减法指令addurd,rs,rtsuburd,rs,rt立即数指令orirt,rs,imm16存储访问指令lwrt,rs,imm16swrt,rs,imm16分支指令beqrs,rt,imm16函数调用指令jaltarget函数返回指令jrrs312625212016151110650oprsrtrdshamtfunct6位5位5位5位5位6位312625212016151110650oprsrtimm166位5位5位16位312625212016151110650oprsrtimm166位5位5位16位3126250opimm266位5位5位16位312625212016151110650oprsrtimm166位5位5位16位31262521201110650oprs000000000000000funct6位5位5位5位5位6位MIPS-C0指令集加减法指令addurd,rs,rtsuburd,rs,rt立即数指令orirt,rs,imm16存储访问指令lwrt,rs,imm16swrt,rs,imm16分支指令beqrs,rt,imm16函数调用指令jaltarget函数返回指令jrrs312625212016151110650oprsrtrdshamtfunct6位5位5位5位5位6位312625212016151110650oprsrtimm166位5位5位16位312625212016151110650oprsrtimm166位5位5位16位3126250opimm266位5位5位16位312625212016151110650oprsrtimm166位5位5位16位31262521201110650oprs000000000000000funct6位5位5位5位5位6位MIPS-C0指令集从功能角度,MIPS-C0可以构造程序设计的绝大多数功能lw、sw:存储指令的典型代表addu、subu:运算类指令的典型代表beq:分支类指令的典型代表jal、jr:支持函数从结构角度,MIPS-C0包含了所有3种指令格式R型:addu、subu、jrI型:lw、sw、beqJ型:jal注意Jr是R型指令,而不是J型指令MIPS-C0的RTL描述任何指令执行的第一步都是取指令R-format:{op,rs,rt,rd,shamt,funct}
MEM[PC]I-format:{op,rs,rt,imm16}
MEM[PC]MIPS-C0的RTL描述指令RTL描述adduR[rd]
R[rs]+R[rt];PC
PC+4subuR[rd]
R[rs]–R[rt];PC
PC+4oriR[rt]
R[rs]|zero_ext(imm16);PC
PC+4lwR[rt]
MEM[R[rs]+sign_ext(imm16)];PC
PC+4swMEM[R[rs]+sign_ext(imm16)]
R[rt];PC
PC+4beqif(R[rs]==R[rt])
thenPC
PC+4+(sign_ext(imm16)||00)
elsePC
PC+4jalPC
PC31..28||instr_index||02;R[31]
PC+4jrPC
R[rs]CPU开发过程概述5步骤1)分析每条指令的RTL,梳理和总结出数据通路的设计需求2)选择恰当的数据通路功能部件3)组装数据通路根据指令RLT,分析并建立功能部件间的正确连接关系4)根据指令RTL,分析功能部件应执行的功能,反推相应的控制信号取值5)生成控制器构造控制信号真值表,然后推导出控制信号的最简表达式根据最简表达式构造门电路目录概述单周期CPU设计模型数据通路基础部件建模组装数据通路控制介绍综合数据通路与控制器数据通路的主要功能部件指令存储器(InstructionMemory,IM)读数据:输入地址,输出数据(即指令)数据存储器(DataMemory,DM)读数据:输入地址,输出数据写数据:输入地址&数据寄存器堆(RegisterFile,RF)读寄存器:输入2个读寄存器编号,输出两个32位值写寄存器:输入写寄存器编号&32位值PCNPC(NextPC,NPC)计算下一个PC值:输入PC,输入Imm,输出计算结果ALU(ArithmeticandLogicUnit,ALU)加/减/或:输入2个操作数,输出计算结果注意模型刻画了指令执行过程中的主要信息流的基本流动路径。模型不是完整的设计。对于分析更细微、更精确的设计细节的依赖与连接关系,模型具有重要指导意义。数据通路的抽象模型指令执行的主要步骤取指令、译码/读操作数、执行、访存、回写
指令存储器寄存器堆
数据存储器PCNPCALU1.取指令2.译码/读操作数3.执行4.访存5.回写rsrtrdimm数据通路分解1/5第1步:取指令(包含2个同时执行的功能)功能1:PC驱动IM输出指令功能2:PC驱动NPC计算下一个PC值
指令存储器寄存器堆
数据存储器PCNPCALU1.取指令2.译码/读操作数3.执行4.访存5.回写rsrtrdimm数据通路分解2/5第2步:译码/读操作数(包含2个同时执行的功能)功能1:IM驱动控制器(图中未画)分析指令的opcode和funct域功能2:IM驱动RF读出2个寄存器值
指令存储器寄存器堆
数据存储器PCNPCALU1.取指令2.译码/读操作数3.执行4.访存5.回写rsrtrdimm数据通路分解3/5第3步:执行RF输出的寄存器值驱动ALU完成相应的计算算数运算(+,-,*,/),移位,逻辑(&,|),比较(slt,==)同时还承担计算lw和sw的地址
指令存储器寄存器堆
数据存储器PCNPCALU1.取指令2.译码/读操作数3.执行4.访存5.回写rsrtrdimm第4步:访存lw:DM输入地址后,就输出数据sw:DM有2个输入,地址&要写入的数据
只有lw和sw指令在该环节有实际操作,其他指令不涉及该环节数据通路分解4/5
指令存储器寄存器堆
数据存储器PCNPCALU1.取指令2.译码/读操作数3.执行4.访存5.回写rsrtrdimm第5步:回写操作:写ALU计算结果或数据存储器读出的数据至寄存器堆beq、jal、jr、sw不涉及该环节数据通路分解5/5
指令存储器寄存器堆
数据存储器PCNPCALU1.取指令2.译码/读操作数3.执行4.访存5.回写rsrtrdimm对于很多指令来说,它具有双重功效它在第3阶段服务于读取操作数它在第5阶段服务于回写结果为逻辑清晰起见,可以“再部署”一个寄存器堆前者代表读出,后者代表写入寄存器堆在数据通路中的独特地位
指令存储器寄存器堆
数据存储器PCNPCALU寄存器堆1.取指令2.译码/读操作数3.执行4.访存5.回写为什么是5个阶段?是否可以有不同的阶段数?可以有不同的阶段数早期CPU的阶段数甚至只有2-3个现代CPU的阶段数甚至可能达到20-30个为什么MIPS采用5阶段?虽然有些指令用不到5阶段,但lw却必须用到5阶段事实上,有些早期MIPS也不是5阶段目录概述单周期CPU设计模型数据通路基础部件建模寄存器组装数据通路控制介绍综合数据通路与控制器1位D寄存器:标准的寄存器1位D寄存器1234567891011moduled_ff(d,q,clk);inputd,clk;outputq;regr;assignq=r;always@(posedgeclk)r<=d;endmodule19r:寄存器将r从q输出告诉编译器,以下行为按寄存器建模时钟上升沿时,将输入保存至r1位写使能D寄存器1位写使能D寄存器12345678910111213moduled_ff(d,we,q,clk);inputd,we;outputq;inputclk;regr;assignq=r;always@(posedgeclk)if(we)r<=d;endmodule20寄存器建模的完整写法:if(we)r<=d;elser<=r;Q:为什么可以忽略else?A:对于缺少的分支,编译器会自动补充“r<=r”。1位写使能D异步复位寄存器1位写使能D异步复位寄存器123456789101112131415moduled_ff(d,we,q,clk,rst);inputd,we;outputq;inputclk,rst;regr;assignq=r;always@(posedgeclkorposedgerst)if(rst
)r<=1’b0;elseif(we
)r<=d;endmodule21TIPS:分析方法由于rst在敏感表中,因此rst的有效和clk的有效,均会导致always语句块执行。这意味着rst对d的作用与clk无关,故这就是异步复位。Q:在设计中如何选择异步复位or同步复位?32位写使能寄存器32位写使能寄存器1234567891011121314moduled32(d,we,q,clk);input[31:0]d;inputwe;output[31:0]q;inputclk;reg[31:0]r;assignq=r;always@(posedgeclk)if(we
)r<=d;endmodule22TIPS:对于N位寄存器,仅仅改变输入信号、输出信号和内部寄存器定义的位数即可。目录设计方法学概述单周期CPU设计模型数据通路基础部件建模PC组装数据通路控制介绍综合数据通路与控制器PCPC就是一个32位的寄存器因为每条指令占用4B,所以PC的b1与b0恒为032位寄存器可以优化为30位寄存器PC需要在系统复位后有一个确定的初值,即第1条指令的地址这里先假设为0000_0000hCLKDI3232DO功能描述Reset有效,寄存器置初值0x0000_0000信号名方向描述ClkIMIPS-C处理器时钟ResetI复位信号DI[31:0]I32位输入DO[31:0]O32位输出目录设计方法学概述单周期CPU设计模型数据通路基础部件建模NPC组装数据通路控制介绍综合数据通路与控制器NPC任何指令的第一步除了取指令外,还要更新PCNPC的用途是计算出下一条指令的地址
指令存储器PCNPC指令3216指令NPC执行的计算顺序执行指令addu/subu/ori/lw/swPC+4分支beqPC+4PC+4+imm16信号名方向描述PC[31:0]I当前指令的地址imm16[15:0]I16位偏移brIbeq指令标志1:当前指令是beq0:当前指令不是beqNPC[31:0]O下一条指令的地址NPC(增加zero)任何指令的第一步除了取指令外,还要更新PC更新PC,首先是NPC要计算出下一条指令的地址
指令存储器PCNPC指令3216指令NPC执行的计算顺序执行指令addu/subu/ori/lw/swPC+4分支beqPC+4PC+4+imm16信号名方向描述PC[31:0]I当前指令的地址imm16[15:0]I16位偏移brIbeq指令标志1:当前指令是beq0:当前指令不是beqzeroIrs与rt相等的比较结果NPC[31:0]O下一条指令的地址beq的RTLPC(rs==rt)?PC+4+sext(imm16):PC+4目录设计方法学概述单周期CPU设计模型数据通路基础部件建模寄存器堆组装数据通路控制介绍综合数据通路与控制器寄存器堆寄存器堆包含32个寄存器RD1和RD2:读出的2个寄存器值WD:写回的值寄存器编号A1和A2:读取的第1个和第2个寄存器的编号A3:写入的寄存器编号写使能并非所有的指令都要写寄存器,因此寄存器堆需要有写使能信号Wr在时钟上升沿时,如果Wr=1,则WD3才能被写入A3寄存器中与指令存储类似,寄存器堆执行读出操作时可视为组合逻辑A1/A2有效一段时间后,RD1/RD2就输出正确的值WrA1A2A3WDRD1RD2555323232寄存器堆的设计考虑内部需要多少个32位寄存器?31个。0号寄存器采用接地的特殊设计读出数据功能:32位31选1MUX2个读出端口是独立工作无需彼此等待写入数据功能:关键是写使能每个寄存器需要一个写使能DEMUX:分离器/解码器N位编码产生2N个输出有且仅有1个输出有效30WrA1A2A3WDRD1RD2555323232R1R31013101310131&&ENENA3WDWrA1A2RD1RD2XCLKDEMUXdemultiplexer~DEMUX寄存器堆的设计考虑示例:2-4型DEMUXA为输入2位,Y3至Y0均为1位输出31R1R31013101310131&&ENENA3WDWrA1A2RD1RD2XCLK5-32型DEMUXAY3Y2Y1Y0000001010010100100111000
用行为建模方法建模RFRF写入语句利用了RW是输入信号(即RW是变值)这一特性Verilog建模RF32reg[31:0]rf[31:1];always@(posedgeclk)if(WE)rf[A3]<=WD;assignRD1=(A1==0)?32’b0:rf[A1];assignRD2=…R1R31013101310131&&ENENA3WDWEA1A2RD1RD2XCLK目录设计方法学概述单周期CPU设计模型数据通路基础部件建模指令存储器组装数据通路控制介绍综合数据通路与控制器指令存储器存储器可以理解为一个数组存储器的地址就是数组的下标给出存储器地址,存储器就输出对应单元的数据执行读出操作时,存储器行为可视为组合逻辑地址A有效一段时间后,数据RD就输出正确的值这个所谓的“一段时间”被称为访问时间accesstime~访问时间有关不同存储器类型的详细内容,在存储层次中介绍D目录设计方法学概述单周期CPU设计模型数据通路基础部件建模数据存储器组装数据通路控制介绍综合数据通路与控制器数据存储器与指令存储器不同,数据存储器要支持写入WD:写入的数据写使能与寄存器堆类似,数据存储器需要有写使能信号Wr存储器访问读:Wr=0,A单元数据从RD输出读出操作时可视为组合逻辑,即A有效一段时间后,RD就输出正确的值写:在时钟上升沿时,如果Wr=1,则WD被写入A单元中
CLK只对写操作有效,对读操作无效WrARDWD3232建模要点:内部是reg阵列时序特点:写入的数据滞后1个cycle输出由寄存器特性决定Verilog建模存储器37moduleMEM4KB(A,DI,We,DO,clk
);input[9:0]A;input[31:0]DI;inputWe;output[31:0]DO;inputclk;reg[31:0]array[1023:0];assignDO=array[A];always@(posedgeclk)if(We)array[A]<=DI;endmodule123456789101112131415TIPS:建模类似于RF。实际设计芯片时,会采用定制的库,而不会用寄存器方式实现存储器。对于P8,存储器要用FPGA芯片内置的块存储器。目录设计方法学概述单周期CPU设计模型数据通路基础部件建模ALU组装数据通路控制介绍综合数据通路与控制器ALU需求分析计算需求:加、减、或、相等相等方法1:设计独立的比较电路,例如利用XOR运算方法2:执行减法运算,然后再判断结果是否全0指令RTL描述adduR[rd]
R[rs]+R[rt];PC
PC+4subuR[rd]
R[rs]–R[rt];PC
PC+4oriR[rt]
R[rs]|zero_ext(imm16);PC
PC+4lwR[rt]
MEM[R[rs]+sign_ext(imm16)];PC
PC+4swMEM[R[rs]+sign_ext(imm16)]
R[rt];PC
PC+4beqif(R[rs]==R[rt])
thenPC
PC+4+(sign_ext(imm16)||00)
elsePC
PC+4采用方法2,减法电路被重用VerilogHDL建模4位ALU40ALU的功能:加、减、或加/减:不支持overflowop:控制信号00~加法;01~减法;10~或;11~保留建模方法:利用assign语句实现加法与减法的2选1`include“head.v”moduleALU(a,b,c,op
);input[3:0]a,b;input[1:0]op;output[3:0]c;assignc=(op==`ALU_ADDU)?(a+b):(op==`ALU_SUBU)?(a+~b+1):(op==`ALU_OR)?(a|b):4’b0000;endmodule123456789101112`defineALU_ADDU
2’b00`defineALU_SUBU
2’b01`defineALU_OR2’b10head.v加减或保留减法运算
+ABY32323241相等采用重用减法的思路先执行减法,然后再判断结果是否全0Zero0:A≠B1:A=BBA323232+++313003020001+++。。。+Cin?0Zero32?01.减法2.判全0问题1判0电路需要多少OR门?问题2如果采用XOR实现相等,需要多少AND门、OR门、NOT门?42集成
FAB01M1+CinM1SelCin32320?ZeroCM2M2Sel322OR01控制器43根据控制器的功能表,结合ALU内部结构设计,可以建立内部各控制信号的真正表,进而推导出表达式,从而构造出控制器的门电路结构F功能00加01减10或目录概述单周期CPU设计模型数据通路基础部件建模组装数据通路控制介绍综合数据通路与控制器组装数据通路每条指令都有各自的功能需求,对应的功能部件及其连接关系也是不同的数据通路就是所有功能部件及其连接关系的集合如何根据RTL需求组装数据通路?根据指令的RTL,选取和添加相应的部件,并建立正确的连接关系重复上述过程数据通路的共性阶段所有指令都需要:取指令(IF)PC驱动IM,IM输出指令PC驱动NPC,NPC计算PC+4然后再输出至PC(目的是更新PC)IMADPCNPCNPCPC32指令现阶段先假设所有指令都是顺序执行的32位指令的分解将指令的32位信号分解为各个域原理:类似于一路入户电分成多路室内电以Instr[5:0]为例分一路为imm的最低5位另一路为funct分线Splitter32Instr55556166opcodersrtrdshamtfunctimm16
assignfunct=Instr[05:00]assignimm16=Instr[15:00]assignimm26=Instr[25:00]Q:1位信号,分多少路都容易。但多位信号分若干路,如何确保信号间不会产生交叉(短路)?R
IADDU&SUBADDU:R[rd]
R[rs]+R[rt]硬件需求:寄存器堆:2路读出信号,1路写回信号ALU:执行加/减RFA1A2A3WDRD1RD2ALUZeroAB555ADDU&SUBADDU:R[rd]
R[rs]+R[rt]连接寄存器堆的输出
ALU的输入指令分解出的rs/rs/rd寄存器堆的A1/A2/A3寄存器堆的写使能RFWr;ALU的控制码ALUOpRFA1A2A3WDRD1RD2ALUZeroAB15:1120:1625:21RFWrALUOprsrtrdQ1:RFWr取值为0还是1?Q2:ALUOp取值为什么?ORIORI:R[rt]
R[rs]ORzero_ext(imm16)硬件需求zero_ext():这是一个新的计算需求原有的功能部件无法满足该需求RFA1A2A3WDRD1RD2ALUZeroAB15:1120:1625:21RFWrALUOprsrtrdORIORI:R[rt]
R[rs]ORzero_ext(imm16)硬件需求zero_ext():这是一个新的计算需求原有的功能部件无法满足该需求EXT:新增功能部件,用于将16位数进行0扩展为32位数HDL建模:Extender.vmoduleEXT(Imm16,Ext);。。。assignExt={16{0},Imm16};endmodule信号名称方向描述Imm16[15:0]输入16位输入。Ext[31:0]输出32位0扩展结果。ORIORI:R[rt]
R[rs]ORzero_ext(imm16)硬件需求如何传递32位扩展结果给ALU?如何让ALU结果写入rt而不是rd?RFA1A2A3WDRD1RD2ALUZeroAB15:1120:1625:21RFWrALUOprsrtrdORIORI:R[rt]
R[rs]ORzero_ext(imm16)增加新硬件EXT、2个MUXRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelLWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求sign_ext():这是一个新的计算需求EXT无法满足该需求RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelLWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求sign_ext():这是一个新的计算需求zero_ext()与sign_ext(),其输入位数、输出位数及基本目的均相同根据“高内聚、低耦合”原则,由EXT同时实现两种扩展较为合理由于EXT同时支持两种扩展,因此必须增加控制信号EXTOp信号名称方向描述Imm[15:0]输入16位输入。EXTOp输入扩展功能选择0:符号扩展1:无符号扩展Ext[31:0]输出32位0扩展结果。LWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求sign_ext():这是一个新的计算需求zero_ext()与sign_ext(),其输入位数、输出位数及基本目的均相同根据“高内聚、低耦合”原则,由EXT同时实现两种扩展较为合理由于EXT同时支持两种扩展,因此必须增加控制信号EXTOpHDL建模:Extender.vmoduleEXT(Imm,F,Ext);。。。assignExt=EXTOp==`ZEXT?{16{0},Imm}:{16{Imm[15]},Imm};endmodule
书写表达式时,尽量多使用宏,增加可读性。LWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求需要DMRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelLWLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]硬件需求需要DM需要回写RFRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelSWSW:MEM[R[rs]+sign_ext(imm16)]
R[rt]连接RF的第2个输出
DM的WDRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrBEQ本质上,beq涉及2大功能功能1:寄存器比较让ALU执行减法,然后把比较结果zero传递给NPCRFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrif(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4ZeroBEQ本质上,beq涉及2大功能功能2:根据比较的结果计算PC这属于NPC的功能范畴RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOprsrtrdimm1601WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrif(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4ZeroBEQ本质上,beq涉及2大功能功能2:根据比较的结果,计算PC。这属于NPC的功能范畴对于NPC,现在需要知道当前指令是否是beq及zero的结果if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4信号名方向描述PC[31:0]I32位输入Imm[15:0]I16位立即数BrIbeq指令标志1:当前指令是beq0:当前指令不是beqZero1rs和rt相等标志1:相等0:不等NPC[31:0]O32位输出Adder+4PC扩展Adder01PCImmNPCBrZero???PC+4PC+4+sign_ext(imm16||00)注意:此处NPC设计,未考虑jal和jr指令!BEQ本质上,beq涉及2大功能功能2:根据比较的结果,计算PC。这属于NPC的功能范畴对于NPC,现在需要知道当前指令是否是beq及zero的结果if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4信号名方向描述PC[31:0]I32位输入Imm[15:0]I16位立即数BrIbeq指令标志1:当前指令是beq0:当前指令不是beqZero1rs和rt相等标志1:相等0:不等NPC[31:0]O32位输出Adder+4PC扩展Adder01PCImmNPCBrZeroBrZeroMUX000010100111&BEQ本质上,beq涉及2大功能功能2:根据比较的结果,计算PC。这属于NPC的功能范畴对于NPC,现在需要知道当前指令是否是beq及zero的结果if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4信号名方向描述PC[31:0]I32位输入Imm[15:0]I16位立即数BrIbeq指令标志1:当前指令是beq0:当前指令不是beqZero1rs和rt相等标志1:相等0:不等NPC[31:0]O32位输出
图中未包含Br和ZeroBEQ组装if(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrrsrtrdimm16Zero目录概述单周期CPU设计模型数据通路基础部件建模组装数据通路控制介绍综合数据通路与控制器CPU开发过程概述5步骤1)分析每条指令的RTL,梳理和总结出数据通路的设计需求2)选择恰当的数据通路功能部件3)组装数据通路根据指令RLT,分析并建立功能部件间的正确连接关系4)根据指令RTL,分析功能部件应执行的功能,反推相应的控制信号取值5)生成控制器构造控制信号真值表,然后推导出控制信号的最简表达式根据最简表达式构造门电路数据通路的控制信号EXTOp: 0
“zero”;1
“sign”BSel: 0
RD2; 1
EXT32ALUOp: “ADD”,“SUB”,“OR”Br: 0+4;1branchDMWr: 1
DM写使能有效WDSel: 0
ALU;1
MemWRSel: 0
“rt”;1
“rd”RFWr: 1RF写使能有效RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrrsrtrdimm16Zero执行路径:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrrsrtrdimm16Zerorsrtrdimm16执行路径:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWrALUOp01WRSelEXT01BSelDMARDWD01EXTOpWDSelDMWrZeroNPCNPCIMMPCPC4IMADPCBrZerorsrtrdimm16执行路径:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=?ALUOp=?01WRSel=?EXT01BSel=?DMARDWD01EXTOp=?WDSel=?DMWr=?ZeroNPCNPCIMMPCPC4IMADPCZeroBr=?rsrtrdimm16执行路径:adduADDU:R[rd]
R[rs]+R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=ADD01WRSel=1EXT01BSel=0DMARDWD01EXTOp=XWDSel=0DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16执行路径:subuSUBU:R[rd]
R[rs]-R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=SUB01WRSel=1EXT01BSel=0DMARDWD01EXTOp=XWDSel=0DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16执行路径:oriORI:R[rt]
R[rs]ORzero_ext(imm16)RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=OR01WRSel=0EXT01BSel=1DMARDWD01EXTOp=0WDSel=1DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16执行路径:lwLW:R[rt]
MEM[R[rs]+sign_ext(imm16)]RFA1A2A3WDRD1RD2ALUZeroABRFWr=1ALUOp=ADD01WRSel=0EXT01BSel=1DMARDWD01EXTOp=1WDSel=1DMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16执行路径:swSW:MEM[R[rs]+sign_ext(imm16)]
R[rt]RFA1A2A3WDRD1RD2ALUZeroABRFWr=0ALUOp=ADD01WRSel=XEXT01BSel=1DMARDWD01EXTOp=1WDSel=XDMWr=1ZeroNPCNPCIMMPCPC4IMADPCZeroBr=+4rsrtrdimm16执行路径:beqBEQRFA1A2A3WDRD1RD2ALUZeroABRFWr=0ALUOp=SUB01WRSel=1EXT01BSel=0DMARDWD01EXTOp=XWDSel=XDMWr=0ZeroNPCNPCIMMPCPC4IMADPCZeroBr=BRif(R[rs]==R[rt])
PC
PC+4+sign_ext(imm16||00)
elsePC
PC+4目录概述单周期CPU设计模型数据通路基础部件建模组装数据通路控制介绍综合数据通路与控制器合成各指令的控制信号取值矩阵示例:建立addu的控制信号取值指令NPCOpRFWrEXTOpALUOpDMWrWRSelWDSelBSeladdu+41
XADD
0100rsrtrdimm16RFA1A2A3WDRD1RD2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史研究课题申报书范文
- 2025年理财市场发展机遇试题及答案
- 项目管理资格考试成功的思维导图运用试题及答案
- 注册会计师考试中多元文化背景对学习氛围的影响分析试题及答案
- 项目管理专业人士能力提升试题及答案
- 数学学科育人课题申报书
- 课题申报书工匠
- 技工院校课题申报书
- 掌握对冲基金的投资策略试题及答案
- 四年级语文下册 第七单元 口语交际:自我介绍(新学习单)教学设计 新人教版
- 2025年高考作文备考之十大热点主题及写作导引
- 2025年重庆中考押题道德与法治试卷(一)(含答案)
- 肿瘤的内分泌治疗护理
- 东北三省三校2025届高三下学期第二次联合模拟考试数学试题及答案
- 污水管道封堵施工方案
- 2025年山东鲁泰控股集团有限公司下属驻陕西煤矿企业招聘(150人)笔试参考题库附带答案详解
- 2025届上海市浦东新区高三二模英语试卷(含答案)
- 2025年全民国家安全教育日主题班会
- 2025-2030彩色不锈钢项目可行性研究报告
- 2025年山西省华远国际陆港集团有限公司招聘笔试参考题库含答案解析
- 江苏省盐城市东台市2024-2025学年高一上学期期末考试化学试题
评论
0/150
提交评论