日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见架构TLB miss处理方法(转)

發(fā)布時間:2025/3/18 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见架构TLB miss处理方法(转) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自網(wǎng)站:http://blog.sina.com.cn/s/blog_633f462901018reb.html

0.???????綜述

總的來說TLB miss處理分為硬件處理和軟件處理兩種,硬件處理代表架構(gòu)為X86,X86-64,IBM VM370;軟件處理代表為: MIPS, SPARC, Alpha;同時兼容軟硬件處理的架構(gòu):PowerPC。以下便簡要介紹各個架構(gòu)的TLB MISS處理過程及其特性。

?

1.???????ARM架構(gòu)

ARM架構(gòu)的TLB雖然程序員可見,但是并不能像MIPS架構(gòu)那樣可以顯示的向TLB中寫入固定的內(nèi)容,TLB缺失重填過程是由硬件來完成的,具體過程如下:(參考:<<ARM920T的MMU與Cache>>文章)

1)??ARM的MMU和Cache集成在15號協(xié)處理器中。其中第2號寄存器存著頁表的基地址(TTB);第8號寄存器提供了TLB invalid等TLB操作;第10號寄存器提供了TLB鎖定操作。

2)??以TTB中的內(nèi)容為基地址,以VA[31:20]為索引在表中查出第二級頁表(Coarse Page Table)的基地址,同樣是物理地址,也就是說第二級頁表也是直接按這個地址存在物理內(nèi)存中的。

3)??以VA[19:12]為索引在第二級頁表中查出物理頁面的基地址加上VA[11:0]這個偏移量就可以取出相應(yīng)地址上的數(shù)據(jù)。

4)??過程稱為Translation Table Walk從TTB走到一級頁表,又走到二級頁表,又走到物理頁面,一次尋址其實(shí)是三次訪問物理內(nèi)存。注意這個“走”的過程完全是硬件做的,每次CPU尋址時MMU就自動完成以上四步,不需要編寫指令指示MMU去做,前提是操作系統(tǒng)要維護(hù)頁表項的正確性,每次分配內(nèi)存時填寫相應(yīng)的頁表項,每次釋放內(nèi)存時清除相應(yīng)的頁表項,在必要的時候分配或釋放整個頁表。

5)??除了硬件TTW,CP15的8號寄存器支持的TLB操作如下:

a)?????????無效指令TLB

b)?????????無效指令單一入口

c)?????????無效整個數(shù)據(jù)TLB

d)?????????無效數(shù)據(jù)單一入口

e)?????????無效所有TLB

因此由上面分析可以看到ARM的類似X86架構(gòu)是硬件完成TLB重填,而且不能顯示訪問TLB的每一項。

?

2.???????SPARC架構(gòu)

SPARC架構(gòu)類似MIPS,使用的是軟件管理TLB重填異常,TLB中也擁有區(qū)分不同地址空間的標(biāo)識符?context id,是否使用特權(quán)級是根據(jù)操作模式和TRAP LEVEL決定的。SPARC的TLB重填異常如下:

1)???發(fā)生TLB異常時陷入操作系統(tǒng)

2)???操作系統(tǒng)首先查詢TSB中是否存在缺失項

a)?????????如果有load到TLB中

b)?????????如果沒有則執(zhí)行TSB缺失函數(shù)

3)???SPARC訪問TLB的命令是ldxa,stxa等,具體方式見linux內(nèi)核中?arch/sparc/ kernel/itlb_miss.S文件中填充TLB的部分

?

?

3.???????POWERPC架構(gòu)

POWERPC架構(gòu)的TLB MISS有硬件查詢的部分有軟件查詢的部分。其TLB MISS處理的方式如下,一共兩輪查詢

1)??首先查詢處理器中的DBAT和IBAT寄存器,這些寄存器只有4或8個,用于映射內(nèi)核地址,最大能映射到256M。如果這次查詢成功則不進(jìn)行下輪查詢。

2)??若第一次查詢不成功,則進(jìn)行第二輪查詢,這輪查詢不一定被所有的類型的POWERPC處理器支持,查詢中首先通過段寄存器獲得一個52位地址。這52位線性地址使用hash表存放其頁表。硬件獲得52地址對應(yīng)的hash值,查詢頁表。如果不存在則解決hash?沖突繼續(xù)查,如果繼續(xù)查不中則陷入到OS中進(jìn)行處理。

3)??POWERPC G1系列不支持查詢hash表,而使用軟件方式查詢標(biāo)準(zhǔn)頁表,之后寫入TLB;G2~G4系列均采用硬件查詢hash表。最新的POWERPC處理器支持兩種方式選擇。

4)??POWERPC系列訪問TLB指令類似tlbre, tlbwe等,有點(diǎn)類似MIPS。

?

4.???????Alpha架構(gòu)

Alpha同樣使用軟件TLB重填,同樣具有ASID用于保證TLB中存在不同地址空間的項。但是Alpha的TLB重填很奇特,使用機(jī)器碼來完成三級頁表的查詢,換句話說Alpha的TLB miss重填函數(shù)固化在機(jī)器碼中。

?

5.???????X86,x86-64架構(gòu)

X86使用的是硬件頁表查詢,特點(diǎn)是:

1)???操作系統(tǒng)并不知道有TLB存在

2)???CPU保證TLB和頁表一致性。即當(dāng)頁表改變或者切換時需要刷新TLB。

3)???TLB中不存在ASID。

4)???OS不能單一操作某一TLB表項,只能通過INVLPG指令無效整個TLB。

5)???X86的硬件page table walk過程略~

?

6.???????MIPS架構(gòu)

MIPS使用的是軟件TLB miss方法,使用ASID區(qū)分不同的用戶空間。具體過程如下:

1)??訪問地址TLB不存在時候,陷入內(nèi)核產(chǎn)生TLB miss異常。

2)??TLB miss?處理函數(shù)查詢?nèi)夗摫慝@得地址并填入TLB

3)??MIPS架構(gòu)中訪問TLB指令時:tlbwi,tlbri等。

轉(zhuǎn)載于:https://www.cnblogs.com/qiuheng/p/5685589.html

總結(jié)

以上是生活随笔為你收集整理的常见架构TLB miss处理方法(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。