d1 有 32 KiB SRAM,用来运行 SPL 启动 ddr,但 SPL 结束之后这块空间就没用了,因此后面的程序可以回来用这块空间来加速。
比如说 SBI 可以把自己的栈放在这里,操作系统可以把根页表放在这里。d1 的指令缓存、数据缓存和这个 SRAM 都是一样的 32KiB SRAM,所以这就是确定的、可编程的缓存,应该可以实现极大的加速。
另一个设想:对于实时性要求高的系统,可能某些很少访问的但实时性要求更高的异常处理代码,由于访问必然缓存不命中,会引入不可忽视的延迟。如果配合 Vectored mtvec 把这些异常情况的外部中断放在 SRAM,就能保证即使很低频访问的东西,偶然访问到也能快如闪电。似乎有一些这样的优化手段,提前强行访问某个地址来训练缓存,一个可控的 SRAM 可以简化这件事。