计算机处理器中线程间数据通信的方法和系统的制作方法

文档序号:6437793阅读:148来源:国知局
专利名称:计算机处理器中线程间数据通信的方法和系统的制作方法
技术领域
本发明涉及数据处理,或者更具体地说,本发明涉及用于在计算机处理器中进行线程间数据通信的方法、装置和产品。
背景技术
计算机变得日益复杂且功能也日益强大。计算机软件不断地要求计算机硬件提供更大的处理能力并且计算机硬件的复杂程度也相应地增加。当前的计算机处理器,例如,包括其中可执行大量软件线程的大量硬件线程。目前,此类硬件线程之间的通信十分繁重、耗时、耗资源、且效率低下。发明内容
披露了用于在具有多个硬件执行线程的计算机处理器中进行线程间数据通信的方法、装置和产品。每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。 所述线程间通信控制器根据本发明的实施例执行线程间数据通信,其方式为响应于一个或多个RECEIVE (接收)操作码,由所述线程间通信控制器注册一个或多个执行RECEIVE操作码的接收线程;由所述线程间通信控制器从发送线程的SEND (发送)操作码接收要发送到接收线程的派生消息数量和基值的指定(specification);由所述线程间通信控制器产生派生消息,针对每个已注册的接收线程递增一次所述基值,以便每个派生消息包括单个整数作为所述基值的单独增量;由所述线程间通信控制器将派生消息发送到每个已注册的接收线程;以及从所述线程间通信控制器将接收线程接收的实际派生消息数量返回到发送线程。
通过下面对附图中所示的本发明的示例性实施例的更具体的描述,本发明的上述和其他目标、特征和优点将变得显而易见,在所述附图中,相同的标号一般表示本发明的示例性实施例的相同部分。


