在大多數(shù)使用ARM處理器的系統(tǒng)中都會(huì)有很多應(yīng)用或者任務(wù)同時(shí)運(yùn)行,其中每個(gè)任務(wù)都在物理內(nèi)存中擁有自己獨(dú)立的頁(yè)表。
每當(dāng)應(yīng)用程序啟動(dòng)時(shí),操作系統(tǒng)都會(huì)為其分配一個(gè)頁(yè)表,頁(yè)表中的頁(yè)表項(xiàng)將應(yīng)用程序即將使用到的指令和數(shù)據(jù)映射到物理內(nèi)存。如果應(yīng)用程序映射到了未分配的物理空間,操作系統(tǒng)會(huì)完成相應(yīng)頁(yè)的分配,然后任務(wù)就可以進(jìn)行下去。
多個(gè)任務(wù)可以同時(shí)運(yùn)行,因?yàn)樗鼈兪褂玫氖遣煌腣A-PA映射關(guān)系,而這些映射關(guān)系能夠同時(shí)存在于物理內(nèi)存中。當(dāng)任務(wù)完成并且相應(yīng)的頁(yè)表映射不再需要時(shí),該頁(yè)表所處的物理空間可以被重新分配,刪除相應(yīng)的頁(yè)表項(xiàng)(置成無效)并invalid TLB cache。
在頁(yè)表中有一個(gè)nG(non-global)比特位。如果某個(gè)頁(yè)設(shè)置了nG ,那么該頁(yè)只與特定的應(yīng)用或者任務(wù)相關(guān)聯(lián)。當(dāng)MMU執(zhí)行VA-PA時(shí),會(huì)同時(shí)用到VA和ASID(操作系統(tǒng)分配給每個(gè)任務(wù)的編號(hào))。
作為頁(yè)表內(nèi)容的cache,TLB中的tag除了存儲(chǔ)了VA,還有相應(yīng)的ASID。在做TLB的hit-miss-check時(shí),只有VA和ASID同時(shí)匹配才算hit。
上下文切換
所以,TLB中可能存放著多個(gè)相同VA對(duì)應(yīng)的頁(yè)表項(xiàng)。這些頁(yè)表項(xiàng)具有不同的ASID,當(dāng)某個(gè)ASID對(duì)應(yīng)的任務(wù)完成或者這個(gè)任務(wù)的頁(yè)表發(fā)生更改時(shí)只需要invalid某個(gè)ASID的TLB cache。這種操作叫context switches(上下文切換)。只針對(duì)特定ASID進(jìn)行上下文切換,能夠降低頁(yè)表修改帶來的性能開銷,因?yàn)樗苊饬怂⑿氯康腡LB。
審核編輯:劉清
-
ARM處理器
+關(guān)注
關(guān)注
6文章
361瀏覽量
42299 -
MMU
+關(guān)注
關(guān)注
0文章
92瀏覽量
18541
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
摩爾線程支持DeepSeek開源通信庫(kù)DeepEP和并行算法DualPipe
BEVFusion —面向自動(dòng)駕駛的多任務(wù)多傳感器高效融合框架技術(shù)詳解

在ADS4142的數(shù)據(jù)表第18頁(yè), 表4中,tSU和tH是怎么定義的?
freertos最多支持多少個(gè)任務(wù)
Linux內(nèi)核中頁(yè)表映射的基礎(chǔ)知識(shí)

esp32-c3工程中怎么創(chuàng)建多個(gè)freertos任務(wù)?
請(qǐng)問ESP32-S2能否支持8位并行RGB?
SN74HCS1668位并行加載移位寄存器數(shù)據(jù)表

8位并行輸出串行移位寄存器數(shù)據(jù)表

串行到并行接口SN74LV8153 數(shù)據(jù)表

并行加載8位寄存器數(shù)據(jù)表

并行加載的8位移位寄存器數(shù)據(jù)表

CMOS四段并行輸入/并行輸出移位寄存器CD4035B TYPES 數(shù)據(jù)表

并行加載8位移位寄存器數(shù)據(jù)表

8位并行輸出串行移位寄存器數(shù)據(jù)表

評(píng)論