请教各路大神:
C6416的程序由于空间问题,需要将部分代码放置片外SDRAM运行,可运行结果跟预想的差距比较大。后来通过一个测试程序查看片外SDRAM运行速度,发现同一段代码,在片内RAM运行时间竟然是片外SDRAM的1/44......片内运行速度竟然是片外的44倍(通过示波器测量),片外SDRAM时钟是100MHz,主时钟是600MHz,,,这个片外SDRAM运行代码的速度正常吗??如果不正常,是驱动原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
请教各路大神:
C6416的程序由于空间问题,需要将部分代码放置片外SDRAM运行,可运行结果跟预想的差距比较大。后来通过一个测试程序查看片外SDRAM运行速度,发现同一段代码,在片内RAM运行时间竟然是片外SDRAM的1/44......片内运行速度竟然是片外的44倍(通过示波器测量),片外SDRAM时钟是100MHz,主时钟是600MHz,,,这个片外SDRAM运行代码的速度正常吗??如果不正常,是驱动原因?
#1. 片外内存运行速度慢是正常的。
#2. 所以DSP采用二级缓存,目的是就是为了提高片外程序的运行速度。
#3. 你的情况,需要将片上L1P,L1D配置成Cache,C6416片上L2也是很大的确1Mbyte,可以配置一部分为Cache,至于L2配置多少为Cache,多少为RAM,这个没有定论,通常至少为2倍L1以上吧,当然是Cache越大越好,但是当L2部分为RAM时,可以将经常调用的函数,以及数据段如.bss,.stack等放在片上,以减少Cache miss的更新Cache的时间开销,也对速度提高有帮助。
#4. 在#3的基础上,一定要记得将SDRAM的空间配置为可Cache,即配置相应的MARn寄存器。每个MAR寄存器对应16Mbyte空间。