(57)【要約】【課題】本発明は複数処理を実行して処理速度を向上させたＳＩＭＤプロセッサを提供する。【解決手段】ＳＩＭＤプロセッサ１は、プロセッサエレメントＰＥ０〜ＰＥ２５５のＡＬＵ＿ＰＥ１１の演算結果の状態を格納し、次の命令の実行を制御するＰＥ部演算制御フラグＴ０〜Ｔ７の集合であるＴレジスタ１８と、グローバルプロセッサ３のＡＬＵ＿ＧＰ２４の演算結果の状態を格納するグローバルプロセッサフラグＩ０〜Ｉ３の集合であるＤレジスタ２６と、を設け、ＰＥ部演算制御フラグＴ０〜Ｔ７とグローバルプロセッサフラグＩ０〜Ｉ３との組み合わせに応じて、プロセッサエレメントＰＥ０〜ＰＥ２５５が、３通り以上の命令を実行する。したがって、単純な回路の追加のみで、複数の処理を実現することができる。【選択図】          図２
2004185422.tif 000002
【特許請求の範囲】
【請求項１】
複数の算術論理演算器の集合体である演算アレイとデータの格納を行う複数のレジスタの集合体であるレジスタファイルを備えたプロセッサエレメントと、プログラムを解析し、プログラムの構造化処理、前記プロセッサエレメントの制御及び前記プロセッサエレメントとのデータの入出力を行うグローバルプロセッサと、を備えたＳＩＭＤプロセッサにおいて、前記プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、前記グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグと、を設け、前記プロセッサエレメントが、前記プロセッサエレメント部演算制御フラグと前記グローバルプロセッサフラグの組み合わせに応じて３通り以上の命令を実行することを特徴とするＳＩＭＤプロセッサ。
【請求項２】
前記ＳＩＭＤプロセッサは、前記グローバルプロセッサフラグが命令によって適宜設定可能であることを特徴とする請求項１記載のＳＩＭＤプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＳＩＭＤプロセッサに関し、詳細には、複数処理を実行可能なＳＩＭＤプロセッサに関する。
【０００２】
【従来の技術】
【特許文献１】
ＷＯ９６／２９６４６号公報
【特許文献２】
特許第２６４７３１５号公報
【特許文献３】
特開平６−３５８７７号公報
【特許文献４】
特開平７−２７１９６９号公報
デジタル複写機やファクシミリ等の画像処理装置においては、画素数の増加、画像処理の多様化等により、大量データの高速処理が求められている。
【０００３】
そして、この画像処理等においては、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ）方式のプロセッサが用いられることが多く、ＳＩＭＤ方式のプロセッサの特徴は、少ない命令数で大量のデータを処理することができる点にある。
【０００４】
ＳＩＭＤ方式のプロセッサ（以下、ＳＩＭＤプロセッサ）は、一般的に、複数の算術論理演算器（ＡＬＵ）の集合体である演算アレイと、データの格納を行う複数のレジスタの集合体であるレジスタファイルを備えたプロセッサエレメント（ＰＥ）と、を有するブロックと、プログラムを解析し、プログラムの構造化処理（逐次処理、分岐処理、繰り返し処理等のプログラム処理）やプロセッサエレメントの制御やプロセッサエレメントとのデータの入出力等を行うグローバルプロセッサ（ＧＰ）と、で構成されている。ＳＩＭＤプロセッサは、レジスタファイルにポートを設け、外部入出力からデータをレジスタファイルにリードし、また、ライトする。
【０００５】
このＳＩＭＤプロセッサを利用してデジタル複写機で画像処理を行う場合、ＣＣＤ等の外部入力装置から取り入れられた画像データが、ＳＩＭＤプロセッサの外側でいくつかのデータのかたまりとして（１度にＳＩＭＤプロセッサが処理できるデータの最大数で、これを１ＳＩＭＤとする）、１度にポートからレジスタファイルに転送される。ＳＩＭＤプロセッサは、転送されてきたデータをグローバルプロセッサでプログラム化されたデータ処理手順に従って演算アレイを制御することで加工処理し、加工したデータをレジスタファイルに格納する。デジタル複写機では、ＳＩＭＤプロセッサで最終的な処理が終わると、データをレジスタファイルから外部出力装置に転送し、プリンタで印刷したり、ディスプレイに表示したりする。
【０００６】
そして、画像処理のスピードを上げるためには、ＳＩＭＤプロセッサの命令サイクルを減らすことが重要であるが、画像処理では同じ処理をすることが多く、１サイクルでも命令を減らすことができれば、全体でかなり処理時間を短縮することができる。
【０００７】
ＳＩＭＤプロセッサは、その特性上、同じ処理を複数プロセッサエレメント（ＰＥ）に対して行い、同時に複数の処理を複数のプロセッサエレメントに対して行うことができない。
【０００８】
これに対して、ＭＩＭＤ方式のプロセッサは、全てのプロセッサエレメントが命令を解読し制御信号を生成するデコーダを有しており、同時に異なる命令を実行することができる。
【０００９】
ところが、ＳＩＭＤ方式のプロセッサは、デコーダが１つだけであり、構成が単純で、回路規模がＭＩＭＤ方式のプロセッサに比較して、非常に小さいという利点がある。
【００１０】
そして、従来、命令コード中に複数の演算ユニットを制御する情報としてＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）タイプの命令コードを組み込んで、単一命令コードで複数の演算ユニットにおける複数の演算を制御するＳＩＭＤ方式のプロセッサが提案されている（特許文献１参照）。
【００１１】
また、従来、ＭＩＭＤ方式のプロセッサに命令レジスタ・デコーダを設けて、ＳＩＭＤモードとＭＩＭＤモードを切り換えて実行して、動的に複数モードで並列処理するアレイが提案されている（特許文献２参照）。
【００１２】
さらに、従来、複数アレイからなるＭＩＭＤ方式のプロセッサを、複数アレイ毎にＳＩＭＤコマンドを解析して、ＳＩＭＤとしても動作するアレイ・プロセッサが提案されている（特許文献３参照）。
【００１３】
また、従来、メモリの記録動作については、プロセッサ毎に状態ビットを用意し、当該状態ビットの値によって、算術論理装置の出力を選択された１対のレジスタのいずれかに格納する格納するレジスタ対から条件付きでメモリへ記憶させる装置が提案されている（特許文献４参照）。
【００１４】
【発明が解決しようとする課題】
しかしながら、このような従来の技術にあっては、ＳＩＭＤプロセッサにおいて、小型で安価に複数処理を実行して、処理速度を向上させる上で、改良の必要があった。
【００１５】
すなわち、特許文献１記載の従来技術にあっては、ＳＩＭＤプロセッサで、命令コード中に複数の演算ユニットを制御する情報としてＶＬＩＷタイプの命令コードを組み込んで、単一命令コードで複数の演算ユニットにおける複数の演算を制御しているため、命令コードが煩雑となり、処理速度を向上させる上で、改良の必要があった。
【００１６】
また、特許文献２及び特許文献３記載の従来技術にあっては、命令レジスタ・デコーダを備える必要があり、また、ＳＩＭＤコマンドを解析する必要があり、回路規模が大型で、高価なものになるという問題があった。
【００１７】
さらに、特許文献４にあっては、算術論理装置の出力を選択された１対のレジスタのいずれかに格納する格納するレジスタ対から条件付きでメモリへ記憶させる装置が提案されているが、この装置だけでは、ＳＩＭＤプロセッサの処理を行うことができない。
【００１８】
そこで、本発明は、小規模で、単純な回路の追加のみで、複数の処理を実現するＳＩＭＤプロセッサを提供することを目的としている。
【００１９】
具体的には、請求項１記載の発明は、プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグとの組み合わせに応じて、プロセッサエレメントに、３通り以上の命令を実行させることにより、単純な回路の追加のみで、複数の処理を実現し、安価に処理速度を向上させることのできるＳＩＭＤプロセッサを提供することを目的としている。
【００２０】
請求項２記載の発明は、グローバルプロセッサフラグを命令によって適宜設定可能とすることにより、任意の処理を複数実行させ、安価に処理速度を向上させるとともに、利用性の良好なＳＩＭＤプロセッサを提供することを目的としている。
【００２１】
【課題を解決するための手段】
請求項１記載の発明のＳＩＭＤプロセッサは、複数の算術論理演算器の集合体である演算アレイとデータの格納を行う複数のレジスタの集合体であるレジスタファイルを備えたプロセッサエレメントと、プログラムを解析し、プログラムの構造化処理、前記プロセッサエレメントの制御及び前記プロセッサエレメントとのデータの入出力を行うグローバルプロセッサと、を備えたＳＩＭＤプロセッサにおいて、前記プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、前記グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグと、を設け、前記プロセッサエレメントが、前記プロセッサエレメント部演算制御フラグと前記グローバルプロセッサフラグの組み合わせに応じて３通り以上の命令を実行することにより、上記目的を達成している。
【００２２】
上記構成によれば、プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグとの組み合わせに応じて、プロセッサエレメントが、３通り以上の命令を実行するので、単純な回路の追加のみで、複数の処理を実現することができ、安価に処理速度を向上させることができる。
【００２３】
この場合、例えば、請求項２に記載するように、前記ＳＩＭＤプロセッサは、前記グローバルプロセッサフラグが命令によって適宜設定可能であってもよい。
【００２４】
上記構成によれば、グローバルプロセッサフラグを命令によって適宜設定可能としているので、任意の処理を複数実行させることができ、安価に処理速度を向上させることができるとともに、利用性を向上させることができる。
【００２５】
【発明の実施の形態】
以下、本発明の好適な実施の形態を添付図面に基づいて詳細に説明する。なお、以下に述べる実施の形態は、本発明の好適な実施の形態であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの態様に限られるものではない。
【００２６】
図１〜図４は、本発明のＳＩＭＤプロセッサの一実施の形態を示す図であり、図１は、本発明のＳＩＭＤプロセッサの一実施の形態を適用したＳＩＭＤプロセッサ１の回路ブロック図である。
【００２７】
図１において、ＳＩＭＤプロセッサ１は、プロセッサエレメント群２とグローバルプロセッサ３を備え、プロセッサエレメント群２は、複数の演算論理演算器（ＡＬＵ）の集合体である演算アレイ４と複数のレジスタの集合体であるレジスタファイル５とを備えている。
【００２８】
グローバルプロセッサ３は、プログラムを解析して、プログラムの構造化処理（逐次処理、分岐処理、繰り返し処理等のプログラム処理）やプロセッサエレメント群２の制御及びプロセッサエレメント群２とのデータの入出力を行う。
【００２９】
ＳＩＭＤプロセッサ１は、レジスタファイル５にポートを設け、外部入出力からデータをレジスタファイル５に読み込み、また、レジスタファイル５のデータを外部入出力へ読み出す。
【００３０】
そして、本実施の形態のＳＩＭＤプロセッサ１は、２５６個のプロセッサエレメントを備えている場合、図２に示すように構成されており、プロセッサエレメント群２は、２５６個のプロセッサエレメントＰＥ０〜ＰＥ２５５を備えている。
【００３１】
各プロセッサエレメントＰＥ０〜ＰＥ２５５は、そのｉ個目のプロセッサエレメントＰＥｉについて図２に示すように、その演算アレイ４部分に、１つの算術論理演算器（以下、ＡＬＵ＿ＰＥという。）１１を中心に、ＡＬＵ＿ＰＥ１１からの演算結果データを格納するＡレジスタ１２とＦレジスタ１３、Ａレジスタ１２からのデータを再度ＡＬＵ＿ＰＥ１１に取り込むために一時保持する記憶部１４、レジスタファイル５からのデータをシフトしたり拡張したりするシフト・拡張ブロック１５と、シフト・拡張ブロック１５からのデータを一時保持する記憶部１６と、ＡＬＵ＿ＰＥ１１の演算結果で、オーバーフロー、キャリー、正負、ゼロ検出のステータスを表すステータスフラグの集合であるＰＥプロセッサステータスレジスタ（以下、ＰＰレジスタという。）１７と、ＰＰレジスタ１７の結果を取り込んだり、記憶部１６からの値を取り込んで、ＡＬＵ＿ＰＥ１１の演算結果をＡレジスタ１２に転送するかしないかを制御するＰＥ部演算制御フラグの集合であるＴレジスタ１８と、を備えている。
【００３２】
そして、各プロセッサエレメントＰＥ０〜ＰＥ２５５は、そのレジスタファイル５部分に、３２個のレジスタファイルＲ０〜Ｒ３１を備えている。
【００３３】
一方、グローバルプロセッサ３は、プログラムの格納されているプログラム（Ｐｒｏｇｒａｍ  ）ＲＡＭ２１と、データの格納されているデータ（Ｄａｔａ）ＲＡＭ２２、プログラムＲＡＭ２１から転送された命令コードをデコードしてグローバルプロセッサ３内の制御信号やプロセッサエレメントＰＥ０〜ＰＥ２５５へ制御信号（ＰＥ制御信号）を出力するＳＣＵ（シーケンシャル・ユニット）２３、算術論理演算器（以下、ＡＬＵ＿ＧＰという。）２４、ＡＬＵ＿ＧＰ２４の演算結果であって、オーバーフロー、キャリー、正負、ゼロ検出のステータスを表すステータスフラグの集合であるＧＰプロセッサステータスレジスタ（以降、Ｐレジスタという。）２５と、Ｐレジスタ２５のデータを転送して各プロセッサエレメントＰＥ０〜ＰＥ２５５に複数の算術論理演算命令の実行を指示するモード（デュアルモード）をフラグの値として出力して各プロセッサエレメントＰＥ０〜ＰＥ２５５のモードを制御するグローバルプロセッサフラグＩ０〜Ｉ３の集合であるＤレジスタ２６と、を備えており、Ｄレジスタ２６からの出力は、それぞれのプロセッサエレメントＰＥ０〜ＰＥ２５５に転送される。
【００３４】
そして、上記各プロセッサエレメントＰＥ０〜ＰＥ２５５の演算アレイ４のＡＬＵ＿ＰＥ１１、ＰＰレジスタ１７、Ｔレジスタ１８及びＡレジスタ１２は、図３にそのｉプロセッサエレメントＰＥｉについて示すように回路構成されており、上記プロセッサエレメントＰＥ０〜ＰＥ２５５の演算制御フラグは、例として、８ビットのＰＥ部演算制御フラグＴ０〜Ｔ７が示されており、その集合体をＴレジスタ１８と呼んでいる。
【００３５】
図３において、ＰＰラッチ信号、Ｔレジスタ１８入力選択信号、ＩＭＭ１、Ｔラッチ信号、ＩＭＭ２、Ｔ出力ラッチ信号、Ａレジスタ１２ラッチ信号は、図２のＰＥ制御信号の一部であり、グローバルプロセッサ３から供給される。
【００３６】
ＰＰレジスタ１７は、Ｖフラグ（オーバーフローフラグ）用ラッチ１７ａとＣフラグ（キャリーフラグ）用ラッチ１７ｂを備え、Ｔレジスタ１８は、マルチプレクサ（以下、ＭＰＸという。）３１、演算制御フラグ用ラッチ３２〜３９、アンド回路４０〜４７、オア（ＯＲ）回路４８、ラッチ４９及びオア回路５０等を備えている。
【００３７】
ＰＰレジスタ１７の各ラッチ１７ａ、１７ｂには、グローバルプロセッサ３からＰＰラッチ信号が入力され、また、ＡＬＵ＿ＰＥ１１から演算結果であるオーバーフローフラグ（Ｖ）とキャリーフラグ（Ｃ）が入力される。ＰＰレジスタ１７は、ＰＰラッチ信号に基づいて、ＡＬＵ＿ＰＥ１１の演算結果を格納するＶフラグ用ラッチ１７ａとＣフラグ用ラッチ１７ｂのいずれかをＴレジスタ１８のＭＰＸ３１に出力する。
【００３８】
Ｔレジスタ１８は、演算制御フラグ用ラッチ３２〜３９の値が、ＭＰＸ３１からのＰＰレジスタ１７の値（オーバーフローフラグ（Ｖ）とキャリーフラグ（Ｃ）のいずれか）、ＩＭＭ１の値、記憶部１６の値、前回保持したＴレジスタ１８の値をデータ加工した値の何れかで更新され、この値の選択は、ＭＰＸ３１によって、または、Ｔラッチ信号によって行われる。演算制御フラグ用ラッチ３２〜３９に保持されたデータは、アンド回路４０〜４７でＩＭＭ２によって選択され、演算制御フラグ用ラッチ３２〜３９のＰＥ部演算制御フラグＴ０〜Ｔ７のうち、アンド回路４０〜４７で選択されたＰＥ部演算制御フラグＴ０〜Ｔ７がオア回路４８でＯＲされて、当該ＯＲの結果が、ラッチ４９に保持される。これは、複数の演算制御フラグＴ０〜Ｔ７のＯＲをＰＥ部演算制御フラグ（プロセッサエレメント演算制御フラグ）として利用することができ、かつ、単一のフラグをＰＥ部演算制御フラグとして利用できることを表している。また、オア回路４８のＯＲ結果は、各プロセッサエレメントＰＥ０〜ＰＥ２５５が実行するか、非実行であるかを表す信号（ＰＥ実行／非実行信号）として出力される。
【００３９】
Ｔレジスタ１８は、オア回路５０で、ラッチ４９の出力とグローバルプロセッサ３のＤレジスタ２６の値とのＯＲをとり、Ａレジスタ１２のラッチ制御信号（Ａレジスタラッチ制御信号）として、アンド回路５１に出力する。
【００４０】
アンド回路５１は、このＡレジスタラッチ制御信号とＡレジスタラッチ信号とのＡＮＤをとり、Ａレジスタ１２にラッチ信号を出力する。すなわち、Ａレジスタラッチ制御信号が「０」であると、Ａレジスタラッチ信号を無効にし、ＡＬＵ＿ＰＥ１１の結果がＡレジスタ１２にラッチされないことで、前回の演算結果のままとなり、プロセッサエレメントＰＥ０〜ＰＥ２５５で演算が実行されなかったような振る舞いとなる。一方、Ａレジスタラッチ制御信号が「１」であると、Ａレジスタラッチ信号を有効にし、ＡＬＵ＿ＰＥ１１の演算結果がＡレジスタ１２にラッチされ、Ａレジスタ１２が更新されることで、そのプロセッサエレメントＰＥ０〜ＰＥ２５５で演算が実行されたことになる。
【００４１】
そして、本実施の形態のＳＩＭＤプロセッサ１は、ＰＥ部演算制御フラグと、グローバルプロセッサ３に用意されているグローバルプロセッサフラグとの組み合わせにより、本来、ＰＥ部演算制御フラグにより実行するプロセッサエレメントＰＥ０〜ＰＥ２５５と、実行しない（非実行）プロセッサエレメントＰＥ０〜ＰＥ２５５と、に分かれていたものを、例えば、実行する「ＡＤＤ／Ｔ１」と命令記述した場合、ＰＥ部演算制御フラグが「１」のプロセッサエレメントＰＥ０〜ＰＥ２５５ではＡＤＤ命令を実行するが、ＰＥ部演算制御フラグが「０」のプロセッサエレメントＰＥ０〜ＰＥ２５５では命令は実行されない（ＮＯＰ命令となる）構成、すなわち、両方のプロセッサエレメントＰＥ０〜ＰＥ２５５で実行するが異なる２つの算術論理演算命令の実行が可能な構成となっている。図２のグローバルプロセッサ３のＤ（Ｄｕａｌ  ｍｏｄｅ）レジスタ２６は、これらグローバルプロセッサフラグの集合体であり、グローバルプロセッサフラグＩ０〜Ｉ３として、４ビット分が用意されている。なお、本実施の形態では、便宜上４ビットとしているが、命令の組み合わせを増やすと、それだけフラグ数が増えることとなる。
【００４２】
また、一般的なＡＬＵでは、加算（本実施の形態のＳＩＭＤプロセッサ１の命令ではＡＤＤ）、減算（本実施の形態のＳＩＭＤプロセッサ１の命令ではＳＵＢ）、論理和演算（本実施の形態のＳＩＭＤプロセッサ１の命令ではＯＲ）、論理積演算（本実施の形態のＳＩＭＤプロセッサ１の命令ではＡＮＤ）、排他的論理和演算（本実施の形態のＳＩＭＤプロセッサ１の命令ではＸＯＲ）を行うことができ、また、加算命令、減算命令には、キャリー付きの演算も行うことができる。
【００４３】
そして、ＡＬＵの演算の違いは次の制御信号の違いによって生じる。
【００４４】
▲１▼ＡＤＤ演算に対してＳＵＢは、片側が全ビット反転の制御（ＡＬＵ＿ＩＶＳ）と、最下位ビットのアダーに「１」を加算する制御（ＡＬＵ＿１Ｐ）を付加することで実現される。
【００４５】
▲２▼ＡＤＤ演算に対してＯＲ演算は、各ビットのアダーのキャリーを各ビットの１ビット上位の演算に伝播しない制御（ＡＬＵ＿ＣＰ）と、各ビットの演算で「１」と「１」のときに、加算結果が「０」となるが、結果を「１」に変更する制御（ＡＬＵ＿ＯＲ）を付加することで実現される。
【００４６】
▲３▼ＯＲ演算に対してＡＮＤ演算は、２つの入力データ共に反転する制御（ＡＬＵ＿ＩＶＳ，ＡＬＵ＿ＩＶＤ）と、演算結果を反転する制御（ＡＬＵ＿ＩＶＯ）を付加することで実現される。
【００４７】
▲４▼ＡＤＤ演算もしくはＳＵＢ演算に対してＡＤＤ演算もしくはＳＵＢ演算のキャリー付きの演算は、キャリーを最下位ビットのアダーに加算する制御（ＡＬＵ＿ＣＩＮ）を付加することで実現される。
【００４８】
以上のことを考慮して、本実施の形態のＳＩＭＤプロセッサ１は、各プロセッサエレメントＰＥ０〜ＰＥ２５５のＡＬＵ＿ＰＥ１１の制御信号に対して、モードレジスタであるＤレジスタ２６からの信号を付加し、２つの命令を同時に実行できるように、図４に示すように回路構成されている。
【００４９】
すなわち、図４において、ＰＥ制御信号の一部として各プロセッサエレメントＰＥ０〜ＰＥ２５５に供給されるＡＬＵ＿ＰＥ１１に対する制御信号が、ＡＬＵ＿ＩＶＳ、ＡＬＵ＿ＩＰ、ＡＬＵ＿ＣＰ、ＡＬＵ＿ＯＲ、ＡＬＵ＿ＩＶＤ、ＡＬＵ＿ＩＶＯ、ＡＬＵ＿ＣＩＮの７種類あり、それらに対して、Ｄレジスタ２６のグローバルプロセッサフラグＩ０〜Ｉ３のそれぞれの状態と、ＰＥ実行／非実行信号をインバータ６１で反転した信号と、をアンド回路６２〜６５でＡＮＤをとり、各アンド回路６２〜６５のＡＮＤの結果を、ＡＬＵ＿ＰＥ１１の制御信号とオア回路６６〜７２でＯＲ（オア）をとって、ＡＬＵ＿ＰＥ１１に入力している。
【００５０】
すなわち、グローバルプロセッサフラグＩ０は、上記▲１▼の状態を制御し、ＰＥ部演算制御フラグの状態で実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、通常のＡＤＤ命令を実行し、非実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、ＳＵＢ命令を実行することとなる。
【００５１】
また、グローバルプロセッサフラグＩ１は、上記▲２▼の状態を制御し、ＰＥ部演算制御フラグの状態で実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、通常のＡＤＤ命令を実行し、非実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、ＯＲ命令を実行することとなる。
【００５２】
グローバルプロセッサフラグＩ２は、上記▲３▼の状態を制御し、ＰＥ部演算制御フラグの状態で実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、通常のＯＲ命令を実行し、非実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、ＡＮＤ命令を実行することとなる。
【００５３】
グローバルプロセッサフラグＩ３は、上記▲４▼の状態を制御し、ＰＥ部演算制御フラグの状態で実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、通常のＡＤＤ命令またはＳＵＢ命令を実行し、非実行のプロセッサエレメントＰＥ０〜ＰＥ２５５では、ＡＤＤ命令またはＳＵＢ命令のキャリ−付き演算（ＡＤＤに対して、ＡＤＤＣ、ＳＵＢに対して、ＳＵＢＣとなる）を実行することとなる。
【００５４】
また、ＳＩＭＤプロセッサ１では、グローバルプロセッサフラグＩ０〜Ｉ３の設定に対して、専用の命令を用意し、１ビットのみを設定して、それ以外のビットは、全てリセットする。
【００５５】
すなわち、ＳＩＭＤプロセッサ１では、以下のようにビット設定する。
【００５６】
ＳＥＴＩ０・・・グローバルプロセッサフラグＩ０に、「１」をセットし、Ｉ０以外のグローバルプロセッサフラグは、すべて「０」をセットする。
【００５７】
ＳＥＴＩ１・・・グローバルプロセッサフラグＩ１に、「１」をセットし、Ｉ１以外のグローバルプロセッサフラグは、すべて「０」をセットする。
【００５８】
ＳＥＴＩ２・・・グローバルプロセッサフラグＩ２に、「１」をセットし、Ｉ２以外のグローバルプロセッサフラグは、すべて「０」をセットする。
【００５９】
ＳＥＴＩ３・・・グローバルプロセッサフラグＩ３に、「１」をセットし、Ｉ３以外のグローバルプロセッサフラグは、すべて「０」をセットする。
【００６０】
そして、ＳＩＭＤプロセッサ１では、リセットする命令は、以下の通りである。
【００６１】
ＣＬＲＩ０・・・グローバルプロセッサフラグＩ０に、「０」をセットする。
【００６２】
ＣＬＲＩ１・・・グローバルプロセッサフラグＩ１に、「０」をセットする。
【００６３】
ＣＬＲＩ２・・・グローバルプロセッサフラグＩ２に、「０」をセットする。
【００６４】
ＣＬＲＩ３・・・グローバルプロセッサフラグＩ３に、「０」をセットする。
【００６５】
また、ＳＩＭＤプロセッサ１では、グローバルプロセッサフラグＩ０〜Ｉ３は、グローバルプロセッサ３のＡＬＵ＿ＧＰ２４の演算結果によって設定することができる。
【００６６】
すなわち、グローバルプロセッサ３のＡＬＵ＿ＧＰ２４の比較命令の演算の結果が真であれば、「１」が、グローバルプロセッサフラグＩ０〜Ｉ３のうちの命令で指定した１つのフラグに設定される。
【００６７】
例えば、ＣＭＰ／Ｉ０／ＮＥ  Ｇ０，＃１２ｈと記述した場合、「Ｇ０」から「１２ｈ」を減算した結果、条件／ＮＥ（Ｎｏｔ  Ｅｑｕａｌの略）で、減算結果が「０」でなければ、等しくない（Ｎｏｔ  Ｅｑｕａｌ）ので、真であるので、「１」がグローバルプロセッサフラグＩ０に格納される。演算結果が「０」であれば、等しい（Ｅｑｕａｌ）ので、偽であるため、「０」がグローバルプロセッサフラグＩ０に格納される。
【００６８】
なお、本実施の形態のＳＩＭＤプロセッサ１では、同時に全てのグローバルプロセッサフラグＩ０〜Ｉ３をセットするのは、ＡＬＵ＿ＰＥのＰＥ制御信号の制御が複雑になり、プロセッサエレメントＰＥ０〜ＰＥ２５５にデコード回路が必要となって、ハード構成が増大するため、１つのグローバルプロセッサフラグＩ０〜Ｉ３をセットした場合、他のグローバルプロセッサフラグＩ０〜Ｉ３は、「０」にするようにしている。
【００６９】
次に、本実施の形態の作用を説明する。本実施の形態のＳＩＭＤプロセッサ１は、図２に示したように、グローバルプロセッサ３のＤレジスタ２６に、グローバルプロセッサフラグＩ０〜Ｉ３を備えており、そのうちの１つのグローバルプロセッサフラグＩ０〜Ｉ３を設定して、図３に示したＴレジスタ１８からのプロセッサエレメントＰＥ０〜ＰＥ２５５の実行／非実行の状態を表すＰＥ実行／非実行信号を用いて、グローバルプロセッサフラグＩ０〜Ｉ３の値と、ＰＥ実行／非実行信号の値と、図４に示したように、ＡＬＵ＿ＰＥ１１の制御信号（ＡＬＵ＿ＩＶＳ、ＡＬＵ＿ＩＰ、ＡＬＵ＿ＣＰ、ＡＬＵ＿ＯＲ、ＡＬＵ＿ＩＶＤ、ＡＬＵ＿ＩＶＯ、ＡＬＵ＿ＣＩＮ）を論理演算することで、Ｔレジスタ１８の状態での２つの状態と、グローバルプロセッサフラグＩ０〜Ｉ３の２つの状態で、４通り組み合わせが存在し、実際は、１命令は同じ命令となるため、３通りの命令を実行することができる。
【００７０】
すなわち、例えば、ＡＤＤ命令をグローバルプロセッサフラグＩ０の状態を参照して実行した場合、以下の組み合わせとなる。
【００７１】
2004185422.tif 000003
そこで、例えば、以下の処理を行うものとする。なお、以下の説明では、ＰＥ部演算制御フラグＴ０〜Ｔ７を簡略化のために、必要に応じて、Ｔ０〜Ｔ７フラグと記載する。
【００７２】
2004185422.tif 000004
【００７３】
2004185422.tif 000005
【００７４】
本実施の形態のＳＩＭＤプロセッサ１では、以下のようになり、命令サイクル数を減らすことができる。
【００７５】
2004185422.tif 000006
【００７６】
なお、「／Ｔ１」は、Ｔ１フラグの値が真「１」で、通常のＳＩＭＤプロセッサでは、そのプロセッサエレメントが命令を実行（実行状態、Ａレジスタを更新）し、偽「０」で、通常のＳＩＭＤプロセッサでは、そのプロセッサエレメントが命令を実行しない（非実行状態、Ａレジスタを更新しない）ということになる。「／Ｆ１」は、上記の場合と真偽が反対となる。
【００７７】
そして、このように、２種類の命令を実行できることになるが、これにグローバルプロセッサフラグＩ０〜Ｉ３の状態が加わるため、さらに命令が追加された状態となる。
【００７８】
例えば、以下の処理を行うものとする。
【００７９】
2004185422.tif 000007
この処理では、処理▲１▼、▲２▼は、Ｇ０レジスタが「０」であれば、ＬＡＢＥＬ２に分岐し、ＬＡＢＥＬ２以降の処理を行う。処理▲３▼、▲４▼は、処理▲２▼の結果によって分岐しなかった場合で、処理▲３▼は、ＰＥ部演算制御フラグＴ０の値が「１」であるプロセッサエレメントＰＥ０〜ＰＥ２５５では、Ａレジスタ１２の値とＲ０レジスタの値を加算し、ＰＥ部演算制御フラグＴ０〜Ｔ７の値が「０」であるプロセッサエレメントＰＥ０〜ＰＥ２５５では、何も実行しない（ＮＯＰ命令となる）。処理▲４▼は、ＰＥ部演算制御フラグＴ０の値が「０」であるプロセッサエレメントＰＥ０〜ＰＥ２５５では、Ａレジスタ１２の値とＲ０レジスタの値を減算し、ＰＥ部演算制御フラグＴ０〜Ｔ７の値が「１」であるプロセッサエレメントＰＥ０〜ＰＥ２５５では、何も実行しない（ＮＯＰ命令となる）。すなわち、処理▲３▼と処理▲４▼は、プロセッサエレメントＰＥ０〜ＰＥ２５５を２通りに分けて、片側ではＡＤＤ、もう一方ではＳＵＢを実行していることになる。処理▲５▼は、処理▲２▼で分岐した場合の処理であり、処理▲３▼と同様の処理を行っている。ただし、処理▲４▼がないため、プロセッサエレメントＰＥ０〜ＰＥ２５５を２通りに分けて、片側ではＡＤＤ、もう一方ではＮＯＰのみを実行していることになる。
【００８０】
そして、本実施の形態のＳＩＭＤプロセッサ１は、上記処理を以下のように実行する。
【００８１】
ＣＭＰ／ＥＱ／Ｉ０    Ｇ０，＃０ｈ    ；処理▲１▼’
ＡＤＤ／Ｔ１          Ｒ０            ；処理▲３▼’
このように、本実施の形態のＳＩＭＤプロセッサ１は、プロセッサエレメントＰＥ０〜ＰＥ２５５の算術論理演算器（ＡＬＵ＿ＰＥ）１１の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグ（ＰＥ部演算制御フラグ）Ｔ０〜Ｔ７の集合であるＴレジスタ１８と、グローバルプロセッサ３の算術論理演算器（ＡＬＵ＿ＧＰ）２４の演算結果の状態を格納するグローバルプロセッサフラグＩ０〜Ｉ３の集合であるＤレジスタ２６と、を設け、ＰＥ部演算制御フラグＴ０〜Ｔ７とグローバルプロセッサフラグＩ０〜Ｉ３との組み合わせに応じて、プロセッサエレメントＰＥ０〜ＰＥ２５５が、３通り以上の命令を実行している。
【００８２】
したがって、単純な回路の追加のみで、複数の処理を実現することができ、安価に処理速度を向上させることができる。
【００８３】
また、本実施の形態のＳＩＭＤプロセッサ１は、グローバルプロセッサフラグＩ０〜Ｉ３を命令によって適宜設定可能としている。
【００８４】
したがって、任意の処理を複数実行させることができ、安価に処理速度を向上させることができるとともに、利用性を向上させることができる。
【００８５】
以上、本発明者によってなされた発明を好適な実施の形態に基づき具体的に説明したが、本発明は上記のものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００８６】
【発明の効果】
請求項１記載の発明のＳＩＭＤプロセッサによれば、プロセッサエレメントの算術論理演算器の演算結果の状態を格納し、次の命令の実行を制御するプロセッサエレメント部演算制御フラグと、グローバルプロセッサの算術論理演算器の演算結果の状態を格納するグローバルプロセッサフラグとの組み合わせに応じて、プロセッサエレメントが、３通り以上の命令を実行するので、単純な回路の追加のみで、複数の処理を実現することができ、安価に処理速度を向上させることができる。
【００８７】
請求項２記載の発明のＳＩＭＤプロセッサによれば、グローバルプロセッサフラグを命令によって適宜設定可能としているので、任意の処理を複数実行させることができ、安価に処理速度を向上させることができるとともに、利用性を向上させることができる。
【図面の簡単な説明】
【図１】本発明のＳＩＭＤプロセッサの一実施の形態を適用したＳＩＭＤプロセッサの基本構成図。
【図２】図１のＳＩＭＤプロセッサの詳細な回路ブロック図。
【図３】図２のＡＬＵ、ＰＰレジスタ、Ｔレジスタ及びＡレジスタの詳細な回路図。
【図４】図２のＡＬＵ＿ＰＥへの制御信号入力部の詳細な回路図。
【符号の説明】
１  ＳＩＭＤプロセッサ
２  プロセッサエレメント群
３  グローバルプロセッサ
４  演算アレイ
５  レジスタファイル
ＰＥ０〜ＰＥ２５５  プロセッサエレメント
１１  算術論理演算器（ＡＬＵ＿ＰＥ）
１２  Ａレジスタ
１３  Ｆレジスタ
１４  記憶部
１５  シフト・拡張ブロック
１６  記憶部
１７  ＰＥプロセッサステータスレジスタ（ＰＰレジスタ）
１７ａ、１７ｂ  ラッチ
１８  Ｔレジスタ
Ｒ０〜Ｒ３１  レジスタファイル
２１  プログラムＲＡＭ
２２  データＲＡＭ
２３  ＳＣＵ
２４  算術論理演算器（ＡＬＵ＿ＧＰ）
２５  ＧＰプロセッサステータスレジスタ（Ｐレジスタ）
Ｉ０〜Ｉ３  グローバルプロセッサフラグ
２６  Ｄレジスタ
３１  マルチプレクサ（ＭＰＸ）
Ｔ０〜Ｔ７  演算制御フラグ
３２〜３９  演算制御フラグ用ラッチ
４０〜４７  アンド回路
４８  オア回路
４９  ラッチ
５０  オア回路
５１  アンド回路
６１  インバータ
６２〜６５  アンド回路
６６〜７２  オア回路
【図１】
2004185422.tif 000008
【図２】
2004185422.tif 000009
【図３】
2004185422.tif 000010
【図４】
2004185422.tif 000011