CN112612518B - 一种基于飞腾平台的网络checksum算法优化方法 - Google Patents
一种基于飞腾平台的网络checksum算法优化方法 Download PDFInfo
- Publication number
- CN112612518B CN112612518B CN202011420425.XA CN202011420425A CN112612518B CN 112612518 B CN112612518 B CN 112612518B CN 202011420425 A CN202011420425 A CN 202011420425A CN 112612518 B CN112612518 B CN 112612518B
- Authority
- CN
- China
- Prior art keywords
- data
- neon
- cnt
- buff
- result
- 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 24
- 238000005457 optimization Methods 0.000 title claims abstract description 15
- 229910052754 neon Inorganic materials 0.000 claims abstract description 35
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000009825 accumulation Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 7
- 230000005540 biological transmission Effects 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 238000007792 addition Methods 0.000 description 16
- 125000004122 cyclic group Chemical group 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开了一种基于飞腾平台的网络checksum算法优化方法,其实现过程为:首先装载128bit数据到NEON 128位寄存器中,以减少循环次数;然后采用NEON向量成对相加指令,将NEON 128位寄存器中数据划分为8个16bit数据进行成对相加,而当数据流处理到一定长度时则切换到arm64汇编来处理;然后再进行64bit转16bit算法操作。本发明的一种基于飞腾平台的网络checksum算法优化方法与现有技术相比,有效降低了网络UDP接收数据时checksum算法所带来的延时,从而达到提高UDP包数据传输效率的目地,具有自主可控性、实现方式的独创性、实现效果明显等优点。
Description
技术领域
本发明属于通信及计算机技术领域,具体涉及一种基于飞腾平台的网络checksum算法优化方法。
背景技术
国产飞腾系列处理器是基于ARM64体系结构,全面兼容ARMV8指令集,内部实现了NEON拓展指令。这种拓展指令SIMD部分弥补了飞腾处理器在CPU频率方面存在的弱势,可提高数据密集型应用内存访问和数据计算的速度。其中,常见的数据密集型应用包括有图形计算、娱乐影音、数据校验等。
以太网是当今现有局域网采用的最通用的通信协议标准,在传输层有多种协议可选,其中UDP协议因为结构精简、传输开销小而在局域网上应用非常广泛。UDP协议是一个简单的面向数据报的传输层协议,提供的是非面向连接的、不可靠的数据流传输。UDP协议是在以太网的数据包中的数据段,UDP封装包头中包括源端口、目的端口、UDP长度以及UDP的checksum,对于16bit UDP的checksum校验和计算会包括UDP的checksum域后面的所有数据负载。
据悉,现有的UDP的checksum校验和计算方法是先将UDP伪包头、UDP包头和数据段划分为16bit的十六进制数,再对数据进行分组循环相加,产生的进位加在本次运算的个位上,然后对逐次循环相加的结果按bit位取反,将计算得到的结果回填到UDP的checksum校验和。因而,想要计算出UDP的checksum校验和,需要将数据流中的所有16bit数进行逐步的循环相加,而随着DUP包中所需要传输数据数量的增加,逐步循环相加的次数也会相应随着增加,这极大降低了UDP包数据传输的效率。
中国发明专利“UDP校验和的计算方法”(申请号CN:201210087407.3),该发明提出了一种UDP校验和的计算方法,其具体实现是:首先将UDP校验和设置为常量;然后按照传统的UDP校验和计算方法进行计算;最后,在UDP数据部分的尾部添加所获得的结果。该方法采用计算方法,简化了UDP数据包的打包流程,使所有数据只读一次就可以立即打包发送,但是并没有采取有效方法减少计算checksum校验和时数据流逐步相加的次数。
中国发明专利“一种校验和的计算方法及网络处理器”(申请号CN201510536324.1),该发明提出了一种校验和的计算方法及网络处理器,其具体实现是:首先多线程微引擎获取当前线程对应的计算参数,并将所述计算参数发送给计算单元;然后所述计算单元进行校验和计算,同时线程调度模块调度所述当前线程进入休眠状态;然后当计算完成时,所述计算单元将计算得到的校验和写入所述当前线程的校验和寄存器,并指示所述线程调度模块调度所述当前线程进入唤醒状态;然后当所述线程调度模块调度所述当前线程由唤醒状态进入工作状态时,所述多线程微引擎将所述计算得到的校验和写入所述数据存储单元中所述当前线程所对应的位置。该方法将checksum计算嵌入到多线程微引擎的流水线中,减少了调度环节,提高了网络处理器的性能。但是同样没有采取针对减少计算checksum逐步相加次数的有效方法。
发明内容
为解决上述问题,本发明提供了一种基于飞腾平台的网络checksum算法优化方法,所述方法包括步骤:
S1:确定NEON指令循环次数cnt_neon和汇编循环次数cnt_asm;
S2:定义NEON寄存器变量VA和VB,并初始化为0;
S3:判断cnt_neon>0是否成立;若是,执行步骤S4;若否,执行步骤S7;
S4:从buff中加载8个16bit数据到VB;
S5:采用UADALP向量加法指令完成VA与VB的向量加法计算;
S6:将cnt_neon减1,且将buff后移16字节,并返回步骤S3;
S7:将VA中的4个32bit数据累加到result;
S8:判断cnt_asm>0是否成立;若是,执行步骤S9;若否,执行步骤S12;
S9:从buff中加载4个16bit数据到X1;
S10:采用ADDS ADCS加法指令完成result+X1累加运算;
S11:将cnt_asm减1,且将buff后移8字节,并返回步骤S8;
S12:将buff剩余数据循环累加到result;
S13:将result转换为16bit数再取反。
和现有技术相比,本发明的优势在于:
(1)自主可控性,由于优化的checksum算法的设计和实现都是自主设计研发,具有完全的知识产权。
(2)实现方式的独创性,充分利用充分利用飞腾处理器的NEON特性并结合checksum算法特性,充分发挥NEON指令优势并结合汇编指令来减少数据逐步循环相加次数。
(3)实现效果明显,将优化之前的单字节处理扩宽为优化之后的16字节处理,大幅降低网络udp接收数据时checksum算法所带来延时,以及提升了UPD网络带宽。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中飞腾平台上的通用Checksum算法流程图;
图2为UADALP VA.4S,VB.8H指令执行示意图。
图3为本发明中的基于飞腾平台的Checksum算法优化方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
如图2-3,在本申请实施例中,本发明提供了一种基于飞腾平台的网络checksum算法优化方法,所述方法包括步骤:
S1:确定NEON指令循环次数cnt_neon和汇编循环次数cnt_asm;
S2:定义NEON寄存器变量VA和VB,并初始化为0;
S3:判断cnt_neon>0是否成立;若是,执行步骤S4;若否,执行步骤S7;
S4:从buff中加载8个16bit数据到VB;
S5:采用UADALP向量加法指令完成VA与VB的向量加法计算;
S6:将cnt_neon减1,且将buff后移16字节,并返回步骤S3;
S7:将VA中的4个32bit数据累加到result;
S8:判断cnt_asm>0是否成立;若是,执行步骤S9;若否,执行步骤S12;
S9:从buff中加载4个16bit数据到X1;
S10:采用ADDS ADCS加法指令完成result+X1累加运算;
S11:将cnt_asm减1,且将buff后移8字节,并返回步骤S8;
S12:将buff剩余数据循环累加到result;
S13:将result转换为16bit数再取反。
图1中最耗时的是循环运算部分,每次循环中只能处理16bit数据,且在每次循环中除了累加操作外还需要处理溢出情况,这将消耗大量的CPU指令周期。
飞腾全系列处理器都是64bit的,寄存器支持64bit宽的操作数,ADDS加法指令会影响飞腾CPU的条件码标志位,当结果溢出时条件码标志位C会置1,不溢出则置0,ADCS加法指令除了像ADDS加法指令会影响飞腾CPU的条件码标志位外,还会将运行结果额外加上标志位C。利用ADDS、ADCS加法指令一次运算就可以处理4个16bit数据,且无需额外考虑溢出操作。此外,飞腾全系列处理器支持NEON,NEON指令是128bit操作指令,一次可以处理8个16bit数,比ADDS、ADCS指令快1倍,但是NEON指令不像ADDS、ADCS指令无需额外考虑溢出操作,为了充分发挥NEON指令优势,可以采用NEON向量相加指令UADALP VA.4S,VB.8H进行累加操作,指令执行示意图如图2所示,该指令一次可以处理8个16bit的数据,另外循环累加u32+=u16+u16在不超过0xffff次循环是不会溢出的,所以只要保证循环次数不超过0xffff就无需在循环内部考虑溢出进位操作,对于超出0xffff次循环的部分则采用ARM64汇编指令ADDS、ADCS指令进行加速,这样既可以允分发挥128bit NEON指令的优势,又避免了其在溢出处理方式的劣势。
图1是当前飞腾平台未经优化的通用的网络checksum算法流程图,图3是经NEON优化之后的网络checksum算法流程图。它以图1为基础,并在此基础上加以改进,拓宽数据计算的通道,提高数据传输的效率。同样,实施例步骤不考虑数据地址对齐问题,如没对齐,只需简单进行转换即可,具体实施例步骤如下:
步骤S201:定义一个64bit宽的result并初始化为0。
步骤S202:确定NEON指令循环次数cnt_neon,确保其不大于0xffff,确定汇编循环次数cnt_asm。
步骤S203:定义一个4通道的128位NEON寄存器变量VA,每个通道为32位,并初始化为0,定义一个8通道的128位NEON寄存器变量VB,每个通道为16位,用于从buff中加载数据。
步骤S204:重复步骤S205,S206,S207直到cnt_neon为0。
步骤S205:通过LDR指令从buff中加载8个16bit的数据到NEON寄存器变量VB的8个通道。
步骤S206:采用一条NEON向量成对相加指令UADALP完成A0+=B0+B1,A1+=B2+B3,A2+=B4+B5,A3+=B6+B7操作。
步骤S207:数据buff向后移动16个字节,cnt_neon减1。
步骤S208:NEON寄存器变量VA累加到result,即result+=A0+A1+A2+A3;
步骤S209:重复步骤S210,S211,S212直到cnt_asm为0。
步骤S210:通过LDR指令从buf中加载4个16bit的数据到寄存器X1。
步骤S211:采用ADDS ADCS加法指令,完成result+=X1+C。
步骤S212:数据buff向后移动8个字节,cnt_asm减1。
步骤S213:将buff中剩余的数据循环累加到result,再将result转换为16bit数再取反,即得到checksum。
所述步骤S202)中,将cnt_neon最大设为0xffff,是为了防止neon向量成对相加指令UADALP产生溢出,U32+=U16+U16操作可以确保进行0xffff次循环相加是不会溢出产生进位。
所述步骤S206)中,A0、A1、A2、A3指的是NEON寄存器变量VA中4个32位通道,B0、B1、B2、B3、B4、B5、B6、B7是NEON寄存器变量VB中8个16位通道,具体完成的向量加法运算如图2所示。
所述步骤S213)中,在前面步骤中都是以128bit/64bit为单位进行处理的,所以buf中可能存在少数几个数据没有处理,这里的累加处理需要考虑溢出情况,但因为只有小于8字节的数据量,不会带来大延时。result进行64bit转换16bit操作就是将64bit划分为4个16bit数据,再累加这4个16bit数据即可。
和现有技术相比,本发明的优势在于:
(1)自主可控性,由于优化的checksum算法的设计和实现都是自主设计研发,具有完全的知识产权。
(2)实现方式的独创性,充分利用充分利用飞腾处理器的NEON特性并结合checksum算法特性,充分发挥NEON指令优势并结合汇编指令来减少数据逐步循环相加次数。
(3)实现效果明显,将优化之前的单字节处理扩宽为优化之后的16字节处理,大幅降低网络udp接收数据时checksum算法所带来延时,以及提升了UPD网络带宽。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (1)
1.一种基于飞腾平台的网络checksum算法优化方法,其特征在于,所述方法包括步骤:
S1:确定NEON指令循环次数cnt_neon和汇编循环次数cnt_asm;
S2:定义NEON寄存器变量VA和VB,并初始化为0;
S3:判断cnt_neon>0是否成立;若是,执行步骤S4;若否,执行步骤S7;
S4:从buff中加载8个16bit数据到VB;
S5:采用UADALP向量加法指令完成VA与VB的向量加法计算;
S6:将cnt_neon减1,且将buff后移16字节,并返回步骤S3;
S7:将VA中的4个32bit数据累加到result;
S8:判断cnt_asm>0是否成立;若是,执行步骤S9;若否,执行步骤S12;
S9:从buff中加载4个16bit数据到X1;
S10:采用ADDS ADCS加法指令完成result+X1累加运算;
S11:将cnt_asm减1,且将buff后移8字节,并返回步骤S8;
S12:将buff剩余数据循环累加到result;
S13:将result转换为16bit数再取反。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420425.XA CN112612518B (zh) | 2020-12-08 | 2020-12-08 | 一种基于飞腾平台的网络checksum算法优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420425.XA CN112612518B (zh) | 2020-12-08 | 2020-12-08 | 一种基于飞腾平台的网络checksum算法优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612518A CN112612518A (zh) | 2021-04-06 |
CN112612518B true CN112612518B (zh) | 2022-04-01 |
Family
ID=75229268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011420425.XA Active CN112612518B (zh) | 2020-12-08 | 2020-12-08 | 一种基于飞腾平台的网络checksum算法优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612518B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968653B (zh) * | 2022-07-14 | 2022-11-11 | 麒麟软件有限公司 | 一种zfs文件***的raidz校验值的确定方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104937542A (zh) * | 2013-01-23 | 2015-09-23 | 国际商业机器公司 | 向量校验和指令 |
CN106293870A (zh) * | 2015-06-29 | 2017-01-04 | 联发科技股份有限公司 | 计算机***及其策略导向压缩方法 |
CN106484503A (zh) * | 2015-08-27 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法及网络处理器 |
US9648102B1 (en) * | 2012-12-27 | 2017-05-09 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
CN107094369A (zh) * | 2014-09-26 | 2017-08-25 | 英特尔公司 | 用于提供simd sm3密码散列函数的指令和逻辑 |
CN108139907A (zh) * | 2015-10-14 | 2018-06-08 | Arm有限公司 | 向量数据传送指令 |
CN110620585A (zh) * | 2018-06-20 | 2019-12-27 | 英特尔公司 | 支持压缩数据的随机访问 |
CN111654265A (zh) * | 2020-06-19 | 2020-09-11 | 京东方科技集团股份有限公司 | 一种快速校验电路、方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200177660A1 (en) * | 2020-02-03 | 2020-06-04 | Intel Corporation | Offload of streaming protocol packet formation |
-
2020
- 2020-12-08 CN CN202011420425.XA patent/CN112612518B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9648102B1 (en) * | 2012-12-27 | 2017-05-09 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
CN104937542A (zh) * | 2013-01-23 | 2015-09-23 | 国际商业机器公司 | 向量校验和指令 |
CN107094369A (zh) * | 2014-09-26 | 2017-08-25 | 英特尔公司 | 用于提供simd sm3密码散列函数的指令和逻辑 |
CN106293870A (zh) * | 2015-06-29 | 2017-01-04 | 联发科技股份有限公司 | 计算机***及其策略导向压缩方法 |
CN106484503A (zh) * | 2015-08-27 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法及网络处理器 |
CN108139907A (zh) * | 2015-10-14 | 2018-06-08 | Arm有限公司 | 向量数据传送指令 |
CN110620585A (zh) * | 2018-06-20 | 2019-12-27 | 英特尔公司 | 支持压缩数据的随机访问 |
CN111654265A (zh) * | 2020-06-19 | 2020-09-11 | 京东方科技集团股份有限公司 | 一种快速校验电路、方法及装置 |
Non-Patent Citations (1)
Title |
---|
UDP: a programmable accelerator for extract-transform-load workloads and more;Yuanwei Fang等;《Proceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture》;20171014;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112612518A (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8230144B1 (en) | High speed multi-threaded reduced instruction set computer (RISC) processor | |
US10140124B2 (en) | Reconfigurable microprocessor hardware architecture | |
JP5269610B2 (ja) | ユーザレベル命令に応じた巡回冗長検査演算の実行 | |
US9015443B2 (en) | Reducing remote reads of memory in a hybrid computing environment | |
US20070186077A1 (en) | System and Method for Executing Instructions Utilizing a Preferred Slot Alignment Mechanism | |
US20140208069A1 (en) | Simd instructions for data compression and decompression | |
US11489773B2 (en) | Network system including match processing unit for table-based actions | |
EP1126367A1 (en) | Data processing device, system and method using a state transition table | |
US9274802B2 (en) | Data compression and decompression using SIMD instructions | |
US20120030451A1 (en) | Parallel and long adaptive instruction set architecture | |
US20120317360A1 (en) | Cache Streaming System | |
US10666288B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
CN112612518B (zh) | 一种基于飞腾平台的网络checksum算法优化方法 | |
US9959066B2 (en) | Memory-attached computing resource in network on a chip architecture to perform calculations on data stored on memory external to the chip | |
WO2023169267A1 (zh) | 一种基于网络设备的数据处理方法及网络设备 | |
US11343358B2 (en) | Flexible header alteration in network devices | |
US20040103086A1 (en) | Data structure traversal instructions for packet processing | |
WO2013036950A1 (en) | Instruction packet including multiple instructions having a common destination | |
US7320013B2 (en) | Method and apparatus for aligning operands for a processor | |
US8745235B2 (en) | Networking system call data division for zero copy operations | |
Zolfaghari et al. | A custom processor for protocol-independent packet parsing | |
US10445099B2 (en) | Reconfigurable microprocessor hardware architecture | |
US7571258B2 (en) | Method and apparatus for a pipeline architecture | |
KR101449732B1 (ko) | 계층적인 매우 긴 명령 패킷들을 프로세싱하는 시스템 및 방법 | |
US7877581B2 (en) | Networked processor for a pipeline architecture |
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 |