cache被称为高速缓冲存储器,是介于中央处理器和主存储器之间的高速小容量存储器,通常由高速SRAM组成;这种局部存储器是针对CPU的,它是为了减少或消除CPU和内存之间的速度差异对系统性能的影响。cache容量小但速度快,内存速度低但容量大,通过优化调度算法,系统性能将大大提高。
什么是存储器?
Cache存储器:计算机为高速缓冲存储器,位于CPU和主存储器DRAM(Dynamic Random Access Memory)之间,规模较小但速度较高的存储器通常由SRAM制成(Static Random Access 由Memory静态存储器组成。
如图3.28所示,cache是介于CPU和主存M2之间的小容量存储器,但存取速度比主存快,容量远小于主存。cache 它可以高速向注册会计师提供指令和数据,从而加快程序的执行速度。从功能上看,它是由高速SRAM组成的主存储缓冲存储器。为了追求高速,包括管理在内的所有功能都是通过硬件实现的,因此对程序员是透明的。
目前,随着半导体器件集成度的提高,可以提高小容量 cacheCPU 集成到同一芯片中,其工作速度接近CPU的速度,从而形成两级以上的Cache系统。
cache的功能
Cache的功能是提高CPU数据输入输出的速度。Cache容量小但速度快,内存速度低但容量大。通过优化调度算法,系统的性能将大大提高,仿佛其存储系统的容量与内存相当,访问速度与Cache相似。
CPU的速度远高于内存。当CPU直接从内存中访问数据时,需要等待一定的时间周期,而Cache可以保存CPU刚刚使用或回收的部分数据。如果CPU需要再次使用这部分数据,可以直接从Cache中调用,避免重复访问数据,减少CPU的等待时间,从而提高系统的效率。Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),L1Cache主要集成在CPU内部,而L2Cache集成在主板或CPU上。
cache的基本原理
除了SRAM,cache还有控制逻辑。如果cache在CPU芯片之外,它的控制逻辑通常与主存控制逻辑合成,称为主存/chace控制器;如果cache在CPU中,CPU将提供其控制逻辑。
CPU与cache之间的数据交换以字为单位,而cache与主存之间的数据交换以块为单位。一块由几个字组成,是定长的。当CPU读取内存中的一个字时,将此字的内存地址发送到Cache和主存。此时,cache控制逻辑根据地址判断该字目前是否在cache中:如果是,cache命中,该字立即传输给CPU;如果没有,cache将缺失(未命中),并将主存读周期中的单词从主存读出并发送到CPU。同时,将包含该单词的整个数据块从主存读出并发送到cache。
图3.29显示了cache的原理图。假设cache读出时间为50ns,主存读出时间为250ns。存储系统是模块化的,主存中每个8K模块与16字容量的cache相连。cache分为四行,每行四个字(W)。将分配给cache的地址存储在相连的存储器CAM中,它是根据内容寻址的存储器。当CPU执行访存指令时,将要访问的字的地址发送到CAM;如果W不在cache中,则将W从主存传输到CPU。同时,将包含W的四个字组成的一行数据发送到cache,取代原来cache中的一行数据。在这里,由始终管理cache使用情况的硬件逻辑电路实现替换算法。
cache的命中率
从CPU的角度来看,增加Cache的目的是使主存储的平均读取时间尽可能接近Cache的读取时间。为了实现这一目标,Cache满足CPU需求的部分在所有存储器访问中应占很高的比例,即Cache的命中率应接近1。由于程序访问的局部性,有可能实现这一目标。
在程序执行过程中,设置NC表示cache完成访问的总次数,Nₘ表示主存完成访问的总次数,h定义为命中率,h有h=Nc/(Nc+Nₘ)
若tc表示命中时的cache访问时间,tₘ表示未命中时的主存访问时间,1-h表示未命中率(缺失率),则cache/主存系统的平均访问时间tₐ为
tₐ=htc (1−h)tₘ
我们追求的目标是以较小的硬件成本使cache/主存系统的平均访问时间tₐ越接近 TC越好。设置 r=tₘ/tc表示主存与cache的访问时间之比,e表示访问效率,则有
e=tc/ta=tc/(htc (1−h)tm)=1/(h (1−h)r)=1/(r (1−r)h)
由此可见,为了提高访问效率,命中率h越接近1越好。r值为5~10,不宜过大。
命中率h与程序行为、cache容量、组织方式、块大小有关。
cache结构设计必须解决的问题
从cache的基本工作原理可以看出, cache的设计需要遵循两个原则:一是希望cache的命中率尽可能高,实际上接近1;二是希望Cache对CPU是透明的,也就是说,不管是否有Cache, CPU访问存储的方法是一样的,软件可以访问cache,无需添加任何指令。从CPU访存的角度来看,内存将具有主存的容量和接近cache的速度。为此,必须增加一定的硬件电路来完成控制功能,即cache控制器。
在设计cache结构时,必须解决几个问题:①如何存储主存储内容进入cache?②访问存储时如何找到cache中的信息?③当cache空间不足时,如何更换cache中现有的内容?④如何在操作中改写cache的内容?
其中,前两个问题是相互关联的,即如何在cache中定位主存信息,如何将主存地址转换为cache地址。与主存容量相比, cache的容量很小,它保存的内容只是主存内容的一个子集,而cache与主存的数据交换是以块为单位的。为了将主存块放入cache中,必须采用某种方法将主存地址定位到cache中,称为地址映射。“映射”一词的物理含义是确定位置的对应关系,并用硬件来实现。这样,当CPU访问存储器时,它给出的一个字的内存地址就会自动转换为cache地址,即cache地址转换。
cache替换的主要问题是选择和执行替换算法,以便在cache不命中时替换cache中的内容。最后一个问题涉及cache的写作操作策略,重点是在更新时保持主存储和cache之间的一致性。
更多相关知识,请访问常见问题栏目!
以上是cache是什么存储器?详情请关注AdminJS的其他相关文章!