(57)【要約】【課題】  オーバーヘッドが低減されたデータ通信技術を提供する。【解決手段】  データ処理装置は、データ処理をそれぞれ行う複数のモジュールと、前記複数のモジュール間のデータ伝送を中継する、入力ポート及び出力ポートを備えた複数のルータと、前記複数のルータの各々に制御信号を出力して、ルータの経路選択を制御する制御手段と、を備え、前記複数のルータの各々は、入力された前記制御信号の値を利用して、データ送出に用いる出力ポート及び出力タイミングを決定する決定手段を備える。【選択図】  図６
2011151786.tif 000002
【特許請求の範囲】
【請求項１】
データ処理をそれぞれ行う複数のモジュールと、
前記複数のモジュール間のデータ伝送を中継する、入力ポート及び出力ポートを備えた複数のルータと、
前記複数のルータの各々に制御信号を出力して、ルータの経路選択を制御する制御手段と、
を備え、
前記複数のルータの各々は、入力された前記制御信号の値を利用して、データ送出に用いる出力ポート及び出力タイミングを決定する決定手段を備える
ことを特徴とするデータ処理装置。
【請求項２】
前記決定手段は、データ送出に用いる前記出力ポート及び出力タイミングを決定する際に、当該データが入力された入力ポートの識別情報を利用することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記複数のルータの各々は、前記入力ポートの識別情報及び前記制御信号の値と、前記出力ポートの識別情報及び前記出力タイミングと、の対応関係を示す対応情報を記憶する記憶手段をさらに備え、
前記決定手段は、前記対応情報を参照して、データ送出に用いる前記出力ポート及び出力タイミングを決定する
ことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記制御手段は、前記複数のルータの各々に対して共通の制御信号を出力することを特徴とする請求項１から３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記制御手段は、前記制御信号として、予め設定された複数の値を順に所定のタイミングで繰り返し出力することを特徴とする請求項１から４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記決定手段は、入力された前記制御信号の値が所定値の場合に、データ伝送の中継を停止することを特徴とする請求項１から５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記モジュールと前記ルータとの間のスループットの違いを吸収するスループット緩衝手段をさらに備えることを特徴とする請求項１から６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記モジュールと前記ルータとの間のビット幅の違いを吸収するビット幅緩衝手段をさらに備えることを特徴とする請求項１から７のいずれか１項に記載のデータ処理装置。
【請求項９】
データ処理をそれぞれ行う複数のモジュールと、
前記複数のモジュール間のデータ伝送を中継する、入力ポート及び出力ポートを備えた複数のルータと、
を備えたデータ処理装置の制御方法であって、
制御手段が、前記複数のルータの各々に制御信号を出力して、ルータの経路選択を制御する制御工程と、
決定手段が、前記複数のルータの各々において、入力された前記制御信号の値を利用して、データ送出に用いる出力ポート及び出力タイミングを決定する決定工程と、
を有することを特徴とするデータ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置及びその制御方法に関し、特に、ネットワークオンチップシステムを用いたデータ処理装置においてデータ通信効率を向上させるための技術に関する。
【背景技術】
【０００２】
ＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）におけるＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）コア間のデータ通信技術として、ネットワークオンチップが知られている（非特許文献１を参照）。これは、コンピュータネットワークの発想をチップ内のモジュール間通信に応用した技術である。
【０００３】
ネットワークオンチップを用いたシステムは、一般的に複数のデータ処理モジュール（ＩＰコア）と複数のルータとを備え、各データ処理モジュールはルータを介してデータを授受する。データの通信経路はファームウェアなどから設定することができる。これにより、データを処理するデータ処理モジュールの順序などを動的に変更できるため、柔軟性の高いデータ処理装置を実現可能となる。また、ルータを介して通信をするので、データ処理モジュールと他のデータ処理モジュールとを網羅的に信号線で直結する必要がない。このため、配線の削減が可能である。更に、データ処理モジュールの追加が容易であるので、拡張性にも優れている。
【０００４】
上記のルータは複数の入力ポートと複数の出力ポートとを具備し、各入力ポートへ入力されたデータに対して適切な出力ポートを選択して出力する。従来、ルータはデータ出力先の選択に、受け取った通信データに付随する情報を参照するのが一般的であった。例えば非特許文献１の１０章や非特許文献２に記載されている構成では、送信先を識別するためのアドレス情報を通信データに付加し、このアドレス情報を基にルーティングを行う。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ａｘｅｌ  Ｊａｎｔｓｃｈ  ａｎｄ  Ｈａｎｎｕ  Ｔｅｎｈｕｎｅｎ，“Ｎｅｔｗｏｒｋｓ  ｏｎ  Ｃｈｉｐ”，  ＵＫ，  Ｋｌｕｗｅｒ  Ａｃａｄｅｍｉｃ  Ｐｕｂｌｉｓｈｅｒｓ．
【非特許文献２】Ｗｏｌｆ−Ｄｉｅｔｒｉｃｈ  Ｗｅｂｅｒ，“Ｅｎａｂｌｉｎｇ  Ｒｅｕｓｅ  ｖｉａ  ａｎ  ＩＰ  Ｃｏｒｅ−ｃｅｎｔｒｉｃ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｐｒｏｔｏｃｏｌ：  Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ”，  Ｓｏｎｉｃｓ  Ｉｎｃ．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の従来の構成では通信データに付加した情報の分だけ通信しなければならない情報の情報量が増える。そのため、データ通信のオーバーヘッドとなる。そこで、本発明はこのオーバーヘッドが低減されたデータ通信技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明によるデータ処理装置は以下の構成を備える。即ち、
データ処理をそれぞれ行う複数のモジュールと、
前記複数のモジュール間のデータ伝送を中継する、入力ポート及び出力ポートを備えた複数のルータと、
前記複数のルータの各々に制御信号を出力して、ルータの経路選択を制御する制御手段と、
を備え、
前記複数のルータの各々は、入力された前記制御信号の値を利用して、データ送出に用いる出力ポート及び出力タイミングを決定する決定手段を備える。
【発明の効果】
【０００８】
本発明によれば、オーバーヘッドが低減されたデータ通信技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】画像処理装置の構成例を示す図。
【図２】ルータの動作を説明する図。
【図３】仮想チャネルのマッピング例を説明する図。
【図４】ルータの動作を説明する図。
【図５】ルータの動作を説明する図。
【図６】ルータの構成例を示す図。
【図７】ルータの設定例を説明する図。
【図８】ルータの動作例を説明する図。
【図９】スロット制御部の構成例を示す図。
【図１０】ネットワークインタフェースの構成例を示す図。
【図１１】ネットワークインタフェースの動作例を説明する図。
【図１２】画像処理装置の動作例を説明する図。
【図１３】画像処理装置の動作例を説明する図。
【図１４】画像処理装置の設定例を説明する図。
【図１５】画像処理装置の構成例を示す図。
【図１６】画像処理装置の動作例を説明する図。
【図１７】画像処理装置の構成例を示す図。
【図１８】画像処理装置の構成例を示す図。
【図１９】ルータの構成例を示す図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００１１】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１２】
（処理概要）
図１に本発明の実施形態におけるデータ処理装置の構成例を示す。図１中、１００は本データ処理装置である。本実施形態では、データ処理装置１００の入力は画像データとする。入力された画像データに対し、各ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）コア２１０で動作モードに応じた画像処理を施して処理結果の画像を出力する。
【００１３】
ＩＰコア２１０は、例えば色空間変換モジュール、フィルタ演算モジュール、解像度変換モジュールなどである。これらのモジュールが画像を処理する順序は一意ではない。ルータ２３０が画像データを動的にルーティングすることで、動作モードに応じて処理順序を変更できるようにする。また、処理順序の異なる複数の画像データシーケンスを同時に処理できるようにする。
【００１４】
このような処理を実現するため、本実施形態に係るルータ２３０はデータを受け取ったタイミングを基にルーティングを行う。このタイミングは、スロット制御部２４０が生成する通信制御信号２４５により制御される。このため、例えば送信先アドレスなどの情報を画像データに付随させる必要がない。したがって、各要素間を繋ぐ信号線のビット幅全てを画像データの転送に利用できる。
【００１５】
ここで、上記のような制御を行うための動作原理について説明する。例えば図２のような三入力三出力のルータを考える。図２中、３５０はルータ２３０の入力ポートであり、３６０は出力ポートである。図示したように、入力ポート３５０−１から入力されたデータは全て出力ポート３６０−１へ出力する。また、入力ポート３５０−２から入力されたデータは全て出力ポート３６０−３へ出力する。また、入力ポート３５０−３から入力されたデータは全て出力ポート３６０−２へ出力する。このような場合、ルータ２３０は各入力ポートを識別する番号と各出力ポートを識別する番号との対応を取るテーブルがあれば問題なく処理できる。
【００１６】
しかしながら、例えば複数の画像データシーケンスの同時処理を考えると、入力ポート３５０−１から入力されたデータを、データ毎に出力ポート３６０−１と出力ポート３６０−２に振り分けるなどといった必要性が生じる。データ毎に出力ポートを適切に選択するには、従来の構成のようにデータに出力ポートを選択するための付加情報を付随させ、この付加情報を参照することで実現することもできる。しかし、本実施形態ではデータ入力のタイミングに有意性を持たせることでルーティングに必要な情報を得る。これにより、データ通信のオーバーヘッドを低減することができる。
【００１７】
ここで、各ポートの信号線を時間軸方向に分割し、それぞれを仮想的な通信チャネル（以下、仮想チャネルと呼ぶ）として考える。図３に四分割の場合における仮想チャネルの概念図を示す。図３中、３８１、３８２、３８３、３８４、３８５、３８６はそれぞれ仮想チャネルである。各仮想チャネルの通信のスループットは、例えば元のポートの１／４ずつとなる。通信制御信号２４５は各クロックサイクルにおける、有効な仮想チャネルを指し示す。すなわち、例えば通信制御信号２４５の値が”１”の時、仮想チャネルは３８１−１、３８２−１、３８３−１、３８４−１、３８５−１、３８６−１がそれぞれ有効である。通信制御信号２４５の値が”２”の時、仮想チャネルは３８１−２、３８２−２、３８３−２、３８４−２、３８５−２、３８６−２がそれぞれ有効である。通信制御信号２４５の値が”３”の時、仮想チャネルは３８１−３、３８２−３、３８３−３、３８４−３、３８５−３、３８６−３がそれぞれ有効である。通信制御信号２４５の値が”４”の時、仮想チャネルは３８１−４、３８２−４、３８３−４、３８４−４、３８５−４、３８６−４がそれぞれ有効である。以降では、このように通信制御信号の値によって区別したクロックサイクルの集合をスロットと呼ぶ。
【００１８】
図４および図５を用いて、上記の通信制御信号２４５による制御を説明する。図４は通信制御信号２４５が”１”のスロットを示し、図５は通信制御信号２４５が”２”のスロットを示している。このように、各スロットにおける有効な仮想チャネルのみを切り出して考えると、図２と同等となる。すなわち、入力ポートの識別番号（識別情報）および入力スロット（データが入力されたクロックサイクルにおける通信制御信号の値）によって、出力ポートを選択できることを意味する。ただし、出力ポートの接続先が別のルータである場合、データを出力したスロットによって更にその先へルーティングされるため、出力するスロットもまた適切に選択する必要がある。したがって、入力ポートの識別番号および入力スロット（データが入力されたクロックサイクルにおける通信制御信号の値）によって、出力ポートおよび出力スロット（出力するクロックサイクルにおける通信制御信号の値）を選択する。これにより、本実施形態に係るルーティングを実現できる。なお、本実施形態では、データの入力スロットはデータの入力タイミングに相当し、出力スロットはデータの出力タイミングに相当する。
【００１９】
この時、入力の仮想チャネルと出力の仮想チャネルとのマッピングは、図に示した例のように１対１である必要がある（使用しない仮想チャネルは開放でもよい）。例えば、１対多の接続（分岐）があるとすれば、出力先の選択に他の情報が必要であることを意味する。また、多対１の接続（統合）があるとすれば、データを同時に同じポートへ出力することになるので、データの衝突によるストールやデータの消失が生じる。逆に言えば、１対１の接続である時、入力データを所定の仮想チャネルに出力するだけであるため、送信先アドレスといったルーティングのための情報は不要であり、またデータの衝突がルータ内で生じないことを保証できる。
【００２０】
（データ処理装置の構成要素）
次に、図１中の各要素の概略を述べる。外部インタフェース２００は、図示していないメモリやプロセッサなどの外部モジュールと接続されている。画像処理パラメータや動作モード設定のための制御データ、および入力画素データ、出力画素データなどをこれらの外部モジュールとやり取りする。本実施形態では、一例として、入力画素データおよび出力画素データは、２４ビット（ＲＧＢ各８ビット）とする。
【００２１】
ネットワークインタフェース２２０は、各ＩＰコア２１０のプロトコルとルータ２３０のプロトコルとの差異、もしくは外部インタフェース２００のプロトコルとルータ２３０のプロトコルとの差異を吸収する。なお、以降ではネットワークインタフェース２２０とルータ２３０を合わせてネットワークノードと呼ぶ。
【００２２】
ネットワークノード間の信号線はいずれも双方向に接続されている。信号線のビット幅は８ビットとする。８ビットを越えるデータを授受する場合は、送信側ネットワークインタフェースで８ビット単位に分割し、受信側ネットワークインタフェースで復元する。また、ルータ２３０−１からルータ２３０−２へ、ルータ２３０−２からルータ２３０−３へと繋がる方向（すなわち、時計回りの方向）を順方向と呼ぶ。ルータ２３０−２からルータ２３０−１へ、ルータ２３０−１からルータ２３０−８へと繋がる方向（すなわち、反時計回りの方向）を逆方向と呼ぶ。
【００２３】
スロット制御部２４０は、データ処理装置１００内で共通の通信制御信号を生成する。本実施形態では、通信制御信号は”０”、”１”、”２”、”３”、”４”のいずれかの値を取るとして説明する。通信制御信号は全てのネットワークノードへ同時に入力され、ネットワークノード間の通信は通信制御信号に同期して行われる。なお、通信制御信号の値が”０”の時は全ての通信を一時的に止める。このように、本実施形態では、各ルータ２３０に対して共通の制御信号を出力するため、実装が容易である。
【００２４】
（ルータ）
次に、データ処理装置１００の各要素について詳説する。ルータ２３０は、複数のモジュール間のデータ伝送を中継するために、データの入力ポートおよび入力スロットごとに、データの出力ポートおよび出力スロットを処理開始前に設定可能な構成をとる。ルータ２３０の構成例を図６に示す。図６中、２４５はスロット制御部２４０で生成された通信制御信号、３００はルーティングテーブル（対応情報）、３１０はデマルチプレクサである。また、３２０はスイッチ、３３０はスロットレジスタ、３４０はマルチプレクサ、３５０は入力ポート、３６０は出力ポートである。
【００２５】
入力ポート３５０−１，２，３の入力ポート識別番号（識別情報）をそれぞれ”１”、”２”、”３”とする。出力ポート３６０−１，２，３の出力ポート識別番号（識別情報）をそれぞれ”１”、”２”、”３”とする。
【００２６】
ルーティングテーブル３００は、データが入力されたポートの入力ポート識別番号と入力スロット（データが入力されたクロックサイクルにおける通信制御信号２４５の値）とを入力とする。そして、データを出力するポートの出力ポート識別番号３０１と出力スロット３０２（データを出力するクロックサイクルにおける通信制御信号２４５の値）とを出力する。このように、ルーティングテーブル３００は、入力ポート及び入力スロットの識別情報と、出力ポート及び出力スロットの識別情報との対応関係を示す対応情報に該当し、予め記憶装置に記憶されている。なお、本実施形態では、入力スロットの識別情報は制御信号の値として特定される。
【００２７】
ルーティングテーブル３００の中身は処理開始前にファームウェアなどから設定する。この時、出力ポート識別番号と出力スロットの組合せが同じ複数のエントリが存在すると、前述した仮想チャネルのマッピングは多対１になる。そのため、出力ポート識別番号と出力スロットの組合せは排他である必要がある。
【００２８】
ルータ２３０の他の部分は、このルーティングテーブル３００を参照して、入力データを適切なポートから適切なタイミングで出力するための構成となっている。デマルチプレクサ３１０は、ルーティングテーブル３００を参照して求められた出力ポート識別番号３０１を基に、入力データを出力するスイッチ３２０を決定する。例えば、出力ポート識別番号３０１が”１”であればスイッチ３２０−１、出力ポート識別番号３０１が”２”であればスイッチ３２０−２、出力ポート識別番号３０１が”３”であればスイッチ３２０−３へ入力データを送る。
【００２９】
スイッチ３２０は、図６に示したように三つの入力と四つの出力を持つ。入力はそれぞれデマルチプレクサ３１０に接続されており、出力はそれぞれスロットレジスタ３３０内のレジスタに接続されている。スイッチ３２０は、ルーティングテーブル３００を参照して求められた出力スロット３０２を基に、入力データをスロットレジスタ３３０内の所定のレジスタへ格納する。
【００３０】
スロットレジスタ３３０はデータ四つ分（計３２ビット）を格納できるレジスタを備える。各レジスタは出力スロットが”１”、”２”、”３”、”４”の場合にそれぞれ対応しており、通信制御信号２４５がその値を指し示すまでは（すなわち、マルチプレクサ３４０に選択されて出力されるまでは）データを保持する。
【００３１】
マルチプレクサ３４０は、スロットレジスタ３３０のうち、通信制御信号２４５が指し示すスロットに対応するレジスタに格納されているデータを出力ポート３６０へ出力する。ただし、通信制御信号２４５の値が”０”の場合、出力ポート３６０は前サイクルでの値を維持する。
【００３２】
次に、ルータ２３０の動作について、例を用いて説明する。図７にルーティングテーブル３００の設定例を示す。図７中、ｉＰｏｒｔは入力ポート識別番号、ｉＳｌｏｔは入力スロット、ｏＰｏｒｔは出力ポート識別番号、ｏＳｌｏｔは出力スロットをそれぞれ示している。この例では、１番の入力ポートへ入力されたデータは、２番の出力ポートへルーティングされる。２番の入力ポートへ入力されたデータは、１番と３番の出力ポートへ分岐してルーティングされる。３番の入力ポートへ入力されたデータは３番の出力ポートへルーティングされる。図７のように、出力スロットｏＳｌｏｔは入力スロットｉＳｌｏｔの値によって切り替えられる。
【００３３】
この場合のタイミングチャート例を図８に示す。図８中、ｃｌｏｃｋはシステムクロック、ｓｌｏｔＣｔｒｌは入力スロットを示す通信制御信号２４５、ｉＰｏｒｔ（Ｎ）はそれぞれ入力ポート識別番号が（Ｎ）である入力ポートである。ｒｅｇＳｌｏｔ（Ｎ）−（Ｍ）はそれぞれスロットレジスタ３３０−（Ｎ）内における出力スロットが（Ｍ）の場合に対応するレジスタ、ｏＰｏｒｔ（Ｎ）はそれぞれ出力ポート識別番号が（Ｎ）である出力ポートである。ｄ♯（♯は１，２，３，．．．，Ａ，Ｂ，Ｃ，．．．，α，β，γ，．．．）はそれぞれ通信データを示している。ここで、♯は各データを区別するための記号である。
【００３４】
例えば、ｉＰｏｒｔ１に入力されたデータｄ１は、入力ポート識別番号が”１”で、入力スロットが”１”であるため、ルーティングテーブルを参照して出力ポート識別番号は２、出力スロットは２と求められる。したがって、デマルチプレクサ３１０−１によりスイッチ３２０−２に送られ、更にスイッチ３２０−２により、スロットレジスタ３３０−２内における出力スロットが”２”の場合に対応するレジスタに格納される。これは、図８中のｒｅｇＳｌｏｔ２−２に示されている。ｒｅｇＳｌｏｔ２−２に格納されたデータｄ１は、ｓｌｏｔＣｔｒｌの値が”２”のクロックサイクルでマルチプレクサ３４０−２によりｏＰｏｒｔ２へ出力される。
【００３５】
また、例えば同時に入力されたデータｄＢとデータｄαはどちらも出力ポート識別番号は”３”である。しかし、出力スロットが異なるため、データｄＢはｒｅｇＳｌｏｔ３−３へ格納され、データｄαはｒｅｇＳｌｏｔ３−４へ格納される。マルチプレクサ３４０−３は出力スロットに対応するレジスタｒｅｇＳｌｏｔ３−１，２，３，４の値を順次出力するので、ｄＢ、ｄαの順で出力される。このように、同一の出力ポートへ出力するデータであっても、異なる出力スロットを設定すれば、競合なく処理できる。
【００３６】
なお、図８に示したように、ｓｌｏｔＣｔｒｌが”０”であるクロックサイクルにおいては、入力データは無効である。また、出力データは次サイクルまで保持される。
【００３７】
（スロット制御部）
スロット制御部２４０は通信制御信号２４５を生成し、ネットワークノード間の全通信を制御する。具体的には、複数のルータの各々に制御信号を出力して、ルータの経路選択を制御する。スロット制御部２４０の構成例を図９に示す。図９中、５００はストール信号、５１０はスロットテーブル、５２０はマルチプレクサである。
【００３８】
スロットテーブル５１０はＳ個のエントリを持つＬＵＴである。ストール信号５００がＯＦＦの時、ＬＵＴのポインタは１からＴ（１≦Ｔ≦Ｓ）までの値をクロックサイクルに合わせて繰り返しインクリメントし、ストール信号５００がＯＮの時、ＬＵＴのポインタは前の値を維持する。ここで、Ｔはデータ処理装置１００の動作周期をクロック単位で示す値である。各エントリの中身およびＴは例えばファームウェアによりあらかじめ設定する。
【００３９】
マルチプレクサ５２０では、ストール信号５００がＯＦＦの時、ＬＵＴのポインタが指し示すエントリの値を出力し、ストール信号５００がＯＮの時、”０”を出力する。ストール信号５００は、例えば外部インタフェース２００が外部モジュールへデータを出力できない時、ＯＮにする。これにより、データ処理装置１００内の通信を全て一時的に止めることができる。このようにして、入力された制御信号の値が所定値の場合に、ルータ２３０に、データ伝送の中継を停止させることができる。
【００４０】
以上により、ストール信号５００がＯＦＦである通常動作時、通信制御信号２４５は周期Ｔサイクルで所定のパターンを繰り返す。したがって、各スロットの値がＴ以下のエントリに格納されている頻度は、各スロットのスループットを決定する。例えば、Ｔ＝４であり、スロットテーブル５１０に”１”、”２”、”３”、”４”の順で格納されているとすれば、スロット１〜４のスループットはそれぞれ１／４［Ｂｙｔｅ／ｃｙｃｌｅ］となる。例えば、Ｔ＝６であり、スロットテーブル５１０に”１”、”２”、”３”、”１”、”２”、”４”の順で格納されているとすれば、スロット１〜４のスループットはそれぞれ１／３、１／３、１／６、１／６［Ｂｙｔｅ／ｃｙｃｌｅ］となる。
【００４１】
また、前述したようにルータ２３０の動作は通信制御信号２４５に同期している。そのため、上記通信制御信号２４５の周期性により、ルータ２３０もまた周期Ｔサイクルで動作する。これにより、各ルータ２３０において全データが問題なく処理できるようにルーティングテーブル３００などを設定するには、一周期分のデータのみを考慮するだけでよい。このようにして、スロット制御部２４０は、制御信号として、予め設定された複数の値を順に所定のタイミングで繰り返し出力する。したがって、スロット制御部２４０は、図９のように単純な構成で容易に実装することが可能である。
【００４２】
（ネットワークインタフェース）
ネットワークインタフェース２２０は、ルータ２３０とＩＰコア２１０との間でビット幅やスループットの差異を吸収し、またルータ２３０へのデータ送出タイミングを調整する。ネットワークインタフェース２２０の構成例を図１０に示す。図１０中、４１０は統合部、４３０はＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ，  Ｆｉｒｓｔ−Ｏｕｔ）、４４０は分割部、４６０はタイミング調整部である。
【００４３】
ルータ２３０からネットワークインタフェース２２０へ入力されたデータは、まず統合部４１０へ送られる。統合部４１０では、入力データを必要に応じて複数回分蓄積し、ＩＰコア２１０へ入力する形式へとまとめる。例えば、ＩＰコア２１０への入力は画素データ２４ビットおよび属性情報８ビットで計３２ビットであるとする。これらのデータは他のＩＰコア２１０からルータ２３０を介して８ビットずつ順次入力される。この場合、ルータ２３０から入力されたデータを統合部４１０で４回分蓄積し、入力形式に統合してＦＩＦＯ４３０へ渡す。
【００４４】
ＦＩＦＯ４３０では、ＩＰコア２１０への入力スループットの変動を吸収する。ここで、入力スループットの変動とは、ＩＰコア２１０へデータを入力できる間隔がＩＰコアの内部状態によって変化することを意味している。本実施形態では、入力スループットの変動を時間方向に平均化することにより、ネットワークインタフェース２２０への入力スループットは変動がないとして取り扱うことができるようにする。動作例を後で説明する。
【００４５】
分割部４４０では、ＩＰコア２１０が出力するデータを分割し、ルータ２３０が扱うデータ形式に変換する。例えば、ＩＰコア２１０が出力するデータが１６ビットであるとすれば、データを転送単位である８ビットごとに分割し、２回に分けてタイミング調整部４６０へ送る。
【００４６】
タイミング調整部４６０では、通信制御信号２４５の値が、あらかじめ設定された出力スロットと一致する場合にデータを出力する。一致しない場合は一致するまでデータを一時的に蓄積する。この出力スロットは、例えばファームウェアにより処理開始前に設定しておく。ネットワークインタフェース２２０からのデータを受け取るルータ２３０では、どのスロットでデータが入力されたかによってデータの宛先が決まる。よってこの出力スロットの値は、隣接するルータ２３０のルーティングテーブルに合わせる必要がある。
【００４７】
このように、ＦＩＦＯ４３０及びタイミング調整部４６０は、モジュールとルータとの間のスループットの違いを吸収するスループット緩衝手段として機能する。また、統合部４１０及び分割部４４０は、モジュールとルータとの間のビット幅の違いを吸収するビット幅緩衝手段として機能する。
【００４８】
入力スループットの変動の吸収について説明する。例えば、ＩＰコア２１０として解像度変換モジュールを考える。出力スループットは１／２［ｐｉｘｅｌ／ｃｙｃｌｅ］で一定であるとする。画素の入力順序および出力順序はラスタ順とし、また縦方向および横方向の倍率はそれぞれ二倍とする。この時、画素数は入力の四倍になるので入力スループットは平均１／８［ｐｉｘｅｌ／ｃｙｃｌｅ］となる。ただし、一行の入力データに対し、画素数が二倍となった行が出力され、その後もう一行出力されるため、入力スループットは出力一行ごとに異なる。ＦＩＦＯ４３０は入力データをバッファリングし、この入力スループットの変動を隠蔽する。
【００４９】
ネットワークインタフェース２２０の動作を示すタイミングチャートの例を図１１に示す。図１１中、ｃｌｏｃｋ  はシステムクロック、ｉｎｐｕｔ  ＮＩ  はルータ２３０からネットワークインタフェース２２０への入力、ｉｎｐｕｔ  ＩＰ  はＩＰコア２１０への入力、ｏｕｔｐｕｔ  ＩＰ  はＩＰコア２１０からの出力をそれぞれ示している。図１１では各信号の値が  Ｈｉｇｈ  の時にデータの入力もしくは出力があることを示している。また、”Ｙ−ｔｈ  ｌｉｎｅ  ＠Ｚ”  はデータが画像中においてＹ行目であり、そのスループットがＺ［ｐｉｘｅｌ／ｃｙｃｌｅ］であることを示している。入力画像中のＰ行目（図１１中、６００）の入力に対し、出力画像中のＱ行目（図１１中、６２０）と（Ｑ＋１）行目（図１１中、６３０）が出力される場合、（Ｑ＋１）行目の出力時には新たな入力データは必要ない（図１１中、６１０）。このため、ＩＰコア２１０への入力としては、スループットが１／４［ｐｉｘｅｌ／ｃｙｃｌｅ］の行と、それと同程度のサイクル数のブランク期間とが交互に必要となる。
【００５０】
このような入力スループットの変動を吸収するため、ＦＩＦＯ４３０では入力一行分を保持して遅延させる。すなわち、ＩＰコアへの入力がＰ行目である時（図１１中、６００）、ＦＩＦＯ４３０では（Ｐ＋１）行目の入力をバッファリングする（図１１中、６４０）。これにより、スループットが１／８［ｐｉｘｅｌ／ｃｙｃｌｅ］の行が連続する  ｉｎｐｕｔ  ＮＩ  を、スループットが１／４［ｐｉｘｅｌ／ｃｙｃｌｅ］の行とブランク期間が交互に必要な  ｉｎｐｕｔ  ＩＰ  へ変換し、ＩＰコア２１０へ供給する。ｉｎｐｕｔ  ＮＩ  は入力スループットに変動がないので、ネットワークインタフェース２２０は入力スループットの変動がないモジュールとなる。
【００５１】
（動作例）
次に、本データ処理装置１００の動作例を説明する。ルータ２３０の入力ポート識別番号１の入力ポートおよび出力ポート識別番号１の出力ポートは順方向に隣接するルータ２３０と接続されている。同様に、入力ポート識別番号２の入力ポートおよび出力ポート識別番号２の出力ポートは逆方向に隣接するルータ２３０と接続されている。入力ポート識別番号３の入力ポートおよび出力ポート識別番号３の出力ポートはネットワークインタフェース２２０と接続されている。
【００５２】
既述したように、本データ処理装置１００内の各ネットワークノード間の通信は、スロット制御部２４０が生成する通信制御信号２４５に同期して行われる。よって、各スロットの周期が各ネットワークノードの処理性能を超過すると、データの一部消失といった不具合を招く可能性がある。そのため、各ＩＰコア２１０の処理スループットと処理順序とを勘案して、適切にスロットテーブル５１０の中身を設定する必要がある。
【００５３】
例えば、各ＩＰコア２１０の入力スループット、出力スループット、および処理順序が図１２に示す通りであるとする。このときのデータの流れを図１３に示す。１／６［ｐｉｘｅｌ／ｃｙｃｌｅ］のスループットで外部インタフェース２００からデータがデータ処理装置１００内に入力されたとする。この場合、ＩＰコア２１０−２、ＩＰコア２１０−４、ＩＰコア２１０−３、ＩＰコア２１０−５、ＩＰコア２１０−６、ＩＰコア２１０−７、ＩＰコア２１０−８でそれぞれ順番に処理される。ＩＰコア２１０−８ではスループット１／４［ｐｉｘｅｌ／ｃｙｃｌｅ］で出力され、外部インタフェース２００からデータ処理装置１００外に出力される。
【００５４】
この場合、スロット制御部２４０におけるスロットテーブル５１０のエントリには順に”１”、”２”、”３”、”４”を設定し、Ｔ＝４として通信制御信号２４５を生成する。このようにすることで、ストール信号５００がＯＦＦの時、通信制御信号２４５は”１”、”２”、”３”、”４”を周期的に繰り返す。すなわち、各スロットはそれぞれスループット１／４［Ｂｙｔｅ／ｃｙｃｌｅ］として実現される。一画素は２４ビットであり、また一転送単位は８ビットなので、一画素の転送には三回の転送が必要となる。すなわち、各スロットのスループットは１／１２［ｐｉｘｅｌ／ｃｙｃｌｅ］である。よって、外部インタフェース２００からＩＰコア２１０−８まではスロットを二つ使用してデータを転送することで、１／６［ｐｉｘｅｌ／ｃｙｃｌｅ］のスループットを達成できる。ＩＰコア２１０−８から外部インタフェース２００へはスロットを三つ使用してデータを転送することで、１／４［ｐｉｘｅｌ／ｃｙｃｌｅ］のスループットを達成できる。
【００５５】
ここで、通信制御信号の値が”１”の時のスロットをスロット１（図１３中、ｓ１と表記）、通信制御信号の値が”２”の時のスロットをスロット２（図１３中、ｓ２と表記）などと呼ぶこととする。例えば、ネットワークインタフェース２２０−１からネットワークインタフェース２２０−３までのデータパスではスロット１およびスロット３を使用してデータを転送している。ネットワークインタフェース２２０−３からルータ２３０−３までのデータパスではスロット２およびスロット４を使用している。これは、ルータ２３０−３における順方向出力のスロット１およびスロット３は既に使われているためである。ルータ２３０−４からネットワークインタフェース２２０−８までのデータパスではスロット１およびスロット３を使用している。ネットワークインタフェース２２０−８からネットワークインタフェース２２０−１まではスロット１、スロット２、およびスロット３を使用している。
【００５６】
このようなルーティングを実現するためのルータ２３０内のルーティングテーブルの設定例を示す。ルータ２３０−１では、例えば図１４（ＲＴ１）のテーブルのように設定する。これにより、順方向（すなわち、ルータ２３０−８）から入力されたスロット１、２、３のデータに対し、出力スロット１、２、３を用いて順次ネットワークインタフェース２２０−１へルーティングする。また、ネットワークインタフェース２２０−１から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順方向へ順次出力する。
【００５７】
ルータ２３０−２，５，６，７では、例えば図１４（ＲＴ２）のテーブルのように設定する。これにより、順方向から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順次ネットワークインタフェース２２０−２，５，６，７へルーティングする。また、ネットワークインタフェース２２０−２，５，６，７から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順方向へ順次出力する。
【００５８】
ルータ２３０−３では、例えば図１４（ＲＴ３）のテーブルのように設定する。これにより、順方向（すなわち、ルータ２３０−２）から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順方向（すなわち、ルータ２３０−４）へ順次出力する。また、逆方向（すなわち、ルータ２３０−４）から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順次ネットワークインタフェース２２０−３へルーティングする。また、ネットワークインタフェース２２０−３から入力されたスロット２、４のデータに対し、出力スロット２、４を用いて順方向（すなわち、ルータ２３０−４）へ順次出力する。
【００５９】
ルータ２３０−４では、例えば図１４（ＲＴ４）のテーブルのように設定する。これにより、順方向（すなわち、ルータ２３０−３）から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順次ネットワークインタフェース２２０−４へルーティングする。また、順方向（すなわち、ルータ２３０−３）から入力されたスロット２、４のデータに対し、出力スロット１、３を用いて順方向（すなわち、ルータ２３０−５）へ順次出力する。また、ネットワークインタフェース２２０−４から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて逆方向（すなわち、ルータ２３０−３）へ順次出力する。
【００６０】
ルータ２３０−８では、例えば図１４（ＲＴ５）のテーブルのように設定する。これにより、順方向（すなわち、ルータ２３０−７）から入力されたスロット１、３のデータに対し、出力スロット１、３を用いて順次ネットワークインタフェース２２０−８へルーティングする。また、ネットワークインタフェース２２０−８から入力されたスロット１、２、３のデータに対し、出力スロット１、２、３を用いて順方向（すなわち、ルータ２３０−１）へ順次出力する。以上により、図１２に示した要求仕様を満たすことができる。
【００６１】
以上のように、本実施形態では、複数のルータ２３０の各々は、入力された制御信号の値を利用して、データ送出に用いる出力ポート及び出力タイミングを決定する。このため、伝送データにルーティングを制御するための情報を付加する必要がなく、効率的なデータ伝送が可能になる。
【００６２】
また、ルータ２３０はルーティングテーブル３００を参照して、データ送出に用いる出力ポート及び出力タイミングを決定する。このため、構成が複雑でなく、実装が容易である。
【００６３】
以上説明したように、本実施形態ではスロット制御部が生成する通信制御信号に同期して各ネットワークノード間の通信を行う。これにより、通信データにルーティングのための情報を付加することなくデータ通信を実現できる。したがって、オーバーヘッドが低減されたデータ通信技術の提供が可能である。
【００６４】
なお、本実施形態では、通信制御信号２４５の値が”０”の場合は通信を一時停止させ、他の値の場合は通常動作であったが、他にも特定用途のスロットがあってもよい。例えば、ＩＰコア２１０のパラメータを設定するためのスロットがあってもよい。また、本実施形態においては通信制御信号２４５の値を”０”、”１”、”２”、”３”、”４”の五種としたが、任意の数で実現できる。通信制御信号２４５の値をワンホットで表現してもよい。
【００６５】
さらに、ＩＰコア２１０はデータの通信制御信号の値をデータ処理時のパラメータとして用いてもよい。例えばフィルタ演算を行うＩＰコアで、スロットに応じてフィルタの係数を切り替えてもよい。
【００６６】
入力を画像データとし、ＩＰコア２１０で画像処理を行うとしたが、任意の処理内容で実現できる。例えば、音声データや文書データ、アプリケーション・プログラム等でもよい。
【００６７】
また、ルータ２３０におけるルーティングには入力ポート識別番号と入力スロットのみを用いたが、他の情報と併用してもよい。例えば、入力ポート識別番号および入力スロットに加え、データに付随する情報を参照してもよい。
【００６８】
また、ネットワークインタフェース２２０は上記で説明した構成に限らない。例えば、ＩＰコア２１０の入力スループットに変動が無ければＦＩＦＯ４３０は無くてもよい。ＩＰコア２１０のビット幅がルータ２３０のビット幅以下であれば統合部４１０および分割部４４０は無くてもよい。
【００６９】
前述の構成では八つのルータをリング状に接続したが、これに限られるわけではない。次に図１５のようなトポロジで構成した場合について説明する。図１５ではルータ２３０−２、３、４、５は四入力四出力であるが、其々の構成は前述の構成と同様である。図１５のルータは、スロット数がＡで、入力ポート数がＢ、出力ポート数がＣである場合、以下を備えている。
・エントリ数が（Ａ×Ｂ）であるルーティングテーブル。
・Ｃ出力のＢ個のデマルチプレクサ。
・Ｂ入力Ａ出力のＣ個のスイッチ。
・Ａ個分のデータが格納可能なＣ個のスロットレジスタ。
・Ａ入力のＣ個のマルチプレクサ。
【００７０】
この構成における動作例を図１６に示す。このように、二つの外部インタフェースから異なるデータシーケンスが同時に入力されても、各ルータ２３０のルーティングテーブルにおいて出力ポート番号と出力スロットの組合せが排他である限り問題なく処理できる。このように、図１５の構成ではトポロジを限定しないので、アプリケーションに応じて容易に構成を変更できる。
【００７１】
前述の説明ではＩＰコア間でのデータ通信について説明したが、次にマルチプロセッサシステムに係る構成を説明する。構成例を図１７に示す。図１７中、８００はプロセッサである。プロセッサ８００は全て同じプロセッサでなくてもよい。
【００７２】
スロット制御プロセス８３０は、プロセッサ８００上で通信制御信号２４５を生成する関数である。画像処理プロセス８１０は、プロセッサ８００上で各種画像処理を行う関数である。ルーティングプロセス８２０は、プロセッサ８００上で隣接するプロセッサとデータを通信する関数である。データを受け取ったタイミングにおける通信制御信号２４５の値および通信データが入力されたポートに割り振られた入力ポート識別番号により、データの出力ポートおよびデータを出力するタイミングを決定する。ここでのポートとはハードウェアとして実装されたポートでもよいし、ソフトウェアで実装されたポートでもよい。以上のような構成により、データ通信を実現できる。
【００７３】
以上説明したように、マルチプロセッサシステムにおいても、通信のオーパヘッドを低減することができる。なお、マルチプロセッサの構成の上記実施形態で述べた構成に限らない。例えば、スロット制御プロセス８３０と画像処理プロセス８１０が同じプロセッサ上で動作してもよい。複数のスロット制御プロセス８３０が複数のプロセッサ上で並列に動作し、それらを同期する機構があってもよい。
【００７４】
前述の構成ではスロット制御部が通信制御信号を生成し、各ネットワークノードに配信した。このため、スロット制御部を中心として放射状に通信制御信号を配線する必要がある。よってネットワークノードの数が大きくなると、配線が困難になる可能性がある。本実施例では、各ネットワークノードがそれぞれ通信制御信号を自己生成する。
【００７５】
通信制御信号は通常、周期的であるため、各ネットワークノード間で同期が取れていれば（通信制御信号の値が同じであれば）、前述の構成と同等の機能を実現できる。ただし、通信を止める場合（すなわち通信制御信号の値を０とする場合）に用いるストール信号はネットワークノード間でリレーする。これにより、ストールのタイミングをも同期できるようにする。
【００７６】
構成例を図１８に示す。図示したように、ストール発行部９４０をリング状に接続されたルータ間の１ノードとして接続する。図中、縦縞の矢印はストール信号９５０の伝搬を示している。ストール信号はストール発行部９４０から１サイクルに１ノードずつ順番にリレーされていく。すなわち図１８の場合は、一番遠いネットワークインタフェース９２０−４および９２０−５まで５サイクルかかる。
【００７７】
ストールはネットワークノード間で同期させる必要があるため、ストール発行部９４０からストール信号が発行されてから５サイクル後に全通信を一時停止させる事とする。例えばルータ９３０−１はストール信号を受け取ってから５サイクル後に通信を一時停止させる。ルータ９３０−３はストール信号を受け取ってから３サイクル後に通信を一時停止させる。ネットワークインタフェース９２０−４はストール信号を受け取って次のサイクルで通信を一時停止させる。このようにする事でストールを同一のタイミングとする事ができる。
【００７８】
図１９にルータの構成例を示す。図示したように、この場合ネットワークノードは図９で示したスロット制御部の機能を内包する。これにより、通信制御信号２４５を内部で生成する。ストール信号９５０はタイマ９６０へ入力され、ここで所定のサイクル数待たされる。このサイクル数は前述したように、ストール発行部９４０への距離によって異なる。なお、ネットワークインタフェースも同様である。以上により、各ネットワークノード間で生成する通信制御信号の値は同一となり、前述の制御と同様の制御が可能になる。
【００７９】
以上説明したように、各ネットワークノード内部で通信制御信号を生成させることもできる。この場合ストールを同期させるための機構が必要になる。
【００８０】
なお、ネットワークノードそれぞれが通信制御信号を生成部したが、いくつかのネットワークノードでこれを共有しても良い。（なお全てのネットワークノードで共有すると前述の構成と同様となる。）ストール発行部は複数あっても良い。
【００８１】
上記の各構成によれば、ルータは通信制御信号の値を参照してルーティングを行う。これにより、通信データに付加する情報の情報量を低減させることができるため、データ通信効率の向上が可能である。例えば、ルータ間におけるデータ通信の帯域幅が３２［ｂｉｔ／ｃｙｃｌｅ］だと仮定する。上記従来の方法の場合、通信データに付加する情報が１６ビットだとすれば、１サイクルに転送できる通信データは最大で１６ビットである。一方、本発明によれば１サイクルに転送できる通信データは最大で３２ビットとなる。
【００８２】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011151786.tif 000003
【図２】
2011151786.tif 000004
【図３】
2011151786.tif 000005
【図４】
2011151786.tif 000006
【図５】
2011151786.tif 000007
【図６】
2011151786.tif 000008
【図７】
2011151786.tif 000009
【図８】
2011151786.tif 000010
【図９】
2011151786.tif 000011
【図１０】
2011151786.tif 000012
【図１１】
2011151786.tif 000013
【図１２】
2011151786.tif 000014
【図１３】
2011151786.tif 000015
【図１４】
2011151786.tif 000016
【図１５】
2011151786.tif 000017
【図１６】
2011151786.tif 000018
【図１７】
2011151786.tif 000019
【図１８】
2011151786.tif 000020
【図１９】
2011151786.tif 000021