HVM的緩存與內存控制

緩存控制

概述
用戶級別的Hexagon緩存管理指令可以在HVM用戶下進行使用,如dcfetch, icinva,dccleaninva,dccleana,dcinva

有些緩存控制指令必須通過VMM進行處理,那麼可以用虛擬指令vmcache來實現

HVM的緩存操作
虛擬指令vmcache用於實現難以以用戶界別的Hexagon緩存控制指令實現的緩存操作。下圖列出了所有的HVM指定的緩存控制操作:
這裏寫圖片描述
緩存控制的虛擬指令
下圖列出了HVM緩存控制的虛擬指令:
這裏寫圖片描述

內存管理

概述
HVM映射虛擬地址0x0000_0000至0xfeff_ffff置於一個32位的邏輯地址空間,既可以使用一系列的轉換或者1或2級別的虛擬頁框架。在HVM運行時,轉換是可見而且可操作的。

VMM負責在填充物理處理器TLB時,驗證並儘可能的轉換信息。在普通的操作中,轉換根據VMM進行導入
內在的邏輯/物理內存
“邏輯”地址指那些無法被HVM MMU所轉換的地址。由於虛擬儀器操作以及配置的原因,VMM中將會有無法更改的物理地址或地址映射
線性轉換
虛擬轉邏輯地址的轉換通過轉換列表來實現,下圖顯示了列表入口的格式:
這裏寫圖片描述
這裏寫圖片描述

虛擬頁表入口
HVM定義了兩級虛擬頁表。第一級將虛擬地址分爲1020個4MB的段,每一段代表一個頁表入口
這裏寫圖片描述
這裏寫圖片描述
第一級列表入口總是包含着映射的虛擬內存頁的大小
對於4MB或者更大的頁表,第一級入口包含了對也標的轉換與授權信息
對於小於4MB的頁表,第一級入口包含了第二級入口矩陣的指針

第一級頁表入口可解碼入口類型以及頁大小。其他的位根據入口類型各有不同

如果定義的大小超過或等於4M,那麼二級頁表沒必要定義映射:入口定義了頁的映射以及權限。對於更小的頁,入口被解釋爲一個目錄入口,指向一個二級頁
頁目錄入口
一個頁表入口包含了一個指向二級頁表的指針。入口的最有效位指向了二級表中邏輯地址的有效位
下圖顯示了頁目錄入口的格式:
這裏寫圖片描述

頁表入口
頁表入口用於定義特定內存頁的虛擬-邏輯轉換。

虛頁表入口可指定一級緩存上的4MB或16MB的轉換,下圖顯示了相應的格式

頁表入口(L1-4MB)
這裏寫圖片描述
頁表入口(L1-16MB)
這裏寫圖片描述
第二級頁表爲連續的4MB地址空間指定轉換。每個入口擁有相同的轉換大小。這種統一的大小在一級中被確定。

下圖顯示了一個二級的頁表入口:
這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述
緩存屬性
在頁表入口中,C域控制了虛擬頁的緩存屬性。如果虛擬別名映射了相同的邏輯頁,那麼緩存的行爲將是不確定的。
這裏寫圖片描述
緩存屬性Device Access應該在Load與store操作留下副作用時使用

緩存屬性Uncached Memory不允許對內存進行緩存。然而,可以實現重新store以及load
更新舊的內存映射
虛擬指令vmclrmap刷新可能的舊虛擬映射

Vmclrmap可接受很大範圍內的虛擬地址。它使得虛擬地址轉換的拷貝從虛擬儀器中淨化(包括TLB),從而爲特定範圍內的虛擬地址騰出空間。
內存管理的虛擬指令
下圖列出了所有的內存管理虛擬指令
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章