程序状态寄存器处理状态改变的系统与方法

文档序号:6429368阅读:312来源:国知局
专利名称:程序状态寄存器处理状态改变的系统与方法
技术领域
本发明有关于一种集成电路的设计,特别是涉及一种程序状态寄存器处理状态改变的系统与方法,该系统和方法用于处理数据异常的中止状况。
背景技术
在处理器系统中,数据与指令的数值写入于一存储器次系统以及由该存储器次系统读出。当发生违反存储器存取规则或其它存取规则时,存储器次系统会发出一异常中止(abort)指令给处理器。当一异常中止情形发生,处理器必须将如管线般跟在异常中止指令之后的其它指令作适当安排。
此外,该存储器次系统会将任何会改变程序状态寄存器(ProgramStatus Register,PSR)的控制无效化。基本上,数据异常中止复元程序(data abort recovery process)是用于在存储器存取时脉周期内侦测异常中止情形。通常逻辑会中断状态寄存器的更新(update)控制。当目前的存储器存取命令中止且下一个指令是一状态改变指令,将状态寄存器的更新控制中断确保维持先前的寄存器状态。然而,在异常中止情形取样路径(abort condition sampling path)上增加额外的电路或是逻辑是不利的。因为存储器次系统需要一些时间去决定一个异常中止情形,即使额外的逻辑可以实现,以系统时脉的角度来看,我们希望处理器在存储器存取时脉周期内作异常中止情形指针的取样能越晚越好,以避免于处理器与存储器次系统中产生关键(critical)时间路径。

发明内容
本发明的目的是提供一种以程序状态寄存器处理状态改变的系统与方法,该系统和方法揭示一种改进的处理器设计,用以控制处理器状态的复元,特别是有关于在处理器接收一异常中止指令下将程序状态寄存器(Program Status Register,PSR)的状态复元为前状态的改进的处理器设计。该方法与系统,可在存储器存取时脉周期中能越晚确认异常中止情形,能够用来维持适当的寄存器的状态。
为了实现上述目的,本发明提供了一种程序状态寄存器处理状态改变的系统,其特征是,包括一时脉;至少一更新数值,于接收一更新致能讯号时将该程序状态寄存器由一第一数值更新为一第二数值;一取样程序状态寄存器用以储存该程序状态寄存器的该第一数值;以及一状态改变取样寄存器,根据一状态改变指示讯号与该时脉产生一同步状态改变讯号,其中当在一第一个时脉周期内接收到该更新致能讯号,且更进一步接收到该状态改变指示讯号时,透过被该同步状态改变讯号所触发的一第一选择模块,在接着第一时脉周期后的一第二个时脉周期内将该程序状态寄存器的更新输出还原为该第一数值。
在此揭露的程序状态寄存器,能妥善处理处理器以及存储器次系统的状态改变的运作。
本发明还提供一种程序状态寄存器处理状态改变的方法,其特征是,包括储存一程序状态寄存器的一第一数值于一取样程序状态寄存器;在一第一时脉周期内侦测一更新致能讯号;将该程序状态寄存器更新为一第二数值;在该第一时脉周期内侦测该更新致能讯号后接收一状态改变指示讯号;透过一状态改变取样寄存器产生一同步状态改变讯号;以及根据产生的该同步状态改变讯号,在一第二时脉周期内将该程序状态寄存器的一输出复元为该第一数值。
综上所述,本发明提供的以程序状态寄存器处理状态改变的系统与方法,可以处理状态改变的情形,特别是处理异常中止的情形。本发明比传统的方法可获得不同的好处。例如存储器次系统拥有更多时间产生适当的异常中止情形响应。结果是处理器可以在时脉周期的末端才作异常中止情形的取样。
以下将通过的详细说明以及实施例的相关附图,进一步阐述本发明各方面的优点与其它技术特征。


图1A为用于处理数据异常中止情形的典型程序状态寄存器的逻辑示意图;图1B为图1A的程序状态寄存器的时脉示意图;图2为本发明提出的改进的程序状态寄存器的一具体实施例的逻辑示意图;图3为改进的程序状态寄存器在无异常中止情形下运作的流程图;图4为改进的程序状态寄存器在异常中止情形下运作的流程图;图5为改进的程序状态寄存器在无异常中止情形下运作,其数据状态改变的模拟时脉图;以及图6为改进的程序状态寄存器在异常中止情形下运作,其数据状态改变的模拟时脉图。
图中符号说明100 程序状态处理器部分电路逻辑102 控制讯号UPDATE104 讯号UPDATE_VALUE
106 控制讯号ABORT108 反向器110 双输入与门111 输入控制112 多路复用器114 正反器116、118 节点120 时脉200 数据放弃复元逻辑202 第一正反器204 控制讯号ABORT206 讯号ABORT.SYNC208 时脉210 控制讯号UPDATE212 讯号UPDATE_VALUE214 第一多路复用器216 第二正反器218 程序状态寄存器输入值PSRi220 程序状态寄存器输出值PSRo222 第三正反器224 程序状态寄存器取样值sPSR226 第二多路复用器230 非旁通程序状态寄存器值nPSR300、400 处理流程302、402 第一时脉周期312、412 第二时脉周期324、424 第三时脉周期304、306、308、310、314、316、318、320、322、326、328、330步骤404、406、408、410、414、416、418、420、422、426、428、430、432步骤500 无异常中止下时脉仿真502 第二时脉周期510 第三时脉周期504、506、508、512 状态改变600 异常中止下时脉仿真604 第二时脉周期612 第三时脉周期602、606、608、610、614、616、618、620、622状态改变具体实施方式
由于异常中止指令是最常发生的状态中断/改变程序,本发明的实施例将说明数个异常中止情形运作的例子。
图1A中是一典型的程序状态处理器的电路逻辑100的部分示意图。附图中仅显示一个位的程序状态寄存器的电路逻辑,完整的程序状态寄存器可以有复数个位,包含复数个相同的电路逻辑。
如图1A所示,没有侦测到异常中止指令时,处理器将一控制讯号UPDATE(102)设为1(本例子中假设1为真,0为假)。如附图,另一讯号UPDATE_VALUE(104)应该在下一个时脉边缘(edge)时写入寄存器。然而,当接收到一数据异常中止讯号时,处理器将一控制讯号ABORT(106)设为1。因为双输入与门110(AND gate)接收控制讯号UPDATE(102)及从一反向器(Inverter)(108)接收控制讯号ABORT(106),当ABORT是0时,双输入与门110输出“1”作为一多路复用器112的输入控制(111)。当输入控制111为“1”,多路复用器112选择讯号UPDATE_VALUE(104)作为一正反器114有效的输入116。正反器的输出118就是程序状态寄存器的输出。当一时脉讯号120输入正反器114时,程序状态寄存器被讯号UPDATE_VALUE所更新。同时正反器114的输出亦反馈至多路复用器112,以将程序状态寄存器的值再维持一额外的时脉周期。这个反馈讯号可视为前一个寄存器的状态。
当侦测到异常中止情形时,控制讯号ABORT(106)为真,于是反向器108输出0,而双输入与门110的输出111变成0。在接收“0”作为输入控制,多路复用器112选择前寄存器状态而非讯号UPDATE_VALUE(104),并输入正反器114。通常,正反器114保持选择的值,直到接收时脉讯号120。
在此例子中,控制讯号ABORT的讯号路径包含一反向器108以及一双输入与门110,其需要一段时间去产生输出111。这迫使存储器次系统需设计为在一个时脉周期内必须够早产生控制讯号ABORT(106),或是将处理器的时脉周期延长到能允许讯号传播所需的时间。
图1B显示图1A中讯号改变的时脉示意图。如图所示,图1A中的控制讯号UPDATE(102)在控制讯号ABORT(106)被触发前就已上升,而我们较喜欢控制讯号ABORT(106)尽可能越晚进来越好,这样存储器次系统能有更多的时间作其它内部处理。当程序状态寄存器侦测到控制讯号UPDATE(102)上升时,讯号UPDATE_VALUE(104)就载着新值输入正反器114的输入端。然而,当控制讯号ABORT(106)在同一个时脉周期结束前被触发,每一个程序状态寄存器的输入(例如正反器的D端)必须从新的讯号UPDATE_VALUE(104)的值改变成先前的值。图1A中的正反器114在下一个时脉边缘之前必须有一最小设立时间(set-up time),让程序状态寄存器的输出(例如正反器的Q端)能得到正确之前寄存器状态值。因此,从控制讯号ABORT(106)改变的时间到同一时脉周期的结束,必须要留下足够的时间来回复先前程序状态寄存器的值。时脉示意图中也显示了节点116与118的讯号。如图所示,如果异常中止情况发生,即使节点116的讯号在时脉周期内已改变为新的PSR的值,节点118的讯号仍会回复为旧PSR的值。
于此揭露包含于处理器设计中的一改进的逻辑。当一新值被写入时,此逻辑允许程序状态寄存器之前状态保持不变。如果侦测到异常中止情形,若需要的话此逻辑可以提供前状态给程序状态寄存器。此改进的逻辑允许存储器次系统或是处理器其它中断发送模块能越晚、越接近时脉周期末端送出一状态改变讯号,例如异常中止讯号。
图2为本发明一实施例,为包含数据异常中止复元逻辑200的改进的程序状态寄存器的部分示意图。在此例子中,处理器能在接近时脉周期末端时取样异常中止情形。此外,此改进逻辑提供来储存前状态寄存器的状态,让前寄存器的状态能快速回复。
如图所示,一状态改变取样寄存器,如第一正反器202,用来取样控制讯号ABORT(204)。第一正反器202有一输出,称的为ABORT.SYNC(206)。讯号ABORT.SYNC(206)与时脉208的边缘同步,并且在一时脉周期中会维持在高电位。在典型的存储器存取周期的开始,处理器可将一控制讯号UPDATE(210)设成“1”(高电位),表示用来将讯号UPDATE_VALUE(212)于下一个时脉边缘写入程序状态寄存器中。一第一多路复用器214选择讯号UPDATE_VALUE(212)并将该讯号提供给一同步模块,如第二正反器216。这个讯号的值可称的为程序状态寄存器输入(PSRi)(218)。而目前的程序状态寄存器的值(PSRo)(220)会反馈到第一多路复用器214,同时也会提供给第三正反器222,并储存为一程序状态寄存器取样的值(sPSR)(224)。储存sPSR(224)让处理器在异常中止情形下能将寄存器回复为前值。在下个时脉周期,程序状态寄存器输入PSRi(218)(或非旁通程序状态寄存器-Non-bypassed Program Status Register-的值nPSR(230))与sPSR(224)被输入一第二多路复用器226。第二多路复用器226通过选择nPSR(230)或是sPSR(224)来产生下一个程序状态寄存器输出PSRo(220),并将提供给存储器系统(图中并未显示)。在每一个时脉上升边缘,当PSRo是有效的程序状态寄存器的状态时,处理器逻辑可视PSRo为每个时脉周期寄存器的值。另一方面,作为第二正反器的输出,nPSR(230)对一时脉周期可能并非有效,但是可用于在异常中止情形发生后让处理器逻辑忽略程序状态寄存器的状态。因为nPSR(230)不需通过第二多路复用器226,所以是一较快的输出,并且在PSRo(220)之前已完成。
如前所述,如果接收到控制讯号ABORT(204),第一正反器202对控制讯号ABORT(204)取样并产生第一正反器202的输出一讯号ABORT.SYNC(206)。如果在同一时脉周期内控制讯号ABORT与控制讯号UPDATE皆为真,第二多路复用器216会提供讯号UPDATE_VALUE(212)给PSRo(220),但第一正反器202将传送讯号给第二多路复用器226去选择sPSR将状态寄存器回复为前寄存器状态。此外,比较图1A与图2可知,此改进的设计的控制讯号UPDATE并不需通过一时间延迟的与门。
图3表示在一般无异常中止情形下,改进的数据异常中止复元系统的处理流程图。由于改变在不同的时脉周期,处理流程300也分为不同时脉周期表示。必须了解图中箭号用以完成整个流程,并不必然代表时间上的顺序性。这些步骤中的动作可以在相同的时间发生。
为方便说明,更进一步假设程序流程发生在特定的时脉周期,如第一时脉周期302。在第一时脉周期的开始,假设PSRo与讯号UPDATE_VALUE是第一多路复用器的有效输入(步骤304)。另外于同一时间,PSRo亦是第三正反器的有效输入(步骤306)。因为一为“真”的控制讯号UPDATE在第一多路复用器作确认(步骤308),因此讯号UPDATE_VALUE于第一多路复用器选择并且作为第二正反器有效输入(步骤310)。现在讯号UPDATE_VALUE可视为PSRi。
在下一个时脉周期(第二时脉周期312)出现时,第二正反器使PSRi为第二多路复用器有效的输入(步骤314),并作为一输出nPSR。在相同时脉边缘,第三正反器输入PSRo并让输出的sPSR成为第二多路复用器有效的输入(步骤316)。在此时间点,储存的或旧的sPSR,以及新的UPDATE_VALUE都是第二多路复用器有效的输入。因为讯号ABORT.SYNC在异常中止情形下并未更新,因此讯号ABORT.SYNC为“0”(步骤318),并且第二多路复用器选择nPSR作为一有效的输出PSRo(步骤320)。在此例子中PSRo与nPSR具有相同的值且同样是状态寄存器有效的输出。当第三时脉周期324开始,如果没有异常中止情形,则控制讯号ABORT为“0”(步骤326),ABORT.SYNC亦为“0”(步骤328),且PSRo保持原值(步骤330)。
图4表示在异常中止情形下,图2中改进的数据异常中止复元系统的处理流程图。一样,流程在第一时脉周期(402)开始。跟在无异常中止情形下相同,PSRo与UPDATE_VALUE为有效输入并存于第二正反器与第三正反器中(步骤404、406、408、与步骤410)。当第二时脉周期(412)开始,第二正反器与第三正反器输出nPSR与sPSR作为第二多路复用器有效的输入(步骤414与416)。一开始,如同在无异常中止情形,讯号ABORT尚未被取样,ABORT.SYNC为“0”(步骤418)。nPSR被选择作为有效的输出PSRo(步骤420)。至目前为止,处理流程400与无异常中止情形的处理流程相同。PSRo与nPSR都是有效的输出。
在第三时脉周期424开始前,控制讯号ABORT可能出现于第一正反器(步骤422)。在第三时脉周期424开始后,讯号ABORT确认为“真”(步骤426),且ABORT.SYNC设为“1”(步骤428)。这导致第二多路复用器选择sPSR(步骤430)。PSRo重设为sPSR(旧值)(步骤432)。
图5与图6显示前述具有数据异常中止复元特性的改进的处理器设计的仿真时脉示意图。图5显示在无异常中止情形下正常运算的时脉模拟500。如图所示,在第二时脉周期502间,首先控制讯号UPDATE设为“真”(504)。当讯号UPDATE_VALUE设为一新值(506),PSRi立刻被设为讯号UPDATE_VALUE的新值(508)。在第三时脉周期510开始,PSRo被设为该讯号UPDATE_VALUE的值(512)。
图6表示在异常中止情形(602)下,控制讯号ABORT与控制讯号UPDATE(606)一同出现在第二时脉周期604内时的时脉仿真(600)。如同无异常中止情形,控制讯号UPDATE首先设为“真”(606)。接着控制讯号ABORT出现(602)。控制讯号ABORT不影响载有该程序状态寄存器输入的第一多路复用器。控制讯号ABORT仅需要一小段的设立时间以产生讯号ABORT.SYNC。另一方面,当讯号UPDATE_VALUE设为一新值(608),如同在第二时脉周期中PSRi将被设为该新的UPDATE_VALUE(610)。在第三时脉周期612开始时,含新UPDATE_VALUE值的nPSR变成有效的。
在第三时脉周期开始,当PSRo反馈为第三正反器的输入,sPSR立刻被设为程序状态寄存器的值(616),该状态寄存器的值是一“旧值”。在ABORT.SYNC设为1之前,因为nPSR的改变,PSRo一开始切换为新的UPDATE_VALUE(618)且维持一段非常短暂的时间。当ABORT.SYNC设为1(620)后,PSRo被设为旧值的sPSR,因而将PSRo回复为在第二时脉周期的值。注意因为第一正反器、第二正反器、与第三正反器都是与时脉同步,至于PSRo,切换为nPSR(618)与切换回sPSR(620)间的时间间隔(622)相对来说较小。如时脉示意图所示,除了快速切换时间(622),从第二时脉周期至第三时脉周期PSRo保持为旧值。
本发明提供许多不同实施例或例子以实现本发明不同的特征。这些实施例中的元件和步骤用以阐明本发明的精神,并非用以限定本发明申请专利范围。以上的描述,对于熟知本技术领域的专门人士应可明了与实施,因此其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在所述的权利要求范围中。
权利要求
1.一种程序状态寄存器处理状态改变的系统,其特征是,包括一时脉;至少一更新数值,于接收一更新致能讯号时将该程序状态寄存器由一第一数值更新为一第二数值;一取样程序状态寄存器用以储存该程序状态寄存器的该第一数值;以及一状态改变取样寄存器根据一状态改变指示讯号与该时脉产生一同步状态改变讯号,其中当在一第一个时脉周期内接收到该更新致能讯号,且更进一步接收到该状态改变指示讯号时,透过被该同步状态改变讯号所触发的一第一选择模块,在接着第一时脉周期后的一第二个时脉周期内将该程序状态寄存器的更新输出还原为该第一数值。
2.如权利要求1所述的程序状态寄存器处理状态改变的系统,其特征是,更包含一第二选择模块,根据该更新致能讯号选择该更新数值或从该程序状态寄存器的输出端反馈的该第一数值,以产生一程序状态寄存器输入讯号。
3.如权利要求2所述的程序状态寄存器处理状态改变的系统,其特征是,更包含一同步化模块,用以将该程序状态寄存器输入讯号与该时脉同步,并产生该程序状态寄存器的一非旁通(non-bypassed)输出讯号。
4.如权利要求3所述的程序状态寄存器处理状态改变的系统,其特征是,该程序状态寄存器的该非旁通输出讯号连接于一或多个预先决定的连接点,其中该连接点不需要在该第二周期回复的该第一数值。
5.如权利要求1所述的程序状态寄存器处理状态改变的系统,其特征是,该状态改变指示讯号于该第一时脉周期末端接收,且满足该状态改变取样寄存器的一预先决定的设立时间(set-up time)的要求。
6.如权利要求1所述的程序状态寄存器处理状态改变的系统,其特征是,该同步状态改变讯号持续一完整时脉周期。
7.如权利要求1所述的程序状态寄存器处理状态改变的系统,其特征是,该取样程序状态寄存器与该状态改变取样寄存器为多路复用器。
8.如权利要求1所述的程序状态寄存器处理状态改变的系统,其特征是,该状态改变指示讯号指示发生一异常中止情形。
9.一种程序状态寄存器处理状态改变的方法,其特征是,包括储存一程序状态寄存器的一第一数值于一取样程序状态寄存器;在一第一时脉周期内侦测一更新致能讯号;将该程序状态寄存器更新为一第二数值;在该第一时脉周期内侦测该更新致能讯号后接收一状态改变指示讯号;透过一状态改变取样寄存器产生一同步状态改变讯号;以及根据产生的该同步状态改变讯号,在一第二时脉周期内将该程序状态寄存器的一输出回复为该第一数值。
10.如权利要求9所述的程序状态寄存器处理状态改变的方法,其特征是,该状态改变指示讯号于该第一时脉周期末端前一预先决定的时间间隔内接收。
11.如权利要求9所述的程序状态寄存器处理状态改变的方法,其特征是,将该程序状态寄存器的该输出复元为该第一数值步骤更包含由一多路复用器选择该第二数值或储存的该第一数值。
12.如权利要求9所述的程序状态寄存器处理状态改变的方法,其特征是,将该程序状态寄存器更新为该第二数值步骤更包含根据选择从该程序状态寄存器输出所反馈的该第一数值或接收该更新致能讯号所得的该第二数值,以产生该程序状态寄存器输入讯号。
全文摘要
一种程序状态寄存器处理状态改变的系统与方法。包含一时脉;至少一更新数值,用于在接收一更新致能讯号时将程序状态寄存器由一第一数值更新为一第二数值;一取样程序状态寄存器储存该取样状态寄存器的第一数值;一状态改变取样寄存器,根据一状态改变指示讯号与该时脉来产生一同步状态改变讯号。当在第一个时脉周期内接收到该更新致能讯号,且更进一步接收到该状态改变指示讯号时,透过被该同步状态改变讯号触发的一第一选择模块,在接着第一时脉周期后的一第二个时脉周期内将程序状态寄存器的更新输出还原为该第一数值。
文档编号G06F9/30GK1591324SQ20041007989
公开日2005年3月9日 申请日期2004年9月24日 优先权日2003年11月7日
发明者保罗·J·佩特承, 威廉·V·米勒 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1