JP2011523157A - メモリデバイス用の部分プログラムコマンド - Google Patents

メモリデバイス用の部分プログラムコマンド Download PDF

Info

Publication number
JP2011523157A
JP2011523157A JP2011509560A JP2011509560A JP2011523157A JP 2011523157 A JP2011523157 A JP 2011523157A JP 2011509560 A JP2011509560 A JP 2011509560A JP 2011509560 A JP2011509560 A JP 2011509560A JP 2011523157 A JP2011523157 A JP 2011523157A
Authority
JP
Japan
Prior art keywords
program
command
memory
partial
program command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011509560A
Other languages
English (en)
Other versions
JP5345679B2 (ja
Inventor
ホークネス,ブレント,エス.
シャエファー,イアン
ブローナー,ゲアリー,ビー.
Original Assignee
ラムバス・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ラムバス・インコーポレーテッド filed Critical ラムバス・インコーポレーテッド
Publication of JP2011523157A publication Critical patent/JP2011523157A/ja
Application granted granted Critical
Publication of JP5345679B2 publication Critical patent/JP5345679B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】 プログラミング動作中に、より速くかつより効率的な方法でアクセスできる不揮発性メモリを提供する。
【解決手段】
メモリシステム(100B)には、不揮発性メモリセルアレイ(140)と、メモリコントローラ(110)であって、プログラミング動作用にいくつかのメモリセルをアドレスするプログラムコマンドを受信する第1のポート(線101に接続されたポート)を有し、コマンドパイプラインを介してメモリアレイに結合された第2のポート(線102および103に接続されたポート)を有し、かつプログラムコマンドに応じて複数の部分プログラムコマンドを生成するように構成されたメモリコントローラ(110)と、が含まれる。各部分プログラムコマンドの実行では、アドレスされたメモリセルに単一プログラムパルスを印加して、アドレスされたメモリセルをプログラムデータで漸増的にプログラムするが、各部分プログラムコマンドに関連するプログラムパルスの持続時間は、メモリセルをプログラムするために典型的に必要な合計プログラミング時間の選択された一部である。
【選択図】図1A

Description

技術分野
本開示は、一般にメモリデバイスに関し、より具体的には、増分プログラミング技術を利用するメモリデバイス用のプログラミング動作に関する。
背景
プログラミング精度を向上させるために、およびオーバープログラミングを回避するために、ある種の不揮発性メモリは、典型的には、一連のプログラムパルスおよび検証(PV)サイクルを用いてプログラムされる。フラッシュメモリおよび抵抗ランダムアクセスメモリ(「ReRAM」)は、プログラミング用に多数の連続PVサイクルの利用をしばしば必要とする2つのタイプのメモリである。各PVサイクルには、典型的には、ある期間にわたってプログラム電圧をメモリセルに印加することによって、メモリセルの浮遊ゲートに蓄積される電荷を漸増的に増加させるプログラムパルスと、メモリセルが適切にプログラムされたかどうかを決定する検証動作と、が含まれる。より具体的には、フラッシュメモリアレイにおけるプログラムコマンドの実行中に、アドレスされた浮遊ゲートメモリセルの制御ゲートに第1のプログラムパルスを印加する第1のPVサイクルが開始され、このメモリセルにおいてデータを漸増的にプログラムし、次に、アドレスされたメモリセルの内容が、アドレスされたメモリセルが適切にプログラムされたことを検証するために調べられる。第1のPVサイクル中に適切に(例えば、完全に)プログラムされなかったどんなメモリセルも識別され、次に、第2のPVサイクルが、これらの識別されたメモリセルのために開始される。このプロセスは、プログラムコマンドによってアドレスされた全てのメモリセルが、プログラムデータで完全にプログラムされるまで繰り返される。
プログラムコマンドに関連するPVサイクルシーケンスがひとたび開始されると、メモリアレイにおける全てのメモリセルは、典型的には、プログラムコマンドの実行が完了するまで、他の動作(例えば、読み出し動作)用には利用不可能である。
したがって、プログラミング動作中に、より速くかつより効率的な方法でアクセスできる不揮発性メモリの必要がある。
本発明の実施形態は、例として示され、添付の図面における図によって限定されることは意図されていない。
図面の簡単な説明
メモリコントローラおよびメモリデバイスを含むメモリシステムの簡略ブロック図を示す。 メモリコントローラおよびメモリデバイスを含む別のメモリシステムの簡略ブロック図を示す。 メモリコントローラおよびメモリデバイスを含むさらに別のメモリシステムの簡略ブロック図を示す。 複数の部分プログラムコマンドを生成し、かつコマンドキューを生成する例示的な方法を示す実例としての流れ図である。 図1Aのメモリデバイスの例示的な動作方法を示す実例としての流れ図である。 図1Aのコマンドキューに記憶された複数の独立して実行可能な部分プログラムコマンドを示す。 図1Aのコマンドキューの最上部に挿入された非プログラムコマンドを示す。 図1Aのコマンドキューにおける第1の部分プログラムコマンドの後に挿入された非プログラムコマンドを示す。 図1Aのコマンドキューに記憶された複数の別個で独立して実行可能なプログラムパルスおよび検証コマンドを示す。 図1Aのコマンドキューにおいてプログラムパルスと対応する検証コマンドとの間に挿入された非プログラムコマンドを示す。 図1Aのメモリデバイスにおける一実施形態の機能ブロック図を示す。 本発明の実施形態を自身の内部で用いることができるコンピュータシステムのブロック図を示す。
同様の参照数字は、図面の全体を通して対応する部分を指す。
詳細な説明
プログラミング動作中に、メモリセルアレイをアクセスまたは利用できるようにするメモリシステムが開示される。いくつかの実施形態によれば、プログラミング動作は、コマンドパイプラインを介しパイプライン方式でメモリセルアレイに選択的に供給できる複数の別個で独立して実行可能な部分プログラムコマンドを用いて実行される。他の非プログラムコマンド(例えば、読み出しコマンド、消去コマンドなど)は、部分プログラムコマンド間にコマンドパイプラインへ選択的に挿入され、非プログラムコマンドが、プログラミング動作の進行中に部分プログラムコマンドのいずれの実行も中断せずに、メモリアレイにおいて実行され得るようにすることができる。
本明細書で用いられているように、用語「不揮発性」は、電源喪失後、かなりの時間にわたってデータを保持し、それによって、ホストシステムが電源を切られ(電力供給が完全に停止される)、次に、完全なデータ保持の期待と共に再び動作できる(電力サイクル)ようにするメモリを指す。不揮発性半導体メモリ技術の例には、フラッシュメモリ、相変化メモリ、抵抗変化メモリ、FRAM(強誘電体RAM)、MRAM(磁気RAM)および他の類似の解決法を含んでもよい。「フラッシュ」メモリには、NANDおよびNORコアセル構造の両方と、浮遊ゲートおよび電荷トラップ技術(例えば、シリコン−酸化物−窒化物−酸化物−シリコンすなわち「SONOS」技術と、が含まれる。老朽化または摩耗からの様々な影響により、半導体メモリセルの保持期間が次第に低減され、特定のメモリが、最終的に不揮発性から揮発性へと特性を変化させる場合がある。
フラッシュメモリの文脈で論じるが、本明細書で説明する実施形態は、かなりのプログラミング時間で、または最小単位サイズのプログラミングで、半導体メモリセルを漸増的にプログラムする複数のステップ(例えば、書き込み前の消去、複数のプログラムステップ、またはPVサイクルの利用等)に依存する任意の技術まで拡張することができる。
本明細書で説明する例示的なメモリシステムでは、メモリアレイに関連する制御回路が、メモリセルにおいてデータをプログラムするプログラミング動作のために、アレイのいくつかのメモリセルをアドレスする(例えば、ホスト装置、ホストコントローラ、マイクロプロセッサ、制御ソフトウェアなどの外部ソースから受信された)プログラムコマンドに応じて、複数の部分プログラムコマンドを生成する。部分プログラムコマンドは、(例えば、制御回路に関連する)コマンドキューに記憶できるが、独立して実行可能なコマンドとして、コマンドパイプラインを介してメモリアレイに選択的に供給される。各部分プログラムコマンドに応じて、プログラムパルスが、プログラムコマンドによってアドレスされたメモリセルの制御ゲートに印加され、そこにおいてデータを漸増的にプログラムし、検証動作が、アドレスされたメモリセルが適切にプログラムされたことを検証するために実行される。検証データは、検証動作の結果を示すために生成することができる。追加プログラムパルスが必要であることを検証データが示す場合には、制御回路は、次の部分プログラムコマンドをメモリアレイに印加することができる。反対に、全てのアドレスされたメモリセルが適切にプログラムされたことを検証データが示す場合には、制御回路は、プログラミング動作を終了することができる。いくつかの実施形態では、制御回路は、メモリデバイス内に設けることができる。他の実施形態では、制御回路は、メモリデバイスに結合されたメモリコントローラ内に設けることができる。
各部分プログラムコマンドに関連するプログラムパルスの持続時間は、メモリセルをプログラムするために典型的に必要な合計プログラミング時間の選択された一部である。したがって、本発明の実施形態の各部分プログラムコマンドの実行には、プログラミング動作全体を実行するために必要な時間の一部だけを必要とし、したがって、(例えば、PVサイクルの連続シーケンスをメモリアレイに適用する)従来のプログラムコマンドを実行するために典型的に必要な時間の一部だけを必要とする。したがって、パイプライン方式で、別個の独立して実行可能なコマンドとして、部分プログラムコマンドをメモリアレイに選択的に供給することによって、制御回路は、プログラミング動作中に、アドレスされたメモリセルへの個別プログラムパルスの制御を保持し、かつその印加をスケジューリングすることができる。その結果、制御回路は、プログラミング動作の進行中に、コマンドパイプラインにおいて部分プログラムコマンドの1つまたは複数の前に非プログラムコマンドを挿入することによって、プログラムコマンドによりアドレスされていないメモリアレイの他の部分(例えば、他のページ)における非プログラムコマンドの実行をスケジューリングすることができる。例えば、フラッシュメモリアレイのページをアドレスするプログラミング動作の進行中に、コマンドパイプラインにおいて、まだ実行されていない全ての部分プログラムコマンドの前に読み出しコマンドを挿入することによって、メモリアレイの他のページのメモリセルからデータを素早く読み出すことができる。
本明細書において、プログラミング動作は、場合により、メモリの1つまたは複数のページをアドレスするように説明されているが、メモリアレイ内のメモリセルの構成に依存して、メモリアレイ内の記憶エリアの他の最小単位がアドレスされ得る。
本明細書で開示される様々な回路は、コンピュータ支援設計ツールを用いて説明してもよく、かつそれらの動作、レジスタ転送、論理構成要素、トランジスタ、レイアウトジオメトリおよび/または他の特性の観点から、様々なコンピュータ可読媒体において具体化されたデータおよび/または命令として表現し(または示し)てもよい。かかる回路表現を実現可能なファイルおよび他のオブジェクトのフォーマットには、限定するわけではないが、C、ヴェリログ(Verilog)およびVHDLなどの動作記述言語をサポートするフォーマット、RTLのようなレジスタレベル記述言語をサポートするフォーマット、GDSII、GDSIII、GDSIV、CIF、MEBESなどのジオメトリ記述言語をサポートするフォーマット、ならびに任意の他の適切なフォーマットおよび言語が含まれる。かかるフォーマットされたデータおよび/または命令を具体化可能なコンピュータ可読媒体には、限定するわけではないが、無線、光もしくは有線シグナリング媒体またはそれらの任意の組み合わせを介して、かかるフォーマットされたデータおよび/または命令を転送するために使用可能な様々な形態における不揮発性記憶媒体(例えば、光、磁気または半導体記憶媒体)が含まれる。かかるフォーマットされたデータおよび/または命令の転送の例には、限定するわけではないが、1つまたは複数のデータ転送プロトコル(例えば、HTTP、FTP、SMTP等)を介し、インターネットおよび/または他のコンピュータネットワークを通じた転送(アップロード、ダウンロード、電子メール等)が含まれる。
1つまたは複数のコンピュータ可読媒体を介してコンピュータシステム内で受信されると、上記の回路のかかるデータおよび/または命令ベースの表現は、1つまたは複数の他のコンピュータプログラムの実行と共に、コンピュータシステム内の処理エンティティ(例えば、1つまたは複数のプロセッサ)によって処理してもよい。これらのコンピュータプログラムには、限定するわけではないが、かかる回路の物理的明示の表現または画像を生成するための、ネットリスト生成プログラム、配置配線プログラム等を含んでもよい。かかる表現または画像は、その後、例えば、デバイス作製プロセスにおいて回路の様々な構成要素を形成するために用いられる1つまたは複数のマスクの生成を可能にすることによって、デバイス作製に用いてもよい。
図1Aは、例示的なメモリシステム100Aの簡略ブロック図を示す。メモリシステム100Aは、フラッシュメモリコントローラ110およびフラッシュメモリデバイス120Aを含み、かつホスト装置150に接続される。フラッシュメモリコントローラ110およびフラッシュメモリデバイス120Aは、図1Aに示されているように、同じ集積回路(IC)チップ上に形成される。他の実施形態では、フラッシュメモリコントローラ110およびフラッシュメモリデバイス120Aは、別個のICチップ上に形成することができる。
ホスト装置150は、フラッシュメモリデバイス120Aにおける実行のために、フラッシュメモリコントローラ110にコマンドを供給する任意の適切なホスト装置またはコントローラとすることができる。例えば、ホスト装置150は、中央処理装置(CPU)とフラッシュメモリシステムとの間の通信を制御する、コンピュータシステムにおけるホストコントローラとすることができる。以下でより詳細に説明するように、ホスト装置150は、本発明の実施形態の1つまたは複数を実施するソフトウェアを実行することができる。
フラッシュメモリコントローラ110には、接続部101を介してホスト装置150に接続された第1のポート、ならびに入力/出力(I/O)バス102および制御バス103を介してフラッシュメモリデバイス120Aに接続された第2のポートが含まれる。I/Oバス102には、フラッシュメモリコントローラ110とフラッシュメモリデバイス120Aとの間でデータ(DATA)を送信するためのデータバス、アドレス情報(ADDR)をフラッシュメモリデバイス120Aに供給するためのアドレスバス、およびコマンド(CMD)をフラッシュメモリデバイス120Aに供給するためのコマンドパイプラインが含まれる。制御バス103は、フラッシュメモリコントローラ110とフラッシュメモリデバイス120Aとの間で制御信号(CTRL)をルーティングする。他の実施形態では、I/Oバス102および/または制御バス103のいくつかは、組み合わせることができる。さらに、簡単にするために図示していないが、制御バス103を介して、フラッシュメモリコントローラ110からフラッシュメモリデバイス120Aへ、クロックおよび他の制御信号を送信することができる。
フラッシュメモリコントローラ110にはまた、制御回路111、コマンドキュー112、およびプログラムアドレスレジスタ113が含まれる。制御回路111は、ホスト装置150からコマンドを受信し、それに応じて、コマンドおよび関連制御信号を生成してメモリデバイス120Aに送信する。いくつかの実施形態では、制御回路111によって生成されたコマンドは、所望の実行順序でコマンドキュー112に入れられ、その後、コマンドパイプラインを介してパイプライン方式でメモリデバイス120Aに選択的に供給することができる。コマンドキュー112は、任意の適切なキュー、レジスタファイル、または他の記憶素子とすることができる。制御回路111に結合されるプログラムアドレスレジスタ113は、メモリデバイス120Aにおけるどのメモリセルページが現在プログラムされているかを示すアドレスリストを維持することができる。
本明細書で説明する例示的な実施形態では、ホスト装置150およびフラッシュメモリコントローラ110は、図1Aに示すように別個のデバイスである。しかしながら、他の実施形態では、フラッシュメモリコントローラ110は、例えばホスト装置150内に含むことができ、その結果、コマンドキュー112およびプログラムアドレスレジスタ113は、ホスト装置150内に含まれ、ホスト装置150によって直接制御される。かかる実施形態では、ホスト装置150によって実行されるオペレーティングソフトウェアは、部分プログラムコマンドの生成およびメモリデバイス120Aへの発行を制御することができる。
メモリデバイス120Aには、I/Oピン121、制御ピン122、制御回路130、およびフラッシュメモリアレイ140が含まれる。I/Oピン121は、I/Oバス102を介して、制御回路130をフラッシュメモリコントローラ110に接続し、制御ピン122は、制御バス103を介して、制御回路130をフラッシュメモリコントローラ110に接続する。メモリアレイ140は、複数のメモリセルおよび関連制御回路(簡単にするために図1Aには示さず)を含む任意で周知のメモリアレイとすることができる。例えば、メモリアレイ140には、NAND、NORまたは他の適切な構成に配列されたフラッシュメモリセルを含むことができる。本明細書で説明する例示的な実施形態では、メモリアレイ140のメモリセルは、それらの制御ゲートに複数のプログラムパルスを印加することによってプログラムすることができる浮遊ゲートトランジスタであり、各プログラムパルスは、プログラミング用に選択されたメモリセルのVtを漸増的に増加させる適度に高いプログラム電圧である。他の実施形態では、メモリアレイ140には、EPROMセル、EEPROMセル、および/または電荷トラップデバイスメモリセル(例えば、SONOSフラッシュセル)などの他のタイプの不揮発性メモリセルを含むことができる。さらに、アレイ140のメモリセルは、独立して動作できる任意の数のバンク、ブロック、セグメント、セクタまたはページに物理的および/または論理的に分割することができる。さらに、1つのメモリアレイ140を含むように図1Aに示したが、メモリデバイス120Aには、複数のメモリアレイ140を含むことができる。
制御回路130は、I/Oピン121、制御ピン122、およびメモリアレイ140に結合されるが、フラッシュメモリコントローラ110から受信されたコマンドおよび/または制御信号に応じて、メモリアレイ140に対する動作(例えば、プログラミング、読み出し、および消去動作)を制御するように構成される。制御回路130にはまた、メモリアレイ140における様々な動作の進行を示すステータスデータを記憶するステータスレジスタ131が含まれる。ステータスレジスタ131はまた、メモリアレイ140におけるプログラム検証動作の結果を示す検証データを記憶することができる。検証データは、プログラミング動作を完了するために追加プログラムパルスの印加が必要かどうかを示すことができ、また、例えば、どのメモリセルが適切にプログラムされたか、どのメモリセルが追加プログラミングを必要とするか、既に印加されたプログラムパルスの数などの他の情報を含むことができる。
さらに、いくつかの実施形態では、メモリアレイ140におけるコマンドの実行中に、制御回路130は、メモリデバイス120Aが利用不可能であることをメモリコントローラ110に警報するビジー信号をアサートすることができ、コマンドが完了すると、制御回路130は、メモリデバイス120Aが別のコマンドを受け入れる準備ができていることをメモリコントローラ110に警報するレディ信号をアサートすることができる。ビジーおよびレディ信号は、制御バス103上で別個の信号として送信してもよい。
本発明の実施形態によれば、フラッシュメモリコントローラ110は、プログラミング動作によってアドレスされたアレイ140におけるメモリセルへの複数の個別プログラムパルスそれぞれの印加を制御し選択的にスケジューリングするように構成される。メモリアレイ140におけるプログラミング動作を開始するために、ホスト装置150は、プログラムコマンドをフラッシュメモリコントローラ110に発行し、かつプログラムされるデータを(共通のまたは独立した動作を介して)メモリにロードする。プログラムコマンドには、プログラミング用に選択されたメモリセルのアドレスが含まれる。典型的には、プログラミング動作用に選択できる、フラッシュメモリアレイ140における記憶エリアの最小単位は、メモリセルのページである。プログラムコマンドに応じて、フラッシュメモリコントローラの制御回路111は、プログラミング動作を集団で具体化するいくつかの部分プログラムコマンドを生成する。各部分プログラムコマンドは、メモリセルを完全にプログラムするために典型的に必要な時間の選択された一部である期間にわたって、アドレスされたメモリセルにプログラムパルスを印加するように、フラッシュメモリデバイス120Aに命令する独立コマンドである。部分プログラムコマンドは、所望の実行順序でコマンドキュー112に入れることができ、次に、コマンドパイプラインCMDを介して、個別に実行可能なコマンドとしてフラッシュメモリデバイス120Aに送信することができる。いくつかの実施形態では、制御回路111は、フラッシュメモリデバイス120Aによって生成された検証データに応じて、部分プログラムコマンドをフラッシュメモリデバイス120Aに選択的に送信する。
いくつかの実施形態では、プログラムアドレスレジスタ113は、進行中のプログラミング動作に関連するページアドレスを記憶することができる。このようにして、制御回路111は、プログラムアドレスレジスタ113に記憶されたプログラムアドレスにアクセスすることによって、アレイ140におけるどのメモリセルページがプログラミング動作を受けているかを素早く決定することができる。
フラッシュメモリデバイス120Aが、フラッシュメモリコントローラ110から部分プログラムコマンドを受信すると、その制御回路130は、所定の持続時間のプログラムパルスを、メモリアレイ140におけるアドレスされたメモリセルの制御ゲートに印加して、そこにおいてデータを漸増的にプログラムする。上述のように、プログラムパルスは、メモリセルを完全にプログラムするために典型的に必要な時間の一部である持続時間を有し、したがって、各部分プログラムコマンドの実行は、メモリデバイス120Aに対してプログラミング動作全体を実行するために必要な時間の一部だけを必要とする。アドレスされたメモリセルへのプログラムパルスの印加後、制御回路130は、アドレスされたメモリセルのいずれかが追加プログラムパルスを必要とするかどうかを決定するために、検証動作を実行する。
いくつかの実施形態では、検証動作が、追加プログラムを必要とするアドレスされたメモリセルのいずれかを識別した場合には、制御回路130は、検証信号をデアサートすることができ、それに応じて、フラッシュメモリコントローラ110は、(例えば、コマンドキュー112に入れられた)次の部分プログラムコマンドをフラッシュメモリデバイス120Aに送信することができる。次の部分プログラムコマンドは、制御回路130に、識別されたメモリセルへ別のプログラムパルスを印加させて、そこにおけるデータをさらにプログラムし、別の検証動作を実行する。このプロセスは、アドレスされたメモリセルの全てが適切にプログラムされるまで繰り返される。全てのアドレスされたメモリセルが、適切にプログラムされたことを検証動作が示す場合には、制御回路130は、検証信号をアサートすることができる。それに応じて、フラッシュメモリコントローラ110は、プログラミング動作に関連する追加の部分プログラムコマンドをフラッシュメモリデバイスに送信せず、プログラミング動作は終了する。さらに、プログラミング動作が完了すると、制御回路111は、対応するプログラムアドレスをプログラム書き込みレジスタ113から削除することができる。
非プログラムコマンド(例えば、読み出しコマンド)が、プログラミング動作中にフラッシュメモリコントローラ110によって受信された場合には、その制御回路111は、非プログラムコマンドを、コマンドキュー112の任意の位置に選択的に挿入することができる。いくつかの実施形態では、非プログラムコマンドを受信すると、制御回路111は、プログラムアドレスレジスタ113にアクセスし、そこに記憶されたプログラムアドレスを、非プログラムコマンドに関連するアドレスと比較して、非プログラムコマンドによってアドレスされたメモリページが、現在、データでプログラムされているかどうかを決定する。一致しない場合、これは、非プログラムコマンドによってアドレスされたメモリページが現在プログラムされていないことを示すが、制御回路111は、非プログラムコマンドをコマンドキュー112に挿入することができる。
ホスト装置150によって供給される非プログラムコマンドには、メモリデバイス120Aにおいて実行されている任意のプログラミング動作に対する非プログラムコマンドの優先度を示す優先度情報を含むことができる。一例として、優先度情報が、最高の優先度を示す場合には、制御回路111は、非プログラムコマンドをコマンドキュー112の最上部に(例えば、そこに前に入れられたあらゆる残りの部分プログラムコマンドの前に)挿入して、現在の部分プログラムコマンドが完了すると、非プログラムコマンドが、メモリデバイス120Aに送信されて、そこですぐに実行されるようにすることができる。別の例では、優先度情報が、最低の優先度を示す場合には、制御回路111は、非プログラムコマンドをコマンドキュー112の最下部に(例えば、そこに前に入れられた全ての残りの部分プログラムコマンドの後に)挿入して、プログラミング動作全体の完了後に、非プログラムコマンドが、メモリデバイス120Aに送信され、メモリデバイス120Aによって実行されるようにすることができる。あるいは、制御回路111は、非プログラムコマンドをコマンドキュー112の最上部に自動的に挿入するように構成することができる。
反対に、プログラムアドレスレジスタ113に記憶されたプログラムアドレスとの一致がある場合、これは、非プログラムコマンドによってアドレスされたメモリページが現在プログラムされていることを示すが、制御回路111は、(例えば、プログラムアドレスレジスタ113における対応するアドレスエントリの除去によって示されるように)アドレスされたメモリページに対するプログラミング動作が完了するまで、非プログラムコマンドを「保持」し、その後、非プログラムコマンドをコマンドキュー112の最上部に挿入することができる。このようにして、プログラムされているアレイ140のメモリセルは、プログラミング動作が完了するまで、データ検索のためにアクセスされることがなく、それによって、メモリアレイ140からの、部分的にプログラムされた(例えば、したがって恐らく不正確な)データの検索を防ぐ。あるいは、プログラミング動作の進行中に、メモリセルにおいてプログラムされているデータのコピーを、アクセス用に一時的に記憶してもよい。
ホスト装置150から受信された単一プログラムコマンドに応じて複数の個別部分プログラムコマンドを生成することによって、プログラミング動作は、オリジナルのプログラムコマンドより短くなり得る時間にわたってメモリデバイス120Aをそれぞれ拘束する、いくつかのより短く独立して実行可能なコマンドへと効果的に分割される。このようにして、メモリコントローラ110は、メモリデバイス120Aに対するプログラミング動作中に、メモリデバイス120Aにおける非プログラムコマンドの実行を選択的にスケジューリングすることができ、これによって、今度は、メモリコントローラ110は、メモリデバイス120Aの他の部分に対するプログラミング動作中に、メモリデバイス120Aの一部に素早くアクセスすることが可能になる。例えば、コマンドキュー112に前に入れられたいくつかの部分プログラムコマンドの前に読み出しコマンドを挿入することによって、読み出しコマンドは、部分プログラムコマンドの前にフラッシュメモリデバイス120Aに送信され、そこで実行することができる。このようにして、メモリアレイの他のページに対するプログラミング動作の進行中に、プログラミング動作に関連する部分プログラムコマンドのいずれにおける実行も中断せずに、メモリアレイのいくつかのページからデータを読み出すことができる。
さらに、プログラミング動作中にフラッシュメモリデバイスにおける非プログラムコマンドの実行を選択的にスケジューリングする能力は、フラッシュメモリデバイス120Aの利用を最大限にすることができる。例えば、メモリセルの選択されたページに対するプログラミング動作中に、メモリセルの他のページに記憶されたデータをアドレスする一連の読み出しコマンドが受信された場合には、読み出しコマンドは、現在の部分プログラムコマンドが完了するとすぐに、フラッシュメモリデバイス120Aに送信され、そこで実行することができる。その後、プログラミング動作に関連するあらゆる残りの部分プログラムコマンドも、検索されたデータが(例えば、ホスト装置150によって)処理されている間に、フラッシュメモリデバイスにおいて実行することができる。このようにして、ホスト装置150が検索されたデータを処理している間に、プログラミング動作は、フラッシュメモリデバイス120Aにおいて完了することができ、それによって、フラッシュメモリデバイス120Aのアイドルタイムを最小限にする。
上述のように、プログラミング動作中に、フラッシュメモリデバイス120Aは、メモリセルが適切にプログラムされたかどうかを示すプログラム結果検証データを生成する。いくつかの実施形態では、フラッシュメモリコントローラ110は、プログラミング動作中に(例えば、プログラミング動作に関連する各部分プログラムコマンドの検証動作後に)、フラッシュメモリデバイスのステータスレジスタ131から検証データを読み出すことができる。他の実施形態では、フラッシュメモリデバイス120Aは、各部分プログラムコマンドが完了すると、フラッシュメモリコントローラ110Aに検証信号を送信するように構成することができる。例えば、対応プログラムパルスの印加後に、プログラムコマンドによってアドレスされた、完全にはプログラムされていないメモリセルのいずれかを検証動作が識別した場合には、フラッシュメモリデバイス120Aは、検証信号をデアサートして、次の部分プログラムコマンドをフラッシュメモリデバイス120Aに送信するようにフラッシュメモリコントローラ110に命令することができる。反対に、検証動作が、アレイ140においてプログラムされていないメモリセルを何も識別しない場合には、フラッシュメモリデバイス120Aは、プログラミング動作が完了したこと、追加の部分プログラムコマンドが必要ではないこと、およびプログラミング動作に対応するページアドレスをプログラムアドレス113から削除できることをフラッシュメモリコントローラ110に警報する検証信号をアサートすることができる。このようにして、フラッシュメモリコントローラ110は、フラッシュメモリデバイス120A内の各プログラミング動作の漸進的な進行に対して絶えず警報されてもよい。これは、従来のフラッシュメモリシステム、すなわち、フラッシュメモリコントローラが、プログラミング動作全体をフラッシュメモリデバイスに委ね、その間は、フラッシュメモリアレイ全体が、典型的には、プログラミング動作全体が完了するまで利用不可能になる従来のフラッシュメモリシステムとは対照的である。
上述のように、各部分プログラムコマンドに応じてアレイのメモリセルに印加されるプログラムパルスの持続時間は、アレイ140のメモリセルを完全にプログラムするために典型的に必要な合計プログラム時間の一部である。各プログラムパルスの持続時間は、パルス幅(PW)信号によって選択することができる。PW信号は、プログラムコマンドと共にフラッシュメモリコントローラ110に供給するか、あるいは、別の適切な回路によってフラッシュメモリコントローラ110もしくはフラッシュメモリデバイス120Aに供給することができる。一例として、PW信号は、各部分プログラムコマンドに応じて生成されるプログラムパルス用に所定の持続時間を指定することができる。別の例では、フラッシュメモリコントローラ110および/またはフラッシュメモリデバイス120Aは、単一のプログラミング動作に関連する連続部分プログラムコマンド用にプログラムパルス持続時間を漸増的に増加させるように構成することができる。
さらに、いくつかの実施形態では、ホスト装置150によってフラッシュメモリコントローラ110に送信されたプログラムコマンドは、プログラムコマンドに応じていくつの部分プログラムコマンドが、フラッシュメモリデバイス120Aにおいて実行されることになるかを指定することができる。一実施形態では、メモリコントローラ110は、固定数の部分プログラムコマンドをフラッシュメモリデバイス110Aに送信することができる。別の実施形態では、メモリコントローラ110は、検証信号のステータスをチェックする前に、最小数の部分プログラムコマンドをフラッシュメモリデバイス120Aに送信するように構成することができる。他の実施形態では、ホスト装置150によってフラッシュメモリコントローラ110に送信されたプログラムコマンドには、フラッシュメモリコントローラ110が、プログラムコマンドに応じて生成する部分プログラムコマンドの最大数を示す限界値(LIM)を含むことができる。別の実施形態では、フラッシュメモリコントローラ110は、ホスト装置150から受信されたプログラムコマンドに応じて、ただ1つの部分プログラムコマンドを生成するように、かつ(例えば、検証データに応じて)アレイのメモリセルを適切にプログラムするために必要に応じて追加の部分プログラムコマンドを続いて生成するように構成することができる。
さらに、ホスト装置150によって発行されたプログラムコマンドには、グループ化情報を含むことができるが、このグループ化情報は、例えば、フラッシュメモリデバイス120Aにおける実行のために、最小数の部分プログラムコマンドを一緒にグループ化するようにフラッシュメモリコントローラ110に命令して、介入する非プログラムコマンドが、コマンドキュー112において、グループ化された部分プログラムコマンド間に挿入されるのを防ぐ。部分プログラムコマンドのグループ化は、プログラミング動作のためにアドレスされたメモリセルが、プログラミング動作の進行中に、アレイ140の他のメモリセルに対する非プログラムコマンドの実行の前に、ある所定の最小量だけプログラムされることを保証することができる。
フラッシュメモリデバイス120Aの例示的な動作を、図2A−2Bの実例となる流れ図に関連して下記で説明する。最初に、ホスト装置150は、プログラムデータおよびアドレス情報をフラッシュメモリコントローラ110に供給するプログラムコマンドを発行する(ステップ201)。それに応じて、フラッシュメモリコントローラ110は、複数の部分プログラムコマンドを生成する(ステップ202)。上記のように、各独立した部分プログラムコマンドの実行は、メモリアレイ140におけるアドレスされたメモリセルに単一プログラムパルスを印加するが、各プログラムパルスの持続時間は、アレイのメモリセルをプログラムするために典型的に必要な合計時間の一部を表す。次に、部分プログラムコマンドは、所望の実行順序でコマンドキュー112に記憶され、プログラムされるメモリセルのアドレスは、プログラムアドレスレジスタ113に記憶される(ステップ203)。例えば、図3Aは、コマンドキュー112の対応する位置112(1)−112(n)に記憶された複数の部分プログラムコマンド301(1)−301(n)を示す。
ステップ204で調べられるように、フラッシュメモリコントローラ110が、ホスト装置150から、別の介入する非プログラムコマンド(例えば、読み出しコマンドまたは消去コマンド)を受信した場合には、その制御回路111は、プログラムアドレスレジスタ113に記憶されたプログラムアドレスを、非プログラムコマンドに関連するアドレスと比較する(ステップ205a)。ステップ205bで調べられるように、一致しない場合には、それは、非プログラムコマンドによってアドレスされたメモリページが、現在プログラムされていないことを示し、制御回路111は、この別のコマンドをコマンドキュー112に選択的に挿入する(ステップ205c)。
一例では、図3Bは、全ての部分プログラムコマンド301(1)−301(n)の前の、コマンドキュー112の最上部に挿入された非プログラムコマンド302を示す。別の例では、図3Cは、コマンドキュー112において第1の部分プログラムコマンド301(1)と第2の部分プログラム301(2)との間に挿入された非プログラムコマンド302を示す。上記のように、いくつかの実施形態では、フラッシュメモリコントローラ110は、(例えば、図3Cに示すように)コマンドキュー112の任意の位置に非プログラムコマンドを選択的に挿入するように構成することができ、他の実施形態では、フラッシュメモリコントローラ110は、(例えば、図3Bに示すように)コマンドキュー112の最上部に非プログラムコマンドを挿入するように構成することができる。
反対に、205bで調べられるように、プログラムアドレスレジスタ113に記憶されたプログラムアドレスと一致する場合には、それは、非プログラムコマンドによってアドレスされたメモリページが現在プログラムされていることを示し、制御回路111は、アドレスされたメモリページに対するプログラミング動作が完了するまで、競合する非プログラムコマンドを「保持」する(ステップ205d)。いくつかの実施形態では、制御回路111には、競合する非プログラムコマンドを保持するバッファ(簡単にするために図示せず)を含むことができる。一実施形態では、メモリセルにおいてプログラムされているデータのコピーは、プログラミング動作の進行中のアクセス用に一時的に記憶してもよい。
その後、制御回路111は、プログラムアドレスレジスタ113に定期的にポーリングして、アドレスされたメモリページに対するプログラミング動作が完了したかどうかを決定することができる(ステップ205a)。プログラミング動作が完了した場合には、制御回路111は、非プログラムコマンドをコマンドキュー112に挿入することができる(ステップ205c)。さもなければ、制御回路111は、競合する非プログラムコマンドを保持し続ける(ステップ205d)。あるいは、プログラムアドレスレジスタ113は、アドレスされたメモリページに対するプログラミング動作が完了したときに、完了フラグを制御回路111に送信することができる。
次に、フラッシュメモリコントローラ110は、コマンドキュー112の最上部に記憶されたコマンドをフラッシュメモリデバイス120Aに転送する(ステップ206)。ステップ207で調べられるように、受信されたコマンドが部分プログラムコマンドである場合には、メモリデバイスの制御回路130は、部分プログラムコマンドを実行して、アレイ140のアドレスされたメモリセルにデータを漸増的にプログラムする単一プログラムパルスを印加し(ステップ208)、次に、プログラムデータを検証する(ステップ209)。次に、フラッシュメモリデバイス120Aは、検証動作の結果を示す検証データを生成する(ステップ210)。
いくつかの実施形態では、フラッシュメモリデバイス120Aは、プログラミング動作の進行(例えば、どのメモリセルが完全にプログラムされたか、どのメモリセルが完全にはプログラムされなかったか、いくつのプログラムパルスがメモリセルに印加されたか等)を示す追加ステータス情報を生成する。上記のように、検証データおよび/またはステータス情報は、フラッシュメモリデバイスのステータスレジスタ131に記憶することができる。さらに、いくつかの実施形態では、検証データは、対応する部分プログラムコマンドをコマンドキュー112から削除するために、およびプログラムアドレスをプログラムアドレスレジスタ113から削除するために、フラッシュメモリコントローラ110によって用いることができる。
また、いくつかの実施形態では、フラッシュメモリデバイス120Aは、そのメモリアレイ140における各コマンドの実行中にビジー信号をアサートするように、およびコマンドが完了するとレディ信号をアサートするように構成することができる。かかる実施形態では、アサートされたビジー信号は、フラッシュメモリデバイス120Aに追加コマンドを送信しないように、フラッシュメモリコントローラ110に命令することができ、アサートされたレディ信号は、フラッシュメモリデバイス120Aが追加コマンドを受け入れる準備ができていることを、フラッシュメモリコントローラ110に警報することができる。
ステップ211で調べられるように、アドレスされたメモリセルの1つまたは複数が完全にはプログラムされていないことを検証データが示す場合には、処理は、ステップ204で継続する。いくつかの実施形態では、フラッシュメモリデバイス120Aは、検証信号、すなわち、フラッシュメモリコントローラ110に、次の部分プログラムコマンドをフラッシュメモリデバイス120Aへ送信させる検証信号をデアサートすることができる。他の実施形態では、フラッシュメモリコントローラ110は、フラッシュメモリデバイス120Aから検証データを読み出すことができる。さもなければ、プログラムコマンドによってアドレスされたアレイ140における全てのメモリセルが適切にプログラムされたことを検証データが示す場合には、プログラミング動作に関連するあらゆる残りの部分プログラムコマンドも、コマンドキュー112から削除され、対応するプログラムアドレスは、プログラムアドレスレジスタ113から削除される(ステップ212)。
ステップ207で調べられるように、フラッシュメモリコントローラ110から受信されたコマンドが、非プログラムコマンドである場合には、フラッシュメモリデバイス120Aは、非プログラムコマンドを実行し(ステップ213)、非プログラムコマンドは、コマンドキュー112から削除され(ステップ214)、処理は、ステップ204で継続する。例えば、非プログラムコマンドが読み出しコマンドである場合には、フラッシュメモリデバイス120Aは、読み出しコマンドを実行し、読み出しコマンドによってアドレスされたアレイ140におけるメモリセルからデータを読み出し、読み出しデータをフラッシュメモリコントローラ110に供給し、その後、コマンドキュー112から次のコマンドを受け入れる準備ができる。
他の実施形態では、フラッシュメモリコントローラ110は、ホスト装置150から受信されたプログラムコマンドに応じて、ただ1つの部分プログラムコマンドを生成し、追加プログラムパルスが、アドレスされたメモリセルを適切にプログラムするために必要とされる場合には、追加の部分プログラムコマンドを選択的に生成してフラッシュメモリデバイス120Aに送信できるが、この場合には、ステップ212は、省略することができる。
上記の例示的な実施形態では、各部分プログラムコマンドは、プログラムデータでアレイ140におけるアドレスされたメモリセルを漸増的にプログラムする単一プログラムパルスを印加するように、フラッシュメモリデバイス120Aに命令し、また、検証動作、すなわち、プログラムされているメモリセルに記憶されたデータをオリジナルプログラムデータと比較して、アドレスされたメモリセルのいずれかが追加プログラムパルスを必要とするかどうかを決定する検証動作を実行するように、フラッシュメモリデバイスに命令する。他の実施形態では、ホスト装置150から受信されたプログラムコマンドに応じて、フラッシュメモリコントローラ110によって生成された各部分プログラムコマンドは、アドレスされたメモリセルにプログラムパルスを印加することだけを、フラッシュメモリデバイス120Aに命令することができる。かかる他の実施形態では、フラッシュメモリコントローラ110は、各部分プログラムコマンドに関連する別個の検証コマンドを生成するように構成することができるが、各検証コマンドは、対応する部分プログラムコマンドによって、アドレスされたメモリセルにプログラムされたデータを検証するように、フラッシュメモリデバイス120Aに命令する。検証コマンドは、部分プログラムコマンドと共にコマンドキュー112に記憶することができる。
例えば、図4Aは、複数の部分プログラムパルスコマンド401(1)−401(n)および対応する複数の別個の検証コマンド402(1)−402(n)をコマンドキュー112に記憶することを示すが、各部分プログラムパルスコマンド401の実行では、プログラミング動作用にアドレスされたメモリセルにプログラムパルスを印加し、各検証コマンド402の実行では、対応する部分プログラムパルスコマンド401の結果を検証する。図4Bは、コマンドキュー112において、部分プログラムパルスおよび検証コマンドの第1のペア401(1)−402(1)と、部分プログラムパルスおよび検証コマンドの第2のペア401(2)−402(2)との間に非プログラムコマンド302を挿入することを示す。プログラムパルスコマンド401とその対応する検証コマンド402との間に非プログラムコマンド302を挿入することが可能であるが、検証コマンドは、それ自体、一般にそれほど時間を消費せず、インターリーブされたコマンドを許可する前に、単一PVサイクル(検証を含む)を完了することが構造上(architecturally)好ましいであろう。
他の実施形態では、ホスト装置150および/またはホスト装置150によって実行されるソフトウェアは、プログラミング動作に関連する部分プログラムコマンドを生成し、部分プログラムコマンドをコマンドキューに入れ、かつ(例えば、フラッシュメモリコントローラ110を介して)パイプライン方式で部分プログラムコマンドをフラッシュメモリデバイス120Aに選択的に送信するように構成することができる。かかる実施形態では、ホスト装置150および/またはホスト装置150によって実行されるソフトウェアは、例えば、読み出しコマンドなどの非プログラムコマンドを、コマンドキューの任意の位置に選択的に挿入するように構成することができ、その結果、非プログラムコマンドは、プログラミング動作中に、どのプログラム関連コマンドの実行も中断せずに、フラッシュメモリデバイス120Aにおいて実行することができる。
別の実施形態では、フラッシュメモリデバイス120Aは、ホスト装置150によって発行されたプログラミングコマンドに応じて、部分プログラムコマンドを生成するように構成することができる。例えば、図1Bは、他の実施形態に従って、フラッシュメモリコントローラ110およびフラッシュメモリデバイス120Bを含むメモリシステム100Bを示す。フラッシュメモリデバイス120Bは、フラッシュメモリデバイス120Bの制御回路130がコマンドキュー132およびプログラムアドレスレジスタ133を含むことを除いて、フラッシュメモリデバイス120Aに似ている。図1Bのコマンドキュー132およびプログラムアドレスレジスタ133は、図1Aのコマンドキュー112およびプログラムアドレスレジスタ113にそれぞれ似ている。図1Bの実施形態では、メモリデバイスの制御回路130は、ホスト装置150によって発行されたプログラムコマンドを(例えば、フラッシュメモリコントローラ110を介して)受信し、それに応じて、部分プログラムコマンドを生成する。フラッシュメモリコントローラは、部分コマンドをコマンドキュー132に入れることができ、必要に応じて、これらのコマンドをメモリアレイ140に転送して、図1Aに関連して上記した方法と類似の方法で、対応するプログラムパルスを印加する。したがって、図1Bの実施形態では、フラッシュメモリデバイスの制御回路130は、メモリアレイ140用に部分プログラムコマンドの生成、スケジューリングおよび実行を制御する。
図1A−1Bに関連して上記したフラッシュメモリデバイスの実施形態は、アレイ140のメモリセルに対するプログラミング動作を集合的に具体化する複数の独立した部分プログラムコマンドを実行するように構成される。他の実施形態では、フラッシュメモリデバイスには、従来の方法で(例えば、プログラムコマンドによってアドレスされたメモリセルに一連の連続PVサイクルを印加することによって)ホスト装置150によって発行されたプログラムコマンドを実行できる追加回路を含むことができる。例えば、図1Cは、フラッシュメモリコントローラ110およびフラッシュメモリデバイス120Cを含むメモリシステム100Cを示す。フラッシュメモリデバイス120Cには、制御回路160およびモードレジスタ170が含まれる。モードレジスタ170は、任意の適切な記憶素子とすることができるが、制御回路160に結合され、かつプログラムモードデータを記憶するように構成することができる。制御回路160には、図1Bの制御回路130の全ての要素が含まれ、また、フラッシュメモリデバイス120Cが、従来の方法で、(例えば、フラッシュメモリコントローラ110を介してホスト装置150から受信された)プログラムコマンドを受信および実行できるようにする周知の順序論理161が含まれる。プログラムモードデータは、ホスト装置150によって、フラッシュメモリコントローラ110によって、または任意の他の適切な回路によって生成することができる。モードデータは、フラッシュメモリコントローラ110から受信された部分プログラムコマンドを実行すべきかどうかをフラッシュメモリデバイス120Cに命令するために、フラッシュメモリコントローラ110から受信されたプログラムコマンドに応じて、部分プログラムコマンドを生成および実行するために、またはフラッシュメモリコントローラ110から受信されたプログラムコマンドに応じて、従来のプログラミング動作を実行するために用いられる。いくつかの実施形態では、モードデータは、制御ピン122を介してフラッシュメモリデバイス120Cに供給され、(図1Cに示すように)モードレジスタ170に記憶される。他の実施形態では、モードデータは、専用ピン(簡単にするために図示せず)または他の適切な回路を用いて、モードレジスタ170に供給して記憶することができる。
より具体的には、プログラムモードデータが、第1の部分プログラミングモードを示す第1の状態に設定された場合には、制御回路160は、フラッシュメモリコントローラ110から部分プログラムコマンドを受信するように構成される。それに応じて、制御回路は、アレイ140のアドレスされたメモリセルに単一プログラムパルスを印加して、例えば図1Aに関連して上記した方法で、対応する検証動作を実行する。部分プログラムコマンドの実行後に、フラッシュメモリデバイス120Cは、追加の部分プログラムコマンドが必要かどうかを示す検証信号をフラッシュメモリコントローラ110に供給する。また、プログラムモードデータの第1の状態は、フラッシュメモリデバイスのコマンドキュー132、プログラムアドレスレジスタ133、および順序論理161をディスエーブルするために用いることができる。
プログラムモードデータが、第2の部分プログラミングモードを示す第2の状態に設定された場合には、制御回路160は、フラッシュメモリコントローラ110から従来のプログラムコマンドを受信するように構成される。それに応じて、制御回路160は、例えば図1Bに関連して上記した方法で、メモリデバイスのコマンドキュー132に入れることができる1つまたは複数の独立して実行可能な部分プログラムコマンドを生成して、メモリアレイ140における実行のためにメモリアレイ140に選択的に供給される。プログラムモードデータの第2の状態はまた、メモリデバイスのコマンドキュー132およびプログラムアドレスレジスタ133をイネーブルするために、ならびに順序論理161をディスエーブルするために用いることができる。
プログラムモードデータが、従来のプログラミングモードを示す第3の状態に設定された場合には、制御回路160は、フラッシュメモリコントローラ110から従来のプログラムコマンドを受信するように構成され、それに応じて、周知の技術に従って、アレイ140のアドレスされたメモリセルをプログラムする一連のPVサイクルを開始するように、順序論理161に命令するが、この間は、メモリアレイ140全体は、典型的には利用不可能である。プログラムモードデータの第3の状態はまた、フラッシュメモリデバイスのコマンドキュー132およびプログラムアドレスレジスタ133をディスエーブルするために、ならびにその順序論理161をイネーブルするために用いることができる。
このようにして、図1Cのフラッシュメモリデバイス120Cは、本発明の実施形態による部分プログラムコマンドを用いるか、または従来のプログラミング技術を用いて、プログラミング動作を実行し、それによって、従来のメモリシステムまたは本発明の実施形態に従って形成されたメモリシステムにおいて、フラッシュメモリデバイス120Cを使用可能にすることができる。
さらに、他の実施形態では、モードレジスタ170および関連する制御回路を図1Aのフラッシュメモリデバイス120Aに加えて、フラッシュメモリデバイス120Aが、フラッシュメモリコントローラ110から受信された部分プログラムコマンドを実行できるか、または(例えば、プログラムモードデータの状態に依存して)フラッシュメモリコントローラ110から受信された従来のプログラムコマンドに応じて従来のプログラミング動作を実行できるようにすることができる。
図5は、図1Aのフラッシュメモリデバイス120Aの一実施形態であるフラッシュメモリデバイス500の機能ブロック図を示す。メモリデバイス500には、I/O制御回路510、制御レジスタ回路520、コマンドインタフェース論理530、プログラムおよび消去コントローラ540、アレイ制御論理550、高電圧回路560、データバッファ570およびメモリアレイ580が含まれる。I/O制御回路510、制御レジスタ回路520、コマンドインタフェース論理530、プログラムおよび消去コントローラ540、アレイ制御論理550、高電圧回路560およびデータバッファ570が、一緒に、図1Aの制御回路130の一実施形態を形成し、かつメモリアレイ580が、図1Aのメモリアレイ140の一実施形態を形成する。
I/O制御回路510は、メモリデバイスのI/Oピンに、制御線511−513を介して制御レジスタ回路520に、およびデータ線514を介してデータバッファ570に結合される。I/O制御回路510は周知であるが、メモリアレイ580にプログラムされるデータをI/Oピンを介して受信し、かつメモリアレイ580から読み出されたデータをI/Oピンに供給する。制御レジスタ回路520には、アドレスレジスタ521、ステータスレジスタ522、およびコマンドレジスタ523が含まれる。アドレスレジスタ521は、メモリアレイ580に結合され、ステータスレジスタ522は、コマンドインタフェース論理530に結合され、コマンドレジスタ523は、コマンドインタフェース論理530に結合される。
メモリアレイ580には、不揮発性メモリセル(簡単にするために図示せず)のアレイ581、行デコーダ582、およびページバッファ584が含まれる。アレイ581に含まれるメモリセルは、例えば浮遊ゲートトランジスタを用いて形成されるものなど、任意の適切な不揮発性メモリセルとすることができる。行デコーダ582は、アドレスレジスタ521によって供給されるアドレス情報に応じて、アレイ動作(例えば、プログラムおよび読み出し動作)用にメモリセルの行を選択する。ページバッファ584は、プログラミング動作中にメモリアレイ581にプログラムされるデータを記憶し、読み出し動作中にメモリアレイ581から読み出されたデータを記憶する。
コマンドインタフェース論理530は、デバイス制御ピンに結合され、かつまたステータスレジスタ522、プログラムおよび消去コントローラ540、アレイ制御論理550、データバッファ570、ならびにページバッファ584に結合される。動作において、コマンドインタフェース論理530は、フラッシュメモリコントローラ110(図1Aもまた参照)から部分プログラムコマンドを受信し、それに応じて、制御信号を、アレイ制御論理550、プログラムおよび消去コントローラ540に供給する。それに応じて、コマンドインタフェース論理530はまた、プログラムパルスを生成してメモリセルアレイ581に印加するデータバッファ570に対する制御を提供する。他の実施形態では、コマンドインタフェース論理530は、コマンドキュー132(図5には示さず)を含むかまたはそれに関連付けられ、かつフラッシュメモリコントローラ110から受信されたプログラムコマンドに応じて、複数の部分プログラムコマンドを生成するように構成される。
プログラムおよび消去コントローラ540には、コマンドインタフェース論理530から制御信号を受信する入力部が含まれ、かつ制御信号をアレイ制御論理550に供給する出力部が含まれる。アレイ制御論理550は、コマンドインタフェース論理530からコマンドを、プログラムおよび消去コントローラ540から制御信号を受信し、かつHV回路560に、行デコーダ582に、およびページバッファ584に結合された出力部を含む。
HV回路560には、アレイ制御論理550に結合された入力部が含まれ、かつメモリアレイセル581および行デコーダ582に結合された出力部が含まれる。HV回路560は、アレイ制御論理550によって供給される制御信号に応じて、プログラムおよび消去動作中に、高電圧信号をメモリアレイ580に供給する。
データバッファ570は、コマンドインタフェース論理530およびI/O制御回路510に結合される。動作において、データバッファ570は、コマンドインタフェース論理530から制御信号を受信し、かつプログラム動作中に、I/O制御回路510からデータを受信するか、または読み出し動作中に、メモリアレイ580から読み出されたデータをI/O制御回路510に供給する。例えば、データバッファ570は、プログラムおよび読み出し動作中にデータをバッファするために用いられる。なぜなら、フラッシュメモリコントローラ110とI/O制御回路510との間に接続されたデータバスの幅が、典型的には、アレイ581におけるメモリページの幅よりはるかに小さいからである。例えば、いくつかの実施形態では、メモリデバイス500は、フラッシュメモリコントローラ110から一度に1バイトだけ(例えば、8データビット)を受信する場合があり、ページバッファ584は、メモリアレイ581との同時的なページサイズプログラムまたは読み出し動作用にデータを蓄積するキャッシュとして用いることができる。
図6は、本発明の実施形態を自身の内部で用いることができる例示的なコンピュータシステム600を示す。システム600には、中央処理装置(CPU)611、ホストコントローラ612、I/Oコントローラ613、DRAM620、I/O装置630、フラッシュメモリコントローラ110、およびフラッシュメモリデバイス120が含まれる。CPU611は、周知のバスを介して、ホストコントローラ612およびI/Oコントローラ613に接続される。CPU611、ホストコントローラ612、およびI/Oコントローラ613は、周知であり、図1A−1Cのホスト装置150の一実施形態であるホスト装置610を一緒に形成する。いくつかの実施形態では、CPU611およびホストコントローラ612は、同じチップ上に形成することができる。他の実施形態では、CPU611、ホストコントローラ612、およびI/Oコントローラ613は、同じチップ上に形成することができる。
I/Oコントローラ613は、I/O装置630に結合されるが、I/O装置630には、例えば、モニタ、キーボード、マウスおよび他のI/O装置または回路などの周知の構成要素が潜在的に含まれる。ホストコントローラ612は、コンピュータシステム600用のメインメモリとして用いられるDRAMシステム620に結合してもよく、同様にフラッシュメモリコントローラ110を介してフラッシュメモリデバイス120に結合してもよい。他の実施形態では、フラッシュメモリコントローラ110は、ホストコントローラ612の代わりにI/Oコントローラ613に接続することができる。フラッシュメモリデバイス120はまた、図6に示す例示的なコンピュータシステム用のメインメモリとして機能することができる。他の実施形態では、DRAM620は省略することができ、フラッシュメモリデバイス120を主要なメインメモリ構成要素として用いることができる。
コンピュータシステム600におけるメインメモリとしてフラッシュメモリコントローラ110およびフラッシュメモリデバイス120の本発明の実施形態を用いることには、従来のフラッシュメモリシステムに勝るいくつかの利点がある。第1に、独立して実行可能な複数の部分プログラムコマンドを用いてフラッシュメモリデバイス120をプログラムすることによって、フラッシュメモリコントローラ110は、プログラミング動作中に、他の動作(例えば、読み出し動作)用にフラッシュメモリデバイス120にアクセスすることができる。より具体的には、メモリセルを完全にプログラムするために必要なプログラミングパルスの全期間より著しく短い期間にわたって、アドレスされたメモリセルに単一プログラムパルスを印加するように各部分プログラムコマンドを構成することができるので、部分プログラムコマンドが必要とするのは、PVサイクルの完全なシーケンスより著しく少ない時間である。その結果、メモリアレイのアドレスされた部分に対するプログラミング動作中に、フラッシュメモリコントローラ110は、プログラミング動作に関連するそれ以上の部分プログラムコマンドを発行する前に、(例えば、メモリアレイの他の部分にアクセスする)適切なコマンドを発行することによって、メモリアレイの他の部分に素早くアクセスすることができる。第2に、フラッシュメモリコントローラ110が、プログラミング動作中に、メモリセルに対する個別プログラムパルスの印加をスケジューリングするので、フラッシュメモリコントローラ110は、プログラミング動作の進行を認識しており、したがってまた、効率的な方法で、メモリデバイス120における他の非プログラムコマンドの実行をスケジューリングすることができる。これは、従来のフラッシュメモリシステム、すなわち、フラッシュメモリコントローラが、フラッシュメモリデバイスに対するプログラミング動作の制御を放棄し、その間は、そのメモリセルのいずれも、典型的には、他の動作用に利用不可能な従来のフラッシュメモリシステムとは対照的である。
上記の説明において、本発明の実施形態の完全な理解を提供するために、細目、構成要素、回路およびプロセスの例などの多数の特定の詳細が述べられている。しかしながら、これらの特定の詳細は、本発明の実施形態を実施するために用いる必要がないことは、当業者に明らかであろう。他の例では、周知の構成要素または方法は、本発明の実施形態を不必要に曖昧にすることを避けるために、詳細には説明しなかった。したがって、フラッシュメモリデバイスのPVサイクルを非プログラム動作にインターリーブする文脈で上記に説明したが、本発明の実施形態は、増分プログラミング技術を利用する任意のタイプのメモリデバイスに同様に適用可能である。

Claims (67)

  1. 不揮発性メモリセルアレイを含むメモリデバイスと、
    プログラミング動作用にいくつかの前記メモリセルをアドレスするプログラムコマンドを受信する第1のポートを有し、コマンドパイプラインを介して前記メモリデバイスに結合された第2のポートを有し、かつ前記プログラムコマンドに応じて複数の独立した部分プログラムコマンドを生成するように構成されたメモリコントローラであって、各部分プログラムコマンドの実行が、前記アドレスされたメモリセルをプログラムデータで漸増的にプログラムするメモリコントローラと、
    を含むメモリシステム。
  2. 各部分プログラムコマンドが、選択されたメモリセルに単一プログラムパルスを印加し、各プログラムパルスの持続時間が、前記プログラムデータで前記メモリセルをプログラムするために必要な合計プログラミング時間の選択された一部である、請求項1に記載のメモリシステム。
  3. 前記プログラムコマンドが、前記部分プログラムコマンドのそれぞれに関連する前記プログラムパルスの前記持続時間を決定するパルス幅値を含む、請求項2に記載のメモリシステム。
  4. 前記プログラムコマンドが、前記メモリコントローラによって生成される部分プログラムコマンドの最大数を指定する限界値を含む、請求項1に記載のメモリシステム。
  5. 各部分プログラムコマンドの実行がまた、前記プログラムデータを検証する、請求項1に記載のメモリシステム。
  6. 前記メモリコントローラが、選択された数の前記部分プログラムコマンドの前で前記コマンドパイプラインに、非プログラムコマンドを選択的に挿入するようにさらに構成される、請求項1に記載のメモリシステム。
  7. 前記非プログラムコマンドが、前記プログラミング動作の進行中に、前記部分プログラムコマンドのいずれの実行も中断せずに、前記メモリデバイスにおいて実行される、請求項6に記載のメモリシステム。
  8. 前記非プログラムコマンドが、読み出しコマンドを含む、請求項6に記載のメモリシステム。
  9. 前記メモリコントローラが、
    前記複数の部分プログラムコマンドを記憶するためのコマンドキューをさらに含む、請求項1に記載のメモリシステム。
  10. 前記メモリコントローラが、前記コマンドキューに前に入れられた選択された数の前記部分プログラムコマンドの前に、非プログラムコマンドを選択的に挿入するように構成される、請求項9に記載のメモリシステム。
  11. 前記メモリコントローラが、
    前記プログラミング動作中にプログラムされているメモリセルのアドレスを記憶するためのプログラムアドレスレジスタと、
    前記非プログラムコマンドに関連するアドレスを、前記プログラムアドレスレジスタに記憶された前記プログラムアドレスと比較するための制御回路であって、前記比較に応じて、前記非プログラムコマンドを前記コマンドキューに選択的に転送する制御回路と、
    をさらに含む、請求項10に記載のメモリシステム。
  12. 前記制御回路が、前記非プログラムコマンドに関連する前記アドレスが前記プログラムアドレスレジスタに記憶された前記プログラムアドレスのいずれとも一致しない場合には、前記非プログラムコマンドを前記コマンドキューに転送する、請求項11に記載のメモリシステム。
  13. プログラミングモードを示すモードデータを記憶するためのモードレジスタをさらに含む、請求項1に記載のメモリシステム。
  14. 前記メモリコントローラが、前記モードデータが第1の状態である場合には、前記プログラムコマンドに応じて前記部分プログラムコマンドを生成し、前記モードデータが第2の状態である場合には、前記プログラムコマンドに応じて一連のプログラム−検証サイクルを開始する、請求項13に記載のメモリシステム。
  15. メモリセルアレイを含むメモリデバイスにデータをプログラムする方法であって、
    前記メモリセルにおいてデータをプログラムするプログラミング動作用にいくつかの前記メモリセルをアドレスするプログラムコマンドを受信するステップと、
    前記プログラムコマンドに応じて、複数の独立した部分プログラムコマンドを生成するステップと、
    実行のために前記部分プログラムコマンドを前記メモリデバイスに選択的に転送するステップであって、各部分プログラムコマンドの実行が、前記アドレスされたメモリセルを前記プログラムデータで漸増的にプログラムするステップと、
    を含む方法。
  16. 前記部分プログラムコマンドをコマンドキューに入れるステップをさらに含む、請求項15に記載に方法。
  17. 非プログラムコマンドを受信するステップと、
    選択された数の前記部分プログラムコマンドの前において前記コマンドキューに、前記非プログラムコマンドを選択的に挿入するステップと、
    前記選択された数の部分プログラムコマンドを実行する前に、前記メモリデバイスにおいて前記非プログラムコマンドを実行するステップと、
    をさらに含む、請求項16に記載の方法。
  18. 前記選択的に挿入するステップが、
    前記プログラムコマンドによって識別された前記プログラムアドレスをプログラムアドレスレジスタに記憶するステップと、
    前記非プログラムコマンドに関連するアドレスを、前記プログラムアドレスレジスタに記憶された前記プログラムアドレスと比較するステップと、
    前記非プログラムコマンドに関連する前記アドレスが、前記プログラムアドレスのいずれとも一致しない場合には、前記非プログラムコマンドを前記コマンドキューに入れるステップと、
    を含む、請求項17に記載の方法。
  19. 前記対応する部分プログラムコマンドがまた、検証動作を実行して、前記アドレスされたメモリセルが適切にプログラムされたかどうかを示す検証データを生成する、請求項18に記載の方法。
  20. 前記アドレスされたメモリセルの全てが適切にプログラムされたことを前記検証データが示す場合には、前記対応するプログラムアドレスを前記プログラムアドレスレジスタから削除するステップと、
    前記検証データが、完全にはプログラムされなかったいくつかの前記アドレスされたメモリセルを識別する場合には、次の部分プログラムコマンドを前記アレイに送信して、前記識別されたメモリセルをさらにプログラムするステップと、
    をさらに含む、請求項19に記載の方法。
  21. 非プログラムコマンドを受信するステップと、
    前記プログラミング動作の進行中に、前記部分プログラムコマンドのいずれの実行も中断せずに、実行のために前記非プログラムコマンドを前記メモリデバイスに選択的に転送するステップと、
    をさらに含む、請求項15に記載の方法。
  22. 前記選択的に転送するステップが、
    前記非プログラムコマンドに関連するアドレスを、前記プログラムコマンドによって識別された前記プログラムアドレスと比較するステップと、
    前記非プログラムコマンドに関連する前記アドレスが、前記プログラムアドレスと一致しない場合には、前記非プログラムコマンドを前記メモリデバイスへ直ちに転送するステップと、
    を含む、請求項21に記載の方法。
  23. 各部分プログラムコマンドが、選択されたメモリセルに単一プログラムパルスを印加し、各プログラムパルスの持続時間が、前記プログラミング動作の合計時間の選択された一部である、請求項15に記載の方法。
  24. 前記プログラムコマンドと共にパルス幅値を供給するステップと、
    前記パルス幅値に応じて、各部分プログラムコマンドに関連する前記プログラムパルスの前記持続時間を選択的に調節するステップと、
    をさらに含む、請求項23に記載の方法。
  25. 前記プログラムコマンドと共に限界値を供給するステップと、
    前記限界値に応じて、前記メモリデバイスにおいて実行される部分プログラムコマンドの数を制限するステップと、
    をさらに含む、請求項15に記載の方法。
  26. 各部分プログラムコマンド用に、
    前記対応する部分プログラムコマンドが、前記アドレスされたメモリセルに前記プログラムデータを完全にプログラムしたかどうかを示す検証データを生成するステップと、
    前記検証データに応じ、前記メモリデバイスにおいて次の前記部分プログラムコマンドを選択的に実行するステップと、
    をさらに含む、請求項15に記載の方法。
  27. 不揮発性メモリセルアレイと、
    プログラミング動作用にいくつかの前記メモリセルをアドレスするプログラムコマンドを受信する第1のポートを有し、コマンドパイプラインを介して前記メモリセルアレイに結合された第2のポートを有し、かつ前記プログラムコマンドに応じて複数の独立した部分プログラムコマンドを生成するように構成された制御回路であって、各部分プログラムコマンドの実行が、前記アドレスされたメモリセルを前記プログラムデータで漸増的にプログラムする制御回路と、
    を含むフラッシュメモリデバイス。
  28. 各部分プログラムコマンドが、選択されたメモリセルに単一プログラムパルスを印加し、各プログラムパルスの持続時間が、前記プログラムデータで前記メモリセルをプログラムするために必要な合計プログラミング時間の選択された一部である、請求項27に記載のメモリデバイス。
  29. 前記プログラムコマンドが、前記部分プログラムコマンドのそれぞれに関連する前記プログラムパルスの前記持続時間を決定するパルス幅値を含む、請求項28に記載のメモリデバイス。
  30. 前記プログラムコマンドが、前記部分プログラムコマンドの最大数を指定する限界値を含む、請求項27に記載のメモリデバイス。
  31. 各部分プログラムコマンドの前記実行がまた、前記プログラムデータを検証する、請求項27に記載のメモリデバイス。
  32. 前記制御回路が、前記部分プログラムコマンドの選択された数の前で前記コマンドパイプラインに、非プログラムコマンドを選択的に挿入するようにさらに構成される、請求項27に記載のメモリデバイス。
  33. 前記非プログラムコマンドが、前記プログラミング動作の進行中に、前記部分プログラムコマンドのいずれの実行も中断せずに、前記アレイにおいて実行される、請求項32に記載のメモリデバイス。
  34. 前記複数の部分プログラムコマンドを記憶するためのコマンドキューをさらに含む、請求項27に記載のメモリデバイス。
  35. 前記制御回路が、前記コマンドキューに前に入れられた選択された数の前記部分プログラムコマンドの前に、非プログラムコマンドを選択的に挿入するように構成される、請求項34に記載のメモリデバイス。
  36. 前記制御回路が、
    前記プログラムコマンドによってアドレスされたメモリセルのアドレスを記憶するためのプログラムアドレスレジスタをさらに含み、前記制御回路が、前記非プログラムコマンドに関連するアドレスと、前記プログラムアドレスレジスタに記憶された前記プログラムアドレスとの間の比較に応じて、前記非プログラムコマンドを前記コマンドキューに選択的に転送する、請求項35に記載のメモリデバイス。
  37. 前記制御回路が、前記非プログラムコマンドに関連する前記アドレスが前記プログラムアドレスレジスタに記憶された前記プログラムアドレスのいずれとも一致しない場合には、前記非プログラムコマンドを前記コマンドキューに入れる、請求項36に記載のメモリデバイス。
  38. プログラミングモードを示すモードデータを記憶するためのモードレジスタをさらに含む、請求項27に記載のメモリデバイス。
  39. 前記制御回路が、前記モードデータが第1の状態である場合には、前記プログラムコマンドに応じて前記部分プログラムコマンドを生成し、前記モードデータが第2の状態である場合には、外部ソースから受信された部分プログラムコマンドを実行する、請求項38に記載のメモリデバイス。
  40. 前記制御回路が、前記モードデータが第3の状態である場合には、前記プログラムコマンドに応じて一連のプログラム−検証サイクルを開始する、請求項39に記載のメモリデバイス。
  41. メモリセルアレイを有するメモリデバイスにデータをプログラムするためのシステムであって、
    前記メモリセルにおいてデータをプログラムするプログラミング動作用に、いくつかの前記メモリセルをアドレスするプログラムコマンドを受信するための手段と、
    前記プログラムコマンドに応じて、複数の独立した部分プログラムコマンドを生成するための手段と、
    実行のために前記部分プログラムコマンドを前記メモリデバイスに選択的に転送するための手段であって、各部分プログラムコマンドの実行が、前記アドレスされたメモリセルを前記プログラムデータで漸増的にプログラムするための手段と、
    を含むシステム。
  42. 各部分プログラムコマンドが、選択されたメモリセルに単一プログラムパルスを印加し、各プログラムパルスの持続時間が、前記プログラムデータで前記メモリセルをプログラムするために必要な合計プログラミング時間の選択された一部である、請求項41に記載のシステム。
  43. 非プログラムコマンドを受信するための手段と、
    前記プログラミング動作の進行中に、前記部分プログラムコマンドのいずれの実行も中断せずに、前記メモリデバイスにおいて前記非プログラムコマンドを選択的に実行するための手段と、
    をさらに含む、請求項41に記載のシステム。
  44. 前記選択的に実行するための手段が、
    前記非プログラムコマンドに関連するアドレスを、前記プログラムコマンドによって識別された前記プログラムアドレスと比較するための手段と、
    前記非プログラムコマンドに関連する前記アドレスが、前記プログラムアドレスと一致しない場合には、前記メモリデバイスにおける実行のために前記非プログラムコマンドを前記メモリデバイスへ直ちに転送するための手段と、
    をさらに含む、請求項41に記載のシステム。
  45. 不揮発性メモリセルアレイと、
    プログラミング動作用にいくつかのメモリセルをアドレスするプログラムコマンドを受信する第1のポートを有し、コマンドパイプラインを介して前記アレイに結合された第2のポートを有し、かつ前記プログラムコマンドに応じて、独立して実行可能な部分プログラムコマンドを前記アレイに発行するように構成された制御回路であって、前記部分プログラムコマンドの実行が、前記アドレスされたメモリセルを前記プログラムデータで漸増的にプログラムする制御回路と、
    を含むメモリデバイス。
  46. 各部分プログラムコマンドが、選択されたメモリセルに単一プログラムパルスを印加し、前記プログラムパルスの持続時間が、前記プログラムデータで前記メモリセルをプログラムするために必要な合計プログラミング時間の選択された一部である、請求項45に記載のメモリデバイス。
  47. 前記プログラムコマンドが、前記部分プログラムコマンドのそれぞれに関連する前記プログラムパルスの前記持続時間を決定するパルス幅値を含む、請求項46に記載のメモリデバイス。
  48. 前記部分プログラムコマンドの前記実行がまた、前記部分プログラムコマンドが前記アドレスされたメモリセルを完全にプログラムしたかどうかを示す検証データを生成する検証動作を実行する、請求項45に記載のメモリデバイス。
  49. 前記制御回路が、前記アレイにおいて次の前記部分プログラムコマンドを選択的に実行し、前記検証データに応じて前記アドレスされたメモリセルを前記プログラムデータで、漸増的にさらにプログラムするようにさらに構成される、請求項48に記載のメモリデバイス。
  50. 装置の説明を含む情報を自身に具体化するコンピュータ可読媒体であって、前記情報が、
    不揮発性メモリセルアレイと、
    プログラミング動作用にいくつかの前記メモリセルをアドレスするプログラムコマンドを受信する第1のポートを有し、コマンドパイプラインを介して前記メモリセルアレイに結合された第2のポートを有し、かつ前記プログラムコマンドに応じて、複数の独立した部分プログラムコマンドを生成するように構成された制御回路であって、各部分プログラムコマンドの実行が、単一プログラムパルスを前記アドレスされたメモリセルに印加して、前記アドレスされたメモリセルをプログラムデータで漸増的にプログラムする制御回路と、
    の説明を含むコンピュータ可読媒体。
  51. 各プログラムパルスの持続時間が、前記プログラムデータで前記メモリセルをプログラムするために必要な合計プログラミング時間の選択された一部である、請求項50に記載のコンピュータ可読媒体。
  52. 前記プログラムコマンドが、前記部分プログラムコマンドのそれぞれに関連する前記プログラムパルスの前記持続時間を決定するパルス幅値を含む、請求項51に記載のコンピュータ可読媒体。
  53. 前記プログラムコマンドが、前記制御回路によって生成される部分プログラムコマンドの最大値を指定する限界値を含む、請求項50に記載のコンピュータ可読媒体。
  54. 各部分プログラムコマンドの実行がまた、前記プログラムデータを検証する、請求項50に記載のコンピュータ可読媒体。
  55. 前記制御回路が、選択された数の前記部分プログラムコマンドの前で前記コマンドパイプラインに、非プログラムコマンドを選択的に挿入するようにさらに構成される、請求項50に記載のコンピュータ可読媒体。
  56. 前記非プログラムコマンドが、前記プログラミング動作の進行中に、前記部分プログラムコマンドのいずれの実行も中断せずに、前記アレイにおいて実行される、請求項55に記載のコンピュータ可読媒体。
  57. 前記制御回路が、
    前記複数の部分プログラムコマンドを記憶するためのコマンドキューをさらに含む、請求項50に記載のコンピュータ可読媒体。
  58. 前記制御回路が、前記コマンドキューに前に入れられた選択された数の前記部分プログラムコマンドの前に、非プログラムコマンドを選択的に挿入するように構成される、請求項57に記載のコンピュータ可読媒体。
  59. 前記制御回路が、
    前記プログラムコマンドによって識別された前記プログラムアドレスを記憶するためのプログラムアドレスレジスタをさらに含み、前記制御回路が、前記非プログラムコマンドに関連するアドレスと、前記プログラムアドレスレジスタに記憶された前記プログラムアドレスとの間の比較に応じて、前記非プログラムコマンドを前記コマンドキューに選択的に転送する、請求項58に記載のコンピュータ可読媒体。
  60. 前記制御回路が、前記非プログラムコマンドに関連する前記アドレスが前記プログラムアドレスレジスタに記憶された前記プログラムアドレスと一致しない場合には、前記非プログラムコマンドを前記コマンドキューに入れる、請求項59に記載のコンピュータ可読媒体。
  61. プログラミングモードを示すモードデータを記憶するためのモードレジスタをさらに含む、請求項50に記載のコンピュータ可読媒体。
  62. 前記制御回路が、前記モードデータが第1の状態である場合には、前記プログラムコマンドに応じて前記部分プログラムコマンドを生成し、前記モードデータが第2の状態である場合には、外部ソースから受信された部分プログラムコマンドを実行する、請求項61に記載のコンピュータ可読媒体。
  63. 前記制御回路が、前記モードデータが第3の状態である場合には、前記プログラムコマンドに応じて一連のプログラム−検証サイクルを開始する、請求項62に記載のコンピュータ可読媒体。
  64. 不揮発性メモリセルアレイと、
    プログラミング動作用に前記メモリアレイの1つまたは複数のページをアドレスする複数の独立した部分プログラムコマンドを受信するための手段であって、各部分プログラムコマンドの実行が、前記ページにおけるデータを漸増的にプログラムする手段と、
    前記プログラミング動作に関連する前記ページアドレスを記憶するための手段と、
    前記メモリアレイの1つまたは複数のページをアドレスする後続のメモリ要求を受信するための手段と、
    前記プログラミング動作に関連する前記ページアドレスを前記メモリ要求に関連する前記ページアドレスと比較するための手段と、
    前記比較に応じて、前記プログラミング動作の進行中に、前記部分プログラムコマンドの実行を中断せずに、前記メモリ要求を選択的に実行するための手段と、
    を含む装置。
  65. 前記メモリ要求が、前記プログラミング動作に関連する前記ページアドレスが前記メモリ要求に関連する前記ページアドレスと一致しない場合には、前記プログラミング動作の進行中に実行される、請求項64に記載の装置。
  66. 前記メモリ要求が、前記プログラミング動作に関連する前記ページアドレスが前記メモリ要求に関連する前記ページアドレスと一致する場合には、保持される、請求項64に記載の装置。
  67. 各部分プログラムコマンドが、選択されたメモリセルに単一プログラムパルスを印加する、請求項64に記載の装置。
JP2011509560A 2008-05-13 2009-05-06 メモリデバイス用の部分プログラムコマンド Active JP5345679B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5271008P 2008-05-13 2008-05-13
US61/052,710 2008-05-13
PCT/US2009/042952 WO2009140112A1 (en) 2008-05-13 2009-05-06 Fractional program commands for memory devices

Publications (2)

Publication Number Publication Date
JP2011523157A true JP2011523157A (ja) 2011-08-04
JP5345679B2 JP5345679B2 (ja) 2013-11-20

Family

ID=40951674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011509560A Active JP5345679B2 (ja) 2008-05-13 2009-05-06 メモリデバイス用の部分プログラムコマンド

Country Status (6)

Country Link
US (3) US9966142B2 (ja)
JP (1) JP5345679B2 (ja)
KR (1) KR20110010770A (ja)
CN (1) CN102027455A (ja)
GB (1) GB2474592B (ja)
WO (1) WO2009140112A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016538629A (ja) * 2013-10-24 2016-12-08 クアルコム,インコーポレイテッド 抵抗メモリキャッシュの書込み動作の分割
KR20170029775A (ko) * 2015-09-08 2017-03-16 삼성전자주식회사 메모리 시스템 및 그 동작 방법

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012511789A (ja) * 2008-12-09 2012-05-24 ラムバス・インコーポレーテッド 並行且つパイプライン化されたメモリ動作用の不揮発性メモリデバイス
WO2011070526A1 (en) * 2009-12-11 2011-06-16 International Business Machines Corporation Flash memory controller
JP4966404B2 (ja) * 2010-10-21 2012-07-04 株式会社東芝 メモリ制御装置、記憶装置、及びメモリ制御方法
US8543758B2 (en) * 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
JP5899893B2 (ja) * 2011-12-19 2016-04-06 富士通株式会社 ストレージ装置、コマンド実行制御方法、およびプログラム
KR101919903B1 (ko) 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US8930866B2 (en) * 2013-03-11 2015-01-06 Taiwan Semiconductor Manufacturing Company, Ltd. Method of converting between non-volatile memory technologies and system for implementing the method
CN104952475B (zh) * 2014-03-28 2017-11-03 华邦电子股份有限公司 快闪存储器及其编程方法
US10671291B2 (en) * 2015-11-17 2020-06-02 Hewlett Packard Enterprise Development Lp Iterative write sequence interrupt
US10467157B2 (en) 2015-12-16 2019-11-05 Rambus Inc. Deterministic operation of storage class memory
US10254967B2 (en) 2016-01-13 2019-04-09 Sandisk Technologies Llc Data path control for non-volatile memory
US10289596B2 (en) * 2016-06-07 2019-05-14 Macronix International Co., Ltd. Memory and method for operating a memory with interruptible command sequence
KR102641107B1 (ko) * 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US10528255B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
DE102017105155B4 (de) 2016-11-11 2023-09-07 Sandisk Technologies Llc Schnittstelle für einen nichtflüchtigen speicher
US10528286B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528267B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Command queue for storage operations
CN109508205B (zh) * 2017-09-15 2024-04-05 北京忆恒创源科技股份有限公司 支持原位操作的nvm芯片、其操作方法以及固态存储设备
WO2019074743A1 (en) 2017-10-12 2019-04-18 Rambus Inc. NON-VOLATILE PHYSICAL MEMORY WITH DRAM CACHE MEMORY
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
JP7249106B2 (ja) 2018-03-27 2023-03-30 黒崎播磨株式会社 内装体及びその製造方法
US10991445B2 (en) 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
AU2018451612B2 (en) 2018-12-03 2022-09-08 Hewlett-Packard Development Company, L.P. Logic circuitry
KR102653661B1 (ko) * 2018-12-11 2024-04-03 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
FR3104285B1 (fr) * 2019-12-05 2022-05-27 St Microelectronics Grenoble 2 Contrôle d’intégrité d’une mémoire

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6421786A (en) * 1987-07-15 1989-01-25 Nec Corp Semiconductor memory
JPH07160569A (ja) * 1993-12-09 1995-06-23 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2001027966A (ja) * 1999-07-15 2001-01-30 Matsushita Graphic Communication Systems Inc メモリ制御装置,ファクシミリ装置および画像形成装置
JP2002324008A (ja) * 2001-04-26 2002-11-08 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2004240892A (ja) * 2003-02-07 2004-08-26 Sony Corp コマンドデコード用論理回路およびプロセッサ、並びに情報処理装置
JP2005527055A (ja) * 2002-05-21 2005-09-08 サンディスク コーポレイション パイプラインメモリのための効率的な読出し、書込み方法
US20060221704A1 (en) * 2005-04-01 2006-10-05 Yan Li Use of data latches in cache operations of non-volatile memories
US20070131062A1 (en) * 2005-12-14 2007-06-14 Scott Burwell Skateboard tool
JP2007179669A (ja) * 2005-12-28 2007-07-12 Toshiba Corp メモリシステム
JP2007226936A (ja) * 2006-01-24 2007-09-06 Toshiba Corp 不揮発性半導体記憶装置及びそれを用いた不揮発性メモリシステム
JP2008506189A (ja) * 2004-07-06 2008-02-28 サンディスク コーポレイション 多目的不揮発性メモリカード

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519847A (en) * 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
KR100632940B1 (ko) * 2004-05-06 2006-10-12 삼성전자주식회사 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치
US7490283B2 (en) * 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7656710B1 (en) * 2005-07-14 2010-02-02 Sau Ching Wong Adaptive operations for nonvolatile memories
KR100706816B1 (ko) * 2006-03-10 2007-04-12 삼성전자주식회사 프로그램 속도를 향상시킬 수 있는 불휘발성 메모리 장치및 그것의 프로그램 방법
US7280398B1 (en) * 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
KR100877104B1 (ko) * 2007-06-26 2009-01-07 주식회사 하이닉스반도체 멀티 레벨 셀 플래시 메모리소자의 프로그램 방법
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US8261158B2 (en) * 2009-03-13 2012-09-04 Fusion-Io, Inc. Apparatus, system, and method for using multi-level cell solid-state storage as single level cell solid-state storage

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6421786A (en) * 1987-07-15 1989-01-25 Nec Corp Semiconductor memory
JPH07160569A (ja) * 1993-12-09 1995-06-23 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2001027966A (ja) * 1999-07-15 2001-01-30 Matsushita Graphic Communication Systems Inc メモリ制御装置,ファクシミリ装置および画像形成装置
JP2002324008A (ja) * 2001-04-26 2002-11-08 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005527055A (ja) * 2002-05-21 2005-09-08 サンディスク コーポレイション パイプラインメモリのための効率的な読出し、書込み方法
JP2004240892A (ja) * 2003-02-07 2004-08-26 Sony Corp コマンドデコード用論理回路およびプロセッサ、並びに情報処理装置
JP2008506189A (ja) * 2004-07-06 2008-02-28 サンディスク コーポレイション 多目的不揮発性メモリカード
US20060221704A1 (en) * 2005-04-01 2006-10-05 Yan Li Use of data latches in cache operations of non-volatile memories
US20070131062A1 (en) * 2005-12-14 2007-06-14 Scott Burwell Skateboard tool
JP2007179669A (ja) * 2005-12-28 2007-07-12 Toshiba Corp メモリシステム
JP2007226936A (ja) * 2006-01-24 2007-09-06 Toshiba Corp 不揮発性半導体記憶装置及びそれを用いた不揮発性メモリシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016538629A (ja) * 2013-10-24 2016-12-08 クアルコム,インコーポレイテッド 抵抗メモリキャッシュの書込み動作の分割
KR20170029775A (ko) * 2015-09-08 2017-03-16 삼성전자주식회사 메모리 시스템 및 그 동작 방법
KR102401271B1 (ko) 2015-09-08 2022-05-24 삼성전자주식회사 메모리 시스템 및 그 동작 방법

Also Published As

Publication number Publication date
US20110060875A1 (en) 2011-03-10
US20180301194A1 (en) 2018-10-18
US9966142B2 (en) 2018-05-08
US11651823B2 (en) 2023-05-16
GB2474592A (en) 2011-04-20
JP5345679B2 (ja) 2013-11-20
KR20110010770A (ko) 2011-02-07
GB2474592B (en) 2013-01-23
GB201019496D0 (en) 2010-12-29
US20210174875A1 (en) 2021-06-10
WO2009140112A1 (en) 2009-11-19
US10861554B2 (en) 2020-12-08
CN102027455A (zh) 2011-04-20

Similar Documents

Publication Publication Date Title
US11651823B2 (en) Fractional program commands for memory devices
US11068388B2 (en) Verify before program resume for memory devices
JP7320902B2 (ja) メモリの異なるメモリプレーンに同時にアクセスするための装置および方法
JP5529275B2 (ja) 物理nandフラッシュ・メモリ論理ユニット及び制御回路を動作させるための方法
US10140062B1 (en) Automatic resumption of suspended write operation upon completion of higher priority write operation in a memory device
JP5115826B2 (ja) マルチnandフラッシュメモリーデバイスの共通動作中にピーク電力消費量を減少させるための装置および方法
US10079048B2 (en) Adjusting access of non-volatile semiconductor memory based on access time
US7334080B2 (en) Nonvolatile memory with independent access capability to associated buffer
US20120290864A1 (en) Asynchronous management of access requests to control power consumption
KR102299186B1 (ko) 자동화된 동적 워드 라인 시작 전압을 위한 장치 및 방법
JP2008009942A (ja) メモリシステム
JP2012174331A (ja) 不揮発性メモリ装置及びメモリコントローラとこれらの動作方法、メモリシステムの動作方法、並びにウェアレベリング方法
KR20110131208A (ko) 동기화된 제어를 갖는 다중 플레인의 비휘발성 메모리
JP2012511789A (ja) 並行且つパイプライン化されたメモリ動作用の不揮発性メモリデバイス
CA2849862A1 (en) Flash memory system
JP2011118469A (ja) メモリ管理装置およびメモリ管理方法
US10140024B2 (en) Data storage device and data reading method thereof
EP2779175A2 (en) Retention check logic for non-volatile memory
JP2011018222A (ja) インタリーブ制御装置、インタリーブ制御方法及びメモリシステム
US7562182B2 (en) Memory access
JP2009259329A (ja) 半導体集積回路装置
US11861227B2 (en) Storage device with task scheduler and method for operating the device
US11545195B2 (en) Memory system
CN115237824A (zh) 存储器子系统中的高速缓存读取上下文切换

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121220

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130716

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130814

R150 Certificate of patent or registration of utility model

Ref document number: 5345679

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250