在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

介紹SMMU的相關知識

安芯教育科技 ? 來源:老秦談芯 ? 2023-02-15 09:48 ? 次閱讀

為了適應大規模的SoC設計,GIC-600被設計成分布式IP。所謂分布式,GIC-600由幾種組件構成,每個組件可以跟其它相關模塊在物理設計上擺放在一起,并與其擁有共同的電源域;組件之間通過片上網絡(network on chip,簡稱NoC)通信,從而達到更好的時序。

SMMU即system memory management unit,在其他體系結構中對應的是IOMMU。先上圖,此圖節選自SMMU spec文檔,從圖中可以直觀看到SMMU的基本功能,其被放置在device的DMA master的前端,device與其采用AXI相連,SMMU直接連接片上總線。

MMU與SMMU位置相似,只不過MMU后邊的master是CPU。SMMU在此主要作用是將device發起的DMA請求中的IOVA虛擬地址轉換為系統物理地址進行訪存。而MMU是將CPU看到的VA值轉換為系統物理地址,IOVA的值與CPU看到的VA可以相同也可以不同,如果說IOVA值的類型有一萬種選擇,那么使用SMMU的方法就有一萬種。

ARM體系結構中,SMMU可以承載很多東西,包括:安全,虛擬化,pcie相關功能,SVA等等。

f0b98366-a879-11ed-bfe3-dac502259ad0.png

現在捋一下SMMU的基本使用場景:

1)擴大設備DMA尋址范圍,一些legacy設備DMA尋址是32bit,無法訪問高32bit地址,通過SMMU的轉換可以解決這個問題。同樣的,當系統無法提供大塊連續物理內存時,也可以通過SMMU轉換讓設備可以訪問分散物理內存

2)一個SMMU可以有多個master設備,每個設備所看到的物理地址范圍可通過SMMU進行隔離和劃定,硬件提供了這種應用的靈活性,具體策略需要軟件來實現。

3)ARM體系結構中的安全域分為secure和normal域,secure具有更高的權限,理論上normal域的設備DMA無法訪問劃分為secure的物理地址,但是這種訪問控制機制是如何實現的呢?就是通過SMMU,它可以使設備DMA master發出的請求帶有secure域或Normal域的安全屬性。

SMMU之所以能完成上述功能,是因為其內部硬件結構。

f0cf8e04-a879-11ed-bfe3-dac502259ad0.png

如上圖,SMMU大部分功能數據均存在于主存儲器中,在硬件上有基地址寄存器分別指向相應的內存區域,command queue提供了軟件配置SMMU的命令隊列,event queue用來存放SMMU工作產生的事件或錯誤。STE基址寄存器指向了內存中的一系列STE表,該表是用smmu設備master的streamid來索引的,位寬16位,steamid是deviceIP在設計時硬件設定好的,一個streamid唯一對應一個STE表,理論上一個設備可以有多個streamid,因此一個設備可能有多個STE表,在不同的場景下,軟件可以靈活應用,硬件提供了這種靈活性。

每個STE表存在一個指針指向CD表,CD表可以有多個,是通過substreamid來索引的,substreamid位寬20位。CD表中有指針直接指向了SMMU進行地址轉換用的頁表,這個頁表記錄了IOVA到PA的映射。CD表所指的頁表只提供了一級頁表轉換,STE表的其他域提供了二級頁表轉換,這個在后續章節遇到再詳細介紹。

以上是SMMU內部結構的靜態描述,那么它實際工作的過程是怎樣的?設備master發起一筆DMA請求,請求的總線信息中帶有streamid、subtreamid、iova等參數,smmu硬件收到該請求會自動通過streamid檢索到STE表,再通過substreamid檢索到這個STE表指向的CD表,從CD表中找到頁表基地址,開始頁表查找過程,找到IOVA對應的物理地址,再對這個物理地址發起一次DMA請求。

從這個過程可以看出SMMU在做地址轉換時有一定的overhead,因此SMMU硬件也提供了bypass模式,可以不進行任何地址轉換,事實上目前linux kernel在默認情況下的SMMU就是采用這種工作模式的。STE和CD表以及SMMU硬件工作過程中涉及到的參數較多,這里不一一說明,抓大放小,我們期望能夠以最簡捷的方式理解SMMU的工作機理。

