重复数据删除技术:面向大数据管理的缩减技术
上QQ阅读APP看书,第一时间看更新

2.3.1 存储器分层结构

目前,计算机系统均采用分层结构的存储子系统,以便在容量大小、速度快慢、价格高低诸因素中取得平衡点,获得较好的性能价格比。计算机系统的存储器可以分为寄存器、高速缓存、主存储器、外存储器、本地二级存储及远程二级存储6个层次。如图2-9所示,在存储器层次结构中越往上存储介质体积越小、访问速度越快、单位容量价格也越贵,越往下则设备体积越大、访问速度越慢、单位容量价格越便宜。随着各层级存储设备性能的降低,距离CPU的距离也越来越远。寄存器和L1级高速缓存处于CPU芯片内,而L2级高速缓存处于CPU芯片外,跟主存储器(内存DRAM)一样和CPU在同一主板上。而外存储器则是作为外部设备通过连接线挂接在主板的接口上。本地二级存储往往为离线或近线管理,需要时才加载存储设备。远程二级存储处于通过网络连接的远程数据中心服务器和存储设备上。寄存器、高速缓存和主存储器均属于操作系统存储管理的管辖范畴,断电后它们存储的信息不再存在。外存储器和本地二级存储属于设备管理的管辖范畴,远程二级存储属于网络服务管辖范围,它们存储的信息都将被长期保存。

图2-9 存储器分层结构

在存储器层次结构中,每一层都作为其下一层的缓存。比如说,当我们想要从L1高速缓存中读取数据的时候,先检查寄存器中有没有我们需要的数据,如果有,直接从寄存器中读取,如果没有,再从L1高速缓存中读取。当我们想要从磁盘中读取数据的时候,先检查内存中有没有我们需要的数据,如果有,直接从内存中读取;如果没有,再从硬盘中读取。存储器层次结构的优点在于,作为一个整体,它的容量相当于最底层的存储设备的容量,而它的速度却相当于最顶层存储设备的速度。也就是说,它可以在速度和容量这两个看似矛盾的方面同时达到极限,达到如此神奇效果是本质原因是程序具有局部性。

理解局部性对程序开发人员有极大的帮助。一个编写良好的计算机程序常常具有良好的局部性(Locality),它们倾向于引用其他最近引用过的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理(Principle of Locality),是一个持久的概念,对硬件和软件系统的设计和性能都有着极大的影响。局部性通常有两种不同的形式:时间局部性(Temporal Locality)和空间局部性(Spatial Locality)。在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用。而在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。一般来讲,有良好局部性的程序比局部性差的程序运行得更快。