使用寄存器扩展在中央处理单元中管理和实现元数据.pdf

上传人:111****112 文档编号:1277101 上传时间:2018-04-12 格式:PDF 页数:18 大小:557.79KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010500641.5

申请日:

2010.09.25

公开号:

CN102033735A

公开日:

2011.04.27

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 9/30申请日:20100925授权公告日:20150617终止日期:20160925|||授权|||实质审查的生效IPC(主分类):G06F 9/30申请日:20100925|||公开

IPC分类号:

G06F9/30; G06F9/318

主分类号:

G06F9/30

申请人:

英特尔公司

发明人:

B·V·帕特尔; R·古帕拉克里西南; A·F·格鲁; R·J·科什里斯; D·A·范德克; J·F·西胡拉; A·K·玛里克; J·B·克罗斯兰; G·尼格; S·D·罗杰斯; M·G·迪克森; M·J·查尼; J·格特里伯

地址:

美国加利福尼亚州

优先权:

2009.09.30 US 12/571,269

专利代理机构:

上海专利商标事务所有限公司 31100

代理人:

毛力

PDF下载: PDF下载
内容摘要

处理器的一组默认寄存器被扩展成计算机系统的处理器上的元数据寄存器。默认寄存器上存储有数据,而与该数据关联的元数据单独存储在元数据寄存器上。

权利要求书

1: 一种方法, 包括 : 将第一处理器的默认寄存器扩展成计算机系统的第一处理器上的元数据寄存器, 所述 默认寄存器上存储有数据 ; 以及 将元数据单独存储在所述元数据寄存器上, 所述元数据与所述数据相关联。
2: 如权利要求 1 所述的方法, 其特征在于, 所述元数据包括与由表示所述默认寄存器 中的数据的指针存取存储器所使用的地址相关联的边界, 所述方法包括 : 计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界 ; 以及 将所述下边界和上边界存储于元数据寄存器中。
3: 如权利要求 1 所述的方法, 其特征在于, 进一步包括对利用与包含一个或多个所述 边界的一个或多个边界寄存器相关联的一个或多个默认寄存器的存储器存取执行自动边 界检查。
4: 如权利要求 1 所述的方法, 其特征在于, 进一步包括采用现有的无操作 (NOP) 指令来 产生一组边界, 并对该组边界执行边界检查, 以保持所述元数据寄存器如果位于不操作元 数据的第二处理器上时的互可操作性和兼容性, 且使所启用的软件程序在所述第一和第二 处理器上运行。
5: 如权利要求 1 所述的方法, 其特征在于, 进一步包括将前缀与所使用的指令关联, 以 创建和传输与目的地寄存器相关联的一组边界, 且使用所述前缀以及现有的存储器操作来 显式地执行对该组边界的边界检查, 所述前缀包括 NOP 前缀或新前缀, 其中所述 NOP 前缀用 于便于所启用的软件程序在所述第一和第二处理器上运行。
6: 如权利要求 1 所述的方法, 其特征在于, 进一步包括执行包括传统指令的指令以执 行指针算术运算, 以将与源指针相关联的一组边界传输到目的地指针, 其中默认寄存器包 括具有所述源指针和目的地指针的通用寄存器, 其中如果所述指针算术运算未执行, 则该 组边界被无效。
7: 如权利要求 6 所述的方法, 其特征在于, 进一步包括将所述新前缀添加到从所述源 指针传输到所述目的地指针的该组边界, 其中所述新前缀指示该组边界从所述源指针到所 述目的地指针的传输。
8: 如权利要求 6 所述的方法, 其特征在于, 进一步包括如果检测到与该组边界有关的 边界越限, 则执行传统加载操作或传统存储操作。
9: 如权利要求 1 所述的方法, 其特征在于, 进一步包括计算与存储器存取相关联的地 址范围, 并将具有与指针有关的最低地址和最高地址的所述地址范围与所述元数据寄存器 中已存在的下边界和上边界作比较, 以防止在所述下边界和上边界的边界范围之外的任何 存储器存取。
10: 如权利要求 9 所述的方法, 其特征在于, 所述防止包括避免边界越限, 如果所述最 低地址小于所述元数据寄存器中已存在的下边界, 或所述最高地址大于所述元数据寄存器 中已存在的上边界, 则发生所述边界越限。
11: 如权利要求 1 所述的方法, 其特征在于, 所述扩展包括产生与每个所述默认寄存器 相对应的至少两个元数据寄存器, 并将所述元数据寄存器放置在所述处理器上, 其中所述 至少两个元数据寄存器中的第一个用于存储所述下边界, 而所述至少两个元数据寄存器中 的第二个用于存储所述上边界。 2
12: 一种处理器, 包括 : 被扩展成所述处理器上的元数据寄存器的默认寄存器, 所述默认寄存器用于存储数 据; 以及 所述元数据寄存器用于存储与所述数据相关联的元数据, 所述元数据与存储在所述默 认寄存器处的数据分离地存储在所述元数据寄存器处。
13: 如权利要求 12 所述的处理器, 其特征在于, 所述元数据包括与由表示所述默认寄 存器中的数据的指针存取存储器所使用的地址相关联的边界, 所述处理器包括 : 用于计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界的逻 辑; 以及 用于存储所述下边界和上边界的元数据寄存器。
14: 如权利要求 12 所述的处理器, 其特征在于, 对应于每个所述默认寄存器产生至少 两个元数据寄存器, 其中所述至少两个元数据寄存器中的第一个用于存储所述下边界, 而 所述至少两个元数据寄存器中的第二个用于存储所述上边界。
15: 一种计算机系统, 包括 : 动态随机存取存储器芯片 ; 以及 处理器, 所述处理器具有 被扩展成所述处理器上的元数据寄存器的默认寄存器, 所述默认寄存器用于存储数 据, 以及 所述元数据寄存器用于存储与所述数据相关联的元数据, 所述元数据与存储在所述默 认寄存器处的数据分离地存储在所述元数据寄存器处。
16: 如权利要求 15 所述的计算机系统, 其特征在于, 所述元数据包括与由表示所述默 认寄存器中的数据的指针存取存储器所使用的地址相关联的边界, 所述处理器包括 : 用于计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界的逻 辑; 以及 用于存储所述下边界和上边界的元数据寄存器。
17: 如权利要求 15 所述的计算机系统, 其特征在于, 对应于每个所述默认寄存器产生 至少两个元数据寄存器, 其中所述至少两个元数据寄存器中的第一个用于存储所述下边 界, 而所述至少两个元数据寄存器中的第二个用于存储所述上边界。
18: 一种包括指令的机器可读介质, 所述指令在执行时使机器 : 将处理器的默认寄存器扩展成计算机系统的所述处理器上的元数据寄存器, 所述默认 寄存器上存储有数据 ; 以及 将元数据单独存储在所述元数据寄存器上, 所述元数据与所述数据相关联。
19: 如权利要求 18 所述的机器可读介质, 其特征在于, 所述元数据包括与由表示所述 默认寄存器中的数据的指针存取存储器所使用的地址相关联的边界, 所述指令在被执行时 进一步使所述机器 : 计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界 ; 以及 将所述下边界和上边界存储于元数据寄存器中。
20: 如权利要求 18 所述的机器可读介质, 其特征在于, 所述指令在被执行时进一步使 所述机器对利用与包含一个或多个所述边界的一个或多个边界寄存器相关联的一个或多 3 个默认寄存器的存储器存取执行自动边界检查。

说明书


