计组 | 半导体存储体系
存储器是计算机的一个组成部件。它的进化反应了平衡的思想。
有一个很直觉的问题是:为什么不直接采用一样的材料进行存储器的设计呢?毕竟,分出 Cache、内存、外存这些,好复杂!为什么不能简单点?
因为存储器需要达到平衡,没有一个在各个方面都非常能打的存储器。总的来说,在存储器方面有 3 个评判标准:
- 价格;
- 速度;
- 容量。
在市场经济中,价格是最终的判则,否则没人购买商品。因此,在价格的限制下,如果存储器的速度很快,容量就不会做的特别大。反之亦然。
在计算机的不同存储层次中,确实对不同层次的存储器有不同的要求。比如说,需要一些存储器像仓库一样,存储大容量的数据。也需要一些存储器需要像信使一样,快速地把数据传递给 CPU。
总而言之,我们的目标就是:让不同能力、各有优缺点的存储器结合在一起,使他们在价格、速度、容量上都发挥出最好的效果。
从快速到慢速,从靠近 CPU 到远离 CPU,有这样一些存储器:
- CPU 内部的寄存器;
- Cache;
- 内存;
- 外存。
这里主要讨论半导体存储器,可以大概分为两类:随机存储器(RAM) 和只读存储器(ROM)。还有一类是磁存储器,不太讨论。
RAM
RAM 的特性是掉电就会删除,分成 SRAM 和 DRAM,其中的 S 和 D 分别表示 Static 和 Dynamic.
SRAM
静态的随机存储器,好处是访问速度快,而且只要通电就可以保持内容不丢失(不用刷新,见 DRAM)。一次性接收行列地址。不足是集成度比较低,而且耗电量高(因为在任一时刻总有晶体管导通)。
DRAM
动态的存储器,好处是和前者对立的。集成度高。但不足是访问速度慢,需要分别提供行列地址(不过这也意味着它的地址总线数量比 SRAM 少)。以及需要定期刷新才能保持单元中的值。
在此基础上,发展出了 SDRAM,这里的 S 表示 Synchronous,同步的意思。同步,也就是各种对它的操作都要和时钟同步。
这里可以深入一个刷新的时间问题。到底什么时候刷新比较好呢?可以连续地(集中式)刷新所有行(刷新是按行来的,一次就可以刷新一行),也可以读取一行刷新一行(分散式),当然最后普遍采用的方法是异步式的。所谓异步式,就是根据刷新周期 / 行数,看一个周期需要刷新多少次,然后让刷新均匀地分布在整个周期中。
举的一个例子是政府部门和办事群众的例子。集中式的方法像每周五下午不对外办公,集体开会;后者像办事一小时,开会一小时(哪来那么多会开呢,效率浪费);最后的方法类似于以办事为重点,没事再开会。
如果 CPU 可以在指令译码阶段刷新,效率就更高了。
在 SDRAM 的基础上,发展出了 DDR,Double Date Rate,在时钟的上升沿和下降沿分别进行一次存取操作,所以是 2 倍速。
ROM
ROM 的意思是 Read Only Memory,不过现在也不一定是只读的了。
一开始确实是只读存储器。最早期的 ROM 需要客户把想要写入的内容发送给厂家,厂家把写好的器件交付后,就不能再更改其中的值了。
这样很不方便:
- 没法再次修改;
- 客户不一定希望厂家知道自己想要写什么内容。
因此,后续出现了 PROM,P 是 Programmable 的意思。厂家发送一个空白芯片,由客户写入内容。不过,写入之后,还是无法再次改写了。
为了解决这个问题,出现了 EPROM,E 是 Erasable 的意思,特指用紫外线可擦除的 ROM。需要把器件拆下来,放到紫外线灯下照射十几分钟,然后再次写入。
虽然可以擦写了,但仍然不方便,因此后来出现了电可擦除的 PROM,EEPROM 或者 $E^{2}PROM$,EE 表示 Electrically Erasable,电可擦除。
电可擦除的好处是,不需要把器件拆下来,在机器上提供电信号就可以擦写了。
后来,人们又研究出来了更快速的 EEPROM。为了强调它速度快,所以叫 Flash。分成 NOR 型和 NAND 型。