(57)【要約】  ホストシステムとデータ記憶システムとの間でデータを転送するためのシステムおよび方法を提供する。システムは、ファイルベースのプロトコルを使用して、データ記憶システムとホストシステムとの間でデータを転送するインターフェイスを含み、データ記憶システムは、第１の大容量記憶装置および第２の大容量記憶装置を含み、第１の大容量記憶装置は、固体の不揮発性メモリ素子であり、第２の大容量記憶装置は、非固体のメモリ素子である。第１の大容量記憶装置は、ファイルバイファイル形式でデータを記憶する１次記憶装置として作動するフラッシュメモリ装置である。第２の大容量記憶装置は、２次記憶装置として作動し、論理インターフェイスを介して受信されるデータを記憶する磁気ディスクドライブである。
2009503731.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムであって、
ファイルベースのプロトコルを使用するインターフェイスを介してホストシステムと連動する第１の不揮発性大容量記憶装置と、
第２の不揮発性大容量記憶装置と、を含み、
第２の不揮発性大容量記憶装置は、第１の不揮発性大容量記憶装置と連動し、ホストシステムからのデータは、第１の不揮発性大容量記憶装置および／または第２の不揮発性大容量記憶装置に記憶されることが可能であるデータ記憶システム。
【請求項２】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータ転送を可能とする第２の不揮発性大容量記憶装置の論理アドレス空間に対してデータファイルをマッピングするディスクファイルシステムを含むデータ記憶システム。
【請求項３】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリであるデータ記憶システム。
【請求項４】
請求項１記載のデータ記憶システムにおいて、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクであるデータ記憶システム。
【請求項５】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置中のインターフェイスは、ファイルバイファイル形式でフラッシュメモリからデータにアクセスする直接データファイルインターフェイスと連動するデータ記憶システム。
【請求項６】
請求項５記載のデータ記憶システムにおいて、
インターフェイスは、ファイルベースの形式を使用して、フラッシュメモリからホストシステムにデータを転送するデータ記憶システム。
【請求項７】
請求項５記載のデータ記憶システムにおいて、
インターフェイスは、直接データファイルインターフェイスと連動して、第２の不揮発性大容量記憶装置に、および第２の不揮発性大容量記憶装置からデータを転送し、直接データファイルインターフェイスは、ディスクファイルシステムおよびディスクドライバと連動して、論理インターフェイスを介して第２の不揮発性大容量記憶装置からデータを送信および／または受信するデータ記憶システム。
【請求項８】
請求項１記載のデータ記憶システムであって、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置のアクセス時間より速いアクセス時間およびその記憶容量より少ない記憶容量を有し、第２の不揮発性大容量記憶装置が利用不可能な状態ならば、第１の不揮発性大容量記憶装置からデータがアクセスされることが可能であり、または、第２の不揮発性大容量記憶装置が利用可能な状態である場合、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との両方からデータがアクセスされることが可能であるデータ記憶システム。
【請求項９】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、ホストシステムから受信されるファイルの第１のセグメントを保存するために使用され、第２の不揮発性大容量記憶装置は、ホストシステムから受信されるファイルの第２のセグメントを記憶するために使用されるデータ記憶システム。
【請求項１０】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置からデータを読み出すためのキャッシュとして作動するデータ記憶システム。
【請求項１１】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置に書き込まれるデータに対して書き込みキャッシュとして作動するデータ記憶システム。
【請求項１２】
請求項１記載のデータ記憶システムにおいて、
データ記憶システムのメモリコントローラは、ホストシステムから受信されるファイルデータがどこに記憶されるべきかを決定するデータ記憶システム。
【請求項１３】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置に書き込まれるデータに対して一時的なバックアップとして機能するデータ記憶システム。
【請求項１４】
請求項１記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第１の不揮発性大容量記憶装置からコピーされ、ホストシステムによって実行される実行アプリケーションプログラムファイルを記憶するデータ記憶システム。
【請求項１５】
請求項１記載のデータ記憶システムにおいて、
不応期間にバックグラウンド処理として、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータがコピーされるデータ記憶システム。
【請求項１６】
請求項１５記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータを転送するためにバッファが使用されるデータ記憶システム。
【請求項１７】
データ記憶システムにおいて、
ファイルベースのプロトコルを介してホストシステムと連動する第１の不揮発性大容量記憶装置を含み、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置と連動するためのディスクドライバを含み、ホストシステムからのファイルデータが、第１の不揮発性大容量記憶装置および／または第２の不揮発性大容量記憶装置に記憶されることが可能であるデータ記憶システム。
【請求項１８】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置の論理アドレス空間にデータファイルをマッピングするディスクファイルシステムを含み、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータ転送を可能とするデータ記憶システム。
【請求項１９】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリであるデータ記憶システム。
【請求項２０】
請求項１７記載のデータ記憶システムにおいて、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクであるデータ記憶システム。
【請求項２１】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置のアクセス時間より速いアクセス時間およびその記憶容量より少ない記憶容量を有し、第２の不揮発性大容量記憶装置が利用不可能な状態ならば、第１の不揮発性大容量記憶装置からデータがアクセスされることが可能であり、または、第２の不揮発性大容量記憶装置が利用可能な状態である場合、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との両方からデータがアクセスされることが可能であるデータ記憶システム。
【請求項２２】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、ホストシステムから受信されるファイルの第１のセグメントを保存するために使用され、第２の不揮発性大容量記憶装置は、ホストシステムから受信されるファイルの第２のセグメントを記憶するために使用されるデータ記憶システム。
【請求項２３】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置からデータを読み出すためのキャッシュとして作動するデータ記憶システム。
【請求項２４】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置に書き込まれるデータに対して書き込みキャッシュとして作動するデータ記憶システム。
【請求項２５】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置に書き込まれるデータに対して一時的なバックアップとして機能するデータ記憶システム。
【請求項２６】
請求項１７記載のデータ記憶システムにおいて、
第１の不揮発性大容量記憶装置は、第１の不揮発性大容量記憶装置からコピーされ、ホストシステムによって実行される実行アプリケーションプログラムファイルを記憶するデータ記憶システム。
【請求項２７】
請求項１７記載のデータ記憶システムにおいて、
不応期間にバックグラウンド処理として、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータがコピーされ、また第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータを転送するためにバッファが使用されることが可能であるデータ記憶システム。
【請求項２８】
第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む、大容量記憶システムにホストシステムによって送信されるデータを書き込む方法であって、
個々のファイル内の固有ファイル識別子およびオフセットによってデータの個々のファイルを識別するステップであって、ホストシステムは、固有ファイル識別子およびオフセットを生成し、大容量記憶システムにファイル識別子およびオフセットを送信するステップと、
第１の不揮発性記憶装置において空間が利用可能ならば、第１の不揮発性大容量記憶装置にデータを記憶するステップと、
第１の不揮発性大容量記憶装置においてファイルに対する記憶空間が利用不可能であるならば、第１の不揮発性大容量記憶装置から第２の不揮発性大容量記憶装置にデータを転送するためのコピー処理の予定を決めるステップと、
を含む方法。
【請求項２９】
請求項２８記載の方法において、
大容量記憶システムは、第１の不揮発性大容量記憶装置および／または第２の不揮発性大容量記憶装置にデータが記憶されるべきかどうかを決定する方法。
【請求項３０】
請求項２９記載の方法において、
第１のセグメントが第１の不揮発性大容量記憶装置に記憶されるとともに第２のセグメントが第２の不揮発性大容量記憶装置に記憶されるように、ホストシステムによって送信されるファイルは分割される方法。
【請求項３１】
請求項２８記載の方法において、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリである方法。
【請求項３２】
請求項２８記載の方法において、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクである方法。
【請求項３３】
第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む、大容量記憶システムからデータを読み出す方法であって、
ファイルに対して個々の固有ファイル識別子およびオフセットを受信するステップであって、ホストシステムが固有ファイル識別子およびオフセットを生成し、データが大容量記憶システムから読み出される大容量記憶システムにファイル識別子およびオフセットを送信するステップと、
第１の不揮発性大容量記憶装置または第２の不揮発性大容量記憶装置にファイルが位置するかどうかを決定するステップと、
ファイルが第１の不揮発性大容量記憶装置に位置するならば、第１の不揮発性大容量記憶装置からデータにアクセスするステップと、
を含む方法。
【請求項３４】
請求項３３記載の方法において、
要求されるファイルの第１のセグメントが第１の不揮発性大容量記憶装置に記憶されるとともに、第２のセグメントが第２の不揮発性大容量記憶装置に記憶されるならば、第２のセグメントが第２の不揮発性大容量記憶装置からアクセスされる間に、第１のセグメントは、ホストシステムに転送される方法。
【請求項３５】
請求項３３記載の方法において、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリである方法。
【請求項３６】
請求項３３記載の方法において、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクである方法。
【請求項３７】
第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む、大容量記憶システムにホストシステムによって送信されるデータを書き込む方法であって、
個々のファイル内の固有ファイル識別子およびオフセットによってデータの個々のファイルを識別するステップであって、ホストシステムは、固有ファイル識別子およびオフセットを生成し、大容量記憶システムにファイル識別子およびオフセットを送信するステップと、
第１の不揮発性記憶装置において空間が利用可能ならば、第１の不揮発性大容量記憶装置にファイルデータを書き込むステップと、
ファイルデータが分割されるべきかどうかを決定するステップと、
第２の不揮発性大容量記憶装置にファイルセグメントをコピーするステップと、
を含む方法。
【請求項３８】
請求項３７記載の方法において、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリである方法。
【請求項３９】
請求項３７記載の方法において、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクである方法。
【請求項４０】
第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む、大容量記憶システムにホストシステムによって送信されるデータを書き込む方法であって、
ホストシステムから書き込みコマンドを受信するステップと、
第１の不揮発性大容量記憶装置において空間が利用可能ならば、第１のファイルセグメントを書き込むための第１の不揮発性大容量記憶装置に書き込みコマンドを送信するステップと、
第２のファイルセグメントを書き込むための第２の不揮発性大容量記憶装置に書き込みコマンドを送信するステップと、
第２の不揮発性大容量記憶装置が第２のファイルセグメントを記憶する準備ができている間、第１の不揮発性大容量記憶装置に第１のファイルセグメントを記憶するステップと、
第２の不揮発性大容量記憶装置に第２のファイルセグメントを記憶するステップと、
を含む方法。
【請求項４１】
請求項４０記載の方法において、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリである方法。
【請求項４２】
請求項４０記載の方法において、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクである方法。
【請求項４３】
請求項４０記載の方法において、
第１の不揮発性大容量記憶装置において空間が利用不可能ならば、ファイルデータは、第２の不揮発性大容量記憶装置に記憶される方法。
【請求項４４】
ホストシステムとデータ記憶システムとの間でデータを転送するためのシステムであって、
ファイルベースのプロトコルを使用して、データ記憶システムとホストシステムとの間でデータを転送するインターフェイスであって、データ記憶システムは、第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含み、第１の不揮発性大容量記憶装置は、第１の形式でデータを記憶し、第２の不揮発性大容量記憶装置は、第２の形式でデータを記憶するインターフェイスを含むシステム。
【請求項４５】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置の論理アドレス空間にデータファイルをマッピングするディスクファイルシステムを含み、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータ転送を可能にするシステム。
【請求項４６】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、１次記憶装置として作動する固体メモリであるシステム。
【請求項４７】
請求項４４記載のシステムにおいて、
第２の不揮発性大容量記憶装置は、２次記憶装置として作動する磁気ハードディスクであるシステム。
【請求項４８】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置のアクセス時間より速いアクセス時間およびその記憶容量より少ない記憶容量を有し、第２の不揮発性大容量記憶装置が利用不可能な状態であるならば、第１の不揮発性大容量記憶装置からデータがアクセスされることが可能であり、または、第２の不揮発性大容量記憶装置が利用可能な状態である場合、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との両方からデータがアクセスされることが可能であるシステム。
【請求項４９】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、ホストシステムから受信されるファイルの第１のセグメントを保存するために使用され、第２の不揮発性大容量記憶装置は、ホストシステムから受信されるファイルの第２のセグメントを記憶するために使用されるシステム。
【請求項５０】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置からデータを読み出すためのキャッシュとして作動するシステム。
【請求項５１】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置に書き込まれるデータに対して書き込みキャッシュとして作動するシステム。
【請求項５２】
請求項４４記載のシステムにおいて、
データ記憶システムのメモリコントローラは、ホストシステムから受信されるファイルデータがどこで記憶されるべきかを決定するシステム。
【請求項５３】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置に書き込まれるデータに対して一時的なバックアップとして機能するシステム。
【請求項５４】
請求項４４記載のシステムにおいて、
第１の不揮発性大容量記憶装置は、第１の不揮発性大容量記憶装置からコピーされ、ホストシステムによって実行される実行アプリケーションプログラムファイルを記憶するシステム。
【請求項５５】
請求項４４記載のシステムにおいて、
不応期間にバックグラウンド処理として、第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータがコピーされるシステム。
【請求項５６】
請求項５５記載のシステムにおいて、
第１の不揮発性大容量記憶装置と第２の不揮発性大容量記憶装置との間でデータを転送するためにバッファが使用されるシステム。
【請求項５７】
ホストシステムとデータ記憶システムとの間でデータを転送するためのシステムであって、
ファイルベースのプロトコルを使用して、データ記憶システムとホストシステムとの間でデータを転送するインターフェイスであって、データ記憶システムは、第１の大容量記憶装置および第２の大容量記憶装置を含み、第１の大容量記憶装置は、固体の不揮発性メモリ素子であり、第２の大容量記憶装置は、非固体のメモリ素子であるインターフェイスを含むシステム。
【請求項５８】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、１次記憶装置として作動するフラッシュメモリ装置であるシステム。
【請求項５９】
請求項５７記載のシステムにおいて、
第２の大容量記憶装置は、２次記憶装置として作動する磁気ディスクドライブであるシステム。
【請求項６０】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、ファイルバイファイル形式でデータを記憶するシステム。
【請求項６１】
請求項５７記載のシステムにおいて、
第２の大容量記憶装置は、論理インターフェイスを介して受信されるデータを記憶するシステム。
【請求項６２】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置および第２の大容量記憶装置は、異なる形式を使用して、データを記憶するシステム。
【請求項６３】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置および第２の大容量記憶装置は、同様の形式を使用して、データを記憶するシステム。
【請求項６４】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、第２の大容量記憶装置の論理アドレス空間にデータファイルをマッピングするディスクファイルシステムを含み、第１の大容量記憶装置と第２の大容量記憶装置との間でデータ転送を可能とするシステム。
【請求項６５】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、第２の大容量記憶装置のアクセス時間より速いアクセス時間およびその記憶容量より少ない記憶容量を有し、第２の大容量記憶装置が利用不可能な状態であるならば、第１の大容量記憶装置からデータがアクセスされることが可能であり、または、第２の大容量記憶装置が利用可能な状態である場合、第１の大容量記憶装置と第２の大容量記憶装置との両方からデータがアクセスされることが可能であるシステム。
【請求項６６】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、ホストシステムから受信されるファイルの第１のセグメントを保存するために使用され、第２の大容量記憶装置は、ホストシステムから受信されるファイルの第２のセグメントを記憶するために使用されるシステム。
【請求項６７】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、第２の大容量記憶装置からデータを読み出すためのキャッシュとして作動するシステム。
【請求項６８】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、第２の大容量記憶装置に書き込まれるデータに対して書き込みキャッシュとして作動するシステム。
【請求項６９】
請求項５７記載のシステムにおいて、
データ記憶システムのメモリコントローラは、ホストシステムから受信されるファイルデータがどこで記憶されるべきかを決定するシステム。
【請求項７０】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、第２の大容量記憶装置に書き込まれるデータに対して一時的なバックアップとして機能するシステム。
【請求項７１】
請求項５７記載のシステムにおいて、
第１の大容量記憶装置は、第１の大容量記憶装置からコピーされ、ホストシステムによって実行される実行アプリケーションプログラムファイルを記憶するシステム。
【請求項７２】
請求項５７記載のシステムにおいて、
不応期間にバックグラウンド処理として、第１の大容量記憶装置と第２の大容量記憶装置との間でデータがコピーされるシステム。
【請求項７３】
請求項７２記載のシステムにおいて、
第１の大容量記憶装置と第２の大容量記憶装置との間でデータを転送するためにバッファが使用されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して記憶装置に関し、より詳細には、直接データファイル記憶インターフェイスを使用するデュアルメディア記憶装置に関する。
【背景技術】
【０００２】
関連出願の相互参照
本願は、その全体が本願明細書において参照により援用されている以下の同時係属中の米国特許出願に関する。以下の特許出願とは、２００５年２月４日に出願されたアラン・Ｗ・シンクレアが発明者である「デュアルメディア記憶装置」という米国特許出願第１０／７７２，８５５号（代理人整理番号：ＳＤＫ０１Ｐ０１８）（特許文献１）、２００５年２月４日に出願されたアラン・Ｗ・シンクレアが発明者である「大容量記憶アクセラレータ」という米国特許出願第１０／７７２，７８９号（代理人整理番号：ＳＤＫ１Ｐ０１９）（特許文献２）、２００５年２月１６日に出願されたアラン・Ｗ・シンクレアおよびピーター・Ｊ・スミスが発明者である「フラッシュメモリにおける直接データファイル記憶」という米国特許出願第１１／０６０，２４９号（代理人整理番号：ＳＤＫ０３８０．ＵＳ０）（特許文献３）、２００５年２月１６日に出願されたアラン・Ｗ・シンクレアおよびピーター・Ｊ・スミスが発明者である「フラッシュメモリにおける直接データファイルのプログラミングおよび削除」という米国特許出願第１１／０６０，１７４号（代理人整理番号：ＳＤＫ０３８０．ＵＳ１）（特許文献４）、２００５年２月１６日に出願されたアラン・Ｗ・シンクレアおよびピーター・Ｊ・スミスが発明者である「フラッシュメモリにおける直接データファイル記憶実施技術」という米国特許出願第１１／０６０，２４８号（代理人整理番号：ＳＤＫ０３８０．ＵＳ２) （特許文献５）、アラン・Ｗ・シンクレアおよびバリー・ライトによって本願と同時に出願された「フラッシュメモリにおける直接データファイル記憶」という米国仮特許出願（特許文献６）である（以下、前述した特許出願は、「直接データファイル記憶アプリケーション」としてまとめて称せられる）。
【０００３】
従来のコンピュータシステムは、典型的には、いくつかの機能構成要素を含んでいる。これらの構成要素は、中央処理装置（ＣＰＵ）、メインメモリ、入出力（「Ｉ／Ｏ」）装置、大容量記憶装置を含んでいてもよい。従来のシステムでは、メインメモリは、システムバスまたはローカルメモリバスを介してＣＰＵに接続されている。メインメモリは、実行時間でメインメモリに記憶されるデータおよび／またはプログラム情報にＣＰＵアクセスを提供するために使用されている。典型的には、メインメモリは、ランダムアクセスメモリ（ＲＡＭ）回路から構成されている。ＣＰＵおよびメインメモリを有するコンピュータシステムは、しばしば、ホストシステムと称せられる。
【０００４】
大容量記憶は、典型的には、データを保持するために使用される。一般的には、大容量記憶に記憶されたプログラムは、ＣＰＵによって実行される前に、メインメモリにコピーされる。普通の大容量記憶装置は、フロッピーディスク、ハードディスク、光ディスクおよびテープドライブを含む。
【０００５】
さらに、フラッシュメモリは、不揮発性記憶装置を提供するために使用されてもよい。ホストシステムは、インターフェイスを介して、フラッシュメモリ（この明細書全体にわたって交換可能に「フラッシュ素子」、「フラッシュ」または「フラッシュカード」とも称する）と連動する。フラッシュメモリは、典型的には、情報を記憶するための不揮発性メモリセルアレイを含む。
【０００６】
フラッシュメモリシステムは、最も一般的に、パソコン、カメラ等の様々なホストと取り付け可能に接続されるが、そのようなホストシステム内に組み込まれてもよいメモリカードまたはフラッシュドライブの形状で提供される。
【０００７】
フラッシュメモリコントローラは、典型的には、メモリアレイの処理を制御する。メモリコントローラは、マイクロプロセッサ、いくつかの不揮発性読み出し専用メモリ（「ＲＯＭ」）、揮発性ランダムアクセスメモリ（「ＲＡＭ」）および１つ以上の特定の回路、例えば、メモリコントローラを通るときにデータからのＥＣＣを計算する誤り訂正符号回路（「ＥＣＣ」）を含む。
【０００８】
商業用フラッシュメモリシステムの初期世代では、メモリセルの長方形アレイは、標準ディスクドライブセクタ、すなわち、５１２バイトのデータ量をそれぞれ記憶した多くのグループのセルに分割されていた。１６バイトなどのデータの追加量も、ユーザデータおよび／またはそれが記憶されるメモリセルグループに関係する誤り訂正符号（ＥＣＣ）およびあるいは他のオーバーヘッドデータを記憶するために、各グループに通常含まれている。そのような各グループ中のメモリセルは、ともに消去可能なメモリセルの最小数である。すなわち、消去装置は、有効に、１つのデータセクタおよび含まれている任意のオーバーヘッドデータを記憶するメモリセルの数である。この種のメモリシステムの例は、米国特許第５，６０２，９８７号（特許文献７）および第６，４２６，８９３号（特許文献７）で説明されている。それらをデータで再プログラムする前に、メモリセルを消去する必要があることは、フラッシュメモリの特徴である。
【０００９】
従来のシステムでは、ホストは、ファイルシステムを維持し、論理クラスタにファイルデータを割り当て、ここで、クラスタサイズは、典型的には固定されている。フラッシュ素子は、複数の論理セクタに分割され、ホストは、複数の論理セクタを含むクラスタ内で空間を割り当てる。クラスタは、論理アドレスの細分であり、クラスタマップは、ファイルアロケーションテーブル（「ＦＡＴ」）として指定される。ＦＡＴは、記憶装置自体に通常記憶される。
【００１０】
従来のシステムで、メモリにデータを書き込む場合、ホストは、典型的には、メモリシステムの連続仮想アドレス空間内に、データのセクタ、クラスタまたは他のユニットに固有の論理アドレスを割り当てる。ディスクオペレーティングシステム（ＤＯＳ）のように、ホストは、メモリシステムの論理アドレス空間内のアドレスにデータを書き込み、アドレスからデータを読み出す。メモリシステム内のコントローラは、メモリアレイ内の物理アドレスにホストから受信される論理アドレスを変換し、ここで、データは、実際に記憶され、次いで、これらのアドレス変換を把握し続ける。メモリシステムのデータ記憶容量は、メモリシステムのために定義された論理アドレス空間全体にわたってアドレス可能なデータ量と少なくとも同じくらいである。
【００１１】
前述した同時係属中の特許出願に開示されるように、発明者は、予め、単一の大容量記憶システムに個々の装置（つまり、大容量記憶およびフラッシュメモリ）を結合する概念を調査した。論理インターフェイスがホストと結合記憶システムとの間でデータを転送するために使用されるこれら一体装置が作動する。
【００１２】
ホストが論理アドレスマッピングに対してファイルを実行する必要がないように、他のファイル記憶装置システム（または形式）が現在開発されている。
【００１３】
したがって、ホストシステムが、特殊なファイル記憶形式を使用するフラッシュメモリシステムおよび論理インターフェイスを使用する従来の論理アドレス空間／形式に今も基づく大容量記憶装置に／から、データを効率的に読み出し／書き込みすることを可能にする方法およびシステムの必要がある。
【特許文献１】米国特許出願第１０／７７２，８５５号
【特許文献２】米国特許出願第１０／７７２，７８９号
【特許文献３】米国特許出願第１１／０６０，２４９号
【特許文献４】米国特許出願第１１／０６０，１７４号
【特許文献５】米国特許出願第１１／０６０，２４８号
【特許文献６】アラン・Ｗ・シンクレアおよびバリー・ライトによって本願と同時に出願された「フラッシュメモリにおける直接データファイル記憶」という米国仮特許出願
【特許文献７】米国特許第５，６０２，９８７号
【特許文献８】米国特許第６，４２６，８９３号
【特許文献９】米国特許第５，５７０，３１５号
【特許文献１０】米国特許第５，７７４，３９７号
【特許文献１１】米国特許第６，０４６，９３５号
【特許文献１２】米国特許第６，３７３，７４６号
【特許文献１３】米国特許第６，４５６，５２８号
【特許文献１４】米国特許第６，５２２，５８０号
【特許文献１５】米国特許第６，７７１，５３６号
【特許文献１６】米国特許第６，７８１，８７７号
【特許文献１７】米国公開特許出願第２００３／０１４７２７８号
【特許文献１８】米国特許第６，７６３，４２４号
【発明の開示】
【００１４】
本発明の１つの態様では、ホストシステムとデータ記憶システムとの間でデータを転送するためのシステムを提供する。システムは、ファイルベースのプロトコルを使用して、データ記憶システムとホストシステムとの間でデータを転送するインターフェイスを含み、ここで、データ記憶システムは、第１の大容量記憶装置および第２の大容量記憶装置を含み、第１の大容量記憶装置は、固体の不揮発性メモリ素子であり、第２の大容量記憶装置は、非固体のメモリ素子である。
【００１５】
第１の大容量記憶装置は、ファイルバイファイル形式でデータを記憶する１次記憶装置として作動するフラッシュメモリ装置である。第２の大容量記憶装置は、２次記憶装置として作動し、論理インターフェイスを介して受信されるデータを記憶する磁気ディスクドライブである。
【００１６】
本発明の他の態様では、ホストシステムとデータ記憶システムとの間でデータを転送するためのシステムを提供する。システムは、ファイルベースのプロトコルを使用して、データ記憶システムとホストシステムとの間でデータを転送するインターフェイスを含み、ここで、データ記憶システムは、第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含み、第１の不揮発性大容量記憶装置は、第１の形式でデータを記憶し、第２の不揮発性大容量記憶装置は、第２の形式でデータを記憶する。
【００１７】
本発明のさらに他の態様では、データ記憶システムを提供する。データ記憶システムは、ファイルベースのプロトコルを使用するインターフェイスを介してホストシステムと連動する第１の不揮発性大容量記憶装置と、第２の不揮発性大容量記憶装置と、を含み、ここで、第２の不揮発性大容量記憶装置は、第１の不揮発性大容量記憶装置と連動し、ホストシステムからのデータは、第１の不揮発性大容量記憶装置および／または第２の不揮発性大容量記憶装置に記憶されることが可能である。
【００１８】
本発明の他の態様では、データ記憶システムを提供する。データ記憶システムは、ファイルベースのプロトコルを介して、ホストシステムと連動する第１の不揮発性大容量記憶装置を含み、ここで、第１の不揮発性大容量記憶装置は、第２の不揮発性大容量記憶装置と連動するディスクドライバを含み、ホストシステムからのファイルデータは、第１の不揮発性大容量記憶装置および／または第２の不揮発性大容量記憶装置に記憶されることが可能である。
【００１９】
本発明のさらに他の態様では、大容量記憶システムにホストシステムによって送信されるデータを書き込む方法を提供する。大容量記憶システムは、第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む。その方法は、個々のファイル内の固有ファイル識別子およびオフセットによってデータの個々のファイルを識別するステップであって、ホストシステムは、固有ファイル識別子およびオフセットを生成し、大容量記憶システムにファイル識別子およびオフセットを送信するステップと、空間が第１の不揮発性記憶装置において利用可能なら、第１の不揮発性大容量記憶装置にデータを記憶するステップと、ファイルのための記憶空間が第１の不揮発性大容量記憶装置において利用不可能であるなら、次いで、第１の不揮発性大容量記憶装置から第２の不揮発性大容量記憶装置にデータを転送するためにコピー処理の予定を決めるステップと、を含む。
【００２０】
本発明の他の態様では、大容量記憶システムからデータを読み出す方法を提供する。大容量記憶システムは、第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む。その方法は、ファイルのための個々の固有ファイル識別子およびオフセットを受信するステップであって、ホストシステムは、固有ファイル識別子およびオフセットを生成し、データが大容量記憶システムから読み出されるために、大容量記憶システムにファイル識別子およびオフセットを送信するステップと、第１の不揮発性大容量記憶装置または第２の不揮発性大容量記憶装置にファイルが位置するかどうかを決定するステップと、ファイルが第１の不揮発性大容量記憶装置に位置するなら、第１の不揮発性大容量記憶装置からデータにアクセスするステップと、を含む。
【００２１】
本発明のさらに他の態様では、第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を有する大容量記憶システムにホストシステムによって送信されるデータを書き込むための方法を提供する。その方法は、個々のファイル内の固有ファイル識別子およびオフセットによってデータの個々のファイルを識別するステップであって、ホストシステムは、固有ファイル識別子およびオフセットを生成し、大容量記憶システムにファイル識別子およびオフセットを送信するステップと、空間が第１の不揮発性大容量記憶装置において利用可能なら、第１の不揮発性大容量記憶装置にファイルデータを書き込むステップと、ファイルデータが分割されるべきかどうかを決定するステップと、第２の不揮発性大容量記憶装置にファイルセグメントをコピーするステップと、を含む。
【００２２】
本発明のさらに他の態様では、大容量記憶システムにホストシステムによって送信されるデータを書き込むための方法を提供し、ここで、大容量記憶システムは、第１の不揮発性大容量記憶装置および第２の不揮発性大容量記憶装置を含む。その方法は、ホストシステムから書き込みコマンドを受信するステップと、空間が第１の不揮発性大容量記憶装置において利用可能なら、第１のファイルセグメントを書き込むために第１の不揮発性大容量記憶装置に書き込みコマンドを送信するステップと、第２のファイルセグメントを書き込むために第２の不揮発性大容量記憶装置に書き込みコマンドを送信するステップと、第２の不揮発性大容量記憶装置が第２のファイルセグメントを記憶する準備ができている間、第１の不揮発性大容量記憶装置に第１のファイルセグメントを記憶するステップと、第２の不揮発性大容量記憶装置に第２のファイルセグメントを記憶するステップと、を含む。
【００２３】
本発明の本質をすぐに理解するように、この概要を提供する。本発明についてのより完全な理解を、添付の図面に関連して本発明の好ましい実施形態についての以下の詳細な説明を参照することによって得ることが可能である。
【００２４】
本発明の前述した特徴および他の特徴を、好ましい実施形態の図面を参照して以下に説明する。図面において、同じ構成要素は、同じ参照数字を有する。例示する実施形態は、例示することを意図し、本発明を限定しない。図面は、以下の図を含む。
【発明を実施するための最良の形態】
【００２５】
好ましい実施形態の理解を促進するために、ホストシステム／フラッシュ素子の一般的なアーキテクチャおよび処理について記載する。次いで、好ましい実施形態の具体的なアーキテクチャおよび処理を、一般的なアーキテクチャを参照して記載する。
【００２６】
ホストシステム：
図１Ａは、本発明を利用することができる汎用計算機システム（ホストシステム）１００を示す。システム１００の構成要素は、コンピュータ１６０、マウス１７０などの様々な入出力（「Ｉ／Ｏ」）装置、キーボード１６５、モニタ１２０およびプリンタ１２５を含む。
【００２７】
図１Ｂは、計算機システム１００の概念化された説明を示す。構成要素１３０は、ユーザが、計算機システム１００と情報をやりとりすることを可能にするマウスやキーボードなどの複数の入力装置を表わすことを意図する。同様に、出力１３５は、１つ以上の出力装置、例えば、モニタ１２０やプリンタ１２５を表す。
【００２８】
計算機システム１００は、システムバス１５５に接続された中央処理装置（「ＣＰＵ」）（またはマイクロプロセッサ）１７５を含む。メインメモリ１４５（例えば、ランダムアクセスメインメモリ（「ＲＡＭ」））もシステムバス１５５に接続され、ＣＰＵ１７５に記憶装置へのアクセスを提供する。プログラムの命令を実行する場合、ＣＰＵ１７５は、ＲＡＭ１４５にそれらのプロセスステップを記憶し、ＲＡＭ１４５から記憶されたプロセスステップを実行する。
【００２９】
読み出し専用メモリ（「ＲＯＭ」）（図示せず）は、スタートアップ命令シーケンスまたは基本入出力オペレーティングシステム（ＢＩＯＳ）シーケンスなどの不変命令シーケンスを記憶するために設けられる。
【００３０】
大容量記憶装置１５０は、計算機システム１００が、永久に大量のデータを保持することを可能にする。大容量記憶装置１５０を、以下に詳細に説明する。
【００３１】
大容量記憶システム：
図２Ａは、大容量記憶システム（仮想フラッシュ記憶または仮想記憶装置と称してもよい）１５０のブロック図を示す。大容量記憶システム１５０は、ファイルインターフェイスチャンネル１０３を介してホストシステム１００と連動する。ファイルインターフェイス１０３は、以下に記載するファイルベースのプロトコルを使用して、大容量記憶１５０の構成要素とホストシステム１００との間でデータ／コマンドの転送を促進する。
【００３２】
大容量記憶１５０は、１次記憶（１次記憶装置とも称する）として直接データファイルフラッシュ素子（または固体の不揮発性メモリ素子）１１６（図２Ｎで１１６として示されている）および２次記憶（２次記憶装置とも称する）としての高容量磁気ディスク（または他の非固体のメモリ素子、例えば、テープ駆動）１１０を使用する仮想フラッシュファイル記憶である。データは、ファイルバイファイル形式でフラッシュ素子１１６に記憶される。
【００３３】
２次記憶１１０は、ディスクコントローラ１１１Ａおよび記憶装置１１１Ｂを含む。ディスクコントローラ１１１Ａは、１次記憶１１６と２次記憶１１０との間でのデータ転送を促進する。２次記憶１１０は、非固体のメモリ素子、例えば、ハードディスク、テープ駆動および他のものであってもよいことは注目すべきである。
【００３４】
実際には、磁気ディスク１１０がフラッシュ素子１１６と共に使用される場合、ユーザにとって、大容量記憶装置１５０は、フラッシュ記憶装置であるように思われる。
【００３５】
１次記憶１１６は、ホストシステム１００の不可欠な部分である一方で、従来のハードディスクとして作動する２次記憶１１０は、ホストシステム１００の外部にあってもよいことは注目すべきである。さらに、１次記憶１１６および２次記憶１１０は、同様または異なる形式を使用してデータを記憶することができる。
【００３６】
フラッシュ素子１１６（または本願明細書全体にわたって交換可能に使用される１次記憶１１６）は、コントローラモジュール１１６Ａ（「メモリシステムコントローラ」または「メモリコントローラ」または「コントローラ」と称してもよい）および固体のメモリモジュール１１６Ｂを含む。コントローラ１１６Ａは、ファイルインターフェイス１０３または他の周辺機器用バス（図示せず）またはシステムバス１５５を介してホストシステム１００と連動する。
【００３７】
市販の様々なフラッシュ素子（またはフラッシュメモリカード）が現在あり、例として、コンパクトフラッシュ（ＣＦ）、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）、ミニＳＤ、メモリスティック、スマートメディアおよびトランスフラッシュカードが挙げられる。これらの各カードは、その標準化された規格によって固有の機械的および／または電気的インターフェイスを有するが、各々に含まれたフラッシュメモリは、非常に類似している。これらのカードは、すべて、本願の譲受人であるサンディスク  コーポレイションから入手可能である。サンディスクは、クルーザー（Ｃｒｕｚｅｒ）という商標のもとで、フラッシュドライブのラインも提供し、それは、ホストのＵＳＢレセプタクルに差し込むことによりホストに接続するためのユニバーサル・シリアル・バス（ＵＳＢ）プラグを有する小さなパッケージ中の携帯用メモリシステムである。これらの各メモリカードおよびフラッシュドライブは、それらの中のフラッシュメモリのホストおよび制御動作と連動するコントローラを含む。
【００３８】
そのようなメモリカードおよびフラッシュドライブを使用するホストシステムは、多く、多様である。それらとして、パソコン（ＰＣ）、ラップトップおよび他の携帯用コンピュータ、携帯電話、個人用携帯情報端末（ＰＤＡ）、デジタル静止画カメラ、デジタル動画カメラ、および携帯用オーディオプレイヤが挙げられる。ホストとして、典型的には、１つ以上のタイプのメモリカードまたはフラッシュドライブ用の内蔵レセプタクルが挙げられるが、メモリカードが差し込まれるアダプタを必要とするものもある。
【００３９】
２次記憶１１０と比較する場合、１次記憶１１６は、コンパクトであり、様々な可動部を使用する２次記憶１１０と異なり可動部なしで作動することができるので、衝撃や振動に対してより高い抵抗を有する。
【００４０】
また、１次記憶１１６は、２次記憶１１０よりさらに速いシーク時間を有し、つまり、ホストは、２次記憶１１０からデータを読み出し／２次記憶１１０にデータを書き込むことができるよりも速く、１次記憶１１６からデータを読み出し／１次記憶１１６にデータを書き込むことが可能である。１次記憶１１６は、典型的には、２次記憶１１０より少ない記憶容量を有する。大容量記憶システム１５０は、以下に詳細に説明するより速い直接データファイルフラッシュ記憶装置および高容量記憶装置の両方を有利に提供する。
【００４１】
ＮＯＲなどの他のアーキテクチャを代わりに使用することもできるが、メモリセルアレイ１１６ＢのＮＡＮＤアーキテクチャが現在好ましい。ＮＡＮＤフラッシュメモリおよびメモリシステムの一部としてのそれらの操作の例として、米国特許第５，５７０，３１５号（特許文献９）、第５，７７４，３９７号（特許文献１０）、第６，０４６，９３５号（特許文献１１）、第６，３７３，７４６号（特許文献１２）、第６，４５６，５２８号（特許文献１３）、第６，５２２，５８０号（特許文献１４）、第６，７７１，５３６号（特許文献１５）、および第６，７８１，８７７号（特許文献１６）、および米国公開特許出願第２００３／０１４７２７８号（特許文献１７）を参照して挙げることができる。
【００４２】
図２Ｂは、コントローラモジュール１１６Ａの内部アーキテクチャのブロック図を示す。コントローラモジュール１１６Ａは、インターフェイスロジック１１６Ｅを介して様々な他の構成要素と連動するマイクロコントローラ１１６Ｃを含む。メモリ１１６Ｄは、フラッシュ素子１１６の操作を制御するために、マイクロコントローラ１１６Ｃによって使用されるファームウェアおよびソフトウェアの命令を記憶する。メモリ１１６Ｄは、揮発性の再プログラム可能なランダムアクセスメモリ（「ＲＡＭ」）、再プログラム可能でない不揮発性メモリ（「ＲＯＭ」）、一回限りプログラム可能なメモリ、またはフラッシュ式の再プログラム可能で電気的に消去可能でプログラム可能な読み出し専用メモリ（「ＥＥＰＲＯＭ」）であってもよい。
【００４３】
ホストインターフェイス１１６Ｇは、（ファイルインターフェイスを介して）ホストシステム１００と連動する一方で、フラッシュインターフェイス１１６Ｆは、メモリモジュール１１６Ｂと連動する。
【００４４】
図２Ｃは、以下のさらなる説明で例として使用されるフラッシュメモリセルアレイ（１１６Ｂ）の構成を概念的に説明する。メモリセルの４つのプレーンまたはサブアレイ１３１〜１３４は、単一の集積メモリセルチップ、２つのチップ（各チップ上の２つのプレーン）、または４つの別個のチップ上にあってもよい。具体的な配置は、以下の説明にとって重要ではない。もちろん、１，２，８，１６またはそれ以上などの他のプレーンの数が、システム内に存在していてもよい。プレーンは、それぞれのプレーン１３１〜１３４内に位置するブロック１３７，１３８，１３９および１４０Ａなどの長方形によって、図２Ｃで示すメモリセルのブロックに個々に分割される。各プレーン内に、数十または数百のブロックがあってもよい。
【００４５】
メモリセルのブロックは、消去のユニットであり、最も少数のメモリセルが、物理的にともに消去可能である。しかし、並列処理の増加について、ブロックは、より大きなメタブロックユニット中で操作される。各プレーンからの１つのブロックは、メタブロックを形成するために論理上ともに結合されている。４つのブロック１３７〜１４０Ａは、１つのメタブロック１４１を形成するために示されている。メタブロック内のセルは、すべて、典型的にはともに消去される。メタブロックを形成するために使用されるブロックは、ブロック１４５〜１４８から構成された第２のメタブロック１４３に示すように、それぞれのプレーン内の同じ相対的記憶位置に限定される必要はない。
【００４６】
高いシステム性能のために、プレーンのすべてにわたってメタブロックを拡大することが通常好ましいが、メモリシステムは、異なるプレーンで１つ、２つまたは３つのブロックのいずれかまたはすべてのメタブロックを動的に形成する性能で操作することができる。これは、メタブロックのサイズが、１つのプログラミング操作において記憶のために利用可能なデータの量とより緊密に適合されることを可能にする。
【００４７】
個々のブロックは、図２Ｄで説明するように、操作上の目的のためにメモリセルのページに順に分割されている。各ブロック１３１〜１３４のメモリセルは、例えば、Ｐ０〜Ｐ７の８ページに分割されている。また、各ブロック内に１６，３２またはそれ以上のページのメモリセルがあってもよい。ページは、ブロック内でプログラムし、読み出し、一度にプログラムされるデータの最少量を含むブロック内のデータのユニットである。
【００４８】
ＮＡＮＤアーキテクチャでは、ページは、ブロック内のワード線に沿ってメモリセルから形成されている。しかし、メモリシステムの操作上の並列処理を増加させるために、２つ以上のブロック内のそのようなページは、メタページに論理的に結合されてもよい。メタページ１５１は、図２Ｄで説明され、４つの各ブロック１３１〜１３４からの１つの物理ページから形成されている。メタページ１５１は、例えば、４つの各ブロックにページＰ２を含むが、メタページのページは、必ずしも、各ブロック内の同じ相対的記憶位置を有する必要がない。
【００４９】
高いシステム性能のために、４つのプレーンのすべてにわたって平行にデータの最大量をプログラムし読み出すことが好ましいが、メモリシステムは、異なるプレーン中の個別のブロック中で１，２または３ページのいずれかまたはすべてのメタページを形成するために操作することもできる。これは、プログラミングおよび読み出し操作が、便利に平行に扱われてもよいデータの量と適応して一致することを可能にし、メタページの一部が、データでプログラムされないままである場合を低減する。
【００５０】
多数のプレーンの物理ページから形成されたメタページは、図２Ｄで説明するように、それらの多数のプレーンのワード線の行に沿ってメモリセルを含む。同時に１つのワード線の行でセルのすべてをプログラムするのではなく、それらは、より一般には、２つ以上のインターリーブされたグループ中で交互にプログラムされ、各グループは、（単一ブロック中の）データのページ、または（多数のブロックにわたる）データのメタページを記憶する。一度に代替のメモリセルをプログラムすることによって、データレジスタおよびセンス増幅器を含む１ユニットの周辺回路を、各ビット線ごとに設ける必要はなく、むしろ隣接するビット線間での時分割方式である。これは、周辺回路に必要な基板空間の量を効率よく利用し、メモリセルが、行に沿って密度が増加して包装されることを可能にする。そうでなければ、所定のメモリシステムから利用可能な並列処理を最大にするために、行に沿ってすべてのセルを同時にプログラムすることが好ましい。
【００５１】
図２Ｅは、ページまたはメタページのデータの２つのセクタ１５３および１５５の論理データページを示す。各セクタは、通常、ユーザの５１２バイトの部分１５７、または記憶されているシステムデータ、および部分１５７中のデータまたはそれが記憶されている物理ページまたはブロックに関連するオーバーヘッドデータ用のバイト１５９の他の数を含む。オーバーヘッドデータのバイトの数は、典型的には、１６バイトであり、各セクタ１５３および１５５は合計５２８バイトとする。オーバーヘッド部１５９は、そのようなオーバーヘッドデータ１５９から計算されたＥＣＣを加えて、プログラミングの間にデータ部１５７から計算されたＥＣＣ、その論理アドレス、ブロックが消去され再プログラムされた回数の経験カウント、１つまたはそれ以上の制御フラグ、動作電圧レベル等を含んでいてもよい。または、オーバーヘッドデータ１５９またはその一部は、他のブロック中の異なるページに記憶されていてもよい。
【００５２】
メモリの並列処理が増加するので、メタブロックのデータ記憶容量が増加し、その結果、データページおよびメタページのサイズも増加する。次いで、データページは、データの２つより多いセクタを含んでいてもよい。データページ中の２つのセクタおよびメタページ当たり２つのデータページで、メタページには４つのセクタがある。このように、各メタページは、２，０４８バイトのデータを記憶する。これは、高度な並列処理であり、行中のメモリセルの数をさらに増加することができる。この理由で、フラッシュメモリの幅は、ページおよびメタページ中でデータの量を増加させるために拡大される。
【００５３】
前に特定された物理的に小さな再プログラム可能な不揮発性メモリカードおよびフラッシュドライブは、５１２メガバイト（ＭＢ）、１ギガバイト（ＧＢ）、２ＧＢおよび４ＧＢのデータ記憶容量で市販され、より高くなってもよい。
【００５４】
図２Ｆは、ホストとそのような大容量メモリシステムとの間の最も一般的なインターフェイスを説明する。ホストは、ホストによって実行されたアプリケーションソフトウェアまたはファームウェアプログラムによって生成または使用されるデータファイルを処理する。文書処理データファイルは、１例であり、コンピュータを使った設計（ＣＡＤ）ソフトウェアの描画ファイルは、他の例であり、主として、ＰＣ、ラップトップコンピュータ等の一般的なコンピュータホストで見られる。ｐｄｆ形式の文書も、そのようなファイルである。さらに、デジタルカメラは、メモリカードに記憶される各画像のためにデータファイル（さらにおよび／またはビデオ）を生成する。携帯電話は、電話帳などの内部メモリカード上のファイルからデータを利用する。ＰＤＡは、アドレスファイル、カレンダーファイル等のいくつかの様々なファイルを記憶し使用する。任意のそのようなアプリケーションでは、メモリカードは、また、ホストを操作するソフトウェアを含んでいてもよい。
【００５５】
ホストとメモリシステムとの間の共通の論理インターフェイスは、図２Ｆで説明される。連続論理アドレス空間１６１は、メモリシステムに記憶されることが可能なすべてのデータのためにアドレスを提供することができるほど十分に大きい。ホストアドレス空間は、典型的には、データのクラスタのインクリメントに分割されている。各クラスタは、データの多くのセクタを含むために、所定のホストシステムで設計されてもよく、４〜６４のセクタのどこかが一般的である。標準セクタは、５１２バイトのデータを含む。
【００５６】
３つのファイル１，２，３は、図２Ｆの例で示され、生成された。ホストシステム上で作動するアプリケーションプログラムは、データの順序集合として各ファイルを生成し、固有の名前または他の参照によってそれを特定する。他のファイルにまだ割り当てられていない十分に利用可能な論理アドレス空間は、ファイル１にホストによって割り当てられる。ファイル１は、利用可能な論理アドレスの連続範囲を割り当てられるために示される。アドレスの範囲も、ホストペレーティングソフトウェアのための特有の範囲などの具体的な目的のために一般的に割り当てられ、次いで、これらのアドレスは、ホストがデータに論理アドレスを割り当てているときに利用されていないとしても、データを記憶するために回避される。
【００５７】
ファイル２が、後にホストによって生成される場合、ホストは、図２Ｆに示すように、同様に、論理アドレス空間１６１内の連続アドレスの２つの異なる範囲を割り当てる。ファイルは、割り当てられた連続論理アドレスである必要はないが、むしろ他のファイルに既に割り当てられたアドレス範囲間でアドレスのフラグメントとすることができる。次いで、この例は、ホストによって生成されたさらに他のファイル３が、予め、ファイル１，２および他のデータに割り当てられないホストアドレス空間の割り当てられた他の部分であることを示す。
【００５８】
ホストは、ファイルアロケーションテーブル（ＦＡＴ）の維持によりメモリ論理アドレス空間を絶えず把握し、ここで、ホストが様々なホストファイルに割り当てる論理アドレスが維持される。ＦＡＴテーブルは、ホストメモリと同様に、不揮発性メモリに典型的には記憶され、新しいファイルが記憶される場合、ホストによって頻繁に更新され、他のファイルは削除され、ファイル等は訂正される。ホストファイルが削除される場合、例えば、ホストは、次いで、論理アドレスが、ここで、他のデータファイルとともに使用するために利用可能であることを示すために、ＦＡＴテーブルを更新することにより、削除されたファイルに予め割り当てられた論理アドレスの割り当てを解除する。
【００５９】
ホストは、メモリシステムコントローラがファイルを記憶するために選択する物理位置について注意していない。典型的なホストは、単に、その論理アドレス空間およびその様々なファイルに割り当てられた論理アドレスを知っている。他方、メモリシステムは、典型的なホスト／カードインターフェイスを介して、データが書き込まれている論理アドレス空間の一部のみを知っているが、具体的なホストファイルに割り当てられた論理アドレス、またはホストファイルの数さえ知らない。メモリシステムコントローラ１１６Ａは、ホストデータが記憶されるフラッシュメモリセルアレイ内の固有の物理アドレス中へのデータの記憶または検索のためにホストによって提供される論理アドレスを変換する。ブロック１６３は、これらの論理−物理アドレス変換の作業テーブルを表わし、メモリシステムコントローラ１１６Ａによって維持される。
【００６０】
メモリシステムコントローラ１１６Ａは、高いレベルでシステムの性能を維持する方法により、メモリアレイ１６５のブロックおよびメタブロック内にデータファイルを記憶するようにプログラムされている。４つのプレーンまたはサブアレイがこの実例で使用されている。データは、各プレーンからブロックから形成されたメタブロック全体にわたってシステムが可能とする最大限の並列処理で、プログラムされ、読み出されることが好ましい。少なくとも１つのメタブロック１６７は、予備のブロックとして、メモリコントローラによって使用される操作ファームウェアおよびデータを記憶するために通常割り当てられる。他のメタブロック１６９または複数のメタブロックは、ホストペレーティングソフトウェア、ホストＦＡＴテーブル等の記憶に割り当てられてもよい。物理記憶空間のほとんどは、データファイルの記憶のために残る。
【００６１】
しかし、メモリシステムコントローラ１１６Ａは、受信したデータが、その様々なファイルオブジェクトの中のホストによってどのように割り当てられたかについては分からない。メモリコントローラ１１６Ａが、典型的にホストと情報をやりとりすることから分かるすべては、コントローラの論理−物理アドレステーブル１６３によって維持されるように、対応する物理アドレスに、ホストによって具体的な論理アドレスに書き込まれたデータが記憶されるということである。
【００６２】
典型的なメモリシステムでは、アドレス空間１６１内でデータの量を記憶するのに必要であるよりも、記憶容量の２，３の別のブロックが設けられている。これらの別のブロックの１つ以上は、メモリの寿命の間に欠陥になる可能性がある他のブロックの代用に、余分のブロックとして設けられてもよい。個々のメタブロック内に含まれたブロックの論理グループ分けは、通常、メタブロックにもともと割り当てられた欠陥ブロックのための余分のブロックの代用を含み、様々な理由で変更されてもよい。メタブロック１７１などの１つ以上の追加のブロックが、消去されたブロックプール中に典型的に維持される。
【００６３】
ホストが、メモリシステムにデータを書き込む場合、コントローラ１１６Ａは、ホストによって、消去されたブロックプール中のメタブロック内の物理アドレスに割り当てられた論理アドレスを変換する。次いで、論理アドレス空間１６１内にデータを記憶するために使用されない他のメタブロックは、結果生じるデータ書き込み操作の間の使用のために、消去されたプールブロックとして消去され、指定される。
【００６４】
元の記憶されたデータが使用されなくなるので、具体的なホスト論理アドレスで記憶されたデータは、新しいデータによって頻繁に上書きされる。メモリシステムコントローラ１１６Ａは、それに応じて、消去されたブロック中に新しいデータを書き込み、次いで、それらの論理アドレスでのデータが記憶される新しい物理ブロックを特定するために、それらの論理アドレスと論理−物理アドレステーブルを交換する。次いで、それらの論理アドレスで元のデータを含むブロックは、消去され、新しいデータの記憶に利用可能になる。書き込み開始時に、消去ブロックプールからの予め消去されたブロック中に十分な記憶容量がないなら、現在のデータ書き込み操作が完了される前に、そのような消去は、しばしば行われるに違いない。これは、システムデータプログラミング速度に悪影響を及ぼす可能性がある。メモリコントローラ１１６Ａは、典型的には、ホストが、それらの同じ論理アドレスに新しいデータを書き込む場合に限り、所定の論理アドレスでのデータが、ホストによって使用されなくなったことが分かる。したがって、メモリの多くのブロックは、一時的に、そのような無効データを記憶することができる。
【００６５】
ブロックおよびメタブロックのサイズは、集積回路メモリチップの領域を効率的に使用するために増加している。これは、個々のデータの書き込みの大部分がメタブロックの記憶容量未満であり、多くの場合、ブロック未満であるデータの量を記憶することをもたらす。メモリシステムコントローラ１１６Ａが、新しいデータを、消去されたプールメタブロックに通常導くので、これは、満たされなくなるメタブロックの一部をもたらす可能性がある。新しいデータが、他のメタブロック中に保存されたいくつかのデータの更新であるなら、新しいデータメタページと連続する論理アドレスを有する他のメタブロックからのデータの残りの有効なメタページは、論理アドレス順に新しいメタブロックにコピーされることが望ましい。古いメタブロックは、他の有効データメタページを保持してもよい。これは、使用されず無効であり、異なるメタブロックに書き込まれる同じ論理アドレスで新しいデータと取り替えられる個々のメタブロックのあるメタページのデータをいずれもたらす。
【００６６】
論理アドレス空間１６１全体にわたってデータを記憶するのに十分な物理メモリ空間を維持するために、そのようなデータは、周期的に圧縮または集約される（ガーベッジコレクション）。これは、連続論理アドレスでデータを読み出すことをより効率的にするので、実際と同様に、それらの論理アドレスと同じ順に、メタブロック内のデータのセクタを維持することも望ましい。したがって、データ圧縮およびガーベッジコレクションは、典型的には、この追加目標で行なわれる。部分ブロックデータ更新を受信する場合にメモリを管理するいくつかの態様およびメタブロックの使用は、米国特許第６，７６３，４２４号（特許文献１８）に記載されている。
【００６７】
直接データファイル記憶システム：
図２Ｇは、２００５年２月１６日に出願された同時係属中の米国特許出願第１１／０６０，２４９号（代理人整理番号：ＳＤＫ０３８０．ＵＳ０）（特許文献３）、および前に参照されている直接データファイル記憶アプリケーションに開示された、「直接データファイル」記憶のためのフラッシュ素子１１６または「直接ファイル記憶」（「ＤＦＳ」）方法／システムによって使用されるレイアウトを示す。
【００６８】
ＤＦＳ装置では、データは、前述した特許出願に記載するように、ファイルバイファイル形式（つまり、ファイルベースのプロトコルを使用する）でホストシステム１００によってアクセスされ、すなわち、データは、ファイル内の固有ファイル識別子（「ファイルＩＤ」または任意の他の固有の基準）およびオフセットアドレスを使用して、論理的にホストによって特定される。論理アドレス空間は、装置のために定義されない。ホストシステム１００は、論理クラスタにファイルデータを割り当てず、ファイルのディレクトリ／インデックステーブル情報は、フラッシュ素子１１６によって生成される。
【００６９】
ホストは、ファイル内の固有ファイルＩＤ（または他の固有の基準）および複数のユニットのデータ（バイトなど）のオフセットアドレスによって、各ファイルをアドレス指定する。このファイルアドレスは、メモリシステムコントローラ１１６Ａに直接付与され、次いで、各ホストファイルのデータが、物理的に記憶されるそれ自身のテーブルを維持する。
【００７０】
このファイルベースのインターフェイスは、図２Ｇで説明され、図２Ｆの論理アドレスインターフェイスと比較されるべきである。各ファイル１，２および３の特定および図２Ｇのファイル内のデータのオフセットは、メモリコントローラに直接渡される。次いで、この論理アドレス情報は、メモリコントローラ機能１７３によって、メモリ１６５のメタブロックおよびメタページの物理アドレスに変換される。
【００７１】
ファイルベースのインターフェイスも、図２Ｌによって説明され、図２Ｈの論理アドレスインターフェイスと比較されるべきである。論理アドレス空間および図２Ｈのホスト維持ＦＡＴテーブルは、図２Ｌに存在しない。もっと正確に言えば、ホストによって生成されたデータファイルは、ファイル内のデータのファイル番号およびオフセットによってメモリシステムに特定される。次いで、メモリシステムは、直接、メモリセルアレイの物理ブロックにファイルをマッピングする。
【００７２】
図２Ｍを参照して、本願明細書において説明される１例の大容量記憶システムの機能層を示す。「直接データファイル記憶バックエンドシステム」（または直接ファイル記憶バックエンドシステム）は、「直接データファイルインターフェイス」（または直接ファイルインターフェイス）１０７および「ファイルベースのフロントエンドシステム」１１５を介して、ファイルベースのインターフェイスチャンネルにわたってホストシステムと通信する。各ホストファイルは、ファイル名によってなど、一意的に特定される。ファイル内のデータは、ファイルに特有の線形アドレス空間内のオフセットアドレスによって特定される。
【００７３】
仮想フラッシュ記憶１５０：
図２Ｎは、１次記憶１１６（図２Ａの１次記憶１１６に類似する）および２次記憶１１０を有する仮想フラッシュ記憶１５０と連動するホストシステム１００を示す。
【００７４】
ホスト１００で作動するホストアプリケーションプログラム１０１は、仮想フラッシュ記憶１５０からデータを読み出し、および／または仮想フラッシュ記憶１５０にデータを書き込むためにホストファイルドライバ１０２を介して連動する。ホストファイルドライバ１０２は、ファイル内に固有ファイルＩＤ（または他の固有の基準）および（バイトなどの）データのユニットのオフセットアドレスによって各ファイルが識別されるホストアドレスを提供する。
【００７５】
仮想フラッシュ記憶１５０は、磁気ディスクの容量を提供しながら、直接データファイル記憶装置として実行し、機能する。
【００７６】
仮想記憶１５０に書き込まれるファイルは、１次記憶１１６に向けられ、次の読み出しおよび／または書き込みアクセスのために利用可能とされる。仮想記憶１５０から読み出されるファイルは、１次記憶１１６でそれらの現在の記憶位置から読み出され、または２次記憶１１０から直接読み出され、次のアクセスのために１次記憶１１６にコピーされる。
【００７７】
最大ファイル数は、１次記憶１１６で保持されてもよい。ファイルの現在の記憶位置は、最後にアクセスされてから最長時間未使用で、１次記憶１１６から２次記憶１１０に移動される。
【００７８】
ファイルは、１次記憶１１６に記憶されたファイルの第１のブロックに初期アクセスを向け、次いで、初期シーク時間後に２次記憶１１０に切り替えることにより、２次記憶１１０から効率的に読み出されてもよい。
【００７９】
１次記憶１１６は、２次記憶１１０の代わりにアプリケーションプログラムファイル１０４を記憶することも可能である。アプリケーションプログラムファイル１０４は、ＣＰＵ１４５によって１次記憶１１６からコピーされ、次いで、メインメモリ１４５から実行される。１次記憶１１６は、２次記憶１１０と比較して速くアクセスされることが可能であるので、アプリケーションプログラムファイル１０４の全体の実行時間が短縮される。
【００８０】
１次記憶１１６中の直接データファイル記憶装置の構成要素、例えば、ファイルベースのフロントエンドシステム１１５、直接データファイルインターフェイス１０７および直接データファイルバックエンドシステム１０８は、前述した同時係属中の特許出願に記載されている。
【００８１】
以下に詳細に記載するように、ファイルディレクタモジュール１０６は、１次記憶１１６および２次記憶１１０中に、および１次記憶１１６および２次記憶１１０からのファイルの転送を管理する。ファイルデータを移動させる処理は、同時係属中の特許出願に記載されたガーベッジコレクション処理に従って行なわれてもよく、それによって、データは、バックグラウンドタスクとしてコピーされてもよく、または向上効率および全体性能に基づいてフォアグラウンドタスクとしてインターリーブされてもよい。
【００８２】
ファイルディレクタ１０６は、ホスト１００と仮想記憶１５０との間で転送されているデータを一時的に記憶するために使用されることができるバッファ１０５（またはメモリ１０５）にアクセスする。
【００８３】
１次記憶１１６は、ディスクファイルシステム１１３、および１次記憶１１６が論理インターフェイス１１１Ｃによって従来の磁気ディスク１１０と連動することを可能にするディスクドライバ１１２を含む。ディスクファイルシステム１１３およびディスクドライバ１１２は、１次記憶１１６と２次記憶１１０との間でファイルデータ転送を可能とするために、磁気ディスク１１０によって使用される従来の論理アドレス空間に、直接データファイルインターフェイス１０７でデータファイルをマッピングする。
【００８４】
磁気ディスク１１１上に記憶されるファイルのデフラグなどのバックグラウンド処理を行なうために、ディスクファイルシステム１１３およびディスクドライバ１１２も使用されてもよいことは注目すべきである。
【００８５】
ファイルディレクタ１０６は、ファイルのためのデータが位置する記憶（つまり、１次および／または２次）を識別するために、以下に詳細に記載されたファイルロケータテーブル１０６Ａ（図２Ｓおよび２Ｔで示される）を使用する。ファイルロケータテーブルは、フラッシュメモリ１１６Ｂに記憶することが可能であり、テーブルのすべてまたは一部のコピーもメモリ１１６Ｄのキャッシュに格納されてもよい。
【００８６】
図２Ｓは、ファイルロケータテーブル１０６Ａがファイルディレクタ１０６と連動する状態で、大容量記憶システム１５０（図２Ｎで示されるシステムに類似する）のブロック図を示す。図２Ｓは、また、ファイルインターフェイス１０３を介してホスト１００から受信されるファイルデータパス（１０３Ａであると識別される）、論理インターフェイス１１１Ｃを介するＬＢＡデータパス１０３Ｂおよびファイルディレクタ１０６と直接データファイルインターフェイス（または直接ファイルインターフェイス）１０７との間を流れる制御情報１０３Ｃを示す。
【００８７】
図２Ｔは、ファイルロケータテーブル１０６Ａエントリを示す。ファイルロケータテーブル１０６Ａは、記憶システム１５０に記憶される各ファイルのための１つのエントリ（欄１０６Ｂに基づく）を含む。各エントリは、１次記憶１１６に記憶される順次ファイルオフセットアドレスを有するデータランの開始および終了アドレス（欄１０６Ｃ）、および２次記憶１１０（欄１０６Ｄ）に記憶される順次ファイルオフセットアドレスを有するデータランの開始および終了アドレスを記録する。ファイルの有効データは、１または両方の記憶のいずれかに存在していてもよい。
【００８８】
データが記憶に書き込まれ、記憶の間にコピーされ、または記憶から削除される場合、ファイルロケータテーブル１０６Ａは更新される。ファイルロケータテーブル１０６Ａは、ファイル内に具体的なオフセットアドレスを有するデータが位置する記憶だけを識別する。それは、データが位置する記憶内の物理記憶位置を識別しない。これは、２つの記憶内の構造にインデックスを付ける正常なファイルディレクトリおよびファイルによって行われる。
【００８９】
大容量記憶システム１５０は、いくつかの長所を有する。例えば、本発明の１つの態様では、２次記憶１１０は、利用可能または利用不可能な状態に位置することができる。利用不可能な状態は、装置が物理的に利用不可能、またはメモリコントローラが利用可能になるまで装置にアクセスすることができないことを意味することが可能である。
【００９０】
１次記憶１１６は、常に利用可能な状態であり、その結果、メモリコントローラ１１６Ａによってアクセス可能である。２次記憶１１０が利用可能な状態である場合、次いで、ファイルディレクタ１０６は、１次記憶１１６および２次記憶１１０の両方にアクセスすることが可能である。
【００９１】
ファイルインターフェイスチャンネル１０３が、ホストシステムからデータを受信する場合、コントローラ１１６Ａは、１次記憶１１６または２次記憶１１０のいずれかにデータを書き込むことが可能である。データが１次記憶１１６Ａに最初に書き込まれる場合、データは、次いで、バックグラウンド処理として２次記憶１１０にコピーされる。
【００９２】
コントローラ１１６Ａは、記憶空間使用量を最適化することに基づいて、およびホストが書き込み処理をできるだけ速く完成することを可能にするために、適切な記憶装置を選択する。１次記憶１１６Ａは、２次記憶１１０より低いシーク時間を有するので、最初に、１次記憶１１６Ａに書き込み、次いで、２次記憶１１０にコピーすることが有利である。
【００９３】
他の態様では、仮想フラッシュ記憶１５０は、速いシステムブーツおよび速いアプリケーション起動を提供する。そのブーツプロセスの間のホストシステム、例えば、オペレーティングシステムおよび構成ファイルによって要求される情報は、１次記憶１１６にファイルバイファイル形式で記憶されることが可能である。この状況で、１次記憶１１６は、読み出しキャッシュとして作動し、その速いランダムリードアクセス特性は、はるかに速いシステムアクセスおよび起動を可能とする。
【００９４】
ブーツプロセスに使用される情報は、識別されることができ、上書きされないように保護されることが可能である。この初期情報は、２次記憶１１０からコピーされるか、または１次記憶１１６に記憶されることが可能である。アプリケーションソフトウェアファイル（１０４として示される）は、アプリケーションがホストシステムによって速く始めることができるのと同様に処理されることが可能である。
【００９５】
仮想記憶１５０は、低電力記憶装置として作動することも可能である。典型的には、２次記憶１１０は、フラッシュメモリベースの１次記憶１１６より多くの電力を消費する。１次メモリ記憶１１６は、新たに書き込まれた情報のコピーと一緒に、１次記憶１１６の新たにアクセスされた情報のコピーを維持することにより、読み出し／キャッシュ装置として使用されることが可能である。これは、１次記憶１１６でのキャッシュヒットによって、仮想ファイル記憶１５０がホスト要求に速く応答することを可能にする。次いで、コントローラ１１６Ａは、２次記憶１１０をスピンダウンして、電力消費を低減することが可能である。これは、携帯用アプリケーション、例えば、ラップトップ、ノートブック、他のものにおいて特に有利である。
【００９６】
仮想ファイル記憶１５０は、衝撃耐性記憶装置としても作動する。装置が高い機械的衝撃の危険のある環境で使用される場合、コントローラ１１６Ａは、２次記憶１１０をスピンダウンすることが可能である。そのような環境の可能性が高い場合、コントローラ１１６Ａファームウェアは、２次記憶１１０をスピンダウンするようにプログラムされることが可能である。読み出し／書き込みキャッシュとして作動する１次記憶１１６は、ホストが機能することを必要とする情報をホストシステムに提供する。
【００９７】
一旦、２次記憶１１０が利用可能になれば、データは、次いで、１次記憶１１６と２次記憶１１０との間で同期される。携帯機器について、一旦、装置がドッキングステーションに置かれれば、２次記憶１１０は利用可能になる。他の態様では、動き検出回路類は、システムが、衝撃傾向の環境にもはやないかどうかを決定するために使用されることが可能である。また、ユーザは、２次記憶１１０がどの時間にも利用可能なように、手動でセッティングを変更することが可能である。他の場合では、プラギングによって、電源出力のシステムは、コントローラ１１６Ａに信号を送って、２次記憶１１０を始動してもよい。
【００９８】
１次記憶１１６および２次記憶１１０を有する仮想フラッシュ記憶１５０は、容易にアクセス可能な短期バックアップを有する信頼できる記憶装置を提供する。情報が、２次記憶１１０に転送された後でさえ、１次記憶１１６は、書き込みキャッシュとして作動し、情報を保持することが可能である。情報ができるだけ長く維持され、空間が必要な場合のみ、上書きされる場合、書き込みキャッシュは、新たに書き込まれた情報のコピーを提供する。これは、２次記憶１１０がディスクの故障により機能が停止しデータを失った場合、保護手段を提供する。
【００９９】
２次記憶１１０から読み出されるデータがコピーされ、１次記憶１１６に記憶される場合、１次記憶１１６は、読み出しキャッシュとして作動する。コピーされたデータは、フラッシュメモリ１１６Ｂに記憶され、ファイルディレクタ１０６によって制御される。２次記憶１１０から読み出されるデータが選択的にコピーされてもよいことは注目すべきである。これは、データが読み出される頻度、性質、つまり読み出されるファイルの種類およびサイズ、または他の基準に基づくこともあり得る。コントローラ１１６Ａファームウェアは、１次記憶１１６を構成するようにプログラムされて、そのような基準に基づいて読み出しキャッシュとして作動してもよい。
【０１００】
前述したように、１次記憶１１６は、書き込みキャッシュとして作動することも可能である。ホストシステム１００が、ファイルインターフェイスチャンネル１０３を介してデータを送信する場合、ファイルディレクタ１０６は、フラッシュメモリ１１６Ｂにデータを完全にまたは部分的に記憶し、次いで、仮想記憶１５０が使用されていない場合、２次記憶１１０にデータをコピーすることが可能である。１次記憶１１６でコピーされるデータの量は、ファイルのサイズ、および１次記憶１１６で利用可能な空き領域の量に所定時間依存する。これは、１次記憶１１６がより速いアクセス時間を有するので、ホストシステムが速く書き込むことを可能にする。
【０１０１】
さらに本発明の他の態様では、メモリコントローラ１１６Ａは、ホストから受信されるファイルを２つ以上のセグメントに分割する。１つのセグメントは、１次記憶１１６に記憶され、他のセグメントは、２次記憶１１０に記憶される。ホストがファイルを要求する場合、容易にファイルを位置することができるように、１次記憶１１６に記憶されるセグメントは、ファイルのための十分な情報を含む。ホストが、完全なファイルを読み出さなければならない場合、第２のセグメントが２次記憶１１０から得られている間に、１次記憶１１６に記憶される第１のセグメントに速くアクセスすることが可能である。
【０１０２】
図２Ｑは、前述した概念を説明する。ファイル「Ｆ」は、書き込みコマンドに応じて、ファイルインターフェイス１０３を介してホストから受信される。メモリコントローラ１１６Ａは、最初に、１次記憶１１６に全ファイルを書き込む。ホスト書き込み処理が完了した後、メモリコントローラ１１６Ａは、２つの部分、Ｆ１およびＦ２にファイルデータを分割する。データが、１次記憶１１６にデータをコピーするために最初に待機する代わりに受信されるので、メモリコントローラ１１６Ａは、リアルタイムで、複数のセグメントにファイルを分割してもよいことは注目すべきである。
【０１０３】
Ｆ１は、１次記憶１１６に記憶され、Ｆ２は、２次記憶１１０にコピーされる。典型的には、コピー処理は、バックグラウンド処理として行われる。
【０１０４】
セグメントＦ１およびＦ２のサイズは、２次記憶１１０および１次記憶１１６にアクセスするためのシーク時間に依存し、それぞれ、ファイルの全体サイズおよびデータがホストに転送されることが可能な割合に依存する。メモリコントローラ１１６Ａは、ファイルを分割して、ホストへのデータ転送が効率的で、メモリ空間の使用量が最適であることを確保する。
【０１０５】
ホストがファイルＦを読み出さなければならない場合、最初に、１次記憶１１６に記憶されるセグメントＦ１にアクセスすることとなる。１次記憶１１６が、より速いアクセス時間を有するので、ホストは、より速い速度でＦ１にアクセスすることが可能である。Ｆ１がホストに転送されている間に、コントローラ１１６Ａは、より遅いシーク時間を有する２次記憶１１０からセグメントＦ２を得る。従って、Ｆ１転送が完全な場合、Ｆ２が既に得られ、転送される準備がされる。これは、仮想記憶１５０から読み出し処理の全体効率を向上する。
【０１０６】
ファイルロケータ１０６Ａは、ファイルセグメントＦ１およびＦ２がどこに記憶されるのかを追跡する（図２Ｔおよび図２Ｒに示される部分的な表）。図２Ｒの部分的な表は、セグメント（例えば、１次記憶１１６に記憶されたセグメント１（つまりＦ１）および２次記憶１１０に記憶されたセグメント２）のトップレベルの記憶位置を示す。ファイルデータを転送するために、ファイルディレクタ１０６は、ファイルロケータ１０６Ａにアクセスして、特定のセグメントがどこにあるかを決定する。
【０１０７】
さらに本発明の他の態様では、論理ブロックアドレスをキャッシュに格納する代わりに、ファイルをキャッシュに格納することは、先行技術のシステムに対する利点を提供する。以前のデュアル記憶媒体システムでは、ホストは、フラッシュ素子とハードディスクとの両方の間で論理インターフェイスを有する。ホストに／ホストから転送されるデータは、論理アドレスによって識別され、キャッシュに格納することは、ファイルの代わりに、論理アドレス上で行われる。ファイルの論理アドレスの全範囲が適切なときに正確な装置に位置することを確実にする方法はない。
【０１０８】
例えば、システムは、ハードディスク（２次記憶）の電源が落とされる場合、またはディスクが取り出される場合（例えば、切り離された携帯用機器で）、実行ファイルがフラッシュ素子に記憶されることを確実にしなければならない。前のシステムでは、これは、フラッシュ中で実行ファイルのための論理アドレスをキャッシュに格納し、次いで、フラッシュ素子でそれらをロックすることにより達成される。論理アドレスが、予めディスクからアクセスされた場合、キャッシュに格納することが行なわれる。しかし、論理アドレスが、実行ファイル全体を表すという保証はない。それは、携帯用機器が接続され、ディスクが利用可能な場合に使用されるアプリケーション内の機能のためのみであってもよい。切り離されたモードで使用される他の機能は、全くキャッシュに格納されなくてもよい。
【０１０９】
大容量記憶システム１５０は、論理アドレス範囲の代わりに、完全なファイルをキャッシュに格納することにより、前述した欠点を解決する。これは、１次記憶１１６が速いアクセスに利用可能な状態で、（前述した例で検討されるように）実行ファイル全体がキャッシュに格納されることを確実にする。
【０１１０】
処理フロー：
本発明の１つの態様では、１次記憶１１６のファイルディレクタ１０６は、以下に要約されるとともに、図３〜６および８Ａ／８Ｂ〜９に例示される処理フローチャートに関して詳細に記載される様々な処理を行なう。
【０１１１】
新しいファイルが書き込みのために開かれる場合、それは、１次記憶１１６内で開かれる。大容量記憶システム１５０は、このファイル内にデータを書き込み、更新し、読み出すための直接データファイル装置として機能する。
【０１１２】
既存のファイルが書き込みのために開かれる場合、それは、また、１次記憶１１６で開かれる。現バージョンが２次記憶１１０に常駐する場合、それは、次いで、１次記憶１１６にコピーされる。これは、バックグラウンド処理として行なわれるが、低い負荷サイクルで、１次記憶１１６の他のデータを読み出しまたは書き込むとともに、インターリーブされてもよい。再び、大容量記憶システム１５０は、このファイル内にデータを書き込み、更新し、読み出すための直接データファイル装置として機能する。
【０１１３】
既存のファイルが、読み出すために開かれる場合、ファイルの最新のバージョンは、１次記憶１１６または２次記憶１１０のいずれかのその記憶位置から開かれる。ファイルが、２次記憶１１０から読み出される場合、それは、１次記憶１１６にコピーされる。ファイルは、２次記憶１１０から読み出される間に、同時にコピーされることが好ましいが、それは、個々のバックグラウンド処理としてコピーされてもよく、または低い負荷サイクル処理として１次記憶の他のデータを読み出しまたは書き込むとともに、インターリーブされてもよい。
【０１１４】
ファイルが閉じられる場合、１次記憶１１６から２次記憶１１０にコピーされてもよい。これは、１次記憶１１６の最大数のファイルを保持しながら、最長時間未使用で通常行われる。ファイルが削除されるまで、大部分の有効電流ファイルバージョンが１次記憶１１６に残る間に、そのようなコピーは、先制のバックグラウンド処理として行なわれてもよい。
【０１１５】
いくつかのファイルは、１次記憶１１６にロックされてもよく、その結果、１次記憶１１６から常に読み出される。例えば、オペレーティングシステムおよびアプリケーションプログラム１０４に関連するファイルは、１次記憶１１６から常に読み出される。１次記憶１１６のいくつかのファイルも、バックアップとしてのセキュリティのために２次記憶１１０にコピーされる。
【０１１６】
ファイルの動作中のバージョンが、２次記憶１１０に割り当てられる場合、ファイルのためのデータの初期ブロックは、次いで、１次記憶１１６に保持されてもよい。
【０１１７】
現バージョンが２次記憶１１０にあるファイルが読み出される場合、２次記憶１１０が順次データのためにシークを行なう間、そのデータの第１のブロックは、１次記憶１１６から読み出されてもよい。これは、記憶されたファイルデータにより速いアクセスを提供する。
【０１１８】
ファイルが、オンカードアプリケーション（１０４）のある種類によって読み出すことによって開かれる場合、次いで、２次記憶１１０から１次記憶１１６にファイルをコピーすることは抑制されてもよい。これは、ウイルス検査ソフトウェアなどのアプリケーションが、２次記憶１１０の多くのファイル上で直接作動することを可能にする。
【０１１９】
ホストインターフェイスが不応である場合、コマンドがホストインターフェイスで受信され、または保留中のファイルすべてがコピーされるまで、複数ユニットのデータを連続的に転送することにより、ファイルがコピーされることに注目すべきである。
【０１２０】
ホストインターフェイスが動作中の場合、ファイルは、バッファ（１０５、図２Ｎ）と不応である記憶との間で複数ユニットのデータをコピーして、ホストインターフェイスから複数ユニットのデータへの書き込み／ホストインターフェイスからの読み出しをインターリーブすることによりコピーされる。１次または２次記憶のいずれかから／１次または２次記憶のいずれかにホストインターフェイスからデータを読み出す／ホストインターフェイスにデータを書き込むための処理は、処理とインターリーブされて、２つの記憶での処理が大部分は並列である方法で、他の記憶に／他の記憶からデータをコピーしてもよい。
【０１２１】
１ユニットのデータは、任意の便利なユニットであってもよい。例えば、５１２バイトを含むデータのセクタであってもよく、それは、２次記憶１１０にアドレス指定されることが可能な最小ユニットのデータである。また、データのページであってもよく、それは、フラッシュメモリ１１６Ｂでプログラムすることが可能な最小ユニットのデータである。ページは、１，２，４，８またはそれ以上のセクタを含んでいてもよい。データのメタページであってもよく、それは、フラッシュメモリ１１６Ｂにプログラムされることが可能な最大ユニットのデータである。メタページは、１，２，４，８またはそれ以上のページを含んでいてもよい。また、メタページより大きな１ユニットのデータであってもよい。１つの記憶に書き込まれ／読み出される１ユニットのデータは、他の記憶に書き込まれ／読み出される１ユニットのデータとは異なるサイズを有していてもよい。
【０１２２】
処理フローチャートを詳細に参照すると、図３は、本発明の１つの態様による、ホストシステム１００と仮想記憶１５０との間でのデータの転送のために実行可能なプロセスステップの全体の処理フローチャートを示す。図３を詳細に参照して、プロセスは、ステップＳ３００で開始する。ステップＳ３０２では、コントローラ１１６Ａは、ファイルを書き込むためにコマンドが受信されるかどうかを決定する。コマンドが受信されるならば、プロセスは、図４に記載されたステップＳ３０６に進む。
【０１２３】
書き込みコマンドがないなら、ステップＳ３０４で、ファイル読み出し処理のためのコマンドが受けられたかどうかを決定する。読み出しコマンドが受信されるならば、プロセスは、図５を参照して以下に説明するステップＳ３０８に進む。
【０１２４】
読み出しコマンドが、ステップＳ３０４、次いでステップＳ３１０で受信されなかった場合、コントローラ１１６Ａは、ファイルコピーログが、任意のエントリを含むかどうかを決定する。含むならば、プロセスは、以下の図６で説明するステップＳ３１２に進む。エントリが存在しないならば、プロセスは、ステップＳ３０２に戻る。
【０１２５】
ファイル書き込み処理フロー：
図４は、本発明の１つの態様による仮想記憶にデータを書き込むための実行可能なプロセスステップの処理フローチャートを示す。図３で示すように、ファイル書き込みプロセスは、ステップＳ３０６で開始する。
【０１２６】
コントローラ１１６Ａは、ステップ４００で、目標ファイルが既に開いているかどうかを決定する。ファイルが開いていないならば、ステップＳ４０２で、目標ファイルは、１次記憶１１６で開かれる。ファイルは、ファイルベースのインターフェイスを使用して開かれる。
【０１２７】
ステップＳ４０４では、ファイルロケータ１０６Ａは読み出される。ファイルロケータ１０６Ａは、１次記憶１１６または２次記憶１１０のいずれかに記憶されているようなファイルの記憶位置を識別するために使用される。
【０１２８】
ファイルの記憶位置情報がステップＳ４０６で読み出された後、コントローラ１１６Ａは、ファイルの現バージョンが、２次記憶１１０に記憶されるかどうかを決定する。ファイルが２次記憶１１０に位置する場合、エントリは、次いで、１次記憶１１６によって維持されるコピーログ７００（図７に示される）に加えられる。コピーログは、メモリ１１６Ｄに記憶され、行なわれる必要のある様々なコピー処理のリストを含む。コピーログは、コピーされる必要のある各ファイルに対してエントリを有する。また、ファイルがどこに位置する可能性があるかを識別するエントリ、例えば、１次記憶１１６または２次記憶１１０を含む。コピーログは、また、あて先を識別するエントリを含み、ファイルは、つまり、１次記憶１１６、２次記憶１１０またはバッファ１０５にコピーされる。
【０１２９】
ファイルの現バージョンが、２次記憶１１０に記憶されないならば、プロセスは、ステップＳ４１０に進む。ステップＳ４１０では、書き込みコマンドは、直接データファイルバックエンドシステム１０８に送信される。
【０１３０】
ステップＳ４１２では、ファイルディレクタ４１２は、空間がデータを書き込むことができるかどうかを決定する。データが単一ユニットとして書き込まれるので、空間がデータを書き込むために利用可能かどうかを決定するために、低いしきい値が使用される。しきい値は、少数のユニットのデータだけが１次記憶１１６にさらに書き込まれることが可能な容量を定義するために設定されているが、そのとき、１次記憶１１６から２次記憶１１０へのファイルコピー処理は、１次記憶１１６でより利用可能な空間を生成するために開始されるべきである。空間が利用可能でないならば、ステップＳ４１４で、ファイルは、１次記憶１１６からコピーするために選択される。
【０１３１】
空間が、ステップＳ４１２で利用可能ならば、ステップＳ４１６で、ファイルディレクタ１０６は、ホストシステム１００からのデータが利用可能かどうかを決定する。ホストデータが利用可能でないならば、プロセスは、ステップＳ４２２に進む。
【０１３２】
データが利用可能ならば、ステップＳ４１８では、ファイルディレクタ１０６は、データが１次記憶１１６によって要求されているかどうかを決定する。要求されているならば、１ユニットのデータは、１次記憶１１６に転送される。データが１次記憶１１６によって要求されていないならば、プロセスはステップＳ４２２に進む。
【０１３３】
ステップＳ４２２では、ファイルディレクタ１０６は、ファイルをコピーするエントリが、コピーログ７００に存在するかどうかを決定する。存在するならば、ファイルのための１つ以上のデータユニットは、ステップＳ４２４でコピーされる。エントリが存在しないならば、ステップＳ４２６で、ファイルディレクタ１０６は、他のコマンドが受信されるかどうかを決定する。他のコマンドが受信されないならば、プロセスは、ステップＳ４１２に戻る。他のコマンドが受信されるならば、ステップＳ４２８で、ファイルロケータは、１次記憶１１６または２次記憶１１０のいずれかでファイルの現在の記憶位置を反映するために更新される。その後、ステップＳ４３０で、プロセスは、ステップＳ３０２に戻る。
【０１３４】
図８Ａは、メモリコントローラ１１６Ａが、１つのセグメントが１次記憶１１６および２次記憶１１０の他のセグメントに記憶されることが可能であるように、入ってくるファイルを分割する処理フローチャートを示す。図８を詳細に参照すると、ステップＳ８００で、メモリコントローラ１１６Ａは、ホストシステムから書き込みコマンドを受信する。
【０１３５】
ステップＳ８０２で、メモリコントローラ１１６Ａは、１次記憶１１６にファイルを書き込む。ファイルが書き込まれた後、ステップＳ８０４で、メモリコントローラ１１６Ａは、ファイルが分割されることが可能（またはすべき）かどうかを決定する。ファイルが分割されることができない／分割されるべきでないならば、プロセスは、（ステップＳ８０６で）ステップＳ８００に戻る。
【０１３６】
ファイルが分割されるならば、ステップＳ８０８で、メモリコントローラ１１６Ａは、ファイルセグメント（Ｆ１およびＦ２、図２Ｑ）を決定し、ステップＳ８１０で、ファイルセグメントは、２次記憶１１０にコピーされる。図６を参照して以下に記載するように、コピー処理は、バックグラウンド処理として行われる。
【０１３７】
図８Ｂは、本発明の１つの態様によるファイルセグメンテーションを扱うためのさらに他のフローチャートを示す。プロセスは、ステップＳ８１２で開始し、ステップＳ８１４で、ファイル（「Ｆ」）のために書き込みコマンドは、ホストシステム１００から受信される。
【０１３８】
ステップＳ８１６で、（ファイルディレクタ１０６を介して）メモリコントローラ１１６Ａは、１次記憶１１６（ステップＳ４１２、図４に類似する）に空間が存在するかどうかを決定する。空間が、１次記憶１１６で利用可能ならば、ステップＳ８１８で、ファイルセグメント（例えば、Ｆ１、ファイルヘッダ）を書き込むために、書き込みコマンドは、１次記憶１１６に送信される。ステップＳ８２０で、ファイルディレクタ１０６は、ファイルセグメントＦ２を書き込むために、２次記憶１１０に書き込みコマンドを送信する。ステップＳ８１８およびＳ８２０が、ステップＳ８１６後に同時に行われることが可能であることは注目すべきである。
【０１３９】
ステップＳ８２２で、ファイルセグメントＦ１のための少なくとも１ユニットのデータは、１次記憶１１６に送信される。任意のデータユニットが、ステップＳ８２２で書き込まれる前に、ステップＳ８２０で書き込みコマンドが送信されることは注目すべきである。これは、データユニットが１次記憶１１６に書き込まれる間に、２次記憶１１０がそのシーク時間を経ることを可能にする。これは、全体の書き込みプロセスを促進する。
【０１４０】
ステップＳ８２４で、セグメントＦ２のためのデータは、２次記憶１１０へ送信され、ステップＳ８３０でプロセスは終了する。
【０１４１】
ステップＳ８１６で、空間が１次記憶１１６で利用不可能ならば、ステップＳ８２６で、書き込みコマンドは、２次記憶１１０に送信され、ステップＳ８２８で、ファイルのためのデータは、２次記憶１１０に送信される。
【０１４２】
ファイル読み出しプロセス：
図５は、本発明の１つの態様によるファイル読み出しプロセスのための処理フローチャートを示す。ファイル読み出しプロセスは、図３のステップＳ３０８から開始する。ファイルディレクタ１０６は、ステップＳ５００で、ファイルロケータ１０６Ａを読み出す。
【０１４３】
ステップＳ５０２で、ファイルディレクタ１０６は、ファイルが１次記憶１１６にあるかどうかを決定する。ファイルがあるならば、ステップＳ５０４で、読み出しコマンドは、１次記憶１１０に送信される。ファイルが、１次記憶１１０に位置しないならば、ステップＳ５１２で、現在のファイルは、２次記憶１１０からコピーするためにログ記録され、ステップＳ５１４で、読み出しコマンドは、２次記憶１１０に送信され、プロセスは、ステップＳ５０６に進む。
【０１４４】
ステップＳ５０６で、ファイルディレクタ１０６は、データが、選択された記憶（つまり、１次記憶１１６または２次記憶１１０）から利用可能かどうかを決定する。利用可能ならば、ステップＳ５０８で、データは、選択された記憶から転送される。データが利用可能でないならば、プロセスは、ステップＳ５１６に進み、ここで、ファイルディレクタ１０６は、ファイルコピーログエントリが存在するかどうかを決定する。エントリが存在するならば、ステップＳ５１８で、ファイルに対して１つ以上のデータユニットはコピーされる。エントリが存在しないならば、ステップＳ５１０で、ファイルディレクタ１０６は、他のコマンドが受信されるかどうかを決定する。他のコマンドが受信されないならば、プロセスは、ステップＳ５０６に戻り、そうでなければ、ステップＳ５２０で、プロセスは、ステップＳ３０２（図３）に進む。
【０１４５】
図９は、本発明の１つの態様による図８Ａおよび８Ｂに関して、前述したように、２つ（またはより多いセグメント）に記憶されたファイルを読み出すための処理フローチャートを示す。図９を詳細に参照すると、プロセスは、ステップＳ９００で開始し、ステップＳ９０２で、ファイル（「Ｆ」）のための読み出しコマンドは、ホストシステム１００から受信される。
【０１４６】
ステップＳ９０４で、ファイルディレクタ１０６は、要求されるファイル（「Ｆ」）が分割されるかどうかを決定する。ファイルが分割されないならば、ステップＳ９１４で、ファイルのための読み出しコマンドは、ファイルがどこに記憶されるかに基づいて、１次記憶１１６／２次記憶１１０に送信される。ステップＳ９１６で、ファイルのためのデータは、１次記憶１１６または２次記憶１１０から受信され、プロセスは終了する。
【０１４７】
ファイルが分割されるならば、ステップＳ９０６で、ファイルディレクタ１０６は、１次記憶１１６のメモリコントローラ１１６ＡにセグメントＦ１のための読み出しコマンドを送信する。ステップＳ９０８で、ファイルディレクタ１０６は、２次記憶１１０にセグメントＦ２のための読み出しコマンドも送信する。
【０１４８】
ステップＳ９１０で、セグメントＦ１のためのデータは、１次記憶１１６から受信される。データが、１次記憶１１６から受信される間に、２次記憶１１０は、セグメントＦ２のためのデータを送信するためのそのシーク時間を完了していることに注目すべきである。これは、読み出しプロセスの全体効率を向上する。
【０１４９】
ステップＳ９１２で、セグメントＦ２のためのデータは、２次記憶１１０から受信され、プロセスは終了する。
【０１５０】
ファイルコピー処理：
図６は、本発明の１つの態様による、データをコピーするためのフローチャートを示す。フローチャートは、図３のプロセスステップＳ３１２を実行することである。
【０１５１】
図６を詳細に参照すると、ステップＳ６００で、ファイルディレクタ１０６は、ホストインターフェイスが不応である、つまり、データを転送するためにホスト１００から動作中のコマンドがあるかどうかを決定する。動作中のコマンドがあるならば、プロセスは、以下に説明するステップＳ６２２に進む。
【０１５２】
ホストインターフェイスが不応であるならば、ステップＳ６０２で、ファイルディレクタ１０６は、１次記憶１１６からのファイルコピー処理が保留中である、つまり、コピー処理が進行中または行われるために待機しているかどうかを決定する。ファイルコピー処理が保留中であれば、ステップＳ６０４で、ファイルのための少なくとも１ユニットのデータは、１次記憶１１６から２次記憶１１０にコピーされ、プロセスは、以下に説明するステップＳ６０６に進む。
【０１５３】
ファイルコピー処理が、ステップＳ６０２で保留中でないならば、ステップＳ６１２で、ファイルディレクタ１０６は、ファイルコピー処理が２次記憶１１０から保留中であるかどうかを決定する。処理が保留中ならば、ステップＳ６１４で、少なくとも１ユニットのデータは、２次記憶１１０から１次記憶１１６に転送され、プロセスは、ステップＳ６０６に進む。
【０１５４】
２次記憶１１０からのファイルコピー処理が保留中でないならば、ステップＳ６１６で、ファイルディレクタ１０６は、ファイルコピー処理がバッファ１０５から保留中かどうかを決定する。ファイルコピー処理が、バッファ１０５から保留中ならば、ステップＳ６１８で、少なくとも１ユニットのデータは、バッファ１０５から１次記憶１１６または２次記憶１１０のいずれかに転送され、プロセスは、ステップＳ６０６に進む。ファイルコピー処理が、保留中でないならば、ステップＳ６２０で、プロセスは、ステップＳ３０２に戻る。
【０１５５】
ステップＳ６０６で、ファイルディレクタ１０６は、他のコピーコマンドが受信されるかどうかを決定する。他のコマンドが受信されていないならば、プロセスは、ステップＳ６０２に戻る。コマンドが受信されているならば、ステップＳ６０８で、ファイルロケータ１０６Ａは、ファイルの現在の記憶位置を反映するために更新され、プロセスは、（ステップＳ６１０で）ステップＳ３０２に戻る。
【０１５６】
ステップＳ６２２を詳細に参照すると、ファイルディレクタ１０６は、１次記憶１１６が動作中かどうかを決定する。動作中であるならば、ステップＳ６２４で、ファイルディレクタ１０６は、ファイルコピー処理がバッファ１０５と２次記憶１１０との間で保留中かどうかを決定する。ファイル処理が保留中ならば、ステップＳ６２６で、少なくとも１ユニットのデータは、バッファ１０５と２次記憶１１０との間で転送される。ファイル処理が、ステップＳ６２４で保留中でないならば、ステップＳ６３４で、プロセスは、ステップＳ３０２に戻る。
【０１５７】
１次記憶１１６が、ステップＳ６２２で動作中でないならば、ステップＳ６２８で、ファイルディレクタ１０６は、２次記憶１１０が動作中かどうかを決定する。２次記憶１１０が動作中でないならば、ステップＳ６３４で、プロセスは、ステップＳ３０２に戻る。
【０１５８】
２次記憶１１０が動作中ならば、ステップＳ６３０で、ファイルディレクタ１０６は、ファイルコピー処理が、バッファ１０５と１次記憶１１６との間で保留中かどうかを決定する。ファイル処理が保留中ならば、ステップＳ６３２で、少なくとも１ユニットのデータは、バッファ１０５と１次記憶１１６との間で転送される。
【０１５９】
ファイルコピー処理が、ステップＳ６３０で保留中でないならば、プロセスは、ステップＳ６３４に進む。
【０１６０】
ホスト１００が不応である間、前述したファイルコピー処理は、１ユニットのデータを転送する。処理は、バックグラウンドで行われ、ホスト１１０から仮想記憶１５０に書き込み処理でインターリーブされる。インターリーブ（つまり、ホスト１１０から書き込まれた書き込みデータの量およびコピーされたデータの量）の比率は、コピーされている１ユニットのデータのサイズを変えることにより変えることができる。１ユニットのデータのサイズは、実行を最適化するために選択される。
【０１６１】
処理のリスト：
図２Ｐは、ファイルディレクタ１０６によってデータ転送処理のリストを提供する表１を示す。
【０１６２】
処理２０１は、ホスト１００から１次記憶１１６への好ましいファイル書き込み処理である。処理２０２は、ホスト１００から２次記憶１１０への書き込み処理である。この処理は、不十分な空間が１次記憶１１６において利用可能ならば使用されてもよい。
【０１６３】
ファイルの現バージョンが１次記憶１１６に存在するならば、処理２０３は、１次記憶１１６からホスト１００へのファイル読み出し処理である。処理２０４は、２次記憶１１０からファイルデータを読み出すために使用される。
【０１６４】
処理２０５は、ファイルコピー処理である。この処理中に、ファイルデータは、１次記憶１１６から２次記憶１１０にコピーされる。ホストインターフェイス１０３が不応である場合、処理２０５が行われることが好ましい。
【０１６５】
処理２０６は、また、ファイルコピー処理である。この処理中に、ファイルデータは、２次記憶１１０から１次記憶１１６にコピーされる。インターフェイス１０３が不応である場合、処理２０６も行なわれることが好ましい。
【０１６６】
処理２０７〜２１０は、バッファ１０５を使用して行われ、ホスト１００から２次記憶１１０に／からデータの転送、および／またはホスト１００から１次記憶１１６に／からデータの転送と同時に行われてもよい。処理２０７は、ファイルデータがバッファ１０５にフラッシュメモリ１１６Ｂからコピーされるファイルコピー処理である。処理２０８は、ファイルデータがバッファ１０５から１次記憶１１６にコピーされるファイルコピー処理である。
【０１６７】
処理２０９は、２次記憶１１０からバッファ１０５にファイルデータをコピーするために行なわれる。処理２１０は、バッファ１０５から２次記憶１１０にファイルデータをコピーするために行なわれる。
【０１６８】
本発明の１つの態様では、仮想記憶１５０は、大容量記憶システムに、直接データファイルフラッシュメモリシステムおよび従来の磁気ディスクを提供する。これは、従来の磁気ディスクと同様に、直接データファイルシステムフラッシュ記憶装置にホストシステムアクセスへのアクセスを提供する。
【０１６９】
本発明を具体的な実施形態を参照して説明してきたが、これらの実施形態は実例にすぎず、限定されない。本発明の多くの他の用途および実施形態は、この開示および添付の特許請求の範囲の観点から明らかになる。
【図面の簡単な説明】
【０１７０】
【図１Ａ】フラッシュ素子を使用するホストシステムのブロック図を示す。
【図１Ｂ】図１Ａのホストシステムのアーキテクチャを示す。
【図２Ａ】本発明の１つの態様による仮想記憶のブロック図を示す。
【図２Ｂ】本発明の１つの態様によって使用されるフラッシュ素子のメモリコントローラのブロック図を示す。
【図２Ｃ】フラッシュメモリシステムのための物理メモリ構成の例を示す。
【図２Ｄ】図２Ｃの物理メモリの一部の拡大図を示す。
【図２Ｅ】図２Ｃおよび２Ｄの物理メモリの一部のさらなる拡大図を示す。
【図２Ｆ】ホストと再プログラム可能なメモリシステムとの間の従来の論理アドレスインターフェイスを示す。
【図２Ｇ】本発明の１つの態様によるホストと再プログラム可能なメモリシステムとの間の直接データファイル記憶インターフェイスを示す。
【図２Ｈ】ホストと再プログラム可能なメモリシステムとの間の従来の論理アドレスインターフェイスを、図２Ｆとは異なる方法で示す。
【図２Ｌ】本発明の１つの態様によるホストと再プログラム可能なメモリシステムとの間の直接データファイル記憶インターフェイスを、図２Ｇと異なる方法で示す。
【図２Ｍ】メモリシステムの１例の機能階層を示す。
【図２Ｎ】本発明の１つの態様による仮想記憶の詳細なブロック図を示す。
【図２Ｐ】本発明の１つの態様による図２Ｎの仮想記憶を使用して行なわれる様々な処理のリストを有する表を示す。
【図２Ｑ】本発明の１つの態様によるファイルを分割する例を示す。
【図２Ｒ】本発明の１つの態様によるファイルを分割するために使用される表の例を示す。
【図２Ｓ】本発明の１つの態様によるファイルロケータがファイルディレクタモジュールと連動する状態での記憶システムのさらに他のブロック図を示す。
【図２Ｔ】本発明の１つの態様によるファイルロケータテーブルのブロック図を示す。
【図３】本発明の１つの態様による仮想記憶を使用するための全体の処理フローチャートを示す。
【図４】本発明の１つの態様による仮想記憶を使用する書き込みプロセスのためのフローチャートを示す。
【図５】本発明の１つの態様による仮想記憶を使用する読み出しプロセスのためのフローチャートを示す。
【図６】本発明の１つの態様による仮想記憶を使用するコピープロセスのためのフローチャートを示す。
【図７】本発明の１つの態様による仮想記憶によって維持されるコピーログを示す。
【図８Ａ】本発明の１つの態様によるファイルセグメントを書き込むための処理フローチャートを示す。
【図８Ｂ】本発明の１つの態様によるファイルセグメントを書き込むための処理フローチャートを示す。
【図９】本発明の１つの態様による、分割されたファイルを読み出すためのフローチャートを示す。
【図１Ａ】
2009503731.tif 000003
【図１Ｂ】
2009503731.tif 000004
【図２Ａ】
2009503731.tif 000005
【図２Ｂ】
2009503731.tif 000006
【図２Ｃ】
2009503731.tif 000007
【図２Ｄ】
2009503731.tif 000008
【図２Ｅ】
2009503731.tif 000009
【図２Ｆ】
2009503731.tif 000010
【図２Ｇ】
2009503731.tif 000011
【図２Ｈ】
2009503731.tif 000012
【図２Ｌ】
2009503731.tif 000013
【図２Ｍ】
2009503731.tif 000014
【図２Ｎ】
2009503731.tif 000015
【図２Ｐ】
2009503731.tif 000016
【図２Ｑ】
2009503731.tif 000017
【図２Ｒ】
2009503731.tif 000018
【図２Ｓ】
2009503731.tif 000019
【図２Ｔ】
2009503731.tif 000020
【図３】
2009503731.tif 000021
【図４（ｉ）】
2009503731.tif 000022
【図４（ｉｉ）】
2009503731.tif 000023
【図５】
2009503731.tif 000024
【図６（ｉ）】
2009503731.tif 000025
【図６（ｉｉ）】
2009503731.tif 000026
【図６（ｉｉｉ）】
2009503731.tif 000027
【図７】
2009503731.tif 000028
【図８Ａ】
2009503731.tif 000029
【図８Ｂ】
2009503731.tif 000030
【図９】
2009503731.tif 000031
【国際調査報告】
2009503731.tif 000032
2009503731.tif 000033
2009503731.tif 000034