Blog:
Toradex製品におけるフラッシュメモリーの概要
フラッシュメモリーは、電気的に消去および再プログラム可能な、不揮発性のコンピューターストレージ媒体で、電気機器に幅広く利用されています。すべてのToradex SoMには組み込みフラッシュメモリーが搭載されているため、これについて簡単な概要を説明します。
フラッシュセルは、主に2つの構造、NORゲートとNANDゲートに基づいています。構造の違いにより、特徴の相違点、特定のメリットやデメリットがあります。それらについて、次の表にまとめました。
メリット | デメリット | |
---|---|---|
NAND | 高速なプログラム消去サイクル 低コスト |
低速なランダムアクセス(ページ読み込み) 困難なバイトプログラミング エラー修正の仕組みが必要 |
NOR | 高速なランダムアクセス 簡単なバイトプログラミング エラー修正の仕組みが不要 |
低速なプログラム消去サイクル 高コスト |
NANDベースのメモリーには、raw NANDまたはコントローラーが統合されたNANDメモリーがあります。後者のアプローチはeMMCと呼ばれており、これは、MMC規格から派生したソリッドステートストレージ規格です。
Toradex SoMは、NANDテクノロジーに基づくフラッシュメモリーを搭載しています。
NANDフラッシュでは、ストレージ用の最小単位はメモリーセルです。メモリーセルでは、異なる電圧レベルを使用してデータがエンコードされます。NANDの種類により、異なる数の電圧レベルの設定と読み取りが可能で、これによって1つのセルに格納できるデータ容量が異なります。テクノロジーの進歩にともない、1つのセルに格納できるビット数が増加してきました。
各セルに保存されるビットの数によって、NANDフラッシュは次のように分類されます。
- シングルレベルセル(SLC):セル当たり1つのデータビット(2つの異なる電圧レベルを使用して0b0および0b1の値をエンコーディング)。
- マルチレベルセル(MLC):セル当たり2つのデータビット(4つの異なる電圧レベルを使用して0b00と0b11の間の値をエンコーディング)。
- トリプルレベルセル(TLC):セル当たり3つのデータビット(8つの異なる電圧レベルを使用して0b000と0b111の間の値をエンコーディング)。
- クアドラプルレベルセル(QLC):セル当たり4つのデータビット(16つの異なる電圧レベルを使用して0b0000と0b1111の間の値をエンコーディング)。
下の図は、異なるNANDの種類を視覚的に表しています。
NANDフラッシュメモリーには寿命があり、書き込みと消去の操作によってセルが劣化します。劣化したセルの数が増えると、フラッシュメモリーで障害が発生する原因となる可能性があります。各セルが劣化する前に書き込みと消去を行える回数は、これらのメモリーの重要な特徴であり、多くの場合、耐久性として表現されます。耐久性は、プログラム/消去サイクル(P/Eサイクル)で測定され、NANDの種類によって耐久性は異なります。一般的に、セル当たりに保存されるデータビット数が増えるとフラッシュメモリーの耐久性が低くなります。さらに、NANDフラッシュメモリーの耐久性は、デバイスの寿命と直接関係しています。
下の表では、異なるNANDの種類の重要な特徴を比較しました。
セルの種類 | 耐久性 | 寿命 | セル当たりの容量 | 容量当たりのコスト |
---|---|---|---|---|
SLC | 最高¹ | 最高¹ | 1ビット | 高 |
MLC | 高¹ | 高¹ | 2ビット | 中 |
TLC | 高¹ | 高¹ | 3ビット | 中 |
QLC | 中¹ | 中¹ | 4ビット | 低 |
情報
¹:最新鋭のメモリーデバイスの場合
NANDフラッシュセルの配列には主に2種類あります。2D(プレーナー型)と3D高容量で低コストのNANDフラッシュに対する需要の高まりにより、2D(プレーナー型)配列よりも大きな容量を実現する3Dメモリー構造が開発されました。この3D配列は、電荷捕獲(Change Trap、CT)技術の適用により実現したものです。3D配列を使用すると、セルの層を重ねることでメモリー容量を増大させることができます。CT技術により、TLCセルの実装が簡素化され、QLCセルの実装が可能になりました。また、CT技術は、セル当たりのデータビット数を増やすことで発生することがある信頼性を緩和するのにも役立ちます。CT技術に関する詳しい情報については、次のリンクを参照してください。Charge Trap Flash.
次の図は、NANDの種類とセル配列がフラッシュメモリーに及ぼす影響を示しています。
eMMCまたは組み込み機器向けマルチメディアカード(embedded Multi-Media Card)とは、コントローラーが追加で統合され、統一された基準インターフェースを提供するNANDフラッシュセルに基づいたストレージ技術のことです。以前はMMC Association(MMCA)が統括していましたが、現在はJEDECが規格化しています。この規格では、eMMC Security Extensionといったエクステンションも許可されています。
eMMCフラッシュメモリーは最低3つの基本的なコンポーネントから成っています。
- MMCインターフェース
- フラッシュコントローラー
- NANDフラッシュ
フラッシュコントローラーは、メモリーの寿命を延長することを目的とした機能をいくつか実装します。
-
ウェアレベリング:先述のとおり、フラッシュメモリーでサポートされるP/Eサイクル数は限られており、メモリーのブロックへの書き込みと消去はセルの劣化につながります。実際、常に同じブロックで消去を書き込みを行っていると、ほかのブロックよりもそれらのブロックの劣化が早まります。そこで、この問題を避けるため、eMMCフラッシュのフラッシュコントローラーはデータがプログラムされるたびにウェアレベリングアルゴリズムによりどの物理的ブロックを使用するかを決定します。劣化推定に関する詳しい情報については、次のプレゼンテーションをご覧ください。Wear Estimation for Devices with eMMC Flash Memory(eMMCフラッシュメモリー搭載デバイスの劣化推定)。
-
誤り訂正符号(ECC):NANDフラッシュ/eMMCデバイスでは、ノイズや電磁的干渉によってビットの値が0から1へまたは1から0へと反転するのは予測されていることで、これがデータの破損につながる可能性があります。誤り訂正とは、誤り訂正符号(ECC)によってデータ破損を検出、訂正するソリューションです。検出、訂正が可能な破損ビットの数は、eMMCで使われているNANDの種類とそのコントローラーによって異なります。
-
不良ブロックの管理:ECCでは、破損したデータを見つけることができるため、破損が発生するブロックを特定することも可能です。ECCと訂正可能なビット数によっては、コントローラーでしきい値を設定し、破損数がその値を超過した場合に、ECCを使ってデータを訂正するだけでなくほかの修正操作を行うようにすることが可能です。いったんこのしきい値に達すると、データは訂正されてデバイスのほかのブロックに移動されます。破損が繰り返し発生したブロックは、不良ブロックとしてマークすることができます。そうしたブロックは、それ以降データ保存に使用されなくなります。
-
オーバープロビジョニング:セルの劣化により不良ブロックが発生することは予測されているため、そうしたブロックを不良ブロックとしてマークして使用不可とし、保存されていた内容を正常機能している別のブロックに移動するためのソリューションが必要です。オーバープロビジョニングとは、この目的を達成するために、ホストからは利用可能なストレージスペースとして見ることのできない余分なストレージ容量を含めるソリューションのことです。これによってeMMCの耐久性が向上し、書き込みパフォーマンスが改善する可能性があります。
次の表は、Toradex SoMで使われているさまざまなフラッシュメモリーのフラッシュの種類、NANDの種類とセル配列の組み合わせの概要を示しています。
容量 | フラッシュの種類 | セルの種類と配列 |
---|---|---|
128MB | Raw NAND | 2D SLC |
256MB | Raw NAND | 2D SLC |
512MB | Raw NAND | 2D SLC |
1GB | Raw NAND | 2D SLC |
4GB | eMMC | 2D MLC |
8GB | eMMC | 2D MLC |
16GB | eMMC | 2D MLC / 3D TLC¹ |
32GB | eMMC | 3D TLC |
- ¹: 古いハードウェアは2D MLC eMMCを搭載しています。以降のハードウェアは3D TLC eMMCを搭載しています。使用している特定製品の構成の改訂履歴をご覧になり、セルの種類と配列が2D MLCから3D TLCに変更されたハードウェアのバージョンを確認してください。
次の表に、Toradex製品で利用されているNANDフラッシュメモリーの最も重要な特徴を示します。
フラッシュ構成 | 耐久性 | 寿命 | パフォーマンス | 容量当たりのコスト |
---|---|---|---|---|
Raw NAND (2D SLC) | 最高 | 最高 | 最高 | 高 |
eMMC (2D MLC) | 高 | 高 | 高 | 中 |
eMMC (3D TLC) | 高 | 高 | 高/中 | 低 |
3D TLC eMMCのメリットは次のとおりです。
- 密度と容量の拡大。 セルに保存されるビット数が増大し、複数の層が積み重ねられた構造になっています。
- 信頼性の向上。セル間のスペースの拡大により、近くのセルとのカプリングが軽減されます。
- 消費電力の削減。プロセスのサイズが小さく、CT技術により漏電が軽減されます。
3D TLC eMMCの潜在的なデメリットは、通常、2D MLC eMMCと比べて耐久性が低いことです。ただし、容量の増大、先述のメモリーコントローラーと、疑似SLC(pSLC)モードの仕組みにより、このデメリットを実質的に排除することも可能です。このトピックの詳細については、以下の章と、次の記事を参照してください。eMMC (Linux).
耐久性は、NANDフラッシュテクノロジーに基づくeMMCの大きな課題です。eMMCの耐久性、信頼性とパフォーマンスを向上させるには、eMMCのハードウェアエリアパーティションで異なるモードを使用するよう設定することができます。JEDECによって規格化されたEnhanced User Data Area(EUDA)と呼ばれるモードは、JEDEC eMMC規格 4.4以降を実装するeMMCが対応しています。このモードでは、セルが疑似SLC(pSLC)モードに設定されます。
pSLCモードは耐久性と書き込み速度を大幅に向上させます。たとえば、通常モードで3000のP/Eサイクルに対応する3D TLC eMMCメモリーでは、pSLCを利用した場合、2D MLC eMMCとほぼ同じ、20,000から30,000のP/Eサイクルに対応します。pSLCモードでは、メモリーセルは1つのデータビットのみを格納するよう設定されます(通常モードの場合、MLC eMMCは2ビット、TLC eMMCは3ビットです)。このため、利用可能な総容量は削減されます。pSLCモードに設定されたMLC eMMCのハードウェアエリアパーティションはもともとの容量の半分になり(8GBではなく4GBなど)、pSLCモードに設定されたTLC eMMCのハードウェアエリアパーティションはもともとの容量の3分の1(16GBではなく約5GBなど)になります。
次の図は、ハードウェアエリアパーティションの設定の例を示しています。1つはEnhanced User Data Areaパーティション(pSLCモード使用)を採用しています。
Enhanced User Areaはエンハンストストレージとも呼ばれ、eMMC4.4(MMCA 4.4)以降の規格で定義された、eMMCのユーザーエリアを設定するためのモードです。該当エリアの信頼性を高め、パフォーマンスを向上させることができます。ただし、メーカーがEnhanced User Areaをどのように実装するかは、規格では定義されていません。この設定に対応しているデバイスでは、ブートおよびRPMBエリアのパーティションはデフォルトでエンハンストストレージに設定されている必要があります。
情報
2019年初め時点で生産されているほとんどすべてのeMMCは、Enhanced User Areaに対応しているため、ブートおよびRPMBパーティションではデフォルトでこの設定が有効化されています。
疑似SLC(pSLC)は、セル容量の半分(セル当たり2ビットではなくセル当たり1ビット)を利用するMLC NANDフラッシュメモリーの設定で、eMMCの信頼性、パフォーマンスと耐久性を向上させます。事実上、pSLCモードはSLCとMLCの中間にあります。
- エンハンストストレージは概念であり、pSLCは実装手法です。
- pSLCはエンハンストストレージを実装する1つの手法です。
- pSLCとエンハンストモードという用語は混同されて使われることがありますが、eMMCメーカーが明示的に示していない限りpSLCが実装に使用されているかどうかを判断する方法はありません。
- ベンダーのデータシートで、エンハンストストレージにどの実装が使用されているかについての情報を見つけるのはあまり簡単なことではありません。
- エンハンストストレージとして設定するメモリー領域は選択することができます。eMMCユーザーエリア全体をエンハンストエリアとして設定する必要はありません。
- メモリー領域をエンハンストストレージとしてプログラムするのは1回限りの操作です。一旦実行すると取り消すことはできません。
- MLCのオーバープロビジョニングは、pSLCほど効果的ではありません。前者はパフォーマンスや信頼性におけるメリットがなく、後者は耐久性を2倍以上向上させます。
このトピックに関する詳しい説明については、eMMC(Linux)の記事のEnhanced User Area and pSLCを参照してください。