不揮発性メモリとは何か
OSC2020 Online/Aizu 低レイヤ・OS・セキュリテイ LT⼤会
よしおかひろたか
1
プログラマにとっての不揮発性メモリ
• 不揮発性メモリ(NVM - Non-Volatile Memory)とはなにか
• なぜ不揮発性メモリについて語るのか
2
NVM(不揮発性メモリ)
• DRAM同様にバイト単位でアクセス可能
• ストレージデバイス同様に不揮発性(永続性を保持)
• 2019年春頃から出荷されているIntel Optaneなどが製品例
3
4
10-0
10-1
10-2
10-3
10-4
10-5
10-6
10-7
10-8
10-9
10-10
L1
レジスタ
L2 L3
DRAM
SSD
HDD
レ
イ
テ
ン
シ
︵
秒
︶
揮発性
不揮発性
Tape
メモリ・ストレージ階層
レイテンシギャップ
100 101 102 103 104 105 106 107 108 109 1010 1011 1012 1013 1014
容量 (bytes)
5
10-0
10-1
10-2
10-3
10-4
10-5
10-6
10-7
10-8
10-9
10-10
レジスタ
L2 L3
DRAM
SSD
HDD
レ
イ
テ
ン
シ
︵
秒
︶
揮発性
不揮発性
Tape
メモリ・ストレージ階層
100 101 102 103 104 105 106 107 108 109 1010 1011 1012 1013 1014
容量 (bytes)
NVM
L1
6
10-0
10-1
10-2
10-3
10-4
10-5
10-6
10-7
10-8
10-9
10-10
レジスタ
L2 L3
DRAM
SSD
HDD
レ
イ
テ
ン
シ
︵
秒
︶
揮発性
不揮発性
Tape
メモリ・ストレージ階層
100 101 102 103 104 105 106 107 108 109 1010 1011 1012 1013 1014
容量 (bytes)
NVM
• NVM
• バイト単位アクセス可
能な不揮発性メモリ
• 動作特性が不明
L1
7
アプリケーションから⾒たNVM
Management
Utility
Applications
Nonvolatile Memory Module
load
store
load
store
read
write
ndctl
POSIX API AppDirect Memory
NVM Driver
FS
NVM
MMU
8
L1d cache L1i cache
L2 cache
register
L3 cache
WPQ NVDIMM
CPUCACHE
CLWB + fence
or
CLFLUSHOPT + fence
or
CLFLUSH + fence
or
NT stores + fence
MOV RAX, Memory
不揮発
電源断で
情報喪失
9
L1 cache L1 cache
L2 cache
register
L3 cache
WPQ NVDIMM
CPUCACHE
CLWB + fence
or
CLFLUSHOPT + fence
or
CLFLUSH + fence
or
NT stores + fence
MOV RAX, Memory
MOVNT RAX, Memory
不揮発
電源断で
情報喪失
10
L1 cache L1 cache
L2 cache
register
L3 cache
NVDIMM
CPUCACHE
MOV Memory, RAX
MOVNT Memory, RAX
不揮発
電源断で
情報喪失
実行順序について,メモリオーダリング
プログラム順
1. load-m1
2. load-m2
11
プログラム順 実⾏1 実⾏2
load-m1
load-m2
プログラム順
1. store-m1
2. store-m2
プログラム順 実⾏1 実⾏2
store-m1
store-m2
プログラム順
1. store-m1
2. load-m1
プログラム順 実⾏1 実⾏2
store-m1
load-m1
実行順序について,out of order実行,同期命令
12
プログラム順
1. store-m1
2. load-m2
プログラム順
1. store-m1
2. SFENCE
3. load-m2
プログラム順 実⾏1 実⾏2 実⾏3
store-m1
SFENCE
load-m2
実⾏1 実⾏2
store-m1
load-m2
実行順序について,CLFLUSH,CLFLUSHOPT
プログラム順
1. store-m1
2. CLFLUSH
3. load-m2
13
プログラム順
プログラム順
1. store-m1
2. CLFLUSHOPT
3. load-m2
プログラム順 実⾏1 実⾏2 実⾏3
store-m1
CLFLUSHOPT
load-m2
実⾏1 実⾏2 実⾏3
store-m1
CLFLUSH
load-m2
実験環境
CPU model Intel Xeon Silver 2.5GHz
8 core, 2 socket
No. of
Nodes
2
Cache L1d 32 KiB, L1i 32 KiB,
L2 1MiB, L3 11 MiB
(shared)
DRAM 32 GiB * 12 (384 GiB)
DCPMM 128 GiB * 12 (1536 GiB)
OS CentOS 7.7.1908, Linux
kernel 3.10
14
実験結果,レイテンシ
15
210 214
load命令の性能,レイテンシ
16
load load ntload ntload movql movql
fence fence fence
fenceなしのほ
うが⾼性能
NVMは3倍程度レイ
テンシが⼤きい
store-fenceレイテンシ
17
non temporal store
レイテンシが⼤きい
DRAMとNVMレイテ
ンシ差は⼩さい
store ntstore store store store movqs
fence fence clflush clwb clfopt fence
fence fence fence
store-nofence レイテンシ
18
store store store store ntstore movqs
clflush clwb clfopt
load ランダムアクセススループット
19
fenceなしのほ
うが⾼性能
NVMはDRAMの43%
程度のスループット
load ntload load ntload
fence fence
store ランダムアクセススループット
20
NVMはDRAMの
33%程度
store store store store ntstore movqs
fence clflush clwb clfopt fence fence
まとめ
• NVMとDRAMの性能差
• レイテンシ,loadでは3倍ほど,storeは同程度
• スループット,storeはNVMがDRAMの1/3程度,loadは1/2程度.
• NVMの命令ごとの性能差
• レイテンシ
• load,fenceあり,なし,命令の組合せでの性能差は⼩
• store,fenceなし,flushはどれも⼩(40数ns).fenceありのflushは⼤(300ns程度),
• スループット
• load,fenceありなしで⼤きな差,ランダムアクセスのスループットは低
• store,命令ごとに性能差あり,CLFLUSHOPTはfence付storeに⽐べ3割ほど⼤
21
永続性をもつメインメモリ
• OSやDBMSへの影響
• ファイルへ読み書きしなくても情報が保持される
• 永続性を保証するための各種メカニズムが不必要になる?
• DBMSのredo logやWAL (write ahead log)
• SSD/HDDよりIOPSが⾼い
• SSD/HDDより⾼速なストレージ
• 速い揮発性な主記憶,遅い不揮発性なストレージを前提としていたア
ルゴリズムが不要になる?
• B+Tree
• 仮想記憶
• 全く新しいパラダイムとしての研究開発が必要
22

不揮発性メモリ(NVM)とはなにか