[英]cache attributes in MMU page table in arm linux
我想知道操作系統如何決定在Arm v7和armv8的MMU頁表中的頁的回寫和直寫屬性之間。 謝謝
通過高速緩存(在硬件中)進行寫操作比回 寫要容易。 因此,某些較舊的ARM CPU可能僅通過 cache進行硬編碼寫入 。 ARMv4 / 5可以將此作為選項 。 到ARMv7 / 8出現時, 回寫邏輯已經比其他邏輯小,因此CPU / MMU都支持。
mmu.c中還有一些內核命令行選項,例如cachepolicy , nocache和nowb ; 這些僅適用於早期啟動 ,並且主要適用於較舊的ARM CPU,但仍可以將其用於ARMv7 / 8。
通常, WRITEBACK具有很高的價值,因為大多數系統都具有SDRAM,這為一次寫入多個條目提供了好處。 代碼通常執行讀-修改-寫周期; 可能在同一內存或結構上多次。 典型的高速緩存行很好地對應於SDRAM突發長度(無巧合)。
在某些情況下(例如帶DMA的LCD),您可能希望使用WRITETHROUGH ,因此通常這些選項是由內核分配器選擇的。 它將為非體系結構API選擇正確的屬性。
用戶空間將始終需要並獲得WRITEBACK內存。 某些mmap
LCD幀緩沖區可能是WRITETHROUGH ,但更有可能是未緩存的。
我想知道os [linux]如何在Arm v7和armv8的MMU頁面表中為頁面的回寫和直寫屬性之間做出選擇。
該決定取決於存儲器的使用。 WRITEBACK模式通常在用戶空間中使用,除非少數情況下可能會暴露驅動程序內存。 即,對於僅由系統中的CPU使用的內存, WRITEBACK總是最好的。 只有在有其他東西在看內存(例如LCD DMA)時, WRITETHROUGH才會更好。 對於LCD DMA,您希望將寫入內存的內容立即顯示在屏幕上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.