CN1242546A - 用于处理不精确异常的一种方法和装置 - Google Patents
用于处理不精确异常的一种方法和装置 Download PDFInfo
- Publication number
- CN1242546A CN1242546A CN 99107546 CN99107546A CN1242546A CN 1242546 A CN1242546 A CN 1242546A CN 99107546 CN99107546 CN 99107546 CN 99107546 A CN99107546 A CN 99107546A CN 1242546 A CN1242546 A CN 1242546A
- Authority
- CN
- China
- Prior art keywords
- micro
- order
- data
- unusual
- processor
- 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.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本申请公开了一种在一以多微指令实现的交错执行的系统中更新体系状态的方法和装置。依据本发明的一方面,提供一种方法,在该方法中将一宏指令解码成一第一和第二微指令。宏指令在一段数据上指定一操作,执行第一和第二微指令分别使所说的操作在数据段的不同部分上运行。该方法还要求与第二微指令无关地执行第一微指令(例如,在不同时间),并且检测所说的第二微指令将不引起任何不可恢复的异常。然后将第一微指令的结果用于在比所说的第二微指令早一时钟周期更新体系状态。
Description
本发明涉及计算机系统领域。确切地说,本发明涉及用于更新以多微指令实现交错执行的一个系统的体系状态的一种方法和装置。
单指令多数据(SIMD)技术极大地提高了在多媒体应用中的性能。SIMD技术提供一单个宏指令,执行该宏指令能够使处理器对多数据项并行进行相同的运算。这种技术特别适合于提供压缩数据格式的系统。压缩数据格式是一种将在一寄存器中的比特位逻辑地划分为许多固定大小的数据单元,每个数据单元代表一个独立值。例如,一个64位的寄存器可以分解为4个16位的数据单元,每个数据单元表示一独立的16位值。然后,SIMD指令独立地并行控制具有这些压缩数据类型的各个单元。例如,一SIMD压缩的ADD指令将第一压缩数据操作数和第二压缩数据操作数的相应数据单元加在一起。更确切地说,压缩数据操作数X(包含数据单元X0,X1,X2,X3)和压缩数据操作数Y(包含数据单元Y0,Y1,Y2,Y3)相加得到压缩数据操作数Z(包含数据单元Z0,Z1,Z2,Z3,其中Zi=Xi+Yi)。
附图1所示为实现可以用于执行SIMD指令的一个算术逻辑单元(ALU)的一种现有技术的处理器,附图1所示的ALU包括在整个操作数宽度(即所有的数据元素)上执行并行运算所必需的电路。具体地说,附图1所示为具有能够分别用作4个独立的ADD执行单元和4个独立的MUL执行单元的一个ADD执行单元和一个MUL执行单元的一个ALU。
许多现有的处理器,不管是依序还是无序的,都必须保持一种推测状态和一种体系状态。体系状态表示顺序地执行完指令,该指令的任一和所有的异常都已处理过。相反,推测状态表示顺序或无序地执行指令,该指令可能或已经产生一异常。当一宏指令从推测状态变为一体系状态时,称该宏指令已更新了体系状态(例如,在一顺序处理器中,当宏指令已经执行完毕并写下结果时;在一无序处理器中,当宏指令已经退役时)。因为在图1所示系统中宏指令的操作是对所有数据单元并行地执行的,所以在解除了所有的异常之后所有的结果一起都用于更新体系状态。
实现上述方法需要大量的双份硬件部件并且硬件部件(即ADD和MUL执行单元)的利用效率低。
本发明公开了一种在一以多微指令实现交错执行的系统中更新体系状态的方法和装置。依据本发明的一方面,提供一种方法,在该方法中将一宏指令解码成第一和第二微指令。宏指令在一段数据上指定一操作,执行第一和第二微指令分别使所说的操作在数据段的不同部分上运行。该方法还要求执行第一微指令而与第二微指令无关(例如,在不同时间),并且检测到所说的第二微指令将不引起任何不可恢复的异常。然后将第一微指令的结果用于在比所说的第二微指令早的一时钟周期更新体系状态。
下面参照附图,以举例方式而不是限制方式介绍本发明,在附图中,相同的标号指相似的单元,其中:
图1所示为实现可以用来执行SIMD指令的一个算术逻辑单元(ALU)的一个现行的处理器。
图2所示为从概念上说明依据本发明的一实施例以一交错方式(staggermanner)对操作数执行的压缩数据宏指令指定的操作。
图3所示为依据本发明的一实施例构成的一处理器体系中各部分的概念性的方框图,该处理器能够由相关的交错执行微指令来独立更新体系状态并且提供一精确的异常模式。
图4所示为依据本发明的一实施例校验一单个的交错执行微指令的地址异常的流程图。
图5所示为依据本发明的一实施例响应相关的交错执行微指令独立地更新体系状态的流程图。
图6所示为依据本发明的一实施例的退役延迟单元360的电路示意图。
本申请公开了一种在一以多微指令实现的交错执行系统中更新体系状态的方法和装置。在下面的详细描述中,为使对本发明全面理解,阐述了大量的细节。对一个本领域的普通技术人员来说,很显然实现本发明并不需要这些细节。在其它的例子中,公知的结构、接口以及处理过程都没有详细地给出,为的是以免对本发明造成不必要的晦涩。
附图2所示为从概念上说明依据本发明的一实施例以交错方式在操作数上执行的压缩数据宏指令指定的操作。虽然参照一以压缩数据操作数的形式描述了本发明的一实施例,下面的描述同样适用于对一纯量数据格式进行一定的操作(例如,逻辑操作)。在这实施例的上下文中“交错执行”指将一宏指令操作数分解成几个分离的段并利用同一硬件独立地处理每段的过程。通过在连续段的处理中引入延迟来独立地处理各段。如附图2所示,一ADD指令的压缩数据操作数分解成一“高位段”(数据单元3和2)和一“低位段”(数据单元1和0)。在延迟高位段的同时处理低位段。因此,在处理完高位段后就得到整个数据宽度的结果。此外,虽然下面的实施例描述为具有ADD和MUL执行单元,可以利用不同的执行单元作为可替换的实施例(例如,一可替换的实施例利用一个或多个乘法累加(MAC)单元代替执行单元ADD和MUL执行单元)。
虽然有许多不同的方法可以实现指令的交错执行,而下面描述将宏指令译码成2个或更多个微指令以进行交错执行的实施例。在示例性的实施例中,该实施例支持指定包含128比特操作数的的逻辑寄存器的宏指令,将每个这种宏指令分解成至少2个“交错执行”的微指令,该每个微指令仅对操作数的一半(高位段或低位段)操作。换句话说,每个交错执行的微指令分别地产生对操作数的低位段和高位段在不同时间执行的宏指令指定的操作(在一些实施例中,利用相同的硬件)。在一个实施例中,执行下面的步骤:1)当交错执行的微指令分别地仅使一半操作数从逻辑寄存器中存取时,将操作数分解成一高位段和低位段;和2)每个微指令使结果操作数的一半写入由宏指令指定的逻辑目的寄存器。一给定的宏指令产生的交错执行微指令称为相关的交错执行微指令。等价的实施例以其它的方式分解操作数(例如,同时访问和/或存储整个操作数到适当的逻辑寄存器,但在不同时间执行由宏指令在指定的一半宽度操作数的操作)。此外,在描述的一个实施例中,将128比特操作数分成2段,替换实施例可使用更大或更小的操作数,和/或将这些操作数分成更多的段。
在这里所用的术语逻辑寄存器是指将指令指定一包含一单个的操作数的存储区域。因此,可以以硬件实现一逻辑寄存器,通过利用许多的公知技术包括一专用的物理寄存器、一个或多个利用一寄存器重命名机构(在后面将进一步描述)的动态分配的物理寄存器,等等…
附图3所示为依据本发明的一实施例附加到一处理器体系的概念性的方框图,该处理器能够由相关的交错执行微指令来独立更新体系状态并且提供一精确的异常模式。附图3从概念上给出了一处理器的各个方面,而处理器的许多公知的内容没有图示,因为它们对理解本发明是不需要。附图3给出了一送入一解码单元305的宏指令300。因为宏指令300是应用多微指令交错执行的指令之一种,依据附图3中的示例性实施例解码单元305产生2个交错执行微指令。那就是,与指定一对整个宽度操作数上执行的操作的宏指令300对应,解码单元305产生第一和第二交错执行微指令,其每个微指令对一不同半操作数进行操作。
在处理所得到的交错执行微指令中,处理器能够完成寄存器重命名和/或无序执行。虽然本发明可以应用于许多不同的寄存器重命名机构和无序执行模式,但是下文分别参照在美国专利US5446912和US5197132中描述的两种不同的机构来描述本发明。
不管是否应用存器重命名和/或无序执行,处理器按照一种给定的顺序接收宏指令并按照该顺序更新体系状态。正因为如此,必须维持接收宏指令的顺序。可以应用各种技术来保持接收宏指令的顺序。例如,在一通过流水线来保持宏指令顺序的顺序处理器中,或者通过在同一流水线中分配连续的级或者通过在相同的时间发送到多个流水线来将相关的交错执行微指令分组。相反,附图3给出了一无序处理器。尽管可以应用各种技术来保持接收宏指令的顺序,为示例性的目的,附图3包括一指令顺序队列310。通过应用美国专利US5446912中所述的再排序缓冲器,US5197132的运行记录器或任何其它的指令顺序维持结构来实现指令顺序队列310。指令顺序队列310作为一环行队列工作。正因为如此,指令顺序队列310包括一头指针325来标识指定的后续入口,以及一尾指针330指示队列何时是满的。
在美国专利US5446912和US5197132所述系统中,将每个宏指令各自地在再排序缓冲器或运行记录器(log)中以接收宏指令的顺序中分配一个入口。通过这种方式,保持接收宏指令的顺序的记录。相反,交叉执行一宏指令要求在指定的指令顺序队列310中分配两个入口,每个交错执行微指令需要一个。参考附图3,在指令顺序队列310中第一和第二交错执行微指令各自被分配入口315和320。
附图3还给出了一维持一退役指针335的退役单元340。退役指针335在头指针325之后并标识在指令顺序队列310中被认为退役的当前的入口(指退役窗口)。不同的系统试图从指令顺序队列310中一次退役不同的数量的入口,本发明的一个实施例试图一次退役3个入口。
不管是应用顺序还是无序的处理器,都会出现一定的与更新响应交错执行微指令的体系状态相关的问题。特别是,体系状态都必须提供一来自程序员观点的精确的异常模式(这包括操作系统程序员的)。为确保一精确的异常模式,一处理器可以设计成相关的交错执行微指令都必须一起更新体系状态。要求所有的交错执行微指令都一起用于更新体系状态确保只有在执行两微指令而不产生任何不可恢复的异常时才更新体系状态。一不可恢复的异常定义为处理器不能处理的异常。因此,一不可恢复的异常不包括可由微代码和/或硬件处理的异常,但包括对程序员可见的异常(包括操作系统程序员)。
不幸的是,要求交错执行微指令一起来更新体系状态降低了处理器的效率。特别是,当希望第一微指令在与第二微指令不同的时间来更新体系状态时将会有一些时间。例如,假设当前的退役窗口包括第一微指令但不包括第二微指令。作为另外一个例子,假设第一微指令执行完毕,但第二微指令还没有。
本发明的第一方面是允许相关的交错执行微指令独立地更新体系状态同时仍具有一精确的异常模式。为维持一精确的异常模式,如果处理器试图响应独立于一相关的第二交错执行微指令的第一交错执行微指令更新体系状态,处理器必须确保第二交错执行微指令不引起一不可恢复的异常。涉及的两类异常包括:1)地址异常;和2)数值异常。
地址异常
关于地址异常,在将要求一存储器存取(读或写)的一宏指令译解成两个微指令的实施例中,每个交错执行微指令对操作数宽度的一半进行存取。为提供一精确的异常模式,必须保证如果整个宽度的任一段的存取导致了一地址异常则任一交错执行微指令都不更新体系状态。因此,为提供一精确的异常模式,要检验与至少第一交错执行微指令联系的整个宽度操作数地址,而不独立地检验分别与第一和第二微指令联系的半宽度地址。因此,当第一交错执行微指令准备更新体系状态时,它可以确定在任一半宽度操作数存储器存取上是否有一地址异常。是否作为处理第二微指令的部分检验任一部分或是整个宽度操作数地址取决于实现过程。例如,在确保第一微指令在第二微指令之前执行的实现中(比如,一顺序的执行,一无序的执行,将该无序执行修改以要求按顺序执行进行存储器存取的相关交叉执行微指令,等等),在第二交错执行微指令中操作码地址检验是可选的。作为另外一个例子,在可以无序地执行进行存储器存取的相关交错执行微指令的实现中,将检验半宽度操作数或者整个宽度操作数作为处理第二微指令的一部分。
附图3给出了一存储器存取单元345。该存储器存取单元345包括一地址单元350,对于一给定的交错执行微指令该地址单元350校验与半宽度操作数地址不同的整个宽度操作数地址,该半宽度操作数地址由该给定的交错执行微指令负责。应用公知技术将存储器存取单元345并入一处理器,该公知技术在此不进一步描述。
附图4所示为依据本发明的一实施例对一单个的交错执行微指令进行地址异常检验的流程图。在步骤400中,即使一个交错执行微指令仅对半宽度操作数进行操作,仍然还是检验整个宽度操作码。详细地说,在一操作数是128位的实施例中,地址单元350进行一128位宽度的校验。在一个实施例中,步骤400包括多种形式的存储器存取操作的校验对齐错误(alignment faults),页面错误和段限制越界错误。然而,由某一实施例支持的某些指令(未对准的128位加载,部分加载(仅加载128位操作数的16位或64位),预取,等)不要求一对齐校验。此外,通过将低位段的地址和第一和第二交错执行微指令相关来校验整个宽度地址。为得到高位段的地址,将一个对齐的地址的第4位设定为1(相当于将8位加到低位数据段地址中)。因为一个对齐的地址的4个最低位将会为零,在一实施例中通过测试4个最低位来校验对齐。至于段限制越界和页错误,应用公知的技术(例如,低位段地址用作基地址,并校验整个宽度操作数地址)。
如果在整个宽度操作上检测到地址异常,到步骤405,在该处记录异常(例如,在指令顺序队列310的适当入口处)。否则,到步骤410,在该处记录没有地址异常产生。
数值异常
关于数值异常,在一执行级只有执行实际的算术操作时通常才能确定一数值异常。然而,第一和第二交错执行微指令独立地执行由其父宏指令要求的一半算术操作。对于每个交错执行微指令,作为是否产生数值异常的一指示存储在指令顺序队列310的一适当入口处。因此,一交错执行微指令能够独立地更新体系状态的一种情况是在其它的交错执行微指令没有任何异常地运行完之后。然而,如果一给定的交错执行微指令不是必须等到其它的交错执行微指令执行完毕之后才执行的话,则可以提高处理器的效率。最后,本发明的一个实施例允许屏蔽数值异常。当屏蔽一个数值异常时,通过一种实际上对程序员不可见的方式来处理该异常(例如,以微代码来处理异常,以一种为可恢复的异常设计的特殊的宏指令例程,等)。相反,未被屏蔽的异常是那些不可恢复的异常(它们是机器本身不能修正的异常)。
附图3给出了一异常屏蔽寄存器355,该屏蔽寄存器355存储指示依据公知技术哪些数值异常被屏蔽和哪些数值异常没有被屏蔽的数据。在一顺序处理器中,可应用类似的技术。尽管在一所描述的实施例中,可选择性地屏蔽数值异常,而可替代的实施例不具有这样一种选择机构(比如,某些或所有的数值异常总是可恢复的,某些或所有的数值异常总是不可恢复的,等)。在所有的数值异常都是可恢复的情况中,不需要利用相关交错执行微指令之间的相关来处理数值异常。
体系更新
再参照附图3,退役单元包括一退役延迟单元360。当一交错执行微指令要退役时,退役延迟单元360依据相关交错执行微指令来确定是否必须延迟更新体系状态。在附图3所示的实施例中,通过检查一校验下一操作域312来检测一交错执行微指令。在操作中,将数据存储在一入口的校验下一操作域中以连接一入口到下一入口。在对于每个宏指令产生两交错执行微指令的实施例中分别将逻辑1和逻辑0存储在给第一和第二交错执行微指令分配的入口的校验下一操作域中,(分别参见附图3)。因此,在一入口的校验下一操作域中的逻辑1指示在利用当前入口更新处理器的体系状态之前需要校验下一入口。虽然一个实施例使用指令序列队列中的一域,而替代实施例应用多种技术(例如,检查在指令顺序队列中的操作码,在一顺序处理器控制与第一微指令相关的位,等)。
附图5所示为依据本发明的一实施例独立地更新响应相关的交错执行微指令的体系状态的流程图。在附图5中,假设一交错执行微指令准备更新体系状态。在步骤505中,通过检查在先记录的地址异常数据确定是否有任何地址异常。至于附图3,通过校验由地址单元350存储在指令顺序队列310中的异常数据来执行步骤505(见附图4中的步骤405和410)。如先前所述,地址单元在整个宽度操作上校验地址异常。如果有地址异常,到步骤510,依据公知技术处理异常。否则控制程序从步骤505到步骤525。
如步骤525所示,确定是否屏蔽了所有的数值异常。如上所述,当屏蔽了所有的数值异常时,由一相关交错执行微指令产生的任何数值异常都将是可恢复的,所以,将不会引起不确切的异常状态。如果屏蔽了所有的数值异常则控制程序从步骤525到步骤520。以这种方式,可以允许一交错执行微指令独立于相关交错执行微指令更新体系状态。由于解除了这一对体系更新过程的限制,提高了处理器的效率。相反,如果至少有一个数值异常没有被屏蔽掉,则控制进程到步骤530。当然,在不能有选择性地屏蔽数值异常的实施例中,步骤525是不需要的。
尽管在所述的实施例中,响应一当前交错执行微指令延迟更新体系状态基于是否已经没有任何异常地完成执行了一相关的第二交错执行微指令,或基于是否屏蔽掉了所有的数值异常,替换实施例具有相对于屏蔽了数值异常的实施例有更大的粒度(granularity)。更详细地,假设执行一微指令产生一被屏蔽的异常,不能保证该异常是可恢复的,因为服务某些异常能够引起其它的数值异常的产生(称为第二数值异常)。如果产生这样的一当前不可屏蔽的第二数值异常,那么就会产生一不可恢复的异常。至少对于某些异常,可能的第二数值异常是有限的(换句话说,可能的第二数值异常集不包括所有的可能的数值异常)。因此,在一个变型实施例中,如果在执行交错执行微指令时产生一可恢复的数值异常(例如,一被屏蔽的数值异常),并且在其服务期间产生的所有的第二数值异常都是可恢复的(比如,可屏蔽的),为了数值异常的目的而不响应一相关的交错执行微指令延迟更新体系状态。
在步骤530中,确定是否没有异常地执行完毕了所有相关的交错执行微指令。具体地说,在相关交错执行微指令已经执行完毕后有一些时间,因此,将已经记录了已经产生的任何异常(例如,在指令顺序队列310中)。如果没有异常地执行完毕了所有的相关的交错执行微指令,控制前进到步骤520。相反,如果任何相关交错执行微指令可能或已经引起一数值异常,控制到步骤535,在该步骤中延迟更新体系状态。通过举例,如果:1)一相关交错执行微指令已经引起一数值异常;2)还没有执行一相关交错执行微指令;3)得不到关于一相关交错执行微指令的信息,等,控制从步骤530到步骤535。通过进一步的举例,在一实施例中得不到关于一相关交错执行微指令的信息,在该实施例中,在退役窗口中的最后的操作不对在指令顺序队列中的下一入口进行存取(从在退役窗口之外的指令顺序队列的下一入口中不具有到退役单元的端口)。
在这些情况下延迟更新体系状态,在下一体系更新时机将再次考虑当前的微指令。举例来说,在一顺序处理器中具有一些缓冲区(例如,缓冲器级,临时微代码寄存器,等)以存放第一交错执行微指令的结果,直到第二交错执行微指令准备好。尽管所述的实施例包括步骤530,当没有屏蔽掉所有的数值异常时,不执行步骤530的变型实施例而能够简单地将控制从步骤525送到步骤535。
附图6所示为依据本发明的一实施例的退役延迟单元360的电路示意图。附图6中所示的电路将在退役电路中提供在退役窗口中的每个操作,通过在退役窗口中的多操作可以串行的方式共享一个或多个这种电路。在附图6中,将异常屏蔽位输送到AND门600的输入中。假设当一异常被屏蔽时异常屏蔽位是逻辑1,当屏蔽了所有的异常时,AND门600的输出将为逻辑1—当由于数值异常没有阻止独立的退役时。AND门600的输出是一OR门605的一输入。OR门605的另一输入是指示是否其它的相关交错执行微指令已经没有任何异常地执行完毕的信号。通过将指示执行完毕的位和指示相对于指令顺序队列的后来的入口(例如,下一入口)没有异常的位集中并进行与操作产生这一信号。结果,当独立的退役是可能的时,OR门的输出将为逻辑1。将OR门605的输出通过一反相器输入到一AND门610。AND门610的另一输入是指示当前入口的校验下一操作域的状态的信号。在这个实施例中,在校验下一操作域中的逻辑1指示指令顺序队列310的下一入口包含一相关交错执行微指令。正因为如此,当应当延迟退役时,AND门610的所有输入都是逻辑1。
尽管在附图6中给出了一电路示意图,但可以应用任何不同的电路结构来实现。例如,在上面描述的变型实施例中,在该实施例中在退役窗口中的最后操作不能对在指令顺序队列中的下一入口进行存取,不能得到一表示在退役窗口之外的任何相关交错执行微指令是否已经没有引起任何异常地执行完毕的信号。
例示系统
当将一较大操作数规模的操作结合到已有的处理器体系中时实现双微指令交错执行尤其有用。例如,一个实施例将128位压缩的浮点运算结合到已有的32位体系中(例如奔腾II处理器)。在这个例子中,处理器支持用以存储压缩的浮点运算数据的Y个新逻辑寄存器。将一个压缩的浮点宏指令转换为两个半宽度的交错执行微指令(例如64位),即一“高位操作”和一“低位操作”。
假设已有的体系(部分地)利用一寄存器映射表来将逻辑寄存器映射到物理寄存器来执行寄存器重命名,每个交错执行微指令的逻辑源和/或目的寄存器都是指针,该指针指到对于Y个128位逻辑寄存器添加的一新寄存器映射表(例如一RAT)中的特定寄存器入口。在寄存器映射表中的入口依次指到对于逻辑资源和目的寄存器当前分配的物理寄存器的位置。依据一个实施例,为适应上述的半宽度的高位操作和低位操作,用于压缩浮点数据的新的RAT具有Y*2个入口。因此,例如,对于Y个新逻辑寄存器中的每一个寄存器不是RAT有一个入口,而是对于Y个新逻辑寄存器中的每一个寄存器RAT有二个入口。每个入口均可用于新128位逻辑寄存器其中之一的高位半部分或低位半部分。
因此高位和低位交叉执行微指令的每一个具有在寄存器映射表中同各自的操作数相应的相关入口。每个交错执行微指令检索并独立地处理128位操作数的64位段。因此,在不同的时间,应用同一64位硬件单元来执行高位和低位操作数。
在一个实施例中,加入了一新的128位退役寄存器文件(retirementregister file)以存储Y个新逻辑寄存器的体系状态(例如,与在美国专利US5446912中的退役寄存器文件类似)。变型实施例可以以不同方式处理体系状态(例如,具有Y*2个64位退役寄存器,每个设计成有高位或低位;不利用退役寄存器文件—见美国专利US5197132;等)。
在一个实施例中,当一第二交错执行微指令产生一可恢复的数值异常时,处理器在处理异常之前清空系统。假设第一交错执行微指令已经执行并准备退役,不同的实施例以不同的方式处理第一交错热行微指令先前产生的结果。例如,在一个实施例中,清空第一交错执行微指令的结果并且第一交错执行微指令与第二交错执行微指令一起重新执行。在变型实施例中,保存第一交错执行微指令的结果从而不需要重新执行第一交错执行微指令。可以应用任何数目的不同的机构来保存第一交错执行微指令的结果(例如,一附加的临时存储区以存储结果,在清空期间保持在当前的存储位置的结果的机构,等)。
结论
因此,本发明揭示了一种用于交错执行微指令的独立退役的方法和装置。在此描述的详细的结构设计和方法仅是示例性地说明本发明的原理,在不脱离本发明的范围内可以作出大量的修改。虽然本发明已经依据特定的实施例给出,但不应将它仅限制于此。而是,仅通过所附的权利要求的范围来限制本发明。
Claims (25)
1、一种方法,包括计算机执行的如下步骤:
将对一段数据指定一操作的一宏指令解码成一第一和第二微指令,执行该微指令分别使所说的操作在所说的数据段的不同部分上执行;
与所说的第二微指令的执行无关地执行所说的第一微指令;
检测所说的第二微指令将不会引起任何不可恢复的异常;和
响应所说的第一微指令,在比所说的第二微指令较早的一时钟周期内更新体系状态。
2、如权利要求1所述的方法,其中所说检测所说的第二微指令将不会引起任何不可恢复的异常的步骤包括如下步骤:
检测所说的操作是一存储器存取操作;
在执行第一微指令期间,检测由所说的第一和第二微指令要求的所说的存储器存取操作将不会引起一地址异常。
3、如权利要求2所述的方法,进一步包括如下步骤:
在执行所说的第二微指令期间,检测由所说的第一和第二微指令要求的所说的存储器存取操作将不会引起一地址异常。
4、如权利要求2所述的方法,进一步包括如下步骤:
在执行所说的第一微指令之前执行所说的第二微指令。
5、如权利要求2所述的方法,其中检测由所说的第一和第二微指令要求的所说的存储器存取操作将不会引起一地址异常的步骤包括如下步骤:
校验对齐,页面和段违界错误。
6、如权利要求2所述的方法,其中所说的宏指令指定一压缩的数据操作,所说的数据段是一包括许多数据元素的压缩的数据项,并且所说的第一和第二微指令使所说的压缩的数据操作在所说的许多的数据元素的不同部分上执行。
7、如权利要求1所述的方法,其中检测所说的第二微指令将不会引起任何不可恢复的异常的步骤包括如下步骤:
检测所说的操作是一算术操作;和
检测所说的第二微指令将不会引起任何不可恢复的数值异常。
8、如权利要求7所述的方法,其中检测所说的第二微指令将不会引起任何不可恢复的数值异常的步骤包括如下步骤:
检测屏蔽了所有的数值异常。
9、如权利要求7所述的方法,其中所说的数值异常包括????。
10、如权利要求7所述的方法,其中所说的宏指令指定一压缩的数据操作,所说的数据段是一包括许多数据元素的压缩的数据项,并且所说的第一和第二微指令使所说的压缩的数据操作在许多的数据元素的不同部分上执行。
11、如权利要求1所述的方法,其中所说的检测所说的第二微指令将不会引起任何不可恢复的异常的步骤包括如下步骤:
如果所说的操作是一存储器存取,然后在执行所说的第一微指令期间检测所说的第二微指令的存储器存取将不会引起一地址异常;和
如果所说的操作是一算术操作,然后检测执行所说的第二微指令时不会出现不可恢复的异常的数值异常。
12、如权利要求1所述的方法,其中所说的宏指令指定一压缩的数据操作,数据段是一包括许多数据元素的压缩的数据项,并且第一和第二微指令使所说的压缩的数据操作在所说的许多的数据元素的不同部分上运行。
13、如权利要求12所述的方法,其中所说的许多的数据元素的每一个都代表一个浮点值。
14、如权利要求12所述的方法,其中所说的许多的数据元素的每一个都代表一个整数值。
15、一种处理器,它包括:
对在数据上指定一操作的宏指令进行解码的解码单元,该解码单元将该宏指令解码成一第一和第二微指令,执行该微指令使所说的操作在该数据的不同部分上独立地执行;
一与解码单元耦合的队列,该队列具有许多存储数据的入口,该数据指示由所说的处理器接收宏指令的顺序,每个入口包括一校验下一操作域,所说的队列在顺序入口中存储所说的第一和第二微指令和在顺序入口的校验下一操作域中存储数据以指示所说的顺序入口属于相同的宏指令。
16、如权利要求15所述的处理器,它还包括:
一在不同的时间执行所说的第一和第二微指令的执行单元。
17、如权利要求16所述的处理器,它还包括:
一地址单元,该地址单元响应所说的第一和第二微指令其中之一的单个指令校验是否对整个数据进行一存储器存取将会引起一地址异常。
18、如权利要求17所述的处理器,其中所说的宏指令指定一压缩的数据操作,所说的数据是一包括许多数据元素的压缩的数据项,并且所说的第一和第二微指令使所说的压缩的数据操作在所说的许多的数据元素的不同部分上执行。
19、如权利要求18所述的处理器,其中所说的地址单元校验是否一存储器存取将会引起一对齐,页面,或段越界错误。
20、如权利要求15所说的处理器,进一步包括:
一与所说的队列耦合的退役单元,确定是否所说的顺序入口能否独立地退役。
21、如权利要求20所述的处理器,其中所说的退役单元包括一退役延迟单元以检测是否所说的第二微指令是否将会引起任何不可恢复的异常。
22、如权利要求20所述的处理器,其中所说的退役单元包括一与所说的域耦合的退役延迟单元,以确定是否所说的第一微指令的退役必需延迟到所说的第二微指令执行之后。
23、如权利要求15所述的处理器,它还包括:
一存储指示那些数值异常当前被指定为不可恢复的异常的数据的异常屏蔽寄存器;和
与所说的异常屏蔽寄存器和所说的校验下一操作域耦合的退役延迟单元以延迟所说的第一微指令的退役,如果保证所说的第二微指令不会引起任何不可恢复的数值异常的话。
24、如权利要求23所述的处理器,它还包括:
一地址单元,该地址单元响应所说的第一微指令并独立于所说的第二微指令,校验是否对整个数据进行一存储器存取将会引起一地址异常,所说的许多入口的每个入口都包括一异常域,与所说的异常域相耦合的所说的地址单元在为所说的第一微指令分配的入口中存储指示校验结果的数据,所说的退役延迟单元与所说的异常域耦合。
25、如权利要求24所述的处理器,其中所说的宏指令指定一压缩的数据操作,所说的数据是一包括许多数据元素的压缩的数据项,并且所说的第一和第二微指令使所说的压缩的数据操作在许多的数据元素的不同部分上执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 99107546 CN1242546A (zh) | 1998-03-31 | 1999-03-31 | 用于处理不精确异常的一种方法和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/052,994 | 1998-03-31 | ||
CN 99107546 CN1242546A (zh) | 1998-03-31 | 1999-03-31 | 用于处理不精确异常的一种方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1242546A true CN1242546A (zh) | 2000-01-26 |
Family
ID=5272809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 99107546 Pending CN1242546A (zh) | 1998-03-31 | 1999-03-31 | 用于处理不精确异常的一种方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1242546A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100346314C (zh) * | 2003-06-23 | 2007-10-31 | 英特尔公司 | 保存代码重新排序中的精确异常的方法和设备 |
CN100461092C (zh) * | 2002-06-18 | 2009-02-11 | 智慧第一公司 | 选择性执行预取指令的微处理器与方法 |
CN100495324C (zh) * | 2006-07-27 | 2009-06-03 | 中国科学院计算技术研究所 | 复杂指令集体系结构中的深度优先异常处理方法 |
CN1414468B (zh) * | 2002-02-12 | 2010-04-21 | 智慧第一公司 | 延伸微处理器指令集的装置及方法 |
CN1414464B (zh) * | 2002-05-09 | 2010-04-28 | 智慧第一公司 | 增加微处理器的寄存器数量的装置及方法 |
CN107111525A (zh) * | 2014-11-28 | 2017-08-29 | Arm 有限公司 | 数据处理设备中的系统错误处置 |
-
1999
- 1999-03-31 CN CN 99107546 patent/CN1242546A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1414468B (zh) * | 2002-02-12 | 2010-04-21 | 智慧第一公司 | 延伸微处理器指令集的装置及方法 |
CN1414464B (zh) * | 2002-05-09 | 2010-04-28 | 智慧第一公司 | 增加微处理器的寄存器数量的装置及方法 |
CN100461092C (zh) * | 2002-06-18 | 2009-02-11 | 智慧第一公司 | 选择性执行预取指令的微处理器与方法 |
CN100346314C (zh) * | 2003-06-23 | 2007-10-31 | 英特尔公司 | 保存代码重新排序中的精确异常的方法和设备 |
CN100495324C (zh) * | 2006-07-27 | 2009-06-03 | 中国科学院计算技术研究所 | 复杂指令集体系结构中的深度优先异常处理方法 |
CN107111525A (zh) * | 2014-11-28 | 2017-08-29 | Arm 有限公司 | 数据处理设备中的系统错误处置 |
CN107111525B (zh) * | 2014-11-28 | 2022-02-11 | Arm 有限公司 | 数据处理设备中的系统错误处置 |
US11461104B2 (en) | 2014-11-28 | 2022-10-04 | Arm Limited | Deferred system error exception handling in a data processing apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5923863A (en) | Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination | |
US6609189B1 (en) | Cycle segmented prefix circuits | |
CN100449499C (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
EP0638183B1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
CN1188778C (zh) | 处理指令的方法、处理器和数据处理系统 | |
JP2938426B2 (ja) | 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置 | |
US6105129A (en) | Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction | |
US6542985B1 (en) | Event counter | |
US5710902A (en) | Instruction dependency chain indentifier | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
US6085312A (en) | Method and apparatus for handling imprecise exceptions | |
US20050240793A1 (en) | Architectural support for selective use of high-reliability mode in a computer system | |
US9262161B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
US5634023A (en) | Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions | |
US6405305B1 (en) | Rapid execution of floating point load control word instructions | |
JPH0778738B2 (ja) | ディジタル・コンピュータ・システム | |
US5838940A (en) | Method and apparatus for rotating active instructions in a parallel data processor | |
CN1204499C (zh) | 在以正常模式执行指令期间执行硬件测试的处理器 | |
KR20010053622A (ko) | 가상 레지스터 번호들을 이용하여 논리적 레지스터번호들을 물리적 레지스터 번호들로 대응시키도록 구성된프로세서 | |
CN1760826A (zh) | 用于处理指令的方法、处理器以及系统 | |
JPH07160501A (ja) | データ処理システム | |
WO1996012228A1 (en) | Redundant mapping tables | |
WO2014090085A1 (en) | Branch-free condition evaluation | |
RU2142157C1 (ru) | Способ функционирования системы обработки | |
JP3142813B2 (ja) | レジスタの名前変更を管理するための情報処理システムおよび方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |