JP5261661B2 - 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム - Google Patents

対称型マルチプロセッサ・フォルトトレラントコンピュータシステム Download PDF

Info

Publication number
JP5261661B2
JP5261661B2 JP2008513591A JP2008513591A JP5261661B2 JP 5261661 B2 JP5261661 B2 JP 5261661B2 JP 2008513591 A JP2008513591 A JP 2008513591A JP 2008513591 A JP2008513591 A JP 2008513591A JP 5261661 B2 JP5261661 B2 JP 5261661B2
Authority
JP
Japan
Prior art keywords
computer system
processor
access
shared memory
symmetric multiprocessing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008513591A
Other languages
English (en)
Other versions
JP2008542878A (ja
Inventor
ポール エイ レヴェイル
トーマス ディー ビセット
スティーブン エス コービン
ジェリー メルニック
グレン エイ トリンブレイ
敏 渡辺
恵一 小山
Original Assignee
ストラタス・テクノロジーズ・バミューダ・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ストラタス・テクノロジーズ・バミューダ・リミテッド filed Critical ストラタス・テクノロジーズ・バミューダ・リミテッド
Publication of JP2008542878A publication Critical patent/JP2008542878A/ja
Application granted granted Critical
Publication of JP5261661B2 publication Critical patent/JP5261661B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)

Description

