On 3/18/02 at 9:14 AM Tony Firshman wrote:

>> a) 'Regular' memory is generally quite substantially faster
>> than screen memory

> Wasn't it 30%?

I forgot to answer this one - actually, it's closer to 50% when compared to
true no-wait-state RAM on a standard QL.

Things quickly get worse once any sort of 'accelerator' is fitted. For GC
and SGC memory shadowing is used so only writes are generated into the
screen RAM ($20000-$2FFFF if both screens are enabled). since the CPU is so
much faster, the slow screen RAM appears that much slower - the efficiency
is 12.5% for regular RAM writes for GC, and about 4% on SGC - reads proceed
at full 100% in both cases. Based on the logic definitions for the GF, it
is a bit more difficult to calculate because of extra tricks used, but for
successive writes, the efficiency is 1% AT MOST running the QL end of
things faster than standard - it is less than 0.5% on average.

All of this is simultaneously better and worse for Aurora. Aurora video RAM
accesses are nearly zero wait, so there is no speed penalty compared to
_standard_QL_ - this means write efficiency for GC and SGC when accessing
SCR0 and SCR1 addresses, is doubled. In theory, the increase could be
fivefold if the GC/SGC were aware of there being an Aurora, and not
thinking they are still running connected to a QL motherboard with a ZX8301
ULA on it. And that's the problem. When the extended resolutions/modes are
used with SGC, it is not aware that the Aurora uses it's IO expansion area
as screen memory. Because of this, the SGC does not use any memory
shadowing for the extended screen memory and it performs reads from it as
well as writes. As a consequence, operations with extended resolutions on
Aurora are actually slower when a lot of reading is required from the
screen memory, such as scroll/pan. While the write efficiency is increased
from 4% to 8%, read efficiency is reduced from 100% for the shadowed SCR0
and SCR1 addresses, to 8%. This penalty would dissapear for the case of the
drivers performing all their operations into the save areas. The screen
sweep task is write only to the screen so there would be no more read
penalty (write penalty unfortunately must remain)

Low efficiency both for read and write would be completely unacceptable
with GF, so it implements a few extra tricks, and a flexible shadowing
mechanism. It also uses the full Aurora bandwidth (about 2.5x compared to
an Aurora/SGC combo). Nevertheless, write efficiency still remains at 5% at
most - the 68060 is just so fast!

>> b) The address of the screen memory can really be anywhere,
>> only the 'sweeper' task needs to know where.

>How does the second screen concept fit into all this?

Not directly, but it could. It would enable updates to be performed into
the screen that is currently not visible, once done, the screens would be
'flipped' - this would prevent flicker or frame shear, but with a task
devoted to screen updates, there are other mechanisms that can be used for
the same effect.

The independance of the actual screen address from the drivers is a great
plus for any expansion of hardware or even adding extra features to
emulators. The reason is simple - the original two screens are already at
the bottom of usable memory and cannot expand without moving system
variables up, which has already been proven to be a problem. Because of
this, any new hardware has to be located in some kind of IO area above the
highest usable RAM addresses. As RAM increases, these tend to move. For
instance, on a regular QL, that's the top 256k out of the 1M address space
($C0000 and up). On SGC, there is 4M of RAM which means what used to be the
IO area is now RAM, and the IO area is now the top 256k of the 5th
megabyte, $4C0000 to $4FFFFF - signifficant because with an Aurora, this is
used as the screen area. The same thing occurs on the Q40/60, but this time
the screen has a dedicated area at very high addresses. On the GF even the
original SCR0/1 and the ROM slot are moved up to very high addresses, which
however depend on what shadowing and caching option is chosen for screen
RAM. The move signifficantly simplifies logic and it alowes selectable
caching, shadowing and serialization (nothing to do with serial ports!)
options in the first place.

With the new concept of screen drivers, the screen address changes in ONE
place only, as do all the other parameters that would otherwise have to be
changed in the drivers, and sometimes even in the applications.

NAsta

Reply via email to