一种cpu与芯片之间传输消息报文的方法及装置的制造方法

xiaoxiao2021-3-1  207

一种cpu与芯片之间传输消息报文的方法及装置的制造方法
【技术领域】
[0001]本发明涉及通讯领域,特别涉及一种CPU与芯片之间传输消息报文的方法及装置。
【背景技术】
[0002]PCIE (PC1-Express)沿用PCI编程概念和通讯标准,采用高速串行的物理层,实现点对点的双通道高带宽传输。在交换机和硬件防火墙领域,报文的处理主要由网络处理器完成,CPU主要完成管理和控制网络处理器的功能,PCIE即为两者高速通信的媒介。
[0003]芯片和CPU之间交互的信息主要有协议报文的上报、MAC地址消息的上报(学习、老化、迁移等)、流表老化消息下发、上层报文下发,还有其他功能模块交互消息的上送和下发等。消息种类繁多,优先级也有高低之分,另外,消息内容也有多少之分,有的消息可能只是起到一个触发事件的作用,没有多少实质性的内容,有的消息就需要含有很多内容,如IP, MAC等信息,有的消息还需要含有整个报文,从消息的上述特点可以看出,CPU和芯片的通讯不只是能简单的接收消息,有序、高效地设计通讯通路才是CPU和芯片通讯问题的关键。

【发明内容】

