The Impact of Operating System Structure on Memory System Performance (Chen and 
Bershad, 1993)

On the surface, this paper could be summed up in two sentences:  1) 
Microkernels just are not are hip as they are cracked up to be and 2) Almost all of 
those assumptions we have had about memory performance over the years are, in fact, 
true.  Proving, or at least providing good evidence about commonly believed 
assumptions is very useful -- and even more so is showing that some of them are 
insignificant, which is what the authors do.  But I find their comparison of Mach and 
Ultrix spurious.  Ultrix is designed and tuned for the hardware on which the 
experiment is run; in fact, it runs on very few other systems.  Mach, on the other 
hand, is highly portable, and, because it is a microkernel, can run a huge array of 
other programs well, not just Unix.  In our reading group, we agreed that we would 
have been very surprised if Mach had beaten Ultrix on its home ground.  The 
comparison does confirm, however, that as we approach the specialized axis on our 
graph of OS generality, that performance does improve.  We found the tests 
themselves and the assuptions they supported interesting, especially the idea 
that system code has poorer localization that user code, resulting in more cache 
misses.  Their main benchmark, MCPI (memory cycles per instruction) seemed an 
appropriate benchmark over the usual CPI (cycles per instruction).  Relatedly, 
their methods for accounting memory and temporal distortion by simulating the 
cache and slowing down the clock appear reasonable.  That they ran their tests in 
single user mode probably benefitted Mach, because in mulit-user mode, Ultrix 
could have found a use for all of the idle instructions it had compared with Mach.