フラッシュメモリ・コントローラ
フラッシュメモリ・コントローラ(もしくはフラッシュ・コントローラ)はフラッシュメモリ (通常はNANDフラッシュ) に格納されたデータを管理し、コンピュータまたは電子デバイスと通信する。
フラッシュメモリ・コントローラは、メモリーカードなどの低デューティ・サイクル環境で動作するように設計したり、PDAや携帯電話などで使用するその他の同様のメディアを設計したりできる。USBフラッシュドライブは、低いデューティ・サイクルでUSBポートを介してパーソナル・コンピュータと通信するように設計されたフラッシュメモリ・コントローラを使用する。
フラッシュ・コントローラは、ラップトップ・コンピュータ・システムからミッション・クリティカルなエンタープライズ・ストレージアレイまでのデータ・ストレージとして使用されるソリッドステートドライブ (SSD) のような、より高いデューティ・サイクル環境向けに設計することもできる[1]。
初期設定
編集フラッシュ・ストレージ・デバイスが最初に製造された後、最初にフラッシュ・コントローラを使用してフラッシュメモリをフォーマットする。これにより、デバイスが正常に動作し、不良なフラッシュメモリ・セルがマップされ、将来故障したセルの代替となるスペア・セルが割り当てられる。スペア・セルの一部は、コントローラや特定のストレージ・デバイスのその他特別機能を操作するファームウェアを保持するためにも使用される。コントローラが論理セクターの要求を実際のフラッシュ メモリ・チップ上の物理的な場所に変換できるように、ディレクトリ構造が作成される[1]。
読み取り、書き込み、および消去
編集システムまたはデバイスがフラッシュメモリからデータを読み書きする必要がある場合、フラッシュメモリ・コントローラと通信する。SDカードやUSBフラッシュドライブなどの単純なデバイスには、通常、少数のフラッシュメモリ・ダイが同時に接続されている。
動作は個々のフラッシュメモリ・ダイの速度に制限される。 対照的に、高性能のソリッドステートドライブには、100個以上のダイが並列通信パスを備えたマトリックスに編成されており、単一のフラッシュ・ダイの何倍もの速度を実現する[要出典]。
ウェア・レベリングとブロック・ピッキング
編集フラッシュメモリは、限られた数のプログラム消去サイクルに耐えることができる。特定のフラッシュメモリ・ブロックが、他のブロックに書き込むことなく繰り返しプログラムおよび消去された場合、1つのブロックが他のすべてのブロックより先に消耗し、ストレージ・デバイスの寿命が早まる可能性がある。このため、フラッシュ・コントローラはウェア・レベリングと呼ばれる手法を使用して、SSD内のすべてのフラッシュ・ブロックにできるだけ均等に書き込みを分散する。完璧なシナリオでは、これによりすべてのブロックが最大寿命まで書き込まれるため、すべて同時に失敗する[2]。
フラッシュ変換レイヤ (FTL) とマッピング
編集通常、フラッシュ メモリ・コントローラには、ホスト側またはファイルシステムの論理ブロックアドレス (LBA) をフラッシュメモリの物理アドレスにマッピングする (論理から物理へのマッピング) ファイルシステムの下のレイヤである「フラッシュ変換レイヤ」(FTL: Flash Translation Layer) も含まれる。 LBAは、セクター番号と512バイトのマッピング単位を表す。ファイルシステムで認識および管理される論理サイズを表すすべてのLBAは、フラッシュの物理的な位置 (ブロックID、ページID、およびセクターID) にマップされる。ウェアレベリングおよびその他のフラッシュ管理アルゴリズム (不良ブロック管理、読み取り妨害管理、セーフフラッシュ処理など) の一部として、LBAの物理的な位置が動的に頻繁に変更される場合がある。FTLのマッピングユニットは、LBAがブロックベース、ページベース、さらにはサブページベースでマッピングされるように、異なる場合がある。使用パターンによっては、マッピングの粒度を細かくすることで、フラッシュの消耗を大幅に減らし、フラッシュ・ベースのストレージ・メディアの耐久性を最大限に高めることができる[3][4][5]。
FTLメタデータは独自のフラッシュスペースを占有するため、電源が失われた場合に備えて保護する必要がある。さらに、フラッシュメモリの他の部分よりも先にマッピングテーブルが消耗し、ストレージデバイスの寿命が早まる可能性がある。これは通常、エンタープライズ デバイスではスペア用に特大のスペースを割り当てることで回避される。ただし、MRAMのようなより耐久性のある形式のストレージがFTLにも提案されている。
ガベージ・コレクション
編集ソリッドステート・ストレージ・デバイスのすべてのブロックが1回書き込まれると、フラッシュ・コントローラは、現在のデータがなくなった初期ブロック (古いブロックとも呼ばれる) に戻る必要がある。
これらのブロックのデータは新しく書き込まれたブロックに置き換えられ、新しいデータを書き込むことができるように消去されるのを待っている。
これはガベージ・コレクション(GC)と呼ばれるプロセスである。 すべてのSSD、CFカード、およびその他のフラッシュ・ストレージ・デバイスには、ある程度のガベージ・コレクションが含まれる。 フラッシュ・コントローラがこれを行う速度はさまざまである[6]。
関連項目
編集- 長江メモリ
- プラズマ活性化
- フラッシュメモリ・コントローラ
- 中国に対するアメリカの制裁
- マイケル・マッコール
- 未検証リスト
リファレンス
編集- ^ a b “Flash Memory Guide”. kingston.com. 7 March 2013閲覧。
- ^ Chang, Li-Pin (2007年3月11日), On Efficient Wear Leveling for Large Scale Flash Memory Storage Systems, National ChiaoTung University, HsinChu, Taiwan, CiteSeerX 10.1.1.103.4903。
- ^ “Design Tradeoffs in a Flash Translation Layer”. June 23, 2015時点のオリジナルよりアーカイブ。 Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “Understanding Flash: The Flash Translation Layer” (September 17, 2014). Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ Heidrich, Susan (February 2015). “New flash management architecture enables MLC for industrial storage”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “SSDs - Write Amplification, TRIM and GC”. OCZ Technology. 2012年5月26日時点のオリジナルよりアーカイブ。2010年5月31日閲覧。