CN112612518B - 一种基于飞腾平台的网络checksum算法优化方法 - Google Patents

一种基于飞腾平台的网络checksum算法优化方法 Download PDF

Info

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
Application number
CN202011420425.XA
Other languages
English (en)
Other versions
CN112612518A (zh
Inventor
胡海
刘正元
刘云
肖林逵
黄锦慧
李佑鸿
彭灿
孙立明
张铎
李唯实
曾驰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202011420425.XA priority Critical patent/CN112612518B/zh
Publication of CN112612518A publication Critical patent/CN112612518A/zh
Application granted granted Critical
Publication of CN112612518B publication Critical patent/CN112612518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth 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算法优化方法
技术领域
本发明属于通信及计算机技术领域,具体涉及一种基于飞腾平台的网络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数再取反。
CN202011420425.XA 2020-12-08 2020-12-08 一种基于飞腾平台的网络checksum算法优化方法 Active CN112612518B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114968653B (zh) * 2022-07-14 2022-11-11 麒麟软件有限公司 一种zfs文件***的raidz校验值的确定方法

Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200177660A1 (en) * 2020-02-03 2020-06-04 Intel Corporation Offload of streaming protocol packet formation

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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