CN1726469A - 通过硬体系结构状态的增强恢复的处理器虚拟机制 - Google Patents

通过硬体系结构状态的增强恢复的处理器虚拟机制 Download PDF

Info

Publication number
CN1726469A
CN1726469A CNA2003801064655A CN200380106465A CN1726469A CN 1726469 A CN1726469 A CN 1726469A CN A2003801064655 A CNA2003801064655 A CN A2003801064655A CN 200380106465 A CN200380106465 A CN 200380106465A CN 1726469 A CN1726469 A CN 1726469A
Authority
CN
China
Prior art keywords
processor
architected state
hard architected
instruction
hard
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
Application number
CNA2003801064655A
Other languages
English (en)
Inventor
拉维·库马尔·阿里米里
罗伯特·阿兰·卡格诺尼
盖伊·林恩·古斯里耶
威廉·约汉·斯塔克
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1726469A publication Critical patent/CN1726469A/zh
Pending 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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/22Microcontrol or microprogram arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Abstract

本发明公开一种从等候执行的空闲进程池中预装载下一进程的硬体系结构状态的方法和系统。当中断处理器所执行的进程时,将已经预先存储在处理器中的下一进程的硬体系结构状态装载到处理器中的体系结构存储位置。根据分配给等候进程的优先级确定将要执行的下一进程、及其相应的已经预先存储在处理器中的硬体系结构状态。

Description

