www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]轉(zhuǎn)載:http://blog.csdn.net/ipmux/article/details/19167605 MMU即內(nèi)存管理單元(Memory Manage Unit),是一個(gè)與軟件密切相關(guān)的硬件

轉(zhuǎn)載:http://blog.csdn.net/ipmux/article/details/19167605

MMU即內(nèi)存管理單元(Memory Manage Unit),是一個(gè)與軟件密切相關(guān)的硬件部件,也是理解linux等操作系統(tǒng)內(nèi)核機(jī)制的最大障礙之一??梢哉f(shuō),不懂MMU使很多人一直停滯在單片機(jī)與無(wú)OS的時(shí)代。博主之前對(duì)MMU也一直是霧里看花,似懂非懂。最近終于自認(rèn)為云開(kāi)霧散后,回頭總結(jié),感覺(jué)有幾個(gè)概念是阻礙人們理解MMU的元兇。
1)虛擬地址/物理地址
如果處理器沒(méi)有MMU,CPU內(nèi)部執(zhí)行單元產(chǎn)生的內(nèi)存地址信號(hào)將直接通過(guò)地址總線(xiàn)發(fā)送到芯片引腳,被內(nèi)存芯片接收,這就是物理地址(physical address),簡(jiǎn)稱(chēng)PA。英文physical代表物理的接觸,所以PA就是與內(nèi)存芯片physically connected的總線(xiàn)上的信號(hào)。
如果MMU存在且啟用,CPU執(zhí)行單元產(chǎn)生的地址信號(hào)在發(fā)送到內(nèi)存芯片之前將被MMU截獲,這個(gè)地址信號(hào)稱(chēng)為虛擬地址(virtual address),簡(jiǎn)稱(chēng)VA,MMU會(huì)負(fù)責(zé)把VA翻譯成另一個(gè)地址,然后發(fā)到內(nèi)存芯片地址引腳上,即VA映射成PA,如下圖:

