title: Why Bit-PLRU is different from LRU
body: <p>Following is description  about bit-plru</p>
  
  <blockquote>
    <p>Bit-PLRU stores one status bit for each cache line. We call these bits MRU-
     bits. Every access to a line sets its MRU-bit to 1, indicating that the line  was recently used. Whenever the last remaining 0 bit of a set's status bits  is set to 1, all other bits are reset to 0. At cache misses, the line with  lowest index whose MRU-bit is 0 is replaced.</p>
  </blockquote>
  
  <p>I think both replace policy of lru and bit-plru are same, their miss rate are also same. </p>
  
  <p>My reason:  <code>At cache misses, the line with  lowest index whose MRU-bit is 0 is replaced.</code></p>
  
  <p>Line with lowest index means least recently used, so its mru-bit is definitely zero(it couldn't be 1 because it isn't recently used). So, mru-bit is redundant? </p>
  
  <p>If my reason is wrong, could anyone give me some reason or example show me where is different between bit-plru and lru? Why bit-plru gave better performance(miss rate)?</p>
  
  <p>Thanks!</p>