ARMV8 datasheet學習筆記4:AArch64系統級體系結構之VMSA


1. 前言

 

2. VMSA概述

2.1 ARMv8 VMSA naming

VMSAv8

整個轉換機中,地址轉換有一個或兩個stage

VMSAv8-32

由運行AArch32的異常級別來管理

VMSAv8-64

由運行AArch64的異常級別來管理

 2.2 某些異常級別使用AArch32的ARMv8 VMSA

  1. EL3運行AArch32時的地址轉換stages和轉換regimes;
  2. EL3運行AArch64時任何運行AArch32的異常級別的的地址轉換stages和轉換regimes;
  3. 當EL0運行AArch32,EL1運行AArch64,PE使用VMSAv8-64 EL1&EL0轉換regimes

 2.3 VMSA地址類型和地址空間

  • 地址類型

Virtral address(VA)

虛擬地址主要用在指令中作為數據或指令地址,在PC/LR/SP/ELR中得都是虛擬地址

Intermediate physical address(IPA)

(1)對支持兩個stages地址轉換的regimes,IPA是:

第一轉換stage的輸出地址;

第二轉換stage的輸入地址

(2)對於支持一個stage地址轉換的regime,IPA與PA相同,可以假定IPA不存在

Physical Address(PA)

(1)物理地址是PE輸出給內存系統的輸出地址;

(2)EL3和secure EL1針對secure 和 non-secrue提供了單獨的PA地址空間:

Secure狀態下訪問VA可以轉換為secure或non-secure的PA;

Non-secure狀態下訪問VA只能轉換為non-secure的PA

  • VA space

最大地址寬度為48bit,256TB,支持兩種VA ranges:

(1)轉換stage有一個VA range(0x0000000000000000 to 0x0000FFFFFFFFFFFF.);

(2)轉換stage有兩個VA ranges,一個在64bit的底部(0x0000000000000000 to 0x0000FFFFFFFFFFFF.),一個在64bit的頂部(0xFFFF000000000000 to 0xFFFFFFFFFFFFFFFF)

 

2.4 AArch64運行狀態的地址tagging  

高8位地址將被忽略的情況

 

  1. 當地址轉換系統使能時,檢查地址是否超出范圍並引發translation fault時;
  2. 當地址轉換系統未使能時,檢查地址是否超出范圍並引發address size fault時;
  3. 當運行TLB無效指令時,是否需要無效地址???

地址tag的控制

1. 對於支持2個VA范圍,使用1 stage的地址

(1)VA[55]==0: 決定由TCR_ELx.TBI0來決定是否使用地址tag,同時如果stgage 1 tanslation 使能,決定由TTBR0_ELx還是來保存translation table的base address

(2)VA[55]==1: 決定由TCR_ELx.TBI1來決定是否使用地址tag,同時如果stgage 1 tanslation 使能,決定由TTBR1_ELx還是來保存translation table的base address

(3)如果TBIn為1,則load到PC的地址的VA[63~56]按VA[55]做符號擴展

 

2. 對於支持1個VA范圍,使用1 stage的地址

(1)TCR_ELx.TBI決定是否使用地址tag;

(2)同時如果stgage 1 tanslation 使能,決定由TTBR0_ELx還是來保存translation table的base address

(3)如果TBIn為1,則load到PC的地址的VA[63~56]強制為0

地址tag使能位對PC值的影響???

  1. 在受控的異常級別的分支或過程返回;
  2. 傳遞異常到受控的異常級別;
  3. 異常返回到受控的異常級別;
  4. 從debug狀態退出到受控的異常級別

Relaxation of the tagged address handling requirements on an Illegal exception return

 

 

3.  VMSAv8-64 地址轉換系統

3.1 術語說明

MMU

控制地址轉換、存儲訪問權限、存儲屬性的檢測和檢查

MMU模型

  1. 返回一個輸出地址OA和地址的屬性;
  2. 如果由於某個原因不能進行地址轉換會引發MMU fault,系統寄存器可報告各種MMU fault;

轉換粒度

  1. 地址轉換的頁大小,頁是最小的內存block;
  2. 轉換表的大小

Translation tables

將地址轉換及相關聯的內存屬性放在一個映射表中,這個映射表就叫tanslation tables

Levels of lookup

一個tanslation table lookup只涉及一部分VA bits,因此一次VA查找需要經過多級查找才能最終得到PA

TLB

