CN1511281A - 锁定在一个数据处理设备中的源寄存器 - Google Patents

锁定在一个数据处理设备中的源寄存器 Download PDF

Info

Publication number
CN1511281A
CN1511281A CNA02810403XA CN02810403A CN1511281A CN 1511281 A CN1511281 A CN 1511281A CN A02810403X A CNA02810403X A CN A02810403XA CN 02810403 A CN02810403 A CN 02810403A CN 1511281 A CN1511281 A CN 1511281A
Authority
CN
China
Prior art keywords
instruction
register
source
locking
operator scheme
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.)
Granted
Application number
CNA02810403XA
Other languages
English (en)
Other versions
CN1260647C (zh
Inventor
Cn
C·N·欣德斯
M·L·雷斯
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
Advanced Risc Machines 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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN1511281A publication Critical patent/CN1511281A/zh
Application granted granted Critical
Publication of CN1260647C publication Critical patent/CN1260647C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明提供一个系统和方法,用于锁定在一个数据处理设备中的源寄存器。该数据处理设备包括一个用于执行一个指令序列的流水线的处理单元,和一组源寄存器,用于当执行该序列中的指令时储存该处理单元要求的源数据。接着依赖可配置的准则使用一个锁定机构锁定源寄存器,选择该可配置准则保证锁定用于完成执行该流水线中一个指令仍然要求的源寄存器,以便防止由一个后续指令预定的类型的存取,该后续指令只能进入该流水线,只要与那个指令相关的该源寄存器能如由该指令所要求那样地被存取。按本发明,该处理单元具有第一和第二操作模式。在该第一操作模式中,基于在执行一个指令期间确定一个或多个异常条件配置该处理单元,以便调用在该流水线执行单元之外的一个处理,从而使该指令的执行能被完成。相反地,在该第二操作模式中,配置该处理单元完成在该流水线中的一个指令的执行,即使确定了该一个或多个异常条件的存在。接着依赖该处理单元的操作模式配置一个锁定机构以改变可配置的准则,使得在该第二操作模式中可取得被锁定的源寄存器在数量上的减少。接着当运行在该第二操作模式中时,能使得该处理单元的处理速度显著改善。

Description

锁定在一个数据处理设备中的源寄存器
发明领域
本发明涉及在一个数据处理设备中的源寄存器的锁定。
现有技术说明
人们了解提供包括一个或多个流水线执行指令的处理器。由于这种处理器的流水线性质,多个指令可以处在按时在任何位置执行处理的情况下,而这种情况已导致需要对该流水线的处理器提供适当的故障和资源校验功能。因此,每个指令一般先于将其发出到该执行流水线之前进行估计,以确定一个故障条件或资源抵触是否可能产生,只要它可能发出到该执行流水线。将检测一个故障条件,只要那个指令要求一个因其仍然进行计算而还不能得到的数据项(例如用已经在该流水线中执行的一个指令),或者只要那个指令对还由已在该流水线中的另一指令所要求的和直到由已在该流水线中的那个指令读才必须被重写的一个寄存器要求访问。将检测一个资源抵触,只要存在对一个处理单元的要求,该处理单元由于它已被用于另一个执行指令而不可能利用。
有可能执行无故障或资源校验,和代之以将避免故障条件和资源抵触的工作留给该编译程序器/编码记录器。然而这一般将引起非常复杂的编码,并由此对于实施这样的故障和资源校验过程而言这是一个普通的步骤。
该故障和资源校验功能要求使该有关处理器和所有相关处理器停止的能力。例如,检测故障条件的一个协处理器必须将那个故障条件的检测传送到该主处理器,和该主处理器在多数情况下将停止以保持同该协处理器的指令流协调一致。类似地,检测一个故障条件的一主处理器或一个资源抵触可需要通知所有协处理器由此使它们的流水线停止。将理解的是停止将引入不确定性到运行部分代码的时间的确定之中。
已知的处理器使用各种复杂方法检测故障条件和资源抵触,和降低这种故障条件和资源抵触对性能的影响。寄存器更名是可以使用的这样的技术,该技术包括使用附加寄存器来排除与包括作为用于已执行一个指令的一个源寄存器的一个寄存器的写有关的故障条件。在高性能处理器中,可发出的指令能脱离程序顺序,以使得无故障或资源抵触的指令在具有故障或资源抵触的指令之前执行。与这样的一个方法一起使用的一种典型的技术是普遍地保持指令表格于某个执行状态,然后对于一个特定的指令,进行确定关于该功能单元的可用性来处理该指令,和该操作数的可用性由该指令所要求。这可用一个配置的方法来完成,例如使用重新保存位置,或按中心化方式,例如使用一种重新排序缓冲器技术。
工业中人们知道两种上述技术。如由那些本专业技术人员将理解的,这些技术的成本,就领域和能力而论,和在复杂性方面是相当高的。
回避上述技术成本高和复杂性的另一种已知技术包括使用记分板。记分板将跟踪寄存器的有用性,或者如源操作数,或者如用于储存操作的目的。该记分板可分离成两部分,一部分用于源操作数,而另一部分用于目的操作数,或单个记分板可保持既用于源操作数又用于目的操作数。当与一个输入相关的该寄存器可由一个后续指令使用而可利用时,该记分板中的输入被清零。因此,发出到该执行流水线的指令将被迫等待,或停止,直到该寄存器变成可使用的,该执行流水线将要求表示为锁定在该记分板中的寄存器。记分板一般比早先描述的技术在领域,能力和开发成本方面更简单和便宜,然而一般地提供的性能较差。
因此该数据处理设备的应用领域一般取决于使用以上哪个方法。对于高性能应用,例如台式计算或科学或商务计算,经常要求更复杂的技术以便提供必要的性能。例如CDC 6600,IBM 360191,和recent IBM,Intel x86和Sun SPARC处理器机器使用这些更复杂的技术。但是对于嵌入应用,性能一般并不如此关键,而代之以该处理器的芯片面积和消耗功率是更为重要的,而该性能只需要充分满足该应用的目的。在这些情况中,使用按编程顺序指令发出和上述记分板技术对校验故障条件一般是最适宜的技术,而应用一般为一或两个有限数量的流水线促使降低资源管理的复杂性。
在许多应用中,执行的算法可以这样一种方式为特征,即操作数的范围和结果是已知的。但当这是不可能的时,该算法必须能按相容和合理的方式进行处理,其中一个操作结果超过该支持的数据类型的范围的边界的条件,或该操作包括对其一个结果不是有限定的操作数(例如,外加一个正无限大到一个负无限大)。
考虑浮点算法的例子,即“IEEE Standard for Binary Floating-Point Arithmetic”,ANSI/IEEE Std 754-1985,The Institute ofElectrical and Electronic Engineers,Inc.,New York,10017(以下称为IEEE 754准则)当结果超过该支持数据类型范围时,或当操作结果不是有限定的时候指定指令的运行情况。为完全实施该IEEE 754技术条件,以复盖该算法可要求的所有可能的情况,而这将产生附加的硬件/面积和功耗,和/或降低的时钟速度。该IEEE 754技术条件限定了大量的异常,这样的异常是其中结果并非可能返回的一些情况,如果执行该算法具无限精度,或如果该结果不是有限定的。在该IEEE 754技术条件中定义五类型的异常,既无效,溢出,下溢,被零除,和不精确。
在大多数嵌入应用中,该算法可以已知为特征;和一般不要求该IEEE 754技术条件的全部特征。试举例,可不要求例如不够准则支持和对NaN(Not-a Number)处理的支持的特征。然而处理溢出条件的能力,和包括无限大的操作通常是有利的。
当在执行该流水线的处理器中的一个指令期间检测这样的异常时,通常接着调用异常处理机制来处理这些异常。当调用这样的异常处理机制时,它们可需要对用于该异常指令的该源操作数进行存取以便处理该异常。由此,当锁定寄存器以避免故障条件时,例如当使用早先描述的记分板技术来进行该锁定时,对这些情况有必要锁定那些源寄存器,直到该指令已通过该执行流水线中将检测该异常的位置。
在GB-A-2,339,312中更详细地描述的一个现有技术处理器中,该处理器被配置来检测和处理某些不利的异常情况,意味着确定一个异常条件的存在乃是基于在完全处理该指令前可利用的信息。为保证处理所有可能的异常情况,可不引起一个异常条件的某些情况被处理成为直到该操作完全被处理和进行最后的确定为止。在GB-2,339,312中描述的处理器,该检测是在该处理器流水线的第一执行阶段进行的,目的在于使要求保存处理器目前状态的信息总量最小化到一个最小值。由于进行异常检测不必完成该指令,所以要求该源操作数被保存用于该异常处理机制,和在该记分板中不能失锁,直到该相关指令通过该异常检测位置(这里是该流水线的执行1阶段)。接着利用软件例程确定该指令的准确的配置,产生正确的回答,包括用于IEEE 754异常情况的专门处理,和返回到该程序或执行一个用户定义的异常处理程序。
因此,概括地,用于异常处理的该软件例程要求对该指令的源寄存器存取。此外,直到在该异常指令之后若干周期该存取才执行。由此可需要存取该异常指令的源寄存器的一个指令可以在执行该异常指令和执行该软件例程之间发出,以便处理该识别的异常条件。
这样,需要存取一个执行指令的源寄存器,以便读出数作为操作数,储存该操作数到存储器,或用一新值装入它们的任何指令一般必须等待,直到该执行的指令通过该异常确定位置,和该源寄存器接着失锁于该记分板中(或由于无异常被检测,或在该相关软件例程已执行该必要的异常处理之后)。
因此,可看出通过使后续指令停止,只要它们需要对这样的锁定的寄存器存取,则锁定寄存器的要求,同时进行关于在该相应指令中一个异常条件存在的确定能显著地影响到该流水线处理电路的效率。
发明概述
从第一方面观察,本发明提供一种数据处理设备,包括:一个处理单元,包括一个流水线,用于执行一个指令序列;一组源寄存器,用于储存由该处理单元当执行在该序列中的指令时所要求的源数据;一种锁定机制依赖可配置准则用于锁定源寄存器,该可配置的准则被选择来保证锁定仍被要求用于完成执行在该流水线中的一个指令的源寄存器,以防止由一个后续指令的预定的存取类型,该后续指令只能进入该流水线,如果与那个指令相关的该源寄存器能够如由该指令所要求那样地被存取;该处理单元具有第一和第二操作模式;在第一操作模式,根据在执行一个指令期间确定一个或多个异常条件,配置该处理器单元调用该流水线执行单元之外的一个处理使该指令的执行完成;在第二操作模式,配置该处理单元完成该流水线中的一个指令的执行,即使确定存在所说一个或多个异常条件;依赖该处理单元的操作模式配置该锁定机制以改变可配置的准则,使得在第二操作模式能获得减少锁定的源寄存器的数量。
按本发明,该处理单元具有两种操作模式,该第一操作模式是这样一种模式,其中根据一个或多个异常条件的确定调用在该流水线执行单元之外的一个处理,使该指令的执行完成,同时在第二操作模式配置该处理单元完成在该流水线中的该指令的执行,即使存在一个或多个异常条件。使用一种锁定机制锁定依赖可配置准则的源寄存器,和配置该锁定机制改变依赖该处理单元工作模式的该可配置的准则,从而能使以该第二操作模式锁定的源寄存器的数量减少。
由于在该流水线执行单元之外的该处理似乎需要对其已检测一个异常条件的该指令的源寄存器存取,则清楚的是在该第一操作模式中那些源寄存器必须由该锁定机制锁定,直到已确定对那个指令无异常条件存在,或直到那些源寄存器已跟随检测一个那些异常条件由在该流水线执行单元之外的该处理读出。在第二操作模式中,配置该处理单元使得它不需要调用在该流水线执行单元之外的任何处理去处理任一个那些异常条件,而由此避免了需要锁定源寄存器,直到在检测到那些一个或多个异常条件存在之后为止。
本发明的发明人意识到,对于保护一个源寄存器的值不受重写存在两个基本要求。首先是必须进行的,只要在该源寄存器中的该数据是由至今未读该寄存器的一个指令所需要的。其次是必须进行的,只要在该寄存器中的该数据可以由至今未执行的一个例程所需要的,例如使用一个外部处理来处理异常条件。在许多情况中可观察到该第一要求独一无二地明显地低于第二要求。如果除被要求来保护该源寄存器的异常条件之外,被检测的一异常条件使后续的指令停止,锁定源寄存器为的是保存它们由外部处理使用,同时它们仍未由指定它们的该指令读出。
本发明通过提供排除对调用在该流水线执行单元之外的处理涉及一个或多个异常条件的需要的第二操作模式,和接着通过使该锁定机制改变该可配置的准则使其不再仅仅锁定源寄存器因此它们可用于这样的外部处理明显地缓解该问题。
在优选实施例中,该数据处理设备还包括一组目的寄存器,用于储存来自执行该序列中指令的目的数据结果,还配置该锁定机制来锁定依赖预定的准则的目的寄存器。
当一个指令指定一个目的寄存器时,显然重要的是保证锁定那个寄存器,直到由执行那个指令产生的结果写回到该目的寄存器,以保证直到该结果已储存在该目的寄存器中时,那个目的寄存器才被读出或写入。无论是在第一还是在第二操作模式,这样的要求显然是必要的,而由此在优选实施例中,对于第一和第二操作模式两者用于确定锁定该目的寄存器的预定准则是相同的。
在优选实施例中,该锁定机制包括:记录该锁定寄存器;校验逻辑,用于参照锁定的寄存器的记录确定该后续指令是否能进入该流水线;和确定逻辑,用于对该后续指令确定那个指令的任一源寄存器是否应当锁定在记录状态,该确定逻辑响应于该可配置的准则。
由此,该校验逻辑确定由该后续指令指定的该源寄存器和任选的目的寄存器是否已指示成锁定在锁定的寄存器的记录中,典型地该后续指令并不允许进入该流水线,只要其源和目的寄存器的任一被指示为已被锁定。该确定逻辑确定由该后续指令指定的任一源寄存器和任选目的寄存器是否应当锁定在该记录状态,和由于该确定逻辑响应该可配置的(configurable)准则,所以典型地当该处理电路正工作在该第二操作模式时将要求锁定较少的源寄存器。
将理解的是该可配置的准则可以多种方法指定。但是,在优选实施例中,配置该可配置的准则于第一操作模式,使得当一个指令由该流水线执行时,该锁定机制锁定由该指令要求的源寄存器,同时那些源寄存器在它们已被在该流水线中的那个指令读出之前仍可被重写,或者同时它们仍可由在该流水线之外的该处理所要求,而在第二操作模式,配置该可配置的准则,使得仅当那些源寄存器在它们被该流水线中的那个指令读出之前仍可被重写时该锁定机制锁定由那个指令所要求的源寄存器。
因此,在第二操作模式中,锁定该源寄存器以防止读后写(write-after-read)的故障条件的可能性。因此,理想的情况是对该源寄存器的写应当只在读那个源寄存器已发生之后产生(“读后写”)以及当那个情况失败时一个读后写故障产生。由此,在第二操作模式中,当那个源寄存器在它已被指定那个源寄存器的指令读出之前有可能被重写时在任一时间周期锁定一个源寄存器。在第一操作模式,为防止这样的读后写故障也锁定源寄存器,然而当它们仍可由在该流水线之外的该处理所要求时将被另外锁定。
关注以上要求,在第二操作模式中,在本发明的优选实施例中配置该可配置的准则,使得对于标量指令或迭代数小于或等于一个预定值的矢量指令该锁定机制不锁定任何源寄存器。在按本发明优选的实施例实施中,已意识到不存在与标量指令或相对短的矢量指令(即具有大量小于或等于该预定值的迭代的矢量指令)的该源寄存器相关的读后写故障的可能性。
在优选实施例中,对于单一精度矢量指令或对于具有单个周期通过量的双精度矢量指令该预定值是四,而对于具有两个周期通过量的双精度矢量指令是二。
为简化起见,在本发明的优选实施例中,该可配置的准则是在于在该第二操作模式中,该锁定机制处理正如具有两周期通过量的任意双精度矢量指令。
在第一操作模式中调用的在该流水线之外的处理根据一个或多个异常的检测可采取多种形式。然而,最好,在该流水线之外的该处理是支持代码或一个用户启动的异常处理例程。
在本发明的优选实施例中支持代码执行三个基本功能。首先,支持代码可用来处理不受硬件支持的指令和数据类型。例如,在优选实施例中,在该处理单元的体系结构技术条件中未提供剩余指令,而是由IEEE754准则所要求。类似地,十进制数据类型也不包括在该处理单元的体系结构技术条件中,但由该IEEE 754准则所要求。在优选实施例中,对这两者所要求的该处理作为库函数存在,其可利用于由该处理单元执行的该应用程序代码。
由优选实施例的该支持代码执行的第二功能是处理具有硬件不能完全处理给定那个特定数据的指令的特定数据的指令,例如潜在的下溢条件或非正常操作数。这些情况的某些情况也可引起异常,同时另外的一些情况可引起非异常结果。如果该指令引起一个异常,而且对那个指令启动一个用户允许的异常处理例程,则该支持代码将执行某些以下作为该支持代码的第三基本功能所描述的预处理。如果该指令不产生一个异常条件,或所有产生的异常条件不具有相应的异常允许位设置,则该支持代码被配置来将该计算的结果写到该指令的目的寄存器中。并接着返回到由该处理单元执行的应用程序代码中。
优选实施例的该支持代码的第三基本功能是预处理设置该异常允许位的异常。然后该支持代码是一个跳动指令(a bouncedinstruction)的第一入口点。指令可以是跳动的,以使得上述该支持代码的第二基本功能执行,或由于已检测到一个有效异常和用于该异常的异常允许位已被设置。如果该数据要求预调节一个用户允许的异常处理例程,该支持代码将进行该预调节。如果该用户允许的异常处理例程选择返回到该应用代码,则它将如此通过该支持代码。
以上该支持代码的三个功能与优选实施例的第一操作模式相关。在第二操作模式中,使用该支持代码的需要由在该流水线中使指令的执行完成而排除,即使确定一个或多个异常条件的存在。
将显见的是该处理单元的第一和第二操作模式可按多种方式配置,这取决于实施。然而,在优选实施例中,该第一操作模式是IEEE 754应允操作模式,而该第二操作模式是IEEE 754非应允模式,其将避免需要软件例程处理所说一个或多个异常条件。在优选实施例中,通过提供支持代码,该处理单元的第一操作模式是IEEE 754应允模式,当该处理单元的硬件不能处理具有特定操作数的一个指令时将调用该支持代码。在第二操作模式中,在某些应用程序中并不要求的该IEEE 754的某些特征并不按该IEEE 754技术条件进行处理,而代之以一种非应允方式进行处理,以便清除对使用在该流水线执行单元之外的一个处理的需要。
在专业技术人员将理解当保持源和目的寄存器两者的记录时,存在多种方式,其中可配置该锁定机制。在优选实施例中,为简化起见,该锁定机制对源和目的寄存器两者保持单一记录,而由此使在两种类型寄器之间不存在差异。但是,在另一实施例中,该锁定机制包括用于记录该锁定的目的寄存器的第一记录和用于记录该锁定的源寄存器的第二记录。
当该另一方法增加某些复杂性时,允许对一个锁定的寄存器防止的预定存取类型的某些变化,这取决于那个寄存器是一个目的寄存器还是一个源寄存器。特别地,在该另一实施情况中,如果该后续指令需要对指示为以第一记录锁定的一个目的寄存器执行任何类型的存取,它将从进入该流水线停止,直到该锁定从该第一记录清除,而如果该后续指令只需要执行以第二记录锁定的一个或多个源寄存器的阅读存取,则它将被允许进入该流水线而不需等待相关的锁定从第二记录清除。只要一个特定的寄存器不被指定为一个目的寄存器,则清楚的是储存在那个寄存器中的数据并不由早在该流水线中的任一指令改变。由此,允许一个后续指令读这样的一个寄存器是安全的,和由于读一个寄存器的动作并不改变储存在该寄存器中的该值,因此甚至当一个源寄存器已由早在该流水线中的一个指令锁定时读它是可接受的。
本专业技术人员将理解,这里存在多种方式,其中可配置该处理单元完成在该流水线中的一个指令的执行,甚至在存在一个或多个异常条件的情况下。在优选实施例中,对于该第二操作模式,该处理单元被配置来应用一个刷新到零(flush-to-zero)模式以替代任何源数据或在具有一个正零的非正常范围内的结果数据。已发现该操作模式在对已了解的算法一点没有或很少算术影响的情况下将消除在另一种情况下可能被要求来处理不正常数据值的复杂性和硬件。
此外,在优选实施例的第二操作模式中,配置该处理单元应用一个缺省NaN模式产生一个缺省NaN作为结果数据,只要任一源数据是一个NaN。该方法处理NaN是按该IEEE 754技术条件,但与通常作法不相一致。无论如何,它仍提供了对NaN的作为一个未定义算术操作的指示的处理。
此外,在优选实施例的第二操作模式中,配置处理单元在该处理单元的硬件中处理任何溢出,不准确,被零除或无效异常条件。特别地,在优选实施例中,全缺省(full default)处理硬件中供溢出,不准确和被零除异常之用,而拟全缺省(near full default)处理供硬件中无效异常之用。已发现该方法提供近IEEE 754应允,并适用于大多数嵌入应用,该嵌入应用使用于饱和的溢出和对专门处理情况的无穷大。
从第二方面观察,本发明提供一种操作一个数据处理设备的方法,具有一个处理单元,该处理单元包括用于执行一个指令序列的流水线,和一组源寄存器,当执行在该序列中的指令时用于储存由该处理单元要求的源数据,该方法包括步骤:(i)应用一个锁定机制锁定依赖可配置的准则的源寄存器,选择该可配置准则以保证锁定仍要求用于完成执行该流水线中一个指令的源寄存器,以防止由一个后续指令的预定类型的存取,该后续指令是只能进入该流水线,只要与那个指令相关的该源寄存器能如由该指令所要求那样地被存取;(ii)用于对该处理单元选择第一和第二操作模式,在第一操作模式中,根据在执行一个指令期间对一个或多个异常条件的确定配置该流水线处理单元,以调用在该流水线执行单元之外的一个处理能使指令的执行完成,在该第二操作模式中,配置该流水线处理单元以完成在该流水中的一个指令的执行,即使所说一个或多个异常条件的存在已被确定;和(iii)使该锁定机制改变该依赖该处理单元的操作模式的可配置的准则,使得在该第二操作模式中获得被锁定的源寄存器的数量减少。
附图简述
将仅借助于参照如在附图中说明的优选实施例的示例进一步描述本发明,其中:
图1是说明按本发明优选实施例的一个数据处理设备的部件的方块图;
图2A是说明按本发明优选实施例的图1的协处理器的部件的方块图;
图2B是更详细说明在按本发明优选实施例的该协处理器的控制逻辑中提供的部件的方块图;
图3是示意说明按本发明优选实施例的记分板逻辑的操作的图;
图4是说明在按本发明优选实施例的处理器核心和协处理器中的流水线的基本流程的方块图;
图5A和5B是分别说明在第一操作模式和第二操作模式中背对背算术操作执行顺序的图,其中该第二指令具有该第一指令的一个源寄存器作为该目的;
图6A和6B是分别说明由在该第一操作模式和第二操作模式中的一个装入指令跟随的一个算术指令的执行顺序的图。其中该装入指令写入到一个或多个该算术指令的该源寄存器;
图7A-7C说明由一个装入指令跟随的一个矢量指令的执行顺序,该第一操作模式在图7A中说明,而该第二操作模式在图7B和7C中说明;
图8A和图8B分别说明一个单精度矢量指令和一个双精度矢量指令的执行顺序,在两种情况中,该指令跟随一个装入指令,以及说明需要锁定源寄存器的条件;以及
图9A-9F是说明在第一和第二操作模式中对于单精度和双精度指令两者源寄存器如何被锁定和清零的表格。
优选实施例的说明
图1说明一个数据处理系统22,其包括一个主处理器24,一个浮点单元(FPU)协处理器26,一个高速缓冲存储器28,一个主存储器30和一个输入/输出系统32。该主处理器24,高速缓冲存储器28,主存储器30和输入/输出系统32通过一条主总线34链接。协处理器总线36将该主处理器24链接到该浮点单元协处理器26。
运行时,该主处理器24(也称为ARM核心)执行控制一般类型的数据处理操作的数据处理指令流,该数据处理操作包括同该高速缓冲存储器28,主存储器30和该输入/输出系统32的交互作用。嵌入在该数据处理指令流中的是协处理器指令。该主处理器24识别这些协处理器指令为应当由一个辅助协处理器执行的类型的指令。由此,该主处理器24在该协处理器总线36上从由任一辅助协处理器接收它们的所在处发出这些协处理器指令。在该情况中,该FPU协处理器26将接受并执行它检测的并打算供它用的任意接收的协处理器指令。该检测是通过在该协处理器指令中的一个协处理器数域。
图2A是更详细地说明在按本发明的优选实施例的该协处理器26中提供的部件的方块图。该协处理器26包括一个算术流水线单元230用于执行算术运算。提供的一个寄存器文件夹220由大量的被指定为源寄存器或目的寄存器的寄存器组成,用于由该算术流水线单元230执行指令。一个装入/储存流水线单元210也被提供来执行装入和/或储存指令,以便在该装入数据总线212上接收的数据值装入到该寄存器文件夹220,或在该储存数据总线214上从该寄存器文件夹220输出数据值,以便在该数据处理系统中另一处储存,例如储存在高速缓冲存储器28或存储器30中。在优选实施例中,正向路径216还被提供来用于使数据值直接从该装入/储存流水线单元210通到该算术流水线单元230,从而迂回该寄存器文件夹220。
在优选实施例中,该装入/储存流水线单元210,该寄存器文件夹220和该算术流水线单元230均由控制逻辑200控制,配置该控制逻辑200为在指令总线218上从核心24接收指令,并适当地将这些指令发出到该装入/储存流水线单元210或该算术流水线单元230。在执行一个装入指令期间该控制逻辑200还对该寄存器文件夹220指示放置从该装入/储存流水线单元210接收的数据值到哪些寄存器中,而当执行一个储存指令时识别其内容应输出到该装入/储存流水线单元210的寄存器。如将在以后更加详细讨论的那样,如果或当需要时该控制逻辑200还被配置来发出跳动和停止信号到该核心24,并进而响应从该核心24接收的一个核心停止信号以使该协处理器26的执行停止。
图2B表示优选实施例的该控制逻辑200的更详细的细节。该控制逻辑200包括一个协处理器接口275,用于从该核心24接收信号和向该核心24发出信号。当一个新指令由该协处理器接口275接收时,它被传送到一个指令寄存器250。该指令从这里被提供到指令解码器单元260和记分板逻辑255。该指令解码器260解码该指令,接着将它送到一个与流水线210,230交互作用的流水线控制单元265,以控制它们的执行。
将参照图3更详细地描述优选实施例的记分板逻辑255,但基本地配置来基于接收的指令确定由那个指令指定的任意寄存器是否锁定在记分板中,以及一旦那个指令已发出到该流水线时,哪些寄存器-如果有的话-应当锁定在记分板中,以保证它们不被一个后续指令使用。如果确定由那个指令指定的任意寄存器已锁定在该记分板中,则配置该记分板逻辑255发出一个停止信号到该停止逻辑270。该停止逻辑270接收随任意其他停止条件信号例如资源停止信号一起的停止信号,并产生一个最终停止信号,只要这样的停止信号在其输入端接收。该最终停止信号在优选实施例中通过该协处理器接口275输出到该处理器核心通知该处理器核心该协处理器已停止该指令的执行。一旦该指令最后已进入该执行流水线(即跟随任意锁定的寄存器的清零将使该指令停止),则在该记分板逻辑255中更新该记分板以锁定要求锁定的任意寄存器,以便由那个指令使用。
图3是更详细地说明本发明优选实施例的记分板逻辑255的方块图。在优选实施例中,在该协处理器流水线的发出阶段使用该记分板逻辑,以下将参照图4更详细地讨论该协处理器流水线的不同阶段。当一个指令从该核心传送到该协处理器时,它在该协处理器指令总线218上在该协处理器取数阶段被接收并放置在寄存器300中。配置该协处理器来估计在发出阶段的指令,和与该指令的后续处理一道的该处理在以下参照图4更详细地描述。但是,在专门涉及该记分板处理的发出时,如储存在该寄存器300中的指令在路径305上传送到逻辑部件320和330。配置该逻辑330以确定该寄存器需要针对在记分板310中该锁定的寄存器校验的寄存器,从而确定该指令是否能发出到该流水线中以便执行。作为一个例子,如果该指令是FADDS S0,S1,S2,则逻辑330将确定那个寄存器0,1和2应校验,其中S1和S2是源寄存器,而S0是目的寄存器。
在优选实施例中,在图2A中说明的寄存器文件夹220将包含32个寄存器,而配置该逻辑330是为输出一个32位的值,以下称为“校验值”或简化为CV,以及每位被用来识别一个相应的寄存器是否应当进行校验以确定那个寄存器是否锁定在该记分板中。给定该较早例子,在那里指定寄存器S0,S1和S2,则该CV的三个最低有效位将被设置,而该剩余位不设置,指示仅寄存器0,1和2需要校验。
由逻辑330产生的该32位CV将在路径335上输出到停止逻辑340,也配置该停止逻辑在路径315上从该记分板310接收一个相似的32位值,以识别在该记分板310内被锁定的那些寄存器。如果由逻辑340比较这两个值指出被校验的任一寄存器锁定在该记分板中,则该逻辑340将在路径345上产生一个停止信号,如早先所讨论的那样接着输出到停止逻辑270用于产生一个最终停止到该处理器接口275。如果认定该停止信号,则该目前指令不能进行到该流水线的解码阶段,以及一旦未认定该停止信号,则该目前指令仅进行到该解码阶段。
配置该逻辑320以便根据储存在该寄存器300中的指令来确定一旦该指令已进行到该流水线的解码阶段应锁定在该记分板310范围中的那些寄存器,如果存在的话。该逻辑320使用可配置的准则来确定哪些寄存器应锁定,如果存在的话,以及取决于该处理单元的操作模式改变该可配置的准则。在优选实施例中,该处理单元具有两种操作模式,在第一种操作模式中,根据检测一个或多个异常条件配置该处理单元以调用在该流水线执行单元之外的处理使执行的指令完成,而在第二操作模式中,配置该处理单元完成在该流水中的这样的一些指令的执行,即使已确定一个或多个异常条件存在。
随后将更详细地讨论在该两种操作模式中应用的准则。然而,目前应指出在第一操作模式中,所有源寄存器或多个寄存器以及该目的寄存器或多个寄存器按该记分板锁定,而在第二操作模式中对于缺乏足以保证不存在该源寄存器在其由该指令读之前能重写的可能性的标量指令或任意矢量指令而言,源寄存器或多个寄存器未被锁定。在优选实施例中,这等于对于四次或更少的迭代的单精度矢量指令或对于不超过两次迭代的双精度矢量指令而言不存在被锁定的源寄存器(在优选实施例中所有双精度矢量指令考虑具有两周期通过量)。
因此,参照指定S0作为该目的寄存器以及S1和S2作为源寄存器的一个附加指令的早先例子,则在该第一操作模式中,寄存器0,1和2全部由该逻辑320识别以便按该记分板310锁定。该第一操作模式在此还称为非-RunFast操作模式。然而在第二操作模式中(在此也称为RunFast操作模式),仅该目的寄存器S0由该逻辑320识别以便按该记分板310锁定。如同该逻辑330一样,在优选实施例中配置该逻辑320来输出一个32位的值,以下称为一个记分板值,或简化为SV,一旦该指令已进行到解码阶段,识别附加到该记分板310的那些寄存器,该32位SV在路径325上输出到寄存器350。一旦该指令已进入该解码阶段,寄存器350的内容在路径355上输出以附加到该记分板310。
如果早先所述的FADDS指令接着跟随指令FADDS S5,S1,S6,则将发生下列操作差异,这依赖于该处理单元是否工作在非-RunFast模式还是RunFast模式。在非-RunFast模式,由逻辑320输出的该SV信号将具有位1,5和6设置,而如果该数据处理单元工作在RunFast模式,则仅位5将被设置以指定目的寄存器s5。不管使用哪种操作模式,在路径335上由逻辑330输出的该CV信号将具有位1,5和6设置。但是取决于操作模式是非-RunFast或RunFast模式,锁定在该记分板310中的并作为该FADDS S0,S1,S2指令的操作结果的寄存器将是不相同的,由此,取决于该操作模式在路径315上由该停止逻辑340接收的记分板信号将是不相同的。特别地,在非-RunFast模式中,寄存器S1将被锁定在该记分板310中,并因此现在在该指令FADDS S5,S1,S6发出阶段该逻辑340将产生一个停止。然而,如果该数据处理单元按RunFast模式运行时,则只有目的寄存器S0将被附加到该记分板310作为该指令FADDS S0,S1,S2的执行的结果,而由此,由于执行任意其他指令假定寄存器S5,S1或S6未被锁定在该记分板310中,接着无停止信号由该停止逻辑340产生,而代之以该指令FADDS,S5,S1,S6能直接进到该解码阶段,因此减少了处理这些指令要求的时间。
图4说明在本发明优先实施例中在处理器核心流水线和该协处理器的两个流水线之间的交互作用。应指出对仅两个协处理器流水线不存在要求,在其他实施例中可能附加更多的流水线处理不同的指令组或提供该指令组之间的交叠。
协处理器26具有七个阶段流水线操作,一个阶段在该核心流水线之后。指令在协处理器指令总线402上从该核心取数阶段400送到该协处理器取数阶段405。该协处理器计算在该发出阶段415中的指令。如果该协处理器26已处理以非-RunFast操作模式的一个异常指令,但那个事实的核心24还未发送,则在路径419上在发出阶段415对该核心认定一个跳动信号。该核心接着将开始该异常指令的异常处理并再试当从异常处理返回时引起该跳动的指令。
在该核心取数阶段400,指令从一个指令缓冲器读出以及,如果它是一个协处理器指令,则在该协处理器指令总线402上它被驱动到该协处理器读取周期405。
在该核心发出阶段410,该核心几乎不执行一个协处理器指令。在该核心解码阶段420该核心处理对该协处理器的停止以用于核心相关的停止条件。例如,如果该核心检测关于一个在先核心指令的一个停止条件,则它可需要指令该协处理器由此停止。这样的由来自该核心解码周期42 0的核心发出的一个信号将被传送到该有关协处理器流水线的解码,发出和取数阶段。为清楚起见该信号不表示在图4中。
在该核心执行阶段430中,该核心分别在路径419,417上从该协处理器接收该跳动和停止信号,而如果对一个有效协处理器指令认定该跳动信号,则开始异常处理。
在该核心存储器周期440,该核心从该协处理器的装入/储存流水线490的解码阶段425接收的在该协处理器储存数据总线427上储存数据。在该核心转回(write back)阶段450,该核心在该协处理器装入数据总线452上驱动装入数据到该协处理器的装入/储存流水线490的转回阶段455。
在该协处理器取数阶段405,该协处理器接收在该协处理器总线402上的指令并开始解码这些指令。
在该协处理器发出阶段415协处理器估算该指令和该记分板的目前状态并确定该指令能否发出。如果该记分板指示一个寄存器是不可利用的,或该流水线忙并且该目前指令不能进行到该解码阶段,则在路径417上认定该CP停止信号并保持它直到该指令可以进行或由该核心删除。
在该非-RunFast操作模式中,只要一个在先指令已完成该算法流水线495的协处理器Execute 1阶段465并被确定为异常,该协处理器被说成为处在“异常状态”。其并不存取该控制寄存器的一个协处理器指令将是一个“触发”指令并在路径419上将使该CP跳动信号由该发出阶段415认定,该控制寄存器当该确定进行时将停止或者在该确定完成之后发出到协处理器。一旦已认定该跳动信号,该核心将开始异常处理并且当处理在异常处理之后重新开始时再试该触发指令。
如果不存在停止和该协处理器不处在该异常状态,则该记分板由要求锁定的目的寄存器和任意源寄存器更新,和该指令进行到该协处理器的相关流水线490,495的协处理器解码阶段。
在该协处理器解码阶段,该协处理器将一个算术指令随同其操作数传送到将处理该指令的流水线或功能单元。如果该指令是一个装入或储存指令,则它被传送到该装入/储存流水线490。如果该操作是从该协处理器到该核心的数据的储存,则在解码阶段425,该协处理器将从该寄存器文件夹读该储存的数据并驱动具有该数据的CP储存数据总线427,接着在那里由该核心的存储阶段440将其接收。如果该指令是一个装入操作,则该协处理器的解码阶段425通过该装入/储存流水线490的执行435和存储器阶段445传送该指令。
在该协处理器存储器阶段445,该协处理器将一个装入操作传送到该转回阶段455。在该协处理器转回阶段455,在路径452上从该转回阶段450接收的装入数据写到该协处理器存储器文件夹。
现在注视该协处理器的该运算流水线495,在该协处理器执行1阶段465中,该算术指令通过计算符号,指数和该分数是否为零开始处理,以便确定该指令是否具一个潜在的异常。如果是,并且该协处理器不处在RunFast模式,则在路径467上该异常检测信号被驱动到该协处理器发出阶段415。如果检测无异常,则该指令传送到该执行2阶段。该协处理器执行2和执行3阶段进而处理该指令。该协处理器执行4阶段完成该指令,设置任一条件代码或异常状态位,并将该结果写到该寄存器文件夹或将该结果传送到另外的功能单元。
当确定无异常时为使按非-RunFast模式锁定的寄存器从记分板清除,提供源寄存器清除总线469使得关于该寄存器不再需要锁定的信息从该E1阶段465传送到该发出阶段415。
在描述了在本发明的该优选实施例的不同流水线之间的相互作用之后,现在将参照图5A-8B描述比较非-RunFast和RunFast模式操作的执行流程的例子。
图5A和5B说明背对背算术运算的执行,其中第二指令有第一指令的一个源寄存器作为该目的,图5A说明在非-RunFast模式的故障情况。
在图5A中,在周期1中,浮点协处理器数据处理(FCDP)指令FCDP1发送到协处理器并要求S1和S2作为源寄存器而S0作为目的寄存器。在周期2该协处理器锁定寄存器S0,S1和S2,和该核心发送FCDP2到该协处理器。FCDP2要求S3和S4作为源寄存器,和S1作为目的寄存器。在周期3,在发出阶段对FCDP2校验该记分板同时发现锁定S1。因此FCDP2在该发出阶段停止直到排除锁定S1。
必须保持锁定S1以便在FCDP1是异常的并要求软件例程处理该异常的情况下保护该内容免于重写。在周期4(即执行1阶段)对FCDP1进行异常校验。在该例中,FCDP1不是异常的,而在周期4结束时对S1和S2在该记分板中排除锁定,同时该异常检测信号不被认定。在下一周期即周期5中,FCDP2因此允许进入该解码阶段,同时该协处理器锁定S1,S2和S4,以保护它们由FCDP2使用。能看出要求一周期停止以保证保护S1免于重写。
在FCDP1不是异常的情况,FCDP2可能已立即进行进入该解码阶段。由于在FCDP2可能已用FCDP2的结果重写该寄存器之前FCDP1可能已读S1,所以由此故障条件可能已不存在。这样,需要锁定源寄存器,直到异常确定的发生不利地影响在无异常实际存在的那些例子中的处理速度。
图5B说明在RunFast模式用于再使用源寄存器的故障情况。在图5B中,图5A的情况只是在RunFast模式的重复。该源寄存器不再必须被保护以便由相对于重写的软件所使用,S1和S2未锁定在FCDP1的发出阶段。FCDP2并不停止,在给定在FCDP2的该发出阶段检测无寄存器故障的情况下,一个一周期的停止从处理FCDP2的时间除去。
图6A和6B说明由一个装入指令后续的一个算术指令的执行,其中该装入是写到该第一指令的一个或多个源寄存器,图6A说明在非-RunFast模式用于装入在先源寄存器的故障情况。
在图6A中,后续FCDP指令的装入将写新数据到S1中。在S1中的目前数据必须加以保护,以便由该FCDP指令和由软件例程使用,只要该FCDP指令是异常的。该FCDP指令将在周期2的该FCDP发出阶段将使记分板锁定设置在S0,S1,和S2上。对于一个周期该装入指令将停止,直到在该FCDP指令的该执行1周期之后清除该锁定为止。接着该装入指令在周期8开始该转回阶段时写新数据到S1中。
图6B说明在RunFast模式用于装入在先源寄存器的故障情况。在图6B中,对于该FCDP指令该源寄存器并不加以锁定,和在周期3的该发出阶段该装入指令并不停止,而是在周期4进行到解码阶段。该数据在该解码阶段由该FCDP指令读出它之后在周期7,4由该装入指令写入到S1中。
图7A-7C说明执行字长为4的后续一个装入指令的一个单精度矢量指令的流程。在图7A中,该矢量指令后续非-RunFast模式的源寄存器装入。
在图7A中,该指令FCDP是具有4次迭代的一种矢量运算。该4次迭代是以串行方式每周期发出一个的:
FCDP S8,S16,S24
FCDP S9,S17,S25
FCDP S10,S18,S26
FCDP S11,S19,S27
FLDMS指令(用指示单精度的最终S装入多次)在一个64位总线上在一个单周期将装入S24和S25,而S26和S27在后续周期装入。在周期2在该发出阶段,运行在非-RunFast模式的该FCDP指令将锁定该后续的寄存器:
S8-S11
S16-S19
S24-S27
在周期4FCDP指令为S16和S24清除记分板(对第一次迭代Execute1阶段),在周期5为S17和S25清除记分板(对第二次迭代Execute 1阶段),在周期6为S18和S26清除记分板(对第三次迭代Execute 1阶段),和在周期7为S19和S27清除记分板(对最后迭代Execute 1阶段)。该FLDMS指令将停止,直到S24-S27在该记分板中被清除为止,这在周期7发生,从而给出一个总的4个停止周期。
图7B说明后续所有寄存器的相同的源寄存器装入的该相同矢量指令,但这时是处于RunFast模式。在图7B中,在发出阶段对该FCDP指令只有目的寄存器锁定(S8-S11)。由此该FLDMS指令被允许继续进行而不停止,并且在周期7中装入该开始的两个寄存器(S24和S25),而在周期8装入其次的两个寄存器(S26和S27)。该FCDP指令将在周期3的解码阶段读S24,在周期4读S25,在周期5读S26,和在周期6读S27。因此,尽管该FLDMS指令未装入但无故障发生。
图7C说明在RunFast模式后续该最后寄存器的一个源寄存器装入的该相同的矢量指令。在图7C中,装入指令因此由该最后的源寄存器S27的一个单值装入取代。注意在周期7进行该新装入数据的写,该周期7是晚于迭代4的解码周期(其读S27)的一个周期,而因此即使该FLDS指令未停止再无故障发生。
图8A和8B提供来说明需要锁定用于单精度(SP)和双精度(DP)指令的源寄存器的条件,甚至当使用该RunFast操作模式时。
其中必需按RunFast模式锁定源寄存器的两种情况是:
·字长大于4次迭代的单精度矢量指令(或具有单周期通过量的双精度矢量指令);以及
·当该双精度矢量指令的字长大于2次迭代时,包括乘的该指令(即具有两周期通过量的)。
在优选实施例中,无必要锁定不包括乘的任意双精度矢量指令(即具有单周期通过量的),因为在优选实施例中这样的矢量指令无论如何只能具有4次迭代的最大字长。然而,在一个实施例中所有双精度矢量指令被处理为具有两个周期的通过量,这样无论何时观察字长大于2次迭代的一个双精度矢量指令,该源寄存器是锁定的。这样做乃是为了简化处理。
图8A说明字长7的后续一个装入指令的单精度矢量指令。该矢量指令将再次以串行方式执行下列运算:
迭代                       运算
1                          FCDP S8,S16,S24
2                          FCDP S9,S17,S25
3                          FCDP S10,S18,S26
4                          FCDP S11,S19,S27
5                          FCDP S12,S20,S28
6                          FCDP S13,S21,S29
7                          FCDP S14,S22,S30
在图8A中,字长为7的一个单精度矢量指令要求S30作为对第7次迭代的一个源操作数寄存器。要求S30后续的装入停止,直到清除对S30的锁定。在RunFast模式中,在对单精度运算的第4次迭代之后,以及在对双精度运算的第2次迭代之后对用在迭代中的源寄存器设置锁定(在优选实施例中,所有双精度运算被处理成具有两个周期通过量,而不管它们是否包含一个乘法)。
图8A说明一个单精度矢量指令,并且在这样一些情况中,对于大于目前迭代的编号为4的迭代在执行1周期清除锁定。这种情况由下列表格说明(这里一个‘0’表示清除锁定,而一个‘1’表示设置锁定):
                     表1
  记分板锁  定                周期
    2     3     4     5     6
  S16,S24     0
  S17,S25     0
  S18,S26     0
  S19,S27     0
  记分板锁  定                周期
    2     3     4     5     6
  S20,S28     1     1     0
  S21,S29     1     1     1     0
  S22,S30     1     1     1     1     0
如在该表所示的,只有由第5,6和7次迭代要求的源寄存器被锁定。因此,在周期2,对寄存器S20,S21,S22,S28,S29,和S30设置锁定。在周期4对S20和S28清除锁定(执行1阶段用于源迭代1),在周期5清除S21和S29的锁定(执行1阶段用于迭代2),在周期6对S22和S30清除锁定(执行1阶段用于迭代3)。因此该FLDS指令对3个周期停止,直到在周期6对S30清除该记分板。接着在周期7该FLDS指令被允许进行到该解码阶段,然后在周期10写入到该寄存器文件夹。在周期9,该FCDP指令的第7次迭代读S30,从而对该第7次迭代避免了该源数据的讹误。
图8B说明包含乘,并具有3次迭代的一个双精度矢量指令。
该矢量指令将再次以串行方式执行下列运算:
迭代             运算
1                FCDP D4,D8,D12
2                FCDP D5,D9,D13
3                FCDP D6,D10,D14
在图8B中该双精度矢量包含一个乘法,并将具有每2个周期一次运算的通过量。这样该执行1阶段将花费两个周期完成。下列表格说明锁定的源寄存器:
               表2
 记分板锁  定         周期
    2     3     4
 D8,D12     0
 D9,D13     0
 D10,D14     1     1     0
如在表中所示的,只有由该第三次迭代要求的源寄存器被锁定。因此,在周期2设置锁定D10和D14,而在周期4被清除(对于大于在执行1阶段中的目前迭代的编号为2的迭代清除用于包含一个乘法运算的双精度锁定)。在周期5该FLDD指令(这里该最后的D表示双精度)被允许进行到该解码阶段并在周期8写入到D14。该双精度运算在该第二解码阶段读源数据,并因此在周期7 D14被读出,从而对该第3次迭代避免了该源数据的讹误。
在通过例子描述了在非-RunFast模式或RunFast模式如何锁定和清除寄存器之后,现在将参照图9A-9F,其提供在特定操作模式锁定和清除寄存器的更具体的细节。
图9A说明在非-RunFast操作模式时锁定和清除单精度源寄存器。在优选实施例中,对于一个单精度矢量指令的最大迭代数为8,而在非-RunFast模式用于所有迭代的该源寄存器都锁定在该流水线的发出阶段。这种情况用图9A的左手边中的字母“X”来表示。因此,沿图9A上部的行用迭代数识别包含在那个迭代中的源寄存器。例如,若迭代数是5,与迭代1-5相关的寄存器将锁定,并且由在识别为迭代5的该行和在图9A左手边识别为迭代1-5的列中的“X”表示。
如早先参照图7A-7C所描述的,在该流水线的该执行1阶段用于特定迭代的源寄存器被清除。因此用于该第一迭代的源寄存器在周期4将被清除,用于该第二迭代的源寄存器在周期5将被清除,等等,这些由图9A右手边表示。
图9B是与图9A同样格式的表格,但说明在RunFast模式时锁定和清除单精度源寄存器。如前所述,只要该矢量指令是四次迭代或更少,则无源寄存器需要锁定。这可以从图9B的左手边看出,在那里一旦该迭代数是5或更多,则源寄存器才开始锁定。如以前那样,该表格的右手边表示在该周期中清除用于一个特定迭代的源寄存器。由此,取用具有七次迭代的一个矢量指令的例子,对用于迭代为5的源寄存器的锁定在周期4被清除(即用于迭代1的执行1阶段),对迭代6的源寄存器的锁定在周期5被清除,而对迭代7的源寄存器的锁定在周期6被清除。
图9C和9D是说明在非-RunFast模式锁定和清除的双精度源寄存器的表格,图9C与具有单周期通过量的双精度矢量指令相关,而图9D与具有两周期通过量的双精度矢量指令相关(即包含一个乘法的矢量指令)。如这些图所示的,所有源寄存器锁定在非-RunFast模式中。在单一周期通过量情况下,对用于一特定迭代的源寄存器的锁定在那个迭代到达该流水线的E1阶段时被清除,而由此对用于迭代1的源寄存器的锁定在周期4被清除,对用于迭代2的源寄存器的锁定在周期5被清除,等等。然而,在两周期通过量情况下,每次迭代在该E1阶段花费两个周期,而由此当在单周期通过量情况下对迭代1的源寄存器的锁定在周期4被清除,对迭代2的源寄存器的锁定在周期6被清除,对迭代3的源寄存器的锁定在周期8被清除,等等。
图9E和9F分别类似于表格图9C和9D,但说明在RunFast模式锁定和清除的双精度源寄存器。如前所述,当迭代数是二或更少时,无源寄存器被锁定。由此,如从图9E和9F能看到的,该源寄存器只在迭代数是三或四时被锁定,并且在这些例子中只有用于第三和第四迭代的源寄存器被锁定。当该第一迭代是在该E1阶段时对用于该第三迭代的源寄存器的锁定被清除,而由此用于该第三迭代的锁定在周期4被清除。对于单周期通过量矢量指令,对用于迭代4的源寄存器的锁定则在第5周期被清除。然而,如果该矢量指令具有两周期通过量,而且由此每次迭代在该E1阶段花费二周期,则对迭代4的源寄存器的锁定直到周期6才被清除,这种情况由图9F表格的右手边表示。
由此,可看出本发明的优选实施例使得在处理速度上的显著的改善能在这些环境中获得,而在那里并不要求完全按照该IEEE 754准则的所有方面,在这样的例子中通过使得操作模式转换到RunFast模式,由此使锁定的源寄存器数减少,从而减少这样的迭代数,其中在进入执行流水线之前指令不得不被停止。
虽然本发明的一个特定实施例已随此加以描述,但显而易见的将是本发明并不局限于此,很多的修改和附加可以在本发明的范围内进行。例如,虽然该已描述的优选实施例与具有一个物理上独立的一个协处理器的CPU相关,但这不是需要的情况。例如,浮点单元可被提供在主处理器内。如在先所述的,虽然该协处理器表示成具有两条流水线在该优选实施例中,但可提供多条流水线,每条响应于不同的指令组,或提供在指令组之间的交叠。此外,可进行以下从属权利要求特征同独立权利要求特征的各种组合,而这些不脱离本发明的范围。

Claims (16)

1.一个数据处理设备,包括:一个处理单元,包括一个流水线,用于执行一个指令序列;
一组源寄存器,用于当执行该序列中的指令时,储存由该处理单元要求的源数据;
一种锁定机制,用于依赖可配置的准则锁定源寄存器,选择该可配置的准则保证锁定仍被要求用来完成执行该流水线中的指令的源寄存器,以防止由一个后续指令的预定类型的存取,该后续指令只能进入该流水线,如果与那个指令有关的该源寄存器当由该指令要求时能够被存取;
该处理单元具有一个第一和一个第二操作模式;
在该第一操作模式,在执行一个指令期间根据一个或多个异常条件的确定,配置该处理单元调用在该流水线执行单元之外的一个处理使该指令的执行完成;
在该第二操作模式,配置该处理单元完成该流水线内的一个指令的执行,即使确定所说一个或多个异常条件存在;
锁定机制,配置来依赖该处理单元的操作模式改变该可配置的准则,使得在该第二操作模式能达到锁定的源寄存器数量的减少。
2.如权利要求1的数据处理设备,还包括一组目的寄存器,用于储存由执行在该序列中的指令产生的目的数据,依赖预定准则进一步配置该锁定机制锁定目的寄存器。
3.如权利要求2的数据处理设备,其中使用该预定准则确定对第一和第二操作模式目的寄存器的锁定是相同的。
4.如以上任一权利要求的数据处理设备,其中该锁定机制包括:
该锁定的寄存器的记录;
校验逻辑,用于参照该锁定寄存器记录确定该后续指令是否能进入该流水线;以及
确定逻辑,用于对该后续指令确定那个指令的任一源寄存器是否应当锁定在记录中,该确定逻辑响应该可配置的准则。
5.如以上任一权利要求的数据处理设备,其中以第一操作模式配置该可配置的准则,使得当由该流水线执行一个指令时,该锁定机制锁定由那个指令要求的源寄存器,同时在它们已由该流水线中的那个指令读之前,那些源寄存器仍可重写,或它们仍可由在该流水线之外的该处理所要求,而在该第二操作模式,配置该可配置的准则,使得该锁定机制锁定仅由那个指令所要求的源寄存器,同时在它们已由该流水线中的那个指令读之前,那些源寄存器仍可重写。
6.如权利要求5的数据处理设备,其中在该第二操作模式,配置该可配置准则使得该锁定机制不锁定标量指令或具有小于或等于一预定值的迭代数的矢量指令的任何源寄存器。
7.如权利要求6的数据处理设备,其中所说预定值对于单精度矢量指令或对于具有单周期通过量的双精度矢量指令为四,而其中所说预定值对具有二周期通过量的双精度矢量指令为二。
8.如权利要求7的数据处理设备,其中该可配置的准则使得在第二操作模式该锁定机制处理在具有两周期通过量的情况下任一双精度矢量指令。
9.如以上任一权利要求的数据处理设备,其中在该流水线之外的该处理是支持代码或一个用户允许的异常处理例程。
10.如以上任一权利要求的数据处理设备,其中该第一操作模式是IEEE 754依从操作模式,而第二操作模式是IEEE 754非依从模式,其避免需要软件例程处理所说一个或多个异常条件。
11.如以上任一权利要求的数据处理设备,当依赖权利要求2时,其中该锁定机制包括第一记录,用于记录锁定的目的寄存器,和第二记录,用于记录锁定的源寄存器。
12.如权利要求11的数据处理设备,其中,在该第二模式,如果该后续指令需要对指示为锁定在该第一记录中的一个目的寄存器执行任意类型的存取,则它将被阻止进入该流水线,直到该锁定已从该第一记录清除,而如果该后续指令仅需要执行锁定在该第二记录中的该源寄存器的一个或多个的读存取,则它将被允许进入该流水线而无需等待相关锁定从该第二记录清除。
13.如以上任一权利要求的数据处理设备,其中在第二操作模式配置该处理单元应用刷新-到-零模式替换任一源数据或在具有一个正零的非正规范围中的结果数据。
14.如以上任一权利要求的数据处理设备,其中在第二操作模式配置该处理单元应用缺省NaN(Not-a-Number)模式产生一个缺省NaN结果数据,只要该任一源数据为一个NaN。
15.如以上任一权利要求的数据处理设备,其中在第二操作模式配置该处理单元在该处理单元的硬件内处理任一溢出,不准确,被零除或无效异常条件。
16.一种操作一个数据处理设备的方法,该数据处理设备具有一个处理单元,该处理单元包括一个流水线,用于执行一个指令序列,和一组源寄存器,当执行该序列中的指令时,用于储存由该处理单元所要求的源数据,该方法包括步骤:
(i)依赖可配置准则应用一种锁定机制锁定源寄存器,选择该可配置的准则保证锁定仍被要求来完成执行流水线中一个指令的源寄存器,以防止由一个后续指令的预定类型的存取,仅该后续指令能进入该流水线,如果与那个指令相关的该源寄存器当由该指令要求时能被存取;
(ii)选择一第一或第二操作模式用于该处理单元,在该第一操作模式,在执行一个指令期间,根据一个或多个异常条件的确定,配置该流水线处理单元,以调用在该流水线执行单元之外的一个处理使该指令的执行完成,在该第二操作模式配置该流水线处理单元完成在该流水线中的一个指令的执行,即使确定所说一个或多个异常条件的存在;以及
(iii)依赖该处理单元的操作模式使该锁定机制改变该可配置的准则,使得在该第二操作模式能达到锁定的源寄存器数量的减少。
CNB02810403XA 2001-05-21 2002-02-11 在数据处理设备中锁定源寄存器的方法和该数据处理设备 Expired - Lifetime CN1260647C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/860,777 US6842849B2 (en) 2001-05-21 2001-05-21 Locking source registers in a data processing apparatus
US09/860,777 2001-05-21

Publications (2)

Publication Number Publication Date
CN1511281A true CN1511281A (zh) 2004-07-07
CN1260647C CN1260647C (zh) 2006-06-21

Family

ID=25333994

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB02810403XA Expired - Lifetime CN1260647C (zh) 2001-05-21 2002-02-11 在数据处理设备中锁定源寄存器的方法和该数据处理设备

Country Status (12)

Country Link
US (1) US6842849B2 (zh)
EP (1) EP1389312B1 (zh)
JP (1) JP3793155B2 (zh)
KR (1) KR100864890B1 (zh)
CN (1) CN1260647C (zh)
DE (1) DE60222765D1 (zh)
GB (1) GB2375855B (zh)
IL (2) IL155298A0 (zh)
MY (1) MY126211A (zh)
RU (1) RU2282235C2 (zh)
TW (1) TWI220960B (zh)
WO (1) WO2002095575A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101243397B (zh) * 2005-08-08 2012-05-23 罗伯特·博世有限公司 用于控制计算机系统的方法和设备

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
BR0311832A (pt) * 2002-06-07 2005-04-05 Interface Inc Desenho de azulejo de tapete assimétrico, fabricação e instalação
US7430652B2 (en) * 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
JP2005309229A (ja) * 2004-04-23 2005-11-04 Matsushita Electric Ind Co Ltd 情報処理装置
US20080208863A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Compound Item Locking Technologies
US8117578B2 (en) * 2007-12-28 2012-02-14 Nec Corporation Static hazard detection device, static hazard detection method, and recording medium
KR101015202B1 (ko) * 2008-09-25 2011-02-18 퍼멘텍 주식회사 미생물배양기용 온도조절장치
US8255674B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Implied storage operation decode using redundant target address detection
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
US9086873B2 (en) 2013-03-15 2015-07-21 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
CN108509791B (zh) * 2018-02-09 2021-06-04 清华大学 检测处理器的方法、检测装置以及检测系统
KR102225838B1 (ko) * 2018-12-20 2021-03-09 한양대학교 에리카산학협력단 안드로이드 앱 보호를 위한 안티 에뮬레이션 방법 및 장치

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787465A (en) * 1994-07-01 1998-07-28 Digital Equipment Corporation Destination indexed miss status holding registers
US5749095A (en) * 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US6304963B1 (en) * 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
US6216222B1 (en) 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
US6317821B1 (en) 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
DE69901556T2 (de) 1998-05-27 2002-11-21 Arm Ltd., Cherry Hinton Rückführender registerspeicher
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US6675292B2 (en) * 1999-08-13 2004-01-06 Sun Microsystems, Inc. Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions
JP4160705B2 (ja) 1999-10-15 2008-10-08 富士通株式会社 プロセッサ及びプロセッサシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101243397B (zh) * 2005-08-08 2012-05-23 罗伯特·博世有限公司 用于控制计算机系统的方法和设备

Also Published As

Publication number Publication date
TWI220960B (en) 2004-09-11
US6842849B2 (en) 2005-01-11
KR100864890B1 (ko) 2008-10-22
IL155298A0 (en) 2003-11-23
RU2282235C2 (ru) 2006-08-20
KR20040005927A (ko) 2004-01-16
MY126211A (en) 2006-09-29
CN1260647C (zh) 2006-06-21
EP1389312B1 (en) 2007-10-03
GB2375855B (en) 2004-11-10
GB2375855A (en) 2002-11-27
US20030033506A1 (en) 2003-02-13
EP1389312A1 (en) 2004-02-18
DE60222765D1 (de) 2007-11-15
JP3793155B2 (ja) 2006-07-05
WO2002095575A1 (en) 2002-11-28
JP2004520657A (ja) 2004-07-08
GB0202642D0 (en) 2002-03-20
IL155298A (en) 2007-12-03

Similar Documents

Publication Publication Date Title
CN1260647C (zh) 在数据处理设备中锁定源寄存器的方法和该数据处理设备
AU603973B2 (en) Method and apparatus for precise floating point exceptions
EP2202635B1 (en) System and method for a multi-schema branch predictor
EP0207665B1 (en) Bidirectional branch prediction and optimization
US5394351A (en) Optimized binary adder and comparator having an implicit constant for an input
US5699279A (en) Optimized binary adders and comparators for inputs having different widths
US6260189B1 (en) Compiler-controlled dynamic instruction dispatch in pipelined processors
CN1692331A (zh) 利用跳转指令清除冒险的方法及设备
CN1012538B (zh) 矢量处理系统中执行指令的方法及其设备
US6216222B1 (en) Handling exceptions in a pipelined data processing apparatus
US5590351A (en) Superscalar execution unit for sequential instruction pointer updates and segment limit checks
CN1146784C (zh) 用字长短的指令实现多个寄存器的数据传送的信息处理装置
US20070143575A1 (en) Flow optimization and prediction for VSSE memory operations
CN1320450C (zh) 提供可变宽度的至少六路加法指令的方法及相应装置
JP2843750B2 (ja) スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム
TW201239750A (en) Performing reciprocal instructions with high accuracy
CN1068445C (zh) 指令调度方法和寄存器竞争检查方法
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
US20050027964A1 (en) Apparatus and method for redundant zero micro-operation removal
CN1206145A (zh) 带有流水线处理电路的信号处理器及其方法
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US7058678B2 (en) Fast forwarding ALU
US20190056933A1 (en) Processing vector instructions
JPH10154072A (ja) パイプライン処理装置
JP2007515718A (ja) 実行フローシノニムのための方法及び装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20060621