最近一直在學(xué)習(xí)內(nèi)存管理,也知道MMU是管理內(nèi)存的映射的邏輯IP,還知道里面有個TLB。
今天剛剛好看到了幾篇前輩的文章,很是不錯,于是這里來一起學(xué)習(xí)一下吧。
PART 一:MMU 架構(gòu)篇
MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬內(nèi)存管理。
其主要功能是將虛擬地址轉(zhuǎn)換為物理地址,同時提供訪問權(quán)限的控制和緩存管理等功能。
放在整個大系統(tǒng)多核架構(gòu)里面,每個處理器內(nèi)置了MMU模塊,MMU模塊包含了TLB和TWU兩個子模塊。
1-宏觀理解
地址空間是一個抽象的概念,由CPU體系架構(gòu)的地址總線決定,一般等同于CPU的尋址范圍、x位處理器中的x。地址空間一般分為 虛擬地址空間 和物理地址空間 。
任何時候,計算機上都存在一個程序能夠訪問的地址集合,我們稱之為地址空間。這個空間的大小由CPU的位數(shù)決定,例如一個32位的CPU,它的地址范圍是0 ~0xFFFFFFFF(4G),而對于一個64位的CPU,它的地址范圍為0 ~ 0xFFFFFFFFFFFFFFFF。
這個空間就是我們的程序能夠產(chǎn)生的地址范圍,我們把這個地址范圍稱為 虛擬地址空間,該空間中的某一個地址我們稱之為虛擬地址。與虛擬地址空間和虛擬地址相對應(yīng)的則是物理地址空間和物理地址,大多數(shù)時候我們的系統(tǒng)所具備的物理地址空間只是虛擬地址空間的一個子集。
舉一個例子,對于一臺內(nèi)存為 256MB的 32bit x86主機來說,它的虛擬地址空間范圍是 0 ~
0xFFFFFFFF(4G),而物理地址空間范圍是 0x000000000 ~ 0x0FFFFFFF(256MB)。
為什么需要這樣的轉(zhuǎn)換呢?其實這個就是現(xiàn)在多進(jìn)程多線程、以及解決內(nèi)存碎片化的途徑。這里就不展開了。
虛擬地址又被簡稱為虛地址,物理地址又被稱為實地址。虛擬地址和物理地址之間的轉(zhuǎn)換,又稱為虛實地址轉(zhuǎn)化。
而這個轉(zhuǎn)換的過程是硬件執(zhí)行的:虛擬地址不是被直接送到內(nèi)存地址總線上,而是送到內(nèi)存管理單元MMU。他由一個或一組芯片組成,一般存在與協(xié)處理器中,其功能是把虛擬地址映射為物理地址。
-
cpu
+關(guān)注
關(guān)注
68文章
10890瀏覽量
212430 -
計算機
+關(guān)注
關(guān)注
19文章
7525瀏覽量
88331 -
內(nèi)存管理
+關(guān)注
關(guān)注
0文章
168瀏覽量
14162 -
MMU
+關(guān)注
關(guān)注
0文章
91瀏覽量
18326
發(fā)布評論請先 登錄
相關(guān)推薦
評論