在大多數使用ARM處理器的系統中都會有很多應用或者任務同時運行,其中每個任務都在物理內存中擁有自己獨立的頁表。
每當應用程序啟動時,操作系統都會為其分配一個頁表,頁表中的頁表項將應用程序即將使用到的指令和數據映射到物理內存。如果應用程序映射到了未分配的物理空間,操作系統會完成相應頁的分配,然后任務就可以進行下去。
多個任務可以同時運行,因為它們使用的是不同的VA-PA映射關系,而這些映射關系能夠同時存在于物理內存中。當任務完成并且相應的頁表映射不再需要時,該頁表所處的物理空間可以被重新分配,刪除相應的頁表項(置成無效)并invalid TLB cache。
在頁表中有一個nG(non-global)比特位。如果某個頁設置了nG ,那么該頁只與特定的應用或者任務相關聯。當MMU執行VA-PA時,會同時用到VA和ASID(操作系統分配給每個任務的編號)。

作為頁表內容的cache,TLB中的tag除了存儲了VA,還有相應的ASID。在做TLB的hit-miss-check時,只有VA和ASID同時匹配才算hit。
上下文切換
所以,TLB中可能存放著多個相同VA對應的頁表項。這些頁表項具有不同的ASID,當某個ASID對應的任務完成或者這個任務的頁表發生更改時只需要invalid某個ASID的TLB cache。這種操作叫context switches(上下文切換)。只針對特定ASID進行上下文切換,能夠降低頁表修改帶來的性能開銷,因為它避免了刷新全部的TLB。
審核編輯:劉清
-
ARM處理器
+關注
關注
6文章
361瀏覽量
43286 -
MMU
+關注
關注
0文章
92瀏覽量
19216
發布評論請先 登錄
一文說透了如何實現單片機的多任務并發!
高性能網絡存儲設計:NVMe-oF IP的實現探討
CW32F030的FLASH存儲器支持擦寫PC頁的保護功能
一文看懂AI大模型的并行訓練方式(DP、PP、TP、EP)
為什么FPU在MCU中很重要呢?
Swift 的并發系統并行運行多個任務
一句話,多個命令同時執行,AI語音模組也能多任務處理?
愛普科技PSRAM加速wisun無線模塊多任務處理
Task任務:LuatOS實現“任務級并發”的核心引擎
揭秘LuatOS Task:多任務管理的“智能中樞”
多節點并行處理架構
多任務處理卡頓頻發,無風扇工控機如何優化性能?聚徽廠家一文讀懂
快速入門——LuatOS:sys庫多任務管理實戰攻略!
讀懂極易并行計算:定義、挑戰與解決方案
頁表如何支持多任務并行
評論