(関連出願に対する相互参照)
本出願は、2005年5月24日に出願された名称「SYMMETRIC MULTIPROCESSOR FAULT TOLERANT COMPUTER SYSTEM(対称型マルチプロセッサ・フォルトトレラントコンピュータシステム)」の米国仮出願第60/683,801号の利益を主張し、該出願は引用により組み込まれる。
本明細書は、フォルトトレラント(耐障害性)、フォルトレジリアント(障害回復性)、又はディザスタトレラント(耐災害性)コンピュータシステムにおいて疎結合対称型マルチプロセッサの同期実行を維持することに関する。
フォルトトレラントは一般に、スペース(空間)又は時間における複製を必要とする。スペースにおける複製(複写と呼ぶことができる)では、プロセッサの2つのセットは、同じ起点及び同じ入力ストリームを与えた場合に、同じイベントシーケンスを示さなければならない。故障時には、故障が発生したプロセッサのセットは機器構成から取り除かれ処理が続行される。
時間における複製(再生と呼ぶことができる)では、チェックポイント/再始動及び連続再生という2つの一般的な選択肢がある。チェックポイント/再始動システムは、システムの現在の状態のチェックポイント又はスナップショットと、チェックポイントからの全入力のジャーナルファイルとを作成する。故障時には、チェックポイントがプロセッサの別のセット上にロードされ、ジャーナルファイルが適用される。幾つかの実装又はある条件では、元のイベントシーケンスは、例えばオペレーティングシステム(OS)、アプリケーション、及びチェックポイントファシリティの間の調整レベルによっては重要ではない場合がある。一例として、作業がコミットされていない場合には、あらゆる許可されたイベントシーケンスが受け入れ可能である。
複製はまた、プロセッサの2つのセット(複写など)及びジャーナルストリーム(チェックポイント/再始動システムに類似する)を用いる連続再生によって遂行することができる。プロセッサの第1のセットは、観測されたイベントシーケンスをジャーナルに記録する。プロセッサの第2のセットは、このジャーナルを用いて再生中に当該イベントシーケンスを再現する。
一般に複写は、イベントシーケンスにおいて高レベルの決定性を必要とする。複写の利点は、フォルトトレランスを一般にアプリケーション非依存及びオペレーティングシステム非依存にすることができる点である。複写の欠点は、一般に複写が専用の複写ハードウェア及び高レベルの決定性を必要とする点である。
チェックポイント/再始動システムは、イベントシーケンスにおいて必ずしも決定性を要するとは限らない。またチェックポイント/再始動システムは、専用の複写ハードウェアリソースを必要としない。しかしながら、チェックポイント/再始動システムは一般に、システムを機能させるためにアプリケーション及びオペレーティングシステムの修正を必要とする。またチェックポイント/再始動システムは、チェックポイントの周波数及びジャーナルファイルの長さに基づいてある程度の長い回復時間を有する。
連続再生は、複写と同様にアプリケーション及びオペレーティングシステム非依存であるが、必要とされる決定性のレベルは低い。複写と同様、連続再生は専用の複写ハードウェアを要する。連続再生は、チェックポイント/再始動と類似したジャーナルストリームを必要とするが、チェックポイント又はオペレーティングシステムのサポートを必要とせず、一般に、長い回復時間を有さない。ジャーナルストリームは、リソースの1次セットからリソースの2次セットに流れる方向のシーケンスであり、観測したイベントシーケンスを示す。
1つの一般的な態様において、対称型マルチプロセッシングコンピュータシステムを用いたフォルトトレラントコンピュータシステムの実装は、仮想ページング構造を作成し、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整することによって、対称型マルチプロセッシングコンピュータシステムの少なくとも1つを制御する段階を含む。仮想ページング構造は、対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ、このプロセッサに対して共有メモリへの物理ページアクセス権限を反映する。
実装は、次の機能の内の1つ又はそれ以上を含むことができる。例えば、共有メモリへのアクセスを制御する段階は、プロセッサからメモリの一部分にアクセスする要求を受け取る段階と、該プロセッサに対する仮想ページング構造を、メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによってプロセッサによるメモリの一部分への許可すべきアクセスを決定する段階と、プロセッサによる許可されることになるアクセスに基づいてプロセッサに対する仮想ページング構造内の物理ページアクセス権限を更新する段階とを含むことができる。
プロセッサは、プロセッサ上で実行するタスクを含むことができる。仮想ページング構造は、シャドーページテーブルを含むことができ、該シャドーページテーブルは、対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、該対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる。仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含むことができる。
ページテーブルは、対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に作成することができる。少なくともページディレクトリは、対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に作成することができる。
フォルトトレラントコンピュータシステムは、命令ロックステップで同時に作動する2つの対称型マルチプロセッシングコンピュータシステムを含む複写フォルトトレラントコンピュータシステムとすることができる。各対称型マルチプロセッシングコンピュータシステムは、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する。
フォルトトレラントコンピュータシステムは、第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを含む連続再生フォルトトレラントコンピュータシステムとすることができる。第1の対称型マルチプロセッシングコンピュータシステムは命令ストリームを処理し、該第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成する。第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときには、第2の対称型マルチプロセッシングコンピュータシステムを用いてジャーナルが処理され、第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動するようにする。第2の対称型マルチプロセッシングコンピュータシステムは仮想ページング構造を作成し、該仮想ページング構造は第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられて、且つプロセッサに対する共有メモリへの物理ページアクセス権限を反映する。共有メモリへのアクセスは、仮想ページング構造内に反映された物理ページアクセス権限に基づいて制御されて、第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する。
実装の1つ又はそれ以上の詳細が添付図面及び以下の説明において記載される。他の機能は、これらの説明及び図面、並びに請求項から明らかになるであろう。
種々の図における同様の参照記号は同様の要素を表す。
対称型マルチプロセッサ(SMP)フォルトトレラント及び/又はディザスタトレラントコンピュータシステム(総称的に「フォルトトレラントコンピュータシステム」)を生成するための技術を説明する。複写を用いる例示的なSMPフォルトトレラントコンピュータシステムを説明し、同様に連続再生を用いる別の例示的なSMPフォルトトレラントコンピュータを説明する。
SMPに伴う問題は、メモリへの同時アクセスの調整及び解決に関する。単一のプロセッサと割り込み部及びI/O完了部との対話にのみ対処するシングルプロセッサのフォルトトレラントシステムとは対照的に、SMPフォルトトレラントコンピュータシステムはまた、複数のプロセッサ間の対話も考慮に入れる必要がある。従って、対称型マルチプロセッサ・フォルトトレラントコンピュータシステムは、シングルプロセッサ・フォルトトレラントコンピュータシステムと比較して、追加のレベルの決定性に対処する必要がある。複写又は連続再生のいずれかを用いるフォルトトレラントシステムの1つの課題は、プロセッサ及びタスクによるメモリアクセスの順序付けを再現可能にすることである。別の課題は、メモリアクセスが発生する場所又は時点に関する知識を持たずにメモリアクセスの順序付けを再現することであり、これは、フォルトトレラントシステムにおいてオペレーティングシステム及びアプリケーション非依存性を維持するのに必要である。
銀行口座への2つの同時変更を処理するアプリケーションの実施例を示す。銀行口座は75ドルの初期残高を有し、銀行口座への一方の変更が100ドルを控除するものであり、他方の変更が50ドルを加算するものである。2つのプロセッサが各々、銀行口座への変更の内の一方を実質的に同時に実施しようと試みる場合、2つの可能な口座残高シーケンスが存在する。各可能なシーケンスは同じ解を生成する。より具体的には、プロセッサAは、口座から100ドルを控除しようと試み、同時にプロセッサBは口座に50ドルを加算しようと試みる。プロセッサBが加算を実施する前にプロセッサAが控除を実施する場合には、口座残高シーケンスは、75ドル(初期残高)、−25ドル(プロセッサAが控除した後)、+25ドル(プロセッサBが加算した後)である。それとは対照的に、プロセッサAが控除を実施する前にプロセッサBが加算を実施する場合には、口座残高シーケンスは、75ドル(初期残高)、125ドル(プロセッサBが加算した後)、25ドル(プロセッサAが控除した後)である。フォルトトレラントシステムは、アプリケーションにより生成される解を全く同じように生成しなければならない。
共通メモリアクセスの別の形態は、メモリアクセスの疎結合形態であり、例えば監視機能に用いることができる。例えば、データベースシステムは、データベース更新回数、記録が修正された回数、及び時間間隔当たりに実行されるトランザクションの数などを追跡するための性能指標のセットを保持することができる。幾つかのデータベースアプリケーションの関連では、指標は、現実の狭近似であることだけが必要とされる場合がある(より厳密な評価値を必要としない)。例示的な実施例では、プロセッサA及びプロセッサBは、競合を回避するどのような試みも行わずに記録カウントをインクリメントする。記録カウント値5から始めて、両方のプロセッサがインクリメントを試みた後のカウントは7とすることができ、これはインクリメントが衝突しない場合である。しかしながら、2つのプロセッサのインクリメントが衝突する場合、両方のプロセッサがインクリメントを試みた後のカウントは6になる。幾つかの状況では、マルチプロセッシングデータベースアプリケーションの開発者は、目的とするアプリケーションにはどちらの解(すなわち6又は7)も十分であり、カウントが7であるか又は6であるかという厳密な記録は必要ではないと判断する可能性がある。しかしながら、競合を回避するために緩やかにカウントするイベントのこのような実施は、非決定論的な挙動であり、複写又は連続再生のいずれかを用いるフォルトトレラントシステムにおいて用いるべきではない。フォルトトレラントシステムは一貫した解を生成する必要があるので、複写又は連続再生のいずれのフォルトトレラントシステムにおいても非決定論的な挙動は許されない。
業界標準のマザーボードを用いてSMPフォルトトレラントシステムを製作するのは困難な場合がある。一般に、クロック・ロックステップ設計は、システム内の複製部分が同じクロック構造を受け取り、このクロック構造に対して同じ様に応答することに依存する。これは、決定論的且つ反復可能な様式で自動的に衝突を解決するのに役立つ。このことには、クロック構造、メモリ、チップセット、プロセッサ、及びマザーボードレイアウトが決定論的に動作することを必要とする。これはカスタム設計においては実施可能とすることができるが、業界標準のマザーボードでは一般に利用できない可能性がある。
対称型マルチプロセッサ・フォルトトレラントシステムにおいて競合解決のシーケンスを保証することができるように命令ロックステップ設計を調整する技術を説明する。命令ロックステップとは、2つのプロセッサが、同じ始動状態で且つそれぞれの命令ストリームに対して同じ入力を加えたと仮定した場合に、同じ命令ストリームを実行するようなプロセッサ調整を指す。ここでの説明は、メモリアクセスが決定論的に扱われるようなイベントシーケンス調整に関する。加えて、業界標準のサーバ及びマザーボードを用いて、或いは市場で入手可能なサーバ及びマザーボードを用いて、疎結合(命令ロックステップを通じて結合するような)対称型マルチプロセッシング・フォルトトレラントシステムの構築を可能にする技術を説明する。
複写フォルトトレラントシステム
図1は、共有メモリへのアクセスが、仮想ページング構造内に反映される物理ページアクセス権限に基づく対称型マルチプロセッシングコンピュータシステムを用いた複写フォルトトレラントシステムの実施例を示している。システム100は、2つの業界標準の対称型マルチプロセッシングコンピュータサーバ110及び160を含み、例えば、各々は、標準的なx86サーバとすることができる。サーバ110は、2つの実行環境、すなわちコンピュータ環境115とI/O環境120とを含む。I/O環境120は、リンク135を通じたディスク130へのアクセス、リンク145を通じたネットワーク150へのアクセス、及びリンク195を通じた別のサーバ160へのアクセスを有する。サーバ160は、2つの実行環境、すなわちコンピュータ環境165とI/O環境170とを含む。I/O環境170は、リンク185を通じたディスク180へのアクセス、リンク155を通じたネットワーク150へのアクセス、及びリンク195を通じた他方のサーバ110へのアクセスを有する。I/O環境120及び170は、システム100において非同期の、従って非決定論的なI/O操作を扱う。コンピュータ環境115及び165は、対称型マルチプロセッシングの決定論的要素であり、命令ロックステップで動作する。簡単にするために、システム100は、例示的なフォルトトレラントシステムの一般的な形態を表しているが、他の構成を用いてもよい。例えば、複数のネットワーク、ネットワーク接続ストレージ、複数のディスクサブシステム、又はストレージエリアネットワーク(SAN)ストレージサブシステムを含む構成を用いることができる。一般に、両方のサーバ110及び160は、同じ初期状態から始動し、同じ入力データに対して操作して同じ出力応答を生成する命令ロックステップで動作する。
図2は、図1のサーバ110又は160の内の一方の実装とすることができるサーバ200を示している。サーバ200は、2つの構成要素、すなわちI/O環境220及びコンピュータ環境215を有する。I/O環境220は、I/Oデバイスを扱うための1つ又はそれ以上のプロセッサを含むことができ、コンピュータ環境215と通信する。コンピュータ環境215は、複数のアプリケーション処理部201、202、...240及びロックステップ管理部240から構成される。アプリケーション処理部は、オペレーティングシステム及びオペレーティングシステム上で実行されるアプリケーションを含む。オペレーティングシステム及びアプリケーションをアプリケーション処理部とみなすことは、フォルトトレラントシステムにとって有用である。例えば、これにより、フォルトトレラントシステムが業界標準のオペレーティングシステム及びアプリケーションを使用可能になることができる。
図1及び2を参照すると、サーバ110のコンピュータ環境115内のアプリケーション処理部201、202、...240は、サーバ160のコンピュータ環境165内のアプリケーション処理部201、202、...240によって複写される。コンピュータ環境115内の各アプリケーション処理部は、コンピュータ環境165内の対応するアプリケーション処理部と命令ロックステップで動作している。各コンピュータ環境115及び165内のロックステップ管理部240は、アプリケーション処理部201、202、...204の命令ストリームを調整する役割を果たす。
コンピュータの中央処理ユニット(CPU)は、アプリケーション処理部201及びロックステップ管理部240の一部分で表すことができる。カリフォルニア州サンタクララ所在のIntel CorporationによるIntel P4 XeonのようなハイパースレッドCPU設計では、各ハイパースレッドは、アプリケーション処理部201のインスタンス及びロックステップ管理部204の一部分で表すことができる。マルチコアCPU設計では、各コア又はコア内の各ハイパースレッドは、アプリケーション処理部201のインスタンス及びロックステップ管理部204の一部分で表すことができる。
I/O環境220内にロックステップ管理部240が存在する、ロックステップ管理部240に対する代替の手法を用いることができる。このような場合には、一般にコンピュータ環境215において同期アクティビティーのみが発生する。またロックステップ管理部240は、コンピュータ環境215とI/O環境220とにまたがることができる。
幾つかの実装では、コンピュータ環境215内の1つのプロセッサをロックステップ管理部240に専用にすることができる。代替的に又はこれに加えて、コンピュータ環境215内の各プロセッサは、ロックステップ管理部240の一部を実行することができる。図2の実施例では、アプリケーション処理部201にロックステップ管理部240の一部分を加えたものがコンピュータ環境215内の1つの論理プロセッサを表している。
ロックステップ管理部240は、一般に2つの基本技術を通じてロックステップアプリケーション処理部201を制御する。第1の技術は、アプリケーション処理部201によって行うべき作業分担をスケジュール化することを含む。第2の技術は、仮想メモリから物理メモリへのマッピングページテーブルを制御することを含む。分担技術は、未知の命令ストリームを同期的に分割又は切り分けるのに用いるプロセスである。実行中のオペレーティングシステム及びアプリケーションは、フォルトトレラントコンピュータシステムで用いるように修正されておらず、すなわち市場のオペレーティングシステム又はアプリケーションへの修正を必要とせずに、これらのオペレーティングシステム及びアプリケーションをフォルトトレラントコンピュータシステムの一部として用いることができるので、該オペレーティングシステム及びアプリケーションは両方とも未知の命令ストリームと考えられる。従って、オペレーティングシステム及びアプリケーションは、フォルトトレラント状況を認識せずにフォルトトレラントコンピュータシステムの一部として動作することができる。
多くの場合、オペレーティングシステムは、イベントを監視し、タスク及びスレッドをスケジュール化するためにタイマ割り込みを用いる。従来のタイマ割り込みは、必ずしも命令ストリームに対して同期しておらず、従って、複写フォルトトレラントシステムにおいて逸脱を生じる可能性がある。命令ストリームに関連する作業分担は、プロセッサに同期割り込みを提供するのに使用される。この作業分担が完了すると、分担割り込みはアプリケーション処理部からロックステップ管理部へと制御を移行させる。
SMP処理環境を制御するための基本プロセスは、プロセッサに修正仮想ページング構造を提示することである。次いで、プロセッサ間の対話をページフォルト及びページング構造変化を通じて検出し制御することができる。
図3〜8を参照すると、メモリアクセスの調整には一般に、メモリアクセス要求を検出して必要に応じて当該要求の配信に介入できることが必要である。これを行うための1つの手法は、仮想アドレス変換のためのメモリ管理システムにおけるページフォルトの使用によるものである。
図3を参照すると、例示的な変換プロセス300は、32ビットのページテーブル及び4Kの物理ページを用いて4GBのアドレス空間を扱う、カリフォルニア州Sunnyvale局所性のAMD又はIntel(登録商標)によるx86プロセッサファミリー用の仮想アドレス310から物理アドレスへの変換を示している。またこの技術は、2メガバイトページ、4メガバイトページ、64ビットページテーブル、36ビットページサイズ拡張、36ビットページアドレス拡張、及び52ビット線形アドレス変換など、別のタイプのx86プロセッサに対する他のメモリ変換構造で用いることもできる。更にこれらの技術は、他のプロセッサファミリーにも適用することができる。
命令は、32ビットの仮想アドレス310を用いてメモリへの参照を行う。テーブル330及び340を用いて仮想アドレス310を物理アドレスに変換する。プロセッサレジスタCR3 320は、ページディレクトリ(PD)テーブル330のベースアドレスを含む。仮想アドレス310のビット<31:22>312は、ページディレクトリテーブルのベースからの10ビットのインデックスを提供する。このメモリ位置の内容は、ページディレクトリエントリ(PDE)335と呼ばれ、これはページテーブル(PT)340にベースアドレスを提供する。仮想アドレス310のビット<21:12>314は、ページテーブルのベースからの10ビットのインデックスを提供する。このメモリ位置の内容はページテーブルエントリ(PTE)345と呼ばれ、これは参照しているメモリの物理ページ350におけるベースアドレスを提供する。仮想アドレス310のビット<11:00>316は、物理ページのベースから参照している物理メモリ位置355への12ビットに対するインデックスを提供する。
図4及び5は、図3のPDE330のようなページディレクトリエントリと、図3のPTE345のようなページテーブルエントリのフォーマットをそれぞれ示している。これらのテーブルの全ての中で重要なビットは、ビット<2:0>410である。ビット0は、セットされているときにはこのエントリにより指されている構造がメモリ内に存在することを示し、クリアされているときにはアクセス不可である(ディスクにページアウトされているか、又は存在しない)ことを示す、存在(P)フラグ412である。ビット1は、このエントリにより指されている構造が書込み可能であることを示すためにセットされる、書込み可能フラグ414である。ビット2は、このエントリが指している構造に対してユーザ又はシステム(U/S)アクセスが許可されることを示すアクセスフラグ416である。加えて、ビット<11:9>420は、プロセッサのハードウェアが構造内でこれらのビットを使用せず、ソフトウェアが要求通りにこれらを用いることができることを示すために利用可能(AVL)としてマークされる。
ページフォルトは、許可(R/Wアクセス)、セキュリティ(U/Sアクセス制限)、又は物理的存在の欠如(Pフラグ)により仮想メモリ参照を正常に行うことができない場合に発生するシステムトラップである。このトラップによって、プロセッサは、現在の命令(メモリアクセス)の実行を中断し、ページフォルトハンドラの実行を開始する。アクセス違反を解決することができた場合には、ページテーブルを調節し、割り込まれた命令ストリームを再開して、更新されたページテーブルによって仮想メモリ参照が再変換されるようにする。再変換が正常にされると、命令ストリームはページフォルトが発生しなかったかのように続行する。
ページフォルトを用いて、物理メモリページへのアクセスを調整することができる。仮想変換制御部R/V及び存在ビットを修正することによって、現在の命令ストリームがメモリにアクセスするのを許可又は阻止することができる。このような技術が全てのアクティブな命令ストリームに適用されると、以下でより詳細に説明するように、メモリの全てに対して調整されたアクセスを達成することができる。
以下で検討する目的で次の用語が用いられる。タスクとは、オペレーティングシステムによってスケジュール化が可能な命令シーケンスである。スレッドとは、マルチスレッドプログラムにおいて発生する、共通仮想アドレス構造を共有する幾つかのタスクの内の1つである。プロセスとは、固有の仮想アドレス構造を有するタスクである。
図6は、オペレーティングシステムの観点から見た仮想メモリから物理メモリへの構成の実施例600を表している。実施例600では、オペレーティングシステムは、幾つかのタスク(601、602、...603)をサポートする。各タスクは、オペレーティングシステムがシステム仮想アドレス空間610全体にわたって維持するタスクの固有アドレス空間を有する。あらゆる時点において、タスク601のアドレス空間のメモリページは物理メモリ640及び/又はシステムページファイル620内に含めることができる。物理メモリ640内に含まれるアドレス空間に対して、図3に関して上述されたように、仮想変換テーブル630は、仮想アドレスから物理アドレスへの変換を提供する。通常、オペレーティングシステムによって維持されているタスクは、存在するプロセッサ(CPU)の数よりも遙かに多い。各CPUは、図3におけるように単一のタスク(601、602、又は603)に対して仮想から物理への変換構造を含む。オペレーティングシステムは、タスク601においてページフォルトが発生する場合は常に、フォルトを生じているタスクを終了させることによって、或いは仮想変換テーブル630及び物理メモリ640の変更を通じてフォルトを生じたメモリ要求を有効にすることによってこのフォルトを解決する。このフォルトの解決には、物理メモリ640のページの再割り当て、タスク601並びに他の何らかのタスク(602及び603)に対する仮想変換テーブル630の更新、及び物理メモリ640とシステムページファイル620との間のメモリページの交換が必要となる場合がある。
図7を参照すると、図6の仮想変換テーブル630に関する更なる詳細が示されている。各CPU701〜704は、対応するCR3レジスタ711、712、713、及び714を有し、当該CPU上で実行される対応するタスク(すなわち721、722、723、及び724)に対する仮想変換構造に向けたポインタであるページディレクトリベースアドレスを保持する。システムの相互接続性を強調するため、図7では変換構造の一部だけが示されている。タスク721及び722は、共通のページ変換構造PD730を共有し、又は定義によれば、これらのタスクは、単一のプロセスからの2つのスレッドである。タスク723及び724は、ページ変換構造PD540及びPD750にそれぞれ対応する別個のプロセスである。図7に示すように、同じ物理ページ、すなわち物理ページ780に帰着する異なる仮想アドレス変換が存在する。より具体的には、表示790のテーブルは、タスク721〜724に対しての物理ページ780への種々の仮想変換のリストを示している。タスク721は、物理ページ780への1つのマッピング、すなわちPDE731/PTE761を有する。タスク721と同じプロセスからのスレッドであるタスク722は、物理ページ780への同じ単一のマッピング、すなわちPDE731/PTE761を有する。タスク723は、物理ページ780への3つのマッピング、すなわちPDE741/PTE761、PDE742/PTE771、及びPDE742/PTE772を有する。タスク724は、物理ページ780への2つのマッピング、すなわちPDE751/PTE771及びPDE751/PTE772を有する。
従って、図7は、マッピング構造においてタスク間で共有する要素が共有アクセス権限を示す、仮想アドレスから物理アドレスへの変換を表している。以下により完全に説明するように、この構造を図8の構造800と共に用いて、メモリへの決定論的な共有アクセスを調整することができる。
図8は、各個々のCPU(701、702、703、及び704)に提示されたページ変換構造が実際の物理ページにおいて重複に関係なく固有であるように構成された、仮想アドレスから物理アドレスへの変換構造800を示している。仮想アドレスから物理アドレスへの変換構造800は、仮想ページング構造と呼ぶことができる。タスクに対する物理ページアクセス権限を用いることで、仮想アドレスから物理アドレスへの変換構造800を用いてメモリアクセスを調整することができる。図8は、仮想アドレスから物理アドレスへのマッピングにおいては図7と同一である。相違点は、図8がどのようなページディレクトリ又はページテーブル構造も共有しない点である。あらゆるCPUは、仮想アドレスから物理アドレスへのマッピングテーブルの別個のセットを有する。仮想アドレスから物理アドレスへのあらゆる変換経路が固有であることで、アクセス権限は、図4及び5に示されたR/Wビット414及び存在ビット412を修正することによって各タスクに対して個々に制御することができる。
固有の変換を作成するための2つの技術が提示される。第1の技術は、シャドーページテーブルと呼ぶことができる。オペレーティングシステムは、図7におけるようにページテーブル構造を構成する。いずれかのタスクが実行を開始する前に、このタスクに対する図7のページテーブル構造を図8のシャドーページテーブル構造内にコピーする。タスク721では、ページテーブル構造は、CR3 711から位置付けられる。ページディレクトリPD730はPD830Aにコピーされる。ページテーブルPT760はPT860Aにコピーされる。新しいページディレクトリであるPD830Aは、このディレクトリが新しいページテーブルであるPT860Aを指すように修正される。しかしながら、新しいページテーブルPT860Aは、古いページテーブルPT760と同じ物理ページを指す。最後にCR3 711は、PD730ではなくPD830Aを指すように修正される。
この固有の変換構造を作成するための第2の技術は、多段ページテーブルと呼ぶことができる。多段ページテーブルは、2つ又はそれ以上のレベルの仮想アドレスから物理アドレスへの変換を提供する。これは、システムの仮想化を助けるためにプロセッサチップに付加されたハードウェアメカニズムである。仮想化システムでは、実際のハードウェア上で実行されるホストオペレーティングシステムが存在する。また、仮想化されたハードウェア上で各々が実行されている幾つかのゲストオペレーティングシステムも存在する。ゲストオペレーティングシステムは、実際のハードウェア上にインストールされているかのように実行する。ゲストオペレーティングシステムによりセットアップされる仮想アドレスから物理アドレスへの変換は現実のものではない。あらゆるゲストオペレーティングシステムは、同じ物理メモリ位置にアクセスできると考える。これは、仮想アドレスから物理アドレスへの変換がアプリケーションに対して解決する問題と実質的に同じであり、この各アプリケーションは、同じ物理アドレス空間を用いているかのように作動し、現実には、各アプリケーションが同じ仮想アドレス空間を用いて作動する。多段ページテーブルを用いると、ゲストオペレーティングシステム上で実行されるアプリケーションは仮想メモリ位置を参照する。実際のハードウェアは、ゲスト仮想アドレスをゲスト物理アドレスに変換するためにゲストオペレーティングシステムによりセットアップされるページテーブル構造を用いる。ゲスト物理アドレスは、プロセッサ特定仮想アドレスとして用いられ、ホストオペレーティングシステムによりセットアップされるページテーブルを用いて物理アドレスに転換される。以下でより詳細に説明するように、2つのレベルの多段化された(仮想アドレス−仮想アドレス−物理アドレス変換)ページテーブル構造を用いて、タスク毎に固有のページテーブル構造を提供することができる。
図8のページング構造800のような仮想ページング構造を作成するための1つの手法は、オペレーティングシステムにより生成された実際のページング構造を修正して、元のページング構造と現在動作している構造との間の相違点を追跡するためにデータ構造を維持するようにすることである。別の方法は、ページング構造を複製し、修正したページング構造の複写物をプロセッサに提示することである。この複製は、一斉複製(全テーブルを直ちに複写する)、又は漸次的複製(プロセッサがそのアドレス空間のセクションにアクセスするときに複写テーブル構造が拡張される)とすることができる。全テーブルを一斉に複写するプロセスを以下に説明する。
オペレーティングシステムによりタスクが最初に作成されるときには、図7におけるようなタスクをロードするのに十分大きいページング構造が作成される。次いで、タスクをメモリ内にロードし、ページングテーブルにおいて適切なビット(P、R/W、U/S)が設定される。最上位レベルのページング構造のベースアドレスがCR3レジスタにロードされ、次いで、タスクが開始される。ロックステップ管理部240は、CR3へのアクセスをトラップすることによってこの挙動を修正する。オペレーティングシステムによりセットアップされたページング構造がシャドーセット(図8)に複写される。シャドー構造は、制限されたアクセス権限でセットアップされる。システム内の全ての他のプロセッサに対するシャドーページング構造がこのタスクに対するシャドーページング構造と比較される。他のいずれかのプロセッサが特定のページへの書込みアクセスをできる場合には、このタスクはアクセスを取得しない(ページが存在しないものとしてマークされ、P=0)。他のいずれかのプロセッサが特定ページへの読出しアクセスをできる場合には、このタスクは読出しアクセスをする。他のプロセッサが特定ページへのアクセスをできない場合には、このタスクは、必要な場合に書込みアクセスをすることができる。次いで、CR3レジスタには、ロックステップ管理部240によりシャドーページング構造のベースアドレスがロードされる。このページング構造は、ページへの書込みアクセスを有するプロセッサが当該ページへの固有のアクセスをすることを保証する。ページを共有する唯一の手法は、読出しアクセスを用いるものである。
アプリケーションの実行は以下のように進む。
1)全てのプロセッサに実行すべき作業の最大分担がロードされる。
2)全てのプロセッサは、排他的書込みアクセスを保証するページングテーブルのシャドーセット上で実行されている。
全プロセッサは、ページがフォルトするか又は作業分担が終了するまで命令ストリームを実行する。プロセッサがページ参照でフォルトすると常に、当該ページにどのアクセスを認可すべきかについてロックステップ管理部240が決定する。ページフォルトの解決又は作業分担の終了後のいずれかを待機して全プロセッサが機能停止した場合には、ページング構造を更新し、新しい分担目標で実行を続行する。
ページアクセスは、アクセスなし、読出し、及び読出し/書込みの間で変更される。アクセスなしは、メモリからそのページが実際に存在しない、又は潜在的競合を回避するために問題のプロセッサがアクセス拒否されていることを意味する。読出しは、このプロセッサに対する無制限の読出しアクセスを意味する。所与の物理ページへの読出しアクセスは、複数のプロセッサに対して同時に認可することができる。読出し/書込みは、このプロセッサによる所与の物理ページへの排他的アクセスを意味する。
図9は、トラップをPTEアクセスに基づいて調整する場合の2つのプロセッサAとB(すなわちProcAとProcB)との間の対話900を示している。同じ種類の対話がPDEについても発生する。対話900は、全ページがアクセスなしとして始める状況で示されている。これは、タスクが最初に実行し始めたときにメモリ内に存在しないページについての場合である。これとは対照的に、生成されたスレッドでは、PTEは、そのエントリの大部分において読出し専用アクセスで始める可能性が高い。プロセッサのタイムラインが「高」であるときには、プロセッサは実行中である。プロセッサのタイムラインが「低」のときには、プロセッサは停止している。以下に図9のステップをウォークスルーする。
ステップ901:
いずれかのプロセッサによるページX、Y、Zのいずれかへのアクセスがない。
ステップ902:
ProcAは権限なしでX書込みを試みる。
ProcBは権限なしでX読出しを試みる。
ProcAにページXへの読出し/書込み(排他的)を与える。
ProcBはXへのアクセスなしで機能停止される。
ステップ903:
ProcAの分担の有効期限が切れる。
ProcBはステップ902から依然としてX読出しを待機している。
ProcAをX読出し専用(共有)にダウングレードする。
ProcBにX読出し専用(共有)を与える。
ステップ904:
ProcAは権限なしでY読出しを試みる。
ProcBは権限なしでZ読出しを試みる。
ProcAにY専用読出し(共有)を与える。
ProcBにZ専用読出し(共有)を与える。
ステップ905:
ProcAは読出し専用権限でZ書込みを試みる。
ProcBは読出し専用権限でX書込みを試みる。
ProcAにXアクセスなし及びZ読出し/書込み(排他的)を与える。
ProcBにX読出し/書込み(排他的)及びZアクセスなしを与える。
ステップ906:
ProcAは読出し専用権限でY書込みを試みる。
ProcBは読出し専用権限でZ読出しを試みる。
ProcAに読出し/書込みY(排他的)及びZ読出し専用(共有)を与える。
ProcBにZ読出し専用(共有)を与える。
ステップ907:
ProcAは権限なしでX書込みを試みる。
ProcBは権限なしでY読出しを試みる。
ProcAにX読出し/書込み(排他的)及びY読出し専用(共有)を与える。
ProcBにXアクセスなし及びY読出し専用(共有)を与える。
ステップ908:
ProcAは読出し専用権限でZ書込みを試みる。
ProcBは読出し専用権限でZ書込みを試みる。
ProcAはZへのアクセスなしで機能停止される。
ProcBに読出し/書込みZ(排他的)を与える。
ステップ909:
ProcAは、ステップ908から依然としてZ書込みを待機している。
ProcBは権限なしでX読出しを試みる。
ProcAにX読出し専用(共有)及びZ読出し/書込み(排他的)を与える。
ProcBにX読出し専用(共有)及びZアクセスなしを与える。
ステップ910:
ProcAの分担の有効期限が切れる。
ProcBの分担の有効期限が切れる。
ProcA−アクセス変化なし。
ProcB−アクセス変化なし。
図9の対話900は、2つのプロセッサが互いに時間的に同期せずにPTE競合状態に達することができることを示している。リソース内で真の競合が発生した場合には、プロセッサは次の実行サイクルを実行ではなく機能停止状態で過ごす。これは、ステップ902と903との間のProcBにおける場合であり、更にステップ908と909との間のProcAにおける場合である。
上記のステップ901から910に示されるアクセス違反を順序付けするためのポリシーは、公平性及び決定論の両方でなければならない。このポリシーはプロセッサを枯渇するのを防ぐために公平でなくてはならない。このポリシーは、「ラウンドロビン」又は統計平均の形とすることができる。2つの別個で同等のコンピュータシステムが僅かにずれたタイミングで同時に同じプロセスを実行している複写フォルトトレラントシステムにおいて対話が行われているので、決定論は必要である。従って、ページフォルトの到達時間は、結果を判断する上での要因とすることはできない。
図10は、プロセッサに対して維持されるシャドーページテーブルの決定論的共有メモリアクセス(DSMA)の状態遷移図である。シャドー構造内のエントリは、アクセスなし状態1010で始まる。これは、図3のPTE345において存在ビットP=0(ビット<0>=0)を有するものとして示される。このページにアクセスするあらゆる試みによりページフォルトハンドラへのトラップが生じる。プロセッサがこのページへの読出しアクセスを実行するときには、読出し専用状態1020への読出しアクセス遷移1011が行われる。この遷移はプロセッサBにおける図9のステップ902及び903と同様に遅延させることができる点に留意されたい。プロセッサがこのページへの書込みアクセスを実行するときには、読出し/書込み状態1030への書込みアクセス遷移1012が行われる。これは、プロセッサAにおける図9のステップ902において見ることができる。
読出し専用状態1020では、プロセッサは、ページフォルトハンドラへのトラップを受けることなくページを読み出す能力を有する。これは、図3のPTE345においてR/W=0及びP=1(ビット<1:0>=01)を有することで表される。読出し専用状態1020に戻る読出しアクセス遷移1021は、読出しアクセスを実施するこの損なわれていない能力を表す。この遷移は、図9においてプロセッサA及びBの両方のステップ907と908との間に見ることができる。ページへの書込みアクセスが発生すると、読出し/書込み状態1030への書込みアクセス遷移1022が行われる。これは、図9のプロセッサBにおけるステップ905で見ることができる。他方のプロセッサがこのページへの排他的書込みアクセスを必要とするときには、アクセスなし状態1010への書込み競合遷移1023が行われる。これは、プロセッサAにおける図9のステップ904で見ることができる。
読出し/書込み状態1030では、プロセッサは、ページフォルトハンドラへのトラップを受けずにページに対して読出し又は書込みを行う能力を有する。読出し又は書込みアクセス遷移1031はこの能力を示している。これは、図9においてプロセッサAにおけるステップ902と903との間、及びステップ907と908との間に見ることができる。他方のプロセッサがこのページに対して読出しを実施するときには、読出し専用状態1020への読出し競合遷移1032が行われる。これは、図9においてプロセッサAにおけるステップ903で見ることができる。他方のプロセッサがこのページに対して書込みを実施するときには、アクセスなし状態1010への書込み競合遷移1033が行われる。これは、図9においてプロセッサBにおけるステップ907で見ることができる。
プロセッサがページフォルトを生成していない場合には、PTEフォルトにおいて他のプロセッサの機能停止を回避するために、いずれかの種類の分担アクセスによって妨害しなければならない。これは、図9においてプロセッサAにおけるステップ903で見ることができる。
追加の又は代替的なポリシーを用いることができる。例えば、以下のポリシーを用いることができる。
1)全てのメモリ内ページを図10の読出し専用1020として始め、これは図10において全ページJに対し(J(RO))と表すことができる。
2)読出し競合1032上で読出し/書込み1030からアクセスなし1010に遷移する。また、読出し競合1024(図示していない)上で読出し専用1020からアクセスなし1010に遷移する。このことによって読出し専用1020及び読出し/書込み1030において排他的アクセスが強制され、このリストにおいて他の別のポリシーを用いる上でより柔軟性を持たせる。
3)読出し競合1013(図示していない)上でアクセスなし1010から読出し専用1020に遷移する。これによりいずれかのプロセッサが読出しアクセスを取得するときに全プロセッサにページに読出しアクセスが与えられる。
4)他のプロセッサのいずれもが、ページJに対し(J(RW))と表すことができる読出し/書込み状態1030にない場合には、いかなる他のプロセッサとのアクセス解決も待機せずに、読出しアクセス1011上でアクセスなし1010から読出し専用1020に遷移する。
5)全ての他のプロセッサがページJに対しアクセスなし状態1010(J(NONE))にある場合には、いかなる他のプロセッサとのアクセス解決も待機せずに、書込みアクセス1012上でアクセスなし1010から読出し/書込み1030に遷移し、又は書込みアクセス1022上で読出し専用1020から遷移する。
図7及び8を再び参照すると、複写フォルトトレラントシステム700は、各々が複数のプロセッサを含む2つのコンピュータ環境715及び765を有している。アプリケーション処理部801から804は、コンピュータ環境715とコンピュータ環境765との間の命令ロックステップで実行される。命令ロックステップは、以下の詳細により維持することができる。
1)プロセッサはどのような非同期I/Oデバイスにも直接アクセスしない。
2)非同期割り込みがない。
3)時間挿入は、タイマ割り込みによってではなく、プロセッサ命令ストリームに対して行われる。
4)プロセッサがメモリに書込み中である場合には、メモリへのアクセスが排他的アクセスに制限される。
5)メモリアクセスポリシーの変更は、全ての影響を受けるプロセッサが機能停止されたときにのみ行われる。
6)プロセッサは、メモリアクセストラップ時又は作業分担の完了時(共に同期イベント)にのみ機能停止される。
7)メモリポリシーを調整しているロックステップ管理部240は、制御中のメモリ構造への無制限アクセスを有する環境で作動する。
これは、プロセッサに可視であるプロセッサ命令ストリームに対して非同期のアクティビティーが存在しないことを保証するのに役立つ。従って、プロセッサが命令ロックステップで始動されると、これらのプロセッサは命令ロックステップに留まる。これらのルールは、マルチプロセッシング環境におけるいかなる数のプロセッサに対しても適用することができる。
x86プラットフォーム上のフォルトトレラントシステムでは、オペレーティングシステム又はアプリケーションが接触することが許可される場合に逸脱を引き起こす可能性がある幾つかの命令及びアーキテクチャ機能が存在する。過去においては、ソフトウェア層は、ハードウェアをアプリケーション及びオペレーティングシステムから分離することが要求された。Windows(登録商標)ベースのオペレーティングシステムでは、これらの問題領域の大部分をトラップするためにハードウェア抽象化層(HAL)が用いられた。他の逸脱機能は、命令ストリーム内で事前にスキャンして問題のあるアクセスをエミュレートすることにより、又は逸脱が発生した後に一掃することによって削除しなければならない。最近のプロセッサの進歩により、仮想化ハードウェアを商品化することが可能である。仮想化ハードウェアは、フォルトトレラントシステムが、潜在的に逸脱したアーキテクチャ機能をオペレーティングシステム及びアプリケーションから分離するようにハードウェアに指示することを可能にすることができる。この仮想化ハードウェアは、アプリケーション及びオペレーティングシステムが存在する参照プラットフォームとして用いることができる。アーキテクチャ的に逸脱した処理は、システム管理モードに類似した分離環境を目的とする。ロックステップ管理部は、この分離環境を有することができ、又は含めることができる。今後の仮想化ハードウェアプラットフォームにおいてトラップされる機能は、
・I/Oデバイスへのアクセス
・システム制御レジスタ(タイムスタンプカウンタ、とりわけCR3)へのアクセス
・性能カウンタ(分担)へのアクセス
・メモリ管理構造へのアクセス
である。
連続再生フォルトトレラントシステム
前述のように、フォルトトレラントシステムは、連続再生を用いて実装することができる。連続再生フォルトトレラントシステムの利点は、分担の調整を必要とせずに、ページへのアクセス待機をプロセッサに負わせる機能停止時間を短縮することができる点である。一般に、プロセッサが機能停止するときには常に、潜在的なシステム性能が失われている。最大待機時間を抑制するために分担を小さくすることができるが、分担を小さくし過ぎるとロックステップ管理部240のオーバーヘッドによりシステム性能が制限される。分担調整の複雑さを回避するために、連続再生では、コンピュータ環境115が、待機ではなくメモリアクセス変化を調整するためのプロセッサ間割り込みを用いることができる。プロセッサ間割り込み(IPI)は、受信するプロセッサの命令ストリームに対して非同期であり、従って、複写フォルトトレラントシステムにおいて同期化ロジックなしでは用いることができない。しかしながら、再生システムでは、目標は元の結果を再現する(命令ストリームの順序付けを再現する)ことである。再生中に再現が忠実に行われる限り、非決定論的プロセスを用いて元の結果を順序付けすることができる。一般に、連続再生システムは、プロセッサのセット(プロセッサのマスターセット)上で命令ストリームの集合を実行し、初期のプロセッサ及びメモリ状態から始まり入力ストリームを消費する。これは、新しいプロセッサ及びメモリ状態、出力ストリーム、並びに様々な命令ストリーム間の対話を示すジャーナルエントリを生成する。このジャーナルストリームを用いて、同じプロセッサ状態、メモリ状態、及び入力ストリームで始まるプロセッサの1つ又はそれ以上の第2のセット(これらの各々はプロセッサのスレーブセットである)を調整することができる。ジャーナルストリームの指示に基づいて、このプロセッサの第2のセットは、同じ終了時プロセッサ状態、メモリ状態、及び出力ストリームを生成する。この整合はスレーブプロセッサによって検証することができる。
連続再生フォルトトレラントシステムは、図1の構成要素によって表すことができる。この議論では、サーバ110が初期処理を実施し、サーバ160が再生を実施する。図11は、アプリケーションプロセス1101、1102...1104及びロックステップ管理部1140インターフェースを有する再生サーバ1100(図1のサーバ160の実装とすることができる)を示している。サーバ1110上のアプリケーションプロセスを調整するのに用いることができる3つの技術は、ページフォルト(PF)、分担割り込み(QI)、及びプロセッサ間割り込み(IPI)を含む。PF及びQIメカニズムは上記で説明した。IPIメカニズムを用いて、他のプロセッサ上でPF又はQIのいずれかを待機するのを回避する。プロセッサがページフォルトを起こすと、ロックステップ管理部1140が他のプロセッサにIPIを送り、他のプロセッサに効果的にブレークポイントを設定する。ロックステップ管理部1140は、ジャーナルストリームに各プロセッサのプロセッサ命令ストリーム(例えばプログラムカウンタ及び分担カウンタ)を記録し、ページ競合を解決し、分担カウンタを再ロードし、アプリケーション処理を再開する。IPIを用いることなくジャーナルストリームを用いてサーバ1160上での再生が実施される。サーバ110が生成したジャーナルストリーム内の各エントリでは、各プロセッサについての記録及び入力消費についての記録が存在する。各プロセッサ記録は、3つの主アイテム、すなわち分担目標値、命令ポインタ、及びアクセス解決を含む。分担目標値は、サーバ110内の対応プロセッサが停止したところでサーバ160内のプロセッサを停止させるために分担カウンタにロードする値である。ページフォルトによってプロセッサが停止した場合、分担目標値は十分大きく、ページフォルトが再び発生することが可能になる。命令ポインタは、サーバ160上での再生がサーバ110と同じシーケンスを辿っていることを検証するためのものである。アクセス解決は、実行が再び始まる前に修正する必要があるページアクセス権である。入力消費記録は、集合的なプロセッサ状態にどのような入力シーケンスが加えられたか、及びどのように時間が進行したかを示す。以下の議論でプロセッサ記録を説明する。
図12及び14は、2プロセッサSMPシステムでの命令ストリームの対話のシーケンス1200及び1400をそれぞれ示している。図12のシーケンスは、再生システムのサーバ110から取り込まれ、図14のシーケンスは再生システムのサーバ160が再生を実行するときにサーバ160から取り込まれる。再生システムの両方のサーバ110及び160においても、図10に示したDSMA状態遷移は有効である。図13は、図12の対話1200によって作成され、図14の対話1400を作成するのに用いた入力消費記録をジャーナルストリームから除いたものである。
図12は、PTEアクセスに基づいてトラップが調整されたときの2つのプロセッサA及びB間の対話1200を示している。ページテーブル構造の様々なレベルにおいて類似のプロセスが発生する。対話1200は、全ページがアクセスなしとして始まる状況で発生し、これはタスクが最初に実行を始めるときにメモリ内にページが存在しない場合である。これとは対照的に、生成されたスレッドでは、PTEは、そのエントリの大部分において読出し専用アクセスで始める可能性が高い。プロセッサのタイムラインが「高」であるときには、プロセッサは実行中である。プロセッサのタイムラインが「低」のときには、プロセッサは停止している。以下に図12のステップをウォークスルーする。
ステップ1201:
いずれかのプロセッサによるページX、Y、Zのいずれかへのアクセスがない。
ステップ1202:
ProcAは権限なしでX書込みを試みる。ProcBにIPIが送られる。
IPIによってProcBは停止する。
ProcAにページXへの読出し/書込み(排他的)を与える。
ProcBはページX、Y、Zへのアクセスがない状態を継続する。
ステップ1203:
ProcBは権限なしでX読出しを試みる。ProcAにIPIが送られる。
IPIによってProcAは停止する。
ProcAをX読出し専用(共有)にダウングレードする。
ProcBにX読出し専用(共有)を与える。
ステップ1204:
ProcBは権限なしでZ読出しを試みる。ProcAにIPIが送られる。
ProcAは権限なしでY読出しを試みる。
ProcAにY読出し専用(共有)を与える。ProcBからのIPIが無効にされる。
ProcBにZ読出し専用(共有)を与える。
ステップ1205:
ProcAは権限なしでY書込みを試みる。IPIがProcBに送られる。
ProcBは権限なしでY書込みを試みる。
ProcAにY読出し/書込み(排他的)を与える。
ProcBはYアクセス待機して機能停止する。ProcAからのIPIが無効にされる。
ステップ1206:
ProcAは権限なしでZ書込みを試みる。ProcBにIPIが送られる。
ProcBはYアクセスを待機して機能停止する。
ProcAにYアクセスなし及びZ読出し/書込み(排他的)を与える。
ProcBにY読出し/書込み(排他的)及びZアクセスなしを与える。ProcAからのIPIが無効にされる。
ステップ1207:
ProcBは権限なしでX書込みを試みる。ProcAにIPIが送られる。
IPIによってProcAは停止する。
ProcAをXアクセスなしにダウングレードする。
ProcBにX読出し/書込み(排他的)を与える。
ステップ1208:
分担によってProcAは停止する。
分担によってProcBは停止する。
ProcAは変化のない状態を継続する。
ProcBは変化のない状態を継続する。
ステップ1209:
ProcAは権限なしでX読出しを試みる。ProcBにIPIが送られる。
ProcBは権限なしでZ書込みを試みる。ProcAにIPIが送られる。
ProcAにX読出し専用(共有)及びZアクセスなしを与える。ProcBからのIPIが無効にされる。
ProcBにX読出し専用(共有)及びZ読出し/書込み(排他的)を与える。ProcAからのIPIが無効にされる。
図12の各ステップにおいて、プロセッサ間の対話を概説するジャーナルエントリが作成される。図13は、図12のシーケンスについての利用可能なジャーナルストリーム1300を示している。図13では、ステップ欄1310は、図12についての上記説明に対応するステップ番号である。分担欄1320A又は1320Bは、実行を開始する前に分担カウンタにロードすべき値を表している。プロセッサAでのステップ1202の値(P,QA2+1)は、分担QA2を実行した後にプロセッサAがページフォルトによって停止したことを示している。このカウンタは、再生が同じページフォルトに達することをできるように、少なくとも1つ大きく設定される。両方のプロセッサA及びBにおけるステップ1208の値(I,Qmax)は、プロセッサが分担割り込みによって停止したことを示す。プロセッサAにおけるステップ1203の値(I,QA3)は、これがIPIによってプロセッサの停止したところであることを示す。再生サーバ760では、IPIによる停止と分担割り込みによる停止との間で差違はない。PC欄1330A又は1330Bは、プロセッサが停止したプログラムカウンタを表す。ページフォルトの場合(プロセッサAでのステップ1202)には、PC値はアクセス違反によってトラップされた命令を指す。IPI又は分担割り込みの場合には、PC値は、実行すべき次の命令である。アクセス欄1340A又は1340Bは、実行を続ける前にページング構造に適用された変更を示している。
プロセッサA及びBは、図12のタイムラインでは、サーバ110に対してProcA及びProcBと称され、図14のタイムラインではサーバ160に対してProcA’及びProcB’と称されている。図13のジャーナルファイルにおいて概説された命令に従って図12のタイムラインが図14として再現される。
ステップ1201:
ProcA’は命令A1で始まり、これにXアクセスなし、Yアクセスなし、及びZアクセスなしを与える。
ProcB’は命令B1で始まり、これにXアクセスなし、Yアクセスなし、及びZアクセスなしを与える。
ステップ1202:
ProcA’は分担QA2+1をロードし、命令A2で権限なしでX書込みを試みるまで実行される。
ProcB’は分担QB2をロードし、命令B2で分担の有効期限が切れるまで実行される。
ProcA’にX読出し/書込み(排他的)を与える。
ProcB’には何の変更も与えない。
ステップ1203:
ProcA’は分担QA3をロードし、命令A3で分担の有効期限が切れるまで実行される。
ProcB’は分担QB3+1をロードし、命令B3で権限なしでX読出しを試みるまで実行される。
ProcA’にX読出し専用(共有)を与える。
ProcB’にX読出し専用(共有)を与える。
ステップ1204:
ProcA’は分担QA4+1をロードし、命令A4で権限なしでY読出しを試みるまで実行される。
ProcB’は分担QB4+1をロードし、命令B4で権限なしでZ読出しを試みるまで実行される。
ProcA’にY読出し専用(共有)を与える。
ProcB’にZ読出し専用(共有)を与える。
ステップ1205:
ProcA’は分担QA5+1をロードし、命令A5で権限なしでY書込みを試みるまで稼働する。
ProcB’は分担QB5+1をロードし、命令B5で権限なしでY書込みを試みるまで実行される。
ProcA’にY読出し/書込み(排他的)を与える。
ProcB’には何の変更も与えない。
ステップ1206:
ProcA’は分担QA6+1をロードし、命令A6で権限なしでZ書込みを試みるまで実行される。
ProcB’は命令B5で停止する。ProcA’にYアクセスなし及びZ読出し/書込み(排他的)を与える。
ProcB’にY読出し/書込み(排他的)及びZアクセスなしを与える。
ステップ1207:
ProcA’は分担QA7をロードし、命令A7で分担の有効期限が切れるまで実行される。
ProcB’は分担QB7+1をロードし、命令B7で権限なしでX書込みを試みるまで実行される。
ProcA’にXアクセスなしを与える。
ProcB’にX読出し/書込み(排他的)を与える。
ステップ1208:
ProcA’は分担Qmaxをロードし、命令A8で分担の有効期限が切れるまで実行される。
ProcB’は分担Qmaxをロードし、命令B8で分担の有効期限が切れるまで実行される。
ProcA’には何の変更も与えない。
ProcB’には何の変更も与えない。
ステップ1209:
ProcA’は分担QA9+1をロードし、命令A9で権限なしでX読出しを試みるまで実行される。
ProcB’は分担QB9+1をロードし、命令B9で権限なしでZ書込みを試みるまで実行される。
ProcA’にX読出し専用(共有)及びZアクセスなしを与える。
ProcB’にX読出し専用(共有)及びZ読出し/書込み(排他的)を与える。
図12及び図14のタイムラインは類似しているが同じではない。サーバ110及び160のアプリケーション処理部は、緩やかな命令ロックステップで実行されているので、命令シーケンスを実行するのに必要な実経過時間は、サーバ110と160との間で変わる。イベントの順序は、場合によっては再生中にこれ自体を反転するよう試みることができる。例えば、図12のステップ1205では、サーバ110上のプロセッサAは、プロセッサBの前にページYへの書込みアクセスを試みる。サーバ160上での再生中には、プロセッサB’がプロセッサA’の前にページYへの書込みアクセスを試みる。図13のステップ1205についてのジャーナルストリームは、プロセッサAがページYへの読出し/書込みアクセスを取得することを決定付ける。ジャーナルストリームのステップ1206では、プロセッサBに対する分担がゼロであり、プロセッサB’が再生サイクルにおいて機能停止することを示している。このことによって、サーバ110で見られる元の順序がプロセッサA’及びB’上に強制される。IPIがサーバ110に対して行った手法と類似する手法で、プロセッサがアクセスを行う直前に分担値がプロセッサを停止させることができることによって、他のほぼ同時のアクセスをマスクすることができる。ステップ1205を実施例として再び用いると、IPI割り込みがプロセッサBに1つの命令分早く到達していた場合、プロセッサBは命令B5においてページXへの書込みアクセス違反を犯すことにはならないが、B5−1において1つの命令分早く停止していたであろう。従って、ステップ1205でのプロセッサBに対するジャーナルエントリは、PC=B5−1で分担=(I,QB5)となり、1つの命令分早いIPIによって停止することになる。その結果、再生は、サーバ110が行ったのと全く同じように、サーバ160内のプロセッサB’にB5−1で停止するよう強制することになる。
タイムライン図12とタイムライン図14との間の相違は、命令シーケンスを実行するのに要する実経過時間におけるもののみとすることができる。サーバ160内のプロセッサは、サーバ110内のプロセッサと異なる挙動を示してはならない。テスト及び待機ループに関与する2つ又はそれ以上のプロセッサは、サーバ110とサーバ160との間で正確に同じ挙動を生じ、すなわち読出し回数、読出し値、書込み順序付け、及び書込み値が同じである。
図12の連続再生を生成したサーバ110の実行シーケンスは、サーバ110が図8の複写システムを生成するのに用いたものと同じルールによって制御される。複写システムにおけるアクセス制御の代替の方法の全ては、連続再生システムにおけるサーバ110に当てはまる。連続再生システムにおけるサーバ160は、ジャーナルストリームに残された形跡を単に辿るだけであるので、複写システムでは非決定論的となる以下の追加ポリシーを加えることができる:3つ又はそれ以上のプロセッサを有するシステムでは、競合を解決するためにアクセス競合にあるプロセッサのみが機能停止される。他のプロセッサは、これらの分担の有効期限が切れるまで、又は他のプロセッサが別のプロセッサとアクセス競合を有するまで実行を継続する。例えば、プロセッサA及びBはページJに対して読出し専用状態1020(J(RO))にある。プロセッサCは、ページJに対してアクセスなし状態1010(J(NONE))にある。プロセッサA及びBの両方は、ページJに対するJ(RW)を獲得するために読出し/書込み状態1030への遷移を必要とする。プロセッサCは、ページJにアクセスする必要はない。競合を解決するためにはプロセッサA及びBのみを停止する必要がある。
連続再生システムにおける利点は、アクセス競合を迅速に解決するのにIPIを用いることによって、システム性能を改善することができる点である。一般に、全てのプロセッサが機能停止状態にあるときにのみ入力を供給することができ、さもなければ供給は非決定論的イベントとなる。全てのプロセッサが機能停止状態にあるときにのみ時間(これは入力である)を変更することができる。タスクの問題のある組み合わせは、メモリ制限があり計算集中型のアプリケーションと結合された多くのページフォルトを発生させるアプリケーションである。複写システムでは、計算集中型のタスクがそのQmax分担の終了を待機している間にページフォルトアプリケーションが機能停止するのを阻止するため、Qmax値が小さいことが必要であるが、オーバーヘッドでプロセッサを浪費する程には小さくない。連続再生システムでは、ページフォルト及びIPIがアプリケーションを追跡する。実際に、機能停止を用いて、Qmax値が入力供給の細分性を調節する間にページフォルトの最小スペースを強制することができる。
仮想アドレス変換
ここで仮想変換構造についての更なる議論を提示する。仮想アドレス変換をサポートするハードウェアメカニズムは、図3に示されるテーブル構造に従う。変換テーブル内に含まれるものを除いて、仮想アドレスと物理アドレスとの間に必要な相関関係は存在しない。オペレーティングシステムは、仮想アドレス空間で実行するが、物理アドレスを含むハードウェア使用に向けての変換テーブルを構築することが必要とされる。オペレーティングシステムは、変換テーブルを維持するために仮想アドレスと物理アドレスとの間の遷移する方法を理解する必要がある。これは、以下の技術によって達成することができる。
1)ページテーブル(PT)の仮想アドレス空間は線形的に連続である。
2)ページディレクトリ(PD)は固定位置に仮想的にマッピングされる。
3)PDはまた、自己マッピングPDE/PTEを有するPTとしても用いられる。
Microsoftによる32ビットWindows(登録商標)オペレーティングシステムでは、3つのアドレスは以下の通りである。
1)PTはC000_0000で始まり仮想的にマッピングされる。
2)PDはC030_0000に仮想的にマッピングされる。
3)自己マッピングされたPDE/PTEは仮想アドレスC030_0C00にある。
オペレーティングシステム(OS)のメモリ管理の当業者は、これらの事実を利用して、あらゆる仮想アドレスを物理アドレスに変換することができる。加えて、かかる当業者はページテーブル構造を「ウォーク」し、構造自体の仮想及び物理アドレスを完全に識別し、更に当該構造によってアドレス指定可能な全ての物理メモリを識別することができる。変換構造のあらゆる部分にアクセスするために、以下のアドレス指定式のセットを作ることができる。すなわち、
式1)PDindex=va<31:12>≫22−これは、PD内へのインデックスが22ビットだけ右にシフトした仮想アドレスのビット31から12であることを表す。これはダブルワード(4バイト)インデックスである。
式2)PTindex=va<21:12>≫12−これは、PT内へのインデックスが12ビットだけ右にシフトした仮想アドレスのビット21から12であることを表す。これはダブルワード(4バイト)インデックスである。
式3)PGindex=va<ll:00>−これは、メモリのページ内へのインデックスがビット11から00であることを表す。これはバイトインデックスである。
式4)VAPD(va)=C030_0000−これは、定義によっていずれかの仮想アドレス(va)がC030_0000である場合にページディレクトリ(PD)の仮想アドレスを表す。
式5)PAPD(va)=Mem[C030_0C00]<31:12>−これは、PDの物理アドレスが仮想アドレスC030_0C00におけるメモリ内容のビット31から12であることを表す。
式6)VAPDE(va)=C030_0000+(PDindex≪2)−これは、ページディレクトリエントリ(PDE)の仮想アドレスを表す。
式7)PAPDE(va)=PAPD(va)+(PDindex≪2)−これは、PDEの物理アドレスがPDの物理アドレスにPDindexのバイトインデックスを加えたものであることを表す。
式8)VAPT(va)=C000_0000+(PDindex≪12)−これは、定義によるページテーブル(PT)の仮想アドレスを表す。
式9)PAPT(va)=Mem[VAPDE(va)]<31:12>−これは、PTの物理アドレスがVAPDE(va)におけるメモリ位置のビット<31:12>内に含まれることを表す。
式10)VAPTE(va)=VAPT(va)+(PTindex≪2)
式11)PAPTE(va)=PAPT(va)+(PTindex≪2)
式12)VAPage(va)=(PDindex≪22)+(PTindex≪12) −定義による。
式13)PAPage(va)=Mem[VAPTE(va)]<31:12>
式14)VAByte(va)=VAPage(va)+PGindex=va −定義による。
式15)PAByte(va)=PAPage(va)+PGindex
式16)Data(va)=Mem[va]
このアドレス指定式の集合における重要な点はオペレーティングシステムによる以下の特定の仮想アドレスの存在に対する信頼性である。
1)C000_0000 −線形にマッピングされたページテーブルの仮想アドレスである。
2)C030_0000 −ページディレクトリ(PD)の仮想アドレスがページテーブル(PT)の仮想アドレスでもある。
3)C030_0C00 −自己マッピングされたPDE/PTEの仮想アドレスである。
別のページテーブル構造を設定する場合、PDとしてのC030_0000におけるPTの二重使用、及びエントリ300(仮想アドレスC030_0C00)のページテーブルエントリ(PTE)及びページディレクトリエントリ(PDE)の両方としての二重使用を考慮しなければならない。
オペレーティングシステムのページテーブル構造を用いて例示的なアドレス変換のセットを示す。実施例の第2のセットでは、シャドーページテーブルを用いた同じ変換をウォークスルーする。上記のアドレス指定式から仮想アドレスE829_6457に対する様々な変換を示す。
1)PDindex=va<31:12>≫22=3A0
2)PTindex=va<21:12>≫12=296
3)PGindex=va<ll:00>=457
4)VAPD(va)=C030_0000 −定義による
5)PAPD(va)=Mem[C030_0C00]<31:12>
6)VAPDE(va)=C030_0000+(PDindex≪2)=C030_0000+E80=C030_0E80
7)PAPDE(va)=PAPD(va)+(PDindex≪2)=PAPD(va)+E80
8)VAPT(va)=C000_0000+(PDindex≪12)=C000_0000+3A_0000=C03A_0000
9)PAPT(va)=Mem[VAPDE(va)]<31:12>
10)VAPTE(va)=VAPT(va)+(PTindex≪2)=C03A_0000+558=C03A_0558
11)PAPTE(va)=PAPT(va)+(PTindex≪2)=PAPT(va)+558
12)VAPage(va)=(PDindex≪22)+(PTindex≪12)=E800_0000+29_6000=E829_6000
13)PAPage(va)=Mem[VAPTE(va)]<31:12>
14)VAByte(va)=VAPage(va)+Byte Index=va=E829_6000+457=E829_6457
15)PAByte(va)=PAPage(va)+Byte Index=PAPage(va)+457
16)Data=Mem[va]
図15を参照すると、実施例1500は、PAPD(va)=Mem[C030_0C00]<31:12>の変換を行うためにハードウェア変換技術を適用することを例示している。CR3レジスタに仮想アドレスC030_0000の物理変換がロードされる。また、インデックス300におけるダブルワードにはCR3におけるものと同じ物理アドレスがロードされる。ハードウェア変換プロセスに続いて:
1)CR3 1510内の物理アドレスをPDのベースへのポインタとして用いる。
2)PDE1530を求めるためにPD1520内へのダブルワードインデックスとして仮想アドレスC030_0C00(=300)のビット<31:22>を用いる。
3)PDE1530はPTのベースを指す(物理アドレス)。このアドレスはCR3から取得した物理アドレスと同じ物理アドレスである。
4)PTE1530を求めるために仮想アドレスC030_0C00(=300)のビット<21:12>をPT内へのダブルワードインデックスとして用いる。
5)PTE1530はメモリページのベースを指す(物理アドレス)。このアドレスは、CR3から取得した物理アドレスと同じ物理アドレスである。
6)仮想アドレスC030_0C00(=300)のビット<11:02>をメモリページ内へのダブルワードインデックスとして用いる。
7)このメモリのダブルワードを読み出すことによってPD1520のベースの物理アドレスがもたらされる。これはPAPD(va)である。
同様に図16を参照すると、va=E829_6457に対してPAPT(va)=Mem[VAPDE(va)]<31:12>の変換を行うためにハードウェア変換技術を適用する。
1)VAPDE(va)=C030_0000+(PDindex≪2)=C030_0000+E80=C030_0E80
2)CR3 1510内の物理アドレスをPD1520のベースへのポインタとして用いる。
3)PDE1530を求めるためにPD1510内へのダブルワードインデックスとして仮想アドレスC030_0E80(=300)のビット<31:22>を用いる。
4)PDE1530はPT1520のベースを指す(物理アドレス)。
5)PTE1530を求めるためにPT1520内へのダブルワードインデックスとして仮想アドレスC030_0E80(=300)のビット<21:12>を用いる。
6)PTE1530はメモリページ1520のベースを指す(物理アドレス)。
7)仮想アドレスC030_0E80(=3A0)のビット<11:02>をメモリページ1640内へのダブルワードインデックスとして用いる。
8)メモリのこのダブルワードを読み出すことによって、PTのベースの物理アドレスであるPDindex 3A0に対するPDEがもたらされる。これは、PAPT(va)=Mem[VAPDE(va)]である。
再び図16を参照すると、va=E829_6457に対してPAPage(va)=Mem[VAPTE(va)]<31:12>の変換を行うためにハードウェア変換技術を適用する。
1)VAPTE(va)=VAPT(va)+(PTindex≪2)=C03A_0000+558=C03A_0558
2)CR3 1510内の物理アドレスをPD1520のベースへのポインタとして用いる。
3)PDE1530を求めるためにPD1520内へのダブルワードインデックスとして仮想アドレスC03A_0558(=300)のビット<31:22>を用いる。
4)PDE1530はPT1520のベースを指す(物理アドレス)。
5)PDE1640を求めるためにPT1520内へのダブルワードインデックスとして仮想アドレスC03A_0558(=3A0)のビット<21:12>を用いる。
6)PTE1640はメモリページ1650のベースを指す(物理アドレス)。
7)仮想アドレスC03A_0558(=296)のビット<11:02>をメモリページ1650内へのダブルワードインデックスとして用いて、メモリ位置1660を得る。
8)メモリのこのダブルワードを読み出すことによって、メモリページの物理アドレスであるPTindex296に対するPTEがもたらされる。これは、PAPage(va)=Mem[VAPTE(va)]である。
再び図16を参照すると、va=E829_6457に対してData=Mem[va]の変換を行うためにハードウェア変換技術を適用する。
1)CR3 1510内の物理アドレスをPD1520のベースへのポインタとして用いる。
2)PDE1640を求めるためにPD1520内へのダブルワードインデックスとして仮想アドレスE829_6457(=3A0)のビット<31:22>を用いる。
3)PDEはPT1650のベースを指す(物理アドレス)。
4)PTE1660を求めるためにPT1650内へのダブルワードインデックスとして仮想アドレスE829_6457(=296)のビット<21:12>を用いる。
5)PTE1660はメモリページ1670のベースを指す(物理アドレス)。
6)仮想アドレスE829_6457(=457)のビット<11:00>をメモリページ1670内へのバイトインデックスとして用いる。
7)これはData=Mem[va]である。
シャドーページテーブルの仮想アドレス変換
シャドーページテーブル構造を作成する上での目標は、プロセッサ毎の決定論的共有メモリアクセス制御を可能にすることである。シャドーマッピングは、プロセッサを元のページテーブル構造が導くのと正確に同じ物理メモリページに導く。更に、元の変換構造でページテーブル(PT)又はページディレクトリ(PD)として用いているあらゆるメモリページは、元の変換構造において変換しなければならず、ページテーブルエントリ(PTE)として現れなければならない点に留意されたい。シャドーページテーブルは、元の変換構造内に含まれていた全てのページをマッピングしなければならない。
図17は、図7及び8にそれぞれ示されているタスクページング構造とシャドーページング構造との組み合わせの概要1700を示している。タスクページング構造に示されているものは、タスクPD1710A並びに2つのタスクPT1720A及び1722Aである。一例として、タスクPD1710Aは自己マップPDE/PTE、4M PTE、及び2つのPDEを示している。シャドーPD 1710Bは、タスクPD 1710Aと同じアイテムを示している。タスク自己マップPDE/PTEの使用は上記で説明した。タスクによる自己マップPDE/PTEのあらゆる使用によっても正しいアドレス変換が生成されるように、シャドー自己マップPDE/PTEは、タスクPD1710Aを指すように設定される。シャドー自己マップPDE/PTEエントリは、読出し専用としてマークされる。これによって、オペレーティングシステムによるタスク変換構造を修正するあらゆる試みがページフォルトを発生させることが保証される。次いで、これに伴いシャドーページテーブルを修正することができる。加えて、シャドーPT1720B及び1722Bは、タスクPT1720B及び1722Bに対応する。
4M PTEは単一レベルのマッピングであり、ここでPDは、変換プロセスにおいてPTを使用せずに直接物理メモリの4メガバイトページを指す。タスク及びシャドーの4M PTEのエントリは、両方とも同じ物理アドレス空間を指す。シャドー4M PTEに示されているDSMAフィールドは、R/Wと、単一のCPUが書込み権限を有することを保証するように操作されている存在ビットとを含む。
タスクPDEのエントリ及びシャドーPDEのエントリは、対応するタスク及びシャドーPTを指す。タスクPT及びシャドーPT内の対応するPTEは、両方とも物理メモリの同じ4KBページを指す。書込みアクセスを制御するためにシャドーPTEは、DSMAフィールドを含む。
論理的には、シャドーページテーブル構造の作成は、図7におけるように変換構造内のあらゆるPDE及びPTEを識別し、図8におけるようにシャドーテーブル構造を作成することであると考えることができる。オペレーティングシステムが図7におけるテーブル構造の内の1つを修正するときは常に、図8において対応する変更を加えなければならない。シャドー変換構造は一斉に作成する必要はない。オペレーティングシステムがタスクをセットアップすると、タスクPD及びタスクPT内にタスクの現在アクセス可能なアドレス空間の完全なマップがセットアップされる。次いで、タスクCR3の値がロードされ、タスク実行が始まる。必要最低限の手法は、必要に応じてシャドーページテーブル構造を構築することである。タスクCR3の値のロードとタスクの最初の命令の実行との間に、シャドーPDを指すCR3でシャドーPDを作成することができる。全てのエントリで、DSMAフィールドが存在しないように設定することができる。シャドー変換テーブル内に未だマッピングされていないメモリページへのアクセスはページフォルトを引き起こす。各ページフォルトに対して、シャドー変換テーブルを拡張し、このフォルトを扱うことができる。
時間が経過すると、シャドー変換テーブルは、タスクが参照しているメモリをカバーするよう拡張する。これは、定義上は当該時間期間におけるこのタスクのワーキングセットである。オペレーティングシステムがこのCPUに割り当てられたタスクをスワップするときには、CR3の値は、新しいタスクページング構造を指すように変更される。シャドーページング構造を分解し、新しいタスクページング構造を反映する新しいシャドーページング構造が作成される。このプロセスに適用することができる最適化には以下のものがある。
・タスク間で等しいシャドーページング構造部分を保持する。例えば、オペレーティングシステムのアドレス空間の一部分は、全てのタスクにわたって等しくマッピングされる。
・最初にPTが参照されるときには、シャドーPT内にPTEエントリのグループ(最大でPT全体)を読み込む。これは、シャドーページング構造のセクションを推論的に作成する時間に対するページフォルトオーバーヘッドをトレードオフしている。
・経時的にシャドーページング構造をトリミングする。タスク参照の局所性は時間と共に変化し、ページング構造内に多くの未使用ページを残す。ある程度小さいアクティブなシャドーページング構造を有することによって、複数のCPUにわたって図10のDSMA状態を維持するために用いるプロセスの性能を改善することができる。更に、小さいシャドーページング構造は、タスクスワップ上で迅速に分解することができる。
・タスクを実行する間にこのタスクに対するアクティブワーキングセットを追跡することができる。プロセッサ上でタスクがもはや実行されていない間にワーキングセットが記憶される。プロセッサ上にタスクがスワップされて戻されると、このタスクに対するワーキングセットを表すシャドーページング構造を読み込み、シャドーページング構造を初期化するのに必要なページフォルトシーケンスを回避することができる。
多段ページテーブルの使用
図18には多段ページテーブルメモリ管理構造1800が示されている。ゲスト仮想アドレスは以下のステップによって変換される。
・ゲストCR3(gCR3)1810レジスタはゲストページディレクトリ(gPD)1820のベースを指す。
・ゲスト仮想アドレスからのゲストPDインデックス(gPDIndex)はゲストPDE(gPDE)1825を識別する。
・gPDE1825はゲストページテーブル(gPT)1830のベースを指す。
・ゲスト仮想アドレスからのゲストPTインデックス(gPTIndex)はゲストPTE(gPTE)1835を識別する。
・gPTE1835は物理メモリのゲストページ1840のベース(gPageBase)を指す。
・完全なゲスト物理アドレスは、gPageBaseにゲスト仮想アドレスからのgPageIndexを加えたものである。これをホスト仮想アドレスとして用いる。
・ホストCR3(hCR3)1850レジスタはホストページディレクトリ(hPD)1860のベースを指す。
・ホスト仮想アドレスからのホストPDインデックス(hPDIndex)はホストPDE(hPDE)1865を識別する。
・hPDE1865はホストページテーブル(hPT)1870のベースを指す。
・ホスト仮想アドレスからのホストPTインデックス(hPTIndex)はホスト(hPTE)1875を識別する。
・hPTE1875は物理メモリのホストページ1880のベース(hPageBase)を指す。
・完全なホスト物理アドレスは、hPageBaseにゲスト/ホスト仮想アドレスからのgPageIndexを加えたものである。
この構造はシステム内のあらゆるプロセッサにおいて存在するので、ゲスト仮想アドレスからホスト物理アドレスへの固有のアドレス変換経路が容易に作成され、変換構造のホスト部分のみを操作することができる。SMPゲストオペレーティングシステムにおける各プロセッサは、DSMA権限を調整するのに用いられているホスト変換構造によってゲスト変換構造を直接操作することが許容される。
図19は、多段ページテーブルを用いて構成された図7からの仮想アドレス変換を示している。図示しているものは、4プロセッサSMPシステム上で同時に実行されている4つのタスクに対する単一の物理メモリページについての仮想アドレスから物理アドレスへの全てのマッピングである。仮想アドレスから物理アドレスへの変換に対して2つのフェーズが存在する。フェーズ1では、ゲスト仮想アドレスをゲスト物理アドレスに変換する。フェーズ2では、ゲスト物理アドレスをホスト物理アドレスに変換する。図19は、単一の物理ページに対する全てのマッピングを表しているので、ただ一つのホスト物理アドレスが存在する。ゲストオペレーティングシステムが用いているページテーブル構造は、図7の構造から修正されていない。ゲストオペレーティングシステムのページテーブルは、どのようにも修正されていない。システム内の各プロセッサに対してホスト変換テーブル構造の1つのコピーが存在する。ホスト変換構造は、1対1のマッピングであり、あらゆる可能なゲスト物理アドレスに対して1つのホスト物理アドレスがある。ホスト変換テーブルは論理的に等しいが固有である。図19は、ホスト物理アドレス1980への7つの固有のマッピングを表している。全ての7つのマッピングは、共通のゲスト物理メモリページ780及び共通のホスト物理メモリページ1980を共有するが、マッピングのいずれもがホスト変換テーブル内の共通要素を共有しない。ホスト変換側の固有性により、ページアクセス権限を操作することが可能になる。
図18に示すように、ゲスト仮想アドレスは3つのインデックス(gPDIndex、gPTIndex、及びgPageIndex)に分割される。gPDIndex及びgPTIndexは、gPDE及びgPTEによってそれぞれ固有に識別される。従って、図19を参照すると、各タスクに対してマッピングしたゲスト仮想アドレス空間は以下のように記述することができる。
・タスク521に対するゲストマッピング1=PDE531 PTE561
・タスク522に対するゲストマッピング2=PDE531 PTE561
・タスク523に対するゲストマッピング3=PDE541 PTE561
・タスク523に対するゲストマッピング4=PDE542 PTE571
・タスク523に対するゲストマッピング5=PDE542 PTE572
・タスク524に対するゲストマッピング6=PDE551 PTE571
・タスク524に対するゲストマッピング7=PDE551 PTE572
上記は6つの固有ゲスト仮想アドレスを示しており(タスク521及びタスク522は同じ仮想アドレス空間を有する)、全てを1つのゲスト物理ページ580にマッピングする。ゲスト物理ページ580は、4つの定義済みマッピング、すなわちシステム内の各プロセッサに対して1つの定義済みマッピングを有する。全ての4つのマッピングは同じホスト物理メモリページ1980に変換する。ホスト物理アドレス空間は以下のように記述することができる。
・CPU501上のホストマッピング1=hPDE1935A hPTE1975A
・CPU502上のホストマッピング2=hPDE1935B hPTE1975B
・CPU503上のホストマッピング3=hPDE1935C hPTE1975C
・CPU504上のホストマッピング4=hPDE1935D hPTE1975D
ゲスト仮想アドレス変換は、タスクに特定であるゲスト変換テーブルに基づく。ゲストオペレーティングシステムが1つのCPUから別のCPUに移動すると、ゲスト変換テーブルはそのタスクと共に移動する。ゲスト仮想アドレスからゲスト物理アドレスへのマッピングはタスク特有のものである。あらゆるCPUからのメモリページへのアクセス権はアクセスを決定論的にするように制御されているからこそ、ホスト変換テーブルはCPU特有のものである。ホスト変換テーブルの集合は、ただ1つのCPUが単一のホスト仮想ページ1980への書込みアクセスを有することを保証する。ゲストオペレーティングシステムがCPU501からCPU524までのタスク521を再スケジュール化するときに、変更されなかったホスト変換テーブルは当該機能を提供することができる。
全てのCPUに対するホスト変換テーブルは、ホスト物理メモリのあらゆる可能なページをマッピングするように構成することができる。ゲストオペレーティングシステムは、タスクを許可されたゲスト物理アドレス空間に制限し、これによって利用可能なホスト物理アドレス空間が制限される。ホスト変換テーブルは、1度だけ作成する必要がある。ホスト変換テーブルのR/W及び存在ビットを修正することによって、ゲスト変換テーブルに加えられたいかなる修正も追跡することなく決定論的な共有メモリアクセスを保証することができる。
連続再生フォルトトレラントコンピュータシステムの幾つかの実装では、PFイベントのマイクロジャーナル処理が生じる場合がある。更に、非同期シャドー更新は、マイクロジャーナルエントリと組み合わせることができる。
通常、ジャーナルエントリは、図13に示すようにあらゆるプロセッサ対して値のセットを含む。ジャーナルファイル内のステップは、ジャーナルエントリが作成された時点でのコンピュータ環境115における各プロセッサの状態を記述している。一般に、プロセッサがページアクセスにおいてフォルトを起こすと、以下のステップをとる。
1.プロセッサは強制的にロックステップ管理部240に入れられる。
2.フォルトを起こしているプロセッサに必要なアクセスを与えるようにプロセッサのページアクセス権限が調節される。
3.プロセッサがロックステップ管理部240に入る前に各プロセッサの状態を記述するジャーナルエントリが作成される。
4.プロセッサは、修正したページアクセス権限で作動を継続することが許可される。
多くの場合、要求を満たすために利用可能なプロセッサのサブセットの権限だけが修正される。一般に、他のプロセッサの作動への妨害は性能損失を意味する。影響を受けなかったプロセッサの非割り込み作動を可能にする修正制御フローは、以下の通りである。
1.要求されたページアクセスを認可することで影響を受けるプロセッサを判別する。
2.影響を受けるプロセッサをロックステップ管理部240に強制的に入れる。
3.影響を受けるプロセッサのページアクセス権限を調節し、フォルトを起こしているプロセッサに必要なアクセスを与える。
4.影響を受けるプロセッサのみを示すマイクロジャーナルエントリを作成する。時間経過は全てのプロセッサに可視であるので、一般にマイクロジャーナルエントリ上では時間挿入が許可されない点に留意されたい。また、現在ロックステップ管理部240中にあるプロセッサに対して入力消費が許可されるだけである点に留意されたい。
5.プロセッサは、修正したページアクセス権限によって作動を継続することが許可される。
マイクロジャーナルエントリ中にページング構造に行われている更新は、コンピュータ環境115内のプロセッサの一部に対して非同期である。幾つかのマイクロジャーナルエントリは、順次作成することができる。マイクロジャーナルエントリ間の対話の複雑さは、システム110内のロックステップ管理部240によって追跡しなければならない。完全なジャーナルエントリは、一般に、マイクロジャーナルエントリ間の対話の知識ベースを消去することが必要とされる。
マイクロジャーナルエントリを用いる簡単な実施例は、タスクがロードされるときにメモリページを取得する、プロセッサC上で実行される新しいタスクである。プロセッサA及びBは、プロセッサC上で実行されるタスクと重複しない。プロセッサCによるページフォルトは、プロセッサA及びBのアドレス空間に対して影響を与えず、従って、プロセッサA及びBは、プロセッサCからの要求を認可するのに妨害を受ける必要はない。プロセッサA及びB上のタスクが共通プロセスからのスレッドである場合には、プロセッサが共通アドレス空間を共有するので、プロセッサAによる要求はプロセッサBのアドレス空間に影響を与える。しかしながら、プロセッサCは影響を受けない。従って、プロセッサCについてのマイクロジャーナルエントリにより、プロセッサA及びBに影響を及ぼすのが回避され、プロセッサA及びBについてのマイクロジャーナルエントリによりプロセッサCに影響を与えるのが回避される。
図20〜24は、Intel(登録商標)又はAMDによるx86プロセッサへの64ビット拡張のために4kページを用いる仮想メモリ変換構造を例示している。図20は仮想メモリ変換プロセスを示している。
図20を参照すると、例示的な変換プロセス2000は、4つのテーブル2030、2040、2050、及び2060を用いた仮想アドレス2010から物理アドレスへの変換を示している。命令は、48ビットの仮想アドレス2010を用いてメモリへの参照を行う。レジスタCR3 2020は、ページマップレベル4テーブル2030のベースアドレスを含む。仮想アドレス2010のビット<47:39>2012は、ページマップレベル4テーブルのベースからの9ビットのオフセットを提供する。このメモリ位置の内容をページマップレベル4エントリ(PML4E)2035と呼ばれ、これはページディレクトリポインタテーブル2040におけるベースアドレスを提供する。仮想アドレス2010のビット<38:30>2014は、ページディレクトリポインタテーブルのベースからの9ビットのオフセットを提供する。このメモリ位置の内容は、ページディレクトリポインタエントリ(PDPE)2045と呼ばれ、これはページディレクトリテーブル2050におけるベースアドレスを提供する。仮想アドレス2010のビット<29:21>2015は、ページディレクトリテーブルのベースからの9ビットのオフセットを提供する。このメモリ位置の内容は、ページディレクトリエントリ(PDE)2055と呼ばれ、これは、ページテーブル2060におけるベースアドレスを提供する。仮想アドレス2010のビット<20:12>2016は、ページテーブルのベースからの9ビットのオフセットを提供する。このメモリ位置の内容は、ページテーブルエントリ(PTE)2065と呼ばれ、これは参照している物理メモリページにおけるベースアドレスを提供する。仮想アドレス2010のビット<11:00>2017は、物理ページ2070から参照している物理メモリ位置2075への12ビットのオフセットを提供する。
図21〜24は、ページマップレベル4エントリ2100、ページディレクトリポインタエントリ2200、ページディレクトリエントリ2300、及びページテーブルエントリ2400のフォーマットをそれぞれ示している。これらのテーブルにおいて特に重要なビットは、ビット<2:0>2110である。ビット0は存在(P)フラグ2112であり、一般にこれはベースアドレス(ビット<51:12>)2120、2220、2320、又は2420によりそれぞれ指されている構造がメモリ内に存在しており、ディスクにページアウトされていないことを示す。ビット1は、エントリが指す構造への読出し/書込み(RAV)権限2114を示す。ビット2は、エントリが指す構造にユーザ又はシステム(U/S)アクセス2116が許可されているか否かを示す。
本技術の実装は、方法又はプロセス、システム又は装置、或いはコンピュータアクセス可能な媒体上のコンピュータソフトウェアを含むことができる。添付の請求項の範囲内にある他の実装が存在する。
フォルトトレラント対称型マルチプロセッシングコンピュータシステムのブロック図である。 対称型マルチプロセッシングコンピュータシステムにおけるサーバのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおけるページテーブルエントリのフォーマットのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおけるページテーブルエントリのフォーマットのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムの観点からの仮想メモリから物理メモリへの構成のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける2つのプロセッサ間の対話のタイムラインのフロー図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおいてプロセッサが維持するシャドーページテーブル構造における決定論的共有メモリアクセスについての状態遷移図である。 対称型マルチプロセッシングコンピュータシステムにおけるサーバのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける2つのプロセッサ間の対話のタイムラインのフロー図である。 図12に示すフォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける2つのプロセッサ間の対話のシーケンスについてのジャーナルストリームの図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける2つのプロセッサ間の対話のタイムラインのフロー図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおける仮想アドレスから物理アドレスへの変換の実施例のブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおけるページテーブルエントリのフォーマットのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおけるページテーブルエントリのフォーマットのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおけるページテーブルエントリのフォーマットのブロック図である。 フォルトトレラント対称型マルチプロセッシングコンピュータシステムにおけるページテーブルエントリのフォーマットのブロック図である。
符号の説明
115、165 コンピュータ環境
120、170 I/O環境
130、180 ディスク
150 ネットワーク