Translation talbe的項可以放到Translation Lookaside Buffer,TLB也就成為了tanslation table的cache

Translation entry

定義了下面的一些屬性:

  1. 對於來自安全狀態的訪問,地址要映射到安全還是非安全區域;
  2. 內存訪問權限;
  3. 內存區域屬性

AArch64轉換機制

  1. 1 stage地址轉換:VA->PA
  2. 2 stage地址轉換:VA->IPA->PA

實例:

 

 

地址轉換與IA范圍

  1. 對於支持2個IA范圍,會有兩組translation tables;
  2. 對於支持1個IA范圍,只會有一組translation tables;

VMSAv8-64轉換表格式

  1. 達到4級地址查找;
  2. IA達到48bits;
  3. OA達到48bits;
  4. 轉換粒度大小可以是4Kb,16kb,64kb.

 3.2 控制地址轉換stage

地址轉換stage

一個寄存器bit使能地址轉換的stage

一個寄存器bit決定了tanslation table lookup的端

Translation control regsister控制了地址轉換的stage

(Translation table base register)TTBR指明了translation table的基地址

和MMU操作相關的系統寄存器

 

地址大小配置

PA大小

OA大小

IA大小

IPA大小

Atomicity of register changes on changing virtual machine

 

Use of out-of-context translation regimes

當從一個異常級別切換到另一個異常級別,則之前的異常級別下的內存訪問,在當前的異常級別下都不會被觀察到.

(1)       當運行在EL3,EL2或secure EL1,PE不能使用non-secure EL1和non-secure EL0的translation機制進行內存的隨機訪問;

(2)       當運行在EL3或secure EL1,PE不能使用EL2的translation機制進行內存的隨機訪問;

(3)       當運行在EL3,EL2或non-secure EL1,PE不能使用secure EL1的translation機制進行內存的隨機訪問;

 

 

 3.3 內存translation粒度size

Translation 粒度

(1)Translation table的大小;

(2)Page的大小

粒度大小對轉換過程的影響(以4k頁為例)

(1)       VA[n~0]

page offset,對4k page,則n=12;

(2)       VA[n-3]

表示一級tanslation table的bits。由於一個translation table大小一般是一個page,每個translation talbe entry用8個字節表示,則有PAGE_SIZE/8個tranlation table entry,需要用n-3個bit來表示

以4k頁為例,則4k/8=512,因此需要9個bit,也就是12-3

粒度大小對Translation table addressing和indexing的影響

 

減少的IA寬度的影響

(1)       第一級Translation talbe size減小;

(2)       需要更多的TTBR位來存放更多的base address

Concatenated translation tables

(1)       增加第一級Translation talbe size;

(2)       需要更少的TTBR位來存放更少的base address

3.4  Translation table和translation過程

Translation table walks

  1. Translation table walks:由一個或多個translation table lookups組成,是用來轉換VA->PA;
  2. Translation table walk成功將返回如下信息:

(1)       PA,如果是在secure狀態下訪問,將返回訪問的是secure PA space還是non-secure PA space;

(2)       目標存儲區域的屬性;

(3)       目標存儲區域的權限

  1. Translation talbe walk從讀取一個translation table開始,TTBR里有translation talbe base地址,每次translation talbe lookup返回一個描述符:

(1)       如果是walk的最后一項,則包含OA;

(2)       如果還有下一級的lookup,則返回下一級lookup的基地址;

(3)       如果描述符是無效的,內存將返回一個translation fault.

 

訪問translation table walks內存的順序

  1. 執行寫translation talbe后任何觀察者都可以觀察到,但只能保證執行寫的PE在執行完DSB指令才可以;
  2. 按代碼順序,在執行寫translation table指令之前,任何寫入translation table都不會被看到

Translation table walks的安全狀態

  1. Non-secure轉換機制,所有的translation table lookups輸出的是non-secure物理地址;
  2. secure轉換機制,所有的translation table lookups輸出的是secure物理地址;

Translation table walks的控制

對於支持2個 ranges的1 stage的translation,TCR_ELx. {EPD0, EPD1}位決定stage使用的translation tables是否是合法有效的

3.5  VMSA-v8-64地址轉換stage 概覽

VMSAv8-64地址轉換概覽(4K粒度)

  1. 1 stage轉換

 

  1. 2 stage轉換

 

4.參考文檔

[1] DDI0487A_k_armv8_arm_iss10775.pdf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM