CPU,内存,硬盘,指令以及他们之间的关系

3/3/2017来源:C/C++教程人气:1285

电脑是怎么工作的?

我们每天都在使用电脑上网、办公,似乎电脑天生就能“听懂”我们的命令,为我们服务。前段时间阿尔法狗战胜李世石的新闻更是让我们对电脑的能力刮目相看。但是,我们都知道,电脑(原名计算机,理论原型为图灵机,可观看电影“模仿游戏”了解历史小故事)作为一个非生物,本身是没有思考能力的,那么,它是怎么工作的呢?

要是你有DIY装机的经历,你就会知道主机中有几个必不可少的部分,老大当然是CPU(Central PRocessing Unit,中央处理器),主要分为Intel和AMD两大巨头,负责执行各种指令,相当于我们的大脑。那指令又是什么?CPU为什么能懂呢?就跟我们人类之间互相交流用的语言一样,指令就是电脑的语言。电脑工作要通电,而电压有高低之分,这就引进了0和1二进制的概念。CPU虽然速度快,但其实没有独立思考的能力,我们叫它做什么它才会做什么,既然它能区分0和1,那么我们就把要让它做的事表达成二进制的一串数字,这就是指令。可是对于我们人类来说,0和1的数字串可读性实在是太差了,于是我们又发明了相对易读的汇编语言,和更高级的C/C++、java等语言,这就是后话了。虽然编程语言有成百上千种,最终它们都是要转变成电脑能读懂的二进制指令,这都是编译器的功劳,在此我们先不展开了。

CPU能读懂指令,那我们该怎么把指令传达给它呢?换句话说,指令平时住在哪,又是怎么被CPU找到的?装机的时候有个沉重的大家伙叫硬盘,它就是指令(或者说程序)的家。我们都知道在电脑上装了QQ以后,关机重启QQ还在,这说明硬盘的存储有持久性,不易丢失,它不用一直靠电活着,所以我们才能放心地把各种文件、视频都交给硬盘保管。硬盘虽然容量大,现在动不动到TB的级别,但它有个致命的弱点,就是速度慢,CPU老大跑个马拉松的功夫,它可能还没起步,这还怎么愉快的玩耍?

那就想办法给它们搭个桥吧,于是内存(Memory)应运而生,它就像一个临时的工作区,从硬盘中把指令读出来,供CPU使用。人无完人,内存也有缺点,一断电它就失去记忆了,有点不靠谱。不知道你有没有编辑了半天文档却没保存最后遇到停电回到解放前的经历,还好贴心的Word有自动保存功能,否则就真是欲哭无泪了。

硬盘、内存、CPU,这三者速度一个比一个快,但容量却是一个比一个小,价格也是一个比一个贵,机智的计算机工程师把它们组合在一起,形成一个层次结构(Hierarchy),从而和谐地工作。现在硬盘有了升级版的固态硬盘(SSD),CPU和内存之间也还有一层缓存(Cache),无论怎么变化,我相信这样一个层次结构还是会一直存在。