We present a triangle ordering mechanism that maintains triangle ordering
of coherence messages in SMP systems. If cache A sends a multicast
message to caches B and C, and if cache B sends a message to cache C
after receiving and processing the multicast message from cache A, the
triangle ordering mechanism ensures that cache C processes the multicast
message from cache A before processing the message from cache B. The
triangle ordering mechanism enables efficient snoopy cache coherence in
SMP systems in which caches communicate with each other via
message-passing networks. A modified version of the triangle ordering
mechanism categorizes coherence messages into non-overlapping sequencing
classes, and ensures triangle ordering for coherence messages in the same
sequencing class. The modified triangle ordering mechanism can
significantly reduce potential performance degradation due to false
waiting.