一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

內(nèi)存管理單元MMU概述

 袁先森lemon 2019-04-15
內(nèi)存管理單元(Memory Management Unit)簡稱MMU
功能: ①負(fù)責(zé)虛擬地址到物理地址的映射 ②提供硬件機(jī)制的內(nèi)存訪問權(quán)限檢查。
Q:內(nèi)存訪問權(quán)限檢查什么意思?
A:舉個(gè)例子,比如在我們Windows系統(tǒng)的PC中,在一個(gè)時(shí)間段需要依次運(yùn)行A,B,C三個(gè)應(yīng)用程序,這三個(gè)程序在我們的內(nèi)存地址中都有其相對應(yīng)的地址空間。當(dāng)我們在運(yùn)行A程序出現(xiàn)錯(cuò)誤或者有可能會破壞B程序時(shí),這時(shí)由于內(nèi)存訪問權(quán)限的存在就使得A程序無法訪問B程序所在的內(nèi)存地址空間,從而避免了由于一個(gè)程序的錯(cuò)誤而導(dǎo)致?lián)p壞其它內(nèi)存空間的程序,這就是內(nèi)存訪問權(quán)限的作用。

這里我們具體看MMU的第一個(gè)功能:地址映射。
S3C2440中相關(guān)的結(jié)構(gòu)分布如下圖:



假設(shè)CPU要讀/寫外部存儲器SDRAM中的某一內(nèi)存地址的數(shù)據(jù),這時(shí)候有兩條路可以選擇:
1.④⑤
2.①②③

如果選擇第一條路:
CPU發(fā)出的地址就可以理解為物理地址,然后經(jīng)過存儲管理器確定SDRAM中相應(yīng)的行與列最后讀取具體的數(shù)據(jù)。
如果選擇第二條路:
CPU發(fā)出的地址就可以理解為虛擬地址,經(jīng)過MMU后出來的就可以認(rèn)為是物理地址,然后經(jīng)過存儲管理器確定SDRAM中相應(yīng)的行與列最后讀取具體的數(shù)據(jù)。這里MMU的作用就是把虛擬地址映射為物理地址。

總結(jié):CPU本身不關(guān)心地址是物理地址或是虛擬地址,它只管發(fā)出這個(gè)地址,然后最后讀取數(shù)據(jù)。不關(guān)注這個(gè)過程具體怎么完成的,平時(shí)我們寫程序時(shí)的鏈接地址,在CPU這里并不去區(qū)分什么物理地址還是虛擬地址,在它看來不管是什么都只是一個(gè)地址而已。


虛擬地址(VA,Virtual Address)到物理地址(PA,Physical Address)的轉(zhuǎn)換過程:
這里我們只是簡單說一下,不需要太深究,因?yàn)檫@些都是由MMU中硬件完成的,如果想具體的了解可以參考韋東山老師寫的《嵌入式Linux應(yīng)用開發(fā)完全手冊》。

VA到PA一般有兩種方法:1.用一個(gè)確定的數(shù)學(xué)公式進(jìn)行轉(zhuǎn)換。  2.用表格存儲虛擬地址對應(yīng)的物理地址。這類表格稱為頁表(Page table),頁表由一個(gè)個(gè)條目(Entry)組成,每個(gè)條目存儲了一段虛擬地址對應(yīng)的物理地址及其訪問權(quán)限,或者是下一級頁表的地址。

mips使用的是第一種方法:  VA=f(PA)=0xA0000000+PA,也就是PA=0xA0000000-VA。

我們學(xué)的ARM CPU用的是第二種方法,S3C2410/S3C2440最多會用到兩級頁表:
①如果以段(Section,1MB)的方式進(jìn)行轉(zhuǎn)換時(shí)只用到一級頁表;
②以頁(Page)的方式進(jìn)行轉(zhuǎn)換時(shí)用到兩級頁表。這里的頁的大小有3種:大頁(64KB),小頁(4KB),極小頁(1KB)。條目也稱為“描述符(Descriptor)”,它有:段描述符、大頁描述符、小頁描述符、極小頁描述符,它們保存著段、大頁、小頁、極小頁的起始物理地址;粗頁表描述符、細(xì)頁表描述符,它們保存二級頁表的物理地址。

