[Coco] VCC and my code tinkering.
Walter Zambotti
zambotti at iinet.net.au
Tue Jul 25 02:35:38 EDT 2017
For anyone interested.
I have just finished integrating Windows Address Windowing Extensions with
VCC.
Window AWE allows the user to control which pages of physical memory are
mapped into virtual memory.
Or in other words it is a memory paging management device similar to the
CoCo MMU unit.
My goal was to determine if using hardware memory management would speed up
the VCC emulator (which
currently only uses software) for Windows users only.
The bottom line is I got it going but it slows down the emulator by about
50%. (So half the speed)
The primary reason is because the CoCo MMU allows the same page of memory to
be mapped into different memory banks multiple times
simultaneously and AWE does not allow this.
I managed to overcome this limitation in AWE by allowing memory access
violations to occur and used exception traps to remap the banks
in real time to where they were needed.
This is fine if accesses to multiply mapped pages are scarce. But as I
found out they can occur on every single instruction (millions of times per
second).
This results in page trashing.
The second problem related to the first is because AWE does not allow the
same page to be mapped multiple times the CPU will have one
map of memory (64K) but at the same time the GPU in the GIME needs to access
the same pages in its own memory map. This results in
pages being swapped everytime the GIME and the CPU wants to share memory
(and they do all the time).
The only positive thing was I gained a better understanding of how the CoCo
hardware works and how VCC emulates it!
More information about the Coco
mailing list