用于实时多线程处理的方法和装置的制作方法

文档序号:6414005阅读:247来源:国知局
专利名称:用于实时多线程处理的方法和装置的制作方法
技术领域
本发明总体上涉及一种计算机体系结构,更具体地说,涉及一种用于实时多线程处理的方法和装置。
背景技术
在整个电子计算机时代的大部分时间内,多任务运算系统都得到了利用。在多任务运算系统中,计算机处理器通过重复的从一个程序切换到另一个程序并行地执行一个以上的计算机程序。如果一个程序延迟,一般来说是在等待从盘中检索数据的时候,中央处理单元(CPU)将切换到另一个程序,从而在间歇中完成有用工作。所述切换过程一般来说是十分费时的,但是仍比等待数据要快。
最近,计算机设计者已经开始将所述理念用于充分小的工作单元。传统的单线程处理器效率差,因为处理器必须在执行一些步骤的过程中进行等待。例如,一些步骤使处理器要等待数据源变得可用或使处理器要等待需满足的同步条件。然而,在此过程中所浪费的时间通常远远少于多任务运算系统切换到另一程序(假设另一程序是可用的)所耗费的时间。为了保持处理器工作繁忙和提高工作效率,发明了多线程处理器。
在多线程处理器中,将计算机所执行的工作表示为多个线程,每个线程执行一个特定任务。一些线程可以独立于其它线程执行,而另一些线程可以针对共同的任务与其它线程协作。虽然处理器可以仅执行一个线程或同时执行有限个线程,但是,如果正在执行的线程必须等待外部事件的发生,例如数据源的可用或与其它线程的同步,则处理器将切换线程。所述切换远远快于由多任务运算系统所进行的程序间的切换,其可以是瞬时的或仅需要几个处理器周期。如果等待时间超过所述切换时间,处理器效率将会得到提高。
计算机系统体系结构和程序设计趋势正在向多线程运算而不是单一的顺序任务发展。为了对程序进行多线程处理,编译器将其分解为一个以上的线程。一些传统的计算机技术还利用了作为一些指令处理器设计的主干的多线程能力。然而,当前多线程技术主要致力于对控制的多个独立线程进行交叉,以提高CPU中全部运算单元的利用率。在这点上,它们与多任务运算系统是类似的,尽管这样远远更加有效。不幸的是,当多个线程针对一个单一的任务共同工作时,需要额外的机构(硬件或软件)来协调所述多个线程。这些机构相对于CPU的速率而言会耗费很多时间。为了使CPU保持高效率,编程设计人员必须尽可能保守地利用这些机构。因此,编程设计人员需要最小化线程数以及这些线程之间的互动,这会限制许多本质上需要很多线程和/或协作线程之间的更多互动的应用程序可实现的性能。
由此,在本领域中需要一种克服现有技术的缺陷的多线程处理装置和方法。

