(57)【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントと、プログラムに従って該各プロセッサエレメントの演算制御を行う少なくとも１つのグローバルプロセッサとで構成された、単一命令多データ処理方式の演算処理装置において、
上記各プロセッサエレメントは、
少なくとも１つのレジスタファイルからなるレジスタファイル部と、
該レジスタファイル部から読み出されたデータ、又は上記グローバルプロセッサから入力されるデータを一時的に格納するデータ格納部と、
アキュムレータを有し、該データ格納部に格納されたデータ及び該アキュムレータに格納されたデータを用いて所定の演算を行う演算部と、
該演算部におけるアキュムレータに対するラッチ動作を制御するラッチ制御部と、
を備え、
該ラッチ制御部は、上記グローバルプロセッサから入力されるデータをマスクして上記アキュムレータに対するラッチ制御信号を生成することを特徴とする演算処理装置。
【請求項２】
上記ラッチ制御部は、上記グローバルプロセッサから入力されるデータを用いてマスクすることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
上記ラッチ制御部は、上記データ格納部に格納されたデータを、上記グローバルプロセッサから入力されるデータでマスクして上記ラッチ制御信号を生成することを特徴とする請求項１又は請求項２のいずれかに記載の演算処理装置。
【請求項４】
上記ラッチ制御部は、前回生成したラッチ制御信号を、上記グローバルプロセッサから入力されるデータでマスクして上記ラッチ制御信号を生成することを特徴とする請求項１から請求項３のいずれかに記載の演算処理装置。
【請求項５】
上記演算部は、所定の演算を行う算術論理演算処理装置と、該算術論理演算処理装置のステータス情報を格納するステータスレジスタとを有し、上記ラッチ制御部は、該ステータスレジスタに格納されたステータス情報を示すデータを、上記グローバルプロセッサから入力されるデータでマスクして上記ラッチ制御信号を生成することを特徴とする請求項１から請求項４のいずれかに記載の演算処理装置。
【請求項６】
上記ラッチ制御部は、
複数の入力信号のいずれか１つを、グローバルプロセッサからの信号に応じて選択し出力する入力信号選択部と、
該入力データ信号選択部から出力された信号が示すデータ、上記グローバルプロセッサから入力されるデータ又は上記データ格納部に格納されたデータのいずれかを、上記グローバルプロセッサからの信号に応じて選択的に格納するレジスタ部と、
上記グローバルプロセッサから入力されるデータを用いて該レジスタ部に格納されたデータのマスキングを行うマスク部と、
を備えることを特徴とする請求項１から請求項５のいずれかに記載の演算処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサを有する演算処理装置に関し、特に、コピー、ＦＡＸ、プリンタ等の画像データを高速処理するために単一の命令で複数データに対して同じ処理を行うＳＩＭＤ方式の演算処理装置に関する。
【０００２】
【従来の技術】
近年、コピー、ＦＡＸ及びプリンタ等の画像処理においては、画素数の増加、デジタル化及びカラー対応といった画質向上等によって、処理するデータ数が増加し、データの処理方法の複雑化が進んでいる。このような画像データの高速処理を行うために、１つの命令で１つのデータを処理するＳＩＳＤ（Single Instruction-stream Single Data-stream）方式のプロセッサから、１つの命令で複数のデータを処理するＳＩＭＤ（Single Instruction-stream Multiple Data-stream）方式のプロセッサ又は複数の命令で複数のデータを処理するＭＩＭＤ（Multiple Instruction-stream Multiple Data-stream）方式のプロセッサが用いられている。
【０００３】
ＳＩＭＤ方式のプロセッサは、一般的に複数のデータを処理するために演算アレイとレジスタファイルを備えたプロセッサエレメントと呼ばれるブロックを有し、複数のデータを一度に処理するために複数のプロセッサエレメントを備えている。プロセッサエレメントの制御はシーケンサと呼ばれる、プログラムメモリに格納された命令コードを解読して制御信号をプロセッサエレメントのレジスタファイル及び演算ユニットに送信するブロックが１つ存在する。シーケンサは１つであり同じ制御信号をすべてのプロセッサエレメントに送信するため、各プロセッサエレメントでの処理は同じ処理となる。
【０００４】
一方、ＭＩＭＤ方式のプロセッサは、上記ＳＩＭＤ方式のプロセッサと同様に、複数のデータを一度に処理するために複数のプロセッサエレメントを備えている点ではＳＩＭＤ方式のプロセッサと同じであるが、ＳＩＭＤ方式のプロセッサとの相違点は、各プロセッサエレメントごとに１つのシーケンサが存在することにある。プロセッサエレメントごとに１つのシーケンサが存在するため、プロセッサエレメントごとに異なる命令を実行してデータ処理を行うことが可能である。
【０００５】
【発明が解決しようとする課題】
このように、ＳＩＭＤ方式のプロセッサは、シーケンサが１つの命令のデコードだけ行えればよいため、構成が単純で回路規模も少なくてすむという長所があるが、各プロセッサエレメントごとに異なる命令を実行してデータ処理を行うことができなかった。これに対して、ＭＩＭＤ方式のプロセッサは、各プロセッサエレメントごとに異なる命令を実行してデータ処理を行うことができるが、１つのプロセッサエレメントに対して１つのシーケンサが必要であり、複数のプロセッサエレメントを有する場合は、該各プロセッサエレメントに対応した数のシーケンサが必要となる。このため、ＭＩＭＤ方式のプロセッサでは、命令コードを格納するプログラムメモリの制御、容量及びシーケンサの構成等が複雑となり、回路規模も増大するという問題があった。
【０００６】
本発明は、上記のような問題を解決するためになされたものであり、１つのシーケンサで各プロセッサエレメントごとに異なる命令を実行してデータ処理を行うことができるＳＩＭＤ方式の演算処理装置を得ることを目的とする。
【０００７】
なお、特開平５−１８９５８５号公報では、複数の演算ユニットをもち、該各演算ユニットに演算制御回路をそれぞれ設けたＳＩＭＤ方式のプロセッサが開示され、該演算制御回路には演算ユニットの命令実行条件を条件フラグによって修飾する点では本発明と同じである。また、特開平７−２１９９１９号公報では、複数の演算器ごとにフラグレジスタを設け、演算結果によって状態を変化させ、状態を条件にして命令の実行を制御するＳＩＭＤ方式のプロセッサが開示されている。しかし、本発明は、条件フラグ間のデータ転送、及び複数条件による設定を可能にしていることから、特開平５−１８９５８５号公報及び特開平７−２１９９１９号公報で開示された各ＳＩＭＤ方式のプロセッサとは異なるものである。
【０００８】
また、特開平１０−２８９３０５号公報では、ステータスフラグに演算結果を出力し、ステータスフラグによって演算器における現命令の演算結果出力の格納を制御するＳＩＭＤ方式のプロセッサが開示されているが、ステータスフラグから演算制御フラグ条件ビットにデータを転送し、次命令の実行条件を制御する点で本発明とは異なるものである。
【０００９】
【課題を解決するための手段】
この発明に係る演算処理装置は、複数のプロセッサエレメントと、プログラムに従って該各プロセッサエレメントの演算制御を行う少なくとも１つのグローバルプロセッサとで構成された、単一命令多データ処理方式の演算処理装置において、各プロセッサエレメントは、少なくとも１つのレジスタファイルからなるレジスタファイル部と、該レジスタファイル部から読み出されたデータ、又はグローバルプロセッサから入力されるデータを一時的に格納するデータ格納部と、アキュムレータを有し、該データ格納部に格納されたデータ及び該アキュムレータに格納されたデータを用いて所定の演算を行う演算部と、該演算部におけるアキュムレータに対するラッチ動作を制御するラッチ制御部とを備え、該ラッチ制御部は、グローバルプロセッサから入力されるデータをマスクしてアキュムレータに対するラッチ制御信号を生成するものである。
【００１０】
具体的には、上記ラッチ制御部は、グローバルプロセッサから入力されるデータを用いてマスクする。
【００１１】
また、上記ラッチ制御部は、データ格納部に格納されたデータを、グローバルプロセッサから入力されるデータでマスクしてラッチ制御信号を生成するようにしてもよい。
【００１２】
また、上記ラッチ制御部は、前回生成したラッチ制御信号を、グローバルプロセッサから入力されるデータでマスクしてラッチ制御信号を生成するようにしてもよい。
【００１３】
一方、上記演算部は、所定の演算を行う算術論理演算処理装置と、該算術論理演算処理装置のステータス情報を格納するステータスレジスタとを有し、ラッチ制御部は、該ステータスレジスタに格納されたステータス情報を示すデータを、グローバルプロセッサから入力されるデータでマスクしてラッチ制御信号を生成するようにしてもよい。
【００１４】
具体的には、上記ラッチ制御部は、複数の入力信号のいずれか１つをグローバルプロセッサからの信号に応じて選択し出力する入力信号選択部と、該入力データ信号選択部から出力された信号が示すデータ、グローバルプロセッサから入力されるデータ又はデータ格納部に格納されたデータのいずれかを、グローバルプロセッサからの信号に応じて選択的に格納するレジスタ部と、グローバルプロセッサから入力されるデータを用いて該レジスタ部に格納されたデータのマスキングを行うマスク部とを備える。
【００１５】
【発明の実施の形態】
次に、図面に示す実施の形態に基づいて、本発明を詳細に説明する。
図１は、本発明の実施の形態における演算処理装置の例を示した概略の構成図である。
図１において、演算処理装置１は、グローバルプロセッサ（Global Processor）と呼ばれるＳＩＳＤ方式（Single Instruction-stream Single Data-stream）のプロセッサ２からの制御信号が、レジスタファイル部３と演算アレイ部４で構成されたプロセッサエレメント部５を制御する。プロセッサエレメント部５は、レジスタファイル及び演算アレイをそれぞれ有する複数のプロセッサエレメント（Processor Element）で構成されており、レジスタファイル部３は、各プロセッサエレメントのそれぞれのレジスタファイルで構成されており、演算アレイ部４は、各プロセッサエレメントのそれぞれの演算アレイで構成されている。
【００１６】
グローバルプロセッサ２は、レジスタファイル部３の各レジスタファイルに対する制御信号を出力すると共に演算アレイ部４の各演算アレイに対する制御信号を出力する。また、グローバルプロセッサ２と演算アレイ部４の各演算アレイとがデータバスで接続されており、レジスタファイル部３の各レジスタファイルと演算アレイ部４の対応する演算アレイとがデータバスで接続されている。更に、レジスタファイル部３の各レジスタファイルは、データバスを介して対応する外部入出力端子に接続されている。該各外部入出力端子は、外部とデータの入出力を行う端子である。
【００１７】
図２は、図１で示した演算処理装置１をもう少し詳細に示したブロック図であり、グローバルプロセッサ２及びプロセッサエレメント部５におけるプロセッサエレメントの構成をより詳細に示している。なお、図２では、プロセッサエレメント部５が２５６個のプロセッサエレメントで構成されている場合を例にして示している。
図２において、グローバルプロセッサ２は、シーケンサをなすシーケンシャルユニットのＳＣＵ１０と、算術論理演算器であるＡＬＵ１１と、命令コードを格納するプログラムＲＡＭ１２と、グローバルプロセッサ２内の演算結果データを格納したり演算に使用するデータを格納するデータＲＡＭ１３と、プログラムＲＡＭ１２、データＲＡＭ１３又は各プロセッサエレメントからのデータを一時的に格納したり転送する複数の汎用レジスタＧ０〜Ｇ３からなる汎用レジスタ部１４とを備えている。
【００１８】
更に、グローバルプロセッサ２は、プログラムのアドレスを保持するプログラムカウンタ（図２ではＰＣと示す）１５と、レジスタ退避、復帰時に退避先であるデータＲＡＭ１３のアドレスを保持しているスタックポインタ（図２ではＳＰと示す）１６と、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（図２ではＬＳと示す）１７と、ＩＲＱ時の分岐元アドレスを保持するＬＩレジスタ（図２ではＬＩと示す）１８と、同じくＮＭＩ時の分岐元アドレスを保持するＬＮレジスタ（図２ではＬＮと示す）１９と、及びグローバルプロセッサ２の状態を保持しているプロセッサステータスレジスタであるＰレジスタ（図２ではＰと示す）２０とを備えている。なお、グローバルプロセッサ２内の構成は公知であることから、図２では各部の接続を省略している。
【００１９】
ＳＣＵ１０は、１サイクルに１つの命令を実行することが可能であり、プログラムＲＡＭ１２に格納された命令コードをプログラムカウンタ１５に格納されたアドレスを参照しながら１ワードずつロードする。更にＳＣＵ１０は、該ロードした命令コードをデコードして、グローバルプロセッサ２内の各ブロック及びプロセッサエレメント部５の各プロセッサエレメントＰＥ０〜ＰＥ２５５に対して、プロセッサエレメントＰＥ０〜ＰＥ２５５の動作制御を行うための各信号及びデータを複数の信号線からなるＰＥ制御信号線Ｓｐｅを介してそれぞれ出力する。
【００２０】
グローバルプロセッサ２における命令は、グローバルプロセッサ２内での演算処理に対するＧＰ命令と、プロセッサエレメント内又はプロセッサエレメント間での演算処理に対するＰＥ命令に分類することができる。図２では図示していないが、ＳＣＵ１０には、ＧＰ命令を解読し主にグローバルプロセッサ２内の各ブロックに制御信号を発生するＧＰインストラクションデコーダと、ＰＥ命令を解読し主にプロセッサエレメント内の各ブロックに対する制御信号を発生するＰＥインストラクションデコーダが含まれている。
【００２１】
なお、プロセッサエレメントＰＥ０〜ＰＥ２５５は、それぞれ同じ回路構成で形成されていることから、図２では、プロセッサエレメントＰＥｍ（ｍは、０≦ｍ≦２５５の自然数）の内部回路例のみを示しており、他のプロセッサエレメントの内部回路は省略している。このことから、以下、プロセッサエレメントＰＥｍの動作について説明し、他のプロセッサエレメントの動作についてはプロセッサエレメントＰＥｍと同様であるのでその説明を省略する。
【００２２】
プロセッサエレメントＰＥｍは、複数、例えば３２個のレジスタＲ０〜Ｒ３１からなるレジスタファイル２１と、演算アレイ２２とで構成されている。レジスタファイル２１において、各レジスタＲ０〜Ｒ３１は、それぞれ８ビットのレジスタであり、レジスタＲ０〜Ｒ２３は外部入出力端子に接続されており、レジスタＲ２４〜Ｒ３１は、プロセッサエレメントＰＥｍ内でのみ使用される。レジスタファイル２１と演算アレイ２２との間におけるデータの入出力は、双方向バスであるＤＢバス２３を介して行われる。
【００２３】
演算アレイ２２は、データのシフト及び拡張を行うシフト・拡張部３１と、第１記憶部３２、第２記憶部３３、ＡＬＵ３４、プロセッサステータスレジスタであるＰＰレジスタ３５、アキュムレータであるＡレジスタ３６、データを一時的に保持するテンポラリレジスタであるＦレジスタ３７及び演算制御を行うマルチビットの演算制御レジスタであるＴレジスタ３８で構成されている。ＰＰレジスタ３５は、ＡＬＵ３４による演算結果に対する、キャリーやボローの発生を示すキャリーフラグ（以下、これをＣフラグと呼ぶ）ＦＣ、及びＡＬＵ３４による演算がオーバーフローしたことを示すオーバーフローフラグ（以下、これをＶフラグと呼ぶ）ＦＶ等が格納されるマルチビットのレジスタである。
【００２４】
シフト・拡張部３１は、ＤＢバス２３を介してレジスタファイル２１に接続されており、レジスタファイル２１からの入力データを８ビットまで左シフトする、すなわち８ビットデータを１６ビットデータに拡張することができ、この時、扱うデータの範囲によって符号付き拡張、ゼロ拡張を決定することができる。例えば、８ビット１６進数で−８０ｈ〜７ｆｈのデータの場合は符号付き拡張を行い、８ビット１６進数で０ｈ〜ｆｆｈのデータの場合はゼロ拡張を行う。８ビットデータの−８０ｈを１６ビットに符号付き拡張すると０ｆｆ８０ｈ、すなわち１６ビットの−８０ｈであるが、ゼロ拡張すると１６ビットの８０ｈとなる。
【００２５】
シフト・拡張部３１は、このように処理したデータを第２記憶部３３に出力して格納させる。また、シフト・拡張部３１は、Ａレジスタ３６、Ｆレジスタ３７及びＴレジスタ３８からのデータをレジスタファイル２１に出力することもできる。一方、第１記憶部３２には、Ａレジスタ３６に格納されたデータが読み出されて格納される。ＡＬＵ３４は、第１記憶部３２のデータと第２記憶部３３のデータがそれぞれ入力され、該入力された各データに対して所定の算術論理演算処理を行う。ＡＬＵ３４は、演算した結果を１６ビットのＡレジスタ３６又は１６ビットのＦレジスタ３７のいずれかに格納する。また、第２記憶手段３３に格納されたデータは、Ｔレジスタ３８にも出力される。
【００２６】
また、ＡＬＵ３４による算術論理演算処理中にオーバフローが発生すると、ＰＰレジスタ３５のＶフラグＦＶがセットされ、ＡＬＵ３４による算術論理演算処理中にキャリーやボローが発生すると、ＰＰレジスタ３５のＣフラグＦＣがセットされる。ＰＰレジスタ３５のＶフラグＦＶ及びＣフラグＦＣは、Ｔレジスタ３８に出力される。なお、ＶフラグＦＶとＣフラグＦＣの２ビットをＰＰレジスタ３５として説明しているが、他に通常のＡＬＵで検知されるゼロフラグ、ネガティブフラグ等もＰＰレジスタ３５の構成に含めることができる。また、ＰＰレジスタ３５のデータをＴレジスタ３８に格納するようにしてもよい。
【００２７】
また、グローバルプロセッサ２の汎用レジスタＧ０とプロセッサエレメントＰＥ０〜ＰＥ２５５における各Ａレジスタ３６とは、汎用レジスタＧ０から各Ａレジスタ３６にデータ転送するための１６ビットのＧＡバス４１と、各Ａレジスタ３６から汎用レジスタＧ０にデータ転送するための１６ビットのＡＧバス４２でそれぞれ接続されている。このため、グローバルプロセッサ２での演算結果のデータを各プロセッサエレメントのＡレジスタ３６に格納することができると共に、各プロセッサエレメントでの演算の結果をグローバルプロセッサ２の汎用レジスタＧ０に格納することができる。
【００２８】
ここで、グローバルプロセッサ２のＳＣＵ１０から出力された各信号は、ＰＥ制御信号線Ｓｐｅを介してレジスタファイル２１及び演算アレイ２２に入力され、ＳＣＵ１０から出力された各データは、ＰＥ制御信号線Ｓｐｅを介して演算アレイ２２に入力される。Ｔレジスタ３８は、ＰＥ制御信号線Ｓｐｅから入力される各種信号及びデータ、並びにＰＰレジスタ３５から入力されるＶフラグＦＶ及びＣフラグＦＣから、Ａレジスタ３６に対するラッチ制御を行う。以下、演算アレイ２２の各部、特にＴレジスタ３８とＰＥ制御信号線Ｓｐｅとの関係について説明する。
【００２９】
図３は、図２の演算アレイ２２の各部とＰＥ制御信号線Ｓｐｅとの関係を示したブロック図であり、信号の流れを示している。
図３において、ＰＥ制御信号線ＳｐｅにおけるデータバスＩＭＭ１が、シフト・拡張部３１及びＴレジスタ３８に接続されている。グローバルプロセッサ２のＳＣＵ１０は、命令コード中に即値が記述されていると、該即値データをデータバスＩＭＭ１を介してシフト・拡張部３１及びＴレジスタ３８にそれぞれ出力する。
【００３０】
更に、Ｔレジスタ３８には、データバスＩＭＭ２が接続され、グローバルプロセッサ２のＳＣＵ１０は、命令コードに応じて、データバスＩＭＭ１と同じデータか、又は任意の１ビットが例えば「１」でその他のビットがすべて「０」であるデータのいずれかをデータバスＩＭＭ２を介してＴレジスタ３８に出力する。また、ＳＣＵ１０は、命令コードに応じて、ＰＰレジスタ３５に対してラッチ動作をさせるための制御信号であるＰＰラッチ信号を、Ｔレジスタ３８に対してラッチ動作をさせるための制御信号であるＴラッチ信号をそれぞれＰＥ制御信号線Ｓｐｅを介して出力する。ＰＰレジスタ３５は、ラッチ回路等の記憶回路で構成されるため、上記ＰＰラッチ信号によってラッチする。
【００３１】
また、ＳＣＵ１０は、命令コードに応じて、Ｔレジスタ３８に対して入力データを選択する入力選択信号をＰＥ制御信号線Ｓｐｅを介して出力する。Ｔレジスタ３８は、各種入力信号及び入力データに応じて生成した、Ａレジスタ３６に対してラッチ動作を制御するための信号であるＡラッチ信号を出力する。
【００３２】
このような構成で、ＳＣＵ１０が、例えば下記の命令を実行したとする。
ＡＤＤ      ＃１２３４ｈ………………（１）
なお、上記（１）で示した「ＡＤＤ」命令は、Ａレジスタ３６にラッチされているデータと１６進数の「１２３４ｈ」を加算してＡレジスタ３６に格納するというものである。
このとき第１記憶部３２にはＡレジスタ３６に格納されているデータが、第２記憶部３３にはシフト・拡張部３１を介してデータバスＩＭＭ１からのデータ「１２３４ｈ」が格納され、ＡＬＵ３４によって、第１記憶部３２に格納されているデータと第２記憶部３３に格納されているデータとが加算されて、Ａレジスタ３６に格納される。
【００３３】
図４は、図２及び図３で示したＴレジスタ３８の回路例を示した図である。
図４において、Ｔレジスタ３８は、３入力のレジスタＴ０〜Ｔ７からなる８ビットのレジスタ部５１と、レジスタ部５１への入力データを選択する３入力のマルチプレクサ５２と、ＡＮＤ回路Ａ０〜Ａ７と、８入力のＯＲ回路５３と、ラッチ回路５４とで構成されている。
【００３４】
マルチプレクサ５２には、ＰＰレジスタ３５のＶフラグＦＶとＣフラグＦＣがそれぞれ入力されており、更に、Ｔレジスタ３８の出力信号であるＡラッチ信号が入力される。マルチプレクサ５２は、ＰＥ制御信号線Ｓｐｅを介して入力されるＳＣＵ１０からの入力選択信号に応じて、入力されているデータのいずれか１つを選択してレジスタ部５１の各レジスタＴ０〜Ｔ７に出力する。更に、各レジスタＴ０〜Ｔ７には、データバスＩＭＭ１からの即値データ及び第２記憶部３３からのデータがそれぞれ入力され、ＰＥ制御信号線Ｓｐｅを介して入力されるＳＣＵ１０からのＴラッチ信号に応じて入力されているデータのいずれか１つを選択してそれぞれラッチする。
【００３５】
各レジスタＴ０〜Ｔ７でラッチされたデータは、対応するＡＮＤ回路Ａ０〜Ａ７の一方の入力端にそれぞれ出力される。また、ＡＮＤ回路Ａ０〜Ａ７の各他方の入力端は、ＰＥ制御信号線ＳｐｅのデータバスＩＭＭ２に接続され、ＳＣＵ１０からのデータが入力される。また、ＡＮＤ回路Ａ０〜Ａ７の各出力端は、ＯＲ回路５３の対応する入力端にそれぞれ接続され、ＯＲ回路５３の出力端は、ラッチ回路５４を介してＡレジスタ３６及びマルチプレクサ５２に接続され、Ａラッチ信号を出力する。該ラッチ回路５４は、レジスタＴ０〜Ｔ７から出力された８ビットデータに対して、ＡＮＤ回路Ａ０〜Ａ７及びＯＲ回路５３で演算された結果を一時的に格納するものである。
【００３６】
ＰＰレジスタ３５は、ＶフラグＦＶをラッチするラッチ回路５７とＣフラグＦＣをラッチするラッチ回路５８とで構成されており、該各ラッチ回路５７，５８には、ＰＥ制御信号線Ｓｐｅを介してＳＣＵ１０からＰＰラッチ信号がそれぞれ入力される。ＰＰラッチ信号は２ビットのラッチ制御信号で構成されており、ラッチ回路５７及び５８には、対応する１ビットのラッチ制御信号が入力される。
【００３７】
また、データバスＩＭＭ１及びＩＭＭ２はそれぞれ８ビットのデータバスであり、各レジスタＴ０〜Ｔ７には、データバスＩＭＭ１の対応する１ビットの信号線がそれぞれ接続され、ＡＮＤ回路Ａ０〜Ａ７には、データバスＩＭＭ２の対応する１ビットの信号線がそれぞれ接続されている。同様に、第２記憶部３３から出力された８ビットのデータは、１ビットデータごとに対応するレジスタＴ０〜Ｔ７に入力される。一方、レジスタＴ０〜Ｔ７のラッチ制御を行うＴラッチ信号は、各レジスタＴ０〜Ｔ７ごとに対応して入力される３ビットの信号で構成されている。なお、ラッチ回路５４には、図示していないがＰＥ制御信号線Ｓｐｅから１ビットのラッチ信号が入力され、各レジスタのラッチ回路等の記憶回路には、図示していないがグローバルプロセッサ２からのクロックも入力されている。
【００３８】
このような構成において、ＰＰレジスタ３５ではＰＰラッチ信号によってＡＬＵ３４からのＶフラグＦＶ及び／又はＣフラグＦＣをラッチし、該ラッチされたフラグはマルチプレクサ５２にそれぞれ転送される。マルチプレクサ５２では、ＰＰレジスタ３５からの各入力データ及びラッチ回路５４からの出力データの計３ビットデータの内、１ビットを入力選択信号に応じて選択する。選択された入力データは、Ｔラッチ信号に応じてレジスタ部５１の選択されたレジスタにラッチされる。
【００３９】
レジスタＴ０〜Ｔ７は３入力となっており、第２記憶部３３からのデータ、データバスＩＭＭ１からのデータ又はマルチプレクサ５２からの出力データのいずれかをラッチする。レジスタ部５１にラッチされたデータは、ＡＮＤ回路Ａ０〜Ａ７によってデータバスＩＭＭ２から入力されるデータの各ビットとのＡＮＤ演算が行われ、ＡＮＤ回路Ａ０〜Ａ７から出力されるデータはデータバスＩＭＭ２からのデータによってマスクされたデータとなる。各ＡＮＤ回路Ａ０〜Ａ７の出力はＯＲ回路５３でＯＲ演算が行われた後、ラッチ回路５４に格納される。なお、本実施の形態では、レジスタ部５１は、８ビットのレジスタ構成であるが、１６ビット又は３２ビットのレジスタ構成でも問題はない。
【００４０】
上記のような構成において、レジスタ部５１の各レジスタＴ０〜Ｔ７には、Ａラッチ信号生成するための条件フラグ、すなわちプロセッサエレメントで行われる演算を制御するための演算制御フラグを格納することができると共に、プロセッサエレメントごとに異なる該演算制御フラグの設定を行うことによって、プロセッサエレメントごとに様々な異なった演算を行わせることができる。以下、このようにした場合の例について説明する。
【００４１】
図２から図４で示したように、Ｔレジスタ３８のレジスタ部５１は、レジスタファイル２１からＤＢバス２３を経由して第２記憶部３３にデータを格納した後、転送されるという入力経路と、グローバルプロセッサ２のＳＣＵ１０からデータバスＩＭＭ１を経由した入力経路とを有している。Ｔレジスタ３８のレジスタ部５１に対する該２つの入力経路を使用してデータの格納を行わせるＰＥ命令の例を下記に示す。
ＬＤＴ／Ｔ１      ＃１１００１１００ｂ………………（２）
ＬＤＴ／Ｔ２      Ｒ０………………（３）
【００４２】
上記（２）の記述が２進数の即値「１１００１１００」をＴレジスタ３８に格納するというＰＥ命令で、即値の上位から順にレジスタＴ７からレジスタＴ０へデータが格納される。ただし、レジスタＴ１の状態が「１」であるプロセッサエレメントにはデータの格納を行い、「０」であるプロセッサエレメントにはデータの格納を行わない。また、上記（３）の記述で、レジスタファイル２１のレジスタＲ０から８ビットのデータを、上位から順にレジスタＴ７からレジスタＴ０へデータが格納される。ただし、レジスタＴ１の状態が「１」であるプロセッサエレメントにはデータの格納を行い、「０」であるプロセッサエレメントにはデータの格納を行わない。
【００４３】
「ＬＤＴ」というＰＥ命令は、レジスタファイル２１における特定のレジスタの値をＴレジスタ３８に転送するか、又はプログラムコードに書かれた即値データをＴレジスタ３８に転送する処理を行わせるものである。レジスタファイル２１から出力されたデータは、ＤＢバス２３を経由して第２記憶部３３に格納されると共に、Ｔレジスタ３８に格納されて設定される。このように、グローバルプロセッサ２のＳＣＵ１０で抽出された即値データは、直接各プロセッサエレメントに転送され、データバスＩＭＭ１の入力経路でＴレジスタ３８に転送される。
【００４４】
一方、Ｔレジスタ３８に格納されているデータは複数ビットあり、該データの状態も各プロセッサエレメント間で異なる。
例えば、プロセッサエレメントＰＥ０〜ＰＥ３におけるＴレジスタ３８のレジスタＴ０〜Ｔ３に格納されているデータが下記のようであったとする。
プロセッサエレメントＰＥ０…………Ｔ０＝１,Ｔ１＝０,Ｔ２＝０,Ｔ３＝０
プロセッサエレメントＰＥ１…………Ｔ０＝１,Ｔ１＝１,Ｔ２＝０,Ｔ３＝０
プロセッサエレメントＰＥ２…………Ｔ０＝１,Ｔ１＝１,Ｔ２＝１,Ｔ３＝０
プロセッサエレメントＰＥ３…………Ｔ０＝１,Ｔ１＝１,Ｔ２＝１,Ｔ３＝１
【００４５】
このようの状態で、プロセッサエレメントＰＥ０〜ＰＥ３における各Ａレジスタ３６の値がすべて１２であったとして、下記（４）から（７）の命令を実行する。
ＡＤＤ／Ｔ０      ＃１２………………（４）
ＡＤＤ／Ｔ１      ＃１２………………（５）
ＡＤＤ／Ｔ２      ＃１２………………（６）
ＡＤＤ／Ｔ３      ＃１２………………（７）
なお、「ＡＤＤ」は加算命令であり、上記（４）〜（７）の場合、第１オペランド「１２」とＡレジスタ３６の内容を加算してＡレジスタ３６に格納するという命令である。ただし、レジスタＴ１の状態が「１」であるプロセッサエレメントには加算を、「０」であるプロセッサエレメントには加算を行わせない。
【００４６】
上記（４）〜（７）の命令を実行すると、プロセッサエレメントＰＥ０のＡレジスタ３６の値は１２×２＝２４、プロセッサエレメントＰＥ１のＡレジスタ３６の値は１２×３＝３６、プロセッサエレメントＰＥ２のＡレジスタ３６の値は１２×４＝４８、プロセッサエレメントＰＥ３のＡレジスタ３６の値は１２×５＝６０といったように、異なった結果を１つのシーケンサで同じ命令を使用して得ることができる。ただし、プロセッサエレメントＰＥ０は、レジスタＴ１の状態が「０」であることから、加算処理は行われない。
【００４７】
また、Ｔレジスタ３８のレジスタ部５１には複数のビットのデータが格納され、該複数ビットのデータの設定が可能なため、レジスタ部５１のビットデータを更新することなく一度の設定で複数の命令を実行することができるため、レジスタ部５１内のデータ更新に伴う命令の実行を削減でき、命令コードを減らすことができる。
【００４８】
次に、図４で示したように、レジスタ部５１から出力されたすべてのビットデータとデータバスＩＭＭ２からのデータとでＡＮＤ演算を行い、該演算を行って得られたすべてのビットデータに対してＯＲ演算を行うことで、各レジスタＴ０〜Ｔ７のビットデータの条件をとった演算が可能となる。このような処理は、下記（８）で示したような、ＰＥ命令における「ＴＳＴＦ」命令で行う。
ＴＳＴＦ／Ｔ２      ＃１１００１１００ｂ………………（８）
上記（８）で示した命令は、レジスタＴ０〜Ｔ７において、即値で表されたビットデータの「１」となる位置のすべてのビットデータのＯＲ演算を行い、該演算結果をレジスタＴ２に格納するというものである。
【００４９】
２進数の即値「１１００１１００」は、グローバルプロセッサ２のＳＣＵ１０でデコードされてデータバスＩＭＭ２に転送される。データバスＩＭＭ２からのデータは、各ビットデータと対応するレジスタＴ０〜Ｔ７の出力データとでＡＮＤ演算が行われ、該演算結果のすべてのビットデータに対してＯＲ演算が行われる。すなわち、データバスＩＭＭ２からのデータで「１」となっているビットデータに対応するレジスタ部５１のビットデータが少なくとも１つ「１」であれば、「１」のデータがＯＲ回路５３から出力される。また、データバスＩＭＭ２からのデータで「１」となっているビットデータに対応するレジスタ部５１のビットデータがすべて「１」でなければ、ＯＲ回路５３から「０」のデータが出力される。
【００５０】
ＯＲ回路５３から出力されたデータは、マルチプレクサ５２で入力選択信号によって選択されると、レジスタ部５１の任意のレジスタに格納される。
このように、即値で指定されたレジスタ部５１のデータに対して更に条件を付けて処理することができるため、複雑な演算条件を設定することができ、プロセッサエレメント間で異なる実行結果を簡単に得ることができる。
【００５１】
また、レジスタ部５１のレジスタ間でのデータ転送は、例えば下記（９）で示しているように、上記「ＴＳＴＦ」命令で１ビットのみ「１」を設定することで可能である。
ＴＳＴＦ／Ｔ１      ＃１０００００００ｂ………………（９）
上記（９）で示した命令は、即値で表されたビット７のみに注目し、ビット７のデータとレジスタ部５１のレジスタＴ７に格納されているデータとのＯＲ演算を行った結果を、レジスタ部５１のレジスタＴ１に格納することを意味している。すなわち、レジスタＴ７からレジスタＴ１にデータを転送したことになり、回路の追加を行わずにレジスタ部５１における所望のレジスタ間でのデータの転送が行える。
【００５２】
一方、上記「ＴＳＴＦ」命令には、下記（１０）で示すように、ＶフラグＦＶ又はＣフラグＦＣのオペランドを記述することができる。
ＴＳＴＦ／Ｔ１      Ｃ………………（１０）
上記（１０）で示した命令は、ＣフラグＦＣのデータをレジスタ部５１のレジスタＴ１に転送することを意味している。Ｔレジスタ３８は、ＶフラグＦＶ及びＣフラグＦＣが格納されている各ラッチ回路５７及び５８からの入力経路が設けられていることから、ＶフラグＦＶ及びＣフラグＦＣのデータ入力が可能である。ＶフラグＦＶ及びＣフラグＦＣは、各プロセッサエレメントでの演算によって結果が異なるため、前回の命令に対する演算結果から演算制御フラグをレジスタ部５１内に設定でき、プロセッサエレメント間でより多くの異なった処理が可能となる。
【００５３】
このように、本実施の形態における演算処理装置は、第２記憶部３３からのデータ、データバスＩＭＭ１からのデータ又はマルチプレクサ５２からの出力データのいずれかをラッチするレジスタ部５１を有し、レジスタ部５１にラッチされたデータを、ＡＮＤ回路Ａ０〜Ａ７によってデータバスＩＭＭ２から入力されるデータでマスクされたデータにし、各ＡＮＤ回路Ａ０〜Ａ７の出力をＯＲ回路５３でＯＲ演算を行った後、Ａレジスタ３６に対するラッチ制御信号として出力するＴレジスタ３８を備えた。このことから、プロセッサエレメントで行われる演算を制御するための演算制御フラグを格納することができると共に、プロセッサエレメントごとに異なる該演算制御フラグの設定を行うことによって、プロセッサエレメントごとに様々な異なった演算を行わせることができるため、１つのシーケンサで各プロセッサエレメントごとに異なる命令を実行してデータ処理を行うことができる。
【００５４】
【発明の効果】
上記の説明から明らかなように、本発明の演算処理装置によれば、各プロセッサエレメントにおいて、グローバルプロセッサから入力されるデータをマスクして、演算部のアキュムレータに対するラッチ制御信号を生成するようにした。このことから、プロセッサエレメントごとに異なる演算制御フラグの設定を行うことによって、プロセッサエレメントごとに様々な異なった演算を行わせることができるため、１つのシーケンサで各プロセッサエレメントごとに異なる命令を実行してデータ処理を行うことができる。
【００５５】
具体的には、グローバルプロセッサから入力されるデータを用いてマスクするようにしたことから、プロセッサエレメントごとに更に様々な異なった演算を行わせることができるため、１つのシーケンサで各プロセッサエレメントごとに異なる命令を実行して、より複雑なデータ処理を行うことができる。
【００５６】
また、データ格納部に格納されたデータを、グローバルプロセッサから入力されるデータでマスクして、演算部のアキュムレータに対するラッチ制御信号を生成するようにしてもよい。このようにすることによって、プロセッサエレメントごとに様々な異なる演算制御フラグの設定を行うことができるため、プロセッサエレメントごとに更に様々な異なった演算を行わせることができ、１つのシーケンサで各プロセッサエレメントごとに多様な異なる命令を実行してデータ処理を行うことができる。
【００５７】
また、前回生成したラッチ制御信号を、グローバルプロセッサから入力されるデータでマスクしてラッチ制御信号を生成するようにしてもよい。このようにすることによって、プロセッサエレメントごとに様々な異なる演算制御フラグの設定を行うことができるため、プロセッサエレメントごとに更に一層様々な異なった演算を行わせることができるため、１つのシーケンサで各プロセッサエレメントごとに更に多様な異なる命令を実行してデータ処理を行うことができる。更に、ラッチ制御信号を生成するためのデータをグローバルプロセッサから入力する必要がないため、演算制御フラグの設定を簡単に行うことができる。
【００５８】
また、ステータスレジスタに格納された算術論理演算処理装置のステータス情報を示すデータを、グローバルプロセッサから入力されるデータでマスクしてラッチ制御信号を生成するようにしてもよい。このようにすることによって、算術論理演算処理装置におけるステータス情報を使用して、プロセッサエレメントごとに様々な異なる演算制御フラグの設定を行うことができるため、プロセッサエレメントごとに更に様々な異なった演算を行わせることができ、１つのシーケンサで各プロセッサエレメントごとに多様な異なる命令を実行してデータ処理を行うことができる。
【００５９】
具体的には、データ格納部からのデータ、グローバルプロセッサからのデータ又は入力信号選択部からの出力データのいずれかをラッチするレジスタ部を有し、レジスタ部にラッチされたデータを、マスク部によってグローバルプロセッサから入力されるデータでマスクされたデータにし、アキュムレータに対するラッチ制御信号として出力するようにした。このことから、プロセッサエレメントで行われる演算を制御するための演算制御フラグを格納することができると共に、プロセッサエレメントごとに異なる該演算制御フラグの設定を行うことによって、プロセッサエレメントごとに様々な異なった演算を行わせることができるため、１つのシーケンサで各プロセッサエレメントごとに異なる命令を実行して複雑なデータ処理を行うことができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態における演算処理装置の例を示した概略の構成図である。
【図２】  図１のグローバルプロセッサ２及びプロセッサエレメント部５におけるプロセッサエレメントの構成を示したブロック図である。
【図３】  図２の演算アレイ２２の各部とＰＥ制御信号線Ｓｐｅとの関係を示したブロック図である。
【図４】  図２及び図３で示したＴレジスタ３８の回路例を示した図である。
【符号の説明】
１  演算処理装置
２  グローバルプロセッサ
３  レジスタファイル部
４  演算アレイ部
１０  ＳＣＵ
２１  レジスタファイル
２２  演算アレイ
３１  シフト・拡張部
３２  第１記憶部
３３  第２記憶部
３４  ＡＬＵ
３５  ＰＰレジスタ
３６  Ａレジスタ
３７  Ｆレジスタ
３８  Ｔレジスタ
５１  レジスタ部
５２  マルチプレクサ
ＰＥ０〜ＰＥ２５５  プロセッサエレメント
Ｔ０〜Ｔ７  レジスタ
【図１】
0003742745.tif 000002
【図２】
0003742745.tif 000003
【図３】
0003742745.tif 000004
【図４】
0003742745.tif 000005