CN1726468A - 状态信息的跨分区共享 - Google Patents

状态信息的跨分区共享 Download PDF

Info

Publication number
CN1726468A
CN1726468A CNA2003801064640A CN200380106464A CN1726468A CN 1726468 A CN1726468 A CN 1726468A CN A2003801064640 A CNA2003801064640 A CN A2003801064640A CN 200380106464 A CN200380106464 A CN 200380106464A CN 1726468 A CN1726468 A CN 1726468A
Authority
CN
China
Prior art keywords
processor
subregion
address
instruction
storer
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
Application number
CNA2003801064640A
Other languages
English (en)
Other versions
CN100368996C (zh
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 CN1726468A publication Critical patent/CN1726468A/zh
Application granted granted Critical
Publication of CN100368996C publication Critical patent/CN100368996C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Hardware Redundancy (AREA)
  • Plural Heterocyclic Compounds (AREA)
  • Farming Of Fish And Shellfish (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)

Abstract

本发明公开一种用于在数据处理系统的存储器中管理被保存的进程状态的方法和系统,其中该数据处理系统具有多个执行独立操作系统的分区。管理程序向该数据处理系统中的任何处理器提供存取,以便在存储器中存储该处理器的进程状态,而独立于在该处理器上运行的操作系统。

Description

状态信息的跨分区共享
技术领域
本发明一般涉及数据处理领域,特别涉及一种改进的用于处理中断的数据处理系统和方法。
背景技术
当执行一组计算机指令时,处理器频繁地被中断。该中断可由中断或异常(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。BPU 36扫描转移指令的指令高速缓存线,并且若有的话,预测条件转移指令的结果。在转移预测之后,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到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重命名寄存器,其中每个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 (18)

1.一种在包括第一分区和第二分区的数据处理系统的存储器中管理被保存的进程状态的方法,第一分区执行独立于在第二分区中执行的第二操作系统的第一操作系统,该方法包括:
第一分区内的第一处理器在第一操作系统之下执行进程,所述第一进程具有硬体系结构状态;
第一处理器挂起该进程的执行;
第一处理器将该进程的硬体系结构状态从该处理器存储到该数据处理系统的存储器;以及
第二分区内的第二处理器存取该进程的硬体系结构状态,并且利用该硬体系结构状态在第二操作系统之下恢复该进程的执行。
2.如权利要求1所述的方法,还包括:
第一处理器将该进程的软状态存储到存储器;以及
第二处理器从存储器存取该进程的软状态以便帮助该进程的执行。
3.如权利要求1所述的方法,其中该数据处理系统执行管理第一和第二操作系统的管理程序,并且其中管理程序:
将只能由第一分区内的处理器存取的存储器的第一区域分配给第一分区,
将只能由第二分区内的处理器存取的存储器的第二区域分配给第二分区,并且
分配可由第一分区内的处理器和第二分区内的处理器存取的存储器的第三区域。
4.如权利要求1所述的方法,其中存储器包括易失性存储器分级结构,该方法还包括:
将空闲进程的软状态存储在处于易失性存储器分级结构最低级别的系统存储器内;
响应于系统存储器的存储器控制器接收到指定地址的杀死型操作,对照系统存储器内的软状态窥探该杀死型操作;以及
响应于产生窥探命中的窥探,无效与该地址相关联的软状态内的数据。
5.如权利要求4所述的方法,其中该地址具有多个位,并且其中无效包括响应于基于少于全部位数而确定的窥探命中而无效数据。
6.如权利要求4所述的方法,其中存储包括在系统存储器内存储虚拟高速缓存目录,并且窥探包括对照虚拟高速缓冲存储器窥探地址。
7.如权利要求4所述的方法,其中存储包括存储虚拟高速缓存阵列,并且其中无效包括无效虚拟高速缓存阵列内的虚拟高速缓存线。
8.一种用于管理多个操作系统的计算机可用介质,所述计算机可读介质包括:
用于提供由第一操作系统对可被第二操作系统存取的存储器区域的存取的计算机程序代码。
9.如权利要求8所述的计算机可用介质,其中第一操作系统和第二操作系统包括相同操作系统的两个实例。
10.如权利要求8所述的计算机可用介质,其中第一操作系统和第二操作系统不同。
11.一种数据处理系统,包括:
包括至少第一处理器的第一分区,第一分区执行第一操作系统;
包括至少第二处理器的第二分区,第二分区执行独立于在第一分区内执行的第一操作系统的第二操作系统;
存储器系统,耦接到第一和第二处理器,该存储器系统包括:
分配给第一分区的第一区域,第一区域只能由第一分区内的处理器存取;
分配给第二分区的第二区域,第二区域只能由第二分区内的处理器存取;和
可由第一和第二分区中的处理器存取的第三区域;
其中响应于中断,第一处理器挂起具有硬体系结构状态的进程的执行,并且将该进程的硬体系结构状态从第一处理器存储到存储器的第三区域;以及
其中第二分区内的第二处理器在存储器的第三区域中存取该进程的硬体系结构状态,并且恢复该进程的执行。
12.如权利要求11所述的数据处理系统,其中数据处理器包括多个处理器,该数据处理系统还包括:
连接该多个处理器的互连装置。
13.如权利要求11所述的数据处理系统,还包括:
第一处理器包括用于将进程的软状态存储到存储器的装置;以及
第二处理器包括用于从存储器存取该进程的软状态以便帮助该进程的执行的装置。
14.如权利要求11所述的数据处理系统,还包括位于存储器内且由第一和第二处理器执行的管理程序,其中该管理程序分配存储器的第一、第二和第三区域。
15.如权利要求11所述的数据处理系统,其中该存储器系统包括易失性存储器分级结构,该数据处理系统还包括:
用于将空闲进程的软状态存储在处于易失性存储器分级结构最低级别的系统存储器内的装置;
用于响应于系统存储器的存储器控制器接收到指定地址的杀死型操作,对照系统存储器内的软状态窥探杀死型操作的装置;以及
用于响应于产生窥探命中的窥探,无效与该地址相关联的软状态内的数据的装置。
16.如权利要求15所述的数据处理系统,其中该地址具有多个位,并且其中用于无效的装置包括用于响应于基于少于全部位数而确定的窥探命中而无效数据的装置。
17.如权利要求15所述的数据处理系统,其中用于存储的装置包括用于在系统存储器内存储虚拟高速缓存目录的装置,并且用于窥探的装置包括用于对照虚拟高速缓冲存储器窥探地址的装置。
18.如权利要求15所述的数据处理系统,其中用于存储的装置包括用于存储虚拟高速缓存阵列的装置,并且其中用于无效的装置包括用于无效虚拟高速缓存阵列内的虚拟高速缓存线的装置。
CNB2003801064640A 2002-12-05 2003-11-14 状态信息的跨分区共享的方法和系统 Expired - Lifetime CN100368996C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/313,330 2002-12-05
US10/313,330 US7272664B2 (en) 2002-12-05 2002-12-05 Cross partition sharing of state information

Publications (2)

Publication Number Publication Date
CN1726468A true CN1726468A (zh) 2006-01-25
CN100368996C CN100368996C (zh) 2008-02-13

Family

ID=32468226

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801064640A Expired - Lifetime CN100368996C (zh) 2002-12-05 2003-11-14 状态信息的跨分区共享的方法和系统

Country Status (11)

Country Link
US (1) US7272664B2 (zh)
EP (1) EP1570351B8 (zh)
KR (1) KR100570415B1 (zh)
CN (1) CN100368996C (zh)
AT (1) ATE429674T1 (zh)
AU (1) AU2003292268A1 (zh)
CA (1) CA2508044C (zh)
DE (1) DE60327362D1 (zh)
IL (1) IL168977A (zh)
TW (1) TWI232375B (zh)
WO (1) WO2004051471A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324529A (zh) * 2008-04-02 2013-09-25 高通股份有限公司 跨任务共享操作系统子进程
CN107003896A (zh) * 2014-12-19 2017-08-01 Arm 有限公司 具有共享事务处理资源的装置和数据处理方法
CN107844434A (zh) * 2011-02-28 2018-03-27 甲骨文国际公司 通用高速缓存管理系统

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680972B2 (en) * 2005-02-04 2010-03-16 Sony Computer Entertainment Inc. Micro interrupt handler
JP4368320B2 (ja) * 2005-03-16 2009-11-18 富士通株式会社 情報処理システム,パイプライン処理装置,ビジー判定プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
JP2006260407A (ja) 2005-03-18 2006-09-28 Fujitsu Ltd 情報処理装置
US20070118633A1 (en) * 2005-11-10 2007-05-24 Kumar C P V Cluster command testing
US7613918B2 (en) * 2006-02-16 2009-11-03 Finjan Software Ltd. System and method for enforcing a security context on a downloadable
US20120144485A9 (en) 2005-12-12 2012-06-07 Finjan Software, Ltd. Computer security method and system with input parameter validation
US7814307B2 (en) 2006-03-16 2010-10-12 Microsoft Corporation Fast booting a computing device to a specialized experience
US9867530B2 (en) 2006-08-14 2018-01-16 Volcano Corporation Telescopic side port catheter device with imaging system and method for accessing side branch occlusions
US8082431B2 (en) * 2006-09-29 2011-12-20 Intel Corporation System and method for increasing platform boot efficiency
US20080162866A1 (en) * 2006-12-28 2008-07-03 Siddiqi Faraz A Apparatus and method for fast and secure memory context switching
WO2009009802A1 (en) 2007-07-12 2009-01-15 Volcano Corporation Oct-ivus catheter for concurrent luminal imaging
US9596993B2 (en) 2007-07-12 2017-03-21 Volcano Corporation Automatic calibration systems and methods of use
EP2178442B1 (en) 2007-07-12 2017-09-06 Volcano Corporation Catheter for in vivo imaging
US8707318B2 (en) * 2007-10-12 2014-04-22 Microsoft Corporation Partitioning system including a generic partitioning manager for partitioning resources
US8266634B2 (en) 2007-10-12 2012-09-11 Microsoft Corporation Resource assignment system with recovery notification
US20090172125A1 (en) * 2007-12-28 2009-07-02 Mrigank Shekhar Method and system for migrating a computer environment across blade servers
US9047468B2 (en) 2007-12-28 2015-06-02 Intel Corporation Migration of full-disk encrypted virtualized storage between blade servers
US8359365B2 (en) 2008-02-11 2013-01-22 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallel document indexing
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US11141063B2 (en) 2010-12-23 2021-10-12 Philips Image Guided Therapy Corporation Integrated system architectures and methods of use
US11040140B2 (en) 2010-12-31 2021-06-22 Philips Image Guided Therapy Corporation Deep vein thrombosis therapeutic methods
US9360630B2 (en) 2011-08-31 2016-06-07 Volcano Corporation Optical-electrical rotary joint and methods of use
CN103049318B (zh) * 2011-10-11 2017-10-17 北京科银京成技术有限公司 分区操作系统的虚拟中断方法
US9229884B2 (en) 2012-04-30 2016-01-05 Freescale Semiconductor, Inc. Virtualized instruction extensions for system partitioning
US9152587B2 (en) * 2012-05-31 2015-10-06 Freescale Semiconductor, Inc. Virtualized interrupt delay mechanism
US9436626B2 (en) 2012-08-09 2016-09-06 Freescale Semiconductor, Inc. Processor interrupt interface with interrupt partitioning and virtualization enhancements
US9442870B2 (en) 2012-08-09 2016-09-13 Freescale Semiconductor, Inc. Interrupt priority management using partition-based priority blocking processor registers
US9367965B2 (en) 2012-10-05 2016-06-14 Volcano Corporation Systems and methods for generating images of tissue
US11272845B2 (en) 2012-10-05 2022-03-15 Philips Image Guided Therapy Corporation System and method for instant and automatic border detection
US9307926B2 (en) 2012-10-05 2016-04-12 Volcano Corporation Automatic stent detection
US10070827B2 (en) 2012-10-05 2018-09-11 Volcano Corporation Automatic image playback
US9292918B2 (en) 2012-10-05 2016-03-22 Volcano Corporation Methods and systems for transforming luminal images
US10568586B2 (en) 2012-10-05 2020-02-25 Volcano Corporation Systems for indicating parameters in an imaging data set and methods of use
US9858668B2 (en) 2012-10-05 2018-01-02 Volcano Corporation Guidewire artifact removal in images
US9324141B2 (en) 2012-10-05 2016-04-26 Volcano Corporation Removal of A-scan streaking artifact
JP2015532536A (ja) 2012-10-05 2015-11-09 デイビッド ウェルフォード, 光を増幅するためのシステムおよび方法
US9286673B2 (en) 2012-10-05 2016-03-15 Volcano Corporation Systems for correcting distortions in a medical image and methods of use thereof
US9840734B2 (en) 2012-10-22 2017-12-12 Raindance Technologies, Inc. Methods for analyzing DNA
JP6322210B2 (ja) 2012-12-13 2018-05-09 ボルケーノ コーポレイション 標的化された挿管のためのデバイス、システム、および方法
EP2934310A4 (en) 2012-12-20 2016-10-12 Nathaniel J Kemp RECONFIGURABLE OPTICAL COHERENCE TOMOGRAPHY SYSTEM BETWEEN DIFFERENT IMAGING MODES
US9730613B2 (en) 2012-12-20 2017-08-15 Volcano Corporation Locating intravascular images
US10939826B2 (en) 2012-12-20 2021-03-09 Philips Image Guided Therapy Corporation Aspirating and removing biological material
EP2934311B1 (en) 2012-12-20 2020-04-15 Volcano Corporation Smooth transition catheters
US10942022B2 (en) 2012-12-20 2021-03-09 Philips Image Guided Therapy Corporation Manual calibration of imaging system
US11406498B2 (en) 2012-12-20 2022-08-09 Philips Image Guided Therapy Corporation Implant delivery system and implants
US10413317B2 (en) 2012-12-21 2019-09-17 Volcano Corporation System and method for catheter steering and operation
US10058284B2 (en) 2012-12-21 2018-08-28 Volcano Corporation Simultaneous imaging, monitoring, and therapy
CA2895769A1 (en) 2012-12-21 2014-06-26 Douglas Meyer Rotational ultrasound imaging catheter with extended catheter body telescope
JP2016508757A (ja) 2012-12-21 2016-03-24 ジェイソン スペンサー, 医療データのグラフィカル処理のためのシステムおよび方法
EP2936241B1 (en) 2012-12-21 2020-10-21 Nathaniel J. Kemp Power-efficient optical buffering using a polarisation-maintaining active optical switch
US9612105B2 (en) 2012-12-21 2017-04-04 Volcano Corporation Polarization sensitive optical coherence tomography system
WO2014099672A1 (en) 2012-12-21 2014-06-26 Andrew Hancock System and method for multipath processing of image signals
US9486143B2 (en) 2012-12-21 2016-11-08 Volcano Corporation Intravascular forward imaging device
WO2014099896A1 (en) 2012-12-21 2014-06-26 David Welford Systems and methods for narrowing a wavelength emission of light
US10166003B2 (en) 2012-12-21 2019-01-01 Volcano Corporation Ultrasound imaging with variable line density
US10226597B2 (en) 2013-03-07 2019-03-12 Volcano Corporation Guidewire with centering mechanism
US9770172B2 (en) 2013-03-07 2017-09-26 Volcano Corporation Multimodal segmentation in intravascular images
US11154313B2 (en) 2013-03-12 2021-10-26 The Volcano Corporation Vibrating guidewire torquer and methods of use
EP3895604A1 (en) 2013-03-12 2021-10-20 Collins, Donna Systems and methods for diagnosing coronary microvascular disease
US9301687B2 (en) 2013-03-13 2016-04-05 Volcano Corporation System and method for OCT depth calibration
CN105120759B (zh) 2013-03-13 2018-02-23 火山公司 用于从旋转血管内超声设备产生图像的系统和方法
US11026591B2 (en) 2013-03-13 2021-06-08 Philips Image Guided Therapy Corporation Intravascular pressure sensor calibration
JP6342984B2 (ja) 2013-03-14 2018-06-13 ボルケーノ コーポレイション エコー源性特性を有するフィルタ
US10219887B2 (en) 2013-03-14 2019-03-05 Volcano Corporation Filters with echogenic characteristics
US10292677B2 (en) 2013-03-14 2019-05-21 Volcano Corporation Endoluminal filter having enhanced echogenic properties
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
KR102303417B1 (ko) * 2015-06-19 2021-09-23 삼성전자주식회사 복수의 운영 체제를 지원하는 전자 장치 제어 방법
US9619393B1 (en) 2015-11-09 2017-04-11 International Business Machines Corporation Optimized use of hardware micro partition prefetch based on software thread usage
US11681624B2 (en) * 2020-07-17 2023-06-20 Qualcomm Incorporated Space and time cache coherency

Family Cites Families (27)

* Cited by examiner, † Cited by third party
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 マイクロコンピュータ
JP3085899B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 マルチプロセッサシステム
US6026471A (en) * 1996-11-19 2000-02-15 International Business Machines Corporation Anticipating cache memory loader and method
US6226734B1 (en) * 1998-06-10 2001-05-01 Compaq Computer Corporation Method and apparatus for processor migration from different processor states in a multi-processor computer system
US6633916B2 (en) * 1998-06-10 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for virtual resource handling in a multi-processor computer system
US20020016891A1 (en) * 1998-06-10 2002-02-07 Karen L. Noel Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory
US6260068B1 (en) * 1998-06-10 2001-07-10 Compaq Computer Corporation Method and apparatus for migrating resources in a multi-processor computer system
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
CA2335561A1 (en) * 2000-05-31 2001-11-30 Frank J. Degilio Heterogeneous client server method, system and program product for a partitioned processing environment
US6574748B1 (en) * 2000-06-16 2003-06-03 Bull Hn Information Systems Inc. Fast relief swapping of processors in a data processing system
FR2814555B1 (fr) * 2000-09-25 2003-02-28 Thomson Multimedia Sa Systeme et procede de gestion memoire de coherence de donnees et reseau multiprocesseur associe
US6854021B1 (en) * 2000-10-02 2005-02-08 International Business Machines Corporation Communications between partitions within a logically partitioned computer
US20020129172A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6886064B2 (en) * 2002-03-28 2005-04-26 International Business Machines Corporation Computer system serialization control method involving unlocking global lock of one partition, after completion of machine check analysis regardless of state of other partition locks
US7213248B2 (en) * 2002-10-10 2007-05-01 International Business Machines Corporation High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system
US7039832B2 (en) * 2002-12-05 2006-05-02 International Business Machines Corporation Robust system reliability via systolic manufacturing level chip test operating real time on microprocessors/systems
US6983347B2 (en) * 2002-12-05 2006-01-03 International Business Machines Corporation Dynamically managing saved processor soft states
US6981083B2 (en) * 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103324529A (zh) * 2008-04-02 2013-09-25 高通股份有限公司 跨任务共享操作系统子进程
CN103324529B (zh) * 2008-04-02 2016-08-03 高通股份有限公司 跨任务共享操作系统子进程
CN107844434A (zh) * 2011-02-28 2018-03-27 甲骨文国际公司 通用高速缓存管理系统
CN107003896A (zh) * 2014-12-19 2017-08-01 Arm 有限公司 具有共享事务处理资源的装置和数据处理方法
US10908944B2 (en) 2014-12-19 2021-02-02 Arm Limited Apparatus with shared transactional processing resource, and data processing method
CN107003896B (zh) * 2014-12-19 2021-05-18 Arm 有限公司 具有共享事务处理资源的装置和数据处理方法

Also Published As

Publication number Publication date
DE60327362D1 (de) 2009-06-04
TWI232375B (en) 2005-05-11
TW200419347A (en) 2004-10-01
EP1570351B8 (en) 2009-07-08
KR100570415B1 (ko) 2006-04-11
CN100368996C (zh) 2008-02-13
WO2004051471A3 (en) 2004-07-08
KR20040049253A (ko) 2004-06-11
EP1570351B1 (en) 2009-04-22
CA2508044A1 (en) 2004-06-17
US7272664B2 (en) 2007-09-18
IL168977A (en) 2009-12-24
US20040111552A1 (en) 2004-06-10
ATE429674T1 (de) 2009-05-15
CA2508044C (en) 2010-04-13
EP1570351A2 (en) 2005-09-07
AU2003292268A1 (en) 2004-06-23
WO2004051471A2 (en) 2004-06-17

Similar Documents

Publication Publication Date Title
CN1726468A (zh) 状态信息的跨分区共享
CN1726469A (zh) 通过硬体系结构状态的增强恢复的处理器虚拟机制
CN1726467A (zh) 通过保存和恢复软处理器/系统状态的增强处理器虚拟机制
US7475399B2 (en) Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization
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
CX01 Expiry of patent term

Granted publication date: 20080213

CX01 Expiry of patent term