前言
设计一个处理器,可以从如下几个步骤来考虑。
- 分析指令系统,得出对数据通路的需求。
- 为数据通路选择合适的组件。
- 拼组件,来为不同指令建立通用的数据通路电路。
- 分析每个指令,来确定需要在电路上加些什么控制信号(选择器)。
- 集成控制信号,形成完整的控制逻辑。
实现
下面一系列的图是为MIPS系统中简单的六条指令add,sub,ori,lw,sw,beq
实现的一个完整的CPU。
这副图是取指单元。PC连接到指令存储器,指令存储器将PC的地址解析以后输出地址的内容。因为PC需要自加,又由于分支指令的存在,
因此PC需要一个选择器来提供两个选择,一个是地址+4(MIPS为32bit指令),一个是跳转到目标地址。
这幅图是为这六条指令实现的完整的CPU电路图。可以看到主要的组成部件,寄存器堆,ALU,位扩展器,数据存储器,取指器。其中红色字体的都表示控制信号,不同的指令能被识别其实都是依赖这些控制信号,而不是凭借智力因素。
这幅图是解释了控制器是怎么实现的。就是根据opcode,func位,通过两个集成的门电路,来形成那些控制信号的组合。
扩展阅读
http://courses.cs.washington.edu/courses/cse378/09wi/lectures/lec08.pdf
https://www.cs.cmu.edu/afs/cs/academic/class/15740-f97/public/info/pipeline-slide.pdf