<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > C64x+ DSP高速緩存一致性分析與維護

          C64x+ DSP高速緩存一致性分析與維護

          作者: 時間:2010-01-15 來源:網(wǎng)絡 收藏

          代碼CACHE一致性

          圖 7中描述了其它主機對L2中代碼進行修改的情況。這種情況下,當內(nèi)核第一次執(zhí)行此部分代碼時,這部分代碼會被加載到L1P中。之后如果被其它主機修改,內(nèi)核仍會從L1P中讀取原來的代碼而不是更新后的代碼。因此需要軟件進行圖中2指示的操作。軟件不需要進行代碼的搬移,只要在內(nèi)核重新執(zhí)行此部分代碼之前將L1P中此部分內(nèi)容失效。當內(nèi)核再次執(zhí)行此部分代碼的時候,會按照CACHE的正常機制進行此部分代碼的重新加載,從而保證內(nèi)核可以讀取到更新后的代碼。

            

          圖 7 其它主機修改L2代碼的情況
          圖 7 其它主機修改L2代碼的情況

          圖 8描述的是其它主機對DDR2中代碼進行修改的情況。這種情況下,需要在內(nèi)核重新執(zhí)行此部分代碼前,將L1P和L2 CACHE中的相應內(nèi)容進行失效以保證內(nèi)核執(zhí)行時可以將最新的代碼加載到L2和L1P CACHE中。操作順序如下:內(nèi)核對修改代碼會轉換為對存儲器的寫操作,由于L1D只對讀不命中的情況才分配CACHE,所操作的代碼一定不在L1D CACHE中,更新的代碼會被直接寫到L2中,如果修改的是DDR2中的代碼,數(shù)據(jù)可能會被更新到L2 CACHE中。之后的所有操作與上述兩種情況的處理相同。

           

          圖 8 其它主機修改DDR2代碼的情況
          圖 8 其它主機修改DDR2代碼的情況

           

          數(shù)據(jù)CACHE一致性

          對于數(shù)據(jù)部分的一致性,需要由軟件的情況是6),包括內(nèi)核對DDR2的讀取和寫兩種情況。圖 9和圖 10分別描述了這兩種情況。

          圖 9 內(nèi)核對DDR2上的數(shù)據(jù)讀的情況
          圖 9 內(nèi)核對DDR2上的數(shù)據(jù)讀的情況

          圖 10 內(nèi)核對DDR2上的數(shù)據(jù)寫的情況
          圖 10 內(nèi)核對DDR2上的數(shù)據(jù)寫的情況

          本文小結

          緩存一致性問題是應用中常見的問題,TI + 是業(yè)界高性能信號處理平臺,具有優(yōu)良的緩存性能。+平臺上緩存一致性問題可以歸納為以下兩點:1) 代碼部分的一致性問題需要由軟件來維護;2) 只有當內(nèi)核和其它主機共同需要訪問的數(shù)據(jù)緩沖區(qū)在外部存儲器中的時候,數(shù)據(jù)高速緩存一致性問題才需要由軟件來進行維護。其它情況下,數(shù)據(jù)高速緩存一致性都會由硬件自動完成。


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();