本文主要是介绍计算机多级存储模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在研究CPU相关内容的时候,可以潜在地把存储当做一个简单的顺序存储器(类似一个大数组),CPU可以在常数时间里访问存储器的数据。但是实际上存储系统并不是这么简单的模型。
存储器结构
实际的存储器模型可以形象的表示为金字塔结构(图片来自深入理解计算机系统,很好的书,值得一读)。每个上一层存储作为下一层存储的缓存,主要原因是不可能使用速度很快但是造价很高的寄存器存储所有数据,但是磁盘存储的存取速度又远远不能跟上CPU的计算速度。多级存储存在的意义就是为了解决速度和造价之间的矛盾。
由存储器结构导致的问题
每个上层存储都作为下层存储的缓存,而缓存的主要特点是只能存储少部分拷贝数据。将必要的数据写入到缓存,最终一层一层运输到CPU中投入计算,是这个多级存储模型的最终目的。怎样调度数据写入写出缓存,以多大数据单元调度数据,是这个模型面临的主要问题。
问题解决示例
基本各级缓存都需要解决上述关键的问题:1. 如何分块;2. 如何调度。解决这两个问题的具体策略就构成了此级缓存的特征。由于内存调度策略更多是由软件实现(操作系统),属于下个操作系统层次的内容,不在这里过多论述。下面简要介绍一下高速缓存实现策略。
存储器结构金字塔中所示的高速缓存L1和L2是静态随机存储器(SRAM)。静态随机存储器是由电路实现的双稳态存储单元,可以保持在不同的电压状态之一,即使存在外界干扰,也会恢复到稳定状态。
结构:
比如一个计算机系统的存储器地址有m位,则这个系统所能寻址的空间大小为2m(注意这里不一定对应物理内存大小)。将这个系统的高速缓存的大小分成S组(S等于2s),则标识S组中的其中一个组的地址需要的s位。每个组有可以分成E行。每行中存在t位的标志位,可以在每组的范围内唯一标识该行;一个有效位标识可以标识该行该行数据是否有效;一个大小为2b字节的数据片存储有效数据。
这个系统中寻址一个字节需要的地址大小为m位。对应在高速缓存中,其中有s位定位一个组,t位定位一个组中的某一行,还有b位定位某一行中缓存块的某一个字节,t=m-(s+b)。这就是高速缓存解决如何分块的方案。
高速缓存的调度相对比较简单。以直接映射高速缓存为例,当CPU需要取一个数据做运算时,可以先通过这个数据的地址s位确定这个数据处于高速缓存的那个组,再通过地址的t位匹配确定该数据是否位于这个组的某一行。如果匹配则可以根据偏移地址b确定数据位置返回给CPU;如果不匹配则为不命中,需要从下级存储器中读取这个数据,同时从该存储器中清除一行,存储读取的数据,并将数据返回给CPU。
本文总要介绍了目前计算机系统普遍应用的多级缓存的概念和多级缓存的特征(分块和调度),并举例介绍了高速缓存是如何解决分块和调度的问题。其实内存管理也包含在这个体系中,但是由于内部机制大部分由软件(操作系统)实现,是属于操作系统层次的要点,这里没有作介绍。
本系列文章:
计算机底层架构(偏硬件)综述
计算机处理器(CPU)基础
汇编语言基础–机器级数据存储
汇编语言基础–汇编操作指令概述
计算机多级存储模型
外设IO原理
这篇关于计算机多级存储模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!