色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

ARM核920T性能優(yōu)化之MMU

發(fā)布時(shí)間:2011-3-28 14:01    發(fā)布者:techshare
關(guān)鍵詞: 920T , arm , MMU , 性能優(yōu)化
一.虛存的工作原理

為了使任務(wù)有各自的虛擬存儲(chǔ)映射,MMU硬件采用地址重定位(address relocation),即在地址訪問(wèn)主存之前,轉(zhuǎn)換由處理器核輸出的存儲(chǔ)器地址。可認(rèn)為在介于內(nèi)核和主存間的MMU中有一個(gè)重定位寄存器,這樣就能很容易理解這個(gè)轉(zhuǎn)換過(guò)程。







當(dāng)處理器核產(chǎn)生一個(gè)虛擬地址時(shí),MMU取出這個(gè)虛擬地址的高位,并用重定位寄存器中的值來(lái)替換它,從而形成一個(gè)物理地址。虛擬地址的低位是一個(gè)偏移量,它轉(zhuǎn)換成物理存儲(chǔ)器的一個(gè)特定地址。一個(gè)重定位寄存器只能轉(zhuǎn)換一塊存儲(chǔ)空間,這塊存儲(chǔ)空間的大小由虛擬地址的偏移量部分所占的位數(shù)所決定。這樣的一塊虛擬存儲(chǔ)空間稱為一頁(yè)(page),而轉(zhuǎn)換過(guò)程中所對(duì)應(yīng)的那塊物理存儲(chǔ)空間稱為一個(gè)頁(yè)幀(page frame)。







ARM MMU臨時(shí)存放轉(zhuǎn)換數(shù)據(jù)的一組重定位寄存器實(shí)際上是一個(gè)由64個(gè)重定位寄存器組成的全相聯(lián)cache。這個(gè)cache稱為轉(zhuǎn)換旁路緩沖器(TLB),TLB緩存最近被訪問(wèn)的頁(yè)的轉(zhuǎn)換數(shù)據(jù)。除了使用重定位寄存器外,MMU還使用主存中的表來(lái)存放描述系統(tǒng)中用到的虛擬存儲(chǔ)器映射的數(shù)據(jù),這些轉(zhuǎn)換數(shù)據(jù)的表稱為頁(yè)表(page tables)。頁(yè)表中的每個(gè)頁(yè)表項(xiàng)PTE(Page Table Entry)包含關(guān)于虛擬頁(yè)的以下信息:用于將虛擬頁(yè)轉(zhuǎn)換為物理頁(yè)的物理基地址,分配給該頁(yè)的訪問(wèn)權(quán)限,頁(yè)的cache和寫緩沖器配置。







通過(guò)上下文切換時(shí)激活不同的頁(yè)表,使得執(zhí)行有重疊虛擬地址的多個(gè)任務(wù)成為可能。MMU可以重定位一個(gè)任務(wù)的執(zhí)行地址,而無(wú)需在物理存儲(chǔ)器中移動(dòng)這個(gè)任務(wù)。任務(wù)的物理存儲(chǔ)空間只是簡(jiǎn)單地通過(guò)激活和不激活頁(yè)表來(lái)映射到虛擬存儲(chǔ)空間。當(dāng)剛剛提到的地址轉(zhuǎn)換發(fā)生時(shí),cache可能包括無(wú)效的,從舊的頁(yè)表映射來(lái)的虛擬數(shù)據(jù)。為了保證存儲(chǔ)器數(shù)據(jù)的一致性,cache可能需清理和清除。TLB可能也需清除,因?yàn)樗部赡芫彺媪伺f的轉(zhuǎn)換數(shù)據(jù)。

任務(wù)切換需要以下步驟:

1)保存活躍任務(wù)的上下文,并將該任務(wù)置于睡眠態(tài);

2)清除cache,如果使用回寫策略,則需要清理D-cache;

3)清除TLB,從而移除原任務(wù)的轉(zhuǎn)換數(shù)據(jù);

4)配置MMU,以使用新的頁(yè)表,把虛擬運(yùn)行空間轉(zhuǎn)換為被喚醒任務(wù)在物理存儲(chǔ)器中的位置;

5)恢復(fù)被喚醒任務(wù)的上下文

