最近一直在學(xué)習(xí)內(nèi)存管理,也知道MMU是管理內(nèi)存的映射的邏輯IP,還知道里面有個(gè)TLB。
今天剛剛好看到了幾篇前輩的文章,很是不錯(cuò),于是這里來一起學(xué)習(xí)一下吧。
PART 一:MMU 架構(gòu)篇
MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實(shí)現(xiàn)虛擬內(nèi)存管理。
其主要功能是將虛擬地址轉(zhuǎn)換為物理地址,同時(shí)提供訪問權(quán)限的控制和緩存管理等功能。
放在整個(gè)大系統(tǒng)多核架構(gòu)里面,每個(gè)處理器內(nèi)置了MMU模塊,MMU模塊包含了TLB和TWU兩個(gè)子模塊。
1-宏觀理解
地址空間是一個(gè)抽象的概念,由CPU體系架構(gòu)的地址總線決定,一般等同于CPU的尋址范圍、x位處理器中的x。地址空間一般分為 虛擬地址空間 和物理地址空間 。
任何時(shí)候,計(jì)算機(jī)上都存在一個(gè)程序能夠訪問的地址集合,我們稱之為地址空間。這個(gè)空間的大小由CPU的位數(shù)決定,例如一個(gè)32位的CPU,它的地址范圍是0 ~0xFFFFFFFF(4G),而對(duì)于一個(gè)64位的CPU,它的地址范圍為0 ~ 0xFFFFFFFFFFFFFFFF。
這個(gè)空間就是我們的程序能夠產(chǎn)生的地址范圍,我們把這個(gè)地址范圍稱為 虛擬地址空間,該空間中的某一個(gè)地址我們稱之為虛擬地址。與虛擬地址空間和虛擬地址相對(duì)應(yīng)的則是物理地址空間和物理地址,大多數(shù)時(shí)候我們的系統(tǒng)所具備的物理地址空間只是虛擬地址空間的一個(gè)子集。
舉一個(gè)例子,對(duì)于一臺(tái)內(nèi)存為 256MB的 32bit x86主機(jī)來說,它的虛擬地址空間范圍是 0 ~
0xFFFFFFFF(4G),而物理地址空間范圍是 0x000000000 ~ 0x0FFFFFFF(256MB)。
為什么需要這樣的轉(zhuǎn)換呢?其實(shí)這個(gè)就是現(xiàn)在多進(jìn)程多線程、以及解決內(nèi)存碎片化的途徑。這里就不展開了。
虛擬地址又被簡(jiǎn)稱為虛地址,物理地址又被稱為實(shí)地址。虛擬地址和物理地址之間的轉(zhuǎn)換,又稱為虛實(shí)地址轉(zhuǎn)化。
而這個(gè)轉(zhuǎn)換的過程是硬件執(zhí)行的:虛擬地址不是被直接送到內(nèi)存地址總線上,而是送到內(nèi)存管理單元MMU。他由一個(gè)或一組芯片組成,一般存在與協(xié)處理器中,其功能是把虛擬地址映射為物理地址。
-
cpu
+關(guān)注
關(guān)注
68文章
10905瀏覽量
213030 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7540瀏覽量
88644 -
內(nèi)存管理
+關(guān)注
關(guān)注
0文章
168瀏覽量
14190 -
MMU
+關(guān)注
關(guān)注
0文章
91瀏覽量
18370
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
為什么沒有MMU就無法運(yùn)行Linux系統(tǒng)呢?
![為什么沒有<b class='flag-5'>MMU</b>就無法運(yùn)行Linux系統(tǒng)呢?](https://file1.elecfans.com/web2/M00/8E/F8/wKgZomTLC8iAD8WgAAAK3A5EzCY488.jpg)
ARM的內(nèi)存管理(MMU)是如何實(shí)現(xiàn)的?
ARM CoreLink MMU-401系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)
Arm CoreLink MMU?700系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)
ARM CORELINK?MMU-600AE系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)
ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版
ARM 內(nèi)存管理單元MMU詳細(xì)圖解資料
S3C2410內(nèi)存管理單元MMU基礎(chǔ)實(shí)驗(yàn)
ARM存儲(chǔ)管理單元MMU詳解
ARM920T的MMU與Cache介紹
![ARM920T的<b class='flag-5'>MMU</b>與Cache介紹](https://file.elecfans.com/web1/M00/E7/A1/pIYBAGBf8oCAJGPkAAAsl3BsNK8437.jpg)
為什么沒有MMU就無法運(yùn)行Linux系統(tǒng)
![為什么沒有<b class='flag-5'>MMU</b>就無法運(yùn)行Linux系統(tǒng)](https://file1.elecfans.com/web2/M00/82/20/wKgZomREnQiAQfnKAAAK3A5EzCY212.jpg)
MMU內(nèi)存管理單元的工作原理和作用
![<b class='flag-5'>MMU</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b>的工作原理和作用](https://file1.elecfans.com/web2/M00/8E/F8/wKgZomTLC4mAQgduAAAK3A5EzCY662.jpg)
什么是MMU?linux為什么需要MMU?
![什么是<b class='flag-5'>MMU</b>?linux為什么需要<b class='flag-5'>MMU</b>?](https://file1.elecfans.com/web2/M00/A9/23/wKgZomUjc5mAEov9AAAK3A5EzCY572.jpg)
內(nèi)存管理單元的重要功能是什么
![<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b>的重要功能是什么](https://file1.elecfans.com/web2/M00/B1/48/wKgaomVi85KAYpcNAABw4NDzHxQ624.jpg)
評(píng)論