计算机时钟学习随记
在之前在学习程序是怎么跑起来的时候,知道了程序是指令和数据的集合,程序通过cpu的调度完成运算,程序是已经写好的流程,那么cpu为什么能做到按顺序执行程序指令呢?今天特意看了一下这方面的东西.
cpu内部有很多寄存器,在实现一个步骤的时候,往往要同时操作好几个寄存器,比方说一个步骤需要同时往 寄存器A,和寄存器B写入数据,注意,这里是指同时写入,如果先往寄存器A或B任意一个先写入数据,就会出错,所以很多寄存器的操作需要同步性,有点类似于所有寄存器在同一个节拍做对应动作,那么这个节拍是关键,那么这个节拍又是由谁来控制的呢?这个就是cpu的时钟,cpu配上时钟就是一种时序cpu(当然cpu也可以不用时钟,如果那样的cpu可能就是做其他的用法了,这里不考虑),我们用的一般都是时序cpu。
打比方幼儿园小朋友要表演一个舞蹈节目,老师提前编好了舞蹈动作流程,然后安排小朋友跳,每一个小朋友按照这个舞蹈流程动作其实也可以独立跳完,但是这是集体舞蹈,要和其他小朋友相互协作,这时老师就会出来喊诸如1234,2234.....的节拍,每到一个节拍,大家必须同时完成一个动作,比如第一个节拍要求左边2个小朋友蹲下,中间3个站起来,第二个节拍要求全部站立,等等,一个节拍对应的是一套整体动作,大家必须同时做到位,有一个人快了或慢了都不行,然后按节拍按顺序全部执行完,就完成了这个舞蹈节目。
cpu的时序调度也是这个道理,要按顺序完成一个程序,在同一时间必须要很多寄存器同时更新到一个状态,只要有某个寄存器快了或者慢了,都会影响计算结果,就好比刚刚的比喻一样。
所以我们理解程序是cpu按顺序执行指令,虽然对于我们来说知道按顺序,但是cpu完成这些要做到按顺序并且按节拍来控制各个部分完成一步步的步骤,就像前面的比喻,大家都按顺序能完成舞蹈,但如果不是一个节拍上,肯定是不行的,这就是时钟对于cpu运算的作用。
当然仅仅是有时钟还是不行的,时钟仅仅是一个固有频率发生器,定时的发出脉冲信号,试想如果前面的舞蹈老师喊出了正确的节拍,但是有个别小朋友不理解节拍怎么办?所以还需要小朋友能正确识别节拍,这就相当于时钟的信号需要接收端能正确处理 ,时钟寄存器就是用来帮助寄存器识别节拍的,时钟寄存器有个特点,只在时钟信号的上升沿(比如说5V高位)才能往里写入。其他时候,输入只能在外面等着。如此一来这样就能保证大家都能同步在一个节拍上了。
如此看来,电路的运行本身是无序的,只是我们人为的加入了节奏控制才实现了时序控制,有了时序控制,计算机就能按我们的要求进行运算了。