Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ARM968E-S using ITCM for data, DTCM for code?

357 views
Skip to first unread message

Nils

unread,
Feb 5, 2012, 3:07:02 PM2/5/12
to
Hi.

I'm writing code for an embedded ARM968e-s.

The system has no external RAM. The core is entirely working on the
built-in 8kb ITCM and 4kb DTCM.

Memory is tight, and I am short on DTCM. Out of curiosity I tried to put
my stack into the DTCM, and the code still works fine :-)


Now I wonder: Is there any negative side-effects of placing read/write
data into the memory region that is supposed to be used for code, or can
I mix and match the two memories for code and data?


Thanks,
Nils

Nils

unread,
Feb 5, 2012, 3:08:15 PM2/5/12
to
Correction:

On 02/05/2012 09:07 PM, Nils wrote:
> Memory is tight, and I am short on DTCM. Out of curiosity I tried to put
> my stack into the DTCM, and the code still works fine :-)

Of course I put the stack into the ITCM, otherwise the question would
make no sense :-)

Nils

Marcus Harnisch

unread,
Feb 5, 2012, 5:12:27 PM2/5/12
to
Data access to ITCM must always be possible, since otherwise literal
pools wouldn't work. However, the system performance could be negatively
affected, since both I-side and D-side will share a single
interface. I'd rather avoid using ITCM for holding data that is as
frequently accessed as the program stack.

Kindly,
Marcus

--
note that "property" can also be used as syntactic sugar to reference
a property, breaking the clean design of verilog; [...]

(seen on http://www.veripool.com/verilog-mode_news.html)

Nils

unread,
Feb 5, 2012, 8:04:41 PM2/5/12
to
On 02/05/2012 11:12 PM, Marcus Harnisch wrote:

> Data access to ITCM must always be possible, since otherwise literal
> pools wouldn't work. However, the system performance could be negatively
> affected, since both I-side and D-side will share a single
> interface. I'd rather avoid using ITCM for holding data that is as
> frequently accessed as the program stack.

Hi Marcus,

Thanks for your answer. Your explanation makes perfect sense. I think
the ITCM and DTCM have different data-ports to the RAM, and using one
for code and data will lead to collisions.


I did a little experiment with a 31 band audio-equalizer code (a nice
blend between arithmetic and memory accesses). When I move all the data
into the ITCM the overall performance drops by 20%.

My conclusion from these experiments are: Placing data into the ITCM is
okay, but better be done with data that is accessed infrequently.

Cheers,
Nils
0 new messages