当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于内联元数据的数据重定位制造技术

技术编号:35093850 阅读:40 留言:0更新日期:2022-10-01 16:54
本文所公开的技术提供一种包括以通信方式耦合到存储器电路的处理器电路的系统的一个示例。处理器电路用于:接收对应于用于对存储器电路的存储器分配中的地址范围的访问的应用的存储器访问请求;以及在存储器分配内定位元数据区域。处理器电路还用于:响应于确定地址范围至少包括元数据区域的部分:获得元数据区域中存储的第一元数据;使用第一元数据以确定重定位区域中的替选存储器地址,以及在替选存储器地址处,从存储器分配的地址范围中包括的元数据区域的部分读取移置数据。地址范围包括存储器分配的预期分配区域的一个或多个字节。字节。字节。

【技术实现步骤摘要】
用于内联元数据的数据重定位


[0001]本公开总体上涉及计算机系统的领域,更具体而言,涉及用于内联元数据的数据重定位。

技术介绍

[0002]存储器安全漏洞(例如,缓冲器溢出和释放后使用(UAF))占所有软件漏洞的绝大部分。归因于增加的指针大小、对带有较差局部性的表的依赖性和元数据重复,所提议的缓解方式具有高开销。例如,存储器标签技术是一种被设计为防止缓冲器溢流、溢出和UAF漏洞利用的存储器安全机制。典型地,该技术对于每个数据块使用重复存储器标签。例如,在使用16字节存储器块的系统中,1字节标签与每个存储器块关联。因此,16GB存储器分配可能简单地需要附加1GB以存储标签数据——导致归因于多次冗余存储器访问以检索标签元数据造成的数吉字节的浪费的存储器和性能影响。
附图说明
[0003]为了更完整地理解本公开及其特征和优点,结合附图参考以下描述,其中,相同的附图标记代表相同的部分,其中:
[0004]图1是根据本文描述的至少一个实施例的用于对于存储器分配执行安全检查的说明性系统的示意图;
[0005]图2是根据至少一个实施例的说明性编码指针架构的示意图;
[0006]图3是根据实施例的带有用于内联元数据的数据重定位的存储器分配和访问系统的示意性说明;
[0007]图4是示出根据实施例的用于存储器分配的示例指针编码和元数据的简化框图;
[0008]图5是表示根据实施例的用于图3所示的各种槽大小的可能元数据格式和存储位置的框图;
[0009]图6是根据实施例的用于对于存储器分配执行安全检查的系统的示例微架构组件的框图;
[0010]图7A示出根据至少一个实施例的带有预期格式和修改的实际格式的视图的存储器分配;
[0011]图7B示出根据至少一个实施例的来自图7A的存储器分配的数据的示例加载操作中的重组过程;
[0012]图7C示出根据至少一个实施例的带有预期格式和替选的修改的实际格式的视图的另一存储器分配;
[0013]图8是根据至少一个实施例的执行存储器分配操作的示例过程的高级流程图;
[0014]图9是根据至少一个实施例的执行存储器分配操作的另一示例过程的高级流程图;
[0015]图10是根据至少一个实施例的执行存储器访问操作的示例过程的高级流程图;
[0016]图11是根据至少一个实施例的执行另一存储器访问操作的示例过程的高级流程图;
[0017]图12是根据至少一个实施例的执行存储器重新分配操作的示例过程的高级流程图;
[0018]图13是示出根据至少一个实施例的示例密码式计算环境的框图。
[0019]图14是示出根据至少一个实施例的示例处理器内核和存储器的框图;
[0020]图15A是示出根据特定实施例的示例性有序流水线和示例性寄存器重命名、无序发放/执行流水线二者的框图;
[0021]图15B是示出根据特定实施例的包括于处理器中的有序架构内核的示例性实施例和示例性寄存器重命名、无序发放/执行架构内核二者的框图;
[0022]图16是根据至少一个实施例的示例计算机架构的框图;以及
[0023]图17是根据本公开的实施例的对比使用软件指令转换器以将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
[0024]本文描述的系统和方法提供包含将与存储器分配关联的标签元数据存储在存储器分配的中点处的指令的系统、方法和计算机可读介质。使用上述16G字节示例,使用传统标签元数据将需要1G字节的附加存储器空间以重复地存储用于分配的每个16字节子部分的标签元数据。一种有益的技术是关于有利的缓存局部性和恒定时间元数据更新将此存储器需求减少到与关联分配内联的元数据的单个拷贝。包含元数据的单个拷贝的元数据区域位于16GB存储器分配内的存储器地址处,存储标签元数据所需的存储器的十亿倍降低。标签元数据由系统处理器电路对软件隐藏,当跨越存储器分配的范围递增线性/虚拟地址或索引时向应用提供数据仍然被布置在连续存储器(例如,逻辑地址)中的表象。处理器将所尝试的软件访问重定向到元数据位置,以使得它们另外在分配的结束处访问存储器。因此,元数据有效地将一些数据移置到分配的至少一端或存储器中的另一位置。
[0025]存储器分配槽(其也可以称为“边界框”)的中间或中心由存储器控制器电路(或处理器电路)使用最佳拟合2的幂指针编码确定。标签元数据每存储器分配仅被编码一次,位于分配的槽(或边界框)的中点处,并由处理器电路隐藏,以使得存储器使用编码指针显现为对软件的连续分配(例如,数据数组将仅将每个被索引的位置处的数据而非元数据带入数组中)。
[0026]本文所公开的系统和方法使用指针编码(例如,存储器分配的槽的2的幂大小和存储器地址)以确定存储器分配的2的幂槽的中点。特定大小的每个存储器分配加上其元数据和位置分派给适合分配的最小大小的确切一个槽,并且分配将始终包含该槽的中点,如本文将进一步描述的那样。与整个存储器分配关联的标签元数据可以存储在所确定的槽中点位置左近。在一些实施例中,存储器分配器库的C++New或C malloc函数(或其他编程语言中的相似函数)将标签元数据大小纳入考虑,并相应地调整(增加)存储器分配以容纳标签元数据大小和任何附加元数据(例如,分配的真实大小、完整性值,或存储器分配的元数据区域中可以存储的任何其他元数据(例如,上下文标识符、特权、秘密、消息认证码等))。因为元数据存储在分配的槽的中间,所以在一些系统中,处理器电路可以通过用重定位到例如
或“元数据区域”。在本文公开的一个或多个实施例中,其中,分配大小增加以容纳内联元数据,由元数据区域中存储的元数据移置的数据可以重定位到扩展分配的一端(或两端)。存储移置数据的区块在本文中称为“重定位区域”。
[0030]在其他实施例中,存储器分配操作使用所请求的分配大小(而不是扩展分配大小)分配存储器,并且连同实际分配的边界一起在存储器分配的2的幂槽的中间设置标签值。存储器分配操作也可以标识存储器分配外部的存储器中的重定位区域。由元数据区域中的分配的2的幂槽的中间处存储的元数据移置的数据可以存储在分离的重定位区域中。存储器分配操作也可以生成元数据区域中可以存储的指向重定位区域的重定向指针或索引。如前所述,存储器分配操作可以返回指针。
[0031]当(例如,在堆中或在栈中由程序)访问存储器时,用于读取或加载数据的存储器访问操作可以由诸如“MOV”或“LOAD”指令之类的指令或使数据在一个存储位置(例如,存储器)处被读取、拷贝或以其他方式访问并移动到另一存储位置(例如,寄存器)中(其中,“存储器”可以指代主存储器或缓存(例如,随机存取存储器的形式),并且“寄存器”可以指代处理器寄存器(例如,硬件))的任何其他指令或访问或操纵存储器的任何指令调用。用于存储数据的存储器访问操作可以由诸如“MOV”或“STORE”指令之类的指令或使数据在一个存储位置(例如,寄存器)处被读取、拷贝或以其本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种装置,包括:处理器电路,以通信方式耦合到存储器电路,其中,所述处理器电路用于:接收与应用对应的、用于访问所述存储器电路的存储器分配中的地址范围的存储器访问请求;在所述存储器分配内定位元数据区域;以及响应于确定所述地址范围至少包括所述元数据区域的一部分:获得所述元数据区域中存储的第一元数据;使用所述第一元数据以确定重定位区域中的替选存储器地址;以及在所述替选存储器地址处,从所述存储器分配中的所述地址范围中所包括的所述元数据区域的所述一部分读取移置数据。2.如权利要求1所述的装置,其中,所述地址范围包括所述存储器分配的预期分配区域的一个或多个字节。3.如权利要求1所述的装置,其中,所述重定位区域位于所述存储器分配的结束部分处、所述存储器分配的起始部分处或所述存储器分配外部的所述存储器电路的区块中。4.如权利要求1所述的装置,其中,所述元数据区域中存储的所述第一元数据包括指示所述存储器分配的上边界的上边界信息或指示所述存储器分配的下边界的下边界信息。5.如权利要求4所述的装置,其中,所述重定位区域位于所述存储器分配内,并且与所述存储器分配的上边界或所述存储器分配的下边界之一对齐。6.如权利要求1所述的装置,其中,在所述存储器分配内定位所述元数据区域包括:基于与所述存储器访问请求关联的编码指针中的地址位、所述编码指针中的大小元数据和所述元数据区域的大小,确定所述元数据区域的第二存储器地址,其中,所述元数据区域被划分于所述存储器分配被分派给的所述存储器电路的槽的中点地址处。7.如权利要求6所述的装置,其中,所述编码指针中的大小元数据表示所述存储器分配被分派给的所述存储器电路的槽的2的幂大小。8.如权利要求1所述的装置,其中,所述第一元数据是以下之一:指示所述存储器分配的上边界的上边界信息;指示所述存储器分配的下边界的下边界信息;所述重定位区的从所述存储器分配被分派给的所述存储器电路的槽的中点地址的偏移;指向所述重定位区域的指针;或对所述重定位区域的索引。9.如权利要求1