图1示出根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的系统的网络图。
图2示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图3示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图4示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图5示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图6示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图7示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图8示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
图9示出显示根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的示例性方法的流程图。
具体实施方式
将参考从图1开始的附图描述根据本发明在计算机处理器中进行线程间通信的示例性方法、装置和产品。图1示出根据本发明的实施例的用于在计算机处理器中进行线程间数据通信的系统的网络图。图1中的系统包括包含示例性计算机(152)的自动计算机器。图1中的计算机(15 包括至少一个计算机处理器(156)或‘CPU’,以及通过高速存储总线(166)和总线适配器(158)与处理器(156)和计算机(152)的其他组件相连的随机存取存储器(168) ( ‘RAM’ )。
图1的系统中的计算机(152)的示例性处理器(156)包括多个硬件执行线程 (120、122、1M和126)。硬件线程提供借以执行软件线程的计算机程序指令的物理装置。软件线程是可由操作系统调度以在处理器上执行的最小处理单元。软件线程一般包含在进程内。多个软件线程可以存在于同一进程中并共享诸如存储器之类的资源,而不同的进程不能共享这些资源。具体而言,进程中的各软件线程共享该进程的指令和上下文(变量在执行中的任何给定时刻具有的值)。与之对照,“硬件”线程在计算机处理器的硬件中实现并执行软件线程的指令。也就是说,对硬件线程的支持以用于每个硬件线程的单独的体系结构寄存器组的形式内置于处理器本身中,因此各个硬件线程可以同时执行,无需在硬件线程之间进行上下文切换。每个此类硬件线程可以运行多个软件执行线程,这是通过将软件线程分配给被称为“时间片”或“时隙”的处理器时间部分以及在软件线程不再拥有其分配到的硬件线程期间保存用于该软件线程的体系结构寄存器组的内容的上下文切换来实现的。 在图1的示例中,每个硬件线程(120、122、124和126)都具有对应的寄存器组(128、130、 132 和 134)。
在图1的示例中,计算机程序指令可以通过使用指令解码器(136)、指令分派器 (138)和执行单元(140)在硬件线程(120、122、1M和126)内执行。指令解码器(140)是处理器(156)内从寄存器组(1观、130、132和134)中的寄存器检索指令并将所述指令解码为用于在处理器内的执行单元(140)上执行的微指令的静态和动态逻辑网络。将被解码以便执行的指令例如可以包括操作码(操作代码)。操作码是机器语言指令的一部分,其指定要执行的操作。除了操作码本身以外,指令还可包含一个或多个参数,也称为操作数,操作应在此操作数上执行,尽管有些操作具有隐式操作数,或者甚至没有任何操作数。根据解码和执行操作码所在的处理器的体系结构,所述操作数可以是寄存器值、调用栈中的值、其他存储器值、I/O端口等。一旦经过解码,执行单元(140)便执行微指令。所述执行单元的例子包括LOAD(加载)执行单元、STORE(存储)执行单元、浮点执行单元、用于整数算数和逻3/12 页辑运算的执行单元等。图1的示例中的计算机处理器(156)还包括指令分派器(138),所述分派器在存在资源竞用时,仲裁来自硬件执行线程(120、122、1M和126)的指令的分派优先级。指令分派器(140)是处理器(156)内将微指令分派给处理器(156)中的执行单元 (140)的静态和动态逻辑网络。
图1的示例中的每个硬件线程(120、122、1M和126)在操作上连接以便通过线程间通信控制器(14 进行数据通信。在图1的系统中,示例性线程间通信控制器(142)是处理器(156)内被配置为根据本发明的实施例进行线程间数据通信的静态和动态逻辑网络。图1的示例中的线程间数据通信控制器(14 根据本发明的实施例管理计算机处理器 (156)中的线程间数据通信,其方式为除了其他操作以外,响应于一个或多个RECEIVE操作码(114),注册一个或多个接收线程(122、1M和126)。接收线程,如该术语在本说明书中使用的,是指执行RECEIVE操作码(114)的硬件线程。RECEIVE操作码(114)的示例可以实现为recv.rt,其中操作数‘rt’指定线程间数据通信控制器(142)要在其中存储从发送线程发送到执行RECEIVE操作码的接收线程的消息的寄存器。
在诸如图1的示例中示出的某些实施例中,每个RECEIVE操作码(114)还指定通道(148)。通道,如该术语在本说明书中使用的,是指发送线程和接收线程之间用于线程间数据通信的有效或虚拟数据通信连接。此类连接需要是直接物理连接,而是物理连接的抽象,即发送方(发送线程)和接收方(接收线程)之间的虚拟化数据通信通道。在图1的示例中,如下面更详细地描述的,线程间通信控制器(14 被配置为通过使用此类通道,实际上虚拟化发送线程和接收线程之间的物理通信连接。所述通道可以被指定为值-整数、 存储器地址或其他通道标识值。在某些实施例中,通道可以是指定的虚拟存储器地址,所述虚拟存储器地址映射到对于使用该相同通道的所有线程相同的硬件存储器地址。在其中发送线程和接收线程指定通道的实施例中,线程间通信控制器(142)被配置为允许在指定同一通道的发送线程和接收线程之间进行通信(就像两个线程直接物理连接)。相反,当发送线程和接收线程指定不同通道时,线程间通信控制器(142)被配置为禁止在两个线程之间进行通信。此处描述的是根据本发明的实施例的线程间数据通信中通道的许多可能用法中的一个示例性用法。下面将描述进一步的示例。
执行SEND操作码(102)的硬件线程在本说明书中被称为“发送”线程。在根据本发明的实施例的线程间数据通信中,示例性线程间通信控制器(142)还从发送线程(120) 的SEND操作码(102)接收要发送到接收线程的派生消息(108、110和112)数量(104)和基值(106)的指定。在其中线程间通信控制器(14 被配置为根据通道管理通信的实施例 (例如图1的示例中示出的实施例)中,SEND操作码(102)可以进一步指定通道(148)。
根据本发明的实施例在硬件线程之间传输的数据通信消息在本说明书中被描述为“派生”消息,因为此类消息的内容是由发送线程提供的基值派生而来。下面将更详细描述此类消息派生。要发送的派生消息数量(104)可以是存储在发送线程(120)的寄存器(128)或其他存储位置(memory location)中的值,并且SEND操作码(10 的要发送的派生消息数量(104)的指定可以实现为标识存储该值的寄存器(128)或存储位置的SEND 操作码的操作数或参数。基于某些原因(下面将说明其中一些原因),线程间通信控制器 (142)可以仅发送指定要发送的派生消息数量中的一部分。发送线程,例如,可以请求发送 1000个消息,但是线程间通信控制器(142)可以仅发送这1000个请求消息中的100个。7
基值(106)可以是存储在寄存器或其他存储位置中的诸如0之类的整数值或某一存储器地址,其中SEND操作码中的基值(106)的指定可以实现为标识存储该基值的寄存器或存储位置的操作码的操作数或参数。作为被配置为用于根据本发明的实施例执行的线程间通信的SEND操作码的示例,考虑以下操作码send、base、limit、chan。在该示例性操作码中,操作数‘base’指定作为存储基值(106)的整数值的寄存器,操作数‘limit’指定存储作为要发送的派生消息数量(104的另一整数值的寄存器,以及操作数‘chan’指定存储作为通道的诸如存储器地址之类的通道标识值的寄存器。
如下面详细描述的,所述线程间通信控制器针对每个发送到已注册的接收线程的派生消息递增一次所述基值的计数。因此,在某些实施例中,‘limit’将要发送的消息数量指定为所述基值的最大增量,而不是要发送的绝对消息数量。考虑例如基值为5和limit 为10。在该示例中,当limit将要发送的消息数量指定为所述基值的最大增量时,要发送的消息数量是5,而非10。
在根据本发明的实施例的线程间数据通信中,图1的示例性线程间通信控制器 (142)还产生派生消息。线程间通信控制器(14 通过针对每个已注册的接收线程递增一次基值(106)产生派生消息,以便每个派生消息(108、110和11 包括单个整数(109、111 和113)作为基值(106)的单独增量。考虑例如指定四个要发送的派生消息和为0的基值的SEND操作码。在该示例中,线程间通信控制器(14 可以针对第一派生消息将基值增加为整数1,针对第二派生消息再次将基值增加为整数2,针对第三派生消息再次将基值增加为整数3,针对第四派生消息再次将基值增加为整数4。每个派生消息与其他派生消息相比都是单独和独立的整数。
从线程间通信控制器的角度来看,每个产生的派生消息都包括一整数值。也就是说,消息本身是整数。但是从接收硬件线程的角度来看,响应于SEND操作码接收的整数可以用作指向存储待处理数据的存储位置的指针,可以是变量值,可以是阵列索引,以及可以是本领域的技术人员可想到的任何其他事物。已注册的接收线程例如可以使用派生消息 (从线程间通信控制器(14 接收的整数值)检索其他数据。通过这种方式,发送线程可以通过仅将整数值(较小数量的数据)发送给接收线程来将相对较大数量的数据发送给接收线程。
在根据本发明的实施例的线程间数据通信中,图1的示例性线程间通信控制器 (142)还将派生消息发送到每个已注册的接收线程。也就是说,一旦线程间通信控制器 (142)产生一个或多个派生消息,线程间通信控制器(142)便将派生消息发送到已注册的线程。发送派生消息可以通过在每个线程的寄存器(被指定为RECEIVE操作码的操作数的寄存器)中存储消息并设置与接收线程关联的标志(针对此目的指定的)来实现。所述标志的示例,例如,可以是接收线程的条件码寄存器中的一位或多位。
在其中发送线程(120)和接收线程(122、1M和126)指定通道(148)的实施例中, 所述线程间数据通信可以被配置为仅将派生消息(108、110和11 发送到其RECEIVE操作码指定了由SEND操作码所指定的通道的接收线程。在其中通道被虚拟存储器地址(该虚拟存储器地址映射到用于使用该相同通道的所有线程的同一硬件存储器地址)指定的实施例中,线程间数据通信控制器(14 可被配置为仅将派生消息(108、110和11 发送到其RECEIVE操作码所指定了 SEND操作码所指定的虚拟存储器地址的接收线程。
在诸如图1的示例中示出的某些实施例中,线程间通信控制器(142)可以在操作上连接到服务于硬件线程(120、122、IM和126)的一个或多个存储器管理单元(144)。存储器管理单元是计算机硬件组件,负责处理CPU请求的对存储器的访问。存储器管理单元的功能包括将虚拟地址转换为物理地址(即,虚拟存储器管理),通过访问权限进行存储器保护,缓存控制,总线仲裁,以及在某些计算机体系结构中的存储体切换(bank switching) 0 在通道由虚拟存储器地址(该虚拟存储器地址映射到用于使用该相同通道的所有线程的同一硬件存储器地址)的指定的实施例中,线程间数据通信控制器(14 可以进一步被配置为检查存储器管理单元(144)的访问权限以及仅从对硬件存储器地址具有写入权限的发送线程(120)发送派生消息(108、110和112),以及仅将所述派生消息发送到对通道的硬件存储器地址具有读取权限的接收线程(122、1M和126)。通过这种方式(通过MMU(144) 中的存储器读取和写入访问权限),用户级进程可以有效地在硬件线程(120、122、1M和 126)之间设置通信限制。
在根据本发明的实施例的线程间通信中,图1的示例性线程间通信控制器(142) 还将接收线程接收的实际派生消息数量(116)返回到发送线程(120)。如上所述,在某些情况中,线程间通信控制器(142)不将所请求数量的派生消息发送到接收线程。在图1的示例中,线程间通信控制器(142)然后被配置为报告实际发送的派生消息数量。通过这种方式,发送线程可以判定是否再次发出SEND操作码。在上述示例性SEND操作码中,操作数指定其中存储线程间通信控制器(142)所发送消息的实际数量的寄存器‘rt’。在该示例中, 线程间通信控制器(14 可以通过维护已发送派生消息数量的计数器,将最后一个派生消息发送后的计数器值存储在‘rt’计数器中并设置指示消息发送完成的标志来返回实际发送的派生消息数量。所述标志可以,例如,是发送线程(120)的条件码寄存器组的一位或多位。
计算机(152)的RAM(168)中存储有示例性用户级应用(146),这是一个用于用户级数据处理任务的计算机程序指令模块。用户级应用(146)的示例包括字处理应用、电子表应用、数据库管理应用、多媒体库应用、多媒体编辑应用,以及本领域的技术人员了解的其他应用。在操作系统(154)中实例化和维护用户级应用(146)的进程,其具有一个或多个软件执行线程。操作系统(154)通过在硬件线程(120、122、IM和126)内调度软件线程以在计算机处理器(156)上执行来管理用户级应用(146)的执行。可用于根据本发明的实施例的计算机处理器中的线程间数据通信的操作系统包括UNIX 、Linux , Microsoft XP 、 AIXT\IBM的i5/0S 以及本领域的技术人员可想到的其他操作系统。图1的示例中的操作系统(154)和用户级应用(146)被示为位于RAM(168)内,但是此类软件的许多组件一般也存储在非易失性存储器内,例如,存储在盘驱动器(170)内。
图1中的计算机(152)包括通过扩展总线(160)和总线适配器(158)与处理器 (156)和计算机(15 的其他组件相连的盘驱动器适配器(17 。盘驱动器适配器(172)以盘驱动器(170)的形式将非易失性数据存储装置连接到计算机(152)。在计算机中可用于根据本发明的实施例在计算机处理器中进行线程间数据通信的盘驱动器适配器包括集成驱动电子设备(‘IDE’ )适配器、小型计算机系统接口( ‘SCSI’ )适配器以及本领域的技术人员可想到的其他适配器。非易失性计算机存储器还可以实现为本领域的技术人员可想到的光盘驱动器、电可擦写可编程只读存储器(也称为“EEPR0M”或闪存)、RAM驱动器等。
图1中的示例性计算机(152)包括一个或多个输入/输出(‘I/O’)适配器(178)。 I/O适配器通过,例如,用于控制到诸如计算机显示屏之类的显示设备的输出以及来自诸如键盘和鼠标之类的用户输入设备(181)的用户输入的软件驱动程序和计算机硬件来实现面向用户的输入/输出。图1中的示例性计算机(15 包括视频适配器009),该适配器是专门设计用于将图像输出到诸如显示屏或计算机监视器之类的显示设备(180)的I/O适配器的示例。视频适配器(209)通过高速视频总线(164)、总线适配器(158)以及前端总线 (162)(也为高速总线)与处理器(156)相连。
图1中的示例性计算机(152)包括用于与其他计算机(182)进行数据通信以及用于与数据通信网络(100)进行数据通信的通信适配器(167)。此类数据通信可以通过 RS-232连接,通过诸如通用串行总线(‘USB’ )之类的外部总线,通过诸如IP数据通信网络之类的数据通信网络以及本领域的技术人员了解的其他方式串行地执行。通信适配器实现硬件级数据通信,通过此硬件级数据通信,一台计算机直接地或通过数据通信网络将数据通信发送给另一台计算机。可用于根据本发明的实施例在计算机处理器中进行线程间通信的通信适配器的示例包括用于有线拨号通信的调制解调器、用于有线数据通信的以太网 (IEEE 802. 3)适配器,以及用于无线数据通信的802. 11适配器。
组成图1中所示的示例性系统的计算机及其他设备的安排仅用于说明,并非进行限制。根据本发明的各种实施例可使用的数据处理系统可包括本领域的技术人员可想到的在图1中未示出的其他服务器、路由器、其他设备以及端对端体系结构。此类数据处理系统中的网络可支持许多数据通信协议,包括例如,TCP(传输控制协议)、IP(网际协议)、 HTTP (超文本传输协议)、WAP (无线接入协议)、HDTP (手持设备传输协议)以及本领域的技术人员可想到的其他协议。本发明的各种实施例可以在图1所示以外的各种硬件平台上实现。
为了进一步说明,图2示出了显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。针对其实现图2中的方法的计算机处理器包括多个硬件执行线程,其中每个硬件线程在操作上连接以便通过线程间通信控制器(14 进行数据通信。
图2中的方法包括响应于一个或多个RECEIVE操作码(216),由线程间通信控制器 (142)注册(202) —个或多个执行RECEIVE操作码Q16)的接收线程022)。注册(202) 执行RECEIVE操作码016)的接收线程(222)可以通过各种方式来实现,其中包括,例如, 通过将线程标识符存储在数据结构中,设置与硬件线程关联的指示线程被注册为接收线程的标志,以及通过本领域的技术人员可想到的其他方式。考虑,例如,带有64个硬件线程的处理器。在该示例中,可以指定64位的存储器段用作注册接收线程的设置标志,其中64位段中的每位与处理器的64个硬件线程中的一个(且仅与一个)线程关联。
图2中的方法还包括由线程间通信控制器(142)从发送线程Q20)的SEND操作码(218)接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定。接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定可以通过接收指定存储要发送的派生消息数量0 )(—个整数值)的寄存器或其他存储位置的SEND操作码的操作数或参数以及指定存储基值0 )(另一整数值)的寄存器或其他存储位置的SEND操作码的另一操作数或参数来实现。
图2中的方法还包括由线程间通信控制器(142)产生(206)派生消息(214)。在图2的方法中,产生(206)派生消息(214)包括针对每个已注册的接收线程(22 递增 (208) 一次基值0沈),以便每个派生消息(214)包括单个整数作为基值0 )的单独增量 (232) 0例如,所述基值从0开始,线程间通信控制器(142)可以通过从0增加到1(第一派生消息),然后从1增加到2 (第二派生消息),从2增加到3 (第三派生消息),以及从3增加到4(第四派生消息)来产生四个派生消息。
图2中的方法还包括由线程间通信控制器(142)将派生消息(214)发送QlO)到每个已注册的接收线程022)。将派生消息发送O10)到已注册的接收线程022)可以通过将所述基值的单独增量存储在由所述已注册的接收线程执行的RECEIVE操作码的操作数指定的寄存器或其他存储位置中来实现。所述线程间通信控制器还可以在所述已注册的接收线程中设置指示存储派生消息的标志。
图2中的方法还包括从线程间通信控制器(142)将接收线程(222)接收的实际派生消息数量O30)返回(212)到发送线程020)。将接收线程(222)接收的实际派生消息数量(230)返回(212)可以通过各种方式来实现,其中包括,例如,通过维护已发送派生消息的计数器,并将最后一个派生消息发送后的计数器值存储在SEND操作码指定的寄存器或其他存储位置中数器中;通过计算当前基值(作为派生消息发送的最终增量值)和最初提供的基值的差别并将此差别存储被指定为SEND操作码的操作数或参数的寄存器或其他存储位置中;以及通过本领域的技术人员可想到的其他方式。线程间通信控制器(142)还可以在发送线程中设置指示返回已发送消息的实际数量的标志。
为了进一步说明,图3示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图3中的方法与图2中的方法的类似之处在于,图3 中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图3中的方法与图2中的方法的类似之处还在于,图3中的方法包括注册(202) —个或多个执行RECEIVE操作码Q16)的接收线程022);接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定;产生(206)派生消息014);将派生消息(214)发送OlO)到每个已注册的接收线程 (222);以及返回(212)接收线程(222)接收的实际派生消息数量Q30)。
但是,图3中的方法与图2中的方法的区别在于,在图3的方法中,SEND操作码 (218)和每个RECEIVE操作码将通道指定为通道标识值(306、304)。通道标识值可以是任何值、整数、浮点数、字符串、虚拟或物理硬件存储器地址,以及本领域的技术人员可想到的其他事物。在图3的方法中,将派生消息(214)发送(210)到每个已注册的接收线程(222) 是通过仅将派生消息发送(30 到其RECEIVE操作码指定了由SEND操作码指定的通道的接收线程来实现。也就是说,根据图3的方法的线程间通信控制器被配置为使用通道管理数据通信,从而有效地虚拟化了硬件线程间的物理连接。通过这种方式,多个发送线程可以使用不同的通道在相似的时间执行单独的SEND操作码。也就是说,根据图3的方法的线程间数据通信可以通过多对多关系(许多发送线程对许多接收线程),而非一对多关系(一个发送线程对多个接收线程)的方式来实现。
为了进一步说明,图4示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图4中的方法与图2中的方法的类似之处在于,图4中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图4中的方法与图2中的方法的类似之处还在于,图4中的方法包括注册(202) —个或多个执行RECEIVE操作码Q16)的接收线程022);接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定;产生(206)派生消息014);将派生消息(214)发送OlO)到每个已注册的接收线程 (222);以及返回(212)接收线程(222)接收的实际派生消息数量Q30)。
但是,图4中的方法与图2中的方法的区别在于,SEND操作码(218)和RECEIVE操作码(216)将通道指定为映射到用于使用同一通道的所有线程的同一硬件存储器地址的虚拟存储器地址004、406)。也就是说,根据图4的方法的通道由硬件存储器地址表示。通过在SEND和RECEIVE操作码中指定同一硬件存储器地址,发送线程和接收线程可以具有匹配的通道。但是在图4中,硬件存储器地址是由抽象地址(即虚拟存储器地址)指定的。但是,SEND操作码和RECEIVE操作码不需要指定同一虚拟存储器地址以具有匹配地址。SEND 操作码的虚拟存储器地址可以映射到特定硬件地址,而RECEIVE操作码的虚拟存储器地址 (不同于SEND操作码的虚拟存储器地址的地址)也映射到同一特定硬件地址。通过这种方式,SEND操作码和RECEIVE操作码提供的用于标识通道的实际值可以不同,但是仍然指定同一通道。
在图4的方法中,发送OlO)派生消息(214)是通过仅将派生消息发送002)到其RECEIVE操作码指定的虚拟存储器地址所映射到的硬件存储器地址还被SEND操作码指定的虚拟存储器地址所映射到的接收线程来实现的。也就是说,根据图4的方法,线程间通信控制器仅将派生消息从将通道指定为映射到特定硬件存储器地址的虚拟存储器地址的发送线程发送到将通道指定为也映射到同一特定硬件存储器地址的虚拟存储器地址的接收线程,即使每个虚拟存储器地址的值是不同的。
为了进一步说明,图5示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图5中的方法与图2中的方法的类似之处在于,图5 中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图5中的方法与图2中的方法类似之处还在于,图5中的方法包括注册(202) —个或多个执行RECEIVE操作码(216)的接收线程 (222);接收(204)要发送到接收线程(222)的派生消息数量(228)和基值(226)的指定; 产生(206)派生消息014);将派生消息(214)发送(210)到每个已注册的接收线程022); 以及返回(212)接收线程(222)接收的实际派生消息数量030)。
但是,图5中的方法与图2中的方法的区别在于,图5中的线程间通信控制器 (142)还在操作上与一个或多个服务于硬件线程的存储器管理单元(144)相连并且SEND操作码(218)和RECEIVE操作码(216)将通道指定为映射到用于使用该同一通道的所有线程的同一硬件存储器地址的虚拟存储器地址(506、504)。
在图5的方法中,发送(210)派生消息(214)是通过检查(50 —个或多个存储器管理单元的访问权限并且仅从对硬件存储器地址具有写入权限的发送线程发送(508)派生消息以及仅将派生消息发送到对通道的硬件存储器地址具有读取权限的接收线程来实现的。也就是说,图5中的线程间通信控制器被配置为根据MMU管理的存储器读取和写入访问权限限制线程之间的数据通信。此类访问权限可以在转换后备缓冲器、页表中指定,也可以通过本领域的技术人员可想到的其他方式指定。
为了进一步说明,图6示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图6中的方法与图2中的方法的类似之处在于,图6 中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图6中的方法与图2中的方法的类似之处还在于,图6中的方法包括注册(20 —个或多个执行RECEIVE操作码Q16)的接收线程022);接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定;产生(206)派生消息014);将派生消息(214)发送OlO)到每个已注册的接收线程 (222);以及返回(212)接收线程(222)接收的实际派生消息数量Q30)。
但是,图6中的方法与图2中的方法的区别在于,在图6的方法中,通过线程间通信控制器(142)路由中断(604),并且返回(212)接收线程(222)接收的实际派生消息 (214)数量包括在发生中断(604)时,返回(602)基值和在中断之前发送到接收线程的派生消息数量的总和。
除了返回已发送消息数量之外,所述线程间通信控制器还返回基值和在发生中断之前发送的派生消息数量的总和。该总和表示新的基值(可以由发送线程提供以继续进行发送的基值)。考虑,例如,最初提供的基值为100,发送线程请求发送1000个消息,并且线程间通信控制器在发送10个消息之后被中断。在该示例中,根据图6的方法,线程间通信控制器(142)可以返回已发送消息数量(10个消息)以及基值和已发送消息数量的总和 110。值110可以由发送线程在第二 SEND操作码中使用作为基值。通过使用此总和作为第二 SEND操作码的基值,发送线程可以恰好在发送中断点上恢复将第一批派生消息发送到接收线程。
为了进一步说明,图7示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图7中的方法与图2中的方法的类似之处在于,图7 中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图7中的方法与图2中的方法的类似之处还在于,图7中的方法包括注册(20 —个或多个执行RECEIVE操作码Q16)的接收线程022);接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定;产生(206)派生消息014);将派生消息(214)发送O10)到每个已注册的接收线程 (222);以及返回(212)接收线程(222)接收的实际派生消息数量Q30)。
但是,图7中的方法与图2中的方法的区别在于,在图7的方法中,通过线程间通信控制器(142)路由中断(704),并且图7包括如果在发生中断(704)时没有可提供给接收线程的消息,则由线程间通信控制器(142)告知(702)每个已注册的接收线程022)没有可提供给接收线程的消息。告知可以通过各种方式来实现,其中包括将预定值存储在特定寄存器中,设置标志,以及通过本领域的技术人员可想到的其他方式。根据图7的方法的已注册的接收线程在发生中断(704)时在没有可发送的消息的情况下,被有效地解除注册。通过这种方式,接收线程可以改为处理其他计算机程序指令,而不是等待在中断期间不可用的消息。作为替代,接收线程可以重新发送RECEIVE操作码并进入接收线程等待消息发送的状态。
为了进一步说明,图8示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图8中的方法与图2中的方法的类似之处在于,图8 中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图8中的方法与图2中的方法的类似之处还在于,图8中的方法包括注册(202) —个或多个执行RECEIVE操作码Q16)的接收线程022);接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定;产生(206)派生消息014);将派生消息(214)发送OlO)到每个已注册的接收线程 (222);以及返回(212)接收线程(222)接收的实际派生消息数量Q30)。
但是,图8中的方法与图2中的方法的区别在于,图8中的方法包括如果在注册后的预定时段(804)内没有可提供给接收线程的消息,则由线程间通信控制器(142)告知 (802)每个已注册的接收线程(222)没有可提供给接收线程的消息。在本发明的实施例中, 接收线程一旦注册,就必须在接收派生消息之前等待一段时间。如果没有可用消息(没有发送线程发出SEND操作码),则图8中的方法提供手段,已注册的接收线程可据以改为执行其他动作,而非等待延长的时间段。
为了进一步说明,图9示出显示根据本发明的实施例在计算机处理器中进行线程间数据通信的示例性方法的流程图。图9中的方法与图2中的方法的类似之处在于,图9 中的方法是针对包括多个硬件执行线程的计算机处理器执行的,其中每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信。图9中的方法与图2中的方法的类似之处还在于,图9中的方法包括注册(20 —个或多个执行RECEIVE操作码Q16)的接收线程022);接收(204)要发送到接收线程022)的派生消息数量(228)和基值0 )的指定;产生(206)派生消息014);将派生消息(214)发送OlO)到每个已注册的接收线程 (222);以及返回(212)接收线程(222)接收的实际派生消息数量Q30)。
但是,图9中的方法与图2中的方法的区别在于,在图9的方法中,返回(212)接收线程接收的实际派生消息(214)数量(230)还包括如果基值和已发送的实际派生消息数量的总和等于SEND操作码(218)指定的要发送的派生消息数量0观),则返回(902)基值加上发送到接收线程的派生消息数量,其中所述要发送的派生消息由SEND操作码指定为基值的最大增量。如上所述,在某些实施例中,SEND操作码将要发送的消息数量指定为基值的最大增量,而不是要发送的绝对消息数量。考虑,例如,基值为5和极限为10。在该示例中,当极限将要发送的消息数量指定为基值的最大增量时,要发送的消息数量是5,而非 10。在图9的方法中,线程间通信控制器(142)将基值和实际发送的派生消息数量的总和与SEND操作码中指定的基值的最大增量(要发送的派生消息数量)进行比较以判定发送是否完成,也就是说,线程间通信控制器是否已发送全部请求消息。
图9的示例中的返回(212)实际派生消息(214)数量(230)还包括如果基值和已发送的派生消息数量的总和小于SEND操作码指定的要发送的派生消息数量,则在接收到要发送的派生消息数量和基值的指定之后的预定时段(904)到期之时,返回(906)基值和发送到接收线程的派生消息数量的总和。图9中的方法允许发送线程在预定时段之后发送未完成的情况下改为执行其他动作,并且在发送未完成的情况下预定时段到期时,线程间通信控制器返回一值以用作下一 SEND操作码中的基值,从而有效地从上一 SEND操作码停止处恢复。考虑,例如,提供基值为100以及基值的最大增量为1100的发送线程(请求发送1000个消息)。在100个消息之后,预定时段到期并且根据本发明的实施例的线程间通信控制器返回已发送的实际消息数量和基值的总和200。在该示例中,发送线程可以发出下一个基值为200且最大增量同为1100的SEND操作码,从而有效地从上一 SEND操作码停止处恢复。作为替代,发送线程可以执行其他指令。通过这种方式,发送线程不会在预定时段以外的时间被发现处于等待状态,而不执行任何指令。
本领域的技术人员将理解,本发明的各方面可以实现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些软件和硬件方面在此通常被称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质(在介质中具有计算机可读程序代码)中的计算机程序产品的形式。
可以使用一个或多个计算机可读介质的任意组合。所述计算机可读介质可以是计算机可读传输介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于) 电、磁、光、电磁、红外线或半导体系统、装置或设备或上述各项任何适合的组合。计算机可读存储介质的更具体的示例(非穷举列表)可以包括以下项具有一条或多条线的电连接、 便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPR0M或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述各项任何适合的组合。在本文档的上下文中,计算机可读存储介质可以是任何能够包含或存储由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合使用的程序的有形介质。
计算机可读传输介质可以包括其中包含计算机可读程序代码(例如,在基带中或作为载波的一部分)的传播数据信号。此类传播信号可以采取任何多样的形式,包括但不限于电磁、光或上述各项任何适合的组合。计算机可读传输介质可以是任何并非计算机可读存储介质以及传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合使用的程序的计算机可读介质。
可以使用任何适当的介质(包括但不限于无线、线缆、光缆、RF等或上述各项任何适合的组合)来传输计算机可读介质中包含的程序代码。
用于执行本发明的各方面的操作的计算机程序代码可以使用包含一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk、C++或类似语言之类的面向对象的编程语言或者诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行,部分地在用户计算机上执行,作为独立的软件包执行,部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如, 使用因特网服务提供商通过因特网连接)。
上面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明的各方面进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。
这些计算机程序指令也可以被存储在引导计算机、其他可编程数据处理装置或其他设备以特定方式执行功能的计算机可读介质中,以便存储在所述计算机可读介质中的所述指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令的制品。
所述计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备,以导致在所述计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。
附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能的一个或多个可执行指令。还应指出,在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为相继的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。还应指出,所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
通过上面的描述将理解,在不偏离本发明的真实精神的情况下,可以对本发明的各种实施例做出修改和更改。本说明书中的描述仅是出于说明的目的,并不能被认为是进行任何限制。本发明的范围仅由下面权利要求中的语言限定。1权利要求
1.一种在具有多个硬件执行线程的计算机处理器中进行线程间数据通信的方法,每个硬件线程在操作上连接以便通过线程间通信控制器进行数据通信,所述方法包括响应于一个或多个RECEIVE操作码,由所述线程间通信控制器注册一个或多个执行 RECEIVE操作码的接收线程;由所述线程间通信控制器从发送线程的SEND操作码接收要发送到接收线程的派生消息数量和基值的指定;由所述线程间通信控制器产生派生消息,针对每个已注册的接收线程递增一次所述基值的计数,以便每个派生消息包括单个整数作为所述基值的单独增量;由所述线程间通信控制器将派生消息发送到每个已注册的接收线程;以及由所述线程间通信控制器将接收线程接收的实际派生消息数量返回到发送线程。
2.如权利要求1中所述的方法,其中SEND操作码进一步将通道指定为通道标识值; 每个RECEIVE操作码将通道指定为通道标识值;以及发送派生消息进一步包括仅将所述派生消息发送到其RECEIVE操作码指定了由SEND 操作码所指定的通道的接收线程。
3.如权利要求1中所述的方法,其中SEND操作码和RECEIVE操作码将通道指定为映射到用于使用同一通道的所有线程的同一硬件存储器地址的虚拟存储器地址;以及发送派生消息进一步包括仅将所述派生消息发送到其RECEIVE操作码指定了下述虚拟存储器地址的接收线程,所述虚拟存储器地址映射到也由SEND操作码指定的虚拟存储器地址映射到的硬件存储器地址。
4.如权利要求1中所述的方法,其中所述线程间通信控制器进一步在操作上与一个或多个服务于硬件线程的存储器管理单元相连;SEND操作码和RECEIVE操作码将通道指定为映射到用于使用同一通道的所有线程的同一硬件存储器地址的虚拟存储器地址;以及发送派生消息进一步包括检查一个或多个存储器管理单元的访问权限,并且仅从对硬件存储器地址具有写入权限的发送线程发送所述派生消息以及仅将所述派生消息发送到对通道的硬件存储器地址具有读取权限的接收线程。
5.如权利要求1中所述的方法,其中通过所述线程间通信控制器路由中断;以及返回接收线程接收的实际派生消息数量进一步包括在发生中断时,返回所述基值和在中断之前发送到接收线程的派生消息数量的总和。
6.如权利要求1中所述的方法,其中中断通过所述线程间通信控制器路由并且所述方法进一步包括如果在发生中断时没有可提供给接收线程的消息,则由所述线程间通信控制器告知每个已注册的接收线程没有可提供给接收线程的消息。
7.如权利要求1中所述的方法,进一步包括如果在注册后的预定时段内没有可提供给接收线程的消息,则由所述线程间通信控制器告知每个已注册的接收线程没有可提供给接收线程的消息。
8.如权利要求1中所述的方法,其中返回接收线程接收的实际派生消息数量进一步包括如果所述基值和已发送的实际派生消息数量的总和等于SEND操作码指定的要发送的派生消息数量,其中要发送的派生消息由SEND操作码指定为所述基值的最大增量,则返回所述基值加上发送到接收线程的派生消息数量;以及如果所述基值和已发送的派生消息数量的总和小于SEND操作码指定的要发送的派生消息数量,则在接收要发送的派生消息数量和基值的指定之后的预定时段到期之时,返回所述基值和发送到接收线程的派生消息数量的总和。
9.一种用于线程间数据通信的装置,所述装置包括 计算机处理器多硬件执行线程;以及在操作上与硬件线程相连以进行数据通信的线程间通信控制器,所述线程间通信控制器能够执行以下操作响应于一个或多个RECEIVE操作码,注册一个或多个执行RECEIVE操作码的接收线程;由所述线程间通信控制器从发送线程的SEND操作码接收要发送到接收线程的派生消息数量和基值的指定;由所述线程间通信控制器产生派生消息,针对每个已注册的接收线程递增一次所述基值的计数,以便每个派生消息包括单个整数作为所述基值的单独增量;由所述线程间通信控制器将派生消息发送到每个已注册的接收线程;以及由所述线程间通信控制器将接收线程接收的实际派生消息数量返回到发送线程。
10.如权利要求9中所述的装置,其中SEND操作码进一步将通道指定为通道标识值; 每个RECEIVE操作码将通道指定为通道标识值;以及发送派生消息进一步包括仅将所述派生消息发送到其RECEIVE操作码了由SEND操作码所指定的通道的接收线程。
11.如权利要求9中所述的装置,其中SEND操作码和RECEIVE操作码将通道指定为映射到用于使用同一通道的所有线程的同一硬件存储器地址的虚拟存储器地址;以及发送派生消息进一步包括仅将所述派生消息发送到其RECEIVE操作码指定了下述虚拟存储器地址的接收线程,所述虚拟存储器地址映射到也由SEND操作码指定的虚拟存储器地址映射到的硬件存储器地址。
12.如权利要求9中所述的装置,其中所述线程间通信控制器进一步在操作上与一个或多个服务于硬件线程的存储器管理单元相连;SEND操作码和RECEIVE操作码将通道指定为映射到用于使用同一通道的所有线程的同一硬件存储器地址的虚拟存储器地址;以及发送派生消息进一步包括检查一个或多个存储器管理单元的访问权限,并且仅从对硬件存储器地址具有写入权限的发送线程发送所述派生消息以及仅将所述派生消息发送到对通道的硬件存储器地址具有读取权限的接收线程。
13.如权利要求9中所述的装置,其中通过所述线程间通信控制器路由中断;以及返回接收线程接收的实际派生消息数量进一步包括在发生中断时,返回所述基值和在中断之前发送到接收线程的派生消息数量的总和。
14.如权利要求9中所述的装置,其中中断通过所述线程间通信控制器路由并且所述线程间通信控制器进一步能够执行以下操作如果在发生中断时没有可提供给接收线程的消息,则由所述线程间通信控制器告知每个已注册的接收线程没有可提供给接收线程的消息。
15.如权利要求9中所述的装置,进一步包括如果在注册后的预定时段内没有可提供给接收线程的消息,则由所述线程间通信控制器告知每个已注册的接收线程没有可提供给接收线程的消息。
16.如权利要求9中所述的装置,其中返回接收线程接收的实际派生消息数量进一步包括如果所述基值和已发送的实际派生消息数量的总和等于SEND操作码指定的要发送的派生消息数量,其中要发送的派生消息由SEND操作码指定为所述基值的最大增量,则返回所述基值加上发送到接收线程的派生消息数量;以及如果所述基值和已发送的派生消息数量的总和小于SEND操作码指定的要发送的派生消息数量,则在接收要发送的派生消息数量和基值的指定之后的预定时段到期之时,返回所述基值和发送到接收线程的派生消息数量的总和。
全文摘要
包含多个硬件执行线程的计算机处理器中的线程间数据通信,每个硬件线程在操作上连接以便通过所述线程间通信控制器进行数据通信,其中线程间通信由所述线程间通信控制器执行并且包括响应于一个或多个RECEIVE操作码,注册一个或多个执行RECEIVE操作码的接收线程;从发送线程的SEND操作码接收要发送到接收线程的派生消息数量和基值的指定;产生派生消息,针对每个已注册的接收线程递增一次所述基值的计数,以便每个派生消息包括单个整数作为所述基值的单独增量;将派生消息发送到每个已注册的接收线程;以及将接收线程接收的实际派生消息数量返回到发送线程。
文档编号G06F9/46GK102541630SQ20111035195
公开日2012年7月4日 申请日期2011年11月9日 优先权日2010年12月2日
发明者A·盖特, J·L·彼得森, P·J·博雷尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1