(57)【要約】【課題】初期化時に各プロセッサのプロセッサＩＤを自動的に決定することが可能なプロセッサを提供すること。【解決手段】ＩＤ決定部１２は、制御命令が入力された入力ポート名と、入力した制御命令に格納された送信元プロセッサＩＤとから自己のプロセッサＩＤを決定する。そして、自己のプロセッサＩＤを格納した制御命令を分岐部２１を介してそれぞれの出力ポートから出力する。したがって、初期化処理時に各プロセッサのプロセッサＩＤを自動的に決定することが可能となる。【選択図】図１
2007115223.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサを構成するプロセッサであって、
少なくとも１組の入出力ポートと、
前記入力ポートに接続される第１の他のプロセッサから入力した該第１の他のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定する識別子決定手段と、
前記識別子決定手段によって決定された自己のプロセッサ識別子宛のデータパケットに含まれるデータに対して演算を行ない、演算結果を含んだデータパケットを生成する演算処理手段とを含み、
前記出力ポートは、前記演算処理手段によって生成されたデータパケットを前記出力ポートに接続された第２の他のプロセッサに出力する、プロセッサ。
【請求項２】
前記プロセッサは、２組の入出力ポートを含み、
前記識別子決定手段は、前記第１の他のプロセッサのプロセッサ識別子と、前記２つの入力ポートのいずれを介して前記第１の他のプロセッサのプロセッサ識別子を入力したかを示す情報とに基づいて、前記自己のプロセッサ識別子を決定する、請求項１記載のプロセッサ。
【請求項３】
前記プロセッサはさらに、前記自己のプロセッサ識別子と前記データパケットに含まれる送信先プロセッサ識別子とに基づいて、前記２つの出力ポートのいずれを介して前記データパケットを出力するかを決定する出力決定手段を含む、請求項２記載のプロセッサ。
【請求項４】
前記プロセッサはさらに、前記２つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、
前記出力決定手段は、前記格納手段に格納される情報によってデータパケットを出力しようとする出力ポートが未接続であると判定すると、他方の出力ポートを介して前記データパケットを出力する、請求項３記載のプロセッサ。
【請求項５】
前記出力決定手段は、出力ポートに接続される他のプロセッサが故障であると判定した場合、該他のプロセッサに接続される出力ポートが未接続であることを示す情報を前記格納手段に格納する、請求項４記載のプロセッサ。
【請求項６】
前記プロセッサはさらに、前記２つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、
前記出力決定手段は、前記格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、送信元のプロセッサにエラーを示すパケットを送信する、請求項３記載のプロセッサ。
【請求項７】
前記プロセッサはさらに、前記２つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、
前記出力決定手段は、前記格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、予め定められたプロセッサにエラーを示すパケットを送信する、請求項３記載のプロセッサ。
【請求項８】
少なくとも１組の入出力ポートを有するプロセッサを複数接続してマルチプロセッサを構成するマルチプロセッサ構成方法であって、
第１のプロセッサが、前記入力ポートに接続される第２のプロセッサから受信した該第２のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定するステップと、
前記第１のプロセッサが、前記決定された自己のプロセッサ識別子を前記出力ポートに接続される第３のプロセッサに送信するステップとを含む、マルチプロセッサ構成方法。
【請求項９】
前記マルチプロセッサは、２組の入出力ポートを有するプロセッサ４台を環状に接続した第１層のマルチプロセッサを構成し、さらに第１層のマルチプロセッサ４台を環状に接続した第２層のマルチプロセッサを構成し、Ｎを１以上の整数とすると、４Ｎ個単位の階層構造を有するマルチプロセッサである、請求項８記載のマルチプロセッサ構成方法。
【請求項１０】
前記第１層のマルチプロセッサに含まれるプロセッサの位置を２ビットで表現し、前記第２層のマルチプロセッサに含まれる第１層のマルチプロセッサの位置を２ビットで表現し、Ｎ階層のマルチプロセッサのプロセッサ識別子を２×Ｎビットで表現する、請求項９記載のマルチプロセッサ構成方法。
【請求項１１】
前記マルチプロセッサを構成する各プロセッサは、受信したパケットに含まれる送信先プロセッサ識別子と自己のプロセッサ識別子とを上位階層から下位階層に向けて順次比較して行き先方向を決定し、該行き先方向と前記自己のプロセッサ識別子の第１層における値とから出力ポートを決定する、請求項１０記載のマルチプロセッサ構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの入出力ポートを相互に接続することによりマルチプロセッサを構成する技術に関し、特に、プロセッサ間のデータの送受信を実現するために必要となるプロセッサＩＤの設定と経路設定とを自動的に行なうプロセッサおよびマルチプロセッサ構成方法に関する。
【背景技術】
【０００２】
近年、マルチメディア処理や高精細画像処理などの大容量データの高速処理が要求される様々な分野において、プロセッサ性能の向上に対する要求が高まっている。しかし、現在のＬＳＩ（Large Scale Integrated circuit）製造技術ではデバイスの高速化にも限度がある。そこで、並列処理が注目を浴びており、並列処理に関する研究、開発が盛んに行なわれている。
【０００３】
並列処理向きのコンピュータ・アーキテクチャの中でも、特にデータ駆動型アーキテクチャが注目されている。データ駆動型処理方式においては、「ある処理に必要な入力データが全て揃い、かつその処理に必要な演算装置などの資源が割当てられたときに処理が行なわれる。」という規則にしたがって、処理が並列に進められる。
【０００４】
データ駆動型プロセッサ（以下、単にプロセッサとも呼ぶ。）は、出力ポートを他のプロセッサの入力ポートに接続することによって、多数のプロセッサが接続されたマルチプロセッサを構成することが可能なプロセッサである。また、プロセッサ内部の経路設定を変更することによって、プロセッサ間の接続関係を変更することができるといった特徴も有している。このようなデータ駆動型プロセッサに関する文献として、下記の特許文献１がある。
【０００５】
図２０は、従来のデータ駆動型プロセッサを複数接続したマルチプロセッサの一例を示す図である。このマルチプロセッサにおいては、４台のデータ駆動型プロセッサ１００−０〜１００−３が格子状に接続される。すなわち、プロセッサ１００−０の出力ポートがプロセッサ１００−１の入力ポートに接続され、プロセッサ１００−１の出力ポートがプロセッサ１００−２の入力ポートに接続され、プロセッサ１００−２の出力ポートがプロセッサ１００−３の入力ポートに接続され、プロセッサ１００−３の出力ポートがプロセッサ１００−０の入力ポートに接続される。
【０００６】
また、プロセッサ１００−０は、イニシャルプログラムローダ（以下、ＩＰＬと呼ぶ。）によって経路情報が入力される別の入力ポート１０１を有し、プロセッサ１００−１は、図示しないプロセッサに接続される別の出力ポート１０２を有している。
【０００７】
プロセッサ１００−０〜１００−３のプロセッサＩＤは、それぞれ外付けのディップスイッチによって設定され、プロセッサ１００−０にはプロセッサＩＤ“０”が設定され、プロセッサ１００−１にはプロセッサＩＤ“１”が設定され、プロセッサ１００−２にはプロセッサＩＤ“２”が設定され、プロセッサ１００−３にはプロセッサＩＤ“３”が設定されている。また、プロセッサ１００−１の出力ポート１０２には図示しないプロセッサＩＤ“４”のプロセッサが接続されているものとする。
【０００８】
このように接続されたマルチプロセッサにおいて、ＩＰＬによってプロセッサ１００−０の入力ポート１０１を介して経路情報が入力され、それぞれのプロセッサの出力ポート選択レジスタ（以下、ＯＰＳレジスタと呼ぶ。）に経路情報が設定される。なお、入力ポート１０１は図示しないホストコンピュータなどに接続される。
【０００９】
このＯＰＳレジスタは１６ビット構成であり、０ビット目がプロセッサＩＤ“０”のプロセッサに対応し、１ビット目がプロセッサＩＤ“１”のプロセッサに対応し、以下同様にして各ビットがプロセッサＩＤ＝０〜１５の各プロセッサに対応する。
【００１０】
各プロセッサに対応するビットが“０”の場合にはＯＡポートが選択され、“１”の場合にはＯＢポートが選択されて、パケットが出力される。たとえば、プロセッサＩＤ“１”のプロセッサ１００−１のＯＰＳレジスタには０ｘ０００Ｄが設定されており、プロセッサＩＤ“４”のプロセッサに対しては出力ポート１０２（ＯＡポート）を介してパケットが出力され、プロセッサＩＤ＝０，２，３のプロセッサに対してはＯＢポートを介してパケットを出力することを示している。
【００１１】
図２１は、従来のデータ駆動型プロセッサのデータパケットの一例を示す図である。このデータパケットは、３２ビット、２ワード構成となっており、ホスト転送フラグ（ＨＳＴ）と、制御フラグ（ＣＴＬ）と、４ビットの命令実行先プロセッサ番号（ＰＥ＃）と、６ビットのエントリ番号（Ｅｎｔｒｙ＃）と、２０ビットの世代番号（ＧＥ＃）と、３２ビットのデータフィールド（ＤＡＴＡ）とを含む。
【００１２】
ホスト転送フラグと制御フラグとは、パケットの種類を示すフラグを格納するフィールドである。命令実行先プロセッサ番号は、送信先プロセッサのＩＤを格納するフィールドである。エントリ番号は、プロセッサに内蔵されるプログラムメモリのアドレスを格納するフィールドである。世代番号は、そのデータパケットにつけられるデータＩＤを格納するフィールドである。また、データは、データ本体が格納されるフィールドである。
【００１３】
ここで、図２０に示す入力ポート１０１を介して図２１に示すデータパケットが入力され、そのデータパケット中の命令実行先プロセッサ番号（ＰＥ＃）に“３”が設定されている場合について説明する。
【００１４】
まず、データパケットが入力ポート１０１を介してプロセッサ１００−０に入力されると、ＯＰＳレジスタの設定に基づいて命令実行先プロセッサ番号“３”の出力先である出力ポートＯＢからデータパケットが出力され、入力ポートを介してプロセッサ１００−１内部に入力される。
【００１５】
データパケットがプロセッサ１００−１に入力されると、ＯＰＳレジスタの設定に基づいて命令実行先プロセッサ番号“３”の出力先である出力ポートＯＢからデータパケットが出力され、入力ポートを介してプロセッサ１００−２内部に入力される。
【００１６】
データパケットがプロセッサ１００−２に入力されると、ＯＰＳレジスタの設定に基づいて命令実行先プロセッサ番号“３”の出力先である出力ポートＯＢからデータパケットが出力され、入力ポートを介してプロセッサ１００−３内部に入力される。このようにして、データパケットは命令実行先プロセッサ番号“３”のプロセッサ１００−３に到達し、データパケットに含まれるエントリ番号が示すプログラムメモリのオペコードをフェッチして、プロセッサ１００−３内部で命令実行が行なわれる。
【００１７】
同様にして、図２０に示す入力ポート１０１を介して図２１に示すデータパケットが入力され、そのデータパケット中の命令実行先プロセッサ番号に“４”が設定されている場合について説明する。
【００１８】
まず、データパケットが入力ポート１０１を介してプロセッサ１００−０に入力されると、ＯＰＳレジスタの設定に基づいて命令実行先プロセッサ番号“４”の出力先である出力ポートＯＢからデータパケットが出力され、入力ポートを介してプロセッサ１００−１内部に入力される。
【００１９】
データパケットがプロセッサ１００−１に入力されると、ＯＰＳレジスタの設定に基づいて命令実行先プロセッサ番号“４”の出力先である出力ポートＯＡ（出力ポート１０２）からデータパケットが出力される。
【特許文献１】特開平５−３１４２８４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
データ駆動型プロセッサに限らず、マルチプロセッサを構成する各プロセッサのプロセッサＩＤは重複することが許されないため、上述したようにディップスイッチにより手作業でプロセッサＩＤを設定したり、実装する基板上の配線パターンによってプロセッサＩＤを固定したり、初期化時に外付けのＲＯＭ（Read Only Memory）からプロセッサＩＤを読込んで設定したりしていたため、実装後のマルチプロセッサ構成の変更には対応し難いといった問題点があった。
【００２１】
また、接続された他のプロセッサとの通信を行なうための経路選択は、それぞれのプロセッサに付されたプロセッサＩＤに依存するので、プロセッサを後から増設するなどプロセッサＩＤを変更する必要が生じた場合には、経路選択のための設定を最初からやり直さなければならないといった問題点があった。
【００２２】
さらに、マルチプロセッサを構成するプロセッサが故障した場合には、故障したプロセッサを修理しないとマルチプロセッサを動作させることが困難であるといった問題点があった。
【００２３】
本発明は、上記問題点を解決するためになされたものであり、第１の目的は、初期化時に各プロセッサのプロセッサＩＤを自動的に決定することが可能なプロセッサおよびマルチプロセッサ構成方法を提供することである。
【００２４】
第２の目的は、プロセッサＩＤを変更した場合でも経路選択をやり直す必要がないプロセッサおよびマルチプロセッサ構成方法を提供することである。
【００２５】
第３の目的は、プロセッサに接続されていない出力ポート、故障したプロセッサなどを迂回してデータパケットを送信することが可能なプロセッサおよびマルチプロセッサ構成方法を提供することである。
【課題を解決するための手段】
【００２６】
本発明のある局面に従えば、マルチプロセッサを構成するプロセッサであって、少なくとも１組の入出力ポートと、入力ポートに接続される第１の他のプロセッサから入力した第１の他のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定する識別子決定手段と、識別子決定手段によって決定された自己のプロセッサ識別子宛のデータパケットに含まれるデータに対して演算を行ない、演算結果を含んだデータパケットを生成する演算処理手段とを含み、出力ポートは、演算処理手段によって生成されたデータパケットを出力ポートに接続された第２の他のプロセッサに出力する。
【００２７】
好ましくは、プロセッサは、２組の入出力ポートを含み、識別子決定手段は、第１の他のプロセッサのプロセッサ識別子と、２つの入力ポートのいずれを介して第１の他のプロセッサのプロセッサ識別子を入力したかを示す情報とに基づいて、自己のプロセッサ識別子を決定する。
【００２８】
好ましくは、プロセッサはさらに、自己のプロセッサ識別子とデータパケットに含まれる送信先プロセッサ識別子とに基づいて、２つの出力ポートのいずれを介してデータパケットを出力するかを決定する出力決定手段を含む。
【００２９】
好ましくは、プロセッサはさらに、２つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、出力決定手段は、格納手段に格納される情報によってデータパケットを出力しようとする出力ポートが未接続であると判定すると、他方の出力ポートを介してデータパケットを出力する。
【００３０】
さらに好ましくは、出力決定手段は、出力ポートに接続される他のプロセッサが故障であると判定した場合、他のプロセッサに接続される出力ポートが未接続であることを示す情報を格納手段に格納する。
【００３１】
好ましくは、プロセッサはさらに、２つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、出力決定手段は、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、送信元のプロセッサにエラーを示すパケットを送信する。
【００３２】
好ましくは、プロセッサはさらに、２つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、出力決定手段は、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、予め定められたプロセッサにエラーを示すパケットを送信する。
【００３３】
本発明の別の局面に従えば、少なくとも１組の入出力ポートを有するプロセッサを複数接続してマルチプロセッサを構成するマルチプロセッサ構成方法であって、第１のプロセッサが、入力ポートに接続される第２のプロセッサから受信した第２のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定するステップと、第１のプロセッサが、決定された自己のプロセッサ識別子を出力ポートに接続される第３のプロセッサに送信するステップとを含む。
【００３４】
好ましくは、マルチプロセッサは、２組の入出力ポートを有するプロセッサ４台を環状に接続した第１層のマルチプロセッサを構成し、さらに第１層のマルチプロセッサ４台を環状に接続した第２層のマルチプロセッサを構成し、Ｎを１以上の整数とすると、４Ｎ個単位の階層構造を有するマルチプロセッサである。
【００３５】
さらに好ましくは、第１層のマルチプロセッサに含まれるプロセッサの位置を２ビットで表現し、第２層のマルチプロセッサに含まれる第１層のマルチプロセッサの位置を２ビットで表現し、Ｎ階層のマルチプロセッサのプロセッサ識別子を２×Ｎビットで表現する。
【００３６】
さらに好ましくは、マルチプロセッサを構成する各プロセッサは、受信したパケットに含まれる送信先プロセッサ識別子と自己のプロセッサ識別子とを上位階層から下位階層に向けて順次比較して行き先方向を決定し、行き先方向と自己のプロセッサ識別子の第１層における値とから出力ポートを決定する。
【発明の効果】
【００３７】
本発明のある局面によれば、識別子決定手段が、入力ポートに接続される第１の他のプロセッサから入力した第１の他のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定するので、初期化時にプロセッサのプロセッサ識別子を自動的に決定することが可能となる。
【００３８】
また、識別子決定手段が、第１の他のプロセッサのプロセッサ識別子と、２つの入力ポートのいずれを介して第１の他のプロセッサのプロセッサ識別子を入力したかを示す情報とに基づいて、自己のプロセッサ識別子を決定するので、自己のプロセッサ識別子を正確に決定することが可能となる。
【００３９】
また、出力決定手段が、自己のプロセッサ識別子とデータパケットに含まれる送信先プロセッサ識別子とに基づいて、２つの出力ポートのいずれを介してデータパケットを出力するかを決定するので、プロセッサ識別子を変更した場合でも経路選択をやり直す必要がなくなる。
【００４０】
また、出力決定手段は、格納手段に格納される情報によってデータパケットを出力しようとする出力ポートが未接続であると判定すると、他方の出力ポートを介してデータパケットを出力するので、プロセッサに接続されていない出力ポートを迂回してデータパケットを送信することが可能となる。
【００４１】
また、出力決定手段が、出力ポートに接続される他のプロセッサが故障であると判定した場合、他のプロセッサに接続される出力ポートが未接続であることを示す情報を格納手段に格納するので、故障したプロセッサを迂回してデータパケットを送信することが可能となる。
【００４２】
また、出力決定手段が、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、送信元のプロセッサにエラーを示すパケットを送信するので、送信元のプロセッサがエラー処理を行なうことが可能となる。
【００４３】
また、出力決定手段が、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、予め定められたプロセッサにエラーを示すパケットを送信するので、予め定められたプロセッサがエラー処理を集中的に行なうことが可能となる。
【００４４】
本発明の別の局面によれば、第１のプロセッサが、入力ポートに接続される第２のプロセッサから受信した第２のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定し、決定された自己のプロセッサ識別子を出力ポートに接続される第３のプロセッサに送信するので、マルチプロセッサを構成する各プロセッサのプロセッサ識別子を自動的に決定することが可能となる。
【００４５】
また、マルチプロセッサは、４Ｎ個単位の階層構造を有するマルチプロセッサであるので、マルチプロセッサにおけるプロセッサの増設を容易に行なうことが可能となる。
【００４６】
また、第１層のマルチプロセッサに含まれるプロセッサの位置を２ビットで表現し、第２層のマルチプロセッサに含まれる第１層のマルチプロセッサの位置を２ビットで表現し、Ｎ階層のマルチプロセッサのプロセッサ識別子を２×Ｎビットで表現するので、プロセッサのプロセッサ識別子を容易に設定することが可能となる。
【００４７】
また、マルチプロセッサを構成する各プロセッサは、受信したパケットに含まれる送信先プロセッサ識別子と自己のプロセッサ識別子とを上位階層から下位階層に向けて順次比較して行き先方向を決定し、行き先方向と自己のプロセッサ識別子の第１層における値とから出力ポートを決定するので、マルチプロセッサの階層が増える場合でも、行き先方向を判定するための情報を削減することが可能となる。
【発明を実施するための最良の形態】
【００４８】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるデータ駆動型プロセッサの概略構成を示すブロック図である。このプロセッサは、合流部１１と、自己のプロセッサＩＤを決定するＩＤ決定部１２と、プロセッサＩＤが格納されるプロセッサＩＤレジスタ１３と、分岐部１４と、ルータ１５と、ＰＥ（Processor Element）０（１６）と、ＰＥ１（１７）と、合流部１８と、いずれの出力ポートにデータパケットを出力するかを決定する出力決定部１９と、出力ポートの接続状態を格納する接続状態レジスタ２０と、分岐部２１とを含む。なお、本実施の形態においては、２つのＰＥを記載しているが、その数は特に限定されるものではない。
【００４９】
また、ＰＥ０（１６）およびＰＥ１（１７）はそれぞれ、プログラム記憶部３１と、対データ検出部３２と、演算処理部３３とを含む。
【００５０】
合流部１１は、入力ポートＩＡ、ＩＢおよび分岐部２１からデータパケットを入力し、データパケットを所定の順序に並べ替えてＩＤ決定部１２に出力する。ＩＤ決定部１２は、後述する方法によって自己のプロセッサＩＤを決定し、そのプロセッサＩＤをプロセッサＩＤレジスタ１３に格納する。
【００５１】
分岐部１４は、合流部１１から出力されたデータパケットの命令実行先プロセッサ番号を参照し、そのデータパケットを自身のプロセッサ内で処理すべきか否かを判定する。データパケットを自己のプロセッサ内で処理すべきと判定すれば、そのデータパケットをルータ１５に出力する。データパケットが他のプロセッサで処理されるべきと判定すれば、そのデータパケットを合流部１８に出力する。
【００５２】
ルータ１５は、分岐部１４から受けたデータパケットをその行き先に応じてＰＥ０（１６）またはＰＥ１（１７）に出力する。また、ルータ１５は、ＰＥ０（１６）およびＰＥ１（１７）から受けたデータパケットを合流部１８に出力する。
【００５３】
プログラム記憶部３１は、ルータ１５から受けたデータパケットに、必要な演算命令やノード番号を付加し、所定のビットフィールドによって構成されるデータパケットを生成して対データ検出部３２に出力する。
【００５４】
対データ検出部３２は、プログラム記憶部３１からデータパケットを受けると、演算すべき２つのデータパケットが揃うまで待ち合わせを行ない、データパケットが揃い次第これらのデータパケットを演算処理部３３に出力する。
【００５５】
演算処理部３３は、対データ検出部３２から受けたデータパケットに含まれる演算命令に応じて、２つのデータパケットに含まれるデータに算術演算、論理演算などの演算を実行し、命令実行先プロセッサ番号を付加したデータパケットにその演算結果を格納してルータ１５に出力する。
【００５６】
合流部１８は、分岐部１４およびルータ１５からデータパケットを受け、データパケットを所定の順序に並べ替えて出力決定部１９に出力する。
【００５７】
出力決定部１９は、接続状態レジスタ２０を参照し、後述する方法によってデータパケットを出力ポートＯＡおよびＯＢのいずれに出力すべきかを判定して、分岐部２１に指示する。
【００５８】
分岐部２１は、出力決定部１９からの指示に応じて、合流部１８から受けたデータパケットを出力ポートＯＡまたはＯＢに出力する。このとき、データパケットに含まれる命令実行先プロセッサ番号が自己のプロセッサ番号であれば、分岐部２１はそのデータパケットを合流部１１に出力する。
【００５９】
図２は、図１に示すプロセッサを４台接続する場合の一例を示す図である。プロセッサＩＤ＝０〜３に対応する４つのプロセッサ１−０〜１−３がループ状に接続されている。
【００６０】
図３は、図２に示すプロセッサを４台接続した場合のマルチプロセッサの接続例を示す図である。プロセッサＩＤ“０”のプロセッサ１−０の出力ポートＯＢが、プロセッサＩＤ“１”のプロセッサ１−１の入力ポートＩＢに接続される。プロセッサＩＤ“１”のプロセッサ１−１の出力ポートＯＢが、プロセッサＩＤ＝２のプロセッサ１−２の入力ポートＩＢに接続される。プロセッサＩＤ“２”のプロセッサ１−２の出力ポートＯＢが、プロセッサＩＤ“３”のプロセッサ１−３の入力ポートＩＢに接続される。プロセッサＩＤ“３”のプロセッサ１−３の出力ポートＯＢが、プロセッサＩＤ“０”のプロセッサ１−０の入力ポートＩＢに接続される。
【００６１】
図４は、図１に示すプロセッサを１６台接続した場合のマルチプロセッサの一例を示す図である。図４に示すように、１６台のマルチプロセッサを構成するためには、図３に示す４台のマルチプロセッサ（第１層）を４台組合わせることにより第２層を構成することができる。図４において、点線で囲まれた部分が図３に示す第１層のマルチプロセッサに対応している。４台の第１層のマルチプロセッサは、それぞれ同じ接続となっている。また、４Ｎ個単位（Ｎ＝１，２，３・・・）でマルチプロセッサを構成する場合にも、同様の接続で実現することが可能である。
【００６２】
たとえば、第１層のマルチプロセッサ４台で第２層を形成し、第２層のマルチプロセッサ４台で第３層のマルチプロセッサを形成するというように、階層的にマルチプロセッサを構成してゆき、各層のプロセッサまたはマルチプロセッサの位置を２ビットで表わし、各層分の２ビットデータを連結してこれをプロセッサＩＤとして表現することによって、４Ｎ個単位（Ｎ＝１，２，３・・・）でマルチプロセッサを容易に構成することができる。
【００６３】
以下、各プロセッサのプロセッサＩＤを決定する方法について説明する。なお、図２〜４にはプロセッサＩＤが記載されているが、これは後でプロセッサＩＤがそのように決定されることを示すものであって、プロセッサの接続直後の状態ではこのプロセッサＩＤは決まっていない。
【００６４】
図５は、プロセッサＩＤを決定する際に使用される制御パケットの構成例を示す図である。この制御パケットは、３２ビット、２ワード構成となっており、ホスト転送フラグ（ＨＳＴ）と、制御フラグ（ＣＴＬ）と、命令実行先プロセッサ番号（ＰＥ＃）と、オペレーションコード（ＯＰＣ）と、データフィールド（ＤＡＴＡ）とを含む。この制御パケットにおいては、プロセッサ内部のレジスタや内蔵プロセッサのプログラムメモリに対してデータの読出し／書込みを行なったり、ＲＯＭからデータを読出したりするための制御用の命令がＯＰＣフィールドに格納される。
【００６５】
図６は、プロセッサ１−０に制御命令Ａが入力されるところを示す図である。入力ポート４１を介して制御命令Ａがプロセッサ１−０に入力される。この制御命令Ａは、データフィールドに格納された“０”をプロセッサＩＤに設定する命令である。
【００６６】
図７は、プロセッサ１−０にプロセッサＩＤ“０”が設定されたところを示す図である。プロセッサ１−０内のＩＤ決定部１２は、合流部１１を介して制御命令Ａを受けると、自身のプロセッサＩＤが“０”であることを認識し、プロセッサＩＤレジスタ１３に“０”を設定する。
【００６７】
図８は、プロセッサＩＤ“０”のプロセッサ１−０が出力ポートに制御命令Ｂを出力するところを示す図である。プロセッサ１−０のＩＤ決定部１２は制御命令Ａを受けると、そのプロセッサＩＤ“０”を制御命令Ｂに格納して出力する。制御命令Ｂは、分岐部１４、合流部１８および分岐部２１を経て、それぞれの出力ポートから隣接するプロセッサに出力される。
【００６８】
図９は、ＩＤ決定部１２の構成例を示す図である。ＩＤ決定部１２は、内部に保持する表を参照して、制御命令Ｂが入力された入力ポート名と、入力した制御命令Ｂに格納された送信元プロセッサＩＤとから自己のプロセッサＩＤを決定する。
【００６９】
図１０は、ＩＤ決定部１２がプロセッサＩＤを決定する際に使用する表の一例を示す図である。たとえば、制御命令Ｂが入力された入力ポート名がＩＢであり、送信元プロセッサＩＤが“０”であれば、自己のプロセッサＩＤを“１”に決定する。この表は、ＲＯＭによって実現されてもよいし、論理回路で実現されてもよい。
【００７０】
図１１は、プロセッサ１−１にプロセッサＩＤ“１”が設定されたところを示す図である。プロセッサ１−１内のＩＤ決定部１２は、合流部１１を介して制御命令Ａを受けると、図１０に示す表を参照して自己のプロセッサＩＤが“１”であることを認識し、プロセッサＩＤレジスタ１３に“１”を設定する。
【００７１】
図１２は、プロセッサＩＤ“１”のプロセッサ１−１が出力ポートに制御命令Ｂを出力するところを示す図である。プロセッサ１−１のＩＤ決定部１２は自己のプロセッサＩＤを決定すると、そのプロセッサＩＤ“１”を制御命令Ｂに格納して出力する。制御命令Ｂは、分岐部１４、合流部１８および分岐部２１を経て、それぞれの出力ポートから隣接するプロセッサに出力される。図４に示すように、プロセッサＩＤ“１”のプロセッサの出力ポートＯＡにプロセッサＩＤ“４”のプロセッサが接続されている場合には、制御命令ＢはプロセッサＩＤ“２”のプロセッサ１−２とプロセッサＩＤ“４”のプロセッサとの両方に出力される。
【００７２】
図１３は、プロセッサ１−２にプロセッサＩＤ“２”が設定されたところを示す図である。プロセッサ１−２内のＩＤ決定部１２は、合流部１１を介して制御命令Ｂを受けると、図１０に示す表を参照して自己のプロセッサＩＤが“２”であることを認識し、プロセッサＩＤレジスタ１３に“２”を設定する。そして、そのプロセッサＩＤ“２”を制御命令Ｂに格納して出力する。制御命令Ｂは、分岐部１４、合流部１８および分岐部２１を経て、それぞれの出力ポートから隣接するプロセッサに出力される。図４に示すように、プロセッサＩＤ“２”のプロセッサの出力ポートＯＡにプロセッサＩＤ“Ｄ”のプロセッサが接続されている場合には、制御命令ＢはプロセッサＩＤ“３”のプロセッサ１−３とプロセッサＩＤ“Ｄ”のプロセッサとの両方に出力される。
【００７３】
プロセッサ１−３内のＩＤ決定部１２は、合流部１１を介して制御命令Ｂを受けると、図１０に示す表を参照して自己のプロセッサＩＤが“３”であることを認識し、プロセッサＩＤレジスタ１３に“３”を設定する。そして、そのプロセッサＩＤ“３”を制御命令Ｂに格納して出力する。制御命令Ｂは、分岐部１４、合流部１８および分岐部２１を経て、それぞれの出力ポートから隣接するプロセッサに出力される。このようにして、全てのプロセッサのプロセッサＩＤが決定される。
【００７４】
図１４は、プロセッサ１−０において制御命令Ｂが破棄されるところを示す図である。プロセッサ１−０は、プロセッサ１−３から制御命令Ｂを受けるが、既に自己のプロセッサＩＤが決定しているので、その制御命令Ｂを破棄する。これによって、必要以上にプロセッサＩＤを決定するための制御命令Ｂが発行されるのを防止することができ、プロセッサＩＤ決定のための処理動作を終了させることができる。
【００７５】
図１５は、出力決定部１９の構成例を示す図である。図６〜図１４を用いて説明した動作によって各プロセッサのプロセッサＩＤが決定された後、各プロセッサから任意のプロセッサへの最適経路を決定することができる。すなわち、出力決定部１９は、内部に保持する真理値表を参照して、自己プロセッサＩＤと送信先プロセッサＩＤとから、データパケットを出力する出力ポートを選択するための出力ポート選択信号を生成し、分岐部２１に出力する。
【００７６】
図１６は、出力ポートを選択する際に使用される真理値表の一例を示す図である。この真理値表においては、“Ａ”が出力ポートＯＡを選択することを示し、“Ｂ”が出力ポートＯＢを選択することを示している。たとえば、プロセッサＩＤ“０”のプロセッサ１−０からプロセッサＩＤ“４”のプロセッサにデータパケットを送信する場合、プロセッサ１−０の出力決定部１９においては、自己プロセッサＩＤが“０”であり、送信先プロセッサＩＤが“４”であるので、データパケットを出力ポートＯＢに出力する。プロセッサ１−１の出力決定部１９においては、自己プロセッサＩＤが“１”であり、送信先プロセッサＩＤが“４”であるので、データパケットを出力ポートＯＡに出力する。このようにして、データパケットがプロセッサＩＤ“０”のプロセッサからプロセッサＩＤ“４”のプロセッサに送信される。
【００７７】
図１７は、各プロセッサの出力ポートの接続状態を示す図である。プロセッサは、各出力ポートに対応するＲｅａｄｙ信号を入力してデータパケットを出力する。このＲｅａｄｙ信号は、出力ポートが接続されるプロセッサから出力される信号であり、データパケットを受け取る準備ができているか否かを示す。出力ポートがいずれのプロセッサにも接続されていない場合は、プロセッサ起動時の初期化動作中にハンドシェークを行なえない。すなわち、出力決定部１９はこのＲｅａｄｙ信号を参照し、一定時間Ｒｅａｄｙ状態にならない場合には、その出力ポートがプロセッサに接続されていないと判定する。
【００７８】
また、データ駆動プロセッサにおいてはＣ素子が用いられており、転送許可入力端子ＲＩが使用禁止状態（“Ｌ”レベルの状態）に固定されていれば、出力ポートからデータパケットを出力することができない。初期化動作時に、ＲＩ端子が一定時間“Ｌ”レベルであることを検出して、出力ポートにプロセッサが接続されていないことを検出することも可能である。なお、このＣ素子の動作の詳細については、本出願人が出願した特願２００４−３３８９９８号などを参照されたい。
【００７９】
出力決定部１９は、図１７に示すように、出力ポートがいずれかのプロセッサに接続されているか否かの情報を接続状態レジスタ２０に格納する。たとえば、プロセッサ１−０の出力ポートＯＡ（５０ａ）にはプロセッサが接続されておらず、出力ポートＯＢ（５０ｂ）にはプロセッサが接続されているので、これらの情報がプロセッサ１−０の接続状態レジスタ２０に格納される。
【００８０】
なお、使用禁止にある出力ポートに送信データパケットが到着した場合には、出力決定部１９はエラーとしてそのデータパケットを送信元のプロセッサ宛に返送する。また、プロセッサ内に設けられた図示しない転送ホストレジスタに設定されたプロセッサ宛に、エラーのパケットを送信するようにしてもよい。
【００８１】
また、送信先のプロセッサが使用禁止の出力ポートに直接接続されておらず、その先に接続されている場合には、使用禁止の出力ポートとは別の出力ポートにデータパケットを出力することによって、使用禁止の出力ポートを迂回して目的のプロセッサにデータパケットを送信することが可能である。
【００８２】
また、テストプログラムによって故障が検出されたプロセッサに接続される出力ポートに対応する接続状態レジスタ２０に使用禁止を示すビットを設定することにより、故障したプロセッサを迂回してデータパケットを送信することができ、故障したプロセッサを切り離すことも可能である。これによって、マルチプロセッサを停止させずに処理を続けることが可能となる。
【００８３】
また、プロセッサＩＤを記憶する手段として、プロセッサＩＤレジスタ１３やＳＲＡＭ（Static Random Access Memory）を用いた場合には、プロセッサの電源を切ることによって設定が消去されるので、マルチプロセッサの構成が変更になった場合でも自動的にプロセッサＩＤの設定が行なわれる。
【００８４】
また、プロセッサＩＤを記憶する手段として、フラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）を用いた場合には、プロセッサの電源を切っても設定が消去されないので、プロセッサＩＤを再度設定する必要がなくなり速やかに動作を行なうことが可能となる。
【００８５】
以上説明したように、本実施の形態におけるプロセッサによれば、ＩＤ決定部１２が、制御命令Ｂが入力された入力ポート名と、入力した制御命令Ｂに格納された送信元プロセッサＩＤとから自己のプロセッサＩＤを決定するようにしたので、初期化処理時に各プロセッサのプロセッサＩＤを自動的に決定することが可能となった。
【００８６】
また、出力決定部１９が、内部に保持する真理値表を参照し、自己プロセッサＩＤと送信先プロセッサＩＤとからデータパケットの送信先の最適経路を決定するようにしたので、プロセッサを後から増設するなどプロセッサＩＤが変更された場合にも、経路選択のための設定をやり直す必要がなくなった。
【００８７】
また、送信先に接続される出力ポートが未接続の場合、出力決定部１９がそのデータパケットをエラーとして送信元または予め定められたプロセッサに送信するようにしたので、システムとしてエラー処理を容易に行なうことが可能となった。
【００８８】
また、出力決定部１９は、接続状態レジスタ２０に格納された各出力ポートの接続状態を参照してデータパケットを出力するようにしたので、使用禁止の出力ポートや故障したプロセッサを迂回してデータパケットを送信することが可能となった。
【００８９】
また、プロセッサ４台で第１層のマルチプロセッサを構成し、第２層のマルチプロセッサ４台で第３層のマルチプロセッサを構成するというように、４台のプロセッサを基本構成として４Ｎ個単位（Ｎ＝１，２，３・・・）でマルチプロセッサを構成するようにしたので、マルチプロセッサにおけるプロセッサの増設を容易に行なうことが可能となった。
【００９０】
（第２の実施の形態）
本発明の第２の実施の形態におけるデータ駆動型プロセッサは、図１に示す第１の実施の形態におけるデータ駆動型プロセッサと比較して、出力決定部１９の内部構成が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００９１】
図１８は、本発明の第２の実施の形態における出力決定部１９の処理手順を説明するためのフローチャートである。出力決定部１９は、最上位階層から行き先方向を決定し、階層を下げながら順次行き先方向を決定することにより、最終的に第１層の送信先プロセッサにデータパケットを送信する。
【００９２】
まず、出力決定部１９は、自己プロセッサＩＤと送信先プロセッサＩＤとから、最上位階層における行き先方向がＮ，Ｅ，Ｗ，Ｓのいずれであるかを判定する（Ｓ１１）。
【００９３】
図１９は、行き先方向を決定する際に使用される真理値表の一例を示す図である。この真理値表においては、自己プロセッサＩＤのうち現在の階層に対応する２ビットを自己ＩＤとし、送信先プロセッサＩＤのうち現在の階層に対応する２ビットを送信先ＩＤとして行き先方向を判定する。たとえば、自己プロセッサＩＤが“０ｘＣ１”であり、送信先プロセッサＩＤが“０ｘ４６”であれば、最上位階層における自己ＩＤは“０ｘ３”となり、送信先ＩＤは“０ｘ１”となる。この場合、行き先方向はＥ（右方向）と判定される。
【００９４】
次に、出力決定部１９は、行き先方向がＮ（上方向）であれば（Ｓ１２，Ｙｅｓ）、自己プロセッサＩＤの第１層における自己ＩＤが“０ｘ０”であるか否かを判定する（Ｓ１３）。たとえば、自己プロセッサＩＤが“０ｘＣ１”であれば、第１層における自己ＩＤは“０ｘ１”となる。第１層における自己ＩＤが“０ｘ０”であれば（Ｓ１３，Ｙｅｓ）、出力ポートＯＡを選択する。また、第１層における自己ＩＤが“０ｘ０”でなければ（Ｓ１３，Ｎｏ）、出力ポートＯＢを選択する。
【００９５】
また、出力決定部１９は、行き先方向がＥ（右方向）であれば（Ｓ１４，Ｙｅｓ）、自己プロセッサＩＤの第１層における自己ＩＤが“０ｘ１”であるか否かを判定する（Ｓ１５）。第１層における自己ＩＤが“０ｘ１”であれば（Ｓ１５，Ｙｅｓ）、出力ポートＯＡを選択する。また、第１層における自己ＩＤが“０ｘ１”でなければ（Ｓ１５，Ｎｏ）、出力ポートＯＢを選択する。
【００９６】
また、出力決定部１９は、行き先方向がＷ（左方向）であれば（Ｓ１６，Ｙｅｓ）、自己プロセッサＩＤの第１層における自己ＩＤが“０ｘ３”であるか否かを判定する（Ｓ１７）。第１層における自己ＩＤが“０ｘ３”であれば（Ｓ１７，Ｙｅｓ）、出力ポートＯＡを選択する。また、第１層における自己ＩＤが“０ｘ３”でなければ（Ｓ１７，Ｎｏ）、出力ポートＯＢを選択する。
【００９７】
また、出力決定部１９は、行き先方向がＳ（下方向）であれば（Ｓ１８，Ｙｅｓ）、自己プロセッサＩＤの第１層における自己ＩＤが“０ｘ２”であるか否かを判定する（Ｓ１９）。第１層における自己ＩＤが“０ｘ２”であれば（Ｓ１９，Ｙｅｓ）、出力ポートＯＡを選択する。また、第１層における自己ＩＤが“０ｘ２”でなければ（Ｓ１９，Ｎｏ）、出力ポートＯＢを選択する。
【００９８】
最上位階層における自己ＩＤと送信先ＩＤが一致する場合には（Ｓ１８，Ｎｏ）、送信先プロセッサが最上位階層において同じグループに属するので、階層を１階層分だけ下げて（Ｓ２０）、ステップＳ１１以降の処理を繰返す。なお、現在の階層が第１階層であれば、送信先プロセッサにデータパケットが到達したことになる。
【００９９】
以上説明したように、本実施の形態におけるプロセッサによれば、各階層において真理値表を参照しながら行き先方向を決定し、この行き先方向と自己プロセッサＩＤの第１層における値とから出力ポートを決定するようにしたので、マルチプロセッサの階層が増える場合であっても、真理値表を格納する回路は同じ物が使用できる。たとえば、この真理値表をＲＯＭに格納する場合、第１の実施の形態と比較して、ＲＯＭの容量を削減することが可能となる。
【０１００】
また、マルチプロセッサの構成を変更する場合であっても、出力決定部１９の構成を変更する必要がなくなる。
【０１０１】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１０２】
【図１】本発明の第１の実施の形態におけるデータ駆動型プロセッサの概略構成を示すブロック図である。
【図２】図１に示すプロセッサを４台接続する場合の一例を示す図である。
【図３】図２に示すプロセッサを４台接続した場合のマルチプロセッサの接続例を示す図である。
【図４】図１に示すプロセッサを１６台接続した場合のマルチプロセッサの一例を示す図である。
【図５】プロセッサＩＤを決定する際に使用される制御パケットの構成例を示す図である。
【図６】プロセッサ１−０に制御命令Ａが入力されるところを示す図である。
【図７】プロセッサ１−０にプロセッサＩＤ“０”が設定されたところを示す図である。
【図８】プロセッサＩＤ“０”のプロセッサ１−０が出力ポートに制御命令Ｂを出力するところを示す図である。
【図９】ＩＤ決定部１２の構成例を示す図である。
【図１０】ＩＤ決定部１２がプロセッサＩＤを決定する際に使用する表の一例を示す図である。
【図１１】プロセッサ１−１にプロセッサＩＤ“１”が設定されたところを示す図である。
【図１２】プロセッサＩＤ“１”のプロセッサ１−１が出力ポートに制御命令Ｂを出力するところを示す図である。
【図１３】プロセッサ１−２にプロセッサＩＤ“２”が設定されたところを示す図である。
【図１４】プロセッサ１−０において制御命令Ｂが破棄されるところを示す図である。
【図１５】出力決定部１９の構成例を示す図である。
【図１６】出力ポートを選択する際に使用される真理値表の一例を示す図である。
【図１７】各プロセッサの出力ポートの接続状態を示す図である。
【図１８】本発明の第２の実施の形態における出力決定部１９の処理手順を説明するためのフローチャートである。
【図１９】行き先方向を決定する際に使用される真理値表の一例を示す図である。
【図２０】従来のデータ駆動型プロセッサを複数接続したマルチプロセッサの一例を示す図である。
【図２１】従来のデータ駆動型プロセッサのデータパケットの一例を示す図である。
【符号の説明】
【０１０３】
１，１００  データ駆動型プロセッサ、１１，１８  合流部、１２  ＩＤ決定部、１３  プロセッサＩＤレジスタ、１４，２１  分岐部、１５  ルータ、１６，１７  ＰＥ、１９  出力決定部、２０  接続状態レジスタ、３１  プログラム記憶部、３２  対データ検出部、３３  演算処理部、４１，１０１  入力ポート、５０ａ〜５３ａ，５０ｂ〜５３ｂ，１０２  出力ポート。
【図１】
2007115223.tif 000003
【図２】
2007115223.tif 000004
【図３】
2007115223.tif 000005
【図４】
2007115223.tif 000006
【図５】
2007115223.tif 000007
【図６】
2007115223.tif 000008
【図７】
2007115223.tif 000009
【図８】
2007115223.tif 000010
【図９】
2007115223.tif 000011
【図１０】
2007115223.tif 000012
【図１１】
2007115223.tif 000013
【図１２】
2007115223.tif 000014
【図１３】
2007115223.tif 000015
【図１４】
2007115223.tif 000016
【図１５】
2007115223.tif 000017
【図１６】
2007115223.tif 000018
【図１７】
2007115223.tif 000019
【図１８】
2007115223.tif 000020
【図１９】
2007115223.tif 000021
【図２０】
2007115223.tif 000022
【図２１】
2007115223.tif 000023