內(nèi)存管理單元MMU(memory management unit)的主要功能是虛擬地址(virtual memory addresses)到物理地址(physical addresses)的轉(zhuǎn)換。除此之外,它還可以實(shí)現(xiàn)內(nèi)存保護(hù)(memory protection)、緩存控制(cache control)、總線仲裁(bus arbitration)以及存儲(chǔ)體切換(bank switching)。


工作機(jī)制

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

CPU將要請(qǐng)求的虛擬地址傳給MMU,然后MMU先在高速緩存TLB(Translation Lookaside Buffer)查找轉(zhuǎn)換關(guān)系,如果找到了相應(yīng)的物理地址則直接訪問(wèn);如果找不到則在地址轉(zhuǎn)換表(Translation Table)里查找計(jì)算。

虛擬地址

現(xiàn)代的內(nèi)存管理單元是以頁(yè)的方式來(lái)分區(qū)虛擬地址空間(the range of addresses used by the processor)的。頁(yè)的大小是2的n次方,通常為幾KB。所以虛擬地址就被分為了兩個(gè)部分:virtual page number和offset

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

頁(yè)表項(xiàng)(page table entry)

上面從虛擬頁(yè)號(hào)在頁(yè)表里找到的存放物理頁(yè)表號(hào)的條目就是頁(yè)表項(xiàng)(PTE)。PTE一般占1個(gè)字長(zhǎng),里面不僅包含了physical page number,還包含了重寫標(biāo)志位(dirty bit)、訪問(wèn)控制位(accessed bit)、允許讀寫的進(jìn)程類型(user/supervisor mode)、是否可以被cached以及映射類型(PTE最后兩位)。

映射

  • 映射方式

        映射方式有兩種,段映射和頁(yè)映射。段映射只用到一級(jí)頁(yè)表,頁(yè)映射用到一級(jí)頁(yè)表和二級(jí)頁(yè)表。
  • 映射粒度

        段映射的映射粒度有兩種,1M section和16M supersection;頁(yè)映射的映射粒度有4K small page、64K large page和過(guò)時(shí)的1K tiny page。

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)