CPU最简单的结构框图:
图一
从图一可以看出,CPU由运算器(单元)、控制器和存储器组成。运算器是用来做加减运算的,存储器是用来存储指令中用到的数据,注意,CPU里面的存储单元和左边的内存是不同的,前者一般是寄存器,速度比内存更快,但价格更昂贵。这两个设备的作用都好理解。关键是控制器是做什么用呢?
从图一中可以看出,控制器是和指令寄存器直接相连的。我们知道,CPU执行指令是一条一条执行的,但CPU是靠电来控制的,那么,怎么来保证指令按顺序执行呢?这就是控制器的作用。我们注意到,CPU是和外部内存的代码段、数据段连接在一起的。
图二
图二是CPU执行指令的示意图。CPU执行一条指令的步骤可以简化为:
(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP = IP + 所读取指令的长度,从而指向下一条指令;
(3)执行指令。 转到步骤 (1),重复这个过程。
上面第一步中的CS:IP是两个寄存器,共同得出将要执行的下一条指令的地址。比如图二中第一条指令的地址是20000号,这可以理解为当CS:IP得出20000这个地址以后,就相当于有了20000号这个房间的钥匙,可以把里面的指令内容B8 23 01读出来。
有了上面初步的指令执行的概念以后,再看下图:
图三
图三是在图一的基础上进行了细化的CPU结构。图中的ALU对应图一的运算器,累加器AC对应图一中的存储单元,存储器等于图一的内存。其它的基本属于控制器部件。这个图里面,首先我们搞清楚什么是时序产生器。
其实很简单,就像一条生产线,生产线上的工人或者机器的每一个动作,都必须得到所操作的产品的到来时刻、上下岗位的严格配合才能正常运转。CPU是由电控制的,这方面要求更为严格。比如最简单的一个指令mov ax,10H,就是把10H这个数字放到ax寄存器中,但在放进去之前,必须先保证ax寄存器中的数据已经没有别的指令在使用,类似的工作就是由时序完成的。
那么,什么是指令译码器呢?我们可以这样理解:当甲让乙拿起桌子上的一个水杯的时候,乙收到这个指令后,他的脑袋里面就要把“拿起桌子上的一个水杯”这句话转变成走到桌子旁边、伸出手、再拿起杯子等一系列动作,这个过程我们可以理解为译码的过程。放到计算机里面,其实就是把mov ax,10H这样的一条指令转变为一个个具体的电路开关通断动作的过程。
缓冲寄存器的作用是为了解决CPU速度快于内存的速度而设置的。CPU执行一条指令的时间非常短(比如1纳秒),如果执行完了一条指令又要到内存去取下一条,这个动作相对比较长(比如100纳秒),那么CPU就要在那里干等99纳秒,所以设置缓冲寄存器的目的就是可以一次性取出多条指令放进CPU内部,以避免上述情况的发生。
总之,一条指令的执行,需要CPU内部各个器件的配合才能完成,并且要用到地址总线传送地址,数据总线传送数据等。
最后放上一个CPU功能图。