15. 控制信号的集成

1. 隐藏数据通路的实现细节

我们首先把数据通路的实现细节隐藏起来,只看下面这8个控制信号,

隐藏数据通路的实现细节

分析指令位域,我们从指令编码中还可以得到opcode和func位域,如下图所示,这两个位域决定了执行什么指令,

从指令编码中,得到opcode和func

因此,我们可以通过opcode和func这两个位域产生所需的8个控制信号。实现这个功能的部件叫控制逻辑,或控制器,如下图所示,

控制逻辑通过opcode和func位域产生8个控制信号控制数据通路

2. 控制信号的逻辑表达式

我们总结笔记12-14的内容,将各个指令的控制信号汇总成一张表,如下图所示,

各个指令的控制信号的汇总

2.1 如何写出控制信号的逻辑表达式

以RegDst为例,我们只看第一行,发现只有当add指令或sub指令时,RegDst才需要为1,其他指令都为0,因此可以写出,

RegDst = add + sub,即add指令或sub指令时,RegDst置1.

那什么时候才是add指令或sub指令呢,我们看opcode和func。

下图是R型指令和I型指令的位域分布,add和sub都是R型指令,

R型指令和I型指令的位域分布

因此,

add = rtype & func5 & ~func4 & ~func3 & ~func2 & ~func1 & ~func0

其中rtype为1表示是一条R型指令。

同样的方法得到sub指令的表达式,

sub = rtype & func5 & ~func4 & ~func3 & ~func2 & func1 & ~func0

当opcode全部为0时,就是一条R型指令,因此,

rtype = ~op5 & ~op4 & ~op3 & ~op2 & ~op1 & ~op0

这样就可以得到RegDst这个信号完整的逻辑表达式,并可以使用与门和非门构建出来。

采用类似的方法,可以构建出来所有控制信号的逻辑表达式,如下图所示,

所有控制信号的逻辑表达式

注意到,上图中,下面add,sub等指令都是opcode和func每个位本身或其非的与,上面控制信号是各个指令的或。因此我们可以构建如下的控制逻辑,

控制逻辑的实现

这样,我们就完成了控制信号的集成,构建了控制逻辑,也就是笔记10中,处理器设计的第5步。

你可能感兴趣的:(15. 控制信号的集成)