Claims (32)

  1. 対称型マルチプロセッシングコンピュータシステムを用いてフォルトトレラントコンピュータシステムを実装する方法であって、該方法は、
    前記対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられた仮想ページング構造を作成して、前記プロセッサにおける共有メモリへの物理ページアクセス権限を反映し、
    共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造内で反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する、
    ことによって前記対称型マルチプロセッシングコンピュータシステムの少なくとも1つを制御する段階を含む、
    ことを特徴とする方法。
  2. 前記共有メモリへのアクセスを制御する段階が、
    プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
    前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
    前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
    を含む、
    ことを特徴とする請求項1に記載の方法。
  3. 前記プロセッサは、プロセッサ上で実行するタスクを含む、
    ことを特徴とする請求項1に記載の方法。
  4. 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
    ことを特徴とする請求項1に記載の方法。
  5. 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
    ことを特徴とする請求項1に記載の方法。
  6. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
    ことを特徴とする請求項1に記載の方法。
  7. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
    ことを特徴とする請求項1に記載の方法。
  8. 前記フォルトトレラントコンピュータシステムは、命令ロックステップで作動する2つの対称型マルチプロセッシングコンピュータシステムを備えた複写フォルトトレラントコンピュータシステムであり、前記各対称型マルチプロセッシングコンピュータシステムが、共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御し、前記対称型マルチプロセッシングコンピュータシステムのプロセッサ間で決定論的共有メモリアクセスを調整する、
    ことを特徴とする請求項1に記載の方法。
  9. 前記対称型マルチプロセッシングコンピュータシステムが第1の対称型マルチプロセッシングコンピュータシステムを備え、
    前記フォルトトレラントコンピュータシステムが、前記第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを備える連続再生フォルトトレラントコンピュータシステムであり、
    前記方法が更に、
    前記第1の対称型マルチプロセッシングコンピュータシステムに命令ストリームを処理させ、前記第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成させる段階と、
    前記第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときに、前記第2の対称型マルチプロセッシングコンピュータシステムを用いて前記ジャーナルを処理し、前記第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動するようにする段階と、
    前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ且つ前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映する仮想ページング構造を、前記第2の対称型マルチプロセッシングコンピュータシステムに作成させる段階と、
    共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造内に反映された物理ページアクセス権限に基づいて前記第2の対称型マルチプロセッシングコンピュータシステムに共有メモリへのアクセスを制御させて、前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する段階と、
    を更に含む、
    ことを特徴とする請求項1に記載の方法。
  10. コンピュータ読取り可能媒体上に記憶されたコンピュータソフトウェアであって
    ォルトトレラントコンピュータシステムの少なくとも1つの対称型マルチプロセッシングコンピュータシステムを、
    前記対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ且つ該プロセッサに対する共有メモリへの物理ページアクセス権限を反映する仮想ページング構造を作成する手段と、
    共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造に反映された前記物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する手段と、
    を前記コンピュータに実現させるように制御する命令を含むコンピュータソフトウェア。
  11. 前記共有メモリへのアクセスを制御する段階が、
    プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
    前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
    前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
    を含む、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  12. 前記プロセッサは、プロセッサ上で実行するタスクを含む、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  13. 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  14. 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  15. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  16. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  17. 前記フォルトトレラントコンピュータシステムは、命令ロックステップで同時に作動する2つの対称型マルチプロセッシングコンピュータシステムを備えた複写フォルトトレラントコンピュータシステムであり、前記各対称型マルチプロセッシングコンピュータシステムが、共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御し、前記対称型マルチプロセッシングコンピュータシステムのプロセッサ間で決定論的共有メモリアクセスを調整する、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  18. 前記対称型マルチプロセッシングコンピュータシステムが第1の対称型マルチプロセッシングコンピュータシステムを備え、
    前記フォルトトレラントコンピュータシステムが、前記第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを備える連続再生フォルトトレラントコンピュータシステムであり、
    前記方法が更に、
    前記第1の対称型マルチプロセッシングコンピュータシステムに命令ストリームを処理させ、前記第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成させる段階と、
    前記第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときに、前記第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動するように前記第2の対称型マルチプロセッシングコンピュータシステムを用いて前記ジャーナルを処理する段階と、
    前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ且つ前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映する仮想ページング構造を、前記第2の対称型マルチプロセッシングコンピュータシステムに作成させる段階と、
    共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造内に反映された物理ページアクセス権限に基づいて前記第2の対称型マルチプロセッシングコンピュータシステムに共有メモリへのアクセスを制御させて、前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する段階と、
    を更に含む、
    ことを特徴とする請求項10に記載のコンピュータソフトウェア。
  19. 命令ロックステップで同時に作動する2つの対称型マルチプロセッシングコンピュータシステムを備えた複写フォルトトレラントコンピュータシステムであって、
    前記各対称型マルチプロセッシングコンピュータシステムが、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステムのプロセッサ間で決定論的共有メモリアクセスを調整し、
    前記仮想ページング構造が、前記対称型マルチプロセッシングコンピュータシステムの内の一方におけるプロセッサと関連付けられ、前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映
    共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサが停止する
    ことを特徴とする複写フォルトトレラントコンピュータシステム。
  20. 前記共有メモリへのアクセスを制御する段階が、
    プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
    前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
    前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
    を含む、
    ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。
  21. 前記プロセッサは、プロセッサ上で実行するタスクを含む、
    ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。
  22. 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
    ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。
  23. 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
    ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。
  24. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
    ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。
  25. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
    ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。
  26. 命令ロックステップで作動する第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを備えた連続再生フォルトトレラントコンピュータシステムであって、
    前記各対称型マルチプロセッシングコンピュータシステムが、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整し、
    前記第1の対称型マルチプロセッシングコンピュータシステムが命令ストリームを処理して、前記第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成し、
    前記第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときに、前記第2の対称型マルチプロセッシングコンピュータシステムを用いて前記ジャーナルを処理し、前記第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動し、
    前記仮想ページング構造が前記対称型マルチプロセッシングコンピュータシステムの各々におけるプロセッサと関連付けられ、前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映
    共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサが停止する
    ことを特徴とする連続再生フォルトトレラントコンピュータシステム。
  27. 前記共有メモリへのアクセスを制御する段階が、
    プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
    前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
    前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
    を含む、
    ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
  28. 前記プロセッサは、プロセッサ上で実行するタスクを含む、
    ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
  29. 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
    ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
  30. 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
    ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
  31. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
    ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
  32. 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
    ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
