有關ArmV7-A中緩存的另一個問題。 在這種情況下,所討論的SoC是Allwinner A20,雙核Cortex-A7。具有非共享屬性的PoU
從我讀到的內容來看,PoU的定義是核心的指令和數據緩存保證能夠看到同一個內存位置的副本。
關於所討論的SoC,由於兩個內核共享L2(統一)緩存的PoU,這意味着無論放在L1中,L2都可以看到。是對的嗎?
即使我將內存區域的屬性更改爲Non-Shareable,L2將能夠看到內核中L1 內部的內容。真的嗎?
要闡述我的意思通過,我做了一個小實驗:
當我寫到內存地址內不可共享,寫回從核心0#區域。然後,在沒有執行任何Cache維護操作的情況下,當我嘗試從內核#1讀取相同的內存地址時,發生它讀取從內核#0寫入的正確值。
我推測這種行爲是L2是PoU的結果,因此,當我從核心#0寫入時,L2也存儲它的一個副本(即使它沒有被刷新)。然後當我從核心#1讀取時,在讀取未命中後,核心#1的L1從L2讀取存儲器值。
從一個CPU寫入並從另一個CPU中讀取與PoU無關,因爲兩者都是_data_訪問。 – Notlikethat
@Notlikethat也感謝其他問題。你能詳細說明一下嗎? PoU與數據訪問無關嗎?我仍然不知道爲什麼其他CPU可以訪問我在第一個cpu上編寫的內容。如果區域settin是不可共享的,Writeback –