用于触发动作的装置和方法与流程

文档序号:23350253发布日期:2020-12-18 16:55阅读:112来源:国知局
用于触发动作的装置和方法与流程

本技术涉及数据处理领域。



背景技术:

一些数据处理装置允许观察点被配置为在进行特定存储器访问时触发要执行的动作,例如用于调试或检测存储器使用错误。观察点可以与数据处理装置的存储装置相关联,其中数据值被存储在可寻址的存储位置中。这种观察点的示例是数据观察点,其使得当从存储装置加载特定数据值时触发动作。另一示例是地址观察点,其使得当访问特定存储地址时触发动作。

尽管它们具有实用性,但是上述观察点具有缺点。在访问正常数据时不打算执行观察点动作的情况下,与数据观察点相关联的数据值不能被用于表示正常数据。因此,数据观察点的配置限制了可以被用于表示正常数据的数据值的数量。在地址观察点的情况下,对于要配置的每个地址观察点,通常需要比较器。为地址观察点提供大量的地址比较器在硬件上是昂贵的,因此在实践中,可以同时建立地址观察点的地址数量可能是有限的。



技术实现要素:

在一个示例配置中,提供了一种装置,包括:存储器访问电路,用于从存储器的存储器位置检索数据值;以及动作触发电路,用于:确定是要根据第一解释还是第二解释来解释数据值;并且当确定要根据第二解释来解释数据值时:确定数据值是否定义了要执行的动作;并且当确定数据值定义了要执行的动作时,触发动作的执行。

在另一示例配置中,提供了一种方法,包括:从存储器的存储器位置检索数据值;确定是要根据第一解释还是第二解释来解释数据值;并且当确定要根据第二解释来解释数据值时:确定数据值是否定义了要执行的动作;并且当确定数据值定义了要执行的动作时,触发动作的执行。

在又一示例中,提供了一种用于控制主机数据处理装置的计算机程序,用于提供执行目标程序代码的指令的指令执行环境,包括:存储器访问程序逻辑,用于从存储器的存储器位置请求数据值;以及动作触发程序逻辑,用于:确定是要根据第一解释还是第二解释来解释数据值;并且当确定要根据第二解释来解释数据值时:确定数据值是否定义了要执行的动作;并且当确定数据值定义了要执行的动作时,触发动作的执行。存储介质可以存储上述计算机程序。该存储介质可以是非暂态存储介质。

附图说明

将参考如附图中所示的本技术的示例,仅通过说明的方式进一步描述本技术,在附图中:

图1是根据一个示例布置的装置的框图;

图2示出了指令类型的示例,如果尝试设置或访问有界指针存储元件集内的指针值,则针对该指令类型可以触发错误,其中该指针值用于指定由相关联的范围信息指示的范围之外的地址;

图3示出了根据一个示例布置的与有界指针相关联的标签位的使用;

图4示意性地示出了根据示例的方法;

图5a-图5e示出了根据示例的误差抑制算法;

图6示意性地示出了根据示例的方法;以及

图7示意性地示出了根据示例的装置。

图8示意性地示出了根据示例的模拟器。

具体实施方式

根据本公开的示例的数据处理装置允许根据不同的解释来解释存储在给定存储器位置中的数据值。

作为允许这种不同解释的系统的示例,装置可以支持有界指针,其中指示特定地址的指针与指示可允许地址范围的范围信息相关联,在该可允许地址范围中指针可以被解除引用。例如,这种指针可以被称为“胖指针”。除了范围信息之外,这种有界指针还可以具有其他相关联的属性,从而定义对指针的使用的一个或多个限制/权限。这种具有权限的有界指针通常被称为“能力”,并且通过对如何使用由边界指针指定的指针值设置约束,这种有界指针的使用因此可以提供强的安全性。在这种数据处理装置中,给定存储器位置的内容可以被解释为能力或数据。

