十九、内存&存储介质
之前我们已经讲过内存,内存在断电之后存储的内容就会消失,所以内存叫**“易失性”存储器**(volatile memory)。存储器(Storage)和内存不同,写入存储器的数据——例如硬盘——数据会一尺存储着,断电也不会丢失,除非其被覆盖或者被删除。存储器是“非易失性 ”的,以前是易失性的存储速度快、非易失性的存储速度慢,现在这二者之间的差距逐渐缩小。
最早的存储介质是打孔纸卡 以及打孔纸带,纸卡不耗电且便宜耐用,但是读取慢而且只能写入一次(write-once)——因为打的孔无法轻易不上。
对于存储临时值,纸卡不好用。建造ENIAC中,J.Presper Eckert提出了延迟线存储器(delay line memory),原理如下:用一个管子装满水银,一端放扬声器、一端放麦克风,扬声器发出脉冲时会产生压力波,压力波需要时间传播到另一端的麦克风,麦克风将压力波转换会电信号,因此我们可以用压力波的延迟来存储数据。假如有压力波代表1,没有代表0,扬声器输出10100111,压力波沿管子传播,过了一会儿撞上麦克风,将信号再装换为10100111。如果再加一个电路,连接麦克风和扬声器,再加一个放大器(Amplifier)弥补信号衰弱,就能做一个存储数据的循环。信号沿电线传播是瞬时的,我们只能看到1bit数据,但是管子中可以存储多个位,由于延迟我们看到每一位信息的传播。Eckert在后面的计算机EDVAC中使用了延迟线存储器,使用了128条盐池县,每条能存储352bits,这使得EDVAC成为最早的存储程序计算机(stored-program computer)之一。
“延迟线存储器”的一大缺点是每一个时刻只能读一位(bit)数据,如果你想访问一个特定的bit,只能等待它在循环中出现,所以它又叫“顺序存储器(sequential memory)”或者“循环存储器(cyclic-access memory)”。但是我们想要的是“随机存取存储器(random access memory)”,可以随时访问任何位置。增加内存密度也是一个挑战,因为压力波如果变得更紧密,那么就会更容易混在一起,所以出现了其他类型的“延迟线存储器”,叫做“磁致伸缩延迟存储器(,agnetostrictive delay lines)”。这个存储器用金属线的震动代表数据,把线卷成线圈,一平方英尺的面积大致可以存储1000bits。然而延迟线存储器在1950s就基本过时了。新技术的性能、可靠性和成本都更加好。
磁芯存储器(magnetic core memory)使用了小型磁圈。如果给磁芯绕上电线并通电,可以将磁芯磁化在一个方向;如果关掉电流,磁芯保持磁化。如果我们再次通电并沿相反方向施加电流,磁化的方向(极性)会翻转。按照这种机制,磁芯就可以存储1和0了!我们可以把磁芯排列成网络,有电线负责选择行列,也有电线贯穿每个磁芯用于读写一位(bit)。磁芯内存的第一次大规模运用是1953年MIT的Whirlwind1计算机。磁芯排列是32*32,用了16块磁芯板,能存储大约16000bits。不像“延迟线存储器”,磁芯存储器能随时访问任何一位(bit)。磁芯存储器从1950s中期开始成为主流并流行了20多年。


1951年Eckert和Mauchly创立了自己的公司,设计了一台叫UNIVAC的新电脑,它推出了一种新存储:磁带(magnetic tape)。磁带是一长条卷在轴上的长条磁性带子,可以在“磁带驱动器”内前后移动。驱动器里面有一个“写头”绕了电线,电流通过产生磁场,导致磁带的一小部分被磁化,电流方向决定了极性,代表1和0。除此之外还有一个“读头”,可以非破坏性地检测极性。

UNIVAC用了半英寸宽,8条并行的磁带,磁带每英寸可以存储128位数据,每卷有1200英尺长,意味着一共可以存1500万位左右。虽然磁带驱动器很贵,但磁带又便宜又小,因此磁带至今仍用于存档。磁带的缺点是访问速度,磁带是连续的,必须倒带或快进到特定位置,可能需要几百英尺才能得到某个字节(byte),这很慢。1950,60s有一个类似的技术叫“磁鼓存储器(Magnetic Drum Memory)”。有金属圆筒,盖满了磁性材料以记录数据,滚筒会持续旋转,周围有数十个读写头。等滚筒转到正确的位置,读写头会读或写1位(bit)数据。为了尽可能缩短读写过程中的延迟,鼓轮每分钟可以达到上千转。

磁鼓导致了磁盘(hard disk drive)的发展,硬盘和磁鼓很相似:磁鼓使用的是圆柱体,而磁盘使用的是盘。磁盘表面有磁性,允许写入头和读取头,可以处理上面的1和0。硬盘的好处是薄,可以堆叠在一起,从而提供更多表面积来存储数据。IBM创造了世界上第一台磁盘计算机——RAMAC305,它有50张24英寸直径的磁盘,总共能存5MB左右。要访问某个特定bit,一个读/写磁头会向上或向下移动并找到正确的磁盘,然后磁头会滑进去。就像磁鼓存储器一样,磁盘也会高速旋转,所以读写头要等到需要开始读取的部分转到读写头的位置。RAMAC305访问任意数据平均只需要六分之一秒左右,这个时间也叫做寻道时间(seek time)。

内存在计算机中的布局可以采用内存层次结构(memory hierarchy)。一部分高速且昂贵的内存,搭配上一部分稍慢且便宜的内存,再搭配上更慢更便宜的内存。这种混合可以在成本和速度之间取得平衡。

硬盘还有一个亲戚叫软盘 (floppy disk)。除了磁盘是软的,其他部分都是一致的。软盘是为了编写而在1970-1990期间非常流行。密度更高的软盘如zip disks在90年代中期流行起来。光学存储器于1972年出现,形式是12英寸的“激光盘”,后来发展为光盘(compact disk,CD)以及90年代流行的DVD 。其功能和硬盘软盘一样,都是存数据,但用的不是磁性,而是光学性质:光盘表面有很多小坑,造成光的不同反射,光学传感器会捕获到并解码为1和0。如今存储技术在朝固态(solid state)前进,没有机械活动部件(如硬盘和u盘),固态硬盘内部为纯粹的集成电路(IC)。第一个RAM集成电路出现于1972年,成本1美分/比特,磁芯存储器因此迅速过时。成本下降更多,机械硬盘也被固态硬盘逐渐替代,简称SSD(solid state drives)。SSD没有移动部件,因此没有磁头等待磁盘转动的读写延迟的问题,访问时间低于1/1000秒,但这个速度依旧比RAM慢得多,因此现代计算机仍然使用前面提及的存储层次结构。
以下是本集的总结:

