在大多數(shù)使用ARM處理器的系統(tǒng)中都會有很多應用或者任務(wù)同時運行,其中每個任務(wù)都在物理內(nèi)存中擁有自己獨立的頁表。
每當應用程序啟動時,操作系統(tǒng)都會為其分配一個頁表,頁表中的頁表項將應用程序即將使用到的指令和數(shù)據(jù)映射到物理內(nèi)存。如果應用程序映射到了未分配的物理空間,操作系統(tǒng)會完成相應頁的分配,然后任務(wù)就可以進行下去。
多個任務(wù)可以同時運行,因為它們使用的是不同的VA-PA映射關(guān)系,而這些映射關(guān)系能夠同時存在于物理內(nèi)存中。當任務(wù)完成并且相應的頁表映射不再需要時,該頁表所處的物理空間可以被重新分配,刪除相應的頁表項(置成無效)并invalid TLB cache。
在頁表中有一個nG(non-global)比特位。如果某個頁設(shè)置了nG ,那么該頁只與特定的應用或者任務(wù)相關(guān)聯(lián)。當MMU執(zhí)行VA-PA時,會同時用到VA和ASID(操作系統(tǒng)分配給每個任務(wù)的編號)。
作為頁表內(nèi)容的cache,TLB中的tag除了存儲了VA,還有相應的ASID。在做TLB的hit-miss-check時,只有VA和ASID同時匹配才算hit。
上下文切換
所以,TLB中可能存放著多個相同VA對應的頁表項。這些頁表項具有不同的ASID,當某個ASID對應的任務(wù)完成或者這個任務(wù)的頁表發(fā)生更改時只需要invalid某個ASID的TLB cache。這種操作叫context switches(上下文切換)。只針對特定ASID進行上下文切換,能夠降低頁表修改帶來的性能開銷,因為它避免了刷新全部的TLB。
審核編輯:劉清
-
ARM處理器
+關(guān)注
關(guān)注
6文章
360瀏覽量
41742 -
MMU
+關(guān)注
關(guān)注
0文章
91瀏覽量
18289
發(fā)布評論請先 登錄
相關(guān)推薦
評論