A directory tag for each cache line in a memory within a multiprocessor
distributed memory system includes a share mask and an alias signature.
The share mask is used to keep track of entities of the system that share
the cache line, and is encoded into a fixed length field having a number
of bits that is significantly less than the number of the entities. The
share mask is utilized for maintaining coherency among shared data in the
system. Before a request to access a location of a memory is granted, the
share mask is used to identify each entity or a group of entities that
share the particular location, and an invalidate message is sent to each
of the identified entity or group of entities. The alias signature in the
directory tag is compared with an alias signature computed from the memory
access request to prevent data corruptions that may occur due to incorrect
memory aliasing.