发明内容
本发明通过提供一种用于实时多线程处理的方法和装置解决了现有技术中的问题,所述方法和装置在至少三个区域内是唯一的。首先,本发明的结构模块提供了多线程处理方式其中,多线程的控制可以从指令处理器中分离。第二,本发明的多线程模块的设计允许处理实时约束条件(constraint)。最后,本发明的多线程模块用于与新的编程语言以及提高系统的整体效率的编译技术协同工作。
本发明在传统多线程技术方面提供了几个优点。传统多线程处理技术在单个任务中协调多个线程时需要附加的机构(硬件或软件)来协调线程。相反,本发明的方法和装置包括用于同步相关线程的高效低系统开销的事件驱动的机构,其与编程语言和编译技术协作。本发明的方法和装置还在整个线程同步和调度机构中提供了对处理实时约束条件(constraint)的体系结构特征的平滑整合。最后,本发明的装置和方法将多线程控制从指令处理器中分离,可以实现将现存专用IP核心模块的快速而简单的整合在芯片上系统设计中,而不用修改模块设计,所述模块可以是例如信号处理和加密单元。
本发明的方法和装置在包含计算机处理器的任意设备中都可以取得有益效果,在所述设备中,所述处理器需要与另一设备相互作用(例如另外的处理器、存储器、专用输入/输出或功能单元等),换句话说,相互作用有可能阻挡处理器的进程。这些设备的一些实施例是个人计算机、工作站、文件和网络服务器、嵌入式计算机系统、手持计算机、无限通信设备、个人数字助理(PDA)、网络开关和路由器等。
在本发明中,通过将多线程处理单元与指令处理器分离,相比于多线程处理能力集成到处理器中的设计,其相互作用仅需花费少量额外时间。由于其使部件之间的互用性增强,并具有补充现有处理器设计和技术的优点,因此,这种折衷是可接受的。
由于本发明的多线程模型不同于其它的并行同步的模型,因此,其包含不同的编程技术。本发明的发明人所提出的编译技术使编程器的任务相当简单。
根据本发明的目的,正如这里所具体和广义的说明的,本发明包括由计算机实现的装置,包括通过互连网络连接的一个或多个多线程节点,每个多线程节点都包括用于执行有效短线程(下文称为纤程(fiber))的执行单元(EU),该执行单元具有至少一个计算机处理器并可以对存储器和/或其它外部元件的连接进行访问;用于调度和同步纤程和过程以及处理远程访问的同步单元(SU);两个队列,就绪队列(RQ)和事件队列(EQ),EU与SU通过其相互通信,就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器,事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元;与执行单元和同步单元互连并共享的本地存储器;和到互连网络并与同步单元互连的链接。
另外,根据本发明的目的,正如这里所具体和广义的说明的,本发明包括由计算机实现的方法,包括下述步骤提供通过互连网络连接的一个或多个多线程节点;和为每个多线程节点提供用于执行有效纤程的执行单元(EU),执行单元具有至少一个计算机处理器并可以对存储器和/或其它外部元件的连接进行访问;用于调度和同步纤程和过程以及处理远程访问的同步单元(SU);两个队列,就绪队列(RQ)和事件队列(EQ),EU与SU通过其相互通信,就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器,事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元;与执行单元和同步单元互连并共享的本地存储器;和到互连网络的并与同步单元互连的链接。
本发明的适用性的进一步范围通过下文中的详细说明将更加明显。但是,应当理解,指出本发明的优选实施方式的详细说明和特定的实施例仅用于示例,因为通过本发明详细的说明在本发明的精神和范围之内对本发明作出多种变形和改进对本领域技术人员来说是显而易见的。应当理解,上述概述和下文的详细说明都仅是示例性和说明性的,并不象权利要求那样对本发明作出限制。


