大家的C语言-101-计算机的核心CPU

什么是程序

上一篇介绍了计算机是如何工作的。但同学们已经发现了使用计算器的过程十分麻烦。谁也不会为了求2+1去设置一大堆开关。但要计算一万次加法,机器就显示出了它的优势。只要能使设置开关的和获取结果的过程自动完成即可。

继续2+1的例子,我们把指令和操作数按顺序排列成表中的二进制数序列:

顺序 数字 指令/数据
0 000 指令
1 010 操作数
2 001 指令
3 010 指令
4 001 操作数
5 011 指令

可以发现,每次计算加法的过程都是相同的,唯一需要改变的是两个操作数的值。如果设计一个电路能自动地按照表中顺序设置计算器的开关,并将计算器的输出端状态保存起来,就实现了加法的自动化。要算一万次加法,只需要事先写好一万次这个序列让机器执行就可以了。

这种有一定顺序的可以让机器自动执行的二进制序列就叫做程序。程序包括指令、操作数和数据。其中数据指的是图片、音效、文本等,但无论什么数据对于计算机来所都是二进制数。

内存和控制器

明确了什么是程序,接下来就是如何让计算器自动执行程序了。引入两个新元件:一个叫做控制器,一个叫做主存储器。

主存储器的作用是保存程序,并且可以供控制器读取程序。并且控制器可以将计算结果保存到主存储器中。我们最常见的主存储是内存。内存的特点是只能在通电的情况下才能工作。控制器从主存储器中读取程序的操作叫做读操作,将结果保存到主存储器的操作叫做写操作。相应的对于内存的读写操作,就叫做读内存写内存。

控制器作用是从主存储器中读指令和数据,然后将指令设置到计算器的控制端上,将操作数设置到计算器的输入端上,并将计算器输出端的状态保存到主存储器中。

最后整个装置如下图:

大家的C语言-101-计算机的核心CPU_第1张图片

这样我们只需要将程序保存到内存中,控制器就可以自动读取程序,并控制计算器工作。最终我们可以从内存中得到计算结果。

控制器和计算器合并在一起被称为CPU,即中央控制单元。实际上完整的CPU不仅仅包括控制器和计算器。CPU通常还有IO控制器用来控制键盘、鼠标、硬盘、显示器、内存、硬盘等。

CPU和主存储器通过总线链接。总线实际上就是一组导线,只不过它被嵌入在主板中。

指令集

上表只是举个例子。真实的CPU支持的指令可不仅仅有4个。而且同样的指令,对于不同的CPU对应的二进制数也不一样。比如,A品牌CPU的加法指令对应11110000,B品牌CPU的加法指令对应00001111。CPU支持多少指令和每个指令对应的二进制数被称为指令集。目前最流行的指令集有两个,一个是以Intel和AMD为代表的X86指令集(主要用于服务器和桌面系统平台),另一个是ARM指令集,主要用于移动设备(如麒麟CPU、骁龙CPU等)。

你可能感兴趣的:(大家的C语言)