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