我通过在不同场景下运行coremark基准测试来测量ARM cortex R5f处理器的性能。一种方案是在ATCM内存上设置STACK。
在没有inline
标志的情况下,TCM上的STACK可以获得更好的编译效果。当使用inline
标志编译时,RAM上的STACK可以获得更好的结果。
考虑到TCM更快,更接近处理器,这怎么可能解释呢?
在TCM上设置堆栈时,我的程序中没有堆栈溢出
既然TCM更快,更接近处理器,这怎么解释呢?
您的TCM比L1数据缓存快吗?并非总是如此(许多设计有单周期L1 - D缓存,但有两个周期访问TCM)。
TCM通常的目的不是性能(尽管它很好),而是可预测性——在TCM中你不会得到缓存丢失,因此实时系统使用它来计时关键代码和数据段。