具體轉(zhuǎn)換過程:
1. 根據(jù)給定的虛擬地址找到一級頁表中的條目。
2. 如果此條目是段描述符,則返回物理地址,轉(zhuǎn)換結(jié)束,否則跳到3。
3. 如果此條目是二級頁表描述符,繼續(xù)利用虛擬地址在此二級頁表中找到下一個(gè)條目。
4. 如果第二個(gè)條目是頁描述符,則返回物理地址,轉(zhuǎn)換結(jié)束。
5. 其它情況出錯(cuò)。

舉個(gè)例子:我們用段的方式進(jìn)行轉(zhuǎn)換,由于ARM CPU是32位的,所以最大尋址范圍為2^32=4GB,也就是虛擬地址表示的范圍為0~4096MB,一個(gè)段為1MB,所以我們用的表格就是4096個(gè)1MB的段組成的,然后一個(gè)段保存著相應(yīng)的起始物理地址。

這里描述通過一級頁表形式的轉(zhuǎn)換過程圖:


“TTB Base”代表一級頁表的地址。它的值存儲在協(xié)處理器CP15的寄存器C2(稱為頁表基址寄存器)。

 

一個(gè)段描述符為4個(gè)字節(jié)(32bit),那么4096個(gè)段占4096*4B=16KB,所以當(dāng)虛擬地址尋址范圍為0~4G時(shí),一個(gè)一級頁表的大小就為16KB。

由上可知一級頁表的地址必須是16KB對齊的,所以[14:0]都是0。0b100 0000 0000 0000=0x4000=16384=16*1024B=16KB。


上圖為一級頁表的描述符格式,低兩位0b10時(shí)表示為段描述符。由于這里我們直說關(guān)于段描述符的相關(guān)概念(也就是上圖中第三個(gè)格式),所以其它的就不說了,具體了解自己可以看書。

[31:21]: 稱為段基址(Section base address)。這個(gè)描述符低20位填充0后就是一塊1MB物理地址空間的起始地址。0b1 0000 0000 0000 0000 0000=0x10000=1048576=1024*1024B=1MB。

綜上:以段的方式進(jìn)行映射時(shí),虛擬地址MVA到物理地址PA的轉(zhuǎn)換過程如下:


1. 虛擬地址MVA。MVA[31:20]表示一級頁表索引,MVA[19:0]表示段內(nèi)陸址索引。

2. 頁表基地址寄存器。

3. 頁表基址寄存器[31:14]和MVA[31:20]組成一個(gè)低2位為0的32位地址,MMU利用這個(gè)地址找到段描述符。

4. 一級頁表中的一個(gè)32bit段描述符。

5. 段描述符的位[31:20]和MVA[19:0]構(gòu)成虛擬地址MVA對應(yīng)的物理地址PA。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    久久精品欧美一区二区三不卡| 国产人妻熟女高跟丝袜| 欧美大胆女人的大胆人体| 在线观看视频成人午夜| 亚洲综合色婷婷七月丁香| 人妻少妇久久中文字幕久久| 一区二区免费视频中文乱码国产| 亚洲av成人一区二区三区在线| 激情亚洲内射一区二区三区| 麻豆精品在线一区二区三区| 欧美精品久久一二三区| 日韩色婷婷综合在线观看| 日韩三极片在线免费播放 | 国产又粗又长又大高潮视频| 欧美午夜不卡在线观看| 美女被后入福利在线观看| 日本少妇三级三级三级| 美女露小粉嫩91精品久久久| 国产又黄又爽又粗视频在线| 太香蕉久久国产精品视频| 狠狠干狠狠操亚洲综合| 国产三级黄片在线免费看| 免费性欧美重口味黄色| 亚洲视频在线观看免费中文字幕| 久久re6热在线视频| 国产又色又粗又黄又爽| 欧美精品一区二区三区白虎| 日韩性生活片免费观看| 黄片在线免费看日韩欧美| 欧美在线观看视频免费不卡| 在线免费视频你懂的观看| 欧美日韩国产综合特黄| 亚洲精品国男人在线视频| 精品一区二区三区中文字幕| 大香蕉久久精品一区二区字幕| 欧美不雅视频午夜福利| 国产精品超碰在线观看| 国产成人在线一区二区三区| 99久只有精品免费视频播放| 久久精品视频就在久久| 亚洲欧美黑人一区二区|