A cache access mechanism/system for reducing contention in a multi-sectored cache
via serialization of overlapping write accesses to different blocks of a cache
line to enable accurate cache directory updates. When a first queue issues a write
access request for a first block of a cache line, the first queue concurrently
asserts a last_in_line signal identifying the first queue as the last sequential
queue to request access to that cache line. If there is an active write access
requests for the cache line, the first queue undertakes a series of operations
to enable sequentially correct updates to the cache directory with all previous
updates taken into consideration. Included in these operations are tracking the
completion of the write access and the corresponding write to the associated cache
directory and copying the cache directory state to be updated from the parent queue
(rather than from the cache directory) so that the parent queue's update of the
directory state is included (and not overwritten) when the first queue writes to
the directory. The correct cache directory state is then stored within the associated
cache directory.