SlideShare a Scribd company logo
AES-NI @ Sandy Bridge

     青木 和麻呂
        ÆÌÌ




                Copyright 2013 c NTT   – p.1/13
自己紹介

某電話会社に勤めています
暗号学者です
暗号の解読と高速実装が好きです
本業では Camellia 暗号の設計とか、768
ビット数の素因数分解とかやりました
x86/x64 最適化勉強会 3 で発表しました




                 Copyright 2013 c NTT   – p.2/13
内容

SCIS 2013 で発表した「Sandy Bridge 環境で
のモード実装の最適化」を本勉強会向けに
再構成したものです
  AES-NI の概要
  Sandy Bridge
  AES-NI の詳細
  解析結果



                      Copyright 2013 c NTT   – p.3/13
AES-NI の概要
                        AES New Instruction set。
                        Nehalem 世代 (Westmere) から導入。
                        AES (Advanced Encryption Standard) を高
                        速・安全に実装するために導入。

                    http://ja.wikipedia.org/wiki/ファイル:IntelProcessorRoadmap-3.svg より
cott    Tejas        Nehalem                                                                                        Released· Canceled
           Cedarmill
Prescott-2M         Cedar Mill
 Smithfield         Presler
                                          Core
Dothan              Yonah        Conroe       Wolfdale                Nehalem                     Sandy Bridge                     Haswe
                                 Kentsfield   Yorkfield        Nehalem          Westmere    Sandy Bridge       Ivy Bridge     Haswell       B

 90nm           |             65nm          |             45nm              |              32nm            |           22nm             |

                                                                  Atom
                                                Silverthorne     Lincroft                  Copyright 2013 c NTT       – p.4/13
Figure 2-1 in “Intel 64 and IA-32 Architectures Optimization Reference Manual”




                                                    Copyright 2013 c NTT   – p.5/13
AES-NI
aesenc: 暗号化 1 段
aesenclast: 暗号化最終段
aesdec: 復号 1 段
aesdeclast: 復号最終段
aeskeygenassist: 鍵スケジュールの
  一部
aesimc: 復号用鍵スケジュールのの一部

AVX 環境: 「v」つき命令利用可、w/o ymm
                      Copyright 2013 c NTT   – p.6/13
AES-128 実装例
         pxor       xmm15, xmm0
         aesenc     xmm15, xmm1
         aesenc     xmm15, xmm2
         aesenc     xmm15, xmm3
         aesenc     xmm15, xmm4
         aesenc     xmm15, xmm5
         aesenc     xmm15, xmm6
         aesenc     xmm15, xmm7
         aesenc     xmm15, xmm8
         aesenc     xmm15, xmm9
         aesenclast xmm15, xmm10
xmm15: I/O, xmm0∼xmm10: 副鍵

                           Copyright 2013 c NTT   – p.7/13
aes{enc,dec}{,last}の特性 (文献)
                            Intel        Fog
                          SB WM SB WM
          latency           8       6    8 ∼5
          throughput        1       2    4 ∼2
          p015                  2
         SB: Sandy Bridge, WM: Westmere
Intel: Intel 64 and IA-32 Architectures Optimization
    Reference Manual
Fog:   http://www.agner.org/optimize/


                                        Copyright 2013 c NTT   – p.8/13
aes{enc,dec}{,last}の特性 (IACA)
Ryad Benadjila: “Use of AES Instruction Set” @
AES Day 2012
https://www.cosic.esat.kuleuven.be/ecrypt/AESday/


IACA: Intel Architecture Code Analyzer より
Sandy Bridge:
p01: 2×0.5µop×(latency 7, throughput 1)
p5: 1µop×(latency 1, throughput 1)
Westmere:
p0: 2µop×(latency 4, throughput 1)
p5: 1µop×(latency 1, throughput 1)
                               Copyright 2013 c NTT   – p.9/13
妄想

理論性能の限界 (ECB):
(1/3 + 1 × 10)/16 = 0.646 cpb
暗号処理にはメモリロードとかループ処
理とかいるだろう
port 1 ALU とか load/store は十分空いてい
そうだ
ほぼ理論性能が出るんじゃないだろうか



                      Copyright 2013 c NTT   – p.10/13
現実

0.702 cpb まではいけた @ C intrinsic
0.853 cpb @ OpenSSL 1.0.1c よりは速いが
1 cycle/block ぐらい取られている
何故???




                      Copyright 2013 c NTT   – p.11/13
