CN111936972B - 数据处理装置及其操作方法 - Google Patents

数据处理装置及其操作方法 Download PDF

Info

Publication number
CN111936972B
CN111936972B CN201980023955.XA CN201980023955A CN111936972B CN 111936972 B CN111936972 B CN 111936972B CN 201980023955 A CN201980023955 A CN 201980023955A CN 111936972 B CN111936972 B CN 111936972B
Authority
CN
China
Prior art keywords
transaction
exception
data processing
response
circuitry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980023955.XA
Other languages
English (en)
Other versions
CN111936972A (zh
Inventor
马修·詹姆斯·霍斯内尔
格里戈里奥斯·马格克里斯
斯蒂芬·迪斯特尔霍斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN111936972A publication Critical patent/CN111936972A/zh
Application granted granted Critical
Publication of CN111936972B publication Critical patent/CN111936972B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请涉及数据处理装置及其操作方法。公开了一种装置和一种操作数据处理装置的方法及其模拟器。数据处理电路响应于指令而执行数据处理操作,其中一些指令集可以被定义为相对于由数据处理电路执行的其他操作而被原子地执行的事务。当在事务期间发生同步异常时,事务被中止并且异常计数器被递增。当计数器达到阈值时,事务失败信号被生成,在适当情况下允许响应于该数量的异常使事务中止被执行。

Description

数据处理装置及其操作方法
技术领域
本公开涉及数据处理。更具体地,本公开涉及异常的处理。
背景技术
响应于指令而执行数据处理操作的数据处理装置可能能够执行与一个或多个指令相关联的数据处理操作作为“事务”,使得该指令或这些指令相对于由该装置执行的其他操作而被原子地执行。也就是说,它们被整体和完全地执行,或者根本不执行,使得系统的其余部分永远不会察觉到“执行一半”状态。例如,这样的事务可以由在指令的事务集之前的事务发起指令来定义,并且由事务结束指令来结束。数据处理装置还可以被布置为通过执行预定义的异常响应来响应于同步异常(即,由指令执行产生的异常)。在可以处理上述事务指令执行的装置的上下文中出现异常的一个结果是,当事务当前在进行中时,该事务被中止,这通常在硬件级别被处理,使得操作系统不知道同步异常已经引起事务中止。
发明内容
在至少一个示例实施例中,存在一种装置,该装置包括:数据处理电路,用于响应于数据处理指令而执行数据处理操作,其中,数据处理电路包括事务支持电路,该事务支持电路响应于定义事务的指令序列,以使由指令序列定义的数据处理操作的事务集相对于由数据处理电路执行的其他数据处理操作被原子地执行;以及异常处理电路,响应于在执行定义事务的指令序列期间发生同步异常,以使事务支持电路中止事务,使得数据处理操作的事务集不被执行,其中,异常处理电路包括异常计数电路,该异常计数电路响应于在执行定义事务的指令序列期间发生同步异常而使由计数电路保存的计数递增,并且异常处理电路响应于计数达到阈值而生成事务失败信号。
在至少一个示例实施例中,存在一种操作数据处理装置的方法,该方法包括以下步骤:响应于数据处理指令而执行数据处理操作;响应于定义事务的指令序列,使由指令序列定义的数据处理操作的事务集相对于其他数据处理操作被原子地执行;响应于在执行定义事务的指令序列期间发生同步异常而中止事务,使得数据处理操作的事务集不被执行;响应于在执行定义事务的指令序列期间发生同步异常使计数递增;以及响应于计数达到阈值而生成事务失败信号。
在至少一个示例实施例中,存在一种用于控制主机数据处理装置的计算机程序,用于提供执行目标程序代码的指令的指令执行环境,该计算机程序包括:
数据处理逻辑,用于响应于数据处理指令而执行数据处理操作,其中,数据处理逻辑包括事务支持逻辑,该事务支持逻辑响应于定义事务的指令序列,以使由指令序列定义的数据处理操作的事务集相对于由数据处理逻辑执行的其他数据处理操作被原子地执行;以及
异常处理逻辑,响应于在执行定义事务的指令序列期间发生同步异常,以使事务支持逻辑中止事务,使得数据处理操作的事务集不被执行,
其中,异常处理逻辑包括异常计数逻辑,该异常计数逻辑响应于在执行定义事务的指令序列期间发生同步异常,而使由计数逻辑保存的计数递增,并且异常处理逻辑响应于计数到达阈值而生成事务失败信号。
一种存储介质可以存储上述计算机程序。该存储介质可以是非暂态存储介质。
附图说明
将参考如附图中所示的本技术的实施例,仅通过示例的方式,进一步描述本技术,在附图中:
图1示意性地示出了一个示例实施例中的装置;
图2示意性地示出了一个示例实施例中的异常处理电路;
图3示意性地示出了一个示例实施例中的异常处理电路;
图4示意性地示出了一个示例实施例中的异常处理电路;
图5是示出一个示例实施例中的异常处理方法的流程图;以及
图6示出了支持数据处理逻辑和异常处理逻辑的模拟器的示例。.
具体实施方式
至少一些实施例提供了一种装置,包括:数据处理电路,用于响应于数据处理指令而执行数据处理操作,其中数据处理电路包括事务支持电路,该事务支持电路响应于定义事务的指令序列,使得由指令序列定义的数据处理操作的事务集相对于由数据处理电路执行的其他数据处理操作被原子地执行;以及异常处理电路,响应于在执行定义事务的指令序列期间发生同步异常,以使事务支持电路中止事务,使得数据处理操作的事务集不被执行,其中,异常处理电路包括异常计数电路,该异常计数电路响应于在执行定义事务的指令序列期间发生同步异常而使由计数电路保存的计数递增,并且异常处理电路响应于计数达到阈值而生成事务失败信号。
在响应于数据处理指令而执行数据处理操作并支持“事务”的装置中,根据该事务,数据处理指令的事务集相对于其他数据处理操作被原子地执行,一种发生异常的方法是同步异常被抑制(即,通常被调用的常规异常处理例程不被调用),并且事务完全失败并将状态恢复为事务之前状态。结果,操作系统不知道发生了异常并且事务失败了。虽然这通常被认为是有益的,因为这避免了在发生同步异常和事务失败时对操作系统的干扰,但是这种同步异常和事务失败可能相对频繁并且因此具有相对破坏性,因此本技术认识到,可能存在这样的上下文,其中如果同步异常发生并且事务失败的事实应当以某种方式作为结果被通知,则这是优选的。因此,本技术提出了一种方法,其中提供了异常处理电路,该异常处理电路在如果被同步异常中断则导致事务被中止时,仍然保持对这种发生(即,事务期间的同步异常)的计数,并且如果该计数达到阈值,则生成事务失败信号。可以以多种方式使用该事务失败信号,但特别地可以通知操作系统事务中发生了阈值数量的异常,并且例如,如果操作系统确定这可能指示恶意活动(通过恶意软件),则可以采取缓解措施来防御该活动。例如,本技术认识到用户空间程序可以在操作系统不知道的情况下尝试事务中的恶意存储器访问模式。本技术解决了这个问题。因此,取决于为计数器设置的阈值的选择,特权代码可以(偶尔)观察到同步异常活动。在数据处理装置内的特权级别的上下文中,可以由特权级别设置阈值的定义,并且在这些异常的发生从用户级别上升到特权级别之前,会忽略(即,抑制)同步异常达到此定义的数字限制。
该阈值可以为该装置预定义,或者在一些实施例中可以是由异常计数电路保存的可编程值。这允许根据装置执行其数据处理操作的上下文而灵活地配置该装置。作为安全措施,提出了可编程值仅可由装置内的特权级别设置,使得非特权级别(例如,用户级别)不能对其进行修改。
异常计数电路可以对所有异常进行计数,例如用单个计数器对所有异常进行计数,但是在一些实施例中,异常计数电路响应于执行定义事务的指令序列期间发生同步异常而根据同步异常的类型使由计数电路保存的计数递增。例如,异常计数电路可以被布置为仅使针对特定的(一种或多种)类型的异常的计数递增(并且因此最终生成事务失败信号),如果确定这种(一种或多种)类型的异常值得生成事务失败,则其他异常继续被完全抑制而没有任何潜在的事务失败信号。
实际上,异常计数电路可以被布置为忽略某些异常类型,并且因此在一些实施例中,异常计数电路包括异常类型掩码,该异常类型掩码被配置为通过异常类型来过滤指示同步异常的发生的输入信号。因此,该异常类型掩码本身可以是可编程的,因此可以被用于配置异常计数电路对事务中发生的异常类型进行计数的方式。
异常计数电路可以(如上所述)仅包括单个计数器,该单个计数器被用于对在事务期间发生的一种或多种类型的异常的发生进行计数,但是在一些实施例中,异常计数电路包括多个计数器,并且异常计数电路被布置为根据同步异常的类型来使多个计数器中的选定计数器递增。相应地,异常计数电路因此可以维护在事务期间发生的不同类型的同步异常(或同步异常类型集)的单独计数。
事务失败信号可以简单地指示由于同步异常而导致的事务失败的数量现在达到阈值,而没有在同步异常的类型之间进行区分,但是在某些实施例中,异常处理电路响应于计数达到阈值而生成事务失败异常类型信号,该事务失败异常类型信号指示导致计数达到阈值的同步异常的类型。因此,在异常处理电路可以在不同类型的同步异常之间进行区分的情况下,该异常处理电路然后还可以生成事务失败异常类型信号,该事务失败异常类型信号向接收者提供关于使得计数达到阈值的同步异常的类型的信息。例如,这可以使操作系统更清楚地了解可能在进行中的恶意活动类型。
此外,可以提供与事务失败信号和事务失败异常类型信号相关联的附加信息,在一些实施例中,该附加信息采取事务失败异常简况的形式。在这些实施例中,异常处理电路响应于计数达到阈值而输出事务失败异常简况,该事务失败异常简况指示以下各项中的至少一者:异常的数目、异常类型的数目以及异常类型集中的、使得所述计数达到所述阈值的每个异常类型的异常的数目。换句话说,可以从异常处理电路输出其他信息,以允许接收者更详细地了解导致计数或计数器达到(一个或多个)阈值的原因。如上所述,用于抑制响应于异常的事务失败通知的一个原因是避免给接收者增加该信息的负担(例如,过于频繁地通知操作系统),并且因此,在一些实施例中,异常计数电路包括用于测量预定时间段的定时电路,该计数电路响应于定时电路指示经过了预定时间段来复位由计数电路保存的计数。这种方法认识到,超出计数器的阈值后,接收者可能会知道该计数在预定时间段内达到阈值,并且定时电路允许这种情况发生,并以预定时间间隔复位,使得只有在该时间段内计数达到阈值才会向接收者通知事务失败信号。
通常,事务中止可能意味着对于装置的其他组件而言,所有已知的是事务失败,而没有确切地知道事务内失败的原因,因为事务的特征是当它们失败时状态退回到事务开始之前的状态,并且本技术认识到,与由于同步异常而导致事务失败的原因有关的其他信息可能是有益的。因此,在一些实施例中,异常处理电路包括异常程序计数器存储装置,用于在执行定义事务的指令序列期间存储与同步异常的发生相关联的程序计数器值,并且异常处理电路响应于计数达到阈值而输出程序计数器值。然后,接收者可以利用该程序计数器值来更具体地标识同步异常的源,并且因此标识事务失败的源。
至少一些实施例提供了一种操作数据处理装置的方法,该方法包括以下步骤:响应于数据处理指令而执行数据处理操作;响应于定义事务的指令序列,使由指令序列定义的数据处理操作的事务集相对于其他数据处理操作被原子地执行;响应于在执行定义事务的指令序列期间发生同步异常而中止事务,使得数据处理操作的事务集不被执行;响应于在执行定义事务的指令序列期间发生同步异常而使计数递增;以及响应于计数达到阈值而生成事务失败信号。
至少一些实施例提供了一种用于控制主机数据处理装置计算机程序,用于提供执行目标程序代码的指令的指令执行环境,包括:
数据处理逻辑,用于响应于数据处理指令而执行数据处理操作,其中,该数据处理逻辑包括事务支持逻辑,该事务支持逻辑响应于定义事务的指令序列,以使由指令序列定义的数据处理操作的事务集相对于由数据处理逻辑执行的其他数据处理操作被原子地执行;以及
异常处理逻辑,响应于在执行定义事务的指令序列期间发生同步异常,以使事务支持逻辑中止事务,使得数据处理操作的事务集不被执行,
其中,该异常处理逻辑包括异常计数逻辑,该异常计数逻辑响应于在执行定义事务的指令序列期间发生同步异常而使由计数逻辑保存的计数递增,并且该异常处理逻辑响应于计数达到阈值而生成事务失败信号。
至少一些实施例提供了可以存储上述计算机程序的存储介质。该存储介质可以是非暂态存储介质。
现在参考附图来描述一些特定实施例。
图1示意性地示出了一个示例实施例中的装置10。装置10包括数据处理电路12,其例如可以是管线级序列的形式(在图中从左到右)。数据处理电路12响应于从存储器14检索并临时缓存在指令缓存16中的指令来执行数据处理操作。数据处理操作可以使得从存储器14检索临时缓存在数据缓存18中的数据项。数据处理电路12执行的数据处理操作可以参考并修改寄存器20中保存的值。数据处理电路12被示为包括事务处理电路22,该事务处理电路22使得数据处理电路能够支持事务操作,根据该事务操作,由标识的指令集定义的事务(例如,以“事务开始”指令开始并以“事务结束”指令结束)相对于其他数据处理操作被原子地执行。在事务将被原子地执行的情况下,如果它失败,则状态需要被退回到事务的开始,并且寄存器集20中相关寄存器的内容的快照被用于该目的,使得如果事务被中止,则在事务开始时创建的寄存器快照被用于“展开”对在尝试的事务中执行的那些寄存器的任何修改。装置10还包括异常控制电路24,其接收与装置10内发生的各种操作相关的信号,并且可以作为响应而生成异常信号,这通常将典型地使得预定异常处理例程被执行。此外,异常控制电路24接收来自事务处理电路的指示事务何时在进行中的信号,并且这修改了异常控制电路24的行为,如将在下面参考附图更详细地描述的,但是特别地,异常控制电路24可以抑制该异常(如果它在事务期间发生并且事务被中止),而不是响应于异常而使得异常处理例程被执行。此外,如果这种情况发生的次数的计数现在已经达到阈值,则它使得生成事务失败信号。
图2示意性地示出了一个示例实施例中的异常处理电路30。异常处理电路30被示为包括异常电路32和异常计数电路34。接收来自装置的各种组件的多个信号并响应于这些信号可以生成异常的异常电路32可以被认为以技术人员熟悉的方式执行以在数据处理装置中生成异常。然而,本技术所提出的异常计数电路34可以被认为是对异常信号的各种过滤器,因为在某些情况下,异常信号可以被发送而不受异常计数电路36的影响,并且因此不受异常处理电路30的影响,但是在其他情况下,相反,事务失败信号可以被生成。为此目的,异常计数电路包括异常计数器36、阈值存储装置38、比较电路40和确定当事务未在进行中时何时接收到异常的电路42。异常处理电路30接收指示事务何时在进行中的信号(即,例如从图1的示例中所示的事务处理电路22)。特别地,这由异常计数器36接收,该异常计数器36被布置为仅在事务在进行中时由异常电路32生成异常的情况下才递增。比较电路40将由异常计数器36指示的值与存储的阈值38进行比较。阈值可以是可编程的(通过系统中具有适当特权级别的代理,例如通过特权级别代码),该变型由图2中的虚线指示。当比较电路40确定异常计数器达到阈值时,生成事务失败信号。例如,这可以由特权级别(例如,如果认为适当的话,在操作系统级别,例如以防御方式进行响应)的代理接收。否则,如果在事务在进行中时接收到异常,但是异常计数器尚未达到阈值,则简单地抑制异常,并且由事务电路44中的异常所生成的信号使事务中止。然而,相反地,如果在事务未在进行中时接收到异常,则被配置为对此进行标识的电路44使得异常信号被生成(即,实际上,该异常信号不受影响地通过异常计数电路34)。结果,可以执行为该异常定义的异常处理例程。
图3示意性地示出了一个示例实施例中的异常处理电路。异常电路50接收来自上述各种系统组件的信号,并且可以响应于此而生成异常信号。然而,另外,如图3的示例中所示,异常电路50还可以生成异常类型的指示。异常信号和异常类型的指示由异常处理电路52内的掩码54接收。异常信号和异常类型信号由本身可编程的掩码54接收,并且因此用作对接收到的异常信号的过滤器。然而,注意,图中从掩码54引出的虚线指示异常信号也直接绕过掩码54而以未被掩码的方式传递到电路56,电路56可以标识何时在事务未在进行中时接收到异常,并且因此使异常信号“未被过滤”通过异常处理电路52。异常信号也由与逻辑58接收,与逻辑58接收事务在进行中信号作为其另一输入。结果,当事务在进行中的同时接收到异常时,生成中止事务信号。根据异常信号的类型,被掩码的异常信号被传递到两个计数器60、62之一,这两个计数器为不同类型的异常维护各自的计数。这些计数器可以仅为一种特定类型的异常维护计数,或者这些计数器中的任一个或两个可以为多于一种类型的异常核对异常计数。此外,在其他示例实施例中,可以提供多于两个计数器,但是为了简单起见,在图3中仅示出了两个计数器。每个计数器具有关联的阈值64、66,并且当关联的比较电路68、70确定相应计数器达到其相应阈值时,则生成指示类型的事务失败信号。在图3的示例中,可以生成两种类型的事务失败信号。可以自然生成的事务失败信号的数量取决于所提供的计数器的数量。注意,计数器接收事务在进行中信号,使得仅在事务在进行中时接收到相关类型的异常的情况下才实现计数器。
图4示意性地示出了一个示例实施例中的异常处理电路。异常电路80以与图3的异常电路50相同的方式接收来自装置的各种组件的各种信号,并且因此可以生成异常信号和异常类型的指示。这些异常由异常处理电路82接收,特别是由其中提供的过滤器84接收,该过滤器84可以被配置为以图3的掩码54的方式滤出某些异常或异常类型,并且还将接收到的相关类型的异常信号的指示传递到计数器86、88、90之一。由这些相应计数器中的每个计数器保存的值被控制电路92接收,该控制电路92为异常处理电路82提供各种控制功能并且为计数器中的每个计数器保存定义的阈值。当计数器之一达到其阈值时,控制电路92可以生成事务失败信号。另外,不管计数器是否达到其阈值,当事务在进行中时从异常电路80接收到任何异常时,控制电路92生成事务中止信号。相反,当事务未在进行中时接收到异常时(控制信号接收到来自装置的事务处理电路的事务在进行中信号),控制信号生成异常信号(即,由异常电路80有效地生成的异常信号以未被修改的方式通过异常处理电路82)。除了当计数器之一达到其阈值时生成事务失败信号之外,控制电路92还生成失败简况信号,该失败简况信号提供与事务失败有关的附加信息。例如,这可以是计数器86、88、90中的每个计数器的当前值的快照,其可以指示接收到的某些类型的异常的数量,并且特别地可以指示使得给定计数器达到其阈值的某个类型的异常的数量。另外,控制电路92接收当前PC值94的指示,使得在生成事务失败信号并且生成关联的失败简况的情况下,可选地或另外地,控制电路92可以输出当前PC值94的指示,使得事务失败信号的接收者可以知道事务中哪条指令引起了使得相关计数器达到其阈值的同步异常。否则,在事务被简单地中止的情况下,事务失败信号的接收者可能没有关于定义事务集的指令集内的哪个指令引起同步异常并且因此引起事务中止的任何指示。最后,异常处理电路82还包括定时器96,该定时器96被布置为以预定时间间隔将信号发送到控制电路92。响应于接收到该定时信号,控制电路92使计数器86、88、90中的每个计数器复位,从而仅当在该预定时间段内接收到阈值数量的异常时才可以生成事务失败信号等。这意味着,如果确定导致事务中止的异常在它们以低于特定频率发生时是可接受的,则事务失败信号的接收者将不会太频繁地受到事务失败信号的干扰。通常应当注意,图2、图3和图4中所示的异常处理电路实施例的各种子组件不应被认为是仅在那些实施例中提供的,并且这些特征的各种组合可以在本技术的范围内的其他示例实施例中进行。相反,图2、图3和图4各自所示的组件的组合不应被视为必须相互关联地提供,例如在图2所示的实施例仅具有一个异常计数器,而图4所示的示例具有多个异常计数器并且具有诸如程序计数器和复位定时器之类的其他可选特征的情况下,不应得出如下结论:程序计数器和复位定时器仅可以在具有多个计数器的实施例中提供,并且这些计数器中的每个或两个可以在仅具有单个计数器的实施例中提供。这同样适用于图2、图3和图4的示例性实施例中的任何子组件,这些子组件没有被另外描述为以基本方式相互作用。
图5示出了在一个示例实施例的方法中采取的一系列步骤。该流程可以被认为开始于步骤100,在步骤100中由指令定义的数据处理被执行。然后在步骤102,确定指令执行是否进入指令的事务集,例如通过“事务开始”指令。如果还没有,则流程返回到步骤100,因为所描述的方法仅涉及当事务在进行中时发生的处理。如果事务在进行中,则流程从步骤102进行到步骤104,在步骤104中确定是否生成异常。如果还没有,则流程进行到步骤112,在步骤112中确定事务现在是否完成,例如通过“事务结束”指令。如果事务现在结束,则流程返回到步骤100。然而,如果事务仍在进行中,则流程返回到步骤104。此外,如果在步骤104中确定接收到异常,则在步骤106中使异常计数器递增,并且在步骤108中确定计数器现在是否处于其阈值。如果未处于其阈值,则流程进行到步骤110,在步骤110中事务被中止,并且流程返回到步骤100。然而,如果在步骤108中发现计数器现在处于其阈值,则首先在步骤114中事务被中止,并且然后在步骤116中,事务失败信号被生成。最后,在步骤118中,异常计数器被复位,并且流程返回到步骤100。
图6示出了可以使用的模拟器实现方式。虽然较早描述的实施例在用于操作支持相关技术的特定处理硬件的装置和方法方面实施本发明,但是也可以提供根据本文描述的实施例的通过使用计算机程序实施的指令执行环境。这种计算机程序通常被称为模拟器,只要它们提供硬件架构的基于软件的实现方式。各种模拟器计算机程序包括仿真器、虚拟机、模型和包括动态二进制转换器的二进制转换器。通常,模拟器实现方式可以在主机处理器230上运行,可选地运行支持模拟器程序210的主机操作系统220。在一些布置中,在硬件与所提供的指令执行环境和/或在同一主机处理器上提供的多个不同的指令执行环境之间可以存在多层模拟。历史上,要求功能强大的处理器来提供以合理速度执行的模拟器实现方式,但是这种方法在某些情况下可能是合理的,例如当出于兼容性或重用原因而期望运行另一处理器的本地代码时。例如,模拟器实现方式可以提供具有主机处理器硬件不支持的附加功能的指令执行环境,或者提供通常与不同硬件架构相关联的指令执行环境。在1990年冬季USENIX会议的“一些有效架构模拟技术(Some Efficient ArchitectureSimulation Techniques)”(Robert Bedichek,第53-63页)中给出了模拟的概述。
就先前参考特定硬件构造或特征描述的实施例而言,在模拟的实施例中,可以通过适当的软件构造或特征来提供等效功能。例如,特定电路可以在模拟的实施例中实现为计算机程序逻辑。类似地,诸如寄存器或缓存之类的存储器硬件可以在模拟的实施例中实现为软件数据结构。在其中在主机硬件(例如,主机处理器230)上存在先前描述的实施例中所引用的一个或多个硬件元件中的布置中,一些模拟的实施例可以在适当时利用主机硬件。
模拟器程序210可以被存储在计算机可读存储介质212(其可以是非暂态介质)上,并且向目标代码200(其可以包括应用、操作系统和管理程序)提供程序接口(指令执行环境),这些程序接口与由模拟器程序210建模的硬件架构的应用程序接口相同。因此,使用模拟器程序210从指令执行环境内可以执行目标代码200的程序指令,使得实际上不具有上述装置60的硬件特征的主机计算机230可以仿真这些特征。例如,模拟器程序210可以包括数据处理逻辑214和异常处理逻辑216以模拟上述数据处理电路和异常处理电路中的任意一个的行为。因此,模拟器程序210还可以包括事务支持逻辑,该事务支持逻辑响应于定义事务的指令序列,以使由指令序列定义的数据处理操作的事务集相对于由数据处理逻辑执行的其他数据处理操作而被原子地执行。
总之,公开了一种装置和一种操作数据处理装置的方法及其模拟器。数据处理电路响应于指令而执行数据处理操作,其中一些指令集可以被定义为相对于由数据处理电路执行的其他操作而被原子地执行的事务。当在事务期间发生同步异常时,事务被中止并且异常计数器被递增。当计数器达到阈值时,事务失败信号被生成,在适当情况下允许响应于该数量的异常,使得事务中止被执行。
在本申请中,词语“被配置为…”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”是指硬件或软件的布置或互连方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可以被编程以执行该功能的处理器或其他处理设备。“被配置为”并不意味着需要以任何方式改变装置元件以提供所定义的操作。
尽管本文参考附图详细描述了说明性实施例,但是应理解,本发明不限于这些精确的实施例,并且本领域的技术人员可以在不脱离由所附权利要求限定的本发明的范围的情况下,在其中进行各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。

Claims (9)

1.一种数据处理装置,包括:
数据处理电路,用于响应于数据处理指令而执行数据处理操作,其中,所述数据处理电路包括事务支持电路,所述事务支持电路响应于定义事务的指令序列而使由所述指令序列定义的数据处理操作的事务集相对于由所述数据处理电路执行的其他数据处理操作被原子地执行;以及
异常处理电路,用于响应于在执行定义所述事务的所述指令序列期间发生同步异常而使所述事务支持电路中止所述事务,使得所述数据处理操作的事务集不被执行,
其中,所述异常处理电路包括异常计数电路,所述异常计数电路响应于在执行定义所述事务的所述指令序列期间发生所述同步异常,而使由所述计数电路保存的计数递增,并且所述异常处理电路响应于所述计数达到阈值而生成事务失败信号,并且
其中,所述异常计数电路包括多个计数器,并且所述异常计数电路响应于在执行定义所述事务的所述指令序列期间发生所述同步异常,而根据所述同步异常的类型来使所述多个计数器中的选定计数器递增。
2.根据权利要求1所述的装置,其中,所述阈值是由所述异常计数电路保存的可编程值。
3.根据权利要求1所述的装置,其中,所述异常计数电路包括异常类型掩码,所述异常类型掩码被配置为通过异常类型来过滤指示发生同步异常的输入信号。
4.根据权利要求1至3中任一项所述的装置,其中,所述异常处理电路响应于所述计数达到所述阈值而生成事务失败异常类型信号,所述事务失败异常类型信号指示使得所述计数达到所述阈值的所述同步异常的类型。
5.根据权利要求1至3中任一项所述的装置,其中,所述异常处理电路响应于所述计数达到所述阈值而输出事务失败异常简况,所述事务失败异常简况指示以下项中的至少一者:
异常的数目,
异常类型的数目,以及
异常类型集中的、使得所述计数达到所述阈值的每个异常类型的异常数目。
6.根据权利要求1至3中任一项所述的装置,其中,所述异常计数电路包括用于测量预定时间段的定时电路,并且所述计数电路响应于所述定时电路指示经过了所述预定时间段来复位由所述计数电路保存的计数。
7.根据权利要求1至3中任一项所述的装置,其中,所述异常处理电路包括异常程序计数器存储装置,所述异常程序计数器存储装置用于在执行定义所述事务的所述指令序列期间存储与所述同步异常的发生相关联的程序计数器值,并且所述异常处理电路响应于所述计数达到所述阈值而输出所述程序计数器值。
8.一种操作数据处理装置的方法,所述方法包括以下步骤:
响应于数据处理指令而执行数据处理操作;
响应于定义事务的指令序列,使由所述指令序列定义的数据处理操作的事务集相对于其他数据处理操作被原子地执行;
响应于在执行定义所述事务的所述指令序列期间发生同步异常而中止所述事务,使得所述数据处理操作的事务集不被执行;
响应于在执行定义所述事务的所述指令序列期间发生所述同步异常而根据所述同步异常的类型来使多个计数器中的选定计数器的计数递增;以及
响应于所述计数达到阈值而生成事务失败信号。
9.一种计算机可读存储介质,其上存储有用于控制主机数据处理装置的计算机程序,用于提供执行目标程序代码的指令的指令执行环境,所述计算机程序包括:
数据处理逻辑,用于响应于数据处理指令而执行数据处理操作,其中,所述数据处理逻辑包括事务支持逻辑,所述事务支持逻辑响应于定义事务的指令序列,以使由所述指令序列定义的数据处理操作的事务集相对于由所述数据处理逻辑执行的其他数据处理操作被原子地执行;以及
异常处理逻辑,响应于在执行定义所述事务的所述指令序列期间发生同步异常,以使所述事务支持逻辑中止所述事务,使得所述数据处理操作的事务集不被执行,
其中,所述异常处理逻辑包括异常计数逻辑,所述异常计数逻辑响应于在执行定义所述事务的所述指令序列期间发生所述同步异常而使由所述计数逻辑保存的计数递增,并且所述异常处理逻辑响应于所述计数达到阈值而生成事务失败信号,并且
其中,所述异常计数逻辑包括多个计数器,并且所述异常计数逻辑响应于在执行定义所述事务的所述指令序列期间发生所述同步异常,而根据所述同步异常的类型来使所述多个计数器中的选定计数器递增。
CN201980023955.XA 2018-04-11 2019-04-08 数据处理装置及其操作方法 Active CN111936972B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GR20180100155 2018-04-11
GR20180100155 2018-04-11
PCT/GB2019/051020 WO2019197811A1 (en) 2018-04-11 2019-04-08 Exception handling in transactions

Publications (2)

Publication Number Publication Date
CN111936972A CN111936972A (zh) 2020-11-13
CN111936972B true CN111936972B (zh) 2024-05-28

Family

ID=66379942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980023955.XA Active CN111936972B (zh) 2018-04-11 2019-04-08 数据处理装置及其操作方法

Country Status (7)

Country Link
US (1) US11481290B2 (zh)
EP (1) EP3776196A1 (zh)
JP (1) JP7377812B2 (zh)
KR (1) KR20200139706A (zh)
CN (1) CN111936972B (zh)
IL (1) IL277508A (zh)
WO (1) WO2019197811A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11403023B2 (en) 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system
US11803324B2 (en) * 2021-12-10 2023-10-31 Nxp B.V. System and method for managing transactions in integrated circuits
CN117992126B (zh) * 2024-04-07 2024-06-25 西安羚控电子科技有限公司 一种基于软件lockstep的处理器协同工作方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6597777B1 (en) * 1999-06-29 2003-07-22 Lucent Technologies Inc. Method and apparatus for detecting service anomalies in transaction-oriented networks
CN107278296A (zh) * 2015-03-04 2017-10-20 Arm 有限公司 用于响应于事务执行生成跟踪数据的装置和方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3100834B2 (ja) 1994-06-30 2000-10-23 三菱電機株式会社 電動式パワーステアリング回路装置
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US7814372B2 (en) 2007-09-07 2010-10-12 Ebay Inc. Method and system for exception detecting and alerting
US8255673B2 (en) * 2008-04-25 2012-08-28 Arm Limited Monitoring transactions in a data processing apparatus
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US9442737B2 (en) * 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US20150189426A1 (en) * 2013-01-01 2015-07-02 Aliphcom Mobile device speaker control
US9317379B2 (en) * 2014-01-24 2016-04-19 International Business Machines Corporation Using transactional execution for reliability and recovery of transient failures
US9329946B2 (en) * 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6597777B1 (en) * 1999-06-29 2003-07-22 Lucent Technologies Inc. Method and apparatus for detecting service anomalies in transaction-oriented networks
CN107278296A (zh) * 2015-03-04 2017-10-20 Arm 有限公司 用于响应于事务执行生成跟踪数据的装置和方法

Also Published As

Publication number Publication date
CN111936972A (zh) 2020-11-13
KR20200139706A (ko) 2020-12-14
US20210103503A1 (en) 2021-04-08
US11481290B2 (en) 2022-10-25
EP3776196A1 (en) 2021-02-17
JP2021520548A (ja) 2021-08-19
IL277508A (en) 2020-11-30
JP7377812B2 (ja) 2023-11-10
WO2019197811A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
CN111936972B (zh) 数据处理装置及其操作方法
US6694457B2 (en) System and method for monitoring execution of privileged instructions
US10255086B2 (en) Determining optimal methods for creating virtual machines
US20070038891A1 (en) Hardware checkpointing system
CN104364772A (zh) 事务环境内的程序事件记录
US10552190B2 (en) Precise error injection for driver testing
US11663034B2 (en) Permitting unaborted processing of transaction after exception mask update instruction
EP3063692B1 (en) Virtual machine introspection
CN112805710A (zh) 验证堆栈指针
US9678886B2 (en) Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions
JPS6022772B2 (ja) 擬似障害発生制御方式
US9218272B2 (en) System level architecture verification of a transactional execution
US10922180B2 (en) Handling uncorrected memory errors inside a kernel text section through instruction block emulation
JP2828590B2 (ja) マイクロプログラム検証方法
KR20210087431A (ko) 트랜잭션 메모리를 위한 장치 및 데이터 처리 방법
GR20180200121U (el) Διαχειριση εξαιρεσεων σε συναλλαγες
CN117555555B (zh) 例外处理方法、装置、电子设备及存储介质
JP6900661B2 (ja) 検証装置、方法およびプログラム
CN116339904A (zh) 一种基于硬件辅助的虚拟化指令模拟错误检测方法及系统
US20130262820A1 (en) Event logger for just-in-time static translation system
KR20190071994A (ko) 메모리 오염 감시 장치 및 방법
JPH02231634A (ja) ソフトウェア互換性維持方法
JP2021005294A (ja) 情報処理装置及びデバッグプログラム
JP2011164730A (ja) Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム
JPH0368033A (ja) プログラム実行制御方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant