資訊內容
35.Cache:Scratch Pad
對于一些流處理單元(音視頻編解碼等),需要的數據比較集中且連續。如果讓這些數據進入到Cache中,它們會把CPU需要的數據沖刷掉。而且,在較老的程序中,這些音視頻流數據不太會被CPU使用到。最早的SOC芯片中,數據流從采集接口(AD等)直接進入編解碼單元,編碼完成后通過交叉互聯總線直接送到Memory或者SD卡中存儲。后來,音視頻數據占用的帶寬變大,并且對實時性的要求更高、處理的復雜性也變高。加大輸入Buffer已經不能解決問題了。于是有了Scratch Pad。
Scratch Pad比較簡單,直接通過DMA讀取一大段連續數據進入一整段存儲空間內,全部處理完之后再通過DMA送回Memory中。Scratch Pad可能會分成幾個大段,每個大段至少是幾kB大小的(整頁),不會像Cache一樣拆成128bit/256bit的小塊。Scratch Pad和Cache系統的互聯見下圖:
使用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的物體識別稍慢一些也不會有太大影響。而視頻編解碼可以在后面慢慢處理。針對這些應用,存儲結構也需要進行相應的調整。
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
