Aarch64でwolfCryptの大幅なパフォーマンス向上

wolfSSLでは、wolfCryptのパフォーマンスの改善に継続的に取り組んでいます。 特に、Aarch64(ARM の64ビットアーキテクチャ)のAES-GCMではもっと改善できる余地があると考えました。

Aarch64チップに組み込みの暗号化命令を使用することで、C言語コードに比べて大幅な性能向上をすでに達成していましたが、さらに多くの改善に取り組みました。ループを展開し、GCM計算とAES暗号化をインターリーブし、NEON(Armのデータ並列化命令セット)と基本命令を同時に使用することにより、大幅な改善(最大9.5倍の高速化)を確認することができました。

Apple M1 上での wolfSSL 5.6.4(従来) の従来のコードでのパフォーマンスは:

-----------------------------------------------------------------------------
 wolfSSL version 5.6.4
-----------------------------------------------------------------------------
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
AES-128-GCM-enc           1845 MB took 1.000 seconds, 1845.382 MB/s
AES-128-GCM-dec            907 MB took 1.005 seconds,  902.210 MB/s
AES-192-GCM-enc           1845 MB took 1.002 seconds, 1842.527 MB/s
AES-192-GCM-dec            902 MB took 1.002 seconds,  900.038 MB/s
AES-256-GCM-enc           1845 MB took 1.000 seconds, 1844.793 MB/s
AES-256-GCM-dec            897 MB took 1.001 seconds,  895.873 MB/s
Benchmark complete

最新のアセンブリコードを使用した最新のwolfSSLでは:

-----------------------------------------------------------------------------
 wolfSSL version master
-----------------------------------------------------------------------------
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
AES-128-GCM-enc           8583 MB took 1.000 seconds, 8580.862 MB/s
AES-128-GCM-dec           8583 MB took 1.000 seconds, 8580.389 MB/s
AES-192-GCM-enc           7875 MB took 1.001 seconds, 7870.179 MB/s
AES-192-GCM-dec           7922 MB took 1.000 seconds, 7921.097 MB/s
AES-256-GCM-enc           7067 MB took 1.000 seconds, 7064.394 MB/s
AES-256-GCM-dec           7230 MB took 1.001 seconds, 7225.034 MB/s
Benchmark complete

両者のパフォーマンスをグラフ化してみます:

ご質問がありましたら、info@wolfssl.jpまでお寄せください。

原文:https://www.wolfssl.com/aarch64-gets-a-performance-boost-in-wolfcrypt/