CN1967471A - 用于中止软件线程的方法和系统 - Google Patents

用于中止软件线程的方法和系统 Download PDF

Info

Publication number
CN1967471A
CN1967471A CNA2006101429823A CN200610142982A CN1967471A CN 1967471 A CN1967471 A CN 1967471A CN A2006101429823 A CNA2006101429823 A CN A2006101429823A CN 200610142982 A CN200610142982 A CN 200610142982A CN 1967471 A CN1967471 A CN 1967471A
Authority
CN
China
Prior art keywords
instruction
software thread
latch
register
software
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
CNA2006101429823A
Other languages
English (en)
Other versions
CN100456228C (zh
Inventor
拉科什·沙马
萨特亚·普拉卡什·沙马
小赫尔曼·D.·德尔克斯
杰弗里·P.·梅西
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 CN1967471A publication Critical patent/CN1967471A/zh
Application granted granted Critical
Publication of CN100456228C publication Critical patent/CN100456228C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30101Special purpose registers
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

本发明提供一种用于中止进程中的软件线程的方法、系统和计算机可用介质。把指令从所述进程中的第一软件线程发送到处理单元中的指令排序单元(ISU)。然后把所述指令从所述第一软件线程发送到来自所述ISU的多个指令保持锁存器中的第一指令保持锁存器。然后有选择地冻结第一指令保持锁存器,所述第一指令保持锁存器包含有来自第一软件线程的指令,以致当所述第一指令保持锁存器被冻结时,来自所述第一软件线程的指令不能被传递到处理器核心中的执行单元。这使整个第一软件线程同样地被冻结,而允许进程中的其它软件线程继续执行。

Description

用于中止软件线程的方法和系统
技术领域
本发明涉及计算机领域,并且尤其涉及能够同时执行多个软件线程的计算机。本发明还尤其涉及一种用于在不调用操作系统内核的情况下中止软件线程的系统和方法。
背景技术
许多现代计算机系统能够多重处理软件。每个计算机程序包含被称为进程的多个子单元。每个进程由多个线程组成。每个线程能够在一定程度上自主于进程中的其它线程来执行。即,每个线程能够就好像它是“小进程”那样被执行,所述“小进程”可以调用计算机的操作系统(operation system OS)来独立地执行。
在第一线程执行期间,该线程常常必须等待在所述第一线程可能完成执行之前所出现的某些异步事件。这种异步事件包括接收数据(包括作为在相同或不同进程中另一线程的输出的数据)、中断或异常。
中断是与当出现所述中断时所执行的指令不相关联的异步中断事件。即,所述中断常常由处理器之外的某些事件引起,诸如来自输入/输出(I/O)设备的输入、来自另一处理器的操作调用等。其它中断例如可能由计时器的期满而内部引起,所述计时器用于控制任务切换。
异常是根据指令执行而直接出现的同步事件,所述指令在出现异常时执行。即,异常是来自处理器内部的事件,诸如运算溢出、定时的维护检查、内部性能监视器、机载工作负荷管理器等。典型情况下,异常要远比中断更为频繁。
当前,当出现异步事件时,线程调用计算机的OS来开始等待/恢复例程。然而,由于OS必须实现系统调用和进程/线程分派,所以要求所述OS中的大量指令来实现此能力。该操作在时间和带宽上给计算机带来了繁重的开销,因而减慢了进程的执行,减慢了所述计算机的总性能,并且在线程执行之间产生更长的等待时间。
发明内容
鉴于现有技术中的上述问题,给出了一种用于中止进程中的软件线程的方法、系统和计算机可用介质。把指令从所述进程中的第一软件线程发送到处理单元中的指令排序单元(Instruction SequencingUnit ISU)。然后把所述指令从所述第一软件线程发送到来自所述ISU的多个指令保持锁存器中的第一指令保持锁存器。然后有选择地冻结第一指令保持锁存器,所述第一指令保持锁存器包含有来自第一软件线程的指令,以致当所述第一指令保持锁存器被冻结时,来自所述第一软件线程的指令不能被传递到处理器核心中的执行单元。这使整个第一软件线程同样地被冻结,同时允许进程中的其它软件线程继续执行。因而,可以在不(即独立于)调用操作系统内核的情况下中止软件线程。
依照下面的详细描述,本发明的上述及附加目的、特征和优点将变得更加清楚。
附图说明
在附加权利要求中阐明了被认为是本发明特性的新颖特征。然而最好结合附图参考以下说明性实施例的详细描述来理解本发明本身以及所使用的优选模式、其进一步的目的和优点,其中:
图1a是进程的指令通过指令保持锁存器(Instruction HoldingLatch IHL)、执行单元(Execution Unit EU)和输出而流动的流程的高级示例;
图1b描绘了其中软件线程可以被中止/冻结的示例性处理单元的框图;
图1c图示了在图1b中所示出的处理单元的附加细节;
图2描绘了在图1c中所示出的管理程序级寄存器的附加细节;
图3是开始中止/冻结软件线程的示例性步骤的流程图;
图4图示了用于冻结去往IHL和EU的时钟信号的示例性硬件;和
图5描绘了用于中止/冻结软件线程的软件的高级视图。
具体实施方式
现在参考附图,图1a图示了常规的处理单元100的一部分。在处理单元100所描绘的部分内是指令排序单元(ISU)102,所述指令排序单元102包括一级(L1)指令高速缓存器(I-Cache)104和指令保持锁存器(IHL)106。ISU 102被耦合到执行单元(EU)108。
为了图示,假定进程包括被示为指令1-5的五个指令(即,操作数)。进程的第一指令(指令1)已经被加载到EU 108中,所述指令1在EU 108中被执行。进程的第二指令(指令2)已经被加载到IHL106中,所述指令2在IHL 106中等待被加载到EU 108中。后三个指令(指令3-5)仍然被保持在L1I-Cache 104中,它们最后会从所述L1I-Cache 104中被顺序地加载到IHL 106中。
图1b提供了处理单元100的附加细节。如所描述,ISU 102具有多个IHL 106a-n。每个IHL 106能够存储来自相同进程或不同进程的线程的指令。在优选实施例中,每个IHL 106专用于特定的一个或多个EU 108。例如,IHL 106n可以只向EU 108b发送指令,而IHL106a和106b只向EU 108a发送指令。
处理单元100还包括加载/存储单元(Load/Store Unit LSU)110,所述加载/存储单元110从ISU 102提供指令并且从L1数据高速缓存器(D-Cache)112中提供数据(将被来自ISU 102的指令所操纵)。从计算机系统中的系统存储器114经由存储器总线116来填充L1 I-Cache 104和L1 D-Cache 112,其中所述计算机系统支持并使用处理单元100。执行单元108可以包括浮点执行单元、定点执行单元、分支执行单元等。
现在参考图1c,其示出了处理单元100的附加细节。处理单元100包括芯片内多级高速缓存器体系,分别包括统一的二级(L2)高速缓存器117和分叉的一级(L1)指令(I)和数据(D)高速缓存器104和112。高速缓存器117、104和112提供了对高速缓存线的低等待时间的访问,所述高速缓存线对应于系统存储器114中的存储单元。
响应于存在于取指令地址寄存器(Instruction Fetch AddressRegister IFAR)118中的有效地址(effective address EA)来从L1 I-Cache 104取出指令以便处理。在每个周期期间,可以从以下三个源之一中把新的取指令地址加载到IFAR 118中:分支预测单元(BranchPrediction Unit BPU)120,用于提供由预测条件分支指令所产生的推测性目标路径和顺序的地址;全局完成表(Global Completion TableGCT)122,用于提供转储清除(flush)和中断地址;或分支执行单元(Branch Execution Unit BEU)124,用于提供由分析所预测的条件分支指令所产生的非推测性地址。与BPU 120相关联的是分支历史记录表(Branch History Table BHT)126,其中记录了条件分支指令的分析以帮助预测将来的分支指令。
诸如IFAR 118内的取指令地址之类的有效地址(EA)是由处理器所产生的指令或数据的地址。EA指定了段寄存器和段内的偏移信息。为了访问存储器中的数据(包括指令),EA通过一级或多级转换被转化为实际地址(Real Address RA),所述实际地址与存储有数据或指令的物理位置相关联。
在处理单元100内,由存储器管理单元(Memory ManagementUnits MMU)和相关联的地址转换设备来执行有效到实际地址的转换。优选地是,提供独立的MMU来用于指令访问和数据访问。在图1c中,为了清楚起见图示了单个MMU 128,只示出了到ISU 102的连接。然而应当理解的是,MMU 128优选还包括到加载/存储单元(LSU)110a和110b及为管理存储器访问所必须的其它组件的连接(未示出)。MMU 128包括数据转换后备缓冲器(Data TranslationLookaside Buffer DTLB)130和指令转换后备缓冲器(instructiontranslation lookaside buffer ITLB)132。每个TLB包含最近引用的页面表条目,访问所述页面表条目以便把用于数据(DTLB 130)或指令(ITLB 132)的EA转化为RA。从ITLB 132中最近引用的EA到RA的转换被高速缓存到有效到实际地址表(Effective-to-RealAddress Table ERAT)134中。
如果命中/未命中逻辑136确定在由ERAT 134转换在IFAR 118中所包含的EA并且查找I-Cache目录(I-cache directory IDIR)138中的实际地址(RA)之后,对应于IFAR 118中EA的指令的高速缓存线并未存在于L1 I-Cache 104中,那么命中/未命中逻辑136经由I-Cache请求总线140向L2高速缓存器116提供RA作为请求地址。这种请求地址也可以由L2高速缓存器116内的预取逻辑根据最近访问模式来产生。响应于请求地址,L2高速缓存器116输出指令的高速缓存线,所述指令经由I-Cache重新加载总线144被加载到预取缓冲器(Prefetch Buffer PB)142和L1 I-Cache 104中,可能在穿过可选的预解码逻辑146之后。
一旦由IFAR 118中的EA所指定的高速缓存线存在于L1高速缓存器104中,L1 I-Cache 104就向分支预测单元(BPU)120和取指令缓存器(Instruction Fetch Buffer IFB)148输出所述高速缓存线。BPU 120扫描用于分支指令的指令的高速缓存线并且预测条件分支指令的结果,如果存在的话。按照分支预测,如上所述BPU 120向IFAR 118提供推测性的取指令地址,并且把所述预测传递到分支指令队列150以便当随后由分支执行单元(BEU)124分析所述条件分支指令时可以确定所述预测的准确性。
IFB 148暂时地缓冲从L1 I-Cache 104所接收的指令的高速缓存线,直到指令的高速缓存线可以被指令转换单元(InstructionTranslation Unit ITU)152转换。在所图示的处理单元100的实施例中,ITU 152把来自用户指令集体系结构(User Instruction SetArchitecture UISA)指令的指令转换为可能不同数目的内部ISA(Internal ISA IISA)指令,所述内部ISA可由处理单元100的执行单元直接执行。例如可以参考在只读存储器(ROM)模板中所存储的微代码来执行这种转换。在至少一些实施例中,UISA到IISA的转换导致IISA指令与UISA指令的数目不同和/或IISA指令与相应的UISA指令的长度不同。然后由全局完成表(GCT)122把所产生的IISA指令分配到指令组,允许所述指令组的成员彼此之间相互无序地分派并执行。GCT 122跟踪每个指令组,其执行尚需由至少一个相关联的EA来完成,所述EA优选为指令组中最旧指令的EA。
在UISA到IISA指令转换之后,根据指令类型向指令保持锁存器106a-n之一分派指令,可能是无序的。即,向指令保持锁存器106a分派分支指令及其它条件寄存器(Condition Register CR)修改指令,向指令保持锁存器106b和106c之一分派定点和加载-存储指令,并且向指令保持锁存器106n分派浮点指令。然后由CR映射器154、链路和计数(Link and Count LC)寄存器映射器156、异常寄存器(exception register XR)映射器158、通用寄存器(General-Purpose Register GPR)映射器160和浮点寄存器(Floating-PointRegister FPR)映射器162中适当的一个来把要求重命名寄存器的每个指令分配到一个或多个重命名寄存器,所述重命名寄存器用于暂时地存储执行结果。
然后所分派的指令被暂时地置于CR发布队列(CR Issue QueueCRIQ)164、分支发布队列(Branch Issue Queue BIQ)150、定点发布队列(Fixed-point Issue Queues FXIQ)166a和166b和浮点发布队列(Floating-point Issue Queues FPIQ)168a和168b中适当的一个。只要观察到数据相关性和反相关性,就可以抓住机会地把指令从发布队列164、150、166a-b和168a-b发布到处理单元100的执行单元以便执行。然而,在需要重新发布任何指令的情况下,指令被维持在发布队列164、150、166a-b和168a-b中直到指令执行完成并且写回所产生的数据(如果存在的话)。
如所图示,处理器核心170的执行单元包括用于执行CR修改指令的CR单元(CR Unit CRU)172、用于执行分支指令的分支执行单元(BEU)124、用于执行定点指令的两个定点单元(Fixed-pointUnits FXU)174a和174b、用于执行加载和存储指令的两个加载-存储单元(LSU)110a和110b以及用于执行浮点指令的两个浮点单元(Floating-point Units FPU)176a和176b。处理器核心170中的每个执行单元优选被实现为具有多个流水线级的执行流水线。
在处理器核心170中的一个执行单元内的执行期间,指令从被耦合到所述执行单元的寄存器文件内的一个或多个体系结构和/或重命名寄存器中接收操作数,如果存在的话。当执行CR修改或CR相关指令时,CRU 172和BEU 124访问CR寄存器文件178,所述CR寄存器文件178在优选实施例中包含CR和多个CR重命名寄存器,所述CR重命名寄存器均包括由一个或多个比特形成的多个不同字段。在这些字段之间是LT、GT和EQ字段,所述字段分别表明值(典型情况下为指令的结果或操作数)小于零、大于零还是等于零。链路和计数寄存器(Link and count register LCR)寄存器文件180均包含计数寄存器(Count Register CTR)、链路寄存器(Link Register LR)和重命名寄存器,借此BEU 124还可以分析条件分支以便获得路径地址。同步的通用寄存器(GPR)182a和182b复制寄存器文件、存储由FXU 174a和174b以及LSU 110a和110b所访问并生成的定点和整数值。浮点寄存器文件(FPR)184包含由FPU 176a和176b执行浮点指令并且由LSU 110a和110b执行浮点加载指令所产生的浮点值,所述浮点寄存器文件(FPR)184像GPR 182a和182b一样也可以被实现为同步寄存器的复制集。
在执行单元完成指令执行之后,所述执行通知GCT 122,所述GCT 122依照程序次序来调度完成指令。为了完成由CRU 172、FXU174a和174b或FPU 176a和176b之一所执行的指令,GCT 122向执行单元发信号,所述执行单元从所分配的重命名寄存器向适当寄存器文件内的一个或多个体系结构寄存器写回所产生的数据,如果存在的话。然后从发布队列中移除指令,并且一旦其指令组内的所有指令已经完成,那么从GCT 122中移除所述指令。然而不同地完成其它类型的指令。
当BEU 124分析条件分支指令并且确定应当采取的执行路径的路径地址时,相对于由BPU 120所预测的推测性路径地址来比较所述路径地址。如果所述路径地址匹配,那么不再要求进一步的处理。然而如果所计算的路径地址与所预测的路径地址不匹配,那么BEU 124向IFAR 118提供正确的路径地址。在任何一种情况下,然后可以从BIQ150中移除分支指令,并且当相同指令组内的所有其它指令已经完成时,从GCT 122中移除分支指令。
在执行加载指令之后,通过执行所述加载指令所计算的有效地址被数据ERAT(未图示)转换为实际地址继而被作为请求地址提供到L1 D-Cache 112。在此,加载指令被从FXIQ 166a或166b中被移除并且置于加载重排序队列(Load Reorder Queue LRQ)186中直到执行所表明的加载。如果请求地址在L1 D-Cache 112中未命中,那么所述请求地址被置于加载未命中队列(Load Miss Queue LMQ)188中,据此从L2高速缓存器116中获取所请求的数据,并且失败的话,那么从另一处理单元100或系统存储器114(在图1b中所示)中获取。LRQ 186探听专用的访问请求(例如,带有修改意图的读取),在互连结构上转储清除或杀死运行中的负载,并且如果出现命中,那么取消并重新发布加载指令。类似地利用存储队列(Store QueueSTQ)190来完成存储指令,在执行所述存储指令之后把用于存储的有效地址加载到所述存储队列190中。数据可以从STQ 190被存储到L1 D-Cache 112和/或L2高速缓存器116。
处理单元100还包括锁存器冻结寄存器(Latch FreezingRegister LFR)199。如在下面附加细节中所描述,LFR 199包含掩码比特,用于控制特定的IHL 106是否能够接收时钟信号。如果暂时地阻塞到特定IHL 106的时钟信号,那么IHL 106以及使用该IHL及其伴随执行单元的指令/线程被暂时冻结。
处理器状态
处理器的状态包括在特定时间所存储的数据、指令和硬件状态,并且这里被定义为“硬”或“软”。“硬”状态被定义为处理器内的信息,处理器在体系结构上要求所述信息从进程的当前点执行所述进程。相比之下,“软”状态被定义为处理器内的信息,所述信息可能会改进进程执行的效率,但是并不要求达到体系结构上正确的结果。在图1c的处理单元100中,硬状态包括用户级寄存器的内容,所述用户级寄存器诸如CRR 178、LCR 180、GPR 182a-b、FPR 184以及管理程序级寄存器192。处理单元100的软状态包括诸如L-1 I-Cache 104、L-1D-Cache 112的内容之类的“性能关键”信息、诸如DTLB 130和ITLB132之类的地址转换信息和诸如BHT 126和L2高速缓存器116的所有或部分内容之类的不那么关键的信息。
在一个实施例中,硬和软状态被存储到(移动到)如这里所描述的寄存器。然而在优选实施例中,由于处理冻结指令(和线程)的硬件被挂起(冻结),所以硬和软状态简单地“保持在原地”,以致所述硬和软状态同样地保持冻结直到伴随的硬件被解冻。
中断处理机
第一级中断处理机(First Level Interrupt Handlers FLIH)和第二级中断处理机(Second Level Interrupt Handlers SLIH)可以被存储在系统存储器中并且当被调用时填充高速缓冲存储器体系。然而,从系统存储器中调用FLIH或SLIH可能会导致很长的访问等待时间(用于在高速缓存器未命中之后从系统存储器中定位并加载所述FLIH/SLIH)。类似地,利用FLIH/SLIH指令和数据来填充高速缓冲存储器用随后进程所不需要的数据和指令会“污染”高速缓存器。
为了减少FLIH和SLIH的访问等待时间并且为了避免高速缓存器污染,在优选实施例中,处理单元100把至少一些FLIH和SLIH存储到特定的片上存储器(例如,闪速只读存储器(ROM)194)中。FLIH和SLIH可以在制造时被烧录进闪速ROM 194中,或者可以在制造之后通过闪速编程被烧入。当中断被处理单元100接收时,直接从闪速ROM 194而不是从系统存储器114或包括L2高速缓存器116的高速缓存器体系来访问FLIH/SLIH。
SLIH预测
通常,当在处理单元100中出现中断时,FLIH被调用,所述FLIH然后调用SLIH,所述SLIH完成中断处理。哪个SLIH被调用并且该SLIH怎样执行会改变,并且取决于各种因素,包括所传递的参数、条件状态等。因为程序行为可以是重复的,所以事实常常是中断会出现多次,导致执行了相同的FLIH和SLIH。从而,本发明识别到:可以通过预测重复中断处理进程的控制图并且通过在不首先执行FLIH的情况下推测地执行部分SLIH,来加速用于随后出现中断的中断处理。
为了便于中断处理预测,处理单元100配备有中断处理机预测表(Interrupt Handler Prediction Table IHPT)196。IHPT 196包含了多个FLIH的基地址(中断向量)列表。与每个FLIH地址相关联,IHPT 196存储一个或多个SLIH地址的各自组,所述SLIH地址先前已经被相关联的FLIH调用。当利用特殊FLIH的基地址来访问IHPT196时,预测逻辑(Prediction Logic PL)198选择与IHPT 196中所指定的FLIH地址相关联的SLIH地址作为可能被所指定FLIH调用的SLIH地址。注意,虽然所图示的预测SLIH地址可以是SLIH的基地址,然而所述地址也可以是指令在所述SLIH内开始点(例如,在B点)之后的地址。
预测逻辑(PL)198使用用于预测哪个SLIH会被所指定FLIH调用的算法。在优选实施例中,此算法挑选与所指定FLIH相关联的SLIH,其最近被使用得最多。在另一优选实施例中,此算法挑选与所指定FLIH相关联的SLIH,其在历史上被最为频繁地调用。在任何一个所描述的优选实施例中,所述算法可以运行在请求所预测的SLIH时,或者所预测的SLIH可以被连续地更新并存储在IHPT 196中。
应当注意,本发明不同于在本领域中已知的分支预测方法。首先,上述方法导致跳到特定的中断处理机,而并非是基于分支指令地址的。即,在现有技术中所使用的分支预测方法预测分支操作的结果,而本发明根据(可能的)非分支指令来预测到特殊中断处理机的跳转。这导致第二差异,所述差异在于与现有技术的分支预测相比按照本发明的教导可以借助中断处理机预测来跳过更大量的代码,这是因为本发明能够绕过任意数目的指令(诸如FLIH中的指令),而分支预测允许在所预测的分支之前只绕过有限的指令,这是由于常规的分支预测机制可以扫描的指令窗口大小所存在的固有限制的缘故。第三,依照本发明的中断处理机预测并未如现有技术中所知的采用/未采用分支预测那样被约束为二分判定。因而,再次参照图1c,预测逻辑198可以从任意数目的历史SLIH地址中选择所预测的SLIH地址,而分支预测配置只在顺序执行路径和分支路径之间进行选择。
寄存器
在以上描述中,诸如GPR 182a-b、FPR 184、CRR 178和LCR180之类的处理单元100的寄存器文件通常被定义为“用户级寄存器”,这是由于这些寄存器可以由具有用户或管理程序特权的软件来访问。管理程序级寄存器192包括那些寄存器,所述寄存器典型情况下由操作系统使用,典型情况下在操作系统核心中使用,这种操作如存储器管理、配置和异常处理。照此,对管理程序级寄存器192的访问通常只局限于少数具有足够访问许可的进程(即,管理程序级进程)。
如在图2中所描述,管理程序级寄存器192通常包括配置寄存器202、存储器管理寄存器208、异常处理寄存器214和混杂寄存器222,在下面将更详细地进行描述。
配置寄存器202包括机器状态寄存器(Machine State RegisterMSR)206和处理器版本寄存器(Processor Version Register PVR)204。MSR 206定义了处理器的状态。即,MSR 206标识在处理指令中断(异常)之后指令执行应当在那里恢复。PVR 204标识处理单元100的具体类型(版本)。
存储器管理寄存器208包括块地址转换(Block AddressTranslation BAT)寄存器210。BAT寄存器210是软件控制的阵列,用于存储可用的芯片内块地址转换。优选地是,存在独立的指令和数据BAT寄存器,被示为IBAT 209和DBAT 211。存储器管理寄存器还包括段寄存器(SR)212,用来当BAT转换失败时把EA转换为虚拟地址(Virtual Addresses VA)。
异常处理寄存器214包括数据地址寄存器(Data AddressRegister DAR)216、专用寄存器(Special Purpose Registers SPR)218和机器状态保存/恢复(Status Save/Restore SSR)寄存器220。如果存储器访问导致诸如对准异常之类的异常,那么DAR 216包含由存储器访问指令所产生的有效地址。例如为了由操作系统所定义的特定目的来使用SPR标识存储区域,所述存储区域被保留以供第一级异常处理机(例如,FLIH)使用。此存储区域优选对系统中的每个处理器来说是唯一的。SPR 218可以被FLIH用为暂时存储寄存器以便保存通用寄存器(GPR)的内容,所述通用寄存器可以从SPR 218中加载并用为基址寄存器以便把其它GPR保存到存储器。SSR寄存器220保存关于异常(中断)的机器状态并且当执行中断返回指令时恢复机器状态。
混杂寄存器222包括用于维持时刻的时基(Time Base TB)寄存器224、用于递减计数的递减寄存器(Decrementer Register DEC)226和用于如果遇到所指定的数据地址那么导致出现断点的数据地址断点寄存器(Data Address Breakpoint Register DABR)228。此外,混杂寄存器222包括基于时间的中断寄存器(Time Based InterruptRegister TBIR)230,用于在预定时段之后开始中断。这种基于时间的中断可以与将在处理单元100上运行的定期维护例程一起使用。
现在参照图3,描绘了示例性方法的流程图,借此诸如处理单元100之类的处理单元处理软件线程中执行指令的中断、中止、异常或其它干扰。在开始块302之后,第一软件线程被加载(块304)到处理单元中,诸如上面所示出并描述的处理单元100。特别地是,软件线程中的指令在上述IFAR 118及其它组件的控制下是流水线的。然后该第一软件线程中的第一指令被加载(块306)到适当的指令保持锁存器(IHL)中。适当的IHL优选是专用于执行单元的IHL,所述执行单元被特别地设计成用于处理正加载的指令类型。
然后询问(询问块308)所加载的指令在该指令可以执行之前是否具有先决条件,诸如需要特定数据片(诸如由另一指令所生成的数据)、传递预定数目的时钟周期,或任何其它条件,包括在图2所描述的寄存器中所表示的那些。
如果尚未满足所述先决条件(询问块310),那么用于保持指令的IHL被冻结(块312),因而冻结整个第一软件线程。然而注意,其它软件线程及其它EU 108仍然能够继续执行。例如,假定在图1b中所示出的IHL 106n被冻结。如果是的话,那么EU 108b不能被使用,但是所有其它EU 108仍然可以由其它解冻的IHL 106来使用。
如果先决条件已经满足(询问块310),那么在适当的执行单元中执行所述指令(块314)。
然后询问是否存在要在软件线程中执行的其它指令(询问块316)。如果不是的话,那么该过程结束(终止块320)。否则,下一指令被加载到指令保持锁存器中(块318),并且如同所示所述过程重复直到线程中的所有指令已经被执行。
如上所述在优选实施例中,由于整个软件线程和与该软件线程的执行相关联的硬件简单地被冻结直到用于解冻特定IHL 106的信号被接收,所以不需要存储软或硬状态。作为选择,软和/或硬状态可以被存储到GPR 182、IFAR 118或任何其它存储寄存器中,优选为(本地)位于处理单元100上的寄存器。
在图4中示出了用于冻结指令保持锁存器(IHL)106的优选系统。最初在图1b中示出并且在图4中用于示例性目的的IHL 106n被耦合到单个执行单元(EU)108b。IHL 106n的功能取决于时钟信号,所述时钟信号被要求用于IHL 106n的正常操作。在没有时钟信号的情况下,IHL 106n会简单地“冻结”,导致(在图1b中所示出的)L1I-Cache 104被阻止能够向IHL 106n发送任何新的指令,所述指令来自与在IHL 106n中所冻结的指令相同的软件线程。作为选择,可以通过向IFAR 118发送冻结信号来实现用于冻结软件线程的整个上游部分的指令。
EU 108b的操作可以继续,导致处于与在IHL 106n中所冻结的指令相同线程中的任何指令的执行。然而在另一实施例中,当IHL106n被冻结时EU 108b也被冻结,优选如同所示通过控制EU 108b的时钟信号来冻结。
通过掩码IHL冻结寄存器(IHL Freeze Register IFR)402来实现对时钟信号的控制。IFR 402包含了用于每个IHL 106(并且选择性地用于每个EU 108、L1 I-Cache 104和IFAR 118)的控制位。此掩码可以由各种源来创建。例如,系统计时器404可以创建用于表明是否已经过去预定的时间量的掩码。在优选实施例中,来自库调用406的输出控制IFR 402的加载(掩码)。
如图5所述,当出现特定条件时(诸如所要求的执行数据不可用),应用(或进程或线程)可以调用库。库调用使逻辑执行确定所运行的软件线程是否需要被中止(冻结)。如果是的话,那么向最近的时钟控制器(Proximate Clock Controller PCC)408发送禁止信号,(如在图4中所示)导致阻塞去往IHL 106n(并且选择性地还有EU 108b)的时钟信号。冻结信号还可以被发送到L1 I-Cache 104和/或IFAR 118。此冻结信号可以是单独的(singular)信号(诸如到L1I-Cache 104的时钟信号阻断),或者它可以产生IFAR 118的可执行代码,所述可执行代码使IFAR 118选择输出将要冻结的特定软件线程。
一旦已经满足先决条件来执行所冻结的指令,那么IFR 402就向PCC 408发布“启用”命令,并且选择性地向L1 I-Cache 104和/或IFAR 118发布“解冻”信号,允许所述指令和其线程中的其余指令通过用于该线程的IHL 106和EU 108执行。
再次参考图5,应用程序502通常直接与IFAR 118工作,所述IFAR 118调用软件线程中的每个指令。当出现异常时,诸如所需要的数据不可用,那么调用中止例程库(Pause Routines Library PRL)504。PRL 504执行所调用的文件,所述文件由线程状态确定逻辑(Thread State Determination Logic TSDL)506来执行。然后TSDL506控制IFAR 118(或作为选择为在图4中所示出的PCC 408)来在IFAR 118的控制下冻结特定的软件线程。
尽管相对于计算机处理器和软件已经描述了本发明的方面,然而应当理解的是,作为选择本发明的至少一些方面可以被实现为计算机可用介质,所述计算机可用介质包含供数据存储系统或计算机系统所使用的程序产品。用于定义本发明功能的程序可以经由各种信号运载介质递送到数据存储系统或计算机系统,所述信号运载介质包括但不限于不可写的存储介质(例如CD-ROM)、可写的存储介质(例如软盘、硬盘驱动器、读取/写入CD-ROM、光介质)以及通信介质,诸如计算机和包括以太网的电话网络。因此应当理解,这种信号运载介质当携带或编码用于指示本发明方法功能计算机可读指令时,表现了本发明的候选实施例。此外应当理解,本发明可以借助具有采用硬件、软件或如这里所述的软件和硬件的组合或其等效物的形式的装置的系统来实现。
虽然参考优选实施例已经特别示出并描述了本发明,然而本领域内技术人员应当理解,在不脱离本发明的精神和范围的情况下可以对其形式和详细进行各种改变。

Claims (14)

1.一种用于中止软件线程的方法,所述方法包括:
把指令从第一软件线程发送到处理单元中的指令排序单元(ISU);
把所述指令从所述第一软件线程发送到所述第一指令保持锁存器,所述第一指令保持锁存器来自于所述ISU中的多个指令保持锁存器;以及
有选择地冻结所述第一指令保持锁存器,其中当所述第一指令保持锁存器被冻结时,来自所述第一软件线程的指令不能被传递到处理器核心中的执行单元,并且其中所述第一软件线程的执行被冻结。
2.如权利要求1所述的方法,其中由等待寄存器来控制有选择地冻结所述第一指令保持锁存器,并且其中所述等待寄存器包含控制位用于控制多个指令保持锁存器中的每一个的冻结状态的控制位。
3.如权利要求2所述的方法,其中利用由硬件时钟计数器所定义的值来掩码所述等待寄存器。
4.如权利要求2所述的方法,其中利用由从库中调用的例程所定义的值来掩码所述等待寄存器。
5.如权利要求1所述的方法,其中通过阻塞到所述第一指令保持锁存器的时钟信号来冻结所述第一指令保持锁存器。
6.如权利要求1所述的方法,其中到所述第一指令保持锁存器的时钟信号是来自时钟控制器的时钟输出信号,并且其中来自所述时钟控制器的时钟输出信号由等待寄存器中的控制位来控制。
7.如权利要求1所述的方法,其中所述第一指令保持锁存器专用于所述处理器核心中的单个执行单元。
8.如权利要求1所述的方法,还包括:
确定用于提示有选择地冻结所述第一指令保持锁存器的条件已经结束,以使所述第一软件线程现在能够传递到所述处理器核心中的执行单元。
9.如权利要求8所述的方法,其中对另一软件线程的未完成执行是提示有选择地冻结所述第一指令保持锁存器的条件。
10.如权利要求8所述的方法,其中未完成传递预定数目的时钟周期是提示有选择地冻结所述第一指令保持锁存器的条件。
11.如权利要求8所述的方法,其中缺乏要由第一软件线程使用的必要数据是提示有选择地冻结所述第一指令保持锁存器的条件。
12.一种系统,包括:
用于把第一软件线程发送到处理单元的装置,其中所述第一软件线程来自于能够由处理器核心同时执行的多个软件线程,所述处理器核心具有多个执行单元;和
用于响应于所指定条件的发生而在不中止所述多个软件线程中的任何其它软件线程并且不向操作系统进行调用的情况下中止所述第一软件线程的装置。
13.如权利要求12所述的系统,其中在执行所述多个软件线程中的另一线程之前中止所述第一软件线程。
14.如权利要求12所述的系统,其中所述第一软件线程被中止直到已经过去预定的时间量。
CNB2006101429823A 2005-10-27 2006-10-26 用于中止软件线程的方法和系统 Expired - Fee Related CN100456228C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/260,612 US20070101102A1 (en) 2005-10-27 2005-10-27 Selectively pausing a software thread
US11/260,612 2005-10-27

Publications (2)

Publication Number Publication Date
CN1967471A true CN1967471A (zh) 2007-05-23
CN100456228C CN100456228C (zh) 2009-01-28

Family

ID=37997981

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101429823A Expired - Fee Related CN100456228C (zh) 2005-10-27 2006-10-26 用于中止软件线程的方法和系统

Country Status (2)

Country Link
US (1) US20070101102A1 (zh)
CN (1) CN100456228C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844029A (zh) * 2017-01-19 2017-06-13 努比亚技术有限公司 一种自管理的Android进程冻结和解冻的装置及方法
CN107391086A (zh) * 2011-12-23 2017-11-24 英特尔公司 改进置换指令的装置和方法
CN107783858A (zh) * 2017-10-31 2018-03-09 努比亚技术有限公司 终端冻屏的解决方法、终端和计算机可读存储介质
US10719316B2 (en) 2011-12-23 2020-07-21 Intel Corporation Apparatus and method of improved packed integer permute instruction
US11275583B2 (en) 2011-12-23 2022-03-15 Intel Corporation Apparatus and method of improved insert instructions

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8893092B1 (en) * 2010-03-12 2014-11-18 F5 Networks, Inc. Using hints to direct the exploration of interleavings in a multithreaded program
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038658A (en) * 1997-11-03 2000-03-14 Intel Corporation Methods and apparatus to minimize the number of stall latches in a pipeline
US6401195B1 (en) * 1998-12-30 2002-06-04 Intel Corporation Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US6687838B2 (en) * 2000-12-07 2004-02-03 Intel Corporation Low-power processor hint, such as from a PAUSE instruction
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US7814487B2 (en) * 2005-04-26 2010-10-12 Qualcomm Incorporated System and method of executing program threads in a multi-threaded processor
US20070074054A1 (en) * 2005-09-27 2007-03-29 Chieh Lim S Clock gated pipeline stages

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391086A (zh) * 2011-12-23 2017-11-24 英特尔公司 改进置换指令的装置和方法
US10719316B2 (en) 2011-12-23 2020-07-21 Intel Corporation Apparatus and method of improved packed integer permute instruction
US11275583B2 (en) 2011-12-23 2022-03-15 Intel Corporation Apparatus and method of improved insert instructions
US11347502B2 (en) 2011-12-23 2022-05-31 Intel Corporation Apparatus and method of improved insert instructions
US11354124B2 (en) 2011-12-23 2022-06-07 Intel Corporation Apparatus and method of improved insert instructions
CN106844029A (zh) * 2017-01-19 2017-06-13 努比亚技术有限公司 一种自管理的Android进程冻结和解冻的装置及方法
CN106844029B (zh) * 2017-01-19 2020-06-30 努比亚技术有限公司 一种自管理的Android进程冻结和解冻的装置及方法
CN107783858A (zh) * 2017-10-31 2018-03-09 努比亚技术有限公司 终端冻屏的解决方法、终端和计算机可读存储介质

Also Published As

Publication number Publication date
CN100456228C (zh) 2009-01-28
US20070101102A1 (en) 2007-05-03

Similar Documents

Publication Publication Date Title
CN100456228C (zh) 用于中止软件线程的方法和系统
EP1570352B1 (en) Method and apparatus for switching between processes
CA2508044C (en) Cross partition sharing of state information
CN101243372B (zh) 用于控制微处理器中的功率参数的设备和方法
US6260138B1 (en) Method and apparatus for branch instruction processing in a processor
US7849298B2 (en) Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US6256727B1 (en) Method and system for fetching noncontiguous instructions in a single clock cycle
US7035997B1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7707391B2 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US9652243B2 (en) Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor
KR20180036490A (ko) 로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서
US7117319B2 (en) Managing processor architected state upon an interrupt
US20040111593A1 (en) Interrupt handler prediction method and system
US6983347B2 (en) Dynamically managing saved processor soft states
US7237093B1 (en) Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US7469332B2 (en) Systems and methods for adaptively mapping an instruction cache
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes
US6304959B1 (en) Simplified method to generate BTAGs in a decode unit of a processing system

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: 20090128

Termination date: 20091126