主从架构芯片的主从核通信方法及系统与流程

文档序号:28699074发布日期:2022-01-29 12:55阅读:281来源:国知局
主从架构芯片的主从核通信方法及系统与流程

1.本发明涉及集成电路设计技术领域,尤其涉及一种主从架构芯片的主从核通信方法及系统。


背景技术:

2.在高性能的边缘处理器芯片中,由于应用较为复杂且任务实时性要求高,通常采用主核mp(main processor)与从核cp(co-processor)结合的多核处理器架构。主核mp性能较强通常负责处理较复杂的计算任务,一般是处理数据量较大、中断多且任务处理时间长的模块,比如以太网,ddr,sata,pcie等高速外设模块。上述模块的处理往往使得主核cpu核的负载比较重,导致一些实时性要求高的模块可能得不到及时响应,进而影响整个系统性能,为提高系统的实时性及整体性能需求,现有技术中会把一些实时性要求高的模块驱动放在从核cp控制,也就是说,通过从核cp 来负责处理简单事务性、实时性要求较高的计算任务。
3.当前,采用主从架构的系统芯片中,主核mp和从核cp的控制实现方式主要有以下两种:第一种实现方式,是主核mp和从核cp系统各自独立运行,二者分别具备各自的操作系统os(operation system)和图像界面gui(graphics user interface),主核mp和从核cp负责的模块都各自对立控制。第二种实现方式,是主核mp和从核cp系统运行各自的操作系统os,但图像界面gui只运行在主核mp上,业务请求在内核空间实现从主核mp到从核cp的传递。
4.然而,上述主核mp和从核cp的控制实现方式普遍存在主核mp的负载较重而从核cp未得以充分利用的问题,主核mp和从核cp之间的负载不均衡显然会影响整体的cpu利用率。


技术实现要素:

5.本发明的目的在于:克服现有技术的不足,提供了一种主从架构芯片的主从核通信方法及系统。本发明通过设置主从核通信系统实现主核mp和从核cp的通信功能,使用主核适配驱动结合从核守护进程的方式,在不改变模块内核驱动的情况下,实现了主核和从核的数据通信,使得主核mp能够控制从核cp同一模块实现应用功能,能够均衡主核mp和从核cp负载。
6.为实现上述目标,本发明提供了如下技术方案:一种主从架构芯片的主从核通信方法,包括如下步骤:主核的模块应用线程发出请求到模块驱动适配单元,所述模块驱动适配单元对应着模块应用线程的内核驱动设置,用于获取模块应用线程发送的请求数据并将所述请求数据放入主核c2c控制器对应的发送内存中;其中,所述主核和从核共享内存,主核的发送内存是从核的接收内存,从核的发送内存是主核的接收内存;主核c2c控制器发送中断信号至从核的从核c2c控制器;从核c2c控制器从共享的接收内存中读取前述请求数据,并通知从核中的模块守
护进程;所述模块守护进程常驻内存,用以监听从核c2c控制器读取到的请求数据并解析该请求数据,以及将该请求数据发送到从核的模块驱动单元进行处理;模块驱动单元在处理完成后把请求数据处理结果返回到模块守护进程,再通过从核c2c控制器把请求数据处理结果写入从核的发送内存;模块守护进程将前述请求数据处理结果通过从核c2c控制器发送到主核c2c控制器,主核c2c控制器将接收的该请求数据处理结果通过模块驱动适配单元返回给模块应用线程。
7.进一步,所述主核和从核之间设置有n个硬件中断线以支持主核同时控制n个物理模块在从核进行处理,每个硬件中断线对应一个模块,每个模块配置有发送内存和接收内存两个内存,发送内存用于进行模块数据的发送,接收内存用于进行模块数据的接收。
8.进一步,主核和从核之间通过主核c2c控制器和从核c2c控制器相互发送中断信号,主核c2c控制器能够将中断信号发送至从核并接收从核发送来的中断信号,从核c2c控制器能够接收主核发送来的中断信号并把从核中的模块守护进程返回的响应消息发送到主核c2c控制器;对应前述n个物理模块,所述主核c2c控制器和从核c2c控制器均包括n个port端口,每个port端口能够支持128个node节点,每个node节点能够支持8个slot槽。
9.进一步,所述n取值16。
10.进一步,所述模块驱动适配单元被配置为,把模块应用线程发送的请求数据封装成预定数据格式的请求消息包后再通过主核c2c控制器发送至从核;其中,每个请求操作数据对应的消息包都是一个阻塞请求,所述阻塞请求用于触发等待直到主核c2c控制器接收到返回给模块应用线程的响应消息包,所述响应数据包中包括请求数据处理结果;所述从核包括多个模块守护进程,模块守护进程在系统启动时运行,每个模块守护进程包括第一线程和第二线程,第一线程用于处理非阻塞事件,第二线程用于处理阻塞事件。
11.进一步,所述请求消息包的数据格式被配置为,包括port字段、slot字段、node字段、ops_type字段、cmd字段、param_num字段、response_size字段和data字段;其中,port字段用于记载硬件对应的硬件通道port信息;slot字段用于记载发送消息包使用的槽slot信息,slot表示同一模块同一文件描述符的不同线程信息;node字段用于记载文件描述符分配的节点node信息,node表示同一模块的文件描述符,用以支持同一模块的多线程操作的线程信息;ops_type字段用于记载请求对应的操作类型,所述操作类型包括open,ioctl,select和close类型;cmd字段用于记载ioctl函数的命令;param_num字段用于记载ioctl函数的参数个数;response_size字段用于记载请求消息包需要返回的结果大小;data字段用于记载ioctl的具体参数。
12.进一步,所述响应消息包的数据格式被配置为,包括port字段、slot字段、node字
段、ops_type字段、cmd字段、result字段和data字段;其中,port字段用于记载硬件对应的硬件通道port信息;slot字段用于记载发送消息包使用的槽slot信息,slot表示同一模块同一文件描述符的不同线程信息;node字段用于记载文件描述符分配的节点node信息,node表示同一模块的文件描述符,用以支持同一模块的多线程操作的线程信息;ops_type字段用于记载请求对应的操作类型,所述操作类型包括open,ioctl,select和close类型;cmd字段用于记载ioctl函数的命令;result字段用于记载返回的请求数据处理结果;data字段为响应消息返回的具体数据。
13.进一步,所述主核操作包括open操作,ioctl操作,select操作和close操作,所述ioctl操作,select操作和close操作基于open操作进行;当模块应用线程执行open操作时,模块驱动适配单元分配通信时需要用的数据结构存储空间,从对应的模块port号上申请一个node节点号,记录port号和node节点号到对应文件描述符的数据结构,并查找一个空闲的slot槽发送一个open类型的请求消息包信息到从核,然后等待直到从核处理完成并返回处理结果到模块应用线程;当模块应用线程执行ioctl操作时,模块驱动适配单元依据ioctl命令,判断是否有参数和参数个数来更新请求消息包的cmd字段、 param_num字段、data字段和response_size字段,并查找一个空闲的slot槽发送ioctl类型的请求消息包到从核,然后等待从核处理结束并返回处理结果到模块应用线程;当模块应用线程执行select操作时,select操作对应阻塞事件,模块驱动适配单元占用一个slot槽,查找出其它空闲的slot槽以发送select类型的请求消息包到从核,等待从核处理结束并返回处理结果到模块应用线程;当模块应用线程执行close操作时,模块驱动适配单元发送close类型的请求消息包到从核,等待从核处理结束并返回处理结果到模块应用线程;然后,释放open操作时分配的数据结构内存空间,并回收open操作时申请到的node节点信息。
14.进一步,所述从核被配置为:从核c2c控制器接收到主核c2c控制器的中断信号后,从port对应主核的发送内存空间提取一个请求消息包,并通知模块守护进程读取前述请求消息包;所述模块守护进程读到请求消息包后,根据port号查找出对应的模块并触发模块驱动单元执行请求消息包的操作类型;所述模块驱动单元执行操作完成后,返回处理结果及具体数据到模块守护进程,所述模块守护进程根据请求消息包的node及slot信息,通过从核c2c控制器把响应数据包写入从核的发送内存中,并通知主核读取前述响应数据包信息。
15.本发明还提供了一种主从架构芯片的主从核通信系统,包括主核和从核,所述主核和从核共享内存,主核的发送内存是从核的接收内存,从核的发送内存是主核的接收内存;所述主核包括模块应用线程、模块驱动适配单元和主核c2c控制器,所述从核包括模块守护进程、模块驱动单元和从核c2c控制器,主核与从核之间通过主核c2c控制器和从
核c2c控制器发送中断信号;所述模块驱动适配单元对应着模块应用线程的内核驱动设置,用于获取模块应用线程发送的请求数据并将所述请求数据放入前述主核c2c控制器对应的发送内存中;所述主核c2c控制器,用于在获取前述请求数据时发送中断信号至从核的从核c2c控制器;所述从核c2c控制器,用于接收主核c2c控制器发送来的中断信号,并在接收该中断信号后从共享的接收内存中读取前述请求数据,同时通知模块守护进程;所述模块守护进程常驻内存,用以监听从核c2c控制器读取到的请求数据并解析该请求数据,以及将该请求数据发送到从核的模块驱动单元进行处理;所述模块驱动单元,在处理完成后把请求数据处理结果返回到模块守护进程,再通过从核c2c控制器把请求数据处理结果写入从核的发送内存;所述模块守护进程,能够将接收的前述请求数据处理结果通过从核c2c控制器发送到主核c2c控制器,主核c2c控制器将接收的该请求数据处理结果通过前述模块驱动适配单元返回给模块应用线程。
16.本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:通过设置主从核通信系统实现主核mp和从核cp的通信功能,把主核mp应用需求传递到从核cp模块驱动控制单元,使用主核适配驱动结合从核守护进程的方式,在不改变模块内核驱动的情况下,实现了主核和从核的数据通信,使得主核mp能够控制从核cp同一模块实现应用功能,能够均衡主核mp和从核cp负载。具体的,主核mp通过模块驱动适配单元进行应用线程请求的转发,驱动则完全在从核cp实现控制,从核cp则在用户层创建守护进程,实现主核mp请求的实时接收和分发并控制不同模块驱动功能,具有模块驱动代码重用性高,灵活性和可移植性好的优点。
附图说明
17.图1为本发明实施例提供的主从核的连接结构图。
18.图2为本发明实施例提供的主从核的模块结构图。
19.图3为本发明实施例提供的主从核进行通信时的数据控制流向图。
20.图4为本发明实施例提供的c2c控制器的典型逻辑结构示意图。
21.图5为本发明实施例提供的主核mp操作流程图。
22.图6为本发明实施例提供的从核cp操作流程图。
具体实施方式
23.以下结合附图和具体实施例对本发明公开的主从架构芯片的主从核通信方法及系统作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
24.需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条
件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
25.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
26.参见图1和图2所示,为本发明提供的一种主从架构芯片的主从核通信系统。
27.所述主从核通信系统,包括通信连接的主核mp和从核cp。主核mp和从核cp的数据通过共享内存的方式实现,即主核的发送内存是从核的接收内存,从核的发送内存是主核的接收内存。
28.所述主核mp和从核cp之间可以设置有n个硬件中断线以支持主核同时控制n个物理模块在从核进行处理。n一般取为16,此时,主核mp和从核cp之间有16个硬件中断线,可以同时支持16个模块在从核cp上控制。此时,每个硬件中断线对应一个模块,每个中断线同时对应有发送内存和接收内存两块物理内存,发送内存用于进行模块数据的发送,接收内存用于进行模块数据的接收。
29.参见图2所述,所述主核具体可以包括模块应用线程、模块驱动适配单元和主核c2c控制器,所述从核具体可以包括模块守护进程、模块驱动单元和从核c2c控制器,主核与从核之间通过主核c2c控制器和从核c2c控制器发送中断信号。
30.主从核之间的数据控制流向参见图3所示。首先,模块应用线程发出请求数据到模块驱动适配单元,模块驱动适配单元把请求数据放入主核mp的主核c2c(core to core,即核间互连)控制器对应的发送内存空间,通过主核c2c控制器发送中断信号(或称中断通知)到从核cp。从核cp接收到中断信号后,从共享的接收内存中提取请求数据出来,同时通知模块守护进程,模块守护进程把请求数据发送到从核cp的模块驱动单元,由模块驱动单元进行请求数据的处理,模块驱动单元在处理完成后可以把请求数据处理结果返回到模块守护进程,再通过从核c2c控制器把请求数据处理结果写入从核cp的发送内存中,请求数据处理结果则可以沿原路依次返回。
31.具体的,主从架构芯片的主从核通信方法包括如下步骤:s100,主核的模块应用线程发出请求到模块驱动适配单元。
32.所述模块驱动适配单元对应着模块应用线程的内核驱动设置,用于获取模块应用线程发送的请求数据并将所述请求数据放入前述主核c2c控制器对应的发送内存中。
33.本实施例中,c2c控制器是主核mp和从核cp通信的硬件实现,主核mp和从核cp的c2c控制器可以同构设置,主核和从核之间通过主核c2c控制器和从核c2c控制器相互发送中断信号。
34.具体的,主核中的主核c2c控制器实现主核mp发送中断信号到从核,并接收从核cp
发送来的中断信号。从核中的从核c2c控制器接收主核发送来的中断信号,并把从从核的模块守护线程返回的响应消息发送到主核c2c控制器。
35.对应前述16个物理模块,c2c控制器可以有16个port端口。每个c2c控制器的硬件通道可以称为port,每个port通道可以对应一个物理模块。
36.参见图4所示,每个port端口最多支持128个node节点。node是抽象出来的概念,对应同一模块的文件描述符,用以支持同一模块的多线程操作,一个port支持128个node节点,对应的同一模块支持多达128个线程同时操作。每个node节点支持最多8个slot槽。slot对应同一模块同一文件描述符的不同线程。
37.本实施例中,模块驱动适配单元是对模块应用线程的内核驱动部分实现,但不操作具体的物理硬件,只把对应硬件的请求操作(比如open,close,ioctl,select操作等) 封装成预定数据格式的请求消息包发送到从核。模块驱动适配单元接收到的来自于模块应用线程的每个请求操作数据对应的消息包都是一个阻塞请求(该消息包通过主核c2c控制器发送出去),等待直到主核c2c控制器接收到请求数据处理结果后返回给主核模块应用线程。
38.具体的,所述模块驱动适配单元被配置为:把模块应用线程发送的请求数据封装成预定数据格式的请求消息包后再通过主核c2c控制器发送至从核;其中,每个请求操作数据对应的消息包都是一个阻塞请求,所述阻塞请求用于触发等待直到主核c2c控制器接收到返回给模块应用线程的响应消息包,所述响应数据包中包括请求数据处理结果。
39.所述从核包括多个模块守护进程,模块守护进程在系统启动时运行,每个模块守护进程包括第一线程和第二线程,第一线程用于处理非阻塞事件,第二线程用于处理阻塞事件。
40.所述请求消息包的预定数据格式优选的参见下表所示。
41.此时,请求消息包的数据格式包括port字段、slot字段、node字段、ops_type字段、cmd字段、param_num字段、response_size字段和data字段。
42.其中,port字段用于记载硬件对应的硬件通道port信息。slot字段用于记载发送消息包使用的槽slot信息,slot表示同一模块同一文件描述符的不同线程信息。node字段用于记载文件描述符分配的节点node信息,node表示同一模块的文件描述符,用以支持同一模块的多线程操作的线程信息。ops_type字段用于记载请求对应的操作类型,所述操作类型包括open,ioctl,select和close类型。cmd字段用于记载ioctl函数的命令。param_num字段用于记载ioctl函数的参数个数。response_size字段用于记载请求消息包需要返回的结果大小。data字段用于记载ioctl的具体参数。
43.所述响应消息包的预定数据格式优选的参见下表所示。
44.此时,响应消息包的数据格式包括port字段、slot字段、node字段、ops_type字段、cmd字段、result字段和data字段。
45.其中,port字段、slot字段、node字段、ops_type字段、cmd字段记载的信息与请求消息包中的对应字段相同。响应消息包的result字段则用于记载返回的请求数据处理结
果。响应消息包的data字段则为响应消息返回的具体数据。
46.s200,主核c2c控制器发送中断信号至从核的从核c2c控制器。
47.所述主核c2c控制器,用于在获取前述请求数据时发送中断信号至从核的从核c2c控制器。
48.s300,从核c2c控制器从共享的接收内存中读取前述请求数据,并通知从核中的模块守护进程。
49.所述从核c2c控制器,用于接收主核c2c控制器发送来的中断信号,并在接收该中断信号后从共享的接收内存中读取前述请求数据,同时通知模块守护进程。
50.所述模块守护进程常驻内存,用以监听从核c2c控制器读取到的请求数据并解析该请求数据,以及将该请求数据发送到从核的模块驱动单元进行处理。
51.s400,模块驱动单元在处理完成后把请求数据处理结果返回到模块守护进程,再通过从核c2c控制器把请求数据处理结果写入从核的发送内存。
52.s500,模块守护进程将前述请求数据处理结果通过从核c2c控制器发送到主核c2c控制器,主核c2c控制器将接收的该请求数据处理结果通过模块驱动适配单元返回给模块应用线程。
53.本实施例中,所述主核操作的操作类型(ops)可以包括open操作,ioctl操作,select操作和close操作,所述ioctl操作,select操作和close操作基于open操作进行。
54.下面结合图5详细描述主核操作的具体流程。
55.首先,当模块应用线程执行open操作时,模块驱动适配单元分配通信时需要用的数据结构存储空间,从对应的模块port号上申请一个node节点号,记录port号和node节点号到对应文件描述符的数据结构,并查找一个空闲的slot槽——比如slot 0发送一个open类型的请求消息包信息到从核,之后等待直到从核处理完成并返回处理结果到模块应用线程。
56.ioctl,select和close是建立在open的基础上。当模块应用线程执行ioctl操作时,模块驱动适配单元依据ioctl命令,判断是否有参数和参数个数来更新请求消息包的cmd字段、 param_num字段、data字段和response_size字段,并查找一个空闲的slot槽发送ioctl类型的请求消息包到从核,然后等待从核处理结束并返回处理结果到模块应用线程。其中,模块驱动适配单元根据是否有参数和参数个数来改变请求消息包的param_num字段和data字段中的数据,然后依据需要返回结果来改变response_size字段的值。
57.当模块应用线程执行select操作时,select操作对应阻塞事件,模块驱动适配单元占用一个slot槽,查找出其它空闲的slot槽——比如slot 1以发送select类型的请求消息包到从核,等待从核处理结束并返回处理结果到模块应用线程。
58.当模块应用线程执行close操作时,模块驱动适配单元发送close类型的请求消息包到从核,等待从核处理结束并返回处理结果到模块应用线程;然后,释放open操作时分配的数据结构内存空间,并回收open操作时申请到的node节点信息。
59.从核的具体操作流程参见图6所示。
60.从核中的从核c2c控制器接收到主核c2c控制器的中断信号后,从port对应主核的发送内存空间提取一个请求消息包,并通知模块守护进程读取前述请求消息包。
61.所述模块守护进程读到请求消息包后,根据port号查找出对应的模块。
62.然后,模块守护进程根据请求消息包的操作类型(ops)及cmd字段信息,触发模块驱动单元执行对应的操作类型。
63.所述模块驱动单元执行操作完成后,返回处理结果及具体数据到模块守护进程。
64.所述模块守护进程根据请求消息包的node及slot信息,通过从核c2c控制器把响应数据包写入从核的发送内存中,并通知主核读取前述响应数据包信息。
65.本发明提供的上述技术方案,使用主核适配驱动结合从核守护进程的方式,在不改变模块内核驱动的情况下,实现了主核和从核的数据通信。进一步,通过采用端口port, 节点node及槽slot的方法,解决了同一模块不同应用线程通过主核同时操作从核同一模块驱动的问题。
66.在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1