(57)【要約】  多重ループにおけるループ制御命令およびアドレス更新命令を削減するため、本発明のデータ処理装置は、制御手段と、プログラムカウンタと、演算器と、ループカウンタ群と、ループ制御手段と、を備え、ループカウンタ群は、ループカウンタと、ループカウント最大値レジスタと、ループ変数増分レジスタとからなるループ制御レジスタ組を複数組含み、ループ制御手段は、多重ループのループ制御を行うよう、複数組のループ制御レジスタを同時にループ終了判定およびループカウンタ更新し、制御手段は、複数のループカウンタの値を命令語の対応するフィールドに対して作用させることで、多重ループに対応する制御信号を生成し、演算器に出力する。
2019093451.tif 000002
【特許請求の範囲】
【請求項１】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
前記演算器制御信号に基づいて演算を実行する演算器と、
前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含み、
前記ループ制御手段は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段は、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行い、
前記制御手段は、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する
データ処理装置。
【請求項２】
前記ループ制御手段は、
前記第ｎのループカウンタ値と前記第ｎのループ変数増分値とを加算して、前記第ｎの加算値を出力する第ｎの加算器と、
前記第ｎのループカウンタ値と前記第ｎのループカウント最大値とを比較して、第ｎの比較結果を出力する第ｎの比較器と、
前記第１乃至第ｎの比較結果に基づいて、前記第ｎのループカウンタ値、前記第ｎの加算値、およびゼロのいずれかを選択して、選択した値を前記第ｎの更新値として前記ｎのループカウンタに供給する第ｎのマルチプレクサと、
前記第１乃至第Ｎの比較結果の論理和を求めて、少なくとも前記ループ終了信号を出力する論理和ゲート群と、
を備える、請求項１に記載のデータ処理装置。
【請求項３】
前記制御手段は、前記多重ループを脱出する条件が揃わない場合に有効信号を出力し、
前記ループ制御手段は、前記有効信号に応答して、前記ループカウンタ群中の前記第１乃至第Ｎのループカウンタを、それぞれ、第１乃至第Ｎの更新値で更新する、
請求項２に記載のデータ処理装置。
【請求項４】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含み、
前記ループ制御手段は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段は、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う、
ループ制御装置。
【請求項５】
前記ループ制御手段は、
前記第ｎのループカウンタ値と前記第ｎのループ変数増分値とを加算して、前記第ｎの加算値を出力する第ｎの加算器と、
前記第ｎのループカウンタ値と前記第ｎのループカウント最大値とを比較して、第ｎの比較結果を出力する第ｎの比較器と、
前記第１乃至第ｎの比較結果に基づいて、前記第ｎのループカウンタ値、前記第ｎの加算値、およびゼロのいずれかを選択して、選択した値を前記第ｎの更新値として前記ｎのループカウンタに供給する第ｎのマルチプレクサと、
前記第１乃至第Ｎの比較結果の論理和を求めて、前記ループ終了信号を出力する論理和ゲート群と、
を備える、請求項４に記載のループ制御装置。
【請求項６】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
前記演算器制御信号に基づいて演算を実行する演算器と、
前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、
前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段において、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行い、
前記制御手段が、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する
データ処理方法。
【請求項７】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、
前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段が、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う、
ループ制御方法。
【請求項８】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
前記演算器制御信号に基づいて演算を実行する演算器と、
前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、
前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理とを実行させ、
前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行わせる処理を実行させ、
前記制御手段に、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する処理を実行させる
プログラムを記録する記録媒体。
【請求項９】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、
前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理と実行させ、
前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う処理を実行させる、
プログラムを記録する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびループ制御装置などに関し、特に、大きな行列に対する行列積等の演算を繰り返し実行するためのデータ処理装置およびループ制御装置などに関する。
【背景技術】
【０００２】
ビッグデータの解析処理や信号処理等のアプリケーションにおいては、大規模な行列に対する行列積などの演算が頻出する。【０００３】
このようなアプリケーションにおいては、多重ループが多く使われる。例えば、行列積のプログラムは図１１に示すように３重のループで記述される。ここで、ｍａｔＡ、ｍａｔＢは、入力の行列を表し、ｍａｔＣは出力の行列を表し、ｉＡ、ｉＢ、ｉＣは、それぞれ、ｍａｔＡ、ｍａｔＢ、ｍａｔＣの１行の幅を表す。【０００４】
このようなアプリケーションでは、アプリケーション全体の実行時間に対する多重ループの実行時間が支配的であることが多い。典型的には、全体の５％の命令列が、９５％の実行時間を占めるとも言われる。このとき、もしループあたり１サイクルでも短縮できれば、大きな性能向上につながる。例えば、９サイクルの命令列からなるループが全体の実行時間の９５％を占めるとする。この場合、この命令列を９サイクルから８サイクルへと１サイクル短縮するだけで、全体の実行時間を約１０％削減することができる。【０００５】
図１２は、行列積プログラムのアセンブリプログラム例を示す図である。ここで、各行は、ラベル、命令名、オペランド群から成る。【０００６】
ＭＶＩ命令は、第１オペランドのレジスタに第２オペランドの即値を代入する即値代入命令である。ＭＡＣ命令は、第１オペランドのレジスタに格納されているアドレスのデータと、第２オペランドのレジスタに格納されているアドレスのデータとを乗算し、その乗算結果である積を第３オペランドのレジスタに格納されているアドレスのデータに累積する積和命令である。ＡＤＤ命令は、第１オペランドのレジスタ値と第２オペランドの即値とを加算して、第３オペランドのレジスタに格納する加算命令である。ＣＭＰ命令は、第１オペランドのレジスタ値と第２オペランドのレジスタ値とを比較して、比較結果をフラグレジスタ等に格納する比較命令である。ＢＲＬＴ命令は、フラグレジスタ等に格納された比較結果を参照し、先に実行された比較命令の第１オペランドの方が第２オペランドより小さい場合（Ｌｅｓｓ  Ｔｈｅｎ）にＢＲＬＴ命令の第１オペランドで指定されるラベルにジャンプする分岐命令である。【０００７】
ここで、ループ変数の加算命令、ループの終了判定用の比較命令、分岐命令など、ループの制御に数多くの命令が使われていることが分かる。例えば、ループの制御に使われる命令としては、１２行目、１６行目、２０行目の加算命令、１３行目、１７行目、２１行目の比較命令、および、１４行目、１８行目、２２行目の分岐命令、がそれぞれ相当する。以下、これらの命令を「ループ制御命令」と呼称することにする。【０００８】
また、ループの各階層の先頭では、積和演算の対象データのアドレス変数を格納するレジスタ（Ｒ７〜Ｒ９）を初期化するための命令が存在することがわかる。例えば、初期化するための命令としては、４行目、６行目、８行目の即値代入命令がこれに相当する。また、ループの各階層の終端付近では、レジスタＲ７〜Ｒ９を更新する加算命令が存在することがわかる。例えば、そのような更新する加算命令としては、１１行目、１５行目、１９行目の加算命令がこれに相当する。以下、これらの命令を「アドレス更新命令」と呼称することにする。【０００９】
このように、アプリケーションの実行時間を削減するためには、ループ制御命令およびアドレス更新命令を削減し、多重ループを構成する命令数をできる限り小さくする必要がある。【００１０】
なお、ループ変数とアドレス変数を格納するレジスタを兼用することで命令数を削減できることは、当業者には明白である。例えば、図１２の例においては、レジスタR１〜R３とレジスタＲ７〜Ｒ９とを兼用することで、４行目、６行目、８行目、の３つの即値代入命令は削減することができよう。しかしながら、それでもなお、ループ制御命令およびアドレス更新命令を完全になくすことはできなかった。【００１１】
本発明に関連するシステムが、種々知られている。【００１２】
特許文献１は、ループ制御命令を削減する手法として、ループ変数を専用のカウンタとして実現し、カウンタの自動制御を行う手法を開示している。また、特許文献１は、ループの先頭命令を表すアドレスをスタックに格納することで多重ループにも対応する手法も開示している。【００１３】
特許文献２は、多重ループにおいてもリピート命令と命令バッファを用いて低電力化を行う手法を開示している。【００１４】
特許文献３は、ループレジスタ更新、終了判定を軽減する行う手法を開示している。特許文献３では、繰り返し処理を指示する繰り返しフラグを設け、命令レジスタに繰り返しループの最後の命令を示すフィールドを設け、フィールドの活性化によってループ制御レジスタの更新し、繰返しフラグの活性化により終値と比較して、プログラムカウンタＰＣを制御している。また、特許文献３では、繰返しフラグに専用のスタックを設けることで、多重ループにも対応している。さらに、特許文献３では、繰り返し処理のループ制御は、汎用レジスタを用いて、ループに入る前の初期設定、ループ内でのループ制御レジスタの更新およびループ終了判断が行われている。【００１５】
特許文献４は、演算とプログラムの繰り返し実行の判定を並行して行う手法を開示している。特許文献４では、分岐先をスタック用いて命令を指し示すことで、短い命令語長となり、かつ、多重の繰り返し処理も可能である。【００１６】
特許文献５は、ループの先頭アドレスを格納するレジスタと、ループサイズを格納するレジスタと、を用いてループを実行する手法を開示している。特許文献５では、スタックに退避することで多重ループにも対応できる。【００１７】
特許文献６は、オフチップメモリアクセスを削減して高速化するハードウェアループ命令を用いる手法を開示している。特許文献６では、命令のブロックを繰り返し実行することができる。【００１８】
特許文献７は、計数分岐バイパスレジスタによりループ命令（ＢＣＴ）の機能を代行する手法を開示している。【００１９】
特許文献８は、ループ内に条件分岐命令を含む場合に、処理ステップ数を減少すべく、マイクロプログラムにループ脱出条件成立の判定及びループカウントレジスタの更新を指定するためのフィールドを設ける手法を開示している。【００２０】
特許文献９は、離散フーリエ変換（ＤＦＴ：Ｄｉｓｃｒｅｔｅ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）計算で使用されるマルチ基数バタフライを計算する計算方法を開示している。特許文献９では、複数階層のループの終了判定を並列に行う方法を開示している。特許文献９では、その図９において、アドレス生成器で使用される累算器の一例を示している。ループは繰り返し回数を記憶するカウンタを使用して実施される。最大繰り返し回数がそれぞれのカウンタに設定されると、最も内側のループのカウンタがカウントを開始する。このカウンタは、最後の繰り返しに達すると、外側のループのカウンタをインクリメントすると共に自身をリセットする。すべてのカウンタが最後の繰り返しに達したときに終了する。【００２１】
特許文献１０は、水平型マイクロコードを採用することにより、並列データ用の命令フェッチとデコードの回路の複雑性を排除し、消費電力を抑えつつ効率よく並列処理を行うデータ処理装置を開示している。水平型マイクロコードは、命令フィールドと、サイクルフラグフィールドと、ループカウンタ選択フィールドとを備える。ループカウンタ選択フィールドにより、ループ回数が制御される。特許文献１０に開示されたデータ処理装置では、異なるループカウンタを指定してループ回数を制御するだけでネスト構造に対応できる。また、特許文献１０に開示されたデータ処理装置では、３重のネスト構造まで、１重のループ処理と同様の汎用的な制御で実行することができる。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特公昭６１−００８４５１号公報
【特許文献２】特開平７−１６０５８５号公報
【特許文献３】特公平２−０１４７３０号公報
【特許文献４】特公昭６３−０５９１７４号公報
【特許文献５】特開昭６３−０５３６４４号公報
【特許文献６】特開２０００−２７６３５１号公報
【特許文献７】特公昭６２−０３２５０６号公報
【特許文献８】特開昭５８−１２７２４５号公報
【特許文献９】特開２０１０−０１６８３０号公報
【特許文献１０】特開２００４−０２１８９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００２３】
しかしながら、上記特許文献１〜１０には、それぞれ、次に述べるような課題がある。【００２４】
特許文献１は、多重ループからの脱出を１サイクルで実現することはできなかった。【００２５】
特許文献２は、リピート制御用の各レジスタの状態をスタックに退避する必要があり、多重ループからの脱出を１サイクルで実現することはできなかった。【００２６】
特許文献３は、スタックを用いているため、複数の階層のループの終了判定を同時に行うことができず、多重ループからの脱出に複数サイクルを要していた。【００２７】
特許文献４は、多重ループには対応しているものの、１サイクルでは終了判定ができなかった。【００２８】
特許文献５は、１サイクルでは終了判定ができなかった。【００２９】
特許文献６は、多重ループに関しては記述がなく、また、分岐命令の削減もできなかった。【００３０】
特許文献７は、多重ループには対応していなかった。また、特許文献７は、ハードウェアループに関する手法であり、通常の分岐命令の枠内では実現できず、制御回路に大規模な追加が必要であった。【００３１】
特許文献８は、多重ループには対応していなかった。【００３２】
特許文献９は、高速フーリエ変換（ＦＦＴ：Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）演算回路専用の計算方法を開示しているに過ぎず、命令セットプロセッサに対して他の命令と親和性の高い形で複数階層の同時終了判定を行える分岐命令の構成方法を開示してはいない。【００３３】
特許文献１０は、単に、水平型マイクロコードの中に、ループ回数を制御するためのループカウンタ選択フィールドを含ませることを開示しているに過ぎない。特許文献１０でも、複数階層の同時終了判定を行ってはいない。【００３４】
このように、特許文献１〜１０に開示された手法では、多重ループにおいて、複数階層のループ終了判定を同時に行うことができないという課題があった。【００３５】
本発明の目的は、上述した課題を解決できるデータ処理装置およびループ制御装置などを提供することにある。
【課題を解決するための手段】
【００３６】
本発明の一形態におけるデータ処理装置は、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御部と；命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御部とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御部と；前記演算器制御信号に基づいて演算を実行する演算器と；前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと；を備え、前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含み、前記ループ制御部は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、前記ループ制御部は、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行い、前記制御部は、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力することを特徴とする。【００３７】
本発明の一形態におけるループ制御装置は、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御部と；を備え、前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含み、前記ループ制御部は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、前記ループ制御部は、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う、ことを特徴とする。【００３８】
本発明の一形態におけるデータ処理方法は、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と；命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段と；を制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、前記演算器制御信号に基づいて演算を実行する演算器と；前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと；を備え、前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、前記ループ制御手段において、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行い、前記制御手段が、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する。【００３９】
本発明の一形態におけるループ制御方法は、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と；を備え、前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、前記ループ制御手段が、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う。【００４０】
本発明の一形態における記録媒体は、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と；命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と；前記演算器制御信号に基づいて演算を実行する演算器と；前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと；を備え、前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理とを実行させ、前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行わせる処理を実行させ、前記制御手段に、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する処理を実行させるプログラムを記録する。【００４１】
本発明の別の一形態における記録媒体は、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と；を備え、前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理と実行させ、前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う処理を実行させる、プログラムを記録する。
【発明の効果】
【００４２】
本発明によれば、多重ループにおけるループ制御命令を削減することができ、多重ループにおけるアドレス更新命令を削減することができる。
【図面の簡単な説明】
【００４３】
【図１】本発明の第１の実施形態に係るデータ処理装置の構成を示すブロック図である。
【図２】図１に示したデータ処理装置に使用されるループ制御部とループカウンタ群との構成を示すブロック図である。
【図３】図１に示したデータ処理装置に使用される制御部の構成を示すブロック図である。
【図４Ａ】図１に示したデータ処理装置において用いられる命令語の構成を示す図である。
【図４Ｂ】図１に示したデータ処理装置において用いられる命令語の動作を示す図である。
【図５】図１に示したデータ処理装置を用いて行列積を実行する場合のアセンブリプログラム例を示す図である。
【図６】第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃの遷移の例を示す図である。
【図７】行列積の計算例を示す図である。
【図８】２行４列行列Ａと４行２列行列Ｂを掛け合わせて２行２列行列Ｃを求める場合を例に示す図である。
【図９Ａ】本発明の第２の実施形態に係るデータ処理装置において用いられる命令語の構成を示す図である。
【図９Ｂ】本発明の第２の実施形態に係るデータ処理装置において用いられるＭＡＣ命令の動作を示す図である。
【図１０】第２の実施形態における行列積を実行する場合のアセンブリプログラム例を示す図である。
【図１１】３重のループで記述される行列積のプログラムの一例を示す図である。
【図１２】行列積プログラムのアセンブリプログラム例を示す図である。
【発明を実施するための形態】
【００４４】
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００４５】
［第１の実施形態］
［構成の説明］
図１を参照すると、本発明における第１の実施形態に係るデータ処理装置１００は、制御部１１０と、プログラムカウンタ１２０と、演算器１３０と、ループカウンタ群１４０と、ループ制御部１５０と、を含む。
【００４６】
制御部１１０とプログラムカウンタ１２０とは、命令メモリ２１０に接続されている。
演算器１３０は、データメモリ２２０に接続されている。
【００４７】
ループカウンタ群１４０は、第１乃至第３のループカウンタ１４１−１、１４１−２、１４１−３と、第１乃至第３のループカウント最大値レジスタ１４２−１、１４２−２、１４２−３と、第１乃至第３のループステップレジスタ１４３−１、１４３−２、１４３−３とを備える。第１乃至第３のループカウンタ１４１−１〜１４１−３は、それぞれ、ループ変数を表す第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃを保持する。第１乃至第３のループカウント最大値レジスタ１４２−１〜１４２−３は、それぞれ、ループ回数を表す第１乃至第３のループカウント最大値ＬＭＡＸ＿Ａ〜ＬＭＡＸ＿Ｃを保持する。第１乃至第３のループステップレジスタ１４３−１〜１４３−３は、それぞれ、ループ変数増分を表す第１乃至第３のループ変数増分値ＬＳＴＥＰ＿Ａ〜ＬＳＴＥＰ＿Ｃを保持する。尚、各ループステップレジスタ１４３−１〜１４３−３は、ループ変数増分レジスタとも呼ばれる。
【００４８】
なお、ここではループカウンタ群１４０は、ループカウンタ、ループカウント最大値レジスタ及びループステップレジスタをそれぞれ３つずつ持つことで、３重のループにまで対応できる場合を例に示すが、本実施形態はもちろんこれに限る必要はない。一般的には、ループカウンタ群１４０は、それらループカウンタ、ループカウント最大値レジスタ、およびループステップレジスタをＮ（Ｎは２以上の整数）個ずつ持ってよい。例えば、ループカウンタ群１４０は、それらループカウンタ、ループカウント最大値レジスタ、およびループステップレジスタを５つずつ持つことで５重のループにまで対応してもよい。なお、ループカウンタ群１４０は、それらループカウンタ、ループカウント最大値レジスタ、およびループステップレジスタを１つずつしか持たないことで、多重ループに対応しない代わりに回路面積を節約するようにしてもよい。
【００４９】
図２は、ループ制御部１５０の構成と、ループカウンタ群１４０の構成とを示すブロック図である。
【００５０】
ループ制御部１５０は、第１乃至第３の加算器１５１−１、１５１−２、１５１−３と、第１乃至第３の比較器１５２−１、１５２−２、１５２−３と、第１乃至第３のマルチプレクサ１５３−１、１５３−２、１５３−３と、第１及び第２の論理和ゲート１５４−１、１５４−２とを含む。
【００５１】
第１の加算器１５１−１は、第１のループカウンタ値ＬＣＮＴ＿Ａと第１のループ変数増分値ＬＳＴＥＰ＿Ａとを加算して（の和を求めて）、第１の加算値を出力する。第１の比較器１５２−１は、第１のループカウンタ値ＬＣＮＴ＿Ａと第１のループカウント最大値ＬＭＡＸ＿Ａとの大小比較を行い、第１の比較結果を出力する。第１のマルチプレクサ１５３−１は、第１の比較結果に基づき第１のループカウンタ１４１−１の第１の更新値を、第１の加算値またはゼロまたは現在の第１のループカウンタ値ＬＣＮＴ＿Ａのいずれかから選択する。
【００５２】
同様に、第２の加算器１５１−２は、第２のループカウンタ値ＬＣＮＴ＿Ｂと第２のループ変数増分値ＬＳＴＥＰ＿Ｂとを加算して（の和を求めて）、第２の加算値を出力する。第２の比較器１５２−２は、第２のループカウンタ値ＬＣＮＴ＿Ｂと第２のループカウント最大値ＬＭＡＸ＿Ｂとの大小比較を行い、第２の比較結果を出力する。第２のマルチプレクサ１５３−２は、第１および第２の比較結果に基づき第２のループカウンタ１４１−２の第２の更新値を、第２の加算値またはゼロまたは現在の第２のループカウンタ値ＬＣＮＴ＿Ｂのいずれかから選択する。
【００５３】
同様に、第３の加算器１５１−３は、第３のループカウンタ値ＬＣＮＴ＿Ｃと第３のループ変数増分値ＬＳＴＥＰ＿Ｃとを加算して（和を求めて）、第３の加算値を出力する。第３の比較器１５２−３は、第３のループカウンタ値ＬＣＮＴ＿Ｃと第３のループカウント最大値ＬＭＡＸ＿Ｃとの大小比較を行い、第３の比較結果を出力する。第３のマルチプレクサ１５３−３は、第１乃至第３の比較結果に基づき第３のループカウンタ１４１−３の第３の更新値を、第３の加算値またはゼロまたは現在の第３のループカウンタ値ＬＣＮＴ＿Ｃのいずれかから選択する。
【００５４】
第１の論理和ゲート１５４−１は、第１の比較結果と第２の比較結果との論理和を求めて、第１の論理和結果を出力する。第１の論理和結果は、第３の比較器１５２−３へ供給される。第２の論理和ゲート１５４−２は、第１の比較結果と第２の比較結果と第３の比較結果との論理和を求めて、第２の論理和結果を出力する。第２の論理和結果は、ループ終了信号ＳＬＥとして制御部１１０へ供給される。したがって、第１の論理和ゲート１５４−１と第２の論理和ゲート１５４−２との組み合わせは、第１乃至第３の比較結果の論理和を求めて、少なくともループ終了信号ＳＬＥを出力する論理和ゲート群として働く。
【００５５】
ＬＣＮＴ＿Ａ＜ＬＭＡＸ＿Ａの場合、第１の比較器１５２−１は論理“１”レベルの第１の比較結果を出力する。それ以外の場合、第１の比較器１５２−１は論理“０”レベルの第１の比較結果を出力する。第１の比較結果が論理“１”レベルの場合、第１のマルチプレクサ１５３−１は、第１の更新値として第１の加算値を選択する。第１の比較結果が論理“０”レベルの場合、第１のマルチプレクサ１５３−１は、第１の更新値としてゼロを出力する。
【００５６】
ＬＣＮＴ＿Ｂ＜ＬＭＡＸ＿Ｂの場合、第２の比較器１５２−２は論理“１”レベルの第２の比較結果を出力する。それ以外の場合、第２の比較器１５２−２は論理“０”レベルの第２の比較結果を出力する。第１の比較結果が論理“１”レベルの場合、第２のマルチプレクサ１５３−２は、第２の更新値として現在の第２のループカウンタ値ＬＣＮＴ＿Ｂを選択する。第２の比較結果が論理“１”レベルの場合、第２のマルチプレクサ１５３−２は、第２の更新値として第２の加算値を選択する。それ以外の場合、すなわち、第１及び第２の比較結果が両方とも論理“０”レベルの場合、第２のマルチプレクサ１５３−２は、第２の更新値としてゼロを出力する。
【００５７】
ＬＣＮＴ＿Ｃ＜ＬＭＡＸ＿Ｃの場合、第３の比較器１５２−３は論理“１”レベルの第３の比較結果を出力する。それ以外の場合、第３の比較器１５２−３は論理“０”レベルの第３の比較結果を出力する。したがって、第１の比較結果と第２の比較結果の少なくとも１つが論理“１”レベルの場合、第１の論理和ゲート１５４−１は、論理“１”レベルの第１の論理和結果を出力する。第１の比較結果と第２の比較結果の両方が論理“０”レベルの場合、第２の論理和ゲート１５４−１は、論理“０”レベルの第１の論理和結果を出力する。第１の論理和結果が論理“１”レベルの場合、第３のマルチプレクサ１５３−３は、第３の更新値として現在の第３のループカウンタ値ＬＣＮＴ＿Ｃを選択する。第３の比較結果が論理“１”レベルの場合、第３のマルチプレクサ１５３−３は、第３の更新値として第３の加算値を選択する。それ以外の場合、すなわち、第１の論理和結果と第３の比較結果が両方とも論理“０”レベルの場合、第３のマルチプレクサ１５３−３は、第３の更新値としてゼロを出力する。換言すれば、第１乃至第３の比較結果の全てが論理“０”レベルの場合、第３のマルチプレクサ１５３−３は、第３の更新値としてゼロを出力する。
【００５８】
第１乃至第３の比較結果の少なくとも１つが論理“１”レベルの場合、第２の論理和ゲート１５４−２は、論理“１”レベルの第２の論理和結果を出力する。第１乃至第３の比較結果のすべてが論理“０”レベルの場合、第２の論理和ゲート１５４−２は、論理“０”レベルの第２の論理和結果を出力する。したがって、第２の論理和ゲート１５４−２は、論理“０”レベルの第２の論理和結果を、ループの終了を示すループ終了信号ＳＬＥとして制御部１１０へ送出する。
【００５９】
ループ制御部１５０及びループカウンタ群１４０は、制御部１１０より有効信号ＳＥが来たときのみ動作するものとする。すなわち、ループ制御部１５０は、有効信号ＳＥを受けたときのみ、ループカウンタ群１４０の第１乃至第３のループカウンタ１４１−１〜１４１−３の第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃを、それぞれ、上記第１乃至第３の更新値に更新するものとする。
【００６０】
ループ制御部１５０は、ループの第１階層に相当する第１のループカウンタ１４１−１が保持する第１のループカウンタ値ＬＣＮＴ＿Ａの第１の更新値として、ＬＣＮＴ＿Ａ＜ＬＭＡＸ＿Ａの場合には第１の加算器１５１−１から出力される第１の加算値を選択し、それ以外の場合にはゼロを選択するように、第１のマルチプレクサ１５３−１を制御する。
【００６１】
ループ制御部１５０は、ループの第２階層に相当する第２のループカウンタ１４１−２が保持する第２のループカウンタ値ＬＣＮＴ＿Ｂの第２の更新値として、ＬＣＮＴ＿Ａ＜ＬＭＡＸ＿Ａのときは現在の第２のループカウンタ値ＬＣＮＴ＿Ｂを選択し、ＬＣＮＴ＿Ｂ＜ＬＭＡＸ＿Ｂの場合には第２の加算器１５１−２から出力される第２の加算値を選択し、それ以外の場合にはゼロを選択するように、第２のマルチプレクサ１５３−２を制御する。
【００６２】
ループ制御部１５０は、ループの第３階層に相当する第３のループカウンタ１４１−３が保持する第３のループカウンタ値ＬＣＮＴ＿Ｃの第３の更新値として、ＬＣＮＴ＿Ａ＜ＬＭＡＸ＿ＡまたはＬＣＮＴ＿Ｂ＜ＬＭＡＸ＿Ｂのときは現在の第３のループカウンタ値ＬＣＮＴ＿Ｃを選択し、ＬＣＮＴ＿Ｃ＜ＬＭＡＸ＿Ｃの場合には第３の加算器１５１−３から出力される第３の加算値を選択し、それ以外の場合にはゼロを選択するように、第３のマルチプレクサ１５３−３を制御する。
【００６３】
ループ制御部１５０とループカウンタ群１４０との組み合わせは、ループ制御装置と呼ばれる。
【００６４】
図３は、制御部１１０の構成を示すブロック図である。制御部１１０は、命令レジスタ１１２と、命令デコーダ１１４と、演算器制御信号生成部１１６とを含む。
【００６５】
この技術分野において周知のように、プログラム内蔵方式（いわゆるフォンノイマン型）のデータ処理装置１００の動作は、以下の三つのサイクル、すなわち、命令フェッチサイクル、命令デコードサイクル、および命令実行サイクルから成る。
【００６６】
命令フェッチサイクルでは、次に実行すべき命令語を命令メモリ２１０から読み込み、命令レジスタ１１２に格納する。
【００６７】
命令デコードサイクルでは、命令デコーダ１１４が、命令レジスタ１１２内の命令語をデコード（解読）し、デコード結果を出力する。デコード結果は、命令語の種類、必要となるオペランドの種類、演算結果の格納場所などの情報を含む。
【００６８】
命令実行サイクルでは、演算器制御信号生成部１１６が、デコード結果とループ終了信号とに従って、必要となるデータにアクセスし、演算器１３０へ演算器制御信号ＣＡを供給し、その結果を適当な場所に格納する。また、演算器制御信号生成部１１６は、プログラムカウンタ１２０へプログラムカウンタ制御信号ＣＰＣを供給する。
【００６９】
このように、制御部１１０は、命令メモリ２１０から取り出した命令語とループ終了信号ＳＬＥとに基づいて、ループカウンタ群１４０とループ制御部１５０とを制御すると共に、演算器制御信号ＣＡとプログラムカウンタ制御信号ＣＰＣとを生成する。
【００７０】
演算器１３０は、演算器制御信号ＣＡに基づいて、データメモリ２２０に格納されているデータに対して演算を実行する。演算器１３０は、例えば、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  Ｌｏｇｉｃ  Ｕｎｉｔ）であってよい。
【００７１】
また、プログラムカウンタ１２０は、プログラムカウンタ制御信号ＣＰＣに応答してカウント動作を行い、次に実行すべき命令語が格納されている命令メモリ２１０の番地を保持する。
【００７２】
図４Ａ及び４Ｂは、データ処理装置１００において用いられる命令語の構成とその動作とを示す図である。
【００７３】
図４Ａに、データ処理装置１００の命令語の構成を示す。ここでは命令語は、４ビットのオペコードｏｐｃと、各々が８ビットの第１乃至第３オペランドｒｓ、ｒｔ、ｒｄと、３２ビットの即値フィールドｉｍｍとから成るとして例示するが、本実施形態はこれに限るものではない。第１及び第２オペランドｒｓ、ｒｔは、それぞれ、第１及び第２入力オペランドとも呼ばれ、第３オペランドｒｄは、結果オペランドとも呼ばれる。
【００７４】
図４Ｂに、命令語の動作を示す。ここでは、８個の命令語を示すが、本実施形態はこれ以外の命令語を含んでいてもよい。
【００７５】
NOP命令は、何もしない命令である。
【００７６】
ＡＤＤ命令は、図１には図示されていないレジスタファイルＲＦ中の、第１入力オペランドｒｓ及び第２入力オペランドｒｔが示すレジスタ同士の加算を行い、結果オペランドｒｄが示すレジスタファイルＲＦ中のレジスタに結果を書き込む加算命令である。
【００７７】
ＭＶＩ命令は、即値フィールドｉｍｍの値を、結果オペランドｒｄが示すレジスタファイルＲＦ中のレジスタに書き込む即値代入命令である。
【００７８】
ＳＥＴＬＰ命令は、即値フィールドｉｍｍの値を、結果オペランドｒｄが示すループカウンタ群１４０中のレジスタまたはカウンタに書込む命令である。例えば、下記のような対応が考えられる。
ｒｄ＝＝０：ＬＣＮＴ＿Ａ
ｒｄ＝＝１：ＬＣＮＴ＿Ｂ
ｒｄ＝＝２：ＬＣＮＴ＿Ｃ
ｒｄ＝＝４：ＬＭＡＸ＿Ａ
ｒｄ＝＝５：ＬＭＡＸ＿Ｂ
ｒｄ＝＝６：ＬＭＡＸ＿Ｃ
ｒｄ＝＝８：ＬＳＴＥＰ＿Ａ
ｒｄ＝＝９：ＬＳＴＥＰ＿Ｂ
ｒｄ＝＝１０：ＬＳＴＥＰ＿Ｃ
【００７９】
ＭＡＣ命令は、積和命令である。このＭＡＣ命令は、後述する第１乃至第３のデータについて、第１のデータと第２のデータとの積を第３のデータに加算してメモリに書き戻す動作を行う。第１のデータは、第１オペランドｒｓが示すベースアドレスに、第１のループカウンタ値ＬＣＮＴ＿Ａと第３のループカウンタ値ＬＣＮＴ＿ＣとにＬＭＡＸ＿Ａ＋ＬＳＴＥＰ＿Ａの和を乗じた値をオフセットとして加えた第１のメモリアドレスが示すデータである。第２のデータは、第２オペランドｒｔが示すベースアドレスに、第２のループカウンタ値ＬＣＮＴ＿Ｂと第１のループカウンタ値ＬＣＮＴ＿ＡとにＬＭＡＸ＿Ｂ＋ＬＳＴＥＰ＿Ｂの和を乗じた値をオフセットとして加えた第２のメモリアドレスが示すデータである。第３のデータは、第３オペランドｒｄが示すベースアドレスに、第２のループカウンタ値ＬＣＮＴ＿Ｂと第３のループカウンタ値ＬＣＮＴ＿ＣとにＬＭＡＸ＿Ｂ＋ＬＳＴＥＰ＿Ｂの和を乗じた値をオフセットとして加えた第３のメモリアドレスが示すデータである。
【００８０】
ＣＭＰ命令は、第１入力オペランドｒｓ及び第２入力オペランドｒｔが示すレジスタファイルＲＦ中のレジスタ同士の減算を行い、結果として得られる算術フラグ（ゼロフラグ、符号フラグ等だがこれに限らない）を、図１には図示されていないフラグレジスタＦＧに格納する命令である。
【００８１】
ＢＲＬＴ命令は、フラグレジスタＦＧ中の符号フラグの値を検査し、その符号フラグの値が１であれば、すなわち直前のＣＭＰ命令の減算結果が負数（ＲＦ［ｒｓ］＜ＲＦ［ｒｔ］）であれば、プログラムカウンタ１２０のプログラムカウンタ値ＰＣに、即値フィールドｉｍｍの値を加算する分岐命令である。例えば、即値フィールドｉｍｍの値が−３であれば、ＢＲＬＴ命令を受けた制御部１１０は、プログラムカウンタ１２０を、当該命令のプログラムカウンタ値に３減じたもので更新する。これはすなわち３命令前に分岐することになる。
【００８２】
ＢＲＮＥＳＴ命令は、第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃが、第１乃至第３のループカウント最大値ＬＭＡＸ＿Ａ〜ＬＭＡＸ＿Ｃよりそれぞれ小さい場合かつそのときのみ、プログラムカウンタ値ＰＣに即値フィールドｉｍｍの値を加算する多重ループ対応分岐命令である。すなわち、ＢＲＮＥＳＴ命令は、第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃが、第１乃至第３のループカウント最大値ＬＭＡＸ＿Ａ〜ＬＭＡＸ＿Ｃにそれぞれ等しいときのみ分岐を行わない分岐命令である。これは、３重の多重ループを脱出する条件を示す。多重ループを脱出する条件が揃わない場合は、ＢＲＮＥＳＴ命令を受けた制御部１１０は、即値フィールドｉｍｍの値で示されるループの先頭へのジャンプを実行する。またその場合、ＢＲＮＥＳＴ命令を受けた制御部１１０は、第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃを更新する。換言すれば、制御部１１０は、上記有効信号ＳＥをループ制御部１５０へ送出する。
【００８３】
［動作の説明］
図５は、データ処理装置１００を用いて行列積を実行する場合のアセンブリプログラム例を示す図である。ここでは、１階層目（最内ループ）が４回、２階層目のループが２回、３階層目（最外ループ）が２回繰り返す場合を例に示す。
【００８４】
図５において、１行目〜３行目では、ＳＥＴＬＰ命令を用いて第１乃至第３のループカウント最大値レジスタ１４２−１〜１４２−３に、第１乃至第３のループカウント最大値ＬＭＡＸ＿Ａ〜ＬＭＡＸ＿Ｃとしてループカウント最大値３，１，１をそれぞれ設定している。４行目〜６行目では、ＳＥＴＬＰ命令を用いて第１乃至第３のループカウンタ１４１−１〜１４１−３に、第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃとしてゼロに設定している。７行目〜９行目では、ＳＥＴＬＰ命令を用いて第１乃至第３のループステップレジスタ１４３−１〜１４３−３に、第１乃至第３のループ変数増分値ＬＳＴＥＰ＿Ａ〜ＬＳＴＥＰ＿Ｃとして１を設定している。
【００８５】
図６は、第１乃至第３のループカウンタ１４１−１〜１４１−３に保持される、第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃの遷移の例を示す図である。図６の表の１列目にある＃Ｉｔｅｒａｔｉｏｎは、繰返し番号を表す。
【００８６】
繰返し番号１〜４では、最内ループに対応する第１のループカウンタ値ＬＣＮＴ＿Ａが０，１，２，３のように、第１のループ変数増分値ＬＳＴＥＰ＿Ａ＝１ずつ増加する。また、これらの場合、ＢＲＮＥＳＴ命令の第１オペランドｒｓで指定されるラベルのアドレスへ分岐を行う。
【００８７】
ここで、ＬＣＮＴ＿Ａ＝ＬＭＡＸ＿Ａとなるため、繰返し番号５では第１のループカウンタ値ＬＣＮＴ＿Ａがゼロとなる。また、ＬＣＮＴ＿Ｂ＜ＬＭＡＸ＿Ｂであるため、第２のループカウンタ値ＬＣＮＴ＿Ｂは第２のループ変数増分値ＬＳＴＥＰ＿Ｂ＝１だけ増加し、ＬＣＮＴ＿Ｂ＝１となる。また、この場合も、ＢＲＮＥＳＴ命令の第１オペランドｒｓで指定されるラベルのアドレスへ分岐を行う。
【００８８】
繰返し番号６〜８は、第１のループカウンタ値ＬＣＮＴ＿Ａが第１のループ変数増分値ＬＳＴＥＰ＿Ａずつ増加する。また、これらの場合も、ＢＲＮＥＳＴ命令の第１オペランドｒｓで指定されるラベルのアドレスへ分岐を行う。
【００８９】
ここで、再びＬＣＮＴ＿Ａ＝ＬＭＡＸ＿Ａとなるため、繰返し番号９では第１のループカウンタ値ＬＣＮＴ＿Ａがゼロとなる。また、ＬＣＮＴ＿Ｂ＝ＬＭＡＸ＿Ｂであるため、繰返し番号９では第２のループカウンタ値ＬＣＮＴ＿Ｂもゼロとなる。そして、ＬＣＮＴ＿Ｃ＜ＬＭＡＸ＿Ｃであるため、第３のループカウンタ値ＬＣＮＴ＿Ｃは第３のループ変数増分値ＬＳＴＥＰ＿Ｃ＝１だけ増加し、ＬＣＮＴ＿Ｃ＝１となる。また、この場合も、ＢＲＮＥＳＴ命令の第１オペランドｒｓで指定されるラベルのアドレスへ分岐を行う。
【００９０】
繰返し番号１０〜１６も同様に遷移する。また、これらの場合も、ＢＲＮＥＳＴ命令の第１オペランドｒｓで指定されるラベルのアドレスへ分岐を行う。
【００９１】
繰返し番号１６の時点で、ＬＣＮＴ＿Ａ＝ＬＭＡＸ＿ＡかつＬＣＮＴ＿Ｂ＝ＬＭＡＸ＿ＢかつＬＣＮＴ＿Ｃ＝ＬＭＡＸ＿Ｃとなる。そこで、第１のループカウンタ値ＬＣＮＴ＿Ａも第２のループカウンタ値ＬＣＮＴ＿Ｂも第３のループカウンタ値ＬＣＮＴ＿Ｃもゼロとなる。また、この場合は分岐を行わず、多重ループの実行を終了する。
【００９２】
以上のように、データ処理装置１００を用いることで、多重ループにおいてループ制御命令を大幅に削減し、すなわち、実行時間を削減することができる。
【００９３】
次に、ループカウンタ群１４０を用いたアドレス更新命令削減の仕組みについて説明する。
【００９４】
図７は、行列積の計算例を示す図である。ここでは、図８に示すような、２行４列行列Ａと４行２列行列Ｂを掛け合わせて２行２列行列Ｃを求める場合を例に示す。また、行列Ａ、行列Ｂおよび行列Ｃは、それぞれ、メモリの次の領域に格納されているものとする。すなわち、行列Ａはメモリのアドレス０ｘ００番地から始まる２x４＝８ワード分の領域に格納されている。行列Ｂはメモリのアドレス０ｘ２０番地から始まる４x２＝８ワード分の領域に格納されている。行列Ｃはメモリのアドレス０ｘ４０番地から始まる２x２＝４ワード分の領域に格納されている。また、行列Ｃはゼロで初期化されているものとする。
【００９５】
図７の繰返し番号１では、第１乃至第３のループカウンタ値ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃはすべてゼロである。このため、ｍ［０ｘ４０＋０＋０＊２］＋＝ｍ［０ｘ０＋０＋０＊４］＊ｍ［０ｘ２０＋０＋０＊２］の演算、すなわち、０ｘ００番地のデータと０ｘ２０番地のデータの積を０ｘ４０番地に足す。これは、行列Ａの要素（０，０）と行列Ｂの要素（０，０）の積を行列Ｃの要素（０，０）に足すことに相当する（なお、要素（X，Y）はX行Y列の要素を表すこととする。）。
【００９６】
繰返し番号２では、第１のループカウンタ値ＬＣＮＴ＿Ａが１となる。このため、ｍ［０ｘ４０＋０＋０＊２］＋＝ｍ［０ｘ０＋１＋０＊４］＊ｍ［０ｘ２０＋０＋１＊２］の演算、すなわち、０ｘ０１番地のデータと０ｘ２２番地のデータの積を０ｘ４０番地に足す。これは、行列Ａの要素（０，０）と行列Ｂの要素（１，０）の積を行列Ｃの要素（０，０）に足すことに相当する。
【００９７】
繰返し番号３と４も同様に実行することで、繰返し番号４終了時点で、行列Ｃの要素（０，０）にはＡ（０，０）＊Ｂ（０，０）＋Ａ（０，１）＊Ｂ（１，０）＋Ａ（０，２）＊Ｂ（２，０）＋Ａ（０，３）＊Ｂ（３，０）が格納される。
【００９８】
繰返し番号５では、ｍ［０ｘ４０＋１＋０＊２］＋＝ｍ［０ｘ０＋０＋０＊４］＊ｍ［０ｘ２０＋１＋０＊２］の演算、すなわち、０ｘ００番地のデータと０ｘ２１番地のデータの積を０ｘ４１番地に足す。これは、行列Ａの要素（０，０）と行列Ｂの要素（０，１）の積を行列Ｃの要素（０，１）に足すことに相当する。
【００９９】
繰返し番号６では、ｍ［０ｘ４０＋１＋０＊２］＋＝ｍ［０ｘ０＋１＋０＊４］＊ｍ［０ｘ２０＋１＋１＊２］の演算、すなわち、０ｘ０１番地のデータと０ｘ２３番地のデータの積を０ｘ４１番地に足す。これは、行列Ａの要素（０，１）と行列Ｂの要素（１，１）の積を行列Ｃの要素（０，１）に足すことに相当する。
【０１００】
同様に繰返し番号５〜９を実行することで、繰返し番号９終了時点で、行列Ｃの要素（０，１）にはＡ（０，０）＊Ｂ（０，１）＋Ａ（０，１）＊Ｂ（１，１）＋Ａ（０，２）＊Ｂ（２，１）＋Ａ（０，３）＊Ｂ（３，１）が格納される。
【０１０１】
同様に、繰返し番号１０〜１２を実行することで、繰返し番号１２終了時点で、行列Ｃの要素（１，０）にはＡ（１，０）＊Ｂ（０，０）＋Ａ（１，１）＊Ｂ（１，０）＋Ａ（１，２）＊Ｂ（２，０）＋Ａ（１，３）＊Ｂ（３，０）が格納される。
【０１０２】
また、繰返し番号１３〜１６を実行することで、繰返し番号１６終了時点で、行列Ｃの要素（１，１）にはＡ（１，０）＊Ｂ（０，１）＋Ａ（１，１）＊Ｂ（１，１）＋Ａ（１，２）＊Ｂ（２，１）＋Ａ（１，３）＊Ｂ（３，１）が格納される。
【０１０３】
［効果の説明］
以上より、データ処理装置１００により、アドレス更新命令を完全に取り除いたうえで、行列積の演算を実行できる。
【０１０４】
［第２の実施形態］
本発明における第２の実施形態は、上記第１の実施形態と比べ、ＭＡＣ命令にＢＲＮＥＳＴ命令が統合されている点が異なる他は同様である。
【０１０５】
図９Ａ及び９Ｂは、第２の実施形態における命令語の構成およびＭＡＣ命令の動作を示す図である。これによると、図９Ａに示されるように、第２の実施形態における命令語には、１ビットのフィールドａｆが追加されている。そして、図９Ｂに示されるように、ＭＡＣ命令では、第１の実施形態の動作に追加して、フィールドａｆの値が１の場合に、ＢＲＮＥＳＴ命令の動作を行うように構成される。
【０１０６】
図１０は、第２の実施形態における行列積を実行する場合のアセンブリプログラム例を示す図である。
【０１０７】
ここで、ＭＡＣ命令は、３つのオペランドｒｓ、ｒｒ、ｒｄに追加して、即値フィールドｉｍｍを表すオペランドと、フィールドａｆを表すオペランドとが追加されている。すなわち、図１０の１０行目の命令では、フィールドａｆの値が１であり、即値フィールドｉｍｍの値として、ラベルＬＸへのプログラムカウンタ増分値（０）が格納されることとなる。
【０１０８】
これにより、アドレス更新命令に加え、ループ制御命令をも完全に取り除いたうえで、行列積の演算を実行することができ、大幅な実行時間削減を実現できる。
【０１０９】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１０】
この出願は、２０１７年１１月１３日に出願された日本出願特願２０１７−２１８０８９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１１】
本発明によれば、機械学習や信号処理などの行列積演算を多用するアプリケーションの高速化といった用途に適用できる。
【符号の説明】
【０１１２】
１００    データ処理装置
１１０    制御部
１１２    命令レジスタ
１１４    命令デコーダ
１１６    演算器制御信号生成部
１２０    プログラムカウンタ
１３０    演算器
１４０    ループカウンタ群
１４１−１、１４１−２、１４１−３    ループカウンタ
１４２−１、１４２−２、１４２−３    ループカウント最大値レジスタ
１４３−１、１４３−２、１４３−３    ループステップレジスタ（ループ変数増分レジスタ）
１５０    ループ制御部
１５１−１〜１５１−３    加算器
１５２−１〜１５２−３    比較器
１５３−１〜１５３−３    マルチプレクサ
１５４−１、１５４−２    論理和ゲート
２１０    命令メモリ
２２０    データメモリ
ＬＣＮＴ＿Ａ〜ＬＣＮＴ＿Ｃ    ループカウンタ値
ＬＭＡＸ＿Ａ〜ＬＭＡＸ＿Ｃ    ループカウント最大値
ＬＳＴＥＰ＿Ａ〜ＬＳＴＥＰ＿Ｃ    ループ変数増分値
【図１】
2019093451.tif 000003
【図２】
2019093451.tif 000004
【図３】
2019093451.tif 000005
【図４Ａ】
2019093451.tif 000006
【図４Ｂ】
2019093451.tif 000007
【図５】
2019093451.tif 000008
【図６】
2019093451.tif 000009
【図７】
2019093451.tif 000010
【図８】
2019093451.tif 000011
【図９Ａ】
2019093451.tif 000012
【図９Ｂ】
2019093451.tif 000013
【図１０】
2019093451.tif 000014
【図１１】
2019093451.tif 000015
【図１２】
2019093451.tif 000016
【手続補正書】
【提出日】令和2年4月22日(2020.4.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
前記演算器制御信号に基づいて演算を実行する演算器と、
前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含み、
前記ループ制御手段は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段は、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行い、
前記制御手段は、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する
データ処理装置。
【請求項２】
前記ループ制御手段は、
前記第ｎのループカウンタ値と前記第ｎのループ変数増分値とを加算して、前記第ｎの加算値を出力する第ｎの加算器と、
前記第ｎのループカウンタ値と前記第ｎのループカウント最大値とを比較して、第ｎの比較結果を出力する第ｎの比較器と、
前記第１乃至第ｎの比較結果に基づいて、前記第ｎのループカウンタ値、前記第ｎの加算値、およびゼロのいずれかを選択して、選択した値を前記第ｎの更新値として前記ｎのループカウンタに供給する第ｎのマルチプレクサと、
前記第１乃至第Ｎの比較結果の論理和を求めて、少なくとも前記ループ終了信号を出力する論理和ゲート群と、
を備える、請求項１に記載のデータ処理装置。
【請求項３】
前記制御手段は、前記多重ループを脱出する条件が揃わない場合に有効信号を出力し、
前記ループ制御手段は、前記有効信号に応答して、前記ループカウンタ群中の前記第１乃至第Ｎのループカウンタを、それぞれ、第１乃至第Ｎの更新値で更新する、
請求項２に記載のデータ処理装置。
【請求項４】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含み、
前記ループ制御手段は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段は、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う、
ループ制御装置。
【請求項５】
前記ループ制御手段は、
前記第ｎのループカウンタ値と前記第ｎのループ変数増分値とを加算して、前記第ｎの加算値を出力する第ｎの加算器と、
前記第ｎのループカウンタ値と前記第ｎのループカウント最大値とを比較して、第ｎの比較結果を出力する第ｎの比較器と、
前記第１乃至第ｎの比較結果に基づいて、前記第ｎのループカウンタ値、前記第ｎの加算値、およびゼロのいずれかを選択して、選択した値を前記第ｎの更新値として前記ｎのループカウンタに供給する第ｎのマルチプレクサと、
前記第１乃至第Ｎの比較結果の論理和を求めて、前記ループ終了信号を出力する論理和ゲート群と、
を備える、請求項４に記載のループ制御装置。
【請求項６】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
前記演算器制御信号に基づいて演算を実行する演算器と、
前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、
前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段において、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行い、
前記制御手段が、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する
データ処理方法。
【請求項７】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、
前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第ｎのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持させ、
前記ループ制御手段が、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う、
ループ制御方法。
【請求項８】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
前記演算器制御信号に基づいて演算を実行する演算器と、
前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、
前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理とを実行させ、
前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行わせる処理を実行させ、
前記制御手段に、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する処理を実行させる
プログラム。
【請求項９】
ループ制御レジスタ組を含むループカウンタ群と、
該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、
前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理と実行させ、
前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う処理を実行させる、
プログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
本発明の一形態におけるプログラムは、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と；命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と；前記演算器制御信号に基づいて演算を実行する演算器と；前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと；を備え、前記ループカウンタ群は、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むデータ処理装置において、前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理とを実行させ、前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行わせる処理を実行させ、前記制御手段に、前記第１乃至第Ｎのループカウンタの第１乃至第Ｎのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する処理を実行させる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
本発明の別の一形態におけるプログラムは、ループ制御レジスタ組を含むループカウンタ群と；該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と；を備え、前記ループカウンタ群において、多重ループの第１乃至第Ｎ（Ｎは２以上の整数）の階層のために、前記ループ制御レジスタ組として、第１乃至第Ｎのループカウンタと、第１乃至第Ｎのループカウント最大値レジスタと、第１乃至第Ｎのループ変数増分レジスタとを含むループ制御装置において、前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第ｎ（１≦ｎ≦Ｎ）のループカウンタの第ｎのループカウンタ値と第ｎのループカウント最大値レジスタの第ｎのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第ｎのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第ｎのループカウンタ値に第ｎのループ変数増分レジスタの第ｎのループ変数増分値を加算して得られる第ｎの加算値を、新たな第ｎのループカウンタ値である第ｎの更新値として前記第ｎのループカウンタに保持する処理と実行させ、前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第１乃至第Ｎの階層にそれぞれ対応する前記第１乃至第Ｎのループカウンタに対して同時に行う処理を実行させる。
【国際調査報告】
2019093451.tif 000017
2019093451.tif 000018