35.Cache:Scratch Pad

网友投稿 2018-08-25 13:37

对于一些流处理单元(音视频编解码等),需要的数据比较集中且连续。如果让这些数据进入到Cache中,它们会把CPU需要的数据冲刷掉。而且,在较老的程序中,这些音视频流数据不太会被CPU使用到。最早的SOC芯片中,数据流从采集接口(AD等)直接进入编解码单元,编码完成后通过交叉互联总线直接送到Memory或者SD卡中存储。后来,音视频数据占用的带宽变大,并且对实时性的要求更高、处理的复杂性也变高。加大输入Buffer已经不能解决问题了。于是有了Scratch Pad。

Scratch Pad比较简单,直接通过DMA读取一大段连续数据进入一整段存储空间内,全部处理完之后再通过DMA送回Memory中。Scratch Pad可能会分成几个大段,每个大段至少是几kB大小的(整页),不会像Cache一样拆成128bit/256bit的小块。Scratch Pad和Cache系统的互联见下图:

https://cdn.china-scratch.com/timg/180827/133GT925-0.jpg

使用Scratch Pad做流处理会有很大好处:

1、数据通过DMA传输,不会干扰Cache。

2、数据整段存取,对于Memory的连续读写有好处,并且不存在大量的Cache miss。

3、每个大段带有地址标签,不像Cache一样每个小条Cache行就需要带tag,节省存储空间。

缺点:

1、与Cache共享数据较麻烦,只能通过DMA。

2、多个加速处理单元之间搬运数据耗费时间和功耗。

3、DMA调度优化基本只靠软件,软件优化不好的话性能大幅下降。

另外八卦一句。“针对XX运算单元的DMA访存优化”这个题目下毕业了无数博士……

随着应用的变化,Scratch Pad已经不能满足使用需求。例如,原来拍视频只需要简单编码/存储。现在拍视频需要使用CPU/AI进行物体识别、边缘判断;使用CPU运行拍摄程序;使用GPU/DSP进行滤镜、光线特效处理;使用视频编码单元进行编码。这种情况下,视频数据会被多个单元使用,而且它们对时效的要求还不一样。CPU的拍摄程序需要尽快反应,以免用户感觉卡顿。GPU实时滤镜也需要在较短时间内完成处理。AI的物体识别稍慢一些也不会有太大影响。而视频编解码可以在后面慢慢处理。针对这些应用,存储结构也需要进行相应的调整。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com