多处理器交叉通信装置及方法与流程

文档序号:20511386发布日期:2020-04-24 18:34阅读:126来源:国知局
多处理器交叉通信装置及方法与流程

本公开涉及通信技术领域,特别涉及一种多处理器交叉通信装置及方法。



背景技术:

处理器是现代计算设备的基础,为现代计算设备提供基础计算力。为满足计算设施对计算性能、通用性、通信能力、功耗等特殊使用场景的要求,处理器演变出dsp(digitalsignalprocessor,数字信号处理器)、cpu(centralprocessingunit,中央处理器)、arm(advancedrisc(reducedinstructionsetcomputing,精简指令集计算机)machines,高级risc处理器)、mcu(microcontrollerunit,微控制单元)等各种专用类型架构的处理器。

现代计算设备往往结构和功能复杂,单个、单种处理器已不能满足功能设计指标,需要多个、多种处理器组合搭配,共同完成功能。在多处理器交叉通信时,常见的设计往往使用总线通信技术,可以实现多处理器间大批量数据的快速交互。但是,总线通信技术的软件和硬件设计比较复杂,技术要求高,对于多处理器间的小批量数据交互,假若采用总线通信,则存在总线利用率低,资源浪费等问题。



技术实现要素:

本公开实施例提供了一种多处理器交叉通信装置及方法,能够在同一时间可以保证其中两个处理器之间进行数据的传输,满足小批量数据交互的多处理器应用场景,相比于总线通信技术,实现较为简单,能够节省成本和资源。所述技术方案如下:

一方面,提供了一种多处理器交叉通信装置,所述多处理器交叉通信装置包括:

交换控制器,

存储器,

多个接口控制器,所述接口控制器的数量与处理器的数量相同,第i个所述接口控制器与第i个所述处理器的通信数据接口相匹配,

所述交换控制器用于,确定第k次通信的候选发送方处理器,从所述第k次通信的候选发送方处理器中,确定第k次通信的发送方处理器,向所述第k次通信的发送方处理器发送允许通知,所述允许通知用于指示所述第k次通信的发送方处理器将第k次数据发送至相应接口控制器,第k次数据的接收方处理器为除所述发送方处理器之外的任何一个处理器,i和k均为正整数;

所述存储器用于,存储从所述相应接口控制器接收到的第k次数据;

所述交换控制器还用于,将所述存储器中存储的第k次数据通过所述第k次数据的接收方处理器对应的接口控制器发送至所述接收方处理器。

可选地,所述交换控制器还用于,

接收所述第k次通信的发送方处理器发送的通信结束申请,将发送所述通信结束申请的处理器从所述候选发送方处理器中去除,所述通信结束申请是所述第k次通信的发送方处理器在发送完数据后发送;

在所述确定第k次通信的候选发送方处理器之后,接收所述处理器发送的通信申请,将发送所述通信申请的处理器作为候选发送方处理器。

可选地,所述交换控制器还用于,

当接收到所述第k次通信的发送方处理器发送的通信结束申请、且所述存储器中无数据时,确定所述第k+1次通信的候选发送方处理器,

当所述第k+1次通信的候选发送方处理器包括至少一个处理器时,从所述第k+1次通信的候选发送方处理器中,确定第k+1次通信的发送方处理器,

当所述第k+1次通信的候选发送方处理器中至少一个所述处理器的编号大于所述第k次通信的发送方处理器的编号时,所述第k+1次通信的发送方处理器为顺序排列在所述第k次通信的发送方处理器之后的第一个处理器,

当所述第k+1次通信的候选发送方处理器中各所述处理器的编号均小于所述第k次通信的发送方处理器的编号时,所述第k+1次通信的发送方处理器的编号为各所述处理器的编号中最小编号。

可选地,所述交换控制器还用于,

在所述确定第k次通信的候选发送方处理器之后,接收所述处理器发送的通信撤销申请,将发送所述通信撤销申请的处理器从所述候选发送方处理器中去除,所述通信撤销申请是相应处理器在发送通信申请后发送。

可选地,所述第k次数据包括源地址字段、目的地址字段、以及有效数据字段,

所述源地址字段包括所述第k次通信的发送方处理器的编号,

所述目的地址字段包括所述第k次数据的接收方处理器的编号,

所述有效数据字段包括所述第k次数据。

另一方面,提供了一种多处理器交叉通信方法,所述多处理器交叉通信方法包括:

确定第k次通信的候选发送方处理器,

从所述第k次通信的候选发送方处理器中,确定第k次通信的发送方处理器,

