JP2007115223A - プロセッサおよびマルチプロセッサ構成方法 - Google Patents
プロセッサおよびマルチプロセッサ構成方法 Download PDFInfo
- Publication number
- JP2007115223A JP2007115223A JP2006042357A JP2006042357A JP2007115223A JP 2007115223 A JP2007115223 A JP 2007115223A JP 2006042357 A JP2006042357 A JP 2006042357A JP 2006042357 A JP2006042357 A JP 2006042357A JP 2007115223 A JP2007115223 A JP 2007115223A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- output
- multiprocessor
- identifier
- data packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7828—Architectures of general purpose stored program computers comprising a single central processing unit without memory
- G06F15/7832—Architectures of general purpose stored program computers comprising a single central processing unit without memory on one IC chip (single chip microprocessors)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
Abstract
【課題】初期化時に各プロセッサのプロセッサIDを自動的に決定することが可能なプロセッサを提供すること。
【解決手段】ID決定部12は、制御命令が入力された入力ポート名と、入力した制御命令に格納された送信元プロセッサIDとから自己のプロセッサIDを決定する。そして、自己のプロセッサIDを格納した制御命令を分岐部21を介してそれぞれの出力ポートから出力する。したがって、初期化処理時に各プロセッサのプロセッサIDを自動的に決定することが可能となる。
【選択図】図1
【解決手段】ID決定部12は、制御命令が入力された入力ポート名と、入力した制御命令に格納された送信元プロセッサIDとから自己のプロセッサIDを決定する。そして、自己のプロセッサIDを格納した制御命令を分岐部21を介してそれぞれの出力ポートから出力する。したがって、初期化処理時に各プロセッサのプロセッサIDを自動的に決定することが可能となる。
【選択図】図1
Description
本発明は、プロセッサの入出力ポートを相互に接続することによりマルチプロセッサを構成する技術に関し、特に、プロセッサ間のデータの送受信を実現するために必要となるプロセッサIDの設定と経路設定とを自動的に行なうプロセッサおよびマルチプロセッサ構成方法に関する。
近年、マルチメディア処理や高精細画像処理などの大容量データの高速処理が要求される様々な分野において、プロセッサ性能の向上に対する要求が高まっている。しかし、現在のLSI(Large Scale Integrated circuit)製造技術ではデバイスの高速化にも限度がある。そこで、並列処理が注目を浴びており、並列処理に関する研究、開発が盛んに行なわれている。
並列処理向きのコンピュータ・アーキテクチャの中でも、特にデータ駆動型アーキテクチャが注目されている。データ駆動型処理方式においては、「ある処理に必要な入力データが全て揃い、かつその処理に必要な演算装置などの資源が割当てられたときに処理が行なわれる。」という規則にしたがって、処理が並列に進められる。
データ駆動型プロセッサ(以下、単にプロセッサとも呼ぶ。)は、出力ポートを他のプロセッサの入力ポートに接続することによって、多数のプロセッサが接続されたマルチプロセッサを構成することが可能なプロセッサである。また、プロセッサ内部の経路設定を変更することによって、プロセッサ間の接続関係を変更することができるといった特徴も有している。このようなデータ駆動型プロセッサに関する文献として、下記の特許文献1がある。
図20は、従来のデータ駆動型プロセッサを複数接続したマルチプロセッサの一例を示す図である。このマルチプロセッサにおいては、4台のデータ駆動型プロセッサ100−0〜100−3が格子状に接続される。すなわち、プロセッサ100−0の出力ポートがプロセッサ100−1の入力ポートに接続され、プロセッサ100−1の出力ポートがプロセッサ100−2の入力ポートに接続され、プロセッサ100−2の出力ポートがプロセッサ100−3の入力ポートに接続され、プロセッサ100−3の出力ポートがプロセッサ100−0の入力ポートに接続される。
また、プロセッサ100−0は、イニシャルプログラムローダ(以下、IPLと呼ぶ。)によって経路情報が入力される別の入力ポート101を有し、プロセッサ100−1は、図示しないプロセッサに接続される別の出力ポート102を有している。
プロセッサ100−0〜100−3のプロセッサIDは、それぞれ外付けのディップスイッチによって設定され、プロセッサ100−0にはプロセッサID“0”が設定され、プロセッサ100−1にはプロセッサID“1”が設定され、プロセッサ100−2にはプロセッサID“2”が設定され、プロセッサ100−3にはプロセッサID“3”が設定されている。また、プロセッサ100−1の出力ポート102には図示しないプロセッサID“4”のプロセッサが接続されているものとする。
このように接続されたマルチプロセッサにおいて、IPLによってプロセッサ100−0の入力ポート101を介して経路情報が入力され、それぞれのプロセッサの出力ポート選択レジスタ(以下、OPSレジスタと呼ぶ。)に経路情報が設定される。なお、入力ポート101は図示しないホストコンピュータなどに接続される。
このOPSレジスタは16ビット構成であり、0ビット目がプロセッサID“0”のプロセッサに対応し、1ビット目がプロセッサID“1”のプロセッサに対応し、以下同様にして各ビットがプロセッサID=0〜15の各プロセッサに対応する。
各プロセッサに対応するビットが“0”の場合にはOAポートが選択され、“1”の場合にはOBポートが選択されて、パケットが出力される。たとえば、プロセッサID“1”のプロセッサ100−1のOPSレジスタには0x000Dが設定されており、プロセッサID“4”のプロセッサに対しては出力ポート102(OAポート)を介してパケットが出力され、プロセッサID=0,2,3のプロセッサに対してはOBポートを介してパケットを出力することを示している。
図21は、従来のデータ駆動型プロセッサのデータパケットの一例を示す図である。このデータパケットは、32ビット、2ワード構成となっており、ホスト転送フラグ(HST)と、制御フラグ(CTL)と、4ビットの命令実行先プロセッサ番号(PE#)と、6ビットのエントリ番号(Entry#)と、20ビットの世代番号(GE#)と、32ビットのデータフィールド(DATA)とを含む。
ホスト転送フラグと制御フラグとは、パケットの種類を示すフラグを格納するフィールドである。命令実行先プロセッサ番号は、送信先プロセッサのIDを格納するフィールドである。エントリ番号は、プロセッサに内蔵されるプログラムメモリのアドレスを格納するフィールドである。世代番号は、そのデータパケットにつけられるデータIDを格納するフィールドである。また、データは、データ本体が格納されるフィールドである。
ここで、図20に示す入力ポート101を介して図21に示すデータパケットが入力され、そのデータパケット中の命令実行先プロセッサ番号(PE#)に“3”が設定されている場合について説明する。
まず、データパケットが入力ポート101を介してプロセッサ100−0に入力されると、OPSレジスタの設定に基づいて命令実行先プロセッサ番号“3”の出力先である出力ポートOBからデータパケットが出力され、入力ポートを介してプロセッサ100−1内部に入力される。
データパケットがプロセッサ100−1に入力されると、OPSレジスタの設定に基づいて命令実行先プロセッサ番号“3”の出力先である出力ポートOBからデータパケットが出力され、入力ポートを介してプロセッサ100−2内部に入力される。
データパケットがプロセッサ100−2に入力されると、OPSレジスタの設定に基づいて命令実行先プロセッサ番号“3”の出力先である出力ポートOBからデータパケットが出力され、入力ポートを介してプロセッサ100−3内部に入力される。このようにして、データパケットは命令実行先プロセッサ番号“3”のプロセッサ100−3に到達し、データパケットに含まれるエントリ番号が示すプログラムメモリのオペコードをフェッチして、プロセッサ100−3内部で命令実行が行なわれる。
同様にして、図20に示す入力ポート101を介して図21に示すデータパケットが入力され、そのデータパケット中の命令実行先プロセッサ番号に“4”が設定されている場合について説明する。
まず、データパケットが入力ポート101を介してプロセッサ100−0に入力されると、OPSレジスタの設定に基づいて命令実行先プロセッサ番号“4”の出力先である出力ポートOBからデータパケットが出力され、入力ポートを介してプロセッサ100−1内部に入力される。
データパケットがプロセッサ100−1に入力されると、OPSレジスタの設定に基づいて命令実行先プロセッサ番号“4”の出力先である出力ポートOA(出力ポート102)からデータパケットが出力される。
特開平5−314284号公報
データ駆動型プロセッサに限らず、マルチプロセッサを構成する各プロセッサのプロセッサIDは重複することが許されないため、上述したようにディップスイッチにより手作業でプロセッサIDを設定したり、実装する基板上の配線パターンによってプロセッサIDを固定したり、初期化時に外付けのROM(Read Only Memory)からプロセッサIDを読込んで設定したりしていたため、実装後のマルチプロセッサ構成の変更には対応し難いといった問題点があった。
また、接続された他のプロセッサとの通信を行なうための経路選択は、それぞれのプロセッサに付されたプロセッサIDに依存するので、プロセッサを後から増設するなどプロセッサIDを変更する必要が生じた場合には、経路選択のための設定を最初からやり直さなければならないといった問題点があった。
さらに、マルチプロセッサを構成するプロセッサが故障した場合には、故障したプロセッサを修理しないとマルチプロセッサを動作させることが困難であるといった問題点があった。
本発明は、上記問題点を解決するためになされたものであり、第1の目的は、初期化時に各プロセッサのプロセッサIDを自動的に決定することが可能なプロセッサおよびマルチプロセッサ構成方法を提供することである。
第2の目的は、プロセッサIDを変更した場合でも経路選択をやり直す必要がないプロセッサおよびマルチプロセッサ構成方法を提供することである。
第3の目的は、プロセッサに接続されていない出力ポート、故障したプロセッサなどを迂回してデータパケットを送信することが可能なプロセッサおよびマルチプロセッサ構成方法を提供することである。
本発明のある局面に従えば、マルチプロセッサを構成するプロセッサであって、少なくとも1組の入出力ポートと、入力ポートに接続される第1の他のプロセッサから入力した第1の他のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定する識別子決定手段と、識別子決定手段によって決定された自己のプロセッサ識別子宛のデータパケットに含まれるデータに対して演算を行ない、演算結果を含んだデータパケットを生成する演算処理手段とを含み、出力ポートは、演算処理手段によって生成されたデータパケットを出力ポートに接続された第2の他のプロセッサに出力する。
好ましくは、プロセッサは、2組の入出力ポートを含み、識別子決定手段は、第1の他のプロセッサのプロセッサ識別子と、2つの入力ポートのいずれを介して第1の他のプロセッサのプロセッサ識別子を入力したかを示す情報とに基づいて、自己のプロセッサ識別子を決定する。
好ましくは、プロセッサはさらに、自己のプロセッサ識別子とデータパケットに含まれる送信先プロセッサ識別子とに基づいて、2つの出力ポートのいずれを介してデータパケットを出力するかを決定する出力決定手段を含む。
好ましくは、プロセッサはさらに、2つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、出力決定手段は、格納手段に格納される情報によってデータパケットを出力しようとする出力ポートが未接続であると判定すると、他方の出力ポートを介してデータパケットを出力する。
さらに好ましくは、出力決定手段は、出力ポートに接続される他のプロセッサが故障であると判定した場合、他のプロセッサに接続される出力ポートが未接続であることを示す情報を格納手段に格納する。
好ましくは、プロセッサはさらに、2つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、出力決定手段は、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、送信元のプロセッサにエラーを示すパケットを送信する。
好ましくは、プロセッサはさらに、2つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、出力決定手段は、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、予め定められたプロセッサにエラーを示すパケットを送信する。
本発明の別の局面に従えば、少なくとも1組の入出力ポートを有するプロセッサを複数接続してマルチプロセッサを構成するマルチプロセッサ構成方法であって、第1のプロセッサが、入力ポートに接続される第2のプロセッサから受信した第2のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定するステップと、第1のプロセッサが、決定された自己のプロセッサ識別子を出力ポートに接続される第3のプロセッサに送信するステップとを含む。
好ましくは、マルチプロセッサは、2組の入出力ポートを有するプロセッサ4台を環状に接続した第1層のマルチプロセッサを構成し、さらに第1層のマルチプロセッサ4台を環状に接続した第2層のマルチプロセッサを構成し、Nを1以上の整数とすると、4N個単位の階層構造を有するマルチプロセッサである。
さらに好ましくは、第1層のマルチプロセッサに含まれるプロセッサの位置を2ビットで表現し、第2層のマルチプロセッサに含まれる第1層のマルチプロセッサの位置を2ビットで表現し、N階層のマルチプロセッサのプロセッサ識別子を2×Nビットで表現する。
さらに好ましくは、マルチプロセッサを構成する各プロセッサは、受信したパケットに含まれる送信先プロセッサ識別子と自己のプロセッサ識別子とを上位階層から下位階層に向けて順次比較して行き先方向を決定し、行き先方向と自己のプロセッサ識別子の第1層における値とから出力ポートを決定する。
本発明のある局面によれば、識別子決定手段が、入力ポートに接続される第1の他のプロセッサから入力した第1の他のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定するので、初期化時にプロセッサのプロセッサ識別子を自動的に決定することが可能となる。
また、識別子決定手段が、第1の他のプロセッサのプロセッサ識別子と、2つの入力ポートのいずれを介して第1の他のプロセッサのプロセッサ識別子を入力したかを示す情報とに基づいて、自己のプロセッサ識別子を決定するので、自己のプロセッサ識別子を正確に決定することが可能となる。
また、出力決定手段が、自己のプロセッサ識別子とデータパケットに含まれる送信先プロセッサ識別子とに基づいて、2つの出力ポートのいずれを介してデータパケットを出力するかを決定するので、プロセッサ識別子を変更した場合でも経路選択をやり直す必要がなくなる。
また、出力決定手段は、格納手段に格納される情報によってデータパケットを出力しようとする出力ポートが未接続であると判定すると、他方の出力ポートを介してデータパケットを出力するので、プロセッサに接続されていない出力ポートを迂回してデータパケットを送信することが可能となる。
また、出力決定手段が、出力ポートに接続される他のプロセッサが故障であると判定した場合、他のプロセッサに接続される出力ポートが未接続であることを示す情報を格納手段に格納するので、故障したプロセッサを迂回してデータパケットを送信することが可能となる。
また、出力決定手段が、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、送信元のプロセッサにエラーを示すパケットを送信するので、送信元のプロセッサがエラー処理を行なうことが可能となる。
また、出力決定手段が、格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、予め定められたプロセッサにエラーを示すパケットを送信するので、予め定められたプロセッサがエラー処理を集中的に行なうことが可能となる。
本発明の別の局面によれば、第1のプロセッサが、入力ポートに接続される第2のプロセッサから受信した第2のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定し、決定された自己のプロセッサ識別子を出力ポートに接続される第3のプロセッサに送信するので、マルチプロセッサを構成する各プロセッサのプロセッサ識別子を自動的に決定することが可能となる。
また、マルチプロセッサは、4N個単位の階層構造を有するマルチプロセッサであるので、マルチプロセッサにおけるプロセッサの増設を容易に行なうことが可能となる。
また、第1層のマルチプロセッサに含まれるプロセッサの位置を2ビットで表現し、第2層のマルチプロセッサに含まれる第1層のマルチプロセッサの位置を2ビットで表現し、N階層のマルチプロセッサのプロセッサ識別子を2×Nビットで表現するので、プロセッサのプロセッサ識別子を容易に設定することが可能となる。
また、マルチプロセッサを構成する各プロセッサは、受信したパケットに含まれる送信先プロセッサ識別子と自己のプロセッサ識別子とを上位階層から下位階層に向けて順次比較して行き先方向を決定し、行き先方向と自己のプロセッサ識別子の第1層における値とから出力ポートを決定するので、マルチプロセッサの階層が増える場合でも、行き先方向を判定するための情報を削減することが可能となる。
(第1の実施の形態)
図1は、本発明の第1の実施の形態におけるデータ駆動型プロセッサの概略構成を示すブロック図である。このプロセッサは、合流部11と、自己のプロセッサIDを決定するID決定部12と、プロセッサIDが格納されるプロセッサIDレジスタ13と、分岐部14と、ルータ15と、PE(Processor Element)0(16)と、PE1(17)と、合流部18と、いずれの出力ポートにデータパケットを出力するかを決定する出力決定部19と、出力ポートの接続状態を格納する接続状態レジスタ20と、分岐部21とを含む。なお、本実施の形態においては、2つのPEを記載しているが、その数は特に限定されるものではない。
図1は、本発明の第1の実施の形態におけるデータ駆動型プロセッサの概略構成を示すブロック図である。このプロセッサは、合流部11と、自己のプロセッサIDを決定するID決定部12と、プロセッサIDが格納されるプロセッサIDレジスタ13と、分岐部14と、ルータ15と、PE(Processor Element)0(16)と、PE1(17)と、合流部18と、いずれの出力ポートにデータパケットを出力するかを決定する出力決定部19と、出力ポートの接続状態を格納する接続状態レジスタ20と、分岐部21とを含む。なお、本実施の形態においては、2つのPEを記載しているが、その数は特に限定されるものではない。
また、PE0(16)およびPE1(17)はそれぞれ、プログラム記憶部31と、対データ検出部32と、演算処理部33とを含む。
合流部11は、入力ポートIA、IBおよび分岐部21からデータパケットを入力し、データパケットを所定の順序に並べ替えてID決定部12に出力する。ID決定部12は、後述する方法によって自己のプロセッサIDを決定し、そのプロセッサIDをプロセッサIDレジスタ13に格納する。
分岐部14は、合流部11から出力されたデータパケットの命令実行先プロセッサ番号を参照し、そのデータパケットを自身のプロセッサ内で処理すべきか否かを判定する。データパケットを自己のプロセッサ内で処理すべきと判定すれば、そのデータパケットをルータ15に出力する。データパケットが他のプロセッサで処理されるべきと判定すれば、そのデータパケットを合流部18に出力する。
ルータ15は、分岐部14から受けたデータパケットをその行き先に応じてPE0(16)またはPE1(17)に出力する。また、ルータ15は、PE0(16)およびPE1(17)から受けたデータパケットを合流部18に出力する。
プログラム記憶部31は、ルータ15から受けたデータパケットに、必要な演算命令やノード番号を付加し、所定のビットフィールドによって構成されるデータパケットを生成して対データ検出部32に出力する。
対データ検出部32は、プログラム記憶部31からデータパケットを受けると、演算すべき2つのデータパケットが揃うまで待ち合わせを行ない、データパケットが揃い次第これらのデータパケットを演算処理部33に出力する。
演算処理部33は、対データ検出部32から受けたデータパケットに含まれる演算命令に応じて、2つのデータパケットに含まれるデータに算術演算、論理演算などの演算を実行し、命令実行先プロセッサ番号を付加したデータパケットにその演算結果を格納してルータ15に出力する。
合流部18は、分岐部14およびルータ15からデータパケットを受け、データパケットを所定の順序に並べ替えて出力決定部19に出力する。
出力決定部19は、接続状態レジスタ20を参照し、後述する方法によってデータパケットを出力ポートOAおよびOBのいずれに出力すべきかを判定して、分岐部21に指示する。
分岐部21は、出力決定部19からの指示に応じて、合流部18から受けたデータパケットを出力ポートOAまたはOBに出力する。このとき、データパケットに含まれる命令実行先プロセッサ番号が自己のプロセッサ番号であれば、分岐部21はそのデータパケットを合流部11に出力する。
図2は、図1に示すプロセッサを4台接続する場合の一例を示す図である。プロセッサID=0〜3に対応する4つのプロセッサ1−0〜1−3がループ状に接続されている。
図3は、図2に示すプロセッサを4台接続した場合のマルチプロセッサの接続例を示す図である。プロセッサID“0”のプロセッサ1−0の出力ポートOBが、プロセッサID“1”のプロセッサ1−1の入力ポートIBに接続される。プロセッサID“1”のプロセッサ1−1の出力ポートOBが、プロセッサID=2のプロセッサ1−2の入力ポートIBに接続される。プロセッサID“2”のプロセッサ1−2の出力ポートOBが、プロセッサID“3”のプロセッサ1−3の入力ポートIBに接続される。プロセッサID“3”のプロセッサ1−3の出力ポートOBが、プロセッサID“0”のプロセッサ1−0の入力ポートIBに接続される。
図4は、図1に示すプロセッサを16台接続した場合のマルチプロセッサの一例を示す図である。図4に示すように、16台のマルチプロセッサを構成するためには、図3に示す4台のマルチプロセッサ(第1層)を4台組合わせることにより第2層を構成することができる。図4において、点線で囲まれた部分が図3に示す第1層のマルチプロセッサに対応している。4台の第1層のマルチプロセッサは、それぞれ同じ接続となっている。また、4N個単位(N=1,2,3・・・)でマルチプロセッサを構成する場合にも、同様の接続で実現することが可能である。
たとえば、第1層のマルチプロセッサ4台で第2層を形成し、第2層のマルチプロセッサ4台で第3層のマルチプロセッサを形成するというように、階層的にマルチプロセッサを構成してゆき、各層のプロセッサまたはマルチプロセッサの位置を2ビットで表わし、各層分の2ビットデータを連結してこれをプロセッサIDとして表現することによって、4N個単位(N=1,2,3・・・)でマルチプロセッサを容易に構成することができる。
以下、各プロセッサのプロセッサIDを決定する方法について説明する。なお、図2〜4にはプロセッサIDが記載されているが、これは後でプロセッサIDがそのように決定されることを示すものであって、プロセッサの接続直後の状態ではこのプロセッサIDは決まっていない。
図5は、プロセッサIDを決定する際に使用される制御パケットの構成例を示す図である。この制御パケットは、32ビット、2ワード構成となっており、ホスト転送フラグ(HST)と、制御フラグ(CTL)と、命令実行先プロセッサ番号(PE#)と、オペレーションコード(OPC)と、データフィールド(DATA)とを含む。この制御パケットにおいては、プロセッサ内部のレジスタや内蔵プロセッサのプログラムメモリに対してデータの読出し/書込みを行なったり、ROMからデータを読出したりするための制御用の命令がOPCフィールドに格納される。
図6は、プロセッサ1−0に制御命令Aが入力されるところを示す図である。入力ポート41を介して制御命令Aがプロセッサ1−0に入力される。この制御命令Aは、データフィールドに格納された“0”をプロセッサIDに設定する命令である。
図7は、プロセッサ1−0にプロセッサID“0”が設定されたところを示す図である。プロセッサ1−0内のID決定部12は、合流部11を介して制御命令Aを受けると、自身のプロセッサIDが“0”であることを認識し、プロセッサIDレジスタ13に“0”を設定する。
図8は、プロセッサID“0”のプロセッサ1−0が出力ポートに制御命令Bを出力するところを示す図である。プロセッサ1−0のID決定部12は制御命令Aを受けると、そのプロセッサID“0”を制御命令Bに格納して出力する。制御命令Bは、分岐部14、合流部18および分岐部21を経て、それぞれの出力ポートから隣接するプロセッサに出力される。
図9は、ID決定部12の構成例を示す図である。ID決定部12は、内部に保持する表を参照して、制御命令Bが入力された入力ポート名と、入力した制御命令Bに格納された送信元プロセッサIDとから自己のプロセッサIDを決定する。
図10は、ID決定部12がプロセッサIDを決定する際に使用する表の一例を示す図である。たとえば、制御命令Bが入力された入力ポート名がIBであり、送信元プロセッサIDが“0”であれば、自己のプロセッサIDを“1”に決定する。この表は、ROMによって実現されてもよいし、論理回路で実現されてもよい。
図11は、プロセッサ1−1にプロセッサID“1”が設定されたところを示す図である。プロセッサ1−1内のID決定部12は、合流部11を介して制御命令Aを受けると、図10に示す表を参照して自己のプロセッサIDが“1”であることを認識し、プロセッサIDレジスタ13に“1”を設定する。
図12は、プロセッサID“1”のプロセッサ1−1が出力ポートに制御命令Bを出力するところを示す図である。プロセッサ1−1のID決定部12は自己のプロセッサIDを決定すると、そのプロセッサID“1”を制御命令Bに格納して出力する。制御命令Bは、分岐部14、合流部18および分岐部21を経て、それぞれの出力ポートから隣接するプロセッサに出力される。図4に示すように、プロセッサID“1”のプロセッサの出力ポートOAにプロセッサID“4”のプロセッサが接続されている場合には、制御命令BはプロセッサID“2”のプロセッサ1−2とプロセッサID“4”のプロセッサとの両方に出力される。
図13は、プロセッサ1−2にプロセッサID“2”が設定されたところを示す図である。プロセッサ1−2内のID決定部12は、合流部11を介して制御命令Bを受けると、図10に示す表を参照して自己のプロセッサIDが“2”であることを認識し、プロセッサIDレジスタ13に“2”を設定する。そして、そのプロセッサID“2”を制御命令Bに格納して出力する。制御命令Bは、分岐部14、合流部18および分岐部21を経て、それぞれの出力ポートから隣接するプロセッサに出力される。図4に示すように、プロセッサID“2”のプロセッサの出力ポートOAにプロセッサID“D”のプロセッサが接続されている場合には、制御命令BはプロセッサID“3”のプロセッサ1−3とプロセッサID“D”のプロセッサとの両方に出力される。
プロセッサ1−3内のID決定部12は、合流部11を介して制御命令Bを受けると、図10に示す表を参照して自己のプロセッサIDが“3”であることを認識し、プロセッサIDレジスタ13に“3”を設定する。そして、そのプロセッサID“3”を制御命令Bに格納して出力する。制御命令Bは、分岐部14、合流部18および分岐部21を経て、それぞれの出力ポートから隣接するプロセッサに出力される。このようにして、全てのプロセッサのプロセッサIDが決定される。
図14は、プロセッサ1−0において制御命令Bが破棄されるところを示す図である。プロセッサ1−0は、プロセッサ1−3から制御命令Bを受けるが、既に自己のプロセッサIDが決定しているので、その制御命令Bを破棄する。これによって、必要以上にプロセッサIDを決定するための制御命令Bが発行されるのを防止することができ、プロセッサID決定のための処理動作を終了させることができる。
図15は、出力決定部19の構成例を示す図である。図6〜図14を用いて説明した動作によって各プロセッサのプロセッサIDが決定された後、各プロセッサから任意のプロセッサへの最適経路を決定することができる。すなわち、出力決定部19は、内部に保持する真理値表を参照して、自己プロセッサIDと送信先プロセッサIDとから、データパケットを出力する出力ポートを選択するための出力ポート選択信号を生成し、分岐部21に出力する。
図16は、出力ポートを選択する際に使用される真理値表の一例を示す図である。この真理値表においては、“A”が出力ポートOAを選択することを示し、“B”が出力ポートOBを選択することを示している。たとえば、プロセッサID“0”のプロセッサ1−0からプロセッサID“4”のプロセッサにデータパケットを送信する場合、プロセッサ1−0の出力決定部19においては、自己プロセッサIDが“0”であり、送信先プロセッサIDが“4”であるので、データパケットを出力ポートOBに出力する。プロセッサ1−1の出力決定部19においては、自己プロセッサIDが“1”であり、送信先プロセッサIDが“4”であるので、データパケットを出力ポートOAに出力する。このようにして、データパケットがプロセッサID“0”のプロセッサからプロセッサID“4”のプロセッサに送信される。
図17は、各プロセッサの出力ポートの接続状態を示す図である。プロセッサは、各出力ポートに対応するReady信号を入力してデータパケットを出力する。このReady信号は、出力ポートが接続されるプロセッサから出力される信号であり、データパケットを受け取る準備ができているか否かを示す。出力ポートがいずれのプロセッサにも接続されていない場合は、プロセッサ起動時の初期化動作中にハンドシェークを行なえない。すなわち、出力決定部19はこのReady信号を参照し、一定時間Ready状態にならない場合には、その出力ポートがプロセッサに接続されていないと判定する。
また、データ駆動プロセッサにおいてはC素子が用いられており、転送許可入力端子RIが使用禁止状態(“L”レベルの状態)に固定されていれば、出力ポートからデータパケットを出力することができない。初期化動作時に、RI端子が一定時間“L”レベルであることを検出して、出力ポートにプロセッサが接続されていないことを検出することも可能である。なお、このC素子の動作の詳細については、本出願人が出願した特願2004−338998号などを参照されたい。
出力決定部19は、図17に示すように、出力ポートがいずれかのプロセッサに接続されているか否かの情報を接続状態レジスタ20に格納する。たとえば、プロセッサ1−0の出力ポートOA(50a)にはプロセッサが接続されておらず、出力ポートOB(50b)にはプロセッサが接続されているので、これらの情報がプロセッサ1−0の接続状態レジスタ20に格納される。
なお、使用禁止にある出力ポートに送信データパケットが到着した場合には、出力決定部19はエラーとしてそのデータパケットを送信元のプロセッサ宛に返送する。また、プロセッサ内に設けられた図示しない転送ホストレジスタに設定されたプロセッサ宛に、エラーのパケットを送信するようにしてもよい。
また、送信先のプロセッサが使用禁止の出力ポートに直接接続されておらず、その先に接続されている場合には、使用禁止の出力ポートとは別の出力ポートにデータパケットを出力することによって、使用禁止の出力ポートを迂回して目的のプロセッサにデータパケットを送信することが可能である。
また、テストプログラムによって故障が検出されたプロセッサに接続される出力ポートに対応する接続状態レジスタ20に使用禁止を示すビットを設定することにより、故障したプロセッサを迂回してデータパケットを送信することができ、故障したプロセッサを切り離すことも可能である。これによって、マルチプロセッサを停止させずに処理を続けることが可能となる。
また、プロセッサIDを記憶する手段として、プロセッサIDレジスタ13やSRAM(Static Random Access Memory)を用いた場合には、プロセッサの電源を切ることによって設定が消去されるので、マルチプロセッサの構成が変更になった場合でも自動的にプロセッサIDの設定が行なわれる。
また、プロセッサIDを記憶する手段として、フラッシュメモリやEEPROM(Electrically Erasable and Programmable Read Only Memory)を用いた場合には、プロセッサの電源を切っても設定が消去されないので、プロセッサIDを再度設定する必要がなくなり速やかに動作を行なうことが可能となる。
以上説明したように、本実施の形態におけるプロセッサによれば、ID決定部12が、制御命令Bが入力された入力ポート名と、入力した制御命令Bに格納された送信元プロセッサIDとから自己のプロセッサIDを決定するようにしたので、初期化処理時に各プロセッサのプロセッサIDを自動的に決定することが可能となった。
また、出力決定部19が、内部に保持する真理値表を参照し、自己プロセッサIDと送信先プロセッサIDとからデータパケットの送信先の最適経路を決定するようにしたので、プロセッサを後から増設するなどプロセッサIDが変更された場合にも、経路選択のための設定をやり直す必要がなくなった。
また、送信先に接続される出力ポートが未接続の場合、出力決定部19がそのデータパケットをエラーとして送信元または予め定められたプロセッサに送信するようにしたので、システムとしてエラー処理を容易に行なうことが可能となった。
また、出力決定部19は、接続状態レジスタ20に格納された各出力ポートの接続状態を参照してデータパケットを出力するようにしたので、使用禁止の出力ポートや故障したプロセッサを迂回してデータパケットを送信することが可能となった。
また、プロセッサ4台で第1層のマルチプロセッサを構成し、第2層のマルチプロセッサ4台で第3層のマルチプロセッサを構成するというように、4台のプロセッサを基本構成として4N個単位(N=1,2,3・・・)でマルチプロセッサを構成するようにしたので、マルチプロセッサにおけるプロセッサの増設を容易に行なうことが可能となった。
(第2の実施の形態)
本発明の第2の実施の形態におけるデータ駆動型プロセッサは、図1に示す第1の実施の形態におけるデータ駆動型プロセッサと比較して、出力決定部19の内部構成が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
本発明の第2の実施の形態におけるデータ駆動型プロセッサは、図1に示す第1の実施の形態におけるデータ駆動型プロセッサと比較して、出力決定部19の内部構成が異なる点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
図18は、本発明の第2の実施の形態における出力決定部19の処理手順を説明するためのフローチャートである。出力決定部19は、最上位階層から行き先方向を決定し、階層を下げながら順次行き先方向を決定することにより、最終的に第1層の送信先プロセッサにデータパケットを送信する。
まず、出力決定部19は、自己プロセッサIDと送信先プロセッサIDとから、最上位階層における行き先方向がN,E,W,Sのいずれであるかを判定する(S11)。
図19は、行き先方向を決定する際に使用される真理値表の一例を示す図である。この真理値表においては、自己プロセッサIDのうち現在の階層に対応する2ビットを自己IDとし、送信先プロセッサIDのうち現在の階層に対応する2ビットを送信先IDとして行き先方向を判定する。たとえば、自己プロセッサIDが“0xC1”であり、送信先プロセッサIDが“0x46”であれば、最上位階層における自己IDは“0x3”となり、送信先IDは“0x1”となる。この場合、行き先方向はE(右方向)と判定される。
次に、出力決定部19は、行き先方向がN(上方向)であれば(S12,Yes)、自己プロセッサIDの第1層における自己IDが“0x0”であるか否かを判定する(S13)。たとえば、自己プロセッサIDが“0xC1”であれば、第1層における自己IDは“0x1”となる。第1層における自己IDが“0x0”であれば(S13,Yes)、出力ポートOAを選択する。また、第1層における自己IDが“0x0”でなければ(S13,No)、出力ポートOBを選択する。
また、出力決定部19は、行き先方向がE(右方向)であれば(S14,Yes)、自己プロセッサIDの第1層における自己IDが“0x1”であるか否かを判定する(S15)。第1層における自己IDが“0x1”であれば(S15,Yes)、出力ポートOAを選択する。また、第1層における自己IDが“0x1”でなければ(S15,No)、出力ポートOBを選択する。
また、出力決定部19は、行き先方向がW(左方向)であれば(S16,Yes)、自己プロセッサIDの第1層における自己IDが“0x3”であるか否かを判定する(S17)。第1層における自己IDが“0x3”であれば(S17,Yes)、出力ポートOAを選択する。また、第1層における自己IDが“0x3”でなければ(S17,No)、出力ポートOBを選択する。
また、出力決定部19は、行き先方向がS(下方向)であれば(S18,Yes)、自己プロセッサIDの第1層における自己IDが“0x2”であるか否かを判定する(S19)。第1層における自己IDが“0x2”であれば(S19,Yes)、出力ポートOAを選択する。また、第1層における自己IDが“0x2”でなければ(S19,No)、出力ポートOBを選択する。
最上位階層における自己IDと送信先IDが一致する場合には(S18,No)、送信先プロセッサが最上位階層において同じグループに属するので、階層を1階層分だけ下げて(S20)、ステップS11以降の処理を繰返す。なお、現在の階層が第1階層であれば、送信先プロセッサにデータパケットが到達したことになる。
以上説明したように、本実施の形態におけるプロセッサによれば、各階層において真理値表を参照しながら行き先方向を決定し、この行き先方向と自己プロセッサIDの第1層における値とから出力ポートを決定するようにしたので、マルチプロセッサの階層が増える場合であっても、真理値表を格納する回路は同じ物が使用できる。たとえば、この真理値表をROMに格納する場合、第1の実施の形態と比較して、ROMの容量を削減することが可能となる。
また、マルチプロセッサの構成を変更する場合であっても、出力決定部19の構成を変更する必要がなくなる。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1,100 データ駆動型プロセッサ、11,18 合流部、12 ID決定部、13 プロセッサIDレジスタ、14,21 分岐部、15 ルータ、16,17 PE、19 出力決定部、20 接続状態レジスタ、31 プログラム記憶部、32 対データ検出部、33 演算処理部、41,101 入力ポート、50a〜53a,50b〜53b,102 出力ポート。
Claims (11)
- マルチプロセッサを構成するプロセッサであって、
少なくとも1組の入出力ポートと、
前記入力ポートに接続される第1の他のプロセッサから入力した該第1の他のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定する識別子決定手段と、
前記識別子決定手段によって決定された自己のプロセッサ識別子宛のデータパケットに含まれるデータに対して演算を行ない、演算結果を含んだデータパケットを生成する演算処理手段とを含み、
前記出力ポートは、前記演算処理手段によって生成されたデータパケットを前記出力ポートに接続された第2の他のプロセッサに出力する、プロセッサ。 - 前記プロセッサは、2組の入出力ポートを含み、
前記識別子決定手段は、前記第1の他のプロセッサのプロセッサ識別子と、前記2つの入力ポートのいずれを介して前記第1の他のプロセッサのプロセッサ識別子を入力したかを示す情報とに基づいて、前記自己のプロセッサ識別子を決定する、請求項1記載のプロセッサ。 - 前記プロセッサはさらに、前記自己のプロセッサ識別子と前記データパケットに含まれる送信先プロセッサ識別子とに基づいて、前記2つの出力ポートのいずれを介して前記データパケットを出力するかを決定する出力決定手段を含む、請求項2記載のプロセッサ。
- 前記プロセッサはさらに、前記2つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、
前記出力決定手段は、前記格納手段に格納される情報によってデータパケットを出力しようとする出力ポートが未接続であると判定すると、他方の出力ポートを介して前記データパケットを出力する、請求項3記載のプロセッサ。 - 前記出力決定手段は、出力ポートに接続される他のプロセッサが故障であると判定した場合、該他のプロセッサに接続される出力ポートが未接続であることを示す情報を前記格納手段に格納する、請求項4記載のプロセッサ。
- 前記プロセッサはさらに、前記2つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、
前記出力決定手段は、前記格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、送信元のプロセッサにエラーを示すパケットを送信する、請求項3記載のプロセッサ。 - 前記プロセッサはさらに、前記2つの出力ポートのそれぞれが他のプロセッサに接続しているか否かを示す情報を格納する格納手段を含み、
前記出力決定手段は、前記格納手段を参照して、データパケットの送信先のプロセッサに接続される出力ポートが未接続であると判定すると、予め定められたプロセッサにエラーを示すパケットを送信する、請求項3記載のプロセッサ。 - 少なくとも1組の入出力ポートを有するプロセッサを複数接続してマルチプロセッサを構成するマルチプロセッサ構成方法であって、
第1のプロセッサが、前記入力ポートに接続される第2のプロセッサから受信した該第2のプロセッサのプロセッサ識別子に基づいて、自己のプロセッサ識別子を決定するステップと、
前記第1のプロセッサが、前記決定された自己のプロセッサ識別子を前記出力ポートに接続される第3のプロセッサに送信するステップとを含む、マルチプロセッサ構成方法。 - 前記マルチプロセッサは、2組の入出力ポートを有するプロセッサ4台を環状に接続した第1層のマルチプロセッサを構成し、さらに第1層のマルチプロセッサ4台を環状に接続した第2層のマルチプロセッサを構成し、Nを1以上の整数とすると、4N個単位の階層構造を有するマルチプロセッサである、請求項8記載のマルチプロセッサ構成方法。
- 前記第1層のマルチプロセッサに含まれるプロセッサの位置を2ビットで表現し、前記第2層のマルチプロセッサに含まれる第1層のマルチプロセッサの位置を2ビットで表現し、N階層のマルチプロセッサのプロセッサ識別子を2×Nビットで表現する、請求項9記載のマルチプロセッサ構成方法。
- 前記マルチプロセッサを構成する各プロセッサは、受信したパケットに含まれる送信先プロセッサ識別子と自己のプロセッサ識別子とを上位階層から下位階層に向けて順次比較して行き先方向を決定し、該行き先方向と前記自己のプロセッサ識別子の第1層における値とから出力ポートを決定する、請求項10記載のマルチプロセッサ構成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006042357A JP2007115223A (ja) | 2005-09-20 | 2006-02-20 | プロセッサおよびマルチプロセッサ構成方法 |
US11/522,986 US20070083731A1 (en) | 2005-09-20 | 2006-09-19 | Processor automatically performing processor ID setting and path setting and method of configuring multiprocessor |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005271751 | 2005-09-20 | ||
JP2006042357A JP2007115223A (ja) | 2005-09-20 | 2006-02-20 | プロセッサおよびマルチプロセッサ構成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007115223A true JP2007115223A (ja) | 2007-05-10 |
Family
ID=37912158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006042357A Pending JP2007115223A (ja) | 2005-09-20 | 2006-02-20 | プロセッサおよびマルチプロセッサ構成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070083731A1 (ja) |
JP (1) | JP2007115223A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7865703B2 (en) * | 2006-05-05 | 2011-01-04 | International Business Machines Corporation | Method and apparatus for executing instrumentation code within alternative processor resources |
US20070260849A1 (en) * | 2006-05-05 | 2007-11-08 | Chen Wen-Tzer T | Method and apparatus for executing instrumentation code using a target processor |
US7783866B2 (en) * | 2006-05-05 | 2010-08-24 | International Business Machines Corporation | Method and apparatus for executing instrumentation code using processor instructions |
US8245199B2 (en) * | 2006-05-05 | 2012-08-14 | International Business Machines Corporation | Selectively marking and executing instrumentation code |
US20070261032A1 (en) * | 2006-05-05 | 2007-11-08 | Chen Wen-Tzer T | Method and apparatus for hardware assisted profiling of code |
US7814466B2 (en) * | 2006-05-05 | 2010-10-12 | International Business Machines Corporation | Method and apparatus for graphically marking instructions for instrumentation with hardware assistance |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0746322B2 (ja) * | 1988-05-23 | 1995-05-17 | 日本電気株式会社 | 障害装置特定システム |
JPH06259583A (ja) * | 1993-03-10 | 1994-09-16 | Sharp Corp | データ駆動型プロセッサの接続方法 |
US5450578A (en) * | 1993-12-23 | 1995-09-12 | Unisys Corporation | Method and apparatus for automatically routing around faults within an interconnect system |
JPH07219913A (ja) * | 1994-01-28 | 1995-08-18 | Fujitsu Ltd | マルチプロセッサシステムの制御方法及び装置 |
US5701416A (en) * | 1995-04-13 | 1997-12-23 | Cray Research, Inc. | Adaptive routing mechanism for torus interconnection network |
US5590301A (en) * | 1995-10-06 | 1996-12-31 | Bull Hn Information Systems Inc. | Address transformation in a cluster computer system |
FR2792745B1 (fr) * | 1999-04-26 | 2001-06-15 | Bull Sa | Architecture d'interconnexion modulaire pour machine multiprocesseur extensible, mettant en oeuvre une hierarchie de bus virtuelle a plusieurs niveaux et la meme brique de base pour tous les niveaux |
JP4246141B2 (ja) * | 2004-03-22 | 2009-04-02 | シャープ株式会社 | データ処理装置 |
-
2006
- 2006-02-20 JP JP2006042357A patent/JP2007115223A/ja active Pending
- 2006-09-19 US US11/522,986 patent/US20070083731A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20070083731A1 (en) | 2007-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6856612B2 (ja) | 多層相互接続による分散型プロセッサを有する処理システム | |
US20230289310A1 (en) | Top level network and array level network for reconfigurable data processors | |
TWI289789B (en) | A scalar/vector processor and processing system | |
US8145880B1 (en) | Matrix processor data switch routing systems and methods | |
US4985832A (en) | SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors | |
US7779244B2 (en) | Multi-socket boot | |
US11550750B2 (en) | Memory network processor | |
TWI521441B (zh) | 運用rfid之多插槽伺服器管理技術 | |
JP2007115223A (ja) | プロセッサおよびマルチプロセッサ構成方法 | |
US7958341B1 (en) | Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory | |
JP6005392B2 (ja) | ルーティングのための方法及び装置 | |
KR20210033996A (ko) | 전용 저 레이턴시 링크를 사용한 다수의 하드웨어 가속기에 대한 통합된 어드레스 공간 | |
US8327114B1 (en) | Matrix processor proxy systems and methods | |
US7571300B2 (en) | Modular distributive arithmetic logic unit | |
KR100706145B1 (ko) | 멀티프로세서 시스템에서 프로세서 집적 소자를 구성하기위한 방법 및 시스템 | |
US7085966B2 (en) | Methods and arrangements for repairing ports | |
US8131975B1 (en) | Matrix processor initialization systems and methods | |
TWI784845B (zh) | 對可重配置處理器之資料流功能卸載 | |
US7870365B1 (en) | Matrix of processors with data stream instruction execution pipeline coupled to data switch linking to neighbor units by non-contentious command channel / data channel | |
US20140006763A1 (en) | Initialization of multi-core processing system | |
CN108028849B (zh) | 用于应用和资源可重用性的利用分层抽象的iot服务建模 | |
CN109564547B (zh) | 存储器单元和存储器单元处理操作请求的操作方法 | |
US10203911B2 (en) | Content addressable memory (CAM) implemented tuple spaces | |
TWI825853B (zh) | 可重組態資料處理器的缺陷修復電路 | |
JPH04220722A (ja) | パイプライン処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090203 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090915 |