ARM核920T性能優(yōu)化之MMU
任務(wù)切換需要以下步驟:
1)保存活躍任務(wù)的上下文,并將該任務(wù)置于睡眠態(tài);
2)清除cache,如果使用回寫(xiě)策略,則需要清理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è)表包含兩種類(lèi)型的頁(yè)表項(xiàng):保存指向二級(jí)頁(yè)表起始地址指針的頁(yè)表項(xiàng)和保存用于轉(zhuǎn)換1MB段的頁(yè)表項(xiàng)。L1主頁(yè)表也稱(chēng)為段頁(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種類(lèi)型的頁(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è)表里的。
評(píng)論