This paper introduces a checksum algorithm that provides a new point in the performance/complexity/effectiveness checksum tradeoff space. It has better fault detection properties than single-sum and dual-sum modular addition checksums. It is also simpler to compute efficiently than a cyclic redundancy check (CRC) due to exploiting commonly available hardware and programming language support for unsigned integer division. The key idea is to compute a single running sum, but introduce a left shift by the size (in bits) of the modulus before performing the modular reduction after each addition step. This approach provides a Hamming Distance of 3 for longer data word lengths than dual-sum approaches such as the Fletcher checksum. Moreover, it provides this capability using a single running sum that is only twice the size of the final computed check value, while providing fault detection capabilities even better than large-block variants of dual-sum approaches that require larger division operations. A variant that includes a parity bit achieves Hamming Distance 4 for the same size check value, approximating the fault detection capabilities of a good CRC for about half the data word length attainable by such a CRC.
翻译:本文提出一种校验和算法,在性能/复杂度/有效性校验和权衡空间中提供了新的突破点。该算法比单和与双和模加校验和具有更优的故障检测特性,同时因利用常见硬件支持与编程语言对无符号整数除法的原生支持,其高效计算复杂度低于循环冗余校验(CRC)。核心思想在于:计算单一路径累加和时,在每次加法步骤的模归约前引入按模数位宽(比特数)的左移操作。这种方法在长数据字场景中可达到汉明距离3,优于Fletcher校验和等双和方法。更关键的是,该算法仅需使用最终校验值两倍大小的单一路径累加和即可实现上述能力,其故障检测性能甚至优于需更大规模除法运算的大块双和方法变体。引入奇偶校验位的改进版本可在相同校验值尺寸下达到汉明距离4,其故障检测能力近似于优秀CRC,但数据字长仅为该CRC可处理长度的一半。