(57)【要約】【課題】複数種のSIMD構成に対応し、かつ、プログラムの開発期間を短縮可能なデータ処理装置を得る。【解決手段】プログラム制御部４Ａはデコード段階において、低並列実行モード時に、デコード結果が並列度が“４”の高並列命令の場合は、プログラムカウンタＰＣをインクリメントすることなく、高並列命令の直後のサイクルでＮＯＰ命令を指示する命令コードＯＰを出力する。演算器選択信号出力部２３は低並列実行モード時に、高並列命令を指示する場合は、当該高並列命令を、並列度が“２”で処理可能な第１及び第２の部分並列命令を分割し、次のサイクルから２サイクルかけて第１及び第２の部分並列命令を指示する演算命令選択信号ＯＰＳを並列演算器３に出力する。【選択図】図３
2008009473.tif 000002
【特許請求の範囲】
【請求項１】
第１の数の並列度の高並列命令が実行可能であり、前記第１の数の並列度で実行する高並列実行モードと、前記第１の数より小さい第２の数の並列度で実行する低並列実行モードとを有するデータ処理装置であって、
前記第１の数の並列度を有するデータ保持手段と、
前記第１の数の並列度を有する並列演算器と、
プログラム内の命令を順次解読して、前記高並列実行モードであるか前記低並列実行モードであるかを示す情報を含む解読結果を出力するプログラム制御部と、
前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、
前記シーケンス制御部は前記高並列実行モード時に、前記データ保持手段及び前記並列演算器を前記第１の数の並列度で前記高並列命令を実行制御し、前記低並列実行モード時に、前記高並列命令を前記第２の数の並列度で処理可能な複数の部分並列命令に分割し、前記複数の部分並列命令に基づき前記並列演算器を前記第２の並列度で実行制御し、
前記プログラム制御部は前記低並列実行モード時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する、
データ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、
前記シーケンス制御部は、前記低並列実行モード時に前記データ保持手段に対し並列度が前記第１の数で実行制御する、
データ処理装置。
【請求項３】
請求項１記載のデータ処理装置であって、
前記シーケンス制御部は、前記低並列実行モード時に前記データ保持手段に対し並列度が前記第２の数で実行制御する、
データ処理装置。
【請求項４】
第１の数の並列度の高並列命令及び前記第１の数より小さい第２の数の並列度の低並列命令が実行可能なデータ処理装置であって、
前記第１の数の並列度を有するデータ保持手段と、
前記第１の数の並列度を有する並列演算器と、
プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、
前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、
前記シーケンス制御部は前記高並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第１の数の並列度で実行制御し、前記低並列命令実行時に、当該低並列命令に基づき前記並列演算器を前記第２の数のみ有効にして前記第２の並列度で実行制御する、
データ処理装置。
【請求項５】
請求項４記載のデータ処理装置であって、
前記並列演算器は前記第１の数の部分演算器を含み、
前記解読結果は前記低並列命令時において、前記第１の数の部分演算器内における実行対象の前記第２の数の部分演算器を指定する情報を含み、
前記シーケンス制御部は、前記解読結果に基づき、前記第１の部分演算器のうち前記第２の数の部分演算器を選択的に有効にする、
データ処理装置。
【請求項６】
第１の数の並列度の高並列命令及び前記第１の数より小さい第２の数の並列度の低並列命令が実行可能なデータ処理装置であって、
前記第１の数の並列度を有するデータ保持手段と、
前記第２の数の並列度を有する並列演算器と、
プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、
前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、
前記シーケンス制御部は前記低並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第２の数の並列度で前記低並列命令を実行制御し、前記高並列命令実行時に、前記高並列命令を前記第２の数の並列度で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき前記並列演算器を前記第２の並列度で実行制御し、
前記プログラム制御部は前記高並列命令の解読時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する、
データ処理装置。
【請求項７】
請求項１ないし請求項６のうち、いずれか１項に記載のデータ処理装置であって、
前記第１の数は前記第２の数の２倍の数を含む、
データ処理装置。
【請求項８】
演算機能として第１の数の並列度を要求する高並列命令を含むプログラムに対する、前記演算機能が前記第１の数より小さい第２の数の並列度のデータ処理装置によるプログラム実行方式であって、
前記プログラム内に記述された命令内容を解読して解読結果を得る解読機能と、
前記解読結果に基づき、前記高並列命令を並列度が前記第２の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、
前記解読機能は、前記高並列命令直後の命令の前記解読結果として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする、
プログラム実行方式。
【請求項９】
演算機能として第１の数の並列度を要求する高並列命令及び前記第１の数より小さい第２の数の並列度を要求する低並列命令を含むプログラムに対する、前記演算機能が前記第１の数より小さい第２の数の並列度のデータ処理装置によるプログラム実行方式であって、
前記プログラム内に記述された命令内容を解読し、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を得る解読機能と、
前記解読結果に基づき、前記低並列命令を前記第２の数の並列度で実行するとともに、前記高並列命令を並列度が前記第２の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、
前記解読機能は、前記高並列命令直後の命令として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする、
プログラム実行方式。
【請求項１０】
請求項８あるいは請求項９記載のプログラム実行方式であって、
前記高並列命令はデータ保持機能として前記第１の数の並列度を要求する命令を含み、
前記シーケンス機能は、前記複数の部分並列命令を、前記データ保持機能に関し前記第１の数の並列度を満足させながら実行する、
プログラム実行方式。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はＳＩＭＤ（Single Instruction／Multiple Data ）構成のデータ処理装置及びＳＩＭＤに対応するプログラム実行方式に関する。
【背景技術】
【０００２】
例えば、３Ｄグラフィックス分野において、ジオメトリ処理に用いられているプログラム制御方式のデータ処理装置は、ＰＣ（パーソナルコンピュータ）向けなどの性能を要求される分野に適用される場合には、 非特許文献１に記載されているように処理の特徴により4SIMD構成のコアが使用されることが多い。
【０００３】
また、携帯機器などの小型化、低消費電力化を要求される分野に適用される場合には、非特許文献２，非特許文献３に記載されているように2SIMDのコアを使用して小型化をはかっている。
【０００４】
【非特許文献１】「A Programmable Geometry Processor with Enhanced Four-Parallel SIMD Type Processing Core for ＰＣ-Based ３Ｄ Graphics」IEICE TRANS. ELECTRON , VOL.E85-C, NO.5, pp.1200-1210  2002年5月
【非特許文献２】「携帯用３Ｄ-LSIコアZ３Ｄ(2)-ジオメトリエンジン-」  電子情報通信学会2003年総合大会、  Ｄ-11-123
【非特許文献３】「３Ｄ Graphics LSI Core for Mobile Phone "Z３Ｄ"」 Graphics Hardware 2003, ACM SIGGRAPH / Eurographics Workshop Proceedings, pp.60-67，2003年7月
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したような2SIMDが適用される分野及び4SIMDが適用される分野のうち、どちらの分野にも容易に対応できるデータ処理装置を構成することによって、装置の開発期間の効率化をはかることが可能である。それを実現するための1つの方法として、2SIMD及び4SIMD双方に対応可能なスケーラブルなH/W構成がある。ただし、従来の構成のままスケーラブルなH/W構成を実現すると、2SIMD用構成と4SIMD用構成とでは命令コードを変えてプログラムを記述する関係上、2SIMD及び4SIMD用それぞれの構成について、プログラム（命令コード）を開発する期間が発生するため、S/W開発期間が長くなってしまうという問題点があった。
【０００６】
この発明は上記問題点を解決するためになされたもので、複数種のSIMD構成に対応し、かつ、プログラムの開発期間を短縮可能なデータ処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る請求項１記載のデータ処理装置は、第１の数の並列度の高並列命令が実行可能であり、前記第１の数の並列度で実行する高並列実行モードと、前記第１の数より小さい第２の数の並列度で実行する低並列実行モードとを有するデータ処理装置であって、前記第１の数の並列度を有するデータ保持手段と、前記第１の数の並列度を有する並列演算器と、プログラム内の命令を順次解読して、前記高並列実行モードであるか前記低並列実行モードであるかを示す情報を含む解読結果を出力するプログラム制御部と、前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、前記シーケンス制御部は前記高並列実行モード時に、前記データ保持手段及び前記並列演算器を前記第１の数の並列度で前記高並列命令を実行制御し、前記低並列実行モード時に、前記高並列命令を前記第２の数の並列度で処理可能な複数の部分並列命令に分割し、前記複数の部分並列命令に基づき前記並列演算器を前記第２の並列度で実行制御し、前記プログラム制御部は前記低並列実行モード時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する。
【０００８】
この発明に係る請求項４記載のデータ処理装置は、第１の数の並列度の高並列命令及び前記第１の数より小さい第２の数の並列度の低並列命令が実行可能なデータ処理装置であって、前記第１の数の並列度を有するデータ保持手段と、前記第１の数の並列度を有する並列演算器と、プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、前記シーケンス制御部は前記高並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第１の数の並列度で実行制御し、前記低並列命令実行時に、当該低並列命令に基づき前記並列演算器を前記第２の数のみ有効にして前記第２の並列度で実行制御する。
【０００９】
この発明に係る請求項６記載のデータ処理装置は、第１の数の並列度の高並列命令及び前記第１の数より小さい第２の数の並列度の低並列命令が実行可能なデータ処理装置であって、前記第１の数の並列度を有するデータ保持手段と、前記第２の数の並列度を有する並列演算器と、プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、前記シーケンス制御部は前記低並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第２の数の並列度で前記低並列命令を実行制御し、前記高並列命令実行時に、前記高並列命令を前記第２の数の並列度で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき前記並列演算器を前記第２の並列度で実行制御し、前記プログラム制御部は前記高並列命令の解読時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する。
【００１０】
この発明に係る請求項８記載のプログラム実行方式は、演算機能として第１の数の並列度を要求する高並列命令を含むプログラムに対する、前記演算機能が前記第１の数より小さい第２の数の並列度のデータ処理装置によるプログラム実行方式であって、前記プログラム内に記述された命令内容を解読して解読結果を得る解読機能と、前記解読結果に基づき、前記高並列命令を並列度が前記第２の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、前記解読機能は、前記高並列命令直後の命令の前記解読結果として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする。
【００１１】
この発明に係る請求項９記載のプログラム実行方式は、演算機能として第１の数の並列度を要求する高並列命令及び前記第１の数より小さい第２の数の並列度を要求する低並列命令を含むプログラムに対する、前記演算機能が前記第１の数より小さい第２の数の並列度のデータ処理装置によるプログラム実行方式であって、前記プログラム内に記述された命令内容を解読し、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を得る解読機能と、前記解読結果に基づき、前記低並列命令を前記第２の数の並列度で実行するとともに、前記高並列命令を並列度が前記第２の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、前記解読機能は、前記高並列命令直後の命令として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする。
【発明の効果】
【００１２】
この発明に係る請求項１記載のデータ処理装置のシーケンス制御部は、低並列実行モード時に、高並列命令を第２の数の並列度で処理可能な複数の部分並列命令に分割し、複数の部分並列命令に基づき並列演算器を第２の並列度で実行制御するため、共通の高並列命令に対して高並列モード及び低並列モードの実行制御が可能である。
【００１３】
その結果、高並列モード及び低並列モードそれぞれについて共通のプログラムを利用できるため、プログラムの開発期間を短縮できる効果を奏する。
【００１４】
さらに、プログラム制御部は、低並列実行モード時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する解読結果を生成するため、シーケンス制御部内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
【００１５】
この発明における請求項４記載のデータ処理装置のシーケンス制御部は、高並列命令実行時に、データ保持手段及び並列演算器を第１の数の並列度で実行制御し、低並列命令実行時に、当該低並列命令に基づき並列演算器を第２の数のみ有効にして第２の並列度で実行制御するため、並列演算器を並列度を満足する個数分有効利用することができるため、無駄な動作を省き低消費電力化を図ることができる。
【００１６】
この発明における請求項６記載のデータ処理装置のシーケンス制御部は、低並列命令実行時に、データ保持手段及び並列演算器を第２の数の並列度で低並列命令を実行制御し、高並列命令実行時に、高並列命令を第２の数の並列度で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器を第２の並列度で実行制御している。
【００１７】
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、プログラムの開発期間を短縮化を図ることができる効果を奏する。
【００１８】
さらに、プログラム制御部は高並列命令の解読時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する解読結果を生成するため、シーケンス制御部内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
【００１９】
この発明における請求項８記載のプログラム実行方式におけるシーケンス機能は、解読機能より得られる解読結果に基づき、高並列命令を並列度が第２の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するため、並列度が第１の数を要求する高並列命令からなるプログラムを、並列度が第２の数の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
【００２０】
さらに、解読機能は、高並列命令直後の命令の解読結果として、複数の部分並列命令に対応する未実行命令を指示する解読結果を生成して、複数の部分並列命令を時間的に実行可能にするため、シーケンス機能にて高並列命令を複数の部分並列命令を分割して実行させてもプログラムの実行に支障をきたすことはない。
【００２１】
この発明における請求項９記載のプログラム実行方式におけるシーケンス機能は、解読機能より得られる解読結果に基づき、低並列命令を第２の数の並列度で実行するとともに、高並列命令を並列度が第２の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行している。
【００２２】
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、並列度が第２の数の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
【００２３】
さらに、解読機能は、高並列命令直後の命令の解読結果として、複数の部分並列命令に対応する未実行命令を指示する解読結果を生成して、複数の部分並列命令を時間的に実行可能にするため、シーケンス機能にて高並列命令を複数の部分並列命令を分割して実行させてもプログラムの実行に支障をきたすことはない。
【発明を実施するための最良の形態】
【００２４】
＜全体構成＞
図１はこの発明の実施の形態１〜実施の形態３であるデータ処理装置の全体構成の概略を示すブロック図である。同図に示すように、データ保持手段１と並列演算器３とのデータの授受がシーケンス変換部（シーケンス制御部）２（２Ａ〜２Ｄ）を介して行われる。シーケンス変換部２はプログラム制御部４（４Ａ〜４Ｄ）の解読結果に基づきシーケンス制御を行う。命令保持手段５にはプログラム等に記載された命令を保持しており、プログラム制御部４は命令保持手段５より読み出した命令を解読し、解読結果をシーケンス変換部２に出力する。
【００２５】
＜実施の形態１＞
図２はこの発明の実施の形態１であるデータ処理装置のデータ保持手段１及び並列演算器３の構成を示す説明図である。同図に示すように、データ保持手段１は４つのＦＬＭ(Floating Local Memory)１０〜１３から構成され、並列演算器３は４つの部分演算器であるＦＰＵ（Floating-Point Unit）３０〜３３から構成されることにより、基本構成を4SIMD（データ保持手段１及び並列演算器３共に並列度が“４”）としている。そして、データ保持手段１，並列演算器３間のデータの授受はシーケンス変換部２Ａの制御によって行われる。
【００２６】
図３は図２で示したシーケンス変換部２Ａの詳細を示すブロック図である。同図に示すように、シーケンス変換部２Ａは一時記憶部２１、演算器選択信号出力部２３及びメモリ制御信号生成部２４より構成される。
【００２７】
プログラム制御部４Ａはプログラム内の命令を順次解読して、解読結果（デコード結果）として並列度選択コードＰＳ、命令コードＯＰ及びソース／デスティネーションコードＳＤＣを出力する。
【００２８】
シーケンス変換部（シーケンス制御部）２Ａ内の一時記憶部２１及び演算器選択信号出力部２３はプログラム制御部４Ａより並列度選択コードＰＳ及び命令コードＯＰを受ける。並列度選択コードＰＳはデータ処理装置の処理の並列度を示すコードであり、ＦＰＵ３０〜３３のうち全てを並列演算に用いる場合（高並列実行モード）は並列度は“４”（第１の数）とされ、２つを並列演算に用いる場合（低並列実行モード）は並列度は“２”（第２の数）とされる。命令コードＯＰは各種命令のコードを示す。なお、並列度選択コードＰＳの内容はプログラム制御部４Ａにおいて予め決定されている。
【００２９】
プログラム制御部４Ａはデコード段階において、並列度選択コードＰＳが“２”（低並列実行モード）で、かつデコード結果がＡＤＤ命令，ＳＵＢ命令等の並列度が“４”の高並列命令の場合は、当該高並列命令のデコードサイクル中にＮＯＰ（No Operation；未実行命令）フラグＮＦ（図示せず）を“１”にセットするとともに、プログラムカウンタＰＣをインクリメントすることなく維持し、高並列命令の直後のサイクルでＮＯＰ命令を指示する命令コードＯＰを出力する。
【００３０】
演算器選択信号出力部２３は並列度選択コードＰＳが“２”で、かつ命令コードＯＰがＡＤＤ命令，ＳＵＢ命令等の並列度が“４”の高並列命令を指示する場合は、当該高並列命令を、並列度が“２”で処理可能な第１及び第２の部分並列命令を分割し、次のサイクルから２サイクルかけて第１及び第２の部分並列命令を指示する演算命令選択信号ＯＰＳを並列演算器３に出力する。
【００３１】
メモリ制御信号生成部２４はプログラム制御部４Ａより得られるソース／デスティネーションコードＳＤＣに基づき、読み出し及び書き込みに関するメモリ制御信号ＭＣＳをデータ保持手段１に出力する。この際、データ保持手段１より読み出したソースデータが一時記憶部２１に保存されたり、一時記憶部２１に保存した演算結果データをデータ保持手段１に格納したりする。
【００３２】
一時記憶部２１はデータ保持手段１，並列演算器３間のデータ授受を行うべく、データ保持手段１あるいは並列演算器３より得られたデータを一時的に記憶する。そして、一時記憶部２１は、演算器選択信号出力部２３と同様、並列度選択コードＰＳが“２”で、かつ命令コードＯＰがＡＤＤ命令，ＳＵＢ命令等の並列度が“４”の高並列命令を指示する場合は、当該高並列命令に替えて上記した第１及び第２の部分並列命令が生成されることを認識し、一時記憶しているソースデータを、第１及び第２の部分並列命令に対応するように第１及び第２の部分ソースデータに分割し、次のサイクルから２サイクルかけて第１及び第２の部分並列命令に対応する第１及び第２の部分ソースデータを並列演算器３に出力する。
【００３３】
＜4SIMD実行＞
図４は4SIMDに対応するプログラム例等を示す説明図である。図４(a) に示すように、プログラムは高並列命令である命令ＣＭ１及びＣＭ２からなり、命令ＣＭ１は４つのＦＬＭ１０〜１３に対する並列加算命令（ＡＤＤ）であり、命令ＣＭ２は４つのＦＬＭ１０〜１３に対する並列減算命令（ＳＵＢ）である。
【００３４】
4SIMDの場合、同図(b) に示すように、プログラムカウンタＰＣの“０”及び“１”に対応して命令ＣＭ１及び命令ＣＭ２が記述され、第１〜第５サイクルにおいて命令ＣＭ１が実行され、第２〜第６サイクルにおいて命令ＣＭ２が実行される。１つの命令に対応してフェッチ（Ｆ）、デコード（Ｄ），メモリ読み出し（Ｒ）、演算実行（Ｅ）及びメモリ書き込み（Ｗ）の処理がそれぞれ１サイクル単位で行われる結果、命令ＣＭ１及び命令ＣＭ２はパイプライン処理される。
【００３５】
同図(c) に示すように、命令ＣＭ１は４つの命令ＣＭ１ａ〜ＣＭ１ｄからなり、例えば、命令ＣＭ１ａはＦＬＭ１０（図中、ＦＬＭ０）の０番地のソースデータと、ＦＬＭ１０の１番地のソースデータとの和を、ＦＬＭ１０のソースデータの２番地のアドレスに書き込むことを意味する。命令ＣＭ１ｂ〜ＣＭ１ｄの処理も同様に、ＦＬＭ１１〜１３に対して行われる加算命令を意味する。なお、「ＦＬＭｉ［ｊ］」において、ｉはＦＬＭ１ｉを意味し、ｊは該当ＦＬＭ１ｉのアドレスを意味する。
【００３６】
同様にして、命令ＣＭ２は４つの命令ＣＭ２ａ〜ＣＭ２ｄからなり、例えば、命令ＣＭ２ａはＦＬＭ１０（図中、ＦＬＭ０）の０番地のソースデータと、ＦＬＭ１０の１番地のソースデータとの差を、ＦＬＭ１０のソースデータの３番地のアドレスに書き込むことを意味する。命令ＣＭ２ｂ〜ＣＭ２ｄの処理も同様に、ＦＬＭ１１〜１３に対して行われる減算命令を意味する。
【００３７】
図５は実施の形態１のデータ処理装置による図４で示した命令ＣＭ１及び命令ＣＭ２を4SIMD（並列度“４”）で実行する処理内容を示すタイミング図である。以下、同図を参照して、その実行内容をサイクル単位で説明する。
【００３８】
（１サイクル目）
プログラムカウンタＰＣが初期値“０”から開始され、 命令メモリである命令保持手段５から０番地の命令ＣＭ１をプログラム制御部４Ａでフェッチする。また、並列度選択コードＰＳは4SIMDである並列度“４”で固定される。
【００３９】
（２サイクル目）
プログラムカウンタＰＣが“１”にインクリメントされ、プログラム制御部４Ａが命令ＣＭ１の命令コードをデコードする。そして、デコード結果として、加算命令ＡＤＤを指示する命令コードＯＰと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」（ＦＬＭ１０〜１３すべての０番地と１番地）及びデスティネーションデータの格納場所である「ＦＬＭ（２）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、並列度選択コードＰＳが“４”であるため、ＮＯＰフラグＮＦが“０”（“Ｌ”）を維持する。
【００４０】
そして、シーケンス変換部２Ａ内において、演算器選択信号出力部２３及び一時記憶部２１は並列度選択コードＰＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２４はソース／デスティネーションコードＳＤＣを入力する。上述したように、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し読み出しイネーブル状態（“Ｈ”（“１”））にし、かつ、ＦＬＭ１０〜１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【００４１】
そして、命令保持手段５の１番地の命令ＣＭ２がプログラム制御部４Ａにフェッチされる。
【００４２】
（３サイクル目）
プログラムカウンタＰＣが“２”にインクリメントされ、プログラム制御部４Ａが命令ＣＭ２の命令コードをデコードする。そして、デコード結果として、減算命令ＳＵＢを指示する命令コードＯＰと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（３）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、並列度選択コードＰＳが“４”であるため、ＮＯＰフラグＮＦが“０”を維持する。
【００４３】
そして、シーケンス変換部２Ａ内において、演算器選択信号出力部２３及び一時記憶部２１は並列度選択コードＰＳ及び新たな命令コードＯＰを入力し、メモリ制御信号生成部２４は新たなソース／デスティネーションコードＳＤＣを入力する。上述したように、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し読み出しイネーブル状態（“Ｈ”（“１”））にし、かつ、ＦＬＭ１０〜１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【００４４】
さらに、シーケンス変換部２Ａ内の演算器選択信号出力部２３は、２サイクル目で認識した加算命令ＡＤＤを指示する演算命令選択信号ＯＰＳ及び２サイクル目に一時記憶部２１に取り込んだソースデータを並列演算器３内のＦＰＵ３０〜３３に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ０Ｉ００（ＦＬＭ０［０］），Ｄ０Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ０Ｉｍｎ」（ｍ＝０〜３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【００４５】
（４サイクル目）
プログラムカウンタＰＣが“３”にインクリメントされ、ＮＯＰフラグＮＦが“０”を維持する。
【００４６】
シーケンス変換部２Ａ内の演算器選択信号出力部２３は、３サイクル目で認識した減算命令ＳＵＢを指示する演算命令選択信号ＯＰＳ及び３サイクル目で一時記憶部２１に取り込んだソースデータを並列演算器３内のＦＰＵ３０〜３３に出力する。例えば、ＦＰＵ３０に対しては減算命令ＳＵＢとソースデータ（Ｄ１Ｉ００（ＦＬＭ０［０］），Ｄ１Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ１Ｉｍｎ」（ｍ＝０〜３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【００４７】
そして、並列演算器３内のＦＰＵ３０〜３３は対応するソースデータの加算命令ＡＤＤを並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ０Ｉ００，Ｄ０Ｉ０１）の加算演算を行い、ＦＰＵ３０〜３３における加算結果ＤＯ００〜ＤＯ０３が一時記憶部２１に出力される。
【００４８】
（５サイクル目）
プログラムカウンタＰＣが“４”にインクリメントされ、ＮＯＰフラグＮＦが“０”を維持する。
【００４９】
並列演算器３内のＦＰＵ３０〜３３は対応するソースデータの減算命令ＳＵＢを並列に実行する。例えば、ＦＰＵ３０は減算命令ＳＵＢに従い２つのソースデータ（Ｄ１Ｉ００，Ｄ１Ｉ０１）の減算演算を行い、ＦＰＵ３０〜３３における減算結果Ｄ１１０〜Ｄ１１３が一時記憶部２１に出力される。
【００５０】
そして、シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し書き込みイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０〜１３それぞれの２番地をデスティネーションデータとして、一時記憶部２１に取り込んだ加算結果ＤＯ００〜ＤＯ０３を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１０〜１３の２番地に加算結果ＤＯ００〜ＤＯ０３が書き込まれる。
【００５１】
（６サイクル目）
プログラムカウンタＰＣが“５”にインクリメントされ、ＮＯＰフラグＮＦが“０”を維持する。
【００５２】
そして、シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し書き込みイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０〜１３それぞれの３番地をデスティネーションデータとして、一時記憶部２１に取り込んだ減算結果ＤＯ１０〜ＤＯ１３を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１０〜１３の３番地に加算結果ＤＯ１０〜ＤＯ１３が書き込まれる。
【００５３】
＜2SIMD実行＞
図６は2SIMDに対応するプログラム例等を示す説明図である。図６(a) に示すように、プログラムは4SIMDの場合と同一の命令ＣＭ１及びＣＭ２からなり、命令ＣＭ１は４つのＦＬＭ１０〜１３に対する並列加算命令（ＡＤＤ）であり、命令ＣＭ２は４つのＦＬＭ１０〜１３に対する並列減算命令（ＳＵＢ）である。
【００５４】
2SIMDの場合、同図(b) に示すように、プログラムカウンタＰＣの“０”（“０”(S)）及び“１”（“１”(S)）に対応して命令ＣＭ１及び命令ＣＭ２が記述され、第１〜第６サイクルにおいて命令ＣＭ１が実行され、第３〜第８サイクルにおいて命令ＣＭ２が実行される。１つの命令に対応してフェッチ（Ｆ）、デコード（Ｄ），メモリ読み出し（Ｒ）、演算実行（Ｅ，Ｅ（２サイクル））及びメモリ書き込み（Ｗ）の処理がそれぞれ１サイクル単位で行われる結果、命令ＣＭ１及び命令ＣＭ２はパイプライン処理される。そして、2SIMDで処理可能にすべく、プログラムカウンタＰＣが“０”，“１”それぞれにおいてインクリメントされることなくＮＯＰ命令（“０”(S)，“１”(S)）が割り当てられる。
【００５５】
同図(c) に示すように、命令ＣＭ１は４つの命令ＣＭ１ａ〜ＣＭ１ｄからなり、命令ＣＭ２は４つの命令ＣＭ２ａ〜ＣＭ２ｄからなる。
【００５６】
図７は2SIMDの仮想構成を示す説明図である。同図に示すように、２つのＦＰＵ３０，３１のみを有する並列演算器６を仮想して実行させるのが、並列度選択コードＰＳを“２”とした低並列実行モードである。
【００５７】
図８は実施の形態１のデータ処理装置による図６で示した命令ＣＭ１及び命令ＣＭ２を2SIMD（並列度２）で実行する処理内容を示すタイミング図である。この場合、並列演算器３内におけるＦＰＵ３０及び３１からなる減縮並列演算部３ａのみで演算を行う。以下、同図を参照して、その実行内容をサイクル単位で説明する。
【００５８】
（１サイクル目）
プログラムカウンタＰＣが初期値“０”から開始され、 命令メモリである命令保持手段５から０番地の命令ＣＭ１をプログラム制御部４Ａでフェッチする。また、並列度選択コードＰＳは2SIMD（低並列実行モード）である並列度“２”で固定される。
【００５９】
（２サイクル目）
プログラム制御部４Ａが命令ＣＭ１の命令コードをデコードする。加算命令ＡＤＤを指示する命令コードＯＰと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（２）」を指示するソース／デスティネーションコードＳＤＣを出力する。
【００６０】
また、並列度選択コードＰＳが“２”であるため、ＮＯＰフラグＮＦが“１”にセットされ、プログラムカウンタＰＣはインクリメントされることなく“０”を維持する。したがって、新たな命令のフェッチは行われない。
【００６１】
そして、シーケンス変換部２Ａ内において、演算器選択信号出力部２３及び一時記憶部２１は並列度選択コードＰＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２４はソース／デスティネーションコードＳＤＣを入力する。
【００６２】
一時記憶部２１及び演算器選択信号出力部２３は、並列度選択コードＰＳが“２”で、命令コードＯＰが指示する加算命令ＡＤＤが4SIMD対応の高並列命令であるため、2SIMDで実行可能にすべく、命令ＣＭ１ａ〜ＣＭ１ｄからなる高並列命令ＣＭ１を、命令ＣＭ１ａ及び命令ＣＭ１ｂからなる第１の部分加算命令（部分並列命令）と、命令ＣＭ１ｃ及び命令ＣＭ１ｄからなる第２の部分加算命令とに分割する。
【００６３】
一方、上述したように、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し読み出しイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０〜１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【００６４】
（３サイクル目）
プログラムカウンタＰＣが“１”にインクリメントされ、プログラム制御部４ＡはＮＯＰ命令を指示する命令コードＯＰを出力する。このＮＯＰ命令は命令ＣＭ１のＡＤＤ命令直後に挿入されることにより、上述した第１及び第２の部分加算命令を支障無く実行可能にする１サイクル分の時間的余裕を設けている。一時記憶部２１及び演算器選択信号出力部２３はＮＯＰ命令に従い新たな命令に対する実質的な処理は実行しない。なお、ＮＯＰフラグＮＦは“０”にリセットされる。
【００６５】
さらに、シーケンス変換部２Ａ内の演算器選択信号出力部２３は、２サイクル目で分割した第１の部分加算命令を指示する演算命令選択信号ＯＰＳを並列演算器３内のＦＰＵ３０及びＦＰＵ３１に与えるとともに、第１の部分加算命令に対応して一時記憶部２１に取り込んだソースデータの一部を並列演算器３内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ０Ｉ００（ＦＬＭ０［０］），Ｄ０Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ０Ｉｍｎ」（ｍ＝０，１，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【００６６】
そして、命令保持手段５の１番地の命令ＣＭ２がプログラム制御部４Ａにフェッチされる。
【００６７】
（４サイクル目）
プログラム制御部４Ａが命令ＣＭ２の命令コードをデコードする。そして、デコード結果として減算命令ＳＵＢを指示する命令コードＯＰと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（３）」を指示するソース／デスティネーションコードＳＤＣを出力する。
【００６８】
また、並列度選択コードＰＳが“２”であるため、ＮＯＰフラグＮＦが“１”にセットされ、プログラムカウンタＰＣはインクリメントされることなく“１”を維持する。したがたって、新たな命令のフェッチは行われない。
【００６９】
そして、シーケンス変換部２Ａ内において、演算器選択信号出力部２３及び一時記憶部２１は並列度選択コードＰＳ及び新たな命令コードＯＰを入力し、メモリ制御信号生成部２４は新たなソース／デスティネーションコードＳＤＣを入力する。上述したように、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し読み出しイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０〜１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【００７０】
一時記憶部２１及び演算器選択信号出力部２３は、並列度選択コードＰＳが“２”で、命令コードＯＰが指示する減算命令ＳＵＢが4SIMD対応であるため、2SIMDで実行可能にすべく、命令ＣＭ２ａ〜ＣＭ２ｄからなる高並列命令ＣＭ２を、命令ＣＭ２ａ及び命令ＣＭ２ｂからなる第１の部分減算命令（部分並列命令）と、命令ＣＭ２ｃ及び命令ＣＭ２ｄからなる第２の部分減算命令とに分割する。
【００７１】
さらに、シーケンス変換部２Ａ内の演算器選択信号出力部２３は、２サイクル目で認識した第２の部分加算命令を指示する演算命令選択信号ＯＰＳを並列演算器３内のＦＰＵ３０及び３１に与えるとともに、第２の部分加算命令に対応して一時記憶部２２に取り込んだソースデータの一部を並列演算器３内のＦＰＵ３０及び３１に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ０Ｉ２０（ＦＬＭ２［０］），Ｄ０Ｉ２２（ＦＬＭ２［２］））を出力する。すなわち、「Ｄ０Ｉｍｎ」（ｍ＝２，３，ｎ＝０，２）に対してＦＬＭ２ｍのｎ番地のデータがソースデータとなる。
【００７２】
そして、並列演算器３内のＦＰＵ３０，３１は、第１の部分加算命令に従い対応するソースデータの加算命令ＡＤＤを並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ０Ｉ００，Ｄ０Ｉ０１）の加算演算を行い、ＦＰＵ３０，３１における加算結果ＤＯ００，ＤＯ０１が一時記憶部２１に出力される。
【００７３】
（５サイクル目）
プログラムカウンタＰＣが“２”にインクリメントされ、プログラム制御部４ＡはＮＯＰ命令を指示する命令コードＯＰを出力する。このＮＯＰ命令は命令ＣＭ２のＳＵＢ命令直後に挿入されることにより、上述した第１及び第２の部分減算命令を支障無く実行可能にする１サイクル分の時間的余裕を設けている。一時記憶部２１及び演算器選択信号出力部２３はＮＯＰ命令に従い新たな命令に対する実質的な処理は実行しない。なお、ＮＯＰフラグＮＦは“０”にリセットされる。
【００７４】
さらに、シーケンス変換部２Ａ内の演算器選択信号出力部２３は、４サイクル目で分割した第１の部分減算命令を指示する演算命令選択信号ＯＰＳを並列演算器３内のＦＰＵ３０及びＦＰＵ３１に与えるとともに、第１の部分減算命令に対応して一時記憶部２１に取り込んだソースデータの一部を並列演算器３内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては減算命令ＳＵＢとソースデータ（Ｄ１Ｉ００（ＦＬＭ０［０］），Ｄ１Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ１Ｉｍｎ」（ｍ＝０，１，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【００７５】
そして、並列演算器３内のＦＰＵ３０及び３１は、第２の部分加算命令に従い対応するソースデータの加算命令ＡＤＤを並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ０Ｉ２０，Ｄ０Ｉ２１）の加算演算を行い、ＦＰＵ３０及び３１における加算結果ＤＯ０２，ＤＯ０３が一時記憶部２１に出力される。
【００７６】
（６サイクル目）
プログラムカウンタＰＣが“３”にインクリメントされ、ＮＯＰフラグＮＦが“０”を維持する。
【００７７】
シーケンス変換部２Ａ内の演算器選択信号出力部２３は、４サイクル目で分割した第２の部分減算命令を指示する演算命令選択信号ＯＰＳを並列演算器３内のＦＰＵ３０及び３１に与えるとともに、第２の部分減算命令に対応して一時記憶部２１に取り込んだソースデータの一部を並列演算器３内のＦＰＵ３０及び３１に出力する。例えば、ＦＰＵ３０に対しては減算命令ＳＵＢとソースデータ（Ｄ１Ｉ２０（ＦＬＭ２［０］），Ｄ１Ｉ２１（ＦＬＭ２［１］））を出力する。すなわち、「Ｄ１Ｉｍｎ」（ｍ＝２，３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【００７８】
そして、並列演算器３内のＦＰＵ３０，３１は、第１の部分減算命令に従い対応するソースデータの減算命令ＳＵＢを並列に実行する。例えば、ＦＰＵ３０は減算命令ＳＵＢに従い２つのソースデータ（Ｄ１Ｉ００，Ｄ１Ｉ０１）の減算演算を行い、ＦＰＵ３０，３１における減算結果ＤＯ１０，ＤＯ１１が一時記憶部２１に出力される。
【００７９】
さらに、シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し書き込みイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０〜１３それぞれの２番地をデスティネーションデータとして、一時記憶部２２に取り込んだ加算結果ＤＯ００〜ＤＯ０３を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１０〜１３の２番地に加算結果ＤＯ００〜ＤＯ０３が書き込まれる。
【００８０】
（７サイクル目）
プログラムカウンタＰＣが“４”にインクリメントされ、ＮＯＰフラグＮＦが“０”を維持する。
【００８１】
並列演算器３内のＦＰＵ３０及び３１は、第２の部分減算命令に従い対応するソースデータの減算命令ＳＵＢを並列に実行する。例えば、ＦＰＵ３０は減算命令ＳＵＢに従い２つのソースデータ（Ｄ１Ｉ２０，Ｄ１Ｉ２１）の減算演算を行い、ＦＰＵ３０及び３１における減算結果ＤＯ１２，ＤＯ１３が一時記憶部２１に出力される。
【００８２】
（８サイクル目）
プログラムカウンタＰＣが“５”にインクリメントされ、ＮＯＰフラグＮＦが“０”を維持する。
【００８３】
シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３に関し書き込みイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０〜１３それぞれの３番地をデスティネーションデータとして、一時記憶部２２に取り込んだ減算結果Ｄ０１０〜ＤＯ１３を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１０〜１３の３番地に加算結果ＤＯ１０〜ＤＯ１３が書き込まれる。
【００８４】
図８に示すように、並列度選択コードＰＳが“２”の場合においても、ＦＬＭ１０〜１３へのアクセスは並列度“４”で行うことにより、読み出し書き込み動作を効率的に行うことができる。
【００８５】
＜効果＞
上記のように実施の形態１のデータ処理装置では、4SIMDによる処理と2SIMDによる処理が共に実行可能なスケーラブルなH/W構成を実現している。この際、図４及び図６の比較から明らかなように、4SIMD及び2SIMDいずれの対応のプログラム（マイクロコード）も全く同一の命令で記述することができるため、プログラム（命令コード）開発期間の向上に伴い、S/W開発期間を短くすることができる効果を奏する。すなわち、実施の形態１のデータ処理装置は4SIMD及び2SIMDに対応し、かつ、プログラムの開発期間を短縮化を図ることができる効果を奏する。
【００８６】
以下、この点を従来技術と比較して説明する。図２０は図１に対応する従来の一般的なデータ処理装置の全体構成の概略を示すブロック図である。同図に示すように、データ保持手段５１（５１Ａ，５１Ｂ）と並列演算器５３（５３Ａ，５３Ｂ）とのデータの授受の制御がシーケンス変換部５２によって行われる。シーケンス変換部５２はプログラム制御部５４からのデコード結果に基づき制御動作を行う。命令保持手段５５にはプログラム等に記載された命令を保持しており、プログラム制御部５４は命令保持手段５より読み出した命令を解読し、デコード結果を出力する。
【００８７】
図２１は図２０で示した全体構成において4SIMD対応のデータ処理装置のデータ保持手段５１Ａ及び並列演算器５３Ａの構成を示す説明図である。同図に示すように、データ保持手段５１Ａは４つのＦＬＭ７０〜７３から構成され、並列演算器５３Ａは４つのＦＰＵ８０〜８３から構成されることにより、4SIMD対応の構成としている。しかし、4SIMD専用構成であるためシーケンス変換部５２Ａは単純にＦＬＭ７０〜７３とＦＰＵ８０〜８３とを対応づける制御機能しか有していない。
【００８８】
図２２は図２０で示した全体構成において2SIMD対応のデータ処理装置のデータ保持手段５１Ｂ及び並列演算器５３Ｂの構成を示す説明図である。同図に示すように、データ保持手段５１Ｂは２つのＦＬＭ７５，７６から構成され、並列演算器５３Ｂは２つのＦＰＵ８５，８６から構成されることにより、2SIMD対応の構成としている。しかし、2SIMD専用であるためシーケンス変換部５２Ｂは単純にＦＬＭ７５，７６とＦＰＵ８５，８６とを対応づける制御機能しか有していない。
【００８９】
図２１で示した4SIMD対応の構成で図４で示した高並列命令（命令ＣＭ１及び命令ＣＭ２）からなるプログラムを実行する場合、図５で示すような処理と同様な内容で実行される。
【００９０】
図２３は、図２２で示した2SIMD対応の構成で図４で示したプログラムと等価なプログラム例等を示す説明図である。図２３(a) に示すように、プログラムは4SIMDの場合と大きく異なり、命令ＣＭ１及びＣＭ２に替えて、並列度が“２”の低並列命令である命令ＣＭ２１〜ＣＭ２４で構成する必要がある。命令ＣＭ２１及びＣＭ２２は２つのＦＬＭ７５，７６に対する並列加算命令（ＡＤＤ）であり、命令ＣＭ２３及びＣＭ２４は２つのＦＬＭ７５，７６に対する並列減算命令（ＳＵＢ）である。
【００９１】
2SIMDの場合、同図(b) に示すように、プログラムカウンタＰＣの“０”〜“３”に対応して命令ＣＭ２１〜ＣＭ２４が記述され、第１〜第５サイクルにおいて命令ＣＭ２１が実行され、第２〜第６サイクルにおいて命令ＣＭ２２が実行され、第３〜第７サイクルにおいて命令ＣＭ２３が実行され、第４〜第８サイクルにおいて命令ＣＭ２４が実行される。１つの命令に対応してフェッチ（Ｆ）、デコード（Ｄ），メモリ読み出し（Ｒ）、演算実行（Ｅ）及びメモリ書き込み（Ｗ）の処理がそれぞれ１サイクル単位で行われる結果、命令ＣＭ２１〜ＣＭ２４はパイプライン処理される。
【００９２】
同図(c) に示すように、命令ＣＭ２１は２つの命令ＣＭ２１ａ，ＣＭ２１ｂからなり、命令ＣＭ２２は２つの命令ＣＭ２２ａ，ＣＭ２２ｂからなり、命令ＣＭ２２は２つの命令ＣＭ２３ａ，ＣＭ２３ｂからなり、命令ＣＭ２４は２つの命令ＣＭ２４ａ，ＣＭ２４ｂからなる。
【００９３】
このように、4SIMD及び2SIMD対応のプログラム内容は大幅に異なるため、4SIMD及び2SIMDが実行可能なスケーラブルなH/W構成のデータ処理装置を単純に実現しても、実施の形態１のような効果は得ることができない。
【００９４】
図９は図４で示したプログラムに対応する、実施の形態１のデータ保持手段１内におけるＦＬＭ１０〜１３内のメモリ割り当てを模試的に示す説明図である。同図に示すように、ＦＬＭ１０の０〜３番地にはデータｘ０〜ｘ３を格納し、ＦＬＭ１１の０〜３番地にはデータｙ０〜ｙ３を格納し、ＦＬＭ１２の０〜３番地にはデータｚ０〜ｚ３を格納し、ＦＬＭ１１の０〜３番地にはｗ０〜ｗ３を格納することにより、ＦＬＭ１０〜１３の番地とデータとの対応関係が明確になっている。
【００９５】
図２４は図２３で示したプログラムに対応する、図２２で示したデータ保持手段５１Ｂ内におけるＦＬＭ７５，７６内のメモリ割り当てを模試的に示す説明図である。同図に示すように、ＦＬＭ７５の０，２，４，６番地にはデータｘ０，ｘ１，ｘ２，ｘ３を格納し、ＦＬＭ７５の１，３，５，７番地にデータｚ０，ｚ１，ｚ２，ｚ３を格納し、ＦＬＭ７６の０，２，４，６番地にはデータｙ０，ｙ１，ｙ２，ｙ３を格納し、ＦＬＭ７６の１，３，５，７番地にデータｗ０，ｗ１，ｗ２，ｗ３を格納する構成を採る必要がある。
【００９６】
このように、SIMD及び2SIMDが実行可能なスケーラブルなH/W構成のデータ処理装置を単純に実現した場合、データ保持手段５１Ｂ内のＦＬＭ７５，７６内のメモリ割り当ても複雑化してしまう問題点もある。
【００９７】
一方、実施の形態１のデータ処理装置は、4SIMD及び2SIMD対応のプログラム記述内容は同一で、かつ、データ保持手段１内のＦＬＭ１０〜１３内のメモリ割り当ても共通、かつ簡単に行うことができる。
【００９８】
さらに、2SIMD構成の場合でも、並列演算命令については、プログラムのステップ数が4SIMDと同じ半分で済ますことができるため、命令保持手段５のメモリサイズを削減できるという効果も奏する。
【００９９】
このように、実施の形態１のデータ処理装置のシーケンス変換部２Ａは、並列度選択コードＰＳが“２”の低並列実行モード時に、高並列命令を並列度が“２”で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器３を並列度“２”で実行制御するため、共通の高並列命令に対して高並列実行モード（並列度選択コードＰＳが“４”）及び低並列実行モードの実行制御が可能である。
【０１００】
その結果、実施の形態１のデータ処理装置は、高並列実行モード及び低並列実行モードそれぞれについて共通のプログラムを利用できるため、プログラムの開発期間を短縮できる効果を奏する。
【０１０１】
さらに、プログラム制御部４Ａは、低並列実行モード時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするためのＮＯＰ命令を指示するデコード結果を生成するため、シーケンス制御部２Ａ内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
【０１０２】
上述したように、実施の形態１のデータ処理装置による2SIMD用のプログラム実行方式において、図８で示したように、シーケンス変換部２Ａによって実現されるシーケンス機能は、プログラム制御部４Ａより得られるデコード結果に基づき、並列度が“４”の高並列命令を並列度が“２”で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するため、高並列命令からなるプログラムを、並列度が“２”の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
【０１０３】
さらに、プログラム制御部４Ａによる解読機能は、低並列実行モードの際、高並列命令直後の命令のデコード結果として、複数の部分並列命令に対応するＮＯＰ命令を指示するデコード結果を生成して、複数の部分並列命令を時間的に実行可能にするため、シーケンス変換部２Ａによるシーケンス機能にて高並列命令を複数の部分並列命令を分割して実行させてもプログラムの実行に支障をきたすことはない。
【０１０４】
さらに、図８で示したプログラム実行方式では、シーケンス変換部２Ａによって実現されるシーケンス機能は、複数の部分並列命令を、データ保持機能に関し並列度“４”を満足させながら実行することにより、上述したようにメモリ割り当ての簡略化を図ることができる。
【０１０５】
＜他の態様＞
図１０は実施の形態１のデータ処理装置による図６で示した命令ＣＭ１及び命令ＣＭ２を2SIMD（並列度２）で実行する他の処理内容を示すタイミング図である。以下、同図を参照して、図８で示したタイミング図と処理内容と異なる点のみ説明する。
【０１０６】
（２サイクル目）
ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１に関してのみ読み出しイネーブル状態にし、かつ、ＦＬＭ１０，１１それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【０１０７】
（３サイクル目）
２サイクル目で受けたソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３に関してのみ読み出しイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【０１０８】
（４サイクル目）
ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し読み出しイネーブル状態にし、かつ、ＦＬＭ１０，１１それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【０１０９】
（５サイクル目）
４サイクル目で受けたソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し読み出しイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣを出力する。
【０１１０】
さらに、シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１０，１１それぞれの２番地をデスティネーションデータとして、一時記憶部２２に取り込んだ加算結果ＤＯ００，ＤＯ０１を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１０，１１の２番地に加算結果ＤＯ００，ＤＯ０１が書き込まれる。
【０１１１】
（６サイクル目）
シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１２，１２それぞれの２番地をデスティネーションデータとして、一時記憶部２２に取り込んだ加算結果ＤＯ０２，ＤＯ０３を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１２，１３の２番地に加算結果ＤＯ０２，ＤＯ０３が書き込まれる。
【０１１２】
（７サイクル目）
シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１０，１１それぞれの３番地をデスティネーションデータとして、一時記憶部２２に取り込んだ減算結果ＤＯ１０，ＤＯ１１を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１０，１１の３番地に減算結果ＤＯ１０，ＤＯ１１が書き込まれる。
【０１１３】
（８サイクル目）
シーケンス変換部２Ａ内において、メモリ制御信号生成部２４は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの３番地をデスティネーションデータとして、一時記憶部２２に取り込んだ減算結果ＤＯ１２，ＤＯ１３を書き込むためのメモリ制御信号ＳＭＣを出力する。その結果、ＦＬＭ１２，１３の２番地に減算結果ＤＯ１２，ＤＯ１３が書き込まれる。
【０１１４】
このように、データ保持手段１から一時記憶部２１への読み出し、書き込みも、2SIMDに併せて、２つのＦＬＭ単位（２メモリバンク他に）で行う態様も可能である。
【０１１５】
図１０を用いて説明したように、並列度選択コードＰＳが“２”の場合に併せて、ＦＬＭ１０〜１３へのアクセスも並列度“２”で行うことにより、並列演算器３及びデータ保持手段１に対する並列度を“２”で統一した制御が可能となる。
【０１１６】
また、並列度“４”の高並列実行モードと並列度“２”の低並列実行モードとを切り換えることにより、高並列と低並列の比を２：１にした性能とコストのバランスの良い利用が可能となる。
【０１１７】
＜実施の形態２＞
図１１はこの発明の実施の形態２であるデータ処理装置のデータ保持手段１及び並列演算器３の構成を示す説明図である。同図に示すように、データ保持手段１は４つのＦＬＭ１０〜１３から構成され、並列演算器３は４つのＦＰＵ３０〜３３から構成されることにより、基本構成を4SIMDとしている。そして、データ保持手段１，並列演算器３間のデータの授受の制御はシーケンス変換部２Ｂによって行われる。シーケンス変換部２Ｂは、後に詳述するが、並列演算器３内においてＦＰＵ３０，３１からなる減縮並列演算部３ａと、ＦＰＵ３２，ＦＰＵ３３からなる減縮並列演算部３ｂとを選択的に制御する機能を有している。
【０１１８】
図１２は図１１で示したシーケンス変換部２Ｂの詳細を示すブロック図である。同図に示すように、シーケンス変換部２Ｂは一時記憶部２１、演算器選択信号出力部２５及びメモリ制御信号生成部２６より構成される。
【０１１９】
プログラム制御部４Ｂはプログラム内の命令を順次解読して、デコード結果として演算器選択コードＯＳ、命令コードＯＰ及びソース／デスティネーションコードＳＤＣを出力する。
【０１２０】
演算器選択信号出力部２５は並列演算器３内の減縮並列演算部３ａ用に演算命令選択信号ＯＰＳ１を出力し、減縮並列演算部３ｂ用に演算命令選択信号ＯＰＳ２を出力する。同様にして、メモリ制御信号生成部２６はデータ保持手段１内のＦＰＵ３０，３１用にメモリ制御信号ＳＭＣ１を出力し、ＦＰＵ３２，３３用にメモリ制御信号ＳＭＣ２を出力する。
【０１２１】
シーケンス変換部２Ｂ内の一時記憶部２１及び演算器選択信号出力部２５はプログラム制御部４Ｂより演算器選択コードＯＳ及び命令コードＯＰを受ける。演算器選択コードＯＳは並列演算器３内におけるＦＰＵ３０〜３３全て、減縮並列演算部３ａ、及び減縮並列演算部３ｂのうちいずれを選択するかを示すコードであり、ＦＰＵ３０〜３３のうち全てを並列演算に用いる場合は演算器選択コードＯＳは“０”とされ、減縮並列演算部３ａ用いる場合は演算器選択コードＯＳ“１”とされ、減縮並列演算部３ｂを用いる場合は演算器選択コードＯＳは“２”とされる。なお、演算器選択コードＯＳの内容はデコードする命令によって決定される。すなわち、デコード対象の命令が並列度“４”を要求する高並列命令である場合は演算器選択コードＯＳが“０”とされ、命令が並列度“２”を要求する低並列命令である場合は演算器選択コードＯＳが“１”あるいは“２”とされる。
【０１２２】
メモリ制御信号生成部２６はプログラム制御部４Ｂより得られるソース／デスティネーションコードＳＤＣに基づき、読み出し及び書き込みに関するメモリ制御信号ＳＭＣ１及びＳＭＣ２をデータ保持手段１に出力する。この際、データ保持手段１より読み出したソースデータを一時記憶部２１に保存したり、一時記憶部２１に保存した演算結果データを一時記憶部２１に格納したりする。
【０１２３】
一時記憶部２１はデータ保持手段１，並列演算器３間のデータ授受を行うべく、データ保持手段１あるいは並列演算器３より得られたデータを一時的に記憶する。
【０１２４】
＜4SIMD実行＞
図１３は実施の形態２のデータ処理装置に関し、4SIMDに対応するプログラム例等を示す説明図である。図１３(a) に示すように、プログラムは命令ＣＭ３１〜ＣＭ３３からなり、命令ＣＭ３１は２つのＦＬＭ１０，１１に対しＦＰＵ３０，３１を用いた並列度“２”の並列加算命令（ＡＤＤ１）であり、命令ＣＭ３２は２つのＦＬＭ１２，１３に対しＦＰＵ３２，３３を用いた並列度“２”の並列減算命令（ＳＵＢ２）であり、命令ＣＭ３３は４つのＦＬＭ１０〜１３に対しＦＰＵ３０〜３３を用いた並列度“４”の並列加算命令（ＡＤＤ０）である。
【０１２５】
上述した命令ＣＭ３１，ＣＭ３２は並列度が“２”の低並列命令となり、命令ＣＭ３３は並列度が“４”の高並列命令となる。このように、実施の形態２のデータ処理装置は、4SIMD実行段階において2SIMD対応の低並列命令（ＣＭ３１，ＣＭ３２等）を併せて実行する場合を想定している。
【０１２６】
2SIMD混在4SIMDの命令群を実行する場合、同図(b) に示すように、プログラムカウンタＰＣの“０”〜“２”に対応して命令ＣＭ３１〜ＣＭ３３が記述され、第１〜第５サイクルにおいて命令ＣＭ３１が実行され、第２〜第６サイクルにおいて命令ＣＭ３２が実行され、第３〜第７サイクルにおいて命令ＣＭ３２が実行される。１つの命令に対応してフェッチ（Ｆ）、デコード（Ｄ），メモリ読み出し（Ｒ）、演算実行（Ｅ）及びメモリ書き込み（Ｗ）の処理がそれぞれ１サイクル単位で行われる結果、命令ＣＭ３１〜ＣＭ３３はパイプライン処理される。
【０１２７】
同図(c) に示すように、命令ＣＭ３１は２つの命令ＣＭ３１ａ，ＣＭ３１ｂからなり、例えば、命令ＣＭ３１ａはＦＬＭ１０（図中、ＦＬＭ０）の０番地のソースデータと、ＦＬＭ１０の１番地のソースデータとの和を、ＦＬＭ１０のソースデータの２番地のアドレスに書き込むことを意味する。命令ＣＭ３１ｂの処理も同様にＦＬＭ１１に対して行われる。なお、「ＦＬＭｉ［ｊ］」において、ｉはＦＬＭ１ｉを意味し、ｊは該当ＦＬＭ１ｉのアドレスを意味する。
【０１２８】
同様にして、命令ＣＭ３２は２つの命令ＣＭ３２ａ，ＣＭ３２ｂからなり、例えば、命令ＣＭ３２ａはＦＬＭ１２（図中、ＦＬＭ２）の０番地のソースデータと、ＦＬＭ１２の１番地のソースデータとの差を、ＦＬＭ１２のソースデータの３番地のアドレスに書き込むことを意味する。命令ＣＭ３２ｂの処理も同様にＦＬＭ１３に対して行われる。
【０１２９】
一方、命令ＣＭ３３は４つの命令ＣＭ３３ａ〜ＣＭ３３ｄからなり、例えば、命令ＣＭ３３ａはＦＬＭ１０の０番地のソースデータと、ＦＬＭ１０の１番地のソースデータとの差を、ＦＬＭ１０のソースデータの４番地のアドレスに書き込むことを意味する。命令ＣＭ３３ｂ〜ＣＭ３３ｄの処理も同様に、ＦＬＭ１１〜１３に対して行われる加算命令を意味する。
【０１３０】
図１４は実施の形態２のデータ処理装置による図１３で示した命令ＣＭ３１〜ＣＭ３３を一部2SIMD混在の4SIMD（並列度４）で実行する処理内容を示すタイミング図である。以下、同図を参照して、その実行内容をサイクル単位で説明する。
【０１３１】
（１サイクル目）
プログラムカウンタＰＣが初期値“０”から開始され、 命令メモリである命令保持手段５から０番地の命令ＣＭ３１をプログラム制御部４Ｂでフェッチする。
【０１３２】
（２サイクル目）
プログラムカウンタＰＣが“１”にインクリメントされ、プログラム制御部４Ｂが命令ＣＭ３１の命令コードをデコードする。その結果、プログラム制御部４Ｂは、デコード結果として、加算命令ＡＤＤを指示する命令コードＯＰと、“１”（減縮並列演算部３ａ）を指示する演算器選択コードＯＳと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（２）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、演算器選択コードＯＳが“１”であるため、並列演算器３内の対象はＦＰＵ３０，３１であり、データ保持手段１内の対象はＦＬＭ１０，１１であることが認識される。すなわち、演算器選択コードＯＳはＦＬＭ選択機能を兼ねている。
【０１３３】
そして、シーケンス変換部２Ｂ内において、演算器選択信号出力部２５及び一時記憶部２１は演算器選択コードＯＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２６は演算器選択コードＯＳ及びソース／デスティネーションコードＳＤＣを入力する。上述したように、演算器選択コードＯＳが“１”、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２６は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し読み出しイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０，１１それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣ１を出力する。この際、メモリ制御信号ＳＭＣ２は読み出しディスネーブル（“Ｌ”）を指示する信号となる。
【０１３４】
そして、命令保持手段５の１番地の命令ＣＭ３２がプログラム制御部４Ｂにフェッチされる。
【０１３５】
（３サイクル目）
プログラムカウンタＰＣが“２”にインクリメントされ、プログラム制御部４Ｂが命令ＣＭ３２の命令コードをデコードする。その結果、プログラム制御部４Ｂは、デコード結果として、減算命令ＳＵＢを指示する命令コードＯＰと、“２”（減縮並列演算部３ｂ）を指示する演算器選択コードＯＳと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（３）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、演算器選択コードＯＳが“２”であるため、並列演算器３内の対象はＦＰＵ３２，３３であり、データ保持手段１内の対象はＦＬＭ１２，１３であることが認識される。
【０１３６】
そして、シーケンス変換部２Ｂ内において、演算器選択信号出力部２５及び一時記憶部２１は演算器選択コードＯＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２６は演算器選択コードＯＳ及びソース／デスティネーションコードＳＤＣを入力する。上述したように、演算器選択コードＯＳが“２”で、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２６は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し読み出しイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣ２を出力する。この際、メモリ制御信号ＳＭＣ１は読み出しディスネーブルを指示する信号となる。
【０１３７】
さらに、シーケンス変換部２Ｂ内の演算器選択信号出力部２５は、２サイクル目で認識した加算命令ＡＤＤを指示する演算命令選択信号ＯＰＳ１及び一時記憶部２１に取り込んだソースデータを並列演算器３内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ０Ｉ００（ＦＬＭ０［０］），Ｄ０Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ０Ｉｍｎ」（ｍ＝０，１，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。このとき、演算命令選択信号ＯＰＳ２ディスネール状態となるため、対応のＦＰＵ３２，３３が動作することはない。
【０１３８】
そして、命令保持手段５の２番地の命令ＣＭ３３がプログラム制御部４Ｂにフェッチされる。
【０１３９】
（４サイクル目）
プログラムカウンタＰＣが“３”にインクリメントされ、プログラム制御部４Ｂが命令ＣＭ３３の命令コードをデコードする。その結果、プログラム制御部４Ｂは、デコード結果として、加算命令ＡＤＤを指示する命令コードＯＰと、並列演算器３内のＦＰＵ３０〜３３（“０”）を指示する演算器選択コードＯＳと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（４）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、演算器選択コードＯＳが“０”であるため、並列演算器３内の対象はＦＰＵ３０〜３３であり、データ保持手段１内の対象はＦＬＭ１０〜１３であることが認識される。
【０１４０】
そして、シーケンス変換部２Ｂ内において、演算器選択信号出力部２５及び一時記憶部２１は演算器選択コードＯＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２６は演算器選択コードＯＳ及びソース／デスティネーションコードＳＤＣを入力する。上述したように、演算器選択コードＯＳが“０”で、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２６は、メモリ４バンクであるＦＬＭ１０〜１３すべてを読み出しイネーブル状態にし、かつ、ＦＬＭ１０〜１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２１に取り込むためのメモリ制御信号ＳＭＣ１及びＳＭＣ２を出力する。
【０１４１】
シーケンス変換部２Ｂ内の演算器選択信号出力部２５は、３サイクル目で認識した減算命令ＳＵＢを指示する演算命令選択信号ＯＰＳ２及び一時記憶部２１に取り込んだソースデータを並列演算器３内のＦＰＵ３２，３３に出力する。例えば、ＦＰＵ３２に対しては減算命令ＳＵＢとソースデータ（Ｄ１Ｉ２０（ＦＬＭ２［０］），Ｄ１Ｉ２１（ＦＬＭ２［１］））を出力する。すなわち、「Ｄ１Ｉｍｎ」（ｍ＝２，３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。このとき、演算命令選択信号ＯＰＳ１ディスネール状態となるため、対応のＦＰＵ３０，３１が動作することはない。
【０１４２】
そして、並列演算器３内のＦＰＵ３０，３１は対応するソースデータの加算命令ＡＤＤを並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ０Ｉ００，Ｄ０Ｉ０１）の加算演算を行う。そして、ＦＰＵ３０，３１における加算結果ＤＯ００，ＤＯ０１が一時記憶部２１に出力される。
【０１４３】
（５サイクル目）
プログラムカウンタＰＣが“４”にインクリメントされる。シーケンス変換部２Ｂ内の演算器選択信号出力部２５は、４サイクル目で認識した加算命令ＡＤＤを指示する演算命令選択信号ＯＰＳ１，ＯＰＳ２及び一時記憶部２１に取り込んだソースデータを並列演算器３内のＦＰＵ３０〜３３に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ２Ｉ００（ＦＬＭ０［０］），Ｄ２Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ２Ｉｍｎ」（ｍ＝０〜３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【０１４４】
並列演算器３内のＦＰＵ３２，３３は対応するソースデータの減算命令ＳＵＢを並列に実行する。例えば、ＦＰＵ３２は減算命令ＳＵＢに従い２つのソースデータ（Ｄ１Ｉ２０，Ｄ１Ｉ１１）の減算演算を行う。そして、ＦＰＵ３２，３３における減算結果ＤＯ１２，ＤＯ１３が一時記憶部２１に出力される。
【０１４５】
そして、シーケンス変換部２Ｂ内において、メモリ制御信号生成部２６は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１０，１１それぞれの２番地をデスティネーションデータとして、一時記憶部２１に取り込んだ加算結果ＤＯ００，ＤＯ０１を書き込むためのメモリ制御信号ＳＭＣ１を出力する。その結果、ＦＬＭ１０，１１の２番地に加算結果ＤＯ００，ＤＯ０１が書き込まれる。この際、メモリ制御信号ＳＭＣ２は書き込みディスネーブルを指示する信号となる。
【０１４６】
（６サイクル目）
プログラムカウンタＰＣが“５”にインクリメントされる。並列演算器３内のＦＰＵ３０〜３３は対応するソースデータの加算命令ＡＤＤを並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ２Ｉ００，Ｄ２Ｉ０１）の加算演算を行う。そして、ＦＰＵ３０〜３３における加算結果ＤＯ２０〜ＤＯ２３が一時記憶部２１に出力される。
【０１４７】
そして、シーケンス変換部２Ｂ内において、メモリ制御信号生成部２６は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの３番地をデスティネーションデータとして、一時記憶部２１に取り込んだ減算結果ＤＯ１２，ＤＯ１３を書き込むためのメモリ制御信号ＳＭＣ２を出力する。その結果、ＦＬＭ１２，１３の３番地に減算結果ＤＯ１２，ＤＯ１３が書き込まれる。この際、メモリ制御信号ＳＭＣ１は読み出しディスネーブルを指示する信号となる。
【０１４８】
（７サイクル目）
プログラムカウンタＰＣが“６”にインクリメントされる。シーケンス変換部２Ｂ内において、メモリ制御信号生成部２６は、メモリ４バンクであるＦＬＭ１０〜１３すべてを書き込みイネーブル状態にし、かつ、ＦＬＭ１０〜１３それぞれの４番地をデスティネーションデータとして、一時記憶部２１に取り込んだ減算結果ＤＯ２０〜ＤＯ２３を書き込むためのメモリ制御信号ＳＭＣ１及びＳＭＣ２を出力する。その結果、ＦＬＭ１０〜１３の４番地に加算結果ＤＯ２０〜ＤＯ２３が書き込まれる。
【０１４９】
＜効果＞
このように、実施の形態２のデータ処理装置では、並列度が“２”の命令に対応して、並列演算器３を減縮並列演算部３ａと減縮並列演算部３ｂとのグループに分けて指定することができるため、２Ｄ（２次元処理）のような２成分の演算と３Ｄ（３次元処理）のような４成分の演算を混在して行うことが可能となる効果を奏する。
【０１５０】
例えば、２Ｄと３Ｄの機能を１つの4SIMD専用のデータ処理装置で実現する場合、２Ｄの処理をする時も４つの演算器（ＦＰＵ）を全て動作させてしまう。実施の形態２のデータ処理装置によれば、演算命令選択信号ＯＰＳ１及びＯＰＳ２の一方をディスネーブル状態にすることにより、動作する演算器を選択できるため、不要な演算器を動作させないことに伴い低消費電力化が図れる効果を奏する。
【０１５１】
また、高並列命令の並列度“４”と低並列命令の並列度“２”を併用することにより、高並列と低並列の比を２：１にした性能とコストのバランスの良い利用が可能となる。
【０１５２】
＜実施の形態３＞
図１５はこの発明の実施の形態３であるデータ処理装置のデータ保持手段１及び並列演算器７の構成を示す説明図である。同図に示すように、データ保持手段１は４つのＦＬＭ１０〜１３から構成され、並列演算器７は２つのＦＰＵ３０，３１から構成されることにより、基本構成を2SIMD（並列演算器７の並列度が“２”、データ保持手段１の並列度が“４”）としている。そして、データ保持手段１，並列演算器７間のデータの授受の制御はシーケンス変換部２Ｃによって行われる。
【０１５３】
図１６は図１５で示したシーケンス変換部２Ｃの詳細を示すブロック図である。同図に示すように、シーケンス変換部２Ｃは一時記憶部２７、演算器選択信号出力部２８及びメモリ制御信号生成部２９より構成される。
【０１５４】
プログラム制御部４Ｃはプログラム内の命令を順次解読して、デコード結果として命令コードＯＰ、演算モード選択コードＯＭＳ、ＦＬＭ選択コードＦＭＳ及びソース／デスティネーションコードＳＤＣを出力する。
【０１５５】
演算器選択信号出力部２８は並列演算器３に対し演算命令選択信号ＯＰＳを出力し、メモリ制御信号生成部２９はデータ保持手段１内のＦＰＵ３０，３１用にメモリ制御信号ＳＭＣ１を出力し、ＦＰＵ３２，３３用にメモリ制御信号ＳＭＣ２を出力する。
【０１５６】
シーケンス変換部２Ｃ内の一時記憶部２７及び演算器選択信号出力部２８はプログラム制御部４Ｃより演算モード選択コードＯＭＳ、ＦＬＭ選択コードＦＭＳ及び命令コードＯＰを受ける。演算モード選択コードＯＭＳはＦＬＭ１０〜１３のうち４個のＦＬＭをアクセス対象にするか、２個のＦＬＭをアクセス対象にするかを指示するコードであり、ＦＬＭ１０〜１３のうち全ての格納データを並列演算に用いる場合は演算モード選択コードＯＭＳは“４”とされ、ＦＬＭ１０、１１あるいはＦＬＭ１２，１３を用いる場合は演算モード選択コードＯＭＳは“２”とされる。また、演算モード選択コードＯＭＳが“２”のとき、ＦＬＭ選択コードＦＭＳが“１”の場合はＦＬＭ１０，１１がアクセス対象となり、ＦＬＭ選択コードＦＭＳが“２”の場合はＦＬＭ１２，１３がアクセス対象となる。なお、演算モード選択コードＯＭＳ及びＦＬＭ選択コードＦＭＳの内容はデコードする命令によって決定される。
【０１５７】
メモリ制御信号生成部２９はプログラム制御部４Ｃより得られるＦＬＭ選択コードＦＭＳ及びソース／デスティネーションコードＳＤＣに基づき、読み出し及び書き込みに関するメモリ制御信号ＳＭＣ１及びＳＭＣ２メモリ制御信号ＭＣＳをデータ保持手段１に出力する。この際、データ保持手段１より読み出したソースデータを一時記憶部２７に保存したり、一時記憶部２７に保存した演算結果データを一時記憶部２７に格納したりする。
【０１５８】
一時記憶部２７はデータ保持手段１，並列演算器７間のデータ授受を行うべく、データ保持手段１あるいは並列演算器７より得られたデータを一時的に記憶する。
【０１５９】
＜2SIMD実行＞
図１７は実施の形態３のデータ処理装置に関し、2SIMDに対応するプログラム例等を示す説明図である。図１７(a) に示すように、プログラムは命令ＣＭ４１〜ＣＭ４３からなり、命令ＣＭ４１は２つのＦＬＭ１０，１１に対しＦＰＵ３０，３１を用いた並列度“２”，演算モード“２”の並列加算命令（ＡＤＤ１）であり、命令ＣＭ４２は２つのＦＬＭ１２，１３に対しＦＰＵ３０，３１を用いた並列度“２”、演算モード“２”の並列減算命令（ＳＵＢ２）であり、命令ＣＭ４３は４つのＦＬＭ１０〜１３に対しＦＰＵ３０，３１を用いた並列度“４”，演算モード“４”の並列加算命令（ＡＤＤ０）である。このように、実施の形態３のデータ処理装置は、2SIMD実行段階において4SIMD対応の命令（ＣＭ４３）を併せて実行する場合を想定している。
【０１６０】
4SIMD混在2SIMDの命令群を実行する場合、同図(b) に示すように、プログラムカウンタＰＣの“０”〜“２”（ｓ）に対応して命令ＣＭ４１〜ＣＭ４３が記述され、第１〜第５サイクルにおいて命令ＣＭ４１が実行され、第２〜第６サイクルにおいて命令ＣＭ４２が実行され、第３〜第８サイクルにおいて命令ＣＭ４３が実行される。命令ＣＭ４１，ＣＭ４２等の2SIMD対応の命令に対応してフェッチ（Ｆ）、デコード（Ｄ），メモリ読み出し（Ｒ）、演算実行（Ｅ）及びメモリ書き込み（Ｗ）の処理がそれぞれ１サイクル単位で行われ、命令ＣＭ４３の4SIMD対応の命令に対応してフェッチ（Ｆ）、デコード（Ｄ），メモリ読み出し（Ｒ）、演算実行（Ｅ，Ｅ（２サイクル））及びメモリ書き込み（Ｗ）の処理がそれぞれ１サイクル単位で行われ、結果、命令ＣＭ４１〜ＣＭ４３はパイプライン処理される。
【０１６１】
同図(c) に示すように、命令ＣＭ４１は２つの命令ＣＭ４１ａ，ＣＭ４１ｂからなり、例えば、命令ＣＭ４１ａはＦＬＭ１０（図中、ＦＬＭ０）の０番地のソースデータと、ＦＬＭ１０の１番地のソースデータとの和を、ＦＬＭ１０のソースデータの２番地のアドレスに書き込むことを意味する。命令ＣＭ４１ｂの処理も同様にＦＬＭ１１に対して行われる。なお、「ＦＬＭｉ［ｊ］」において、ｉはＦＬＭ１ｉを意味し、ｊは該当ＦＬＭ１ｉのアドレスを意味する。
【０１６２】
同様にして、命令ＣＭ４２は２つの命令ＣＭ４２ａ，ＣＭ４２ｂからなり、例えば、命令ＣＭ４２ａはＦＬＭ１２（図中、ＦＬＭ２）の０番地のソースデータと、ＦＬＭ１２の１番地のソースデータとの差を、ＦＬＭ１２のソースデータの３番地のアドレスに書き込むことを意味する。命令ＣＭ４２ｂの処理もＦＬＭ１３に対して同様に行われる。
【０１６３】
一方、命令ＣＭ４３は４つの命令ＣＭ４３ａ〜ＣＭ４３ｄからなり、例えば、命令ＣＭ４３ａはＦＬＭ１０の０番地のソースデータと、ＦＬＭ１０の１番地のソースデータとの差を、ＦＬＭ１０のソースデータの４番地のアドレスに書き込むことを意味する。命令ＣＭ４３ｂ〜ＣＭ４３ｄの処理も同様に、ＦＬＭ１１〜１３に対して行われる加算命令を意味する。
【０１６４】
図１８は実施の形態３のデータ処理装置による図１７で示した命令ＣＭ４１〜ＣＭ４３を一部4SIMD混在の2SIMD（並列度２）で実行する処理内容を示すタイミング図である。以下、同図を参照して、その実行内容をサイクル単位で説明する。
【０１６５】
（１サイクル目）
プログラムカウンタＰＣが初期値“０”から開始され、 命令メモリである命令保持手段５から０番地の命令ＣＭ４１をプログラム制御部４Ｃでフェッチする。
【０１６６】
（２サイクル目）
プログラムカウンタＰＣが“１”にインクリメントされ、プログラム制御部４Ｃが命令ＣＭ４１の命令コードをデコードする。その結果、プログラム制御部４Ｃは、デコード結果として、加算命令ＡＤＤを指示する命令コードＯＰと、“２”を指示する演算モード選択コードＯＭＳと、“１”を指示するＦＬＭ選択コードＦＭＳと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（２）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、ＦＬＭ選択コードＦＭＳ“１”であるため、データ保持手段１内の読み出し対象ＦＬＭ１０，１１であることが認識される。
【０１６７】
そして、シーケンス変換部２Ｃ内において、演算器選択信号出力部２８及び一時記憶部２７は演算モード選択コードＯＭＳ、ＦＬＭ選択コードＦＭＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２９は演算モード選択コードＯＭＳ、ＦＬＭ選択コードＦＭＳ及びソース／デスティネーションコードＳＤＣを入力する。上述したように、演算モード選択コードＯＭＳが“２”、ＦＬＭ選択コードＦＭＳが“１”、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２９は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し読み出しイネーブル状態（“Ｈ”）にし、かつ、ＦＬＭ１０，１１それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２７に取り込むためのメモリ制御信号ＳＭＣ１を出力する。この際、メモリ制御信号ＳＭＣ２は読み出しディスネーブル（“Ｌ”）を指示する信号となる。
【０１６８】
そして、命令保持手段５の１番地の命令ＣＭ４２がプログラム制御部４Ｃにフェッチされる。
【０１６９】
（３サイクル目）
プログラムカウンタＰＣが“２”にインクリメントされ、プログラム制御部４Ｃが命令ＣＭ４２の命令コードをデコードする。その結果、プログラム制御部４Ｃは、減算命令ＳＵＢを指示する命令コードＯＰと、“２”を指示する演算モード選択コードＯＭＳと、“２”を指示するＦＬＭ選択コードＦＭＳと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（３）」を指示するソース／デスティネーションコードＳＤＣを出力する。
【０１７０】
そして、シーケンス変換部２Ｃ内において、演算器選択信号出力部２８及び一時記憶部２７は演算モード選択コードＯＭＳ、ＦＬＭ選択コードＦＭＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２９は演算モード選択コードＯＭＳ、ＦＬＭ選択コードＦＭＳ及びソース／デスティネーションコードＳＤＣを入力する。上述したように、演算モード選択コードＯＭＳが“２”で、ＦＬＭ選択コードＦＭＳが“２”で、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２９は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し読み出しイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２７に取り込むためのメモリ制御信号ＳＭＣ２を出力する。この際、メモリ制御信号ＳＭＣ１は読み出しディスネーブルを指示する信号となる。
【０１７１】
さらに、シーケンス変換部２Ｃ内の演算器選択信号出力部２８は、２サイクル目で認識した加算命令ＡＤＤを指示する演算命令選択信号ＯＰＳ及び一時記憶部２７に取り込んだソースデータを並列演算器７内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ０Ｉ００（ＦＬＭ０［０］），Ｄ０Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ０Ｉｍｎ」（ｍ＝０，１，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【０１７２】
そして、命令保持手段５の２番地の命令ＣＭ４３がプログラム制御部４Ｃにフェッチされる。
【０１７３】
（４サイクル目）
プログラム制御部４Ｃが命令ＣＭ４３の命令コードをデコードする。その結果、プログラム制御部４Ｃは、デコード結果として、加算命令ＡＤＤを指示する命令コードＯＰと、“４”を指示する演算モード選択コードＯＭＳと、ソースデータの格納箇所である「ＦＬＭ（０），ＦＬＭ（１）」及びデスティネーションデータの格納場所である「ＦＬＭ（４）」を指示するソース／デスティネーションコードＳＤＣを出力する。また、演算モード選択コードＯＭＳが“４”であるため、データ保持手段１内の対象はＦＬＭ１０〜１３であることが認識される。
【０１７４】
また、演算モード選択コードＯＭＳが“４”であるため、ＮＯＰフラグＮＦが“１”にセットされ、プログラムカウンタＰＣはインクリメントされることなく“２”を維持する。したがって、新たな命令のフェッチは行われない。
【０１７５】
一時記憶部２７及び演算器選択信号出力部２８は、演算モード選択コードＯＭＳが“４”で、命令コードＯＰが指示する加算命令ＡＤＤが4SIMD対応であるため、2SIMDで実行可能にすべく、命令ＣＭ４３ａ〜ＣＭ４３ｄからなる高並列命令ＣＭ４３を、命令ＣＭ４３ａ及び命令ＣＭ４３ｂからなる第１の部分加算命令（部分並列命令）と、命令ＣＭ３ｃ及び命令ＣＭ４３ｄからなる第２の部分加算命令とに分割する。
【０１７６】
そして、シーケンス変換部２Ｃ内において、演算器選択信号出力部２８及び一時記憶部２７は演算モード選択コードＯＭＳ及び命令コードＯＰを入力し、メモリ制御信号生成部２９は演算モード選択コードＯＭＳ及びソース／デスティネーションコードＳＤＣを入力する。上述したように、演算モード選択コードＯＭＳが“４”で、ソース／デスティネーションコードＳＤＣはソースデータは「ＦＬＭ（０），ＦＬＭ（１）」を指示するため、メモリ制御信号生成部２９は、メモリ４バンクであるＦＬＭ１０〜１３すべてを読み出しイネーブル状態にし、かつ、ＦＬＭ１０〜１３それぞれの０番地及び１番地の格納データをソースデータとして一時記憶部２７に取り込むためのメモリ制御信号ＳＭＣ１及びＳＭＣ２を出力する。
【０１７７】
シーケンス変換部２Ｃ内の演算器選択信号出力部２８は、３サイクル目で認識した減算命令ＳＵＢを指示する演算命令選択信号ＯＰＳ及び一時記憶部２７に取り込んだソースデータを並列演算器７内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては減算命令ＳＵＢとソースデータ（Ｄ１Ｉ２０（ＦＬＭ２［０］），Ｄ１Ｉ２１（ＦＬＭ２［１］））を出力する。すなわち、「Ｄ１Ｉｍｎ」（ｍ＝２，３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【０１７８】
そして、並列演算器７内のＦＰＵ３０，３１は対応するソースデータの加算命令ＡＤＤを並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ０Ｉ００，Ｄ０Ｉ０１）の加算演算を行う。そして、ＦＰＵ３０，３１における加算結果ＤＯ００，ＤＯ０１が一時記憶部２７に出力される。
【０１７９】
（５サイクル目）
プログラムカウンタＰＣが“３”にインクリメントされ、プログラム制御部４ＣはＮＯＰ命令を指示する命令コードＯＰを出力する。このＮＯＰ命令は命令ＣＭ４３のＡＤＤ命令直後に挿入されることにより、上述した第１及び第２の部分加算命令を支障無く実行可能にする１サイクル分の時間的余裕を設けている。一時記憶部２１及び演算器選択信号出力部２３はＮＯＰ命令に従い新たな命令に対する実質的な処理は実行しない。なお、ＮＯＰフラグＮＦは“０”にリセットされる。
【０１８０】
シーケンス変換部２Ｃ内の演算器選択信号出力部２８は、４サイクル目で分割した加算命令ＡＤＤにおける第１の部分加算命令を指示する演算命令選択信号ＯＰＳ及び一時記憶部２７に取り込んだソースデータを並列演算器７内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ２Ｉ００（ＦＬＭ０［０］），Ｄ２Ｉ０１（ＦＬＭ０［１］））を出力する。すなわち、「Ｄ２Ｉｍｎ」（ｍ＝０，１，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【０１８１】
並列演算器７内のＦＰＵ３０，３１は対応するソースデータの減算命令ＳＵＢを並列に実行する。例えば、ＦＰＵ３０は減算命令ＳＵＢに従い２つのソースデータ（Ｄ１Ｉ２０，Ｄ１Ｉ１１）の減算演算を行う。そして、ＦＰＵ３０，３１における減算結果ＤＯ１２，ＤＯ１３が一時記憶部２７に出力される。
【０１８２】
そして、シーケンス変換部２Ｃ内において、メモリ制御信号生成部２９は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１０，１１のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１０，１１それぞれの２番地をデスティネーションデータとして、一時記憶部２７に取り込んだ加算結果ＤＯ００，ＤＯ０１を書き込むためのメモリ制御信号ＳＭＣ１を出力する。その結果、ＦＬＭ１０，１１の２番地に加算結果ＤＯ００，ＤＯ０１が書き込まれる。この際、メモリ制御信号ＳＭＣ２は書き込みディスネーブルを指示する信号となる。
【０１８３】
（６サイクル目）
プログラムカウンタＰＣが“４”にインクリメントされる。シーケンス変換部２Ｃ内の演算器選択信号出力部２８は、４サイクル目で分割した加算命令ＡＤＤにおける第２の部分加算命令を指示する演算命令選択信号ＯＰＳ及び一時記憶部２７に取り込んだソースデータを並列演算器７内のＦＰＵ３０，３１に出力する。例えば、ＦＰＵ３０に対しては加算命令ＡＤＤとソースデータ（Ｄ２Ｉ２０（ＦＬＭ２［０］），Ｄ２Ｉ２１（ＦＬＭ２［１］））を出力する。すなわち、「Ｄ２Ｉｍｎ」（ｍ＝２，３，ｎ＝０，１）に対してＦＬＭ１ｍのｎ番地のデータがソースデータとなる。
【０１８４】
並列演算器７内のＦＰＵ３０，３１は対応するソースデータの加算命令ＡＤＤにおける第１の部分加算命令を並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ２Ｉ００，Ｄ２Ｉ０１）の加算演算を行う。そして、ＦＰＵ３０，３１における加算結果ＤＯ２０，ＤＯ２１が一時記憶部２７に出力される。
【０１８５】
そして、シーケンス変換部２Ｃ内において、メモリ制御信号生成部２９は、メモリ４バンクであるＦＬＭ１０〜１３のうちＦＬＭ１２，１３のみに関し書き込みイネーブル状態にし、かつ、ＦＬＭ１２，１３それぞれの３番地をデスティネーションデータとして、一時記憶部２７に取り込んだ減算結果ＤＯ１２，ＤＯ１３を書き込むためのメモリ制御信号ＳＭＣ２を出力する。その結果、ＦＬＭ１２，１３の３番地に減算結果ＤＯ１２，ＤＯ１３が書き込まれる。この際、メモリ制御信号ＳＭＣ１は読み出しディスネーブルを指示する信号となる。
【０１８６】
（７サイクル目）
プログラムカウンタＰＣが“５”にインクリメントされる。並列演算器７内のＦＰＵ３０，３１は対応するソースデータの加算命令ＡＤＤにおける第２の部分加算命令を並列に実行する。例えば、ＦＰＵ３０は加算命令ＡＤＤに従い２つのソースデータ（Ｄ２Ｉ２０，Ｄ２Ｉ２１）の加算演算を行う。そして、ＦＰＵ３０，３１における加算結果ＤＯ２２，ＤＯ２３が一時記憶部２７に出力される。
【０１８７】
（８サイクル目）
プログラムカウンタＰＣが“６”にインクリメントされる。シーケンス変換部２Ｃ内において、メモリ制御信号生成部２９は、メモリ４バンクであるＦＬＭ１０〜１３すべてを書き込みイネーブル状態にし、かつ、ＦＬＭ１０〜１３それぞれの４番地をデスティネーションデータとして、一時記憶部２７に取り込んだ減算結果ＤＯ２０〜ＤＯ２３を書き込むためのメモリ制御信号ＳＭＣ１及びＳＭＣ２を出力する。その結果、ＦＬＭ１０〜１３の４番地に加算結果ＤＯ２０〜ＤＯ２３が書き込まれる。
【０１８８】
＜効果＞
このように実施の形態３のデータ処理装置のシーケンス変換部２Ｃは、低並列命令実行時に、データ保持手段１及び並列演算器２を並列度“２”で実行し、並列度“４”の高並列命令実行時に、高並列命令を並列度“２”で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器３を並列度“２”で実行制御している。
【０１８９】
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、プログラムの開発期間を短縮化を図ることができる効果を奏する。
【０１９０】
すなわち、実施の形態３のデータ処理装置では、2SIMDを基本構成としながらも、4SIMDによる処理と2SIMDによる処理が共に実行可能なスケーラブルなH/W構成を実現している。この際、実施の形態１のデータ処理装置と同様、4SIMD及び2SIMDいずれの対応のプログラムも全く同一の命令で記述することができるため、プログラムの開発期間を短縮化を図ることができる効果を奏する。
【０１９１】
さらに、実施の形態３のデータ処理装置で実現されるプログラム実行方式において、シーケンス変換部２Ｃによって実現されるシーケンス機能は、プログラム制御部４Ａより得られるデコード結果に基づき、低並列命令を並列度“２”で実行するとともに、並列度“４”の高並列命令を並列度“２”で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行している。
【０１９２】
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、並列度が“２”の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
【０１９３】
さらに、解読機能を有するプログラム制御部４Ｃは高並列命令の解読時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするためのＮＯＰ命令を指示するデコード結果を生成するため、シーケンス制御部２Ｃ内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
【０１９４】
また、低並列命令の並列度“２”の対応を基本とし、並列度“４”の高並列命令に対応させることにより、高並列と低並列の比を２：１にした性能とコストのバランスの良い利用が可能となる。
【０１９５】
＜他の態様＞
図１９は図１５で示した他のシーケンス変換部２Ｄの詳細を示すブロック図である。同図に示すように、シーケンス変換部２Ｄは一時記憶部３５、演算器選択信号出力部３８及びメモリ制御信号生成部３９より構成される。
【０１９６】
演算器選択信号出力部３８は並列演算器３に対し演算命令選択信号ＯＰＳを出力し、メモリ制御信号生成部３９はデータ保持手段１内のＦＰＵ３０，３１用にメモリ制御信号ＳＭＣ１を出力し、ＦＰＵ３２，３３用にメモリ制御信号ＳＭＣ２を出力する。
【０１９７】
シーケンス変換部２Ｄ内の一時記憶部３５及び演算器選択信号出力部３８はプログラム制御部４Ｄより演算モード付きオペコードＯＰＭ及びＦＬＭ選択コードＦＭＳを受ける。演算モード付きオペコードＯＰＭは命令コードＯＰに演算モード選択コードＯＭＳの情報が付加されたコードを意味する。
【０１９８】
なお、他の構成は図１６で示したプログラム制御部４Ｃ及びシーケンス変換部２Ｃと同様である。このように、プログラム制御部４Ｄから演算モード付きオペコードＯＰＭを出力させ、これに対応したシーケンス変換部２Ｄを設けることによっても、図１６で示した構成と同様に実現できる。
【図面の簡単な説明】
【０１９９】
【図１】この発明の実施の形態１〜実施の形態３であるデータ処理装置の全体構成の概略を示すブロック図である。
【図２】この発明の実施の形態１であるデータ処理装置のデータ保持手段及び並列演算器の構成を示す説明図である。
【図３】図２で示したシーケンス変換部の詳細を示すブロック図である。
【図４】4SIMDに対応するプログラム例等を示す説明図である。
【図５】実施の形態１のデータ処理装置による4SIMDで実行する処理内容を示すタイミング図である。
【図６】2SIMDに対応するプログラム例等を示す説明図である。
【図７】2SIMDの仮想H/W構成を示す説明図である。
【図８】実施の形態１のデータ処理装置による2SIMDで実行する処理内容を示すタイミング図である。
【図９】実施の形態１のデータ保持手段内におけるメモリ割り当てを模試的に示す説明図である。
【図１０】実施の形態１のデータ処理装置による2SIMDで実行する他の処理内容を示すタイミング図である。
【図１１】この発明の実施の形態２であるデータ処理装置のデータ保持手段及び並列演算器の構成を示す説明図である。
【図１２】図１１で示したシーケンス変換部の詳細を示すブロック図である。
【図１３】実施の形態２のデータ処理装置に関し、4SIMDに対応するプログラム例等を示す説明図である。
【図１４】実施の形態２のデータ処理装置による一部2SIMD混在の4SIMDで実行する処理内容を示すタイミング図である。
【図１５】この発明の実施の形態３であるデータ処理装置のデータ保持手段及び並列演算器の構成を示す説明図である。
【図１６】図１５で示したシーケンス変換部の詳細を示すブロック図である。
【図１７】実施の形態３のデータ処理装置に関し、2SIMDに対応するプログラム例等を示す説明図である。
【図１８】実施の形態３のデータ処理装置による一部4SIMD混在の2SIMDで実行する処理内容を示すタイミング図である。
【図１９】図１５で示した他のシーケンス変換部の詳細を示すブロック図である。
【図２０】図１に対応する一般的なデータ処理装置の全体構成の概略を示すブロック図である。
【図２１】4SIMD対応のデータ処理装置のデータ保持手段及び並列演算器の構成を示す説明図である。
【図２２】2SIMD対応のデータ処理装置のデータ保持手段及び並列演算器の構成を示す説明図である。
【図２３】2SIMD対応の構成におけるプログラム例等を示す説明図である。
【図２４】図２３で示したプログラムに対応する、図２２で示したデータ保持手段内におけるメモリ割り当てを模試的に示す説明図である。
【符号の説明】
【０２００】
１  データ保持手段、２，２Ａ〜２Ｄ  シーケンス変換部、３，６，７  並列演算器、４，４Ａ〜４Ｄ  プログラム制御部、５  命令保持手段、１０〜１３  ＦＬＭ、３０〜３３  ＦＰＵ、２１，２７，３５  一時記憶部、２３，２５，２８，３８  演算器選択信号出力部、２４，２６，２９，３９  メモリ制御信号生成部。
【図１】
2008009473.tif 000003
【図２】
2008009473.tif 000004
【図３】
2008009473.tif 000005
【図４】
2008009473.tif 000006
【図５】
2008009473.tif 000007
【図６】
2008009473.tif 000008
【図７】
2008009473.tif 000009
【図８】
2008009473.tif 000010
【図９】
2008009473.tif 000011
【図１０】
2008009473.tif 000012
【図１１】
2008009473.tif 000013
【図１２】
2008009473.tif 000014
【図１３】
2008009473.tif 000015
【図１４】
2008009473.tif 000016
【図１５】
2008009473.tif 000017
【図１６】
2008009473.tif 000018
【図１７】
2008009473.tif 000019
【図１８】
2008009473.tif 000020
【図１９】
2008009473.tif 000021
【図２０】
2008009473.tif 000022
【図２１】
2008009473.tif 000023
【図２２】
2008009473.tif 000024
【図２３】
2008009473.tif 000025
【図２４】
2008009473.tif 000026