CN1720503A - 在多线程处理器中用于高速线程间中断的方法和设备 - Google Patents
在多线程处理器中用于高速线程间中断的方法和设备 Download PDFInfo
- Publication number
- CN1720503A CN1720503A CN 200380101480 CN200380101480A CN1720503A CN 1720503 A CN1720503 A CN 1720503A CN 200380101480 CN200380101480 CN 200380101480 CN 200380101480 A CN200380101480 A CN 200380101480A CN 1720503 A CN1720503 A CN 1720503A
- Authority
- CN
- China
- Prior art keywords
- thread
- interrupt
- cross
- register
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
一个多线程处理器,其包括一个用于处理从请求线程到目的线程的线程间中断的中断控制器。在一个说明性实施例中,该中断控制器接收传送线程间中断到目的线程的一个请求,确定是否线程间中断的目的线程被允许来接收线程间中断,并如果目的线程被允许来接收线程间中断,则使用线程标识符来控制线程间中断到目的线程的传送。通过在多线程处理器的标志寄存器中设置对应的中断挂起位,请求线程请求将线程间中断传送到目的线程。如果对应的允许位在多线程处理器的允许寄存器中被设置,则目的线程被允许来接收线程间中断。标志寄存器和允许寄存器可以在中断控制器内来执行。
Description
相关申请
本申请要求在2002年10月15日申请的、序列号为60/418,455、申请人为E.Hokenek等、标题为″高速线程间中断″的美国临时申请的优先权,其内容在此合并作为参考。
技术领域
本发明通常涉及数字数据处理器领域,特别是涉及用于多线程处理器中的中断技术。
背景技术
历史上,计算机系统使用″中断″机制来告知处理器意外的或偶发的活动或状况。例如,无效计算、网络分组到达、和磁盘存取的完成都会在标准的现代计算机上引起中断。不涉及处理器正常操作的专用硬件检测该状况并向处理器发信号。当接收中断的时候,处理器暂停其当前任务,执行处理该状况所必需的步骤,然后继续其普通执行的任务。中断措施使计算机快速地应答偶发事件而无需不断地检查或″轮询″它们。
多处理器系统一般支持处理器间中断,其允许一个处理器中断另一个处理器。处理器间中断被用来同步不同处理器的活动,并将系统或它们正在运行的程序中的变化状况告知处理器。例如,当多个处理器上运行的程序状态发生改变时,这些改变不仅必须被反映到检测到改变的处理器上,而且还要反映到执行该程序的所有处理器上。另外,处理器间中断可被用来告知处理器一处理器间消息已经到达。
处理器间中断的传送和接收相对较快,但是它仍需使用多个处理器时钟周期。用来发送和接收中断的中断控制器常常从处理器中被分离,而且需要多个周期的操作来处理。此外,实际上将中断从一个中断控制器发送到另一个中断控制器可能需要几个处理器时钟周期,因为处理器一般以比常规中断控制器更快的时钟频率运行。
多线程处理器是支持多个不同的指令序列或″线程″同时执行的处理器。各个处理线程协作使用比一个单独的线程更多的处理器计算能力。这种协作一般会导致比标准的多处理器系统更多的同步和通信,从而在通信机制的开销上付出更高的额外代价,比如从一个线程到另一个线程的中断,即线程间中断。
诸如使用″超线程技术″的Intel处理器之类的现有多线程处理器一般使用这样的技术来处理线程间中断:即在多处理器系统中模拟那些用来处理前述的处理器间中断的技术。因而,处理线程间中断的常规技术非常慢,并且可能在处理资源方面需要大量的开销。例如,一个线程使用传统方法来中断另一个线程时一般需要大量的指令执行周期。
从上文可以明显地看出,需要改进用于多线程处理器中的线程间中断处理的技术。
发明内容
本发明提供用于在多线程处理器中处理线程间中断的改进技术。
根据本发明的一方面,多线程处理器包括用于处理直接从请求线程到目的线程的线程间中断的中断控制器。
在一个说明性实施例中,中断控制器接收传送线程间中断到目的线程的一个请求,确定线程间中断的目的线程是否被允许用于接收线程间中断,且如果目的线程被允许用于接收线程间中断,则使用线程标识符来控制线程间中断到目的线程的传送。
通过在多线程处理器的标志寄存器中设置对应的中断挂起位(interrupt pending bit),请求线程请求将线程间中断传送到目的线程。当线程间中断被传送到目的线程时,中断挂起位可以被自动清除。
如果对应的允许位在多线程处理器的允许寄存器(enableregister)中被设置,则目的线程被允许来接收线程间中断。当线程间中断被传送到目的线程时,可以自动清除允许位以免目的线程同时接收多个中断,然后接着在线程间中断的服务之后复位以便重新允许目的线程接收其它中断。
在说明性实施例中,允许寄存器和标志寄存器都至少包括N个部分,其中每部分都对应于多线程处理器的N个线程之一。优选地,N个线程中的每一个都只允许访问允许寄存器的其对应部分,而不能访问对应于其它线程的允许寄存器的N-1个部分。然而,N个线程中的每一个都被允许访问标志寄存器的N个部分的每一个。
根据本发明的另一方面,中断控制器中的逻辑电路可以包括用于处理中断请求的中断请求逻辑、多个逻辑门和多路复用电路,这些逻辑门的每一个从每个允许寄存器和标志寄存器接收对应位作为输入。多路复用电路至少部分地根据线程标识符从逻辑门输出中至少选择一个用于控制线程间中断产生的输出。
中断控制器的逻辑电路还可以包括优先级逻辑电路,其用于相对于其它中断类型给予线程间中断优先级,其它的中断类型比如计时器中断、指令地址中断、外部产生的中断等等。
本发明在多线程处理器中有利地提供了一个用于传送和服务线程间中断的低延时、低开销的机制。例如,在上述的说明性实施例中,给定线程可能在单个指令执行周期内中断另一个线程。
附图说明
图1是一个可以执行本发明的示例处理系统的框图。
图2是一个更加详细的框图,其说明了图1处理系统的多线程处理器的实施例。
图3根据本发明的技术示出一个示例线程中断允许寄存器(TIER),其可以在图2的多线程处理器的中断控制器中被执行。
图4根据本发明的技术示出一个示例的中断标志寄存器(TIER),其可以在图2的多线程处理器的中断控制器中被执行。
图5示出根据本发明配置的中断控制器的一个说明性实施例。
图6是一个流程图,说明运用本发明技术来处理线程间中断。
具体实施方式
在此,本发明将被说明为在多线程处理器中被执行,该多线程处理器与主存储器、多线程的高速缓冲存储器和多线程的数据存储器相关联。然而应当理解,本发明不需要使用说明性实施例中的特定多线程处理器和存储器配置,而更一般地适于使用任何多线程处理器中断处理的应用,只要它们可提供改进的线程间中断的处理。
结合图1和图2将描述一个示例处理系统100,其执行根据本发明的线程间中断处理技术。
图1示出的处理系统100包括连接到主存储器104的多线程处理器102。多线程处理器102包括中断控制器105、多线程高速缓冲存储器110和多线程数据存储器112。
根据本发明的一方面提供一个改进技术,其用于在多线程处理器102中处理线程间中断。在一个说明性的实施例中,这些技术主要是在中断控制器105内执行。如图1中大略说明的,中断控制器105在这个实施例中被优选地集成在多线程处理器102内。
应当理解,尽管根据本发明技术来配置用于有效处理线程间中断的中断控制器105,然而它也可以被配置使用本领域技术人员所熟知的常规技术来处理其它类型的中断,比如数据或指令地址中断、计时器中断、外部产生的中断等等。例如,外部产生的中断可能包括与多线程处理器102外部的特定装置相关的中断,或与处理器的特定输入插脚相关的中断。
因此,中断控制器105可以包括在此描述的任何特定中断控制器元件之外或代替它们的各种常规元件。
图2示出一个更加详细的视图,即多线程处理器102的一个可能的执行过程。在这个实施例中,多线程处理器102包括中断控制器105、多线程高速缓冲存储器110、数据存储器112、高速缓冲存储器控制器114、指令解码器116、寄存器堆118和一组算术逻辑单元(ALU)120。多线程高速缓冲寄存器110在此还相当于多线程高速缓存。
应当指出,图1和图2中所示的特定布局是为了图解的清晰性,所属领域技术人员可以明显地看出其中还包括没有明确示出的附加或替换元件。
中断控制器105包括逻辑电路202和中断控制器寄存器204。在说明性的实施例中,寄存器204包括允许寄存器和标志寄存器,它们将分别结合图3和图4在下面被详细描述。逻辑电路202及其与寄存器204的相互作用将结合图5在下面被详细描述。
中断控制器105可以经由系统总线206连接到多线程处理器102的其它元件。
在这个说明性的实施例中,还与中断控制器105相关的是分支控制器210。分支控制器210被连接到高速缓存控制器114和中断控制器105,经由总线206或图中没有明确示出的其它适当连接,它还可以与多线程处理器102的一个或多个其它元件通信。尽管分支控制器210在图中被示为一个分离的元件,然后其在此被描述的功能可以完全或部分地在中断控制器105或多线程处理器102的其它元件内来执行。分支控制器210或关联的中断控制器105也可以执行其它功能,比如与常规的线程执行控制器相关的功能。
多线程高速缓存110包括多个线程高速缓存110-1、110-2、...110-N,其中,N通常表示多线程处理器102所支持的线程数。从而,每个线程在多线程高速缓存110中都有与之关联的对应的线程高速缓存。同样地,数据存储器112包括N个不同的数据存储器的实例,如图所示被表示为数据存储器112-1、112-2、...112-N。
多线程高速缓存110中的每个线程高速缓存可以包括具有一组或多组存储单元的一个存储器阵列。给定的线程高速缓存还可以包括,或者说与用于存储关联的线程标识符的线程标识符寄存器相关联。
多线程高速缓存110经由高速缓存控制器114与主存储器104接口。高速缓存控制器114确保来自主存储器104的适当指令被加载到多线程高速缓存110中。在这个说明性的实施例中,高速缓存控制器114结合逻辑电路或其它与单个的线程高速缓存110-1、110-2,...110-N相关的处理元件来运行,该高速缓存控制器114至少执行一部分地址映射技术,比如完全关联映射(fully associativemapping)、直接映射或组关联映射(set-associative mapping)。在2002年6月4日申请的美国专利申请序列号10/161,774和10/161,874的申请中,描述了适于结合本发明使用或通常指定到本申请的说明性的组关联映射技术,这两个申请的内容在此合并作为参考。
通常,多线程高速缓存110被用来存储多线程处理器102将执行的指令,而数据存储器112储存通过指令来操作的数据。指令通过指令解码器116从多线程高速缓存110取得,指令解码器结合寄存器堆118和算术逻辑单元120运行以用常规方式来控制指令的执行。多线程处理器元件116、118和120的操作在本技术领域中是熟知的,因此就不在此做进一步的详细说明。
数据存储器112一般被直接连接到主存储器104,尽管这个连接没有明确地在图中示出。
一个或多个存储器104、110和112可以被配置以便包括多个存储体(bank)或其它的指定部分。举例来说,每个存储体可以被看作由一个或多个存储模块组成,或由单个存储模块的指定部分组成。
在2002年10月11日申请的美国专利申请序列号为10/269,247,标题为″在多线程处理器中用于基于线程的存储器存取的方法和设备(Method and Apparatus for Thread-Based Memory Access in aMultithreaded Processor)″的申请中,描述了用于与多线程处理器相关的这些和其它存储器的基于线程的存储体的技术,其内容通过参考通常被指派并结合到本发明。
在此使用的术语″存储器″被广泛地解释为包含内部或外部存储器、高速缓冲存储器、数据存储器,或其它数据存储元件配置。本发明不受限于任何特定的存储器类型、配置或应用。然而应当指出,存储器在处理器技术中通常理解为不同于寄存器,比如在图2中包括寄存器堆118的那些寄存器。
访问寄存器堆的基于线程的技术在于2002年10月11日申请的美国专利申请序列号10/269,373的申请中被描述,其标题为″在多线程处理器中用于减少寄存器文件端口的方法和设备(Method andApparatus for Register File Port Reduction in a MultithreadedProcessor)″,其内容通过参考通常被指定并结合到本发明。
应当强调,本发明不要求图2中所示的特定的多线程处理器配置。本发明可以在多种其它的多线程处理器配置中来执行。
在2002年10月11日申请的美国专利申请序列号为10/269,372,标题为″用于有效处理收敛装置应用的多线程处理器(MultithreadedProcessor with Efficient Processing For Convergence DeviceApplications)″的申请中,描述了图2中所示的并适合于结合本发明使用的多线程处理器类型的更具体的例子,其内容在此通过参考通常被指定并合并到本发明。在美国专利申请序列号为10/269,372的申请中描述了多线程处理器的一个说明性实施例,它能够执行基于精简指令集计算机(RISC)的控制代码、数字信号处理器(DSP)码、Java码和网络处理码。该处理器包括一个单指令多数据(SIMD)矢量单元、缩减单元、和长指令字(LIW)复合指令执行。
多线程处理器102可以被配置来使用称为令牌触发线程的线程方法或其它适当的线程技术。优选结合这类线程使用流水线数据处理。适用于本发明的线程技术和流水线技术的例子在于2002年10月11日申请,美国专利申请序列号为10/269,245,标题为″用于记号触发多线程的方法和设备(Method and Apparatus for Token TriggeredMultithreading)″的申请中描述,其内容在此通过参考通常被指定和结合到本发明中。
在多线程处理器中,给定线程通常可以根据硬件和软件来看待。与给定线程相关的特定处理器硬件往往被更特别地称为硬件线程单元或简单地称为″环境″。在此使用的术语″线程″意图是包括软件或硬件线程,或包括这两者。
下面将详细描述分支控制器210与中断控制器105和多线程处理器102的其它元件的交互作用。通常,分支控制器210保存规定每个线程执行什么指令的信息,并指挥线程高速缓存应该发送哪个指令给指令解码器116以用于解码和后续的执行。对于每个线程,分支控制器210因此一般将保持一个分离的程序计数器以及一个用于在每个普通的指令、分支指令、中断等等之后更新程序计数器的机制。
在图2的框图中,示出了在分支控制器210和中断控制器105之间的两个连接212和214。下面将在图5中描述其所示出的这些连接的更加详细的例子。分支控制器210使用连接212询问中断控制器105,看接下来将执行的线程是否有一个中断,在此称之为″接下来执行″线程。中断控制器105通过连接214向分支控制器210返回一个这个询问的响应。在图5的示例中,连接212更具体地被指定来识别将被中断的特定线程,而连接214按需包括与特定中断相关的地址和控制输出。
如上所述,根据本发明的一方面提供了多线程处理器102所用的改进的线程间中断处理技术。
在本发明的一个说明性实施例中,例如多线程处理器102的多线程处理器被配置以便允许一个线程在单个指令执行周期内中断另一个线程。如下所述,通过将中断控制器105集成到多线程处理器102,从而使处理线程更快速地访问中断控制器寄存器204,传送、服务或者说处理线程间中断的时间显著地减少。
图3和图4分别说明示例性的允许寄存器和标志寄存器,它们根据本发明与中断控制器105相关联。图3和图4的寄存器可以被看作在图2中示出的寄存器204的具体示例。下面将详细描述的是,这些说明性的中断控制器寄存器控制在任何给定时间将哪个中断传递到哪个线程,并且可以在单个指令执行周期中被读取或修改。如上所述,这些寄存器优选和多线程处理器102集成。例如,这些中断控制器寄存器可能就是所谓的″专用″寄存器,其被集成到中断控制器105中或多线程处理器内的其它地方。然而,其它类型的寄存器也可以用于执行本发明的技术。
在结合图3到图5描述的实施例中,为了图解简明而假定线程数N为8。当然,本发明不限于这个特定的线程数。所属领域技术人员很容易就能明白,此处所披露的方案可以用简单直接的方法来修改以容许其它数目的线程。
首先参考图3,其显示了线程中断允许寄存器(TIER)300。TIER可以被视作八个不同的四位寄存器,每个线程分配一个寄存器,尽管在这个实施例中TIER采用单个32位寄存器来实现,其中位0、8、16和24与线程1相关、位1、9、17和25与线程2相关,依此类推。
中断控制器被配置来确保每个线程只可以访问TIER中其对应的部分。对于八个线程中的每一个,TIER包括数据地址(DADR)中断允许位、指令地址(IADR)中断允许位、计时器中断允许位、和主中断允许位。对于给定的其中一个线程,主中断允许位在设置时允许线程从所有中断源接收中断,并且在清除时防止线程从所有中断源接收中断。为了图解清晰起见,尽管可以使用其它假定,然而依然假设在此使用的术语″设置″和″清除″涉及相应的逻辑0和逻辑1″电平。
应当指出,TIER不要求特定位来允许线程间中断,因为说明性实施例中的这些中断至少可以部分地通过在多线程处理器102上运行的软件来产生。
通常,TIER允许给定线程允许线程从多种中断源来接收中断。在这个实施例中,通过在TIER的相应部分设置主允许位,给定线程可以确保从所有中断源接收中断,包括从其它线程接收线程间中断。应当指出,可以使用其它方案来允许根据本发明的线程间中断。
图4示出线程中断标志寄存器(TIFR)400,其在这个实施例中被八个线程共享。TIFR在每个线程都可以访问整个寄存器的情况下在线程之间被共享。这与TIER相反,其包括只有对应线程可以访问的不同的部分。
TIFR包括一组用于八个线程中每一个的标志位、在此也被称作″中断挂起″位。更具体地,TIFR对于一个给定线程总共包括四个中断挂起位,也就是分别用于数据地址(DADR)中断、指令地址(IADR)中断、计时器中断和线程间(XTHR)中断的一个单独的中断挂起位。TIFR在这个实施例中也用单个32位的寄存器来实现,其中0、8、16和24位与线程1相关,而1、9、17和25位与线程2相关,依此类推。在TIFR中,给定的中断挂起位在被设置时指示对应的中断待决,和在被清除时指示对应的中断并非待决。通常,通过在TIFR中设置对应的XTHR中断挂起位,给定的线程设置用于另一个线程的线程间中断。
如上所示,本发明的TIER和TIFR寄存器不要求附图中所示的特定配置。例如,尽管在图3和图4中被显示为单个寄存器,然而TIER和TIFR中的一个或两个可以替换地用多个寄存器实现,比如每个线程一个寄存器,每对线程一个寄存器,诸如此类。TIER和TIFR的多种其它替换配置对于所属领域技术人员是显而易见的。
图5示出本发明说明性实施例的中断控制器105的一个更详细的视图。中断控制器105包括TIER300和TIFR400,它们用上述方法实现为32位的寄存器。中断控制器105还包括具有中断请求逻辑电路502的逻辑电路、在这个实施例中包括32个二输入与门的逻辑门组504、多路复用电路506和产生中断地址和控制输出的优先逻辑508。
中断请求逻辑电路502被连接到中断请求总线510,其可以表示图2系统总线206的至少一部分。中断请求逻辑电路502还经由线路512接收作为输入的中断请求线程标识符。术语″线程标识符″在此还被表示为Thread_ID。其中一个给定的线程的线程标识符可被存储在上述的用于该线程的线程标识符寄存器中。在当前例子中,如前述当N等于8时,线程标识符可以是三位标识符。
通常,输入510和512用来确定应该设置TIFR中的哪个位。更具体地说,经由输入512提供的中断请求线程标识符被中断控制器105用来选择用于所请求目的线程的标志寄存器部分,中断请求总线510提供规定所请求中断的特定类型的信息。
在此使用的术语″线程标识符″意在包括任何适用于在多线程处理器中识别特定线程或多个线程的组的信息。非限制性地举例来说,线程标识符可以对应于多线程处理器中的线程计数器的输出。更具体地说,给定的多线程处理器可以被配置成用预定次序来处理多个线程,比如循环次序,同时线程计数器输出被用来识别正在被执行的特定线程。在这样一个实施例中,用循环次序处理的线程总共有8个,每个线程由三位标识符来识别,因此三位计数器的输出可以被用来识别正在被处理的特定线程。其它实施例可以使用线程标识符的非计数器实现。适用于本发明的各式各样的线程标识符配置对所属领域技术人员来说是显而易见的。
多线程处理器102的不同线程可以经由中断请求逻辑电路502访问TIER和TIFR。请求另一个线程的线程间中断的给定线程经由输入512把要被中断的线程的中断请求线程标识符提供给中断请求逻辑电路502。将由线程间中断来中断的线程在此也称为″目的″线程。
该逻辑门组504的二输入端与门的每个输入端接收一对位作为输入,一个来自于TIER,一个来自TIFR。例如,二输入端与门的最左端接收TIER和TIFR的第32位作为输入,即在TIER和TIFR的DADR部分中被识别为位31的位。TIER和TIFR的其它位同样成对地施加到各二输入端与门。
与门的输出被施加到多路复用电路506的输入端。更具体地说,四个八至一的多路复用器506-1、506-2、506-3和506-4中的每一个都接收该逻辑门组504中32个二输入端与门的八个输出作为输入。由多路复用器506-1、506-2、506-3和506-4接收的输入分别与TIER和TIFR的0-7位、8-15位、16-23位和24-31位相关。
每个多路复用器还接收下一个执行线程的线程标识符作为选择信号输入,其经由连接212用结合图2的上述方法从分支控制器210提供给中断控制器105。这个线程标识符连同上述询问一起被提供,该询问关于下一个将被执行的线程是否有任何未决中断。基于被施加的″接下来执行″线程标识符,每个多路复用器都把被选择的八个输入的其中一个输出到优先逻辑508。优先逻辑508使用这些输入来产生适当的地址并控制用于对应中断的输出。
下面将要详细描述的是,如果″下一个执行″的线程有未决中断,则中断控制器105响应上述询问,首先检测主中断允许位是否被设置用于特定的目的线程。然后,如果设置了主中断允许位,则中断控制器105经由连接214把适当的控制输出和对应的中断处理程序地址传送到分支控制器。
图6是说明在中断控制器105中与线程间中断的处理相关的示例操作的流程图600。为了传送线程间中断,请求线程在TIFR中设置对应于目的线程的XTHR位,如步骤602中所示。基于″下一个执行″线程的线程标识符,多路复用器506-1、506-2、506-3和506-4把对应二输入端与门的输出传递到优先逻辑508。
如果目的线程在TIER中设置了它的主允许位,则对应的与门输出应该是逻辑高电平,并且这个方案结合多路复用器的操作提供这样一个机制:用于通知优先逻辑508产生线程间中断以用于在下个适宜的机会将其传送到目的线程,如在步骤604中所示。
在该说明性实施例中,下个适宜的机会通常出现在下次目的线程将执行一个指令的时候。如前所示,目的线程还必须设置了它的主允许位。在步骤606中,中断被传送到目的线程,一般以地址和来自优先逻辑508的控制信息的形式,这将在下面被详细描述。
在中断被传送到目的线程之后,其主允许位被自动清除,如步骤608所示。这防止目的线程同时接收多个中断,而在这个说明性实施例中处理器通常无法正确地处理这些中断。然后,如步骤610所示,中断由目的线程来服务。如步骤612所示,目的线程的主允许位在中断被服务之后被自动设置以便重新允许(re-enabled)目的线程的中断。然后,进程返回步骤602以处理另一个线程间中断。
在图6的流程图中,主允许位自动清除和设置应该被认为是示例性的而不是本发明所要求的。在其它实施例中,这个功能可以用其它技术来实现。例如,主允许位可以由适当的软件指令来明确地设置或清除。
尽管未在图中示出,然而用于自动清除TIFR中的XTHR中断挂起位的操作可以被包括在步骤606之后的进程中,但是这个位在中断被服务时将不会被重新允许。
如前所示,优先逻辑508基于多路复用电路506的输出产生地址和控制信息。在这个实施例中,线程间、计时器、指令地址和数据地址中断的优先级被固定在顺序a、b、c和d,其中,a、b、c和d表示多路复用器506-1、506-2、506-3和506-4的相应输出。对于给出的一组四个输入a、b、c和d,优先逻辑508产生中断地址和多位控制信号作为输出。地址输出给出用于中断处理程序的执行地址,它是用于线程的新的执行地址。例如,多位控制信号可以是一个五位信号,其中,最高有效位指出是否已经取得中断,而剩余位指出将取得哪个中断。
作为更具体的示例,地址和控制信号可以基于输入a、b、c和d具有下列值,其中,地址用十六进制计数法给出而控制信号用二进制计数法给出:
Xthr_I0=a; XThr_adress:0x200
cntl:10001
Xthr_I1=(not a and b); Timer_adress:0x280
cntl:10010
Xthr_I2=(not a and not b and c); IADR_adress:0x300
cntl:10100
Xthr_I3=(not a and not b and not c and d); DADR_adress:0x380
cntl:11000
Otherwise Address:don't care
cntl:00000
在上述示例中,Xthr_I0、Xthr_I1、Xthr_I2和Xthr_I3表示优先逻辑输入a、b、c和d的逻辑值的不同组合,其中,值的存在指出值处于逻辑高电平并且术语在值前面的术语″not(非)″指出值处于逻辑低电平。
应当指出,上述的固定优先级方案并不是本发明必须的,也可以直接采用诸如随机优先级或可编程优先级之类的其它类型的优先级。
如上所示,本发明的线程间中断技术比传统技术有更多的优越性。例如,本发明允许给定线程在单个指令执行周期内中断另一个线程。从而,本发明在多线程处理器中有利地提供了一个用于传送和服务线程间中断的低延时、低开销的机制。
本发明的上述实施例只是示例性的,并且对于本技术领域技术人员来说,在附加权利要求书的范围内显然可以做出大量替换实施例。例如在说明性的实施例中,与中断控制器相关的特定的电路方案可以被替换为替换的电路方案。此外,线程数、允许寄存器和标志寄存器的类型和配置、中断优先级、线程标识符配置以及说明性实施例的其它参数可以被改变来适应某个给定应用的特定需要。
Claims (20)
1.一种用于在多线程处理器中处理从请求线程直接到目的线程的线程间中断的方法,该方法包括下列步骤:
接收把线程间中断传送到目的线程的请求;
确定线程间中断的目的线程是否被允许用于接收线程间中断;和
如果目的线程被允许来接收线程间中断,则使用线程标识符来控制把线程间中断传送到目的线程。
2.如权利要求1所述的方法,其中,通过在多线程处理器的标志寄存器中设置对应的中断挂起位,请求线程请求把线程间中断传送到目的线程。
3.如权利要求2所述的方法,其中,中断挂起位在线程间中断被传送到目的线程的时候被自动清除。
4.如权利要求1所述的方法,其中,如果在多线程处理器的允许寄存器中设置了对应的允许位,则目的线程被允许来接收线程间中断。
5.如权利要求4所述的方法,其中,允许位在线程间中断被传送到目的线程的时候被自动清除,以免目的线程同时接收多个中断。
6.如权利要求5所述的方法,其中,允许位在线程间中断被目的线程服务的时候被自动重新设置。
7.如权利要求1所述的方法,其中,对线程间中断的请求被接收,并且线程间中断在一个时段内接着被传送到目的线程,该时段小于多线程处理器的指令执行周期。
8.如权利要求1所述的方法,其中,接收、确定和使用步骤在中断控制器中被执行。
9.如权利要求8所述的方法,其中,中断控制器包括允许寄存器、标志寄存器和逻辑电路。
10.如权利要求9所述的方法,其中,允许寄存器至少包括N个部分,每部分都对应于多线程处理器N个线程中的一个线程。
11.如权利要求10所述的方法,其中,每个线程都只被允许访问允许寄存器的其对应部分,而不能访问对应于其它线程的允许寄存器的N-1个部分。
12.如权利要求9所述的方法,其中,标志寄存器至少包括N个部分,每部分都对应于多线程处理器N个线程中的一个线程。
13.如权利要求12所述的方法,其中,每个线程被允许访问标志寄存器的该N部分中的每个部分。
14.一个用于在多线程处理器中处理从请求线程直接到目的线程的线程间中断的设备,该设备包括:
一个包括逻辑电路的中断控制器,中断控制器被配置用于:(i)接收把线程间中断传送到目的线程的请求;(ii)确定是否线程间中断的目的线程被允许来接收线程间中断;和(iii)如果目的线程被允许来接收线程间中断,则使用线程标识符来控制线程间中断向目的线程的传送。
15.如权利要求14所述的设备,其中,中断控制器还包括允许寄存器和标志寄存器,其中,请求线程通过在标志寄存器中设置对应的中断挂起位来请求把线程间中断传送到目的线程,并且如果在允许寄存器中设置了对应的允许位,则目的线程被允许来接收线程间中断。
16.权利要求15的设备,其中,逻辑电路包括:
中断请求逻辑电路,其用于处理中断请求;
多个逻辑门,其中每个逻辑门从每个允许寄存器和标志寄存器接收对应位作为输入;和
多路复用电路,多路复用电路至少部分地基于线程标识符从逻辑门输出中至少选择一个用于控制线程间中断产生的输出。
17.如权利要求16所述的设备,其中,该逻辑电路还包括相对于至少一个附加类型的中断给予线程间中断优先级的优先逻辑,附加类型的中断至少包括计时器中断、指令地址中断和数据地址中断其中的一个。
18.如权利要求17所述的设备,其中,优先逻辑电路被配置来提供线程间中断,其具有比辅助类型的中断更高或更低的优先级。
19.一个多线程处理器,包括:
一存储器,其至少包括数据存储器和高速缓冲存储器中的一个;和
一中断控制器,其用于在多线程处理器中处理从请求线程直接到目的线程的线程间中断,中断控制器被配置用于:(i)接收把线程间中断传送到目的线程的请求;(ii)确定是否线程间中断的目的线程被允许来接收线程间中断;和(iii)如果目的线程被允许来接收线程间中断,则使用线程标识符来控制线程间中断向目的线程的传送。
20.一件包括其中具有程序代码的机器可读的存储媒介的产品,该程序代码用于在多线程处理器中处理从请求线程直接到目的线程的线程间中断,其中,该程序代码在由处理器运行的时候执行下列步骤:
接收把线程间中断传送到目的线程的请求;
确定线程间中断的目的线程是否被允许来接收线程间中断;和
如果目的线程被允许来接收线程间中断,则使用线程标识符来控制把线程间中断传送到目的线程。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41845502P | 2002-10-15 | 2002-10-15 | |
US60/418,455 | 2002-10-15 | ||
US10/404,175 | 2003-04-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1720503A true CN1720503A (zh) | 2006-01-11 |
Family
ID=35931766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200380101480 Pending CN1720503A (zh) | 2002-10-15 | 2003-10-10 | 在多线程处理器中用于高速线程间中断的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1720503A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101918920A (zh) * | 2007-12-12 | 2010-12-15 | 高通股份有限公司 | 用于多线程处理器的共享的中断控制器 |
CN106133694A (zh) * | 2014-03-27 | 2016-11-16 | 国际商业机器公司 | 多线程的动态启用 |
CN109871275A (zh) * | 2017-12-01 | 2019-06-11 | 晨星半导体股份有限公司 | 多处理器系统及其处理器管理方法 |
CN112055853A (zh) * | 2018-03-31 | 2020-12-08 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的多个类型的线程标识符 |
-
2003
- 2003-10-10 CN CN 200380101480 patent/CN1720503A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101918920A (zh) * | 2007-12-12 | 2010-12-15 | 高通股份有限公司 | 用于多线程处理器的共享的中断控制器 |
CN101918920B (zh) * | 2007-12-12 | 2014-08-27 | 高通股份有限公司 | 用于多线程处理器的共享的中断控制器 |
CN106133694A (zh) * | 2014-03-27 | 2016-11-16 | 国际商业机器公司 | 多线程的动态启用 |
CN106133694B (zh) * | 2014-03-27 | 2019-05-17 | 国际商业机器公司 | 一种用于配置中的多线程的动态启用的计算机实施的方法、计算机系统及计算机可读介质 |
CN109871275A (zh) * | 2017-12-01 | 2019-06-11 | 晨星半导体股份有限公司 | 多处理器系统及其处理器管理方法 |
CN112055853A (zh) * | 2018-03-31 | 2020-12-08 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的多个类型的线程标识符 |
CN112055853B (zh) * | 2018-03-31 | 2024-04-09 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的电路及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1095121C (zh) | 用小规模硬件灵活应付多个中断处理的中断控制装置 | |
CN1188794C (zh) | 到一个共享的协处理器资源的多个逻辑接口 | |
CN1279472C (zh) | 多处理器数据处理系统 | |
CN1102265C (zh) | 用于在多条总线之间传送信息的系统和方法 | |
US8321615B2 (en) | Source core interrupt steering | |
EP0535821B1 (en) | Method and apparatus for dynamically steering undirected interrupts | |
CN1199099C (zh) | 紧密耦合式多处理器的快速多线程执行 | |
CN1114860C (zh) | 处理多个电平触发和边沿触发中断的方法和装置 | |
US20140223060A1 (en) | Injecting Interrupts in Virtualized Computer Systems | |
CN1304962C (zh) | 转译后备缓冲器清除滤波器 | |
CN1397877A (zh) | 据物理分页指针比较结果转送数据的装置及方法 | |
CN1274123A (zh) | 分区系统的带有动态配置的外围元件互联槽控制装置 | |
CN101036116A (zh) | 跨多内核的分享监控快取列 | |
CN1120197A (zh) | 一种多重处理系统的可定标的系统中断结构 | |
KR20050050126A (ko) | 멀티스레디드 프로세서에서 고속 크로스-스레드 인터럽트를위한 방법 및 장치 | |
CN1330782A (zh) | 非均匀存储器存取(numa)数据处理系统的中断体系结构 | |
CN1653425A (zh) | 在逻辑分区数据处理系统中动态分配和解除分配处理器的方法和装置 | |
CN1496517A (zh) | 用于宽带网络的计算机体系结构的数据同步系统和方法 | |
JPS58225442A (ja) | 優先順位制御回路 | |
US20120023502A1 (en) | Establishing thread priority in a processor or the like | |
CN1601489A (zh) | 利用共享专用高速缓存减少高速缓存失误率的方法和系统 | |
CN1991795A (zh) | 用于信息处理的系统和方法 | |
CN1684055A (zh) | 用于中断源信号分配的装置和方法 | |
CN1645352A (zh) | 管理阵列处理器中的数据的方法及执行此方法的阵列处理器 | |
CN1478346A (zh) | 相互通信的预处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |