CPU如何訪問內(nèi)存?
MMU(Memory Managemant Unit)
很容易想象,CPU可以用物理地址對內(nèi)存訪問,但是實際上這只發(fā)生在剛開機的階段,在那之后CPU就不再直接與內(nèi)存打交道了,而是用虛擬地址通過使用MMU訪問內(nèi)存。既然虛擬地址與物理地址不一樣,那么MMU是怎么在它們之間是怎么轉(zhuǎn)換的呢?
頁表
我理解MMU是一個查表的裝置,什么表?
頁表。
兩個地址的轉(zhuǎn)換關(guān)系就記錄在頁表中,頁表在哪?
也在內(nèi)存中,MMU知道它在主存什么地方。
地址轉(zhuǎn)換
常見的32位機虛擬地址是32位的,在三級頁表結(jié)構(gòu)下,它們分別有如下含義
- [31:20]是一級索引
指向一級頁表中的一項,共4096項,每一項都指向一個二級頁表 - [19:12]二級索引
指向一級索引指定的一個二級頁表中的一項,共256項,每一項都是一個物理地址的[31:12] - [11:0]頁索引
顧名思義,就是頁內(nèi)的索引,可以定位到字節(jié)
二級頁表項是[31:12],與頁索引[11:0]拼接,就成了物理地址。