(57)【要約】本発明は、タスクの分配経路を決定する方法であって、タスクを処理することができる１つ以上の処理要素を、複数の処理要素から識別するステップと、識別された１つ以上の処理要素と通信する１つ以上の経路を識別するステップと、識別された処理要素のうちの１つ以上と識別された経路とのサイクル長を予測するステップと、識別された処理要素から好適な処理要素を選択するとともに、識別された経路から好適な経路を選択するステップと、を備えている方法を提供する。本発明はまた、デバイス及びシステムに関する。【選択図】図１
2017535212.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４，６１２，６１４，７１２ａ，７１２ｂ，７１２ｃ，８１２，８１４）と複数の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）とを備えているデバイスにおいて、タスクの分配経路を決定する方法であって、
前記複数の処理要素から、前記タスクを処理することができる１つ以上の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）を識別するステップと、
識別された前記１つ以上の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）と通信する１つ以上の経路を識別するステップと、
前記識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）のうちの１つ以上と、前記識別された経路とのサイクル長を予測するステップと、
前記識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）から好適な処理要素を選択するとともに、前記識別された経路から好適な経路を選択するステップと、
を備えている方法。
【請求項２】
識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）と、識別された経路とのサイクル長は、
命令と入力データとを、前記識別された経路にある前記識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）に転送する、予測された順方向転送時間と、
前記識別された経路にある前記識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）からの出力データを転送する、予測された戻り方向転送時間、及び／または、前記識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）で前記タスクを処理する、予測された処理時間と、
に基づいて予測される、請求項１記載の方法。
【請求項３】
前記予測されたサイクル長は、前記予測された順方向転送時間、前記予測された戻り方向転送時間、及び、前記予測された処理時間の合計である、請求項２記載の方法。
【請求項４】
前記サイクル長の予測は、
前記１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４，６１２，６１４，７１２ａ，７１２ｂ，７１２ｃ，８１２，８１４）の、現在の可用性及び／または稼働と、
識別された前記１つ以上の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）の、現在の可用性及び／または稼働と、
のうちの少なくとも１つに基づいている、先行する請求項のいずれか１項に記載の方法。
【請求項５】
さらに、
前記選択された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの処理を開始し、
前記タスクの前記予測されたサイクル長を更新して、前記タスクの予測された残りのサイクル長を取得し、
前記予測された残りのサイクル長が、異なる処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの処理における予測されたサイクル長よりも長いと判定された場合は、前記選択された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの処理を取り消し、
前記タスクを前記異なる処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）に割り当てる、先行する請求項のいずれか１項に記載の方法。
【請求項６】
さらに、
前記タスクの処理のしきい値時間を決定し、
前記選択された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの処理を開始し、
前記タスクの実際の処理時間が、前記しきい値時間よりも長いかどうかを確認し、
前記実際の処理時間が前記しきい値時間よりも長い場合は、前記タスクの処理を取り消し、
前記タスクを異なる処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）に割り当てる、先行する請求項のいずれか１項に記載の方法。
【請求項７】
１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４，６１２，６１４，７１２ａ，７１２ｂ，７１２ｃ，８１２，８１４）と、
１つ以上の制御要素（１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂ）と、
複数の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）と、を備えており、
前記制御要素（１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂ）のうちの少なくとも１つは、
前記複数の処理要素から、前記タスクを処理することができる１つ以上の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）を識別することと、
識別された前記１つ以上の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）と通信する１つ以上の経路を識別することと、
前記識別された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）のうちの１つ以上と前記識別された経路とのサイクル長を予測し、前記識別された処理要素から好適な処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）を選択するとともに、前記識別された経路から好適な経路を選択することと、
に基づいて、タスクの分配経路を決定するように適合されている、デバイス。
【請求項８】
前記制御要素（１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂ）のうちの少なくとも１つは、
命令と入力データとを前記処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）に転送する、予測された順方向転送時間、
前記処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）からの出力データを転送する、予測された戻り方向転送時間、及び／または、
処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）で前記タスクを処理する、予測された処理時間、
に基づいて、前記サイクル長を予測するように適合されている、請求項７記載のデバイス。
【請求項９】
前記制御要素（１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂ）のうちの少なくとも１つは、
前記選択された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの実行を開始するステップと、
前記タスクの前記予測されたサイクル長を更新して、前記タスクの予測された残りのサイクル長を取得するステップと、
前記予測された残りのサイクル長が、異なる処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの処理における予測されたサイクル長よりも長いと判定された場合は、前記選択された処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）での前記タスクの処理を取り消すステップと、
前記タスクを前記異なる処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）に再び割り当てるステップと、
を実行するように適合されている、請求項７または８に記載のデバイス。
【請求項１０】
前記デバイスはさらに、複数の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）の能力、及び／または、現在の可用性、及び／または、稼働についての情報を備えた１つ以上のビジーテーブルを備えており、前記制御要素（１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂ）のうちの少なくとも１つは、前記１つ以上のビジーテーブル内の情報を定期的に更新するように適合されている、請求項７から９のいずれか１項に記載のデバイス。
【請求項１１】
前記１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４）は、１つ以上のリングを備えている、請求項７から１０のいずれか１項に記載のデバイス。
【請求項１２】
前記１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４，６１２，６１４，７１２ａ，７１２ｂ，７１２ｃ，８１２，８１４）は、命令を転送する第１バスセットと、データを転送する第２バスセットとを備えている、請求項７から１１のいずれか１項に記載のデバイス。
【請求項１３】
前記１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４）は、一方向性であり、反対方向に向けられている、２つのリング（１１２，１１４，２１２，２１４，３１２，３１４）を備えている、請求項７から１２のいずれか１項に記載のデバイス。
【請求項１４】
前記１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４）は、エレメント  インターコネクト  バス（Ｅｌｅｍｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｂｕｓ）で構成されている、請求項７から１３のいずれか１項に記載のデバイス。
【請求項１５】
前記複数の要素（２２０，２２２）のうちの少なくとも１つは、前記１つ以上のバス（２１２，２１４）に接続されており、追加として、少なくとも１つの他の要素（２１２，２１４）への直接接続（２２１）を備えている、請求項７から１４のいずれか１項に記載のデバイス。
【請求項１６】
さらに、以前に処理されたタスクに基づいて、将来のタスクを予測するように構成されている予測モジュールを備えている、請求項７から１５のいずれか１項に記載のデバイス。
【請求項１７】
前記デバイスは、１つ以上の予測された将来のタスクの実行開始後に、１つ以上の新たなタスクが届いた場合には、現在のタスクの実行のため、１つ以上の予測された将来のタスクを取り消すように適合されている、請求項１６記載のデバイス。
【請求項１８】
前記１つ以上のバス（１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４，６１２，６１４，７１２ａ，７１２ｂ，７１２ｃ，８１２，８１４）と、前記１つ以上の制御要素（１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂ）と、複数の処理要素（１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２）のうちの少なくともいくつかとは、同一のチップのハウジング内に位置している、請求項７から１７のいずれか１項に記載のデバイス。
【請求項１９】
請求項７から１８のうちの少なくとも１項に記載のデバイスを備えている、サーバーシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［技術分野］
本発明は、１つ以上のバスと複数の処理要素とを備えているデバイスにおいて、タスクの分配経路を決定する方法に関する。さらに、本発明は、分配経路を決定するように構成されているデバイス及びシステムに関する。
［背景技術］
近頃、急速に発展している通信やコンピュータ技術によって、大きなデータ量が利用可能になっている。異なる種類の処理タスクを効率的に実行するように適合されている、高度に専門化された処理要素が開発されてきた一方で、制御要素から適切な処理要素へ非効率的にタスクが転送されているため、多くのリソースが浪費されている。
【０００２】
既知のハードウェア／ソフトウェアソリューションのうちのいくつかは、いろいろな方向への改善を与えてくれるものもある。しかしながら、それでもなお、上述の基準のいずれも、または、少なくともほとんどを、改善してはいない。したがって、多数の処理要素でのタスクの処理を最適化するために改善されたハードウェアまたはソフトウェアソリューションが、依然として必要である。
［発明の概要］
したがって、本発明の目的は、従来技術の上述の問題のうちのいくつかを克服する方法、デバイス、及び、サーバーシステムを提供することである。
【０００３】
具体的には、本発明の利点は、添付の独立請求項によって実現される。本発明のさらなる側面、実施形態、及び、特徴は、添付の従属請求項及び明細書において規定されており、当該利点を達成することにも寄与している。
【０００４】
本発明の一実施形態によれば、タスクの分配経路を決定する方法は、
タスクを処理することができる１つ以上の処理要素を、複数の処理要素から識別するステップと、
識別された１つ以上の処理要素と通信する１つ以上の経路を識別するステップと、
識別された処理要素のうちの１つ以上と、識別された経路とのサイクル長を予測するステップと、
識別された処理要素から好適な処理要素を選択するとともに、識別された経路から好適な経路を選択するステップと、
を備えている。
【０００５】
本発明は、サイクル長予測に基づいて、タスクの最速の処理をもたらす特定の経路と処理要素とが選択される、という考えに基づいている。これにより、本発明の方法は、処理要素との通信に不必要に長い経路を使用することによって、または、理想的には所与のタスクの処理には適してはいない処理要素を使用することによって生じてしまう、リソースの浪費を回避する。
【０００６】
本発明は、特に、少なくとも１つの処理要素に対して、この処理要素と通信する少なくとも２つの経路を使用可能であるバスシステムを用いて実行可能である。特に、本発明は、少なくとも２つの経路の転送時間が異なる場合に有利である。
【０００７】
バスのいくつかの要素は、制御要素と処理要素との両方として機能することができる。例えば、第１制御要素は、タスクを第２制御要素に送信可能であり、よって、第２制御要素は処理要素として機能する。
【０００８】
本発明の一実施形態によれば、１つ以上のバスへのアクセスは、時分割多元接続（ｔｉｍｅ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ：ＴＤＭＡ）方式を用いて管理されている。簡易なＴＤＭＡ方式では、バスのアクティブな要素は、一定の時間増分で変化する。このようにして、どの要素がいつバスへのアクセスが可能になるのかが、予め判定される。本発明の状況において、これには、１つ以上のバスの将来の可用性に関する正確な予測を行うことができるという利点がある。
【０００９】
本発明の別の実施形態によれば、１つ以上のバスへのアクセスは、トークンパッシング（ｔｏｋｅｎ  ｐａｓｓｉｎｇ）方式を用いて管理されている。特に、バスの最初の要素がバスへのアクセスを終了したら、最初の要素から次の要素にアクセストークンが渡され得る。トークンパッシング方式は、使用されていないタイムスロットが回避されるので、簡易なＴＤＭＡ方式よりも効率的であり得る。一方で、将来のバス可用性の予測は、より複雑になる可能性がある。このため、制御要素は、バスで実行される現在及び将来のタスクのテーブルを保持することができる。これにより、将来のバス可用性の正確な予測と、１つ以上のバスを最も効率的に使用するような処理要素及び転送経路の選択とが可能になる。
【００１０】
本発明の別の実施形態によれば、１つ以上のバスが、トークンリングとして構成されている、つまり、要素に隣接するものは、この要素に物理的に隣接している。
本発明はまた、１つ以上のバスへのアクセスを制御する他のプロトコルとともに使用可能である。これらは、静的及び動的アクセス制御方式、例えば、スケジューリング方法及びランダムアクセス方法を含み得る。
【００１１】
本発明は、異なる種類のトポロジ、特に、線形バス、リングバス、分岐トポロジ、星型ネットワーク、ツリー型トポロジとともに使用可能である。いくつかの実施形態において、本発明の方法は、完全に接続された網状型と併せて使用することさえもできる。
【００１２】
タスクは、１つ以上の命令とデータとを備え得る。
タスクを処理することができる１つ以上の処理要素の識別は、例えば、各処理要素がどの処理能力を有するか、という情報を提供する検索テーブルを使用することによって行われ得る。例えば、グラフィック処理ユニット（ｇｒａｐｈｉｃａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＧＰＵ）を備えた所与の処理要素の場合、このテーブルは、この処理要素が、あるグラフィック処理命令に関係するあるタスクを処理可能であるという情報を備えることもできる。
【００１３】
識別された１つ以上の処理要素と通信する１つ以上の経路の識別は、所与の処理要素が、どのバスを介してこのタスクの処理を要求している制御要素に接続されるのかを、テーブルで検索することによって実行され得る。この所与の処理要素との通信に使用可能なバスが１つしかないとしても、制御要素がこの処理要素と通信可能な方向として、２方向が使用可能なこともある。この場合、例えば、リングバスを時計回り方向または反時計回り方向で処理要素との通信を行う２つの使用可能な経路が存在し得る。さらに、バスは分岐を備えていてもよく、これによっても、所与の処理要素との通信に使用可能な経路は複数になる。
【００１４】
識別された処理要素のうちの１つ以上と識別された経路とのサイクル長の予測は、２つの検索テーブル、つまり、制御要素と処理要素との間の異なる経路の経路長を保存する第１検索テーブルと、異なるタスクと異なる処理要素との予想処理時間についての情報を保存する第２検索テーブルとを使用していてもよい。例えば、第２検索テーブルは、あるグラフィック処理命令は、第１処理要素で処理するには１０クロックサイクルを要するが、第２処理要素で処理するには８クロックサイクルしか要しないという情報を備えることも可能である。
【００１５】
本発明の他の実施形態において、種々の処理要素での異なる種類のタスクの予想処理時間についての情報を備えている検索テーブルは、１つしか存在しない。例えば、このようなテーブルは、ある命令をある処理要素で行う予想処理時間を、この命令に対する入力データ量によって処理時間がどのように変化するのかについての更なる情報とともに備えることができる。
【００１６】
言い換えると、サイクル長は、以下の情報の１つ以上に基づいて予測可能であり、その情報とは、バスがどのように構成されているかについての情報；、現時点で、バス及びまたは処理要素が、どの状態または位置にあるか；、どれくらいのデータ量を有するどのタスクが、処理されることを必要としているかという情報；、所与のタスクについて、使用可能な処理要素への理想的な分配、換言すれば、個々の処理要素及び処理ステップに跨ったＳＩＭＤ、がなされるよう、該タスクが、１つのベクトルに保存可能である量よりも多いデータセットを備えているのかどうかについての情報、である。
【００１７】
いくつかの場合において、予測は正確な計算に基づいていてもよい。他の場合において、予測は発見に基づいていてもよく、本当の経路時間または処理時間の概算のみであってもよい。
【００１８】
本発明の一実施形態によれば、識別された処理要素と識別された経路とのサイクル長は、
命令と入力データとを識別された経路にある識別された処理要素に転送する、予測された順方向転送時間、
識別された経路にある処理要素からの出力データを転送する、予測された戻り方向転送時間、及び／または、
識別された処理要素でタスクを処理する、予測された処理時間、
に基づいて予測される。
【００１９】
予測された順方向転送時間、及び、予測された戻り方向転送時間は、入力データ全体が処理要素に到着する時間を含んでいてもよい。
本発明の一実施形態によれば、予測されたサイクル長は、予測された順方向転送時間、予測された戻り方向転送時間、及び、予測された処理時間の合計である。
【００２０】
本実施形態には、予測されたサイクル長は、算出が特に高速で効率的であるという利点がある。いくつかの実施形態において、予測された順方向転送時間、予測された戻り方向転送時間、及び、予測された処理時間の合計は、加重和であってもよい。このことは、これらの予測された時間のうちのいくつかしか正確に計算できない場合に、特に有用になり得る。この場合、正確に計算された時間に、より高い重みづけが与えられる。
【００２１】
本発明の一実施形態によれば、サイクル長の予測は、
１つ以上のバスの、現在の可用性及び／または稼働と、
識別された１つ以上の処理要素の、現在の可用性及び／または稼働と、
のうちの少なくとも１つに基づいている。
【００２２】
バス及び処理要素の現在の可用性及び／または稼働を考慮すると、経路時間と処理時間とを、さらにより精密に予測することが可能になる。
本発明の一実施形態によれば、本方法はさらに、
選択された処理要素でのタスクの処理を開始し、
タスクの予測されたサイクル長を更新して、タスクの予測された残りのサイクル長を取得し、
予測された残りのサイクル長が、異なる処理要素でのタスクの処理における予測されたサイクル長よりも長いと判定された場合は、選択された処理要素でのタスクの処理を取り消し、
タスクをその異なる処理要素に割り当てる。
【００２３】
タスクの予測されたサイクル長の更新により、タスクの予測された残りのサイクル長を取得することには、タスクの処理の開始後にしか入手可能にならない更なる情報を考慮することができるという利点がある。例えば、あるタスクの処理を既に始めた処理要素について、予想通りに処理速度が低下したという情報が入手可能になった場合、この処理要素でのタスクの処理を取り消して、そのタスクを異なる処理要素に委ねることが決定されてもよい。
【００２４】
本発明のこの実施形態は、所与の処理要素でのタスクの処理が予測よりもはるかに長い時間を要し、このことが、この処理要素での処理が間違って予測されていたことを示す可能性がある場合に、その処理が取り消され得るという更なる利点がある。
【００２５】
本発明の他の実施形態において、制御要素が、選択された処理要素が、優先順位がより高いタスクを処理するために必要であると判断した場合に、該処理要素でのタスクの処理が取り消され得る。このことが特に関連する可能性があるのは、将来発生しそうなタスクが予測された場合である。
【００２６】
本発明のさらに好適な実施形態において、所与の処理要素でのタスクの処理が予測よりも長い時間を要したという情報は、テーブルに保存され、同様のタスクに対する処理要素の予測時に考慮される。特に、あるタスクの処理が所与の処理要素において失敗した場合、この情報はテーブルに保存され得る。極端な場合では、ある種のタスクの処理が所与の処理要素で繰り返し失敗した場合には、この処理要素が、たとえ該処理要素が使用可能であると示していても、同様のタスクがこの処理要素で処理されるべきではないと判定され得る。
【００２７】
本発明の一実施形態によれば、本方法はさらに、
タスクの処理のしきい値時間を決定し、
選択された処理要素でのタスクの処理を開始し、
タスクの実際の処理時間がしきい値時間よりも長いかどうかを確認し、
実際の処理時間がしきい値時間よりも長い場合は、タスクの処理を取り消し、
そのタスクを異なる処理要素に割り当てる。
【００２８】
本実施形態は、あるタスクの実行が予想よりも大幅に長い時間を要しており、これが処理の失敗が原因である可能性があるということにより、そのタスクの実行が取り消されるべき場合に、簡単な決定手法を提供する。
【００２９】
本発明の別の実施形態によれば、
１つ以上のバスと、
１つ以上の制御要素と、
複数の処理要素と、を備えており、
制御要素のうちの少なくとも１つは、
複数の処理要素から、タスクを処理することができる１つ以上の処理要素を識別することと、
識別された１つ以上の処理要素と通信する１つ以上の経路を識別することと、
識別された処理要素のうちの１つ以上と識別された経路とのサイクル長を予測することと、
識別された処理要素から好適な処理要素を選択するとともに、識別された経路から好適な経路を選択することと、
に基づいて、タスクの分配経路を決定するように適合されている、デバイスが提供される。
【００３０】
本発明の一実施形態によれば、制御要素のうちの少なくとも１つは、
命令と入力データとを処理要素に転送する、予測された順方向転送時間、
処理要素からの出力データを転送する、予測された戻り方向転送時間、及び／または、
処理要素でタスクを処理する、予測された処理時間、
に基づいて、サイクル長を予測するように適合されている。
【００３１】
本発明の一実施形態によれば、制御要素のうちの少なくとも１つは、
選択された処理要素でのタスクの実行を開始するステップと、
タスクの予測されたサイクル長を更新して、タスクの予測された残りのサイクル長を取得するステップと、
予測された残りのサイクル長が、異なる処理要素でのタスクの処理における予測されたサイクル長よりも長いと判定された場合は、選択された処理要素でのタスクの処理を取り消すステップと、
そのタスクをその異なる処理要素に再び割り当てるステップと、
を実行するように適合されている。
【００３２】
本発明の一実施形態によれば、本デバイスは、さらに、複数の処理要素の現在の可用性及び／または稼働についての情報を備えたビジーテーブルを備えており、制御要素は、ビジーテーブル内の情報を定期的に更新するように適合されている。
【００３３】
本発明の一実施形態によれば、１つ以上のバスは、１つ以上のリングを備えている。
本発明の更なる実施形態によれば、１つ以上のバスは、命令を転送する第１バスセットと、データを転送する第２バスセットとを備えている。これには、第１バスセットが、命令転送の待ち時間が短くなるように最適化され得ると共に、第２バスセットが、大量になるかもしれないデータを高帯域幅で転送できるように最適化され得るという利点がある。特に、第１及び第２バスセットは、互いに異なる周波数で動作可能であり、例えば、第１バスセットはより高い周波数で動作可能である一方で、第２バスセットはより低い周波数で動作するが、１サイクルにつき、より高い転送能力を提供する。
【００３４】
本発明の更なる実施形態によれば、１つ以上のバスは、一方向性であり、反対方向に向けられている２つのリングを備えている。
このように、本発明は特に効率的な手法で実行可能であり、その理由は、向きが異なる２つのリングバスがより適切に選択されれば、データ転送時間が大きく短縮され得るためである。
【００３５】
本発明の一実施形態によれば、１つ以上のバスは、エレメント  インターコネクト  バス（Ｅｌｅｍｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｂｕｓ）を備える。
本発明の更なる実施形態によれば、複数の処理要素のうちの少なくとも１つは、１つ以上のバスに接続されており、追加として、一次処理要素への直接接続を備えている。
【００３６】
本発明の一実施形態によれば、本デバイスはさらに、以前に処理されたタスクに基づいて、将来のタスクを予測するように構成されている予測モジュールを更に備えている。
将来のタスクの予測には、将来のタスクに必要なデータを、タスクが実際に実行される前には既に、予めロードされ得るという利点がある。例えば、以前のタスクが、ｄａｔａ１．ｊｐｇ、ｄａｔａ２．ｊｐｇ、及び、ｄａｔａ３．ｊｐｇをロードすることを含むことが検出された場合、予測モジュールは、将来のタスクは存在する可能性のあるｄａｔａ４．ｊｐｇのロードをおそらく含み、よって、対応するタスクが開始される前には既に、ｄａｔａ４．ｊｐｇを予めロードするということが予測できる。好適な実施形態では、このようにしてデータを予めロードすることは、システムが低負荷の状態である場合、例えば、制御要素の現在の負荷が、所定のしきい値よりも低い場合にのみ行われる。
【００３７】
本発明の更なる実施形態によれば、デバイスは、１つ以上の予測された将来のタスクの実行開始後に、１つ以上の新たなタスクが届いた場合には、現在のタスクの実行のため、１つ以上の予測された将来のタスクを取り消すように適合されている。例えば、予測が正確ではなく、予測された将来のタスクの代わりに、新たなタスクが実行されるべきであることが判明した可能性がある。
【００３８】
本発明の更なる実施形態によれば、上述の実施形態のうちの１つに準じたデバイスを備えているサーバーシステムが提供される。
このようにして、サーバーシステムもまた、本出願に記載されている有益な効果の全てを提供するように好ましくは構成されている。さらに、既存のデータセンターの基礎施設／構成部／モジュール／要素の導入及び／または使用を、同時に行うことが可能になる。
【００３９】
本発明の一実施形態によれば、上記で概略が説明され、詳細は以下で説明されるような方法を実行するように適合されているＡＳＩＣまたはＦＰＧＡが提供される。
本発明の更なる側面によれば、１つ以上のバスと、１つ以上の制御要素と、複数の処理要素のうちの少なくともいくつかとは、同一のチップのハウジング内に位置している。これには、同じハウジング内に位置している構成部の通信を、特に高い帯域幅にすることができるという利点がある。さらに、この構成によって、量産時にコスト削減がもたらされる。
【００４０】
本発明の更なる実施形態によれば、演算処理デバイスによる実行時に、上記で概略が説明され、詳細は以下で説明されるような方法を、演算処理デバイスに行わせるプログラムコードを備えているコンピュータ可読媒体が提供される。
【００４１】
さらなる効果及び好適な実施形態は従属請求項に含まれており、また、添付図面を参照した以下の好適な実施形態の説明から、より十分に理解されるであろう。
【図面の簡単な説明】
【００４２】
【図１】図１は、特にデバイスの一部を構成している、リング構造を有するバスシステムの略図を示したものである。
【図２】図２は、リング構造を有する更なるバスシステムの略図を示したものである。
【図３】図３は、リング構造を有するバスシステムの略図を示したものであり、ここでは、リングの各々が、各要素と接続している訳ではない。
【図４】図４は、現在及び将来のアクティブな要素へのポインタが表示されている、更なるバスシステムの略図を示したものである。
【図５】図５は、更なるバスシステムの略図を示したものである。
【図６】図６は、双方向に動作するＴＤＭＡ構造を有しているバスシステムの略図を示したものである。
【図７】図７は、分岐があり、双方向に動作するＴＤＭＡ構造を有しているバスシステムの略図を示したものである。
【図７ａ】図７ａは、グローバルトークン（ｇｌｏｂａｌ  ｔｏｋｅｎ）が一次分岐にある状態の図７のバスシステムの略図を示している。
【図７ｂ】図７ｂは、グローバルトークンが二次分岐にあり、任意でローカルトークン（ｌｏｃａｌ  ｔｏｋｅｎ）が異なる二次分岐にある状態の図７のバスシステムの略図を示している。
【図８】図８は、双方向に動作するＴＤＭＡ構造を有するバスシステムの略図を示したものであり、ここでは、全てではなくいくつかの要素が同じバスを共有している。
【発明を実施するための形態】
【００４３】
［発明の詳細な説明］
図１は、リングトポロジを有するバスシステム１１０の略図を示したものである。特に、バスシステム１１０は、デバイスＤの一部を構成している。バスシステム１１０は、命令及びデータを反時計回り方向に転送するように適合されている第１リングバス１１２と、命令及びデータを時計回り方向に転送するように適合されている第２リングバス１１４とを備えている。つまり、第１リングバス１１２及び第２リングバス１１４は、命令及びデータを反対の方向に転送するように構成されている。バス１１２，１１４には、プロセッシングコア１２０が取り付けられており、制御要素として機能している。さらに、様々な機能を持つ複数の要素１２２〜１３４が、バス１１２，１１４に接続されて存在する。要素１２２〜１３４は、ランダムアクセスメモリ（ＲＡＭ）１２２、フラッシュメモリ１２４、大容量記憶装置コントローラ１２６、ネットワークインターフェースコントローラ１２８、Ｉ２Ｃバス１３０、ＰＣＩ  Ｅｘｐｒｅｓｓ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ：ＰＣＩｅ）バス１３２、及び、更なる種々のデバイス１３４を備えている。
【００４４】
リングバス１１２，１１４は、接続されている要素１２０〜１３４の間に直接接続するよう構成されており、時間をずらして動作する。図１のシステムの場合、要素１２０〜１３４は、両方のバス１１２，１１４に接続されている。しかし、バス１１２，１１４の間には、直接接続は存在していない。同様に、図２及び図５に示されているシステムも、バスの間には、直接接続を備えていない。本発明の他の実施形態では、バス同士が直接接続を備えることもできる。
【００４５】
次に、接続された要素１２０〜１３４は、書き込みが可能であり、つまり、アクティブな状態が、ある要素から次の要素に渡され、読み出し又は書き込み動作は、所与の時点でアクティブな要素のみにより実行され得る。いくつかの実施形態において、２つ以上のタスクが１つのクロックサイクルで転送され得る。また、２つ以上のデータセットが、１つのタスクに添付され得る（ＳＩＭＤ）。バスリング数、接続されている要素１２０〜１３４の数、及び、ポインタの開始位置並びに方向に応じて、１時点において、２つ以上のリングが偶然に同じ要素をアドレス指定することが起こり得る。この場合、追加の命令及びデータを吸収するＦＩＦＯバッファが設けられ得る。図１では、ＦＩＦＯバッファ１３５は、他の種々の要素１３４にのみ図示されているが、同様にして、ＦＩＦＯバッファを全ての処理要素１２０〜１３４に対して設けられ得る。
【００４６】
図２は、プロセッシングコア２２０とＲＡＭ２２２とが接続されているリングバス２１２，２１４を備えている非排他的バスシステム２１０の略図を示したものである。さらに、プロセッシングコア２２０とＲＡＭ２２２とは、直接接続２２１を介して接続されている。さらなる要素がリングバス２１２，２１４に接続され得るが、図２には示されていない。図１のバスシステム１１０と同様に、図２のバスシステムは、命令及びデータを反時計回り方向に転送するように適合されている第１リングバス２１２と、命令及びデータを時計回り方向に転送するように適合されている第２リングバス２１４とを備えている。
【００４７】
本発明の他の実施形態において、図１及び図２に示されているリングバス１１２，１１４；２１２，２１４は、最初の要素がバスにアクセスして終了された時に、アクティブなタイムスロットを最初の要素から次の要素に渡す、アクセスプロトコルでも実行され得ることに注目されたい。これは、例えば、ある要素１２０〜１３４，２２０，２２２が、バスへのアクセスを終了したら、トークンを次の要素１２０〜１３４，２２０，２２２に渡す、トークンリングアクセス方式として実行され得る。
【００４８】
図３は、２つのリング３１２，３１４を備えているバスシステム３１０の略図を示しており、ここでは、第１リング３１２も第２リング３１４も、処理要素３２０〜３３４の全てには接続してはいない。図１のバスシステム１１０と同様に、図３のバスシステムは、命令及びデータを反時計回り方向に転送するように適合されている第１リングバス３１２と、命令及びデータを時計回り方向に転送するように適合されている第２リングバス３１４とを備えている。図３の実施形態では、プロセッシングコア３２０のみが、第１リング３１２と第２リング３１４との両方に接続されている。本発明の他の実施形態において、第１リング３１２と第２リング３１４との両方に接続されている１つ以上の要素は、チップの外側にある要素に接続しているＲＡＭまたはコントローラでもあり得る。チップの外側に位置し得る他のデバイス３３４は、ＦＩＦＯバッファ３３５を介して２つのリング３１２，３１４に接続され得る。
【００４９】
図４は、リングバス４１２を有しているバスシステム４１０の略図を示したものであり、ここでは、現在アクティブな要素へのポインタをＰ０で表し、次のアクティブな要素をＰ１〜Ｐ７で表している。本実施形態において、制御要素として機能しているプロセッシングコア４２０、ＲＡＭ４２２、フラッシュメモリ４２４、記憶装置４２６、ＮＩＣ４２８、Ｉ２Ｃバス４３０、ＰＣＩｅ４３２、及び、他の要素４３４は、リングバス４１２に接続されており、他の要素４３４は、ＦＩＦＯバッファ４３５を介してリングバス４１２に接続されている。リングバス４１２は、データを時計回り方向で転送するように構成されており、ポインタも、リングを時計回り方向に通過する。示されている例では、要素４２０〜４３４は、１クロックサイクルの間隔で隔てられている。他の実施形態では、ポインタ位置は、長さが均一であってもなくてもよい様々な時間増分で、リングを通過すると規定され得る。ポインタの転送は、例えば、異なる要素に割り当てられている静的優先度に基づいて決定され得る。
【００５０】
図５は、本発明の一実施形態に従った更なるバスシステム５１０の略図を示したものである。
本発明の実施形態に準じた動作モードが、以下の例を用いて説明される。一次処理要素５２０ａが、制御要素として機能していて、二次処理要素５３６〜５５０のうちの１つに対して処理可能なタスクを送信すると仮定すると、検索テーブルのうちの１つに保存されている、以前に成功した結果に基づく従来技術の処理方法によれば、タスクは、第１リング５１２を用いて二次処理要素５４０に送信されるが、これには、１４クロックサイクルが必要である。４クロックサイクルを必要とする二次処理要素５４０内での処理の後、出力データは、第１リング５１２の一次処理要素５２０ａに戻されるが、これには、別に３クロックサイクルを要する。アクティブなスロットが一次処理要素５２０ａに戻される前には、さらに１３クロックサイクルを要する。これは、総サイクルタイムとして、１４＋４＋１３＋３＝３４クロックサイクルをもたらす。本発明によれば、設定により、リング５１４は、リング５１２に対して正確に整合しているオフセットを有し得るので、タスクが第２リング５１４を介して二次処理要素５４０に送信され、バス待機時間がなく第１リング５１２を介して一次処理要素５２０ａに戻される場合には、理想的には、予測されるサイクルタイムは、わずか３＋４＋０＋３＝１０クロックサイクルであると判定されるであろう。この例では、本発明に準じた方法が、従来技術の手法でのサイクルタイムの３分の１未満となるサイクルタイムの減少をもたらす。
【００５１】
ｎ個の接続要素は、ｎ個の異なるポインタ位置に相当する。
図６は、本発明のある側面に従った、更なるバスシステム６１０の略図を示したものである。バスシステム６１０は、線形トポロジを有し、時分割多元接続方式である２つの双方向バス６１２，６１４で構成されている。図６は、線形バス６１２，６１４の両方に接続されている３つの要素６２０，６２２，６４０を示している。一般に、両方のバスに接続されているｎ個のこのような要素は、多数存在する可能性がある。これらの要素６２０，６２２，６４０のうちの数個は、制御要素として機能することができ、処理要素として機能する他の要素は、制御要素によって制御されている状態である。制御及び処理要素に加えて、他の要素、例えばＲＡＭ制御器も、バス６１２，６１４に接続され得る。
【００５２】
あるいは、バスシステム６１０は、トークンをある局から次の局へ渡すトークンパッシング方式を用いても構成され得、ここにおいて、「次の」局は、バスに接続された要素のバスインターフェースのアドレスに基づいて規定されている。
【００５３】
本発明の更なる実施形態において、他の接続要素とデータの受信または送信をするため、ポインタは、接続されている制御要素によって、プッシュ（ｐｕｓｈ）またはプル（ｐｕｌｌ）され得る。
【００５４】
図７は、双方向バスであり、分岐７１３を介して接続されている３つの直線部７１２ａ，７１２ｂ，７１２ｃを備えている、非排他的バスシステム７１０の略図を示したものである。バスシステム７１０には、第１直線部７１２ａに接続されている２つの制御要素７２０ａ，７２０ｂ及びＲＡＭ７２２と、第２直線部７１２ｂに接続されている２つの処理要素７３０，７３２と、バスシステム７１０の第３直線部７１２ｃに接続されている２つの処理要素７４０，７４２と、が接続されている。図７に示されている第２及び第３直線部７１２ｂ，７１２ｃに加えて、第１直線部７１２ａに接続された任意の数の追加直線部も存在し得る。これらの追加直線部は、同数の接続要素を備え得る。
【００５５】
例えば、ＲＡＭ構成部７２２は、合計で３つ物理的隣接部、つまり、制御要素７２０ｂと、第２部７１２ｂの処理要素７３０と、第３部７１２ｃの処理要素７４０とを有している。したがって、このバスシステム７１０へのアクセスは、隣接関係が接続要素のアドレスに基づいて規定されているトークンパッシング方式で管理されるべきである。直線部７１２ｂ，７１２ｃは、同時にアクティブになり得ることに注目されたい。１つの直線部でアクティブなスロットを割り当てるには、一時的あるいは第２レベルトークンが用いられる。直線部７１２ａ，７１２ｂ，７１２ｃの現在の状況、及び、将来の可用性予測に関する知識が、サイクル予測方法、及び、どの処理要素にタスクが割り当てられるかの決定により用いられ得る。
【００５６】
効果的な実施形態において、バス７１２ａ，ｂ，ｃにつき２つ以上のトークンを使用できるようにするために、１つの一次分岐部と複数の二次分岐部とが存在する。これは、図７ａ及び図７ｂに図示されており、ここでは、第１直線部７１２ａが一次分岐を構成し、第２及び第３直線部７１２ｂ，７１２ｃが二次分岐部を構成している。
【００５７】
競合を避けるために、常に横断的な優先権を有するグローバルトークン７５０は、１つだけ存在し得る。図７ａ及び図７ｂには、グローバルトークン７５０が大きな星印で、ローカルトークン７５２が小さな星印で図示されている。図７ａに示されているように、グローバルトークン７５０が一次分岐部にある場合、ローカルトークンは二次分岐部のいずれにも存在できない。しかし、図７ｂに示されているように、グローバルトークン７５０が二次分岐部のうちの１つにある場合は、他の二次分岐部のうちの全てまたはいくつかに、個々の二次分岐部から離れることができないローカルトークン７５２を置くことができる。
【００５８】
図８は、２つの双方向バス８１２，８１４を備えている非排他的バスシステム８１０の略図を示している。第１制御要素８２０ａ、第２制御要素８２０ｂ、及び、ＲＡＭ８２２は、第１バス８１２と第２バス８１４との両方に接続されている。多数のｎ個の処理要素８３０，８３２が、第２バス８１４のみに接続されており、また、多数のｎ個の処理要素８４０，８４２が、第１バス８１２のみに接続されている。この構成は、バスシステム８１０に接続されている処理要素が合計でｍ×ｎ個存在するよう、ｎ回繰り返えされ得る。図８に示されている構成には、例えば制御要素８２０ａ，８２０ｂとＲＡＭ８２２との間の通信が、第１バス８１２と第２バス８１４との両方を介して発生するという利点がある。これは、ＲＡＭ８２２よりも少ない頻度でアクセスされ得る処理要素８３０，８３２，８４０，８４２との通信の帯域幅と比較して、２倍の総帯域幅を可能とする。このようにして、このアーキテクチャは、標準的な負荷想定に適合されている。２つ以上のＳＰＥとの通信が同時に発生し得るという、別の利点もある。
【００５９】
バス８１２，８１４へのアクセスは、簡易な時分割多元接続方式で実行され得る。あるいは、例えばトークンパッシング方式、又は、この２つの方式の組み合わせが使用され得る。
【００６０】
上記で説明された実施形態に関して、上記実施形態は、互いに組み合わせられ得ることを言及しておく。さらに、図面に示されたバスシステムは、図面には示されていない更なる要素、及び、更なるバスを備え得ることを理解されたい。特に、図７に示された分岐は、リングバスを直線部に接続することもできる。さらに、ブリッジ（ｂｒｉｄｇｅ）を介して接続される種々のバス、又は、少なくとも１つの要素を共有する種々のバスは、別々のアクセス方式を用いることもできる。
【００６１】
バスシステム１１０，２１０，３１０，４１０，５１０，６１０，７１０，８１０は、特に、デバイスＤの一部を構成している。したがって、本デバイスは、１つ以上のバス１１２，１１４，２１２，２１４，３１２，３１４，４１２，５１２，５１４，６１２，６１４，７１２ａ，７１２ｂ，７１２ｃ，８１２，８１４と、１つ以上の制御要素１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂと、複数の処理要素１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２とを備えている。このデバイスＤにおいて、制御要素１２０，２２０，３２０，４２０，５２０ａ，５２０ｂ，６２０，７２０ａ，７２０ｂのうちの少なくとも１つは、
複数の処理要素から、タスクを処理することができる１つ以上の処理要素１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２を識別し、
識別された１つ以上の処理要素１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２と通信する１つ以上の経路を識別し、
識別された処理要素１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２のうちの１つ以上と、識別された経路と、のサイクル長を予測し、識別された処理要素から、好適な処理要素１２２〜１３４，２２２，３２２〜３３４，４２２〜４３４，５２２〜５５０，６２０〜６４０，７２０ａ〜７４２，８２２〜８４２を選択するとともに、識別された経路から好適な経路を選択する
ことに基づいて、タスクの分配経路を決定するように適合されている。
【００６２】
さらに、説明された各態様に従って構成されている少なくとも１つのデバイスＤを備えているサーバーシステムが存在する。
【図１】
2017535212.tif 000003
【図２】
2017535212.tif 000004
【図３】
2017535212.tif 000005
【図４】
2017535212.tif 000006
【図５】
2017535212.tif 000007
【図６】
2017535212.tif 000008
【図７】
2017535212.tif 000009
【図７ａ】
2017535212.tif 000010
【図７ｂ】
2017535212.tif 000011
【図８】
2017535212.tif 000012
【国際調査報告】
2017535212.tif 000013
2017535212.tif 000014