使用寄存器扩展在中央处理单元中管理和实现元数据

    【技术领域】
     本领域一般涉及计算科学, 更具体地涉及中央处理单元 (CPU) 中的元数据。背景技术 诸如 C 和 C++ 的现代编程语言不使用元数据。诸如指针边界 ( 例如边界指的是开 始和结束地址, 即分别是指针所指向的对象的下边界和上边界 ) 之类的极其重要的元数据 和对象的数据类型在诸如 C/C++ 程序的这些编程语言的执行期间不可用。正在运行的软件 程序缺少此类元数据通常产生不正确的程序行为, 并导致脆弱性。添加元数据的一种常规 手段是将其毗邻数据本身存储在存储器中, 以使软件或硬件能定位到它 ; 然而, 这需要存储 器布局 / 应用程序二进制接口 (ABI) 的改变。因此, 元数据仅在非常专门的环境中使用, 在 该环境中整个软件需要被重新编译以遵守修改后的新约定。
     替代地, 软件在不毗邻的存储器位置中存储数据和元数据, 且进一步实现映射功 能以将数据与相应的元数据匹配。 在该情况下, 数据被载入寄存器, 同时相应的元数据被载 入其他现有寄存器。 此外, 该软件需要留意该数据与现有寄存器中的元数据之间的关联, 并 对元数据执行必要的传输和无效以使其与其相应的数据同步。在该情况下, 当数据以寄存 器参数被传递至函数时, 相应的元数据也需要在寄存器中传递。 这导致缺少透明性, 且必须 对所使用的调用约定进行扩展。此外, 该技术的实现因为其对软件和系统施加的高开销而 固有地很慢, 该高开销诸如增加的寄存器压力、 元数据传输和无效所需的附加指令等, 为此 该技术在实际中未被使用。
     图 1 示出具有默认寄存器 102 的处理器 100 的简化图。诸如通用处理器或专用处 理器的处理器是具有设计成处理程序代码指令的电子电路系统的半导体芯片。 多数处理器 通常包括诸如默认寄存器 102 的多个共同架构特征。典型的寄存器在处理器上提供少量存 储空间, 以使与存取存储器的较慢过程相比, 可使用该寄存器来存取某些数据 ; 例如, 寄存 器可用于存储指令输入操作数和指令输出结果。
     其他公共架构特征可包括用于本地存储指令和 / 或数据的高速缓存、 用于从高速 缓存和 / 或存储器取出指令的取出电路系统、 用于向高速缓存和 / 或存储器存储指令结果 的写回电路系统。此外, 具有寄存器 102 的处理器 100 被示为与随机存取存储器 (RAM)104 和只读存储器 (ROM)106 通信。
     附图说明
     本发明的实施方式在各附图中是作为示例而非作为限制示出的, 在附图中相同的 附图标记表示相同的元素, 并且其中 :
     图 1 示出具有默认寄存器的传统处理器 ;
     图 2 示出具有默认寄存器和边界寄存器的处理器的实施例 ;
     图 3 示出处理器中的默认寄存器与边界寄存器耦合的实施例 ;
     图 4 示出用于使用边界寄存器作为具有与元数据关联的数据的默认寄存器的扩展寄存器来管理元数据的过程的实施例 ;
     图 5 示出用于边界检查的过程的实施例 ;
     图 6 示出用于使用边界寄存器作为具有与元数据关联的数据的默认寄存器的扩 展寄存器来管理元数据的过程的实施例 ; 以及
     图 7 示出计算系统的一个实施例。
     详细描述
     图 2 示出具有默认 ( 即现有 ) 寄存器 202 和边界寄存器 204 的处理器 200 的实施 例。在一个实施例中, 处理器 200 被示为具有默认寄存器 202 和表示默认寄存器的硬件寄 存器扩展的边界寄存器 204。这些边界寄存器 204 提供硬件寄存器扩展, 用于保存元数据 ( 例如边界寄存器 204 中的边界 ), 并在相应数据被复制或修改时保持元数据与其相应数据 ( 例如默认寄存器 202 中的指针 ) 的关联, 而不存在对默认寄存器 202 的附加压力。此外, 通过提供默认寄存器 202 与边界寄存器 204 之间的 ( 隐式或显式 ) 关联, 这些寄存器 202 的 调用约定保持相同。被保持在边界寄存器 204 处的元数据可由处理器 200 用于不同目的。 例如, 该元数据包括数据类型, 且处理器 200 在对它们进行运算之前可验证该数据类型。
     寄存器可包括通用或整数寄存器 ( 用于存储数据和地址, 且被认为是组合的数据 / 地址寄存器 ) 和其他寄存器, 诸如用户可存取寄存器、 数据寄存器、 地址寄存器、 条件寄存 器、 浮点寄存器、 常数寄存器、 矢量寄存器、 专用寄存器 ( 包括指令寄存器 )、 模型专用寄存 器、 控制和状态寄存器等。在一个实施例中, 整数寄存器与边界寄存器 204 关联, 但实施例 不将边界寄存器 204 限制于整数寄存器, 且可采用任何类型或组合类型的寄存器。寄存器 扩展 204 保存与寄存器 202 中的数据相关联的元数据。在一个实施例中, 当 ( 通用 ) 寄存 器 202 包含存储器地址 ( 例如指针 ) 时, 寄存器扩展 204 可用于指定使用寄存器 202 可存 取 ( 加载 / 存储 ) 的存储器地址范围。寄存器 202 中的地址可能在其边界寄存器 204 中指 定的边界之外。这些边界在存储器存取时被检查。每个存储器地址范围由下边界和上边界 ( 稍后在本文档中进一步描述和讨论 ) 组成。在该情况下, 寄存器扩展 204 称为边界寄存 器或寄存器描述符。处理器 200 进一步包括用于生成或确定存储器地址的地址生成器单元 206。可利用寄存器 202 和可任选的其他寄存器 ( 例如英特尔处理器中的变址寄存器和恒 定偏移量 ) 来产生地址。处理器 200 进一步包括用于比较地址范围的下边界和上边界的地 址比较器 ( 也称为边界检查单元 )208, 以及用于提供对与处理器 200 耦合的存储器以及寄 存器 202、 204 内的存储介质的存取的存储器存取单元 210。 如图所示, 默认寄存器 202 与地 址生成单元 206 耦合, 而地址生成单元 206 和边界寄存器 204 二者与地址比较器 ( 计算逻 辑 )208 耦合, 地址比较器 208 进一步与存储器存取单元 210 耦合。处理器 200 可包含用于 执行如本文档通篇中描述的实施例的各种任务的其他逻辑、 电路以及模块。取决于所执行 任务的本质, 默认寄存器 202 可包含任意数量和类型的寄存器, 诸如通用寄存器、 浮点寄存 器等。例如, 在涉及指令时, 采用了源寄存器和目的地寄存器, 且这些寄存器可包括通用寄 存器或浮点寄存器等。 因此, 指令可通过源寄存器提供, 而指令的结果可被放置于目的地寄 存器处 ; 源和目的地寄存器是默认寄存器 202 的一部分。
     在一个实施例中, 定义新程序指令以创建边界并将它们存储于边界寄存器 204 中。该程序指令可以是之前未在程序中定义的全新操作码, 或可以化名为使用之前未使用 的无操作 (NOP) 指令。传输元数据以保持一致性由处理器 200 针对通常用于指针操纵的指令子集 ( 诸如 ADD、 SUB、 INC、 DEC 等 ) 隐式地执行, 或使用指示传输行为的新指令来显式地 执行。传输行为描述了当元数据对应的数据在某些状况下被修改时处理器 200 如何保存元 数据, 以及当元数据对应的数据在其他状况下被修改时处理器 200 如何破坏元数据。因为 在一个实施例中, 采用了现有指令的语义来传输、 保存以及验证 / 无效元数据, 所以在软件 程序中不需要附加指令, 附加指令可潜在地负面影响程序代码大小和其性能。
     在一个实施例中, 边界检查可应用于任意数量的存储器指令, 且可经由诸如段覆 盖前缀之类的指令前缀来明确地指定。当指令具有与其默认段相同的段覆盖前缀时, 该指 令可强制执行边界检查, 而在另一实施例中, 可向该指令添加全新的前缀。 在未实现该技术 的那些处理器中, 默认段前缀是 NOP。 使用 NOP 前缀允许软件在不支持 / 实现元数据的那些 处理器上在不受益于元数据的情况下正确地工作。在一个实施例中, 允许显式边界检查指 令, 其中此类指令可具有两个或多个操作数。例如, 在两操作数形式中, 第一操作数用作存 储器地址, 而第二操作数用作存取大小 ( 字节、 字等 )。
     图 3 示出处理器中的默认寄存器 202 与边界寄存器 204 耦合的实施例。在一个实 施例中, 基于默认寄存器 202 的数量和类型以及计算机系统的处理器架构的工作方式, 寄 存器扩展 ( 例如边界寄存器 )204 可包括任意数量和类型的寄存器。在该图示中, 寄存器扩 展是 128 位宽, 且用于保存下边界的下边界扩展 302 为 64 位宽, 且用于保存上边界的上边 界扩展 304 为 64 位宽。 例如, 例如 CPMKDSCr, m 的新指令将寄存器和有效地址作为操作数。寄存器值是下 边界, 且有效地址是上边界。该指令将下边界值写入对应于指定寄存器的下边界寄存器扩 展 302, 且将上边界值写入对应于指定寄存器的上边界寄存器扩展 304。 因此, 例如, CPMKDSC RAX, [RBX], 其中 RAX = 1000 且 RBX = 1004, 在 RAX 的描述符中, 下边界扩展 306 将被写入 1000 作为下边界值, 而上边界扩展 308 将被写入 1004 作为上边界值。这将为 RAX 中的指针 建立 1000 和 1004 作为下边界和上边界。在另一实施例中, 该指令可具有用于计算下边界 和上边界的三个操作数, 而在另一实施例中, 可存在用于单独地生成下边界和上边界的两 个单独的指令。
     诸如 INC、 DEC、 AND、 OR、 ADD 以及 SUB 之类的可用于对指针执行算术运算的指令保 存在该运算中使用的寄存器的描述符内容。 这些运算修改指针值, 但不破坏该指针值, 这是 描述符内容仍有效的原因。 继续上述示例, 如果 INC RAX 被执行五次, 则 RAX 的值将为 1005, 从而我们说 RAX 现在用于使用 MOV RCX, [RAX] 来存取存储器。与 RAX 中的指针相关联的元 数据是下边界和上边界, 即 1000306 和 1004308。该信息在与 RAX 为 1005 匹配时推断出检 测到超边界的存储器存取, 即缓冲区溢出。在该实施例中, CPU/ 处理器可发出缓冲区溢出 异常的信号, 从而编程软件可采取适当的校正措施。
     诸如 MOV 或 LEA 的指令用于在寄存器之间复制指针, 且除复制指针之外, 还用于将 源描述符的内容传输至目的地描述符。当在默认寄存器 202 中的寄存器之间复制指针时, 这对应于在边界寄存器 204 中复制边界。不需要或不预期元数据的任何其他指令可无效或 破坏指令中使用的任何目的地寄存器的描述符内容 ; 例如, MOV RAX, 0 破坏 RAX 的描述符内 容, 因为边界可能对于指针有意义, 但对于整数无意义。
     在一个实施例中, 软件或硬件或这二者的组合可用于确立对存储器的细粒度存取 控制。一般而言, 存取控制指的是在各个主体存取对象时进行的检查, 用于确保尝试存取
     对象的任何主体具有存取这些对象的许可。例如, 指针可被认为是试图存取存储器中的不 同对象的主体。许可被具体化为与指针相关联的边界。存取控制信息在本文中称为 ( 下 / 上 ) 边界信息或值, 而存取控制检查称为边界检查。边界寄存器 204 和此处指定的任何方 法可在使用指针存取存储器时执行某些任务或检查, 诸如下 / 上边界检查。这些方法也可 执行附加检查, 诸如对许可和 / 或数据类型的检查。在一个实施例中, 边界寄存器 204 用于 指定用于存取存储器的地址的下 / 上边界值、 强制执行指定的边界值以及处理任何边界越 限。
     在一个实施例中, 作为存储器存取的一部分, 边界寄存器 204 和方法用于指定指 针的边界值 ( 也称为存取控制信息 )、 在必要时操纵指针和 / 或边界值、 以及强制执行边界 值。采用了使用边界寄存器 204 的新颖的细粒度存取控制或边界检查技术。此处所采用的 方法 / 装置 / 系统将边界值与指针或指针值直接关联 ( 与具有页表或分段寄存器中的控制 不同 ), 这些边界值确立对存储区的存取控制而非对通用 ( 例如整数 ) 寄存器 202 中的数据 对象的存取控制, 以便于对边界寄存器 204 中存储的边界值进行细粒度边界检查。
     如上所述, 在一个实施例中, 程序的一个或多个现有 ( 但未使用 ) 指令可用于产生 和指定边界值 ( 存取控制信息 ), 并将边界值与默认寄存器 202 中的指针相关联, 且进一步 使用指令 / 前缀来指示处理器 200 对特定存储器存取的强制要求。例如, 默认寄存器 202 可包括要被扩展的通用 ( 整数 ) 寄存器, 用于保存包括将使用默认寄存器 202 中包含的指 针存取的地址的下边界和上边界的边界值。每个默认寄存器 202 被扩充成图示为边界寄存 器 204 的两个附加寄存器, 用于保存默认寄存器 202 中的指针的下边界值和上边界值。 当使用具有有效描述符的默认 ( 整数 ) 寄存器 202 来存取存储器时, 处理器 200 针 对被存取的存储器地址强制执行描述符中的边界。然后处理器 200 可将操作数 “大小” 添 加至默认寄存器 202 中的指针, 以检查指定的上边界。例如, 如果该存取为四个字节, 则处 理器 200 可将指针加 4, 并将该数字与指定的上边界作比较。因此, 对于边界检查, 操作数 “大小” 是用于检查边界的隐式操作数之一。例如, 可在处理器架构的寻址模式的基址寄存 器中指定边界值 ; 然而, 也可在变址寄存器中指定该边界。
     根据一个实施例, 为确保与现有 ABI 的互可操作性和兼容性, 传统指令可使与目 的地寄存器相关联的边界无效。在可能不需要互可操作性的另一实施例中, 选择了边界不 适用的那些指令, 而且边界 ( 或元数据 ) 对于与目的地寄存器相关联的边界寄存器 204 被 无效。而且, 需要从特定源寄存器向特定目的地寄存器传输边界值的任何指令可向该指令 添加传输前缀。以这种方式, 实施例提供对边界值的细粒度控制, 而且处理器 200 得以确保 任何传统指令清除描述符以防止悬挂的描述符。然而, 在此互可操作性或兼容性不必要的 其他实施例中, 这些条件可放松或忽略。
     在一个实施例中, 边界检查可应用于任意数量的存储器指令, 且可经由诸如段覆 盖前缀之类的指令前缀来明确地指定。当指令具有与其默认段相同的段覆盖前缀时, 该指 令可强制执行边界检查, 而在另一实施例中, 可向该指令添加全新的前缀。在一个实施例 中, 可允许显式边界检查指令, 其中此类指令可具有两个或多个操作数。在两操作数形式 中, 第一操作数用作存储器地址, 而第二操作数用作存取大小 ( 字节、 字等 )。 使用来自存储 器地址的基址或变址寄存器的边界进行该检查。在三操作数形式中, 还可明确地指定边界 寄存器 204 的特定边界寄存器以及前两个操作数的内容。利用本图中描述的技术, 可执行
     诸如防止缓冲区溢出、 对代码 ( 例如 C/C++ 代码等 ) 的运行时间型检查之类的操作。
     图 4 示出用于使用边界寄存器作为默认寄存器的扩展寄存器来管理元数据的过 程 400 的实施例。 在处理框 402, 软件程序的指令被取出并在处理器处的默认寄存器中被解 码, 且如果该指令是传统指令, 则在处理框 404 处执行该传统指令。 在处理框 406, 执行指针 算术运算 ( 例如加法、 减法、 递增等 ), 且在处理框 408, 默认寄存器中包含的指针的上边界 和下边界被保存在作为默认寄存器的扩展寄存器的边界寄存器中。 如果传统指令不是指针 算术运算指令, 则在处理框 410 将边界无效。
     如果该指令是 CMPKDSC, 在处理框 412 计算要使用默认寄存器中包含的指针存取 的该地址的上下边界, 然后在处理框 414 将这些边界复制到边界寄存器中。如果该指令涉 及传统加载, 则在判定框 416, 确定在传统加载上是否已存在边界越限。如果是, 则在处理 框 420 发出异常信号, 如果不是, 则在处理框 418 执行传统加载操作。类似地, 如果该指令 涉及传统存储, 则在判定框 422, 确定在传统存储上是否已存在边界越限。 如果是, 则在处理 框 420 发出异常信号, 如果不是, 则在处理框 424 执行传统存储操作。
     如果该指令涉及经检查的指针 ( 例如可能具有与其关联的边界的指针 ) 加载, 则 在判定框 426, 确定在指针加载上是否已存在边界越限。如果是, 则在处理框 420 发出异常 信号, 而如果不是, 则在处理框 428 计算存储器中的该描述符的地址。 在判定框 430, 确定存 储器中是否存在该地址的有效边界。如果是, 则在处理框 432, 将来自存储器的关于默认寄 存器的有效边界复制到作为默认寄存器的扩展的边界寄存器。如果不是, 则在处理框 410, 这些边界被认为无效。
     同样, 如果在处理框 402 被取出和解码的指令涉及经检查的指针存储, 则在判定 框 434, 确定在指针存储上是否已存在边界越限。 如果是, 则在处理块 420 发出异常信号, 而 如果不是, 则在处理块 436 计算存储器中该描述符的地址。在判定框 438, 确定是否存在可 用于存储该地址的边界的任何可用的存储器。如果不是, 则在处理框 420 发出异常信号, 如 果是, 则在处理框 440 将边界从边界寄存器存储至存储器描述符。该过程 ( 从处理框 410、 414、 418、 424、 432、 440) 在过渡框 442 处结束。
     图 5 示出用于边界检查的过程 500 的实施例。 在处理框 502, 利用软件程序的可用 指令计算要存取的最低地址。在处理框 504, 计算要存取的最高地址。在处理框 506, 执行 计算。该计算确定要存取的最低地址是否大于或等于边界寄存器中提供的下边界, 以及要 存取的最高地址是否小于或等于边界寄存器中的上边界 ; 如果是这样, 则在处理框 510 未 检测到越限。如果不是, 则检测到边界越限, 且该过程在处理框 508 结束。
     图 6 示出用于使用边界寄存器作为具有与元数据关联的数据的默认寄存器的扩 展寄存器来管理元数据的过程 600 的实施例。 在处理框 602, 向已经具有一组默认寄存器的 处理器添加一组边界寄存器。默认寄存器可包括通用 ( 整数 ) 寄存器, 且可用于保存数据、 指针等。该组边界寄存器可包括能保存与默认寄存器中存在的数据有关的元数据 ( 诸如边 界 ) 的 ( 基于硬件的 ) 寄存器。在一个实施例中, 对于每个默认寄存器, 向处理器添加两个 边界寄存器, 以使它们中的一个保存与默认寄存器中的指针存取存储器所使用的地址相对 应的下边界, 而另一个保存与该地址相对应的上边界。在处理框 604, 使用处理器处的计算 逻辑利用软件程序的可用但尚未使用的一个或多个指令来执行对与地址关联的下边界和 上边界的计算。在判定框 606, 利用该计算逻辑, 确定计算出的边界是否有效。 在一个实施例中, 如 果计算出的下边界小于边界寄存器中已存在的下边界, 或如果计算出的上边界大于边界寄 存器中已存在的上边界, 则计算出的边界越限。这称为边界的展宽。如果这些边界被确定 为展宽, 则在处理框 608 发出异常信号, 且这些边界不被存储于边界寄存器中。然而, 如果 这些边界未被展宽, 则在处理框 610 将它们存储于上下边界寄存器中。
     本发明的实施例包括提供默认 ( 通用 ) 寄存器的新 / 扩展寄存器以使扩展寄存器 保存元数据、 使用指令在扩展寄存器中创建元数据、 从存储器加载元数据到扩展寄存器中 或向存储器中存储元数据、 针对元数据检查存储器存取、 通过不支持元数据以获得结果的 那些指令执行对元数据的无效、 以及提供元数据与默认寄存器的隐式关联。 此外, 使用之前 实现的 NOP 对新指令执行指令编码, 这允许软件程序在未正确实现本发明的处理器上在不 受益于元数据的情况下正确地工作 ; 同时, 在实现新技术和使用元数据的处理器上, 同样的 软件带来好处。
     此外, 本发明的实施例定义为通用寄存器中的指针指定边界的元数据。当使用指 针来引用存储器时, 处理器计算指令要存取的地址范围, 并将那些地址与扩展 ( 边界 ) 寄 存器中的边界作比较, 以确保任一指令所存取的存储器位置完全落在那些边界内。存取边 界以外的存储器位置的任何尝试被阻止, 且在此类情况下, 处理器发出异常信号以允许软 件程序处理该状况。一个实施例包括地址转换功能, 用于将存储指针的地址转换成存储器 中将存储元数据的地址, 以使与存储器地址相关联的元数据能被加载或存储到扩展寄存器 中。该地址转换技术允许元数据被存储在与存储相对应数据的位置 ( 例如默认 / 通用寄存 器 ) 分离的位置处 ( 例如新 / 扩展 / 边界寄存器 )。为简洁、 清楚以及一致起见, 此处使用 “边界” 作为元数据可能包括的内容的示例 ( 因此术语 “边界寄存器” 也是示例 ), 但构想了 元数据可包括与数据相关联的相应内容的任何数字。例如, 元数据可包括在与默认寄存器 处的相应数据有关且相关联的扩展寄存器处的数据类型 [] 的任何数字 ( 例如, 整数、 浮点数等 )。在另一实施例中, 它是诸如结构的复杂数据类型的类型表的指针。在其 他实施例中, 元数据可包括诸如只读、 读 / 写等存储器存取权限。
     图 7 示出计算系统 ( 例如计算机 ) 的一个实施例。图 7 的示例性计算系统包括 : 1) 一个或多个处理器 701, 其中至少一个可包括上述部件 ; 2) 存储器控制中枢 (MCH)702 ; 3) 系统存储器 703( 存在不同类型, 诸如双倍数据率 RAM(DDR RAM)、 扩展数据输出 RAM(EDO RAM) 等 ) ; 4) 高速缓存 704 ; 5) 输入 / 输出 (I/O) 控制中枢 (ICH)705 ; 6) 图形处理器 706 ; 7) 显示器 / 屏幕 707( 存在不同类型, 诸如阴极射线管 (CRT)、 薄膜晶体管 (TFT)、 液晶显示 器 (LCD)、 DPL 等 ; 以及 8) 一个或多个 I/O 设备 708。
     这一个或多个处理器 701 执行指令以执行该计算系统实现的任何软件例程。这些 指令频繁涉及对数据执行的某种类型的操作。数据和指令二者均存储于系统存储器 703 和 高速缓存 704 中。高速缓存 704 通常被设计成比系统存储器 703 具有更短的等待时间。例 如, 高速缓存 704 可能被集成到与处理器相同的硅芯片上, 和 / 或用较快的静态 RAM(SRAM) 单元构造, 而系统存储器 703 可能用较慢的动态 RAM(DRAM) 单元构造。通过倾向于将更频 繁使用的指令和数据存储于高速缓存 704 而非系统存储器 703 中, 该计算系统的总体性能 效率得以提高。
     特意使系统存储器 703 对计算系统中的其他部件可用。例如, 从计算系统的多个接口 ( 例如键盘和鼠标、 打印机端口、 局域网 (LAN) 端口、 调制解调器端口等 ) 接收或从计 算机系统的内部存储元件 ( 例如硬盘驱动器 ) 取回的数据在软件程序实现中被一个或多个 处理器 701 操作之前通常被临时排队到系统存储器 703 中。同样, 软件程序确定应从计算 系统通过计算系统接口之一发送至外部实体或应存储到内部存储元件的数据在被发送或 存储之前通常临时排队于系统存储器 703 中。
     ICH 705 负责确保此类数据在系统存储器 703 与其相应的适当计算系统接口 ( 以 及内部存储器件, 如果该计算系统如此设计 ) 之间正确地传递。MCH 702 负责管理处理器 701、 接口以及内部存储元件之间可能在彼此相近的时间出现的对系统存储器 703 存取的 多个竞争请求。
     一个或多个 I/O 设备 708 也在典型的计算系统中实现。I/O 设备一般负责向和 / 或从计算系统 ( 例如联网适配器 ) 转移数据 ; 或用于该计算系统中的大规模非易失性存储 ( 例如硬盘驱动器 )。ICH 705 具有双向点对点链路。
     本发明的多个实施例的部分可设置为计算机程序产品, 该计算机程序产品可包括 其上存储了计算机程序指令的计算机可读介质, 这些计算机程序指令可用于对计算机 ( 或 其它电子设备 ) 编程以执行根据本发明的实施例的过程。该机器可读介质可包括但不限于 软盘、 光盘、 压缩盘只读存储器 (CD-ROM)、 以及磁 - 光盘、 ROM、 RAM、 可擦除可编程只读存储 器 (EPROM)、 电 EPROM(EEPROM)、 磁或光卡、 闪存或适合于存储电子指令的其它类型的介质 / 机器可读介质。 在上述说明书中, 已经参照本发明的特定示例性实施例描述了本发明。 然而, 显然 可对这些实施例作出各种修改和改变, 而不背离如所附权利要求所述的本发明的更宽泛精 神和范围。因此, 说明书和附图应当被视为说明性而非限制性的意义。
    

