CN1549968A - 在支持并发执行多线程的计算机系统中处理中断的机制 - Google Patents

在支持并发执行多线程的计算机系统中处理中断的机制 Download PDF

Info

Publication number
CN1549968A
CN1549968A CNA028170687A CN02817068A CN1549968A CN 1549968 A CN1549968 A CN 1549968A CN A028170687 A CNA028170687 A CN A028170687A CN 02817068 A CN02817068 A CN 02817068A CN 1549968 A CN1549968 A CN 1549968A
Authority
CN
China
Prior art keywords
interruption
processor
value
handling routine
interrupt handling
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
CNA028170687A
Other languages
English (en)
Other versions
CN1267822C (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.)
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 CN1549968A publication Critical patent/CN1549968A/zh
Application granted granted Critical
Publication of CN1267822C publication Critical patent/CN1267822C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/46Multiprogramming 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种机制,用于在支持并发多线程的处理器上处理中断。分配处理器的资源以提供多个逻辑处理器。响应于公用中断,多个逻辑处理器竞争访问共享寄存器。访问所述共享寄存器的第一个逻辑处理器处理所述公用中断。其余的逻辑处理器从该中断返回。

Description

在支持并发执行多线程的计算机系统中处理中断的机制
技术领域
本发明一般地涉及计算机系统。更具体地说,本发明涉及在支持并发执行多线程的计算机系统中处理中断的机制。
背景技术
现代高性能处理器被设计成可在每个时钟周期执行多条指令。为此目的,它们一般包括大量执行资源以便于这些指令的并行处理。可以并行执行的指令的可用性可能限制对这些资源的有效使用。并行执行的指令的可用性称为指令级并行性(instruction level parallelism,ILP)。指令相关性限制了在单个执行线程中可用的ILP。如果每次只能处理一个执行线程,也就降低了指令吞吐量(throughput)。
增加指令吞吐量的一种方法是设计出能够并发执行来自两个或多个指令线程的多条指令的处理器。由于来自不同线程的指令是独立的,所以两个或多个指令线程的并发执行增加了指令吞吐量。
已经实现了多种设计来支持在单个处理器包(package)中的多线程的并发执行。例如,多核处理器在单个处理器芯片上包括多个执行核。每个执行核都可以分配给不同的指令线程,尽管可以共享各种资源以节省管芯面积或允许所述执行线程之间进行某些通信。在对系统的余下部分提供单个接口的多芯片模块中还可以包含多个处理器芯片。
多线程处理器包括管理在单个执行核上执行多个指令线程的资源。线程管理单元为多线程提供状态数据的芯片内存储器,并且当所述共享核处理来自不同线程的指令时更新所述数据。
粗粒度(coarse-grained)多线程处理器每次只执行来自一个线程的指令,但是多线程的状态数据芯片内存储器降低了与在不同线程之间切换指令执行(上下文切换(context switch))相关的开销。在当前执行线程遇到长等待时间事件时可以触发线程切换(基于事件切换的多线程,SOEMT)。
细粒度(fine-grained)多线程处理器允许来自多个线程的指令并发执行。例如,指令可以在每个时钟周期处从多个线程发布,或者指令可以在不同时钟周期处从不同线程发布。在这两种情况下,来自多个线程的多条指令可以同时在执行核中运行(in-flight)。
一般而言,多线程处理器和多核处理器都允许在处理器中同时有多个线程的上下文有效。对于多核处理器,一些或全部核可以是多线程的。这里,上下文指称存储了特定处理器体系结构的线程体系结构状态的寄存器,并且可以包括通用、控制和应用寄存器。支持多线程上下文的这些或其它处理器(“多上下文处理器”)的性能益处取决于或部分取决于这些处理器呈现为多个等效逻辑处理器的能力。该等效性大大地帮助了在逻辑处理器之间的工作负荷的平衡,并且它简化了操作系统对线程的管理。实际上,目标是使多上下文处理器呈现为对称多处理器(SMP)系统。
为了提高多个线程之间的对称性,为多上下文处理器的每个逻辑处理器复制某些资源。例如,中断单元通常与每个逻辑处理器相关联,以在逻辑处理器和多上下文处理器的共享资源或系统级别资源之间提供接口。中断单元确定中断是否能被处理,并且如果接受了该中断则提供指针给中断处理代码。
为每个逻辑处理器提供中断单元的一个缺点是通常所有逻辑处理器都看到了中断,由其是那些与逻辑处理器共享的资源相关的中断。例如,多上下文处理器可以提供单个中断引脚以维持和单线程设计之间的包级别(package-level)兼容性。在该引脚上声明的中断可以被所有逻辑处理器的中断单元看到。系统中的风扇故障就可以触发这样的中断。由于它们的等效性,每个中断单元注册该中断,并且与其相关联的逻辑处理器执行中断处理程序(interrupt-handler)。以类似的方式可以看到并处理由共享芯片内资源产生的中断或在系统或专用中断总线上接收到的中断。在很多情况下,中断可能已经由一个逻辑处理器处理,但是逻辑处理器的对称配置要求每个处理器都执行该中断代码。
本发明解决了与在支持并发执行多线程的处理器中进行中断处理相关的这些和其它问题。
附图说明
可以参考下面的附图来理解本发明,其中相似的元件用相同的号码标识。这些附图用来图示本发明的精选实施例而不是用来限制本发明的范围。
图1是可以实现本发明的计算机系统的方框图;
图2是根据本发明的多核处理器的方框图;
图3是根据本发明的多线程处理器的方框图;
图4是一个流程图,表现了根据本发明用于处理中断的方法的一个实施例;
图5是一个流程图,表现了根据本发明用于处理中断的方法的另一个
实施例。
具体实施方式
下面的讨论阐明了许多具体细节以提供对本发明的全面理解。然而,得益于本公开的本领域技术人员应当意识到,没有这些具体细节也可以实施本发明。此外,为了关注于本发明的特征,没有详细描述各种公知的方法、程序、组件和电路。
图1是一个方框图,表现了可以实现本发明的计算机系统100的一个实施例。计算机系统100包括多上下文处理器110以执行存储在存储器160中的指令。通过信道180在处理器110和存储器160之间耦合了数据和指令。信道180可以包括在芯片组或系统逻辑(未示出)控制之下的一个或多个总线。
对于系统100,存储器160存储中断处理程序170,所述中断处理程序170由多上下文处理器110上的资源响应于中断来执行。存储器160可以表现为易失性存储器结构,例如高速缓存和主存储器,也可表现为非易失性存储器结构,例如闪存、硬驱动器和软驱动器等等。对于本发明的一个实施例,中断处理程序170的一部分可以固件实现,而其它部分可以存储在主存储器中。
多上下文处理器110的逻辑表现为逻辑处理器120(1)-120(n)(通称逻辑处理器120)和共享资源140,其中逻辑处理器120(1)-120(n)各自包含与它们相关联的中断单元130(1)-130(n)(通称中断单元130)。例如,每个逻辑处理器120可以代表分配给特定线程的资源,而共享资源140可以代表那些对所有逻辑处理器120上的线程都可用的处理器110的资源。
对于所公开的系统100的实施例,共享资源140包括每个逻辑处理器120都可访问的中断声明(claim)寄存器(ICR)150。如下文所详细讨论的,ICR150提供了一种机制,通过该机制一个逻辑处理器120发信号通知其余的处理器它将处理中断。共享资源140还可以包含高级别高速缓存或总线逻辑以用于和存储器160或外围设备(未示出)通信。
中断单元130代表与逻辑处理器120相关来处理中断的功能块。某些中断可以由逻辑处理器120中的任何一个来处理。例如,处理器的共享资源140中发生的某些中断以及脱离处理器包的资源产生的系统或平台级别的中断通常可以由任何逻辑处理器120来处理。可以通过处理器包上的外部引脚104、总线或通过处理器110内部的电路来传输它们。在下面的讨论中,诸如这些中断被称为公用中断,以将它们和以特定逻辑处理器为目标的中断区分开来。
中断单元130(1)-130(n)为逻辑处理器120(1)-120(n)分别注册公用中断。例如,每个中断单元130评估赋予中断的优先级和任何屏蔽条件,来确定该中断是否应得到立即处理,例如,触发中断的事件是否有比当前执行的线程更高的优先级。如果中断单元130确定该中断具有优先级,则它将与它相关联的逻辑处理器120指引到合适的中断处理例程。本发明提供了一种机制,其允许一个逻辑处理器120执行由所有逻辑处理器120注册的中断的整个中断处理例程。它这样做而不会将非对称性施加到逻辑处理器120上,例如任意地指派中断到逻辑处理器120。
对于系统100的一个实施例,中断单元130(1)-130(n)为逻辑处理器120(1)-120(n)注册公用中断。如果中断具有优先级,则中断单元130(1)-130(n)分别指引逻辑处理器120(1)-(n)到中断处理程序170。逻辑处理器120(1)-(n)中的每一个都执行中断处理程序170的第一代码段,其指引逻辑处理器访问ICR150。第一个成功访问ICR150的逻辑处理器120完成中断的处理,并且其余的逻辑处理器120恢复执行它们的线程。
对于本发明的一个实施例,初始化ICR150为第一值,并且在公用中断之后复位该第一值。中断处理程序170的初始代码段指引每个逻辑处理器120读取当前在ICR150中的值并且向ICR150写入第二值。如果第二值与第一值不同,则读取ICR150的第一逻辑处理器120看到第一值。所有其它逻辑处理器120看到第二值。读取第一值的逻辑处理器继续执行中断处理程序。其余的逻辑处理器读取第二值,所述第二值发信号通知它们从中断返回,例如恢复执行它们被中断的线程。
逻辑处理器120不必响应于在锁定步骤下的公用中断。当发生中断时执行的线程的类型、它的优先级或者甚至是当前运行的指令类型,都可以确定逻辑处理器120访问ICR150有多快。根据实施例,中断处理程序170每次只可由一个处理器执行,在这种情况下,执行中断处理程序170的第一逻辑处理器将是访问ICR150的第一逻辑处理器。
多上下文处理器110的不同实施例以不同的方式实现逻辑处理器120。对于多上下文处理器110的多核实施例,每个逻辑处理器120对应于一个执行核。结合图2讨论了多上下文处理器110的多核实施例。对于多上下文处理器110的多线程实施例,每个逻辑处理器120对应于分配给具体线程的单个执行核的资源。结合图3讨论了多上下文处理器110的多线程实施例。多上下文处理器110的其它实施例可以包括例如多核,其中的一些或全部是多线程的。本发明不依赖于在处理器中实现逻辑处理器的具体方式。
图2是一个方框图,表现了多上下文处理器110的多核实施例210。多核处理器210提供执行核220(1)-220(n)以及它们对应的中断单元230(1)-(n),以支持多达n个线程的并发执行。还示出了共享资源240,其包括中断声明寄存器(ICR)250。对于所公开的多核处理器210的实施例,执行核220(1)-220(n)通过总线254访问ICR250。
响应于公用中断,每个中断单元230确定该中断是否有优先级,如果有,则中断单元230指引它对应的执行核220到中断处理程序。在中断处理程序的第一部分的控制之下,执行核220竞争访问ICR250。第一个访问ICR250的执行核完成该中断处理程序。其余的执行核恢复它们被中断的线程。对于多核处理器210的另一个实施例,执行核220(1)-220(n)的一个或多个也可以是多线程的,在这种情况下,每个核上的每个线程试图首先访问ICR250。
对于本发明的一个实施例,第一代码段使得每个逻辑处理器220读取ICR250。如果逻辑处理器220读取ICR250中的第一值,则它继续执行中断处理程序的其余部分。如果逻辑处理器220读取ICR250中的第二值,则它会恢复执行它在中断前执行的线程的指令。为了确保只有一个逻辑处理器220读取第一值,初始代码段可以使用原子性的(atomic)读取—修改—写入操作,例如“测试并设置(test and set)”操作。例如,如果ICR250中的第一值是零,则中断处理程序170可以自动读取ICR250中的值并向ICR250写入一。即,执行读取—修改—写入操作同时不会将ICR250让给另一个逻辑处理器。对于这个实施例,只有到达ICR250的第一逻辑处理器读取零值。所有其它逻辑处理器将读取由访问ICR250的第一逻辑处理器写入到ICR250的一值。
上面描述的实施例是“竞争并标记(race-to-flag)”机制的示例,用于确定哪一个逻辑处理器将处理公用中断。标记可以包含在寄存器、锁变量或类似的存储位中,其可以由每个逻辑处理器访问。管理这样的标记的读取/写入规则允许独立运行的每个逻辑处理器都来确定其是否负责处理公用中断。
图3是一个方框图,表现了多上下文处理器110的多线程实施例310。多线程实施例310包括执行核304,其允许并发处理来自多达n个不同线程的指令。执行核304表现为流水线(pipeline),其中的各个阶段或者分配给n个线程(块324(1)-324(n)、326(1)-326(n)、328(1)-328(n)、330(1)-330(n))之一,或者由n个线程(块340(a)-340(c)和ICR350)共享。例如,块340(a)、340(b)和340(c)可以代表共享指令高速缓存、共享寄存器重命名单元和共享数据高速缓存。块324(1)-324(n)、块326(1)-326(n)、块328(1)-328(n)和块330(1)-330(n)可以分别代表取出(fetch)单元、解码单元、执行单元和中断单元中的多个部分,这些部分分配给线程1-n。以垂直对齐的形式示出了分配到给定逻辑处理器的资源只是为了简化图3。这并不是要表示分配给线程的资源的任何排序。
对于所公开的处理器310的实施例,逻辑处理器320(1)由分配资源324(1)、326(1)、328(1)和330(1)表示,并且逻辑处理器320(n)由分配资源324(n)、326(n)、328(n)和330(n)表示。如此做是为了说明的目的。其它的表示可以包括当前正在由相应的线程使用的共享资源340(a)-340(c)部分。
中断单元330与处理器310中的其它分配资源类似,不需要是物理上确定的单元。例如,它们可以代表被分配到在处理器310上执行的个别线程的单个中断单元部分。响应于公用中断,中断单元330(1)-330(n)注册该中断,并且确定它是否应当被处理。如果该中断具有优先级,则中断单元330(1)-330(n)指引逻辑处理器320(1)-320(n)执行中断处理例程,例如中断处理程序170。每个逻辑处理器320执行中断处理例程的第一代码段,其引起逻辑处理器访问ICR350。访问ICR350的第一逻辑处理器320执行中断处理例程的其余部分。其它逻辑处理器320返回它们被中断的线程。
多核处理器210和多线程处理器310的配置只是用于举例说明。适合于使用本发明的多上下文处理器的其它实施例可以使用不同的配置。例如,多线程处理器的线程可以共享前端(front end)与执行资源,并且仅复制寄存器文件。从本公开得益的处理器设计领域技术人员会认识到,结合本发明可以使用多上下文处理器的其它配置。
图4是一个流程图,表现了响应于公用中断而由多上下文处理器中的每个逻辑处理器执行的方法400的一个实施例。检测(410)到公用中断,并且逻辑处理器确定(420)是否应当处理该中断。例如,逻辑处理器的中断单元可以检查优先级和屏蔽位来确定所检测的中断是否优先于当前执行的指令线程。如果中断没有优先级,则方法400终止(470)。如果中断具有优先级(420),则在当前执行线程的适当点处保存(430)某些状态信息,并且逻辑处理器被指引(440)到在指定地址处的中断处理例程。中断单元一般提供中断处理程序地址,如果它确定该中断具有优先级。
在将控制交给中断处理程序之前保存的状态信息通常是这样的最小量状态信息,即在完成中断处理程序之后,这些状态信息可以将逻辑处理器返回到被中断的指令线程。这降低了与执行中断处理程序有关的开销。
在进入中断处理例程后,逻辑处理器执行第一代码段,第一代码段指引逻辑处理器访问(450)中断声明寄存器(ICR),并比较(460)存储在ICR中的值和第一值。如果读取值等于第一值,则逻辑处理器继续进行(470)中断处理例程。如果存储值不等于第一值,则逻辑处理器从中断返回(480)。
为了确保任何时候只有一个处理器访问ICR,本发明的实施例可能保护ICR或保护用来访问ICR的代码段。在第一种情况下,中断处理程序可以利用原子性读取—修改—写入操作来修改ICR。对于这个实施例,如果逻辑处理器读取了ICR中的第一值,则它随后在ICR中写入第二值,并且在读取和写入之间没有失去对ICR的控制。如果ICR在中断之间被复位为第一值,则读取ICR的第一逻辑处理器将读取ICR中的第一值,并且将它替换为第二值。响应于相同中断而在第一逻辑处理器之后读取ICR的任何逻辑处理器将读取第二值,并且恢复其中断前的活动。
对于第二种情况,对中断处理程序的第一代码段的访问由临界区(critical-section)位控制。到达第一代码段的第一逻辑处理器执行临界区位的原子性读取—修改—写入,读取该位的值并且向该位写入第二值,并且在读取和写入操作之间没有释放该位。如果读取值指示第一代码段是解锁定的,则逻辑处理器执行该代码以读取ICR中的值。写入临界区位的第二值确保没有其它的逻辑处理器能够同时执行第一代码段。如果读取值指示第一代码段是锁定的,则逻辑处理器可以返回到它曾经执行的线程。由于每次只有一个逻辑处理器能执行第一代码段,所以对ICR的读取和写入不需要原子性的操作。得益于本公开的本领域技术人员应当认识到可以有用于确保只有一个逻辑处理器声明对公用中断的所有权的多种其它机制。
一旦所有逻辑处理器响应于公用中断而已经访问了标记(ICR、锁变量等等),则应当为下一公用中断将该标记复位为第一值。对于本发明的一个实施例,响应于公用中断而读取标记的最末逻辑处理器将它复位为第一值。例如,标记可以定义为包括用于由多上下文处理器支持的每个逻辑处理的位。当每个逻辑处理器访问标记时,它设定相应的标记位。最末逻辑处理器设定其相应的标记位,并且它将标记中的所有位复位为第一值。
对于另一个实施例,中断处理程序的初始代码段可以指示逻辑处理器增大计数值(即,标记),并且读取已增大的计数值。如果已增大的计数值等于当前在处理器中有效的逻辑处理器的数目,则逻辑处理器将计数值复位为第一值。如果已增大的计数值小于当前有效的逻辑处理器的数目,则逻辑处理器从中断返回。
用于复位标记的这些机制假定公用中断之间的时间通常大于所有逻辑处理器执行中断处理程序(或其中一部分)以及访问标记所需的时间。从本公开得益的处理器设计领域技术人员会认识到一旦已经确定公用中断的所有权之后复位标记的其它机制。
图5是一个流程图,表现了根据本发明的用于处理中断的方法500的一个实施例。方法500允许启用(enable)或禁用(disable)公用中断的双重处理。例如,可能需要所有逻辑处理器响应一个公用中断例如机器校验或热事件。对于这些和其它需要所有逻辑处理器来响应的公用中断,通过参考位ECH(启用公用处理)可以启用中断的双重处理。当系统首先启动或之后发生变化以定制特定系统环境时,可以为选择的公用中断设定这个位。
响应于公用中断的检测而启动(519)方法500。逻辑处理器检验(520)一个位以确定是否启用了双重中断处理。如果启用了,则逻辑处理器继续运行(530)中断处理程序而不管其它逻辑处理器做什么。如果该位指示(520)禁用了双重中断处理,则逻辑处理器检验(540)ICR以确定是否已经声明了中断的所有权。如果没有声明(550)该中断,则逻辑处理器继续运行(530)中断处理程序。上面讨论的用来控制对ICR的访问的机制可应用于方法500。如果已经声明(550)了中断,则逻辑处理器确定(560)其是否是响应公用中断的最末线程。如果是,则逻辑处理器将ICR复位(570)为第一值,并且从中断处理程序返回(580)以恢复执行当中断发生时其正在处理的线程。如果不是响应公用中断的最末线程,则它从中断处理程序返回(580)而不复位ICR。进而,上面讨论的用来确定逻辑处理器是否是响应于公用中断并复位ICR(即,标记)的最末线程的方法400机制适用于方法500。
如此已经公开了一种机制,用于在包括多上下文处理器的计算机系统中处理某些中断。响应于公用中断,多上下文处理器上的逻辑处理器竞争访问共享寄存器。第一个访问共享寄存器的逻辑处理器处理中断。其余逻辑处理器检测到该中断已经被声明,并且从中断处理程序返回。对于本发明的一个实施例,中断处理程序包括第一代码段,响应于公用中断其由包上所有逻辑处理器执行。共享寄存器被初始化为第一值,并且第一代码段指引每个逻辑处理器读取共享寄存器。跟随公用中断而访问共享寄存器的第一逻辑处理器读取第一值,写入第二值,并且继续执行中断处理程序。其余逻辑处理器读取第二值,第二值指引它们退出中断处理程序。
对于本发明的另一个实施例,提供了启用/禁用位来标识公用中断是否会被重复处理。如果该位是禁用状态,则由访问共享寄存器的第一逻辑处理器通过执行中断处理例程的第一段来声明中断。如果该位是启用状态,则避过第一代码段,并且所有的逻辑处理器都执行中断处理例程到完成。
所公开的实施例已经图示了本发明的多种特征。本发明可以在使用多上下文处理器的计算机和其它基于处理器的系统中使用。从本公开得益的本领域技术人员会认识到可以对所公开的实施例进行变化和修改,而不会背离所附权利要求的精神和范围。

Claims (22)

1.一种处理器,包括:
第一中断单元,用于响应于中断而指引第一逻辑处理器到中断处理程序;
第二中断单元,用于响应于所述中断而指引第二逻辑处理器到所述中断处理程序;以及
中断声明寄存器,用于存储一个值,所述值指示是否由所述第一和第二逻辑处理器之一来处理所述中断。
2.如权利要求1所述的处理器,其中所述第一和第二逻辑处理器在所述中断处理程序的控制下读取所述中断声明寄存器中的值。
3.如权利要求2所述的处理器,其中如果所述第一逻辑处理器首先读取所述中断声明寄存器,则所述第一逻辑处理器处理所述中断。
4.如权利要求3所述的处理器,其中如果所述第一逻辑处理器处理所述中断,则所述第二逻辑处理器退出所述中断处理程序。
5.如权利要求4所述的处理器,其中所述第二逻辑处理器通过读取在所述中断声明寄存器中的由所述第一逻辑处理器写入的值来确定所述第一逻辑处理器处理所述中断。
6.一种系统,包括:
处理器,包括中断声明寄存器和多个线程资源,所述多个线程资源用来分别处理对应于多个指令线程的指令;以及
存储器,用于存储中断处理程序,所述中断处理程序包括可由所述多个线程资源的每个线程资源响应于中断而执行的指令,以:
读取在所述中断声明寄存器中的值;并且
响应于所述读取值而处理所述中断或恢复指令执行。
7.如权利要求6所述的系统,其中所述多个线程资源包括所述处理器的多个执行核。
8.如权利要求6所述的系统,其中所述多个线程资源包括执行核的多个资源,其中所述执行核的多个资源被分配给多个指令线程。
9.如权利要求6所述的系统,其中所述中断处理程序包括可由每个所述线程资源进一步执行的指令,以在读取所述中断声明寄存器中的值之后向所述中断声明寄存器写入第二值。
10.如权利要求9所述的系统,其中初始化所述中断声明寄存器以存储第一值,并且读取所述第一值的第一个线程资源将所述第一值替换为第二值并处理所述中断。
11.如权利要求10所述的系统,其中所述多个线程资源的其余部分响应于读取在所述中断声明寄存器中的所述第二值而执行从所述中断的返回。
12.一种系统,包括:
存储器,其中存储了中断处理程序;和
处理器,包括中断声明寄存器和用以支持多个逻辑处理器的执行资源,每个所述逻辑处理器响应于中断信号,通过使用所述中断处理程序而竞争访问所述中断声明寄存器。
13.如权利要求12所述的系统,其中支持多个逻辑处理器的所述执行资源包括多个执行核。
14.如权利要求13所述的系统,其中每个执行核包括中断单元,以响应于所述中断信号而指引所述执行核的控制到所述中断处理程序。
15.如权利要求13所述的系统,其中每个所述执行核处理所述中断处理程序的指令以读取所述中断声明寄存器,进而响应于在所述中断声明寄存器中读取的值继续执行所述中断处理程序或从所述中断处理程序返回。
16.如权利要求15所述的系统,其中读取所述中断声明寄存器的第一个所述执行核响应于所述中断信号而完成所述中断处理程序的执行,而其它所述执行核退出所述中断处理程序。
17.如权利要求12所述的系统,其中访问所述中断声明寄存器的第一个所述逻辑处理器完成所述中断处理程序的执行。
18.如权利要求17所述的系统,其中在所述第一逻辑处理器之后访问所述中断声明寄存器的所述逻辑处理器退出所述中断处理程序。
19.如权利要求12所述的系统,其中支持多个逻辑处理器的所述执行资源包括多个执行核,至少其中之一支持多线程。
20.一种响应于中断而由当前在多上下文处理器上执行的每个线程实现的方法,所述方法包括:
在指定的存储器位置访问中断处理程序;
执行所述中断处理程序以读取中断声明寄存器中的值;
如果从所述中断声明寄存器读取的值是第一值,则完成执行所述中断处理程序。
21.如权利要求20所述的方法,其中执行所述中断处理程序包括读取所述中断声明寄存器中的值,并且在没有释放对所述寄存器的控制的情况下向所述寄存器写入第二值。
22.如权利要求20所述的方法,还包括如果从所述中断声明寄存器读取的值是第二值,则终止所述中断处理程序的执行。
CNB028170687A 2001-08-31 2002-08-01 在支持并发执行多线程的计算机系统中处理中断的机制 Expired - Fee Related CN1267822C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/945,419 US6779065B2 (en) 2001-08-31 2001-08-31 Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US09/945,419 2001-08-31

