网易首页 > 网易号 > 正文 申请入驻

龙芯LoongArch指令集计算CRC32的速度是MIPS的4倍以上

0
分享至

  相信凡是与编程或通信相关的技术人员都知道CRC32,这是一种常用的数据校验编码。因为CRC32编码的算法很简单,所以用于计算CRC32值的C/C++代码写法基本上固定,很难有优化的余地。通常大家都通过手写汇编,调用特定指令集用于CRC32计算的专用指令来达到计算加速的目的。龙芯以前使用的MIPS以及龙芯自己的扩展指令中都没有CRC32计算指令,现在全新的LoongArch指令集中提供了计算CRC32的专用指令,使计算CRC32的速度达到原来的4倍以上。

  使用专用指令达到提速的目的其实没什么可说的,但如果不使用专用指令,而仅仅是把C/C++代码编译为LoongArch的二进制,就能比MIPS快20%以上呢?是不是就比较有意思了!

下面是一段计算CRC32值的C程序,大多数计算CRC32的代码都应该和它相似。函数CrcGenerateTable用于初始化计算多项式表,只需要调用一次。函数CrcUpdate用于计算数据的CRC32值,只有短短的几行。

  我们先使用GCC编译器 -O参数编译,看看CrcUpdate这个函数分别编译为LoongArch和MIPS有什么区别:

  第一眼看到的,就是实现相同功能时,LoongArch二进制的指令数量要比MIPS少很多。然后呢,就是两者的指令命名规则和汇编格式有明显的差异。最重要的就是它们的二进制操作码完全没有相似之处,说明这是两种不同的指令集,无法二进制兼容。最近有一些缺乏专业素养的媒体以及公司说LoongArch只是对MIPS的扩展,把“C/C++源代码兼容”和“指令集二进制兼容”混为一谈,还弄不清楚“二进制兼容”和“二进制翻译方式兼容”的区别,不知道他们怎么好意思自称技术博主和科技公司?

  上面的二进制程序都是用-O参数编译的,是一种编译器默认的编译优化参数。我在龙芯3A5000和3A4000上分别使用能使它们较好发挥性能的编译参数,对这段计算CRC32的C语言程序进行测试,发现性能差距很大。

  编码1GB的数据,使用MIPS指令集的3A4000(1.8GHz)耗时6.57秒(单线程),平均每秒约156M字节。使用LoongArch指令集的3A5000(耗时)3.87秒(单线程),平均每秒约264MB字节。3A4000和3A5000的CPU主频有差距,但CPU核心基本一样。如果把这个数据折算到相同的CPU频率,3A5000仍然比3A4000高出22.2%。按数据量和时间算,内存也不可能是瓶颈(实测单通道和双通道没有差距),它们最大的区别就只剩下指令集了。从上面的编译结果就能看出来,LoongArch实现相同功能使用的指令更少,这就是全新LoongArch指令集的优势之一了。即便使用更优化的编译参数,结果也一样,MIPS指令数量无法比LoongArch更少。

  上面提到使用LoongArch中的CRC专用指令可以超过“4倍性能”,这也需要展示一番,不然本文就是不完整的。我编写了一个与CrcUpdate这个函数功能相同的LoongArch汇编函数,用它来与C/C++代码的编译结果进行对比。先看测试结果,然后我再解析汇编代码。

  当把实测的CRC32编码速度都折算到1GHz之后,使用LoongArch指令集的3A5000仍有超过350MB/s的编码速度(单线程),是使用MIPS指令集的3A4000的CRC32编码速度的4倍以上。实际上对汇编代码仍然可以继续优化,在我进行了一些优化后,3A5000的CRC32编码速度超过了1000MB/s。

  使用LoongArch中的CRC指令就不需要事先计算多项式表了,CPU中内置了IEEE.802.3多项式(多项式值为0xEDB88320),和Castagnoli多项式(多项式值为0x82F63B78)的表。当使用“crc”为指令前缀时,使用就的是IEEE.802.3多项式。当使用“crcc”为指令前缀时,使用的就是Castagnoli多项式。

  其实汇编代码也不复杂,毕竟只是一个很小的函数,几乎每一行我都加了详细注释,因为这也是我自己学习的过程。因为贴代码容易格式错乱,只好贴成图片。

  从上面可以看到,L3标签下面只有4条指令,这个最主要的循环中有2条指令是用于处理循环条件的。那么继续优化的方法就呼之欲出,只要在一次循环中多计算几次,就可以减少循环次数。“ldptr.d $r12,$r5,0”这条载入数据的指令中,最后一个参数是立即数,作为取数据的偏移量,于是如果把循环代码改成下面的样子,每次循环就可以计算16个字节:

  以此类推,也可以计算24、32、48……个字节。这样修改之后,代码中还有其它地方也需要做修改,比如函数入口处的8字节对齐计算就修改成对应的数。下面的单字节循环也需要修改,不过也有偷懒的方法,比如想每次循环计算64字节,就单独写一个只计算数据长度为64倍数的函数。当数据长度大于等于64时,就可以先调用它一次,把剩下的数据再调用之前的函数来计算,就像下面这样:

  LoongArch指令集中的CRC指令并不只是可以计算单字节和8字节,它其实有计算1、2、4、8字节的4种格式,后缀分别为“w.b.w”、“w.h.w”、“w.w.w”、“w.d.w”。

  龙芯LoongArch指令集中除了CRC指令之外,还有许多有趣的指令。比如字节序翻转指令,在处理网络通信数据、图像像素格式转换等的时候就能用得上。比如取得一个数中有多少个bit为1,在处理mask数据时就非常有用。LoongArch中的原子访存指令特别丰富,在做多线程互斥、数据“无锁”访问等功能时就可以比较灵活。

  龙芯LoongArch指令集中各种有趣的指令和有趣的用法,大家一起去发掘吧。《龙芯架构参考手册》您值得拥有!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
