(57)【要約】      （修正有）【課題】外部に演算ユニットを効率よく接続することができるプロセッサコアを提供する。【解決手段】プロセッサコア１０は、拡張演算ユニット４０を制御するための拡張命令を備え、さらに拡張命令を実行するための制御手段４０４と、拡張演算ユニットを制御しデータを転送するインターフェース手段とを内蔵した。拡張ユニットのステージ演算器４０２からデータメモリ３１へ、アドレス信号、リード／ライトのコントロール信号、及びライトデータ信号が出力され、データメモリを直接アクセスする。プロセッサコアによるアクセスと競合する際には、セレクタ３１で調停する。【選択図】図５
2004288203.tif 000002
【特許請求の範囲】
【請求項１】
外部に接続される拡張演算ユニットを制御するための命令である拡張演算ユニット制御命令を実装すると共に、 命令をデコードする機能を有し、デコードした命令が前記拡張演算ユニットを制御する命令であった場合には、前記拡張演算ユニットに対して、演算データ、拡張演算コードの動作を規定する命令コード、及び該命令コードが有効であることを示す情報を出力する命令デコード部を有するプロセッサコアを備え、
前記プロセッサコアが、前記拡張演算ユニットから、アドレス、データ、データ書き込みと読み出しを制御する制御信号群を入力し、前記書き込み読み出し制御信号群がデータ読み出しが有効であることを示し、データ読み出しを行う時には、前記アドレスで指定された領域からデータを読み出して前記拡張演算ユニットへ出力し、前記書き込み読み出し制御信号群がデータ書き込みが有効であることを示し、データ書き込みを行う場合には、前記アドレスで指定された領域に、前記拡張演算ユニットからのデータを書き込み、プロセッサコアがロード命令によってデータ読み出し、ストア命令によってデータ書き込むデータメモリを有し、
前記データメモリが、前記データメモリへの前記プロセッサコアと前記拡張演算ユニットとから同時にアクセスがあったとき、そのアクセスを調停するセレクタ手段を備え たことを特徴とするプロセッサ。
【請求項２】
前記拡張演算ユニットは、プロセッサコアから入力される命令コードに従って演算を行う演算器を有し、データメモリから読み出した値を演算器の入力データとする請求項１記載のプロセッサ。
【請求項３】
前記拡張演算ユニットは、 プロセッサコアから入力される命令コードに従って演算を行う演算器を有し、演算器の出力結果がデータメモリへのアドレスとなる請求項１記載のプロセッサ。
【請求項４】
前記拡張演算ユニットは、プロセッサコアから入力される命令コードに従って演算を行う演算器を有し、演算結果をプロセッサコアへ出力し、プロセッサコアはその結果を内部の汎用レジスタへ書き込む請求項１記載のプロセッサ。
【請求項５】
前記拡張演算ユニットは、プロセッサコアから入力される命令コードと命令コード有効信号の値を格納するレジスタを持ち、
プロセッサコアは、パイプライン停止信号を前記拡張演算ユニットへ出力して、前記拡張演算演算ユニットは、パイプライン停止信号が有効なときにプロセッサコアから入力される命令コード有効信号の値を前記レジスタに書き込まないことで、前記拡張演算ユニットの実行を一時停止する請求項１記載のプロセッサ。
【請求項６】
前記拡張演算ユニットに対して出力する前記演算データは、該拡張演算ユニットを制御する命令の一部で指定されたレジスタ番号に従って、プロセッサ内部のレジスタファイルから読み出された値であることを特徴とする請求項１記載のプロセッサ。
【請求項７】
前記プロセッサコアが、さらに、パイプラインフラッシュ信号を前記拡張演算ユニットへ出力して、該パイプラインフラッシュ信号が有効なときに、前記拡張演算ユニットへ出力した命令の実行を破棄する手段を有することを特徴とする請求項１記載のプロセッサ。
【請求項８】
前記プロセッサコアが、さらに、前記拡張演算ユニットからパイプライン停止信号を入力し、該パイプライン停止信号が有効なときに、命令の実行を一時停止する手段を有することを特徴とする請求項１記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令を実行するプロセッサコア、及びこれを用いたプロセッサに関する。
【背景技術】
【０００２】
従来、この種の分野の技術に関しては、例えば図７に示すようなものがあった。
【０００３】
図７は、従来のプロセッサの基本構成を示すブロック図である。
【０００４】
このプロセッサは、プロセッサコア７０とデータメモリ８０とを備えている。
【０００５】
プロセッサコア７０は、フェッチｐＣ（ｆＰｅ）７０１、アドレスインクリメンタ７０２、命令メモリ７０３、命令レジスタ７０４、レジスタファイル７０５、デコード回路７０６、ソース（１）レジスタ７０７、ソース（２）レジスタ７０８、実行ステージ・コントロールレジスタ７１０、演算器７１１、パイプライン制御回路７１２、メモリステージ・データレジスタ７１３、メモリステージ・コントロールレジスタ７１５、レジスタライトステージ・レジスタ７１６、レジスタライトステージ・コントロールレジスタ７１７、及び命令有効レジスタ７１８から構成されている。
【０００６】
プロセッサコア７０は、５段のパイプライン構成で命令を実行する。すなわち、パイプラインステージ１（命令フェッチステージ）と、パイプラインステージ２（レジスタリードステージ）と、パイプラインステージ３（実行ステージ）と、パイプラインステージ４（メモリステージ）と、パイプラインステージ５（レジスタライトステージ）とを有する。
【０００７】
ここで、命令フェッチステージは、命令メモリ７０３から命令を読み出すステージであり、レジスタリードステージは、命令フェッチステージで読み出した命令で指定された、レジスタファイル７０５中のレジスタを読み出すとともに、デコード回路７０６で命令をデコードするステージである。実行ステージは、レジスタリードステージで読み出したレジスタの値と命令のデコード情報によって、演算器７１１で命令を実行するステージであり、メモリステージは、メモリロード、ストア命令の場合にはデータメモリ８０をアクセスする。レジスタライトステージは、実行ステージでの実行結果あるいはメモリロード命令の場合のロードデータをレジスタファイル７０５へ書き込む。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来のプロセッサコアでは、予め定義された命令を実行するだけで、外部に演算ユニットを接続するための拡張機能がなかった。すなわち、外部に演算ユニットを効率よく接続するための機構やインターフェース信号がないため、応用システムに適した演算ユニットを効率よくプロセッサコアに接続して、システム性能の向上を図ることができない。
【０００９】
そこで、応用システムに適した演算ユニット、例えば積和演算器をプロセッサコアに予め内蔵することも考えられるが、応用システムによっては、その積和演算器を全く実行しないものもある。従って、プロセッサコアに一様に前記積和演算器を内蔵することは無駄なハードウェアとなり、コスト増大の要因となる。
【００１０】
このようなことから、従来のプロセッサコアでは、コア外部に演算ユニットを効率よく接続するための拡張機能が求められていた。
【００１１】
本発明は、上述の如き従来の問題点を解決するためになされたもので、その目的は、外部に演算ユニットを効率よく接続することができるプロセッサコアと、これを用いたプロセッサを提供することである。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明に係るプロセッサでは、外部に接続される拡張演算ユニットを制御するための命令である拡張演算ユニット制御命令を実装すると共に、 命令をデコードする機能を有し、デコードした命令が前記拡張演算ユニットを制御する命令であった場合には、前記拡張演算ユニットに対して、演算データ、拡張演算コードの動作を規定する命令コード、及び該命令コードが有効であることを示す情報を出力する命令デコード部を有するプロセッサコアを備え、
前記プロセッサコアが、前記拡張演算ユニットから、アドレス、データ、データ書き込みと読み出しを制御する制御信号群を入力し、前記書き込み読み出し制御信号群がデータ読み出しが有効であることを示し、データ読み出しを行う時には、前記アドレスで指定された領域からデータを読み出して前記拡張演算ユニットへ出力し、前記書き込み読み出し制御信号群がデータ書き込みが有効であることを示し、データ書き込みを行う場合には、前記アドレスで指定された領域に、前記拡張演算ユニットからのデータを書き込み、プロセッサコアがロード命令によってデータ読み出し、ストア命令によってデータ書き込むデータメモリを有し、
前記データメモリが、前記データメモリへの前記プロセッサコアと前記拡張演算ユニットとから同時にアクセスがあったとき、そのアクセスを調停するセレクタ手段を備え たことを特徴とする。
【発明の効果】
【００１３】
以上詳細に説明したように、本発明よれば、拡張演算ユニットを制御するための命令である拡張演算ユニット命令をサポートし、この拡張演算ユニット命令の実行を制御する機能と、拡張演算ユニットを接続するインターフェース機能とを備えたので、プロセッサコアの外部に、効率よく拡張演算ユニットを接続することが可能になる。これにより、応用システムに適した拡張演算ユニットを、プロセッサコアの外部に接続することによって、システム性能を容易に向上させることが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１５】
［第１実施形態］
図１は、本発明の第１実施形態に係るプロセッサの構成を示すブロック図である。
【００１６】
本実施形態のプロセッサは、プロセッサコア１０と、このプロセッサコア１０の外部に接続された拡張演算ユニット２０と、データメモリ３０と備えている。
【００１７】
初めに、プロセッサコア１０の説明を行う。
【００１８】
このプロセッサコア１０は、フェッチＰＣ（ｆＰｃ）１０１、アドレスインクリメンタ１０２、命令メモリ１０３、命令レジスタ１０４、レジスタファイル１０５、デコード回路１０６、ソース（１）レジスタ１０７、ソース（２）レジスタ１０８、実行ステージ・コントロールレジスタ１１０、演算器１１１、パイプライン制御回路１１２、メモリステージ・データレジスタ１１３、メモリステージ・コントロールレジスタ１１５、レジスタライトステージ・データレジスタ１１６、レジスタライトステージ・コントロールレジスタ１１７、及び命令有効レジスタ１１８から構成されている。
【００１９】
プロセッサコア１０は、次の５段のパイプライン構成で命令を実行する。すなわち、パイプラインステージとして、命令メモリ１０３から命令を読み出すステージであるパイプラインステージ１（命令フェッチステージ）と、命令フェッチステージで読み出した命令で指定された、レジスタファイル１０５中のレジスタを読み出すとともに、デコード回路１０６で命令をデコードするパイプラインステージ２（レジスタリードステージ）と、レジスタリードステージで読み出したレジスタの値と命令のデコード情報とによって、演算器１１１で命令を実行するパイプラインステージ３（実行ステージ）と、メモリロードやストア命令の場合にデータメモリ３０をアクセスするパイプラインステージ４（メモリステージ）と、実行ステージでの実行結果あるいはメモリロード命令の場合のロードデータをレジスタファイル１０５へ書き込むパイプラインステージ５（レジスタライトステージ）とを有する。
【００２０】
本実施形態のプロセッサコア１０の代表的な命令としては、例えば、加算命令（ａｄｄ）、データメモリロード命令（ｌｏａｄ）、データメモリストア命令（ｓｔｏｒｅ）、ジャンプ命令（ｊｕｍｐ）、及び拡張命令（ｅｘｔ）があり、それぞれの命令は３２ビット長とする。
【００２１】
図２は、これら各命令のビットパターンを示す図であり、同図を参照して各命令の動作を説明する。
【００２２】
加算命令（ａｄｄ）は、３２ビット命令のビット１９〜１６が００００であり、ｓｒｃ１フィールドで指定されるレジスタとｓｒｃ２フィールドで指定されるレジスタの値とを加算して、ｄｓｔフィールドで指定されるレジスタへ書き込む。
【００２３】
データメモリロード命令（ｌｏａｄ）は、命令のビット１９〜１６が０００１であり、命令の動作は、ｓｒｃ１フィールドで指定されるレジスタの値をデータメモリ３０のアドレスとして、データメモリ３０のデータを読み出し、ｄｓｔフィールドで指定されるレジスタへ書き込む。
【００２４】
データメモリストア命令（ｓｔｏｒｅ）は、命令のビット１９〜１６が００１０であり、命令の動作は、ｓｒｃ１フィールドで指定されるレジスタの値をデータメモリ３０のアドレスとして、ｓｒｃ２フィールドで指定されるレジスタの値をデータメモリ３０へ書き込む。
【００２５】
ジャンプ命令（ｊｕｍＰ）は、命令のビット１９〜１６が００１１であり、ｓｒｃ１フィールドで指定されるレジスタの値を読み出し、ジャンプ先アドレスとしてジャンプを行う。
【００２６】
拡張命令（ｅｘｔ）は、命令のビット１９〜１６が０１００であり、ｓｒｃ１フィールドで指定されるレジスタとｓｒｃ２フィールドで指定されるレジスタの値とを読み出し、外部の拡張演算ユニット２０に出力する。拡張演算ユニット２０では演算結果をプロセッサコア１０へ出力し、その結果をｄｓｔフィールドで指定されるレジスタへ書き込む。
【００２７】
上述した各パイプラインステージの基本的な動作を説明する。
【００２８】
〈パイプラインステージ１の動作〉
パイプラインステージ１（命令フェッチステージ）では、フェッチｐｃ１０１の値により命令メモリ１０３から命令を読み出す。次のクロックの立上りで、命令メモリ１０３から読み出された命令が命令レジスタ１０４へ書き込まれるとともに、命令有効レジスタ１１８の値は１にセットされる。また、フェッチＰＣ１０１の値がアドレスインクリメンタ１０２で命令ワードのバイト数（命令ワードが４バイトの場合は４）だけ加えられ、次のクロックの立上りでフェッチｐＣ１０１に格納され、次の命令が命令メモリ１０３から読み出されるという動作を繰り返す。
【００２９】
〈パイプラインステージ２の動作〉
パイプラインステージ２（レジスタリードステージ）では、命令レジスタ１０４の命令で指定されたレジスタの値をレジスタファイル１０５から読み出す。図２に示した命令の場合では、命令のビット２７〜２４がｓｒｃ１フィールド、ビット２３〜２０がｓｒｃ２フィールドであり、このビットで指定されたレジスタの値がレジスタファイル１０５に読み出される。レジスタファイル１０５から読み出されたレジスタの値は、次のクロックの立上りエッジで、ソース（１）レジスタ１０７及びソース（２）レジスタ１０８に格納される。
【００３０】
また、デコード回路１０６は、命令有効レジスタ１１８の値が１で命令レジスタ１０４に有効な命令が格納されている場合に、命令レジスタ１０４の命令をデコードして実行ステージ・コントロールレジスタ１１０へ、演算器１１１の制御情報と、デスティネーションレジスタ番号及びその有効情報と、ジャンプ命令によるパイプラインフラッシュ情報とを出力する。これらの情報は、次のクロックの立上りで、実行ステージ・コントロールレジスタ１１０に格納される。
【００３１】
さらに、デコード回路１０６の動作を詳細に説明すると、デコード回路１０６は、命令レジスタ１０４から３２ビットの命令を読み出し、図３に示すように制御情報を出力する。デスティネーションレジスタ番号（ｄｓｔ番号）としては命令のビット３１〜２８を出力する。デスティネーション有効情報は、命令実行の結果、レジスタへの書き込みを行うａｄｄ，ｌｏａｄ，ｅｘｔ命令の場合には１（有効）となる。パイプラインフラッシュ情報（Ｆｌｕｓｈ）はジャンプ命令のとき１（有効）となる。拡張命令有効情報（ｅｘｔ有効）はｅｘｔ命令の場合に１（有効）となる。また、拡張命令情報（ｃｏｄｅ１６）としては、命令コードのビット１５〜０が出力される。
【００３２】
〈パイプラインステージ３の動作〉
パイプラインステージ３（実行ステージ）では、演算器１１１はソース（１）レジスタ１０７及びソース（２）レジスタ１０８からデータを入力して、実行ステージ・コントロールレジスタ１１０内の、演算器１１１の制御情報に従って演算を行う。演算器１１１の制御情報は、図３に示したデコード回路１０６の出力に対応しており、演算器１１１は図４に示すような動作を行う。
【００３３】
演算器１１１の演算結果は、メモリステージ・データレジスタ１１３に格納されるとともに、データメモリ３０をアクセスするデータロード命令とデータストア命令の場合では演算器１１１の出力をデータメモリ３０のアドレスとして出力する。データストア命令の場合は、セレクタ１０９からの値をデータメモリ３０へストアするデータとして出力する。
【００３４】
実行ステージ・コントロールレジスタ１１０のデスティネーションレジスタ番号とその有効情報が、次のクロックの立上りでメモリステージ・コントロールレジスタ１１５へ格納される。
【００３５】
実行ステージ・コントロールレジスタ１１０にジャンプ命令によるパイプラインフラッシュ情報が有効になった場合は、パイプライン制御回路１１２ではパイプラインフラッシュ信号を有効にして、次のクロックの立上りで、命令有効レジスタ１１８及び実行ステージ・コントロールレジスタ１１０の有効情報を無効にして、次のクロックでのデコードステージ及び実行ステージが動作しないように制御する。
【００３６】
また、パイプラインフラッシュ信号がアクティブになると、演算器１１１の出力のジャンプ先アドレスが次のフェッチｐｃ１０１の値になるように制御する。
【００３７】
同時に、パイプラインフラッシュ信号を拡張演算ユニット２０へ出力し、拡張演算ユニット２０内部の実行ステージレジスタ２０１を無効にできるようにする。
【００３８】
パイプライン制御回路１１２は、データメモリ３０からのパイプラインストール（停止）要求、あるいは拡張演算ユニット２０からのパイプライン停止要求が発生した場合に、フェッチｐｃ１０１、命令レジスタ１０４、命令有効レジスタ１１８、ソース（１）レジスタ１０７、ソース（２）レジスタ１０８、及び実行ステージ・コントロールレジスタ１１０の値が、次のクロックの立上りで更新されないように制御信号を各モジュールへ出力する。
【００３９】
データメモリ３０からのパイプラインストール要求の場合は、メモリステージ・コントロールレジスタ１１５の値も更新されないように、メモリステージ・コントロールレジスタ１１５へ制御信号を出力する。同時に、パイプライン制御回路１１２は、拡張演算ユニット２０へパイプライン停止信号を出力し、拡張演算ユニット２０内部の実行ステージレジスタ２０１の値が更新されないように制御する。
【００４０】
〈パイプラインステージ４の動作〉
パイプラインステージ４（メモリステージ）では、データロード命令の場合はデータメモリ３０からデータが読み出され、次のクロックでレジスタライトステージ・データレジスタ１１６に格納される。その他の命令の場合は、メモリステージ・データレジスタ１１３の値が、次のクロックでレジスタライトステージ・データレジスタ１１６に格納される。また、メモリステージ・コントロールレジスタ１１５の情報が次のクロックで、レジスタライトステージ・コントロールレジスタ１１７に格納される。
【００４１】
〈パイプラインステージ５の動作〉
パイプラインステージ５（レジスタライトステージ）では、レジスタライトステージ・コントロールレジスタ１１７のデスティネーションレジスタへの書き込みが有効の場合は、レジスタライトステージ・コントロールレジスタ１１７内のディスティネーションレジスタ番号で指定されるレジスタファイル１０５のレジスタへ、レジスタライトステージ・データレジスタ１１６の値を書き込むように制御する。
【００４２】
次に、本実施形態に係る拡張演算ユニット２０について説明する。
【００４３】
拡張演算ユニット２０は、プロセッサコア１０と接続されており、プロセッサコア１０のデコードステージで、コア１０から、レジスタファイル１０５より読み出した命令のｓｒｃ１，ｓｒｃ２フィールドに対応するレジスタの値を入力する。
【００４４】
デコード回路１０６から、命令の下位１６ビットに相当する拡張命令情報（ｃｏｄｅ１６）を入力すると共に、デコードステージの命令が拡張命令ｅｘｔの場合に有効（１）になる拡張命令有効情報を入力する。これらの情報は、コア１０からのパイプラインフラッシュ信号、あるいはパイプラインストール信号が有効にならない場合は、次のクロックの立上りで、実行ステージレジスタ２０１へ格納される。プロセッサコア１０からのパイプラインストール信号が有効なときは、実行ステージレジスタ２０１の値を更新しない。
【００４５】
プロセッサコア１０からのパイブラインフラッシュ信号が有効なときは、次のクロックの立上りで、拡張命令有効情報を強制的に無効（０）にして、拡張演算ユニット２０が演算を行わないように制御する。
【００４６】
ステージ（１）演算器２０２は、プロセッサコア１０のメモリステージに対応したステージで演算を行うユニットである。このステージ（１）演算器２０２の動作は、コア１０から入力した拡張命令情報ｃｏｄｅ１６をコントロール回路２０４がデコードして行う。またステージ（１）演算器２０２は、拡張命令情報の一部を演算の入力データとして使用することもできる。
【００４７】
ステージ（１）の演算結果は、次のクロックの立上りでパイプライン（１）レジスタ２０５に格納される。パイプライン（１）レジスタ２０５の結果は、次のステージ（２）演算器２０３の入力データとして使うことができる。ステージ（２）演算器２０４の結果は、次のクロックの立上りで、パイプライン（２）レジスタ２０６に格納される。
【００４８】
本実施形態での拡張命令の例を以下に挙げる。
【００４９】
１ext dst,srcl,src2,0x0001 acc ＜− rc1*src2;dst ＜− src1 
２ext dst,src1,src2,0x0002 acc ＜− acc+src1*src2;dst ＜− src1 
３ext dst,src1,src2,0x0003 dst ＜− acc
これらの命令を実行するため、拡張演算ユニット２０のステージ（１）演算器２０２は乗算を行い、ステージ（２）演算器２０３は、パイプライン（１）レジスタ２０５から入力したステージ（１）演算器２０２の乗算の結果とパイプライン（２）レジスタ２０６とを加算する。ステージ（２）演算器２０３の結果は、パイプライン（２）レジスタ２０６（この場合はａｃｃレジスタ）に再度格納される。
【００５０】
上記１の命令では、プロセッサコア１０から入力したソース（１）データとソース（２）データを入力として、ステージ（１）演算器２０２で乗算を行う。結果は、次のクロックの立上りでパイプライン（１）レジスタ２０５に格納される。ステージ（２）演算器２０３では、処理を行わず、パイプライン（１）レジスタ２０５に格納された乗算結果を次のクロックの立上りでパイプライン（２）レジスタ２０６に格納する。また、ステージ（１）演算器２０２から、ソース（１）データを命令の結果としてプロセッサコア１０へ出力する。これは、プロセッサコア１０の実行ステージに相当し、プロセッサコア１０は、上記１の命令の結果として、レジスタライトステージでレジスタファイル１０５へ書き込む。
【００５１】
上記２の命令では、ステージ１までは、上記１の命令と同様に動作する。ステージ（２）演算器２０３では、パイプライン（１）レジスタ２０５の結果とパイプライン（２）レジスタ２０６の結果とを加算し、その結果をパイプライン（２）レジスタ２０６へ格納する。また、ステージ（１）演算器２０２から、ソース（１）データを命令の結果としてプロセッサコア１０へ出力する。これは、プロセッサコア１０の実行ステージに相当し、プロセッサコア１０は、上記１の命令の結果として、レジスタライトステージでレジスタファイル１０５へ書き込む。
【００５２】
上記３の命令では、パイプライン（２）レジスタ２０６を読み出し、ステージ（１）演算器２０２から、ソース（１）データを命令の結果としてプロセッサコア１０へ出力する。これは、プロセッサコア１０の実行ステージに相当し、プロセッサコア１０は、上記１の命令の結果として、レジスタライトステージでレジスタファイル１０５へ書き込む。
【００５３】
パイプライン（２）レジスタ２０６には、上記１あるいは２の命令の結果が格納される。したがって、上記３の命令が実行ステージ・レジスタ２０１に格納されたとき、パイプライン（１）レジスタ２０５に上記１あるいは２の命令が格納されることを、コントロール回路２０４はチェックし、この場合は、１サイクルだけコア１０へのパイプラインストール信号を有効にして、パイプラインを停止させ、次のクロックサイクルで、上記１あるいは２の命令の結果を読み出して、ステージ（１）演算器２０２を介して、コア１０へ結果を出力することができる。
【００５４】
上述したように、本実施形態では、プロセッサコア１０に、拡張演算ユニット２０を制御するための拡張命令を備え、この拡張命令を実行するための制御回路と、拡張演算ユニット２０を制御しデータを転送するインターフェース回路とを内蔵したので、プロセッサコア１０の外部に、効率よく拡張演算ユニット２０を接続することができる。
【００５５】
例えば、拡張演算ユニット２０として、レイテンシが２サイクルでスループットが１サイクルの積和演算器を設けた場合を考える。プロセッサコア１０の乗算命令では実行に５サイクル、加算命令は１サイクルかかったとする。１０回の積和演算は、拡張演算ユニット２０の積和演算器を用いることにより、１１サイクルで実行することができる。これに対して、プロセッサコア１０の乗算命令と加算命令の組合せによる場合では、（５＋１）×１０＝６０で、６０サイクルかかることになる。
【００５６】
プロセッサコアに予め積和演算器を内蔵することも考えられるが、ある応用システムで積和演算が全く実行されない場合、この応用システムでは積和演算ユニットが無駄なハードウェアとなり、コスト増大の要因となる。
【００５７】
本実施形態では、積和演算の例以外にも、応用システムに適した演算ユニットをプロセッサコア１０の外部に接続することによって、システム性能を向上させることが可能となる。
【００５８】
なお、本実施形態では、拡張演算ユニット２０はステージ（１）演算器２０２とステージ（２）演算器２０３という２段のパイブライン構成を採ったが、拡張演算ユニット２０の構成はこれに限定されるものではなく、３段以上の多段のパイプラインステージを持つことができる。
【００５９】
また、プロセッサコア１０へのパイプラインストール要求の例として、実行に複数ステージが必要な命令の結果を読み出す場合を示したが、これに限定されるものではない。例えば、内部がパイプライン処理されず、命令の実行に複数サイクルが必要な場合は、次の命令の実行を、現在実行している命令が終了するまで待たせることが考えられる。これは、コントロール回路２０４がこのような命令実行のステートを管理することで実現できる。
【００６０】
［第２実施形態］
図５は、本発明の第２実施形態に係るプロセッサの構成を示すブロック図であり、図１と共通の要素には、同一の符合を付しその説明を省略する。
【００６１】
第２実施形態のプロセッサでは、プロセッサコア１０の構成は図１と同じであるが、拡張演算ユニット４０のステージ（１）演算器４０２からデータメモリ３１へ、アドレス信号、リード／ライトのコントロール信号、及びライトデータ信号が出力され、データメモリ３１を直接アクセスできるようになっている。
【００６２】
データメモリ３１は、セレクタ３１ａ，３１ｂによって、コア１０からのアドレス信号、リード／ライトコントロール信号、及びライトデータ信号を選択して、ＲＡＭモジュールへ出力することで、コア１０と拡張演算ユニット４０からのアクセス要求を調停する。
【００６３】
データメモリ３１から読み出されたデータは、拡張演算ユニット４０へ出力され、ステージ（２）演算器４０３の出力と選択されてパイプライン（２）レジスタ４０６へ、次のクロックの立上りで格納される。
【００６４】
本実施形態の拡張演算ユニット４０では、ステージ（３）演算器４０７が、パイプライン（２）レジスタ４０６の出力を入力データとして演算に使用している。このように、データメモリ３１から読み出した結果を拡張演算ユニット４０での演算入力データとして使用することができる。
【００６５】
［第３実施形態］
図６は、本発明の第３実施形態に係るプロセッサの構成を示すブロック図であり、図１と共通の要素には、同一の符合を付しその説明を省略する。
【００６６】
本実施形態のプロセッサは、図１に示した構成において、拡張演算ユニット２０からデスティネーションレジスタ有効ビットを出力することにより、プロセッサコア１０の実行ステージでの演算結果をプロセッサコア１０で無効にし、レジスタライトステージでレジスタへ書き込まないようにしたものである。
【００６７】
本実施形態では、上記第１実施形態で示した拡張命令の例を次のように変更する。
【００６８】
１ext src1,src2,0x0001 acc ＜− src1*src2; 
２ext src1,src2,0x0002 acc ＜− acc+src1*src2; 
３ext dst,src1,src2,0x0003 dst ＜− acc
上記１及び２の命令では、プロセッサコア１０のレジスタファイル１０５へ結果を書き戻さないため、拡張演算ユニット２０のコントロール回路２０４ａは、デスティネーション有効情報を無効として、プロセッサコア１０へ出力する。プロセッサコア１０の実行ステージ・コントロールレジスタ１１０のデスティネーションレジスタの有効情報は、この場合には無効（０）として次のクロックの立上りでメモリステージ・コントロールレジスタ１１５ａへ格納される。
【００６９】
上記３の命令では、プロセッサコア１０のレジスタファイル１０５へ結果を書き戻す。このため、拡張演算ユニット２０のコントロール回路２０４ａは、デスティネーション有効情報を有効として、プロセッサコア１０へ出力する。
【００７０】
プロセッサコア１０は、拡張命令を実行している場合に、拡張演算ユニット２０のコントロール回路２０４ａから出力されるデスティネーション有効情報を、次のクロックの立ち上がりでメモリステージ・コントロールレジスタ１１５ａに格納するように制御する。
【００７１】
プロセッサコア１０のパイプライン制御によっては、実行ステージとメモリステージのデスティネーションレジスタが有効で、そのレジスタ番号がレジスタリードステージで読み出すレジスタ番号と一致したとき、パイプラインをストールさせる場合がある。拡張命令で、プロセッサコア１０のレジスタファイル１０５への書き込みを行わない命令がある場合には、デスティネーションレジスタへの書き戻しを無効という情報を、拡張演算ユニット２０からプロセッサコア１０へ出力する機能を設けることによって、本来不要であるパイプラインのストールを回避することができる。
【図面の簡単な説明】
【００７２】
【図１】本発明の第１実施形態に係るプロセッサの構成を示すブロック図である。
【図２】プロセッサコアの命令のビットパターンを示す図である。
【図３】図１に示したデコード回路１０６の動作を示す図である。
【図４】図１に示した演算器１１１の動作を示す図である。
【図５】本発明の第２実施形態に係るプロセッサの構成を示すブロック図である。
【図６】本発明の第３実施形態に係るプロセッサの構成を示すブロック図である。
【図７】従来のプロセッサの基本構成を示すブロック図である。
【符号の説明】
【００７３】
１０  プロセッサコア
２０，４０  拡張演算ユニット
３０，３１  データメモリ
１０１  フェッチＰＣ（ｆＰｃ）
１０２  アドレスインクリメンタ
１０３  命令メモリ
１０４  命令レジスタ
１０５  レジスタファイル  １０６  デコード回路
１０７  ソース（１）レジスタ
１０８  ソース（２）レジスタ
１１０  実行ステージ・コントロールレジスタ
１１１  演算器
１１２  パイプライン制御回路
１１３  メモリステージ・データレジスタ
１１５  メモリステージ・コントロールレジスタ
１１６  レジスタライトステージ・データレジスタ
１１７  レジスタライトステージ・コントロールレジスタ
１１８  命令有効レジスタ
２０２，４０２  ステージ（１）演算器
２０３，４０３  ステージ（２）演算器
２０５，４０５  パイプライン（１）レジスタ
２０６，４０６  パイプライン（２）レジスタ
４０７  ステージ（３）演算器
４０８  パイプライン（３）レジスタ
【図１】
2004288203.tif 000003
【図２】
2004288203.tif 000004
【図３】
2004288203.tif 000005
【図４】
2004288203.tif 000006
【図５】
2004288203.tif 000007
【図６】
2004288203.tif 000008
【図７】
2004288203.tif 000009