メモリ基本講座 「NORとNANDとは何ぞや」
メモリ基本講座「半導体メモリとは何ぞや」で解説しましたが、電源を切っても記録を保持し続けるメモリを不揮発性メモリと言います。
昔の名残でROM (Read Only Memory)とも言ったりしますが、皆様がよく耳にするであろう、EEPROM、NOR、NAND は、当然 "Read Only" ではありません。
今回は、不揮発メモリである、NOR型フラッシュメモリとNAND型フラッシュメモリのお話をします。
NOR と NAND って何?
NOR型フラッシュメモリやNAND型フラッシュメモリ、これらは写真のフラッシュのようにぱっとデータを消去できることから 「フラッシュメモリ」 と名付けられたそうです。フラッシュメモリが開発される前の EPROM は、データを消去するのに紫外線を30分程度照射する必要がありました。それに対し、フラッシュは秒単位でデータを消去できます。フラッシュ技術がどれだけ革新的なものか、お分かりいただけるかと思います。
ちなみに、EEPROM もフラッシュメモリなのですが、フラッシュというと NOR と NAND を指すことが多いです。また、NOR、NAND というのは、セル(記憶素子、つまりデータを保持するところ)の構成の違いによります。
NOR Flash
- ▶ 小容量 ( ~2Gb/die )
- ▶ ビット単価が高い
- ▶ ランダムリードが得意
- ▶ 書き込みが遅い
- ▶ 保持したデータは基本壊れない
NAND Flash
- ▶ 大容量 ( ~256Gb/die )
- ▶ ビット単価が安い
- ▶ 連続リードが得意
- ▶ 書き込みが速い
- ▶ 使用中に保持したデータが壊れていく
ここで、フラッシュメモリを語る上ではずせないキーワードを2つ説明します。
SLC, MLC, TLC, QLC, PLC って?
「セル」 というのは、0 または 1 のデータを保持できる小さな箱だと思ってください。
下の図でいう青い箱です。
図1 : SLC, MLC, TLC, QLC, PLC
例えば、1Gb の SLC NAND であれば、この青い箱が (1 x 1024 x 1024 x 1024) 個あります。1Gb の MLC NAND であれば、ひとつの箱に2ビット入るので、この青い箱は SLC の半分の個数ですみます。1Gb の TLC NAND であれば、ひとつの箱に3ビット入るので、この青い箱は SLC の3分の1の個数ですみます。つまり、同じ容量を半分または3分の1の Die サイズで実現できるということになります(理想は)。
当然、実際はセルに 0 や 1 が入っているわけではなく、ごくごくわずかな電子の量の差で、そのセルがデジタル的に 0 なのか 1 なのかを判定します。0 か 1 かを判定するのは簡単でも、000 なのか 001 なのか 010 なのか、、、を判定するのは、とても高度な技術が必要ということがご想像いただけるかと思います。
ECC ってなに?
ECC (Error-Correction Code) とは、日本語で「誤り訂正符号」と言います。
特定の量のデータをメモリに書き込むときに、一定の手順に基づいて計算した「符号A」をくっつけて書き込みます。 そのデータを読み出すときには「符号A」も一緒に読み出します。読み出したデータから再度「符号B」を計算し、「符号A」 と 「符号B」 を比較します。A と B が同じであれば、データ化けは発生していないということになります。 A と B が違う場合、その符号の差分を解析することで、あら不思議データ化けのビット位置が分かるので、データを修正することが可能になります。
NOR Flash には ECC は必要ありません。NAND Flash は、ECC を必ずつける必要があります。
例えば NAND のデータシートに、
Minimum required ECC : 8-bit ECC per 540 bytes of data
と記載がある場合、
「540バイトのデータに対し、8ビットのデータが化けても訂正できるだけの能力がコントローラ側に必要だよ」
という意味になります。ちなみに NAND の場合、「符号」 を書き込む予備領域がちゃんと用意されています。
(1Gb NAND といっても、実際は 1Gb 以上の容量がある、ということです。符号書き込み用に。)
NOR Flash
NOR は 「不揮発」 です。
高温など過酷な状況で使う、ものすごく頻繁に書き換えが発生する、といった状況を除いて、基本的にデータは消えないものと考えていただいてかまいません。セル構造は SLC または MLC です。ただし MLC といってもその信頼性は非常に高く、MLC であることを不安に思う必要はありません。
NOR は大きく分けて、Parallel NOR と Serial NOR に分類されます。
Parallel NOR
- ・ データ、アドレス、制御信号が別で、I/O数が40本以上になる
- ・ データバス幅は x8 または x16 で、転送レートが高い
- ・ パッケージが大きい(14x20mm など)
Serial NOR
- ・ データ、アドレス信号が共通で、制御信号も少なく、I/O数は8本程度
- ・ データバス幅は x1 (拡張で x2, x4) で、転送レートが低い
- ・ パッケージが小さい(5x6mm など)
信頼性が高いので、デジカメや複合機のファームウェア格納用に使用したり、SSDのファームウェア用に搭載したりしているものもあります。
また、メモリ基本講座「半導体メモリとは何ぞや」で解説しましたが、Parallel NOR はプログラム格納用として使えるので、小さなアプリケーションであれば NOR だけで完結することも可能です。
SDRAM の JEDEC のような明確な規格がなく、各社仕様がばらばらであることもあり、置き換えがスムーズにいくデバイスではないのが正直なところです。
NAND Flash
NAND は 「不揮発」 なのにデータが消えていくという世にも恐ろしいメモリです。
素の NAND のことを、Raw NAND と呼びます。
Raw NANDは非常に使いにくいメモリです。なぜならば、下記のリスクがあるからです。
-
- ・ メーカー出荷時から使えない領域が存在する (Bad Block)
- ・ 誤り訂正が必要 (ECC : Error Correction Code)
- ⇒ 1Kbyte中 40bit が化けても訂正できないとだめ等
- ・ 使用中も使えない領域が増えていく
- ・ 保証される信頼性が低い
- ⇒ TLCの場合、1Block あたり、Program / Erase の回数が3,000回など
それでもNANDはビット単価が安いため、使用したいという方もいらっしゃると思います。その場合は、NAND専用のコントローラを使用し、Errorマネージメントをしていただくことが必須となります。また、SLC、MLC、TLCと一つのメモリセルで管理するビット数が多くなればなるほど、Errorマネージメントは複雑になります。そのため、Raw NAND を使いこなすには高い技術力とノウハウが必要となります。
今回は「NORとNAND」について解説しました。
PALTEKでは、DRAM、NOR Flash、NAND Flashについては Micron 、SRAMについては GSIテクノロジー の取り扱いをしています。