CN100449478C - 用于实时多线程处理的方法和装置 - Google Patents
用于实时多线程处理的方法和装置 Download PDFInfo
- Publication number
- CN100449478C CN100449478C CNB038182122A CN03818212A CN100449478C CN 100449478 C CN100449478 C CN 100449478C CN B038182122 A CNB038182122 A CN B038182122A CN 03818212 A CN03818212 A CN 03818212A CN 100449478 C CN100449478 C CN 100449478C
- Authority
- CN
- China
- Prior art keywords
- fine journey
- lock unit
- performance element
- real
- fine
- 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
Links
- 238000000034 method Methods 0.000 title claims description 119
- 230000008569 process Effects 0.000 claims description 73
- 230000001360 synchronised effect Effects 0.000 claims description 57
- 230000015572 biosynthetic process Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 29
- 238000003672 processing method Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 4
- 238000002360 preparation method Methods 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 9
- 241000063652 Evisa Species 0.000 abstract description 2
- 238000005755 formation reaction Methods 0.000 description 26
- 230000007246 mechanism Effects 0.000 description 15
- 239000000835 fiber Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 101150026173 ARG2 gene Proteins 0.000 description 2
- 101100005166 Hypocrea virens cpa1 gene Proteins 0.000 description 2
- 101100379633 Xenopus laevis arg2-a gene Proteins 0.000 description 2
- 101100379634 Xenopus laevis arg2-b gene Proteins 0.000 description 2
- 101150088826 arg1 gene Proteins 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- INJRKJPEYSAMPD-UHFFFAOYSA-N aluminum;silicic acid;hydrate Chemical compound O.[Al].[Al].O[Si](O)(O)O INJRKJPEYSAMPD-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000010405 clearance mechanism Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000013404 process transfer Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
Abstract
本发明描述了一种计算机结构、硬件模块和软件方法,通称为“EVISA”(10,20,100),其允许以保持所有处理器(10)有用繁忙并满足实时定时约束条件(constraint)(100)的方式执行低系统开销多线程处理程序。所述体系结构可以结合到多线程处理器(10)的设计中,或可以用作与先存的非多线程处理器以及用于嵌入应用的专有知识产权(IP)核心模块相结合独立的体系结构模块。
Description
优先权要求
本申请要求2002年5月31日申请的美国临时专利申请序列号第60/384495号的优先权,其公开内容以引用的方式整体并入本文。
发明背景
本申请具有转让给国家科学基金会(NSF)、国家安全局(NSA)和国防部高级研究计划局(DARPA)的政府权利。
技术领域
本发明总体上涉及一种计算机体系结构,更具体地说,涉及一种用于实时多线程处理的方法和装置。
背景技术
在整个电子计算机时代的大部分时间内,多任务运算系统都得到了利用。在多任务运算系统中,计算机处理器通过重复的从一个程序切换到另一个程序并行地执行一个以上的计算机程序。如果一个程序延迟,一般来说是在等待从盘中检索数据的时候,中央处理单元(CPU)将切换到另一个程序,从而在间歇中完成有用工作。所述切换过程一般来说是十分费时的,但是仍比等待数据要快。
最近,计算机设计者已经开始将所述理念用于充分小的工作单元。传统的单线程处理器效率差,因为处理器必须在执行一些步骤的过程中进行等待。例如,一些步骤使处理器要等待数据源变得可用或使处理器要等待需满足的同步条件。然而,在此过程中所浪费的时间通常远远少于多任务运算系统切换到另一程序(假设另一程序是可用的)所耗费的时间。为了保持处理器工作繁忙和提高工作效率,发明了多线程处理器。
在多线程处理器中,将计算机所执行的工作表示为多个线程,每个线程执行一个特定任务。一些线程可以独立于其它线程执行,而另一些线程可以针对共同的任务与其它线程协作。虽然处理器可以仅执行一个线程或同时执行有限个线程,但是,如果正在执行的线程必须等待外部事件的发生,例如数据源的可用或与其它线程的同步,则处理器将切换线程。所述切换远远快于由多任务运算系统所进行的程序间的切换,其可以是瞬时的或仅需要几个处理器周期。如果等待时间超过所述切换时间,处理器效率将会得到提高。
计算机系统体系结构和程序设计趋势正在向多线程运算而不是单一的顺序任务发展。为了对程序进行多线程处理,编译器将其分解为一个以上的线程。一些传统的计算机技术还利用了作为一些指令处理器设计的主干的多线程能力。然而,当前多线程技术主要致力于对控制的多个独立线程进行交叉,以提高CPU中全部运算单元的利用率。在这点上,它们与多任务运算系统是类似的,尽管这样远远更加有效。不幸的是,当多个线程针对一个单一的任务共同工作时,需要额外的机构(硬件或软件)来协调所述多个线程。这些机构相对于CPU的速率而言会耗费很多时间。为了使CPU保持高效率,编程设计人员必须尽可能保守地利用这些机构。因此,编程设计人员需要最小化线程数以及这些线程之间的互动,这会限制许多本质上需要很多线程和/或协作线程之间的更多互动的应用程序可实现的性能。
由此,在本领域中需要一种克服现有技术的缺陷的多线程处理装置和方法。
发明内容
本发明通过提供一种用于实时多线程处理的方法和装置解决了现有技术中的问题,所述方法和装置在至少三个区域内是唯一的。首先,本发明的结构模块提供了多线程处理方式:其中,多线程的控制可以从指令处理器中分离。第二,本发明的多线程模块的设计允许处理实时约束条件(constraint)。最后,本发明的多线程模块用于与新的编程语言以及提高系统的整体效率的编译技术协同工作。
本发明在传统多线程技术方面提供了几个优点。传统多线程处理技术在单个任务中协调多个线程时需要附加的机构(硬件或软件)来协调线程。相反,本发明的方法和装置包括用于同步相关线程的高效低系统开销的事件驱动的机构,其与编程语言和编译技术协作。本发明的方法和装置还在整个线程同步和调度机构中提供了对处理实时约束条件(constraint)的体系结构特征的平滑整合。最后,本发明的装置和方法将多线程控制从指令处理器中分离,可以实现将现存专用IP核心模块的快速而简单的整合在芯片上系统设计中,而不用修改模块设计,所述模块可以是例如信号处理和加密单元。
本发明的方法和装置在包含计算机处理器的任意设备中都可以取得有益效果,在所述设备中,所述处理器需要与另一设备相互作用(例如另外的处理器、存储器、专用输入/输出或功能单元等),换句话说,相互作用有可能阻挡处理器的进程。这些设备的一些实施例是个人计算机、工作站、文件和网络服务器、嵌入式计算机系统、手持计算机、无限通信设备、个人数字助理(PDA)、网络开关和路由器等。
在本发明中,通过将多线程处理单元与指令处理器分离,相比于多线程处理能力集成到处理器中的设计,其相互作用仅需花费少量额外时间。由于其使部件之间的互用性增强,并具有补充现有处理器设计和技术的优点,因此,这种折衷是可接受的。
由于本发明的多线程模型不同于其它的并行同步的模型,因此,其包含不同的编程技术。本发明的发明人所提出的编译技术使编程器的任务相当简单。
根据本发明的目的,正如这里所具体和广义的说明的,本发明包括由计算机实现的装置,包括:通过互连网络连接的一个或多个多线程节点,每个多线程节点都包括:用于执行有效短线程(下文称为纤程(fiber))的执行单元(EU),该执行单元具有至少一个计算机处理器并可以对存储器和/或其它外部元件的连接进行访问;用于调度和同步纤程和过程以及处理远程访问的同步单元(SU);两个队列,就绪队列(RQ)和事件队列(EQ),EU与SU通过其相互通信,就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器,事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元;与执行单元和同步单元互连并共享的本地存储器;和到互连网络并与同步单元互连的链接。
另外,根据本发明的目的,正如这里所具体和广义的说明的,本发明包括由计算机实现的方法,包括下述步骤:提供通过互连网络连接的一个或多个多线程节点;和为每个多线程节点提供:用于执行有效纤程的执行单元(EU),执行单元具有至少一个计算机处理器并可以对存储器和/或其它外部元件的连接进行访问;用于调度和同步纤程和过程以及处理远程访问的同步单元(SU);两个队列,就绪队列(RQ)和事件队列(EQ),EU与SU通过其相互通信,就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器,事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元;与执行单元和同步单元互连并共享的本地存储器;和到互连网络的并与同步单元互连的链接。
本发明提供一种实时多线程处理装置,包括:
通过互连网络连接的一个或多个多线程节点,每个多线程节点包括:
用于执行有效纤程的执行单元;
用于调度和同步纤程和过程以及处理远程访问的同步单元,所述同步单元与互连网络互连;和
就绪队列和事件队列,执行单元与同步单元通过所述队列进行通信;
其中,同步单元包括:
系统总线接口,执行单元通过该系统总线接口访问事件队列和就绪队列,同步单元通过该系统总线接口访问存储器;
网络接口,同步单元通过该网络接口与互连网络互连;
内部事件队列,包含等待将被结束或向前传送到另一节点的未完成事件;
内部就绪队列,包含准备将被执行的纤程的列表;
帧标识符/指令指针区,存储与执行单元当前正在执行的每一纤程相关的信息;
输出消息队列,缓冲等待通过互连网络输出的消息;
令牌队列,保持还没有分配给节点的所有未决线程化过程调用;
内部高速缓存,保持由同步单元读取的最近访问的同步间隙和数据;
执行单元消息汇编区,从系统总线接口收集存储序列,并将完成的事件插入到事件队列;
网络消息汇编区,接收输入消息,并将完成的消息插入到事件队列;和
分布式实时管理器,确保具有高优先级或实时约束条件的事件、消息和纤程被置于具有较低优先级的对象之前。
本发明还提供一种实时多线程处理方法,包括:
提供通过互连网络连接的一个或多个多线程节点,每个多线程节点执行一方法,该方法包括:
由执行单元执行有效纤程;
由同步单元调度和同步纤程和过程以及处理远程访问,所述同步单元与互连网络互连;和
通过就绪队列和事件队列在执行单元与同步单元之间提供通信;
其中,调度和同步纤程与过程的子步骤包括:
提供系统总线接口,执行单元通过该系统总线接口访问事件队列和就绪队列,同步单元通过该系统总线接口访问存储器;
提供网络接口,同步单元通过该网络接口与互连网络互连;
提供内部事件队列,该内部事件队列包含等待结束或向前传送到另一节点的未完成事件;
提供内部就绪队列,该内部就绪队列包含准备被执行的纤程的列表;
提供帧标识符/指令指针区,该帧标识符/指令指针区存储与执行单元正在执行的每一纤程相关的信息;
提供输出消息队列,该输出消息队列缓冲等待通过互连网络输出的消息;
提供令牌队列,该令牌队列保持还没有被分配给节点的所有未决线程化过程调用;
提供内部高速缓存,该内部高速缓存保持由同步单元读取的最近访问的同步间隙和数据;
提供执行单元消息汇编区,该执行单元消息汇编区从系统总线接口收集存储序列,并将完成的事件插入到事件队列;
提供网络消息汇编区,该网络消息汇编区接收输入消息,并将完成的消息插入到事件队列;和
提供分布式实时管理器,该分布式实时管理器确保具有高优先级或实时约束条件的事件、消息和纤程被置于具有较低优先级的对象之前。
本发明的适用性的进一步范围通过下文中的详细说明将更加明显。但是,应当理解,指出本发明的优选实施方式的详细说明和特定的实施例仅用于示例,因为通过本发明详细的说明在本发明的精神和范围之内对本发明作出多种变形和改进对本领域技术人员来说是显而易见的。应当理解,上述概述和下文的详细说明都仅是示例性和说明性的,并不象权利要求那样对本发明作出限制。
附图说明
通过下文中所给出的详细说明以及仅用于示例的附图,可以更加全面的理解本发明,所述说明及附图都不对本发明作出任何限制,其中:
图1是说明根据本发明一个方面的计算机体系结构、硬件模块以及软件方法的多线程体系结构模块的示意图;
图2是图1所示的模块中所使用的同步单元(SU)的相关数据通路的示意图;和
图3是由图1中所示的模块建立的同时执行的相同过程示例中的具有相同的纤程的两个示例产生的情形的示意图。
具体实施方式
下文中对本发明的详细说明参考了附图。不同的附图中相同的附图标记标示相同或相似的元件。此外,下文的详细说明并不对本发明进行限制。而是,本发明的范围由附加的权利要求及其等价内容限定。
本发明广义上涉及用于实时多线程处理的方法和装置。更具体地说,本发明涉及计算机体系结构、硬件模块以及软件方法,通称为“EVISA”,计算机体系结构、硬件模块以及软件方法使得低系统开销多线程程序执行能够以保持所有处理器有效地繁忙工作并满足实时定时约束条件(constraint)的方式得以执行。所述体系结构可以结合到多线程指令处理器的设计中,或可以用作与先存在的非多线程处理器和用于嵌入应用的专有知识产权核心模块相结合的独立体系结构模块。
A.计算机体系结构、硬件模块以及软件方法的线程模式概述
在计算机体系结构、硬件模块以及软件方法的模式中,程序指令分为三层:(1)线程化过程;(2)纤程;和(3)单独的指令。前两层形成计算机体系结构、硬件模块以及软件方法的两层线程层次。每层都定义了该层的成分之间的排序约束条件以及用于确定满足所述约束条件的进度表的机构。
单独的指令处于最低级。单独的指令遵守顺序执行语义(semantic),其中,要被立即执行的下一指令直接跟在当前指令之后,除非所述顺序被分支指令明确地改变。通过允许独立相邻的指令同时执行来利用适量的并行处理的方法,称作指令级并行处理,是公知的,并且只要所得到的性能在功能上等价于顺序执行,就允许使用所述处理方法。
正如本文所使用的,术语“纤程”意味着共享共同语境的指令集,由一组寄存器和包含与其它纤程共享的变量的帧的标识符构成。当处理器开始执行纤程时,其执行纤程的指定的第一指令。纤程中随后的指令由指令顺序语义确定。一般来说对相同纤程中的其它指令,分支指令(不管是有条件的还是无条件的)是允许的。在纤程中对顺序过程进行的调用也是允许的。当遇到显式纤程终止标记时,纤程结束执行过程。纤程的语境从纤程的开始到其终止都保持有效。
由于纤程是共享共用语境的指令集,因此如果每个纤程都具有唯一的语境,则两个以上纤程有可能共享相同的指令集。这与传统计算机中的“重入过程”相似,其中,程序的相同部分的多个复制件使用程序堆栈的不同部分。本文使用的术语“纤程编码”指的是纤程的指令,不包括语境,即由纤程执行的程序的部分。
纤程通常是非优先的。一旦纤程开始执行,将不会被挂起,并且除了特定情况的出现,否则其语境将不会从有效处理中删除。这包括由运行时间错误引起的阱的产生以及为了满足实时约束条件而引起的纤程的中断。因而,纤程是利用原子能排定的。当所有数据和控制相关性已经得到满足时,将纤程“使能”(进入一旦处理源可用就适于开始执行的状态)。
同步间隙(slot)和同步信号用于进行这个判定。同步信号(可能具有附带的数据)由满足数据或控制相关性的纤程或成分产生,并且告知接受者相关性已经得到满足。同步间隙记录有多少相关性还未得到满足。当该计数变为零时,将与该同步间隙相关的纤程使能,因为此时其已经获得了执行所必需的所有数据和控制许可。将计数复位,以使得纤程能够多次运行。
正如本文所采用的,术语“线程化过程”意味着共享超出单个纤程的寿命而继续存在的共用语境的纤程的集合。所述语境由过程的输入参数、局部变量和同步间隙组成。语境存储在帧中,当调用过程时,从存储器动态分配。与纤程的情况相同,术语“过程代码”指的是包括属于线程化过程的指令的纤程代码。
线程化过程由其它过程中的纤程明确调用。在线程化过程代码中的纤程代码当中,其中之一被指定为初始纤程。当调用线程化过程并且其帧已经准备好时,初始纤程被使能,并在处理源可用时马上开始执行。同一线程化过程中的其它纤程可以仅使用同步间隙和同步信号使能。显式终止命令用于终止执行所述命令的纤程以及纤程所属的线程化过程,这会引起帧的解除分配。由于过程中止是显式的,因此,不需要对这些帧进行不用单元收集。
B.计算机体系结构、硬件模块以及软件方法的多线程体系结构模块的描述
这部分解释了如何使常规处理器更好地工作(运行顺序纤程)和将专门针对计算机体系结构、硬件模块以及软件方法的线程模型的任务迁移到定制的协处理器模块中。不过,多线程处理能力另外还可以直接设计到处理器中,而不是将其制成一个单独的模块。上述结构中的机器(具有单独的协处理器)可以与图1中所示的及其相似。计算机由一个或多个由网络100连接的多线程节点10构成。每个节点10都包括下述五个成分:(1)用于执行有效纤程的执行单元(EU)12;(2)用于调度和同步纤程与过程并处理远程访问的同步单元(SU)14;(3)两个队列16,就绪队列(RQ)和事件队列(EQ),EU 12和SU 14通过所述队列进行通信;(4)本地存储器18,由EU 12和SU 14共享;和(5)到互连网络100的链路20。同步单元14和队列16专用于计算机体系结构、硬件模块以及软件方法的体系结构,如图1所示。
最简单的实现方式是为每个EU 12使用一个单线程的商业通用处理器。术语“COTS”(商业通用)描述了一种容易获得的既成产品(该术语有时用在军队采购清单中)。然而,所述模型中的EU 12可以具有用于同时执行一个以上纤程的处理资源。这在图1中表示为一组并联纤程单元(FU)22,其中,每个FU 22都可以执行一个纤程之内所包含的指令。这些FU可以是独立的处理器(与传统SMP机器中的相同);或者,它们可以以共同代表能够同时执行多线程处理的一个或多个多线程处理器。
SU 14实现专门针对计算机体系结构、硬件模块以及软件方法的两级线程模型的所有多线程特征,通常商业通用处理器不支持这些特征。这些特征包括EU接口、网络接口、事件解码、同步间隙管理、数据传送、纤程调度和负载平衡。
EU 12和SU 14通过就绪队列(RQ)16和事件队列(EQ)16彼此通信。如果运行在EU 12上的纤程需要执行与其它纤程相关的运算(例如,产生新的纤程或将数据发送到另一纤程),其将向EQ 16发送一个请求(事件),以由SU 14进行处理。同时,SU 14管理纤程,并将准备好要执行的任意纤程放到RQ 16中。当EU 12中的FU 22结束执行纤程时,其转到RQ 16来获得要被执行的新的纤程。队列16可以使用通用器件例如FIFO(先进先出)芯片来实现,所述芯片可以结合到硬件SU中,或者保持在主存储器中。
图2示出了SU模块14的相关数据通路,其可以是分离的芯片、置于具有CPU核芯的管芯上的分离的核芯,也可以是与CPU完全集成在一起的逻辑电路。优选的,事件和就绪队列结合到SU自身当中的,如图2所示。图2示出了连接到SU 14的两个接口:连接到系统总线的接口24和连接到网络的接口26。在该实施方式中,EU 12通过系统总线接口24访问EQ 16(由图2中的内部事件队列28表示)和RQ 16(由图2中的内部就绪队列30表示),SU 14通过同一系统总线接口24访问系统存储器18。连接到网络的链路20通过单独的接口26进行访问。另外可供选择的实现方式可以使用其它的接口组合。例如,SU 14可以使用单独的接口读取RQ 16、对EQ 16进行写入和访问存储器18,或使用系统总线接口24访问网络链路20。
SU 14具有下列存储区。位于SU 14的核心的是内部事件队列28,其是等待结束或等待前进到另一节点的未完成事件的池。可能有很多次许多事件在同时产生的时候,其填充队列28的速度快于SU 14对其进行处理的速度。实际上,SU 14仅可以同时处理少量事件。其它的事件基本在溢出区内进行等待,它们可以被存储在仅由SU自身进行访问的外部存储器模块中,以顺序进行处理。
内部就绪队列30保持准备被执行(即所有的相关性已经得到满足)的纤程的列表。内部RQ 30中的每个条目都具有专用于下述每个字段的位:(1)指令指针(IP),所述指令指针是用于该纤程的纤程代码的指定第一指令的地址;(2)帧标识符(FID),所述帧标识符是包含该纤程所属的线程化过程的语境的帧的地址;(3)属性字段,识别固有的实时属性和约束条件;(4)时间戳,用于实施实时约束条件;和(5)数据值,一旦开始执行,所述纤程就可以访问该数据值。虽然字段(3)、(4)和(5)设计用于支持本发明实施方式中的计算机体系结构、硬件模块以及软件方法的模型的特定特征,但是所述字段也可以在制造计算机体系结构、硬件模块以及软件方法的简化版的过程中省略掉。
FID/IP部分32存储与EU 12正在执行的每个纤程相关的信息,包括FID和与该纤程相应的线程化过程。SU 14需要知晓EU 12当前正在执行的每个纤程的身份,以强制实施调度约束条件。SU 14也需要所述信息,以使从EU 12发送到SU 14的计算机体系结构、硬件模块以及软件方法的运算指定的本地对象能够被正确识别。如果EU 12中存在多个纤程单元FU 22,SU 14需要能够识别EQ 16中的每个事件的源(FU)。例如,可以通过由具有FU标识符的EU 12将每个消息以标签的形式写入到SU 14来执行上述运算过程,或通过将每个FU 22写入到SU地址空间的不同部分中实现上述运算过程。
SU 14的剩余存储区如下所述。输出消息队列34对等待通过网络向外发出的消息进行缓冲。令牌队列36将还没有分配给节点的所有未决线程化过程调用保持在这一节点上。内部高速缓存38保持当前访问的同步间隙和由SU 14读取的数据(例如在数据传送期间)。虽然同步间隙作为线程化过程的帧的一部分存储,但是为了提高效率,大部分间隙应当高速缓存在SU内。
SU 14的存储区由下述逻辑块控制。EU接口24处理负载以及来自系统总线的存储。EU 12无论何时需要从RQ 16得到新纤程都产生负载。当所述情况发生,EU接口24从内部RQ 30读出一个条目,并将其放在系统总线上。EU接口24还更新FI D/IP表32中的相应的条目。EU 12无论何时将事件发送到SU 14都发出一个存储内容。所述存储内容向前传送到EU消息汇编区40。最后,当SU 14需要访问主存储器18时(例如传送数据),EU接口24驱动系统总线。
EU消息汇编区40从EU接口24收集存储内容序列,并可以将间隙和纤程数转换为实际地址。已完成事件输入到EQ 16。网络接口26驱动接口与网络相连。输出消息来自输出消息队列34。输入消息向前传送到网络消息汇编区42。网络消息汇编区42与EU消息汇编区40类似,将已完成事件插入到EQ 16。内部事件队列28具有用于处理EQ 16中的所有事件的逻辑电路,并可以访问SU 14的所有其它存储区。
分布式实时(RT)管理器44帮助确保在计算机体系结构、硬件模块以及软件方法的模式下满足实时约束条件。RT管理器44具有对所有队列和所有接口的状态以及实时时钟进行访问的访问权。RT管理器44确保具有高优先级和/或实时约束条件的事件、消息和纤程位于具有较低优先级的对象的前面。
在采用计算机体系结构、硬件模块以及软件方法的体系结构进行通信应用时,SU 14也可以扩展,以从互连网络接收到消息时支持线程化过程的调用,所述互连网络通过适当的接口与局域网、广域网或城域网相连。在所述扩展中,将消息类型与用于对其进行处理的线程化过程之间的关联提供给SU 14。
SU 14具有十分分散的控制结构。图1的设计中示出了与EU 12、网络100和队列16相互作用的SU 14。这些相互作用都可以借助正确的同步由独立的模块同时进行。例如,网络接口26可以从另一节点读取对令牌的请求,同时EU接口24将就绪队列16的头部提供给EU 12,内部事件队列28在此过程中处理一个或多个计算机体系结构、硬件模块以及软件方法的运算。简单的硬件互锁用于控制对多个模块例如缓冲器共享的资源的同时访问。
使用单独的硬件SU替代利用软件来仿真SU功能具有多个优点。首先,辅助任务可以有效下载到SU 14上。如果单个处理器用在每个节点中,所述处理器将不得不处理纤程支持、从纤程的执行转向CPU资源。即使是采用了双处理器结构,其中,一个处理器专用于纤程支持,也不会是有效的。大多数通用处理器必须通过存储器进行通信,而专用设备可以使用存储器映射I/O,其允许实现最佳化,例如对不同的运算使用不同的地址。这会提高从EU 12发出事件请求的速度。
第二,在硬件中执行的运算在很多情况下是极为快速的。用于纤程支持的大多数运算涉及简单的子任务,例如,检查计数器和随后的指针。所述子任务可以进行组合并可能仅在几个时钟周期内并行处理,而利用软件对其进行仿真将需要10或20个具有一些条件分支的指令。一些运算有可能需要队列的相关搜索或直接超高速缓存控制之类的任务,这些任务可以由定制硬件快速执行,但是除了作为长循环以外,上述任务一般来说不能在通用处理器中进行。
最后,如上所述,大多数SU 14的任务可以并行执行。传统处理器必须在这些任务之间进行切换。
总之,这三个不同之处使具有硬件SU的系统纤程效率较高。对SU14的下载纤程运算以及这些运算的加速将减少与每一纤程相关的开销,使每一纤程耗费更低。更快的负载平衡、与其它元件并行运行可以更快地展开周围的纤程,或者可以采用更先进的负载平衡方案产生更好的结果。在上述两种情况下,工作将分配得更加均匀。最后,专用硬件能够更加快速地处理纤程之间的通信与同步,允许编程器和编译器使用更加异步的线程。
C.对计算机体系结构、硬件模块以及软件方法的实时多线程处理特征的说明
计算机体系结构、硬件模块以及软件方法的体系结构具有支持实时应用的机构。主要机构是对优先纤程调度以及由SU 14进行中断的支持。首先,根据实时约束条件对多个线程(纤程)划分优先级。在内部就绪队列30中,以优先级赋值对纤程进行排序,SU 14调度机构优先选择对高优先级纤程执行处理。事件和网络消息也进行优先级划分,以使高优先级事件和消息在其它事件和消息之前传送。
例如,每个纤程编码可以具有相关优先级,优先级的一部分其中之一或优先级可以在同步间隙内指定为分离的字段。在任意一种情况下,当纤程被使能并置于RQ 16中时,属性字段的一些位将被设定为指定优先级。当EU 12从RQ 16中读出新的纤程时,具有某优先级的任意纤程将具有高于具有低优先级的任意纤程的优先权。
第二,已经执行的纤程在具有足够高的优先级的纤程到达时被中断。所述运算需要通过在所述事件发生时允许产生中断来扩展纤程执行模式。SU 14可以使用EU 12所提供的现存机构中断并切换到另一任务,尽管所述运算过程通常由于中断发生在任意时间时保存处理状态的系统开销而耗费几个CPU周期。两个特定的优先级可以包括在优先级组中。第一个,被称为过程级中断,允许纤程中断属于同一线程化过程的任意其它纤程。第二个,被称为系统级中断,允许纤程中断任意其它纤程,即使其属于不同的线程化过程。当SU 14使能具有这些优先级中任意一个优先级的纤程时,SU 14将检查用于适当的纤程(典型的是具有最低优先级的纤程)的FID/IP单元32,从FID/IP单元32确定哪个FU正在运行选定的纤程,并产生对该FU的中断。
单独的机构可以用作“硬”实时约束条件,其中,纤程必须在特定时间内执行。这种纤程具有包括在RQ 16中的时间戳字段。所述时间戳指示纤程必须开始执行以确保具有实时约束条件的系统的工作状况正确的时间。RQ 16内的时间戳与RT管理器44的实时时钟连续比较。与属性字段中优先级数据位的情况相同,时间戳用于选择具有较高优先级的纤程,在这种情况下是具有较早时间戳的纤程。如果RT管理器44的时钟接近RQ 16中的纤程的时间戳的值,RT管理器44将对EU 12中的一条纤程产生中断,其方式与纤程被具有过程级或系统级优先级的纤程中断的方式相同。
为了减小中断的影响范围,具有高系统开销的正在执行的纤程可以在其代码中具有预编程的轮询点,并可以在到达所述点时检查RQ 16。如果任意高优先级纤程在此时在RQ 16中等待,正在执行的纤程将保存其自身的状态,并将控制移交给高优先级纤程。编译器技术可以用于插入轮询点以及确定轮询点之间的分辨率(时态间隔),以满足实时响应的要求和最小化所述中断期间状态保存和恢复的系统开销。然而,如果轮询事件没有足够快速的发生以满足实时约束条件,上述机构将被调用,RT管理器44将产生中断。
最终机构使用RQ 16的属性字段中的其它位,以在EU 12同时执行两个以上纤程时实施调度约束条件。一些纤程可以用于访问共享资源(例如变量),并需要处于编码的“临界区域”之内,由此,只有一条纤程可以在给定时间访问资源。临界区域可以在SU 14中实施,其通过设定RQ 16入口信息的属性字段内的附加位来将纤程标记为“纤程原子”或“过程原子”而了解当前正在运行的所有纤程的标识符(来自FID/IP单元32)。纤程原子纤程在相同的纤程(具有相同的FID和IP的纤程)运行时不能运行。过程原子纤程在任何属于同一线程化过程的纤程(即任意具有相同FID的纤程)正在运行时不能运行。
D.计算机体系结构、硬件模块以及软件方法的实时多线程编程模式的说明
具有任意基于定制的或基于商业通用的EU的本文所介绍的计算机体系结构、硬件模块以及软件方法成分的任意组合在下文中都被称为计算机体系结构、硬件模块以及软件方法虚拟机(EVM)。任意EVM的一个要求是指令组至少包含基本计算机体系结构、硬件模块以及软件方法的运算、与存储器模块兼容和用于EU 12的数据类型组。一旦满足基本要求,就可以进行改进和扩展。计算机体系结构、硬件模块以及软件方法依靠各种用于排序和运算线程和纤程的运算。这些运算执行下述功能:(1)过程和纤程的调用和终止;(2)同步间隙的创建和操纵;和(3)将同步信号或是单独的或是与数据自动捆绑到一起发送到同步间隙。
这些功能的一部分是自动执行的,通常作为其它计算机体系结构、硬件模块以及软件方法的运算的结果。例如,将同步信号发送到具有一个当前同步计数的同步间隙使间隙计数复位、纤程使能。最后,该纤程变为有效,并开始执行运算。但是,一些运算,例如过程调用,可以由应用程序代码直接触发。所述部分列出并定义了八个直接(程序级)运算,所述运算最好由实现计算机体系结构、硬件模块以及软件方法的线程模型的机器执行。
这些部分定义了任意机器中存在的基本功能,所述任意机器通过提供优选数据类型和运算组中的所述功能的优选实施例支持计算机体系结构、硬件模块以及软件方法。完成相同功能的其它数据类型和运算组可以由本领域普通技术人员容易地构造出来。
1.基本计算机体系结构、硬件模块以及软件方法的数据类型
下面的数据类型和函数由算子采用。
帧标识符(FID)是对包含一个过程示例的本地语境的帧的唯一参考。在EVM指定的方式下,使用FID,可以访问局部变量、输入参数和所述过程的同步间隙以及进程代码本身。跨越全部节点,FID是全局唯一的。即使在不同的节点上,也不会同时有两个相同FID的帧。FID可以结合到帧的本地存储地址中。如果不这样做的话,假使帧位于特定节点上,将在该节点上设置机构以将FID转换为本地存储地址。
指令指针(IP)是特定线程化过程中的特定纤程代码的指定第一指令的唯一参考。FID和IP的组合确定了纤程的特定步骤。
过程指针(PP)是线程化线程编码的开始的唯一参考,但不是特有的步骤。借助于所述参考,EVM可以访问开始过程的新步骤所必需的所有信息。
唯一同步间隙(SS)由同步计数(SC)、复位计数(RC)、指令指针(IP)以及帧标识符(FID)构成。最前两字段是非负整数。表示SS.SC指的是SS的同步计数等。然而,上述内容仅是为进行说明而提出的。这些字段不应被应用程序操纵,除非经过下面所列出的专用计算机体系结构、硬件模块以及软件方法的算子。SS类型包括识别单同步间隙的足够信息,所述单同步间隙是所有节点中唯一的。需要多少信息取决于算子和EVM。在一些情况下,同步间隙可以限制到特定帧,这意味着仅需要确定所述帧内间隙的数量。在其它情况下,需要完整的全局地址(例如由FID和同步间隙数组成的一对地址)。
在计算机体系结构、硬件模块以及软件方法的算子的列表中,类型T意味着任意对象,可以是标量或组合(数组或记录)。对象的这一类可以包括上面所列出的参考数据类型中的任意一种或几种(FID、IP、PP、SS),以使这些对象也可以用在计算机体系结构、硬件模块以及软件方法的运算中(例如它们可以传送到另一过程步骤中)。类型T还包括下面的参考数据类型的任意实例。
对于类型T的每个对象而言,存在对T的类型参考对所述对象的参考,所述对象可以通过该参考访问或更新。根据存储器要求,其必须是全局唯一的,所有处理单元必须能够使用参考访问类型T的对象。使用术语“参考”而不是“指针”或“地址”,用于避免对由这些参考执行的运算的种类作出任何无端的假设。
下面列出了八个运算,说明了每个运算的作用,所述运算必须由EVM支持。所述列表还建议了可以添加到EVM的选项。在列表中,“当前纤程”是正在执行运算的纤程,“当前帧”是与当前纤程相应的FID。
2.基本计算机体系结构、硬件模块以及软件方法的线程控制运算
线程控制运算根据计算机体系结构、硬件模块以及软件方法的线程模型控制线程(纤程和过程)的创建和终止。初级运算是进程调用。必须有算子来标记纤程的结束和终止进程。不需要直接用算子创建纤程,因为纤程是隐含使能的。当调用进程时,一条纤程自动使能,其它的作为同步信号的结果而被使能。
对计算机体系结构、硬件模块以及软件方法进行编译的程序指定了一个过程,所述过程在开始程序时自动调用。即使存在多个处理器,也仅调用所述过程中的一个步骤。其它的处理器保持空闲,直到过程对其进行调用。这将计算机体系结构、硬件模块以及软件方法与并行模型例如SPMD(单处理器/多数据)区别开来,在SPMD中,程序的相同副本在所有节点上同时开始。
INVOKE(PP proc,T arg1,T arg2)算子调用过程(proc)。其为proc分配适当的帧,为arg1、arg2等初始化其输入参数,为proc的初始纤程使能IP。EVM可以对可通过自变量的类型作出限制,例如仅是标量值。系统保证帧内容,正如执行proc的处理单元所见,在开始执行proc之前被初始化。在多处理器系统中,INVOKE算子可以包括附加的自变量,用以指定运行过程的处理器或指示SU 14应当使用负载平衡机构确定运行过程的位置。
TERMINATE_FIBER算子终止当前纤程。运行该纤程的处理单元任意向用于所述纤程的处理资源再赋值,并在另一使能纤程存在的情况下开始对另一使能纤程执行处理。如果没有另一使能纤程,处理单元等待,直到另一使能纤程可用,并开始执行。
TERMINATE_PROCEDURE算子与TERMINATE_FIBER相似,但是其还终止与当前纤程相应的过程情况。当前帧解除分配。所述说明内容并不特别规定属于这种情况的任何其它纤程在它们有效或使能时所发生的情况,或如果在解除分配之后访问当前帧的内容时所发生的情况。EVM可以定义在这些情况下发生的运算或定义发生编译器(或编程器)所尽力避免产生的错误之类的出现。
3.基本计算机体系结构、硬件模块以及软件方法的同步间隙控制运算
同步间隙用于控制纤程的使能和对有多少相关性已经得到满足进行计数。它们必须在接收到同步信号之前由数值进行初始化。可以用过程调用的自动部分进行同步间隙初始化。对多线程机构编程的已有经验显示相关性的数量会随过程的一个步骤到下一个步骤的变换而发生变化,并与编译时(或甚至在调用过程的过程中)的未知条件相关。因此,最好对正在初始化的同步间隙直接运算。当然,如果编译时初始化是固定的,计算机体系结构、硬件模块以及软件方法的特定实施方式可以通过将间隙初始化移到帧初始化阶段而最优化。
算子INITIALIZE_SLOT(SS间隙,int SC,int RC,IP fib)初始化第一自变量中指定的同步间隙,给出SC的同步计数、RC的复位计数和IP fib。仅初始化当前帧中的同步间隙(因此,不需要FID)。通常,同步间隙在过程的初始纤程中初始化。然而,已经初始化的间隙可以再初始化,这使间隙可以象寄存器那样重复使用。
线程的初始化或再初始化与同步信号向所述线程的发送之间可以存在竞态条件的可能。EVM及其具体实现方式应当保证间隙初始化与用在相同纤程中的间隙之间的连续顺序。例如,如果初始化间隙的INITIALIZE_SLOT算子通过将同步信号明确发送到间隙而位于同一纤程之后,所述系统将保证间隙中的新值(通过初始化置入)在同步信号在间隙上产生效果之前就位。另一方面,编程器的责任在于避免纤程之间存在竞态条件。编程器也应在系统中的其它纤程可以将同步信号发送到所述间隙的情况下避免再初始化同步间隙。
INCREMENT_SLOT(SS slot,int inc)算子通过inc递增slot.SC。只有局部帧中的间隙可以受到影响。用于INITIALIZE_SLOT算子的顺序约束条件也适用于该算子。
这对过程的运算是十分有用的,在所述过程中,相关性的数量不仅是动态的,而且不能在同步间隙正常初始化时被确定下来。一个实施例是遍历一棵树,其中分支因子动态变化,例如在博弈游戏中搜索未来的移动,其中,在每个等级上移动到搜索的数量可以是在运行时确定的。
在象棋程序的树遍历算法的一个实施例中,分配数组,以保持结果数据,相对于一个移动结果的发出所及的不同位置给出每个子段的参考。每个子段都通过第一双亲段纤程开始,并在完成时将同步信号发送到同步间隙。从所有补充搜索中选择移动的第二双亲段纤程应当在所有子段都已经完成时使能。由于合法移动的数量从一个步骤变为下一个步骤,因此,所调用的进程的总数在初始化初始线程中的间隙时是未知的。INCREMENT_SLOT算子用于调用子段之前将slot.SC中的同步计数加一。如果调用第一个子段之后,子段在第一双亲段纤程中的循环执行另一INCREMENT_SLOT之前将同步信号发回,计数slot.SC将减为零,过早的使能第二双亲段纤程2。为了避免上述情况的发生,计数将在1开始,确保计数总是至少为1,假设INVOKE发生之前间隙是递增的。当所有增量都已执行时,能够安全的删除该补偿值,在此之后,将同步信号发回的最后一个子段触发纤程2。具有负计数(即-1)的INCREMENT_SLOT如此运算。或者,SYNC运算、覆盖随后内容可以取得相同的效果。
同步间隙机构可以通过语言学扩展到支持线程化过程和纤程的编程语言被直接调用。一种这样的扩展是通过灵敏度列表的使用。纤程可以灵敏度列表标记,所述列表标识了需要开始处理的所有输入数据。通过分析该列表以及数据经过线程化过程的流动,一组相应的同步间隙和同步运算可以针对并行纤程执行的适当同步自动获得。
4.基本计算机体系结构、硬件模块以及软件方法的同步运算
同步算子为计算机体系结构、硬件模块以及软件方法赋予控制数据和过程之间的相关性的能力,甚至其不是直接相关的,从而使编程器除了简单递归之外还可以创建并行控制结构。这样,编程器可以将控制结构调整为应用所需的结构。本部分描述了与三个(3)运算计算机体系结构、硬件模块以及软件方法同步的基本要求,但是其它的运算组也可以满足相同的要求。本部分还说明了对这些基本能力的有用扩展,所述基本能力建筑在本发明的基础之上。
三个基本同步运算可以由计算机体系结构、硬件模块以及软件方法提供:(1)仅同步;(2)与数据传递相关的同步的定位于制造商的版本;和(3)与数据传递相关的同步的定位于消费者的版本。
SYNC(SS slot)是基本同步算子。指定的同步间隙(slot.SC)的计数减少。如果结果值为零,纤程(FID-of(slot),slot.F)被使能,以复位计数slot.RC更新同步计数。否则,以减小值更新同步计数。该实施方式保证对SC字段的测试并更新访问是原子的,与其它影响同一间隙的算子相关(包括间隙控制算子)。
重要的是将数据传递与同步信号的相结合,以避免竞态情况,在所述竞态情况下,同步信号指示数据相关性得到满足、有问题数据被真正传递之前已经使能了纤程。所述结合通过以数据和对产生SYNC_WITH_DATA(T val,reference-to-T dest,SS slot)算子的参考增大正常SYNC算子而在计算机体系结构、硬件模块以及软件方法中实现。所述系统将数据值复制到目的驱动器所参考的位置上,然后将同步信号发送到间隙。
所述系统保证数据传递在同步信号发送到间隙之前完成。更精确地说,系统保证在处理单元开始执行作为同步信号发送到间隙的直接或间接结果而使能的纤程时该处理器在本地目标驱动器中看到val。其直接结果意味着同步信号将同步计数递减到零,而间接结果意味着同一间隙的随后的信号将计数递减到零。系统还保证同步间隙更新之后可以安全的改变val。如果val通过“by reference”例如通常以数组的形式完成,这是极为相关的。
SYNC_WITH_FETCH(reference-to-T source,reference-to-Tdest,SS slot)是计算机体系结构、硬件模块以及软件方法组的最后的算子,也将同步信号与数据传递相合并,但是传递的方向是反向的。虽然前面的算子将一数值作为其第一自变量(所述自变量必须是局部变量),SYNC_WITH_FETCH规定了可以是任何地方的位置,即使是在远程节点上。类型T的数据从数据源复制到目的地。排序约束条件与SYNC_WITH_DATA的相同,除了val(上段中的)现在参考数据源参考的数据。
所述算子主要用于通过使用分阶段事务处理的方式获取远程数据。如果对所述数据的访问需要相对较长的潜伏时间,则所述数据是远程的。远程数据存在于具有分布式存储器结构的计算机系统中,其中,具有本地存储器的处理器节点通过互连网络相连。远程数据还存在具有多个存储器的共享存储器系统的一些实施方式中,可以参考NUMA(非均匀存储器访问)结构之类的文献。如果过程需要获得可能为远程的数据,开始获取的纤程将不等待数据,因为所述过程将会花费相对较长的时间。作为替代,数据的使用者应在另一纤程,其具有SYNC_WITH_FETCH,用于同步间隙和在接收到数据时使能使用者。
所述运算仅从初始化运算的纤程的视点上看可被认为是“原子”的。实际上,所述运算典型地在两个阶段发生:步骤向前传送到源数据的位置(在分布式存储器结构中),之后,已经获取数据以后,传回原始纤程。SS参考基准与两次传递相结合,从而,所述系统保证作为同步信号发送到间隙的直接或间接结果开始执行任意纤程之前数据复制到目标驱动器。
这三个算子是任何计算机体系结构、硬件模块以及软件方法EVM的基本要件,但是也可以使用改变形式和扩展的算子。例如,可以存在仅需要等待一个数据或控制事件的纤程,这意味着同步字段具有复位计数一。对于这种情况,EVM可以定义算子的特别说明,使纤程直接而不是经过同步间隙传送,从而节省了时间和同步间隙间隔。然而,上述运算是可任选的,因为相同的效果可以用常规同步间隙获得。
另一种改变方式是将自变量分为EU 12与SU 14之间的这些算子。算子SYNC_ITH_DATA和SYNC_WITH_FETCH将同步间隙与存储数据的位置相组合。不是从在EU 12上执行的纤程指定两个自变量,EVM可以提供用于程序的装置来结合同步间隙和SU 14中的数据位置,此后,纤程将仅需要指定数据位置;SU 14将把缺失的同步间隙补充到算子。
计算机体系结构、硬件模块以及软件方法中可以存在潜在竞态条件。一个例子是在同一过程示例中相同纤程的另一示例处于有效或使能的同时使能一纤程。这在计算机体系结构、硬件模块以及软件方法下不一定是错误,但是可用在特定条件下正确工作。图3示出了同一过程示例同时有效的情况下同一纤程的两个示例递增的情形。技术上,每个纤程都具有其自身的语境,因此,可以同时运行两条纤程而不会相互中断。然而,它们还共享同一帧,它们所需的任何输入数据都必须直接(数据存在于帧本身)或间接(参考帧中的数据)来自所述帧,因为所有的本地纤程语境除了FID自身之外都来自帧。如果两条纤程都复制相同的数据和参考信息,它们将产生冗余运算。如果每个都从帧中的数值中载入其初始寄存器数值,并在此之后更新帧数值,所述纤程有可能同时对独立数据进行运算。图3示出了与数组x的不同元素一同工作的每条纤程,并示出了每条纤程已经将参考信息复制到寄存器r2之后的状态。但是所有环境下所述代码的正确运算需要附加的硬件机构并需要采用特定编程格式。
首先,如果硬件允许两条纤程同时运行,其必须支持对帧变量的自动访问,即获取和添加简单。这可以对EU 12所支持的指令组扩展。或者,可以将变量存储在RQ 16内的外部字段中,EU 12可以从RQ 16的所述字段而不是从帧中载入一个寄存器。所述字段可以保持例如数组元素的索引。第二,如果纤程由结合有自动数据传递的分离的同步信号触发(应当注意,帧中的第一间隙具有计数值1和触发纤程1),必须对数据的两个产生源(假设在这种情况下其发送到x[])编程来将两个数值发送到x[]中的单独的位置上。
所述实例描述了计算机体系结构、硬件模块以及软件方法结构是如何通过在SU 14或EU 12中附加受到管理的同步能力以支持更高的控制结构组同时保持本发明的基本优点而得到扩展的。
在不背离本发明的范围或精神的条件下,可以对本发明的用于实时多线程处理的方法和装置进行多种改进和变形,这对本领域技术人员来说是显而易见的。其实施例已经在上文中给出。
本发明的其它具体实施方式通过对这里所公开的本发明的说明和实践的思考对本领域技术人员而言是显而易见的。这意味着说明内容和实施例仅可以认为是示例性的,本发明的真实的范围和精神由随后的权利要求定义。
Claims (14)
1.一种实时多线程处理装置,包括:
通过互连网络连接的一个或多个多线程节点,每个多线程节点包括:
用于执行有效纤程的执行单元;
用于调度和同步纤程和过程以及处理远程访问的同步单元,所述同步单元与互连网络互连;和
就绪队列和事件队列,执行单元与同步单元通过所述队列进行通信;
其中,同步单元包括:
系统总线接口,执行单元通过该系统总线接口访问事件队列和就绪队列,同步单元通过该系统总线接口访问存储器;
网络接口,同步单元通过该网络接口与互连网络互连;
内部事件队列,包含等待将被结束或向前传送到另一节点的未完成事件;
内部就绪队列,包含准备将被执行的纤程的列表;
帧标识符/指令指针区,存储与执行单元当前正在执行的每一纤程相关的信息;
输出消息队列,缓冲等待通过互连网络输出的消息;
令牌队列,保持还没有分配给节点的所有未决线程化过程调用;
内部高速缓存,保持由同步单元读取的最近访问的同步间隙和数据;
执行单元消息汇编区,从系统总线接口收集存储序列,并将完成的事件插入到事件队列;
网络消息汇编区,接收输入消息,并将完成的消息插入到事件队列;和
分布式实时管理器,确保具有高优先级或实时约束条件的事件、消息和纤程被置于具有较低优先级的对象之前。
2.根据权利要求1所述的实时多线程处理装置,其中,执行单元具有至少一个与存储器总线互连的计算机处理器。
3.根据权利要求2所述的实时多线程处理装置,其中,就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器。
4.根据权利要求2所述的实时多线程处理装置,其中,事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元。
5.根据权利要求1所述的实时多线程处理装置,还包括与执行单元和同步单元互连并由执行单元和同步单元共享的存储器。
6.根据权利要求1所述的实时多线程处理装置,其中,如果执行单元中运行的纤程需要执行与其它纤程有关的运算,执行单元将向事件队列发出请求以由同步单元进行处理。
7.根据权利要求1所述的实时多线程处理装置,其中,同步单元管理纤程,并将准备进行执行的任意纤程放到就绪队列。
8.一种实时多线程处理方法,包括:
提供通过互连网络连接的一个或多个多线程节点,每个多线程节点执行一方法,该方法包括:
由执行单元执行有效纤程;
由同步单元调度和同步纤程和过程以及处理远程访问,所述同步单元与互连网络互连;和
通过就绪队列和事件队列在执行单元与同步单元之间提供通信;
其中,调度和同步纤程与过程的子步骤包括:
提供系统总线接口,执行单元通过该系统总线接口访问事件队列和就绪队列,同步单元通过该系统总线接口访问存储器;
提供网络接口,同步单元通过该网络接口与互连网络互连;
提供内部事件队列,该内部事件队列包含等待结束或向前传送到另一节点的未完成事件;
提供内部就绪队列,该内部就绪队列包含准备被执行的纤程的列表;
提供帧标识符/指令指针区,该帧标识符/指令指针区存储与执行单元正在执行的每一纤程相关的信息;
提供输出消息队列,该输出消息队列缓冲等待通过互连网络输出的消息;
提供令牌队列,该令牌队列保持还没有被分配给节点的所有未决线程化过程调用;
提供内部高速缓存,该内部高速缓存保持由同步单元读取的最近访问的同步间隙和数据;
提供执行单元消息汇编区,该执行单元消息汇编区从系统总线接口收集存储序列,并将完成的事件插入到事件队列;
提供网络消息汇编区,该网络消息汇编区接收输入消息,并将完成的消息插入到事件队列;和
提供分布式实时管理器,该分布式实时管理器确保具有高优先级或实时约束条件的事件、消息和纤程被置于具有较低优先级的对象之前。
9.根据权利要求8所述的实时多线程处理方法,其中,执行单元具有至少一个与存储器总线互连的计算机处理器。
10.根据权利要求9所述的实时多线程处理方法,其中,提供通信的子步骤包括,由就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器。
11.根据权利要求9所述的实时多线程处理方法,其中,提供通信的子步骤包括,由事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元。
12.根据权利要求8所述的实时多线程处理方法,其中,每个多线程节点执行一方法,该方法包括将存储器与执行单元和同步单元互连。
13.根据权利要求8所述的实时多线程处理方法,其中,调度和同步纤程和过程的子步骤包括,如果执行单元中运行的纤程需要执行与其它纤程有关的运算,执行单元将向事件队列发出请求以由同步单元进行处理。
14.根据权利要求8所述的实时多线程处理方法,其中,调度和同步纤程和过程子步骤包括,由同步单元管理纤程并将准备进行执行的任意纤程放到就绪队列中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38449502P | 2002-05-31 | 2002-05-31 | |
US60/384,495 | 2002-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1867891A CN1867891A (zh) | 2006-11-22 |
CN100449478C true CN100449478C (zh) | 2009-01-07 |
Family
ID=29712044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038182122A Expired - Fee Related CN100449478C (zh) | 2002-05-31 | 2003-05-30 | 用于实时多线程处理的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050188177A1 (zh) |
CN (1) | CN100449478C (zh) |
AU (1) | AU2003231945A1 (zh) |
WO (1) | WO2003102758A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8027344B2 (en) * | 2003-12-05 | 2011-09-27 | Broadcom Corporation | Transmission of data packets of different priority levels using pre-emption |
US8453157B2 (en) * | 2004-11-16 | 2013-05-28 | International Business Machines Corporation | Thread synchronization in simultaneous multi-threaded processor machines |
CN101216780B (zh) * | 2007-01-05 | 2011-04-06 | 中兴通讯股份有限公司 | 在对称多处理体系下实现多实例线程通信的方法及装置 |
US7617386B2 (en) * | 2007-04-17 | 2009-11-10 | Xmos Limited | Scheduling thread upon ready signal set when port transfers data on trigger time activation |
US8966488B2 (en) | 2007-07-06 | 2015-02-24 | XMOS Ltd. | Synchronising groups of threads with dedicated hardware logic |
GB0715000D0 (en) * | 2007-07-31 | 2007-09-12 | Symbian Software Ltd | Command synchronisation |
US9009020B1 (en) * | 2007-12-12 | 2015-04-14 | F5 Networks, Inc. | Automatic identification of interesting interleavings in a multithreaded program |
CA2793537A1 (en) | 2010-04-13 | 2011-10-20 | Et International, Inc. | Runspace method, system and apparatus |
CA2820081A1 (en) | 2010-12-16 | 2012-06-21 | Et International, Inc. | Distributed computing architecture |
CN102760082B (zh) * | 2011-04-29 | 2016-09-14 | 腾讯科技(深圳)有限公司 | 一种任务管理方法和移动终端 |
FR2984554B1 (fr) * | 2011-12-16 | 2016-08-12 | Sagemcom Broadband Sas | Bus logiciel |
US9401869B1 (en) * | 2012-06-04 | 2016-07-26 | Google Inc. | System and methods for sharing memory subsystem resources among datacenter applications |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
CN109800064B (zh) * | 2017-11-17 | 2024-01-30 | 华为技术有限公司 | 一种处理器和线程处理方法 |
US11513840B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US11074078B2 (en) | 2018-05-07 | 2021-07-27 | Micron Technology, Inc. | Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion |
US11132233B2 (en) * | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11513838B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11513837B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11068305B2 (en) * | 2018-05-07 | 2021-07-20 | Micron Technology, Inc. | System call management in a user-mode, multi-threaded, self-scheduling processor |
US11119782B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Thread commencement using a work descriptor packet in a self-scheduling processor |
US11126587B2 (en) | 2018-05-07 | 2021-09-21 | Micron Technology, Inc. | Event messaging in a system having a self-scheduling processor and a hybrid threading fabric |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11157286B2 (en) | 2018-05-07 | 2021-10-26 | Micron Technology, Inc. | Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor |
CN109491780B (zh) * | 2018-11-23 | 2022-04-12 | 鲍金龙 | 多任务调度方法及装置 |
US11474861B1 (en) * | 2019-11-27 | 2022-10-18 | Meta Platforms Technologies, Llc | Methods and systems for managing asynchronous function calls |
CN113821174B (zh) * | 2021-09-26 | 2024-03-22 | 迈普通信技术股份有限公司 | 存储处理方法、装置、网卡设备及存储介质 |
CN114554532B (zh) * | 2022-03-09 | 2023-07-18 | 武汉烽火技术服务有限公司 | 5g设备高并发仿真方法与装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353418A (en) * | 1989-05-26 | 1994-10-04 | Massachusetts Institute Of Technology | System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread |
US5796954A (en) * | 1995-10-13 | 1998-08-18 | Apple Computer, Inc. | Method and system for maximizing the use of threads in a file server for processing network requests |
US5881269A (en) * | 1996-09-30 | 1999-03-09 | International Business Machines Corporation | Simulation of multiple local area network clients on a single workstation |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4149240A (en) * | 1974-03-29 | 1979-04-10 | Massachusetts Institute Of Technology | Data processing apparatus for highly parallel execution of data structure operations |
US4682284A (en) * | 1984-12-06 | 1987-07-21 | American Telephone & Telegraph Co., At&T Bell Lab. | Queue administration method and apparatus |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
US4814978A (en) * | 1986-07-15 | 1989-03-21 | Dataflow Computer Corporation | Dataflow processing element, multiprocessor, and processes |
WO1990001192A1 (en) * | 1988-07-22 | 1990-02-08 | United States Department Of Energy | Data flow machine for data driven computing |
US4964042A (en) * | 1988-08-12 | 1990-10-16 | Harris Corporation | Static dataflow computer with a plurality of control structures simultaneously and continuously monitoring first and second communication channels |
US5430876A (en) * | 1989-06-27 | 1995-07-04 | Digital Equipment Corporation | Remote procedure callback system and method |
US5226131A (en) * | 1989-12-27 | 1993-07-06 | The United States Of America As Represented By The United States Department Of Energy | Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
US5430850A (en) * | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
IL100598A0 (en) * | 1992-01-06 | 1992-09-06 | Univ Bar Ilan | Dataflow computer |
US5546593A (en) * | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
US5619650A (en) * | 1992-12-31 | 1997-04-08 | International Business Machines Corporation | Network processor for transforming a message transported from an I/O channel to a network by adding a message identifier and then converting the message |
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
KR960003444A (ko) * | 1994-06-01 | 1996-01-26 | 제임스 디. 튜턴 | 차량 감시 시스템 |
JP3169779B2 (ja) * | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
JP3231571B2 (ja) * | 1994-12-20 | 2001-11-26 | 日本電気株式会社 | 順序付きマルチスレッド実行方法とその実行装置 |
US5699500A (en) * | 1995-06-01 | 1997-12-16 | Ncr Corporation | Reliable datagram service provider for fast messaging in a clustered environment |
JPH096633A (ja) * | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム |
IL116708A (en) * | 1996-01-08 | 2000-12-06 | Smart Link Ltd | Real-time task manager for a personal computer |
US6128640A (en) * | 1996-10-03 | 2000-10-03 | Sun Microsystems, Inc. | Method and apparatus for user-level support for multiple event synchronization |
US6088788A (en) * | 1996-12-27 | 2000-07-11 | International Business Machines Corporation | Background completion of instruction and associated fetch request in a multithread processor |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US5907702A (en) * | 1997-03-28 | 1999-05-25 | International Business Machines Corporation | Method and apparatus for decreasing thread switch latency in a multithread processor |
US6105119A (en) * | 1997-04-04 | 2000-08-15 | Texas Instruments Incorporated | Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems |
US5909559A (en) * | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
US6233599B1 (en) * | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
RU2130198C1 (ru) * | 1997-08-06 | 1999-05-10 | Бурцев Всеволод Сергеевич | Вычислительная машина |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6105051A (en) * | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
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 |
US6161166A (en) * | 1997-11-10 | 2000-12-12 | International Business Machines Corporation | Instruction cache for multithreaded processor |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6240509B1 (en) * | 1997-12-16 | 2001-05-29 | Intel Corporation | Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6044447A (en) * | 1998-01-30 | 2000-03-28 | International Business Machines Corporation | Method and apparatus for communicating translation command information in a multithreaded environment |
US6427161B1 (en) * | 1998-06-12 | 2002-07-30 | International Business Machines Corporation | Thread scheduling techniques for multithreaded servers |
US6988122B2 (en) * | 2001-01-09 | 2006-01-17 | International Business Machines Corporation | Ferris-wheel queue |
JP3975703B2 (ja) * | 2001-08-16 | 2007-09-12 | 日本電気株式会社 | 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム |
-
2003
- 2003-05-30 CN CNB038182122A patent/CN100449478C/zh not_active Expired - Fee Related
- 2003-05-30 US US10/515,207 patent/US20050188177A1/en not_active Abandoned
- 2003-05-30 WO PCT/US2003/017223 patent/WO2003102758A1/en not_active Application Discontinuation
- 2003-05-30 AU AU2003231945A patent/AU2003231945A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353418A (en) * | 1989-05-26 | 1994-10-04 | Massachusetts Institute Of Technology | System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread |
US5796954A (en) * | 1995-10-13 | 1998-08-18 | Apple Computer, Inc. | Method and system for maximizing the use of threads in a file server for processing network requests |
US5881269A (en) * | 1996-09-30 | 1999-03-09 | International Business Machines Corporation | Simulation of multiple local area network clients on a single workstation |
Also Published As
Publication number | Publication date |
---|---|
WO2003102758A1 (en) | 2003-12-11 |
CN1867891A (zh) | 2006-11-22 |
AU2003231945A1 (en) | 2003-12-19 |
US20050188177A1 (en) | 2005-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100449478C (zh) | 用于实时多线程处理的方法和装置 | |
JP3771957B2 (ja) | プロセッサ・アーキテクチャにおける分散制御のための装置および方法 | |
US5859981A (en) | Method for deadlock-free message passing in MIMD systems using routers and buffers | |
US6463527B1 (en) | Spawn-join instruction set architecture for providing explicit multithreading | |
CN101160565B (zh) | 无操作系统干预情况下调度os隔离定序器上的线程的机制 | |
US20110314238A1 (en) | Common memory programming | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
CN102880447A (zh) | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 | |
KR20050000487A (ko) | 스케줄링 방법 및 실시간 처리시스템 | |
Giorgi et al. | An introduction to DF-Threads and their execution model | |
WO1998043193A9 (en) | Spawn-join instruction set architecture for providing explicit multithreading | |
CN101013415A (zh) | 用于多处理器阵列的线程感知分布式软件系统 | |
US20030182376A1 (en) | Distributed processing multi-processor computer | |
US6351749B1 (en) | Multi-threading, multi-tasking architecture for a relational database management system | |
Agarwal et al. | Deadlock-free scheduling of X10 computations with bounded resources | |
CN100492282C (zh) | 处理系统、通信系统及在处理系统中处理作业的方法 | |
CN103970602A (zh) | 一种面向x86多核处理器的数据流程序调度方法 | |
Jenks et al. | Nomadic threads: A migrating multithreaded approach to remote memory accesses in multiprocessors | |
CN112346835B (zh) | 一种基于协程的调度处理方法及系统 | |
JPH11272480A (ja) | オンチップリアルタイムos | |
Kirrmann et al. | Poolpo—a pool of processors for process control applications | |
Liu et al. | Lock-free scheduling of logical processes in parallel simulation | |
Ha et al. | A massively parallel multithreaded architecture: DAVRID | |
US5386586A (en) | System and method for construction of lists of deferred service requests | |
Rho et al. | Compilation of a functional language for the multithreaded architecture: Davrid |
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: 20090107 Termination date: 20140530 |