技术原理
EC编解码
算法原理:
采用向量编码以低阶二元XOR操作(向量化加速)替代传统标量编码(Jerasure,ISA-L)的高阶有限域乘法(需使用LUT,10+指令操作),配合编码调度,复用中间计算结果减少操作数,大幅提升EC编码性能。
图1 向量编码多级加速


运行上下文:
Plog Client(Index侧)
调用接口:
EC编码、EC解码/重构/降级读接口
CRC16校验
假设数据信息序列多项式为M(x),本原多项式为P(x),则CRC定义为:
举例说明上面定理的含义:假设被除数是10,除数是3,则可以先用10除6,再用余数除3,得到10除3的余数。即。10除6的余数为4,4除3的余数为1。
由于符合条件的并非唯一,可考虑以下的条件收缩选择范围:
- Q(x)非零项的数目对应于算法复杂度。
- Q(x)的次数对应于算法需要的寄存器数量。
- Q(x)的最高次项与第二高次项的次数差值对应于算法需要的并行度。
依应用场景的不同,可基于以上的条件的权衡以选出较合适的。
CRC32校验
算法原理:
#ifdef __aarch64__ #define CRC32D(crc, value) __asm__("crc32x %w[c], %w[c], %x[v]":[c]"+r"(crc):[v]"r"(value)) #define CRC32W(crc, value) __asm__("crc32w %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value)) #define CRC32H(crc, value) __asm__("crc32h %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value)) #define CRC32B(crc, value) __asm__("crc32b %w[c], %w[c], %w[v]":[c]"+r"(crc):[v]"r"(value))
运行上下文:
消息校验,数据一致性校验。
父主题: 存储算法加速库