流水线cpu设计文档.doc
6页流水线 CPU 设计文档张路 一、设计结构图:二、设计概要: 该处理器采用 5 级流水线技术,在处理器中,指令的处理分 5 阶段完成:取指、译 码、执行、访存、写回每阶段与前一阶段采用寄存器组暂存指令数据信息和控制信 号,完成对指令的流水化处理 1、 取指阶段:PCImemNextPCIF/IDPCFlagsLabelRs2BranOpStallClkClkClkResetResetStall通过 PC 寄存器中的值在 IMem 中取出指令,送入 IF/ID 寄存器中PCImemReg32DMemDecoderExt9NextPCMULTALUW1 R1 R2WEBusABusBBusCB Bu us sA AALUOPFLAGSResultFLAGSResultMuxMuxMultI F / I DImm9ALUOP I D / E XRegWMuxBusBBSrcE X / M EMemWr RegSrcImm32Imm32ASRAddrMemWrE X / M EDataInDataOu tRdRdRdDataInMemOutALUOutMuxRegSrcRegWRdR3BusCLabelPCFlags LabelRs2BranOpBranOpBusBMux0ASrcMuxASRSrcForwardRdEx: RegW RegSrcRdMem:RegW RegSrcRdWB: RegW RegSrcBSrc Asrc RS1 RS2 RDFwd.B Fwd.ABMuxAMuxStallStallClkClkClkClkClkClkClkClkStallResetResetResetResetReset2、 译码阶段Reg32DecoderExt9W1 R1 R2WEBusABusBBusCMultI F / I DImm9ALUOP I D / E XRegW BSrcMemWr RegSrcImm32Imm32RdDataInR3LabelBranOp0ASrcASRSrcBSrc Asrc RS1 RS2 RDClkClkClkReset译码阶段中,根据指令译出相应的控制信号,同时将使用的寄存器和扩展之 后的立即数送入 ID/EX 寄存器中。
在此阶段指令译码器 Decoder 需要对指令进行译码,确定大量的控制信号 的值,为之后的三个阶段的执行提供控制这些用到的主要信号有:ALUOPALU 控制信号Mult乘法信号ASrc、BSrcALU 两个输入口的数据来源信号RegW写回阶段是否对寄存器写信号RegSrc写回阶段写寄存器的来源MemW访存阶段对 SRAM 的写信号ASRSrc状态寄存器的来源BranOP跳转指令的类型在这一阶段,一个拥有三个读口的寄存器堆将读出 Rd,Rs1,Rs2 中的数据备 用,同时将进行立即数的扩展(也可放到下一阶段进行,效率高,但图上画不 下了) 3、 执行阶段MULTALUB Bu us sA AALUOPFLAGSResultFLAGSResultMuxMuxI D / E XMuxBusBE X / M EImm32ASRRdBusCMux0MuxRdEx: RegW RegSrcRdMem:RegW RegSrcFwd.B Fwd.ABMuxAMuxClkClkReset执行阶段,使用 ALU 或者 MULT 进行算术或者逻辑运算,在这里唯一要注 意的两点是: 1)输入数据的两口可能根据有 3 种来源:除了寄存器中的数据外,B 口的 数据还可能为经过扩展后的立即数,同时,A、B 两口的数据还可能涉 及到冒险问题,有可能直接使用通过前向网络传递的数据。
2)由于有些指令可能是直接改变状态寄存器 ASR 的,故 ASR 的结果也需 要使用 ASRSrc 进行选择 4、 访存阶段DMemE X / M EAddrMemWrE X / M EDataInDataOu tRdMemOutALUOutRdRdWB: RegW RegSrcClkClkClkReset在此阶段,根据 ALU 中存在上一阶段寄存器中的地址,将指定地址的数据 读出,或者根据 ALU 中的地址,将 Rd 中的数据写入数据存储器 DMem 中,是 否读写由 MemWr 控制读出的数据将存在 EX/Me 寄存器中 5、 写回阶段EX/MEMemOutALUOut MuxRegSrcBusBClk在写回阶段,根据 RegSrc 信号,确定写回的数据是 ALU 的输出结果(线上表明为 ALUOut)还是内存中取出的结果(线上标注为 MemOut) ,将数据写回, 根据需要写回的寄存器号以及 RegW 信号,将数据写至指定的寄存器中 6、 数据转发单元ForwardRdEx: RegW RegSrcRdMem:RegW RegSrcRdWB: RegW RegSrcBSrc Asrc RS1 RS2 RDFwd.B Fwd.ABMuxAMuxStall这个单元主要需要收集各段寄存器中的信息,来判断是否有数据冒险并进 行转发,主要需要用到的信号上图已经标注:需要收集在 Ex、Mem、WB 段的寄 存器写信号 RegSrc 以及寄存器来源信号 RegSrc,然后需要判断此次的寄存器地 址是否有关联,如果有关联则产生了冒险,通过 Fwd.B 和 Fwd.A 进行数据的转 发,通过 BMux 和 AMux 来对 ALU 口的数据进行选择。
同时,在产生不可解决 的数据冒险时:比如: lw r3,r1, add rd r1,r3这样的情况时,转发不能解决问题,Forward 模块还要负责产生 Stall 信号, 将指令阻塞一个周期 三、各条指令的控制信号表(1 为有效、0 为无效,X 为任意): 约定如下:ASrc = 1 时,选择寄存器的数据,为 0 时,输入为 0BSrc = 1 时,选择寄存器的数据,为 0 时,选择立即数扩展后的数据 RegSrc = 1 时,选择 ALUOut 的数据,为 0 时,选择 Data 数据 ASRSrc = 1 时,选择 ALUOut 的数据,为 0 时,选择 ALUFlag 中的数据控制信号Add Rd,Rs1,Rs2Add Rd,Rs1,imm9Comsub.A Rd,Rs1,Rs2Beq labelLdw Rd,[Rs1+],Rs2ALUOPADDADDSubXADDMult000X0ASrc111X1BSrc101X1RegW11001RegSrc11XX0MemW00000ASRSrc00000BranOP000EQ0控制信号Stw Rd, [Rs1+],#imm14Mov Rd,Rs2Mov.f ASR,rs2ALUOPADDADDADDMult000ASrc100BSrc011RegW010RegSrcX1XMemW100ASRSrc001BranOP000。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


