(57)【特許請求の範囲】
【請求項１】
種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令を、該複数の演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する複数の発行制御手段と、
前記複数の演算装置用の命令スロットの空き量を比較し、比較結果を出力する比較手段と、
前記比較結果に基づいて、前記複数の発行制御手段のうちの１つを選択する選択手段と、
選択された発行制御手段が指定する発行先演算装置に対して、命令を発行する発行手段と
を備えることを特徴とする命令発行装置。
【請求項２】
前記選択手段は、前記複数の演算装置のうちのいずれに対しても発行可能な命令を、空き量が最大の命令スロットに対応する演算装置に対して優先的に発行するための制御を行う、発行制御手段を選択することを特徴とする請求項１記載の命令発行装置。
【請求項３】
種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令を、該複数の演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する複数の発行制御手段と、
発行すべき命令列のパターンに応じた優先発行先を学習し、該優先発行先を表す学習情報を格納する学習手段と、
前記学習情報に基づいて、前記複数の発行制御手段のうちの１つを選択する選択手段と、
選択された発行制御手段が指定する発行先演算装置に対して、前記命令列に含まれる命令を発行する発行手段と
を備えることを特徴とする命令発行装置。
【請求項４】
前記複数の演算装置用の命令スロットの空き量を比較し、比較結果を出力する比較手段をさらに備え、前記学習手段は、前記命令列のパターンと前記比較結果の組合せに応じた優先発行先を学習することを特徴とする請求項３記載の命令発行装置。
【請求項５】
前記学習手段は、前記命令列のパターンと前記複数の演算装置用の命令スロットの空き量との組合せに応じた優先発行先を学習することを特徴とする請求項３記載の命令発行装置。
【請求項６】
種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令を、該複数の演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する複数の発行制御手段と、
レジスタライト命令により指定された優先発行先情報を格納するレジスタ手段と、
前記優先発行先情報に基づいて、前記複数の発行制御手段のうちの１つを選択する選択手段と、
選択された発行制御手段が指定する発行先演算装置に対して、命令を発行する発行手段と
を備えることを特徴とする命令発行装置。
【請求項７】
前記優先発行先情報を、同時発行可能な命令の数が最大となるように書き換えるレジスタライト命令を生成する生成手段をさらに備えることを特徴とする請求項６記載の命令発行装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、異なる種類の複数の演算装置に対する命令の発行を制御し、適切な発行先に命令を発行する命令発行装置に関する。
【０００２】
【従来の技術】
実行可能な演算の種類が異なる複数の演算装置を有するプロセッサにおいては、特定の種類の演算装置に対してのみ発行可能な命令と、いくつかの種類の演算装置に対して発行可能な命令とが混在する場合がある。このようなアーキテクチャを有するプロセッサでは、発行制御回路（Issue 制御回路）により命令の発行先が決定される。
【０００３】
図１２は、従来の発行制御回路による発行制御を示している。ここでは、簡単のため、４命令同時発行可能であり、種類Ａの演算を行う演算装置と種類Ｂの演算を行う演算装置がある場合を考える。
【０００４】
図１２において、発行ラッチ１は、フェッチされた命令を保持する４つの命令スロットを有し、発行制御回路２は、発行ラッチ１に保持された命令の発行をイン・オーダー（in-order）で制御する。リザベーションステーション３、４は、処理待ちの命令のエントリを保持する複数の命令スロットを有し、アウト・オブ・オーダー（out-of-order）でエントリを演算装置５、６に渡す。
【０００５】
ここで、イン・オーダーとは、プログラムにより指示された順序で処理することを意味し、アウト・オブ・オーダーとは、プログラムにより指示された順序とは異なる順序で処理することを意味する。
【０００６】
演算装置５は、種類Ａの演算を実行し、リザベーションステーション３は、演算装置５により実行可能な命令のエントリを保持する。一方、演算装置６は、種類Ｂの演算を実行し、リザベーションステーション４は、演算装置６により実行可能な命令のエントリを保持する。
【０００７】
発行制御回路２は、命令の発行先として、種類Ａの演算装置を優先的に選択する制御を行い、種類ＡおよびＢのどちらに対しても発行可能な命令（ａｎｙ命令）は、可能な限り演算装置５に対して発行する。
【０００８】
このような制御によれば、発行ラッチ１の第１命令（Ｓｌｏｔ０）〜第２命令（Ｓｌｏｔ１）にａｎｙ命令がある場合、その命令は固定的に種類Ａの演算装置５に対して発行される。また、ａｎｙ命令が第３命令（Ｓｌｏｔ２）以降にあり、種類Ａのリザベーションステーション３の空き量（空きスロットの数）が“０”の場合、その命令は種類Ｂの演算装置６に対して発行される。
【０００９】
図１２では、リザベーションステーション３、４の空き量は、それぞれ“１”、“２”であり、発行ラッチ１１のＳｌｏｔ０、Ｓｌｏｔ１、Ｓｌｏｔ２、およびＳｌｏｔ３に、それぞれ、ａｎｙ命令、Ａ命令、Ｂ命令、およびその他の命令が保持されている。Ａ命令は、種類Ａの演算装置に対してのみ発行可能な命令であり、Ｂ命令は、種類Ｂの演算装置に対してのみ発行可能な命令である。
【００１０】
このとき、１番目のａｎｙ命令は、演算装置５に対して固定的に発行されるので、リザベーションステーション３の空き量は“０”になる。そこで、発行制御回路２は、リザベーションステーション３のスロットが空くのを待って、２番目のＡ命令を演算装置５に対して発行する。
【００１１】
図１３は、命令のパイプライン処理における発行ステージを示している。この発行ステージは、Ｔ１とＴ２の２つの期間からなり、発行制御回路２は、期間Ｔ１において、優先発行先を考慮して命令の発行先を決定し、期間Ｔ２において、決定後の後処理を行う。
【００１２】
【発明が解決しようとする課題】
しかしながら、上述した従来の発行制御には、以下のような問題がある。
図１２の発行制御回路２は、イン・オーダーで命令を発行するため、種類Ｂのリザベーションステーション４に空きスロットがあるにもかかわらず、２番目のＡ命令が発行されない限り、３番目以降のＢ命令とその他の命令を発行することができない。
【００１３】
このように、あらかじめ優先発行先が決められている発行制御回路を用いた場合、優先発行先の演算装置用の空きスロットが少なくなると、同時発行可能な命令の数が少なくなるという欠点がある。
【００１４】
そこで、あらかじめ優先発行先を決めずに、複数の演算装置の中からａｎｙ命令の発行先を選択する方法が考えられる。この場合、ａｎｙ命令の最適な発行先を決定するには、複数の演算装置のスロットの空き量を計算し、同時発行可能な命令の数が最大となるような発行先を選択しなければならない。
【００１５】
図１４は、このような制御を行う発行ステージを示している。この発行ステージは、図１３の期間Ｔ１とＴ２に加えて、新たに付加された判定回路に対応する期間Ｔ３を含んでいる。この判定回路は、期間Ｔ３において、複数の演算装置のスロットの空き量を計算し、その時点において最適な優先発行先を決定する。そして、発行制御回路は、決定された優先発行先に基づいて、期間Ｔ１とＴ２の処理を行う。
【００１６】
しかしながら、複数のリザベーションステーションの空き量や命令の種類を考慮すると、それらの組合せの数は膨大であり、１パイプライン・ステージの中で、高速に最適解を求めることは困難である。厳密に命令毎の発行先を決定する場合は、期間Ｔ３とＴ１の処理はさらに複雑になり、１ステージの時間が長くなって、処理速度が低下してしまう。
【００１７】
本発明の課題は、同時発行可能な命令の数が多くなるような発行先を、比較的短時間で決定することのできる命令発行装置を提供することである。
【００１８】
【課題を解決するための手段】
図１は、本発明の命令発行装置の原理図である。本発明の命令発行装置は、複数の発行制御手段１１、比較手段１２、学習手段１３、レジスタ手段１４、選択手段１５、および発行手段１６を備える。
【００１９】
発行制御手段１１は、種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令（ａｎｙ命令）を、それらの演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する。特に、与えられた命令がａｎｙ命令の場合は、各発行制御手段１１は、優先発行先の演算装置を発行先として指定する。これにより、与えられた１つの命令に対して、複数の発行先が互いに独立に決定される。
【００２０】
本発明の第１の局面において、比較手段１２は、複数の演算装置用の命令スロットの空き量を比較し、比較結果を出力する。選択手段１５は、その比較結果に基づいて、複数の発行制御手段１１のうちの１つを選択する。そして、発行手段１６は、選択された発行制御手段１１が指定する発行先演算装置に対して、命令を発行する。
【００２１】
比較手段１２は、命令スロットの空き量の大小関係の比較結果を、選択手段１５に出力する。選択手段１５は、空き量の大小関係に基づいて発行制御手段１１を選択し、その発行制御手段１１が指定する発行先を、発行手段１６に渡す。これにより、発行手段１６からその発行先の演算装置に対して、命令が発行される。
【００２２】
このような命令発行装置によれば、複数の演算装置のうち命令スロットの空き量が最大の演算装置を優先発行先とする発行制御手段１１を、選択することが可能となる。これにより、ａｎｙ命令は、命令スロットの空き量が最大の演算装置に対して発行されるようになり、同時発行可能な命令の数が増加する。発行制御手段１１は互いに並列に動作するため、発行先の決定に要する時間は、従来とほとんど変わらない。
【００２３】
また、本発明の第２の局面において、学習手段１３は、発行すべき命令列のパターンに応じた優先発行先を学習し、その優先発行先を表す学習情報を格納する。選択手段１５は、その学習情報に基づいて、複数の発行制御手段１１のうちの１つを選択する。そして、発行手段１６は、選択された発行制御手段１１が指定する発行先演算装置に対して、上記命令列に含まれる命令を発行する。
【００２４】
学習手段１３は、与えられた命令列のパターンに対応して、どの演算装置に対して命令を優先的に発行すればよいかを学習し、優先発行先の演算装置を指定する学習情報を選択手段１５に出力する。選択手段１５は、その優先発行先に基づいて発行制御手段１１を選択し、その発行制御手段１１が指定する発行先を、発行手段１６に渡す。
【００２５】
このような命令発行装置によれば、学習手段１３は、適切な優先発行先を学習することができ、選択手段１５は、そのような優先発行先を有する発行制御手段１１を、選択することが可能となる。これにより、ａｎｙ命令は、適切な演算装置に対して発行されるようになり、同時発行可能な命令の数が増加する。
【００２６】
また、本発明の第３の局面において、レジスタ手段１４は、レジスタライト命令により指定された優先発行先情報を格納する。選択手段１５は、その優先発行先情報に基づいて、複数の発行制御手段１１のうちの１つを選択する。そして、発行手段１６は、選択された発行制御手段１１が指定する発行先演算装置に対して、命令を発行する。
【００２７】
レジスタライト命令は、どの演算装置に対して命令を優先的に発行すればよいかを指定する。レジスタ手段１４は、指定された優先発行先情報を格納し、その情報を選択手段１５に出力する。選択手段１５は、その優先発行先に基づいて発行制御手段１１を選択し、その発行制御手段１１が指定する発行先を、発行手段１６に渡す。
【００２８】
このような命令発行装置によれば、レジスタ手段１４は、常に適切な優先発行先を指定することができ、選択手段１５は、そのような優先発行先を有する発行制御手段１１を、選択することが可能となる。これにより、ａｎｙ命令は、適切な演算装置に対して発行されるようになり、同時発行可能な命令の数が増加する。
【００２９】
例えば、図１の発行制御手段１１は、後述する図３の発行制御回路５２、５３に対応し、比較手段１２は、図３の比較回路５４に対応する。また、図１の学習手段１３は、後述する図６のエンコーダ７１、学習回路７２、および比較回路７３に対応し、レジスタ手段１４は、後述する図１０の制御レジスタ９１、エンコーダ９２、およびマルチプレクサ９３に対応する。また、図１の選択手段１５および発行手段１６は、図３のマルチプレクサ５５に対応する。
【００３０】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
図２は、本実施形態の命令発行装置を備えるプロセッサの構成図である。図２のプロセッサは、ブランチヒストリテーブル（ＢＨＴ）２１、フェッチ／分岐予測部２２、レベル０命令キャッシュ（I0 Cache）２３、リコード部２４、レベル１命令キャッシュ（I1 Cache）２５、レベル２キャッシュ（U2 Cache）２６、インタフェース２７、レベル１データキャッシュ（D1 Cache）２８、発行部２９、レジスタファイル３０、３１、３２、リザベーションステーション３３、３４、３５、３６、および実行部３７、３８、３９、４０を備える。
【００３１】
インタフェース２７は、レベル２キャッシュ２６とＵＰＡ（UltraSPARC Port Architecture）バス４１に対する情報の入出力を制御し、レベル１命令キャッシュ２５に命令を供給する。ＵＰＡバス４１は、不図示のシステムコントローラを介してメモリに接続されている。
【００３２】
リコード部２４は、レベル１命令キャッシュ２５に保持された命令をデコードして、レベル０命令キャッシュ２３に渡し、フェッチ／分岐予測部２２は、レベル０命令キャッシュ２３の命令をフェッチして発行部２９に渡すとともに、ブランチヒストリテーブル２１を参照して、分岐命令の分岐先を予測する。
【００３３】
発行部２９は、フェッチされた命令をリザベーションステーション３３、３４、３５、３６にディスパッチし、レジスタファイル３０、３１、３２は、レジスタの名前替え（Renaming）に用いられる。ＦＸレジスタファイル３０、ＦＰレジスタファイル３１、およびＣＣレジスタファイル３２は、それぞれ、固定小数点演算用データ、浮動小数点演算用データ、および条件コードのレジスタファイルである。
【００３４】
リザベーションステーション３３、３４、３５、３６は、それぞれ、複数のスロットを有し、実行部３７、３８、３９、４０が実行する命令のエントリを保持する。ロード／ストア部３７は、レベル１データキャッシュ２８を介して、データのロード／ストアを実行する。
【００３５】
ＡＧＥＮ実行部３８は、ロード／ストアアドレスを生成する演算装置を含み、ＦＸ＆ＦＸＶＩＳ実行部３９は、固定小数点演算を実行する演算装置を含み、ＦＰ＆ＦＰＶＩＳ実行部４０は、浮動小数点演算を実行する演算装置を含む。このうち、ＡＧＥＮ実行部３８とＦＸ＆ＦＸＶＩＳ実行部３９は、ともに整数演算を実行することができ、どちらの実行部に対しても発行可能な命令はａｎｙ命令となる。
【００３６】
発行部２９は、互いに並列に動作する複数の発行制御回路と、それらの発行制御回路の出力を切り替える選択回路を備える。各発行制御回路は、実行可能な演算の種類が異なる複数の演算装置のそれぞれに対して、命令を優先的に発行する制御を行う。また、選択回路は、各演算装置用の命令スロットの空き量や過去に発行された命令数の学習結果に応じて、複数の発行制御回路のうちの最適なものを選択し、その発行制御回路の出力に基づいて発行先を決定する。
【００３７】
このように、異なる優先発行先を有する複数の発行制御回路を設け、命令の発行時に、いずれかの発行制御回路の出力を動的に選択することで、発行先が１つの演算装置に偏る可能性が低くなる。したがって、同時発行可能な命令の数が増加し、命令の処理速度が向上する。
【００３８】
次に、図３から図１０までを参照しながら、発行部２９の構成についてより詳細に説明する。
図３は、図２の発行部２９の第１の構成例を示している。この例では、発行部２９は、発行ラッチ５１、発行制御回路５２、５３、比較回路５４、およびマルチプレクサ５５を含む。また、リザベーションステーション５７、５８は、例えば、図２のリザベーションステーション３４、３５に対応し、演算装置６０、６１は、例えば、図２の実行部３８、３９に対応する。
【００３９】
発行ラッチ５１は、フェッチ／分岐予測部２２によりフェッチされた命令を保持する４つのスロットを有し、発行制御回路５２、５３は、発行ラッチ５１に対して並列に配置され、発行ラッチ５１に保持された命令の発行をイン・オーダーで制御する。
【００４０】
演算装置６０、６１は、それぞれ、種類Ａ、Ｂの演算を実行し、リザベーションステーション５７、５８は、それぞれ、演算装置６０、６１により実行可能な命令のエントリを保持する。ここでは、各リザベーションステーションに対して１つの演算装置が示されているが、一般には、各リザベーションステーションに対して１つ以上の演算装置が設けられる。
【００４１】
発行制御回路５２、５３は、それぞれ、種類Ａ、Ｂの演算装置を優先発行先として選択する制御を行い、種類ＡおよびＢのどちらに対しても発行可能なａｎｙ命令は、可能な限り優先発行先に対して発行する。
【００４２】
モニタ回路５６、５９は、それぞれ、リザベーションステーション５７、５８の命令スロットの空き量をモニタする。比較回路５４は、モニタ回路５６、５９から出力される信号に基づいて、リザベーションステーション５７、５８の空き量を比較し、比較結果を選択信号としてマルチプレクサ５５に出力する。マルチプレクサ５５は、受け取った選択信号に応じて、発行制御回路５２、５３の出力を選択して、指定された発行先に命令を発行する。
【００４３】
このとき、比較回路５４は、リザベーションステーション５７の空き量がリザベーションステーション５８の空き量より大きければ、発行制御回路５２の出力を選択する選択信号を出力する。また、リザベーションステーション５８の空き量がリザベーションステーション５７の空き量より大きければ、発行制御回路５３の出力を選択する選択信号を出力する。また、両方の空き量が同じ場合は、いずれかの出力を選択する選択信号を出力する。
【００４４】
このような構成によれば、命令の発行時に２つのリザベーションステーションの空き量が比較され、空き量の多い方の演算装置を優先発行先とする発行制御回路が自動的に選択される。これにより、ａｎｙ命令は、空き量の多い方の演算装置に対して優先的に発行されるようになるので、全般的に発行可能な命令の数が増加する。
【００４５】
図３では、リザベーションステーション５７、５８の空き量は、それぞれ“１”、“２”であるので、発行制御回路５３の出力が選択される。したがって、発行ラッチ５１の１番目のａｎｙ命令は、演算装置６１に対して発行され、２番目のＡ命令、３番目のＢ命令は、それぞれ、演算装置６０、６１に対して発行される。したがって、図１２の場合のように、Ａ命令やＢ命令の発行が遅れることはない。
【００４６】
また、発行制御回路５２、５３を並列に配置し、その後段にマルチプレクサ５５を配置することにより、回路の追加による発行制御の複雑化および遅延増加を最小限（マルチプレクサ１段分）に抑えることができる。
【００４７】
モニタ回路５６、５９は、例えば、リザベーションステーション５７、５８の空き量を表す４ビットのバリッド信号ｓｌｏｔ＿ａｖａｉｌ［３：０］を生成し、その信号を比較回路５４に出力する。この信号により、スロットの空き量は、以下のように表される。
空き量“０”：ｓｌｏｔ＿ａｖａｉｌ［３：０］＝００００
空き量“１”：ｓｌｏｔ＿ａｖａｉｌ［３：０］＝０００１
空き量“２”：ｓｌｏｔ＿ａｖａｉｌ［３：０］＝００１１
空き量“３”：ｓｌｏｔ＿ａｖａｉｌ［３：０］＝０１１１
空き量“４”：ｓｌｏｔ＿ａｖａｉｌ［３：０］＝１１１１
モニタ回路５６、５９が出力する信号を、それぞれ、ａ＿ｓｌｏｔ＿ａｖａｉｌ［３：０］、ｂ＿ｓｌｏｔ＿ａｖａｉｌ［３：０］とすると、比較回路５４は、例えば、以下のような論理演算により、選択信号ａ＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｂを生成する。
0004025493.tif 000002
このような論理演算によれば、リザベーションステーション５７の空き量がリザベーションステーション５８の空き量より大きいとき、ａ＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｂは論理“１”となり、リザベーションステーション５７の空き量がリザベーションステーション５８の空き量以下のとき、ａ＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｂは論理“０”となる。したがって、この選択信号を用いて、マルチプレクサ５５を制御することができる。
【００４８】
図４は、図３の発行制御回路５２の具体例を示している。４ビットの入力信号ａ［３：０］は、発行ラッチ５１の各スロットについて、演算装置６０に対してしか発行できない命令の有無（論理“１”または“０”）を表し、入力信号ｂ［３：０］は、同様に、演算装置６１に対してしか発行できない命令の有無を表す。また、入力信号ａｎｙ［３：０］は、演算装置６０、６１のいずれに対しても発行可能なａｎｙ命令の有無を表す。
【００４９】
２ビットの入力信号ａ＿ｓｌｏｔ＿ａｖａｉｌ［１：０］、ｂ＿ｓｌｏｔ＿ａｖａｉｌ［１：０］は、それぞれ、リザベーションステーション５７、５８の空き量を表す。発行先を決めるにあたっては、各演算装置に対して同時に発行可能な命令数の制約の範囲内で、リザベーションステーションの空き量が認識できればよい。その数を越える空き量を認識しても、制約により、空き量に対応する数の命令を同時に発行できないので、意味がない。
【００５０】
ここでは、各演算装置に対する同時発行可能な命令の最大数が２であるという制約の下で、信号ａ＿ｓｌｏｔ＿ａｖａｉｌおよびｂ＿ｓｌｏｔ＿ａｖａｉｌのビット［１：０］が発行制御回路５２に入力されている。これらの２ビットの信号を参照することで、空き量が“０”、“１”、“２”以上のいずれであるかを認識することができる。
【００５１】
また、出力信号ａ０［３：０］は、演算装置６０用のライトポート０に割り当てられる命令の発行ラッチ５１上のスロット位置を表し、出力信号ａ１［３：１］は、演算装置６０用のライトポート１に割り当てられる命令の発行ラッチ５１上のスロット位置を表す。同様に、出力信号ｂ０［３：０］、ｂ１［３：１］は、それぞれ、演算装置６１用のライトポート０、ライトポート１に割り当てられる命令の発行ラッチ５１上のスロット位置を表す。
【００５２】
これらのライトポートは、リザベーションステーション５７、５８の入力側に設けられ、発行制御回路５２の出力信号は、各演算装置の各ライトポートに割り当てられる命令を選択するために用いられる。したがって、これらの出力信号により、命令の発行先となる演算装置が確定し、対応するライトポートに命令が割り当てられる。例えば、図３の状態では、以下のような信号が発行制御回路５２に入力される。
ａ［３：０］＝００１０
ｂ［３：０］＝０１００
ａｎｙ［３：０］＝０００１
ａ＿ｓｌｏｔ＿ａｖａｉｌ［１：０］＝０１
ｂ＿ｓｌｏｔ＿ａｖａｉｌ［１：０］＝１１
そして、発行制御回路５２は、ａｎｙ命令の発行先をＡ優先で決定し、以下のような出力信号を生成する。
ａ０［３：０］＝０００１
ａ１［３：１］＝００１
ｂ０［３：０］＝０１００
ｂ１［３：１］＝０００
図５は、図３の発行制御回路５３の具体例を示している。発行制御回路５３は、Ａ優先の発行制御回路５２の入出力信号を図５に示すように入れ替えることで、実現される。上述のような入力信号が与えられたとき、発行制御回路５３は、ａｎｙ命令の発行先をＢ優先で決定し、以下のような出力信号を生成する。
ａ０［３：０］＝００１０
ａ１［３：１］＝０００
ｂ０［３：０］＝０００１
ｂ１［３：１］＝０１０
次に、図６は、図２の発行部２９の第２の構成例を示している。この例では、発行部２９は、発行ラッチ５１、発行制御回路５２、５３、マルチプレクサ５５、エンコーダ７１、学習回路７２、および比較回路７３を含む。
【００５３】
エンコーダ７１は、発行ラッチ５１に保持された各命令をエンコードし、学習回路７２のリードアドレスｒａまたはライトアドレスｗａとして出力する。比較回路７３は、発行制御回路５２、５３から出力される信号に基づいて、これらの発行制御回路の発行可能な命令の数を比較し、比較結果をライトデータｗｄとして学習回路７２に出力する。
【００５４】
学習回路７２は、メモリ回路により構成され、アドレスｗａにデータｗｄを書き込み、アドレスｒａから読み出したリードデータｒｄを、選択信号としてマルチプレクサ５５に出力する。マルチプレクサ５５は、受け取った選択信号に応じて、発行制御回路５２、５３の出力を選択する。
【００５５】
このとき、比較回路７３は、発行制御回路５２の発行可能な命令の数が発行制御回路５３のそれより大きければ、発行制御回路５２の出力を選択する選択信号の値を、データｗｄとして出力する。また、発行制御回路５３の発行可能な命令の数が発行制御回路５２のそれより大きければ、発行制御回路５３の出力を選択する選択信号の値を、データｗｄとして出力する。また、両方の命令の数が同じ場合は、いずれかの出力を選択する選択信号の値を出力する。
【００５６】
このような構成によれば、発行ラッチ５１に保持された命令列のパターンに応じて、より多くの命令を同時に発行するための選択信号の値が、学習情報として学習回路７２に格納される。また、発行ラッチ５１の命令列と同じパターンに対応する過去の学習情報が、学習回路７２から取り出され、選択信号としてマルチプレクサ５５に出力される。これにより、ａｎｙ命令の発行先は、過去の学習結果に応じて選択されるようになる。
【００５７】
同じパターンの命令列に対して、各発行制御回路の発行可能な命令の数があまり変化しない場合、学習結果を利用することで、全般的に発行可能な命令の数が増加する。また、発行制御の遅延も、図３の場合と同様に、マルチプレクサ１段分に抑えることができる。
【００５８】
図６では、発行ラッチ５１に、ａｎｙ命令、Ａ命令、Ｂ命令、その他の命令といった命令列が保持されている。この場合、エンコーダ７１は、それぞれの命令を、例えば、以下のようにエンコードする。
その他の命令：“００”
Ａ命令      ：“０１”
Ｂ命令      ：“１０”
ａｎｙ命令  ：“１１”
そして、発行ラッチ５１の命令列に対応するエンコーダ７１の出力を、Ｓｌｏｔ３、Ｓｌｏｔ２、Ｓｌｏｔ１、Ｓｌｏｔ０の順に並べて、アドレスｒａを生成すると、“００１００１１１”となる。そこで、学習回路７２の対応するエントリに格納されている学習情報が取り出され、その情報に基づいて発行制御回路の出力が選択される。その結果、ａｎｙ命令は、選択された発行制御回路の優先発行先に対して発行される。
【００５９】
このとき、発行制御回路５２、５３のうち、発行可能な命令の数が多い方の出力を選択する選択信号の値が、“００１００１１１”をアドレスｗａとして、学習回路７２の対応するエントリに格納される。これにより、この命令列のパターンに対応する学習情報が更新される。
【００６０】
発行制御回路５２、５３は、例えば、発行可能な命令の数を表す４ビットのバリッド信号ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］を生成し、その信号を比較回路７３に出力する。この信号により、発行可能な命令の数は、以下のように表される。
命令数“０”：ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］＝００００
命令数“１”：ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］＝０００１
命令数“２”：ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］＝００１１
命令数“３”：ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］＝０１１１
命令数“４”：ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］＝１１１１
発行制御回路５２、５３が出力する信号を、それぞれ、ｎ１＿ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］、ｎ２＿ｉｓｓｕｅ＿ｖａｌｉｄ［３：０］とすると、比較回路７３は、例えば、以下のような論理演算により、学習情報ｎ１＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｎ２を生成する。
0004025493.tif 000003
このような論理演算によれば、発行制御回路５２の発行可能な命令の数が発行制御回路５３のそれより大きいとき、ｎ１＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｎ２は論理“１”となり、発行制御回路５２の発行可能な命令の数が発行制御回路５３のそれ以下のとき、ｎ１＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｎ２は論理“０”となる。したがって、この学習情報を選択信号として用いて、マルチプレクサ５５を制御することができる。
【００６１】
次に、図７は、図２の発行部２９の第３の構成例を示している。この例では、発行部２９は、図３および図６の回路を組み合わせて構成され、発行ラッチ５１、発行制御回路５２、５３、マルチプレクサ５５、比較回路５４、７３、エンコーダ７１、および学習回路７２を含む。
【００６２】
この場合、エンコーダ７１が出力する命令列のパターンに関する情報と、比較回路５４が出力する空き量の比較結果の組合せが、学習回路７２のアドレスｒａおよびｗａとして用いられる。また、学習情報としては、図６の場合と同様に、比較回路７３が出力する比較結果が用いられる。
【００６３】
ここでは、リザベーションステーション５８の空き量の方がリザベーションステーション５７の空き量より大きいので、比較回路５４が出力する信号ａ＿ｇｒｅａｔｅｒ＿ｔｈａｎ＿ｂは論理“０”となる。この信号値を図６のアドレス“００１００１１１”のＭＳＢ（Most Significant Bit）側に追加すると、“０００１００１１１”となる。そこで、このアドレス“０００１００１１１”が、アドレスｒａおよびｗａとして、学習情報の取り出しおよび更新に用いられる。
【００６４】
このような構成によれば、命令列のパターンが同じでも、リザベーションステーションの空き量の大小関係が異なる場合は、異なるアドレスに学習情報が格納される。したがって、空き量の大小関係をも考慮した学習が可能となり、図６の構成より、発行可能な命令の数が増加すると考えられる。発行制御の遅延については、図６の場合と同様である。
【００６５】
次に、図８は、図２の発行部２９の第４の構成例を示している。この例では、発行部２９は、図７の構成から比較回路５４を除いた構成を有する。この場合、エンコーダ７１が出力する命令列のパターンに関する情報と、モニタ回路５６、５９が出力する空き量の情報の組合せが、学習回路７２のアドレスｒａおよびｗａとして用いられる。
【００６６】
ここでは、モニタ回路５６、５９が出力する信号ａ＿ｓｌｏｔ＿ａｖａｉｌ［３：０］、ｂ＿ｓｌｏｔ＿ａｖａｉｌ［３：０］が、そのまま図６のアドレス“００１００１１１”に追加される。したがって、アドレスｒａおよびｗａは、１６ビットで表されることになる。
【００６７】
このような構成によれば、リザベーションステーションの空き量の比較結果が同じでも、空き量そのものが異なる場合は、異なるアドレスに学習情報が格納される。したがって、図７の構成より詳細な学習が可能となり、発行可能な命令の数が増加すると考えられる。
【００６８】
ところで、図６から図８までの学習回路７２では、マルチプレクサ５５の選択信号に対応する１ビットの学習情報を用いているが、これに１ビット以上の強度情報を付加して、より詳細な学習情報を保持することもできる。
【００６９】
図９は、このような強度情報を用いた発行部２９の第５の構成例を示している。この例では、図６の構成に、マルチプレクサ８１、減算器８２、および加算器８３が追加されている。学習回路７２は、１ビットの優先発行先情報と１ビットの強度情報からなる２ビットの学習情報を保持する。優先発行先情報をＭＳＢとし、強度情報をＬＳＢ（Least Significant Bit ）とすると、この学習情報の意味は、以下のようにアサインされる。
“１１”：種類Ａの演算装置に対して、命令を強く優先的に発行する。
【００７０】
“１０”：種類Ａの演算装置に対して、命令を弱く優先的に発行する。
“０１”：種類Ｂの演算装置に対して、命令を弱く優先的に発行する。
“００”：種類Ｂの演算装置に対して、命令を強く優先的に発行する。
２つのビットのうち、ＭＳＢの優先発行先情報のみがマルチプレクサ５５の選択信号として用いられ、優先発行先情報が論理“１”、“０”のとき、それぞれ、発行制御回路５２、５３の出力が選択される。そして、学習情報の更新には、両方のビットが用いられる。
【００７１】
比較回路７３は、例えば、発行制御回路５２の発行可能な命令の数が発行制御回路５３のそれより大きいとき、論理“１”を出力し、発行制御回路５２の発行可能な命令の数が発行制御回路５３のそれ以下のとき、論理“０”を出力する。この出力は、マルチプレクサ８１の選択信号として用いられる。
【００７２】
減算器８２／加算器８３は、学習回路７２から出力される２ビットのデータｒｄを、それぞれ１だけデクリメント／インクリメントして、マルチプレクサ８１に出力する。ただし、デクリメントまたはインクリメントによって、学習情報が“００”を下回ったり、“１１”を超えたりする場合は、それぞれ、“００”または“１１”にクリップされる。
【００７３】
マルチプレクサ８１は、比較回路７３が出力する選択信号が論理“１”のとき、加算器８３の出力を選択し、データｗｄとして学習回路７２に出力する。また、選択信号が論理“０”のとき、減算器８２の出力を選択し、データｗｄとして出力する。
【００７４】
このような構成によれば、発行制御回路５２の方がより多くの命令を発行可能な場合は、発行ラッチ５１の命令列のパターンに応じて選択されたエントリの学習情報がインクリメントされる。また、それ以外の場合は、そのエントリの学習情報がデクリメントされる。したがって、発行可能な命令の数が増加するように、過去の学習情報が強度加算的に更新される。これにより、２つの発行制御回路５２、５３のうち、発行可能な命令の数が最大となるものが選択されやすくなる。
【００７５】
この場合、図６の構成とは異なり、過去の学習情報を段階的に修正して、再び学習情報として利用することができる。ここでは、図６の構成に強度情報を付加した例を示したが、図７および図８の構成についても、同様にして、強度情報を生成する回路を付加することができる。
【００７６】
次に、図１０は、図２の発行部２９の第６の構成例を示している。この例では、発行部２９は、発行ラッチ５１、発行制御回路５２、５３、マルチプレクサ５５、制御レジスタ９１、エンコーダ９２、およびマルチプレクサ９３を含む。
【００７７】
制御レジスタ９１は、ａｎｙ命令毎に優先発行先情報を保持し、マルチプレクサ５５の動作を制御するために用いられる。エンコーダ９２は、発行ラッチ５１の命令列のパターンをエンコードして、マルチプレクサ９３に出力する。マルチプレクサ９３は、エンコーダ９２の出力を選択信号として用いて、対応する制御レジスタ９１の優先発行先情報を選択し、その情報をマルチプレクサ５５の選択信号として出力する。
【００７８】
この場合、コンパイラは、最適化された命令列のスケジューリング結果に基づいて、同時発行可能な命令の数が最大になるように、適宜、制御レジスタ９１の情報を書き換える命令コード（レジスタライト命令）を生成する。このレジスタライト命令からライトイネーブル信号ｗｅとライトデータが生成され、信号ｗｅにより指定された優先発行先情報がライトデータにより上書きされる。
【００７９】
このような構成によれば、優先発行先の切り替えは、実行されるプログラムの命令列のパターンに応じてソフトウェア的に行われる。これにより、ａｎｙ命令の発行先が最適化され、全般的に発行可能な命令の数が増加する。発行制御の遅延については、他の構成例と同様である。また、複数のａｎｙ命令を任意の種類毎にグループ化しておき、優先発行先情報をグループ毎に制御レジスタ９１に格納してもよい。
【００８０】
図１１は、本発明における命令の発行ステージを示している。この発行ステージは、図１３の発行ステージの期間Ｔ１とＴ２に加えて、期間Ｔ４とＴ５を含んでいる。発行制御回路５２、５３は、期間Ｔ１において、優先発行先を考慮しながら命令の発行先を並列に決定する。
【００８１】
また、これと並行する期間Ｔ５において、発行制御回路５２、５３のうちのどちらを選択するかが決定され、期間Ｔ４において、マルチプレクサ５５が選択信号に従って出力を選択する。期間Ｔ４は期間Ｔ１とＴ２に比べて短いため、１パイプライン・ステージの長さは、図１３の場合とほとんど変わらない。
【００８２】
以上説明した実施形態では、２種類の演算装置で実行可能なａｎｙ命令の発行制御について説明したが、より多くの種類の演算装置で実行可能なａｎｙ命令の場合も、同様の制御を適用することができる。
【００８３】
この場合、３種類以上の演算装置のそれぞれを優先発行先とする３つ以上の発行制御回路を並列に設けて、それらの出力のうちの１つをマルチプレクサ５５により選択すればよい。マルチプレクサ５５の選択信号としては、複数ビットの信号が用いられ、比較回路５４、７３は、３つ以上の入力値を比較して最も大きな値に対応する信号を出力する。
（付記１）  種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令を、該複数の演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する複数の発行制御手段と、
前記複数の演算装置用の命令スロットの空き量を比較し、比較結果を出力する比較手段と、
前記比較結果に基づいて、前記複数の発行制御手段のうちの１つを選択する選択手段と、
選択された発行制御手段が指定する発行先演算装置に対して、命令を発行する発行手段と
を備えることを特徴とする命令発行装置。
（付記２）  種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令を、該複数の演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する複数の発行制御手段と、
発行すべき命令列のパターンに応じた優先発行先を学習し、該優先発行先を表す学習情報を格納する学習手段と、
前記学習情報に基づいて、前記複数の発行制御手段のうちの１つを選択する選択手段と、
選択された発行制御手段が指定する発行先演算装置に対して、前記命令列に含まれる命令を発行する発行手段と
を備えることを特徴とする命令発行装置。
（付記３）  前記複数の演算装置用の命令スロットの空き量を比較し、比較結果を出力する比較手段をさらに備え、前記学習手段は、前記命令列のパターンと前記比較結果の組合せに応じた優先発行先を学習することを特徴とする付記２記載の命令発行装置。
（付記４）  前記学習手段は、前記命令列のパターンと前記複数の演算装置用の命令スロットの空き量との組合せに応じた優先発行先を学習することを特徴とする付記２記載の命令発行装置。
（付記５）  前記学習手段は、前記優先発行先の強度情報を含む学習情報を格納し、前記複数の発行制御手段のうち、発行可能な命令の数が最大となる発行制御手段が選択されやすくなるように、該学習情報を更新することを特徴とする付記２記載の命令発行装置。
（付記６）  種類の異なる演算を行う複数の演算装置のうちのいずれに対しても発行可能な命令を、該複数の演算装置のうちの１つに対して優先的に発行するための制御を行い、発行先演算装置を互いに並列に決定する複数の発行制御手段と、
レジスタライト命令により指定された優先発行先情報を格納するレジスタ手段と、
前記優先発行先情報に基づいて、前記複数の発行制御手段のうちの１つを選択する選択手段と、
選択された発行制御手段が指定する発行先演算装置に対して、命令を発行する発行手段と
を備えることを特徴とする命令発行装置。
（付記７）  前記優先発行先情報を、同時発行可能な命令の数が最大となるように書き換えるレジスタライト命令を生成する生成手段をさらに備えることを特徴とする付記６記載の命令発行装置。
【００８４】
【発明の効果】
本発明によれば、異なる種類の複数の演算装置のいずれに対しても発行可能な命令の優先発行先が、各演算装置用の命令スロットの空き量や学習結果に基づいて自動的に選択される。これにより、同時発行可能な命令の数が多くなるような命令の発行先を、短時間で決定することができる。
【図面の簡単な説明】
【図１】本発明の命令発行装置の原理図である。
【図２】プロセッサの構成図である。
【図３】第１の発行部を示す図である。
【図４】第１の発行制御回路を示す図である。
【図５】第２の発行制御回路を示す図である。
【図６】第２の発行部を示す図である。
【図７】第３の発行部を示す図である。
【図８】第４の発行部を示す図である。
【図９】第５の発行部を示す図である。
【図１０】第６の発行部を示す図である。
【図１１】本発明の発行ステージを示す図である。
【図１２】従来の発行制御を示す図である。
【図１３】従来の発行ステージを示す図である。
【図１４】変更された発行ステージを示す図である。
【符号の説明】
１、５１  発行ラッチ
２、５２、５３  発行制御回路
３、４、５７、５８  リザベーションステーション
５、６、６０、６１  演算装置
１１  発行制御手段
１２  比較手段
１３  学習手段
１４  レジスタ手段
１５  選択手段
１６  発行手段
２１  ブランチヒストリテーブル
２２  フェッチ／分岐予測部
２３  レベル０命令キャッシュ
２４  リコード部
２５  レベル１命令キャッシュ
２６  レベル２キャッシュ
２７  インタフェース
２８  レベル１データキャッシュ
２９  発行部
３０  ＦＸレジスタファイル
３１  ＦＰレジスタファイル
３２  ＣＣレジスタファイル
３３、３４、３５、３６  リザベーションステーション
３７  ロード／ストア部
３８  ＡＧＥＮ実行部
３９  ＦＸ＆ＦＸＶＩＳ実行部
４０  ＦＰ＆ＦＰＶＩＳ実行部
４１  ＵＰＡバス
５４、７３  比較回路
５５、８１、９３  マルチプレクサ
５６、５９  モニタ回路
７１、９２  エンコーダ
７２  学習回路
８２  減算器
８３  加算器
９１  制御レジスタ
【図１】
0004025493.tif 000004
【図２】
0004025493.tif 000005
【図３】
0004025493.tif 000006
【図４】
0004025493.tif 000007
【図５】
0004025493.tif 000008
【図６】
0004025493.tif 000009
【図７】
0004025493.tif 000010
【図８】
0004025493.tif 000011
【図９】
0004025493.tif 000012
【図１０】
0004025493.tif 000013
【図１１】
0004025493.tif 000014
【図１２】
0004025493.tif 000015
【図１３】
0004025493.tif 000016
【図１４】
0004025493.tif 000017