JP2006293741A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP2006293741A
JP2006293741A JP2005114421A JP2005114421A JP2006293741A JP 2006293741 A JP2006293741 A JP 2006293741A JP 2005114421 A JP2005114421 A JP 2005114421A JP 2005114421 A JP2005114421 A JP 2005114421A JP 2006293741 A JP2006293741 A JP 2006293741A
Authority
JP
Japan
Prior art keywords
circuit
instruction
execution
value
stored
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
Application number
JP2005114421A
Other languages
English (en)
Inventor
Toshiya Sakamoto
俊哉 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2005114421A priority Critical patent/JP2006293741A/ja
Publication of JP2006293741A publication Critical patent/JP2006293741A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 複数の演算ユニットの内、動作を停止させる一部の演算ユニットに対するクロック信号の供給を停止することが出来る簡易且つ小型のプロセッサを提供する。
【解決手段】 本発明のプロセッサは、複数の演算ユニットについてそれぞれ動作を停止させるか否かを表わす値が格納される命令マスクレジスタ152、該命令マスクレジスタ152に格納されている値に基づいて複数の演算ユニットの一部の演算ユニットの動作を停止させる命令発行回路151、及び該命令マスクレジスタ152に格納されている値に基づいて動作を停止させる一部の演算ユニットに対するクロック信号の供給を停止させるクロック制御回路155を具えている。
【選択図】 図3

Description

