CN103455371B - 用于优化的管芯内小节点间消息通信的方法和系统 - Google Patents
用于优化的管芯内小节点间消息通信的方法和系统 Download PDFInfo
- Publication number
- CN103455371B CN103455371B CN201310209314.8A CN201310209314A CN103455371B CN 103455371 B CN103455371 B CN 103455371B CN 201310209314 A CN201310209314 A CN 201310209314A CN 103455371 B CN103455371 B CN 103455371B
- Authority
- CN
- China
- Prior art keywords
- bucket
- minor node
- storage
- message
- minor
- 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
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于遵守MPI语义的单个芯片上的小节点的点到点管芯内消息传递支持。在一方面,使用了遵守用于在单个芯片中集成的小节点间的网络通信的标准通信协议的本地缓冲机制。从一个小节点发送消息到相同芯片上的另一个小节点可不通过网络执行,而是通过在小节点之间的点到点消息桶中交换消息来执行。消息桶不需要是小节点的存储系统的一部分。可使用专门的硬件控制器来在小节点和每个消息桶之间移动数据,并确保网络协议的正确运行。
Description
技术领域
本申请一般涉及计算机以及计算机应用,具体地涉及计算机架构,且更具体地涉及半导体芯片或管芯(die)中的消息传递。
背景技术
利用在芯片上集成的数量越来越多的组件来创建电子电路芯片(或集成半导体电路)。制造单个芯片以保持多个小节点(nodelet)的集成。而且,单芯片上的每个小节点可具有若干个处理器。小节点中的处理器可以是同构的(即,是相同的类型),或是异构的(即,是不同的类型)。每个小节点具有其自己的存储系统,但是小节点之间的存储器不被共享。即,每个小节点具有单独的存储一致性域。
在多节点系统中,节点通过使用一个或多个网络协议来互相通信。对于许多应用来说,相邻节点间的通信量高于远程节点。类似地,相邻节点间的通信比更远节点间的通信更频繁。将逻辑上“近的”节点映射到物理上相邻的节点减少了延迟和功耗。通过将逻辑上近的节点映射到相同芯片上的节点,通信的主要部分留在该芯片上。小节点使用网络协议(典型地使用消息传递接口(MPI)协议)通过网络连接来参与到更大的多节点系统。
但是网络通信仍然涉及开销,诸如为了网络协议任务、传输包以及接收包而需要实现的工作。
消息传递接口(MPI)是用于高性能计算(HPC)的编程范式(paradigm)。该模型很流行,主要是因为其可移植性和跨HPC平台的支持。因为MPI程序以可移植方式被编写,程序员优化与应用有关的方面,诸如计算和通信,但典型地不针对执行环境优化。特别地,MPI任务通常以线性次序被映射到处理器。
A.Aggarwal,A.K.Chandra,and M.Snir.On communication latency in PRAMcomputation.In Proceedings of the ACM Symposium on Parallel Algorithms andArchitectures,pages11-21,June1989,以及A.Alexandrov,M.F.Ionescu,K.E.Schauser,and C.Scheiman.LogGP:Incorporating long messages into the LogP model forparallel computation.Journal of Parallel and Distributed Computing,44(1):71-79,1997研究了确定应用的通信模式.
与这样的通信模式研究无关,另一个现有技术类别提供了一种指导MPI程序员的模型。但是,早期模型明确地忽视硬件特点以简化模型。更近一些的模型(参见D.Culler,R.Karp,D.Patterson,A.Sahay,K.E.Schauser,E.Santos,R.Subramonian,and T.vonEicken.LogP:Towards a realistic model parallel computation.In Proceedings ofthe ACM SIGPLAN Symposium on Principles and Practices of ParallelProgramming,May1993以及M.I.Frank,A.Agarwal,and M.K.Vernon.LoPC:Modelingcontention in parallel algorithms.In Proceedings of the ACM SIGPLAN Symposiumon Principles and Practices of Parallel Programming,pages276-287,June1997)试图开发用于一般网络的理论模型。但是,这样的建模没有利用经验数据来改善模型精确度。利用现有技术,很难获得性能益处。
发明内容
可提供一种用于管芯内小节点间的消息通信的方法和系统。在一个方面,该方法可包括分配桶(bucket),该桶包含存储阵列和支持消息传递接口语义的硬件控制逻辑,用于在第一存储域(domain)上的第一进程和第二存储域上的第二进程之间传送数据,其中第一存储域和第二存储域不被共享,且其中该桶不是第一存储域或第二存储域的一部分。该方法还可包括将桶映射到第一进程。该方法还可包括由第一进程将消息数据写到桶并调用发送消息传递接口函数,该发送消息传递接口函数发出给第二进程的硬件信号。该方法还可包括响应于第二进程调用接收消息传递接口函数,将缓冲区映射到第二进程,其中该第二进程被使能以读取被映射的桶中的数据。
在一个方面,一种用于管芯内小节点间消息通信的系统可包括单个芯片上的多个小节点,每个小节点具有不与该单个芯片上的其余小节点共享的、其自己的存储一致性(coherence)域,每个小节点包括一个或多个进程核(process core),其中该多个小节点至少包括具有第一进程核和第一存储一致性域的第一小节点,以及具有第二进程核和第二存储一致性域的第二小节点。该系统还可包括桶,该桶包括存储阵列和支持消息传递接口语义的硬件控制逻辑,用于在多个小节点之间传送数据,其中该桶不是小节点的存储一致性域的一部分。第一进程核被使能以将桶映射到第一进程核,将消息数据写入到桶,以及调用发送消息传递接口函数,该发送消息传递接口函数发出硬件信号给第二进程核。响应于第二进程核调用接收消息传递接口函数,缓冲区被映射到第二进程核以使能第二进程核读取数据。
在另一方面,一种用于管芯内小节点间消息通信的方法可包括保留桶,该桶包括存储阵列和支持消息传递接口语义的硬件控制逻辑,用于在第一存储域上的第一进程和第二存储域上的第二进程之间传送数据,其中第一存储域和第二存储域不被共享,且其中该桶不是第一存储域或第二存储域的一部分。该方法还包括设置多个控制位以指示仅用于第一进程的独占读写访问。该方法还可包括接收由第一进程调用的发送调用。该方法还可包括设置控制位以指示用于第一进程的共享读写访问,并发出硬件信号给第二进程。该方法还可包括接收由第二进程调用的接收调用。该方法还可包括设置控制位以指示用于第二进程的共享读写访问。该方法还可包括,响应于从第一进程接收到取消映射调用,设置控制位以指示用于第二进程的独占读写访问。该方法还可包括,响应于从第二进程接收到取消映射调用,设置控制位以指示用于第一进程的独占读写访问。
还可提供一种计算机可读存储介质,存储可由机器执行的指令程序以执行在此描述的一个或多个方法。
以下参考附图详细描述进一步的特点以及各种实施例的结构和操作。在附图中,类似的参考标号指示相同或功能上类似的元件。
附图说明
图1示出本公开的一个实施例中的多小节点芯片的组件。
图2示出本公开的一个实施例中的小节点间的消息通信机制。
图3是示出本公开的一个实施例中的小节点到小节点的通信的流程图。
图4示出了本公开一个实施例中在消息传输期间可如何针对来自发送者和接收者进程的读和写来控制桶。
图5示出了本公开的一个实施例中的消息桶的例子。该例子示出了用于点到点消息传递的两个小节点的桶实现。
图6示出了本公开的一个实施例中的缓冲区复制。
图7示出了本公开的一个实施例中的管芯上的多个小节点。
图8示出了本公开的一个实施例中的进程修改缓冲区时的场景。
图9示出了消息桶的一个例子,其中多个小节点的桶实现被提供,以用于将消息传送到多个小节点。
具体实施方式
在复杂的多节点系统内运行科学和高性能应用时的大部分网络流量是在相对本地的节点之间,仅有小部分流量到系统中相对较远的节点。因此,在本地节点间具有快速和高效的通信方式是有益的。
本公开描述了不同存储域之间的通信机制。在一个方面,为遵守MPI语义的单个芯片上的小节点提供了低开销、低延迟的点到点小节点内消息传递支持。在一个方面,使用了本地缓冲机制,该机制遵守用于在单个芯片上集成的小节点间的网络通信的标准通信协议。在本公开的方法的一个实施例中,从一个小节点发送消息到相同芯片上的另一个小节点不是通过网络执行的,而是通过交换小节点间的点到点消息桶中的消息执行的。消息桶不是小节点的存储系统的一部分。专用的硬件控制器被用于在小节点和每个消息桶之间移动数据。
图1示出了本公开的一个实施例中的多小节点芯片的组件。多个小节点(例如104、106)可被集成到芯片102中。每个小节点(例如104、106)可具有一个或多个同构的或异构的处理器内核。每个小节点(例如104、106)也具有其单独的存储系统。小节点(例如104、105)之间的存储器不被共享。使用网络连接114和MPI协议,小节点(例如104、106)参与更大的多节点系统。从小节点内的进程到位于不同芯片上的其他进程的消息经由网络接口和网络来发送。从小节点内的进程到位于相同芯片上的不同小节点中的其他进程的消息不是经由网络、而是通过在小节点间的点到点消息桶(例如108、110、112)中交换消息来执行的。在一个实施例中,点到点消息桶(例如108、110、112)被用来在相同芯片102上的小节点(例如104、106)间传输MPI数据。桶(例如108、110、112)包括存储空间和遵守诸如MPI的消息协议的硬件控制逻辑,并可被芯片上的所有小节点使用以将消息从一个小节点转移到相同芯片上的另一个小节点。在一个实施例中,消息桶(例如108、110、112)不是芯片上的任何小节点的存储系统的一部分。在一个实施例中,每个小节点(例如104、106)中的硬件控制器被用来访问消息桶(例如108、110、112)。消息桶(例如108、110、112)在一个实施例中支持MPI网络协议。消息桶含有存储器和控制逻辑,其用于从一个小节点接收消息、向另一个小节点通知关于消息等待、以及确保对桶中的特定存储器的独占访问(如由用于两个节点间的消息传输的MPI协议所定义的)。关于这点如何实现的细节将从以下描述中变得明显。
图2是示出本公开的一个实施例中的小节点间的消息通信机制的图。芯片202的小节点204上的进程0216(例如核)可将短MPI点到点消息发送到相同芯片202上的小节点上的进程1218(例如核),例如如下所示。在相同芯片上的小节点之间发送消息是通过使用消息桶来执行的。在将消息从进程0215发送到进程1218之前,为该传输来识别可用的桶,且识别的桶被保留以在消息传输期间用于该消息的独占使用。该保留是由操作系统(OS)对应用透明地执行的。进程0216例如经由诸如my_addr=bucket_alloc的函数或实用程序调用来发起该功能。该函数bucket_alloc识别可用的桶。这类似于对malloc的调用,并使得来自桶的存储区正常地出现在调用进程的地址空间208中。在一个实施例中,桶的大小可在函数中作为参数被指定。在另一个实施例中,桶中的缓冲区的大小可以是预定的。在又一个实施例中,不同的桶指定了不同的缓冲区大小。现在,新的存储区域作为进程0的地址空间的一部分出现,且该进程可通过对该存储区进行寻址来写到该存储区。例如,进程0可执行合适的计算,并将数据写到分配的地址。这将桶0208映射到进程0216,且进程0可执行MPI_Send.
当进程0准备好将消息从桶0发送到进程1时,它调用MPI_Send函数。桶0中的专门的控制硬件通知进程1存在消息以供其接收,且其位置是桶0。这触发了进程1发出MPI_Recv调用,其将会有效地将桶0映射到进程1的存储空间。在进程0216和进程1218分别调用MPI_Send和MPI_Recv后,桶0208被映射到进程216和218两者。以此,桶0属于两个进程的存储空间,且两个进程对其具有完整的读写访问。但是,在本公开的一个实施例中,为了遵守MPI语法(或其他网络协议语法),一旦被发送,消息不再能被生成该消息的进程修改。类似地,在本公开的一个实施例中,如果消息仍然在进程0的存储区域中,它不能被任何其他进程(包括进程1)修改。因此,当任一进程写该桶0208时,触发“写时复制”协议,其中生成桶的新副本。映射被调整,以使得桶现在指向正确的所有者。
图3是示出本公开的一个实施例中的小节点到小节点通信的流程图。小节点(例如被称为小节点0或第一小节点)上的进程或核(例如被称为进程0或第一进程)可将消息(例如短MPI点到点消息)发送到另一个小节点(例如被称为小节点1或第二小节点)上的另一个进程或核(例如被称为进程1或第二进程)。在302,桶被创建并被映射到进程0。可提供函数调用,以创建桶并将进程映射到该桶。例如,send_addr=Bucket_alloc(size,-1)(进程0)可创建桶,并映射到被称为进程0的进程。在桶被映射后,进程0可将消息数据以和它访问任何其他存储器相同的方式写到桶。一旦准备好发送消息,在304,进程0通过调用在本公开中提供的发送函数来发送消息。发送函数指定了若干参数,包括诸如创建的桶的地址、进程0的传送者信息或组标识符、数据格式以及应当接收消息的接收节点的标识符等信息。调用发送函数发出了给接收者即小节点1上的特定核的硬件信号。发出的信号在小节点1上被接收,并且它可以包含识别接收节点的信息并可以包含特定的桶(例如bucket_id)信息以及等待被接收的活动消息,或者它是用于接收小节点的关于消息正在等待的信号,其后函数被调用以识别哪个节点接收了消息并且消息正在哪个桶中等待。这样的发送函数的一个例子是MPI_Send(send_addr,communicator_info,data_type,Process1),其中send_addr是指向桶的引用指针或桶的地址,communicator_info是组信息,接收进程是该组信息的一部分,data_type是被传送的数据的数据格式,且Process1是消息的接收者。
在306,接收者进程即进程1得到信号。在步骤308,根据进程1在信号之前还是之后调用了接收函数,可出现两种场景。这样的接收函数的一个例子是MPI_Recv。在本公开的一个实施例中,仅在进程1调用MPI_Recv函数后才可以接收消息。如果进程1没有调用MPI_Recv,硬件信号保持在未决状态。在310,在进程1调用MPI_Recv(recv_addr,communicator_info,data_type,Process0)后,recv_addr被映射到bucket_id,且桶存储器被映射到接收者存储空间中的接收地址。接收进程即进程1被使能以读取recv_addr处的数据。已在桶中可用的消息数据现在可被进程1访问。因此,进程1接收消息,且消息已在其存储器中。在312,来自桶的硬件信号被重置以反映正被传递的消息的状态。
图4示出了本公开的一个实施例中在消息传递期间如何针对来自发送者和接收者进程的读写来控制桶。在402,发送者进程可保留桶。在404,为仅用于发送者进程的该桶的独占读/写访问设置控制位。在406,如果发送者进程调用发送调用或函数,则在408为用于发送者进程的共享读/写访问设置控制位,且为接收者进程发出硬件信号。在410,如果接收者进程调用接收调用或函数,为用于接收者进程的共享读/写访问设置控制位。在414,如果发送者进程或接收者进程调用取消映射调用或类似函数,桶与该进程断开连接,并针对仍然具有映射的桶的其他进程的独占读/写访问来设置控制位。在418,当两个进程都从桶断开时,桶被释放。
图5示出了在本公开的一个实施例中的消息桶的例子。该例子示出了用于点到点消息传递的两个小节点的桶实现。桶500可包括存储阵列508以及遵守网络协议的用于访问存储阵列的硬件控制逻辑514。桶还可包括状态/控制(SC)寄存器502,以及用于存储阵列508的每个元素的一组访问位510。SC寄存器502存储小节点对于存储阵列508的元素的访问的类型的指示。SC寄存器502可指示的访问类型可包括但不限于独占写、独占读、共享写、共享读、独占读写、共享读写和其他。在一个实施例中,存储阵列508具有与每个地址相关的两个组,组0512和组1514。考虑小节点0(N0)504上的进程分配了桶500的缓冲区或存储阵列。桶500给小节点0504分配独占读/写(RW)状态。通过对数据使用桶的组0512,小节点0504将消息数据写入到桶502。小节点0504发出mpi_send,其指示被分配的桶的地址,例如,addr1。消息桶(MB)逻辑对addr1进行解码,并且基于addr1是否位于相同的芯片(例如小节点1506)上或addr1是否在芯片外,可出现两种场景。如果addr1位于相同的芯片上,消息桶502的逻辑例如通过发出中断来通知小节点1506。如果addr1不是位于相同的芯片上,消息桶500的逻辑通知连接到芯片的网络消息单元(MU)消息已准备好经由芯片上的网络接口(未示出)来发送。小节点1506将分配的接收缓冲区映射到桶500。桶500将读(R)状态分配给小节点1506,以及将R状态分配给小节点0504。每个进程的访问状态和共享状态在SC寄存器502中被指示。如果两个进程仅发出读访问,数据从组0512被读出,且组1中的数据不被指定和访问。
在该例子中,存储器中的两个字(w0和w1)被映射到每个地址字,组0和组1。在写入消息时,它被写入到第一组,且用于被写入到第一字组中的所有字的所有访问位510被设置为用于w0的11和用于w1的00。如果在访问状态被设为共享后,小节点0504或小节点1506发出对分配的缓冲区的写入,则消息桶500检测到冲突。消息桶500将第一组中被修改的字保存在存储器桶的w1位置,并将仅用于w0中的被修改的字的访问位设置为01,且将用于w1的设置为10。于是小节点1看到其缓冲区未被修改,且小节点0看到其修改。如果小节点0504向分配的缓冲区发出对具有w011和w100的字的写入,它将修改的字写入到w1,且消息桶将用于w0的位设为10,并将用于w1的位设为01。这两组访问位为每个存储器元件以及为这两个组定义了哪个进程可以访问每个组。这两个访问位为两个进程中的每个进程定义了该存储器项中的组的可见性。因此,例如用于w0的值01和用于w1的10指示小节点0504能访问组1,但不能访问组0,而小节点1能访问组0但不能访问组1。以这种方式,冲突数据有两个不同的副本,在发出mpi_send调用后一个进程修改了所述数据。小节点0504和小节点1506具有其私有的数据副本,它们可以修改所述数据副本而不改变用于其他进程的数据。对于在mpi_send被发出后未被任何进程写入的存储器项,数据被放置在组0中,且用于该存储器项的访问位是用于w0的11和用于w1的00。
图6是示出在本公开的一个实施例中调用缓冲区副本的流程图。在602,接收来自例如被称为进程0的进程的对桶的存储访问请求。在604,检查用于进程0的桶中的控制位设置。在本公开的一个实施例中,一旦桶被映射,仅发送进程0和接收进程1能对其进行访问。在606,检查进程0是否能访问该桶。如果是,在608,检查该请求是否是请求写入到桶。如果是,在610,检查进程0是否具有独占访问权。如果是,在612数据被写入到桶存储器中的第一字组即组0。否则,如果进程0不具有独占访问权而是共享访问权,在614,数据被写入到桶存储器中的第二字组即组1。在608,如果确定请求不是写请求,则在616检查是否存在修改的字。如果是,在618,返回第二字组即组1中的数据。如果不是,在620,返回第一字组即组0中的数据。尽管该流程图描述了用于第一进程0的访问,通过总是访问第一字组即组0,可执行对来自接收者进程(例如被称为进程1)的对桶的访问。例如,开始写入到共享字的第一小节点将使用组1字w1来开始,而其他小节点(接收者小节点)将使用组0字w0来继续。访问位被相应地修改,且在存储阵列中可以是逐行不同的。
图7示出了本公开的一个实施例中的管芯上的多个小节点。图7示出的管芯可以是一片半导体材料或电介质,其上可集成(例如安装、蚀刻或形成)一个或多个电子组件。在一个实施例中,桶(例如712、714、716、718)可在多节点芯片702上的所有小节点(例如704、706、708、710)之间共享,并可以被芯片上的所有小节点访问。在一个实施例中,仅两个小节点-一个发送小节点和一个接收小节点-连接到桶。在另一个实施例中,每个桶(例如712、714、716、718)可被映射到多于一个的小节点(例如704、706、708、710),其中一个小节点发送消息,而另外的小节点接收消息。例如,小节点0(704)上的进程0可将相同的消息发送到所有的其他小节点,即小节点1(706)、小节点2(708)和小节点3(710),在该情况下所有这些小节点指向相同的桶,并将该桶的存储区域映射到其存储空间,并可访问来自该相同的桶的数据。
图8示出了在本公开的一个实施例中由进程使用桶缓冲区来发送修改的消息时的示例性场景。开始,小节点0(804)上的进程820发送消息给小节点1(806)和小节点3(810)。开始,小节点0(804)是桶01(812)中的消息的发送者,且小节点1(806)和3(810)将作为该消息的接收者指向桶01(812)。如果小节点0(804)上的进程820修改其缓冲区(812)以将其发送到另一个进程,例如到小节点2(808),会出现该图中示出的场景。在该情况下,在修改数据被写入到桶01之前,生成具有桶01数据的副本的新的桶(例如814)以保持给小节点1(806)和小节点3(810)的消息。新的桶(例如814)保持在桶01(812)中的消息被修改前该桶中的消息。在一个实施例中,硬件控制逻辑在新的桶(例如814)中生成桶01(812)的副本并改变指针,以使得小节点1(806)和小节点3(810)指向新的桶(例如814)。在另一个实施例中,新数据(修改的数据)可被写入到桶02,而桶01保持原始数据不变,在该情况下小节点1806和小节点3814的指针被保持为指向桶01812;且小节点2808将指向桶02814以接收修改的消息。
图9示出了消息桶的例子,其中提供了多个小节点的桶实现,用于将消息传送到多个小节点。桶900包括存储阵列910、访问位912、状态寄存器902和控制逻辑914。存储阵列910可从多个小节点904、906、908来访问,并含有用于桶中的存储阵列的每个条目的若干组。桶中的存储阵列的每行具有L个平行的字组,L个字(w0、w1…wl-1)被映射到每个地址。因此,对于桶中的存储空间中的任何地址,字被映射到它。在一个实施例中,字的数量L是2或更多,但少于或等于可对其进行访问的小节点的数量。每个存储阵列元件具有分配给它的M个访问位,其中M是可访问该桶并同时将该桶映射到其地址的小节点的数量。用于任何字w-sub-k的第m个位指定了该字对第m个小节点的所有权。开始,含有字w0的第一组0的所有权被分配为发送和接收小节点。如果发送或接收小节点试图写入到该组0且桶处于共享模式,冲突被检测到且新的字被写入到另一个字,例如字w1。用于字w0和w1的访问位被修改以描述新的所有权。在该例子中,在试图写入到该缓冲区前,用于字w1的访问位被设置为用于字w0的访问位。用于w0的访问位将被设置以包括重写的缓冲区(w0)的接收者。如果发送小节点将该缓冲区(w0)发送到第三或第四小节点,为发送者拥有的每个字设置更多的所有者位。可存在缓冲区析最多L个不同版本,其具有由访问位指定所有权、以及参与的小节点和在SC寄存器中指定的桶模式。
本公开的桶也可被一般化为其他编程模型。
例如,通过使用诸如upc_all_alloc、upc_global_alloc的调用,通用程序计数器(UPC)创建共享的存储阵列。这些可被所有线程访问。在另一个方面,MPI远程存储访问(RMA)具有存储器窗口的概念,每个进程向所有进程暴露特定的存储器大小,例如MPI_WIN_CREATE。当这些进程或线程位于节点内时,各桶可被用来将该窗口或阵列相互暴露。桶提供用于访问该阵列或存储器窗口的必要的“一致性域”。这些模型具有不同的存储一致性语义,例如UPC要求写入是松驰的还是严格的。RMA还具有本地“相对”远程存储器窗口的概念,这需要被明确地同步,从而存储器是一致的。本公开的桶逻辑在一个实施例中可被扩展以包含这些编程模型相关语义和一致性模型。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种编程语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述编程语言包括硬件描述语言(HDL),面向对象的编程语言—诸如Java、Smalltalk、C++等,还包括常规的过程式编程语言—诸如“C”语言或类似的编程语言,脚本语言-诸如Perl、VBS语言或类似的语言,或函数式语言-诸如Lisp、ML,以及面向逻辑的语言-诸如可使用的Prolog语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的函数/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的函数/动作的指令的制造品(article of manufacture)。
计算机程序指令也可被加载到计算机、其他可编程数据处理设备或使得一系列可操作步骤在计算机上被执行的其他装置、其他可编程设备或其他装置以产生计算机执行的过程,这样当指令在计算机或其他可编程设备上执行时,提供过程以实施在流程图和/或流程框图或框图中执行的函数/行为。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、函数和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑函数的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的函数也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的函数而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的函数或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
计算机程序产品可包括使得在此描述的方法被实施的所有特点,且当被加载在计算机系统中时,能执行方法。计算机程序、软件程序、程序或软件,在本上下文中指旨在使得具有信息处理能力的计算机直接地或在以下操作后执行特定功能的一组指令的任何语言、代码或符号的任何表达:(a)转换为另一个语言、代码或表示;以及/或(b)以不同的材料形式被再现。
此处使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括多数形式,除非上下文另有清楚的规定。还将理解,当在本说明中使用时,术语“包括”和/或“包含”明确说明存在所陈述的特点、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他的特点、整体、步骤、操作、元件、组件和/或其组。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、行为和等价物旨在包括用于结合在权利要求中特意阐明的其他元件而执行该功能的任何结构、材料或行为。本发明的说明已出于解释和描述的目的被展示,但不旨在穷尽性的或将本发明限制在所公开的形式。许多修改和变化对于本领域普通技术人员来说是明显的,且不脱离本发明的精神和范围。选择并描述实施例是为了最好地解释本发明的原理和实际应用,且使得本领域普通技术人员能针对具有适用于所打算的特定用途的各种修改的各种实施例理解本发明。
本公开的各方面可被实施为程序、软件或实施在计算机或机器可用或可读介质中的计算机指令,当在计算机、处理器和/或机器上执行时,其使得计算机或机器执行方法的步骤。也提供了由机器可读的程序存储设备,有形地实施可由机器执行以执行在本公开中描述的各种功能和方法的程序。
本公开的系统和方法可被实施并运行在通用计算机或专用计算机系统上。在本申请中使用的术语“计算机系统”和“计算机网络”可包括固定和/或可移动计算机硬件、软件、外设和存储设备的各种结合。计算机系统可包括多个单个组件,其被联网或以其他方式链接以共同执行,或可包括一个或多个单独的组件。本申请的计算机系统的硬件和软件组件可包括并可被包括在诸如台式机、笔记本电脑和/或服务器的固定和可移动装置中。模块可以是装置的组件、软件、程序或系统,其实施某些“函数”,其可被实施为软件、硬件、固件、电子电路等。
以上描述的实施例是描述性例子,且不应理解为本发明限于这些特定实施例。因此,可由本领域技术人员进行各种修改和变化而不脱离在所附权利要求书中限定的本发明的精神或范围。
Claims (16)
1.一种用于管芯内小节点间消息通信的方法,包括:
分配桶,该桶包含存储阵列和支持消息传递接口语义的硬件控制逻辑,以在第一存储域上的第一进程和第二存储域上的第二进程之间传送数据,其中第一存储域和第二存储域不被共享,且其中该桶不是第一存储域或第二存储域的一部分;
将桶映射到第一进程,作为第一进程的地址空间的一部分;
由第一进程将消息数据写到桶,并调用发送消息传递接口函数,该函数发出给第二进程的硬件信号;以及
响应于第二进程调用接收消息传递接口函数,将桶映射到第二进程的存储空间,其中所述发出的硬件信号触发了第二进程调用所述接收消息传递接口函数,且其中第二进程被使能读取映射的桶中的数据。
2.如权利要求1所述的方法,其中第一进程是在单个芯片上具有第一存储域的第一小节点的组件,且第二进程是在该单个芯片上具有第二存储域的第二小节点的组件。
3.如权利要求1所述方法,其中所述桶在单个芯片上的所有小节点之间共享。
4.如权利要求1所述的方法,其中所述桶被映射到多个接收小节点。
5.如权利要求1所述的方法,还包括响应于第二进程调用接收消息传递接口函数,重置硬件信号。
6.一种用于管芯内小节点间消息通信的系统,包括:
单个芯片上的多个小节点,每个小节点具有不与单个芯片上的其余小节点共享的、其自己的存储一致性域,每个小节点包括一个或多个进程核,其中所述多个小节点至少包括具有第一进程核和第一存储一致性域的第一小节点,以及具有第二进程核和第二存储一致性域的第二小节点;
桶,其包括存储阵列和支持消息传递接口语义硬件控制逻辑,用于在多个小节点之间传送数据,其中该桶不是小节点的存储一致性域的一部分,其中:
第一进程核被使能以将桶映射到第一进程核,作为第一进程的地址空间的一部分,将消息数据写入到桶,以及调用发送消息传递接口函数,该发送消息传递接口函数发出对第二进程核的硬件信号,该发出的硬件信号触发了第二进程调用接收消息传递接口函数,且其中响应于第二进程核调用所述接收消息传递接口函数,桶被映射到第二进程核的地址空间以使能第二进程核读取数据。
7.如权利要求6所述的系统,其中所述桶在单个芯片上的所有小节点之间共享。
8.如权利要求6所述的系统,其中所述桶被映射到多个接收小节点。
9.如权利要求6所述的系统,其中所述存储阵列包括被映射到每个地址字的存储器中的若干字,所述若干字中的每个对应于可访问所述桶的一个所述小节点,且所述桶还包括可被操作以存储位的访问位寄存器,所述位指示哪个小节点能访问所述若干字中的哪个。
10.如权利要求9所述的系统,其中所述若干字的数量是2或更多,但少于或等于所述多个小节点的数量。
11.如权利要求10所述的系统,其中所述桶还包括状态寄存器,其可被操作以存储所述多个小节点对所述存储阵列的访问权限的状态。
12.如权利要求11所述的系统,其中响应于第一进程核试图将数据写到所述若干字中的第一字,所述桶的硬件控制逻辑可操作以确定第一进程核是否对第一字有独占读写访问权,且如果第一进程核对于第一字具有独占读写访问权,数据被写入到第一字,且如果第一进程核对第一字没有独占读写访问权,数据被写入到所述若干字中的第二字,且所述访问位寄存器被修改以指示第一进程核现在对第二字有访问权。
13.一种用于管芯内小节点间消息通信的方法,包括:
保留桶,其包含存储阵列和支持消息传递接口语义的硬件控制逻辑,用于在第一存储域上的第一进程和第二存储域上的第二进程之间传送数据,其中第一存储域和第二存储域不被共享,且其中该桶不是第一存储域或第二存储域的一部分;
设置多个控制位以指示仅用于第一进程对桶的独占读写访问;
接收由第一进程调用的发送调用;
设置控制位以指示用于第一进程对桶的共享读写访问,并发出用于第二进程的硬件信号;
接收由第二进程调用的接收调用;
设置控制位以指示用于第二进程对桶的共享读写访问;
响应于从第一进程接收到取消映射调用,设置控制位以指示用于第二进程对桶的独占读写访问;以及
响应于从第二进程接收到取消映射调用,设置控制位以指示用于第一进程对桶的独占读写访问。
14.如权利要求13所述的方法,还包括:
响应于确定所有进程都已从桶取消映射,释放桶。
15.如权利要求14所述的方法,还包括:
从第一进程接收对桶的存储访问请求,检查与第一进程有关的控制位;
响应于确定所述控制位指示第一进程具有访问权,确定所述存储访问请求是否是写请求;
响应于确定所述存储访问请求是写请求,确定第一进程是否具有独占读写访问权;
响应于确定第一进程具有独占读写访问权,写入到存储阵列的第一字组;
响应于确定第一进程没有独占读写访问权,写入到存储阵列的第二字组并指示第一字组的修改;
响应于确定存储访问请求不是写请求,确定是否存在被修改的字,且响应于确定存在被修改的字,返回第二字组中的数据,且响应于确定被修改的字不存在,返回第一字组中的数据。
16.一种用于管芯内小节点间消息通信的系统,该系统包括被配置为执行权利要求1到5、13到15中任一项的方法步骤的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/485,074 | 2012-05-31 | ||
US13/485,074 US8943516B2 (en) | 2012-05-31 | 2012-05-31 | Mechanism for optimized intra-die inter-nodelet messaging communication |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455371A CN103455371A (zh) | 2013-12-18 |
CN103455371B true CN103455371B (zh) | 2017-03-01 |
Family
ID=49579706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310209314.8A Expired - Fee Related CN103455371B (zh) | 2012-05-31 | 2013-05-30 | 用于优化的管芯内小节点间消息通信的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8943516B2 (zh) |
CN (1) | CN103455371B (zh) |
DE (1) | DE102013209643B4 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452540B2 (en) * | 2017-10-20 | 2019-10-22 | International Business Machines Corporation | Memory-mapped interface for message passing computing systems |
US10459778B1 (en) | 2018-07-16 | 2019-10-29 | Microsoft Technology Licensing, Llc | Sending messages between threads |
WO2020005595A1 (en) * | 2018-06-28 | 2020-01-02 | Microsoft Technology Licensing, Llc | Sending messages between threads |
US11966780B2 (en) | 2019-07-29 | 2024-04-23 | Marvell Asia Pte, Ltd. | Object-oriented memory |
DE112022001318T5 (de) * | 2021-03-01 | 2024-01-04 | Nvidia Corporation | Schnittstelle für mehrere Prozessoren |
US11630711B2 (en) * | 2021-04-23 | 2023-04-18 | Qualcomm Incorporated | Access control configurations for inter-processor communications |
US11928349B2 (en) | 2021-04-23 | 2024-03-12 | Qualcomm Incorporated | Access control configurations for shared memory |
CN116225308B (zh) * | 2022-11-21 | 2023-12-08 | 中科三清科技有限公司 | 数据读写方法、装置、存储介质与芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577294A (zh) * | 2003-06-25 | 2005-02-09 | 国际商业机器公司 | 具有多个一致性区域的多处理器计算机系统及其方法 |
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
CN101802790A (zh) * | 2007-09-21 | 2010-08-11 | 美普思科技公司 | 对多个一致域的支持 |
CN102253657A (zh) * | 2010-05-19 | 2011-11-23 | 沈阳高精数控技术有限公司 | 一种数控系统网络化体系结构的实现方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6859862B1 (en) * | 2000-04-07 | 2005-02-22 | Nintendo Co., Ltd. | Method and apparatus for software management of on-chip cache |
US6799317B1 (en) * | 2000-06-27 | 2004-09-28 | International Business Machines Corporation | Interrupt mechanism for shared memory message passing |
US7640549B2 (en) * | 2002-07-22 | 2009-12-29 | Agilent Technologies, Inc. | System and method for efficiently exchanging data among processes |
WO2009123492A1 (en) * | 2008-03-31 | 2009-10-08 | Intel Corporation | Optimizing memory copy routine selection for message passing in a multicore architecture |
CN102077181B (zh) * | 2008-04-28 | 2014-07-02 | 惠普开发有限公司 | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 |
US8196147B1 (en) * | 2008-10-31 | 2012-06-05 | Netapp, Inc. | Multiple-processor core optimization for producer-consumer communication |
US8937622B2 (en) * | 2010-09-20 | 2015-01-20 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US8490111B2 (en) * | 2011-04-16 | 2013-07-16 | Throughputer, Inc. | Efficient network and memory architecture for multi-core data processing system |
-
2012
- 2012-05-31 US US13/485,074 patent/US8943516B2/en not_active Expired - Fee Related
-
2013
- 2013-05-24 DE DE102013209643.7A patent/DE102013209643B4/de active Active
- 2013-05-30 CN CN201310209314.8A patent/CN103455371B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976131B2 (en) * | 2002-08-23 | 2005-12-13 | Intel Corporation | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system |
CN1577294A (zh) * | 2003-06-25 | 2005-02-09 | 国际商业机器公司 | 具有多个一致性区域的多处理器计算机系统及其方法 |
CN101802790A (zh) * | 2007-09-21 | 2010-08-11 | 美普思科技公司 | 对多个一致域的支持 |
CN102253657A (zh) * | 2010-05-19 | 2011-11-23 | 沈阳高精数控技术有限公司 | 一种数控系统网络化体系结构的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103455371A (zh) | 2013-12-18 |
DE102013209643A1 (de) | 2013-12-05 |
US8943516B2 (en) | 2015-01-27 |
DE102013209643B4 (de) | 2020-12-17 |
US20130326180A1 (en) | 2013-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455371B (zh) | 用于优化的管芯内小节点间消息通信的方法和系统 | |
US7738443B2 (en) | Asynchronous broadcast for ordered delivery between compute nodes in a parallel computing system where packet header space is limited | |
CN108696461A (zh) | 用于智能网络接口卡的共享存储器 | |
Bureddy et al. | Omb-gpu: A micro-benchmark suite for evaluating mpi libraries on gpu clusters | |
CN109791508A (zh) | 具有多个可重配置区域的可配置逻辑平台 | |
CN107967180B (zh) | 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统 | |
CN103778017B (zh) | 改进虚拟处理器调度的亲和性 | |
US20150205625A1 (en) | Simulation of high performance computing (hpc) application environment using virtual nodes | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
Li et al. | Amoeba: Qos-awareness and reduced resource usage of microservices with serverless computing | |
US8380936B2 (en) | Multi-core processor system and multi-core processor | |
CN108694076A (zh) | 多节点存储操作 | |
CN103914412B (zh) | 用于存储设备中的流量优先化的方法,存储设备以及存储系统 | |
CN106250348A (zh) | 一种基于gpu访存特性的异构多核架构缓存管理方法 | |
CN115485671A (zh) | 在网络栈框架中利用一致附接的接口 | |
CN107070709A (zh) | 一种基于底层numa感知的nfv实现方法 | |
CN114510321A (zh) | 资源调度方法、相关装置和介质 | |
US7631125B2 (en) | Dynamically migrating channels | |
AU2011229395B2 (en) | Dual mode reader writer lock | |
US10545909B2 (en) | Computing system management using shared memory | |
CN108470008A (zh) | 串口数据读写方法、装置、计算机设备和存储介质 | |
Zhou et al. | Asynchronous progress design for a MPI-based PGAS one-sided communication system | |
CN109117247A (zh) | 一种基于异构多核拓扑感知的虚拟资源管理系统及方法 | |
CN108228333A (zh) | 一种多核系统的核间资源隔离方法 | |
CN110955602A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170301 Termination date: 20200530 |
|
CF01 | Termination of patent right due to non-payment of annual fee |