第三章 存储系统

  图3.39是一个用硬件实现堆栈法的逻辑图。图中,Cache采用组相联映象及变换方式,每组的块数为4,因此,堆栈有4个存储单元,每个单元2位。堆栈用D型触发器实现,另外还要三个与门。图中,I0I1是本次访问Cache的块号,A0A1、B0B1、C0C1、D0D1是4个堆栈存储单元,它们分别存放最近访问Cache的4个块号,而且,在A0A1中存放的是最近一次访问Cache的块号,然后依次存放,在D0D1中存放的是最久没有被访问过的块号,它的输出信号D0D1中就是下次将要被替换的Cache块号,CP是一个时钟信号,当访问Cache时送来。NA、NB、NC是三个控制信号,NA是指不是A0A1的意思,即本次访问Cache的块号I0I1与A0A1不相等,NA、NB、NC的三个逻辑表达式如下:


图3.39 每组4块的堆栈法实现

  
  
  
  在这三个信号的控制下,就能够排列保存在堆栈中的Cache块号访问顺序,从上到下按照访问Cache由近至远的顺序排列。
  堆栈法的主要优点有两个。一是它的块失效率比较低,因为它采用了LRU算法。二是它的硬件实现相对比较简单,除了必须的寄存器之外,其它控制逻辑很简单。它的主要缺点是速度比较低,这是因为需要进行相联比较。因此,当每一组的块数比较大时,不宜采用堆栈法。
  堆栈与比较对法所用触发器的比例关系是:
     
  其中,是Cache每一组的块数。在比较小时,两者的差别不大,当大于8时,堆栈法所用的器件明显少于比较对法。
  综上所述,要Cache的替换算法,主要解决好以下三个问题:
  1、记录每次访问Cache的块号。可以用寄存器,也可以用计数器,或者用其它方法。总之,在实现Cache替换算法时,必须要有时序逻辑。
  2、管理好所记录的Cache块号。例如,排序、计数、清除、置位等。其目的是为找出被替换的块号提高方便。
  3、根据记录和管理的结果,采用时序逻辑判断那个块号是将要被替换出去的块号。轮换法是要找出最早访问的块号,而另外三种方法都要找出最久没有被访问过的块号。