Upload
ryo-okubo
View
4.090
Download
1
Embed Size (px)
DESCRIPTION
2012/11/14 のsoftlab_study の発表資料 「SSDの基礎」
Citation preview
SSDの基礎 #so'lab_study
2012/11/14 @syu_cream
アジェンダ
• SSDの基礎 – SSDの基本構成 – NANDフラッシュメモリの基礎
• MOSFETについて • NANDフラッシュメモリのセルについて • NANDフラッシュメモリの基本構成
– SSDのNANDコントローラについて • FTL(Flash TranslaEon Layer)
• SSD絡みの最新動向 – PCIe SSD – 余談: 君の知らないSSD物語
SSDの基礎
SSDとは?
• 一般的には… – フラッシュメモリを用いた高速なディスクデバイス
• そう言うとUSBメモリとあまり違いが分からない • PCIe SSDはSSDじゃねぇんだよ
• →NANDフラッシュメモリを用いた、「インタフェースがHDD互換」な、「ハード内部でバリバリ最適化している」ストレージ
SSDの利点・欠点
• 利点 – ランダムアクセスが高速 – 騒音が少ない – 対衝撃性が高い – 省電力
• だが、将来的に電力消費上がる可能性アリ
• 欠点 – フラッシュメモリの書換可能回数(寿命)が存在 – 使い込まれるとランダムライト性能が低減する
SSDの基本構成
• インタフェース – SATA, mSATAコネクタ
• DRAM – キャッシュに用いられる
• コントローラ – SSDの心臓部とも言える肝心要の部位 – 高速化、寿命の長期化、高信頼性等、仕事多し
• NANDフラッシュメモリ – 実際にデータが保持される部位 – セル辺りに保持するビット数が変動したり(後述)
NANDフラッシュメモリの基礎
MOSFET (電界効果トランジスタ)の仕組み
• ゲート電極に電圧を加えて動作させるトランジスタ – ゲートに電圧を加えるとチャネルが生成される – チャネル幅によりソース-‐>ドレイン間を流れる電流が変化
p型半導体
ゲート
ソース ドレイン
チャネル n型半導体 n型半導体
正電圧
電流が流れる
MOSFETを用いた NANDフラッシュメモリセル
• MOSFETのゲートを二種類に分割 – 制御ゲート
• 従来と同じゲートの役割
– 浮遊ゲート • 絶縁膜に囲まれた導体
p型半導体
絶縁膜 ソース ドレイン
n型半導体 n型半導体
浮遊ゲート
制御ゲート
NANDフラッシュメモリでの読込み処理
• 制御ゲートに電圧を加えソース-‐ドレイン電流を読む – 浮遊ゲートに電子が有る場合…
• チャネルは生成されず電流は流れない
– 浮遊ゲートに電子が無い場合… • チャネルが生成され電流が流れる
GND
-‐ -‐
正電圧
+ +電子に阻害され電圧通らず
チャネル
電流が流れる
NANDフラッシュメモリでの書込み処理
• 制御ゲートに電子を注入することでデータ書込 – 制御ゲートに高電圧をかける – 電子が絶縁膜を越えて浮遊ゲートへ注入される
• 絶縁膜があるので勝手に電子が出ていけない→揮発しない!
-‐ -‐
高電圧
GND GND
GND
高電圧により電子注入
NANDフラッシュメモリでの削除処理
• 書込みと逆方向に高電圧を掛ける – トンネル効果により浮遊ゲートの電子が放出
正電圧
-‐ -‐
GND
正電圧 正電圧
トンネル効果で 電子放出
SLCとMLC
• セル毎に複数ビットの情報を持たせる事も可能 – 浮遊ゲートに注入する電子量をビット数分持つ
• SLC(Single Level Cell) – セル辺り1ビットの情報を持つ – 容量拡大が難しく高価だが,高速かつ高寿命
• MLC(MulE Level Cell) – セル辺り2,3ビットの情報を持つ – 容量拡大が容易で安価.しかし低速で寿命は短い – 最近は単にMCLと言うと2ビット,TLC(Triple Level Cell)
と言うと3ビットらしい
NANDフラッシュメモリセルの寿命
• セルに書込み/削除を繰り返すと絶縁膜が摩耗する – 書込み/削除のため、何度も高電圧を掛ける必要がある – 絶縁破壊が起き,絶縁膜が通電するようになってしまう
絶縁破壊により
電子を保持できなくなる!
NANDフラッシュメモリの構成
• メモリセルを直列接続して記憶領域を形成 • 動作原理上、二種類の管理単位が存在 – ページ
• 読込み/書込みの単位 • 4kB~8kB 程度
– ブロック • 削除の単位 • 512kB 程度
– ここで言うページとブロックはあくまでSSD内部の独立した管理単位です。
SSDの記憶領域
フラッシュメモリの構造に起因した ランダムライト性能低下問題
• データ書き込みの前に既存データの削除が必要 • 削除処理対象領域が書き込み処理対象領域と比較して大きい
– 削除に巻き込まれるページは,一旦バッファに退避しなければならない – 記録済ページが多いほど,つまり使い込まれているほどこの処理は頻発!
未使用ページ 記録済ページ ブロック
未使用ページへの書込みは細かい粒度で実行可能
記録済ページへの書込みは粗い粒度(ブロックの赤枠)で実行されコスト大!
SSDのNANDコントローラ
SSDのNANDコントローラ
• SSDの肝心要となる制御機構 – HDD互換なインタフェース提供 – NANDフラッシュメモリ制御 – FTL(Flash TranslaEon Layer)の提供
FTL(Flash TranslaEon Layer)
• 基本的にHDD互換インタフェース提供の為のレイヤ – しかし実際は…名前以上の仕事をしている!
• FTLの持つ仕事 – 論理アドレスから物理アドレスへの変換 – 不良ブロックの管理 – 誤り訂正 – ウェアレベリング – deduplicaEon ←!? – compression ←!!?
ウェアレベリング
• セル当りの書換回数を平滑化 – ブロックに対する書換回数をモニタリング – 書換回数が少ないブロックに書かれるよう変換 – データが静的かどうかを判別して平滑化
• 拡張領域を使ったセル書換頻度低減 – 昨今のSSDは拡張領域を持つ事も
• エンタープライズ向けとかだと有り得る
– 拡張領域にページ単位で書込み→通常の領域にブロック単位で一気に書換え処理を行うなど
色々なウェアレベリング
• その他、我々の理解を越えた泥臭い延命作業をしている可能性も。。。
The OpenSSD Project
• オープンソースのSSDファームウェア – Programmable FTL が実現出来る!
• オレオレウェアレベリングを詰んだSSDとか実現可能に
• hap://www.openssd-‐project.org/wiki/The_OpenSSD_Project
• 余力があればそのうちコード読んで紹介します
PCIe SSD
( ^o^) SSD,良きに計らってくれてすごい!
( ˘⊖˘) 。o(待てよ?流石にハードウェアレベルで色々やり過ぎでは?) (;˘⊖˘) 。o(更に待てよ?そもそもインタフェースの互換の為に性能縛られているのでは?)
|Fusion-‐io|┗(☋` )┓三
( ◠‿◠ )☛そこに気づいたか・・・ioDrive を使ってもらう
▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂うわああああああ
ioDrive
• インタフェースにPCI Express を使用 • SSDのFTLと同等の機構をデバイスドライバで持つ
• ioDrive 専用ファイルシステムまで存在 – DFS[W K. Josephson et al., FAST’10]
余談: 君の知らないSSD物語
メモリセルを自動修復するSSD
• Exploi=ng Heat-‐Accelerated Flash Memory Wear-‐Out Recovery to Enable Self-‐Healing SSDs[Q Wu et al., HotStorage’11]
• NANDフラッシュチップを熱して延命(??) – フラッシュチップを三次元構成 – 最下層に加熱層を設置 – データを別チップに退避し加熱して延命。その後データを
復帰 – すみません、あまり読込んでないです。誤解があるかも
自爆ボタンがあるSSD
• RunCore InVincible – 軍用の、物理的破壊ボタン搭載SSD
• hap://japanese.engadget.com/2012/05/16/ssd-‐runcore-‐invincible/
– コントローラに大電流を流してメモリセルをブッ壊す • NANDフラッシュメモリチップから煙が上がる模様
– SSDはFTLにより隠蔽された領域のデータが削除しきれない問題が有るが物理的にブッ壊せば無問題か • Reliably Erasing Data From Flash-‐Based Solid State Drives[M Wei et al., FAST’11]