ROM、RAM、内存、内存条、外存、内部存储器、外部存储器、FLASH等之间的关系


  各位看到这一系列的名词,是否也曾感受到一头雾水?研究了一上午终于理清了它们之间的关系,直接上图说明,相信你看完也能恍然大悟!若有错误麻烦在评论区指出。

这里有几点需要明确:

  1. 存BOIS的ROM也属于内存(因为CPU也可以对其直接寻址),但我们生活中常说的内存仅指RAM(也称运行内存)。
  2. PC的内存严格上把rom也包括进去了,但单片机的内存只是RAM,单片机的ROM(FLASH)相当于PC的外存固态硬盘。
  3. ROM最开始提出是内存概念的范畴,但后来外存发展出现了固态硬盘,所用的FLASH技术属于E2PROM,沿用了部分ROM的概念,这就使得我们很容易把ROM和外存混淆,实际上ROM和外存没有关系,ROM是内存。
  4. 内部存储器 = 内存(内存储器)+CPU缓存,外部存储器 = 外存储器,是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据,如硬盘、软盘、光盘、U盘等。

Q1:有外存,为什么还要内存?

Answer:因为CPU需要内存运行程序,再问为什么是内存?因为快!

  我们知道计算机中存储程序的部件包括外存内存,但是外存中存储的程序必须要加载到内存中才可以运行,而在外存中是无法直接运行的,这是因为负责解析和运行程序内容的CPU,需要通过内部程序计数器来指定内存地址,然后才能读出程序。即使CPU可以直接读取并运行外存中保存的程序,但外存的读取速度是非常缓慢的,程序的运行也将非常缓慢。

  内存(Memory),也称内存储器主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据,它是外存与CPU进行沟通的桥梁,其性能的强弱影响计算机整体发挥的水平。

Q2:内存这么好,为什么还要外存?

Answer:第一点原因是两个字:“成本”;第二点原因是内存是RAM,断电数据丢失,而外存断电数据不丢失。

  内存速度确实快,但它造价也高,因此容量有限;外存虽然速度慢,但造价便宜,因此可以大容量扩展。
  此外内存是RAM,断电数据丢失,而外存(不是ROM不是ROM不是ROM!!)断电数据不丢失。

  这两种存储器相辅相成,外存可以保存大量待处理数据或者处理结果,内存可以利用速度快的优势,将数据从外存分小批调入处理然后再保存到外存去,外存如果容量不足还可以再保存到更便宜、尺寸更大、操作更慢的外存中去,或者从它上面读取数据。内存速度快,但容量小,成本高外存速度慢,但存取容量大;内存断电后不能保存数据,外存断电后仍能保存数据。

Q3:为什么单片机可以不在RAM中运行程序?

Answer:核心还是两个字:速度,单片机运行的速度较慢,在FLASH(ROM)或RAM中运行都可以。

  我们知道给单片机烧录程序一般是烧进FLASH(ROM)中的,那单片机的程序运行在哪里呢?答案是 FLASH(ROM)和RAM均可。对于单片机来说,运行的速度也就是几十上百兆,相对来说较慢,所以程序在RAM和FLASH中运行的差异不是十分明显。

  一般比较小的系统,单片机本身内部就有FLASH,这种FLASH不同于通用的FLASH,它支持随机地址访问,这样的单片机,一般程序都存储在FLASH里,然后运行的时候,PC指针也可以到固定的FLASH地址里去取指令,所以程序是运行在FLASH里。

  相对较大的系统,单片机也都是比较强大的,它们的FLASH一般都是外挂的大FLASH,这样的FLASH的特点是不支持随机地址访问,必须逐页访问,因此程序不能运行在FLASH里(因为下一条指令会找不到),而RAM支持随机地址访问,所以把FLASH里的内容搬移到RAM里,就可以运行了,这样访问起来也会更快。

Q4:我的内存条只有8G,我是不是运行不了超过8G的程序了?

Answer:恭喜你!可以。

  这里要提到虚拟内存,虚拟内存是指把外存的一部分作为假象的内存。当我们运行十几个G的程序时,其实内存运行了一部分,外存也“运行”了一部分。当然这里程序并不是直接在外存中运行的,CPU只能运行内存中的程序,当要运行外存上的程序时,系统会把外存上的程序和内存中的程序进行部分置换,这样看起来就是在运行十几个G的程序,其实运行的只是一部分而已。
  不过这会带来一个问题,虽然程序是运行起来了,可是既然要置换,那么必然就会减慢程序执行的速度,给你的感觉就是很卡顿。加内存条吧朋友!

物联沃分享整理
物联沃-IOTWORD物联网 » ROM、RAM、内存、内存条、外存、内部存储器、外部存储器、FLASH等之间的关系

发表评论