(57)【要約】      （修正有）【課題】  システムのパフォーマンスのフィードバック・データを含む各種のファクタを使用して要求の再試行の試みに対して提案される時間を最適化するための方法および装置が開示されている。【解決手段】  それに使用されるファクタには、特に現在のシステムのパフォーマンス、要求の型、保留されているアクションの状態、現在の未決の再試行の回数、あらかじめ定義済みの固定の間隔、擬似ランダム間隔、ランダム間隔、過去の再試行要求の履歴、ヒューリスティックに決定された間隔、およびハング検出に基づく間隔が含まれる。【選択図】図１
2004220597.tif 000002
【特許請求の範囲】
【請求項１】
対称マルチプロセッサ内における再試行間隔を動的にコントロールするための方法であって、
要求を行うマイクロプロセッサから、第２のマイクロプロセッサによる処理に関する第１の要求を生成するステップと、
前記第２のマイクロプロセッサから、サービスの拒否を生成するステップと、
前記要求を行うプロセッサから、前記第２のマイクロプロセッサによる処理に関する次の要求を、前記第１の要求から可変間隔を置いて生成するステップと、
前記間隔が、固定、擬似ランダム、ヒューリスティック、およびハング検出を包含する間隔の、あらかじめ選択されたセットの１つから決定されるステップと
を含む方法。
【請求項２】
マルチプロセッサ・システム内におけるバス・マスタ間通信再試行間隔を動的にコントロールするための方法であって、
要求を行うバス・マスタから、第２のバス・マスタによる処理に関する第１の要求を生成するステップと、
前記要求を行うバス・マスタにおいて、前記第２のバス・マスタが前記要求を処理できないという表示を受信するステップと、
成功した再試行要求の過去の履歴を基礎とする時間間隔において前記要求を反復するステップと
を含む方法。
【請求項３】
マルチプロセッサ・システム内におけるデバイス間通信再試行間隔をコントロールするための方法であって、
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成するステップと、
前記要求を行うデバイスにおいて、前記第２のデバイスは前記要求に基づくアクションが不可能であるという表示を受信するステップと、
要求の型の関数となる時間ベースの間隔において前記要求を反復するステップと
を含む方法。
【請求項４】
前記要求を反復する間隔が、さらに、成功した再試行要求の過去の履歴の関数である、請求項３記載の方法。
【請求項５】
前記要求を反復する間隔が、さらに、保留されているアクションの状態の関数である、請求項３記載の方法。
【請求項６】
前記要求を行うデバイスを、プロセッサ・ユニットおよびエージェントの１つとすることができる、請求項３記載の方法。
【請求項７】
マルチプロセッサ・システム内における通信の再試行間隔をコントロールするための方法であって、
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成するステップと、
所定の時間期間内に前記要求に対する肯定的なアクションの応答が受信されていない旨を検出するステップと、
否定的なアクションの応答が検出されているか否かの関数となる時間ベースの間隔において前記要求を反復するステップと
を含む方法。
【請求項８】
マルチプロセッサ・システム内におけるデバイス間通信再試行間隔をコントロールするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが、
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成するためのコンピュータ・コード、
前記要求を行うデバイスにおいて、前記第２のデバイスは前記要求に基づくアクションが不可能であるという表示を受信するためのコンピュータ・コード、
可変持続時間の間隔において前記要求を反復するための、前記持続時間が複数のファクタの関数となるコンピュータ・コードを含む、コンピュータ・プログラム。
【請求項９】
デバイス間通信再試行間隔をコントロールするための装置であって、
通信バス、
前記通信バスを介して互いにアクション要求を通信し、それぞれのプロセッサが提案再試行応答入力を有する複数のプロセッサ、
前記プロセッサのそれぞれの一部を構成し、受信済みのアクションに関する要求について、否定的および肯定的なアクション回答を生成する回答手段、
前記回答手段および前記プロセッサのそれぞれの前記提案再試行応答入力に接続される応答生成手段であり、否定的なアクション回答の受信時に、可変持続時間の、提案される要求再試行間隔を生成するべく機能する、前記持続時間が複数のファクタの関数となる応答生成手段と
を備える装置。
【請求項１０】
デバイス間通信再試行間隔をコントロールするための方法であって、
通信バスを介してほかのすべてのプロセッサに対してプロセッサ間要求を送信するステップと、
各プロセッサから、前記要求に関する回答を生成するステップと、
応答ジェネレータ内において、すべての回答に含まれるデータを統合するステップと、
前記要求されたアクションに対する１ないしは複数の否定的な回答が前記応答ジェネレータによって受信されたとき、提案される再試行間隔応答を作成するステップであって、前記提案される要求再試行間隔は可変持続時間であり、前記持続時間が複数のファクタの関数である、前記作成するステップと
を含む方法。
【請求項１１】
前記複数のファクタが、現在のシステムのパフォーマンス、要求の型、保留されているアクションの状態、および現在の未決の再試行の回数のうちの１ないし複数を含む、請求項１０記載の方法。
【請求項１２】
前記提案される再試行時間間隔が、成功した再試行前の再試行の回数を基礎とするファクタの所定セットに関する以前に提案された時間間隔からヒューリスティックに変更される、請求項１０記載の方法。
【請求項１３】
マルチプロセッサ・システム内におけるデバイス間通信再試行間隔をコントロールするための方法であって、
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成するステップと、
前記要求を行うデバイスにおいて、前記第２のデバイスは前記要求に基づくアクションが不可能であるという表示を受信するステップと、
可変持続時間の間隔において前記要求を繰り返すステップであって、前記持続時間が複数のファクタの関数である、前記繰り返すステップと
を含む方法。
【請求項１４】
前記複数のファクタが、現在のシステムのパフォーマンス、要求の型、保留されているアクションの状態、現在の未決の再試行の回数、あらかじめ定義済みの固定の間隔、擬似ランダム間隔、ランダム間隔、過去の再試行要求の履歴、ヒューリスティックに決定された間隔、およびハング検出に基づく間隔のうちの１ないしは複数を含む、請求項１３記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間通信に関し、より詳細に述べれば、コマンド要求もしくはそのほかの必要なアクションがコンフリクト条件に起因して拒否された後の通信要求の管理に関する。
【背景技術】
【０００２】
典型的なマルチプロセッサ・システムにおいては、システム・バスが使用されて、プロセッサによって処理されることになるコマンドの通信が行われる。要求が指向される所定のＰＵ（プロセッサ・ユニット）もしくはそのほかのバス・マスタの状態に応じて、与えられたコマンドに対する応答が、このコマンドはいくつかのコンフリクト条件が原因で現在は処理することができない、といった表示になることがある。要求を行っているＰＵは、その後そのコマンドの『再試行』を行わなければならない。直後の再試行の試みは、通常、ライブロック条件をもたらし、それによってバスのパフォーマンスが低下する。
【０００３】
この問題を緩和するための従来の知られているアプローチは、要求を行うユニットに、コマンドを再発行する前に『ランダム』量の時間遅延を行わせることである。このアプローチに伴う問題として、ある種の状況においては、ランダム時間が短くなりすぎること、および別の動作的に深刻な状況においては、ランダム時間が長くなりすぎることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
再試行間隔は、実行されることになるコマンドの型および／または再試行時に、アクション要求の完了展望に影響を与え得る他のファクタに、関係付けされると望ましい。また、再試行メカニズムが、異なるコマンドの型および／または所定の関連バス・マスタに関する過去の経歴を基礎として再試行間隔の動的調整が提供できるとさらに望ましい。
【課題を解決するための手段】
【０００５】
本発明は、所定のコマンドの型および／または所定の関連ＰＵとの通信に関する再試行間隔における過去の経歴に関係する動的フィードバックおよびコマンドの型のうちの少なくとも一方を基礎としてプロセッサ間のコマンド再試行の通信の調整を可能にするＰＵコントロール・メカニズムの使用を包含する。
【発明を実施するための最良の形態】
【０００６】
図１を参照すると、１０として指定されるブロックＰＵ１（プロセッサ・ユニット１）および１２として指定される別のブロックＰＵＮが示されており、それらの間の３つのドットは、さらに多くの別のＰＵが存在し得ることを示している。そのほかの、要求再試行プロセスに関係することのある知的エージェントもしくはデバイスには、メモリ・コントローラ１４、ブロック１６によって表されているＩ／Ｏ（入力／出力）デバイス、およびリモート・マスタ・プロキシ・ブロック１８等のブロックが含まれる。デバイス１０〜１８のそれぞれは、バス・マスタと呼ぶこともできる。いずれのバス・マスタも、ＲＯ（Ｒｅｑｕｅｓｔ＿Ｏｕｔ；要求＿出力）接続を介して出力情報をバス相互接続ブロック２０に提供し、またＲＩ（Ｒｅｑｕｅｓｔ＿Ｉｎ；要求＿入力）接続を介してバス２０から情報を受け取ることができる。さらに、バス・マスタのそれぞれは、応答生成ブロック２２に対して出力回答を提供し、ブロック２２から応答を受け取ることができる。ブロック２２は、通常、すべてのバス・マスタの回答をインテリジェントな態様で結合し、バス・マスタのそれぞれに対して結合された応答を提供する。
【０００７】
まず、図１との関連から図２を説明する。図２のフローチャートを参照すると、ブロック３０内に示されているように、バス・マスタの１つが要求を発する。従来技術においては、この要求が、通常、データをメモリにストアする、あるいはメモリからフェッチするといった、別のバス・マスタに何かを行わせるコマンドになる。バス相互接続ブロック２０は、続くブロック３２内に示されているように、要求をすべてのバス・マスタに分配または提供する。次にすべてのバス・マスタが、その要求に関するそれぞれの状態をチェックし、応答生成ブロック２２に回答を返す。
【０００８】
一例として、１つのバス・マスタが、現在ほかのデバイスが使用しているデータベース内のデータの変更を要求しているとする。いくつかの状況においては、ほかのバス・マスタによる使用が変更を妨げることがある。別の状況においては、それらのデータを使用しているほかのバス・マスタが、要求された変更に従ってデータを更新する必要があることを、それらのバス・マスタに単に通知することだけが必要になる。すべてのバス・マスタの回答は、ブロック３６内に示されているように、ブロック２２において結合される。この結合された応答は、ブロック３８内に示されているように、すべてのバス・マスタに提供される。
【０００９】
この結合された応答の一部として、再試行ブロック４０に示されているように、後にその要求の再試行が行われなければならないか否かの表示がある。再試行が示されていなければ、言い換えると要求コマンドが成功した場合には、ブロック４２内に示されているように、すべてのバス・ユニットが要求を完了し、それぞれの状態を更新する。これに対して、応答の中に再試行が示されているときには、ブロック４４内に示されているように、そのアクションを要求しているユニットを除くほかのすべてのバス・マスタは、その要求を無視する。要求を行っているマスタは、ブロック４６内に示されているように、続いてランダム生成された時間によりその要求を遅延させてキューに入れる。
【００１０】
ブロック４２および４６のいずれかのアクションを完了するとブロック３０に戻り、それにおいては、同一もしくは異なるバス・マスタが、別のユニットによるアクションに関する要求を行うことができる。ここで気付くことができるが、回答がまったく提供されない場合、たとえばバスが通信に飲み込まれている場合には、タイムアウト発生時に、要求を行っているマスタによって応答の欠如が検出され、そのバス・マスタ・ユニットによって、チェックストップまたはエラー処理メカニズムが起動される。
【００１１】
次に、図１との関連から図３を説明する。これらから気付かれようが、図２の最初の４ステップ（ブロック３０、３２、３４、および３６）と図３の６０、６２、６４、および６６として示されているブロックは、まったく同一である。しかしながら本発明においては、再試行ブロック６８、およびその後に続く、結合された応答が再試行の必要を応答生成ユニットに対して示している状態に関する目標遅延生成ブロック７０によって示されているように、応答生成ユニット２２のサイクルが変更されている。
【００１２】
以下に説明するように、再試行が要求されている場合には、ブロック２２が、後述する各種のファクタに基づいて、再試行要求が行われるべき適切なタイミングを決定することになる。その後、プロセスがブロック７２に続き、実質的に図２と同じ態様に従って、生成された応答がすべてのバス・マスタに供給される。ブロック６８において再試行が必要でないと決定された場合には、それに続くステップは、前述同様にその情報をブロック７２に示されているステップに提供するステップとなる。残りのブロック７４、７６、７８、８０は、アクションに関して、ブロック４０、４２、４４、および４６としてまったく同じにラベル付けされたブロックにおいて詳細を説明した従来技術の機能に一致する。
【００１３】
再試行が必要であると決定された場合には、応答生成ブロック２２が、本発明の一部として、要求を行っているバス・マスタ用に指定される、要求の送信を再度試みるまでの目標遅延時間を生成する。再試行に関する遅延時間の決定においては、ブロック２２が、システム設計者によって再試行間隔の最適化に重要であると決定されたファクタを調べる。要求の型は、充分にタイミングにおけるファクタとなり得る。ストア要求は、フェッチ要求より迅速に再試行されるべきであると決定することができる。データ削除要求は、フェッチまたはストア要求のいずれよりも重要でないか、あるいはより重要であると決定することができる。現在バスがどの程度完全に使用されているかということを別のファクタとすることもできる。したがって、バスの利用度がキャパシティの９０パーセントに満たないときは、それが９０パーセントを超えるときより、再試行間隔が短いと決定することができる。近い過去に生成された再試行の回数もまた、要求を行っているマスタに対して提案される再試行間隔の生成に使用されるファクタになり得る。したがって、最近、大量の再試行応答が送信されている場合には、所定のイベントの型に関して現在のマスタに提案される再試行間隔が、近い過去においてほかのマスタに提案された間隔より大きくなる。
【００１４】
ブロック２２が『ハング』またはそのほかのライブロック条件を検出した場合には、このファクタを基礎として再試行時間を増加すると望ましいことは充分に考えられる。ほかのマスタからの応答が、現在の要求が完了するまで、ほかのアクションを完了できないことを示すことも考えられる。したがって、提案される再試行時間が、使用されるほかのファクタに基づいて正常に提案されるものから減らされることもある。ここで、上記提案によるファクタは、提案される再試行遅延を確実にする上での使用が望ましいと考えられるほかのファクタと排他的ではないことに注意が必要である。
【００１５】
遅延の計算において、ブロック２２は、可能性のある例として、次のコンポーネントを使用することができる：（ａ）固定の遅延；（ｂ）所定の区間内における擬似ランダム遅延；（ｃ）バスの利用度、現在の再試行レート、およびハングの検出といったシステム・パフォーマンス・インジケータの状態；（ｄ）要求されたアクションの型；および（ｅ）保留アクションの状態。これらのコンポーネントが使用される場合であれば、システムは、（ａ）および（ｂ）を組み合わせて、各所定のコマンド要求の型に関して、指定された固定の遅延を与えることができる。この提案される再試行遅延は、バスの利用度が９０パーセントを超える場合には常に、ほかのファクタによって導入される遅延に加えて、別の固定の遅延を有することができる。
【００１６】
提案される再試行遅延を計算するもう１つのアプローチは、コマンドのストリーム内における再試行のパーセンテージが５パーセントを超えるときは常に所定の固定の遅延とともに（ｂ）の擬似ランダム遅延を使用することである。フェッチが一体のキャッシュに対してアクセスしそこない、メモリからフェッチを行わなければならないときの状況に関しては異なる計算が使用されることもある。この種の状況においては、その保留されているアクションの状態（つまり（ｅ））に起因して（ａ）および（ｂ）を組み合わせることが適切であると見られる。
【００１７】
上記から、提案される再試行遅延の計算が、システムのパフォーマンスのファクタによって影響を受けることがあるという点において動的であることは明らかとなろう。より複雑なヒューリスティックな計算では、以前の状況における所定セットの条件に関して生じた再試行の成功までにマスタが行わなければならなかった再試行の回数に関連したデータを、続く再試行に関する再試行間隔を設定するときに含めることができる。
【００１８】
ここで、ブロック７０が『提案される』再試行時間を生成していることに気付かれるであろう。提案されるという用語は、提案される時間において、要求を行っているマスタの要求するコマンドの再試行が別のファクタによって妨げられる可能性もあることから使用されている。しかしながら、通常、マスタは、提案される時間が経過した直後の都合のよいときに再試行を行うことになる。
【００１９】
本発明の使用の主要な例はコマンドの再試行に関するが、そのほかの、データ・パケットの転送等の状況に関しても好都合に使用することができる。
【００２０】
さらに、ここでは再試行が、ほかのバス・マスタに対して応答された要求に関連してのみ述べられているが、本発明は、回答タイムアウトが超過し、ブロック２２によって回答なしが検出される状況に関して再試行時間を調整することも含む。
【００２１】
したがって結論すると、本発明は、１ないしは複数のファクタ、パラメータ、および／またはイベントの関数として再試行間隔を変更するメカニズムを包含するということができる。これら複数のファクタには、少なくとも現在のシステムのパフォーマンス、要求の型、保留されているアクションの状態、現在の未決の再試行の回数、あらかじめ定義済みの固定の間隔、擬似ランダム間隔、ランダム間隔、過去の再試行要求の履歴、およびハング検出に基づく間隔を含めることができる。さらに、動的フィードバックの下における（ヒューリスティックな）再試行間隔の調整も可能にし、したがって繰り返しの再試行の回数を最小化し、しかも間隔を最短にして遅れ時間を短縮する再試行間隔の最適化を可能にする。
【００２２】
以上、特定の実施態様を参照して本発明を説明してきたが、この記述は、限定の意味において解釈されることが意図されたものではない。ここに論じた実施態様の各種の修正をはじめ、本発明の変形実施態様については、本発明の記述を参照した時点で当業者にとっては明らかなものとなろう。したがって、特許請求の範囲には、本発明の真の範囲ならびに精神の内に含まれるあらゆる修正もしくは実施態様を保護することが企図されている。
【００２３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００２４】
（１）対称マルチプロセッサ内における再試行間隔を動的にコントロールするための方法であって：
要求を行うマイクロプロセッサから、第２のマイクロプロセッサによる処理に関する第１の要求を生成すること；
前記第２のマイクロプロセッサから、サービスの拒否を生成すること；
前記要求を行うプロセッサから、前記第２のマイクロプロセッサによる処理に関する次の要求を、前記第１の要求から可変間隔を置いて生成すること；および、
前記間隔が、固定、擬似ランダム、ヒューリスティック、およびハング検出を包含する間隔の、あらかじめ選択されたセットの１つから決定されること；
を含む方法。
（２）マルチプロセッサ・システム内におけるバス・マスタ間通信再試行間隔を動的にコントロールするための方法であって：
要求を行うバス・マスタから、第２のバス・マスタによる処理に関する第１の要求を生成すること；
前記要求を行うバス・マスタにおいて、前記第２のバス・マスタが前記要求を処理できないという表示を受信すること；および、
成功した再試行要求の過去の履歴を基礎とする時間間隔において前記要求を反復すること；
を含む方法。
（３）マルチプロセッサ・システム内におけるデバイス間通信再試行間隔をコントロールするための方法であって：
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成すること；
前記要求を行うデバイスにおいて、前記第２のデバイスは前記要求に基づくアクションが不可能であるという表示を受信すること；および、
要求の型の関数となる時間ベースの間隔において前記要求を反復すること；
を含む方法。
（４）前記要求を反復する間隔が、さらに、成功した再試行要求の過去の履歴の関数である、上記（３）に記載の方法。
（５）前記要求を反復する間隔が、さらに、保留されているアクションの状態の関数である、上記（３）に記載の方法。
（６）前記要求を行うデバイスを、プロセッサ・ユニットおよびエージェントの１つとすることができる、上記（３）に記載の方法。
（７）マルチプロセッサ・システム内における通信の再試行間隔をコントロールするための方法であって：
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成すること；
所定の時間期間内に前記要求に対する肯定的なアクションの応答が受信されていない旨を検出すること；および、
否定的なアクションの応答が検出されているか否かの関数となる時間ベースの間隔において前記要求を反復すること；
を含む方法。
（８）マルチプロセッサ・システム内におけるデバイス間通信再試行間隔をコントロールするためのコンピュータ・プログラム・プロダクトであって、コンピュータ・プログラムが埋め込まれるメディアを有し、前記コンピュータ・プログラムが：
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成するためのコンピュータ・コード；
前記要求を行うデバイスにおいて、前記第２のデバイスは前記要求に基づくアクションが不可能であるという表示を受信するためのコンピュータ・コード；および、
可変持続時間の間隔において前記要求を反復するための、前記持続時間が複数のファクタの関数となるコンピュータ・コード；を含む、コンピュータ・プログラム・プロダクト。
（９）デバイス間通信再試行間隔をコントロールするための装置であって：
通信バス；
前記通信バスを介して互いにアクション要求を通信し、それぞれのプロセッサが提案再試行応答入力を有する複数のプロセッサ；
前記プロセッサのそれぞれの一部を構成し、受信済みのアクションに関する要求について、否定的および肯定的なアクション回答を生成する回答手段；および、
前記回答手段および前記プロセッサのそれぞれの前記提案再試行応答入力に接続される応答生成手段であり、否定的なアクション回答の受信時に、可変持続時間の、提案される要求再試行間隔を生成するべく機能する、前記持続時間が複数のファクタの関数となる応答生成手段；
を備える装置。
（１０）デバイス間通信再試行間隔をコントロールするための方法であって：
通信バスを介してほかのすべてのプロセッサに対してプロセッサ間要求を送信すること；
各プロセッサから、前記要求に関する回答を生成すること；
応答ジェネレータ内において、すべての回答に含まれるデータを統合すること；および、
前記要求されたアクションに対する１ないしは複数の否定的な回答が前記応答ジェネレータによって受信されたとき、提案される再試行間隔応答を作成することであって、前記提案される要求再試行間隔は可変持続時間であり、前記持続時間が複数のファクタの関数となること；
を含む方法。
（１１）前記複数のファクタが、現在のシステムのパフォーマンス、要求の型、保留されているアクションの状態、および現在の未決の再試行の回数のうちの１ないし、複数を含む、上記（１０）に記載の方法。
（１２）前記提案される再試行時間間隔が、成功した再試行前の再試行の回数を基礎とするファクタの所定セットに関する以前に提案された時間間隔からヒューリスティックに変更される、上記（１０）に記載の方法。
（１３）マルチプロセッサ・システム内におけるデバイス間通信再試行間隔をコントロールするための方法であって：
要求を行うデバイスから、第２のデバイスによるアクションに関する第１の要求を生成すること；
前記要求を行うデバイスにおいて、前記第２のデバイスは前記要求に基づくアクションが不可能であるという表示を受信すること；および、
可変持続時間の間隔において前記要求を繰り返すことであり、前記持続時間は複数のファクタの関数であること；
を含む方法。
（１４）前記複数のファクタが、現在のシステムのパフォーマンス、要求の型、保留されているアクションの状態、現在の未決の再試行の回数、あらかじめ定義済みの固定の間隔、擬似ランダム間隔、ランダム間隔、過去の再試行要求の履歴、ヒューリスティックに決定された間隔、およびハング検出に基づく間隔のうちの１ないしは複数を含む、上記（１３）に記載の方法。
【図面の簡単な説明】
【００２５】
【図１】本発明の説明に使用するための一般的なマイクロプロセッサ・システムの部分の相互接続を概略で示したブロック図である。
【図２】代表的な従来技術のマイクロプロセッサ・システムの再試行メカニズムを表したフローチャートである。
【図３】マイクロプロセッサ・システム内における本発明の再試行メカニズムの説明に使用されるハイレベルのフローチャートである。
【符号の説明】
【００２６】
１０  プロセッサ・ユニット・ブロック
１２  プロセッサ・ユニット・ブロック
１４  メモリ・コントローラ
１６  Ｉ／Ｏデバイス
１８  リモート・マスタ・プロキシ・ブロック
２０  バス相互接続ブロック
２２  応答生成ブロック
【図１】
2004220597.tif 000003
【図２】
2004220597.tif 000004
【図３】
2004220597.tif 000005