日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SMMU学习这一篇就够了

發布時間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SMMU学习这一篇就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引流關鍵詞: SMMU,mmu500,mmu600,mmu700,system mmu,Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、內存管理、頁表…


目錄

        • 前言
        • 1、SMMU總結
          • 1.1、SMMU的timeline
          • 1.2、SMMU的簡介
          • 1.3、為什么要使用SMMU?
        • 2. SMMU原理解讀
          • 2.1. SMMU的使用模型
          • 2.2. SMMU的硬件原理圖
          • 2.3. StreamID
          • 2.4 STE Table 和 STE format
            • 2.4.1 一個 Linear Stream Table的示例
            • 2.4.2 一個 2-level Stream Table 的示例
            • 2.4.3 Multi-level Stream and CD tables
            • 2.4.4 Translation stages and addresses
            • 2.4.5 Configuration and translation lookup sequence
          • 2.4 寄存器的介紹
        • 2.5 Stream Table Entry
          • 2.6 Context Descriptor table
        • 3. 總結

前言

最近朋友圈、微信群(ARM-Trustzone-TEE-AT)掀起一陣學習SMMU的熱潮,作為一名安全領域的渣渣 ,勢必要蹭一蹭這個“熱點”,也學習一下吧,反正早晚都要學,因為它和安全的關系還是比較大的。學習是一件長期的過程,本文就先簡單理一下概念吧。

1、SMMU總結

1.1、SMMU的timeline

1.2、SMMU的簡介

SMMU的全稱是System Memory Management Units, 它屬于Arm的System IP, 主要給其他Master來使用,其連頁表格式和Core MMU是一樣的,理論上可以讓Core的MMU和SMMU使用同一套頁表.

那么SMMU都是用在哪些地方呢?*以下展示了一個usecase,來自arm官方博客(February 17, 2014),也是比較早期的一個Sample case

1.3、為什么要使用SMMU?
  • 訪問非連續的地址
    現在系統中很少再預留連續的memory,如果Master需要很多memory,可以通過SMMU把一些非連續的PA映射到連續的VA,例如給DMA,VPU,DPU使用。

  • 32位轉換成64位
    現在很多系統是64位的,但是有些Master還是32位的,只能訪問低4GB空間,如果訪問更大的地址空間需要軟硬件參與交換memory,實現起來比較復雜,也可以通過SMMU來解決,Master發出來的32位的地址,通過SMMU轉換成64位,就很容易訪問高地址空間。

  • 限制Master的訪問空間
    Master理論上可以訪問所有的地址空間,可以通過SMMU來對Master的訪問進行過濾,只讓Master訪問受限的區域,那這個區域也可以通過CPU對SMMU建立頁表時動態控制。

  • 用戶態驅動
    現在我們也看到很多系統把設備驅動做在用戶態,調用驅動時不需要在切換到內核態,但是存在一些安全隱患,就是用戶態直接控制驅動,有可能訪問到內核空間,這種情況下也可以用SMMU來實現限制設備的訪問空間

  • 設備虛擬化
    例如設備虛擬化有多種方式,Emulate,Para-virtualized,以及Pass-through,用SMMU可以實現Pass though,這樣無論是性能,還是軟件的改動都是比較小的。

  • 一些不支持TrustZone的Master,可以利用SMMU支持Trustzone

2. SMMU原理解讀

2.1. SMMU的使用模型

SMMU全稱System Memory Management Unit,其實SMMU和MMU具有同樣的作用,區別是供給Master使用,同樣提供頁表轉換工作,Master可通過頁表轉換訪問物理地址,達到Master一樣使用虛擬地址

官方給出的示例圖如下所示:

示例圖2:

2.2. SMMU的硬件原理圖

學過MMU的人都知道,MMU是由 TLB + Address Translation, 那么對于SMMU呢?
它是由TBU + TCU組成,其中TBU中含有TLB, TCU緩存地址翻譯。
DTI則是SMMU內部的連接總線的協議。

而一個SMMU中可以放置多個ACE-Lite TBU模塊,也可以放置LTI TBU

TBU原理圖

LTI TBU的原理圖

TCU的原理圖

2.3. StreamID
2.4 STE Table 和 STE format

STE Table 分為Linear Stream Table和mutil-level Stream Table,這是由于STRTAB_BASE_CFG中的比特位配置

2.4.1 一個 Linear Stream Table的示例

這種查詢方式很簡單,根據streamID的數值,直接查詢到對應的STE(streamID entry)

2.4.2 一個 2-level Stream Table 的示例


2.4.3 Multi-level Stream and CD tables

而事實上,一個STE,又可以對應多個Context Descriptor

這里小小總結一下: 這里的一個Context Descriptor 就相當于 MMU系統中的 TTBRx + TCR寄存器。
這里Stage 1 Transslation tables的格式和MMU頁表的格式一致。

2.4.4 Translation stages and addresses

地址翻譯也是份stage1和stage2的,這和MMU也是一致的。

2.4.5 Configuration and translation lookup sequence

SMMU地址翻譯的原理或數據里如下圖所示,這是在學習MMU的時候未曾見過的那么細致的圖。

2.4 寄存器的介紹

SMMU寄存器都是memory-map的

SMMU里有兩套寄存器,一套是給安全master用的,一套是給非安全master用的。
其實就相當于有兩個SMMU了。如下我也列舉了幾個特別的寄存器,帶S的是給安全用的,不帶S的是給非安全用的。所以,硬件僅僅有一塊SMMU,但從軟件的視角來看,有兩塊SMMU

  • SMMU_STRTAB_BASE
  • SMMU_S_STRTAB_BASE
  • SMMU_STRTAB_BASE_CFG
  • SMMU_S_STRTAB_BASE_CFG

2.5 Stream Table Entry

2.6 Context Descriptor table

可以看出,這里的Context Descriptor 就有點類似于MMU里的 TTBRx + TCR寄存器的味道

3. 總結

  • (1)MMU 只能給 一個core用。而SMMU想給多個master用,多個master又對應不同的表。所以就搞了個STE。每一個STE entry里,都可以指向多個context descriptor (我覺得一般也就只用一個吧),然后每一個context descriptor 就相當于 MMU的TTBRx + TCR寄存器。 context Descriptor之后,就和普通的MMU一樣
  • (2)SMMU里有兩套寄存器,一套是給安全master用的,一套是給非安全master用的。從軟件視角來看,其實就相當于有兩個SMMU了。但這不是banked,他們的寄存器名字不一樣,一類帶了S,一類不帶S。而且寄存器memory-map的地址還不一樣。
  • (3)SMMU又有Secure STE 和 Non-secure STE的概念, Secure STE 后面的頁表/地址轉換,可以轉secure memory,也可以轉non-secure memory。Non-Secure STE 后面的頁表/地址轉換,只可以轉non-secure memory。 這和MMU里的Descriptor里的NS比特也是一樣的。

總結

以上是生活随笔為你收集整理的SMMU学习这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。