CN114356834A - 一种无锁的处理器间通信的方法和系统 - Google Patents
一种无锁的处理器间通信的方法和系统 Download PDFInfo
- Publication number
- CN114356834A CN114356834A CN202111591989.4A CN202111591989A CN114356834A CN 114356834 A CN114356834 A CN 114356834A CN 202111591989 A CN202111591989 A CN 202111591989A CN 114356834 A CN114356834 A CN 114356834A
- Authority
- CN
- China
- Prior art keywords
- processor
- receiving
- sending
- message
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明属于计算机系统软件技术领域,具体涉及一种无锁的处理器间通信的方法和系统。应用于发送处理器,包括:步骤1:向接收处理器发送消息;步骤2:接收接收处理器对所述发送消息的回复;步骤3:收到所述回复之后,从指令列表上读取未处理的指令并返回步骤1。通过具备空闲状态、已发送状态以及已处理状态的确定性状态机的指令列表,实现了无锁的处理器间的通信。
Description
技术领域
本发明属于计算机系统软件技术领域,具体涉及一种无锁的处理器间通信的方法和系统。
背景技术
在分布式计算系统中,任务在多个处理器之间共享。在这样的系统中,要执行的任务可以被分配给一组处理器中的某一个,处理器之间需要以一种允许软件确定性地管理资源的方式相互发送消息的方法和系统。基于此种原因,特提出本发明。
发明内容
发明目的:提供一种无锁的处理器间通信的方法和系统,以解决处理器间通信的不确定问题。
技术方案:
一种无锁的处理器间通信的方法,应用于发送处理器,包括:
步骤1:向接收处理器发送消息;
步骤2:接收接收处理器对所述发送消息的回复;
步骤3:收到所述回复之后,从指令列表上读取未处理的指令并返回步骤1。
进一步地,步骤1,具体包括:
监控共享内存,直到一个内存块被标记为“空闲”状态,并在标记为“空闲”状态之后选择一个适当的内存块;
发送处理器把要发送给接收处理器的消息写入所选择的内存块;
将内存块的状态从“空闲”状态更改为“已发送”状态;
将要发送给接收处理器的消息对应的指令添加到指令列表的末尾;
发送处理器确定是否还要给接收处理器发送消息,在确定不再向接收处理器发送消息的情况下,发送处理器更新指令列表的头指针,使其指向接收处理器等待处理的第一条指令;
向接收处理器发送处理器间中断。
进一步地,指令列表中的表项包含对共享内存中内存块位置的索引。
进一步地,步骤3,具体包括:
接收接收处理器发送的处理器间中断;
检查共享内存,并删除指令列表中标记为“已处理”的指令;
把“已处理”的指令对应的内存块的状态从“已处理”变成“空闲”;
更新指针的位置。
一种无锁的处理器间通信的方法,应用于接收处理器,包括:
步骤1:接收发送处理器发送的消息;
步骤2:对接收到的消息进行处理并回复。
进一步地,步骤1,具体包括:
接收到发送处理器发送的处理器间中断;
接收处理器把其指针指向指令列表中第一个待发送的指令;
根据共享内存中的内存块的内容执行指令列表中的下一指令;
将包含第一个待发送的指令的内存块从“已发送”状态更改为“已处理”状态;
确定是否完成了所有指令的接收,如果指令列表中不包含待处理项,则更新指针指向第一个没有被处理的表项并进行处理,如果所有的表项都处理完成,向发送处理器发送处理器间中断。
进一步地,更新指针指向第一个没有被处理的表项,具体包括:
在没有找到第一个没有被处理的表项的情况下,指向一个空指针。
一种无锁的处理器间通信的系统,包括:发送处理器、接收处理器、共享内存,发送处理器与接收处理器和共享内存通过总线连接;
发送处理器向接收处理器发送消息;接收处理器接收发送处理器发送的消息,以及对接收到的消息进行处理并回复;发送处理器接收接收处理器对所述发送消息的回复;以及发送处理器在收到所述回复之后,从指令列表上读取未处理的指令并继续向接收处理器发送消息;所述消息和指令列表存储在共享内存中。
有益效果:
通过一个具备空闲状态、已发送状态以及已处理状态的确定性状态机的指令列表,实现了无锁的处理器间的通信方法和系统。
附图说明
图1是多处理器系统的示意图;
图2是多处理器系统中处理器之间通信的方法;
图3是发送处理器发送消息的子步骤;
图4是接收处理器接收消息的子步骤;
图5是发送处理器接收回复的子步骤。
具体实施方式
计算机可读存储介质存储一组可由处理器执行的指令。发送处理器用该指令集接收要发送接收处理器的消息;将该消息存储在共享内存的内存块中,该共享内存由发送处理器和接收处理器共享;在指令列表中存储与该消息对应的指令,该指令列表存储在共享内存中;并提示接收处理器读取消息列表。
一种系统包括发送处理器、接收处理器、共享内存和存储在共享内存中的指令列表。发送处理器在共享内存中存储用于发送给接收处理器的消息。所述发送处理器在所述指令列表中创建与所述消息相对应的指令表项。发送处理器提示接收处理器访问指令列表。
实施例描述了用于协调多处理器系统中处理器之间通信的方法和系统。
分布式计算系统越来越普遍。这种系统涵盖的范围从以两个处理器核心为特征的个人计算机到用于执行复杂任务的大规模分布式处理系统。在这样的环境中,为了协调各种任务的执行,每个处理器核心必须能够向其他处理器核心发送消息。发送消息的机制必须具备确定性和高效性,并且使用最少的资源。确定性规定发送,处理和响应消息所需的时间上限。
图1包括发送处理器、接收处理器和共享内存。发送处理器和接受处理器是相对的,图1中仅仅指针对某一特定的数据处理过程,即在一个过程中,第一个处理器作为发送处理器,第二个处理器作为接收处理器,而在另一个过程中,可能第一个处理器就作为接收处理器,而第二个处理器作为发送处理器。
发送处理器和接收处理器的硬件可以基本相似或者彼此不同;共享内存可以是专门用于协调处理器间通信的独立物理内存,或者,是用于其它任务的大块内存的一部分,例如硬盘分区或者RAM片段,数据可以在发送处理器、接收处理器和共享内存之间通过总线进行传递。
共享内存由多个内存块组成,用于在发送处理器和接收处理器之间发送消息。内存块可以具有基本相同的大小,或者,可以针对不同类型的任务的执行而具有不同大小。每个内存块包括状态指示器,该状态指示器可标记为“空闲”、“已发送”和“已处理”三种状态。发送处理器和接收处理器可对共享内存中的数据进行读取和写入。共享内存可以存储指令列表来描述共享内存的内容。在这个实施例中,指令列表用于存储从发送处理器发送到接收处理器的指令。
图2描述把消息从发送处理器/发送处理器发送到接收处理器/接收处理器的全过程和总体方法,图3~图5将对图2的每一个子步骤进行详细描述。
图3描述了消息通过共享内存从发送处理器传递到接收处理器的过程。1)发送处理器监控共享内存,直到一个内存块被标记为“空闲”状态,并在标记为“空闲”状态之后选择一个适当的内存块。所选择的内存块可能是一个刚刚被标记为“空闲”状态的内存块,也可能是一个先前被标记为“空闲”状态的内存块,并且第一个处理器在对共享内存进行初始检查时检测到该内存块;2)发送处理器把要发送给接收处理器的消息写入所选的内存块。写入内存块中的数据可以是任何需要从分布式计算系统的一个处理器发送到另一个处理器的数据;3)发送处理器将内存块的状态从“空闲”状态更改为“已发送”状态;4)发送处理器将新写入的消息添加到指令列表的末尾。指令列表中的表项可以包含对共享内存中内存块位置的引用;5)发送处理器确定它是否需要给接收处理器发送消息,如果是,该方法返回1),而且,发送处理器会重复上面描述的消息写入过程;如果否,则继续执行第6步;6)发送处理器更新指令列表的头指针,使其指向接收处理器等待处理的第一条指令。一旦完成,发送处理器通过总线发送处理器间中断到接收处理器;7)处理器间中断用来提醒接收处理器,指令列表包含了等待它的指令。此时,发送处理器完成消息发送过程,并且,直到从接收处理器接收到回复才执行其他任务。
图4说明了接收处理器从发送处理器接收指令并对这些指令起作用的过程。如上所述,将图1中的发送处理器作为发送处理器,将图1的接收处理器作为接收处理器。1)接收处理器接收到发送处理器发送的处理器间中断,如上所述,这将提示接收处理器检查指令列表内容;2)接收处理器把其指针指向指令列表中第一个发送的表项;3)接收处理器根据共享内存中的内存块的内容执行指令列表中的下一表项;4)接收处理器将包含该表项的内存块从“已发送”状态更改为“已处理”状态,表示包含在内存块中的项已经被处理;5)接收处理器确定是否完成了迭代,如果指令列表中包含更多待处理项,则返回到3),接收处理器继续执行指令列表中的项。在实施例中,接收处理器在单次执行周期内,有限次执行步骤3)4),以保持其确定性;如果指令列表完成,则接收处理器继续执行下一步;6)更新指针指向第一个没有被处理的表项,或者,指向一个空指针,如果所有的表项都处理完成,则接收处理器向第7)步中的发送处理器发送一个处理器间中断,表明它已经执行了指令列表所指示的任务。此时,接收处理器完成其任务的执行,并在必要时执行其他任务。
图5说明了发送处理器从接收处理器接收到应答并确认应答的过程。如上所述,将图1的发送处理器作为发送处理器,将图1的接收处理器作为接收处理器。1)发送处理器接收到接收处理器发送的处理器间中断。该中断用来通知发送处理器,接收处理器已经接收到了由发送处理器发送给它的消息;2)发送处理器检查共享内存,并删除指令列表中标记为“已处理”的表项。3)发送处理器把内存块的状态从“已处理”变成“空闲”,其目的是释放这些内存块来处理其他消息。例如,当后续消息从发送处理器发送到接收处理器,从接收处理器发送消息到发送处理器,或者,在具有更多处理器的分布式系统中,与其他处理器交互的消息。此时,标记为“空闲”状态内存块的使用已经完成;可以选择将内存块添加空闲块列表中,以便重新分配;4)发送处理器更新它的指针,之后方法终止。随后,如果指令列表中还有未处理的表项,该过程会重新开始并重复,直到指令列表为空。
所述实施例可用于将任何类型的数据、指令或者其他消息从多处理器体系结构中的一个处理器传递到另一个处理器。这包括(但不限于)转发主分配请求,将中断从一个处理器转发到另一个处理器,或者,将任何类型的请求或者服务从一个处理器转发到另一个处理器。因此,所述示例性实施例提出了一种方法,通过该方法可以更有效地执行各种标准编程用法。
Claims (8)
1.一种无锁的处理器间通信的方法,其特征在于,应用于发送处理器,包括:
步骤1:向接收处理器发送消息;
步骤2:接收接收处理器对所述发送消息的回复;
步骤3:收到所述回复之后,从指令列表上读取未处理的指令并返回步骤1。
2.根据权利要求1所述的方法,其特征在于,步骤1,具体包括:
监控共享内存,直到一个内存块被标记为“空闲”状态,并在标记为“空闲”状态之后选择一个适当的内存块;
发送处理器把要发送给接收处理器的消息写入所选择的内存块;
将内存块的状态从“空闲”状态更改为“已发送”状态;
将要发送给接收处理器的消息对应的指令添加到指令列表的末尾;
发送处理器确定是否还要给接收处理器发送消息,在确定不再向接收处理器发送消息的情况下,发送处理器更新指令列表的头指针,使其指向接收处理器等待处理的第一条指令;
向接收处理器发送处理器间中断。
3.根据权利要求1所述的方法,其特征在于,指令列表中的表项包含对共享内存中内存块位置的索引。
4.根据权利要求1所述的方法,其特征在于,步骤3,具体包括:
接收接收处理器发送的处理器间中断;
检查共享内存,并删除指令列表中标记为“已处理”的指令;
把“已处理”的指令对应的内存块的状态从“已处理”变成“空闲”;
更新指针的位置。
5.一种无锁的处理器间通信的方法,其特征在于,应用于接收处理器,包括:
步骤1:接收发送处理器发送的消息;
步骤2:对接收到的消息进行处理并回复。
6.根据权利要求5所述的方法,其特征在于,步骤1,具体包括:
接收到发送处理器发送的处理器间中断;
接收处理器把其指针指向指令列表中第一个待发送的指令;
根据共享内存中的内存块的内容执行指令列表中的下一指令;
将包含第一个待发送的指令的内存块从“已发送”状态更改为“已处理”状态;
确定是否完成了所有指令的接收,如果指令列表中不包含待处理项,则更新指针指向第一个没有被处理的表项并进行处理,如果所有的表项都处理完成,向发送处理器发送处理器间中断。
7.根据权利要求6所述的方法,其特征在于,更新指针指向第一个没有被处理的表项,具体包括:
在没有找到第一个没有被处理的表项的情况下,指向一个空指针。
8.一种无锁的处理器间通信的系统,其特征在于,包括:发送处理器、接收处理器、共享内存,发送处理器与接收处理器和共享内存通过总线连接;
发送处理器向接收处理器发送消息;接收处理器接收发送处理器发送的消息,以及对接收到的消息进行处理并回复;发送处理器接收接收处理器对所述发送消息的回复;以及发送处理器在收到所述回复之后,从指令列表上读取未处理的指令并继续向接收处理器发送消息;所述消息和指令列表存储在共享内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111591989.4A CN114356834A (zh) | 2021-12-23 | 2021-12-23 | 一种无锁的处理器间通信的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111591989.4A CN114356834A (zh) | 2021-12-23 | 2021-12-23 | 一种无锁的处理器间通信的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356834A true CN114356834A (zh) | 2022-04-15 |
Family
ID=81101878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111591989.4A Pending CN114356834A (zh) | 2021-12-23 | 2021-12-23 | 一种无锁的处理器间通信的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356834A (zh) |
-
2021
- 2021-12-23 CN CN202111591989.4A patent/CN114356834A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010681B2 (en) | Distributed computing system, and data transmission method and apparatus in distributed computing system | |
US9658879B2 (en) | System and method for supporting buffer allocation in a shared memory queue | |
US8381230B2 (en) | Message passing with queues and channels | |
US5418913A (en) | System of two-way communication between processors using a single queue partitioned with pointers and limited overwrite privileges | |
CN110442463B (zh) | Tee系统中的数据传输方法和装置 | |
JPH07101407B2 (ja) | スケジユーリング方法及び装置 | |
CN108845863B (zh) | 用于虚拟机与宿主机的通信方法、装置和系统 | |
CN110888727B (zh) | 并发无锁队列实现方法、装置及存储介质 | |
CN111400268B (zh) | 一种分布式持久性内存事务系统的日志管理方法 | |
CN110427274B (zh) | Tee系统中的数据传输方法和装置 | |
JP5309703B2 (ja) | 共有メモリの制御回路、制御方法及び制御プログラム | |
CN111737564B (zh) | 一种信息查询方法、装置、设备及介质 | |
US7243354B1 (en) | System and method for efficiently processing information in a multithread environment | |
CN1307569C (zh) | 在多处理器环境下使用直接存储器存取的高速传递数据的方法和装置 | |
US10062137B2 (en) | Communication between integrated graphics processing units | |
US8543722B2 (en) | Message passing with queues and channels | |
US20200371827A1 (en) | Method, Apparatus, Device and Medium for Processing Data | |
US20180285174A1 (en) | Method and apparatus for peer-to-peer messaging in heterogeneous machine clusters | |
US6212543B1 (en) | Asymmetric write-only message queuing architecture | |
US10678744B2 (en) | Method and system for lockless interprocessor communication | |
US20180052659A1 (en) | Sending and receiving data between processing units | |
CN112506676B (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
CN116521096A (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN114356834A (zh) | 一种无锁的处理器间通信的方法和系统 | |
CN116361031A (zh) | 消息的传输方法、系统、装置、处理器以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |