[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 65816 abort line on the AppleIIgs
Michael J. Mahon wrote:
Roy replied:
<Large snip here>
This is the way that all modern data page-fault handling works.
Some older machines, because of their instruction semantics,
needed to pre-check data presence before starting execution of
an instruction, because changes were made to memory prior to
a possible data page fault--for example, a page-crossing move
that could not be re-started in the middle of the move.
This is a bit over my head, so if I'm off, don't hesitate to correct me,
but, it seems to me that what you are saying is that, via a virtual
memory scheme, a IIgs could have much more than 16 megs of RAM
installed, switching banks in and out of the memory space, not too
dissimiliar to the old LIM EMS scheme on PCs. Have I got that right?
Virtual memory is more than bank-switched physical memory.
I did realize that.
The usual implementation of virtual memory is to allow a processor
with a large virtual address space to operate with significantly less
physical memory, with the non-resident "memory" located on disk.
Both Macs and Windoze machines do that, of course.
This is most useful when there are multiple processes running, so
that another active process can be running while a page fault for the
faulting task is being serviced. In this implementation, the purpose
of virtual memory is to permit a large address space to be simulated
by a smaller physical memory. It can only work if the "active"
pages of the program are substantially less than the "total" pages
in its address space, so that the "working set" will fit into the
available physical memory.
A virtual memory scheme can also support more total memory
space than the processor can simultaneously address. In such
an approach, the processor's effective addresses are extended by,
for example, a process id, which is then mapped into the physical
memory through page tables. This is a "segmented" virtual
memory, since the high order virtual address bits do not participate
in the processor's effective address calculations.
In both schemes, it is common to associate interprocess access
permissions with the page table, allowing "protected" multi-
programming and controlled interprocess communication.
It sounds like you are thinking more of the second scheme,
Exactly.
to
permit more real memory to be used than the processor can
directly address. In this scheme, the physical memory may be
much greater than the processor's address space (16MB), and
paging to disk may be a non-issue.
The LIM EMS specs 3.2 and 4.0 did this, allowing (under 3.2) an 8086 to
address 8 megs of RAM (4.0 was more, but I can't remember how much more
- it also allowed multitasking with the programs and data in the EMS
space.) Both specs used a 64K bank in the upper one third of the 8086
address space as the "window" to the EMS space, allowing a program to
move data into and out of the EMS space (the "L" was Lotus, as some 123
spreadsheets were so large they couldn't fit into the 640K of a PC's
user's space, and, since "A-DOS" wasn't around yet, Lotus' customers
needed a way to have the future then), as well as moving not just data
but program code: overlays, and sometimes whole programs into and out of
the DOS space (task switching - WordPerfect's "Library" [later named
"Office" before any "Suites" were ever sold] would move WP's WP,
spreadsheet, database, and accessory programs like calculator and
calendar in and out with their data in a task switching mode.)
Unfortunately, no individual program could see more memory
space than what the processor can currently address, since
all existing applications operate within the processor's address
space limits. To use more address space than this would
require application changes, akin to explicit bank switching,
since the processors effective address calculations extend
only to its native address space. The primary value of applying
this approach to the IIgs would be to permit it to multiprogram
multiple applications.
Although this would be interesting, the relatively low performance
of the IIgs processor generally requires dedicating it to a single
task at a time,
Which is why a task switching scheme would make more sense than a
multitasking one. Of course, currently, how many IIgs programs can one
fit into the 8 megs of memory space? If I had the entire Spectrum
Internet Suite loaded, could I also have AppleWorks GS fit in memory at
the same time? Can anyone conceive of loading all the programs they
might really want to be using, and have 8 megs not be enough RAM?
and there are no popular multiprogramming
environments for the IIgs (GNO is pretty much a niche OS).
A virtual memory system involves some pretty specialized
hardware support (the address translation hardware),
That's why EMS cards weren't cheap. If done on the IIgs, I would imagine
that the "window" would need to be loaded in the 8 meg ROM space.
plus an
OS which handles the setup of that hardware and the page
and protection faults which it detects.
For the PC, the EMS drivers took care of that. I would think that such
would also be the case with GS/OS. But it certainly wouldn't be a
trivial programming job.
It seems unlikely that
anyone would invest the design and implementation time to
create these for the IIgs at this point.
I think that's a realistic assessment. I was just asking "in theory."
Thanks Michael.
Roy
-michael
Check out 8-bit Apple sound that will amaze you on my
Home page: http://members.aol.com/MJMahon/
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
-----== Over 80,000 Newsgroups - 16 Different Servers! =-----