使用寄存器扩展在中央处理单元中管理和实现元数据.pdf_第1页
第1页 / 共18页
使用寄存器扩展在中央处理单元中管理和实现元数据.pdf_第2页
第2页 / 共18页
使用寄存器扩展在中央处理单元中管理和实现元数据.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《使用寄存器扩展在中央处理单元中管理和实现元数据.pdf》由会员分享,可在线阅读,更多相关《使用寄存器扩展在中央处理单元中管理和实现元数据.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102033735A43申请公布日20110427CN102033735ACN102033735A21申请号201010500641522申请日2010092512/571,26920090930USG06F9/30200601G06F9/31820060171申请人英特尔公司地址美国加利福尼亚州72发明人BV帕特尔R古帕拉克里西南AF格鲁RJ科什里斯DA范德克JF西胡拉AK玛里克JB克罗斯兰G尼格SD罗杰斯MG迪克森MJ查尼J格特里伯74专利代理机构上海专利商标事务所有限公司31100代理人毛力54发明名称使用寄存器扩展在中央处理单元中管理和实现元数据57摘要处理器的一组默。

2、认寄存器被扩展成计算机系统的处理器上的元数据寄存器。默认寄存器上存储有数据,而与该数据关联的元数据单独存储在元数据寄存器上。30优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书7页附图7页CN102033738A1/3页21一种方法,包括将第一处理器的默认寄存器扩展成计算机系统的第一处理器上的元数据寄存器,所述默认寄存器上存储有数据;以及将元数据单独存储在所述元数据寄存器上,所述元数据与所述数据相关联。2如权利要求1所述的方法,其特征在于,所述元数据包括与由表示所述默认寄存器中的数据的指针存取存储器所使用的地址相关联的边界,所述方法包括计算默认寄存器。

3、中的指针存取所述存储器所使用的地址的下边界和上边界;以及将所述下边界和上边界存储于元数据寄存器中。3如权利要求1所述的方法,其特征在于,进一步包括对利用与包含一个或多个所述边界的一个或多个边界寄存器相关联的一个或多个默认寄存器的存储器存取执行自动边界检查。4如权利要求1所述的方法,其特征在于,进一步包括采用现有的无操作NOP指令来产生一组边界,并对该组边界执行边界检查,以保持所述元数据寄存器如果位于不操作元数据的第二处理器上时的互可操作性和兼容性,且使所启用的软件程序在所述第一和第二处理器上运行。5如权利要求1所述的方法,其特征在于,进一步包括将前缀与所使用的指令关联,以创建和传输与目的地寄存。

4、器相关联的一组边界,且使用所述前缀以及现有的存储器操作来显式地执行对该组边界的边界检查,所述前缀包括NOP前缀或新前缀,其中所述NOP前缀用于便于所启用的软件程序在所述第一和第二处理器上运行。6如权利要求1所述的方法,其特征在于,进一步包括执行包括传统指令的指令以执行指针算术运算,以将与源指针相关联的一组边界传输到目的地指针,其中默认寄存器包括具有所述源指针和目的地指针的通用寄存器,其中如果所述指针算术运算未执行,则该组边界被无效。7如权利要求6所述的方法,其特征在于,进一步包括将所述新前缀添加到从所述源指针传输到所述目的地指针的该组边界,其中所述新前缀指示该组边界从所述源指针到所述目的地指针。

5、的传输。8如权利要求6所述的方法,其特征在于,进一步包括如果检测到与该组边界有关的边界越限,则执行传统加载操作或传统存储操作。9如权利要求1所述的方法,其特征在于,进一步包括计算与存储器存取相关联的地址范围,并将具有与指针有关的最低地址和最高地址的所述地址范围与所述元数据寄存器中已存在的下边界和上边界作比较,以防止在所述下边界和上边界的边界范围之外的任何存储器存取。10如权利要求9所述的方法,其特征在于,所述防止包括避免边界越限,如果所述最低地址小于所述元数据寄存器中已存在的下边界,或所述最高地址大于所述元数据寄存器中已存在的上边界,则发生所述边界越限。11如权利要求1所述的方法,其特征在于,。

6、所述扩展包括产生与每个所述默认寄存器相对应的至少两个元数据寄存器,并将所述元数据寄存器放置在所述处理器上,其中所述至少两个元数据寄存器中的第一个用于存储所述下边界,而所述至少两个元数据寄存器中的第二个用于存储所述上边界。权利要求书CN102033735ACN102033738A2/3页312一种处理器,包括被扩展成所述处理器上的元数据寄存器的默认寄存器,所述默认寄存器用于存储数据;以及所述元数据寄存器用于存储与所述数据相关联的元数据,所述元数据与存储在所述默认寄存器处的数据分离地存储在所述元数据寄存器处。13如权利要求12所述的处理器,其特征在于,所述元数据包括与由表示所述默认寄存器中的数据的。

7、指针存取存储器所使用的地址相关联的边界,所述处理器包括用于计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界的逻辑;以及用于存储所述下边界和上边界的元数据寄存器。14如权利要求12所述的处理器,其特征在于,对应于每个所述默认寄存器产生至少两个元数据寄存器,其中所述至少两个元数据寄存器中的第一个用于存储所述下边界,而所述至少两个元数据寄存器中的第二个用于存储所述上边界。15一种计算机系统,包括动态随机存取存储器芯片;以及处理器,所述处理器具有被扩展成所述处理器上的元数据寄存器的默认寄存器,所述默认寄存器用于存储数据,以及所述元数据寄存器用于存储与所述数据相关联的元数据,所述元数据与。

8、存储在所述默认寄存器处的数据分离地存储在所述元数据寄存器处。16如权利要求15所述的计算机系统,其特征在于,所述元数据包括与由表示所述默认寄存器中的数据的指针存取存储器所使用的地址相关联的边界,所述处理器包括用于计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界的逻辑;以及用于存储所述下边界和上边界的元数据寄存器。17如权利要求15所述的计算机系统,其特征在于,对应于每个所述默认寄存器产生至少两个元数据寄存器,其中所述至少两个元数据寄存器中的第一个用于存储所述下边界,而所述至少两个元数据寄存器中的第二个用于存储所述上边界。18一种包括指令的机器可读介质,所述指令在执行时使机器将处。

