CN101149701B - 用于多线程系统中重定向中断的方法和设备 - Google Patents

用于多线程系统中重定向中断的方法和设备 Download PDF

Info

Publication number
CN101149701B
CN101149701B CN2007101279623A CN200710127962A CN101149701B CN 101149701 B CN101149701 B CN 101149701B CN 2007101279623 A CN2007101279623 A CN 2007101279623A CN 200710127962 A CN200710127962 A CN 200710127962A CN 101149701 B CN101149701 B CN 101149701B
Authority
CN
China
Prior art keywords
thread
thread execution
processor
execution unit
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2007101279623A
Other languages
English (en)
Other versions
CN101149701A (zh
Inventor
S·布伦登
S·马里塞蒂
K·韦德
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN101149701A publication Critical patent/CN101149701A/zh
Application granted granted Critical
Publication of CN101149701B publication Critical patent/CN101149701B/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明提供了在多线程系统中重定向事件的方法和系统,该方法包括:选择第一线程执行单元作为目标来接收系统软件检测到与共享资源相关的事件的通知,并且对处理器硬件编程,使得所述通知不会被路由到共享所述资源的除所述目标之外的任何线程执行单元;接收操作系统已将第二线程执行单元变得活动的指示,其中第二线程执行单元也共享所述资源;确定第一线程执行是不活动的;取消第一线程执行单元作为目标的选择,并选择第二线程执行单元作为目标;以及对处理器硬件重新编程,使得所述通知仅会被路由到所述目标。

Description

用于多线程系统中重定向中断的方法和设备
技术领域
本公开内容一般涉及信息处理系统,更具体地说,涉及处理器系统中的错误处理。
背景技术
计算机系统中的错误处理包括错误检测和错误恢复。在错误恢复中,应该抑制错误并且计算机系统应该处于高度可用。利用在处理器、系统逻辑硬件、固件和操作系统之间协作的错误处理,计算机系统能够抑制错误,并缩短计算机系统处于不可用的时间。此外,处理器、系统逻辑硬件、固件和操作系统应该具有与彼此的接口以使错误处理期间它们之间的协作得以实现。
系统软件在本文中被定义为以特权模式执行的任何代码(包括固件代码),例如在ring 0特权级运行的任何代码。系统软件的这种定义旨在包括由单处理器系统中的单个CPU执行的固件和操作系统(OS)内核或多处理器系统中的多个CPU执行的固件和操作系统(OS)内核。因此,系统软件可以包括例如PAL和SAL代码(下文予以论述)的固件以及操作系统内核软件代码。
如本文使用的,固件系指存储在诸如只读存储器(ROM)、闪速存储器等的非易失性存储器结构中的代码例行程序。这些存储器结构即使在电源被切断时仍保存存储在其中的代码。即使将固件存储在非易失性存储器中,但是仍可以将固件复制到或影射到易失性存储器。通常,这样做是出于性能原因。
传统固件的主要应用之一是,在测试并配置易失性存储器结构之前提供当计算机系统从关机状态开机时控制计算机系统所必需的指令或例行程序。还可以在多种事件之后使用固件例行程序重新初始化或重新配置计算机系统,并处理例如系统中断的某些平台事件。
传统固件的另一个典型应用是,提供要在采用复杂指令集的处理器中执行的复杂序列。CISC(复杂指令集计算机)计算机处理器中的典型指令执行一系列操作,其中以微码的形式将定义一些更复杂的操作的微指令编码到非易失性存储区。微码定义处理器的所有或部分可执行指令集,并且还可以定义不采用软件可访问代码实现的内部操作。微码通常在制造处理器时被置于处理器内的只读存储器(ROM)中。
操作系统(OS)与固件交互以提供其中CPU可执行应用的环境。利用固件,可以将OS设计成在许多不同的处理系统上运行而无需针对每个平台变化重写OS。对于至少一个实施例,如本文使用的术语操作系统旨在广义地涵盖执行调度的任何特权软件层,包括分布在平台群集上的调度层。
发明内容
根据本发明的一方面,本发明涉及一种系统,包括:
处理器芯片,所述处理器芯片包括用于并行线程执行的多个线程上下文,并且还包括由所述线程上下文的两个或两个以上线程上下文共享的资源;
系统软件,所述系统软件进行编程将硬件事件重定向到共享所述资源的所述线程上下文的仅其中一个线程上下文;其中所述系统软件还响应操作系统已将所述多个线程上下文的其中一个线程上下文添加到所述多个线程上下文的子集的通信而对所述重定向进行编程。
根据本发明的另一方面,本发明涉及一种方法,包括:
选择第一线程执行单元作为目标来接收系统软件检测到与共享资源相关的事件的通知,并且对处理器硬件编程,使得所述通知不会被路由到共享所述资源的除所述目标之外的任何线程执行单元;
接收操作系统已将第二线程执行单元变得活动的指示,其中所述第二线程执行单元也共享所述资源;
确定所述第一线程执行不活动;
取消所述第一线程执行单元作为目标的选择,并选择所述第二线程执行单元作为目标;以及
对所述处理器硬件重新编程,使得所述通知仅会被路由到所述目标。
根据本发明的又一方面,本发明涉及一种产品,包括:
有形存储介质,所述有形存储介质具有多个机器可访问指令;
其中,当所述指令被处理器执行时,所述指令用于:
选择第一线程执行单元作为目标来接收系统软件检测到与共享资源相关的事件的通知,其中所述通知不会被路由到共享所述资源的除所述目标之外的任何线程执行单元;
接收操作系统已将第二线程执行单元变得活动的指示,其中所述第二线程执行单元也共享所述资源;
确定所述第一线程执行不活动;
取消所述第一线程执行单元作为目标的选择,并选择所述第二线程执行单元作为目标;以及
重新路由选择硬件,使得所述通知仅会送往所述目标。
附图说明
可以参考如下附图来理解本发明的实施例,附图中相似的编号指示相似的部件。这些附图无意构成限制,而是提供来说明用于在具有多个线程执行上下文的系统中重定向中断的系统、方法和机制的选择的实施例。
图1是图示一种方法的至少一个实施例的数据流程图,该方法用于在将线程执行单元添加到OS运行系统时选择一个线程执行上下文来接收多线程计算系统中共享资源的错误域的已校正机器检查中断。
图2是图示一种方法的至少一个实施例的数据流程图,该方法用于在将线程执行单元从OS运行系统移除时选择一个线程执行上下文来接收多线程计算系统中共享处理器资源的错误域的已校正机器检查中断。
图3是图示用于错误处理的多层系统的至少一个实施例的框图。
图4是根据包括点到点互连的本发明实施例的多处理器系统的框图。
图5是根据包括多节点总线通信路径的本发明实施例的多处理器系统的框图。
图6是图示能够执行所公开的技术的多线程处理器的实施例的所选硬件功能特征的框图。
图7是图示包括共享处理器资源的多线程系统的不同实施例的框图。
具体实施方式
下文论述描述了将具有多个线程执行上下文(本文中有时称为“TEC”)的系统中的机器检查中断重定向到上下文的仅其中之一、然后可以将该中断告知操作系统的方法、系统和机制的选择的实施例。本文描述的这些设备、系统和方法实施例可以结合单核或多核系统来利用。在下文描述中,提出了诸如处理器类型、引导处理、多线程环境、系统配置以及特定API(应用编程接口)参数的许多特定细节以便提供对本发明实施例的更透彻的理解。然而将认识到对于本领域人员来说,本发明也可以在没有这些特定细节的情况下实施。此外,未详细示出一些公知的结构、电路等,以避免非必要地妨碍对本发明的理解。
对于至少一个实施例,固件包括驻留在芯片上、ROM存储器中或例如闪速存储器的其他非易失性存储器中的芯片外的BIOS(基本输入/输出系统)代码和微码。在计算机系统能够运行之前,它必须在其存储器中具有操作系统(OS),以使计算机的资源能够到达并由例如多种应用程序的其他软件控制。计算机硬件具有非易失性且相对简单的自举程序来执行引导序列并从磁盘加载操作系统。通常自举程序由BIOS程序来调用。
对于至少一个其他实施例,固件包括两个主要的组件,处理器抽象层(PAL)和系统抽象层(SAL)。PAL和SAL可以一起工作(还可能连同其他固件组件,例如可扩充固件接口(EFI)一起),以便为操作系统引导提供处理器和系统的初始化。PAL和SAL还连同操作系统一起工作以执行错误处理。
PAL是抽象处理器实现的固件层-它封装了所有处理器型号的专用硬件。它封装可能基于实现而改变的那些处理器功能,以便SAL固件和操作系统软件可以保持对处理器的一致观点。PAL因此提供用于跨处理器硬件的不同实现来访问处理器资源的一致性软件接口。
SAL是将操作系统和其他较高级的软件与平台中的实现差异隔离的平台专用固件组件。SAL通常由原设备制造商(OEM)和BIOS供应商来提供。
在下文论述中,示出了特定的实施例以便说明本发明的某些功能特征。特定说明的实施例包括PAL和SAL固件组件。但是,本领域技术人员将认识到本文论述的原理可以等效地应用于其他实施例,包括不包含PAL和SAL固件组件的系统的实施例。例如,在此类实施例中,以硬件或微码执行下文描述的那些PAL功能。再者例如,可以由BIOS代码执行下文描述的那些SAL功能或也可以由硬件电路来执行下文描述的那些SAL功能。
在详细论述图1和图2之前,将论述图3、图6和图7,以便提供与图1和图2所示的方法相关的背景信息。图1是说明方法100的至少一个实施例的数据流程图,该方法用于在将线程执行单元添加到OS运行系统时选择一个线程执行上下文来接收多线程计算系统中共享资源的错误域的已校正机器检查中断。图2是说明方法200的至少一个实施例的数据流程图,该方法用于在将线程执行单元从OS运行系统移除时选择不同的线程执行上下文来接收多线程计算系统中共享资源的错误域的已校正机器检查中断。
下文论述图3以提供有关在计算系统的硬件层、固件层和软件层之间协作错误处理的实施例的信息。下文论述图6以提供有关多种类型的线程执行上下文的信息,其中可以包括SMT逻辑处理器和单线程核。然后,下文论述图7以提供有关错误域的附加信息。此后,将提出对图1和图2的详细论述。
图3图示进行协作的错误处理的系统300的至少一个实施例。系统300包括PAL 201、SAL 202和OS 203。系统300还包括处理器硬件204,它可以包括至少一个多线程(例如同步多线程或“SMT”)处理器核或至少两个单线程处理器核。系统300还包括平台硬件205。对于说明的实施例,PAL 201和SAL 202一起通称为固件。但是,其他实施例可以采用例如不包含PAL 201和SAL 202的BIOS代码和微码的固件。
对于说明的实施例的PAL和SAL层的代码或对于其他实施例的例如BIOS和微码的其他固件可以驻留在系统的一个或多个非易失性存储器或永久性存储器中。例如,代码可以驻留在闪速只读存储器(ROM)中。(下文结合图4和图5进一步详细地论述包括非易失性存储器的系统的实施例)。可以将用于这些固件层的代码影射到其他存储器装置。在下文论述中,术语PAL、SAL和OS旨在表示要由处理器执行的PAL、SAL或OS代码。
处理器硬件204表示单核或多核多线程计算机系统中的一个或多个处理器,并不限于某种处理器。处理器可以是多种不同类型的执行指令的处理器中的任何一种。例如,处理器可以是一个或多个通用处理器核,例如英特尔公司出产的
Figure S071C7962320070712D000071
处理器系列或
Figure S071C7962320070712D000072
处理器系列或其他处理器系列中的处理器或其他公司出产的其他处理器。因此,处理器可以是精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、超长指令字(VLIW)处理器或任何混合或备选处理器类型。而且,特殊用途的处理器,诸如网络或通信处理器、协处理器、嵌入式处理器、压缩引擎、图形处理器等都可以使用所公开的技术。随着集成趋势的持续和处理器变得更加复杂,监视内部性能指标并对其反应的需求会进一步增加,因此使现在公开的这些技术更加值得期待。但是,由于该技术领域中的快速技术发展,难以预测所公开的技术的所有应用,尽管它们对于执行程序序列的复杂硬件是分布广泛的。
处理器硬件204在它包括两个或两个以上线程执行上下文的意义上来说是多线程的,使得两个或两个以上线程可以并行执行。即,每个线程执行上下文中可以执行一个软件线程。例如,对于至少一个实施例,处理器硬件204是多处理器芯片、通称为芯片多处理器(“CMP”),其中单芯片封装中的多个单线程处理器核的每一个可以均并行执行多个软件线程的其中一个。
对于称为同步多线程(“SMT”)的至少一个其他实施例,处理器硬件204的一个或多个处理器核的每一个可以是使之对于操作系统和用户程序看来像是多个逻辑处理器的单个物理处理器核。对于SMT,多个软件线程可以同时在单个处理器核上处于活动并执行而无需切换。即,每个逻辑处理器维护一个完整的体系结构状态集,但是物理处理器的许多其他资源,例如高速缓存、执行单元、分支预测器、控制逻辑和总线是共享的。对于SMT,来自多个软件线程的指令因此在每个逻辑处理器上并行执行。
因此,处理器硬件204可以是单个多线程处理器,例如单个芯片封装中的SMT处理器。或者,处理器硬件204可以表示单个芯片封装中的两个或两个以上的SMT多线程处理器核。或者,处理器硬件204可以是相同的CMP芯片封装中的两个或两个以上的单线程处理器核。现在直接参考图6,以论述有关处理器硬件204的实施例的一些不同实现方案的其他细节。
图6是图示能够执行所公开的技术的多线程处理器的实施例310、350的所选硬件功能特征的框图。图6图示具有多个线程执行上下文(称为逻辑处理器)的SMT多线程环境310的选择的硬件功能特征。图6还图示多核多线程环境350的选择的硬件功能特征,其中每个线程执行上下文是独立的物理处理器核。
对于SMT环境310,使单个物理处理器304对于操作系统和用户程序看来像是多个逻辑处理器(未示出),本文中称为LP1至LPn。每个逻辑处理器LP1至LPn分别维护一个完整的体系结构状态集AS1-ASn。对于至少一个实施例,体系结构状态包括数据寄存器、段寄存器、控制寄存器、调试寄存器和大多数的型号专用寄存器。逻辑处理器LP1-LPn共享物理处理器304的大多数其他资源,例如高速缓存、执行单元、分支预测器、控制逻辑和总线。虽然此类功能特征可以被共享,但是多线程环境310中的每个线程上下文可以独立地生成下一个指令地址(并执行例如来自指令高速缓存、执行指令高速缓存或跟踪高速缓存的提取)。
因此,处理器304包括逻辑上独立的下一个指令指针和提取逻辑320,它用于提取每个线程上下文的指令,尽管这些提取可以在单个物理提取/解码单元322中实现。对于SMT或实施例,术语“线程执行上下文”至少涵盖用于线程上下文的下一个指令指针和提取逻辑320,连同用于该线程上下文的至少一些关联的体系结构状态AS。应该注意SMT系统310的线程执行上下文无需是对称的。例如,相同物理核的两个SMT线程执行上下文可以在它们各自维护的体系结构状态信息的数量上有所不同。
因此,对于至少一个实施例,多线程系统310是支持并行多线程的单核处理器304。对于此实施例,每个线程执行上下文是具有其自己的指令下一个指令指针和提取逻辑320和其自己的体系结构状态信息AS的逻辑处理器,虽然相同的物理处理器核304执行所有线程指令。对于此实施例,逻辑处理器维护其自己版本的体系结构状态,虽然可以在并行执行的线程之间共享单个处理器核的执行资源。
图6还图示多核多线程环境350的至少一个实施例。这种环境350包括两个或两个以上的单独物理处理器304a-304n,这些物理处理器304a-304n的每一个都能够执行不同的软件线程,使得能够同时进行这些不同软件线程的至少若干部分的执行。每个处理器304a至304n包括物理上独立的提取单元322,用于为其相应的线程提取指令信息。在每个处理器核304a-304n执行单个软件线程的实施例中,提取/解码单元322实现单个下一个指令指针和提取逻辑320并维护体系结构状态AS1的单个副本。但是,在每个处理器304a-304n支持多个线程上下文(例如每个处理器304a-304n是SMT核)的实施例中,提取/解码单元322为每个支持的线程上下文实现不同的下一个指令指针和提取逻辑320,并为每个支持的线程上下文维护体系结构状态的单个副本。图6中以虚线表示多处理器环境350中的附加的下一个指令指针和提取逻辑320和体系结构状态的附加副本(参见ASx和ASy)的可选特性。
因此,对于图6所示的多核CMP实施例350的至少一个实施例,每个线程执行上下文可以是处理器核304,具有驻留在单个芯片封装360中的多个核304a-304n。每个核304a-304n可以是单线程处理器核或多线程处理器核。图6中以虚线表示芯片封装360,以指示多核系统350的所示单芯片实施例仅仅是说明性的。对于其他实施例,多核系统350的处理器核304a-304n可以驻留在单独的芯片上。
无论处理器硬件204的具体实现,要足够注意处理器硬件204表示支持可并行执行多个线程的多个线程执行上下文的单个芯片封装(本文中也称为“插槽”(socket))。
现在返回图3,其中示出图3所示的系统300的组件可以紧密协作地工作以处理系统300的不同错误状况。可以由如下每个组件处理系统错误:平台硬件205、处理器硬件204、PAL 201、SAL 202和OS 203。
如果处理器硬件204或平台硬件205校正错误,则它通过相对较低优先级的中断向OS 203发出已校正事件的通知。对于处理器已校正事件,此中断称为已校正机器检查中断(CMCI)210。对于平台已校正事件,此中断称为已校正平台错误中断(CPEI)211。(对于至少一个实施例,OS 203可以选择禁用这些中断210、211,而是以周期性地轮询固件来收集有关已校正错误事件的信息)。
有关已校正(corrected)错误中断的生成和处理的进一步信息可以参阅
Figure S071C7962320070712D000101
Architecture Software Developer′s Manual-第2卷:System Architecture(系统体系结构),版本2.2,2006年的第5.8.3.8节和第13.3.1节。另外的信息还可以参阅
Figure S071C7962320070712D000102
ProcessorFamily System Abstraction Layer Specification,2003年的第4.2节和
Figure S071C7962320070712D000103
Processor Family Error Handling Guide,2004年的第2.5.1节和笫3.3节。这些每一个参考文献均可从英特尔公司获取。
应该理解如本文使用的术语“已校正错误”包括范围广泛的类型的硬件事件。至少,“已校正错误”是已经被检测到的错误。除了检测外,还已经执行某些动作以修正此错误。可能的是所执行的动作促使错误的完全校正,由此处理可以继续而不会有已校正的错误产生的任何后续结果。但是对于其他实施例,“已校正错误”可能是被部分校正或可能已被登记或标记以供后来校正。例如对于至少一个实施例,可以检测奇偶性或ECC(纠错码)错误,但是并非立即校正错误,而是可以将标记关联到与出错的奇偶性/ECC码关联的数据,以便为后来的处理指示已将该数据“隔离”。
对于至少一个实施例,当错误是威胁损害机器的体系结构状态或可能导致数据破坏的错误时,在处理器硬件204检测到硬件无法直接校正的错误时,它可以生成硬件事件或信号212,称为机器检查中止(MCA)。MCA事件212将控制传递到固件。
PAL 201和SAL 202包括错误处理例行程序。可以将PAL201层无法校正的错误传递到SAL 202(参见MCA 216)。SAL 202的错误处理例行程序可以使用PAL 201过程集从处理器或平台获取附加信息。图3图示对于至少一个实施例,PAL 201与SAL 202之间的接口可以是API(应用编程接口),它是定义如何调用服务的编程中的一组调用约定。更具体地说,PAL 201和SAL 202之间的接口包括用于在两个层之间传送事件的机制。
如果对于处理器硬件204或平台硬件205无法校正的错误而将控制传递到PAL和SAL错误处理例行程序,则它们校正它们能够校正的任何错误。处理器已检测错误可以由PAL 201来校正,而平台已检测错误可以由SAL 202来校正。
固件处理程序校正错误,然后恢复被中断的上下文的执行。这些固件已校正错误无需任何用于错误处理的OS干预。但是,可以将它们告知OS 203,以便OS 203能够利用有关已校正错误的信息来用于可靠性目的(下文对此予以论述)。将固件层校正的错误作为CMCI213(如果已由PAL 201校正)或CPEI 214(如果已由SAL 202校正)用信号通知OS 203。同样,OS 203也可以选择禁用这些中断213、214,而是以轮询固件来获取该信息。
可以由OS 203将处理器硬件204和平台硬件205中的已校正错误记录在NVRAM中或盘上。对于提供高可靠性的系统,OS 203可以选择在接收到已校正错误指示时主动动作。例如,对于至少一个实施例,OS 203可以采用预测故障分析(PFA)算法,它解释过去的已校正错误的历史,并尝试将这些实例与特定系统组件相关。这样使OS 203能够将出错的组件置于离线状态,并因此防止出错的组件中的严重错误导致整个系统停机的潜在故障情况。
另一方面,如果错误是固件无法校正的,则将控制传递到OS 203以进行进一步的错误处理(参见MCA 215)。即,对于SAL 202的错误处理例行程序未校正的错误,执行从SAL 202的错误处理例行程序转移到或切换到OS 203的错误处理例行程序。
如果将控制传递到OS 203以进行错误处理,则OS 203校正它能够处理的这些错误,然后将控制返回到被中断的上下文、切换到新上下文或重启系统200。
现在参考图7以进一步论述共享资源,因为它们与多线程系统中的错误处理相关。图7是图示包括共享资源的不同的多线程系统600、610、650的框图。第一系统600一般性地示出共享资源608的两个核602、604(它们可以是单线程或多线程核)。核602、604支持软件线程的并行执行。资源608可以是在多线程系统中的线程上下文之间共享的任何资源,包括共享高速缓存、DRAM或其他存储器、共享总线接口等。图7中的双箭头和点划线是要说明共享资源608的布置可以是在芯片封装(或“插槽”)内(参见共享资源608的实线框)或可以可选地驻留在插槽外(参见共享资源608的虚线框)。
为了示例的简化,结合图7的特定示例系统610和650论述共享资源608的特定实施例。图7所示的共享资源608的特定实施例包括共享数据缓冲器630和共享总线接口615、655。但是,这些图示不应该视为限制。图7所示的共享资源608可以是在线程上下文内或线程上下文之间共享的任何资源。
而且为了简化,图7所示的多线程系统600、610、650是CMP系统。但是,本领域技术人员将认识到任何其他共享资源可等效地应用于图7的论述,正如其他类型的多线程系统(例如提供两个或两个以上逻辑处理器来支持多个软件线程的并行执行的单核SMT系统)。
图7图示包括两个处理器核620、622的第一系统610和包括两个处理器核624、626的第二系统650。第一系统610的两个核620、622共享数据缓冲器630,而第二系统650的两个核624、626各分别具有专用的数据缓冲器632、634。数据缓冲器630、632、634可以是任何类型的数据缓冲器,包括队列、缓冲器、高速缓存或任何其他数据存储结构。为了说明的简化,图7的数据缓冲器630、632、634示出为高速缓存,虽然本领域技术人员将认识到图示的这些特定实施例不应视为限制。
图7还图示第一系统610的处理器核620、622共享互连615。相似地,第二系统650的两个处理器核624、626共享互连650。图7所示的互连610、650可以是任何类型的通信路径,包括多节点总线或点到点互连,或任何其他类型的通信路径,包括无线互连。可以利用互连610、650在系统的任何处理部件之间通信。因此,互连610、650可以是内部通信路径(例如内部总线)或外部通信路径(例如外部点到点互连)。
共享资源的已校正错误可能影响多于一个线程执行上下文。例如,系统610的共享高速缓存630中的已校正错误可能影响核1620和核2622上运行的线程。在传统的单核/单线程系统中,资源与线程执行上下文之间有1∶1的关系。如果资源(例如高速缓存或翻译后援缓冲器上发生错误,则将关联的CMCI递交到该资源所在的核。
但是,在诸如SMT系统或CMP系统(图7所示的610、650)的多线程系统中,此方案变得较为复杂。假定OS的实例在核620、622的每一个上运行,可以由核620、622的每一个将例如高速缓存630的共享资源的CMCI报告到OS。因此,OS可能接收相同资源的多个已校正机器检查中断。这种方法对关联的线程执行上下文保留共享资源上的错误与对应的CMCI中断之间的1∶1的关系。但是,与此方法关联的无效率性在于,对应于每个已校正错误事件生成有多个CMCI中断(对应于每个共享线程执行上下文)。该方法可能导致不必要的OS开销,尤其是对于可能将大量核和线程集成在相同硅片上的将来的处理器体系结构。
该组共享资源的执行上下文在本文中称为“错误域”。图7图示两个系统610、650具有不同的错误域,尽管系统610、650都具有共享单个插槽的两个核。
对于图7所示的系统610、650,用于共享总线接口615和655的错误域各包括两个核。用于总线接口615的错误域包括核1620和核2622,而用于总线接口655的错误域包括核1624和核2626。
因为系统650的核624、626均具有相应的专用高速缓存632、634,所以每个高速缓存的错误域仅包括一个核。因此,保留用于已校正高速缓存错误的1∶1报告方案,而无需为报告有关高速缓存632、634的CMCI中断选择特定的核。
相比之下,系统610中的共享高速缓存630被两个处理器核620、622共享。因此,共享高速缓存630的错误域包括多个线程执行上下文。对于系统610的单线程核的CMP实施例,共享高速缓存630的错误域包括两个线程执行上下文:核1 620和核2 622。
本文论述的是用于将多线程系统中的共享资源的错误报告给该共享资源的错误域中的线程执行上下文的仅其中一个的机制。这样做的一个可能方法(包括随意选择要向其递交CMCI中断的固定线程上下文)相对简单化,并且并未充分解决某些高可靠性计算的问题。
例如,如果对于RAS(可靠性、可用性、可服务性)问题或许可证管理问题,需要将选择来接收CMCI的预定线程执行上下文置于离线状态,则可能没有任何机制能够确保将用于错误的CMCI重定向到错误域中的另一个线程执行上下文。在此场合中,当共享资源上发生后续已校正错误时,可能未通知OS。
如果操作系统的实例当前未运行在该固定的线程执行上下文上,则会出现这种方法(即选择固定线程执行上下文来接收错误域的CMCI中断)的另一个潜在缺点。OS的运行系统是OS的实例运行所在的系统的总线程执行上下文的子集。处于运行系统中的线程执行上下文在本文中称为处于“活动”,而未处于运行系统中的那些线程执行上下文(而是处于例如会聚环(rendezvous loop)中)在本文中称为处于“不活动”。
在线程执行上下文不在运行集中但是已被指定为CMCI报告的预定线程执行的情况中,当共享资源上出现已校正错误时,将不通知OS。例如如果由于负载平衡或按需提供容量的原因、RAS考虑或由于限制能够在给定系统上运行的OS实例的数量的OS软件的许可约束,而从OS运行系统移除了线程执行上下文,则可能发生这种情况。
图1是图示至少一个方法100的控制和数据流程的数据流程图,该方法用于选择一个线程执行上下文来接收错误域的已校正错误机器中断。对于至少一个实施例,在引导处理期间执行方法100。
如图1所示,方法100的多个部分可以由硬件或PAL固件201来执行,而一些其他部分可以由SAL固件202来执行,以及再一些其他部分可以由OS 203来执行。但是,应该理解,对于方法100的至少一个实施例,在方法100期间PAL 201和SAL 202所执行的动作对于OS 203是透明的。
即,如果将OS 203设计为对单线程系统正确地工作,则将方法100设计为使OS能够执行相同的功能而无需修改,即便底层实现是多线程系统(它是单个或多个SMT核或多个单线程CMP核)。因此,下文论述具体地着重于图1所示的方法100的一些部分,这些部分涉及为确保选择作为特定错误域的CMCI接收方的线程上下文确实具有运行于其上的OS 203的实例而在PAL 201与SAL 202之间实施的通信机制。
更具体地来说,应该理解图1图示用于在硬件和/或固件之间提供通信路径以确保在不同的底层硬件配置之间报告错误的一致性的一般性方案的一个特定实施例。虽然下文对图1的论述着重于一个特定实施例一已校正机器检查错误的报告-但是本领域技术人员将认识到该方法100还可以应用于对于底层硬件实现的特性具有期望维持OS透明性的任何其他实例。
更确切地来说,还应该理解,对于图1所示的实施例,SAL 202知道被切换以加入OS运行系统(参见图1的唤醒信号131)的线程执行上下文,并且还知道从OS运行系统移除(参见图2的移除信号132)的线程执行上下文。但是,因为由至少一个抽象层从底层硬件移除SAL 202,所以SAL 202不知道哪个处理器资源被共享,以及哪些线程执行上下文共享它们。换言之,SAL 202没有关于共享资源错误域的任何信息。
相比之下,PAL 210具有关于共享处理器资源的错误域的信息。此外,PAL 201还具有关于将CMCI中断重定向到特定线程执行单元的实现专用机制的信息。
因此,图1和图2图示协作方法100、200,这些方法用于SAL202在将线程执行单元添加到OS运行系统或从其中剔除线程执行单元时通知PAL 201。这使PAL 201能够避免选择不具有当前运行于其上的OS的实例的(用于CMCI通知的)线程执行。
图1图示在方法100期间维护的某些数据。例如,图1图示PAL201维护对于x个共享资源错误域的每一个的线程执行上下文的列表。因此,图1图示列表170o-170x,其中每个列表170对应于不同错误域的线程执行上下文的列表,每个错误域与处理器上的特定共享资源关联。已知列表170o-170x的其中之一中列出的每个线程执行上下文是操作系统的运行系统的一部分(例如线程上下文处于“活动”,因为它具有当前运行于其上的OS实例)。对于至少一个实施例,每个列表170是维护每个错误域的潜在目标的列表的全局(例如封装范围的)数据结构。可以将列表170的数据结构维护在任何存储器存储位置中,包括存储器和/或寄存器,只要该存储位置对于封装中的所有线程执行上下文是可访问的(基于更新目的而访问)即可。
除了每个列表170外,PAL 201还可以为每个列表维护一个指定为用于接收特定共享资源上发生的CMCI的“目标”线程执行上下文的特定线程执行上下文。每个列表170的目标线程执行上下文在图1中被指定为对应错误域的“目标”172。当然,在某些实例中,特定错误域的目标172可能是未定义的(例如OS运行集中没有任何共享特定资源的线程执行单元)。
图1图示方法100开始于系统重启101。图1图示响应在框101检测到重启事件,执行开始于PAL 201中的入口点。应该注意,在重启101处,对应于不同的共享资源的列表170a-170n都是空的,因为OS 203尚未被引导。但是,在框102处,PAL 201可以为每个列表170预先选择任意的缺省目标172。然后处理进行到框103。
在框103处,PAL 201的引导过程继续。在引导过程期间,PAL201执行处理器测试和初始化。作为此过程的一部分,在框103处,PAL 201检测特定处理器实现的线程执行上下文,并将它们指示给SAL 202。从框103,PAL转移到SAL 202中的入口点122。
在框122处,SAL 202执行平台测试和初始化。作为此处理122的一部分,SAL 202从框103处由PAL 201向其指示的系统的线程执行上下文中选择自举处理器(BSP)。在框124处,将除了BSP外的所有其他线程执行上下文置于会聚状态。在会聚状态中,计算机系统中除一个(BSP)外的所有线程执行上下文进入空闲状态。会聚环中的线程执行上下文保持空闲,直到被OS启动为止(参见框130)。
在框122处选择自举处理器之后,SAL将事件通信123到PAL201。对于至少一个实施例,此通信123采用对实现专用PAL过程的API调用的形式。仅通过示例形式,此过程的示范API过程调用可以具有如下特征:
自变量:
remove/add 0从活动的线程执行上下文的列表中移除TEC,1将TEC添加到活动的线程执行上下文的列表。
返回:
1如果SAL请求从活动的线程执行上下文的列表中移除TEC,则返回1,并且这导致活动的线程执行上下文的列表变为空(TEC都将不会接收到发生的共享错误的信号通知)。
0、-2、-3分别表示成功完成、无效自变量、完成但有错误
不管通信123的具体实现,应该一般性地理解,PAL 201接收已发生事件(例如选择线程执行上下文作为BSP)的通信123。为了通知PAL 201已选择线程执行上下文作为BSP并因此具有资格作为CMCI目标172,SAL 202可以执行对自举处理器(BSP)上的PAL 201的回调123,且附带将该自举处理器“add(添加)”到对应的共享错误报告列表的指示。
响应“add”回调通信123,PAL 201为每个适合的共享资源列表170更新104它的跟踪数据,以将BSP添加到列表。处理从框104进行到框105。
在块105处,PAL 201更新每个适合的列表的目标172,以便在自举处理器不是框102处选择为缺省目标的线程执行上下文的情况下将自举处理器指示为目标。
在框105处,因此可以更新为每个错误域指定的目标TEC。任何时间,在框105处更新目标172,PAL 201可以对底层硬件重新编程以将CMCI中断仅路由(本文中也称为“重定向”)到指定的目标TEC。一旦建立了此路由,则可以完全在硬件中处理将CMCI用信号通知到目标TEC,而无需固件干预(直到目标和路由需要更改的情况下/目标和路由需要更改时为止)。因此,此重定向105具有将CMCI中断仅路由到错误域中的单个TEC而非路由所有TEC的效果。
当在框130处由OS 203唤醒系统的其他线程执行上下文或使之处于“活动”时,在框126处SAL 202检测到唤醒信号131。用于唤醒线程执行上下文的处理从框126进行到框104。在框104处,SAL 202对PAL 201进行回调,以便将该唤醒线程执行上下文“add(添加)”到适合的共享错误报告列表170o-170x
响应“add”回调,PAL 201执行唤醒线程执行上下文的框104。在框104处,PAL 201为每个适合的共享资源列表170更新它的跟踪信息。然后处理进行到框105。在框105处,如果当前未选择任何活动的线程执行单元作为错误域的目标,则PAL将唤醒线程执行上下文设置为给定的共享资源错误域的目标172。同样,PAL 201还在框105处对底层硬件重新编程,以便于对新选择的目标的CMCI信号通知。
对引导处理期间OS唤醒130的每个线程执行上下文重复上文的处理(126、104、105),因此从会聚环中移除被唤醒的TEC,并将其添加到OS运行系统中,从而它现在处于“活动”。
图2是图示方法200的控制和数据流程的至少一个实施例的数据流程图,该方法在从OS运行系统移除线程执行单元时,选择系统运行时处理期间错误域的目标线程执行上下文。一般地来说,图2图示OS 203可以通过向SAL 202指示应该将线程执行单元置于离线并将其发送回会聚环-它变成“不活动”来从其运行系统移除该线程执行上下文。当此情况发生时,PAL 201相应地应该从它的列表170中移除离线的TEC,并应该不再将该离线的TEC指定为任何错误域的目标。
图2图示可以在系统运行时期间执行该方法,并在框502处开始。从框502,当OS 203向SAL 202用信号通知129应该从OS运行系统移除TEC并应该将其移到SAL的会聚环124时,触发进一步的处理。图2图示OS将移除信号132发送129到SAL 202。可以由OS 203发送此移除信号132,例如当OS 203的调度器确定没有负载可用于在TEC上执行或当OS 203将TEC停顿而为将该TEC置于离线作准备(例如由于RAS或许可考虑)时发送移除信号132。
响应移除信号132,SAL对PAL过程进行回调,以便从对应的共享错误报告列表170o-170x中删除已移除的TEC。回调通信523可以是沿上文结合图1的通信123论述的线路的API调用。对于“delete(删除)”回调,SAL 202可以提供“0”作为移除/添加参数,以指示应该从适合的共享错误报告列表170o-170x中移除TEC。
响应“delete”回调通信523,PAL 201为每个适合的共享资源列表170更新114它的跟踪数据,以便从列表中删除已移除的TEC。处理从框114进行到框115。
在框115处,PAL 201检查每个适合的列表的目标172,以便确定被移除的TEC是否被指定为任何错误域的目标172。如果正在从OS运行系统中移除的TEC当前指示为任何给定共享资源的目标172,则在框115,PAL 201从列表170中选择不同的TEC作为该列表170的目标172。同样,PAL201还对硬件重新编程,以向新目标TEC用信号通知错误域的CMCI。以此方式,PAL 201确保将向共享资源报告的CMCI向作为OS系统运行时的一部分的TEC报告。
当在框129处由OS 203从运行系统移除系统中的其他线程执行上下文时,在框526处SAL 202检测到移除信号132。用于移除线程执行上下文的处理从框526进行到框114。在框114处,SAL 202对PAL 201进行回调,以便从适合的共享错误报告列表170o-170x“delete(删除)”该唤醒线程执行上下文。在框115处,取消已移除的TEC作为目标172的资格,并相应地对硬件重新编程。
虽然未在图2中图示,但是本领域技术人员将认识到在运行时期间,可以由OS 203从会聚环124中移除线程执行上下文,以便将其添加到OS运行系统(包括任何一个先前被移除的线程执行上下文)。在此类情况中,当从会聚环中移除被唤醒的TEC,并将其添加到OS运行系统中而处于“活动”时,执行上文结合图1论述的处理(126、104、105),以便更新列表170o-170x,并可能地更新目标172。
图5是适于实现本发明的计算机系统500的至少一个实施例的框图。公开的计算机系统500的实施例包括经由处理器总线520耦合到系统逻辑530的一个或多个处理器510。系统存储器540经由总线550耦合到系统逻辑520。非易失性存储器570和一个或多个外围设备580(1)-580(j)(通称为设备580)经由外围总线560耦合到系统逻辑530。外围总线560表示例如一个或多个外围组件互连(PCI)总线、工业标准体系结构(ISA)总线、扩充ISA(EISA)总线和相当的外围总线。非易失性存储器570可以是静态存储器装置,例如只读存储器(ROM)或闪速存储器。外围设备580包括例如键盘、鼠标或其他指向装置、例如硬盘驱动器和数字视频光盘(DVD)的海量存储装置、显示器等。与系统逻辑530一起的这些装置定义了系统500的计算平台。
对于公开的系统500的实施例,至少一个处理器510可以执行存储在系统存储器540中的代码或例行程序。可以将操作系统(OS)的代码存储在系统存储器540中。处理器还执行来自非易失性存储器570的代码。可以将包括PAL和SAL的固件存储在非易失性存储器570中。
系统逻辑530可以是芯片组或芯片组的一部分。系统逻辑530可以与处理器370、380通信,并控制处理器510与存储器540之间的交互。对于至少一个实施例,系统逻辑530经由多节点总线、例如前端总线(FSB)520与处理器510通信。
可以采用许多不同系统类型来实现实施例。现在参考图4,其中示出根据本发明另一个实施例的多处理器系统的框图。如图4所示,多处理器系统是点到点互连系统,并且包括经由点到点互连450耦合的第一处理器470和第二处理器480。如图4所示,处理器470和480的每个处理器都可以是多核处理器,包括第一和第二处理器核(即处理器核474a和474b和处理器核484a和484b)。
图4所示的系统400可以具有集线器体系结构。集线器体系结构可以包括集成在每个处理器470、480中的集成的存储器控制器集线器、存储器控制器集线器(MCH)472、482。芯片组490可以提供对图形和AGP的控制。
因此,第一处理器470还包括存储器控制器集线器(MCH)472和点到点(P-P)接口476和478。相似地,第二处理器480包括MCH 482和P-P接口486和488。如图4所示,MCH 472和482将处理器耦合到相应的存储器,即存储器432和存储器434,它们可以是本地连接到相应处理器的主存储器的一部分。
虽然在图4中示出为集成到处理器470、480中,但是存储器控制器集线器472、482无需一定如此集成。对于至少一个备选实施例,MCH 472和482的逻辑可以分别对于处理器470、480是外部的。对于此类实施例,可以将实施MCH 472和482的逻辑的一个或多个存储器控制器分别耦合在处理器470与存储器432和处理器480与存储器、434之间。对于此类实施例,例如存储器控制器可以是单独的逻辑或者可以集成到芯片组490中。
可以经由P-P互连452和454分别将第一处理器470和第二处理器480耦合到芯片组490。如图4所示,芯片组490包括P-P接口494和498。而且,芯片组490还包括将芯片组490与高性能图形引擎438耦合的接口492。在一个实施例中,可以使用高级图形端口(AGP)总线439将图形引擎438耦合到芯片组490。AGP总线439可以符合加州圣他克拉拉的英特尔公司在1998年5月4日发布的加速图形端口接口规范版本2.0(Accelerated Graphics Port Interface Specification,Revision2.0)。或者点到点互连439可以耦合这些组件。
又可以经由接口496将芯片组490耦合到第一总线416。在一个实施例中,第一总线416可以是1995年6月提交的PCI本地总线规范,生产版本,修订版本2.1(PCI Local Bus Specification,ProductionVersion,Revision2.1)定义的外设互连(PCI)总线,或诸如PCI Express总线的总线或另外的第三代输入/输出(I/O)互连总线,虽然本发明的范围并不局限于此。
如图4所示,可以将多种I/O装置414耦合到第一总线416,以及将第一总线416耦合到第二总线420的总线桥418。在一个实施例中,第二总线420可以是低引脚计数(LPC)总线。可以将多种装置耦合到第二总线420,包括例如键盘/鼠标422、通信装置426和非易失性数据存储单元428。对于至少一个实施例,非易失性数据存储单元可以包括代码430,包括PAL和SAL的代码。而且,还可以将音频I/O424耦合到第二总线420。注意其他体系结构也是可能的。例如,不实现图4的点到点体系结构,系统而是可以实现多节点总线或另一种此类体系结构。
可以在硬件、软件、固件或此类实现方法的组合中实现本文公开的机制的实施例。本发明的实施例可以实现为可编程系统上执行的计算机程序,该可编程系统包括至少一个处理器、数据存储系统(包括易失性和非易失性存储器和/或存储部件)、至少一个输入装置和至少一个输出装置。
可以将程序代码应用于输入数据以执行本文描述的功能并生成输出信息。相应地,本发明的备选实施例还包括机器可访问介质,该机器可访问介质包含用于执行本发明的操作的指令或包含定义本文描述的结构、电路、设备、处理器和/或系统特征的设计数据(例如HDL)。此类实施例也可以称为程序产品。
此类机器可访问介质可以包括但不限于机器或装置制造或形成的有形粒子布置,包括诸如硬盘的存储介质、包括软盘、光盘、压缩光盘只读存储器(CD-ROM)、压缩光盘可写(CD-RW)和磁光盘的任何其他类型的盘、诸如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦写可编程只读存储器(EPROM)、闪速存储器、电可擦写可编程只读存储器(EEPROM)的半导体装置、磁卡或光卡、或者适用于存储电子指令的任何其他类型的介质。
可以采用公知的方式将输出信息应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器的处理器的任何系统。
可以采用高级过程或面向对象的编程语言来实现这些程序以与处理系统通信。如果期望的话,还可以采用汇编或机器语言来实现这些程序。事实上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况中,该语言可以是编译或解释的语言。
虽然示出和描述了本发明的具体实施例,但是对于本领域技术人员来说,显然在不背离所附权利要求的范围的前提下可以进行更改和修改。例如上文就用于将CMCI中断重定向到错误域中的单个TEC的机制论述的实施例(其中TEC是在OS的运行系统中以及该机制对于OS是透明的)可以延伸应用于实现子插槽分区(sub-socketpartitioning)的系统。对于此类系统,可以为跨分区的共享资源指定多于一个的“目标”TEC。此类实施例的一个示例可以包括从插槽到计算机系统的其余部分的链路或总线接口。对于此类实施例,在图1的框104处,当新TEC被添加到OS运行系统中时,PAL 201确定新TEC的分区中的TEC是否已作为目标建立。如果不是,则即便已将一个目标TEC指定为共享资源的目标,只是该目标TEC在其他分区中,在框104处PAL 201仍可以将该新添加的TEC指定为该分区的目标。这导致每个错误域的多个TEC,但是对于该错误域的每个分区仅有一个TEC。当然,对于此类实施例,实现CMCI路由的硬件也需要支持将CMCI发送到多个目标TEC(即发送到多个分区的一个TEC)。
在备选实施例中,例如还可以将上文论述的概念应用于其他类型的硬件事件,例如其他类型的中断。
对于至少一个备选实施例,例如还可以将本文论述的由固件处理的重定向功能改为在硬件中实现。
相应地,本领域技术人员将认识到在更广的方面在不背离本发明的前提下可以进行更改和修改。所附权利要求将落在本发明真正范围内的所有此类更改和修改涵盖在其范围内。

Claims (23)

1.一种用于重定向事件的系统,包括:
处理器芯片,所述处理器芯片包括用于并行线程执行的多个线程上下文,并且还包括由所述线程上下文的两个或两个以上线程上下文共享的资源;
装置,所述装置进行编程将硬件事件重定向到共享所述资源的所述线程上下文的仅其中一个线程上下文;
其中所述装置还响应通信而对所述重定向进行编程,所述通信为操作系统已将所述多个线程上下文的其中一个线程上下文添加到所述多个线程上下文的子集的通信。
2.如权利要求1所述的系统,其特征在于:
所述装置包括对所述重定向进行编程的第一层,并且还包括提供所述通信的第二层。
3.如权利要求1所述的系统,还包括:
耦合到所述处理器芯片的DRAM存储器模块。
4.如权利要求1所述的系统,其特征在于:
所述处理器芯片还包括提供用于同时多线程处理的两个或两个以上逻辑处理器的单个核。
5.如权利要求1所述的系统,还包括:
多个处理器核。
6.如权利要求1所述的系统,其特征在于,
共享的资源是数据缓冲器。
7.如权利要求1所述的系统,其特征在于:
共享的资源是互连。
8.如权利要求1所述的系统,还包括:
数据结构,所述数据结构保存共享所述资源的两个或两个以上线程上下文中活动的线程上下文的列表,其中所述装置维护所述列表。
9.如权利要求2所述的系统,其特征在于:
所述第二层还经由过程调用将添加的线程上下文传送到所述第一层。
10.如权利要求9所述的系统,其特征在于:
所述过程调用定义为包括传送到所述第一层的参数,所述参数通知已从所述子集移除所述多个线程上下文的其中一个线程上下文。
11.如权利要求1所述的系统,其特征在于:
所述装置还为共享所述资源的线程上下文的其中一个线程上下文的重定向进行选择。
12.如权利要求8所述的系统,其特征在于:
所述装置还从所述列表中选择所述重定向的目标。
13.如权利要求6所述的系统,其特征在于,
所述共享资源是高速缓存。
14.如权利要求7所述的系统,其特征在于,
所述共享资源是总线接口。
15.一种用于在多线程系统中重定向事件的方法,包括:
选择第一线程执行单元作为目标来接收系统软件检测到与共享资源相关的事件的通知,并且对处理器硬件编程,使得所述通知不会被路由到共享所述资源的除所述目标之外的任何线程执行单元;
接收操作系统已将第二线程执行单元变得活动的指示,其中所述第二线程执行单元也共享所述资源;
确定所述第一线程执行是不活动的;
取消所述第一线程执行单元作为目标的选择,并选择所述第二线程执行单元作为目标;以及
对所述处理器硬件重新编程,使得所述通知仅会被路由到所述目标。
16.如权利要求15所述的方法,其特征在于:
一个或多个附加线程执行单元共享所述资源。
17.如权利要求15所述的方法,还包括:
接收操作系统已将所述第二线程执行单元变得不活动的指示;
取消所述第二线程执行单元作为目标的选择;以及
对所述处理器硬件重新编程,使得所述通知不会被路由到所述第二线程执行单元。
18.如权利要求15所述的方法,还包括:
检测所述共享资源上的事件;以及
生成所述通知。
19.如权利要求18所述的方法,其特征在于:
所述事件是发生错误;以及
所述方法还包括校正所述错误。
20.一种用于在多线程系统中重定向事件的装置,包括:
用于选择第一线程执行单元作为目标来接收系统软件检测到与共享资源相关的事件的通知的部件,其中所述通知不会被路由到共享所述资源的除所述目标之外的任何线程执行单元;
用于接收操作系统已将第二线程执行单元变得活动的指示的部件,其中所述第二线程执行单元也共享所述资源;
用于确定所述第一线程执行是不活动的部件;
用于取消所述第一线程执行单元作为目标的选择并选择所述第二线程执行单元作为目标的部件;以及
用于重新路由选择硬件使得所述通知仅会送往所述目标的部件。
21.如权利要求20所述的装置,还包括:
用于接收操作系统已将所述第二线程执行单元变得不活动的指示的部件;
用于取消所述第二线程执行单元作为目标的选择的部件;以及
用于对处理器硬件重新编程使得所述通知不会被路由到所述第二线程执行单元的部件。
22.如权利要求20所述的装置,还包括:
用于检测所述共享资源上的事件的部件;以及
用于生成所述通知的部件。
23.如权利要求22所述的装置,还包括:
用于校正错误的部件;
其中所述检测的事件是错误。
CN2007101279623A 2006-06-29 2007-06-29 用于多线程系统中重定向中断的方法和设备 Expired - Fee Related CN101149701B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/478797 2006-06-29
US11/478,797 US7721148B2 (en) 2006-06-29 2006-06-29 Method and apparatus for redirection of machine check interrupts in multithreaded systems

Publications (2)

Publication Number Publication Date
CN101149701A CN101149701A (zh) 2008-03-26
CN101149701B true CN101149701B (zh) 2010-09-08

Family

ID=38878318

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101279623A Expired - Fee Related CN101149701B (zh) 2006-06-29 2007-06-29 用于多线程系统中重定向中断的方法和设备

Country Status (2)

Country Link
US (1) US7721148B2 (zh)
CN (1) CN101149701B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802073B1 (en) * 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US8296522B2 (en) 2007-12-20 2012-10-23 Intel Corporation Method, apparatus, and system for shared cache usage to different partitions in a socket with sub-socket partitioning
US8151081B2 (en) * 2007-12-20 2012-04-03 Intel Corporation Method, system and apparatus for memory address mapping for sub-socket partitioning
US8635380B2 (en) 2007-12-20 2014-01-21 Intel Corporation Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning
US8370508B2 (en) 2007-12-20 2013-02-05 Intel Corporation Method, system and apparatus for main memory access subsystem usage to different partitions in a socket with sub-socket partitioning
GB2455010B (en) * 2008-01-22 2012-02-01 Ibm An apparatus and a method for controlling an error handling procedure in a digital circuit
US20100161721A1 (en) * 2008-08-27 2010-06-24 Craig Bolon Providing threaded context in web application software
TW201025138A (en) * 2008-11-28 2010-07-01 Ibm Real-time signal handling in guest and host operating systems
US8843927B2 (en) * 2009-04-23 2014-09-23 Microsoft Corporation Monitoring and updating tasks arrival and completion statistics without data locking synchronization
US8468332B2 (en) * 2009-06-13 2013-06-18 Kinglite Holdings Inc. Dynamic link loading in extensible firmware interface compliant systems
US20120265872A1 (en) * 2011-04-18 2012-10-18 Cox Communications, Inc. Systems and Methods of Automatically Remediating Fault Conditions
US20130332778A1 (en) * 2012-06-07 2013-12-12 Vmware, Inc. Performance-imbalance-monitoring processor features
US9842015B2 (en) * 2013-09-27 2017-12-12 Intel Corporation Instruction and logic for machine checking communication
US9864603B2 (en) * 2014-09-26 2018-01-09 Intel Corporation Instruction and logic for machine check interrupt management
US10013279B2 (en) * 2015-07-28 2018-07-03 International Business Machines Corporation Processing interrupt requests
US10318368B2 (en) * 2016-05-31 2019-06-11 Intel Corporation Enabling error status and reporting in a machine check architecture
US10218593B2 (en) * 2016-08-23 2019-02-26 Cisco Technology, Inc. Identifying sources of packet drops in a service function chain environment
US11061753B2 (en) * 2018-03-29 2021-07-13 Advanced Micro Devices, Inc. Platform first error handling
US11080122B2 (en) 2019-09-19 2021-08-03 International Business Machines Corporation Software-invisible interrupt for a microprocessor

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US662260A (en) * 1898-10-19 1900-11-20 William H Fauber Crank-hanger.
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
US6574720B1 (en) * 1997-05-30 2003-06-03 Oracle International Corporation System for maintaining a buffer pool
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6636991B1 (en) * 1999-12-23 2003-10-21 Intel Corporation Flexible method for satisfying complex system error handling requirements via error promotion/demotion
US6622260B1 (en) 1999-12-30 2003-09-16 Suresh Marisetty System abstraction layer, processor abstraction layer, and operating system error handling
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US6948094B2 (en) * 2001-09-28 2005-09-20 Intel Corporation Method of correcting a machine check error
US20030120791A1 (en) * 2001-12-20 2003-06-26 Weber David M. Multi-thread, multi-speed, multi-mode interconnect protocol controller
US20030225816A1 (en) * 2002-06-03 2003-12-04 Morrow Michael W. Architecture to support multiple concurrent threads of execution on an arm-compatible processor
US7275180B2 (en) * 2003-04-17 2007-09-25 International Business Machines Corporation Transparent replacement of a failing processor
US7200772B2 (en) * 2003-04-29 2007-04-03 Intel Corporation Methods and apparatus to reinitiate failed processors in multiple-processor systems
US20050015672A1 (en) * 2003-06-25 2005-01-20 Koichi Yamada Identifying affected program threads and enabling error containment and recovery
US7257734B2 (en) * 2003-07-17 2007-08-14 International Business Machines Corporation Method and apparatus for managing processors in a multi-processor data processing system
US20050210472A1 (en) * 2004-03-18 2005-09-22 International Business Machines Corporation Method and data processing system for per-chip thread queuing in a multi-processor system
US20050246461A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
US7779238B2 (en) * 2004-06-30 2010-08-17 Oracle America, Inc. Method and apparatus for precisely identifying effective addresses associated with hardware events
US7516359B2 (en) * 2004-10-25 2009-04-07 Hewlett-Packard Development Company, L.P. System and method for using information relating to a detected loss of lockstep for determining a responsive action
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
US7353445B1 (en) * 2004-12-10 2008-04-01 Sun Microsystems, Inc. Cache error handling in a multithreaded/multi-core processor
US20060130062A1 (en) * 2004-12-14 2006-06-15 International Business Machines Corporation Scheduling threads in a multi-threaded computer
US20060242389A1 (en) * 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US7502957B2 (en) * 2005-09-09 2009-03-10 International Business Machines Corporation Method and system to execute recovery in non-homogeneous multi processor environments
US7546487B2 (en) * 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US7386647B2 (en) * 2005-10-14 2008-06-10 Dell Products L.P. System and method for processing an interrupt in a processor supporting multithread execution
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US20070101332A1 (en) * 2005-10-28 2007-05-03 International Business Machines Corporation Method and apparatus for resource-based thread allocation in a multiprocessor computer system
US20070239917A1 (en) * 2005-12-09 2007-10-11 Ryuji Orita Interrupt routing within multiple-processor system

Also Published As

Publication number Publication date
US7721148B2 (en) 2010-05-18
CN101149701A (zh) 2008-03-26
US20080005615A1 (en) 2008-01-03

Similar Documents

Publication Publication Date Title
CN101149701B (zh) 用于多线程系统中重定向中断的方法和设备
CN101819521B (zh) 微处理器以及解析第一或第二类别条件分支指令的方法
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
Herder et al. Construction of a highly dependable operating system
US20070180315A1 (en) Reconfigurable processor and reconfiguration method executed by the reconfigurable processor
US20080127182A1 (en) Managing Memory Pages During Virtual Machine Migration
US7861228B2 (en) Variable delay instruction for implementation of temporal redundancy
US20050066079A1 (en) Multiple processor core device having shareable functional units for self-repairing capability
KR101249693B1 (ko) 서브루틴 복귀 메카니즘 선택
CN103543985A (zh) 微处理器以及相关指令执行的方法
JP2012198803A (ja) 演算処理装置及び演算処理方法
WO2008082455A1 (en) Reconfiguring a secure system
TWI470434B (zh) 在電腦系統中執行之方法,電腦系統,處理器
CN100498728C (zh) 用于确定一组健康的处理器和用来引导系统的关联固件的系统和方法
US20030046524A1 (en) Method for dynamically designating initialization modules as recovery code
CN105630530A (zh) 数字信号处理器多级启动方法及系统
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
EP1703393B1 (en) Error notification method and apparatus for an information processing system carrying out mirror operation
CN101819523B (zh) 微处理器以及相关指令执行的方法
KR100508320B1 (ko) 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서
WO2010023756A1 (ja) 仮想プロセッサを含む情報処理装置、情報処理方法、およびプログラム
US20230342234A1 (en) System management mode (smm) error handler
US20020124163A1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
Müller et al. A multi-layer software-based fault-tolerance approach for heterogenous multi-core systems
Raghavan et al. ROSY: recovering processor and memory systems from hard errors

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100908

Termination date: 20180629

CF01 Termination of patent right due to non-payment of annual fee