在本公开的示例中,通过在根据诸如非数据解释之类的特定解释进行解释时提供给定数据值以定义要执行的动作,来扩展该数据功能。在示例中,动作被编码在对于所讨论的解释是冗余的数据值空间内。例如,该解释可以利用一些但不是全部可用数据值。然后,可以使用未用于第二解释的至少一些剩余数据值来编码要执行的动作。以这种方式,可以实现观察点类型的功能而不减少用于数据解释的可用数据值空间:数据值的全部范围仍然可用。因此避免了数据观察点的上述缺点。此外,对于要监视的每个地址,不需要专用的地址比较器,从而避免了地址观察点的上述缺点。

如上所述,示例装置包括存储器访问电路,用于从存储器的存储器位置检索数据值。该装置包括动作触发电路,用于确定是要根据第一解释还是第二解释来解释数据值。在示例中,第一解释是数据值为数据,并且第二解释是数据值为非数据,例如元数据。当确定要根据第二解释来解释数据值时,动作触发电路确定数据值是否定义了要执行的动作。当确定数据值定义了要执行的动作时,动作触发电路触发动作的执行。因此,该装置提供了要根据第二解释来解释的数据值,以定义要执行的动作。因此,这使得能够针对潜在地触发动作的访问而监视潜在的大量的地址,而不需要许多地址比较器并且不减少在第一解释中可用于数据的编码空间。这对于检测某些类别的存储器使用错误(例如,越界违反、释放后使用(use-after-free)错误等,其中可能潜在地被错误地访问的存储器地址的数量可能相对较高,使得使用地址观察点来捕捉这种错误是不切实际的)特别有用。

在示例中,动作是误差抑制动作,其可以例如包括发信号通知异常。这可以被用作“金丝雀(canary)”以保护不受来自特定存储器区域的不期望的或未授权的加载。

可选地或附加地,动作可以包括更新诊断记录,例如通过递增计数器或存储日志文件。这使得能够跟踪来自特定存储器区域的加载,而不必发信号通知异常并暂停执行流。

动作可以包括从不同的存储器位置返回不同的数据值。这允许执行动作,同时还返回期望的数据值。例如,如以下更详细描述的,可以利用定义动作的数据值来重写释放的存储器位置,而将最初存储在存储器位置中的数据值存储在另一存储器位置中。当访问存储器位置时,可以执行动作并且可以返回来自另一存储器位置的数据值。这允许例如保持来自释放的存储器位置的加载的记录,同时仍然返回预期数据,由此允许当前定义的装置被透明地实现,而不阻碍执行不是针对当前装置具体编写的代码。

在示例中,响应于对存储器位置的尝试写入,执行数据值检索和相关联的动作,并且动作包括确定写入是否被实际执行。

在相关示例中,动作包括确定与对存储器位置的尝试写入相关联的处理器操作状态是禁止的操作状态,并且响应于确定操作状态是禁止的操作状态,禁止尝试写入。操作状态可以是至少一个执行特权等级。这种禁止来自特定特权等级的写入允许控制哪些处理可以重写数据值。例如,可以防止由除了设置数据值的处理之外的处理对数据值的意外重写。

在示例中,响应于对存储器位置的尝试写入,执行上述数据值检索和相关联的动作执行。在这种示例中,动作可以包括确定尝试写入是否被实际执行。例如,这允许动作基于是否尝试了禁止写入。

在示例中,动作触发电路基于与存储器位置相关联的控制值来确定是要根据第一解释还是第二解释来解释数据值。例如,控制值可以是标签位。控制值可以被存储在存储器的被分配用于控制值存储的区域内的控制值存储器位置中。可选地,控制值可以被存储在与存储器位置相关联的控制值存储器位置中,例如与存储器位置相邻。因此,可以基于特定系统的要求和限制来确定控制值存储的位置。

