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	
  (電界効果トランジスタ)の仕組み	

•  ゲート電極に電圧を加えて動作させるトランジスタ	
  
 –  ゲートに電圧を加えるとチャネルが生成される	
  
 –  チャネル幅によりソース-­‐>ドレイン間を流れる電流が変化	

                      正電圧	

                  ゲート	

        ソース	
               ドレイン	
                  チャネル	
       n型半導体	
              n型半導体	
                     	
  
                 電流が流れる	
                     	
  
                  p型半導体
MOSFETを用いた	
  
       NANDフラッシュメモリセル	
•  MOSFETのゲートを二種類に分割	
  
  –  制御ゲート	
  
     •  従来と同じゲートの役割	
  
  –  浮遊ゲート	
  
     •  絶縁膜に囲まれた導体	
  


                       制御ゲート	
                        絶縁膜	
  
                          	
  
                       浮遊ゲート	
             ソース	
       	
        ドレイン	
             n型半導体	
      	
      n型半導体	
                       p型半導体
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]	
  

2012/11/14 softlab_study 発表資料「SSDの基礎」

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