頁(yè)命中、缺頁(yè)
(1)頁(yè)命中
? a) 處理器要對(duì)虛擬地址VA進(jìn)行訪問(wèn)。
? b) MMU的TLB沒(méi)有命中,通過(guò)TWU遍歷主存頁(yè)表中的PTEA(PTE地址)。
? c) 主存向MMU返回PTE。
? d) MMU通過(guò)PTE映射物理地址,并把它傳給高速緩存或主存。
? e) 高速緩存或主存返回物理地址對(duì)應(yīng)的數(shù)據(jù)給處理器。
(2)缺頁(yè)
? a) 處理器要對(duì)虛擬地址VA進(jìn)行訪問(wèn)。
? b) MMU的TLB沒(méi)有命中,通過(guò)TWU遍歷主存頁(yè)表中的PTEA(PTE地址)。
? c) 主存向MMU返回PTE。
? d) PTE中有效位是0,MMU觸發(fā)一次異常,CPU相應(yīng)缺頁(yè)異常,運(yùn)行相應(yīng)的處理程序。
? e) 缺頁(yè)異常處理程序選出物理內(nèi)存中的犧牲頁(yè),若這個(gè)頁(yè)面已經(jīng)被修改,將其換出到EMMC。
? f) 缺頁(yè)異常處理程序從EMMC中加載新的頁(yè)面,并更新內(nèi)存中頁(yè)表的PTE。
? g)缺頁(yè)異常處理程序返回到原來(lái)的進(jìn)程,再次執(zhí)行導(dǎo)致缺頁(yè)的指令。CPU將引起缺頁(yè)異常的虛擬地址重新發(fā)給MMU。由于虛擬頁(yè)面現(xiàn)在緩存在主存中,主存會(huì)將所請(qǐng)求的地址對(duì)應(yīng)的內(nèi)容返回給cache和處理器。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
哪位仁兄知道:MMU的一級(jí)頁(yè)表為什么必須是16K對(duì)齊,最好有計(jì)算公式~~~謝謝?。?!
發(fā)表于 02-14 23:46
剛開(kāi)始學(xué),好多東西都云里霧里的TT為什么在bootloader里要進(jìn)行頁(yè)表初始化然后開(kāi)啟MMU,然后在進(jìn)入內(nèi)核后還要?jiǎng)?chuàng)建頁(yè)表開(kāi)啟MMU?這兩個(gè)有什么不一樣么?s3c2410,bootl
發(fā)表于 05-06 17:25
、4KB和1KB大小地址空間的映射。要實(shí)現(xiàn)從虛擬地址到物理地址的映射,必然會(huì)遇到一個(gè)問(wèn)題,如何找到這個(gè)頁(yè)表。對(duì)于表的查找,要知道這個(gè)表的基地址和偏移地址,在具有MMU功能的處理器中,集成了一個(gè)被稱(chēng)為CP15
發(fā)表于 08-29 11:10
的設(shè)置MMU,可以把16個(gè)虛頁(yè)隱射到8個(gè)頁(yè)框中的任何一個(gè),但是這個(gè)方法并沒(méi)有有效的解決虛擬地址空間比物理地址空間大的問(wèn)題。從上圖中我們可以看到,我們只有8個(gè)頁(yè)框(物理地址),但我們有1
發(fā)表于 07-03 08:19
ARM裸機(jī)1期加強(qiáng)版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */創(chuàng)建頁(yè)表 SDRAM 64M 虛
發(fā)表于 04-18 07:45
( translate table )是實(shí)現(xiàn) MMU 功能不可缺少的一步。頁(yè)表是位于系統(tǒng)的內(nèi)存中,頁(yè)表的每一項(xiàng)對(duì)應(yīng)于一個(gè)虛擬地址到物理地址的映射。每一項(xiàng)的長(zhǎng)度即是一個(gè)字的長(zhǎng)度(在 AR
發(fā)表于 10-23 15:29
眾所周知,MMU的頁(yè)表是由軟件建立在外部?jī)?nèi)存中的。實(shí)際上有兩條硬件路徑需要訪問(wèn)這個(gè)頁(yè)表:1 MMU硬件進(jìn)行page table walk時(shí),
發(fā)表于 10-24 15:45
對(duì)于一個(gè)有MMU的CPU而言,MMU開(kāi)啟后,CPU是這樣尋址的:CPU任何時(shí)候,一切時(shí)候,發(fā)出的地址都是虛擬地址,這個(gè)虛擬地址發(fā)給MMU后,MMU通過(guò)
發(fā)表于 02-02 14:08
?1.1w次閱讀
前面講到過(guò)寫(xiě)時(shí)復(fù)制缺頁(yè)異常(COW),一般用于父子進(jìn)程之間共享頁(yè),而我們會(huì)常見(jiàn)一種缺頁(yè)異常是匿名映射缺頁(yè)異常,今天我們就來(lái)討論下這種缺頁(yè)異常
發(fā)表于 09-09 10:55
?3028次閱讀
既然MMU開(kāi)啟后,硬件會(huì)自動(dòng)的將虛擬地址轉(zhuǎn)換成物理地址,那么還需要我們軟件做什么事情呢?即創(chuàng)建一個(gè)頁(yè)表翻譯都需要做哪些事情呢?或者說(shuō)啟用一個(gè)MMU需要軟件做什么事情呢?
發(fā)表于 04-26 14:37
?4925次閱讀
本文講解Linux內(nèi)核虛擬內(nèi)存管理中的mmu_gather操作,看看它是如何保證刷tlb和釋放物理頁(yè)的順序的,又是如何將更多的頁(yè)面聚集起來(lái)統(tǒng)一釋放的。
發(fā)表于 05-20 14:37
?次閱讀
MMU怎么知道這個(gè)頁(yè)表在內(nèi)存中的具體地址呢? 通常CPU會(huì)提供一個(gè)頁(yè)表基址寄存器給操作系統(tǒng)使用,用于給MMU指示
發(fā)表于 10-08 11:52
?1295次閱讀
當(dāng)CPU訪問(wèn)虛擬地址0的時(shí)候,MMU會(huì)去查上面頁(yè)表的第0行,發(fā)現(xiàn)第0行沒(méi)有命中,于是無(wú)論以何種形式(R讀,W寫(xiě),X執(zhí)行)訪問(wèn),MMU都會(huì)給CPU發(fā)出page fault,CPU自動(dòng)跳到
發(fā)表于 11-09 12:30
?1182次閱讀
1-CPU發(fā)出的虛擬地址 CPU發(fā)出的虛擬地址由兩部分組成:VPN和offset,VPN(virtual page number)是頁(yè)表中的條目number,而offset是指頁(yè)內(nèi)偏移。 最終轉(zhuǎn)換后
發(fā)表于 11-26 15:40
?653次閱讀
空間,也有相應(yīng)的頁(yè)表負(fù)責(zé)虛擬地址到物理地址之間的轉(zhuǎn)換。MMU查詢(xún)的過(guò)程中,用戶(hù)進(jìn)程的一級(jí)頁(yè)表的基址存放在TTBR0。操作系統(tǒng)的內(nèi)核空間公用一塊地址空間,
發(fā)表于 11-26 16:28
?955次閱讀
評(píng)論