日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹CPU與cache之間的MMU的組成與工作原理

Linelayout ? 來(lái)源:黑客與攝影師 ? 2023-03-06 15:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1, 介紹

前面的文章《一文搞懂Cortex-A77(ARMv8架構(gòu))工作原理》,《一文搞懂cpu cache工作原理》介紹CPU、cache的組成與工作原理,這篇文章將介紹CPU與cache之間的MMU的組成與工作原理。通過(guò)本文可以了解CPU訪問(wèn)的虛擬地址是怎么轉(zhuǎn)換成物理地址,然后通過(guò)物理地址在cache、主存或者EMMC中獲取相應(yīng)的數(shù)據(jù)。

早期的內(nèi)存是比較小的,一般是幾十k,不過(guò)相應(yīng)的程序也是比較小的,這時(shí)程序可以直接加載到內(nèi)存中運(yùn)行。后來(lái)為了支持多個(gè)程序的并行,內(nèi)存中出現(xiàn)了固定分區(qū),在編譯階段將不同程序,劃分在不同的內(nèi)存區(qū)域上。這種方式存在不少問(wèn)題:一是內(nèi)存分區(qū)大小與程序大小要匹配,二是地址空間無(wú)法動(dòng)態(tài)的增長(zhǎng)。于是內(nèi)存動(dòng)態(tài)分區(qū)思想便誕生了,內(nèi)存上線劃出一塊區(qū)域給操作系統(tǒng),然后剩余的內(nèi)存空間給用戶進(jìn)程使用,這樣用戶程序所使用的內(nèi)存空間,跟隨程序大小及數(shù)目進(jìn)行變動(dòng)。

不論是靜態(tài)分析,還是動(dòng)態(tài)分區(qū),都存在一些問(wèn)題:進(jìn)程地址空間安全問(wèn)題、內(nèi)存使用效率低。為了能夠讓多程序安全、高效地并行運(yùn)行,物理內(nèi)存中需要存放多個(gè)程序的代碼及數(shù)據(jù),這時(shí)虛擬內(nèi)存便誕生了。不得不說(shuō)虛擬內(nèi)存是一個(gè)偉大的發(fā)明,一方面它讓每個(gè)程序認(rèn)為自己是獨(dú)自、連續(xù)的使用內(nèi)存,另一方面,每個(gè)程序之間的內(nèi)存形成了安全隔離,避免程序破壞彼此的內(nèi)存。

后來(lái)隨著軟件的快速發(fā)展,一個(gè)程序的大小變得很大,這時(shí)物理內(nèi)存大小跟不上程序大小增加的速度。這樣便不能將整個(gè)程序加載到物理內(nèi)存中,一是物理內(nèi)存沒(méi)有這么大,二是如果將整個(gè)程序加載到內(nèi)存,為了多程序并行,就需要將大量的數(shù)據(jù)及代碼換入、換出,這導(dǎo)致程序運(yùn)行效率低下。

虛擬內(nèi)存并沒(méi)解決高效使用內(nèi)存的問(wèn)題,好在程序運(yùn)行遵循時(shí)間、空間局部性原理,進(jìn)而出現(xiàn)了分頁(yè)機(jī)制。分頁(yè)機(jī)制從根本上解決了高效使用物理內(nèi)存的問(wèn)題。每次只需要將幾頁(yè)的代碼、數(shù)據(jù)從磁盤(pán)中加載到內(nèi)存,程序就能正常運(yùn)行。當(dāng)程序運(yùn)行的過(guò)程中,需要新的代碼、數(shù)據(jù)會(huì)產(chǎn)生缺頁(yè)異常,這些代碼、數(shù)據(jù)就會(huì)從磁盤(pán)加載到內(nèi)存,然后程序從異常恢復(fù)正常運(yùn)行。

對(duì)于支持虛擬內(nèi)存,分頁(yè)機(jī)制的系統(tǒng),處理器直接尋址虛擬地址,這個(gè)地址不會(huì)直接發(fā)給內(nèi)存控制器,而是先發(fā)給內(nèi)存管理單元(Memory Manager Unit,MMU)。MMU就是負(fù)責(zé)將虛擬地址轉(zhuǎn)換和翻譯成物理地址的一個(gè)硬件模塊,其實(shí)MMU所做的事,完全可以通過(guò)CPU來(lái)實(shí)現(xiàn)。為啥還要一個(gè)MMU硬件模塊呢?就是為了提升虛擬地址到物理地址轉(zhuǎn)換的速度,減少轉(zhuǎn)換所消耗的時(shí)間。

