内存条还有一个更专业的名字: RAM(随机存取存储器),因为它们可以在任何位置随机读写数据。
现在的计算机基本上都是二进制的,所以无论什么数据或代码指令,在我们这里都是一连串的0和1的比特。为了存储这一个比特,在先驱者面前曾经有两种电路方案,第一种是静态方案:即
这是不是有点复杂?我想是的。这种电路方案的优点是在0和1之间保持稳定的状态,因此被称为静态随机存取存储器(SRAM)。但它需要太多的晶体管,一个比特就需要几个晶体管。16GB太多,而且成本太高。有第二个选择:
这样是不是简单了许多?只通过一个电容器的电荷就能决定这是一个 1 还是一个 0,这样就存储了 1bit。
在每一个存储芯片里,这样的比特位存储单元都有很多,例如一个 16G 的内存条有 137438953472 bit,也就是有 137438953472 个这样的电容。
但这种电路方案有个毛病,就是里面的那个电容会“漏电”,电容中的电荷会慢慢消失,电压也就变小了,这样就没办法区分这是表示的 1 还是 0 了。
为了解决这个问题,必须得周期性的去给它们充电,才能维持数据的稳定,这叫动态数据刷新,所以这种方案叫 DRAM (Dynamic Random Access Memory)。
内存控制器就像一个中介,位于 CPU 与 内存条之间。
CPU 这边想要访问数据,肯定不想这么麻烦,所以内存控制器就派上用场了。
用 bit 作为读写单元太麻烦了,咱们按 8 bit 为一组,叫做一个字节 byte,CPU 统一给内存的存储空间编址,以后要读取数据的时候呢,就把地址交给内存控制器,再告诉内存具体是读写哪个芯片哪个分片的哪些位置。
以后只需要一个地址,内存控制器就转换成具体的数据存储位置,去读取内存,再由内存完成读写操作就可以了。
由于内存控制器的重要性,现在,内存控制器已经集成到了 CPU 内部,成为了 CPU 的一份子了。
随着 CPU 的发展,CPU 的速度越来越快,开始嫌内存慢了,要说慢,硬盘那可比内存慢多了!于是在 CPU 内部又搞了个缓存出来,不用每次都问内存要数据,而是把一些常用的数据存储在 CPU 内部的缓存中。
只不过 CPU 内部的缓存不会太大,仅存放一些常用的数据,大部分数据还是需要通过内存进行读取。