思维导图
前两章中简要概述了指令的形式及其作用,处理器的主要功能就是在规定的时间内处理指令.
处理器是如何处理指令的呢?从硬件结构上讲,处理器有数据通路和控制器构成.其中,数据通路的主要功能是根据指令处理数据的流通,在此过程之中,会读取或者写入数据,也会对数据进行算术等处理,如何判断是进行写入还是读取或者是其他的操作呢?这就会使用到控制器的控制单元,他会将指令解码形成不同的控制信号,以控制数据通路的组成构建进行不同的操作
本文将由简到繁的描述数据通路是如何构成以及如何实现的.然后写控制单元是如何实现的,两者有时如何协调工作的.最后将简要描述处理器的流水线是怎样实现的,会遇到什么问题.
一.数据通路
1.1数据通路的组成
数据通路的功能部件包括两种逻辑单元:
- 组合单元:用于处理数据的单元.他会接受数据并进行处理,然后输出数据.相同的输入数据就会产生相同的输出数据.如ALU
- 状态单元:用于记录状态的存储单元.计算机可以根据其记录的值进行恢复.比如寄存器或者存储器.状态单元至少有两个输入, 一个输出.两个输入分别是写入的数据和决定何时可以写入的时钟信号.一个输出是上个时钟信号写入的数据.状态 单元随时可读.
数据通路的具体部件是用于操作或者保存处理器中数据的单元,包括:
- 指令存储器
- 数据存储器
- 寄存器堆
- ALU
- 加法器
1.2数据通路的实现
我们将实现可以处理 存储器访问指令:sw,lw. 算术逻辑指令:add,sub,and,or,slt和分支指令:beq,j的处理器.(图中的英文RegWrite 表示控制信号,控制功能部件的具体操作,后文再说)
首先分析以上指令将会使用那些构成部件:
- 无论执行什么指令,都需要指令存储器以获取和保存当前需要执行的指令,需要程序计算器指向当前指令的地址,而下一条指令可能就是本次执行指令的地址+4,所以需要一个加法器计算下一条指令的地址.
- 除了j指令外,其余指令都需要使用寄存器,而寄存器在寄存器堆中,因为指令最多会读取两个寄存器,写入一个寄存器,所以,寄存器堆有两个读端口,一个写端口.只通过寄存器号以确定是哪个寄存器.也需要使用算术逻辑单元(ALU)进行计算,比如add,sub等等.