总体逻辑结构计Р[注]五级流水CPU设计过程中参考了文献[4]。Р图30 五级流水整体结构图Р整个CPU由以下几个模块组成:Р取指模块(IF):给出内存地址,读取指令并送入指令寄存器,为下一级准备数据。Р由于PC控制模块处于取指模块中,因此控制相关的检测也置于取指模块。Р译码模块(ID):读取寄存器值和指令译码。我们采取一次译码,逐级传递的方式,译出后几级流水所需的控制信号和数据(如立即数等),在每次时钟上升沿到来时送入下一级。实际上,结构相关、控制相关、数据相关的检测都可归入译码部分。考虑到“相关检测”涉及到的信号分属不同阶段以及整体结构的清晰性,我们将“相关检测”独立出来。Р执行模块(Ex):完成算术逻辑运算、计算有效地址和提供数据通道。Р访存模块(Ma):选择地址线的数据来源和数据线的流向。访存和取指在功能上是独立的,但CPU对外只有一条地址线和数据线的事实决定了访存和取指是相互联系的。当执行LOAD/STORE指令时,地址线由ALU送入“访存段”的值提供;取指时,则由PC提供。当写内存时,CPU内部数据送数据线;当需要读内存时,CPU往数据线送高阻。Р回写模块(Wb):选择回写数据源和根据写使能信号wRegEn将数据回写到寄存器堆;РHazardDetectUnit模块:检测结构相关;РForwardingUnit模块:检测数据相关。Р2.4.2.2 关键分模块结构设计Р执行模块(Ex)Р执行模块的主要工作是完成算术逻辑运算、计算有效地址和提供数据通道。执行模块的主体部分是运算器,其总体结构和两级流水是相似的。主要不同之处在于增加了旁路模块,这是由于五级流水存在数据相关需要旁路处理。Р图31 五级执行模块结构图РHazardDetectUnit模块Р 该模块通过检查“访存阶段”的m_wrMem来确定是否发生结构相关。具体请参阅上文中处理结构相关的部分。Р 结构图: