The apple Lisa uses a plain 68000 and *does* squeeze blood out of the stone.
Memory is segmented and code is demand loaded. The trick is that *some*
instructions are restartable. There is much magic and kludges involved.
____________________________Computare necesse est!____________________________
Johan Strandberg
Apple Computer Education Research Group [ERG]
{mtxinu,dual,nsc,voder}!apple!johan
Pat Clancy
{ucbvax,decvax,ihnp4,allegra,uw-beaver,hplabs}!tektronix!tekecs!patcl
A very early UNIX implementation on a 68000 by ACE in the Netherlands
did the same. Essentially, the compiler generated such a restartable
instruction at the beginning of each C procedure which tried to reach to
maximum needed stack address. The memory fault this could cause was handled
by the kernel, and the program restarted.
I guess the Bourne shell caused them the most problems.
--
Guido van Rossum, "Stamp Out BASIC" Committee, CWI, Amsterdam
guido @ mcvax
We make (to, in my opinion, our sorrow) a 68K-based UNIX box which uses the
68451, in a DIP the same size as the 68000 chip itself.
> By the way, the types of memory management provided by the 68010
> and the 68451 are DIFFERENT, the 68010 is for VIRTUAL memory
> implementations, (and by itself is used in the Sun processor, with
> custom memory management hardware), and the 68451 performs MEMORY
> RELOCATION only.
Not true - you can combine a 68010 and a 68451 and make virtual memory. It
could be "demand segment loading" (which is virtual memory - ask any
Burroughs mainframe programmer), or you can even do demand paging (by using
the 68451 as a sort of translation lookaside buffer, with fixed-size small
(~2KB, say) "segments".
> The one thing you do need to do is always use a 68010 in ANY scheme
> that does dynamic memory management, (to wit, most UNIX implementations), as
> the 68000 has unrecoverable faults when a bus-error occurrs.
Also not true - Masscomp uses two 68000s. The main 68K halts on a page fault,
and the other 68K services the page fault and restarts the main 68K. Doing it
with one 68000 isn't possible (to my knowledge - maybe somebody out there
*has* squeezed blood from a stone).
Guy Harris
{seismo,ihnp4,allegra}!rlgvax!guy