為了提高頁表查找效率,SMMU與MMU相同,在其內部設計有TLB緩存,用于緩存頁表項,同時硬件提供了DVM 接口,接收從互聯總線上的TLBI廣播,當CPU對頁表進行更改后,同時需要清除MMU本地的相應的頁表項緩存,該TLBI指令會通過DVM接口進行廣播,ARM架構要求SMMU接收到廣播的前置條件是MMU與SMMU同處于一個Inner shareable domain中,在接受到廣播后,SMMU硬件會自動清除其內部的TLB緩存對應項,達到與MMU同步的作用。該機制是ARM系統結構下SVA(shared virtual addressing)的基礎,即SMMU與MMU共享頁表,設備可以看到和CPU相同的VA,設備也就能“理解”各種進程虛擬內存的語義。

下面分享一個SMMU的實際使用場景的有趣例子。

f0ec7f82-a879-11ed-bfe3-dac502259ad0.png

上圖中engine是一個硬件運算模塊,硬件設定其與SMMU之間的streamid有2個,一個是read steam,另一個是write stream,因此SMMU對應的STE表就有2個,即DMA讀操作對應一份頁表,該頁表與MMU對應頁表相同,通過DVM接口進行硬件同步,DMA寫對應另一份頁表,該頁表指向的物理地址為ARM的secure域內存。Crypto engine通過對normal域的操作系統內存數據進行某種操作后輸出結果到secure域,這種機制既增強了安全性,又增加了系統的效率。步驟如下:

1)normal域軟件發起SMC指令傳遞虛擬內存地址VA和頁表基地址等參數到secure域軟件

2)secure域軟件用上述參數配置engine硬件,啟動DMA

3)DMA通過SMMU read stream抓取normal域地址VA內存數據進行運算

4)結果通過DMA write stream輸出到secure域內存

5)Secure 域軟件返回此次操作狀態信息給normal域軟件

細心的讀者可能會發現上述過程存在一些問題,比如該虛擬地址對應頁面不在內存中,被換出了,這時SMMU在查找相應頁面時就無法進行DMA操作,遇到這樣的頁表整個地址轉換過程會停下,相應的錯誤event會被SMMU硬件寫到event queue中,此時需要secure域軟件處理該event,向normal域軟件請求處理,與處理Page fault過程類似,完成后再重復上述步驟。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9105

    瀏覽量

    367909
  • SoC設計
    +關注

    關注

    1

    文章

    148

    瀏覽量

    18790
  • dma
    dma
    +關注

    關注

    3

    文章

    563

    瀏覽量

    100642
  • SVA
    SVA
    +關注

    關注

    1

    文章

    19

    瀏覽量

    10144

