10 Star 20 Fork 5

openEuler / marketing

 / 详情

No.54 - 对 openEuler 社区发布包 zip/unzip 进行 CRC 加速

待办的
开源之夏2023
创建于  
2020-05-25 15:18

标题 No.54 - 对 openEuler 社区发布包 zip/unzip 进行 CRC 加速

描述
zip/unzip使用了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社区的zip/unzip发布包均没有为ARM平台做过优化。

本任务的目标就是为这两个软件包在ARM上做加速,提高压缩性能。

难度
容易

导师
@colordev

联系方式
colordev@hotmail.com

产出标准

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

技术要求

  1. 熟悉开源项目对代码修改的要求。
  2. 了解CRC计算原理。
  3. 了解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
标签
colordev 修改了描述

登录 后才可以发表评论

状态
负责人
项目
里程碑
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

搜索帮助