ARM ACP 小註解
ARM 的 CPU 有個機制叫做 ACP (Accelerator Coherence Port), 它是啥呢?
以 MIPS 系統為例, 如果我用 DMA 搬了一塊 memory, 而 CPU 不知情 – 因為不是透過它搬的, 那麼 CPU 就不能用 cache memory 來存取這塊記憶體, 以免發生預期以外的狀況. 既然不能 cache, 那麼 CPU 就不能自由自在地操作它了.
一般來說, 部分的 DMA 還是透過 CPU 填寫 register, 故 CPU 可以等 DMA done, 然後再進行一般的操作. 不過在多工的情況下, 使用起來就會更加地麻煩.
ARM 的 ACP 就是解決這個問題, 假如一個 device 被掛在 ACP 上, 那麼即使用 DMA 對這個 device 做動作, 其內容也會被同步到 cache memory 裡面, 包括 L1 和 L2 cache. 雖然 ACP 只支援 3 個 bit 的 AXI device ID – 8 個 device, 還是可以用 bridge 的方式加以擴充.
ACP 上的 device 在 read 的時候, 依序在 L1, L2 cache 和 external memory 讀資料.
ACP 上的 device 在 write 的時候, 會優先灌入 L1 cache, invalid 舊資料, 當然也就 update 了 L2 cache.
從行為上來看, 如果一個 device 有很多 DMA, 又有很多 CPU 動作, 那麼 ACP 將可以帶來不少的好處. 包括快速, 省電等等.
0 件のコメント:
コメントを投稿