(57)【要約】【課題】各プロセッサエレメントに入力される複数のデータの待ち合わせを局所的に行い、プログラミングの際にはデータの同期について考慮する必要のない演算装置を提供する。【解決手段】演算装置は、１つ以上の第１のプロセッサエレメントと、１つ以上の第２のプロセッサエレメントと、待合せ手段とを有し、待合せ手段は、第１のプロセッサエレメントそれぞれが出力するデータを保持するペイロードと、ペイロードに対応し、対応するペイロードの有効状態又は無効状態を示すフラグを有し、フラグは、第１のプロセッサエレメントが、対応するペイロードにデータを書き込んだときに有効状態となり、該データを入力とする総ての第２のプロセッサエレメントが、ペイロードよりデータを読み出したときに無効状態となる。【選択図】図１
2007164472.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の第１のプロセッサエレメントと、１つ以上の第２のプロセッサエレメントと、待合せ手段とを有する演算装置であって、
待合せ手段は、第１のプロセッサエレメントそれぞれが出力するデータを保持するペイロードフィールドと、ペイロードフィールドに対応し、対応するペイロードフィールドの有効状態又は無効状態を示すフラグフィールドを有し、
フラグフィールドは、第１のプロセッサエレメントが、対応するペイロードフィールドにデータを書き込んだときに有効状態となり、該データを入力とする総ての第２のプロセッサエレメントが、ペイロードフィールドよりデータを読み出したときに無効状態となること、
を特徴とする演算装置。
【請求項２】
第１のプロセッサエレメントは、フラグフィールドが無効状態のときにのみ、新たなデータを対応するペイロードフィールドに書き込むこと、
を特徴とする請求項１に記載の演算装置。
【請求項３】
フラグフィールドは、第２のプロセッサエレメントに対応し、対応する第２のプロセッサエレメントがペイロードフィールドのデータを読み出したか否かを示すフラグから構成され、
第２のプロセッサエレメントは、入力とするデータが保持されているペイロードフィールドに対応するフラグフィールドの、自身に対応するフラグの総てが、データを読み出していないことを示している場合にのみ、入力とするデータを読み出すこと、
を特徴とする請求項２に記載の演算装置。
【請求項４】
第２のプロセッサエレメントの各入力には、１つ以上のデータを保持するＦＩＦＯバッファが設けられ、ペイロードフィールドに新たに書き込まれたデータは、同時に該データを入力とする総ての第２のプロセッサエレメントのＦＩＦＯバッファに出力され、
ＦＩＦＯバッファは、保持しているデータがその容量に達したときにはフルフラグを有効に、それ以外の場合は無効に設定し、
第１のプロセッサエレメントは、出力するデータを入力とする総てのＦＩＦＯバッファがフルフラグを無効に設定している場合にのみ、新たなデータをペイロードフィールドに書き込むこと、
を特徴とする請求項１に記載の演算装置。
【請求項５】
パイプラインを構成する各ステージの間に待合せ手段を有する演算装置であって、
前記待合せ手段は、各ステージの出力である命令又はデータを保持するペイロードフィールドと、ペイロードフィールドの有効状態又は無効状態を示すフラグフィールドを有し、フラグフィールドは、ペイロードフィールドに命令又はデータが書き込まれたときに有効状態となり、ペイロードフィールドから命令又はデータが読み出されたときに無効状態となり、
各ステージは、フラグフィールドが無効状態のときにのみ下流にある待合せ手段のペイロードフィールドに命令又はデータを書き込み、フラグフィールドが有効状態のときにのみ上流にある待合せ手段のペイロードフィールドから命令又はデータを読み出すこと、
を特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサエレメント間又はパイプラインの各ステージを構成する機能ブロック間に待ち合わせ機構を有する演算装置に関する。
【背景技術】
【０００２】
特許文献１には、複数のプロセッサエレメント（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ：以後、ＰＥと呼ぶ。）を行列状に配置し、各ＰＥでの演算内容と各ＰＥ間の接続をプログラムにより変更することで、目的とするデータ処理を実現する演算装置が記載されている。
【０００３】
図８は、特許文献１に記載の演算装置を説明する図である。図８において、ＰＥ７２及びＰＥ７３は、それぞれ入力６１及び６２に入力される値の乗算を実行し、ＰＥ７１は入力６１及び６２に入力される値の加算を実行するようにプログラムされ、更に、ＰＥ７２の出力がＰＥ７１の入力６１に、ＰＥ７３の出力がＰＥ７１の入力６２に接続するようにプログラムされている。即ち、ＰＥ７２の入力６１に入力される値をａと、ＰＥ７２の入力６２に入力される値をｂと、ＰＥ７３の入力６１に入力される値をｃと、ＰＥ７３の入力６２に入力される値をｄとすると、ＰＥ７１の出力は、ａ*ｂ＋ｃ*ｄとなる。
【０００４】
図８においては、ＰＥ７２の入力６１に値“３”、“５”、“７”が順に入力され、ＰＥ７２の入力６２に値“２”、“４”、“１”が順に入力され、ＰＥ７３の入力６１に値“１”、“４”、“４”が順に入力され、ＰＥ７３の入力６２に値“３”、“３”、“１”が順に入力されており、ＰＥ７１からは、値“９”、“３２”、“１１”が順に出力されている。
【０００５】
特許文献１に記載の演算装置においては、各ＰＥに入力される複数のデータ間のタイミングについて同期制御を行う必要がある。例えば、図８において、ＰＥ７２の入力６１に値“５”が入力されている間に、入力６２に値“４”が入力されるように制御する必要があり、ＰＥ７１の入力６１に値“２０”が入力されている間に、入力６２に値“１２”が入力されるように演算装置を制御する必要があり、この同期制御なしで演算装置は正しく動作しない。
【０００６】
特許文献１には、この同期制御の構成は記載されていないが、演算装置全体での同期制御は演算装置の構成を複雑し、プログラミングにより同期を保障する場合にはプログラマの負担が重くなる。
【０００７】
また、ＲＩＳＣプロセッサのパイプラインにおいてもこれと似た問題がある。図９は、ＲＩＳＣプロセッサのパイプライン構造を示す図である。図９によると、ＲＩＳＣプロセッサは、命令フェッチ部８１と、命令デコード部８２と、命令実行部８３と、ライトバック部８４により４ステージのパイプラインを構成している。理想的なパイプライン構成においては、パイプラインに投入される各命令は、流れ作業のごとく順次実行されていくが、実際には、データハザードや制御ハザード等の種々のハザードにより、或いは、命令実行に数ステージ必要な命令の存在によりストールを行う必要がある。ストールとは、パイプラインのステージを構成する機能ブロック、つまり図９の例では、命令フェッチ部８１、命令デコード部８２、命令実行部８３、ライトバック部８４のいずれかでの処理を終了した命令が、次の機能ブロックでの処理に移れずに、次の機能ブロックでの処理が可能となるまで待ち合わせることをいい、例えば、ある命令のデコードが命令デコード部８２で終了したとしても、先の命令の実行が命令実行部８３で終了していない場合に発生する。
【０００８】
このため、ＲＩＳＣプロセッサは、パイプライン制御部９を備えており、各部での処理状況に基づき、ストール即ち、処理の待機命令を各部に対して行う。
【０００９】
【特許文献１】特開２００１−３１２４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したように、特許文献１の演算装置において、演算装置全体での同期制御は演算装置の構成を複雑し、プログラミングにより同期を保障する場合にはプログラマの負担が重くなる。
【００１１】
また、図９に示すパイプライン構造において、例えば、命令実行部９３を複数にするといった、パイプラインステージの段数の変更を伴う設計変更を行う場合、パイプライン制御部９を含めたプロセッサ全体の設計変更が必要になるという問題がある。
【００１２】
従って、本発明は、簡易な構成で、各ＰＥに入力される複数のデータの待ち合わせを行い、プログラミングの際にはデータの同期について考慮する必要のない演算装置を提供することを目的とする。
【００１３】
また、演算装置の設計変更を容易とするため、全体を管理制御するパイプライン制御部を必要としないパイプライン構成を有する演算装置を提供することも目的とする。
【課題を解決するための手段】
【００１４】
本発明における演算装置によれば、
１つ以上の第１のプロセッサエレメントと、１つ以上の第２のプロセッサエレメントと、待合せ手段とを有する演算装置であって、待合せ手段は、第１のプロセッサエレメントそれぞれが出力するデータを保持するペイロードフィールドと、ペイロードフィールドに対応し、対応するペイロードフィールドの有効状態又は無効状態を示すフラグフィールドを有し、フラグフィールドは、第１のプロセッサエレメントが、対応するペイロードフィールドにデータを書き込んだときに有効状態となり、該データを入力とする総ての第２のプロセッサエレメントが、ペイロードフィールドよりデータを読み出したときに無効状態となることを特徴とする。
【００１５】
本発明の演算装置における他の実施形態によれば、
第１のプロセッサエレメントは、フラグフィールドが無効状態のときにのみ、新たなデータを対応するペイロードフィールドに書き込むことも好ましい。
【００１６】
また、本発明の演算装置における他の実施形態によれば、
フラグフィールドは、第２のプロセッサエレメントに対応し、対応する第２のプロセッサエレメントがペイロードフィールドのデータを読み出したか否かを示すフラグから構成され、第２のプロセッサエレメントは、入力とするデータが保持されているペイロードフィールドに対応するフラグフィールドの、自身に対応するフラグの総てが、データを読み出していないことを示している場合にのみ、入力とするデータを読み出すことも好ましい。
【００１７】
更に、本発明の演算装置における他の実施形態によれば、
第２のプロセッサエレメントの各入力には、１つ以上のデータを保持するＦＩＦＯバッファが設けられ、ペイロードフィールドに新たに書き込まれたデータは、同時に該データを入力とする総ての第２のプロセッサエレメントのＦＩＦＯバッファに出力され、ＦＩＦＯバッファは、保持しているデータがその容量に達したときにはフルフラグを有効に、それ以外の場合は無効に設定し、第１のプロセッサエレメントは、出力するデータを入力とする総てのＦＩＦＯバッファがフルフラグを無効に設定している場合にのみ、新たなデータをペイロードフィールドに書き込むことも好ましい。
【００１８】
更に、本発明の演算装置における他の実施形態によれば、
パイプラインを構成する各ステージの間に待合せ手段を有する演算装置であって、前記待合せ手段は、各ステージの出力である命令又はデータを保持するペイロードフィールドと、ペイロードフィールドの有効状態又は無効状態を示すフラグフィールドを有し、フラグフィールドは、ペイロードフィールドに命令又はデータが書き込まれたときに有効状態となり、ペイロードフィールドから命令又はデータが読み出されたときに無効状態となり、各ステージは、フラグフィールドが無効状態のときにのみ下流にある待合せ手段のペイロードフィールドに命令又はデータを書き込み、フラグフィールドが有効状態のときにのみ上流にある待合せ手段のペイロードフィールドから命令又はデータを読み出すことを特徴とする。
【発明の効果】
【００１９】
演算装置全体の同期制御や、入力データの同期を意識したプログラミングを行うことなく、データを入出力するプロセッサエレメント間での局所的な制御という簡易な構成で、各プロセッサエレメントへの入力データの同期を実現できる。また、各プロセッサエレメントの入力にＦＩＦＯバッファを設けることで、上流に位置するプロセッサエレメントが、待合せ手段にデータを書き込むサイクルの低減が可能となる。
【００２０】
パイプライン構成を有する演算装置において、パイプライン制御部が必要なくなり、また、各ステージ間のストールの制御は局所的に独立して実行されるため、パイプラインのステージ数を増減させたとしても局所的な設計変更で対処できるという利点がある。
【発明を実施するための最良の形態】
【００２１】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
【００２２】
図１は、本発明による演算装置が有する、ＰＥ間の接続構成を示す図である。図１のＰＥは、プログラムによりその演算内容が規定される。図１によると、各ＰＥは、その入力を直接他のＰＥから取得するのではなく、必ず、待合せ部５を介して取得する。つまり、ＰＥ１０、２０及び３０は、出力データを待合せ部５に書き込み、ＰＥ１１、２１及び３１は、入力データを待合せ部５から読み出して取得する。尚、ＰＥの行数及び列数は例示であり、本発明は、１以上の任意の行数及び２以上の任意の列数に適応可能である。
【００２３】
図２は、待合せ部５の構成を示す図である。待合せ部５は、符号５１〜５ｎで示すｎ個のレジスタを有し、各レジスタは、接続フラグフィールドと、状態フラグフィールドと、ペイロードフィールドを含んでいる。各レジスタにデータを書き込むＰＥは、プログラムにより、又は、ハードウェア構成により決定される。更に、各レジスタからデータを読み出すＰＥは、プログラムにより決定される。
【００２４】
レジスタ５１〜５ｎの接続フラグフィールドは、それぞれが、データの読出しを行うＰＥに対応する複数ビットからなり、実際にデータを読み出す必要があるＰＥに対応するビットに、例えば、“１”を設定し、それ以外のＰＥに対応するビットに“０”を設定する。実際にデータを読み出す必要があるＰＥは、プログラムに応じて決定され、当該プログラムの実行時に初期設定として接続フィールドに書き込まれる。
【００２５】
レジスタ５１〜５ｎのペイロードフィールドは、任意のビット長であり、ＰＥ間で入出力されるデータを保持する。状態フラグフィールドは、それぞれが、データの読出しを行うＰＥに対応する複数ビットからなり、例えば、ペイロードフィールドにデータが書き込まれたときに、総てのビットが“１”に設定される。また、当該ペイロードフィールドからデータが読み出されたときに、データの読み出しを行ったＰＥに対応するビット位置が“０”になるよう制御される。
【００２６】
データを読み出すＰＥは、状態フラグフィールドの自身に対応するビットが“１”である場合には、当該ペイロードフィールドに入力データが設定されていることを、“０”である場合には、当該ペイロードフィールドには未だ入力データが設定されていないことを認識する。状態フラグフィールドの値の設定、変更は、データの読出し及び書き込みを行うＰＥが行うことも、図示しない待合せ部５の制御部が行う構成とすることも可能である。また、接続フラグフィールドと、状態フラグフィールドの同一プロセッサエレメントに対応しているビット同士での論理積が総て“０”であることは、書き込んだデータを入力として使用するＰＥの総てがデータの読出しを行ったことを意味する。従って、ペイロードフィールドにデータを書き込むＰＥは、接続フラグフィールドと、状態フラグフィールドの同一ＰＥに対応しているビット同士での論理積が総て“０”である場合にのみ、新しいデータのペイロードフィールドへの書き込みを行う。
【００２７】
図３及び図４を用いて、ＰＥ間でのデータの入出力のための動作を具体的に説明する。図３は、説明に用いるＰＥ間でのデータ入出力関係を示す図である。図３によると、ＰＥ１０が出力するデータは、待合せ部５のレジスタ５１に書き込まれてＰＥ１１及び２１の入力となり、ＰＥ２０が出力するデータは、待合せ部５のレジスタ５２に書き込まれてＰＥ１１及び３１の入力となり、ＰＥ３０が出力するデータは、待合せ部５のレジスタ５３に書き込まれてＰＥ２１及び３１の入力となっている。
【００２８】
図４は、図３の入出力関係での待合せ部５の接続フラグフィールドと、状態フラグフィールドの遷移を説明する図である。図３に示すように、図４のレジスタ５１には、ＰＥ１０が書き込みを行い、レジスタ５２には、ＰＥ２０が書き込みを行い、レジスタ５３には、ＰＥ３０が書き込みを行う。また、各レジスタの左側３ビットは接続フラグフィールドであり、右側３ビットは状態フラグフィールドであり、接続フラグフィールド及び状態フラグフィールドの第１ビットはＰＥ１１に対応し、第２ビットはＰＥ２１に対応し、第３ビットはＰＥ３１に対応している。
【００２９】
図４（ａ）〜（ｄ）の総てにおいて、レジスタ５１の接続フラグフィールドの第１、２、３ビットは、それぞれ、“１”、“１”、“０”であり、これは、ＰＥ１０が出力するデータが、ＰＥ１１及び２１の入力となることに対応している。同様に、レジスタ５２の接続フラグフィールドの第１、２、３ビットは、それぞれ、“１”、“０”、“１”であり、これは、ＰＥ２０が出力するデータが、ＰＥ１１及び３１の入力となることに対応し、レジスタ５３の接続フラグフィールドの第１、２、３ビットは、それぞれ、“０”、“１”、“１”であり、これは、ＰＥ３０が出力するデータが、ＰＥ２１及び３１の入力となることに対応している。
【００３０】
まず、ＰＥ１０、２０及び３０のそれぞれが出力データを、待合せ部５の対応するレジスタに書き込んだものとする。図４（ａ）は、そのときの、各レジスタの状態を示し、総ての状態フラグフィールドの、総てのビットは、“１”に設定されている。
【００３１】
ＰＥ１１、２１及び３１のそれぞれが、どのレジスタからデータを読み出すかは、プログラムにより決定される。つまり、ＰＥ１１はレジスタ５１及び５２からデータを読出し、ＰＥ２１はレジスタ５１及び５３からデータを読出し、ＰＥ３１はレジスタ５２及び５３からデータを読出すことはプログラムにより決定され、例えばＰＥ１１は、レジスタ５３には一切アクセスしないが、これとは異なり接続フラグフィールドの値によりＰＥ自身が認識する構成とすることも可能である。
【００３２】
図４（ｂ）は、ＰＥ１１がレジスタ５１及び５２からデータを読出し、ＰＥ２１がレジスタ５１及び５３からデータを読出したときの各レジスタの状態を示している。図４（ｂ）に示す様に、ＰＥ１１がレジスタ５１及び５２からデータを読み出すことで、レジスタ５１及び５２の状態フラグフィールドのＰＥ１１に対応する第１ビットが“０”に変更され、ＰＥ２１がレジスタ５１及び５３からデータを読み出すことで、レジスタ５１及び５３の状態フラグフィールドのＰＥ２１に対応する第２ビットが“０”に変更されている。
【００３３】
図４（ｂ）に示す状態において、レジスタ５１の接続フラグフィールドと状態フラグフィールドの同じビット位置同士の論理積は、全ビット共“０”になり、これは、ＰＥ１０が出力するデータを入力とするＰＥの総てが、つまり、ＰＥ１１及び２１がデータを読み出したことを意味し、従って、ＰＥ１０は、レジスタ５１に新しいデータの書き込みを行うことができる。
【００３４】
一方、レジスタ５２及び５３の接続フラグフィールドと状態フラグフィールドの同じビット位置同士の論理積は、全ビット共“０”ではなく、これは、ＰＥ２０とＰＥ３０が出力するデータを入力とするプロセッサエレメントの総てが、未だデータの読出しを行っていないことを意味し、従って、ＰＥ２０、３０は、新しいデータをレジスタ５２、５３に書き込むことはできない。
【００３５】
図４（ｃ）は、ＰＥ１０がレジスタ５１に新しいデータを書き込み、かつ、ＰＥ３１がレジスタ５２及び５３からデータを読出したときの各レジスタの状態を示している。図４（ｃ）に示す様に、ＰＥ１０がレジスタ５１にデータを書き込んだことで、レジスタ５１の状態フラグフィールドは総て“１”となり、ＰＥ３１がレジスタ５２及び５３からデータを読み出すことで、レジスタ５２及び５３の状態フラグフィールドのＰＥ３１に対応する第３ビットが“０”に変更されている。
【００３６】
図４（ｃ）の状態において、レジスタ５２及び５３の接続フラグフィールドと状態フラグフィールドの同じビット位置同士の論理積は、全ビット共“０”になり、従って、ＰＥ２０及び３０は、レジスタ５２、５３に新しいデータの書き込みを行うことができる。また、ＰＥ１１は、レジスタ５１、５２の対応するビットである第１ビットが、それぞれ、“１”、“０”であるため、レジスタ５１には既にデータは設定されているが、レジスタ５２には未だデータが設定されていないこと、つまり、処理に必要なデータが揃っていないことを認識し、よって、データの読出しを行うことができないことを認識する。
【００３７】
図４（ｄ）は、ＰＥ２０及び３０がレジスタ５２、５３に新しいデータを書き込んだときの各レジスタの状態を示している。図４（ｄ）に示す様に、ＰＥ２０と３０が、それぞれ、レジスタ５２と５３にデータを書き込んだことで、レジスタ５２及び５３の状態フラグフィールドは総て“１”となっている。
【００３８】
図４（ｄ）の状態において、レジスタ５１〜５３の接続フラグフィールドと状態フラグフィールドの同じビット位置同士の論理積は、全ビット共“０”とならないため、ＰＥ１０、２０及び３０は新たなデータの書き込みを行うことはできない。また、ＰＥ１１、２１、３１のデータの読出しについては、読出しを行う各レジスタの状態フラグフィールドの、自身に対応するビットが総て“１”であるため、ＰＥ１１、２１及び３１はデータ読出しが可能であることを認識する。
【００３９】
図５は、待合せ部５の各レジスタの状態遷移図である。図５において、無効状態は、接続フラグフィールドと状態フラグフィールドの同じＰＥに対応するビット位置同士の論理積が総て“０”である場合であり、上流のＰＥ、即ち、レジスタに書き込み行うＰＥは、無効状態のときにのみ新たなデータをペイロードフィールドに書き込むことができ、書き込むことで、有効状態に遷移する。有効状態である間は、上流にあるＰＥは新たなデータをペイロードフィールドに書き込むことはできない。
【００４０】
有効状態である場合において、下流にあるＰＥ、即ち、レジスタから読み出しを行うＰＥがデータを読み出す度に、状態フラグフィールドの対応するビット位置が“０”に変更され、接続フラグフィールドと状態フラグフィールドの同じＰＥに対応するビット位置同士の論理積が総て“０”となった場合は、即ち、データを入力として使用する総ての下流にあるＰＥがデータの読出しを行ったときに無効状態に遷移する。
【００４１】
以上、装置全体の同期制御や、入力データの同期を意識したプログラミングを行うことなく、データを入出力するＰＥ間での局所的な制御という簡易な構成で、各ＰＥへの入力データの同期を実現できる。
【００４２】
上述した待合せ部５では、接続フラグフィールドを設けてデータの読出しを行うＰＥを示し、データを書き込んだ場合には状態フラグフィールドに総て“１”を設定していたが、接続フラグフィールドを設けず、データを書き込んだ場合には状態フラグフィールドのデータの読み出しを行うＰＥに対応するビットのみに“１”を設定する構成でも良い。いずれの構成にしても、接続フラグフィールド及び／又は状態フラグフィールドの各ビットによりデータの読出しを行うＰＥの読出し状態を管理することで、１つのレジスタのデータを複数のＰＥへの入力データとして分岐させることができる。
【００４３】
また、ＰＥが出力するデータを、２つ以上のＰＥの入力としない場合、即ち、ＰＥが１行の構成では、接続フラグフィールドは必要なく、状態フラグフィールドは１ビットのみ設ければよい。
【００４４】
また、図３に示す構成において、例えば、ＰＥ１０が、あるサイクルにてデータを書き込んだ場合、次のサイクルでは、ＰＥ１１及び２１がデータを読み出すことは可能であるが、ＰＥ１０がデータを書き込むことはできず、従って、ＰＥ１０は、最短でも２サイクルに１度の割合でしかデータを書き込むことはできない。このため、各ＰＥの各入力部分にＦＩＦＯバッファを配置する。
【００４５】
図６は、ＦＩＦＯバッファを配置した構成図であり、図３のうち、ＰＥ１０、１１及び２１に関する部分のみを表示している。
【００４６】
図６によると、ＰＥ１１は、ＦＩＦＯバッファ１１０から入力データを取得し、ＰＥ２１は、ＦＩＦＯバッファ２１０から入力データを取得する。ＦＩＦＯバッファ１１０及びＦＩＦＯバッファ２１０は、１つ以上のデータを保持することが可能であり、データ出力が可能な場合には、それぞれ、出力可能フラグ１１１、２１１を有効に設定する。ＰＥ１１及び２１は、演算に必要な入力に対応する総てのＦＩＦＯバッファの出力可能フラグが有効に設定されている場合に、ＦＩＦＯバッファからデータを読み出して演算を開始する。
【００４７】
ＰＥ１０がレジスタ５１にデータを書き込むと、書き込まれたデータは、同時にＦＩＦＯバッファ１１０及び２１０へ出力されるように構成されている。尚、レジスタ５１の接続フラグフィールド及び／又は状態フラグフィールドは、既に説明したのと同様の構成であり、ＦＩＦＯバッファにデータ出力することで、状態フラグフィールドの対応するビットは“０”に変更される。
【００４８】
ＦＩＦＯバッファ１１０及び２１０は、それぞれ、保持している値がその容量に達し、新たな入力が不可となった場合それぞれＦＵＬＬフラグ１１１、２１１を有効に設定し、それ以外の場合、即ち新たな入力が可能な場合にはＦＵＬＬフラグ１１１、２１１を無効に設定する。
【００４９】
ＰＥ１０は、ＰＥ１０が出力するデータを入力とする総てのＦＩＦＯバッファのＦＵＬＬフラグが無効である場合にのみデータをレジスタ５１に書き込む。
【００５０】
以上、ＰＥ１１、２１の入力にＦＩＦＯバッファ１１１、２１１を設けることで、上流に位置するＰＥ１０が、待合せ部５にデータを書き込むサイクルの低減が可能となる。
【００５１】
続いて、図７を用いて、本発明による演算装置の他の実施形態を説明する。図７によると、パイプラインの各ステージを構成する命令フェッチ部８１と、命令デコード部８２と、命令実行部８３と、ライトバック部８４との間に待合せ部４が挿入されている。尚、４ステージのパイプライン構成を用いて説明するがステージ数は例示で有り、本発明は、任意のステージ数のパイプラインに適用可能である。
【００５２】
パイプライン構成は、図１に示す演算装置で行数が１の場合と同等であるため、本実施形態の待合せ部４は、図２に示す待合せ部５の接続フラグフィールドを省略し、かつ、状態フラグフィールドを１ビットとしたもので良い。以後、状態フラグフィールドに値“１”が設定されている状態を有効状態と、値“０”が設定されている状態を無効状態と呼ぶ。
【００５３】
パイプラインを構成する各機能ブロックは、処理結果、例えば、命令フェッチ部８１であればフェッチした命令を、命令デコード部８２であればデコードした命令を、命令実行部８３であれば実行結果データを、下流にある待合せ部４のペイロードフィールドに書き込み、書き込みにより待合せ部４の状態フラグフィールドは有効状態に設定される。また、各機能ブロックは、上流のステージでの処理が終了したことを、上流にある待合せ部４の状態フラグフィールドが有効状態であることにより認識し、有効状態である場合にのみ待合せ部４のペイロードフィールドから命令又はデータを読み込んで処理を開始する。また、待合せ部４の状態フラグフィールドは、対応するペイロードフィールドから命令又はデータが読み出されることで無効状態に設定される。パイプラインを構成する各機能ブロックは、下流にある待合せ部４の状態フラグフィールドが無効状態である場合にのみ、ペイロードフィールドへのデータ又は命令の書き込みを行うことをできる。
【００５４】
例えば、図７に示す演算装置において、
ａｄｄ  Ｒ０、＃１、Ｒ１
を実行することを考える。ここで、ａｄｄは符号無し加算命令であり、上記演算は、レジスタＲ０に格納されている値と、即値“１”を加算して、結果をレジスタＲ１に格納することを示している。
【００５５】
まず、命令フェッチ部８１は、下流にある待合わせ部４が無効状態である場合に、図示しない命令メモリから命令をフェッチし、フェッチした命令を待合わせ部４のペイロードフィールドに書き込む。書き込みにより待合せ部４の状態フラグフィールドは有効状態に設定されるが、有効状態に設定するのは、命令フェッチ部８１であっても、待合せ部４自身であっても良い。
【００５６】
デコード部８２は、上流にある待合わせ部４の状態フラグフィールドが有効状態となったため、ペイロードフィールドにある命令のデコードを行う。これにより上流にある待合わせ部４の状態フラグフィールドは無効状態に設定されるが、無効状態に設定するのは、デコード部８２であっても、待合せ部４自身であっても良い。また、デコード部８２は、下流にある待合わせ部４が無効状態である場合、デコード結果を待合わせ部４のペイロードフィールドに書き込む。有効状態である場合は、無効状態になるまで待機して、無効状態になった後にデコード結果を書き込む。書き込みにより、待合せ部４の状態フラグフィールドは有効状態になる。ここで、本例においてデコード結果とは、命令実行部８３に加算を行わせるためのマイクロコードと、レジスタＲ０が保持する値と、即値である“１”と、演算結果を格納するレジスタＲ１を指定する値である。
【００５７】
命令実行部８３は、上流にある待合わせ部４の状態フラグフィールドが有効状態となったため、上流にある待合せ部４のペイロードフィールドに格納されたマイクロコードに基づき、自身を加算動作に設定する。続いて、上流にある待合せ部４のペイロードフィールドに格納された値の加算を行う。最後に、命令実行部８３は、下流にある待合わせ部４が無効状態である場合に、加算の結果と、上流にある待合せ部４のペイロードフィールドに格納されたレジスタＲ１を指定する値とを、下流にある待合わせ部４のペイロードフィールドに書き込む。命令実行部８３からの書き込みにより、待合せ部４の状態フラグフィールドは有効状態になる。
【００５８】
ライトバック部８４は、上流にある待合わせ部４の状態フラグフィールドが有効状態となったため、上流にある待合せ部４のペイロードフィールドに格納された加算結果の値を、同じくペイロードフィールドで指定されているレジスタＲ１に格納する。
【００５９】
以上の構成によりパイプライン制御ユニットが必要なくなり、また、各機能ブロック間のストールの制御は局所的に独立して実行されるため、パイプラインの段数を増減させたとしても局所的な設計変更で対処できるという利点がある。
【００６０】
尚、以上の説明における待合せ部４又は５の、接続フラグフィールド及び状態フラグフィールドに書き込まれる値、即ち“１”又は“０”は例示であり説明で使用した値に限定されるものではない。
【図面の簡単な説明】
【００６１】
【図１】本発明による演算装置が有する、プロセッサエレメント間の接続構成を示す図である。
【図２】待合せ部の構成を示す図である。
【図３】プロセッサエレメント間でのデータ入出力関係を示す図である。
【図４】図３の入出力関係での待合せ部の接続フラグフィールドと、状態フラグフィールドの遷移を説明する図である。
【図５】待合せ部の各レジスタの状態遷移図である。
【図６】ＦＩＦＯバッファを配置した構成図である。
【図７】本発明による演算装置が有する、パイプライン構成を示す図である。
【図８】従来技術による演算装置を説明する図である。
【図９】従来技術によるパイプライン構造を説明する図である。
【符号の説明】
【００６２】
１０、２０、３０、１１、２１、３１、７１、７２、７３  プロセッサエレメント
４、５  待合せ部
９  パイプライン制御部
５１、５２、５３、５ｎ  レジスタ
６１、６２  入力
８１  命令フェッチ部
８２  命令デコード部
８３  命令実行部
８４  ライトバック部
１１０、２１０  ＦＩＦＯバッファ
１１１、２１１  出力可能フラグ
１１２、２１２  ＦＵＬＬフラグ
【図１】
2007164472.tif 000003
【図２】
2007164472.tif 000004
【図３】
2007164472.tif 000005
【図４】
2007164472.tif 000006
【図５】
2007164472.tif 000007
【図６】
2007164472.tif 000008
【図７】
2007164472.tif 000009
【図８】
2007164472.tif 000010
【図９】
2007164472.tif 000011