(57)【要約】【課題】  より効率的な永続的記憶装置を提供すること。【解決手段】  １つまたは複数の長期記憶媒体を不揮発性メモリと一緒にする。一実施形態では、不揮発性メモリの一部が、長期記憶媒体に対する書込みおよび読取りのための書込みバッファおよび読取りキャッシュとして使用される。不揮発性メモリの書込みバッファおよび読取りキャッシュとしての使用を制御するためにインターフェースが設けられる。さらに、不揮発性メモリの一部が、長期記憶媒体の指定のセクタに関する直接マッピングを実現するように使用される。永続的記憶装置に関する記述データが、不揮発性メモリの別の部分に格納される。【選択図】  図５
2006004407.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システムを操作する方法であって、
前記不揮発性メモリの少なくとも一部を、前記長期記憶媒体に対する書込みオペレーションからのデータの中間記憶用の書込みバッファとして使用すること、および
前記書込みバッファに書き込んだデータを前記長期記憶媒体に転送することを要求するインターフェースを提供すること
を備えることを特徴とする方法。
【請求項２】
前記長期記憶媒体上で前記長期記憶媒体に書込みの準備をさせる準備動作が実施されることを要求するインターフェースを提供すること、をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記長期記憶媒体は回転記憶媒体を備え、前記準備動作は、前記回転記憶媒体をスピニング・アップさせること、を備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記準備動作は、前記準備動作について可能な最速の速度よりも低い速度で行われる、ことを特徴とする請求項３に記載の方法。
【請求項５】
前記準備動作が実施されたことを検出すること、および
前記書込みバッファに書き込まれた第１のデータを前記長期記憶媒体に転送すること
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項６】
１組の第２のデータが前記長期記憶媒体に転送するのに利用可能であることを判定すること、および
前記準備動作が実施されたことを検出した際に、前記第２のデータを前記長期記憶媒体に転送すること
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記長期記憶媒体上で、一時的に書き込みに関して前記長期記憶媒体を非活動化するアクションが実施されることを要求するインターフェースを提供すること、をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記長期記憶媒体は回転記憶媒体を備え、前記アクションは、前記回転記憶媒体をスピニング・ダウンさせることを備える、ことを特徴とする請求項７に記載の方法。
【請求項９】
前記非活動化するアクションは、前記準備動作について可能な最速の速度よりも低い速度で行われる、ことを特徴とする請求項８に記載の方法。
【請求項１０】
１つまたは複数の書込みオペレーションでの一定の指定のデータを前記書込みバッファに書き込むのではなく前記長期記憶媒体に直接書き込むことを要求するインターフェースを提供すること、をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１１】
前記書込みバッファに格納されたデータの各要素について、優先順位表示が前記要素に割り当てられ、データを前記長期記憶媒体に転送することを要求する前記インターフェースは、優先順位のレベルの表示を備え、前記書込みバッファに格納されたデータの各要素について、前記要素を前記長期記憶媒体に転送するかどうかは、前記要素に関する優先順位の前記表示および前記割り当てられたレベルに基づく、ことを特徴とする請求項１に記載の方法。
【請求項１２】
前記不揮発性メモリに格納された一定の指定のデータが無効であることを示すインターフェースを提供すること、をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１３】
前記無効データは前記長期記憶媒体に転送されないことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記無効データのために使用されていた前記不揮発性メモリ内の位置は、他のデータを格納するのに利用可能にされる、ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記不揮発性メモリに関する情報を受け取るインターフェースを提供すること、をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１６】
前記情報は、前記不揮発性メモリが存在するかどうかの情報を備える、ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記情報は、前記不揮発性メモリのサイズを備える、ことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記情報は、前記不揮発性メモリに関する使用情報、および前記不揮発性メモリのタイプの中から選択された少なくとも１つを備える、ことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記不揮発性メモリ内の異なる物理位置がほぼ等しい頻度で消去されるように保証する制御機構を提供すること、をさら備えることを特徴とする請求項１に記載の方法。
【請求項２０】
請求項１に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項２１】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システム内の前記長期記憶媒体に対する一定のデータのアトミック書込みオペレーションを実施する方法であって、
前記一定のデータを前記不揮発性メモリに書き込むように試みること、および
前記試行に成功した場合、前記一定のデータを前記長期記憶媒体に転送すること
を備えることを特徴とする方法。
【請求項２２】
前記試行に失敗した場合、失敗の表示を含む失敗データが返される、ことを特徴とする請求項２１に記載の方法。
【請求項２３】
アトミック書込みオペレーションが請求項２１に記載の方法に従って実施される、ことを特徴とするデータベース・アプリケーション。
【請求項２４】
請求項２１の方法を実施するコンピュータ実行可能命令を有する、ことを特徴とするコンピュータ可読媒体。
【請求項２５】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システムを操作する方法であって、
前記不揮発性メモリの少なくとも一部を、前記長期記憶媒体からのデータを格納するための読取りバッファとして使用すること、および
前記長期記憶媒体から前記不揮発性メモリの前記一部に一定のデータを読み取ることを要求するインターフェースを提供すること
を備えることを特徴とする方法。
【請求項２６】
前記長期記憶媒体上で、前記長期記憶媒体に読込みの準備をさせる準備動作が実施されることを要求するインターフェースを提供すること、をさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記長期記憶媒体は回転記憶媒体を備え、前記準備動作は、前記回転記憶媒体をスピニング・アップさせることを備える、ことを特徴とする請求項２６に記載の方法。
【請求項２８】
前記長期記憶媒体上で、一時的に読み込みに関して前記長期記憶媒体を非活動化するアクションが実施されることを要求するインターフェースを提供すること、をさらに備えることを特徴とする請求項２５に記載の方法。
【請求項２９】
前記長期記憶媒体は回転記憶媒体を備え、前記アクションは、前記回転記憶媒体をスピニング・ダウンさせること、を備えることを特徴とする請求項２８に記載の方法。
【請求項３０】
前記読取りバッファに格納されたデータの各要素について、優先順位表示が前記要素に割り当てられ、前記読取りバッファの各部分が他の目的のために周期的に再割当てされ、前記読取りバッファの第１の部分を前記読取りバッファの第２の部分の前に再割当てするかどうかが、前記第１の部分内のデータの要素に割り当てられた第１の優先順位表示と、前記第２の部分に格納されたデータの要素に割り当てられた第２の優先順位表示の相対値に基づく、ことを特徴とする請求項２５に記載の方法。
【請求項３１】
前記他の使用法の少なくとも１つは、前記長期記憶媒体に対する書込みオペレーションからのデータの中間記憶用の書込みバッファとして使用することを備え、
前記書込みバッファに書き込んだデータを前記長期記憶媒体に転送することを要求するインターフェースを提供すること
をさらに備えることを特徴とする請求項３０に記載の方法。
【請求項３２】
請求項２５に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項３３】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システムを操作する方法であって、
前記不揮発性メモリの少なくとも１つの不揮発性メモリ記憶素子と前記長期記憶媒体の少なくとも１つの長期記憶素子との直接の対応をセットアップすること、
前記長期記憶素子から前記不揮発性記憶素子にデータを読み取ること、
前記長期記憶素子に向けられた任意の書込みオペレーションを前記不揮発性記憶素子で実施すること、および
前記不揮発性記憶素子からデータを読み取ることにより、前記長期記憶素子に向けられた任意の読取りオペレーションに応答すること
を備えることを特徴とする方法。
【請求項３４】
前記直接の対応を変更することを要求するインターフェースを提供することをさらに備えることを特徴とする請求項３３に記載の方法。
【請求項３５】
前記直接の対応を変更する前記要求に応答して、
各不揮発性メモリ記憶素子から前記長期記憶媒体の前記対応する長期記憶素子に第２のデータを読み取ること、
前記不揮発性メモリの少なくとも１つの不揮発性メモリ記憶素子と前記長期記憶媒体の少なくとも１つの長期記憶素子との第２の直接の対応に従って、少なくとも１つの長期記憶素子から不揮発性メモリに第３のデータを読み取ること、
前記第２の直接の対応に従って、前記長期記憶素子に向けられた書込みオペレーションからの第４のデータを前記不揮発性記憶素子に書き込むこと、および
前記第２の直接の対応に従って、前記長期記憶素子に向けられた読取りオペレーションに応答して、前記不揮発性記憶素子から第５のデータを読み取ること
をさらに備えることを特徴とする請求項３３に記載の方法。
【請求項３６】
請求項３３に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項３７】
不揮発性メモリおよび長期記憶媒体を備える永続的記憶装置を有するコンピュータ・システムを操作する方法であって、
前記不揮発性メモリの少なくとも一部を、前記永続的記憶装置に関する記述情報のための記憶域として使用すること、および
前記一部からデータを読み取る方法を提供すること
を備えることを特徴とする方法。
【請求項３８】
前記記述情報は、前記永続的記憶装置に関するラベルを備える、ことを特徴とする請求項３７に記載の方法。
【請求項３９】
前記記述情報は、前記長期記憶媒体についての使用統計情報を備える、ことを特徴とする請求項３７に記載の方法。
【請求項４０】
前記使用統計情報は、前記長期記憶媒体上に書き込まれたセクタ数、前記長期記憶媒体に対して特定のアクションが実施された回数、前記長期記憶媒体上の不良セクタ数、前記不揮発性メモリのタイプ、および前記不揮発性メモリについての予想される存続時間情報のうちの１つまたは複数を備える、ことを特徴とする請求項３９に記載の方法。
【請求項４１】
前記一部からのデータを返すことを要求するインターフェースを、さらに備えることを特徴とする請求項３７に記載の方法。
【請求項４２】
前記永続的記憶装置はディスプレイをさらに備え、前記一部からのデータを表示することを備える、ことを特徴とする請求項３７に記載の方法。
【請求項４３】
請求項３７に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項４４】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システム内のメモリを断片化解消する方法であって、
前記長期メモリに以前に格納したデータの第１の部分を前記不揮発性メモリに格納すること、
前記長期記憶媒体内の第１の組のメモリ位置に格納されたデータの第２の部分のメモリ位置を、データの前記第２の部分が第２の組のメモリ位置に格納されるように変更することであって、前記第２の組のメモリ位置が前記第１の組のメモリ位置よりも連続的であるように変更すること、および
データの前記第１の部分を前記長期メモリに書き込むこと
を備えることを特徴とする方法。
【請求項４５】
請求項４４に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項４６】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システムを操作する方法であって、
前記コンピュータ・システムを初期化するのに必要なブート・データを前記不揮発性メモリに格納すること、
前記コンピュータ・システムを初期化するために前記ブート・データを使用すること、および
前記長期記憶媒体に対して準備動作を実施させて、前記長期記憶媒体を活動に備えて準備させること
を備えることを特徴とする方法。
【請求項４７】
前記コンピュータをシャット・ダウン状態に遷移させる要求を受け取ること、および
後続の前記コンピュータ・システムの初期化に必要な第２のブート・データを前記不揮発性メモリに格納すること
をさらに備えることを特徴とする請求項４６に記載の方法。
【請求項４８】
前記第２のブート・データを格納することは、
前記長期記憶媒体に対して準備動作を実施させて、前記長期記憶媒体を活動に備えて準備させること、
前記不揮発性メモリから前記長期記憶媒体に他のデータを書き込むこと、および
前記第２のブート・データを前記不揮発性メモリに格納すること
を備えることを特徴とする請求項４７に記載の方法。
【請求項４９】
請求項４６に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項５０】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システムを操作する方法であって、
前記コンピュータ・システムのオペレーションに関する操作データを前記不揮発性メモリに格納すること、および
前記操作データを使用して、前記コンピュータ・システムの障害の後に前記コンピュータ・システムの前記オペレーションを分析すること
を備えることを特徴とする方法。
【請求項５１】
前記操作データは、前記コンピュータ・システムで実行されるプロセスに関するプロセス情報、前記コンピュータ・システムで実行されるスレッドに関するスレッド情報、データ・アクセス、および装置アクセス、の中から選択された１つを備える、ことを特徴とする請求項５０に記載の方法。
【請求項５２】
請求項５０に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項５３】
不揮発性メモリおよび長期記憶媒体を有するコンピュータ・システムでデータを格納する方法であって、
データの第１のバージョンを格納すること、
前記不揮発性メモリで前記データの第２のバージョンを作成すること、および
前記データの前記第２のバージョンを少なくとも１つのデータ変更で更新すること
を備えることを特徴とする方法。
【請求項５４】
前記第１のバージョンが不揮発性メモリに格納される、ことを特徴とする請求項５３に記載の方法。
【請求項５５】
データの前記第１のバージョンが前記長期記憶媒体に格納され、データの前記第１のバージョンが前記データの現バージョンとして示され、さらに
前記表示を変更して、前記第１のバージョンがアーカイブ・バージョンとして示されることを示すこと
を備えることを特徴とする請求項５３に記載の方法。
【請求項５６】
請求項５３に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項５７】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記不揮発性メモリの少なくとも一部を、前記長期記憶媒体に対する書込みオペレーションからのデータの中間記憶用の書込みバッファとして使用する論理機構と、
前記書込みバッファに書き込んだデータを前記長期記憶媒体に転送することを要求するインターフェースを提供する論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項５８】
前記長期記憶媒体上で、前記記憶媒体に書き込みの準備をさせる準備動作が実施されることを要求するインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項５９】
前記長期記憶媒体は回転記憶媒体を備え、前記準備動作は、前記回転記憶媒体をスピニング・アップさせること、を備えることを特徴とする請求項５８に記載のコンピュータ・システム。
【請求項６０】
前記準備動作は、前記準備動作について可能な最速の速度よりも低い速度で行われる、ことを特徴とする請求項５９に記載のコンピュータ・システム。
【請求項６１】
前記準備動作が実施されたことを検出する論理機構と、
前記書込みバッファに書き込まれた第１のデータを前記長期記憶媒体に転送する論理機構と
をさらに備えることを特徴とする請求項５８に記載のコンピュータ・システム。
【請求項６２】
１組の第２のデータが前記長期記憶媒体に転送するのに利用可能であることを判定する論理機構と、
前記準備動作が実施されたことを検出した際に、前記第２のデータを前記長期記憶媒体に転送する論理機構と
をさらに備えることを特徴とする請求項６１に記載のコンピュータ・システム。
【請求項６３】
前記長期記憶媒体上で、一時的に書き込みに関して前記長期記憶媒体を非活動化するアクションが実施されることを要求するインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項６４】
前記長期記憶媒体は回転記憶媒体を備え、前記アクションは、前記回転記憶媒体をスピニング・ダウンさせることを備える、ことを特徴とする請求項６３に記載のコンピュータ・システム。
【請求項６５】
前記非活動化するアクションは、前記準備動作について可能な最速の速度よりも低い速度で行われる、ことを特徴とする請求項６４に記載のコンピュータ・システム。
【請求項６６】
１つまたは複数の書込みオペレーションでの一定の指定のデータを前記書込みバッファに書き込むのではなく前記長期記憶媒体に直接書き込むことを要求するインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項６７】
前記書込みバッファに格納されたデータの各要素について、優先順位表示が前記要素に割り当てられ、データを前記長期記憶媒体に転送することを要求する前記インターフェースは、優先順位のレベルの表示を備え、前記書込みバッファに格納されたデータの各要素について、前記要素を前記長期記憶媒体に転送するかどうかは、前記要素に関する優先順位の前記表示および前記割り当てられたレベルに基づく、ことを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項６８】
前記不揮発性メモリに格納された一定の指定のデータが無効であることを示すインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項６９】
前記無効データは前記長期記憶媒体に転送されない、ことを特徴とする請求項６８に記載のコンピュータ・システム。
【請求項７０】
前記無効データのために使用されていた前記不揮発性メモリ内の位置は、他のデータを格納するのに利用可能にされることを特徴とする請求項６９に記載のコンピュータ・システム。
【請求項７１】
前記不揮発性メモリに関する情報を受け取るインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項７２】
前記情報は、前記不揮発性メモリが存在するかどうかの情報を備える、ことを特徴とする請求項７１に記載のコンピュータ・システム。
【請求項７３】
前記情報は、前記不揮発性メモリのサイズを備える、ことを特徴とする請求項７１に記載のコンピュータ・システム。
【請求項７４】
前記情報は、前記不揮発性メモリに関する使用情報、および前記不揮発性メモリのタイプの中から選択された少なくとも１つを備える、ことを特徴とする請求項７１に記載のコンピュータ・システム。
【請求項７５】
前記不揮発性メモリ内の異なる物理位置がほぼ等しい頻度で消去されるように保証する制御機構を提供する論理機構、をさらに備えることを特徴とする請求項５７に記載のコンピュータ・システム。
【請求項７６】
長期記憶媒体に対する一定のデータのアトミック書込みオペレーションを可能にするコンピュータ・システムであって、不揮発性メモリおよび長期記憶媒体を使用し、
前記一定のデータを前記不揮発性メモリに書き込むように試みる論理機構と、
前記試行に成功した場合、前記一定のデータを前記長期記憶媒体に転送する論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項７７】
前記試行に失敗した場合、失敗の表示を含む失敗データが返される、ことを特徴とする請求項７６に記載のコンピュータ・システム。
【請求項７８】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記不揮発性メモリの少なくとも一部を、前記長期記憶媒体からのデータを格納するための読取りバッファとして使用する論理機構と、
前記長期記憶媒体から前記不揮発性メモリの前記一部に一定のデータを読み取ることを要求するインターフェースを提供する論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項７９】
前記長期記憶媒体上で、前記長期記憶媒体に読込みの準備をさせる準備動作が実施されることを要求するインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項７８に記載のコンピュータ・システム。
【請求項８０】
前記長期記憶媒体は回転記憶媒体を備え、前記準備動作は、前記回転記憶媒体をスピニング・アップさせることを備える、ことを特徴とする請求項７９に記載のコンピュータ・システム。
【請求項８１】
前記長期記憶媒体上で、一時的に読取りに関して前記長期記憶媒体を非活動化するアクションが実施されることを要求するインターフェースを提供する論理機構、をさらに備えることを特徴とする請求項７８に記載のコンピュータ・システム。
【請求項８２】
前記長期記憶媒体は回転記憶媒体を備え、前記アクションは、前記回転記憶媒体をスピニング・ダウンさせることを備える、ことを特徴とする請求項８１に記載のコンピュータ・システム。
【請求項８３】
前記読取りバッファに格納されたデータの各要素について、優先順位表示が前記要素に割り当てられ、前記読取りバッファの各部分が他の目的のために周期的に再割当てされ、前記読取りバッファの第１の部分を前記読取りバッファの第２の部分の前に再割当てするかどうかが、前記第１の部分内のデータの要素に割り当てられた第１の優先順位表示と、前記第２の部分に格納されたデータの要素に割り当てられた第２の優先順位表示の相対値に基づくことを特徴とする請求項７８に記載のコンピュータ・システム。
【請求項８４】
前記他の使用法の少なくとも１つは、前記長期記憶媒体に対する書込みオペレーションからのデータの中間記憶用の書込みバッファとして使用することを備える、
前記書込みバッファに書き込んだデータを前記長期記憶媒体に転送することを要求するインターフェースを提供する論理機構を
さらに備えることを特徴とする請求項８３に記載のコンピュータ・システム。
【請求項８５】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記不揮発性メモリの少なくとも１つの不揮発性メモリ記憶素子と前記長期記憶媒体の少なくとも１つの長期記憶素子との直接の対応をセットアップする論理機構と、
前記長期記憶素子から前記不揮発性記憶素子にデータを読み取る論理機構と、
前記長期記憶素子に向けられた任意の書込みオペレーションを前記不揮発性記憶素子で実施する論理機構と、
前記不揮発性記憶素子からデータを読み取ることにより、前記長期記憶素子に向けられた任意の読取りオペレーションに応答する論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項８６】
前記直接の対応を変更することを要求するインターフェースを提供すること、をさらに備えることを特徴とする請求項８５に記載のコンピュータ・システム。
【請求項８７】
前記直接の対応を変更する前記要求に応答して、
各不揮発性メモリ記憶素子から前記長期記憶媒体の前記対応する長期記憶素子に第２のデータを書き込む論理機構と、
前記不揮発性メモリの少なくとも１つの不揮発性メモリ記憶素子と前記長期記憶媒体の少なくとも１つの長期記憶素子との第２の直接の対応に従って、少なくとも１つの長期記憶素子から不揮発性メモリに第３のデータを読み取る論理機構と、
前記第２の直接の対応に従って、前記長期記憶素子に向けられた書込みオペレーションを前記不揮発性記憶素子に対して実施する論理機構と、
前記第２の直接の対応に従って前記不揮発性記憶素子からデータを読み取ることにより、前記長期記憶素子に向けられた読取りオペレーションを実施する論理機構と
をさらに備えることを特徴とする請求項８５に記載のコンピュータ・システム。
【請求項８８】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記不揮発性メモリの少なくとも一部を、前記永続的記憶装置に関する記述情報のための記憶域として使用すること、および
前記部分からデータを読み取るコンピュータ・システムを提供すること
を備えることを特徴とするコンピュータ・システム。
【請求項８９】
前記記述情報は、前記永続的記憶装置に関するラベルを備える、ことを特徴とする請求項８８に記載のコンピュータ・システム。
【請求項９０】
前記記述情報は、前記長期記憶媒体についての使用統計情報を備える、ことを特徴とする請求項８８に記載のコンピュータ・システム。
【請求項９１】
前記使用統計情報は、前記長期記憶媒体上に書き込まれたセクタ数、前記長期記憶媒体に対して特定のアクションが実施された回数、前記長期記憶媒体上の不良セクタ数、前記不揮発性メモリのタイプ、および前記不揮発性メモリについての予想される存続時間情報のうちの１つまたは複数を備えることを特徴とする請求項９０に記載のコンピュータ・システム。
【請求項９２】
前記部分からのデータを返すことを要求するインターフェース、を備えることを特徴とする請求項８８に記載のコンピュータ・システム。
【請求項９３】
前記永続的記憶装置はディスプレイをさらに備え、前記部分からのデータを表示することを備える、ことを特徴とする請求項８８に記載のコンピュータ・システム。
【請求項９４】
デフラグメンテーション機能を有し、不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記長期メモリに以前に格納したデータの第１の部分を前記不揮発性メモリに格納する論理機構と、
前記長期記憶媒体内の第１の組のメモリ位置に格納されたデータの第２の部分のメモリ位置を、データの前記第２の部分が第２の組のメモリ位置に格納されるように変更する論理機構であって、前記第２の組のメモリ位置は、前記第１の組のメモリ位置よりも連続的であるように変更する論理機構と、
データの前記第１の部分を前記長期メモリに書き込む論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項９５】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記コンピュータ・システムを初期化するのに必要なブート・データを前記不揮発性メモリに格納する論理機構と、
前記コンピュータ・システムを初期化するために前記ブート・データを使用する論理機構と、
前記長期記憶媒体に対して準備動作を実施させて、前記長期記憶媒体を活動に備えて準備させる論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項９６】
前記コンピュータをシャット・ダウン状態に遷移させる要求を受け取る論理機構と、
後続の前記コンピュータ・システムの初期化に必要な第２のブート・データを前記不揮発性メモリに格納する論理機構と
をさらに備えることを特徴とする請求項９５に記載のコンピュータ・システム。
【請求項９７】
前記第２のブート・データを格納することは、
前記長期記憶媒体に対して準備動作を実施させて、前記長期記憶媒体を活動に備えて準備させる論理機構と、
前記不揮発性メモリから前記長期記憶媒体に他のデータを書き込む論理機構と、
前記第２のブート・データを前記不揮発性メモリに格納する論理機構と
を備えることを特徴とする請求項９６に記載のコンピュータ・システム。
【請求項９８】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
前記コンピュータ・システムのオペレーションに関する操作データを前記不揮発性メモリに格納する論理機構と、
前記操作データを使用して、前記コンピュータ・システムの障害の後に前記コンピュータ・システムの前記オペレーションを分析する論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項９９】
前記操作データは、前記コンピュータ・システムで実行されるプロセスに関するプロセス情報、前記コンピュータ・システムで実行されるスレッドに関するスレッド情報、データ・アクセス、および装置アクセスの中から選択された１つを備える、ことを特徴とする請求項９８に記載のコンピュータ・システム。
【請求項１００】
不揮発性メモリおよび長期記憶媒体を使用するコンピュータ・システムであって、
データの第１のバージョンを格納する論理機構と、
前記不揮発性メモリで前記データの第２のバージョンを作成する論理機構と、
前記データの前記第２のバージョンを少なくとも１つのデータ変更で更新する論理機構と
を備えることを特徴とするコンピュータ・システム。
【請求項１０１】
前記第１のバージョンが不揮発性メモリに格納されることを特徴とする請求項１００に記載のコンピュータ・システム。
【請求項１０２】
データの前記第１のバージョンが前記長期記憶媒体に格納され、データの前記第１のバージョンが前記データの現バージョンとして示され、さらに
前記表示を変更して、前記第１のバージョンがアーカイブ・バージョンとして示されることを示す論理機構
を備えることを特徴とする請求項１００に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にはコンピュータ・システムに関し、より詳細には、不揮発性メモリを長期記憶装置と共に使用することによってコンピュータ・システムの性能を改善することに関する。
【背景技術】
【０００２】
コンピュータ・システムを機能させるための永続的メモリを実現するために、いくつかの記憶装置がコンピュータ・システム上で使用される。例えば、磁気ハードディスク・ドライブ・アセンブリが当技術分野で周知である。しかし、そのような永続的メモリはいくつかの欠点を有する。磁気ハード・ドライブがデータの読取りまたは書込みを行うよう準備するのに時間がかかる。そのようにするために、ほとんどの場合、物理的にディスクのスピニングを開始し、読取り／書込みヘッドを適切な位置の上に位置決めすることが必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
記憶装置からの読取りまたは書込みの準備は時間と電力を消費する。加えて、そのような磁気ハード・ドライブ・メモリおよびその構成要素によってノイズが発生する可能性がある。したがって、こうした欠点のいくつかを改善する、コンピュータ・システム用の改良型メモリが求められている。
【０００４】
永続的記憶装置の新しい組成および構成は、記憶装置に関する性能を一部改善することができる。しかし、永続的記憶装置にアクセスする従来の技法を単に用いるだけでは、そのような新しい組成または構成が有する十分な利点が得られない。一般に、コンピュータ・システムのオペレーションを制御するのにオペレーティング・システムが使用される。オペレーティング・システムはまた、コンピュータ・システム内の他のアプリケーションとハード・ディスクの間を仲介する。したがって、高い性能を実現するアプリケーション・プログラミング・インターフェース（ＡＰＩ）などの方法に対するニーズが存在する。同様に、コンピュータ・システムで使用する記憶装置のための新しい構成および新しい制御技法を生み出すシステムに対するニーズが存在する。
【課題を解決するための手段】
【０００５】
不揮発性メモリと共に１つまたは複数の長期記憶媒体が含まれる永続的記憶装置が、アプリケーションプログラム・インターフェース、コマンド、および割込みを提供し、またはそれに応答するオペレーティング・システムと共に使用され、オペレーティング・システムまたはアプリケーション・プログラムが、性能時間および効率を向上させるために、不揮発性メモリを効果的に使用することを可能にする。不揮発性メモリが物理的に長期記憶媒体に含まれることが企図されるが、不揮発性メモリが長期ストレージ媒体と別々であっても長期ストレージ媒体と共に機能して永続的ストレージを実現することも可能である。
【０００６】
一実施形態では、長期記憶媒体をスピン・アップ（spin up）またはスピン・ダウン（spin down）する要求を可能にするアプリケーション・プログラム・インターフェース（ＡＰＩ）が公開される。別のＡＰＩは、不揮発性メモリがフラッシュされること要求すること、または不揮発性メモリが長期記憶媒体の指定のアドレスからデータを取り込むことを要求すること、を可能にする。さらに別のＡＰＩは、長期記憶媒体にデータを直接書き込むことを可能にし、データをアトミック書込みとして書き込むことを可能にし、または不揮発性メモリ・キャッシュに書き込まれたデータを、長期記憶媒体に書き込むために保存するのではなく、無視することを可能にする。さらに、そのような記憶媒体にとって利用可能な既存の不揮発性メモリについての詳細を見つけ、それを与えるための要求も提供される。
【０００７】
一実施形態では、２つの方式のうちの一方で不揮発性メモリを使用することができる。第１の方式では、キャッシュが不揮発性メモリ内に設けられる。このキャッシュは長期記憶媒体からデータを読み取るための読取りキャッシュとして使用され、長期記憶媒体に書き込まれるデータのための書込みバッファとしても使用される。この方法では、長期記憶媒体への読取りおよび書込みは、散発的に行う代わりに、一緒にまとめる（クラスター化する）ことができ、長期記憶媒体からの読取り、長期記憶媒体への書込み、および長期記憶媒体の特徴である準備、により少ない時間しか必要としなくなる。
【０００８】
不揮発性メモリの一部をオペレーティング・システムまたは他のアプリケーションで直接所有することができる。長期記憶媒体からのいくつかの論理セクタ・アドレス（ＬＳＡ）が、不揮発性メモリにマッピングされ、そのＬＳＡからの読取りおよびそのＬＳＡへの書込みは、不揮発性メモリに対して実施される。このマッピングは、上述の不揮発性メモリ部分内のキャッシングと同時に行うことができる。
【０００９】
本発明の他の特徴を以下で説明する。
【００１０】
好ましい実施形態の上述の「課題を解決するための手段」ならびに以下の詳細な説明は、添付の図面と共に読むときにより良く理解できる。本発明を例示するために、本発明の例示的構成を図面に示す。しかし、本発明は、開示の特定の方法および手段に限定されない。
【発明を実施するための最良の形態】
【００１１】
以下の説明では、固体不揮発性メモリを指すのに「ＮＶメモリ」という用語を用いる。ＮＶメモリは、電源が落とされたときにそのデータを保持し続け、消去することができ、および新しいデータで再プログラムすることができる任意のタイプのメモリを意味する。ＮＶメモリは、バッテリ・バックアップ・メモリを含むことができる。ＮＶメモリは、パーソナル・コンピュータ・スロット・カードやシステム・メモリ内の構成要素などの、コンピュータの別々の構成要素としてコンピュータ内に配置することができる。あるいは、ＮＶメモリは、ノートブック装置のドッキング・ステーション内などのハード・ドライブなどの永続的記憶装置の構成要素でよい。モバイル・システム上では、ディスク・ドライブが有するトラック・バッファを使用することができる（すなわち、本発明はトラック・バッファ・メモリを使用して実装することもできる）。
【００１２】
モバイル・システム向けの将来のディスクは、ディスクのスピニングを保つための電力を電池から実際に取り出さずに、そのメモリを活動状態（alive）に維持するための電力を電池から得ることができる。ＮＶメモリは、ファイル・データ、ファイル・メタデータ、ならびにブート・セクタやパーティション・テーブルなどの周知のディスク・セクタを格納することができる。パワー・ダウン中または休止モード（hibernate mode）に入っている間、コンピュータ・システムは、以前の使用履歴に基づいて、ＮＶメモリに格納すべき静的および動的構成データを決定する。ディスク・ドライブをスピン・アップする回数を低減するために、データは、システム・オペレーション中に、ＮＶメモリに格納される。モバイルＰＣなどでは、ディスク・ドライブをスピン・アップする回数を低減することは、電力が削減され、それによってより小型かつ軽量のモバイルＰＣが可能とし、それらが、所与の電池容量に対してより長く持続することになるので、ユーザ体験を向上させる。また、音が大きく、ユーザにとって不快な、騒音を出す高速ファンを動作させる必要性も低減する。
【００１３】
図面を参照すると、同様の参照番号は同様の要素を指しており、本発明が適切なコンピューティング環境で実装されているものとして示されている。必須ではないが、コンピュータによって実行される、プログラム・モジュールなどの、コンピュータ実行可能命令の一般的なコンテクストで本発明を説明する。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ・タイプを実装するルーチン、オブジェクト、コンポーネント、データ構造などを含む。さらに、ハンドヘルド装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースの、またはプログラム可能な消費者向け電子機器、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータなどを含むその他のコンピュータ・システム構成を用いて本発明を実施できることを当業者は理解されよう。本発明はまた、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム・モジュールは、ローカル・メモリ記憶装置とリモート・メモリ記憶装置の両方にも位置することができる。
【００１４】
図１に、本発明を実装することのできる適切なコンピューティング・システム環境１００の一例を示す。コンピューティング・システム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用法または機能の範囲に関して何らかの制限を示唆するものではない。例示的動作環境１００に図示する構成要素のうちのいずれか１つ、あるいはそれらの組合せに関する何らかの依存関係または要件を、コンピューティング環境１００が有すると解釈すべきでもない。
【００１５】
本発明は、他の多数の汎用または特殊目的コンピューティング・システム環境または構成で動作可能である。本発明と共に使用するのに適した周知のコンピューティング・システム、環境、および／または構成の例には、限定はしないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能消費者向け電子機器、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータ、ならびに上記のシステムまたは装置のいずれかを含む分散コンピューティング環境など、が含まれる。
【００１６】
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテクストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム・モジュールは、メモリ記憶装置を含む、ローカル・コンピュータ記憶媒体とリモート・コンピュータ記憶媒体の両方に位置することができる。
【００１７】
図１を参照すると、本発明を実装する例示的システムは、コンピュータ１１０の形態の汎用コンピューティング装置を含む。コンピュータ１１０の構成要素には、限定はしないが、処理装置１２０と、システム・メモリ１３０と、システム・メモリを含む様々なシステム構成要素を処理装置１２０に結合するシステム・バス１２１とを含めることができる。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、様々なバス・アーキテクチャのうちのいずれかを用いるローカル・バスとを含むいくつかのタイプのバス構造のうちのいずれでもよい。例えば、限定はしないが、このようなアーキテクチャには、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびメザニン・バスとも呼ばれるＰＣＩ（Peripheral Component Interconnect）バスが含まれる。
【００１８】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセス可能である入手可能などんな媒体でもよく、それには揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不能媒体のどちらも含まれる。例えば、限定はしないが、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータなどの情報を格納するための何らかの方法または技術で実装される、揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不能媒体のどちらも含まれる。コンピュータ記憶媒体には、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（ＤＶＤ）、または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、または他の磁気記憶装置、あるいは、所望の情報を格納するのに使用することができ、コンピュータ１１０でアクセスすることができる他のどんな媒体も含まれる。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他の移送機構などの被変調データ信号で実施し、その通信媒体にはどんな情報送達媒体も含まれる。「被変調データ信号」という用語は、その特性集合のうちの１つまたは複数を有する信号、または情報をその中に符号化するように変化する信号を意味する。例えば、限定はしないが、通信媒体には、有線ネットワークまたはダイレクト・ワイヤード接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、他のワイヤレス媒体などのワイヤレス媒体が含まれる。上記のいずれの組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００１９】
システム・メモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダム・アクセス・メモリ（ＲＡＭ）１３２などの揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１３３が、一般にＲＯＭ１３１内に格納される。ＲＡＭ１３２は一般に、処理装置１２０が、即座にアクセス可能であり、かつ／または処理装置１２０によってその上で現在操作されているデータおよび／またはプログラム・モジュールを含む。例えば、限定はしないが、図１にオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７を示す。
【００２０】
コンピュータ１１０はまた、他の取外し可能／取外し不能な、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。単なる一例であるが、図１に、取外し不能不揮発性磁気媒体を読み書きするハードディスク・ドライブ１４１と、取外し可能不揮発性磁気ディスク１５２を読み書きする磁気ディスク・ドライブ１５１と、ＣＤ−ＲＯＭまたは他の光媒体などの取外し可能不揮発性光ディスク１５６を読み書きする光ディスク・ドライブ１５５とを示す。例示的動作環境で使用することのできる他の取外し可能／取外し不能な揮発性／不揮発性コンピュータ記憶媒体には、限定はしないが、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル・バーサタイル・ディスク、デジタル・ビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスク・ドライブ１４１は一般に、インターフェース１４０などの取外し不能メモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は一般に、インターフェース１５０などの取外し可能メモリ・インターフェースによってシステム・バス１２１に接続される。
【００２１】
上記で議論し、図１に図示するドライブとその関連するコンピュータ記憶媒体は、コンピュータ１１０に対してコンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータの記憶を実現する。例えば図１では、ハードディスク・ドライブ１４１がオペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するものとして図示している。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じであっても、異なっていてもよいことに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７には、少なくともこれらが相異なるコピーであることを示すために異なる符号を付けてある。ユーザは、キーボード１６２や、一般にマウス、トラック・ボール、またはタッチパッドと呼ばれるポインティング・デバイス１６１などの入力装置を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナなどを含めることができる。これらの入力装置や他の入力装置はしばしば、システム・バスに結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレル・ポート、ゲームポート、またはユニバーサル・シリアル・バス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することもできる。モニタ１９１または他のタイプのディスプレイ装置もまた、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続される。モニタに加えて、コンピュータはまた、スピーカ１９７やプリンタ１９６などの他の周辺出力装置も含むことができ、それらは、出力周辺インターフェース１９５を介して接続することができる。
【００２２】
コンピュータ１１０は、リモート・コンピュータ１８０などの１つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境で動作する（operate）ことができる。リモート・コンピュータ１８０は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワーク・ノードでよく、一般に、パーソナル・コンピュータ１１０に関して上記で述べた要素のうちの多数またはすべてを含むが、図１にはメモリ記憶装置１８１だけを示してある。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、事業体全体のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般的なものである。
【００２３】
ＬＡＮネットワーキング環境で使用する際、パーソナル・コンピュータ１１０は、ネットワーク・インターフェース／アダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する際、コンピュータ１１０は一般に、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は内蔵でも外付けでもよく、ユーザ入力インターフェース１６０、または他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク環境では、パーソナル・コンピュータ１１０に関して示したプログラム・モジュールまたはその一部を、リモート・メモリ記憶装置内に格納することができる。例えば、限定はしないが、図１に、リモート・アプリケーション・プログラム１８５がメモリ装置１８１上に常駐するものとして示す。図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されよう。
【００２４】
以下の説明では、別段の指示がない限り、１つまたは複数のコンピュータで実行される動作とオペレーションの象徴的表現とを参照しながら本発明を説明する。したがって、「コンピュータで実行される」として引用される、そうした動作（act）およびオペレーションが、コンピュータの処理装置による、構造化された形式のデータを表す電気信号の操作（manipulation）を含むことを理解されよう。この操作は、データを変換し、またはコンピュータのメモリ・システム内の位置にデータを維持し、それにより、当業者に良く理解されている方式で、コンピュータのオペレーションが再構成または変更される。データを維持するデータ構造は、データのフォーマットによって定義される特定の特性を有するメモリの物理位置である。しかし、本発明を上記の状況で説明するが、それは限定的であることを表すものではなく、以下で説明する様々な動作（act）およびオペレーションをハードウェアでも実装できることを当業者は理解されよう。
【００２５】
コンピュータ１１０内へのＮＶメモリの包含
次に図２を参照すると、ＮＶメモリ２００を、ｐｃスロットに挿入されるカードなどのコンピュータ１１０の別々の構成要素２０２として、またはシステム・メモリ内の構成要素２０４としてコンピュータ１１０内に配置することができる。あるいは、ＮＶメモリ２００は、ノートブック装置のドッキング・ステーション内などの、ハード・ドライブ１４１などの永続的記憶装置３００の構成要素２０６でもよい。ＮＶメモリ２００の別の代替位置は、ＣｏｍｐａｃｔＦｌａｓｈ  Ａｓｓｏｃｉａｔｉｏｎによって維持されるＣｏｍｐａｃｔＦｌａｓｈ仕様によるものなど、コンピュータ・システムにプラグ接続することができる取外し可能固体不揮発性メモリ装置の形態などでよい。別々の構成要素２０２としてのＮＶメモリ２００は、ＮＶメモリ２００を有さないレガシー・システムの性能を、ＮＶメモリを有するハード・ドライブを導入することなく、向上させることを可能にする。
【００２６】
次に図３を参照すると、永続的記憶装置３００は、１つまたは複数のディスク３０４などの不揮発性メモリ記憶媒体（長期記憶媒体）、ディスク３０４を読み書きする読取り／書込みヘッド３０６、読取り／書込みヘッド３０６をディスク３０４上の位置に移動するスピンドル／アーマチャ・アセンブリ３０８、を含むディスク・アセンブリ３０２を有する。ディスク・アセンブリ３０２は、図３に示され、以下の説明において用いられるが、この新規な技法の利点は、別の長期記憶媒体を使用したときにも見出すことができ、本発明は、ディスク・アセンブリを長期記憶媒体として使用する場合に限定されない。コントローラ３１０は、記憶媒体からデータを読み取り、または記憶媒体にデータを書き込むようにディスク・アセンブリに指令する。キャッシュ・メモリ３１２は、記憶媒体から読み取られ、または記憶媒体に書き込まれるデータをバッファリングするのに使用される。本発明のＮＶメモリ２００は、コントローラ３１０内に配置され、または永続的記憶装置３００の分離した構成要素として配置される。一実施形態では、ＮＶメモリ２００は、１つまたは複数の連続するセクタからなるディスク３０４の少なくとも１つの大きな領域として見えるようにコンピュータ１１０に公開される。ＩＤＥ（Integrated Drive Electronics）仕様またはＳＣＳＩ（Small Computer System Interface）仕様に対する変更は不要である。ＮＶメモリ２００はオペレーティング・システムに対して公開され、その結果オペレーティング・システムおよびその他のコンポーネントは、ＮＶメモリ２００のサイズを照会することができ、ＮＶメモリ２００の状態を制御することができ、トランザクション手続きを使用してＮＶメモリ２００にデータを書き込むことができ、かつ上述のように、ＮＶメモリ２００を書込みバッファとして使用することができる。代替実施形態では、コンピュータ１１０は、ディスク３０４の大きな領域に対する典型的なアクセス時間約１０ミリ秒ではなく５００マイクロ秒以下のアクセス時間を観測することによってＮＶメモリの存在を検出することができる。
【００２７】
オペレーティング・システムおよびホスト・アプリケーションのＮＶメモリの使用
再び図２を参照すると、ＮＶメモリ２００を利用して性能を向上させるために、本発明の一実施形態によれば、オペレーティング・システム（ＯＳ）１３４は、ＮＶメモリ２００の使用を改善するために様々なインターフェースを備える。
【００２８】
まず、検出インターフェースが設けられる。ＯＳ１３４は、ＮＶメモリ２００が存在するかどうか、およびＮＶメモリのサイズを検出することができる。この機能は、ＮＶメモリ２００がコンピュータ１１０内に存在するかどうかを判定するためにアプリケーション・プログラム１３５および他のプログラム・モジュール１３６が使用することのできるインターフェースとして公開される。さらに、ファイル・システムや他のオブジェクト・ストアなどのＯＳコンポーネントは、検出インターフェースを使用して、コンピュータ１１０上のＮＶメモリ２００の存在およびサイズを判定することができる。使用情報やタイプ情報など、ＮＶメモリ２００に関する他の情報も提供することができる。あるＮＶメモリの寿命は限られており、このことが、ある状況ではＮＶメモリ２００の使用に影響を及ぼす可能性があるので、この情報は有用であることがある。
【００２９】
ディスク・アセンブリ３０２内のディスク３０４から読み取り、またはそれに書き込むためには、ディスクをスピン・アップしなければならず、読取り／書込みヘッド３０６がスピンドル／電機子アセンブリによって適切な位置に移動しなければならない。この準備動作は時間がかかり、データをディスク・アセンブリ３０２から読み取ったり、またはそれに書き込んだりすることができるまでの遅延が引き起こされる。ディスク３０４に書き込む際の準備動作は、読取り／書込みヘッド３０６の移動も包含されるが、ディスクのスピニング・アップと呼ぶことにする。実際、ディスクを回転媒体として図示するが、永続的記憶装置３００において、データをメモリに書き込み、またはメモリから読み取ることができるまでに準備動作を必要とする（ディスク・アセンブリ３０２以外の）別の形態の長期記憶媒体と共にＮＶメモリ２００を含めることができることも企図される。永続的記憶装置３００上の長期記憶媒体を使用するためのどんな準備動作も、追加の準備動作が存在する可能性があることが企図される場合であっても、さらには回転媒体の実際のスピニングが関係しない場合であっても、メモリの「スピン・アップ」または「スピニング・アップ」と呼ばれることになる。アプリケーションまたはオペレーティング・システム１３４自体は、永続的記憶装置３００への書込みに先立って、その装置３００上の長期記憶媒体のスピン・アップを必要とするそのような書込みが行われる確率がかなり高いことを認識することができるので、長期記憶媒体のスピン・アップを待つ必要によって引き起こされる遅延を、アプリケーションまたはオペレーティング・システム１３４が長期記憶媒体のスピン・アップを要求することを可能にするインターフェースの使用を通して回避することができる。
【００３０】
同様に、スピン・ダウン・インターフェースも設けられる。電力消費を節約するために、永続的記憶装置３００のディスク・アセンブリ３０２に書込みが行われない場合、ディスク３０４のスピニングを停止することができる。再び、永続的記憶装置３００が回転媒体を含むように示され、そこでは、実際のスピン・ダウンによって電力消費が低減されるが、ＮＶメモリ２００は別にして、永続的記憶装置３００に関して他の形態の長期記憶媒体も企図され、そのような長期記憶媒体は、ディスク・アセンブリ３０２のスピン・ダウンに類似の動作を有することがあり、その動作において、そのメモリに対する即時のまたは比較的速い読取りおよび書込みを可能にする動作を中止することによって何らかの利点が得られる。そのような動作の中止は、実際には回転媒体の物理的スピニング・ダウンを含まない可能性があるが、本明細書で言及する「スピン・ダウン」または「スピニング・ダウン」によってそのような中止も企図される。
【００３１】
スピン・ダウン動作およびスピン・アップ動作はその最大速度より低い速度実施することができる。低い速度でそのようなオペレーションを実施することにより、そうした動作に関連する音響雑音を低減することができ、電力消費における関連するスパイクを低減することができる。このスピン・アップおよびスピン・ダウン（または長期記憶媒体のための他の準備動作）を、そのような動作の絶対的な必要に先立って実施することができるので、そうした利点を性能に影響を及ぼすことなく得ることができる。ディスクが、瞬時にではなく、低い速度でスピン・アップするとき、ディスクが完全にスピン・アップしたときにディスクが利用可能になるが、ユーザおよびシステムの他の部分に対する影響が最小限に抑えられる。
【００３２】
ＮＶメモリ２００の一部またはすべてを、永続的記憶装置３００のディスク・アセンブリ３０２用の書込みキャッシュとして使用することができる。そのような場合、この状況に対するインターフェースが設けられ、この状況において、アプリケーションまたはオペレーティング・システム１３４は、性能上の理由で、ＮＶメモリ２００が永続的記憶装置３００内の他のメモリにフラッシュされるべきであると決定することができる。このインターフェースは、ＮＶメモリ２００を長期記憶媒体にフラッシュする。
【００３３】
ＮＶメモリ２００の異なる部分を異なる優先順位でマークすることができる。例えば、「ピン留め（pinned）」された、あるいは高優先順位でマークされたＮＶメモリ２００のエリアは、長期記憶媒体にフラッシュするのではなく、ＮＶメモリ２００内に、好ましくはこのようにピン留めまたはマークされていないＮＶメモリ２００の他のエリアに、維持すべきである。本発明の一実施形態は、いくつかの優先順位をＮＶメモリ２００内の各エリアに割り当てることを可能にする。例えば、最高の優先順位（あるいは「ピン留めされた」メモリまたは「優先順位１」メモリ）、第２優先順位（「優先順位２」）、および最低の優先順位（または「優先順位３」）の３つの優先順位が存在する可能性がある。ＮＶメモリ２００内に空間が必要な場合、高い優先順位のメモリ・エリアがフラッシュされる前に、最低の優先順位メモリが長期記憶媒体にフラッシュされる。したがって、本発明の一実施形態によれば、ＮＶメモリ２００キャッシュをフラッシュするためのいくつかのインターフェース・オプションを提示することができる。例えば、キャッシュ全体をフラッシュするインターフェース・オプション、キャッシュの低い優先順位エリアだけをフラッシュするインターフェース・オプション、インターフェースに対する呼出しで指定される優先順位以下の優先順位を有するキャッシュの全エリアをフラッシュするインターフェース・オプションである。
【００３４】
別の性能改善として、ＮＶメモリ２００に書き込まれたデータが後で削除されることが可能であるという理由で、ＯＳ１３４またはアプリケーションが、ＮＶメモリ２００に書き込まれたあるデータがもはや必要ではなく、ＮＶメモリ２００書込みキャッシュから廃棄できることを、ＮＶメモリ２００に伝える、ことを可能にするインターフェースが提示される。このようにして、メモリがフラッシュされたとき、廃棄されたエリアは長期記憶媒体に書き込まれず、廃棄されたエリアに対して読取りが実施されたとき、エラーまたはランダム・データが返されることになる。
【００３５】
このインターフェースは、例えば、トランザクションを管理するために、使用することができる。しばしばトランザクション・ログは、長期間格納する必要のない中間データを収容する。例えば、あるケースでは、トランザクションが行われるとき、トランザクションについてのメタ・データがまずログにコミットされる。このログがＮＶメモリ２００に格納される場合、書込みはディスクのスピニング・アップを必要としない。トランザクションが完了し、変更がコミットされるとき、トランザクションについての格納されたメタ・データが変更または削除され、完了したトランザクションが反映される。しかし、トランザクションを完了またはコミットすることができる前にトランザクションが中断される場合、そのデータは、ＮＶメモリ２００中に存続し、したがって何のトランザクションが行われていたかを判定して、そのような中断トランザクションに関する問題を解決するのに、使用することができる。
【００３６】
別の例では、このインターフェースは、一時ファイルに関する任意のデータまたはメタ・データをディスクにフラッシュすることを回避するのに使用することができる。当初、こうしたファイルおよびそれらのメタ・データはＮＶメモリ２００内に作成される。これらのファイルが削除されたとき、ＯＳ１３４またはアプリケーションは、ＮＶメモリ２００に書き込まれたファイル・データおよびメタ・データがもはや必要ではなく、ＮＶメモリ２００書込みキャッシュから廃棄できることを、ＮＶメモリ２００に伝えることができる。
【００３７】
ＮＶＭ迂回インターフェースも設けられる。ある状況では、ＮＶメモリの使用が、読取りまたは書込みオペレーションにとって効率的でないことがある。再び図３を参照すると、例えば、アプリケーションがＮＶメモリ２００のサイズよりも大きいデータを永続的記憶装置３００に書込み中の場合、そのデータの一部をＮＶメモリ２００に書き込むことは、ＮＶメモリ２００が一杯になり、次いでデータをＮＶメモリ２００から長期記憶媒体にフラッシュする必要があるので、一般に有用ではない。したがって、ＮＶＭ迂回インターフェースは、インターフェースを使用するオペレーティング・システムまたはアプリケーションが、永続的記憶装置３００から読み取り、または永続的記憶装置３００に書き込むべきデータをＮＶメモリ２００ではなく長期記憶媒体上の物理メモリアドレスから直接読み取り、またはそれに書き込むべきであることを指定する、ことを可能にする。
【００３８】
一実施形態では、永続的記憶装置３００内のディスク・コントローラがディスク・アセンブリ３０２をスピニング・アップする準備中または実際にスピニング・アップしているときに、割込みが永続的記憶装置３００からホスト・コンピュータ１１０に送られる。この割込みは、オペレーティング・システム１３４またはそのコンポーネントあるいはアプリケーションに送ることができる。そのような割込みを受け取ったとき、様子を見ながら動作するように適切にプログラムされた受信側は、データがＮＶメモリ２００から長期記憶媒体に移動し、または長期記憶媒体からＮＶメモリ２００に移動することを、長期記憶媒体がまもなくスピン・アップされ、このような移動の準備ができたときに、保証することができる。これにより、長期記憶媒体のスピン・アップの回数が削減され、したがってディスク・ドライブ電力消費が削減される。さらに、メモリがスピニング中またはスピニング・アップすることを示す割込みを受け取ったとき、ＯＳは、ＮＶＭ迂回インターフェースを使用して、何らかの非永続的書込みバッファをフラッシュしたり、または長期記憶媒体に直接キャッシュしたりすることができる。
【００３９】
さらに、ＯＳコンポーネントおよびアプリケーションは、永続的記憶装置３００への書込みをアトミックとして処理することを可能にするアトミック書込みインターフェースを使用することができる。アトミックに書き込むべき全データはＮＶメモリ２００に格納される。これが完了したとき、永続的記憶装置は、アトミックに書き込むべき全データが長期記憶媒体に書き込まれることを保証する。アトミックに書き込むべきデータのすべてをＮＶメモリ２００に格納する前に障害が発生した場合、エラーが返され、受け取ったデータは廃棄される。ＮＶメモリ２００に対する格納が完了した後に、システム障害または電源障害のためにアトミック書込みに失敗した場合、システムが再始動したときにその障害が検出され、ＮＶメモリに格納されたデータのアトミック・セットが長期記憶媒体に再書込みされる。このことは、大きなデータのアトミック書込みが好ましいアプリケーションおよび設定の性能を、例えばデータベース・アプリケーションにおける性能を向上させる。なぜなら、こうしたアプリケーションが、当技術分野で「トーン書込み（torn writes）」と呼ばれる問題に対処する必要がないからである。
【００４０】
一実施形態では、オペレーティング・システム１３４、そのコンポーネント、またはアプリケーションは、ＮＶメモリ２００を使用して、定期的に使用される特定のファイルまたはオブジェクトを格納する。したがって、負荷のかかる（expensive）長期記憶媒体からの書込み／読取りが回避される。例えば、データベース・トランザクション・ログ、ファイル・システム・メタデータ、およびその他のメタ・データがＮＶメモリ２００に格納される。データを格納するＮＶメモリ２００内の各エリアに異なる優先順位を割り当てるのに優先順位方式が使用される場合、一実施形態では、そのような頻繁にアクセスされるファイルに高い優先順位が与えられる。このことはさらに、負荷のかかる長期記憶媒体への書き込み／長期記憶媒体からの読取りを回避するのに役立つ。
【００４１】
ＮＶメモリの区分化（Partitioning）
一実施形態では、ＮＶメモリ２００は、ＮＶメモリ２００の一部をオペレーティング・システムによって排他的に使用することを可能にするパーティションを含む。この一実装形態は、オペレーティング・システム１３４が、ＮＶメモリ２００をパーティションで区分化し、オペレーティング・システムからの入力で、ディスク・コントローラ・ファームウェア（disk controller firmware）によって直接制御されるＮＶメモリ２００のＯＳパーティションを有する、ことを可能にすることである。
【００４２】
したがって、ディスク・コントローラを介して、ＯＳ１３４は、実際に次に必要とされる可能性の高い特定のセクタをＮＶメモリ２００キャッシュが取り込むことを要求する。例えば、こうしたセクタは、次回のブート、またはシステムが休止状態から再開する（resume）ときに必要なセクタ、または必要である可能性が高いと考えられるセクタである。別の例として、こうしたセクタは、ＯＳ１３４が近い将来必要となると予測するセクタである。
【００４３】
したがって、そのような実施形態では、長期記憶媒体がスピン・アップされるごとに、ＯＳは、論理セクタアドレス（ＬＳＡ）のリストをディスク・ドライブ・コントローラに送ることにより、ＮＶ・メモリ２００内の読取りキャッシュのＯＳパーティションを再取り込みすることができる。このリストは、ディスク・ドライブ・コントローラがどれほど直ちに読取りキャッシュ・データを書込みバッファリング・データで上書きするかを示す、上述の優先順位方式に従って使用される、優先順位情報を含むことができ、る。
【００４４】
ＯＳ１３４内では、特定の１組のＬＳＡをＮＶメモリ２００にマッピングする機構が設けられる。これは、ＮＶメモリ２００のあるセクションがＯＳ１３４の直接の制御下に置かれることを可能とする。次いで、こうしたＬＳＡに対する読取りおよび書込みは、常にＮＶメモリ２００にアクセスすることになる。こうしたＬＳＡ内のデータは、ＮＶメモリがオペレーティング・システムによって再構成されない限り、記憶装置にフラッシュされない。一実施形態では、ＮＶメモリ２００のこのセクションにおいて、ＯＳ１３４が、「ブラック・ボックス・レコーダ情報」、すなわちシステム障害を診断するのに使用される最近のオペレーション履歴、を格納する。ＯＳ１３４は、システムが、静止したブートを実行して機械的ディスク障害を診断することができるように、セーフ・ブートに必要なブート回復コンソールおよびファイルを格納する。ＯＳ１３４はまた、システムファイルの正則表現（regular representation）の代わりに、またはそれに加えて使用される、次回のブートに必要な、場合によっては圧縮したファイルのパッケージも格納する。
【００４５】
上述のインターフェースおよびコマンドを以下の表１に示す。
【００４６】
【表１】
2006004407.tif 000003
【００４７】
コピー・オン・ライト機能
アプリケーションおよび製品の中でもとりわけ、データベースおよびデータベース製品は、時間およびメモリなどの資源の消費を低減するために、コピー・オン・ライト機能を使用する可能性がある。コピー・オン・ライトは、前のバージョンのデータを利用可能にする。コピー・オン・ライトは、例えばデータベースに格納された現バージョンの情報に加えて、前のバージョンの情報がユーザにとって有用である可能性がある、という理由で有用である。
【００４８】
コピー・オン・ライトを用いない場合、前のバージョンのデータに関する情報を提供する一方法は、ユーザにとって関心のある可能性のある時点で、データベースの完全なコピーを作成することである。これを行うと、データベースに関連付けられた全ファイルが格納される。しかし、一定量の記憶空間内に格納されるデータベースについて、各コピーもその量の記憶空間を必要とするので、この技法は空間集約型である。この手法はまた、コピー自体が多くのデータの移動を含むので時間もかかる。
【００４９】
したがって、その代わりに、元のバージョンからの変化を格納することができる。ＮＶメモリ２００が使用可能である場合、コピー・オン・ライト動作を実施するためにＮＶメモリ２００を使用することができる。コピー・オン・ライトの第１の実装形態では、変更すべき元のデータがシステム・メモリ１３０に格納される。次いでそれを更新する前に、データの未変更バージョンを利用可能にするために、コピーを安定記憶装置に書き込まなければならない。ＮＶメモリ２００が利用可能である場合、そのような記憶域はＮＶメモリ２００とすることができる。これにより、未変更のコピーの格納を迅速に実施することが可能となる。上述のように、その後の時点でこのコピーをディスク記憶域に移動することができる。ブロック指向キャッシングを使用するデータベース・システムは、これを使用して、メモリ書込みのための時間を削減することができる。
【００５０】
第２コピー・オン・ライト実装形態では、元のバージョンは長期記憶媒体に格納することができる。このような場合には、データがＮＶメモリ２００内に位置する場合、書込みを行う前に追加のコピーをＮＶメモリ２００内に作成することができる。データがＮＶメモリ内に格納されていない場合、格納されていた元のコピーを、未変更バージョンを格納するコピーであるアーカイブ・コピーとして扱うことができる。ＮＶメモリ２００は、変更後バージョンを格納する。このバージョンがＮＶメモリ２００からフラッシュされるか、またはディスクに移動されるとき、ディスク上の格納されたオリジナルのコピーは今や、変更前のデータのアーカイブ・コピーであるので、このバージョンはメモリ２００内の新しい位置に書き込まれる。
【００５１】
ＮＶメモリを用いたデフラグメンテーション（断片化解消）
大きなデータ・ストア、例えばファイル・システムやデータベースは、定期的なデータの格納および削除により、フラグメンテーション（断片化）と呼ばれる状態を呈することがある。これは、記憶装置上の空きメモリ（free memory）の大きな範囲が次第にまばらになるときに生じ、性能の劣化をもたらす可能性がある。これを補正するために、デフラグメンテーション（defragmentation）が使用される。デフラグメンテーション・プロセスは、ファイルを連続するアドレス空間内に再結合する。デフラグメンテーションを実施するために、データ・ファイルがディスク上の物理メモリ位置内で移動され、連続して格納されたファイルを生成する。したがって、一時的記憶位置が使用される。第１のファイルによって占有される空間が第２のファイルによって使用された際に、この第１のファイルが失われないように何らかの場所に格納しなければならないからである。
【００５２】
一実施形態では、デフラグメンテーション中にＮＶメモリが一時的記憶場所として使用される。データがＮＶメモリに書き込まれる。他のデータの記憶の連続性を向上させるために他のデータの位置が変更される。次いで、ＮＶメモリからのデータが、デフラグメンテーションが実行されている記憶装置に書き込まれる。一時的に格納されたデータが記憶装置（コンピュータ・システムのハード・ディスクなど）に復元されたとき、一時的コピーがＮＶメモリから除去される。したがって、長期記憶媒体と、一時的データを格納するために使用する関連するコストと、を必要とすることなくデフラグメンテーションを行うことができる。
【００５３】
永続的記憶装置の制御
図４に示し、上記で説明したように、永続的記憶装置３００は、長期記憶媒体４３０（例えば、図３のディスク・アセンブリ３０２）を含むことができる。そのような状況では、ＣＰＵ１２０からのデータが、ホスト・コンピュータ１１０と永続的記憶装置３００の間を移動する。この流れは、ホスト・コンピュータ１１０内のホスト・コンピュータ・インターフェース４００と永続的記憶装置３００内のホスト・コンピュータ・インターフェース４２０とによって仲介される。装置制御ファームウェア４４０は、ＮＶメモリ２００および長期記憶媒体４３０内の記憶域を直接的または間接的に制御することができる。
【００５４】
永続的記憶装置３００の使用を開始するために、オペレーティング・システム１３４は、記憶装置の構成を照会し、前述のように、ＮＶメモリ２００が利用可能かどうかを判定し、利用可能である場合、ＮＶメモリ２００のサイズと、タイプ、使用履歴などの他のパラメータが利用可能かどうかを判定する。次いで、ＮＶメモリ２００をどのように使用するかに関して決定を行う。
【００５５】
ＮＶメモリ２００の使用は、２つの方式で制御することができる。第１に、ＮＶメモリ２００のいくつかの部分をその記憶装置の制御下に置くことができる。第２に、ＮＶメモリ２００のいくつかの部分をＯＳ１３４の直接の制御下に置くことができる。上記で議論したように、ＮＶメモリ２００の一部がＯＳの直接の制御下にあるとき、その部分は、特定の１組のＬＳＡをマッピングするのに使用される。次いで、こうしたＬＳＡに対する読取りおよび書込みは常に、マッピングした部分のＮＶメモリ２００にアクセスする。こうしたＬＳＡ内のデータは、ＮＶメモリがオペレーティング・システムによって再構成されない限り、記憶装置にフラッシュされない。
【００５６】
オペレーティング・システムの直接の制御下にないＮＶメモリ２００の部分はキャッシュとして使用される。このキャッシュ部分は、読取りキャッシュと書込みバッファの２重の役割を果たす。書込みバッファがディスクにフラッシュされると、ＯＳは、読取りキャッシュとして働かせるために、様子を見ながらディスクからのデータをＮＶメモリ２００に再取り込みする。このキャッシュ・データは、書込みバッファ・データで上書きされる。やがて、読取りキャッシュは書込みバッファ・データで完全に上書きされ、バッファが一杯になると、記憶装置コントローラがディスクをスピン・アップし、バッファ・データをディスクにフラッシュし、読取りキャッシュに再取り込みし、その後ディスクをスピン・ダウンする。
【００５７】
キャッシュ部分とマッピング部分の両方を有するＮＶメモリの使用を図５に示す。ＮＶメモリ２００は、キャッシュ部分５００とマッピング部分５１０とに分割される。矢印５２０で示すように、マッピング部分５１０にマッピングされていないＬＳＡからのデータ読み取り、またはＬＳＡへのデータ書き込みはキャッシュ部分５００に書き込まれ、矢印５３０で示すように、ＬＳＡから読み取られるデータがキャッシュ部分に存在しない場合、長期記憶媒体４３０から読み取られる。上記で議論したように、キャッシュ部分５００は、読取りキャッシュと書込みキャッシュの両方として機能し、矢印５４０は、キャッシュ部分５４０内のデータが長期記憶媒体４３０にフラッシュされ、キャッシュ部分５００を書込みバッファとして使用する空き（space）が存在するときに、データが長期記憶媒体４３０からキャッシュ部分５００にコピーされる、ことを示している。
【００５８】
マッピング部分５１０は特定のＬＳＡに合わせてマッピングされる。したがって、矢印５５０で示すように、こうしたＬＳＡが読み取られ、またはこうしたＬＳＡに書き込まれるとき、こうした読取りおよび書込みはマッピング部分５１０に対して直接行われる。マッピング部分５１０内のデータは長期記憶媒体４３０にフラッシュされず、長期記憶媒体４３０がこのマッピング部分にデータを与えることもない。これに対する唯一の例外は、これらが再マッピングに基づく場合である。矢印５６０で示すように、新しいマッピングが作成されると、前のマッピングからのデータが長期記憶媒体４３０にコピーされ、マッピングされた新しいＬＳＡに関するディスクからのデータが、ＮＶメモリ２００に（具体的にはマッピング部分５１０に）コピーされる。
【００５９】
キャッシュ部分５００の制御
キャッシュ部分の制御は、図６に示す状態図で定義される。図６に示すように、初期化中（６０３）またはシャット・ダウン後のリブート中（６２５）にブート状態６００に入る。ブート状態の後、遷移６０５で示すように、オペレーティング・システムが動作中状態（running state）６１０に移ると、キャッシュをフラッシュし、および最初にキャッシュに取り込む論理セクタ・アドレスのリストと共に、再取り込みするコマンドを送る。遷移６１３で示すように、キャッシュをフラッシュして再取り込みするこのコマンドをオペレーティング・システム１３４から受け取るごとに、動作中状態６１０のオペレーションが再度実施される。シャット・ダウン状態６２０に移るために遷移６１５が行われる。シャット・ダウンが行われるとき、一実施形態によれば、キャッシュをフラッシュし、ＬＳＡリストで再ポピュレートするコマンドが送られる。
【００６０】
ディスク・ドライブ・コントローラ・ファームウェア４４０は、あるケースでは低速のディスク４３０を使用するのではなく、ＮＶメモリ２００を使用することによって、電力消費を削減し、信頼性および性能を向上させる。ディスク・ドライブ・コントローラ４４０は、ＯＳ１３６からコマンドを受け取り、ＮＶメモリ２００のキャッシュ部分５００に論理セクタ・アドレス（ＬＳＡ）の指定のリストに基づいてデータを取り込む。このＬＳＡのリストはセクタの優先順位も含み、この優先順位では、最高の優先順位セクタはキャッシュから除去される可能性が最も低く、最低の優先順位セクタは除去される可能性が最も高い。キャッシュ５００に取り込まれると、ディスク４３０がスピン・ダウンし、キャッシュ５００は書込みバッファとして使用される。読取りのためにキャッシュされたセクタは、その優先順位に従ってバッファが満たされるにつれて上書きされる。ディスクは、読取りキャッシュ・ミスがあったとき、書込みバッファが一杯になったとき、または明示的スピン・アップ・コマンドをＯＳ１３４から受け取ったときにのみスピン・アップする。このようにして、ディスク４３０は、オンである時間と比べて長い期間オフのままとなり、したがって電力が削減され、信頼性が向上する。最高の優先順位ＬＳＡは、ＯＳ１３４によってそうでないように指示されるまで、永続的にＮＶメモリ２００キャッシュ内に置かれる。
【００６１】
ブート状態６００のオペレーションを図７に示す。図７に示すように、ステップ７００では、ＮＶメモリ２００からのブート状態ブロックが、ＢＩＯＳおよびオペレーティング・システム１３４によって要求されたときに与えられる。それと並行して、長期記憶媒体４３０（例えばディスク）がスピン・アップする。
【００６２】
この状態が完了した後、動作状態６１０に入り、ＯＳは、キャッシュをフラッシュし、指定のＬＳＡをキャッシュに取り込むコマンドを送る。動作状態６１０のオペレーションを図８に示す。図８に示すように、動作状態で、ディスクがまだスピン・アップしていない場合、ステップ８００でディスクがスピン・アップする。ステップ８１０では、ＮＶメモリ２００内の任意の修正されたセクタがディスク／長期記憶媒体４３０にフラッシュされる。次いでステップ８２０では、ＯＳによって指定されるＬＳＡが、ディスクから読取りキャッシュ用のＮＶメモリ２００に読み取られる。次いでステップ８３０では、ディスクがスピン・ダウンする。ステップ８４０では、ＮＶメモリ２００が読取りキャッシュおよび書込みバッファとして使用される。キャッシュされたセクタが要求時に提供され、書き込まれるセクタがＮＶメモリ・バッファに保存され、優先順位に従って読取りキャッシュ・セクタが上書きされる。ステップ８５０で書込みバッファが全しきい値を超えるとき、ステップ８００から８３０で、ＮＶメモリがフラッシュされ、その後、再び取り込みが実行される。
【００６３】
シャット・ダウンするコマンドを受け取ったとき、シャット・ダウン状態６２０に入る。シャット・ダウン状態６２０のオペレーションを図９に示す。ステップ９００では、ディスクがスピン・アップする。ステップ９１０では、ＮＶメモリ２００内の全ての修正されたセクタがディスク／長期記憶媒体４３０にフラッシュされる。次いでステップ９２０では、ＯＳで指定されるＬＳＡが、ディスクから読取りキャッシュ用のＮＶメモリ２００に読み取られる。これにより、ＮＶメモリが、ＢＩＯＳおよびオペレーティング・システム１３４によってスタートアップ時に要求される、利用可能なデータを有することが可能となる。
【００６４】
他の形態のシャット・ダウンまたは類似の機能の休止（例えば、スタンドバイおよび休止（hibernate））も、図６から図９に示す方法に従って機能する。機能を再開するのに必要な情報（information needed to resume functioning）がＮＶメモリ２００に格納され、それにより、より迅速な再開（resumption）が可能となる。
【００６５】
やはり、上述のように、ＯＳ１３４およびアプリケーション（ＯＳ１３４を介して）は、装置コントローラ４４０に他の手がかりを、装置コントローラ４４０がいつディスクをスピン・アップまたはスピン・ダウンするかを決定する助けとなるように、与えることができ、また逆に、コントローラＦＷが何らかの理由でディスクをスピン・アップしなければならない場合、コントローラＦＷは、ディスクがスピニング・アップされることを示す割込みをＯＳ１３４に送る。次いで、オペレーティング・システムおよびアプリケーションは、この状況を利用して、揮発性作業メモリにキャッシュされている重要でないデータを記憶装置に書き込むことができる。
【００６６】
一実施形態では、ハード・ドライブ記憶装置の音響雑音を低下させるために、コントローラ４４０ファームウェアも、ＮＶメモリ２００で達成される利点を利用する。書込みバッファしきい値を十分低く設定することにより、コントローラ４４０は、より低速にスピン・アップすることができ、書込みバッファをディスク４３０にフラッシュするのにより長い時間を取ることができ、スピンドルおよびシーク・サーボに応じるヘッドからの音響雑音を低減する。この技法はまた、電源から取り出されるピーク電流も低減する。コントローラ４４０ファームウェアはまた、バッファ中の比較的大量のデータを利用して、連続するブロックでディスク上にデータを配置し、データをディスクにフラッシュする際にデフラグメンテーション状態になるのを回避する。
【００６７】
キャッシュ５００の正確な状態はコントローラ４４０によってのみ知られる。オペレーティング・システムは、コントローラ４４０に照会することによってキャッシュ５００のスナップ・ショットを得ることができる。任意の時点で、オペレーティング・システム１３４は、コマンドを送ることにより、キャッシュ５００をフラッシュし、近い将来に必要となるとオペレーティング・システム１３４が考える１組の新しいセクタで開始することを選ぶことができる（図６の遷移６１３）。
【００６８】
一実施形態では、ＬＳＡのリスト（遷移６１５で休止からブートまたは再開するのに必要なもの、あるいは一般には、ブート状態６００から遷移する際に、または動作状態６１０で与えられるもの）を提示することによってキャッシュ部分５００にファイルを追加するというＯＳ１３４からの特定のコマンドがない場合、コントローラは、ブートまたはＳ４レジュームの直後にディスクＩＯを監視することにより、ディスクからＮＶメモリ２００へのコントローラ自体のプリフェッチを行うことができる。こうしたＩＯは、次回のブート時またはＳ４再開時に必要となる可能性が最も高いデータを表す。このデータがコントローラ４４０によって収集された後、このデータは、ＮＶメモリ２００内のテーブルに格納される。次回のシャット・ダウン時または休止時に、コントローラ４４０は、このデータを使用して、シャット・ダウンまたは休止する前にディスクからＮＶメモリ２００に取り込む。
【００６９】
マッピング部分５１０の制御
オペレーティング・システムは、ＮＶメモリ２００のマッピング部分５１０を直接制御する。この部分について、オペレーティング・システムは、マッピング部分５１０にマッピングしなければならない特定の論理セクタ・アドレスを定義する。これにより、ＮＶメモリ２００に格納されたデータの、オペレーティング・システムの直接制御が得られる。一実施形態では、このような制御を他のアプリケーションにも与えることができる。
【００７０】
これを実施する一方法は、オペレーティング・システム１３４が、特定であるが必ずしも連続ではない１組のＬＳＡをマッピングまたはシャドーイングするＮＶメモリ２００の一部分を作成することである。この部分を作成するために、ＯＳは、書込みバッファ内および長期記憶媒体４３０に対する前のマッピング内のすべての修正されたデータを移動する、ＮＶメモリ２００全体をフラッシュするコマンドをディスク・コントローラに送る。次いで、ＯＳは、ＬＳＡのリストをＮＶメモリ２００のマッピング部分５１０にマッピングするコマンドを送る。コントローラ４４０は、ディスクからのセクタをＮＶメモリ２００にコピーし、オペレーティング・システム１３６によってそうでないように指示されるまで、それをそこに維持する。マッピングのために永続的記憶装置３００に送られた論理セクタ・アドレスがディスク４３０の現アドレス空間を超えて延びている場合、これらがディスクのアドレス空間の終わりに付加される。再マッピングが行われるとき、ＯＳ１３４は、こうした拡張アドレス内のデータをディスクのアドレス空間内の場所にコピーしてデータの紛失を回避する必要がある。オペレーティング・システムは、ＮＶメモリ２００内のこうしたマッピング・セクタを直接制御する。
【００７１】
ＯＳ１３４は、マッピング部分５１０をディスク４３０に周期的にフラッシュし、新しい１組のＬＳＡをマッピング部分５１０にマッピングすることができる。これは、図１０に示すように行われる。ステップ１０００では、読取り／書込みのためにディスク４３０を準備する。ステップ１０１０では、ＮＶメモリ２００のマッピング部分５１０からのデータをディスク４３０にフラッシュする。ステップ１０２０では、キャッシュ部分５００もディスクにフラッシュする。ステップ１０３０では、マッピングすべき新しいＬＳＡをディスク４３０からＮＶメモリ２００のマッピング部分５１０にコピーする。図示していないが、一実施形態では、キャッシュ部分５００が、読取りキャッシュとして機能するためにディスク４３０からのデータで満たされる。次いでステップ１０４０では、ディスク４３０をスピン・ダウンする。
【００７２】
このマッピングの代替方法として、ＮＶメモリを永続的記憶装置３００の別々のパーティションまたは論理ボリュームとして構成することもできる。その場合、連続的論理セクタは、上述のようにオペレーティング・システム１３６の直接の制御下に置かれる。
【００７３】
永続的記憶装置３００に関する自己記述メモリ部分
図５に示すキャッシュ部分５００およびマッピング部分５１０に加えて、一実施形態では、ＮＶメモリの一部が、永続的記憶装置３００についての一定の情報を格納するために取り分けられ、それにより、診断およびその他の情報を維持することが可能となる。
【００７４】
一実施形態では、そのような記述情報には、ラベル情報、長期記憶媒体４３０内の不良セクタの数、一定時間で書き込まれるセクタ数に関する統計データ、一定時間でのディスクのスピン・アップ数またはスピン・ダウン数、および長期記憶媒体が動作している時間が含まれる。
【００７５】
一実施形態では、この自己記述メモリ部分が、特定のインターフェースによって読み取られ、これは、ＯＳコンポーネントまたはアプリケーションがメモリにアクセスすることを可能にする。別の実施形態では、永続的記憶装置３００はディスプレイを含む。例えば、ＬＣＤディスプレイを永続的記憶装置３００に含めることができる。ある照会が、コンピュータ１１０を介して、または直接的に（例えば永続的記憶装置３００上のボタンを押すことによって）永続的記憶装置３００に対して行われたとき、自己記述メモリ部分からのデータが表示される。
【００７６】
一実施形態では、ＯＳまたはアプリケーションは、自己記述メモリに格納された情報を使用して、記憶装置３００がその平均寿命に近づき、その結果、前記記憶装置３００上に格納されたデータを新しい記憶装置に転送する必要がある時期、を判定する。
【００７７】
ＮＶメモリ２００を、コンピュータのオペレーションに関するデータを格納する「ブラックボックス」レコーダとして使用することを可能にする情報を格納することもできる。異常シャット・ダウンなどの障害の場合に、コンピュータのオペレーションに関する情報が格納され、障害を分析するためにそれを取り出すことができる。そのような情報は、前記コンピュータ・システムで動作するプロセスに関するプロセス情報、前記コンピュータ・システムで動作するスレッドに関するスレッド情報、データ・アクセス、および装置アクセスを含むことができる。飛行機のブラック・ボックス・レコーダと同様に、限定された量の空間をこの動作情報に割り当てることができ、その空間に満たすことができるよりも多くの情報を収集したとき、前に格納した動作情報を新しい情報で上書きする。
【００７８】
疲労（wear）レベリング
あるＮＶメモリ技術は、過度の消去サイクルの後に疲労する。そのような摩耗の始まりを遅らせるために、一実施形態では、コントローラ４４０は、ＮＶメモリ２００の各エリアをほぼ等しく使用することを保証するために、すべてのエリアについて消去の平衡を取る。コントローラ４４０は、頻繁に書き込まれる、ディスク・セクタに関連するＮＶメモリ・ブロックが疲労するのを回避するために、ＮＶメモリ内で使用する物理位置を変更する。一実施形態では、このことは、疲労レベリングを行うためにマッピング部分で利用可能な空間が常に存在することを保証するために使用される一定量のオーバヘッドを必要とする。例えば、１ＭＢのセクタがマッピング部分５１０用に取り分ける（用意される）場合、ディスク・コントローラは、疲労レベリングが適切に動作することを可能にするために、実際には１．５ＭＢを取り分ける（用意する）ことがある。
【００７９】
結論
上記の例は単に説明のために与えたものであり、決して本発明の制限と解釈すべきでないことに留意されたい。様々な実施形態を参照しながら本発明を説明したが、本明細書で使用した語は、限定の語ではなく、説明および例示の語である。さらに、特定の手段、材料、および実施形態を参照しながら本発明を説明したが、本明細書で開示した特定の詳細に本発明を限定するものではない。むしろ、本発明は、特許請求の範囲内にあるものなど、すべての機能的に等しい構造、方法、および使用法に拡張される。本明細書の教示の特典を得る当業者は、本発明の範囲および精神から逸脱することなく、本発明の諸態様で、本発明に対して多数の修正を実施することができ、変更を行うことができる。
【図面の簡単な説明】
【００８０】
【図１】本発明が常駐する例示的コンピュータ・システムを一般的に示すブロック図である。
【図２】本発明を実装することのできる場所を一般に示す、図１の例示的コンピュータ・システムのブロック図である。
【図３】本発明の一態様による永続的記憶装置のブロック図である。
【図４】本発明の一態様による永続的記憶装置のブロック図である。
【図５】本発明の一実施形態によるオペレーティング・システム、不揮発性メモリ、および長期記憶媒体の間のデータの流れを示すブロック図である。
【図６】本発明の一実施形態による不揮発性メモリのキャッシュ部分の状態の状態図である。
【図７】本発明の一実施形態によるブート状態のオペレーションの流れ図である。
【図８】本発明の一実施形態による動作状態でのオペレーションの流れ図である。
【図９】本発明の一実施形態によるシャット・ダウン状態でのオペレーションの流れ図である。
【図１０】本発明の一実施形態による不揮発性メモリのマッピング部分のフラッシュ中のオペレーションの流れ図である。
【符号の説明】
【００８１】
１００    コンピューティング・システム環境
１１０    コンピュータ
１２０    処理装置（ＣＰＵ）
１２１    システム・バス
１３０    システム・メモリ
１３４    オペレーティング・システム
１３５    アプリケーション・プログラム
１３６    他のプログラム・モジュール
１３７    プログラム・データ
１４０    取外し不能不揮発性メモリ・インターフェース
１４４    オペレーティング・システム
１４５    アプリケーション・プログラム
１４６    他のプログラム・モジュール
１４７    プログラム・データ
１５０    取外し可能不揮発性メモリ・インターフェース
１５１    磁気ディスク・ドライブ
１５２    取外し可能不揮発性磁気ディスク
１５５    光ディスク・ドライブ
１５６    取外し可能不揮発性光ディスク
１６０    ユーザ入力インターフェース
１６１    マウス
１６２    キーボード
１７０    ネットワーク・インターフェース
１７１    ローカル・エリア・ネットワーク
１７２    モデム
１７３    広域ネットワーク
１８０    リモート・コンピュータ
１８１    メモリ記憶装置
１８５    リモート・アプリケーション・プログラム
１９０    ビデオ・インターフェース
１９１    モニタ
１９５    出力周辺インターフェース
１９６    プリンタ
１９７    スピーカ
２００    ＮＶメモリ（ＮＶキャッシュ・メモリ）
３００    永続的記憶装置
３０２    ディスク・アセンブリ
３０４    ディスク
３０６    読取り／書込みヘッド
３０８    スピンドル／アーマチャ・アセンブリ
３１０    コントローラ
３１２    揮発性キャッシュ・メモリ
４００    ホスト・コンピュータ・インターフェース
４２０    ホスト・コンピュータ・インターフェース
４３０    長期記憶媒体
４４０    装置制御
５００    キャッシュ部分
５１０    マッピング部分
６００    ブート状態
６１０    動作状態
６２０    シャット・ダウン状態
【図１】
2006004407.tif 000004
【図２】
2006004407.tif 000005
【図３】
2006004407.tif 000006
【図４】
2006004407.tif 000007
【図５】
2006004407.tif 000008
【図６】
2006004407.tif 000009
【図７】
2006004407.tif 000010
【図８】
2006004407.tif 000011
【図９】
2006004407.tif 000012
【図１０】
2006004407.tif 000013
【外国語明細書】
2006004407000001.pdf