三种Cache写入方式原理简介

Author: 晓宁 Date: 1995-09-01

        具有Cache的计算机,当CPU进行存储器存取时,首先检查所需内容是否在Cache中,如在,则直接存取其中的数据而不必插入任何等待状态,这种情况叫高速命中。当CPU所需信息不在Cache中时,则需存取主存储器,插入等待,这种情况称高速未命中。在CPU存取主存储器的同时,将存储信息同时写入到Cache中以保证下次高速命中。因此,同一数据可能同时存储在主存储器和Cache中。
        提高高速命中率的最好方法是尽量是使Cache存放CPU最近一直在使用的指令与数据,当Cache装满后,可将长期不用的数据删除,提高Cache的使用效率。为保持Cache中数据与主存储器中数据的一致性,同时,避免CPU在读写过程中,将Cache中的新数据遗失,造成错误的读数据,确保Cache中更新过的数据不会因覆盖而消失。必须将Cache中的数据更新及时准确地反映到主存储器中,这通常采用直写式、缓冲直写式与回写式三种方法来处理。
        1.直写式系统
        直写式系统的工作原理,是CPU对Cache写入的同时,将数据写入到主存储器中,这样可保证Cache中的内容与主存储器的内容完全一致。这种方式简单、可靠,但由于每次对Cache更新时都要对主存储器进行写操作,因此总线工作频繁,且运行速度会受到影响。
        2.缓冲直写式系统
        为解决直写式系统的速度问题,在主存储器的数据写入时增加缓冲器,当要写入主存储器的数被缓冲器锁存后,CPU便可执行下一个周期的操作,不必等待数据写入主存储器。例如:在写入周期之后紧接着是一个数据已存在于Cache中的读取周期,则CPU读取Cache的操作可与将数据写回主存储器的操作同步进行,这样可避免直写式系统造成的操作延时。但缓冲器只能存储一次写入的数据,当连续两次写操作发生时,CPU仍需等待。
        3.回写式系统
        前两种写入系统,都是在写Cache的同时,写主存储器。这不仅浪费时间,而且有时是不必要的,回写式系统通过在Cache中每一项的标志字段中加入一更新位,解决主存储器不必要的写操作。若Cache中的数据曾被CPU更新过但未同时更新主存储器,则该更新位置1,每次CPU将一新内容写入Cache时,首先检查Cache中该项的更新位,若更新位为0,则将新数据直接写入Cache。反之,若更新位为1,则先将Cache中的该项内容写入到主存储器中相应的位置,再将新数据回写到Cache中。
        与直写式系统相比,回写式系统可省下一些不必要的立即回写操作,一个更新过的Cache数据,若未被新的数据所取代,则没有必要立刻进行主存储器的写操作。也就是说,实际写入主存储器的次数,可能少于CPU实际所执行的写入周期的次数,但回写式系统的结构较复杂。
        (晓宁)