JP5261661B2 - 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム - Google Patents
対称型マルチプロセッサ・フォルトトレラントコンピュータシステム Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 58
- 238000013519 translation Methods 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 23
- 230000026676 system process Effects 0.000 claims description 2
- 230000014616 translation Effects 0.000 description 60
- 241001208007 Procas Species 0.000 description 44
- 238000013507 mapping Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 27
- 238000006243 chemical reaction Methods 0.000 description 24
- 238000007726 management method Methods 0.000 description 21
- 230000007704 transition Effects 0.000 description 19
- 230000003993 interaction Effects 0.000 description 16
- 238000013475 authorization Methods 0.000 description 11
- 230000010076 replication Effects 0.000 description 10
- 230000006658 host protein synthesis Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- IUGDILGOLSSKNE-UHFFFAOYSA-N 1,1,1-trichloro-2,2-bis(4-hydroxyphenyl)ethane Chemical compound C1=CC(O)=CC=C1C(C(Cl)(Cl)Cl)C1=CC=C(O)C=C1 IUGDILGOLSSKNE-UHFFFAOYSA-N 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1691—Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2097—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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/2038—Error 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号の利益を主張し、該出願は引用により組み込まれる。
対称型マルチプロセッサ(SMP)フォルトトレラント及び/又はディザスタトレラントコンピュータシステム(総称的に「フォルトトレラントコンピュータシステム」)を生成するための技術を説明する。複写を用いる例示的なSMPフォルトトレラントコンピュータシステムを説明し、同様に連続再生を用いる別の例示的なSMPフォルトトレラントコンピュータを説明する。
図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は、同じ初期状態から始動し、同じ入力データに対して操作して同じ出力応答を生成する命令ロックステップで動作する。
1)全てのプロセッサに実行すべき作業の最大分担がロードされる。
2)全てのプロセッサは、排他的書込みアクセスを保証するページングテーブルのシャドーセット上で実行されている。
ステップ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−アクセス変化なし。
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から遷移する。
1)プロセッサはどのような非同期I/Oデバイスにも直接アクセスしない。
2)非同期割り込みがない。
3)時間挿入は、タイマ割り込みによってではなく、プロセッサ命令ストリームに対して行われる。
4)プロセッサがメモリに書込み中である場合には、メモリへのアクセスが排他的アクセスに制限される。
5)メモリアクセスポリシーの変更は、全ての影響を受けるプロセッサが機能停止されたときにのみ行われる。
6)プロセッサは、メモリアクセストラップ時又は作業分担の完了時(共に同期イベント)にのみ機能停止される。
7)メモリポリシーを調整しているロックステップ管理部240は、制御中のメモリ構造への無制限アクセスを有する環境で作動する。
・I/Oデバイスへのアクセス
・システム制御レジスタ(タイムスタンプカウンタ、とりわけCR3)へのアクセス
・性能カウンタ(分担)へのアクセス
・メモリ管理構造へのアクセス
である。
前述のように、フォルトトレラントシステムは、連続再生を用いて実装することができる。連続再生フォルトトレラントシステムの利点は、分担の調整を必要とせずに、ページへのアクセス待機をプロセッサに負わせる機能停止時間を短縮することができる点である。一般に、プロセッサが機能停止するときには常に、潜在的なシステム性能が失われている。最大待機時間を抑制するために分担を小さくすることができるが、分担を小さくし過ぎるとロックステップ管理部240のオーバーヘッドによりシステム性能が制限される。分担調整の複雑さを回避するために、連続再生では、コンピュータ環境115が、待機ではなくメモリアクセス変化を調整するためのプロセッサ間割り込みを用いることができる。プロセッサ間割り込み(IPI)は、受信するプロセッサの命令ストリームに対して非同期であり、従って、複写フォルトトレラントシステムにおいて同期化ロジックなしでは用いることができない。しかしながら、再生システムでは、目標は元の結果を再現する(命令ストリームの順序付けを再現する)ことである。再生中に再現が忠実に行われる限り、非決定論的プロセスを用いて元の結果を順序付けすることができる。一般に、連続再生システムは、プロセッサのセット(プロセッサのマスターセット)上で命令ストリームの集合を実行し、初期のプロセッサ及びメモリ状態から始まり入力ストリームを消費する。これは、新しいプロセッサ及びメモリ状態、出力ストリーム、並びに様々な命令ストリーム間の対話を示すジャーナルエントリを生成する。このジャーナルストリームを用いて、同じプロセッサ状態、メモリ状態、及び入力ストリームで始まるプロセッサの1つ又はそれ以上の第2のセット(これらの各々はプロセッサのスレーブセットである)を調整することができる。ジャーナルストリームの指示に基づいて、このプロセッサの第2のセットは、同じ終了時プロセッサ状態、メモリ状態、及び出力ストリームを生成する。この整合はスレーブプロセッサによって検証することができる。
ステップ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が無効にされる。
ステップ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読出し/書込み(排他的)を与える。
ここで仮想変換構造についての更なる議論を提示する。仮想アドレス変換をサポートするハードウェアメカニズムは、図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にある。
式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の仮想アドレスである。
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]
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)である。
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)]である。
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)]である。
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)として現れなければならない点に留意されたい。シャドーページテーブルは、元の変換構造内に含まれていた全てのページをマッピングしなければならない。
・タスク間で等しいシャドーページング構造部分を保持する。例えば、オペレーティングシステムのアドレス空間の一部分は、全てのタスクにわたって等しくマッピングされる。
・最初に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を加えたものである。
・タスク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
・CPU501上のホストマッピング1=hPDE1935A hPTE1975A
・CPU502上のホストマッピング2=hPDE1935B hPTE1975B
・CPU503上のホストマッピング3=hPDE1935C hPTE1975C
・CPU504上のホストマッピング4=hPDE1935D hPTE1975D
1.プロセッサは強制的にロックステップ管理部240に入れられる。
2.フォルトを起こしているプロセッサに必要なアクセスを与えるようにプロセッサのページアクセス権限が調節される。
3.プロセッサがロックステップ管理部240に入る前に各プロセッサの状態を記述するジャーナルエントリが作成される。
4.プロセッサは、修正したページアクセス権限で作動を継続することが許可される。
1.要求されたページアクセスを認可することで影響を受けるプロセッサを判別する。
2.影響を受けるプロセッサをロックステップ管理部240に強制的に入れる。
3.影響を受けるプロセッサのページアクセス権限を調節し、フォルトを起こしているプロセッサに必要なアクセスを与える。
4.影響を受けるプロセッサのみを示すマイクロジャーナルエントリを作成する。時間経過は全てのプロセッサに可視であるので、一般にマイクロジャーナルエントリ上では時間挿入が許可されない点に留意されたい。また、現在ロックステップ管理部240中にあるプロセッサに対して入力消費が許可されるだけである点に留意されたい。
5.プロセッサは、修正したページアクセス権限によって作動を継続することが許可される。
120、170 I/O環境
130、180 ディスク
150 ネットワーク
Claims (32)
- 対称型マルチプロセッシングコンピュータシステムを用いてフォルトトレラントコンピュータシステムを実装する方法であって、該方法は、
前記対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられた仮想ページング構造を作成して、前記プロセッサにおける共有メモリへの物理ページアクセス権限を反映し、
共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造内で反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する、
ことによって前記対称型マルチプロセッシングコンピュータシステムの少なくとも1つを制御する段階を含む、
ことを特徴とする方法。 - 前記共有メモリへのアクセスを制御する段階が、
プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
を含む、
ことを特徴とする請求項1に記載の方法。 - 前記プロセッサは、プロセッサ上で実行するタスクを含む、
ことを特徴とする請求項1に記載の方法。 - 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
ことを特徴とする請求項1に記載の方法。 - 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
ことを特徴とする請求項1に記載の方法。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
ことを特徴とする請求項1に記載の方法。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
ことを特徴とする請求項1に記載の方法。 - 前記フォルトトレラントコンピュータシステムは、命令ロックステップで作動する2つの対称型マルチプロセッシングコンピュータシステムを備えた複写フォルトトレラントコンピュータシステムであり、前記各対称型マルチプロセッシングコンピュータシステムが、共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御し、前記対称型マルチプロセッシングコンピュータシステムのプロセッサ間で決定論的共有メモリアクセスを調整する、
ことを特徴とする請求項1に記載の方法。 - 前記対称型マルチプロセッシングコンピュータシステムが第1の対称型マルチプロセッシングコンピュータシステムを備え、
前記フォルトトレラントコンピュータシステムが、前記第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを備える連続再生フォルトトレラントコンピュータシステムであり、
前記方法が更に、
前記第1の対称型マルチプロセッシングコンピュータシステムに命令ストリームを処理させ、前記第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成させる段階と、
前記第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときに、前記第2の対称型マルチプロセッシングコンピュータシステムを用いて前記ジャーナルを処理し、前記第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動するようにする段階と、
前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ且つ前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映する仮想ページング構造を、前記第2の対称型マルチプロセッシングコンピュータシステムに作成させる段階と、
共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造内に反映された物理ページアクセス権限に基づいて前記第2の対称型マルチプロセッシングコンピュータシステムに共有メモリへのアクセスを制御させて、前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する段階と、
を更に含む、
ことを特徴とする請求項1に記載の方法。 - コンピュータ読取り可能媒体上に記憶されたコンピュータソフトウェアであって、
フォルトトレラントコンピュータシステムの少なくとも1つの対称型マルチプロセッシングコンピュータシステムを、
前記対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ且つ該プロセッサに対する共有メモリへの物理ページアクセス権限を反映する仮想ページング構造を作成する手段と、
共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造に反映された前記物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する手段と、
を前記コンピュータに実現させるように制御する命令を含むコンピュータソフトウェア。 - 前記共有メモリへのアクセスを制御する段階が、
プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
を含む、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 前記プロセッサは、プロセッサ上で実行するタスクを含む、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 前記フォルトトレラントコンピュータシステムは、命令ロックステップで同時に作動する2つの対称型マルチプロセッシングコンピュータシステムを備えた複写フォルトトレラントコンピュータシステムであり、前記各対称型マルチプロセッシングコンピュータシステムが、共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御し、前記対称型マルチプロセッシングコンピュータシステムのプロセッサ間で決定論的共有メモリアクセスを調整する、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 前記対称型マルチプロセッシングコンピュータシステムが第1の対称型マルチプロセッシングコンピュータシステムを備え、
前記フォルトトレラントコンピュータシステムが、前記第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを備える連続再生フォルトトレラントコンピュータシステムであり、
前記方法が更に、
前記第1の対称型マルチプロセッシングコンピュータシステムに命令ストリームを処理させ、前記第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成させる段階と、
前記第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときに、前記第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動するように前記第2の対称型マルチプロセッシングコンピュータシステムを用いて前記ジャーナルを処理する段階と、
前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサと関連付けられ且つ前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映する仮想ページング構造を、前記第2の対称型マルチプロセッシングコンピュータシステムに作成させる段階と、
共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサを停止させることによって、前記仮想ページング構造内に反映された物理ページアクセス権限に基づいて前記第2の対称型マルチプロセッシングコンピュータシステムに共有メモリへのアクセスを制御させて、前記第2の対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整する段階と、
を更に含む、
ことを特徴とする請求項10に記載のコンピュータソフトウェア。 - 命令ロックステップで同時に作動する2つの対称型マルチプロセッシングコンピュータシステムを備えた複写フォルトトレラントコンピュータシステムであって、
前記各対称型マルチプロセッシングコンピュータシステムが、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステムのプロセッサ間で決定論的共有メモリアクセスを調整し、
前記仮想ページング構造が、前記対称型マルチプロセッシングコンピュータシステムの内の一方におけるプロセッサと関連付けられ、前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映し、
共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサが停止する
ことを特徴とする複写フォルトトレラントコンピュータシステム。 - 前記共有メモリへのアクセスを制御する段階が、
プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
を含む、
ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。 - 前記プロセッサは、プロセッサ上で実行するタスクを含む、
ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。 - 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。 - 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
ことを特徴とする請求項19に記載のフォルトトレラントコンピュータシステム。 - 命令ロックステップで作動する第1の対称型マルチプロセッシングコンピュータシステム及び第2の対称型マルチプロセッシングコンピュータシステムを備えた連続再生フォルトトレラントコンピュータシステムであって、
前記各対称型マルチプロセッシングコンピュータシステムが、仮想ページング構造内に反映された物理ページアクセス権限に基づいて共有メモリへのアクセスを制御して、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサ間で決定論的共有メモリアクセスを調整し、
前記第1の対称型マルチプロセッシングコンピュータシステムが命令ストリームを処理して、前記第1の対称型マルチプロセッシングコンピュータシステムにおけるイベントシーケンスを反映するジャーナルを作成し、
前記第1の対称型マルチプロセッシングコンピュータシステムの故障が検出されたときに、前記第2の対称型マルチプロセッシングコンピュータシステムを用いて前記ジャーナルを処理し、前記第1及び第2の対称型マルチプロセッシングコンピュータシステムが命令ロックステップで作動し、
前記仮想ページング構造が前記対称型マルチプロセッシングコンピュータシステムの各々におけるプロセッサと関連付けられ、前記プロセッサに対する共有メモリへの物理ページアクセス権限を反映し、
共有メモリが前記共有メモリへのページアクセス特権を有するプロセッサによってアクセスされる間に前記共有メモリへのページアクセス特権がない前記プロセッサが停止する
ことを特徴とする連続再生フォルトトレラントコンピュータシステム。 - 前記共有メモリへのアクセスを制御する段階が、
プロセッサから共有メモリの一部分にアクセスする要求を受け取る段階と、
前記プロセッサに対する前記仮想ページング構造を、前記共有メモリの一部分にアクセスする他のプロセッサに対する仮想ページング構造と比較することによって、前記プロセッサによる許可されることになる前記共有メモリの一部分へのアクセスを決定する段階と、
前記プロセッサによる許可されることになる前記アクセスに基づいて、前記プロセッサに対する前記仮想ページング構造内の物理ページアクセス権限を更新する段階と、
を含む、
ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。 - 前記プロセッサは、プロセッサ上で実行するタスクを含む、
ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。 - 前記仮想ページング構造は、シャドーページテーブルを含み、該シャドーページテーブルは、前記対称型マルチプロセッシングコンピュータシステムのオペレーティングシステムによって作成されたページテーブルのコピーを含み、前記対称型マルチプロセッシングコンピュータシステムのプロセッサと関連付けられる、
ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。 - 前記仮想ページング構造は、仮想アドレスから物理アドレスへの変換の2つ又はそれ以上のレベルを集合的に提供する多段ページテーブルを含む、
ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前にページテーブルを作成する段階を含む、
ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。 - 仮想ページング構造を作成する段階が、前記対称型マルチプロセッシングコンピュータシステム内のプロセッサによるあらゆるタスクの実行の前に少なくともページディレクトリを作成する段階を含む、
ことを特徴とする請求項26に記載のフォルトトレラントコンピュータシステム。
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)
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)
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 |
-
2006
- 2006-05-23 JP JP2008513591A patent/JP5261661B2/ja active Active
- 2006-05-23 US US11/419,936 patent/US7877552B2/en active Active
- 2006-05-23 EP EP06770856A patent/EP1883865A4/en not_active Withdrawn
- 2006-05-23 WO PCT/US2006/019754 patent/WO2006127613A2/en active Application Filing
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 |