关于计算机存储器中缓存的一些思考

本文探讨了缓存在计算机存储器中的必要性,包括提高CPU效率和弥补速度差异的原因。缓存的基本原理涉及到命中与未命中情况,利用程序的局部性原理提升效率。文中介绍了替换策略如LFU、LRU和随机替换,以及缓存的写操作策略,如写回法、全写法和写一次法,总结了缓存对提升计算机运行速度的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在计算机硬件当中,主要有运算器,控制器,存储器,输入输出设备几种。存储器大致有高速缓存(cache),内存,辅存这样的体系架构.而cpu在工作时,主要从内存中获取指令或数据进行操作,而缓存存在于cpu与内存之间,是一个小容量,高速的存储器。

   一。 为什么会有缓存的存在呢?原因大概有两点:

1.除了cpu之外,I/O设备同样可以申请访问内存,如果两者同时申请访问,那么I/O设备优先级高于cpu,这就会出现cpu等待的情况。这会降低cpu 的工作效率。为此可以在内存与cpu之间添加缓存,将cpu可能即将访问的信息提前送到缓存,一旦内存被I/O设备占用,cpu可以先从缓存中取数据,不必空等降低其效率。

2.随着集成电路发展,cpu运行速度越来越快,而内存的发展远远跟不上cpu,两者之间速度差异过大会影响到效率。我们很自然的想到可以在两者之间添加一个缓存,缓存速度高于内存而低于cpu,缓存提取内存数据,cpu访问缓存,这样可以提升效率。

    二。缓存基本原理

    缓存处于内存与cpu之间,不断在两者之间交换数据。cpu与缓存交换数据以字节为单位,而内存与缓存交换数据以块为单位。任何时刻都会有一些内存块存在于缓存中。当cpu欲访问内存中某字节时,会先去到缓存中寻找。这时就会有两种情况:

    1.所需要的字在缓存当中,这种情况称为缓存命中。

    2.所需要的字不在缓存中,成为缓存未命中。

    若缓存命中,则此字立刻传送给cpu。不命中时,则从内存读出送到cpu,并且把含有这个字节的整个数据块送到缓存。

    程序的局部性原理:时间局部性:被用过一次的数据地址未来可能多次用到(比如在循环语句)

                                   空间局部性:如果一个数据地址被引用,那么他附近的位置可能也会被引用(比如数组)

    针对局部性原理来看,计算机在向缓存添加数据时,总是把这个数据周围整个数据块调到缓存中,这很好的运用局部性原理,所以较大提升效率。

三。替换策略

    缓存工作时尽量要求它保存最新的数据,对此需要经常调用新的主存块到缓存当中,但是缓存容量很小,所以经常需要把旧的主存块调离缓存。这时究竟调离哪个主存块,这就涉及到了替换策略:

    1.最不经常使用(LFU)算法

           将一段时间内被访问次数最少的数据块换出。为此,每行设置一个计数器。新行建立后从0开始计数,每访问一次,则该行计数器加一。当需要替换时,对各行计数器进行比较,计数器值最小的那行换出,同时将此行计数器清零。

     2.近期最少使用(LRU)算法

            将近期内长久未被访问过的行换出。为此,每行也设置一个计数器,缓存每命中一次,命中行计数器清零,其他各行计数器加一。当需要替换时,比较各行计数器的值,将计数器值最大的行换出。这种方法保护了刚被调入的新数据行。

       3.随机替换

            这种方法完全是随机选取,但会降低缓存命中率。

四。缓存的写操作策略

    缓存的内容只是内存部分内容的拷贝,因此要与内存内容保持一致,但cpu对缓存的写入更改了缓存内容,如何与内存内容保持一致呢?这里有如下三种策略:

    1.写回法

        当缓存命中时,只修改缓存内容,而不立即写入主存。只有此行被换出时才写回主存。这样使得多次写操作都在缓存中完成,只在替换时才写会速度较慢的内存,减少了访问内存的次数。为了实现这个策略,每一个缓存行必须配备一个修改位,以反映此行是否被修改过。当某行被换出时,根据其修改位是0还是1,来决定是否将此行内容写回内存。

    2.全写法

        当对缓存进行写操作时,缓存与内存同时发生了写修改,较好的维护了缓存与内存内容一致性。当缓存未命中,只向内存写入。此策略缺点是,cpu对主存的写操作太慢,降低了效率。

    3.写一次法

        这是对写回法与全写法的综合:写命中与写未命中的处理方法与写回法相同,只是第一次写命中时要同时写入内存。

总结:缓存的引入极大提高了计算机运行速度。当然,在缓存与cpu之间,还有寄存器,这比缓存还要快,这里不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值