[发明专利]用于数据处理的装置和方法、非暂态存储介质有效
申请号: | 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.vipzhuanli.com/pat/books/201880079443.0/2.html,转载请声明来源钻瓜专利网。