一种多核处理器的核间通信方法及装置的制造方法

文档序号:10724736阅读:535来源:国知局
一种多核处理器的核间通信方法及装置的制造方法
【专利摘要】本发明涉及通信技术领域,尤其涉及一种多核处理器的核间通信方法及装置,用以解决现有技术中存在的CPU处理任务的能力及资源利用率较低的问题;本发明实施例提供的方法包括:发送核读取接收核的消息接收队列尾指针的值A;接收核的消息接收队列为接收核专用的消息接收队列;将接收核的消息接收队列尾指针的值A修改为A+M;其中M为正整数,表示当前待发送消息的条数;将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中。
【专利说明】
一种多核处理器的核间通信方法及装置
技术领域
[0001]本发明涉及通信技术领域,尤其涉及一种多核处理器的核间通信方法及装置。
【背景技术】
[0002]现有的计算机操作系统基本都需要同时处理多个操作任务,这就要求中央处理器(Central Processing Unit,CPU)处理任务的能力也相应提高。随着大数据时代的到来,计算机操作系统无时无刻都需要快速、准确地处理海量信息,因此提高CPU处理任务的能力的需求更加迫切。在这种情况下,多核处理器无疑是一个很好的选择,这就涉及到多处理核之间的通信问题。
[0003]现有的计算机操作系统多处理核之间大多基于先进先出(First Input FirstOutput,FIF0)队列进行通信。采用这种技术计算机操作系统多处理核之间共享一个FIFO队列,消息发送方将消息写入到FIFO队列中,消息接收方从FIFO队列中读取消息。当多处理核之间通信比较频繁时,经常会出现多个发送方同时写入消息或多个接收方同时读取消息的情况。此时,为了保证通信过程中传输数据不被覆盖,通常会采用锁机制来保证同一时刻只有一个处理核发送/接收信息。这就导致其它处理核需要等待当前处理核完成发送/接收信息任务才可继续处理其它任务,因此降低了 CPU处理任务的能力。而且,锁机制会迫使其它未获得该共享FIFO队列的进程阻塞,CPU需要保存所述进程的相关信息并且重新分配任务、调度进程,这也会浪费CPU的处理资源,影响CPU的性能。
[0004]可见,现有技术中,计算机操作系统多处理核之间利用锁机制共享一个FIFO队列进行通信,导致CPU处理任务的能力及资源利用率较低。

【发明内容】

