对于通用计算机而言,存储层次分为四层:CPU暂存器。高速快取、主存和辅存。对于CPU 暂存器,CPU 可以再一个时钟周期内访问它们。接下来是一个或者多个小型到中型的基于 SRAM 的高速快取存储器,可以再几个 CPU 时钟周期内访问它们。然后是一个大的基于 DRAM 的主存,可以在几十或者几百个时钟周期内访问它们。接下来是慢速但是容量很大的本地磁碟。存储器层次结构的核心是,对于每个 k,位于 k 层的更快更小的存储设备作为位于 k+1 层的更大更慢的存储设备的快取。也就是说,层次结构中的每一层都快取来自较低一层的数据对象。例如,本地磁碟作为通过网路从远程磁碟取出档案的快取,以此类推知道 CPU 暂存器。
在图1中,存储层次由上到下呈现出以下特点:每位的价格越来越低,速度越来越慢,容量越来越大,CPU 访问的频度也越来越少。最上层的暂存器通常都製作在 CPU 晶片内,暂存器中的数直接在 CPU 内部参与运算。现代 CPU 内可以有十几个、几十个暂存器,它们的速度最快、位价(平均每位的价格)最高、容量最小。主存用来存放将要参与运行的程式和数据,但其速度与 CPU 速度差距较大,为了使它们之间的速度更匹配,在主存与 CPU 之间插入了一种比主存速度更快、容量更小的高速缓冲存储器 (cache)。主存与快取之间的数据调动是由硬体自动完成的,对程式设计师来说是透明的。这三层都在主机内,多由各种半导体存储材料製成。辅助存储器存储容量比主存储器大得多,主要用来存放暂时未用到的程式和数据档案。CPU 不能直接访问辅存,辅存只能与主存交换信息,但它的位价是最便宜的。存储器的层次结构实质上还是体现为快取—主存和主存—辅存这两个存储层次上。从CPU 的角度看,快取—主存层次的速度接近于快取,容量与每位价格则接近于主存。因此,解决了速度与成本之间的矛盾。而主存—辅存这一层次,从整体分析,其速度接近于主存,容量接近于辅存,平均位价也接近于低速、廉价的辅存位价,这又解决了速度、容量、成本这三者间的矛盾。这种多层次结构已成为现代计算机的典型存储结构。在主存—辅存这一层次的发展中,形成了虚拟存储系统。在这个系统中,程式设计师编程的地址範围与虚拟存储器的地址空间相对应。例如,机器指令地址码为 32 位,则虚拟存储器的存储单元可达 4GB。可是这个数与主存的实际存储单元个数相比,要大得多。通常称这类指令地址码为虚地址或叫逻辑地址,而把主存的实际地址称作实地址或物理地址。物理地址是程式在执行过程中能够真正访问的地址,也是真实存在于主存的存储地址。对具有虚拟存储器的计算机系统而言,编程时可用的地址空间远远大于主存空间,使程式设计师以为自己占有一个容量极大的主存,其实这个主存并不存在,这就是将其称为虚拟存储器的原因。对虚拟存储器而言,其逻辑地址变换为物理地址的工作,是由计算机系统的硬体设备和作业系统自动完成的,对应用程式员是透明的。当虚地址的内容在主存储器中时,机器便可立即使用;若虚地址的内容不在主存,则必须先将此虚地址的内容在辅存中找到,传递到主存储器的合适单元后再被机器所用。主存储器是可以和 CPU 直接交换信息的存储器,它通常由存放程式和数据的随机读写存储器 RAM 和存放某些固定内容的唯读存储器 ROM组成。存储器层次化结构图