10 Star 20 Fork 5

openEuler / marketing

 / 详情

No. 85 - 对openEuler社区发布包xz进行CRC加速

待办的
开源之夏2023
创建于  
2020-05-27 16:59

标题
No. 85 - 对openEuler社区发布包xz进行CRC加速

描述
xz使用了CRC32(多项式0xedb88320)来校验数据的正确性。软件使用了常用的查表法来做CRC计算,性能并不理想。在ARMv8.1,提供了CRC32/CRC32C的专用指令:crc32d, crc32w, crc32h, crc32b, crc32cd, crc32cw, crc32ch, crc32cb。分别实现64bit、32bit、16bit和8bit数据的CRC计算。
相对于查表法,ARM CRC指令快30倍左右。也就是说,对同一数据做CRC,加速指令耗用时间是查表法的1/30。

对于CRC-32和CRC-32C,GCC提供了builtin函数,可以在C代码里直接调用。builtin函数名字就是对应的汇编指令名字前加“__”,比如__crc32d函数对应crc32d指令。另外,还需添加“-march=armv8.1-a”编译选项。

openEuler社区的xz发布包没有为ARM平台做过优化:https://gitee.com/src-openeuler/xz。
本任务的目标就是为这个软件包在ARM上做加速,提高压缩性能。

难度

导师
@colordev

联系方式
colordev@hotmail.com

产出标准
代码:如果目标处理器有CRC专用指令,则使用CRC专用指令来计算CRC;如果目标处理器不支持CRC专用指令,则使用普通查表法来计算CRC。
编译:根据目标处理器是否支持CRC专用指令,来打开或关闭相关选项,正确编译代码。

技术要求

  • 熟悉开源项目对代码修改的要求。
  • 了解CRC计算原理。
  • 了解ARM CRC指令。

相关项目

评论 (1)

colordev 创建了暑期2020
colordev 关联仓库设置为openEuler/marketing
展开全部操作日志

Hey @colordev, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

genedna 添加协作者allesgute
genedna 添加协作者genedna
genedna 添加了
 
summer2020
标签
genedna 关联项目设置为Summer 2020
genedna 计划截止日期设置为2020-07-02
genedna 计划开始日期设置为2020-07-01
genedna 计划截止日期2020-07-02 修改为2020-09-30
genedna 修改了标题
genedna 修改了描述
openeuler-ci-bot 负责人设置为allesgute
openeuler-ci-bot 移除了
 
summer2020
标签

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(4)
5329419 openeuler ci bot 1632792936 23249 genedna 1586065964
1
https://gitee.com/openeuler/marketing.git
git@gitee.com:openeuler/marketing.git
openeuler
marketing
marketing

搜索帮助

14c37bed 8189591 565d56ea 8189591