CN111538694B - 一种用于网络接口支持多链接和重传的数据缓存方法 - Google Patents
一种用于网络接口支持多链接和重传的数据缓存方法 Download PDFInfo
- Publication number
- CN111538694B CN111538694B CN202010654252.1A CN202010654252A CN111538694B CN 111538694 B CN111538694 B CN 111538694B CN 202010654252 A CN202010654252 A CN 202010654252A CN 111538694 B CN111538694 B CN 111538694B
- Authority
- CN
- China
- Prior art keywords
- data
- pointer
- link
- shared cache
- cache space
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种用于网络接口支持多链接和重传的数据缓存方法,网络接口设备上的数据缓存和释放包括以下步骤:在共享缓存空间中寻找空闲的存储位置,将多个请求缓存的数据存入共享缓存空间的空闲位置中,所述请求缓存的数据是面向链接的数据;将共享缓存空间中面向链接的数据按照轮询调度方式从共享缓存空间释放,数据报文发送一段时间后,如果没有收到数据报文接收端的确认,重新从共享缓存空间读取之前的数据并从共享缓存空间释放。本发明支持多链接数据缓存,不同链接数据共享数据存储空间,同时支持可配置数据报文重传功能,保证所有用户数据都能发送成功。
Description
技术领域
本发明涉及计算机网络通信领域,尤其涉及一种用于网络接口支持多链接和重传的数据缓存方法。
背景技术
伴随大数据的快速发展,数据运算规模也在快速膨胀,对现有的运算处理设备带来极大挑战。一种方式升级现有设备的运算能力,还有一种方式就是协同运算,将运算分解成小的运算单元,然后放在不同运算设备上进行处理,这就需要不同运算设备之间进行大量的数据交换,因此对网络接口传输数据的性能有较高的要求。
通用的网络接口卡是通过PCIE总线接入***,对网络接口卡的配置和数据的传输都要通过PCIE。核心运算放在CPU或是GPU上完成,不同的设备上的CPU和GPU如果想完成对数据的收发,需要通过PCIE总线来完成。而现在很多大数据设备为了核心运算部件的算法更新或是变化,会使用可编程设备来实现,当然对此设备和CPU等的通信还是可以通过PCIE总线。但是可以在可编程设备上实现网络接口功能,实现核心运算设备之间的数据直传,和减去PCIE总线上的传输延时。这就需要给核心运算设备一个数据缓存的空间,传统的网络接口卡上的缓存空间是很小的,而且只是用来缓存报文,数据缓存是要放到主机的内存里,数据的发送和接收都需要内存和核心运算设备之间进行数据搬运。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种用于网络接口支持多链接和重传的数据缓存方法,直接将数据缓存放到网络接口设备上,核心运算设备直接访问网络接口的数据缓存,而不是在核心运算设备和网络接口之间的数据搬运需要通过内存,进而可以降低数据搬运产生的延时。
为解决上述技术问题,本发明提出的技术方案为:
一种用于网络接口支持多链接和重传的数据缓存方法,网络接口设备上的数据缓存和释放包括以下步骤:
1)在共享缓存空间中寻找空闲的存储位置,将多个请求缓存的数据存入共享缓存空间的空闲位置中,所述请求缓存的数据是面向链接的数据;
2)将共享缓存空间中面向链接的数据按照轮询调度方式从共享缓存空间释放,数据报文发送一段时间后,如果没有收到数据报文接收端的确认,重新从共享缓存空间读取之前的数据并从共享缓存空间释放。
进一步的,所述共享缓存空间采用单向链表的方式进行管理。
进一步的,步骤1)之前还包括预先配置的步骤,具体包括:根据TCP报文的参数和同时缓存的链接数设置共享缓存空间的大小,根据链接头指针的数量设置头指针RAM空间的大小,根据链接尾指针数量设置尾指针RAM空间的大小,根据用于对应共享缓存空间中每个存储单元下一跳地址的下一跳指针的数量设置下一跳指针RAM空间的大小,根据共享缓存空间的存储单元数量设置用于空闲指针映射的空闲指针映射RAM空间的大小。
进一步的,步骤1)中所述数据存入共享缓存空间的过程为建立链表的过程,建立链表的具体步骤包括:
A1)空操作:复位后建立链表过程处在空操作状态;
A2)初始化操作:进行链表元素初始化,初始化完成后发送初始化完成报告并监听请求,如果收到链表元素初始化配置,则重新进行链表元素初始化操作,如果收到端口请求,进入步骤A3);
A3)指针获取操作:判断空闲指针FIFO的空满状态,如果空闲指针FIFO为非满状态,则在空闲指针映射中扫描并获取状态为空闲的指针,所述指针与共享缓存空间中存储单元一一对应,将获取到的指针写入空闲指针FIFO,如果空闲指针FIFO为非空状态,则进入步骤A4);
A4)指针更新操作:从空闲指针FIFO读取一个指针并将该指针状态更改为已用,然后接收请求数据,如果请求数据是链接的第一个数据,则将被读取的指针作为头指针写入对应链接位置的头指针RAM空间;如果请求数据是链接的最后一个数据,则将被读取的指针作为尾指针写入对应链接位置的尾指针RAM空间;如果请求数据是链接的中间数据,则将被读取的指针作为下一跳指针写入下一跳指针RAM空间;
A5)写数据操作:在获取到写地址后开始将请求数据根据在链接中的位置分别写入到头指针、尾指针或下一跳指针对应的存储单元里,如果请求数据为最后一笔数据,则进入步骤A1),如果当前存储单元写满,则进入步骤A3)获取状态为空闲的下一个指针并将对应的下一个存储单元的地址作为当前存储单元的下一跳地址。
进一步的,步骤2)中所述数据从共享缓存空间释放的过程为释放链表的过程,释放链表的具体步骤包括:
B1)空操作:复位后链表释放过程处在空操作状态,如果轮询调度仲裁出来需要释放的链接则发送对应链接的释放链表请求并进入步骤B2);
B2)指针获取操作:根据链接的释放链表请求中轮询调度出来的链接匹配头指针RAM空间得到对应的头指针,同时发送释放链表请求给核心运算模块或网络接口,收到请求响应后进入步骤B3);
B3)读数据操作:从共享缓存空间根据头指针找到对应的存储单元,读取头指针对应的存储单元内存储的数据,直到数据全部释放完后进入步骤B4);
B4)指针更新操作:更新空闲存储单元状态,如果头指针对应的存储单元下一跳地址不为空,将下一跳地址匹配下一跳指针RAM空间获取下一跳指针并作为新的头指针,返回步骤B3)进行下一个存储单元的数据释放;如果头指针对应的存储单元下一跳地址为空或释放的数据为链接最后的数据,返回步骤B1)等待释放下一个链接的数据。
进一步的,步骤B3)中,如果链表释放的数据方向是核心运算模块,一直释放数据直到数据全部释放完毕;如果链表释放的数据方向是网络接口,释放的数据达到当前数据报文负载的数据量后停止链表释放,保存头指针和下一跳指针,等待并收到确认后继续进行链表释放并将被保存的头指针和下一跳指针置为空闲指针,若等待超时则根据被保存的头指针和下一跳指针从共享缓存空间中获取上一数据报文负载的数据并重新进行链表释放。
进一步的,步骤B1)中还包括空指针搜集的步骤,具体包括:复位后如果空闲指针FIFO是非满状态,查找共享缓存空间里的空闲存储单元,将空闲存储单元对应的空闲指针写入空闲指针FIFO,如果空闲指针FIFO已经被写满,停止查找共享缓存空间里的空闲存储单元。
本发明还提出一种用于网络接口支持多链接和重传的数据缓存***,包括计算机设备,所述计算机设备被编程或配置以执行上述的用于网络接口支持多链接和重传的数据缓存方法。
本发明还提出一种用于网络接口支持多链接和重传的数据缓存***,包括设置于网络接口设备上的数据缓存模块,所述数据缓存模块包括:
核心单元,用于队列控制相关链表的自动初始化、面向连接的缓存数据进行轮询调度来完成数据缓存中数据的释放、面向连接的数据存放管理、实时提供共享缓存空间状况;
空指针FIFO单元,用于提供空闲指针FIFO空间;
头指针单元,用于提供头指针RAM空间;
下一指针单元,用于提供下一跳指针RAM空间;
尾指针单元,用于提供尾指针RAM空间;
建立链表单元,用于收到数据存储请求信号后,根据数据存储单元状态回复数据存储请求响应,若可以存储数据则从空指针FIFO单元获取空指针,根据接收到的数据的标识判断来更新头指针、下一指针或是尾指针,并且将数据写入数据存储单元;
空指针映射存储单元,用于提供空闲指针映射RAM空间;
空指针获取单元,用于自动扫描指针状态,如果发现空指针就要更新空闲指针信息状态,将空指针写入空指针映射存储单元和空指针FIFO单元,并且更新空指针映射状态;
轮询仲裁单元,用于通过轮询调度仲裁出来需要释放的链接的数据;
数据存储单元,用于提供共享缓存空间;
释放链表单元,用于从头指针单元获取头指针,根据头指针读取数据存储单元里的数据,然后从下一指针单元获取下一跳指针,根据下一跳指针读取数据存储单元里的数据,同时更新头指针,按照上述的方式获取数据直到从尾指针单元获取尾指针的数据,根据尾指针读取数据存储单元里的数据,同时结束此链接的数据传输;
高级可扩展接口单元,用于将数据缓存模块的接口与高级可扩展接口总线接口进行转换;
指令指针寄存器单元,用于配置各模块的功能寄存器。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有被编程或配置以执行上述的用于网络接口支持多链接和重传的数据缓存方法的计算机程序。
与现有技术相比,本发明的优点在于:
本发明支持多链接数据缓存,不同链接数据共享数据存储空间,同时支持可配置数据报文重传功能,保证所有用户数据都能发送成功,此外还可以根据网络接口传输速度、报文负载数据量和核心运算模块要求来设计共享缓存空间的容量。
附图说明
图1为本发明实施例建立链表过程流程图。
图2为本发明实施例释放链表过程流程图。
图3为本发明实施例的数据缓存模块的结构示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
本发明提出一种用于网络接口支持多链接和重传的数据缓存方法,网络接口设备上的数据缓存和释放包括以下步骤:
1)在共享缓存空间中寻找空闲的存储位置,将多个请求缓存的数据存入共享缓存空间的空闲位置中,所述请求缓存的数据是面向链接的数据;
2)将共享缓存空间中面向链接的数据按照轮询调度方式从共享缓存空间释放,数据报文发送一段时间后,如果没有收到数据报文接收端的确认,重新从共享缓存空间读取之前的数据并从共享缓存空间释放。
通过上述步骤,本发明的方法支持多链接数据缓存,不同链接数据共享数据存储空间,同时支持可配置数据报文重传功能,保证所有用户数据都能发送成功。
本实施例中,可以根据网络接口传输速度、报文负载数据量和核心运算模块要求来设计共享缓存空间的容量,步骤1)之前还包括预先配置的步骤,具体包括:根据TCP报文的参数和同时缓存的链接数设置共享缓存空间的大小,根据链接头指针的数量设置头指针RAM空间的大小,根据链接尾指针数量设置尾指针RAM空间的大小,根据用于对应共享缓存空间中每个存储单元下一跳地址的下一跳指针的数量设置下一跳指针RAM空间的大小,根据共享缓存空间的存储单元数量设置用于空闲指针映射的空闲指针映射RAM空间的大小。
例如,根据整个TCP报文的长度和二层头、IP头、TCP头、CRC字段算出负载的大小。假设整个TCP报文长度不超过1500B,二层头14B,IP头20B,TCP头28B,CRC字段4B,这样负载最大为1434B,约为179.25*8B;根据设备接口确定数据总线位宽,为8B的2^n倍;数据存储空间的存储单元大小为8B的2^m倍;m和n均为大于0的整数,取上述的最大公约数,负载最大为1024B,这样整个报文长度为1090B。
如果按照能够同时缓存128(连接数)*2(包数)*1024B =2048Kb,共享缓存空间大小为256KB。假设数据总线位宽为8B*2^1 = 16B,共享缓存空间的深度可计算得256KB/16B=2^k,k为14。假设共享缓存空间的单元大小为8B*2^5,正好整数倍为负载的大小,即4个存储单元的数据量够一个负载的数据量,这样共享缓存空间共有存储单元数256KB/(32*8B)=1K个。对应存储单元的下一跳地址缓存空间的下一跳指针RAM使用真双端口RAM来实现,深度为10bit,宽度为10bit,头指针RAM和尾指针RAM也使用真双端口RAM来实现,深度为7bit,宽度为10bit。每一个链接只有一个头指针和一个尾指针,存储128个链接的头指针和尾指针,就分别需要128个位置来存储,深度为7bit的RAM正好可以存放128个。因为前面假设连接数为128,所以对应头指针和尾指针的有效映射,用128bit位宽寄存器实现。空闲指针映射RAM也使用真双端口RAM来实现,深度10bit,宽度10bit。所有链接分享整个缓存空间的指针,也就实现所有链接共享数据缓存空间。
根据不同的应用场景,可对上述假设数据缓存空间的大小做相应的扩展或是裁剪,同时用来存储头指针、尾指针和下一跳指针的RAM的深度和宽度也要做相应的调整。
本实施例中,共享缓存空间的数据存入和释放是通过指针识别数据在共享缓存空间的位置,可以实现一个链接中的数据在共享缓存空间的随意存放而不需要按照指针顺序存放,只要是空的存储单元就可以放数据。释放数据的时候按照数据存入的顺序即指针顺序来释放共享缓存空间的数据。
共享缓存空间采用单向链表的方式进行管理,实现链表元素的初始化和链表的管理包括建立链表和链表回收,其中:
如图1所示,步骤1)中数据存入共享缓存空间的过程为建立链表的过程,建立链表的具体步骤包括:
A1)空操作:复位后建立链表过程处在空操作状态;
A2)初始化操作:进行链表元素初始化,初始化完成后发送初始化完成报告并监听请求,如果收到链表元素初始化配置,则重新进行链表元素初始化操作,如果收到端口请求,进入步骤A3);
A3)指针获取操作:判断空闲指针FIFO的空满状态,如果空闲指针FIFO为非满状态,则在空闲指针映射中扫描并获取状态为空闲的指针,所述指针与共享缓存空间中存储单元一一对应,将获取到的指针写入空闲指针FIFO,如果空闲指针FIFO为非空状态,则进入步骤A4),FIFO是一种先进先出存储器,分为写入专用区和读取专用区,读操作与写操作可以异步进行,写入专用区上写入的数据按照写入的顺序从读取专用区中读出;
A4)指针更新操作:从空闲指针FIFO读取一个指针并将该指针状态更改为已用,然后接收请求数据,如果请求数据是链接的第一个数据,则将被读取的指针作为头指针写入对应链接位置的头指针RAM空间;如果请求数据是链接的最后一个数据,则将被读取的指针作为尾指针写入对应链接位置的尾指针RAM空间;如果请求数据是链接的中间数据,则将被读取的指针作为下一跳指针写入下一跳指针RAM空间;
A5)写数据操作:在获取到写地址后开始将请求数据根据在链接中的位置分别写入到头指针、尾指针或下一跳指针对应的存储单元里,如果请求数据为最后一笔数据,则进入步骤A1),如果当前存储单元写满,则进入步骤A3)获取状态为空闲的下一个指针并将对应的下一个存储单元的地址作为当前存储单元的下一跳地址,每执行完一次写数据操作后,就将相应链接的数据已准备好信号置起来。
本实施例的步骤2)中将共享缓存空间中面向链接的数据按照轮询调度方式从共享缓存空间释放具体包括:对所有链接的数据已准备好信号做轮询调度,获取到要释放数据的链接后将链接的数据从共享缓存空间释放。由于释放一个存储单元需要很长时间,所以对调度的效率要求不高,可以分成2级调度来实现,每一级均是轮询调度方式。
本实施例的步骤2)中数据从共享缓存空间释放的过程为释放链表的过程,释放链表的具体步骤包括:
B1)空操作:复位后链表释放过程处在空操作状态,如果轮询调度仲裁出来需要释放的链接则发送对应链接的释放链表请求并进入步骤B2);
B2)指针获取操作:根据链接的释放链表请求中轮询调度出来的链接匹配头指针RAM空间得到对应的头指针,同时发送释放链表请求给核心运算模块或网络接口,收到请求响应后进入步骤B3);
B3)读数据操作:从共享缓存空间根据头指针找到对应的存储单元,读取头指针对应的存储单元内存储的数据,直到数据全部释放完后进入步骤B4);
B4)指针更新操作:更新空闲存储单元状态,如果头指针对应的存储单元下一跳地址不为空,将下一跳地址匹配下一跳指针RAM空间获取下一跳指针并作为新的头指针,返回步骤B3)进行下一个存储单元的数据释放;如果头指针对应的存储单元下一跳地址为空或释放的数据为链接最后的数据,返回步骤B1)等待释放下一个链接的数据。
本实施例的步骤B3)中,如果链表释放的数据方向是核心运算模块,一直释放数据直到数据全部释放完毕;如果链表释放的数据方向是网络接口,释放的数据达到当前数据报文负载的数据量后停止链表释放,保存头指针和下一跳指针,等待并收到确认后继续进行链表释放并将被保存的头指针和下一跳指针置为空闲指针,若等待超时则根据被保存的头指针和下一跳指针从共享缓存空间中获取上一数据报文负载的数据并重新进行链表释放,因为共享缓存空间里的数据释放后存储单元对应的指针状态发生变化,存储单元内部的数据仍然存在,只有对空闲指针对应的存储单元写入新的数据才会将原有数据覆盖掉。
本实施例的步骤B1)中还包括空指针搜集的步骤,具体包括:复位后如果空闲指针FIFO是非满状态,查找共享缓存空间里的空闲存储单元,将空闲存储单元对应的空闲指针写入空闲指针FIFO,如果空闲指针FIFO已经被写满,停止查找共享缓存空间里的空闲存储单元。
本发明还提出一种用于网络接口支持多链接和重传的数据缓存***,包括计算机设备,所述计算机设备被编程或配置以执行上述的用于网络接口支持多链接和重传的数据缓存方法。
如图3所示,本发明的用于网络接口支持多链接和重传的数据缓存***还包括设置于网络接口设备上的数据缓存模块,数据缓存模块包括:
核心单元(图中未显示),用于队列控制相关链表的自动初始化、面向连接的缓存数据进行轮询调度来完成数据缓存中数据的释放、面向连接的数据存放管理、实时提供共享缓存空间状况;
空指针FIFO单元,用于提供空闲指针FIFO空间;
头指针单元,用于提供头指针RAM空间;
下一指针单元,用于提供下一跳指针RAM空间;
尾指针单元,用于提供尾指针RAM空间;
建立链表单元,用于收到数据存储请求信号后,根据数据存储单元状态回复数据存储请求响应,若可以存储数据则从空指针FIFO单元获取空指针,根据接收到的数据的标识判断来更新头指针、下一指针或是尾指针,并且将数据写入数据存储单元;
空指针映射存储单元,用于提供空闲指针映射RAM空间;
空指针获取单元,用于自动扫描指针状态,如果发现空指针就要更新空闲指针信息状态,将空指针写入空指针映射存储单元和空指针FIFO单元,并且更新空指针映射状态;
轮询仲裁单元,用于通过轮询调度仲裁出来需要释放的链接的数据;
数据存储单元,用于提供共享缓存空间;
释放链表单元,用于从头指针单元获取头指针,根据头指针读取数据存储单元里的数据,然后从下一指针单元获取下一跳指针,根据下一跳指针读取数据存储单元里的数据,同时更新头指针,按照上述的方式获取数据直到从尾指针单元获取尾指针的数据,根据尾指针读取数据存储单元里的数据,同时结束此链接的数据传输;
高级可扩展接口单元,用于将数据缓存模块的接口与高级可扩展接口总线接口进行转换,高级可扩展接口单元内部设有FIFO存储器,可以将数据缓存模块的接口与AXI-Stream总线接口进行转换,FIFO存储器一方面可以做时钟隔离,同时还可以做到数据位宽的隔离;
指令指针寄存器单元,用于配置各模块的功能寄存器,如初始化使能寄存器、初始化完成寄存器、数据传输完成寄存器和发送数据报文个数寄存器。
如图3所示,本实施例的数据缓存模块还包括数据输入端口和数据输出端口,数据输入端口和建立链表单元、空指针FIFO单元、头指针单元、下一指针单元、尾指针单元和数据存储单元相连,数据输出端口和释放链表单元、头指针单元、下一指针单元、尾指针单元、轮询仲裁单元和数据存储单元相连,此外,高级可扩展接口单元与用户模块、建立链表单元、释放链表单元相连,指令指针寄存器单元与建立链表单元、释放链表单元和空指针获取单元相连。
本发明的用于网络接口支持多链接和重传的数据缓存***直接将数据缓存模块放到网络接口设备上,核心运算设备直接访问网络接口的数据缓存模块中缓存的数据,而不需要通过内存在核心运算设备和网络接口之间搬运数据,进而可以降低数据搬运产生的延时,同时可以根据网络接口传输速度、报文负载数据量和核心运算模块要求来设计数据缓存模块的共享缓存空间的容量。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有被编程或配置以执行上述的用于网络接口支持多链接和重传的数据缓存方法的计算机程序。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (5)
1.一种用于网络接口支持多链接和重传的数据缓存方法,其特征在于,网络接口设备上的数据缓存和释放包括以下步骤:
根据TCP报文的参数和同时缓存的链接数设置共享缓存空间的大小,所述共享缓存空间的大小为同时缓存的连接数、每个连接的包数以及TCP报文的最大负载的乘积,根据链接头指针的数量设置头指针RAM空间的大小,根据链接尾指针数量设置尾指针RAM空间的大小,根据用于对应共享缓存空间中每个存储单元下一跳地址的下一跳指针的数量设置下一跳指针RAM空间的大小,根据共享缓存空间的存储单元数量设置用于空闲指针映射的空闲指针映射RAM空间的大小;
1)在共享缓存空间中寻找空闲的存储位置,将多个请求缓存的数据存入共享缓存空间的空闲位置中,所述请求缓存的数据是面向链接的数据,所述数据存入共享缓存空间的过程为建立链表的过程,建立链表的具体步骤包括:
A1)空操作:复位后建立链表过程处在空操作状态;
A2)初始化操作:进行链表元素初始化,初始化完成后发送初始化完成报告并监听请求,如果收到链表元素初始化配置,则重新进行链表元素初始化操作,如果收到端口请求,进入步骤A3);
A3)指针获取操作:判断空闲指针FIFO的空满状态,如果空闲指针FIFO为非满状态,则在空闲指针映射中扫描并获取状态为空闲的指针,所述指针与共享缓存空间中存储单元一一对应,将获取到的指针写入空闲指针FIFO,如果空闲指针FIFO为非空状态,则进入步骤A4);
A4)指针更新操作:从空闲指针FIFO读取一个指针并将该指针状态更改为已用,然后接收请求数据,如果请求数据是链接的第一个数据,则将被读取的指针作为头指针写入对应链接位置的头指针RAM空间;如果请求数据是链接的最后一个数据,则将被读取的指针作为尾指针写入对应链接位置的尾指针RAM空间;如果请求数据是链接的中间数据,则将被读取的指针作为下一跳指针写入下一跳指针RAM空间;
A5)写数据操作:在获取到写地址后开始将请求数据根据在链接中的位置分别写入到头指针、尾指针或下一跳指针对应的存储单元里,如果请求数据为最后一笔数据,则进入步骤A1),如果当前存储单元写满,则进入步骤A3)获取状态为空闲的下一个指针并将对应的下一个存储单元的地址作为当前存储单元的下一跳地址;
2)将共享缓存空间中面向链接的数据按照轮询调度方式从共享缓存空间释放,数据报文发送一段时间后,如果没有收到数据报文接收端的确认,重新从共享缓存空间读取之前的数据并从共享缓存空间释放,所述数据从共享缓存空间释放的过程为释放链表的过程,释放链表的具体步骤包括:
B1)空操作:复位后链表释放过程处在空操作状态,如果轮询调度仲裁出来需要释放的链接则发送对应链接的释放链表请求并进入步骤B2);
B2)指针获取操作:根据链接的释放链表请求中轮询调度出来的链接匹配头指针RAM空间得到对应的头指针,同时发送释放链表请求给核心运算模块或网络接口,收到请求响应后进入步骤B3);
B3)读数据操作:从共享缓存空间根据头指针找到对应的存储单元,读取头指针对应的存储单元内存储的数据,直到数据全部释放完后进入步骤B4),如果链表释放的数据方向是核心运算模块,一直释放数据直到数据全部释放完毕;如果链表释放的数据方向是网络接口,释放的数据达到当前数据报文负载的数据量后停止链表释放,保存头指针和下一跳指针,等待并收到确认后继续进行链表释放并将被保存的头指针和下一跳指针置为空闲指针,若等待超时则根据被保存的头指针和下一跳指针从共享缓存空间中获取上一数据报文负载的数据并重新进行链表释放;
B4)指针更新操作:更新空闲存储单元状态,如果头指针对应的存储单元下一跳地址不为空,将下一跳地址匹配下一跳指针RAM空间获取下一跳指针并作为新的头指针,返回步骤B3)进行下一个存储单元的数据释放;如果头指针对应的存储单元下一跳地址为空或释放的数据为链接最后的数据,返回步骤B1)等待释放下一个链接的数据。
2.根据权利要求1所述的用于网络接口支持多链接和重传的数据缓存方法,其特征在于,所述共享缓存空间采用单向链表的方式进行管理。
3.根据权利要求1所述的用于网络接口支持多链接和重传的数据缓存方法,其特征在于,步骤B1)中还包括空指针搜集的步骤,具体包括:复位后如果空闲指针FIFO是非满状态,查找共享缓存空间里的空闲存储单元,将空闲存储单元对应的空闲指针写入空闲指针FIFO,如果空闲指针FIFO已经被写满,停止查找共享缓存空间里的空闲存储单元。
4.一种用于网络接口支持多链接和重传的数据缓存***,包括计算机设备,其特征在于,所述计算机设备被编程或配置以执行权利要求1~3任一所述的用于网络接口支持多链接和重传的数据缓存方法。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有被编程或配置以执行权利要求1~3任一所述的用于网络接口支持多链接和重传的数据缓存方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010654252.1A CN111538694B (zh) | 2020-07-09 | 2020-07-09 | 一种用于网络接口支持多链接和重传的数据缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010654252.1A CN111538694B (zh) | 2020-07-09 | 2020-07-09 | 一种用于网络接口支持多链接和重传的数据缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538694A CN111538694A (zh) | 2020-08-14 |
CN111538694B true CN111538694B (zh) | 2020-11-10 |
Family
ID=71979758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010654252.1A Active CN111538694B (zh) | 2020-07-09 | 2020-07-09 | 一种用于网络接口支持多链接和重传的数据缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538694B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650449B (zh) * | 2020-12-23 | 2022-12-27 | 展讯半导体(南京)有限公司 | 缓存空间的释放方法、释放***、电子设备及存储介质 |
CN113014308B (zh) * | 2021-02-23 | 2022-08-02 | 湖南斯北图科技有限公司 | 一种卫星通信大容量通道并行的物联网数据接收方法 |
CN115190085A (zh) * | 2022-05-26 | 2022-10-14 | 中科驭数(北京)科技有限公司 | 一种基于smb传输的数据共享方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195783B (zh) * | 2010-03-11 | 2015-04-08 | 瑞昱半导体股份有限公司 | 可共享缓冲器的网络接口卡与缓冲器共享方法 |
CN106059957B (zh) * | 2016-05-18 | 2019-09-10 | 中国科学院信息工程研究所 | 一种高并发网络环境下快速流表查找方法和*** |
CN108111329A (zh) * | 2016-11-25 | 2018-06-01 | 广东亿迅科技有限公司 | 基于tcp长链接的海量用户接入方法及*** |
CN109842585B (zh) * | 2017-11-27 | 2021-04-13 | 中国科学院沈阳自动化研究所 | 面向工业嵌入式***的网络信息安全防护单元和防护方法 |
CN107995129B (zh) * | 2017-11-30 | 2021-12-17 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN111371920A (zh) * | 2020-03-16 | 2020-07-03 | 广州根链国际网络研究院有限公司 | Dns前端解析方法及*** |
-
2020
- 2020-07-09 CN CN202010654252.1A patent/CN111538694B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111538694A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538694B (zh) | 一种用于网络接口支持多链接和重传的数据缓存方法 | |
US6307789B1 (en) | Scratchpad memory | |
US8719456B2 (en) | Shared memory message switch and cache | |
US5752078A (en) | System for minimizing latency data reception and handling data packet error if detected while transferring data packet from adapter memory to host memory | |
KR0169248B1 (ko) | 패킷 상호 연결망에서의 메시지 송신 장치 및 메시지 송신 제어방법 | |
US6970921B1 (en) | Network interface supporting virtual paths for quality of service | |
US6895457B2 (en) | Bus interface with a first-in-first-out memory | |
EP1826677A1 (en) | Apparatus and method for performing DMA data transfer | |
CN113225307B (zh) | 卸载引擎网卡中描述符预读取的优化方法、***及终端 | |
US7447872B2 (en) | Inter-chip processor control plane communication | |
US7860120B1 (en) | Network interface supporting of virtual paths for quality of service with dynamic buffer allocation | |
CN111221759A (zh) | 一种基于dma的数据处理***及方法 | |
CN113590512A (zh) | 可直连外设设备的自启动dma装置及应用 | |
US7552232B2 (en) | Speculative method and system for rapid data communications | |
US20060259648A1 (en) | Concurrent read response acknowledge enhanced direct memory access unit | |
JPH08241186A (ja) | バッファメモリ管理ユニット及びバッファメモリ管理方法 | |
US10095643B2 (en) | Direct memory access control device for at least one computing unit having a working memory | |
US6535942B1 (en) | Method for reducing processor interrupt load | |
US20170147517A1 (en) | Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method | |
CN113609041A (zh) | 一种数据传输方法及*** | |
JPH03127154A (ja) | 転送制御システム | |
JP2924783B2 (ja) | リモートリード処理方法およびその装置 | |
US7620702B1 (en) | Providing real-time control data for a network processor | |
JP3044653B2 (ja) | ゲートウェイ装置 | |
CN117312197A (zh) | 报文处理方法、装置、电子设备及非易失性存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |