This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Speed of Code Execution from Flash lower than expexted

Hello,
I am using the STR912 for a small project. I noticed that the execution speed of my program is not as fast as expected.
For testing purpose I execute a number of NOPs. When I put the code in internal RAM the code is executed with 0 WS at full speed (96MHz CPU-Clock).
The same code executed from Flash show the same result.

My "real" code consist of 48 Opcodes and 3 Jumps to a nonlinear address. This code is executed from Flash at appr. 1/2 speed compared the execution from RAM.

Is there something that can cause this behaviour, or can this be a normal behavior?

Parents
  • Does your ARM have any flash memory accelerator feature that you need to turn on.

    I don't know about the STR912, but flash memory is slower than RAM memory, and unless the chip has some form of cache logic or supports two-bank accesses your chip will normally retrieve a number of bytes (probably 8-16) at a time from the flash, and then process them before locking up while waiting for a new read of 8-16 bytes. Thumbs mode will in this case run faster (as long as the instructions are suitable) since they are half-the-size so each flash read will allow twice as many instructions before next flash read.

    If you don't have any flash acceleration logic in your chip, I would recommend that you run the critical loops in RAM and the rest in flash.

Reply
  • Does your ARM have any flash memory accelerator feature that you need to turn on.

    I don't know about the STR912, but flash memory is slower than RAM memory, and unless the chip has some form of cache logic or supports two-bank accesses your chip will normally retrieve a number of bytes (probably 8-16) at a time from the flash, and then process them before locking up while waiting for a new read of 8-16 bytes. Thumbs mode will in this case run faster (as long as the instructions are suitable) since they are half-the-size so each flash read will allow twice as many instructions before next flash read.

    If you don't have any flash acceleration logic in your chip, I would recommend that you run the critical loops in RAM and the rest in flash.

Children
No data