解决CPU流水线冲突技术的设计与实现

更新时间:2023-11-12 02:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

龙源期刊网 http://www.qikan.com.cn

解决CPU流水线冲突技术的设计与实现

作者:张大发 曹庆华 傅翠娇 来源:《现代电子技术》2008年第04期

摘 要:流水线是制造高性能CPU的关键技术,目前许多学者研究在FPGA上实现具有流水线结构MIPS CPU,但是在解决流水线冲突上只是通过简单的停顿流水线实现。描述一种较为通用的具有五级流水线的MIPS CPU结构以及其中可能发生的流水线冲突,在此基础上详细介绍解决流水线冲突的技术——数据旁路以及动态分支预测在MIPS CPU中的设计和实现,最后通过一段指令序列进行仿真验证,解决流水线冲突的技术减少指令执行所需要的时钟周期数。

关键词:MIPS CPUI流水线;数据冲突;数据旁路;分支预测 中图分类号:TP332 文献标识码:B

文章编号:1004—373X(2008)04—021—03 1 引 言

流水线是指在程序执行时多条指令重叠进行操作的一种技术。指令流水执行是将指令执行分成几个子过程,每个子过程对应一个工位,称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。这些不同的功能部件同时处理不同指令的不同子过程。流水级一个连着一个形成一个流水线,一条指令流过所有的流水级,就完成了他的任务。他通过提高各流水部件的利用率提高指令的平均执行速度。在CPU流水线中,有一些称为冲突的情形,他使得指令流中下一条指令无法在设计的时钟周期内执行,这些冲突将会降低流水线可能获得的理想性能。笔者通过在已有的CPU基础上设计和实现解决流水线冲突的2大技术,并进行仿真验证,对通用的CPU流水线的设计具有一定的参考价值。 2 基于MIPS指令集的CPU流水线结构

MIPS指令集是一种精简指令集(RISC),他的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。这种特点易于将指令代码进行拆分,使之易于进行流水线CPU的设计。

在基本的MIPS处理器中有5个流水级,其中各流水级定义与主要功能为;

龙源期刊网 http://www.qikan.com.cn

IF为计算下一条指令的地址PC,并从存储器读取这条指令;ID为对指令进行译码,从寄存器堆中取出源操作数;EX为当指令是运算类指令时执行运算,当指令是转移类指令时进行有效地址计算;MEM为从存储器存取数据;WB为将数据写回到寄存器堆。

按照这一流水线结构,本文在设计和实现中选用一种较为通用的MIPS CPU,他通过VHDL语言实现,各模块之间的关系简图如图1所示。 MIPS CPU各模块功能和流水段对应如表1所示。

在通常情况下,指令执行各阶段与时钟周期关系如表2所示,执行1条指令需要5个时钟周期,指令的平均执行时间为1个时钟周期。 3 CPU流水线中的冲突

在CPU流水线中存在3类冲突:资源冲突、数据冲突和控制冲突:

第1条ORI指令在WB阶段才能将数据写回到寄存器,而ADDI指令在ID阶段就要读取该值,通过表2可以很明显看出ADDI指令读取值的周期早于第1条ORI指令写入值,读出来的将是旧值,要得到真实的结果需要停顿2个周期的流水线。

控制冲突 流水线中的分支指令或其他改写PC的指令造成的冲突。指令序列1的BNE指令为分支指令,该序列也存在控制冲突。控制冲突造成的损失比数据冲突更大。控制冲突决定了跟分支指令有关的指令的执行顺序,即非分支指令只能在该执行的时候才能执行。 4 数据旁路技术的设计与实现

数据旁路技术是解决数据冲突问题简单有效的方法,他的基本思想是把结果直接送到需要他的功能部件,即在同一周期内,将1个结果从一个部件的输出直接送到另一个部件的输入。 基于这一技术,设计解决数据冲突问题的流程:

(1)判断在ID阶段的指令的2个操作数是否使用寄存器,如果不使用,则不存在数据冲突,如果使用,则转入(2);

(2)判断EX阶段或MEM阶段正在执行的指令会写回值的寄存器是否为ID阶段使用的寄存器,如果否或者EX阶段或MEM阶段正在执行的指令没有写回值的寄存器,则不存在数据冲突,从寄存器堆中取出源操作数;如果是,则记录该阶段,转入(3);

(3)判断所记录的阶段中的指令在该阶段是否已经产生结果,如果是,将这个结果赋给ID阶段指令的源操作数;如果否,发生数据冲突,需要停顿流水线。

本文来源:https://www.bwwdw.com/article/ennv.html

Top