6)繼續(xù)執(zhí)行恢復(fù)的任務(wù)

二.頁(yè)表

ARM MMU硬件采用2級(jí)頁(yè)表結(jié)構(gòu):一級(jí)頁(yè)表(L1)和二級(jí)頁(yè)表(L2)。一級(jí)頁(yè)表只有一個(gè)L1主頁(yè)表(L1 master page table)。L1主頁(yè)表包含兩種類型的頁(yè)表項(xiàng):保存指向二級(jí)頁(yè)表起始地址指針的頁(yè)表項(xiàng)和保存用于轉(zhuǎn)換1MB段的頁(yè)表項(xiàng)。L1主頁(yè)表也稱為段頁(yè)表(section page table)。L1主頁(yè)表將4GB的地址空間劃分為多個(gè)1MB的段(section),因此L1頁(yè)表包含4096個(gè)頁(yè)表項(xiàng),L1主頁(yè)表是一個(gè)混合表,可作為L(zhǎng)2頁(yè)表的頁(yè)目錄,也可作為用于轉(zhuǎn)換1MB虛擬空間的L2粗(coarse)頁(yè)表或L2細(xì)(fine)頁(yè)表的指針;當(dāng)L1頁(yè)表用于轉(zhuǎn)換一個(gè)1MB的段時(shí),其頁(yè)表項(xiàng)(PTE)包含的是物理存儲(chǔ)器中1MB頁(yè)幀(page frame)的首地址。目錄頁(yè)表項(xiàng)和1MB的段頁(yè)表項(xiàng)可以共存于L1主頁(yè)表。







一級(jí)頁(yè)表項(xiàng):

一級(jí)頁(yè)表支持4種類型的頁(yè)表項(xiàng):

1)1MB段轉(zhuǎn)換項(xiàng)

2)指向L2細(xì)頁(yè)表的目錄項(xiàng)

3)指向L2粗頁(yè)表的目錄項(xiàng)

4)產(chǎn)生中止異常的錯(cuò)誤項(xiàng)







二級(jí)頁(yè)表項(xiàng):

L2頁(yè)表有4種可能的頁(yè)表項(xiàng):

1)定義64KB頁(yè)幀屬性的大(large)頁(yè)表項(xiàng);

2)定義4KB頁(yè)幀的。╯mall)頁(yè)表項(xiàng);

3)定義1KB頁(yè)幀的微(tiny)頁(yè)表項(xiàng);

4)訪問(wèn)時(shí)產(chǎn)生頁(yè)錯(cuò)誤中止異常的錯(cuò)誤頁(yè)表項(xiàng);







L1轉(zhuǎn)換表基址

CP15:c2寄存器保存轉(zhuǎn)換表基地址TTB(Translation Table Base address)-指向L1主頁(yè)表在虛存中的位置。CP15:c2寄存器的格式如圖:







三.轉(zhuǎn)換旁路緩沖器(TLB)

單步頁(yè)表搜索:

如果MMU搜索的是1MB大小的段頁(yè),則硬件能用單步搜索找到所要的頁(yè)表項(xiàng),因?yàn)?MB的頁(yè)表項(xiàng)是存放在L1主頁(yè)表里的。







2步頁(yè)表搜索:

如果MMU搜索的是大小為1KB,4KB,16KB或64KB的頁(yè),則頁(yè)表搜索須執(zhí)行2步才能找到地址轉(zhuǎn)換數(shù)據(jù)。







四.域和訪問(wèn)權(quán)限

有兩種不同的控制用來(lái)管理一個(gè)任務(wù)的存儲(chǔ)器訪問(wèn)權(quán)限,:域(domain)用于主控制(primay control),頁(yè)表中的訪問(wèn)權(quán)限用于次控制(secondary control)。有16種不同的域可以分配給虛存的1MB段,并通過(guò)設(shè)置L1主頁(yè)表項(xiàng)(PTE)中的域的有關(guān)位(位域)來(lái)分配給一個(gè)段。

當(dāng)一個(gè)域分配給了一個(gè)段時(shí),它必須遵守分配給這個(gè)域的訪問(wèn)權(quán)限。域的訪問(wèn)權(quán)限在CP15:c3寄存器中分配,它控制處理器核訪問(wèn)虛存段的能力。16個(gè)可用的域,每個(gè)域使用CP15:c3寄存器的2位來(lái)定義訪問(wèn)權(quán)限,域訪問(wèn)位取值及對(duì)應(yīng)的意義如下表所列:













基于頁(yè)表的訪問(wèn)權(quán)限。頁(yè)表項(xiàng)中的AP位決定該頁(yè)的訪問(wèn)權(quán)限!癆P”,“ap3”,“ap2”,“ap1”,“ap0”結(jié)合CP15寄存器C1的R/S位,決定如何進(jìn)行訪問(wèn)權(quán)限檢查。段描述符中的“AP”

控制整個(gè)段(1MB)的訪問(wèn)權(quán)限;大頁(yè)描述符中的每個(gè)“apx”(x為0~3)控制一個(gè)大頁(yè)(64KB)中1/4內(nèi)存的訪問(wèn)權(quán)限,即“ap3”對(duì)應(yīng)大頁(yè)高端的16KB,“ap0”對(duì)應(yīng)大頁(yè)低端的16KB;小頁(yè)描述符與大頁(yè)描述符相似,每個(gè)“apx”控制一個(gè)小頁(yè)(4KB)的1/4內(nèi)存的訪問(wèn)權(quán)限。極小頁(yè)中的“ap”就控制整個(gè)極小頁(yè)1KB的訪問(wèn)權(quán)限。







五.Cache和寫緩沖









六.CP15:c1控制寄存器











七.快速上下文切換擴(kuò)展







快速上下文切換擴(kuò)展FCSE(Fast Context Switch Extension),是MMU中的一個(gè)附加硬件,用于提高ARM嵌入式系統(tǒng)的系統(tǒng)性能。FCSE使得多個(gè)獨(dú)立的任務(wù)可以運(yùn)行在一個(gè)固定的重疊存儲(chǔ)空間中,而上下文切換時(shí)又不需要清理或清除cache,或TLB。如果沒(méi)有FCSE,則從一個(gè)任務(wù)切換到另一個(gè)任務(wù)需要改變虛擬存儲(chǔ)映射。如果涉及兩個(gè)有重疊地址的任務(wù),則保存在cache和TLB中的信息將變?yōu)闊o(wú)效,這樣系統(tǒng)就必須清除cache和TLB中的無(wú)效數(shù)據(jù)。清除這些模塊的過(guò)程使任務(wù)切換增加了很多時(shí)間,因?yàn)閮?nèi)核不僅要清除cache和TLB中的無(wú)效數(shù)據(jù),還要從主存中裝載新的數(shù)據(jù)到cache和TLB。使用FCSE,虛擬存儲(chǔ)管理增加了一次地址轉(zhuǎn)換。FCSE在虛擬地址到達(dá)cache和TLB前,使用一個(gè)特殊的,包含進(jìn)程ID值的重定位寄存器來(lái)修改虛擬地址。把修改之前的虛存地址稱為VA(Virtual Address),把第一次轉(zhuǎn)換之后的地址稱為修改后虛地址MVA(Modified Virtual Address)。這樣,任務(wù)間的切換就不用涉及到改變頁(yè)表,只需簡(jiǎn)單的將新任務(wù)的進(jìn)程ID寫到位于CP15的FCSE進(jìn)程ID寄存器。為了利用FCSE,編譯鏈接所有的任務(wù),使他們都運(yùn)行在虛存的第一個(gè)32MB塊空間,為每個(gè)任務(wù)分配一個(gè)進(jìn)程ID;然后通過(guò)下邊的公式,將每個(gè)任務(wù)放置在修改后虛存的不同32MB分區(qū)中:

MVA = VA +(0x2000000 * 進(jìn)程ID)

下圖是一個(gè)快速上下文切換擴(kuò)展的例子:在一個(gè)3任務(wù)的多任務(wù)環(huán)境中,切換前任務(wù)1運(yùn)行,切換后任務(wù)2運(yùn)行。









作者:李萬(wàn)鵬
本文地址:http://www.54549.cn/thread-60208-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
rinllow5 發(fā)表于 2011-4-1 22:54:54
謝謝!。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。!
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表