Publications (2)

Publication Number Publication Date
CN1549968A true CN1549968A (zh) 2004-11-24
CN1267822C CN1267822C (zh) 2006-08-02

Family

ID=25483060

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028170687A Expired - Fee Related CN1267822C (zh) 2001-08-31 2002-08-01 在支持并发执行多线程的计算机系统中处理中断的机制

Country Status (10)

Country Link
US (1) US6779065B2 (zh)
JP (1) JP2005502119A (zh)
KR (1) KR100578437B1 (zh)
CN (1) CN1267822C (zh)
DE (1) DE10297166T5 (zh)
GB (1) GB2394099B (zh)
HK (1) HK1060784A1 (zh)
RU (1) RU2280272C2 (zh)
TW (1) TWI223771B (zh)
WO (1) WO2003021438A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100452006C (zh) * 2004-10-14 2009-01-14 国际商业机器公司 用于仿真数据处理系统内的中断体系结构的方法和系统
CN101341736B (zh) * 2005-12-23 2010-12-22 三叉微系统(远东)有限公司 具有用于交错中断的双中断线的音频/视频渲染器外设
CN101247275B (zh) * 2008-03-18 2011-02-09 杭州华三通信技术有限公司 一种中断上报方法和网络设备
US8079031B2 (en) 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
CN103294557A (zh) * 2005-03-15 2013-09-11 英特尔公司 具有活动和非活动执行核心的多核处理器
CN103810035A (zh) * 2012-11-01 2014-05-21 国际商业机器公司 智能上下文管理
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
TWI676935B (zh) * 2018-07-20 2019-11-11 瑞昱半導體股份有限公司 處理中斷優先級的電路系統
CN116401990A (zh) * 2023-01-30 2023-07-07 芯华章科技(北京)有限公司 处理中断事件的方法、装置、系统和存储介质

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181600B1 (en) 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7185183B1 (en) 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US7251814B2 (en) 2001-08-24 2007-07-31 International Business Machines Corporation Yield on multithreaded processors
US7428485B2 (en) * 2001-08-24 2008-09-23 International Business Machines Corporation System for yielding to a processor
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US7130948B2 (en) * 2002-08-02 2006-10-31 Bian Qiyong B Flexible interrupt handling methods for optical networking apparatuses with multiple multi-protocol optical networking modules
US7461215B2 (en) * 2002-10-08 2008-12-02 Rmi Corporation Advanced processor with implementation of memory ordering on a ring based data movement network
US20050044324A1 (en) * 2002-10-08 2005-02-24 Abbas Rashid Advanced processor with mechanism for maximizing resource usage in an in-order pipeline with multiple threads
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US8015567B2 (en) * 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7924828B2 (en) * 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US8176298B2 (en) * 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US7634638B1 (en) * 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
US7062606B2 (en) * 2002-11-01 2006-06-13 Infineon Technologies Ag Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US7386619B1 (en) * 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7849465B2 (en) * 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
US7487502B2 (en) 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7000051B2 (en) * 2003-03-31 2006-02-14 International Business Machines Corporation Apparatus and method for virtualizing interrupts in a logically partitioned computer system
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7610473B2 (en) 2003-08-28 2009-10-27 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7721024B2 (en) * 2003-11-12 2010-05-18 Dell Products L.P. System and method for exiting from an interrupt mode in a multiple processor system
US20050102457A1 (en) * 2003-11-12 2005-05-12 Dell Products L.P. System and method for interrupt processing in a multiple processor 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
US7917910B2 (en) * 2004-03-26 2011-03-29 Intel Corporation Techniques to manage critical region interrupts
US8176489B2 (en) * 2004-12-09 2012-05-08 International Business Machines Corporation Use of rollback RCU with read-side modifications to RCU-protected data structures
US20060294149A1 (en) * 2005-06-24 2006-12-28 Intel Corporation Method and apparatus for supporting memory hotplug operations using a dedicated processor core
US7386646B2 (en) * 2005-08-25 2008-06-10 Broadcom Corporation System and method for interrupt distribution in a multithread processor
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
US8180923B2 (en) * 2005-11-29 2012-05-15 Intel Corporation Network access control for many-core systems
EP1963963A2 (en) * 2005-12-06 2008-09-03 Boston Circuits, Inc. Methods and apparatus for multi-core processing with dedicated thread management
KR100679050B1 (ko) * 2005-12-12 2007-02-06 삼성전자주식회사 태스크간 빠른 문맥 교환을 위해 레지스터 문맥을 저장,복구하는 방법 및 장치
KR100681199B1 (ko) * 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US7721148B2 (en) * 2006-06-29 2010-05-18 Intel Corporation Method and apparatus for redirection of machine check interrupts in multithreaded systems
US7870372B2 (en) * 2006-08-14 2011-01-11 Marvell World Trade Ltd. Interrupt handling
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US7818302B2 (en) * 2007-03-09 2010-10-19 Emc Corporation System and method for performing file system checks on an active file system
US7660570B2 (en) * 2007-03-12 2010-02-09 John Mezzalingua Associates, Inc. Active step attenuator
US8627030B2 (en) * 2007-11-07 2014-01-07 Intel Corporation Late lock acquire mechanism for hardware lock elision (HLE)
US9596324B2 (en) * 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
US8155479B2 (en) 2008-03-28 2012-04-10 Intuitive Surgical Operations Inc. Automated panning and digital zooming for robotic surgical systems
US8808164B2 (en) * 2008-03-28 2014-08-19 Intuitive Surgical Operations, Inc. Controlling a robotic surgical tool with a display monitor
EP2271992B1 (en) * 2008-04-28 2013-04-03 Hewlett-Packard Development Company, L. P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
US9417914B2 (en) * 2008-06-02 2016-08-16 Microsoft Technology Licensing, Llc Regaining control of a processing resource that executes an external execution context
US7996722B2 (en) * 2009-01-02 2011-08-09 International Business Machines Corporation Method for debugging a hang condition in a process without affecting the process state
US8151027B2 (en) * 2009-04-08 2012-04-03 Intel Corporation System management mode inter-processor interrupt redirection
US7996595B2 (en) * 2009-04-14 2011-08-09 Lstar Technologies Llc Interrupt arbitration for multiprocessors
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
JP5035299B2 (ja) * 2009-06-15 2012-09-26 株式会社日立製作所 マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
AU2010307632B2 (en) 2009-10-15 2013-12-05 L E Tech Co., Ltd. Microcomputer and operation method thereof
FR2960314B1 (fr) * 2010-05-19 2012-07-27 Bull Sas Procede d'optimisation de gestion de veille d'un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
TWI463406B (zh) * 2011-10-31 2014-12-01 Univ Nat Taiwan 具搶占功能的即時中斷處理系統及其方法
US9104508B2 (en) * 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US9329880B2 (en) * 2013-02-13 2016-05-03 Red Hat Israel, Ltd. Counter for fast interrupt register access in hypervisors
US10331589B2 (en) * 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9311138B2 (en) 2013-03-13 2016-04-12 Intel Corporation System management interrupt handling for multi-core processors
US9842015B2 (en) 2013-09-27 2017-12-12 Intel Corporation Instruction and logic for machine checking communication
US10147480B2 (en) * 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US10013279B2 (en) * 2015-07-28 2018-07-03 International Business Machines Corporation Processing interrupt requests
US10990463B2 (en) 2018-03-27 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor memory module and memory system including the same
KR102538679B1 (ko) * 2018-04-06 2023-06-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20210049036A1 (en) * 2019-08-13 2021-02-18 Facebook Technologies, Llc Capability Space

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109522A (en) * 1983-06-02 1992-04-28 Amdahl Corporation Data processing system with logical processing facility supporting a plurality of system control programs for production operation
US5437042A (en) * 1992-10-02 1995-07-25 Compaq Computer Corporation Arrangement of DMA, interrupt and timer functions to implement symmetrical processing in a multiprocessor computer system
CN1147785C (zh) * 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
US5915088A (en) * 1996-12-05 1999-06-22 Tandem Computers Incorporated Interprocessor messaging system
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6205468B1 (en) * 1998-03-10 2001-03-20 Lucent Technologies, Inc. System for multitasking management employing context controller having event vector selection by priority encoding of contex events
US6163829A (en) * 1998-04-17 2000-12-19 Intelect Systems Corporation DSP interrupt control for handling multiple interrupts

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100452006C (zh) * 2004-10-14 2009-01-14 国际商业机器公司 用于仿真数据处理系统内的中断体系结构的方法和系统
CN103294557A (zh) * 2005-03-15 2013-09-11 英特尔公司 具有活动和非活动执行核心的多核处理器
US8079031B2 (en) 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
CN1952877B (zh) * 2005-10-21 2013-06-19 英特尔公司 用于软件可配置预取器的方法、装置和系统
US8484389B2 (en) 2005-12-23 2013-07-09 Entropic Communications, Inc. AV renderer peripheral with dual inerrupt lines for staggered interrupts
CN101341736B (zh) * 2005-12-23 2010-12-22 三叉微系统(远东)有限公司 具有用于交错中断的双中断线的音频/视频渲染器外设
CN101247275B (zh) * 2008-03-18 2011-02-09 杭州华三通信技术有限公司 一种中断上报方法和网络设备
CN103810035A (zh) * 2012-11-01 2014-05-21 国际商业机器公司 智能上下文管理
US10078518B2 (en) 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
TWI676935B (zh) * 2018-07-20 2019-11-11 瑞昱半導體股份有限公司 處理中斷優先級的電路系統
CN116401990A (zh) * 2023-01-30 2023-07-07 芯华章科技(北京)有限公司 处理中断事件的方法、装置、系统和存储介质
CN116401990B (zh) * 2023-01-30 2023-10-20 芯华章科技(北京)有限公司 处理中断事件的方法、装置、系统和存储介质

