JP2008009473A - データ処理装置及びプログラム実行方式 - Google Patents
データ処理装置及びプログラム実行方式 Download PDFInfo
- Publication number
- JP2008009473A JP2008009473A JP2006176048A JP2006176048A JP2008009473A JP 2008009473 A JP2008009473 A JP 2008009473A JP 2006176048 A JP2006176048 A JP 2006176048A JP 2006176048 A JP2006176048 A JP 2006176048A JP 2008009473 A JP2008009473 A JP 2008009473A
- Authority
- JP
- Japan
- Prior art keywords
- parallel
- instruction
- unit
- instructions
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
【課題】複数種のSIMD構成に対応し、かつ、プログラムの開発期間を短縮可能なデータ処理装置を得る。
【解決手段】プログラム制御部4Aはデコード段階において、低並列実行モード時に、デコード結果が並列度が“4”の高並列命令の場合は、プログラムカウンタPCをインクリメントすることなく、高並列命令の直後のサイクルでNOP命令を指示する命令コードOPを出力する。演算器選択信号出力部23は低並列実行モード時に、高並列命令を指示する場合は、当該高並列命令を、並列度が“2”で処理可能な第1及び第2の部分並列命令を分割し、次のサイクルから2サイクルかけて第1及び第2の部分並列命令を指示する演算命令選択信号OPSを並列演算器3に出力する。
【選択図】図3
【解決手段】プログラム制御部4Aはデコード段階において、低並列実行モード時に、デコード結果が並列度が“4”の高並列命令の場合は、プログラムカウンタPCをインクリメントすることなく、高並列命令の直後のサイクルでNOP命令を指示する命令コードOPを出力する。演算器選択信号出力部23は低並列実行モード時に、高並列命令を指示する場合は、当該高並列命令を、並列度が“2”で処理可能な第1及び第2の部分並列命令を分割し、次のサイクルから2サイクルかけて第1及び第2の部分並列命令を指示する演算命令選択信号OPSを並列演算器3に出力する。
【選択図】図3
Description
この発明はSIMD(Single Instruction/Multiple Data )構成のデータ処理装置及びSIMDに対応するプログラム実行方式に関する。
例えば、3Dグラフィックス分野において、ジオメトリ処理に用いられているプログラム制御方式のデータ処理装置は、PC(パーソナルコンピュータ)向けなどの性能を要求される分野に適用される場合には、 非特許文献1に記載されているように処理の特徴により4SIMD構成のコアが使用されることが多い。
また、携帯機器などの小型化、低消費電力化を要求される分野に適用される場合には、非特許文献2,非特許文献3に記載されているように2SIMDのコアを使用して小型化をはかっている。
「A Programmable Geometry Processor with Enhanced Four-Parallel SIMD Type Processing Core for PC-Based 3D Graphics」IEICE TRANS. ELECTRON , VOL.E85-C, NO.5, pp.1200-1210 2002年5月
「携帯用3D-LSIコアZ3D(2)-ジオメトリエンジン-」 電子情報通信学会2003年総合大会、 D-11-123
「3D Graphics LSI Core for Mobile Phone "Z3D"」 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構成に対応し、かつ、プログラムの開発期間を短縮可能なデータ処理装置を得ることを目的とする。
この発明に係る請求項1記載のデータ処理装置は、第1の数の並列度の高並列命令が実行可能であり、前記第1の数の並列度で実行する高並列実行モードと、前記第1の数より小さい第2の数の並列度で実行する低並列実行モードとを有するデータ処理装置であって、前記第1の数の並列度を有するデータ保持手段と、前記第1の数の並列度を有する並列演算器と、プログラム内の命令を順次解読して、前記高並列実行モードであるか前記低並列実行モードであるかを示す情報を含む解読結果を出力するプログラム制御部と、前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、前記シーケンス制御部は前記高並列実行モード時に、前記データ保持手段及び前記並列演算器を前記第1の数の並列度で前記高並列命令を実行制御し、前記低並列実行モード時に、前記高並列命令を前記第2の数の並列度で処理可能な複数の部分並列命令に分割し、前記複数の部分並列命令に基づき前記並列演算器を前記第2の並列度で実行制御し、前記プログラム制御部は前記低並列実行モード時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する。
この発明に係る請求項4記載のデータ処理装置は、第1の数の並列度の高並列命令及び前記第1の数より小さい第2の数の並列度の低並列命令が実行可能なデータ処理装置であって、前記第1の数の並列度を有するデータ保持手段と、前記第1の数の並列度を有する並列演算器と、プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、前記シーケンス制御部は前記高並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第1の数の並列度で実行制御し、前記低並列命令実行時に、当該低並列命令に基づき前記並列演算器を前記第2の数のみ有効にして前記第2の並列度で実行制御する。
この発明に係る請求項6記載のデータ処理装置は、第1の数の並列度の高並列命令及び前記第1の数より小さい第2の数の並列度の低並列命令が実行可能なデータ処理装置であって、前記第1の数の並列度を有するデータ保持手段と、前記第2の数の並列度を有する並列演算器と、プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、前記シーケンス制御部は前記低並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第2の数の並列度で前記低並列命令を実行制御し、前記高並列命令実行時に、前記高並列命令を前記第2の数の並列度で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき前記並列演算器を前記第2の並列度で実行制御し、前記プログラム制御部は前記高並列命令の解読時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する。
この発明に係る請求項8記載のプログラム実行方式は、演算機能として第1の数の並列度を要求する高並列命令を含むプログラムに対する、前記演算機能が前記第1の数より小さい第2の数の並列度のデータ処理装置によるプログラム実行方式であって、前記プログラム内に記述された命令内容を解読して解読結果を得る解読機能と、前記解読結果に基づき、前記高並列命令を並列度が前記第2の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、前記解読機能は、前記高並列命令直後の命令の前記解読結果として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする。
この発明に係る請求項9記載のプログラム実行方式は、演算機能として第1の数の並列度を要求する高並列命令及び前記第1の数より小さい第2の数の並列度を要求する低並列命令を含むプログラムに対する、前記演算機能が前記第1の数より小さい第2の数の並列度のデータ処理装置によるプログラム実行方式であって、前記プログラム内に記述された命令内容を解読し、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を得る解読機能と、前記解読結果に基づき、前記低並列命令を前記第2の数の並列度で実行するとともに、前記高並列命令を並列度が前記第2の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、前記解読機能は、前記高並列命令直後の命令として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする。
この発明に係る請求項1記載のデータ処理装置のシーケンス制御部は、低並列実行モード時に、高並列命令を第2の数の並列度で処理可能な複数の部分並列命令に分割し、複数の部分並列命令に基づき並列演算器を第2の並列度で実行制御するため、共通の高並列命令に対して高並列モード及び低並列モードの実行制御が可能である。
その結果、高並列モード及び低並列モードそれぞれについて共通のプログラムを利用できるため、プログラムの開発期間を短縮できる効果を奏する。
さらに、プログラム制御部は、低並列実行モード時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する解読結果を生成するため、シーケンス制御部内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
この発明における請求項4記載のデータ処理装置のシーケンス制御部は、高並列命令実行時に、データ保持手段及び並列演算器を第1の数の並列度で実行制御し、低並列命令実行時に、当該低並列命令に基づき並列演算器を第2の数のみ有効にして第2の並列度で実行制御するため、並列演算器を並列度を満足する個数分有効利用することができるため、無駄な動作を省き低消費電力化を図ることができる。
この発明における請求項6記載のデータ処理装置のシーケンス制御部は、低並列命令実行時に、データ保持手段及び並列演算器を第2の数の並列度で低並列命令を実行制御し、高並列命令実行時に、高並列命令を第2の数の並列度で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器を第2の並列度で実行制御している。
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、プログラムの開発期間を短縮化を図ることができる効果を奏する。
さらに、プログラム制御部は高並列命令の解読時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する解読結果を生成するため、シーケンス制御部内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
この発明における請求項8記載のプログラム実行方式におけるシーケンス機能は、解読機能より得られる解読結果に基づき、高並列命令を並列度が第2の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するため、並列度が第1の数を要求する高並列命令からなるプログラムを、並列度が第2の数の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
さらに、解読機能は、高並列命令直後の命令の解読結果として、複数の部分並列命令に対応する未実行命令を指示する解読結果を生成して、複数の部分並列命令を時間的に実行可能にするため、シーケンス機能にて高並列命令を複数の部分並列命令を分割して実行させてもプログラムの実行に支障をきたすことはない。
この発明における請求項9記載のプログラム実行方式におけるシーケンス機能は、解読機能より得られる解読結果に基づき、低並列命令を第2の数の並列度で実行するとともに、高並列命令を並列度が第2の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行している。
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、並列度が第2の数の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
さらに、解読機能は、高並列命令直後の命令の解読結果として、複数の部分並列命令に対応する未実行命令を指示する解読結果を生成して、複数の部分並列命令を時間的に実行可能にするため、シーケンス機能にて高並列命令を複数の部分並列命令を分割して実行させてもプログラムの実行に支障をきたすことはない。
<全体構成>
図1はこの発明の実施の形態1〜実施の形態3であるデータ処理装置の全体構成の概略を示すブロック図である。同図に示すように、データ保持手段1と並列演算器3とのデータの授受がシーケンス変換部(シーケンス制御部)2(2A〜2D)を介して行われる。シーケンス変換部2はプログラム制御部4(4A〜4D)の解読結果に基づきシーケンス制御を行う。命令保持手段5にはプログラム等に記載された命令を保持しており、プログラム制御部4は命令保持手段5より読み出した命令を解読し、解読結果をシーケンス変換部2に出力する。
図1はこの発明の実施の形態1〜実施の形態3であるデータ処理装置の全体構成の概略を示すブロック図である。同図に示すように、データ保持手段1と並列演算器3とのデータの授受がシーケンス変換部(シーケンス制御部)2(2A〜2D)を介して行われる。シーケンス変換部2はプログラム制御部4(4A〜4D)の解読結果に基づきシーケンス制御を行う。命令保持手段5にはプログラム等に記載された命令を保持しており、プログラム制御部4は命令保持手段5より読み出した命令を解読し、解読結果をシーケンス変換部2に出力する。
<実施の形態1>
図2はこの発明の実施の形態1であるデータ処理装置のデータ保持手段1及び並列演算器3の構成を示す説明図である。同図に示すように、データ保持手段1は4つのFLM(Floating Local Memory)10〜13から構成され、並列演算器3は4つの部分演算器であるFPU(Floating-Point Unit)30〜33から構成されることにより、基本構成を4SIMD(データ保持手段1及び並列演算器3共に並列度が“4”)としている。そして、データ保持手段1,並列演算器3間のデータの授受はシーケンス変換部2Aの制御によって行われる。
図2はこの発明の実施の形態1であるデータ処理装置のデータ保持手段1及び並列演算器3の構成を示す説明図である。同図に示すように、データ保持手段1は4つのFLM(Floating Local Memory)10〜13から構成され、並列演算器3は4つの部分演算器であるFPU(Floating-Point Unit)30〜33から構成されることにより、基本構成を4SIMD(データ保持手段1及び並列演算器3共に並列度が“4”)としている。そして、データ保持手段1,並列演算器3間のデータの授受はシーケンス変換部2Aの制御によって行われる。
図3は図2で示したシーケンス変換部2Aの詳細を示すブロック図である。同図に示すように、シーケンス変換部2Aは一時記憶部21、演算器選択信号出力部23及びメモリ制御信号生成部24より構成される。
プログラム制御部4Aはプログラム内の命令を順次解読して、解読結果(デコード結果)として並列度選択コードPS、命令コードOP及びソース/デスティネーションコードSDCを出力する。
シーケンス変換部(シーケンス制御部)2A内の一時記憶部21及び演算器選択信号出力部23はプログラム制御部4Aより並列度選択コードPS及び命令コードOPを受ける。並列度選択コードPSはデータ処理装置の処理の並列度を示すコードであり、FPU30〜33のうち全てを並列演算に用いる場合(高並列実行モード)は並列度は“4”(第1の数)とされ、2つを並列演算に用いる場合(低並列実行モード)は並列度は“2”(第2の数)とされる。命令コードOPは各種命令のコードを示す。なお、並列度選択コードPSの内容はプログラム制御部4Aにおいて予め決定されている。
プログラム制御部4Aはデコード段階において、並列度選択コードPSが“2”(低並列実行モード)で、かつデコード結果がADD命令,SUB命令等の並列度が“4”の高並列命令の場合は、当該高並列命令のデコードサイクル中にNOP(No Operation;未実行命令)フラグNF(図示せず)を“1”にセットするとともに、プログラムカウンタPCをインクリメントすることなく維持し、高並列命令の直後のサイクルでNOP命令を指示する命令コードOPを出力する。
演算器選択信号出力部23は並列度選択コードPSが“2”で、かつ命令コードOPがADD命令,SUB命令等の並列度が“4”の高並列命令を指示する場合は、当該高並列命令を、並列度が“2”で処理可能な第1及び第2の部分並列命令を分割し、次のサイクルから2サイクルかけて第1及び第2の部分並列命令を指示する演算命令選択信号OPSを並列演算器3に出力する。
メモリ制御信号生成部24はプログラム制御部4Aより得られるソース/デスティネーションコードSDCに基づき、読み出し及び書き込みに関するメモリ制御信号MCSをデータ保持手段1に出力する。この際、データ保持手段1より読み出したソースデータが一時記憶部21に保存されたり、一時記憶部21に保存した演算結果データをデータ保持手段1に格納したりする。
一時記憶部21はデータ保持手段1,並列演算器3間のデータ授受を行うべく、データ保持手段1あるいは並列演算器3より得られたデータを一時的に記憶する。そして、一時記憶部21は、演算器選択信号出力部23と同様、並列度選択コードPSが“2”で、かつ命令コードOPがADD命令,SUB命令等の並列度が“4”の高並列命令を指示する場合は、当該高並列命令に替えて上記した第1及び第2の部分並列命令が生成されることを認識し、一時記憶しているソースデータを、第1及び第2の部分並列命令に対応するように第1及び第2の部分ソースデータに分割し、次のサイクルから2サイクルかけて第1及び第2の部分並列命令に対応する第1及び第2の部分ソースデータを並列演算器3に出力する。
<4SIMD実行>
図4は4SIMDに対応するプログラム例等を示す説明図である。図4(a) に示すように、プログラムは高並列命令である命令CM1及びCM2からなり、命令CM1は4つのFLM10〜13に対する並列加算命令(ADD)であり、命令CM2は4つのFLM10〜13に対する並列減算命令(SUB)である。
図4は4SIMDに対応するプログラム例等を示す説明図である。図4(a) に示すように、プログラムは高並列命令である命令CM1及びCM2からなり、命令CM1は4つのFLM10〜13に対する並列加算命令(ADD)であり、命令CM2は4つのFLM10〜13に対する並列減算命令(SUB)である。
4SIMDの場合、同図(b) に示すように、プログラムカウンタPCの“0”及び“1”に対応して命令CM1及び命令CM2が記述され、第1〜第5サイクルにおいて命令CM1が実行され、第2〜第6サイクルにおいて命令CM2が実行される。1つの命令に対応してフェッチ(F)、デコード(D),メモリ読み出し(R)、演算実行(E)及びメモリ書き込み(W)の処理がそれぞれ1サイクル単位で行われる結果、命令CM1及び命令CM2はパイプライン処理される。
同図(c) に示すように、命令CM1は4つの命令CM1a〜CM1dからなり、例えば、命令CM1aはFLM10(図中、FLM0)の0番地のソースデータと、FLM10の1番地のソースデータとの和を、FLM10のソースデータの2番地のアドレスに書き込むことを意味する。命令CM1b〜CM1dの処理も同様に、FLM11〜13に対して行われる加算命令を意味する。なお、「FLMi[j]」において、iはFLM1iを意味し、jは該当FLM1iのアドレスを意味する。
同様にして、命令CM2は4つの命令CM2a〜CM2dからなり、例えば、命令CM2aはFLM10(図中、FLM0)の0番地のソースデータと、FLM10の1番地のソースデータとの差を、FLM10のソースデータの3番地のアドレスに書き込むことを意味する。命令CM2b〜CM2dの処理も同様に、FLM11〜13に対して行われる減算命令を意味する。
図5は実施の形態1のデータ処理装置による図4で示した命令CM1及び命令CM2を4SIMD(並列度“4”)で実行する処理内容を示すタイミング図である。以下、同図を参照して、その実行内容をサイクル単位で説明する。
(1サイクル目)
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM1をプログラム制御部4Aでフェッチする。また、並列度選択コードPSは4SIMDである並列度“4”で固定される。
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM1をプログラム制御部4Aでフェッチする。また、並列度選択コードPSは4SIMDである並列度“4”で固定される。
(2サイクル目)
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4Aが命令CM1の命令コードをデコードする。そして、デコード結果として、加算命令ADDを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」(FLM10〜13すべての0番地と1番地)及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。また、並列度選択コードPSが“4”であるため、NOPフラグNFが“0”(“L”)を維持する。
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4Aが命令CM1の命令コードをデコードする。そして、デコード結果として、加算命令ADDを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」(FLM10〜13すべての0番地と1番地)及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。また、並列度選択コードPSが“4”であるため、NOPフラグNFが“0”(“L”)を維持する。
そして、シーケンス変換部2A内において、演算器選択信号出力部23及び一時記憶部21は並列度選択コードPS及び命令コードOPを入力し、メモリ制御信号生成部24はソース/デスティネーションコードSDCを入力する。上述したように、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し読み出しイネーブル状態(“H”(“1”))にし、かつ、FLM10〜13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
そして、命令保持手段5の1番地の命令CM2がプログラム制御部4Aにフェッチされる。
(3サイクル目)
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4Aが命令CM2の命令コードをデコードする。そして、デコード結果として、減算命令SUBを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。また、並列度選択コードPSが“4”であるため、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4Aが命令CM2の命令コードをデコードする。そして、デコード結果として、減算命令SUBを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。また、並列度選択コードPSが“4”であるため、NOPフラグNFが“0”を維持する。
そして、シーケンス変換部2A内において、演算器選択信号出力部23及び一時記憶部21は並列度選択コードPS及び新たな命令コードOPを入力し、メモリ制御信号生成部24は新たなソース/デスティネーションコードSDCを入力する。上述したように、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し読み出しイネーブル状態(“H”(“1”))にし、かつ、FLM10〜13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
さらに、シーケンス変換部2A内の演算器選択信号出力部23は、2サイクル目で認識した加算命令ADDを指示する演算命令選択信号OPS及び2サイクル目に一時記憶部21に取り込んだソースデータを並列演算器3内のFPU30〜33に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D0I00(FLM0[0]),D0I01(FLM0[1]))を出力する。すなわち、「D0Imn」(m=0〜3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
(4サイクル目)
プログラムカウンタPCが“3”にインクリメントされ、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“3”にインクリメントされ、NOPフラグNFが“0”を維持する。
シーケンス変換部2A内の演算器選択信号出力部23は、3サイクル目で認識した減算命令SUBを指示する演算命令選択信号OPS及び3サイクル目で一時記憶部21に取り込んだソースデータを並列演算器3内のFPU30〜33に出力する。例えば、FPU30に対しては減算命令SUBとソースデータ(D1I00(FLM0[0]),D1I01(FLM0[1]))を出力する。すなわち、「D1Imn」(m=0〜3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
そして、並列演算器3内のFPU30〜33は対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D0I00,D0I01)の加算演算を行い、FPU30〜33における加算結果DO00〜DO03が一時記憶部21に出力される。
(5サイクル目)
プログラムカウンタPCが“4”にインクリメントされ、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“4”にインクリメントされ、NOPフラグNFが“0”を維持する。
並列演算器3内のFPU30〜33は対応するソースデータの減算命令SUBを並列に実行する。例えば、FPU30は減算命令SUBに従い2つのソースデータ(D1I00,D1I01)の減算演算を行い、FPU30〜33における減算結果D110〜D113が一時記憶部21に出力される。
そして、シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し書き込みイネーブル状態(“H”)にし、かつ、FLM10〜13それぞれの2番地をデスティネーションデータとして、一時記憶部21に取り込んだ加算結果DO00〜DO03を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10〜13の2番地に加算結果DO00〜DO03が書き込まれる。
(6サイクル目)
プログラムカウンタPCが“5”にインクリメントされ、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“5”にインクリメントされ、NOPフラグNFが“0”を維持する。
そして、シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し書き込みイネーブル状態(“H”)にし、かつ、FLM10〜13それぞれの3番地をデスティネーションデータとして、一時記憶部21に取り込んだ減算結果DO10〜DO13を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10〜13の3番地に加算結果DO10〜DO13が書き込まれる。
<2SIMD実行>
図6は2SIMDに対応するプログラム例等を示す説明図である。図6(a) に示すように、プログラムは4SIMDの場合と同一の命令CM1及びCM2からなり、命令CM1は4つのFLM10〜13に対する並列加算命令(ADD)であり、命令CM2は4つのFLM10〜13に対する並列減算命令(SUB)である。
図6は2SIMDに対応するプログラム例等を示す説明図である。図6(a) に示すように、プログラムは4SIMDの場合と同一の命令CM1及びCM2からなり、命令CM1は4つのFLM10〜13に対する並列加算命令(ADD)であり、命令CM2は4つのFLM10〜13に対する並列減算命令(SUB)である。
2SIMDの場合、同図(b) に示すように、プログラムカウンタPCの“0”(“0”(S))及び“1”(“1”(S))に対応して命令CM1及び命令CM2が記述され、第1〜第6サイクルにおいて命令CM1が実行され、第3〜第8サイクルにおいて命令CM2が実行される。1つの命令に対応してフェッチ(F)、デコード(D),メモリ読み出し(R)、演算実行(E,E(2サイクル))及びメモリ書き込み(W)の処理がそれぞれ1サイクル単位で行われる結果、命令CM1及び命令CM2はパイプライン処理される。そして、2SIMDで処理可能にすべく、プログラムカウンタPCが“0”,“1”それぞれにおいてインクリメントされることなくNOP命令(“0”(S),“1”(S))が割り当てられる。
同図(c) に示すように、命令CM1は4つの命令CM1a〜CM1dからなり、命令CM2は4つの命令CM2a〜CM2dからなる。
図7は2SIMDの仮想構成を示す説明図である。同図に示すように、2つのFPU30,31のみを有する並列演算器6を仮想して実行させるのが、並列度選択コードPSを“2”とした低並列実行モードである。
図8は実施の形態1のデータ処理装置による図6で示した命令CM1及び命令CM2を2SIMD(並列度2)で実行する処理内容を示すタイミング図である。この場合、並列演算器3内におけるFPU30及び31からなる減縮並列演算部3aのみで演算を行う。以下、同図を参照して、その実行内容をサイクル単位で説明する。
(1サイクル目)
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM1をプログラム制御部4Aでフェッチする。また、並列度選択コードPSは2SIMD(低並列実行モード)である並列度“2”で固定される。
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM1をプログラム制御部4Aでフェッチする。また、並列度選択コードPSは2SIMD(低並列実行モード)である並列度“2”で固定される。
(2サイクル目)
プログラム制御部4Aが命令CM1の命令コードをデコードする。加算命令ADDを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。
プログラム制御部4Aが命令CM1の命令コードをデコードする。加算命令ADDを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。
また、並列度選択コードPSが“2”であるため、NOPフラグNFが“1”にセットされ、プログラムカウンタPCはインクリメントされることなく“0”を維持する。したがって、新たな命令のフェッチは行われない。
そして、シーケンス変換部2A内において、演算器選択信号出力部23及び一時記憶部21は並列度選択コードPS及び命令コードOPを入力し、メモリ制御信号生成部24はソース/デスティネーションコードSDCを入力する。
一時記憶部21及び演算器選択信号出力部23は、並列度選択コードPSが“2”で、命令コードOPが指示する加算命令ADDが4SIMD対応の高並列命令であるため、2SIMDで実行可能にすべく、命令CM1a〜CM1dからなる高並列命令CM1を、命令CM1a及び命令CM1bからなる第1の部分加算命令(部分並列命令)と、命令CM1c及び命令CM1dからなる第2の部分加算命令とに分割する。
一方、上述したように、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し読み出しイネーブル状態(“H”)にし、かつ、FLM10〜13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
(3サイクル目)
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4AはNOP命令を指示する命令コードOPを出力する。このNOP命令は命令CM1のADD命令直後に挿入されることにより、上述した第1及び第2の部分加算命令を支障無く実行可能にする1サイクル分の時間的余裕を設けている。一時記憶部21及び演算器選択信号出力部23はNOP命令に従い新たな命令に対する実質的な処理は実行しない。なお、NOPフラグNFは“0”にリセットされる。
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4AはNOP命令を指示する命令コードOPを出力する。このNOP命令は命令CM1のADD命令直後に挿入されることにより、上述した第1及び第2の部分加算命令を支障無く実行可能にする1サイクル分の時間的余裕を設けている。一時記憶部21及び演算器選択信号出力部23はNOP命令に従い新たな命令に対する実質的な処理は実行しない。なお、NOPフラグNFは“0”にリセットされる。
さらに、シーケンス変換部2A内の演算器選択信号出力部23は、2サイクル目で分割した第1の部分加算命令を指示する演算命令選択信号OPSを並列演算器3内のFPU30及びFPU31に与えるとともに、第1の部分加算命令に対応して一時記憶部21に取り込んだソースデータの一部を並列演算器3内のFPU30,31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D0I00(FLM0[0]),D0I01(FLM0[1]))を出力する。すなわち、「D0Imn」(m=0,1,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
そして、命令保持手段5の1番地の命令CM2がプログラム制御部4Aにフェッチされる。
(4サイクル目)
プログラム制御部4Aが命令CM2の命令コードをデコードする。そして、デコード結果として減算命令SUBを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。
プログラム制御部4Aが命令CM2の命令コードをデコードする。そして、デコード結果として減算命令SUBを指示する命令コードOPと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。
また、並列度選択コードPSが“2”であるため、NOPフラグNFが“1”にセットされ、プログラムカウンタPCはインクリメントされることなく“1”を維持する。したがたって、新たな命令のフェッチは行われない。
そして、シーケンス変換部2A内において、演算器選択信号出力部23及び一時記憶部21は並列度選択コードPS及び新たな命令コードOPを入力し、メモリ制御信号生成部24は新たなソース/デスティネーションコードSDCを入力する。上述したように、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し読み出しイネーブル状態(“H”)にし、かつ、FLM10〜13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
一時記憶部21及び演算器選択信号出力部23は、並列度選択コードPSが“2”で、命令コードOPが指示する減算命令SUBが4SIMD対応であるため、2SIMDで実行可能にすべく、命令CM2a〜CM2dからなる高並列命令CM2を、命令CM2a及び命令CM2bからなる第1の部分減算命令(部分並列命令)と、命令CM2c及び命令CM2dからなる第2の部分減算命令とに分割する。
さらに、シーケンス変換部2A内の演算器選択信号出力部23は、2サイクル目で認識した第2の部分加算命令を指示する演算命令選択信号OPSを並列演算器3内のFPU30及び31に与えるとともに、第2の部分加算命令に対応して一時記憶部22に取り込んだソースデータの一部を並列演算器3内のFPU30及び31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D0I20(FLM2[0]),D0I22(FLM2[2]))を出力する。すなわち、「D0Imn」(m=2,3,n=0,2)に対してFLM2mのn番地のデータがソースデータとなる。
そして、並列演算器3内のFPU30,31は、第1の部分加算命令に従い対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D0I00,D0I01)の加算演算を行い、FPU30,31における加算結果DO00,DO01が一時記憶部21に出力される。
(5サイクル目)
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4AはNOP命令を指示する命令コードOPを出力する。このNOP命令は命令CM2のSUB命令直後に挿入されることにより、上述した第1及び第2の部分減算命令を支障無く実行可能にする1サイクル分の時間的余裕を設けている。一時記憶部21及び演算器選択信号出力部23はNOP命令に従い新たな命令に対する実質的な処理は実行しない。なお、NOPフラグNFは“0”にリセットされる。
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4AはNOP命令を指示する命令コードOPを出力する。このNOP命令は命令CM2のSUB命令直後に挿入されることにより、上述した第1及び第2の部分減算命令を支障無く実行可能にする1サイクル分の時間的余裕を設けている。一時記憶部21及び演算器選択信号出力部23はNOP命令に従い新たな命令に対する実質的な処理は実行しない。なお、NOPフラグNFは“0”にリセットされる。
さらに、シーケンス変換部2A内の演算器選択信号出力部23は、4サイクル目で分割した第1の部分減算命令を指示する演算命令選択信号OPSを並列演算器3内のFPU30及びFPU31に与えるとともに、第1の部分減算命令に対応して一時記憶部21に取り込んだソースデータの一部を並列演算器3内のFPU30,31に出力する。例えば、FPU30に対しては減算命令SUBとソースデータ(D1I00(FLM0[0]),D1I01(FLM0[1]))を出力する。すなわち、「D1Imn」(m=0,1,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
そして、並列演算器3内のFPU30及び31は、第2の部分加算命令に従い対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D0I20,D0I21)の加算演算を行い、FPU30及び31における加算結果DO02,DO03が一時記憶部21に出力される。
(6サイクル目)
プログラムカウンタPCが“3”にインクリメントされ、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“3”にインクリメントされ、NOPフラグNFが“0”を維持する。
シーケンス変換部2A内の演算器選択信号出力部23は、4サイクル目で分割した第2の部分減算命令を指示する演算命令選択信号OPSを並列演算器3内のFPU30及び31に与えるとともに、第2の部分減算命令に対応して一時記憶部21に取り込んだソースデータの一部を並列演算器3内のFPU30及び31に出力する。例えば、FPU30に対しては減算命令SUBとソースデータ(D1I20(FLM2[0]),D1I21(FLM2[1]))を出力する。すなわち、「D1Imn」(m=2,3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
そして、並列演算器3内のFPU30,31は、第1の部分減算命令に従い対応するソースデータの減算命令SUBを並列に実行する。例えば、FPU30は減算命令SUBに従い2つのソースデータ(D1I00,D1I01)の減算演算を行い、FPU30,31における減算結果DO10,DO11が一時記憶部21に出力される。
さらに、シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し書き込みイネーブル状態(“H”)にし、かつ、FLM10〜13それぞれの2番地をデスティネーションデータとして、一時記憶部22に取り込んだ加算結果DO00〜DO03を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10〜13の2番地に加算結果DO00〜DO03が書き込まれる。
(7サイクル目)
プログラムカウンタPCが“4”にインクリメントされ、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“4”にインクリメントされ、NOPフラグNFが“0”を維持する。
並列演算器3内のFPU30及び31は、第2の部分減算命令に従い対応するソースデータの減算命令SUBを並列に実行する。例えば、FPU30は減算命令SUBに従い2つのソースデータ(D1I20,D1I21)の減算演算を行い、FPU30及び31における減算結果DO12,DO13が一時記憶部21に出力される。
(8サイクル目)
プログラムカウンタPCが“5”にインクリメントされ、NOPフラグNFが“0”を維持する。
プログラムカウンタPCが“5”にインクリメントされ、NOPフラグNFが“0”を維持する。
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13に関し書き込みイネーブル状態(“H”)にし、かつ、FLM10〜13それぞれの3番地をデスティネーションデータとして、一時記憶部22に取り込んだ減算結果D010〜DO13を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10〜13の3番地に加算結果DO10〜DO13が書き込まれる。
図8に示すように、並列度選択コードPSが“2”の場合においても、FLM10〜13へのアクセスは並列度“4”で行うことにより、読み出し書き込み動作を効率的に行うことができる。
<効果>
上記のように実施の形態1のデータ処理装置では、4SIMDによる処理と2SIMDによる処理が共に実行可能なスケーラブルなH/W構成を実現している。この際、図4及び図6の比較から明らかなように、4SIMD及び2SIMDいずれの対応のプログラム(マイクロコード)も全く同一の命令で記述することができるため、プログラム(命令コード)開発期間の向上に伴い、S/W開発期間を短くすることができる効果を奏する。すなわち、実施の形態1のデータ処理装置は4SIMD及び2SIMDに対応し、かつ、プログラムの開発期間を短縮化を図ることができる効果を奏する。
上記のように実施の形態1のデータ処理装置では、4SIMDによる処理と2SIMDによる処理が共に実行可能なスケーラブルなH/W構成を実現している。この際、図4及び図6の比較から明らかなように、4SIMD及び2SIMDいずれの対応のプログラム(マイクロコード)も全く同一の命令で記述することができるため、プログラム(命令コード)開発期間の向上に伴い、S/W開発期間を短くすることができる効果を奏する。すなわち、実施の形態1のデータ処理装置は4SIMD及び2SIMDに対応し、かつ、プログラムの開発期間を短縮化を図ることができる効果を奏する。
以下、この点を従来技術と比較して説明する。図20は図1に対応する従来の一般的なデータ処理装置の全体構成の概略を示すブロック図である。同図に示すように、データ保持手段51(51A,51B)と並列演算器53(53A,53B)とのデータの授受の制御がシーケンス変換部52によって行われる。シーケンス変換部52はプログラム制御部54からのデコード結果に基づき制御動作を行う。命令保持手段55にはプログラム等に記載された命令を保持しており、プログラム制御部54は命令保持手段5より読み出した命令を解読し、デコード結果を出力する。
図21は図20で示した全体構成において4SIMD対応のデータ処理装置のデータ保持手段51A及び並列演算器53Aの構成を示す説明図である。同図に示すように、データ保持手段51Aは4つのFLM70〜73から構成され、並列演算器53Aは4つのFPU80〜83から構成されることにより、4SIMD対応の構成としている。しかし、4SIMD専用構成であるためシーケンス変換部52Aは単純にFLM70〜73とFPU80〜83とを対応づける制御機能しか有していない。
図22は図20で示した全体構成において2SIMD対応のデータ処理装置のデータ保持手段51B及び並列演算器53Bの構成を示す説明図である。同図に示すように、データ保持手段51Bは2つのFLM75,76から構成され、並列演算器53Bは2つのFPU85,86から構成されることにより、2SIMD対応の構成としている。しかし、2SIMD専用であるためシーケンス変換部52Bは単純にFLM75,76とFPU85,86とを対応づける制御機能しか有していない。
図21で示した4SIMD対応の構成で図4で示した高並列命令(命令CM1及び命令CM2)からなるプログラムを実行する場合、図5で示すような処理と同様な内容で実行される。
図23は、図22で示した2SIMD対応の構成で図4で示したプログラムと等価なプログラム例等を示す説明図である。図23(a) に示すように、プログラムは4SIMDの場合と大きく異なり、命令CM1及びCM2に替えて、並列度が“2”の低並列命令である命令CM21〜CM24で構成する必要がある。命令CM21及びCM22は2つのFLM75,76に対する並列加算命令(ADD)であり、命令CM23及びCM24は2つのFLM75,76に対する並列減算命令(SUB)である。
2SIMDの場合、同図(b) に示すように、プログラムカウンタPCの“0”〜“3”に対応して命令CM21〜CM24が記述され、第1〜第5サイクルにおいて命令CM21が実行され、第2〜第6サイクルにおいて命令CM22が実行され、第3〜第7サイクルにおいて命令CM23が実行され、第4〜第8サイクルにおいて命令CM24が実行される。1つの命令に対応してフェッチ(F)、デコード(D),メモリ読み出し(R)、演算実行(E)及びメモリ書き込み(W)の処理がそれぞれ1サイクル単位で行われる結果、命令CM21〜CM24はパイプライン処理される。
同図(c) に示すように、命令CM21は2つの命令CM21a,CM21bからなり、命令CM22は2つの命令CM22a,CM22bからなり、命令CM22は2つの命令CM23a,CM23bからなり、命令CM24は2つの命令CM24a,CM24bからなる。
このように、4SIMD及び2SIMD対応のプログラム内容は大幅に異なるため、4SIMD及び2SIMDが実行可能なスケーラブルなH/W構成のデータ処理装置を単純に実現しても、実施の形態1のような効果は得ることができない。
図9は図4で示したプログラムに対応する、実施の形態1のデータ保持手段1内におけるFLM10〜13内のメモリ割り当てを模試的に示す説明図である。同図に示すように、FLM10の0〜3番地にはデータx0〜x3を格納し、FLM11の0〜3番地にはデータy0〜y3を格納し、FLM12の0〜3番地にはデータz0〜z3を格納し、FLM11の0〜3番地にはw0〜w3を格納することにより、FLM10〜13の番地とデータとの対応関係が明確になっている。
図24は図23で示したプログラムに対応する、図22で示したデータ保持手段51B内におけるFLM75,76内のメモリ割り当てを模試的に示す説明図である。同図に示すように、FLM75の0,2,4,6番地にはデータx0,x1,x2,x3を格納し、FLM75の1,3,5,7番地にデータz0,z1,z2,z3を格納し、FLM76の0,2,4,6番地にはデータy0,y1,y2,y3を格納し、FLM76の1,3,5,7番地にデータw0,w1,w2,w3を格納する構成を採る必要がある。
このように、SIMD及び2SIMDが実行可能なスケーラブルなH/W構成のデータ処理装置を単純に実現した場合、データ保持手段51B内のFLM75,76内のメモリ割り当ても複雑化してしまう問題点もある。
一方、実施の形態1のデータ処理装置は、4SIMD及び2SIMD対応のプログラム記述内容は同一で、かつ、データ保持手段1内のFLM10〜13内のメモリ割り当ても共通、かつ簡単に行うことができる。
さらに、2SIMD構成の場合でも、並列演算命令については、プログラムのステップ数が4SIMDと同じ半分で済ますことができるため、命令保持手段5のメモリサイズを削減できるという効果も奏する。
このように、実施の形態1のデータ処理装置のシーケンス変換部2Aは、並列度選択コードPSが“2”の低並列実行モード時に、高並列命令を並列度が“2”で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器3を並列度“2”で実行制御するため、共通の高並列命令に対して高並列実行モード(並列度選択コードPSが“4”)及び低並列実行モードの実行制御が可能である。
その結果、実施の形態1のデータ処理装置は、高並列実行モード及び低並列実行モードそれぞれについて共通のプログラムを利用できるため、プログラムの開発期間を短縮できる効果を奏する。
さらに、プログラム制御部4Aは、低並列実行モード時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするためのNOP命令を指示するデコード結果を生成するため、シーケンス制御部2A内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
上述したように、実施の形態1のデータ処理装置による2SIMD用のプログラム実行方式において、図8で示したように、シーケンス変換部2Aによって実現されるシーケンス機能は、プログラム制御部4Aより得られるデコード結果に基づき、並列度が“4”の高並列命令を並列度が“2”で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するため、高並列命令からなるプログラムを、並列度が“2”の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
さらに、プログラム制御部4Aによる解読機能は、低並列実行モードの際、高並列命令直後の命令のデコード結果として、複数の部分並列命令に対応するNOP命令を指示するデコード結果を生成して、複数の部分並列命令を時間的に実行可能にするため、シーケンス変換部2Aによるシーケンス機能にて高並列命令を複数の部分並列命令を分割して実行させてもプログラムの実行に支障をきたすことはない。
さらに、図8で示したプログラム実行方式では、シーケンス変換部2Aによって実現されるシーケンス機能は、複数の部分並列命令を、データ保持機能に関し並列度“4”を満足させながら実行することにより、上述したようにメモリ割り当ての簡略化を図ることができる。
<他の態様>
図10は実施の形態1のデータ処理装置による図6で示した命令CM1及び命令CM2を2SIMD(並列度2)で実行する他の処理内容を示すタイミング図である。以下、同図を参照して、図8で示したタイミング図と処理内容と異なる点のみ説明する。
図10は実施の形態1のデータ処理装置による図6で示した命令CM1及び命令CM2を2SIMD(並列度2)で実行する他の処理内容を示すタイミング図である。以下、同図を参照して、図8で示したタイミング図と処理内容と異なる点のみ説明する。
(2サイクル目)
ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11に関してのみ読み出しイネーブル状態にし、かつ、FLM10,11それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11に関してのみ読み出しイネーブル状態にし、かつ、FLM10,11それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
(3サイクル目)
2サイクル目で受けたソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13に関してのみ読み出しイネーブル状態にし、かつ、FLM12,13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
2サイクル目で受けたソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13に関してのみ読み出しイネーブル状態にし、かつ、FLM12,13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
(4サイクル目)
ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し読み出しイネーブル状態にし、かつ、FLM10,11それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し読み出しイネーブル状態にし、かつ、FLM10,11それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
(5サイクル目)
4サイクル目で受けたソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し読み出しイネーブル状態にし、かつ、FLM12,13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
4サイクル目で受けたソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し読み出しイネーブル状態にし、かつ、FLM12,13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMCを出力する。
さらに、シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し書き込みイネーブル状態にし、かつ、FLM10,11それぞれの2番地をデスティネーションデータとして、一時記憶部22に取り込んだ加算結果DO00,DO01を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10,11の2番地に加算結果DO00,DO01が書き込まれる。
(6サイクル目)
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し書き込みイネーブル状態にし、かつ、FLM12,12それぞれの2番地をデスティネーションデータとして、一時記憶部22に取り込んだ加算結果DO02,DO03を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM12,13の2番地に加算結果DO02,DO03が書き込まれる。
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し書き込みイネーブル状態にし、かつ、FLM12,12それぞれの2番地をデスティネーションデータとして、一時記憶部22に取り込んだ加算結果DO02,DO03を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM12,13の2番地に加算結果DO02,DO03が書き込まれる。
(7サイクル目)
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し書き込みイネーブル状態にし、かつ、FLM10,11それぞれの3番地をデスティネーションデータとして、一時記憶部22に取り込んだ減算結果DO10,DO11を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10,11の3番地に減算結果DO10,DO11が書き込まれる。
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し書き込みイネーブル状態にし、かつ、FLM10,11それぞれの3番地をデスティネーションデータとして、一時記憶部22に取り込んだ減算結果DO10,DO11を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM10,11の3番地に減算結果DO10,DO11が書き込まれる。
(8サイクル目)
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し書き込みイネーブル状態にし、かつ、FLM12,13それぞれの3番地をデスティネーションデータとして、一時記憶部22に取り込んだ減算結果DO12,DO13を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM12,13の2番地に減算結果DO12,DO13が書き込まれる。
シーケンス変換部2A内において、メモリ制御信号生成部24は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し書き込みイネーブル状態にし、かつ、FLM12,13それぞれの3番地をデスティネーションデータとして、一時記憶部22に取り込んだ減算結果DO12,DO13を書き込むためのメモリ制御信号SMCを出力する。その結果、FLM12,13の2番地に減算結果DO12,DO13が書き込まれる。
このように、データ保持手段1から一時記憶部21への読み出し、書き込みも、2SIMDに併せて、2つのFLM単位(2メモリバンク他に)で行う態様も可能である。
図10を用いて説明したように、並列度選択コードPSが“2”の場合に併せて、FLM10〜13へのアクセスも並列度“2”で行うことにより、並列演算器3及びデータ保持手段1に対する並列度を“2”で統一した制御が可能となる。
また、並列度“4”の高並列実行モードと並列度“2”の低並列実行モードとを切り換えることにより、高並列と低並列の比を2:1にした性能とコストのバランスの良い利用が可能となる。
<実施の形態2>
図11はこの発明の実施の形態2であるデータ処理装置のデータ保持手段1及び並列演算器3の構成を示す説明図である。同図に示すように、データ保持手段1は4つのFLM10〜13から構成され、並列演算器3は4つのFPU30〜33から構成されることにより、基本構成を4SIMDとしている。そして、データ保持手段1,並列演算器3間のデータの授受の制御はシーケンス変換部2Bによって行われる。シーケンス変換部2Bは、後に詳述するが、並列演算器3内においてFPU30,31からなる減縮並列演算部3aと、FPU32,FPU33からなる減縮並列演算部3bとを選択的に制御する機能を有している。
図11はこの発明の実施の形態2であるデータ処理装置のデータ保持手段1及び並列演算器3の構成を示す説明図である。同図に示すように、データ保持手段1は4つのFLM10〜13から構成され、並列演算器3は4つのFPU30〜33から構成されることにより、基本構成を4SIMDとしている。そして、データ保持手段1,並列演算器3間のデータの授受の制御はシーケンス変換部2Bによって行われる。シーケンス変換部2Bは、後に詳述するが、並列演算器3内においてFPU30,31からなる減縮並列演算部3aと、FPU32,FPU33からなる減縮並列演算部3bとを選択的に制御する機能を有している。
図12は図11で示したシーケンス変換部2Bの詳細を示すブロック図である。同図に示すように、シーケンス変換部2Bは一時記憶部21、演算器選択信号出力部25及びメモリ制御信号生成部26より構成される。
プログラム制御部4Bはプログラム内の命令を順次解読して、デコード結果として演算器選択コードOS、命令コードOP及びソース/デスティネーションコードSDCを出力する。
演算器選択信号出力部25は並列演算器3内の減縮並列演算部3a用に演算命令選択信号OPS1を出力し、減縮並列演算部3b用に演算命令選択信号OPS2を出力する。同様にして、メモリ制御信号生成部26はデータ保持手段1内のFPU30,31用にメモリ制御信号SMC1を出力し、FPU32,33用にメモリ制御信号SMC2を出力する。
シーケンス変換部2B内の一時記憶部21及び演算器選択信号出力部25はプログラム制御部4Bより演算器選択コードOS及び命令コードOPを受ける。演算器選択コードOSは並列演算器3内におけるFPU30〜33全て、減縮並列演算部3a、及び減縮並列演算部3bのうちいずれを選択するかを示すコードであり、FPU30〜33のうち全てを並列演算に用いる場合は演算器選択コードOSは“0”とされ、減縮並列演算部3a用いる場合は演算器選択コードOS“1”とされ、減縮並列演算部3bを用いる場合は演算器選択コードOSは“2”とされる。なお、演算器選択コードOSの内容はデコードする命令によって決定される。すなわち、デコード対象の命令が並列度“4”を要求する高並列命令である場合は演算器選択コードOSが“0”とされ、命令が並列度“2”を要求する低並列命令である場合は演算器選択コードOSが“1”あるいは“2”とされる。
メモリ制御信号生成部26はプログラム制御部4Bより得られるソース/デスティネーションコードSDCに基づき、読み出し及び書き込みに関するメモリ制御信号SMC1及びSMC2をデータ保持手段1に出力する。この際、データ保持手段1より読み出したソースデータを一時記憶部21に保存したり、一時記憶部21に保存した演算結果データを一時記憶部21に格納したりする。
一時記憶部21はデータ保持手段1,並列演算器3間のデータ授受を行うべく、データ保持手段1あるいは並列演算器3より得られたデータを一時的に記憶する。
<4SIMD実行>
図13は実施の形態2のデータ処理装置に関し、4SIMDに対応するプログラム例等を示す説明図である。図13(a) に示すように、プログラムは命令CM31〜CM33からなり、命令CM31は2つのFLM10,11に対しFPU30,31を用いた並列度“2”の並列加算命令(ADD1)であり、命令CM32は2つのFLM12,13に対しFPU32,33を用いた並列度“2”の並列減算命令(SUB2)であり、命令CM33は4つのFLM10〜13に対しFPU30〜33を用いた並列度“4”の並列加算命令(ADD0)である。
図13は実施の形態2のデータ処理装置に関し、4SIMDに対応するプログラム例等を示す説明図である。図13(a) に示すように、プログラムは命令CM31〜CM33からなり、命令CM31は2つのFLM10,11に対しFPU30,31を用いた並列度“2”の並列加算命令(ADD1)であり、命令CM32は2つのFLM12,13に対しFPU32,33を用いた並列度“2”の並列減算命令(SUB2)であり、命令CM33は4つのFLM10〜13に対しFPU30〜33を用いた並列度“4”の並列加算命令(ADD0)である。
上述した命令CM31,CM32は並列度が“2”の低並列命令となり、命令CM33は並列度が“4”の高並列命令となる。このように、実施の形態2のデータ処理装置は、4SIMD実行段階において2SIMD対応の低並列命令(CM31,CM32等)を併せて実行する場合を想定している。
2SIMD混在4SIMDの命令群を実行する場合、同図(b) に示すように、プログラムカウンタPCの“0”〜“2”に対応して命令CM31〜CM33が記述され、第1〜第5サイクルにおいて命令CM31が実行され、第2〜第6サイクルにおいて命令CM32が実行され、第3〜第7サイクルにおいて命令CM32が実行される。1つの命令に対応してフェッチ(F)、デコード(D),メモリ読み出し(R)、演算実行(E)及びメモリ書き込み(W)の処理がそれぞれ1サイクル単位で行われる結果、命令CM31〜CM33はパイプライン処理される。
同図(c) に示すように、命令CM31は2つの命令CM31a,CM31bからなり、例えば、命令CM31aはFLM10(図中、FLM0)の0番地のソースデータと、FLM10の1番地のソースデータとの和を、FLM10のソースデータの2番地のアドレスに書き込むことを意味する。命令CM31bの処理も同様にFLM11に対して行われる。なお、「FLMi[j]」において、iはFLM1iを意味し、jは該当FLM1iのアドレスを意味する。
同様にして、命令CM32は2つの命令CM32a,CM32bからなり、例えば、命令CM32aはFLM12(図中、FLM2)の0番地のソースデータと、FLM12の1番地のソースデータとの差を、FLM12のソースデータの3番地のアドレスに書き込むことを意味する。命令CM32bの処理も同様にFLM13に対して行われる。
一方、命令CM33は4つの命令CM33a〜CM33dからなり、例えば、命令CM33aはFLM10の0番地のソースデータと、FLM10の1番地のソースデータとの差を、FLM10のソースデータの4番地のアドレスに書き込むことを意味する。命令CM33b〜CM33dの処理も同様に、FLM11〜13に対して行われる加算命令を意味する。
図14は実施の形態2のデータ処理装置による図13で示した命令CM31〜CM33を一部2SIMD混在の4SIMD(並列度4)で実行する処理内容を示すタイミング図である。以下、同図を参照して、その実行内容をサイクル単位で説明する。
(1サイクル目)
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM31をプログラム制御部4Bでフェッチする。
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM31をプログラム制御部4Bでフェッチする。
(2サイクル目)
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4Bが命令CM31の命令コードをデコードする。その結果、プログラム制御部4Bは、デコード結果として、加算命令ADDを指示する命令コードOPと、“1”(減縮並列演算部3a)を指示する演算器選択コードOSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。また、演算器選択コードOSが“1”であるため、並列演算器3内の対象はFPU30,31であり、データ保持手段1内の対象はFLM10,11であることが認識される。すなわち、演算器選択コードOSはFLM選択機能を兼ねている。
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4Bが命令CM31の命令コードをデコードする。その結果、プログラム制御部4Bは、デコード結果として、加算命令ADDを指示する命令コードOPと、“1”(減縮並列演算部3a)を指示する演算器選択コードOSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。また、演算器選択コードOSが“1”であるため、並列演算器3内の対象はFPU30,31であり、データ保持手段1内の対象はFLM10,11であることが認識される。すなわち、演算器選択コードOSはFLM選択機能を兼ねている。
そして、シーケンス変換部2B内において、演算器選択信号出力部25及び一時記憶部21は演算器選択コードOS及び命令コードOPを入力し、メモリ制御信号生成部26は演算器選択コードOS及びソース/デスティネーションコードSDCを入力する。上述したように、演算器選択コードOSが“1”、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し読み出しイネーブル状態(“H”)にし、かつ、FLM10,11それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMC1を出力する。この際、メモリ制御信号SMC2は読み出しディスネーブル(“L”)を指示する信号となる。
そして、命令保持手段5の1番地の命令CM32がプログラム制御部4Bにフェッチされる。
(3サイクル目)
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4Bが命令CM32の命令コードをデコードする。その結果、プログラム制御部4Bは、デコード結果として、減算命令SUBを指示する命令コードOPと、“2”(減縮並列演算部3b)を指示する演算器選択コードOSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。また、演算器選択コードOSが“2”であるため、並列演算器3内の対象はFPU32,33であり、データ保持手段1内の対象はFLM12,13であることが認識される。
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4Bが命令CM32の命令コードをデコードする。その結果、プログラム制御部4Bは、デコード結果として、減算命令SUBを指示する命令コードOPと、“2”(減縮並列演算部3b)を指示する演算器選択コードOSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。また、演算器選択コードOSが“2”であるため、並列演算器3内の対象はFPU32,33であり、データ保持手段1内の対象はFLM12,13であることが認識される。
そして、シーケンス変換部2B内において、演算器選択信号出力部25及び一時記憶部21は演算器選択コードOS及び命令コードOPを入力し、メモリ制御信号生成部26は演算器選択コードOS及びソース/デスティネーションコードSDCを入力する。上述したように、演算器選択コードOSが“2”で、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し読み出しイネーブル状態にし、かつ、FLM12,13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMC2を出力する。この際、メモリ制御信号SMC1は読み出しディスネーブルを指示する信号となる。
さらに、シーケンス変換部2B内の演算器選択信号出力部25は、2サイクル目で認識した加算命令ADDを指示する演算命令選択信号OPS1及び一時記憶部21に取り込んだソースデータを並列演算器3内のFPU30,31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D0I00(FLM0[0]),D0I01(FLM0[1]))を出力する。すなわち、「D0Imn」(m=0,1,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。このとき、演算命令選択信号OPS2ディスネール状態となるため、対応のFPU32,33が動作することはない。
そして、命令保持手段5の2番地の命令CM33がプログラム制御部4Bにフェッチされる。
(4サイクル目)
プログラムカウンタPCが“3”にインクリメントされ、プログラム制御部4Bが命令CM33の命令コードをデコードする。その結果、プログラム制御部4Bは、デコード結果として、加算命令ADDを指示する命令コードOPと、並列演算器3内のFPU30〜33(“0”)を指示する演算器選択コードOSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(4)」を指示するソース/デスティネーションコードSDCを出力する。また、演算器選択コードOSが“0”であるため、並列演算器3内の対象はFPU30〜33であり、データ保持手段1内の対象はFLM10〜13であることが認識される。
プログラムカウンタPCが“3”にインクリメントされ、プログラム制御部4Bが命令CM33の命令コードをデコードする。その結果、プログラム制御部4Bは、デコード結果として、加算命令ADDを指示する命令コードOPと、並列演算器3内のFPU30〜33(“0”)を指示する演算器選択コードOSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(4)」を指示するソース/デスティネーションコードSDCを出力する。また、演算器選択コードOSが“0”であるため、並列演算器3内の対象はFPU30〜33であり、データ保持手段1内の対象はFLM10〜13であることが認識される。
そして、シーケンス変換部2B内において、演算器選択信号出力部25及び一時記憶部21は演算器選択コードOS及び命令コードOPを入力し、メモリ制御信号生成部26は演算器選択コードOS及びソース/デスティネーションコードSDCを入力する。上述したように、演算器選択コードOSが“0”で、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13すべてを読み出しイネーブル状態にし、かつ、FLM10〜13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部21に取り込むためのメモリ制御信号SMC1及びSMC2を出力する。
シーケンス変換部2B内の演算器選択信号出力部25は、3サイクル目で認識した減算命令SUBを指示する演算命令選択信号OPS2及び一時記憶部21に取り込んだソースデータを並列演算器3内のFPU32,33に出力する。例えば、FPU32に対しては減算命令SUBとソースデータ(D1I20(FLM2[0]),D1I21(FLM2[1]))を出力する。すなわち、「D1Imn」(m=2,3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。このとき、演算命令選択信号OPS1ディスネール状態となるため、対応のFPU30,31が動作することはない。
そして、並列演算器3内のFPU30,31は対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D0I00,D0I01)の加算演算を行う。そして、FPU30,31における加算結果DO00,DO01が一時記憶部21に出力される。
(5サイクル目)
プログラムカウンタPCが“4”にインクリメントされる。シーケンス変換部2B内の演算器選択信号出力部25は、4サイクル目で認識した加算命令ADDを指示する演算命令選択信号OPS1,OPS2及び一時記憶部21に取り込んだソースデータを並列演算器3内のFPU30〜33に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D2I00(FLM0[0]),D2I01(FLM0[1]))を出力する。すなわち、「D2Imn」(m=0〜3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
プログラムカウンタPCが“4”にインクリメントされる。シーケンス変換部2B内の演算器選択信号出力部25は、4サイクル目で認識した加算命令ADDを指示する演算命令選択信号OPS1,OPS2及び一時記憶部21に取り込んだソースデータを並列演算器3内のFPU30〜33に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D2I00(FLM0[0]),D2I01(FLM0[1]))を出力する。すなわち、「D2Imn」(m=0〜3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
並列演算器3内のFPU32,33は対応するソースデータの減算命令SUBを並列に実行する。例えば、FPU32は減算命令SUBに従い2つのソースデータ(D1I20,D1I11)の減算演算を行う。そして、FPU32,33における減算結果DO12,DO13が一時記憶部21に出力される。
そして、シーケンス変換部2B内において、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し書き込みイネーブル状態にし、かつ、FLM10,11それぞれの2番地をデスティネーションデータとして、一時記憶部21に取り込んだ加算結果DO00,DO01を書き込むためのメモリ制御信号SMC1を出力する。その結果、FLM10,11の2番地に加算結果DO00,DO01が書き込まれる。この際、メモリ制御信号SMC2は書き込みディスネーブルを指示する信号となる。
(6サイクル目)
プログラムカウンタPCが“5”にインクリメントされる。並列演算器3内のFPU30〜33は対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D2I00,D2I01)の加算演算を行う。そして、FPU30〜33における加算結果DO20〜DO23が一時記憶部21に出力される。
プログラムカウンタPCが“5”にインクリメントされる。並列演算器3内のFPU30〜33は対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D2I00,D2I01)の加算演算を行う。そして、FPU30〜33における加算結果DO20〜DO23が一時記憶部21に出力される。
そして、シーケンス変換部2B内において、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し書き込みイネーブル状態にし、かつ、FLM12,13それぞれの3番地をデスティネーションデータとして、一時記憶部21に取り込んだ減算結果DO12,DO13を書き込むためのメモリ制御信号SMC2を出力する。その結果、FLM12,13の3番地に減算結果DO12,DO13が書き込まれる。この際、メモリ制御信号SMC1は読み出しディスネーブルを指示する信号となる。
(7サイクル目)
プログラムカウンタPCが“6”にインクリメントされる。シーケンス変換部2B内において、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13すべてを書き込みイネーブル状態にし、かつ、FLM10〜13それぞれの4番地をデスティネーションデータとして、一時記憶部21に取り込んだ減算結果DO20〜DO23を書き込むためのメモリ制御信号SMC1及びSMC2を出力する。その結果、FLM10〜13の4番地に加算結果DO20〜DO23が書き込まれる。
プログラムカウンタPCが“6”にインクリメントされる。シーケンス変換部2B内において、メモリ制御信号生成部26は、メモリ4バンクであるFLM10〜13すべてを書き込みイネーブル状態にし、かつ、FLM10〜13それぞれの4番地をデスティネーションデータとして、一時記憶部21に取り込んだ減算結果DO20〜DO23を書き込むためのメモリ制御信号SMC1及びSMC2を出力する。その結果、FLM10〜13の4番地に加算結果DO20〜DO23が書き込まれる。
<効果>
このように、実施の形態2のデータ処理装置では、並列度が“2”の命令に対応して、並列演算器3を減縮並列演算部3aと減縮並列演算部3bとのグループに分けて指定することができるため、2D(2次元処理)のような2成分の演算と3D(3次元処理)のような4成分の演算を混在して行うことが可能となる効果を奏する。
このように、実施の形態2のデータ処理装置では、並列度が“2”の命令に対応して、並列演算器3を減縮並列演算部3aと減縮並列演算部3bとのグループに分けて指定することができるため、2D(2次元処理)のような2成分の演算と3D(3次元処理)のような4成分の演算を混在して行うことが可能となる効果を奏する。
例えば、2Dと3Dの機能を1つの4SIMD専用のデータ処理装置で実現する場合、2Dの処理をする時も4つの演算器(FPU)を全て動作させてしまう。実施の形態2のデータ処理装置によれば、演算命令選択信号OPS1及びOPS2の一方をディスネーブル状態にすることにより、動作する演算器を選択できるため、不要な演算器を動作させないことに伴い低消費電力化が図れる効果を奏する。
また、高並列命令の並列度“4”と低並列命令の並列度“2”を併用することにより、高並列と低並列の比を2:1にした性能とコストのバランスの良い利用が可能となる。
<実施の形態3>
図15はこの発明の実施の形態3であるデータ処理装置のデータ保持手段1及び並列演算器7の構成を示す説明図である。同図に示すように、データ保持手段1は4つのFLM10〜13から構成され、並列演算器7は2つのFPU30,31から構成されることにより、基本構成を2SIMD(並列演算器7の並列度が“2”、データ保持手段1の並列度が“4”)としている。そして、データ保持手段1,並列演算器7間のデータの授受の制御はシーケンス変換部2Cによって行われる。
図15はこの発明の実施の形態3であるデータ処理装置のデータ保持手段1及び並列演算器7の構成を示す説明図である。同図に示すように、データ保持手段1は4つのFLM10〜13から構成され、並列演算器7は2つのFPU30,31から構成されることにより、基本構成を2SIMD(並列演算器7の並列度が“2”、データ保持手段1の並列度が“4”)としている。そして、データ保持手段1,並列演算器7間のデータの授受の制御はシーケンス変換部2Cによって行われる。
図16は図15で示したシーケンス変換部2Cの詳細を示すブロック図である。同図に示すように、シーケンス変換部2Cは一時記憶部27、演算器選択信号出力部28及びメモリ制御信号生成部29より構成される。
プログラム制御部4Cはプログラム内の命令を順次解読して、デコード結果として命令コードOP、演算モード選択コードOMS、FLM選択コードFMS及びソース/デスティネーションコードSDCを出力する。
演算器選択信号出力部28は並列演算器3に対し演算命令選択信号OPSを出力し、メモリ制御信号生成部29はデータ保持手段1内のFPU30,31用にメモリ制御信号SMC1を出力し、FPU32,33用にメモリ制御信号SMC2を出力する。
シーケンス変換部2C内の一時記憶部27及び演算器選択信号出力部28はプログラム制御部4Cより演算モード選択コードOMS、FLM選択コードFMS及び命令コードOPを受ける。演算モード選択コードOMSはFLM10〜13のうち4個のFLMをアクセス対象にするか、2個のFLMをアクセス対象にするかを指示するコードであり、FLM10〜13のうち全ての格納データを並列演算に用いる場合は演算モード選択コードOMSは“4”とされ、FLM10、11あるいはFLM12,13を用いる場合は演算モード選択コードOMSは“2”とされる。また、演算モード選択コードOMSが“2”のとき、FLM選択コードFMSが“1”の場合はFLM10,11がアクセス対象となり、FLM選択コードFMSが“2”の場合はFLM12,13がアクセス対象となる。なお、演算モード選択コードOMS及びFLM選択コードFMSの内容はデコードする命令によって決定される。
メモリ制御信号生成部29はプログラム制御部4Cより得られるFLM選択コードFMS及びソース/デスティネーションコードSDCに基づき、読み出し及び書き込みに関するメモリ制御信号SMC1及びSMC2メモリ制御信号MCSをデータ保持手段1に出力する。この際、データ保持手段1より読み出したソースデータを一時記憶部27に保存したり、一時記憶部27に保存した演算結果データを一時記憶部27に格納したりする。
一時記憶部27はデータ保持手段1,並列演算器7間のデータ授受を行うべく、データ保持手段1あるいは並列演算器7より得られたデータを一時的に記憶する。
<2SIMD実行>
図17は実施の形態3のデータ処理装置に関し、2SIMDに対応するプログラム例等を示す説明図である。図17(a) に示すように、プログラムは命令CM41〜CM43からなり、命令CM41は2つのFLM10,11に対しFPU30,31を用いた並列度“2”,演算モード“2”の並列加算命令(ADD1)であり、命令CM42は2つのFLM12,13に対しFPU30,31を用いた並列度“2”、演算モード“2”の並列減算命令(SUB2)であり、命令CM43は4つのFLM10〜13に対しFPU30,31を用いた並列度“4”,演算モード“4”の並列加算命令(ADD0)である。このように、実施の形態3のデータ処理装置は、2SIMD実行段階において4SIMD対応の命令(CM43)を併せて実行する場合を想定している。
図17は実施の形態3のデータ処理装置に関し、2SIMDに対応するプログラム例等を示す説明図である。図17(a) に示すように、プログラムは命令CM41〜CM43からなり、命令CM41は2つのFLM10,11に対しFPU30,31を用いた並列度“2”,演算モード“2”の並列加算命令(ADD1)であり、命令CM42は2つのFLM12,13に対しFPU30,31を用いた並列度“2”、演算モード“2”の並列減算命令(SUB2)であり、命令CM43は4つのFLM10〜13に対しFPU30,31を用いた並列度“4”,演算モード“4”の並列加算命令(ADD0)である。このように、実施の形態3のデータ処理装置は、2SIMD実行段階において4SIMD対応の命令(CM43)を併せて実行する場合を想定している。
4SIMD混在2SIMDの命令群を実行する場合、同図(b) に示すように、プログラムカウンタPCの“0”〜“2”(s)に対応して命令CM41〜CM43が記述され、第1〜第5サイクルにおいて命令CM41が実行され、第2〜第6サイクルにおいて命令CM42が実行され、第3〜第8サイクルにおいて命令CM43が実行される。命令CM41,CM42等の2SIMD対応の命令に対応してフェッチ(F)、デコード(D),メモリ読み出し(R)、演算実行(E)及びメモリ書き込み(W)の処理がそれぞれ1サイクル単位で行われ、命令CM43の4SIMD対応の命令に対応してフェッチ(F)、デコード(D),メモリ読み出し(R)、演算実行(E,E(2サイクル))及びメモリ書き込み(W)の処理がそれぞれ1サイクル単位で行われ、結果、命令CM41〜CM43はパイプライン処理される。
同図(c) に示すように、命令CM41は2つの命令CM41a,CM41bからなり、例えば、命令CM41aはFLM10(図中、FLM0)の0番地のソースデータと、FLM10の1番地のソースデータとの和を、FLM10のソースデータの2番地のアドレスに書き込むことを意味する。命令CM41bの処理も同様にFLM11に対して行われる。なお、「FLMi[j]」において、iはFLM1iを意味し、jは該当FLM1iのアドレスを意味する。
同様にして、命令CM42は2つの命令CM42a,CM42bからなり、例えば、命令CM42aはFLM12(図中、FLM2)の0番地のソースデータと、FLM12の1番地のソースデータとの差を、FLM12のソースデータの3番地のアドレスに書き込むことを意味する。命令CM42bの処理もFLM13に対して同様に行われる。
一方、命令CM43は4つの命令CM43a〜CM43dからなり、例えば、命令CM43aはFLM10の0番地のソースデータと、FLM10の1番地のソースデータとの差を、FLM10のソースデータの4番地のアドレスに書き込むことを意味する。命令CM43b〜CM43dの処理も同様に、FLM11〜13に対して行われる加算命令を意味する。
図18は実施の形態3のデータ処理装置による図17で示した命令CM41〜CM43を一部4SIMD混在の2SIMD(並列度2)で実行する処理内容を示すタイミング図である。以下、同図を参照して、その実行内容をサイクル単位で説明する。
(1サイクル目)
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM41をプログラム制御部4Cでフェッチする。
プログラムカウンタPCが初期値“0”から開始され、 命令メモリである命令保持手段5から0番地の命令CM41をプログラム制御部4Cでフェッチする。
(2サイクル目)
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4Cが命令CM41の命令コードをデコードする。その結果、プログラム制御部4Cは、デコード結果として、加算命令ADDを指示する命令コードOPと、“2”を指示する演算モード選択コードOMSと、“1”を指示するFLM選択コードFMSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。また、FLM選択コードFMS“1”であるため、データ保持手段1内の読み出し対象FLM10,11であることが認識される。
プログラムカウンタPCが“1”にインクリメントされ、プログラム制御部4Cが命令CM41の命令コードをデコードする。その結果、プログラム制御部4Cは、デコード結果として、加算命令ADDを指示する命令コードOPと、“2”を指示する演算モード選択コードOMSと、“1”を指示するFLM選択コードFMSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(2)」を指示するソース/デスティネーションコードSDCを出力する。また、FLM選択コードFMS“1”であるため、データ保持手段1内の読み出し対象FLM10,11であることが認識される。
そして、シーケンス変換部2C内において、演算器選択信号出力部28及び一時記憶部27は演算モード選択コードOMS、FLM選択コードFMS及び命令コードOPを入力し、メモリ制御信号生成部29は演算モード選択コードOMS、FLM選択コードFMS及びソース/デスティネーションコードSDCを入力する。上述したように、演算モード選択コードOMSが“2”、FLM選択コードFMSが“1”、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し読み出しイネーブル状態(“H”)にし、かつ、FLM10,11それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部27に取り込むためのメモリ制御信号SMC1を出力する。この際、メモリ制御信号SMC2は読み出しディスネーブル(“L”)を指示する信号となる。
そして、命令保持手段5の1番地の命令CM42がプログラム制御部4Cにフェッチされる。
(3サイクル目)
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4Cが命令CM42の命令コードをデコードする。その結果、プログラム制御部4Cは、減算命令SUBを指示する命令コードOPと、“2”を指示する演算モード選択コードOMSと、“2”を指示するFLM選択コードFMSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。
プログラムカウンタPCが“2”にインクリメントされ、プログラム制御部4Cが命令CM42の命令コードをデコードする。その結果、プログラム制御部4Cは、減算命令SUBを指示する命令コードOPと、“2”を指示する演算モード選択コードOMSと、“2”を指示するFLM選択コードFMSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(3)」を指示するソース/デスティネーションコードSDCを出力する。
そして、シーケンス変換部2C内において、演算器選択信号出力部28及び一時記憶部27は演算モード選択コードOMS、FLM選択コードFMS及び命令コードOPを入力し、メモリ制御信号生成部29は演算モード選択コードOMS、FLM選択コードFMS及びソース/デスティネーションコードSDCを入力する。上述したように、演算モード選択コードOMSが“2”で、FLM選択コードFMSが“2”で、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し読み出しイネーブル状態にし、かつ、FLM12,13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部27に取り込むためのメモリ制御信号SMC2を出力する。この際、メモリ制御信号SMC1は読み出しディスネーブルを指示する信号となる。
さらに、シーケンス変換部2C内の演算器選択信号出力部28は、2サイクル目で認識した加算命令ADDを指示する演算命令選択信号OPS及び一時記憶部27に取り込んだソースデータを並列演算器7内のFPU30,31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D0I00(FLM0[0]),D0I01(FLM0[1]))を出力する。すなわち、「D0Imn」(m=0,1,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
そして、命令保持手段5の2番地の命令CM43がプログラム制御部4Cにフェッチされる。
(4サイクル目)
プログラム制御部4Cが命令CM43の命令コードをデコードする。その結果、プログラム制御部4Cは、デコード結果として、加算命令ADDを指示する命令コードOPと、“4”を指示する演算モード選択コードOMSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(4)」を指示するソース/デスティネーションコードSDCを出力する。また、演算モード選択コードOMSが“4”であるため、データ保持手段1内の対象はFLM10〜13であることが認識される。
プログラム制御部4Cが命令CM43の命令コードをデコードする。その結果、プログラム制御部4Cは、デコード結果として、加算命令ADDを指示する命令コードOPと、“4”を指示する演算モード選択コードOMSと、ソースデータの格納箇所である「FLM(0),FLM(1)」及びデスティネーションデータの格納場所である「FLM(4)」を指示するソース/デスティネーションコードSDCを出力する。また、演算モード選択コードOMSが“4”であるため、データ保持手段1内の対象はFLM10〜13であることが認識される。
また、演算モード選択コードOMSが“4”であるため、NOPフラグNFが“1”にセットされ、プログラムカウンタPCはインクリメントされることなく“2”を維持する。したがって、新たな命令のフェッチは行われない。
一時記憶部27及び演算器選択信号出力部28は、演算モード選択コードOMSが“4”で、命令コードOPが指示する加算命令ADDが4SIMD対応であるため、2SIMDで実行可能にすべく、命令CM43a〜CM43dからなる高並列命令CM43を、命令CM43a及び命令CM43bからなる第1の部分加算命令(部分並列命令)と、命令CM3c及び命令CM43dからなる第2の部分加算命令とに分割する。
そして、シーケンス変換部2C内において、演算器選択信号出力部28及び一時記憶部27は演算モード選択コードOMS及び命令コードOPを入力し、メモリ制御信号生成部29は演算モード選択コードOMS及びソース/デスティネーションコードSDCを入力する。上述したように、演算モード選択コードOMSが“4”で、ソース/デスティネーションコードSDCはソースデータは「FLM(0),FLM(1)」を指示するため、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13すべてを読み出しイネーブル状態にし、かつ、FLM10〜13それぞれの0番地及び1番地の格納データをソースデータとして一時記憶部27に取り込むためのメモリ制御信号SMC1及びSMC2を出力する。
シーケンス変換部2C内の演算器選択信号出力部28は、3サイクル目で認識した減算命令SUBを指示する演算命令選択信号OPS及び一時記憶部27に取り込んだソースデータを並列演算器7内のFPU30,31に出力する。例えば、FPU30に対しては減算命令SUBとソースデータ(D1I20(FLM2[0]),D1I21(FLM2[1]))を出力する。すなわち、「D1Imn」(m=2,3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
そして、並列演算器7内のFPU30,31は対応するソースデータの加算命令ADDを並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D0I00,D0I01)の加算演算を行う。そして、FPU30,31における加算結果DO00,DO01が一時記憶部27に出力される。
(5サイクル目)
プログラムカウンタPCが“3”にインクリメントされ、プログラム制御部4CはNOP命令を指示する命令コードOPを出力する。このNOP命令は命令CM43のADD命令直後に挿入されることにより、上述した第1及び第2の部分加算命令を支障無く実行可能にする1サイクル分の時間的余裕を設けている。一時記憶部21及び演算器選択信号出力部23はNOP命令に従い新たな命令に対する実質的な処理は実行しない。なお、NOPフラグNFは“0”にリセットされる。
プログラムカウンタPCが“3”にインクリメントされ、プログラム制御部4CはNOP命令を指示する命令コードOPを出力する。このNOP命令は命令CM43のADD命令直後に挿入されることにより、上述した第1及び第2の部分加算命令を支障無く実行可能にする1サイクル分の時間的余裕を設けている。一時記憶部21及び演算器選択信号出力部23はNOP命令に従い新たな命令に対する実質的な処理は実行しない。なお、NOPフラグNFは“0”にリセットされる。
シーケンス変換部2C内の演算器選択信号出力部28は、4サイクル目で分割した加算命令ADDにおける第1の部分加算命令を指示する演算命令選択信号OPS及び一時記憶部27に取り込んだソースデータを並列演算器7内のFPU30,31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D2I00(FLM0[0]),D2I01(FLM0[1]))を出力する。すなわち、「D2Imn」(m=0,1,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
並列演算器7内のFPU30,31は対応するソースデータの減算命令SUBを並列に実行する。例えば、FPU30は減算命令SUBに従い2つのソースデータ(D1I20,D1I11)の減算演算を行う。そして、FPU30,31における減算結果DO12,DO13が一時記憶部27に出力される。
そして、シーケンス変換部2C内において、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13のうちFLM10,11のみに関し書き込みイネーブル状態にし、かつ、FLM10,11それぞれの2番地をデスティネーションデータとして、一時記憶部27に取り込んだ加算結果DO00,DO01を書き込むためのメモリ制御信号SMC1を出力する。その結果、FLM10,11の2番地に加算結果DO00,DO01が書き込まれる。この際、メモリ制御信号SMC2は書き込みディスネーブルを指示する信号となる。
(6サイクル目)
プログラムカウンタPCが“4”にインクリメントされる。シーケンス変換部2C内の演算器選択信号出力部28は、4サイクル目で分割した加算命令ADDにおける第2の部分加算命令を指示する演算命令選択信号OPS及び一時記憶部27に取り込んだソースデータを並列演算器7内のFPU30,31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D2I20(FLM2[0]),D2I21(FLM2[1]))を出力する。すなわち、「D2Imn」(m=2,3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
プログラムカウンタPCが“4”にインクリメントされる。シーケンス変換部2C内の演算器選択信号出力部28は、4サイクル目で分割した加算命令ADDにおける第2の部分加算命令を指示する演算命令選択信号OPS及び一時記憶部27に取り込んだソースデータを並列演算器7内のFPU30,31に出力する。例えば、FPU30に対しては加算命令ADDとソースデータ(D2I20(FLM2[0]),D2I21(FLM2[1]))を出力する。すなわち、「D2Imn」(m=2,3,n=0,1)に対してFLM1mのn番地のデータがソースデータとなる。
並列演算器7内のFPU30,31は対応するソースデータの加算命令ADDにおける第1の部分加算命令を並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D2I00,D2I01)の加算演算を行う。そして、FPU30,31における加算結果DO20,DO21が一時記憶部27に出力される。
そして、シーケンス変換部2C内において、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13のうちFLM12,13のみに関し書き込みイネーブル状態にし、かつ、FLM12,13それぞれの3番地をデスティネーションデータとして、一時記憶部27に取り込んだ減算結果DO12,DO13を書き込むためのメモリ制御信号SMC2を出力する。その結果、FLM12,13の3番地に減算結果DO12,DO13が書き込まれる。この際、メモリ制御信号SMC1は読み出しディスネーブルを指示する信号となる。
(7サイクル目)
プログラムカウンタPCが“5”にインクリメントされる。並列演算器7内のFPU30,31は対応するソースデータの加算命令ADDにおける第2の部分加算命令を並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D2I20,D2I21)の加算演算を行う。そして、FPU30,31における加算結果DO22,DO23が一時記憶部27に出力される。
プログラムカウンタPCが“5”にインクリメントされる。並列演算器7内のFPU30,31は対応するソースデータの加算命令ADDにおける第2の部分加算命令を並列に実行する。例えば、FPU30は加算命令ADDに従い2つのソースデータ(D2I20,D2I21)の加算演算を行う。そして、FPU30,31における加算結果DO22,DO23が一時記憶部27に出力される。
(8サイクル目)
プログラムカウンタPCが“6”にインクリメントされる。シーケンス変換部2C内において、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13すべてを書き込みイネーブル状態にし、かつ、FLM10〜13それぞれの4番地をデスティネーションデータとして、一時記憶部27に取り込んだ減算結果DO20〜DO23を書き込むためのメモリ制御信号SMC1及びSMC2を出力する。その結果、FLM10〜13の4番地に加算結果DO20〜DO23が書き込まれる。
プログラムカウンタPCが“6”にインクリメントされる。シーケンス変換部2C内において、メモリ制御信号生成部29は、メモリ4バンクであるFLM10〜13すべてを書き込みイネーブル状態にし、かつ、FLM10〜13それぞれの4番地をデスティネーションデータとして、一時記憶部27に取り込んだ減算結果DO20〜DO23を書き込むためのメモリ制御信号SMC1及びSMC2を出力する。その結果、FLM10〜13の4番地に加算結果DO20〜DO23が書き込まれる。
<効果>
このように実施の形態3のデータ処理装置のシーケンス変換部2Cは、低並列命令実行時に、データ保持手段1及び並列演算器2を並列度“2”で実行し、並列度“4”の高並列命令実行時に、高並列命令を並列度“2”で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器3を並列度“2”で実行制御している。
このように実施の形態3のデータ処理装置のシーケンス変換部2Cは、低並列命令実行時に、データ保持手段1及び並列演算器2を並列度“2”で実行し、並列度“4”の高並列命令実行時に、高並列命令を並列度“2”で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき並列演算器3を並列度“2”で実行制御している。
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、プログラムの開発期間を短縮化を図ることができる効果を奏する。
すなわち、実施の形態3のデータ処理装置では、2SIMDを基本構成としながらも、4SIMDによる処理と2SIMDによる処理が共に実行可能なスケーラブルなH/W構成を実現している。この際、実施の形態1のデータ処理装置と同様、4SIMD及び2SIMDいずれの対応のプログラムも全く同一の命令で記述することができるため、プログラムの開発期間を短縮化を図ることができる効果を奏する。
さらに、実施の形態3のデータ処理装置で実現されるプログラム実行方式において、シーケンス変換部2Cによって実現されるシーケンス機能は、プログラム制御部4Aより得られるデコード結果に基づき、低並列命令を並列度“2”で実行するとともに、並列度“4”の高並列命令を並列度“2”で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行している。
したがって、高並列命令及び低並列命令が混在するプログラムに関し、プログラム内容を変更することなく利用できるため、並列度が“2”の演算能力のデータ処理装置においても当該プログラムをそのまま活用することができるという効果を奏する。
さらに、解読機能を有するプログラム制御部4Cは高並列命令の解読時に、高並列命令直後の命令として、複数の部分並列命令を時間的に実行可能にするためのNOP命令を指示するデコード結果を生成するため、シーケンス制御部2C内にて高並列命令を複数の部分並列命令に分割して実行させてもプログラムの実行に支障をきたすことはない。
また、低並列命令の並列度“2”の対応を基本とし、並列度“4”の高並列命令に対応させることにより、高並列と低並列の比を2:1にした性能とコストのバランスの良い利用が可能となる。
<他の態様>
図19は図15で示した他のシーケンス変換部2Dの詳細を示すブロック図である。同図に示すように、シーケンス変換部2Dは一時記憶部35、演算器選択信号出力部38及びメモリ制御信号生成部39より構成される。
図19は図15で示した他のシーケンス変換部2Dの詳細を示すブロック図である。同図に示すように、シーケンス変換部2Dは一時記憶部35、演算器選択信号出力部38及びメモリ制御信号生成部39より構成される。
演算器選択信号出力部38は並列演算器3に対し演算命令選択信号OPSを出力し、メモリ制御信号生成部39はデータ保持手段1内のFPU30,31用にメモリ制御信号SMC1を出力し、FPU32,33用にメモリ制御信号SMC2を出力する。
シーケンス変換部2D内の一時記憶部35及び演算器選択信号出力部38はプログラム制御部4Dより演算モード付きオペコードOPM及びFLM選択コードFMSを受ける。演算モード付きオペコードOPMは命令コードOPに演算モード選択コードOMSの情報が付加されたコードを意味する。
なお、他の構成は図16で示したプログラム制御部4C及びシーケンス変換部2Cと同様である。このように、プログラム制御部4Dから演算モード付きオペコードOPMを出力させ、これに対応したシーケンス変換部2Dを設けることによっても、図16で示した構成と同様に実現できる。
1 データ保持手段、2,2A〜2D シーケンス変換部、3,6,7 並列演算器、4,4A〜4D プログラム制御部、5 命令保持手段、10〜13 FLM、30〜33 FPU、21,27,35 一時記憶部、23,25,28,38 演算器選択信号出力部、24,26,29,39 メモリ制御信号生成部。
Claims (10)
- 第1の数の並列度の高並列命令が実行可能であり、前記第1の数の並列度で実行する高並列実行モードと、前記第1の数より小さい第2の数の並列度で実行する低並列実行モードとを有するデータ処理装置であって、
前記第1の数の並列度を有するデータ保持手段と、
前記第1の数の並列度を有する並列演算器と、
プログラム内の命令を順次解読して、前記高並列実行モードであるか前記低並列実行モードであるかを示す情報を含む解読結果を出力するプログラム制御部と、
前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、
前記シーケンス制御部は前記高並列実行モード時に、前記データ保持手段及び前記並列演算器を前記第1の数の並列度で前記高並列命令を実行制御し、前記低並列実行モード時に、前記高並列命令を前記第2の数の並列度で処理可能な複数の部分並列命令に分割し、前記複数の部分並列命令に基づき前記並列演算器を前記第2の並列度で実行制御し、
前記プログラム制御部は前記低並列実行モード時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する、
データ処理装置。 - 請求項1記載のデータ処理装置であって、
前記シーケンス制御部は、前記低並列実行モード時に前記データ保持手段に対し並列度が前記第1の数で実行制御する、
データ処理装置。 - 請求項1記載のデータ処理装置であって、
前記シーケンス制御部は、前記低並列実行モード時に前記データ保持手段に対し並列度が前記第2の数で実行制御する、
データ処理装置。 - 第1の数の並列度の高並列命令及び前記第1の数より小さい第2の数の並列度の低並列命令が実行可能なデータ処理装置であって、
前記第1の数の並列度を有するデータ保持手段と、
前記第1の数の並列度を有する並列演算器と、
プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、
前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、
前記シーケンス制御部は前記高並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第1の数の並列度で実行制御し、前記低並列命令実行時に、当該低並列命令に基づき前記並列演算器を前記第2の数のみ有効にして前記第2の並列度で実行制御する、
データ処理装置。 - 請求項4記載のデータ処理装置であって、
前記並列演算器は前記第1の数の部分演算器を含み、
前記解読結果は前記低並列命令時において、前記第1の数の部分演算器内における実行対象の前記第2の数の部分演算器を指定する情報を含み、
前記シーケンス制御部は、前記解読結果に基づき、前記第1の部分演算器のうち前記第2の数の部分演算器を選択的に有効にする、
データ処理装置。 - 第1の数の並列度の高並列命令及び前記第1の数より小さい第2の数の並列度の低並列命令が実行可能なデータ処理装置であって、
前記第1の数の並列度を有するデータ保持手段と、
前記第2の数の並列度を有する並列演算器と、
プログラム内の命令を順次解読して、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を出力するプログラム制御部と、
前記解読結果に基づき前記データ保持手段及び並列演算器を制御するシーケンス制御部とを備え、
前記シーケンス制御部は前記低並列命令実行時に、前記データ保持手段及び前記並列演算器を前記第2の数の並列度で前記低並列命令を実行制御し、前記高並列命令実行時に、前記高並列命令を前記第2の数の並列度で処理可能な複数の部分並列命令に分割し、当該複数の部分並列命令に基づき前記並列演算器を前記第2の並列度で実行制御し、
前記プログラム制御部は前記高並列命令の解読時に、前記高並列命令直後の命令として、前記複数の部分並列命令を時間的に実行可能にするための未実行命令を指示する前記解読結果を生成する、
データ処理装置。 - 請求項1ないし請求項6のうち、いずれか1項に記載のデータ処理装置であって、
前記第1の数は前記第2の数の2倍の数を含む、
データ処理装置。 - 演算機能として第1の数の並列度を要求する高並列命令を含むプログラムに対する、前記演算機能が前記第1の数より小さい第2の数の並列度のデータ処理装置によるプログラム実行方式であって、
前記プログラム内に記述された命令内容を解読して解読結果を得る解読機能と、
前記解読結果に基づき、前記高並列命令を並列度が前記第2の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、
前記解読機能は、前記高並列命令直後の命令の前記解読結果として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする、
プログラム実行方式。 - 演算機能として第1の数の並列度を要求する高並列命令及び前記第1の数より小さい第2の数の並列度を要求する低並列命令を含むプログラムに対する、前記演算機能が前記第1の数より小さい第2の数の並列度のデータ処理装置によるプログラム実行方式であって、
前記プログラム内に記述された命令内容を解読し、前記命令が前記高並列命令であるか前記低並列命令であるかを示す情報を含む解読結果を得る解読機能と、
前記解読結果に基づき、前記低並列命令を前記第2の数の並列度で実行するとともに、前記高並列命令を並列度が前記第2の数で演算可能な複数の部分並列命令に分割し、当該複数の部分並列命令を実行するシーケンス機能とを備え、
前記解読機能は、前記高並列命令直後の命令として、前記複数の部分並列命令に対応する未実行命令を指示する前記解読結果を生成して、前記複数の部分並列命令を時間的に実行可能にする、
プログラム実行方式。 - 請求項8あるいは請求項9記載のプログラム実行方式であって、
前記高並列命令はデータ保持機能として前記第1の数の並列度を要求する命令を含み、
前記シーケンス機能は、前記複数の部分並列命令を、前記データ保持機能に関し前記第1の数の並列度を満足させながら実行する、
プログラム実行方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006176048A JP2008009473A (ja) | 2006-06-27 | 2006-06-27 | データ処理装置及びプログラム実行方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006176048A JP2008009473A (ja) | 2006-06-27 | 2006-06-27 | データ処理装置及びプログラム実行方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008009473A true JP2008009473A (ja) | 2008-01-17 |
Family
ID=39067667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006176048A Pending JP2008009473A (ja) | 2006-06-27 | 2006-06-27 | データ処理装置及びプログラム実行方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008009473A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8555097B2 (en) | 2009-02-05 | 2013-10-08 | Samsung Electronics Co., Ltd. | Reconfigurable processor with pointers to configuration information and entry in NOP register at respective cycle to deactivate configuration memory for reduced power consumption |
-
2006
- 2006-06-27 JP JP2006176048A patent/JP2008009473A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8555097B2 (en) | 2009-02-05 | 2013-10-08 | Samsung Electronics Co., Ltd. | Reconfigurable processor with pointers to configuration information and entry in NOP register at respective cycle to deactivate configuration memory for reduced power consumption |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4986431B2 (ja) | プロセッサ | |
JP2835103B2 (ja) | 命令指定方法及び命令実行方式 | |
JPWO2007049610A1 (ja) | 画像処理装置 | |
US20110225397A1 (en) | Mapping between registers used by multiple instruction sets | |
US20120233444A1 (en) | Mixed size data processing operation | |
WO2017185384A1 (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP3805314B2 (ja) | プロセッサ | |
JP5175517B2 (ja) | プロセッサ | |
JPH1165839A (ja) | プロセッサの命令制御機構 | |
JP4102425B2 (ja) | プロセッサ | |
US7395408B2 (en) | Parallel execution processor and instruction assigning making use of group number in processing elements | |
CN106775587B (zh) | 计算机指令的执行方法以及使用此方法的装置 | |
JP2008009473A (ja) | データ処理装置及びプログラム実行方式 | |
JP2018521422A (ja) | ベクトル長クエリ命令 | |
JP2013161484A (ja) | 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法 | |
JP2003005954A (ja) | データ処理装置およびその制御方法 | |
JP2010079841A (ja) | マイクロコンピュータ及びその命令実行方法 | |
US20110225395A1 (en) | Data processing system and control method thereof | |
JP2001216275A (ja) | 画像処理装置および画像処理方法 | |
JPH09305401A (ja) | コンピュータ及びコンパイラ | |
KR20140105805A (ko) | 디지털 신호 프로세서 및 베이스밴드 통신 디바이스 | |
US8255672B2 (en) | Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit | |
JP2009059187A (ja) | マイクロプロセッサおよびデータ処理方法 | |
JP5013966B2 (ja) | 演算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080714 |