Unity-ECS(一)淺談CPU緩存命中和Unity面向數據技術棧(DOTS)--筆記


一,緩存類型

  概念:局部性。 

  時間局部性:當前用到的一個存儲器位置,不久的將來會被用到。

  空間局部性:當前用到的一個存儲器位置,附近的位置會被用到。 

那么在CPU的層面,這兩個局部性的特性就會被Cache執行,即將對擁有良好局部性的位置和指令進行緩存。來看一個具有時間局部性的例子:

 

 

這是一個簡單的求數組和的函數,這里的sum和i都具有時間局部性。那么它們就會被Cache管理,被CPU取值命中。

再看一個空間局部性的例子,我們將這個一維數組改為二維。

 

 

我們知道一個二維數組在內存里的排列是按行順序排列的,大概是這樣:
ay[0,0], ay[0,1], ay[0,2],ay[1,0], ay[1,1], ay[1,2]……

SumCache的寫法會完全命中ay在內存里的排布,而SumMiss的寫法則會Miss,二者的函數執行效率差距幾十倍。

所以ECS的架構,就是對緩存命中最大的提升,也是ECS性能倍增的原因。下一節稍微講一下Unity日后主推的面對數據棧技術編程即DOTS。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM