文档详情

流水线CPU设计文档.doc

人***
实名认证
店铺
DOC
405.84KB
约6页
文档ID:543149226
流水线CPU设计文档.doc_第1页
1/6

流水线CPU设计文档张路一、 设计结构图:二、 设计概要:该处理器采用5级流水线技术,在处理器中,指令的处理分5阶段完成:取指、译码、执行、访存、写回每阶段与前一阶段采用寄存器组暂存指令数据信息和控制信号,完成对指令的流水化处理1、 取指阶段:通过PC寄存器中的值在IMem中取出指令,送入IF/ID寄存器中2、 译码阶段译码阶段中,根据指令译出相应的控制信号,同时将使用的寄存器和扩展之后的立即数送入ID/EX寄存器中在此阶段指令译码器Decoder需要对指令进行译码,确定大量的控制信号的值,为之后的三个阶段的执行提供控制这些用到的主要信号有:ALUOPALU控制信号Mult乘法信号ASrc、BSrcALU两个输入口的数据来源信号RegW写回阶段是否对寄存器写信号RegSrc写回阶段写寄存器的来源MemW访存阶段对SRAM的写信号ASRSrc状态寄存器的来源BranOP跳转指令的类型在这一阶段,一个拥有三个读口的寄存器堆将读出Rd,Rs1,Rs2中的数据备用,同时将进行立即数的扩展(也可放到下一阶段进行,效率高,但图上画不下了)3、 执行阶段 执行阶段,使用ALU或者MULT进行算术或者逻辑运算,在这里唯一要注意的两点是:1) 输入数据的两口可能根据有3种来源:除了寄存器中的数据外,B口的数据还可能为经过扩展后的立即数,同时,A、B两口的数据还可能涉及到冒险问题,有可能直接使用通过前向网络传递的数据。

2) 由于有些指令可能是直接改变状态寄存器ASR的,故ASR的结果也需要使用ASRSrc进行选择4、 访存阶段在此阶段,根据ALU中存在上一阶段寄存器中的地址,将指定地址的数据读出,或者根据ALU中的地址,将Rd中的数据写入数据存储器DMem中,是否读写由MemWr控制读出的数据将存在EX/Me寄存器中5、 写回阶段在写回阶段,根据RegSrc信号,确定写回的数据是ALU的输出结果(线上表明为ALUOut)还是内存中取出的结果(线上标注为MemOut),将数据写回,根据需要写回的寄存器号以及RegW信号,将数据写至指定的寄存器中6、 数据转发单元 这个单元主要需要收集各段寄存器中的信息,来判断是否有数据冒险并进行转发,主要需要用到的信号上图已经标注:需要收集在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时,输入为0 BSrc = 1时,选择寄存器的数据,为0时,选择立即数扩展后的数据RegSrc = 1时,选择ALUOut的数据,为0时,选择Data数据ASRSrc = 1时,选择ALUOut的数据,为0时,选择ALUFlag中的数据控制信号Add Rd,Rs1,Rs2Add Rd,Rs1,imm9Comsub.A Rd,Rs1,Rs2Beq labelLdwRd,[Rs1+],Rs2ALUOPADDADDSubXADDMult000X0ASrc111X1BSrc101X1RegW11001RegSrc11XX0MemW00000ASRSrc00000BranOP000EQ0控制信号Stw Rd,[Rs1+],#imm14MovRd,Rs2Mov.fASR,rs2ALUOPADDADDADDMult000ASrc100BSrc011RegW010RegSrcX1XMemW100ASRSrc001BranOP000。

下载提示
相似文档
正为您匹配相似的精品文档