
1.本发明实施例涉及soc设计技术领域,尤其涉及一种多核通讯系统。
背景技术:2.随着电子电路技术以及通信技术的发展,电子电路向微型化和集成化发展,片上系统(system on chip,soc)的应用越来越普及。soc总体上包含嵌入集成电路或芯片中并藕接到本地总线的多个中央处理器单元(cpu)核。cpu核可以被进一步布置成一个或多个计算集群。soc总体上可以进一步包含硬件组件和其他处理器。
3.但是,soc中多cpu核通信时,通常采用公共内存进行数据交互,例如可以引入cache结构将公共内存的数据缓存到本地,利用本身的结构特性来加速多核获取数据的过程。由于每个cpu核通过cache获取数据,因此,对于同一个存储位置的数据来说,不同的处理器可能获取到不同的数据。例如,由于多cpu核对数据访问先后顺序发生冲突时,导致的不同顺序下获取到的数据不一致。
4.因此,亟待提出一种新的soc中多cpu核通信机制,解决数据获取不一致的问题。
技术实现要素:5.本发明实施例提供了一种多核通讯系统,可以为各cpu核分配固定的地址用于处理信息的发送或者接收,避免数据获取不一致的情况。
6.本发明实施例提供了一种多核通讯系统,该系统包括多个cpu核和核间通讯模块,在所述核间通讯模块中为每个所述cpu核分别分配输入缓存地址和输出缓存地址,其中:
7.所述cpu核,用于向所述核间通讯模块中匹配的输入缓存地址写入指向其他cpu核的处理信息,和/或接收所述核间通讯模块匹配的输出缓存地址中缓存的处理信息;
8.所述核间通讯模块,用于从输入缓存地址处获取处理信息进行解析,根据解析结果将处理信息写入与所指向的cpu核匹配的输出缓存地址内,并将输出缓存地址中的处理信息发送至所述指向的cpu核。
9.可选的,各所述cpu核和所述核间通讯模块分别挂载于多核通讯系统的内部总线上进行信息交互。
10.可选的,所述核间通讯模块包括:多个输入缓存处理单元、多个输出缓存处理单元以及逻辑控制电路;
11.其中,逻辑控制电路分别与各输入缓存处理单元和各输出缓存处理单元相连,各所述输入缓存处理单元与为cpu核分配的所述输入缓存地址一一关联;各所述输出缓存处理单元与为cpu核分配的所述输出缓存地址一一关联;
12.所述输入缓存处理单元,用于缓存匹配的cpu核通过所述核间通讯模块写入的处理信息,并将处理信息通过所述逻辑控制电路传输至所述输出缓存处理单元;
13.输出缓存处理单元,用于缓存所述逻辑控制电路传输的处理信息,并将处理信息输出至相匹配的所述指向的cpu核;
14.逻辑控制电路,用于从所述输入缓存处理单元获取处理信息进行解析,根据解析结果将处理信息传输至所述输出缓存处理单元。
15.可选的,所述输入缓存处理单元具体用于:
16.根据缓存的处理信息,确定所述输入缓存处理单元自身的空满状态;
17.在所述空满状态不为满时,缓存匹配的cpu核通过所述核间通讯模块写入的处理信息。
18.可选的,所述输出缓存处理单元具体用于:
19.获取匹配的cpu核的唤醒状态;
20.如果所述匹配的cpu核处于唤醒,则将处理信息输出至所述匹配的cpu核;
21.如果所述匹配的cpu核处于休眠状态,则根据缓存的处理信息通过中断标识置位唤醒所述匹配的cpu核,并将处理信息输出至所述匹配的cpu核。
22.可选的,所述处理信息的信息格式包括:信息本体、信息结束标识、信息发送端标识以及信息接收端标识;
23.其中,所述信息本体,用于表示信息的具体内容,至少一个所述信息本体构成完整信息的具体内容;
24.所述信息结束标识,用于表示所述完整信息是否结束;
25.所述信息发送端标识,用于表示通过所述核间通讯模块向匹配的输入缓存地址写入指向其他cpu核的处理信息的cpu核;
26.所述信息接收端标识,用于表示通过所述核间通讯模块从匹配的输出缓存地址接收处理信息的指向cpu核。
27.可选的,所述逻辑控制电路,具体用于:
28.从所述输入缓存处理单元获取处理信息,并根据所述处理信息的信息格式确定所述信息接收端标识;
29.将处理信息传输至与所述信息接收端标识对应的cpu核所匹配的输出缓存处理单元。
30.可选的,所述cpu核,还用于:
31.根据接收的处理信息的信息格式确定所述信息发送端标识,并通过所述核间通讯模块针对处理信息答复与所述信息发送端标识对应的cpu核。
32.可选的,所述逻辑控制电路由多个逻辑门电路组合构成;和/或
33.所述输入缓存处理单元和所述输出缓存处理单元为先入先出存储器。
34.可选的,所述多核通讯系统配置于片上系统soc中。
35.本发明实施例的技术方案,通过设计包含多个cpu核和核间通讯模块的多核通讯系统,在所述核间通讯模块中为每个所述cpu核分别分配输入缓存地址和输出缓存地址;通过cpu核向所述核间通讯模块中匹配的输入缓存地址写入指向其他cpu核的处理信息,和/或接收所述核间通讯模块匹配的输出缓存地址中缓存的处理信息;通过核间通讯模块从输入缓存地址处获取处理信息进行解析,根据解析结果将处理信息写入与所指向的cpu核匹配的输出缓存地址内,并将输出缓存地址中的处理信息发送至所述指向的cpu核,解决了多cpu核通讯的问题,实现了为各cpu核分配固定的地址用于处理信息的发送或者接收,无需采用公共内存进行数据交互,可以避免数据获取不一致情况的效果。
附图说明
36.图1是本发明实施例提供一种多核通讯系统的结构示意图;
37.图2是本发明实施例提供的一种处理信息的信息格式示意图;
38.图3是本发明实施例提供的一种核间通讯模块的结构示意图;
39.图4是本发明实施例提供的一种多核通信方法的流程图。
具体实施方式
40.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
41.图1是本发明实施例提供一种多核通讯系统的结构示意图,本实施例可适用于在soc多核系统中实现多cpu核进行通信的情况,如图1所示,该系统具体包括:多个cpu核110和核间通讯模块120,在所述核间通讯模块120中为每个所述cpu核110分别分配输入缓存地址和输出缓存地址。
42.其中,所述cpu核110,用于向所述核间通讯模块120中匹配的输入缓存地址写入指向其他cpu核110的处理信息,和/或接收所述核间通讯模块120匹配的输出缓存地址中缓存的处理信息。
43.示例性的,可以为cpu核x分配固定的输入缓存地址msg_in_x,和固定的输出缓存地址msg_out_x。其中,x为序号。例如,为cpu核1分配固定的输入缓存地址msg_in_1,固定的输出缓存地址msg_out_1。当cpu核x需要向其他cpu核y发送处理消息时,可以将处理消息写入输入缓存地址msg_in_x内。其中,y可以是不同于x的序号。当输出缓存地址msg_out_y存在处理消息时,cpu核y可以从输出缓存地址msg_out_y读取处理消息。cpu核y可以根据处理消息执行相应的操作,可以是soc灵活设置的,本发明实施例对此不做具体的限定。
44.如图1所示,所述核间通讯模块120,用于从输入缓存地址处获取处理信息进行解析,根据解析结果将处理信息写入与所指向的cpu核110匹配的输出缓存地址内,并将输出缓存地址中的处理信息发送至所述指向的cpu核110。
45.其中,核间通讯模块对处理信息的解析可以是确定处理信息所对应的指向cpu核。或者,核间通讯模块对处理信息的解析可以是确定处理信息所对应的指向cpu核,以及发送处理信息的cpu核。处理信息中可以包含发送处理信息的cpu核的相关信息,以及指向cpu核的相关信息。
46.在本发明实施例的一个可选实施方式中,处理信息的信息格式包括:信息本体、信息结束标识、信息发送端标识以及信息接收端标识;其中,所述信息本体,用于表示信息的具体内容,至少一个所述信息本体构成完整信息的具体内容;所述信息结束标识,用于表示所述完整信息是否结束;所述信息发送端标识,用于表示通过所述核间通讯模块向匹配的输入缓存地址写入指向其他cpu核的处理信息的cpu核;所述信息接收端标识,用于表示通过所述核间通讯模块从匹配的输出缓存地址接收处理信息的指向cpu核。
47.图2是本发明实施例提供的一种处理信息的信息格式示意图,如图2所示,信息格式包括信息本体(message)210、信息结束标识(end)220、信息发送端标识(src_id)230以及信息接收端标识(dst_id)240。
48.在本发明实施例中,处理信息可以表示一个完整信息,或者可以通过多个处理信息表示一个完整信息。当通过多个处理信息表示一个完整信息时,处理信息的发送以及接收处理方式是相似的。可以对多个处理信息进行同时发送或者分开发送,本发明实施例不做具体限定。
49.示例性的,如图2所示,message可以占用处理信息中的第0至23位,end可以占用处理信息中的第24至25位,src_id可以占用处理信息中的第26至28位,dst_id可以占用处理信息中的第29至31位。其中,cpu核可以具有唯一的标识,例如src_id可以占用处理信息中的第26至28位可以表示8个cpu核,cpu核0至cpu核7的标识可以依次是3’b000,3’b001,3’b010,3’b011,3’b100,3’b101,3’b110,3’b111。其中,“3’b”表示三位二进制数值。在本发明实施例中,可以根据soc中的cpu核个数对应的增加或者减少src_id以及dst_id的占用位数,以保证cpu核具有唯一的标识。
50.又一示例性的,如图2所示,可以采用2’b01表示完整信息结束,2’b00表示完整信息未结束。其中,完整信息结束表示当前的处理信息是完整信息中的最后一部分。
51.如图1所示,在本发明实施例的一个可选实施方式中,各所述cpu核110和所述核间通讯模块120分别挂载于多核通讯系统的内部总线上进行信息交互。其中,总线可以采用标准soc内部总线,方便soc的集成。核间通讯模块120可以具有符合标准soc内部总线标准(apb/ahb/axi等)的接口,如片上总线接口(amba接口)。cpu核110与核间通讯模块120之间的通信可以是通过总线实现的。
52.图3是本发明实施例提供的一种核间通讯模块的结构示意图。如图3所示,在本发明实施例的一个可选实施方式中,核间通讯模块120包括:多个输入缓存处理单元(msg_in_x单元)310、多个输出缓存处理单元(msg_out_x单元)320以及逻辑控制电路330。
53.其中,逻辑控制电路330分别与各输入缓存处理单元310和各输出缓存处理单元320相连,各所述输入缓存处理单元310与为cpu核分配的所述输入缓存地址(msg_in_x)一一关联;各所述输出缓存处理单元320与为cpu核分配的所述输出缓存地址(msg_out_x)一一关联。
54.所述输入缓存处理单元310,用于缓存匹配的cpu核通过所述核间通讯模块120写入的处理信息,并将处理信息通过所述逻辑控制电路330传输至所述输出缓存处理单元320。
55.示例性的,cpu核1准备向cpu核7发送处理消息。消息长度为6个字节长度。cpu核1的标识可以是3’h1,cpu核7的标识可以是3’h7。其中,“3’h”表示三位数值,通过十六进制编码生成,也即3’h1=3’b001。
56.cpu核1可以向核间通讯模块120中的输入缓存处理单元(msg_in_1单元)310写入需要发送的处理消息。处理消息中的src_id可以是3’h1,dst_id可以是3’h7。消息长度为6个字节可以分为两个消息本体,也即存在两条处理消息。根据本发明实施例中对处理消息的消息格式的具体定义(可参考图2),cpu核1向cpu核7发送的处理消息的消息格式可以是32’he4zz_zzzz,32’he5zz_zzzz。其中,z表示十六进制数值。
57.输入缓存处理单元(msg_in_1单元)310可以将处理消息32’he4zz_zzzz,32’he5zz_zzzz传输至逻辑控制电路330。
58.如图3所示,逻辑控制电路330,用于从所述输入缓存处理单元310获取处理信息进
行解析,根据解析结果将处理信息传输至所述输出缓存处理单元320。
59.如图3所示,在本发明实施例的一个可选实施方式中,逻辑控制电路330,具体用于:从所述输入缓存处理单元310获取处理信息,并根据所述处理信息的信息格式确定所述信息接收端标识;将处理信息传输至与所述信息接收端标识对应的cpu核所匹配的输出缓存处理单元320。
60.示例性的,逻辑控制电路330可以从处理消息32’he4zz_zzzz,32’he5zz_zzzz中解析出29至31位的数值为3’h7,即信息接收端标识(dst_id)为3’h7。逻辑控制电路330可以确定处理消息指向cpu核为cpu核7。逻辑控制电路330可以将处理消息32’he4zz_zzzz,32’he5zz_zzzz传输至cpu核7匹配的输出缓存处理单元(msg_out_7单元)320。
61.又一示例性的,逻辑控制电路330还可以从处理消息32’he4zz_zzzz,32’he5zz_zzzz中解析出26至28位的数值为3’h1,即信息发送端标识(src_id)为3’h1。
62.如图3所示,输出缓存处理单元320,用于缓存所述逻辑控制电路330传输的处理信息,并将处理信息输出至相匹配的所述指向的cpu核。
63.示例性的,输出缓存处理单元(msg_out_7单元)320可以缓存逻辑控制电路330传输的处理信息32’he4zz_zzzz,32’he5zz_zzzz。cpu核7可以通过总线将在输出缓存处理单元(msg_out_7单元)320中读取处理信息32’he4zz_zzzz,32’he5zz_zzzz。
64.在本发明实施例的一个可选实施方式中,cpu核,还用于:根据接收的处理信息的信息格式确定所述信息发送端标识,并通过所述核间通讯模块针对处理信息答复与所述信息发送端标识对应的cpu核。
65.示例性的,cpu核7也可以从接收的处理消息32’he4zz_zzzz,32’he5zz_zzzz中解析出信息发送端标识(src_id)为3’h1,便于cpu核7针对处理消息向cpu核1发送反馈信息,或者进行其他处理。其中,cpu核7通过所述核间通讯模块向cpu核1进行针对处理信息答复时,可以是与cpu核1向cpu核7发送处理消息相似的过程,这里不再赘述。
66.在上述实施方式的基础上,可选的,输入缓存处理单元具体用于:根据缓存的处理信息,确定所述输入缓存处理单元自身的空满状态;在所述空满状态不为满时,缓存匹配的cpu核通过所述核间通讯模块写入的处理信息。
67.示例性的,如图3所示,输入缓存处理单元310可以根据当前缓存的处理信息的数量以及自身可缓存数量的大小,确定自身的空满状态。例如,可以通过计数器或者寄存器等产生溢出标识,表示对应的输入缓存处理单元当前处于满状态;无溢出标识时,可以表示输入缓存处理单元当前不为满状态,可以继续写入处理信息。例如,可以通过x_full_int表示输入缓存处理单元msg_in_x处于满状态。在输入缓存处理单元msg_in_x处于满状态时,cpu核x无法向输入缓存处理单元msg_in_x写入处理信息;在x_full_int标识消除时,cpu核x可以向输入缓存处理单元msg_in_x继续写入处理信息。
68.其中,对于输入缓存处理单元msg_in_x中的处理信息,可以在传输至匹配的输出缓存处理单元msg_out_y后进行删除;或者可以在cpu核x收到cpu核y针对处理信息的答复时,删除输入缓存处理单元msg_in_x中的处理信息;或者可以在输入缓存处理单元msg_in_x处于满状态时对缓存的处理信息进行删除,以使输入缓存处理单元msg_in_x可以有足够的缓存空间对接下来的处理信息进行缓存。
69.在上述实施方式的基础上,可选的,输出缓存处理单元具体用于:获取匹配的cpu
核的唤醒状态;如果所述匹配的cpu核处于唤醒,则将处理信息输出至所述匹配的cpu核;如果所述匹配的cpu核处于休眠状态,则根据缓存的处理信息通过中断标识置位唤醒所述匹配的cpu核,并将处理信息输出至所述匹配的cpu核。
70.示例性的,本发明实施例中的cpu核可以处于唤醒状态也可以处于休眠状态。为了实现cpu核向处于休眠状态的指向cpu核发送处理消息时的信息交互过程,如图3所示,在本发明实施例中,输出缓存处理单元320可以具有中断标识(x_not_empty_int)。当输出缓存处理单元(msg_out_x单元)320中存在缓存的处理信息时,中断标识(x_not_empty_int)可以置位。处于休眠状态的cpu核x根据中断标识(x_not_empty_int)的置位,可以被中断唤醒。输出缓存处理单元(msg_out_x单元)320可以将处理消息传输至处于唤醒状态的cpu核x。具体的,可以是处于唤醒状态的cpu核x向对应的输出缓存处理单元(msg_out_x单元)320进行处理消息的读取。
71.在上述实施方式的基础上,可选的,逻辑控制电路由多个逻辑门电路组合构成;和/或,所述输入缓存处理单元和所述输出缓存处理单元为先入先出存储器。
72.其中,核间通讯模块中的逻辑控制电路可以是通过多个逻辑门电路组合构成的,例如可以包含与、或、非、异或等逻辑门,可以实现译码,对处理信息进行解析。尤其是实现处理消息中指向cpu核的标识解析。
73.输入缓存处理单元和输出缓存处理单元可以为先入先出存储器。对于各输入缓存处理单元和各输出缓存处理单元可以分别对应一个先入先出存储器,可以避免处理信息在缓存时乱序的情况,保证处理信息先进先出,各cpu核对应的处理信息之间也不会存在干扰影响。
74.在上述实施方式的基础上,可选的,所述多核通讯系统配置于soc中。其中,cpu核可以是soc中的处理单元,可以设置在soc的总线上。核间通讯模块可以是新布置于soc中的模块,其中的输入缓存处理单元和输出缓存处理单元可以是soc中的存储器,例如可以是先入先出存储器。核间通讯模块可以设置有总线接口,挂载在soc的总线上,通过总线实现与cpu核的通信,解决多cpu核之间通信的问题。
75.本实施例的技术方案,通过设计包含多个cpu核和核间通讯模块的多核通讯系统,在所述核间通讯模块中为每个所述cpu核分别分配输入缓存地址和输出缓存地址;通过cpu核向所述核间通讯模块中匹配的输入缓存地址写入指向其他cpu核的处理信息,和/或接收所述核间通讯模块匹配的输出缓存地址中缓存的处理信息;通过核间通讯模块从输入缓存地址处获取处理信息进行解析,根据解析结果将处理信息写入与所指向的cpu核匹配的输出缓存地址内,并将输出缓存地址中的处理信息发送至所述指向的cpu核,解决了多cpu核通讯的问题,实现了为各cpu核分配固定的地址用于处理信息的发送或者接收,无需采用公共内存进行数据交互,可以避免数据获取不一致情况的效果。
76.图4是本发明实施例提供的一种多核通信方法的流程图。如图4所示,在实际使用时,本发明实施例提供的技术方案可以具有如下的使用过程:
77.假定cpu核1向cpu核7发送处理消息,消息长度为6个字节长度(48位),cpu核1不知道cpu核7处于什么状态,cpu核7可能处于休眠状态。cpu核1的标识可以是3’h1,cpu核7的标识可以是3’h7。
78.步骤410、cpu核1向核间通讯模块中的输入缓存处理单元(msg_in_1单元)写入需
要发送的处理消息。
79.其中,处理消息为32’he4zz_zzzz,32’he5zz_zzzz。其中,z表示十六进制数值。
80.步骤420、核间通讯模块根据处理消息确定信息接收端标识(dst_id)。
81.具体的,核间通讯模块根据处理消息32’he4zz_zzzz,32’he5zz_zzzz中解析出29至31位的数值为3’h7,确定信息接收端标识(dst_id)为3’h7。
82.步骤430、信息接收端标识(dst_id)对应的输出缓存处理单元缓存处理消息,并将中断标识置位以唤醒对应的cpu核。
83.具体的,信息接收端标识3’h7对应的输出缓存处理单元(msg_out_7单元)缓存处理消息,并将中断标识(7_not_empty_int)置位,唤醒cpu核7。
84.步骤440、处于唤醒状态的cpu核从对应的输出缓存处理单元读取处理消息,并解析处理消息确定信息发送端标识(src_id)。
85.具体的,cpu核7可以读取输出缓存处理单元(msg_out_7单元)缓存的处理消息32’he4zz_zzzz,32’he5zz_zzzz,并解析出信息发送端标识(src_id)为3’h1,可以确定处理消息是cpu核1发送的。
86.步骤450、读取处理信息的cpu核根据处理消息执行对应的操作,或者通过核间通讯模块回复发送处理消息的cpu核。
87.具体的,cpu核7可以根据处理消息32’he4zz_zzzz,32’he5zz_zzzz执行相应的操作,或者,cpu核7可以向cpu核1进行信息回复。具体的实现方式可以是soc灵活约定的。
88.通过上述步骤可以实现多cpu核之间的通信,可以避免多cpu核在公共内存获取数据造成数据不一致的情况;也可以避免cpu核向其他cpu核发送处理消息时,需要特意发送中断信息以唤醒其他cpu核,并在接收到唤醒状态反馈时才进行处理消息发送的情况,可以减少信息交互的过程,提高处理信息传输速度。
89.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。