(57)【要約】【課題】集積回路内に位置する種々のコア（１−５）の間に通信を提供する方法及び装置を提供する。【解決手段】その方法及び装置は、指定された方法に従ってコア（１−５）からの或いはコア（１−５）間での通信を容易にして管理するためにハブ／ルータ（６−１０）を使用する。【選択図】図１
2009531771.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、所望の機能を実行することのできる複数のコアと、
それぞれが、１つからデータを受信し送信することのできる複数のハブとを含む集積回路であって、前記コアは前記コアのうちの他の一つのコアである宛先へのデータ転送を開始する、集積回路。
【請求項２】
前記複数のハブは、
それぞれが、前記コアのうちの少なくとも１つと関連付けられているハブの第１セットを含み、前記第１ハブの各々はそれぞれに関連付けられているコアとデータをやり取りすることができる、請求項１の集積回路。
【請求項３】
前記複数のハブは、
それぞれが、前記第１セットのハブのうちの少なくとも１つと関連付けられているハブの第２セットを含み、前記第２ハブの各々はそれぞれに関連付けられている第１ハブとデータをやり取りすることができる、請求項２の集積回路。
【請求項４】
前記複数のハブは、
それぞれが、前記第２ハブのうちの少なくとも１つと関連付けられているハブの第３セットを含み、前記第３ハブの各々はそれぞれに関連付けられている第２ハブとデータをやり取りすることができる、請求項３の集積回路。
【請求項５】
前記第１ハブ、前記第２ハブ及び前記第３ハブの各々は、
データを受信し転送することのできる受信／転送ユニットと、
前記受信／転送ユニットを介するデータの受信及び転送を制御し、データ完全性を維持するために種々の信号を受信し送信することのできる制御ユニットと、
を含む、請求項４の集積回路。
【請求項６】
前記受信／転送ユニットはデータを格納し送信するためのＦＩＦＯを含む、請求項５の集積回路。
【請求項７】
前記制御ユニットは、
データが転送されるべき前記ハブのうちの１つが使用可能であるか否かを示す信号を含む、請求項６の集積回路。
【請求項８】
前記制御ユニットは、
データが転送されるべき前記コアのうちの１つがどうかを示す信号を含む、請求項６の集積回路。
【請求項９】
前記制御ユニットは、データが転送されるべき前記ハブのリソースの可用性を示す信号を送信することができる、請求項６の集積回路。
【請求項１０】
前記制御ユニットは、
同じデータの複数のコピーを異なるハブに送信するための論理回路を含む、請求項６の集積回路。
【請求項１１】
関数論理の２つ以上のコアと、
それぞれが、前記コアのうちの少なくとも１つと隣接する２つ以上のローカル受信／送信ユニットとを含む集積回路であって、前記隣接する受信／送信ユニットは、同時に前記コアのうちの１つ以上とデータをやり取りすることができる、集積回路。
【請求項１２】
それぞれが、前記ローカル受信／送信ユニットのうちの少なくとも１つと隣接する２つ以上の中間受信／送信ユニットを更に含み、前記中間受信／送信ユニットは、同時に前記コアのうちの１つ以上とデータをやり取りすることができる、請求項１１の集積回路。
【請求項１３】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
同じデータの複数のコピーを異なる隣接中間受信／送信ユニットに送信することのできる論理回路を含む、請求項１２の集積回路。
【請求項１４】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記コアのうちの１つから、前記コアに送信されるように試みられているデータのコピーが既に受信されたことを示すステール信号を受信することのできる論理回路を含む、請求項１３の集積回路。
【請求項１５】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記ステール信号を受信したことに応答して前記コアに転送されるべきデータを削除することのできる論理回路を含む、請求項１４の集積回路。
【請求項１６】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記１つ以上の隣接中間受信／転送ユニットからデータを受信して格納するための論理回路を含む、請求項１３の集積回路。
【請求項１７】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記ローカル隣接受信／送信ユニットにデータを転送しようと試みている隣接中間受信／転送ユニットに前記データが古くなっていること（ステールであること）を示すための論理回路を含む、請求項１６の集積回路。
【請求項１８】
前記中間隣接受信／送信ユニットのうちの１つ以上は、
前記ステール表示に応答して、関連するステール・データのうちのいずれかを削除することのできる論理回路を含む、請求項１７の集積回路。
【請求項１９】
前記ローカル受信／送信ユニットの各々は、
前記１つ以上の隣接するコアからデータを受信して格納することのできる論理回路を含む、請求項１８の集積回路。
【請求項２０】
前記中間受信／送信ユニットの各々は、
前記隣接ローカル受信／送信ユニットのうちの１つ以上からデータを受信して格納することのできる論理回路を含む、請求項１９の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路に関し、特に集積回路内に位置する種々のコア間でのデータ転送を容易にする方法及び装置に関する。
【背景技術】
【０００２】
半導体における技術的進歩の結果として、消費者はますます小型のより強力な装置を期待するようになった。これらの機能をサポートするために代表的な集積回路に存在する回路／機能ユニット（コア）の数は天文学的である。装置の数が莫大であるために、半導体産業は電力消費、熱放散、ノイズ、及び通信に関連する新しい問題を解決することを余儀なくされた。１つの関連する問題は、所望の機能を実行する種々のコアの間の通信を提供するために必要なワイヤの数である。過去においては、１つのコアから他のコアへの通信の配線は、ポイント・ツー・ポイント技術を用いて達成されていた。あいにく、密度が指数関数的に増大するので、ポイント・ツー・ポイント配線は限界に達しようとしている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従って、濃密にポイント・ツー・ポイント配線をするときに生じる問題に対処しながら１つのコアから他のコアへデータを転送することのできる方法及び装置を持つことは明らかな利益である。本発明は、その様な方法及び装置を提供する。
【課題を解決するための手段】
【０００４】
本発明は、集積回路内に位置する種々のコアの間の通信を提供する方法及び装置である。より具体的には、本発明は、指定された方法に従ってコアからの或いはコア間での通信を容易にして管理するためにハブ／ルータを使用する。
【０００５】
添付明細書と関連させて図面を参照することにより、本発明はより良く理解され、その数々の目的及び利点は当業者にとってより明らかになるであろう。
【発明を実施するための最良の形態】
【０００６】
本発明は、集積回路内に存在する種々のコアの間でデータを転送するためのシステム及び方法である。このシステム／方法は、種々のコアの間に戦略的に置かれているハブ／ルータを使用する。通信を提供するためのハブ／ルータの動作は図１と関連して詳しく説明される。
【０００７】
図１を参照すると、本発明の教示に従う集積回路２０内に存在する種々のコア１−５の間でデータを転送するためのハブ・ネットワーク１００の例を説明するブロック図が示されている。この特定の例では、ハブ・ネットワーク１００は、特定のデザインに従ってコア１−５間に通信経路を提供するように互いに接続された４つのハブ６−１０を含む。本発明の好ましい実施態様では、ハブは最初にコアから１クロック・サイクルの距離の中に置かれる（例えば、コア１及び４のためのハブ６−７と、コア３及び５のためのハブ９−１０と）。代わりの好ましい実施態様では、ハブはコア１−５の周波数の倍数で動作する。ハブ６−７の動作のために周波数がどの様に選択されるかに関わらず、それはコア１−５のタイミング要件を満たすのに充分であるべきである。種々のコア間でデータを充分に転送するために必要なハブの数がコア間の距離と、冗長経路の所望の数と、システム全体のデザインとに依存することにも留意するべきである。従って、この特定の例は、説明を容易にするために用いられているのであって、特定のシステム・インプリメンテーションにおいてサポートされ得るコアの配置或いは数に関しての限定であると見なされるべきではない。通信の提供に関わるハブ６−１０のコンポーネントは、図２と関連して詳しく説明される。
【０００８】
図２を参照すると、本発明の好ましい実施態様の教示に従う図１のハブ６を詳しく説明する略図が示されている。ハブ６はハブ７−１０を代表しており、従って、それに関して提供される検討はハブ７−１０にも同様に当てはまる。ハブ６は、受信／送信ユニット２０２と制御ユニット２０４とを含む。
【０００９】
受信／送信ユニット２０２は、隣接する他のハブ７−１０又は隣接するコア１−５とやり取りされるデータの受信、記憶、及び送信を行う。受信／送信ユニット２０２は、受信通信ライン２０６でデータを受信し、送信通信ライン２０８でデータを送信する。受信／送信ユニット２０２は、受信通信ライン２０６を介して受信されたデータを格納し、送信通信ライン２０８で送信されるデータを一時的に格納しておくためのＦＩＦＯ（先入れ先出しメモリ・メカニズム）を含む。明瞭性を得るために、受信通信ライン２０６と送信通信ライン２０８とは別々のものとして示されている。しかし、これらの通信ライン２０６−２０８がタギング方式と共有バス等を用いて実装され得るということに留意するべきである。制御ユニット２０４は、後述されるように受信／送信ユニット２０２によるデータの受信及び送信を管理する。
【００１０】
制御ユニット２０４は、他の隣接するハブ（７−８）及びコア１−２と種々の信号をやり取りする。制御ユニット２０４によるそれらの信号の受信及び送信は、該信号の各々のための個別通信ラインを用いても、また所望のバス・タイプ構造と組み合わせてタギング方法を用いても、成し遂げられ得る。隣接するハブ（７−８）及び隣接するコア（１−２）の各々のために、制御ユニット２０４は、ステータス／フラッシュ信号２０４ａとハブ選択信号２０４ｃとを受信し、選択信号２０４ｂとハブ・ステータス／フラッシュ信号２０４ｄとを送信する。種々の信号、制御ユニット２０４、及び受信／送信ユニット２０２の間の相互作用は図３と関連して説明される。
【００１１】
図３を参照すると、本発明の教示に従って隣接するハブ６−１０及びコア１−５からデータを受信するためにハブ６−１０により使用される方法を説明するフローチャートが示されている。説明を容易にし、明瞭性を得るために、ハブ７−１０の各々で該方法がどのように実行されるかを示す例としてハブ６（図２）が用いられる。データを受信する前に、ハブ６は制御ユニット２０４を介して隣接するハブ（７−８）又はコア（１−２）のうちの１つからハブ選択信号２０４ｃを受信する（ステップ３０２）。ハブ選択信号２０４ｃに応答して、制御ユニット２０４は、リクエストされたデータを受信するのに充分なリソース（例えばメモリ）をＦＩＦＯが持っているか否か確かめるために受信／送信ユニット２０２と通信する（ステップ３０４）。リクエストされたデータを受信して処理するのに充分なリソースをＦＩＦＯが持っていなければ、制御ユニット２０４は、ハブ６が現在ビジーであるという表示を、ハブ・ステータス／フラッシュ信号２０４ｄを介して、リクエストをしている隣接するハブ７−８（ステップ３０４）又はコア（１−２）（ステップ３０４）に送る（ビジー信号の処理は、ハブによるデータの送信と関連して説明される（すなわち、図４））。しかし、リクエストされたデータを受信して処理するのに充分なリソースをＦＩＦＯが持っていれば、制御ユニット２０４は、リクエストされたデータをハブ６が受信できるという表示をハブ・ステータス／フラッシュ信号２０４ｄを介して送る。すると、隣接するハブ（７−８）又はコア（１−２）は、図４と関連して記述されるプロセスに従ってデータを転送し始める。
【００１２】
本発明の好ましい実施態様では、同じデータを同時に送信するために複数のハブが使用され得る（例えば、そのデータの、コア１−５のうちの１つによる受信が重要であるとき）ことに留意するべきである。一般に、データの送信は、個々に転送されて受信時に再組み立てされ得るコンポーネントにデータを分割するためにパケット又は他の同様のタイプのデータ構造を用いることによって成し遂げられ得る。従って、同じデータの複数の送信があるときには、宛先コア１−５は、同じデータの異なるセットを識別して古くなったデータ（ステール・データ）を何時捨てるか識別できなければならない。本発明は、データの特定のセットを特定するために一意の識別子を使用することによってこの要件を成し遂げ、データの各パケットに（例えばヘッダに）、それが各々の前のハブ６−１０により受信された時刻に従ってタイム・スタンプを添付する。データの複数のセットが宛先コア１−５への途上にある場合、宛先コア１−５は、それぞれが受信した最初のパケットを調べ、一意の識別子及びタイム・スタンプを記録する。同じデータのその後に受信された重複セット（最初に受信されたパケットのそれとは異なる一意の識別子を有するパケット）は無視され、送信側ハブ６−１０にフラッシュ信号が送られる。フラッシュ信号の処理は以下で説明される。
【００１３】
隣接するハブ（６−１０）又はコア（１−５）から前にフラッシュ信号が受信されていたならば、制御ユニット２０４は、受信された第１パケットの中の一意識別子を比較し（ステップ３０６）、もしそれが該フラッシュ信号中の識別子のそれと一致するならば、データを送信している隣接するハブ７−８にフラッシュ信号が送られ、該フラッシュ識別子を有する新たに受信されたデータは無視される（ステップ３０８）。フラッシュ信号の受信の処理は、ハブ６−１０によるデータの送信に関する図４の記述と関連して説明される。
【００１４】
しかし、最初に受信されたパケットの中の識別子がフラッシュ識別子のそれと一致しなければ、そのデータ／パケットはＦＩＦＯに格納される（ステップ３１４）。もしハブ６がハブ選択信号２０４ｃを介してなお選択されているならば（すなわち、まだ他にあるデータが受信されなければならないならば）、処理はステップ３０２に進んで、そのポイントから該方法を繰り返す（ステップ３１６）。しかし、ハブ６が選択されていなければ、ハブ６が再び選択されるまで処理は終了する（ステップ３１８）。
【００１５】
図４を参照すると、本発明の教示に従って前に受信されたデータを送信するためにハブ６−１０により使用されるステップを説明するフローチャートが示されている。もしデータがＦＩＦＯ中に存在するならば（ステップ４０２）、制御ユニット２０４により、該データが優先順位付け方式インジケータを含んでいるか否かを判定するために該データを調べることから処理が開始される。優先順位付け方式インジケータは、例えば、処理に関してのそのデータの優先権を順位付けするパケットのヘッダ内の表示であり得る。より具体的には、優先権は順位付けされ得、その指定された順位に依存して、ハブ６−１０はデータが宛先コア１−５に最も有利な態様で到達するように同じデータの複数のコピーを送信する能力を有する。本発明の好ましい実施態様では、データが所定のランク／レベルの優先順位付け方式を有するとき、送信側ハブ６−１０は、そのデザイン・インプリメンテーションに依存して隣接するハブ６−１０の全て又はそのうちの幾つかに複数のコピーを送信する（ステップ４０４）。
【００１６】
制御ユニット２０４は、選択信号２０４ｂを介してデータを受信する１つ又は複数の隣接するハブ６−１０を選択する（この信号は各々の隣接するハブ６−１０に送信される）（ステップ４０６−４０６ｎ）。１つ又は複数の隣接するハブ６−１０の選択は、加重判定に基づくこともできる。例えば、データ送信の最初の試みは第１の好ましい隣接するハブ６−１０に対して行われる。もしその隣接するハブ６−１０がビジーであったならば、データを送信する試みは次の好ましい隣接するハブ６−１０に対して行われ、以降同様に行われ得る。
【００１７】
１つ以上の隣接するハブ６−１０又はコア１−５からステータス／フラッシュ信号２０４ａを受信すると、制御ユニット２０４は、選択された隣接ハブ６−１０が使用可能であるか否か判定するためにそのステータス・フラッシュ信号を調べる。もしステータス／フラッシュ信号２０４ａが選択された隣接するハブ６−１０が現在使用不能であることを示しているならば（ステップ４０８）、使用される特定の方式に依存して、制御ユニット２０４は、所定期間待ってから選択信号２０４ｂを介して隣接するハブ６−１０を再び選択しようと試みるか、或いは選択信号２０４ｂを用いて再び次の加重されている隣接ハブ６−１０を試みる（ステップ４１０）。次の加重ハブ６−１０を使用する試みは、垂直経路（図示されている）を下って進んで各加重ハブ６−１０を次々に試み、或いはステップ４０６の場合と同様に水平に（平行に）進んで同じデータの複数のセットを発進させることができる（図示されていない）。
【００１８】
もし制御ユニット２０４が選択された隣接するハブ６−１０が使用可能であるという表示を受け取ったならば（ステップ４１２）、制御ユニット２０４は送信ライン２０８を介してデータを（パケット等で）隣接するハブ６−１０又はコア１−５に送信する。パケットを送信した後、制御ユニット２０４は、隣接するハブ６−１０又はコア１−２に転送されるべき関連データが他にあるか否かを判定する（ステップ４１４）。
【００１９】
このとき、制御ユニット２０４がステータス／フラッシュ信号２０４ａを介して隣接するハブ６−１０又はコア１−５からフラッシュ表示を受け取り得るということがあり得る。フラッシュ信号は前述されたように送信されるデータの特定のインスタンス／セットを特定するために使われるインジケータと一致するのに充分なインジケータを含むであろう。
【００２０】
フラッシュ信号が受信されたならば、制御ユニット２０４は、ＦＩＦＯにまだペンディングしている該フラッシュ信号で特定されているデータをフラッシュする。それに加えて、現在特定されているステール・データの追加部分をいずれかの先行するハブ６−１０が送信したならばフラッシュ識別子は所定期間保存される（ステップ４１４）。送信されるべき関連データがもう無いか或いはフラッシュ信号の処理が完了したならば、プロセスはステップ４１６で終了する。
【００２１】
本発明の作用及び構成は以上の記述から明らかであると思われる。図示され記述された方法及びシステムは好ましいものとして述べられているが、請求項で定義されている本発明の範囲から逸脱せずに種々の変更または改変あるいはその両方をなし得ることは明白であろう。
【図面の簡単な説明】
【００２２】
【図１】本発明の教示に従う集積回路に存在する種々のコアの間でデータを転送するためのハブ／ルータ・ネットワークの例を示すブロック図である。
【図２】本発明の好ましい実施態様の教示に従う図１のハブのうちの１つを詳しく示す略図である。
【図３】本発明の教示に従って隣接するハブ及びコアからデータを受け取るために図１のハブによって使用される方法を示すフローチャートである。
【図４】本発明の教示に従って前に受け取られたデータを送信するためにハブ６−１０により使用されるステップを示すフローチャートである。
【図１】
2009531771.tif 000003
【図２】
2009531771.tif 000004
【図３】
2009531771.tif 000005
【図４】
2009531771.tif 000006
【手続補正書】
【提出日】平成20年9月26日(2008.9.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
それぞれが、所望の機能を実行することのできる複数のコアと、
それぞれが、１つからデータを受信し送信することのできる複数のハブとを含む集積回路であって、前記コアは前記コアのうちの他の一つのコアである宛先へのデータ転送を開始する、集積回路。
【請求項２】
前記複数のハブは、
それぞれが、前記コアのうちの少なくとも１つと関連付けられているハブの第１セットを含み、前記第１ハブの各々はそれぞれに関連付けられているコアとデータをやり取りすることができる、請求項１の集積回路。
【請求項３】
前記複数のハブは、
それぞれが、前記第１セットのハブのうちの少なくとも１つと関連付けられているハブの第２セットを含み、前記第２ハブの各々はそれぞれに関連付けられている第１ハブとデータをやり取りすることができる、請求項２の集積回路。
【請求項４】
前記複数のハブは、
それぞれが、前記第２ハブのうちの少なくとも１つと関連付けられているハブの第３セットを含み、前記第３ハブの各々はそれぞれに関連付けられている第２ハブとデータをやり取りすることができる、請求項３の集積回路。
【請求項５】
前記第１ハブ、前記第２ハブ及び前記第３ハブの各々は、
データを受信し転送することのできる受信／転送ユニットと、
前記受信／転送ユニットを介するデータの受信及び転送を制御し、データ完全性を維持するために種々の信号を受信し送信することのできる制御ユニットと、
を含む、請求項４の集積回路。
【請求項６】
前記受信／転送ユニットはデータを格納し送信するためのＦＩＦＯを含む、請求項５の集積回路。
【請求項７】
前記制御ユニットは、
データが転送されるべき前記ハブのうちの１つが使用可能であるか否かを示す信号を含む、請求項６の集積回路。
【請求項８】
前記制御ユニットは、
データが転送されるべき前記コアのうちの１つがどうかを示す信号を含む、請求項６の集積回路。
【請求項９】
前記制御ユニットは、データが転送されるべき前記ハブのリソースの可用性を示す信号を送信することができる、請求項６の集積回路。
【請求項１０】
前記制御ユニットは、
同じデータの複数のコピーを異なるハブに送信するための論理回路を含む、請求項６の集積回路。
【請求項１１】
関数論理の２つ以上のコアと、
それぞれが、前記コアのうちの少なくとも１つと隣接する２つ以上のローカル受信／送信ユニットとを含む集積回路であって、前記隣接する受信／送信ユニットは、同時に前記コアのうちの１つ以上とデータをやり取りすることができる、集積回路。
【請求項１２】
それぞれが、前記ローカル受信／送信ユニットのうちの少なくとも１つと隣接する２つ以上の中間受信／送信ユニットを更に含み、前記中間受信／送信ユニットは、同時に前記コアのうちの１つ以上とデータをやり取りすることができる、請求項１１の集積回路。
【請求項１３】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
同じデータの複数のコピーを異なる隣接中間受信／送信ユニットに送信することのできる論理回路を含む、請求項１２の集積回路。
【請求項１４】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記コアのうちの１つから、前記コアに送信されるように試みられているデータのコピーが既に受信されたことを示すステール信号を受信することのできる論理回路を含む、請求項１３の集積回路。
【請求項１５】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記ステール信号を受信したことに応答して前記コアに転送されるべきデータを削除することのできる論理回路を含む、請求項１４の集積回路。
【請求項１６】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記１つ以上の隣接中間受信／転送ユニットからデータを受信して格納するための論理回路を含む、請求項１３の集積回路。
【請求項１７】
前記ローカル隣接受信／送信ユニットのうちの１つ以上は、
前記ローカル隣接受信／送信ユニットにデータを転送しようと試みている隣接中間受信／転送ユニットに前記データが古くなっていること（ステールであること）を示すための論理回路を含む、請求項１６の集積回路。
【請求項１８】
前記中間隣接受信／送信ユニットのうちの１つ以上は、
前記ステール表示に応答して、関連するステール・データのうちのいずれかを削除することのできる論理回路を含む、請求項１７の集積回路。
【請求項１９】
前記ローカル受信／送信ユニットの各々は、
前記１つ以上の隣接するコアからデータを受信して格納することのできる論理回路を含む、請求項１８の集積回路。
【請求項２０】
前記中間受信／送信ユニットの各々は、
前記隣接ローカル受信／送信ユニットのうちの１つ以上からデータを受信して格納することのできる論理回路を含む、請求項１９の集積回路。