条件d)有效的基础是访问的局部性原理[DENN68]。在执行程序期间,处理器的指令访存呈现“簇”状(一组数据集合)。典型的程序包含许多迭代循环和子程序,一旦程序进入一个循环或子程序执行,就会重复访问一个小范围的指令集合。同理,对表和数组的操作也涉及存取“一簇”数据。经过很长的一段时间,程序访问的“簇”会改变,但在较短的时间内,处理器主要访问存储器中固定的“簇”。
因此,可以通过层次组织数据,使得随着组织层次的递减,对各层次的访问比例也依次递减。此原理可以应用于多级存储器组织结构中。最快、最小和最贵的存储器类型由位于处理器内部的寄存器组成。在典型情况下,一个处理器包含多个寄存器,某些处理器包含上百个寄存器。向下跳过两级存储器层次就到了内存层次,内存是计算机中主要的内部存储器系统。内存中的每个单元位置都有一个唯一的地址对应,而且大多数机器指令会访问一个或多个内存地址。内存通常是高速的、容量较小的高速缓存的扩展。高速缓存对处理器不可见,它应用于在内存和处理器之间分段移动数据,以提高数据访问的性能。
外部的、非易失性的存储器称为二级存储器或辅助存储器,它们用于存储程序和数据文件,其表现形式是程序员可以看到文件和记录,而不是单个的字节或字。
在软件中还可以有效的增加额外的存储层次。这种技术,有时称为磁盘高速缓存,可以通过两种方法提高性能:
-
磁盘成簇写。即采用次数少、数据量大的传输方式,而不是次数多、数据量小的传输方式。选择整批数据一次传输可以提高磁盘的性能,同时减少对处理器的影响。
-
一些注定要“写入”的数据也许会在下一次存储到磁盘之前被程序访问到。在此情况下,数据能够迅速地从软件设置的磁盘高速缓存中取出,而不是从缓慢的磁盘