Chuck Guzis wrote:
On 17 Jan 2007 at 11:22, Don North wrote:
Lisa (and Macintosh) used the original 68000
which was not capable of
recovering from an arbitrary access (page) fault in the middle of an
instruction (the updated 68010 fixed this, but Apple never used it).
The 68000 did lot leave enough info on the fault stack to indicate
which memory access within an instruction faulted, and which registers
might have been auto-incremented/decremented.
Exactly why I said that calling the Lisa architecture "virtual
memory" is misleading at best. One could not write a loop to move 2
megabytes using a simple MOVEM/SUBQ/BNE loop as if all of the memory
were seamlessly continuous and present.
The Lisa memory architecture was
demand-segmented, not demand-paged.
It was virtual in the sense that one could pull segments off the disk
on demand, but the mechanism to do this was to use a specific instruction
that was know to be 'well behaved' when it faulted.
A few years earlier Apollo Computer came out with their first system
that employed a 68000 that implemented a full demand paged virtual
memory system. The trick they used was to have two separate 68000
processors, one for the user and the other to service page faults.
When it was determined that the user processor would fault, that
68000 was frozen mid-access, then the system 68000 would service the
fault, fix memory up, and then let the user 68000 continue. Actually
kind of an innovative approach at the time.
I remember going to a tech talk when Apollo came out of 'stealth mode'.
It was in the Wang Computer building in Lowell, MA (next to Chelmsford)
in the company cafeteria. The room was jammed to overflowing with DEC,
DG, Wang, etc engineers all wanting to see and hear how they did it.
I remember trying to make a list of 68K instructions that could be
restarted, wondering if it might be possible to construct a useful
subset. One of the gotchas was that the bus error handling in the
68K gave you a P-counter that was only guaranteed to be "in the
vicinity" of the failing instruction. I gave up after awhile.