6.1.3 存储器的层次结构
计算机系统对存储器的要求主要体现在三个方面:存储容量大、存取速度快和位价格低,但是很难找到一种存储器能同时满足这三方面的要求,通常,速度快的存储器价格也高,不宜做大;位价格低的存储器可以把容量做大,但速度慢,因此,在计算机中把各种不同容量和不同存取速度的存储器按一定的结构有机地组织在一起,形成层次化的存储器体系结构,程序和数据按照不同的层次存放在各级存储器上,整个存储系统在速度、容量、价格等方面都具有较好的综合性能指标。
图6.1是存储系统层次结构,图中由上至下出现下列情况:
①每位价格越来越低;
②容量越来越大;
③存取时间越来越长;
④CPU 存取存储器的频度越来越低。
图6.1 存储系统层次结构
因此,较大、较便宜、较慢的存储器可作为较小、较贵、较快的存储器的补充。这个结构成功的关键是最后一项,即存取频度降低。
如果能够根据以上出现情况的①~③项来组织存储器,而且数据和指令能够根据第④项分布在存储器中,很显然,这个方案在保证给定的性能水平的情况下能降低总体价格。
第④项有效的基础是访问局部性原理。程序访问的局部性原理是指:对于绝大多数程序来说,程序所访问的指令和数据在地址上不是均匀分布的,而是相对簇聚的。程序访问的局部性包含时间局部性和空间局部性两个方面:
时间局部性是指程序马上将要用到的信息很可能就是现在正在使用的信息;典型的例子是循环的反复执行。空间局部性是指程序马上将要用到的信息很可能与现在正在使用的信息在存储空间上是相邻的;这是因为大程序和大数据结构经常是按顺序存放和按顺序访问的。
因此,通过分层结构组织数据,有可能使存取较低层的存取时间百分比低于存取高层的百分比。
存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上,三级存储结构如图6.2所示。
图6.2 三级存储结构
Cache—主存层次在存储系统中主要对CPU 访问主存起加速作用,即从整体运行的效果分析,CPU 访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。
主存—辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。常用程序和数据存放在主存中,由于主存容量不足,大量的暂时不用的以及主存容纳不下的程序和数据就存放到辅存中。辅存中的信息必须通过调入主存才能被CPU 访问。
说明:在Cache—主存结构中,CPU 既可以直接访问Cache的信息,也可以直接访问主存的信息。但在主存-辅存结构中,CPU 和辅存之间没有直接通路,因此,CPU 不能直接访问辅存。