Also Published As

Publication number Publication date
HK1060784A1 (en) 2004-08-20
CN1267822C (zh) 2006-08-02
KR100578437B1 (ko) 2006-05-11
WO2003021438A1 (en) 2003-03-13
TWI223771B (en) 2004-11-11
RU2280272C2 (ru) 2006-07-20
RU2004109581A (ru) 2005-08-20
US6779065B2 (en) 2004-08-17
GB2394099A (en) 2004-04-14
JP2005502119A (ja) 2005-01-20
US20030046464A1 (en) 2003-03-06
GB0401390D0 (en) 2004-02-25
GB2394099B (en) 2005-02-09
KR20040023692A (ko) 2004-03-18
DE10297166T5 (de) 2004-07-22

Similar Documents

Publication Publication Date Title
CN1267822C (zh) 在支持并发执行多线程的计算机系统中处理中断的机制
US7650602B2 (en) Parallel processing computer
US8250347B2 (en) Digital data processing apparatus having hardware multithreading support including cache line limiting mechanism for special class threads
CA2299348C (en) Method and apparatus for selecting thread switch events in a multithreaded processor
US9442721B2 (en) Method and system to provide user-level multithreading
KR101546033B1 (ko) Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행
CN100478871C (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
US7313797B2 (en) Uniprocessor operating system design facilitating fast context switching
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US9658877B2 (en) Context switching using a context controller and on-chip context cache
US6631460B1 (en) Advanced load address table entry invalidation based on register address wraparound
US20140095848A1 (en) Tracking Operand Liveliness Information in a Computer System and Performing Function Based on the Liveliness Information
US20090100249A1 (en) Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core
US20190250913A1 (en) Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
WO1999021082A1 (en) Method and apparatus to force a thread switch in a multithreaded processor
US20140122842A1 (en) Efficient usage of a register file mapper mapping structure
US7152232B2 (en) Hardware message buffer for supporting inter-processor communication
US20070283138A1 (en) Method and apparatus for EFI BIOS time-slicing at OS runtime
US20050278707A1 (en) Method and system providing virtual resource usage information
US20050273776A1 (en) Assembler supporting pseudo registers to resolve return address ambiguity
CN111078289B (zh) 用于执行多线程系统的子线程的方法和多线程系统
US20130290688A1 (en) Method of Concurrent Instruction Execution and Parallel Work Balancing in Heterogeneous Computer Systems
JPH1091442A (ja) プロセッサ
WO2007138532A1 (en) Unified multi-ported register-file with uniform read and selective write ports

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

Termination date: 20180801

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