(57)【要約】【課題】マルチプロセッサの操作を管理する。【解決手段】第１プロセッサはキャッシュ・ラインが第１プロセッサおよび第２プロセッサの両方が共有するリソースの共有メモリのラインからキャッシュされるキャッシュ・ラインを反復的に読み取る。共有メモリ・ラインとキャッシュ・ラインのコヒーレンシはキャッシュ・コヒーレンシ・プロトコルに従い保つ。ある側面において、反復的なキャッシュ・ラインの読み取りは第１プロセッサを占有し、第１プロセッサが共有リソースにアクセスするのを禁止する。別の側面において、共有リソースに関わる第２プロセッサの操作の完了時、第２プロセッサは共有メモリ・ラインにデータを書き込んで、共有リソースを第１プロセッサからアクセスできることを第１プロセッサに知らせる。それに応答して、第１プロセッサはキャッシュ・コヒーレンシ・プロトコルに従いキャッシュ・ラインの状態を変更し、第２プロセッサが書き込んだデータを読み取る。他の実施例を記述し特許請求する。【選択図】図２
2008522264.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサがキャッシュ・ラインを反復的に読み取るステップで、前記キャッシュ・ラインが前記第１プロセッサと第２プロセッサの両方が共有するリソースの共有メモリのラインからキャッシュされ、前記共有メモリ・ラインと前記キャッシュ・ラインとのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保ち、前記反復的なキャッシュ・ラインの読み取りが前記第１プロセッサを占有して前記第１プロセッサが前記共有リソースにアクセスするのを禁止する、前記読み取るステップと、
前記第２プロセッサが前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第１プロセッサからアクセスできることを前記第１プロセッサに知らせるステップと、
前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記キャッシュ・ラインの状態を変更するステップとを有する、方法。
【請求項２】
前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い前記共有メモリ・ラインに前記第２プロセッサにより書き込まれた前記データを前記キャッシュ・ラインに取り出すステップをさらに有する、請求項１の方法。
【請求項３】
前記第１プロセッサが、前記キャッシュ・ラインの読み取り、前記キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第１エラー処理手続きを実行するステップをさらに有する、請求項２の方法。
【請求項４】
前記第２プロセッサが、前記第１プロセッサが前記キャッシュ・ラインを読み取る間の共有リソースのリセット、および前記共有リソースのリセットの完了時の前記共有メモリ・ラインへの前記データの書き込みを含む第２エラー処理手続きを実行するステップをさらに有する、請求項３の方法。
【請求項５】
エラー状態がある場合に、共有リソースが前記第１および第２プロセッサにそれぞれ第１および第２割込みを発するステップで、前記第１プロセッサは前記第１割込みに応答して前記第１エラー処理手続きを実行し、前記第２プロセッサは前記第２割込みに応答して前記第２エラー処理手続きを実行する、前記発するステップをさらに有する請求項４の方法。
【請求項６】
前記第２プロセッサが第２キャッシュ・ラインを読み取るステップで、前記第２キャッシュ・ラインは前記第１プロセッサと第２プロセッサの両方が共有するリソースの共有メモリのラインからキャッシュされ、前記共有メモリ・ラインと前記第２キャッシュ・ラインとのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保ち、前記第２キャッシュ・ラインの読み取りが前記第２プロセッサを占有して前記第２プロセッサが前記共有リソースへのアクセスするのを禁止する、前記読み取るステップと、
前記第１プロセッサは前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインにデータを書き込んで、共有リソースに前記第２プロセッサからアクセスできることを前記第２プロセッサに知らせるステップと、
前記第２プロセッサは、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記第２キャッシュ・ラインの状態を変更するステップとをさらに有する、請求項５の方法。
【請求項７】
前記第２プロセッサが、前記第１プロセッサが前記共有メモリにデータを書き込んだことを検知するようにスヌープするステップと、
前記第２プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインに第１プロセッサにより書き込まれた前記データを前記第２キャッシュ・ラインに読み取るステップとをさらに有する、請求項１の方法。
【請求項８】
前記第２プロセッサが、前記第２キャッシュ・ラインの読み取り、前記第２キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第３エラー処理手続きを実行するステップをさらに有する、請求項７の方法。
【請求項９】
前記第１プロセッサが、前記第２プロセッサが前記第２キャッシュ・ラインを読み取る間の共有リソースのリセット、および前記共有リソースのリセット時の完了前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインへの前記データの書き込みを含む第４エラー処理手続きを実行するステップをさらに有する、請求項８の方法。
【請求項１０】
前記第１プロセッサが、前記第２プロセッサが前記共有メモリ・ラインにデータを書き込んだことを検知するようにスヌープするステップをさらに有する、請求項１の方法。
【請求項１１】
前記第１プロセッサが、前記キャッシュ・ラインを反復的に読み取る期間が終了したことを判定するステップと、
前記期間の終了時、前記第１プロセッサが共有リソースのリセットを含む第２エラー処理手続きを実行するステップとをさらに有する、請求項１の方法。
【請求項１２】
キャッシュをもつ第１プロセッサと、
第２プロセッサと、
共有メモリを含む複数の共有リソースで、前記共有メモリのラインが前記第１プロセッサのキャッシュのラインにキャッシュされ、前記共有メモリ・ラインと前記キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保つ、前記複数の共有リソースとを有し、前記第１プロセッサが前記キャッシュ・ラインを反復的に読み取るようになされたロジックをもち、前記反復的なキャッシュ・ラインの読み取りが前記第１プロセッサを占有して前記第１プロセッサが前記共有リソースにアクセスするのを禁止し、
前記第２プロセッサが前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第１プロセッサからアクセスできることを前記第１プロセッサに知らせるようになされたロジックをもち、
前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記キャッシュ・ラインの状態を変更するようになされたロジックをもつ、システム。
【請求項１３】
前記第１プロセッサのロジックがさらに、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインに第２プロセッサが書き込んだ前記データを前記キャッシュラインに取り出すようになされた、請求項１２のシステム。
【請求項１４】
前記第１プロセッサのロジックがさらに、前記キャッシュ・ラインの読み取り、前記キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第１エラー処理手続きを実行するようになされた、請求項１３のシステム。
【請求項１５】
前記第２プロセッサのロジックがさらに、前記第１プロセッサが前記キャッシュ・ラインを読み取っている間の共有リソースのリセット、および前記共有リソースのリセットの完了時の前記共有メモリ・ラインへの前記データの書き込みを含む第２エラー処理手続きを実行するようになされた、請求項１４のシステム。
【請求項１６】
エラー状態がある場合に、共有リソースが前記第１および第２プロセッサにそれぞれ第１および第２割込みを発するようになされたロジックをもち、前記第１プロセッサのロジックが前記第１割込みに応答して前記第１エラー処理手続きを実行し、前記第２プロセッサのロジックが前記第２割込みに応答して前記第２エラー処理手続きを実行する、請求項１５のシステム。
【請求項１７】
前記第２プロセッサが第２キャッシュ・ラインをもち、前記第２プロセッサのロジックがさらに前記第２キャッシュ・ラインを読み取るようになされ、前記第２キャッシュ・ラインが前記第１プロセッサおよび第２プロセッサの両方が共有する前記リソースの共有メモリのラインからキャッシュされ、前記共有メモリ・ラインと前記第２キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保ち、前記第２キャッシュ・ラインの読み取りが前記第２プロセッサを占有して前記第２プロセッサが前記共有リソースにアクセスするのを禁止し、
前記第１プロセッサのロジックが、前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第２プロセッサからアクセスできることを前記第２プロセッサに知らせるようになされ、
前記第２プロセッサのロジックが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記第２キャッシュ・ラインの状態を変更するようになされた、請求項１６のシステム。
【請求項１８】
前記第２プロセッサのロジックがさらに、前記第１プロセッサが前記共有メモリにデータを書き込んだことを検知するようにスヌープするようになされ、
前記第２プロセッサのロジックがさらに、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインに第１プロセッサにより書き込まれた前記データを前記第2キャッシュ・ラインに読み取るようになされた、請求項１２のシステム。
【請求項１９】
前記第２プロセッサのロジックがさらに、前記第２キャッシュ・ラインの読み取り、前記第２キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第３エラー処理手続きを実行するようになされた、請求項１８のシステム。
【請求項２０】
前記第１プロセッサのロジックがさらに、前記第２プロセッサが前記第２キャッシュ・ラインを読み取っている間の共有リソースのリセット、前記共有リソースのリセットの完了時の前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインへの前記データの書き込みを含む第４エラー処理手続きを実行するようになされた、請求項１９のシステム。
【請求項２１】
前記第１プロセッサのロジックがさらに、前記第２プロセッサが前記共有メモリ・ラインにデータを書き込んだことを検知するようにスヌープするようになされた、請求項１２のシステム。
【請求項２２】
前記第１プロセッサのロジックがさらに、前記キャッシュ・ラインを反復的に読み取る期間が終了したことを判定し、前記期間の終了時、共有リソースのリセットを含む第２エラー処理手続きを実行するようになされた、請求項１２のシステム。
【請求項２３】
システムによって実行されて操作を行うことのできるコードを有する製造物で、前記システムはキャッシュをもつ第１プロセッサと、第２プロセッサと、共有メモリを含む複数の共有リソースを備え、前記共有メモリのラインが前記第１プロセッサのキャッシュのラインにキャッシュされ、前記共有メモリ・ラインと前記キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保ち、さらに前記操作は、
第１プロセッサが前記キャッシュ・ラインを反復的に読み取り、前記反復的なキャッシュ・ラインの読み取りが前記第１プロセッサを占有して前記第１プロセッサが前記共有リソースにアクセスするのを禁止する、前記読み取るステップと、
前記第２プロセッサが前記共有メモリ・ラインにデータを書き込んで、前記共有リソースが前記第１プロセッサからアクセスできることを前記第１プロセッサに知らせるステップと、
前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記キャッシュ・ラインの状態を変更するステップとを有する、製造物。
【請求項２４】
前記操作は、前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインに前記第2プロセッサにより書き込まれた前記データを前記キャッシュ・ラインに取り出すステップをさらに有する、請求項２３の製造物。
【請求項２５】
前記操作は、前記第１プロセッサが、前記キャッシュ・ラインの読み取り、前記キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第１エラー処理手続きを実行するステップをさらに有する、請求項２４の製造物。
【請求項２６】
前記操作は、前記第２プロセッサが、前記第１プロセッサが前記キャッシュ・ラインを読み取っている間の共有リソースのリセット、前記共有リソースのリセットの完了時の前記共有メモリ・ラインへの前記データの書き込みを含む第２エラー処理手続きを実行するステップをさらに有する、請求項２５の製造物。
【請求項２７】
前記操作が、エラー状態になった場合に、共有リソースが前記第１および第２プロセッサにそれぞれ第１および第２割込みを発するステップで、前記第１プロセッサが前記第１割込みに応答して前記第１エラー処理手続きを実行し、前記第２プロセッサが前記第２割込みに応答して前記第２エラー処理手続きを実行する、前記発するステップをさらに有する、請求項２６の製造物。
【請求項２８】
前記第２プロセッサが第２キャッシュ・ラインをもち、前記操作が、
前記第２プロセッサが前記第２キャッシュ・ラインを読み取るステップで、前記第２キャッシュ・ラインが前記第１プロセッサおよび第２プロセッサの両方が共有する前記リソースの共有メモリのラインからキャッシュされ、前記共有メモリ・ラインと前記第２キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従って保ち、前記第２キャッシュ・ラインの読み取りが前記第２プロセッサを占有して前記第２プロセッサが前記共有リソースにアクセスするのを禁止される、前記読み取るステップと、
前記第１プロセッサは前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第２プロセッサからアクセスできることを前記第２プロセッサに知らせるステップと、
前記第２プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記第２キャッシュ・ラインの状態を変更するステップとをさらに有する、請求項２７の製造物。
【請求項２９】
前記操作は、前記第２プロセッサが前記第１プロセッサの前記共有メモリへのデータの書き込みを検知するようにスヌープするステップと、前記キャッシュ・コヒーレンシ・プロトコルに従い前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインに前記第1プロセッサにより書き込まれた前記データを前記第2キャッシュ・ラインに読み取るステップとをさらに有する、請求項２３の製造物。
【請求項３０】
前記操作は、前記第２プロセッサが、前記第２キャッシュ・ラインの読み取り、前記第２キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第３エラー処理手続きを実行するステップをさらに有する、請求項２９の製造物。
【請求項３１】
前記操作は、前記第１プロセッサが、前記第２プロセッサが前記第２キャッシュ・ラインを読み取っている間の共有リソースのリセットと、前記共有リソースのリセットの完了時の前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインへの前記データの書き込みを含む第４エラー処理手続きを実行するステップをさらに有する、請求項３０の製造物。
【請求項３２】
前記操作が、前記第１プロセッサが前記第２プロセッサの前記共有メモリ・ラインへのデータの書き込みを検知するようにスヌープするステップをさらに有する、請求項２３の製造物。
【請求項３３】
前記操作は、前記第１プロセッサが前記キャッシュ・ラインを反復的に読み取る期間が終了したことを判定するステップと、前記期間の終了時、共有リソースのリセットを含む第２エラー処理手続きを実行するステップとをさらに有する、請求項２３の製造物。
【請求項３４】
演算命令を配備する方法が、
コンピュータ読み取り可能コードをシステムに統合するステップを有し、前記システムがキャッシュをもつ第１プロセッサと、第２プロセッサと、共有メモリを含む複数の共有リソースとを備え、前記共有メモリのラインが前記第１プロセッサのキャッシュのラインでキャッシュされ、前記共有メモリ・ラインと前記キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保ち、コードは前記システムとの組み合わせで、前記システムに、
前記第１プロセッサは前記キャッシュ・ラインを反復的に読み取る操作で、前記反復的なキャッシュ・ラインの読み取りが前記第１プロセッサを占有して前記第１プロセッサが前記共有リソースにアクセスするのを禁止する、前記読み取る操作と、
前記第２プロセッサが前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第１プロセッサからアクセスできることを前記第１プロセッサに知らせる操作と、
前記第１プロセッサが前記キャッシュ・コヒーレンシ・プロトコルに従い前記共有メモリ・ラインへの前記データの書き込みに応答して前記キャッシュ・ラインの状態を変更する操作とを行わせることができる、演算命令を配備する方法。
【請求項３５】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第１プロセッサが前記キャッシュ・コヒーレンシ・プロトコルに従い前記共有メモリ・ラインに前記第2プロセッサにより書き込まれた前記データを前記キャッシュ・ラインに取り出す操作を行わせることのできる、請求項３４の方法。
【請求項３６】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第１プロセッサがキャッシュ・ラインの読み取り、前記キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第１エラー処理手続きを実行する操作を行わせることのできる、請求項３５の方法。
【請求項３７】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第２プロセッサが前記第１プロセッサが前記キャッシュ・ラインを読み取っている間の共有リソースのリセット、前記共有リソースのリセットの完了時の前記共有メモリ・ラインへの前記データの書き込みを含む第２エラー処理手続きを実行する操作を行わせることのできる、請求項３６の方法。
【請求項３８】
前記コードは前記システムとの組み合わせでさらに、前記システムに、エラー状態がある場合に共有リソースが前記第１および第２プロセッサにそれぞれ第１および第２割込みを発する操作を行わせることができ、前記第１プロセッサは前記第１割込みに応答して前記第１エラー処理手続きを実行し、前記第２プロセッサは前記第２割込みに応答して前記第２エラー処理手続きを実行する、請求項３７の方法。
【請求項３９】
前記第２プロセッサが第２キャッシュ・ラインをもち、前記コードは前記システムとの組み合わせでさらに、前記システムに、
前記第２プロセッサが前記第２キャッシュ・ラインを読み取る操作で、前記第２キャッシュ・ラインが前記第１プロセッサおよび第２プロセッサの両方が共有する前記リソースの共有メモリのラインからキャッシュされ、前記共有メモリ・ラインと前記第２キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い保ち、前記第２キャッシュ・ラインの読み取りが前記第２プロセッサを占有して前記第２プロセッサが前記共有リソースにアクセスするのを禁止する、前記読み取る操作と、
前記第１プロセッサが前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第２プロセッサからアクセスできることを前記第２プロセッサに知らせる操作と、
前記第２プロセッサが前記キャッシュ・コヒーレンシ・プロトコルに従い前記共有メモリ・ラインへの前記データの書き込みに応答して前記第２キャッシュ・ラインの状態を変更する操作とを行わせることができる、請求項３８の方法。
【請求項４０】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第２プロセッサが前記第１プロセッサの前記共有メモリへのデータの書き込みを検知するようにスヌープする操作と、前記キャッシュ・コヒーレンシ・プロトコルに従い前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインに前記第1プロセッサにより書き込まれた前記データを前記第2キャッシュ・ラインに読み取る操作とを行わせることのできる、請求項３４の方法。
【請求項４１】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第２プロセッサが前記第２キャッシュ・ラインの読み取り、前記第２キャッシュ・ラインの状態の変更および前記共有メモリ・ラインの読み取りを含む第３エラー処理手続きを実行する操作を行わせることのできる、請求項４０の方法。
【請求項４２】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第１プロセッサが前記第２プロセッサの前記第２キャッシュ・ラインの読み取りの間に共有リソースのリセット、前記共有リソースのリセットの完了時に前記第２キャッシュ・ラインがキャッシュされる前記共有メモリ・ラインへの前記データの書き込みを含む第４エラー処理手続きを実行する操作を行わせることのできる、請求項４１の方法。
【請求項４３】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第１プロセッサが前記第２プロセッサの前記共有メモリ・ラインへのデータの書き込みを検知するようにスヌープする操作を行わせることのできる、請求項３４の方法。
【請求項４４】
前記コードは前記システムとの組み合わせでさらに、前記システムに、前記第１プロセッサが前記キャッシュ・ラインを反復的に読み取る期間が終了したことを判定する操作と、前記期間の終了時、共有リソースのリセットを含む第２エラー処理手続きを実行する操作を行わせることのできる、請求項３４の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサの操作の管理に関する。
【背景技術】
【０００２】
あるコンピューティング環境では、マルチ・ホスト・システムがＩＢＭ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）エンタープライズ・ストレージ・サーバ（ＥＳＳ）（Ｒ）などの制御装置と通信して、一または複数の論理パスで相互接続されたハードディスク・ドライブなどの記憶デバイスへのアクセスを提供しながら、記憶デバイス内のデータを要求を受け取るＥＳＳで管理する（ＩＢＭおよびＥＳＳはＩＢＭ社（インターナショナル・ビジネス・マシーンズ・コーポレーション）の登録商標である）。相互接続されたドライブは、直接アクセス記憶デバイス（ＤＡＳＤ）、独立ディスク冗長アレイ（ＲＡＩＤ）、単なるディスクの束（ＪＢＯＤ）等として構成できる。制御装置はマルチプロセッサ型のシステムでよい。例えば、制御装置は、クラスタとしても知られる重複かつ冗長なプロセッシング・コンプレックスを含むことができ、１つが障害を起こした場合に残りのクラスタへのフェイルオーバーに備える。
【０００３】
マルチプロセッサ・システムには多様なタイプがある。あるタイプでは、プロセッサは各々がそれ自体のメモリおよびキャッシュをもつことがある。プロセッサは並行してランしてディスクを共有してもよい。あるタイプのマルチプロセッサ・システムでは、各プロセッサがそれぞれオペレーティング・システムのコピーをランすることができ、プロセッサは、例えばローカル・エリア・ネットワーク（ＬＡＮ）で疎結合できる。プロセッサ間の通信はメッセージの受渡しで行える。
【０００４】
別のタイプのマルチプロセッサ・システムでは、プロセッサは、スイッチまたはブリッジにより接続するなど、もっと密に結合することがある。プロセッサ間の通信は、例えば共有メモリで行える。
【０００５】
さらに別のタイプのマルチプロセッサ・システムでは、すべてのプロセッサでオペレーティング・システムのコピーを１つだけランすることがある。これらのタイプのマルチプロセッサ・システムは高速バスまたはスイッチで同じ筐体内に密に結合される傾向にある。さらに、プロセッサは同じグローバル・メモリ、ディスク、および入出力（Ｉ／Ｏ）デバイスを共有できる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
共有ディスクなどの共有リソースが障害を起こす場合、マルチプロセッサ・システムのプロセッサは単に障害の発生したディスクを使うのをやめることができる。システムのプロセッサ全体で１つのオペレーティング・システムのコピーをランするマルチプロセッサ・システムでは、回復操作は容易に調整できる。例えば、ブリッジなどの共有リソースを、プロセッサの１つがブリッジをリセットするなどの回復操作を行って復元する場合、該回復操作はプロセッサの共通のオペレーティング・システムにより様々なプロセッサ間で調整できる。
【０００７】
マルチプロセッサ・システム内の各プロセッサは、共有メモリの一または複数のラインをキャッシュできるキャッシュをもつこともある。このため、２つ以上のキャッシュが共有メモリの同じラインのコピーをもつことがある。あるプロセッサが他のプロセッサのキャッシュにキャッシュされる共有メモリのライン内のデータを変更する場合、様々なキャッシュが異なる不正確なバージョンの共有メモリのラインをもつかもしれない。その結果、キャッシュされたデータは他のキャッシュまたは共有メモリに対してもはや「コヒーレント」ではないことがある。
【０００８】
複数のキャッシュ間でデータを同期するために、様々なキャッシュ・コヒーレンシ・プロトコルを採用できる。あるキャッシュ・コヒーレンシ・プロトコルは各キャッシュ・ラインに変更、排他、共有、または無効（ＭＥＳＩ）という４つの状態のうちの１つをマークする。変更状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインが変更されており、そのため共有メモリのラインにある元データはもはや有効ではないことを示す。排他状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインがその特定のキャッシュにしか格納されておらず、まだ変更されていないことを示す。共有状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインが他のプロトコルの他のキャッシュに格納できることを示す。無効状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインが無効であることを示す。
【０００９】
キャッシュ・コヒーレンシをとるには特定のコヒーレンシ・プロトコルを利用するスヌープ論理が採用されるのが一般的である。プロセッサ内のスヌープ論理はメッセージを他のプロセッサと共有する共通のバス・ラインにブロードキャストでき、あるプロセッサがそのキャッシュ内のデータを変更するたびに他のプロセッサに通知する。スヌープ論理は他のプロセッサからの当該メッセージを探してバスをスヌープすることもできる。
【００１０】
あるプロセッサが、別のプロセッサがそれ自体のキャッシュに存在するアドレスで値を変更したことを検知すると、スヌープ論理はＭＥＳＩプロトコルなどの様々なプロトコルに従ってそのキャッシュへのそのエントリを無効にする。キャッシュ・ラインが無効状態のマークをされると、プロセッサにキャッシュの値が有効ではないことを知らせることができる。その結果、プロセッサは共有メモリ内または別のキャッシュ内の正しい値を探すことができる。
【課題を解決するための手段】
【００１１】
マルチプロセッサの操作を管理するにあたって、第１プロセッサはキャッシュ・ラインが第１プロセッサおよび第２プロセッサの両方が共有するリソースの共有メモリのラインからキャッシュされるキャッシュ・ラインを反復的に読み取る。共有メモリ・ラインとキャッシュ・ラインの間のコヒーレンシはキャッシュ・コヒーレンシ・プロトコルに従って保つ。ある側面において、反復的なキャッシュ・ラインの読み取りは第１プロセッサを占有して、第１プロセッサが共有リソースにアクセスするのを禁止する。別の側面において、共有リソースに関わる第２プロセッサの操作の完了時、第２プロセッサはデータを共有メモリ・ラインに書き込んで、共有リソースに第１プロセッサからアクセスできることを第１プロセッサに知らせる。それに応答して、第１プロセッサはキャッシュ・コヒーレンシ・プロトコルに従いキャッシュ・ラインの状態を変更し、第２プロセッサが書き込んだデータを読み取る。他の実施例を記述し特許請求する。
【発明を実施するための最良の形態】
【００１２】
図１は、本明細書に記載する説明の側面を採用できるコンピューティング環境の一例である。一または複数のホスト２は記憶システム４に出される入出力（Ｉ／Ｏ）要求を制御装置６に伝えて、制御装置６が記憶システム４へのアクセスを管理する。一実施例では、制御装置６は、各々がプロセッサ１０ａ、１０ｃとホスト・アダプタ２２ａ、２２ｂとを含む２つのプロセッシング・コンプレックス８ａ、８ｂから構成される。各ホスト・アダプタ２２ａ、２２ｂは対応のプロセッシング・コンプレックス８ａ、８ｂがホスト２と通信するのを可能にし、プロセッサ１０ｂ、１０ｄを含む。図示する実施例では、各プロセッサ１０ａ、１０ｂ、１０ｃ、１０ｄはそれぞれ対応のメモリ１２ａ、１２ｂ、１２ｃ、１２ｄをもち、それぞれオペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄ、およびそれぞれデバイス・ドライバ２０ａ、２０ｂ、２０ｃ、２０ｄを個別に実行する。オペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄは互いに同じタイプでも、または各々まったく異なるタイプのオペレーティング・システムでもよい。例えば、オペレーティング・システム１８ａ、１８ｃは各々、例えばＬＩＮＵＸ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標）などの組み込み型マルチスレッドのオペレーティング・システムで、オペレーティング・システム１８ｂ、１８ｄは各々、例えばホスト・アダプタの実時間タスクを実行する組み込み型ハードウェア・アブストラクション・レイヤとすることができよう。ある特定のアプリケーション次第で、様々なタイプおよび組み合わせのオペレーティング・システムを採用できることは認識される。
【００１３】
各デバイス・ドライバ２０ａ、２０ｂ、２０ｃ、２０ｄは、デバイス・ドライバ２０ａ、２０ｂ、２０ｃ、２０ｄが実行するプロセッシング・コンプレックス８ａ、８ｂ内の対応のオペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄと、ホスト・アダプタ２２ａ、２２ｂおよび様々なデバイス・アダプタ２４ａ、２４ｂなどの内部もしくは外部デバイスとのインターフェースを提供する。デバイス・アダプタ２４ａ、２４ｂはプロセッシング・コンプレックス８ａ、８ｂが記憶システム４と通信するのを可能にする。図示する実施例は制御装置６が、プロセッシング・コンプレックス８ａ、８ｂ、デバイス・アダプタ２４ａ、２４ｂ等など、様々なコンポーネントのうちの２つをもつように示されているが、制御装置６はこれより多いもしくは少ない数の当該コンポーネントをもつことができることは認識される。
【００１４】
プロセッシング・コンプレックス８ａはバス３１ａに連結されて、そのプロセッシング・コンプレックス８ａのプロセッサ１０ａおよびプロセッサ１０ｂと共有する共有メモリ３０ａをもつことができる。各メモリ１２ａ、１２ｂはキャッシュ２８ａ、２８ｂをもつことができ、そこに共有メモリ３０ａの一または複数のラインをキャッシュできる。同様に、プロセッシング・コンプレックス８ｂはバス３１ｂに連結されて、そのプロセッシング・コンプレックス８ｂのプロセッサ１０ｃおよびプロセッサ１０ｄと共有する共有メモリ３０ｂをもつことができる。各メモリ１２ｃ、１２ｄはキャッシュ２８ｃ、２８ｄをもつことができ、そこに共有メモリ３０ｂの一または複数のラインをキャッシュできる。キャッシュ２８ａ、２８ｂ、２８ｃ、２８ｄは制御装置６の他のメモリのラインをキャッシュできる。
【００１５】
各プロセッシング・コンプレックス８ａ、８ｂは個別のパワー境界上にあってもよい。プロセッシング・コンプレックス８ａ、８ｂは、記憶システム４に構成される特定のボリュームに出されるＩ／Ｏ要求をハンドルするように割り当てることができる。プロセッシング・コンプレックス８ａ、８ｂは、ローカル・エリア・ネットワーク（ＬＡＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、バス・インターフェース、シリアル・インターフェース等を含めることができるデバイス・ネットワーク（図示せず）で、デバイス・アダプタ２４ａ、２４ｂ、２４ｃ、２４ｄを介して記憶システム４と通信する。
【００１６】
さらに、プロセッシング・コンプレックス８ａ、８ｂはブリッジ３４を含む接続３２で通信し、プロセッサ間の相互通信が共有アダプタ２２ａ、２２ｂなどの共有デバイスに対して行う操作の構成を管理することを可能にする。同様に、各プロセッシング・コンプレックス８ａ、８ｂはブリッジ３６ａ、３６ｂをもつ。ブリッジ３６ａはプロセッサ１０ａ、１０ｂが共有するリソースである。同様に、ブリッジ３６ｂはプロセッサ１０ｃ、１０ｄが共有するリソースである。
【００１７】
以下詳しく説明するように、プロセッサの活動の調整もプロセッサ・キャッシュ２８ａ、２８ｂ、２８ｃ、２８ｄおよびキャッシュ・コヒーレンシ・プロトコルを使って達成できる。例えば、ブリッジ３６ａなどの共有リソースが誤作動を起こすこともあり、正規の機能に復元するようリセットする必要があることがある。この回復操作は一または複数のプロセッサ・キャッシュ２８ａ、２８ｂ、およびキャッシュ・コヒーレンシ・プロトコルを使ってプロセッサ１０ａ、１０ｂ間で調整できる。同様に、ブリッジ３６ｂなどの共有リソースが誤作動を起こすことがあり、正規の機能に復元するようにリセットする必要があることがある。この回復操作は一または複数のプロセッサ・キャッシュ２８ｃ、２８ｄ、およびキャッシュ・コヒーレンシ・プロトコルを使ってプロセッサ１０ｃ、１０ｄ間で調整できる。
【００１８】
制御装置６は、エンタープライズ・ストレージ・サーバ、ストレージ・コントローラー等のあらゆるタイプのサーバ、あるいは付加記憶システム４へのＩ／Ｏ要求を管理するために使う他のデバイスを有することができ、記憶システムは相互接続されたハードディスク・ドライブ（例、ＤＡＳＤ、ＲＡＩＤ、ＪＢＯＤ等として構成される）、磁気テープ、電子メモリ等など、当分野で周知の一または複数の記憶デバイスを有することができる。ホスト２は、ローカル・エリア・ネットワーク（ＬＡＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク等などのネットワーク（図示せず）でアダプタ２２ａ、２２ｂを介して、制御装置６と通信できる。代わりに、ホスト２は周辺装置相互接続（ＰＣＩ）バスまたはシリアル・インターフェースなど、バス・インターフェースで制御装置６と通信できる。
【００１９】
共有アダプタ２２ａ、２２ｂなどの共有デバイスで障害が発生するとプロセッシング・コンプレックス８ａ、８ｂ内のオペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄにマシン・チェック状態を引き起こすことがあり、共有ハードウェアが１種の致命的エラーをもつ場合、両プロセッシング・コンプレックスのクラッシュを引き起こす可能性がある。一実施例では、これら回復操作はブリッジ３４などの共有デバイスから調整できる。
【００２０】
図２は、マルチプロセッサ・システムのプロセッサの操作をプロセッサ・キャッシュ、共有メモリ、およびキャッシュ・コヒーレンシ・プロトコルを使って調整できる実施例を図示する。例えば、プロセッシング・コンプレックス８ａのブリッジ３６ａに障害が発生することがある。プロセッサ１０ａ、１０ｂ間の回復操作を調整するために、キャッシュ２８ａ、２８ｂのうちの一方を共有メモリ３０ａおよびキャッシュ・コヒーレンシ・プロトコルとともに利用できる。
【００２１】
この例では、ブリッジ３６ａなどの共有リソースはエラー状態に入ると、プロセッサ１０ａ、１０ｂの各々に割込みを発することができる。このような割込みの受信に応答して、プロセッサ１０ａなどの第１プロセッサはエラー処理手続きを開始できる（ブロック２００）。同様に、プロセッサ１０ｂなどの第２プロセッサは第２エラー処理手続きを開始できる（ブロック２０２）。プロセッサ１０ａ、１０ｂはエラー処理手続きを開始するために他のイベントを利用できることは認識される。例えば、プロセッサ１０ａ、１０ｂは様々な共有デバイスの状態を監視して、エラー状態を検出したらエラー処理手続きを開始してもよい。
【００２２】
第１プロセッサ１０ａのエラー処理手続きに従い、第１プロセッサ１０ａはキャッシュ２８ａのラインなどのキャッシュ・ラインを反復的に読み取る（ブロック２０４）。この例では、反復的なキャッシュ・ラインの読み取りは第１プロセッサ１０ａを占有し、第１プロセッサ１０ａがブリッジ３６ａなどの共有リソースにアクセスするのを禁止する。この反復的な読み取りは、例えばループ・プロセスを使って達成できる。
【００２３】
さらに、第１プロセッサ１０ａに反復的に読み取られるキャッシュ・ラインは、第１プロセッサ１０ａおよび第２プロセッサ１０ｂが共有するリソースの共有メモリのラインからキャッシュされる。この例では、キャッシュ・ラインは共有メモリ３０ａのラインからキャッシュできる。加えて、例えば、ＭＥＳＩプロトコルなどのキャッシュ・コヒーレンシ・プロトコルに従い、共有メモリ・ラインとキャッシュ・ラインとのコヒーレンシを保つ。ＭＥＳＩプロトコルでは、読み取られるキャッシュ・ラインの状態は第１プロセッサ１０ａの排他となる。同様に他のキャッシュ・コヒーレンシ・プロトコルも利用できることは認識される。このプロトコルに従い、第１プロセッサ１０ａは共有バス３１ａを介して共有メモリ３０ａをスヌープして（ブロック２０４）、共有メモリ３０ａからキャッシュされたメモリ・ラインの変更を識別する。
【００２４】
第１プロセッサ１０ａがブリッジ３６ａなどの共有リソースへのアクセスを禁止されるため、第２プロセッサ１０ｂは、そのエラー処理手続きの実行時、第１プロセッサ１０ａからの干渉なく、ブリッジ３６ａなどの共有リソースを安全にリセットできる（ブロック２０６）。第１プロセッサ１０ａが共有リソースへのアクセスを禁止されるときに、第２プロセッサ１０ｂが引き受けることのできるエラー処理手続きは、障害の発生したリソースの隔離、または障害の発生したリソースを復元する他の措置をとるなどの他の措置を含むことができることは認識される。
【００２５】
適切な時点で、第２プロセッサ１０ｂは、共有メモリ・ラインが第１プロセッサ・キャッシュ２８ａによってキャッシュされている共有メモリ３０ａの共有メモリ・ラインにデータを書き込むことができる（ブロック２０８）。以下に述べるように、第２プロセッサ１０ｂが書き込むこのデータを使用して、第１プロセッサが共有リソースへのアクセスを再開しても安全であるという信号を第１プロセッサ１０ａに送る。このため、例えば、第２プロセッサ１０ｂが共有メモリ３０ａの共有メモリ・ラインにデータを書き込むのに適切なある時点とは、第２プロセッサ１０ｂがブリッジ３６ａのリセット操作を完了して、共有リソースまたは共有リソースもしくは複数の共有リソースの少なくとも一部の復元が成功した時点であろう。こうして、第２プロセッサ１０ｂはそのエラー処理手続きを完了できる（ブロック２１０）。第２プロセッサ１０ｂによる共有メモリ３０ａのキャッシュされたメモリ・ラインへの書き込みは、特定のアプリケーション次第で、他方のプロセッサ１０ａに他の情報を知らせるために行ってもよく、他の時点で行ってもよいことは認識される。
【００２６】
図示する実施例では、共有バス３１ａを介して共有メモリ３０ａをスヌープする第１プロセッサ１０ａは、第２プロセッサ１０ｂによる共有メモリ３０ａのキャッシュされたメモリ・ラインへのこの書き込みを検知する。この例ではＭＥＳＩキャッシュ・コヒーレンシ・プロトコルであるキャッシュ・コヒーレンシ・プロトコルに従い、第１プロセッサ１０ａは、第２プロセッサ１０ｂによる共有メモリ３０ａの共有メモリ・ラインへのデータの書き込みに応答して、キャッシュ２８ａのキャッシュ・ラインの状態を変更する（ブロック２１２）。ＭＥＳＩキャッシュ・コヒーレンシ・プロトコルに従うと、第１プロセッサ・キャッシュ２８ａのキャッシュ・メモリ・ラインの状態は無効状態に変更される。加えて、第１プロセッサ１０ａはキャッシュ２８ａのメモリ・ラインを反復的に読み取るループ・プロセスから出て、共有メモリ３０ａのキャッシュされたメモリ・ラインに書き込まれた更新データを取り出せる（ブロック２１４）。障害の発生したリソースが例えば共有メモリ３０ａへのブリッジである場合、共有リソースは第１プロセッサ１０ａが復元された共有リソースに安全にアクセスできるように第２プロセッサ１０ｂが復元していることになろう。
【００２７】
別の操作において、第１プロセッサはそのエラー処理手続きを完了する（ブロック２１６）。第２プロセッサ１０ｂがすべてのエラー状態からシステムを完全に復元していたら、第１プロセッサはその通常の処理を再開できる。別の例では、第２プロセッサの復元操作が未完了のことがある。この例では、プロセッサ１０ａおよび１０ｂは役割を交替して、復元プロセスを再開できる。こうなると、プロセッサ１０ｂは図２の「第１プロセッサ」と呼べ、またプロセッサ１０ａは図２の「第２プロセッサ」と呼べるであろう。
【００２８】
第１プロセッサ１０ｂのエラー処理手続きに従い、第１プロセッサ１０ｂはキャッシュ２８ｂのラインなどのキャッシュ・ラインを反復的に読み取る（ブロック２０４）。この例では、反復的なキャッシュ・ラインの読み取りは第１プロセッサ１０ｂを占有し、第１プロセッサ１０ｂがブリッジ３６ａなどの共有リソースにアクセスするのを禁止する。第１プロセッサ１０ｂがブリッジ３６ａなどの共有リソースにアクセスするのを禁止されるため、第２プロセッサ１０ａは、そのエラー処理手続きの実行時、第１プロセッサ１０ｂからの干渉なく、ブリッジ３６ａなどの共有リソースを安全にリセットできる（ブロック２０６）。適切な時点で、第２プロセッサ１０ａは、共有メモリ・ラインが第１プロセッサ・キャッシュ２８ｂにキャッシュされている共有メモリ３０ａの共有メモリ・ラインにデータを書き込んで（ブロック２０８）、他方のプロセッサ１０ｂに共有リソースに安全にアクセスできることを知らせることができ、第２プロセッサ１０ａはそのエラー処理手続きを完了できる（ブロック２１０）。
【００２９】
共有バス３１ａを介して共有メモリ３０ａをスヌープする第１プロセッサ１０ｂは、第２プロセッサ１０ａによる共有メモリ３０ａのキャッシュされたメモリ・ラインへのこの書き込みを検知する。キャッシュ・コヒーレンシ・プロトコルに従い、第１プロセッサ１０ｂは、第２プロセッサ１０ａによる共有メモリ３０ａの共有メモリ・ラインへのデータの書き込みに応答して、キャッシュ２８ｂのキャッシュ・ラインの状態を無効状態に変更する（ブロック２１２）。加えて、第１プロセッサ１０ｂはキャッシュ２８ｂのメモリ・ラインを反復的に読み取るループ・プロセスを出て、共有メモリ３０ａのキャッシュされたメモリ・ラインに書き込まれた更新データを取り出せる（ブロック２１４）。障害の発生したリソースが例えば共有メモリ３０ａへのブリッジである場合、共有リソースは第１プロセッサ１０ｂが復元された共有リソースに安全にアクセスできるように第２プロセッサ１０ａが復元していることになろう。
【００３０】
別の操作において、第１プロセッサ１０ｂはそのエラー処理手続きを完了する（ブロック２１６）。第２プロセッサ１０ａがすべてのエラー状態からシステムを完全に復元していたら、第１プロセッサ１０ｂはその通常の処理を再開できる。別の例では、第２プロセッサ１０ａの復元操作がまだ未完了のことがある。この例では、プロセッサ１０ａおよび１０ｂは役割を交替して、復元プロセスまたは他のプロセスを再開できる。
【００３１】
また、各プロセッサがキャッシュ・ラインを反復的に読み取る（ブロック２０４）制限時間を設定してもよい。例えば、制限時間がキャッシュ・ラインの状態が排他状態から無効状態に変わる前に終了すると、一実施例では、第１プロセッサは他方の第２プロセッサが動作していないと想定できる。その場合、第１プロセッサは第２プロセッサの役割を引き継いで、共有リソースのリセット（ブロック２０６）など第２プロセッサの回復手続きを実行できる。
【００３２】
プロセッシング・コンプレックス８ｂのブリッジ３６ｂなどの共有リソースに障害が発生することもあることは認識される。プロセッサ１０ｃ、１０ｄ間の回復操作を調整するために、キャッシュ２８ｃ、２８ｄの一方を共有メモリ３０ｂおよびキャッシュ・コヒーレンシ・プロトコルとともに利用できる。
【００３３】
説明する実施例は、標準的なプログラミング技術およびエンジニアリング技術もしくは標準的なプログラミング技術またはエンジニアリング技術を使ってソフトウェア、ファームウェア、ハードウェア、またはそのあらゆる組み合わせを製造する方法、装置、または製造物として実施できる。本明細書で使用する「製造物」という用語は、ハードウェア・ロジック（例、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）等）、または磁気記憶媒体（例、ハードディスク・ドライブ、フレキシブルディスク、テープ等）、光ストレージ（ＣＤ−ＲＯＭ、光ディスク等）、揮発性および不揮発性のメモリ・デバイス（例、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、ファームウェア、プログラム可能ロジック等）などのコンピュータ読み取り可能媒体に実装できるコードまたはロジックをいう。コンピュータ読み取り可能媒体に実装されるコードはプロセッサからアクセスおよび実行する。好適な実施例を実施するコードは、伝送媒体を経由して、またはネットワークでファイル・サーバからもアクセス可能でもよい。この場合、コードが実施される製造物は、ネットワーク伝送路、無線伝送媒体、空間伝搬信号、電波、赤外線信号等の伝送媒体を有してもよい。このように、「製造物」は、コードを具体化する媒体を有することができる。加えて、「製造物」はコードを具体化、処理、および実行するハードウェア・コンポーネントとソフトウェア・コンポーネントの組み合わせを有してもよい。
【００３４】
一定の実施例は、人またはコンピュータ読み取り可能コードをコンピューティング・システムに統合する自動化プロセスによって演算命令を配備する方法に向けられ、コードはコンピューティング・システムと組み合わせて説明する実施例の操作を行える。
【００３５】
プロセッシング・コンプレックスが複数の論理区画をもつ実施例では、スーパーバイザーが多様な論理区画の実行を管理する。プロセッシング・コンプレックスが論理区画をもたない実施例では、スーパーバイザー・モジュールは、特定のアプリケーション次第で、中間デバイス・ドライバと、他方のプロセッシング・コンプレックスのオペレーティング・システムとは異なるタイプまたは同じタイプのオペレーティング・システムを有することができる。
【００３６】
説明する実施例では、制御装置６は２つのプロセッシング・コンプレックス８ａ、８ｂを含んだ。追加の実施例では、共有デバイスにアクセスするシステムが２つより多くてもよい。当該実施例では、割込みを受信するデバイス・ドライバ２０ａは複数のプロセッシング・コンプレックスと通信して、復元または他の操作を調整することができる。
【００３７】
図２の図示する操作はある順番で発生する一定のイベントを示している。代替実施例では、一定の操作は異なる順番で行ってもよく、修正または省略してもよい。また、前述のロジックにステップを追加してもよく、それでも説明する実施例に準拠する。さらに、本明細書に説明する操作は逐次的に起こしてもよく、または一定の操作を並行して処理してもよい。さらに、操作は単一プロセッシング・ユニットまたは分散プロセッシング・ユニットで行ってもよい。
【００３８】
様々な実施例の前述の説明は、例示および説明のために提示してきた。これはすべてを網羅するものでも、または開示したそのままの形態に制限するものでもない。上記教唆に鑑みて数多くの修正および変型が可能である。
【図面の簡単な説明】
【００３９】
本発明の好適な実施例を以下の図面を参照しながら単なる例として詳しく説明する。
【００４０】
【図１】実施例を実装するコンピューティング環境を図示する。
【図２】マルチプロセッサの操作を管理する操作を図示する。
【図１】
2008522264.tif 000003
【図２】
2008522264.tif 000004
【国際調査報告】
2008522264.tif 000005
2008522264.tif 000006