home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sys.amiga.misc
- Path: sparky!uunet!spool.mu.edu!darwin.sura.net!Sirius.dfn.de!tubsibr!duening
- From: duening@ibr.cs.tu-bs.de (Lars Duening)
- Subject: Re: 68010
- Message-ID: <1992Sep12.112215.10980@ibr.cs.tu-bs.de>
- Sender: postnntp@ibr.cs.tu-bs.de (nntp inews entry)
- Reply-To: duening@ibr.cs.tu-bs.de (Lars Duening)
- Organization: TU Braunschweig, Informatik (Bueltenweg), Germany
- References: <1992Sep6.180145.17394@cs.mun.ca> <starman.039m@crash.amigans.gen.nz> <4444@equinox.unr.edu> <1992Sep11.193814.58831@cc.usu.edu>
- Date: Sat, 12 Sep 1992 11:22:15 GMT
- Lines: 73
-
- In <1992Sep11.193814.58831@cc.usu.edu> slb1b@cc.usu.edu (Holographic Banana)
- writes:
-
- > In article <4444@equinox.unr.edu>, dollens@equinox.unr.edu (C Blake Dollens) writes:
- >> Someone on a local BBS suggested to me recently that a 68010 processor
- >> supports virtual memory. My immediate response was no, because you
- >> need a PMMU for that purpose. On the other hand, I realize that I
- >> know very little about the '010
-
- > I was about to say NO when I pulled off Motorolla's Programmer's Reference
- > Manual. Page 1-8 (in part, I'm not typing the whole thing!)
-
- > "...The MC68010/MC68012 provides hardware support for virtual memory with the
- > capability of suspending an instruction's execution when a bus error is
- > signaled and then completing the instruction after the physical
- > memory has been updated as necessary.
-
- That's the important point: the 680x0 redo the failed access when
- returning from bus error exception. The good ol' 68000 just threw it
- away, thus aborting the whole program.
-
- > "The MC68010/MC68012 uses instruction continueation rather than instruction
- > restart to support virtual memory.... when a page fault occurs the processor
- > stores its internal state and then after the page fault is repaired, restores
- > that internal state and continues execution of the instruction. In order for
- > the MC68010/MC68012 to utilize instruction continuation, it stores
- > its internal state on the supervisor stack when a bus cycle is
- > terminated with a bus error signal. It then loads the program
- > counter from vector table entry number tow (offset $008) and resumes
- > program execution at the new address. When the bus error execption
- > hander routine has completed execution, and RTE instruction is
- > executed which reloads the MC68010/MC68012 with the internal state stored on
- > the stack, re-runs the faulted bus cycle, and continues the
- > suspended instruction....."
-
- > This seems like a messy way to do it with MMUs available on the '020
- > and better.
-
- It's not messy at all - it's a must for utilizing a MMU. Hidden
- between the lines is that the bus error handler, a.k.a. swapper,
- determines the memory page of the failed access and loads it into
- memory (either by swapping it in from disk, or allocating it from
- scratch). The swapper then remaps the MMU to let the virtual address
- which caused the page fault point to the physical address space of the
- loaded page, and exits then. The instruction in question will now be
- continued, and since the memory accessed does now exist (at least
- virtually), the program will happily go on.
-
- Another way to do would be that the bus error handler modifies the
- data dumped on the stack to allow continuation - but that's heavy and
- very evil magic.
-
- > But an interesting intelectual exercize. Am I wrong in thinking that
- > the entire 16Mb address area is mapped on the A500? If so, it would
- > render the aforementioned capability useless.
-
- Yes and no: with an additional MMU it's possible to 'unmap' the
- address area.
-
- > In a nutshell, VM is not available on the '010 in any practical sense.
-
- Again yes and no: you need a MMU for real VM, and I am afraid that the
- available PMMU can't be used with the 68010. You have to built one
- yourself if you need it.
-
- > ...
- > This is got to be one of the most controversial subject: '010 replacement vs.
- > leaving the bloody case on the A500 :-)
-
- Add a 68010 and fast memory to your A500/A2000. If a program then runs from
- hard disk without errors, chances are that it'll run on every amiga.
-
- -- Lars
-