摘要: 本文主要對ARM64內(nèi)存管理相關(guān)知識進行介紹。
關(guān)鍵字:Armv8、體系結(jié)構(gòu)、ARM64內(nèi)存管理、頁表
1. Arm64內(nèi)存管理組成
Arm64處理器內(nèi)核的內(nèi)存管理單元(Memory Management Unit,MMU)包括轉(zhuǎn)換旁路緩沖(Translation Lookaside Buffer, TLB)和表遍歷單元(Table Walk Unit, TWU)。
MMU的工作職責是把輸入的虛擬地址翻譯成對應的物理地址及相應的頁表屬性和內(nèi)存訪問權(quán)限等信息。
TWU負責完成查表過程,TLB用于緩存頁表轉(zhuǎn)換的結(jié)果,從而縮短頁表查詢的時間。
進程空間又分為內(nèi)核空間(kernel space)和用戶空間(user space),無論是內(nèi)核空間還是用戶空間都可以通過處理器提供的頁表機制映射到實際的物理地址。
在對稱多系統(tǒng)(Symmetric Multi-Processor,SMP)中,每個處理器內(nèi)核內(nèi)置了MMU和TLB硬件單元。例如,CPU0和CPU1共享物理內(nèi)存,也共享同一份頁表,當一個CPU更改了頁表項時,需要使用BBM(Break Before Make)機制來保證其他CPU能訪問正確和有效的TLB。
2. AArch64頁表機制
在AArch64體系結(jié)構(gòu)中,以48位地址總線位寬為例,虛擬地址(VA)被劃分為兩個空間,每個空間最多支持256TB.
- 低位地址空間0x0000 0000 0000 0000 - 0x0000 FFFF FFFF FFFF;
- 高位地址空間0xFFFF 0000 0000 0000 - 0xFFFF FFFF FFFF FFFF;
在AArch64體系結(jié)構(gòu)中的頁表支持如下特性:
- 最多可以支持4級頁表。
- 輸入地址的最大有效位寬為48位。
- 輸出地址的最大有效位寬為48位。
- 翻譯的頁面粒度可以是4KB、16KB或64KB。
處理器查詢頁表的過程如下:
- 根據(jù)VA[63]選擇TTBR0/1;當VA[63]=0選擇TTBR0,否則選擇TTBR1;
- VA[47:39]作為L0索引,L0頁表有512個頁表項。
- VA[38:30]作為L1索引,L1頁表有512個頁表項。
- VA[29:21]作為L2索引,L2頁表有512個頁表項。
- VA[20:12]作為L3索引,L3頁表有512個頁表項。
- L3頁表項存放4K頁面物理基地址,再加上VA[11:0]構(gòu)成全部物理地址。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關(guān)于億道電子
億道電子技術(shù)有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內(nèi)資深的研發(fā)工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業(yè)客戶提供研發(fā)、設(shè)計、管理過程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產(chǎn)品設(shè)計周期,提升產(chǎn)品可靠性。
20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰(zhàn)略合作伙伴關(guān)系,并作為他們在中國區(qū)的主要分銷合作伙伴服務(wù)了數(shù)千家中國本土客戶,為客戶提供從芯片級開發(fā)工具、EDA 設(shè)計工具、軟件編譯以及測試工具、結(jié)構(gòu)設(shè)計工具、仿真工具、電氣設(shè)計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經(jīng)驗積累,真正的幫助客戶實現(xiàn)了讓研發(fā)更簡單、更可靠、更高效的目標。
歡迎關(guān)注“億道電子”公眾號
了解更多研發(fā)工具軟件知識