本発明は、複数の実行回路を具え、これら複数の実行回路の一部の実行回路の動作を停止させることが可能なプロセッサに関し、特に、該一部の実行回路に対するクロック信号の供給を停止することが可能なプロセッサに関するものである。
従来、複数の演算ユニットに対して同一命令を同時に発行し、該複数の演算ユニットを並列的に動作させて演算処理を行なうSIMD(Single Instruction Multiple Data)型のプロセッサが知られている。
該SIMD型プロセッサにおいては、演算処理の内容によって複数の演算ユニットの一部の演算ユニットに対する命令の発行を停止させ、該一部の演算ユニットの動作を停止させることがあるが、この場合、動作を実行しない演算ユニットにクロック信号が供給されることとなって、無駄な電力が消費されることになる。
そこで、無駄な消費電力を低減させるべく、動作を実行しない演算ユニットに対するクロック信号の供給を停止することが可能なプロセッサが知られている。
この種のプロセッサにおいては、演算ユニットが動作状態であるか否かを検出することが必要となるが、その検出方法として、デコーダが命令をデコードする際に、演算ユニットが動作を行なうタイミングを検出する方法が知られている(例えば、特許文献1参照)。
又、演算ユニットに動作状態であるか否かを検出する検出機構を設けて、該検出機構によって検出する方法が知られている。
特許第2924736号明細書
しかしながら、演算ユニットが動作を行なうタイミングをデコーダによって検出するプロセッサにおいては、デコーダの回路構成が複雑になるため、プロセッサ全体の構成が複雑となる問題があった。
又、演算ユニットが動作状態であるか否かを演算ユニット自体によって検出するプロセッサにおいては、複数の演算ユニットにそれぞれ検出機構を設けなければならず、各演算ユニットの構成が大きくなるため、プロセッサ全体が大型となる問題があった。
本発明の目的は、複数の実行回路の内、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させることが出来る簡易且つ小型のプロセッサを提供することである。
そこで本発明者は、上記課題を解決すべく鋭意研究を行なった結果、従来のプロセッサにおいて実行回路に対する命令発行の制御に用いられる命令マスクレジスタに着目し、本発明の完成に至った。
本発明に係るプロセッサは、外部から供給されるクロック信号に基づいて命令を実行する複数の実行回路と、該複数の実行回路にクロック信号を供給するクロック供給回路と、前記複数の実行回路についてそれぞれ動作を停止させるか否かを表わす値が格納される命令マスクレジスタ回路と、該命令マスクレジスタ回路に格納されている値に基づいて前記複数の実行回路の一部の実行回路の動作を停止させる動作制御回路とを具えている。そして、該プロセッサは、
前記命令マスクレジスタ回路に格納されている値に基づいて、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させるクロック制御手段
を具えている。
上記本発明に係るプロセッサにおいては、従来のプロセッサに設けられている命令マスクレジスタ回路に格納されている値に基づいて、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させるので、実行回路が動作状態であるか否かを検出するための複雑な構成は不要である。又、実行回路に動作状態であるか否かを検出する検出機構を設ける必要もない。
具体的には、1命令の実行サイクルを複数のステージに分けて該複数のステージでの処理を並列的に実行するパイプライン処理が可能であって、前記命令マスクレジスタ回路に値が格納されてからタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納される1或いは複数の遅延レジスタ手段を具えており、前記クロック制御手段は、該1或いは複数の遅延レジスタ手段に格納されている値に基づき制御信号を作成してクロック供給回路に供給する。
第3ステージ以降のステージで実行回路によって処理が実行されるものであって、少なくとも、実行回路によって処理が実行されるステージ数と同数の複数の遅延レジスタ手段を具えており、該複数の遅延レジスタ手段の内、1つの遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行される最初のステージの1つ前のステージまでのステージ数と同じマシンサイクル数以上タイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、該1つの遅延レジスタ手段以外の遅延レジスタ手段には、該1つの遅延レジスタ手段に該値が格納されてから1マシンサイクルずつタイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記複数の遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する。
第3ステージ以降のステージで実行回路によって処理が実行されるプロセッサにおいては、複数の遅延レジスタ手段にそれぞれ上記のタイミングで命令マスクレジスタ回路と同じ値が格納され、各実行回路について該複数の遅延レジスタ手段にそれぞれ格納されている値に論理和演算が施される。この結果、命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行される最終ステージまでのステージ数と同じマシンサイクル数以上遅れたタイミングで、前記演算結果からなる制御信号がクロック供給回路に供給されて、動作を停止させる実行回路に対するクロック信号の供給が停止されることになる。この様にして、動作を停止させる実行回路がパイプラインに投入されている何れの命令によっても使用されなくなるタイミングで、該実行回路に対するクロック信号の供給を停止させることが出来る。
第2ステージを含むステージで実行回路によって処理が実行されるものであって、実行回路によって処理が実行されるステージ数よりも1だけ少ない1或いは複数の遅延レジスタ手段を具え、該1或いは複数の遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから1マシンサイクルずつタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する。
第2ステージを含むステージで実行回路によって処理が実行されるプロセッサにおいては、1或いは複数の遅延レジスタ手段に、前記命令マスクレジスタ回路に値が格納されてから1マシンサイクルずつタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納され、各実行回路について前記命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている値に論理和演算が施される。この結果、命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行されるステージ数と同じマシンサイクル数だけ遅れたタイミングで、前記演算結果からなる制御信号がクロック供給回路に供給されて、動作を停止させる実行回路に対するクロック信号の供給が停止されることになる。この様にして、動作を停止させる実行回路がパイプラインに投入されている何れの命令によっても使用されなくなるタイミングで、該実行回路に対するクロック信号の供給を停止させることが出来る。
又、具体的には、前記動作制御回路は、前記命令マスクレジスタ回路に格納されている値が動作を停止させないことを表わしている実行回路に対して、外部から供給される命令コードに応じた命令を発行する一方、前記命令マスクレジスタ回路に格納されている値が動作を停止させることを表わしている実行回路に対しては、動作を停止すべき旨の命令を発行する。
前記動作制御回路は、複数の実行回路に対して同時に命令を発行することが可能であって、前記複数の実行回路と同数の否定論理積回路を具えており、複数の否定論理積回路には夫々、外部から同一の命令コードが供給されると共に、命令マスクレジスタ回路に格納されている複数の実行回路についての複数の値の内、1つの実行回路についての値が入力され、各否定論理積回路は、供給された命令コードを構成する値と入力された1つの実行回路についての値とに否定論理積演算を施し、該演算結果からなる命令を該1つの実行回路に出力する。
上記具体的構成においては、命令マスクレジスタ回路に格納されている値が動作を停止させないことを表わしている実行回路に対して、外部から供給された命令コードを構成する各値を反転してなる命令が供給される一方、命令マスクレジスタ回路に格納されている値が動作を停止させることを表わしている実行回路に対しては、全ての値が“1”の命令が供給されることになる。
本発明に係るプロセッサによれば、実行回路が動作状態であるか否かを検出するための複雑な構成は不要であり、然も、実行回路に検出機構を設ける必要もないので、プロセッサ全体の構成が簡易且つ小型となる。
以下、本発明を、2つの行列式の対応する2つの要素の積の総和を求める演算処理が可能であって画像のフィルタリングに用いられるプロセッサに実施した形態につき、図面に沿って具体的に説明する。
本発明に係るプロセッサ(1)は、図1に示す如く、4つの演算ユニット(10)(10)(10)(10)を具えており、これらの演算ユニット(10)(10)(10)(10)には、各演算ユニット(10)に供給すべきデータが格納される第1データレジスタ(11)及び第2データレジスタ(12)が接続され、これらのデータレジスタ(11)(12)には夫々、第1データバス(22)及び第2データバス(23)を介して、第1データメモリ(3)及び第2データメモリ(4)が接続されている。第1データメモリ(3)には、2つの行列の内、一方の行列の要素データが格納され、第2データメモリ(4)には、他方の行列の要素データが格納されている。
又、4つの演算ユニット(10)(10)(10)(10)には、これらの演算ユニットから得られる演算結果の総和を算出する総和演算器(13)が接続され、該総和演算器(13)には、該演算結果が格納される結果レジスタ(14)が接続されている。該結果レジスタ(14)は、第3データバス(24)を介して、前記2つのデータメモリ(3)(4)に接続されている。
更に、4つの演算ユニット(10)(10)(10)(10)には、命令バス(27)を介して、これらの演算ユニットに対して命令を発行する命令制御ユニット(15)が接続されており、各演算ユニット(10)は、命令制御ユニット(15)からの命令を実行する。該命令には、動作を停止すべき旨の無操作(NOP)命令が含まれており、演算ユニット(10)は、該NOP命令を受けて動作停止状態となる。
更に又、4つの演算ユニット(10)(10)(10)(10)には、クロック信号供給線(28)を介して、これらの演算ユニットにクロック信号を供給するクロック供給ユニット(16)が接続されており、各演算ユニット(10)は、該クロック供給ユニット(16)から供給されるクロック信号に基づいて前記命令制御ユニット(15)からの命令を実行する。クロック供給ユニット(16)は、前記命令制御ユニット(15)に接続されており、該命令制御ユニット(15)からのクロック制御信号が“1”の値をとる演算ユニット(10)に対してクロック信号を供給する一方、“0”の値をとる演算ユニット(10)に対してはクロック信号の供給を停止する。
前記命令制御ユニット(15)には、プロセッサ全体の動作を制御するプロセッサ制御ユニット(17)が接続されており、該プロセッサ制御ユニット(17)にプログラムメモリ(2)が接続されている。該プログラムメモリ(2)には、2つの行列の対応する2つの要素の積の総和を求めるプログラムが格納されており、プロセッサ制御ユニット(17)は、プログラムメモリ(2)から該プログラムを構成する命令語を読み出し、該命令語を構成する命令コードを前記命令制御ユニット(15)に供給する。
又、プロセッサ制御ユニット(17)には、第1アドレス演算ユニット(18)及び第2アドレス演算ユニット(19)が接続されており、これらのアドレス演算ユニット(18)(19)は夫々、アドレスレジスタ(20)(21)及びアドレスバス(25)(26)を介して、前記第1データメモリ(3)及び前記第2データメモリ(4)に接続されている。プロセッサ制御ユニット(17)は、上述の如くプログラムメモリ(2)から読み出した命令語を構成するオペランドを第1アドレス演算ユニット(18)及び第2アドレス演算ユニット(19)に供給し、第1アドレス演算ユニット(18)は、第1データメモリ(3)にアクセスするためのアドレスを生成する一方、第2アドレス演算ユニット(19)は、第2データメモリ(4)にアクセスするためのアドレスを生成する。
図2は、各演算ユニット(10)の構成を表わしており、各演算ユニット(10)は、図1に示す第1データレジスタ(11)及び第2データレジスタ(12)から供給される2つの値を乗算する乗算器(111)と、該乗算器(111)から得られる乗算結果の累積演算を行なう累積演算器(112)と、図1に示す命令制御ユニット(15)から供給される命令をデコードして該デコード結果に応じて乗算器(111)及び累積演算器(112)の動作を制御するデコーダ(113)と、累積演算器(112)からの演算結果を格納して該演算結果を累積演算器(112)に供給すると共に該演算結果を図1に示す総和演算器(13)に供給するアキュムレータ(114)とを具えている。クロック供給ユニット(16)からのクロック信号は、該アキュムレータ(114)及び図示省略する複数のレジスタに入力される。
図3は、図1に示す命令制御ユニット(15)の構成を表わしており、該命令制御ユニット(15)は、4つの演算ユニット(10)(10)(10)(10)に対応して4ビットの値を保持することが可能な命令マスクレジスタ(152)と、該4ビットの値と前記プロセッサ制御ユニット(17)から供給される命令コードとに基づき4つの演算ユニット(10)(10)(10)(10)に対してそれぞれ命令を発行する命令発行回路(151)とを具えている。
命令マスクレジスタ(152)には、プロセッサ制御ユニット(17)から4つの演算ユニット(10)(10)(10)(10)についての4ビットの値が供給される。ここで、各値は、演算ユニット(10)を動作状態に設定することを表わす“1”の値、或いは動作停止状態に設定することを表わす“0”の値をとり、命令発行回路(151)は、命令マスクレジスタ(152)から供給される値が“1”の値の演算ユニット(10)に対して、プロセッサ制御ユニット(17)から供給される命令コードに応じた命令を発する一方、命令マスクレジスタ(152)から供給される値が“0”の値の演算ユニット(10)に対しては、プロセッサ制御ユニット(17)から供給される命令コードに拘わらず、NOP命令を発する。
又、上記プロセッサ(1)は、1命令の実行サイクルを4つのステージに分けて該4つのステージの処理を並列的に実行するパイプライン処理が可能であって、上記命令制御ユニット(15)は、演算ユニット(10)によって処理が実行されるステージ数よりも1だけ少ない2つの遅延レジスタ(153)(154)と、上記命令マスクレジスタ(152)及びこれら2つの遅延レジスタ(153)(154)から供給される値に基づいて図1に示すクロック供給ユニット(16)に対するクロック制御信号を作成するクロック制御回路(155)とを具えている。第1遅延レジスタ(153)には、上記命令マスクレジスタ(152)に4ビットの値が格納されてから1マシンサイクルだけタイミングを遅らせて該値と同じ値が格納され、第2遅延レジスタ(154)には、更に1マシンサイクルだけタイミングを遅らせて該値と同じ値が格納される。
図4は、上記命令発行回路(151)の具体的構成を表わしており、該命令発行回路(151)は、上記演算ユニット(10)と同数の4つのNANDゲート回路(156)(156)(156)(156)を具えている。尚、図4においては、1つのNANDゲート回路(156)の具体的構成を図示し、他の3つのNANDゲート回路の具体的構成は該1つのNANDゲート回路と同一であるので図示を省略する。
NANDゲート回路(156)は、命令コードのビット数と同数の8つのNANDゲート(157)を具えており、各NANDゲート(157)の2つの入力端子(図示省略)の内、一方の入力端子には、命令コードを構成する8ビットの値の内の1ビットの値が入力され、他方の入力端子には、前記命令マスクレジスタ(152)に格納されている4ビットの値の内、1つの演算ユニット(10)についての値が入力される。NANDゲート(157)では、入力された2つの値に否定論理積演算が施され、その演算結果が出力端子(図示省略)から1つの演算ユニット(10)に出力される。
上記NANDゲート回路(156)においては、命令マスクレジスタ(152)からの値が“1”の値をとる場合に、命令コードを構成する各値を反転してなる8ビットの命令が演算ユニット(10)に出力される一方、命令マスクレジスタ(152)からの値が“0”の値をとる場合には、命令コードに拘わらず、全ての値が“1”の8ビットのNOP命令が演算ユニット(10)に出力されることになる。
図5は、図3に示すクロック制御回路(155)の具体的構成を表わしており、該クロック制御回路(155)は、上記演算ユニット(10)と同数の4つの論理和ゲート(158)(158)(158)(158)と、これらの論理和ゲートから出力される4ビットの値が格納されるクロック制御レジスタ(159)とを具えている。
各論理和ゲート(158)の3つの入力端子(図示省略)には、上記の命令マスクレジスタ(152)、第1遅延レジスタ(153)及び第2遅延レジスタ(154)からそれぞれ1つの演算ユニット(10)についての値が入力され、各論理和ゲート(158)では、入力された3つの値に論理和演算が施される。各論理和ゲート(158)から得られる演算結果は一旦、クロック制御レジスタ(159)に格納された後、該演算結果からなるクロック制御信号が図1に示す前記クロック供給回路(16)に出力される。
下記の数1及び数2によって表わされる2つの5×5行列P、Cの対応する2つの要素の積の総和Sは、下記数3によって表わされる。
Figure 2006293741
Figure 2006293741
Figure 2006293741
本発明に係るプロセッサ(1)において上記総和Sを求める際に実行される動作について説明する。尚、以下の説明では、第1データメモリ(3)及び第2データメモリ(4)は、図6及び図7に示す如く8ワードのメモリ幅を有すると共に、上記行列P、Cの各要素データは8ビットの値から構成されており、第1データメモリ(3)には、上記行列Pの要素データが図6に示す如く“0x1000”番地から“0x1024”番地に格納され、第2データメモリ(4)には、上記行列Cの要素データが図7に示す如く“0x4000”番地から“0x4024”番地に格納されているものとする。
図8は、上記プロセッサ(1)において上記総和Sを求める際に実行される一連の動作を表わしており、先ずステップS1では、プロセッサ(1)を構成する全てのレジスタの値がリセットされ、ステップS2では、命令マスクレジスタ(152)に“1111”の4ビットの値がセットされる。
次にステップS3では、図6に示す如く上記行列Pの要素“P0,0”が格納されている第1データメモリ(3)のアドレス“0x1000”が第1アドレスレジスタ(20)にセットされると共に、図7に示す如く上記行列Cの要素“C0,0”が格納されている第2データメモリ(4)のアドレス“0x4000”が第2アドレスレジスタ(21)にセットされる。
続いてステップS4では、後述の並列読出し演算処理が5回繰り返される。並列読出し演算処理においては、図9に示す如く、ステップS11にて、第1データメモリ(3)から4ワード分のデータ、即ち、行列Pの4つの要素データが1マシンサイクルで同時に読み出されて第1データレジスタ(11)に格納されると共に、第2データメモリ(4)から4ワード分のデータ、即ち、行列Cの4つの要素データが1マシンサイクルで同時に読み出されて第2データレジスタ(12)に格納される。ステップS12では、上述の如く命令マスクレジスタの値が“1111”に設定されているので、4つの演算ユニット(10)(10)(10)(10)において、第1データレジスタ(11)及び第2データレジスタ(12)から供給される2つの値を乗算した後に該乗算結果に累積演算を施す積和演算処理が並列して実行される。ステップS13では、第1アドレスレジスタ(20)の値に“8”が加算されて該値が更新されると共に、第2アドレスレジスタ(21)の値に“8”が加算されて該値が更新される。
上記並列読出し演算処理が5回繰り返されることによって、4つの演算ユニット(10)(10)(10)(10)において夫々、第1〜第4列の1列分の要素の積の総和が得られることになる。例えば、第1の演算ユニット(10)においては、第1列目の要素の積の総和が得られることになる。
その後、図8のステップS5にて、命令マスクレジスタ(152)に“1000”の4ビットの値がセットされ、次にステップS6では、図6に示す如く上記行列Pの要素“P0,4”が格納されている第1データメモリ(3)のアドレス“0x1004”が第1アドレスレジスタ(11)にセットされると共に、図7に示す如く上記行列Cの要素“C0,4”が格納されている第2データメモリ(4)のアドレス“0x4004”が第2アドレスレジスタ(12)にセットされる。
続いてステップS7では、上述の図9に示す並列読出し演算処理を5回繰り返す。該並列読出し演算処理においては、命令マスクレジスタ(152)の値が“1000”に設定されているので、第1の演算ユニット(10)においてのみ上記積和演算処理が実行されることになる。該ステップにて並列読出し演算処理が5回繰り返されることによって、第1の演算ユニット(10)において、第1列目の要素の積及び第5列目の要素の積の総和が得られることになる。
その後、ステップS8では、命令マスクレジスタ(152)に“1111”の4ビットの値がセットされ、最後にステップS9では、4つの演算ユニット(10)(10)(10)(10)のアキュムレータ(114)(114)(114)(114)に格納されている演算結果の総和が算出された後、その算出結果が結果レジスタ(14)に格納される。
この様にして、上記行列P、Cの対応する2つの要素の積の総和Sが求められることになる。
図10は、図8に示すステップS5乃至ステップS9の動作を実現するために命令が実行されるタイミングと、命令マスクレジスタ(152)、第1遅延レジスタ(153)及び第2遅延レジスタ(154)の値が書き換えられるタイミングと、クロック制御信号の値が変化するタイミングとを表わしている。
上記プロセッサ(1)において、第1ステージは命令読出しステージであって、該ステージでは、プログラムメモリ(2)に対するアクセスのためのアドレス演算処理、プログラムメモリ(2)からの命令語の読出し処理、及び命令マスクレジスタ(152)に対する値の格納処理が行なわれる。又、第2ステージは命令解読ステージである。更に、第3ステージは第1の命令実行ステージであって、該ステージでは、2つのデータレジスタ(11)(12)に格納されているデータを用いた積和演算処理、データメモリ(3)(4)からデータを読み出してデータレジスタ(11)(12)へ格納する処理、及びアドレスレジスタ(20)(21)の値の更新が行なわれる。更に又、第4ステージは第2の命令実行ステージであって、該ステージでは、第3ステージでデータレジスタ(11)(12)に格納されたデータを用いた積和演算処理、データメモリ(3)(4)へのデータの書込み処理、及びデータレジスタ(11)(12)に格納されているデータを演算ユニット(10)へ転送する処理が行なわれる。
図中の“命令A”は、命令マスクレジスタ(152)に値をセットすべき旨の命令、“命令B”は、アドレスレジスタ(20)(21)に値をセットすべき旨の命令、“命令C”は、上述の並列読出し演算を行なうべき旨の命令、“命令D”は、4つの演算ユニット(10)(10)(10)(10)から得られる演算結果の総和を算出すべき旨の命令、“RPT5”は、同じ命令を5回繰り返すべき旨の命令、“NOP”はNOP命令を表わしている。
図示の如く、命令制御ユニット(15)に対して命令Cが5回繰り返し発行され、発行された命令Cはそれぞれ、第2ステージ、第3ステージ及び第4ステージへと順次移行する。
第1番目の命令Cが発行されたサイクル5で、命令マスクレジスタ(152)に“1000”の値がセットされ、次のサイクル6では、該レジスタ(152)の値が“1”である第1演算ユニット(10)に該命令Cが出力されて解読される一方、第2乃至第4演算ユニットにはNOP命令が出力され、第1遅延レジスタ(153)に“1000”の値がセットされる。続いてサイクル7では、第1演算ユニット(10)に第2番目の命令Cが出力されて解読される一方、第2乃至第4演算ユニットにはNOP命令が出力され、第2遅延レジスタ(154)に“1000”の値がセットされる。
更にサイクル8では、第1演算ユニット(10)に第3番目の命令Cが出力されて解読される一方、第2乃至第4演算ユニットにはNOP命令が出力され、クロック制御レジスタ(155)に、サイクル7での命令マスクレジスタ(152)、第1遅延レジスタ(153)及び第2遅延レジスタ(154)の4ビットの値にそれぞれ論理和演算を施して得られる“1000”の値がセットされる。これによって、第1演算ユニット(10)に対するクロック制御信号の値が“1”、第2乃至第4演算ユニットのそれぞれに対するクロック制御信号の値が“0”となり、この結果、第2乃至第4演算ユニットに対するクロック信号の供給が停止され、第1演算ユニットにのみクロック信号が供給されることになる。この様に、動作を実行しない第2乃至第4演算ユニットに対するクロック信号の供給が停止されるので、無駄な消費電力を低減させることが出来る。
続いてサイクル9及びサイクル10ではそれぞれ、第1演算ユニット(10)に第4番目の命令C及び第5番目の命令Cが出力されて解読される一方、第2乃至第4演算ユニットにはNOP命令が出力される。その後、サイクル14で、命令マスクレジスタ(152)に“1111”の値がセットされ、次のサイクル15で、クロック制御レジスタ(155)に、サイクル14での命令マスクレジスタ(152)、第1遅延レジスタ(153)及び第2遅延レジスタ(154)の4ビットの値にそれぞれ論理和演算を施して得られる“1111”の値がセットされる。これによって、4つの全ての演算ユニット(10)(10)(10)(10)に対するクロック制御信号の値が“1”となり、この結果、全ての演算ユニットにクロック信号が供給されることになる。
上記プロセッサ(1)においては、第2ステージ、第3ステージ及び第4ステージの3つのステージで演算ユニット(10)が使用されることがあるので、上述の如く命令マスクレジスタ(152)、第1遅延レジスタ(153)及び第2遅延レジスタ(154)の値を用いて、命令マスクレジスタ(152)に“0”の値が格納されたサイクル5から3サイクルだけ遅れたサイクル8で第2乃至第4演算ユニット(10)(10)(10)に対するクロック信号の供給が停止される。この様にして、第2乃至第4演算ユニット(10)(10)(10)が命令Cに先行する何れの命令によっても使用されなくなるタイミングで、これらの演算ユニットに対するクロック信号の供給を停止させることが出来る。
本発明に係るプロセッサ(1)においては、従来のプロセッサに設けられている命令マスクレジスタ(152)に格納されている値と、2つの遅延レジスタ(153)(154)にそれぞれ格納されている値とに基づいて、動作を停止させる一部の演算ユニットに対するクロック信号の供給を停止させるので、2つの遅延レジスタ(153)(154)を追加するだけでよく、プロセッサ全体の構成は簡易且つ小型となる。
尚、上記実施の形態においては、本発明を、4つのステージの処理を並列的に実行するパイプライン処理が可能なプロセッサに実施しているが、4以外の複数のステージの処理を並列的に実行するパイプライン処理が可能なプロセッサについても実施が可能である。
又、第3ステージ以降のステージで演算ユニット(10)によって処理が実行されるプロセッサに実施することも可能である。
図11は、10個のステージの処理を並列的に実行するパイプライン処理が可能であって、第6乃至第9ステージで演算ユニット(10)によって処理が実行されるプロセッサの命令制御ユニット(55)を表わしている。
該命令制御ユニット(55)は、命令マスクレジスタ(552)と、該命令マスクレジスタ(552)に格納されている値とプロセッサ制御ユニット(17)から供給される命令コードとに基づき演算ユニット(10)に対して命令を発行する命令発行回路(551)とを具えている。
そして、該命令制御ユニット(55)は、8つの遅延レジスタ(553)〜(560)と、クロック供給ユニット(16)に対するクロック制御信号を作成するクロック制御回路(561)とを具えている。8つの遅延レジスタ(553)〜(560)には、命令マスクレジスタ(552)に値が格納されてから1マシンサイクルずつタイミングを遅らせて該値と同じ値が格納され、これら8つの遅延レジスタの内、演算ユニット(10)によって処理が実行されるステージ数と同じ4つの第5乃至第8遅延レジスタ(557)〜(560)の値に基づいてクロック制御信号が作成される。
上記プロセッサにおいては、命令マスクレジスタ(552)に“0”の値が格納されてから9マシンサイクルだけ遅れたタイミングで、動作を停止させる演算ユニット(10)に対するクロック信号の供給が停止される。
尚、第1乃至第4の遅延レジスタ(553)〜(556)を省略して、第5の遅延レジスタ(557)に、命令マスクレジスタ(552)に値が格納されてから5マシンサイクルだけタイミングを遅らせて該値と同じ値を格納することも可能である。
本発明に係るプロセッサの構成を表わすブロック図である。 上記プロセッサの演算ユニットの構成を表わすブロック図である。 上記プロセッサの命令制御ユニットの構成を表わすブロック図である。 上記命令制御ユニットの命令発行回路の構成を表わすブロック図である。 上記命令制御ユニットのクロック制御回路の構成を表わすブロック図である。 上記プロセッサの第1データメモリの記憶内容を表わす図である。 上記プロセッサの第2データメモリの記憶内容を表わす図である。 上記プロセッサにおいて実行される行列演算処理の手続きを表わすフローチャートである。 並列読出し演算処理の具体的手続きを表わすフローチャートである。 命令が実行されるタイミングと、命令マスクレジスタ、第1遅延レジスタ及び第2遅延レジスタの値が書き換えられるタイミングと、クロック制御信号の値が変化するタイミングとを表わすタイミングチャートである。 他の実施例の命令制御ユニットの構成を表わすブロック図である。
符号の説明
(1) プロセッサ
(11) 第1データレジスタ
(12) 第2データレジスタ
(13) 総和演算器
(14) 結果レジスタ
(15) 命令制御ユニット
(151) 命令発行回路
(152) 命令マスクレジスタ
(153) 第1遅延レジスタ
(154) 第2遅延レジスタ
(155) クロック制御回路
(16) クロック供給ユニット
(17) プロセッサ制御ユニット
(18) 第1アドレス演算ユニット
(19) 第2アドレス演算ユニット
(20) 第1アドレスレジスタ
(21) 第2アドレスレジスタ