在示例中,动作触发电路用于在数据值至少部分地匹配一个或多个预定义值中的一个预定义值时触发动作。例如,如上所述,可以根据第二解释通过数据值中的冗余来定义动作,使得特定的预定义值不被用于第二解释。然后,可以使用这种预定义数据值来定义要执行的动作。

一些处理装置可以支持使用有界指针。例如,指针本身可以指向或用于确定要访问的数据值或要执行的指令的地址。然而,指针也可以具有相关联的范围信息,这些范围信息指示当使用指针时地址的可允许范围。这对于例如确保从指针确定的地址保持在特定边界内以维持行为的安全性或功能正确性可能是有用的。例如,对基于能力的体系结构的兴趣日益增长,在基于能力的体系结构中,为给定处理定义某些能力,并且如果尝试执行所定义的能力之外的操作,则可能触发错误。有界指针的范围信息可以是为这种体系结构定义的能力信息的一部分,并且在基于能力的体系结构内,这种有界指针(包括其相关联的能力信息)可以被称为能力。

因此,装置可以具有用于存储指针的存储元件,该指针具有指示在使用指针时地址的可允许范围的相关联的范围信息。每个有界指针存储元件可以是寄存器,或者通用存储器中的存储器位置,例如堆栈存储器上的位置。

某些指令可以被用于引用这种有界指针存储元件,以便获得指针,该指针然后被用于导出在指令的操作期间所需的存储器中的地址。指针可以被直接用于标识存储器地址,或者可以被用于例如通过向指针值添加偏移量来导出存储器地址。

如上所述,在示例中,第一解释是数据值为数据。在相关示例中,第二解释是数据值为元数据。元数据可以例如与存储在不同于存储元数据的存储器位置的另一存储器位置中的数据值有关。可以根据第一解释来解释存储在另一存储器位置中的数据值。在支持使用有界指针的示例中,存储在另一存储器位置中的数据值可以包括有界指针的指针值,并且元数据然后可以包括有界指针的边界。在一些这种示例中,动作触发电路将确定指针值在边界之外,并且响应于确定指针值在边界之外,发信号通知异常。以这种方式,支持能力使用的系统的数据处理功能可以被扩展以提供对动作的触发,如本文其他地方所述。

在第二解释是数据值为元数据的其他示例中,元数据是与存储在另一存储器位置中的数据相关联的纠错码。以这种方式,支持使用纠错码的系统的数据处理功能可以被扩展以提供对动作的触发,如本文其他地方所述。

现在将参考附图来描述特定示例。

图1示意性地示出了包括用于处理指令的处理管线4的数据处理装置2的示例。在该示例中,处理管线4包括多个管线级,这些管线级包括提取级6、解码级8、发出级10、执行级12以及回写级14,但是应当理解,可以提供其他类型的级或级的组合。例如,在一些实现方式中,可以包括用于执行寄存器重命名的重命名级。要处理的指令逐级移动,并且当指令在管线4的一个级处挂起(pending)时,另一指令可能在不同级处挂起。

提取级6从级1(l1)指令缓存20中提取指令。提取级6通常可以从连续的指令地址顺序地提取指令。然而,提取级还可以具有用于预测分支指令的结果的分支预测器22,并且提取级6可以在预测分支被采用的情况下,从(非顺序的)分支目标地址提取指令,或者在预测分支不被采用的情况下,从下一顺序地址提取指令。分支预测器22可以包括一个或多个分支历史表,用于存储用于预测某些分支是否可能被采用的信息。例如,分支历史表可以包括用于跟踪先前执行的分支的实际结果或表示对分支做出的预测的置信度的计数器。分支预测器22还可以包括分支目标地址缓存(btac)24,用于缓存分支指令的先前目标地址,从而可以在后续遇到相同分支指令时对其进行预测。