向所述第k次通信的发送方处理器发送允许通知,所述允许通知用于指示所述第k次通信的发送方处理器将第k次数据发送至相应接口控制器,第k次数据的接收方处理器为除所述发送方处理器之外的任何一个处理器,所述接口控制器的数量与所述处理器的数量相同,第i个所述接口控制器与第i个所述处理器的通信数据接口相匹配,

将所述第k次数据通过所述第k次数据的接收方处理器对应的接口控制器发送至所述接收方处理器。

可选地,所述方法还包括:

接收所述第k次通信的发送方处理器发送的通信结束申请,将发送所述通信结束申请的处理器从所述候选发送方处理器中去除,所述通信结束申请是所述第k次通信的发送方处理器在发送完数据后发送;

在所述确定第k次通信的候选发送方处理器之后,接收所述处理器发送的通信申请,将发送所述通信申请的处理器作为候选发送方处理器。

可选地,所述方法还包括:

当接收到所述第k次通信的发送方处理器发送的通信结束申请、且存储器中无数据时,确定所述第k+1次通信的候选发送方处理器,

当所述第k+1次通信的候选发送方处理器包括至少一个处理器时,从所述第k+1次通信的候选发送方处理器中,确定第k+1次通信的发送方处理器,

当所述第k+1次通信的候选发送方处理器中至少一个所述处理器的编号大于所述第k次通信的发送方处理器的编号时,所述第k+1次通信的发送方处理器为顺序排列在所述第k次通信的发送方处理器之后的第一个处理器,

当所述第k+1次通信的候选发送方处理器中各所述处理器的编号均小于所述第k次通信的发送方处理器的编号时,所述第k+1次通信的发送方处理器的编号为各所述处理器的编号中最小编号。

可选地,在所述确定第k次通信的候选发送方处理器之后,所述方法还包括:

接收所述处理器发送的通信撤销申请,将发送所述通信撤销申请的处理器从所述候选发送方处理器中去除,所述通信撤销申请是相应处理器在发送通信申请后发送。

可选地,所述第k次数据包括源地址字段、目的地址字段、以及有效数据字段,

所述源地址字段包括所述第k次通信的发送方处理器的编号,

所述目的地址字段包括所述第k次数据的接收方处理器的编号,

所述有效数据字段包括所述第k次数据。

本公开实施例提供的技术方案带来的有益效果是:

通过第i个接口控制器与第i个处理器的通信数据接口相匹配,单个处理器可以仅提供一个闲置的通信数据接口来实现多处理器的交叉通信;确定第k次通信的候选发送方处理器,从第k次通信的候选发送方处理器中,确定第k次通信的发送方处理器,向第k次通信的发送方处理器发送允许通知,允许通知用于指示第k次通信的发送方处理器将第k次数据发送至相应接口控制器,第k次数据将存储到存储器中,再将存储器中存储的第k次数据通过第k次数据的接收方处理器对应的接口控制器发送至接收方处理器,由于各个接口控制器通过同一存储器交叉连接,在同一时间可以保证其中两个接口控制器之间进行数据的传输,实现了单次通信中发送方处理器和接收方处理器之间的数据传输,可以满足小批量数据交互的多处理器应用场景,该方法相比于总线技术较为简单,能够节省成本和资源。

附图说明

为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1和图2是本公开实施例提供的一种多处理器交叉通信装置的结构框图;

图3是本公开实施例提供的数据的格式示意图;

图4和图5是是本公开实施例提供的一种多处理器交叉通信方法的流程图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。

在本公开中,处理器包括dsp(digitalsignalprocessor,数字信号处理器)、cpu(centralprocessingunit,中央处理器)、arm(advancedrisc(reducedinstructionsetcomputing,精简指令集计算机)machines,高级risc处理器)、mcu(microcontrollerunit,微控制单元)等各种专用类型架构的处理器。这些处理器虽然架构不同,但均有各自的专用通信接口,例如uart(universalasynchronousreceiver/transmitter,通用异步收发传输器)、i2c(inter-integratedcircuit,内置集成电路)、spi(serialperipheralinterface,串行外设接口)等通用通信接口。但是单个处理器的通信接口数量是有限的,一个通信接口仅支持与一个处理器通信,这样,若将单个处理器依次与各个处理器相连,则将受限于通信接口的数量,在实际执行时存在难度。