Claims (7)

  1. 外部から供給されるクロック信号に基づいて命令を実行する複数の実行回路と、該複数の実行回路にクロック信号を供給するクロック供給回路と、前記複数の実行回路についてそれぞれ動作を停止させるか否かを表わす値が格納される命令マスクレジスタ回路と、該命令マスクレジスタ回路に格納されている値に基づいて前記複数の実行回路の一部の実行回路の動作を停止させる動作制御回路とを具えたプロセッサにおいて、
    前記命令マスクレジスタ回路に格納されている値に基づいて、動作を停止させる一部の実行回路に対するクロック信号の供給を停止させるクロック制御手段
    を具えていることを特徴とするプロセッサ。
  2. 1命令の実行サイクルを複数のステージに分けて該複数のステージでの処理を並列的に実行するパイプライン処理が可能であって、前記命令マスクレジスタ回路に値が格納されてからタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納される1或いは複数の遅延レジスタ手段を具えており、前記クロック制御手段は、該1或いは複数の遅延レジスタ手段に格納されている値に基づき制御信号を作成してクロック供給回路に供給する請求項1に記載のプロセッサ。
  3. 第3ステージ以降のステージで実行回路によって処理が実行されるものであって、少なくとも、実行回路によって処理が実行されるステージ数と同数の複数の遅延レジスタ手段を具えており、該複数の遅延レジスタ手段の内、1つの遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから実行回路によって処理が実行される最初のステージの1つ前のステージまでのステージ数と同じマシンサイクル数以上タイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、該1つの遅延レジスタ手段以外の遅延レジスタ手段には、該1つの遅延レジスタ手段に該値が格納されてから1マシンサイクルずつタイミングを遅らせて前記命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記複数の遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する請求項2に記載のプロセッサ。
  4. 第2ステージを含むステージで実行回路によって処理が実行されるものであって、実行回路によって処理が実行されるステージ数よりも1だけ少ない1或いは複数の遅延レジスタ手段を具え、該1或いは複数の遅延レジスタ手段には、前記命令マスクレジスタ回路に値が格納されてから1マシンサイクルずつタイミングを遅らせて該命令マスクレジスタ回路と同じ値が格納され、前記クロック制御手段は、各実行回路について前記命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている値に論理和演算を施し、該演算結果からなる制御信号をクロック供給回路に供給する請求項2に記載のプロセッサ。
  5. 前記クロック制御手段は、実行回路と同数の論理和素子と、各論理和素子から得られる演算結果を格納して該演算結果からなる制御信号をクロック供給回路に供給するクロック制御レジスタ手段とを具え、各論理和素子は、命令マスクレジスタ回路及び遅延レジスタ手段にそれぞれ格納されている複数の実行回路についての複数の値の内、1つの実行回路についての値が入力されるべき複数の入力端子と、入力された複数の値に論理和演算を施して得られる演算結果を前記クロック制御レジスタ手段に出力すべき出力端子とを具えている請求項4に記載のプロセッサ。
  6. 前記動作制御回路は、前記命令マスクレジスタ回路に格納されている値が動作を停止させないことを表わしている実行回路に対して、外部から供給される命令コードに応じた命令を発行する一方、前記命令マスクレジスタ回路に格納されている値が動作を停止させることを表わしている実行回路に対しては、動作を停止すべき旨の命令を発行する請求項1乃至請求項5の何れかに記載のプロセッサ。
  7. 前記動作制御回路は、複数の実行回路に対して同時に命令を発行することが可能であって、前記複数の実行回路と同数の否定論理積回路を具えており、複数の否定論理積回路には夫々、外部から同一の命令コードが供給されると共に、命令マスクレジスタ回路に格納されている複数の実行回路についての複数の値の内、1つの実行回路についての値が入力され、各否定論理積回路は、供給された命令コードを構成する値と入力された1つの実行回路についての値とに否定論理積演算を施し、該演算結果からなる命令を該1つの実行回路に出力する請求項6に記載のプロセッサ。