提取的指令被传递到解码级8,该解码级8对指令进行解码以生成解码的指令。解码的指令可以包括用于控制执行级12执行适当的处理操作的控制信息。对于从缓存20提取的一些更复杂的指令,解码级8可以将这些指令映射到多个解码的指令,这可以被称为微操作(μop或uop)。因此,在从l1指令缓存20提取的指令与管线的后续级所看到的指令之间可能不存在一对一的关系。通常,在本申请中对“指令”的引用应当被解释为包括微操作。

解码的指令被传递到发出级10,发出级10确定用于执行指令所需的操作数是否可用,并且在操作数可用时发出用于执行的指令。一些实现方式可以支持有序处理,从而以与从l1指令缓存20中提取指令的程序顺序相对应的顺序发出指令以供执行。其他实现方式可以支持无序执行,从而指令可以以与程序顺序不同的顺序被发出到执行级12。无序处理对于提高性能可能很有用,因为在等待操作数的同时暂停较早的指令时,可以首先以程序顺序执行操作数可用的后续指令。

发出级10将指令发出到执行级12,在执行级12中,执行指令以执行各种数据处理操作。例如,执行级可以包括多个执行单元30、32、34,其包括用于对整数值执行算术或逻辑运算的算术/逻辑单元(alu)30、用于对以浮点形式表示的值执行运算的浮点(fp)单元32、以及用于执行加载操作或存储操作的加载/存储单元34,该加载操作用于将数据值从级1(ll)数据缓存36加载到寄存器40,该存储操作用于将数据值从寄存器40存储到l1数据缓存36。应当理解,这些仅仅是可以提供的执行单元类型的一些示例,并且还可以提供许多其他类型。为了执行处理操作,执行级12可以从寄存器集40中读取数据值。然后,执行的指令的结果可以由回写级14写回到寄存器40。

l1指令缓存20和l1数据缓存36可以是包括多级缓存的缓存层次结构的一部分。例如,也可以提供级2(l2)缓存44,并且可选地,可以提供其他级缓存。在该示例中,l2缓存44在l1指令缓存20与l1数据缓存36之间共享,但是其他示例可以具有单独的l2指令和数据缓存。当要提取的指令不在l1指令缓存20中时,则可以从l2缓存44中提取该指令,并且类似地,如果该指令不在l2缓存44中,则可以从主存储器50中提取该指令。类似地,响应于加载指令,如果数据不在l1数据缓存36中,则可以从l2缓存44中提取该数据,并且如果需要的话,则可以从存储器50中提取数据。任何已知方案都可以被用于管理缓存层次结构。

由管线4用来引用程序指令和数据值的地址可以是虚拟地址,但是至少主存储器50以及可选地缓存层次结构的至少一些级可以被物理地寻址。因此,可以提供转换后备缓冲器52(tlb),用于将管线4所使用的虚拟地址转换为用于访问缓存或存储器的物理地址。例如,tlb52可以包括多个条目,每个条目指定虚拟地址空间的相应页面的虚拟页面地址和虚拟页面地址应当被映射到的相应物理页面地址,以便将相应页面内的虚拟地址转换为物理地址。例如,虚拟页面地址和物理页面地址可以对应于相应虚拟地址和物理地址的最高有效部分,其中当将虚拟地址映射到物理地址时,剩余的最低有效部分保持不变。除了地址转换信息之外,每个tlb条目还可以包括一些指定访问权限的信息,例如指示在管线4的某些模式下是否可以访问某些地址页面。在一些实现方式中,tlb条目还可以定义相应地址页面的其他性质,例如对响应于读取或写入操作(例如,缓存应当在回写模式还是直写模式中操作)而更新缓存层次结构的哪些级进行定义的缓存策略信息,或者对与管线4发出数据访问的顺序相比相应页面中的地址的数据访问是否可以由存储器系统重新排序进行定义的信息。