考虑到专用通信接口可以分为通信控制接口和通信数据接口,通信控制接口如i/o(输入/输出)接口,通信数据接口如uart、i2c、spi,并且,处理器通常都具备i/o接口、uart、i2c、spi等通用通信接口,其中除硬件设计本身要使用其中部分接口外,往往有闲置不用的接口。本公开可在不影响原有硬件设计的原则上,选择闲置不用的通用通信接口资源,实现多cpu间的交叉通信。本方法对每个cpu只需要使用一个通信数据接口(如uart、i2c或spi)和一个通信控制接口(如i/o接口),且通信数据接口的种类对其它cpu透明。

图1和图2是本公开实施例提供的一种多处理器交叉通信装置的结构框图。在硬件实现上,该多处理器交叉通信装置可以采用fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)。参见图1和图2,该多处理器交叉通信装置100包括交换控制器11、存储器12和多个接口控制器13。其中,接口控制器13的数量与处理器(待交叉通信的处理器)的数量(假设有n个)相同,第i个接口控制器13与第i个处理器的通信数据接口相匹配。i为正整数。

交换控制器11用于,确定第k次通信的候选发送方处理器,从第k次通信的候选发送方处理器中,确定第k次通信的发送方处理器,向第k次通信的发送方处理器发送允许通知,该允许通知用于指示第k次通信的发送方处理器将第k次数据发送至相应接口控制器13,接收方处理器为除发送方处理器之外的任何一个处理器。k为正整数。

存储器12用于,存储从相应接口控制器13接收到的第k次数据。

交换控制器11还用于,将存储器12中存储的第k次数据通过第k次数据的接收方处理器对应的接口控制器13发送至接收方处理器。

其中,交换控制器具有多个通信控制接口(可以是i/o接口),通信控制接口的数量与待交叉通信的处理器的数量相同。交换控制器的第i个通信控制接口与第i个处理器的通信控制接口电连接。

示例性地,交换控制器11通过本交换控制器的通信控制接口向第k次通信的发送方处理器的通信控制接口发送允许通知。

在本公开实施例中,通过第i个接口控制器13与第i个处理器的通信数据接口相匹配,单个处理器可以仅提供一个闲置的通信数据接口来实现多处理器的交叉通信;确定第k次通信的候选发送方处理器,从第k次通信的候选发送方处理器中,确定第k次通信的发送方处理器,向第k次通信的发送方处理器发送允许通知,允许通知用于指示第k次通信的发送方处理器将第k次数据发送至相应接口控制器13,第k次数据将存储到存储器12中,再将存储器12中存储的第k次数据通过第k次数据的接收方处理器对应的接口控制器13发送至接收方处理器,由于各个接口控制器13通过同一存储器12交叉连接,在同一时间可以保证其中两个接口控制器13之间进行数据的传输,实现了单次通信中发送方处理器和接收方处理器之间的数据传输,可以满足小批量数据交互的多处理器应用场景,该方法相比于总线技术较为简单,能够节省成本和资源。

对于多个接口控制器13,其类型(如uart、i2c或spi)可以相同,也可以不同,依据cpu适用情况而定。

候选发送方处理器随时间可以不断更新。对于候选发送方处理器的更新,可以包括如下三种方式。

第一种方式中,交换控制器11还用于,接收第k次通信的发送方处理器发送的通信结束申请,将发送通信结束申请的处理器从候选发送方处理器中去除,通信结束申请是第k次通信的发送方处理器在发送完数据后发送。

第二种方式中,交换控制器11还用于,在确定第k次通信的候选发送方处理器之后,接收处理器发送的通信申请,将发送通信申请的处理器作为候选发送方处理器。

例如,当cpua向cpub发送数据时,先通过通信控制接口向交换控制器11发送通信请求,申请线路使用权。

第三种方式中,交换控制器11还用于,在确定第k次通信的候选发送方处理器之后,接收处理器发送的通信撤销申请,将发送通信撤销申请的处理器从候选发送方处理器中去除,通信撤销申请是相应处理器在发送通信申请后发送。

由于在同一时间支持其中两个接口控制器13之间进行数据的传输,为了保证资源的平衡,在本公开中,采用轮询方式分配通信权利。

示例性地,交换控制器11还用于,

当接收到第k次通信的发送方处理器发送的通信结束申请、且存储器12中无数据时,确定第k+1次通信的候选发送方处理器。

当第k+1次通信的候选发送方处理器包括至少一个处理器时,从第k+1次通信的候选发送方处理器中,确定第k+1次通信的发送方处理器。

当第k+1次通信的候选发送方处理器中至少一个处理器的编号大于第k次通信的发送方处理器的编号时,确定第k+1次通信的发送方处理器为顺序排列在第k次通信的发送方处理器之后的第一个处理器。

