(57)【要約】【課題】  複数の演算ユニットの内、動作を停止させる一部の演算ユニットに対するクロック信号の供給を停止することが出来る簡易且つ小型のプロセッサを提供する。【解決手段】  本発明のプロセッサは、複数の演算ユニットについてそれぞれ動作を停止させるか否かを表わす値が格納される命令マスクレジスタ152、該命令マスクレジスタ152に格納されている値に基づいて複数の演算ユニットの一部の演算ユニットの動作を停止させる命令発行回路151、及び該命令マスクレジスタ152に格納されている値に基づいて動作を停止させる一部の演算ユニットに対するクロック信号の供給を停止させるクロック制御回路155を具えている。【選択図】      図３
2006293741.tif 000002
【特許請求の範囲】
【請求項１】
外部から供給されるクロック信号に基づいて命令を実行する複数の実行回路と、該複数の実行回路にクロック信号を供給するクロック供給回路と、前記複数の実行回路についてそれぞれ動作を停止させるか否かを表わす値が格納される命令マスクレジスタ回路と、該命令マスクレジスタ回路に格納されている値に基づいて前記複数の実行回路の一部の実行回路の動作を停止させる動作制御回路とを具えたプロセッサにおいて、
前記命令マスクレジスタ回路に格納されている値に基づいて、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させるクロック制御手段
を具えていることを特徴とするプロセッサ。
【請求項２】
１命令の実行サイクルを複数のステージに分けて該複数のステージでの処理を並列的に実行するパイプライン処理が可能であって、前記命令マスクレジスタ回路に値が格納されてからタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納される１或いは複数の遅延レジスタ手段を具えており、前記クロック制御手段は、該１或いは複数の遅延レジスタ手段に格納されている値に基づき制御信号を作成してクロック供給回路に供給する請求項１に記載のプロセッサ。
【請求項３】
第３ステージ以降のステージで実行回路によって処理が実行されるものであって、少なくとも、実行回路によって処理が実行されるステージ数と同数の複数の遅延レジスタ手段を具えており、該複数の遅延レジスタ手段の内、１つの遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行される最初のステージの１つ前のステージまでのステージ数と同じマシンサイクル数以上タイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、該１つの遅延レジスタ手段以外の遅延レジスタ手段には、該１つの遅延レジスタ手段に該値が格納されてから１マシンサイクルずつタイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記複数の遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する請求項２に記載のプロセッサ。
【請求項４】
第２ステージを含むステージで実行回路によって処理が実行されるものであって、実行回路によって処理が実行されるステージ数よりも１だけ少ない１或いは複数の遅延レジスタ手段を具え、該１或いは複数の遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから１マシンサイクルずつタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する請求項２に記載のプロセッサ。
【請求項５】
前記クロック制御手段は、実行回路と同数の論理和素子と、各論理和素子から得られる演算結果を格納して該演算結果からなる制御信号をクロック供給回路に供給するクロック制御レジスタ手段とを具え、各論理和素子は、命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている複数の実行回路についての複数の値の内、１つの実行回路についての値が入力されるべき複数の入力端子と、入力された複数の値に論理和演算を施して得られる演算結果を前記クロック制御レジスタ手段に出力すべき出力端子とを具えている請求項４に記載のプロセッサ。
【請求項６】
前記動作制御回路は、前記命令マスクレジスタ回路に格納されている値が動作を停止させないことを表わしている実行回路に対して、外部から供給される命令コードに応じた命令を発行する一方、前記命令マスクレジスタ回路に格納されている値が動作を停止させることを表わしている実行回路に対しては、動作を停止すべき旨の命令を発行する請求項１乃至請求項５の何れかに記載のプロセッサ。
【請求項７】
前記動作制御回路は、複数の実行回路に対して同時に命令を発行することが可能であって、前記複数の実行回路と同数の否定論理積回路を具えており、複数の否定論理積回路には夫々、外部から同一の命令コードが供給されると共に、命令マスクレジスタ回路に格納されている複数の実行回路についての複数の値の内、１つの実行回路についての値が入力され、各否定論理積回路は、供給された命令コードを構成する値と入力された１つの実行回路についての値とに否定論理積演算を施し、該演算結果からなる命令を該１つの実行回路に出力する請求項６に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の実行回路を具え、これら複数の実行回路の一部の実行回路の動作を停止させることが可能なプロセッサに関し、特に、該一部の実行回路に対するクロック信号の供給を停止することが可能なプロセッサに関するものである。
【背景技術】
【０００２】
従来、複数の演算ユニットに対して同一命令を同時に発行し、該複数の演算ユニットを並列的に動作させて演算処理を行なうＳＩＭＤ(Single  Instruction  Multiple  Data)型のプロセッサが知られている。
該ＳＩＭＤ型プロセッサにおいては、演算処理の内容によって複数の演算ユニットの一部の演算ユニットに対する命令の発行を停止させ、該一部の演算ユニットの動作を停止させることがあるが、この場合、動作を実行しない演算ユニットにクロック信号が供給されることとなって、無駄な電力が消費されることになる。
そこで、無駄な消費電力を低減させるべく、動作を実行しない演算ユニットに対するクロック信号の供給を停止することが可能なプロセッサが知られている。
【０００３】
この種のプロセッサにおいては、演算ユニットが動作状態であるか否かを検出することが必要となるが、その検出方法として、デコーダが命令をデコードする際に、演算ユニットが動作を行なうタイミングを検出する方法が知られている(例えば、特許文献１参照)。
又、演算ユニットに動作状態であるか否かを検出する検出機構を設けて、該検出機構によって検出する方法が知られている。
【０００４】
【特許文献１】特許第２９２４７３６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、演算ユニットが動作を行なうタイミングをデコーダによって検出するプロセッサにおいては、デコーダの回路構成が複雑になるため、プロセッサ全体の構成が複雑となる問題があった。
又、演算ユニットが動作状態であるか否かを演算ユニット自体によって検出するプロセッサにおいては、複数の演算ユニットにそれぞれ検出機構を設けなければならず、各演算ユニットの構成が大きくなるため、プロセッサ全体が大型となる問題があった。
本発明の目的は、複数の実行回路の内、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させることが出来る簡易且つ小型のプロセッサを提供することである。
【課題を解決するための手段】
【０００６】
そこで本発明者は、上記課題を解決すべく鋭意研究を行なった結果、従来のプロセッサにおいて実行回路に対する命令発行の制御に用いられる命令マスクレジスタに着目し、本発明の完成に至った。
【０００７】
本発明に係るプロセッサは、外部から供給されるクロック信号に基づいて命令を実行する複数の実行回路と、該複数の実行回路にクロック信号を供給するクロック供給回路と、前記複数の実行回路についてそれぞれ動作を停止させるか否かを表わす値が格納される命令マスクレジスタ回路と、該命令マスクレジスタ回路に格納されている値に基づいて前記複数の実行回路の一部の実行回路の動作を停止させる動作制御回路とを具えている。そして、該プロセッサは、
前記命令マスクレジスタ回路に格納されている値に基づいて、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させるクロック制御手段
を具えている。
【０００８】
上記本発明に係るプロセッサにおいては、従来のプロセッサに設けられている命令マスクレジスタ回路に格納されている値に基づいて、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させるので、実行回路が動作状態であるか否かを検出するための複雑な構成は不要である。又、実行回路に動作状態であるか否かを検出する検出機構を設ける必要もない。
【０００９】
具体的には、１命令の実行サイクルを複数のステージに分けて該複数のステージでの処理を並列的に実行するパイプライン処理が可能であって、前記命令マスクレジスタ回路に値が格納されてからタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納される１或いは複数の遅延レジスタ手段を具えており、前記クロック制御手段は、該１或いは複数の遅延レジスタ手段に格納されている値に基づき制御信号を作成してクロック供給回路に供給する。
【００１０】
第３ステージ以降のステージで実行回路によって処理が実行されるものであって、少なくとも、実行回路によって処理が実行されるステージ数と同数の複数の遅延レジスタ手段を具えており、該複数の遅延レジスタ手段の内、１つの遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行される最初のステージの１つ前のステージまでのステージ数と同じマシンサイクル数以上タイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、該１つの遅延レジスタ手段以外の遅延レジスタ手段には、該１つの遅延レジスタ手段に該値が格納されてから１マシンサイクルずつタイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記複数の遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する。
【００１１】
第３ステージ以降のステージで実行回路によって処理が実行されるプロセッサにおいては、複数の遅延レジスタ手段にそれぞれ上記のタイミングで命令マスクレジスタ回路と同じ値が格納され、各実行回路について該複数の遅延レジスタ手段にそれぞれ格納されている値に論理和演算が施される。この結果、命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行される最終ステージまでのステージ数と同じマシンサイクル数以上遅れたタイミングで、前記演算結果からなる制御信号がクロック供給回路に供給されて、動作を停止させる実行回路に対するクロック信号の供給が停止されることになる。この様にして、動作を停止させる実行回路がパイプラインに投入されている何れの命令によっても使用されなくなるタイミングで、該実行回路に対するクロック信号の供給を停止させることが出来る。
【００１２】
第２ステージを含むステージで実行回路によって処理が実行されるものであって、実行回路によって処理が実行されるステージ数よりも１だけ少ない１或いは複数の遅延レジスタ手段を具え、該１或いは複数の遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから１マシンサイクルずつタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する。
【００１３】
第２ステージを含むステージで実行回路によって処理が実行されるプロセッサにおいては、１或いは複数の遅延レジスタ手段に、前記命令マスクレジスタ回路に値が格納されてから１マシンサイクルずつタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納され、各実行回路について前記命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている値に論理和演算が施される。この結果、命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行されるステージ数と同じマシンサイクル数だけ遅れたタイミングで、前記演算結果からなる制御信号がクロック供給回路に供給されて、動作を停止させる実行回路に対するクロック信号の供給が停止されることになる。この様にして、動作を停止させる実行回路がパイプラインに投入されている何れの命令によっても使用されなくなるタイミングで、該実行回路に対するクロック信号の供給を停止させることが出来る。
【００１４】
又、具体的には、前記動作制御回路は、前記命令マスクレジスタ回路に格納されている値が動作を停止させないことを表わしている実行回路に対して、外部から供給される命令コードに応じた命令を発行する一方、前記命令マスクレジスタ回路に格納されている値が動作を停止させることを表わしている実行回路に対しては、動作を停止すべき旨の命令を発行する。
【００１５】
前記動作制御回路は、複数の実行回路に対して同時に命令を発行することが可能であって、前記複数の実行回路と同数の否定論理積回路を具えており、複数の否定論理積回路には夫々、外部から同一の命令コードが供給されると共に、命令マスクレジスタ回路に格納されている複数の実行回路についての複数の値の内、１つの実行回路についての値が入力され、各否定論理積回路は、供給された命令コードを構成する値と入力された１つの実行回路についての値とに否定論理積演算を施し、該演算結果からなる命令を該１つの実行回路に出力する。
【００１６】
上記具体的構成においては、命令マスクレジスタ回路に格納されている値が動作を停止させないことを表わしている実行回路に対して、外部から供給された命令コードを構成する各値を反転してなる命令が供給される一方、命令マスクレジスタ回路に格納されている値が動作を停止させることを表わしている実行回路に対しては、全ての値が“１”の命令が供給されることになる。
【発明の効果】
【００１７】
本発明に係るプロセッサによれば、実行回路が動作状態であるか否かを検出するための複雑な構成は不要であり、然も、実行回路に検出機構を設ける必要もないので、プロセッサ全体の構成が簡易且つ小型となる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を、２つの行列式の対応する２つの要素の積の総和を求める演算処理が可能であって画像のフィルタリングに用いられるプロセッサに実施した形態につき、図面に沿って具体的に説明する。
本発明に係るプロセッサ(１)は、図１に示す如く、４つの演算ユニット(10)(10)(10)(10)を具えており、これらの演算ユニット(10)(10)(10)(10)には、各演算ユニット(10)に供給すべきデータが格納される第１データレジスタ(11)及び第２データレジスタ(12)が接続され、これらのデータレジスタ(11)(12)には夫々、第１データバス(22)及び第２データバス(23)を介して、第１データメモリ(３)及び第２データメモリ(４)が接続されている。第１データメモリ(３)には、２つの行列の内、一方の行列の要素データが格納され、第２データメモリ(４)には、他方の行列の要素データが格納されている。
【００１９】
又、４つの演算ユニット(10)(10)(10)(10)には、これらの演算ユニットから得られる演算結果の総和を算出する総和演算器(13)が接続され、該総和演算器(13)には、該演算結果が格納される結果レジスタ(14)が接続されている。該結果レジスタ(14)は、第３データバス(24)を介して、前記２つのデータメモリ(３)(４)に接続されている。
【００２０】
更に、４つの演算ユニット(10)(10)(10)(10)には、命令バス(27)を介して、これらの演算ユニットに対して命令を発行する命令制御ユニット(15)が接続されており、各演算ユニット(10)は、命令制御ユニット(15)からの命令を実行する。該命令には、動作を停止すべき旨の無操作(ＮＯＰ)命令が含まれており、演算ユニット(10)は、該ＮＯＰ命令を受けて動作停止状態となる。
更に又、４つの演算ユニット(10)(10)(10)(10)には、クロック信号供給線(28)を介して、これらの演算ユニットにクロック信号を供給するクロック供給ユニット(16)が接続されており、各演算ユニット(10)は、該クロック供給ユニット(16)から供給されるクロック信号に基づいて前記命令制御ユニット(15)からの命令を実行する。クロック供給ユニット(16)は、前記命令制御ユニット(15)に接続されており、該命令制御ユニット(15)からのクロック制御信号が“１”の値をとる演算ユニット(10)に対してクロック信号を供給する一方、“０”の値をとる演算ユニット(10)に対してはクロック信号の供給を停止する。
【００２１】
前記命令制御ユニット(15)には、プロセッサ全体の動作を制御するプロセッサ制御ユニット(17)が接続されており、該プロセッサ制御ユニット(17)にプログラムメモリ(２)が接続されている。該プログラムメモリ(２)には、２つの行列の対応する２つの要素の積の総和を求めるプログラムが格納されており、プロセッサ制御ユニット(17)は、プログラムメモリ(２)から該プログラムを構成する命令語を読み出し、該命令語を構成する命令コードを前記命令制御ユニット(15)に供給する。
又、プロセッサ制御ユニット(17)には、第１アドレス演算ユニット(18)及び第２アドレス演算ユニット(19)が接続されており、これらのアドレス演算ユニット(18)(19)は夫々、アドレスレジスタ(20)(21)及びアドレスバス(25)(26)を介して、前記第１データメモリ(３)及び前記第２データメモリ(４)に接続されている。プロセッサ制御ユニット(17)は、上述の如くプログラムメモリ(２)から読み出した命令語を構成するオペランドを第１アドレス演算ユニット(18)及び第２アドレス演算ユニット(19)に供給し、第１アドレス演算ユニット(18)は、第１データメモリ(３)にアクセスするためのアドレスを生成する一方、第２アドレス演算ユニット(19)は、第２データメモリ(４)にアクセスするためのアドレスを生成する。
【００２２】
図２は、各演算ユニット(10)の構成を表わしており、各演算ユニット(10)は、図１に示す第１データレジスタ(11)及び第２データレジスタ(12)から供給される２つの値を乗算する乗算器(111)と、該乗算器(111)から得られる乗算結果の累積演算を行なう累積演算器(112)と、図１に示す命令制御ユニット(15)から供給される命令をデコードして該デコード結果に応じて乗算器(111)及び累積演算器(112)の動作を制御するデコーダ(113)と、累積演算器(112)からの演算結果を格納して該演算結果を累積演算器(112)に供給すると共に該演算結果を図１に示す総和演算器(13)に供給するアキュムレータ(114)とを具えている。クロック供給ユニット(16)からのクロック信号は、該アキュムレータ(114)及び図示省略する複数のレジスタに入力される。
【００２３】
図３は、図１に示す命令制御ユニット(15)の構成を表わしており、該命令制御ユニット(15)は、４つの演算ユニット(10)(10)(10)(10)に対応して４ビットの値を保持することが可能な命令マスクレジスタ(152)と、該４ビットの値と前記プロセッサ制御ユニット(17)から供給される命令コードとに基づき４つの演算ユニット(10)(10)(10)(10)に対してそれぞれ命令を発行する命令発行回路(151)とを具えている。
命令マスクレジスタ(152)には、プロセッサ制御ユニット(17)から４つの演算ユニット(10)(10)(10)(10)についての４ビットの値が供給される。ここで、各値は、演算ユニット(10)を動作状態に設定することを表わす“１”の値、或いは動作停止状態に設定することを表わす“０”の値をとり、命令発行回路(151)は、命令マスクレジスタ(152)から供給される値が“１”の値の演算ユニット(10)に対して、プロセッサ制御ユニット(17)から供給される命令コードに応じた命令を発する一方、命令マスクレジスタ(152)から供給される値が“０”の値の演算ユニット(10)に対しては、プロセッサ制御ユニット(17)から供給される命令コードに拘わらず、ＮＯＰ命令を発する。
【００２４】
又、上記プロセッサ(１)は、１命令の実行サイクルを４つのステージに分けて該４つのステージの処理を並列的に実行するパイプライン処理が可能であって、上記命令制御ユニット(15)は、演算ユニット(10)によって処理が実行されるステージ数よりも１だけ少ない２つの遅延レジスタ(153)(154)と、上記命令マスクレジスタ(152)及びこれら２つの遅延レジスタ(153)(154)から供給される値に基づいて図１に示すクロック供給ユニット(16)に対するクロック制御信号を作成するクロック制御回路(155)とを具えている。第１遅延レジスタ(153)には、上記命令マスクレジスタ(152)に４ビットの値が格納されてから１マシンサイクルだけタイミングを遅らせて該値と同じ値が格納され、第２遅延レジスタ(154)には、更に１マシンサイクルだけタイミングを遅らせて該値と同じ値が格納される。
【００２５】
図４は、上記命令発行回路(151)の具体的構成を表わしており、該命令発行回路(151)は、上記演算ユニット(10)と同数の４つのＮＡＮＤゲート回路(156)(156)(156)(156)を具えている。尚、図４においては、１つのＮＡＮＤゲート回路(156)の具体的構成を図示し、他の３つのＮＡＮＤゲート回路の具体的構成は該１つのＮＡＮＤゲート回路と同一であるので図示を省略する。
ＮＡＮＤゲート回路(156)は、命令コードのビット数と同数の８つのＮＡＮＤゲート(157)を具えており、各ＮＡＮＤゲート(157)の２つの入力端子(図示省略)の内、一方の入力端子には、命令コードを構成する８ビットの値の内の１ビットの値が入力され、他方の入力端子には、前記命令マスクレジスタ(152)に格納されている４ビットの値の内、１つの演算ユニット(10)についての値が入力される。ＮＡＮＤゲート(157)では、入力された２つの値に否定論理積演算が施され、その演算結果が出力端子(図示省略)から１つの演算ユニット(10)に出力される。
上記ＮＡＮＤゲート回路(156)においては、命令マスクレジスタ(152)からの値が“１”の値をとる場合に、命令コードを構成する各値を反転してなる８ビットの命令が演算ユニット(10)に出力される一方、命令マスクレジスタ(152)からの値が“０”の値をとる場合には、命令コードに拘わらず、全ての値が“１”の８ビットのＮＯＰ命令が演算ユニット(10)に出力されることになる。
【００２６】
図５は、図３に示すクロック制御回路(155)の具体的構成を表わしており、該クロック制御回路(155)は、上記演算ユニット(10)と同数の４つの論理和ゲート(158)(158)(158)(158)と、これらの論理和ゲートから出力される４ビットの値が格納されるクロック制御レジスタ(159)とを具えている。
各論理和ゲート(158)の３つの入力端子(図示省略)には、上記の命令マスクレジスタ(152)、第１遅延レジスタ(153)及び第２遅延レジスタ(154)からそれぞれ１つの演算ユニット(10)についての値が入力され、各論理和ゲート(158)では、入力された３つの値に論理和演算が施される。各論理和ゲート(158)から得られる演算結果は一旦、クロック制御レジスタ(159)に格納された後、該演算結果からなるクロック制御信号が図１に示す前記クロック供給回路(16)に出力される。
【００２７】
下記の数１及び数２によって表わされる２つの５×５行列Ｐ、Ｃの対応する２つの要素の積の総和Ｓは、下記数３によって表わされる。
【００２８】
【数１】
2006293741.tif 000003
【００２９】
【数２】
2006293741.tif 000004
【００３０】
【数３】
2006293741.tif 000005
【００３１】
本発明に係るプロセッサ(１)において上記総和Ｓを求める際に実行される動作について説明する。尚、以下の説明では、第１データメモリ(３)及び第２データメモリ(４)は、図６及び図７に示す如く８ワードのメモリ幅を有すると共に、上記行列Ｐ、Ｃの各要素データは８ビットの値から構成されており、第１データメモリ(３)には、上記行列Ｐの要素データが図６に示す如く“０ｘ１０００”番地から“０ｘ１０２４”番地に格納され、第２データメモリ(４)には、上記行列Ｃの要素データが図７に示す如く“０ｘ４０００”番地から“０ｘ４０２４”番地に格納されているものとする。
【００３２】
図８は、上記プロセッサ(１)において上記総和Ｓを求める際に実行される一連の動作を表わしており、先ずステップＳ１では、プロセッサ(１)を構成する全てのレジスタの値がリセットされ、ステップＳ２では、命令マスクレジスタ(152)に“１１１１”の４ビットの値がセットされる。
次にステップＳ３では、図６に示す如く上記行列Ｐの要素“Ｐ０，０”が格納されている第１データメモリ(３)のアドレス“０ｘ１０００”が第１アドレスレジスタ(20)にセットされると共に、図７に示す如く上記行列Ｃの要素“Ｃ０，０”が格納されている第２データメモリ(４)のアドレス“０ｘ４０００”が第２アドレスレジスタ(21)にセットされる。
【００３３】
続いてステップＳ４では、後述の並列読出し演算処理が５回繰り返される。並列読出し演算処理においては、図９に示す如く、ステップＳ１１にて、第１データメモリ(３)から４ワード分のデータ、即ち、行列Ｐの４つの要素データが１マシンサイクルで同時に読み出されて第１データレジスタ(11)に格納されると共に、第２データメモリ(４)から４ワード分のデータ、即ち、行列Ｃの４つの要素データが１マシンサイクルで同時に読み出されて第２データレジスタ(12)に格納される。ステップＳ１２では、上述の如く命令マスクレジスタの値が“１１１１”に設定されているので、４つの演算ユニット(10)(10)(10)(10)において、第１データレジスタ(11)及び第２データレジスタ(12)から供給される２つの値を乗算した後に該乗算結果に累積演算を施す積和演算処理が並列して実行される。ステップＳ１３では、第１アドレスレジスタ(20)の値に“８”が加算されて該値が更新されると共に、第２アドレスレジスタ(21)の値に“８”が加算されて該値が更新される。
上記並列読出し演算処理が５回繰り返されることによって、４つの演算ユニット(10)(10)(10)(10)において夫々、第１〜第４列の１列分の要素の積の総和が得られることになる。例えば、第１の演算ユニット(10)においては、第１列目の要素の積の総和が得られることになる。
【００３４】
その後、図８のステップＳ５にて、命令マスクレジスタ(152)に“１０００”の４ビットの値がセットされ、次にステップＳ６では、図６に示す如く上記行列Ｐの要素“Ｐ０，４”が格納されている第１データメモリ(３)のアドレス“０ｘ１００４”が第１アドレスレジスタ(11)にセットされると共に、図７に示す如く上記行列Ｃの要素“Ｃ０，４”が格納されている第２データメモリ(４)のアドレス“０ｘ４００４”が第２アドレスレジスタ(12)にセットされる。
続いてステップＳ７では、上述の図９に示す並列読出し演算処理を５回繰り返す。該並列読出し演算処理においては、命令マスクレジスタ(152)の値が“１０００”に設定されているので、第１の演算ユニット(10)においてのみ上記積和演算処理が実行されることになる。該ステップにて並列読出し演算処理が５回繰り返されることによって、第１の演算ユニット(10)において、第１列目の要素の積及び第５列目の要素の積の総和が得られることになる。
【００３５】
その後、ステップＳ８では、命令マスクレジスタ(152)に“１１１１”の４ビットの値がセットされ、最後にステップＳ９では、４つの演算ユニット(10)(10)(10)(10)のアキュムレータ(114)(114)(114)(114)に格納されている演算結果の総和が算出された後、その算出結果が結果レジスタ(14)に格納される。
この様にして、上記行列Ｐ、Ｃの対応する２つの要素の積の総和Ｓが求められることになる。
【００３６】
図１０は、図８に示すステップＳ５乃至ステップＳ９の動作を実現するために命令が実行されるタイミングと、命令マスクレジスタ(152)、第１遅延レジスタ(153)及び第２遅延レジスタ(154)の値が書き換えられるタイミングと、クロック制御信号の値が変化するタイミングとを表わしている。
上記プロセッサ(１)において、第１ステージは命令読出しステージであって、該ステージでは、プログラムメモリ(２)に対するアクセスのためのアドレス演算処理、プログラムメモリ(２)からの命令語の読出し処理、及び命令マスクレジスタ(152)に対する値の格納処理が行なわれる。又、第２ステージは命令解読ステージである。更に、第３ステージは第１の命令実行ステージであって、該ステージでは、２つのデータレジスタ(11)(12)に格納されているデータを用いた積和演算処理、データメモリ(３)(４)からデータを読み出してデータレジスタ(11)(12)へ格納する処理、及びアドレスレジスタ(20)(21)の値の更新が行なわれる。更に又、第４ステージは第２の命令実行ステージであって、該ステージでは、第３ステージでデータレジスタ(11)(12)に格納されたデータを用いた積和演算処理、データメモリ(３)(４)へのデータの書込み処理、及びデータレジスタ(11)(12)に格納されているデータを演算ユニット(10)へ転送する処理が行なわれる。
【００３７】
図中の“命令Ａ”は、命令マスクレジスタ(152)に値をセットすべき旨の命令、“命令Ｂ”は、アドレスレジスタ(20)(21)に値をセットすべき旨の命令、“命令Ｃ”は、上述の並列読出し演算を行なうべき旨の命令、“命令Ｄ”は、４つの演算ユニット(10)(10)(10)(10)から得られる演算結果の総和を算出すべき旨の命令、“ＲＰＴ５”は、同じ命令を５回繰り返すべき旨の命令、“ＮＯＰ”はＮＯＰ命令を表わしている。
【００３８】
図示の如く、命令制御ユニット(15)に対して命令Ｃが５回繰り返し発行され、発行された命令Ｃはそれぞれ、第２ステージ、第３ステージ及び第４ステージへと順次移行する。
第１番目の命令Ｃが発行されたサイクル５で、命令マスクレジスタ(152)に“１０００”の値がセットされ、次のサイクル６では、該レジスタ(152)の値が“１”である第１演算ユニット(10)に該命令Ｃが出力されて解読される一方、第２乃至第４演算ユニットにはＮＯＰ命令が出力され、第１遅延レジスタ(153)に“１０００”の値がセットされる。続いてサイクル７では、第１演算ユニット(10)に第２番目の命令Ｃが出力されて解読される一方、第２乃至第４演算ユニットにはＮＯＰ命令が出力され、第２遅延レジスタ(154)に“１０００”の値がセットされる。
【００３９】
更にサイクル８では、第１演算ユニット(10)に第３番目の命令Ｃが出力されて解読される一方、第２乃至第４演算ユニットにはＮＯＰ命令が出力され、クロック制御レジスタ(155)に、サイクル７での命令マスクレジスタ(152)、第１遅延レジスタ(153)及び第２遅延レジスタ(154)の４ビットの値にそれぞれ論理和演算を施して得られる“１０００”の値がセットされる。これによって、第１演算ユニット(10)に対するクロック制御信号の値が“１”、第２乃至第４演算ユニットのそれぞれに対するクロック制御信号の値が“０”となり、この結果、第２乃至第４演算ユニットに対するクロック信号の供給が停止され、第１演算ユニットにのみクロック信号が供給されることになる。この様に、動作を実行しない第２乃至第４演算ユニットに対するクロック信号の供給が停止されるので、無駄な消費電力を低減させることが出来る。
続いてサイクル９及びサイクル１０ではそれぞれ、第１演算ユニット(10)に第４番目の命令Ｃ及び第５番目の命令Ｃが出力されて解読される一方、第２乃至第４演算ユニットにはＮＯＰ命令が出力される。その後、サイクル１４で、命令マスクレジスタ(152)に“１１１１”の値がセットされ、次のサイクル１５で、クロック制御レジスタ(155)に、サイクル１４での命令マスクレジスタ(152)、第１遅延レジスタ(153)及び第２遅延レジスタ(154)の４ビットの値にそれぞれ論理和演算を施して得られる“１１１１”の値がセットされる。これによって、４つの全ての演算ユニット(10)(10)(10)(10)に対するクロック制御信号の値が“１”となり、この結果、全ての演算ユニットにクロック信号が供給されることになる。
【００４０】
上記プロセッサ(１)においては、第２ステージ、第３ステージ及び第４ステージの３つのステージで演算ユニット(10)が使用されることがあるので、上述の如く命令マスクレジスタ(152)、第１遅延レジスタ(153)及び第２遅延レジスタ(154)の値を用いて、命令マスクレジスタ(152)に“０”の値が格納されたサイクル５から３サイクルだけ遅れたサイクル８で第２乃至第４演算ユニット(10)(10)(10)に対するクロック信号の供給が停止される。この様にして、第２乃至第４演算ユニット(10)(10)(10)が命令Ｃに先行する何れの命令によっても使用されなくなるタイミングで、これらの演算ユニットに対するクロック信号の供給を停止させることが出来る。
【００４１】
本発明に係るプロセッサ(１)においては、従来のプロセッサに設けられている命令マスクレジスタ(152)に格納されている値と、２つの遅延レジスタ(153)(154)にそれぞれ格納されている値とに基づいて、動作を停止させる一部の演算ユニットに対するクロック信号の供給を停止させるので、２つの遅延レジスタ(153)(154)を追加するだけでよく、プロセッサ全体の構成は簡易且つ小型となる。
【００４２】
尚、上記実施の形態においては、本発明を、４つのステージの処理を並列的に実行するパイプライン処理が可能なプロセッサに実施しているが、４以外の複数のステージの処理を並列的に実行するパイプライン処理が可能なプロセッサについても実施が可能である。
又、第３ステージ以降のステージで演算ユニット(10)によって処理が実行されるプロセッサに実施することも可能である。
【００４３】
図１１は、１０個のステージの処理を並列的に実行するパイプライン処理が可能であって、第６乃至第９ステージで演算ユニット(10)によって処理が実行されるプロセッサの命令制御ユニット(55)を表わしている。
該命令制御ユニット(55)は、命令マスクレジスタ(552)と、該命令マスクレジスタ(552)に格納されている値とプロセッサ制御ユニット(17)から供給される命令コードとに基づき演算ユニット(10)に対して命令を発行する命令発行回路(551)とを具えている。
そして、該命令制御ユニット(55)は、８つの遅延レジスタ(553)〜(560)と、クロック供給ユニット(16)に対するクロック制御信号を作成するクロック制御回路(561)とを具えている。８つの遅延レジスタ(553)〜(560)には、命令マスクレジスタ(552)に値が格納されてから１マシンサイクルずつタイミングを遅らせて該値と同じ値が格納され、これら８つの遅延レジスタの内、演算ユニット(10)によって処理が実行されるステージ数と同じ４つの第５乃至第８遅延レジスタ(557)〜(560)の値に基づいてクロック制御信号が作成される。
上記プロセッサにおいては、命令マスクレジスタ(552)に“０”の値が格納されてから９マシンサイクルだけ遅れたタイミングで、動作を停止させる演算ユニット(10)に対するクロック信号の供給が停止される。
尚、第１乃至第４の遅延レジスタ(553)〜(556)を省略して、第５の遅延レジスタ(557)に、命令マスクレジスタ(552)に値が格納されてから５マシンサイクルだけタイミングを遅らせて該値と同じ値を格納することも可能である。
【図面の簡単な説明】
【００４４】
【図１】本発明に係るプロセッサの構成を表わすブロック図である。
【図２】上記プロセッサの演算ユニットの構成を表わすブロック図である。
【図３】上記プロセッサの命令制御ユニットの構成を表わすブロック図である。
【図４】上記命令制御ユニットの命令発行回路の構成を表わすブロック図である。
【図５】上記命令制御ユニットのクロック制御回路の構成を表わすブロック図である。
【図６】上記プロセッサの第１データメモリの記憶内容を表わす図である。
【図７】上記プロセッサの第２データメモリの記憶内容を表わす図である。
【図８】上記プロセッサにおいて実行される行列演算処理の手続きを表わすフローチャートである。
【図９】並列読出し演算処理の具体的手続きを表わすフローチャートである。
【図１０】命令が実行されるタイミングと、命令マスクレジスタ、第１遅延レジスタ及び第２遅延レジスタの値が書き換えられるタイミングと、クロック制御信号の値が変化するタイミングとを表わすタイミングチャートである。
【図１１】他の実施例の命令制御ユニットの構成を表わすブロック図である。
【符号の説明】
【００４５】
(１)   プロセッサ
(11)   第１データレジスタ
(12)   第２データレジスタ
(13)   総和演算器
(14)   結果レジスタ
(15)   命令制御ユニット
(151)  命令発行回路
(152)  命令マスクレジスタ
(153)  第１遅延レジスタ
(154)  第２遅延レジスタ
(155)  クロック制御回路
(16)   クロック供給ユニット
(17)   プロセッサ制御ユニット
(18)   第１アドレス演算ユニット
(19)   第２アドレス演算ユニット
(20)   第１アドレスレジスタ
(21)   第２アドレスレジスタ
【図１】
2006293741.tif 000006
【図２】
2006293741.tif 000007
【図３】
2006293741.tif 000008
【図４】
2006293741.tif 000009
【図５】
2006293741.tif 000010
【図６】
2006293741.tif 000011
【図７】
2006293741.tif 000012
【図８】
2006293741.tif 000013
【図９】
2006293741.tif 000014
【図１０】
2006293741.tif 000015
【図１１】
2006293741.tif 000016