[發明專利]用于數據處理的裝置和方法、非暫態存儲介質有效
| 申請號: | 201880079443.0 | 申請日: | 2018-12-10 |
| 公開(公告)號: | CN111433742B | 公開(公告)日: | 2023-08-29 |
| 發明(設計)人: | 格雷姆·彼得·巴爾內斯 | 申請(專利權)人: | ARM有限公司 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30;G06F12/14 |
| 代理公司: | 北京東方億思知識產權代理有限責任公司 11258 | 代理人: | 林強 |
| 地址: | 英國*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 數據處理 裝置 方法 非暫態 存儲 介質 | ||
裝置(2)具有存儲器存取電路15,用于響應于目標地址而執行標簽保護的存儲器存取操作。標簽保護的存儲器存取操作包括:將與目標地址相關聯的地址標簽(40)與保護標簽(32)進行比較,該保護標簽(32)與包括由目標地址標識的尋址位置(44)的一個或多個存儲器位置的區塊(30)相關聯地存儲在存儲器系統(16?18)中,以及生成在保護標簽與地址標簽之間是否檢測到匹配的指示。指令解碼器(6)解碼多保護標簽設置指令以控制存儲器存取電路(15)觸發存儲器存取,來更新與一個或多個存儲器位置的至少兩個連續區塊相關聯的保護標簽。
技術領域
本技術涉及數據處理領域。
背景技術
待由數據處理裝置執行的軟件通常可以以高級編程語言來寫入,并且隨后根據由其上將執行軟件的裝置支持的指令集架構被編譯為代碼。例如,軟件可以最初以較高級語言(例如,Java、C或C++)寫入,并且隨后被編譯為本機支持的指令集架構,例如x86或
一些較高級編程語言(例如,Java)被認為是存儲器安全語言,因為其包括用于檢查某些關于存儲器存取的錯誤的運行時間錯誤檢測檢查。相比之下,存儲器不安全語言(例如,C和C++)不包括這種運行時間錯誤檢查。使用存儲器不安全語言的持久流行意味著在根據給定指令集架構編譯的代碼中,可存在大量的關于存儲器的錯誤,這些錯誤容易由攻擊者或其他惡意方利用。這種錯誤可包括:
·界限違例,其中由代碼供應的陣列索引在陣列的合法界限之外;
·釋放后使用錯誤,其中在已經解除分配或釋放存儲器位置之后進行對存儲器位置的存??;
·返回后使用,其中在已經從函數返回之后進行對與函數中使用的變量(例如,堆棧上的值)相關聯的地址的存儲器存??;
·范圍外使用錯誤,其中在聲明這種變量的范圍之外的變量被存取;以及
·初始化前使用錯誤,其中在已經初始化變量之前存取與變量相關聯的存儲器位址。
這些僅為與存儲器相關的錯誤的一些示例,其可以導致不可預測的行為并且可能提供攻擊者利用的途徑。因此,可能期望在由給定處理裝置支持的指令集架構內提供架構支持,用于輔助某些種類的存儲器錯誤的運行時間檢測。
發明內容
至少一些示例提供了一種裝置,包括:
存儲器存取電路,用于響應于目標地址而執行標簽保護的存儲器存取操作,該標簽保護的存儲器存取操作包括:
將與目標地址相關聯的地址標簽與保護標簽進行比較,其中,該保護標簽與由一個或多個存儲器位置構成的區塊相關聯地存儲在存儲器系統中,該區塊包括由目標地址標識的尋址位置;以及
生成在保護標簽與地址標簽之間是否檢測到匹配的指示;以及
指令解碼器,用于解碼多保護標簽設置指令,以控制存儲器存取電路來觸發至少一個存儲器存取,從而更新與至少兩個連續、由一個或多個存儲器位置構成的區塊相關聯的保護標簽。
至少一些示例提供了一種方法,包括:
響應于目標地址而執行標簽保護的存儲器存取操作,該標簽保護的存儲器存取操作包括:
將與目標地址相關聯的地址標簽與保護標簽進行比較,其中,該保護標簽與由一個或多個存儲器位置構成的區塊相關聯地存儲在存儲器系統中,該區塊包括由目標地址標識的尋址位置;以及
生成在保護標簽與地址標簽之間是否檢測到匹配的指示;以及
響應于多保護標簽設置指令的解碼,來觸發至少一個存儲器存取,從而更新與至少兩個連續、由一個或多個存儲器位置構成的區塊相關聯的保護標簽。
至少一些示例提供了一種計算機程序,用于控制主數據處理裝置來提供用于執行目標程序代碼的指令的指令執行環境,該計算機程序包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于ARM有限公司,未經ARM有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201880079443.0/2.html,轉載請聲明來源鉆瓜專利網。





