CPU の AES 高速化

Intel と AMD の CPU には AES-NI という CPU 命令拡張が搭載されています。詳細は Wikipedia を読んでください。ちなみに ARM にも AES 拡張が搭載されているものがあります。

ちなみに 私自身はハードがわからないので AES-NI の知識はまったくありません。AES がハードウェアによって高速化される程度の知識です。

ただ、AES といっても暗号の種類は CBC 以外にも、最近良く使われている AES-GCM (TLS 1.2 で利用) や、 WebRTC の SRTP で利用されている AES-CTR があり、実は CPU ごとに AES-GCM や AES-CTR はかなりの差があるというのを最近調べていて気づきました。

ということでインターネッツのちからを使って募集してみることにしました。この記事を読んだ人も是非お時間あれば、気軽にコメントしてみてください。

$ openssl speed -evp aes-gcm | aes-ctr の結果を集める

かなりの情報が集まったので簡単にレビューしてみることにしました。全て AES-CTR の 1024 bytes の結果を見ていきます。バージョンの差はここでは気にしていません。ざっくりです。

詳しい方、間違っていたら是非ツッコミお願いします。

MacBookPro

Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHztype            1024 bytes
aes-128-ctr 4964532.85k

約 500 万台が叩き出されています。これをベースにしましょう。

Intel(R) Core(TM) i7-7567U CPU @ 3.50GHztype            1024 bytes
aes-128-ctr 5358949.51k

まさかの 530 万台です。これはすごいですね。ちなみに 2017 年 7 月時点で一番新しい MacBookPro 15 、MacBookPro 13 です。

AWS

なぜか AWS で調べてくれた方もいらっしゃいました。なぜでしょうね、凄い高いインスタンスも試してくれたようです。

t2.smalltype            1024 bytes
aes-128-ctr 2675474.09k

t2.small は 260 万台

x1.32xlargetype            1024 bytes
aes-128-ctr 2661191.68k

最強のインスタンス x1.32xlarge も t2.small と変わらない 260 万台です。インスタンスが大きいから変わるというわけではありません。もちろんマルチコアを有効にすると話は別です。

scaleway ARM64–2GB (ARMv8)

そして ARM です。Scaleway というベアメタルサービスですね。

type             1024 bytes
aes-128-ctr 439551.32k

なんと 43 万台 … Intel 勢に 10 倍以上の差をつけられています。

SoftIron OverDrive 3000

て、あまりにもマニアックな AMD の ARM64 です、これなぜ持っていらっしゃるんでしょうか。ほとんど出荷されていないはずなんですが … 。

AMD Opteron A1170 (2 GHz 8 core)type             1024 bytes
aes-128-ctr 1898887.85k

かなり検討しています。最初の計測で OpenSSL が古かったから成績が振るわなかったようです。

Pine64

これも ARM です。少し頑張って 50 万です。インテルと比べて 1/10 です。ツライ。

type             1024 bytes
aes-128-ctr 499854.34k

AMD Ryzen 7 1800X (3.6GHz, Max TB: 4GHz)

そして噂の Ryzen 、凄い早いという情報だけ入ってきています。が実際どうなんでしょうか。

type            1024 bytes
aes-128-ctr 9289486.34k

約 930 万 … まさかの結果です。インテルの2 倍です。いや 2 倍って。ARM の最速の 18 倍です。

Ryzen やばい、EPYC 楽しみ

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store