(57)【特許請求の範囲】
【請求項１】
フラッシュメモリストレージシステムであって、
メモリコントローラと、
フラッシュメモリモジュールと、
前記フラッシュメモリモジュールのデータ蓄積操作に優先順位を設定するバックエンドマネージャと、を備え、
前記バックエンドマネージャは、
前記フラッシュメモリモジュールに求められる１群の前記データ蓄積操作を解析するように構成され、かつ
ホストコマンドの優先順位が前記システムの内部操作より低いか否かを判断し、また前記ホストコマンドを正常に実行するにあたって前記ホストコマンドにガーベッジコレクションが必要でないか否かを判断し、前記ホストコマンドの優先順位が低く、またガーベッジコレクションが必要でないと判断した場合には、前記内部操作の少なくとも一部分を前記ホストコマンドより前に実行するように構成されるフラッシュメモリストレージシステム。
【請求項２】
請求項１記載のシステムにおいて、
前記バックエンドマネージャは、前記システムのファームウェアを備えるシステム。
【請求項３】
請求項１記載のシステムにおいて、
前記バックエンドマネージャは、状態マシンを備えるシステム。
【請求項４】
フラッシュメモリストレージシステムでデータ蓄積操作を処理する方法であって、
前記フラッシュメモリストレージシステムに求められる１群の前記データ蓄積操作を解析するステップと、
ホストコマンドの優先順位が前記システムの内部操作より低いか否かを判断し、また前記ホストコマンドを正常に実行するにあたって前記ホストコマンドにガーベッジコレクションが必要でないか否かを判断し、前記ホストコマンドの優先順位が低く、またガーベッジコレクションが必要でないと判断した場合には、前記内部操作の少なくとも一部分を前記ホストコマンドより前に実行するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、一般的にはフラッシュメモリの操作に関し、より具体的には内部操作とホストから受信されるコマンドで調整を図ることに関する。
【背景技術】
【０００２】
ホストはフラッシュメモリカードまたはドライブ等の不揮発性メモリシステムに情報を蓄積する。このため、ホストから受信されるコマンドは速やかに処理するべきであり、通常ならばシステム内で発生する他の操作より優先する。
不揮発性メモリストレージシステムは、メモリでデータを管理するための操作または命令を受信、送信、もしくは発行する。不揮発性メモリストレージシステムによって受信もしくは発行されるメモリ操作のほとんどは直ちに実行される。しかし、種々のタイミング制限のため（例えば、初期化タイムアウト、書き込みコマンドタイムアウト制限、およびその他のタイミング制限）、メモリ操作を完全に実行するにあたって十分な時間を確保できないことがある。その結果、メモリ操作の実行は次の使用可能なタイムスロットまで延期されたり、メモリ操作が次回トリガされるまで無視されたりすることがある。ガーベッジコレクション操作は、メモリシステムのデータを管理し、その信頼性を保証するため、（ホストによって起動されるのではなく）内部で起動される操作である。このような操作は、コントローラおよび／またはシステムファームウェアによって起動される。
【０００３】
現在、メモリ操作は不揮発性メモリストレージシステムのランダムアクセスメモリ（ＲＡＭ）に一時的に蓄積される。しかし、ＲＡＭは、延期される各種メモリ操作を１種類ずつしか蓄積しないように構成されている。例えば、不揮発性メモリストレージシステムで１つのブロックを再生する必要があって、その結果、ガーベッジコレクション操作をトリガする場合には、そのガーベッジコレクション操作をＲＡＭに蓄積し、後ほど実行するように延期できる。その一方で、不揮発性メモリストレージシステムで２つのブロックを再生する必要がある場合には、それら再生に関連するガーベッジコレクション操作が両方ともＲＡＭに蓄積されるわけではない。さらに、停電が発生するとＲＡＭに蓄積された情報が失われ、メモリ操作は次回のトリガまで実行されない。そのような情報損失はアクセスエラーを招き、不揮発性メモリストレージシステムの信頼性を損なうおそれがある。このため、不揮発性メモリストレージシステムにおける蓄積とメモリ操作処理の改善に向けて継続的な取り組みがなされている。
【発明の概要】
【０００４】
本発明の各種実施形態は、ホストコマンドとメモリシステム内部操作の包括的かつ一元的管理を通じてメモリシステムの使用効率を向上させる。
一態様は、内部操作とホストコマンドを一元化する優先順位方式を含む。タスクは優先順位に従って処理されるが、これは、場合によってはホストコマンドが直ちに処理されないことを意味する。ホストコマンドを受信するときに既に進行中の操作があって、これを続行することが効率的ならば、続行する。状況次第ではホストコマンドをいくぶん遅延することもある。システムは、一実施形態において、操作の実行中であってもホストに対してアイドル状態を示す可能性がある。
他の態様は、リソースがメモリの利用率に基づいて割り当てられる、適応型スケジューリングシステムに関する。
【図面の簡単な説明】
【０００５】
【図１Ａ】不揮発性メモリストレージシステム１０２の一実施形態のブロック図である。
【図１Ｂ】システムのバックエンドのフラッシュメモリアレイによる処理を要する種々のエンティティのブロック図である。
【図２】システムの操作管理のフローチャートである。
【図３Ａ】一般的な操作タイプとその優先順位の表である。
【図３Ｂ】操作の説明とその優先順位の表である。
【図４】ホストコマンド処理の一態様を示すフローチャートである。
【図５】適応型操作スケジューリングを示すフローチャートである。
【図６】ホスト遅延対書き込みキャッシュ利用率の一実施形態のグラフである。
【発明を実施するための形態】
【０００６】
図１Ａは、本発明の一実施形態による不揮発性メモリストレージシステムの一例の簡略ブロック図である。ホストシステム（例えば、デスクトップコンピュータ、オーディオプレイヤ、デジタルカメラ、携帯電話機、およびその他の計算装置）は、不揮発性メモリストレージシステム１０２でデータを読み書きできる。不揮発性メモリストレージシステム１０２はホストに内蔵されることもあれば、取り外し可能にホストに接続されることもある。図１Ａに見られるように、不揮発性メモリストレージシステム１０２はメモリ１１８と通信するメモリコントローラ１１０を含む。通常はメモリコントローラ１１０がメモリ１１８の動作を制御する。
【０００７】
メモリコントローラ１１０は、ホストインターフェイス１０４を通じてシステムバス１２６に接続するバス１２４を含む。メモリコントローラ１１０はさらに、メモリインターフェイス１０８を通じてメモリ１１８に接続する。ホストインターフェイス１０４と、プロセッサ１０６（例えば、マイクロプロセッサ、マイクロコントローラ、およびその他のプロセッサ）と、メモリインターフェイス１０８と、ランダムアクセスメモリ（ＲＡＭ）１１２と、誤り訂正符号（ＥＣＣ）回路１１４と、読み出し専用メモリ（ＲＯＭ）１１６とは、バス１２４経由で通信する。ＲＯＭ１１６にはストレージシステムファームウェアを蓄積でき、このストレージシステムファームウェアはメモリ１１８の動作を制御するプログラム命令を含む。プロセッサ１０６は、ＲＯＭ１１６か不揮発性メモリセルアレイ１２２からロードされたプログラム命令を実行するように構成される。ＲＡＭ１１２にはストレージシステムファームウェアを一時的にロードできるほか、ホストとメモリ１１８との間で転送されるデータをバッファするために使用することもできる。ＲＡＭ１１２はさらに、メモリ操作のキュー１３１を蓄積するように構成できる。ＥＣＣ回路１１４は、ホストおよびメモリ１１８間でメモリコントローラ１１０を通過するエラーをチェックできる。ＥＣＣ回路１１４は、エラーが見つかる場合に多くのエラービットを訂正できるが、訂正されるエラービット数は使用するＥＣＣアルゴリズムによって異なる。
【０００８】
メモリ１１８は、アレイロジック１２０と不揮発性メモリセルアレイ１２２とを含み得る。不揮発性メモリセルアレイ１２２は様々な不揮発性メモリ構造・技術を含んでもよい。不揮発性メモリ技術の例として、フラッシュメモリ（例えば、ＮＡＮＤ、ＮＯＲ、シングルレベルセル（ＳＬＣ／ＢＩＮ）、マルチレベルセル（ＭＬＣ）、分割ビット線型ＮＯＲ（ＤＩＮＯＲ）、ＡＮＤ、高容量結合比（ＨｉＣＲ）、非対称非接触型トランジスタ（ＡＣＴ）、およびその他のフラッシュメモリ）、消去可能でプログラム可能な読み出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、読み出し専用メモリ（ＲＯＭ）、一度だけプログラム可能なメモリ（ＯＴＰ）、およびその他のメモリ技術が挙げられる。メモリ操作のキュー１３０は、ＲＡＭ１１２のほかに不揮発性メモリセルアレイ１２２に蓄積することもできる。
【０００９】
さらに、アレイロジック１２０はメモリコントローラ１１０を不揮発性メモリセルアレイ１２２に接続し、例えばアドレシングやデータ転送・感知等のサポートを不揮発性メモリセルアレイに提供できる。不揮発性メモリセルアレイ１２２をサポートするため、アレイロジック１２０は、行デコーダ、列デコーダ、電荷ポンプ、ワード線電圧生成器、ページバッファ、入出力バッファ、アドレスバッファ、およびその他の回路を含んでもよい。
【００１０】
図１Ｂは、システムによる操作処理を示す。このようなシステムは一般的に、電力・クロック設定や対ホスト通信等、ホストの詳細を処理する「フロントエンド」と、フラッシュメモリモジュール自体をなす「バックエンド（「ＢＥ」）」とを有するとしばしば言われている。
メモリコントローラはしばしば、バックエンドとは無関係の作業に追われてビジー状態になる。フラッシュメモリはそのような場合にアイドル状態ではなく、操作を実行できる。例えば、メモリコントローラはＭＰ３の歌を再生したり、他の何らかのアプリケーションを実行したりできる。この場合、コントローラはホストへの応対に追われるが（歌のストリーミングや、そうでなければアプリケーションの実行）、ＢＥはアイドル状態である。この場合は、バックエンドがアイドル状態のときに、ハウスキーピング操作を実行するのが好ましい。そうすれば応答時間が短縮し、それによってシステム性能が向上する。
【００１１】
概して、ＢＥのアイドル時間は本発明の実施形態により有効利用される。ホストコマンドの合間もアイドル時間に含まれてもよい。アイドル時間は一般的に、フラッシュメモリモジュールがホストコマンドの処理に使われていない時間を指す。
例えば書き込みコマンドのときには、ホストがメモリコントローラへデータを送信している間に、システムはバックグラウンド（ＢＥフラッシュメモリ）でハウスキーピング操作を実行し続けることができる。読み出しコマンドのときには、ホストが内部バッファ（例えば、メモリコントローラ内のバッファ）からデータを読み出している間に、システムはフラッシュメモリでハウスキーピング操作を開始もしくは再開できる。
【００１２】
メモリコントローラは、フラッシュメモリモジュールが関与しないフロントエンド関係の操作を実行することもあれば、バックエンドのフラッシュメモリモジュールに関係する操作を実行することもある。これは「バックエンド」および／または「フロントエンド」の一部とみなすことができる。バックエンドマネージャ（「ＢＥＭ」）１５０は、バックエンドインターフェイス１４６とＢＥグローバルスケジューラ１４４とを備える。ＢＥインターフェイス１４６がメモリ１２２の詳細に適合することにより、ＢＥグローバルスケジューラ（「ＢＥＳ」）１４４は構成／タイプが異なる様々なメモリ１２２を扱うことができる。ＢＥＳ１４４は、メモリコントローラによって実行されるファームウェアとして、および／または状態マシン内のハードロジック等として、実装できる。
一般的にはＢＥＭ１５０が、より具体的にはＢＥＳ１４４が、メモリ１２２の操作のスケジューリングと処理を制御する。制御線１４２ではＢＥＳ１４４によって制御信号が送受される。データバス１４８ではバックエンドインターフェイス１４６によってデータが送受信される。データバス１４８は、図１Ａおよび図１Ｂのバス１２４および１２６と制御線１４２の全部または一部をなすことがある。
【００１３】
ホストコマンド１３４と、内部アプリケーション操作１３６と、ハウスキーピング操作１３８と、書き込みキャッシュバッファ（「ＷＣＢ」）内の保留項目１４０はどれもＢＥＳ１４４によって管理される。ＷＣＢは一実施形態においてフラッシュメモリアレイの一部であり、例えばキャッシュとして使用されるブロックであり、書き込みバッファブロック（「ＷＢＢ」）と呼ぶこともある。ＷＣＢは別の実施形態において、通常のランダムアクセスメモリキャッシュであってもよい。内部アプリケーション操作１３６は、アプリケーションがメモリシステムの基本的機能を増強するための操作であり、随時システムにロードされ得る。このようなアプリケーションファームウェアは、システムのオペレーティングファームウェアとは別のファームウェアである。例えばパスワード管理アプリケーションやホームバンキングソフトウェアアプリケーションをメモリカードに加えることができ、そのような内部アプリケーション（ホストアプリケーションと対照的）はバックエンドによる処理を要する。
【００１４】
図２は、コマンド処理の一実施形態を示すフローチャートである。メモリシステムは様々な形態をとり得るが、簡潔さを図るため、これ以降はメモリカードと呼ぶ場合がある。本発明によるメモリカードは、ホストコマンドの合間を利用して別の操作を実行する。従来のシステムでは、操作が発生すると、カードがビジー状態を示す。しかし、この実施形態のカードは、ステップ２０４に示すように、バックグラウンドで操作を実行していてもアイドル状態を示す。ステップ２０８で受信されるホストコマンドは、ステップ２１２でバックエンドスケジューラ１４４へ送信される。ステップ２１６では、既にバックグラウンドでコマンドまたは操作が実行されている場合に、ＢＥＳ１４４がステップ２０８で受信したホストコマンドの優先順位を実行中のコマンドまたは操作と比較する。
【００１５】
ステップ２１６の比較が行われている間に、ステップ２２０に示すようにビジー信号がアサートされる。これと同時に、ＢＥスケジューラはステップ２２８に示すように目下のコマンドまたは操作の実行が完了するまで時間を測定する。あるいはＢＥスケジューラは実行が完了するまで待つのではなく、時間の上限もしくは時間枠を設ける。この場合、時間枠の中で経過時間を測定するか、あるいは上限に達するまで経過時間を測定する。
ステップ２２４に見られるように、カードはここで優先順位が最も高い活動を実行するが、これがホストコマンドになるとは限らない。例えばハウスキーピングコマンドの優先順位が受信したコマンドより高ければ、ハウスキーピングコマンドが続行し得る。
【００１６】
前述したように、一部の実施形態ではＢＥＭ１５０が操作の優先順位に従って操作を処理する。図３Ａおよび図３Ｂにそれぞれ複製された以下の表Ａおよび表Ｂには、操作の優先順位が線引きされている。表Ａは、一般的な操作タイプに対応する優先順位を概括的に示している。従来のシステムでは通常、ホストコマンド（ホストコマンドを正常に処理するにあたって必要とされるハウスキーピング操作を含む）が直ちに処理されるが、このシステムでは、ホストコマンドに先立ち既に実行中のハウスキーピング操作を完了させ、ホストコマンドとは無関係かホストコマンドに必要のないハウスキーピングコマンド等、特定のハウスキーピングコマンドを処理したほうがしばしば効率的であると判断する。これ以外のハウスキーピングコマンドの優先順位は低く、ホストコマンドの優先順位は、このようなハウスキーピングコマンドまたは操作より高い。
【表Ａ】
0005449152.tif 000002
【００１７】
表Ｂに示す例示的な優先度「００」から「０５」で、「００」は最も高い優先順位であり、「０５」は最も低い優先順位である。表Ａおよび表Ｂとは別の優先順位設定法を使用することもでき、カードの耐用年数にわたって優先順位を変えることもできることを理解するべきである。ＷＢＢから項目を片づけるクリーニング操作はよくある操作で、多数の優先順位が割り当てられる。例えば、ＷＢＢクリーニング等のハウスキーピング操作の優先度は「０２」から「０５」におよぶ。これとはタイプの異なるハウスキーピング操作にも様々な優先度を割り当てることができる。加えて、ホストコマンドにも異なる優先順位を割り当てることができる。これらの操作に割り当てられる優先順位も、書き込みバッファブロック１４０の利用率に応じて「０２」から「０５」の範囲で変化し得る。ＷＢＢの利用率を判断するには数多くの方法があるが、好ましくはＷＢＢ内の（有効）項目数をＷＢＢで保持できる総項目数に比較することによって判断する。換言すると、この方法による利用率は実際の項目数／項目容量となる。
【表Ｂ】
0005449152.tif 000003
【００１８】
図４は、操作処理を示すもうひとつのフローチャートである。ステップ４０４ではホストコマンドを受信する。システムは次のステップ４０８で、ステップ４０４で受信したホストコマンドがガーベッジコレクションやハウスキーピング操作を要するかあるいは作成するか否かを判断する。当該技術分野ではガーベッジコレクションとハウスキーピング操作が同じ意味で使われることもあるが、ガーベッジコレクションはハウスキーピング操作の一部と考えることができる。しかし、本願明細書では、当該技術分野において一般的であるように、これらの用語を互換的に使用する。ホストコマンドがガーベッジコレクションを要するかあるいは作成すると判断した場合には、ステップ４１６に見られるように、ホストコマンド（関連するガーベッジコレクション操作を含む）を直ちに処理する。しかし、必要なければ、ステップ４１２で優先順位に従い操作を処理する。例えば、表Ａおよび表Ｂの優先順位に従って操作を処理してもよい。
【００１９】
オーディオ／ビデオ等の高帯域アプリケーションの性能を高めることができる。ある種のアプリケーションは正常に作動するにあたって最低限の帯域幅を必要とする。例えばオーディオ／ビデオアプリケーションには最低限の帯域幅が必要であり、これに応じて通常ならばタイムアウトを予め設定しておく必要がある。したがって、長い操作は与えられた時間内に遂行できないことがある。そこで一実施形態では、システムによって実行されるアプリケーションに応じて操作のスケジューリングを変えられるようにする。これを適応型スケジューリングと呼ぶ。一実施形態では所定のタイムアウトに適合するため、長い操作、例えばＦＡＴ／ＤＩＲ更新により発生するガーベッジコレクションは、いくつかの短い操作に分割できる。こうすることでＳＤ  ＡＶ性能等級等、所与の製品の性能等級が向上し、ホスト側に要求されるバッファのサイズは抑えられる。
別の実施形態において、ＢＥＭ１５０がメモリの利用率に従い操作を処理する。こうすることで書き込みキャッシュが一杯になることはなく、必要なときに常に使用できる。
【００２０】
図５は、特定の適応型スケジューリングの実施形態またはプロセスのフローチャートを示す。ステップ５０４では、システムが書き込みキャッシュすなわちＷＢＢの利用率を評価する。前に述べたように、ＷＢＢはフラッシュメモリを利用する書き込みバッファの一種であり、ＷＢＢと記すが、どんなキャッシュメモリであれ利用率を見積もることができ、キャッシュメモリの一部分でも利用率を見積もることができる。ステップ５０８に見られるように、利用率が第１のしきい値を下回る場合には、着信ホストコマンドを遅延しない。しかし、ステップ５１２で利用率が第１のしきい値を上回り第２のしきい値を下回ると判断する場合には、ステップ５１６で着信ホストコマンドを遅延し、ステップ５２０では遅延されるホストコマンドにあてられた時間の中でハウスキーピングコマンドを実行する。しかし、ステップ５１２で利用率が第２のしきい値を上回ると判断する場合には、ハウスキーピング操作の実行に最大限の時間を配分する。
【００２１】
図６は、遅延もＷＢＢの利用率に従って変化し得ることを示している。図６に見られるように、ＷＢＢが満杯の５０％に満たなければ性能に支障はなく、ＷＢＢのクリーニングにあたってホストがストールすることはない。あらゆる作業はバックグラウンドで行われる（低優先順位）。ＷＷＢの利用率が５０％を超えるとホストコマンド処理は利用率に応じて上限に達するまで遅延され、その後には使用可能な時間枠の中でホストコマンドを片づける。図６は直線的な増加を示しているが、図は一例にすぎず、変化は直線的であるとは限らず、５０％以外のパーセンテージでも起こり得る。
【図１Ａ】
0005449152.tif 000004
【図１Ｂ】
0005449152.tif 000005
【図２】
0005449152.tif 000006
【図３Ａ】
0005449152.tif 000007
【図３Ｂ】
0005449152.tif 000008
【図４】
0005449152.tif 000009
【図５】
0005449152.tif 000010
【図６】
0005449152.tif 000011