(57)【要約】【課題】従来、過剰となっていたストールやクロックウェイトのサイクル数を削減して、演算処理時間を一層短縮したＳＩＭＤ型マイクロプロセッサを提供する。【解決手段】２５６個のＰＥから構成されたＰＥ部３を有するＳＩＭＤ型マイクロプロセッサ１において、ＰＥ部３を制御するＧＰ２にストール制御回路２３を設けて、ＧＰ部２のストール制御回路２３は、ＰＥ範囲指定情報に基づいてストール制御を行い、ＰＥ部３にはデータ制御回路３７を設けて、ＰＥ範囲指定情報に基づいてＧＰ部２のストール制御に応じたタイミング調整を行う。【選択図】図２
2010009357.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを処理するためにレジスタファイルおよび演算アレイが設けられた複数のプロセッサエレメントであってそれらのプロセッサエレメントのそれぞれに固有の番号が付与された複数のプロセッサエレメントと、前記複数のプロセッサエレメントに対してデータ転送を行う前記プロセッサエレメントの範囲を指定する番号情報を出力して指定した範囲の番号が付与された前記プロセッサエレメントからデータを転送させる転送手段および前記転送手段が転送させたデータを格納する汎用レジスタが設けられたグローバルプロセッサと、を有するＳＩＭＤ型マイクロプロセッサにおいて、
前記グローバルプロセッサが、前記転送手段によって出力される前記プロセッサエレメントの範囲を指定する番号情報に基づいて実行時間を調整する実行時間調整手段を有していることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
前記実行時間調整手段が、前記プロセッサエレメントからのデータ転送時のデスティネーションとした前記汎用レジスタを該データ転送の後にソースデータとして使用する場合に発生するデータハザードへ対応するためのストール数を決定するように構成されていることを特徴とする請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項３】
前記実行時間調整手段が、前記複数のプロセッサエレメントが前記汎用レジスタへのデータ転送時に必要とするサイクル数に応じて複数のグループに分割されたそれら複数のグループごとに前記ストール数を決定するように構成されていることを特徴とする請求項２に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項４】
前記複数のプロセッサエレメントを分割した複数のグループごとにデータ制御回路が設けられていることを特徴とする請求項３に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項５】
前記データ制御回路が、前記転送手段によって出力された前記プロセッサエレメントの範囲を指定する番号情報に基づいてデータ転送サイクル数を調整するように構成されていることを特徴とする請求項４に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項６】
前記の複数のプロセッサエレメントを分割した複数のグループごとに設けられた前記データ制御回路が、前記グローバルプロセッサから離れて配置された前記グループ対応する前記データ制御回路から前記グローバルプロセッサの近くに配置された前記グループ対応する前記データ制御回路に向かって直列に接続されていることを特徴とする請求項４または５に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項７】
前記データ制御回路には、
（イ）前記転送手段が出力した前記プロセッサエレメントの範囲を指定する番号情報に基づいて、当該データ制御回路が対応するグループに含まれるプロセッサエレメントの出力データの論理和データ、または、他のデータ制御回路によって処理されたデータと、当該データ制御回路が対応するグループに含まれるプロセッサエレメントの出力データの論理和データを他のデータ制御回路によって処理されたデータと同等サイクル数ディレイさせたデータと、で構成された論理和データ、のいずれかに切替えて出力するデータ切替手段、並びに、
（ロ）前記データ切替手段を通過したデータをディレイさせるためのパイプラインレジスタ、
が設けられていることを特徴とする請求項４乃至６のいずれか一項に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項８】
前記データ制御回路には、前記パイプラインレジスタをバイパスする経路が設けられていることを特徴とする請求項７に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項９】
前記実行時間調整手段が、前記プロセッサエレメントのデータを読み出してから前記グローバルプロセッサの前記汎用レジスタに取り込むまでに必要なクロックウェイト数を決定するように構成されていることを特徴とする請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項１０】
前記実行時間調整手段が、前記複数のプロセッサエレメントが前記汎用レジスタへのデータ転送時に必要とするサイクル数に応じて複数のグループに分割されたそれら複数のグループごとにクロックウェイト数を決定するように構成されていることを特徴とする請求項９に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項１１】
前記グローバルプロセッサには、クロックウェイトの挿入を行うか否か切替えるクロックウェイト切替手段が設けられていることを特徴とする請求項９または１０に記載のＳＩＭＤ型マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は１つの演算命令により複数のデータ等を並列処理するＳＩＭＤ（Single Instruction-stream, Multiple Data-stream）型マイクロプロセッサに関する。
【背景技術】
【０００２】
ＳＩＭＤ（Single Instruction-stream, Multiple Data-stream）型マイクロプロセッサを画像処理に適用した場合、複数の演算ユニット（Processor Element［ＰＥ］；プロセッサエレメント）を画像データの主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって高速な画像処理が可能となる（例えば、特許文献１）。このため、ＳＩＭＤ型マイクロプロセッサは、デジタル複写機、ファクシミリ、デジタルテレビ等の画像処理を行う装置において頻用される。
【０００３】
ところで、ＳＩＭＤ型マイクロプロセッサのさらなる性能向上を考えると、（ａ）プロセッサ全体の動作周波数を上げる、（ｂ）ＰＥの数を増やす、の２点が考えられる。（ａ）と（ｂ）を両方とも実施した場合、（ａ）によって転送動作のパイプラインの１ステージ当たりの時間が短くなるが、（ｂ）によってＰＥとデータ転送を行うブロック（例えばＰＥを制御するグローバルプロセッサ）と、ＰＥの端点までの距離が増加するので、データ転送の途中でディレイさせるためのパイプラインレジスタを配置したり、データ転送中にクロックウェイトを挿入する、といった対策が必要となる。
【０００４】
パイプラインレジスタを配置した例としては特許文献２に記載のデータ処理システムが提案されている。特許文献２に記載されたデータ処理システムは、少なくとも１つのレジスタファイルと、少なくとも１つの機能ユニット（演算ユニット）と、からなる複数のクラスタを有するプロセッサにおいて、命令制御ユニットと、それぞれのクラスタの距離に応じてその接続間に１つまたは複数のパイプラインレジスタと、を設けることによって、１サイクルあたりの動作周波数を上げることが記載されている。
【０００５】
また、クロックウェイトを挿入する例として特許文献３に記載のプロセッサが提案されている。特許文献３に記載されたプロセッサは、パイプライン方式で命令を実行していくプロセッサにおいて、クロックの削減数を信号により設定できる削減命令検出手段を用いて、クロックウェイトを挿入するサイクル数を可変に制御することが記載されている。
【特許文献１】特許３９７１５４３号公報
【特許文献２】特表２００６−５２２３９９号公報
【特許文献３】特許３７１６９２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
パイプラインレジスタを使用した場合には、ＰＥからの転送データの受け取り先（例えば前記したグローバルプロセッサ内の汎用レジスタ）を、後続の命令でソースデータとして使用する場合に発生するストール数が、配置したパイプラインレジスタの数に応じて増加する。ストールの挿入はプロセッサ全体の性能を低下させるものであり、特にＳＩＭＤ型マイクロプロセッサでは処理の並列化によって高性能を実現しているため、その影響は顕著である。
【０００７】
また、プロセッサを矛盾なく動作させるために最低限必要なストールやクロックウェイトのサイクル数は、最もデータ転送に時間がかかるＰＥ端点からのデータ転送をカバーするように決める必要があるが、ＳＩＭＤ型マイクロプロセッサを用いたデータ処理では、ＰＥの端点を含まずにデータ転送先と位置的に近いＰＥのみを使用する場合も多くあり、ＰＥの端点を基準として決めたストールやクロックウェイトのサイクル数が過剰となることも多かった。
【０００８】
本発明はかかる問題を解決することを目的としている。
【０００９】
すなわち、本発明は、従来、過剰となっていたストールやクロックウェイトのサイクル数を削減して、演算処理時間を一層短縮したＳＩＭＤ型マイクロプロセッサを提供することを目的としている。
【課題を解決するための手段】
【００１０】
請求項１に記載された発明は、複数のデータを処理するためにレジスタファイルおよび演算アレイが設けられた複数のプロセッサエレメントであってそれらのプロセッサエレメントのそれぞれに固有の番号が付与された複数のプロセッサエレメントと、前記複数のプロセッサエレメントに対してデータ転送を行う前記プロセッサエレメントの範囲を指定する番号情報を出力して指定した範囲の番号が付与された前記プロセッサエレメントからデータを転送させる転送手段および前記転送手段が転送させたデータを格納する汎用レジスタが設けられたグローバルプロセッサと、を有するＳＩＭＤ型マイクロプロセッサにおいて、前記グローバルプロセッサが、前記転送手段によって出力される前記プロセッサエレメントの範囲を指定する番号情報に基づいて実行時間を調整する実行時間調整手段を有していることを特徴とするＳＩＭＤ型マイクロプロセッサである。
【００１１】
請求項２に記載された発明は、請求項１に記載された発明において、前記実行時間調整手段が、前記プロセッサエレメントからのデータ転送時のデスティネーションとした前記汎用レジスタを該データ転送の後にソースデータとして使用する場合に発生するデータハザードへ対応するためのストール数を決定するように構成されていることを特徴とするものである。
【００１２】
請求項３に記載された発明は、請求項２に記載された発明において、前記実行時間調整手段が、前記複数のプロセッサエレメントが前記汎用レジスタへのデータ転送時に必要とするサイクル数に応じて複数のグループに分割されたそれら複数のグループごとに前記ストール数を決定するように構成されていることを特徴とするものである。
【００１３】
請求項４に記載された発明は、請求項３に記載された発明において、前記複数のプロセッサエレメントを分割した複数のグループごとにデータ制御回路が設けられていることを特徴とするものである。
【００１４】
請求項５に記載された発明は、請求項４に記載された発明において、前記データ制御回路が、前記転送手段によって出力された前記プロセッサエレメントの範囲を指定する番号情報に基づいてデータ転送サイクル数を調整するように構成されていることを特徴とするものである。
【００１５】
請求項６に記載された発明は、請求項４または５に記載された発明において、前記の複数のプロセッサエレメントを分割した複数のグループごとに設けられた前記データ制御回路が、前記グローバルプロセッサから離れて配置された前記グループ対応する前記データ制御回路から前記グローバルプロセッサの近くに配置された前記グループ対応する前記データ制御回路に向かって直列に接続されていることを特徴とするものである。
【００１６】
請求項７に記載された発明は、請求項４乃至６のいずれか一項に記載された発明において、前記データ制御回路には、（イ）前記転送手段が出力した前記プロセッサエレメントの範囲を指定する番号情報に基づいて、当該データ制御回路が対応するグループに含まれるプロセッサエレメントの出力データの論理和データ、または、他のデータ制御回路によって処理されたデータと、当該データ制御回路が対応するグループに含まれるプロセッサエレメントの出力データの論理和データを他のデータ制御回路によって処理されたデータと同等サイクル数ディレイさせたデータと、で構成された論理和データ、のいずれかに切替えて出力するデータ切替手段、並びに、（ロ）前記データ切替手段を通過したデータをディレイさせるためのパイプラインレジスタ、が設けられていることを特徴とするものである。
【００１７】
請求項８に記載された発明は、請求項７に記載された発明において、前記データ制御回路には、前記パイプラインレジスタをバイパスする経路が設けられていることを特徴とするものである。
【００１８】
請求項９に記載された発明は、請求項１に記載された発明において、前記実行時間調整手段が、前記プロセッサエレメントのデータを読み出してから前記グローバルプロセッサの前記汎用レジスタに取り込むまでに必要なクロックウェイト数を決定するように構成されていることを特徴とするものである。
【００１９】
請求項１０に記載された発明は、請求項９に記載された発明において、前記実行時間調整手段が、前記複数のプロセッサエレメントが前記汎用レジスタへのデータ転送時に必要とするサイクル数に応じて複数のグループに分割されたそれら複数のグループごとにクロックウェイト数を決定するように構成されていることを特徴とするものである。
【００２０】
請求項１１に記載された発明は、請求項９または１０に記載された発明において、前記グローバルプロセッサには、クロックウェイトの挿入を行うか否か切替えるクロックウェイト切替手段が設けられていることを特徴とするものである。
【発明の効果】
【００２１】
請求項１に記載の発明によれば、グローバルプロセッサが、転送手段が出力したデータ転送を行うＰＥの範囲を指定する番号情報に基づいて自身の実行時間を制御する実行時間調整手段を有しているので、ＰＥからのデータ転送の際にＰＥの範囲指定に応じてクロックウェイトやストールのサイクル数を適切な数に調整することができる。
【００２２】
請求項２に記載の発明によれば、実行時間調整手段が、ＰＥの範囲指定を伴うＰＥからグローバルプロセッサ（ＧＰ）へのデータ転送命令によるストール制御の際に、データ転送を行うＰＥの範囲を指定する番号情報も利用しているので、各ＰＥからＧＰへのデータ転送にかかるサイクル数に応じて、適切なサイクル数でストールさせることができる。
【００２３】
請求項３に記載の発明によれば、複数のＰＥをグループに分割して、そのグループごとにストールさせるサイクル数を設定しているので、１ＰＥごとに制御するよりもストール制御をより簡略化して行うことができる。
【００２４】
請求項４に記載の発明によれば、ＰＥのグループごとにデータ制御回路を設けているので、グループごとにデータ転送を制御することができる。
【００２５】
請求項５に記載の発明によれば、データ制御回路を設けてＰＥからの出力データをディレイさせるサイクル数、つまりデータ転送サイクル数を調整しているので、ストール数を可変にする制御に対応したＰＥを構成することができる。
【００２６】
請求項６に記載の発明によれば、複数のデータ制御回路が、ＧＰから離れて配置されたグループ対応するデータ制御回路からＧＰの近くに配置されたグループ対応するデータ制御回路に向かって直列に接続されているので、ＧＰから遠いグループほどより多くのパイプラインレジスタを通過することになり、転送にかかるサイクル数は増加するが、レジスタ間の配線を短くすることができるので１サイクル当たりの動作周波数は速くすることができる。また、グループごとに必要なストール数を設定することができる。
【００２７】
請求項７に記載の発明によれば、データ制御回路が、自グループのデータと他グループから入力されたデータとのディレイさせるサイクル数を合わせるように制御しているので、自グループだけで無く複数のグループに渡るＰＥからのデータ転送の際にもタイミングを合わせるとともに過剰なストールサイクルを削減することができる。
【００２８】
請求項８に記載の発明によれば、データ制御回路にパイプラインレジスタをバイパスする経路を設けているので、プロセッサ全体の動作速度が十分に遅く、すべての範囲のＰＥからのＧＰへのデータ転送が１サイクルで行える場合には、ＰＥ出力データをディレイさせないように制御することができるので、プロセッサの動作速度に合わせて、ＰＥからＧＰへのデータ転送にかかるサイクル数を短縮することができる。
【００２９】
請求項９に記載の発明によれば、実行時間調整手段が、ＰＥの範囲指定を伴うＰＥからＧＰへのデータ転送命令に因るクロックウェイト制御の際に、データ転送を行うＰＥの範囲を指定する番号情報も利用しているので、各ＰＥからＧＰへのデータ転送にかかるサイクル数に応じて、適切なサイクル数でクロックウェイトを挿入することができる。
【００３０】
請求項１０に記載の発明によれば、複数のＰＥをグループに分割して、そのグループごとにクロックウェイトするサイクル数を設定しているので、１ＰＥごとに制御するよりもクロックウェイト制御をより簡略化して行うことができる。
【００３１】
請求項１１に記載の発明によれば、ＧＰがクロックウェイトの挿入を行うか否か切替えるクロックウェイト切替手段を設けたので、プロセッサ全体の動作速度が十分に遅く、すべての範囲のＰＥからのＧＰへのデータ転送が１サイクルで行える場合には、クロックウェイトを挿入しないように制御することができるので、プロセッサの動作速度に合わせて、ＰＥからＧＰへのデータ転送にかかるサイクル数を短縮することができる。
【発明を実施するための最良の形態】
【００３２】
［第１実施形態］
以下、本発明の第１の実施形態を、図１ないし図７を参照して説明する。図１は、本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。図２は、図１に示したグローバルプロセッサ内の命令デコーダとストール制御回路との関係を示す説明図である。図３は、図１に示したＳＩＭＤ型マイクロプロセッサのプロセッサエレメントの詳細を示したブロック図である。図４は、図１に示したデータ制御回路の内部構成を示した回路図である。図５は、図１に示したグローバルプロセッサのストール数制御を示すフローチャートである。図６は、図１に示したＳＩＭＤ型マイクロプロセッサのストール数を示した説明図である。図７は、図５に示したデータ制御回路の他の形態を示した回路図である。
【００３３】
図１に示したＳＩＭＤ型マイクロプロセッサ１は、グローバルプロセッサであるＧＰ部２と、複数のプロセッサエレメントから構成されるＰＥ部３と、を備えている。
【００３４】
ＧＰ部２にはＳＩＭＤ型マイクロプロセッサ１のプログラム格納用のプログラムＲＡＭ（ＰＲＡＭ）と、演算データ格納用のデータＲＡＭ（ＤＲＡＭ）と、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）と、演算処理後のデータ格納のための汎用レジスタであるＧレジスタ（Ｇ０〜Ｇ１５）２１と、レジスタ退避及び復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）と、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）と、同じくＩＲＱ（割り込み）時とＮＭＩ（マスク不可割り込み）時の分岐元アドレスを保持するＬＩ、ＬＮレジスタと、プロセッサの状態を保持しているプロセッサステータスレジスタ(Ｐ)と、転送手段としての命令デコーダ２２と、ストール制御回路２３と、を備えている。
【００３５】
ＧＰ部２では、上述したメモリ、カウンタ、レジスタ、命令デコーダ２２と、図示しないＡＬＵ、メモリ制御回路、割り込み制御回路、外部ＩＯ制御回路、ＧＰ演算制御回路などを使用してＧＰ命令の実行が行われる。また、ＰＥ部３に対して演算などを行わせるＰＥ命令実行時は命令デコーダ２２と、図示しないレジスタファイル制御回路、ＰＥ演算制御回路などを使用して、後述するＰＥ部３のレジスタファイル３１の制御と演算アレイ３２の制御を行う。
【００３６】
実行時間調整手段としてのストール制御回路２３は、図２に示すように、命令デコーダ２２から入力される、先行命令のデスティネーション情報、後続命令のソース情報、後続命令のデスティネーション情報に基づいて、ＧＰ部２で実行する先行命令のデスティネーションと、後続命令のソースもしくはデスティネーションの関係によって生じるＲＡＷ（ライト・アフター・リード）またはＷＡＷ（ライト・アフター・ライト）等のデータハザードを検出し、検出されれば、データハザードが解消するまで、例えばＮＯＰ命令を挿入するなどしてプログラムの実行をストールさせる。ストールさせるサイクル数は、命令デコーダ２２から入力された後述するＰＥ０〜ＰＥ２５５に対してＧＰ部２にデータ転送を行うＰＥの範囲を指定する番号情報（以降、ＰＥ範囲指定情報という）に基づいて決定する。
【００３７】
ＰＥ部３は、図１に示したように、レジスタファイル３１と、演算アレイ３２と、を備えている。レジスタファイル３１は、ＰＥ命令で処理されるデータを保持している。このレジスタファイル３１からのデータの読み出し／書き込みの制御はＧＰ２からの制御信号によって行われる。読み出されたデータは演算アレイ３２に送られ、演算アレイ３２での演算処理後にレジスタファイル３１に書き込まれる。演算アレイ３２はＧＰ２の制御によってレジスタファイル３１から読み出されたデータを演算する。演算アレイ３２は、図示しないマルチプレクサ、シフタ、ＡＬＵ、各種レジスタなどから構成されている。
【００３８】
ＰＥ部３は、図３に示したように、配置順に０〜２５５の固有の番号が付与されたＰＥ０〜ＰＥ２５５の２５６個のＰＥから構成され、これらＰＥの中央部（ＰＥ１２７とＰＥ１２８の間）には、ＧＰ部２から受け取った制御信号をバッファリングし、すべてのＰＥに出力するためのＰＥ制御信号バッファ回路３３を配置している。また、ＰＥ０〜ＰＥ２５５の各ＰＥにはレジスタファイル３１と演算アレイ３２が含まれるとともに、エリア判定回路３４を備えている。
【００３９】
図３において、ＧＰ部２は、ＰＥ制御信号バッファ回路３３の近くに配置する方が配線面等で有利であるため、ＰＥ部３の中央部付近に配置している。このため、本実施形態では、ＧＰ部２からＰＥ０もしくはＰＥ２５５への距離が最も遠くなる。
【００４０】
エリア判定回路３４は、ＧＰ部２から入力されたＰＥ範囲指定情報の上限値および下限値の範囲に自身が含まれるか否かを判断して自身を含む場合はＰＥ部３からＧＰ部２への出力バスに対してＡレジスタ３５に格納されているデータを出力する。Ａレジスタ３５は、演算アレイ３２に含まれるレジスタであり、ＰＥそれぞれが備えている演算結果格納用のレジスタ（アキュムレータ）である。
【００４１】
ＰＥ部３は、Ｇレジスタ２１へのデータ転送時に必要とするサイクル数に応じて、３２個のＰＥごとにグループを構成し、このグループごとにＡレジスタ３５の出力を論理和回路３６によって論理和をとり、データ制御回路３７に出力している。つまり、ＰＥ部３は、ＰＥ０〜ＰＥ３１、ＰＥ３２〜ＰＥ６３、ＰＥ６４〜ＰＥ９５、ＰＥ９６〜ＰＥ１２７、ＰＥ１２８〜ＰＥ１５９、ＰＥ１６０〜ＰＥ１９１、ＰＥ１９２〜ＰＥ２２３、ＰＥ２２４〜ＰＥ２５５の８グループに分割されている。本実施形態では３２個のＰＥごとにグループを構成しているが、それに限らず、Ｇレジスタ２１へのデータ転送時に必要とするサイクル数に応じて任意に決定すればよい。
【００４２】
データ制御回路３７は、図４に示すように、第１パイプラインレジスタ３７１と、マルチプレクサ３７２と、第２パイプラインレジスタ３７３と、を備えている。
【００４３】
第１パイプラインレジスタ３７１は、本データ制御回路３７を通過するデータ全てを１サイクル分ディレイさせるためのパイプラインレジスタである。
【００４４】
マルチプレクサ３７２は、当該データ制御回路が対応するグループに含まれるプロセッサエレメントの論理和データ（論理和回路３６から直接入力されたデータ）、または、他のデータ制御回路３７によって処理されたデータ（遠方のＰＥグループからのデータ）と、当該データ制御回路３７が対応するグループに含まれるＰＥの論理和データを他のデータ制御回路によって処理されたデータと同等サイクル数ディレイさせたデータ（第２パイプラインレジスタ３７３を経由したデータ）と、の論理和データ、のいずれかに切替えて第１パイプラインレジスタ３７１に出力している。ＳＥＬ１及びＳＥＬ２はＰＥ制御信号バッファ回路３３から出力されたＰＥ範囲指定情報より生成されるどのデータを第１パイプラインレジスタに出力するか切替えるための制御信号である。ＰＥ範囲指定情報が自身が対応するグループよりも遠方に位置するグループを含む場合はＳＥＬ２をアクティブにし、自身が対応するグループのみの場合はＳＥＬ１をアクティブにするように制御する。
【００４５】
第２パイプラインレジスタ３７３は、論理和回路３６の出力を遠方のＰＥグループからのデータと同じサイクルディレイさせるためのパイプラインレジスタである。
【００４６】
データ制御回路３７は、図３に示すように、各ＰＥのデータ転送先であるＧＰ部２からの距離が最も遠いグループを始点として、ＧＰ部２からの距離が近くなるグループへと伝わっていくようにチェーン接続（直列接続）されている。図３の場合、ＧＰ部２から最近傍のグループが２つあるために双方のデータ制御回路３７の出力に対して論理和をとってＧＰ部２へ出力している。
【００４７】
次に、図１などに示したＳＩＭＤ型マイクロプロセッサ１のストール動作制御について図５のフローチャートを参照して説明する。図５のフローチャートはストール制御回路２３で実行される。まずステップＳ１１において、先行命令のデスティネーション情報、後続命令のソース情報、後続命令のデスティネーション情報に基づいてＲＡＷまたはＷＡＷデータハザードが発生するか否かを判断し、発生する場合（Ｙｅｓの場合）はステップＳ１２に進み、発生しない場合（Ｎｏの場合）は次の命令について判断する。次に、ステップＳ１２において、ＰＥの範囲指定情報に基づいてＰＥ範囲指定を伴う命令か否かを判断し、ＰＥ範囲指定を伴う命令である場合はステップＳ１３に進み、ＰＥ範囲指定を伴う命令でない場合はステップＳ１１に進む。次に、ステップＳ１３において、ストール数を決定してストールサイクルを挿入する。
【００４８】
このように制御した場合、図６に示したようにＰＥ０もしくはＰＥ２５５に近いグループほど、ＧＰ部２から離れているのでストール数は多く必要となるように決定し、ＰＥの中央付近のグループほど、ＧＰ部２に近づくのでストール数は少なくなるように決定する。つまり、ＰＥ範囲指定情報に基づいてデータハザードが発生したときのグローバルプロセッサ２における待ち時間が少なくなるようにストールサイクルを調整して挿入することができる。
【００４９】
また、図２などに示したように２５６個のＰＥを、ＰＥ０〜ＰＥ３１、ＰＥ３２〜ＰＥ６３、のように３２個のＰＥで１つのグループを構成しているので、ストール数の切り替えには、ＰＥ範囲指定情報の上限値、下限値を８ビットの即値で表現して、その上位３ビットのみを使用すれば切り替えできる。具体的には、ＰＥの上限値、下限値をそれぞれＰＥＵ[７：０]、ＰＥＬ[７：０]と表すとすると、次のような処理を行えばよい。
【００５０】
ＰＥＵ［７：５］が３’ｂ１１１ もしくはＰＥＬ［７：５］が３’ｂ０００ のときストール数は４。ＰＥＵ［７：５］が３’ｂ１１０ もしくはＰＥＬ［７：５］が３’ｂ００１ のときストール数は３。ＰＥＵ［７：５］が３’ｂ１０１ もしくはＰＥＬ［７：５］が３’ｂ０１０ のときストール数は２。ＰＥＵ［７：５］が３’ｂ１００ もしくはＰＥＬ［７：５］が３’ｂ０１１ のときストール数は１にそれぞれ設定する。
【００５１】
一方、ＰＥ部３では、ＰＥ範囲指定情報に基づいて、データ制御回路３７が動作し、ストール数と合致したタイミングでＧＰ部２へデータを出力する。例えば、ＰＥ６４〜ＰＥ１２７までを範囲指定した場合、ＰＥ６４〜ＰＥ９５のグループに対応するデータ制御回路３７では、論理和回路３６を通過したデータがマルチプレクサ３７２に直接入力されたデータが選択され、第１パイプラインレジスタ３７１で１サイクルディレイして次のＰＥ９６〜ＰＥ１２７のグループに対応するデータ制御回路３７に出力される。ＰＥ９６〜ＰＥ１２７のグループに対応するデータ制御回路３７では、論理和回路３６を通過したデータは第２パイプラインレジスタで１サイクルディレイしてＰＥ６４〜ＰＥ９５のグループに対応するデータ制御回路３７から入力されたデータとタイミングを合わせてマルチプレクサ３７２から出力し、第１パイプラインレジスタ３７１で１サイクルディレイして論理和回路を介してＧＰ部２に出力される。このためにＰＥ６４〜ＰＥ９５のデータ、ＰＥ９６〜ＰＥ１２７のデータとも２サイクルディレイしてＧＰ部２へ出力することができる。すなわち、ＰＥ範囲指定情報に基づいてデータ転送サイクル数を調整している。
【００５２】
本実施例によれば、ストール制御回路２３が、ＰＥ範囲指定情報に基づいて、ストール制御を行っているため、各ＰＥからＧＰ部２へのデータ転送にかかるサイクル数に応じて、適切なサイクル数でストールさせることができる。
【００５３】
また、ＰＥ部３を、３２個のＰＥで構成されるグループに分割して、そのグループごとにストールさせるサイクル数を設定しているので、１つのＰＥごとにストール制御を行うよりもストール制御をより簡略化して行うことができる。
【００５４】
また、ＰＥのグループごとにデータ制御回路３７を設けて自グループのデータと他グループから入力されたデータとのディレイさせるサイクル数を合わせるように制御しているので、自グループだけで無く複数のグループに渡るＰＥからのデータ転送の際にも過剰なストールサイクルを削減することができる。
【００５５】
また、データ制御回路が、グローバルプロセッサに近くに配置されたグループに向かって直列に接続されているので、ＧＰ部２から遠いグループほどより多くの第１パイプラインレジスタ３７１を通過することになり、転送にかかるサイクル数は増加するが、レジスタ間の配線を短くすることができるので１サイクル当たりの動作周波数は速くすることができる。また、グループごとに必要なストール数を設定することができる。
【００５６】
なお、プロセッサ全体の動作速度が十分に遅く、すべての範囲のＰＥからのデータ転送が１サイクルで行える場合は、図７に示すように、データ制御回路内３７の第１及び第２パイプラインレジスタをバイパスする経路を設けて第１選択回路３７４及び第２選択回路３７５で切替えるように構成することで、パイプラインレジスタの使用を回避でき、データ転送にかかるサイクル数を短縮することができる。あるいは、データ転送が１サイクルで行えるグループとそうでないグループが混在した場合は、パイプラインレジスタをバイパスする経路を用いるデータ制御回路３７と、第１パイプラインレジスタ３７１および第２パイプラインレジスタ３７３を用いるデータ制御回路３７が混在させてもよい。
【００５７】
［第２実施形態］
次に、本発明の第２の実施形態を図８ないし図１２を参照して説明する。なお、前述した第１の実施形態と同一部分には、同一符号を付して説明を省略する。図８は、本発明の第２の実施形態にかかるＳＩＭＤ型マイクロプロセッサ１のブロック図である。図９は、図８に示したグローバルプロセッサ内の命令デコーダとクロックウェイト制御回路との関係を示す説明図である。図１０は、図８に示したグローバルプロセッサのクロックウェイト数制御を示すフローチャートである。図１１は、図８に示したＳＩＭＤ型マイクロプロセッサのクロックウェイト数を示した説明図である。図１２は、図９に示したグローバルプロセッサの他の形態を示した回路図である。
【００５８】
本実施形態では、第１の実施形態でＧＰ部２に設けていたストール制御回路２３に代えてクロックウェイト制御回路２４を設けた点およびデータ制御回路３７を削除した点が異なる。従って、図８に示したように全ＰＥの出力を論理和回路３８により演算した結果がＧＰ部２に出力される。なお、論理和回路３８はダイナミックＯＲなどにより実現すればよい。
【００５９】
実行時間調整手段としてのクロックウェイト制御回路２４は、図９に示すように、命令デコーダ２２が出力するＧＰ部２で実行する命令の種類とＰＥ範囲指定情報に基づいて、クロックウェイトが必要な命令の場合は、特定のパイプラインステージに対して、ＰＥ範囲指定情報に応じて所定のサイクル数のクロックウェイトを決定して挿入している。
【００６０】
ＰＥ部３は、第１の実施例と同様に、Ｇレジスタ２１へのデータ転送時に必要とするサイクル数に応じて、３２個のＰＥごとにグループを構成しているものとして扱う。このため、クロックウェイト数の切り替えには、第１の実施形態と同様にＰＥ範囲指定情報の上限値、下限値を８ビットの即値で表現して、その上位３ビットのみを使用して切り替えればよい。
【００６１】
上述した処理のフローチャートを図１０に示す。図１０のフローチャートはクロックウェイト制御回路２４で実行される。まずステップＳ２１において、実行する命令がクロックウェイト対象命令か否かを判断し、クロックウェイト対象命令の場合（Ｙｅｓの場合）はステップＳ２２に進み、クロックウェイト対象命令で無い場合（Ｎｏの場合）は次の命令について判断する。次に、ステップＳ２２において、ＰＥの範囲指定情報に基づいてＰＥ範囲指定を伴う命令か否かを判断し、ＰＥ範囲指定を伴う命令である場合はステップＳ２３に進み、ＰＥ範囲指定を伴う命令でない場合はステップＳ１１に進む。次に、ステップＳ２３において、クロックウェイト数を決定してクロックウェイトを挿入する。
【００６２】
このように制御した場合、図１１に示したようにＰＥ０もしくはＰＥ２５５に近いグループほど、ストール数は多く必要であり、ＰＥの中央付近のグループほど、ストール数は少なくなる。つまり、ＰＥ範囲指定情報に基づいてデータハザードが発生したときのグローバルプロセッサ２における待ち時間が少なくなるようにクロックウェイトサイクル数を調整して挿入することができる。
【００６３】
本実施例によれば、クロックウェイト制御回路２４が、ＰＥ範囲指定情報に基づいて、クロックウェイト制御を行っているため、各ＰＥからＧＰ部２へのデータ転送にかかるサイクル数に応じて、適切なサイクル数でクロックウェイトさせることができる。
【００６４】
また、３２個のＰＥで構成されるグループに分割して、そのグループごとにクロックウェイトさせるサイクル数を設定しているので、１つのＰＥごとにクロックウェイト制御を行うよりもクロックウェイト制御をより簡略化して行うことができる。
【００６５】
なお、プロセッサ全体の動作速度が十分に遅く、すべての範囲のＰＥからのデータ転送が１サイクルで行える場合は、図１２に示すように、クロックウェイト切替手段としての命令デコーダ２２からクロックウェイト制御回路２４に対してクロックウェイト挿入の抑止信号を出力することで、不要なクロックウェイトの挿入を回避でき、データ転送にかかるサイクル数を短縮することができる。
【００６６】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【００６７】
【図１】本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図２】図１に示したグローバルプロセッサ内の命令デコーダとストール制御回路との関係を示す説明図である。
【図３】図１に示したＳＩＭＤ型マイクロプロセッサのプロセッサエレメントの詳細を示したブロック図である。
【図４】図１に示したデータ制御回路の内部構成を示した回路図である。
【図５】図１に示したグローバルプロセッサのストール数制御を示すフローチャートである。
【図６】図１に示したＳＩＭＤ型マイクロプロセッサのストール数を示した説明図である。
【図７】図５に示したデータ制御回路の他の形態を示した回路図である。
【図８】本発明の第２の実施形態にかかるＳＩＭＤ型マイクロプロセッサ１のブロック図である。
【図９】図８に示したグローバルプロセッサ内の命令デコーダとクロックウェイト制御回路との関係を示す説明図である。
【図１０】図８に示したグローバルプロセッサのクロックウェイト数制御を示すフローチャートである。
【図１１】図８に示したＳＩＭＤ型マイクロプロセッサのクロックウェイト数を示した説明図である。
【図１２】図９に示したグローバルプロセッサの他の形態を示した回路図である。
【符号の説明】
【００６８】
１          ＳＩＭＤ型マイクロプロセッサ
２          ＧＰ部
３          ＰＥ部（複数のプロセッサエレメント）
２１        Ｇレジスタ
２２        命令デコーダ（転送手段、クロックウェイト切替手段）
２３        ストール制御回路（実行時間調整手段）
２４        クロックウェイト制御回路（実行時間調整手段）
３１        レジスタファイル
３２        演算アレイ
３７        データ制御回路
３７１      第１パイプラインレジスタ（パイプラインレジスタ）
３７２      マルチプレクサ（データ切替手段）
３７３      第２パイプラインレジスタ
３７４      第１選択回路
３７５      第２選択回路
【図１】
2010009357.tif 000003
【図２】
2010009357.tif 000004
【図３】
2010009357.tif 000005
【図４】
2010009357.tif 000006
【図５】
2010009357.tif 000007
【図６】
2010009357.tif 000008
【図７】
2010009357.tif 000009
【図８】
2010009357.tif 000010
【図９】
2010009357.tif 000011
【図１０】
2010009357.tif 000012
【図１１】
2010009357.tif 000013
【図１２】
2010009357.tif 000014