通过硬体系结构状态的增强恢复的处理器虚拟机制
本发明涉及下述共同待决美国专利申请的主题:系列号09/__(代理机构案卷号AUS920020161US1);系列号09/__(代理机构案卷号AUS920020162US1);系列号09/__(代理机构案卷号AUS920020163US1);系列号09/__(代理机构案卷号AUS920020165US1);系列号09/__代理机构案卷号AUS920020166US1);以及系列号09/__(代理机构案卷号AUS920020167US1)。在此引用上述申请的全部内容作为参考。
技术领域
本发明一般涉及数据处理领域,特别涉及一种改进的用于处理中断的数据处理系统和方法。
背景技术
当执行一组计算机指令时,处理器频繁地被中断。该中断可由中断或异常(exception)引起。
中断是不与当发生中断时正在执行的指令相关联的异步中断事件。也就是,中断经常是由处理器外部的某事件例如来自输入/输出(I/O)设备的输入、来自另一个处理器的操作调用等引起的。其它中断可以是例如由于控制任务切换的定时器的期满而在内部引起的。
异常是直接由于当发生异常时正在执行的指令的执行而发生的同步事件。也就是,异常是来自处理器内的事件,例如算术溢出、定时维护检查、内部性能监测器、板上工作负载管理器等。典型地,异常比中断频繁得多。
术语“中断”和“异常”经常是通用的。就本文而言,术语“中断”将用来描述“中断”和“异常”中断。
随着计算机软件和硬件变得更加复杂,中断的次数和频率大大增加。这些中断是必要的,因为它们支持多个进程的执行、多个外设的处理以及各个组件的性能监测。虽然这些特性是有益的,但是由于中断而消耗计算能力增加得如此之多以致其超过了处理器的处理速度改进。这样,在很多情况下,尽管处理器时钟频率提高,但是实际上系统性能却在降低。
图1示出了传统的处理器核心100。在处理器核心100内,第1级指令高速缓存(L1指令高速缓存)102向指令定序逻辑电路104提供指令,指令定序逻辑电路104向适当的执行单元108发出这些指令以便执行。可包括浮点执行单元、定点执行单元、转移(branch)执行单元等的执行单元108包括装载/存储单元(LSU)108a。LSU 108a执行装载和存储指令,该指令分别将数据从第1级数据高速缓存(L1数据高速缓存)112装载到体系结构(architected)寄存器110中,并且将数据从体系结构寄存器110存储到L1数据高速缓存112。对缺失(miss)L1高速缓存102和112的数据和指令的请求可以通过经由存储器总线116存取系统存储器118来解决。
如上所述,处理器核心100受到来自由外部中断线114表示的多个源的中断。当(例如,通过中断线114之一)由处理器核心100接收到中断信号时,挂起当前进程的执行,并且由被称作中断处理程序的中断特定软件来处理中断。除了其它活动之外,中断处理程序还通过由LSU108a执行存储和装载指令来保存和恢复在中断时执行的进程的体系结构状态。使用LSU 108a向和从系统存储器118传输体系结构状态阻止由中断处理程序(或者在超标量计算机的情况下另一个进程)执行其它存储器存取指令,直到完成了状态传输为止。因此,通过处理器的执行单元保存并随后恢复进程的体系结构状态导致了执行被中断进程以及中断处理程序的延迟。该延迟导致了处理器的总体性能的降低。这样,本发明认识到需要一种方法和系统,其最小化由于特别是响应于中断而保存和恢复体系结构状态所招致的处理延迟。
发明内容
本发明涉及用于改善数据处理系统的处理器内的中断处理的方法和系统。
当在处理器处接收到中断信号时,将当前执行进程的硬体系结构状态装载到一个或多个专用影象寄存器中。硬体系结构状态包括执行被中断进程所必需的处理器内的信息。进一步保存该硬体系结构状态的有益方法包括使用高带宽总线将硬体系结构状态从影象寄存器直接传输到系统存储器,而不使用(由此占用)处理器的正常装载/存储路径和执行单元。在将硬体系结构状态装载到影象寄存器中之后,中断处理程序在收到中断的处理器上或多处理器数据处理系统的另一处理器上立即开始运行。调度执行的下一进程的硬体系结构存储在处理器的一组寄存器中,以便将下一调度的进程的硬体系结构加载到处理器的当前进程硬体系结构寄存器中,从而能够快速开始执行下一进程。
进程的软状态包括高速缓存内容也至少部分地被保存到系统存储器。为了加速软状态的保存并且为了避免与正在执行的中断处理程序的数据冲突,优选地使用扫描链路径从处理器传输软状态,其中扫描链路径在现有技术中通常仅在制造测试期间被使用而在正常操作期间不被使用。
当完成中断处理程序时,为被中断进程恢复硬体系结构状态和软状态,当装载硬体系结构状态时,被中断进程能够立即运行。
为了向可能运行不同操作系统的其它处理器和其它分区提供存取,可以将硬和软状态存储在可被任何处理器和/或分区存取的系统存储器的保留区域中。
在下面详细描述中,本发明的上述以及其它目的、特性和优点将会变得清楚。
附图说明
被认为是本发明特征的新颖特性在所附权利要求中加以阐述。然而,通过参考下面结合附图阅读的对说明性实施例的详细描述,将会更好地理解本发明本身以及优选使用模式及其另外的目的和优点,其中:
图1示出了传统计算机系统的方框图,其中该计算机系统采用现有技术的用于使用装载/存储单元保存处理器的体系结构状态的方法;
图2示出了根据本发明的数据处理系统的示例性实施例的方框图;
图3a和3b示出了图2所示的处理单元的附加详细信息;
图4示出了根据本发明的示例性软件配置的分层图;
图5a和5b一起形成根据本发明的示例性中断处理过程的流程图;
图6a和6b是示出根据本发明的用于保存硬体系结构状态和软状态的图5a所示的步骤的进一步详细信息的流程图;
图7示出了由本发明用来将至少进程的软状态传送到存储器的扫描链路径;
图8a-8c示出了根据本发明用来存储至少第一级中断处理程序(FLIH)、第二级中断处理程序(SLIH)和制造级测试指令的图2所示的快闪ROM的附加详细信息;
图9是描述根据本发明的在接收到中断时跳转到预测SLIH的流程图;
图10示出了所存储的硬体系结构状态、所存储的软状态、存储器分区和处理器之间的逻辑和通信关系;
图11示出了用于在存储器中存储软状态的示例性数据结构;以及
图12是用于在计算机系统的正常操作期间通过执行制造级测试程序来测试处理器的示例性方法的流程图。
具体实施方式
现在参照图2,其示出了多处理器(MP)数据处理系统201的示例性实施例的高级方框图。虽然MP数据处理系统201被示出为对称多处理器(SMP),但是本发明可以用于计算机体系结构领域内的技术人员所公知的任何MP数据处理系统,其包括但不限于非均匀存储器存取(NUMA)MP或仅高速缓存存储器体系结构(COMA)MP。
根据本发明,MP数据处理系统201包括由互连装置222耦接以便通信的多个处理单元200,其被示出为处理单元200a到200n。在优选实施例中,应当理解,MP数据处理系统201中的每个处理单元200包括处理单元200a和处理单元200n在体系结构上是类似或相同的。处理单元200a是单个集成电路超标量处理器,如下面进一步讨论的那样,其包括全都由集成电路形成的各个执行单元、寄存器、缓冲器、存储器和其它功能单元。在MP数据处理系统201中,每个处理单元200由高带宽专用总线116耦接到各自的系统存储器118,其被示出为用于处理单元200a的系统存储器118a和用于处理单元200n的系统存储器118n。
处理单元200a包括指令定序单元(ISU)202,其包括用于取出、调度和发出指令以由执行单元(EU)204执行的指令的逻辑电路。ISU 202和EU 204的详细信息在图3中以示例的形式给出。
与EU 204相关联的是“硬”状态寄存器206,其包含执行当前执行进程所必需的处理单元200a内的信息,耦接到硬状态寄存器206的是下一硬状态寄存器210,其包含例如在当前进程终止或者被中断时将被执行的下一进程的硬状态。还与硬状态寄存器206相关联的是影象寄存器208,其包含(或者将包含)当前执行进程终止或者被中断时硬状态寄存器206的内容的副本。
每个处理单元200还包括高速缓存分级结构212,其可包括多级高速缓冲存储器。从系统存储器118装载的指令和数据的芯片上存储可以由例如高速缓存分级结构212完成,其中高速缓存分级结构212可包括第一级指令高速缓存(L1指令高速缓存)18、第一级数据高速缓存(L1数据高速缓存)20和统一第二级高速缓存(L2高速缓存)16,如图3所示。高速缓存分级结构212通过高速缓存数据路径218并且根据至少一个实施例通过扫描链路径214耦接到系统存储器118的芯片上集成存储器控制器(IMC)220。由于扫描链路径214是串行路径,因此串行到并行接口216耦接在扫描链路径214与IMC 220之间。下面描述处理单元200a的所示组件的功能。
现在参照图3a,其示出了处理单元200的附加详细信息。处理单元200包括芯片上多级高速缓存分级结构,其分别包括统一第二级(L2)高速缓存16和分叉第一级(L1)指令(I)和数据(D)高速缓存18和20。对于本领域的技术人员是公知的,高速缓存16、18和20提供对与系统存储器118中的存储器位置对应的高速缓存线的低延迟存取。
响应于驻留在取指令地址寄存器(IFAR)30中的有效地址(EA)而从L1指令高速缓存18取指令以便处理。在每个循环期间,可以从三个源:转移预测单元(BPU)36、全局完成表(GCT)38和转移执行单元(BEU)92之一将新的取指令地址装载到IFAR 30中,其中转移预测单元(BPU)36提供通过预测条件转移指令而产生的推测性目标路径和顺序地址,全局完成表(GCT)38提供刷新(flush)和中断地址,并且转移执行单元(BEU)92提供通过解决(resolve)预测条件转移指令而产生的非推测性地址。与BPU 36相关联的是转移历史表(BHT)35,其中记录了条件转移指令的解决以帮助预测将来的转移指令。
有效地址(EA)例如IFAR 30内的取指令地址是由处理器生成的数据或指令的地址。EA指定段寄存器和段内的偏移信息。为了存取存储器中的数据(包括指令),通过一级或多级翻译将EA转换成与存储了数据或指令的物理位置相关联的真实地址(RA)。
在处理单元200内,由存储器管理单元(MMU)和关联的地址翻译设施执行有效到真实地址翻译。优选地,为指令存取和数据存取提供单独的MMU。在图3a中,为简明起见示出了单个MMU 112,其仅示出与ISU 202的连接。然而,本领域的技术人员应当理解,MMU 112优选地还包括与装载/存储单元(LSU)96和98和管理存储器存取所需的其它组件的连接(未示出)。MMU 112包括数据翻译辅助(lookaside)缓冲器(DTLB)113和指令翻译辅助(lookaside)缓冲器(ITLB)115。每个TLB包含最近引用的页表条目,其被存取以便针对数据(DTLB 113)或指令(ITLB 115)将EA翻译成RA。来自ITLB 115的最近引用的EA到RA翻译被高速缓存在EOP有效到真实地址表(ERAT)32中。
如果在由ERAT 32翻译包含在IFAR 30中的EA和在指令高速缓存目录34中查询真实地址(RA)之后,命中/缺失逻辑电路22确定与IFAR30中的EA对应的指令的高速缓存线不驻留在L1指令高速缓存18中时,则命中/缺失逻辑电路22通过指令高速缓存请求总线24将RA作为请求地址提供给L2高速缓存16。该请求地址也可基于最近的存取模式由L2高速缓存16内的预取逻辑电路生成。响应于请求地址,L2高速缓存16有可能在经过可选的预解码逻辑电路44之后输出指令高速缓存线,这些指令高速缓存线通过指令高速缓存重载总线26被装载到预取缓冲器(PB)28和L1指令高速缓存18中。一旦由IFAR 30中的EA指定的高速缓存线驻留在L1高速缓存18中,L1指令高速缓存18就将高速缓存线输出到转移预测单元(BPU)36和取指令缓冲器(IFB)40。BPU36扫描转移指令的指令高速缓存线,并且若有的话,预测条件转移指令的结果。在转移预测之后,BPU 36如上所述向IFAR 30提供推测性取指令地址,并且将该预测传到转移指令队列64,以便当条件转移指令随后由转移执行单元92解决时可以确定预测的准确性。
IFB 40临时缓冲从L1指令高速缓存18接收的指令高速缓存线,直到该指令高速缓存线可以由指令翻译单元(ITU)42翻译为止。在处理单元200的所示实施例中,ITU 42将指令从用户指令集体系结构(USIA)指令翻译成可由处理单元200的执行单元直接执行的可能不同数目的内部ISA(IISA)指令。该翻译可以例如参考存储在只读存储器(ROM)模板中的微代码来执行。在至少一些实施例中,UISA到IISA翻译产生与UISA指令不同数目的IISA指令和/或与对应的UISA指令不同长度的IISA指令。然后,由全局完成表38将所得到的IISA指令分配给允许彼此无序地调度和执行其成员的指令组。全局完成表38通过至少一个关联的EA跟踪其执行尚未完成的每个指令组,其中该至少一个关联的EA优选地是指令组中的最旧指令的EA。
在UISA到HSA指令翻译之后,基于指令类型可能无序地将指令调度到锁存器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重命名寄存器,其中每个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执行浮点装载指令而产生的浮点值。
在执行单元完成了指令执行之后,该执行通知GCT 38,其以程序次序调度指令的完成。为了完成由CRU 90、FXU 94和100或者FPU102和104之一执行的指令,GCT 38通知执行单元,若有的话,其将结果数据从所分配的重命名寄存器回写到适当寄存器堆内的一个或多个体系结构寄存器。然后,从发布队列中移除该指令,并且一旦完成了其指令组内的所有指令,则从GCT 38移除它。然而,以不同的方式完成其它类型的指令。
当BEU 92解决条件转移指令并且确定应当采取的执行路径的路径地址时,将该路径地址与由BPU 36预测的推测性路径地址进行比较。如果这些路径地址匹配,则不需要进一步的处理。然而,如果算出的路径地址不匹配所预测的路径地址,则BEU 92将正确的路径地址提供给IFAR 30。在任何情况下,然后从BIQ 64中移除该转移指令,并且当完成了相同指令组内的所有其它指令时从GCT 38移除该转移指令。
在执行装载指令之后,通过数据ERAT(未示出)将通过执行装载指令而计算的有效地址翻译成真实地址,然后将其作为请求地址提供给L1数据高速缓存20。此时,从FXIQ 66或68中移除装载指令,并且将其置于装载再命令队列(load reorder queue,LRQ)114中,直到执行了所指示的装载为止。如果该请求地址在L1数据高速缓存20中缺失,则将该请求地址置于装载缺失队列(LMQ)116中,由此从L2高速缓存16检索所请求的数据,并且在失败的情况下,从另一个处理单元200或者从系统存储器118(图2所示)检索所请求的数据。LRQ 114窥探(snoop)独占性存取请求(例如,带修改意图的读取),在互连装置222结构(图2所示)上刷新或杀死飞行中的装载,并且如果发生命中,则取消并重新发布装载指令。利用存储队列(STQ)110类似地完成存储指令,其中在执行存储指令之后将用于存储的有效地址装载到存储队列(STQ)110中。从STQ 110,可以将数据存储到L1数据高速缓存20和L2高速缓存16的任一个或两者中。
处理器状态
处理器的状态包括在特定时间所存储的数据、指令和硬件状态,并且这里被定义为“硬”或“软”。“硬”状态被定义为对于处理器从进程中的当前点执行进程而在体系结构上所需的处理器内的信息。相反,“软”状态被定义为这样的处理器内的信息,其将改善进程的执行效率,但是对于实现在体系结构上正确的结果不是必需的。在图3a的处理单元200中,硬状态包括用户级寄存器如CRR 80、LCR 82、GPR 84和86、FPR 88以及管理员级寄存器51的内容。处理单元200的软状态包括“性能关键”信息如L1指令高速缓存18、L1数据高速缓存20的内容、地址翻译信息如DTLB 113和ITLB 115、以及较不关键的信息,如BHT 35、以及L2高速缓存16的全部或部分内容。
寄存器
在上面描述中,处理单元200的寄存器堆如GPR 86、FPR 88、CRR 80和LCR 82通常被定义为“用户级寄存器”,这是因为这些寄存器可被具有用户或管理员权限的所有软件存取。管理员级寄存器51包括典型地由操作系统使用的那些寄存器,其典型地在操作系统内核中用于诸如存储器管理、配置和异常处理的操作。这样,对管理员级寄存器51的存取通常仅受限于具有足够存取权限的一些进程(即管理员级进程)。
如图3b所示,管理员级寄存器51通常包括下面更详细描述的配置寄存器302、存储器管理寄存器308、异常处理寄存器314以及混杂(miscellaneous)寄存器332。
配置寄存器302包括机器状态寄存器(MSR)306和处理器版本寄存器(PVR)304。MSR 306定义处理器的状态。也就是,MSR 306标识在处理指令中断(异常)之后应当在何处恢复指令执行。PVR 304标识处理单元200的特定类型(版本)。
存储器管理寄存器308包括块地址翻译(BAT)寄存器310。BAT寄存器310是软件控制的阵列,其存储芯片上可用的块地址翻译。优选地,存在单独的指令和数据BAT寄存器,其被示出为IBAT 309和DBAT 311。存储器管理寄存器30还包括段寄存器(SR)312,其用来当BAT翻译失败时将EA翻译成虚拟地址(VA)。
异常处理寄存器314包括数据地址寄存器(DAR)316、专用寄存器(SPR)318和机器状态保存/恢复(SSR)寄存器320。如果存取引起异常如对齐异常,则DAR 316包含由存储器存取指令生成的有效地址。SPR用于由操作系统定义的特殊目的,例如标识被保留以便由第一级异常处理程序(FLIH)使用的存储器区域。优选地,该存储器区域对于该系统内的每个处理器是唯一的。SPR 318可以由FLIH用作擦除(scratch)寄存器,以便保存可从SPR 318装载的通用寄存器(GPR)的内容,并且用作基本寄存器,以便将其它GPR保存到存储器。SSR寄存器320保存关于异常(中断)的机器状态,并且当执行从中断指令的返回时恢复机器状态。
混杂寄存器322包括:时基(TB)寄存器324,用于维护时间;递减寄存器(DEC)326,用于递减计数;以及数据地址断点寄存器(DABR)328,用来如果遇到指定的数据地址则导致产生断点。此外,混杂寄存器322包括基于时间的中断寄存器(TBIR)330,用来在预定的时间段之后发起中断。这样的基于时间的中断可以用于周期性维护例程以便在处理单元200上运行。
软件组织
在MP数据处理系统如图2的MP数据处理系统201中,多个应用程序可以在可能不同的操作系统下同时运行。图4示出了根据本发明的MP数据处理系统201的示例性软件配置的分层图。
正如所示,该软件配置包括作为管理软件的管理程序(hypervisor)402,其将MP数据处理系统201的资源分配到多个分区中,然后协调该多个分区内多个(可能不同)操作系统的执行。例如,管理程序402可以将处理单元200a、系统存储器118a的第一区域和其它资源分配给其中运行操作系统404a的第一分区。类似地,管理程序402可以将处理单元200n、系统存储器118n的第二区域和其它资源分配给其中运行操作系统404n的第二分区。
在操作系统404的控制之下运行的可以是多个应用程序406,例如字处理器、电子表格程序、浏览器等。例如,应用程序406a到406x全都在操作系统404a的控制下运行。
每个操作系统404和应用程序406典型地包括多个进程。例如,应用程序406被示出为具有多个进程408a到408z。假定处理单元200具有用于进程的必需指令、数据和状态信息,则每个处理单元200能够独立地执行该进程。
中断处理
现在参照图5a和5b,其示出了根据本发明的诸如处理单元200的处理单元处理中断的示例性方法的流程图。如块502所示,由处理器接收中断。该中断可以是异常(例如,溢出)、外部中断(例如,来自I/O设备)或者内部中断。
当接收到中断时,保存当前运行进程的硬体系结构状态(块504)和软状态(块505)。根据本发明的用于保存和管理硬和软状态的优选过程的详细信息在下面参照图6a(硬)和图6b(软)进行描述。在将进程的硬状态保存到存储器之后,执行至少第一级中断处理程序(FLIH)和第二级中断处理程序(SLIH)以便服务该中断。
FLIH是由于中断而接收处理器控制的例程。当通知中断时,FLIH通过读取中断控制器堆(file)来确定中断的原因。优选地,该确定通过使用向量寄存器来进行。也就是,FLIH读取一个表来匹配中断与处理中断初始处理的异常向量地址。
SLIH是处理来自特定中断源的中断处理的中断相关例程。也就是,FLIH调用SLIH,SLIH处理设备中断,但是它不是设备驱动程序本身。
在图5a中,圆圈506内所示的步骤由FLIH执行。如块508所示,如上所述,优选地使用向量寄存器唯一地识别该中断。然后,根据接收到哪个中断,该中断识别使处理器跳至存储器中的特定地址。
对于本领域的技术人员而言很好理解的是,任何SLIH可以与输入/输出(I/O)设备或者与另一个处理器(外部中断)建立通信过程,或者可以在控制被中断处理器的操作系统或管理程序的控制下执行一组指令。例如,第一中断可以使处理器跳转到向量地址1,这导致SLIH A的执行,如块510和516所示。如图所示,SLIH A完成中断处理而不调用任何附加软件例程。类似地,如块512、520和526所示,到向量地址3的转移导致示例性SLIH C的执行,然后示例性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所示。然后,该中断处理过程终止。对于接下来运行哪个进程(块532)和在哪个处理器上运行(块534)(如果在MP计算机系统中),典型地由该处理器的操作系统或者由该处理器是其一部分的MP计算机系统的管理程序进行选择。所选进程可以是在当前处理器上被中断的进程,或者它可以是新的或者在当前处理器或另一处理器上执行时被中断的另一进程。
如块536所示,一旦选择了进程和处理器,则使用图2所示的下一硬状态寄存器210以要运行的下一进程的状态初始化所选处理器。下一硬状态寄存器210包含下一“最热”进程的硬体系结构状态。通常,该下一最热进程是先前被中断并且现在正被恢复的进程。罕见地,下一最热进程可以是先前未被中断的新进程。
下一最热进程是被确定为具有最高执行优先级的进程。优先级可以基于进程对于整个应用程序的重要程度、对来自进程的结果的需要或者任何其它优先级确定原因。当运行多个进程时,等待恢复的每个进程的优先级经常改变。这样,硬体系结构状态动态地被分配更新的优先级等级。也就是,在任何给定时刻,下一硬状态寄存器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指令高速缓存18和L1数据高速缓存20的全部内容保存到系统存储器118的专用区域,如块610所示。同样地,可以将BHT 35(块612)、ITLB 115和DTLB 113(块614)、ERAT 32(块616)和L2高速缓存16(块618)保存到系统存储器118。
由于L2高速缓存16可能相当大(例如,数兆字节大小),因此按照其在系统存储器中的足迹(footprint)和传输该数据所需的时间/带宽,存储所有L2高速缓存16可能是不容许的。因此,在优选实施例中,在每个同余类(congruence class)内仅保存最近最多使用(MRU)集的子集(例如,二)。
应当理解,虽然图6b示出了保存进程软状态的多个不同组件的每一个,但是所保存的这些组件的数目以及保存这些组件的次序可以随着实现而不同,并且可以通过硬件模式位而是软件可编程或控制的。
这样,本发明在正在执行中断处理程序例程(或下一进程)的时候以流的方式输出(stream out)软状态。该异步操作(独立于中断处理程序的执行)可导致软状态(被中断进程的软状态和中断处理程序的软状态)的混合。但是,因为体系结构正确性不要求软状态的精确保持,并且因为由于执行中断处理程序的较短延迟而实现了改善的性能,所以这样的数据混合是可接受的。
再次参照图2,通过高速缓存数据路径218将来自L1指令高速缓存18、L1数据高速缓存20和L2高速缓存16的软状态传送到IMC 220,而通过模拟内部数据路径(未示出)将其它软状态如BHT 35传送到IMC220。可选地或附加地,在优选实施例中,通过扫描链路径214将至少一些软状态组件传送到IMC 220。
通过扫描链路径保存软状态
由于其复杂性,处理器和其它IC典型地包括帮助测试IC的电路。该测试电路包括边界扫描链,其在电气和电子工程师协会(IEEE)标准1149.1-1990,“Standard Test Access Port and Boundary ScanArchitecture”中有描述,这里将该文献全文引作参考。典型地通过封装集成电路上的专用管脚来存取的边界扫描链在集成电路的各组件之间提供测试数据路径。
现在参照图7,其示出了根据本发明的集成电路700的方框图。集成电路700优选地是处理器,例如图2的处理单元200。集成电路700包含三个逻辑组件(逻辑电路)702、704和706,为了说明本发明起见,其包括三个存储进程软状态的存储器单元。例如,逻辑电路702可以是图3a所示的L1数据高速缓存20,逻辑电路704可以是ERAT 32,并且逻辑电路706可以是如上所述的L2高速缓存16的一部分。
在集成电路700的制造测试期间,通过扫描链边界单元708发送信号,其中扫描链边界单元708优选地是时钟控制的锁存器。由扫描链边界单元708a输出的信号向逻辑电路702提供测试输入,然后逻辑电路702输出信号到扫描链边界单元708b,扫描链边界单元708b又通过其它逻辑电路(704和706)经由其它扫描链边界单元708发送测试信号,直到该信号到达扫描链边界708c。这样,存在多米诺效应,其中只有从扫描链边界单元708c接收到预期输出,逻辑电路702-706才通过测试。
在历史上,集成电路的边界扫描链在制造之后是不被使用的。然而,本发明利用所述测试路径作为以不阻止高速缓存/寄存器端口的方式将软体系结构状态传输到图2的IMC 220的路径。也就是,通过使用扫描链测试路径,可以从高速缓存/寄存器以流的方式输出软体系结构状态,同时执行IH或下一个进程而不阻止下一进程或中断处理程序存取高速缓存/寄存器。
由于扫描链路径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和SLIH806可以在制造的时候被烧入快闪ROM 802,或者通过本领域的技术人员公知的快闪编程技术在制造之后被烧入。当由处理单元200(图2所示)接收到中断时,从快闪ROM 802而非系统存储器118或高速缓存分级结构212直接存取FLIH/SLIH。
SLIH预测
正常地,当在处理单元200中发生中断时,调用FLIH,然后FLIH调用SLIH,SLIH完成中断处理。调用哪个SLIH并且如何执行该SLIH根据包括所传参数、条件状态等在内的各种因素而不同。例如,在图8b中,调用FLIH 812导致SLIH 814的调用和执行,SLIH 814导致执行位于点B的指令。
由于程序行为可能是重复的,因此频繁地出现这样的情况,即中断将发生多次,从而导致执行相同的FLIH和SLIH(例如,FLIH 812和SLIH 814)。因此,本发明认识到,通过预测中断处理过程的控制图将被重复并且通过推测性地执行SLIH的部分而不首先执行FLIH,可以加速对后继中断发生的中断处理。
为了帮助中断处理预测,向在图8c中更详细地示出的中断处理程序预测表(IHPT)808配备处理单元200。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的基本地址,但是该地址也可以是起始点之后的SLIH 814内的指令地址(例如,点B)。
预测逻辑电路820使用预测哪个SLIH将由指定的FLIH调用的算法。在优选实施例中,该算法选取最近最多使用的与指定的FLIH相关联的SLIH。在另一个优选实施例中,该算法选取在历史上最频繁地被调用的与指定的FLIH相关联的SLIH。在任一个所述优选实施例中,该算法可以在请求预测SLIH时运行,或者可以不断地更新预测SLIH,并将其存储在IHPT 808中。
值得注意的是,本发明不同于在本技术领域内公知的转移预测方法。第一,上述方法导致到特定中断处理程序的跳转,并且不基于转移指令地址。也就是,在现有技术中使用的转移预测方法预测转移操作的结果,而本发明基于(可能)非转移指令而预测到特定中断处理程序的跳转。这导致了第二区别,即如本发明所教导的那样,与现有技术的转移预测相比,通过中断处理程序预测可以跳过较大数量的代码,因为本发明允许绕开(bypass)任何数目的指令(例如在FLIH中),而转移预测由于可由传统转移预测机制扫描的指令窗口的内在大小限制而仅允许在预测转移之前绕过有限数目的指令。第三,根据本发明的中断处理程序预测不限于如同在现有技术中公知的采取/不采取的转移预测的二元确定。这样,再次参照图8c,预测逻辑电路820可以从任何数目的历史SLIH地址818中选择预测SLIH地址822,而转移预测方案仅仅在顺序执行路径和转移路径之间选择。
现在参照图9,其示出了根据本发明的预测中断处理程序的示例性方法的流程图。当由处理器接收到中断(块902)时,通过同时多线程化(SMT)的同时执行以由该中断调用的FLIH(块904)以及基于先前执行历史由IHPT 808指示的预测SLIH(块906)开始。
在优选实施例中,响应于当接收到中断时监测被调用FLIH,可以执行到预测SLIH的跳转(块906)。例如,再次参照图8所示的IHPT808。当接收到该中断时,将FLIH与存储在IHPT 808中的FLIH地址816进行比较,如果与IHPT 808中所存储的FLIH地址816的比较揭示了由该中断调用的相同FLIH地址,则IHPT 808提供预测SLIH地址822,并且以预测SLIH地址822的地址开始的代码执行立即开始。
优选地,通过将使用IHPT 808调用的预测SLIH地址822与预测标志一起存储在包含FLIH地址的SLIH预测寄存器中,执行已知的正确SLIH与预测SLIH的后继比较。在本发明的优选实施例中,当执行已知为从FLIH调用SLIH的指令,例如“跳转”指令时,将由该跳转调用的地址与位于预测寄存器中(并且通过预测标志被识别为已被预测并且当前正在执行)的预测SLIH地址822的地址进行比较。比较来自预测寄存器的预测SLIH地址822与通过执行FLIH而选择的SLIH(块910)。如果预测出正确的SLIH,则预测SLIH完成执行(块914),因此加速中断处理。然而,如果误预测SLIH,则取消预测SLIH的进一步执行,替而执行正确的SLIH(块916)。
状态管理
现在参照图10,其示出了一个概念图,该图以图形方式示出了存储在系统存储器中的硬和软状态与示例性MP数据处理系统的各个处理器和存储器分区之间的逻辑关系。如图10所示,所有硬体系结构状态和软状态被存储在可由任何分区内的处理器存取的由管理程序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指令高速缓存18、L2数据高速缓存20和L2高速缓存16的内容。虽然这些软状态如上面参照图6b所述被存储在系统存储器中,但是很有可能的是,组成软状态的数据的至少一些由于其它进程所进行的数据修改而将变得陈旧。因此,本发明提供了一种保持存储在系统存储器高速缓存中的软状态一致的机制。
如图11所示,存储在系统存储器118中的软状态可以被概念化为存储在“虚拟高速缓存”中。例如,L2高速缓存16的软状态位于L2虚拟高速缓存1102中。L2虚拟高速缓存包括从L2高速缓存16保存的数据1110的每个高速缓存线的地址部分,其包含标记1104和索引1106。类似地,L1虚拟指令高速缓存1112包括从L1指令高速缓存18保存的指令1120的地址部分,其包含标记1114和索引1116,并且L1虚拟数据高速缓存1122包括从L1数据高速缓存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中,必须通过装载/存储执行路径将硬体系结构状态保存到系统存储器或者从其恢复硬体系结构状态,从而在测试期间阻止了完成实质性工作,并且引入了显著的延迟。
然而,使用上述硬体系结构状态存储方法,由于保存和恢复硬体系结构状态的时间非常短,优选地,仅为几个时钟循环,因此处理器可以在该处理器被安装在正常的工作环境(例如,计算机系统)下的时候日常性地运行制造级测试程序。
现在参照图12,其示出了根据本发明的制造级测试程序的示例性方法的流程图。优选地,周期性地运行测试程序。这样,如块1202和1204所示,当过去预定数量的时间时,在处理器中发起中断(块1206)。如同使用本发明的任何中断一样,当测试程序开始运行并且发出中断时,使用上述用于保存硬体系结构状态的优选方法立即保存(通常在2-3个时钟循环内)当前执行进程的硬体系结构状态,如块1208所示。同时,优选地以上面在图6b中所述的方式,保存当前执行进程的软状态的至少一部分(块1210)。
如块1212所述,可选地将制造测试程序的硬体系结构状态装载到处理器中。在本发明的优选实施例中,在从图8a所示的快闪ROM 802装载的制造级测试程序810中装载制造级测试程序。制造级测试程序810可以在开始制造处理单元200时被烧入快闪ROM 802,或者制造级测试程序810可以在此后被烧入。如果多个制造级测试程序被存储在快闪ROM 802中,则选择这些制造级测试程序之一以便执行。在本发明的优选实施例中,每当执行定时器中断时,运行制造级测试程序,如上面针对块1202和1204所述。
硬体系结构状态一被装载到处理器中,制造级测试程序就开始运行(块1214),其优选地使用上述IEEE 1149.1测试扫描链。同时地,优选地以上面针对软状态更新所述的方式(图6b),软体系结构状态流入处理器(块1216)。当完成了制造级测试程序的执行时,完成中断,并且通过装载下一进程的硬体系结构状态和软状态来执行该下一进程(块1218)。
由于装载硬体系结构状态只需几个时钟循环,因此制造级测试程序可以在执行测试程序本身所需的时间的约束内按照设计者希望的频度运行。制造测试程序的执行可以由用户、操作系统或管理程序发起。
这样,本发明提供了一种解决了与中断相关联的延迟问题等等的方法和系统。例如,在现有技术中,如果中断处理程序是罕见地被调用的进程,则由于在较低的高速缓存级别乃至系统存储器中搜索适当的中断处理程序,因此典型地存在较长的延迟。当中断处理程序正在执行时,它以处理中断所需的指令/数据填充处理器的高速缓存分级结构,因此当恢复被中断进程以便执行时“污染”了高速缓存分级结构。本发明利用这里描述的本发明过程解决了这些问题。
虽然本发明的各方面是关于计算机处理器和软件来描述的,但是应当理解,本发明的至少一些方面可以可选地被实现为用于数据存储系统或计算机系统的程序产品。定义本发明功能的程序可以通过各种信号承载介质被递送到数据存储系统或计算机系统,其中信号承载介质包括但不限于不可写存储介质(例如,CD-ROM)、可写存储介质(例如,软盘、硬盘驱动器、读/写CD-ROM、光介质)、以及通信介质例如计算机和电话网络包括以太网。因此,应当理解,当承载或编码引导本发明方法功能的计算机可读指令时,该信号承载介质代表本发明的可选实施例。此外,应当理解,本发明可由具有如这里所述的硬件、软件或软硬件组合或者其等价物的形式的装置的系统实现。
尽管本发明是参照其优选实施例来具体描述的,但本领域的技术人员应该理解,在不脱离本发明的精神和范围的情况下,可以对其进行形式和细节上的各种修改。

