天天看點

imx8qm學習筆記之memory map

實體記憶體

從系統管理者的角度來看,實體記憶體映射如下。系統記憶體映射由AP處理器看到。所有其他的都将引用系統記憶體映射,并顯示為子集。

系統中有幾個主要的位址映射:

•系統記憶體映射,在AP核中也被視為相同

•DAP記憶體映射,與系統記憶體映射極為相似。

•系統控制器記憶體映射。這是從M$core形成系統控制器的記憶體映射。它是一個獨立的32位映射,它将視窗包含到整個系統記憶體映射的各個部分。

•M4記憶體影射圖(2),實際上有2個,它們與系統控制器地圖相似。每個M4核心都看到自己的本地位址空間,并且可以通過幾個映射寄存器來檢視系統

大多數裝置通常通過一組MMU轉換表通路實體地圖。這些都是其他地方描述。本章隻關注實體位址(即所有位址轉換的最終輸出)

這樣映射的目的是遵循ARM處理器的ARM推薦。它基于V8架構,并假設一個36位實體位址。一般來說,任何實體位址位在第35位上都被忽略了。映射地圖被分成多個部分。每個部分都是ROM,這是某種類型的特殊記憶體(例如内部記憶體)、外圍裝置和IO/DRAM。ARM架構的一個原則是,單個頁面中的函數類型是相同的,并且一般不應該分開(例如ROM vs RAM、DRAM和外圍空間)。

從曆史上看,這是在4 KB的間隔上完成的,但是随着V8的出現,建議使用這種方式使用64 KB的頁面。這是在這張地圖上完成的。

M系列核心通常仍在使用4 K頁面,一些折衷方案是在這些地圖映射。

在非常高的水準上,地圖被分成4 GB以下的空間,4 GB和64 GB之間的空間。在大多數情況下,較低的範圍可以從32位位址裝置通路。每個記憶體空間被分割成若幹個較小的塊,用于不同類型的用途。如下表所述。

imx8qm學習筆記之memory map

整個系統的記憶體

imx8qm學習筆記之memory map
imx8qm學習筆記之memory map

虛拟記憶體系統架構(VMSA)

2.1 VMSAv8-64

• VMSA的基本思想是程式、資料、堆棧的總和記憶體大小可以超過實體存儲器的大小,OS把目前使用的部分送入到記憶體中,而把其他未被使用的部分儲存在磁盤上。例如,對一個16MB的程式和一個記憶體隻有4MB的機器,OS通過排程,可以決定各個時刻将哪4M的内容送入記憶體中,并在需要時在記憶體和磁盤間交換程式片段,這樣就可以把這個16M的程式運作在一個隻具有4M記憶體機器上了。

• VMSA 提供MMU(Memory Management Unit)用于實作PE通路記憶體的VA->PA位址轉換和控制、通路權限、記憶體屬性決定和檢查等。

• 相關命名解析

VMSA 描述ARMv8位址轉換方案,包括Stage 1 和 Stage 2兩個階段.
VMSAv8-32 描述AArch32 位址轉換方案,包括單一階段的位址轉換
VMSAv8-64 描述AArch64 位址轉換方案,包括單一階段的位址轉換

2.1.1 位址轉換系統

MMU-500是系統級的存儲管理單元,它基于自身寄存器和轉換表中的位址映射和存儲器屬性,将虛拟位址轉換成實體位址。

将這個轉換過程分為兩個階段:

  • Stage 1 - 将輸入的VA轉換成PA或者IPA輸出。
  • Stage 2 - 将IPA轉換成PA。
  • 或者結合Stage 1和Stage 2将輸入的VA->IPA->PA。

• 位址類型

VA(虛拟位址)

我們可看到的位址都是虛拟位址,最大寬度支援48bit,AArch64下VA位址空間分為頂部VA和底部VA兩個子區域,每個VA子區域最大支援256TB.

。底部VA:0x0000_0000_0000_0000 =>0x0000_FFFF_FFFF_FFFF

。頂部VA:0xFFFF_0000_0000_0000 =>0xFFFF_FFFF_FFFF_FFFF

。VA[55]決定使用top VA還是bottom VA

IPA(中間實體位址)

如果不支援Stage 2轉換,那麼IPA == PA。如果支援Stage2,那麼IPA:

。 Stage 1 的OA (Output address)

。 Stage 2 的IA (Input address)

。 最大支援48bit

PA(實體位址) 實體記憶體單元映射中的位址,可以看做是PE到記憶體系統的輸出位址(OA),PA最大支援48bit
imx8qm學習筆記之memory map

• 位址轉換規則(EL3 use AArch64)

。Secure狀态下隻支援Stage 1位址轉換
。Non-secure EL1/EL0既支援Stage 1 也支援Stage 2位址轉換.
。隻有EL2才支援Stage 2,是以Stage 2隻為EL2服務的
imx8qm學習筆記之memory map

• 轉換表格式支援

。使用64bit descriptor entries(描述符執行個體)
。最高支援4個Level的位址查找
。Input address (IA)最高支援48bit
。Output address (OA)最高支援48bit
。轉換顆粒尺寸支援三種大小:4KB\16KB\64KB (和Page size概念類似)

具體請參考:https://blog.csdn.net/forever_2015/article/details/50285955

繼續閱讀