Ruby 中的 SHA512 和 SIMD

0 ruby simd sha512

由于具有 SIMD 优化,英特尔处理器可以更快地计算 SHA512。我想在 Ruby 中利用它。但是,SHA512 的实现不使用 SIMD https://github.com/ruby/ruby/blob/trunk/ext/digest/sha2/sha2.c吗?

有没有办法统一 SIMD 优化来计算 Ruby 中的 SHA512?

Pet*_*des 5

英特尔于 2012 年 11 月发表了一篇有关 SIMD 加速 SHA512 的论文。

他们说,他们的 AVX 版本在 Sandybridge i7 2600 上获得了约 8.59 个周期/字节。他们没有发布 AVX2 / rorx(BMI2) 版本的结果,因为 Haswell 尚未发布。我没有点击源代码的链接;大概是带有内在函数的C。

要在 Ruby 源代码中实现它,您需要处理 Ruby 在不支持快速版本使用的指令集扩展的 CPU 上运行的情况,并回退到纯 C 或仅 SSE2 版本。

最好的选择可能是让 ruby​​ 使用 OpenSSL或类似的库来获得 SHA-512 和许多其他函数的手动调整版本。加密库已经为许多不同的平台提供了手动调整的 asm 版本。


通过 Skylake(和 Goldmont),英特尔引入了新指令来加速 SHA-1 和 SHA-256。不幸的是,我没有看到任何关于能够将这些指令用于 SHA-512 的信息。