尽管图1示出了单级tlb52,但是应当理解,可以提供tlb的层次结构使得级1(l1)tlb52可以包括用于转换多个最近访问的页面中的地址的tlb条目,并且级2(l2)tlb可以被提供用于存储更多页面的条目。当所需条目不存在于l1tlb中时,则可以从l2tlb或从层次结构中的其他tlb中提取该条目。如果要访问的页面的所需条目不在任何tlb中,则可以执行页面表遍历以访问存储器50中的页面表。在本技术中可以使用任何已知的tlb管理方案。

此外,应当理解,一些系统可以支持多级地址转换,使得例如第一tlb(或tlb的层次结构)可以用于将虚拟地址转换为中间地址,并且使用一个或多个其他tlb的第二级地址转换然后可以将中间地址转换为用于访问缓存或存储器的物理地址。这对于支持虚拟化可能是有用的,其中例如第一级地址转换可以由操作系统管理,并且第二级地址转换可以由管理程序管理。

如图1所示,装置2可以具有有界指针寄存器集60。尽管在图1中有界指针寄存器集被示出为在物理上与通用数据寄存器集40分离,但是在一个实现方式中,相同的物理存储装置可以被用于提供通用数据寄存器和有界指针寄存器两者。

每个有界指针寄存器60包括可以被用于确定要访问的数据值的地址的指针值62,以及指定在使用相应指针62时地址的可允许范围的范围信息64。有界指针寄存器60也可以包括限制信息66(本文也称为权限信息),其可以定义关于指针的使用的一个或多个限制/权限。例如,限制66可以用于限制可以使用指针62的指令的类型,或者在其中可以使用指针的管线4的模式。因此,可以考虑范围信息64和限制信息66来定义其中允许使用指针62的能力。当试图使用定义的能力之外的指针62时,可以触发错误。范围信息64可以用于例如确保指针保持在某些已知边界内并且不偏离存储器地址空间中可能包含敏感信息或安全信息的其他区域。在通用数据寄存器和有界指针寄存器两者都使用了同一物理存储装置的示例中,则在一个实现方式中,指针值62例如可以被存储在与用于相应通用寄存器的相同的存储位置中。

图2示出了指令类型的示例,针对该指令类型可允许范围用于防止对数据或指令的未经授权的访问。如图2的顶部所示,特定有界指针寄存器pr1包括给定指针值62和范围信息64,在该示例中,范围信息64是使用下边界地址68和上边界地址69进行指定的,该下边界地址68定义了可允许范围的下边界,该上边界地址69定义了可允许范围的上边界。例如,边界68、69被设置为定义地址范围80000至81000。当某些指令引用有界指针寄存器pr1并且从指针62确定的地址超出该范围时,可能触发错误。

例如,如图2的部分a所示,在一些系统中,如果试图将指针寄存器60中的指针62的值设置为位于范围信息64所指定的范围之外的值(这里假设指针直接指定地址),则可能触发错误。这避免了指针62取超出特定范围的任何值,从而可以确保使用该指针的任何访问都安全地位于允许的范围内。可选地,如图2的部分b所示,当指令试图访问由指针62的地址标识的位置时,当该地址位于所指定的范围之外时,则可能触发错误。因此,仍然可以允许将指针62设置为所指定的范围之外的值,但是一旦尝试了对指针地址(或从指针派生的地址)的数据访问,如果该地址位于允许的范围之外,则可能触发错误。其他系统可能响应于图2的部分a和部分b所示的两种指令类型而触发错误。

可以以不同的方式设置范围信息64。例如安全代码、或操作系统或管理程序,可以指定给定指针所允许的范围。例如,指令集架构可以包括用于设置或修改给定指针62的范围信息64的多个指令,并且这些指令的执行可以被限制于处理器4的某些软件或某些模式或异常状态。可以使用任何已知的用于设置或修改范围信息64的技术。

除了在执行引用指针的某些指令时可以在执行级12处使用的有界指针存储元件集60之外,程序计数器能力(pcc)寄存器80还可以被用于在从级1指令缓存20提取指令时在提取级6处提供类似的功能。具体地,程序计数器指针可以被存储在字段82中,其中pcc80还提供范围信息84和任何适当的限制信息86,类似于为有界指针存储元件集60中的每个指针提供的范围和限制信息。

图3示意性地示出了如何将标记位与各个数据块相关联地使用以识别是要根据第一解释还是第二解释来解释这些数据块。在该示例中,第一解释是数据块将被解释为正常数据,并且第二解释是数据块将被解释为表示能力(即,有界指针和相关联的限制信息)。特别地,存储器地址空间110将存储一系列数据块115,其通常将具有指定的大小。仅为了说明的目的,在该示例中假设每个数据块均包括128位。与每个数据块115相关联地,提供了标签字段120,在一个示例中,该标签字段120是被称为标签位的单个位字段,其被设置以标识相关联的数据块将被解释为非数据,例如能力(即,根据第二解释来解释),并且被清除以指示相关联的数据块表示正常数据(即,根据第一解释来解释)。应当理解,与设置或清除状态相关联的实际值可以根据实现方式而变化,但是仅为了说明的目的,在一个示例中,如果标签位的值为1,则它指示相关联的数据块将被解释为非数据,而如果标签位的值为0,则它指示相关联的数据块包含正常数据。

在本示例中,第二非数据解释是数据块包含能力。当能力被加载到有界指针寄存器60(这里也称为能力寄存器)之一时,例如图3所示的能力寄存器100,则标签位与能力信息一起移动。因此,当能力被加载到能力寄存器100中时,指针102、范围信息104和限制信息106(以下称为权限信息)将被加载到能力寄存器中。此外,与该能力寄存器相关联,或者作为其中的特定位字段,标签位108将被设置为标识内容表示能力。类似地,当能力被存储回存储器时,与其中存储该能力的数据块相关联地设置相关标签位120。通过这种方法,可以区分能力和正常数据,并且因此确保正常数据不能被用作能力。

当标签位指示给定数据块表示能力时,数据块可以定义要执行的动作。在示例中,这被编码在数据块中的冗余空间内。例如,可能不需要特定数据值来定义能力。然后,可以使用这些值来定义要执行的一个或多个动作。

图4示意性地示出了根据本公开的示例的方法400。方法400可以例如在通用处理电路中或在专门配置为实现方法400的专用电路中实现。

在块405处,从存储器的存储器位置检索数据值,例如,如以上关于图1所描述的。

在块410处,确定是根据第一解释还是第二解释来解释数据值。如上所述,在示例中,第一解释是数据值对应于数据,第二解释是数据值对应于能力。例如,块410的确定可以基于与数据值相关联的标签位,如以上关于图3所描述的。

如果在块410处确定要根据第二解释来解释数据,则流程进行到块415。

在块415处,确定数据值是否定义了要执行的动作。在本公开的其他地方描述了这样的动作的特定示例以及如何它们在数据值内对其进行编码。例如,该动作可以是误差抑制动作。

如果在块415处确定数据值定义了要执行的动作,则流程进行到块420。

在块420处,执行动作。

方法400由此提供了要根据不同解释来解释给定的数据值,并且还提供了要根据被指示为与第二解释相对应的数据值来触发动作的执行。例如,如本文其他地方所述,要执行的动作可以利用冗余性的优点来定义,即通过利用第二解释不需要的数据值。以这种方式,增加了系统的数据处理功能,而不需要额外的存储装置来表示是否要执行动作。

如上所述,要执行的动作可以是误差抑制动作。例如,动作可以包括例如通过存储或更新日志文件或递增计数器来更新诊断记录。可选地或附加地,动作可以包括从与原始访问的存储器位置不同的存储器位置返回数据值。现在将参考图5a-图5e描述这种动作的示例。

图5a示意性地示出了比较系统的存储器500,其中本公开的方法未被实现为使得可以根据第一数据解释或第二非数据解释来解释数据值,但是根据第二解释的数据值不定义要执行的动作。

