A packetized I / O link such as the
HyperTransport protocol is adapted to transport memory coherency transactions over the link to support cache coherency in
distributed shared memory systems. The I / O link protocol is adapted to include additional virtual channels that can carry command packets for coherency transactions over the link in a format that is acceptable to the I / O protocol. The coherency transactions support cache coherency between
processing nodes interconnected by the link. Each
processing node may include
processing resources that themselves share memory, such as symmetrical multiprocessor configuration. In this case, coherency will have to be maintained both at the intranode level as well as the internode level. A remote line
directory is maintained by each processing node so that it can track the state and location of all of the lines from its local memory that have been provided to other remote nodes. A node controller initiates transactions over the link in response to local transactions initiated within itself, and initiates transactions over the link based on local transactions initiated within itself. Flow control is provided for each of the coherency virtual channels either by
software through credits or through a buffer free command packet that is sent to a source node by a target node indicating the availability of
virtual channel buffering for that channel.