The PowerPC 603 omits a feature that other PowerPC’s currently have. The 603 uses “MEI” cache protocol whereas the other PowerPC’s use “MESI”. I have consulted the 603 manual for this information. The 603e data sheets list the differences between the 603 and 603e and does not mention cache protocol. I think that the 603e also uses MEI.

The “S” in “MESI” refers to the shared state of a cache line in the on chip cache. The following rules govern when the system memory bus has been wired as the PowerPC architects intended.

Two caches on the same bus may hold the same line (data from the same physical RAM address) if they hold the same value and that value is also held in the shared RAM. In this case both cache lines are in the state “S”. This is the state that the 603 does not allow.

State “S” arises when one CPU fetches the data for a line and signals other CPUs on the bus (thru snooping) what line is being fetched. If another CPU already holds the line (in state E) then that other CPU changes its line state to S and the new CPU loads the cache line with the same data and sets the cache line state to S.

In the same situation the 603, when informed that another CPU is loading the data, empties its own cache line (puts it in state I for invalid). The result is that two 603’s on the same bus cannot hold the same line in their respective caches at the same time.

Data that is shared by the two CPUs causes much extra bus traffic on the 603. Another limitation of the 603 is that snooping “distracts” the passive CPU in the follow way: When the first CPU must go to memory (cache miss) it signals the other CPUs in order to maintain cache coherency. The other CPUs must consider the signal. On the 603 this consideration prevents the local cache from serving its CPU for one cycle.

It is possible to wire a 603’s into an MP configuration so that snooping is disabled. In this case the operating system must prevent certain combinations of mapping table entries between the CPUs. This strategy is good for some applications but not others.

I do not know what the BeOS does in this situation.