(57)【特許請求の範囲】
【請求項１】
複数のコア間の通信を提供するオンチップネットワークを有するチップにおいて、前記オンチップネットワークにおいてパケットを受け渡すための方法であって、
プロセッサとスイッチとを含む、前記オンチップネットワーク内の前記複数のコアに含まれる発信コアにおいて前記パケットを発信するステップと、
前記パケットに、前記オンチップネットワークにおける前記パケットの受渡しを制御する前記パケットについての信頼性要件を定義するタグを付けるステップと、
前記オンチップネットワークが前記パケットの前記受渡しに際して前記オンチップネットワークの性能を動的に調整することを可能にする前記信頼性要件に従って前記パケットを宛先コアまで受け渡すステップと
を含む方法。
【請求項２】
前記信頼性要件は、前記オンチップネットワークにおいて前記パケットについて信頼できる伝送が必要とされるかどうか表示するビットを含む、請求項１に記載の方法。
【請求項３】
前記ビットが、アプリケーション、オペレーティングシステム、前記スイッチ、プロセッサ、または仮想コンピュータモニタのうちの少なくとも１つによって設定される、請求項２に記載の方法。
【請求項４】
前記信頼性要件が、前記パケット、アプリケーションにおけるパケットのストリームからのすべてのパケット、前記アプリケーションと関連付けられるすべてのパケット、または前記発信コアからのすべてのパケットのうちの少なくとも１つに適用される、請求項１に記載の方法。
【請求項５】
前記パケットが前記宛先コアまで受け渡されないときに前記パケットを再送するステップをさらに含む、請求項１に記載の方法。
【請求項６】
パケットエラーに前記コアとのインターフェースを介してアプリケーションで応答するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記パケットの経過期間に従って前記パケットの受渡しを取り消すステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記パケットを更新されたパケットで置換するステップをさらに含む、請求項７に記載の方法。
【請求項９】
後続のパケットについての信頼性要件を決定するのに使用されるパケット受渡し失敗の記録を記憶するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
オンチップネットワークにおいてパケットを経路指定するための方法であって、
少なくとも１つのプロセッサとパケットを経路指定するためのスイッチとを含むマルチコアプロセッサのコアにおいて発信コアからパケットを受信するステップと、
前記オンチップネットワークにおける前記パケットについての受渡しオプションを特定する前記パケットと関連付けられた信頼性要件を検査するステップと、
前記パケットと関連付けられた前記信頼性要件に従いながら宛先コアまで前記オンチップネットワークにおいて前記パケットを送信するステップと
を含む方法。
【請求項１１】
前記パケットと関連付けられた信頼性要件を検査する前記ステップが、前記信頼性要件に従うステップを含む、請求項１０に記載の方法。
【請求項１２】
前記信頼性要件は、前記パケットの受信が確認されるまで前記パケットを前記コアのバッファに記憶することを必要とする、請求項１１に記載の方法。
【請求項１３】
前記信頼性要件は、パケットエラーが発生した場合に前記パケットが再送されるべきことを要求することを必要とする、請求項１１に記載の方法。
【請求項１４】
前記信頼性要件が、後続のパケットを送信する前に前記パケットの受信の確認を必要とする、請求項１０に記載の方法。
【請求項１５】
パケットエラーが発生した場合に前記パケットの経過期間に従って前記パケットを取り消すステップをさらに含む、請求項１０に記載の方法。
【請求項１６】
パケットエラーが発生した場合に前記パケットを更新されたパケットで置換するステップをさらに含む、請求項１０に記載の方法。
【請求項１７】
パケットエラーと関連付けられるデータを前記オンチップネットワークにおいて記憶するステップと、
前記データに基づいて後続のパケットの前記信頼性要件を調整するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１８】
信頼性要件を調整する前記ステップが、前記オンチップネットワーク内の特定のコアに受渡しタスクをマップするステップを含む、請求項１７に記載の方法。
【請求項１９】
パケットを経路指定するためのオンチップネットワークを有する処理装置であって、
複数の接続と、
それぞれが発信コアと宛先コアとを含み、それぞれがプロセッサとネットワークスイッチとを含む、前記複数の接続によって前記オンチップネットワークを形成するように接続された複数のコアと
を備え、
前記発信コアが前記パケットを生成し、前記パケットに信頼性要件を定義するタグを付けるように構成され、前記パケットが前記信頼性要件に従って前記宛先コアまで受け渡される処理装置。
【請求項２０】
前記発信コア、前記宛先コア、または前記パケットの受渡しパス内のコアのうちの少なくとも１つが、前記信頼性要件において定義される前記ネットワークスイッチの設定を変更するように構成された、請求項１９に記載の処理装置。
【請求項２１】
前記設定が、前記ネットワークスイッチのクロック速度または前記ネットワークスイッチの電圧レベルのうちの少なくとも１つを含む、請求項２０に記載の処理装置。
【請求項２２】
前記発信コアから前記宛先コアまでの前記オンチップネットワークにおける前記パケットの受渡しパス内の各コアが、前記信頼性要件を適合しているかどうか評価するように構成された、請求項１９に記載の処理装置。
【請求項２３】
前記受渡しパス内の少なくとも１つのコアが、キャッシュに前記パケットを記憶するように構成されている、請求項２２に記載の処理装置。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッサなどの超大規模集積（ＶＬＳＩ）回路の設計およびアーキテクチャはきわめて複雑である。一般に認められているが、プロセッサの確実な動作を保証するために性能が犠牲にされることが多い。マルチコアプロセッサの発展と共に、データを確実に受け渡すことができる能力がますます大きな関心事になっている。
【０００２】
マルチコアプロセッサの発展はさらに多くの接続および構造的複雑さをもたらす。コア間のリンクが長くなる可能性があり、電圧レベルの伝搬時間が通常は増加する。加えて、マルチコアプロセッサ内の構成要素の急増、トランジスタの小型化および密度の増加も、例えば、オンチップスイッチおよびリンクが間欠的にまたは永続的に故障することになる可能性を高くする。その結果、マルチコアプロセッサのオンチップネットワークにおいてデータを受け渡すことのできる能力の信頼性がより低くなる。
【０００３】
同時に、高信頼通信を要件とする多くのアプリケーションも存在する。複数のコアによって分配され、実施される並列処理アプリケーションは、多くの場合、タスクがそれらのコアによって実施され先に進む前に完了することに依拠するものである。オンチップネットワークにおいて通信に失敗した場合、システムまたはアプリケーションは異常停止したり、別の形で故障したりする可能性がある。
【０００４】
コア間で確実に通信することができる能力は、マルチコアプロセッサ設計における重要課題である。しかしながら、前述のように、高信頼プロセッサの開発は、性能を犠牲にし、コストを増加させる可能性が高い。性能を改善するために、マルチコアプロセッサ上で動作するアプリケーションは、相対的に信頼性の低いオンチップネットワーク上で高信頼通信を実現するという可能性に直面している。
【図面の簡単な説明】
【０００５】
【図１】マルチコアプロセッサの例示的実施形態を示す図である。
【図２】マルチコアプロセッサに含まれるコアの例示的実施形態を示すブロック図である。
【図３】マルチコアプロセッサにおける発信コアから宛先コアまでの信頼性要件を有するパケットのパスを示す図である。
【図４】コアと、コアを含むパスの信頼性要件の従って、またはコアによって受信／送信されるデータの信頼性要件に従って動的に適合され得るコアの設定との例示的実施形態を示すブロック図である。
【図５】オンチップネットワークにおいてパケットを経路指定するための方法の例示的実施形態を示す流れ図である。
【図６】マルチコアプロセッサのオンチップネットワークにおいてパケットを経路指定するための方法の例示的実施形態を示す流れ図である。
【図７】マルチコアプロセッサを含むコンピューティング機器の一例を示す図である。
【発明を実施するための形態】
【０００６】
以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。図面において、類似の記号は通常、文脈から別の意味に解されない限り、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は限定のためのものではない。本明細書で提示する主題の趣旨または範囲から逸脱することなく、別の実施形態が利用されてもよく、別の変更が加えられてもよい。本明細書に概して記載し、各図に示す本開示の態様は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらの構成はすべて本明細書において明示的に企図するものであることが容易に理解されるであろう。
【０００７】
本明細書に記載される実施形態は、オンチップネットワークにおいて高信頼通信を提供することに関するものである。高信頼通信は、信頼性要件をオンチップネットワークにおいて送信されるパケットと関連付けられることによって実現することができる。信頼性要件は、例えばパケットについての信頼性要件を定義するタグを使用して、パケットと関連付けることができる。タグと関連付けられた信頼性要件は、送信前、送信中、および／または送信後に解釈し、送信前、送信中、および／または送信後に実施することができる。
【０００８】
代替として、またはタグに加えて、信頼性要件は、マルチコアプロセッサのオンチップネットワークにおけるコアまたは他の構成要素の設定も含むこともできる。設定はパケットの信頼性要件に従って、場合によっては動的に変更することもでき、または信頼性要件を達成するように設定することもできる。オンチップ通信の性能は、タグおよび／またはパケット受渡しについて所望のレベルの性能を達成するための設定を使用して、パケットがオンチップネットワークにおいて送信される際に動的に適合させることができる。
【０００９】
図１に、コンピュータまたは他のコンピューティング機器に含まれ得る、マルチコアプロセッサ１００内で高信頼通信を提供するように構成されているマルチコアプロセッサ１００の例示的実施形態を示す。マルチコアプロセッサ１００は、処理のためにコンピュータおよび他の機器において使用することができる。マルチコアプロセッサ１００は、ロードされており、記憶されており、または別の方法でコンピュータからアクセス可能とされているソフトウェアまたは他の実行可能命令を動作させ、または実行する役割を果たす。
【００１０】
図１に示すマルチコアプロセッサ１００はマルチコアプロセッサであり、プロセッサコア１４０を含む。プロセッサコア１４０は、命令を実行し、計算を行い、別の方法でコンピュータまたはコンピュータシステムに計算処理機能を提供する。プロセッサコア１４０は、入力／出力モジュール１０４を介してコンピュータ内の他のモジュールまたは構成要素と通信することができる。入力／出力モジュール１０４は、多くの場合システムバス１０６上で実行されるデータの受信／送信を行い、コンピューティングシステムの他の構成要素に接続することができる。入力／出力モジュール１０４は、それだけに限らないが、ギガビットイーサネット、ＸＡＵＩ、ＰＣＩｅ、ＪＴＡＧ、ＴＷＩなどを含む複数のプロトコルに従って構成することができ、または動作することができ、データストリームの直列化／非直列化、非同期伝送などを提供し得る。
【００１１】
入力／出力モジュール１０４は別々のモジュールを含んでもよく、これらのモジュールはプロトコルごとに構成可能とすることもできる。入力／出力モジュール１０４は、マルチコアプロセッサ１００またはコンピュータが、ローカル・エリア・ネットワーク、インターネットなどといったネットワーク上で他のコンピュータと通信することを可能にし得る。例えば、マルチコアプロセッサ１００を有するサーバコンピュータがネットワーク上でクライアントコンピュータと通信してもよい。前述の例において、クライアントコンピュータはマルチコアプロセッサ１００を有していてもいなくてもよい。
【００１２】
またマルチコアプロセッサ１０４はコントローラ１０２も含む。コントローラ１０２は、複数のコントローラ１０２を含んでもよく、様々なキャッシュレベル、ＲＡＭなど、またはそれらの任意の組み合わせといったシステムメモリへのアクセスを提供し得る。当然ながら、プロセッサコア１４０はそれぞれ独自のキャッシュも含んでいてよい。マルチコアプロセッサ１００は他のモジュール（例えば、命令復号器、バス・インターフェース・ユニット、アドレスジェネレータ、浮動小数点ユニット、整数実行ユニット、レジスタなど）も含み得ることを当業者は理解することができる。
【００１３】
さらに、マルチコアプロセッサ１００は、単一のチップに統合されてもよい。あるいは、マルチコアプロセッサ１００のモジュールまたは構成要素の一部が、相互に対話し合う別々のチップに含まれていてもよい。
【００１４】
また図１には、マルチコアプロセッサ１００内のプロセッサコア１４０のより詳細な図も示されている。プロセッサコア１４０は、オンチップネットワーク１３０を介して通信するように構成されている。プロセッサコア１４０、特にオンチップネットワーク１３０は複数の個別コア１５０を含み、これにはコア１５０ａ、コア１５０ｂ、および１５０ｃが含まれる。状況によっては、コア１５０といい、またはこれを説明する場合に、それが各コア１５０ａ、１５０ｂ、および１５０ｃに該当し得ることもある。同様に、コア１５０ａ、コア１５０ｂ、およびコア１５０ｃといい、またはこれらを説明する場合にも、状況に従ってそれ以外のコア１５０に等しく適用できる場合もある。
【００１５】
各コア１５０は一般には同じであるが、コア１５０のうちの一部が他のコアと構造的に異なる場合もあり得る。例えば、コア１５０の一部が入力／出力モジュール１０４またはコントローラ１０２と直接インターフェースし、コアの一部が別のコアを介してこれらのモジュールと通信してもよい。コアの一部が他のコアより多くの処理機能または能力を有してもよい。コア１５０ａは、この例ではコア１５０に含まれ、プロセッサコア１４０の内部に位置しており、他のコア１５０を介してモジュールまたは構成要素と通信し得るが、直接通信もまた可能とし得ることを当業者は理解することができる。
【００１６】
コア１５０は異なる構成またはトポロジとして配置することもできる。マルチコアプロセッサ１００において使用され得るコアトポロジの例としては、メッシュトポロジ、トーラストポロジ、ファットツリートポロジなどがある。
【００１７】
各コア１５０は、プロセッサコア１４０内の他のコアとは独立に機能し得るプロセッサを含む。各コア１５０は通常、必要な場合、独自にコンピュータプログラムを実行することができる。マルチコアプロセッサ１００の一利点は、各コア１５０が、アプリケーションを実行したり命令を実行したりするためにまとまって働くことができることである。
【００１８】
アプリケーションをまとまって実行するときに、各コア１５０が実行されるアプリケーション内で異なる役割を有する場合もある。その結果、マルチコアプロセッサ１００は、同じアプリケーションを単一コアで処理するときよりも、またはシングルコアプロセッサと比べて、より迅速にアプリケーションを実行することができる。加えて、コア１５０は、同時にコンピューティングシステム内で異なるアプリケーションまたはプロセスに作用することもできる。これは、例えば、コア１５０の一部が、あるアプリケーションを実施し、同時に他のコア１５０が別のアプリケーションまたはプロセスを実施し、または実行することを可能にする。加えて、各コア１５０は、アプリケーションプロセスを切り換えることもできる。よってコア１５０ａといった特定のコアが、１つまたは複数のアプリケーションのための複数のプロセスを実施してもよい。
【００１９】
プロセッサコア１４０によって示されるようなマルチコア環境においてプロセスまたはアプリケーションを実行するときには、多くの場合、データ（例えば、アプリケーションデータ、アドレス、命令など）がコア１５０のうちの１つからコア１５０のうちの別の１つへ（例えばコア１５０ｂからコア１５０ｃへ）転送される必要が生じる。これは多くの場合オンチップネットワーク１３０を使用して達成され、オンチップネットワーク１３０は接続１５２を含む。
【００２０】
図１において、接続１５２はコア１５０を相互に接続するのに使用される。すべてのコア１５０が相互に直接接続され得るとは限らない（例えばコア１５０ｂはコア１５０ａに直接接続され得ない）が、接続１５２は、任意のコア１５０が他の任意のコア１５０と通信し得ることを保証する。
【００２１】
例えば、各コア１５０がグリッド構成として配置されているとき、各コア１５０は、上方向、右方向、左方向、および下方向に接続１５２を有し得る。この例では、各接続１５２は複数の通信路１５４を含み得る。通信路１５４は、コア１５０間の物理接続を含み得る。この例では、直接接続されたコア１５０間に複数の通信路が存在し得る。
【００２２】
図２に、マルチコアプロセッサ１００に含まれるコア１５０ａの例示的実施形態のブロック図を示す。コア１５０ａはプロセッサコア１４０のうちの１つである。接続１５２を使用してデータを受け渡し、または転送することができる能力は、図２にコア１５０ａ内のネットワークスイッチ２００で示すように、コア１５０のそれぞれにネットワークスイッチ２００を設けることにより実現される。コア１５０ａは、プロセッサ２２０、キャッシュ２２２、およびネットワークスイッチ２００を含む。ネットワークスイッチ２００は、接続１５２の例である、接続２０２、接続２０４、接続２０６、および接続２０８で隣接するネットワークスイッチと接続され得る。前述のように、接続１５２はそれぞれ接続２０２、２０４、２０６、および２０８を含み、通常は複数の通信路を含む。その結果、コア１５０ａは、隣接する、または直接接続されたコア１５０と複数の通信路を介して通信することができる。
【００２３】
ネットワークスイッチ２００は、ポート２１０を介して接続２０２、２０４、２０６、および２０８とインターフェースする。より具体的には、各接続２０２、２０４、２０６、および２０８で表される通信路は、ポート２１０に含まれる特定のポートに接続されている。図示の例において、コア１５０ａは他の４つのコアへの直接接続を有する。各接続は、例にすぎないが、５つの通信路を含み得る。その上、接続２０２、２０４、２０６、および２０８はそれぞれ、より多いまたはより少ない通信路を含んでもよい。加えて、ネットワークスイッチ２００も通信路２１４を介してプロセッサ２２０にも接続され得る。通信路２１４は、プロセッサ２２０とネットワークスイッチ２００との間の通信に使用され得る。例えば、コア１５０ａによって処理されるべきパケットが、通信路２１４を介してコア１５０ａに転送され得る。
【００２４】
またコア１５０ａはキャッシュ２２２も含む。キャッシュ２２２は、コア１５０ａに特有のものとすることもでき（例えば、キャッシュ２２２はプロセッサ２２０のためのＬ１およびＬ２キャッシュとすることもできる）、他のコア１５０と共用されてもよい。あるいは、キャッシュ２２２は、ネットワークスイッチ２００に含まれてもよく、ネットワークスイッチ２００からアクセスすることができてもよい。あるいは、ネットワークスイッチ２００は、ネットワークスイッチ２００が経路指定機能を果たすことを可能にするコントローラおよびキャッシュを有してもよい。
【００２５】
またネットワークスイッチ２００は設定２１２も含む。設定２１２は、ネットワークスイッチ２００の動作態様の一部を制御するのに使用され得る。例えば、設定２１２は、ネットワークスイッチ２００の電圧レベル、ネットワークスイッチ２００のクロック速度、パイプライン制御などを制御するのに使用され得る。また設定２１２は、場合によっては、プロセッサ２２０の動作態様を制御するのにも使用され得る。
【００２６】
コア１５０ａの、またはネットワークスイッチ２００の所望の性能は、設定２１２を動的に調整することによって達成することができる。例えば、クロック速度を上げればスループットを増大させることができ、電圧レベルを下げれば電力を節約することができる。設定２１２は、ネットワークスイッチ２００の、またはコア１５０ａの性能を動的に変更するために電圧レベル、クロック速度などを調整するのに使用することができる。
【００２７】
図３に、マルチコアプロセッサ１００における発信コア３０２から宛先コア３０４までの信頼性要件を有するパケット３１０のパス３０６を示す。図３に示す例では、発信コア３０２（コア１５０のうちの１つとすることができる）が宛先コア３０４（やはりコア１５０のうちの１つとすることができる）にパケット３１０を送信している。パケット３１０はパス３０６上で送信され、パス３０６は、（ｉ）発信コア３０２と宛先コア３０４との間を直接つないでもよく、（ｉｉ）マルチコアプロセッサ１００内の他のコア１５０を介する１つまたは複数のホップを含んでもよい。さらにパケット３１０は、複数のデータパケットのみならず異なる種類のデータも表すものである。例えば、パケット３１０は、アプリケーションデータ、ストリーミングパケット、命令、アドレス、その他のデータ、制御メッセージなど、またはそれらの組み合わせを表し得る。信頼性要件は、パケット３１０、パケットのストリーム、ストリーム内の少なくとも１つのパケット、アプリケーション内のパケットのストリームからのすべてのパケット、アプリケーションと関連付けられるすべてのパケット、発信コアからのすべてのパケットなどに適用することができる。
【００２８】
パス３０６は、パス３０６が未知であり、パス３０６内の次のノードまたはホップが各コア１５０において決定される場合に、パケット３１０の送信中に動的に決定することができる。パス３０６内のホップの次のノードは、現在のネットワークスイッチ２００において、リアルタイムで、または準リアルタイムで決定されてもよい。宛先コアは知られ得るが、宛先コアまでのパス３０６は知られ得ず、パケット３１０の送信中に決定される。
【００２９】
あるいは、パス３０６は、パケット３１０の送信の前に仮想パスとして事前に決定され、確立されてもよい。
【００３０】
パケット３１０はタグ３１２を含む。タグ３１２は、パケット３１０についての少なくとも１つの信頼性要件を特定するための方法としてパケット３１０に追加することができる。あるいは、タグ３１２は、パケット３１０から分離されていて（すなわち、パケット３１０の一部として含まれていなくて）もよい。例えば、パケット３１０が宛先コア３０４に渡されなければならない場合、タグ３１２はパケット３１０についてこの要件（例えば受渡し確認など）を表示する。タグ３１２は、パケット３１０の受渡しが、基礎をなすオンチップネットワークの信頼性が低い可能性があるときでさえも信頼できることを保証するために使用することができる。
【００３１】
別の例では、タグ３１２は、パケット３１０が指定の期間に渡されるべきことを指定し得る。パケット３１０の通過時間は各ノードにおいて更新し、評価することができる。パケット３１０が渡される前に指定の期間が終了する場合には、パケット３１０は廃棄されてもよく、エラーメッセージが発信コアに返されてもよい。
【００３２】
別の例では、タグ３１２は、パケット３１０が渡されるまで、パケットのコピーがコア１５０のうちの１つにおいてキャッシュされ、またはバッファに入れられるべきことを指定し得る。またタグ３１２は、ネットワークスイッチ２００によって使用され得る設定２１２も指定し得る。タグ３１２は、クロック速度を下げ、または電圧を上げることによってネットワークスイッチ２００の信頼性を高め、よって、パケット３１０の転送の信頼性を高めるために使用することができる。
【００３３】
別の例では、タグ３１２は、パス３０６内の各コアが、前のコアに対して、パス３０６内の次のまたは後続のコアへのパケット３１０の正常な受渡しを確認すべきことを要求し得る。あるいは、これは、宛先コア３０４に、発信コア３０２またはパス３０６内の別のコアに対して受信通知を返送させることによって達成されてもよい。また３１２のタグは、ネットワーク内の信頼できないリンクおよびルータを回避するためにパケットが通るべきネットワーク内の回路をセットアップするのに使用することもできる。
【００３４】
これらの例は、タグ３１２が、オンチップネットワーク１３０またはコア１５０が信頼できない場合の事例を克服し得る所望のレベルの信頼性を指定することができることを示すものである。
【００３５】
パケット３１０のタグ３１２において指定され、または定義される信頼性要件は様々な方法で表すことができる。例えばタグ３１２は、パケット３１０が所定の期間内に受け渡されるべきことを表示してもよい。タグ３１２はパス３０６内の任意のコアにおいて評価することができる。タグ３１２内の信頼性要件が満たされ得ない場合には、送信が放棄され（または打ち切られ）てもよく、かつ／または、やはりタグ３１２において特定され得る別の措置または動作を実施することができる。例えば、発信コア３０２には、パケット３１０が宛先コア３０４に渡されなかったこと、またはパケット３１０が廃棄されたことが知らされてもよい。信頼性要件が満たされず、または満たされ得ないときに発生し得る他の措置には、パケットの受渡しの取消し、パケットの更新されたパケットとの置換などが含まれる。
【００３６】
別の例では、タグ３１２内の信頼性要件は、単に、パス３０６または時間要素を考慮しない宛先コア３０４への受渡しの通知を必要とし得る。タグ３１２は、パケット３１０が所定のパス、例えば、以前に確立されている仮想パスなどをたどることを表示し得る。またタグ３１２は、後続のパケットについての信頼性要件を特定するのに使用されてもよい。例えば、パケットのストリームにおいて、ストリーム内のすべてのパケットについての信頼性要件を、パケットのストリーム内のパケットの一部に添付され得るタグ３１２において指定し、または定義することができる。この場合、タグ３１２は、実際にはすべてのパケットにタグ３１２を含めずに複数のパケットに適用することができる。
【００３７】
別の例では、タグ３１２は、パケット３１０（またはパケットのグループ）の送信について許容できる誤り率を指定し得る。例えば、ビデオデータなどを、パケットのうちの一部が渡されないときでさえも正常に送ることができる。他方オーディオデータはデータ損失によって受ける影響がより著しい。そのため、オーディオデータについて信頼性要件はビデオデータについての信頼性要件とは異なり得る。
【００３８】
またタグ３１２は時間に関しての信頼性要件も表し得る。タグ３１２は、パケット３１０がある一定の期間内に渡されるべきことを表し得る。これは、パス３０６内の各コアにおいて検査し、かつ／または各コアにおいて更新することができる。
【００３９】
これらの例は、タグ３１２が、データの種類、要求の種類、誤りの百分率、許容できる誤り率、受渡し期間、パス識別、受渡し期間終了時に講じられる措置、アプリケーション優先度、ユーザ入力など、またはそれらの組み合わせに関して信頼性要件を定義し得ることを示している。
【００４０】
タグ３１２は、パケット３１０内のビットまたはビット集合によって表すこともでき、パケット３１０のヘッダに含めることもでき、別のスキーマとすることもできる。ビットまたはヘッダは、例えば、パケット３１０の信頼できる伝送が必要とされるかどうか表示することができる。ビットの集合は、特定のレベルを特定し、またはパケット３１０についての特定の信頼性要件を特定するのに使用することができる。加えて、タグ３１２は、アプリケーションによっても、オペレーティングシステムによっても、コアによっても、仮想コンピュータモニタによっても設定することができる。タグ３１２によって定義される信頼性要件の発信は、よって、状況に従って変動し得る。例えば、オペレーティングシステムが、アプリケーションとは独立に、またはアプリケーションとは逆の信頼性要件を設定し得る事例があってもよい。
【００４１】
図４に、コア１５０ａと、コア１５０ａを含むパスをたどるパケットの信頼性要件の従って、またはコア１５０ａによって受信／送信されるパケットの信頼性要件の従って動的に適合され得る（ネットワークスイッチの設定を含む）コアの設定との例示的実施形態のブロック図を示す。図４には、マルチコアプロセッサ１００のオンチップネットワーク１３０の性能の動的調整が示されている。ネットワークスイッチ２００を含むコア１５０ａの性能は、設定２１２を変更することにより変更することができる。
【００４２】
図４には、信頼性要件に従った設定２１２の確立の一例が示されている。図４には、ポート２１０に接続する通信路のうちのいくつかが示されている。この例では、これらのポートおよび対応する通信路は、仮想パス４０２、４０４、４０６、および４０８としてセットアップされている。
【００４３】
コア１５０ａは現在、仮想パス４０２、４０４、４０６、４０８、および４１０についてセットアップされているため、設定２１２は、その信頼性要件が最高である可能性があり、または最も信頼できることを表示し得るパスに従って決定され得る。例えば、仮想パス４０２において送信されるパケットは、ある一定の割合のデータ損失を許容することができる可能性があるが、仮想パス４０４はデータ損失を許容することができない可能性があり、またはより低い割合のデータ損失を許容し得る。その結果、コア１５０ａの設定２１２は、仮想パス４０４についての信頼性要件に適応するように設定され得る。
【００４４】
設定２１２は、マルチコアプロセッサ１００の性能を変更するように設定することができる。また設定２１２は、ネットワークスイッチ２００のスイッチング速度、クロック速度、電圧レベルなどを選択するのに使用されてもよい。例えば、クロック速度を上げるとデータ伝送の誤り率につながり得るが、誤り率はある状況においては許容できる可能性がある。同様に、電圧レベルの変更も誤り率に影響を及ぼし得る。過渡的障害のわずかな増加と引き換えに、設定２１２を、クロック速度を上げるように、または動作電圧を低減して電力を節約するように調整することができる。タグ３１２と関連付けられる信頼性要件は、オンチップネットワークが過渡的障害を被り、または他の理由で信頼できない可能性があるときでさえも所望のレベルの信頼性を提供するように設定２１２を行い、またはパケット３１０に関する他の受渡し要件を設定するために使用することができる。タグ３１２は、信頼性要件に従ってある設定２１２を特定し、または指定することができる。
【００４５】
図５に、オンチップネットワークにおいてパケットを経路指定するための方法の例示的実施形態の流れ図を示す。ブロック５０２で、コアはオンチップネットワークにおいて送信されるべきパケットを発信し得る。ブロック５０４で、コア、オペレーティングシステム、または他の構成要素によってパケットにタグが付けられる。タグは、パケットの受渡しおよび／または送信に関連した信頼性要件を指定し、または定義することができる。ブロック５０６で、パケットは、タグにより定義される信頼性要件に従って受け渡される。パケットは発信コアにより別のコアに渡される。パス内の各コアは、タグを評価し、タグに指定された信頼性要件に従って動作し得る。最終的に、パケットは宛先コアに渡される。
【００４６】
よってパケットは、タグにおいて反映されている所望レベルの信頼性で経路指定され得る。前述のように、所望のレベルの信頼性はタグに従って実現することができる。
【００４７】
本明細書で開示する上記その他のプロセスおよび方法について、当該プロセスおよび方法において果たされる機能は、異なる順序で実施されてもよいことを当業者は理解するであろう。さらに、概説するステップおよび動作は例として提示するにすぎず、当該ステップおよび動作のうちの一部は、開示の実施形態の本質を損なうことなく、任意選択とすることも、組み合わせてより少ないステップおよび動作にすることも、拡張してさらに別のステップおよび動作とすることもできる。
【００４８】
図６に、マルチコアプロセッサのオンチップネットワークにおいてパケットを経路指定するための方法の例示的実施形態の流れ図を示す。ブロック６０２で、パケットがマルチコアプロセッサのコアにおいて受信される。ブロック６０４で、コアまたはコアの構成要素がパケットと関連付けられた信頼性要件を検査する。前述のように、信頼性要件は通常、パケットに付属し得るタグにおいて定義され、または指定される。ブロック６０６で、コアは次いで信頼性要件に従ってパケットを送信し得る。これは、例にすぎないが前述したように、コアの、またはコアに含まれる構成要素の設定を変更すること、受渡しが確認されるまでパケットをコアのキャッシュに記憶すること、パケットの受信の確認とすることができる受渡し確認メッセージや受渡し失敗メッセージなど、またはその任意の組み合わせを送信することを含み得る。場合によっては、信頼性要件はパケットが送信される前に実施されてもよい。例えば、設定が変更されるときに、パス内のコアが、パケットを受信し始める前に通知を受けてもよい。
【００４９】
さらに、受渡し失敗への応答を、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用して管理することもできる。これは、アプリケーションにパケットの受渡し失敗を管理させることを可能にする。例えばアプリケーションは、パケットが古すぎると判定し、パケットの経過期間に従って、またはパケットの有効時間もしくは有効期間に従って受渡しを取り消すこともできる。あるいは、アプリケーションは、代替パケットを送出してもよく、当該パケットを再送してもよい。代替または再送パケットをいつ送信するかアプリケーション自体が決定することができる。
【００５０】
またＡＰＩは、過去に発生したパケット受渡し失敗の記録にアクセスすることができてもよい。この記録は、特定のアプリケーションなどについてある期間にわたってアクセスすることができる。この記録は、アプリケーション、または処理コアもしくはオペレーティングシステムが、将来のパケットの信頼性要件を決定することを可能にし得る。また記録は、オンチップネットワーク内の異なるスイッチまたはコアへの異なるタスクのマッピングを調整するのに使用することもできる。これにより異なる設定を使用して性能が改善される可能性がある。例えば、レコードは、あるスイッチが、信頼性要件に従いながら他のスイッチまたはコアより高いクロック速度で動作することができることを解明し得る。よって、タスクのマッピング、またはパケット経路指定がある特定のコアおよび／またはスイッチを使用するよう要求することにより性能を改善することができる。これらのタスクは、マルチコアプロセッサ１００のメモリ、アプリケーション、またはオペレーティングシステムにおいて実施することができる。
【００５１】
本開示は、本出願に記載されている特定の実施形態に関して限定されるべきではなく、これらの実施形態は様々な態様の例として意図されるものである。当業者には明らかなように、本開示の趣旨および範囲を逸脱することなく、多くの改変および変形を行うことができる。以上の説明を読めば当業者には、本明細書に挙げられているもの以外の本開示の範囲内の機能的に等価な方法および装置が明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲内に含まれることが意図されている。本開示は、添付の特許請求の範囲の規定と、特許請求の範囲がそれに対して権利を付与される十分な範囲の均等物とによってのみ限定されるべきである。本開示は、特定の方法、試薬、化合物、組成物、または生体系だけに限定されず、当然ながら様々なであり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
【００５２】
図７は、本開示によるマルチコアプロセッサにおけるオンチップネットワーク上の高信頼通信のために構成されているコンピューティング機器の例７００を示すブロック図である。非常に基本的な構成７０２において、コンピューティング機器７００は通常、１つまたは複数のコア７０４およびシステムメモリ７０６を含む。メモリバス７０８は、コア７０４とシステムメモリ７０６との間の通信に使用され得る。
【００５３】
所望の構成に応じて、各コア７０４は、それだけに限らないが、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、ディジタル信号プロセッサ（ＤＳＰ）、またはこれらの組み合わせを含む任意の種類のものとすることができる。コア７０４は、レベル１キャッシュ７１０やレベル２キャッシュ７１２といった１つまたは複数のレベルのキャッシング、プロセッサ７１４、およびレジスタ７１６を含み得る。例示的プロセッサ７１４は、算術論理演算装置（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、ディジタル信号処理コア（ＤＳＰ）、またはこれらの任意の組み合わせを含み得る。また例示的メモリコントローラ７１８は、コア７０４と共に使用されてもよく、実装形態によっては、メモリコントローラ７１８はコア７０４の内部部分とすることもできる。
【００５４】
所望の構成に応じて、システムメモリ７０６は、それだけに限らないが、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。システムメモリ７０６は、オペレーティングシステム７２０、１つまたは複数のアプリケーション７２２、プログラムデータ７２４を含み得る。アプリケーション７２２は、マルチコアプロセッサのオンチップネットワークにおいてパケットを確実に経路指定し、受け渡すように構成されているアルゴリズム７２６を含み得る。プログラムデータ７２４は、以下でさらに説明するように、オンチップネットワークにおいてパケットを確実に送信するのに役立ち得る信頼性要件７２８を含み、またはこれを定義し得る。実施形態によっては、アプリケーション７２２は、基礎をなすオンチップネットワークが信頼できない可能性があるときでさえもパケットが信頼性要件に従って受け渡されるように、オペレーティングシステム７２０上でプログラムデータ７２４を用いて動作するように構成され得る。前述のこの基本構成７０２は、図７において、内側の破線内の構成要素で示されている。
【００５５】
コンピューティング機器７００は、さらに別の機構または機能と、基本構成７０２と任意の必要な機器およびインターフェースとの間の通信を円滑化するためのさらに別のインターフェースとを備えていてもよい。例えば、記憶インターフェースバス７３４を介した基本構成７０２と１つまたは複数のデータ記憶装置７３２との間の通信を円滑化するためのバス／インターフェースコントローラ７３０が使用されてもよい。データ記憶装置７３２は、取り外し可能記憶装置７３６、取り外し不能記憶装置７３８、またはこれらの組み合わせとすることができる。取り外し可能記憶装置および取り外し不能記憶装置の例には、いくつか例を挙げると、フレキシブル・ディスク・ドライブやハード・ディスク・ドライブ（ＨＤＤ）といった磁気ディスク装置、コンパクトディスク（ＣＤ）ドライブやディジタル多用途ディスク（ＤＶＤ）ドライブといった光ディスクドライブ、ソリッド・ステート・ドライブ（ＳＤＤ）、テープなどが含まれる。コンピュータ記憶媒体の例には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータといった情報の記憶のための任意の方法または技術において実施される揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれ得る。
【００５６】
システムメモリ７０６、取り外し可能記憶装置７３６および取り外し不能記憶装置７３８がコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）またはその他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶またはその他の磁気記憶装置、あるいは所望の情報を記憶するのに使用され、コンピューティング機器７００によってアクセスされ得る他の任意の媒体が含まれる。そのような任意のコンピュータ記憶媒体をコンピューティング機器７００の一部とすることができる。
【００５７】
またコンピューティング機器７００は、バス／インターフェースコントローラ７３０を介した、様々なインターフェース機器（出力機器７４２、周辺インターフェース７４４、通信機器７４６など）から基本構成７０２への通信を円滑に行わせるためのインターフェースバス７４０も含み得る。出力装置７４２の例にはグラフィック・マルチコア・プロセッサ７４８およびオーディオ・マルチコア・プロセッサ７５０が含まれ、これらは、１つまたは複数のＡ／Ｖポート７５２を介して、ディスプレイやスピーカといった様々な外部機器と通信するように構成され得る。周辺インターフェース７４４の例には、シリアル・インターフェース・コントローラ７５４やパラレル・インターフェース・コントローラ７５６が含まれ、これらは、１つまたは複数の入出力ポート７５８を介して、入力機器（例えば、キーボード、マウス、ペン、音声入力機器、タッチ入力機器など）や他の周辺機器（例えば、プリンタ、スキャナなど）といった外部機器と通信するように構成され得る。通信機器７４６の一例はネットワークコントローラ７６０を含み、これは、１つまたは複数の通信ポート７６４を介したネットワーク通信リンク上での１つまたは複数の他のコンピューティング機器７６２との通信を円滑化するように構成され得る。
【００５８】
ネットワーク通信リンクは、通信媒体の一例とすることができる。通信媒体は通常、搬送波や他の伝送機構といった変調データ信号におけるコンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータによって実施することができ、任意の情報受渡し媒体を含み得る。「変調データ信号」とは、その特性の１つまたは複数が信号において情報を符号化するように設定され、または変更されている信号とすることができる。例を挙げると、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続といった有線媒体、ならびに音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）およびその他の無線媒体といった無線媒体が含まれ得る。コンピュータ可読媒体という語は、本明細書で使用する場合、記憶媒体と通信媒体の両方を含み得る。
【００５９】
コンピューティング機器７００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナル・メディア・プレーヤ機器、無線ウェブウォッチ（ｗｅｂ−ｗａｔｃｈ）機器、パーソナルヘッドセット機器、アプリケーション特有の機器、上記機能のいずれかを含むハイブリッド機器といったスモール・フォーム・ファクタの携帯用（またはモバイル）電子機器の一部として実施され得る。またコンピューティング機器７００は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしても実施され得る。
【００６０】
本明細書における実質的にあらゆる複数形および／または単形数の用語の使用について、当業者は、状況および／または用途に適するように、複数形から単数形に、かつ／または単数形から複数形に変換することができる。明確にするために様々な単数形／複数形の変形が本明細書において明示され得る。
【００６１】
一般に、本明細書において、特に添付の特許請求の範囲（例えば、添付の特許請求の範囲の本文など）において使用される語は、一般には、「非限定的な（ｏｐｅｎ）」語として意図されている（例えば、「ｉｎｃｌｕｄｉｎｇ（〜を含み）」という語は「それだけに限らないが〜を含み」と解釈すべきであり、「ｈａｖｉｎｇ（〜を有し）」という語は「少なくとも〜を有し」と解釈すべきであり、「ｉｎｃｌｕｄｅｓ（〜を含む）」という語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど）ことが当業者には理解されるであろう。さらに、特定の数の導入請求項記載が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば、理解の一助として、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含み得る。しかしながら、そのような句の使用は、同じ請求項が「１つまたは複数の」あるいは「少なくとも１つの」という導入句および「ａ」や「ａｎ」といった不定冠詞を含むときでさえも、不定冠詞「ａ」または「ａｎ」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ１つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は「少なくとも１つの」または「１つまたは複数の」を意味するものと解釈されるべきであるなど）。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、特定の数の導入請求項記載が明示的に記載されている場合でさえも、当業者は、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることを理解するであろう（例えば、他の修飾語句を伴わない「２つの記載」という記載だけで、少なくとも２つの記載、または２つ以上の記載を意味するなど）。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。「Ａ、Ｂ、またはＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。さらに、２つ以上の択一的項目を提示する事実上あらゆる選言的な語および／または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの１つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むものと理解されるであろう。
【００６２】
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、当業者は、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることを理解するであろう。
【００６３】
当業者には理解されるように、ありとあらゆる目的で、例えば書面による説明を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも２等分、３等分、４等分、５等分、１０等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下３分の１、中３分の１および上３分の１などに容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」などといったすべての表現は、記載される数を含み、後で前述のような下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって、例えば、１〜３個のセルを有するグループとは、１個、２個、または３個のセルを有するグループを指す。同様に、１〜５個のセルを有するグループとは、１個、２個、３個、４個または５個のセルを有するグループを指し、以下同様である。
【００６４】
以上から、本明細書では本開示の様々な実施形態が例示のために説明されており、本開示の範囲および趣旨を逸脱することなく様々な改変が行われ得ることが理解されるであろう。したがって、本明細書で開示した様々な実施形態は限定的であることを意図するものではなく、真の範囲および趣旨は添付の特許請求の範囲によって指示される。
【図１】
0005442129.tif 000002
【図２】
0005442129.tif 000003
【図３】
0005442129.tif 000004
【図４】
0005442129.tif 000005
【図５】
0005442129.tif 000006
【図６】
0005442129.tif 000007
【図７】
0005442129.tif 000008