“21天好习惯”第一期——21

《计算机组成原理》

3.5.2 MIPS32架构CPU基本的组成部件

3. 单周期控制系统设计

(2)ALU控制单元

     ALU控制单元接收两种输入:主控单元输出的m位aluop和指令代码中的6位func字段,输出4位的operation微命令。

   R型指令的操作码OP全是0,它们可以靠func来说明执行何种运算操作,因而ALU控制单元根据aluop和func来确定输出的operation,即operation;

   I型各类指令,直接根据操作码就可以确定当前执行何种运算,ALU只需要根据aluop确定输出的operation,即aluop\rightarrowoperation;

   J型指令不会使用ALU,所有ALU控制单元输出的operation与J型质量无关,所有的无关项可以标记为 \times 。

   在设计主控单元输出的微命令aluop时,全部R型指令可以分配一组相同的编码,I型指令对应的任何一种ALU运算操作都必须分配一组独立的aluop编码,J型指令不需要分配与之对应的aluop。

如下图所示,R型指令分配一组相同的aluop编码,另外6条I型指令对应的操作分别有4种ALU基本运算,所以分配4组aluop编码。故11条目标指令共需要输出5组不同的aluop编码,因此编码位数m设计为3为。

R型指令的4种运算aluop编码为100;

I型指令的addi、lw、sw对应的编码为aluop=010,beq对应的编码为aluop=110,andi和ori分别对应编码为aluop=000和aluop=001。

     在为指令分配主控单元输出的aluop编码时,应使aluop编码与预期输出的operation尽可能一致,这样可以优化ALU的组合逻辑。ALU在译码时只需在输入的aluop的高位补充一位0即可形成aluop的输出逻辑

 

单周期ALU控制单元的输入/输出真值表

  观察全部aluop编码:

      aluop[2:1]=10时可以判断是执行的R型指令,再结合输入的func[2:0],就可以确定唯一的operation输出,即< aluop [2:1],func[2:0] >\rightarrow operation,则aluop[0]和func[5:3]与输出的operation无关,组合逻辑中无需考虑这些无关项。

     根据ALU的真值表,逐位设计operation[3:0]码位有效(为1)时产生逻辑:

  

(3)PCSrc控制单元

   从控制系统的结构模型可以看到,PCSrc控制单元只接收3个输入:I型跳转指令的主控单元产生的beq指令译码标志beq_flag, j指令的译码标志j_flag,ALU反馈输入的zero(即0标志位),可以输出3种微命令编码分别为:00、01、10。

beq指令会使用接收到ALU反馈输入的zero标志,,因此zero是其余10条指令的无关项;因为beq_flag和j_flag是互斥的,所以j_flag是beq的输入无关项;同理,beq_flag也是指令j的输入无关项。根据真值表可以得到PSCrc[1:0]各位(为1)有效的逻辑表达式:

其组合逻辑电路为:

   输出位PCSrc[1]与j_flag一致,所以两者在逻辑上是同一关系,即j_flag\rightarrowPCSrs[1]。只有当从主控单元输入到PCSrc控制单元的beg_flag=1且ALU反馈输入的标志位zero=1时,PCSrc控制单元输出位PSCrc[0]=1,其余情况输出的PCSrc[0]=0。

(4)主控单元

   主控单元接收的唯一输入就是指令中的操作码OP,即Inst[31:26],对OP译码后,输出7种直接控制信号和3种间接控制信号。

   下图展示这11条指令目标指令在执行时,输入到主控单元的6位操作码即OP[5:0],以及从主控单元输出的7种直接控制信号的微命令码和3种间接控制信号的微命令编码。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部