JP2005114421A 2005-04-12 2005-04-12 プロセッサ Pending JP2006293741A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005114421A JP2006293741A (ja) 2005-04-12 2005-04-12 プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005114421A JP2006293741A (ja) 2005-04-12 2005-04-12 プロセッサ

Publications (1)

Publication Number Publication Date
JP2006293741A true JP2006293741A (ja) 2006-10-26

Family

ID=37414252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005114421A Pending JP2006293741A (ja) 2005-04-12 2005-04-12 プロセッサ

Country Status (1)

Country Link
JP (1) JP2006293741A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011065522A (ja) * 2009-09-18 2011-03-31 Nec Computertechno Ltd ベクトル処理装置、ベクトル処理方法、およびプログラム
JP2018032190A (ja) * 2016-08-24 2018-03-01 キヤノン株式会社 演算回路、その制御方法及びプログラム
JP2020508512A (ja) * 2017-02-23 2020-03-19 エイアールエム リミテッド データ処理装置における乗累算

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011065522A (ja) * 2009-09-18 2011-03-31 Nec Computertechno Ltd ベクトル処理装置、ベクトル処理方法、およびプログラム
JP2018032190A (ja) * 2016-08-24 2018-03-01 キヤノン株式会社 演算回路、その制御方法及びプログラム
JP2020508512A (ja) * 2017-02-23 2020-03-19 エイアールエム リミテッド データ処理装置における乗累算
US11513796B2 (en) 2017-02-23 2022-11-29 Arm Limited Multiply-accumulation in a data processing apparatus
JP7253492B2 (ja) 2017-02-23 2023-04-06 アーム・リミテッド データ処理装置における乗累算