9、理器的默认寄存器扩展成计算机系统的所述处理器上的元数据寄存器,所述默认寄存器上存储有数据;以及将元数据单独存储在所述元数据寄存器上,所述元数据与所述数据相关联。19如权利要求18所述的机器可读介质,其特征在于,所述元数据包括与由表示所述默认寄存器中的数据的指针存取存储器所使用的地址相关联的边界,所述指令在被执行时进一步使所述机器计算默认寄存器中的指针存取所述存储器所使用的地址的下边界和上边界;以及将所述下边界和上边界存储于元数据寄存器中。20如权利要求18所述的机器可读介质,其特征在于,所述指令在被执行时进一步使所述机器对利用与包含一个或多个所述边界的一个或多个边界寄存器相关联的一个或多权利要。

10、求书CN102033735ACN102033738A3/3页4个默认寄存器的存储器存取执行自动边界检查。权利要求书CN102033735ACN102033738A1/7页5使用寄存器扩展在中央处理单元中管理和实现元数据技术领域0001本领域一般涉及计算科学,更具体地涉及中央处理单元CPU中的元数据。背景技术0002诸如C和C的现代编程语言不使用元数据。诸如指针边界例如边界指的是开始和结束地址,即分别是指针所指向的对象的下边界和上边界之类的极其重要的元数据和对象的数据类型在诸如C/C程序的这些编程语言的执行期间不可用。正在运行的软件程序缺少此类元数据通常产生不正确的程序行为,并导致脆弱性。添加元。

11、数据的一种常规手段是将其毗邻数据本身存储在存储器中,以使软件或硬件能定位到它;然而,这需要存储器布局/应用程序二进制接口ABI的改变。因此,元数据仅在非常专门的环境中使用,在该环境中整个软件需要被重新编译以遵守修改后的新约定。0003替代地,软件在不毗邻的存储器位置中存储数据和元数据,且进一步实现映射功能以将数据与相应的元数据匹配。在该情况下,数据被载入寄存器,同时相应的元数据被载入其他现有寄存器。此外,该软件需要留意该数据与现有寄存器中的元数据之间的关联,并对元数据执行必要的传输和无效以使其与其相应的数据同步。在该情况下,当数据以寄存器参数被传递至函数时,相应的元数据也需要在寄存器中传递。这。

12、导致缺少透明性,且必须对所使用的调用约定进行扩展。此外,该技术的实现因为其对软件和系统施加的高开销而固有地很慢,该高开销诸如增加的寄存器压力、元数据传输和无效所需的附加指令等,为此该技术在实际中未被使用。0004图1示出具有默认寄存器102的处理器100的简化图。诸如通用处理器或专用处理器的处理器是具有设计成处理程序代码指令的电子电路系统的半导体芯片。多数处理器通常包括诸如默认寄存器102的多个共同架构特征。典型的寄存器在处理器上提供少量存储空间,以使与存取存储器的较慢过程相比,可使用该寄存器来存取某些数据;例如,寄存器可用于存储指令输入操作数和指令输出结果。0005其他公共架构特征可包括用于。

13、本地存储指令和/或数据的高速缓存、用于从高速缓存和/或存储器取出指令的取出电路系统、用于向高速缓存和/或存储器存储指令结果的写回电路系统。此外,具有寄存器102的处理器100被示为与随机存取存储器RAM104和只读存储器ROM106通信。附图说明0006本发明的实施方式在各附图中是作为示例而非作为限制示出的,在附图中相同的附图标记表示相同的元素,并且其中0007图1示出具有默认寄存器的传统处理器;0008图2示出具有默认寄存器和边界寄存器的处理器的实施例;0009图3示出处理器中的默认寄存器与边界寄存器耦合的实施例;0010图4示出用于使用边界寄存器作为具有与元数据关联的数据的默认寄存器的扩说。

14、明书CN102033735ACN102033738A2/7页6展寄存器来管理元数据的过程的实施例;0011图5示出用于边界检查的过程的实施例;0012图6示出用于使用边界寄存器作为具有与元数据关联的数据的默认寄存器的扩展寄存器来管理元数据的过程的实施例;以及0013图7示出计算系统的一个实施例。0014详细描述0015图2示出具有默认即现有寄存器202和边界寄存器204的处理器200的实施例。在一个实施例中,处理器200被示为具有默认寄存器202和表示默认寄存器的硬件寄存器扩展的边界寄存器204。这些边界寄存器204提供硬件寄存器扩展,用于保存元数据例如边界寄存器204中的边界,并在相应数据被。

15、复制或修改时保持元数据与其相应数据例如默认寄存器202中的指针的关联,而不存在对默认寄存器202的附加压力。此外,通过提供默认寄存器202与边界寄存器204之间的隐式或显式关联,这些寄存器202的调用约定保持相同。被保持在边界寄存器204处的元数据可由处理器200用于不同目的。例如,该元数据包括数据类型,且处理器200在对它们进行运算之前可验证该数据类型。0016寄存器可包括通用或整数寄存器用于存储数据和地址,且被认为是组合的数据/地址寄存器和其他寄存器,诸如用户可存取寄存器、数据寄存器、地址寄存器、条件寄存器、浮点寄存器、常数寄存器、矢量寄存器、专用寄存器包括指令寄存器、模型专用寄存器、控制。

16、和状态寄存器等。在一个实施例中,整数寄存器与边界寄存器204关联,但实施例不将边界寄存器204限制于整数寄存器,且可采用任何类型或组合类型的寄存器。寄存器扩展204保存与寄存器202中的数据相关联的元数据。在一个实施例中,当通用寄存器202包含存储器地址例如指针时,寄存器扩展204可用于指定使用寄存器202可存取加载/存储的存储器地址范围。寄存器202中的地址可能在其边界寄存器204中指定的边界之外。这些边界在存储器存取时被检查。每个存储器地址范围由下边界和上边界稍后在本文档中进一步描述和讨论组成。在该情况下,寄存器扩展204称为边界寄存器或寄存器描述符。处理器200进一步包括用于生成或确定存。

17、储器地址的地址生成器单元206。可利用寄存器202和可任选的其他寄存器例如英特尔处理器中的变址寄存器和恒定偏移量来产生地址。处理器200进一步包括用于比较地址范围的下边界和上边界的地址比较器也称为边界检查单元208,以及用于提供对与处理器200耦合的存储器以及寄存器202、204内的存储介质的存取的存储器存取单元210。如图所示,默认寄存器202与地址生成单元206耦合,而地址生成单元206和边界寄存器204二者与地址比较器计算逻辑208耦合,地址比较器208进一步与存储器存取单元210耦合。处理器200可包含用于执行如本文档通篇中描述的实施例的各种任务的其他逻辑、电路以及模块。取决于所执行任。

18、务的本质,默认寄存器202可包含任意数量和类型的寄存器,诸如通用寄存器、浮点寄存器等。例如,在涉及指令时,采用了源寄存器和目的地寄存器,且这些寄存器可包括通用寄存器或浮点寄存器等。因此,指令可通过源寄存器提供,而指令的结果可被放置于目的地寄存器处;源和目的地寄存器是默认寄存器202的一部分。0017在一个实施例中,定义新程序指令以创建边界并将它们存储于边界寄存器204中。该程序指令可以是之前未在程序中定义的全新操作码,或可以化名为使用之前未使用的无操作NOP指令。传输元数据以保持一致性由处理器200针对通常用于指针操纵的指说明书CN102033735ACN102033738A3/7页7令子集诸。

19、如ADD、SUB、INC、DEC等隐式地执行,或使用指示传输行为的新指令来显式地执行。传输行为描述了当元数据对应的数据在某些状况下被修改时处理器200如何保存元数据,以及当元数据对应的数据在其他状况下被修改时处理器200如何破坏元数据。因为在一个实施例中,采用了现有指令的语义来传输、保存以及验证/无效元数据,所以在软件程序中不需要附加指令,附加指令可潜在地负面影响程序代码大小和其性能。0018在一个实施例中,边界检查可应用于任意数量的存储器指令,且可经由诸如段覆盖前缀之类的指令前缀来明确地指定。当指令具有与其默认段相同的段覆盖前缀时,该指令可强制执行边界检查,而在另一实施例中,可向该指令添加全。