存储器500包括在存储器位置505a-505e中的数据值a-e。检索请求510指向存储器位置505c,并且在检索515中检索数据值c。

图5b示意性地示出了释放存储器位置505a-505e之后的存储器500。虽然存储器位置505a-505e已经被释放(由它们的虚线描绘所指示),但是数据值a-e还没有被重写,并且因此存储器位置505a-505e仍然包含数据值a-e。

检索请求520指向存储器位置505c。如果该检索请求未被阻止(例如,通过阻止对释放的存储器位置的访问的系统处理),则在检索525中将检索数据值c。在一些系统中,这种行为是期望的,例如以允许执行流继续进行而不是导致崩溃。

图5c示意性地示出了根据本公开的示例的存储器530。存储器包括存储器位置535a-535e,这些存储器位置分别包含数据值a-e,使得存储器530具有与图5a的存储器500相同的配置。

图5d示意性地示出了在释放存储器位置535a-535e的处理的第一步骤之后的存储器530。存储器位置535a-535e的内容(即数据值a-e)被复制到不同的存储器位置集540a-540e。

图5e示意性地示出了释放存储器位置535a-535e的处理完成之后的存储器530。其他数据值a2-e2已经被写入到存储器位置535a-535e,之后存储器位置535a-535e已经被释放(由它们的虚线描绘所指示)。

存储以下指示,即其他数据值a2-e2是要根据非数据解释来解释的数据值,例如通过与本文其他地方所述的存储器位置535a-535e中的每一个存储器位置相关联的标签位的方式。在本示例中,每个数据值535a-535e标识其原始内容被复制到其中的相应存储器位置540a-540e,并且还定义如本文其他地方所述的误差抑制动作。例如,相应存储器位置540a-540e可以通过距存储器位置535a-535e的偏移的方式来标识。

检索请求545指向释放的存储器位置535c。确定数据值c2不表示数据,而是标识相应存储器位置540c,并且还定义误差抑制动作。基于此,在标识550中标识相应存储器位置540c的内容,即数据值c。在检索555中检索数据值c,并且执行误差抑制动作。以这种方式,定义并执行误差抑制而不阻止数据值c的检索。因此,可以以与上面关于图5a-图5b所述的相同的方式基于数据值c来进行执行,同时提供要执行的误差抑制动作。因此,可以透明地实现误差抑制功能,使得除了误差抑制动作的实际性能之外,执行流程与比较系统(诸如图5a-图5b的比较系统)相比保持不变。因此,可以在不负面地影响用户体验的情况下实现误差抑制。

图6示意性地示出了根据本公开的示例的方法600。在该示例中,给定数据值的第一解释是其表示数据,并且第二解释是其表示与根据第一解释而解释的另一数据值相关联的元数据。方法600可以例如在通用处理电路中或者在被专门配置为实现方法600的专用电路中实现。

在块605处,从存储器的存储器位置中检索数据值,例如,如上文关于图1所描述的。

在块610处,确定是要根据第一解释还是根据第二解释来解释数据值。例如,块610的确定可以基于与数据值相关联的标签位,如上文关于图3所描述的。

如果确定数据值要根据第一解释来解释,则流程进行到块615,在块615中数据值被解释为数据。

如果确定要根据第二解释来解释数据值,则流程进行到块620。在块620处,确定数据值是否定义了要执行的动作。在本公开的其他地方描述了这种动作的特定示例以及数据值内对其进行编码。例如,该动作可以是误差抑制动作。

如果确定数据值定义了要执行的动作,则流程进行到块625,在块625处触发动作的执行。

在执行动作之后,流程进行到块630。可选地,如果在块620处确定数据值没有定义要执行的动作,则流程直接前进到块630,跳过块625。在块630处,数据值被解释为元数据。

图7示意性地示出了根据本公开的示例的装置700。该装置的组件可以例如被实现为一个或多个通用处理组件内的例程,和/或被实现为专用电路。

