(57)【要約】【課題】フラッシュメモリ中のデータを管理するハイブリッドドライブを提供すること。【解決手段】実施形態によれば、不揮発性半導体メモリ装置と磁気記憶装置とを含むハイブリッドドライブのブロックであって各々が複数のセクタを含むブロックを管理する方法は、不揮発性半導体メモリ装置のブロックに格納されたセクタの各々のデータタイプを追跡することと、データタイプに応じて不揮発性半導体メモリ装置のブロックから消去可能なブロックを集めることと、を具備する。データタイプは、ホストアクセスに無条件で利用可能なデータタイプである第１データタイプと、ホストアクセスに条件付きで利用可能なデータタイプである第２データタイプと、ホストアクセスに利用不可能なデータタイプである第３データタイプとを含む。消去可能なブロックは、第２データタイプのデータを含んでいるブロックを含む。【選択図】図３
2015215864.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリ装置と磁気記憶装置とを含むハイブリッドドライブのブロックであって各々が複数のセクタを含むブロックを管理する方法であって、
前記不揮発性半導体メモリ装置のブロックに格納されたセクタの各々のデータタイプを追跡することと、
前記データタイプに応じて前記不揮発性半導体メモリ装置のブロックから消去可能なブロックを集めることと、
を具備し、
前記データタイプは、ホストアクセスに無条件で利用可能なデータタイプである第１データタイプと、ホストアクセスに条件付きで利用可能なデータタイプである第２データタイプと、ホストアクセスに利用不可能なデータタイプである第３データタイプとを含み、
前記消去可能なブロックは、前記第２データタイプのデータを含んでいるブロックを具備する方法。
【請求項２】
前記消去可能なブロックは、
前記第３データタイプのセクタを含み、前記第１、第２データタイプのセクタを含まない第１タイプの消去可能なブロックと、
前記第２データタイプのセクタを含み、前記第１、第３データタイプのセクタを含まない第２タイプの消去可能なブロックと、
を具備する請求項１に記載の方法。
【請求項３】
前記集めることは、
前記不揮発性半導体メモリ装置のブロックから前記不揮発性半導体メモリ装置の第１の消去ブロックへ前記第１データタイプのセクタをコピーすることと、
前記不揮発性半導体メモリ装置のブロックから前記不揮発性半導体メモリ装置の第２の消去ブロックへ前記第２データタイプのセクタをコピーすることと、
を具備する請求項２に記載の方法。
【請求項４】
前記第１タイプの消去可能なブロックは、前記第１データタイプと前記第２データタイプの全てのセクタがブロックからコピーされた後、前記不揮発性半導体メモリ装置のブロックから集められる請求項３に記載の方法。
【請求項５】
前記不揮発性半導体メモリ装置の消去可能なブロックを消去することをさらに具備する請求項２に記載の方法。
【請求項６】
前記第２タイプの消去可能なブロックが消去される前に前記第１タイプの消去可能なブロックは消去される請求項５に記載の方法。
【請求項７】
前記消去可能なブロックは、
前記第３データタイプのセクタを含み、前記第１、第２データタイプのセクタを含まない第１タイプの消去可能なブロックと、
前記第２、第３データタイプのセクタを含み、前記第１データタイプのセクタを含まない組み合わせデータタイプの消去可能なブロックと、
を具備する請求項１に記載の方法。
【請求項８】
前記第２タイプの消去可能なブロックからデータを読むことと、
リードデータのサイズが予め定義されたサイズより大きい場合、前記第２タイプの消去可能なブロックを消去不可能なタイプとすることと、
をさらに具備する請求項１に記載の方法。
【請求項９】
前記第２タイプの消去可能なブロックからデータを読むことと、
リードデータのサイズが予め定義されたサイズ未満である場合、前記リードデータを消去不可能タイプである前記不揮発性半導体メモリ装置のブロックにコピーすることと、
前記消去可能なブロック中の１または複数のセクタを前記第３データタイプのデータを含んでいるとすることと、
をさらに具備する請求項１に記載の方法。
【請求項１０】
消去不可能タイプである前記不揮発性半導体メモリ装置のブロックにデータを書くことと、
異なるブロックの１または複数のセクタを第３データタイプのデータを含んでいるとすることと、
をさらに具備する請求項１に記載の方法。
【請求項１１】
それぞれが多数のセクタを含む複数のブロックに分割される不揮発性半導体メモリ装置と、
磁気記憶装置と、
前記不揮発性半導体メモリ装置のブロックに格納されたセクタの各々のデータタイプを追跡し、前記データタイプに応じて前記不揮発性半導体メモリ装置のブロックから消去可能なブロックを集めるコントローラと、
を具備し、
前記データタイプは、ホストアクセスに無条件で利用可能なデータタイプである第１データタイプと、ホストアクセスに条件付きで利用可能なデータタイプである第２データタイプと、ホストアクセスに利用不可能なデータタイプである第３データタイプとを含み、
前記消去可能なブロックは、前記第２データタイプのデータを含んでいるブロックを具備するハイブリッドドライブ。
【請求項１２】
前記消去可能なブロックは、
前記第３データタイプのセクタを含み、前記第１、第２データタイプのセクタを含まない第１タイプの消去可能なブロックと、
前記第２データタイプのセクタを含み、前記第１、第３データタイプのセクタを含まない第２タイプの消去可能なブロックと、
を具備する請求項１１記載のハイブリッドドライブ。
【請求項１３】
前記コントローラは、
前記不揮発性半導体メモリ装置のブロックから前記不揮発性半導体メモリ装置の第１の消去ブロックへ前記第１データタイプのセクタをコピーすることと、前記不揮発性半導体メモリ装置のブロックから前記不揮発性半導体メモリ装置の第２の消去ブロックへ前記第２データタイプのセクタをコピーすることとにより消去可能なブロックを集める請求項１２に記載のハイブリッドドライブ。
【請求項１４】
第１タイプの消去可能なブロックは、前記第１データタイプと前記第２データタイプの全てのセクタがブロックからコピーされた後、前記不揮発性半導体メモリ装置のブロックから集められる請求項１３に記載のハイブリッドドライブ。
【請求項１５】
前記コントローラは、前記不揮発性半導体メモリ装置の消去可能なブロックを消去する請求項１２に記載のハイブリッドドライブ。
【請求項１６】
前記第２タイプの消去可能なブロックが消去される前に前記第１タイプの消去可能なブロックは消去される請求項１５に記載のハイブリッドドライブ。
【請求項１７】
前記消去可能なブロックは、
前記第３データタイプのセクタを含み、前記第１、第２データタイプのセクタを含まない第１タイプの消去可能なブロックと、
前記第２、第３データタイプのセクタを含み、前記第１データタイプのセクタを含まない組み合わせデータタイプの消去可能なブロックと、
を具備する請求項１１に記載のハイブリッドドライブ。
【請求項１８】
前記コントローラは、
前記第２タイプの消去可能なブロックからデータを読み、
リードデータのサイズが予め定義されたサイズより大きい場合、前記第２タイプの消去可能なブロックを消去不可能なタイプとする請求項１１に記載のハイブリッドドライブ。
【請求項１９】
前記コントローラは、
前記第２タイプの消去可能なブロックからデータを読み、
リードデータのサイズが予め定義されたサイズ未満である場合、前記リードデータを消去不可能タイプである前記不揮発性半導体メモリ装置のブロックにコピーし、
前記消去可能なブロック中の１または複数のセクタを前記第３データタイプのデータを含んでいるとする請求項１１に記載のハイブリッドドライブ。
【請求項２０】
前記コントローラは、
消去不可能タイプである前記不揮発性半導体メモリ装置のブロックにデータを書き、
異なるブロックの１または複数のセクタを前記第３データタイプのデータを含んでいるとする請求項１１に記載のハイブリッドドライブ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はハイブリッドドライブ及び方法に関する。
【背景技術】
【０００２】
現状のフラッシュメモリ装置、例えばＮＡＮＤ型フラッシュメモリをハードディスクシステムに組み込むことは、回転するストレージへの移動を避けることができるので、性能の利点があるかもしれない。ホストのリードデータがフラッシュメモリに存在する場合、そのようなデータは、回転するストレージの代わりに、フラッシュメモリから速く戻すことができる。さらに、フラッシュメモリはそれ自体が永続的な記憶装置であるので、ホストのライトデータは、フラッシュメモリに早く委ねられ、ホストにアクノリッジされることができる。
【０００３】
しかしながら、フラッシュメモリの性能の利点は、ホストのリードデータがフラッシュメモリに存在する場合、あるいはホストのライトデータを受け付けるフリーブロックがある場合にのみ、利用可能である。したがって、性能の利点を実現するためには、フラッシュメモリ中のデータを管理するための技術が重要になる。フラッシュメモリの全容量を利用しない方法で管理技術が作動する場合、可能である性能の利点のうちのいくらかは実現されない。
【０００４】
フラッシュメモリを管理する重要な側面は、この種のメモリの動作特性を観察することを含んでいる。フラッシュメモリ装置は、リード動作及びライト動作のためには、５１２、２０４８、４０９６あるいはより多くのバイトのようなあるサイズのセクタとして組織され、ブロック内のライト動作が可能である前に必要な消去動作のためには、３２あるいは６４セクタのブロックとして組織される。さらに、フラッシュメモリ装置では、消去サイクルとライトサイクル（時々、プログラムサイクルとも称される）の数に制限がある。したがって、フラッシュメモリ装置の管理は、頻繁にアクセスされたデータをフラッシュメモリ装置に保存し、デスクシステムを利用してホストからの新たなライトデータを受け取るために消去ブロックを提供し、消去サイクルとライトサイクルの数を最小化することを試みるべきである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１１／０２５２１８１号明細書
【特許文献２】米国特許出願公開第２０１２／０３０３８６５号明細書
【特許文献３】米国特許出願公開第２０１０／０１８５８０４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のハイブリッドドライブにはフラッシュメモリの性能を十分に発揮していないという課題があった。
【０００７】
本発明の目的はフラッシュメモリ中のデータを管理するハイブリッドドライブ及び方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、それぞれが多数のセクタを含む複数のブロックに分割される不揮発性半導体メモリ装置と、磁気記憶装置とを具備するハイブリッドドライブの性能を改善するための方法とシステムが提供される。
【０００９】
ハイブリッドドライブの性能は、ブロックに格納されたセクタの各々のデータタイプを追跡し、データタイプに応じて不揮発性半導体メモリ装置のブロックから消去可能なブロックを集めることにより改善する。データタイプは、ホストアクセスに無条件で利用可能なデータタイプである第１データタイプと、ホストアクセスに条件付きで利用可能なデータタイプである第２データタイプと、ホストアクセスに利用不可能なデータタイプである第３データタイプとを含む。消去可能なブロックは、第２データタイプのデータを含むブロックであり、消去可能ではあるがホストがこのブロックからデータをアクセスすることができるブロックを含む。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態によるハイブリッドドライブの概略図である。
【図２】図２は、実施形態によるハイブリッドドライブを例証するブロック図である。
【図３】図３は、実施形態によるハイブリッドドライブの論理管理モジュールによってブロック管理テーブルを使用して行なわれたブロック管理を示す回路図である。
【図４】図４は、第１実施形態によるハイブリッドドライブ中のフラッシュメモリブロックを回復する方法のフローチャートである。
【図５】図５は、図４の方法に従って新しいブロックを得る方法のフローチャートである。
【図６】図６は、図４、図５の方法に従ってホストリクエストを扱うためのフローチャートである。
【図７】図７は、第２実施形態によってフラッシュメモリスペースを回復する方法のフローチャートである。
【図８】図８は、書き込みスループット、ブロック回復処理およびヒット率のための曲線のグラフである。
【発明を実施するための形態】
【００１１】
図１は１つの実施形態に従うハイブリッドドライブについての概略図である。明瞭さのため、ハイブリッドドライブ１００はトップカバー無しで例証される。ハイブリッドドライブ１００は、スピンドルモータ１１４によって回転し、複数の同心のデータ記憶トラックを含んでいる少なくとも１つの磁気ディスク１１０を含んでいる。スピンドルモータ１１４はベースプレート１１６にマウントされる。アクチュエーターアームアッセンブリ１２０もベースプレート１１６にマウントされる。アクチュエーターアームアッセンブリ１２０は、データ記憶トラックに対してデータをリード／ライトするリード／ライトヘッド１２７を伴い湾曲アーム１２２にマウントされたスライダー１２１を有する。湾曲アーム１２２は、ベアリングアッセンブリ１２６の周りを回転するアクチュエータアーム１２４に取り付けられている。
【００１２】
ボイスコイルモータ１２８は、磁気ディスク１１０に関してスライダー１２１を移動させて、それによって、磁気ディスク１１０の表面１１２に配置された所望の同心のデータ記憶トラックの上にリード／ライトヘッド１２７を位置決めする。スピンドルモータ１１４、リード／ライトヘッド１２７およびボイスコイルモータ１２８は、電子回路１３０に制御される。
【００１３】
電子回路１３０はプリント回路板１３２にマウントされる。電子回路１３０はリード／ライトチャネル１３７、マイクロプロセサに基づいたコントローラ１３３、ランダムアクセスメモリ（ＲＡＭ）１３４（それらはダイナミックＲＡＭであってもよく、データバッファとして使用される）、フラッシュメモリデバイス１３５およびフラッシュマネージャデバイス１３６を含んでいる。
【００１４】
いくつかの実施形態では、リード／ライトチャネル１３７およびマイクロプロセサに基づいたコントローラ１３３は、システム・オン・チップ１３１のようなシングルチップに含まれている。
【００１５】
いくつかの実施形態では、ハイブリッドドライブ１００は、モータドライバチップ１２５を含んでいてもよい。モータドライバチップ１２５は、マイクロプロセサに基づいたコントローラ１３３からコマンドを受信し、スピンドルモータ１１４およびボイスコイルモータ１２８の両方を駆動する。
【００１６】
明瞭さのため、ハイブリッドドライブ１００は、単一の磁気ディスク１１０および単一のアクチュエーターアームアッセンブリ１２０で例証される。ハイブリッドドライブ１００はさらに多数の磁気ディスクおよび多数のアクチュエータアームアセンブリを含んでいてもよい。さらに、磁気ディスク１１０の各面は湾曲アームに接続されるリード／ライトヘッドに関連してもよい。
【００１７】
データが磁気ディスク１１０に、あるいは磁気ディスク１１０から転送される場合、アクチュエーターアームアッセンブリ１２０は磁気ディスク１１０の外径（ＯＤ）と内径（ＩＤ）との間の弧を動く。アクチュエーターアームアッセンブリ１２０は、電流がボイスコイルモータ１２８のボイスコイルを通して１つの方向に流れると、１つの角度方向に加速し、電流が反転すると、反対の角度方向に加速し、よって、磁気ディスク１１０に関するアクチュエーターアームアッセンブリ１２０と、取り付けられているリード／ライトヘッド１２７の位置制御を許可する。
【００１８】
ボイスコイルモータ１２８は、特定のデータ記憶トラックの上にリード／ライトヘッド１２７の位置を決定するために、リード／ライトヘッド１２７によって磁気ディスク１１０のサーボウェッジから読まれたポジショニングデータを使用する周知のサーボシステムと接続される。サーボシステムは、ボイスコイルモータ１２８のボイスコイルを通して駆動するために適切な電流を決定し、および電流ドライバおよび関連する回路類を使用して、上記電流を駆動する。
【００１９】
ハイブリッドドライブ１００は、不揮発性データストレージが磁気ディスク１１０とフラッシュメモリデバイス１３５を含むハイブリッドドライブとして構成される。ハイブリッドドライブでは、フラッシュメモリデバイス１３５のような不揮発性のメモリは、電力消費量を低下するとともに、より速いブート、ハイバーネーション、リジューム、その他のデータリード・ライト動作を提供するために、回転する磁気ディスク１１０を補う。そのようなハイブリッドドライブ構成は、モバイルコンピュータあるいは他のモバイルコンピューティング装置のようなバッテリ駆動のコンピュータシステムには特に有利である。
【００２０】
実施形態では、フラッシュメモリデバイス１３５は、電気的に消去され再プログラムすることができ、そして、不揮発性の記憶媒体としてハイブリッドドライブ１００中の磁気ディスク１１０を補うサイズを有するＮＡＮＤフラッシュチップのような不揮発性の記憶媒体である。例えば、いくつかの実施形態では、フラッシュメモリデバイス１３５はＲＡＭ１３４より多い桁の記憶容量を有する（例えば、ギガバイト（ＧＢ）対メガバイト（ＭＢ））。
【００２１】
図２は、実施形態に従って示された電子回路１３０の要素を備えたハイブリッドドライブ１００のブロック図２００を示す。示されるように、ハイブリッドドライブ１００はＲＡＭ１３４、フラッシュメモリデバイス１３５、フラッシュマネージャデバイス１３６、システム・オン・チップ１３１および高速データパス２０６を含んでいる。ハイブリッドドライブ１００は、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）バスのようなホストインターフェース２０２経由でホストコンピュータのようなホスト１０に接続される。
【００２２】
図２は、フラッシュマネージャデバイス１３６がＲＡＭ１３４と高速データパス２０６を共有する場合を示すが、フラッシュマネージャデバイス１３６がそれ自身の個別のシステム・オン・チップ１３１へのデータパス２０６を有してもよい。
【００２３】
図２に例証された実施形態では、フラッシュマネージャデバイス１３６は高速データパス２０６とフラッシュメモリデバイス１３５とのインターフェースを制御し、ＮＡＮＤインターフェースバス１３９を介してフラッシュメモリデバイス１３５に接続される。システム・オン・チップ１３１はハイブリッドドライブ１００の動作制御のためにマイクロプロセサに基づいたコントローラ１３３および他のハードウェア（リード／ライトチャネル１３７を含む）を含んでおり、高速データパス２０６を介してＲＡＭ１３４およびフラッシュマネージャデバイス１３６に接続される。
【００２４】
マイクロプロセサに基づいたコントローラ１３３は、ＡＲＭマイクロプロセッサ、ハイブリッドドライブコントローラおよびハイブリッドドライブ１００内の任意のコントロール回路類のような１つまたは複数のマイクロコントローラを含んでいてもよい制御ユニットである。高速データパス２０６は、ダブル・データ・レート（ＤＤＲ）バス、ＤＤＲ２バス、ＤＤＲ３バスなどの既知の高速バスである。他の実施形態では、ハイブリッドドライブ１００は、図２に示したもの以外の異なるデータインターフェースおよびバスで構成されていてもよい。
【００２５】
図２に示した実施形態では、マイクロプロセサに基づいたコントローラ１３３は、システム１００の特定の管理機能を実行するためにＲＡＭ１３４にロードされたファームウェアであり得る、論理ブロックマネージャ（図３に示す）を含むプログラムを実行する。別の実施形態では、論理ブロックマネージャの機能は、ハードウェアで実現される。論理ブロックマネージャは、ホストインターフェース２０２によるリードアクセス及びライトアクセスのためにブロックを保持するためにフラッシュメモリデバイス１３５を管理する。１つのバージョンでは、多数のフラッシュブロックのサーチを含む管理を援助するために、リストあるいはＢ＋ツリーのような１または複数の補助の構造が、フラッシュメモリデバイス１３５あるいはＲＡＭ１３４か、両方に格納される。
【００２６】
図３は、ブロック管理テーブルを使用して、論理ブロックマネージャ３１６によって実行されるブロック管理方法３００を示す。ブロック管理テーブルは、ＲＡＭ１３４および／またはフラッシュメモリデバイス１３５に存在し、ブロック番号で特定されるフラッシュブロックと、クラスタと、クラスタ内のデータのタイプとを含む。クラスは、クラスタ番号により識別される各フラッシュブロック内で整数個のセクタを含む。したがって、特定のフラッシュブロックは、各々が異なるタイプのデータを含んでいる多数のクラスタを含むことができる。図示された実施形態では、３つのタイプのデータがある。
【００２７】
タイプ１データ(保存すべきデータ)３０４は、激しい使用のため、あるいはブロックがフラッシュメモリデバイス１３５に釘付けにされるため、ホストアクセスに無条件で利用可能なデータである。タイプ２データ(立ち退かせるべきデータ)３０６は、ブロックを取り戻すことができるようにそれが存在するブロックから取り除くことができたので、ホストアクセスに条件付きで利用可能なデータである。タイプ３データ(古いデータ)３０８は、より新しいバージョンのデータがフラッシュメモリデバイス１３５あるいは磁気ディスク１１０以外のところに存在するので、ホストアクセスには利用不可能なデータである。
【００２８】
論理ブロックマネージャ３１６は、ブロックの回復を可能とすること（ガーベジコレクションとしても知られている)、新たな消去ブロックを提供すること、及びホストのリードコマンド（ＲＥＡＤ−ＣＭＤ）あるいはライトコマンド（ＷＲＩＴＥ−ＣＭＤ）３１４に応答することを含むいくつかの機能を実行する場合、フラッシュブロック中でデータを移動させるように構成される。さらに、単にタイプ１、タイプ３のデータではなくタイプ２のデータを認識し、管理すること、フラッシュメモリデバイス１３５のヒット率、書き込みの性能を改善し、それによって、ハイブリッドドライブ１００の性能を改善する。
【００２９】
図３に示された実施形態では、論理ブロックマネージャはタイプ１のデータ３０４を個別のフラッシュメモリブロック３１０へコピーし、タイプ２のデータ３０６を別の個別のフラッシュメモリブロック３１２へコピーする。残りの古いデータ３０８は、ブロックを再び使用することができるように消去の準備ができている。フラッシュメモリブロック３１０は、様々な他のフラッシュメモリブロックから可能な限り多くのタイプ１のデータを集め、それにより、使用されているフラッシュメモリブロックの数を減らす。同様に、フラッシュメモリブロック３１２は、様々な他のフラッシュメモリブロックから可能な限り多くのタイプ２のデータを集める。
【００３０】
図４は、第１実施形態に従って、時々「ガーベジ・コレクション」とも呼ばれるフラッシュメモリスペース内のフラッシュメモリブロックを回復する方法４００を示す。
【００３１】
ブロック回復処理では、再使用することができるフラッシュメモリブロックの数を増加させるために、複数のフラッシュメモリブロック各々内のセクタは調べられる。図では、各ブロックの各セクタはステップ４０２、４０４でデータタイプが調べられる。
【００３２】
ステップ４０６で判断されるように、データタイプがタイプ１である場合、ステップ４０８で、セクタは、タイプ１ブロックとされる異なるフラッシュメモリブロックにコピーされる。ステップ４０６で判断されるように、データタイプがタイプ２である場合、ステップ４１０で、セクタは、タイプ２ブロックとされる異なるフラッシュメモリブロックにコピーされる。ステップ４０６で判断されるように、データタイプがタイプ３である場合、ステップ４１２で、セクタはコピーされない。両方のステップ４０８および４１０で、コピーされたタイプ１、タイプ２のデータは現在のブロック内でタイプ３データとされる。その結果、このプロセスの終わりでは、現在のブロックの全てのセクタはタイプ３データを含むであり得るし、現在のブロックは消去可能なブロック、つまり、タイプ３ブロックであり得るので、ステップ４１４でタイプ３ブロックとされる。
【００３３】
１つの実施形態では、方法４００に従うフラッシュメモリブロックの回復処理は、バックグランドで処理され、すなわち論理ブロックマネージャによって行なわれる他のタスクに干渉することなく、および独立して行なわれる。その結果、消去され再使用されることが可能なブロックが他の論理ブロックマネージャ処理のためにそういうものとされる。
【００３４】
図５は、図４の実施形態に従って、あるいは下記に述べられた図７の実施形態に従って、新しいブロック、すなわち消去ブロックを得る方法５００を示す。新しいブロックが必要ならば、論理ブロックマネージャ３１６は、ステップ５０２で、先ず、タイプ３データだけを含んでいるブロック、すなわちタイプ３ブロックを検索する。ステップ５０４で判断されるように、タイプ３ブロックを見つける場合、ステップ５０５でブロックを消し、ステップ５０８で新しいブロックとして利用可能なブロックとされ、ステップ５１０で新しいブロックを返す。
【００３５】
ステップ５０４で判断されるように、タイプ３データのみを含むブロックが見つからない場合、論理ブロックマネージャ３１６は、ステップ５１２で、目標のタイプあるいは目標のタイプグループのデータを含んでいるブロック、すなわち図４の実施形態の場合はタイプ２データ、図７の実施形態の場合はタイプ２またはタイプ３データの任意の組み合わせを検索する。ステップ５１４で判断されるように、そのようなブロックを見つける場合、ステップ５１８で当該ブロックをホストアクセスに使用不可能であるとされ、ステップ５２０でブロックを消し、ステップ５２２で当該ブロックを新しいブロックとし使用可能とし、ステップ５１０で新しいブロックを返す。
【００３６】
いずれかのタイプ２ブロックが考慮される前に、タイプ３ブロックは再使用のために先ず考慮されるので、タイプ２ブロックはステップ５１８、５２０、５２２に従って取り戻されるまで、タイプ２ブロックはホストアクセスに利用可能な状態である。図８を参照して以下で議論するように、これはフラッシュメモリのヒット率および書き込み性能を改善する。
【００３７】
図６は、図４、図５の方法に従ってホストアクセス要求を扱う方法６００を示す。図では、ホストアクセスのタイプがステップ６０２で判断される。ホストアクセスがリードコマンド（ＲＥＡＤ−ＣＭＤ）である場合、論理ブロックマネージャは、ステップ６０４で、リクエストデータを含むブロックを見つけ、ステップ６０６で、リクエストデータを含むブロック内のセクタを読む。
【００３８】
上述したように、タイプ１およびタイプ２であるブロックは、ホストアクセスに利用可能である。ステップ６０８で、論理ブロックマネージャは、ステップ６０４で見つかったブロックがタイプ１あるいはタイプ２であるブロックか否か判断する。ステップ６０４で見つかったブロックがタイプ１ブロックである場合、方法６００は終了する。他方、ステップ６０４で見つかったブロックがタイプ２ブロックである場合、ステップ６１０で、論理ブロックマネージャ３１６は、アクセスされたセクタがブロックの大きな割合（例えば＞５０％）を表わしているか否か判断する。そうであるならば、ステップ６１２で、ブロックがタイプ１ブロックとされる。そうでなければ、読まれたデータは、ステップ６１６で、タイプ１ブロックにコピーされ、ステップ６１８で、コピーが発生した現在のブロック内のデータがタイプ３データとされる。
【００３９】
図６で、ステップ６０２で判断されるように、ホストアクセスがライトコマンド（ＷＲＩＴＥ−ＣＭＤ）である場合、論理ブロックマネージャは、ステップ６２０で、書き込み可能なブロック（それは追加の書き込みのためのスペースを備えた消去ブロックまたは新たな消去ブロックかもしれない）を見つけて、ステップ６２２で、書き込み可能なブロックにホストデータを書き込む。その後、論理ブロックマネージャ３１６は、ステップ６２４で、ライトコマンドの実行の結果古くなったデータを含む１つまたは複数のセクタを含むブロックを見つける。ステップ６２６で、そのようなセクタの全てを古い、つまりタイプ３のデータとされる。例えば、セクタ２４および２５が書かれたならば、セクタ２４および２５の古い位置のどのデータ（それらが以前にフラッシュメモリブロックに含まれているならば）も古いとされる。
【００４０】
図７は、第２実施形態に従ってフラッシュメモリスペースを回復する方法７００を示す。方法７００は方法４００と似ているが、方法７００では、タイプ１データだけが新しいブロックにコピーされ、タイプ２およびタイプ３データは新しいブロックにコピーされない。対照的に、方法４００では、タイプ１データおよびタイプ２データは新しいブロックにコピーされ、タイプ３データだけが新しいブロックにコピーされない。
【００４１】
方法７００によるブロック回復処理では、各ブロックの各セクタはステップ７０２、７０４でデータタイプが調べられる。
【００４２】
ステップ７０６で判断されるように、データタイプがタイプ１である場合、ステップ７０８で、セクタは、タイプ１ブロックとされる異なるフラッシュメモリブロックにコピーされ、コピーされたタイプ１データは現在のブロック内でタイプ３データとされる。ステップ７０６で判断されるように、データタイプがタイプ２あるいはタイプ３である場合、ステップ７１０、７１２で、セクタは、コピーされず、現在のブロックに留まる。
【００４３】
１つの実施形態では、方法７００に従うフラッシュメモリブロックの回復処理は、バックグランドで処理され、すなわち論理ブロックマネージャによって行なわれる他のタスクに干渉することなく、および独立して行なわれる。その結果、消去され再使用されることが可能なブロックが他の論理ブロックマネージャ処理のためにそういうものとされる。
【００４４】
図８は、書き込みスループット１００２ａ、１００２ｂ、ブロック回復処理１００４ａ、１００４ｂおよびヒット率１００６のための曲線のグラフ１０００を示す。グラフは、ブロック回復処理の増加により使用中のフラッシュメモリの割合が増加すると減少する書き込みスループット曲線１００２ａ、１００２ｂを示す。より高い書き込みスループットを保持するために、ブロック回復処理は、曲線１００４ａで示されたものから曲線１００４ｂで示されたものまで改善する。単なるタイプ１およびタイプ３データの代わりに、３つのタイプ：タイプ１、タイプ２、タイプ３のデータを識別し、管理することは、曲線１０４ｂで示した改善されたブロック回復のために、書き込みスループットを曲線１００２ａで示されたものから曲線１００２ｂで示されたものへ改善する効果がある。
【００４５】
ブロック回復曲線の改善の理由は、ブロック回復処理によって必要とされる時にタイプ２ブロックは回復のために利用可能であるが、ブロックが必要とされるまで、ブロック回復処理は実際には生じず、それにより、不必要なブロックを回復する回復コストを避けることができる。タイプ２ブロックはホストのリードアクセスに利用可能であるので、タイプ２ブロックの存在は、ヒット率曲線１００６に示されるようなヒット率を改善する効果がある。したがって、タイプ２ブロックの存在は、書き込み性能を落とすことなく使用中のフラッシュメモリのより高い割合で作動することができることから来る二重の利益を有する。
【００４６】
添付された特許請求の範囲で述べられるような発明のより広い主旨および範囲から逸脱することなく、ここに記述された特定の実施形態に対して様々な変形および変更が行なわれてもよいことは認識されるべきである。
【００４７】
ここに記述された様々な実施形態は、コンピュータシステムズに保存されたデータに関する、様々なコンピュータに実行されたオペレーションを使用してもよい。例えば、これらのオペレーションは、物理量の物理的な操作を要求してもよい。通常、必ずしも必要ではないが、これらの物理量は、電気的あるいは磁気的な信号の形を取り得て、それら、あるいはそれらを代表するものが格納、転送、結合、比較、あるいはその他の操作がされる。さらに、そのような操作は、生産、識別、判断、あるいは比較のような用語でしばしば呼ばれる。ここに説明し、発明の１または複数の実施形態の一部分を構成するオペレーションは有用なマシンオペレーションであるかもしれない。さらに、発明の１または複数の実施形態が、これらのオペレーションを行なうための装置または機械に関係する。機械は、特定の要求された目的のために特に構築されてもよい。それは、コンピュータに格納されたコンピュータプログラムによって選択的に起動されあるいは構成された汎用コンピュータであるかもしれない。特に、様々な汎用コンピュータは、ここの教えに従って書かれたコンピュータプログラムと共に使用されてもよい。あるいは、必要なオペレーションを行なうより専門化された機械を構築するほうが好都合であるかもしれない。
【００４８】
ここに記述された様々な実施形態は、携帯装置、マイクロプロセッサシステム、マイクロプロセサに基づくあるいはプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータ構成で実施されてもよい。
【００４９】
本発明の１または複数の実施形態が、１または複数のコンピュータプログラムとして、あるいは１または複数のコンピュータ読取り可能な媒体で具体化された１または複数のコンピュータプログラムモジュールとして実行されてもよい。コンピュータ読取り可能な媒体という用語は、データを格納することができ、その後コンピュータシステムへ入力することができるあらゆるデータストレージ装置を指す。コンピュータ読取り可能な媒体は、コンピュータプログラムがコンピュータによって読まれることを可能にする態様でコンピュータプログラムを具体化するために既存のあるいは続いて開発されるどのような技術に基づいてもよい。コンピュータ読取り可能な媒体の例は、ハードドライブ、ネットワーク付属ストレージ（ＮＡＳ）、読み出し専用メモリ、ランダムアクセスメモリ（例えばフラッシュメモリ装置）、ＣＤ（コンパクトディスク）、ＣＤ−ＲＯＭ、ＣＤ−ＲあるいはＣＤ−ＲＷ、ＤＶＤ（ディジタルバーサタイルディスク）、磁気テープ、および他の光学／非光学データストレージ装置を含む。コンピュータ読取り可能な媒体は、ネットワーク接続のコンピュータシステムを介して分配もでき、その結果、読取り可能なコードが分配された態様で格納され実行される。
【００５０】
本発明の１または複数の実施形態は理解の明瞭さのため、かなり詳細に記述されたが、ある変更および修正が請求の範囲の範囲内で行なわれてもよいことは明白だろう。従って、記述された実施形態は、例示的であり限定的でないものとして考慮されるべきであり、請求の範囲の範囲がここに与えられた詳細に限定されず、請求の範囲の範囲および均等物内で修正されてもよい。請求の範囲では、明示的に述べられなかったならば、要素および／またはステップは動作の特定の順番を意味しない。
【００５１】
ここに記述されたコンポーネント、動作あるいは構造について、複数のインスタンスは単一のインスタンスとして提供されてもよい。最後に、様々なコンポーネントと動作およびデータ・ストアの間の境界は多少任意である。また、特定の動作は特定の例証構成のコンテキスト中で例証される。機能性の他の割付けは、構想を描かれ、発明の範囲以内にあってもよい。一般に、典型的な構成中の個別のコンポーネントとして示された構造および機能性は、結合した構造かコンポーネントとして実行されてもよい。同様に、単一のコンポーネントとして示された構造および機能性は、個別のコンポーネントとして実行されてもよい。これらおよび他の変化、変形、追加および改良は添付された特許請求の範囲の範囲内にあるであろう。
【００５２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００５３】
１００…ディスクドライブ、１２５…モータドライバチップ、１３０…電子回路、１３１…システム・オン・チップ、１３３…コントローラ、１３４…ＲＡＭ、１３５…フラッシュメモリデバイス、１３６…フラッシュマネージャデバイス、１３７…リード／ライトチャネル、２０４…ホスト。
【図１】
2015215864.tif 000003
【図２】
2015215864.tif 000004
【図３】
2015215864.tif 000005
【図４】
2015215864.tif 000006
【図５】
2015215864.tif 000007
【図６】
2015215864.tif 000008
【図７】
2015215864.tif 000009
【図８】
2015215864.tif 000010