[net.micro.68k] 68K MMU is good for something

gottlieb@cmcl2.UUCP (Allan Gottlieb) (12/30/83)

I will not challange Spencer's arguments about the demand paging
merits of the 68K and 16K MMUs.  The Mororola MMU is, however,
the best chip for the Buddy System, a good algorithm for segment
allocation on a uniprocessor.  Moreover the NYU "Ultracomputer"
project (large scale shared memory multiprocessor) has developed
highly parallel variants of the Buddy System.

Our current prototype uses the serial Buddy algorithm (and the 68K
MMU) on a Master Slave multiprocessor UNIX (TM) system.  In a few
months we will have a highly parallel UNIX kernel (I/O will still be
serial), which will feature parallel memory management using our
parallel Buddy algorithm (and again the MMU).

One negative comment on the MMU is its translation speed.  We decided
to cache virtual rather than physical addresses primarily so that cache
hits would result in no wait states, which would have been impossible
if the cache had to wait for the mmu to leasurely translate the
addresses.  (Note we do NOT support demand paging -- virtual addr =
addr on PE bus = input to MMU; physical addr = addr in memory = output
from MMU).

Allan Gottlieb
New York University
GOTTLIEB@NYU
floyd!cmcl2!gottlieb	<-- char before 2 is el not one

guy@rlgvax.UUCP (Guy Harris) (12/31/83)

<PLEASE fix this bug, people!>

	The Mororola MMU is, however, the best chip for the Buddy
	System, a good algorithm for segment allocation on a uniprocessor.

Good, that is, *if* you have lots of physical memory and/or lots of 68451s.
If you want to allocate segments of arbitrary size (not an uncommon thing
to do on UNIX), you have to find a set of powers of 2 which add to some
number greater than or equal to the size of the segment.  If you do this
the "fast" way, by allocating segments for each 1 bit in the binary
representation of the segment size, you end up with a lot of large lumps
which *have* to sit on high-power-of-2 boundaries.  If you try more clever
schemes, it takes more CPU time to figure out the segment sizes (although
this needs only be done when the segment size is set) and it takes more
segmentation registers.

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy

henry@utzoo.UUCP (Henry Spencer) (01/01/84)

I agree with Allan Gottlieb that the Motorola chip is just right for
implementing the buddy system, but I have never understood what the
buddy system was good for.  I've never been able to envision anything
that I would use it for, given that dynamically-allocated memory areas
are seldom nice neat powers of 2.  I appreciate the potential for
parallelism, but accelerating a turkey to the speed of light has never
struck me as a useful approach.  Maybe it's just that it's late and
I'm a little tired; is there something I've been missing all these years?
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry