Friday, June 19, 2015

Dual CPU systems and their problems

While it took only a few weeks to get the first WarpOS programs going, some nasty problems reared their head which couldn't be solved immediately. As this project was intended to get me more active again with my Amiga and also to dust off my 68K assembly knowledge and finally get into PPC assembly it took me a while to know what was going on.

From the start, a second WarpOS program started after booting the system could and often would crash the PPC. It took a few weeks to understand that cache coherency was the problem and even more weeks to solve the problem. We can now run different WarpOS programs parallel and after each other.

As it stands now, the core is nearing completion. Of course, mostly the simple approaches were taken for speed regarding development, like a very simple scheduler. These things can be upgraded after we have a working library. Development speed isn't that high anyway with an average of 1 hour a day of me having time for it.

So what is there still to do... The communication from the 68K to the PPC is working but not really robust (read: it is hacked together). That is first on the list to do. After that, we need to finish up the remaining functions of the library except for the MMU functions. Next is the MMU address translation. At the moment, it is not in-line with WarpOS as the sonnet.library uses BATs instead of TBL. Then we finish up the MMU functions.

Then begins the more fun task of improving WarpOS compatibility so we can run the PPC MP3 decorder of AmigaAMP, the dnetc client and the WarpDT datatypes to name a few.

Here a screenshot of running WarpRace on the PPC and the 68K. Note that a recent update slashed the context switch from Call68K from 20ms to 13ms.

And here a teaser about a project I am looking into at the moment. Hint: PrPMC. Not sure it will ever come of the ground, though:

No comments:

Post a Comment