注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
wangmxe的个人空间 https://home.eeworld.com.cn/space-uid-91642.html [收藏] [复制] [分享] [RSS]
日志

进一步深入CACHE(上)(转载)

已有 1703 次阅读2010-1-2 23:31

进一步深入CACHE

 

Cache是我们经常关心的话题,K6-Ⅲ的推出引出了一种全新的缓存结构即TrilevelCache设计思想。那么对于微机系统而言,Cache到底有什么作用?它的工作原理又是如何的呢?

•使用Cache的必要性

所谓Cache即高速缓冲存储器,它位于CPU与主存即DRAMDynamicRAM动态存储器)之间,是通常由SRAMStaticRAM静态存储器)构成的规模较小但存取速度很快的存储器。目前计算机主要使用的内存为DRAM,它具有价格低、容量大等特点,但由于使用电容存储信息,存取速度难以提高,而CPU每执行一条指令都要访问一次或多次主存,DRAM的读写速度远低于CPU速度,因此为了实现速度上的匹配,只能在CPU指令周期中插入wait状态,高速CPU处于等待状态将大大降低系统的执行效率。SRAM由于其采用了与CPU相同的制作工艺,因此与DRAM相比,它的存取速度快,但体积大、功耗大,价格很高,不可能也不必要将所有的内存都采用SRAM。因此为了解决速度与成本的矛盾就产生了一种分级处理的方法,即在主存和CPU之间加装一个容量相对较小的SRAM作为高速缓冲存储器;当采用Cache后,在Cache中保存着主存中部分内容的副本(称为存储器映象),CPU在读写数据时,首先访问Cache(由于Cache的速度与CPU相当,所以CPU可以在零等待状态下完成指令的执行),只有当Cache中无CPU所需的数据时(这称之"未命中",否则称为"命中"),CPU才去访问主存。而目前大容量Cache能使CPU访问Cache命中率高达90%-98%,从而大大提高了CPU访问数据的速度,提高了系统的性能。

•使用Cache的可行性

对大量的典型程序的运行情况分析结果表明,在一个较短的时间内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。在多数情况下,指令是顺序执行的,因此指令地址的分布就是连续的,再加上循环程序段和子程序段要重复执行多次,因此对这些地址的访问就自然具有时间上集中分布的趋向。数据的这种集中倾向不如指令明显,但对数组的访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址的频繁访问,而对此范围以外的地址则访问甚少的现象称为程序访问的局部性。根据程序的局部性原理,在主存和CPU之间设置Cache,把正在执行的指令地址附近的一部分指令或数据从主存装入Cache中,供CPU在一段时间内使用,是完全可行的。

Cache的基本工作原理

传统的Socket架构下通常采用两级缓冲结构,即在CPU中集成了一级缓存(L1Cache),在主板上装二级缓存(L2Cache);而SlotⅠ架构下的L2Cache则与CPU做在同一块电路板上,以内核速度或者内核速度的一半运行,速度比Socket下的以系统外频运行的L2Cache更快,能够更大限度发挥高主频的优势,当然对Cache工艺要求也越高。CPU首先在L1Cache中查找数据,如找不到,则在L2Cache中寻找;若数据在L2Cache中,控制器在传输数据的同时,修改L1Cache;若数据既不在L1Cache中,又不在L2Cache中,Cache控制器则从主存中获取数据,将数据提供给CPU的同时修改两级CacheK6-Ⅲ则比较特殊,64KBL1Cache256KBFullCoreSpeedL2Cache,原先主板上的缓存实际上就成了L3Cache。根据有关测试表明:当512K2MB的三级缓存发挥作用时,系统性能还可以有2%~10%的提高;Trilevel成为PC系统出现以来提出的解决高速CPU与低速内存之间瓶颈最为细致复杂的方案。而且,今后Cache的发展方向也是大容量、超高速。

在主存-Cache存储体系中,所有的指令和数据都存在主存中,Cache只是存放主存中的一部分程序块和数据块的副本,只是一种以块为单位的存储方式。Cache和主存被分为块,每块由多个字节组成。由上述的程序局部性原理可知,Cache中的程序块和数据块会使CPU要访问的内容大多数情况下已经在Cache中,CPU的读写操作主要在CPUCache之间进行。CPU访问存储器时,送出访问单元的地址,由地址总线传送到Cache控制器中的主存地址寄存器MA,主存—Cache地址转换机构从MA获取地址并判断该单元内容是否已在Cache中存有副本,如果副本已存在Cache中,即命中。当命中时,立即把访问地址变换成它在Cache中的地址,然后访问Cache

如果CPU要访问的内容不在Cache中,即不命中,则CPU转去直接访问主存,并将包含此存储单元的整个数据块(包括该块数据的地址信息)传到Cache中,使得以后的若干次对内存的访问可转化为对Cache的访问。若Cache存储器已满,则需在替换控制部件的控制下,根据某种替换算法/策略,用此块信息替换掉Cache中的原来的某块信息。

所以,要想提高系统效率,必须提高Cache命中率,而Cache命中率的提高则取决于Cache的映象方式和Cache刷新算法等一系列因素;同时Cache中内容应与主存中的部分保持一致,也就是说,如果主存中的内容在调入Cache之后发生了变化,那么它在Cache中的映象也应该随即改变,反之,当CPU修改了Cache中的内容后,主存中的相应内容也应作修改。

从上面的简单介绍中,我们知道了Cache也是一类存储器,它是为了解决CPU与主存之间速度匹配问题而设置的,且不能由用户直接寻址访问。下篇将就Cache映象问题、刷新问题和保持数据一致性问题作简要论述。

 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章