[0005]本发明提供一种多核处理器的核间通信方法,用以解决现有技术中CPU处理任务的能力及资源利用率较低的问题。
[0006]本发明实施例提供的一种多核处理器的核间通信的方法,包括:
[0007]发送核读取接收核的消息接收队列尾指针的值A;接收核的消息接收队列为接收核专用的消息接收队列;
[0008]将接收核的消息接收队列尾指针的值A修改为A+M;其中M为正整数,表示当前待发送消息的条数;
[0009]将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中;
[0010]可选地,发送核读取接收核的消息接收队列尾指针的值A之前,还包括:
[0011]确定接收核的消息接收队列中存在空闲元素;其中每个空闲元素用于存储一条待发送消息的内存地址;
[0012]可选地,根据以下步骤确定当前待发送消息的条数M:
[0013]当发送核需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于N2;其中N1、N2为正整数;
[0014]当发送核需要发送给接收核的消息的总数量NI小于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于NI;
[0015]可选地,当发送核需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,将除当前待发送消息之外的N1-N2条消息存入发送核的第一发送缓冲队列中,第一发送缓冲队列专用于存储所述发送核需要向所述接收核发送的消息的内存地址;
[0016]当接收核的消息接收队列中存在空闲元素之后,返回读取接收核的消息接收队列尾指针的值A的步骤,并从第一发送缓冲队列中提取当前待发送消息的内存地址;
[0017]可选地,将除当前待发送消息之外的N1-N2条消息存入发送核的第一发送缓冲队列中之后,确定接收核的消息接收队列中存在空闲元素之前,还包括:
[0018]将除当前待发送消息之外的N1-N2条消息存入发送核的第一发送缓冲队列中之后,开启发送核的第一计时器;第一计时器为所述发送核向所述接收核发送消息所专用的计时器;
[0019]当接收核的消息接收队列中存在空闲元素之后,返回读取接收核的消息接收队列尾指针的值A的步骤,包括:
[0020]在发送核的第一计时器计时结束之后,判断接收核的消息接收队列中是否存在空闲元素,若存在,则返回发送核读取接收核的消息接收队列尾指针的值A的步骤;
[0021]可选地,若确定接收核的消息接收队列中不存在空闲元素,则重新开启发送核的第一计时器;
[0022]可选地,在发送核的第一计时器计时结束之前,将产生的需要发送给接收核的待发送消息的内存地址存入第一发送缓冲队列中;
[0023]本发明实施例还提供一种多核处理器的核间通信的方法,包括:
[0024]接收核基于自身专用的消息接收队列接收发送核发送的消息的内存地址;
[0025]接收核读取所述内存地址对应的内存中的消息,并进行处理。
[0026]本发明实施例提供的一种多核处理器的核间通信的装置,包括:
[0027]读取模块,用于读取接收核的消息接收队列尾指针的值A;该接收核的消息接收队列为该接收核专用的消息接收队列;
[0028]修改模块,用于将尾指针的值A修改为A+M;其中M为正整数,表示当前待发送消息的条数;
[0029]写入模块,用于将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中。
[0030]可选地,读取模块具体用于:
[0031]在确定接收核的消息接收队列中存在空闲元素后,读取接收核的消息接收队列尾指针的值A;其中每个空闲元素用于存储一条待发送消息的内存地址。
[0032]可选地,修改模块具体用于根据以下步骤确定当前待发送消息的条数:
[0033]当所述装置需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于N2;其中N1、N2为正整数;
[0034]当所述装置需要发送给接收核的消息的总数量NI小于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于NI。
[0035]可选地,写入模块还用于:
[0036]当所述装置需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,将除当前待发送消息之外的N1-N2条消息存入该装置的第一发送缓冲队列中,该第一发送缓冲队列专用于存储所述装置需要向接收核发送的消息的内存地址;
[0037]可选地,读取模块还用于:
[0038]当确定接收核的消息接收队列中存在空闲元素之后,返回读取接收核的消息接收队列尾指针的值A,并从第一发送缓冲队列中提取当前待发送消息的内存地址。
[0039]可选地,读取模块具体用于:
[0040]在写入模块将除当前待发送消息之外的N1-N2条消息存入该装置的第一发送缓冲队列之后,开启该装置的第一计时器;此第一计时器为该装置向所述接收核发送消息所专用的计时器;在该装置的第一计时器计时结束之后,判断接收核的消息接收队列中是否存在空闲元素,若存在,返回读取接收核的消息接收队列尾指针的值A。
[0041 ] 可选地,读取模块还用于:
[0042]若确定接收核的消息接收队列中不存在空闲元素,则重新开启该装置的第一计时器。
[0043]可选地,写入模块还用于:
[0044]在该装置的第一计时器计时结束之前,将产生的需要发送给接收核的待发送消息的内存地址存入第一发送缓冲队列中。
[0045]本发明实施例还提供一种多核处理器的核间通信的装置,包括:
[0046]接收模块,用于基于自身专用的消息接收队列接收发送核发送的消息的内存地址;
[0047]处理模块,用于读取所述内存地址对应的内存中的消息,并进行处理。
[0048]本发明实施例中,一方面,读取接收核的消息接收队列尾指针的值A,将尾指针的值A修改为A+M,最后将当前待发送消息的M条消息的内存地址写入接收核的消息接收队列中。这样,当其它发送核读取该接收核的消息接收队列尾指针值时,尾指针值已经修改为A+M,也即其它发送核会将A+M作为尾指针的值执行内存地址的写入操作,从而避免了多个发送核同时向一个接收核的消息接收队列中发送消息时产生的消息覆盖问题,并且,这种方式允许多个发送核的并行写入操作,提高了CPU处理任务的能力。另一方面,为每个处理核配置一个专用的消息接收队列,避免了多个处理核在同时接收消息时发生冲突,减少了CPU的等待时间,提高了 CPU的资源利用率。
【附图说明】
[0049]图1为本发明实施例提供的一种多核处理器的核间通信方法流程图;
[0050]图2为本发明实施例提供的一种处理核的发送缓冲队列的示意图;
[0051 ]图3为本发明实施例提供的一种处理核发送消息的流程图;
[0052]图4为本发明实施例提供的一种处理核接收消息的示意图;
[0053]图5为本发明实施例提供的一种多核处理器发送消息的示意图;
[0054]图6为本发明实施例提供的一种多核处理器的核间通信示意图;
[0055]图7为本发明实施例提供的又一种处理核发送消息的流程图;
[0056]图8为本发明实施例提供的一种处理核接收消息的流程图;
[0057]图9为本发明实施例提供的一种多核处理器的核间通信装置结构图;
[0058]图10为本发明实施例提供的又一种多核处理器的核间通信装置结构图。
【具体实施方式】
[0059]本发明实施例中,读取接收核的消息接收队列尾指针的值A,将尾指针的值A修改为A+M,最后将当前待发送消息的M条消息的内存地址写入接收核的消息接收队列中。这样,当其它发送核读取该接收核的消息接收队列尾指针值时,尾指针值已经修改为A+M,也即其它发送核会将A+M作为尾指针的值执行内存地址的写入操作,从而避免了多个发送核同时向一个接收核的消息接收队列中发送消息时产生的消息覆盖问题,并且,这种方式允许多个发送核的并行写入操作,提高了CPU处理任务的能力。此外,本发明实施例为每个处理核配置一个专用的消息接收队列,避免了多个处理核在同时接收消息时发生冲突,减少了CPU的等待时间,提高了 CPU的资源利用率。
[0060]下面结合说明书附图对本发明实施例作进一步详细描述。
[0061]需要说明的是,本申请实施例中的每一个处理核,既可以作为发送核使用,也可以作为接收核使用,也即每一个处理核既可以执行发送核的操作,也可以执行接收核的操作。为便于说明,以下实施例中主要从发送核和接收核的角度进行描述。
[0062]如图1所示,为本发明实施例提供的一种多核处理器的核间通信方法流程图,包括以下步骤:
[0063]SlOl:发送核读取接收核的消息接收队列尾指针的值A;所述接收核的消息接收队列为接收核专用的消息接收队列。
[0064]这里,接收核的消息接收队列为FIFO队列,所述FIFO队列中的元素用于存储发送核发送给接收核的消息内容所在的内存地址。
[0065]在具体实施中,可以根据实际需求设置接收核的消息接收队列的大小(即承载的元素个数,每个元素用于存储一条消息的内存地址),消息接收队列的大小也可以是系统初始化时默认设置的。
[0066]在具体实施中,发送核读取接收核的消息接收队列尾指针的值A之前,可以首先判断接收核的消息接收队列中是否存在空闲元素,在确定接收核的消息接收队列中存在空闲元素之后,再执行S101。具体地,可以根据接收核的消息接收队列的大小以及当前接收核的消息接收队列中的元素个数,判断所述接收核的消息接收队列中是否存在空闲元素。
[0067]S102:发送核将所述尾指针的值A修改为A+M。
[0068]这里,可以根据以下步骤确定当前待发送消息的条数M,其中M为正整数:
[0069]当发送核需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于N2;其中N1、N2为正整数;当发送核需要发送给接收核的消息的总数量NI小于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于NI。
[0070]在具体实施中,将尾指针的值A修改为A+M之前,可以先读取所述尾指针的值并判断尾指针的值是否仍然为A,如果是,则将A修改为A+M,否则,重新确定接收核的消息接收队列中是否存在空闲元素。这里,读取、判断指令在一个处理周期内完成,是不可再分割的最小操作步骤。
[0071]S103:发送核将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中。
[0072]在具体实施中,将上述步骤中确定的当前待发送的M条消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的位置。在此过程中,如果有其它发送核向所述接收核发送消息,并且所述接收核的消息接收队列中仍然有空闲元素,则此时其它发送核可以继续读取接收核的消息接收队列尾指针的值。此时读取的消息接收队列尾指针的值已不再是A,而是被修改后的A+M,后续其它发送核再对该接收核的消息接收队列尾指针进行修改时,以A+M为基础进行修改,比如,其它发送核确定的当前待发送消息条数为L,则修改后的尾指针的值变为A+M+L。
[0073]上述步骤中当发送核需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,可以将除当前待发送消息之外的N1-N2条消息存入发送核的第一发送缓冲队列中,该第一发送缓冲队列专用于存储所述发送核需要向所述接收核发送的消息的内存地址;在经过一段时间,接收核的消息接收队列中存在空闲元素之后,返回SlOl,从第一发送缓冲队列中提取当前待发送消息的内存地址。
[0074]这里,可以为发送核配置T-1(T为系统中处理核的总数)个发送缓冲队列,其中每一个发送缓冲队列对应一个接收核,用于存储该发送核需要向该接收核发送的消息的内存地址。如图2所示,比如,系统中共有4个处理核,则这4个处理核都可以作为发送处理核和接收处理核使用。比如,当处理核O作为发送处理核使用时,系统为处理核O分配3个发送缓冲队列,分别为发送缓冲队列0-1、发送缓冲队列0-2和发送缓冲队列0-3。发送缓冲队列0-1用于缓存处理核O发送给处理核I的消息的内存地址,发送缓冲队列0-2用于缓存处理核O发送给处理核2的消息的内存地址,送缓冲队列0-3用于缓存处理核O发送给处理核3的消息的内存地址。
[0075]在具体实施中,将除当前待发送消息之外的Ν1-Ν2条消息存入发送核的第一发送缓冲队列中之后,发送核可以不停地访问接收核的消息接收队列,判断接收核的消息接收队列是否有空闲元素,但在这种方式下,发送核处于盲目等待状态,并且不能处理其它任务,因此浪费了 CPU的处理资源。
[0076]作为一种优选方式,在将除当前待发送消息之外的Ν1-Ν2条消息存入发送核的第一发送缓冲队列中之后,可以开启发送核的第一计时器;该第一计时器为发送核向接收核发送消息所专用的计时器;在发送核的计时器计时结束之前,不需要判断接收核的消息接收队列中是否存在空闲元素,在发送核的计时器计时结束之后,再判断接收核的消息接收队列中是否存在空闲元素,在确定存在空闲元素后,则返回发送核读取接收核的消息接收队列尾指针的值A的步骤,若确定不存在空闲元素,重新开启发送核的第一计时器。
[0077]具体地,如图3所示,上述过程可以按照如下流程进行:
[0078]S301a:将除当前待发送消息之外的Ν1-Ν2条消息存入发送核的第一发送缓冲队列中。
[0079]S302a:开启发送核的第一计时器。
[0080]这里,第一计时器为发送核向接收核发送消息所专用的计时器。在第一计时器开启后,定时时间到达之前,将产生的需要发送给接收核的待发送消息的内存地址存入第一发送缓冲队列中,不需要再判断接收核的消息接收队列中是否存在空闲元素。
[0081 ]在具体实施中,每个发送处理核可以设置多个计时器,比如,系统中共有4个处理核,则为处理核O分配3个计时器,分别为计时器0-1、计时器0-2和计时器0-3。当处理核O需要向处理核I发送消息,而处理核I的消息接收队列不存在空闲元素时,启动计时器0-1,其定时时间为处理核O向处理核I发送消息时需要等待的时间,当处理核O需要向处理核2发送消息,而处理核2的消息接收队列不存在空闲元素时,启动计时器0-2,其定时时间为处理核O向处理核2发送消息时需要等待的时间,当处理核O需要向处理核3发送消息,而处理核3的消息接收队列不存在空闲元素时,启动计时器0-3,其定时时间为处理核O向处理核3发送消息时需要等待的时间。
[0082]在具体实施中,可以根据用户指令生成一个数值范围(比如O?100ms),第一计时器的定时时间由系统在上述数值范围内随机产生。
[0083]S303a:第一计时器计时结束之后,判断接收核的消息接收队列中是否存在空闲元素。如果不存在空闲元素,则进入S304a;如果存在空闲元素,则进入S305a。
[0084]S304a:重新开启发送核的第一计时器。
[0085]这里,重新开启第一计时器后设置的定时时间是由系统在上述预先设置的数值范围内随机产生的,与第一计时器之前的定时时间无关。
[0086]S305a:重新读取接收核的消息接收队列尾指针的值A,也即返回S1I。
[0087]可选地,在具体实施中,发送核向接收核发送消息前,可以先判断第一计时器是否开启。若该第一计时器开启,则将待发送消息存入发送核的第一发送缓冲队列中,若该第一计时器没有开启,则重新判断接收核的消息接收队列中是否存在空闲元素。
[0088]S104:接收核基于自身专用的消息接收队列接收发送核发送的消息的内存地址,读取所述内存地址对应的内存中的消息,并进行处理。
[0089]在具体实施中,每个处理核通过各自专用的消息接收队列接收消息。如图4所示,处理核O从自身专用的消息接收队列中接收消息,处理核I从自身专用的消息接收队列中接收消息……处理核η从自身专用的消息接收队列中接收消息。
[0090]在具体实施中,接收核从专用的消息接收队列中接收多个发送核发送的消息。如图5所示,计算机操作系统初始化时,为系统中的每个处理核分配一个专用的消息接收队列。当有多个处理核向同一个处理核发送消息时,这多个处理核依次将待发送消息的内存地址写入这同一个处理核专用的消息接收队列中。接收消息的处理核检查自身专用的消息接收队列,发现有待接收消息,之后从自身专用的消息接收队列头开始读取相应元素,进行处理。
[0091]如图6所示,当处理核O向处理核I发送消息时:首先,处理核O把待发送消息所在的内存地址保存在处理核I专用的消息接收队列的队尾元素中;其次,处理核I检查自身专用的消息接收队列,发现该消息接收队列中有待接收的消息;然后,处理核I从该消息接收队列的队头开始读取相应的元素,得到处理核O发送的消息的内存地址;最后,处理核I访问所述内存地址,获取处理核O发送的消息的具体内容。同样地,当处理核I向处理核O发送消息时:首先,处理核I把待发送消息所在的内存地址保存在处理核O专用的消息接收队列的队尾元素中;其次,处理核O检查自身专用的消息接收队列,发现该消息接收队列中有待接收的消息;然后,处理核O从该消息接收队列的队头开始读取相应的元素,得到处理核I发送的消息的内存地址;最后,处理核O访问所述内存地址,获取处理核I发送的消息的具体内容。
[0092]本发明实施例中,读取接收核的消息接收队列尾指针的值A,将尾指针的值A修改为A+M,最后将当前待发送消息的M条消息的内存地址写入接收核的消息接收队列中。这样,当其它发送核读取该接收核的消息接收队列尾指针值时,尾指针值已经修改为A+M,也即其它发送核会将A+M作为尾指针的值执行内存地址的写入操作,从而避免了多个发送核同时向一个接收核的消息接收队列中发送消息时产生的消息覆盖问题,并且,这种方式允许多个发送核的并行写入操作,提高了CPU处理任务的能力。此外,本发明实施例为每个处理核配置一个专用的消息接收队列,避免了多个处理核在同时接收消息时发生冲突,减少了CPU的等待时间,提高了 CPU的资源利用率。
[0093]下面通过一个具体的示例对本发明思想作进一步介绍。
[0094]实施例二
[0095]如图7所示,为本发明实施例二提供的多核处理器的核间通信方法流程图,包括:
[0096]S701:发送核确定需要向接收核发送消息。
[0097]在具体实施中,发送核把待发送消息保存在计算机操作系统的某个内存单元中,发送过程传递所述内存单元的首地址。
[0098]S702:判断发送核与接收核通信时所对应的发送核的计时器是否开启。若开启,则进入S703,否则,进入S704。
[0099]S703:将待发送消息存入所述发送核的第一发送缓冲队列中,等待发送核的计时器计时结束。
[0100]S704:判断接收核的消息接收队列是否有空闲元素。若无,则进入S705,若有,则进人S706。
[0101 ] S705:开启发送核与接收核通信时所对应的发送核的计时器。
[0102]S706:确定当前待发送消息的条数M。
[0103]这里,可以根据以下过程确定当前待发送消息的条数M:假设发送核确定需要向接收核发送的总消息条数为NI,接收核的消息接收队列中空闲元素数量为N2。那么,如果NI大于或者等于N2,则确定当前待发送消息的条数M = N2;如果NI小于N2,则确定当前待发送消息的条数M=NI。
[0104]在具体实施中,若确定当前待发送消息的条数M= N2,可以将除当前待发送的M(M= N2)条消息之外的N1-N2条消息存入发送核的第一发送缓冲队列中。之后开启发送核的第一计时器;在发送核的计时器计时结束之前,将待发送消息存入发送核的第一发送缓冲队列中;在发送核的计时器计时结束之后,返回S704。
[0105]S707:发送核读取接收核的消息接收队列尾指针的值A,将尾指针的值A修改为A+
M0
[0106]这里,将尾指针的值A修改为A+M之前,读取所述尾指针的值并判断所述尾指针的值是否仍然为A。若是,则进入S708,否则,返回S704。这里,读取、判断指令在一个处理周期内完成,是不可再分割的最小操作步骤。
[0107]S708:将当前待发送的M条消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中。
[0108]在具体实施中,接收核接收发送核发送的消息的流程如图8所示。
[0109]S801:接收核检查自身专用的消息接队列中是否有待接收消息。若是,则进入S802,否则再次执行S801。
[0110]S802:接收核从所述消息接收队列的队首开始读取该消息在此队列中存储的相应元素。
[0111]S803:接收核获取该消息的内存地址,读取消息。
[0112]基于同一发明构思,本发明实施例中还提供了一种与多核处理器的核间通信的方法对应的多核处理器的核间通信的装置,由于该装置解决问题的原理与本发明实施例多核处理器的核间通信的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
[0113]如图9所示,为本发明实施例提供的一种多核处理器的核间通信的装置结构图示意图,包括:
[0114]读取模块901,用于读取接收核的消息接收队列尾指针的值A;该接收核的消息接收队列为该接收核专用的消息接收队列;
[0115]修改模块902,用于将尾指针的值A修改为A+M;其中M为正整数,表示当前待发送消息的条数;
[0116]写入模块903,用于将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中。
[0117]可选地,读取模块901具体用于:
[0118]在确定接收核的消息接收队列中存在空闲元素后,读取接收核的消息接收队列尾指针的值A;其中每个空闲元素用于存储一条待发送消息的内存地址。
[0119]可选地,修改模块902具体用于根据以下步骤确定当前待发送消息的条数:
[0120]当所述装置需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于N2;其中N1、N2为正整数;
[0121]当所述装置需要发送给接收核的消息的总数量NI小于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于NI。
[0122]可选地,写入模块903还用于:
[0123]当所述装置需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,将除当前待发送消息之外的N1-N2条消息存入该装置的第一发送缓冲队列中,所述第一发送缓冲队列专用于存储所述装置需要向所述接收核发送的消息的内存地址;
[0124]可选地,读取模块901还用于:
[0125]当确定接收核的消息接收队列中存在空闲元素之后,返回读取接收核的消息接收队列尾指针的值A,并从第一发送缓冲队列中提取当前待发送消息的内存地址。
[0126]可选地,读取模块901具体用于:
[0127]在写入模块903将除当前待发送消息之外的N1-N2条消息存入该装置的第一发送缓冲队列之后,开启该装置的第一计时器;此第一计时器为该装置向所述接收核发送消息所专用的计时器;在该装置的第一计时器计时结束之后,判断接收核的消息接收队列中是否存在空闲元素,若存在,返回读取接收核的消息接收队列尾指针的值A。
[0128]可选地,读取模块901还用于:
[0129]若确定接收核的消息接收队列中不存在空闲元素,则重新开启该装置的第一计时器。
[0130]可选地,写入模块903还用于:
[0131]在该装置的第一计时器计时结束之前,将产生的需要发送给接收核的待发送消息的内存地址存入第一发送缓冲队列中。
[0132]如图10所示,本发明实施例还提供一种多核处理器的核间通信的装置结构图示意图,包括:
[0133]接收模块1001,用于基于自身专用的消息接收队列接收发送核发送的消息的内存地址;
[0134]处理模块1002,用于读取内存地址对应的内存中的消息,并进行处理。
[0135]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0136]本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0137]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0138]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0139]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0140]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种多核处理器的核间通信方法,其特征在于,该方法包括: 发送核读取接收核的消息接收队列尾指针的值A;所述接收核的消息接收队列为所述接收核专用的消息接收队列; 将所述尾指针的值A修改为A+M;其中M为正整数,表示当前待发送消息的条数; 将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+1到指针值A+M所指向的队列位置中。2.如权利要求1所述的方法,其特征在于,所述发送核读取接收核的消息接收队列尾指针的值A之前,还包括: 确定所述接收核的消息接收队列中存在空闲元素;其中每个空闲元素用于存储一条待发送消息的内存地址。3.如权利要求2所述的方法,其特征在于,根据以下步骤确定当前待发送消息的条数M: 当所述发送核需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于N2;其中N1、N2为正整数; 当所述发送核需要发送给接收核的消息的总数量NI小于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于NI。4.如权利要求3所述的方法,其特征在于,所述方法还包括: 当所述发送核需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,将除当前待发送消息之外的N1-N2条消息存入所述发送核的第一发送缓冲队列中,所述第一发送缓冲队列专用于存储所述发送核需要向所述接收核发送的消息的内存地址; 当所述接收核的消息接收队列中存在空闲元素之后,返回所述读取接收核的消息接收队列尾指针的值A的步骤,并从所述第一发送缓冲队列中提取当前待发送消息的内存地址。5.如权利要求4所述的方法,其特征在于,将除当前待发送消息之外的N1-N2条消息存入所述发送核的第一发送缓冲队列中之后,确定所述接收核的消息接收队列中存在空闲元素之前,还包括: 将除当前待发送消息之外的N1-N2条消息存入所述发送核的第一发送缓冲队列中之后,开启所述发送核的第一计时器;所述第一计时器为所述发送核向所述接收核发送消息所专用的计时器; 当所述接收核的消息接收队列中存在空闲元素之后,返回所述读取接收核的消息接收队列尾指针的值A的步骤,包括: 在所述发送核的第一计时器计时结束之后,判断所述接收核的消息接收队列中是否存在空闲元素,若存在,则返回所述发送核读取接收核的消息接收队列尾指针的值A的步骤。6.如权利要求5所述的方法,其特征在于,所述方法还包括: 若确定所述接收核的消息接收队列中不存在空闲元素,则重新开启所述发送核的第一计时器。7.如权利要求6所述的方法,其特征在于,所述方法还包括: 在所述发送核的第一计时器计时结束之前,将产生的需要发送给所述接收核的待发送消息的内存地址存入所述第一发送缓冲队列中。8.一种多核处理器的核间通信方法,其特征在于,该方法还包括: 接收核基于自身专用的消息接收队列接收发送核发送的消息的内存地址; 所述接收核读取所述内存地址对应的内存中的消息,并进行处理。9.一种多核处理器的核间通信装置,其特征在于,该装置包括: 读取模块,用于读取接收核的消息接收队列尾指针的值A;所述接收核的消息接收队列为所述接收核专用的消息接收队列; 修改模块,用于将所述尾指针的值A修改为A+M;其中M为正整数,表示当前待发送消息的条数; 写入模块,用于将当前待发送消息的内存地址写入接收核的消息接收队列中指针值A+I到指针值A+M所指向的队列位置中。10.如权利要求9所述的装置,其特征在于,所述读取模块具体用于: 在确定所述接收核的消息接收队列中存在空闲元素后,读取接收核的消息接收队列尾指针的值A;其中每个空闲元素用于存储一条待发送消息的内存地址。11.如权利要求10所述的装置,其特征在于,所述修改模块具体用于根据以下步骤确定当前待发送消息的条数: 当所述装置需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于N2;其中N1、N2为正整数; 当所述装置需要发送给接收核的消息的总数量NI小于接收核的消息接收队列中的空闲元素数量N2时,确定当前待发送消息的条数M等于NI。12.如权利要求11所述的装置,其特征在于,所述写入模块还用于: 当所述装置需要发送给接收核的消息的总数量NI大于或等于接收核的消息接收队列中的空闲元素数量N2时,将除当前待发送消息之外的N1-N2条消息存入所述装置的第一发送缓冲队列中,所述第一发送缓冲队列专用于存储所述装置需要向所述接收核发送的消息的内存地址; 所述读取模块还用于: 当确定所述接收核的消息接收队列中存在空闲元素之后,返回所述读取接收核的消息接收队列尾指针的值A,并从所述第一发送缓冲队列中提取当前待发送消息的内存地址。13.如权利要求12所述的装置,其特征在于,所述读取模块具体用于: 在所述写入模块将除当前待发送消息之外的N1-N2条消息存入所述装置的第一发送缓冲队列之后,开启所述装置的第一计时器;所述第一计时器为所述装置向所述接收核发送消息所专用的计时器;在所述装置的第一计时器计时结束之后,判断所述接收核的消息接收队列中是否存在空闲元素,若存在,返回读取接收核的消息接收队列尾指针的值A。14.如权利要求13所述的装置,其特征在于,所述读取模块还用于: 若确定所述接收核的消息接收队列中不存在空闲元素,则重新开启所述装置的第一计时器。15.如权利要求14所述的装置,其特征在于,所述写入模块还用于: 在所述装置的第一计时器计时结束之前,将产生的需要发送给所述接收核的待发送消息的内存地址存入所述第一发送缓冲队列中。16.一种多核处理器的核间通信装置,其特征在于,该装置包括: 接收模块,用于基于自身专用的消息接收队列接收发送核发送的消息的内存地址;处理模块,用于读取所述内存地址对应的内存中的消息,并进行处理。
【文档编号】G06F9/54GK106095604SQ201610466333
【公开日】2016年11月9日
【申请日】2016年6月21日
【发明人】赵剑川, 王南生
【申请人】京信通信技术(广州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1