回答:
それには多くのトレードオフがあります。
ウィキペディアも:
トランジスタの追加にもかかわらず、グランドワイヤとビット線の削減により、より高密度のレイアウトとチップあたりのより大きなストレージ容量が可能になります。さらに、NANDフラッシュには通常、一定数の障害を含めることが許可されています(BIOS ROMに使用されているように、NORフラッシュには障害がないことが期待されます)。製造業者は、トランジスタのサイズを確実に作成できるサイズ以下に縮小することで、使用可能なストレージの量を最大化しようとします。
したがって、NORフラッシュはより簡単にアドレス指定できますが、密度はそれほど高くありません。
あなたはかなりまともな比較PDFを見てみると。
NORのスタンバイ電力は低く、コードの実行が簡単で、読み取り速度も高速です。
NANDの有効電力は非常に低く(ビットの書き込みは高速で低コスト)、書き込み速度は(かなり)高速で、容量ははるかに大きく、ビットあたりのコストははるかに低く、ファイルストレージの使用は非常に簡単です。コードの実行に使用するときの読み取り速度が遅いため、実際にゴースト化してラムにする必要があります。
その上に素晴らしいテーブルがある小さなセクションを引用するには...
NANDフラッシュは安価であるため、可能であれば使用することをお勧めします。欠点は、信頼性がそれほど高くないことです。NANDフラッシュはほとんどの操作で高速ですが、注目すべき例外は小さなランダムアクセス読み取りです。メモリ内のランダムアドレスから数バイトを読み取りたい場合、NORの方が高速です。大量のメモリ読み取りの場合、NANDはかなりうまく機能し、実際に十分な大きさのチャンクでNORに勝ります。
ほとんどの組み込みオペレーティングシステムには、NANDフラッシュのエラーを修正するコードが含まれています。また、ハードウェアエラー修正機能を備えたマイクロコントローラーもあります。実際の問題は起動時に発生します。第1レベルのブートローダーにはエラー修正コードがなく、ハードウェアECCを実行するようにメモリコントローラーをまだ構成していません。これは少し鶏卵問題です。ECCコードをまだロードしていないため、エラーなしでECCコードをロードすることはできません。
この問題を回避するために、一部のメモリメーカーは、エラーのないことが保証されているチップの特定の領域(最初の4 kBなど)を指定します。ソフトウェアECCを備えたブートローダー(U-bootなど)をそこに読み込み、エラーなしで読み取り、それを使用してOSカーネルを読み取り、エラーを修正します。ブートローダーをシリアルフラッシュに保存し、OSカーネルやファイルシステムなどの大規模なものにはNANDフラッシュを使用することもできます。
このAtmelアプリケーションノートが役立つことがわかりました:http : //www.atmel.com/dyn/resources/prod_documents/doc6255.pdf
NORはランダムアクセスを許可しますが、NANDは許可しません(ページアクセスのみ)。
ウィキペディアから:
NORおよびNANDフラッシュは、メモリセル間の相互接続の構造から名前を取得します。NORフラッシュでは、セルはビットラインに並列に接続され、セルを個別に読み取りおよびプログラムできます。セルの並列接続は、CMOS NORゲートのトランジスタの並列接続に似ています。NANDフラッシュでは、セルは直列に接続され、NANDゲートに似ています。直列接続は、並列接続よりもスペースを消費しないため、NANDフラッシュのコストが削減されます。それ自体では、NANDセルが個別に読み取られてプログラムされるのを防ぎません。