在上篇文章“我与计算机”中提到我对于计算机的认识在先前是初步的,因此我对于构成计算机的硬件自然也存在认知上的不全面,其中就包括CPU这项计算机重要组成部分。
起初我对于CPU的认知仅仅停留在CPU是一个非常抽象的关于“计算机运行”的概念,因为在日常使用最广泛的计算机即电脑的使用中,我发现每个电脑都离不开CPU这个“神秘的”存在,再者就是在考虑电脑配置的时候也会发现有不同型号的CPU处理器,i5、i7、甚至i9,这些在阅读《程序是怎样跑起来的》第一章前我对于CPU的认知是非常浅显的,而在阅读之后,我对于CPU各个组成部分已经有了大致的认知,并且对于每个组件的功能也有了初步的了解。首先CPU的内部结构大体分为控制器,时钟,寄存器,运算器。他们相互配合,系统工作的运行计算机内存上的数据和指令。如果说把CPU看做是计算机的大脑,那么首先寄存器就是大脑的记忆细胞,因为寄存器字面义就是存储的一个空间,主要存储的就是数据和指令和其他需要处理的对象。需要明晰,它是暂存这些数据,而这些数据本应该在计算机的主内存上存储着,那是如何被调用到CPU这个超强大脑中进行处理的呢?就是通过控制器这个组件,控制器它主要就是控制运行指令的,在我看来它相当于是一个CPU与计算机其他部分的沟通媒介,只有通过控制器,才可以将计算机主内存上的数据和指令调入到寄存器之中,并且执行处理后的指令来控制整个计算机。那么大脑最为主要的功能就是思考,而思考就对应着CPU的运算器,运算器负责运算被控制器调入寄存器中的数据、指令……并通过控制器来将处理运算过后的指令应用于整个计算机,再者就是时钟,时钟相当于大脑运行的开关,只有时钟发出“允许运行”的信号,整个大脑才会开始将调取数据,存储数据,运算数据,传递结果这一系列操作,这是CUP的整体之间的大致构成与功能。但是每个原件之间也有诸多学问所在,但是都与一个原件有着“难舍难分”的关系——寄存器。在书中说“CPU是寄存器的集合体”,此话怎讲?首先来看寄存器的种类,寄存器包括“累加寄存器”、“标志寄存器”、“程序计数器”、“基址寄存器”、“变址寄存器”、“通用寄存器”、“指令寄存器”、“栈寄存器”。我认为计算机程序的运行都是通过不同寄存器之间的配合才得以完成的,就拿程序员编程来讲,程序员用目前所流行的编程语言例如JAVA、C语言、C++等“高级语言”编写程序代码后,必须通过“编译”这一步来实现将所写的代码转变为计算机所认识的“机器语言”,而所编写的代码中存在的相加运算、函数都是控制器将其所编译后形成的机器语言调用到寄存器中,在寄存器中进行加减运算的,并且不同的数据会放在不同的寄存器,例如JAVA中的创建对象这一步操作,就是开辟了一处内存空间来存放所创建的对象,而所开辟的内存空间其实是寄存器中的“栈寄存器”,它的功能就是不断存储数据,在CPU运行函数的时候也有很大的作用,首先要了解的是,每个数据在寄存器中都有自己的地址,也是通过将程序计数器的值设定为所需数据的地址,这样运行时才会明白自己需要哪一个数据,当运行函数时需要函数入口的地址,但是运行过后程序计数器是无法将值设置为下一个需要运行的数据的,因此就需要call指令先将数据存入栈内存,等函数运行过后return指令会将地址设置为栈内存中的数据地址,这样完美的解决了函数运行过后的处理流程,因此可见每个寄存器都有着自己独特的功能,他们相互配合,形成一个系统来控制计算机的运行。以上就是我对CPU的再认知和CPU中寄存器的认知。