带着家庭作业踢欧洲杯 西班牙16岁天才亚马尔首秀错失进球

带着家庭作业踢欧洲杯 西班牙16岁天才亚马尔首秀错失进球

封面新闻
2024-06-16 07:10:19
变天了?英国《经济学人》头条:中国已成为科学的超级大国

变天了?英国《经济学人》头条:中国已成为科学的超级大国

互联网大聪明
2024-06-16 03:04:28
广东:女子离婚后去前夫家看娃,留宿后中奖了,女子纠结:复婚吗

广东:女子离婚后去前夫家看娃,留宿后中奖了,女子纠结:复婚吗

大有看头
2024-06-16 13:05:03
牵涉“女首富”案,又一位越共中央高层受处分

牵涉“女首富”案,又一位越共中央高层受处分

中国新闻周刊
2024-06-16 15:09:59
一代女神“余音绕梁”:纪念林徽因诞辰120周年特展举办

一代女神“余音绕梁”:纪念林徽因诞辰120周年特展举办

澎湃新闻
2024-06-15 16:56:28
王思聪回应私生女事件,网友炸开了锅!

王思聪回应私生女事件,网友炸开了锅!

拾点先生
2024-06-15 19:00:02
3-0,压哨升至第4!女排总决赛对阵:中国再战日本,波兰PK土耳其

3-0,压哨升至第4!女排总决赛对阵:中国再战日本,波兰PK土耳其

侃球熊弟
2024-06-16 21:56:43
乌克兰外长:俄方就停火提出的要求不可接受

乌克兰外长:俄方就停火提出的要求不可接受

环球网资讯
2024-06-16 19:53:13
视频疯传!外媒:G7峰会上意总理向马克龙投去“死亡凝视”,两人“争执”曝光

视频疯传!外媒:G7峰会上意总理向马克龙投去“死亡凝视”,两人“争执”曝光

环球网资讯
2024-06-16 13:41:16
胜土耳其女排有三点之谜

胜土耳其女排有三点之谜

小马哥谈体育
2024-06-16 17:54:59
国足刚进18强赛,国米锋霸+瑞超核心就确定火线驰援,都已入籍

国足刚进18强赛,国米锋霸+瑞超核心就确定火线驰援,都已入籍

评球论事
2024-06-16 20:38:32
印度首富之子大婚在即,婚前派对只有一个字:壕!

印度首富之子大婚在即,婚前派对只有一个字:壕!

新民周刊
2024-06-16 15:44:36
特朗普抨击拜登的电动汽车政策:如果在11月入主白宫,他将撤销这些政策 拜登和特朗普的首场电视辩论规则公布:禁用道具 麦克风受控 确保文明辩论

特朗普抨击拜登的电动汽车政策:如果在11月入主白宫,他将撤销这些政策 拜登和特朗普的首场电视辩论规则公布:禁用道具 麦克风受控 确保文明辩论

每日经济新闻
2024-06-16 20:26:30
山东一新郎与父亲布置婚房,无意中一句话,竟被父亲3刀砍死

山东一新郎与父亲布置婚房,无意中一句话,竟被父亲3刀砍死

安妮Emotiong
2024-06-11 18:52:22
姜萍圆梦大学不止职教高考,江苏教育主管部门回应

姜萍圆梦大学不止职教高考,江苏教育主管部门回应

齐鲁壹点
2024-06-16 14:58:15
男子在军民合用机场发现外国乘客手机偷拍,怀疑是间谍,机场回应

男子在军民合用机场发现外国乘客手机偷拍,怀疑是间谍,机场回应

看晓天下事
2024-06-16 14:56:16
欧洲猪肉业界:中国若限制进口将是梦魇

欧洲猪肉业界:中国若限制进口将是梦魇

参考消息
2024-06-16 15:00:11
上海电影节众男星状态:45岁邓超显沧桑,李治廷寸头造型阳刚帅气

上海电影节众男星状态:45岁邓超显沧桑,李治廷寸头造型阳刚帅气

扒虾侃娱
2024-06-15 21:23:43
主板IPO丨浙能燃气等待注册生效,毛利率低于同行,现金流充裕募资必要性存疑

主板IPO丨浙能燃气等待注册生效,毛利率低于同行,现金流充裕募资必要性存疑

时代商学院
2024-06-16 17:03:17
证监会新闻发言人就融券与转融券有关情况答记者问

证监会新闻发言人就融券与转融券有关情况答记者问

界面新闻
2024-06-16 20:35:00
2024-06-17 02:38:44
guee
guee
热爱国产CPU的无证程序员
13文章数 13关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

冷藏货车违规乘人致8人窒息后遇难 河南叶县通报

头条要闻

冷藏货车违规乘人致8人窒息后遇难 河南叶县通报

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

艺术
手机
游戏
本地
公开课

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

手机要闻

荣耀X60i入网:配置全面升级,能否满足你的所有期待?

梦幻西游玩家炸出160愤怒水清腰带,西栅为服战连夜换“网吧”?

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版