6.9-硬布线控制器设计2
变长指令周期:现代时序
时钟周期数可变,速度快,设计复杂
传统的三级时序系统里面,每一条指令都要对应八个时钟周期,也就是八个状态,执行指令的四个状态实际上为不同的指令共享,有些对应的指令周期,比如mov,后面的三个节拍是被浪费了,为了节约这些节拍,我们可以对整个的状态进行更严格的区分,不在是八个状态,在指令执行的过程中,状态的切换除了与时钟有关系外,还跟指令的译码信号有关系,那我们将所有指令在执行的不同阶段,都用一个状态唯一标识符,比如说load整个状态就变成了S4,S4,S6,S7,mov指令变成了S8,有了这16个状态,我们就可以用四位的状态机来表示执行不同的状态。由于指令执行的16个状态过程中,所有的信号只与对应的状态有关系,所以有了状态机以后,对应的最终的控制信号,只与状态机的现态有关系
现代时序系统
- 基本的输入是我们的时钟脉冲,整个时钟过来以后,马上就是一个状态机,也就是我们整个硬布线控制器,是采用基本的时钟进行同步
- 状态机在这里是一个四位的状态机,可以构成16个状态,现态直接输入到一个有限状态机,生成我们对应的次态,和我们前面所说的,三级时序系统所说的状态机有所不同它的有限状态机的输入不再仅仅跟现态有关系,还跟对应的指令有关系,以及对应的反馈信号有关系。次态和现态之间的关系仅仅取决于,当前是什么指令,当前属于什么状态。所有的输出控制信号只与状态和现态有关,所以作为输入生成我们的最终的控制信号,就是我们最终的硬布线控制器的组合逻辑
指令执行状态转换图,对应的是16个状态
- 所有的指令状态执行到最后的时候都会进入到指令结束阶段,要么是中断响应状态要么就直接切换到取指令周期的S0
- 从S0到S1,那么S1就是S0的次态,按照这种方式我们可以得到现态和次态的真值表,现态和次态除了和时钟有关系外,还和中间的一些指令译码信号有关系
要根据指令译码信号进行切换,比如Load在S3的状态为1的时候要跳入到S4,MOVE在S3状态为1的时候要跳入到S8,以此类推。S4执行完成后直接执行S5,一直执行到S7,执行完成之后又回到取指令,所以又进入到S0,按照这个就构造了上面完整的真值表
可变周期硬布线控制器设计流程
- 列出所有机器指令的指令周期流程图,明确每个节拍的控制信号
- 绘制指令执行状态转换图
- 根据状态转换图构建状态机真值表,实现有限状态机组合逻辑
传统三级时序和现代时序设计对比