0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SMMU VA->PA的轉(zhuǎn)換流程介紹

芯片驗(yàn)證工程師 ? 來(lái)源:芯片驗(yàn)證工程師 ? 2023-05-15 10:07 ? 次閱讀

47140728-f153-11ed-90ce-dac502259ad0.png

一筆輸入的transaction會(huì)經(jīng)過(guò)以下幾個(gè)邏輯步驟:

1. 如果SMMU全局禁用(例如,剛結(jié)束復(fù)位SMMU_CR0.SMMUEN == 0),則transaction將通過(guò)SMMU而不進(jìn)行任何地址轉(zhuǎn)換。全局屬性,例如 memory type或Shareability,可能從SMMU的SMMU_GBPA寄存器應(yīng)用,或者SMMU_GBPA寄存器可以配置為abort所有transactions。

2. 如果SMMU沒(méi)有全局禁用或者全局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)。如果沒(méi)有配置stage2,則輸入就會(huì)直接作為輸出地址(bypass)。

4. 具有有效配置且在VA->PA轉(zhuǎn)換過(guò)程中未發(fā)生fault的transaction將輸出地址以及memory attributes。

上面步驟展示了Non-secure stream transaction 處理的流程,如果支持 Secure stream,則流程也是類似的。過(guò)程中使用到的寄存器有所區(qū)別:

SMMU_S_CR0.SMMUEN

SMMU_S_GBPA

