流水线CPU设计文档 下载本文

内容发布更新时间 : 2024/5/18 5:19:58星期一 下面是文章的全部内容请认真阅读。

流水线CPU设计文档

张路

一、设计结构图:

RegWStallStallPCNextPCBranOpResetRs2ClkFlagsLabelASRMuxBranOpASRSrcMemWrRegSrcRegWBSrcMultALUOutRegSrcPCLabelDecoderIF/IDImm9ResetRdClkASrcALUOPWEW1R1R2R3DataInImemClkReg32BusABusBBusCID/EXImm320BusAMuxMULTFLAGSResultMuxMuxALUOPBusBClkMuxALUResultFLAGSEX/MEMemWrAddrDMemDataOutDataInClkEX/MEMuxMemOutBusBExt9ResetImm32ResetRdBusCRdClkClkClkResetRdBSrcFwd.BFwd.AAsrcRS1RS2RDStallBMuxAMuxEx:RegWRegSrcRdMem:RegWRegSrcRdWB:RegWRegSrcRdForward

二、设计概要:

该处理器采用5级流水线技术,在处理器中,指令的处理分5阶段完成:取指、译码、执行、访存、写回。每阶段与前一阶段采用寄存器组暂存指令数据信息和控制信号,完成对指令的流水化处理。 1、 取指阶段:

StallStallPCNextPCBranOpResetRs2ClkFlagsLabelPCIF/IDImemClkResetClk

通过PC寄存器中的值在IMem中取出指令,送入IF/ID寄存器中。

2、 译码阶段

BranOpASRSrcMemWrRegSrcRegWBSrcMultDecoderLabelASrcALUOPIF/IDImm9WEW1R1R2R3DataInReg32BusABusBBusCID/EXImm320ClkExt9ResetRdImm32ClkClk

译码阶段中,根据指令译出相应的控制信号,同时将使用的寄存器和扩展之后的立即数送入ID/EX寄存器中。

在此阶段指令译码器Decoder需要对指令进行译码,确定大量的控制信号的值,为之后的三个阶段的执行提供控制。这些用到的主要信号有:

ALUOP ALU控制信号 Mult ASrc、BSrc RegW RegSrc MemW

BSrcAsrcRS1RS2RD乘法信号 ALU两个输入口的数据来源信号 写回阶段是否对寄存器写信号 写回阶段写寄存器的来源 访存阶段对SRAM的写信号

ASRSrc BranOP 状态寄存器的来源 跳转指令的类型 在这一阶段,一个拥有三个读口的寄存器堆将读出Rd,Rs1,Rs2中的数据备用,同时将进行立即数的扩展(也可放到下一阶段进行,效率高,但图上画不下了) 3、 执行阶段

ASRMuxID/EX0BusAMuxMULTFLAGSResultMuxMuxALUOPBusBMuxALUResetRdBusCResultFLAGSEX/MEImm32ClkClkFwd.BFwd.ABMuxAMuxEx:RegWRegSrcRdMem:RegWRegSrcRd 执行阶段,使用ALU或者MULT进行算术或者逻辑运算,在这里唯一要注意的两点是:

1) 输入数据的两口可能根据有3种来源:除了寄存器中的数据外,B口的

数据还可能为经过扩展后的立即数,同时,A、B两口的数据还可能涉及到冒险问题,有可能直接使用通过前向网络传递的数据。 2) 由于有些指令可能是直接改变状态寄存器ASR的,故ASR的结果也需要

使用ASRSrc进行选择

4、 访存阶段