Sunday, 12 February 2012

Cache


  • Small amount of fast memory

  • Sits between normal main memory and CPU

  • May be located on CPU chip or module



Cache operation



  • CPU requests contents of memory location

  • Check cache for this data

  • If present, get from cache (fast)

  • If not present, read required block from main memory to cache

  • Then deliver from cache to CPU

  • Cache includes tags to identify which block of main memory is in each cache slot


Cache Design



  • Size

  • Mapping Function

  • Replacement Algorithm

  • Write Policy

  • Block Size

  • Number of Caches


Typical Cache Organization



Mapping Function



  • Cache of 64kByte

  • Cache block of 4 bytes


—   i.e. cache is 16k (214) lines of 4 bytes




  • 16MBytes main memory

  • 24 bit address


—   (224=16M)



Direct Mapping



  • Each block of main memory maps to only one cache line


—   i.e. if a block is in cache, it must be in one specific place




  • Address is in two parts

  • Least Significant w bits identify unique word

  • Most Significant s bits specify one memory block

  • The MSBs are split into a cache line field r and a tag of s-r (most significant)

  •   Address length = (s + w) bits

  • Number of addressable units = 2s+w words or bytes

  • Block size = line size = 2w words or bytes

  • Number of blocks in main memory = 2s+ w/2w = 2s

  • Number of lines in cache = m = 2r

  • Size of tag = (s – r) bits


Associative Mapping



  • A main memory block can load into any line of cache

  • Memory address is interpreted as tag and word

  • Tag uniquely identifies block of memory

  • Every line’s tag is examined for a match

  • Cache searching gets expensive

  • Address length = (s + w) bits

  • Number of addressable units = 2s+w words or bytes

  • Block size = line size = 2w words or bytes

  • Number of blocks in main memory = 2s+ w/2w = 2s

  • Number of lines in cache = undetermined

  • Size of tag = s bits


Set Associative Mapping



  • Cache is divided into a number of sets

  • Each set contains a number of lines

  • A given block maps to any line in a given set


—   e.g. Block B can be in any line of set i




  • e.g. 2 lines per set


—   2 way associative mapping


—   A given block can be in one of 2 lines in only one set




  • Address length = (s + w) bits

  • Number of addressable units = 2s+w words or bytes

  • Block size = line size = 2w words or bytes

  • Number of blocks in main memory = 2d

  • Number of lines in set = k

  • Number of sets = v = 2d

  • Number of lines in cache = kv = k * 2d

  • Size of tag = (s – d) bits

No comments:

Post a Comment