Badwolf wrote: 24 Jul 2022 20:55
So the IRQ is when you decide the transfer is finished and start probing for the endpoint and then trigger the copy?
Yep, vector $11C. The operating system does everything by polling so that interrupt is normally unallocated.
It has to identify and filter out false triggers from non-DMA devices wired to the DMA interrupt pin (Ie; most IDE adapters) but otherwise it's pretty straightforward.
I did a special version of Frontbench for someone (sorry, I forget who) that did all screen writes to TT-RAM and only blitted the end result to ST-RAM.
It turned out to be slower on the Falcon, but on the ST where writes are sub-4MB/s the overhead may be worth it? I wonder if I can find it.
Oooh, that would be interesting to test on the ST.
I suppose it would avoid hitting ST-RAM for the read part of read-modify-write, at the expense of potentially doing more writes (if Frontier cleverly updates only changed parts, and that end-blit always does the entire screen.. I don't know how Frontier works internally :) )
It'll probably end up slower on my setup with L2 and already very fast reads, but maybe worth is when there is none?
Now if that end-blit only wrote changed data to ST-RAM... that extra code overhead may be worth it to avoid slow writes :)
Ahh.. if only we had an opposite of the CAS instruction!
Idea: a CPLD-enabled simple-blit function. Not a full blitter implementation, but a hardware memcpy that could dump a block of TT-RAM to ST-RAM. Start address, end address, target address, status reg. Without the instruction overhead, would that be worth it?
I'm really just guessing now but I'm not convinced it would be worth the effort?
Unless maybe if it could also ignore blitting unchanged data (or perform c2p as
@Cyprian suggested). But even so, it would only be useful to new software programmed to take advantage of it?
Wonder if it would be worth it to try and make the L2 cache more clever and only write-through to ST-RAM on changed data?
I suppose that would make necessary writes even slightly slower but unnecessary ones would be very fast indeed.
Maybe that's a dumb idea and it would make it overall slower.. and I don't think my skills are up to par for something like that either :)