所以物理地址①是通過(guò)CPU對(duì)外地址總線(xiàn)②傳給Memory Chip③使用的地址;而虛擬地址④是CPU內(nèi)部執(zhí)行單元⑤產(chǎn)生的,發(fā)送給MMU⑥的地址。硬件上MMU⑥一般封裝于CPU芯片⑦內(nèi)部,所以虛擬地址④一般只存在于CPU⑦內(nèi)部,到了CPU外部地址總線(xiàn)引腳上②的信號(hào)就是MMU轉(zhuǎn)換過(guò)的物理地址①。
軟件上MMU對(duì)用戶(hù)程序不可見(jiàn),在啟用MMU的平臺(tái)上(沒(méi)有MMU不必說(shuō),只有物理地址,不存在虛擬地址),用戶(hù)C程序中變量和函數(shù)背后的數(shù)據(jù)/指令地址等都是虛擬地址,這些虛擬內(nèi)存地址從CPU執(zhí)行單元⑤發(fā)出后,都會(huì)首先被MMU攔截并轉(zhuǎn)換成物理地址,然后再發(fā)送給內(nèi)存。也就是說(shuō)用戶(hù)程序運(yùn)行*pA =100;”這條賦值語(yǔ)句時(shí),假設(shè)debugger顯示指針pA的值為0x30004000(虛擬地址),但此時(shí)通過(guò)硬件工具(如邏輯分析儀)偵測(cè)到的CPU與外存芯片間總線(xiàn)信號(hào)很可能是另外一個(gè)值,如0x8000(物理地址)。當(dāng)然對(duì)一般程序員來(lái)說(shuō),只要上述語(yǔ)句運(yùn)行后debugger顯示0x30004000位置處的內(nèi)存值為100就行了,根本無(wú)需關(guān)心pA的物理地址是多少。但進(jìn)行OS移植或驅(qū)動(dòng)開(kāi)發(fā)的系統(tǒng)程序員不同,他們必須清楚軟件如何在幕后輔助硬件MMU完成地址轉(zhuǎn)換。
2)頁(yè)/頁(yè)幀/頁(yè)表/頁(yè)表項(xiàng)(PTE)
這幾個(gè)頁(yè)概念也噎倒了不少人,這里澄清下。MMU是負(fù)責(zé)把虛擬地址映射為物理地址,但凡”映射”都要解決兩個(gè)問(wèn)題:映射的最小單位(粒度)和映射的規(guī)則。
MMU中VA到PA映射的最小單位稱(chēng)為頁(yè)(Page),映射的最低粒度是單個(gè)虛擬頁(yè)到物理頁(yè),頁(yè)大小通常是4K,即一次最少要把4K大小的VA頁(yè)塊整體映射到4K的PA頁(yè)塊(從0開(kāi)始4K對(duì)齊劃分頁(yè)塊),頁(yè)內(nèi)偏移不變,如VA的一頁(yè)0x30004000~0x30004fff被映射到PA的一頁(yè) 0x00008000~0x00008fff,當(dāng)CPU執(zhí)行單元訪(fǎng)問(wèn)虛擬地址0x30004008,實(shí)際訪(fǎng)問(wèn)的物理地址是0x00008008(0x30004008和0x00008008分別位于虛實(shí)兩套地址空間,互不相干,不存在重疊和沖突)。以頁(yè)為最小單位,就是不能把VA中某一頁(yè)劃分成幾小塊分別映射到不同PA,也不能把VA中屬于不同頁(yè)的碎塊映射到PA某一頁(yè)的不同部分,必須頁(yè)對(duì)頁(yè)整體映射。
頁(yè)幀(Page Frame)是指物理內(nèi)存中的一頁(yè)內(nèi)存,MMU虛實(shí)地址映射就是尋找物理頁(yè)幀的過(guò)程,對(duì)這個(gè)概念了解就可以了。
MMU軟件配置的核心是頁(yè)表(Page Table),它描述MMU的映射規(guī)則,即虛擬內(nèi)存哪(幾)個(gè)頁(yè)映射到物理內(nèi)存哪(幾)個(gè)頁(yè)幀。頁(yè)表由一條條代表映射規(guī)則的記錄組成,每一條稱(chēng)為一個(gè)頁(yè)表?xiàng)l目(Page Table Entry,即PTE),整個(gè)頁(yè)表保存在片外內(nèi)存,MMU通過(guò)查找頁(yè)表確定一個(gè)VA應(yīng)該映射到什么PA,以及是否有權(quán)限映射。
但如果MMU每次地址轉(zhuǎn)換都到位于外部?jī)?nèi)存的頁(yè)表上查找PTE,轉(zhuǎn)換速度就會(huì)大大降低,于是出現(xiàn)了
3)TLB
TLB (Translation Lookaside Buffers)即轉(zhuǎn)換快表,又簡(jiǎn)稱(chēng)快表,可以理解為MMU內(nèi)部專(zhuān)用的存放頁(yè)表的cache,保存著最近使用的PTE乃至全部頁(yè)表。MMU接收到虛擬地址后,首先在TLB中查找,如果找到該VA對(duì)應(yīng)的PTE就直接轉(zhuǎn)換,找不到再去外存頁(yè)表查找,并置換進(jìn)TLB。TLB屬于片上SRAM,訪(fǎng)問(wèn)速度快,通過(guò)TLB緩存PTE可以節(jié)省MMU訪(fǎng)問(wèn)外存頁(yè)表的時(shí)間,從而加速虛實(shí)地址轉(zhuǎn)換。TLB和CPU cache的工作原理一樣,只是TLB專(zhuān)用于為MMU緩存頁(yè)表。
4)MMU的內(nèi)存保護(hù)功能
既然所有發(fā)往內(nèi)存的地址信號(hào)都要經(jīng)過(guò)MMU處理,那讓它只單單做地址轉(zhuǎn)換,豈不是浪費(fèi)了這個(gè)特意安插的轉(zhuǎn)換層?顯然它有能力對(duì)虛地址訪(fǎng)問(wèn)做更多的限定(就像路由器轉(zhuǎn)發(fā)網(wǎng)絡(luò)包的同時(shí)還能過(guò)濾各種非法訪(fǎng)問(wèn)),比如內(nèi)存保護(hù)??梢栽赑TE條目中預(yù)留出幾個(gè)比特,用于設(shè)置訪(fǎng)問(wèn)權(quán)限的屬性,如禁止訪(fǎng)問(wèn)、可讀、可寫(xiě)和可執(zhí)行等。設(shè)好后,CPU訪(fǎng)問(wèn)一個(gè)VA時(shí),MMU找到頁(yè)表中對(duì)應(yīng)PTE,把指令的權(quán)限需求與該P(yáng)TE中的限定條件做比對(duì),若符合要求就把VA轉(zhuǎn)換成PA,否則不允許訪(fǎng)問(wèn),并產(chǎn)生異常。
5)多級(jí)頁(yè)表
虛擬地址由頁(yè)號(hào)和頁(yè)內(nèi)偏移組成。什么東東呢?
前面說(shuō)過(guò)MMU映射以頁(yè)為最小單位,假設(shè)頁(yè)大小為4K(212),那么無(wú)論頁(yè)表怎樣設(shè)置,虛擬地址后12比特與MMU映射后的物理地址后12比特總是相同,這不變的比特位就是頁(yè)內(nèi)偏移。為什么不變?拜托,把搭積木想象成一種映射,不管你怎么搭,你也改變不了每塊積木內(nèi)部的原子排列吧。所謂以頁(yè)為最小單位就是保持一部分不變作為最小粒度。
頁(yè)號(hào)就更有故事了,一個(gè)32bits虛擬地址,可以劃分為220個(gè)內(nèi)存頁(yè),如果都以頁(yè)為單位和物理頁(yè)幀隨意映射,頁(yè)表的空間占用就是220*sizeof(PTE)*進(jìn)程數(shù)(每個(gè)進(jìn)程都要有自己的頁(yè)表),PTE一般占4字節(jié),即每進(jìn)程4M,這對(duì)空間占用和MMU查詢(xún)速度都很不利。
問(wèn)題是實(shí)際應(yīng)用中不需要每次都按最小粒度的頁(yè)來(lái)映射,很多時(shí)候可以映射更大的內(nèi)存塊。因此最好采用變化的映射粒度,既靈活又可以減小頁(yè)表空間。具體說(shuō)可以把20bits的頁(yè)號(hào)再劃分為幾部分(如下圖linux的3級(jí)劃分)

