为什么需要内存RAM——内存、程序执行的形象分析

    这里就不去讲RAM的各种专业术语了,要是讲,估计一个博士论文也讲不完,这个问题也一直困惑着我,我也只是从使用的角度去联想,方便去理解,毕竟很多程序员都有强迫症,必须要想明白,才愿意去用。

   我们打个比方,场景是一个不大不小的饭店,饭店里有个厨房,储藏间,存放了各种蔬菜、肉、调味料等原料。厨房里目前有1名永远只会动嘴不会动手的主厨、的1名书呆子厨师、1名搬运工、1名洗菜师傅、1名切菜师傅,1名配菜师傅、1名传菜师傅、1名喊节拍的人。相信大家都知道我们想怎么比方了:

(1)饭店—— SOC,注意SOC不是CPU,SOC是芯片厂家在CPU的基础上添加各种外围后,封装在一起,能够直接使用的一个

         芯片。

(2)储藏间——外部flash或者ROM,存放原料,也就是程序代码和数据。

(3)厨房 —— CPU,没错,CPU并不是一个单独的人,而是一个小集体。

(4)书呆子厨师—— ALU。为什么说ALU是书呆子呢,因为他只会照着菜谱炒菜,你要是告诉他加盐少许,他绝对会一脸懵逼,

         “少许”是多少?然后他就罢工了,必须要在菜谱里明确告诉他,加盐10克,温度多少等等量化的数据,他才不懵逼。

(5)菜谱—— 指令寄存器,这个菜谱还比较小,每次只能存一句程序,然后不停的更新。

(6)搬运工—— 总线。

(7)洗菜师傅— 负责取指令。

(8)切菜师傅—— 负责翻译指令,将程序员能看懂的指令翻译成那个书呆子厨师能直接用的机器指令。

(9) 配菜师傅—— 将切好的菜,按照顺序放大到工作台上,方便厨师去用。

(10)只会用嘴bb不干活的主厨:程序计数器。

(11)菜谱:程序代码。

(12)传菜师傅——将超好的菜(运算结果)输出。

(13)RAM—— 炒锅旁边的工作台,放置配好的调料、切好、搭配好的炒菜原料。

 (14)打节拍——时钟节拍,大家都按照对节拍的理解,各自喊着1-2-3-4的节拍去做自己的工作

 (15)客人—— 产品经理。提各种需求目标的人。

 (16)工作台上的各种盘子碗—— 各种通用寄存器。厨房里并没有太多的盆盆碗碗,只要及时回收,清洗,几十个就够用啦。

   这么一拆解,相比大家就知道程序执行的简单过程了,可能有些人会有这些疑问?

   (1)为什么要设计这么多环节?

            答:因为经过人类无数次的实验验证,我们进行生产活动时,将整个过程拆分的足够细,然后逐个执行,整体的效率和

                   结果质量的综合结果是最好的,尤其是整个过程是 全自动-无人值守的,所以更要拆分的足够细,而且有句话叫做

                   “天下武功,唯快不破”,CPU运行的速度极快,所以可以给人的感觉是,能够同时运行多个程序,看起来很牛逼,

                   慢镜头下,你会发现,也就那样而已。

   (2)那么RAM的作用是什么呢?

            答:有了疑问1的回答,想必我们就可以接受和理解RAM的作用了,RAM就是那个炒锅旁边,距离那个书呆子厨师最近的

                  工作台,他所有的工作都是围绕着这个工作台来完成的,从工作台上拿原料,放到锅里炒,炒好后,把菜盛出来,

                  仍然放到工作台上,其他的事儿就交给其他的人了。所以这也能理解,为什么工作台越大越好了,因为越大,意味着

                  我们可以一下子放很多道菜的配菜,而不用每次只能放一样东西,这样效率会更高,当然了,对于特别简单的应用

                  程序,内存大小时区别不大的,只有在同时运行多个程序时,才有区别,当然了,内存再大,CPU的PC寄存器每次

                  也只是挪动一次。只不过CPU执行的速度极快,看起来好像是同时运行多个程序。

                   等到饭店打烊以后,也就是断电后,工作台上的所有东西都会被丢掉扔了(卫生安全),没办法,就是这么任性,断

                   电前,各种材料,想怎么用都可以,断完电,天王老子都不行。

发布了247 篇原创文章 · 获赞 257 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/91134173