当第k+1次通信的候选发送方处理器中各处理器的编号均小于第k次通信的发送方处理器的编号时,确定第k+1次通信的发送方处理器的编号为各处理器的编号中最小编号。

示例性地,交换控制器11还用于,通过通信控制接口向第k次数据的接收方处理器发送接收通知,以指示第k次数据的接收方处理器接收数据,将存储器12中存储的第k次数据通过第k次数据的接收方处理器对应的接口控制器13发送至接收方处理器。

在具体实现时,交换控制器11与各个处理器之间的通信控制接口通过数据线电连接,该数据线承载“指令通道”,可以使用不同电平值分别指示交换控制器11与各个处理器之间的指令(例如通信申请/通信撤销申请/通信结束申请/允许通知/禁止通知/接收通知)。相应地,接口控制器13与相应处理器的通信数据接口之间构成“数据通道”,用于传输数据。

由于在同一时间支持其中两个接口控制器13之间进行数据的传输,为了保证资源的平衡,在本公开中,每一次通信交互的数据以固定格式传输,保证每一次通信交互的数据长度是相同的。

图3是本公开实施例提供的数据的格式示意图。参见图3,示例性地,第k次数据包括源地址字段、目的地址字段、以及有效数据字段。

源地址字段包括第k次通信的发送方处理器的编号。

目的地址字段包括第k次数据的接收方处理器的编号。

有效数据字段包括第k次数据。

示例性地,第k次数据还可以包括长度字段,用于表示有效数据的长度。

图4是本公开实施例提供的一种多处理器交叉通信方法的流程图,该方法流程可以由多处理器交叉通信装置执行。参见图4,该多处理器交叉通信方法流程包括如下步骤。

步骤301、确定第k次通信的候选发送方处理器。

步骤302、从第k次通信的候选发送方处理器中,确定第k次通信的发送方处理器。

步骤303、向第k次通信的发送方处理器发送允许通知。

其中,允许通知用于指示第k次通信的发送方处理器将第k次数据发送至相应接口控制器,接收方处理器为除发送方处理器之外的任何一个处理器,接口控制器的数量与处理器的数量相同,第i个接口控制器与第i个处理器的通信数据接口相匹配。

步骤304、将第k次数据通过第k次数据的接收方处理器对应的接口控制器发送至接收方处理器。

示例性地,步骤303还可以包括:向第k次通信的候选发送方处理器中除第k次通信的发送方处理器之外的其他处理器发送禁止通知,以指示其他处理器继续等待。其他处理器收到禁止通知后,可以向多处理器交叉通信装置的交换控制器发送通信撤销申请。

图5是本公开实施例提供的一种多处理器交叉通信方法的流程图。参见图5,示例性地,该方法流程还可以包括如下步骤。

步骤305、接收第k次通信的发送方处理器发送的通信结束申请,将发送通信结束申请的处理器从候选发送方处理器中去除,通信结束申请是第k次通信的发送方处理器在发送完数据后发送。

步骤306、在确定第k次通信的候选发送方处理器之后,接收处理器发送的通信申请,将发送通信申请的处理器作为候选发送方处理器。

步骤307、接收处理器发送的通信撤销申请,将发送通信撤销申请的处理器从候选发送方处理器中去除,通信撤销申请是相应处理器在发送通信申请后发送。

在本公开实施例中,下一次通信由上一次通信的发送方发送通信结束申请触发。基于此,在步骤305之后,该方法还可以包括如下步骤。

步骤308、当接收到第k次通信的发送方处理器发送的通信结束申请、且存储器中无数据时,确定第k+1次通信的候选发送方处理器。

当第k+1次通信的候选发送方处理器包括至少一个处理器时,从第k+1次通信的候选发送方处理器中,确定第k+1次通信的发送方处理器。

当第k+1次通信的候选发送方处理器中至少一个处理器的编号大于第k次通信的发送方处理器的编号时,第k+1次通信的发送方处理器为顺序排列在第k次通信的发送方处理器之后的第一个处理器。

当第k+1次通信的候选发送方处理器中各处理器的编号均小于第k次通信的发送方处理器的编号时,第k+1次通信的发送方处理器的编号为各处理器的编号中最小编号。

其中,第k+1次通信的具体过程可以参见第k次通信的过程(可以参见步骤302~步骤304),在此不再赘述。

参见图3,第k次数据包括源地址字段、目的地址字段、以及有效数据字段。

