(57)【要約】プロセッサ（１０１）は、並列実行可能な命令グループを保持する命令バッファ（１０２）と、命令グループの一部または全部を同時に解読可能な命令解読部（１０３）と、命令グループを同時に実行することを阻害する要因が命令グループに存在するか否かを検出し、要因が存在する場合には、命令グループの命令を順次供給し、要因が存在しない場合には、命令グループの全ての命令を同時に供給するように、命令バッファ（１０２）を制御して命令解読部（１０３）へ命令グループを供給する命令発行制御部（１１１）とを備える。【特許請求の範囲】
【請求項１】
複数の命令を並列に解読して実行できるプロセッサであって、
並列実行可能な命令グループを保持する命令バッファと、
前記命令グループの一部または全部を同時に解読可能な命令解読手段と、
前記命令グループを同時に実行することを阻害する要因が前記命令グループに存在するか否かを検出し、前記要因が存在する場合には、前記命令グループの命令を順次供給し、前記要因が存在しない場合には、前記命令グループの全ての命令を同時に供給するように、前記命令バッファを制御して前記命令解読手段へ前記命令グループを供給する命令発行制御手段と
を備えることを特徴とするプロセッサ。
【請求項２】
前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中に所定の数のマルチサイクル命令が含まれていることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中にマルチサイクル命令が１つ以上含まれていることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令解読手段で同時解読可能な最大命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項７】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令バッファに保持されている命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項８】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項９】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項３に記載のプロセッサ。
【請求項１０】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項４に記載のプロセッサ。
【請求項１１】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項５に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、複数の命令を並列に解読して実行できるプロセッサに関する。
【背景技術】
【０００２】  近年、複数の命令を並列に解読して実行できるプロセッサにおいて、同時に実行できない複数の命令に対する制御方法に関する技術が色々と提案されている。【０００３】  一例として、命令を実行ステージに送信し、実行ステージ中の命令の処理中に利用不能なデータに依存するか否かを判定して依存する場合には、その命令のみを停止させ、他の命令は同時実行させる制御機構を設けている。すなわち、実行ステージまで進んでから、同時に実行することができない場合には、ハザードを発生させて処理を止める技術が提案されている（例えば、特許文献１参照。）。【０００４】  また、命令バッファおよび各演算器に対応した命令レジスタの未発行の命令数で命令の同時実行可能かどうかを判定し、レジスタの更新制御を行う。すなわち、プロセッサに実行状態をモニタする回路を用意し、演算器で先行する命令文がどういう実行状態であるかという情報に基づいて、実行ステージに進む前に命令供給を制御して処理を止める技術が提案されている（例えば、特許文献２参照。）。
【特許文献１】特開平８−２２１２７３号公報
【特許文献２】特開平８−３０５５６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】  しかしながら、従来の技術において、実行ステージ中の命令のデータ依存性を判定する制御機構では、省面積化に伴い演算器の数を減らすと、構造ハザードを発生させる複数の命令に対して適用できない問題がある。これは、命令の同時実行可能性を、実行ステージに命令を送信してから判定しているためである。【０００６】  また、１つの命令コードに対して複数のオペレーションを実行するマルチサイクル命令に対して、並列分のカウンタを用意すれば、複数のマルチサイクル命令を同時に実行することができるが、省面積化に伴いカウンタの数を減らすと、同様の問題が生じる。【０００７】  また、従来の命令バッファと命令レジスタの未発行の命令数で同時実行の可否を判定する方法では、演算器での命令実行状態を検出する必要がある上、既に並列に複数の命令を保持する命令バッファを持つプロセッサには適用できない問題がある。【０００８】  すなわち、省面積化に伴い演算器の数を減らした場合、または高速化に伴いシングルサイクル命令をマルチサイクル命令に変更した場合などのようにアーキテクチャを変更した場合において適用できない問題がある。【０００９】  そこで、本発明は前記問題に鑑みてなされたものであり、省面積化に伴い演算器の数を減らした場合、または高速化に伴いシングルサイクル命令をマルチサイクル命令に変更した場合などのようにプロセッサのアーキテクチャを変更した場合においても、変更前のアーキテクチャに最適化されたオブジェクトコードを改変することなく利用できるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１０】  前記問題を解決するにあたり、本発明に係るプロセッサは、（ａ）複数の命令を並列に解読して実行できるプロセッサであって、（ｂ）並列実行可能な命令グループを保持する命令バッファと、（ｃ）前記命令グループの一部または全部を同時に解読可能な命令解読手段と、（ｄ）前記命令グループを同時に実行することを阻害する要因が前記命令グループに存在するか否かを検出し、前記要因が存在する場合には、前記命令グループの命令を順次供給し、前記要因が存在しない場合には、前記命令グループの全ての命令を同時に供給するように、前記命令バッファを制御して前記命令解読手段へ前記命令グループを供給する命令発行制御手段とを備えることとする。【００１１】  これによって、命令実行部の構成が一部異なる別のプロセッサ用に最適化された命令プログラムが存在し、同時に実行できる命令の組合せが異なり、命令バッファに同時に実行できない複数の命令が保持されている場合でも、命令発行制御手段によって順次供給することにより、プログラムを改変したり、命令バッファの格納方法の変更をしたりすることなくそのままプログラムを利用することが可能となる。【００１２】  また、同時実行の可否を命令実行部の動作状態等を検出することなしに、命令の静的な情報のみで判定することが可能となり、設計容易化および設計期間の短縮に寄与する。【００１３】  さらに、前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを前記要因として検出するとしてもよい。【００１４】  または、前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを前記要因として検出するとしてもよい。【００１５】  これによって、構造ハザードの検出を単純化し、検出をより高速にすることができるため、プロセッサの動作速度の高速化にも寄与する。【００１６】  または、前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中に所定の数のマルチサイクル命令が含まれていることを前記要因として検出するとしてもよい。【００１７】  または、前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中にマルチサイクル命令が１つ以上含まれていることを前記要因として検出するとしてもよい。【００１８】  これによって、マルチサイクル命令の検出を単純化し、検出をより高速にすることができるため、プロセッサの動作速度の高速化にも寄与する。【００１９】  または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令解読手段で同時解読可能な最大命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給するとしてもよい。【００２０】  これによって、命令実行部の動作状態等を検出することなしに、命令バッファの命令のみによって決定されるカ��ンタのカウンタ値で命令供給の制御が可能となり、設計容易化および設計期間の短縮に寄与する。【００２１】  または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令バッファに保持されている命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給するとしてもよい。【００２２】  これによって、命令バッファに命令解読手段が同時解読可能な最大命令数が配置されていない場合でも、冗長なマシンサイクルなしで命令の供給を制御することが可能となり、処理性能の向上に寄与する。【００２３】  または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給するとしてもよい。【００２４】  これによって、同時実行可能な最大命令数を常に同時に供給することが可能となり、処理性能の向上に寄与する。【００２５】  または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給するとしてもよい。【００２６】  これによって、同時実行可能な最大命令数を常に同時に供給することが可能となり、処理性能の向上に寄与する。【００２７】  なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサを制御する方法などとして実現されるとしてもよい。【００２８】  また、プロセッサによって提供される機能が組み込まれたＬＳＩ、その機能をＦＰＧＡ、ＣＰＬＤなどのプログラマブル・ロジック・デバイスに形成するＩＰコア、およびそのＩＰコアを記録した記録媒体などとして実現されるとしてもよい。
【発明の効果】
【００２９】  以上、本発明に係るプロセッサによれば、命令実行部の構成が一部異なる別のプロセッサ用に最適化された命令プログラムが存在し、同時に実行できる命令の組合せが異なり、命令バッファに同時に実行できない複数の命令が保持されている場合でも、命令発行制御手段によって順次供給することにより、プログラムを改変したり、命令バッファの格納方法の変更をしたりすることなくそのままプログラムを利用することが可能となる。【００３０】  また、同時実行の可否を命令実行部の動作状態等を検出することなしに、命令の静的な情報のみで判定することが可能となり、設計容易化および設計期間の短縮に寄与する。【００３１】  また、プロセッサは別のプロセッサではシングルサイクル命令であり、同時に複数実行可能であった命令がマルチサイクル命令となって同時に複数実行が不可能となった場合に、当該命令を含む前記別のプロセッサ用に最適化されたプログラムが存在する場合にも、命令バッファに同時に実行できない複数のマルチサイクル命令が保持されている場合は命令発行制御部によって順次供給することにより、プログラムを改変したり、命令バッファの格納方法の変更をしたりすることなくそのままプログラムを利用することが可能となる。
【図面の簡単な説明】
【００３２】
【図１】図１は、実施の形態１におけるプロセッサの構成を示すブロック図である。
【図２】図２は、実施の形態１における命令デコーダの構成を示すブロック図である。
【図３】図３は、実施の形態１における命令発行制御部の構成を示すブロック図である。
【図４Ａ】図４Ａは、実施の形態１を説明するためのプログラム例を示す図である。
【図４Ｂ】図４Ｂは、実施の形態１を説明するためのプログラム例を示す図である。
【図５Ａ】図５Ａは、実施の形態１を説明するための動作説明図である。
【図５Ｂ】図５Ｂは、実施の形態１を説明するための動作説明図である。
【図６】図６は、実施の形態２におけるプロセッサの構成を示すブロック図である。
【図７】図７は、実施の形態２における命令発行制御部の構成を示すブロック図である。
【図８Ａ】図８Ａは、実施の形態２を説明するためのプログラム例を示す図である。
【図８Ｂ】図８Ｂは、実施の形態２を説明するためのプログラム例を示す図である。
【図８Ｃ】図８Ｃは、実施の形態２を説明するためのプログラム例を示す図である。
【図９Ａ】図９Ａは、実施の形態２を説明するための動作説明図である。
【図９Ｂ】図９Ｂは、実施の形態２を説明するための動作説明図である。
【図９Ｃ】図９Ｃは、実施の形態２を説明するための動作説明図である。
【図１０】図１０は、実施の形態３におけるプロセッサの構成を示すブロック図である。
【図１１】図１１は、実施の形態３における命令発行制御部の構成を示すブロック図である。
【図１２Ａ】図１２Ａは、実施の形態３を説明するためのプログラム例を示す図である。
【図１２Ｂ】図１２Ｂは、実施の形態３を説明するためのプログラム例を示す図である。
【図１３Ａ】図１３Ａは、実施の形態３を説明するための動作説明図である。
【図１３Ｂ】図１３Ｂは、実施の形態３を説明するための動作説明図である。
【図１４】図１４は、実施の形態４におけるプロセッサの構成を示すブロック図である。
【図１５】図１５は、実施の形態４における命令発行制御部の構成を示すブロック図である。
【図１６Ａ】図１６Ａは、実施の形態４を説明するためのプログラム例を示す図である。
【図１６Ｂ】図１６Ｂは、実施の形態４を説明するためのプログラム例を示す図である。
【図１７Ａ】図１７Ａは、実施の形態４を説明するための動作説明図である。
【図１７Ｂ】図１７Ｂは、実施の形態４を説明するための動作説明図である。
【図１８】図１８は、実施の形態５におけるプロセッサの構成を示すブロック図である。
【図１９】図１９は、実施の形態５における命令発行制御部の構成を示すブロック図である。
【図２０Ａ】図２０Ａは、実施の形態５を説明するためのプログラム例を示す図である。
【図２０Ｂ】図２０Ｂは、実施の形態５を説明するためのプログラム例を示す図である。
【図２０Ｃ】図２０Ｃは、実施の形態５を説明するためのプログラム例を示す図である。
【図２１Ａ】図２１Ａは、実施の形態５を説明するための動作説明図である。
【図２１Ｂ】図２１Ｂは、実施の形態５を説明するための動作説明図である。
【図２１Ｃ】図２１Ｃは、実施の形態５を説明するための動作説明図である。
【図２２】図２２は、実施の形態６におけるプロセッサの構成を示すブロック図である。
【図２３】図２３は、実施の形態６における命令発行制御部の構成を示すブロック図である。
【図２４】図２４は、実施の形態６における無効化命令選択部の入出力関係の真理値表を示す図である。
【図２５Ａ】図２５Ａは、実施の形態６を説明するためのプログラム例を示す図である。
【図２５Ｂ】図２５Ｂは、実施の形態６を説明するためのプログラム例を示す図である。
【図２６Ａ】図２６Ａは、実施の形態６を説明するための動作説明図である。
【図２６Ｂ】図２６Ｂは、実施の形態６を説明するための動作説明図である。
【符号の説明】
【００３３】  １０１，２０１，３０１，４０１，５０１，６０１  プロセッサ
１０２，４０２  命令バッファ
１０３，４０３  命令解読部
１０４，４０４  命令実行部
１０５，４０５  命令デコーダ
１０６，４０６  制御信号選択部
１０７，４０７  算術論理演算部
１０８，４０８  積和演算部
１０９，４０９  メモリアクセス制御部
１１０，４１０  レジスタファイル
１１１，２１１，３１１，４１１，５１１，６１１  命令発行制御部
１１２，２１２  構造ハザード検出部
１１３，３１３，４１４，６１４  命令無効化制御部
４１２  マルチサイクル命令解読管理部
４１３，５１３，６１３  マルチサイクル命令検出部
４２０  除算演算部
６２４  無効化命令選択部
【発明を実施するための最良の形態】
【００３４】  （実施の形態１）
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。【００３５】  実施の形態１におけるプロセッサは、複数の命令を並列に解読して実行できるプロセッサであって、並列実行可能な命令グループを保持し、命令グループの一部または全部を同時に解読でき、命令グループを同時に実行することを阻害する要因が命令グループに存在するか否かを検出し、要因が存在する場合には、命令グループの命令を順次供給し、要因が存在しない場合には、命令グループの全ての命令を同時に供給するように、命令バッファを制御して命令解読部へ命令グループを供給することを特徴とする。【００３６】  また、実施の形態１におけるプロセッサは、命令解読部から入力される命令グループの解読結果に基づいて、命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを要因として検出することも特徴とする。【００３７】  また、実施の形態１におけるプロセッサは、命令グループの命令を順次供給する場合に、命令解読部で同時解読可能な最大命令数を最大値とするカウンタを用いて、命令グループの中からカウンタの値毎に対応した命令を順次１命令ずつ供給することも特徴とする。【００３８】  以上の点を踏まえて、実施の形態１におけるプロセッサについて説明する。【００３９】  図１は、本実施の形態におけるプロセッサの構成を示すブロック図である。ここでは、３命令を同時に実行可能なプロセッサの構成となっているが、本発明の適用範囲は３命令に限定するものではない。【００４０】  図１に示されるように、プロセッサ１０１は、命令バッファ群１０２、命令解読部１０３、命令実行部１０４、命令発行制御部１１１などを備える。【００４１】  命令バッファ群１０２は、複数の命令バッファを備え、命令グループを保持する。ここでは、命令バッファ１０２−１〜１０２−３から構成されるとする。命令バッファ１０２−１は、命令コード１５１−１と命令有効情報１５２−１とを保持している。命令バッファ１０２−２は、命令コード１５１−２と命令有効情報１５２−２とを保持している。命令バッファ１０２−３は、命令コード１５１−３と命令有効情報１５２−３とを保持している。【００４２】  命令解読部１０３は、命令デコーダ１０５−１〜１０５−３、制御信号選択部１０６から構成される。【００４３】  命令実行部１０４は、算術論理演算部１０７、積和演算部１０８、メモリアクセス制御部１０９、レジスタファイル１１０から構成される。算術論理演算部１０７、積和演算部１０８、メモリアクセス制御部１０９によって命令を実行し、実行して得られた結果をレジスタファイル１１０に格納する。【００４４】  図２は、本実施の形態における命令デコーダ１０５−１〜１０５−３の構成を示すブロック図である。ここでは、命令デコーダ１０５−１について説明し、命令デコーダ１０５−２，１０５−３については、命令デコーダ１０５−１と同一の構成により、説明を省略する。【００４５】  図２に示されるように、命令デコーダ１０５−１は、命令バッファ１０２−１から命令コード１５１−１および命令有効情報１５２−１を受ける。このとき、命令有効情報１５２−１がアサートされていれば、命令コード１５１−１をデコ��ドする。そして、デコード結果に応じた命令実行制御信号１５３−１を制御信号選択部１０６へ出力する。また、構造ハザードが発生する可能性のある命令を検出するにあたって、デコード結果に応じた発行制御命令検出信号１５４−１を命令発行制御部１１１へ出力する。一方、命令有効情報１５２−１がネゲートされていれば、命令コード１５１−１をデコードしない。【００４６】  制御信号選択部１０６は、命令デコーダ１０５−１〜１０５−３から命令実行制御信号１５３−１〜１５３−３を受け、命令発行制御部１１１から命令無効化信号１５５−１〜１５５−３を受け、有効な命令に対応する命令実行制御信号１５７を命令実行部１０４へ出力する。具体的には、命令無効化信号１５５−１がネゲートされていると、命令実行制御信号１５３−１に応じた命令実行制御信号１５７がアサートされる。また、命令無効化信号１５５−２と命令実行制御信号１５３−２、命令無効化信号１５５−３と命令実行制御信号１５３−３についても同様である。仮に、命令無効化信号１５５−１〜１５５−３が全てネゲートされていれば、命令実行制御信号１５３−１〜１５３−３の全てに応じた命令実行制御信号１５７がアサートされる。すなわち、命令無効化信号１５５−１〜１５５−３がネゲートされている組み合わせに応じて、命令実行制御信号１５３−１〜１５３−３が組み合わさり、組み合わさった命令実行制御信号１５３−１〜１５３−３に応じた命令実行制御信号１５７がアサートされる。【００４７】  図３は、本実施の形態における命令発行制御部１１１の構成を示すブロック図である。図３に示されるように、命令発行制御部１１１は、構造ハザード検出部１１２、命令無効化制御部１１３などを備える。【００４８】  構造ハザード検出部１１２は、命令デコーダ１０５−１〜１０５−３から発行制御命令検出信号１５４−１〜１５４−３を受け、論理積回路１１４−１〜３によってそれぞれ発行制御命令検出信号１５４−１と発行制御命令検出信号１５４−２、発行制御命令検出信号１５４−２と発行制御命令検出信号１５４−３、発行制御命令検出信号１５４−１と発行制御命令検出信号１５４−３との間で２命令の発行制御対象の命令の有無を検出する。さらに、論理和回路１１５によって２命令以上の発行制御対象の命令の有無を判定し、判定結果に応じた順次発行指示信号１６２を命令無効化制御部１１３へ出力する。このとき、発行制御対象の命令が有れば、順次発行指示信号１６２は、アサートされる。【００４９】  命令無効化制御部１１３は、順次発行指示信号１６２を受け、初期値０の２−ｂｉｔアップカウンタ１１６を起動する。そして、２−ｂｉｔアップカウンタ１１６は、順次発行指示信号１６２がアサートされている期間マシンサイクルごとにカウンタ値１６３を更新する。【００５０】  比較器１１７−１〜１１７−３は、２−ｂｉｔアップカウンタ１１６からカウンタ値１６３を受ける。さらに、比較器１１７−１は、値”０”とカウンタ値１６３とを比較して、比較結果１６４−１を論理積回路１１８−１へ出力する。同様に、比較器１１７−２は、値”１”とカウンタ値１６３とを比較して、比較結果１６４−２を論理積回路１１８−２へ出力する。比較器１１７−３���、値”２”とカウンタ値１６３とを比較して、比較結果１６４−３を論理積回路１１８−３へ出力する。【００５１】  論理積回路１１８−１〜１１８−３は、構造ハザード検出部１１２から順次発行指示信号１６２を受ける。さらに、論理積回路１１８−１は、比較器１１７−１から比較結果１６４−１を受け、順次発行指示信号１６２と比較結果１６４−１との論理積に応じた命令無効化信号１５５−１を出力する。同様に、論理積回路１１８−２は、比較器１１７−２から比較結果１６４−２を受け、順次発行指示信号１６２と比較結果１６４−２との論理積に応じた命令無効化信号１５５−２を出力する。論理積回路１１８−３は、比較器１１７−３から比較結果１６４−３を受け、順次発行指示信号１６２と比較結果１６４−３との論理積に応じた命令無効化信号１５５−３を出力する。また、論理積回路１１８−３は、命令無効化信号１５５−３を命令バッファ更新停止信号１５６としても出力する。【００５２】  以上のように構成されたプロセッサについて、以下にその動作を説明する。【００５３】  図４Ａ、図４Ｂは、動作説明をするための命令プログラム例であり、図５Ａ、図５Ｂは、その動作説明図である。ここでは、図４Ａ、図４Ｂ、図５Ａ、図５Ｂにおいて、ａｄｄは加算命令、ｍａｃは積和演算命令、ｌｄはメモリからのロード命令をそれぞれ示し、算術論理演算部１０７、積和演算部１０８、メモリアクセス制御部１０９で実行可能である。ここで、実施の形態１におけるプロセッサ１０１に用いられるプログラムは、算術論理演算部１０７に対する構造ハザードのみを発生する可能性がある、すなわち、算術論理演算命令が命令バッファ１０２に複数配置される可能性があるが、それ以外の構造ハザードは発生しないように全命令が配置されているものとする。【００５４】  図４Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、これらの命令を実行する演算部の数が足りているため、３つの命令を同時実行することが可能である。命令デコーダ部１０５−１は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−１を命令発行制御部１１１へ出力する。同様に、命令デコーダ部１０５−２は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−２を命令発行制御部１１１へ出力する。命令デコーダ部１０５−３は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−３を命令発行制御部１１１へ出力する。【００５５】  図４Ａに示される命令の組合せでは、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされないため、順次発行指示信号１６２をアサートしない。また、命令無効化制御部１１３は、命令無効化信号１５５−１〜１５５−３および命令バッファ更新停止信号１５６をアサートしない。【００５６】  これに伴い、制御信号選択部１０６は、図４Ａに示される３命令全てに対応する命令実行制御信号１５７を同時に出力する。そして、図５Ａに示されるように、命令実行部１０４は、それらの命令を同時に実行する。【００５７】  一方、図４Ｂに示される命令の組合せ（ａｄｄ，ａｄｄ，ｌｄ）で��、ａｄｄ命令を実行可能な算術論理演算部１０７が１個しか存在しないため、命令実行部１０４は、同時実行することができない。この命令の組合せでは、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部１１３は、順次発行指示信号１６２を受け、１命令ずつが有効となるように命令無効化信号１５５−１〜１５５−３を順次アサートする。【００５８】  これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図５Ｂに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部１１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号１５６をアサートする。【００５９】  このように、プロセッサ１０１は、命令バッファ群１０２に構造ハザードが発生する命令の組合せが配置されていても、命令実行部１０４の動作状態を知ることなく、命令バッファ群１０２の内容のみの情報で構造ハザードを回避し命令を実行することが可能となる。【００６０】  なお、命令グループの命令を順次供給する場合には、順次１命令ずつ供給するとしたが、演算器が複数ある場合、例えば、算術論理演算部が２つある場合には、１命令ずつ順序供給するだけでなく、算術論理演算部を使用する命令を２つ含む命令の組のように、それぞれ独立して同時に処理できる複数の命令を一まとめにした命令の組毎に順次供給するとしてもよい。【００６１】  （実施の形態２）
次に、本発明に係る実施の形態２について、図面を参照しながら説明する。【００６２】  実施の形態１におけるプロセッサ１０１では、命令デコーダ１０５−１〜１０５−３からのデコード結果出力のタイミングに余裕がなく、命令発行制御部１１１を設けると動作速度が低下してユーザが要求している動作速度仕様を満たせなくなる場合がある。これに対して、図６に示されるように、実施の形態２におけるプロセッサ２０１では、命令発行制御部１１１の代わりに、命令発行制御部２１１を備え、このような問題を解消できるようにしたことを特徴とする。【００６３】  すなわち、実施の形態２におけるプロセッサは、命令解読部から入力される命令グループの解読結果に基づいて、命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを要因として検出することを特徴とする。【００６４】  以上の点を踏まえて実施の形態２におけるプロセッサについて説明する。なお、実施の形態１におけるプロセッサ１０１と同一の構成要素については、同一の参照符号を付して説明を省略する。【００６５】  図７は、本実施の形態における命令発行制御部２１１の構成を示すブロック図である。図７に示されるように、構造ハザード検出部２１２は、命令デコーダ１０５−１〜１０５−３から発行制御命令検出信号１５４−１〜１５４−３を受け、論理和回路２１４によって１命令以上の発行制御対象の命令の有無を判定し、判定結果に応じた順次発行指示信号１６２を命令無効化制御部１１３へ出力する。【００６６】  以上のように構成されたプロセッサについて、以下にその動作を説明する。【００６７】  図８Ａ〜図８Ｃは、動作説明をするための命令プログラム例であり、図９Ａ〜図９Ｃは、その動作説明図である。ここでは、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｃにおいて、ｒｎｄは丸め演算命令を示し算術論理演算部１０７において実行可能であり、“−”は命令が配置されていないことを示している。ここで、実施の形態２におけるプロセッサ２０１に供給されるプログラムは、丸め演算命令による算術論理演算部１０７に対する構造ハザードのみを発生する可能性がある。すなわち、複数の丸め演算命令が命令バッファ群１０２に配置される、もしくは丸め演算命令と算術論理演算命令の組合せが命令バッファ群１０２に同時に配置される可能性があり、それ以外で構造ハザードが発生しないように、全命令が配置されているものとする。【００６８】  図８Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、これらの命令を実行する演算部の数が足りているため、３つの命令を同時実行することが可能である。命令デコーダ部１０５−１は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−１を命令発行制御部２１１へ出力する。同様に、命令デコーダ部１０５−２は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−２を命令発行制御部２１１へ出力する。命令デコーダ部１０５−３は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−３を命令発行制御部２１１へ出力する。【００６９】  図８Ａに示される命令の組合せ��は、構造ハザード検出部２１２は、１命令以上の発行制御命令検出信号がアサートされないため、順次発行指示信号１６２をアサートしない。また、命令無効化制御部１１３は、命令無効化信号１５５−１〜１５５−３および命令バッファ更新停止信号１５６をアサートしない。【００７０】  これに伴い、制御信号選択部１０６は、図８Ａに示される３命令全てに対応する命令実行制御信号１５７を同時に命令実行部１０４へ出力する。そして、図９Ａに示されるように、命令実行部１０４は、この命令の組み合わせに対して、それぞれの命令を同時に実行する。【００７１】  図８Ｂに示される命令の組合せ（ｒｎｄ，ａｄｄ，ｌｄ）では、ｒｎｄ命令、またはａｄｄ命令を実行可能な算術論理演算部１０７が命令実行部１０４に１個しか存在しないため、命令実行部１０４は、同時実行することができない。この命令の組合せでは、構造ハザード検出部２１２は、１命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部１１３は、順次発行指示信号１６２を受け、１命令ずつが有効となるように命令無効化信号１５５−１〜１５５−３を順次アサートする。【００７２】  これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図９Ｂに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部２１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号１５６をアサートする。【００７３】  図８Ｃに示される命令の組合せ（ｒｎｄ，ｌｄ，−）では、算術論理演算部１０７を使用する命令がｒｎｄ命令１命令のみであり、構造ハザードが発生しない。しかし、構造ハザード検出部２１２は、１命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部１１３は、順次発行指示信号１６２を受け、１命令ずつが有効となるように命令無効化信号１５５−１〜１５５−３を順次アサートする。【００７４】  これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図９Ｃに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部２１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号１５６をアサートする。【００７５】  なお、図８Ｃに示されるように、命令バッファ全てに命令が配置されていない場合は、本発明に係る実施の形態１および実施の形態２では配置されていない命令数に等しいマシンサイクル数の期間が何も発行されない冗長な期間として存在することとなる。【００７６】  このように、プロセッサ２０１は、命令バッファ群１０２に構造ハザードが発生する命令の組合せが配置されていても、命令実行部１０４の動作状態を知ることなく、かつ構造ハザード検出部２１２が１個の論理和回路２１４のみで構成されることによって、命令バッファ１０２の内容のみの情報で構造ハザードを回避し命令を実行することが可能となる。【００７７】  （実施の形態３）
次に、本発明に係る実施の形態３について、図面を参照しながら説明する。【００７８】  実施の形態１におけるプロセッサ１０１では、命令バッファ全てに命令が配置されていない場合に、冗長な期間が存在していた。これに対して、図１０に示されるように、実施の形態３におけるプロセッサ３０１では、命令発行制御部１１１の代わりに、命令発行制御部３１１を備え、このような問題を解消できるようにしたことを特徴とする。【００７９】  すなわち、実施の形態３におけるプロセッサは、命令グループの命令を順次供給する場合に、命令バッファに保持されている命令数を最大値とするカウンタを用いて、命令グループの中からカウンタの値毎に対応した命令を順次１命令ずつ供給することを特徴とする。【００８０】  以上の点を踏まえて実施の形態３におけるプロセッサ３０１について説明する。なお、実施の形態１におけるプロセッサ１０１と同一の構成要素については、同一の参照符号を付して説明を省略する。【００８１】  図１１は、本実施の形態における命令発行制御部３１１の構成を示すブロック図である。図１１に示されるように、命令無効化制御部３１３は、順次発行指示信号１６２および命令有効情報１５２−２〜１５２−３を受け、命令無効化信号３５５−１〜３５５−３および命令バッファ更新停止信号３５６を出力する。【００８２】  以上のように構成されたプロセッサについて、以下にその動作を説明する。【００８３】  図１２Ａ、図１２Ｂは、動作説明をするための命令プログラム例であり、図１３Ａ、図１３Ｂは、その動作説明図である。ここで、実施の形態３におけるプロセッサ３０１に供給されるプログラムは、本発明に係る実施の形態１と同様に、算術論理演算部１０７に対する構造ハザードのみを発生する可能性がある。すなわち、算術論理演算命令が複数配置される可能性があり、それ以外の構造ハザードは発生しないように全命令が配置されているものとする。【００８４】  図１２Ａに示される命令の組合せ（ａｄｄ，ａｄｄ，ｌｄ）では、ａｄｄ命令を実行可能な算術論理演算部１０７が１個しか存在しないため、同時に２つのａｄｄ命令を実行することができない。この命令の組合せでは、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部３１３は、順次発行指示信号１６２および命令有効情報１５２−２，１５２−３を受ける。このとき、命令有効情報１５２−３もアサートされている。これによって、３命令が存在することを検出し、１命令ずつが有効となるように命令無効化信号３５５−１〜３５５−３を順次アサートする。【００８５】  これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図１３Ａに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部３１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号３５６をアサートする。【００８６】  一方、図１２Ｂに示される命令の組合せ（ａｄｄ，ａｄｄ，−）では、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされるため、図１２Ａに示される命令の組合せと同様に順次発行指示信号１６２をアサートする。【００８７】  しかし、命令無効化制御部３１３は、順次発行指示信号１６２および命令有効情報１５２−２，１５２−３を受ける。このとき、命令有効情報１５２−２は、アサートされていて、命令有効情報１５２−３は、アサートされていない。これによって、２命令が存在することを検出し、１命令ずつが有効となるように命令無効化信号３５５−１〜３５５−３を順次アサートする。【００８８】  これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図１３Ｂに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部３１１は、１マシンサイクル目のみ命令バッファ更新停止信号３５６をアサートし、２マシンサイクル目は命令バッファ更新停止信号３５６をネゲートする。これによって、その次のマシンサイクルでは新しい命令が命令バッファ群１０２に格納されることになる。【００８９】  このように、プロセッサ３０１は、構造ハザードが発生する命令の組合せが命令バッファ群１０２に配置されていても、命令実行部１０４の動作状態を知ることなく、命令バッファ群１０２の内容のみで構造ハザードを回避して命令バッファに配置された命令数のみのマシンサイクル数の期間で命令を順次命令を発行することが可能となる。【００９０】  （実施の形態４）
次に、本発明に係る実施の形態４について、図面を参照しながら説明する。【００９１】  マルチサイクル命令解読管理部が命令デコーダからの複数の命令から解読可能な１命令を選択してマルチサイクル命令の解読管理をする場合において、実施の形態１におけるプロセッサ１０１にマルチサイクル命令解読管理部を単に含めても、マルチサイクル命令が複数配置されていると、マルチサイクル命令解読管理部での命令選択時点で複数のマルチサイクル命令による競合が起きるため解読管理が行えず適用することができない。これに対して、図１４に示されるように、実施の形態４におけるプロセッサ４０１では、命令バッファ群１０２、命令解読部１０３、命令実行部１０４、命令発行制御部１１１の代わりに、命令バッファ群４０２、命令解読部４０３、命令実行部４０４、命令発行制御部４１１、マルチサイクル命令解読管理部４１２などを備え、このような問題を解消できるようにしたことを特徴とする。【００９２】  すなわち、実施の形態４におけるプロセッサは、命令バッファ群から入力される命令グループを簡易解読した結果に基づいて、命令グループの中に所定の数のマルチサイクル命令が含まれていることを要因として検出することを特徴とする。【００９３】  ここで、簡易解読するにあたって、少なくともマルチサイクル命令であるか否かが特定されるものとする。【００９４】「マルチサイクル命令」とは、１命令につき複数の演算が実行される命令をいう。なお、このとき実行される演算をマイクロオペレーションとも呼称する。【００９５】  以上の点を踏まえて、実施の形態４におけるプロセッサ４０１について説明する。なお、実施の形態１におけるプロセッサ１０１と同一の構成要素については、同一の参照符号を付して説明を省略する。【００９６】  図１４は、本実施の形態におけるプロセッサの構成を示すブロック図である。図１４に示されるように、プロセッサ４０１は、命令バッファ群４０２、命令解読部４０３、命令実行部４０４、命令発行制御部４１１、マルチサイクル命令解読管理部４１２などを備える。【００９７】  命令バッファ群４０２は、複数の命令バッファを備え、命令グループを保持する。ここでは、命令バッファ４０２−１〜４０２−３から構成されるとする。命令バッファ４０２−１〜４０２−３は、命令コード４５１−１〜４５１−３と命令有効情報４５２−１〜４５２−３を保持している。【００９８】  命令解読部４０３は、命令デコーダ４０５−１〜４０５−３、制御信号選択部４０６から構成される。【００９９】  命令デコーダ４０５−１〜４０５−３は、命令バッファ４０２−１〜４０２−３から命令コード４５１−１〜４５１−３を、命令発行制御部４１１から命令有効情報４６２−１〜４６２−３を受ける。さらに、そのデコード結果のうちマルチサイクル命令の検出結果をマルチサイクル命令解読管理部４１２へマルチサイクル命令信号４６３−１〜４６３−３として出力し、マルチサイクル命令解読管理部４１２からマイクロオペレーション指示信号４６４−１〜４６４−３を受ける。そして、命令バッファ４０２−１〜４０２−３からの情報とマイクロオペレーション指示信号４６４−１〜４６４−３に応じた命令実行制御信号４５７��命令実行部４０４へ出力する。【０１００】  制御信号選択部４０６は、命令デコーダ４０５−１〜４０５−３から命令実行制御信号４５３−１〜４５３−３を受け、有効な命令に対応する命令実行制御信号４５７を命令実行部４０４へ出力する。【０１０１】  命令実行部４０４は、算術論理演算部４０７、積和演算部４０８、メモリアクセス制御部４０９、レジスタファイル４１０、除算演算部４２０から構成され、命令の実行および実行結果の格納を行う。【０１０２】  マルチサイクル命令解読管理部４１２は、命令デコーダ４０５−１〜４０５−３からマルチサイクル命令信号４６３−１〜４６３−３を受け、命令デコーダ４０５−１〜４０５−３へマイクロオペレーション指示信号４６４−１〜４６４−３を出力し、命令発行制御部４１１へカウンタ更新停止信号４６６を出力する。【０１０３】  図１５は、本実施の形態における命令発行制御部４１１の構成を示すブロック図である。図１５に示されるように、命令発行制御部４１１は、マルチサイクル命令検出部４１３、命令無効化制御部４１４、論理和回路４１５、論理積回路４１６−１〜４１６−３などを備える。【０１０４】  そして、論理積回路４１６−１は、命令バッファ４０２−１から命令有効情報４５２−１を受け、命令無効化制御部４１４から命令無効化信号４６８−１を受ける。そして、命令無効化信号４６８−１を反転させたものと命令有効情報４５２−１との論理積に応じた命令有効情報４６２−１を命令デコーダ４０５−１へ出力する。同様に、論理積回路４１６−２は、命令無効化制御部４１４から受けた命令無効化信号４６８−２を反転させたものと命令バッファ４０２−２から受けた命令有効情報４５２−２との論理積に応じた命令有効情報４６２−２を命令デコーダ４０５−２へ出力する。論理積回路４１６−３は、命令無効化制御部４１４から受けた命令無効化信号４６８−３を反転させたものと命令バッファ４０２−３から受けた命令有効情報４５２−３との論理積に応じた命令有効情報４６２−３を命令デコーダ４０５−３へ出力する。【０１０５】  論理和回路４１５は、マルチサイクル命令解読管理部４１２からカウンタ更新停止信号４６６を受け、命令無効化制御部４１４から命令バッファ更新停止信号４６９を受ける。そして、カウンタ更新停止信号４６６と命令バッファ更新停止信号４６９との論理和に応じた命令バッファ更新停止信号４５６を命令バッファ群４０２へ出力する。【０１０６】  マルチサイクル命令検出部４１３は、命令バッファ４０２−１から命令コード４５１−１および命令有効情報４５２−１を受ける。また、命令バッファ４０２−２から命令コード４５１−２および命令有効情報４５２−２を受ける。命令バッファ４０２−３から命令コード４５１−３および命令有効情報４５２−３を受ける。さらに、マルチサイクル命令検出デコーダ４２１−１〜４２１−３によって複数配置可能なマルチサイクル命令を検出する。論理積回路４２２−１〜４２２−３によって２命令のマルチサイクル命令の有無を検出する。論理和回路４２３によって２命令以上の複数配置可能なマルチサイクル命令の有無を判定する。そして、判定結果に応じた順次発行指示信号４６５を命令無効化制御部４１４へ出力する。【０１０７】  命令無効化制御部４１４は、マルチサイクル命令検出部４１３から順次発行指示信号４６５を受け、マルチサイクル命令解読管理部４１２からカウンタ更新停止信号４６６を受け、初期値０の２−ｂｉｔアップカウンタ４１７を起動する。そして、２−ｂｉｔアップカウンタ４１７は、順次発行指示信号４６５がアサートされている期間でかつカウンタ更新停止信号４６６がネゲートされているマシンサイクルにおいては、カウンタ値を更新する。【０１０８】  比較器４１８−１〜４１８−３は、２−ｂｉｔアップカウンタ４１７からカウンタ値４６７を受ける。さらに、比較器４１８−１は、値”０”とカウンタ値４６７とを比較して、比較結果４７０−１を論理積回路４１９−１へ出力する。同様に、比較器４１８−２は、値”１”とカウンタ値４６７とを比較して、比較結果４７０−２を論理積回路４１９−２へ出力する。比較器４１８−３は、値”２”とカウンタ値４６７とを比較して、比較結果４７０−３を論理積回路４１９−３へ出力する。【０１０９】  論理積回路４１９−１〜４１９−３は、マルチサイクル命令検出部４１３から順次発行指示信号４６５を受ける。さらに、論理積回路４１９−１は、比較器４１８−１から比較結果４７０−１を受け、順次発行指示信号４６５と比較結果４７０−１との論理積に応じた命令無効化信号４６８−１を論理積回路４１６−１へ出力する。同様に、論理積回路４１９−２は、比較器４１８−２から比較結果４７０−２を受け、順次発行指示信号４６５と比較結果４７０−２との論理積に応じた命令無効化信号４６８−２を論理積回路４１６−２へ出力する。論理積回路４１９−３は、比較器４１８−３から比較結果４７０−３を受け、順次発行指示信号４６５と比較結果４７０−３との論理積に応じた命令無効化信号４６８−３を論理積回路４１６−３へ出力する。また、論理積回路４１９−３は、命令無効化信号４６８−３を命令バッファ更新停止信号４６９として論理和回路４１５へ出力する。【０１１０】  以上のように構成されたプロセッサについて、以下にその動作を説明する。【０１１１】  図１６Ａ、図１６Ｂは、動作説明をするための命令プログラム例であり、図１７Ａ、図１７Ｂは、その動作説明図である。ここでは、図１６Ａ、図１６Ｂ、図１７Ａ、図１７Ｂにおいて、ｄｉｖは除算命令を示し、マルチサイクル命令解読管理部４１２で管理されるｎサイクルのマルチサイクル命令であり、除算演算部４２０で実行可能である。ここで、実施の形態４におけるプロセッサ４０１に用いられるプログラムは、マルチサイクル命令のうち、除算演算のみ命令バッファ群４０２に複数配置される可能性があり、それ以外のマルチサイクル命令については命令バッファ群４０２に複数配置されないように配置されているものとする。【０１１２】  図１６Ａに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｌｄ）では、マルチサイクル命令検出部４１３は、マルチサイクル命令であるｄｉｖ命令が１つであるため、順次発行指示信号４６５をネゲートする。これによって、命令有効情報４６２−１〜４６２−３が同時にアサートされるため、命令コード４５１−１〜４５１−３が命令デコーダ４０５−１〜４０５−３で同時にデコードされる。【０１１３】  このとき、マルチサイクル命令解読管理部４１２は、１つのマルチサイクル命令ｄｉｖによるマルチサイクル命令信号４６４−２を受けて解読管理を行う。そして、マルチサイクル命令の解読管理中で、かつマルチサイクル命令の最終マイクロオペレーションでない期間において、マルチサイクル命令解読管理部４１２は、カウンタ更新停止信号４６６をアサートする。命令発行制御部４１１は、命令バッファ更新停止信号４６９がネゲートされているので、カウンタ更新停止信号４６６をそのまま命令バッファ更新停止信号４５６として出力する。【０１１４】  これに伴い、制御信号選択部４０６は、これらの命令の組み合わせに対して、それぞれの命令に対応する命令実行制御信号４５７を同時に命令実行部４０４へ出力する。そして、図１７Ａに示されるように、命令実行部４０４は、これらの命令の組み合わせに対して、それぞれの命令を同時に実行する。【０１１５】  一方、図１６Ｂに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｄｉｖ）では、マルチサイクル命令検出部４１３は、マルチサイクル命令であるｄｉｖ命令が２つであるため、順次発行指示信号４６５をアサートする。これによって、カウンタ値４６７が”０”のとき、命令有効情報４６２−１〜４６２−３のうちａｄｄ命令に対応する命令有効情報４６２−１のみがアサートされるため、命令コード４５１−１のみが命令デコーダ４０５−１でデコードされる。【０１１６】  さらに、マルチサイクル命令解読管理部４１２は、有効なマルチサイクル命令が存在しないので、カウンタ更新停止信号４６６をネゲートする。このため、次のマシンサイクルでカウンタ値４６７を”１”に更新する。これによって、カウンタ値４６７が”１”のとき、命令有効情報４６２−１〜４６２−３のうち１つ目のｄｉｖ命令に対応する命令有効情報４６２−２のみがアサートされるため、命令コード４５１−２のみが命令デコーダ４０５−２でデコードされる。【０１１７】  さらに、マルチサイクル命令解読管理部４１２は、有効なマルチサイクル命令ｄｉｖが存在するので、カウンタ更新停止信号４６６をアサートする。このため、１つ目のｄｉｖの解読管理が終了するまで、２−ｂｉｔアップカウンタ４１７の更新を停止する。１つ目のｄｉｖの最終マイクロオペレーションになるとき、マルチサイクル命令解読管理部４１２は、カウンタ更新停止信号４６６をネゲートするため、次のマシンサイクルでカウンタ値４６７を”２”に更新する。これによって、２個目のｄｉｖ命令に対応する命令有効情報４６２−３がアサートされるため、命令コード４５１−３のみが命令デコーダ４０５−３でデコードされる。【０１１８】  そして、マルチサイクル命令解読管理部４１２は、有効なマルチサイクル命令ｄｉｖが存在するので、カウンタ更新停止信号４６６をアサートする。このため、２個目のｄｉｖの解読管理が終了するまで、２−ｂｉｔアップカウンタ４１７の更新を停止する。２個目のｄｉｖの最終マイクロオペレーションになるとき、マルチサイクル命令解読管理部４１２は、カウンタ更新停止信号４６６をネゲートするため、命令バッファ更新停止信号４５６もネゲートされ、次のマシンサイクルで命令バッファ群４０２が更新される。【０１１９】  これに伴い、制御信号選択部４０６は、１命令ずつに対応する命令実行制御信号４５７を命令実行部４０４へ出力する。そして、図１７Ｂに示されるように、命令実行部４０４は、１命令ずつ実行する。【０１２０】  このように、プロセッサ４０１は、命令バッファ群４０２に複数のマルチサイクル命令が配置されていても、命令実行部４０４の動作状態を知ることなく、命令バッファ群４０２の内容とマルチサイクル命令解読管理部４１２からのカウンタ更新停止信号４６６のみで命令を順次発行させることにより命令を実行することが可能となる。【０１２１】  （実施の形態５）
次に、本発明に係る実施の形態５について、図面を参照しながら説明する。【０１２２】  実施の形態４におけるプロセッサ４０１では、命令有効情報４６２−１〜４６２−３の出力のタイミングに余裕がなく、命令発行制御部４１１を設けると動作速度が低下してユーザが要求している動作速度仕様を満たせなくなる場合がある。これに対して、図１８に示されるように、実施の形態５におけるプロセッサ５０１では、命令発行制御部４１１の代わりに、命令発行制御部５１１を備え、このような問題を解消できるようにしたことを特徴とする。【０１２３】  すなわち、実施の形態５におけるプロセッサは、命令バッファから入力される命令グループを簡易解読した結果に基づいて、命令グループの中にマルチサイクル命令が１つ以上含まれていることを要因として検出することを特徴とする。【０１２４】  ここで、簡易解読するにあたって、少なくともマルチサイクル命令であるか否かが特定されるものとする。【０１２５】  以上の点を踏まえて実施の形態５におけるプロセッサ５０１について説明する。なお、実施の形態４におけるプロセッサ４０１と同一の構成要素については、同一の参照符号を付して説明を省略する。【０１２６】  図１９は、本実施の形態における命令発行制御部５１１の構成を示すブロック図である。図１９に示されるように、マルチサイクル命令検出部５１３は、命令バッファ４０２−１〜４０２−３から命令コード４５１−１〜４５１−３および命令有効情報４５２−１〜４５２−３を受け、マルチサイクル命令検出デコーダ５２１−１〜５２１−３によって複数配置可能なマルチサイクル命令を検出する。さらに、論理和回路５２２によって１命令以上の複数配置可能なマルチサイクル命令の有無を判定し、その判定結果を命令無効化制御部４１４へ順次発行指示信号４６５として出力する。【０１２７】  以上のように構成されたプロセッサについて、以下にその動作を説明する。【０１２８】  図２０Ａ〜図２０Ｃは、動作説明をするための命令プログラム例であり、図２１Ａ〜図２１Ｃは、その動作説明図である。ここで、実施の形態５におけるプロセッサ５０１に用いられるプログラムは、マルチサイクル命令のうち、除算演算のみ命令バッファ群４０２に複数配置される可能性があり、それ以外のマルチサイクル命令は命令バッファ群４０２に複数配置されないように配置されているものとする。【０１２９】  図２０Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、マルチサイクル命令検出部５１３は、複数配置可能なマルチサイクル命令を検出しないため、順次発行指示信号４６５をネゲートする。【０１３０】  これに伴い、制御信号選択部４０６は、これらの命令の組み合わせに対して、それぞれの命令に対応する命令実行制御信号４５７を同時に命令実行部４０４へ出力する。そして、図２１Ａに示されるように、命令実行部４０４は、これらの命令の組み合わせに対して、それぞれの命令を同時に実行する。【０１３１】  一方、図２０Ｂに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｄｉｖ）では、マルチサイクル命令検出部５１３は、複数配置可能なマルチサイクル命令が２つであるため、順次発行指示信号４６５をアサートする。【０１３２】  これに伴��、制御信号選択部４０６は、１命令ずつに対応する命令実行制御信号４５７を命令実行部４０４へ出力する。そして、図２１Ｂに示されるように、命令実行部４０４は、１命令ずつ実行する。【０１３３】  図２０Ｃに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｌｄ）では、マルチサイクル命令検出部５１３は、複数配置可能なマルチサイクル命令が１つのみであり、命令解読部４０５に、図２０Ｃに示される命令の組合せを供給してもマルチサイクル命令解読管理部４１２では制御可能である。しかし、マルチサイクル命令検出部５１３は、１命令以上の複数配置可能なマルチサイクル命令を検出し、順次発行指示信号４６５をアサートする。【０１３４】  これに伴い、制御信号選択部４０６は、１命令ずつに対応する命令実行制御信号４５７を命令実行部４０４へ出力する。そして、図２１Ｃに示されるように、命令実行部４０４は、１命令ずつ実行する。【０１３５】  このように、プロセッサ５０１は、命令バッファ４０２に複数のマルチサイクル命令が配置されていても、命令実行部４０４の動作状態を知ることなく、かつマルチサイクル命令検出部５１３は、マルチサイクル命令検出デコーダ５２１−１〜５２１−３と１個の論理和回路５２２の構成により、命令バッファ群４０２の内容で構造ハザードを回避し命令を実行することが可能となる。【０１３６】  なお、命令バッファ全てに命令が配置されていない場合、本発明に係る実施の形態４および実施の形態５では配置されていない命令数に等しいマシンサイクル数の期間が何も発行されない冗長な期間として存在することとなるが、これに対しては、命令無効化制御部４１４へ命令有効情報４５２−２〜４５２−３を追加し、本発明に係る実施の形態３での命令発行制御部３１３と同様の制御を行うことによって冗長な期間を除くことができる。【０１３７】  （実施の形態６）
次に、本発明に係る実施の形態６について、図面を参照しながら説明する。【０１３８】  実施の形態４におけるプロセッサ４０１では、マルチサイクル命令検出部４１３において順次発行信号４６５がアサートされると、マルチサイクル命令だけでなく、マルチサイクル命令と同時実行可能なシングルサイクル命令まで１命令ずつ順次供給されてしまう。これに対して、図２２に示されるように、実施の形態６におけるプロセッサ６０１では、命令発行制御部４１１の代わりに、命令発行制御部６１１を備え、このような問題を解消できるようにしたことを特徴とする。【０１３９】  すなわち、実施の形態６におけるプロセッサは、命令グループの命令を順次供給する場合に、マルチサイクル命令が１命令以下のサブ命令グループに命令グループを分割し、マルチサイクル命令数を最大値とするカウンタを用いて、カウンタの値毎に対応したサブ命令グループを順次供給することを特徴とする。【０１４０】  以上の点を踏まえて実施の形態６におけるプロセッサ６０１について説明する。なお、実施の形態４におけるプロセッサ４０１と同一の構成要素については、同一の参照符号を付して説明を省略する。【０１４１】  図２３は、本実施の形態における命令発行制御部６１１の構成を示すブロック図である。図２３に示されるように、命令発行制御部６１１は、マルチサイクル命令検出部６１３、命令無効化制御部６１４から構成される。【０１４２】  マルチサイクル命令検出部６１３は、命令バッファ４０２−１〜４０２−３から命令コード４５１−１〜４５１−３および命令有効情報４５２−１〜４５２−３を受け、マルチサイクル命令検出デコーダ４２１−１〜４２１−３により複数配置可能なマルチサイクル命令を検出する。さらに、命令無効化制御部６１４へマルチサイクル命令検出信号４７２−１〜４７２−３を出力する。また、マルチサイクル命令検出信号４７２−１〜４７２−３を入力とする論理積回路４２２−１〜４２２−３によって２命令のマルチサイクル命令の有無を検出し、論理和回路４２３によって２命令以上の複数配置可能なマルチサイクル命令の有無を判定する。そして、その判定結果を命令無効化制御部６１４へ順次発行指示信号４６５として出力する。【０１４３】  命令無効化制御部６１４は、マルチサイクル命令検出部６１３から順次発行指示信号４６５およびマルチサイクル命令検出信号４７２−１〜４７２−３を受け、マルチサイクル命令解読管理部４１２からカウンタ更新停止信号４６６を受ける。さらに、初期値“０”の２−ｂｉｔアップカウンタ４１７を起動する。そして、２−ｂｉｔアップカウンタ４１７は、順次発行指示信号４６５がアサートされている期間でかつカウンタ更新停止信号４６６がネゲートされているマシンサイクルにおいては、カウンタ値を更新する。【０１４４】  比較器４１８−１〜４１８−３は、２−ｂｉｔアップカウンタ４１７からカウンタ値４６７を受け、それぞれの値”０”、”１”、”２”とカウンタ値４６７とを比較して、その結果４７０−１〜４７０−３を論理積回路４１９−１〜４１９−３へ出力する。【０１４５】  論理積回路４１９−１〜４１９−３は、比較器４１８−１〜４１８−３から比較結果４７０−１〜４７０−３��受け、マルチサイクル命令検出部６１３から順次発行指示信号４６５を受け、比較結果４７０−１〜４７０−３と順次発行指示信号４６５との論理積をとり、その結果をサブ命令グループ無効化信号６７４−１〜６７４−３として無効化命令選択部６２４へ供給する。【０１４６】  無効化命令選択部６２４は、図２４に示される真理表に基づいて、マルチサイクル命令検出信号４７２−１〜４７２−３に従ってサブ命令グループ無効化信号６７４−１〜６７４−３の中から１つを選択して命令無効化信号４６８−１〜４６８−３として出力する。【０１４７】  論理積回路６２５〜６２７および論理和回路６２８は、マルチサイクル命令が２命令の場合においてカウンタ値４６７が”０”のとき、マルチサイクル命令が３命令の場合においてカウンタ値４６７が”０”または”１”のとき、バッファ更新停止信号４５６をアサートするように構成されている。【０１４８】  以上のように構成されたプロセッサについて、以下にその動作を説明する。【０１４９】  図２５Ａ、図２５Ｂは、動作説明をするための命令プログラム例であり、図２６Ａ、図２６Ｂは、その動作説明図である。ここで、実施の形態６におけるプロセッサ６０１に用いられるプログラムは、マルチサイクル命令のうち、除算演算のみ命令バッファ４０２に複数配置される可能性があり、それ以外のマルチサイクル命令は命令バッファ４０２に複数配置されないように配置されているものとする。【０１５０】  図２５Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、マルチサイクル命令検出部６１３は、複数配置可能なマルチサイクル命令を検出しないため、順次発行指示信号４６５をネゲートする。これによって、命令有効情報４６２−１〜４６２−３が同時にアサートされるため、命令コード４５１−１〜４５１−３が命令デコーダ４０５−１〜４０５−３で同時にデコードされる。【０１５１】  これに伴い、制御信号選択部４０６は、これらの命令の組み合わせに対して、それぞれの命令に対応する命令実行制御信号４５７を同時に命令実行部４０４へ出力する。そして、図２６Ａに示されるように、命令実行部４０４は、これらの命令の組み合わせに対して、それぞれの命令を同時に実行する。【０１５２】  図２５Ｂに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｄｉｖ）では、マルチサイクル命令検出部６１３は、複数配置可能なマルチサイクル命令が２命令以上存在することを検出し、順次発行指示信号４６５をアサートする。このとき、マルチサイクル命令検出部６１３は、マルチサイクル命令検出信号４７２−２および４７２−３もアサートする。【０１５３】  また、命令無効化制御部６１４は、マルチサイクル命令が２命令のため、カウンタ値４６７が”０”のときのみバッファ更新停止信号４５６をアサートする。【０１５４】  無効化命令選択部６２４は、マルチサイクル命令検出信号４７２−１〜４７２−３がそれぞれ”０”、”１”、”１”のため、図２４に示されるように、命令無効化信号４６８−１〜４６８−３については、それぞれサブ命令グループ無効化信号６７４−１、６７４−１、６７４−２を選択して出力する。【０１５５】  よって、図２６Ｂに示されるように、まず、ａｄｄ命令と第１のｄｉｖ命令が命令解読部４０３へ供給され、次に第２のｄｉｖ命令が命令解読部４０３へ供給されることとなる。なお、第１のｄｉｖ命令と同時に供給されたシングルサイクル命令であるａｄｄ命令は、第１のｄｉｖ命令と同時に命令解読部４０３へ供給されたのち、マルチサイクル命令解読管理部４１２によって、ｄｉｖ命令の最終マイクロオペレーションと同時に発行されるものとする。【０１５６】  このように、プロセッサ６０１は、命令バッファ群４０２に複数のマルチサイクル命令が配置されている場合においても、命令実行部４０４の動作状態を知ることもなく、命令バッファ群４０２の内容のみの情報で構造ハザードを回避し、同時実行可能な最大数の命令を同時に供給することで、実行可能な最小のサイクル数で命令を実行することが可能となる。【０１５７】  なお、本発明に係る実施の形態３のプロセッサにおいても、発行制御命令検出信号１５４−１〜１５４−３を命令無効化制御部３１３の入力として追加し、命令無効化制御部３１３を命令無効化制御部６１４と同様の構成にすることによって、同時実行可能な最大数の命令を同時に供給することで、実行可能な最小のサイクル数で命令を実行することが可能となる。【０１５８】  なお、実施の形態６におけるプロセッサのように、実施の形態１におけるプロセッサにおいても、命令グループの命令を順次供給する場合に、構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに命令グループを分割し、構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、カウンタの値毎に対応したサブ命令グループを順次供給するとしてもよい。【０１５９】  （その他）
なお、本発明に係わるプロセッサは、フルカスタムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）によって実現されるとしてもよい。また、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などのようなセミカスタムＬＳＩによって実現されるとしてもよい。また、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などのようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。【０１６０】  さらに、本発明に係わるプロセッサを構成する１以上の機能を、これらのＬＳＩに形成する設計データは、ＶＨＤＬ（Ｖｅｒｙ  ｈｉｇｈ  ｓｐｅｅｄ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣなどのようなハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）としてもよい。また、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件などを付加したマクロセル情報としてもよい。また、寸法、タイミングなどが規定されたマスクデータとしてもよい。【０１６１】  さらに、設計データは、コンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み出され得るように、光学記録媒体（例えば、ＣＤ−ＲＯＭなど。）、磁気記録媒体（例えば、ハードディスクなど。）、光磁気記録媒体（例えば、ＭＯなど。）、半導体メモリ（例えば、メモリーカードなど。）などのようなコンピュータ読み取り可能な記録媒体に記録しておくとしてもよい。【０１６２】  または、設計データは、ネットワークなどのような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアシステムに取得された設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。【０１６３】  または、論理合成、配置、配線された設計データは、通電時にＦＰＧＡに転送され得るように、シリアルＲＯＭに記録しておくとしてもよい。そして、シリアルＲＯＭに記録された設計データは、通電時に、直接、ＦＰＧＡにダウンロードされるとしてもよい。
【産業上の利用可能性】
【０１６４】  本発明は、省面積化に伴い演算器の数を減らした場合、または高速化に伴いシングルサイクル命令をマルチサイクル命令に変更した場合などのようにアーキテクチャを変更した場合においても、変更前のアーキテクチャに最適化されたオブジェクトコードを改変することなく利用できるプロセッサなどとして、利用することができる。
【図１】
2006134693.tif 000002
【図２】
2006134693.tif 000003
【図３】
2006134693.tif 000004
【図４Ａ】
2006134693.tif 000005
【図４Ｂ】
2006134693.tif 000006
【図５Ａ】
2006134693.tif 000007
【図５Ｂ】
2006134693.tif 000008
【図６】
2006134693.tif 000009
【図７】
2006134693.tif 000010
【図８Ａ】
2006134693.tif 000011
【図８Ｂ】
2006134693.tif 000012
【図８Ｃ】
2006134693.tif 000013
【図９Ａ】
2006134693.tif 000014
【図９Ｂ】
2006134693.tif 000015
【図９Ｃ】
2006134693.tif 000016
【図１０】
2006134693.tif 000017
【図１１】
2006134693.tif 000018
【図１２Ａ】
2006134693.tif 000019
【図１２Ｂ】
2006134693.tif 000020
【図１３Ａ】
2006134693.tif 000021
【図１３Ｂ】
2006134693.tif 000022
【図１４】
2006134693.tif 000023
【図１５】
2006134693.tif 000024
【図１６Ａ】
2006134693.tif 000025
【図１６Ｂ】
2006134693.tif 000026
【図１７Ａ】
2006134693.tif 000027
【図１７Ｂ】
2006134693.tif 000028
【図１８】
2006134693.tif 000029
【図１９】
2006134693.tif 000030
【図２０Ａ】
2006134693.tif 000031
【図２０Ｂ】
2006134693.tif 000032
【図２０Ｃ】
2006134693.tif 000033
【図２１Ａ】
2006134693.tif 000034
【図２１Ｂ】
2006134693.tif 000035
【図２１Ｃ】
2006134693.tif 000036
【図２２】
2006134693.tif 000037
【図２３】
2006134693.tif 000038
【図２４】
2006134693.tif 000039
【図２５Ａ】
2006134693.tif 000040
【図２５Ｂ】
2006134693.tif 000041
【図２６Ａ】
2006134693.tif 000042
【図２６Ｂ】
2006134693.tif 000043
【手続補正書】
【提出日】平成18年8月14日(2006.8.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求の範囲
【補正方法】変更
【補正の内容】
【書類名】請求の範囲
【請求項１】  複数の命令を並列に解読して実行できるプロセッサであって、
並列実行可能な命令グループを保持する命令バッファと、
前記命令グループの一部または全部を同時に解読可能な命令解読手段と、
前記命令グループに含まれる所定の命令を実行する演算器の個数に基づいて、前記命令グループを同時に実行することを阻害する要因が前記命令グループに存在するか否かを検出し、前記要因が存在する場合には、前記命令グループの命令を順次供給し、前記要因が存在しない場合には、前記命令グループの全ての命令を同時に供給するように、前記命令バッファを制御して前記命令解読手段へ前記命令グループを供給する命令発行制御手段と
を備えることを特徴とするプロセッサ。
【請求項２】  前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】  前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項４】  前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中に所定の数のマルチサイクル命令が含まれていることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項５】  前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中にマルチサイクル命令が１つ以上含まれていることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】  前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令解読手段で同時解読可能な最大命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項７】  前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令バッファに保持されている命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項８】  前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項９】  前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項３に記載のプロセッサ。
【請求項１０】  前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項４に記載のプロセッサ。
【請求項１１】  前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項５に記載のプロセッサ。
【手続補正書】
【提出日】平成19年3月27日(2007.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の命令を並列に解読して実行できるプロセッサであって、
並列実行可能な命令グループを保持する命令バッファと、
前記命令グループの一部または全部を同時に解読可能な命令解読手段と、
前記命令グループに含まれる所定の命令を実行する演算器の個数に基づいて、前記命令グループを同時に実行することを阻害する要因が前記命令グループに存在するか否かを検出し、前記要因が存在する場合には、前記命令グループの命令を順次供給し、前記要因が存在しない場合には、前記命令グループの全ての命令を同時に供給するように、前記命令バッファを制御して前記命令解読手段へ前記命令グループを供給する命令発行制御手段と
を備えることを特徴とするプロセッサ。
【請求項２】
前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中に所定の数のマルチサイクル命令が含まれていることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中にマルチサイクル命令が１つ以上含まれていることを前記要因として検出する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令解読手段で同時解読可能な最大命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項７】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令バッファに保持されている命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項８】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項９】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項３に記載のプロセッサ。
【請求項１０】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項４に記載のプロセッサ。
【請求項１１】
前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給する
ことを特徴とする請求項５に記載のプロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の命令を並列に解読して実行できるプロセッサに関する。
【背景技術】
【０００２】
近年、複数の命令を並列に解読して実行できるプロセッサにおいて、同時に実行できない複数の命令に対する制御方法に関する技術が色々と提案されている。
【０００３】
一例として、命令を実行ステージに送信し、実行ステージ中の命令の処理中に利用不能なデータに依存するか否かを判定して依存する場合には、その命令のみを停止させ、他の命令は同時実行させる制御機構を設けている。すなわち、実行ステージまで進んでから、同時に実行することができない場合には、ハザードを発生させて処理を止める技術が提案されている（例えば、特許文献１参照。）。
【０００４】
また、命令バッファおよび各演算器に対応した命令レジスタの未発行の命令数で命令の同時実行可能かどうかを判定し、レジスタの更新制御を行う。すなわち、プロセッサに実行状態をモニタする回路を用意し、演算器で先行する命令文がどういう実行状態であるかという情報に基づいて、実行ステージに進む前に命令供給を制御して処理を止める技術が提案されている（例えば、特許文献２参照。）。
【特許文献１】特開平８−２２１２７３号公報
【特許文献２】特開平８−３０５５６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術において、実行ステージ中の命令のデータ依存性を判定する制御機構では、省面積化に伴い演算器の数を減らすと、構造ハザードを発生させる複数の命令に対して適用できない問題がある。これは、命令の同時実行可能性を、実行ステージに命令を送信してから判定しているためである。
【０００６】
また、１つの命令コードに対して複数のオペレーションを実行するマルチサイクル命令に対して、並列分のカウンタを用意すれば、複数のマルチサイクル命令を同時に実行することができるが、省面積化に伴いカウンタの数を減らすと、同様の問題が生じる。
【０００７】
また、従来の命令バッファと命令レジスタの未発行の命令数で同時実行の可否を判定する方法では、演算器での命令実行状態を検出する必要がある上、既に並列に複数の命令を保持する命令バッファを持つプロセッサには適用できない問題がある。
【０００８】
すなわち、省面積化に伴い演算器の数を減らした場合、または高速化に伴いシングルサイクル命令をマルチサイクル命令に変更した場合などのようにアーキテクチャを変更した場合において適用できない問題がある。
【０００９】
そこで、本発明は前記問題に鑑みてなされたものであり、省面積化に伴い演算器の数を減らした場合、または高速化に伴いシングルサイクル命令をマルチサイクル命令に変更した場合などのようにプロセッサのアーキテクチャを変更した場合においても、変更前のアーキテクチャに最適化されたオブジェクトコードを改変することなく利用できるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１０】
前記問題を解決するにあたり、本発明に係るプロセッサは、（ａ）複数の命令を並列に解読して実行できるプロセッサであって、（ｂ）並列実行可能な命令グループを保持する命令バッファと、（ｃ）前記命令グループの一部または全部を同時に解読可能な命令解読手段と、（ｄ）前記命令グループを同時に実行することを阻害する要因が前記命令グループに存在するか否かを検出し、前記要因が存在する場合には、前記命令グループの命令を順次供給し、前記要因が存在しない場合には、前記命令グループの全ての命令を同時に供給するように、前記命令バッファを制御して前記命令解読手段へ前記命令グループを供給する命令発行制御手段とを備えることとする。
【００１１】
これによって、命令実行部の構成が一部異なる別のプロセッサ用に最適化された命令プログラムが存在し、同時に実行できる命令の組合せが異なり、命令バッファに同時に実行できない複数の命令が保持されている場合でも、命令発行制御手段によって順次供給することにより、プログラムを改変したり、命令バッファの格納方法の変更をしたりすることなくそのままプログラムを利用することが可能となる。
【００１２】
また、同時実行の可否を命令実行部の動作状態等を検出することなしに、命令の静的な情報のみで判定することが可能となり、設計容易化および設計期間の短縮に寄与する。
【００１３】
さらに、前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを前記要因として検出するとしてもよい。
【００１４】
または、前記命令発行制御手段は、前記命令解読手段から入力される前記命令グループの解読結果に基づいて、前記命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを前記要因として検出するとしてもよい。
【００１５】
これによって、構造ハザードの検出を単純化し、検出をより高速にすることができるため、プロセッサの動作速度の高速化にも寄与する。
【００１６】
または、前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中に所定の数のマルチサイクル命令が含まれていることを前記要因として検出するとしてもよい。
【００１７】
または、前記命令発行制御手段は、前記命令バッファから入力される前記命令グループを簡易解読した結果に基づいて、前記命令グループの中にマルチサイクル命令が１つ以上含まれていることを前記要因として検出するとしてもよい。
【００１８】
これによって、マルチサイクル命令の検出を単純化し、検出をより高速にすることができるため、プロセッサの動作速度の高速化にも寄与する。
【００１９】
または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令解読手段で同時解読可能な最大命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給するとしてもよい。
【００２０】
これによって、命令実行部の動作状態等を検出することなしに、命令バッファの命令のみによって決定されるカウンタのカウンタ値で命令供給の制御が可能となり、設計容易化および設計期間の短縮に寄与する。
【００２１】
または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記命令バッファに保持されている命令数を最大値とするカウンタを用いて、前記命令グループの中から前記カウンタの値毎に対応した命令を順次１命令ずつ供給するとしてもよい。
【００２２】
これによって、命令バッファに命令解読手段が同時解読可能な最大命令数が配置されていない場合でも、冗長なマシンサイクルなしで命令の供給を制御することが可能となり、処理性能の向上に寄与する。
【００２３】
または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給するとしてもよい。
【００２４】
これによって、同時実行可能な最大命令数を常に同時に供給することが可能となり、処理性能の向上に寄与する。
【００２５】
または、前記命令発行制御手段は、前記命令グループの命令を順次供給する場合に、前記マルチサイクル命令が１命令以下のサブ命令グループに前記命令グループを分割し、前記マルチサイクル命令数を最大値とするカウンタを用いて、前記カウンタの値毎に対応したサブ命令グループを順次供給するとしてもよい。
【００２６】
これによって、同時実行可能な最大命令数を常に同時に供給することが可能となり、処理性能の向上に寄与する。
【００２７】
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサを制御する方法などとして実現されるとしてもよい。
【００２８】
また、プロセッサによって提供される機能が組み込まれたＬＳＩ、その機能をＦＰＧＡ、ＣＰＬＤなどのプログラマブル・ロジック・デバイスに形成するＩＰコア、およびそのＩＰコアを記録した記録媒体などとして実現されるとしてもよい。
【発明の効果】
【００２９】
以上、本発明に係るプロセッサによれば、命令実行部の構成が一部異なる別のプロセッサ用に最適化された命令プログラムが存在し、同時に実行できる命令の組合せが異なり、命令バッファに同時に実行できない複数の命令が保持されている場合でも、命令発行制御手段によって順次供給することにより、プログラムを改変したり、命令バッファの格納方法の変更をしたりすることなくそのままプログラムを利用することが可能となる。
【００３０】
また、同時実行の可否を命令実行部の動作状態等を検出することなしに、命令の静的な情報のみで判定することが可能となり、設計容易化および設計期間の短縮に寄与する。
【００３１】
また、プロセッサは別のプロセッサではシングルサイクル命令であり、同時に複数実行可能であった命令がマルチサイクル命令となって同時に複数実行が不可能となった場合に、当該命令を含む前記別のプロセッサ用に最適化されたプログラムが存在する場合にも、命令バッファに同時に実行できない複数のマルチサイクル命令が保持されている場合は命令発行制御部によって順次供給することにより、プログラムを改変したり、命令バッファの格納方法の変更をしたりすることなくそのままプログラムを利用することが可能となる。
【発明を実施するための最良の形態】
【００３２】
（実施の形態１）
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。
【００３３】
実施の形態１におけるプロセッサは、複数の命令を並列に解読して実行できるプロセッサであって、並列実行可能な命令グループを保持し、命令グループの一部または全部を同時に解読でき、命令グループを同時に実行することを阻害する要因が命令グループに存在するか否かを検出し、要因が存在する場合には、命令グループの命令を順次供給し、要因が存在しない場合には、命令グループの全ての命令を同時に供給するように、命令バッファを制御して命令解読部へ命令グループを供給することを特徴とする。
【００３４】
また、実施の形態１におけるプロセッサは、命令解読部から入力される命令グループの解読結果に基づいて、命令グループの中に構造ハザードを発生させる命令の組み合せが含まれることを要因として検出することも特徴とする。
【００３５】
また、実施の形態１におけるプロセッサは、命令グループの命令を順次供給する場合に、命令解読部で同時解読可能な最大命令数を最大値とするカウンタを用いて、命令グループの中からカウンタの値毎に対応した命令を順次１命令ずつ供給することも特徴とする。
【００３６】
以上の点を踏まえて、実施の形態１におけるプロセッサについて説明する。
【００３７】
図１は、本実施の形態におけるプロセッサの構成を示すブロック図である。ここでは、３命令を同時に実行可能なプロセッサの構成となっているが、本発明の適用範囲は３命令に限定するものではない。
【００３８】
図１に示されるように、プロセッサ１０１は、命令バッファ群１０２、命令解読部１０３、命令実行部１０４、命令発行制御部１１１などを備える。
【００３９】
命令バッファ群１０２は、複数の命令バッファを備え、命令グループを保持する。ここでは、命令バッファ１０２−１〜１０２−３から構成されるとする。命令バッファ１０２−１は、命令コード１５１−１と命令有効情報１５２−１とを保持している。命令バッファ１０２−２は、命令コード１５１−２と命令有効情報１５２−２とを保持している。命令バッファ１０２−３は、命令コード１５１−３と命令有効情報１５２−３とを保持している。
【００４０】
命令解読部１０３は、命令デコーダ１０５−１〜１０５−３、制御信号選択部１０６から構成される。
【００４１】
命令実行部１０４は、算術論理演算部１０７、積和演算部１０８、メモリアクセス制御部１０９、レジスタファイル１１０から構成される。算術論理演算部１０７、積和演算部１０８、メモリアクセス制御部１０９によって命令を実行し、実行して得られた結果をレジスタファイル１１０に格納する。
【００４２】
図２は、本実施の形態における命令デコーダ１０５−１〜１０５−３の構成を示すブロック図である。ここでは、命令デコーダ１０５−１について説明し、命令デコーダ１０５−２、１０５−３については、命令デコーダ１０５−１と同一の構成により、説明を省略する。
【００４３】
図２に示されるように、命令デコーダ１０５−１は、命令バッファ１０２−１から命令コード１５１−１および命令有効情報１５２−１を受ける。このとき、命令有効情報１５２−１がアサートされていれば、命令コード１５１−１をデコードする。そして、デコード結果に応じた命令実行制御信号１５３−１を制御信号選択部１０６へ出力する。また、構造ハザードが発生する可能性のある命令を検出するにあたって、デコード結果に応じた発行制御命令検出信号１５４−１を命令発行制御部１１１へ出力する。一方、命令有効情報１５２−１がネゲートされていれば、命令コード１５１−１をデコードしない。
【００４４】
制御信号選択部１０６は、命令デコーダ１０５−１〜１０５−３から命令実行制御信号１５３−１〜１５３−３を受け、命令発行制御部１１１から命令無効化信号１５５−１〜１５５−３を受け、有効な命令に対応する命令実行制御信号１５７を命令実行部１０４へ出力する。具体的には、命令無効化信号１５５−１がネゲートされていると、命令実行制御信号１５３−１に応じた命令実行制御信号１５７がアサートされる。また、命令無効化信号１５５−２と命令実行制御信号１５３−２、命令無効化信号１５５−３と命令実行制御信号１５３−３についても同様である。仮に、命令無効化信号１５５−１〜１５５−３が全てネゲートされていれば、命令実行制御信号１５３−１〜１５３−３の全てに応じた命令実行制御信号１５７がアサートされる。すなわち、命令無効化信号１５５−１〜１５５−３がネゲートされている組み合わせに応じて、命令実行制御信号１５３−１〜１５３−３が組み合わさり、組み合わさった命令実行制御信号１５３−１〜１５３−３に応じた命令実行制御信号１５７がアサートされる。
【００４５】
図３は、本実施の形態における命令発行制御部１１１の構成を示すブロック図である。図３に示されるように、命令発行制御部１１１は、構造ハザード検出部１１２、命令無効化制御部１１３などを備える。
【００４６】
構造ハザード検出部１１２は、命令デコーダ１０５−１〜１０５−３から発行制御命令検出信号１５４−１〜１５４−３を受け、論理積回路１１４−１〜１１４−３によってそれぞれ発行制御命令検出信号１５４−１と発行制御命令検出信号１５４−２、発行制御命令検出信号１５４−２と発行制御命令検出信号１５４−３、発行制御命令検出信号１５４−１と発行制御命令検出信号１５４−３との間で２命令の発行制御対象の命令の有無を検出する。さらに、論理和回路１１５によって２命令以上の発行制御対象の命令の有無を判定し、判定結果に応じた順次発行指示信号１６２を命令無効化制御部１１３へ出力する。このとき、発行制御対象の命令が有れば、順次発行指示信号１６２は、アサートされる。
【００４７】
命令無効化制御部１１３は、順次発行指示信号１６２を受け、初期値０の２−ｂｉｔアップカウンタ１１６を起動する。そして、２−ｂｉｔアップカウンタ１１６は、順次発行指示信号１６２がアサートされている期間マシンサイクルごとにカウンタ値１６３を更新する。
【００４８】
比較器１１７−１〜１１７−３は、２−ｂｉｔアップカウンタ１１６からカウンタ値１６３を受ける。さらに、比較器１１７−１は、値“０”とカウンタ値１６３とを比較して、比較結果１６４−１を論理積回路１１８−１へ出力する。同様に、比較器１１７−２は、値“１”とカウンタ値１６３とを比較して、比較結果１６４−２を論理積回路１１８−２へ出力する。比較器１１７−３は、値“２”とカウンタ値１６３とを比較して、比較結果１６４−３を論理積回路１１８−３へ出力する。
【００４９】
論理積回路１１８−１〜１１８−３は、構造ハザード検出部１１２から順次発行指示信号１６２を受ける。さらに、論理積回路１１８−１は、比較器１１７−１から比較結果１６４−１を受け、順次発行指示信号１６２と比較結果１６４−１との論理積に応じた命令無効化信号１５５−１を出力する。同様に、論理積回路１１８−２は、比較器１１７−２から比較結果１６４−２を受け、順次発行指示信号１６２と比較結果１６４−２との論理積に応じた命令無効化信号１５５−２を出力する。論理積回路１１８−３は、比較器１１７−３から比較結果１６４−３を受け、順次発行指示信号１６２と比較結果１６４−３との論理積に応じた命令無効化信号１５５−３を出力する。また、論理積回路１１８−３は、命令無効化信号１５５−３を命令バッファ更新停止信号１５６としても出力する。
【００５０】
以上のように構成されたプロセッサについて、以下にその動作を説明する。
【００５１】
図４Ａ、図４Ｂは、動作説明をするための命令プログラム例であり、図５Ａ、図５Ｂは、その動作説明図である。ここでは、図４Ａ、図４Ｂ、図５Ａ、図５Ｂにおいて、ａｄｄは加算命令、ｍａｃは積和演算命令、ｌｄはメモリからのロード命令をそれぞれ示し、算術論理演算部１０７、積和演算部１０８、メモリアクセス制御部１０９で実行可能である。ここで、実施の形態１におけるプロセッサ１０１に用いられるプログラムは、算術論理演算部１０７に対する構造ハザードのみを発生する可能性がある、すなわち、算術論理演算命令が命令バッファ１０２に複数配置される可能性があるが、それ以外の構造ハザードは発生しないように全命令が配置されているものとする。
【００５２】
図４Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、これらの命令を実行する演算部の数が足りているため、３つの命令を同時実行することが可能である。命令デコーダ部１０５−１は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−１を命令発行制御部１１１へ出力する。同様に、命令デコーダ部１０５−２は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−２を命令発行制御部１１１へ出力する。命令デコーダ部１０５−３は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−３を命令発行制御部１１１へ出力する。
【００５３】
図４Ａに示される命令の組合せでは、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされないため、順次発行指示信号１６２をアサートしない。また、命令無効化制御部１１３は、命令無効化信号１５５−１〜１５５−３および命令バッファ更新停止信号１５６をアサートしない。
【００５４】
これに伴い、制御信号選択部１０６は、図４Ａに示される３命令全てに対応する命令実行制御信号１５７を同時に出力する。そして、図５Ａに示されるように、命令実行部１０４は、それらの命令を同時に実行する。
【００５５】
一方、図４Ｂに示される命令の組合せ（ａｄｄ，ａｄｄ，ｌｄ）では、ａｄｄ命令を実行可能な算術論理演算部１０７が１個しか存在しないため、命令実行部１０４は、同時実行することができない。この命令の組合せでは、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部１１３は、順次発行指示信号１６２を受け、１命令ずつが有効となるように命令無効化信号１５５−１〜１５５−３を順次アサートする。
【００５６】
これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図５Ｂに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部１１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号１５６をアサートする。
【００５７】
このように、プロセッサ１０１は、命令バッファ群１０２に構造ハザードが発生する命令の組合せが配置されていても、命令実行部１０４の動作状態を知ることなく、命令バッファ群１０２の内容のみの情報で構造ハザードを回避し命令を実行することが可能となる。
【００５８】
なお、命令グループの命令を順次供給する場合には、順次１命令ずつ供給するとしたが、演算器が複数ある場合、例えば、算術論理演算部が２つある場合には、１命令ずつ順序供給するだけでなく、算術論理演算部を使用する命令を２つ含む命令の組のように、それぞれ独立して同時に処理できる複数の命令を一まとめにした命令の組毎に順次供給するとしてもよい。
【００５９】
（実施の形態２）
次に、本発明に係る実施の形態２について、図面を参照しながら説明する。
【００６０】
実施の形態１におけるプロセッサ１０１では、命令デコーダ１０５−１〜１０５−３からのデコード結果出力のタイミングに余裕がなく、命令発行制御部１１１を設けると動作速度が低下してユーザが要求している動作速度仕様を満たせなくなる場合がある。これに対して、図６に示されるように、実施の形態２におけるプロセッサ２０１では、命令発行制御部１１１の代わりに、命令発行制御部２１１を備え、このような問題を解消できるようにしたことを特徴とする。
【００６１】
すなわち、実施の形態２におけるプロセッサは、命令解読部から入力される命令グループの解読結果に基づいて、命令グループの中に構造ハザードを発生させる可能性のある命令が１つ以上含まれることを要因として検出することを特徴とする。
【００６２】
以上の点を踏まえて実施の形態２におけるプロセッサについて説明する。なお、実施の形態１におけるプロセッサ１０１と同一の構成要素については、同一の参照符号を付して説明を省略する。
【００６３】
図７は、本実施の形態における命令発行制御部２１１の構成を示すブロック図である。図７に示されるように、構造ハザード検出部２１２は、命令デコーダ１０５−１〜１０５−３から発行制御命令検出信号１５４−１〜１５４−３を受け、論理和回路２１４によって１命令以上の発行制御対象の命令の有無を判定し、判定結果に応じた順次発行指示信号１６２を命令無効化制御部１１３へ出力する。
【００６４】
以上のように構成されたプロセッサについて、以下にその動作を説明する。
【００６５】
図８Ａ〜図８Ｃは、動作説明をするための命令プログラム例であり、図９Ａ〜図９Ｃは、その動作説明図である。ここでは、図８Ａ〜図８Ｃ、図９Ａ〜図９Ｃにおいて、ｒｎｄは丸め演算命令を示し算術論理演算部１０７において実行可能であり、“−”は命令が配置されていないことを示している。ここで、実施の形態２におけるプロセッサ２０１に供給されるプログラムは、丸め演算命令による算術論理演算部１０７に対する構造ハザードのみを発生する可能性がある。すなわち、複数の丸め演算命令が命令バッファ群１０２に配置される、もしくは丸め演算命令と算術論理演算命令の組合せが命令バッファ群１０２に同時に配置される可能性があり、それ以外で構造ハザードが発生しないように、全命令が配置されているものとする。
【００６６】
図８Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、これらの命令を実行する演算部の数が足りているため、３つの命令を同時実行することが可能である。命令デコーダ部１０５−１は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−１を命令発行制御部２１１へ出力する。同様に、命令デコーダ部１０５−２は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−２を命令発行制御部２１１へ出力する。命令デコーダ部１０５−３は、算術論理演算部１０７を使用する命令を検出し、検出結果に応じた発行制御命令検出信号１５４−３を命令発行制御部２１１へ出力する。
【００６７】
図８Ａに示される命令の組合せでは、構造ハザード検出部２１２は、１命令以上の発行制御命令検出信号がアサートされないため、順次発行指示信号１６２をアサートしない。また、命令無効化制御部１１３は、命令無効化信号１５５−１〜１５５−３および命令バッファ更新停止信号１５６をアサートしない。
【００６８】
これに伴い、制御信号選択部１０６は、図８Ａに示される３命令全てに対応する命令実行制御信号１５７を同時に命令実行部１０４へ出力する。そして、図９Ａに示されるように、命令実行部１０４は、この命令の組み合わせに対して、それぞれの命令を同時に実行する。
【００６９】
図８Ｂに示される命令の組合せ（ｒｎｄ，ａｄｄ，ｌｄ）では、ｒｎｄ命令、またはａｄｄ命令を実行可能な算術論理演算部１０７が命令実行部１０４に１個しか存在しないため、命令実行部１０４は、同時実行することができない。この命令の組合せでは、構造ハザード検出部２１２は、１命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部１１３は、順次発行指示信号１６２を受け、１命令ずつが有効となるように命令無効化信号１５５−１〜１５５−３を順次アサートする。
【００７０】
これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図９Ｂに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部２１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号１５６をアサートする。
【００７１】
図８Ｃに示される命令の組合せ（ｒｎｄ，ｌｄ，−）では、算術論理演算部１０７を使用する命令がｒｎｄ命令１命令のみであり、構造ハザードが発生しない。しかし、構造ハザード検出部２１２は、１命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部１１３は、順次発行指示信号１６２を受け、１命令ずつが有効となるように命令無効化信号１５５−１〜１５５−３を順次アサートする。
【００７２】
これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図９Ｃに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部２１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号１５６をアサートする。
【００７３】
なお、図８Ｃに示されるように、命令バッファ全てに命令が配置されていない場合は、本発明に係る実施の形態１および実施の形態２では配置されていない命令数に等しいマシンサイクル数の期間が何も発行されない冗長な期間として存在することとなる。
【００７４】
このように、プロセッサ２０１は、命令バッファ群１０２に構造ハザードが発生する命令の組合せが配置されていても、命令実行部１０４の動作状態を知ることなく、かつ構造ハザード検出部２１２が１個の論理和回路２１４のみで構成されることによって、命令バッファ１０２の内容のみの情報で構造ハザードを回避し命令を実行することが可能となる。
【００７５】
（実施の形態３）
次に、本発明に係る実施の形態３について、図面を参照しながら説明する。
【００７６】
実施の形態１におけるプロセッサ１０１では、命令バッファ全てに命令が配置されていない場合に、冗長な期間が存在していた。これに対して、図１０に示されるように、実施の形態３におけるプロセッサ３０１では、命令発行制御部１１１の代わりに、命令発行制御部３１１を備え、このような問題を解消できるようにしたことを特徴とする。
【００７７】
すなわち、実施の形態３におけるプロセッサは、命令グループの命令を順次供給する場合に、命令バッファに保持されている命令数を最大値とするカウンタを用いて、命令グループの中からカウンタの値毎に対応した命令を順次１命令ずつ供給することを特徴とする。
【００７８】
以上の点を踏まえて実施の形態３におけるプロセッサ３０１について説明する。なお、実施の形態１におけるプロセッサ１０１と同一の構成要素については、同一の参照符号を付して説明を省略する。
【００７９】
図１１は、本実施の形態における命令発行制御部３１１の構成を示すブロック図である。図１１に示されるように、命令無効化制御部３１３は、順次発行指示信号１６２および命令有効情報１５２−２〜１５２−３を受け、命令無効化信号３５５−１〜３５５−３および命令バッファ更新停止信号３５６を出力する。
【００８０】
以上のように構成されたプロセッサについて、以下にその動作を説明する。
【００８１】
図１２Ａ、図１２Ｂは、動作説明をするための命令プログラム例であり、図１３Ａ、図１３Ｂは、その動作説明図である。ここで、実施の形態３におけるプロセッサ３０１に供給されるプログラムは、本発明に係る実施の形態１と同様に、算術論理演算部１０７に対する構造ハザードのみを発生する可能性がある。すなわち、算術論理演算命令が複数配置される可能性があり、それ以外の構造ハザードは発生しないように全命令が配置されているものとする。
【００８２】
図１２Ａに示される命令の組合せ（ａｄｄ，ａｄｄ，ｌｄ）では、ａｄｄ命令を実行可能な算術論理演算部１０７が１個しか存在しないため、同時に２つのａｄｄ命令を実行することができない。この命令の組合せでは、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされるため、順次発行指示信号１６２をアサートする。また、命令無効化制御部３１３は、順次発行指示信号１６２および命令有効情報１５２−２、１５２−３を受ける。このとき、命令有効情報１５２−３もアサートされている。これによって、３命令が存在することを検出し、１命令ずつが有効となるように命令無効化信号３５５−１〜３５５−３を順次アサートする。
【００８３】
これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図１３Ａに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部３１１は、命令全てが発行されるまで命令バッファ群１０２の更新を停止するため、２マシンサイクル目まで命令バッファ更新停止信号３５６をアサートする。
【００８４】
一方、図１２Ｂに示される命令の組合せ（ａｄｄ，ａｄｄ，−）では、構造ハザード検出部１１２は、２命令以上の発行制御命令検出信号がアサートされるため、図１２Ａに示される命令の組合せと同様に順次発行指示信号１６２をアサートする。
【００８５】
しかし、命令無効化制御部３１３は、順次発行指示信号１６２および命令有効情報１５２−２、１５２−３を受ける。このとき、命令有効情報１５２−２は、アサートされていて、命令有効情報１５２−３は、アサートされていない。これによって、２命令が存在することを検出し、１命令ずつが有効となるように命令無効化信号３５５−１〜３５５−３を順次アサートする。
【００８６】
これに伴い、制御信号選択部１０６は、１命令ずつに対応する命令実行制御信号１５７を命令実行部１０４へ出力する。そして、図１３Ｂに示されるように、命令実行部１０４は、１命令ずつ実行する。このとき、命令発行制御部３１１は、１マシンサイクル目のみ命令バッファ更新停止信号３５６をアサートし、２マシンサイクル目は命令バッファ更新停止信号３５６をネゲートする。これによって、その次のマシンサイクルでは新しい命令が命令バッファ群１０２に格納されることになる。
【００８７】
このように、プロセッサ３０１は、構造ハザードが発生する命令の組合せが命令バッファ群１０２に配置されていても、命令実行部１０４の動作状態を知ることなく、命令バッファ群１０２の内容のみで構造ハザードを回避して命令バッファに配置された命令数のみのマシンサイクル数の期間で命令を順次命令を発行することが可能となる。
【００８８】
（実施の形態４）
次に、本発明に係る実施の形態４について、図面を参照しながら説明する。
【００８９】
マルチサイクル命令解読管理部が命令デコーダからの複数の命令から解読可能な１命令を選択してマルチサイクル命令の解読管理をする場合において、実施の形態１におけるプロセッサ１０１にマルチサイクル命令解読管理部を単に含めても、マルチサイクル命令が複数配置されていると、マルチサイクル命令解読管理部での命令選択時点で複数のマルチサイクル命令による競合が起きるため解読管理が行えず適用することができない。これに対して、図１４に示されるように、実施の形態４におけるプロセッサ４０１では、命令バッファ群１０２、命令解読部１０３、命令実行部１０４、命令発行制御部１１１の代わりに、命令バッファ群４０２、命令解読部４０３、命令実行部４０４、命令発行制御部４１１、マルチサイクル命令解読管理部４１２などを備え、このような問題を解消できるようにしたことを特徴とする。
【００９０】
すなわち、実施の形態４におけるプロセッサは、命令バッファ群から入力される命令グループを簡易解読した結果に基づいて、命令グループの中に所定の数のマルチサイクル命令が含まれていることを要因として検出することを特徴とする。
【００９１】
ここで、簡易解読するにあたって、少なくともマルチサイクル命令であるか否かが特定されるものとする。
【００９２】
「マルチサイクル命令」とは、１命令につき複数の演算が実行される命令をいう。なお、このとき実行される演算をマイクロオペレーションとも呼称する。
【００９３】
以上の点を踏まえて、実施の形態４におけるプロセッサ４０１について説明する。なお、実施の形態１におけるプロセッサ１０１と同一の構成要素については、同一の参照符号を付して説明を省略する。
【００９４】
図１４は、本実施の形態におけるプロセッサの構成を示すブロック図である。図１４に示されるように、プロセッサ４０１は、命令バッファ群４０２、命令解読部４０３、命令実行部４０４、命令発行制御部４１１、マルチサイクル命令解読管理部４１２などを備える。
【００９５】
命令バッファ群４０２は、複数の命令バッファを備え、命令グループを保持する。ここでは、命令バッファ４０２−１〜４０２−３から構成されるとする。命令バッファ４０２−１〜４０２−３は、命令コード４５１−１〜４５１−３と命令有効情報４５２−１〜４５２−３を保持している。
【００９６】
命令解読部４０３は、命令デコーダ４０５−１〜４０５−３、制御信号選択部４０６から構成される。
【００９７】
命令デコーダ４０５−１〜４０５−３は、命令バッファ４０２−１〜４０２−３から命令コード４５１−１〜４５１−３を、命令発行制御部４１１から命令有効情報４６２−１〜４６２−３を受ける。さらに、そのデコード結果のうちマルチサイクル命令の検出結果をマルチサイクル命令解読管理部４１２へマルチサイクル命令信号４６３−１〜４６３−３として出力し、マルチサイクル命令解読管理部４１２からマイクロオペレーション指示信号４６４−１〜４６４−３を受ける。そして、命令バッファ４０２−１〜４０２−３からの情報とマイクロオペレーション指示信号４６４−１〜４６４−３に応じた命令実行制御信号４５７を命令実行部４０４へ出力する。
【００９８】
制御信号選択部４０６は、命令デコーダ４０５−１〜４０５−３から命令実行制御信号４５３−１〜４５３−３を受け、有効な命令に対応する命令実行制御信号４５７を命令実行部４０４へ出力する。
【００９９】
命令実行部４０４は、算術論理演算部４０７、積和演算部４０８、メモリアクセス制御部４０９、レジスタファイル４１０、除算演算部４２０から構成され、命令の実行および実行結果の格納を行う。
【０１００】
マルチサイクル命令解読管理部４１２は、命令デコーダ４０５−１〜４０５−３からマルチサイクル命令信号４６３−１〜４６３−３を受け、命令デコーダ４０５−１〜４０５−３へマイクロオペレーション指示信号４６４−１〜４６４−３を出力し、命令発行制御部４１１へカウンタ更新停止信号４６６を出力する。
【０１０１】
図１５は、本実施の形態における命令発行制御部４１１の構成を示すブロック図である。図１５に示されるように、命令発行制御部４１１は、マルチサイクル命令検出部４１３、命令無効化制御部４１４、論理和回路４１５、論理積回路４１６−１〜４１６−３などを備える。
【０１０２】
そして、論理積回路４１６−１は、命令バッファ４０２−１から命令有効情報４５２−１を受け、命令無効化制御部４１４から命令無効化信号４６８−１を受ける。そして、命令無効化信号４６８−１を反転させたものと命令有効情報４５２−１との論理積に応じた命令有効情報４６２−１を命令デコーダ４０５−１へ出力する。同様に、論理積回路４１６−２は、命令無効化制御部４１４から受けた命令無効化信号４６８−２を反転させたものと命令バッファ４０２−２から受けた命令有効情報４５２−２との論理積に応じた命令有効情報４６２−２を命令デコーダ４０５−２へ出力する。論理積回路４１６−３は、命令無効化制御部４１４から受けた命令無効化信号４６８−３を反転させたものと命令バッファ４０２−３から受けた命令有効情報４５２−３との論理積に応じた命令有効情報４６２−３を命令デコーダ４０５−３へ出力する。
【０１０３】
論理和回路４１５は、マルチサイクル命令解読管理部４１２からカウンタ更新停止信号４６６を受け、命令無効化制御部４１４から命令バッファ更新停止信号４６９を受ける。そして、カウンタ更新停止信号４６６と命令バッファ更新停止信号４６９との論理和に応じた命令バッファ更新停止信号４５６を命令バッファ群４０２へ出力する。
【０１０４】
マルチサイクル命令検出部４１３は、命令バッファ４０２−１から命令コード４５１−１および命令有効情報４５２−１を受ける。また、命令バッファ４０２−２から命令コード４５１−２および命令有効情報４５２−２を受ける。命令バッファ４０２−３から命令コード４５１−３および命令有効情報４５２−３を受ける。さらに、マルチサイクル命令検出デコーダ４２１−１〜４２１−３によって複数配置可能なマルチサイクル命令を検出する。論理積回路４２２−１〜４２２−３によって２命令のマルチサイクル命令の有無を検出する。論理和回路４２３によって２命令以上の複数配置可能なマルチサイクル命令の有無を判定する。そして、判定結果に応じた順次発行指示信号４６５を命令無効化制御部４１４へ出力する。
【０１０５】
命令無効化制御部４１４は、マルチサイクル命令検出部４１３から順次発行指示信号４６５を受け、マルチサイクル命令解読管理部４１２からカウンタ更新停止信号４６６を受け、初期値０の２−ｂｉｔアップカウンタ４１７を起動する。そして、２−ｂｉｔアップカウンタ４１７は、順次発行指示信号４６５がアサートされている期間でかつカウンタ更新停止信号４６６がネゲートされているマシンサイクルにおいては、カウンタ値を更新する。
【０１０６】
比較器４１８−１〜４１８−３は、２−ｂｉｔアップカウンタ４１７からカウンタ値４６７を受ける。さらに、比較器４１８−１は、値“０”とカウンタ値４６７とを比較して、比較結果４７０−１を論理積回路４１９−１へ出力する。同様に、比較器４１８−２は、値“１”とカウンタ値４６７とを比較して、比較結果４７０−２を論理積回路４１９−２へ出力する。比較器４１８−３は、値“２”とカウンタ値４６７とを比較して、比較結果４７０−３を論理積回路４１９−３へ出力する。
【０１０７】
論理積回路４１９−１〜４１９−３は、マルチサイクル命令検出部４１３から順次発行指示信号４６５を受ける。さらに、論理積回路４１９−１は、比較器４１８−１から比較結果４７０−１を受け、順次発行指示信号４６５と比較結果４７０−１との論理積に応じた命令無効化信号４６８−１を論理積回路４１６−１へ出力する。同様に、論理積回路４１９−２は、比較器４１８−２から比較結果４７０−２を受け、順次発行指示信号４６５と比較結果４７０−２との論理積に応じた命令無効化信号４６８−２を論理積回路４１６−２へ出力する。論理積回路４１９−３は、比較器４１８−３から比較結果４７０−３を受け、順次発行指示信号４６５と比較結果４７０−３との論理積に応じた命令無効化信号４６８−３を論理積回路４１６−３へ出力する。また、論理積回路４１９−３は、命令無効化信号４６８−３を命令バッファ更新停止信号４６９として論理和回路４１５へ出力する。
【０１０８】
以上のように構成されたプロセッサについて、以下にその動作を説明する。
【０１０９】
図１６Ａ、図１６Ｂは、動作説明をするための命令プログラム例であり、図１７Ａ、図１７Ｂは、その動作説明図である。ここでは、図１６Ａ、図１６Ｂ、図１７Ａ、図１７Ｂにおいて、ｄｉｖは除算命令を示し、マルチサイクル命令解読管理部４１２で管理されるｎサイクルのマルチサイクル命令であり、除算演算部４２０で実行可能である。ここで、実施の形態４におけるプロセッサ４０１に用いられるプログラムは、マルチサイクル命令のうち、除算演算のみ命令バッファ群４０２に複数配置される可能性があり、それ以外のマルチサイクル命令については命令バッファ群４０２に複数配置されないように配置されているものとする。
【０１１０】
図１６Ａに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｌｄ）では、マルチサイクル命令検出部４１３は、マルチサイクル命令であるｄｉｖ命令が１つであるため、順次発行指示信号４６５をネゲートする。これによって、命令有効情報４６２−１〜４６２−３が同時にアサートされるため、命令コード４５１−１〜４５１−３が命令デコーダ４０５−１〜４０５−３で同時にデコードされる。
【０１１１】
このとき、マルチサイクル命令解読管理部４１２は、１つのマルチサイクル命令ｄｉｖによるマルチサイクル命令信号４６４−２を受けて解読管理を行う。そして、マルチサイクル命令の解読管理中で、かつマルチサイクル命令の最終マイクロオペレーションでない期間において、マルチサイクル命令解読管理部４１２は、カウンタ更新停止信号４６６をアサートする。命令発行制御部４１１は、命令バッファ更新停止信号４６９がネゲートされているので、カウンタ更新停止信号４６６をそのまま命令バッファ更新停止信号４５６として出力する。
【０１１２】
これに伴い、制御信号選択部４０６は、これらの命令の組み合わせに対して、それぞれの命令に対応する命令実行制御信号４５７を同時に命令実行部４０４へ出力する。そして、図１７Ａに示されるように、命令実行部４０４は、これらの命令の組み合わせに対して、それぞれの命令を同時に実行する。
【０１１３】
一方、図１６Ｂに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｄｉｖ）では、マルチサイクル命令検出部４１３は、マルチサイクル命令であるｄｉｖ命令が２つであるため、順次発行指示信号４６５をアサートする。これによって、カウンタ値４６７が“０”のとき、命令有効情報４６２−１〜４６２−３のうちａｄｄ命令に対応する命令有効情報４６２−１のみがアサートされるため、命令コード４５１−１のみが命令デコーダ４０５−１でデコードされる。
【０１１４】
さらに、マルチサイクル命令解読管理部４１２は、有効なマルチサイクル命令が存在しないので、カウンタ更新停止信号４６６をネゲートする。このため、次のマシンサイクルでカウンタ値４６７を“１”に更新する。これによって、カウンタ値４６７が“１”のとき、命令有効情報４６２−１〜４６２−３のうち１つ目のｄｉｖ命令に対応する命令有効情報４６２−２のみがアサートされるため、命令コード４５１−２のみが命令デコーダ４０５−２でデコードされる。
【０１１５】
さらに、マルチサイクル命令解読管理部４１２は、有効なマルチサイクル命令ｄｉｖが存在するので、カウンタ更新停止信号４６６をアサートする。このため、１つ目のｄｉｖの解読管理が終了するまで、２−ｂｉｔアップカウンタ４１７の更新を停止する。１つ目のｄｉｖの最終マイクロオペレーションになるとき、マルチサイクル命令解読管理部４１２は、カウンタ更新停止信号４６６をネゲートするため、次のマシンサイクルでカウンタ値４６７を“２”に更新する。これによって、２個目のｄｉｖ命令に対応する命令有効情報４６２−３がアサートされるため、命令コード４５１−３のみが命令デコーダ４０５−３でデコードされる。
【０１１６】
そして、マルチサイクル命令解読管理部４１２は、有効なマルチサイクル命令ｄｉｖが存在するので、カウンタ更新停止信号４６６をアサートする。このため、２個目のｄｉｖの解読管理が終了するまで、２−ｂｉｔアップカウンタ４１７の更新を停止する。２個目のｄｉｖの最終マイクロオペレーションになるとき、マルチサイクル命令解読管理部４１２は、カウンタ更新停止信号４６６をネゲートするため、命令バッファ更新停止信号４５６もネゲートされ、次のマシンサイクルで命令バッファ群４０２が更新される。
【０１１７】
これに伴い、制御信号選択部４０６は、１命令ずつに対応する命令実行制御信号４５７を命令実行部４０４へ出力する。そして、図１７Ｂに示されるように、命令実行部４０４は、１命令ずつ実行する。
【０１１８】
このように、プロセッサ４０１は、命令バッファ群４０２に複数のマルチサイクル命令が配置されていても、命令実行部４０４の動作状態を知ることなく、命令バッファ群４０２の内容とマルチサイクル命令解読管理部４１２からのカウンタ更新停止信号４６６のみで命令を順次発行させることにより命令を実行することが可能となる。
【０１１９】
（実施の形態５）
次に、本発明に係る実施の形態５について、図面を参照しながら説明する。
【０１２０】
実施の形態４におけるプロセッサ４０１では、命令有効情報４６２−１〜４６２−３の出力のタイミングに余裕がなく、命令発行制御部４１１を設けると動作速度が低下してユーザが要求している動作速度仕様を満たせなくなる場合がある。これに対して、図１８に示されるように、実施の形態５におけるプロセッサ５０１では、命令発行制御部４１１の代わりに、命令発行制御部５１１を備え、このような問題を解消できるようにしたことを特徴とする。
【０１２１】
すなわち、実施の形態５におけるプロセッサは、命令バッファから入力される命令グループを簡易解読した結果に基づいて、命令グループの中にマルチサイクル命令が１つ以上含まれていることを要因として検出することを特徴とする。
【０１２２】
ここで、簡易解読するにあたって、少なくともマルチサイクル命令であるか否かが特定されるものとする。
【０１２３】
以上の点を踏まえて実施の形態５におけるプロセッサ５０１について説明する。なお、実施の形態４におけるプロセッサ４０１と同一の構成要素については、同一の参照符号を付して説明を省略する。
【０１２４】
図１９は、本実施の形態における命令発行制御部５１１の構成を示すブロック図である。図１９に示されるように、マルチサイクル命令検出部５１３は、命令バッファ４０２−１〜４０２−３から命令コード４５１−１〜４５１−３および命令有効情報４５２−１〜４５２−３を受け、マルチサイクル命令検出デコーダ５２１−１〜５２１−３によって複数配置可能なマルチサイクル命令を検出する。さらに、論理和回路５２２によって１命令以上の複数配置可能なマルチサイクル命令の有無を判定し、その判定結果を命令無効化制御部４１４へ順次発行指示信号４６５として出力する。
【０１２５】
以上のように構成されたプロセッサについて、以下にその動作を説明する。
【０１２６】
図２０Ａ〜図２０Ｃは、動作説明をするための命令プログラム例であり、図２１Ａ〜図２１Ｃは、その動作説明図である。ここで、実施の形態５におけるプロセッサ５０１に用いられるプログラムは、マルチサイクル命令のうち、除算演算のみ命令バッファ群４０２に複数配置される可能性があり、それ以外のマルチサイクル命令は命令バッファ群４０２に複数配置されないように配置されているものとする。
【０１２７】
図２０Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、マルチサイクル命令検出部５１３は、複数配置可能なマルチサイクル命令を検出しないため、順次発行指示信号４６５をネゲートする。
【０１２８】
これに伴い、制御信号選択部４０６は、これらの命令の組み合わせに対して、それぞれの命令に対応する命令実行制御信号４５７を同時に命令実行部４０４へ出力する。そして、図２１Ａに示されるように、命令実行部４０４は、これらの命令の組み合わせに対して、それぞれの命令を同時に実行する。
【０１２９】
一方、図２０Ｂに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｄｉｖ）では、マルチサイクル命令検出部５１３は、複数配置可能なマルチサイクル命令が２つであるため、順次発行指示信号４６５をアサートする。
【０１３０】
これに伴い、制御信号選択部４０６は、１命令ずつに対応する命令実行制御信号４５７を命令実行部４０４へ出力する。そして、図２１Ｂに示されるように、命令実行部４０４は、１命令ずつ実行する。
【０１３１】
図２０Ｃに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｌｄ）では、マルチサイクル命令検出部５１３は、複数配置可能なマルチサイクル命令が１つのみであり、命令解読部４０５に、図２０Ｃに示される命令の組合せを供給してもマルチサイクル命令解読管理部４１２では制御可能である。しかし、マルチサイクル命令検出部５１３は、１命令以上の複数配置可能なマルチサイクル命令を検出し、順次発行指示信号４６５をアサートする。
【０１３２】
これに伴い、制御信号選択部４０６は、１命令ずつに対応する命令実行制御信号４５７を命令実行部４０４へ出力する。そして、図２１Ｃに示されるように、命令実行部４０４は、１命令ずつ実行する。
【０１３３】
このように、プロセッサ５０１は、命令バッファ４０２に複数のマルチサイクル命令が配置されていても、命令実行部４０４の動作状態を知ることなく、かつマルチサイクル命令検出部５１３は、マルチサイクル命令検出デコーダ５２１−１〜５２１−３と１個の論理和回路５２２の構成により、命令バッファ群４０２の内容で構造ハザードを回避し命令を実行することが可能となる。
【０１３４】
なお、命令バッファ全てに命令が配置されていない場合、本発明に係る実施の形態４および実施の形態５では配置されていない命令数に等しいマシンサイクル数の期間が何も発行されない冗長な期間として存在することとなるが、これに対しては、命令無効化制御部４１４へ命令有効情報４５２−２〜４５２−３を追加し、本発明に係る実施の形態３での命令発行制御部３１３と同様の制御を行うことによって冗長な期間を除くことができる。
【０１３５】
（実施の形態６）
次に、本発明に係る実施の形態６について、図面を参照しながら説明する。
【０１３６】
実施の形態４におけるプロセッサ４０１では、マルチサイクル命令検出部４１３において順次発行信号４６５がアサートされると、マルチサイクル命令だけでなく、マルチサイクル命令と同時実行可能なシングルサイクル命令まで１命令ずつ順次供給されてしまう。これに対して、図２２に示されるように、実施の形態６におけるプロセッサ６０１では、命令発行制御部４１１の代わりに、命令発行制御部６１１を備え、このような問題を解消できるようにしたことを特徴とする。
【０１３７】
すなわち、実施の形態６におけるプロセッサは、命令グループの命令を順次供給する場合に、マルチサイクル命令が１命令以下のサブ命令グループに命令グループを分割し、マルチサイクル命令数を最大値とするカウンタを用いて、カウンタの値毎に対応したサブ命令グループを順次供給することを特徴とする。
【０１３８】
以上の点を踏まえて実施の形態６におけるプロセッサ６０１について説明する。なお、実施の形態４におけるプロセッサ４０１と同一の構成要素については、同一の参照符号を付して説明を省略する。
【０１３９】
図２３は、本実施の形態における命令発行制御部６１１の構成を示すブロック図である。図２３に示されるように、命令発行制御部６１１は、マルチサイクル命令検出部６１３、命令無効化制御部６１４から構成される。
【０１４０】
マルチサイクル命令検出部６１３は、命令バッファ４０２−１〜４０２−３から命令コード４５１−１〜４５１−３および命令有効情報４５２−１〜４５２−３を受け、マルチサイクル命令検出デコーダ４２１−１〜４２１−３により複数配置可能なマルチサイクル命令を検出する。さらに、命令無効化制御部６１４へマルチサイクル命令検出信号４７２−１〜４７２−３を出力する。また、マルチサイクル命令検出信号４７２−１〜４７２−３を入力とする論理積回路４２２−１〜４２２−３によって２命令のマルチサイクル命令の有無を検出し、論理和回路４２３によって２命令以上の複数配置可能なマルチサイクル命令の有無を判定する。そして、その判定結果を命令無効化制御部６１４へ順次発行指示信号４６５として出力する。
【０１４１】
命令無効化制御部６１４は、マルチサイクル命令検出部６１３から順次発行指示信号４６５およびマルチサイクル命令検出信号４７２−１〜４７２−３を受け、マルチサイクル命令解読管理部４１２からカウンタ更新停止信号４６６を受ける。さらに、初期値“０”の２−ｂｉｔアップカウンタ４１７を起動する。そして、２−ｂｉｔアップカウンタ４１７は、順次発行指示信号４６５がアサートされている期間でかつカウンタ更新停止信号４６６がネゲートされているマシンサイクルにおいては、カウンタ値を更新する。
【０１４２】
比較器４１８−１〜４１８−３は、２−ｂｉｔアップカウンタ４１７からカウンタ値４６７を受け、それぞれの値“０”、“１”、“２”とカウンタ値４６７とを比較して、その結果４７０−１〜４７０−３を論理積回路４１９−１〜４１９−３へ出力する。
【０１４３】
論理積回路４１９−１〜４１９−３は、比較器４１８−１〜４１８−３から比較結果４７０−１〜４７０−３を受け、マルチサイクル命令検出部６１３から順次発行指示信号４６５を受け、比較結果４７０−１〜４７０−３と順次発行指示信号４６５との論理積をとり、その結果をサブ命令グループ無効化信号６７４−１〜６７４−３として無効化命令選択部６２４へ供給する。
【０１４４】
無効化命令選択部６２４は、図２４に示される真理値表に基づいて、マルチサイクル命令検出信号４７２−１〜４７２−３に従ってサブ命令グループ無効化信号６７４−１〜６７４−３の中から１つを選択して命令無効化信号４６８−１〜４６８−３として出力する。
【０１４５】
論理積回路６２５〜６２７および論理和回路６２８は、マルチサイクル命令が２命令の場合においてカウンタ値４６７が“０”のとき、マルチサイクル命令が３命令の場合においてカウンタ値４６７が“０”または“１”のとき、バッファ更新停止信号４５６をアサートするように構成されている。
【０１４６】
以上のように構成されたプロセッサについて、以下にその動作を説明する。
【０１４７】
図２５Ａ、図２５Ｂは、動作説明をするための命令プログラム例であり、図２６Ａ、図２６Ｂは、その動作説明図である。ここで、実施の形態６におけるプロセッサ６０１に用いられるプログラムは、マルチサイクル命令のうち、除算演算のみ命令バッファ４０２に複数配置される可能性があり、それ以外のマルチサイクル命令は命令バッファ４０２に複数配置されないように配置されているものとする。
【０１４８】
図２５Ａに示される命令の組合せ（ａｄｄ，ｍａｃ，ｌｄ）では、マルチサイクル命令検出部６１３は、複数配置可能なマルチサイクル命令を検出しないため、順次発行指示信号４６５をネゲートする。これによって、命令有効情報４６２−１〜４６２−３が同時にアサートされるため、命令コード４５１−１〜４５１−３が命令デコーダ４０５−１〜４０５−３で同時にデコードされる。
【０１４９】
これに伴い、制御信号選択部４０６は、これらの命令の組み合わせに対して、それぞれの命令に対応する命令実行制御信号４５７を同時に命令実行部４０４へ出力する。そして、図２６Ａに示されるように、命令実行部４０４は、これらの命令の組み合わせに対して、それぞれの命令を同時に実行する。
【０１５０】
図２５Ｂに示される命令の組合せ（ａｄｄ，ｄｉｖ，ｄｉｖ）では、マルチサイクル命令検出部６１３は、複数配置可能なマルチサイクル命令が２命令以上存在することを検出し、順次発行指示信号４６５をアサートする。このとき、マルチサイクル命令検出部６１３は、マルチサイクル命令検出信号４７２−２および４７２−３もアサートする。
【０１５１】
また、命令無効化制御部６１４は、マルチサイクル命令が２命令のため、カウンタ値４６７が“０”のときのみバッファ更新停止信号４５６をアサートする。
【０１５２】
無効化命令選択部６２４は、マルチサイクル命令検出信号４７２−１〜４７２−３がそれぞれ“０”、“１”、“１”のため、図２４に示されるように、命令無効化信号４６８−１〜４６８−３については、それぞれサブ命令グループ無効化信号６７４−１、６７４−１、６７４−２を選択して出力する。
【０１５３】
よって、図２６Ｂに示されるように、まず、ａｄｄ命令と第１のｄｉｖ命令が命令解読部４０３へ供給され、次に第２のｄｉｖ命令が命令解読部４０３へ供給されることとなる。なお、第１のｄｉｖ命令と同時に供給されたシングルサイクル命令であるａｄｄ命令は、第１のｄｉｖ命令と同時に命令解読部４０３へ供給されたのち、マルチサイクル命令解読管理部４１２によって、ｄｉｖ命令の最終マイクロオペレーションと同時に発行されるものとする。
【０１５４】
このように、プロセッサ６０１は、命令バッファ群４０２に複数のマルチサイクル命令が配置されている場合においても、命令実行部４０４の動作状態を知ることもなく、命令バッファ群４０２の内容のみの情報で構造ハザードを回避し、同時実行可能な最大数の命令を同時に供給することで、実行可能な最小のサイクル数で命令を実行することが可能となる。
【０１５５】
なお、本発明に係る実施の形態３のプロセッサにおいても、発行制御命令検出信号１５４−１〜１５４−３を命令無効化制御部３１３の入力として追加し、命令無効化制御部３１３を命令無効化制御部６１４と同様の構成にすることによって、同時実行可能な最大数の命令を同時に供給することで、実行可能な最小のサイクル数で命令を実行することが可能となる。
【０１５６】
なお、実施の形態６におけるプロセッサのように、実施の形態１におけるプロセッサにおいても、命令グループの命令を順次供給する場合に、構造ハザードを発生させる可能性のある命令が１命令以下のサブ命令グループに命令グループを分割し、構造ハザードを発生させる可能性のある命令数を最大値とするカウンタを用いて、カウンタの値毎に対応したサブ命令グループを順次供給するとしてもよい。
【０１５７】
（その他）
なお、本発明に係わるプロセッサは、フルカスタムＬＳＩ（Large Scale Integration）によって実現されるとしてもよい。また、ＡＳＩＣ（Application Specific Integrated Circuit）などのようなセミカスタムＬＳＩによって実現されるとしてもよい。また、ＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）などのようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
【０１５８】
さらに、本発明に係わるプロセッサを構成する１以上の機能を、これらのＬＳＩに形成する設計データは、ＶＨＤＬ（Very high speed integrated circuit Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣなどのようなハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）としてもよい。また、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件などを付加したマクロセル情報としてもよい。また、寸法、タイミングなどが規定されたマスクデータとしてもよい。
【０１５９】
さらに、設計データは、コンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み出され得るように、光学記録媒体（例えば、ＣＤ−ＲＯＭなど。）、磁気記録媒体（例えば、ハードディスクなど。）、光磁気記録媒体（例えば、ＭＯなど。）、半導体メモリ（例えば、メモリーカードなど。）などのようなコンピュータ読み取り可能な記録媒体に記録しておくとしてもよい。
【０１６０】
または、設計データは、ネットワークなどのような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアシステムに取得された設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。
【０１６１】
または、論理合成、配置、配線された設計データは、通電時にＦＰＧＡに転送され得るように、シリアルＲＯＭに記録しておくとしてもよい。そして、シリアルＲＯＭに記録された設計データは、通電時に、直接、ＦＰＧＡにダウンロードされるとしてもよい。
【産業上の利用可能性】
【０１６２】
本発明は、省面積化に伴い演算器の数を減らした場合、または高速化に伴いシングルサイクル命令をマルチサイクル命令に変更した場合などのようにアーキテクチャを変更した場合においても、変更前のアーキテクチャに最適化されたオブジェクトコードを改変することなく利用できるプロセッサなどとして、利用することができる。
【図面の簡単な説明】
【０１６３】
【図１】図１は、実施の形態１におけるプロセッサの構成を示すブロック図である。
【図２】図２は、実施の形態１における命令デコーダの構成を示すブロック図である。
【図３】図３は、実施の形態１における命令発行制御部の構成を示すブロック図である。
【図４Ａ】図４Ａは、実施の形態１を説明するためのプログラム例を示す図である。
【図４Ｂ】図４Ｂは、実施の形態１を説明するためのプログラム例を示す図である。
【図５Ａ】図５Ａは、実施の形態１を説明するための動作説明図である。
【図５Ｂ】図５Ｂは、実施の形態１を説明するための動作説明図である。
【図６】図６は、実施の形態２におけるプロセッサの構成を示すブロック図である。
【図７】図７は、実施の形態２における命令発行制御部の構成を示すブロック図である。
【図８Ａ】図８Ａは、実施の形態２を説明するためのプログラム例を示す図である。
【図８Ｂ】図８Ｂは、実施の形態２を説明するためのプログラム例を示す図である。
【図８Ｃ】図８Ｃは、実施の形態２を説明するためのプログラム例を示す図である。
【図９Ａ】図９Ａは、実施の形態２を説明するための動作説明図である。
【図９Ｂ】図９Ｂは、実施の形態２を説明するための動作説明図である。
【図９Ｃ】図９Ｃは、実施の形態２を説明するための動作説明図である。
【図１０】図１０は、実施の形態３におけるプロセッサの構成を示すブロック図である。
【図１１】図１１は、実施の形態３における命令発行制御部の構成を示すブロック図である。
【図１２Ａ】図１２Ａは、実施の形態３を説明するためのプログラム例を示す図である。
【図１２Ｂ】図１２Ｂは、実施の形態３を説明するためのプログラム例を示す図である。
【図１３Ａ】図１３Ａは、実施の形態３を説明するための動作説明図である。
【図１３Ｂ】図１３Ｂは、実施の形態３を説明するための動作説明図である。
【図１４】図１４は、実施の形態４におけるプロセッサの構成を示すブロック図である。
【図１５】図１５は、実施の形態４における命令発行制御部の構成を示すブロック図である。
【図１６Ａ】図１６Ａは、実施の形態４を説明するためのプログラム例を示す図である。
【図１６Ｂ】図１６Ｂは、実施の形態４を説明するためのプログラム例を示す図である。
【図１７Ａ】図１７Ａは、実施の形態４を説明するための動作説明図である。
【図１７Ｂ】図１７Ｂは、実施の形態４を説明するための動作説明図である。
【図１８】図１８は、実施の形態５におけるプロセッサの構成を示すブロック図である。
【図１９】図１９は、実施の形態５における命令発行制御部の構成を示すブロック図である。
【図２０Ａ】図２０Ａは、実施の形態５を説明するためのプログラム例を示す図である。
【図２０Ｂ】図２０Ｂは、実施の形態５を説明するためのプログラム例を示す図である。
【図２０Ｃ】図２０Ｃは、実施の形態５を説明するためのプログラム例を示す図である。
【図２１Ａ】図２１Ａは、実施の形態５を説明するための動作説明図である。
【図２１Ｂ】図２１Ｂは、実施の形態５を説明するための動作説明図である。
【図２１Ｃ】図２１Ｃは、実施の形態５を説明するための動作説明図である。
【図２２】図２２は、実施の形態６におけるプロセッサの構成を示すブロック図である。
【図２３】図２３は、実施の形態６における命令発行制御部の構成を示すブロック図である。
【図２４】図２４は、実施の形態６における無効化命令選択部の入出力関係の真理値表を示す図である。
【図２５Ａ】図２５Ａは、実施の形態６を説明するためのプログラム例を示す図である。
【図２５Ｂ】図２５Ｂは、実施の形態６を説明するためのプログラム例を示す図である。
【図２６Ａ】図２６Ａは、実施の形態６を説明するための動作説明図である。
【図２６Ｂ】図２６Ｂは、実施の形態６を説明するための動作説明図である。
【符号の説明】
【０１６４】
１０１，２０１，３０１，４０１，５０１，６０１  プロセッサ
１０２，４０２  命令バッファ
１０３，４０３  命令解読部
１０４，４０４  命令実行部
１０５，４０５  命令デコーダ
１０６，４０６  制御信号選択部
１０７，４０７  算術論理演算部
１０８，４０８  積和演算部
１０９，４０９  メモリアクセス制御部
１１０，４１０  レジスタファイル
１１１，２１１，３１１，４１１，５１１，６１１  命令発行制御部
１１２，２１２  構造ハザード検出部
１１３，３１３，４１４，６１４  命令無効化制御部
４１２  マルチサイクル命令解読管理部
４１３，５１３，６１３  マルチサイクル命令検出部
４２０  除算演算部
６２４  無効化命令選択部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2006134693.tif 000044
【図２】
2006134693.tif 000045
【図３】
2006134693.tif 000046
【図４Ａ】
2006134693.tif 000047
【図４Ｂ】
2006134693.tif 000048
【図５Ａ】
2006134693.tif 000049
【図５Ｂ】
2006134693.tif 000050
【図６】
2006134693.tif 000051
【図７】
2006134693.tif 000052
【図８Ａ】
2006134693.tif 000053
【図８Ｂ】
2006134693.tif 000054
【図８Ｃ】
2006134693.tif 000055
【図９Ａ】
2006134693.tif 000056
【図９Ｂ】
2006134693.tif 000057
【図９Ｃ】
2006134693.tif 000058
【図１０】
2006134693.tif 000059
【図１１】
2006134693.tif 000060
【図１２Ａ】
2006134693.tif 000061
【図１２Ｂ】
2006134693.tif 000062
【図１３Ａ】
2006134693.tif 000063
【図１３Ｂ】
2006134693.tif 000064
【図１４】
2006134693.tif 000065
【図１５】
2006134693.tif 000066
【図１６Ａ】
2006134693.tif 000067
【図１６Ｂ】
2006134693.tif 000068
【図１７Ａ】
2006134693.tif 000069
【図１７Ｂ】
2006134693.tif 000070
【図１８】
2006134693.tif 000071
【図１９】
2006134693.tif 000072
【図２０Ａ】
2006134693.tif 000073
【図２０Ｂ】
2006134693.tif 000074
【図２０Ｃ】
2006134693.tif 000075
【図２１Ａ】
2006134693.tif 000076
【図２１Ｂ】
2006134693.tif 000077
【図２１Ｃ】
2006134693.tif 000078
【図２２】
2006134693.tif 000079
【図２３】
2006134693.tif 000080
【図２４】
2006134693.tif 000081
【図２５Ａ】
2006134693.tif 000082
【図２５Ｂ】
2006134693.tif 000083
【図２６Ａ】
2006134693.tif 000084
【図２６Ｂ】
2006134693.tif 000085
【国際調査報告】
2006134693.tif 000086
2006134693.tif 000087
2006134693.tif 000088
2006134693.tif 000089