(57)【要約】【課題】動作中にメモリモジュールが挿入または取外しされたときにメインメモリの使用を動的に調整するオペレーティングシステムを備えたコンピュータシステムを提供する。【解決手段】本発明は、メインボードと、メインボードに結合された少なくとも１つのＣＰＵと、メイン・ボードによって少なくとも１つのＣＰＵに結合され、第１のメモリ記憶装置（ＦＭＳ）と、少なくとも１つのＣＰＵでＦＭＳと実質的に同じ速度で動作する取り外し可能な不揮発性メモリ記憶装置（ＮＭＳ）と、を備えるメイン・メモリと、を有し、メイン・メモリは、さらに、ＮＭＳの取外しまたは挿入に応じてメイン・メモリの動的調整を可能にするオペレーティング・システムを支援することが可能であり、ＣＰＵに結合された少なくとも１つの入力装置と、ＣＰＵに結合された少なくとも１つの出力装置と、を有するコンピュータ・システムを提供する。【選択図】図１
2004295885.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムであって、
メイン・ボードと、
前記メイン・ボードに結合された少なくとも１つの中央処理装置（ＣＰＵ）と、
前記メイン・ボードによって前記少なくとも１つのＣＰＵに結合され、
第１のメモリ記憶装置（ＦＭＳ）と、
前記少なくとも１つのＣＰＵで前記ＦＭＳと実質的に同じ速度で動作する取り外し可能な不揮発性メモリ記憶装置（ＮＭＳ）と、
を備える、少なくとも２つのメモリ記憶を収容することができるメイン・メモリと、
を有し、
該メイン・メモリが、さらに、前記コンピュータ・システムの起動時に前記メイン・メモリにロードされるオペレーティング・システムを支援することができ、
該オペレーティング・システムが、前記少なくとも１つのＣＰＵとメイン・メモリの基本動作を制御し、
該オペレーティング・システムが、前記ＮＭＳの取外しまたは挿入に応じたメイン・メモリの動的調整を可能にしており、
前記ＣＰＵに結合された少なくとも１つの入力装置と、
前記ＣＰＵに結合された少なくとも１つの出力装置と、
を有するコンピュータ・システム。
【請求項２】
前記動的調整が、前記ＮＭＳの前記取外しまたは挿入に関する通知に対応する、請求項１に記載のコンピュータ・システム。
【請求項３】
前記通知が、前記ＮＭＳの前記取外しまたは挿入に応じて前記メイン・ボードによって生成されるハードウェア割込み応答（ＩＲＱ）である、請求項２に記載のコンピュータ・システム。
【請求項４】
前記メイン・ボードによって前記ＣＰＵに結合され、前記ＮＭＳが取外しまたは挿入されたときに前記システムに対する固有のイベントを登録するＢＩＯＳを含むＢＩＯＳメモリをさらに有する、請求項１に記載のコンピュータ・システム。
【請求項５】
前記ＦＭＳが、揮発性ＲＡＭである、請求項１に記載のコンピュータ・システム。
【請求項６】
前記ＦＭＳが、ＮＭＳである、請求項１に記載のコンピュータ・システム。
【請求項７】
前記ＮＭＳが、磁気ランダム・アクセス・メモリ（ＭＲＡＭ）で、請求項１に記載のコンピュータ・システム。
【請求項８】
前記ＮＭＳが、強誘電体ランダム・アクセス・メモリ（ＦｅＲＡＭ）である、請求項１に記載のコンピュータ・システム。
【請求項９】
コンピュータ・システムであって、
メイン・ボードと、
前記メイン・ボードに結合された少なくとも１つの中央処理装置（ＣＰＵ）と、
前記メイン・ボードによって少なくとも１つのＣＰＵに結合され、
第１のメモリ記憶装置（ＦＭＳ）と、
前記少なくとも１つのＣＰＵで前記ＦＭＳと実質的に同じ速度で動作する取り外し可能な不揮発性メモリ記憶装置（ＮＭＳ）と、
前記コンピュータ・システムの起動時に前記ＦＭＳにロードされ、前記少なくとも１つのＣＰＵとメイン・メモリの前記基本動作を制御し、前記ＮＭＳの前記取外しまたは挿入に関する通知に応じたメイン・メモリの動的調整を可能にするオペレーティング・システムと、
を備えるメイン・メモリと、
前記少なくとも１つのＣＰＵに結合された少なくとも１つの入力装置と、
前記少なくとも１つのＣＰＵに結合された少なくとも１つの出力装置と、
を有するコンピュータ・システム。
【請求項１０】
前記通知が、前記ＮＭＳの前記取外しまたは挿入に応じて前記メイン・ボードによって生成されたハードウェア割込み応答（ＩＲＱ）である、請求項９に記載のコンピュータ・システム。
【請求項１１】
前記メイン・ボードによって前記ＣＰＵに結合され、前記ＮＭＳの前記取外しまたは挿入の際に前記システムに対する固有のイベントを登録するＢＩＯＳを含むＢＩＯＳメモリをさらに有する、請求項９に記載のコンピュータ・システム。
【請求項１２】
前記ＮＭＳが、磁気ランダム・アクセス・メモリ（ＭＲＡＭ）である、請求項９に記載のコンピュータ・システム。
【請求項１３】
ＣＰＵとメモリを備えるコンピュータによって実行可能なオペレーティング・システムであって、
アクティブなプロセスのための前記ＣＰＵへのアクセス時間を管理するプロセス・マネージャと、
前記ＣＰＵによる現在アクティブなプロセスの実行のために、キャッシュ、メイン・メモリおよび仮想メモリを含むメモリを管理するメモリ・マネージャと、
前記ＣＰＵによって実行されるときに、プロセスによって必要とされる情報の入出力を管理するデバイス・マネージャと、
前記メモリ・マネージャに結合されており、動作中に不揮発性メイン・メモリが前記コンピュータ・システムに追加または取外しされたときにメイン・メモリの使用を動的に調整するメイン・メモリ・コントローラと、
を有するオペレーティング・システム。
【請求項１４】
前記使用の動的調整が、
第１のメモリ記憶装置（ＦＭＳ）と、
前記ＦＭＳと実質的に同じ速度で動作する取り外し可能な不揮発性メモリ記憶装置（ＮＭＳ）と、
を有するメイン・メモリに基づく、請求項１３に記載のオペレーティング・システム。
【請求項１５】
前記プロセスが、スレッドであっても良い、請求項１３に記載のオペレーティング・システム。
【請求項１６】
前記メイン・メモリ・コントローラが、前記ハードウェア・システムによって生成されたハードウェア割込み（ＩＲＱ）に基づいてメイン・メモリの使用を動的に調整する、請求項１３に記載のオペレーティング・システム。
【請求項１７】
前記メイン・メモリ・コントローラが、前記システムに登録されたＢＩＯＳイベントに基づいてメイン・メモリの使用を動的に調整する、請求項１３に記載のオペレーティング・システム。
【請求項１８】
前記メイン・メモリ・コントローラの前記動作が、前記プロセス・マネージャによって最も高い優先順位を与えられる、請求項１３に記載のオペレーティング・システム。
【請求項１９】
前記ＦＭＳが、ＮＭＳである、請求項１３に記載のコンピュータ・システム。
【請求項２０】
前記不揮発性メイン・メモリが、磁気ランダム・アクセス・メモリ（ＭＲＡＭ）である、請求項１３に記載のオペレーティング・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、記憶装置を備えたコンピュータ・システム用のオペレーティング・システムに関し、より詳細には、コンピュータ・システムの動作中に不揮発性のメイン・メモリモジュールが挿入または取外しされたときにメイン・メモリの使用量を動的に調整するオペレーティング・システムを備えたコンピュータ・システムに関する。
【背景技術】
【０００２】
今日のコンピュータ・システムは、ますます高性能化されてきており、ユーザは、増え続ける様々な計算タスクをより高速に実行することができる。
【０００３】
プロセッサの速度、ハードドライブの記憶容量、使用可能なメイン・メモリ、およびその他のハードウェアの優れた機能に関係なく、これらの構成要素は、電力が印加されオペレーティング・システムがロードされてシステムの使用が可能になるまで単なる紙押さえに過ぎない。
【０００４】
最も単純なレベルでかつ最も一般的な意味において、オペレーティング・システムのタスクは、特定のカテゴリ、すなわちプロセス管理、デバイス管理（アプリケーション管理とユーザ・インタフェース管理を含む）、およびメモリ管理（記憶装置を含む）に分類される。
【０００５】
コンピュータ・システムのメモリは、技術的には、任意の形の電子的、磁気的または光学的な記憶装置であるが、一般に、ある程度速度と機能に基づいて様々なカテゴリに分けられる。大容量記憶装置は、一般に、ハード・ドライブ、テープ・ドライブ、光学媒体、他の大容量記憶装置など、一般に安価で低速で大容量の装置であると理解されている永久的な不揮発性記憶装置である。大容量記憶装置の主な目的は、アプリケーションまたはデータを、実行に必要になるまで記憶することである。大容量記憶装置は、低コストでかつ不揮発性の性質により、一般に、コンピュータ・システムに、数百ギガバイトまでの記憶装置を提供する。このような大容量記憶装置は、ほぼ１ミリ秒を超えるアクセス時間で動作する。プロセッサが、必要とされるすべてのデータごとにそのような大容量記憶装置にアクセスしなければならない場合、コンピュータ・システムは、きわめて低速で動作することになる。
【０００６】
処理のための迅速なアクセスを容易にするために、最新の通常のコンピュータは、メモリ・バスによってプロセッサに直接接続されたメイン・メモリを有する。比較的遅い記憶装置と対照的に、メイン・メモリは、一般に、アクセス時間がほぼ１００ナノ秒未満のＤＲＡＭ、ＳＤＲＡＭ、ＲＤＲＡＭなどの高速で高価な揮発性ランダム・アクセス・メモリ（ＲＡＭ）から成る。高いコストと連続的な電力を必要とする揮発性の性質によって、メイン・メモリＲＡＭは、一般に、数十メガバイトから１または２ギガバイトの範囲の容量で提供される。プロセッサとメイン・メモリの間に置かれる少量のキャッシュ・メモリとして、一般に、きわめて高速（１０ナノ秒未満のこともある）でより高価なＳＲＡＭが使用される。そのような高速キャッシュの容量は、一般に、数十キロバイトから数メガバイトである。より高性能なシステムでは、各レベルが異なる速度と容量のいくつかのレベルのキャッシュ・メモリが使用されることがある。
【０００７】
メイン・メモリは、プロセッサによって使用可能なように、編成されなければならない。初期化の際に、オペレーティング・システムは、ＢＩＯＳによって報告された使用可能なメイン・メモリを、例えば２キロバイトなどの標準のブロック・サイズに分割する。次に、実行されるアプリケーションが、これらの固定されたブロック・サイズにロードされる。従来より、メイン・メモリには、アプリケーションの目前の動作に必要な部分だけが、その都度ロードされる。処理のためにアプリケーションの様々な部分が必要とされるので、メイン・メモリブロック内のアクティブなコードの一部分が置き換えられる。メイン・メモリが大きいほど、メモリに一度に常駐できる処理コードの量が多くなる。
【０００８】
メイン・メモリ内の使用可能なスペースの必要に応じてメイン・メモリからコードを出し入れすることは、時間のかかるプロセスであり、システムの性能に直接影響を及ぼす。しかしながら、一般に、プロセッサは、１度にメモリの１つの記憶場所にしかアクセスできず、したがって、任意の所定の瞬間においてメイン・メモリＲＡＭの大部分は使用されていない。
【０００９】
コンピュータ・システムが、様々な形で使用されることがあるので、ある瞬間に適切と思われたＲＡＭの量が、別の瞬間には不十分または過剰なことがある。例えば、画像の処理および操作アプリケーションは、使用するための初期化に時間がかかるだけでなく、使用可能なメイン・メモリＲＡＭリソースの大部分をも必要とするが、単純なテキスト・エディタは、システムにとってほとんど注目に値しない。
【００１０】
ＲＡＭは高価である。ユーザは、実際には、コンピュータ・システムの電力を遮断し、ＲＡＭの容量を変更して予想される需要を反映させることができるが、これは、時間がかかり、追加ＲＡＭの投資だけでなく特殊なツールと知識を必要とすることがある。
【００１１】
このジレンマを支援するために、コンピュータ・システムは、一般に、仮想メモリを使用する。具体的には、オペレーティング・システムが、ハードドライブの一部分を追加ＲＡＭの機能を果たすように指定する。これは、有効でコスト効率が高いが、ハードドライブの低速性のため、システム全体のパフォーマンスが低下し、多くの状況において有効とは言えないソリューションである。
【００１２】
仮想メモリとその使用を支援するオペレーティング・システムの１つの特徴は、システムの動作中に仮想メモリを動的に調整できることである。一般に、これは、システム・ユーザが、メモリを大量に使用する多数のアプリケーションを同時に立ち上げるときにオペレーティング・システムによって自動化されるタスクである。非割当て（Deallocation）を実行することもできるが、これは、一般に、さらに複雑なプロセスである。
【００１３】
このプロセスと機能は有益であるが、ハードドライブの一般的な速度は約７ミリ秒であり、これは、メイン・メモリＲＡＭの一般的な速度よりもかなり長い。したがって、割当てプロセスまたは非割当てプロセスの間に、ユーザは、コンピュータ・システムの著しい使用停止に耐えなければならない。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
最新の多くのオペレーティング・システムは、起動時に認識され自動的に構成されるプラグ・アンド・プレイ装置と、動作中にコンピュータ・システムに追加または取外しすることができるホットプラグ可能な（hot-plaggable、接続または取外しを認識可能な）装置を使用することができる。
【００１５】
いくつかの例において、プラグ・アンド・プレイ装置またはホットプラグ装置は、ハードドライブによって提供される仮想メモリよりも優れた改良品として使用することができるＦＬＡＳＨカードなどの記憶装置である。しかしながら、このような装置は、メイン・メモリＲＡＭよりもかなり遅く、したがって、メイン・メモリの容量と能力をシームレスに増大させるために使用することができない。
【００１６】
さらに、メイン・メモリは、オペレーティング・システムの初期のロード中に、オペレーティング・システムによって構成され細分される。システムの電力が遮断されているときにはメイン・メモリＲＡＭを増減することができるが、現在のオペレーティング・システムでは、システムの動作中にメイン・メモリＲＡＭを追加したり取外したりすることはできない。これを行うと、オペレーティング・システムとコンピュータ・システム全体がきわめて不安定性になる。現在のオペレーティング・システムでは、システムが実行している間にメイン・メモリの動的再割当てができない。
【００１７】
さらに、メイン・メモリＲＡＭが、コンピュータ・システムを危機的に使用不能にすることなく取り外された場合でも、一般に使用されるＲＡＭの揮発性によって、取り外す前にＲＡＭに保持されていた内容が、取り外されたとたんに失われることになる。したがって、遅い不揮発性メモリの技術を使用することによって、コンピュータ・システム間でアプリケーションを共用したり後日すぐに使用できるように記憶したりすることが必要とされている。
【００１８】
従って、以上示した欠点のうちの１つまたは複数を克服するコンピュータ・システムおよびオペレーティング・システムが必要である。本発明は、これらの必要のうちの１つまたは複数を満たす。
【課題を解決するための手段】
【００１９】
本発明は、コンピュータ・システムの動作中に不揮発性メイン・メモリ・モジュールが挿入または取外しされたときにメイン・メモリの使用を動的に調整するオペレーティング・システムを備えたコンピュータ・システムを提供する。
【００２０】
特にまた単なる例として、本発明の実施形態によれば、本発明は、メイン・ボードと、メイン・ボードに結合された少なくとも１つの中央処理装置（ＣＰＵ）と、メイン・ボードによって少なくとも１つのＣＰＵに結合され、第１のメモリ記憶装置（first memory store、ＦＭＳ）と、少なくとも１つのＣＰＵでＦＭＳと実質的に同じ速度で動作する取り外し可能な不揮発性メモリ記憶装置（non-volatile memory store、ＮＭＳ）と、を備える少なくとも２つのメモリ記憶を収容することができるメイン・メモリと、を有し、メイン・メモリは、さらに、コンピュータ・システムの起動時にメイン・メモリにロードされ、少なくとも１つのＣＰＵとメイン・メモリの基本動作を制御し、ＮＭＳの取外しまたは挿入に応じてメイン・メモリの動的調整を可能にするオペレーティング・システムを支援することが可能であり、ＣＰＵに結合された少なくとも１つの入力装置と、ＣＰＵに結合された少なくとも１つの出力装置と、を有するコンピュータ・システムを提供する。
【００２１】
さらに、本発明の実施形態によれば、本発明は、メイン・ボードと、メイン・ボードに結合された少なくとも１つの中央処理装置（ＣＰＵ）と、メイン・ボードによって少なくとも１つのＣＰＵに結合され、第１のメモリ記憶装置（FMS）と、ＣＰＵで第１のメモリ記憶と実質的に同じ速度で動作するＮＭＳと、を備えるメイン・メモリと、コンピュータ・システムの起動時に第１のメモリ記憶装置内にロードされ、少なくとも１つのＣＰＵとメイン・メモリの基本動作を制御し、ＮＭＳの取外しまたは挿入に関する通知に応じてメイン・メモリの動的調整を可能にするオペレーティング・システムと、ＣＰＵに結合された少なくとも１つの入力装置と、ＣＰＵに結合された少なくとも１つの出力装置とを有するコンピュータ・システムを提供することができる。
【００２２】
さらにもう１つの実施形態において、本発明は、アクティブなプロセスのＣＰＵへのアクセス時間を管理するプロセス・マネージャと、ＣＰＵによって現在アクティブなプロセスを実行するために、キャッシュ、メイン・メモリおよび仮想メモリを含むメモリを管理するメモリ・マネージャと、ＣＰＵによって実行されるときに、プロセスによって必要とされる情報の入出力を管理するデバイス・マネージャと、メモリ・マネージャに結合されており、動作中に不揮発性メイン・メモリがコンピュータ・システムに追加または取外しされたときにメイン・メモリの使用を動的に調整するメイン・メモリ・コントローラと、を有する、ＣＰＵとメモリを備えるコンピュータによって実行可能なオペレーティング・システムを提供することができる。
【００２３】
好ましい装置および方法の以上その他の特徴および利点は、本発明の原理を例として示す添付図面と関連して行われる以下の詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００２４】
詳しい説明に進む前に、本発明が、特定のタイプのコンピュータ・システム、オペレーティング・システム、および不揮発性メイン・メモリと関連した使用または応用に限定されないことを認識されたい。したがって、本発明は、説明の都合上、代表的な実施例に関して示し説明されるが、本発明を、他のタイプのコンピュータ・システム、オペレーティング・システムおよび不揮発性メイン・メモリに適用できることを認識されたい。
【００２５】
磁気ランダム・アクセス・メモリ（ＭＲＡＭ）技術または強誘電体ランダム・アクセス・メモリ（ＦｅＲＡＭ）は、ＭＲＡＭチップが、１０ナノ秒未満の速度で動作できるようになるまで進歩した。そのような速度は、例えばＤＲＡＭやＳＲＡＭなどの従来のＲＡＭに匹敵しかつ適合性がある。
【００２６】
従来のＲＡＭと違って、ＭＲＡＭは、不揮発性であるように意図的に設計されている。より具体的には、ＭＲＡＭは、システム電源が入っているか入っていないかに関係なく、コンピュータ・システムから提供された情報を保持することができる。また、この特性によりＭＲＡＭが情報を無制限に記憶できることを認識されたい。
【００２７】
当業者は、ＭＲＡＭメモリ記憶装置を、従来のコンピュータに使用するために、さらに前のＲＡＭメモリ記憶に使用されていたものと実質的に同じ速度でかつ実質的に同じソケット接続を備えるように製造することができる。ＭＲＡＭの特性と特徴を完全に利用し享受することは、以下で説明する本発明の実施形態によって実現することができる。
【００２８】
図１は、本発明の実施形態による例示的なコンピュータ・システム１００のブロック図を示す。コンピュータ・システム１００は、メイン・ボード１２０と、ハードドライブ１４０などの大容量記憶装置とを取り囲むケース１０２を有する。メイン・ボードは、システム・バス１２２、拡張スロット１２４、接続ポート１２６、ＣＰＵ１５０、メモリ・バス１５２、メモリ・バス・インタフェース１５４、キャッシュ１５６、メイン・メモリ１６０、およびＢＩＯＳ１７２を含むＢＩＯＳチップ１７０を含む。適切な環境下で、コンピュータ・システム１００は、例えば追加のハードディスクや追加のコプロセッシング用のＣＰＵなどの冗長な構成要素を有することがある。
【００２９】
図示したように、メイン・メモリ１６０は、第１のメモリ記憶（first memory store、ＦＭＳ）１６２と取り外し可能な不揮発性メモリ記憶（non-volatile memory store、ＮＭＳ）１６４として細分することができ、それぞれのメモリ記憶は、メモリ・バス・インタフェース１５４によってメモリ・バス１５２に接続される。マウス８０、キーボード１８２、ビデオ・ディスプレイ１８４、ハードドライブ１４０、フロッピ・ドライブ１４２およびＣＤ  ＲＯＭドライブ１４４などの装置が、例えば、メイン・ボード１２０に結合され、より具体的には、接続ポート１２６と拡張スロット１２４によってシステム・バス１２２に結合される。接続ポート１２６と拡張スロット１２４は、システム・バス１２２へのアクセス・ポイントとして働き、装置をＣＰＵ１５０に有効に結合して、コンピュータ・システム１００との間の入出力を提供する。
【００３０】
少なくとも１つの実施形態において、ＮＭＳ１６４は、ＭＲＡＭ１６６および／またはＦｅＲＡＭでよい。ＦＭＳ１６２は、例えばＲＡＭ１６８であり、より具体的には、例えばＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＲＤＲＡＭなどのコンピュータ・メモリに使用されているような従来のＲＡＭの任意の変形でよいことを理解され認識されたい。さらに、適切な環境下で、ＦＭＳは、例えばＭＲＡＭやＦｅＲＡＭなどの従来と異なるＲＡＭでよい。
【００３１】
図示したように、メイン・ボード１２０は、一体型（unitary）構造でよい。例えば限られた空間の使用を最大にするのに適切な環境下で、メイン・メモリ１６０、ＢＩＯＳチップ１７０、接続ポート１２６、拡張スロット１２４、キャッシュ１５６、ＣＰＵ１５０、および他のメイン・ボード１２０の構成要素は、独立した構造に別々に、すなわち小さなグループで結合することができる。これらの独立した構造を相互接続するバスは、リボン・ケーブルなどのケーブルや他のデータ経路装置の形でよい。そのような構成において、ＣＰＵ１５０および／またはメイン・メモリ１６０を支持するような主な独立構造を、メイン・ボードとして識別することができる。しかしながら、この考察のために、相互接続された独立構造の集合体は、実質的に単一構造のメイン・ボード１２０と同じように機能するように認識することができる。
【００３２】
メモリ・バス１５２とシステム・バス１２２は、一般に、メイン・ボードに取り付けられたＣＰＵ１５０とすべての装置を相互接続するメイン・ボード１２０上に提供されたデータ経路および物理インタフェースであるように理解され認識される。バスの容量は、一般に幅（width）と呼ばれ、１度にデータをどれだけ転送できるかを決定し、クロック速度は、データをどれだけの速さで転送できるかを決定する。より具体的には、バスの幅と速さが大きいほど、多くのデータを転送することができる。一般に、メモリ・バス１５２は、システム・バス１２２よりも速さと幅がかなり大きい。
【００３３】
メモリ・バス１５２は、ＦＭＳ１６２とＮＭＳ１６４をＣＰＵ１５０に結合する幅の広い長方形として示されている。これと対照的に、ハードウェア・サブシステムをＣＰＵ１５０に結合するシステム・バス１２２は、２つのバスの速度と容量の相対的な違いを示すために、細い矢印として示されている。キャッシュ１５６は、ＣＰＵ１５０とメモリ・バス１５２に直接結合されることがある。
【００３４】
例えばＰＣＩ、ＩＳＡ、ＡＧＰなどの多数のバスを使用するような適切な環境下では、コンピュータ・システム１００は、あるバスから別のバスへの情報の流れの制御を支援するバス・マスタを含むことができる。
【００３５】
ＦＭＳ１６２とＮＭＳ１６４が共に、メイン・メモリ１６０を含み、同じメモリ・バス１５２を介してＣＰＵ１５０と通信するため、ＮＭＳ１６４が、実質的にＦＭＳ１６２と同じ速度で動作することを理解され認識されたい。
【００３６】
電力が加えられコンピュータ・システムが起動するとき、基本入出力システム（basic input output system、ＢＩＯＳ）１７２として知られている小さなソフトウェアがロードされ、コンピュータ・システム１００が初期化される。ＢＩＯＳは、多くのタスクを受け持ち、一般に、ＣＭＯＳの個別設定を確認し、割込みハンドラをロードし、パワー・オン・セルフテスト（ＰＯＳＴ）を実行してＣＰＵ１５０とメイン・メモリ１６０を確認し、ブートストラップ・シーケンスを開始して、ハードドライブ１４０などの起動可能な記憶装置から、オペレーティング・システム１９０をメイン・メモリ１６０にロードする。
【００３７】
一般に、ＰＣＭＣＩＡ、ＵＳＢ、Ｆｉｒｅｗｉｒｅ、他の再起動なしにシステムに接続または取外しできるような装置など、プラグ・アンド・プレイ装置とホットプラグ接続可能装置は、ＢＩＯＳ１７２によって認識される。認識は、システムの起動中、あるいは装置が脱着されたときにハードウェア・サブシステムによって生成されるハードウェア割込み（ＩＲＱ）や他の信号に応じて行うことができる。いずれの場合も、装置は、ＢＩＯＳ１７２によって認識され記録される。次に、オペレーティング・システム１９０が、そのようなＢＩＯＳ記録またはフラグを認識することができる。適切な環境下では、オペレーティング・システムは、ＩＲＱまたは他の信号を直接認識し応答することができる。
【００３８】
少なくとも１つの実施形態において、ＢＩＯＳ１７２は、例えば、追加のユーザ構成なしにシステム装置を認識し初期化することができるプラグ・アンド・プレイＢＩＯＳである。さらに、少なくとも１つの実施形態において、ＢＩＯＳ１７２は、フラグ２７６に、ＮＭＳ１６４の有無を記録するためにイネーブルされる（図２を参照）。より具体的には、ＰＣＭＣＩＡ、ＵＳＢ、Ｆｉｒｅｗｉｒｅまたは他のそのような装置の有無を認識し登録するＢＩＯＳ１７２の機能と同じように、ＢＩＯＳ１７２は、ＮＭＳ１６４の有無を認識し登録することができる。
【００３９】
初期化シーケンスに続いて、ＦＭＳ１６２のような従来のメモリ記憶装置は、メモリ・レディ信号（Memory Ready signal）のように、ＦＭＳ１６２が適切に初期化されたことをコンピュータ・システムに知らせる制御信号に応答することを理解され認識されたい。現在の慣例とコンピュータ・ハードウェア・サブシステムのよく理解されたアーキテクチャに合わせるために、ＮＭＳ１６４は、メモリ・レディ信号などの制御信号も提供することができる。ＢＩＯＳ１７２は、ＮＭＳ１６４からのそのような制御信号を、ＮＭＳ１６４の存在、適切な環境下ではＮＭＳ１６４の容量を認識し登録する際に利用することができる。
【００４０】
図２は、ＮＭＳ１６４の概略的なブロック図を示す。図示したように、ＮＭＳ１６４は、メモリ・セル２５０上に、ＮＭＳ１６４に記憶された１または０の２進データ値の性質を決定するのに必要な電圧検出動作を行うセンスアンプを含むことができる。ＮＭＳ１６４に電力が加えられたとき、ＮＭＳ１６４は、セットアップおよび較正段階を実行してセンスアンプの電圧検出レベルを較正しなければならない。セットアップ・プロセスを短縮するために、ＮＭＳ１６４のメモリ・セル２５０のセットアップ記憶域２５２に割り当てられた部分に、範囲値と較正値を記憶することができる。ＮＭＳ１６４の不揮発性によって、これらの値が、後の起動サイクルに使用可能になり、較正時間を改善すなわち短縮できることが保証される。残りのメモリ・セルは、メイン・メモリ１６０に組み込まれた汎用メモリ２５４に使用することができる。
【００４１】
ＮＭＳ１６４は、また、メモリ・バス・インタフェース１５４、制御ロジック２５６、およびメイン・メモリ１６０の回路に結合するインタフェース回路２６０を含むことができる。インタフェース回路２６０は、ＮＭＳ１６４が電力検出動作を実行して、例えば実行中のコンピュータ・システム１００にＮＭＳ１６４が差し込まれたときや、コンピュータ・システム１００全体に電力が加えられたときなど、メイン・ボード１２０の制御ロジック２５６からＮＭＳ１６４に電力が提供されたことを決定することができる。さらに、インタフェース回路２６０は、セットアップ記憶域２５２に保持された記憶値に基づいてセットアップと較正を実行する。従来のハンドシェーク方式（handshaking、初期接続手順）・プロトコルに従ってセットアップと較正が完了したとき、ＮＭＳ１６４は、メモリ・レディ信号を提供する。
【００４２】
メモリ・チップに関しては、メモリ・アドレスが要求されてから内容が送られるまでの待ち時間（latency）と呼ばれる潜在期間がある。記憶するためにデータが提供されるときにも類似の潜在期間がある。ＮＭＳ１６４は、ＣＰＵ１５０と共に実質的にＦＭＳ１６２と同じ速度で動作すると理解されるので、記憶とアクセスに関連した待ち時間は、ＮＭＳ１６４とＦＭＳ１６２に関して実質的に同じである。
【００４３】
コンピュータ・システム１００にＮＭＳ１６４をホット・プラグ（hot-plug、接続または取外しを認識する機能）できることは、ＮＭＳ１６４が即座に使用可能になることを意味しない。本発明に関する待ち時間は、ＮＭＳ１６４をメモリ・バス１５２に差し込み、セットアップし、較正し、あるいは使用の準備をするのにかかる時間として定義される。
【００４４】
前述のように、コンピュータの起動プロセスは、複雑で時間がかかる動作であり、必要な場合がある複雑で特殊なインタフェース構成要素によって、かかる時間がさらに長くなる可能性がある。ＮＭＳ１６４を使用する有益な面は、オペレーティング・システム１９０がロードされ、それがＮＭＳ１６４に完全にロードされた場合に、システムへの電力を取外しできることである。再接続されたとき、ＮＭＳ１６４は、オペレーティング・システム１９０をコンピュータ・システム１００に、あたかも電力の中断がなかったかのような状態と状況で提供する。これは、常用電源から離れて使用することができるラップトップ、ＰＤＡおよび他の装置にとって望ましい機能である。少なくとも１つの実施形態において、コンピュータ・システム１００が現在使用されてないときに、バッテリ電力や他のリモート電源を節約するために、ＮＭＳ１６４が使用される。
【００４５】
例えばＷｉｎｄｏｗｓやＭａｃｉｎｔｏｓｈ、Ｕｎｉｘなどのオペレーティング・システムの種類に関係なく、当業者は、オペレーティング・システムの基本コンポーネントが、プロセス管理、デバイス管理（アプリケーションとユーザ・インタフェースを含む）、およびメモリ管理（記憶管理を含む）であることを認識するであろう。
【００４６】
本発明の少なくとも１つの実施形態によれば、オペレーティング・システム１９０は、プロセス・マネージャ２００、メモリ・マネージャ２１０、デバイス・マネージャ２２０、およびメイン・メモリ・コントローラ２３０を有するように理解され認識される。
【００４７】
プロセス・マネージャ２００は、アクティブなプロセスのためのＣＰＵ１５０へのアクセス時間を管理するタスクを課される。より具体的には、プロセス・マネージャ２００は、２つのタスクに集中させられる。第１のタスクは、各プロセスが、適切に機能するためにＣＰＵ１５０に対する十分なアクセス時間を有するようにすることである。第２のタスクは、各ＣＰＵサイクルごとにできるだけ多く実際の作業が行われるようにすることである。オペレーティング・システム１９０の種類によって、ＣＰＵ１５０によって操作される実行可能なアプリケーションのコンポーネントは、プロセスまたはスレッドと呼ばれることがある。本明細書での考察のために、「プロセス」という用語を使用する。
【００４８】
メモリ・マネージャ２１０は、一般にキャッシュ１５６、メイン・メモリ１６０および適切な環境下の仮想メモリ１５８からなるコンピュータ・システム１００のメモリを管理するタスクを課される。より具体的には、メモリ・マネージャ２１０は、メイン・メモリ１６０の構成をメモリ・ブロックに初期化し、ハードドライブ１４０のスペースを仮想メモリ１５８として機能するように確保し構成し、キャッシュ１５６を最適化する役割を持つ。メイン・メモリ１６０は、メモリの単位当りのコストに関して、ハードディスク１４０よりもかなり高価である。以上考察したように、仮想メモリを使用して、メイン・メモリ１５０に課される常に変化するリソース要件を補うことができる。
【００４９】
システムの動作中、メモリ・マネージャ２１０は、ＣＰＵ１５０による処理の必要に応じて、メイン・メモリ１６０とキャッシュ１５６と仮想メモリ１５８の間での実行中のアプリケーションに対するメモリ割当てを管理する役割を持つ。どれをどこに入れるかを制御し管理するために、メモリ・アドレッシングを使用することができる。
【００５０】
さらに、メモリ・マネージャ２１０は、各プロセスが、別のプロセスに割り当てられたメモリ・ブロック内で動作したり別のプロセスによって間違って実行されたりすることがなく実行する十分なメモリを有するように保証することに集中する。
【００５１】
デバイス・マネージャ２２０は、例えばキーボード１８２上のキーストロークの入力やビデオ・ディスプレイ１８４上の値の表示など、ＣＰＵ１５０によって実行されるようなアクティブ・プロセスによって必要とされる情報の入出力を管理するタスクを課される。
【００５２】
デバイス・マネージャ２２０は、このタスクをドライバの使用によって達成することができるが、これは、ハードウェア・サブシステムの電気信号とオペレーティング・システムの間の変換機構として働く特別なプログラムであることを理解され認識されたい。デバイス・マネージャ２２０は、また、アプリケーション・インタフェースの役割を負うことがある。ドライバの使用と同じように、オペレーティング・システム１９０と、オペレーティング・システム１９０によるプログラム実行のために作成されたアプリケーションとの間のインタフェースを標準化するために、アプリケーション・プログラム・インタフェース（ＡＰＩ）を使用することができる。
【００５３】
メイン・メモリ・コントローラ２３０の存在は重要である。メイン・メモリ・コントローラ２３０は、オペレーティング・システム１９０を実行するコンピュータ・システム１００のユーザが、システムの遮断と再起動を必要とせずに、メイン・メモリ１６０の使用状態を動的に調整できるようにする。より具体的には、メイン・メモリ・コントローラ２３０は、コンピュータ・システム１００の動作を不安定にすることなく、ＮＭＳ１６４の抜き差しを可能にするためにメイン・メモリ１６０の使用状態を動的に調整する。
【００５４】
動作中のメイン・メモリ１６０の動的再割当てを可能にするオペレーティング・システム１９０を備えたコンピュータ・システム１００の構造的な実施形態について説明したが、次に、図２および図３と図４の流れ図を参照して、コンピュータ・システム１００の挙動について説明する。示したイベントおよび動作方法は、本明細書に示した順序で実行されなくてもよく、この説明が、単に、本発明による１つの動作方法の例示に過ぎないことを認識されたい。
【００５５】
図２と図３を参照すると、少なくとも１つの実施形態において、ＮＭＳ１６４の挿入３３０は、メモリ・バス・インタフェース１５４と制御ロジック２５６を誘導し、コンピュータ・システム１００へのハードウェア・ベースのＩＲＱ２７４通知を生成する。少なくとも１つの実施形態において、ＩＲＱ２７４は、前述の待ち期間の終わりに生成される。
【００５６】
より具体的には、ＮＭＳ１６４の挿入３３０に続いて、ブロック３３２として示された前述のＮＭＳ１６４の初期化および設定が実行される。ブロック３３４に示したように、ＮＭＳ１６４が存在することをシステム１００に知らせるためにＩＲＱ２７４が生成される。
【００５７】
当業者は、ブロック３３６に示したように、ＩＲＱ２７４が、ＢＩＯＳ１７２に登録され、ＢＩＯＳフラグ２７６によって記録されることがあることを理解さ認識されよう。適切な環境下で、ブロック３３７に示したように、オペレーティング・システム１９０がＩＲＱ２７４を直接登録することができる。同様に、メモリ・レディ信号が、ＢＩＯＳ１７２において認識され登録される。
【００５８】
少なくとも１つの実施形態において、動作中に取り付けられＢＩＯＳ１７２によって認識され登録されたＰＣＭＣＩＡ、ＵＳＢ、Ｆｉｒｅｗｉｒｅまたは他の装置の接続と同様に、ＮＭＳ１６４の挿入は、ＢＩＯＳフラグ２７６の設定によってＢＩＯＳ１７２による固有のイベントとして記録され、システムに登録される。ＮＭＳ１６４とそのレディ状態の認識は、ブロック３３８に示したように、ＢＩＯＳ１７２によってシステムに登録されたイベントに応答しかつＢＩＯＳフラグ２７６の状態を読み取るオペレーティング・システム１９０によって認識される。
【００５９】
少なくとも１つの実施形態において、ブロック３３７に示したように、ＮＭＳ１６４が差し込まれたというＩＲＱ２７４の通知が、オペレーティング・システム１９０によって直接登録される。オペレーティング・システム１９０は、例えばＮＭＳ１６４の予想容量に関するさらに詳しい情報をＢＩＯＳ１７２にポーリングすることができる。
【００６０】
ＮＭＳ１６４が存在するという信号に応じて、ブロック３４０に示したように、オペレーティング・システム１９０のメイン・メモリ・コントローラ２３０コンポーネントが連結されることがある。メイン・メモリ・コントローラ２３０は、ブロック３４２に示したように、メイン・メモリ１６０の再構成の処理の優先順位が最も高いことを示す信号をプロセス・マネージャ２００に送ることができる。より具体的には、プロセス・マネージャ２００は、メイン・メモリ１６０の再構成としての時間が終了するまで、現在あるすべてのプロセスのそれ以上の処理活動をサスペンドするように指示される。
【００６１】
一般に、ＣＰＵ１５０は、任意の所定の瞬間に１つのイベントしか実行できないため、プロセス・マネージャ２００は、現在の動作の各プロセスに優先順位のレベルを割り当てる。それぞれの活動中のアプリケーションの処理要求を最も短時間で完了することが望ましいが、一般に、各処理要求が、割り込まれかつ／または異なる優先順位を再割り当てされることがあることを、当業者は認識されよう。この規則に基づいて、プロセス・マネージャ２００は、メイン・メモリ１６０の再構築が絶対優先で行われるように、優先順位を再割り当てすることができる。
【００６２】
前述のように、使用可能にするために、一般に、メイン・メモリ１６０のリソースは、メモリ・マネージャ２１０によって、例えば２キロバイトなどの標準ブロック・サイズに分割される。ＮＭＳ１６４は、コンピュータ・システム１００から取り外されたときにデータを保持するので、少なくとも１つの実施形態において、ＮＭＳ１６４は、ＮＭＳ１６４の最初の初期化の際にオペレーティング・システム１９０によって最初に適用された標準ブロック・サイズを保持する。
【００６３】
メモリ・マネージャ２１０は、判断ブロック３４４に示したように、ＮＭＳ１６４にポーリングして、ＮＭＳのメモリ・ブロックが、メイン・メモリ１６０の残りの部分と合致するかどうかを判断する。ＮＭＳ１６４内にある構成されたブロック・サイズが、メモリ・マネージャ２１０によって利用される現行のブロック・サイズと一致しない場合は、少なくとも１つの実施形態において、オペレーティング・システム１９０は、ユーザに報告されるエラーを生成する。次に、ユーザは、判断ブロック３４６に示したように、メモリ・マネージャ２２０によって要求されたメモリ・ブロック・サイズになるように、合致しないＮＭＳ１６４を取外しするかＮＭＳ１６４を再び初期化することを選択することができる。
【００６４】
合致したメモリ・ブロックに関しては、メイン・メモリ１６０と関連して使用できるようにするために、ブロック３４８に示したように、ＮＭＳ１６４メモリ・ブロックのアドレスを追加するか、使用可能なメモリ・アドレス・プールを更新する。
【００６５】
メイン・メモリ１６０のＮＭＳ１６４の認識された構成要素により、システムは、ブロック３５０に示したように、メモリ・マネージャ２１０の制御下で通常動作に戻る。
【００６６】
ＮＭＳ１６４の取り外しは、同じように操作される。図２と図４を参照すると、少なくとも１つの実施形態において、ユーザは、オペレーティング・システム１９０に、ＮＭＳ１６４を取り外したいという自分の要求を伝える信号を送り、それにより、ブロック４６０として示したような取り外しシーケンスが開始される。そのような信号は、例えば、適切なＧＵＩオブジェクト上のマウス・クリックあるいは装置インタフェース１５４上のリリース・ボタンの押し下げの形である。
【００６７】
次に、ブロック４６２に示したように、メイン・メモリ・コントローラ２３０が連結されることがある。メイン・メモリ・コントローラ２３０は、ブロック４６４に示したように、メイン・メモリ１６０の再構成の処理が最も優先順位の高いイベントであるという信号をプロセス・マネージャ２００に送ることができる。より具体的には、プロセス・マネージャ２００は、メイン・メモリ１６０の再構成の時間が終了するまで、現在のすべてのプロセスのさらになる処理活動をサスペンドするように指示される。
【００６８】
次に、メイン・メモリ・コントローラ２３０は、ブロック４６６と判断ブロック４６８に示したように、メモリ・マネージャ２１０と連絡をとって、ＮＭＳ１６４内のメモリ・ブロックが、ＮＭＳ１６４の取り外し後にシステムと現行アプリケーションの連続動作に必要とされる可能性のあるデータを含む場合にはそれがどのデータかをポーリングすることができる。
【００６９】
必要なデータが識別された場合は、そのデータを、ＮＭＳ１６４の取り外し前に複写しかつ／または移動することができる。例えば、ＮＭＳ１６４のメモリ・アドレス２８０８８が、現行プロセスと関連したデータを保留の状態で含むと判断された場合は、判断ブロック４７０に示したように、メモリ・マネージャ２３０は、メイン・メモリ１６０を調べて関連データを保持するのに十分なスペースがあるかを判断することができる。メイン・メモリ１６０のスペースが不十分であると判断された場合は、ブロック４７２に示したように、仮想メモリ１５８を増やすことができる。次に、ブロック４７４によって示されたように、メモリ・アドレス２８０８８の識別されたデータを、メイン・メモリ１６０または仮想メモリ１５８にあるメモリ・アドレス２０２７４に移動し、ブロック４７６に示したように、関連アドレスが、メモリ・マネージャ２２０によって更新される。
【００７０】
次に、ブロック４７８に示したように、システム・メモリ・アドレス・プールが更新されたときに、ＮＭＳ１６４のメモリ・アドレスを取外しすることができる。次に、ブロック４８０に示したように、ＮＭＳ１６４が安全に取り外すことができることを示す信号を、ユーザに提供することができる。
【００７１】
ＮＭＳ１６４がコンピュータ・システム１００から物理的あるいは論理的に取外しされると、ブロック４８２に示したように、システムは通常の動作を続ける。
【００７２】
例えばオペレーティング・システム１９０がＦＭＳ１６２に完全に保持されたような適切な環境下で、メモリの内容を残りのメモリ記憶に再割り当てすることなくＮＭＳ１６４を取り外すことができる。そのような適切な環境下で、少なくとも１つの実施形態において、オペレーティング・システム１９０は、ＮＭＳ１６４の取り外しによって停止されたアプリケーション・プロセスを認識し終了する。
【００７３】
ＮＭＳ１６４は、本来不揮発性なので、アプリケーションがあらかじめロードされたＮＭＳ１６４の挿入により、「瞬時オン」にきわめて近い機能で、メモリ・バス１５２を介してオペレーティング・システム１９０およびＣＰＵ１５０にアプリケーションが提供される。そのようなメイン・メモリ１６０内への直接挿入およびメモリ・バス１５２への接続は、ＣＤ上のアプリケーションをＣＤ  ＲＯＭドライブ１４４に提供する機能、あるいはシステム・バス１２２を介して最終的に提供されるアプリケーションの他のどの機能よりもかなり高速であることが分かる。
【００７４】
さらに、システムの通常動作中にＮＭＳ１６４を追加することができるので、必要に応じていくつかのコンピュータ・システムにわたりＮＭＳ１６４リソースを共用することで、メイン・メモリ・リソース全体の投資コストを節約でき望ましい。
【００７５】
さらに、ＮＭＳ１６４が、メイン・メモリに直接挿入され、メモリ・バス１５２に接続されるので、ハードディスク１４０上の仮想メモリ１５８のような補助メモリを提供したりシステム・バス１２２にＦＬＡＳＨメモリや他のメモリ装置を接続したりするよりも動作がかなり高速であることが分かる。
【００７６】
本発明を、好ましい実施形態に関して説明したが、当業者は、本発明の範囲を逸脱することなく、様々な修正、変更および改良を行うことができ、本発明の要素およびステップに同等のものを代用できることを理解されよう。さらに、本発明の本質的な範囲から逸脱することなく、本発明の教示に関して、特定の状況または材料に多くの修正を行うことができる。しかしながら、そのような代替、変更、修正および改良は、以上に明示的に示していないが、本発明の目的と趣旨の範囲内であるように意図され含意される。したがって、本発明は、本発明を実行するために熟慮された最良の形態として開示された特定の実施形態に限定されず、本発明が、併記の特許請求の範囲内にあるすべての実施形態を含むように意図されている。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施形態によるコンピュータ・システムの概略的なブロック図。
【図２】本発明の実施形態による不揮発性メモリ記憶装置の概略図。
【図３】本発明の実施形態によるメイン・メモリへの不揮発性メモリ記憶装置の追加を示す流れ図。
【図４】本発明の実施形態によるメイン・メモリから不揮発性メモリ記憶装置の取外しを示す流れ図。
【符号の説明】
【００７８】
１００  コンピュータ・システム
１２０  メイン・ボード
１５０  中央処理装置（ＣＰＵ）
１６０  メイン・メモリ
１６２  第１のメモリ記憶装置（ＦＭＳ）
１６４  取り外し可能な不揮発性メモリ記憶装置（ＮＭＳ）
１６６  磁気ランダム・アクセス・メモリ（ＭＲＡＭ）
１６８  揮発性ＲＡＭ
１７０  ＢＩＯＳメモリ
１７２  ＢＩＯＳ
１８２  入力装置
１８４  出力装置
１９０  オペレーティング・システム
【図１】
2004295885.tif 000003
【図２】
2004295885.tif 000004
【図３】
2004295885.tif 000005
【図４】
2004295885.tif 000006