8中任一项所述的装置,其中,所述处理器电路还用于:响应于对基于第一分配大小分配所述存储器电路的存储器分配请求,执行包括以下的存储器分配操作:基于待在所述存储器分配的元数据区域中存储的元数据,将所述第一分配大小增加到增加的存储器分配大小;基于所述增加的存储器分配大小,获得所述存储器分配;以及在所述元数据区域中存储所述第一元数据。10.如权利要求9所述的装置,其中,所述处理器电路还用于:
接收与所述应用对应的、在所述存储器分配的地址范围中存储第一数据的存储器存储请求;至少标识待从所述元数据区域移置的所述第一数据的第一部分;以及在所述重定位区域中的所述替选存储器地址处存储所述第一数据的所述第一部分作为所述移置数据。11.如权利要求1

8中任一项所述的装置,其中,所述处理器电路还用于:响应于对基于第一分配大小分配所述存储器电路的存储器分配请求,执行包括以下的存储器分配操作:基于所述第一分配大小获得所述存储器分配;获得所述存储器分配外部的所述重定位区域;生成指向所述重定位区域的重定向指针;以及在所述元数据区域中存储所述重定向指针。12.如权利要求11所述的装置,其中,所述处理器电路还用于:接收与所述应用对应的、在所述存储器分配的地址范围中存储第一数据的存储器存储请求;至少标识待从所述元数据区域移置的所述第一数据的第一部分;以及使用所述重定向指针以在所述重定位区域中的所述替选存储器地址处存储所述第一数据的所述第一部分作为所述移置数据。13.如权利要求1

8中任一项所述的装置,其中,所述处理器电路还用于:响应于确定所述地址范围的起始存储器地址位于所述元数据区域之前,基于所述地址范围的起始存储器地址访问所述元数据区域之前的第二数据;以及通过至少串接所述移置数据和所述第二数据生成对应于所述地址范围的重组数据。14.如权利要求1

8中任一项所述的装置,其中,所述存储器电路包括:元数据缓存,由元数据缓存集合索引进行索引;和数据缓存,由数据缓存集合索引进行索引,其中,所述处理器电路还用于:使用所述元数据缓存集合索引搜索所述元数据缓存...

【专利技术属性】
技术研发人员:D
申请(专利权)人:英特尔公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1