源地址字段(destinationaddr)包括第k次通信的发送方处理器的编号。

目的地址字段(sourceaddr)包括第k次数据的接收方处理器的编号。

有效数据字段(payload)包括第k次数据。

该多处理器交叉通信装置可以应用在电路板级间多cpu的交叉通信中。假设该多处理器交叉通信装置由fpga实现,fpga包含uart、i2c、spi等接口控制器、交换控制器以及数据缓冲寄存器(存储器)三部分。该fpga与各个待交叉通信的处理器形成交叉通信系统,该系统中所有的通用接口控制器均分配一个设备地址,该设备地址可以与相应的处理器的通信数据接口的地址对应,比如从1~n。下面以电路板级间多cpu的交叉通信为例,并结合图2,详细介绍一下方法流程,该方法流程包括如下步骤(1)-(9)。

(1)当其中cpua到cpub需要通信时,cpua组好数据通信帧,同时通过通信控制接口向交换控制器发送通信申请,以申请数据通道使用权。

如图3所示,发送的数据通信帧格式为:其中源地址为与cpua对接的fpga接口控制器(假设为串口控制器)的地址,目的地址为与目的处理器cpub对接的fpga接口控制器(假设为i2c控制器)的地址,长度为数据帧的数据段的长度。

交换控制器将cpua加入到候选发送方处理器中,候选发送方处理器意味着处理器在排队获取数据通道使用权。

(2)当数据通道空闲(无处理器发送数据)时,交换控制器对当前排队中的所有通信申请进行仲裁,仲裁的方式为1~n轮询,轮询起始序号为上一次完成通信的通信发起设备号加1。

(3)当轮询未循环到cpua时,cpua的发送功能阻塞不可用,此时只具备接受功能,能够接收fpga的接口控制器发送过来的数据。

需要说明的是,在此期间,cpua可以放弃对数据通道的申请,例如发送通道撤销申请。若如此,则轮询将跳过cpua。

(4)当交换控制器将数据通道仲裁给cpua后,交换控制器通过控制接口发送允许通知给cpua,以通知其获得数据通道使用权,此时cpua具备发送功能,其它cpu的发送功能被阻塞。

(5)cpua获得数据通道使用权后,可以使用数据通道发送不超过一帧数据,然后释放数据通道(向交换控制器发送通信结束申请),以通知交换控制器其对数据通道使用完毕。

(6)交换控制器发现cpua释放数据通道后,检查数据缓冲存储器是否有数据帧需要处理,若没有数据需要处理,则开始新一轮数据通道仲裁;若有数据帧需要处理,则待数据帧处理完毕后再开始新一轮数据通道仲裁。

(7)当数据缓冲存储器有数据帧需要处理时,交换控制器根据数据帧中的目的地址,发送通知信号(接收通知)给与对应fpga接口控制器对接的cpu,同时启动对应的fpga接口控制器。

(8)cpub收到通知信号后,开始从相应fpga接口控制器读取数据帧。

(9)当fpga将数据缓冲存储器中的数据帧全部发送完毕后,数据通道即处于空闲状态,此时通信交换控制器开始新一轮仲裁,以此循环。

上述整个通信过程中,数据通道使用权被按照时隙分割,单个cpu每次仅使用单个时隙,能够往其它cpu发送一个数据帧。数据通道使用权在所有有使用需求的cpu间快速轮转,从整体看,所有cpu使用单种通信控制器即可在任意时刻往任意其它cpu发送数据,实现了多cpu间使用单个通用通信接口控制器交叉通信的过程。

本公开中,目的在于实现在通信数据接口数量和类型受限的情况下电路板级多cpu间的交叉通信。当cpua向cpub发送数据时,先向交换控制器申请线路使用权。在fpga上实现的交换控制器在查询到通信线路空闲后,将线路使用权分配给cpua,同时通知cpua可以使用该线路。fpga使用与cpua通信的数据接口接收数据帧,根据数据帧的目的地址通知cpub准备接收数据,然后将缓冲数据帧使用与cpub的通信数据接口发送到cpub。当有多个cpu同时申请线路时,由交换控制器分配使用权给其中一个cpu。未收到授权的cpu,其发送功能被阻塞,只具备接收功能,直至其被授权。通过这种方式实现了在通信数据接口数量和类型受限的情况下电路板级多cpu间的交叉通信

需要说明的是:上述实施例提供的多处理器交叉通信装置在触发多处理器交叉通信业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的多处理器交叉通信装置与多处理器交叉通信方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1