Hash 查找有关硬件SHA-2加速的信息

Hash 查找有关硬件SHA-2加速的信息,hash,sha1,sha256,sha,sha2,Hash,Sha1,Sha256,Sha,Sha2,今年AMD发布了一款新的x86-64系列CPU,名为RyZen,用于台式机。RyZen的规范显示,它提供了新的基于SSE的SHA1和SHA-256指令: sha1说明:sha1 NDS4、sha1 NEXTE、sha1 MSG1、sha1 MSG2 sha-256说明:SHA256RNDS2、SHA256MSG1、SHA256MSG2 我很好奇,当您使用AMD RyZen CPU时,是否已经存在能够将这些指令用于PHP或其他服务器端语言的API/库? 如果没有,我们应该预计何时提供 由于In

今年AMD发布了一款新的x86-64系列CPU,名为RyZen,用于台式机。RyZen的规范显示,它提供了新的基于SSE的SHA1和SHA-256指令:

  • sha1说明:sha1 NDS4、sha1 NEXTE、sha1 MSG1、sha1 MSG2
  • sha-256说明:SHA256RNDS2、SHA256MSG1、SHA256MSG2
我很好奇,当您使用AMD RyZen CPU时,是否已经存在能够将这些指令用于PHP或其他服务器端语言的API/库? 如果没有,我们应该预计何时提供


由于Intel在2013年左右提供了硬件SHA规范,似乎至少有两个编译器提供了对它的支持。

openssl 1.0.2[2015年1月22日]中增加了对硬件加速SHA256的支持:

因此,在启用了硬件和最新的openssl的情况下,任何使用openssl计算SHA256的php/python库都可以使用硬件加速的SHA256摘要计算(如果在openssl中启用,并且库将选择此实现)。还有命令行:
openssldgst-sha256-二进制文件要散列

php中有一些openssl库的原始绑定,而openssl_ALGO_SHA256是从php 5.5开始的:


Linux内核CryptoAPI可能会使用硬件SHA1/SHA2,因为4.4版本:();但PHP/其他脚本库不太可能使用内核cryptoapi。

您可以尝试在github等流行存储库(或internet)中搜索指令名(从wiki中,如
sha256msg1
,或以
的形式,从
shaintrin.h
\uu内置ia32\uSHA256MSG1
)并排除gcc/llvm/编译器测试。openssl()中添加了对SHA256扩展的支持,因此任何使用openssl for SHA256的php/c库都将受益于具有足够多的openssl和最新CPU的硬件加速。您可以分析任何SHA256繁重的计算代码(在linux中-使用
性能记录-e cycles:u./program;性能报告
)并检查sha1/sha256计算函数中使用了哪些指令。感谢openssl链接,这是非常有用的信息。
1962  Changes between 1.0.1l and 1.0.2 [22 Jan 2015]

2012   *) Support for new and upcoming Intel processors, including AVX2,
2013      BMI and SHA ISA extensions. This includes additional "stitched"
2014      implementations, AESNI-SHA256 and GCM, and multi-buffer support
2015      for TLS encrypt.