JP2008513591A 2005-05-24 2006-05-23 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム Active JP5261661B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US68380105P 2005-05-24 2005-05-24
US60/683,801 2005-05-24
PCT/US2006/019754 WO2006127613A2 (en) 2005-05-24 2006-05-23 Symmetric multiprocessor fault tolerant computer system

Publications (2)

Publication Number Publication Date
JP2008542878A JP2008542878A (ja) 2008-11-27
JP5261661B2 true JP5261661B2 (ja) 2013-08-14

Family

ID=37452697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008513591A Active JP5261661B2 (ja) 2005-05-24 2006-05-23 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム

Country Status (4)

Country Link
US (1) US7877552B2 (ja)
EP (1) EP1883865A4 (ja)
JP (1) JP5261661B2 (ja)
WO (1) WO2006127613A2 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US7580760B2 (en) * 2006-03-16 2009-08-25 International Business Machines Corporation Sampling messages from a data feed
US8429708B1 (en) * 2006-06-23 2013-04-23 Sanjay Tandon Method and system for assessing cumulative access entitlements of an entity in a system
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
JP4908367B2 (ja) * 2007-09-28 2012-04-04 株式会社日立ソリューションズ 情報処理装置
US8352705B2 (en) 2008-01-15 2013-01-08 Vmware, Inc. Large-page optimization in virtual memory paging systems
US20090276654A1 (en) * 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP4632180B2 (ja) * 2008-10-15 2011-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9164812B2 (en) * 2009-06-16 2015-10-20 International Business Machines Corporation Method and system to manage memory accesses from multithread programs on multiprocessor systems
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
JP5433349B2 (ja) * 2009-08-27 2014-03-05 ルネサスエレクトロニクス株式会社 データプロセッサ
JP2011090553A (ja) * 2009-10-23 2011-05-06 Nec System Technologies Ltd 情報処理装置、同期制御方法およびプログラム
US8819115B2 (en) * 2009-12-23 2014-08-26 Citrix Systems, Inc. Systems and methods for sampling management across multiple cores for HTML injection
US9465745B2 (en) * 2010-04-09 2016-10-11 Seagate Technology, Llc Managing access commands by multiple level caching
US8694647B2 (en) 2011-03-18 2014-04-08 Microsoft Corporation Read-only operations processing in a paxos replication system
US8943296B2 (en) 2011-04-28 2015-01-27 Vmware, Inc. Virtual address mapping using rule based aliasing to achieve fine grained page translation
US9767039B2 (en) * 2011-07-18 2017-09-19 Vmware, Inc. Increasing granularity of dirty bit information in hardware assisted memory management systems
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US9516094B2 (en) * 2012-05-17 2016-12-06 Microsoft Technology Licensing, Llc Event-responsive download of portions of streamed applications
US9342358B2 (en) 2012-09-14 2016-05-17 General Electric Company System and method for synchronizing processor instruction execution
US9256426B2 (en) 2012-09-14 2016-02-09 General Electric Company Controlling total number of instructions executed to a desired number after iterations of monitoring for successively less number of instructions until a predetermined time period elapse
US9069658B2 (en) * 2012-12-10 2015-06-30 Google Inc. Using a virtual to physical map for direct user space communication with a data storage device
JP6552512B2 (ja) 2013-10-27 2019-07-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 入出力メモリマップユニット及びノースブリッジ
US10341245B2 (en) * 2014-03-24 2019-07-02 Vmware, Inc. Bursty data transmission in a congestion controlled network
CA2967748A1 (en) 2014-11-13 2016-05-19 Virtual Software Systems, Inc. System for cross-host, multi-thread session alignment
CN104598170B (zh) * 2015-01-30 2017-12-05 华为技术有限公司 确定读写路径的方法和装置
CN104615511B (zh) * 2015-02-05 2018-01-26 中国工商银行股份有限公司 一种基于双中心的主机批量恢复处理方法及装置
CN105302649A (zh) * 2015-12-03 2016-02-03 中国联合网络通信集团有限公司 一种容灾备份方法和系统
US10599582B2 (en) * 2016-09-26 2020-03-24 Intel Corporation Using a virtual to virtual address table for memory compression
US9858151B1 (en) * 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
US10810137B2 (en) * 2017-02-27 2020-10-20 Red Hat, Inc. Physical address randomization for secure encrypted memory
US10642751B2 (en) * 2017-07-20 2020-05-05 Vmware, Inc. Hardware-assisted guest address space scanning in a virtualized computing system
JP6508382B1 (ja) * 2018-03-26 2019-05-08 日本電気株式会社 情報処理装置、情報処理方法、プログラム
JP7035787B2 (ja) * 2018-05-14 2022-03-15 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN110928737B (zh) * 2018-09-19 2021-05-18 华为技术有限公司 监控样本进程的内存访问行为的方法和装置
DE112019006898T5 (de) 2019-02-22 2021-11-25 Intel Corporation Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
CN113220541B (zh) * 2021-06-10 2021-09-07 北京全路通信信号研究设计院集团有限公司 一种多核处理器的内存巡检方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4758951A (en) * 1985-04-09 1988-07-19 Tektronix, Inc. Method for translating virtual addresses into real addresses
US6279119B1 (en) * 1997-11-14 2001-08-21 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6499048B1 (en) * 1998-06-30 2002-12-24 Sun Microsystems, Inc. Control of multiple computer processes using a mutual exclusion primitive ordering mechanism
US6256753B1 (en) * 1998-06-30 2001-07-03 Sun Microsystems, Inc. Bus error handling in a computer system
US6247141B1 (en) * 1998-09-24 2001-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Protocol for providing replicated servers in a client-server system
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US7080375B2 (en) * 2000-12-30 2006-07-18 Emc Corporation/Data General Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
US7310721B2 (en) * 2003-10-30 2007-12-18 Microsoft Corporation Shadow page tables for address translation control
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms

Also Published As

Publication number Publication date
JP2008542878A (ja) 2008-11-27
WO2006127613A2 (en) 2006-11-30
EP1883865A2 (en) 2008-02-06
US20070214340A1 (en) 2007-09-13
WO2006127613A3 (en) 2008-01-31
EP1883865A4 (en) 2010-12-15
US7877552B2 (en) 2011-01-25

Similar Documents

Publication Publication Date Title
JP5261661B2 (ja) 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム
Achermann et al. Mitosis: Transparently self-replicating page-tables for large-memory machines
JP7474766B2 (ja) 高信頼性フォールトトレラントコンピュータアーキテクチャ
Giampapa et al. Experiences with a lightweight supercomputer kernel: Lessons learned from Blue Gene's CNK
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
KR101063604B1 (ko) 멀티프로세서 시스템 상에서 멀티스레드 프로그램으로부터의 메모리 액세스를 관리하기 위한 방법 및 시스템
US9164812B2 (en) Method and system to manage memory accesses from multithread programs on multiprocessor systems
US20120054409A1 (en) Application triggered state migration via hypervisor
US8769350B1 (en) Multi-writer in-memory non-copying database (MIND) system and method
US20080288238A1 (en) Computing System with Guest Code Support of Transactional Memory
Litz et al. SI-TM: Reducing transactional memory abort rates through snapshot isolation
Zhu et al. Optimizing the performance of virtual machine synchronization for fault tolerance
JP2006107494A (ja) 仮想メモリを利用したトランザクショナルメモリ実行
JPH0522259B2 (ja)
TWI540510B (zh) 用於藉由程式對警告追蹤中斷設備之使用之電腦程式產品、電腦系統及其方法
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US8458438B2 (en) System, method and computer program product for providing quiesce filtering for shared memory
Panwar et al. Fast local page-tables for virtualized numa servers with vmitosis
CN102117224B (zh) 一种面向多核处理器的操作系统噪声控制方法
US7490206B2 (en) Method and structure for low memory relocation for dynamic memory reconfiguration
Pool et al. Relaxed Determinism: Making Redundant Execution on Multiprocessors Practical.
JP5063131B2 (ja) 別のプロセスのプロセス・ローカル・ストレージにアクセスする方法、装置、コンピュータ・プログラム、およびコンピュータ実装方法
US20070239972A1 (en) Processing internal timestamp counter instructions in reference to external counter
Dell
Lee et al. LightPC: hardware and software co-design for energy-efficient full system persistence

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120625

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120920

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120927

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121025

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121101

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130218

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20130321

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130403

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5261661

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250