fcse 概述
fcse(fast context switch extension,快速上下文切換)位於 cpu 和 mmu 之間,如果兩個程序使用了同樣的虛擬位址空間,則對 cpu而言,兩個程序使用了同樣的虛擬位址空間。快速上下文切換機構對各程序的虛擬位址進行變換,這樣系統中除了 cpu 之外的部分看到的是經過快速上下文切換機構變換的虛擬位址。快速上下文切換機構將各程序的虛擬空間變換成不同的虛擬空間,這樣在進行程序間切換時就不需要進行虛擬位址到實體地址的重對映。
通常情況下,如果兩個程序占用的虛擬位址空間由重疊,系統在這兩個程序之間進行切換時,必須進行虛擬位址到實體地址的重對映。而虛擬位址到實體地址的重對映涉及到重建mmu中的頁表,而且cache 及tlb中的內容都必須使無效(通過設定協處理器暫存器的相關位)。這些操作將帶類巨大的系統開銷,一方面重建mmu和使無效cache及tlb的內容需要很大的開銷,另一方面重建cache和tlb內容也需要很大的開銷。
快速上下文切換(fcse
)通過修改系統中不同程序的虛擬位址,避免在進行程序間切換時造成的虛擬位址到實體地址的重對映,這樣就減少了重建 mmu,使 cache 和 tlb無效,重建 cache和 tlb內容等操作的巨大開銷,從而提高了系統的效能。
fcse 原理
arm系統中,4gb的虛擬空間被分成了128個程序空間塊,每乙個程序空間塊大小為32mb。每個程序空間塊中可以包含乙個程序,該程序可以使用虛擬位址空間0x0~0x01ffffff,這個位址範圍也就是cpu看到的程序的虛擬空間。系統128個程序空間塊的編號0~127, 標號為x 的程序空間塊中的程序實際使用的虛擬位址空間為(x*0x02000000)到(x*0x02000000+0x01ffffff),這個位址空間是系統中除了cpu 之外的其他部分看到的該程序所占用的虛擬位址空間。
由位址va到mva的變換演算法如下所示;
if (va[31:25]==0b0000000)then
mva=va|(pid<<25)
else
mva=va
其中。pid為當前程序的所在程序空間的編號,即當前程序的程序識別符號。其取值為0~127。
a.系統中,每個程序都使用虛擬位址空間0x0~0x01ffffff,當程序訪問本程序的指令和資料時,它產生的為虛擬位址va的高7位為0;快速上下文切換機構用該程序的程序標示符代替va的高7位,從而得到變換後的虛擬位址mva,這個mva在該程序對應的程序空間塊內。
pid | pid | 0.....0 |
va |0000000| va | 置1運算
mva | pid | va |
b.當va的高7位不全是0時,mva=va。這種va是本程序用於訪問別的程序中的資料和指令的虛擬位址,注意這時被訪問的程序識別符號不能為0.
cp15中的暫存器c13用於快速上下文切換。其編碼格式如下所示。
其中,pid 表示當前程序所在的程序空間塊的編號,即當前程序的程序識別符號,取值為 0~127.
訪問暫存器c13的指令格式如下所示。
mcr p15, 0,,,c0,0
mrc p15,0,,,c0,0
其中, 在讀操作時,結果中位[31::25]返回pid,其他位 的數值是不可以預知的。寫操作將設定pid的值。
當pid的值為0時,mva=va,相當於禁止了fcse。系統復位後pid即為0.
當pid的值不為0時,相當於使能了fcse。
arm處理器快速上下文切換
概述 fcse fast context switch extension,快速上下文切換 位於cpu和mmu之間,如果兩個程序使用了同樣的虛擬位址空間,則對cpu而言,兩個程序使用了同樣的虛擬位址空間。快速上下文切換機構對各程序的虛擬位址進行變換,這樣系統中除了cpu之外的部分看到的是經過快速上下...
程序上下文切換與處理器上下文切換
3 處理器模式切換 4系統任務與使用者程序 1 程序上下文與中斷上下文程序上下文 所謂的 程序上下文 就是乙個程序在執行的時候,cpu的所有暫存器中的值 程序的狀態以及堆疊上的內容 暫存器位於cpu上,速度快,堆疊位於記憶體上,速度慢 當核心需要切換到另乙個程序時,它需要儲存當前程序的所有狀態,即儲...
ARM基礎學習 快速上下文切換技術
fcse的原理 快速上下文切換技術 fcse 通過修改系統中不同程序的虛擬位址,避免在進行程序間切換時造成虛擬位址到實體地址的重對映,從而提高系統效能 通常情況下,如果兩個程序占用的虛擬位址空間重疊,系統在這兩個程序之間進行切換時,必須進行虛擬位址到實體地址的重對映。而虛擬位址到實體地址的重對映涉及...