ARM SMMUv3簡介(一)

1.概述

SMMU(System Memory Management Unit,系統內存管理單元)是ARM架構中用于管理設備訪問系統內存的硬件模塊。SMMU和MMU的功能類似,都是將虛擬地址轉換成物理地址,不同的是MMU轉換的虛擬地址來自CPU,SMMU轉換的虛擬地址來自Device(比如DMA、PCIe等)。SMMU有以下特點:

  1. 起到地址隔離作用。DMA只能訪問頁表中的地址,非法地址將會被攔截。
  2. 支持設備使用連續虛擬地址訪問離散物理地址,消除了傳統DMA直接訪問物理內存要求地址連續的限制,以及32位DMA訪問4GB地址空間的限制。
  3. 支持設備共享CPU虛擬地址(IOVA=VA)空間。
  4. 在虛擬化環境中,SMMU可以為虛擬機中的設備提供地址轉換和隔離,確保虛擬機之間的內存安全。

SMMU簡介

如下所示,在支持虛擬化的環境中,SMMU支持2階段地址轉換,第一階段把IOVA轉換成IPA,第二階段把IPA轉換成PA,兩階段都可以設置成Bypass,即不做地址轉換。若不支持虛擬化,則SMMU只做第一階段地址轉換,即把IOVA直接轉換成PA。

SMMU地址轉換示意圖

2.內部結構

  1. 兩個SMMU的功能相互獨立。下圖中一個SMMU負責轉換普通設備的DMA請求地址,另一個SMMU負責轉換PCIe設備的DMA請求地址。
  2. SMMU位于設備請求端和設備互聯組件之間,多個SMMU通常都是并行放置,一個SMMU到內存的路徑不經過另外一個SMMU。
  3. 由于SMMU負責地址轉換和權限檢查等,因此設置SMMU的軟件必須運行再特權級別下,如EL1、EL2。
  4. SMMU與I/O設備緩存一致性:
    • SMMU與總線的接口支持I/O一致性協議(如ACE或CHI),確保設備訪問內存時自動處理緩存一致性。
    • 設備發起的請求(如DMA寫)不需要額外的一致性支持,SMMU會自動處理。
    • SMMU不轉換系統到設備方向的請求地址,因此窺探流量不能從系統轉發到SMMU后面的設備,因此不能將完全一致性設備緩存放置在SMMU后面(這類設備緩存必須直接連接一致性總線)。

SMMU結構

3.布局形式

  1. SMMU A嵌入到一個復雜設備中,屬于設備的一部分,只為該設備提供地址轉換和權限檢查服務。通常情況下,這種SMMU的實現形式,有無競爭且專用的地址轉換模塊和TLB。
  2. SMMU B是一個的完整的模塊,其集成了地址轉換、編程接口及頁表遍歷功能。兩個客戶端設備將SMMU B作為DMA訪問系統的路徑。
  3. SMMU C 采用分布式設計,為多個不同的設備提供地址轉換及訪問權限檢查等功能,從而實現更高帶寬。其包括:
    1. 一個中央頁表遍歷器( central translation table walker),該模塊擁有獨立的請求端接口,用于獲取頁表結構、配置結構及隊列;同時配備完成端接口,用于接收編程訪問。此單元可能包含一個macro-TLB及配置緩存。
    2. 遠端TLB單元在發生miss時,會向中央頁表遍歷器發起轉換請求,并將結果緩存于本地。圖中所示的兩個TLB單元,第一個通過一個端口支持一組(三個)設備;第二個連接PCIe Root Complex,同時還向RC提供了ATS(用于處理EP發起地址轉換的請求)接口。
  4. 智能設備中嵌入了一個TLB單元,但復用SMMU C的頁表遍歷器,這樣可以減少設備的復雜度。

布局

4.地址轉換流程

設備發起一次DMA請求,會把StreamID、SubstreamID和VA信息輸入到SMMU,SMMU利用這些信息將IOVA轉換成PA。

  1. 首先使用StreamID查找Stream Table,獲取設備對應的Stream Table Entry (STE),STE里面保存了設備頁表的配置信息、VMID及下一級Context Descriptor (CD)的基地址。
  2. 接著使用SubstreamID查找CD表。CD里面保存了SMMU頁表的基地址、ASID等信息。
  3. 若頁表TLB命中,則直接使用緩存的頁表轉換地址,否則從內存中查找頁表,并填充TLB。
  4. 利用SMMU的頁表,將IOVA轉換成PA。
  5. 若是虛擬化環境,此時轉換后的地址是IPA,需要利用StreamID進行第二級地址轉換,最終得到PA。

