CN1291316C - 用于管理处理器中的状态信息的方法及其处理器 - Google Patents
用于管理处理器中的状态信息的方法及其处理器 Download PDFInfo
- Publication number
- CN1291316C CN1291316C CNB2003101180003A CN200310118000A CN1291316C CN 1291316 C CN1291316 C CN 1291316C CN B2003101180003 A CNB2003101180003 A CN B2003101180003A CN 200310118000 A CN200310118000 A CN 200310118000A CN 1291316 C CN1291316 C CN 1291316C
- Authority
- CN
- China
- Prior art keywords
- processor
- processing procedure
- architecture state
- copy
- state
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318536—Scan chain arrangements, e.g. connections, test bus, analog signals
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
公开了一种用于管理一个处理器的、对于在处理器中执行一个处理过程为关键性的硬体系结构状态的方法和系统。当由处理器接收到一个中断时,从处理器中向存储器中存储硬体系结构状态的一个映像拷贝。硬体系结构状态的映像拷贝允许快速保存用于被中断的处理过程的硬体系结构状态,所以下一个处理过程的体系结构状态能够被立即存储在处理器中。
Description
技术领域
本发明通常涉及数据处理领域,尤其涉及一种改进的用于处理中断的数据处理系统和方法。
背景技术
当执行一组计算机指令时,处理器被频繁地中断。这个中断可能由一个中断或者异常引起。
中断是一个与在中断发生时正在执行的指令没有关联的异步中断事件。即,中断常常由在处理器外的某些事件、诸如来自一个输入/输出(I/O)设备的输入、来自另一个处理器对一个操作的调用等所引起。其它中断可能是内部引起的,例如,由控制任务切换的定时器到期引起。
异常是一个直接由当发生异常时正在执行的指令的执行而引起的同步事件。也就是说,异常是一个来自处理器内部的事件、诸如运算溢出、定时的维护检查、内部性能监控器、板上工作负荷管理器等。通常,异常比中断频繁得多。
术语“中断”和“异常”常常是互换的。在本说明书中,术语“中断”将用来描述“中断”和“异常”中断。
随着计算机软件和硬件变得更加复杂,中断的数目和频率显著地增加。这些中断是必要的,因为它们支持多个处理过程的执行、多个外设的处理、和各个组件的性能监控。虽然这种特征是有利的,但是由中断消耗的计算能力被这样显著地增加了以致它超过了处理器的处理速度增长。因此,在很多情况下,尽管增加了处理器时钟频率,但是系统性能实际上降低了。
图1说明了一个传统的处理器内核100。在处理器内核100内,第一级指令高速缓存(L1 I-高速缓存)102向指令序列逻辑104提供指令,其中该指令序列逻辑104向适当的执行单元108发布指令用于执行。可能包括浮点执行单元、定点执行单元、分支执行单元等的执行单元108包括一个加载/存储单元(LSU)108a。LSU 108a执行加载和存储指令,其分别从第一级数据高速缓存(L1 D-高速缓存)112中加载数据到体系结构寄存器110中、以及从体系结构寄存器110中存储数据到L1 D-高速缓存112中。未命中L1高速缓存102和112的数据和指令请求能够通过经由存储器总线116访问系统存储器118来解决。
如上所述,处理器内核100常遇到来自由外部中断线路114表示的多个源的中断。当由处理器内核100收到一个中断信号(例如,经由一条中断线114)时,暂停当前处理过程的执行,并且由被称为中断处理程序的中断特定软件来处理中断。在其它动作当中,中断处理程序通过由LSU 108a执行存储和加载指令来保存和恢复在中断时执行的处理过程的体系结构状态。使用LSU 108a来向系统存储器118和从系统存储器118中传输体系结构状态阻塞了中断处理程序执行其它存储器访问指令(或者在超标量计算机的情况下执行另一个处理过程),直到状态传输完成为止。因此,通过处理器的执行单元来保存和随后恢复一个处理过程的体系结构状态导致了在执行被中断的处理过程以及中断处理程序过程中的延迟。这个延迟导致处理器的总体性能减低。因此,本发明认识到,需要有一种特别是响应于中断,减小化由于保存和恢复体系结构状态而产生的处理延迟的方法和系统。
发明内容
本发明提出了一种用于改善在数据处理系统的处理器内的中断处理的方法和系统。
当在处理器接收了一个中断信号时,当前正在执行的处理过程的硬体系结构状态被加载到一个或多个专用的映像寄存器中。硬体系结构状态包括在处理器内的、为执行被中断的处理过程所必不可少的信息。一种进一步保存这个硬体系结构状态的有益方法包括使用高带宽总线直接从映像寄存器向系统存储器传送硬体系结构状态,而不使用(和因此占用)处理器的正常加载/存储路径和执行单元。在硬体系结构状态已经被加载到映像寄存器中之后,中断处理程序立即开始运行。包括高速缓存内容的处理过程的软状态也至少部分地被保存到系统存储器中。为了加速软状态的保存,和避免与正在执行的中断处理程序的数据冲突,软状态最好是使用扫描链路径从处理器进行传送,其在现有技术中通常是仅仅在制造商测试期间使用而在正常操作期间是不使用的。
在完成中断处理程序时,恢复用于一个被中断的处理过程的硬体系结构状态和软状态,该处理过程能够在加载硬体系结构状态时立即运行。
为了提供对可运行不同操作系统的其它处理器及其它分区的访问,硬状态和软状态都可以被保存在可对任何处理器和/或分区访问的系统存储器的一个保留区中。
本发明提供了一种管理处理器中的状态信息的方法,该方法包含:在处理器内存储一个对于在处理器中执行一个处理过程为关键性的体系结构状态;在处理器内存储该体系结构状态的一个映像拷贝;响应于在处理器接收了一个处理过程中断,将该体系结构状态的映像拷贝存至一个存储器中;以及与完成将映像拷贝存至存储器中无关地修改体系结构状态。
本发明还提供了一种处理器,包含:至少一个执行单元;一个指令序列单元,连接到至少一个执行单元;以及第一寄存器组,连接到至少一个执行单元,其中第一寄存器组包含对于在处理器中执行一个处理过程为关键性的体系结构状态的至少一部分;一个相应的映像寄存器组,连接到第一寄存器组,该映像寄存器组包含第一寄存器组中所包含的至少一部分体系结构状态的映像拷贝;以及一个存储器,连接到映像寄存器组,其中:该处理器在接收到一个处理过程中断时,把体系结构状态的映像拷贝存储到存储器中,并且体系结构状态的映像拷贝被与为下一个在处理器上运行的处理过程而修改体系结构状态无关地存储到存储器中。
本发明还提供了一种处理器,包含:用于在处理器内存储对于在处理器中执行一个处理过程为关键性的体系结构状态的装置;用于在处理器内存储该体系结构状态的一个映像拷贝的装置;用于响应在处理器接收一个处理过程中断,而将体系结构状态的映像拷贝存储在一个存储器中的装置;以及用于与完成在存储器中存储映像拷贝无关地,在处理器内修改体系结构状态的装置。
通过以下的详细描述,本发明的以上及另外的目的、特征、和优点将变得显而易见。
附图说明
本发明的创新特征将在附加的权利要求中加以阐明。然而本发明自身、以及一个最佳使用方式、它的更多目的和优点,通过结合附图参考以下一个说明性实施例的详细说明,可得到最好的理解,其中:
图1描述了一个传统的计算机系统的方框图,该计算机系统使用了用于使用一个加载/存储单元保存处理器的体系结构状态的现有技术方法;
图2说明了依据本发明的一个数据处理系统的示范性实施例的方框图;
图3a和3b描述了在图2中说明的一个处理单元的补充细节;
图4说明了按照本发明的一个示范性软件配置的分层图;
图5a和5b一起形成了依据本发明的一个示范性中断处理过程的流程图;
图6a和6b是显示了依据本发明用于保存硬体系结构状态和软状态的、如图5中所示的步骤的更多细节的流程图;
图7描述了由本发明使用以至少向存储器传递一个处理过程的软状态的扫描链路径;
图8a-8c说明了依据本发明使用的、用以存储至少一级中断处理程序(First Level Interrupt Handler,FLIH)、二级中断处理程序(Second Level Interrupt Handler,SLIH)和制造级测试指令的、在图2中描述的闪速ROM的补充细节;
图9是一个描述了依据本发明由一个处理器在收到中断时跳转到一个预测SLIH的流程图;
图10描述了在存储的硬体系结构状态、存储的软状态、存储器分区和处理器之间的逻辑与通信关系;
图11说明了一个用于在存储器中存储软状态的示范性数据结构;以及
图12是一种用于在计算机系统正常操作期间通过制造级测试程序的执行测试一个处理器的示范性方法的流程图。
具体实施方式
下面参见图2,描述了一个多处理器(MP)数据处理系统201的示范性实施例的高级框图。虽然MP数据处理系统201被描述成一个对称的多处理器(SMP),但是本发明可以和计算机体系结构领域技术人员已知的任何MP数据处理系统、包括但是不局限于不均匀的存储器访问(NUMA)MP或者仅有高速缓存的存储器体系结构(Cache Only Memory Architecture,COMA)MP一起使用。
依据本发明,MP数据处理系统201包括多个被连接用于通过互连222进行通信的处理单元200,其被描述为处理单元200a到200n。在一个最佳实施例中,应当明白,在MP数据处理系统201中的每个处理单元200、包括处理单元200a和处理单元200n在体系结构上是相似的或者相同的。处理单元200a是单个集成电路超标量处理器,如以下更深入讨论得那样,其包括全部由集成电路形成的各种执行单元、寄存器、缓冲器、存储器、及其它功能单元。在MP数据处理系统201中,每个处理单元200通过一条高带宽专用总线116连接到相应的系统存储器118,其中系统存储器118被描述成用于处理单元200a的系统存储器118a和用于处理单元200n的系统存储器118n。
处理单元200a包括一个指令序列单元(ISU)202,其包括用于读取、调度和发布将被执行单元(EU)204执行的指令的逻辑。ISU202和EU 204的详细描述将在图3中以示范性形式给出。
与EU 204有关的是包含处理单元200a内的信息的“硬”状态寄存器206,其中该信息是执行当前正在执行的处理过程所必需的,连接到硬状态寄存器206的是下一个硬状态寄存器210,其包含例如当当前处理过程终止或者被中断时用于将被执行的下一个处理过程的硬状态。还与硬状态寄存器206有关联的是映像寄存器208,其包含(或者将会包含)当当前正在执行的处理过程终止或者被中断时硬状态寄存器206中的内容的拷贝。
每个处理单元200进一步包括一个高速缓存分级结构212,其可以包括多级高速缓冲存储器。对从系统存储器118加载的指令和数据的芯片内(on-chip)存储可以通过例如高速缓存分级结构212实现,其中如图3所示,高速缓存分级结构212可以包含第一级指令高速缓冲存储器(L1 I-高速缓存)18、第一级数据高速缓存(L1 D-高速缓存)20、和共用的第二级高速缓存(L2高速缓存)16。高速缓存分级结构212经由高速缓存数据路径218,并且依据至少一个实施例还经由扫描链路径214,连接到一个用于系统存储器118的芯片内集成存储器控制器(IMC)220。由于扫描链路径214是一个串行路径,所以在扫描链路径214和IMC 220之间连接串行-到-并行接口216。在下面详细介绍处理单元200a中所描述组件的功能。
下面参见图3a,其显示了处理单元200的其它细节。处理单元200包含一个芯片内多级高速缓存分级结构,其包含一个共用的第二级(L2)高速缓存16和分为两支的第一级(L1)指令(I)和数据(D)高速缓存18和20。如本领域技术人员众所周知的那样,高速缓存16、18和20提供了对高速缓存线的低延迟访问,该高速缓存线对应于系统存储器118中的存储单元。
响应于驻留在取指令地址寄存器(IFAR)30中的有效地址(EA),从L1 I-高速缓存18中读取用于处理的指令。在每个周期期间,一个新的取指令地址可以从以下三个源之一被加载到IFAR 30中:分支预测单元(BPU)36、全局完成表(GCT)38、和分支执行单元(BEU)92,其中分支预测单元(BPU)36提供由条件分支指令的预测而产生的推测性目标路径和连续地址,全局完成表(GCT)38提供刷新和中断地址,而分支执行单元(BEU)92提供由预测的条件分支指令的解决而产生的非推测性的地址。与BPU 36有关联的是一个分支历史记录表(BHT)35,其中记录了条件分支指令的解决方案以帮助预测将来的分支指令。
有效地址(EA)、诸如在IFAR 30内的取指令地址是由处理器生成的数据或者指令的地址。EA指定一个段寄存器和在该段内的偏移量信息。为了访问存储器中的数据(包括指令),通过一级或多级转换,把EA转换成为一个与其中存储有该数据或者指令的物理单元有关的实际地址(RA)。
在处理单元200内,到实际地址的有效转换是由存储器管理单元(MMU)和相关的地址转换设备执行的。最好是,为指令访问和数据访问提供一个独立的MMU。在图3a中,说明了单个MMU 112,而且为了清楚起见,仅仅显示了到ISU 202的连接。然而,本领域技术人员应当明白,MMU 112最好还包括到加载/存储单元(LSU)96和98及其它管理存储器访问所需要的组件的连接(未显示)。MMU112包括数据转换后备缓冲区(DTLB)113和指令转换后备缓冲区(ITLB)115。每个TLB包含最近参考的页表条目,其被访问用以为数据(DTLB 113)或者指令(ITLB 115)把EA转换为RA。来自ITLB 115的最近参考的EA-到-RA转换被高速缓存在EOP有效-到-实际地址表(ERAT)32中。
如果命中/未命中逻辑22,在由ERAT 32把包含在IFAR 30中的EA进行转换并且在I-高速缓存目录34中查找实际地址(RA)之后,确定对应于IFAR 30中的EA的高速缓存线指令没有驻留于L1 I-高速缓存18中,则命中/未命中逻辑22经由I-高速缓存请求总线24把RA作为一个请求地址提供给L2高速缓存16。这样的请求地址也可以由L2高速缓存16内的预取逻辑基于最近访问模式产生。响应于一个请求地址,L2高速缓存16输出一高速缓存线的指令,这些指令在经过可选择的预解码逻辑144之后,可经由I-高速缓存重新加载总线26加载到预取缓冲器(PB)28和L1 I-高速缓存18中。
一旦由IFAR 30中的EA指定的高速缓存线驻留在L1高速缓存18中,L1 I-高速缓存18就把该高速缓存线输出到分支预测单元(BPU)36和取指令缓冲器(IFB)40中。BPU 36扫描该高速缓存线指令中的分支指令,并且如果有的话,则预测条件分支指令的结果。继一个分支预测之后,正如以上讨论的那样,BPU 36向IFAR 30提供一个推测性取指令地址,并且传递该预测结果到分支指令队列64中,以便当条件分支指令随后由分支执行单元92处理时,能够确定预测的准确度。
IFB 40暂时缓存从L1 I-高速缓存18接收的高速缓存线的指令,直到该高速缓存线的指令能够被指令转换单元(ITU)42转换为止。在处理单元200的说明实施例中,ITU 42把指令从用户指令集体系结构(UISA)指令转化成为可以被处理单元200的执行单元直接执行的、不同数目的内部ISA(IISA)指令。这样的转换可以,例如,通过参考保存在一个只读存储器(ROM)模板中的微码来执行。在至少某些实施例中,该UISA-到-IISA的转换会产生一个和UISA指令不同数目的IISA指令,及/或和相应的UISA指令相比、具有不同长度的IISA指令。然后产生的IISA指令通过全局完成表38指定到一个指令组中,该指令组中的成员可以被允许彼此之间相互无序地发送和执行。全局完成表38跟踪每个还有待于通过至少一个相关的EA完成执行的指令组,该EA最好是在该指令组中最早指令的EA。
继UISA-到-IISA的指令转换之后,依据指令的类型,可能无序地将指令发送给锁存器44、46、48和50中的一个。这就是说,分支指令及其它条件寄存器(CR)修改指令被发送给锁存器44;定点和加载-存储指令被发送给锁存器46和48中的任何一个;而浮点指令被发送给锁存器50。然后,通过CR映射器52、连接和计数(LC)寄存器映射器54、异常寄存器(XER)映射器56、通用寄存器(GPR)映射器58、以及浮点寄存器(FPR)映射器60中的适当一个,向每个请求一个重命名寄存器以暂时存储执行结果的指令,分配一个或多个重命名寄存器。
然后,发送的指令被临时放置在CR发布队列(CRIQ)62、分支发布队列(BIQ)64、定点发布队列(FXIQ)66和68、以及浮点发布队列(FPIQ)70和72中的适当一个中。只要观察到数据相关性和反相关性,就能够随机地从发布队列62、64、66、68、70以及72中发布指令到处理单元10的执行单元用于执行。然而,在该指令执行完成之前,一直在发布队列62-72中保持该指令,而且在该指令中的任何一个需要被重新发布的情况下,如果有结果数据的话,则写回结果数据。
如说明的那样,处理单元204的执行单元包括:一个CR单元(CRU)90,用于执行CR-修改指令;一个分支执行单元(BEU)92,用于执行分支指令;两个定点单元(FXU)94和100,用于执行定点指令;两个加载-存储单元(LSU)96和98,用于执行加载和存储指令;以及两个浮点单元(FPU)102和104,用于执行浮点指令。每一个执行单元90-104最好被实现为一个具有若干流水线阶段的执行流水线。
在执行单元90-104之一内执行期间,如果存在操作数,则一个指令从和该执行单元相连接的寄存器堆内的一个或多个体系结构及/或重命名寄存器中接收操作数。当执行CR-修改或者CR-相关指令时,CRU 90和BEU 92访问CR寄存器堆80,其在一个最佳实施例中包含一个CR和若干个CR重命名寄存器,其中每个寄存器包含若干个由一个或多个比特形成的不同字段。在这些字段当中有LT、GT、和EQ字段,它们分别指示一个值(一般为一条指令的结果或者操作数)是小于零、大于零、还是等于零。连接和计数寄存器(LCR)堆82包含一个计数寄存器(CTR)、一个连接寄存器(LR)和对应于每一个的重命名寄存器,BEU 92通过它们还可以解决条件分支以获得一个路径地址。通用寄存器堆(GPR)84和86,是同步的、重复的寄存器堆,用于存储由FXU 94和100以及LSU 96和98访问和产生的定点以及整数值。浮点寄存器堆(FPR)88,类似于GPR 84和86,也可以被实现为同步寄存器的重复集合,包含由FPU 102和104执行浮点指令以及LSU 96和98执行浮点加载指令所产生的浮点值。
在一个执行单元完成一条指令的执行之后,该执行通知GCT38,其按程序次序调度指令的完成。为了完成由CRU 90、FXU 94和100或者FPU 102和104之一执行的一条指令,GCT 38向执行单元发信号,如果有结果数据,则该执行单元从指定的重命名寄存器中向适当寄存器堆内的一个或多个体系结构寄存器写回结果数据。然后把该指令从发布队列中删除,并且一旦其指令组内的全部指令都已经被完成,就从GCT 38中删除所有指令。然而,其它类型的指令,是以不同的方式完成的。
当BEU 92解决了一个条件分支指令并且确定了应该被采用的执行路径的路径地址时,把该路径地址和由BPU 36所预测的推测性路径地址进行比较。如果两个路径地址相匹配,则不需要更进一步的处理。然而,如果计算出来的路径地址和预测的路径地址不匹配,则BEU 92向IFAR 30提供正确的路径地址。在任一情形下,都能从BIQ64中删除分支指令,并且当在同一个指令组内的所有其它指令已经完成时,从GCT 38中删除所有其它指令。
继执行一条加载指令之后,通过执行该加载指令计算出来的有效地址由一个数据ERAT(未说明)进行转换,然后作为一个请求地址提供给L1 D-高速缓存20。此时,从FXIQ 66或者68中删除加载指令,并且在指示的加载被执行之前,把该指令放入加载重新排序队列(LRQ)114中。如果该请求地址不在L1 D-高速缓存20中,则将该请求地址放入加载未命中队列(LMQ)116中,通过该队列从L2高速缓存16中获取请求的数据,并且如果此时失败的话,就从另一个处理单元200或者从系统存储器118中获取请求的数据(如图2所示)。LRQ 114相对于正在处理的加载窥探在互连222结构上的独占(exclusive)访问请求(例如,读取是为了修改)、刷新或者注销(kill)(如图2所示),并且如果发生命中,则取消和重新发行加载指令。存储指令可以利用一个存储队列(STQ)110类似地完成,在执行存储指令之后,在存储队列(STQ)110中加载用于存储的有效地址。数据从STQ 110中被存储到L1 D-高速缓存20和/或L2高速缓存16中。
处理器状态
处理器的状态包括在特定时间所存储的数据、指令和硬件的状态,并且在此被定义为“硬”或者“软”状态。“硬”状态被定义为在一个处理器内、在体系结构上为使处理器从它在处理过程中的当前点起执行处理过程所需要的信息。相反,“软”状态被定义为在处理器内、将会提高一个处理过程的执行效率、但不是为获得一个体系结构上正确的结果所要求的信息。在图3a的处理单元200中,硬状态包括用户级寄存器、诸如CRR 80、LCR 82、GPR 84和86、FPR88、以及管理员级寄存器51中的内容。处理单元200的软状态包括“性能-关键性”信息、诸如L-1I-高速缓存18和L-1 D-高速缓存20的内容,地址转换信息、诸如DTLB 113和ITLB 115,和较不关键性信息、诸如BHT 35和L2高速缓存16中的所有或者部分内容。
寄存器
在以上的描述中,处理单元200中的寄存器堆、诸如GPR 86、FPR 88、CRR 80和LCR 82通常被定义为“用户级寄存器”,是因为这些寄存器能够由具有用户或者管理员特权的所有软件访问。管理员级寄存器51包括通常在操作系统内核中、通常由操作系统使用、用于诸如存储器管理、配置和异常处理的操作的那些寄存器。象这样,对管理员级寄存器51的访问通常被限制到仅仅几个具有足够的访问许可的处理过程(即,管理员级处理过程)。
如在图3b中所描述的那样,管理员级寄存器51通常包括配置寄存器302、存储器管理寄存器308、异常(exception)处理寄存器314、和各种各样的寄存器322,将在下面对它们进行更详细地描述。
配置寄存器302包括一个机器状态寄存器(MSR)306和一个处理器版本寄存器(PVR)304。MSR 306定义处理器的状态。也就是说,MSR 306标识在处理了一个指令中断(异常)之后指令执行应当再继续的地方。PVR 304标识处理单元200的特定类型(版本)。
存储器管理寄存器308包括块地址转换(BAT)寄存器310。BAT寄存器310是软件控制的阵列,其存储在芯片内可用块地址的转换。最好是,有单独的指令和数据BAT寄存器,如IBAT 309和DBAT311所示。存储器管理寄存器还包括段寄存器(SR)312,其被用来在BAT转换失败时把EA转换为虚拟地址(VA)。
异常处理寄存器314包括一个数据地址寄存器(DAR)316、专用寄存器(SPR)318、和机器状态保存/恢复(SSR)寄存器320。DAR 316包含如果访问导致异常、诸如对齐方式异常,则由一条存储器访问指令生成的有效地址。SPR被用于由操作系统定义的特定目的,例如,为了标识被保留用于由一级异常处理程序(FLIH)使用的一个存储区。这个存储区最好对系统中的每个处理器来说是唯一的。SPR 318可以被FLIH用作一个暂时存储寄存器以保存通用寄存器(GPR)中的内容,其能够从SPR 318中加载,并且被用作一个基址寄存器以保存其它GPR到存储器中。SSR寄存器320保存异常(中断)时的机器状态,并且在执行一条中断返回指令时恢复机器状态。
各种各样的寄存器322包括一个用于保持时间的时基(TB)寄存器324,一个用于递减计数的递减寄存器(DEC)326、和一个如果遇到一个指定的数据地址则导致出现断点的数据地址断点寄存器(DABR)328。此外,各种各样的寄存器322包括一个基于时间的中断寄存器(TBIR)330,以在一个预先确定的时间段之后启动一个中断。这种基于时间的中断可以和将在处理单元200上运行的定期维护例程一起使用。
软件结构
在MP数据处理系统、诸如图2的MP数据处理系统201中,可能在不同的操作系统下,能够同时运行多个应用程序。图4描述了依据本发明的MP数据处理系统201的示范性软件配置的分层框图。
如说明的那样,软件配置包括一个管理程序402,其是一个把MP数据处理系统201的资源分配到多个分区中、然后协调在多个分区内的多个(可能不同的)操作系统的执行的管理软件。例如,管理程序402可以指定处理单元200a、系统存储器118a中的第一区域、及其它到第一分区的由操作系统404a操作的资源。类似地,管理程序402可以指定处理单元200n、系统存储器118n中的第二区域、及其它到第二分区的由操作系统404n操作的资源。
在操作系统404的控制下运行的可以是多个应用程序406,诸如文字处理器、电子数据表、浏览器等。例如,应用程序406a到406x全部在操作系统404a的控制下运行。
每个操作系统404和应用程序406通常包含多个处理过程。例如,应用程序406a被显示为具有多个处理过程408a到408z。假定处理单元200具有用于处理过程的必要的指令、数据和状态信息,每个处理单元200都能够独立地执行一个处理过程。
中断处理
下面参见图5a和5b,描述了一个处理单元、诸如处理单元200依据本发明处理一个中断的一种示范性方法的流程图。如块502所示,由处理器接收一个中断。这个中断可以是异常(例如,溢出)、外部中断(例如,来自一个I/O设备)或者内部中断。
在接收中断时,保存当前正在运行的处理过程的硬体系结构状态(块504)和软状态(块505)。下面结合图6a(硬)和图6b(软)描述依据本发明用于保存和管理硬和软状态的最佳处理过程的细节。在处理过程的硬状态被保存到存储器中之后,至少执行一级中断处理程序(FLIH)和二级中断处理程序(SLIH)以服务于中断。
FLIH是一个接收处理器的控制作为中断结果的例程。一旦通知一个中断,FLIH通过读取一个中断控制器文件来确定中断的起因。最好是,通过使用一个向量寄存器进行该确定。也就是说,FLIH读取一个表格以使一个中断与一个用于处理中断的初始处理过程的异常向量地址相匹配。
SLIH是一个与中断有关的例程,其处理来自一特定中断源的中断的处理。即,FLIH调用用于处理设备中断的SLIH,而不是设备驱动程序本身。
在图5a中,在圆506内显示的步骤由FLIH执行。如块508所示,中断被唯一地标识,如上所述,最好是使用一个向量寄存器进行。取决于接收了哪个中断,这个中断标识然后使处理器跳转到存储器中的一个特定地址。
如本领域技术人员理解的那样,任一SLIH可以建立与一个输入/输出(I/O)设备或者另一个处理器(外部中断)的通信过程,或者可以在控制被中断的处理器的操作系统或者管理程序的控制下执行一组指令。例如,第一中断可以使处理器跳转到向量地址1,其导致执行SLIH A,如块510和516所示。如图所示,SLIH A完成中断的处理而没有调用任何另外的软件例程。类似地,如块512、520和526所示,到向量地址3的分支转移导致执行示范性的SLIH C,其然后执行一条或多条属于操作系统404或者管理程序402(都如图4所示)的指令以服务于该中断。做为选择,如果中断指示处理器跳转到向量地址2,则执行示范性的SLIH B,如块514和518所示。SLIH B然后调用(块524)用于发布中断的设备的设备驱动程序。
继块516、524或者526中任何一个之后,处理过程通过页连接符“A”继续进行到图5b中的块528。一旦已经服务了中断,则SLIH和FLIH被解决和重建以反映中断的执行和完成,如块528和530所示。尔后,加载和运行下一个处理过程,如块532-536中所述。中断处理过程然后终止。
通常由处理器中的操作系统或者由处理器是其一部分的MP计算机系统中的管理程序选择接下来运行哪个处理过程(块532)和在哪个处理器上运行处理过程(块534)(如果是在MP计算机系统中)。选择的处理过程可以是在当前处理器上被中断的处理过程,或者它可以是新的、或者在当前处理器或者另一个处理器上正在执行的同时而被中断的另一个处理过程。
如块536所示,一旦选择了处理过程和处理器,就使用如图2中所示的下一个硬状态寄存器210,用将被运行的下一个处理过程的状态初始化所选择的处理器。下一个硬状态寄存器210包含下一个“最热的(hottest)”处理过程的硬体系结构状态。通常,这个下一个最热的处理过程是先前被中断、而现在正被再继续的处理过程。很少地,下一个最热的处理过程可以是一个先前没有被中断的新的处理过程。
下一个最热的处理过程是被确定具有最高执行优先级的那个处理过程。优先级可以基于一个处理过程对整个应用程序的关键性、对来自该处理过程的结果的需求、或者用于优先化的任何其它原因。由于运行多个处理过程,所以等待再继续的每个处理过程的优先级常常发生改变。因此,硬体系结构状态是动态分配的更新的优先等级。也就是说,在任一给定时刻,下一个硬状态寄存器210包含从系统存储器118被连续和动态更新的硬体系结构状态以包含需要被运行的下一个“最热的”处理过程。
保存硬体系结构状态
在现有技术中,硬体系结构状态通过处理器内核中的加载/存储单元存储到系统存储器,其阻塞中断处理程序或者另一个处理过程的执行达若干个处理器时钟周期。在本发明中,依据图6a中所示的方法加快如图5a中的块504所述的保存硬状态的步骤,其中该方法将结合在图2中示意性说明的硬件加以描述。
一旦收到一个中断,处理单元200就暂停当前正在执行的处理过程的执行,如块602所示。保存在硬状态寄存器206中的硬体系结构状态然后被直接拷贝到映像寄存器208,如块604所示。(做为选择,映像寄存器208通过一个连续地用当前硬体系结构状态更新映像寄存器208的处理过程而已经具有了该硬体系结构状态的拷贝。)硬体系结构状态的映像拷贝然后在IMC 220的控制下被存储到系统存储器118,如在块606所示,其中该映像拷贝在由处理单元200查看时最好是不可执行的。硬体系结构状态的映像拷贝经由高带宽存储器总线116传送到系统存储器118。由于把当前硬体系结构状态拷贝到映像寄存器208中最多仅仅需要花费几个时钟周期,所以处理单元200很快就能够开始处理中断或者执行下一个处理过程的“实际工作”。
硬体系结构状态的映像拷贝最好是被保存在系统存储器118内的、被保留用于硬体系结构状态的一个专用存储器区域中,如以下关于图10描述的那样。
保存软状态
当由一个传统的处理器执行一个中断处理程序时,被中断的处理过程的软状态通常被污染了。也就是说,中断处理程序软件的执行以中断处理程序所使用的数据(包括指令)填充处理器的高速缓存、地址转换设备和历史记录表格。因此,当被中断的处理过程在中断被处理之后再继续时,该处理过程将经历增加了的指令和数据高速缓存未命中、增加了的转换未命中、和增加了的分支转移错误预测。这种未命中和错误预测严重地降低了处理性能,直到与中断处理有关的信息从处理器中清除、而且存储了处理过程的软状态的高速缓存及其它组件用与该处理过程有关的信息重新填充为止。本发明因此保存和恢复一个处理过程的软状态的至少一部分,以便减少与中断处理有关的性能损失。
下面介绍图6b和在图2和3a中描述的相应硬件,L1 I-高速缓存18和L1 D-高速缓存20中的整个内容被保存到系统存储器118的一个专用区域中,如在块610所示。同样地,BHT 35(块612)、ITLB115和DTLB 113(块614)、ERAT 32(块616)、和L2高速缓存16(块618)中的内容可以被保存到系统存储器118中。
因为L2高速缓存16可能是相当大的(例如,几兆字节的大小),所以存储所有的L2高速缓存16根据它在系统存储器中的足迹和传输数据所要求的时间/带宽,可能是禁止性的。因此,在最佳实施例中,仅仅最近使用的(MRU)集合的一个子集(例如,两个)被保存在每个同余类中。
应当理解,尽管图6b说明了保存一个处理过程的软状态的许多不同组件中每一个,但是被保存的这些组件的数目和这些组件被保存的次序能够在实现中发生变化,并且能够是软件可编程的或者通过硬件模式位而被控制。
因此,本发明在中断处理程序例程(或者下一个处理过程)正被执行的同时输出软状态。这个异步操作(独立于中断处理程序的执行)可能导致软状态(被中断的处理过程的软状态和中断处理程序的软状态)的混合。尽管如此,但是由于软状态的精确保存对体系结构正确性来说是不需要的,而且因为由于在执行中断处理程序中的较短延迟而获得了改善的性能,所以这种数据的混合是可接受的。
再次参见图2,从L1 I-高速缓存18、L1 D-高速缓存20、和L2高速缓存16中经由高速缓存数据通路218传输软状态到IMC 220,而其它软状态、诸如BHT 35经由类似的内部数据通路(未显示)而传输到IMC 220。做为选择或者另外,在最佳实施例中,至少某些软状态组件经由扫描链通路214传输到IMC 220。
经由扫描链通路保存软状态
由于它们的复杂性,处理器及其它IC通常包括便于测试IC的电路。测试电路包括一个如在电气电子工程师学会(IEEE)标准1149.1-1990、“Standard Test Access Port and Boundary ScanArchitecture”中所述的边界扫描链,其中该标准被全部包括在此作为参考。边界扫描链为在集成电路的组件之间测试数据提供了一条通路,其中通常通过在封装的集成电路上的专用引脚访问该边界扫描链。
下面参考图7,其描述了依据本发明的一个集成电路700的方框图。集成电路700最好是一个处理器、诸如图2中的处理单元200。集成电路700包含3个逻辑元件(逻辑)702、704和706,为了说明本发明起见,其包含存储处理过程的软状态的3个存储器单元。例如,逻辑702可以是如图3a所示的L1 D-高速缓存20,逻辑704可以是ERAT32,而逻辑706可以是如上所述的L2高速缓存16的一部分。
在集成电路700的制造商测试期间,通过扫描链边界单元708发送一个信号,其中扫描链边界单元708最好是时钟控制的锁存器。由扫描链边界单元708a输出的信号提供一个测试输入给逻辑702,逻辑702然后输出一个信号到扫描链边界单元708b,扫描链边界单元708b接着通过其它逻辑(704和706)经由其它扫描链边界单元708发送测试信号直到该信号到达扫描链边界708c为止。因此,有一个多米诺效应,其中只有当从扫描链边界单元708c中接收了预期的输出时,逻辑702-706才通过测试。
在历史上,集成电路中的边界扫描链在制造之后是不被使用的。然而,本发明以不阻塞高速缓存/寄存器端口的方式利用所描述的测试通路作为向图2中的IMC 220传输软体系结构状态的通路。也就是说,通过使用扫描链测试通路,能够在IH或者下一个处理过程正在执行的同时从高速缓存/寄存器中流输出(stream out)软体系结构状态而不阻塞下一个处理过程或者中断处理程序对高速缓存/寄存器的访问。
由于扫描链214是串行通路,所以图2中所示的串行-到-并行逻辑216向ICM 220提供并行数据用于正确传输软状态到系统存储器118。在最佳实施例中,串行-到-并行逻辑216还包括用于标识数据来自于哪个寄存器/高速缓存的逻辑。这种标识可以利用为本领域技术人员所知的任何一种方法,包括在串行数据上标识前导标识标记等。在转换软状态数据到并行格式之后,IMC 220然后经由高带宽存储器总线222传输软状态到系统存储器118。
注意到,这些相同的扫描链通路可以被进一步用来传输硬体系结构状态、诸如包含在如图2中所述的映像寄存器208中的硬体系结构状态。
SLIH/FLIH闪速ROM
在现有技术系统中,一级中断处理程序(FLIH)和二级中断处理程序(SLIH)被保存在系统存储器中,并且在被调用时填充高速缓冲存储器分级结构。在常规系统中最初从系统存储器中调用FLIH或者SLIH导致较长的访问延迟(以在高速缓存未命中之后从系统存储器中定位和加载FLIH/SLIH)。用FLIH/SLIH指令和数据填充高速缓冲存储器会用后续处理过程不需要的数据与指令“污染”高速缓存。
为了减少FLIH和SLIH的访问延迟和避免高速缓存污染,处理单元200在一个特定的片内存储器(例如,闪速只读存储器(ROM)802)中存储至少某些FLIH和SLIH,如在图3a和8a中所述那样。FLIH 804和SLIH 806可以在制造时被烧录进闪速ROM 802中,或者可以在制造之后通过为本领域技术人员所公知的闪速编程技术被烧录。当由处理单元200接收到一个中断时(如图2所述),从闪速ROM 802中、而不是从系统存储器118或者高速缓存分级结构212中直接访问FLIH/SLIH。
SLIH预测
通常,当在处理单元200中发生中断时,调用FLIH,其然后调用SLIH,然后SLIH完成中断的处理。哪个SLIH被调用和那个SLIH如何执行是可变化的,而且这种变化取决于包括传递的参数、条件状态等的各种因素。例如,在图8b中,调用FLIH 812导致调用和执行SLIH 814,其导致执行位于B点处的指令。
因为程序动作可以是重复的,所以在多个时间出现中断是屡见不鲜的,其导致执行同样的FLIH和SLIH(例如,FLIH 812和SLIH814)。因此,本发明认识到,通过预测中断处理过程的控制图将重复、并且通过推测性地执行SLIH部分而不首先执行FLIH,可以加快对在一个中断之后发生的中断的中断处理。
为了便于中断处理预测,处理单元200具有一个中断处理程序预测表(Interrupt Handler Prediction Table,IHPT)808,其在图8c中进行了更详细的显示。IHPT 808包含多个FLIH的基地址816(中断向量)的一个列表。与每个FLIH地址816相关联,IHPT 808存储先前已经被相关的FLIH调用的一个或多个SLIH地址818中相应的一组。当用用于一特定FLIH的基地址访问IHPT 808时,预测逻辑820在IHPT 808中选择与指定的FLIH地址816有关的一个SLIH地址818作为将可能被指定的FLIH调用的SLIH的地址。注意到,虽然举例说明的预测的SLIH地址可以如图8b中指示的那样是SLIH 814的基地址,但是该地址也可以是在起点之后(例如在B点处)在SLIH 814内的一条指令的地址。
预测逻辑820使用一种预测哪个SLIH将被指定的FLIH调用的算法。在最佳实施例中,这种算法挑选一个与指定的FLIH有关的、最近已经被使用过的SLIH。在另一个最佳实施例中,这种算法挑选一个与指定的FLIH有关的、在历史上已经被最频繁地调用过的SLIH。在描述的任何一个最佳实施例中,该算法可以在有对预测的SLIH的请求时被运行,或者预测的SLIH可以被连续地更新和保存在IHPT808中。
值得注意的是本发明不同于在本领域中已知的分支转移预测方法。首先,以上所述的方法导致跳转到一个特定的中断处理程序,并且不是以一个分支转移指令地址为基础的。也就是说,在现有技术中使用的分支转移预测方法预测分支转移操作的结果,而本发明基于一个(可能的)非分支转移指令预测跳转到一个特定的中断处理程序。这导致了第二个差别,同现有技术分支转移预测相比,通过如本发明示教的中断处理程序预测能够跳过更大数量的代码,这是因为本发明允许绕过任意数目的指令(诸如在FLIH中),而由于对传统分支转移预测机构所扫描的指令窗口的大小的固有限制,分支转移预测仅仅允许绕过在预测的分支转移之前的有限数目的指令。第三,依据本发明的中断处理程序预测并没有象在现有技术中已知的采用/未采用的分支转移预测那样,被约束为二进制确定。因此,再次参见图8c,预测逻辑820可以从任意数目的历史SLIH地址818中选择预测的SLIH地址822,而分支转移预测方案仅仅从中选择一条顺序执行通路和一条分支转移通路。
下面参见图9,其举例说明了一种依据本发明预测一个中断处理程序的示范性方法的流程图。当由处理器接收到一个中断(块902)时,基于先前的执行历史记录,开始在由中断调用的FLIH(块904)以及由IHPT 808指示的预测的SLIH(块906)上并行执行同时存在的多线程(SMT)。
在最佳实施例中,可以响应于在收到一个中断时监控所调用的FLIH,来执行跳转到预测的SLIH(块906)。例如,再次参考如图8所示的IHPT 808。当接收到中断时,把FLIH与保存在IHPT 808中的FLIH地址816进行比较。如果与IHPT 808中存储的FLIH地址816的比较揭示与中断所调用的FLIH地址相同,则IHPT 808提供预测的SLIH地址822,并且立即开始在预测的SLIH地址822的地址处开始的代码执行。
最好是通过在包含具有预测标记的FLIH地址的SLIH预测寄存器中存储使用IHPT 808调用的预测SLIH地址822,来执行已知的正确SLIH和预测SLIH的后续比较。在本发明的一个最佳实施例中,当执行一条已知的、从FLIH中调用一个SLIH的指令、诸如“跳转”指令时,把由该跳转调用的地址与位于预测寄存器中的预测SLIH地址822的地址进行比较(并且将其标识为已经被预测和当前正由预测标记执行)。把来自预测寄存器的预测SLIH地址和由执行的FLIH选择的SLIH进行比较(块910)。如果预测了正确的SLIH,则预测SLIH完成执行(块914),因此加快了中断处理。然而,如果SLIH被错误预测了,则取消预测SLIH的进一步执行,并且执行正确的SLIH作为替代(块916)。
状态管理
下面参见图10,描述了一个示意图,其图解说明了保存在示范性的MP数据处理系统的系统存储器和各种处理器和存储器分区中的硬和软状态之间的逻辑关系。如图10所示,所有的硬体系结构状态和软状态都被保存在由管理程序402分配的一个专用存储器区域中,其中该管理程序402在任一分区内可由处理器访问。也就是说,处理器A和处理器B可以最初被管理程序402配置为起到在分区X内的一个SMP的作用,而处理器C和处理器D被配置为在分区Y内的一个SMP。在执行时,处理器A-D可以被中断,使处理器A-D中的每一个以以上讨论的方式存储硬状态A-D和软状态A-D中的相应一个到存储器。不同于不允许不同分区中的处理器访问同一个存储空间的现有技术系统,任何一个处理器都能够访问硬或者软状态A-D中的任何一个以再继续相关的被中断处理过程。例如,除了在它的分区内被创建的硬和软状态C和D之外,处理器D还能够访问硬和软状态A和B。因此,任何处理过程状态都能够被任何分区或者处理器访问。因此,管理程序402在分区之间的负载均衡上具有很大的自由度和灵活性。
软状态高速缓存一致性
如上所述,被中断的处理过程的软状态可以包括高速缓冲存储器、诸如图3a中所示的L1 I-高速缓存18、L1 D-高速缓存20和L2高速缓存16中的内容。虽然如以上结合图6b所述的那样这些软状态被保存在系统存储器中,但是很可能包含软状态的至少某些数据将由于由其它处理过程做出的数据修改而变得失效了。本发明因此提供了一个使保存在系统存储器中的软状态保持高速缓存一致的机构。
如图11所示,保存在系统存储器118中的软状态能够被概念化为被保存在“虚拟高速缓存”中。例如,L2高速缓存16的软状态在L2虚拟高速缓存1102中。L2虚拟高速缓存包含一个地址部分,该地址部分包括从L2高速缓存16中存储的数据1110的每条高速缓存线的标记1104和索引1106。类似地,L1虚拟I-高速缓存1112包含一个包括了从L1 I-高速缓存18中存储的指令1120的标记1114和索引1116的地址部分,而L1虚拟D-高速缓存1122包含一个包括了从L1 D-高速缓存20存储的数据1130的每条高速缓存线的标记1124和索引1126的地址部分。这些“虚拟高速缓存”中的每一个由集成的存储器控制器(IMC)220经由互连222进行管理以保持一致性。
IMC 220窥探在系统互连222上的每个操作。每当窥探到一个可能需要使一条高速缓存线无效的操作时,IMC 220窥探相对于虚拟高速缓存目录1132的操作。如果检测到一个窥探命中,则IMC 220通过更新适当的虚拟高速缓存目录,使系统存储器118中的该虚拟高速缓存线无效。尽管可能需要用于窥探无效的确切地址匹配(即,标记和索引的匹配),但是在IMC 220中(特别是就64位和更大的地址来说)实现精确的地址匹配将需要大量电路。因此,在最佳实施例中,窥探无效是不精确的,并且具有与被窥探的地址相匹配的选定最高有效位(MSB)的所有虚拟高速缓存线被无效了。哪个MSB被用来确定在虚拟高速缓存存储器中哪条高速缓存线是无效的,是单独实现的,并且可经由模式位为可软件控制的或者可硬件控制的。因此,可以相对于标记或者仅相对于标记的一部分(诸如10个最高有效位)来窥探地址。这样的虚拟高速缓冲存储器无效方案具有一个公认的、在无效高速缓存线方面的缺点,即还包含有效数据,但是通过提供一种保持虚拟高速缓存线的一致性的非常快速的方法而获得的性能优点比这个缺点更重要。
制造级测试
在制造期间,集成电路要受到在各种操作条件下的成套测试。一种这样的测试是数据测试,其中以使用上述IEEE 1149.1测试扫描链的一个测试数据流测试集成电路的全部内部门电路。在现有技术中,在操作环境下安装集成电路之后,不再次运行这样的测试程序,部分是因为在大多数的操作环境下连接集成电路到一个测试夹具以执行测试是不切实际的,而且这样的测试阻止使用集成电路用于它的预定目的。例如,在处理器100中,硬体系结构状态必须经由加载/存储执行路径被保存到系统存储器中并且从系统存储器中恢复,这阻止了在测试期间完成基本工作并且引入了较多(significant)的延迟。
然而,使用以上所述的硬体系结构状态存储方法,由于保存和恢复硬体系结构状态的时间非常短,最好只有几个时钟周期,所以在处理器被安装在正常操作环境下(例如,计算机系统)的同时,处理器能够例行公事地运行制造级测试程序。
下面参见图12,其描述了一种依据本发明的制造级测试程序的示范性方法的流程图。测试程序最好定期运行。因此,如块1202和1204所述,在经过一段预定时间之后,在处理器中启动一个中断(块1206)。就象使用本发明的任何中断那样,当测试程序开始运行和发布中断时,使用上述保存硬体系结构状态的最佳方法,立即保存当前正在执行的处理过程的硬体系结构状态(通常在2-3个时钟周期内),如块1208所述的那样。同时,最好以图6b中所述的方式保存用于当前正在执行的处理过程的至少一部分软状态(块1210)。
用于制造测试程序的硬体系结构状态被选择性地加载到处理器中,如块1212中所述。在本发明的一个最佳实施例中,从自闪速ROM 802中加载的制造级测试程序810中加载制造级测试程序,如在图8a中所述。制造级测试程序810可以在首次制造处理单元200时被烧录进闪速ROM 802,或者制造级测试程序810可以在后来被烧录。如果多个制造级测试程序被保存在闪速ROM 802中,则选择制造级测试程序中的一个用于执行。在本发明的一个最佳实施例中,每当执行一个定时器中断时,运行制造级测试程序,如以上块1202和1204描述的那样。
一旦硬体系结构状态被加载到处理器中,制造级测试程序就开始运行(块1214),并且最好使用上述IEEE 1149.1测验扫描链。同时,软体系结构状态流入到处理器中(块1216),并且最好以上述软状态更新的方式进行(图6b)。当完成制造级测试程序的执行时,完成该中断,并且通过加载用于下一个处理过程的硬体系结构状态和软状态来执行该处理过程(块1218)。
由于硬体系结构状态的加载仅仅需要几个时钟周期,所以能够在执行测试程序本身所需要的时间限制条件内,如设计者所希望的那样经常运行制造级测试程序。制造测试程序的执行能够由用户、操作系统、或者管理程序启动。
因此,本发明提供了一种尤其解决了与中断有关的延迟问题的方法和系统。例如,在现有技术中,如果中断处理程序是一个很少被调用的处理过程,则作为较低级的高速缓存并且即使是系统存储器,通常需要一个较长的延迟来搜索适当的中断处理程序。当正在执行中断处理程序时,它用处理中断所需要的指令/数据填充处理器的高速缓存,因此当被中断的处理过程被恢复执行时,会“污染”高速缓存。本发明利用在此描述的本发明的处理过程解决了这些问题。
尽管已经就计算机处理器和软件描述了本发明中的各个方面,但是应当理解,本发明中的至少某些方面可以做为选择被实现为一个供数据存储系统或者计算机系统使用的程序产品。定义了本发明中的功能的程序能够经由各种载有信号的介质传送到数据存储系统或者计算机系统,其中各种载有信号的介质包括而不限于:不可写的存储介质(例如CD-ROM)、可写的存储介质(例如软盘、硬盘驱动器、读/写CD-ROM、光介质)和传播介质、诸如包括以太网的计算机和电话网络。因此,应当理解,这种载有信号的介质在承载或者编码本发明中的直接方法功能的计算机可读指令时表示了本发明的替换实施例。此外,应当理解,本发明可以通过一个具有以如在此描述的硬件,软件、或者软件和硬件的组合或者它们的等效形式的装置的系统来实现。
虽然已经通过参考最佳实施例详细地显示和描述了本发明,但是本领域的技术人员将会理解:在这里可以进行各种形式和细节上的变化而不背离本发明的精神和范围。
Claims (21)
1.一种管理处理器中的状态信息的方法,该方法包含:
在处理器内存储一个对于在处理器中执行一个处理过程为关键性的体系结构状态;
在处理器内存储该体系结构状态的一个映像拷贝;
响应于在处理器接收了一个处理过程中断,将该体系结构状态的映像拷贝存至一个存储器中;以及
与完成将映像拷贝存至存储器中无关地修改体系结构状态。
2.如权利要求1所述的方法,其特征在于:修改步骤包含在完成在存储器中存储映像拷贝之前修改体系结构状态。
3.如权利要求1所述的方法,其特征在于:响应于该处理过程中断,更新体系结构状态的映像拷贝。
4.如权利要求1所述的方法,进一步包含:响应于体系结构状态的每次修改,连续地更新该映像拷贝。
5.如权利要求1所述的方法,其特征在于:处理器具有一个相关的易失性存储器的存储器分级体系,该分级结构包括一个具有最低延迟的最高级和一个具有最高延迟的最低级,存储步骤在易失性存储器的最低级中存储体系结构状态的映像拷贝。
6.如权利要求1所述的方法,进一步包含:执行一个中断处理程序以服务于该处理过程中断。
7.如权利要求1所述的方法,其中处理器包括用于执行存储器访问指令的执行电路,该方法进一步包含:与执行电路执行存储器访问指令相独立地,在存储器中存储映像拷贝。
8.如权利要求1所述的方法,进一步包含:
一旦完成该处理过程中断,恢复所存储的软状态到一个处理器中以继续执行被中断的处理过程。
9.一种处理器,包含:至少一个执行单元;
一个指令序列单元,连接到至少一个执行单元;以及
第一寄存器组,连接到至少一个执行单元,其中第一寄存器组包含对于在处理器中执行一个处理过程为关键性的体系结构状态的至少一部分;
一个相应的映像寄存器组,连接到第一寄存器组,该映像寄存器组包含第一寄存器组中所包含的至少一部分体系结构状态的映像拷贝;以及
一个存储器,连接到映像寄存器组,其中:该处理器在接收到一个处理过程中断时,把体系结构状态的映像拷贝存储到存储器中,并且体系结构状态的映像拷贝被与为下一个在处理器上运行的处理过程而修改体系结构状态无关地存储到存储器中。
10.如权利要求9所述的处理器,进一步包含:
一个相关的易失性存储器分级结构,包括一个具有最低延迟的最高级和一个具有最高延迟的最低级;以及
一个存储器控制器,连接到易失性存储器分级结构中的最低级,其在易失性存储器的最低级中存储体系结构状态。
11.如权利要求9所述的处理器,进一步包含:用于响应该处理过程中断而更新体系结构状态的映像拷贝的装置。
12.如权利要求9所述的处理器,进一步包含:用于响应于体系结构状态的每次修改而连续地更新体系结构状态的映像拷贝的装置。
13.一种数据处理系统,包含:
多个包括一个如权利要求9所述的处理器的处理器;
一个连接到多个处理器的易失性存储器分级结构;以及
一个连接多个处理器的互连结构。
14.一种处理器,包含:
用于在处理器内存储对于在处理器中执行一个处理过程为关键性的体系结构状态的装置;
用于在处理器内存储该体系结构状态的一个映像拷贝的装置;
用于响应在处理器接收一个处理过程中断,而将体系结构状态的映像拷贝存储在一个存储器中的装置;以及
用于与完成在存储器中存储映像拷贝无关地,在处理器内修改体系结构状态的装置。
15.如权利要求14所述的处理器,其特征在于:用于修改的装置包含用于在完成在存储器中存储映像拷贝之前修改体系结构状态的装置。
16.如权利要求14所述的处理器,进一步包含:用于响应该处理过程中断而更新体系结构状态的映像拷贝的装置。
17.如权利要求14所述的处理器,进一步包含:用于响应于体系结构状态的每次修改而连续地更新该映像拷贝的装置。
18.如权利要求14所述的处理器,进一步包含:
一个相关的易失性存储器分级结构,包括一个具有最低延迟的最高级和一个具有最高延迟的最低级;以及
一个存储器控制器,连接到易失性存储器分级结构中的最低级,其在易失性存储器的最低级中存储体系结构状态。
19.如权利要求14所述的处理器,进一步包含:用于执行一个中断处理程序以服务于该处理过程中断的装置。
20.如权利要求14所述的处理器,进一步包含:用于执行存储器访问指令的执行电路,借此处理器能够与执行电路执行存储器访问指令相独立地,在存储器中存储映像拷贝。
21.如权利要求14所述的处理器,进一步包含:
一个相关的易失性存储器分级结构,包括一个具有最低延迟的最高级和一个具有最高延迟的最低级;以及
一个存储器控制器,连接到易失性存储器分级结构中的最低级,其在易失性存储器的最低级中存储体系结构状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/313,321 US7117319B2 (en) | 2002-12-05 | 2002-12-05 | Managing processor architected state upon an interrupt |
US10/313,321 | 2002-12-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1504883A CN1504883A (zh) | 2004-06-16 |
CN1291316C true CN1291316C (zh) | 2006-12-20 |
Family
ID=32468219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101180003A Expired - Fee Related CN1291316C (zh) | 2002-12-05 | 2003-11-26 | 用于管理处理器中的状态信息的方法及其处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7117319B2 (zh) |
JP (1) | JP3874287B2 (zh) |
CN (1) | CN1291316C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493478B2 (en) * | 2002-12-05 | 2009-02-17 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
US7363536B1 (en) * | 2004-07-30 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Delivery of an interruption to an operating system |
US7328331B2 (en) * | 2005-01-25 | 2008-02-05 | Hewlett-Packard Development Company, L.P. | Method and system of aligning execution point of duplicate copies of a user program by copying memory stores |
US20060200616A1 (en) * | 2005-03-02 | 2006-09-07 | Richard Maliszewski | Mechanism for managing resources shared among virtual machines |
US8812781B2 (en) * | 2005-04-19 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | External state cache for computer processor |
US7930589B2 (en) * | 2005-06-17 | 2011-04-19 | Analog Devices, Inc. | Interrupt-responsive non-volatile memory system and method |
US7424563B2 (en) * | 2006-02-24 | 2008-09-09 | Qualcomm Incorporated | Two-level interrupt service routine |
JP4871948B2 (ja) * | 2008-12-02 | 2012-02-08 | 株式会社日立製作所 | 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法 |
JP4691153B2 (ja) * | 2008-12-10 | 2011-06-01 | 富士通株式会社 | マルチコアプロセッサ,制御方法および情報処理装置 |
US8825926B2 (en) * | 2009-04-13 | 2014-09-02 | Microchip Technology Incorporated | Processor with assignable general purpose register set |
US8578138B2 (en) | 2009-08-31 | 2013-11-05 | Intel Corporation | Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode |
TW201237630A (en) * | 2011-03-01 | 2012-09-16 | Wistron Corp | Method and computer system for processing data in a memory |
CN102929819B (zh) * | 2012-10-19 | 2016-02-10 | 北京忆恒创源科技有限公司 | 用于处理计算机系统中的存储设备的中断请求的方法 |
US10990159B2 (en) * | 2017-04-25 | 2021-04-27 | Apple Inc. | Architected state retention for a frequent operating state switching processor |
US11789714B2 (en) | 2020-02-03 | 2023-10-17 | Sony Interactive Entertainment Inc. | Data processing system, data transfer device, and context switching method |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4484274A (en) * | 1982-09-07 | 1984-11-20 | At&T Bell Laboratories | Computer system with improved process switch routine |
JPS6027031A (ja) | 1983-07-25 | 1985-02-12 | Nec Corp | 情報処理装置 |
JPS60164840A (ja) | 1984-02-08 | 1985-08-27 | Nec Corp | レジスタセ−ブ,リカバ−方式 |
JPS61241838A (ja) | 1985-04-19 | 1986-10-28 | Nec Corp | 記憶装置 |
US5057997A (en) * | 1989-02-13 | 1991-10-15 | International Business Machines Corp. | Interruption systems for externally changing a context of program execution of a programmed processor |
JPH03201032A (ja) | 1989-12-28 | 1991-09-02 | Toshiba Corp | 演算処理装置 |
JPH04288625A (ja) | 1991-02-18 | 1992-10-13 | Mitsubishi Electric Corp | マイクロコンピュータ |
US6026471A (en) | 1996-11-19 | 2000-02-15 | International Business Machines Corporation | Anticipating cache memory loader and method |
US5987495A (en) * | 1997-11-07 | 1999-11-16 | International Business Machines Corporation | Method and apparatus for fully restoring a program context following an interrupt |
US6189112B1 (en) | 1998-04-30 | 2001-02-13 | International Business Machines Corporation | Transparent processor sparing |
US6247109B1 (en) | 1998-06-10 | 2001-06-12 | Compaq Computer Corp. | Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space |
US6308290B1 (en) | 1999-05-20 | 2001-10-23 | International Business Machines Corporation | Look ahead scan chain diagnostic method |
US6981083B2 (en) * | 2002-12-05 | 2005-12-27 | International Business Machines Corporation | Processor virtualization mechanism via an enhanced restoration of hard architected states |
-
2002
- 2002-12-05 US US10/313,321 patent/US7117319B2/en not_active Expired - Fee Related
-
2003
- 2003-10-24 JP JP2003365322A patent/JP3874287B2/ja not_active Expired - Fee Related
- 2003-11-26 CN CNB2003101180003A patent/CN1291316C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040111572A1 (en) | 2004-06-10 |
JP3874287B2 (ja) | 2007-01-31 |
CN1504883A (zh) | 2004-06-16 |
JP2004185602A (ja) | 2004-07-02 |
US7117319B2 (en) | 2006-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1726469A (zh) | 通过硬体系结构状态的增强恢复的处理器虚拟机制 | |
CN1726468A (zh) | 状态信息的跨分区共享 | |
US7849298B2 (en) | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states | |
CN1291316C (zh) | 用于管理处理器中的状态信息的方法及其处理器 | |
CN1295611C (zh) | 中断处理程序预测方法和系统 | |
CN1256677C (zh) | 用于动态管理保存的处理器状态的方法和系统 | |
US7039832B2 (en) | Robust system reliability via systolic manufacturing level chip test operating real time on microprocessors/systems |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061220 Termination date: 20101126 |