[hatari-devel] DSP add AGU pipeline for parallel moves

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Hi,

First, I'm pleased to see that tuxfamily.org is back.
I've taken some days to try to figure out why underscore demo was always bugging at the same point.
The main explanation was the lack of pipeline emulation in the AGU.

For example :
    move #<10,r0
    move #<15,r0
    move x:(r0),a

   The register "a" should equal 10 and not 15, due to a 1 instruction delay.
   This happens for parallel moves instructions.

I've implemented this behavior for all Rx, Nx and Mx registers.
I've done a lot of non regression tests with many demos, programs, musik players, ... and didn't noticed any regression.


I've seen this pipeline restriction in some demos with mod player sound embedded, with EKO System, and probably some other demos.
The only one I know that suffered this was underscore demo.

_ demo now renders the arrow correctly, with the blue lightened metallic texture and runs more frames before crashing. The crash doesn't always occur at the same point : sometimes it crashs before or later.

The max I can now run is until this frame :




I've implemented the pipe for LUA, Parallel moves, MOVEC, TCC, MOVEP MOVE instructions.
The motorola DSP docs also include MOVEM, but I've done many tests and it doesn't seem to suffer the pipeline restriction.


This improvement in AGU emulation allows to feed the registers R, N or M just in time (also if this is not recommanded by Motorola ;)

Regards
Laurent
   

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/