説明

セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内のブロックの構成

【課題】セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内の好適なブロックの構成を提供すること。
【解決手段】本発明の一実施形態は、ブロックに分けられた不揮発性メモリ(16)内の格納位置(232)内にセクタ情報を格納する不揮発性メモリシステムを備える。複数のブロックは、スーパーブロックを規定し、各ブロックは所定の複数のセクタを有する。不揮発性メモリシステムは、セクタ情報を、特定のスーパーブロック(204)の第1のブロック(210)と第2のブロック(216)にシフトさせ、セクタ情報を特定のスーパーブロックの第1のブロック(210)に書き込むコントローラ(14)を備える。第1のブロックへの書込み中に、第2のブロック(216)へのシフト全体が起こり、それにより、ブロックへの書込み動作を行うために必要な時間が減少し、全体的なシステム性能が上がる。

【発明の詳細な説明】
【技術分野】
【0001】
(発明の背景)
(関連出願の相互参照)
本出願は、以前に出願された米国特許出願第09/283,728号、および他の以前に出願された米国特許出願第09/264,340号の一部継続出願である。米国特許出願第09/283,728号は、「SPACE MANAGEMENT FOR MANAGING HIGH CAPACITY NONVOLATILE MEMORY」という名称であり、1999年4月1日に出願され、発明者がPetro Estakhri、Berhanu Iman、およびMin Guoである。米国特許出願第09/264,340号は、「MOVING SECTORS WITHIN A BLOCK OF INFORMATION IN A FLASH MEMORY MASS STORAGE ARCHITECTURE」という名称であり、1999年3月8日に出願され、発明者が、Petro Estakhri、Berhanu Iman、およびAli Ganjueiであり、1999年5月25日に発行された米国特許第5,907,856号、および、以前に出願された、米国特許出願第09/030,697号の継続出願である。米国特許第5,907,856号は、「MOVING SECTORS WITHIN A BLOCK OF INFORMATION IN A FLASH MEMORY MASS STORAGE ARCHITECTURE」という名称である。米国特許出願第09/030,697号は、「INCREASING MEMORY PERFORMANCE IN FLASH MEMORY DEVICES BY PERFORMING SIMULTANEOUS WRITE OPERATION TO MULTIPLE DEVICES」という名称であり、1998年2月25日に出願され、発明者が、Petro EstakhriおよびBerhanu Imanである。これらの特許の開示内容の全ては、全文が記載されているかのように、本明細書中で参考として援用される。
【0002】
(発明の分野)
本発明は、概して、フラッシュメモリのような不揮発性メモリデバイスを採用するデジタル格納システムの分野、特に、情報を不揮発性メモリデバイスに書き込むことにかかる時間を低減して、システム性能全体を高めることに関する。
【背景技術】
【0003】
(従来技術の説明)
近年、固体メモリは、様々な技術領域、例えば、コンピュータ、デジタルカメラ、モデムなどにおける、大容量記憶装置機器の代わりとしての使用において、人気が高まってきた。例えば、デジタルカメラにおいて、フラッシュメモリのような固体メモリは、従来のフィルムの代わりに用いられている。
【0004】
フラッシュメモリは、概して、半導体デバイス(または、チップ)の形態で提供され、各デバイスは、多数のトランジスタメモリセルで作られ、各セルは、個別にプログラマブルである。このようなメモリセルのプログラミング(もしくは、書き込み)、および消去は、消去−書き込みサイクルが有限の回数に制限され、基本的にデバイスの寿命を定めている。さらに、フラッシュメモリセルの固有の特徴は、プログラムされる前に、消去され、消去が成功したかどうか確認される必要があることである。
【0005】
従って、フラッシュメモリを用いることによって、一度情報を含んだメモリの領域を、同じ領域を再プログラムするたびに、その前に消去することが必要になる。フラッシュメモリデバイスにおいて、書き込みおよび消去サイクルは、概して、時間がかかるものであり、そのことによって、大容量記憶装置としてフラッシュメモリを利用するシステムの性能が大幅に低下する。
【0006】
フラッシュメモリデバイスを採用する適用例、例えば、パーソナルコンピュータおよびデジタルカメラにおいて、ホストは、通常は半導体デバイスの形態のコントローラデバイスを介して、情報を、フラッシュメモリデバイスに書き込んだり、フラッシュメモリデバイスから読み出す。このような情報は、セクタに編成され、各セクタは、ユーザデータ情報およびオーバーヘッド情報(まとめて、セクタ情報と呼ばれる)を含む。セクタのユーザデータ部分は、典型的には、長さが512バイトであるが、他のサイズのセクタも同様に採用され得る。コントローラは、ホストが命令した書き込み動作中に、ホストからセクタ情報を受信すると、所定のセクタ編成に従って、セクタ情報をフラッシュメモリデバイスに書き込む。ホストが複数のセクタにアクセスし得る間、各セクタは、1度に1つずつフラッシュデバイスに書き込まれる。
【0007】
データファイル(データファイルは、商業的ソフトウェア、ユーザプログラム、ワードプロセッサソフトウェア文書、拡張シートファイルなどを含む、任意のコンピュータファイルであり得る)の格納および/または取り出しにおいて、コンピュータ(または、ホスト)システムは、データファイルが大容量記憶装置内で存在するとホストが考えるロケーションを示す、論理ブロックアドレスと呼ばれるものを提供する。ホストが提供するアドレスは、コントローラによって受信されると論理ブロックアドレスフォーマットに変換される、シリンダー、ヘッダおよびセクタ(CHS)の形態であり得る。同じことが、デジタルカメラの適用例にもあてはまる。その後、コントローラは、論理ブロックアドレス(LBA)を、仮想論理ブロックアドレス(VLBA)に変換し、後者を用いて、空間マネージャ参照テーブル(LUT)内の仮想物理的ブロックアドレス(VPBA)を参照する。VPBAを取り出すと、コントローラは、VPBAを用いて、フラッシュメモリ内のデータファイルにアクセスする。データファイルは、不揮発性メモリ内の、所定の数のセクタを有するブロックに格納される。例えば、ブロックは、16個のセクタを含み、各セクタは、512バイトのユーザデータ情報、および様々なバイトの拡張またはオーバーヘッド情報(例えば、フラグ、ECCなど)を含む。VPBAは、不揮発性メモリ内の特定のブロックのロケーションを特定するために、PBAに変換される。
【0008】
データファイルが変更されるたびに、最新バージョンのファイルが、新たな物理的ロケーション(または、新たなPBA)によって識別されるフラッシュメモリ内の利用可能な(または、「使用されていない」)ロケーションに格納される。更新されたファイル用に、フラッシュメモリ内の空き(利用可能な)ロケーションの多くを用いると、さらなる情報の格納用に利用可能な「古い」ロケーションを作るために、消去動作が必要となり得る。消去動作に(書き込み動作と同様に)時間がかかるため、次の消去動作の前により多くのロケーションが用いられれれば用いられるほど、消去動作を行う頻度と、フラッシュメモリ内の空きロケーションを探すための時間との間でトレードオフがある。消去動作の回数を低減するか、または、不揮発性メモリ内の情報のブロックのロケーションの特定に関連する検索にかかる時間を低減することによって、システム性能を向上させるための方法を試み、探す努力が絶え間なく行われている。
【0009】
不揮発性メモリまたはフラッシュメモリ内の情報は、コントローラの方向の下に格納され、セクタの形態で行われ、複数のセクタがブロックの境界を定める。ブロックは、16個、32個、または他の個数のセクタを含み得る。ブロックが所定の数のセクタを含むことが決定されると、この決定されたサイズが各ブロックの境界を規定する。従って、不揮発性メモリに格納された情報が、ブロックに編成され、各ブロックは、コントローラによって一意的にアドレス可能である。さらに、各ブロックは複数のセクタからなり、各セクタは、512バイトと、データ以外の情報、例えば、フラグ、アドレスおよびエラー訂正コード(ECCを格納するためのさらなる格納空間とによって規定される。しかし、セクタは、512バイト以外のデータ格納空間を有してもよい。いくつかの従来技術によるシステムにおいて、消去動作中、ブロック全体が消去されるが、他の従来技術によるシステムにおいて、セクタが消去され得る。ブロック内の各セクタは、不揮発性メモリから情報を読み出したり、不揮発性メモリに情報を書き込んだりするために、一意的にアドレス可能である。一意的な値は、起動中に、複発性メモリに関連するアドレスまたはマッピング情報の再構成において用いられる、仮想論理ブロックアドレス(VBLA)として、セクタ情報を含む各ブロック内で維持される。当業者にとって周知であるように、電力が失われる場合、ランダムアクセスメモリ(RAM)のような不揮発性メモリにおいて維持される情報は、失われる。不揮発性メモリ内に格納されるブロック情報に関するマッピング情報は、概して、以下でさらに説明するように、揮発性メモリ内の参照テーブル(LUT)において維持される。
【0010】
現在、商業用ソフトウェアおよびユーザプログラム等の大きなファイルがフラッシュメモリ内に格納されるコンピュータ、および大きな画像ファイルがフラッシュデバイス内に格納されるデジタルカメラにおいて、それらのファイルは、1度に1セクタづつフラッシュ内に書き込まれる。各書込み動作に関連する待ち時間のため、大量の情報を格納する場合、これらのシステムのパフォーマンスは制限される。特定のセクタに実施される書込み動作に関連する工程のうちのいくつかは、書込みコマンドを書き込まれるフラッシュ(メモリ)デバイスにシフトすること、セクタ情報を書き込まれるフラッシュデバイスにシフトすること、そして、その後にセクタ情報が続く書込みコマンドを、セクタ情報が格納されるべきブロック内へと書き込む(またはプログラムする)ことを開始することである。一般に、セクタ情報をフラッシュデバイスにシフトするために、512バイトのセクタに対して、30マイクロ秒が必要とされる。実際にセクタ情報をフラッシュデバイスに書き込むためには、200マイクロ秒が必要とされる。従来技術によるシステムの制限の1つは、1度に1つのセクタが書き込まれることにより、各セクタを書き込むために230マイクロ秒よりも長い時間が必要とされることである。各ブロックが、そのブロックに書き込まれなければならない16のセクタを含む場合、それらのセクタの全てを書き込むために16×230マイクロ秒よりも長い時間が必要とされ、多くのセクタを書き込む場合には、システムパフォーマンスを著しく遅くする。
【0011】
この問題を克服するために試みられてきた従来技術によるシステムでの1つの方法は、1度に2つのセクタの書込みを許容するために、1度に2つのセクタにアドレスすることである。これらの従来技術は、実際のセクタ情報書込み時間を2分の1に減少させる一方、2セクタ分のセクタ情報をシフトするために必要とされる時間の2倍がなおも必要とされる。上記の例では、1024バイトのセクタ情報を実際に書き込むために、(400マイクロ秒に対して)200マイクロ秒が必要とされるが、1024バイトのセクタ情報をシフトするために、2×30マイクロ秒、すなわち、60マイクロ秒が必要とされる。よって、512バイトのユーザデータを有する2つのセクタを書き込むために、合計で約260マイクロ秒が必要とされる。このような従来技術によるシステムの理解に役立てるために、図1および図1aを参照して、一例を示す。
【0012】
フラッシュデバイス602およびフラッシュデバイス604を備えた従来技術によるデジタル記憶システム600を図1に示す。各フラッシュデバイスは、ブロック0から始まり、順番にブロックN(Nは整数)まで続く情報ブロックに組織される。本例では、1つのフラッシュデバイスの各ブロックが16のセクタを含むため、これらのフラッシュデバイス内で同じ位置にある2つのブロックは、32セクタの情報を書き込むために用いられる。これらのセクタは番号付けされており、フラッシュデバイス602内に偶数のセクタが格納され、フラッシュデバイス604内に奇数のセクタが格納されるが、これは任意の設計事項であり、その逆もなされ得る。セクタは、2つのフラッシュデバイスにわたって割当てられる2つのブロック位置内に32のセクタを含むように番号付けされる。さらに、セクタの番号付けにより、例えば、第1のセクタS0が、フラッシュデバイス602の第1のブロックの第1のセクタ記憶位置(ブロック0)に現われ、第2のセクタS1が、フラッシュデバイス604の第1のブロックの第1のセクタ記憶位置(ブロック0)に現われ、第3のセクタS2が、フラッシュデバイス602の第1のブロックの第2の記憶位置(ブロック0)に現われ、第4のセクタS3が、フラッシュデバイス604の第1のブロックの第2の記憶位置(ブロック0)に現われるようなフラッシュデバイス間での切換えが起こる。
【0013】
フラッシュデバイスの各々の2つのブロック間のセクタを偶数および奇数に番号付けする理由は、セクタ情報をフラッシュデバイス602に結合させ、かつフラッシュデバイス602から結合するためのデータバスDB7:0 616、およびセクタ情報をフラッシュデバイス604に結合させ、かつフラッシュデバイス604から結合するための別のデータバスDB15:7 624を用いて、セクタ情報を並列にロードすることを可能にすることである。FCE0*信号620は、アクティブである場合、コマンド/アドレスおよびセクタデータ、ならびにその中のオーバーヘッド情報をシフトするためにフラッシュデバイスをイネーブルまたは選択する。本例では、信号620は、アクティブロー信号である。
【0014】
図1aは、後者の動作を説明するために用いられる、従来技術の図1に示す信号のタイミング図である。図1aでは、データバスDB15:0は、事実上、バス616および624の組み合わせであり、WE*信号は、制御信号622に含まれる信号のうちの1つである。ローである場合、WE*信号は、フラッシュデバイスに情報をシフトさせる。最初に、セクタS0およびS1に対するコマンドおよびアドレス情報がフラッシュデバイスにシフトされる。次に、セクタユーザデータおよびECC情報が、フラッシュデバイスにシフトされる。フラッシュデバイス602は、616バスを介して、512バイトのデータを受信し、フラッシュデバイス604は、624バスを介して、512バイトのデータを受信する。セクタ情報の全てのシフトが完了すると、コントローラは、書込み動作を開始し、これにより、Frdy/Bsy*信号618がアクティブ化される(ハイ状態からロー状態になる)。各セクタが512バイトのユーザデータを含む場合、コマンド/アドレス情報の連続的シフト、セクタ情報のシフト、および書込みコマンドの開始には約30マイクロ秒要する。Frdy/Bsy*信号618がローになると、約200マイクロ秒後に、512バイトを有するセクタに対するセクタ情報(ユーザデータおよびECC)の書込み(またはプログラム)が完了する。実際、この場合、2つのバス616および624が、それぞれ、フラッシュデバイス602とフラッシュデバイス604に並列に情報を結合するため、200マイクロ秒内で、512ワード(各ワードは2バイト)がプログラムされる。よって、書込み動作全体が完了するまで約230マイクロ秒かかる。セクタS0およびS1への書き込みが完了すると、同じ処理が、セクタS2およびS3をプログラムするために起こり、その後に、S4およびS5のプログラムが続く。
【0015】
図1および図1aにおいて議論および説明した従来技術の制限のうちのいくつかは、コントローラデバイス上に必要とされる物理的な入力/出力ピンがより多く存在することである。詳細には、2つのデータバス616および624を有するため、必要なデータバスラインが2倍存在する。実際、この従来技術がより多くのセクタを並列にプログラムするために用いられ、それにより、並列に構成されたさらなるフラッシュデバイスを有する場合、追加されたデータバスに対する要件が増し、最終的に、コントローラピンの数が実用的ではなくなる。単なる一例として、4つのセクタが並列にプログラムされ得る並列する4つのフラッシュデバイスを有するために、さらに16個のピンがコントローラデバイス上に必要とされる(16のさらなるデータバス信号に対して、合計32の信号)。これにより、コントローラデバイスに関する製造コストが明らかに増加し、より大きなデバイスへと繋がり得、さらにコストが上がる。
【0016】
図1および図1aの従来技術によるシステムに関する別の欠点は、第1のセクタ情報のシフトが始まる前に、ホストは、セクタの数をバッファにロードする(これ以外の場合にはプログラムされる)必要があり、セクタをプログラムする時間が実質的に増加する。これは、事実上、より大きなバッファサイズへと繋がり、製造コストを増加させる。
【0017】
よって、このような従来技術は、2つのセクタを1度に処理することにより、セクタ書込み動作を実施するために必要とされる時間を切り詰めるにも関わらず、さらなる時間(すなわち、セクタ情報をシフトするための時間が2倍)が、書込み動作を完了するために必要である。
【0018】
それゆえ、1つのセクタへの書込みと並列して、別のセクタに書込みを行うことに関連づけられたタスクのいくつかを実施することにより、コントローラデバイスがセクタ情報を不揮発性メモリに書き込むことに関連づけられた時間の量を減少させ、それにより、全体のシステムパフォーマンスを増加させる一方で、コントローラデバイスのピンを同数に維持し、かつシステムの製造に関連するコストの追加を妨げる、方法および装置に対する必要性が生じる。
【発明の概要】
【課題を解決するための手段】
【0019】
(発明の要旨)
簡単には、本発明の実施形態は、ブロックに構成された不揮発性メモリ内の格納位置にセクタ情報を格納するための不揮発性メモリシステムを含む。ここで、複数のブロックはスーパーブロックを規定し、そして各ブロックは所定の複数のセクタを有する。不揮発性メモリシステムは、セクタ情報を特定のスーパーブロックの第1および第2のブロックにシフトし、そしてその特定のスーパーブロックの第1のブロックにセクタ情報を書き込むためのコントローラを含む。ここで、第2のブロックへのシフトは、完全に第1のブロックへの書き込みの間に生じ、これによりブロックへの書き込み動作を行うために必要な時間を低減し、そしてシステム全体の性能を増加する。
(項目1) ブロックに分けられた不揮発性メモリ内の格納位置内にセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有する不揮発性メモリシステムであって、
セクタ情報を、特定のスーパーブロックの第1のブロックの第1のセクタにシフトさせるコントローラであって、該コントローラはさらに、セクタ情報を、該特定のスーパーブロックの第2のブロックの第1のセクタにシフトさせ、セクタ情報を、該特定のスーパーブロックの該第1のブロックの該第1のセクタに書き込むコントローラ、
を備え、
該第1のブロックの該第1のセクタへの書込み中に、該第2のブロックの該第1のセクタへのシフト全体が起こり、それにより、ブロックへの書込み動作を行うために必要な時間を減少させ、全体的なシステム性能を上げる、不揮発性メモリシステム。
(項目2) 前記コントローラが、前記不揮発性メモリからのFrdy/bsy*信号を受け取り、それによって、該Frdy/bsy*信号がアクティブであるときに、前記特定のスーパーブロックの前記第2のブロックへのセクタ情報の書込みを引き起こす、項目1に記載の不揮発性メモリシステム。
(項目3) 前記コントローラが、第1のフラッシュデバイスと第2のフラッシュデバイスとに接続され、該第1および該第2のフラッシュデバイスは不揮発性メモリユニットに含まれる、項目1に記載の不揮発性メモリシステム。
(項目4) 前記第1のフラッシュデバイスが、前記特定のスーパーブロックの前記第1のブロックを備え、前記第2のフラッシュデバイスが、該特定のスーパーブロックの前記第2のブロックを備える、項目3に記載の不揮発性メモリシステム。
(項目5) 前記特定のスーパーブロックの前記第1および第2のブロックが、前記第1および第2のフラッシュデバイスと同様の位置関係にある、項目4に記載の不揮発性メモリシステム。
(項目6) ブロックに分けられた不揮発性メモリであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有する不揮発性メモリにセクタ情報を書き込む方法であって、
セクタ情報を、特定のスーパーブロックの第1のブロックの第1のセクタにシフトさせるステップと、
セクタ情報を、該特定のスーパーブロックの第2のブロックの第1のセクタにシフトさせるステップと、
該第2のブロックへシフトさせるステップを行っている間に、該特定のスーパーブロックの該第1のブロックの該第1のセクタにセクタ情報を書き込み、それにより、ブロックへの書込み動作を行うために必要な時間を減少させ、全体的なシステム性能を上げる、方法。
(項目7) ブロックに分けられた不揮発性メモリ内の格納位置内にセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有する不揮発性メモリシステムであって、
特定のスーパーブロックにセクタ情報を書き込むコントローラであって、セクタ情報の書込みが成功したか否かを示す、該不揮発性メモリからの割込み信号に応答するコントローラ、
を備え、
該割込み信号が、ステータス情報のポーリングを回避し、それにより、セクタ情報の書込みを行うことに関連する時間を減少させる、不揮発性メモリシステム。
(項目8) 前記コントローラがさらに、特定のスーパーブロックの第1のブロックの第1のセクタにセクタ情報をシフトさせ、該コントローラがさらに、該特定のスーパーブロックの第2のブロックの第1のセクタにセクタ情報をシフトさせ、該特定のスーパーブロックの該第1のブロックの該第1のセクタにセクタ情報を書き込み、該第1のブロックの該第1のセクタへの書込み中に、該第2のブロックの該第1のセクタへのシフト全体が起こり、それにより、ブロックへの書込み動作を行うために必要な時間を減少させ、全体的なシステム性能を上げる、項目7に記載の不揮発性メモリシステム。
【図面の簡単な説明】
【0020】
【図1】16ビットデータバス、DB7:0およびDB15:8を使用する、2つのフラッシュデバイスを並列にプログラミングするための従来のディジタル格納システムを示す。
【図1a】図1のフラッシュデバイスをプログラミングするために使用される関連信号のタイミング図を示す。
【図2】本発明の実施形態による、メモリユニット16を含むディジタルシステム10を示す。
【図3】図2のディジタルシステムのメモリユニット16内のブロック構成例を示す。
【図4】図2の実施例について、セクタ情報のプログラミングのためのタイミング図を示す。
【図4a】図2の実施例について、セクタ情報のプログラミングのためのタイミング図を示す。
【図4b】図2の実施例について、セクタ情報のプログラミングのためのタイミング図を示す。
【図5】本発明の別の実施形態のタイミング図を例示する。
【図5a】本発明の別の実施形態のタイミング図を例示する。
【図5b】本発明の別の実施形態のタイミング図を例示する。
【発明を実施するための形態】
【0021】
本発明の前述および他の目的、特徴および利点は、いくつかの図面を参照してなされる以下の好ましい実施形態の詳細な説明から明らかとなる。
【0022】
(好適な実施形態の詳細な説明)
図2に示される本発明の実施形態によるディジタル格納システム10は、コンピュータ(パーソナルコンピュータ(PC))、ディジタルカメラなどの一部であり得、ホスト12に結合される。ディジタルシステム10は、コントロールデバイス14および不揮発性メモリユニット16を含む。ホスト12は、コントローラデバイス14の指示にしたがってメモリユニット16から情報を読み書きするように結合される。本発明によるメモリユニット16は、1つ以上の不揮発性メモリデバイスから構成される(図2において、2つのメモリデバイス34および36がメモリユニット16に含まれるように示されるが、他の数のメモリデバイスが使用され得る)。不揮発性メモリデバイスの各々は集積回路(または当該分野で一般に呼ばれるように、半導体デバイス)である。不揮発性メモリデバイスは、フラッシュ、EEPROM(電気消去可能プログラマブル読み出し専用メモリ)、または他のタイプのソリッドステートメモリであり得る。
【0023】
ホスト12は、ホストバス18を介してコントローラ14と通信するように示され、そしてコントローラデバイス14は、メモリ信号20を介してメモリユニット16に結合されるように示される。
【0024】
コントローラデバイス14は、一般にホストインタフェース回路22、マイクロプロセッサ回路24、揮発性格納ユニット26およびスペースマネージャ/フラッシュインタフェース回路28を含むように示される集積回路である。別の実施形態において、コントローラデバイス14は、必ずしも半導体デバイスでなくてもよく、そしてプリント回路板などに結合されるディジタルロジックから形成され得る。ホストインタフェース回路22は、ホストバス18を介してホスト12に結合するためのものである。ホストバス18は、アドレスバス、双方向データバスおよび制御信号(別々に図示せず)を含む。使用するホストのアーキテクチャに依存して、ホストアドレスおよびデータバスは、アドレスおよびデータ信号を同じバスに多重化することによってアドレスおよびデータ情報の両方を伝送する1つのバスから構成され得る。なお、本明細書中で使用される用語「バス」は、複数の電気伝導体または信号線を含む。ホストバス18は、当該分野で使用されるPCMCIAインタフェース、ATAインタフェースまたは他の種類のインタフェースであり得る。
【0025】
ホストインタフェース回路22は、ホストバス18に結合するように示され、そしてさらにマイクロプロセッサバス30を介してマイクロプロセッサ回路24に結合されるように示される。マイクロプロセッサ回路24は、さらにスペースマネージャ/フラッシュインタフェース回路28にマイクロプロセッサバス30を介して結合される。マイクロプロセッサバス30は、マイクロプロセッサ回路24とスペースマネージャ/フラッシュインタフェース回路28との間でのアドレスおよびデータ情報の通信を容易にする。マイクロプロセッサ回路24は、揮発性格納ユニット26に揮発性格納バス32を介して情報を読み書きするように結合される。ホストインタフェース回路22は、さらにバッファユニット50にマイクロプロセッサバス30を介して結合されるように示される。より明らかとなるように簡単に言うと、情報はホスト12とコントローラデバイス14との間でホストインタフェース回路を介して通信される。セクタ情報は、メモリユニット16内の格納のためのホスト12によって提供されるか、またはホスト12へコントローラデバイス14から転送され、バッファユニット50に格納される。バッファユニット50は、一般に1つ以上のランダムアクセスメモリ(RAM)デバイスまたは他の同様のメモリデバイスから形成される。本発明の1実施形態において、バッファデバイス50のサイズは、4セクタサイズに値する情報を格納し得、各セクタは(ユーザデータの)512バイトである。本発明の他の実施形態において、他のサイズのバッファデバイス50を本発明の範囲および精神から逸脱せずに使用し得る。しかし、バッファのサイズは、部分的に、使用されるフラッシュデバイスの数の関数である。すなわち、所定の図面を参照して以下に提供される実施例において、2つのフラッシュデバイスが使用され、「スーバー」ブロックは2つのブロックを含み、そして各フラッシュデバイスのセクタがこの2つのフラッシュデバイスの間でピンポンのようにアドレッシングされる。そのような構成において、バッファ50のサイズは、少なくとも2つのセクタのための格納スペースを含む必要がある(各セクタが512バイトである場合、バッファサイズは少なくとも1024バイトである必要がある)。例えば、4つのフラッシュデバイスが使用される場合(以下に図示せず)、スーパーブロック内の同様の位置にある4つのセクタがピンポンのようにアドレッシングされるので、バッファサイズは少なくとも4つのセクタのための格納スペースが必要である。
【0026】
本発明の実施形態において、マイクロプロセッサ回路24はIntel8051プロセッサであり、あるいはマイクロプロセッサユニット24はいずれの汎用プロセッサユニットでもあり得る。揮発性格納ユニット26は、一般にマイクロプロセッサユニット24によって実行されるファームウェアコードを格納するためのリードアクセスメモリ(RAM)である。ホスト12とコントローラ14との間の情報はホストバス18を介して転送され、そしてコントローラ14とメモリユニット16との間の情報は、メモリ信号20を介して結合される。メモリユニット16は、34および36などの2つ以上の不揮発性メモリデバイスから構成される。不揮発性メモリ34および36の各々のサイズは、ディジタルシステム10のアプリケーションに依存して変化し得る。にもかかわらず、このサイズは、一般にバイトで呼ばれる。ここで各バイトは8ビットである。例えば、1つのアプリケーションにおいて、不揮発性メモリユニット16のサイズは160MB(メガバイト)であり、各フラッシュまたは不揮発性メモリデバイスは32MBである。別のアプリケーションにおいて、不揮発性メモリユニット16のサイズは80MBであり、各フラッシュメモリデバイスは16MBである。不揮発性メモリデバイス34および36は電源を落とした後もその内容を保存するメモリタイプである。不揮発性メモリデバイスの典型的な例は、フローティングゲートセルから構成され、そしてToshiba、Hitachiなどの会社によって製造されるフラッシュまたはEEPROMデバイスである。
【0027】
図2に示されていないが、空間管理/フラッシュインターフェイス回路28は、空間管理制御ユニット38、フラッシュインターフェイス回路40、および空間管理格納ユニット42を含む。本発明の一実施形態において、空間管理ユニット38は、空間管理格納ユニット42内で管理されているルックアップ表(LUT)内に格納されている情報を制御するための状態マシンを含む。あるいは、空間管理制御ユニット38の機能は、当業者に理解されるように、他の種類のハードウェアおよび/またはソフトウェアによって実行され得る。空間管理格納ユニット42は、RAMなどの揮発性メモリからなり、ブロックアドレス指定およびステータスの情報をLUT内に格納する。
【0028】
引き続き、図2に示されていないが、メモリ信号20は、フラッシュアドレスバス、双方向フラッシュデータバス、およびフラッシュ制御信号を含む。これらの信号のいくつかは、本明細書中に含まれる他の図に関して、さらに説明される。
【0029】
作動中、ホスト12は、時折およびメモリユニット16の読取りおよび書込みなどの様々な動作を実行中に、メモリユニット16にアクセスする。これにより、ホスト12は、データの読取りまたは書込みためのロケーションを識別するアドレスを提供する。ホストによって提供されたアドレスは、ホストバス18上に結合されて、メモリユニット16への情報およびメモリユニット16からの情報にアクセスするか、またはそれらを読取る際にコントローラ14によって使用される。一実施形態において、ホストによって提供されたアドレスは、CHS(シリンダ、ヘッド、およびセクタ)の形式である。この種類のアドレス指定は、ディスク上の特定のロケーションを識別するためにこのようなアドレス指定スキームを使用したハードディスクを使用するシステムに適合される。しかし、情報を格納するための不揮発性メモリの出現により、CHSアドレスフォーマットは、不揮発性メモリユニット内のロケーションを識別するための値に変換される必要がある。従って、CHSアドレスがホストバス18上に結合される場合、コントローラ14は、CHSアドレスフォーマットを論理ブロックアドレス(LBA)に変換する。LBAは次いで、マイクロプロセッサバス30を介して結合されて、空間管理/フラッシュインターフェイスユニット28によって使用される。あるいは、ホスト12がコントローラ14にLBA型のアドレスを提供し、この場合、変換は依然として実行されるが、それはCHSからLBAの変換でない。後者の変換は、単にLBAを置換させるだけであり、それは、前者の変換、すなわちCHSからLBAの変換が使用される場合も実行される。本明細書中に前述されるように、ブロックは、所定の数のセクタ(例えば、16、32、または他の数のセクタ)を含むように規定される。さらに別の実施形態において、ホスト12は、CHSアドレスからLBAアドレスへの変換を実行し、CHSアドレスを置換し、結果として得られる置換されたアドレスをコントローラ14に提供する。
【0030】
LBA計算は、ハードウェアまたはファームウェアによって実行され得る。ファームウェアを使用してLBAを計算する場合、マイクロプロセッサ24は、揮発性格納ユニット26内に格納されているファームウェアコードの実行によって、このような機能を実行する。ハードウェアを使用してLBAを計算する場合、状態マシンブロック(図2に示さず)がこのような計算を実行する。
【0031】
上述の方程式によってLBAを計算した後、LBAの特定の最下位ビットをマスキングすることにより、LBAはVLBA(仮想論理ブロックアドレス)値に変換される。例えば、各ブロックに対して16セクタが使用される場合、VLBAは、16進法の値0x3FFFF0を用いて、LBAの論理「AND」によってLBAから計算される。これは基本的に、LBAの中の最下位4ビットを除いて、LBAが保存されるという結果になる。各ブロックに対して32セクタが使用される場合、VLBAは、16進法の値0x3FFFE0を用いて、LBAの論理「AND」によってLBAから計算され、これにより、LBAの中の最下位5ビットに効果的にマスキングをすること、および残りのビットを保存することなどが行われる。下記で詳細に説明されるように、「スーパーブロック(super block)」の概念が使用される場合、マスキングされるビットの数は、「スーパーブロック」の大きさの関数である。つまり、各スーパーブロックは、各ブロックが多数のセクタによって規定される多数のブロックを有するので、スーパーブロックのセクタの総数は、VLBA値を形成するためにマスキングされるべきビットの数を決定する。LBAからVLBAへの変換は、空間管理/フラッシュインターフェイス28によって実行される。この変換は、ハードウェアまたはソフトウェアのいずれかによって実行され得る。
【0032】
図2において、VLBAは次いで、マイクロプロセッサ24から空間管理/フラッシュインターフェイス回路28の空間管理制御ユニット38までの、マイクロプロセッサバス30の上に結合され、そこで、空間管理格納ユニット42のLUT(ルックアップ表)をアドレス指定するために使用される。実際、VLBAは、LUTの特定のロケーションをアドレス指定するために使用され、そこからVPBA(仮想物理ブロックアドレス)が検索される。特定のLBA値が、様々なPBA値を示すために使用され得ると留意されるべきである。例えば、ホストが、特定のLBA値によって識別されるロケーションに書込みたいと願えば、特定のLBA値は、LUT内のVPBA値をルックアップ(look up)するために使用される。このVPBA値は、例えば、「20」であり得るが、次にホストが同じLBAによって識別される同じロケーションに書込みたいと願う時に、LUTから検索されるVPBA値は、「20」ではなく「200」であり得る。これは、LUT内でさらに管理されている特定のフラッグ情報を使用して行われる。簡単に言うと、最初に、書込みのためにホストによって特定のLBAロケーションがアドレス指定される消去操作が行われた後は、情報が書込まれ、特定のLBAに対応するLUT内のフラッグフィールドが「使用済み」として印を付けられて、これによって、次にホストが消去操作前と同じロケーションに書込みたいと願う時、このような書込みに対して、メモリユニット16内の異なるロケーションが異なるPBAによって識別される。従って、LBAおよびPBAの間に1対1の関係はない。フラッグフィールドならびにLBAおよびPBA LUTのアドレス指定のさらなる説明のために、発明者Petro Estakhri、Berhanu Iman、およびAli R. Ganjueiの「Moving Sectors Within a Block of Information in a Flash Memory Mass Storage Architecture」という名称の1999年5月25日に出願された米国特許第5,907,856号を参照されたい。本明細書において、その全文を記載するように、その開示を参考として援用する。
【0033】
PCアプリケーションにおいて、情報ブロックは典型的に、従来のハードディスクドライブにおいて使用されるようなセクタであり、各セクタは典型的に、512バイトのデータのための空間、およびオーバーヘッド情報のための別の空間を含むが、他の大きさのセクタも同様に使用され得る。
【0034】
マイクロプロセッサ24は、マイクロプロセッサ24の中または外のいずれかに位置づけられる揮発性のメモリユニット26(例えば、ROM(読取り専用メモリ)またはRAM(読取りおよび書込みメモリ))からの、プログラムコード形式の命令を実行する。マイクロプロセッサ24はさらに、空間管理制御ユニット38に命令して、ホストによって提供されるCHS値から発生するLBAを使用して、メモリユニット16内で使用可能な、次に未使用(または自由)なアドレス指定できる格納ブロックのロケーションを見つけだす。ホストによる書込み操作の間、この未使用ブロックのロケーションは、LUT内に格納され、ホストによる読取り操作の間、このブロックのロケーションは、LUTから読取られる。メモリユニット16内のロケーションを識別するアドレス値は、LUT内に格納されているので、空想物理ブロックアドレス(VPBA)と呼ばれる。空間管理制御ユニット38は、様々なアルゴリズムのいずれか1つを使用して、フラッシュメモリデバイス内に位置づけられる次に使用可能(または、自由)なブロックを見つけ出し得る。空間管理の例は、発明者Mahmud AssarおよびPetro Estakhriの「Direct Logical Block
Addressing Flash Memory Mass Storage Architecture」という名称の1999年1月13日に発行された米国特許第5,924,113号内に開示される。本明細書において、その全文を記載するように、特に図11〜図13およびそれに関する説明に関して、その開示を参考として援用する。しかし、代わりの実施形態において、他の空間管理の方法および装置も同様に、本発明によって使用され得る。
【0035】
VLBA値は、最後には、VPBA値をLUTからルックアップするために使用される。LUTは、列および欄を含み、各列がVLBA値によってアドレス指定される。読取り操作中、VLBA値は、LUTの特定の行をアドレス指定するために使用され、そこからVPBAが検索される。書込み操作中、VLBAは、LUTの特定の行をアドレス指定するために使用されて、特定のフラッグ情報を含むVPBA値を格納する。VPBAは最後に、物理ブロックアドレス(PBA)に変換されて、メモリユニット16内の特定のセクタのロケーションを識別する。
【0036】
LBA値は、マイクロプロセッサ24によってマイクロプロセッサバス30の上に結合されて、空間管理/フラッシュインターフェイス28によって使用され、そこで、VLBAアドレスに変換される。4ビットのセクタは、各ブロックに対して16セクタを使用することを示す。なぜならば、2の4乗は、16であるからである。VLBAは、セクタビットをマスキングすることによって得られ(マスキングされたセクタビットは、セクタオフセット値と呼ばれる)、この例では、4ビットを含む。ブロックおよびチップ選択情報は、同じままである。チップ選択ビットは、たとえばデバイス34または36のいずれか1つなどの、メモリユニット16内に含まれる複数の不揮発性メモリデバイスの中の特定の1つを選択するために使用される。ブロック情報は、選択された不揮発性メモリデバイス内の特定のブロックを識別する。ブロックが不揮発性メモリ内に格納されるか、書込まれるか、または移動されると、VLBAもまた、不揮発性メモリに書込まれる。つまり、VLBAは、ブロックの最後の行に書込まれる。あるいは、VLBAは、ブロックの任意の他の行に書込まれ得る。このことは、下記の図を参照して、さらに説明される。
【0037】
ここで、図3を参照すると、メモリユニット16は、フラッシュデバイス200およびフラッシュデバイス202を含むように示され、各フラッシュデバイスは、半導体デバイスである。前述のように、メモリユニット16は、いくつかのフラッシュメモリデバイスを含み得る。図3において、ブロック0〜ブロックNのブロックによって分けられる情報を含むように各フラッシュデバイス200および202が示されると理解されるべきであり、ブロックの各セットであるブロック0〜ブロックNは、1つのフラッシュデバイス内に含まれる。
【0038】
図3において、具体的には、ブロック0 210、ブロック1 212からブロックN 214のN個のブロック(Nは整数である)を含むフラッシュデバイス200が示される。同様に、具体的には、ブロック0 216、ブロック1 218からブロックN 220のN個のブロックを含むフラッシュデバイス202が示される。フラッシュデバイス200および202は、メモリ信号20を介してコントローラデバイス14(図2に示す)と通信する。データバスのDB7:0 242、制御信号(読取り、書込み、および消去のための信号を含む)240、フラッシュレディー/ビジー(Frdybsy*)バス222、フラッシュチップイネーブル0(FCE0*)信号224、およびフラッシュチップイネーブル1(FCE1*)信号226含むメモリ信号20が示される。Frdybsyバス222は、フラッシュデバイス200がプログラミングされる準備ができた時あるいはビジーである時を示すために、フラッシュレディー/ビジー0(Frdy/bsy0*)信号228と、フラッシュデバイス202がプログラミングされ得る時、およびビジーでありプログラミングされ得ない時を示すために、フラッシュレディー/ビジー1(Frdy/bsy1*)信号230とを含む。FCE0*信号224は、書込み、読取り、または消去の操作の前にフラッシュデバイス200を使用可能にするために使用される。同様に、FCE1*信号226は、書込み、読取り、または消去の操作の前にフラッシュデバイス202をイネーブルにするために使用される。メモリ信号20内に含まれる信号は、コントローラデバイス14によって展開(develop)される。本発明の一実施形態において、FCE0*信号およびFCE1*信号は、アクティブローであり、つまり、これらの状態は、低電圧または約「0」ボルトの状態の場合にアクティブになる。後者の状態の場合、これらの信号は、対応するフラッシュデバイスをアクティブにするか、またはそこへ書込む準備をする。同様に、Frdy/bsy0*信号およびFrdy/bsy1*信号がローの場合、これは、これらの信号に対応するフラッシュデバイスがビジー(または、プログラミングされているか、読取られているか、または消去されている)であることを示すのに対して、これらの信号が「ハイ」(すなわち、「ロー」電圧レベルよりも実質的に高い電位の電圧レベル)の場合、これらの信号に対応するフラッシュデバイスは、プログラミングの準備ができている。これは、これらの信号が、図3および図4の例の中に示されるよりアクティブハイ、またはその逆の極性であるように構成され得る任意の設計の選択である。
【0039】
バスDB7:0 242は、フラッシュデバイスの中にプログラミングされるべきデータ、またはフラッシュデバイスから読取られるべきデータを結合するために使用される。バス242は、本発明の一実施形態において、8ビットのバスであり、代わりに他のビット数であってもよい。バス242は、フラッシュデバイス200および202の両方に接続されている。FCE0*信号およびFCE1*信号の状態は、他の制御信号の状態と共に、どのフラッシュデバイスデータが読取られているか、または書込まれているかを示す。例えば、FCE0*が「ロー」であり、WE*信号(図3に示されていないが、図4に示されるように制御信号240内に含まれる信号)がローである場合、フラッシュデバイス200は、バス242の上に結合されている情報を用いてプログラミングされ、バス242がフラッシュデバイス202に接続されているにも関わらず、後者は、プログラミングされない。なぜならば、後者のフラッシュイネーブル、またはFCE1*226が、「ハイ」でありアクティブでないからである。
【0040】
ユーザデータおよびECC情報(あるいは他の種類のオーバーヘッド情報)を含むセクタ情報を格納するために、16セクタ格納ロケーション232を含む、フラッシュデバイス200の各ブロック(ブロック0 210〜ブロックN 214)、およびフラッシュデバイス202の各ブロック(ブロック0 216〜ブロックN 220)が示される。別の実施形態において、ブロック(210〜214および216〜220)の各々は、16セクタ以外も含み得ると留意されるべきである。例えば、容量が128Mbitsのメモリユニットを有するシステムにおいて、各ブロックに対して32セクタが使用され得るが、64Mbitの容量を使用する場合、16セクタのブロックが必要とされる。
【0041】
フラッシュデバイス200および202内の同様のロケーションにある2つのブロックは、「スーパーブロック」を形成する。例えば、図3に示されるように、スーパーブロック0 204は、フラッシュデバイス200のブロック0 210およびフラッシュデバイス202のブロック0 216を含む。フラッシュデバイス200のブロック1 212およびフラッシュデバイス202のブロック1 218を含むスーパーブロック1 206が示され、フラッシュデバイス200のブロックN 214およびフラッシュデバイス202のブロックN 220を含むスーパーブロックN 208が示される。各フラッシュデバイスから1つずつの2つのブロックを含むスーパーブロックが示されるが、スーパーブロックはその代わりに、2つ以上のブロックを含み得、その場合、スーパーブロックは、各フラッシュデバイス内の同様のロケーションに位置づけられるブロックを含む。あるいは、フラッシュデバイス200のブロック0〜ブロックNおよびフラッシュデバイス202のブロック0〜ブロックNは、同じ半導体デバイス内に含まれ得る。
【0042】
作動中、ホスト12(図2に示す)からのコマンドを受け取ると、フラッシュデバイス200のブロック0 210の第1のセクタ格納ロケーション232(S0)をプログラミングすることによって、セクタ情報が書込まれる。しかし、典型的に、情報の1つ以上のセクタがメモリユニット16内に格納されるため、次のセクタ情報は次いで、フラッシュデバイス202のブロック0 216の第1のセクタ格納ロケーション232(S1)内に格納される。その次のセクタ情報は、フラッシュデバイス200のブロック0の第2のセクタ格納ロケーション(S2)内に格納され、その次のセクタ情報は、フラッシュデバイス202のブロック0 216の第2のセクタ格納ロケーション(S3)内に格納されるといった具合である。従って、32セクタの情報は、スーパーブロック内に格納され得る。これによって、従来技術と比較して、ブロックのプログラミング可能な大きさは効果的に大きくなる。なぜならば、各フラッシュデバイスのブロックは、別のブロックによって続くといった具合でプログラミングされるからである。本発明の構成は、スーパーブロックへの書込み操作を達成することに関連するタスクの重複を可能にし、これは、まもなく明らかになるように、セクタ情報を書込むことに関連する時間を低減することによりシステム全体の性能を改善することによって行われる。
【0043】
特定のセクタ格納ロケーションまたはブロックがプログラミングされる(または、書込まれる)場合、特定のセクタ格納ロケーションが存在するフラッシュデバイスに対応するFCE信号がイネーブルになり、フラッシュデバイスがビジーでことを示すようにFrdybsyがプログラミングされて、書込み操作が完了するまでフラッシュデバイス上のこれ以上の操作を回避する。特定のセクタ格納ロケーションに書込むために、特定のフラッシュデバイスが選択され(または、対応するFCE信号をアクティブにすることによってイネーブルにされ)、書込みコマンドは、特定のセクタ格納ロケーションが位置づけられる特定のフラッシュデバイス内のシフトレジスタ(示さず)内にシフトする。次いで、格納されるべきセクタ情報がフラッシュデバイス内にシフトし、その後、書込みコマンドが開始され、セクタ情報は、特定のフラッシュデバイス内にプログラミングされる。後者のタスクの間、すなわち、セクタ情報がフラッシュデバイス内に実際に書込まれる間、特定のフラッシュデバイスに対応するFrdybsy信号は、特定のフラッシュデバイスがビジーであることを示すようにコントローラによってプログラミングされ、このプロセスは典型的に、512バイトの大きさのセクタを完了するために200μ秒を必要とする。セクタの大きさが512であるセクタ情報を、フラッシュデバイス内にシフトすることは典型的に、30μ秒を消費する。
【0044】
ここで図4を参照すると、フラッシュデバイス200および202をプログラミングする(または、それらに書込む)ためのイベントのシーケンスを反映するタイミング図表が示される。詳細には、Frdy/bsy0*信号228、Frdy/bsy1*信号230、FCE0*信号224、FCE1*信号226、およびWE*信号の状態に関して、S0およびS1、S2、S3、S4およびS5の6セクタのプログラミングが示され、後者は、制御信号240(図3に示す)内に含まれる。まもなく明らかになるように、フラッシュデバイスの内の1つのプログラミングは、他のフラッシュデバイス内へのセクタ情報のシフトと同時に実行されて、書込み操作の性能と比較してシフト操作を時間的に見えなく(transparent−in−time)し、従って、1つのデータバスを使用して同時に2セクタを書込む操作の速度を早くする。これによって、2セクタをプログラミングすることに関連するタスクのパイプライン処理を効果的に導入し、従って、セクタ情報の書込み操作時間を低減する。
【0045】
バス242は、さまざまな時に異なる情報と結合され、このような情報は、図4の上部の関連する部分に示される。図4の左側から見ると、300において示されるように、バス242は、セクタS0のコマンドおよびアドレスの情報を運び、この情報は、フラッシュデバイス200内にシフトされる。この場合のコマンドは、通常、ホストによって開始される書込みコマンドである。アドレス情報は、セクタ情報がプログラミングされるべき特定のセクタのアドレス(この場合、セクタS0のアドレス)である。コマンド/アドレス情報をシフトする間、その情報の各ビットは、フラッシュデバイス200内にシリアルにシフトされる。WE*信号が生じて「ロー」状態に変わると、情報のビットがシフトされる。その間に、FCE0*信号224は、ローに保たれて、シフトするためのフラッシュデバイス200を選択する。302において、セクタ情報(特に、典型的に512バイトのユーザデータ)、エラー訂正コード(ECC)情報、および潜在的に他のセクタオーバーヘッド情報は、一度に8ビットずつ、フラッシュデバイス200内のS0にシフトされる。この場合も、WE*のローに変わるパルスのシリーズは、フラッシュデバイス200内へのセクタ情報のシフトを達成し、FCE0*信号224は、フラッシュデバイス200をイネーブルにするために「ロー」のままである。
【0046】
304において、書込みコマンドが開始され、WE*信号が生じるとロー状態からハイ状態に変わり、FCE0*信号224はハイ状態に変わり、Frdy/bsy0*信号228はロー状態に変わる。従って、フラッシュデバイス200内へのセクタ情報の実際のプログラミング(または、書込み)が開始される。このプログラミングは、S0セクタ情報のものであり、S0セクタ情報は、図3におけるフラッシュデバイス200のブロック0の第1のセクタである。発明者の経験により、512バイトのセクタユーザデータおよび12バイトのECC情報のプログラミングに必要な時間は約200μ秒であり、シフト操作および書込みコマンドの開始操作は、約30μ秒を消費する。セクタ情報がフラッシュデバイス内にシフトされる場合、セクタ情報はまだプログラミングされておらず、むしろ、セクタ情報は、一時的保持レジスタ内に配置され、そこでプログラミングを待つが、セクタ情報がフラッシュデバイスに書き込まれる場合、後者の場合のセルは実際にプログラミングされる。さらに、フラッシュデバイスのプログラミングは、対応するFrdy/bsy*信号が「ロー」状態の場合に行われる。
【0047】
書込み開始操作の最後である304において、FCE0*信号224は、コントローラデバイス14によって「ハイ」状態にされて、フラッシュデバイスに書込まれている現在のセクタ情報の前に任意の新しいセクタ情報がシフトすることを防止する。フラッシュデバイス200が書込まれている間、FCE1*信号226は、306においてロー状態にされ、WE*パルスシリーズの生成によって、コマンドおよびアドレスの情報は、フラッシュデバイス202内のセクタS1にシリアルにシフトされる。次いで、308において、セクタ情報、すなわち512バイトのユーザデータおよび12バイトのECCは、WE*パルスシリーズの生成によって、フラッシュデバイス202内にシフトされる。FCE1*信号226は、このシフトプロセスのために、ローのままである。S1のシフト操作および書込みコマンドの開始操作(310)もまた、約30μ秒を消費する。S1セクタ情報のシフトは、フラッシュデバイス200のセクタS0内にセクタ情報がプログラミングされる間に行われると留意することは重要である。基本的に、これによって、30μ秒のシフト時間を見えなくする。なぜならば、セクタ情報のシフトが、別のフラッシュデバイス内へのセクタ情報の書込みと平行してかまたは同時に行われるからである。従って、本発明において、32セクタを有するスーパーブロックへの書込みは、最初の2セクタをプログラミングするために、30+30+200μ秒すなわち260μ秒を消費し、その後、最初のシフトの後にセクタの1つをシフトする時間は常に見えないので、230μ秒のみを消費する。当業者に理解されるように、本発明によって、書込み操作時間は、データバスを2倍にする必要がなく、従ってコントローラデバイスにピンカウントを追加する必要なく、低減される。つまり、本発明において、8ビットのデータバスが使用される。一方で、書込み操作時間に関して従来技術が提供する最善のシナリオは、16ビットのデータバスを必要とする。さらに、本発明において、スーパーブロックは、2つより多くのブロックまたは32セクタを含み得、この場合も同様に、データバスに関する必要なピンの数は同じままであり、書き込み操作時間の改善も同じままである。つまり、従来技術において、2セクタの書込み操作時間が230μ秒を得るために、32ビットのデータバスが必要であるが、データバスのピンカウントを8ビットより多くに増加させる必要なく、本発明によって同じ書込み操作時間が達成される。実際、各スーパーブロックに対するブロックの数が増加し、より多くのフラッシュデバイスが並列にプログラミングされるにつれて、本発明による利点は増大する。十分なフラッシュデバイスが並列に配置されると、必要とされる余分なデータバスピンを配置する十分な空間がなくなるので、余分なデータバスラインを使用する従来技術システムの方法および技術は非実用的になる。
【0048】
いくつかの従来技術の手法において、30+30+200+200μ秒または460μ秒の書込み時間が必要であり、上記において十分に説明されたような、230μ秒が達成され得る特定の他の従来技術において、本発明の待ち時間をはるかに越える待ち時間の遅れがあり、その結果、前者による書込み性能を低減する。繰り返して言うと、後者の従来技術の手法は、各ブロックの書込み操作の前に、ブロックのセクタが、バッファ内に格納されることを必要とする。ブロックが32セクタである場合、4セクタをプログラミングすることを想定して、全4セクタがバッファ内に格納される必要があり、これは、バッファの大きさが、本発明が必要とする大きさより大きいことを必要とし、その結果、従来技術のシステムの製造コストを増加させる。さもなければ、情報の2セクタのみがバッファ内に格納される場合、後者のプログラミングが開始され得る前に、ホストが次の2セクタをバッファ内に提供し、コントローラがそれらをバッファ内に格納するのを待たなければならないことに関連する実質的な遅れがある。これによって、2セクタの書込み操作に関連する時間を230μ秒以上に実質的に長くする。これは、部分的に、従来技術の方法および装置が、セクタ(コマンド、アドレス、データ、およびECC)のシフト時間を隠すことができないからである。
【0049】
引き続き、図4を参照すると、310において、S1の書込みコマンドが開始されることによって、WE*信号がローに変わる。WE*信号がまたハイに変わることによって、Frdy/bsy1*230がローに変えられて、その結果、フラッシュデバイス202のセクタS1内へのセクタ情報のプログラミングが開始される。この場合も同様に、後者のプロセスは、512バイトのセクタに対して200μ秒を消費する。Frdy/bsy1*は、約200μ秒の間、ローのままである。従って、セクタS0およびS1に書込むためのプログラミング時間の総計は、230μ秒である。余分な30μ秒が、第1のセクタ情報のシフトに関連するので、最初の2セクタ(この場合、セクタS0およびS1)のシフトおよびプログラミングが必要とするのは、260μ秒のみである。それ以降、2セクタのシフトおよびプログラミングは、230μ秒のみを必要とする。なぜならば、まもなく明らかになるように、セクタの1つをシフトすることが、もう1つのセクタの書込み時間内に隠されているからである。最初の印象では、最初の2セクタの書込み操作時間、すなわち260μ秒は、上記で説明されたいくつかの従来技術のシステムのいくつかに関連する書込み操作時間よりも長く見えるが、実際には、本発明の使用により、プログラミングは全体的に低減する。これは、シフトおよび書込みの時間が開始される前にバッファ内に格納するために、コントローラと同時にプログラミングされるべきセクタをホストに送らせるという従来技術システムの要件が原因である。従って、ホストが上記を完了する間、書込みプロセスは保留となり、通常、ホスト書込み操作が遅いことは公知であり、従って、セクタのプログラミング全体に関連する時間は増加する。しかし、本発明において、初めて2セクタが書込まれる場合を除いて、任意の2セクタの書込みを開始する前に、ホストが予め必要な数のセクタを提供するのを待つ必要はない。つまり、最初は、ホストは、バッファ内への格納のために、コントローラに情報の2セクタを提供する必要がある。それ以降、ホストは、他のセクタがプログラミングされている間にセクタ情報を提供し得る。高速ホストを使用するシステムにおいて、本発明と従来技術との間のこの差は、強調される効果を有さないかもしれないと留意されるべきである。しかし、コスト制限が部分的な原因となって通常は、より遅いホストが使用される。このようなシステムにおいて、この差は、よく留意されている。
【0050】
図4において、312、314、および316において、セクタS2について行われるということを除いて、上記で説明された方法とほとんど同じ方法によって、コマンドおよびアドレスの情報がフラッシュデバイス200内にシリアルにシフトされ、セクタ情報がフラッシュデバイス200内にシフトされて、書込みコマンドが開始される。図3において、フラッシュデバイス200のブロック0内の第2のセクタとして、S2が示される。314におけるセクタ情報のシフトは、フラッシュデバイス202のセクタS1内にセクタ情報を書き込む間に行われる。この場合も同様に、これによって、セクタ情報のシフトに関連する時間が隠されて、従って、このセクタの書込み時間を約30μ秒だけ低減させる。より大きなセクタ(512バイトよりも大きなセクタ)に関して、時間がさらに短縮される。
【0051】
316において書込みコマンドの開始を完了し、WE*信号がローからハイに変わると、Frdy/bsy0*信号228がロー状態に変えられ、その後の約200μ秒の間にセクタ情報がフラッシュデバイス200内にプログラミングされるように、S2セクタ内へのセクタ情報のプログラミングが開始される。次いで、318において、セクタS3のコマンドおよびアドレスの情報が、フラッシュデバイス202内にシリアルにシフトされる。320において、セクタ情報は、フラッシュデバイス202内にシフトされる。前述のように、これらのシフト操作は、S2セクタ内へのセクタ情報の書込みと共に起こり、セクタ情報、コマンド、およびアドレスのシフトに関連する時間が、書込み操作の全体に対して、隠されるか、または見えなくされる。従って、プロセスは、プログラミングされるようにホストによって命令されたすべてのセクタが、そのようにプログラミングされるまで続く。プロセスは、セクタS4およびS5についても、同じ方法で続けられる。
【0052】
本発明において、ホストが1つのセクタのセクタ情報を提供し、そのセクタ情報がバッファ内に格納されるとすぐに、コントローラ14がセクタ書込み操作を開始すると理解される。従って、従来技術のシステムが必要とするように、書込み操作が開始される前に、情報の2つ以上のセクタがホストから送られてくるのを待つ必要はない。従って、書込みの前に、ホストが2つ以上のセクタ情報を提供するのを待つことによって生じる遅れは、本発明によって低減される。
【0053】
図5は、本発明の別の実施形態のタイミング図を示し、ここで、全てのフラッシュデバイスに対して1つのFrdy/bsy*信号が使用される。さらに、本発明の別の局面において、セクタをプログラミングする際の、1つ以上のエラーの発生を知らせるために割り込み信号が使用される。後者の場合、フラッシュセルのプログラミングに関連する感度が原因となり、通常、読取り照合(read−verify)操作は、セクタのプログラミングが成功したことを確定するために、セクタがプログラミングされる度に実行されると理解されるべきである。従来技術のシステムにおいて、割り込み信号が使用されないため、セクタの書込み操作が完了した後、プログラミングされていたセクタを含むフラッシュデバイスは、フラッシュデバイスをプログラミングする際にエラーが生じたかどうかを判定するためにポーリングされる必要がある。これは、書込み操作全体に対する追加の工程であり、割り込み信号の使用によって、基本的に消去される。
【0054】
図5において、Frdy/Bsy0*信号227のタイミングが示される。この信号は、複数のFrdy/Bsy信号(各フラッシュデバイスに対して1つ)の使用に取って代わり、全てのフラッシュデバイスによって共有される。従って、信号227は、第1のセクタ、すなわちS0のステア書込みコマンド(stare write command)504の後にローに変わり、フラッシュデバイスがプログラミングされている間中、ローのままである。前述の実施形態のように、プログラミングされているセクタの内の1つのセクタ情報をシフトすることは、他のセクタをプログラミングしている間に行われる。しかし、他のFrdy/bsy*信号が使用されないため、信号227は、全てのセクタをプログラミングする間中、ローのままであり、これは、図4に関して説明した時間と同じ時間、すなわち、2セクタをプログラミングするための230μ秒、および最初の2セクタをプログラミングするための260μ秒だけかかる。
【0055】
INTQ*信号229がフラッシュデバイスによって展開される。信号229は、メモリユニット16(図2に示す)の全てのフラッシュデバイスに接続されているオープンコレクタ信号である。任意のフラッシュメモリデバイスによってエラーが検出される場合、すなわち、プログラミングされたセクタ情報とプログラミングされるはずだったセクタ情報との間に不一致がある場合、信号229は、アクティブ状態にされ(この場合、アクティブ状態は論理「ロー」である)、コントローラデバイス14への入力として機能して、フラッシュデバイスをプログラミング中に生じ得た任意のエラーを後者に知らせる。従来技術のシステムにおいて、前述のように、セクタがプログラミングされた後は毎回、正確を期して、プログラミングされたセクタを含むフラッシュデバイスをチェックする。これは、所定のステータスレジスタの状態をチェックすることにより行われる。
【0056】
実際、フラッシュデバイスは、読取り照合操作を実行し、ここで、セクタ内でプログラミングされた情報が読み返され、その後、読取りステータス(read
status)コマンドがコントローラによって実行される。この読取り情報が、プログラミングされたものと一致しない場合、エラーが検出される。従来技術のシステムにおいて、書込み操作のステータスは、読取りステータス操作中にステータスレジスタをチェックすることによりポーリングされて、各セクタ書込み操作の後、セクタをプログラミングする際に問題があったかどうかを判定する(これらの時間は図5に示す)。しかし、本発明の一実施形態によって、INTQ*信号229は、ステータス情報をポーリングする必要性を消去する。なぜならば、読取り照合操作が、読取りセクタとプログラミングされるはずだったセクタとの間の不一致を報告する場合、信号299がアクティブになって、コントローラにエラーを知らせるからである。この点において、本発明の一実施形態は、マイクロプロセッサ24(図2に示す)によって実行されるタスクを減少させる。なぜならば、従来技術のシステムにおいて、プログラミングエラーを見つけるために、マイクロプロセッサがステータスレジスタをチェックするからである。従って、本発明は、マイクロプロセッサを他の機能に貢献可能にすることにより、システムの全体的な性能を効果的に改善する。
【0057】
本発明は、特定の実施形態に関して説明されたが、当業者に本発明の改変および変更がおそらく明らかであることが予想される。従って、下記の請求の範囲は、本発明の真の精神および範囲内にあるような改変および変更を全て含むと解釈されることを意図する。

【特許請求の範囲】
【請求項1】
ブロックに分けられた不揮発性メモリ内の格納位置内に、ホストにより提供されたセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有し、
該不揮発性メモリシステムは、
特定のスーパーブロックの第1のブロックの第1のセクタにセクタ情報をシフトさせるコントローラであって、該コントローラはさらに、該特定のスーパーブロックの第2のブロックの第1のセクタにセクタ情報をシフトさせ、該特定のスーパーブロックの該第1のブロックの該第1のセクタにセクタ情報を書き込む、コントローラを備え、
該第1のブロックの該第1のセクタへの書込み中に、該第2のブロックの該第1のセクタへのシフト全体が起き、
該第1のブロックの該第1のセクタおよび該第2のブロックの該第1のセクタに対するセクタ情報のシフトは、該ホストが該セクタ情報を提供した直後に起きる、不揮発性メモリシステム。
【請求項2】
前記コントローラが、前記不揮発性メモリからのFrdy/bsy信号を受け取り、該Frdy/bsy信号がアクティブであるときに、前記特定のスーパーブロックの前記第2のブロックへのセクタ情報の書込みを引き起こす、請求項1に記載の不揮発性メモリシステム。
【請求項3】
前記コントローラが、第1のフラッシュデバイスと第2のフラッシュデバイスとに接続され、該第1のフラッシュデバイスおよび該第2のフラッシュデバイスは不揮発性メモリユニットに含まれる、請求項1に記載の不揮発性メモリシステム。
【請求項4】
前記第1のフラッシュデバイスが、前記特定のスーパーブロックの前記第1のブロックを含み、前記第2のフラッシュデバイスが、該特定のスーパーブロックの前記第2のブロックを含む、請求項3に記載の不揮発性メモリシステム。
【請求項5】
前記特定のスーパーブロックの前記第1のブロックおよび前記第2のブロックが、前記第1のフラッシュデバイスおよび前記第2のフラッシュデバイスと同様の位置関係にある、請求項4に記載の不揮発性メモリシステム。
【請求項6】
ブロックに分けられた不揮発性メモリに、ホストにより提供されたセクタ情報を書き込む方法であって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有し、
該方法は、
特定のスーパーブロックの第1のブロックの第1のセクタにセクタ情報をシフトさせることと、
該特定のスーパーブロックの第2のブロックの第1のセクタにセクタ情報をシフトさせることと、
該特定のスーパーブロックの該第1のブロックの該第1のセクタにセクタ情報を書き込むことであって、該第1のブロックの該第1のセクタへの書込み中に、該第2のブロックへとシフトさせるステップ全体が起きる、ことと
を含み、該第1のブロックの該第1のセクタおよび該第2のブロックの該第1のセクタに対するセクタ情報のシフトは、該ホストが該セクタ情報を提供した直後に起きる、方法。
【請求項7】
ブロックに分けられた不揮発性メモリ内の格納位置内に、ホストにより提供されたセクタ情報を格納する不揮発性メモリシステムであって、複数のブロックがスーパーブロックを規定し、各ブロックが所定の複数のセクタを有し、
該不揮発性メモリシステムは、
特定のスーパーブロックにセクタ情報を書き込むコントローラであって、該セクタ情報の書込みが成功したか否かを示す、該不揮発性メモリからの割込み信号に応答するコントローラを備え、
該割込み信号が、ステータス情報のポーリングを回避し、それにより、セクタ情報の書込みを行うことに関連する時間を減少させ、
該コントローラがさらに、特定のスーパーブロックの第1のブロックの第1のセクタにセクタ情報をシフトさせ、該コントローラがさらに、該特定のスーパーブロックの第2のブロックの第1のセクタにセクタ情報をシフトさせ、該特定のスーパーブロックの該第1のブロックの該第1のセクタにセクタ情報を書き込み、該第1のブロックの該第1のセクタへの書込み中に、該第2のブロックの該第1のセクタへのシフト全体が起き、該第1のブロックの該第1のセクタおよび該第2のブロックの該第1のセクタに対するセクタ情報のシフトは、該ホストが該セクタ情報を提供した直後に起きる、不揮発性メモリシステム。

【図1】
image rotate

【図1a】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図4a】
image rotate

【図4b】
image rotate

【図5】
image rotate

【図5a】
image rotate

【図5b】
image rotate


【公開番号】特開2010−152913(P2010−152913A)
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願番号】特願2010−31847(P2010−31847)
【出願日】平成22年2月16日(2010.2.16)
【分割の表示】特願2001−522164(P2001−522164)の分割
【原出願日】平成12年8月25日(2000.8.25)
【出願人】(300005057)レクサー・メディア・インコーポレイテッド (13)
【氏名又は名称原語表記】Lexar Media,Inc
【Fターム(参考)】