MMU包含兩個(gè)模塊TLB(Translation Lookaside Buffer)和TWU(Table Walk Unit)。TLB是一個(gè)高速緩存,用于緩存頁(yè)表轉(zhuǎn)換的結(jié)果,從而縮短頁(yè)表查詢的時(shí)間。TWU是一個(gè)頁(yè)表遍歷模塊,頁(yè)表是由操作系統(tǒng)維護(hù)在物理內(nèi)存中,但是頁(yè)表的遍歷查詢是由TWU完成的,這樣減少對(duì)CPU資源的消耗。

虛擬內(nèi)存及分頁(yè)機(jī)制的出現(xiàn),解決了進(jìn)程地址空間安全性的問(wèn)題和內(nèi)存使用效率低的問(wèn)題,但是也引入了系統(tǒng)性能變差的問(wèn)題。本來(lái)CPU可以直接通過(guò)訪存執(zhí)行程序,但是現(xiàn)在引入了虛擬地址到物理地址的轉(zhuǎn)換。MMU硬件模塊的出現(xiàn),就是為了解決這個(gè)性能問(wèn)題。因此,幾G運(yùn)行內(nèi)存的電腦,可以并行運(yùn)行幾十G的多程序,讓你在聽(tīng)歌的同時(shí),能夠并行處理編輯文檔,下載電影,收發(fā)郵件等。

2, 框架

2.1 內(nèi)存管理體系結(jié)構(gòu)

cca00c42-bbda-11ed-bfe3-dac502259ad0.png

在SMP(Symmetric Multi Process,對(duì)稱多處理器)系統(tǒng)中,每個(gè)處理器內(nèi)置了MMU模塊,MMU模塊包含了TLB和TWU兩個(gè)子模塊。TLB是一個(gè)高速緩存,用于緩存虛擬地址到物理地址的轉(zhuǎn)換結(jié)果。頁(yè)表的查詢過(guò)程是由TWU硬件自動(dòng)完成的,但是頁(yè)表的維護(hù)是需要操作系統(tǒng)實(shí)現(xiàn)的,頁(yè)表存放在主存中。

頁(yè)表的查詢是一個(gè)耗時(shí)的過(guò)程,理想情況下,TLB命中,可以從中直接得到虛擬地址對(duì)應(yīng)的物理地址。當(dāng)TLB未命中的時(shí)候,MMU才會(huì)通過(guò)TWU查詢頁(yè)表,從而翻譯虛擬地址得到物理地址。得到物理地址后,首先要查詢?cè)撐锢淼刂返膬?nèi)容是否存在于cache中,若cache命中,則直接取出物理地址對(duì)應(yīng)的內(nèi)容返回給處理器。

若cache沒(méi)有命中,會(huì)進(jìn)一步訪問(wèn)主存獲取相應(yīng)的內(nèi)容,然后回寫(xiě)到cache,并返回給處理器。如果沒(méi)能在頁(yè)表中查詢到虛擬地址對(duì)應(yīng)的物理地址,則會(huì)觸發(fā)一個(gè)與MMU相關(guān)的缺頁(yè)異常,在異常處理的過(guò)程中,會(huì)將EMMC中相關(guān)的數(shù)據(jù)加載到主存,然后建立相應(yīng)的頁(yè)表,然后將物理地址對(duì)應(yīng)的內(nèi)容返回給cache及處理器。

2.2 MMU相關(guān)的基本概念

(1)虛擬地址相關(guān)基本概念

虛擬內(nèi)存(Virtual Memory,VM):為每個(gè)進(jìn)程提供了一致的、連續(xù)的、私有的內(nèi)存空間,簡(jiǎn)化了內(nèi)存管理。將主存看成是一個(gè)存儲(chǔ)在磁盤(pán)上的地址空間的高速緩存,當(dāng)運(yùn)行多個(gè)進(jìn)程或者一個(gè)進(jìn)程需要更多的空間時(shí),主存顯然是不夠用的,這時(shí)需要更大、更便宜的磁盤(pán)保存一部分?jǐn)?shù)據(jù)。

虛擬地址空間(Virtual Address Space,VAS):每個(gè)進(jìn)程獨(dú)有。