Claims (15)

1.一种操作处理器的方法,所述方法包括:
在处理器的第一组存储位置中存储当前正由处理器执行的第一进程的第一硬体系结构状态;
在处理器的第二组存储位置中存储当前空闲的第二进程的第二硬体系结构状态;
响应于在处理器处接收到进程中断,将第二硬体系结构状态从第二组存储位置装载到第一组存储位置;以及
执行所述第二进程。
2.如权利要求1所述的方法,还包括在执行第一进程的同时,用另一空闲进程的第三硬体系结构状态动态替换所述第二硬体系结构状态。
3.如权利要求1所述的方法,还包括根据第二进程的优先级从空闲进程池中选择所述第二进程,用以将第二硬体系结构状态存储到处理器中。
4.如权利要求1所述的方法,还包括响应于接收到所述进程中断,保存所述第一硬体系结构状态。
5.如权利要求1所述的方法,还包括:
在处理器内存储所述第一硬体系结构状态的影象拷贝;以及
响应于在处理器中接收到所述进程中断,在存储器中存储所述第一硬体系结构状态的影象拷贝。
6.一种处理器,包括:
至少一个执行单元;
指令定序单元,耦接到该至少一个执行单元;
第一组存储位置,用于存储当前正由处理器执行的第一进程的第一硬体系结构状态;以及
第二组存储位置,用于存储当前空闲的第二进程的第二硬体系结构状态,其中第二进程来自空闲进程池,并且其中在第二组存储位置中存储的第二硬体系结构状态是根据空闲池中进程的优先级分配来选择的。
7.如权利要求6所述的处理器,还包括响应于进程中断用于更新所述第二硬体系结构状态的单元。
8.如权利要求6所述的处理器,还包括:
执行电路,用于执行存储器存取指令,从而处理器能够独立于执行电路所执行的存储器存储指令而存储所述第二硬体系结构状态。
9.如权利要求6所述的处理器,还包括:
耦接到第一组存储位置的相应影象寄存器,所述影象寄存器包含至少一部分所述第一硬体系结构状态的影象拷贝;以及
耦接到影象寄存器的存储器,其中处理器在收到进程中断时将所述第一硬体系结构状态的影象拷贝存储到存储器。
10.一种数据处理系统,包括:
多个处理器,包括根据权利要求6所述的处理器;
易失性存储器分级结构,耦接到所述多个处理器;以及
互连装置,耦接所述多个处理器。
11.一种处理器,包括:
用于在处理器的第一组存储位置中存储当前正由处理器执行的第一进程的第一硬体系结构状态的装置;
用于在处理器的第二组存储位置中存储当前空闲的第二进程的第二硬体系结构状态的装置;
响应于在处理器处接收到进程中断,用于将第二硬体系结构状态从第二组存储位置装载到第一组存储位置的装置;以及
用于执行所述第二进程的装置。
12.如权利要求11所述的处理器,还包括用于在执行第一进程的同时、用另一空闲进程的第三硬体系结构状态动态替换所述第二硬体系结构状态的装置。
13.如权利要求11所述的处理器,还包括用于根据第二进程的优先级从空闲进程池中选择所述第二进程以在处理器中存储的装置。
14.如权利要求11所述的处理器,还包括响应于接收到所述进程中断、保存所述第一硬体系结构状态的装置。
15.如权利要求11所述的处理器,还包括:
用于在处理器内存储所述第一硬体系结构状态的影象拷贝的装置;以及
用于响应于在处理器中接收到所述进程中断、在存储器中存储所述第一硬体系结构状态的影象拷贝的装置。
CNA2003801064655A 2002-12-05 2003-11-14 通过硬体系结构状态的增强恢复的处理器虚拟机制 Pending CN1726469A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/313,320 US6981083B2 (en) 2002-12-05 2002-12-05 Processor virtualization mechanism via an enhanced restoration of hard architected states
US10/313,320 2002-12-05

