(57)【要約】【課題】従来の情報処理装置は、同時発行命令数により並列演算数に制限があった。【解決手段】本発明の情報処理装置は、命令キャッシュと、データキャッシュと、並列動作可能な複数の演算器を備える第１、第２の演算器群２２ａ、２２ｂと、第１の演算器群２２ａに対する１以上の演算命令を生成する第１の演算制御回路１０と、固定命令レジスタ３１の命令コードに基づき第２の演算器群２２ｂに対する１以上の演算命令を生成する第２の演算制御回路３０と、を有し、第１の演算器群２２ａは、第１の演算制御回路１０が第１の特定命令コードに基づき生成した演算命令に応じて固定命令レジスタ３１に命令コードを設定し、第１の演算制御回路１０が第２の特定命令コードに基づき生成した演算命令に応じて第２の演算器群２２ｂに処理データを与え、第２の演算器群２２ｂは、第２の演算制御回路３０が生成した演算命令に基づく演算を繰り返し実行する。【選択図】図１
2012252374.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令コードが格納される第１のキャッシュと、
処理対象のデータが格納される第２のキャッシュと、
前記データに対する演算を並列して動作可能な複数の演算器により行う第１、第２の演算器群と、
前記第１の命令コードを読み出し、前記第１の命令コードに基づき前記第１の演算器群に対する１以上の演算命令を生成する第１の演算制御回路と、
前記第１の演算器群により指定された第２の命令コードを格納する固定命令レジスタを含み、前記第２の命令コードに基づき前記第２の演算器群に対する１以上の演算命令を生成する第２の演算制御回路と、を有し、
前記第１の命令コードには少なくとも第１、第２の特定命令コードが含まれ、
前記第１の演算器群は、前記第１の演算制御回路が生成する演算命令に前記第１の特定命令コードに基づく第１の演算命令が含まれる場合には前記第１の演算命令に応じて前記固定命令レジスタに前記第２の命令コードを設定し、前記第１の演算制御回路が生成する演算命令に前記第２の特定命令コードに基づく第２の演算命令が含まれる場合には前記第２の演算器群に前記第２の演算器群が処理すべきデータを与え、
前記第２の演算器群は、前記第２の演算制御回路が前記第２の命令コードに基づき生成した演算命令に基づく演算を繰り返し実行する情報処理装置。
【請求項２】
前記第１の命令コードは、前記第１の演算器群において並列して動作可能な演算器により実行可能な複数の命令コードを含む請求項１に記載の情報処理装置。
【請求項３】
前記固定命令レジスタには、前記第２の演算器群において並列して動作可能な演算器により実行可能な複数の命令コードが格納される請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１の演算器群は、前記第１の演算制御回路が前記第１、第２の特定命令コード以外の命令コードに基づき演算を指示した場合には前記第１の演算器群内の演算器により前記データに対する演算を行う請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
第１のモードにおいて利用される第３の命令コードが格納される命令キャッシュと、
前記第１のモードにおいて処理されるデータが格納されるデータキャッシュと、
前記第３の命令コードに基づき演算命令を生成する第３の演算制御回路と、
第２のモードにおいて前記第１、第２のキャッシュの一方として用いられる第１の内部メモリと、前記第１の演算器群と、を備える第１のプロセッサエレメントと、
前記第２のモードにおいて前記第１、第２のキャッシュの他方として用いられる第２の内部メモリと、前記第２の演算器群とを備える第２のプロセッサエレメントと、
前記第１のモードにおいて前記第３の演算制御回路から前記第１のプロセッサエレメントに演算指示に与え、第２のモードにおいて前記第１の演算制御回路から前記第１のプロセッサエレメントに演算指示に与える第１の切換回路と、
前記第１のモードにおいて前記第３の演算制御回路から前記第２のプロセッサエレメントに演算指示に与え、第２のモードにおいて前記第２の演算制御回路から前記第２のプロセッサエレメントに演算指示に与える第２の切換回路と、
を有する請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第１の内部メモリには、前記第１のモードにおいて前記第１の演算器群で処理されるデータが格納され、前記第２のモードにおいて前記第１の命令コードと処理対象データとの一方が格納され、
前記第２の内部メモリには、前記第１のモードにおいて前記第２の演算器群で処理されるデータが格納され、前記第２のモードにおいて前記第１の命令コードと前記処理対象データとの他方が格納され、
前記第１、第２の演算器群は、前記第１のモードにおいて前記データキャッシュから与えられたデータに対して前記第３の演算制御回路の演算指示に基づく演算を行い、前記第２のモードにおいて前記第１、第２の内部メモリのうち処理対象の前記データが格納された内部メモリに対して前記データの読み出し及び書き込みを行う請求項５に記載の情報処理装置。
【請求項７】
前記第１の演算器と、前記第２の演算器は、前記複数の演算器の構成が同一である請求項１乃至６のいずれか１項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に関し、特に複数のプロセッサエレメントを含む情報処理装置に関する。
【背景技術】
【０００２】
近年、１度に発行する演算命令に複数の演算命令を含めるＶＬＩＷ（Very Long Instruction Word）プロセッサが提案されている。ＶＬＩＷプロセッサで実行される命令コードは、プログラムにおいて並列して実行可能な演算をコンパイラにて抽出される。ＶＬＩＷプロセッサでは、並列に実行可能な複数の命令コードを取り込んで命令レジスタに格納し、この複数の命令コードを１度にデコードする。そして、ＶＬＩＷプロセッサでは、このデコード処理により生成された複数の演算命令に基づき複数の演算器を並列して動作させる。
【０００３】
例えば、画像処理等の用途では、処理に用いられる計算が有限であり、かつ、繰り返し同じ計算がなされることが多いため、並列して実行可能な演算の抽出が容易である。そのため。このようなＶＬＩＷプロセッサは、画像処理等の用途においてより有効に利用される。このＶＬＩＷプロセッサの一例が非特許文献１に開示されている。非特許文献１に記載のプロセッサは、複数のプロセッサエレメントを備え、それぞれがＶＬＩＷプロセッサとして構成される。このように複数のＶＬＩＷプロセッサを備えることで、非特許文献１では、さらに処理能力を向上させることができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】S.Kyo, et al., "A Low-Cost Mixed-Mode Parallel Processor Architecture for Embedded Systems", Proc. of ACM Int. Conf. on Supercomputing, pp.253-262, June, 2007.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、非特許文献１に記載のプロセッサでは、１つのプロセッサエレメントで並列して実行可能な演算命令の数が制限されており、その制限数を超えた演算を他の演算と並列して実行することができない問題がある。つまり、非特許文献１に記載のプロセッサでは、並列して実行可能な演算数に制限があるために、十分に演算の並列性を向上させることができない問題がある。
【課題を解決するための手段】
【０００６】
本発明にかかる情報処理装置の一態様は、第１の命令コードが格納される第１のキャッシュと、処理対象のデータが格納される第２のキャッシュと、前記データに対する演算を並列して動作可能な複数の演算器により行う第１、第２の演算器群と、前記第１の命令コードを読み出し、前記第１の命令コードに基づき前記第１の演算器群に対する１以上の演算命令を生成する第１の演算制御回路と、前記第１の演算器群により指定された第２の命令コードを格納する固定命令レジスタを含み、前記第２の命令コードに基づき前記第２の演算器群に対する１以上の演算命令を生成する第２の演算制御回路と、を有し、前記第１の命令コードには少なくとも第１、第２の特定命令コードが含まれ、前記第１の演算器群は、前記第１の演算制御回路が生成する演算命令に前記第１の特定命令コードに基づく第１の演算命令が含まれる場合には前記第１の演算命令に応じて前記固定命令レジスタに前記第２の命令コードを設定し、前記第１の演算制御回路が生成する演算命令に前記第２の特定命令コードに基づく第２の演算命令が含まれる場合には前記第２の演算器群に前記第２の演算器群が処理すべきデータを与え、前記第２の演算器群は、前記第２の演算制御回路が前記第２の命令コードに基づき生成した演算命令に基づく演算を繰り返し実行する。
【０００７】
本発明にかかる情報処理装置によれば、第２の演算器群は、第１の演算器群が第１の演算命令に基づき設定した第２の命令コードに基づき１以上の演算を並列して行う。この第１の演算命令は、他の演算命令とともに生成することが可能である。また、第２の演算器群は第２の命令コードが更新されるまで同じ演算を繰り返し実行する。このようなことから、本発明にかかる情報処理装置では、第２の演算器群への演算指示を行うために第１の演算器群の演算能力の全てが用いられることなく、かつ、第１の演算器群での演算と並列して第２の演算器群で演算を行う可能である。つまり、本発明にかかる情報処理装置では、第１の演算器群における並列演算数の制限を超えた演算を並列して実行することができる。
【発明の効果】
【０００８】
本発明にかかる情報処理装置では、演算処理についての並列性を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる情報処理装置のブロック図である。
【図２】実施の形態１にかかる情報処理装置で用いられる第１の特定命令コードのフォーマットを示す図である。
【図３】実施の形態１にかかる情報処理装置で用いられる第２の特定命令コードのフォーマットを示す図である。
【図４】実施の形態１にかかる情報処理装置で用いられる第１、第２の特定命令コードを用いたプログラムの一例である。
【図５】実施の形態１にかかる情報処理装置で用いられる第２の特定命令コードによる演算命令を定義するプログラムの一例である。
【図６】図４、図５で示したプログラムを実行した場合における情報処理装置のサイクル１の動作を示す図である。
【図７】図４、図５で示したプログラムを実行した場合における情報処理装置のサイクル２の動作を示す図である。
【図８】図４、図５で示したプログラムを実行した場合における情報処理装置のサイクル３の動作を示す図である。
【図９】図４、図５で示したプログラムを実行した場合における情報処理装置のサイクル４の動作を示す図である。
【図１０】図４、図５で示したプログラムを実行した場合における情報処理装置のサイクル５の動作を示す図である。
【図１１】実施の形態１にかかる情報処理装置の主データパスで実行されるプログラムの一例を示した図である。
【図１２】実施の形態１にかかる情報処理装置の副データパスで実行されるプログラムの一例を示した図である。
【図１３】図１１で示したプログラムを実行する場合の情報処理装置の主データパスの処理シーケンスを示すシーケンス図である。
【図１４】図１２で示したプログラムを実行する場合の情報処理装置の副データパスの処理シーケンスを示すシーケンス図である。
【図１５】図１１、図１２で示したプログラムを実行する場合の情報処理装置の動作を示すシーケンス図である。
【図１６】実施の形態２にかかる情報処理装置のブロック図である。
【図１７】実施の形態２にかかる情報処理装置がＳＩＭＤモードの動作を行う場合に用いられる回路ブロックを示した情報処理装置のブロック図である。
【図１８】実施の形態２にかかる情報処理装置がＭＩＭＤモードの動作を行う場合に用いられる回路ブロックを示した情報処理装置のブロック図である。
【発明を実施するための形態】
【００１０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。実施の形態１にかかる情報処理装置１のブロック図を図１に示す。図１に示すように、情報処理装置１は、第１の演算制御回路（例えば、演算制御回路１０）、主データパス２０ａ、副データパス２０ｂ、第１のキャッシュ（例えば、内部メモリ２３ａ）、第２のキャッシュ（例えば、内部メモリ２３ｂ）、第２の演算制御回路（例えば、オフロード制御回路３０）を有する。
【００１１】
主データパス２０ａには、レジスタファイル２１ａと、第１の演算器群２２ａが含まれる。また、副データパス２０ｂには、レジスタファイル２１ｂと、第２の演算器群２２ｂが含まれる。主データパス２０ａでは、第１の演算器群２２ａがレジスタファイル２１ａにデータを入出力しながら演算を進める。副データパス２０ｂでは、第２の演算器群２２ｂがレジスタファイル２１ａにデータを入出力しながら演算を進める。また、レジスタファイル２１ｂには、第１の演算器群２２ａが第２の演算器群２２ｂが処理するデータをレジスタファイル２１ｂに格納する。第１の演算器群２２ａ及び第２の演算器群２２ｂは、データに対する演算を並列して動作可能な複数の演算器により行う。
【００１２】
第１の演算器群２２ａと第２の演算器群２２ｂには、加算器ＡＤＤ、乗算器ＭＵＬ、論理シフト演算ユニットＳＬＬ等の複数の演算器を含むものとする。第１の演算器群２２ａ及び第２の演算器群２２ｂは、複数の演算命令を１サイクルで並列して実行できる。このとき、並列して実行する演算は、演算に用いる演算器が重複しないように設定される。つまり、乗算器ＭＵＬが１つあった場合、１サイクルで２つの乗算を行うことができない。なお、第１の演算器群２２ａ及び第２の演算器群は、同一の演算器の構成を有していることが好ましい。
【００１３】
まず、情報処理装置１では、内部メモリ２３ａに情報処理装置１で利用される演算を指示する第１の命令コードが格納される。つまり、内部メモリ２３ａは、命令キャッシュとして利用される。また、内部メモリ２３ｂには、情報処理装置１で処理の対象となるデータが格納される。つまり、内部メモリ２３ｂはデータキャッシュとして利用される。
【００１４】
演算制御回路１０は、内部メモリ２３ａから第１の命令コードを読み出し、第１の命令コードに基づき第１の演算器群２２ａに対する１以上の演算命令を生成する。つまり、情報処理装置１は、ＶＬＩＷ型のプロセッサとして動作する。この第１の命令コードには、には少なくとも第１、第２の特定命令コードが含まれる。第１、第２の特定命令コードについての詳細は後述するが、以下の説明では、第１の特定命令コードをオフロード情報設定命令コードと称し、第２の特定命令コードをオフロード処理命令コードと称す。さらに、第１の命令コードには、第１、第２の特定命令コード以外の種々の命令コード（例えば、加算命令コード、論理シフト演算命令コード等）が含まれる。
【００１５】
演算制御回路１０は、命令レジスタ１１、命令デコーダ１２を有する。演算制御回路１０は、第１の命令コードを読み出して、命令レジスタ１１に読み出した第１の命令コードを蓄積する。そして、演算制御回路１０は、命令デコーダ１２により、第１、第２の特定命令コードと、その他の命令コードと、の中からプログラムに基づき任意に選択した複数の命令コードを１度にデコードする。つまり、命令デコーダ１２は、複数の演算命令を１度に生成する。
【００１６】
オフロード制御回路３０は、第１の演算器群２２ａにより指定された第２の命令コードを格納する固定命令レジスタ（例えば、オフロードレジスタ３１）を含み、第２の命令コードに基づき前記第２の演算器群に対する１以上の演算命令を生成する。オフロード制御回路３０は、オフロードレジスタ３１に加えてオフロード情報デコーダ３２を有する。オフロードレジスタ３１には、第２の命令コードとして第２の演算器群２２ｂにおいて並列して動作可能な演算器により実行可能な複数の命令コードが格納される。そして、オフロード情報デコーダ３２は、オフロードレジスタ３１に格納されている複数の命令コードを１度にデコードすることで、第２の演算器群２２ｂに対して複数の演算命令を同時に生成する。
【００１７】
ここで、実施の形態１にかかる情報処理装置１で用いられる第１の特定命令コード（オフロード情報設定命令コード）及び第２の特定命令コード（例えば、オフロード処理命令コード）の詳細について説明する。そこで、まず、オフロード情報設定命令コードの命令フォーマットを図２に示す。図２に示すように、オフロード情報設定命令コードは、プログラムとしては、ｓｅｔｏｆｌｄとの記述で指定される。そして、引数としてオフロード処理指定情報の記述が格納されたデータキャッシュのアドレスａｄｄｒが記述される。
【００１８】
次いで、オフロード処理命令コードの命令フォーマットを図３に示す。図３に示すように、オフロード処理命令コードは、プログラムとしては、ｏｌｆｄとの記述で指定される。そして、引数として、第１のソースオペランドＲＡ、第２のソースオペランドＲＢ、ディスティネーションオペランドＲＤ、出力遅延サイクル数Ｌａｔが記述される。なお、第１のソースオペランドＲＡは、演算対象の第１のデータが格納される主データパス２０ａのレジスタファイル２１ａのアドレスである。第２のソースオペランドＲＢは、演算対象の第２のデータが格納される主データパス２０ａのレジスタファイル２１ａのアドレスである。ディスティネーションオペランドＲＤは、演算結果データを格納する主データパス２０ａのレジスタファイル２１ａのアドレスである。出力遅延サイクル数Ｌａｔは、第１、第２のソースオペランドを与えてからディスティネーションオペランドを得るまでの処理サイクル数である。なお、ソースオペランド及びディスティネーションオペランドの数は指定しない場合も含めて任意に設定できるものとする。また、本実施の形態では、ソースオペランドに対応するデータを副データパス２０ｂのレジスタファイル２１ｂのレジスタｒ１、ｒ２に格納するものとする。
【００１９】
続いて、オフロード情報設定命令コードとオフロード処理命令コードとを含むプログラムの一例を図４に示す。図４に示すように、実施の形態１にかかるオフロード制御回路３０及び副データパス２０ｂを利用するためには、オフロード情報設定命令コードとオフロード処理命令コードとを用いてプログラムを記述する必要がある。図４に示す例では、まず、オフロード情報設定命令コード（ｓｅｔｏｆｌｄ）が記述される。そして、このオフロード情報設定命令コードにより用いられるオフロー処理指定情報は、．Ｌ＿ＯＦＬＤ＿ＩＮＦＯ１に格納されていることがわかる。
【００２０】
そして、図４に示す例では、オフロード情報設定命令コードに続いてオフロード処理命令コード（ｏｆｌｄ）が４つ記述される。１番目のオフロード処理命令コードは、レジスタｒ１、ｒ９に格納されたデータをソースオペランドとし、レジスタｒ５をディスティネーションオペランドとする。また、１番目のオフロード処理命令コードでは、出力遅延サイクル数として３が設定される。その他の３つのオフロード処理命令コードについても１番目のオフロード処理命令コードと同じルールでオペランド及び出力遅延サイクル数が指定される。
【００２１】
ここで、オフロード処理指定情報に関する記述について説明する。オフロード処理指定情報のプログラム記述を図５に示す。図５に示す例では、乗算命令コードＭＵＬ、論理右シフト演算命令コードＳＲＬＩ、加算命令コードＡＤＤ、無演算命令ＮＯＰがそれぞれ対応する命令が格納される命令キャッシュのアドレスとして記述されている。また、図５で示す例では、乗算命令コードＭＵＬは、副データパス２０ｂのレジスタファイル２１ｂのレジスタｒ１を第１のソースオペランド、レジスタｒ３を第２のソースオペランド、レジスタｒ４をディスティネーションオペランドとする命令コードが格納されるアドレスとして記述されている。論理右シフト演算命令コードＳＲＬＩは、副データパス２０ｂのレジスタファイル２１ｂのレジスタｒ４を第１のソースオペランド、シフト量を２ビット、レジスタｒ７をディスティネーションオペランドとする命令コードが格納されるアドレスとして記述されている。加算命令コードＡＤＤは、副データパス２０ｂのレジスタファイル２１ｂのレジスタｒ７を第１のソースオペランド、レジスタｒ２を第２のソースオペランド、レジスタｒ１５をディスティネーションオペランドとする命令コードが格納されるアドレスとして記述されている。
【００２２】
実施の形態１にかかる情報処理装置では、演算制御回路１０がオフロード情報設定命令コード及びオフロード処理命令コードに基づき演算指示を主データパス２０ａの第１の演算器群２２ａに与える。そして、第１の演算器群は、演算制御回路１０が生成した演算命令にオフロード情報設定命令コードに基づく第１の演算命令が含まれる場合には第１の演算命令に応じてオフロードレジスタ３１に第２の命令コード（例えば、オフロード処理指定情報）を設定する。また、第１の演算器群２２ａは、演算制御回路１０が生成する演算命令にオフロード処理命令コードに基づく第２の演算命令が含まれる場合には第２の演算器群２２ｂが利用するレジスタファイル２１ｂに第２の演算器群２２ｂが処理すべきデータを与える。そして、第２の演算器群２２ｂは、オフロード制御回路３０がオフロード処理指定情報に基づき生成した演算命令に基づく演算を繰り返し実行する。
【００２３】
そこで、図４、図５で示したプログラムを実行した場合における情報処理装置１の動作を示す図を図６〜図１０に示す。なお、図６〜図１０では、主データパス２０ａのレジスタファイル２１ａと副データパス２０ｂのレジスタファイル２１ｂとの間のデータの授受を用いて情報処理装置１の動作を示した。
【００２４】
図６は、サイクル１の情報処理装置１の動作を示す図である。図６に示すようにサイクル１では、レジスタファイル２１ａ、２１ｂには何等の操作は行われない。サイクル１では、オフロード情報設定命令コードに基づき第１の演算器群２２ａが動作する。第１の演算器群２２ａは、データキャッシュ２３ｂからオフロード処理指定情報を読み出して、オフロード制御回路３０のオフロードレジスタ３１に格納する。なお、サイクル１において、レジスタファイル２１ａ、２１ｂ中のｘは不定値を示す。また、サイクル１においてレジスタファイル２１ｂのレジスタｒ１、ｒ３には予め定数０、４９が格納されているものとする。さらに、サイクル１においてレジスタファイル２１ａには後の計算で用いられるデータが格納されているものとする。
【００２５】
続いて、図７にサイクル２の情報処理装置１の動作を示す。サイクル２では、演算制御回路１０が図４の２行目のオフロード処理命令コードに基づき演算命令を生成する。そして、第１の演算器群２２ａは、演算制御回路１０が生成した演算命令に応じて、レジスタファイル２１ａのレジスタｒ１、ｒ９に格納されたデータをレジスタファイル２１ｂのレジスタｒ１、ｒ２に格納する。また、出力キューの３番目にサイクル２で第２の演算器群２２ｂに与えたデータに対する処理結果を格納するレジスタとしてレジスタｒ５を示す値を格納する。この出力キューに格納された値は、サイクルが進む毎に１つずつ番号の小さい出力キューにずれる。
【００２６】
また、サイクル２では、第２の演算器群２２ｂがオフロード制御回路３０が生成した演算命令に応じて演算を実行する。しかし、サイクル１でレジスタｒ１に格納される値は不定値であるため、レジスタｒ４には、不定値が格納される。また、レジスタｒ７、ｒ１５に格納する値の演算に用いられる値には不定値が含まれるため、レジスタｒ７、ｒ１５に格納される値も不定値となる。
【００２７】
続いて、図８にサイクル３の情報処理装置１の動作を示す。サイクル３では、演算制御回路１０が図４の３行目のオフロード処理命令コードに基づき演算命令を生成する。そして、第１の演算器群２２ａは、演算制御回路１０が生成した演算命令に応じて、レジスタファイル２１ａのレジスタｒ２、ｒ９に格納されたデータをレジスタファイル２１ｂのレジスタｒ１、ｒ２に格納する。また、出力キューの３番目にサイクル３で第２の演算器群２２ｂに与えたデータに対する処理結果を格納するレジスタとしてレジスタｒ６を示す値を格納する。このとき、サイクル２で３番目の出力キューに格納されたレジスタｒ５を示す値は、サイクル３で２番目の出力キューに移動される。
【００２８】
また、サイクル３では、第２の演算器群２２ｂがオフロード制御回路３０が生成した演算命令に応じて演算を実行する。具体的には、サイクル２でレジスタファイル２１ｂのレジスタｒ１に格納された値（図７に示す例では２）とレジスタｒ３の値（図７に示す例では４９）との乗算結果がレジスタｒ４に格納される。しかし、レジスタｒ７、ｒ１５に格納する値の演算に用いられる値には不定値が含まれるため、レジスタｒ７、ｒ１５に格納される値は不定値となる。
【００２９】
続いて、図９にサイクル４の情報処理装置１の動作を示す。サイクル４では、演算制御回路１０が図４の４行目のオフロード処理命令コードに基づき演算命令を生成する。そして、第１の演算器群２２ａは、演算制御回路１０が生成した演算命令に応じて、レジスタファイル２１ａのレジスタｒ３、ｒ９に格納されたデータをレジスタファイル２１ｂのレジスタｒ１、ｒ２に格納する。また、出力キューの３番目にサイクル４で第２の演算器群２２ｂに与えたデータに対する処理結果を格納するレジスタとしてレジスタｒ７を示す値を格納する。このとき、サイクル３で３番目の出力キューに格納されたレジスタｒ６を示す値は、サイクル４で２番目の出力キューに移動され、サイクル４で２番目の出力キューに格納されたレジスタｒ５を示す値は１番目の出力キューに移動される。
【００３０】
また、サイクル４では、第２の演算器群２２ｂがオフロード制御回路３０が生成した演算命令に応じて演算を実行する。具体的には、サイクル３でレジスタファイル２１ｂのレジスタｒ１に格納された値（図８に示す例では５）とレジスタｒ３の値（図８に示す例では４９）との乗算結果がレジスタｒ４に格納される。また、サイクル３でレジスタファイル２１ｂのレジスタｒ４に格納された値を右方向に２ビットシフトした値（ｒ４の値を４で除した値のうち整数成分）がレジスタｒ７に格納される。しかし、レジスタｒ１５に格納する値の演算に用いられる値には不定値が含まれるため、レジスタｒ１５に格納される値は不定値となる。
【００３１】
続いて、図１０にサイクル５の情報処理装置１の動作を示す。サイクル５では、演算制御回路１０が図４の５行目のオフロード処理命令コードに基づき演算命令を生成する。そして、第１の演算器群２２ａは、演算制御回路１０が生成した演算命令に応じて、レジスタファイル２１ａのレジスタｒ４、ｒ９に格納されたデータをレジスタファイル２１ｂのレジスタｒ１、ｒ２に格納する。また、出力キューの３番目にサイクル５で第２の演算器群２２ｂに与えたデータに対する処理結果を格納するレジスタとしてレジスタｒ８を示す値を格納する。このとき、サイクル４で３番目の出力キューに格納されたレジスタｒ７を示す値は２番目の出力キューに移動され、サイクル４で２番目の出力キューに格納されたレジスタｒ６を示す値は１番目の出力キューに移動され、サイクル４で１番目の出力キューに格納されたレジスタｒ５を示す値は０番目の出力キューに移動される。
【００３２】
また、サイクル５では、第２の演算器群２２ｂがオフロード制御回路３０が生成した演算命令に応じて演算を実行する。具体的には、サイクル４でレジスタファイル２１ｂのレジスタｒ１に格納された値（図９に示す例では２）とレジスタｒ３の値（図８に示す例では４９）との乗算結果がレジスタｒ４に格納される。また、サイクル４でレジスタファイル２１ｂのレジスタｒ４に格納された値を右方向に２ビットシフトした値（ｒ４の値を４で除した値のうち整数成分）がレジスタｒ７に格納される。また、サイクル４でレジスタファイル２１ｂのレジスタｒ２、ｒ７に格納された値の加算結果がレジスタｒ１５に格納される。そして、レジスタｒ１５に格納された値は、０番目の出力キューの値に基づきレジスタファイル２１ａのレジスタｒ５に格納される。
【００３３】
このように、実施の形態１にかかる情報処理装置１では、第１の演算器群２２ａが１つの命令コード（例えば、オフロード処理命令コード）に基づき生成された演算命令に応じて処理を行うのみで、第２の演算器群２２ｂに対して演算を指示することができる。また、第２の演算器群２２ｂが行う演算は、オフロード情報設定命令コードに基づき設定するのみである。また、この設定処理に必要なサイクル数は１つである。つまり、情報処理装置１では、演算制御回路１０がオフロード情報設定命令コード又はオフロード処理命令コードとこの２つの命令コード以外の命令コードとを含めた命令コードに基づき複数の演算命令を第１の演算器群２２ａに与え、第１の演算器群２２ａにオフロード情報設定命令コードとオフロード処理命令コード以外の命令コードに基づく他の処理を並列的に実行させることができる。
【００３４】
このような並列処理を行う場合における情報処理装置１の動作について具体的な例を挙げて説明する。以下では、処理の一例として、３×３のソベルフィルタの計算を情報処理装置１で行う例について説明する。このソベルフィルタの計算は、画像処理の分野においてエッジ検出を行う場合に用いられる手法の一つであり、異なるデータに対して同じ演算を繰り返し行うという特徴がある。
【００３５】
まず、３×３のソベルフィルタの計算を行うプログラムの一例を図１１に示す。図１１に示すプログラムでは、演算に用いる変数として出力データを示すＤＯＵＴ［ｙ］［ｘ］をｌｏｎｇ  ｉｎｔ型の変数として定義する。また、出力データＤＯＵＴは４８０×６４０のメモリ領域が指定される。
【００３６】
そして、具体的な演算としてｘ＝１を初期値とし、ループ処理が完了する毎にｘを１ずつ増加させ、ｘが４７９に達するまで処理を繰り返す第１のループ処理が定義される。また、ｙ＝１を初期値として、ループ処理が完了する毎にｙを１ずつ増加させ、ｙが６３９に達するまで処理を繰り返す第２のループ処理が定義される。そして、第２のループ処理では、演算対象画素の値（ＤＯＵＴ［ｙ］［ｘ］）の計算式が記述される。この計算式において、ＤＩＮは演算対象画素の値を計算するための入力画素値を示すものであり、ＤＩＮの後ろにＤＩＮの画像中の位置を示す座標が示されている。
【００３７】
また、３×３のソベルフィルタの計算では、計算後の出力データを格納するデータキャッシュ中のアドレスＤＯＵＴ［ｙ］［ｘ］を計算する必要がある。そこで、出力データＤＯＵＴ［ｙ］［ｘ］を格納する有効アドレスを計算するプログラムの一例を図１２に示す。図１２に示す例では、左辺に有効アドレス値ａｄｄｒｅｓｓが示され、右辺に有効アドレス値の計算式が示されている。このプログラム例では、演算対象の画像が格納されている領域の先頭アドレスｂａｓｅに対して、ｙ座標値を２５６０（６４０×４）倍、ｘ座標値を４倍した値を加算したアドレス（１画素は４バイトで表現されており、画像の１行は６４０画素あるため）に新たな画素値を格納するように計算がなされる。
【００３８】
続いて、図１１、図１２に示したプログラム例に基づく情報処理装置１の動作について具体的に説明する。以下の説明では、第１の演算器群２２ａにおいて図１１に示すソベルフィルタの計算を行い、第２の演算器群２２ｂにおいて図１２に示すアドレス計算を行うものとする。ソベルフィルタの計算に比べて、アドレス計算は必要になる演算器の種類が少ないため、アドレス計算の方がよりオフロード処理に向いているためである。
【００３９】
また、演算制御回路１０は、最大で４つの演算命令を同時に発行するものとする。また、第１の演算器群２２ａが少なくとも論理左シフト演算ユニットＳＬＬを２つ、減算器ＳＵＢを２つ、加算器ＡＤＤを２つ、比較器ＣＭＰを１つ、ロードユニットＬＤを１つ、オフロード設定命令ユニットｓｅｔｏｆｌｄを１つ、オフロード処理命令ユニットｏｆｌｄを１つ、ストアユニットＳＴを１つ、ループ処理を繰り返す分岐命令ユニットＢＮＺを１つ、データ移動命令ユニットＭＶを１つ、有しているものとする。第２の演算器群２２ｂは、少なくとも乗算ＭＵＬを１つ、論理左シフト演算ユニットＳＬＬを１つ、加算器ＡＤＤを２つ、有しているものとする。また、出力データＤＯＵＴ［ｙ］［ｘ］の値を計算するに当たり、事前に、ＤＩＮ［ｙ−１］［ｘ−１］、ＤＩＮ［ｙ−１］［ｘ＋１］、ＤＩＮ［ｙ］［ｘ−１］、ＤＩＮ［ｙ］［ｘ＋１］はレジスタファイル２１ａに格納されているものとする。そして、出力データＤＯＵＴ［ｙ］［ｘ］の値を計算する処理において、新たにＤＩＮ［ｙ＋１］［ｘ−１］、ＤＩＮ［ｙ＋１］［ｘ＋１］がデータキャッシュから読み出されるものとする。
【００４０】
まず、図１１に示したプログラムに基づく処理を情報処理装置１が行う場合の演算フローを図１３に示す。上述したように、図１１に示すプログラムに基づく演算は第１の演算器群２２ａで行われるものである。
【００４１】
図１３に示すように、第１の演算器群２２ａは、サイクル１において、ＤＩＮ［ｙ＋１］［ｘ−１］のロードと、ＤＩＮ［ｙ］［ｘ−１］に対する論理左シフト演算と、ＤＩＮ［ｙ］［ｘ＋１］の論理左シフト演算と、現在処理対象としているＤＩＮ［ｙ］［ｘ］の計算結果を格納するデータキャッシュのアドレス値を計算するためのオフロード処理命令コードｏｆｌｄに基づく処理と、を行う。なお、サイクル１におけるオフロード処理命令コードｏｆｌｄに基づく処理は、処理結果を格納する領域ＤＯＵＴの先頭アドレス値とｘの値とｙの値とをレジスタファイル２１ｂに格納する。サイクル１で指示されたオフロード処理に応じて得られるアドレス値は、後述するサイクル５のストア処理で利用される。
【００４２】
次いで、第１の演算器群２２ａは、サイクル２において、ＤＩＮ［ｙ＋１］［ｘ＋１］のロードと、ＤＩＮ［ｙ−１］［ｘ−１］とＤＩＮ［ｙ−１］［ｘ＋１］との減算と、ＤＩＮ［ｙ］［ｘ−１］に対する論理左シフト演算結果とＤＩＮ［ｙ］［ｘ＋１］の論理左シフト演算の結果との減算と、次の処理で利用されるＤＩＮ［ｙ＋１］［ｘ−１］が格納されているデータキャッシュのアドレス値を計算するためのオフロード処理命令コードｏｆｌｄに基づく処理と、を行う。なお、サイクル２におけるオフロード処理命令コードｏｆｌｄに基づく処理は、処理対象の画像領域ＤＩＮの先頭アドレス値と（ｘ−１）の値とｙの値とをレジスタファイル２１ｂに格納する。サイクル２で指示されたオフロード処理に応じて得られるアドレス値は、次の画素に対するソベルフィルタの計算で利用される。
【００４３】
次いで、第１の演算器群２２ａは、サイクル３において、ＤＩＮ［ｙ＋１］［ｘ＋１］とＤＩＮ［ｙ＋１］［ｘ−１］との減算と、サイクル２で行われた２つの減算の結果に対する加算と、現時点でのｙの値と値１との加算と、次の処理で利用されるＤＩＮ［ｙ＋１］［ｘ＋１］が格納されているデータキャッシュのアドレス値を計算するためのオフロード処理命令コードｏｆｌｄに基づく処理と、を行う。なお、サイクル３におけるオフロード処理命令コードｏｆｌｄに基づく処理は、処理対象の画像領域ＤＩＮの先頭アドレス値と（ｘ＋１）の値とｙの値とをレジスタファイル２１ｂに格納する。サイクル３で指示されたオフロード処理に応じて得られるアドレス値は、次の画素に対するソベルフィルタの計算で利用される。
【００４４】
次いで、第１の演算器群２２ａは、サイクル４において、サイクル３において行われた減算結果とサイクル３において行われたＤＩＮに関する加算結果との加算と、ｙの値と値１との加算結果と、ｙの上限値（４７９）との大小比較と、を行う。
【００４５】
次いで、第１の演算器群２２ａは、サイクル５において、第２の演算器群２２ｂから出力データＤＯＵＴ［ｙ］［ｘ］の値のストア処理及びｙの値の更新を行う。
【００４６】
続いて、図１２に示したプログラム基づく処理を情報処理装置１が行う場合の演算フローを図１４に示す。上述したように、図１２に示すプログラムに基づく演算は第２の演算器群２２ｂで行われるものである。
【００４７】
図１４に示すように、第２の演算器群２２ｂは、サイクル１において、ｙの値と値２５６０との乗算と、ｘの値に対する２ビットの論理左シフト演算（ｘと４の乗算）と、を行う。次いで、第２の演算器群２２ｂは、サイクル２において、サイクル１で行われた２つの演算の結果の加算を行う。次いで、第２の演算器群２２ｂは、サイクル３において、サイクル２で行われた加算の結果と画像の先頭アドレスｂａｓｅとの加算を行う。そして、第２の演算器群２２ｂは、サイクル４において、計算した新たなアドレス値ＤＯＵＴをレジスタファイル２１ｂの所定のレジスタに格納する。なお、第２の演算器群２２ｂでは、オフロード制御回路３０がオフロードレジスタに格納された命令コードに基づき常に４つの演算命令を同時に発行するため、図示しない他の演算も常に行われる。例えば、サイクル１においてもサイクル２の加算処理及びサイクル３の加算処理が行われる。
【００４８】
ここで、図１１、図１２で示したプログラムを実行する場合の情報処理装置の動作を示すシーケンス図を図１５に示す。この図１５では、図１３、図１４で示した処理の関係に着目し、各演算器群で実行される命令コードの処理フローを示した。なお、図１５では、命令コードを示す符号として命令コードに応じて動作する演算器に付した符号と同じ符号を示した。
【００４９】
図１５に示す例では、サイクル１で主データパス２０ａに対してオフロード情報設定命令コードｓｅｔｏｆｌｄに基づく演算指示が与えられる。このサイクル１におけるオフロード情報設定命令コードｓｅｔｏｆｌｄに基づく演算指示に応じて、サイクル２において副データパス２０ｂの処理で利用される演算が確定する。図１５に示す例では、副データパス２０ｂの処理は、１つの乗算器ＭＵＬ、１つの論理左シフト演算ユニットＳＬＬ、及び２つの加算器ＡＤＤにより行われる。
【００５０】
そして、サイクル１０において、主データパス２０ａにオフロード処理命令コードｏｆｌｄに基づく演算命令が指示される。また、サイクル１０では、オフロード処理命令コードｏｆｌｄと共に、ロード命令コードＬＤに基づく処理と、２つの論理左シフト演算命令コードＳＬＬに基づく処理とが指示される。また、サイクル１０では、副データパス２０ｂにサイクル２で設定された命令コードに応じた演算が行われる。つまり、このサイクル１０の処理では、図１３のサイクル１の処理に相当する処理が行われる。
【００５１】
次いで、サイクル１１において、主データパス２０ａにオフロード処理命令コードｏｆｌｄに基づく演算命令が指示される。また、サイクル１１では、オフロード処理命令コードｏｆｌｄと共に、ロード命令コードＬＤに基づく処理と、２つの減算命令コードＳＵＢに基づく処理とが指示される。また、サイクル１１では、副データパス２０ｂにサイクル２で設定された命令コードに応じた演算が行われる。このとき、副データパス２０ｂでは、サイクル１０で発行されたオフロード処理命令コードに応じて主データパス２０ａ側から与えられた演算データに対して、図１４のサイクル１の動作を行う。つまり、このサイクル１１の処理では、図１３のサイクル２の処理及び図１４のサイクル１の処理に相当する処理が行われる。
【００５２】
次いで、サイクル１２において、主データパス２０ａにオフロード処理命令コードｏｆｌｄに基づく演算命令が指示される。また、サイクル１２では、オフロード処理命令コードｏｆｌｄと共に、減算命令コードＳＵＢに基づく処理と、２つの加算命令コードＡＤＤに基づく処理とが指示される。また、サイクル１２では、副データパス２０ｂにサイクル２で設定された命令コードに応じた演算が行われる。このとき、副データパス２０ｂでは、サイクル１１の副データパス２０ｂの処理結果に対して、図１４のサイクル２の動作を行う。つまり、このサイクル１２の処理では、図１３のサイクル３の処理及び図１４のサイクル２の処理に相当する処理が行われる。
【００５３】
次いで、サイクル１３において、主データパス２０ａにオフロード処理命令コードｏｆｌｄに基づく演算命令が指示される。また、サイクル１３では、オフロード処理命令コードｏｆｌｄと共に、加算命令コードＡＤＤに基づく処理と、比較命令コードＣＭＰに基づく処理と、データ移動命令コードＭＶに基づく処理とが指示される。また、サイクル１３では、副データパス２０ｂにサイクル２で設定された命令コードに応じた演算が行われる。このとき、副データパス２０ｂでは、サイクル１２の副データパス２０ｂの処理結果に対して、図１４のサイクル３の動作を行う。つまり、このサイクル１３の処理では、図１３のサイクル４の処理及び図１４のサイクル３の処理に相当する処理が行われる。
【００５４】
第１の演算器群２２ａが加算器ＡＤＤを２つしか有していない場合、第１の演算器群２２ａの加算器ＡＤＤの数の制限によりアドレス計算とデータＤＯＵＴ［ｙ］［ｘ］の計算とを並列して行い、データＤＯＵＴ［ｙ］［ｘ］の計算結果とアドレス計算の結果とを同時に得ることはできない。同時に２つの計算結果を得るためには、最大で３つの加算器を同時に動作させる必要があるためである。また、アドレス計算とデータＤＯＵＴ［ｙ］［ｘ］の計算とを同時に終了するためには最大で５つの演算命令を同時発行しなければならず、演算制御回路１０の同時命令発行数が４であった場合にはアドレス計算とデータＤＯＵＴ［ｙ］［ｘ］の計算とを並列して行うことができない。
【００５５】
一方、上述したように、実施の形態１にかかる情報処理装置１では、第１の演算器群２２ａで並列して処理できる演算数に制限がある場合であっても、データＤＯＵＴ［ｙ］［ｘ］の計算結果とアドレス計算の結果とを同時に得ることができる。情報処理装置１では、演算制御回路１０がオフロード情報設定命令コードに基づき生成した演算命令に応じて第１の演算器群２２ａがオフロードレジスタ３１に第２の演算器群２２ｂにおける処理に必要な命令コードを設定する。そして、オフロード制御回路３０がオフロードレジスタ３１に格納された命令コードに基づき演算命令を生成する。第２の演算器群２２ｂは、オフロード制御回路３０が生成した演算命令に基づく動作を繰り返し実行する。第２の演算器群２２ｂをこのように動作させることで、情報処理装置１では、演算制御回路１０がオフロード処理命令コードに応じて生成した演算命令に基づき第１の演算器群２２ａが第２の演算器群２２ｂ側に第２の演算器群２２ｂが処理すべきデータを渡すのみで、当該データに対する演算を第２の演算器群２２ｂにて行うことができる。つまり、情報処理装置１では、第１の演算器群２２ａと第２の演算器群２２ｂとが備える演算器群を合わせた並列処理が可能になる。以上のことより、情報処理装置１では、第１の演算器群２２ａが有する演算器の数の制限を超えた数の演算を並列して行うことができる。さらに、情報処理装置１では、同時に実行可能な演算数を実質的に増加させることができることから、プログラムの処理時間を短縮することができる。
【００５６】
また、情報処理装置１では、オフロード情報設定命令コードにより第２の演算器群２２ｂで実行する演算を指定する命令コードを任意に設定できる。そのため、演算制御回路１０の同時発行命令数の制限を超えた演算命令をオフロード制御回路３０により生成することで、演算制御回路１０の同時発行命令数の制限よりも多くの演算を並列して実行する。つまり、情報処理装置１では、実質的に演算制御回路１０の同時発行命令数を増加させることができる。一方、従来のプロセッサに関し、主演算器とコプロセッサ等の専用回路とを設け、例えば、浮動小数点演算についてはコプロセッサに実行させる技術がある。しかし、この専用回路は、固定的な演算しか行うことができない。また、専用回路に演算を行わせる場合、演算毎に演算指示と演算データを主演算器が専用回路に与えなければならず主演算器の演算能力を低下させる原因となっていた。つまり、従来のプロセッサにおける主演算器と専用回路との組合せでは、主演算器で同時実行可能な演算命令の数を増やすことはできない。
【００５７】
実施の形態２
実施の形態２にかかる情報処理装置２のブロック図を図１６に示す。図１６に示すように、情報処理装置２は、第１の演算制御回路（例えば、演算制御回路１０１〜１０ｍ（ｍは整数、以下同じ））、第２の演算制御回路（例えば、オフロード制御回路４０１〜４０ｍ）、第３の演算制御回路（例えば、演算制御回路６０）、命令キャッシュ６１、データキャッシュ６２、演算器７０、第１の切換回路８１〜８ｍ、第２の切換回路９１〜９ｍを有する。
【００５８】
さらに、情報処理装置２では、演算器７０が第１のプロセッサエレメント（例えば、プロセッサエレメントＰＥ１１〜ＰＥ１ｍ）と第２のプロセッサエレメント（プロセッサエレメントＰＥ２１〜ＰＥ２ｍ）とを有する。そして、実施の形態２にかかる情報処理装置２は、動作モードとして第１のモード（例えば、ＳＩＭＤモード）と第２のモード（例えば、ＭＩＭＤモード）とを有する。情報処理装置２は、ＳＩＭＤモードでは、プロセッサエレメントＰＥ１１〜ＰＥ１ｍ、ＰＥ２１〜ＰＥ２ｍにおいて異なるデータに対して同じ演算を並列して行う。一方、情報処理装置２は、ＭＩＮＤモードでは、プロセッサエレメントＰＥ１１〜ＰＥ１ｍとプロセッサエレメントＰＥ２１〜ＰＥ２ｍとを１つの演算器として再構成し、複数の演算器により異なるデータに対する異なる演算を並列して行う。
【００５９】
ここで、情報処理装置２の構成についてさらに詳細に説明する。命令キャッシュ６１は、ＳＩＭＤモードにおいて利用される第３の命令コードが格納される。データキャッシュ６２は、ＳＩＭＤモードにおいて処理されるデータが格納される。演算制御回路６０は、命令キャッシュ６１から第３の命令コードを読み出し、第３の命令コードに基づき演算命令を生成する。
【００６０】
第１の切換回路８１〜８ｍは、ＳＩＭＤモードにおいて演算制御回路６０からプロセッサエレメントＰＥ１１〜ＰＥ１ｍに演算指示に与え、ＭＩＭＤモードにおいて演算制御回路１０１〜１０ｍからプロセッサエレメントＰＥ１１〜ＰＥ１ｍに演算指示に与える。第２の切換回路９１〜９ｍは、ＳＩＭＤモードにおいて演算制御回路６０からプロセッサエレメントＰＥ２１〜ＰＥ２ｍに演算指示に与え、ＭＩＭＤモードにおいてオフロード制御回路４０１〜４０ｍからプロセッサエレメントＰＥ２１〜ＰＥ２ｍに演算指示に与える。なお、第１の切換回路８１〜８ｍ及び第２の切換回路９１〜９ｍは、図示しない他の回路から与えられるモード切換信号ＭＤに基づき演算指示元の演算制御回路を切り換える。
【００６１】
プロセッサエレメントＰＥ１１〜ＰＥ１ｍは、レジスタファイル７１１〜７１ｍ、演算器群７３１〜７３ｍ、内部メモリ７５１〜７５ｍを有する。また、プロセッサエレメントＰＥ２１〜ＰＥ２ｍは、レジスタファイル７２１〜７２ｍ、演算器群７４１〜７４ｍ、内部メモリ７６１〜７６ｍを有する。
【００６２】
プロセッサエレメントＰＥ１１〜ＰＥ１ｍ、ＰＥ２１〜ＰＥ２ｍは、ＳＩＭＤモードにおいて、自プロセッサエレメント内の内部メモリに格納されたデータに対して演算を行う。より具体的には、プロセッサエレメントＰＥ１１〜ＰＥ１ｍ、ＰＥ２１〜ＰＥ２ｍは、演算器群におけるロード処理により自プロセッサエレメント内のレジスタファイルに内部メモリからデータをロードし、演算器群はレジスタファイル内のデータを用いて演算器群による演算を行う。そして、プロセッサエレメントＰＥ１１〜ＰＥ１ｍは、演算結果をレジスタファイルに格納し、演算器群におけるストア処理により自プロセッサエレメント内のレジスタファイルから内部メモリに演算後のデータを格納する。
【００６３】
また、プロセッサエレメントＰＥ１１〜ＰＥ１ｍは、ＭＩＭＤモードにおいて、自プロセッサエレメント内の内部メモリを実施の形態１にかかる内部メモリ２３ａ（例えば、命令キャッシュ）として利用する。また、プロセッサエレメントＰＥ１１〜ＰＥ１ｍは、ＭＩＭＤモードにおいて、自プロセッサエレメント内の演算器群を実施の形態１にかかる第１の演算器群２２ａとして利用する。
【００６４】
プロセッサエレメントＰＥ２１〜ＰＥ２ｍは、ＭＩＭＤモードにおいて、自プロセッサエレメント内の内部メモリを実施の形態１にかかる内部メモリ２３ｂ（例えば、データキャッシュ）として利用する。また、プロセッサエレメントＰＥ２１〜ＰＥ２ｍは、ＭＩＭＤモードにおいて、自プロセッサエレメント内の演算器群を実施の形態１にかかる第２の演算器群２２ｂとして利用する。
【００６５】
なお、プロセッサエレメントＰＥ１１〜ＰＥ１ｍの内部メモリ７５１〜７５ｍ及びプロセッサエレメントＰＥ２１〜ＰＥ２ｍの内部メモリ７６１〜７６ｍは、ＭＩＭＤモードにおいて命令コードが格納される側を命令キャッシュとして利用し、データが格納される側をデータキャッシュとして利用すれば良い。つまり、内部メモリ７５１〜７５ｍ及び内部メモリ７６１〜７６ｍは、ＭＩＮＤモードにおいて、いずれのキャッシュとして利用するかはアーキテクチャにより任意に設定できる。
【００６６】
続いて、情報処理装置２をＳＩＭＤモードで動作させる場合の動作を示す情報処理装置２のブロック図を図１７に示す。図１７に示すように、ＳＩＭＤモードでは、演算制御回路６０は、命令キャッシュ６１に格納された第３の命令コードに応じて演算命令を生成する。第１の切換回路８１〜８ｍ及び第２の切換回路９１〜９ｍは、モード切換信号ＭＤに基づき、演算制御回路６０が生成する演算命令をプロセッサエレメントＰＥ１１〜ＰＥ１ｍ及びプロセッサエレメントＰＥ２１〜ＰＥ２ｍに与える。そのため、演算制御回路１０１〜１０ｍ及びオフロード制御回路４０１〜４０ｍは、実質的に無効化された状態となる。さらに、ＳＩＭＤモードでは、プロセッサエレメントＰＥ１１〜ＰＥ１ｍとプロセッサエレメントＰＥ２１〜ＰＥ２ｍとの間のパスが無効化される。
【００６７】
そして、プロセッサエレメントＰＥ１１〜ＰＥ１ｍ、ＰＥ２１〜ＰＥ２ｍは、演算制御回路６０が生成する演算命令に基づき、データキャッシュ６２から内部メモリ７５１〜７５ｍ及び内部メモリ７６１〜７６ｍに処理を担当するデータをロードする。その後、プロセッサエレメントＰＥ１１〜ＰＥ１ｍ、ＰＥ２１〜ＰＥ２ｍは、演算制御回路６０が生成する演算命令に基づき自プロセッサエレメント内の内部メモリに格納されたデータに対して、同じ演算を行う。つまり、ＳＩＭＤモードでは、情報処理装置１は、複数のプロセッサエレメントを用いて異なるデータに対する同じ演算を並列して行うことで高速な処理が可能となる。このようなＳＩＭＤモードにおける演算は、例えば、１枚の大きな画像のエッジ抽出を行う場合などに有効である。例えば、１枚の大きな画像を短冊状に分割し、分割した複数の領域を複数のプロセッサエレメントで分担して処理することで画像処理を高速に行うことができる。
【００６８】
続いて、情報処理装置２をＭＩＭＤモードで動作させる場合の動作を示す情報処理装置２のブロック図を図１８に示す。図１８に示すように、ＭＩＭＤモードでは、演算制御回路１０１〜１０ｍは、命令キャッシュと利用される内部メモリ７５１〜７５ｍに格納された第１の命令コードに応じてそれぞれ演算命令を生成する。第１の切換回路８１〜８ｍは、モード切換信号ＭＤに基づき、演算制御回路１０１〜１０ｍが生成する演算命令をプロセッサエレメントＰＥ１１〜ＰＥ１ｍに与える。第２の切換回路９１〜９ｍは、モード切換信号ＭＤに基づき、演算制御回路４０１〜４０ｍが生成する演算命令をプロセッサエレメントＰＥ２１〜ＰＥ２ｍに与える。そのため、演算制御回路６０は、実質的に無効化された状態となる。さらに、ＭＩＭＤモードでは、命令キャッシュ６１及びデータキャッシュ６２も無効化される。一方、ＭＩＭＤモードでは、プロセッサエレメントＰＥ１１〜ＰＥ１ｍとプロセッサエレメントＰＥ２１〜ＰＥ２ｍとの間のパスが有効化される。
【００６９】
ＭＩＭＤモードでは、上記のようにプロセッサ構成を再構成したことにより、プロセッサエレメントＰＥ１１、ＰＥ２１、演算制御回路１０１、オフロード制御回路４０１により実施の形態１にかかる情報処理装置１と同じ構成を実現することができる。また、図１８に示した例では、情報処理装置２は、実施の形態１にかかる情報処理装置１に相当する回路構成をｍ個構成することができる。つまり、情報処理装置２は、ＭＩＭＤモードにおいてｍ個の独立したプロセッサを構成することができる。このようなＭＩＭＤモードにおける構成により演算を行うことで、例えば、１枚の大きな画像中の独立した複数の領域のそれぞれを複数のプロセッサで分担して処理することが可能になる。大きさの異なる複数の領域をＳＩＭＤモードの情報処理装置２で処理する場合、各領域を順次処理しなければならない。そのため、ＳＩＭＤモードの情報処理装置２を用いてこのような画像を処理する場合の処理時間は、複数の領域の大きさの合計値に比例して長くなる。一方、大きさの異なる複数の領域をＭＩＭＤモードの情報処理装置２で処理する場合、各領域を複数のプロセッサ（実施の形態１にかかる情報処理装置１）を用いて並列して処理することができる。そのため、ＭＩＭＤモードの情報処理装置２を用いてこのような画像を処理する場合の処理時間は、最大でも、複数の領域うち最も大きな領域の画像を処理する時間となる。つまり、複数の独立した画像領域を処理する場合はＭＩＭＤモードによる処理の方が短時間で処理が完了する。
【００７０】
ここで、上記した複数のプロセッサエレメントの構成をＳＩＭＤモードとＭＩＮＤモードとで再構成する技術に関しては非特許文献１に開示されている。しかしながら、非特許文献１に記載のプロセッサでは、ＭＩＮＤモードで複数のプロセッサエレメントにより１つの演算器を構成し、プロセッサ全体としては複数の演算器として互いに並列した処理を行う場合、１つの演算器で利用できる演算器群は複数のプロセッサエレメントに属する複数の演算器群のうちの１つに限られる。つまり、非特許文献１に記載のプロセッサでは、ＭＩＭＤモードにおいて、１つの演算器に含まれる複数の演算器群のうち１つしか利用できず、処理能力が限られる問題がある。また、非特許文献１に記載のでは、ＭＩＭＤモードにおいて回路リソースが無駄になる問題がある。
【００７１】
しかしながら、実施の形態２にかかる情報処理装置２では、ＭＩＭＤモードにおいて、オフロード制御回路４０１〜４０ｍを利用することにより、１つの演算器を構成する複数のプロセッサエレメントに属する全ての演算器群を処理に利用することができる。そのため、実施の形態２にかかる情報処理装置２では、ＭＩＮＤモードにおいて、非特許文献１に記載のプロセッサよりも高い処理能力を実現することができる。また、実施の形態２にかかる情報処理装置２では、回路リソースを有効に利用できるため、処理能力に対する回路面積の効率を高めることができる。
【００７２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７３】
１、２    情報処理装置
１０、１０１〜１０ｍ    演算制御回路（第１の演算制御回路）
１１    命令レジスタ
１２    命令デコーダ
２０ａ    主データパス
２０ｂ    副データパス
２１ａ、２１ｂ、７１１〜７１ｍ、７２１〜７２ｍ    レジスタファイル
２２ａ、２２ｂ、７３１〜７３ｍ、７４１〜７４ｍ    演算器群
２３ａ、２３ｂ、７５１〜７５ｍ、７６１〜７６ｍ    内部メモリ
３０、４０１〜４０ｍ    オフロード制御回路（第２の演算制御回路）
３１    オフロードレジスタ
３２    オフロード情報デコーダ
６０    演算制御回路（第３の演算制御回路）
６１    命令キャッシュ
６２    データキャッシュ
７０    演算器
８１-８ｍ    第１の切換回路
９１-９ｍ    第１の切換回路
ＰＥ１１〜ＰＥ１ｍ、ＰＥ２１〜ＰＥ２ｍ    プロセッサエレメント
【図１】
2012252374.tif 000003
【図２】
2012252374.tif 000004
【図３】
2012252374.tif 000005
【図４】
2012252374.tif 000006
【図５】
2012252374.tif 000007
【図６】
2012252374.tif 000008
【図７】
2012252374.tif 000009
【図８】
2012252374.tif 000010
【図９】
2012252374.tif 000011
【図１０】
2012252374.tif 000012
【図１１】
2012252374.tif 000013
【図１２】
2012252374.tif 000014
【図１３】
2012252374.tif 000015
【図１４】
2012252374.tif 000016
【図１５】
2012252374.tif 000017
【図１６】
2012252374.tif 000018
【図１７】
2012252374.tif 000019
【図１８】
2012252374.tif 000020