博客首页 | 排行榜 |

ligongbai的博客

个人档案
博文分类
32bit RISC CPU(potato-I)流水线的实现及各级流水线功能说明  2007-11-14 11:03

     处理器设计中采用流水线不但提高处理器的吞吐量,还可以提高处理器的工作频率。因为随着流水线级数的增多,单一流水线级的处理变得简单,电路也变的简单,从而可以让CPU工作在更高的频率上。但是随着流水线级数的增加,系统延迟(每一跳指令执行所需要的时间)增加,同时异常、转移指令执行时需要排空的流水线级数也相应的增加。尤其当处理器没有分支预测功能时,对流水线排空引起的吞吐量的降低更加明显。根据以上几点原因Potato-I处理器采用了典型的5级流水线结构。 Potato-I IFinstruction fetch),ID(instruction decode)EX(execution)MEM(memory access)WB(write back)五级的流水线构成。 

    IF(取指):从ROM中读取代码,并传送给ID级。

    ID(译码):对IF来的指令进行译码,产生相应的控制信号,同时从寄存器文件读取EX级所用的操作数。条件转移也是在此级上实现的。

    EX(执行):对操作数进行算术或逻辑操作。

    MEM(存储器访问):只有在执行LOADSTORE指令时对存储器进行读写,但对其他指令只起到缓冲一个周期作用。(在MIPS处理器中MEM级大概对75%的指令没有执行任何操作,只作为一个流水线缓冲期)

    WB(写回):把指令执行的结果回写寄存器文件中,写入寄存器文件的数据来自于MEM级上的缓冲值或来自于MEM级上的存储器。

     在流水线设计中遇到的问题及解决方法设计potato-I的流水线时遇到的最大问题是分支指令的处理和中断的响应在流水线哪一级实现的问题。最后,为了减少转移指令带来的分支延迟和流水线的排空问题,选择在ID级上实现转移。而关于中断响应的问题查阅了很多文献,已有一定的思路,最后考虑选择在MEM级上实现中断响应(正在调试当中)。

 

32 BIT RISC CPU verilog代码下载地址 http://www.openhard.org/down.php?menuid=1722

|
上一篇:关于POTATO-I 的指令编码及IP核设计几点说明 | 下一篇:alu的标志位
以下网友评论只代表其个人观点,不代表本网站的观点或立场