地址轉換流程示意圖

參考資料

  1. Arm ? System Memory Management Unit Architecture Specification version 3.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82879.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82879.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82879.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在 Windows 系統上運行 Docker 容器中的 Ubuntu 鏡像并顯示 GUI

在 Windows 上安裝一個 X Server(如 VcXsrv 或 X410),Ubuntu 容器通過網絡將圖形界面轉發到 Windows。 步驟: 安裝 X Server: 推薦使用VcXsrv,免費開源。 安裝后運行 XLaunch,選擇&#xff1…

Vue3學習(4)- computed的使用

1. 簡述與使用 作用:computed 用于基于響應式數據派生出新值,其值會自動緩存并在依賴變化時更新。 ?緩存機制?:依賴未變化時直接返回緩存值,避免重復計算(通過 _dirty 標志位實現)。?響應式更新?&…

【HarmonyOS 5】出行導航開發實踐介紹以及詳細案例

以下是 ?HarmonyOS 5? 出行導航的核心能力詳解(無代碼版),聚焦智能交互、多端協同與場景化創新: 一、交互革新:從被動響應到主動服務 ?意圖驅動導航? ?自然語義理解?:用戶通過語音指令(如…

csrf攻擊學習

原理 csrf又稱跨站偽造請求攻擊,現代網站利用Cookie、Session 或 Token 等機制識別用戶身份,一旦用戶訪問某個網站,瀏覽器在之后請求會自動帶上這些信息來識別用戶身份。用戶在網站進行請求或者操作時服務器會給出對應的內容,比如…

深入剖析MySQL鎖機制,多事務并發場景鎖競爭

一、隱藏字段對 InnoDB 的行鎖(Record Lock)與間隙鎖(Gap Lock)的影響 1. 隱藏字段與鎖的三大核心影響 類型影響維度描述DB_TRX_IDMVCC 可見性控制決定是否讀取當前版本,或在加鎖時避開不可見版本(影響加鎖…

以SMMUv2為例,使用Trace32可視化操作SMMU的常用命令詳解

Trace32支持一系列的SMMU命令,可以幫助用戶更好地配置、查看和分析SMMU。換句話說,就是讓SMMU的配置變得可視化。 在添加SMMU實例之前,需要選擇一個CPU來激活該SMMU實例的相關命令。Trace32讓SMMU的配置可視化的本質是,操縱CPU讀取…

將數據庫表導出為C#實體對象

數據庫方式 use 數據庫;declare TableName sysname 表名 declare Result varchar(max) /// <summary> /// TableName /// </summary> public class TableName {select Result Result /// <summary>/// CONVERT(NVARCHAR(500), ISNULL(ColN…

CSS 預處理器與工具

目錄 CSS 預處理器與工具1. Less主要特性 2. Sass/SCSS主要特性 3. Tailwind CSS主要特性 4. 其他工具PostCSSCSS Modules 5. 選擇建議 CSS 預處理器與工具 1. Less Less 是一個 CSS 預處理器&#xff0c;它擴展了 CSS 語言&#xff0c;添加了變量、嵌套規則、混合&#xff0…

this.$set() 的用法詳解(Vue響應式系統相關)

1. 什么是 this.$set()&#xff1f; this.$set(target, key, value) 是 Vue 2 中提供的一個方法&#xff0c;用于向響應式對象中動態添加屬性&#xff0c;確保新加的屬性同樣是響應式的。 2. 為什么需要它&#xff1f; Vue 2 的響應式系統基于 Object.defineProperty&#…

【HarmonyOS Next之旅】DevEco Studio使用指南(三十)

目錄 1 -> 部署云側工程 2 -> 通過CloudDev面板獲取云開發資源支持 3 -> 通用云開發模板 3.1 -> 適用范圍 3.2 -> 效果圖 4 -> 總結 1 -> 部署云側工程 可以選擇在云函數和云數據庫全部開發完成后&#xff0c;將整個云工程資源統一部署到AGC云端。…

如何配置nginx解決前端跨域請求問題

我們以一個簡單的例子模擬不同情況下產生的跨域問題以及解決方案。假設在http://127.0.0.1:8000的頁面調用接口 fetch(http://127.0.0.1:8003/api/data)常看到的錯誤“Access to fetch at ‘http://127.0.0.1:8003/api/data’ from origin ‘http://localhost:8000’ has been…

React Hooks 指南:何時使用 useEffect ?

在 React 的函數組件中&#xff0c;useEffect Hook 是一個強大且不可或缺的工具。它允許我們處理副作用 (side effects)——那些在組件渲染之外發生的操作。但是&#xff0c;什么時候才是使用 useEffect 的正確時機呢&#xff1f;讓我們深入探討一下&#xff01; 什么是副作用…

bat批量去掉本文件夾中的文件擴展名

本文本夾內 批量去掉本文件夾中的文件擴展名 假如你有一些文件&#xff0c;你想去掉他們的擴展名 有沒有方便的辦法呢 今天我們就分享一種辦法。 下面&#xff0c;就來看看吧。 首先我們新建一個記事本&#xff0c;把名字改為&#xff0c;批量去掉本文件夾中的文件擴展名.txt 然…

STM32標準庫-輸入捕獲

一、輸入捕獲 1.簡介 IC&#xff08;Input Capture&#xff09;輸入捕獲輸入 捕獲模式下&#xff0c;當通道輸入引腳出現指定電平跳變時&#xff0c;當前CNT的值將被鎖存到CCR中&#xff0c;可用于測量PWM波形的頻率、占空比、脈沖間隔、電平持續時間等參數 每個高級定時器和…

在linux系統上搭建git服務器(ssh協議)

1.在windows上生成RSA密鑰對 ssh-keygen -t rsa -b 2048 -C"git用戶名/郵箱地址" 命令執行后會在 C:\Users\${windows登錄賬戶}\.ssh 目錄下生成密鑰對 其中 id_rsa 為私鑰&#xff0c;id_rsa.pub 為公鑰 2.在 linux 系統上登記公鑰 vim ~/.ssh/authorized_keys…

RAG檢索系統的兩大核心利器——Embedding模型和Rerank模型

在RAG系統中&#xff0c;有兩個非常重要的模型一個是Embedding模型&#xff0c;另一個則是Rerank模型&#xff1b;這兩個模型在RAG中扮演著重要角色。 Embedding模型的作用是把數據向量化&#xff0c;通過降維的方式&#xff0c;使得可以通過歐式距離&#xff0c;余弦函數等計算…

stm32內存踩踏一例

1、問題描述 程序運行過程中&#xff0c;發現顯示的內容亂了&#xff0c;如下圖所示&#xff1a; 2、問題分析 此原因產生是由于將一個函數提前引起的&#xff0c;單步跟蹤檢查問題 運行過此函數后變量的地址改變了&#xff1f;被調函數能改變調用函數的變量地址&#xff1f…

Selenium的底層原理

Selenium 底層主要依賴于 WebDriver 協議&#xff08;即 W3C WebDriver 規范&#xff0c;早期也有 JSON Wire Protocol&#xff09;來實現對瀏覽器的遠程控制&#xff0c;其核心架構可以分為以下幾層&#xff1a; Selenium 客戶端&#xff08;Client Library&#xff09; 支持多…

前端高頻面試題2:瀏覽器/計算機網絡

本專欄相關鏈接 前端高頻面試題1&#xff1a;HTML/CSS 前端高頻面試題2&#xff1a;瀏覽器/計算機網絡 前端高頻面試題3&#xff1a;JavaScript 1.什么是強緩存、協商緩存&#xff1f; 強緩存&#xff1a; 當瀏覽器請求資源時&#xff0c;首先檢查本地緩存是否命中。如果命…

MATLAB-電偶極子所產出的電磁場仿真

% 清除工作區 clear all % 用戶輸入 a input(輸入點電荷的位置如[1,0,1;2,0,2]表示位置在(1,0,1),(2,0,2): ); Q input(輸入點電荷的電荷量&#xff0c;-表示電性&#xff0c;如[1,-1]: ); a1 input(電場線角度間隔: ); % 角度間隔 % 設置繪圖范圍 xmin min(a(:,1)) - 4;…