實(shí)現(xiàn)可能會(huì)根據(jù)需要cache這些步驟中的任何數(shù)據(jù)。此外,在處理過(guò)程中的幾個(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。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5295

    瀏覽量

    119823
  • STE
    STE
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    9191
  • cache技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    1043

原文標(biāo)題:SMMU VA->PA的轉(zhuǎn)換流程

文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    va_start和va_end使用詳解

    本文主要介紹va_start和va_end的使用及原理。  在以前的一篇帖子Format MessageBox 詳解中曾使用到va_start和va
    發(fā)表于 02-10 10:38

    ARM系列之SMMU總線資料合集

    、SMMU的高級(jí)功能上篇我們介紹SMMU的基本結(jié)構(gòu)和用法,本篇講一下SMMU的高級(jí)功能。在ARM64體系結(jié)構(gòu)中,SMMU幾乎可以放在總線互
    發(fā)表于 04-11 15:58

    對(duì)硬件虛擬化及其相關(guān)邏輯進(jìn)行羅列與理解

    Memory空間時(shí),獲取到其虛擬地址,同時(shí)在Memory內(nèi)建立頁(yè)表,也就是VA-&;gt;PA的映射關(guān)系;釋放Memory空間時(shí),則對(duì)應(yīng)為刪除頁(yè)表關(guān)系。為加快地址轉(zhuǎn)換流程,MMU
    發(fā)表于 07-04 15:48

    多個(gè)設(shè)備是否可以共用一個(gè)SMMU StreamID?

    ;__iommu_probe_device->arm_smmu_probe_device-&;gt;arm_smmu_inser
    發(fā)表于 11-07 15:36

    SMMU學(xué)習(xí)這一篇就夠了

    預(yù)留連續(xù)的memory,如果Master需要很多memory,可以通過(guò)SMMU把一些非連續(xù)的PA映射到連續(xù)的VA,例如給DMA,VPU,DPU使用。32位轉(zhuǎn)換成64位 現(xiàn)在很多系統(tǒng)是6
    發(fā)表于 02-23 17:11

    Arm CoreLink MMU?700系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)

    ?700可以執(zhí)行: ?將輸入虛擬地址(VA轉(zhuǎn)換為輸出物理地址(PA)或中間物理地址(IPA)的第1階段轉(zhuǎn)換?將輸入IPA轉(zhuǎn)換為輸出
    發(fā)表于 08-08 07:44

    ARM CORELINK?MMU-600AE系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊(cè)

    的階段。MMU-600AE可以執(zhí)行以下操作: ·階段1轉(zhuǎn)換,將輸入虛擬地址(VA)轉(zhuǎn)換為輸出物理地址(PA)或中間物理地址(IPA)。 ·階段2翻譯,將輸入IPA
    發(fā)表于 08-09 06:28

    ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版

    : ·操作系統(tǒng)為其自身的內(nèi)存訪問(wèn)以及在其下運(yùn)行的應(yīng)用程序的訪問(wèn)定義轉(zhuǎn)換表。 它這樣做是因?yàn)樗J(rèn)為它將處理器使用的虛擬地址(VA)映射到物理內(nèi)存系統(tǒng)中的物理地址(PA)。 但是,它實(shí)際上定義了中間物理地址(IPA)內(nèi)存映射中的地址
    發(fā)表于 08-12 06:25

    synopsys&Mentor設(shè)計(jì)流程

    synopsys & Mentor 設(shè)計(jì)流程免費(fèi)下載。
    發(fā)表于 07-08 11:37 ?72次下載

    arm smmu的原理

    1: arm smmu的原理 1.1: smmu 基本知識(shí) 如上圖所示,smmu 的作用和mmu 類似,mmu作用是替cpu翻譯頁(yè)表將進(jìn)程的虛擬地址轉(zhuǎn)換成cpu可以識(shí)別的物理地址。同理
    的頭像 發(fā)表于 10-09 10:43 ?4238次閱讀
    arm <b class='flag-5'>smmu</b>的原理

    arm smmu的原理與smmu驅(qū)動(dòng)iommu框架

    如上圖所示,smmu 的作用和mmu 類似,mmu作用是替cpu翻譯頁(yè)表將進(jìn)程的虛擬地址轉(zhuǎn)換成cpu可以識(shí)別的物理地址。同理,smmu的作用就是替設(shè)備將dma請(qǐng)求的地址,翻譯成設(shè)備真正能用的物理地址,但是當(dāng)
    的頭像 發(fā)表于 10-09 10:48 ?6063次閱讀
    arm <b class='flag-5'>smmu</b>的原理與<b class='flag-5'>smmu</b>驅(qū)動(dòng)iommu框架

    通過(guò)處理器中的MMU進(jìn)行VA-PA轉(zhuǎn)換

    操作系統(tǒng)內(nèi)核將每個(gè)應(yīng)用程序的指令和數(shù)據(jù)放在物理內(nèi)存中,但是應(yīng)用程序并不是直接通過(guò)物理地址讀寫這些指令和數(shù)據(jù)。簡(jiǎn)單來(lái)說(shuō),就是通過(guò)MMU進(jìn)行VA-PA轉(zhuǎn)換,這讓程序設(shè)計(jì)變得簡(jiǎn)單很多。
    的頭像 發(fā)表于 07-28 18:06 ?2091次閱讀
    通過(guò)處理器中的MMU進(jìn)行<b class='flag-5'>VA-PA</b><b class='flag-5'>轉(zhuǎn)換</b>

    SMMU數(shù)據(jù)結(jié)構(gòu)格式

    就是SMMU Level 1 Stream Table Descriptor的數(shù)據(jù)格式,簡(jiǎn)稱 **Level1 STD** 。
    的頭像 發(fā)表于 04-28 11:48 ?896次閱讀

    ARM SMMU Data structures概述

    ARM SMMU 是一種用于系統(tǒng)級(jí)內(nèi)存管理單元(MMU)的架構(gòu),它支持基于translation表中的地址映射和內(nèi)存屬性信息的地址轉(zhuǎn)換。
    的頭像 發(fā)表于 05-08 12:46 ?961次閱讀
    ARM <b class='flag-5'>SMMU</b> Data structures概述

    你使用shell腳本中的2&amp;gt;&amp;amp;1了嗎?

    run_cmax &gt; ./starrc_cmax.logs 2&gt;&amp;1中的 2&gt;&amp;1是啥意思?
    的頭像 發(fā)表于 07-30 14:44 ?1814次閱讀