一筆輸入的transaction會(huì)經(jīng)過以下幾個(gè)邏輯步驟:
1. 如果SMMU全局禁用(例如,剛結(jié)束復(fù)位SMMU_CR0.SMMUEN == 0),則transaction將通過SMMU而不進(jìn)行任何地址轉(zhuǎn)換。全局屬性,例如 memory type或Shareability,可能從SMMU的SMMU_GBPA寄存器應(yīng)用,或者SMMU_GBPA寄存器可以配置為abort所有transactions。
2. 如果SMMU沒有全局禁用或者全局bypass,則首先確定VA->PA轉(zhuǎn)換的配置:
?索引到STE。
?如果STE啟用了stage2轉(zhuǎn)換,則STE包含stage2 translation table base。
?如果STE啟用了stage1轉(zhuǎn)換,則繼續(xù)索引CD。如果STE啟用了stage2轉(zhuǎn)換,則從IPA空間獲取CD,否則從PA空間獲取CD。
3. 如果配置有效(STE+CD),則執(zhí)行VA->PA轉(zhuǎn)換。
?如果配置了stage1轉(zhuǎn)換,則CD包含一個(gè)translation table base,否則bypass stage1轉(zhuǎn)換,并將輸入地址直接提供給stage2。
?如果配置了stage2轉(zhuǎn)換,則STE包含一個(gè)translation table base用于stage2(輸入可能是VA,也可能是stage1的輸出IPA)。如果沒有配置stage2,則輸入就會(huì)直接作為輸出地址(bypass)。
4. 具有有效配置且在VA->PA轉(zhuǎn)換過程中未發(fā)生fault的transaction將輸出地址以及memory attributes。
上面步驟展示了Non-secure stream transaction 處理的流程,如果支持 Secure stream,則流程也是類似的。過程中使用到的寄存器有所區(qū)別:
SMMU_S_CR0.SMMUEN
SMMU_S_GBPA
實(shí)現(xiàn)可能會(huì)根據(jù)需要cache這些步驟中的任何數(shù)據(jù)。此外,在處理過程中的幾個(gè)stage可能會(huì)發(fā)生 fault。如果transaction未能找到有效配置,則會(huì)
terminated with an abort, and an event might be recorded。
如果transaction進(jìn)展到transaction(已經(jīng)找到了有效的配置),則fault可能出現(xiàn)在transaction的任一stage。如果發(fā)生了fault,其后的行為取決于使用的CD和STE的配置,確定是否terminated或者stalled。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5363瀏覽量
121200 -
STE
+關(guān)注
關(guān)注
0文章
8瀏覽量
9284 -
cache技術(shù)
+關(guān)注
關(guān)注
0文章
41瀏覽量
1087
原文標(biāo)題:SMMU VA->PA的轉(zhuǎn)換流程
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
va_start和va_end使用詳解
ARM系列之SMMU總線資料合集
對(duì)硬件虛擬化及其相關(guān)邏輯進(jìn)行羅列與理解
多個(gè)設(shè)備是否可以共用一個(gè)SMMU StreamID?
SMMU學(xué)習(xí)這一篇就夠了
Arm CoreLink MMU?700系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)
ARM CORELINK?MMU-600AE系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)
ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版
synopsys&Mentor設(shè)計(jì)流程
arm smmu的原理
![arm <b class='flag-5'>smmu</b>的原理](https://file.elecfans.com/web1/M00/C9/2B/o4YBAF9_zgWABYcdAAAWaBKm57M334.png)
arm smmu的原理與smmu驅(qū)動(dòng)iommu框架
![arm <b class='flag-5'>smmu</b>的原理與<b class='flag-5'>smmu</b>驅(qū)動(dòng)iommu框架](https://file.elecfans.com/web1/M00/C9/9F/pIYBAF9_ztaAZOWvAAAWaBKm57M165.png)
通過處理器中的MMU進(jìn)行VA-PA轉(zhuǎn)換
![通過處理器中的MMU進(jìn)行<b class='flag-5'>VA-PA</b><b class='flag-5'>轉(zhuǎn)換</b>](https://file.elecfans.com/web2/M00/58/1D/pYYBAGLiXziAciU2AABGGCIASkc804.png)
SMMU數(shù)據(jù)結(jié)構(gòu)格式
ARM SMMU Data structures概述
![ARM <b class='flag-5'>SMMU</b> Data structures概述](https://file1.elecfans.com/web2/M00/82/8E/wKgaomRYfvCAFpMFAAAKpsO2J5k151.jpg)
評(píng)論