在大多數(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)(置成無(wú)效)并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è)表修改帶來(lái)的性能開(kāi)銷,因?yàn)樗苊饬怂⑿氯康腡LB。
審核編輯:劉清
-
ARM處理器
+關(guān)注
關(guān)注
6文章
361瀏覽量
41948 -
MMU
+關(guān)注
關(guān)注
0文章
92瀏覽量
18374
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
在ADS4142的數(shù)據(jù)表第18頁(yè), 表4中,tSU和tH是怎么定義的?
freertos最多支持多少個(gè)任務(wù)
Linux內(nèi)核中頁(yè)表映射的基礎(chǔ)知識(shí)
![Linux內(nèi)核中<b class='flag-5'>頁(yè)</b><b class='flag-5'>表</b>映射的基礎(chǔ)知識(shí)](https://file1.elecfans.com/web2/M00/01/F6/wKgaomazKAGAVUhwAAJCyy-L7Qg001.png)
esp32-c3工程中怎么創(chuàng)建多個(gè)freertos任務(wù)?
請(qǐng)問(wèn)ESP32-S2能否支持8位并行RGB?
SN74HCS1668位并行加載移位寄存器數(shù)據(jù)表
![SN74HCS1668位<b class='flag-5'>并行</b>加載移位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
8位并行輸出串行移位寄存器數(shù)據(jù)表
![8位<b class='flag-5'>并行</b>輸出串行移位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
串行到并行接口SN74LV8153 數(shù)據(jù)表
![串行到<b class='flag-5'>并行</b>接口SN74LV8153 數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
并行加載8位寄存器數(shù)據(jù)表
![<b class='flag-5'>并行</b>加載8位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
CMOS四段并行輸入/并行輸出移位寄存器CD4035B TYPES 數(shù)據(jù)表
![CMOS四段<b class='flag-5'>并行</b>輸入/<b class='flag-5'>并行</b>輸出移位寄存器CD4035B TYPES 數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
4位并行存取移位寄存器數(shù)據(jù)表
![4位<b class='flag-5'>并行</b>存取移位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
4位并行存取移位寄存器數(shù)據(jù)表
![4位<b class='flag-5'>并行</b>存取移位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
并行加載8位移位寄存器數(shù)據(jù)表
![<b class='flag-5'>并行</b>加載8位移位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
并行加載的8位移位寄存器數(shù)據(jù)表
![<b class='flag-5'>并行</b>加載的8位移位寄存器數(shù)據(jù)<b class='flag-5'>表</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論