20、新的前缀。在未实现该技术的那些处理器中,默认段前缀是NOP。使用NOP前缀允许软件在不支持/实现元数据的那些处理器上在不受益于元数据的情况下正确地工作。在一个实施例中,允许显式边界检查指令,其中此类指令可具有两个或多个操作数。例如,在两操作数形式中,第一操作数用作存储器地址,而第二操作数用作存取大小字节、字等。0019图3示出处理器中的默认寄存器202与边界寄存器204耦合的实施例。在一个实施例中,基于默认寄存器202的数量和类型以及计算机系统的处理器架构的工作方式,寄存器扩展例如边界寄存器204可包括任意数量和类型的寄存器。在该图示中,寄存器扩展是128位宽,且用于保存下边界的下边界扩展30。

21、2为64位宽,且用于保存上边界的上边界扩展304为64位宽。0020例如,例如CPMKDSCR,M的新指令将寄存器和有效地址作为操作数。寄存器值是下边界,且有效地址是上边界。该指令将下边界值写入对应于指定寄存器的下边界寄存器扩展302,且将上边界值写入对应于指定寄存器的上边界寄存器扩展304。因此,例如,CPMKDSCRAX,RBX,其中RAX1000且RBX1004,在RAX的描述符中,下边界扩展306将被写入1000作为下边界值,而上边界扩展308将被写入1004作为上边界值。这将为RAX中的指针建立1000和1004作为下边界和上边界。在另一实施例中,该指令可具有用于计算下边界和上边界的。

22、三个操作数,而在另一实施例中,可存在用于单独地生成下边界和上边界的两个单独的指令。0021诸如INC、DEC、AND、OR、ADD以及SUB之类的可用于对指针执行算术运算的指令保存在该运算中使用的寄存器的描述符内容。这些运算修改指针值,但不破坏该指针值,这是描述符内容仍有效的原因。继续上述示例,如果INCRAX被执行五次,则RAX的值将为1005,从而我们说RAX现在用于使用MOVRCX,RAX来存取存储器。与RAX中的指针相关联的元数据是下边界和上边界,即1000306和1004308。该信息在与RAX为1005匹配时推断出检测到超边界的存储器存取,即缓冲区溢出。在该实施例中,CPU/处理器。

23、可发出缓冲区溢出异常的信号,从而编程软件可采取适当的校正措施。0022诸如MOV或LEA的指令用于在寄存器之间复制指针,且除复制指针之外,还用于将源描述符的内容传输至目的地描述符。当在默认寄存器202中的寄存器之间复制指针时,这对应于在边界寄存器204中复制边界。不需要或不预期元数据的任何其他指令可无效或破坏指令中使用的任何目的地寄存器的描述符内容;例如,MOVRAX,0破坏RAX的描述符内容,因为边界可能对于指针有意义,但对于整数无意义。0023在一个实施例中,软件或硬件或这二者的组合可用于确立对存储器的细粒度存取控制。一般而言,存取控制指的是在各个主体存取对象时进行的检查,用于确保尝试存取。

24、说明书CN102033735ACN102033738A4/7页8对象的任何主体具有存取这些对象的许可。例如,指针可被认为是试图存取存储器中的不同对象的主体。许可被具体化为与指针相关联的边界。存取控制信息在本文中称为下/上边界信息或值,而存取控制检查称为边界检查。边界寄存器204和此处指定的任何方法可在使用指针存取存储器时执行某些任务或检查,诸如下/上边界检查。这些方法也可执行附加检查,诸如对许可和/或数据类型的检查。在一个实施例中,边界寄存器204用于指定用于存取存储器的地址的下/上边界值、强制执行指定的边界值以及处理任何边界越限。0024在一个实施例中,作为存储器存取的一部分,边界寄存器20。

25、4和方法用于指定指针的边界值也称为存取控制信息、在必要时操纵指针和/或边界值、以及强制执行边界值。采用了使用边界寄存器204的新颖的细粒度存取控制或边界检查技术。此处所采用的方法/装置/系统将边界值与指针或指针值直接关联与具有页表或分段寄存器中的控制不同,这些边界值确立对存储区的存取控制而非对通用例如整数寄存器202中的数据对象的存取控制,以便于对边界寄存器204中存储的边界值进行细粒度边界检查。0025如上所述,在一个实施例中,程序的一个或多个现有但未使用指令可用于产生和指定边界值存取控制信息,并将边界值与默认寄存器202中的指针相关联,且进一步使用指令/前缀来指示处理器200对特定存储器存。

26、取的强制要求。例如,默认寄存器202可包括要被扩展的通用整数寄存器,用于保存包括将使用默认寄存器202中包含的指针存取的地址的下边界和上边界的边界值。每个默认寄存器202被扩充成图示为边界寄存器204的两个附加寄存器,用于保存默认寄存器202中的指针的下边界值和上边界值。0026当使用具有有效描述符的默认整数寄存器202来存取存储器时,处理器200针对被存取的存储器地址强制执行描述符中的边界。然后处理器200可将操作数“大小”添加至默认寄存器202中的指针,以检查指定的上边界。例如,如果该存取为四个字节,则处理器200可将指针加4,并将该数字与指定的上边界作比较。因此,对于边界检查,操作数“大。

27、小”是用于检查边界的隐式操作数之一。例如,可在处理器架构的寻址模式的基址寄存器中指定边界值;然而,也可在变址寄存器中指定该边界。0027根据一个实施例,为确保与现有ABI的互可操作性和兼容性,传统指令可使与目的地寄存器相关联的边界无效。在可能不需要互可操作性的另一实施例中,选择了边界不适用的那些指令,而且边界或元数据对于与目的地寄存器相关联的边界寄存器204被无效。而且,需要从特定源寄存器向特定目的地寄存器传输边界值的任何指令可向该指令添加传输前缀。以这种方式,实施例提供对边界值的细粒度控制,而且处理器200得以确保任何传统指令清除描述符以防止悬挂的描述符。然而,在此互可操作性或兼容性不必要的。

28、其他实施例中,这些条件可放松或忽略。0028在一个实施例中,边界检查可应用于任意数量的存储器指令,且可经由诸如段覆盖前缀之类的指令前缀来明确地指定。当指令具有与其默认段相同的段覆盖前缀时,该指令可强制执行边界检查,而在另一实施例中,可向该指令添加全新的前缀。在一个实施例中,可允许显式边界检查指令,其中此类指令可具有两个或多个操作数。在两操作数形式中,第一操作数用作存储器地址,而第二操作数用作存取大小字节、字等。使用来自存储器地址的基址或变址寄存器的边界进行该检查。在三操作数形式中,还可明确地指定边界寄存器204的特定边界寄存器以及前两个操作数的内容。利用本图中描述的技术,可执行说明书CN102。

29、033735ACN102033738A5/7页9诸如防止缓冲区溢出、对代码例如C/C代码等的运行时间型检查之类的操作。0029图4示出用于使用边界寄存器作为默认寄存器的扩展寄存器来管理元数据的过程400的实施例。在处理框402,软件程序的指令被取出并在处理器处的默认寄存器中被解码,且如果该指令是传统指令,则在处理框404处执行该传统指令。在处理框406,执行指针算术运算例如加法、减法、递增等,且在处理框408,默认寄存器中包含的指针的上边界和下边界被保存在作为默认寄存器的扩展寄存器的边界寄存器中。如果传统指令不是指针算术运算指令,则在处理框410将边界无效。0030如果该指令是CMPKDSC,。

30、在处理框412计算要使用默认寄存器中包含的指针存取的该地址的上下边界,然后在处理框414将这些边界复制到边界寄存器中。如果该指令涉及传统加载,则在判定框416,确定在传统加载上是否已存在边界越限。如果是,则在处理框420发出异常信号,如果不是,则在处理框418执行传统加载操作。类似地,如果该指令涉及传统存储,则在判定框422,确定在传统存储上是否已存在边界越限。如果是,则在处理框420发出异常信号,如果不是,则在处理框424执行传统存储操作。0031如果该指令涉及经检查的指针例如可能具有与其关联的边界的指针加载,则在判定框426,确定在指针加载上是否已存在边界越限。如果是,则在处理框420发出。

