(57)【特許請求の範囲】
【請求項１】
特定用途演算命令としての、機能仕様を規定しない演算命令の処理が可能な制御部と、
パイプライン構成に対応可能で、かつ応用分野ごとに前記特定用途演算命令の演算をおこなうように設計可能な特定用途向け演算器を設け、
プロセッサコア内に、前記特定用途演算命令が発行されてから後続の同じ命令を発行可能になるまでのサイクル数が、前記特定用途向け演算器の命令発行から結果が利用可能になるまでのサイクル数と同じ場合と、後続の同じ命令を毎サイクル発行可能である場合とを切り替えるためのフラグを設け、前記フラグの切り替えによって命令の発行を制御するようになっていることを特徴とする情報処理装置。
【請求項２】
前記特定用途向け演算器をＩＰとして組み込むようにしたことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御部および前記特定用途向け演算器はプロセッサコア内に設けられていることを特徴とする請求項１または２に記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置に関し、特に特定用途に特化した演算機能を持つ命令を搭載した情報処理装置に関する。
【０００２】
特定分野のアプリケーションでは、その用途に特化した特殊な演算処理が存在することがある。その場合、演算処理を効率よくおこなうため、特定用途に特化した演算機能を持つ命令（以下、特定用途演算命令とする）を搭載した情報処理装置が使用される。しかし、特定用途演算命令は応用分野ごとに異なる。そのため、そのような特定用途向けの特殊な演算処理は汎用性に乏しく、応用分野が異なると無用となる場合が多い。
【０００３】
【従来の技術】
種々の応用分野への適用を考慮すると、種々の応用分野の特定用途演算命令をすべて備えたプロセッサを開発することが考えられる。しかし、そのようなプロセッサの開発は、命令数の増大やプロセッサの構造の複雑化などを招き、回路規模の増大、消費電力の増加およびチップ単価の上昇等のデメリットをもたらすことになる。
【０００４】
そこで、従来は、通常の演算命令をおこなうプロセッサの外部に、独自の命令制御構造を持つコプロセッサ等の付加演算処理装置を接続し、それによって、特定用途演算命令を付加するようにしている。このようにすれば、プロセッサ自体を再設計する必要がない。
【０００５】
図５は、従来のプロセッサコアの構成を示すブロック図である。従来、プロセッサコアは、メモリ部１１、命令フェッチ制御部１２、命令バッファ部１３、命令デコード部１４、命令発行制御部１５、スコアボード部１６、命令実行制御部１７、ロードストアユニット１８、実行部１９、分岐ユニット２０および汎用レジスタ部２１から構成される。
【０００６】
図６および図７は、従来の命令実行制御部１７の構成および動作を説明するための図である。図６および図７においては、同時に発行され得る命令が複数存在した場合に、そのうちの１命令分の動作に特化した部分が抜き出されて示されている。また、命令カテゴリＡ１に属するパイプライン段数２段の命令群と、パイプライン段数４段に相当する命令群Ｂ２の結果をレジスタに書き込むための制御、およびスコアボードのクリア制御に関する特徴的な部分について示されている。
【０００７】
まず、図６について説明する。命令実行制御部１７は、命令デコード部１４からオペレーションコード（オペレーションコードの有効フラグを含む）およびディスティネーションレジスタ番号を受け取る。また、命令実行制御部１７は、命令発行制御部１５から命令のリリースフラグを受け取る。
【０００８】
デコーダ２２は、オペレーションコードおよびその有効フラグを受け取り、どの命令群に属するかを判定して、有効となるフラグを出力する。アンド回路２３，２４は、デコーダ２２から出力された有効フラグとリリースフラグとのアンド論理をとり、各パイプラインレジスタの有効フラグ（バリッドＡ１／Ｂ１）２５，２６に結果を書き込む。
【０００９】
同時に、パイプラインレジスタの第１ステージ２７にディスティネーションレジスタ番号が格納される。これらの情報は１サイクルについて１段ずつつぎのパイプラインレジスタ、すなわちバリッドＡ２／Ｂ２の各有効フラグ２８，２９および第２ステージ３０、バリッドＢ３の有効フラグ３１および第３ステージ３２、バリッドＢ４の有効フラグ３３および第３ステージ３４に進む。
【００１０】
パイプラインレジスタの最終段において、オア回路３５は、各々の命令群の有効フラグのオア論理をとり、スコアボード部１６にスコアボードクリア要求信号を出力し、またレジスタ部２１へ書き込み要求信号を出力する。それと同時に、有効フラグの最終段に相当するパイプラインレジスタのディステイネーションレジスタの値は、バリッドＡ２またはバリッドＢ４の有効フラグ２８，３３によって選択される。
【００１１】
つまり、アンド回路３６はバリッドＡ２の有効フラグ２８とパイプラインレジスタの第２ステージ３０の値とのアンド論理を出力する。また、アンド回路３７はバリッドＢ４の有効フラグ３３とパイプラインレジスタの第４ステージ３４の値とのアンド論理を出力する。オア回路３８は、それらアンド回路３６，３７の出力のオア論理をとり、スコアボード部１６およびレジスタ部２１にディスティネーションレジスタ番号として出力する。
【００１２】
パイプラインレジスタの出力ポートを共有している場合、これらの命令は同時に書き込むことはできない。したがって、その場合には、命令発行制御部１５に、出力ポートを使用するタイミングについての情報（サプレスＡ）が通知される。それによって、命令発行制御部１５は、出力ステージが競合しないための制御をおこない、書き込みポートの競合を防ぐ。この出力ポート使用タイミングの情報（サプレスＡ）として、バリッドＢ２の有効フラグ２９が用いられる。つまり、命令群Ｂが第２ステージの時に、命令群Ａの発行を抑止する制御信号（サプレスＡ）が発行される。
【００１３】
図７はリソースを一定期間占有するタイプの通常命令の制御回路構成例である。図７に示す構成は、図６に示す構成に、加算器４１、２個のセレクタ４２，４３、カウンタ４４、３個の比較器４５，４６，４７、バリッドｎの有効フラグ４８、パイプラインレジスタの第ｎステージ４９、６個のアンド回路５０，５１，５２，５３，５４，５５および３個のオア回路５６，５７，５８をさらに設けた構成となっている。
【００１４】
アンド回路５０は、デコーダ２２の出力とリリースフラグとのアンド論理を出力する。カウンタ４４は、カウンタ４４の出力値を加算器４１により１ずつインクリメントした値を保持する。カウンタ４４の出力値は、第１比較器４５、第２比較器４６および第３比較器４７によりそれぞれ「ｎ」、「ｎ−２」および「ｎ−４」と比較される。第１比較器４５の比較結果は、アンド回路５１のローアクティブの入力端子に入力される。
【００１５】
アンド回路５１の出力は、オア回路５６とオア回路５７に入力される。オア回路５６は、アンド回路５０の出力とアンド回路５１の出力とのオア論理を第１セレクタ４２に出力する。第１セレクタ４２は、その入力値に応じてカウンタ４４をリセットする。オア回路５７は、アンド回路５０の出力とアンド回路５１の出力とのオア論理をとり、その結果をバリッドｎの有効フラグ４８に書き込む。バリッドｎの有効フラグ４８の出力はアンド回路５２，５３，５４に入力されるとともに、アンド回路５１のもう一方の入力端子に入力される。
【００１６】
アンド回路５２、アンド回路５３およびアンド回路５４のそれぞれもう一方の入力端子には、第１比較器４５、第２比較器４６および第３比較器４７の比較結果が入力される。アンド回路５２の出力は、オア回路３５に入力される。オア回路３５は、各々の命令群の有効フラグおよびアンド回路５２の出力のオア論理をとり、スコアボード部１６にスコアボードクリア要求信号を出力し、またレジスタ部２１へ書き込み要求信号を出力する。
【００１７】
オア回路５８は、バリッドＢ２の有効フラグ２９とアンド回路５３の出力のオア論理をとり、命令群Ａの発行を抑止する制御信号（サプレスＡ）を発行する。アンド回路５４の出力は、命令群Ｂの発行を抑止する制御信号（サプレスＢ）となる。
【００１８】
また、第２セレクタ４３は、パイプラインレジスタの第ｎステージ４９に格納されたディスティネーションレジスタ番号と、命令デコード部１４から受け取ったディスティネーションレジスタ番号のいずれかを選択する。その選択は、アンド回路５０の出力に応じておこなわれ、選択された番号はパイプラインレジスタの第ｎステージ４９に格納される。
【００１９】
アンド回路５５は、パイプラインレジスタの第ｎステージ４９に格納されたディスティネーションレジスタ番号およびアンド回路５２の出力のアンド論理をとる。オア回路３８は、アンド回路５５，３６，３７の出力のオア論理をとり、スコアボード部１６およびレジスタ部２１にディスティネーションレジスタ番号として出力する。
【００２０】
このように構成されていることによって、カウンタ４４は、命令の結果が出力されるサイクル数まで、命令の有効フラグおよびディスティネーションレジスタを保持する。カウンタ４４が規定サイクル数に達すると、ディスティネーションレジスタ番号とレジスタの使用フラグクリア信号がスコアボード部１６に出力される、また、ディスティネーションレジスタ番号と書き込み要求信号がレジスタ部２１に出力される。
【００２１】
また、後続の同じ演算器を占有する命令群が演算器を使用可能になる規定サイクル数で演算器の使用フラグクリア信号が出力される。命令発行制御部１５への命令発行抑止信号（サプレスＡおよびサプレスＢ）は、出力ポートの使用タイミングと、後続命令群の実行サイクル数の差に基づいて出力される。
【００２２】
【発明が解決しようとする課題】
しかしながら、上述した従来技術においてコプロセッサ等の付加演算処理装置を接続する場合には、プロセッサからの外部Ｉ／Ｏによる入出力のオーバーヘッドが存在するため、演算パイプライン段数が数段程度の特定用途演算命令を通常の命令と組み合わせて多用すると、性能の低下を招き、通常の命令の組合せで実現した場合と同じ程度のコストがかかるという欠点がある。
【００２３】
また、特定用途演算命令のパイプライン構成は応用分野によって種々変わるため、そのパイプラインをプロセッサに組み込む場合には命令発行制御回路の見直しが必要となり、プロセッサの制御部を再設計する必要がある。そのため、ＡＳＩＣ（Aplication Specific Integrated Circuit）のＩＰ(Intellectual Property）として活用する場合には、プロセッサの開発費用や開発期間の増大という不都合を招く。
【００２４】
本発明は、上記問題点に鑑みてなされたものであって、プロセッサコアの制御部の基本設計を変更することなく、特定用途向け演算器を容易に変更することが可能な情報処理装置を提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記目的を達成するため、本発明にかかる情報処理装置は、プロセッサコアの制御部に、特定用途演算命令として、機能仕様を規定しない演算命令を設けるとともに、プロセッサコア内にその特定用途演算命令の演算をおこなう特定用途向け演算器（特殊用途命令演算器）を設けたものである。その特定用途向け演算器は、柔軟なパイプライン構成に対応可能な構成とし、別途応用分野ごとに設計される。特定用途演算命令は、汎用レジスタからのデータを通常の命令と同じ方式で特定用途向け演算器に供給される。そして、演算結果は通常命令の演算器と同じ方式でレジスタに書き込まれる。
【００２６】
また、本発明にかかる情報処理装置は、プロセッサコア内に、特定用途向け演算器の命令発行から結果が利用可能になるまでのレイテンシ（以下、命令結果レイテンシとする)を規定するレジスタ（命令結果レイテンシレジスタ)を備えている。さらに、プロセッサコア内に、特定用途向け演算器の命令発行の間隔制約に関するレイテンシ（以下、命令発行レイテンシとする）を規定するレジスタ（命令発行レイテンシレジスタ）を備えている。
【００２７】
この発明によれば、プロセッサコアの制御部に、特定用途演算命令として、機能仕様を規定しない演算命令を設けるとともに、プロセッサコア内に特定用途向け演算器を設け、その特定用途向け演算器を別途応用分野ごとに設計する構成となっているため、特定用途向け演算器を応用分野ごとに適した設計とすることによって、プロセッサコアの制御部の基本設計を変更することなく、容易かつ低コストで特定用途向けの情報処理装置の設計をおこなうことができる。
【００２８】
また、命令結果レイテンシを規定するレジスタの出力を利用して、出力ポートの競合が起こるタイミングでの命令発行を防ぐことにより、レイテンシの違う命令間で、後続の命令との間で出力ポートの競合が発生するのを回避することができる。また、命令発行レイテンシを規定するレジスタを利用して、特定用途演算命令が発行されてから同じ命令を発行可能になるまでのサイクル数を規定することにより、先行の命令とのリソースの競合を防ぐことができる。
【００２９】
これらの一連の制御は、同時に発行可能な命令の各機能ユニットについて同様な回路を設けることによって、容易に複数命令の同時発行が可能となる。また、応用分野によっては、演算器が未実装のまま出荷される場合もあり得る。この場合には、その命令が発行可能であるかどうかのフラグレジスタを実装することにより、未実装命令として例外を発生することで、容易に回避可能である。
【００３０】
【発明の実施の形態】
以下に、本発明の実施の形態について図１〜図４を参照しつつ詳細に説明する。図１は、本発明にかかるプロセッサコアの構成の一例を示すブロック図である。このプロセッサコアは、メモリ部６１、命令フェッチ制御部６２、命令バッファ部６３、命令デコード部６４、命令発行制御部６５、スコアボード部６６、命令実行制御部６７、ロードストアユニット６８、実行部６９、分岐ユニット７０、汎用レジスタ部７１、命令結果レイテンシレジスタ７２、特殊用途命令演算器７３および演算器出力セレクタ７４を備えている。
【００３１】
メモリ部６１は、外部メモリまたはチップ内部に存在するメモリ回路を含む。また、メモリ部６１は、メモリアクセスのためのバスおよびその制御回路、並びにキャッシュ回路等を含む。
【００３２】
命令フェッチ制御部６２は、分岐ユニット７０からの分岐アドレス、または内部に持つフェッチＰＣのアドレスに基づいて、つぎにフェッチすべきアドレスを決定する。命令フェッチ制御部６２は、メモリ部６１につぎにフェッチする命令のアドレスを供給し、メモリ上の命令を受け取り、命令バッファ部６３につぎに実行する命令を供給する。
【００３３】
命令バッファ部６３は、命令フェッチ制御と同期して動作し、命令発行前の命令を一時的に保持するためのパイプラインレジスタである。命令デコード部６４は、命令バッファ部６３に保持された命令をデコードし、演算器および演算器制御部に必要な情報を通知するための回路である。その情報には、オペレーションコード、ソースレジスタ番号、ディスティネーションレジスタ番号、およびそれらの情報が有効であるか否かの情報が含まれる。命令デコード部６４には、特定用途演算命令のオペレーションコードが定義されている。この特定用途演算命令のオペレーションコードは通常命令と同じ経路で各ブロックへ通知される。
【００３４】
また、命令発行制御部６５は、命令デコード部６４から、オペレーションコード、ソースレジスタ番号、ディスティネーションレジスタ番号、およびそれらの情報の有効フラグを受け取る。また、命令発行制御部６５は、スコアボード部６６から現在使用しているレジスタ番号およびリソースの情報を受け取る。また、命令発行制御部６５は、命令実行制御部６７から出力ポート競合制御情報を受け取り、命令バッファ部１３に格納されている命令が発行可能であるか否かを判断する。
【００３５】
命令の発行が可能である場合、命令発行制御部６５は、レジスタ部７１にソースレジスタを読み出すためのソースレジスタ番号を供給し、またスコアボード部６６に発行される命令のディスティネーションレジスタの使用フラグまたは使用演算器リソースのセットの指定をおこなう。同時に、命令発行制御部６５は、命令フェッチ制御部６２、各機能ユニット６８，６９，７３，７０および命令実行制御部６７に命令デコード部６４の命令がリリース可能であることを通知する。また、命令発行制御部６５は、命令フェッチ制御部６２から、命令バッファ部６３に格納されている命令のＰＣ値を受け取り、それを分岐ユニット７０に供給する。
【００３６】
また、スコアボード部６６は、汎用レジスタ部７１の各レジスタ番号が使用中であるか否かのフラグ、および１サイクル以上占有が必要なリソースが使用中であるか否かのフラグを保持する。また、スコアボード部６６は、命令発行制御部６５からの各フラグのセット要求、または命令実行制御部６７からのフラグクリア要求に対して、フラグのセットまたはクリアをおこなう回路を有する。フラグの結果は、命令発行制御部６５に通知され、命令発行制御情報として使用される。
【００３７】
また、スコアボード部６６には、命令発行レイテンシが２以上の場合に後続の特定用途演算命令がリソース競合を起こさないようにするための特殊用途向け演算器使用フラグが設けられる。そして、通常命令の演算器を占有する命令と同様に、スコアボード部６６は、命令発行制御部６５からフラグのセット要求を受け取り、また命令実行制御部６７からフラグクリア要求を受け取る。
【００３８】
命令実行制御部６７は、命令デコード部６４からオペレーションコードとディスティネーションレジスタ番号を受け取る。また、命令実行制御部６７は、命令発行制御部６５から命令の発行フラグを受け取り、実行部６９での命令の実行と同期して、命令の有効フラグとディスティネーションレジスタ番号を保持する。また、命令実行制御部６７は、リソースを占有する命令に対して、出力可能になるまでのカウンタを有し、別途命令の有効フラグおよびディスティネーションレジスタ番号を保持する。
【００３９】
これらの命令の有効フラグに基づいて、命令実行制御部６７は、後続命令の発行に対する出力ポートの競合制御信号を生成し、命令発行制御部６５に通知する。命令実行制御部６７は、実行部６９が結果を出力するタイミングで、スコアボード部６６にディスティネーションレジスタ番号とレジスタ使用フラグクリア要求を出力する。また、命令実行制御部６７は、レジスタ部７１に対し、ディスティネーションレジスタ番号と書き込み要求信号を出力する。また、命令実行制御部６７は、後続の同じ演算器を占有する命令が演算器を使用可能になるタイミングで、リソース使用フラグのクリア要求信号を出力する。
【００４０】
ロードストアユニット６８は、命令デコード部６４からオペレーションコードおよびディスティネーションレジスタ番号と、それらの有効フラグを受け取る。また、ロードストアユニット６８は、汎用レジスタ部７１からストアデータおよびソースデータを受け取る。また、ロードストアユニット６８は、命令発行制御部６５から命令のリリース情報を受け取る。
【００４１】
ロードストアユニット６８は、メモリ部６１にアドレスおよびオペレーションコードを供給するとともに、メモリ部６１にストアデータを供給する。また、ロードストアユニット６８は、メモリ部６１からロードデータを受け取る。そして、ロードが成功すると、スコアボード部６６にディスティネーションレジスタ番号の使用中フラグクリア要求を出力する。ロードデータは、ロードのディスティネーションレジスタ番号と書き込み要求信号とともに汎用レジスタ部７１に通知され、汎用レジスタ部７１に書き込まれる。
【００４２】
実行部６９は命令デコード部６４からオペレーションコードを受け取る。また、実行部６９は汎用レジスタ部７１からソースデータを受け取る。また、実行部６９は命令発行制御部６５から命令のリリース情報を受け取る。実行部６９では、オペレーションコードにしたがった演算器が使用される。その演算結果は、固定サイクル数後に出力される。演算結果は、命令実行制御部６７から出力されるディスティネーションレジスタ番号と同期して、レジスタ部７１に書き込まれる。
【００４３】
分岐ユニット７０は命令デコード部６４からオペレーションコードを受け取る。また、分岐ユニット７０は汎用レジスタ部７１からソースデータを受け取る。また、分岐ユニット７０は命令発行制御部６５からＰＣと命令のリリース情報を受け取る。分岐ユニット７０は、分岐命令を処理して、分岐の有効フラグと分岐時のつぎのＰＣを命令フェッチ制御部６２に通知する。
【００４４】
汎用レジスタ部７１は、命令発行制御部６５からソースレジスタ番号を受け取り、各機能ユニット６８，６９，７３，７０にそれぞれソースデータを送る。また、汎用レジスタ部７１は、ロード時のディスティネーションレジスタ番号とロードデータを受け取り、レジスタに書き込む。また、汎用レジスタ部７１は、命令実行制御部６７からディスティネーションレジスタ番号を受け取るとともに、実行部６９の出力結果を書き込む。
【００４５】
命令結果レイテンシレジスタ７２は、特定用途演算命令を実行した際に、何サイクル後に結果が出るかということを規定するための書き換え可能な特殊用途レジスタである。命令結果レイテンシレジスタ７２の出力は、命令実行制御部６７により受け取られる。命令結果レイテンシレジスタ７２の出力は、特定用途演算命令の実行完了のタイミングと、結果のレジスタへの書き込み制御、スコアボード部６６および命令発行制御部６５による、レジスタ依存のある後続命令の発行制御に使用される。
【００４６】
特殊用途命令演算器７３は特定用途向けの演算器であり、その仕様は応用分野ごとに異なる。また、特殊用途命令演算器７３のパイプライン構成は、組み込む演算器により異なる。ただし、必要条件として、結果が出るまでのパイプラインサイクルは組み込む演算器の種類ごとに固定であることと、結果の出力サイクルにおいて他の演算器の出力遅延特性等と合わせることという制約がある。
【００４７】
演算器出力セレクタ７４は、通常演算をおこなう演算器である実行部６９の出力と特殊用途命令演算器７３の出力とを切り替えるセレクタである。その切り替えは、命令実行制御部６７の出力に基づいておこなわれる。
【００４８】
図２は、本発明にかかるプロセッサコアの構成の他の例を示すブロック図である。図２に示すプロセッサコアは、図１に示す構成に命令発行レイテンシレジスタ７５を追加した構成となっている。
【００４９】
命令発行レイテンシレジスタ７５は、演算器リソースを占有するタイプの特定用途演算命令のために、後続の同じ特定用途演算命令が発行可能になるまでのサイクル数を規定するレジスタであり、書き換え可能な構成となっている。
【００５０】
なお、命令発行レイテンシレジスタ７５の代わりに、命令発行レイテンシが１、すなわち毎サイクル発行可能である場合と、結果が出るまでリソースを占有するために命令発行レイテンシが命令結果レイテンシの値と同じになる場合とを切り替えるためのフラグを設けた構成としてもよい。
【００５１】
このようにすれば、後続の同じ命令を発行することができるようになるまでのサイクル数が１の場合と、結果を利用することができるようになるまでのサイクル数と同じ場合とを切り替える制御を実現することができる。また、命令発行レイテンシレジスタ７５および命令発行レイテンシレジスタ７５の代わりのフラグを用意しない場合は、これらの制御方式のいずれか一方が選択されているとみなすことができる。
【００５２】
図３は、パイプラインに同期して毎サイクル発行可能な場合の命令実行制御部６７の構成および動作を説明するための図である。図３においては、同時に発行され得る命令が複数存在した場合に、そのうちの１命令分の動作に特化した部分が抜き出されて示されている（図４も同じ）。また、パイプライン段数２段の通常演算命令群Ａ、パイプライン段数４段の通常演算命令群Ｂおよびパイプライン段数４段の特殊用途演算命令群ＭＣの結果をレジスタに書き込むための制御、およびスコアボードのクリア制御に関する特徴的な部分が示されている。なお、本発明は、上述したパイプライン段数に制限されるものではない。
【００５３】
命令実行制御部６７は、２個のデコーダ８１，８２、命令群Ａに関するパイプラインレジスタの有効フラグ（バリッドＡ１，Ａ２）８３，８４、命令群Ｂに関するパイプラインレジスタの有効フラグ（バリッドＢ１〜Ｂ４）８５，８６，８７，８８、命令群ＭＣに関するパイプラインレジスタの有効フラグ（バリッドＭＣ１〜ＭＣ４）８９，９０，９１，９２、パイプラインレジスタの第１〜第４のステージ９３，９４，９５，９６、１３個のアンド回路９７〜１０９、および５個のオア回路１１０〜１１４を備えている。
【００５４】
命令実行制御部６７は、命令デコード部６４からオペレーションコードおよびその有効フラグと、ディスティネーションレジスタ番号を受け取る。また、命令実行制御部６７は命令発行制御部６５から命令のリリースフラグを受け取る。また、命令実行制御部６７は、命令結果レイテンシレジスタ７２から命令結果レイテンシを受け取る。
【００５５】
第１デコーダ８１はオペレーションコードおよびその有効フラグを受け取る。アンド回路９７，９８，９９は、それぞれ、第１デコーダ８１から出力された有効フラグとリリースフラグとのアンド論理をとる。バリッドＡ１，Ｂ１，ＭＣ１の各有効フラグ８３，８５，８９は、それぞれアンド回路９７，９８，９９の出力値を格納する。同時に、パイプラインレジスタの第１ステージ９３にディスティネーションレジスタ番号が格納される。これらの情報は１サイクルについて１段ずつつぎのパイプラインレジスタに進む。
【００５６】
また、第２デコーダ８２は命令結果レイテンシを受け取る。アンド回路１００は第２デコーダ８２の出力値とバリッドＭＣ４の有効フラグ９２とのアンド論理をとる。アンド回路１０１は第２デコーダ８２の出力値とバリッドＭＣ３の有効フラグ９１とのアンド論理をとる。アンド回路１０２は第２デコーダ８２の出力値とバリッドＭＣ２の有効フラグ９０とのアンド論理をとる。アンド回路１０３は第２デコーダ８２の出力値とバリッドＭＣ１の有効フラグ８９とのアンド論理をとる。
【００５７】
オア回路１１２は、アンド回路１００，１０１，１０２，１０３の出力のオア論理をとり、演算器出力セレクタ７４に制御信号（出力選択信号）を出力する。また、オア回路１１３は、バリッドＡ２の有効フラグ８４とバリッドＢ４の有効フラグ８８と出力選択信号とのオア論理をとり、スコアボード部６６にスコアボードクリア要求信号を出力し、またレジスタ部７１へ書き込み要求信号を出力する。
【００５８】
アンド回路１０４は第２デコーダ８２の出力値とバリッドＭＣ４の有効フラグ９２とのアンド論理をとる。オア回路１１０は、アンド回路１０４とバリッドＢ４の有効フラグ８８のオア論理をとる。アンド回路１０５はオア回路１１０の出力とパイプラインレジスタの第４ステージ９６とのアンド論理をとる。アンド回路１０６は第２デコーダ８２の出力値とバリッドＭＣ３の有効フラグ９１とパイプラインレジスタの第３ステージ９５とのアンド論理をとる。
【００５９】
アンド回路１０７は第２デコーダ８２の出力値とバリッドＭＣ２の有効フラグ９０とのアンド論理をとる。オア回路１１１は、アンド回路１０７とバリッドＡ２の有効フラグ８４のオア論理をとる。アンド回路１０８はオア回路１１１の出力とパイプラインレジスタの第２ステージ９４とのアンド論理をとる。アンド回路１０９は第２デコーダ８２の出力値とバリッドＭＣ１の有効フラグ８９とパイプラインレジスタの第１ステージ９３とのアンド論理をとる。オア回路１１４は、アンド回路１０５，１０６，１０８，１０９の出力のオア論理をとり、スコアボード部６６およびレジスタ部７１にディスティネーションレジスタ番号として出力する。
【００６０】
このように構成されていることによって、命令結果レイテンシレジスタ７２により、パイプラインレジスタ中のディスティネーションレジスタ番号および命令の有効フラグを選択することができる。そして、従来と同様に、命令結果レイテンシレジスタ７２に対し、出力ポートを同時に使用するタイミングを有効フラグから選択し、各命令群の発行を抑止する制御信号を命令発行制御部６５に通知するようにすることによって、特定用途演算命令との出力ポートの競合を抑止することができる。
【００６１】
図４は、リソースを占有する場合の命令実行制御部６７の構成および動作を説明するための図である。図４においては、パイプライン段数２段の命令群Ａおよびパイプライン段数４段の命令群Ｂの結果をレジスタに書き込むための制御、およびスコアボードのクリア制御に関する特徴的な部分が示されている。なお、本発明は、上述したパイプライン段数に制限されるものではない。
【００６２】
命令実行制御部６７は、デコーダ８１、バリッドＡ１，Ａ２の有効フラグ８３，８４、バリッドＢ１〜Ｂ４の有効フラグ８５，８６，８７，８８、パイプラインレジスタの第１〜第４ステージ９３，９４，９５，９６、加算器１４１、２個のセレクタ１４２，１４３、カウンタ１４４、比較器１４５、バリッドｎの有効フラグ１４８、パイプラインレジスタの第ｎステージ１４９、８個のアンド回路９７，９８，１３６，１３７，１５０，１５１，１５２，１５５および４個のオア回路１３５，１３８，１５６，１５７を備えている。
【００６３】
デコーダ８１はオペレーションコードおよびその有効フラグを受け取る。アンド回路９７，９８，１５０は、それぞれ、デコーダ８１から出力された有効フラグとリリースフラグとのアンド論理をとる。バリッドＡ１，Ｂ１の各有効フラグ８３，８５は、それぞれアンド回路９７，９８の出力値を格納する。同時に、パイプラインレジスタの第１ステージ９３にディスティネーションレジスタ番号が格納される。これらの情報は１サイクルについて１段ずつつぎのパイプラインレジスタに進む。
【００６４】
カウンタ１４４は、カウンタ１４４の出力値を加算器１４１により１ずつインクリメントした値を保持する。カウンタ１４４の出力値は、比較器１４５により、命令発行レイテンシレジスタ７５に格納された値と比較される。比較器１４５の比較結果は、アンド回路１５１のローアクティブの入力端子に入力される。
【００６５】
アンド回路１５１の出力は、オア回路１５６とオア回路１５７に入力される。オア回路１５６は、アンド回路１５０の出力とアンド回路１５１の出力とのオア論理を第１セレクタ１４２に出力する。第１セレクタ１４２は、その入力値に応じてカウンタ１４４をリセットする。オア回路１５７は、アンド回路１５０の出力とアンド回路１５１の出力とのオア論理をとり、その結果をバリッドｎの有効フラグ１４８に書き込む。バリッドｎの有効フラグ１４８の出力はアンド回路１５２に入力されるとともに、アンド回路１５１のもう一方の入力端子に入力される。
【００６６】
アンド回路１５２のもう一方の入力端子には、比較器１４５の比較結果が入力される。アンド回路１５２の出力は、オア回路１３５に入力される。オア回路１３５は、各々の命令群の有効フラグおよびアンド回路１５２の出力のオア論理をとり、スコアボード部６６にスコアボードクリア要求信号を出力し、またレジスタ部７１へ書き込み要求信号を出力する。
【００６７】
また、第２セレクタ１４３は、パイプラインレジスタの第ｎステージ１４９に格納されたディスティネーションレジスタ番号と、命令デコード部６４から受け取ったディスティネーションレジスタ番号のいずれかを選択する。その選択は、アンド回路１５０の出力に応じておこなわれ、選択された番号はパイプラインレジスタの第ｎステージ１４９に格納される。アンド回路１５５は、パイプラインレジスタの第ｎステージ１４９に格納されたディスティネーションレジスタ番号およびアンド回路１５２の出力のアンド論理をとる。
【００６８】
アンド回路１３６は、パイプラインレジスタの第２ステージ９４に格納されたディスティネーションレジスタ番号およびバリッドＡ２の有効フラグ８４のアンド論理をとる。アンド回路１３７は、パイプラインレジスタの第４ステージ９６に格納されたディスティネーションレジスタ番号およびバリッドＢ４の有効フラグ８８のアンド論理をとる。オア回路１３８は、アンド回路１５５，１３６，１３７の出力のオア論理をとり、スコアボード部６６およびレジスタ部７１にディスティネーションレジスタ番号として出力する。
【００６９】
このように構成されていることによって、カウンタ１４４は、命令発行レイテンシレジスタ７５に格納されているサイクル数になるまで、命令の有効フラグおよびディスティネーションレジスタを保持する。カウンタ１４４が、命令発行レイテンシレジスタ７５に格納されているサイクル数に達すると、通常命令と同様の制御がおこなわれる。
【００７０】
なお、命令実行制御部６７は命令発行制御部６５に命令発行抑止信号（サプレスＡおよびサプレスＢ）を出力する構成となっているが、図４においては、それら命令発行抑止信号（サプレスＡおよびサプレスＢ）を出力するための回路部分は省略されている。
【００７１】
上述した実施の形態によれば、プロセッサコアの制御部に、特定用途演算命令として、機能仕様を規定しない演算命令が設けられているとともに、プロセッサコア内にその特定用途演算命令の演算をおこなう特殊用途命令演算器７３が設けられており、その特殊用途命令演算器７３が別途応用分野ごとに設計されるため、特殊用途命令演算器７３を応用分野ごとに適した設計とすることによって、プロセッサコアの制御部の基本設計を変更することなく、容易かつ低コストで特定用途向けの情報処理装置の設計をおこなうことができる。
【００７２】
また、上述した実施の形態によれば、命令結果レイテンシレジスタ７２の出力を利用して、出力ポートの競合が起こるタイミングでの命令発行を防ぐことにより、レイテンシの違う命令間で、後続の命令との間で出力ポートの競合が発生するのを回避することができる。また、命令発行レイテンシレジスタ７５を利用して、特定用途演算命令が発行されてから同じ命令を発行可能になるまでのサイクル数を規定することにより、先行の命令とのリソースの競合を防ぐことができる。
【００７３】
以上において本発明は、上述した実施の形態に限らず、種々設計変更可能であるし、またパイプラインの段数は２段や４段に限らない。
【００７４】
【発明の効果】
本発明によれば、情報処理装置は、そのプロセッサコアの制御部に、特定用途演算命令として、機能仕様を規定しない演算命令が設けられるとともに、プロセッサコア内に特定用途向け演算器を有し、その特定用途向け演算器を別途応用分野ごとに設計する構成となっているため、特定用途向け演算器を応用分野ごとに適した設計とすることによって、プロセッサコアの制御部の基本設計を変更することなく、容易かつ低コストで特定用途向けの情報処理装置の設計をおこなうことができる。
【図面の簡単な説明】
【図１】本発明にかかるプロセッサコアの構成の一例を示すブロック図である。
【図２】本発明にかかるプロセッサコアの構成の他の例を示すブロック図である。
【図３】実施の形態の命令実行制御部の構成および動作を説明するための図である。
【図４】実施の形態の命令実行制御部の構成および動作を説明するための図である。
【図５】従来のプロセッサコアの構成を示すブロック図である。
【図６】従来の命令実行制御部の構成および動作を説明するための図である。
【図７】従来の命令実行制御部の構成および動作を説明するための図である。
【符号の説明】
７２  結果が利用可能になるまでのサイクル数を規定するレジスタ
（命令結果レイテンシレジスタ）
７３  特定用途向け演算器（特殊用途命令演算器）
７５  同じ命令を発行可能になるまでのサイクル数を規定するレジスタ
（命令発行レイテンシレジスタ）
【図１】
0003980243.tif 000002
【図２】
0003980243.tif 000003
【図３】
0003980243.tif 000004
【図４】
0003980243.tif 000005
【図５】
0003980243.tif 000006
【図６】
0003980243.tif 000007
【図７】
0003980243.tif 000008