[Tremor] Notes on Implementing Tremor on an ARM7TDMI CPU
timmy at home.se
Sat Dec 6 07:53:15 PST 2008
>> As a reference, I ported the Tremor library to the 66MHz ARM9 on the
>> Nintendo DS. Once I enabled the assembly language implementation, I
>> didn't have any performance issues.
>> Now, I don't know how much extra performance room I had left, but it
>> was capable of decoding, streaming from Wifi, writing a raster to the
>> display, and reading off of a flash device without me having to do
>> anything strange to get performance.
> According to WikiPedia, the Nintendo DS has the same ARM7TDMI core as
> what I am using. I just overclocked mine to very close to 66MHz and so
> far it seems to be working fine. In fact, from what I can tell, aside
> from your CPU likely reading code out of RAM rather than flash, they
> seem identical. No cache, same core, etc. So, it may be that executing
> out of RAM makes all the difference.
Note that the Nintendo DS has two processors. One ARM9 and one ARM7TDMI.
> So far this CPU seems stable @ 66MHz (w/ flash @ 33MHz). I may be able
> to push it more. I'd rather not rely on that if possible, though.
> I really think that if it's 75% real time, I can get it to be faster
> than real time, but without a better idea of which routines are the most
> critical I agree it's going to be tough. I'll try to get profiling
> working again.
Since your flash memory is single cycle for thumb, and double cycle for
ARM, I would suggest you put your ARM code in RAM and keep the thumb
code in flash. That is the typical arrangement on the Nintendo gameboy
advance which has a 16bit flash, and 32bit single cycle RAM.
The ARM assembly optimized routines should get a nice performance boost
if you move them from flash to single cycle RAM.
More information about the Tremor