中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

技术原理

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))

运行上下文:

消息校验,数据一致性校验。