Dirty Optimization Secrets (C for Playdate)
14 hours ago
- Playdate CPU 很快,但内存访问较慢;优化寄存器操作,避免频繁的内存加载。
- 指令缓存很小(Rev A 为 4KB,Rev B 为 16KB);使用 -Os 并压缩核心代码以适应,将罕见操作放在别处。
- 使用自定义链接脚本和节属性来连续放置核心代码并控制对齐,以提高缓存效率。
- 使用 nm 检查符号,以查看代码大小和地址,确保缓存适应和对齐。
- DTCM(紧耦合内存)更快;使用栈分配数据或自定义低栈池用于频繁访问的变量。
- ITCM 允许将代码复制到 TCM 以更快执行;使用特殊宏和链接符号,但需谨慎处理 Thumb 位和调用。
- 性能可能因缓存未对齐和分支预测表冲突而随机变化;将代码对齐到 32 字节并使用 ALIGN(1024) 技巧。
- 预取可能有助于间接访问,但结果不确定;使用高精度计时器测量。