CN1758215A - 更新指令错误状态暂存器 - Google Patents
更新指令错误状态暂存器 Download PDFInfo
- Publication number
- CN1758215A CN1758215A CNA2005101151175A CN200510115117A CN1758215A CN 1758215 A CN1758215 A CN 1758215A CN A2005101151175 A CNA2005101151175 A CN A2005101151175A CN 200510115117 A CN200510115117 A CN 200510115117A CN 1758215 A CN1758215 A CN 1758215A
- Authority
- CN
- China
- Prior art keywords
- instruction
- error state
- working storage
- state working
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000009471 action Effects 0.000 description 6
- 230000001149 cognitive effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000019771 cognition Effects 0.000 description 4
- 238000010420 art technique Methods 0.000 description 2
- 210000001367 artery Anatomy 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- NHDHVHZZCFYRSB-UHFFFAOYSA-N pyriproxyfen Chemical compound C=1C=CC=NC=1OC(C)COC(C=C1)=CC=C1OC1=CC=CC=C1 NHDHVHZZCFYRSB-UHFFFAOYSA-N 0.000 description 2
- 210000003462 vein Anatomy 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
本发明是有关于一种用来更新在一管路处理器中的一指令错误状态暂存器(FSR)的***与方法。其中,指令FSR是为在一管路架构中,用来储存从指令被撷取到执行期间所产生错误的理由。因不同理由所发生的连续错误会导致FSR的覆写,因此造成指令执行时的无效异常中断码。本发明所提供的更新指令FSR的方法与***,可将异常中断码与指令一起,沿着管路传送至会更新FSR的执行级电路。
Description
技术领域
本发明是有关于一种电脑处理器,且较特别的是,有关于一种用来更新在电脑处理器中的指令错误状态暂存器的改良式***与方法。
背景技术
执行程式码(code)的处理器(processors)是为人所熟知,且是广泛应用在从桌上型电脑到如手机与个人数位助理(Personal DigitalAssistant,PDA)的可携式电子装置的各种产品与应用中。目前已有多种不同的电脑架构(architecture),来决定如何在处理器中处理指令(instructions)。每一种架构都以不同方式处理其中所执行的程式码所产生的问题(problems)与错误(faults)。而每一种架构的其中一重要特性即为如何报告(report)及处理(handle)问题或错误。在本发明中,术语“异常中断(abort)”及“错误(fault)”会交替使用。
如果使用的是三级管路架构(three stage pipeline architecture),则如同其他的处理器架构一般,当撷取(fetch)一程式码指令时,如果侦测到发生错误,就会以标示所侦测到的错误类型的资讯,更新错误状态暂存器(Fault Status Register,以下简称FSR)。然而,当在撷取级(fetch stage)电路时,处理器并未立即采取任何与该指令相关的动作,而是处理器会将该指令移动至下一级,也就是解码级(decode stage)电路,并且再移动至再下一级,也就是执行级(execute stage)电路。直到到达执行级电路之前,处理器并未确实认知错误发生,而且处理器会将其导向(vector)一个异常中断处理程序(abort handler),以处理该错误。在这种特别的实施架构中,在认知到错误发生之前,最少需要用到三个时脉周期(clock cycles)。因此,在指令被执行及错误被认知之前,处理器的撷取级电路必须另外多攫取两个指令。
经由检查在管路架构中的错误处理程序(fault handling),可充分了解其细节。首先,撷取一第一指令,并且侦测到有错误发生,而且错误发生的原因,会被记录到指令FSR中。当第一指令被移动至管路处理器的解码级电路时,会同时撷取一第二指令,而且也可能同时侦测到与第二指令撷取相关的错误发生。如果确实发生错误,则接下来会将第二指令错误发生的原因,记录在FSR中,并且覆写(overwrite)与第一指令相关的错误状态资讯。异常中断有可能会顺序地发生,但通常都是有特定理由才会发生。在此例中,连续错误并非难以解决。接下来,第一指令会被移动至执行级电路,第二指令会被移动至解码级电路,且会撷取一第三指令。当第一指令在执行级电路中被执行时,该异常中断会被认知,而且处理器会将其导向至其异常中断处理程序。一旦异常中断已被导向至异常中断处理程序之后,处理器就会读取其指令FSR,以决定与第一指令相关的错误发生原因,根据该错误发生原因,会决定处理器应该采取什么动作,以解决该相关问题。因此,相关错误发生原因的正确性是相当重要的,否则,处理器将无法采取适当的改正动作。
然而在部分实例中,当在等待从执行级电路到处理异常中断时,会有其他问题发生。举例而言,如果攫取两个指令,则第一指令可能会因理由A而中断,而第二指令可能会因另一理由B而中断。当将第一指令移动至解码级电路时,会撷取第二指令,并且以其异常中断的理由B,更新指令FSR。接下来,当将第一指令移动至执行级电路时,处理器会将其导向至异常中断处理程序,并且从指令FSR读取理由,因此会从FSR读取错误的异常中断理由(理由B而非理由A)。
因为无法信任在FSR中的异常中断理由,所以需要复杂的异常中断处理程序,以决定错误发生的原因。因此需要用到较复杂的记忆体管理操作***(memory management operating system),进而会降低其性能。记忆体管理操作***是将虚拟记忆体(virtual memo)观念,应用在其动作中。虚拟记忆体是用在当使用者只具有较小量的实体记忆体,而想要在其上使用较大量的软体程式码时,藉由操作***(operating system,OS)实现虚拟记忆体的方式达到其具有较大量的记忆体以进行运作。当软体想要存取并非真实存在的记忆体,也就是虚拟记忆体时,此时即会侦测到错误发生,处理程序会中断,并且接下来被导向至上述的异常中断处理程序。在异常中断处理程序中,操作***可藉由在硬碟与可用实体记忆体之间传送资讯,而操作记忆体。接下来,程式码会在之前被中断的点上重新被启动,且该程式码所定址的记忆***置即为目前位置。
举例而言,在个人电脑中,可能有一个第一Linux操作***(主操作***)正在执行,用来控制硬体与持续追踪硬体的实际架构。但使用者可在该主Linux操作***中,再启动一个第二版本的Linux,使第二版本的Linux以为其是控制所有硬体,然并非如此。事实上,所有硬体系为主操作***所控制。接下来,使用者可以并行方式启动Windows XP,使用者亦可启动Windows 98。因此在第一个Linux操作***之下,可能会有三个不同的其他操作***,而且每个操作***都以为其是完全控制显示器、硬盘、等等。但事实却是在这三个不同的其他操作***中,没有任何一个操作***对这些硬体具有控制权。只有主操作***可声称具有所有硬体的控制权。虽然此实施方式可能会有效能衰减,但因其较有利,或因使用者想执行的大部分应用程式都只能在Linux上运行,所以此实施方式可让在Linux上执行大部分应用程式的使用者,可在Linux主操作***下启动Windows,藉以执行部分只能在Windows上运行的应用程式。此实施方式亦可让使用者可启动多个版本的Linux,在此例中,因其中某些版本可能较优于某些版本,所以使用者可能并不需同时启动每个版本。
操作***必须知道那一个指令被中断,且为何被中断。在习知***中,可能无法获知此资讯。因此,习知***会决定并且设定在撷取级电路的错误发生理由。当第一个错误指令到达执行级电路时,如果在接下来的指令中还有错误发生,则储存在FSR中的值就不再为有效。换言之,当从撷取级电路到执行级电路的运行期间,如果因不同理由而发生另一异常中断,则操作***可能会无法从FSR中决定异常中断的发生原因,而且可能必须藉由类似手工式地读取相关的记忆体管理页表(memory management page tables),而决定错误的发生原因。这种以手工式读取记忆体页表的方式,无疑地会增加操作***的复杂度,并且使用更多的处理器时间。因此,需要一种让操作***可以永远信赖从FSR中所读取的资讯的有效性(validity)的实施方式,藉此降低操作***的复杂度,并且改善处理器效能。
发明内容
有鉴于此,本发明提供一种更新指令错误状态暂存器(FSR)的改良式***及方法,以使得即使有多数个错误连续发生,亦可提供精确错误资讯至一执行单元。
以下简单介绍在各种电脑架构中的其中一种架构的***的一实施例。根据本发明一实施例,更新指令FSR的***是包括:一个撷取级电路;一个连接至撷取级电路的解码级电路;一个连接至解码级电路的执行级电路;一个用来决定在指令中所发生错误的记忆体管理单元或保护单元(MemoryManagement Unit or Protection Unit,MMU/PU),且该MMU/PU是连接至撷取级电路;一个连接至MMU/PU的错误通讯逻辑(fault communicationlogic)电路;以及一个连接至错误通讯逻辑电路的指令FSR。
根据本发明一实施例,更新指令FSR的方法是包括下列步骤:撷取一指令;决定该指令是否为错误;解码该指令;并且执行该指令,其中,如果该指令为错误,则连同该指令,将标示该指令为错误的资讯与错误的理由,一起传送至解码级电路与执行级电路。
经由本发明的说明及实作,可充分了解及学习本发明的其他特色及/或优点。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1是一个习知的管路型处理器架构的模组图。
图2是一个具有异常中断的三个顺序指令的模组图。
图3是一个根据本发明一实施例的一个管路型处理器架构的模组图。
图4是一个根据本发明另一实施例的一个管路型处理器架构的模组图。
图5是一个根据本发明又另一实施例的一个管路型处理器架构的模组图。
图6是一个流程图,用来说明根据本发明一实施例的一个用来更新在管路型处理器中的指令FSR的方法。
100,300:撷取级电路 102,302:解码级电路
104,304:执行级电路 106,306:记忆体存取级
108,308:暂存器回写级 110,310:指令快取
112,312:资料记忆体管理/保护单元(MMU/PU)
114,314:指令错误状态暂存器(FSR) 116,316:资料快取
118,318:资料记忆体管理/保护单元(MMU/PU)
120,320:资料FSR 200,202,204:指令
206,208,210:异常中断 301:错误通讯模组
305a-305d:讯号汇流排 307:N阶FIFO(先进先出)
具体实施方式
请参照本发明实施例的内容,且其实例绘示在相对应的图式中,其中相同的标号代表相同的构件。下文特举较佳实施例,并配合所附图式,以详细说明本发明所提供的更新指令FSR的***及方法。
如图1的模组图所示,管路型处理器是具有多数个功能级,包括一撷取级电路100;一解码级电路102、以及一执行级电路104。如众所周知,处理器的解码逻辑(decode logic)会将一编密码过的指令,解码成多数个电讯号(electrical signals),用来控制及在处理器所提供的执行逻辑(executelogic)上执行指令功能。
较概略地描述,处理器的撷取/执行部分是包括:一个用来撷取一编密码过指令的撷取逻辑(fetch logic)100;以及一个用来解码该指令的解码逻辑102。如上所述,解码器102会将编密码过的指令,解码成多数个讯号线(signal lines),且该些讯号线是用来控制及执行该编码过的指令。因此,解码器102的输出是为当成处理器的执行单元内部其他电路元件的输入和/或控制讯号的讯号线。执行单元是用来执行编码过指令所指定的功能动作。上述基本动作是为熟习相关技艺者所熟知,因此其细节在此不再赘述。
在图2所示的较佳实施例中,可能将管路设计成可容纳一个32位元的指令集(instruction set)及一个16位元的指令集。如上述设计的多指令集可提供程式编写的弹性与容纳旧软体。一般而言,32位元的指令集可提供功能较强或较强固的程式码与程式编写能力,而16位元的指令集则可提供需要使用较小记忆体空间的体积较小的程式码。熟习相关技艺者当知,32位元的指令集与16位元的指令集之间的优缺点与取舍亦可考虑其他因素。当知可用各种不同方法,实现图2所示的观念及功能,且本发明范畴并未受限于任何特定实施方法。
如上所述,FSR是提供一个在指令中所发生的异常中断或错误类型的指示器(indicator)。在本发明中,术语“异常中断”及“错误”会交替使用。根据在FSR中的异常中断资讯,可执行特定的修正动作。
异常中断发生的原因有很多种。其非限制范例包括记忆体中的表格异常中断(table abort)与硬体的外部异常中断(external abort)。其中包括MMU首页异常中断(first page aborts)与次页异常中断(second pageaborts)。当应用程式要存取无效的记忆***址时,也可能发生异常中断,所以可能是为一种外部汇流排异常中断(external bus abort)。也可能因为奇偶校验码(parity)不合而产生异常中断。或者因该***为虚拟记忆体***,且正在被存取的记忆体映像(memory image)虽然可能存在硬碟中,但并未被映射至记忆体中,而发生异常中断。
在图1所示的习知技艺中,其中包括三个主要的指令级:撷取级电路100、解码级电路102、以及执行级电路104。其中,MMU/PU 112会确认指令记忆体管理/保护错误与异常中断。当已撷取到指令时,如果MMU/PU 112侦测到有错误发生,则会立即更新FSR 114。但此刻并未认知该错误,所以不会中断目前正在执行的程式码。接下来,该指令会被移动至下一级,也就是解码级电路102。只有当指令到达执行级电路104时,处理器才会真正认知到有异常中断发生,而且接下来处理器会将其导向至异常中断处理程序。根据不同管路结构设计,在认知到异常中断发生之前,最少需要用到三个时脉周期,而且根据不同的管路结构,可能会用到更多时脉周期。该管路的其他部分包括数个***模组106、108、116、118、及120,该些模组并未直接影响指令错误的处理,但是为描述管路处理器的完整架构所必须。其中,***模组106是为记忆体存取级(memory access stage)。***模组108是为暂存器回写级(register write back stage)。***模组116是为资料快取(data cache)。***模组118是为资料记忆体管理/保护单元。***模组120是为资料FSR。
图3是绘示三个连续指令200、202、及204。当在此三个连续指令200、202、及204中所发生的异常中断206、208、及210有三个不同的理由时,问题就会发生。第一指令200会造成异常中断206,并且会在FSR 114中,设定其理由码(reason code)。接下来的指令202,会以不同理由造成另一个异常中断208。在非限制范例中,如果这两个指令200及202是跨越一个页边界(page boundary),则其可能会因完全不同的理由而发生异常中断。在此例中,在一列中是有三个指令,指令202中有一个页边界,且指令200有一个页错误(page fault)。首先会撷取指令200,并且更新FSR。接下来,会解码指令200,并且撷取另一指令202。其中,在指令202中有一个错误208发生。接下来,将每一指令顺着管路,往下移动一级。接下来,撷取具有异常中断210的指令204,并且再次更新FSR。当指令200到达执行级电路时,处理器会将其导向至具对应于指令204中的异常中断210的FSR 114内容的异常中断处理程序。因此,在前进到适当的回复程序之前,异常中断处理程序无法信赖指令FSR 114的内容,所以必须执行一个较复杂且较费时的软体程序,以决定该异常中断的发生原因。
为解决此问题,如图3所示,在图1的管路架构中特别加入可有效地将错误识别资讯与执行级电路沟通的逻辑。在该指令到达执行级电路304之前,FSR314不会被更新。FSR 314所需的资讯,是储存在MMU/PU 312中。MMU/PU 312是用来确认指令记忆体管理/保护错误与异常中断。当指令首先出现在撷取级电路300时,目前正在执行的程式码并不会被中断。接下来会将该指令从撷取级电路300,移动至解码级电路302,并且接下来再沿着汇流排线303,将其移动至执行级电路304。只有当指令到达执行级电路304时,错误通讯模组301才会更新指令FSR314,且该异常中断会使处理器将其导向至一异常中断处理程序。在认知到异常中断之前,最少会用到三个时脉周期,而且根据不同的管路结构,可能会用到更多时脉周期。该管路的其他部分包括数个***模组306、308、316、318、及320,该些模组并未直接影响指令错误的处理,但是为描述管路处理器的完整架构所必须。其中,***模组306是为记忆体存取级。***模组308是为暂存器回写级。***模组316是为资料快取。***模组318是为资料记忆体管理/保护单元。***模组320是为资料FSR。
图4是绘示一个错误通讯逻辑电路的较佳实施例的模组图。由MMU/PU312所决定的与异常中断相关的资讯,是与该指令一起,从撷取级电路300,传送至解码级电路302,并且再传送至执行级电路304。较明确地说,讯号汇流排305a会承载从MMU/PU 312到撷取级电路300的错误资讯。当将指令从撷取级电路300传送至解码级电路302时,讯号汇流排305b会承载从撷取级电路300到解码级电路302的错误资讯。当将指令从解码级电路302传送至执行级电路304时,讯号汇流排305c会承载从解码级电路302到执行级电路304的错误资讯。号汇流排305d会承载从执行级电路304到指令FSR 314的错误资讯。或者,当将该指令从解码级电路302传送至执行级电路304时,亦可将错误资讯由解码级电路302,直接传送至指令FSR 314。其中,讯号汇流排305a-d可能是为一或多个讯号线。此外,在第一级时,指令FSR并未更新,而是当指令到达执行级电路304时,才会更新指令FSR。
请参考图2所示根据本发明一较佳实施例的范例,其是包括三个连续指令200、202、及204。当在此三个连续指令200、202、及204中所发生的异常中断206、208、及210有三个不同的理由时,问题就会发生。第一指令200会造成异常中断,但在本较佳实施例中,该理由码并未被设定在FSR314中。接下来的指令202,会以不同理由造成另一个异常中断208。在非限制范例中,如果这两个指令200及202是跨越一个页边界,则其可能会因完全不同的理由而发生异常中断。在此例中,在一列中是有三个指令,指令202中有一个页边界,且指令200有一个页错误。首先会解码指令200,并且撷取另一指令202。其中,在指令202中有一个错误208发生。接下来,将每一指令顺着管路,往下移动一级。接下来,撷取具有异常中断210的指令204。当指令200到达执行级电路时,会以目前已被指令200中的异常中断206所更新的FSR 314的内容,呼叫异常中断处理程序。因此,在本较佳实施例中,即使所有三个指令都会因其各自不同理由码而发生异常中断,不管管路有几级,错误资讯都会通过管路,随着指令传送。
因此,延着管路不会只单独传送指令。事实上,解码级电路会传送较多。在本发明一较佳实施例中,对应于异常中断发生理由的位元会跟着指令一起传送,并且当在执行级电路304认知该异常中断时,该些位元会被载入到指令FSR 314中。当异常中断处理程序被呼叫时,目前正在执行级电路中的指令的异常中断发生的理由,会再被传送出去。在本较佳实施例中,因为异常中断的理由是与指令一起传送,所以异常中断处理程序可充分信赖记录在指令FSR 314中的异常中断发生理由的有效性。因此,可简化异常中断处理程序,使其更有效率地执行。
图5是绘示另一个错误通讯逻辑电路301实施例的模组图。其中,n阶FIFO(先进先出)307是用来储存错误资讯,藉以当指令到达执行级电路304时,可将错误资讯载入指令FSR 314。FIFO 307的深度最少必须与指令管路的深度相同。在本发明管路架构的一较佳实施例中,其是具有三级,因此FIFO 307必须至少为一个3阶FIFO。虽然如此,该管路的深度并不受限于此,因此FIFO的深度可根据实际需要而变。
在本发明另一较佳实施例中,FIFO 3O7是与指令FSR 314合并在一起。在此例中,事实上FSR 314即为一个FIFO。一旦有错误发生,MMU/PU 312就会将错误资讯载入FSR/FIFO 314/307。当指令到达执行级电路304时,就会从FSR/FIFO 314/307中攫取错误资讯。因为错误资讯是载入至FIFO堆叠(stack)中,任何之前发生的错误都不会被覆写,因此异常中断处理程序可处理适当的错误资讯。
在详述本发明特定实施例的特定功能与架构的实施方式之后,以下参考图6的流程图,详细说明根据本发明实施例,沿着管路前进的指令处理步骤。首先,在步骤400中,撷取一指令。在撷取指令之后,接下来在步骤402中,决定在该指令中是否有错误发生。该决定动作是由MMU/PU 312所执行。如果在步骤402中决定并没有错误发生,则在步骤404中,解码该指令,并且在步骤406中,执行该指令。然而,如果在步骤402中决定有错误发生,则在步骤408中,将错误码随着指令,沿着管路一起传送至解码级电路。在步骤410中,该指令会在解码级电路被解码,并且将错误码随着解码过的指令一起,传送至执行级电路。接下来,在步骤412中,以对应于目前正在执行级电路中所执行的指令的错误的错误码,更新指令FSR,并且执行该指令。最后,在步骤414中,呼叫异常中断处理程序,并且将错误码传送至异常中断处理程序。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域的技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视前述的权利要求所界定者为准。
Claims (19)
1、一种用来更新在一管路处理器中的一指令错误状态暂存器的***,该***包括:
一管路处理器,其是具有至少三级电路,用来处理一指令;
一错误决定模组,其是连接至该管路处理器的一撷取级电路;以及
一错误通讯逻辑电路,其是连接至该指令错误状态暂存器与该错误决定模组。
2、根据权利要求1所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中该错误通讯逻辑电路包括一讯号汇流排,用来将一错误资讯与该指令一起传送至在该管路处理器中的一执行级电路。
3、根据权利要求1所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中该指令错误状态暂存器是由对应于与该指令相关的该错误资讯的该错误通讯逻辑电路所更新。
4、根据权利要求1所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中当执行具有一异常中断的一指令时,该管路处理器会将其导向至一异常中断处理程序。
5、根据权利要求4所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中该指令错误状态暂存器的内容,会被传送至该异常中断处理程序。
6、根据权利要求1所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中该错误通讯逻辑电路包括一FIFO。
7、根据权利要求6所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中该FIFO的深度是对应于用来处理一指令的该些级电路的个数。
8、根据权利要求1所述的用来更新在一管路处理器中的一指令错误状态暂存器的***,其中该错误通讯逻辑电路与该指令错误状态暂存器,是整合至一FIFO。
9、一种用来更新一指令错误状态暂存器的方法,该更新方法包括:
撷取一指令;
决定该指令是否为错误;
解码该指令;以及
执行该指令;
其中,如果该指令为错误,则将标示该指令为错误的资讯与错误理由,随着该指令一起,传送至一管路型处理器的至少一解码级电路及一执行级电路。
10、根据权利要求9所述的用来更新一指令错误状态暂存器的方法,更加包括:
以与执行任何异常中断的指令相关的异常中断资讯,更新一指令错误状态暂存器。
11、根据权利要求10所述的用来更新一指令错误状态暂存器的方法,更加包括:
将该指令错误状态暂存器的内容,提供至一异常中断处理程序。
12、一种具有可更新一指令错误状态暂存器的处理器,该处理器包括:
一撷取级电路;
一解码级电路,其是连接至该撷取级电路;
一执行级电路,其是连接至该解码级电路;
一资料记忆体管理/保护单元,用来决定在一指令中的一错误,且该资料记忆体管理/保护单元是连接至该撷取级电路;以及
一错误通讯逻辑电路,其是连接至该资料记忆体管理/保护单元与该指令错误状态暂存器。
13、根据权利要求12所述的具有可更新一指令错误状态暂存器的处理器,其中该错误通讯逻辑电路包括一讯号汇流排,用来与该指令一起,将一错误资讯传送至该执行级电路。
14、根据权利要求12所述的具有可更新一指令错误状态暂存器的处理器,其中该指令错误状态暂存器是由与一指令相关的该错误资讯所更新。
15、根据权利要求12所述的具有可更新一指令错误状态暂存器的处理器,其中当执行具有一异常中断的一指令时,该处理器会将其导向至一异常中断处理程序。
16、根据权利要求15所述的具有可更新一指令错误状态暂存器的处理器,其中该指令错误状态暂存器的内容,会被传送至该异常中断处理程序。
17、根据权利要求12所述的具有可更新一指令错误状态暂存器的处理器,其中该错误通讯逻辑电路包括一FIFO。
18、根据权利要求17所述的具有可更新一指令错误状态暂存器的处理器,其中该FIFO的深度是对应于在一指令管路中的该些级电路的个数。
19、根据权利要求12所述的具有可更新一指令错误状态暂存器的处理器,其中该错误通讯逻辑电路与该指令错误状态暂存器,是整合至一FIFO。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/043,701 | 2005-01-26 | ||
US11/043,701 US20060168485A1 (en) | 2005-01-26 | 2005-01-26 | Updating instruction fault status register |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1758215A true CN1758215A (zh) | 2006-04-12 |
CN100416496C CN100416496C (zh) | 2008-09-03 |
Family
ID=36698476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101151175A Active CN100416496C (zh) | 2005-01-26 | 2005-11-10 | 更新指令错误状态寄存器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20060168485A1 (zh) |
CN (1) | CN100416496C (zh) |
TW (1) | TWI292094B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104662548A (zh) * | 2012-08-15 | 2015-05-27 | 美商新思科技有限公司 | 用于嵌入式代码的保护方案 |
CN104781790A (zh) * | 2012-12-27 | 2015-07-15 | 英特尔公司 | 用信号通知软件可恢复错误 |
TWI718969B (zh) * | 2015-10-07 | 2021-02-11 | 南韓商三星電子股份有限公司 | 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2460280A (en) * | 2008-05-23 | 2009-11-25 | Advanced Risc Mach Ltd | Using a memory-abort register in the emulation of memory access operations |
US10175990B2 (en) * | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US9600388B2 (en) * | 2012-01-31 | 2017-03-21 | Nec Corporation | Information processing apparatus that computes power consumption for CPU command |
US9268598B2 (en) | 2012-09-13 | 2016-02-23 | International Business Machines Corporation | Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories |
US9753444B2 (en) * | 2013-03-06 | 2017-09-05 | Mitsubishi Electric Corporation | Programmable controller, programmable controller system, and method of creating execution error information |
KR101978984B1 (ko) * | 2013-05-14 | 2019-05-17 | 한국전자통신연구원 | 프로세서의 오류를 검출하는 장치 및 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537559A (en) * | 1994-02-08 | 1996-07-16 | Meridian Semiconductor, Inc. | Exception handling circuit and method |
US6823448B2 (en) * | 2000-12-15 | 2004-11-23 | Intel Corporation | Exception handling using an exception pipeline in a pipelined processor |
US7594103B1 (en) * | 2002-11-15 | 2009-09-22 | Via-Cyrix, Inc. | Microprocessor and method of processing instructions for responding to interrupt condition |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7013383B2 (en) * | 2003-06-24 | 2006-03-14 | Via-Cyrix, Inc. | Apparatus and method for managing a processor pipeline in response to exceptions |
-
2005
- 2005-01-26 US US11/043,701 patent/US20060168485A1/en not_active Abandoned
- 2005-11-01 TW TW094138199A patent/TWI292094B/zh active
- 2005-11-10 CN CNB2005101151175A patent/CN100416496C/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104662548A (zh) * | 2012-08-15 | 2015-05-27 | 美商新思科技有限公司 | 用于嵌入式代码的保护方案 |
US9514064B2 (en) | 2012-08-15 | 2016-12-06 | Synopsys, Inc. | Protection scheme for embedded code |
US9715463B2 (en) | 2012-08-15 | 2017-07-25 | Synopsys, Inc. | Protection scheme for embedded code |
US10678710B2 (en) | 2012-08-15 | 2020-06-09 | Synopsys, Inc. | Protection scheme for embedded code |
CN104781790A (zh) * | 2012-12-27 | 2015-07-15 | 英特尔公司 | 用信号通知软件可恢复错误 |
CN104781790B (zh) * | 2012-12-27 | 2017-12-29 | 英特尔公司 | 用信号通知软件可恢复错误 |
TWI718969B (zh) * | 2015-10-07 | 2021-02-11 | 南韓商三星電子股份有限公司 | 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品 |
Also Published As
Publication number | Publication date |
---|---|
US20060168485A1 (en) | 2006-07-27 |
TW200627145A (en) | 2006-08-01 |
CN100416496C (zh) | 2008-09-03 |
TWI292094B (en) | 2008-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1758215A (zh) | 更新指令错误状态暂存器 | |
US10810014B2 (en) | Method and apparatus for guest return address stack emulation supporting speculation | |
JP3615770B2 (ja) | アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ | |
KR101791811B1 (ko) | 가속기들의 낮은-레이턴시 인보크를 위한 장치 및 방법 | |
CN109643346B (zh) | 控制流完整性 | |
JP3776132B2 (ja) | マイクロプロセッサの改良 | |
US20080065872A1 (en) | Methods and apparatus for preserving precise exceptions in code reordering by using control speculation | |
CN1801114A (zh) | 使用灵活编程接口字段用于错误加入的***和方法 | |
CN102132246A (zh) | 使用选定地址类型的调试消息生成 | |
CN1950775B (zh) | 用于程序执行期间的入侵检测的方法,设备和计算机*** | |
TW201732566A (zh) | 從亂序處理器中的不良儲存-至-負載轉發復原的方法與設備 | |
JP3621116B2 (ja) | 先進のプロセッサのための変換メモリ保護装置 | |
KR20190092245A (ko) | 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법 | |
CN114781322B (zh) | Cpu芯片仿真加速中针对无mmu环境的内存状态恢复方法 | |
JP6103541B2 (ja) | バイナリコードの実行を制御する装置及び方法 | |
US9081895B2 (en) | Identifying and tagging breakpoint instructions for facilitation of software debug | |
JP3654913B2 (ja) | 一時的にターゲット・プロセッサの状態を保持する装置を備えたホスト・マイクロプロセッサ | |
CN1560734A (zh) | 双栈返回地址预测器设计方法 | |
US20180067745A1 (en) | Accelerated execution of execute instruction target | |
CN108509013B (zh) | 一种处理指令的方法及装置 | |
KR20080041251A (ko) | 전진 로드 값 검사 개선 | |
US7124277B2 (en) | Method and apparatus for a trace cache trace-end predictor | |
US20040172525A1 (en) | Electronic device and method for processing compressed program code | |
CN117519592A (zh) | 基于ssd的全盘重建优化方法、装置、设备及存储介质 | |
CN1560735A (zh) | 双栈返回地址预测器中返回地址栈的恢复方法 |
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 |