Publications (1)

Publication Number Publication Date
CN1726469A true CN1726469A (zh) 2006-01-25

Family

ID=32468218

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2003801064655A Pending CN1726469A (zh) 2002-12-05 2003-11-14 通过硬体系结构状态的增强恢复的处理器虚拟机制

Country Status (10)

Country Link
US (1) US6981083B2 (zh)
EP (1) EP1570352B1 (zh)
KR (1) KR100615775B1 (zh)
CN (1) CN1726469A (zh)
AT (1) ATE487180T1 (zh)
AU (1) AU2003298240A1 (zh)
CA (1) CA2508041C (zh)
DE (1) DE60334835D1 (zh)
TW (1) TWI263938B (zh)
WO (1) WO2004051463A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022706A (zh) * 2014-05-02 2015-11-04 恩智浦有限公司 控制器电路,数据接口块和用于传输数据的方法
CN108804139A (zh) * 2017-06-16 2018-11-13 上海兆芯集成电路有限公司 可编程设备及其操作方法和计算机可用介质
CN109997112A (zh) * 2016-11-28 2019-07-09 Arm有限公司 数据处理

Families Citing this family (57)

* Cited by examiner, † Cited by third party
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
US7117319B2 (en) * 2002-12-05 2006-10-03 International Business Machines Corporation Managing processor architected state upon an interrupt
US7272664B2 (en) * 2002-12-05 2007-09-18 International Business Machines Corporation Cross partition sharing of state information
US20070074013A1 (en) * 2003-08-25 2007-03-29 Lonnie Goff Dynamic retention of hardware register content in a computer system
US7657807B1 (en) 2005-06-27 2010-02-02 Sun Microsystems, Inc. Integrated circuit with embedded test functionality
JP4388005B2 (ja) * 2005-10-06 2009-12-24 パナソニック株式会社 コンテキスト切替え装置
US7424563B2 (en) * 2006-02-24 2008-09-09 Qualcomm Incorporated Two-level interrupt service routine
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
US8250354B2 (en) * 2007-11-29 2012-08-21 GlobalFoundries, Inc. Method and apparatus for making a processor sideband interface adhere to secure mode restrictions
WO2009145764A1 (en) * 2008-05-28 2009-12-03 Hewlett-Packard Development Company, L.P. Providing object-level input/output requests between virtual machines to access a storage subsystem
US7831816B2 (en) * 2008-05-30 2010-11-09 Globalfoundries Inc. Non-destructive sideband reading of processor state information
US8135894B1 (en) * 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9569279B2 (en) * 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
DE102013108041B4 (de) 2012-07-31 2024-01-04 Nvidia Corporation Heterogene Mehrprozessor-Anordnung für ein leistungseffizientes und flächeneffizientes Rechnen
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9507597B2 (en) 2013-06-10 2016-11-29 Via Alliance Semiconductor Co., Ltd. Selective accumulation and use of predicting unit history
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US9891918B2 (en) 2014-01-27 2018-02-13 Via Alliance Semiconductor Co., Ltd. Fractional use of prediction history storage for operating system routines
US10346170B2 (en) * 2015-05-05 2019-07-09 Intel Corporation Performing partial register write operations in a processor
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
US10671426B2 (en) 2016-11-28 2020-06-02 Arm Limited Data processing
US10996990B2 (en) 2018-11-15 2021-05-04 International Business Machines Corporation Interrupt context switching using dedicated processors
KR20200100958A (ko) * 2019-02-19 2020-08-27 삼성전자주식회사 어플리케이션을 프리페치하는 전자 장치 및 방법

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US30007A (en) * 1860-09-11 Improvement in horse-rakes
US2878715A (en) * 1956-02-06 1959-03-24 Mark C Rhees Method of blood plasma prothrombin time determinations
US3296922A (en) * 1963-04-22 1967-01-10 American Optical Corp Apparatus for determining oxygen saturation of blood
US3516746A (en) * 1965-01-28 1970-06-23 Shimadzu Corp Cross slide spectrophotometer with a diffusing element between sample cell and photoelectric tube
US3527542A (en) * 1966-06-15 1970-09-08 Beckman Instruments Inc Cardiac output apparatus
US3638640A (en) * 1967-11-01 1972-02-01 Robert F Shaw Oximeter and method for in vivo determination of oxygen saturation in blood using three or more different wavelengths
US3649204A (en) * 1968-09-18 1972-03-14 Farr Devices Inc Metering pump for analytical samples
HU164637B (zh) * 1970-02-02 1974-03-28
US3781810A (en) 1972-04-26 1973-12-25 Bell Telephone Labor Inc Scheme for saving and restoring register contents in a data processor
US3799672A (en) * 1972-09-15 1974-03-26 Us Health Education & Welfare Oximeter for monitoring oxygen saturation in blood
US4025904A (en) * 1973-10-19 1977-05-24 Texas Instruments Incorporated Programmed allocation of computer memory workspace
GB1486505A (en) * 1974-06-04 1977-09-21 Compur Werk Gmbh & Co Handheld photoelectric appliance for testing liquids
US3972614A (en) * 1974-07-10 1976-08-03 Radiometer A/S Method and apparatus for measuring one or more constituents of a blood sample
IT1019866B (it) * 1974-08-09 1977-11-30 Biomedix Ag Apparecchiatura per la determinazio ne della concentrazione di emoglobi na totale ossigenata e risotta car bossiemoglobina del la capacita dell emoglobina per lo ossigeno della saturazione per centuale in ossigeno e in ossido di carbonio nel sangue o in solu zioni di emoglobina
CH581836A5 (zh) * 1974-08-20 1976-11-15 Contraves Ag
US4057394A (en) * 1976-05-24 1977-11-08 Miles Laboratories, Inc. Test device and method for determining blood hemoglobin
DK146287C (da) * 1976-10-18 1984-01-30 Radiometer As Fremgangsmaade til deoxygenering af et blodproevemateriale og kapillarroer til anvendelse ved fremgangsmaaden
US4134678A (en) * 1977-03-16 1979-01-16 Instrumentation Laboratory Inc. Automatic blood analysis apparatus and method
AT374008B (de) * 1977-10-25 1984-03-12 Compur Electronic Gmbh Kuevette
US4243883A (en) * 1979-01-19 1981-01-06 Midwest Cardiovascular Institute Foundation Blood hematocrit monitoring system
US4303887A (en) * 1979-10-29 1981-12-01 United States Surgical Corporation Electrical liquid conductivity measuring system
US4301412A (en) * 1979-10-29 1981-11-17 United States Surgical Corporation Liquid conductivity measuring system and sample cards therefor
US4502786A (en) * 1979-12-26 1985-03-05 Helena Laboratories Corporation Method and apparatus for automated determination of hemoglobin species
US4324556A (en) * 1980-03-25 1982-04-13 The United States Of America As Represented By The Secretary Of The Navy Portable COHB analyzer
US4453266A (en) * 1980-04-21 1984-06-05 Rush-Presbyterian-St. Luke's Medical Center Method and apparatus for measuring mean cell volume of red blood cells
US4357105A (en) * 1980-08-06 1982-11-02 Buffalo Medical Specialties Mfg., Inc. Blood diagnostic spectrophotometer
US4444498A (en) * 1981-02-27 1984-04-24 Bentley Laboratories Apparatus and method for measuring blood oxygen saturation
FR2530029A1 (fr) * 1982-07-06 1984-01-13 Centre Nat Rech Scient Nephelometre a laser perfectionne pour la detection des antigenes et des anticorps
US4700708A (en) * 1982-09-02 1987-10-20 Nellcor Incorporated Calibrated optical oximeter probe
US4484274A (en) * 1982-09-07 1984-11-20 At&T Bell Laboratories Computer system with improved process switch routine
US4565448A (en) * 1983-03-11 1986-01-21 E. I. Du Pont De Nemours And Company Particle counting apparatus
US4651741A (en) * 1985-05-30 1987-03-24 Baxter Travenol Laboratories, Inc. Method and apparatus for determining oxygen saturation in vivo
DK282085D0 (da) * 1985-06-21 1985-06-21 Radiometer As Fremgangsmaade og apparat til bestemmelse af blodkomponenter
US5142677A (en) 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
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
US5280616A (en) * 1989-02-27 1994-01-18 International Business Machines Corporation Logic circuit for task processing
JPH0353328A (ja) * 1989-07-20 1991-03-07 Hitachi Ltd レジスタ退避回復方法ならびに処理装置
US5064282A (en) * 1989-09-26 1991-11-12 Artel, Inc. Photometric apparatus and method for measuring hemoglobin
US5345567A (en) * 1991-06-10 1994-09-06 International Business Machines Corporation System and method for modifying program status word system mask, system access key, and address space code with overlap enabled
US5574936A (en) * 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5428779A (en) * 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5802359A (en) * 1995-03-31 1998-09-01 International Business Machines Corporation Mapping processor state into a millicode addressable processor state register array
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers
US6070235A (en) * 1997-07-14 2000-05-30 International Business Machines Corporation Data processing system and method for capturing history buffer data
US6405234B2 (en) 1997-09-11 2002-06-11 International Business Machines Corporation Full time operating system
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US5987495A (en) * 1997-11-07 1999-11-16 International Business Machines Corporation Method and apparatus for fully restoring a program context following an interrupt
US6006293A (en) * 1998-04-21 1999-12-21 Comsat Corporation Method and apparatus for zero overhead sharing for registered digital hardware
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
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US7318090B1 (en) * 1999-10-20 2008-01-08 Sony Corporation Method for utilizing concurrent context switching to support isochronous processes
US6629236B1 (en) * 1999-11-12 2003-09-30 International Business Machines Corporation Master-slave latch circuit for multithreaded processing
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US6553487B1 (en) 2000-01-07 2003-04-22 Motorola, Inc. Device and method for performing high-speed low overhead context switch
US6845501B2 (en) * 2001-07-27 2005-01-18 Hewlett-Packard Development Company, L.P. Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch
JP2003099272A (ja) * 2001-09-20 2003-04-04 Ricoh Co Ltd タスク切替システムと方法およびdspとモデム
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
US7152169B2 (en) * 2002-11-29 2006-12-19 Intel Corporation Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state
US7337442B2 (en) * 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022706A (zh) * 2014-05-02 2015-11-04 恩智浦有限公司 控制器电路,数据接口块和用于传输数据的方法
CN105022706B (zh) * 2014-05-02 2018-12-25 恩智浦有限公司 控制器电路,数据接口块和用于传输数据的方法
CN109997112A (zh) * 2016-11-28 2019-07-09 Arm有限公司 数据处理
CN109997112B (zh) * 2016-11-28 2023-08-18 Arm有限公司 数据处理
CN108804139A (zh) * 2017-06-16 2018-11-13 上海兆芯集成电路有限公司 可编程设备及其操作方法和计算机可用介质
CN108804139B (zh) * 2017-06-16 2020-10-20 上海兆芯集成电路有限公司 可编程设备及其操作方法和计算机可用介质

Also Published As

Publication number Publication date
EP1570352A2 (en) 2005-09-07
EP1570352B1 (en) 2010-11-03
TW200422949A (en) 2004-11-01
AU2003298240A1 (en) 2004-06-23
KR100615775B1 (ko) 2006-08-25
WO2004051463A2 (en) 2004-06-17
WO2004051463A3 (en) 2005-06-02
US6981083B2 (en) 2005-12-27
KR20040049256A (ko) 2004-06-11
ATE487180T1 (de) 2010-11-15
DE60334835D1 (de) 2010-12-16
CA2508041A1 (en) 2004-06-17
CA2508041C (en) 2011-06-07
US20040111548A1 (en) 2004-06-10
TWI263938B (en) 2006-10-11
AU2003298240A8 (en) 2004-06-23

Similar Documents

Publication Publication Date Title
CN1726469A (zh) 通过硬体系结构状态的增强恢复的处理器虚拟机制
CN1726468A (zh) 状态信息的跨分区共享
CN1726467A (zh) 通过保存和恢复软处理器/系统状态的增强处理器虚拟机制
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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication