ほとんどの不揮発性メモリのデフォルト状態が論理1であるのはなぜですか?


14

私が使用している不揮発性メモリを組み込みアプリケーションでは、EEPROMやフラッシュメモリのように、と私はいつも未使用のメモリ(EEPROM / FLASH)ビット位置は常にに設定されていることを発見した1、デフォルトで。なぜこれが代わりに使用されるの0ですか?

たとえば、0番目のアドレス(メモリの最初のバイト)などのアドレスは、ユーザーによって書き込まれない場合、常に保存され、保存さ0xffれません0x00。なぜメモリチップを作った人がそれをそのように保持したのですか?0xff製造業者にとって何らかの利点または重要な何かを提供するように、デフォルトのメモリ位置を確実に維持します。

メモリチップのこの構造の背後にある理由は何ですか?

回答:


20

フラッシュメモリのプログラミングについて説明しますが、フラッシュメモリは1980年代半ばにEEPROMから派生したものであるため、多くの資料はEEPROM(Electrically Erasable Programmable ROM)に似ています。以下で説明するように、物理的な観点から、デフォルトの状態は1です。しかし、もっと重要なの、なぜデフォルト状態あるのかを説明することです。前回からすでにプログラムされているものの上に勝手にプログラムすることはできません。

インターフェイスはマイクロコントローラーのメモリマップ内にデータを配置するのに最適であるため、プログラムフラッシュにはNORフラッシュがほぼ常に選択されます。フルアドレスおよびデータバスはRAMを模倣し、任意の場所へのランダムアクセスを許可します。データは一度に1ワードずつ読み取ることができます。ワードは、マイクロコントローラーのデータ幅として定義され、通常は8、16、または32ビットです。一方、NANDフラッシュは、ハードドライブを置き換えるために開発され、順次動作します。

ただし、プログラミングはもう少し複雑になります。既に述べたように、NORフラッシュ、NANDフラッシュ、EEPROM、さらにはEPROMなどの他の不揮発性メモリのデフォルト状態はロジック1 ですこれらのデバイスに1をプログラムすることはできません。0のみをプログラムできます。 たとえば、0x0123を含むバイトがあり、それを0x3210に変更する場合、RAM内のバイトを上書きするような直接的な変更はできません。

代わりに、メモリ内のビットを消去する必要があります。これにより、それらのビットは既に説明したデフォルトの1状態になります。これは、言葉ではなくブロックでのみ実行できます。私が最近作業したMicrochip PIC32では、消去できる最小ブロックサイズは4096バイトです。したがって、1ワード(32ビット)だけを変更したい場合は、4Kのメモリを読み取ってブロックを消去し、4Kのメモリをフラッシュに書き戻す必要がありますが、必要に応じて新しい32ビット値を含めます。この消去には時間がかかることがあります-1秒のかなりの部分です。

以下は、フラッシュメモリセルの写真です。フラッシュは、フローティングゲートの電子を除去または配置することでデータを保存します。電子がフローティングゲートに存在する場合、トランジスタに電流は流れず、0を示します。電子がフローティングゲートから除去されると、トランジスタは導通を開始し、1を示します(これは慣例により、他の方法ですが、すべてのデータラインにインバーターが必要になります。)

ここに画像の説明を入力してください

操作を消去します。 フローティングゲートは負電荷を運ばないため、フラッシュメモリセル(シングルレベルNORフラッシュセル)のデフォルト状態は1です。フラッシュメモリセルの消去(1にリセット)は、ソースとコントロールゲート(ワード線)に電圧を印加することで実現します。電圧の範囲は-9V〜-12Vです。また、ソースに約6Vを印加します。フローティングゲートの電子は引き出され、量子トンネリングによってソースに転送されます。言い換えれば、電子はフローティングゲートからソースと基板にトンネルします。

消去には高電圧が使用されるため、ブロックでの消去にはダイ面積が少なくて済みます。そのため、電圧は一度にトランジスタの行全体にしか印加できません。

書き込みの場合、NORフラッシュセルをプログラムするか、次の手順で0に設定できます。書き込み中、約12Vの高電圧がコントロールゲート(ワード線)に印加さ​​れます。7V付近の高電圧がビット線(ドレイン端子)に印加さ​​れると、0がセルに保存されます。これでチャネルがオンになり、電子がソースからドレインに流れることができます。ソース-ドレイン電流は、ホット電子注入と呼ばれるプロセスを介して、一部の高エネルギー電子が絶縁層を介してフローティングゲートにジャンプするのに十分な大きさです。

読み取りでは、約5Vの電圧がコントロールゲートに、約1Vがドレインに印加されます。メモリセルの状態は、ドレインとソースの間に流れる電流によって区別されます。

不揮発性メモリの有効寿命は、消去サイクルの観点から測定されます。NORの欠点は、消去サイクルの数がNA​​NDメモリの約1/10であるということです。PIC32の多くのバージョンでは、フラッシュメモリを1000回しか更新できません。これは、EEPROMの一般的な100,000回の消去サイクルよりはるかに少ない回数です。

したがって、設計者がデフォルト状態を1または0にしたかどうかはそれほど重要ではありません(最も簡単な実装を許可する値を選択しました)。重要なことは、最初にフラッシュのブロックを消去し(時間がかかる)、次にブロック全体を再プログラムしなければならないことです(1つのワードが変更される場合でも(かなりのRAMが必要です)。

デバイスのこのブロック消去は、最初のEPROM(Erasable Programmable ROM)に戻り、EEPROMに進みました。コードはチップ(16KB 27128など)にプログラムされ、ソケットに配置されました。これらのチップには上部に小さな窓があり、ダイに光を当てることができました。プログラムを変更する必要がある場合、チップは20分ほどUV消しゴムに入れられ、チップ全体が消去されました。その後、チップは新しいプログラムでプログラムされます。

一部のEEPROMでは、プログラミングの前にメモリブロックを消去する必要があります。他のものは、一度に1バイトずつ書き込むことができます(EEPROMコントローラーは実際にバイトを最初に消去し、プログラムします)。


2
これは不揮発性メモリへのアクセス方法の優れた概要ですが、実際には消去状態が「0」ではなく「1」である理由については説明していません。
akohlsmith

1
@akohlsmith私はその情報をより完全にするために追加しました。しかし、実際の問題は、デフォルトセルが1であるか0であるかではありません。これは、各データラインにインバータを配置するだけで元に戻すことができます。本当の問題は、そもそもデフォルト状態がある理由です。つまり、1ではなく0を書き込むことができます。後者はブロック単位で消去する必要があります。
tcrosley

1
私は同意しません、質問は消去された状態が「クリア」ではなく「セット」である理由について非常に具体的であるようでした-とにかくあなたの答えが好きで、私から+1されますあなたの答え)
-akohlsmith

1
@akohlsmith慣例により、セット状態は通常1であり、実際には個々のセルがどのように機能するかということに同意します。それを元に戻すのにいくらかの追加のハードウェアが必要です(それほど多くはありません)。そうする必要はありませんでした。
tcrosley

これは素晴らしい答えです。しかし、これらのデバイスに1をプログラムすることはできず、0のみをプログラムすることができると言えば理解しやすいと思います。1をプログラムする場合は、デバイスを消去し、ブロック全体をデフォルトの1状態に戻してから、必要に応じて0をプログラムする必要があります。。たとえば、にプログラム0101するには10100101->(erase)-> 1111->(program 0's)->の順序で実行する必要があります1010。または本質的に、1の書き込みと0の書き込みが異なる粒度で行われることを意味します
smwikipedia

4

現代のフラッシュメモリでは、デフォルトとしてゼロよりも大きいものを選択する理由はわかりません。読み出しは差動電流センスアンプを介して行われるため、原則としてどちらの側からでも出力を取得できます。(最初のEEPROMの方が読み取り回路が単純だったかもしれません-よくわかりません。)

そこの余分なインバータを追加しない十分な理由-それはメモリからCPUへの伝播遅延を増加させます。マイクロコントローラでは、フラッシュからCPUへのデータパスは、新しい命令をフェッチするのにかかる時間を決定するため、システム全体のパフォーマンスに大きな影響を及ぼします。

デジタル回路設計者は、多くの場合、ゼロがクリア/リセット/消去を意味すると期待しています。しかし、フラッシュトランジスタと読み取り回路はアナログです。その観点から、フラッシュトランジスタの導通状態を論理的なものとして説明する方が理にかなっています。そして、ゼロから1に移行するよりも1からゼロに移行する方がはるかに速く、ゼロが「プログラム済み」状態になる一方で「消去」状態になります。

ショートバージョン:半導体物理学者とアナログ回路設計者は、あなたのデジタル直感を何も気にしません。:-)


1

あなたが何を引用しているのかわかりませんが、フラッシュメモリのウィキペディアのページを離れると、フラッシュメモリの背後にあるハードウェアの結果のようです:

デフォルト状態のシングルレベルNORフラッシュセルは、ビットライン電圧が引き下げられるように、コントロールゲートに適切な電圧が印加されるとチャネルに電流が流れるため、論理的にはバイナリ「1」値と同等です。

NANDなどの別のタイプのフラッシュを使用する場合、デフォルトの状態は1になります。これは、トランジスタの出力のいずれかが高/低しきい値電圧を下回るとNANDの出力が1になるためです。

おologiesび申し上げたことについて、船に乗り遅れてしまった場合、おologiesび申し上げます。


1
しかし、セルとピンの間に回路があり、ほとんどの論理構造がおそらく本質的に多くの暗黙の反転を実行するので、消去状態が「1」ではなく「0」として使用されるのはなぜですか?
クリスストラットン

私はあなたの質問をよく理解していません-消去状態は「1」として使用されていませんか?これに関しては「EEPROMメモリセルの動作と特性」を参照してください。
llee94

セル自体のどの電気状態が外部インターフェイスのどの論理状態に対応するかは、2つの間に複数の、おそらく暗黙の反転回路要素があるため、ほぼ任意のように見えます。
クリスストラットン

1
@ChrisStratton Ilee94は、消去された状態は実際には1であると言ったと思います。しかし、実際には任意です-データラインにインバーターを置いた場合、それはあなたが説明した通りです。1デフォルト状態では、必要なハードウェアが少し少なくなります。
tcrosley

または少しより多くのハードウェアは、 -それは本当にセルと出力の間で暗黙的に反転する回路素子の奇数または偶数があるかどうに依存します。
クリスストラットン

1

製造中にマスク層に金属を追加したり、プログラミング中に金属を焼き払ったりすることで操作しなければならなかった昔のROMとPROMは、製造時に両方のプロセスがデフォルトの高状態でした。既定値をLOWにすると、トランジスタのコストが高くなり、何らかの方法でプログラミングの利便性や動作速度が低下します。

最近では、データパスのある時点でインバーターを追加することが可能になるため、慣例となっています。

慣例は、データラインがアドレス指定されたときにデータラインをプルダウンするダイオードを備えたダイオードロジックメモリアレイの時代に始まり、未使用のメモリワードにはすべてのダイオードの代わりにダイオードがありません。初期のデジタルロジック標準のほとんどは、積極的にLOWに引き下げられ、そうでない場合は高にフロートしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.