簡(jiǎn)單說(shuō)每次MMU根據(jù)虛擬地址查詢(xún)頁(yè)表都是一級(jí)級(jí)進(jìn)行,先根據(jù)PGD的值查詢(xún),如果查到PGD的匹配,但后續(xù)PMD和PTE沒(méi)有,就以2(offset+pte+pmd)=1M為粒度進(jìn)行映射,后20bits全部是塊內(nèi)偏移,與物理地址相同。
6)操作系統(tǒng)和MMU
實(shí)際上MMU是為滿(mǎn)足操作系統(tǒng)越來(lái)越復(fù)雜的內(nèi)存管理而產(chǎn)生的。OS和MMU的關(guān)系簡(jiǎn)單說(shuō):
a.系統(tǒng)初始化代碼會(huì)在內(nèi)存中生成頁(yè)表,然后把頁(yè)表地址設(shè)置給MMU對(duì)應(yīng)寄存器,使MMU知道頁(yè)表在物理內(nèi)存中的什么位置,以便在需要時(shí)進(jìn)行查找。之后通過(guò)專(zhuān)用指令啟動(dòng)MMU,以此為分界,之后程序中所有內(nèi)存地址都變成虛地址,MMU硬件開(kāi)始自動(dòng)完成查表和虛實(shí)地址轉(zhuǎn)換。
b.OS初始化后期,創(chuàng)建第一個(gè)用戶(hù)進(jìn)程,這個(gè)過(guò)程中也需要?jiǎng)?chuàng)建頁(yè)表,把其地址賦給進(jìn)程結(jié)構(gòu)體中某指針成員變量。即每個(gè)進(jìn)程都要有獨(dú)立的頁(yè)表。
c.用戶(hù)創(chuàng)建新進(jìn)程時(shí),子進(jìn)程拷貝一份父進(jìn)程的頁(yè)表,之后隨著程序運(yùn)行,頁(yè)表內(nèi)容逐漸更新變化。比較復(fù)雜了,幾句講不清楚,不多說(shuō)了哈,有時(shí)間講linux的話(huà)再說(shuō)吧

總結(jié):
(1)當(dāng)存在mmu時(shí),存在兩種地址,物理地址和虛擬地址
(2)虛擬地址的大小由CPU的位數(shù)決定
(3)對(duì)用戶(hù)而言,操作的地址都是虛擬地址
(4)虛擬地址在從cpu發(fā)到外部地址總線(xiàn)上時(shí),會(huì)先被mmu截獲,mmu經(jīng)過(guò)映射后產(chǎn)生物理地址,再發(fā)送到外部的地址總線(xiàn)上
(5)MMU得到虛擬地址后先在TLB內(nèi)查找,若沒(méi)找到匹配的PTE條目就到外部頁(yè)表查詢(xún),并置換進(jìn)TLB;根據(jù)PTE條目中對(duì)訪(fǎng)問(wèn)權(quán)限的限定檢查該條VA指令是否符合,若不符合則不繼續(xù),并拋出exception異常;符合后根據(jù)VA的地址分段查詢(xún)頁(yè)表,保持offset(廣義)不變,組合出物理地址,發(fā)送出去。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