Designing an instruction set
Designing an instruction set
本章用前8章所学的知识设计了一个简单的通用计算机,采用冯诺伊曼结构,即main memory + CPU,而CPU则主要由datapath(即以ALU为主的计算电路)和control logic(即用ROM和Register实现的FSM控制电路)。整体内容很简单,但是很好玩!
Datapaths and FSMs
Let’s start by designing the logic that implements the desired computations — we call this part of the logic the “datapath”.
上图虽然实现了a和b的计算,但还不能控制其状态,即不能在b为0时结束循环,所以需要一个FSM来控制整个计算电路即datapath的状态。
Programmable Datapath
第一节中设计了一个可以计算介乘的datapath, 然后配上一个简单的FSM, 就可以完成计算任务。但实际中的计算任务有成千上万种,我们不能为每种任务都设计一个单独的datapath。
首先每种计算都可以分解为ALU的几个基本计算类型(Arithmetic, Bool, Comparable, Shift),所以就计算来说,一个ALU就差不多够用了。但有的任务可能需要更多的寄存器来保存中间结果,所以增加寄存器数量是必须的。如下是一个简单的可以进行通用计算的datapath.
The von Neumann Model
在上一节的模型的基础上,冯诺伊曼引入了主存和输入/输出设备,从而执行数据量更大的计算任务,而且也可以有各种各样的输入输出设备,如下图所示。
Storage
冯诺伊曼模型的要点是用主存来存储指令和数据,主存相对于寄存器来说,最主要的优点就是容量大,所以能存储很多条指令。假如一条指令是32位也就是4bytes的话,那么1KB就能存256条指令,1M就能存256000条!
在冯诺伊曼结构中,有一个专门的PC寄存器,用来存储下一条指令在主存中的地址。
指令和指令集
指令就是用来告诉control logic该干什么,指令集就是按同一标准设计的一大堆指令,可以控制control logic干各种各样的事。指令集相关内容感觉没有太多需要记录的,所以就不记录啦。