page_title: Directory-based cache coherence
section_title: Full bit vector format
hierarchical_section_title: Directory-based cache coherence / Full bit vector format
caption_attribution_description: English: Diagram of full bit vector directory format
context_page_description: In computer engineering, directory-based cache coherence is a type of cache coherence mechanism, where directories are used to manage caches in place of snoopy methods due to their scalability. Snoopy bus-based methods scale poorly due to the use of broadcasting. These methods can be used to target both performance and scalability of directory systems.
context_section_description: In the full bit vector format, for each possible cache line in memory, a bit is used to track whether every individual processor has that line stored in its cache. The full bit vector format is the simplest structure to implement, but the least scalable. The SGI Origin 2000 uses a combination of full bit vector and coarse bit vector depending on the number of processors.
  Each directory entry must have 1 bit stored per processor per cache line, along with bits for tracking the state of the directory. This leads to the total size required being (number of processors)×number of cache lines, having a storage overhead ratio of (number of processors)/(cache block size×8).
  It can be observed that directory overhead scales linearly with the number of processors. While this may be fine for a small number of processors, when implemented in large systems the size requirements for the directory becomes excessive. For example, with a block size of 32 bytes and 1024 processors, the storage overhead ratio becomes 1024/(32×8) = 400%.
caption: Diagram of full bit vector directory format, where E=Exclusive, S=Shared, M=Modified, and U=Uncached
exif: {"Image ExifOffset": "26", "EXIF ColorSpace": "sRGB", "EXIF ExifImageWidth": "1024", "EXIF ExifImageLength": "768"}