Similar Documents

Publication Publication Date Title
EP3513281B1 (en) Vector multiply-add instruction
US8612726B2 (en) Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type
US7475393B2 (en) Method and apparatus for parallel computations with incomplete input operands
JP5491071B2 (ja) 命令融合演算装置および命令融合演算方法
KR100331565B1 (ko) 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치
CN108139886B (zh) 用于图像处理器的多功能执行通道
JP2008310693A (ja) 情報処理装置
JP2006293741A (ja) プロセッサ
US7415601B2 (en) Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
US6981130B2 (en) Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
JP2006072961A (ja) 演算処理装置のメモリ回路
US20140237216A1 (en) Microprocessor
JP2003216411A5 (ja)
CN110109704B (zh) 一种数字信号处理系统
JP5786719B2 (ja) ベクトルプロセッサ
JP5292831B2 (ja) プログラマブルコントローラ
JP2008003663A (ja) データ処理装置、データ処理方法
JP3088956B2 (ja) 演算装置
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置
Gera et al. Design of Non-Pipelined LC3 RISC Microcontroller
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
KR101484600B1 (ko) 카운터 기반 멀티 사이클 프로세서 제어 장치
KR100357175B1 (ko) 디지탈 신호 프로세서
JP4702004B2 (ja) マイクロコンピュータ
Navabi et al. Computer Architecture