実験

  独立データの aesenc をいっぱい並べる
  途中に単純な命令を 1 つ入れてみる
  何をどういれても 1 cycle 遅くなる
  Sandy Bridge ではレジスタ zero クリアは
  register renaming で終了
  これをいれると…やっぱり 1 cycle 遅い
  結論: MSROM 命令 (?)

MSROM 命令: 1 cycle に 1 命令しか decode 出
来ない
                        Copyright 2013 c NTT   – p.12/13
Best Current Practice
  出来る限り aes{enc,dec}{,last}は
  連続して並べる
  他の命令を混ぜる場合は 4 命令ずつ
  (4-1-1-1 template にあわせて) いれる

おまけ: aes{enc,dec}{,last} のデータ
は little endian friendly。数値計算をする場合
は endian 変換が必要。



                      Copyright 2013 c NTT   – p.13/13

More Related Content

What's hot

エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
 
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
Kazuki Ohta
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
Takuya ASADA
 

What's hot (20)

SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
第4回コンテナ型仮想化勉強会@東京 Oracle Solaris のコンテナ技術「Solaris Zones」
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
不揮発メモリ(NVDIMM)とLinuxの対応動向について(for comsys 2019 ver.)
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
 
ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較
 
不揮発性メモリ(PMEM)を利用したストレージエンジンの話 #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
不揮発性メモリ(PMEM)を利用したストレージエンジンの話  #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ不揮発性メモリ(PMEM)を利用したストレージエンジンの話  #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
不揮発性メモリ(PMEM)を利用したストレージエンジンの話 #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
 
僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない僕のIntel nucが起動しないわけがない
僕のIntel nucが起動しないわけがない
 

Viewers also liked

Viewers also liked (9)

高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Intel AES-NI Application Performance
Intel AES-NI Application PerformanceIntel AES-NI Application Performance
Intel AES-NI Application Performance
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
 
絶望と最後の希望
絶望と最後の希望絶望と最後の希望
絶望と最後の希望
 
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなし
 

Similar to AES-NI@Sandy Bridge

[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
Insight Technology, Inc.
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
Makoto Uehara
 

Similar to AES-NI@Sandy Bridge (20)

OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
 
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
 
Slide dist
Slide distSlide dist
Slide dist
 
End-to-End音声認識ためのMulti-Head Decoderネットワーク
End-to-End音声認識ためのMulti-Head DecoderネットワークEnd-to-End音声認識ためのMulti-Head Decoderネットワーク
End-to-End音声認識ためのMulti-Head Decoderネットワーク
 
RNN-based Translation Models (Japanese)
RNN-based Translation Models (Japanese)RNN-based Translation Models (Japanese)
RNN-based Translation Models (Japanese)
 
不揮発メモリとOS研究にまつわる何か
不揮発メモリとOS研究にまつわる何か不揮発メモリとOS研究にまつわる何か
不揮発メモリとOS研究にまつわる何か
 
ADVENTURE_Thermalの概要
ADVENTURE_Thermalの概要ADVENTURE_Thermalの概要
ADVENTURE_Thermalの概要
 
モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化モデルアーキテクチャ観点からのDeep Neural Network高速化
モデルアーキテクチャ観点からのDeep Neural Network高速化
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
 
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータPyCoRAMを用いたグラフ処理FPGAアクセラレータ
PyCoRAMを用いたグラフ処理FPGAアクセラレータ
 
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
 
NUCで始めるVMware Tanzu
NUCで始めるVMware TanzuNUCで始めるVMware Tanzu
NUCで始めるVMware Tanzu
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
 
Fpga local 20130322
Fpga local 20130322Fpga local 20130322
Fpga local 20130322
 
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
メモリ抽象化フレームワークPyCoRAMを用いたソフトプロセッサ混載FPGAアクセラレータの開発
 
並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js並列対決 Elixir × Go × C# x Scala , Node.js
並列対決 Elixir × Go × C# x Scala , Node.js
 
Akka stream
Akka streamAkka stream
Akka stream
 
3GPP 5G NSA Detailed explanation 4(Consideration of EN-DC SCG Failure Causes)
3GPP 5G NSA Detailed explanation 4(Consideration of EN-DC SCG Failure Causes)3GPP 5G NSA Detailed explanation 4(Consideration of EN-DC SCG Failure Causes)
3GPP 5G NSA Detailed explanation 4(Consideration of EN-DC SCG Failure Causes)
 

More from MITSUNARI Shigeo

Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
 

More from MITSUNARI Shigeo (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (11)

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 

AES-NI@Sandy Bridge

  • 1. AES-NI @ Sandy Bridge 青木 和麻呂 ÆÌÌ Copyright 2013 c NTT – p.1/13
  • 3. 内容 SCIS 2013 で発表した「Sandy Bridge 環境で のモード実装の最適化」を本勉強会向けに 再構成したものです AES-NI の概要 Sandy Bridge AES-NI の詳細 解析結果 Copyright 2013 c NTT – p.3/13
  • 4. AES-NI の概要 AES New Instruction set。 Nehalem 世代 (Westmere) から導入。 AES (Advanced Encryption Standard) を高 速・安全に実装するために導入。 http://ja.wikipedia.org/wiki/ファイル:IntelProcessorRoadmap-3.svg より cott Tejas Nehalem Released· Canceled Cedarmill Prescott-2M Cedar Mill Smithfield Presler Core Dothan Yonah Conroe Wolfdale Nehalem Sandy Bridge Haswe Kentsfield Yorkfield Nehalem Westmere Sandy Bridge Ivy Bridge Haswell B 90nm | 65nm | 45nm | 32nm | 22nm | Atom Silverthorne Lincroft Copyright 2013 c NTT – p.4/13
  • 5. Figure 2-1 in “Intel 64 and IA-32 Architectures Optimization Reference Manual” Copyright 2013 c NTT – p.5/13
  • 6. AES-NI aesenc: 暗号化 1 段 aesenclast: 暗号化最終段 aesdec: 復号 1 段 aesdeclast: 復号最終段 aeskeygenassist: 鍵スケジュールの 一部 aesimc: 復号用鍵スケジュールのの一部 AVX 環境: 「v」つき命令利用可、w/o ymm Copyright 2013 c NTT – p.6/13
  • 7. AES-128 実装例 pxor xmm15, xmm0 aesenc xmm15, xmm1 aesenc xmm15, xmm2 aesenc xmm15, xmm3 aesenc xmm15, xmm4 aesenc xmm15, xmm5 aesenc xmm15, xmm6 aesenc xmm15, xmm7 aesenc xmm15, xmm8 aesenc xmm15, xmm9 aesenclast xmm15, xmm10 xmm15: I/O, xmm0∼xmm10: 副鍵 Copyright 2013 c NTT – p.7/13
  • 8. aes{enc,dec}{,last}の特性 (文献) Intel Fog SB WM SB WM latency 8 6 8 ∼5 throughput 1 2 4 ∼2 p015 2 SB: Sandy Bridge, WM: Westmere Intel: Intel 64 and IA-32 Architectures Optimization Reference Manual Fog: http://www.agner.org/optimize/ Copyright 2013 c NTT – p.8/13
  • 9. aes{enc,dec}{,last}の特性 (IACA) Ryad Benadjila: “Use of AES Instruction Set” @ AES Day 2012 https://www.cosic.esat.kuleuven.be/ecrypt/AESday/ IACA: Intel Architecture Code Analyzer より Sandy Bridge: p01: 2×0.5µop×(latency 7, throughput 1) p5: 1µop×(latency 1, throughput 1) Westmere: p0: 2µop×(latency 4, throughput 1) p5: 1µop×(latency 1, throughput 1) Copyright 2013 c NTT – p.9/13
  • 10. 妄想 理論性能の限界 (ECB): (1/3 + 1 × 10)/16 = 0.646 cpb 暗号処理にはメモリロードとかループ処 理とかいるだろう port 1 ALU とか load/store は十分空いてい そうだ ほぼ理論性能が出るんじゃないだろうか Copyright 2013 c NTT – p.10/13
  • 11. 現実 0.702 cpb まではいけた @ C intrinsic 0.853 cpb @ OpenSSL 1.0.1c よりは速いが 1 cycle/block ぐらい取られている 何故??? Copyright 2013 c NTT – p.11/13
  • 12. 実験 独立データの aesenc をいっぱい並べる 途中に単純な命令を 1 つ入れてみる 何をどういれても 1 cycle 遅くなる Sandy Bridge ではレジスタ zero クリアは register renaming で終了 これをいれると…やっぱり 1 cycle 遅い 結論: MSROM 命令 (?) MSROM 命令: 1 cycle に 1 命令しか decode 出 来ない Copyright 2013 c NTT – p.12/13
  • 13. Best Current Practice 出来る限り aes{enc,dec}{,last}は 連続して並べる 他の命令を混ぜる場合は 4 命令ずつ (4-1-1-1 template にあわせて) いれる おまけ: aes{enc,dec}{,last} のデータ は little endian friendly。数値計算をする場合 は endian 変換が必要。 Copyright 2013 c NTT – p.13/13