原文標題:技術分享 | ARM系列 -- SMMU(一)

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM***F3的USART部分相關知識介紹

    本文介紹STM***F3的USART(串口)部分相關知識
    發表于 01-05 06:18

    ARM系列之SMMU總線資料合集

    SMMU的高級功能上篇我們介紹SMMU的基本結構和用法,本篇講一下SMMU的高級功能。在ARM64體系結構中,SMMU幾乎可以放在總線互
    發表于 04-11 15:58

    多個設備是否可以共用一個SMMU StreamID?

    Address(SVA)等場景。在這些使用場景中,SMMUv3是這樣使用的呢?SMMUv3的硬件設計方面比較靈活,但是軟件使用方面是有些限制的。本文不是介紹SMMUv3構架或IP,而是站在
    發表于 11-07 15:36

    SMMU學習這一篇就夠了

    寄存器的介紹SMMU寄存器都是memory-map的SMMU里有兩套寄存器,一套是給安全master用的,一套是給非安全master用的。其實就相當于有兩個SMMU了。如下我也列舉了
    發表于 02-23 17:11

    手機電池相關知識介紹

    手機電池相關知識介紹 一、手機電池的幾個重要概念 1、容量: 對一個手機電池來說最重要的參數就是它所能儲存的電量大小,該詞用專業術語
    發表于 10-26 16:59 ?1874次閱讀

    導線連接器相關知識介紹

    導線連接器相關知識介紹      現代汽車由于電控器件的不斷增多,其連接導線的數量也不可避免地呈增大趨勢,為保證導線連接的正確性
    發表于 11-27 10:08 ?1232次閱讀

    RRC和RB等LTE接口與承載相關基礎知識介紹

    本文介紹了LTE接口與承載相關基礎知識介紹了E-RAB在LTE系統中的位置和組成以及RB的功能和管理等知識
    發表于 10-13 13:05 ?7次下載
    RRC和RB等LTE接口與承載<b class='flag-5'>相關</b>基礎<b class='flag-5'>知識</b><b class='flag-5'>介紹</b>

    復合管的相關知識介紹

    本文介紹了復合管的相關知識
    發表于 11-23 14:58 ?12次下載
    復合管的<b class='flag-5'>相關</b><b class='flag-5'>知識</b>的<b class='flag-5'>介紹</b>

    arm smmu的原理

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

    arm smmu的原理與smmu驅動iommu框架

    如上圖所示,smmu 的作用和mmu 類似,mmu作用是替cpu翻譯頁表將進程的虛擬地址轉換成cpu可以識別的物理地址。同理,smmu的作用就是替設備將dma請求的地址,翻譯成設備真正能用的物理地址,但是當smmu bypass
    的頭像 發表于 10-09 10:48 ?6257次閱讀
    arm <b class='flag-5'>smmu</b>的原理與<b class='flag-5'>smmu</b>驅動iommu框架

    SMMU數據結構格式

    就是SMMU Level 1 Stream Table Descriptor的數據格式,簡稱 **Level1 STD** 。
    的頭像 發表于 04-28 11:48 ?972次閱讀

    SMMU數據結構格式之Level 1 Stream Table Descriptor介紹

    上圖就是SMMU Level 1 Stream Table Descriptor的數據格式,簡稱Level1 STD。
    的頭像 發表于 05-06 14:44 ?1056次閱讀
    <b class='flag-5'>SMMU</b>數據結構格式之Level 1 Stream Table Descriptor<b class='flag-5'>介紹</b>

    ARM SMMU Data structures概述

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

    ARM SMMU Data structures之Stream Table

    incoming transaction的StreamID可以找到一個STE。SMMU支持兩種Stream table格式,格式由Stream table base registers設置。
    的頭像 發表于 05-11 09:22 ?1384次閱讀
    ARM <b class='flag-5'>SMMU</b> Data structures之Stream Table

    SMMU VA-&gt;PA的轉換流程介紹

    如果SMMU全局禁用(例如,剛結束復位SMMU_CR0.SMMUEN == 0),則transaction將通過SMMU而不進行任何地址轉換。
    的頭像 發表于 05-15 10:07 ?986次閱讀
    <b class='flag-5'>SMMU</b> VA-&gt;PA的轉換流程<b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 美女免费黄| 高清国产一区二区三区| 色综久久| 色香蕉网站| 欧美色图一区| 天天成人综合网| 天堂8中文在线最新版在线| 人人精品| 亚洲热热久久九九精品| 天天看黄色| 4虎.最新地址| 国产主播在线播放| 丁香六月色婷婷综合网| 国产一卡2卡3卡四卡精品网站| 欧美性一级交视频| 激情五月婷婷综合| 97伊人| 97视频免费上传播放| 天天干天天射天天舔| 福利视频自拍| 2019天天操夜夜操| 日韩草逼| 欧美成人性色区| 免费黄视频网站| 国产亚洲自在精品久久| 乱色伦短篇小说| 99久久99这里只有免费费精品 | 网站大全黄免费| 午夜亚洲国产| 国产午夜精品视频| 国产精品久久久久久久久久免费 | 手机看片中文字幕| 欧美性hd| 一级做a爱片在线播放| 欧美香蕉视频| 97色在线视频| 成人黄色免费观看| 张柏芝三级无删减在线观看| 亚洲香蕉国产高清在线播放| 日本大黄在线观看| 亚洲天天综合网|