CN116893987B - 硬件加速方法、硬件加速器及硬件加速*** - Google Patents
硬件加速方法、硬件加速器及硬件加速*** Download PDFInfo
- Publication number
- CN116893987B CN116893987B CN202311162990.4A CN202311162990A CN116893987B CN 116893987 B CN116893987 B CN 116893987B CN 202311162990 A CN202311162990 A CN 202311162990A CN 116893987 B CN116893987 B CN 116893987B
- Authority
- CN
- China
- Prior art keywords
- data packet
- description field
- descriptors
- descriptor
- destination data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000001133 acceleration Effects 0.000 title claims abstract description 29
- 230000005055 memory storage Effects 0.000 claims description 16
- 230000003993 interaction Effects 0.000 abstract description 18
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种硬件加速方法、硬件加速器及硬件加速***。包括:从输入FIFO按序读取描述符,从描述符中解析出源数据包的首地址和长度、目的数据包的首地址;根据源数据包的首地址和长度,从内存存储器中读取源数据包;按照预设规则对源数据包进行解码处理或者编码处理,得到目的数据包;根据目的数据包的首地址将目的数据包写入内存存储器;更新描述符,将更新后的描述符写入输出FIFO。本发明能够减少软硬件之间的交互,降低对内存资源的需求,提高***性能。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种硬件加速方法、硬件加速器及硬件加速***。
背景技术
将一些复杂比较消耗CPU资源的运算交给硬件处理是提升***性能的常用手段,但由于某些网络数据类型多样,在进行部分硬件处理之后仍需要软件的协助,或者软件处理之后仍需要硬件处理,软硬件的来回交互会降低***整体的性能。因此如何避免软硬件的频繁交互是提高***性能的关键之一。
在目前的软件和硬件的交互方式中,一般都是采用TX_FIFO和RX_FIFO双FIFO的管理机制,也就是说在接收端和发送端都需要申请两份FIFO,方便数据的发送和内存的回收。这对于一些内存资源紧张的嵌入式平台,是不太友好的。
发明内容
有鉴于此,本发明提供了一种硬件加速方法、硬件加速器及硬件加速***,能够减少软硬件之间的交互,降低对内存资源的需求,提高***性能。
第一方面,本发明提供一种硬件加速方法,包括:
从输入FIFO按序读取描述符,所述描述符包括以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段和目的数据包的长度的描述字段;
从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
根据所述源数据包的首地址和长度,从内存存储器中读取源数据包;
按照预设规则对所述源数据包进行解码处理或者编码处理,得到目的数据包;
根据所述目的数据包的首地址将所述目的数据包写入内存存储器;
更新所述描述符,包括:根据所述目的数据包的实际长度更新所述目的数据包的长度的描述字段;
将更新后的描述符写入输出FIFO,以便处理器从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
可选地,所述描述符还包括以下描述字段:目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;
所述更新所述描述符,还包括:根据数据处理的实际情况更新所述目的数据包的离散帧特性的描述字段、所述数据错误的描述字段和所述CRC校验结果的描述字段。
可选地,所述目的数据包的离散帧特性的描述字段包括多个bit,其中最高位的1bit为帧结束标识位,其余的多个bit为离散帧序号指示位。
可选地,所述数据错误的描述字段包括多个bit,其中1bit用于表示源数据包不是协议数据包的情况,1bit用于表示源数据包长度超出协议规定的情况。
可选地,所述方法还包括:
查询所述输出FIFO的状态,当满足任意一种中断触发条件时,触发中断以便处理器及时地从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包;
所述中断触发条件包括:
所述输出FIFO已满;
所述输出FIFO由空变成非空且填充到一定数量;
所述输出FIFO由空变成非空且配置的等待时间已到。
第二方面,本发明提供一种硬件加速器,包括:
数据读取模块,用于从输入FIFO按序读取描述符,所述描述符包括以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段和目的数据包的长度的描述字段,从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
描述符解析模块,用于从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
所述数据读取模块,还用于根据所述源数据包的首地址和长度,从内存存储器中读取源数据包;
数据处理模块,用于按照预设规则对所述源数据包进行解码处理或者编码处理,得到目的数据包;
数据回写模块,用于根据所述目的数据包的首地址将所述目的数据包写入内存存储器;
描述符更新模块,用于更新所述描述符,包括:根据所述目的数据包的实际长度更新所述目的数据包的长度的描述字段;
所述数据回写模块,还用于将更新后的描述符写入输出FIFO,以便处理器从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
可选地,所述描述符还包括以下描述字段:目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;
所述描述符更新模块,还用于:根据数据处理的实际情况更新所述目的数据包的离散帧特性的描述字段、所述数据错误的描述字段和所述CRC校验结果的描述字段。
第三方面,本发明提供一种硬件加速***,包括上述硬件加速器,还包括:内存存储器和处理器,
所述内存存储器用于存储源数据包和目的数据包;
且所述内存存储器的部分存储空间被配置为输入FIFO和输出FIFO;
所述输入FIFO用于存储描述符;
所述输出FIFO用于存储更新后的描述符;
所述处理器用于将源数据包写入内存存储器,确定所述描述符中的以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段,并将所述描述符批量写入所述输入FIFO;
还用于从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
第四方面,本发明提供一种芯片,包括上述硬件加速***。
第五方面,本发明提供一种电子设备,包括上述芯片。
本发明提供了一种硬件加速方法、硬件加速器及硬件加速***,在软硬件交互时定义了灵活精简的描述符,硬件加速器通过描述符获取源数据包,并将目的数据包的信息以描述符的形式告知CPU,减少了软硬件之间的交互,充分发挥硬件加速器的性能优势。而且软硬件的交互只需要一个输入FIFO和一个输出FIFO,在占用更少内存的情况下,实现了软硬件交互的目的。
附图说明
图1为本发明一实施例的硬件加速方法的流程示意图;
图2为本发明一实施例的硬件加速器的结构示意图;
图3为本发明一实施例的硬件加速***的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本发明一个实施例提供一种硬件加速方法,如图1所示,该方法包括步骤S101~S107。
步骤S101,从输入FIFO按序读取描述符,描述符包括以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段和目的数据包的长度的描述字段。
步骤S102,从描述符中解析出源数据包的首地址和长度、目的数据包的首地址。
对于存储在输入FIFO的描述符,内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段,这几个字段是有实际意义的。根据这几个字段可以解析出源数据包的首地址和长度、目的数据包的首地址。
目的数据包的长度的描述字段,最终要根据目的数据包的实际长度进行更新,因此在这里无实际意义。
描述符中的各描述字段是由CPU确定的,并由CPU批量写入输入FIFO。
步骤S103,根据源数据包的首地址和长度,从内存存储器中读取源数据包。
本申请中,硬件加速器待处理的数据包称为源数据包。硬件加速器用于解码的时候,源数据包可以是从外部接口接收的PPP数据帧。硬件加速器用于编码的时候,源数据包可以是上层应用程序产生的IP报文。
源数据包也是由CPU写入内存存储器中的。
步骤S104,按照预设规则对源数据包进行解码处理或者编码处理,得到目的数据包。
本申请中,硬件加速器解码或编码处理完生成的数据包称为目的数据包。
硬件加速器对源数据包进行解码处理,包括:对收到的PPP数据帧进行解析,解析出原始报文;进行CRC校验,验证数据的准确性;去掉帧头、地址信息、控制信息、CRC值和帧尾。
硬件加速器对源数据包进行编码处理,包括:计算原始报文、控制字段和地址字段的CRC值;转义并添加帧头(0x7E)、地址字段(0xFF)和控制字段(0x03);转义并添加原始报文数据;转义并添加之前计算好的CRC值;添加帧尾(0x7E)。
步骤S105,根据目的数据包的首地址将目的数据包写入内存存储器。
对于内存存储器(DDR)紧张的***,可以将目的地址(目的数据包的地址)和源地址(源数据包的地址)指定为同一块存储空间,利用硬件加速器内部缓存处理的时间差实现原址操作。
步骤S106,更新描述符,包括:根据目的数据包的实际长度更新目的数据包的长度的描述字段.
步骤S107,将更新后的描述符写入输出FIFO,以便处理器从输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
本实施例中,输入FIFO(可以表示为IN_FIFO)、输出FIFO(可以表示为OUT_FIFO)是占用内存存储器(DDR)的部分空间配置形成的。通过地址区别于源数据包和目的数据包的存储空间。由于软硬件的交互只需要一个输入FIFO和一个输出FIFO,在占用更少内存的情况下,实现了软硬件交互的目的。
本实施例中,硬件加速器在具体处理单个数据包时,硬件加速器首先将该单个数据包对应的描述符解析,然后根据内部缓存的深度从描述符指定的源地址取回一定量的源数据进行硬件处理,然后根据描述符指定的目的地址写出目的数据包,并实时根据数据处理情况动态更新描述符并写出更新后的描述符。整个过程可以简单描述为:取描述符->取源数据包 ->数据包处理 ->写目的数据包 ->写描述符。然后根据性能要求,这5个步骤可以做到全流水操作或者部分流水,提高性能。
关于内部缓存的深度,有如下关系:***延迟越大,内部缓存深度越深;处理性能越高,内部缓存深度越深。
举例来说:假设性能要求每个cycle处理半个byte,然后***平均延迟是60个cycle左右,那么缓存深度16就可以了(宽度32), 满足一个burst8的ping-pong使用需求。因为8*32/4=64>60。
对于源数据包和目的数据包,其描述符和数据包都是一一对应的,这样便于满足多样化的数据存取需求。对应于实际场景中的离散帧等复杂情况,会导致源数据包和目的数据包的对应关系相对复杂,存在一对多,多对一等各种复杂的排列组合情况。所以硬件加速器不仅要正确完成最基本的编解码操作,还需要记录源数据包和目的数据包之间的关系以及一些异常情况,及时处理源数据包的合并、拆分,丢弃等各种情况,根据数据处理情况动态更新描述符并写出更新后的描述符。CPU只需要拿到OUT_FIFO中的描述符,就可以全面了解目的数据包的情况,避免了软硬件的频繁交互。
进一步地,为满足上述复杂情况,在一个实施例中,描述符还包括以下描述字段:目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;
更新描述符,还包括:根据数据处理的实际情况更新目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段。
表1给出了软硬件交互的描述符的主要字段及其含义。
表1
其中,目的数据包的离散帧特性的描述字段包括多个bit,以8bit作为示例,可以表示为Seq[7:0],其中最高位的1bit为帧结束标识位,其余的7个bit为离散帧序号指示位。
数据错误的描述字段可以表示为Errcode,包括多个bit,其中1bit用于表示源数据包不是协议数据包的情况,1bit用于表示源数据包长度超出协议规定的情况,但不限于这几种错误类型。
下面以一个具体例子来说明源数据包的处理情况以及如何更新目的数据包的离散帧特性的描述字段Seq[7:0]。
有3个源数据包需要解码处理,分别是1000 byte,1000 byte,500 byte,以A/B/C表示(此过程还不考虑超长错误等特殊情况)。
A数据包1000 byte被拆成200,500,300个byte,但最后不是以7e结尾;
B数据包1000byte被拆成300,400, 300个byte,最后以7e 结尾;
C数据包500 byte被拆成50,450个byte,最后以7e 结尾。
则有:
1~200,201~700 都作为独立帧输出,其seq=0;
701~1000 作为一个离散帧的第一帧输出,其seq[7:0]=0000_0001;
1001~1300 作为一个离散帧的最后一帧输出,其seq[7:0]= 1000_0010;
1301~1700,1701~2000 都作为独立帧输出,其seq=0;
2001~2050,2051~2500 都作为独立帧输出,其seq=0。
在这3个源数据包中都存在1对多的情况,但A的前2包、B的后2包和C 包都是输出seq=0,称为独立帧,A的第3包和B的第1包,seq 非0,这种情况才叫做离散帧,离散帧是由多个地址不连续的数据段组成,离散帧对应于多个源数据包,方便软件借此来识别这批数据之间是有关系的。
硬件加速器作为解码器的时候需要更新目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;作为编码器的时候需要更新描述符中目的数据包的长度的描述字段,也需要更新数据错误的描述字段(比如输出超出指定长度)和CRC校验结果的描述字段。
进一步说明的是,本申请采用了FIFO的结构来减少软硬件的交互,CPU可以随时通过主动查询FIFO的point的方式来侦测硬件加速器的运行情况便于后续操作,但中断机制也是必不可少的一个机制,目前硬件加速器中定义了如下中断(各中断都有对应的maskbit来屏蔽上报):
1、crc错误或者长度超出等异常情况,会产生故障中断,这部分信息也会带入写出具体的描述符中;
2、OUT_FIFO已满,硬件加速器停止工作,此时CPU需要及时将编解码完成的数据包处理掉,释放OUT_FIFO空间以便加速器继续运作;
3、OUT_FIFO由空变成非空且填充到一定数量(软件可配置此阈值)才触发中断,这样CPU可以批处理数据包以及尽可能的减少中断;
4、当OUT_FIFO由空变成非空,且配置的等待时间已到,才触发中断,这样CPU可以及时读取数据以及尽可能的减少中断。
有了上述中断机制,这样编解码过程中一旦有上述情况出现,都可以及时反馈给CPU,CPU可根据当前场景需求来决定是否马上通过配置来干预。
因此,在一个实施例中,硬件加速方法还包括:
查询输出FIFO的状态,当满足任意一种中断触发条件时,触发中断以便处理器及时地从输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包;
所述中断触发条件包括:
输出FIFO已满;
输出FIFO由空变成非空且填充到一定数量;
输出FIFO由空变成非空且配置的等待时间已到。
本发明实施例提供的一种硬件加速方法,在软硬件交互时定义了灵活精简的描述符,硬件加速器通过描述符获取源数据包,并将目的数据包的信息以描述符的形式告知CPU,减少了软硬件之间的交互,充分发挥硬件加速器的性能优势。而且软硬件的交互只需要一个输入FIFO和一个输出FIFO,在占用更少内存的情况下,实现了软硬件交互的目的。
另一方面,本发明一个实施例提供一种硬件加速器,如图2所示,该硬件加速器包括:数据读取模块201、描述符解析模块202、数据处理模块203、数据回写模块204和描述符更新模块205,
数据读取模块201,用于从输入FIFO按序读取描述符,描述符包括以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段和目的数据包的长度的描述字段,从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
描述符解析模块202,用于从描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
数据读取模块201,还用于根据所述源数据包的首地址和长度,从内存存储器中读取源数据包;
数据处理模块203,用于按照预设规则对源数据包进行解码处理或者编码处理,得到目的数据包;
数据回写模块204,用于根据目的数据包的首地址将目的数据包写入内存存储器;
描述符更新模块205,用于更新描述符,包括:根据目的数据包的实际长度更新目的数据包的长度的描述字段;
数据回写模块204,还用于将更新后的描述符写入输出FIFO,以便处理器从输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
进一步地,在一个实施例中,描述符还包括以下描述字段:目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;
描述符更新模块205,还用于:根据数据处理的实际情况更新目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段。
本发明实施例提供的硬件加速器是用于执行上述方法实施例的,其具体流程和详细内容请参照上述实施例,此处不再赘述。
另一方面,本发明一个实施例还提供一种硬件加速***,图3为硬件加速***的结构示意图,如图3所示,硬件加速***包括上述实施例的硬件加速器301,还包括:内存存储器302和通信总线303,硬件加速器301和内存存储器302通过通信总线303完成相互间的通信。内存存储器302用于存储源数据包和目的数据包,源数据包和目的数据包占用内存存储器的大部分存储空间,且内存存储器302的部分存储空间被配置为输入FIFO和输出FIFO,输入FIFO用于存储描述符,输出FIFO用于存储更新后的描述符。输入FIFO、输出FIFO、源数据包和目的数据包的存储空间是靠地址来区分。另外,输入FIFO和输出FIFO大小可以根据实际***内容空间来决定,一般FIFO开得越大,其可达到的性能越高。
进一步参考图3,硬件加速***还包括:
处理器304,用于将源数据包写入内存存储器,确定描述符中的以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段,并将描述符批量写入所述输入FIFO;
还用于从输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
硬件加速***工作时,CPU先将准备好的描述符批量写入IN_FIFO,更新IN_FIFO对应的写指针,硬件加速器从IN_FIFO读取描述符之后,从描述符指定的源地址读取源数据包,更新IN_FIFO对应的读指针,然后顺序对各源数据包进行硬件解码或编码,把目的数据包写到描述符指定的目的地址,然后更新描述符,将更新后的描述符写入OUT_FIFO,以便CPU读取目的数据包,再更新OUT_FIFO的写指针。CPU从OUT_FIFO将描述符读走之后,更新OUT_FIFO的读指针,再从描述符指定的目的地址读取目的数据包,从而完成整个数据处理流程。
另一方面,本发明一个实施例提供一种芯片,该芯片包括上述实施例的硬件加速***。
另一方面,本发明一个实施例提供一种电子设备,该电子设备包括上述芯片。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种硬件加速方法,其特征在于,所述方法包括:
从输入FIFO按序读取描述符,所述描述符是由处理器批量写入所述输入FIFO的,所述描述符包括以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段和目的数据包的长度的描述字段;
从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
根据所述源数据包的首地址和长度,从内存存储器中读取源数据包;
按照预设规则对所述源数据包进行解码处理或者编码处理,得到目的数据包;
根据所述目的数据包的首地址将所述目的数据包写入内存存储器;
更新所述描述符的描述字段,包括:根据所述目的数据包的实际长度更新所述目的数据包的长度的描述字段;
将更新后的描述符写入输出FIFO,以便处理器从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
2.根据权利要求1所述的方法,其特征在于,所述描述符还包括以下描述字段:目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;
所述更新所述描述符的描述字段,还包括:根据数据处理的实际情况更新所述目的数据包的离散帧特性的描述字段、所述数据错误的描述字段和所述CRC校验结果的描述字段。
3.根据权利要求2所述的方法,其特征在于,所述目的数据包的离散帧特性的描述字段包括多个bit,其中最高位的1bit为帧结束标识位,其余的多个bit为离散帧序号指示位。
4.根据权利要求2所述的方法,其特征在于,所述数据错误的描述字段包括多个bit,其中1bit用于表示源数据包不是协议数据包的情况,1bit用于表示源数据包长度超出协议规定的情况。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
查询所述输出FIFO的状态,当满足任意一种中断触发条件时,触发中断以便处理器及时地从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包;
所述中断触发条件包括:
所述输出FIFO已满;
所述输出FIFO由空变成非空且填充到一定数量;
所述输出FIFO由空变成非空且配置的等待时间已到。
6.一种硬件加速器,其特征在于,包括:
数据读取模块,用于从输入FIFO按序读取描述符,所述描述符是由处理器批量写入所述输入FIFO的,所述描述符包括以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段和目的数据包的长度的描述字段,从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
描述符解析模块,用于从所述描述符中解析出源数据包的首地址和长度、目的数据包的首地址;
所述数据读取模块,还用于根据所述源数据包的首地址和长度,从内存存储器中读取源数据包;
数据处理模块,用于按照预设规则对所述源数据包进行解码处理或者编码处理,得到目的数据包;
数据回写模块,用于根据所述目的数据包的首地址将所述目的数据包写入内存存储器;
描述符更新模块,用于更新所述描述符的描述字段,包括:根据所述目的数据包的实际长度更新所述目的数据包的长度的描述字段;
所述数据回写模块,还用于将更新后的描述符写入输出FIFO,以便处理器从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
7.根据权利要求6所述的硬件加速器,其特征在于,所述描述符还包括以下描述字段:目的数据包的离散帧特性的描述字段、数据错误的描述字段和CRC校验结果的描述字段;
所述描述符更新模块,还用于:根据数据处理的实际情况更新所述目的数据包的离散帧特性的描述字段、所述数据错误的描述字段和所述CRC校验结果的描述字段。
8.一种硬件加速***,其特征在于,包括如权利要求6或7所述的硬件加速器,还包括:内存存储器和处理器,
所述内存存储器用于存储源数据包和目的数据包;
且所述内存存储器的部分存储空间被配置为输入FIFO和输出FIFO;
所述输入FIFO用于存储描述符;
所述输出FIFO用于存储更新后的描述符;
所述处理器用于将源数据包写入内存存储器,确定所述描述符中的以下描述字段:内存存储器的存储空间首地址的描述字段、源数据包的首地址偏移的描述字段、源数据包的长度的描述字段、目的数据包的首地址偏移的描述字段,并将所述描述符批量写入所述输入FIFO;
还用于从所述输出FIFO批量读取更新后的描述符,根据更新后的描述符从内存存储器读取目的数据包。
9.一种芯片,其特征在于,所述芯片包括如权利要求8所述的硬件加速***。
10.一种电子设备,其特征在于,所述电子设备包括如权利要求9所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311162990.4A CN116893987B (zh) | 2023-09-11 | 2023-09-11 | 硬件加速方法、硬件加速器及硬件加速*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311162990.4A CN116893987B (zh) | 2023-09-11 | 2023-09-11 | 硬件加速方法、硬件加速器及硬件加速*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116893987A CN116893987A (zh) | 2023-10-17 |
CN116893987B true CN116893987B (zh) | 2024-01-12 |
Family
ID=88311149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311162990.4A Active CN116893987B (zh) | 2023-09-11 | 2023-09-11 | 硬件加速方法、硬件加速器及硬件加速*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116893987B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704442A (zh) * | 2019-09-29 | 2020-01-17 | 深圳无域科技技术有限公司 | 一种大数据的实时获取方法及装置 |
CN110765044A (zh) * | 2018-07-26 | 2020-02-07 | 展讯通信(上海)有限公司 | 数据包传输装置及*** |
CN111211990A (zh) * | 2019-12-31 | 2020-05-29 | 北京旋极信息技术股份有限公司 | 一种数据包处理方法和装置 |
CN113986533A (zh) * | 2021-10-15 | 2022-01-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、dma控制器及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2656216B1 (en) * | 2010-12-20 | 2018-12-19 | Marvell World Trade Ltd. | Device with descriptor scheduler and corresponding method and system |
US10402425B2 (en) * | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10055358B2 (en) * | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US20220201103A1 (en) * | 2022-03-09 | 2022-06-23 | Intel Corporation | Metadata compaction in packet coalescing |
-
2023
- 2023-09-11 CN CN202311162990.4A patent/CN116893987B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765044A (zh) * | 2018-07-26 | 2020-02-07 | 展讯通信(上海)有限公司 | 数据包传输装置及*** |
CN110704442A (zh) * | 2019-09-29 | 2020-01-17 | 深圳无域科技技术有限公司 | 一种大数据的实时获取方法及装置 |
CN111211990A (zh) * | 2019-12-31 | 2020-05-29 | 北京旋极信息技术股份有限公司 | 一种数据包处理方法和装置 |
CN113986533A (zh) * | 2021-10-15 | 2022-01-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、dma控制器及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116893987A (zh) | 2023-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114556956A (zh) | 使用旁路子流和经熵编码子流的低时延编码 | |
CN111010253B (zh) | 一种基于hinoc协议的himac拆帧***、方法 | |
US10817460B2 (en) | RDMA data sending and receiving methods, electronic device, and readable storage medium | |
EP1934761B1 (en) | Dma transfer and hardware acceleration of ppp frame processing | |
CN112332951B (zh) | 一种以太网帧抢占方法、装置、设备及存储介质 | |
US8990422B1 (en) | TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data | |
CN105357229B (zh) | 一种视频处理方法及装置 | |
US8745235B2 (en) | Networking system call data division for zero copy operations | |
CN116893987B (zh) | 硬件加速方法、硬件加速器及硬件加速*** | |
CN115729879A (zh) | 数据帧格式、芯片通信方法及芯片 | |
CN108460044B (zh) | 数据的处理方法和装置 | |
CN112565105A (zh) | 一种降低时间敏感帧转发时延的方法、装置及设备 | |
CN115834027B (zh) | 一种消息填充方法、装置、设备及计算机可读存储介质 | |
WO2023098430A1 (zh) | 一种数据包的处理方法、通信装置及通信*** | |
CN115695576A (zh) | 一种兼容tsn帧抢占协议的数据帧转换方法及装置 | |
CN114490459A (zh) | 数据传输方法、装置、设备、接收机和存储介质 | |
CN111722940B (zh) | 基于异步串口的消息传输方法、终端设备及传输*** | |
US20010018732A1 (en) | Parallel processor and parallel processing method | |
KR101353992B1 (ko) | 데이터 패킷 조립을 위한 방법 및 디바이스 | |
US20020078246A1 (en) | Method and system for network protocol processing | |
US7272663B2 (en) | Method and system for delineating data segments subjected to data compression | |
CN117032644B (zh) | 基于嵌入式软件的串口通信***及方法 | |
CN115291898B (zh) | 一种多fpga从模式快速烧录方法及装置 | |
CN113454935B (zh) | 一种线路编码方法及装置 | |
CN115086192A (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 |