1.2.1 存储的金字塔结构
计算机的运行,是一场声势浩荡的数据迁徙。“比特们”以字节(byte)为一组,以成千(KiB)上兆(MiB)之流,汇吉(GiB)太(TiB)之汪洋。它们随着周期性的电压起伏,排着队从某个存储器中“泵出”,经过主板上“阡陌纵横”的电路,注入另一个存储器。
计算机运行时,操作系统从外存“苏醒”,“进驻”内存开始工作,它“指挥”着CPU从外存获取需要的数据,“途经”内存,有时也“路过”缓存(Cache),抵达寄存器进行处理,并让结果沿原路返回至外存,如图1.16所示。
图1.16 数据的“旅程”
CPU中的缓存常被称为高速缓存,不同于容量只有一个内存“抽屉”的寄存器,它能容下许多“抽屉”的内容。有了缓存,CPU可以成片成片地从内存中读写数据,由于在存储空间上,下一条要处理的数据往往与上一条是紧挨着的,这种做法可以大大加快CPU与内存之间数据交换速度。
数据的“旅程”之所以这么“坎坷”,原因在于CPU的速度太快,唯一能跟上它的寄存器又价格高昂、容量小,而成本更低的存储器可以提供更大的容量,但它们的速度又一个比一个慢。这是权衡速度、成本和容量的结果。
由此,计算机中的存储体系出现了森严的等级制度,内存和它的上下级们形成了如图1.17所示的金字塔结构。越靠近塔顶的存储器读写速度越快,相应的,制造成本也越高;越靠近塔底的存储器读写速度越慢,但容量也越大。最底层的存储器包括用于海量数据备份的磁带,以及方便移动的U盘、移动硬盘、光盘等,它们的共同特征是长期脱离计算机,仅在需要时接入计算机,因而被人们称为离线存储器。
图1.17 存储的金字塔结构
如果把数据比作食材,CPU中控制器和运算器就是“大厨”,寄存器是“锅”,缓存是摆在灶台上的“餐盘”,内存是搁在水池边的“篮子”,外存是家里的“冰箱”,离线存储器就是“菜市场”。
目前,在这一金字塔中,内存及以上的存储器为速度牺牲了自持数据的能力,数据只临时存在于它们身上,一旦断电就“灰飞烟灭”,因而又被称为易失性存储器;而内存以下的存储器是非易失的,保持数据不依赖于外部供电。