yuval@taux01.UUCP (Gideon Yuval) (01/21/88)
The XCHG op-code of the 386 has three properties, which seem to guarantee deadlocks (or worse) if it is used in a snoopy-cache multi-CPU system: (1) it is locked. (2) it is available to unprivileged user code. (3) it can be misaligned (and can thus straddle cache-line boundaries). To see why this is dodgy, consider a case where cache lines 0 and 2 are owned by CPU #0, cache lin 1 is owned by CPU #1, and now CPU #1 tries to XCHG on the line1-line2 boundary, just after CPU #0 starts an XCHG that straddles the boundary between line 0 & line 1. How does Sequent fix this problem in their multi-386 (Symmetry) systems? Gideon Yuval, +972-52-522255 (work), -2-690992 (home), yuval@taux01.nsc.com -- Gideon Yuval, +972-52-522255 (work), -2-690992 (home), yuval@taux01.nsc.com