PMP 和 Paging
物理內存保護機制旨在與 RISC?V 指令集手冊,第二卷:特權架構,版本 1.10 中描述的基于頁面的虛擬內存系統組合。啟用分頁后,訪問虛擬內存的指令可能會導致多次物理內存訪問,包括對頁表的隱式引用。PMP 檢查適用于所有這些訪問。隱式頁表訪問的有效特權模式是管理員模式。
允許使用虛擬內存的實現以推測方式執行地址轉換,并且比顯式虛擬內存訪問所需的時間更早。可以在地址轉換和顯式虛擬內存訪問之間的任何時候檢查結果物理地址的 PMP 設置。到不可執行地址范圍的錯誤預測分支不會生成陷阱。因此,當以影響保存頁表的物理內存或頁表指向的物理內存的方式修改 PMP 設置時,M 模式軟件必須將 PMP 設置與虛擬內存系統同步。這是通過在寫入 PMP CSR 后執行 rs1=x0 和 rs2=x0 的 SFENCE.VMA 指令來實現的。
如果未實現基于頁面的虛擬內存,或者當它被禁用時,內存訪問會同步檢查 PMP 設置,因此不需要 fence。
PMP 限制
在包含多個 hart 的系統中,每個 hart 都有自己的 PMP 設備。hart 上的 PMP 權限不能應用于多 hart 系統中其他 hart 的訪問。此外, SiFive 設計可能包含一個前端端口,以允許外部總線主控器訪問系統的完整內存映射。PMP 無法阻止前端端口上的外部總線主控器的訪問。
沒有 PMP 保護的區域的行為
如果內存映射的非保留區域沒有應用 PMP 權限,則默認情況下,管理員或用戶模式訪問將失敗,而機器模式訪問將被允許。
訪問設備內存映射中的保留區域(例如中斷控制器)讀取時將返回 0x0,寫入將被忽略。在沒有 PMP 保護的情況下訪問設備內存映射之外的保留區域將導致總線錯誤。總線錯誤可以使用總線錯誤單元 (BEU) 對 hart 產生中斷。
PMP 保護區的緩存刷新行為
當一條線被帶入高速緩存并且 PMP 設置為斷言鎖定 (L) 位以保護該線的一部分時,數據高速緩存刷新指令將生成存儲訪問錯誤異常,如果沖洗包括受保護的線路的任何部分。緩存刷新指令執行無效和回寫,因此它實際上是在嘗試寫回受保護的內存位置。
如果緩存刷新發生在未受保護的部分行上,刷新將成功并且不會產生異常。如果需要在沒有回寫的情況下刷新數據高速緩存,請改用高速緩存丟棄指令,因為這會使該行無效但不會回寫。
-
內核
+關注
關注
3文章
1379瀏覽量
40353 -
內存
+關注
關注
8文章
3043瀏覽量
74194 -
設備
+關注
關注
2文章
4535瀏覽量
70777 -
PMP
+關注
關注
0文章
45瀏覽量
18176 -
RISC
+關注
關注
6文章
463瀏覽量
83801 -
sifive
+關注
關注
0文章
36瀏覽量
9464
發布評論請先 登錄
相關推薦
評論