[0004]本发明要解决的技术问题是提供一种CPU与芯片之间传输消息报文的方法及装置,CPU和芯片之间有序、闻效地传输消息。
[0005]为了解决上述技术问题,本发明提供了一种CPU与芯片之间传输消息报文的方法,应用于CPU,包括:
[0006]所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存;
[0007]所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。
[0008]其中,所述的CPU与芯片之间传输消息报文的方法,还包括:
[0009]获取所述共享内存中对应分配多个虚拟设备后的内存空间的地址信息,并发送至所述芯片。
[0010]其中,所述地址信息包括:内存空间的基地址和队列长度。
[0011]其中,所述CPU根据一芯片预设的多个用于配置虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存的步骤包括:
[0012]根据所述芯片内为多个所述虚拟设备配置的空间的起始标识,获取所述多个虚拟设备的数量,对应所述多个虚拟设备在所述芯片内存空间中的配置顺序,在所述共享内存中依次为每个所述虚拟设备分配一内存空间。
[0013]其中,所述共享内存中每个虚拟设备均包含各自的多条消息队列和队列指针,所述队列指针指示所述消息队列进入或移出至所述芯片。
[0014]其中,所述数据消息报文包括:消息类型编号、内存标志位、传输节点号、数据大小、内存地址及在内存地址中偏移。
[0015]本发明还提供了一种CPU与芯片之间传输消息报文的装置,应用于CPU,包括:
[0016]分配模块,用于所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存;
[0017]传输模块,用于所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。
[0018]其中,所述的CPU与芯片之间传输消息报文的装置,还包括:
[0019]发送模块,用于获取所述共享内存中对应分配多个虚拟设备后的内存空间的地址信息,并发送至所述芯片。
[0020]其中,所述分配模块中所述CPU根据一芯片预设的多个用于配置虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存空间的步骤包括:
[0021]根据所述芯片内为多个所述虚拟设备配置的空间的起始标识,获取所述多个虚拟设备的数量,对应所述多个虚拟设备在所述芯片内存空间中的配置顺序,在所述共享内存中依次为每个所述虚拟设备分配一内存空间。
[0022]其中,所述共享内存中每个虚拟设备均包含各自的多条消息队列和队列指针,所述队列指针指示所述消息队列进入或移出至所述芯片。
[0023]其中,所述数据消息报文包括:消息类型编号、内存标志位、传输节点号、数据大小、内存地址及在内存地址中偏移。
[0024]此外,本发明还提供了一种CPU与芯片之间传输消息报文的方法,应用于芯片,包括:
[0025]在芯片的内存空间中配置多个PCIE虚拟设备,并将所述多个虚拟设备的配置信息存储于该内存空间中;
[0026]接收所述CPU发送的共享内存中多个虚拟设备分配后的内存空间的信息。
[0027]其中,所述配置信息包括:芯片微码的版本号、配置空间的起始标识、配置空间在所述内存内的偏移、配置空间的大小。
[0028]本发明还提供了一种CPU与芯片之间传输消息报文的装置,应用于芯片,包括:
[0029]配置模块,用于在芯片的内存空间中配置多个PCIE虚拟设备,并将所述多个虚拟设备的配置信息存储于该内存空间中;
[0030]接收模块,用于接收所述CPU发送的共享内存中多个虚拟设备分配后的内存空间的信息。
[0031]本发明的上述技术方案的有益效果如下:
[0032]上述方案中,在芯片的内存空间中配置多个PCIE虚拟设备,并将多个虚拟设备的配置信息存储于该内存空间中,CPU对应分配多个用于与虚拟设备建立关系通道的共享内存,通过CPU与芯片建立的对应关系通道,数据消息报文可以有序、高效地在CPU与芯片之间传输。
【附图说明】
[0033]图1表示本发明实施例中CPU与芯片之间传输消息报文的方法应用于CPU的流程图;
[0034]图2表本发明实施例中CPU与芯片之间传输消息报文的装置应用于CPU的框图;
[0035]图3表示本发明实施例中CPU与芯片之间传输消息报文的方法应用于芯片的流程图;
[0036]图4表示本发明实施例中CPU与芯片之间传输消息报文的装置应用于芯片的框图;
[0037]图5表示本发明实施例中消息内核的处理流程;
[0038]图6表示本发明实施例中虚拟设备中信息的配置框图;
[0039]图7表示本发明实施例中CPU共享内存中每个虚拟设备的内存分配框图。
【具体实施方式】
[0040]为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0041 ] 本发明针对目前CPU和芯片间的通讯通路不能有序、高效传输的问题,提供了一种CPU与芯片之间传输消息报文的方法及装置。
[0042]如图1所示,本发明实施例提供了一种CPU与芯片之间传输消息报文的方法,应用于CPU,包括:
[0043]步骤S11:所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存;
[0044]步骤S12:所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。
[0045]进一步地,所述的CPU与芯片之间传输消息报文的方法,还包括:
[0046]获取所述共享内存中对应分配多个虚拟设备后的内存空间的地址信息,并发送至所述芯片,具体地,所述地址信息包括:内存空间的基地址和队列长度。
[0047]具体地,所述CPU根据一芯片预设的多个用于配置虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存的步骤包括:
[0048]根据所述芯片内为多个所述虚拟设备配置的空间的起始标识,获取所述多个虚拟设备的数量,对应所述多个虚拟设备在所述芯片内存空间中的配置顺序,在所述共享内存中依次为每个所述虚拟设备分配一内存空间。
[0049]具体地,所述共享内存中每个虚拟设备均包含各自的多条消息队列和队列指针,所述队列指针指示所述消息队列进入或移出至所述芯片。
[0050]具体地,所述数据消息报文包括:消息类型编号、内存标志位、传输节点号、数据大小、内存地址及在内存地址中偏移。
[0051]上述方案中,在CPU中预留出若干共享内存,用于CPU和芯片的之间DMA操作;芯片中也分配出一块内存,作为多个PCIE虚拟设备的配置空间,并将此空间映射到CPU内核的共享内存后,就可以由CPU直接访问。
[0052]如图2所示,本发明还提供了一种CPU与芯片之间传输消息报文的装置,应用于CHJ,包括:
[0053]分配模块S21,用于所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存;
[0054]传输模块S22,用于所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。
[0055]进一步地,所述的CPU与芯片之间传输消息报文的装置,还包括:
[0056]发送模块,用于获取所述共享内存中对应分配多个虚拟设备后的内存空间的地址信息,并发送至所述芯片。
[0057]具体地,所述分配模块S21用于根据所述芯片内为多个所述虚拟设备配置的空间的起始标识,获取所述多个虚拟设备的数量,对应所述多个虚拟设备在所述芯片内存空间中的配置顺序,在所述共享内存中依次为每个所述虚拟设备分配一内存空间。
[0058]具体地,所述共享内存中每个虚拟设备均包含各自的多条消息队列和队列指针, 所述队列指针指示所述消息队列进入或移出至所述芯片。所述数据消息报文包括:消息类型编号、内存标志位、传输节点号、数据大小、内存地址及在内存地址中偏移。
[0059]如图3所示,本发明实施例还提供了一种CPU与芯片之间传输消息报文的方法,应用于芯片,包括:
[0060]步骤S31:在芯片的内存空间中配置多个PCIE虚拟设备,并将所述多个虚拟设备的配置信息存储于该内存空间中;
[0061]步骤S32:接收所述CPU发送的共享内存中多个虚拟设备分配后的内存空间的信肩、Ο
[0062]如图4所示,本发明还提供了一种CPU与芯片之间传输消息报文的装置,应用于芯片,包括:
[0063]配置模块S41,用于在芯片的内存空间中配置多个PCIE虚拟设备,并将所述多个虚拟设备的配置信息存储于该内存空间中;
[0064]接收模块S42,用于接收所述CPU发送的共享内存中多个虚拟设备分配后的内存空间的信息。
[0065]上述方案中,在芯片内存中分配空间创建PCIE虚拟设备,每个虚拟设备作为PCIE的传输终端拥有独立的通讯通道,互不干扰,可以为各个独立的通道灵活地配置传输信息的种类及优先级等,大大方便了程序设计。
[0066]进一步地,本发明实施例结合具体的应用情况说明如下,如图5所示:
[0067]系统启动时CPU的动态随机存取存储器dram中预留出共享内存,用于CPU和芯片的之间DMA操作;同时,芯片的动态随机存取存储器dram中也分配出一块内存,作为多个PCIE虚拟设备的配置空间,并将此空间映射到CPU内核的共享内存后,就可以由CPU直接访问。
[0068]具体地,CPU中的linux内核根据芯片中配置空间起始标识判断有多少个虚拟设备,虚拟设备即传输节点ep,然后在共享内存中为每个虚拟设备按顺序分配内存空间,分配后的内存空间基地址和队列长度写回到配置空间,这样芯片微码就可以根据这些信息设置DMA控制器,进行CPU与芯片的信息交互。
[0069]虚拟设备的主要配置信息如图6所示,包括芯片微码使用的版本、编译工具版本等一般信息,还有每个虚拟设备队列所在的CPU物理地址,队列长度等pcie通讯用到的交互信息。该内存芯片和cpu都可以访问,用来传递交互信息非常方便。
[0070]CPU中每个虚拟设备在共享内存中分配情况如图7所示,主要由多个循环列队和buffer池组成。Linux消息内核在整个消息通讯中连接用户应用程序和芯片,起着承上启下的作用,所以队列大体分两种:内核与用户应用程序交互的队列和内核与芯片交互的队列。交互队列有交互的消息队列,交互的buffer队列。
[0071]CPU和芯片间传递的消息有固定的消息格式,含有很多重要信息,如:消息类型编号、是否携带buffer的标志位、ep号、buffer地址及在buffer地址中的偏移和数据大小坐寸。
[0072]CPU和芯片间传递的消息可以根据实际情况选择是否需要buffer。如果传递信息比较多,需要携带buffer,则将信息中的buffer标志位置位,在buffer池中选出合适的buffer,将buffer地址填入消息中。
[0073]Buf f er池中选择buf f er就是在比需要传输的信息大的最小的buf f er队列中按序出队 buffer。
[0074]应当说明的是,linux消息内核也会轮询整个ep队列,如果发现队列中未读消息,则进行处理,分别如下:
[0075]1.芯片到内核消息队列
[0076]解析队列消息,如果是发给用户的消息,则把该消息放入内核到用户的消息队列中;如果消息中某一比特位显示该消息中所含的buffer为待内核释放的buffer,内核将该Buffer释放,回收入buffer池。
[0077]2.用户到内核的消息队列
[0078]解析队列消息,如果是发给芯片的消息,则把该消息放入内核到芯片的消息队列中。
[0079]3.用户到内核的需要释放的Buffer队列
[0080]释放该buffer队列中的buffer,回收入buffer池。
[0081]本发明的上述实施例,在芯片内存中分配空间创建PCIE虚拟设备,同时在CPU中对应分配多个用于与所述虚拟设备建立关系通道的共享内存,CPU和芯片的数据交换就可以通过DMA方式进行传输。此外,每个虚拟设备作为PCIE的传输终端拥有独立的通讯通道,可以为各个独立的通道灵活地配置传输信息的种类及优先级,大大方便了程序设计。
[0082]以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种CPU与芯片之间传输消息报文的方法,应用于CPU,其特征在于,包括: 所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存; 所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。2.根据权利要求1所述的CPU与芯片之间传输消息报文的方法,其特征在于,还包括: 获取所述共享内存中对应分配多个虚拟设备后的内存空间的地址信息,并发送至所述-H-* 1 I心斤。3.根据权利要求2所述的CPU与芯片之间传输消息报文的方法,其特征在于,所述地址信息包括:内存空间的基地址和队列长度。4.根据权利要求1所述的CPU与芯片之间传输消息报文的方法,其特征在于,所述CPU根据一芯片预设的多个用于配置虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存的步骤包括: 根据所述芯片内为多个所述虚拟设备配置的空间的起始标识,获取所述多个虚拟设备的数量,对应所述多个虚拟设备在所述芯片内存空间中的配置顺序,在所述共享内存中依次为每个所述虚拟设备分配一内存空间。5.根据权利要求1所述的CPU与芯片之间传输消息报文的方法,其特征在于,所述共享内存中每个虚拟设备均包含各自的多条消息队列和队列指针,所述队列指针指示所述消息队列进入或移出至所述芯片。6.根据权利要求1所述的CPU与芯片之间传输消息报文的方法,其特征在于,所述数据消息报文包括:消息类型编号、内存标志位、传输节点号、数据大小、内存地址及在内存地址中偏移。7.—种CPU与芯片之间传输消息报文的装置,应用于CPU,其特征在于,包括: 分配模块,用于所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存; 传输模块,用于所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。8.根据权利要求7所述的CPU与芯片之间传输消息报文的装置,其特征在于,还包括: 发送模块,用于获取所述共享内存中对应分配多个虚拟设备后的内存空间的地址信息,并发送至所述芯片。9.根据权利要求7所述的CPU与芯片之间传输消息报文的装置,其特征在于,所述分配模块中所述CPU根据一芯片预设的多个用于配置虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存空间的步骤包括: 根据所述芯片内为多个所述虚拟设备配置的空间的起始标识,获取所述多个虚拟设备的数量,对应所述多个虚拟设备在所述芯片内存空间中的配置顺序,在所述共享内存中依次为每个所述虚拟设备分配一内存空间。10.根据权利要求7所述的CPU与芯片之间传输消息报文的装置,其特征在于,所述共享内存中每个虚拟设备均包含各自的多条消息队列和队列指针,所述队列指针指示所述消息队列进入或移出至所述芯片。11.根据权利要求7所述的CPU与芯片之间传输消息报文的装置,其特征在于,所述数据消息报文包括:消息类型编号、内存标志位、传输节点号、数据大小、内存地址及在内存地址中偏移。12.—种CPU与芯片之间传输消息报文的方法,应用于芯片,其特征在于,包括: 在芯片的内存空间中配置多个PCIE虚拟设备,并将所述多个虚拟设备的配置信息存储于该内存空间中; 接收所述CPU发送的共享内存中多个虚拟设备分配后的内存空间的信息。13.根据权利要求12所述的CPU与芯片之间传输消息报文的方法,其特征在于,所述配置信息包括:芯片微码的版本号、配置空间的起始标识、配置空间在所述内存内的偏移、配置空间的大小。14.一种CPU与芯片之间传输消息报文的装置,应用于芯片,其特征在于,包括: 配置模块,用于在芯片的内存空间中配置多个PCIE虚拟设备,并将所述多个虚拟设备的配置信息存储于该内存空间中; 接收模块,用于接收所述CPU发送的共享内存中多个虚拟设备分配后的内存空间的信肩、Ο
【专利摘要】本发明提供了一种CPU与芯片之间传输消息报文的方法及装置,其中该方法包括:所述CPU根据一芯片预设的多个用于配置PCIE虚拟设备的配置空间,对应分配多个用于与所述虚拟设备建立关系通道的共享内存,所述共享内存为所述CPU用于与所述芯片信息交互的内存;所述CPU通过与所述芯片建立的对应关系通道,将数据消息报文通过成组数据传输DMA方式发送给所述芯片。本发明实施例的CPU与芯片之间传输消息报文的方法及装置,CPU和芯片之间能够有序、高效地进行数据消息报文的传输。
【IPC分类】G06F13/28
【公开号】CN105487990
【申请号】CN201410483733
【发明人】李颖佩
【申请人】中兴通讯股份有限公司
【公开日】2016年4月13日
【申请日】2014年9月19日
【公告号】WO2016041375A1

最新回复(0)