31、异常信号,而如果不是,则在处理框428计算存储器中的该描述符的地址。在判定框430,确定存储器中是否存在该地址的有效边界。如果是,则在处理框432,将来自存储器的关于默认寄存器的有效边界复制到作为默认寄存器的扩展的边界寄存器。如果不是,则在处理框410,这些边界被认为无效。0032同样,如果在处理框402被取出和解码的指令涉及经检查的指针存储,则在判定框434,确定在指针存储上是否已存在边界越限。如果是,则在处理块420发出异常信号,而如果不是,则在处理块436计算存储器中该描述符的地址。在判定框438,确定是否存在可用于存储该地址的边界的任何可用的存储器。如果不是,则在处理框420发出异常信。

32、号,如果是,则在处理框440将边界从边界寄存器存储至存储器描述符。该过程从处理框410、414、418、424、432、440在过渡框442处结束。0033图5示出用于边界检查的过程500的实施例。在处理框502,利用软件程序的可用指令计算要存取的最低地址。在处理框504,计算要存取的最高地址。在处理框506,执行计算。该计算确定要存取的最低地址是否大于或等于边界寄存器中提供的下边界,以及要存取的最高地址是否小于或等于边界寄存器中的上边界;如果是这样,则在处理框510未检测到越限。如果不是,则检测到边界越限,且该过程在处理框508结束。0034图6示出用于使用边界寄存器作为具有与元数据关联的数。

33、据的默认寄存器的扩展寄存器来管理元数据的过程600的实施例。在处理框602,向已经具有一组默认寄存器的处理器添加一组边界寄存器。默认寄存器可包括通用整数寄存器,且可用于保存数据、指针等。该组边界寄存器可包括能保存与默认寄存器中存在的数据有关的元数据诸如边界的基于硬件的寄存器。在一个实施例中,对于每个默认寄存器,向处理器添加两个边界寄存器,以使它们中的一个保存与默认寄存器中的指针存取存储器所使用的地址相对应的下边界,而另一个保存与该地址相对应的上边界。在处理框604,使用处理器处的计算逻辑利用软件程序的可用但尚未使用的一个或多个指令来执行对与地址关联的下边界和上边界的计算。说明书CN102033。

34、735ACN102033738A6/7页100035在判定框606,利用该计算逻辑,确定计算出的边界是否有效。在一个实施例中,如果计算出的下边界小于边界寄存器中已存在的下边界,或如果计算出的上边界大于边界寄存器中已存在的上边界,则计算出的边界越限。这称为边界的展宽。如果这些边界被确定为展宽,则在处理框608发出异常信号,且这些边界不被存储于边界寄存器中。然而,如果这些边界未被展宽,则在处理框610将它们存储于上下边界寄存器中。0036本发明的实施例包括提供默认通用寄存器的新/扩展寄存器以使扩展寄存器保存元数据、使用指令在扩展寄存器中创建元数据、从存储器加载元数据到扩展寄存器中或向存储器中存储元。

35、数据、针对元数据检查存储器存取、通过不支持元数据以获得结果的那些指令执行对元数据的无效、以及提供元数据与默认寄存器的隐式关联。此外,使用之前实现的NOP对新指令执行指令编码,这允许软件程序在未正确实现本发明的处理器上在不受益于元数据的情况下正确地工作;同时,在实现新技术和使用元数据的处理器上,同样的软件带来好处。0037此外,本发明的实施例定义为通用寄存器中的指针指定边界的元数据。当使用指针来引用存储器时,处理器计算指令要存取的地址范围,并将那些地址与扩展边界寄存器中的边界作比较,以确保任一指令所存取的存储器位置完全落在那些边界内。存取边界以外的存储器位置的任何尝试被阻止,且在此类情况下,处理。

36、器发出异常信号以允许软件程序处理该状况。一个实施例包括地址转换功能,用于将存储指针的地址转换成存储器中将存储元数据的地址,以使与存储器地址相关联的元数据能被加载或存储到扩展寄存器中。该地址转换技术允许元数据被存储在与存储相对应数据的位置例如默认/通用寄存器分离的位置处例如新/扩展/边界寄存器。为简洁、清楚以及一致起见,此处使用“边界”作为元数据可能包括的内容的示例因此术语“边界寄存器”也是示例,但构想了元数据可包括与数据相关联的相应内容的任何数字。例如,元数据可包括在与默认寄存器处的相应数据有关且相关联的扩展寄存器处的数据类型的任何数字例如,整数、浮点数等。在另一实施例中,它是诸如结构的复杂数。

37、据类型的类型表的指针。在其他实施例中,元数据可包括诸如只读、读/写等存储器存取权限。0038图7示出计算系统例如计算机的一个实施例。图7的示例性计算系统包括1一个或多个处理器701,其中至少一个可包括上述部件;2存储器控制中枢MCH702;3系统存储器703存在不同类型,诸如双倍数据率RAMDDRRAM、扩展数据输出RAMEDORAM等;4高速缓存704;5输入/输出I/O控制中枢ICH705;6图形处理器706;7显示器/屏幕707存在不同类型,诸如阴极射线管CRT、薄膜晶体管TFT、液晶显示器LCD、DPL等;以及8一个或多个I/O设备708。0039这一个或多个处理器701执行指令以执行。

38、该计算系统实现的任何软件例程。这些指令频繁涉及对数据执行的某种类型的操作。数据和指令二者均存储于系统存储器703和高速缓存704中。高速缓存704通常被设计成比系统存储器703具有更短的等待时间。例如,高速缓存704可能被集成到与处理器相同的硅芯片上,和/或用较快的静态RAMSRAM单元构造,而系统存储器703可能用较慢的动态RAMDRAM单元构造。通过倾向于将更频繁使用的指令和数据存储于高速缓存704而非系统存储器703中,该计算系统的总体性能效率得以提高。0040特意使系统存储器703对计算系统中的其他部件可用。例如,从计算系统的多个说明书CN102033735ACN102033738A7。

39、/7页11接口例如键盘和鼠标、打印机端口、局域网LAN端口、调制解调器端口等接收或从计算机系统的内部存储元件例如硬盘驱动器取回的数据在软件程序实现中被一个或多个处理器701操作之前通常被临时排队到系统存储器703中。同样,软件程序确定应从计算系统通过计算系统接口之一发送至外部实体或应存储到内部存储元件的数据在被发送或存储之前通常临时排队于系统存储器703中。0041ICH705负责确保此类数据在系统存储器703与其相应的适当计算系统接口以及内部存储器件,如果该计算系统如此设计之间正确地传递。MCH702负责管理处理器701、接口以及内部存储元件之间可能在彼此相近的时间出现的对系统存储器703存。

40、取的多个竞争请求。0042一个或多个I/O设备708也在典型的计算系统中实现。I/O设备一般负责向和/或从计算系统例如联网适配器转移数据;或用于该计算系统中的大规模非易失性存储例如硬盘驱动器。ICH705具有双向点对点链路。0043本发明的多个实施例的部分可设置为计算机程序产品,该计算机程序产品可包括其上存储了计算机程序指令的计算机可读介质,这些计算机程序指令可用于对计算机或其它电子设备编程以执行根据本发明的实施例的过程。该机器可读介质可包括但不限于软盘、光盘、压缩盘只读存储器CDROM、以及磁光盘、ROM、RAM、可擦除可编程只读存储器EPROM、电EPROMEEPROM、磁或光卡、闪存或适。

41、合于存储电子指令的其它类型的介质/机器可读介质。0044在上述说明书中,已经参照本发明的特定示例性实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。因此,说明书和附图应当被视为说明性而非限制性的意义。说明书CN102033735ACN102033738A1/7页12图1说明书附图CN102033735ACN102033738A2/7页13图2说明书附图CN102033735ACN102033738A3/7页14图3说明书附图CN102033735ACN102033738A4/7页15图4说明书附图CN102033735ACN102033738A5/7页16图5说明书附图CN102033735ACN102033738A6/7页17图6说明书附图CN102033735ACN102033738A7/7页18图7说明书附图CN102033735A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1