JP2005285121A - プロセッサ間で情報を交換する方法およびシステム - Google Patents
プロセッサ間で情報を交換する方法およびシステム Download PDFInfo
- Publication number
- JP2005285121A JP2005285121A JP2005085561A JP2005085561A JP2005285121A JP 2005285121 A JP2005285121 A JP 2005285121A JP 2005085561 A JP2005085561 A JP 2005085561A JP 2005085561 A JP2005085561 A JP 2005085561A JP 2005285121 A JP2005285121 A JP 2005285121A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- interrupt
- block
- data
- processors
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 197
- 238000012545 processing Methods 0.000 claims abstract description 12
- 230000015654 memory Effects 0.000 claims description 115
- 238000011084 recovery Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 170
- 230000009474 immediate action Effects 0.000 description 47
- 238000005192 partition Methods 0.000 description 26
- 238000012790 confirmation Methods 0.000 description 25
- 230000001360 synchronised effect Effects 0.000 description 20
- 230000006833 reintegration Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 11
- 230000001960 triggered effect Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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/1687—Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
-
- 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/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
- G06F11/1645—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
【課題】 コンピュータシステムに発生する障害から回復できる方法およびシステムを提供する。
【解決手段】 プロセッサ(PA、PB、PC)間で情報を交換する方法およびシステムである。少なくともいくつかの例示的な実施形態は、第1のプロセッサ(PA、PB、PC)によって、論理デバイス(18、20、22、24)に第1のデータを書き込み、第1のプロセッサによってユーザプログラムの処理を継続し、第2のプロセッサ(PA、PB、PC)によって、論理デバイスに第2のデータを書き込み、第2のプロセッサによってユーザプログラムの処理を継続し、すべてのプロセッサ(PA、PB、PC)が自身の各データを論理デバイスに書き込んだ後に、論理デバイス(18、20、22、24)によって、第1のデータおよび第2のデータを、第1のプロセッサおよび第2のプロセッサのそれぞれに書き込む。
【選択図】図1
【解決手段】 プロセッサ(PA、PB、PC)間で情報を交換する方法およびシステムである。少なくともいくつかの例示的な実施形態は、第1のプロセッサ(PA、PB、PC)によって、論理デバイス(18、20、22、24)に第1のデータを書き込み、第1のプロセッサによってユーザプログラムの処理を継続し、第2のプロセッサ(PA、PB、PC)によって、論理デバイスに第2のデータを書き込み、第2のプロセッサによってユーザプログラムの処理を継続し、すべてのプロセッサ(PA、PB、PC)が自身の各データを論理デバイスに書き込んだ後に、論理デバイス(18、20、22、24)によって、第1のデータおよび第2のデータを、第1のプロセッサおよび第2のプロセッサのそれぞれに書き込む。
【選択図】図1
Description
[関連出願の相互参照]
この出願は、仮出願第60/557,812号の利益を主張する。
この仮出願は、参照によって、あたかも以下に完全に再現されたかのように本明細書に援用される。
さらに、この出願は、同時に出願された出願である「Method and System of Servicing Asynchronous Interrupts in Multiple Processors Executing a User Program」という発明の名称の出願第11/042429号、「Method and System of Exchanging Information Between Processors」という発明の名称の出願第11/042985号、および「Method and System of Determining Whether a User Program Has Made a System Level Call」という発明の名称の出願第11/042981号に関連する。
この出願は、仮出願第60/557,812号の利益を主張する。
この仮出願は、参照によって、あたかも以下に完全に再現されたかのように本明細書に援用される。
さらに、この出願は、同時に出願された出願である「Method and System of Servicing Asynchronous Interrupts in Multiple Processors Executing a User Program」という発明の名称の出願第11/042429号、「Method and System of Exchanging Information Between Processors」という発明の名称の出願第11/042985号、および「Method and System of Determining Whether a User Program Has Made a System Level Call」という発明の名称の出願第11/042981号に関連する。
[背景]
少なくとも2つのタイプの計算障害が、コンピュータシステム設計者にとって問題となりうる。
第1の障害は、プロセッサの故障や回復不可能なメモリエラー等のハードウェアの故障でありうる。
第2の障害は、ハードウェアのビットの状態を変化させる宇宙線によって引き起こされうるような計算障害でありうる。
コンピュータシステムが、ハードウェアの障害後も引き続き動作したり、計算障害を検出して計算障害から回復したりするために、ある計算システムは、同じソフトウェアアプリケーションを実行する複数のプロセッサを有する。
それらプロセッサの1つが、ハードウェアの故障を経験した場合に、その計算は、その時点でもまだ適切に機能している1つまたは2つ以上のプロセッサで継続する。
複数のプロセッサの出力を比較することによって、計算障害の検出および訂正が、可能にされうる。
少なくとも2つのタイプの計算障害が、コンピュータシステム設計者にとって問題となりうる。
第1の障害は、プロセッサの故障や回復不可能なメモリエラー等のハードウェアの故障でありうる。
第2の障害は、ハードウェアのビットの状態を変化させる宇宙線によって引き起こされうるような計算障害でありうる。
コンピュータシステムが、ハードウェアの障害後も引き続き動作したり、計算障害を検出して計算障害から回復したりするために、ある計算システムは、同じソフトウェアアプリケーションを実行する複数のプロセッサを有する。
それらプロセッサの1つが、ハードウェアの故障を経験した場合に、その計算は、その時点でもまだ適切に機能している1つまたは2つ以上のプロセッサで継続する。
複数のプロセッサの出力を比較することによって、計算障害の検出および訂正が、可能にされうる。
場合によっては、同じソフトウェアアプリケーションを実行するプロセッサは、サイクルごとにまたは厳密なロックステップで動作し、各プロセッサは、複製クロック信号を供給され、サイクルごとに同じソフトウェアコードを実行する。
プロセッサのクロック周波数が増加している一方で、チップのサイズも増大している。
クロック周波数が増加すると、チップサイズの増大と組み合わさって、コンピュータシステムのクロック信号の位相差の制御が困難となり、したがって、厳密なロックステップの実施も困難となる。
さらなる困難は、或るプロセッサ内では発生しているが、それ以外のプロセッサ内では発生していない回復可能なエラー(ソフトエラー)のハンドリングを含む。
これら困難に対処するために、あるコンピュータ製造者は、プロセッサが同じコードを実行するが、必ずしもサイクルごとの形式または同じ壁時計時刻で実行しない緩やかなロックステップシステムを実施する。
同じコードを実行するプロセッサが、互いにあまりにも遠く隔たらないことを確保するために、これらのシステムは、実行された命令をカウントし、所定の個数の命令の終了後、速いプロセッサを引き止めて、遅いプロセッサが追いつくことを可能にすることによって同期する。
プロセッサのクロック周波数が増加している一方で、チップのサイズも増大している。
クロック周波数が増加すると、チップサイズの増大と組み合わさって、コンピュータシステムのクロック信号の位相差の制御が困難となり、したがって、厳密なロックステップの実施も困難となる。
さらなる困難は、或るプロセッサ内では発生しているが、それ以外のプロセッサ内では発生していない回復可能なエラー(ソフトエラー)のハンドリングを含む。
これら困難に対処するために、あるコンピュータ製造者は、プロセッサが同じコードを実行するが、必ずしもサイクルごとの形式または同じ壁時計時刻で実行しない緩やかなロックステップシステムを実施する。
同じコードを実行するプロセッサが、互いにあまりにも遠く隔たらないことを確保するために、これらのシステムは、実行された命令をカウントし、所定の個数の命令の終了後、速いプロセッサを引き止めて、遅いプロセッサが追いつくことを可能にすることによって同期する。
しかしながら、プロセッサ設計の振興技術によって、非決定的プロセッサの実行が可能になっている。
非決定的プロセッサの実行は、同じソフトウェアアプリケーション命令を提供された複数のプロセッサが、必ずしも同じ順序で、または、同じ個数のステップを使用して、命令を実行しないことを意味し得る。
これらの相違は、プロセッサ内で実施された投機的実行(分岐予測等)、アウトオブオーダ処理、ソフトエラー回復等の進行に起因しうる。
このように、同じソフトウェアアプリケーションを実行する2つまたは3つ以上のプロセッサは、同じ命令シーケンスを正確に実行しないことがあり、したがって、厳密なロックステップフォールトトレランスが不可能な場合があるだけでなく、終了した命令(retired instruction)をカウントすることに依拠する緩やかなロックステップフォールトトレランスも不可能な場合がある。
非決定的プロセッサの実行は、同じソフトウェアアプリケーション命令を提供された複数のプロセッサが、必ずしも同じ順序で、または、同じ個数のステップを使用して、命令を実行しないことを意味し得る。
これらの相違は、プロセッサ内で実施された投機的実行(分岐予測等)、アウトオブオーダ処理、ソフトエラー回復等の進行に起因しうる。
このように、同じソフトウェアアプリケーションを実行する2つまたは3つ以上のプロセッサは、同じ命令シーケンスを正確に実行しないことがあり、したがって、厳密なロックステップフォールトトレランスが不可能な場合があるだけでなく、終了した命令(retired instruction)をカウントすることに依拠する緩やかなロックステップフォールトトレランスも不可能な場合がある。
次に、本発明の例示の実施の形態を詳細に説明するために、添付図面を参照する。
[表記法および用語体系]
以下の説明および特許請求の範囲の全体にわたって、特定のシステムコンポーネントを指すために、一定の用語が使用される。
当業者には理解されるように、コンピュータ製造会社は、1つのコンポーネントを異なる名前で指しうる。
この文書は、名前では異なるが機能では異ならないコンポーネントを区別することは意図していない。
以下の説明および特許請求の範囲の全体にわたって、特定のシステムコンポーネントを指すために、一定の用語が使用される。
当業者には理解されるように、コンピュータ製造会社は、1つのコンポーネントを異なる名前で指しうる。
この文書は、名前では異なるが機能では異ならないコンポーネントを区別することは意図していない。
以下の説明および特許請求の範囲において、用語「含む」および「備える」は、オープンエンド形式で使用され、したがって、「〜を含むが、これらに限定されるものではない」ことを意味するように解釈されるべきである。
また、用語「連結する」は、間接的な接続または直接的な接続のいずれをも意味するように意図されている。
したがって、第1のデバイスが第2のデバイスに連結する場合、その接続は、直接的な接続を通じて行われうるし、他のデバイスおよび接続を介して、間接的な電気接続を通じても行われうる。
また、用語「連結する」は、間接的な接続または直接的な接続のいずれをも意味するように意図されている。
したがって、第1のデバイスが第2のデバイスに連結する場合、その接続は、直接的な接続を通じて行われうるし、他のデバイスおよび接続を介して、間接的な電気接続を通じても行われうる。
[詳細な説明]
以下の説明は、本発明のさまざまな実施の形態を対象とする。
これらの実施の形態の1つまたは2つ以上が好適とされうるが、開示した実施の形態は、この開示の範囲を限定するとして解釈されるべきでもなく、その他の方法で使用されるべきでもない。
さらに、以下の説明が広い用途を有し、どの実施の形態の説明も、その実施の形態の例示にすぎないように意図されており、開示の範囲がその実施の形態に限定されることを暗示するように意図されていないことが、当業者には理解されよう。
以下の説明は、本発明のさまざまな実施の形態を対象とする。
これらの実施の形態の1つまたは2つ以上が好適とされうるが、開示した実施の形態は、この開示の範囲を限定するとして解釈されるべきでもなく、その他の方法で使用されるべきでもない。
さらに、以下の説明が広い用途を有し、どの実施の形態の説明も、その実施の形態の例示にすぎないように意図されており、開示の範囲がその実施の形態に限定されることを暗示するように意図されていないことが、当業者には理解されよう。
図1は、本発明の実施の形態による計算システム1000を示している。
詳細には、計算システム1000は、複数のマルチプロセッサコンピュータシステム10を備えうる。
いくつかの実施の形態では、2つのマルチプロセッサコンピュータシステム10のみが使用されることがあり、したがって、計算システム1000は、2重化冗長構成(DMR(dual-modular redundant))システムを実施しうる。
図1に示すように、計算システム1000は、3つのマルチプロセッサコンピュータシステム10を備え、したがって、3重化冗長構成(TMR(tri-modular redundant))システムを実施する。
コンピュータシステムが2重化冗長構成であるのか、それとも3重化冗長構成であるのかにかかわらず、計算システム1000は、これらのマルチプロセッサコンピュータシステム間でユーザプログラムを冗長に実行することによってフォールトトレランスを実施する。
詳細には、計算システム1000は、複数のマルチプロセッサコンピュータシステム10を備えうる。
いくつかの実施の形態では、2つのマルチプロセッサコンピュータシステム10のみが使用されることがあり、したがって、計算システム1000は、2重化冗長構成(DMR(dual-modular redundant))システムを実施しうる。
図1に示すように、計算システム1000は、3つのマルチプロセッサコンピュータシステム10を備え、したがって、3重化冗長構成(TMR(tri-modular redundant))システムを実施する。
コンピュータシステムが2重化冗長構成であるのか、それとも3重化冗長構成であるのかにかかわらず、計算システム1000は、これらのマルチプロセッサコンピュータシステム間でユーザプログラムを冗長に実行することによってフォールトトレランスを実施する。
本発明の実施形態によると、各マルチプロセッサコンピュータシステム10は、好適には、1つまたは2つ以上のプロセッサを備え、図1に示すように、4つのプロセッサを備える。
図1の各プロセッサは、プロセッサを示す頭文字「P」を有する。
さらに、各プロセッサは、そのプロセッサの物理的な位置が、それぞれ、マルチプロセッサコンピュータシステム10A、10Bおよび10Cの1つにあることを示す「A」、「B」、または「C」の文字符号を与えられる。
最後に、各プロセッサは、各マルチプロセッサコンピュータシステム内におけるそのプロセッサの位置を示す数字符号を与えられる。
したがって、例えば、マルチプロセッサコンピュータシステム10Aのプロセッサは、符号「PA1」、「PA2」、「PA3」および「PA4」を有する。
図1の各プロセッサは、プロセッサを示す頭文字「P」を有する。
さらに、各プロセッサは、そのプロセッサの物理的な位置が、それぞれ、マルチプロセッサコンピュータシステム10A、10Bおよび10Cの1つにあることを示す「A」、「B」、または「C」の文字符号を与えられる。
最後に、各プロセッサは、各マルチプロセッサコンピュータシステム内におけるそのプロセッサの位置を示す数字符号を与えられる。
したがって、例えば、マルチプロセッサコンピュータシステム10Aのプロセッサは、符号「PA1」、「PA2」、「PA3」および「PA4」を有する。
本発明の実施の形態によると、各マルチプロセッサコンピュータシステム10からの少なくとも1つのプロセッサは、論理的にグループ化されて、論理プロセッサ12を形成しうる。
図1の例示の実施の形態では、プロセッサPA3、PB3およびPC3がグループ化されて、論理プロセッサ12を形成する。
本発明の実施の形態によると、論理プロセッサ内の各プロセッサは、ユーザプログラムの複製コピーをほぼ同時に実行し、したがって、フォールトトレランスを実施する。
より詳細には、論理プロセッサ内の各プロセッサは、ユーザプログラムの同じ命令ストリームを提供され、(エラーがないと仮定して)同じ結果を計算する。
しかし、論理プロセッサ内のプロセッサは、サイクルごとでもなければ、厳密なロックステップでもない。
逆に、プロセッサは、緩やかなロックステップとされており、同期および割り込みのハンドリングが、ランデブーポイント(以下で説明)に基づいて行われる。
いくつかの実施の形態によると、プロセッサは、非決定的な実行を有することができ、したがって、厳密なロックステップが不可能な場合がある。
プロセッサの1つが故障すると、残りの1つまたは2つ以上のプロセッサが、システム全体の性能に影響を与えることなく、処理を続行しうる。
図1の例示の実施の形態では、プロセッサPA3、PB3およびPC3がグループ化されて、論理プロセッサ12を形成する。
本発明の実施の形態によると、論理プロセッサ内の各プロセッサは、ユーザプログラムの複製コピーをほぼ同時に実行し、したがって、フォールトトレランスを実施する。
より詳細には、論理プロセッサ内の各プロセッサは、ユーザプログラムの同じ命令ストリームを提供され、(エラーがないと仮定して)同じ結果を計算する。
しかし、論理プロセッサ内のプロセッサは、サイクルごとでもなければ、厳密なロックステップでもない。
逆に、プロセッサは、緩やかなロックステップとされており、同期および割り込みのハンドリングが、ランデブーポイント(以下で説明)に基づいて行われる。
いくつかの実施の形態によると、プロセッサは、非決定的な実行を有することができ、したがって、厳密なロックステップが不可能な場合がある。
プロセッサの1つが故障すると、残りの1つまたは2つ以上のプロセッサが、システム全体の性能に影響を与えることなく、処理を続行しうる。
論理プロセッサ内の2つまたは3つ以上のプロセッサが、同じユーザプログラムを実行しうるので(in as much as)、入出力(I/O)デバイス14および16に対する読み出しおよび書き込み等の複製読み出しおよび複製書き込みが、生成されうる。
I/Oデバイス14および16は、任意の適切なI/Oデバイスであってよく、例えば、ネットワークインターフェースカード、フロッピィドライブ、ハードディスクドライブ、CDROMドライブおよび/またはキーボードであってよい。
障害検出目的でこれらの読み出しおよび書き込みを比較するために、各論理プロセッサは、自身を同期論理回路に関連付けている。
例えば、プロセッサPA1、PB1およびPC1は、同期論理回路18に関連付けられた論理プロセッサを形成しうる。
同様に、プロセッサPA2、PB2およびPC2も、同期論理回路20に関連付けられた論理プロセッサを形成しうる。
論理プロセッサ12は、同期論理回路22に関連付けうる。
最後に、プロセッサPA4、PB4およびPC4は、同期論理回路24に関連付けられた論理プロセッサを形成しうる。
したがって、各マルチプロセッサコンピュータシステム10は、それぞれを、相互接続部26を経由して、同期論理回路18、20、22、および24のそれぞれに連結しうる。
相互接続部26は、周辺機器相互接続(PCI)バスであってよく、特に、直列化PCIバスであってよい。
ただし、他のバスおよび/またはネットワーク通信方式が、同等に使用されうる。
I/Oデバイス14および16は、任意の適切なI/Oデバイスであってよく、例えば、ネットワークインターフェースカード、フロッピィドライブ、ハードディスクドライブ、CDROMドライブおよび/またはキーボードであってよい。
障害検出目的でこれらの読み出しおよび書き込みを比較するために、各論理プロセッサは、自身を同期論理回路に関連付けている。
例えば、プロセッサPA1、PB1およびPC1は、同期論理回路18に関連付けられた論理プロセッサを形成しうる。
同様に、プロセッサPA2、PB2およびPC2も、同期論理回路20に関連付けられた論理プロセッサを形成しうる。
論理プロセッサ12は、同期論理回路22に関連付けうる。
最後に、プロセッサPA4、PB4およびPC4は、同期論理回路24に関連付けられた論理プロセッサを形成しうる。
したがって、各マルチプロセッサコンピュータシステム10は、それぞれを、相互接続部26を経由して、同期論理回路18、20、22、および24のそれぞれに連結しうる。
相互接続部26は、周辺機器相互接続(PCI)バスであってよく、特に、直列化PCIバスであってよい。
ただし、他のバスおよび/またはネットワーク通信方式が、同等に使用されうる。
各同期論理回路18、20、22および24は、例えば、同期論理回路22の投票者論理回路28といった投票者論理ユニットを備える。
以下の説明は、同期論理回路22の投票者論理回路28を対象にしているが、同期論理回路18、20、22および24のそれぞれの各投票者論理ユニットにも等しく適用しうる。
投票者論理回路28は、プロセッサからの読み出し要求および書き込み要求を集約するように動作し、プロセッサ間の情報交換の役割を果たす。
説明のために、論理プロセッサ12の各プロセッサがユーザプログラムの自身のコピーを実行することについて考察し、各プロセッサがネットワークインターフェース34に対する読み出し要求を生成することについて考察する。
論理プロセッサ12の各プロセッサは、自身の読み出し要求を投票者論理回路28に送信する。
投票者論理回路28は、各読み出し要求を受信し、それら読み出し要求を比較し、(読み出し要求が一致すると仮定して)ネットワークインターフェース34に単一の読み出し要求を発行する。
以下の説明は、同期論理回路22の投票者論理回路28を対象にしているが、同期論理回路18、20、22および24のそれぞれの各投票者論理ユニットにも等しく適用しうる。
投票者論理回路28は、プロセッサからの読み出し要求および書き込み要求を集約するように動作し、プロセッサ間の情報交換の役割を果たす。
説明のために、論理プロセッサ12の各プロセッサがユーザプログラムの自身のコピーを実行することについて考察し、各プロセッサがネットワークインターフェース34に対する読み出し要求を生成することについて考察する。
論理プロセッサ12の各プロセッサは、自身の読み出し要求を投票者論理回路28に送信する。
投票者論理回路28は、各読み出し要求を受信し、それら読み出し要求を比較し、(読み出し要求が一致すると仮定して)ネットワークインターフェース34に単一の読み出し要求を発行する。
同期論理回路が発行した単一の読み出し要求に応答して、例示のネットワークインターフェース34は、要求された情報を投票者論理回路28に返信する。
次に、投票者論理回路は、要求された情報を複製して、論理プロセッサ内のプロセッサのそれぞれに渡す。
同様に、パケットメッセージの書き込みや他のプログラム(他の論理プロセッサ上で実行されることがある)へのパケットメッセージの転送等の他の入出力機能についても、同期論理回路は、それらの要求が一致することを確認し、次いで、単一の要求を適切な位置に転送する。
論理プロセッサのいずれか1つのプロセッサが適切に機能しない場合(例えば、要求を生成できない場合、指定された時間内に要求を生成できない場合、一致しない要求を生成する場合、または、完全に故障している場合)、ユーザプログラムは、論理プロセッサの残りの1つまたは複数のプロセッサの要求に基づいて続行しうる。
同様に、外部で生成された通信についても、同期論理回路は、その外部通信を複製し、各プロセッサにその通信を提供する。
外部で生成された要求が、ダイレクトメモリアクセス(リモートDMAとしても知られている)を求めるものである場合には、同期論理回路は、それらの要求を複製して分配し、それらの要求に基づいて、各プロセッサが提供したデータを比較して集約する。
次に、投票者論理回路は、要求された情報を複製して、論理プロセッサ内のプロセッサのそれぞれに渡す。
同様に、パケットメッセージの書き込みや他のプログラム(他の論理プロセッサ上で実行されることがある)へのパケットメッセージの転送等の他の入出力機能についても、同期論理回路は、それらの要求が一致することを確認し、次いで、単一の要求を適切な位置に転送する。
論理プロセッサのいずれか1つのプロセッサが適切に機能しない場合(例えば、要求を生成できない場合、指定された時間内に要求を生成できない場合、一致しない要求を生成する場合、または、完全に故障している場合)、ユーザプログラムは、論理プロセッサの残りの1つまたは複数のプロセッサの要求に基づいて続行しうる。
同様に、外部で生成された通信についても、同期論理回路は、その外部通信を複製し、各プロセッサにその通信を提供する。
外部で生成された要求が、ダイレクトメモリアクセス(リモートDMAとしても知られている)を求めるものである場合には、同期論理回路は、それらの要求を複製して分配し、それらの要求に基づいて、各プロセッサが提供したデータを比較して集約する。
外部インターフェース(ネットワークインターフェース34等)に対する読み出しおよび書き込みの集約、および、それら外部インターフェースからのメッセージおよびデータの複製に加えて、同期論理回路は、日時情報の要求が行われた時に、各プロセッサに同じ日時が確実に提供されるようにする役割も果たす。
詳細には、ユーザプログラムは、それらユーザプログラムの実行における一定のポイントで、日時情報を要求するシステムコールを行うことがある。
システムコールは、オペレーティングシステムプログラム等の(ユーザモードよりも高い特権モードで実行される)特権プログラムに対するあらゆるコールである。
日時情報を得るためのシステムコールは、システムコールのカテゴリーに分類されるプログラムファミリーの単なる一例にすぎず、論理プロセッサ内のプロセッサ間のユーザプログラムを同期させる際のシステムコールの役割、および、割り込みをハンドリングする際のシステムコールの役割は、以下でより十分に説明される。
ユーザプログラムにおける対応する実行ポイントにおいて、各ユーザプログラムが、(それらの実行ポイントに到達した時の壁時計時刻が異なるにもかかわらず)同じ日時を提供されるために、本発明の実施の形態による同期論理回路は、論理プロセッサ内の各プロセッサに日時情報を提供する。
すなわち、各プロセッサでの各ユーザプログラムにおける、割り込みにサービスを提供するポイントをスケジューリングするプロセスの一部として(以下でより十分に説明する)、同期論理回路が、各プロセッサに日時情報を提供する。
本発明の実施の形態による日時システムコールは、ユーザプログラムがそのような要求を行った時の日時を内部で導出するのではなく、同期論理回路が提供する最も近時の日時情報を利用する。
このように、各ユーザプログラムは、それらユーザプログラムが正確に同じ壁時計時刻で実行されているかどうかとは関係なく、同じ日時情報を提供される。
詳細には、ユーザプログラムは、それらユーザプログラムの実行における一定のポイントで、日時情報を要求するシステムコールを行うことがある。
システムコールは、オペレーティングシステムプログラム等の(ユーザモードよりも高い特権モードで実行される)特権プログラムに対するあらゆるコールである。
日時情報を得るためのシステムコールは、システムコールのカテゴリーに分類されるプログラムファミリーの単なる一例にすぎず、論理プロセッサ内のプロセッサ間のユーザプログラムを同期させる際のシステムコールの役割、および、割り込みをハンドリングする際のシステムコールの役割は、以下でより十分に説明される。
ユーザプログラムにおける対応する実行ポイントにおいて、各ユーザプログラムが、(それらの実行ポイントに到達した時の壁時計時刻が異なるにもかかわらず)同じ日時を提供されるために、本発明の実施の形態による同期論理回路は、論理プロセッサ内の各プロセッサに日時情報を提供する。
すなわち、各プロセッサでの各ユーザプログラムにおける、割り込みにサービスを提供するポイントをスケジューリングするプロセスの一部として(以下でより十分に説明する)、同期論理回路が、各プロセッサに日時情報を提供する。
本発明の実施の形態による日時システムコールは、ユーザプログラムがそのような要求を行った時の日時を内部で導出するのではなく、同期論理回路が提供する最も近時の日時情報を利用する。
このように、各ユーザプログラムは、それらユーザプログラムが正確に同じ壁時計時刻で実行されているかどうかとは関係なく、同じ日時情報を提供される。
図2は、マルチプロセッサコンピュータシステム10をより詳細に示している。
詳細には、図2は、本発明の実施の形態によるマルチプロセッサコンピュータシステム10が、複数のプロセッサを有することができ、図2の例示の事例では4つのこのようなプロセッサ34、36、38および40を有することを示している。
4つのプロセッサのみが示されているが、本発明の範囲および精神から逸脱することなく、任意の個数のプロセッサが使用されうる。
プロセッサ34〜40は、個別にパッケージングされたプロセッサであってもよく、プロセッサのパッケージは、単一のパッケージ内に2つまたは3つ以上のプロセッサチップを備えるか、または、単一のチップ上に複数のプロセッサを備える。
プロセッサのそれぞれは、プロセッサバス44を経由して、I/Oブリッジおよびメモリコントローラ42(以下、I/Oブリッジ42という)に連結されうる。
I/Oブリッジ42は、メモリバス45を経由して、プロセッサ34〜40を1つまたは2つ以上のメモリモジュール46に連結する。
したがって、I/Oブリッジ42は、1つまたは2つ以上のメモリモジュール46によって画定されたメモリ領域に対する読み出しおよび書き込みを制御する。
また、I/Oブリッジ42は、バスライン43によって示されるように、プロセッサ34〜40のそれぞれが同期論理回路(図2には図示せず)に連結することも可能にする。
詳細には、図2は、本発明の実施の形態によるマルチプロセッサコンピュータシステム10が、複数のプロセッサを有することができ、図2の例示の事例では4つのこのようなプロセッサ34、36、38および40を有することを示している。
4つのプロセッサのみが示されているが、本発明の範囲および精神から逸脱することなく、任意の個数のプロセッサが使用されうる。
プロセッサ34〜40は、個別にパッケージングされたプロセッサであってもよく、プロセッサのパッケージは、単一のパッケージ内に2つまたは3つ以上のプロセッサチップを備えるか、または、単一のチップ上に複数のプロセッサを備える。
プロセッサのそれぞれは、プロセッサバス44を経由して、I/Oブリッジおよびメモリコントローラ42(以下、I/Oブリッジ42という)に連結されうる。
I/Oブリッジ42は、メモリバス45を経由して、プロセッサ34〜40を1つまたは2つ以上のメモリモジュール46に連結する。
したがって、I/Oブリッジ42は、1つまたは2つ以上のメモリモジュール46によって画定されたメモリ領域に対する読み出しおよび書き込みを制御する。
また、I/Oブリッジ42は、バスライン43によって示されるように、プロセッサ34〜40のそれぞれが同期論理回路(図2には図示せず)に連結することも可能にする。
図2をさらに参照して、1つまたは2つ以上のメモリモジュール46によって画定されたメモリは、各プロセッサにつき1つのパーティションとして区画されうる。
したがって、プロセッサのそれぞれは、独立に動作することが可能になる。
代替的な実施の形態では、各プロセッサは、それ自身の集積されたメモリコントローラを有することができ、したがって、各プロセッサは、それ自身の専用メモリを有することができ、これも本発明の考慮の範囲内にある。
マルチプロセッサコンピュータシステム10がその一部を成しうる計算システム1000は、論理プロセッサ内のプロセッサ間で、ユーザプログラムの緩やかなロックステップ実行を実施する。
緩やかなロックステップは、論理プロセッサ(例えば、論理プロセッサ12)の各プロセッサがユーザプログラムの複製コピーを実行できるが、その命令は厳密なロックステップ形式で実行する必要もなければ、同じ壁時計時刻で実行する必要もないことを意味しうる。
したがって、プロセッサ34〜40は、非決定的プロセッサを含めて(これに限定されるものではない)、さまざまなアーキテクチャであってもよい。
非決定的プロセッサは、厳密なロックステップ実行に適合しなくてもよく、終了した命令のカウントに基づかなくてもよい。
Intel(登録商標)のItanium(登録商標)プロセッサファミリー(IPF)は、非決定的な実行を行い、したがって、厳密なロックステップ実行にも適合せず、終了した命令のカウントにも基づかないプロセッサファミリーの一例である。
したがって、プロセッサのそれぞれは、独立に動作することが可能になる。
代替的な実施の形態では、各プロセッサは、それ自身の集積されたメモリコントローラを有することができ、したがって、各プロセッサは、それ自身の専用メモリを有することができ、これも本発明の考慮の範囲内にある。
マルチプロセッサコンピュータシステム10がその一部を成しうる計算システム1000は、論理プロセッサ内のプロセッサ間で、ユーザプログラムの緩やかなロックステップ実行を実施する。
緩やかなロックステップは、論理プロセッサ(例えば、論理プロセッサ12)の各プロセッサがユーザプログラムの複製コピーを実行できるが、その命令は厳密なロックステップ形式で実行する必要もなければ、同じ壁時計時刻で実行する必要もないことを意味しうる。
したがって、プロセッサ34〜40は、非決定的プロセッサを含めて(これに限定されるものではない)、さまざまなアーキテクチャであってもよい。
非決定的プロセッサは、厳密なロックステップ実行に適合しなくてもよく、終了した命令のカウントに基づかなくてもよい。
Intel(登録商標)のItanium(登録商標)プロセッサファミリー(IPF)は、非決定的な実行を行い、したがって、厳密なロックステップ実行にも適合せず、終了した命令のカウントにも基づかないプロセッサファミリーの一例である。
図2は、さらに、各マルチプロセッサコンピュータシステム10が、I/Oブリッジ42とメモリモジュール46との間に連結された再統合論理回路48を備えることも示している。
図1の例示の実施の形態は、再統合論理回路の相互接続部(ライン51)をリング形で示しているが、任意のネットワークトポロジーが、同等に使用されうる(例えば、リング、ツリー、2重リング、完全接続)。
動作時において、再統合論理回路48は、I/Oブリッジ42に対してトランスペアレントであり、1つまたは2つ以上のメモリモジュール46に対する読み出しおよび書き込みと連係しない。
しかしながら、論理プロセッサ内の或るプロセッサが障害を経験し、再起動される必要がある場合に、再統合論理回路48は役割を果たす。
図1の例示の実施の形態は、再統合論理回路の相互接続部(ライン51)をリング形で示しているが、任意のネットワークトポロジーが、同等に使用されうる(例えば、リング、ツリー、2重リング、完全接続)。
動作時において、再統合論理回路48は、I/Oブリッジ42に対してトランスペアレントであり、1つまたは2つ以上のメモリモジュール46に対する読み出しおよび書き込みと連係しない。
しかしながら、論理プロセッサ内の或るプロセッサが障害を経験し、再起動される必要がある場合に、再統合論理回路48は役割を果たす。
プロセッサの再起動時には、エラーを経験しなかった論理プロセッサ内のプロセッサと同じポイントで、ユーザプログラムの実行を開始することが望ましい。
換言すると、再起動されるプロセッサは、そのプロセッサが一時的な故障またはハードウェアエラーを経験したポイントではなく、他のプロセッサがユーザプログラムにおいて到達したポイントで再開する(pick up)ことができる。
図2に示す実施の形態では、各マルチプロセッサコンピュータシステム10の再統合論理回路48は、そのメモリを、そのプロセッサのうちの1つのエラーを経験しなかった故障していないマルチプロセッサコンピュータシステムのメモリから複製する。
したがって、図1を再び参照して、再起動されるマルチプロセッサコンピュータシステムが、論理パーティションの他のプロセッサと同じ状態から開始できるように、マルチプロセッサコンピュータシステム10のそれぞれが、メモリパーティションの複製を容易にするために共に連結された自身の再統合論理回路48を有することを、ライン51は示している。
マルチプロセッサコンピュータシステムの或るプロセッサの故障によるメモリ全体の複製およびその後のマルチプロセッサコンピュータシステムの全プロセッサの再起動は、単一のメモリコントローラ(I/Oブリッジ)42のみを有することによって指令されうる。
代替的な実施の形態では、複数のメモリコントローラ(例えば、各プロセッサにつき1つ)が存在してもよく、したがって、メモリの一部のみが、複製されればよく(すなわち、再起動を必要とするプロセッサにより使用されるメモリコントローラに対応するメモリパーティション)、同様に、プロセッサの一部のみが、再起動されればよい(すなわち、複製されたメモリに関連するプロセッサ)。
換言すると、再起動されるプロセッサは、そのプロセッサが一時的な故障またはハードウェアエラーを経験したポイントではなく、他のプロセッサがユーザプログラムにおいて到達したポイントで再開する(pick up)ことができる。
図2に示す実施の形態では、各マルチプロセッサコンピュータシステム10の再統合論理回路48は、そのメモリを、そのプロセッサのうちの1つのエラーを経験しなかった故障していないマルチプロセッサコンピュータシステムのメモリから複製する。
したがって、図1を再び参照して、再起動されるマルチプロセッサコンピュータシステムが、論理パーティションの他のプロセッサと同じ状態から開始できるように、マルチプロセッサコンピュータシステム10のそれぞれが、メモリパーティションの複製を容易にするために共に連結された自身の再統合論理回路48を有することを、ライン51は示している。
マルチプロセッサコンピュータシステムの或るプロセッサの故障によるメモリ全体の複製およびその後のマルチプロセッサコンピュータシステムの全プロセッサの再起動は、単一のメモリコントローラ(I/Oブリッジ)42のみを有することによって指令されうる。
代替的な実施の形態では、複数のメモリコントローラ(例えば、各プロセッサにつき1つ)が存在してもよく、したがって、メモリの一部のみが、複製されればよく(すなわち、再起動を必要とするプロセッサにより使用されるメモリコントローラに対応するメモリパーティション)、同様に、プロセッサの一部のみが、再起動されればよい(すなわち、複製されたメモリに関連するプロセッサ)。
緩やかなロックステップシステムでは、或るプロセッサが進んだり遅れたりすることがある理由は、多く存在し得る。
例えば、各プロセッサは、ほぼ同じクロック周波数で命令を実行しうる一方、実際のクロック周波数の差は小さくても、時間の経過によってかなりの差になりうる(タイミング非決定性)。
その上、本発明の少なくともいくつかの実施の形態に従って実施されたプロセッサは、非決定的な実行を有し、したがって、たとえ正確に同じユーザプログラムが提供されても、プロセッサは、ユーザプログラムの共通のポイントに到達する実行ステップ数において、大きく乖離しうる。
さらにまた、いくつかのプロセッサは、データアクセス遅延および/または定着性エラー(fixable error)(アーキテクチャ上可視的でない状態非決定性(non-architecturally visible state nondeterminism))に遭遇する。
いくつかの例は、或るプロセッサが、他のプロセッサが経験することができないキャッシュミスを経験することがある、或るプロセッサが訂正可能なメモリエラーを経験することがあり、したがって、残りのプロセッサには必要とされない回復ルーチンの実行を必要とする、および、或るプロセッサが変換索引バッファのミスを経験することがあり、それによって、ユーザプログラムの最終結果に影響を与えないが付加的処理が行われる、という例である。
これらの場合も、プロセッサは、最終的に、ユーザプログラムの同じ実行ポイントに到達するが、実行される命令数およびそれらの命令を実行するために必要な時間は、同じでないことがある。
例えば、各プロセッサは、ほぼ同じクロック周波数で命令を実行しうる一方、実際のクロック周波数の差は小さくても、時間の経過によってかなりの差になりうる(タイミング非決定性)。
その上、本発明の少なくともいくつかの実施の形態に従って実施されたプロセッサは、非決定的な実行を有し、したがって、たとえ正確に同じユーザプログラムが提供されても、プロセッサは、ユーザプログラムの共通のポイントに到達する実行ステップ数において、大きく乖離しうる。
さらにまた、いくつかのプロセッサは、データアクセス遅延および/または定着性エラー(fixable error)(アーキテクチャ上可視的でない状態非決定性(non-architecturally visible state nondeterminism))に遭遇する。
いくつかの例は、或るプロセッサが、他のプロセッサが経験することができないキャッシュミスを経験することがある、或るプロセッサが訂正可能なメモリエラーを経験することがあり、したがって、残りのプロセッサには必要とされない回復ルーチンの実行を必要とする、および、或るプロセッサが変換索引バッファのミスを経験することがあり、それによって、ユーザプログラムの最終結果に影響を与えないが付加的処理が行われる、という例である。
これらの場合も、プロセッサは、最終的に、ユーザプログラムの同じ実行ポイントに到達するが、実行される命令数およびそれらの命令を実行するために必要な時間は、同じでないことがある。
論理プロセッサにおけるプロセッサが、同じ命令ストリームを実行しているが、その命令ストリームの同じポイントに存在しないことがあるという考えに留意して、説明は、このような環境における割り込みのハンドリングに移る。
たとえ、同じ割り込みが、正確に同じ壁時計時刻で各プロセッサにアサートされても、それら各プロセッサの緩やかなロックステップステップ実行により、割り込みは、ユーザプログラムの同じ実行ポイントでアサートされないことがある。
この問題は、割り込みアサート自体が非同期であることによって、さらに激化する。
適切なオペレーションを確保するために、論理プロセッサ内の各プロセッサは、ユーザプログラムの命令ストリームの同じ実行ポイントで、割り込みにサービスを提供する必要がある。
本発明の実施の形態によると、割り込みが命令ストリームの同じ実行ポイントでサービスを受けることを確保することは、割り込みにサービスを提供するためのランデブーポイントについて合意するメカニズムとして同期論理回路を利用することによって行われる。
たとえ、同じ割り込みが、正確に同じ壁時計時刻で各プロセッサにアサートされても、それら各プロセッサの緩やかなロックステップステップ実行により、割り込みは、ユーザプログラムの同じ実行ポイントでアサートされないことがある。
この問題は、割り込みアサート自体が非同期であることによって、さらに激化する。
適切なオペレーションを確保するために、論理プロセッサ内の各プロセッサは、ユーザプログラムの命令ストリームの同じ実行ポイントで、割り込みにサービスを提供する必要がある。
本発明の実施の形態によると、割り込みが命令ストリームの同じ実行ポイントでサービスを受けることを確保することは、割り込みにサービスを提供するためのランデブーポイントについて合意するメカニズムとして同期論理回路を利用することによって行われる。
本発明の実施の形態によると、論理プロセッサ内のプロセッサは、特定の割り込みがアサートされたことと、実行を一時停止して割り込みにサービスを提供するユーザプログラムで提案されたポイントとを互いに通信する。
換言すると、論理プロセッサ内のプロセッサは、どの割り込みにサービスを提供すべきか(または最初にサービスを提供すべきか)について合意し、また、割り込みにサービスを提供するユーザプログラムのポイントについても合意する。
図3は、協力して割り込みのサービス提供を調整するさまざまなコンポーネントのオペレーションを説明するために、部分的な計算システム1000を示している。
図3は、論理プロセッサ50が、この場合に、2つのプロセッサPA1およびPB1のみを備えるという意味で、図1のシステムが簡略化された説明である。
また、図3は、別の意味では、各プロセッサのメモリパーティション52を示し、プロセッサがI/Oブリッジ42を通じてメモリパーティションおよび投票者論理回路にどのように連結するかを示しているので、図1よりも詳細化されている。
このように、図3の論理プロセッサ50は、マルチプロセッサコンピュータシステム10Aおよび10Bからのそれぞれ1つのプロセッサを備える。
プロセッサPA1は、I/Oブリッジ42Aに連結し、I/Oブリッジ42Aは、同期論理回路18およびPA1プロセッサのメモリパーティション52Aの双方に連結する。
プロセッサPB1は、その各I/Oブリッジ42Bに連結し、I/Oブリッジ42Bは、同期論理回路18およびPB1プロセッサのメモリパーティション52Bに連結する。
換言すると、論理プロセッサ内のプロセッサは、どの割り込みにサービスを提供すべきか(または最初にサービスを提供すべきか)について合意し、また、割り込みにサービスを提供するユーザプログラムのポイントについても合意する。
図3は、協力して割り込みのサービス提供を調整するさまざまなコンポーネントのオペレーションを説明するために、部分的な計算システム1000を示している。
図3は、論理プロセッサ50が、この場合に、2つのプロセッサPA1およびPB1のみを備えるという意味で、図1のシステムが簡略化された説明である。
また、図3は、別の意味では、各プロセッサのメモリパーティション52を示し、プロセッサがI/Oブリッジ42を通じてメモリパーティションおよび投票者論理回路にどのように連結するかを示しているので、図1よりも詳細化されている。
このように、図3の論理プロセッサ50は、マルチプロセッサコンピュータシステム10Aおよび10Bからのそれぞれ1つのプロセッサを備える。
プロセッサPA1は、I/Oブリッジ42Aに連結し、I/Oブリッジ42Aは、同期論理回路18およびPA1プロセッサのメモリパーティション52Aの双方に連結する。
プロセッサPB1は、その各I/Oブリッジ42Bに連結し、I/Oブリッジ42Bは、同期論理回路18およびPB1プロセッサのメモリパーティション52Bに連結する。
少なくともいくつかの実施の形態によると、論理プロセッサにおけるプロセッサに、ランデブーポイントを確立するための情報を交換させるには、各プロセッサが、同期論理回路18の投票者論理回路56における同期レジスタ54に情報を書き込むことが必要とされる。
本発明の実施の形態によると、ランデブーポイントは、任意の適切な位置とすることができ、オペレーティングシステムのディスパッチャ機能が実行され、他のタスクを実行に設定する各時刻、トラップおよび障害ハンドラ、ユーザプログラムが行ったシステムコール等とすることができる。
用語「システムコール」は、この明細書および特許請求の範囲では、任意の可能なランデブーポイントを指すために使用される。
システムコール番号は、システムコールが任意の開始点(starting point)から行われた回数を示す番号であってよい。
図3の位置72は、システムコール番号が存在できるメモリパーティション52の位置を示している。
代替的な実施の形態では、システムコール番号は、メモリパーティション52以外に位置するレジスタにも同等に記憶されうる。
図3に示す実施の形態では、同期レジスタ54は、事前に設計されたメモリ位置であるが、データを書き込むことができる位置ならばどの位置でも十分である。
プロセッサの一部またはすべてが自身の各情報を書き込んだ後、投票者論理回路56は、同期レジスタ54の情報を、メモリパーティション52のそれぞれの対応するレジスタセット57にライトバックする。
また、投票者論理回路56は、ライトバックオペレーション中にレジスタ57に、日時情報等の他の情報を書き込むこともできる。
同期論理回路へ情報を書き込むことによって、残りのプロセッサが割り込みを調べることを待っている間、ユーザプログラムの処理が継続することが可能になる。
代替的な実施の形態では、各プロセッサは、同期レジスタ54のメモリ位置に対する待機読み出し(waited read)を行うことができる。
待機することは、各プロセッサが割り込みに関する対応する情報を書き込むまで、読み出しが完了しないことを意味する。
副作用としての待機読み出しは、プロセッサを同期させるように動作するが、各プロセッサは、その読み出しの完了をソフトウェアループで待機し、したがって、割り込みに関する情報を交換するメカニズムとしての待機読み出しによって、ユーザプログラムは、実行を継続することができない。
データ交換がどのように実行されるかにかかわらず、情報を交換することによって、論理プロセッサ内のプロセッサは、ユーザプログラムのどのポイントで割り込みにサービスを提供するかを調整する。
本発明の実施の形態によると、ランデブーポイントは、任意の適切な位置とすることができ、オペレーティングシステムのディスパッチャ機能が実行され、他のタスクを実行に設定する各時刻、トラップおよび障害ハンドラ、ユーザプログラムが行ったシステムコール等とすることができる。
用語「システムコール」は、この明細書および特許請求の範囲では、任意の可能なランデブーポイントを指すために使用される。
システムコール番号は、システムコールが任意の開始点(starting point)から行われた回数を示す番号であってよい。
図3の位置72は、システムコール番号が存在できるメモリパーティション52の位置を示している。
代替的な実施の形態では、システムコール番号は、メモリパーティション52以外に位置するレジスタにも同等に記憶されうる。
図3に示す実施の形態では、同期レジスタ54は、事前に設計されたメモリ位置であるが、データを書き込むことができる位置ならばどの位置でも十分である。
プロセッサの一部またはすべてが自身の各情報を書き込んだ後、投票者論理回路56は、同期レジスタ54の情報を、メモリパーティション52のそれぞれの対応するレジスタセット57にライトバックする。
また、投票者論理回路56は、ライトバックオペレーション中にレジスタ57に、日時情報等の他の情報を書き込むこともできる。
同期論理回路へ情報を書き込むことによって、残りのプロセッサが割り込みを調べることを待っている間、ユーザプログラムの処理が継続することが可能になる。
代替的な実施の形態では、各プロセッサは、同期レジスタ54のメモリ位置に対する待機読み出し(waited read)を行うことができる。
待機することは、各プロセッサが割り込みに関する対応する情報を書き込むまで、読み出しが完了しないことを意味する。
副作用としての待機読み出しは、プロセッサを同期させるように動作するが、各プロセッサは、その読み出しの完了をソフトウェアループで待機し、したがって、割り込みに関する情報を交換するメカニズムとしての待機読み出しによって、ユーザプログラムは、実行を継続することができない。
データ交換がどのように実行されるかにかかわらず、情報を交換することによって、論理プロセッサ内のプロセッサは、ユーザプログラムのどのポイントで割り込みにサービスを提供するかを調整する。
割り込みは、割り込み情報を含んだパケットベースのメッセージを介して、または、専用割り込み信号ラインを介して、任意の時刻に、プロセッサにアサートされうる。
また、割り込みは、或るプロセッサクロックサイクル数の後に満了するように設定されたタイマ等の内部信号源からも、プロセッサにアサートされうる。
このようなパケット、信号ラインまたは内部割込みが、プロセッサによって受信され検出されると、ユーザプログラムは一時停止され、割り込みハンドラルーチンが起動される。
割り込みハンドラルーチンの目的は、ランデブーポイントを識別するプロセスを開始することである。
割り込みによって要求されたサービスに関する動作は、割り込みハンドラルーチンによって行われない。
ランデブーポイント(例えば、システムコール)は、当該ランデブーポイントをスケジューリングするプロセスが完了したポイントであり、また、受信された割り込みにサービスを提供するプログラムをスケジューリングするポイントでもある。
また、割り込みは、或るプロセッサクロックサイクル数の後に満了するように設定されたタイマ等の内部信号源からも、プロセッサにアサートされうる。
このようなパケット、信号ラインまたは内部割込みが、プロセッサによって受信され検出されると、ユーザプログラムは一時停止され、割り込みハンドラルーチンが起動される。
割り込みハンドラルーチンの目的は、ランデブーポイントを識別するプロセスを開始することである。
割り込みによって要求されたサービスに関する動作は、割り込みハンドラルーチンによって行われない。
ランデブーポイント(例えば、システムコール)は、当該ランデブーポイントをスケジューリングするプロセスが完了したポイントであり、また、受信された割り込みにサービスを提供するプログラムをスケジューリングするポイントでもある。
図4は、本発明の実施の形態による1組のイベントの例示の時間表(時間はページの下方に向かって増加する)を示している。
参照符号PA1およびPB1の下にある縦のバーは、それぞれ、それらのプロセッサによるプログラムの実行を表している。
これら縦のラインの間にあるブロックは、ハードウェアおよび/またはイベントを表し、中央のブロックと縦のバーとの間のラインは、時間に応じたさまざまなコンポーネントの相互作用を表している。
図3および図4を同時に参照して、各プロセッサが(ブロック58および縦のバーのそれぞれを指し示す矢印によって示すように)割り込みを受信すると仮定する。
図示するように、割り込みは、異なる時刻に各プロセッサにアサートされる。
割り込みが受信されると、ユーザプログラムは一時停止され、割り込みハンドラルーチンが(クロスの網掛け領域59によって例示されるように)実行される。
割り込みハンドラルーチンは、割り込みの性質を判断し、割り込みにサービスを提供するための提案されたシステムコール番号と共に、割り込みに関する情報を同期レジスタに書き込む。
割り込み情報および提案されたシステムコール番号の書き込みは、ライン60によって図示される。
ライン60は、プロセッサPA1が割り込み5を受信したこと、および、このプロセッサがシステムコール番号1001で割り込みにサービスを提供することを提案することを例示している。
プロセッサPB1についても同様に、割り込みは、ユーザプログラムにおいてわずかに異なる時刻にアサートされうるが、割り込みハンドラルーチンが、その後直ちに実行され(クロスの網掛け領域59)、この割り込みハンドラルーチンは、ライン62によって示すように、割り込みが受信されたことの表示と、その割り込みにサービスを提供するための提案されたシステムコール番号とを同期レジスタ54に書き込む。
割り込みハンドラルーチンが、同期レジスタへのその書き込みを完了するとすぐに、ユーザプログラムは、実行を継続する(ポイント61および63で開始する)。
参照符号PA1およびPB1の下にある縦のバーは、それぞれ、それらのプロセッサによるプログラムの実行を表している。
これら縦のラインの間にあるブロックは、ハードウェアおよび/またはイベントを表し、中央のブロックと縦のバーとの間のラインは、時間に応じたさまざまなコンポーネントの相互作用を表している。
図3および図4を同時に参照して、各プロセッサが(ブロック58および縦のバーのそれぞれを指し示す矢印によって示すように)割り込みを受信すると仮定する。
図示するように、割り込みは、異なる時刻に各プロセッサにアサートされる。
割り込みが受信されると、ユーザプログラムは一時停止され、割り込みハンドラルーチンが(クロスの網掛け領域59によって例示されるように)実行される。
割り込みハンドラルーチンは、割り込みの性質を判断し、割り込みにサービスを提供するための提案されたシステムコール番号と共に、割り込みに関する情報を同期レジスタに書き込む。
割り込み情報および提案されたシステムコール番号の書き込みは、ライン60によって図示される。
ライン60は、プロセッサPA1が割り込み5を受信したこと、および、このプロセッサがシステムコール番号1001で割り込みにサービスを提供することを提案することを例示している。
プロセッサPB1についても同様に、割り込みは、ユーザプログラムにおいてわずかに異なる時刻にアサートされうるが、割り込みハンドラルーチンが、その後直ちに実行され(クロスの網掛け領域59)、この割り込みハンドラルーチンは、ライン62によって示すように、割り込みが受信されたことの表示と、その割り込みにサービスを提供するための提案されたシステムコール番号とを同期レジスタ54に書き込む。
割り込みハンドラルーチンが、同期レジスタへのその書き込みを完了するとすぐに、ユーザプログラムは、実行を継続する(ポイント61および63で開始する)。
論理プロセッサ内の全プロセッサが、自身の各データを同期レジスタ54に書き込むと、投票者論理回路56は、同期レジスタ54の情報の少なくとも一部を、論理プロセッサにおける各プロセッサのメモリパーティションの対応するレジスタ57に書き込む。
本発明の少なくともいくつかの実施の形態によると、全プロセッサからの情報は、日時情報と共に、各個々のプロセッサにライトバックされる。
本発明の少なくともいくつかの実施の形態によると、全プロセッサからの情報は、日時情報と共に、各個々のプロセッサにライトバックされる。
いくつかの実施の形態では、割り込みにサービスを提供するためのシステムコール番号は、論理プロセッサ内のプロセッサのいずれかにより提案される最も高いシステムコール番号である。
各個々のプロセッサが、指定されたシステムコール番号に到達する(例えば、各個々のプロセッサが、システムコール番号が最も高い提案されたシステムコール番号である日時コールを行う)と、各個々のプロセッサのシステムコールプログラムは、その指定されたタスクを実行することに加えて、割り込みサービスルーチンを、実行のためにその各ディスパッチキューに置く。
このように、プロセッサPA1は、事前に決定されたシステムコール番号(この事例ではSCN1001、PA1の時間表の斜線領域64によって示す)の実行直後に、(斜線領域67によって示すように)割り込み5のサービスルーチンを実行する。
代替的に、サービスルーチンは、システムコールの直前に実行されてもよい。
その後、遅れているプロセッサPB1が、事前に決定されたシステムコール番号(SCN1001)に到達し、そのシステムコールを実行し(斜線領域66)、そして、例示の割り込み5の割り込みサービスルーチンを実行する(PB1の時間表の斜線領域67)。
このように、双方のプロセッサは同時に割り込みを受信せず、プロセッサは緩やかにしかロックステップされていないが、割り込みは、ユーザプログラムの同じポイントでサービスを受ける。
図4に示すように、割り込みを受信して割り込みハンドラルーチンを実行した後、割り込みサービスルーチンを実行するためのシステムコール番号に到達するまでは、各プロセッサ内の通常の処理が継続することに留意されたい。
また、図4の例示の事例では、プロセッサは、ユーザプログラムの実行ポイントに関して、最小限に相違するだけであり、したがって、図示した方法では、プロセッサは、時間をかせぐこともしないしスローにもならないことにも留意されたい。
図4に示すイベントの列は、簡単な事例であり、本発明の実施の形態による割り込みハンドリングの本質に読み手をなじませるために提示される。
他の事例は、割り込みハンドラルーチンが行うステップ、および、本発明の実施の形態によるシステムコールが実行するステップのより詳細な説明の後に、以下に提示される。
各個々のプロセッサが、指定されたシステムコール番号に到達する(例えば、各個々のプロセッサが、システムコール番号が最も高い提案されたシステムコール番号である日時コールを行う)と、各個々のプロセッサのシステムコールプログラムは、その指定されたタスクを実行することに加えて、割り込みサービスルーチンを、実行のためにその各ディスパッチキューに置く。
このように、プロセッサPA1は、事前に決定されたシステムコール番号(この事例ではSCN1001、PA1の時間表の斜線領域64によって示す)の実行直後に、(斜線領域67によって示すように)割り込み5のサービスルーチンを実行する。
代替的に、サービスルーチンは、システムコールの直前に実行されてもよい。
その後、遅れているプロセッサPB1が、事前に決定されたシステムコール番号(SCN1001)に到達し、そのシステムコールを実行し(斜線領域66)、そして、例示の割り込み5の割り込みサービスルーチンを実行する(PB1の時間表の斜線領域67)。
このように、双方のプロセッサは同時に割り込みを受信せず、プロセッサは緩やかにしかロックステップされていないが、割り込みは、ユーザプログラムの同じポイントでサービスを受ける。
図4に示すように、割り込みを受信して割り込みハンドラルーチンを実行した後、割り込みサービスルーチンを実行するためのシステムコール番号に到達するまでは、各プロセッサ内の通常の処理が継続することに留意されたい。
また、図4の例示の事例では、プロセッサは、ユーザプログラムの実行ポイントに関して、最小限に相違するだけであり、したがって、図示した方法では、プロセッサは、時間をかせぐこともしないしスローにもならないことにも留意されたい。
図4に示すイベントの列は、簡単な事例であり、本発明の実施の形態による割り込みハンドリングの本質に読み手をなじませるために提示される。
他の事例は、割り込みハンドラルーチンが行うステップ、および、本発明の実施の形態によるシステムコールが実行するステップのより詳細な説明の後に、以下に提示される。
図5(図5Aおよび図5Bを含む)は、本発明の実施の形態による割り込みハンドラルーチンのフロー図を示している。
このプロセスは、割り込みのアサートおよび割り込みハンドラルーチンの実行によって開始することができる(ブロック500)。
次のステップは、割り込みを無効にすることとすることができる(ブロック502)。
このステップに続いて、割り込みハンドラをトリガした割り込みが、非協調プロセスタイマの満了であったかどうかが判断される(ブロック504)。
非協調プロセスタイマが、割り込みハンドラのこのインスタンスを引き起こした場合には、非協調プロセスハンドラが呼び出される(ブロック506)。
非協調プロセス、および、本発明の実施の形態によるそれら非協調プロセスをハンドリングする方法は、図12について以下でより十分に説明される。
割り込みは、非協調プロセスタイマの満了によって引き起こされないと仮定すると、このトリガ割り込みは、割り込みタイプの表示を含めて、保留リストに加えられる(ブロック508)。
Itanium(登録商標)プロセッサファミリーからのプロセッサを実施するシステムでは、割り込みタイプの決定は、割り込みベクトルレジスタ(IVR)を読み出すことによって行われうる。
したがって、保留リストは、アサートされた割り込みのリストであるが、それらの割り込みに対して、ランデブーポイントをスケジューリングするプロセスは、まだ開始していない。
このプロセスは、割り込みのアサートおよび割り込みハンドラルーチンの実行によって開始することができる(ブロック500)。
次のステップは、割り込みを無効にすることとすることができる(ブロック502)。
このステップに続いて、割り込みハンドラをトリガした割り込みが、非協調プロセスタイマの満了であったかどうかが判断される(ブロック504)。
非協調プロセスタイマが、割り込みハンドラのこのインスタンスを引き起こした場合には、非協調プロセスハンドラが呼び出される(ブロック506)。
非協調プロセス、および、本発明の実施の形態によるそれら非協調プロセスをハンドリングする方法は、図12について以下でより十分に説明される。
割り込みは、非協調プロセスタイマの満了によって引き起こされないと仮定すると、このトリガ割り込みは、割り込みタイプの表示を含めて、保留リストに加えられる(ブロック508)。
Itanium(登録商標)プロセッサファミリーからのプロセッサを実施するシステムでは、割り込みタイプの決定は、割り込みベクトルレジスタ(IVR)を読み出すことによって行われうる。
したがって、保留リストは、アサートされた割り込みのリストであるが、それらの割り込みに対して、ランデブーポイントをスケジューリングするプロセスは、まだ開始していない。
例示のプロセスの次のステップは、まだ完了していないランデブーポイントのスケジューリングの試みがあったかどうかの判断でありうる(ブロック510)。
プロセッサの見地から、ランデブーのスケジューリングは、提案されたランデブー情報を同期レジスタ54に書き込むこと、および、論理プロセッサの一部またはすべてのプロセッサから確認を受信することの2ステップのプロセスとすることができる。
したがって、まだ完了していないランデブーポイントのスケジューリングは、まだ返されていないデータが同期レジスタ54へ書き込まれた状況、または、データは返されたが、まだ解析されていない状況とすることができる。
ランデブーポイントをスケジューリングする未処理の試みが存在しない場合、例示の方法は、最も高い優先度の割り込みを、保留リストから選択することができる(ブロック512)。
この最も高い優先度の割り込みは、トリガ割り込みであってもよいし、保留リストに先に置かれた他のより高い優先度の割り込みであってもよい。
代替的な実施の形態は、複数の最も高い優先度の割り込みを、保留リストから選択しうる。
その後、メモリパーティションのレジスタ57(このレジスタ57に、投票者論理回路は最終的にデータを書き込む)はクリアされ、割り込み番号、および、割り込みにサービスを提供するための提案されたシステムコール番号が、同期レジスタ54に書き込まれる(ブロック514)。
システムコール番号は、(図3に位置72によって示すように)各プロセッサのメモリパーティション52内に存在する番号であってよい。
この番号は、任意の開始ポイントから行われたシステムコールの回数を示す。
本発明の少なくともいくつかの実施の形態によると、提案されたシステムコール番号は、1つずつインクリメントされる現在のシステムコール番号であってよい。
2つ以上ずつシステムコール番号をインクリメントして、提案されたシステムコール番号を作成することも、本発明の範囲および精神の範囲内にある。
割り込み識別子および提案されたシステムコール番号の書き込み(ブロック512)は、図4では、(プロセッサPA1については)ライン60および(プロセッサPB1については)ライン62によって示されている。
プロセッサの見地から、ランデブーのスケジューリングは、提案されたランデブー情報を同期レジスタ54に書き込むこと、および、論理プロセッサの一部またはすべてのプロセッサから確認を受信することの2ステップのプロセスとすることができる。
したがって、まだ完了していないランデブーポイントのスケジューリングは、まだ返されていないデータが同期レジスタ54へ書き込まれた状況、または、データは返されたが、まだ解析されていない状況とすることができる。
ランデブーポイントをスケジューリングする未処理の試みが存在しない場合、例示の方法は、最も高い優先度の割り込みを、保留リストから選択することができる(ブロック512)。
この最も高い優先度の割り込みは、トリガ割り込みであってもよいし、保留リストに先に置かれた他のより高い優先度の割り込みであってもよい。
代替的な実施の形態は、複数の最も高い優先度の割り込みを、保留リストから選択しうる。
その後、メモリパーティションのレジスタ57(このレジスタ57に、投票者論理回路は最終的にデータを書き込む)はクリアされ、割り込み番号、および、割り込みにサービスを提供するための提案されたシステムコール番号が、同期レジスタ54に書き込まれる(ブロック514)。
システムコール番号は、(図3に位置72によって示すように)各プロセッサのメモリパーティション52内に存在する番号であってよい。
この番号は、任意の開始ポイントから行われたシステムコールの回数を示す。
本発明の少なくともいくつかの実施の形態によると、提案されたシステムコール番号は、1つずつインクリメントされる現在のシステムコール番号であってよい。
2つ以上ずつシステムコール番号をインクリメントして、提案されたシステムコール番号を作成することも、本発明の範囲および精神の範囲内にある。
割り込み識別子および提案されたシステムコール番号の書き込み(ブロック512)は、図4では、(プロセッサPA1については)ライン60および(プロセッサPB1については)ライン62によって示されている。
次に、即時動作割り込み(immediate action interrupt)を説明するために迂回して、同期レジスタへの書き込みの後、プロセスの次のステップは、割り込み番号および提案されたシステムコール番号を保留ランデブーログに書き込んで、保留リストから割り込み(または複数の割り込み)を削除することとすることができる(ブロック518)。
したがって、保留ランデブーログは、提案は行われているが、確認がまだ受信されていないか、または、合意に達していない割り込みのリストである。
他のプロセッサが合意した確認が、投票者論理回路から受信されると、図5を実施するプログラムに加えて、他のプログラム(詳細には、図7について説明するようなシステムコールプログラム)も、保留ランデブーログからそのエントリをクリアする。
本発明の少なくともいくつかの実施の形態によると、保留ランデブーログは、各プロセッサのメモリパーティション内の1組のメモリ位置46(図3参照)であってよい。
その後、割り込みが有効にされ(ブロック520)、割り込みハンドラプロセスは終了する(ブロック522)。
次に、割り込みハンドラルーチンとの関連で即時動作割り込みの説明に移る。
したがって、保留ランデブーログは、提案は行われているが、確認がまだ受信されていないか、または、合意に達していない割り込みのリストである。
他のプロセッサが合意した確認が、投票者論理回路から受信されると、図5を実施するプログラムに加えて、他のプログラム(詳細には、図7について説明するようなシステムコールプログラム)も、保留ランデブーログからそのエントリをクリアする。
本発明の少なくともいくつかの実施の形態によると、保留ランデブーログは、各プロセッサのメモリパーティション内の1組のメモリ位置46(図3参照)であってよい。
その後、割り込みが有効にされ(ブロック520)、割り込みハンドラプロセスは終了する(ブロック522)。
次に、割り込みハンドラルーチンとの関連で即時動作割り込みの説明に移る。
図4について説明したように、ユーザプログラムは、割り込みのアサートの後に実行を再開することができ、したがって、プロセッサがどの割り込みにサービスを提供するかについて合意するための時間、および、割り込みにサービスを提供するためのシステムコール番号を与える。
一方、いくつかの割り込みは、(ユーザプログラムの継続実行を可能にすることなく)即座にサービスを受ける必要があり、したがって、「即時動作割り込み」と呼ばれうる。
即時動作割り込みは、ページフォールトに加えて、非協調プロセスを訂正する動作も含みうる。
即時動作型でない割り込みは、入出力(I/O)完了割り込み、キューに入れられたイベントの割り込み、および、ブートオペレーション中にプロセッサ間で情報を交換するソフトウェアイベント割り込みを含みうる。
まだ完了していないランデブーポイントをスケジューリングする試みがあったかどうかの判断(ブロック510)に戻って、ランデブーポイントをスケジューリングする未処理の試みが存在する場合、次のステップは、投票者論理回路が、先の未確認のランデブーポイントに関する情報をライトバックしたかどうかをチェックすることとすることができる(ブロック524)。
投票者論理回路が、まだデータをライトバックしていない場合(ブロック524)、次のステップは、保留リストに即時動作割り込みが存在するかどうかの判断とすることができる(ブロック528)。
即時動作割り込みが保留リストに存在しない場合には(ブロック528)、前の割り込みのランデブーポイントのスケジューリングはまだ完了していないので、割り込みが有効にされ(ブロック520)、そして、プロセスは終了し(ブロック522)、いくつかの実施の形態によると、一度に1つのスケジューリングの試みのみがアクティブにされうる。
他方、即時動作割り込みが、保留リストに存在する場合には(ブロック528)、プロセスは、前のスケジューリングの試みからのデータのライトバックをソフトウェアループで待機する(ブロック530)。
投票者論理回路が、レジスタ57にデータをライトバックすると、プロセスは、図5Bの例示の方法のステップに移動する。
同様に、ランデブーポイントをスケジューリングする未処理の試みが存在し(ブロック510)、投票者論理回路がデータをライトバックしていた場合には(ブロック524)、図5Bの例示の方法のステップが起動される。
また、例示のプロセスは、ちょうど提案された割り込みが即時動作型であったかどうかの判断(ブロック516)を介して、ソフトウェアループで待機することにも達することができ(ブロック530)、その後、図5Bの例示のステップに達することができる。
一方、いくつかの割り込みは、(ユーザプログラムの継続実行を可能にすることなく)即座にサービスを受ける必要があり、したがって、「即時動作割り込み」と呼ばれうる。
即時動作割り込みは、ページフォールトに加えて、非協調プロセスを訂正する動作も含みうる。
即時動作型でない割り込みは、入出力(I/O)完了割り込み、キューに入れられたイベントの割り込み、および、ブートオペレーション中にプロセッサ間で情報を交換するソフトウェアイベント割り込みを含みうる。
まだ完了していないランデブーポイントをスケジューリングする試みがあったかどうかの判断(ブロック510)に戻って、ランデブーポイントをスケジューリングする未処理の試みが存在する場合、次のステップは、投票者論理回路が、先の未確認のランデブーポイントに関する情報をライトバックしたかどうかをチェックすることとすることができる(ブロック524)。
投票者論理回路が、まだデータをライトバックしていない場合(ブロック524)、次のステップは、保留リストに即時動作割り込みが存在するかどうかの判断とすることができる(ブロック528)。
即時動作割り込みが保留リストに存在しない場合には(ブロック528)、前の割り込みのランデブーポイントのスケジューリングはまだ完了していないので、割り込みが有効にされ(ブロック520)、そして、プロセスは終了し(ブロック522)、いくつかの実施の形態によると、一度に1つのスケジューリングの試みのみがアクティブにされうる。
他方、即時動作割り込みが、保留リストに存在する場合には(ブロック528)、プロセスは、前のスケジューリングの試みからのデータのライトバックをソフトウェアループで待機する(ブロック530)。
投票者論理回路が、レジスタ57にデータをライトバックすると、プロセスは、図5Bの例示の方法のステップに移動する。
同様に、ランデブーポイントをスケジューリングする未処理の試みが存在し(ブロック510)、投票者論理回路がデータをライトバックしていた場合には(ブロック524)、図5Bの例示の方法のステップが起動される。
また、例示のプロセスは、ちょうど提案された割り込みが即時動作型であったかどうかの判断(ブロック516)を介して、ソフトウェアループで待機することにも達することができ(ブロック530)、その後、図5Bの例示のステップに達することができる。
図5Bは、投票者論理回路からのデータの返信に応答して行われるステップを示している。
詳細には、即時動作割り込みが、割り込みハンドラのこの実行において提案されたかどうかについての判断が行われる(ブロック550)。
(図5Aの)ブロック524を経由してこの例示のサブプロセスに入った場合には、即時動作割り込みは、このプロセッサによって事前に提案されていなかったことになる。
一方、(図5Aの)ブロック530を経由してこの例示のサブプロセスに入った場合には、即時動作割り込みが事前に提案されたか、または、保留リストに即時動作割り込みが存在する。
このプロセッサによる事前に提案された割り込みが、即時動作型でなかった場合には、他のプロセッサが、即時動作割り込みのサービス提供を提案したかどうかについての判断が行われる(ブロック552)。
提案した場合には、保留ランデブーログの割り込みが保留リストに戻され(ブロック560)、保留リストから最も高い優先度の割り込みを選択することから実行が再開する(図5Aのブロック512)。
論理プロセッサの他のプロセッサが、即時動作割り込みにサービスを提供することを提案しなかった場合には(再びブロック552)、割り込みと、他のプロセッサが提案したそれら割り込みにサービスを提供するためのシステムコール番号とについての表記が、保留ランデブーログに行われる(ブロック553)。
その後、どの割り込みにサービスを提供するかについてプロセッサが合意するかどうかの判断(ブロック554)。
割り込みについて合意がある場合には、保留ランデブーログにおける当該合意のある1つまたは2つ以上の割り込みが、確認リストに移動され(ブロック562)、最も高い優先度の割り込みを保留リストから選択することから実行が再開される(図5Aのブロック512)。
したがって、別のプロセッサが即時動作割り込みを提案した場合(ブロック552および560)を除いて、割り込みは、一旦保留ランデブーログに置かれると、それら割り込みにサービスを提供するプロセッサの合意があるまで、保留ランデブーログに留まることになる。
詳細には、即時動作割り込みが、割り込みハンドラのこの実行において提案されたかどうかについての判断が行われる(ブロック550)。
(図5Aの)ブロック524を経由してこの例示のサブプロセスに入った場合には、即時動作割り込みは、このプロセッサによって事前に提案されていなかったことになる。
一方、(図5Aの)ブロック530を経由してこの例示のサブプロセスに入った場合には、即時動作割り込みが事前に提案されたか、または、保留リストに即時動作割り込みが存在する。
このプロセッサによる事前に提案された割り込みが、即時動作型でなかった場合には、他のプロセッサが、即時動作割り込みのサービス提供を提案したかどうかについての判断が行われる(ブロック552)。
提案した場合には、保留ランデブーログの割り込みが保留リストに戻され(ブロック560)、保留リストから最も高い優先度の割り込みを選択することから実行が再開する(図5Aのブロック512)。
論理プロセッサの他のプロセッサが、即時動作割り込みにサービスを提供することを提案しなかった場合には(再びブロック552)、割り込みと、他のプロセッサが提案したそれら割り込みにサービスを提供するためのシステムコール番号とについての表記が、保留ランデブーログに行われる(ブロック553)。
その後、どの割り込みにサービスを提供するかについてプロセッサが合意するかどうかの判断(ブロック554)。
割り込みについて合意がある場合には、保留ランデブーログにおける当該合意のある1つまたは2つ以上の割り込みが、確認リストに移動され(ブロック562)、最も高い優先度の割り込みを保留リストから選択することから実行が再開される(図5Aのブロック512)。
したがって、別のプロセッサが即時動作割り込みを提案した場合(ブロック552および560)を除いて、割り込みは、一旦保留ランデブーログに置かれると、それら割り込みにサービスを提供するプロセッサの合意があるまで、保留ランデブーログに留まることになる。
図5Bをさらに参照して、ブロック550に戻り、事前に提案された割り込みが即時動作型(ブロック530を通じたエントリ)であった場合、投票者論理回路により返信されたデータが解析されて、論理プロセッサ内の他のプロセッサが、即時動作割り込みにサービスを提供することを同様に提案したかどうかが判断される(ブロック558)。
提案した場合には、適切な即時動作割り込みサービスルーチンが起動され(ブロック564)、その表示が保留リストから削除され、サービスルーチンから復帰すると、最も高い優先度の割り込みを保留リストから選択することから実行が再開する(図5Aのブロック512)。
プロセッサが合意しない場合、即時動作割り込みは、保留リストに再び置かれ(ブロック566)、最も高い優先度の割り込みを保留リストから選択することから実行が再開する(ブロック5Aのブロック512)。
一方、この場合、リストにちょうど置かれた即時動作割り込みが、最も高い優先度の割り込みであり、したがって、図5の割り込みハンドラルーチンは、再度、論理プロセッサにおけるプロセッサに、その即時動作割り込みにサービスを提供することに合意させるプロセスを直ちに開始する。
提案した場合には、適切な即時動作割り込みサービスルーチンが起動され(ブロック564)、その表示が保留リストから削除され、サービスルーチンから復帰すると、最も高い優先度の割り込みを保留リストから選択することから実行が再開する(図5Aのブロック512)。
プロセッサが合意しない場合、即時動作割り込みは、保留リストに再び置かれ(ブロック566)、最も高い優先度の割り込みを保留リストから選択することから実行が再開する(ブロック5Aのブロック512)。
一方、この場合、リストにちょうど置かれた即時動作割り込みが、最も高い優先度の割り込みであり、したがって、図5の割り込みハンドラルーチンは、再度、論理プロセッサにおけるプロセッサに、その即時動作割り込みにサービスを提供することに合意させるプロセスを直ちに開始する。
図6は、同期論理回路18内で実施されて、そのランデブーポイントスケジューリング部を実行することができるプロセスのフロー図を示している。
図6に示すステップは、同期論理回路の一部としてのプロセッサまたはマイクロコントローラ(具体的に図示せず)上で実行されるソフトウェアで実施されうるし、このプロセスは、おそらく例示のステップを実施する状態マシンとして設計された特定用途向け集積回路(ASIC)としてのハードウェアでも実施されうる。
プロセスは開始して(ブロック600)、同期レジスタ54のトリガレジスタにデータが存在するかどうかの判断(ブロック602)に移動する。
いくつかの実施の形態では、同期論理回路18は、書き込まれたデータが「新しい」か「古い」かに気付かないことがある。
これらの実施の形態では、各プロセッサが書き込みを行うレジスタ54の少なくとも1つが、トリガレジスタとして動作することができ、各プロセッサに受信されたデータの少なくとも一部を書き込む前に、すべてのプロセッサからのデータを待機するプロセスの一部としてのタイマを起動する。
代替的な実施の形態では、同期論理回路18は、データを比較して、データが「古い」か「新しい」かを判断できるように十分に高度化されてもよい。
図6に示すステップは、同期論理回路の一部としてのプロセッサまたはマイクロコントローラ(具体的に図示せず)上で実行されるソフトウェアで実施されうるし、このプロセスは、おそらく例示のステップを実施する状態マシンとして設計された特定用途向け集積回路(ASIC)としてのハードウェアでも実施されうる。
プロセスは開始して(ブロック600)、同期レジスタ54のトリガレジスタにデータが存在するかどうかの判断(ブロック602)に移動する。
いくつかの実施の形態では、同期論理回路18は、書き込まれたデータが「新しい」か「古い」かに気付かないことがある。
これらの実施の形態では、各プロセッサが書き込みを行うレジスタ54の少なくとも1つが、トリガレジスタとして動作することができ、各プロセッサに受信されたデータの少なくとも一部を書き込む前に、すべてのプロセッサからのデータを待機するプロセスの一部としてのタイマを起動する。
代替的な実施の形態では、同期論理回路18は、データを比較して、データが「古い」か「新しい」かを判断できるように十分に高度化されてもよい。
プロセッサが、トリガレジスタに書き込みを行うと(ブロック602)、論理プロセッサに2つ以上のプロセッサが存在するかどうかについての判断が行われる(ブロック603)。
例えば、2重システムで1つのプロセッサが故障すると、論理プロセッサは、単一のプロセッサのみによって動作することができる。
同様に、3重化システムで2つのプロセッサが故障すると、論理プロセッサは、単一のプロセッサのみで動作することができる。
論理プロセッサにおいて1つのプロセッサしかアクティブでない場合には、データは、直ちにライトバックされうる(ブロック618)。
例えば、2重システムで1つのプロセッサが故障すると、論理プロセッサは、単一のプロセッサのみによって動作することができる。
同様に、3重化システムで2つのプロセッサが故障すると、論理プロセッサは、単一のプロセッサのみで動作することができる。
論理プロセッサにおいて1つのプロセッサしかアクティブでない場合には、データは、直ちにライトバックされうる(ブロック618)。
2つ以上のプロセッサが、論理プロセッサ内でアクティブであると仮定すると、タイマが起動され(ブロック604)、論理プロセッサの第2のプロセッサが、その各トリガレジスタに書き込みを行うかどうかについての判断が行われる(ブロック606)。
書き込みを行わない場合には、トリガレジスタが書き込まれるまで、または、タイマが満了するまで、プロセスは、ソフトウェアループで待機する(ブロック606および608)。
3つ以上のプロセッサが、論理プロセッサに存在する場合には(ブロック610)、タイマが再起動され(ブロック612)、この場合も、第3のプロセッサのトリガレジスタが書き込まれるまで、または、タイマが満了するまで、プロセスは、ソフトウェアループで待機する(ブロック614および616)。
図6の方法は、3つのプロセッサを備える論理プロセッサの例示である。
より多くのプロセッサが存在する場合には、追加されたタイマの再起動およびソフトウェアループでの待機が追加されうる。
同様に、論理プロセッサが、2つのプロセッサしか備えていない場合には、第3のプロセッサに関連したステップが省略されうる。
すべてのデータが受信されると、それらデータの少なくとも一部は、日時データと共に、各論理プロセッサに書き込まれる(ブロック618)。
プロセッサの1つが、タイマの満了前に自身の各トリガレジスタに書き込むことができない場合に、同期論理回路18に書き込まれたデータの少なくとも一部は、各プロセッサにライトバックされる(ブロック620)。
プロセッサによって供給されたデータを書き込むことに加えて、ステータスワードも、各メモリパーティションに書き込まれうる。
このステータスワードは、オペレーションが完了したこと、どのプロセッサがオペレーションに参加したかの表示、および、どのプロセッサ(もしあれば)がタイムアウトしたか(再びブロック620)を示す。
或るプロセッサが、割り当てられた時刻に書き込みを行えない場合に、その支障のあるプロセッサは論理プロセッサから除去され(ブロック622)、例示のプロセスは新たに開始する。
本発明の少なくともいくつかの実施の形態によると、プロセッサが、数ミリ秒内で第1のプロセッサの同期レジスタにデータを書き込まない場合に、訂正動作が取られるべきである。
書き込みを行わない場合には、トリガレジスタが書き込まれるまで、または、タイマが満了するまで、プロセスは、ソフトウェアループで待機する(ブロック606および608)。
3つ以上のプロセッサが、論理プロセッサに存在する場合には(ブロック610)、タイマが再起動され(ブロック612)、この場合も、第3のプロセッサのトリガレジスタが書き込まれるまで、または、タイマが満了するまで、プロセスは、ソフトウェアループで待機する(ブロック614および616)。
図6の方法は、3つのプロセッサを備える論理プロセッサの例示である。
より多くのプロセッサが存在する場合には、追加されたタイマの再起動およびソフトウェアループでの待機が追加されうる。
同様に、論理プロセッサが、2つのプロセッサしか備えていない場合には、第3のプロセッサに関連したステップが省略されうる。
すべてのデータが受信されると、それらデータの少なくとも一部は、日時データと共に、各論理プロセッサに書き込まれる(ブロック618)。
プロセッサの1つが、タイマの満了前に自身の各トリガレジスタに書き込むことができない場合に、同期論理回路18に書き込まれたデータの少なくとも一部は、各プロセッサにライトバックされる(ブロック620)。
プロセッサによって供給されたデータを書き込むことに加えて、ステータスワードも、各メモリパーティションに書き込まれうる。
このステータスワードは、オペレーションが完了したこと、どのプロセッサがオペレーションに参加したかの表示、および、どのプロセッサ(もしあれば)がタイムアウトしたか(再びブロック620)を示す。
或るプロセッサが、割り当てられた時刻に書き込みを行えない場合に、その支障のあるプロセッサは論理プロセッサから除去され(ブロック622)、例示のプロセスは新たに開始する。
本発明の少なくともいくつかの実施の形態によると、プロセッサが、数ミリ秒内で第1のプロセッサの同期レジスタにデータを書き込まない場合に、訂正動作が取られるべきである。
さまざまな実施の形態の論理プロセッサは、緩やかなロックステップ実行を実施するので、各プロセッサの割り込みハンドラルーチン(および、後に分かるように、システムコール)が同期レジスタ54にデータを書き込む時刻は、正確に整列していないことがある。
したがって、ブロック604、616を組み合わせることによって、すべてのプロセッサが割り込みを検出して割り込みに反応することができる一定の余裕が可能になる。
図3を手短に参照して、同期レジスタから各プロセッサへの確認データのライトバックには、同期レジスタ54から、例えば位置57Aおよび57Bといった各メモリパーティションの位置へデータをコピーすることが必要となることがある。
本発明の少なくともいくつかの実施の形態によると、投票者論理回路56がメモリパーティションに書き込んだデータは、ホストプロセッサの自然キャッシュブロックアラインメント(natural cache block alignment)と整列される。
したがって、ブロック604、616を組み合わせることによって、すべてのプロセッサが割り込みを検出して割り込みに反応することができる一定の余裕が可能になる。
図3を手短に参照して、同期レジスタから各プロセッサへの確認データのライトバックには、同期レジスタ54から、例えば位置57Aおよび57Bといった各メモリパーティションの位置へデータをコピーすることが必要となることがある。
本発明の少なくともいくつかの実施の形態によると、投票者論理回路56がメモリパーティションに書き込んだデータは、ホストプロセッサの自然キャッシュブロックアラインメント(natural cache block alignment)と整列される。
続ける前に要約すると、割り込みが、割り込みハンドラルーチンの実行をトリガする。
図4のハッシュされた(網掛け(hashed))領域59は、割り込みハンドラルーチンの実行を表し、したがって、ユーザプログラムが一時的に停止されることを表している。
ランデブーポイントをスケジューリングする現在未完了の試みが存在しないと仮定すると、割り込みハンドラは、割り込みにサービスを提供するための提案されたシステムコール番号と共に、割り込み識別子を投票者論理回路56の同期レジスタ54に書き込む(図4のライン60および62を参照、図5のブロック514)。
論理プロセッサ内の各プロセッサが自身の情報を書き込むと、投票者論理回路56は、その情報の少なくとも一部を各プロセッサのメモリパーティションの位置57に書き込む(図4のライン65を参照、図6のブロック618または620)。
適切なシステムコール番号を有するシステムコールにおいて、その割り込みの割り込みサービスルーチンが、スケジューラキューに置かれ、サービスの提供を受ける。
図4のハッシュされた(網掛け(hashed))領域59は、割り込みハンドラルーチンの実行を表し、したがって、ユーザプログラムが一時的に停止されることを表している。
ランデブーポイントをスケジューリングする現在未完了の試みが存在しないと仮定すると、割り込みハンドラは、割り込みにサービスを提供するための提案されたシステムコール番号と共に、割り込み識別子を投票者論理回路56の同期レジスタ54に書き込む(図4のライン60および62を参照、図5のブロック514)。
論理プロセッサ内の各プロセッサが自身の情報を書き込むと、投票者論理回路56は、その情報の少なくとも一部を各プロセッサのメモリパーティションの位置57に書き込む(図4のライン65を参照、図6のブロック618または620)。
適切なシステムコール番号を有するシステムコールにおいて、その割り込みの割り込みサービスルーチンが、スケジューラキューに置かれ、サービスの提供を受ける。
図7は、例えば、日時の取り出しといったシステムコールの通常のタスクに加えて、ランデブーポイントの機能を果たし、割り込みハンドリングを調整する少なくともいくつかのシステムコールによって実施されるステップの少なくとも一部を示している。
したがって、図7に提示される方法のステップは、どの1つのシステムコールでも実行できるステップの組全体であるとは主張せず、例示のフロー図は、システムコールの少なくとも一部が、割り込みハンドリングを調整するために、および、場合により緩やかなロックステッププロセッサの同期を行うために実行することができる付加的なステップを強調する。
このプロセスは、ユーザプログラムが現在の日時の要求またはメモリ割り当ての要求等のシステムコールを発行することによって開始することができる(ブロック700)。
その後、システムコールプログラムは、割り込みを無効にすることができ(ブロック702)、システムコール番号をインクリメントすることができ(ブロック704)、その結果、特定のプロセッサは、自身がどのシステムコール番号を現在実行中であるかを知る。
次に、非協調プロセス(ブロック706、724、および726)をスキップして、プロセスの次のステップは、完了したランデブーポイントをスケジューリングする試みがあるかどうかの判断とすることができる(ブロック708)。
これは、レジスタ57の非ゼロのデータをチェックすることによって判断されうる。
スケジューリングする試みがある場合に、次のステップは、他の任意のプロセッサが即時動作割り込みにサービスを提供することを提案したかどうかの判断とすることができる(ブロック730)。
提案した場合には、保留ランデブーログの割り込みは、保留リストに戻される(ブロック736)。
いくつかの実施の形態では、他のプロセッサ(または他の複数のプロセッサ)に見られる即時動作割り込みのトリガが、その時点のプロセッサ(instant processor)で行われようとしており、したがって、その状況は無視され、ランデブーポイントをスケジューリングするさらなる試みが行われうると仮定する(ブロック712の判断から開始する)。
代替的な実施の形態では、処理は、即時動作割り込みをトリガした予想されたエラーへの対処を開始してもよい(具体的に図示せず)。
したがって、図7に提示される方法のステップは、どの1つのシステムコールでも実行できるステップの組全体であるとは主張せず、例示のフロー図は、システムコールの少なくとも一部が、割り込みハンドリングを調整するために、および、場合により緩やかなロックステッププロセッサの同期を行うために実行することができる付加的なステップを強調する。
このプロセスは、ユーザプログラムが現在の日時の要求またはメモリ割り当ての要求等のシステムコールを発行することによって開始することができる(ブロック700)。
その後、システムコールプログラムは、割り込みを無効にすることができ(ブロック702)、システムコール番号をインクリメントすることができ(ブロック704)、その結果、特定のプロセッサは、自身がどのシステムコール番号を現在実行中であるかを知る。
次に、非協調プロセス(ブロック706、724、および726)をスキップして、プロセスの次のステップは、完了したランデブーポイントをスケジューリングする試みがあるかどうかの判断とすることができる(ブロック708)。
これは、レジスタ57の非ゼロのデータをチェックすることによって判断されうる。
スケジューリングする試みがある場合に、次のステップは、他の任意のプロセッサが即時動作割り込みにサービスを提供することを提案したかどうかの判断とすることができる(ブロック730)。
提案した場合には、保留ランデブーログの割り込みは、保留リストに戻される(ブロック736)。
いくつかの実施の形態では、他のプロセッサ(または他の複数のプロセッサ)に見られる即時動作割り込みのトリガが、その時点のプロセッサ(instant processor)で行われようとしており、したがって、その状況は無視され、ランデブーポイントをスケジューリングするさらなる試みが行われうると仮定する(ブロック712の判断から開始する)。
代替的な実施の形態では、処理は、即時動作割り込みをトリガした予想されたエラーへの対処を開始してもよい(具体的に図示せず)。
ブロック730に戻って、他のプロセッサが、即時動作割り込みにサービスを提供することを提案しなかった場合には、次のステップは、割り込みと、他のプロセッサの提案されたシステムコール番号とを保留ランデブーログに記録することとすることができる(ブロック731)。
その後、プロセッサが、どの割り込みにサービスを提供するかについて合意するかどうかの判断(ブロック734)が行われる。
合意がある場合には、割り込みは、保留ランデブーログから確認リストへ移動され(ブロック732)、ランデブーポイントをスケジューリングするさらなる試みが行われうる(ブロック712の判断から開始する)。
確認リストは、割り込みにサービスを提供すべきとの確認であって、どのシステムコール番号で割り込みにサービスを提供すべきかの確認、が受信された当該割り込みのリストである。
例えば、或るプロセッサは割り込み5にサービスを提供することを提案する一方、第2のプロセッサは割り込み9にサービスを提供することを提案するといったように、プロセッサがどの割り込みにサービスを提供するかについて合意していない場合には(ブロック734)、その状況は、今後の提案で調整され、ランデブーポイントをスケジューリングするさらなる試みが行われうる(ブロック712の判断から開始する)。
その後、プロセッサが、どの割り込みにサービスを提供するかについて合意するかどうかの判断(ブロック734)が行われる。
合意がある場合には、割り込みは、保留ランデブーログから確認リストへ移動され(ブロック732)、ランデブーポイントをスケジューリングするさらなる試みが行われうる(ブロック712の判断から開始する)。
確認リストは、割り込みにサービスを提供すべきとの確認であって、どのシステムコール番号で割り込みにサービスを提供すべきかの確認、が受信された当該割り込みのリストである。
例えば、或るプロセッサは割り込み5にサービスを提供することを提案する一方、第2のプロセッサは割り込み9にサービスを提供することを提案するといったように、プロセッサがどの割り込みにサービスを提供するかについて合意していない場合には(ブロック734)、その状況は、今後の提案で調整され、ランデブーポイントをスケジューリングするさらなる試みが行われうる(ブロック712の判断から開始する)。
ランデブーが完了していない場合には(ブロック708)、次のステップは、まだ完了していないランデブーが開始したかどうかの判断とすることができる(ブロック710)。
一時的に保留リストの解析(ブロック712)をスキップして、例示のプロセスの次のステップは、現在のシステムコール番号について提案された割り込みが保留ランデブーログにあるかどうかをチェックすることとすることができる(ブロック714)。
保留ランデブーログにある場合、例示のプログラムは、割り込みをポーリングし(ブロック716)(割り込みはブロック702によって無効にされているので)、プロセスは、ソフトウェアループで待機する(ブロック708の判断から開始する)。
この状況では、その時点のプロセッサが提案したシステムコール番号は、最も高いシステムコール番号とすることができ、したがって、プロセッサは、確認をソフトウェアループで待機する。
一時的に保留リストの解析(ブロック712)をスキップして、例示のプロセスの次のステップは、現在のシステムコール番号について提案された割り込みが保留ランデブーログにあるかどうかをチェックすることとすることができる(ブロック714)。
保留ランデブーログにある場合、例示のプログラムは、割り込みをポーリングし(ブロック716)(割り込みはブロック702によって無効にされているので)、プロセスは、ソフトウェアループで待機する(ブロック708の判断から開始する)。
この状況では、その時点のプロセッサが提案したシステムコール番号は、最も高いシステムコール番号とすることができ、したがって、プロセッサは、確認をソフトウェアループで待機する。
現在のシステムコール番号でサービスを提供するように提案された割り込みが、保留ランデブーログに存在しない場合には(ブロック714)、次のステップは、現在のシステムコール番号についてスケジューリングされた割り込みが確認リストに存在するかどうかの判断とすることができる(ブロック718)。
したがって、現在のシステムコール番号でサービスを提供するようにスケジューリングされた、確認リストにおける割り込みは、それぞれ、それらの割り込みサービスルーチンが実行用にスケジューリングされ、それらのエントリが確認リストから除去され(ブロック720)、割り込みは有効にされ(ブロック722)、そして、システムは、その通常動作(例えば、日時コール)を実行する(ブロック723)。
図4を手短に参照して、現在のシステムコールプログラムが終了すると(網掛け領域64および66)、網掛け領域67によって示すように、タスクスケジューラに置かれた1つまたは2つ以上の割り込みサービスルーチンが実行される。
代替的に、割り込みサービスルーチンは、システムコールの主要な機能を実行する前に実行することもできる。
現在のシステムコール番号のランデブーを有する割り込みが、確認リストに存在しない場合には(ブロック718)、割り込みが有効にされ(ブロック720)、システムはその通常動作を実行する(ブロック723)。
したがって、現在のシステムコール番号でサービスを提供するようにスケジューリングされた、確認リストにおける割り込みは、それぞれ、それらの割り込みサービスルーチンが実行用にスケジューリングされ、それらのエントリが確認リストから除去され(ブロック720)、割り込みは有効にされ(ブロック722)、そして、システムは、その通常動作(例えば、日時コール)を実行する(ブロック723)。
図4を手短に参照して、現在のシステムコールプログラムが終了すると(網掛け領域64および66)、網掛け領域67によって示すように、タスクスケジューラに置かれた1つまたは2つ以上の割り込みサービスルーチンが実行される。
代替的に、割り込みサービスルーチンは、システムコールの主要な機能を実行する前に実行することもできる。
現在のシステムコール番号のランデブーを有する割り込みが、確認リストに存在しない場合には(ブロック718)、割り込みが有効にされ(ブロック720)、システムはその通常動作を実行する(ブロック723)。
本発明の少なくともいくつかの実施の形態によると、少なくとも1つの割り込み番号および提案されたシステムコール番号が投票者論理回路に書き込まれ、同じ情報が保留ランデブーログに書き込まれた(図5のブロック514および518)後は、投票者論理回路がデータを返信するまで、ランデブーポイントについてのさらなる提案は開始されえない。
したがって、いくつかの割り込みは、今後のスケジューリングのために保留リストに置かれうる(図5のブロック508)。
確認リストへの書き込み(ブロック732)、保留ランデブーログの割り込みの保留リストへの返却(ブロック736)、または、どの割り込みにサービスを提供するかについての不合意(ブロック734)によって、ランデブーポイントスケジューリングプロセスを再び開始する機会が存在する。
この理由のため、システムコールプログラムは、割り込みハンドラと同様の作業を行うことができ、保留リストをチェックすることによって、サービスのスケジューリングする必要のある割り込みがあるかどうかを判断することができる(ブロック712)。
スケジューリングする必要のある割り込みが存在する場合には、システムコールは、提案されたランデブー情報を同期レジスタ54に書き込む(ブロック740)ことを含めて、スケジューリングプロセスの初期段階を実行する。
ランデブースケジューリングの初期段階を実行するのに必要とされるステップは、図5のブロック512、514、516、530および550、566に詳細に示されている。
これら同じステップは、システムコールプログラムによって実行されうるが、図を過度に複雑化しないために、例示の方法では、単一のエントリ(ブロック740)に結合されている。
したがって、いくつかの割り込みは、今後のスケジューリングのために保留リストに置かれうる(図5のブロック508)。
確認リストへの書き込み(ブロック732)、保留ランデブーログの割り込みの保留リストへの返却(ブロック736)、または、どの割り込みにサービスを提供するかについての不合意(ブロック734)によって、ランデブーポイントスケジューリングプロセスを再び開始する機会が存在する。
この理由のため、システムコールプログラムは、割り込みハンドラと同様の作業を行うことができ、保留リストをチェックすることによって、サービスのスケジューリングする必要のある割り込みがあるかどうかを判断することができる(ブロック712)。
スケジューリングする必要のある割り込みが存在する場合には、システムコールは、提案されたランデブー情報を同期レジスタ54に書き込む(ブロック740)ことを含めて、スケジューリングプロセスの初期段階を実行する。
ランデブースケジューリングの初期段階を実行するのに必要とされるステップは、図5のブロック512、514、516、530および550、566に詳細に示されている。
これら同じステップは、システムコールプログラムによって実行されうるが、図を過度に複雑化しないために、例示の方法では、単一のエントリ(ブロック740)に結合されている。
図8は、論理プロセッサの或るプロセッサが、別のプロセッサの前に割り込みを調べ、さらに、それらのプロセッサが、どのシステムコール番号で割り込みにサービスを提供すべきかについて合意する場合に生じ得る状況を示している。
詳細には、プロセッサPA1は、割り込みのアサートの直前に、システムコール番号1003を実行する一方、プロセッサPB1は、割り込みのアサートよりもかなり前に、システムコール番号1003を実行する。
双方のプロセッサは、ライン100および102によって示すように、例示の割り込み5がシステムコール番号1004でサービスの提供を受けることを提案する。
一方、この例示の事例では、プロセッサPB1は、投票者論理回路56が同期データをプロセッサにライトバックする前に、システムコール番号1004に到達する。
この場合、割り込みがシステムコール番号1004でサービスの提供を受けることを確認するデータがライトバックされるまで、プロセッサPB1は、斜線領域104によって示すように、ソフトウェアループで待機する(図7のブロック708、710、および714)。
同様に、投票者論理回路が書き込みを行う前に、プロセッサPA1は、システムコール番号1004に到達し、同様に、プロセッサPA1は、斜線領域106によって示すように、ソフトウェアループで待機する(再び、図7のブロック708、710、および714)。
これら例示の2つのプロセッサに関連した投票者論理回路が、収集した情報をプロセッサのそれぞれのメモリパーティションにライトバックし、システムコールプログラムが、割り込みにサービスを提供すべき箇所がシステムコール番号1004であることを確認すると(図7のブロック732および734)、双方のプロセッサは、その割り込みにサービスを提供し(図7のブロック720)、通常処理を継続する。
これら2つのプロセッサは、最初はそれらの実行ポイントに関して幾分相違はあるが、投票者論理回路からの同期レジスタの書き込み時およびその後の割り込みへのサービスの提供時には、少なくとも部分的にどのように同期するようになるかについて留意されたい。
詳細には、プロセッサPA1は、割り込みのアサートの直前に、システムコール番号1003を実行する一方、プロセッサPB1は、割り込みのアサートよりもかなり前に、システムコール番号1003を実行する。
双方のプロセッサは、ライン100および102によって示すように、例示の割り込み5がシステムコール番号1004でサービスの提供を受けることを提案する。
一方、この例示の事例では、プロセッサPB1は、投票者論理回路56が同期データをプロセッサにライトバックする前に、システムコール番号1004に到達する。
この場合、割り込みがシステムコール番号1004でサービスの提供を受けることを確認するデータがライトバックされるまで、プロセッサPB1は、斜線領域104によって示すように、ソフトウェアループで待機する(図7のブロック708、710、および714)。
同様に、投票者論理回路が書き込みを行う前に、プロセッサPA1は、システムコール番号1004に到達し、同様に、プロセッサPA1は、斜線領域106によって示すように、ソフトウェアループで待機する(再び、図7のブロック708、710、および714)。
これら例示の2つのプロセッサに関連した投票者論理回路が、収集した情報をプロセッサのそれぞれのメモリパーティションにライトバックし、システムコールプログラムが、割り込みにサービスを提供すべき箇所がシステムコール番号1004であることを確認すると(図7のブロック732および734)、双方のプロセッサは、その割り込みにサービスを提供し(図7のブロック720)、通常処理を継続する。
これら2つのプロセッサは、最初はそれらの実行ポイントに関して幾分相違はあるが、投票者論理回路からの同期レジスタの書き込み時およびその後の割り込みへのサービスの提供時には、少なくとも部分的にどのように同期するようになるかについて留意されたい。
図9は、論理プロセッサにおけるプロセッサが、異なる割り込み番号のサービス提供を提案または広告する状況を示している。
図9に示す例示の事例では、プロセッサPA1は、自身の割り込みが割り込み5のアサートの直前に有効にされ、したがって、プロセッサPA1は、システムコール番号96で割り込み5にサービスを提供することを提案する。
一方、プロセッサPB1は、割り込み5および9のアサートの後になるまで、自身の割り込みを有効にしない。
説明のため、割り込み9は割り込み5よりも高い優先度を有すると仮定する。
したがって、プロセッサPB1は、割り込みを有効にした後、(割り込み9の優先度が高いために)例示のシステムコール番号96で割り込み9にサービスを提供することを提案する。
この事例のプロセッサPA1は、同期レジスタからメモリパーティションへデータをライトバックする前にシステムコール番号96に到達するので、プロセッサPA1は、ソフトウェアループで待機する(図7のブロック708、710、および714)。
同様に、プロセッサPB1は、自身が提案した割り込み9がシステムコール番号96でサービスの提供を受けることになるかどうかの確認の前にシステムコール番号96に到達し、同様に、ソフトウェアループで確認の待機も行う。
投票者論理回路が、同期データを各プロセッサのメモリパーティションにライトバックすると、各プロセッサは、割り込みタイプの不一致に気付く(一方のプロセッサは、割り込み5にサービスを提供することを提案しているのに対して、第2のプロセッサは、割り込み9にサービスを提供することを提案している)(図7のブロック734)。
いずれにしても、これらのプロセッサは、その後、先に提案されていないそれらプロセッサの最も高い優先度の割り込みを提案する(図7のブロック712および740)。
例示のPA1の場合には、割り込み9が最も高い優先度の割り込みであり、したがって、この割り込みが提案される。
さらに、プロセッサPA1は、先に、システムコール番号96で割り込み5にサービスを提供することを提案しており、その提案は依然として未処理であるので、システムコールは、ソフトウェアループで待機し続ける(図7のブロック708、710、および714)。
例示のプロセッサPB1については、先に提案していない最も高い優先度の割り込みは割り込み5であり、したがって、割り込み5が提案される(図7のブロック712および740)。
図9の2番目の例示の書き込みからのデータのライトバックによって、これらのプロセッサは、提案した最も高いシステムコール番号、この事例では97で、割り込み5および9の双方にサービスを提供することに合意する。
システムコール番号97が各プロセッサで現れると、これらの割り込みは、最も高い優先度の割り込みが最初にサービスの提供を受ける(ブロック718および720)。
図9に示す例示の事例では、プロセッサPA1は、自身の割り込みが割り込み5のアサートの直前に有効にされ、したがって、プロセッサPA1は、システムコール番号96で割り込み5にサービスを提供することを提案する。
一方、プロセッサPB1は、割り込み5および9のアサートの後になるまで、自身の割り込みを有効にしない。
説明のため、割り込み9は割り込み5よりも高い優先度を有すると仮定する。
したがって、プロセッサPB1は、割り込みを有効にした後、(割り込み9の優先度が高いために)例示のシステムコール番号96で割り込み9にサービスを提供することを提案する。
この事例のプロセッサPA1は、同期レジスタからメモリパーティションへデータをライトバックする前にシステムコール番号96に到達するので、プロセッサPA1は、ソフトウェアループで待機する(図7のブロック708、710、および714)。
同様に、プロセッサPB1は、自身が提案した割り込み9がシステムコール番号96でサービスの提供を受けることになるかどうかの確認の前にシステムコール番号96に到達し、同様に、ソフトウェアループで確認の待機も行う。
投票者論理回路が、同期データを各プロセッサのメモリパーティションにライトバックすると、各プロセッサは、割り込みタイプの不一致に気付く(一方のプロセッサは、割り込み5にサービスを提供することを提案しているのに対して、第2のプロセッサは、割り込み9にサービスを提供することを提案している)(図7のブロック734)。
いずれにしても、これらのプロセッサは、その後、先に提案されていないそれらプロセッサの最も高い優先度の割り込みを提案する(図7のブロック712および740)。
例示のPA1の場合には、割り込み9が最も高い優先度の割り込みであり、したがって、この割り込みが提案される。
さらに、プロセッサPA1は、先に、システムコール番号96で割り込み5にサービスを提供することを提案しており、その提案は依然として未処理であるので、システムコールは、ソフトウェアループで待機し続ける(図7のブロック708、710、および714)。
例示のプロセッサPB1については、先に提案していない最も高い優先度の割り込みは割り込み5であり、したがって、割り込み5が提案される(図7のブロック712および740)。
図9の2番目の例示の書き込みからのデータのライトバックによって、これらのプロセッサは、提案した最も高いシステムコール番号、この事例では97で、割り込み5および9の双方にサービスを提供することに合意する。
システムコール番号97が各プロセッサで現れると、これらの割り込みは、最も高い優先度の割り込みが最初にサービスの提供を受ける(ブロック718および720)。
図4、図8、および図9の例示のシステムでは、アサートされた割り込みのそれぞれは、イベントタイプの割り込みである。
この割り込みは、当該割り込みがイベントを示すことを意味し、即時動作が必要とされることがないことを意味する。
一方、即時動作割り込みは、異なったハンドリングを受ける。
図10は、本発明の実施の形態によるページフォールト等の即時動作割り込みのハンドリングの時間表を示している。
図10の例示の事例では、プロセッサPB1が、この例示の事例ではページフォールト(PF)である即時動作割り込みを経験する。
割り込みハンドラルーチンがトリガされ、即時動作割り込みの性質が決定され(図5のブロック516)、即時動作割り込みの表示が同期レジスタに書き込まれる(図5のブロック514)。
本発明の実施の形態によると、プロセッサPB1は、ユーザプログラムをそれ以上実行せず、他のプロセッサもページフォールトに到達したことの確認をソフトウェアループで待機する(図5のブロック530)。
図10を引き続き参照して、プロセッサPB1のページフォールトの後に、プロセッサPA1が、対応するページフォールトを経験し、その割り込みハンドラルーチンがトリガされ、ページフォールトの表示が同期レジスタに送信される。
投票者論理回路が各プロセッサからデータを受信する(または、プロセッサの1つがタイムアウトする)と、その情報は、ライン150によって例示するように、各プロセッサのメモリパーティションに書き込まれる(図6のブロック618または620)。
割り込みハンドラルーチンが、すべてのプロセッサが即時動作割り込みについて合意したことを確認すると(図5のブロック558)、各割り込みハンドラルーチンは、即時動作割り込みの割り込みサービスルーチンをスケジューリングして実行する(図5のブロック564)。
即時動作割り込みの割り込みサービスルーチンが完了した後、割り込みハンドラは、新たに、ランデブーポイントのスケジューリングを開始する(図5のブロック512から開始する)。
このページフォールトの例示の事例では、即時動作割り込みの割り込みサービスルーチンは、ページフォールトサービスルーチンであってよい。
図10に関して、各プロセッサの処理は、ページフォールトが発生するユーザプログラムのポイントにすべてのプロセッサが到達したことを確認するまで停止することに留意されたい。
この割り込みは、当該割り込みがイベントを示すことを意味し、即時動作が必要とされることがないことを意味する。
一方、即時動作割り込みは、異なったハンドリングを受ける。
図10は、本発明の実施の形態によるページフォールト等の即時動作割り込みのハンドリングの時間表を示している。
図10の例示の事例では、プロセッサPB1が、この例示の事例ではページフォールト(PF)である即時動作割り込みを経験する。
割り込みハンドラルーチンがトリガされ、即時動作割り込みの性質が決定され(図5のブロック516)、即時動作割り込みの表示が同期レジスタに書き込まれる(図5のブロック514)。
本発明の実施の形態によると、プロセッサPB1は、ユーザプログラムをそれ以上実行せず、他のプロセッサもページフォールトに到達したことの確認をソフトウェアループで待機する(図5のブロック530)。
図10を引き続き参照して、プロセッサPB1のページフォールトの後に、プロセッサPA1が、対応するページフォールトを経験し、その割り込みハンドラルーチンがトリガされ、ページフォールトの表示が同期レジスタに送信される。
投票者論理回路が各プロセッサからデータを受信する(または、プロセッサの1つがタイムアウトする)と、その情報は、ライン150によって例示するように、各プロセッサのメモリパーティションに書き込まれる(図6のブロック618または620)。
割り込みハンドラルーチンが、すべてのプロセッサが即時動作割り込みについて合意したことを確認すると(図5のブロック558)、各割り込みハンドラルーチンは、即時動作割り込みの割り込みサービスルーチンをスケジューリングして実行する(図5のブロック564)。
即時動作割り込みの割り込みサービスルーチンが完了した後、割り込みハンドラは、新たに、ランデブーポイントのスケジューリングを開始する(図5のブロック512から開始する)。
このページフォールトの例示の事例では、即時動作割り込みの割り込みサービスルーチンは、ページフォールトサービスルーチンであってよい。
図10に関して、各プロセッサの処理は、ページフォールトが発生するユーザプログラムのポイントにすべてのプロセッサが到達したことを確認するまで停止することに留意されたい。
図11は、イベント割り込みおよび即時動作割り込みの相対的な取り扱いを示している。
詳細には、図11は、2つのプロセッサPA1およびPB1を有する例示のシステムにおいて、プロセッサPA1がページフォールト割り込み前に割り込み5の表示を受信する一方、プロセッサPB1がページフォールト割り込み後に割り込み5を受信することを示している。
この場合、プロセッサPA1上で実行される割り込みハンドラルーチンは、システムコール番号1006で割り込み5にサービスを提供する提案を書き込む(図5のブロック514)。
一方、(ページフォールトに基づいて)プロセッサPB1上で実行される割り込みハンドラルーチンは、ページフォールトにサービスを提供することを提案し、その提案が確認されるまでソフトウェアループで待機する(図5のブロック514、516、および530)。
その後、プロセッサPA1は自身のページフォールトに遭遇する。
この例示の状況では、プロセッサPA1は、(割り込み5の)未確認のランデブーを有し、したがって、ページフォールトによってトリガされた割り込みハンドラルーチンの実行時に、プロセッサは、投票者論理回路が同期情報をライトバックするまでソフトウェアループで待機する(図5のブロック530)。
これら2つのプロセッサに関連した投票者論理回路は、同期レジスタの情報をそれらプロセッサのそれぞれのメモリパーティションにライトバックする。
一方、同期データの各プロセッサのメモリパーティションへのこの最初の書き込みにおいて、一方のプロセッサは、システムコール番号1006で割り込み5にサービスを提供することを提案しているが、他方のプロセッサは、ページフォールトにサービスを提供することを提案している。
この場合、各プロセッサは、割り込みにサービスを提供する試みを取りやめる(プロセッサPB1については、ブロック566のオペレーションによる。
プロセッサPA1については、図5のブロック552、560のオペレーションによる)。
いずれの場合にも、即時動作割り込みは、(図5のブロック512で選択された)最も高い優先度の割り込みであり、したがって、双方のプロセッサは、即時動作割り込みにサービスを提供することを提案する。
その後、投票者論理回路56は、各プロセッサのメモリパーティションに情報をライトバックし、図におけるこの時に、プロセッサは、ページフォールトに対処すべきことに合意する。
図11を引き続き参照して、その後、即時動作割り込みが、サービスの提供を受けると、プロセッサPA1およびPB1のそれぞれは、特定のシステムコール番号、この例示の事例ではシステムコール番号1006で、先にアサートされた割り込み5をスケジューリングすることを提案する。
ページフォールトがクリアされた以上、システムコール番号1006で割り込み5へのサービス提供が、他の例示の実施の形態で説明したように行われうる。
図4および図8〜図11のそれぞれは、2つのプロセッサのみを示しているが、説明した技法は、各論理プロセッサに3つまたは4つ以上のプロセッサを有するコンピュータシステム1000にも等しく適用可能であることが理解されよう。
図4および図8〜図11についての説明は、さまざまなイベント割り込みおよび即時動作割り込みのハンドリングを過度に複雑にしないために、2つのプロセッサを示す。
詳細には、図11は、2つのプロセッサPA1およびPB1を有する例示のシステムにおいて、プロセッサPA1がページフォールト割り込み前に割り込み5の表示を受信する一方、プロセッサPB1がページフォールト割り込み後に割り込み5を受信することを示している。
この場合、プロセッサPA1上で実行される割り込みハンドラルーチンは、システムコール番号1006で割り込み5にサービスを提供する提案を書き込む(図5のブロック514)。
一方、(ページフォールトに基づいて)プロセッサPB1上で実行される割り込みハンドラルーチンは、ページフォールトにサービスを提供することを提案し、その提案が確認されるまでソフトウェアループで待機する(図5のブロック514、516、および530)。
その後、プロセッサPA1は自身のページフォールトに遭遇する。
この例示の状況では、プロセッサPA1は、(割り込み5の)未確認のランデブーを有し、したがって、ページフォールトによってトリガされた割り込みハンドラルーチンの実行時に、プロセッサは、投票者論理回路が同期情報をライトバックするまでソフトウェアループで待機する(図5のブロック530)。
これら2つのプロセッサに関連した投票者論理回路は、同期レジスタの情報をそれらプロセッサのそれぞれのメモリパーティションにライトバックする。
一方、同期データの各プロセッサのメモリパーティションへのこの最初の書き込みにおいて、一方のプロセッサは、システムコール番号1006で割り込み5にサービスを提供することを提案しているが、他方のプロセッサは、ページフォールトにサービスを提供することを提案している。
この場合、各プロセッサは、割り込みにサービスを提供する試みを取りやめる(プロセッサPB1については、ブロック566のオペレーションによる。
プロセッサPA1については、図5のブロック552、560のオペレーションによる)。
いずれの場合にも、即時動作割り込みは、(図5のブロック512で選択された)最も高い優先度の割り込みであり、したがって、双方のプロセッサは、即時動作割り込みにサービスを提供することを提案する。
その後、投票者論理回路56は、各プロセッサのメモリパーティションに情報をライトバックし、図におけるこの時に、プロセッサは、ページフォールトに対処すべきことに合意する。
図11を引き続き参照して、その後、即時動作割り込みが、サービスの提供を受けると、プロセッサPA1およびPB1のそれぞれは、特定のシステムコール番号、この例示の事例ではシステムコール番号1006で、先にアサートされた割り込み5をスケジューリングすることを提案する。
ページフォールトがクリアされた以上、システムコール番号1006で割り込み5へのサービス提供が、他の例示の実施の形態で説明したように行われうる。
図4および図8〜図11のそれぞれは、2つのプロセッサのみを示しているが、説明した技法は、各論理プロセッサに3つまたは4つ以上のプロセッサを有するコンピュータシステム1000にも等しく適用可能であることが理解されよう。
図4および図8〜図11についての説明は、さまざまなイベント割り込みおよび即時動作割り込みのハンドリングを過度に複雑にしないために、2つのプロセッサを示す。
図4および図8〜図11によって示すランデブーポイントのスケジューリングの説明は、一度に1つの割り込みのみをスケジューリングすることに限られている。
例えば、図4は、各プロセッサが単一の割り込み番号、および、割り込みにサービスを提供するための提案したシステムコール番号を同期レジスタに書き込むことを示している。
代替的な実施の形態によると、複数の割り込み(および割り込みにサービスを提供するための提案したシステムコール番号)は、各割り込みのランデブーポイントをスケジューリングする試みで、同期レジスタに書き込まれうる。
いくつかの実施の形態では3つである複数の割り込みが、一度に、提案され、保留ランデブーログに書き込まれうること、および、同様に複数の割り込みが、確認リストに移動されうることは別として、これらの代替的な実施の形態のオペレーションのさまざまなフロー図は、変更されない。
例えば、図4は、各プロセッサが単一の割り込み番号、および、割り込みにサービスを提供するための提案したシステムコール番号を同期レジスタに書き込むことを示している。
代替的な実施の形態によると、複数の割り込み(および割り込みにサービスを提供するための提案したシステムコール番号)は、各割り込みのランデブーポイントをスケジューリングする試みで、同期レジスタに書き込まれうる。
いくつかの実施の形態では3つである複数の割り込みが、一度に、提案され、保留ランデブーログに書き込まれうること、および、同様に複数の割り込みが、確認リストに移動されうることは別として、これらの代替的な実施の形態のオペレーションのさまざまなフロー図は、変更されない。
さらに、これまでに説明したさまざまな実施の形態は、保留リスト(アサートされたがまだ提案されていない割り込み)、保留ランデブーログ(提案されたが、確認がまだ受信されていないか、受信されたが解析されていない割り込み)、および、合意リストまたは確認リスト(確認が受信された割り込み)の3つのリストを利用する。
代替的な実施の形態は、保留リストおよび確認リストの2つのリストのみを使用することができる。
これらの実施の形態では、1つまたは2つ以上の割り込みを一度に提案することができるが、それらの割り込みは、ランデブーポイントについてプロセッサ間で合意があるまで、保留リストに留まる。
各割り込みについて合意があると、各割り込みは、保留リストから確認リストに移動される。
ランデブーポイントをスケジューリングする1組の提案のみが未処理である場合があるので、これらの代替的な実施の形態は、データが同期レジスタに書き込まれた時に、未処理の試みの表示として、フラグをセットすることができる。
同様に、確認データが、投票者論理回路から返信された時に、そのフラグは、リセットされうる。
これらの代替的な実施の形態では、プロセッサが、割り込みにサービスを提供することに合意する前に、各割り込みは、複数回提案されうる(即時動作割り込みがない場合であっても)。
したがって、これらの代替的な実施の形態では、各プロセッサは、他のプロセッサの返信データを解析して、1つまたは2つ以上の割り込みにサービスを提供することについて合意があるかどうかを調べる。
合意がある場合には、合意された割り込みが、保留リストから除去されて、確認リストに置かれる。
合意のない割り込みの場合、返信データは廃棄され、プロセスは、保留リストから最も高い優先度の割り込みを選択することによって新たに開始して、ランデブーポイントを提案する。
代替的な実施の形態は、保留リストおよび確認リストの2つのリストのみを使用することができる。
これらの実施の形態では、1つまたは2つ以上の割り込みを一度に提案することができるが、それらの割り込みは、ランデブーポイントについてプロセッサ間で合意があるまで、保留リストに留まる。
各割り込みについて合意があると、各割り込みは、保留リストから確認リストに移動される。
ランデブーポイントをスケジューリングする1組の提案のみが未処理である場合があるので、これらの代替的な実施の形態は、データが同期レジスタに書き込まれた時に、未処理の試みの表示として、フラグをセットすることができる。
同様に、確認データが、投票者論理回路から返信された時に、そのフラグは、リセットされうる。
これらの代替的な実施の形態では、プロセッサが、割り込みにサービスを提供することに合意する前に、各割り込みは、複数回提案されうる(即時動作割り込みがない場合であっても)。
したがって、これらの代替的な実施の形態では、各プロセッサは、他のプロセッサの返信データを解析して、1つまたは2つ以上の割り込みにサービスを提供することについて合意があるかどうかを調べる。
合意がある場合には、合意された割り込みが、保留リストから除去されて、確認リストに置かれる。
合意のない割り込みの場合、返信データは廃棄され、プロセスは、保留リストから最も高い優先度の割り込みを選択することによって新たに開始して、ランデブーポイントを提案する。
即時動作割り込みについては、これまでに説明したさまざまな実施の形態では、1つのプロセッサが、即時動作割り込みに遭遇する(かつ、即時動作割り込みを提案する)と、他のプロセッサは、自身も即時動作割り込みに遭遇するような時まで、自身の最も高い優先度の非即時動作割り込みを提案し続けることができる。
代替的な実施の形態では、少なくとも1つのプロセッサが、即時動作割り込みにサービスを提供することを提案すると、残りのプロセッサは、非即時動作割り込みのそれ以上の提案を控えることができ、その代わり、対応する即時動作割り込みが発生するまで、処理を継続しうる。
したがって、非即時動作割り込みは、即時動作割り込みがサービスの提供を受けた後になるまで、各プロセッサの保留リストに蓄積しうる。
したがって、これらの代替的な実施の形態は、すべてのプロセッサが即時動作割り込みに到達し、合意し、かつ、サービスを提供するのに要する時間を削減することができる。
代替的な実施の形態では、少なくとも1つのプロセッサが、即時動作割り込みにサービスを提供することを提案すると、残りのプロセッサは、非即時動作割り込みのそれ以上の提案を控えることができ、その代わり、対応する即時動作割り込みが発生するまで、処理を継続しうる。
したがって、非即時動作割り込みは、即時動作割り込みがサービスの提供を受けた後になるまで、各プロセッサの保留リストに蓄積しうる。
したがって、これらの代替的な実施の形態は、すべてのプロセッサが即時動作割り込みに到達し、合意し、かつ、サービスを提供するのに要する時間を削減することができる。
上述したように、プロセッサの少なくとも部分的な同期、および、割り込みの調整されたサービス提供は、本発明の実施の形態によるランデブーポイントで達成されることができる。
一方、長期間の間、システムコールを行わないユーザプログラムが存在し得る。
したがって、論理プロセッサ内のプロセッサが、実行しているユーザプログラムの部分について大幅に異なる可能性があり、さらに、割り込みにサービスを提供する十分な機会がない可能性がある。
十分な頻度でシステムコールを行わないユーザプログラムは、「非協調プロセス」と呼ばれうる。
一方、長期間の間、システムコールを行わないユーザプログラムが存在し得る。
したがって、論理プロセッサ内のプロセッサが、実行しているユーザプログラムの部分について大幅に異なる可能性があり、さらに、割り込みにサービスを提供する十分な機会がない可能性がある。
十分な頻度でシステムコールを行わないユーザプログラムは、「非協調プロセス」と呼ばれうる。
説明のため、非協調プロセスのハンドリングは、4つの段階を有するとみなされうる。
第1段階は、ユーザプログラムが確かに非協調的であると識別することである。
第2段階は、アプリケーションの非協調性が引き起こす、論理プロセッサ内のプロセッサ間での計算障害の可能性を最小にし、さらに、非協調性プロセスおよび他の関係のないプロセスが協調的になることを期待して、これらのプロセスに実行継続を可能にすることである。
第3段階は、論理プロセッサにおける各プロセッサの非協調プロセスが同じ実行ステージにあることを保証する動作を行うことである。
最後に、最終段階は、元非協調プロセスを変更することである。
これらの段階のそれぞれについて、次に取り扱うことにする。
第1段階は、ユーザプログラムが確かに非協調的であると識別することである。
第2段階は、アプリケーションの非協調性が引き起こす、論理プロセッサ内のプロセッサ間での計算障害の可能性を最小にし、さらに、非協調性プロセスおよび他の関係のないプロセスが協調的になることを期待して、これらのプロセスに実行継続を可能にすることである。
第3段階は、論理プロセッサにおける各プロセッサの非協調プロセスが同じ実行ステージにあることを保証する動作を行うことである。
最後に、最終段階は、元非協調プロセスを変更することである。
これらの段階のそれぞれについて、次に取り扱うことにする。
いくつかの実施の形態では、ユーザプログラムが稀にしかシステムコールを行わず、したがって、非協調的であるとみなされることを識別することは、タイマの使用を必要とする。
ユーザプログラムが、タイマの満了前にシステムコールを行わない場合、そのユーザプログラムは、非協調プロセスである。
本発明のいくつかの実施の形態によると、プロセッサのディスパッチャプログラム(最も高い特権状態であるカーネルモードで動作する)が、ユーザプログラムを実行にセットするごとに、ディスパッチャは、非協調プロセスタイマも始動し、現在のシステムコール番号の表示を記憶する。
タイマの満了時に、非協調プロセスハンドラルーチンを起動する割り込みがアサートされる。
非協調プロセスハンドラルーチンは、タイマが規定する期間中に少なくとも1つのシステムコールがあったかどうかをチェックする。
このタイマが規定する期間は、いくつかの実施の形態では、およそ100マイクロ秒程度とすることができる。
代替的な実施の形態では、システムコールプログラムは、タイマをリセットして、非協調プロセスハンドラルーチンのトリガを回避することができるが、これらのリセットは、多大な費用を要するカーネルモードプロセスコールを必要とすることがある。
ユーザプログラムが、タイマの満了前にシステムコールを行わない場合、そのユーザプログラムは、非協調プロセスである。
本発明のいくつかの実施の形態によると、プロセッサのディスパッチャプログラム(最も高い特権状態であるカーネルモードで動作する)が、ユーザプログラムを実行にセットするごとに、ディスパッチャは、非協調プロセスタイマも始動し、現在のシステムコール番号の表示を記憶する。
タイマの満了時に、非協調プロセスハンドラルーチンを起動する割り込みがアサートされる。
非協調プロセスハンドラルーチンは、タイマが規定する期間中に少なくとも1つのシステムコールがあったかどうかをチェックする。
このタイマが規定する期間は、いくつかの実施の形態では、およそ100マイクロ秒程度とすることができる。
代替的な実施の形態では、システムコールプログラムは、タイマをリセットして、非協調プロセスハンドラルーチンのトリガを回避することができるが、これらのリセットは、多大な費用を要するカーネルモードプロセスコールを必要とすることがある。
図12(図12Aおよび図12Bを含む)は、本発明の実施の形態による非協調プロセスハンドラのフロー図を示している。
詳細には、非協調プロセスハンドラは、ディスパッチャにより始動されたタイマの満了後に割り込みをアサートすることによって開始することができる(ブロック1201)。
ディスパッチャにより始動されたタイマは、以下、非協調プロセスタイマをいう。
非協調プロセスタイマの満了によって、例示の図12は、直接開始されてもよいし、図12のステップは、非協調プロセスタイマの満了の判断(図5のブロック504)および割り込みハンドラの呼び出し(図5のブロック506)により割り込みハンドラを通じて起動されてもよい。
割り込みを無効にした(ブロック1204)後、非協調プロセスハンドラは、現在のシステムコール番号(ブロック1208)、および、開始時にディスパッチャにより記憶されたシステムコール番号(ブロック1212)を読み出すことができる。
現在のシステムコール番号がディスパッチャによって開始時に記憶されたシステムコール番号と同じである(ブロック1216)ことは、ユーザプログラムが、タイマによって規定された期間中にシステムコールを行わなかったことを示し、したがって、ユーザプログラムが非協調プロセスであることを示す。
他方、現在のシステムコール番号が、記憶されたシステムコール番号と同じでない場合には(再びブロック1216)、そのプロセスは協調的であり、したがって、例示の方法は、非協調プロセスタイマを再始動し(ブロック1237)、現在のシステムコール番号を記憶し(ブロック1239)、割り込みを有効にして(ブロック1238)、そして終了する(ブロック1236)。
詳細には、非協調プロセスハンドラは、ディスパッチャにより始動されたタイマの満了後に割り込みをアサートすることによって開始することができる(ブロック1201)。
ディスパッチャにより始動されたタイマは、以下、非協調プロセスタイマをいう。
非協調プロセスタイマの満了によって、例示の図12は、直接開始されてもよいし、図12のステップは、非協調プロセスタイマの満了の判断(図5のブロック504)および割り込みハンドラの呼び出し(図5のブロック506)により割り込みハンドラを通じて起動されてもよい。
割り込みを無効にした(ブロック1204)後、非協調プロセスハンドラは、現在のシステムコール番号(ブロック1208)、および、開始時にディスパッチャにより記憶されたシステムコール番号(ブロック1212)を読み出すことができる。
現在のシステムコール番号がディスパッチャによって開始時に記憶されたシステムコール番号と同じである(ブロック1216)ことは、ユーザプログラムが、タイマによって規定された期間中にシステムコールを行わなかったことを示し、したがって、ユーザプログラムが非協調プロセスであることを示す。
他方、現在のシステムコール番号が、記憶されたシステムコール番号と同じでない場合には(再びブロック1216)、そのプロセスは協調的であり、したがって、例示の方法は、非協調プロセスタイマを再始動し(ブロック1237)、現在のシステムコール番号を記憶し(ブロック1239)、割り込みを有効にして(ブロック1238)、そして終了する(ブロック1236)。
本発明の実施の形態によると、ユーザプログラムが論理プロセッサの少なくとも1つのプロセッサ内で非協調的になることによって、ランデブーオペレーションが起動され、論理プロセッサの他のプロセッサがその非協調性に合意するかどうかが判断される。
引き続き図12を参照して、現在のシステムコール番号が、ディスパッチャによって記憶されたシステムコール番号と同じである場合(ブロック1216)、次のステップは、未確認のランデブーオペレーションがあるかどうかの判断とすることができる(ブロック1220)。
未確認のランデブーオペレーションがない場合、次のステップは、ユーザプログラムの非協調性の表示を、現在のシステムコール番号と共に、投票者論理回路56の同期レジスタ54に書き込むことによってランデブーオペレーションを開始することとすることができる(ブロック1224)。
その後、非協調プロセスハンドラルーチンは、投票者論理回路が同期データを返信することを、ソフトウェアループで待機する(ブロック1228)。
引き続き図12を参照して、現在のシステムコール番号が、ディスパッチャによって記憶されたシステムコール番号と同じである場合(ブロック1216)、次のステップは、未確認のランデブーオペレーションがあるかどうかの判断とすることができる(ブロック1220)。
未確認のランデブーオペレーションがない場合、次のステップは、ユーザプログラムの非協調性の表示を、現在のシステムコール番号と共に、投票者論理回路56の同期レジスタ54に書き込むことによってランデブーオペレーションを開始することとすることができる(ブロック1224)。
その後、非協調プロセスハンドラルーチンは、投票者論理回路が同期データを返信することを、ソフトウェアループで待機する(ブロック1228)。
どの時点においても、ランデブーポイントの1つのスケジューリングしか実行しえないので、非協調プロセスタイマの満了時にまだ完了していないランデブーが開始されている場合には(再びブロック1220)、次のステップは、投票者論理回路が同期データを書き込むまでソフトウェアループで待機することとすることができる(ブロック1246)。
ライトバックされた同期データは、前の割り込み(非協調プロセスハンドラルーチンの現在の実行をトリガした非協調プロセスタイマ満了割り込みではない)に関することに留意して、ランデブー情報が、今後の実行のために確認リストに書き込まれるか、または、この割り込みが、保留リストに戻される(ブロック1250)(図5のブロック552、554、560、562、および556を参照)。
その後、プロセスは、ユーザプログラムの非協調性の表示を、現在のシステムコール番号と共に、投票者論理回路56の同期レジスタ54に書き込むことに進み(ブロック1224)、データの返信をソフトウェアループで待機する(ブロック1228)。
ライトバックされた同期データは、前の割り込み(非協調プロセスハンドラルーチンの現在の実行をトリガした非協調プロセスタイマ満了割り込みではない)に関することに留意して、ランデブー情報が、今後の実行のために確認リストに書き込まれるか、または、この割り込みが、保留リストに戻される(ブロック1250)(図5のブロック552、554、560、562、および556を参照)。
その後、プロセスは、ユーザプログラムの非協調性の表示を、現在のシステムコール番号と共に、投票者論理回路56の同期レジスタ54に書き込むことに進み(ブロック1224)、データの返信をソフトウェアループで待機する(ブロック1228)。
プロセッサが、ユーザプログラムが非協調的であることに合意しない場合には(ブロック1232)、同期データの解析が行われて、ユーザプログラムが他のプロセッサにおいて協調的であるかどうかが判断される(ブロック1234)。
例えば、一方のプロセッサの非協調プロセスタイマは、ユーザプログラムによるシステムコールの直前に満了する(またはロールオーバする)ことがある一方、論理プロセスの第2のプロセッサのユーザプログラムは、満了直前にシステムコールを行うことがある。
したがって、一方のプロセッサは、プロセスが非協調的であることを示し、第2のプロセッサは、提案されたランデブーポイントの書き込みを含めて、次の割り込みのハンドリングのスケジューリングを試みる。
この解析によって、ユーザプログラムがまもなくシステムコールを行うことが明らかになると(ブロック1234)、非協調プロセスタイマが再始動され(ブロック1237)、現在のシステムコール番号が記憶され(ブロック1239)、割り込みが有効にされ(ブロック1238)、そして、プロセスは終了する(ブロック1236)。
例えば、一方のプロセッサの非協調プロセスタイマは、ユーザプログラムによるシステムコールの直前に満了する(またはロールオーバする)ことがある一方、論理プロセスの第2のプロセッサのユーザプログラムは、満了直前にシステムコールを行うことがある。
したがって、一方のプロセッサは、プロセスが非協調的であることを示し、第2のプロセッサは、提案されたランデブーポイントの書き込みを含めて、次の割り込みのハンドリングのスケジューリングを試みる。
この解析によって、ユーザプログラムがまもなくシステムコールを行うことが明らかになると(ブロック1234)、非協調プロセスタイマが再始動され(ブロック1237)、現在のシステムコール番号が記憶され(ブロック1239)、割り込みが有効にされ(ブロック1238)、そして、プロセスは終了する(ブロック1236)。
引き続き図12を参照して、論理プロセッサのすべてのプロセッサが、ユーザプログラムが非協調的であることに合意すると(ブロック1232)(ユーザプログラムが非協調プロセスタイマの期間の間、同じシステムコール番号にあったことをすべてのプロセッサが示すと)、非協調プロセスの第1ステージのハンドリングは、非協調プロセスフラグをセットしてカウンタをインクリメントすることによって開始する(ブロック1254)。
これが、ユーザプログラムが非協調的としてフラグセットされた最初の時である場合には(ブロック1258)、非協調プロセスと同じメモリ位置の同じデータ値にアクセスするユーザプログラム(非協調プログラムの「プロセスセット」)は、それらユーザプログラムの継続実行を許可しないリストに置かれる。
最初の時であることは、おそらくカウンタ(ブロック1254でインクリメントされる)を読み出すことによって判断される。
換言すると、プロセッサのディスパッチャは、プロセスセットのどのメンバの実行もスケジューリングしない。
これは、プロセスセットの隔離(quarantine of the process set)としても知られている(ブロック1262)。
プロセスセットは非協調プロセスとメモリを共有し、さらに、論理プロセッサのプロセッサ間で非協調プロセス内の実行ポイントが相違する可能性があり、プロセスセットが共有メモリの相違に遭遇するおそれがあることから、プロセスセットの隔離は、プロセスセットのプロセスが(プロセッサ間で)メモリの異なるデータに遭遇しないことを保証し、したがって、計算障害を引き起こさないことを保証する。
この第1ステージでは、非協調プロセスは、協調的になることを期待して、まだ実行が許可されている。
したがって、プロセスセットの隔離後、非協調プロセスハンドラルーチンは、非協調プロセスタイマを再始動し(ブロック1237)、現在のシステムコール番号を記憶し(ブロック1239)、割り込みを有効にし(ブロック1238)、そして終了する(ブロック1236)。
これが、ユーザプログラムが非協調的としてフラグセットされた最初の時である場合には(ブロック1258)、非協調プロセスと同じメモリ位置の同じデータ値にアクセスするユーザプログラム(非協調プログラムの「プロセスセット」)は、それらユーザプログラムの継続実行を許可しないリストに置かれる。
最初の時であることは、おそらくカウンタ(ブロック1254でインクリメントされる)を読み出すことによって判断される。
換言すると、プロセッサのディスパッチャは、プロセスセットのどのメンバの実行もスケジューリングしない。
これは、プロセスセットの隔離(quarantine of the process set)としても知られている(ブロック1262)。
プロセスセットは非協調プロセスとメモリを共有し、さらに、論理プロセッサのプロセッサ間で非協調プロセス内の実行ポイントが相違する可能性があり、プロセスセットが共有メモリの相違に遭遇するおそれがあることから、プロセスセットの隔離は、プロセスセットのプロセスが(プロセッサ間で)メモリの異なるデータに遭遇しないことを保証し、したがって、計算障害を引き起こさないことを保証する。
この第1ステージでは、非協調プロセスは、協調的になることを期待して、まだ実行が許可されている。
したがって、プロセスセットの隔離後、非協調プロセスハンドラルーチンは、非協調プロセスタイマを再始動し(ブロック1237)、現在のシステムコール番号を記憶し(ブロック1239)、割り込みを有効にし(ブロック1238)、そして終了する(ブロック1236)。
本発明の実施の形態によると、非協調プロセスは、そのプロセスが隔離状態にある間、実行の継続を許可される。
非協調プロセスの実行の次のスケジューリング時に、ディスパッチャは、再び、現在のシステムコール番号を記憶し、非協調プロセスタイマを始動する。
非協調プロセスが、非協調プロセスタイマの期間の間、再び、システムコールを行うことなく実行されると、非協調プロセスハンドラルーチンが、再び起動される。
すべてのプロセッサが、再び、ユーザプログラムの非協調性に合意すると(ブロック1232)、ルーチンは、非協調プロセスフラグをセットし(ブロック1254)(ただし、このフラグは、前のエントリに基づいてすでにアサートされている)、カウンタがインクリメントされる(ブロック1254)。
この例示の状況では、ユーザプログラムは、新しく非協調的になったのではないので(ブロック1258)、次のステップは、ユーザプログラムが所定の回数の繰り返しの間、非協調的であることが判明したかどうかの判断とすることができる(ブロック1266)。
いくつかの実施の形態では、プロセスセットの隔離の後、その後の訂正動作が行われる前に、ユーザプログラムが非協調的であると10回宣言されうる。
ユーザプログラムが、所定の回数の繰り返しよりも少ない繰り返しで非協調的であると確認されると(ブロック1266)、さらに動作を行う前に、再び、非協調プロセスが協調的になることを期待して、非協調割り込みハンドラルーチンは、非協調プロセスタイマを再始動し(ブロック1237)、現在のシステムコール番号を記憶し(ブロック1239)、割り込みを有効にし(ブロック1238)、そして終了する(ブロック1236)。
非協調プロセスハンドリングの段階3は、システムコールが所定の回数の繰り返し前に行われた場合に、非協調プロセスがどのように取り扱われるかを説明した後に説明される。
非協調プロセスの実行の次のスケジューリング時に、ディスパッチャは、再び、現在のシステムコール番号を記憶し、非協調プロセスタイマを始動する。
非協調プロセスが、非協調プロセスタイマの期間の間、再び、システムコールを行うことなく実行されると、非協調プロセスハンドラルーチンが、再び起動される。
すべてのプロセッサが、再び、ユーザプログラムの非協調性に合意すると(ブロック1232)、ルーチンは、非協調プロセスフラグをセットし(ブロック1254)(ただし、このフラグは、前のエントリに基づいてすでにアサートされている)、カウンタがインクリメントされる(ブロック1254)。
この例示の状況では、ユーザプログラムは、新しく非協調的になったのではないので(ブロック1258)、次のステップは、ユーザプログラムが所定の回数の繰り返しの間、非協調的であることが判明したかどうかの判断とすることができる(ブロック1266)。
いくつかの実施の形態では、プロセスセットの隔離の後、その後の訂正動作が行われる前に、ユーザプログラムが非協調的であると10回宣言されうる。
ユーザプログラムが、所定の回数の繰り返しよりも少ない繰り返しで非協調的であると確認されると(ブロック1266)、さらに動作を行う前に、再び、非協調プロセスが協調的になることを期待して、非協調割り込みハンドラルーチンは、非協調プロセスタイマを再始動し(ブロック1237)、現在のシステムコール番号を記憶し(ブロック1239)、割り込みを有効にし(ブロック1238)、そして終了する(ブロック1236)。
非協調プロセスハンドリングの段階3は、システムコールが所定の回数の繰り返し前に行われた場合に、非協調プロセスがどのように取り扱われるかを説明した後に説明される。
さらに説明のために、ユーザプログラムは、少なくとも1回、非協調的であると確認され、そのプロセスセットが隔離されたが、ユーザプログラムは、所定の回数の繰り返しの間、非協調的であるとまだ確認されていないと仮定する。
さらに、ユーザプログラムがシステムコールを行うものと仮定する。
再び、図7を手短に参照して、システムコールプログラムが実行されると、システムコール番号をインクリメントした(ブロック704)後、呼び出し側プログラムが、非協調的であるとして事前にフラグセットされているかどうかについての判断が行われる(ブロック706)。
フラグセットされていない場合には、システムコールは、上述したようなステップを実行する。
一方、呼び出し側プログラムが、事前に非協調的であるとフラグセットされている場合には、システムコールプログラムは、プロセスセットの隔離を解除することができ(ブロック724)、非協調プロセスフラグをクリアすることができる(ブロック726)。
さらに、ユーザプログラムがシステムコールを行うものと仮定する。
再び、図7を手短に参照して、システムコールプログラムが実行されると、システムコール番号をインクリメントした(ブロック704)後、呼び出し側プログラムが、非協調的であるとして事前にフラグセットされているかどうかについての判断が行われる(ブロック706)。
フラグセットされていない場合には、システムコールは、上述したようなステップを実行する。
一方、呼び出し側プログラムが、事前に非協調的であるとフラグセットされている場合には、システムコールプログラムは、プロセスセットの隔離を解除することができ(ブロック724)、非協調プロセスフラグをクリアすることができる(ブロック726)。
図13は、図12の方法をさらに示すために、イベント割り込みに関係した非協調プロセスのハンドリングを示す時間表である。
詳細には、図13は、各プロセッサがシステムコール番号1999に遭遇する状況を示している。
プロセッサPA1の場合、割り込み5は、非協調プロセスタイマの満了前にアサートされ、したがって、プロセッサPA1は、システムコール番号2000で割り込み5のサービス提供を提案する(ライン1300、図5のブロック514)。
割り込み5のサービス提供を提案した直後、プロセッサPA1の非協調プロセスタイマは満了し、ランデブーが未確認であるため、このプロセッサは、投票者論理回路が前の提案からの同期データをライトバックすることを、ソフトウェアループで待機する(図12のブロック1246)。
これに対して、プロセッサPB1は、割り込みがアサートされる前に、自身の非協調プロセスタイマが満了し、したがって、プロセッサPB1は、非協調プロセス情報を同期レジスタ54に書き込み(ライン1302)、確認をソフトウェアループで待機する(図12のブロック1224および1228)。
その後、投票者論理回路は、同期データを各プロセッサにライトバックする(ライン1304)。
プロセッサが割り込みのサービス提供に合意せず、非協調プロセス割り込みが即時動作性であることから、プロセッサPA1は、割り込み5を保留リストにライトバックし(ブロック1250)、非協調プロセスの表示を同期レジスタに書き込み(ライン1306、ブロック1224)、そして、確認をソフトウェアループで待機する(ブロック1228)。
プロセッサPB1について、プロセッサは、非協調プロセスに関して合意しない(ブロック1232)(プロセッサPA1は、ユーザプログラムが非協調的であることを示すのではなく、割り込みにサービスを提供することを提案した)。
さらに、プロセッサPA1によって提案されたシステムコール番号(この例示の事例ではシステムコール2000)は、プロセッサPB1のシステムコールが次に行われることを意味せず、提案されたシステムコール番号2000は、プロセッサPA1もシステムコール番号1999に達していることを暗に意味する(ブロック1234)。
したがって、プロセッサPB1は、非協調プロセスを示す同期データの第2の書き込みを行い(ライン1308、ブロック1224)、この場合も、確認をソフトウェアループで待機する(ブロック1228)。
その後、投票者論理回路56は、同期データを各プロセッサに書き込む(ライン1310)。
この例示の第2の書き込みでは、プロセッサは、非協調ステータスに合意し(各プロセッサについてブロック1232)、したがって、各プロセッサは、非協調プロセスフラグをアサートし、非協調プロセスカウンタをインクリメントし(ブロック1254)、そして、非協調プロセスのプロセスセットを隔離する(ブロック1262)。
その後、ユーザプログラムは、非協調プロセスのプロセスセットが隔離されているにもかかわらず、動作を続ける(各プロセッサの時間表の領域1312)。
詳細には、図13は、各プロセッサがシステムコール番号1999に遭遇する状況を示している。
プロセッサPA1の場合、割り込み5は、非協調プロセスタイマの満了前にアサートされ、したがって、プロセッサPA1は、システムコール番号2000で割り込み5のサービス提供を提案する(ライン1300、図5のブロック514)。
割り込み5のサービス提供を提案した直後、プロセッサPA1の非協調プロセスタイマは満了し、ランデブーが未確認であるため、このプロセッサは、投票者論理回路が前の提案からの同期データをライトバックすることを、ソフトウェアループで待機する(図12のブロック1246)。
これに対して、プロセッサPB1は、割り込みがアサートされる前に、自身の非協調プロセスタイマが満了し、したがって、プロセッサPB1は、非協調プロセス情報を同期レジスタ54に書き込み(ライン1302)、確認をソフトウェアループで待機する(図12のブロック1224および1228)。
その後、投票者論理回路は、同期データを各プロセッサにライトバックする(ライン1304)。
プロセッサが割り込みのサービス提供に合意せず、非協調プロセス割り込みが即時動作性であることから、プロセッサPA1は、割り込み5を保留リストにライトバックし(ブロック1250)、非協調プロセスの表示を同期レジスタに書き込み(ライン1306、ブロック1224)、そして、確認をソフトウェアループで待機する(ブロック1228)。
プロセッサPB1について、プロセッサは、非協調プロセスに関して合意しない(ブロック1232)(プロセッサPA1は、ユーザプログラムが非協調的であることを示すのではなく、割り込みにサービスを提供することを提案した)。
さらに、プロセッサPA1によって提案されたシステムコール番号(この例示の事例ではシステムコール2000)は、プロセッサPB1のシステムコールが次に行われることを意味せず、提案されたシステムコール番号2000は、プロセッサPA1もシステムコール番号1999に達していることを暗に意味する(ブロック1234)。
したがって、プロセッサPB1は、非協調プロセスを示す同期データの第2の書き込みを行い(ライン1308、ブロック1224)、この場合も、確認をソフトウェアループで待機する(ブロック1228)。
その後、投票者論理回路56は、同期データを各プロセッサに書き込む(ライン1310)。
この例示の第2の書き込みでは、プロセッサは、非協調ステータスに合意し(各プロセッサについてブロック1232)、したがって、各プロセッサは、非協調プロセスフラグをアサートし、非協調プロセスカウンタをインクリメントし(ブロック1254)、そして、非協調プロセスのプロセスセットを隔離する(ブロック1262)。
その後、ユーザプログラムは、非協調プロセスのプロセスセットが隔離されているにもかかわらず、動作を続ける(各プロセッサの時間表の領域1312)。
また、図13は、投票者論理回路に書き込まれた同期データが一致しないにもかかわらず、ユーザプログラムの非協調性がまもなく終了する可能性があるという情報をプロセッサが収集する状況も示している。
詳細には、図13は、プロセッサPA1が、この例示の事例ではシステムコール番号3000のシステムコールを行うこともさらに示している(領域1314)。
システムコールプロセスの一部として、プロセッサPA1は、次のランデブーを提案または広告する(ライン1316、図7のブロック712および740も参照)。
これに対して、プロセッサPB1は、自身の非協調プロセスタイマがシステムコール前に満了し、したがって、非協調プロセスの表示を書き込み(ライン1318、ブロック1224)、確認をソフトウェアループで待機する(ブロック1228)。
投票者論理回路が同期データを返信すると(ライン1320)、プロセッサPA1は、割り込みタイプの不一致に気付き(システムコールによって解析された場合には図7のブロック730、割り込みハンドラによって解析された場合にはブロック552)、再び、同期データの書き込みを試みる(ライン1321、図7のブロック740または図5のブロック514)。
これに対して、プロセッサPB1は、同期データを受信し(ライン1320)、プロセッサがユーザプログラムの非協調性について合意しない(ブロック1232)一方、プロセッサPA1からの提案されたランデブー情報は、システムコールが次に行われることを示している(ブロック1234)。
したがって、プロセッサPB1は、システムコールが行われるまで、ユーザプログラムの実行を継続する。
その後、プロセッサは、プロセッサPA1によって最初に提案された割り込みに合意する。
詳細には、図13は、プロセッサPA1が、この例示の事例ではシステムコール番号3000のシステムコールを行うこともさらに示している(領域1314)。
システムコールプロセスの一部として、プロセッサPA1は、次のランデブーを提案または広告する(ライン1316、図7のブロック712および740も参照)。
これに対して、プロセッサPB1は、自身の非協調プロセスタイマがシステムコール前に満了し、したがって、非協調プロセスの表示を書き込み(ライン1318、ブロック1224)、確認をソフトウェアループで待機する(ブロック1228)。
投票者論理回路が同期データを返信すると(ライン1320)、プロセッサPA1は、割り込みタイプの不一致に気付き(システムコールによって解析された場合には図7のブロック730、割り込みハンドラによって解析された場合にはブロック552)、再び、同期データの書き込みを試みる(ライン1321、図7のブロック740または図5のブロック514)。
これに対して、プロセッサPB1は、同期データを受信し(ライン1320)、プロセッサがユーザプログラムの非協調性について合意しない(ブロック1232)一方、プロセッサPA1からの提案されたランデブー情報は、システムコールが次に行われることを示している(ブロック1234)。
したがって、プロセッサPB1は、システムコールが行われるまで、ユーザプログラムの実行を継続する。
その後、プロセッサは、プロセッサPA1によって最初に提案された割り込みに合意する。
次に、図12、特に、ブロック1266が示すステップを参照されたい。
ユーザプログラムが、所定の回数の繰り返しの間、非協調プロセスとしてフラグセットされている場合には(ブロック1266)、次のステップは、この非協調プロセスを隔離すること(ブロック1268)、および、プロセスレベル再統合ルーチンを呼び出すること(ブロック1270)とすることができる。
ユーザプログラムが、所定の回数の繰り返しの間、非協調プロセスとしてフラグセットされている場合には(ブロック1266)、次のステップは、この非協調プロセスを隔離すること(ブロック1268)、および、プロセスレベル再統合ルーチンを呼び出すること(ブロック1270)とすることができる。
論理プロセッサの各プロセッサで実行され、非協調プロセスとして特定されているユーザプログラムは、プロセッサ間でそれらユーザプログラムの実行ポイントが大幅に相違することがある。
本発明の少なくともいくつかの実施の形態によると、ユーザプログラムが、システムコールに基づいて同期する機会を提供しない場合には、同期は、各ユーザプログラムの実行を命令ストリームの同じポイントで強制的に再開させることによって行われうる。
これは、いくつかのプロセッサが、いくつかの命令を重複して実行し、他のプロセッサが、いくつかの命令の実行をスキップすることを意味することがある。
一方、命令ストリームの同じポイントでユーザプログラムの実行再開を可能にする前に、各プロセッサのワーキングメモリが同じである必要がある。
換言すると、非協調プロセスが書き込みアクセスを行うどのメモリも、論理プロセッサのプロセッサ間で比較されて、同じにされるべきである。
このように、実行が再開されると、各プロセッサのプロセス状態は同じになる。
したがって、本発明の実施の形態によると、図12に示す非協調プロセスハンドラルーチンが、強制的な同期を必要とすると判断すると(ブロック1266)、ユーザプログラムのワーキングメモリのプロセスレベル再統合が必要とされうる。
本発明の少なくともいくつかの実施の形態によると、ユーザプログラムが、システムコールに基づいて同期する機会を提供しない場合には、同期は、各ユーザプログラムの実行を命令ストリームの同じポイントで強制的に再開させることによって行われうる。
これは、いくつかのプロセッサが、いくつかの命令を重複して実行し、他のプロセッサが、いくつかの命令の実行をスキップすることを意味することがある。
一方、命令ストリームの同じポイントでユーザプログラムの実行再開を可能にする前に、各プロセッサのワーキングメモリが同じである必要がある。
換言すると、非協調プロセスが書き込みアクセスを行うどのメモリも、論理プロセッサのプロセッサ間で比較されて、同じにされるべきである。
このように、実行が再開されると、各プロセッサのプロセス状態は同じになる。
したがって、本発明の実施の形態によると、図12に示す非協調プロセスハンドラルーチンが、強制的な同期を必要とすると判断すると(ブロック1266)、ユーザプログラムのワーキングメモリのプロセスレベル再統合が必要とされうる。
図14は、論理プロセッサの各プロセッサでほぼ同時に実行できるプロセスレベル再統合ルーチンのフロー図を示している。
詳細には、このプロセスは、図12に示す非協調プロセスハンドラルーチンによる呼び出しに基づいて開始する(ブロック1400)。
この例示のプロセスの次のステップは、論理プロセッサの他のプロセッサと共に動作して、ソースプロセッサを選択することである(ブロック1402)。
ソースプロセッサを選択するために、メッセージは、投票者論理回路を使用して、プロセッサ間で交換されうる。
論理プロセッサにおけるプロセッサのいずれか1つが選択されうる。
詳細には、このプロセスは、図12に示す非協調プロセスハンドラルーチンによる呼び出しに基づいて開始する(ブロック1400)。
この例示のプロセスの次のステップは、論理プロセッサの他のプロセッサと共に動作して、ソースプロセッサを選択することである(ブロック1402)。
ソースプロセッサを選択するために、メッセージは、投票者論理回路を使用して、プロセッサ間で交換されうる。
論理プロセッサにおけるプロセッサのいずれか1つが選択されうる。
例示のプロセスの次のステップは、非協調プロセスが書き込みアクセスを行うメモリ領域を決定することである(ブロック1404)。
この決定は、例えば、プロセッサのメモリ管理テーブルおよび/またはメモリページテーブルを参照することによって行われうる。
非協調プロセスが書き込みアクセスを行うメモリ領域の範囲が決定されると、次のステップは、メモリページがその生成以来変更されていない(通常、クリーンとして知られている)かどうかの判断である(ブロック1406)。
例示の図14の説明の残りは、一度に1つのメモリページしかプロセッサによって解析されないと仮定する。
一方、代替的な実施の形態は、一度に複数のメモリページを比較する。
検討対象のメモリページがクリーンでない(通常、ダーティとして知られている)場合には(再びブロック1406)、例示のプロセスの次のステップは、メモリページのチェックサムを計算することである(ブロック1408)。
この決定は、例えば、プロセッサのメモリ管理テーブルおよび/またはメモリページテーブルを参照することによって行われうる。
非協調プロセスが書き込みアクセスを行うメモリ領域の範囲が決定されると、次のステップは、メモリページがその生成以来変更されていない(通常、クリーンとして知られている)かどうかの判断である(ブロック1406)。
例示の図14の説明の残りは、一度に1つのメモリページしかプロセッサによって解析されないと仮定する。
一方、代替的な実施の形態は、一度に複数のメモリページを比較する。
検討対象のメモリページがクリーンでない(通常、ダーティとして知られている)場合には(再びブロック1406)、例示のプロセスの次のステップは、メモリページのチェックサムを計算することである(ブロック1408)。
例示のプロセスの次のステップは、データを交換することである(ブロック1410)。
このデータは、検討対象のメモリページがクリーンであることの表示(ブロック1406を通じてのエントリ)、または、メモリページがダーティである場合に計算されたチェックサム(ブロック1408を通じてのエントリ)の一方である。
このデータ交換は、投票者論理回路を使用して行われることができ、各プロセッサが投票者論理回路から返信されるデータをソフトウェアループで待機する(各プロセッサがその各データを書き込むのを待機し、投票者論理回路がデータをライトバックするのを待機する)という意味で、即時動作割り込みに関する交換と同様である。
これらのステップは、図を過度に複雑にしないために、明示的に示されていない。
データが受信されると、メモリページがクリーンであることにすべてのプロセッサが合意するかどうかについての判断が行われる(ブロック1412)。
すべてのプロセッサが、メモリページがクリーンであることに合意すると、ソースプロセッサからメモリページをコピーする必要はない。
したがって、次のステップは、すべてのメモリページが解析されたかどうかの判断とすることができる(ブロック1414)。
すべてのメモリページが解析されていない場合には、プロセスは、新たに、別のメモリページを解析することから開始する。
このデータは、検討対象のメモリページがクリーンであることの表示(ブロック1406を通じてのエントリ)、または、メモリページがダーティである場合に計算されたチェックサム(ブロック1408を通じてのエントリ)の一方である。
このデータ交換は、投票者論理回路を使用して行われることができ、各プロセッサが投票者論理回路から返信されるデータをソフトウェアループで待機する(各プロセッサがその各データを書き込むのを待機し、投票者論理回路がデータをライトバックするのを待機する)という意味で、即時動作割り込みに関する交換と同様である。
これらのステップは、図を過度に複雑にしないために、明示的に示されていない。
データが受信されると、メモリページがクリーンであることにすべてのプロセッサが合意するかどうかについての判断が行われる(ブロック1412)。
すべてのプロセッサが、メモリページがクリーンであることに合意すると、ソースプロセッサからメモリページをコピーする必要はない。
したがって、次のステップは、すべてのメモリページが解析されたかどうかの判断とすることができる(ブロック1414)。
すべてのメモリページが解析されていない場合には、プロセスは、新たに、別のメモリページを解析することから開始する。
引き続き図14を参照して、すべてのプロセッサが、メモリページのクリーンステータスに合意していない場合(再びブロック1412)、次のステップは、例示のプロセスを実行しているプロセッサおよびソースプロセッサが、メモリページがダーティであることに合意するかどうかの判断である(ブロック1416)。
合意する場合には、ソースプロセッサが提供したチェックサムと、例示のプロセスを実行しているプロセッサが計算したチェックサムとが等しいかどうかについての判断が行われる(ブロック1418)。
チェックサムが等しい場合には、メモリページは、ダーティではあるが、同じデータを含むので、ソースプロセッサからメモリページをコピーする必要はない。
他方、ソースプロセッサと、例示のプロセスを実行しているプロセッサとの間でチェックサムが等しくない場合には(再びブロック1418)、メモリページは同じではなく、したがって、ソースプロセッサからのメモリページが、例示のプロセスを実行しているプロセッサにコピーされる(ブロック1420)。
同様に、ソースプロセッサ、および、例示のプロセスを実行しているプロセッサが、メモリページのダーティステータスについて合意しない場合には(再びブロック1416)、メモリページは同じではなく、したがって、ソースプロセッサからのメモリページが、例示のプロセスを実行しているプロセッサにコピーされる(再びブロック1420)。
ソースプロセッサからメモリページをコピーすることに加えて、メモリページに関連付けられたクリーン/ダーティビットも、ソースプロセッサからコピーされる。
これらのビットは、例えば、プロセッサのソースのページテーブルまたはページマッピングテーブルに記憶されうる。
双方のプロセッサが、メモリページのダーティ状態について合意する場合には、クリーン/ダーティビットをコピーする必要はない。
一方、メモリページがコピーされるごとにこれらのビットをコピーすることは、便利な場合があり、プログラミングおよび交換時間の観点からあまり多くの費用を要しない場合がある。
コピーの後、例示の方法は、さらに解析するメモリページがあるかどうかの判断に移動する(ブロック1414)。
合意する場合には、ソースプロセッサが提供したチェックサムと、例示のプロセスを実行しているプロセッサが計算したチェックサムとが等しいかどうかについての判断が行われる(ブロック1418)。
チェックサムが等しい場合には、メモリページは、ダーティではあるが、同じデータを含むので、ソースプロセッサからメモリページをコピーする必要はない。
他方、ソースプロセッサと、例示のプロセスを実行しているプロセッサとの間でチェックサムが等しくない場合には(再びブロック1418)、メモリページは同じではなく、したがって、ソースプロセッサからのメモリページが、例示のプロセスを実行しているプロセッサにコピーされる(ブロック1420)。
同様に、ソースプロセッサ、および、例示のプロセスを実行しているプロセッサが、メモリページのダーティステータスについて合意しない場合には(再びブロック1416)、メモリページは同じではなく、したがって、ソースプロセッサからのメモリページが、例示のプロセスを実行しているプロセッサにコピーされる(再びブロック1420)。
ソースプロセッサからメモリページをコピーすることに加えて、メモリページに関連付けられたクリーン/ダーティビットも、ソースプロセッサからコピーされる。
これらのビットは、例えば、プロセッサのソースのページテーブルまたはページマッピングテーブルに記憶されうる。
双方のプロセッサが、メモリページのダーティ状態について合意する場合には、クリーン/ダーティビットをコピーする必要はない。
一方、メモリページがコピーされるごとにこれらのビットをコピーすることは、便利な場合があり、プログラミングおよび交換時間の観点からあまり多くの費用を要しない場合がある。
コピーの後、例示の方法は、さらに解析するメモリページがあるかどうかの判断に移動する(ブロック1414)。
すべてのページが解析され、おそらく、いくつかのメモリページが、ソースプロセッサから非ソースプロセッサの1つまたは2つ以上にコピーされると、例示のプロセスの次のステップは、場合によっては命令ポインタおよび他のレジスタを含めて、プロセス制御ブロックをソースプロセッサから非ソースプロセッサへコピーすることである(ブロック1422)。
このコピーは、各プロセッサが、ソースプロセッサと同じ実行ポイントでユーザプログラムの実行を再開することを保証する。
その後、プロセスレベル再統合ルーチンは復帰する(ブロック1426)。
プロセスレベル再統合ルーチンは、他のプロセス(隔離されたプロセスセットのプロセスを除く)の実行とインターリーブされて、プロセスとして実行されることに留意されたい。
このコピーは、各プロセッサが、ソースプロセッサと同じ実行ポイントでユーザプログラムの実行を再開することを保証する。
その後、プロセスレベル再統合ルーチンは復帰する(ブロック1426)。
プロセスレベル再統合ルーチンは、他のプロセス(隔離されたプロセスセットのプロセスを除く)の実行とインターリーブされて、プロセスとして実行されることに留意されたい。
制御が、図12に示す非協調プロセスハンドラに復帰すると、ユーザプログラムおよびそのプロセスセットは隔離リストから除去され(ブロック1274)、非協調プロセスフラグおよびカウンタはクリアされ(ブロック1278)、非協調プロセスタイマは再始動され(ブロック1237)、現在のシステムコール番号は記憶され(ブロック1239)、割り込みは有効にされ(ブロック1238)、そして、プロセスは終了する(ブロック1236)。
したがって、元非協調プロセスは、(この場合、書き込み可能メモリのプロセスレベル再統合によって)同期されており、再びプロセッサによって実行されうる。
ソースプロセッサからの命令ポインタおよび他のレジスタがコピーされたので、すべてのプロセッサは、ユーザプログラムの同じ実行ポイントで実行を再開する。
したがって、元非協調プロセスは、(この場合、書き込み可能メモリのプロセスレベル再統合によって)同期されており、再びプロセッサによって実行されうる。
ソースプロセッサからの命令ポインタおよび他のレジスタがコピーされたので、すべてのプロセッサは、ユーザプログラムの同じ実行ポイントで実行を再開する。
少なくともいくつかの実施の形態によると、ユーザプログラムの非協調性にかかわらず、適切なオペレーションを確保するには、プロセスレベル再統合だけで十分な場合がある。
プロセスレベル再統合に加えて、または、これに代えて、少なくともいくつかの実施の形態は、事前対策ステップを行って、ユーザプログラムの少なくとも非協調プロセスの指定を引き起こした部分が再びそのようにならないことを確保することができる(ブロック1424)。
この事前対策ステップは多くの形態を取ることができる。
いくつかの実施の形態では、ユーザプログラムの好ましくない部分(ほとんどはソフトウェアループ)が、システムコールを含むように変更される。
これは、例えば、ノーオペレーション命令(NOP)をシステムコール(例えば、日時コール)と置換することによって行われることができる。
ユーザプログラム命令ストリームが、単なる置換を許容していない場合には、命令は、その置換される命令を指し示す分岐命令、システムコールおよび復帰分岐命令と置換されうる。
これらの変更は、ユーザプログラムがメインメモリに存在するときはユーザプログラムに対して行うことができ、かつ/または、ユーザプログラムがディスクドライブ等の長期記憶デバイスにあるときはユーザプログラムに対して行うことができる。
さらに別の実施の形態では、マルチプロセッサコンピュータシステム(協調プロセスおよび非協調プロセスの双方を有するプロセッサ)内の全プロセッサの再統合が、複数のプロセッサ間で非協調プロセスを同期するために使用されうる。
プロセスレベル再統合に加えて、または、これに代えて、少なくともいくつかの実施の形態は、事前対策ステップを行って、ユーザプログラムの少なくとも非協調プロセスの指定を引き起こした部分が再びそのようにならないことを確保することができる(ブロック1424)。
この事前対策ステップは多くの形態を取ることができる。
いくつかの実施の形態では、ユーザプログラムの好ましくない部分(ほとんどはソフトウェアループ)が、システムコールを含むように変更される。
これは、例えば、ノーオペレーション命令(NOP)をシステムコール(例えば、日時コール)と置換することによって行われることができる。
ユーザプログラム命令ストリームが、単なる置換を許容していない場合には、命令は、その置換される命令を指し示す分岐命令、システムコールおよび復帰分岐命令と置換されうる。
これらの変更は、ユーザプログラムがメインメモリに存在するときはユーザプログラムに対して行うことができ、かつ/または、ユーザプログラムがディスクドライブ等の長期記憶デバイスにあるときはユーザプログラムに対して行うことができる。
さらに別の実施の形態では、マルチプロセッサコンピュータシステム(協調プロセスおよび非協調プロセスの双方を有するプロセッサ)内の全プロセッサの再統合が、複数のプロセッサ間で非協調プロセスを同期するために使用されうる。
さらに他の代替的な実施の形態では、プロセッサハードウェアは、命令ストリームの特定のポイントに割り込みを挿入するメカニズムをサポートすることができ、この割り込みは、同期および割り込みスケジューリングのためにシステムコールをトリガすることができる。
例えば、Intel(登録商標)が製造したItanium(登録商標)プロセッサファミリーは、「命令ブレークポイントレジスタ」として知られているプロセッサ内のレジスタをサポートする。
このブレークポイントレジスタには、命令ポインタ値がロードされうる。
実際の命令ポインタがブレークポイントレジスタの値と一致すると、割り込みがトリガされる。
したがって、この例示のメカニズムは、割り込みをトリガするために使用されることができ、この割り込みは、次に、同期の目的でシステムコールをトリガする。
ハードウェアベースのメカニズムは、すべてのアーキテクチャでは利用可能でない場合があるが、ユーザプログラムを変更する実施の形態は、汎用的な用途を有することができる。
例えば、Intel(登録商標)が製造したItanium(登録商標)プロセッサファミリーは、「命令ブレークポイントレジスタ」として知られているプロセッサ内のレジスタをサポートする。
このブレークポイントレジスタには、命令ポインタ値がロードされうる。
実際の命令ポインタがブレークポイントレジスタの値と一致すると、割り込みがトリガされる。
したがって、この例示のメカニズムは、割り込みをトリガするために使用されることができ、この割り込みは、次に、同期の目的でシステムコールをトリガする。
ハードウェアベースのメカニズムは、すべてのアーキテクチャでは利用可能でない場合があるが、ユーザプログラムを変更する実施の形態は、汎用的な用途を有することができる。
さらに他の実施の形態では、(非協調プロセスを有するプロセッサおよびプロセスが協調的であるプロセッサの双方について)マルチプロセッサコンピュータシステム内の全プロセッサの再統合(すべてのメモリのコピー)が、論理プロセッサの複数のプロセッサ間で非協調プロセスを同期するために使用されることができる。
上記説明は、本発明の原理およびさまざまな実施の形態の例示であるように意図されている。
当業者には、上記開示を十分に理解することによって、多数の変形および変更が明らかになる。
添付した特許請求の範囲は、このようなすべての変形および変更を包含するように解釈されることが意図されている。
当業者には、上記開示を十分に理解することによって、多数の変形および変更が明らかになる。
添付した特許請求の範囲は、このようなすべての変形および変更を包含するように解釈されることが意図されている。
1000・・・計算システム
10A、10B、10C・・・コンピュータシステム
12・・・論理プロセッサ
14、16・・・I/Oデバイス
18・・・同期論理回路
22・・・同期論理回路
26・・・相互接続部
28・・・投票者論理回路
30、32・・・ネットワーク
34、36、38、40・・・プロセッサ
42・・・I/Oブリッジメモリコントローラ
44・・・プロセッサバス
46・・・メモリモジュール
48・・・再統合論理回路
50・・・論理プロセッサ
52A、52B・・・メモリパーティション
54・・・同期レジスタ
56・・・投票者論理回路
10A、10B、10C・・・コンピュータシステム
12・・・論理プロセッサ
14、16・・・I/Oデバイス
18・・・同期論理回路
22・・・同期論理回路
26・・・相互接続部
28・・・投票者論理回路
30、32・・・ネットワーク
34、36、38、40・・・プロセッサ
42・・・I/Oブリッジメモリコントローラ
44・・・プロセッサバス
46・・・メモリモジュール
48・・・再統合論理回路
50・・・論理プロセッサ
52A、52B・・・メモリパーティション
54・・・同期レジスタ
56・・・投票者論理回路
Claims (10)
- 複数のプロセッサ(PA、PB、PC)間で情報を交換する方法であって、
第1のプロセッサ(PA、PB、PC)によって、論理デバイス(18、20、22、24)に第1のデータを書き込み、次いで、前記第1のプロセッサ(PA、PB、PC)によって、ユーザプログラムの処理を継続し、
第2のプロセッサ(PA、PB、PC)によって、前記論理デバイス(18、20、22、24)に第2のデータを書き込み、次いで、前記第2のプロセッサ(PA、PB、PC)によって、ユーザプログラムの処理を継続し、
前記すべてのプロセッサ(PA、PB、PC)が、自身の各データを前記論理デバイス(18、20、22、24)に書き込んだ後に、前記論理デバイス(18、20、22、24)によって、前記第1のデータおよび前記第2のデータを、前記第1のプロセッサおよび前記第2のプロセッサ(PA、PB、PC)のそれぞれに書き込む
方法。 - 前記第1のプロセッサ(PA、PB、PC)によって書き込むことは、前記論理デバイス(18、20、22、24)の第1のメモリ位置(54)に書き込むことをさらに含み、
前記第2のプロセッサ(PA、PB、PC)によって書き込むことは、前記論理デバイス(18、20、22、24)の第2のメモリ位置(54)に書き込むことをさらに含み、
前記論理デバイス(18、20、22、24)によって書き込むことは、前記第1のデータおよび前記第2のデータを前記第1のプロセッサ(PA、PB、PC)のメモリ(46)に書き込むこと、および、前記第1のデータおよび前記第2のデータを前記第2のプロセッサ(PA、PB、PC)のメモリ(46)に書き込むことをさらに含む
請求項1に記載の方法。 - 第3のプロセッサ(PA、PB、PC)によって、前記論理デバイス(18、20、22、24)に第3のデータを書き込み、次いで、前記第3のプロセッサ(PA、PB、PC)によって、ユーザプログラムの実行を継続することをさらに含み、
前記論理デバイス(18、20、22、24)によって書き込むことは、前記第1のデータ、前記第2のデータおよび前記第3のデータのそれぞれを、前記プロセッサ(PA、PB、PC)のそれぞれに書き込むことをさらに含む
請求項1に記載の方法。 - 前記第1のプロセッサ(PA、PB、PC)によって書き込むことは、前記論理デバイス(18、20、22、24)の第1のメモリ位置(54)に書き込むことをさらに含み、
前記第2のプロセッサ(PA、PB、PC)によって書き込むことは、前記論理デバイス(18、20、22、24)の第2のメモリ位置(54)に書き込むことをさらに含み、
前記第3のプロセッサ(PA、PB、PC)によって書き込むことは、前記論理デバイス(PA、PB、PC)の第3のメモリ位置(54)に書き込むことをさらに含み、
前記論理デバイス(18、20、22、24)によって書き込むことは、前記第1のデータ、前記第2のデータおよび前記第3のデータのそれぞれを、前記第1のプロセッサ、前記第2のプロセッサおよび前記第3のプロセッサ(PA、PB、PC)のそれぞれの前記メモリ(46)に書き込むことをさらに含む
請求項3に記載の方法。 - 前記論理デバイス(18、20、22、24)によって書き込むことは、前記第1のプロセッサ、前記第2のプロセッサおよび前記第3のプロセッサ(PA、PB、PC)のそれぞれの前記メモリ(46)に、日時の値を書き込むことをさらに含む
請求項4に記載の方法。 - 第1のメモリ(46)に連結された第1のプロセッサ(PA、PB、PC)と、
第2のメモリ(46)に連結された第2のプロセッサ(PA、PB、PC)と、
前記第1のプロセッサおよび前記第2のプロセッサ(PA、PB、PC)に連結された論理デバイス(18、20、22、24)と
を備え、
前記第1のプロセッサ(PA、PB、PC)は、前記論理デバイス(18、20、22、24)に第1のデータを書き込むように構成され、
前記第2のプロセッサ(PA、PB、PC)は、前記論理デバイス(18、20、22、24)に第2のデータを書き込むように構成され、
前記論理デバイス(18、20、22、24)は、前記第1のデータおよび前記第2のデータを、前記第1のメモリ(46)に書き込むように構成され、前記第1のデータおよび前記第2のデータを、前記第2のメモリ(46)に書き込むように構成される
コンピュータシステム。 - 前記第1のメモリおよび前記第2のメモリ(46)のそれぞれに前記第1のデータおよび前記第2のデータを書き込むことと同時に、前記論理デバイス(18、20、22、24)は、日時の表示を前記第1のメモリ(46)に書き込むように構成され、この日時の表示を前記第2のメモリ(46)に書き込むように構成される
請求項6に記載のコンピュータシステム。 - 前記第1のデータの前記論理デバイス(18、20、22、24)への書き込み後であって、前記第1のデータおよび前記第2のデータの前記第1のメモリ(46)への書き込み前に、前記第1のプロセッサ(PA、PB、PC)は、ユーザプログラムの実行を再開するように構成され、
前記第2のデータの前記論理デバイス(18、20、22、24)への書き込み後であって、前記第1のデータおよび前記第2のデータの前記第2のメモリ(46)への書き込み前に、前記第2のプロセッサ(PA、PB、PC)は、ユーザプログラムの実行を再開するように構成される
請求項6に記載のコンピュータシステム。 - 第3のメモリ(46)および前記論理デバイス(18、20、22、24)に連結された第3のプロセッサ(PA、PB、PC)をさらに備え、
前記第3のプロセッサ(PA、PB、PC)は、第3のデータを前記論理デバイス(18、20、22、24)に書き込むように構成され、
前記論理デバイス(18、20、22、24)は、前記第1のデータ、前記第2のデータおよび前記第3のデータを、前記プロセッサ(PA、PB、PC)のそれぞれに書き込むように構成される
請求項7に記載のコンピュータシステム。 - 前記第1のデータの前記論理デバイス(18、20、22、24)への書き込み後であって、前記第1のデータ、前記第2のデータおよび前記第3のデータの前記第1のメモリ(46)への書き込み前に、前記第1のプロセッサ(PA、PB、PC)は、ユーザプログラムの実行を再開するように構成され、
前記第2のデータの前記論理デバイス(18、20、22、24)への書き込み後であって、前記第1のデータ、前記第2のデータおよび前記第3のデータの前記第2のメモリ(46)への書き込み前に、前記第2のプロセッサ(PA、PB、PC)は、ユーザプログラムの実行を再開するように構成され、
前記第3のデータの前記論理デバイス(18、20、22、24)への書き込み後であって、前記第1のデータ、前記第2のデータおよび前記第3のデータの前記第3のメモリ(46)への書き込み前に、前記第3のプロセッサ(PA、PB、PC)は、ユーザプログラムの実行を再開するように構成される
請求項9に記載のコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US55781204P | 2004-03-30 | 2004-03-30 | |
US11/042,985 US8799706B2 (en) | 2004-03-30 | 2005-01-25 | Method and system of exchanging information between processors |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005285121A true JP2005285121A (ja) | 2005-10-13 |
Family
ID=35062418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005085561A Withdrawn JP2005285121A (ja) | 2004-03-30 | 2005-03-24 | プロセッサ間で情報を交換する方法およびシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US8799706B2 (ja) |
JP (1) | JP2005285121A (ja) |
DE (1) | DE102005014458A1 (ja) |
TW (1) | TW200538940A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008165777A (ja) * | 2006-12-26 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | 資源回復するための方法、情報処理システムおよびコンピュータ・プログラム |
JP2009238056A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799706B2 (en) * | 2004-03-30 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Method and system of exchanging information between processors |
US7424641B2 (en) * | 2005-04-06 | 2008-09-09 | Delphi Technologies, Inc. | Control system and method for validating operation of the control system |
JP4629793B2 (ja) * | 2007-03-29 | 2011-02-09 | 富士通株式会社 | 情報処理装置、エラー処理方法 |
FR2925191B1 (fr) * | 2007-12-14 | 2010-03-05 | Thales Sa | Architecture de traitement numerique a haute integrite a multiples ressources supervisees |
US8473818B2 (en) * | 2009-10-12 | 2013-06-25 | Empire Technology Development Llc | Reliable communications in on-chip networks |
WO2013101077A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Reset of multi-core processing system |
FR3108993A1 (fr) * | 2020-04-07 | 2021-10-08 | Airbus Operations | Procédé et système de synchronisation d’unités de calcul d’un aéronef. |
US20230066835A1 (en) * | 2021-08-27 | 2023-03-02 | Keysight Technologies, Inc. | Methods, systems and computer readable media for improving remote direct memory access performance |
CN117093434B (zh) * | 2023-10-20 | 2024-01-30 | 深圳品网科技有限公司 | 一种用于笔记本电脑的开关机自检测方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3665173A (en) * | 1968-09-03 | 1972-05-23 | Ibm | Triple modular redundancy/sparing |
AU616213B2 (en) * | 1987-11-09 | 1991-10-24 | Tandem Computers Incorporated | Method and apparatus for synchronizing a plurality of processors |
CA2003338A1 (en) * | 1987-11-09 | 1990-06-09 | Richard W. Cutts, Jr. | Synchronization of fault-tolerant computer system having multiple processors |
US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
AU625293B2 (en) * | 1988-12-09 | 1992-07-09 | Tandem Computers Incorporated | Synchronization of fault-tolerant computer system having multiple processors |
US5295258A (en) * | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
DE4129809C2 (de) * | 1991-01-28 | 2000-08-17 | Bosch Gmbh Robert | Mehrrechnersystem |
US5379415A (en) * | 1992-09-29 | 1995-01-03 | Zitel Corporation | Fault tolerant memory system |
US6233702B1 (en) * | 1992-12-17 | 2001-05-15 | Compaq Computer Corporation | Self-checked, lock step processor pairs |
EP0986007A3 (en) | 1993-12-01 | 2001-11-07 | Marathon Technologies Corporation | Method of isolating I/O requests |
JP3481737B2 (ja) * | 1995-08-07 | 2003-12-22 | 富士通株式会社 | ダンプ採取装置およびダンプ採取方法 |
US5790397A (en) | 1996-09-17 | 1998-08-04 | Marathon Technologies Corporation | Fault resilient/fault tolerant computing |
US5896523A (en) | 1997-06-04 | 1999-04-20 | Marathon Technologies Corporation | Loosely-coupled, synchronized execution |
US6279119B1 (en) | 1997-11-14 | 2001-08-21 | Marathon Technologies Corporation | Fault resilient/fault tolerant computing |
US6327668B1 (en) | 1998-06-30 | 2001-12-04 | Sun Microsystems, Inc. | Determinism in a multiprocessor computer system and monitor and processor therefor |
US6393582B1 (en) | 1998-12-10 | 2002-05-21 | Compaq Computer Corporation | Error self-checking and recovery using lock-step processor pair architecture |
US6948092B2 (en) * | 1998-12-10 | 2005-09-20 | Hewlett-Packard Development Company, L.P. | System recovery from errors for processor and associated components |
US6604717B2 (en) | 2000-11-15 | 2003-08-12 | Stanfield Mccoy J. | Bag holder |
US6934936B2 (en) * | 2001-02-01 | 2005-08-23 | International Business Machines Corporation | Apparatus and method for adaptive address-based historical utilization recording |
US7284088B2 (en) * | 2003-10-23 | 2007-10-16 | Hewlett-Packard Development Company, L.P. | Methods of reading and writing data |
US7437692B2 (en) * | 2003-11-10 | 2008-10-14 | Infineon Technologies Ag | Memory debugger for system-on-a-chip designs |
US8799706B2 (en) * | 2004-03-30 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Method and system of exchanging information between processors |
US7590885B2 (en) * | 2005-04-26 | 2009-09-15 | Hewlett-Packard Development Company, L.P. | Method and system of copying memory from a source processor to a target processor by duplicating memory writes |
-
2005
- 2005-01-25 US US11/042,985 patent/US8799706B2/en active Active
- 2005-03-24 JP JP2005085561A patent/JP2005285121A/ja not_active Withdrawn
- 2005-03-28 TW TW094109591A patent/TW200538940A/zh unknown
- 2005-03-30 DE DE102005014458A patent/DE102005014458A1/de not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008165777A (ja) * | 2006-12-26 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | 資源回復するための方法、情報処理システムおよびコンピュータ・プログラム |
JP2009238056A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法 |
Also Published As
Publication number | Publication date |
---|---|
DE102005014458A1 (de) | 2005-10-27 |
US20050246578A1 (en) | 2005-11-03 |
US8799706B2 (en) | 2014-08-05 |
TW200538940A (en) | 2005-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005285120A (ja) | ユーザプログラムを実行する複数のプロセッサにおける非同期割り込みにサービスを提供する方法およびシステム | |
JP2005285119A (ja) | 非決定的プロセッサにおいてユーザプログラムを実行する方法およびシステム | |
US7434098B2 (en) | Method and system of determining whether a user program has made a system level call | |
JP4463212B2 (ja) | メモリストアをコピーすることによってユーザプログラムの複製コピーの実行ポイントをアラインメントする方法及びシステム | |
JP2005285121A (ja) | プロセッサ間で情報を交換する方法およびシステム | |
JP4386449B2 (ja) | 実行される命令に関する情報を交換することによってユーザプログラムの複製コピーの実行ポイントをアラインメントする方法及びシステム | |
US7155704B2 (en) | Determinism in a multiprocessor computer system and monitor and processor therefor | |
US6499048B1 (en) | Control of multiple computer processes using a mutual exclusion primitive ordering mechanism | |
US20090044044A1 (en) | Device and method for correcting errors in a system having at least two execution units having registers | |
JPH0833874B2 (ja) | 複数のプロセッサを同期する装置 | |
US20090119540A1 (en) | Device and method for performing switchover operations in a computer system having at least two execution units | |
JP6247816B2 (ja) | 高完全性処理を提供する方法 | |
JP3030658B2 (ja) | 電源故障対策を備えたコンピュータシステム及びその動作方法 | |
JP4182948B2 (ja) | フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法 | |
US20040193735A1 (en) | Method and circuit arrangement for synchronization of synchronously or asynchronously clocked processor units | |
US20080313384A1 (en) | Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units | |
US7549085B2 (en) | Method and apparatus to insert special instruction | |
US20060195849A1 (en) | Method for synchronizing events, particularly for processors of fault-tolerant systems | |
JP2006252548A (ja) | 時間的冗長性を実施するための可変遅延命令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070209 |