英特尔的 Haswell 架构支持多个新的位操作指令。用英特尔自己的话说,
位操作指令对于压缩数据库、散列、大数算术和各种通用代码很有用。
在 Haswell 处理器上发现的新指令是否会对正在使用的当前或未决加密函数的计算速度产生任何影响?
英特尔的 Haswell 架构支持多个新的位操作指令。用英特尔自己的话说,
位操作指令对于压缩数据库、散列、大数算术和各种通用代码很有用。
在 Haswell 处理器上发现的新指令是否会对正在使用的当前或未决加密函数的计算速度产生任何影响?
大多数这些操作都是“微不足道的”:它们替换了两个或三个现有操作码的组合。例如,BLSR指令的类型,如您链接到的页面中所指定,相当于减法后跟按位AND。这已经可以做到了。额外的操作不会造成伤害,编译器将从中受益,而且毫无疑问,一些加密函数将通过使用其中一些操作码获得几个周期,但没有任何突破性的结果值得期待。
在这些指令中,最有趣的是计数指令 ( LZCNT, ),因为在使用“经典”操作码时,计算NTZCNT位寄存器中前导零或尾随零的数量需要花费O(log N) 。这些操作在一些大整数计算的极端情况下有一些用处。特别是,我认为这将有助于二进制 GCD,它用于计算有限域中的除法——这是计算椭圆曲线的重要一步。现在,有限域中的除法非常昂贵(与乘法相比),值得使用投影坐标在椭圆曲线上计算:这意味着大约是十倍的运算,但避免了很多除法,所以它加起来就是净收益。二进制 GCD 的快速实现可能会稍微改变这种情况。有关计数操作的更多用途,请参阅此 Wikipedia 页面。
真正能推动事情发展的不是新指令,而是更大的寄存器。AVX2 提供 256 位寄存器;这足以并行计算八个SHA-256,就像 SSE2 允许四个并行 SHA-256 一样。密码破解软件将从中受益……(尽管 GPU 可以说更好)。目前正在进行定义树散列模式的工作,以将给定的散列函数转换为受益于并行性的系统;例如看到这篇文章(来自 Keccak,又名 SHA-3,设计师)。NIST 已经表达了他们在这方面定义一些标准的意愿。
当然,仍然需要一些特定的场景才能从这种 CPU 增益中受益。在散列(或加密或其他)的大多数用途中,密码学不是瓶颈。I/O 是。散列文件时,散列文件的速度不能比从磁盘读取它们的速度快。
我认为新MULX指令会有所帮助,因为它提供了 3 个操作数。这可能会消除一些MOVs 并加快紧密循环。
下一个英特尔处理器 Broadwell 将提供ADCX并ADOX启用两个独立的ADD循环。这是专门为加密设计的,请参阅http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/large-integer-squaring-ia-paper.pdf
当然,所有这些都不是开创性的,但可能会导致,比如说,加速两倍,也许更少。