虛擬頁(yè)(Virtual Page,VP):把虛擬內(nèi)存按照頁(yè)表大小進(jìn)行劃分。

虛擬地址(Virtual Address,VA):處理器看到的地址。

虛擬頁(yè)號(hào)(Virtual Page Number,VPN):用于定位頁(yè)表的PTE。

(2)物理地址相關(guān)的基本概念

物理內(nèi)存(Physical Memory,PM):主存上能夠使用的物理空間。

物理頁(yè)(Physical Page):把物理內(nèi)存按照頁(yè)表的大小進(jìn)行劃分。

物理地址(Physical Address,PA):物理內(nèi)存劃分很多塊,通過(guò)物理內(nèi)存進(jìn)行定位。

物理頁(yè)號(hào)(Physical Page Number,PPN):定位物理內(nèi)存中塊的位置。

(3)頁(yè)表相關(guān)的基本概念

頁(yè)表(Page Tabel):虛擬地址與物理地址映射表的集合。

頁(yè)表?xiàng)l目(Page Table Entry,PTE):虛擬地址與獨(dú)立地址具體對(duì)應(yīng)的記錄。

頁(yè)全局目錄(Page Global Directory,PGD):多級(jí)頁(yè)表中的最高一級(jí)。

頁(yè)上級(jí)目錄(Page Upper Directory,PUD):多級(jí)頁(yè)表中的次高一級(jí)。

頁(yè)中間目錄(Page Middle Directory,PMD):多級(jí)頁(yè)表中的一級(jí)。

2.3 頁(yè)命中、缺頁(yè)

(1)頁(yè)命中

ccb37f5c-bbda-11ed-bfe3-dac502259ad0.png

a) 處理器要對(duì)虛擬地址VA進(jìn)行訪問(wèn)。 b) MMU的TLB沒(méi)有命中,通過(guò)TWU遍歷主存頁(yè)表中的PTE地址。 c) 主存向MMU返回PTE。 d) MMU通過(guò)PTE映射物理地址,并把它傳給高速緩存或主存。 e) 高速緩存或主存返回物理地址對(duì)應(yīng)的數(shù)據(jù)給處理器。

(2)缺頁(yè)

ccc1305c-bbda-11ed-bfe3-dac502259ad0.png

a) 處理器要對(duì)虛擬地址VA進(jìn)行訪問(wèn)。 b) MMU的TLB沒(méi)有命中,通過(guò)TWU遍歷主存頁(yè)表中的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和處理器。

2.4 多級(jí)頁(yè)表映射過(guò)程

物理頁(yè)面大小一級(jí)地址總線寬度不同,頁(yè)表的級(jí)數(shù)也不同。以AArch64運(yùn)行狀態(tài),4KB大小物理頁(yè)面,48位地址寬度為例,頁(yè)表映射的查詢過(guò)程如圖:

ccd37adc-bbda-11ed-bfe3-dac502259ad0.png

對(duì)于多任務(wù)操作系統(tǒng),每個(gè)用戶進(jìn)程都擁有獨(dú)立的進(jìn)程地址空間,也有相應(yīng)的頁(yè)表負(fù)責(zé)虛擬地址到物理地址之間的轉(zhuǎn)換。MMU查詢的過(guò)程中,用戶進(jìn)程的一級(jí)頁(yè)表的基址存放在TTBR0。操作系統(tǒng)的內(nèi)核空間公用一塊地址空間,MMU查詢的過(guò)程中,內(nèi)核空間的一級(jí)頁(yè)表基址存放在TTBR1。

當(dāng)TLB未命中時(shí),處理器查詢頁(yè)表的過(guò)程如下:

處理器根據(jù)虛擬地址第63位,來(lái)選擇使用TTBR0或者TTBR1。當(dāng)VA[63]為0時(shí),選擇TTBR0,TTBR中存放著L0頁(yè)表的基址。

處理器以VA[47:39]作為L(zhǎng)0的索引,在L0頁(yè)表中查找頁(yè)表項(xiàng),L0頁(yè)表有512個(gè)頁(yè)表項(xiàng)。

L0頁(yè)表的頁(yè)表項(xiàng)中存放著L1頁(yè)表的物理基址。處理器以VA[38:30]作為L(zhǎng)1索引,在L1頁(yè)表中找到相應(yīng)的頁(yè)表項(xiàng),L1頁(yè)表中有512個(gè)頁(yè)表項(xiàng)。

