做棋牌網(wǎng)站賺錢嗎域名查詢網(wǎng)入口
寫在前面
前面博客已經(jīng)了解過。SMMU是IOMMU在ARM架構(gòu)上的實(shí)現(xiàn)。主要為了解決虛擬化環(huán)境中,GuestOS無法直接將連續(xù)的物理地址分配給硬件的問題。對于Hypervisor/GuestOS的虛擬化系統(tǒng)來說,所有的VM都運(yùn)行在Hypervisor上,每一個VM獨(dú)立運(yùn)行一個OS(GuestOS),Hypervisor完成硬件的共享,隔離和切換。那么由于虛擬化系統(tǒng)中,GuestOS看到的內(nèi)存并非實(shí)際的物理內(nèi)存,因此需要SMMU對DMA設(shè)備發(fā)出的請求進(jìn)行翻譯,以確保正確的數(shù)據(jù)傳輸。所以SMMU實(shí)際上就是一個為外設(shè)提供的MMU子系統(tǒng),它主要的作用就是對虛擬地址的管理,映射和翻譯,以確保DMA設(shè)備能夠在虛擬化環(huán)境中正常工作。
再來說說DMA?
DMA(Direct Memory Access),即直接內(nèi)存存取,是一種外部設(shè)備與系統(tǒng)內(nèi)存直接交換數(shù)據(jù)的接口技術(shù)。它允許外設(shè)將數(shù)據(jù)批量傳輸?shù)絻?nèi)存,然后再發(fā)送一個中斷通知CPU去處理,這個過程并不經(jīng)過CPU,從而降低了算力負(fù)載。但是,DMA需要連續(xù)的物理內(nèi)存來進(jìn)行數(shù)據(jù)傳輸,應(yīng)為它不能像CPU一樣通過MMU來操作虛擬地址。我們可以把它理解為使外設(shè)和內(nèi)存之間的橋梁(硬件),這樣外設(shè)可以繞過CPU直接通過DMA將批量數(shù)據(jù)傳輸?shù)絻?nèi)存。
一,QSMMU
本文基于QCOM平臺的SoC進(jìn)行拆解。在QCOM平臺下,SMMU作為一個子系統(tǒng)負(fù)責(zé)將虛擬地址轉(zhuǎn)換為物理地址并檢查訪問權(quán)限。SMMU在SoC中執(zhí)行兩個主要功能:內(nèi)存碎片整理(使用虛擬內(nèi)存)和訪問控制。