在上一篇文章中,我们讲了关于进制、补码和逻辑运算的数学基础。在这篇文章中,我们主要讨论的是硬件基础。由于汇编语言实际上是底层硬件的一个抽象,因此,我并不想太多地涉及底层硬件,只想大致讲一下硬盘-内存-CPU的这个三级结构。但这里要指出的是,实际上硬件层面远不止这么简单,还有一二三级缓存等复杂的结构。
CPU、内存与硬盘
打开我们的Mac的系统信息,我们可以看到处理器和内存型号:
在磁盘工具中,我们也可以看到硬盘的型号:
处理器(即CPU)、内存和硬盘,这三者究竟有什么关系呢?
通过一个简单的计算我们可以知道,一块硬盘的大小为251GB, 那么一共有251,000,000,000个存储单元,也就是约10的11次方个存储单元;一块内存的大小为8GB, 那么一共有8,000,000,000个存储单元,也就是约10的9次方个存储单元;而一块Intel Core i5的CPU,由于采用x86-64架构,因此一共有16个通用寄存器。
因此,一块硬盘的存储容量是一块内存的100倍,是一个CPU的10,000,000,000倍!
那么,我们为什么要有这样的区分呢?能不能整个电脑的存储全用CPU的寄存器来做呢?答案是:理论上能,但实际上人类科技水平达不到,而且即使做出来也太贵了。我们从一个只有CPU,存储全靠寄存器的电脑入手,看如何能降低科技要求,削减开支。
CPU的功能是什么?是将寄存器中存储的值放到各种运算单元中进行处理。那么,我们在运行一个程序的时候,可能这个程序会有数以千计个变量,但是,在一段时间内参与运算的变量的个数却是非常少的,许多变量在参与运算后的很长一段时间内都不会再次参与