引言
之前,我们分析or1200的控制通路中的sprs模块和except模块,本小节,我们就分析一下or1200控制通路的最后一个模块,就是freeze模块。
1,整体分析
freeze模块,顾名思义,就是根据各个流水阶段的反馈信号,负责产生控制整条流水线各个阶段的暂停信号,如取指阶段的genpc_freeze和if_freeze信号,解码阶段的id_freeze信号,执行阶段的ex_freeze信号,以及写回阶段的wb_freeze信号,共5个暂停信号。
可以这么说,freeze就好像整条流水线的监工,如果发现某一阶段出现问题,就控制那个流水阶段暂停。
2,暂停信号产生规则
freeze模块产生的这5个信号不是相互独立的,是有一定的规则的,那么到底有什么规则呢?关于freeze模块的5个暂停信号的产生过则,or1200_freeze.v中有如下描述:
//
// Pipeline freeze
//
// Rules how to create freeze signals:
// 1. Not overwriting pipeline stages:
// Freeze signals at the beginning of pipeline (such as if_freeze) can be
// asserted more often than freeze signals at the of pipeline (such as
// wb_freeze). In other words, wb_freeze must never be asserted w