通过下文中所给出的详细说明以及仅用于示例的附图,可以更加全面的理解本发明,所述说明及附图都不对本发明作出任何限制,其中图1是说明根据本发明的一个方面的EVISA多线程体系结构模块的示意图;图2是图1所示的模块中所使用的同步单元(SU)的相关数据通路的示意图;和图3是由图1中所示的模块建立的同时执行的相同过程示例中的具有相同的纤程的两个示例产生的情形的示意图。
具体实施例方式
下文中对本发明的详细说明参考了附图。不同的附图中相同的附图标记标示相同或相似的元件。此外,下文的详细说明并不对本发明进行限制。而是,本发明的范围由附加的权利要求及其等价内容限定。
本发明广义上涉及用于实时多线程处理的方法和装置。更具体地说,本发明涉及计算机体系结构、硬件模块以及软件方法,通称为“EVISA”,EVISA使得低系统开销多线程程序执行能够以保持所有处理器有效地繁忙工作并满足实时定时约束条件(constraint)的方式得以执行。所述体系结构可以结合到多线程指令处理器的设计中,或可以用作与先存在的非多线程处理器和用于嵌入应用的专有知识产权核心模块相结合的独立体系结构模决。
A.EVISA线程模式概述在EVISA模式中,程序指令分为三层(1)线程化过程;(2)纤程;和(3)单独的指令。前两层形成EVISA的两层线程层次。每层都定义了该层的成分之间的排序约束条件以及用于确定满足所述约束条件的进度表的机构。
单独的指令处于最低级。单独的指令遵守顺序执行语义(semantic),其中,要被立即执行的下一指令直接跟在当前指令之后,除非所述顺序被分支指令明确地改变。通过允许独立相邻的指令同时执行来利用适量的并行处理的方法,称作指令级并行处理,是公知的,并且只要所得到的性能在功能上等价于顺序执行,就允许使用所述处理方法。
正如本文所使用的,术语“纤程”意味着共享共同语境的指令集,由一组寄存器和包含与其它纤程共享的变量的帧的标识符构成。当处理器开始执行纤程时,其执行纤程的指定的第一指令。纤程中随后的指令由指令顺序语义确定。一般来说对相同纤程中的其它指令,分支指令(不管是有条件的还是无条件的)是允许的。在纤程中对顺序过程进行的调用也是允许的。当遇到显式纤程终止标记时,纤程结束执行过程。纤程的语境从纤程的开始到其终止都保持有效。
由于纤程是共享共用语境的指令集,因此如果每个纤程都具有唯一的语境,则两个以上纤程有可能共享相同的指令集。这与传统计算机中的“重入过程”相似,其中,程序的相同部分的多个复制件使用程序堆栈的不同部分。本文使用的术语“纤程编码”指的是纤程的指令,不包括语境,即由纤程执行的程序的部分。
纤程通常是非优先的。一旦纤程开始执行,将不会被挂起,并且除了特定情况的出现,否则其语境将不会从有效处理中删除。这包括由运行时间错误引起的阱的产生以及为了满足实时约束条件而引起的纤程的中断。因而,纤程是利用原子能排定的。当所有数据和控制相关性已经得到满足时,将纤程“使能”(进入一旦处理源可用就适于开始执行的状态)。
同步间隙(slot)和同步信号用于进行这个判定。同步信号(可能具有附带的数据)由满足数据或控制相关性的纤程或成分产生,并且告知接受者相关性已经得到满足。同步间隙记录有多少相关性还未得到满足。当该计数变为零时,将与该同步间隙相关的纤程使能,因为此时其已经获得了执行所必需的所有数据和控制许可。将计数复位,以使得纤程能够多次运行。
正如本文所采用的,术语“线程化过程”意味着共享超出单个纤程的寿命而继续存在的共用语境的纤程的集合。所述语境由过程的输入参数、局部变量和同步间隙组成。语境存储在帧中,当调用过程时,从存储器动态分配。与纤程的情况相同,术语“过程代码”指的是包括属于线程化过程的指令的纤程代码。
线程化过程由其它过程中的纤程明确调用。在线程化过程代码中的纤程代码当中,其中之一被指定为初始纤程。当调用线程化过程并且其帧已经准备好时,初始纤程被使能,并在处理源可用时马上开始执行。同一线程化过程中的其它纤程可以仅使用同步间隙和同步信号使能。显式终止命令用于终止执行所述命令的纤程以及纤程所属的线程化过程,这会引起帧的解除分配。由于过程中止是显式的,因此,不需要对这些帧进行不用单元收集。
B.EVISA多线程体系结构模块的描述这部分解释了如何使常规处理器更好地工作(运行顺序纤程)和将专门针对EVISA线程模型的任务迁移到定制的协处理器模块中。不过,多线程处理能力另外还可以直接设计到处理器中,而不是将其制成一个单独的模块。上述结构中的机器(具有单独的协处理器)可以与图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专用于EVISA体系结构,如图1所示。
最简单的实现方式是为每个EU 12使用一个单线程的COTS处理器。术语“COTS”(商业通用)描述了一种容易获得的既成产品(该术语有时用在军队采购清单中)。然而,所述模型中的EU 12可以具有用于同时执行一个以上纤程的处理资源。这在图1中表示为一组并联纤程单元(FU)22,其中,每个FU 22都可以执行一个纤程之内所包含的指令。这些FU可以是独立的处理器(与传统SMP机器中的相同);或者,它们可以以共同代表能够同时执行多线程处理的一个或多个多线程处理器。
SU 14实现专门针对EVISA两级线程模型的所有多线程特征,通常COTS处理器不支持这些特征。这包括EU 12与网络接口、事件解码、同步间隙管理、数据传送、纤程调度和负载平衡。
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和RQ 16,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)设计用于支持本发明的实施方式中的EVISA模型的特定特征,但是所述字段也可以在制造EVISA的简化版的过程中省略掉。
FID/IP部分32存储与EU 12正在执行的每个纤程相关的信息,包括FID和与该纤程相应的线程化过程。SU 14需要知晓EU 12当前正在执行的每个纤程的身份,以强制实施调度约束条件。SU 14也需要所述信息,以使从EU 12发送到SU 14的EVISA运算指定的本地对象能够被正确识别。如果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还更新FID/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具有用于处理EQ16中的所有事件的逻辑电路,并可以访问SU 14的所有其它存储区。
分布式实时(RT)管理器44帮助确保在EVISA模式下满足实时约束条件。RT管理器44具有对所有队列和所有接口的状态以及实时时钟进行访问的访问权。RT管理器44确保具有高优先级和/或实时约束条件的事件、消息和纤程位于具有较低优先级的对象的前面。
在采用EVISA体系结构进行通信应用时,SU 14也可以扩展,以从互连网络接收到消息时支持线程化过程的调用,所述互连网络通过适当的接口与局域网、广域网或城域网相连。在所述扩展中,将消息类型与用于对其进行处理的线程化过程之间的关联提供给SU 14。
SU 14具有十分分散的控制结构。图1的设计中示出了与EU 12、网络100和队列16相互作用的SU 14。这些相互作用都可以借助正确的同步由独立的模块同时进行。例如,网络接口26可以从另一节点读取对令牌的请求,同时EU接口24将就绪队列16的头部提供给EU12,内部事件队列28在此过程中处理一个或多个EVI SA运算。简单的硬件互锁用于控制对多个模块例如缓冲器共享的资源的同时访问。
使用单独的硬件SU替代利用软件来仿真SU功能具有多个优点。首先,辅助任务可以有效下载到SU 14上。如果单个处理器用在每个节点中,所述处理器将不得不处理纤程支持、从纤程的执行转向CPU资源。即使是采用了双处理器结构,其中,一个处理器专用于纤程支持,也不会是有效的。大多数通用处理器必须通过存储器进行通信,而专用设备可以使用存储器映射I/O,其允许实现最佳化,例如对不同的运算使用不同的地址。这会提高从EU 12发出事件请求的速度。
第二,在硬件中执行的运算在很多情况下是极为快速的。用于纤程支持的大多数运算涉及简单的子任务,例如,检查计数器和随后的指针。所述子任务可以进行组合并可能仅在几个时钟周期内并行处理,而利用软件对其进行仿真将需要10或20个具有一些条件分支的指令。一些运算有可能需要队列的相关搜索或直接超高速缓存控制之类的任务,这些任务可以由定制硬件快速执行,但是除了作为长循环以外,上述任务一般来说不能在通用处理器中进行。
最后,如上所述,大多数SU 14的任务可以并行执行。传统处理器必须在这些任务之间进行切换。
总之,这三个不同之处使具有硬件SU的系统纤程效率较高。对SU14的下载纤程运算以及这些运算的加速将减少与每一纤程相关的开销,使每一纤程耗费更低。更快的负载平衡、与其它元件并行运行可以更快地展开周围的纤程,或者可以采用更先进的负载平衡方案产生更好的结果。在上述两种情况下,工作将分配得更加均匀。最后,专用硬件能够更加快速地处理纤程之间的通信与同步,允许编程器和编译器使用更加异步的线程。
C.对EVISA实时多线程处理特征的说明EVISA体系结构具有支持实时应用的机构。主要机构是对优先纤程调度以及由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中的一条纤程产生中断,其方式与纤程被具有过程级或系统级优先级的纤程中断的方式相同。
为了减小中断的影响范围,具有高系统开销的正在执行的纤程可以在其代码中具有预编程的轮询点,并可以在到达所述点时检查RQ16。如果任意高优先级纤程在此时在RQ 16中等待,正在执行的纤程将保存其自身的状态,并将控制移交给高优先级纤程。编译器技术可以用于插入轮询点以及确定轮询点之间的分辨率(时态间隔),以满足实时响应的要求和最小化所述中断期间状态保存和恢复的系统开销。然而,如果轮询事件没有足够快速的发生以满足实时约束条件,上述机构将被调用,RT管理器44将产生中断。
最终机构使用RQ 16的属性字段中的其它位,以在EU 12同时执行两个以上纤程时实施调度约束条件。一些纤程可以用于访问共享资源(例如变量),并需要处于编码的“临界区域”之内,由此,只有一条纤程可以在给定时间访问资源。临界区域可以在SU 14中实施,其通过设定RQ 16入口信息的属性字段内的附加位来将纤程标记为“纤程原子”或“过程原子”而了解当前正在运行的所有纤程的标识符(来自FID/IP单元32)。纤程原子纤程在相同的纤程(具有相同的FID和IP的纤程)运行时不能运行。过程原子纤程在任何属于同一线程化过程的纤程(即任意具有相同FID的纤程)正在运行时不能运行。
D.EVISA实时多线程编程模式的说明具有任意基于定制的或基于COTS的EU的本文所介绍的EVISA成分的任意组合在下文中都被称为EVISA虚拟机(EVM)。任意EVM的一个要求是指令组至少包含基本EVISA运算、与存储器模块兼容和用于EU 12的数据类型组。一旦满足基本要求,就可以进行改进和扩展。EVISA依靠各种用于排序和运算线程和纤程的运算。这些运算执行下述功能(1)过程和纤程的调用和终止;(2)同步间隙的创建和操纵;和(3)将同步信号或是单独的或是与数据自动捆绑到一起发送到同步间隙。
这些功能的一部分是自动执行的,通常作为其它EVISA运算的结果。例如,将同步信号发送到具有一个当前同步计数的同步间隙使间隙计数复位、纤程使能。最后,该纤程变为有效,并开始执行运算。但是,一些运算,例如过程调用,可以由应用程序代码直接触发。所述部分列出并定义了八个直接(程序级)运算,所述运算最好由实现EVISA线程模型的机器执行。
这些部分定义了任意机器中存在的基本功能,所述任意机器通过提供优选数据类型和运算组中的所述功能的优选实施例支持EVISA。完成相同功能的其它数据类型和运算组可以由本领域普通技术人员容易地构造出来。
1.基本EVISA数据类型下面的数据类型和函数由算子采用。
帧标识符(FID)是对包含一个过程示例的本地语境的帧的唯一参考。在EVM指定的方式下,使用FID,可以访问局部变量、输入参数和所述过程的同步间隙以及进程代码本身。跨越全部节点,FID是全局唯一的。即使在不同的节点上,也不会同时有两个相同FID的帧。FID可以结合到帧的本地存储地址中。如果不这样做的话,假使帧位于特定节点上,将在该节点上设置机构以将FID转换为本地存储地址。
指令指针(IP)是特定线程化过程中的特定纤程代码的指定第一指令的唯一参考。FID和IP的组合确定了纤程的特定步骤。
过程指针(PP)是线程化线程编码的开始的唯一参考,但不是特有的步骤。借助于所述参考,EVM可以访问开始过程的新步骤所必需的所有信息。
唯一同步间隙(SS)由同步计数(SC)、复位计数(RC)、指令指针(IP)以及帧标识符(FID)构成。最前两字段是非负整数。表示SS.SC指的是SS的同步计数等。然而,上述内容仅是为进行说明而提出的。这些字段不应被应用程序操纵,除非经过下面所列出的专用EVISA算子。SS类型包括识别单同步间隙的足够信息,所述单同步间隙是所有节点中唯一的。需要多少信息取决于算子和EVM。在一些情况下,同步间隙可以限制到特定帧,这意味着仅需要确定所述帧内间隙的数量。在其它情况下,需要完整的全局地址(例如由FID和同步间隙数组成的一对地址)。
在EVISA算子的列表中,类型T意味着任意对象,可以是标量或组合(数组或记录)。对象的这一类可以包括上面所列出的参考数据类型中的任意一种或几种(FID、IP、PP、SS),以使这些对象也可以用在EVISA运算中(例如它们可以传送到另一过程步骤中)。类型T还包括下面的参考数据类型的任意实例。
对于类型T的每个对象而言,存在对T的类型参考对所述对象的参考,所述对象可以通过该参考访问或更新。根据存储器要求,其必须是全局唯一的,所有处理单元必须能够使用参考访问类型T的对象。使用术语“参考”而不是“指针”或“地址”,用于避免对由这些参考执行的运算的种类作出任何无端的假设。
下面列出了八个运算,说明了每个运算的作用,所述运算必须由EVM支持。所述列表还建议了可以添加到EVM的选项。在列表中,“当前纤程”是正在执行运算的纤程,“当前帧”是与当前纤程相应的FID。
2.基本EVISA线程控制运算线程控制运算根据EVISA线程模型控制线程(纤程和过程)的创建和终止。初级运算是进程调用。必须有算子来标记纤程的结束和终止进程。不需要直接用算子创建纤程,因为纤程是隐含使能的。当调用进程时,一条纤程自动使能,其它的作为同步信号的结果而被使能。
对EVISA进行编译的程序指定了一个过程,所述过程在开始程序时自动调用。即使存在多个处理器,也仅调用所述过程中的一个步骤。其它的处理器保持空闲,直到过程对其进行调用。这将EVISA与并行模型例如SPMD(单处理器/多数据)区别开来,在SPMD中,程序的相同副本在所有节点上同时开始。
INVOKE(PP proc,T arg1,Targ2)算子调用过程(proc)。其为proc分配适当的帧,为arg1、arg2等初始化其输入参数,为proc的初始纤程使能IP。EVM可以对可通过自变量的类型作出限制,例如仅是标量值。系统保证帧内容,正如执行proc的处理单元所见,在开始执行proc之前被初始化。在多处理器系统中,INVOKE算子可以包括附加的自变量,用以指定运行过程的处理器或指示SU 14应当使用负载平衡机构确定运行过程的位置。
TERMINATE_FIBER算子终止当前纤程。运行该纤程的处理单元任意向用于所述纤程的处理资源再赋值,并在另一使能纤程存在的情况下开始对另一使能纤程执行处理。如果没有另一使能纤程,处理单元等待,直到另一使能纤程可用,并开始执行。
TERMINATE_PROCEDURE算子与TERMINATE_FIBER相似,但是其还终止与当前纤程相应的过程情况。当前帧解除分配。所述说明内容并不特别规定属于这种情况的任何其它纤程在它们有效或使能时所发生的情况,或如果在解除分配之后访问当前帧的内容时所发生的情况。EVM可以定义在这些情况下发生的运算或定义发生编译器(或编程器)所尽力避免产生的错误之类的出现。
3.基本EVISA同步间隙控制运算同步间隙用于控制纤程的使能和对有多少相关性已经得到满足进行计数。它们必须在接收到同步信号之前由数值进行初始化。可以用过程调用的自动部分进行同步间隙初始化。对多线程机构编程的已有经验显示相关性的数量会随过程的一个步骤到下一个步骤的变换而发生变化,并与编译时(或甚至在调用过程的过程中)的未知条件相关。因此,最好对正在初始化的同步间隙直接运算。当然,如果编译时初始化是固定的,EVISA的特定实施方式可以通过将间隙初始化移到帧初始化阶段而最优化。
算子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.基本EVISA同步运算同步算子为EVISA赋予控制数据和过程之间的相关性的能力,甚至其不是直接相关的,从而使编程器除了简单递归之外还可以创建并行控制结构。这样,编程器可以将控制结构调整为应用所需的结构。本部分描述了与三个(3)运算EVISA同步的基本要求,但是其它的运算组也可以满足相同的要求。本部分还说明了对这些基本能力的有用扩展,所述基本能力建筑在本发明的基础之上。
三个基本同步运算可以由EVISA提供(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算子而在EVISA中实现。所述系统将数据值复制到目的驱动器所参考的位置上,然后将同步信号发送到间隙。
所述系统保证数据传递在同步信号发送到间隙之前完成。更精确地说,系统保证在处理单元开始执行作为同步信号发送到间隙的直接或间接结果而使能的纤程时该处理器在本地目标驱动器中看到val。其直接结果意味着同步信号将同步计数递减到零,而间接结果意味着同一间隙的随后的信号将计数递减到零。系统还保证同步间隙更新之后可以安全的改变val。如果val通过“by reference”例如通常以数组的形式完成,这是极为相关的。
SYNC_WITH_FETCH(reference-to-T source,reference-to-Tdest,SS slot)是EVISA组的最后的算子,也将同步信号与数据传递相合并,但是传递的方向是反向的。虽然前面的算子将一数值作为其第一自变量(所述自变量必须是局部变量),SYNC_WITH_FETCH规定了可以是任何地方的位置,即使是在远程节点上。类型T的数据从数据源复制到目的地。排序约束条件与SYNC_WITH_DATA的相同,除了val(上段中的)现在参考数据源参考的数据。
所述算子主要用于通过使用分阶段事务处理的方式获取远程数据。如果对所述数据的访问需要相对较长的潜伏时间,则所述数据是远程的。远程数据存在于具有分布式存储器结构的计算机系统中,其中,具有本地存储器的处理器节点通过互连网络相连。远程数据还存在具有多个存储器的共享存储器系统的一些实施方式中,可以参考NUMA(非均匀存储器访问)结构之类的文献。如果过程需要获得可能为远程的数据,开始获取的纤程将不等待数据,因为所述过程将会花费相对较长的时间。作为替代,数据的使用者应在另一纤程,其具有SYNC_WITH_FETCH,用于同步间隙和在接收到数据时使能使用者。
所述运算仅从初始化运算的纤程的视点上看可被认为是“原子”的。实际上,所述运算典型地在两个阶段发生步骤向前传送到源数据的位置(在分布式存储器结构中),之后,已经获取数据以后,传回原始纤程。SS参考基准与两次传递相结合,从而,所述系统保证作为同步信号发送到间隙的直接或间接结果开始执行任意纤程之前数据复制到目标驱动器。
这三个算子是任何EVISA EVM的基本要件,但是也可以使用改变形式和扩展的算子。例如,可以存在仅需要等待一个数据或控制事件的纤程,这意味着同步字段具有复位计数一。对于这种情况,EVM可以定义算子的特别说明,使纤程直接而不是经过同步间隙传送,从而节省了时间和同步间隙间隔。然而,上述运算是可任选的,因为相同的效果可以用常规同步间隙获得。
另一种改变方式是将自变量分为EU 12与SU 14之间的这些算子。算子SYNC_WITH_DATA和SYNC_WITH_FETCH将同步间隙与存储数据的位置相组合。不是从在EU 12上执行的纤程指定两个自变量,EVM可以提供用于程序的装置来结合同步间隙和SU 14中的数据位置,此后,纤程将仅需要指定数据位置;SU 14将把缺失的同步间隙补充到算子。
EVISA中可以存在潜在竞态条件。一个例子是在同一过程示例中相同纤程的另一示例处于有效或使能的同时使能一纤程。这在EVISA下不一定是错误,但是可用在特定条件下正确工作。图3示出了同一过程示例同时有效的情况下同一纤程的两个示例递增的情形。技术上,每个纤程都具有其自身的语境,因此,可以同时运行两条纤程而不会相互中断。然而,它们还共享同一帧,它们所需的任何输入数据都必须直接(数据存在于帧本身)或间接(参考帧中的数据)来自所述帧,因为所有的本地纤程语境除了FID自身之外都来自帧。如果两条纤程都复制相同的数据和参考信息,它们将产生冗余运算。如果每个都从帧中的数值中载入其初始寄存器数值,并在此之后更新帧数值,所述纤程有可能同时对独立数据进行运算。图3示出了与数组x的不同元素一同工作的每条纤程,并示出了每条纤程已经将参考信息复制到寄存器r2之后的状态。但是所有环境下所述代码的正确运算需要附加的硬件机构并需要采用特定编程格式。
首先,如果硬件允许两条纤程同时运行,其必须支持对帧变量的自动访问,即获取和添加简单。这可以对EU 12所支持的指令组扩展。或者,可以将变量存储在RQ 16内的外部字段中,EU 12可以从RQ 16的所述字段而不是从帧中载入一个寄存器。所述字段可以保持例如数组元素的索引。第二,如果纤程由结合有自动数据传递的分离的同步信号触发(应当注意,帧中的第一间隙具有计数值1和触发纤程1),必须对数据的两个产生源(假设在这种情况下其发送到x[])编程来将两个数值发送到x[]中的单独的位置上。
所述实例描述了EVISA结构是如何通过在SU 14或EU 12中附加受到管理的同步能力以支持更高的控制结构组同时保持本发明的基本优点而得到扩展的。
在不背离本发明的范围或精神的条件下,可以对本发明的用于实时多线程处理的方法和装置进行多种改进和变形,这对本领域技术人员来说是显而易见的。其实施例已经在上文中给出。
本发明的其它具体实施方式
通过对这里所公开的本发明的说明和实践的思考对本领域技术人员而言是显而易见的。这意味着说明内容和实施例仅可以认为是示例性的,本发明的真实的范围和精神由随后的权利要求定义。
权利要求
1.一种实时多线程处理装置,包括通过互连网络连接的一个或多个多线程节点,每个多线程节点包括用于执行有效纤程的执行单元;用于调度和同步纤程和过程以及处理远程访问的同步单元,所述同步单元与互连网络互连;和就绪队列和事件队列,执行单元与同步单元通过所述队列进行通信。
2.根据权利要求1所述的实时多线程处理装置,其中,执行单元具有至少一个与存储器总线互连的计算机处理器。
3.根据权利要求2所述的实时多线程处理装置,其中,就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器。
4.根据权利要求2所述的实时多线程处理装置,其中,事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元。
5.根据权利要求1所述的实时多线程处理装置,还包括与执行单元和同步单元互连并由执行单元和同步单元共享的存储器。
6.根据权利要求1所述的实时多线程处理装置,其中,如果执行单元中运行的纤程需要执行与其它纤程有关的运算,执行单元将向事件队列发出请求以由同步单元进行处理。
7.根据权利要求1所述的实时多线程处理装置,其中,同步单元管理纤程,并将准备进行执行的任意纤程放到就绪队列。
8.根据权利要求1所述的实时多线程处理装置,其中,同步单元包括系统总线接口,执行单元通过该接口访问事件队列和就绪队列,同步单元通过该接口访问存储器;和网络接口,同步单元通过该接口与互连网络互连。
9.根据权利要求8所述的实时多线程处理装置,其中,同步单元还包括内部事件队列,包含等待将被结束或向前传送到另一节点的未完成事件;内部就绪队列,包含准备将被执行的纤程的列表;和帧标识符/指令指针区,存储与执行单元当前正在执行的每一纤程相关的信息。
10.根据权利要求9所述的实时多线程处理装置,其中,同步单元还包括输出消息队列,缓冲等待通过互连网络输出的消息;令牌队列,保持还没有分配给节点的所有未决线程化过程调用;和内部高速缓存,保持由同步单元读取的最近访问的同步间隙和数据。
11.根据权利要求10所述的实时多线程处理装置,其中,同步单元还包括执行单元消息汇编区,从系统总线接口收集存储序列,并将完成的事件插入到事件队列;网络消息汇编区,接收输入消息,并将完成的消息插入到事件队列;和分布式实时管理器,确保具有高优先级或实时约束条件的事件、消息和纤程被置于具有较低优先级的对象之前。
12.一种实时多线程处理方法,包括提供通过互连网络连接的一个或多个多线程节点,每个多线程节点执行一方法,该方法包括由执行单元执行有效纤程;由同步单元调度和同步纤程和过程以及处理远程访问,所述同步单元与互连网络互连;和通过就绪队列和事件队列在执行单元与同步单元之间提供通信。
13.根据权利要求12所述的实时多线程处理方法,其中,执行单元具有至少一个与存储器总线互连的计算机处理器。
14.根据权利要求13所述的实时多线程处理方法,其中,提供通信的子步骤包括由就绪队列将从同步单元接收到的信息提供到执行单元的至少一个计算机处理器。
15.根据权利要求13所述的实时多线程处理方法,其中,提供通信的子步骤包括由事件队列将从执行单元的至少一个计算机处理器接收到的信息提供到同步单元。
16.根据权利要求12所述的实时多线程处理方法,其中,每个多线程节点执行一方法,该方法包括将存储器与执行单元和同步单元互连。
17.根据权利要求12所述的实时多线程处理方法,其中,调度和同步纤程和过程的子步骤包括如果执行单元中运行的纤程需要执行与其它纤程有关的运算,执行单元将向事件队列发出请求以由同步单元进行处理。
18.根据权利要求12所述的实时多线程处理方法,其中,调度和同步纤程和过程子步骤包括由同步单元管理纤程并将准备进行执行的任意纤程放到就绪队列中。
19.根据权利要求1所述的实时多线程处理方法,其中,调度和同步纤程与过程的子步骤包括提供系统总线接口,执行单元通过该接口访问事件队列和就绪队列,同步单元通过该接口访问存储器;和提供网络接口,同步单元通过该接口与互连网络互连。
20.根据权利要求19所述的实时多线程处理方法,其中,调度和同步纤程与过程的子步骤还包括提供内部事件队列,其包含等待结束或向前传送到另一节点的未完成事件;提供内部就绪队列,其包含准备被执行的纤程的列表;和提供帧标识符/指令指针区,其存储与执行单元正在执行的每一纤程相关的信息。
21.根据权利要求20所述的实时多线程处理方法,其中,调度和同步纤程与过程的子步骤还包括提供输出消息队列,其缓冲等待通过互连网络输出的消息;提供令牌队列,其保持还没有被分配给节点的所有未决线程化过程调用;和提供内部高速缓存,其保持由同步单元读取的最近访问的同步间隙和数据。
22.根据权利要求21所述的实时多线程处理方法,其中,调度和同步纤程与过程的子步骤还包括提供执行单元消息汇编区,其从系统总线接口收集存储序列,并将完成的事件插入到事件队列;提供网络消息汇编区,其接收输入消息,并将完成的消息插入到事件队列;和提供分布式实时管理器,其确保具有高优先级或实时约束条件的事件、消息和纤程被置于具有较低优先级的对象之前。
全文摘要
本发明描述了一种计算机结构、硬件模块和软件方法,通称为“EVISA”(10,20,100),其允许以保持所有处理器(10)有用繁忙并满足实时定时约束条件(constraint)(100)的方式执行低系统开销多线程处理程序。所述体系结构可以结合到多线程处理器(10)的设计中,或可以用作与先存的非多线程处理器以及用于嵌入应用的专有知识产权(IP)核心模块相结合独立的体系结构模块。
文档编号G06F15/00GK1867891SQ03818212
公开日2006年11月22日 申请日期2003年5月30日 优先权日2002年5月31日
发明者广·R·高, 凯文·B·西奥博尔德 申请人:德拉华州大学, 广·R·高, 凯文·B·西奥博尔德
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1