CN116755624A - 基于fc设备多分区独立缓存的通信方法与*** - Google Patents
基于fc设备多分区独立缓存的通信方法与*** Download PDFInfo
- Publication number
- CN116755624A CN116755624A CN202310743999.8A CN202310743999A CN116755624A CN 116755624 A CN116755624 A CN 116755624A CN 202310743999 A CN202310743999 A CN 202310743999A CN 116755624 A CN116755624 A CN 116755624A
- Authority
- CN
- China
- Prior art keywords
- data
- dma
- fpga
- ddr
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000005192 partition Methods 0.000 title claims abstract description 89
- 238000004891 communication Methods 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 18
- 239000000872 buffer Substances 0.000 claims abstract description 123
- 230000003139 buffering effect Effects 0.000 claims abstract description 12
- 230000032683 aging Effects 0.000 claims abstract description 11
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000004064 recycling Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 239000013589 supplement Substances 0.000 description 6
- 239000000835 fiber Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于FC设备多分区独立缓存的通信方法与***,包括设置于FC设备内的FPGA及与FPGA连接的DDR。经由FPGA实现FC设备在对端设备与目标缓存分区之间的数据通信。目的缓存分区到对端的数据流方向为发送方向,反之为接收方向。在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存并在满足条件时读出;在满足条件时切换至大队列模式缓存,在DDR中采用拼接的方式将IU缓存在大队列使用的同一个块中,并且采用老化超时上报,将块内存储的数据读出。本发明的通信方法可充分提升buffer使用效率,同时能动态调整自适应DDR存储块的个数,动态解决多通道并发的问题,提升***整体性能。
Description
技术领域
本发明涉及FC光纤通道网络技术领域,具体而言涉及一种基于FC设备多分区独立缓存的通信方法与***。
背景技术
机载数据总线技术是用于机载设备、子***以及模块之间的互联技术。以计算机的概念的角度,各种航空电子设备相当于一台台微机,而总线通信技术是连接各微机的通道和纽带,使航电设备形成具备完整功能的网络。FC(Fibre Channel,即光纤通道)是1988年由美国工业标准协会(ANSI)提出的通道标准,旨在满足日益增长的航空航天器内部高速数据通道需求,FC串行传输速率可达133兆波特~1.0625千兆波特,是目前机载航电***通信网络的主要实现方式,实现高速的机载通信需求。
FC光纤通道是一种基于标准的网络结构,具备通道及网络双重优势,使得在同一物理接口上可以运行目前主流的通道标准及网络协议。庞大的数据吞吐量使其可以令机载的不同***间的大量数据传输成为现实,并且可用相同设备建立任何拓扑,满足不同的连接特性,例如点对点通信网络、仲裁环通信网络、交换式网络等,实现节点设备之间的高速通信等。
在FC光纤通道的通信拓扑结构中,节点设备通常配置一个或多个光纤通道端口(FC端口)。节点设备,可通过PCIE接口与主机连接,与主机通信收发报文,例如将业务报文发送到主机,接收主机对节点设备(其中的FPGA、DDR存储、光信号处理等)的配置信息,并通过FC端口将主机接至FC拓扑网络中。
FPGA芯片是节点设备中实现节点通信的关键器件,其性能的优劣直接关系到通信双方是否能够正常连接与通信。在现代越来越复杂的机载设备应用环境下,机载的通信拓扑网络越发复杂,网络中传输数据量呈几何式增长,尤其是具有动态性以及并发性的传输特性,如何提升整体的FC网络中节点设备的整体性能,发挥其在FC网络中的作用,提高处理数据的效率,是当前机载航电FC网络通信***需要解决的关键问题。
发明内容
本发明目的在于的第一方面,提出一种基于FC设备多分区独立缓存的通信方法,包括以下步骤:
FC设备的FPGA在上电后,在其内部的RX_TOP模块的寄存器子模块中,对与FPGA连接的DDR进行块的划分,在DDR内划分出分别供大队列、小队列以及动态调度使用的缓存区,其中每个块的大小与目的缓存分区的dma_buffer大小相同并且每个块的基地址分别放在FPGA的FIFO队列中进行存储,用于在数据进入DDR进行存储时,读出一个基地址进行使用,当从DDR中读出一个块的数据后,再将基地址释放回FIFO队列中供后续循环使用;其中,用于大队列缓存、小队列缓存以及动态调度的缓存区的大小总和小于或者等于所述DDR的容量;
在从目的缓存分区到对端设备的数据流发送方向上,在目的缓存分区内部按照四个优先级pri0~pri3进行数据的存储,数据存储在目的缓存分区的dma_buffer中,当某分区发送数据时,将对应分区的对应优先级中dma_buffer数据推送到FPGA的DMA_TOP模块中,DMA_TOP模块将数据解析成裸数据并配上响应的描述符,推送给FPGA的TX_TOP模块,TX_TOP模块对收到的数据进行组装打包成符合FC帧协议的数据帧,最终通过FPGA的FC_MAC模块发送给对端设备;
在从对端设备到目的缓存分区的数据流接收方向上,从对端设备发送来的数据通过FPGA的FC_MAC模块流入,由FPGA的RX_TOP模块解析成裸数据并配上相应的描述符后,按照大队列模式或者小队列模式将数据存储进与FGPA连接的DDR中;并且,当接收方向满足发起DMA的条件后,FPGA的RX_TOP模块将数据从DDR中读出来,送入FPGA的DMA_TOP模块中,最终通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中;
其中,在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及
在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出。
在可选的实施例中,在大队列模式进行缓存时,在DDR中采用拼接的方式将同一个分区下的同一优先级的不同通道的IU拼接在DDR的同一个块中。
在可选的实施例中,在单播模式下,如果接收到的IU包含多个帧的数据,则使用默认的小队列模式进行缓存,根据dma_buffer的大小对接收到的IU进行切分并推送到DDR内划分的块进行缓存,并且在识别到IU中的eop标记时进行读出,或者经过预定的时间周期后块内未收到新数据进入,则触发超时机制,进行块内的内容读出,推送至DMA_TOP模块进行DMA,通过DMA的方式将读出的数据送入目的缓存分区的对应优先级的dma_buffer中。
在可选的实施例中,在组播模式下,如果接收到的IU包含多个帧的数据,则使用默认的小队列模式进行缓存,将IU根据dma_buffer的大小对IU进行切分,推送到DDR内的对应块内进行缓存,并在从DDR中读出数据后,在DMA_TOP模块中对一份数据完成多份数据的复制之后,分别送到不同的目的缓存分区中。
在可选的实施例中,如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存。
在可选的实施例中,当用于供小队列使用的缓存区内的所有块被占用后,对于接收到新的IU进入,则由FPGA控制调节动态调度缓存区中的块供后续进入的IU进行缓存存储使用。
在可选的实施例中,FPGA在针对DDR进行块划分时,设置供小队列使用的缓存区内的块的占用阈值,如果供小队列使用的缓存区内的块的使用个数达到占用阈值时,开启动态调度缓存区中的块进行补充,供后续进入的IU进行缓存存储使用;并且
当供小队列使用的缓存区内的块的使用个数低于设定的释放阈值时,将补充进来的块进行释放,回收至动态调度缓存区。
根据本发明目的的第二方面,还提出一种基于FC设备多分区独立缓存的通信***,包括:
设置于FC设备内的FPGA,经由FPGA实现FC设备在对端设备与目标缓存分区之间的数据通信与传输;
与所述FPGA连接的DDR;
所述FPGA内配置包括DMA_TOP模块、TX_TOP模块、RX_TOP模块以及FC_MAC模块;所述DMA_TOP模块用于进行DMA直接内存访问处理,TX_TOP模块用于将DMA_TOP模块发送过来的数据打包成符合FC协议的帧并通过FC_MAC模块发送给对端设备,同时FC_MAC模块接收到对端设备发送的数据,经过解析后送入RX_TOP模块中,RX_TOP模块控制DDR进行数据缓存存储,并在满足预定条件时将DDR内的数据读出并送至DMA_TOP模块,在通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中;
其中,所述FC设备的FPGA在上电后,在其内部的RX_TOP模块的寄存器子模块中,对所述DDR进行块的划分,在DDR内划分出分别供大队列、小队列以及动态调度使用的缓存区,其中每个块的大小与目的缓存分区的dma_buffer大小相同并且每个块的基地址分别放在FPGA的FIFO队列中进行存储,用于在数据进入DDR进行存储时,读出一个基地址进行使用,当从DDR中读出一个块的数据后,再将基地址释放回FIFO队列中供后续循环使用;其中,用于大队列缓存、小队列缓存以及动态调度的缓存区的大小总和小于或者等于所述DDR的容量;
在从目的缓存分区到对端设备的数据流发送方向上,在目的缓存分区内部按照四个优先级pri0~pri3进行数据的存储,数据存储在目的缓存分区的dma_buffer中,当某分区发送数据时,将对应分区的对应优先级中dma_buffer数据推送到FPGA的DMA_TOP模块中,DMA_TOP模块将数据解析成裸数据并配上响应的描述符,推送给FPGA的TX_TOP模块,TX_TOP模块对收到的数据进行组装打包成符合FC帧协议的数据帧,最终通过FPGA的FC_MAC模块发送给对端设备;
在从对端设备到目的缓存分区的数据流接收方向上,从对端设备发送来的数据通过FPGA的FC_MAC模块流入,由FPGA的RX_TOP模块解析成裸数据并配上相应的描述符后,按照大队列模式或者小队列模式将数据存储进与FGPA连接的DDR中;并且,当接收方向满足发起DMA的条件后,FPGA的RX_TOP模块将数据从DDR中读出来,送入FPGA的DMA_TOP模块中,最终通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中;
其中,在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及
在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出。
作为可选的实施例,所述RX_TOP模块配置有寄存器子模块、写控制模块、读控制模块,其中写控制模块分为两个子模块,即大队列写模块、小队列写模块,分别用于大队列模式下的写操作以及小队列模式下的写操作;
当IU从FC_MAC模块流入RX_TOP模块时,RX_TOP模块首先完成帧的解析,把IU解析成帧的裸数据和对应帧的描述符;
所述写控制模块根据描述符判断数据帧是属于大队列还是小队列,并对应进入大队列写模块、小队列写模块中,同时从存储器子模块中读取分配好的DDR的块地址,将IU数据写入DDR块中,同时将数据帧的描述符写入寄存器子模块中存储;
当读控制模块识别到寄存器子模块中有描述符的存储信息时,则开始读取描述符信息,根据描述符信息读取DDR块中的内容,把数据送到下级的DMA_TOP模块中,当读完一个块后,读控制模块将该DDR块的地址释放回寄存器子模块中,用于后续循环使用;
其中,在所述FC_MAC模块接收到IU后,默认使用小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出,其中在大队列模式进行缓存时,在DDR中采用拼接的方式将同一个分区下的同一优先级的不同通道的IU拼接在DDR的同一个块中。
作为可选的实施例,如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存。
由以上本发明的技术方案,本发明提出的基于FC设备多分区的大小队列通信方法,提出在FC设备的FPGA内部数据使用大小队列数据处理方式,提升***数据处理的能力,采用外部DDR的方式存储,节省FPGA内部的资源,适应不同的传输场景,能够提高***处理数据的效率。同时,本发明在FC设备多分区通信的基础上,通过对数据包在FPGA内部进行切分,通件选择使用大小列模式,一方面能充分提升buffer的使用效率,另一方面能够动态解决多通道并发的问题,使***整体性能得到提升。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例。
图1是本发明实施例的基于FC设备多分区独立缓存的通信***的***框图。
图2是本发明实施例的小队列模式数据存储方式示意图。
图3是本发明实施例的大队列模式数据存储方式示意图。
图4是本发明实施例的小队列写数据流程图。
图5是本发明实施例的大队列写数据流程图。
图6是本发明实施例的读数据处理流程图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定意在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
结合图1、2、3所示示例的基于FC设备多分区独立缓存的通信***,包括设置于FC设备内的FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)以及与FPGA连接的DDR(双倍速率同步动态随机存储器,是内存的一种)。设置于FC设备内的FPGA,经由FPGA实现FC设备在对端设备与目标缓存分区之间的数据通信与传输。
本发明的实施例,FC设备尤其是指FC交换机。
如图1,目的缓存分区到对端的数据流方向为发送方向,反之为接收方向,我们将通过数据流的发送与接收,阐述各模块之间的关系、链接和状态变化。
结合图1所示,FPGA内配置包括DMA_TOP模块、TX_TOP模块、RX_TOP模块以及FC_MAC模块;所述DMA_TOP模块用于进行DMA直接内存访问处理,TX_TOP模块用于将DMA_TOP模块发送过来的数据打包成符合FC协议的帧并通过FC_MAC模块发送给对端设备,同时FC_MAC模块接收到对端设备发送的数据,经过解析后送入RX_TOP模块中,RX_TOP模块控制DDR进行数据缓存存储,并在满足预定条件时将DDR内的数据读出并送至DMA_TOP模块,在通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中。
在从目的缓存分区到对端设备的数据流发送方向上,在目的缓存分区内部按照四个优先级pri0~pri3进行数据的存储,数据存储在目的缓存分区的dma_buffer中,当某分区发送数据时,将对应分区的对应优先级中dma_buffer数据推送到FPGA的DMA_TOP模块中,DMA_TOP模块将数据解析成裸数据并配上响应的描述符,推送给FPGA的TX_TOP模块,TX_TOP模块对收到的数据进行组装打包成符合FC帧协议的数据帧,最终通过FPGA的FC_MAC模块发送给对端设备。
在从对端设备到目的缓存分区的数据流接收方向上,从对端设备发送来的数据通过FPGA的FC_MAC模块流入,由FPGA的RX_TOP模块解析成裸数据并配上相应的描述符后,按照大队列模式或者小队列模式将数据存储进与FGPA连接的DDR中;并且,当接收方向满足发起DMA的条件后,FPGA的RX_TOP模块将数据从DDR中读出来,送入FPGA的DMA_TOP模块中,最终通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中。
在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及
在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出。
本发明设计的通信方式是多分区的收发,所以在接收方向上会有多个缓存分区接收数据,缓存分区会分出固定大小的dma_buffer,把相应的dma buffer地址推给FPGA,因此,在FPGA内部收到IU(Information Unit)数据信息后,按照dma_buffer的大小对IU进行切分,然后分多次将一个完整的IU上传,在目的缓存分区收到多个存储数据的dma_buffer,在把他们拼接成一个完整的IU。
结合图1所示的示例,RX_TOP模块配置有寄存器子模块、写控制模块、读控制模块,其中写控制模块分为两个子模块,即大队列写模块、小队列写模块,分别用于大队列模式下的写操作以及小队列模式下的写操作。
当IU从FC_MAC模块流入RX_TOP模块时,RX_TOP模块首先完成帧的解析,把IU解析成帧的裸数据和对应帧的描述符。
所述写控制模块根据描述符判断数据帧是属于大队列还是小队列,并对应进入大队列写模块、小队列写模块中,同时从存储器子模块中读取分配好的DDR的块地址,将IU数据写入DDR块中,同时将数据帧的描述符写入寄存器子模块中存储。
当读控制模块识别到寄存器子模块中有描述符的存储信息时,则开始读取描述符信息,根据描述符信息读取DDR块中的内容,把数据送到下级的DMA_TOP模块中,当读完一个块后,读控制模块将该DDR块的地址释放回寄存器子模块中,用于后续循环使用。
其中,在FC_MAC模块接收到IU后,默认使用小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出,其中在大队列模式进行缓存时,在DDR中采用拼接的方式将同一个分区下的同一优先级的不同通道的IU拼接在DDR的同一个块中。
在本发明的实施例中,根据收到IU的数据进行判断,如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存。
其中,在大队列模式进行缓存时,在DDR中采用拼接的方式将同一个分区下的同一优先级的不同通道的IU拼接在DDR的同一个块中。
作为可选的实施例,在单播模式下,如果接收到的IU包含多个帧的数据,则使用默认的小队列模式进行缓存,根据dma_buffer的大小对接收到的IU进行切分并推送到DDR内划分的块进行缓存,并且在识别到IU中的eop标记时进行读出,或者经过预定的时间周期后块内未收到新数据进入,则触发超时机制,进行块内的内容读出,推送至DMA_TOP模块进行DMA,通过DMA的方式将读出的数据送入目的缓存分区的对应优先级的dma_buffer中。
作为可选的实施例,在组播模式下,如果接收到的IU包含多个帧的数据,则使用默认的小队列模式进行缓存,将IU根据dma_buffer的大小对IU进行切分,推送到DDR内的对应块内进行缓存,并在从DDR中读出数据后,在DMA_TOP模块中对一份数据完成多份数据的复制之后,分别送到不同的目的缓存分区中。
作为可选的实施例,如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存。
并且,当用于供小队列使用的缓存区内的所有块被占用后,对于接收到新的IU进入,则由FPGA控制调节动态调度缓存区中的块供后续进入的IU进行缓存存储使用。
FPGA在针对DDR进行块划分时,设置供小队列使用的缓存区内的块的占用阈值,如果供小队列使用的缓存区内的块的使用个数达到占用阈值时,开启动态调度缓存区中的块进行补充,供后续进入的IU进行缓存存储使用;并且
当供小队列使用的缓存区内的块的使用个数低于设定的释放阈值时,将补充进来的块进行释放,回收至动态调度缓存区。
下面我们将结合具体的示例进行进一步的说明。
在本发明的实施例中,FC设备的FPGA在上电后,在其内部的RX_TOP模块的寄存器子模块中,对所述DDR进行块的划分,在DDR内划分出分别供大队列、小队列以及动态调度使用的缓存区,其中每个块的大小与目的缓存分区的dma_buffer大小相同并且每个块的基地址分别放在FPGA的FIFO队列中进行存储,用于在数据进入DDR进行存储时,读出一个基地址进行使用,当从DDR中读出一个块的数据后,再将基地址释放回FIFO队列中供后续循环使用;其中,用于大队列缓存、小队列缓存以及动态调度的缓存区的大小总和小于或者等于DDR的容量。
结合图1、2、3所示的示例,DDR内存中先划分三部分,第一部分是小队列使用,第二部分是大队列使用,第三部分是动态调度使用。
***上电后,由FPGA在RX_TOP模块的寄存器子模块中,对DDR中的三个部分进行块的划分,每个块的大小与dma_buffer的大小相同。在初始化时,假设FPGA会分配给三个部分的块的个数为A个块(A1~An)、B个块(B1~Bn)、C个块(C1~Cn),它们加在一起的总容量小于或者等于DDR的容量。每个块的基地址分别放在FPGA的FIFO中进行存储,当数据进入DDR进行存储时,读出一个地址进行使用,当从DDR中读出一个块的数据后,再把地址释放回相应的FIFO中,供后续循环使用。
1小队列存储方式(默认方式)
1.1单播:本发明的实施例中,小队列存储方式是针对一个IU包含多个帧的情况下提出,小队列在DDR中的存储方式如图2所示,数据写入处理流程图如图4所示,如果要发起单播的时候,即一个通道的数据只发到一个分区时,那么IU被按照DDR块的大小(即dma_buffer的大小)拆分后存储。
例如,假设IU的大小占用了A1~A3三个块,正常情况下,当识别到IU的eop标记时,即代表一个IU结束,读控制模块则按照图6的流程读取数据。
例如,如果IU中的数据存储到A2这个块后,但是A2这个块容量被存储的数据占用了一半,并且后续数据长时间不仅如此存储,由此触发超时机制,那么直接将A1和A2的数据先读出进行dma上报,并且在后续收到IU数据后,继续存储在A3和A4中。
如果默认的小队列存储方式下,从对端设备发送来的一个IU只包含一个帧的时候,那么这一个帧就会占据一个A部分的块进行上报,则存储空间利用率会很低,因此可由被控制切换开启大队列来进行缓存处理。
1.2组播
在发起组播时,DDR中的数据写入处理方式与单播相同,但是从DDR中读出数据后,在DMA_TOP模块中将会对一份数据进行多分数据的复制,然后分别送到不同的目的缓存分区中。
1.3多通道并发
假设A1~An中每一个块都可以存放32个帧,但是此时并发接收到n个通道的数据,每个通道均只接收到一个帧,因此,A1~An每个块均被占用,因为每个块中只允许存放相同通道下的数据,此时如果来了第n+1个通道的时候,A部分的块已经使用完了并且没有释放回可用的地址,那么此时就要通过调节C部分的块(供动态调度使用)进行补充进来,供后续的使用。
在可选的实施例中,FPGA可通过设置阈值的方式进行A部分的块的补充以及释放。在针对DDR进行块划分时,设置供小队列使用的缓存区内的块的占用阈值,如果供小队列使用的缓存区内的块的使用个数达到占用阈值时,开启动态调度缓存区中的块进行补充,供后续进入的IU进行缓存存储使用;并且当供小队列使用的缓存区内的块的使用个数低于设定的释放阈值时,将补充进来的块进行释放,回收至动态调度缓存区。
例如,当A部分的块使用个数高于占用阈值后,便开启C部分的块号进行对A部分进行块补充,当A部分使用的个数低于释放阈值时,便将C部分补充的块的个数重新释放回到C部分中。
应当理解,如果C部分没有补充块到A部分的话,A部分的使用个数低于释放阈值也不需要进行块收回。
在一些实施例中,当C部分没有可用的块进行补充到A部分时,并且新接收到数据帧还需要新的块来存储,此时可由用户进行配置处理,例如,清空DDR所有的块(或者部分块),存储新的接收到的数据,或者直接将后续新接收的数据全部丢弃,直至有空间可以存放。
2、大队列模式(需用户开启)
在本发明的实施例中,大队列模式是针对一个IU只包含一个帧的情况下提出。
在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出。
2.1大队列模式下的写入数据处理流程如图5所示,采用在DDR中拼接的方式将同一个分区下的同一优先级的不同通道的IU进行拼接在一个DDR块中,当长时间块的内存没存满,且没有接收到新的数据进入,采用老化超时上报,将块里面的内容读出。
例如,当大队列模式开始后,由于收到的IU都是单个帧,如果还是使用小队列的方式,一个DDR的块里面只存了一帧的数据,会比较浪费,资源使用率不高,因此在本发明的实施例中,针对单个目的分区的单个优先级数据,一个IU(只包含一个帧)的数据,进入DDR中,按照目的分区和优先级分别拷贝到对应的DDR的块中缓存中进行存储,当块中的存满了数据后,开始发起DMA将数据上报,当DDR块中存了一部分,但是在规定时间内没有在收到新的数据时,那么在规定时间到了以后,直接将DDR块中的存储的数据读出,进行DMA上报,读出的流程如图6所示。
2.2在大队列下,对于单播是直接放入对应分区的块中,对于组播而言是将一份数据进行复制后放入两个分区对应的块中存储;另外,如果出现DDR块不够的时候,处理方式与小队列的处理方式一样,从C部分进行调取补充,以及在满足条件时释放补充进来的块。
由此可见,本发明提出的基于fc设备多分区的大小队列通信方法,在FPGA内部数据使用大小队列数据处理方式,提升***数据处理的能力,采用外部DDR的方式存储,节省FPGA内部的资源,适应不同的传输场景,能够提高***处理数据的效率。同时,在FC设备多分区通信的基础上,通过对数据包在FPGA内部进行切分,结合使用大小列模式存储写操作,一方面能充分提升buffer的使用效率,另一方面能够动态调整自适应DDR存储块的个数,动态解决多通道并发的问题,解决并发通道下的数据的缓存问题,使***整体性能得到提升。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (10)
1.一种基于FC设备多分区独立缓存的通信方法,其特征在于,包括以下步骤:
FC设备的FPGA在上电后,在其内部的RX_TOP模块的寄存器子模块中,对与FPGA连接的DDR进行块的划分,在DDR内划分出分别供大队列、小队列以及动态调度使用的缓存区,其中每个块的大小与目的缓存分区的dma_buffer大小相同并且每个块的基地址分别放在FPGA的FIFO队列中进行存储,用于在数据进入DDR进行存储时,读出一个基地址进行使用,当从DDR中读出一个块的数据后,再将基地址释放回FIFO队列中供后续循环使用;其中,用于大队列缓存、小队列缓存以及动态调度的缓存区的大小总和小于或者等于所述DDR的容量;
在从目的缓存分区到对端设备的数据流发送方向上,在目的缓存分区内部按照四个优先级pri0~pri3进行数据的存储,数据存储在目的缓存分区的dma_buffer中,当某分区发送数据时,将对应分区的对应优先级中dma_buffer数据推送到FPGA的DMA_TOP模块中,DMA_TOP模块将数据解析成裸数据并配上响应的描述符,推送给FPGA的TX_TOP模块,TX_TOP模块对收到的数据进行组装打包成符合FC帧协议的数据帧,最终通过FPGA的FC_MAC模块发送给对端设备;
在从对端设备到目的缓存分区的数据流接收方向上,从对端设备发送来的数据通过FPGA的FC_MAC模块流入,由FPGA的RX_TOP模块解析成裸数据并配上相应的描述符后,按照大队列模式或者小队列模式将数据存储进与FGPA连接的DDR中;并且,当接收方向满足发起DMA的条件后,FPGA的RX_TOP模块将数据从DDR中读出来,送入FPGA的DMA_TOP模块中,最终通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中;
其中,在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及
在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出。
2.根据权利要求1所述的基于FC设备多分区独立缓存的通信方法,其特征在于,在大队列模式进行缓存时,在DDR中采用拼接的方式将同一个分区下的同一优先级的不同通道的IU拼接在DDR的同一个块中。
3.根据权利要求1所述的基于FC设备多分区独立缓存的通信方法,其特征在于,在单播模式下,如果接收到的IU包含多个帧的数据,则使用默认的小队列模式进行缓存,根据dma_buffer的大小对接收到的IU进行切分并推送到DDR内划分的块进行缓存,并且在识别到IU中的eop标记时进行读出,或者经过预定的时间周期后块内未收到新数据进入,则触发超时机制,进行块内的内容读出,推送至DMA_TOP模块进行DMA,通过DMA的方式将读出的数据送入目的缓存分区的对应优先级的dma_buffer中。
4.根据权利要求3所述的基于FC设备多分区独立缓存的通信方法,其特征在于,在组播模式下,如果接收到的IU包含多个帧的数据,则使用默认的小队列模式进行缓存,将IU根据dma_buffer的大小对IU进行切分,推送到DDR内的对应块内进行缓存,并在从DDR中读出数据后,在DMA_TOP模块中对一份数据完成多份数据的复制之后,分别送到不同的目的缓存分区中。
5.根据权利要求1-4中任意一项所述的基于FC设备多分区独立缓存的通信方法,其特征在于,如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存。
6.根据权利要求1-4中任意一项所述的基于FC设备多分区独立缓存的通信方法,其特征在于,当用于供小队列使用的缓存区内的所有块被占用后,对于接收到新的IU进入,则由FPGA控制调节动态调度缓存区中的块供后续进入的IU进行缓存存储使用。
7.根据权利要求6所述的基于FC设备多分区独立缓存的通信方法,其特征在于,FPGA在针对DDR进行块划分时,设置供小队列使用的缓存区内的块的占用阈值,如果供小队列使用的缓存区内的块的使用个数达到占用阈值时,开启动态调度缓存区中的块进行补充,供后续进入的IU进行缓存存储使用;并且
当供小队列使用的缓存区内的块的使用个数低于设定的释放阈值时,将补充进来的块进行释放,回收至动态调度缓存区。
8.一种基于FC设备多分区独立缓存的通信***,其特征在于,包括:
设置于FC设备内的FPGA,经由FPGA实现FC设备在对端设备与目标缓存分区之间的数据通信与传输;
与所述FPGA连接的DDR;
所述FPGA内配置包括DMA_TOP模块、TX_TOP模块、RX_TOP模块以及FC_MAC模块;所述DMA_TOP模块用于进行DMA直接内存访问处理,TX_TOP模块用于将DMA_TOP模块发送过来的数据打包成符合FC协议的帧并通过FC_MAC模块发送给对端设备,同时FC_MAC模块接收到对端设备发送的数据,经过解析后送入RX_TOP模块中,RX_TOP模块控制DDR进行数据缓存存储,并在满足预定条件时将DDR内的数据读出并送至DMA_TOP模块,在通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中;
其中,所述FC设备的FPGA在上电后,在其内部的RX_TOP模块的寄存器子模块中,对所述DDR进行块的划分,在DDR内划分出分别供大队列、小队列以及动态调度使用的缓存区,其中每个块的大小与目的缓存分区的dma_buffer大小相同并且每个块的基地址分别放在FPGA的FIFO队列中进行存储,用于在数据进入DDR进行存储时,读出一个基地址进行使用,当从DDR中读出一个块的数据后,再将基地址释放回FIFO队列中供后续循环使用;其中,用于大队列缓存、小队列缓存以及动态调度的缓存区的大小总和小于或者等于所述DDR的容量;
在从目的缓存分区到对端设备的数据流发送方向上,在目的缓存分区内部按照四个优先级pri0~pri3进行数据的存储,数据存储在目的缓存分区的dma_buffer中,当某分区发送数据时,将对应分区的对应优先级中dma_buffer数据推送到FPGA的DMA_TOP模块中,DMA_TOP模块将数据解析成裸数据并配上响应的描述符,推送给FPGA的TX_TOP模块,TX_TOP模块对收到的数据进行组装打包成符合FC帧协议的数据帧,最终通过FPGA的FC_MAC模块发送给对端设备;
在从对端设备到目的缓存分区的数据流接收方向上,从对端设备发送来的数据通过FPGA的FC_MAC模块流入,由FPGA的RX_TOP模块解析成裸数据并配上相应的描述符后,按照大队列模式或者小队列模式将数据存储进与FGPA连接的DDR中;并且,当接收方向满足发起DMA的条件后,FPGA的RX_TOP模块将数据从DDR中读出来,送入FPGA的DMA_TOP模块中,最终通过DMA的方式将数据送入目的缓存分区的对应优先级的dma_buffer中;
其中,在数据流接收方向上,FPGA接收到IU后,默认按照小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及
在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出。
9.根据权利要求8所述的基于FC设备多分区独立缓存的通信***,其特征在于,所述RX_TOP模块配置有寄存器子模块、写控制模块、读控制模块,其中写控制模块分为两个子模块,即大队列写模块、小队列写模块,分别用于大队列模式下的写操作以及小队列模式下的写操作;
当IU从FC_MAC模块流入RX_TOP模块时,RX_TOP模块首先完成帧的解析,把IU解析成帧的裸数据和对应帧的描述符;
所述写控制模块根据描述符判断数据帧是属于大队列还是小队列,并对应进入大队列写模块、小队列写模块中,同时从存储器子模块中读取分配好的DDR的块地址,将IU数据写入DDR块中,同时将数据帧的描述符写入寄存器子模块中存储;
当读控制模块识别到寄存器子模块中有描述符的存储信息时,则开始读取描述符信息,根据描述符信息读取DDR块中的内容,把数据送到下级的DMA_TOP模块中,当读完一个块后,读控制模块将该DDR块的地址释放回寄存器子模块中,用于后续循环使用;
其中,在所述FC_MAC模块接收到IU后,默认使用小队列模式进行缓存,根据dma_buffer的大小对IU进行切分和推送到DDR内的对应块内进行缓存,并在满足条件时进行读出;以及在满足预定条件下,控制切换至大队列模式进行缓存,在DDR中采用拼接的方式将IU缓存在用于大队列缓存的同一个块中,并且在经过预定时间周期后,块的内存仍然未存满,且没有收到新IU进入,则采用老化超时上报,将块内存储的数据读出,其中在大队列模式进行缓存时,在DDR中采用拼接的方式将同一个分区下的同一优先级的不同通道的IU拼接在DDR的同一个块中。
10.根据权利要求9所述的基于FC设备多分区独立缓存的通信***,其特征在于,如果接收到的IU仅包含一个帧的数据,则从默认的小队列模式切换至大队列模式对接收到的IU进行缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310743999.8A CN116755624A (zh) | 2023-06-25 | 2023-06-25 | 基于fc设备多分区独立缓存的通信方法与*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310743999.8A CN116755624A (zh) | 2023-06-25 | 2023-06-25 | 基于fc设备多分区独立缓存的通信方法与*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116755624A true CN116755624A (zh) | 2023-09-15 |
Family
ID=87951128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310743999.8A Pending CN116755624A (zh) | 2023-06-25 | 2023-06-25 | 基于fc设备多分区独立缓存的通信方法与*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755624A (zh) |
-
2023
- 2023-06-25 CN CN202310743999.8A patent/CN116755624A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5502719A (en) | Path allocation system and method having double link list queues implemented with a digital signal processor (DSP) for a high performance fiber optic switch | |
US7227841B2 (en) | Packet input thresholding for resource distribution in a network switch | |
US7042891B2 (en) | Dynamic selection of lowest latency path in a network switch | |
US6754222B1 (en) | Packet switching apparatus and method in data network | |
US6922408B2 (en) | Packet communication buffering with dynamic flow control | |
US5528584A (en) | High performance path allocation system and method with fairness insurance mechanism for a fiber optic switch | |
US7401126B2 (en) | Transaction switch and network interface adapter incorporating same | |
US5548590A (en) | High performance frame time monitoring system and method for a fiber optic switch for a fiber optic network | |
EP1012712B1 (en) | Computer interface for direct mapping of application data | |
US7406041B2 (en) | System and method for late-dropping packets in a network switch | |
US20020118692A1 (en) | Ensuring proper packet ordering in a cut-through and early-forwarding network switch | |
US5592472A (en) | High performance path allocation system and method for a fiber optic switch for a fiber optic network | |
US7995472B2 (en) | Flexible network processor scheduler and data flow | |
WO2006036124A1 (en) | Improved handling of atm data | |
EP3487132B1 (en) | Packet processing method and router | |
US8174971B2 (en) | Network switch | |
US10635610B1 (en) | System and method for serial interface memory using switched architecture | |
CN114531488A (zh) | 一种面向以太网交换器的高效缓存管理*** | |
WO2023202294A1 (zh) | 一种数据流保序方法、数据交换装置及网络 | |
CN116821042A (zh) | 基于多分区的fc设备dma通信方法 | |
CN116755624A (zh) | 基于fc设备多分区独立缓存的通信方法与*** | |
CN115955441A (zh) | 一种基于tsn队列的管理调度方法、装置 | |
WO2021181896A1 (ja) | 通信装置、通信装置の制御方法、および集積回路 | |
US7353303B2 (en) | Time slot memory management in a switch having back end memories stored equal-size frame portions in stripes | |
KR100378372B1 (ko) | 데이터 네트워크에서 패킷 스위치 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |