ptc.g、ptc.ga
格式
(qp)ptc.g r3 , r2 global_form M45
(qp)ptc.ga r3 , r2 global_alat_form M45
說明
搜索本地 TLB 一致域中每個處理器的指令與數據轉譯快取,查詢虛擬地址與頁大小同指定的清除虛擬地址與清除地址範圍部分或全部重疊的所有專案。這些專案將被刪除。
清除虛擬地址由 GR r3 的位 {60:0} 指定,清除區域標識由 GR r3 的位 {63:61} 選擇。GR r2 以位元組為單位,按 1<<GR[r2]{7:2} 的形式指定清除的地址範圍。
根據處理器型號,在轉譯快取中清除的專案可能還會比清除參數指定的上限多,包括刪除轉譯快取中的所有專案。
ptc.g 有釋放的語義,在以前所有的數據記憶體訪問都可見之後,可以保證是可見的。記憶體邊界指令強制所有處理器先完成清除操作,然後再執行任何後續的記憶體操作。此時仍需要進行序列化,以觀察刪除轉譯的副作用。
ptc.g 必須是指令組中的最後一條指令;否則,它的行為(包括它的
順序語義)將是未定義的。
ptc.ga 指令的行為與 ptc.g 的類似。除 ptc.g 的指定行為之外,ptc.ga 指令還會在廣播事務中設定一個額外的資訊位。此資訊指定清除操作是由頁重新對映導致的,還是由保護更改或頁取消導致的。一致域中的遠端處理器隨後將採取確保 ALAT 一致所需的任何額外操作。本地 ALAT 不會被清除。此指令只能在最高特權級別執行。
所有處理器一次只能發出一個全域性清除事務,否則操作將是未定義的。軟體負責確保遵循此限制。ptc.g 在多個本地 TLB 一致域之間的傳播取決於平臺,並且必須由軟體處理。本地 TLB 一致性域應該至少涵蓋
相同本地匯流排上的處理器。
中斷
“機器檢查”終止
“暫存器 NaT 使用”錯誤
“特權操作”錯誤
“未使用的數據地址”錯誤
序列化
廣播清除 TC 不與遠端處理器上的指令流同步。軟體不能依賴與指令流的任何這類同步。在確認廣播清除 TC 之後,如果不先在 TLB 中重新轉譯指令端訪問許可權,遠端機器上的硬體便無法從記憶體或快取重新載入指令。硬體可能會繼續使用確認廣播清除包含指令流數據的頁的 TC 之前獲取的指令流數據(可能在指令緩衝區中)的自有副本。在發生中斷或任何顯式或隱式指令序列化事件(如 srlz.i、rfi)時,硬體必須重新轉譯指令頁的訪問許可權。
在進行同清除相關的本地數據訪問、非訪問引用或本地指令獲取訪問之前,軟體必須發出適當的數據與/或指令序列化操作,以確保清除完成。