



第3~9章都是采用本章建立的最小系统,在其上运行一些简单的示例程序,因为在这些章节我们的剖析目标是OR1200中的CPU、QMEM模块,最小系统足够满足需求,在第10章剖析MMU时也只需要在OR1200的配置文件中使能MMU,即在最小系统添加上MMU模块。之后在剖析Cache、Store Buffer(SB)、Wishbone总线接口单元时会设计一个简单的基于OR1200的片上系统,在此基础上再进行实验。
在第1章介绍本书的分析方法时提到本书采用的是流水线驱动的分析方法,对单条指令进行分析,紧密结合流水线的工作过程,分析在流水线各个阶段指令需要完成的工作及引起的信号变化。流水线的每个阶段至少是一个时钟周期,如图2.31所示。
图2.31 流水线驱动下指令的状态变化
在这一个时钟周期中,有的信号变化是通过组合逻辑电路引起的,有的是在时钟边沿引起的,需要加以区分,因此定义以下名词,分别对应图2.31中用虚线分隔开的6个时间段的输出。
(1)取指阶段的组合逻辑输出
取指阶段的组合逻辑输出指的是被分析指令处在流水线的取指阶段时,OR1200中由于组合逻辑电路引起的信号变化。
(2)取指阶段的时序逻辑输出
取指阶段的时序逻辑输出指的是被分析指令从流水线的取指阶段进入译码阶段时,OR1200中由于时序逻辑电路引起的信号变化。
(3)译码阶段的组合逻辑输出
译码阶段的组合逻辑输出指的是被分析指令处在流水线的译码阶段时,OR1200中由于组合逻辑电路引起的信号变化。
(4)译码阶段的时序逻辑输出
译码阶段的时序逻辑输出指的是被分析指令从流水线的译码阶段进入执行阶段时,OR1200中由于时序逻辑电路引起的信号变化。
(5)执行阶段的组合逻辑输出
执行阶段的组合逻辑输出指的是被分析指令处在流水线的执行阶段时,OR1200中由于组合逻辑电路引起的信号变化。
(6)执行阶段的时序逻辑输出
执行阶段的时序逻辑输出指的是被分析指令在流水线的执行阶段结束时,OR1200中由于时序逻辑电路引起的信号变化。
从图2.27中可以发现在最小系统中指令会在每一个时钟周期进入到流水线的下一个阶段,也就是流水线的一个阶段就是一个时钟周期,但有时指令在流水线某一个阶段可能需要超过一个时钟周期的时间,如图2.32所示。
图2.32 流水线执行阶段需要两个时钟周期
指令在流水线执行阶段需要两个时钟周期,相应有如下定义分别对应上图中用虚线隔开的时间段的输出。
(7)执行阶段第1个时钟周期的组合逻辑输出
该输出指的是被分析指令处在流水线执行阶段的第1个时钟周期时,OR1200中由于组合逻辑电路引起的信号变化。
(8)执行阶段第1个时钟周期的时序逻辑输出
该输出指的是被分析指令处在流水线执行阶段的第1个时钟周期结束时,在时钟跳变边沿,OR1200中由于时序逻辑电路引起的信号变化。
(9)执行阶段第2个时钟周期的组合逻辑输出
指的是被分析指令处在流水线执行阶段的第2个时钟周期时,OR1200中由于组合逻辑电路引起的信号变化。
(10)执行阶段第2个时钟周期的时序逻辑输出
指的是被分析指令处在流水线执行阶段的第2个时钟周期结束时,在时钟跳变边沿,OR1200中由于时序逻辑电路引起的信号变化。
当执行阶段的时间多于两个时钟周期时,可以使用“执行阶段第3个时钟周期的组合逻辑输出”、“执行阶段第3个时钟周期的时序逻辑输出”,很容易理解其含义。同理,当取指、译码阶段需要多个时钟周期时,也有类似的定义。上述定义在进行指令分析时会用到。