改善数据加载和存储的优化措施通常对应用的性能至关重要。对 Keystone 3 器件上有用的存储器优化的详细检查不在本文档讨论的范围之内。但是,下述列出了用于提高存储器系统吞吐量和减少存储器层次结构延迟的最常见的优化措施。
- 分块:输入、输出和临时数组/对象通常太大,无法放入多核共享存储器控制器 (MSMC) 或 L2 存储器中。例如,在对整个 1000x1000 像素的图像上执行算法时,图像太大了以至于无法放入到大部分或所有配置的 L2 存储器中,而且算法可能会冲击缓存,导致性能低下。使数据尽可能靠近 CPU 可以提高存储器系统的性能,但是当图像太大而无法放入 L2 缓存时,我们该如何做到这一点呢?根据算法的不同,使用一种称为“分块”的技术可能很有用,其中算法修改为在给定时间只对一部分数据进行操作。一旦处理完该数据“块”,算法会移到下一块。此技术通常与此列表中的其他技术搭配使用。
- 直接存储器访问 (DMA):考虑使用器件的异步 DMA 功能将新数据移动到 MSMC 存储器或 L2 存储器中,并使用 DMA 将处理过的数据移出。这样,C7000 CPU 就可以自由地执行计算,同时 DMA 为下一帧、块或层准备数据。
- 乒乓缓冲器:考虑使用乒乓存储缓冲器,以使 C7000 CPU 在处理一个缓冲器中的数据时,正在向/从另一个缓冲器进行 DNA 传输。当 C7000 CPU 处理完第一个缓冲器时,算法切换到第二个缓冲器,如此因 DMA 传输而有了新数据。考虑将这些缓冲器放在 MSMC 或 L2 存储器中,这比 DDR 存储器快得多。