L1頁(yè)表的頁(yè)表項(xiàng)中存放著L2頁(yè)表的物理基址。處理器以VA[29:21]作為L(zhǎng)2索引,在L2頁(yè)表中找到相應(yīng)的頁(yè)表項(xiàng),L2頁(yè)表中有512個(gè)頁(yè)表項(xiàng)。

L2頁(yè)表的頁(yè)表項(xiàng)中存放著L3頁(yè)表的物理基址。處理器以VA[20:12]作為L(zhǎng)1索引,在L3頁(yè)表中找到相應(yīng)的頁(yè)表項(xiàng),L3頁(yè)表中有512個(gè)頁(yè)表項(xiàng)。

L3頁(yè)表的頁(yè)表項(xiàng)里,存放著4KB頁(yè)面的物理基址,然后加上VA[11:0],這樣就構(gòu)成了物理地址,至此處理器完成了一次虛擬地址到物理地址的查詢與翻譯的工作。






審核編輯:劉清

聲明:本文內(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)注

    關(guān)注

    68

    文章

    20343

    瀏覽量

    255359
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    135

    文章

    9596

    瀏覽量

    393836
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    20969
  • TLB電路
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5417
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    19293

原文標(biāo)題:一文搞懂MMU工作原理

文章出處:【微信號(hào):IC大家談,微信公眾號(hào):IC大家談】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式中ARM的MMUCache機(jī)制

    Cache是高性能CPU解決總線訪問(wèn)速度瓶頸的方法,然而它的使用卻是需要權(quán)衡的,因?yàn)榫彺姹旧淼膭?dòng)作,如塊拷貝和替換等,也是很消耗CPU時(shí)間的。MMU的重要性勿庸置疑,ARM920T(和
    發(fā)表于 08-19 22:42

    處理器在讀內(nèi)存的過(guò)程中,CPU核、cache、MMU如何協(xié)同工作

    處理器中斷處理的過(guò)程是怎樣的?處理器在讀內(nèi)存的過(guò)程中,CPU核、cacheMMU如何協(xié)同工作?
    發(fā)表于 10-18 08:57

    ARM920T的高速緩沖存儲(chǔ)器cacheMMU簡(jiǎn)析

    一、cache分類及應(yīng)用場(chǎng)合cache是內(nèi)存和CPU之間的高速緩沖存儲(chǔ)器,其分為icache(指令緩存)和dcache(數(shù)據(jù)緩存)。如果開(kāi)啟了cac
    發(fā)表于 05-11 17:43

    Cache工作原理

    Cache工作原理:Cache工作原理是基于程序訪問(wèn)的局部性。對(duì)大量典型程序運(yùn)行情況的分析結(jié)果表明,在一個(gè)較短的時(shí)間間隔內(nèi),由程序產(chǎn)生的地址往往集中在存儲(chǔ)器邏輯地址空
    發(fā)表于 09-19 07:48 ?13次下載

    手機(jī)的組成工作原理

    手機(jī)的組成工作原理介紹,感興趣的可以下載看看。
    發(fā)表于 11-09 16:24 ?0次下載

    Buffer和Cache之間區(qū)別是什么?

    cpu在執(zhí)行程序所用的指令和讀數(shù)據(jù)都是針對(duì)內(nèi)存的,也就是從內(nèi)存中取得的。由于內(nèi)存讀寫(xiě)速度慢,為了提高cpu和內(nèi)存之間數(shù)據(jù)交換的速度,在cpu和內(nèi)存
    的頭像 發(fā)表于 04-02 10:35 ?7253次閱讀

    cache結(jié)構(gòu)與工作原理

    更詳細(xì)的講,cache的結(jié)構(gòu)其實(shí)和內(nèi)存的結(jié)構(gòu)類似,也包含地址和內(nèi)容,只是cache的內(nèi)容除了存的數(shù)據(jù)(data)之外,還包含存的數(shù)據(jù)的物理內(nèi)存的地址信息(tag),因?yàn)?b class='flag-5'>CPU發(fā)出的尋址信息都是針對(duì)
    發(fā)表于 06-03 14:24 ?1.3w次閱讀
    <b class='flag-5'>cache</b>結(jié)構(gòu)與<b class='flag-5'>工作原理</b>

    MMU工作原理梳理

    本文從內(nèi)存管理的發(fā)展歷程角度層層遞進(jìn),介紹 MMU 的誕生背景,工作機(jī)制。而忽略了具體處理器的具體實(shí)現(xiàn)細(xì)節(jié),將 MMU工作原理從概念上比
    的頭像 發(fā)表于 12-17 16:13 ?1.5w次閱讀
    <b class='flag-5'>MMU</b>的<b class='flag-5'>工作原理</b>梳理

    ARM920T的MMUCache介紹

    CPU通過(guò)地址來(lái)訪問(wèn)內(nèi)存中的單元,地址有虛擬地址和物理地址之分,如果CPU沒(méi)有MMU(Memory Management Unit,內(nèi)存管理單元),或者有MMU但沒(méi)有啟用,
    發(fā)表于 03-28 11:05 ?14次下載
    ARM920T的<b class='flag-5'>MMU</b>與<b class='flag-5'>Cache</b><b class='flag-5'>介紹</b>

    CPU設(shè)計(jì)之Cache存儲(chǔ)器

    Cache存儲(chǔ)器也被稱為高速緩沖存儲(chǔ)器,位于CPU和主存儲(chǔ)器之間。之所以在CPU和主存之間要加cache
    的頭像 發(fā)表于 03-21 14:34 ?2465次閱讀
    <b class='flag-5'>CPU</b>設(shè)計(jì)之<b class='flag-5'>Cache</b>存儲(chǔ)器

    MMU內(nèi)存管理單元的工作原理和作用

    MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實(shí)現(xiàn)虛擬內(nèi)存管理。
    的頭像 發(fā)表于 08-03 10:03 ?4656次閱讀
    <b class='flag-5'>MMU</b>內(nèi)存管理單元的<b class='flag-5'>工作原理</b>和作用

    Cache工作原理講解 Cache寫(xiě)入方式原理簡(jiǎn)介

    Cache是位于CPU與主存儲(chǔ)器即DRAM(Dynamic RAM,動(dòng)態(tài)存儲(chǔ)器)之間的少量超高速靜態(tài)存儲(chǔ)器SRAM(Static RAM),它是為了解決CPU與主存
    的頭像 發(fā)表于 10-17 10:37 ?2137次閱讀
    <b class='flag-5'>Cache</b><b class='flag-5'>工作原理</b>講解 <b class='flag-5'>Cache</b>寫(xiě)入方式原理簡(jiǎn)介

    Cache工作原理是什么

    具有Cache的計(jì)算機(jī),當(dāng)CPU需要進(jìn)行存儲(chǔ)器存取時(shí),首先檢查所需數(shù)據(jù)是否在Cache中。如果存在,則可以直接存取其中的數(shù)據(jù)而不必插入任何等待狀態(tài),這是最佳情況,稱為高速命中; 當(dāng)CPU
    的頭像 發(fā)表于 10-31 11:34 ?2198次閱讀
    <b class='flag-5'>Cache</b><b class='flag-5'>工作原理</b>是什么

    MMU原理:CPU是如何訪問(wèn)到內(nèi)存的?

    當(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,
    發(fā)表于 11-09 12:30 ?2078次閱讀
    <b class='flag-5'>MMU</b>原理:<b class='flag-5'>CPU</b>是如何訪問(wèn)到內(nèi)存的?

    什么是CPU緩存?它有哪些作用?

    CPU緩存(Cache Memory)是計(jì)算機(jī)系統(tǒng)中一個(gè)至關(guān)重要的組成部分,它位于CPU與內(nèi)存之間,作為兩者
    的頭像 發(fā)表于 08-22 14:54 ?9460次閱讀
    平邑县| 康马县| 鄂尔多斯市| 柞水县| 肇源县| 云林县| 虎林市| 叶城县| 石嘴山市| 平乐县| 河曲县| 拉萨市| 莱西市| 阳朔县| 恩平市| 墨竹工卡县| 清远市| 开封县| 奉贤区| 班戈县| 肇州县| 白银市| 绥棱县| 南宁市| 子洲县| 青州市| 习水县| 黄骅市| 隆昌县| 南川市| 多伦县| 大竹县| 乳源| 滕州市| 台北县| 汤原县| 龙山县| 习水县| 女性| 凌云县| 平乡县|