装置700包括存储器访问电路,用于从存储器710的存储器位置检索数据值。存储器710可以在装置700外部。

装置700包括动作触发电路715。动作触发电路715从存储器访问电路705接收数据值。

动作触发电路715包括处理块715a-715c。

块715a使动作触发电路715确定要根据第一解释还是第二解释来解释数据值。

块715b使动作触发电路715在要根据第二解释来解释数据值的情况下确定数据值是否定义了要执行的动作。

块715c使动作触发电路715在数据值定义了要执行的动作的情况下触发该动作的执行。

以此方式,装置700被配置为执行本公开的方法。

图8示出了可以使用的模拟器实现方式。虽然先前描述的实施例在用于操作支持相关技术的特定处理硬件的装置和方法方面实现了本发明,但是也可以提供根据本文描述的实施例的指令执行环境,其通过使用计算机程序来实现。这种计算机程序通常被称为模拟器,因为它们提供硬件架构的基于软件的实现方式。各种模拟器计算机程序包括仿真器、虚拟机、模型和二进制转换器,包括动态二进制转换器。通常,模拟器实现方式可以在主机处理器805上运行,可选地运行支持模拟器程序815的主机操作系统810。在一些布置中,在硬件和所提供的指令执行环境之间可以存在多层模拟,和/或在相同的主机处理器上提供的多个不同的指令执行环境。历史上,已经要求强大的处理器来提供以合理速度执行的模拟器实现方式,但是这种方法在某些情况下可能是合理的,例如当出于兼容性或重用原因而期望运行另一处理器本地的代码时。例如,模拟器实现方式可以提供具有主机处理器硬件不支持的附加功能的指令执行环境,或者提供通常与不同硬件架构相关联的指令执行环境。在“一些有效架构模拟技术(someefficientarchitecturesimulationtechniques)”(robertbedichek,1990年冬季的usenix会议,第53-63页)中给出了模拟的概述。

就先前已经参考特定硬件构造或特征描述的实施例而言,在模拟的实施例中,可以通过适当的软件构造或特征来提供等效功能。例如,特定电路可以在模拟的实施例中实现为计算机程序逻辑。类似地,诸如寄存器或缓存之类的存储器硬件可以在模拟的实施例中实现为软件数据结构。在其中在主机硬件(例如,主机处理器805)上存在先前描述的实施例中所引用的一个或多个硬件元件的布置中,一些模拟的实施例可以在适当时利用主机硬件。

模拟器程序815可以被存储在计算机可读存储介质820(其可以是非暂态介质)上,并且向目标代码825(其可以包括应用、操作系统和管理程序)提供程序接口(指令执行环境),这些程序接口与由模拟器程序815建模的硬件架构的应用程序接口相同。因此,可以使用模拟器程序815从指令执行环境内执行包括上述动作触发的目标代码825的程序指令,使得实际上不具有上述装置2的硬件特征的主机计算机805可以仿真这些特征。例如,模拟器程序815可以包括用于控制目标代码825的指令对存储器的访问的存储器访问程序逻辑830。例如,存储器访问程序逻辑830可以包括用于从存储器的存储器位置请求数据值的指令。此外,模拟器程序815可以包括动作触发程序逻辑835,其包括用于触发动作的执行的指令,如关于以上方法更详细地描述的。

通过使用上述技术,应当理解,动作触发功能可以在数据处理系统中实现,同时避免了其中实现数据观察点和/或地址观察点的比较系统的缺点。此外,可以减少或消除对执行流的影响。

本文描述的方法可以在硬件和/或软件中执行。这种硬件可以是通用处理器,或者是诸如专用集成电路或现场可编程门阵列之类的更具体的单元。

尽管本文已经参考附图详细描述了本发明的说明性示例,但是应当理解,本发明不限于这些精确的示例,并且在不脱离由所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可以在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以对从属权利要求的特征与独立权利要求的特征进行各种组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1