取决于你的代码/数据对访问延迟的容忍;
L1/L2 cache/SRAM从内存模型的本质上来说,仍然是RAM,只是对软件是否透明和是否可直接(有效)访问,同时遵循"距离corepac越近的速度越快/延迟越小的规律(寄存器>L1>L2>L3>EMIF)":
在无高实事性要求的系统中,一般将L2全部配置为cache来加速外部DDR/SDRAM的访问,此使用类似与PC x86处理器,L1/L2对软件透明;
在部分算法/控制逻辑有强实事性要求的系统中,将相应的代码/数据放置于L2的部分或全部并将其配置为RAM模式;
在严苛的性能要求的场景,将L1部分或全部配置为SRAM放至高速数据/代码.
需要注意的是:
L2一般默认为SRAM模式,L1一般默认为cache模式;
L1使用SRAM模式需要先配置后使用,而且L1D和L1P仅能做对应用途的数据/代码存放.
一个比较好的实事系统的内存使用例子是:
L1的部分配置为SDRAM模式,将栈/ISR/中断向量表/严苛要求的少量数据/代码放至其中;
L2保持默认的SRAM模式放置高性能算法/缓存数据;
DDR放置外部数据,使用EDMA与L2 SRAM的缓存做背景传输/同步.
配置的接口使用Shine提供的接口,如果是使用sys/bios,可以直接在platform里指定即可.
更详细的资料,可以看SOC corepac手册资料及cache手册,
取决于你的代码/数据对访问延迟的容忍;
L1/L2 cache/SRAM从内存模型的本质上来说,仍然是RAM,只是对软件是否透明和是否可直接(有效)访问,同时遵循"距离corepac越近的速度越快/延迟越小的规律(寄存器>L1>L2>L3>EMIF)":
在无高实事性要求的系统中,一般将L2全部配置为cache来加速外部DDR/SDRAM的访问,此使用类似与PC x86处理器,L1/L2对软件透明;
在部分算法/控制逻辑有强实事性要求的系统中,将相应的代码/数据放置于L2的部分或全部并将其配置为RAM模式;
在严苛的性能要求的场景,将L1部分或全部配置为SRAM放至高速数据/代码.
需要注意的是:
L2一般默认为SRAM模式,L1一般默认为cache模式;
L1使用SRAM模式需要先配置后使用,而且L1D和L1P仅能做对应用途的数据/代码存放.
一个比较好的实事系统的内存使用例子是:
L1的部分配置为SDRAM模式,将栈/ISR/中断向量表/严苛要求的少量数据/代码放至其中;
L2保持默认的SRAM模式放置高性能算法/缓存数据;
DDR放置外部数据,使用EDMA与L2 SRAM的缓存做背景传输/同步.
配置的接口使用Shine提供的接口,如果是使用sys/bios,可以直接在platform里指定即可.
更详细的资料,可以看SOC corepac手册资料及cache手册,
举报