(57)【要約】【課題】  命令フェッチ時にキャッシュミスが生じた場合のスレッド切替条件を明確にし、マルチスレッド方式の性能を向上させる。【解決手段】  デコードされた命令に対応してエントリが作成され、命令実行完了時にそのエントリが消去されるユニット３と、ユニット３内で消去されていないエントリの数としての未完了命令数を報告する手段５と、キャッシュミス発生後に手段５から未完了命令数が０である報告を受けた時にスレッド切替要求信号を出力する手段４とを備える。【選択図】図１
2005309762.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッド方式を用いる情報処理装置において、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力するスレッド切替要求手段を備えることを特徴とするスレッド切替制御装置。
【請求項２】
前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数が０であることを示す報告を受けた時にスレッド切替要求信号を出力することを特徴とする請求項１記載のスレッド切替制御装置。
【請求項３】
前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
前記スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数報告手段から未完了命令数が１であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする請求項１記載のスレッド切替制御装置。
【請求項４】
前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた１つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を１つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
前記スレッド切替要求手段が、前記キャッシュミスの発生後に前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から２番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする請求項１記載のスレッド切替制御装置。
【請求項５】
前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド切替要求手段が前記スレッド切替要求信号を出力しない時、その後の該スレッド切替要求信号の出力を停止させるスレッド切替要求抑止手段をさらに備えることを特徴とする請求項１記載のスレッド切替制御装置。
【請求項６】
マルチスレッド方式を用いる情報処理装置において、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッドの実行優先順位変更要求信号を出力するスレッド優先順位変更要求手段を備えることを特徴とするスレッド切替制御装置。
【請求項７】
前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数が０であることを示す報告を受けた時にスレッド優先順位変更要求信号を出力することを特徴とする請求項６記載のスレッド切替制御装置。
【請求項８】
前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数報告手段から未完了命令数が１であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする請求項６記載のスレッド切替制御装置。
【請求項９】
前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた１つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を１つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
前記スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から２番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする請求項６記載のスレッド切替制御装置。
【請求項１０】
前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド優先順位変更要求手段が前記スレッド優先順位変更要求信号を出力しない時、その後の該スレッド優先順位変更要求信号の出力を停止させるスレッド優先順位変更要求抑止手段をさらに備えることを特徴とする請求項６記載のスレッド切替制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置における命令実行処理方式に係り、さらに詳しくはハードウェアマルチスレッド方式を用いる情報処理装置におけるスレッド切替方式、またはスレッド実行順位優先順序変更方式に関する。
【背景技術】
【０００２】
計算機の資源をできるだけ有効に利用するための１つの方式としてマルチスレッド方式がある。マルチスレッド方式とは、１つのプロセッサを用いてあたかも複数のプロセッサが処理を行っているかのような効果を生ずる方法である。スレッドとは、そのように複数の論理的なプロセッサの内で１つのプロセッサの処理を指すものである。マルチスレッド方式の１つがバーティカル・マルチ・スレッド（ＶＭＴ）方式である。この方式はスレッドの切替要因が生じた場合にスレッドの切替を行って、演算器を遊ばせることなく、別の無関係な処理を行わせるものである。
【０００３】
図２１はこのＶＭＴ方式の従来例の動作説明図である。この方式ではある時刻に実際に実行パイプラインを流れるスレッドの処理は１つであり、時間を縦方向に分割したマルチスレッド処理となるが、ＯＳには２つのＣＰＵが動いているように見える。効率よくマルチスレッド処理を行うためにはどのような条件でスレッドを切替えるかが重要となる。
【０００４】
マルチスレッドのもう１つの方式が、シマルテーニアス・マルチ・スレッド（ＳＭＴ）方式である。１つ以上のパイプラインに対して複数のスレッドの命令列を交互、もしくは同時に投入し、演算器を共有して処理を行うマルチスレッド方式であり、ある時刻に実行処理されているスレッドは複数存在し得る。ＳＭＴ方式においては、あるスレッドが動作を停止しているようなスレッド切替条件が生じた場合には、他のスレッドの実行処理を優先して行うことによって、効率的に計算機の資源を利用することが可能となる。なおＳＭＴ方式では、アドレス計算器や演算器を必要に応じて複数用意して使用することもできる。
【０００５】
このようなマルチスレッド方式を用いた従来技術に関して次の文献がある。
【特許文献１】特開平１１−９６００５号公報  「並列処理装置」
【特許文献２】特表平２００１−５２１２１５号公報  「マルチスレッド式プロセッサでスレッド切替イベントを選択するための方法および装置」
【特許文献３】特表平２００１−５２１２１９号公報  「マルチスレッド式プロセッサでのスレッド優先順位の変更」
【０００６】
特許文献１では、待機中のスレッド実行部を活用して、条件分岐命令の条件成立側、非成立側の双方の命令を実行して、成立／非成立の確定後にどちらかの処理を選択することによって高速化を図る技術が開示されている。
【０００７】
特許文献２、および３には、スレッド切替条件を格納するためのスレッド切替制御レジスタを含むスレッド切替論理におけるスレッド優先順位の変更や、スレッド切替イベントの選択が可能なシステムが開示されている。
【０００８】
スレッド切替条件の１つとして重要なものとしては、キャッシュミスによるメモリアクセスがある。そのようなメモリアクセスには非常に時間がかかり、キャッシュミス時のペナルティは高速なプロセッサにおいては非常に大きくなる。プロセッサ内部の演算器等は使用されない状態が長時間続き、その待ち時間を有効に使うためには、スレッドの切替を行う必要がある。
【０００９】
しかしながらキャッシュミスにはオペランド側のキャッシュミスも存在し、命令キャッシュのミスとオペランドキャッシュのミスとを正しく見分ける必要があり、また例えば分岐命令に対応してキャッシュミスが生じた場合などには、分岐予測ミス等によってメモリアクセス中の命令列が実際には使用されず、同じスレッドの内部で正しい方向の処理がすぐに行われることがあるため、そのような場合にはスレッドを切替える必要はなく、命令キャッシュのミスが生じた場合にもスレッドの切替を行う条件をさらに明確にする必要があるという問題点があった。
【００１０】
上述の特許文献１〜特許文献３においては、このように例えば命令キャッシュのミスを契機として行われるべきスレッドの切替方法やその条件については明らかでなく、スレッドの切替条件をさらに明確にする必要があるという問題点については解決されていなかった。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の課題は、上述の問題点に鑑み、命令フェッチ時のキャッシュミスを契機としてスレッドの切替を行う方式を提供することであり、さらに分岐命令等に対応してキャッシュミスが生じた場合にスレッド切替を行う条件をさらに明確にしてマルチスレッド方式の性能を向上させることである。
【課題を解決するための手段】
【００１２】
図１は本発明のスレッド切替制御方式を用いる情報処理装置の原理構成ブロック図である。同図において情報処理装置１は、その内部にスレッド切替制御装置２を備え、スレッド切替制御装置２は、命令フェッチ時にキャッシュにフェッチすべき命令が格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力するスレッド切替要求手段４、例えば切替要求生成回路を少なくとも備えている。
【００１３】
発明の実施の形態においては、情報処理装置１はすでにデコードされた命令に１対１に対応して、その命令の実行に関係するデータが格納されるエントリが作成されて、その命令の実行完了時にそのエントリが消去される命令完了管理ユニット３をさらに備え、またスレッド切替制御装置２が、作成されたエントリの内で消去されていないエントリの数によって実行未完了の命令の数をスレッド切替要求手段４に報告する未完了命令数報告手段５、例えばＣＳＥ使用個数カウンタと比較回路をさらに備え、スレッド切替要求手段４がキャッシュミスの発生後に該未完了命令数が０であることを示す報告を受け取った時にスレッド切替要求信号を出力することもできる。これによってキャッシュミスを起こした命令より前のすべての命令の実行が完了し、キャッシュミスを起こした命令が使用されることが確実になった時点でスレッド切替要求信号が出力されることになる。
【００１４】
また実施の形態においては、情報処理装置１が前述の命令完了管理ユニット３と、分岐命令のデコード時に、そのデコード順に分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、分岐命令の完了時にそのエントリの内容が消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションをさらに備え、またスレッド切替制御装置２が前述の未完了命令数報告手段５を備え、スレッド切替要求手段４がキャッシュミスの発生後に未完了命令数報告手段５から未完了の命令数が１であることを示す報告を受け、かつ分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド切替要求信号を出力することもできる。
【００１５】
さらに実施の形態においては、情報処理装置１が前述の命令完了ユニット３と、分岐命令のデコード時にデコード順に分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、分岐命令の完了時にそのエントリの内容が消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、その分岐命令に対応する遅延命令がその分岐命令の直後に存在する時、その遅延命令を対応する分岐命令の実行に関するデータが格納されたエントリに対応させて格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた１つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時にその命令を１つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、スレッド切替要求手段４が、キャッシュミスの発生後に分岐リザベーションステーションから先頭エントリのみのデータが有効で、かつ先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、また複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきレジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファからそのレジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド切替要求信号を出力することもできる。
【００１６】
実施の形態においては、キャッシュミスの発生時に起動され、あらかじめ定められた時間内にスレッド切替要求手段４が要求信号を出力しない時に、その後の要求信号出力を停止させるスレッド切替要求抑止手段をさらに備えることもできる。
【００１７】
本発明のスレッド切替制御方式を用いる情報処理装置においては、命令フェッチ時にキャッシュにフェッチすべき命令が格納されていないキャッシュミスの発生後にスレッドの実行優先順位の変更要求を出力するスレッド優先順位変更要求手段、例えば切替要求生成回路を有するスレッド切替制御装置を備える。
【００１８】
発明の実施の形態においては、前述と同様に情報処理装置１が命令完了管理ユニット３を、またスレッド切替制御装置２が未完了命令数報告手段５をさらに備え、未完了命令数が０であることを示す報告を受け取った時にスレッド優先順位変更要求手段が変更要求信号を出力することもできる。
【００１９】
また実施の形態においては、前述と同様に情報処理装置１が命令完了管理ユニット３と分岐リザベーションステーションとを、またスレッド切替制御装置２が未完了命令数報告手段５をさらに備え、未完了令数が１であることを示す報告と分岐リザベーションステーションの先頭エントリに有効データが格納されていることを示す信号を受け取った時に優先順位変更要求信号を出力することもできる。
【００２０】
さらに実施の形態においては、前述と同様に情報処理装置１が命令完了管理ユニット３と、ディレイスロットスタックを有する分岐リザベーションステーションと、複数のインストラクション・ワード・レジスタをさらに備え、分岐リザベーションステーションの先頭エントリのみのデータが有効であり、かつ先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け取り、実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータの無効を示す信号を受け取り、命令バッファからそのレジスタに供給すべきデータの無効を示す信号を受け取った時に優先順位変更要求信号を出力することもできる。
【００２１】
次に本発明の実施形態においては、スレッドの切替を制御する方法として、命令フェッチ時にキャッシュにフェッチすべき命令が格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力する方法を用いることができる。
【発明の効果】
【００２２】
本発明によれば、命令フェッチ時におけるキャッシュミスを契機として、例えばキャッシュミスを起こした命令よりも実行順序が早いすべての命令が終了したことを検出してスレッドの切替やスレッド実行優先順位の変更を行うことによって、キャッシュミスを起こした命令が確実に使用されることが検出された時点でスレッド切替などを行うことが可能となり、マルチスレッド方式の性能向上に寄与するところが大きい。
【発明を実施するための最良の形態】
【００２３】
図２は、本発明のスレッド切替制御方式が用いられる情報処理装置の全体構成ブロック図である。ただし、情報処理装置の内で本発明の説明に直接の関係がない部分は省略されている。
【００２４】
図２において情報処理装置は、実行すべき命令をフェッチするための命令フェッチ制御ユニット１０、命令フェッチ制御ユニット１０からの命令フェッチ要求を受けて命令キャッシュ１２に格納されている命令を検索するキャッシュ制御ユニット１１、キャッシュ制御ユニット１１によって出力されたフェッチされた命令群を一時的に格納する命令バッファ１３、命令バッファ１３に格納されている命令列の命令をデコードするデコーダ１４、デコードされた命令のすべてについてその実行完了までの管理を行う命令完了管理ユニット１５、デコードされた命令が分岐命令である時、その分岐命令の完了までを制御する分岐リザベーションステーション１６、分岐命令以外の命令、例えば演算命令に関するデータを格納し、その実行を管理するその他のリザベーションステーション１７、例えば演算用リザベーションステーションからの演算要求に対応して演算を行う演算ユニット１８、ロード命令、ストア命令などの管理を行うその他のリザベーションステーション１７からのロード、またはストア要求に対応してオペランドキャッシュ２０の内容を検索するキャッシュ制御ユニット１９、デコーダ１４によって命令完了管理ユニット１５内のエントリ（コミット・スタック・エントリ  ＣＳＥ）にセットされた命令の数と、命令完了管理ユニット１５から報告される完了命令数によってＣＳＥの使用個数をカウントするカウンタ２１、カウンタ２１の出力によって、例えばＣＳＥの使用個数が０であることを検出する比較回路２２、命令キャッシュ１２内にフェッチすべき命令が存在せず、キャッシュミスの場合にキャッシュ制御ユニット１１からのメモリリード要求を受け取るメモリ２３を備えている。
【００２５】
なお本発明のスレッド切替制御装置は、図２のＣＳＥ使用個数カウンタ２１、比較回路２２、および例えば命令フェッチ制御ユニット１０の内部に備えられる切替要求生成回路によって基本的に構成される。
【００２６】
図２において、命令フェッチ制御ユニット１０からフェッチが要求された命令が命令キャッシュ１２に存在しないときには、キャッシュ制御ユニット１１から命令フェッチ制御ユニット１０に対して次に返すべき命令のミスヒット報告がなされるとともに、メモリリード要求がメモリ２３に出力される。
【００２７】
命令バッファ１３に一時的に格納された命令列の内で、一度に最大で４つの命令がデコーダ１４に与えられ、デコーダ１４によって一度に最大４命令がデコードされて、例えば全ての命令に関するデータが命令完了管理ユニット１５に与えられる。
【００２８】
分岐リザベーションステーション１６からは、分岐命令の完了毎にその完了報告が、演算ユニット１８からは、例えば固定小数点演算、浮動小数点演算などの完了報告が、またキャッシュ制御ユニット１９からはロード命令、あるいはストア命令の完了報告が命令完了管理ユニット１５に与えられる。
【００２９】
命令フェッチ制御ユニット１０に対しては、前述のように比較回路２２から、例えばＣＳＥの使用個数が０であることの報告が与えられる以外に、分岐リザベーションステーション１６から必要に応じてディレイスロット待ちを示す信号が入力される。このディレイスロット待ちは後述するように分岐命令にディレイスロット命令（遅延命令）が対応しており、そのディレイスロット命令に対応して命令キャッシュのミスヒットが検出された時に、そのディレイスロットの命令がフェッチされるまでの待ち状態であることを示すものである。
【００３０】
次に本実施形態において、スレッド切替の制御のために重要な役割を果たす図２内の命令完了管理ユニット１５の動作について図３を用いて説明する。図３において命令完了管理ユニット１５には、図２で説明したようにデコーダ１４によってデコードされた命令のそれぞれに対応してコミット・スタック・エントリ  ＣＳＥが作成される。このエントリのセットと命令完了によるエントリの消去は、インオーダで行われる。デコーダ１４によって最大４つの命令が同時にデコードされるため、最大４命令が４個のエントリ、すなわちＣＳＥに同時にセットされるとともに、各リザベーションステーション、例えばその他のリザベーションステーション１７にも対応するエントリの作成が行われる。
【００３１】
命令完了管理ユニット１５内部のＣＳＥ、すなわちエントリの総数を６４個とすると、６４個のエントリは図３に示すように円状に連続するイメージとなる。新しいエントリはすでにデータが格納されているエントリの後ろに順次作成され、先頭から順番に命令の完了に伴って消去される。次にエントリを作成すべき位置、次にエントリを消去すべき位置はそれぞれポインタによって示される。現在使用されているＣＳＥの個数は、ＣＳＥ使用個数カウンタ２１によってカウントされる。そのカウンタ２１には、デコーダ１４からＤリリースのサイクルでＮ個の命令が同時にセットされたことを示す信号が、また命令完了管理ユニット１５からＭ個の命令が完了したことを示す信号が入力される。
【００３２】
次に本発明の第１の実施形態について図４〜図７を用いて説明する。この第１の実施形態では、図２で説明したように比較回路２２から命令完了管理ユニット１５の内部のエントリ、すなわちＣＳＥの使用個数が０であることが報告された時点で、命令フェッチ制御ユニット１０から、スレッド制御に必要とされるレジスタやプログラムカウンタなどに対してスレッド切替要求信号が出されることになる。この第１の実施形態は、デコーダ１４によって同時にデコードされる命令の内で、例えば先頭命令に対応してキャッシュミスが起こった場合に相当する。
【００３３】
図４はこのように先頭命令に対してキャッシュミスが起こった場合の命令完了管理ユニット１５内の各エントリの状態の説明図である。同図において上部は、すでに前回の命令フェッチとデコードの結果によって作成されたエントリとしてのＣＳＥｍからＣＳＥｍ＋３までのエントリに対してデータが格納され、次に後続の４つの命令をフェッチしようとした時点で先頭命令に対するキャッシュミスが発生し、命令のフェッチができないために命令完了管理ユニット１５の内部で新しいエントリ、すなわちＣＳＥｍ＋４以降のエントリが作成できない状態を示している。
【００３４】
その後、ある程度時間が経過した後の状態が下の図であり、エントリＣＳＥｍからＣＳＥｍ＋３までのエントリにデータが格納された命令の全てに対して完了条件が揃ったことが判定され、これら４つのエントリは消去される。しかしながら前述のように次のＣＳＥｍ＋４以降のエントリは作成されておらず、全てのエントリが空となった状態となり、比較回路２２は、全てのエントリが空であることを示すＣＳＥ＿ＥＭＰＴＹ信号をＨとして、命令フェッチ制御ユニット１０に与えることになる。この時キャッシュ制御ユニット１１からは、キャッシュミスが起こり、まだメモリ２３からデータが読み出されていないことを示すＩＦ＿ＴＯＱ＿ＭＩＳＳ＿ＤＥＴＥＣＴＥＤ信号がＨとして命令フェッチ制御ユニット１０に与えられている。
【００３５】
図５は図４における比較回路２２の動作の説明図である。同図においてデコーダ１４からは前述のようにＮ、最大４個の命令をセットしたことを示す信号＋Ｎが、また命令完了管理ユニット１５からはＭ、最大４個の命令が完了したことを示す−Ｍ信号がＣＳＥ使用個数カウンタ２１に入力され、カウンタ２１は現在のカウント値にセット命令数Ｎを加算し、完了命令数Ｍを減算して、結果としてのカウント値を比較回路２２に与える。比較回路２２はこのＣＳＥ使用個数カウンタ２１のカウント値が０である時に、ＣＳＥ＿ＥＭＰＴＹ信号をＨとして図４の命令フェッチ制御ユニット１０に与える。
【００３６】
図６は命令フェッチ制御ユニット１０の内部に備えられるスレッド切替要求生成回路の動作説明図である。スレッド切替要求生成回路２４は、実質的に１つのＡＮＤゲート２５によって構成され、キャッシュ制御ユニット１１から次に返すべき命令がキャッシュミスしていることを示すＩＦ＿ＴＯＱ＿ＭＩＳＳ＿ＤＥＴＥＣＴＥＤ信号がＨとして、また比較回路２２からＣＳＥ使用個数カウンタ２１の値が０であることを示すＣＳＥ＿ＥＭＰＴＹ信号がＨとして与えられ、２つの信号の入力時点でスレッド切替要求を示すＴＨＲＥＡＤ＿ＳＷＩＴＣＨ＿ＲＥＱＵＥＳＴをＨとして、例えば各種レジスタやプログラムカウンタなどに出力する。
【００３７】
図７は図６のスレッド切替要求生成回路におけるスレッド切替要求信号出力までのタイムチャートである。図２においてキャッシュ制御ユニット１１からのＩＦ＿ＴＯＱ＿ＭＩＳＳ＿ＤＥＴＥＣＴＥＤ信号はキャッシュミスの判定時点からＨとなるが、その後比較回路２２からＣＳＥの全てが空であることを示すＣＳＥ＿ＥＭＰＴＹ信号がＨとして出力された時点で、切替要求を示すＴＨＲＥＡＤ＿ＳＷＩＴＣＨ＿ＲＥＱＵＥＳＴ信号がＨとなる。なお、以上の説明では最大４個のデコード対象命令のうち先頭の命令に対応してキャッシュミスが起こった場合を例として第１の実施形態を説明したが、第１の実施形態はＣＳＥ使用個数カウンタのカウント値が０となった時点でスレッド切替を行うものであり、キャッシュミスを起こした命令が先頭に限定されないことは当然である。
【００３８】
本発明の第２の実施形態について図８〜図１３を用いて説明する。この第２の実施形態では、フェッチされる命令が分岐命令であり、ＳＰＡＲＣ（登録商標）アーキテクチャのように、その分岐命令の直後にその分岐命令に対応するディレイスロット命令（遅延命令）が存在し、そのディレイスロット命令に対するキャッシュミスが起こった場合にスレッド切替要求が行われるものである。
【００３９】
この第２の実施形態においては、図２の命令完了管理ユニット１５とともに、分岐リザベーションステーション１６がスレッド切替制御において重要な役割を果たすため、図８を用いて分岐リザベーションステーション１６の動作について説明する。分岐リザベーションステーション１６には、分岐命令のそれぞれに対応するデータが格納されるエントリとしてＲＳＢＲ（リザベーション・ステーション・フォー・ブランチ）０から複数個、図８ではＲＳＢＲ４までのエントリが各分岐命令のデコードの時点で作成される。新しいエントリはどんどん下に作られ、分岐命令の実行が完了して対応するエントリ内容が消去されると、エントリの内容は順次上（先頭方向）に移動される。分岐命令の実行完了に伴うエントリの消去はインオーダで行われ、従って先頭エントリには常に最も古く、実行が未完了である分岐命令に関するデータが格納されている。各エントリに格納されているデータが有効であるかどうかはＶＡＬＩＤ信号によって外部に出力される。このような分岐リザベーションステーションの動作の詳細については出願人の次の先願に開示されている。
【特許文献４】特開２０００−１８１７１０号公報「分岐命令実行制御装置」
【００４０】
分岐命令に対応してその直後にディレイスロット命令が存在する場合、その命令はデコーダ１４によってデコードされることなく、ディレイスロット命令を格納するディレイスロットスタック（ＤＳＳ）にセットされる。ＤＳＳに命令がセットされた時には、そのエントリが有効であることを示すＶＡＬＩＤ信号がＨとして外部に出力される。
【００４１】
分岐命令が完了したときには、命令完了管理ユニット１５に対して対応するエントリの処理が終了したことを示すＣＯＭＰＬＥＴＥＤ信号がＨとして出力される。同時にいくつまで分岐命令の実行完了を報告できるかは実装形式に依存するが、前述のようにこの報告の時点で対応するエントリの内容は消去され、各エントリの内容は上に移動される。
【００４２】
命令バッファ１３からデコーダ１４に対しては、同時に最大４個の命令が与えられるが、その４個の命令はそれぞれ４つのインストラクション・ワード・レジスタ  ＩＷＲ０からＩＷＲ３に与えられる。命令が与えられる場合には、その命令のデータとそのデータが有効であることを示すバリッド信号とがセットとして与えられる。
【００４３】
図８においてはデコードの結果、ＩＷＲ０の命令が分岐命令であり、Ｄリリースのサイクルでその分岐命令に対応するデータがＲＳＢＲにセットされ、その直後の後続命令、すなわちＩＷＲ１に格納されたディレイスロット命令はデコードされることなく、ＤＳＳにセットされることが示されている。分岐命令の完了を命令完了管理ユニット１５に報告するためには、その分岐命令のデータが格納されているエントリに対応するＤＳＳのエントリに命令データが格納されていることが必要である。分岐の予測が失敗した場合には、ディレイスロット命令は、その命令が格納されたＤＳＳから再びインストラクション・ワード・レジスタに供給され、デコーダによってデコードされて、ディレイスロット命令の実行が行われる。
【００４４】
図９は、分岐リザベーションステーションにおけるエントリ移動の説明図である。同図において完了待ちの分岐命令、すなわち先頭エントリとしてのＲＳＢＲ０に対応する分岐命令Ｂが完了すると、その次のＲＳＢＲ１に格納されている分岐命令Ａに対するデータが上のエントリＲＳＢＲ０に移動される。ＲＳＢＲ０のエントリに対応する分岐命令Ｂの予測が間違っている場合には、ＲＳＢＲ１以降のエントリは全て消去される。なおディレイスロットスタックの先頭エントリＤＳＳ０には分岐命令Ｂに対応する、すなわちその直後のディレイスロット命令が格納されている。
【００４５】
図１０は、分岐命令Ａの直後のディレイスロット命令に対してキャッシュミスが発生した場合の、ＲＳＢＲエントリとＤＳＳエントリの格納内容の説明図である。ディレイスロット命令に対するキャッシュミスヒットが発生した場合、ＲＳＢＲ０に対応するＤＳＳ０のエントリには、ディレイスロット命令が格納されることなく、図２においてキャッシュ制御ユニット１１からメモリ２３に対するメモリリード要求がなされることになる。そこで図１０において分岐命令Ａを完了させようとしても、ＤＳＳ０のエントリにディレイスロット命令が格納されていないため、分岐命令Ａの処理を完了させることができず、ＲＳＢＲの先頭エントリに対応するバリッド信号はＨのままとなる。キャッシュミスによって命令フェッチが停滞しているため、他のエントリは当然空となっている。
【００４６】
図１１は、第２の実施形態における命令完了管理ユニット内のデータ格納状態の説明図である。まず上の図において、エントリＣＳＥｍ＋３に対応する分岐命令の直後のディレイスロット命令に対してキャッシュミスが発生した場合、このディレイスロット命令が格納されるべきＣＳＥｍ＋４のエントリは空のままとなる。
【００４７】
その後時間が経過し、下の図に示すようにＣＳＥｍからＣＳＥｍ＋２までの３つのエントリに格納されている命令に対応する完了条件が揃い、完了命令数がＣＳＥ使用個数カウンタ２１に与えられるとともに３つのエントリの内容は消去されるが、分岐命令に対応するエントリＣＳＥｍ＋３の次のエントリＣＳＥｍ＋４にディレイスロット命令が格納されていないために分岐命令を完了させることができず、ＣＳＥｍ＋３のエントリだけが空でない状態となる。この状態に対応して、比較回路２２から命令フェッチ制御ユニット１０に対してはＣＳＥ使用個数カウンタ２１のカウント値が１であることを示すＵＳＥＤ＿ＣＳＥ＿ＥＱ＿１信号がＨとして与えられるとともに、分岐リザベーションステーション１６からその先頭エントリが有効であることを示すＲＳＢＲ０＿ＶＡＬＩＤ信号がＨとして与えられる。
【００４８】
図１２は第２の実施形態におけるスレッド切替要求生成回路の動作説明図である。同図において要求生成回路２４は実質的に１つのＡＮＤゲート２６によって構成される。ＡＮＤゲート２６に対しては、図６におけると同様にキャッシュ制御ユニット１１から次に返すべき命令がキャッシュミスであることを示す信号がＨとして、また図１１で説明したように分岐リザベーションステーション１６からは先頭のエントリが有効であることを示す信号がＨとして、比較回路２２からはＣＳＥ使用個数カウンタ２１の値が１であることを示す信号がＨとしてそれぞれ入力され、スレッド切替要求を示す信号が出力される。前述の第１の実施形態と組み合わせた動作を実現するために、図６のＡＮＤゲート２５と図１２のＡＮＤゲート２６の出力をそれぞれＯＲゲートに入力させ、そのＯＲゲートの出力をスレッド切替要求信号とすることもできる。
【００４９】
図１３は図１２のスレッド切替要求生成回路における切替信号出力までのタイムチャートである。同図において分岐命令に対応するエントリが作られ、ＲＳＢＲ０＿ＶＡＬＩＤ信号がＨとなった後に、その直後のディレイスロット命令に対するキャッシュミスが発生したことを示す信号がＨとなり、さらにその後ＣＳＥ使用個数カウンタの値が１であることを示す信号がＨとなった時点で、スレッド切替要求信号がＨとなる。
【００５０】
このように第２の実施形態では第１の実施形態と異なり、キャッシュミスを起こした命令より前のすべての命令の実行が完了し、ＣＳＥ使用個数カウンタ２１の値が０となったことを条件とすることはできず、そのカウント値が１であり、かつ分岐リザベーションステーション１６の先頭エントリが有効であるという条件が用いられる。
【００５１】
次に本発明の第３の実施形態について説明する。この第３の実施形態では、第２の実施形態における同様に、分岐命令の直後に存在するディレイスロット命令のフェッチ要求に対してキャッシュミスが発生して、スレッド切替の契機となるが、キャッシュミス後にディレイスロット命令のデータがメモリからリードされ、その命令が命令バッファからインストラクション・ワード・レジスタを介してデコーダに与えられる時には、例えば図８において４つの命令の内で、先頭の命令が与えられるインストラクション・ワード・レジスタ  ＩＷＲ０を介して命令が供給されるために、分岐命令が１つだけ実行未完了で残り、後続命令としてのディレイスロット命令がＩＷＲ０に供給されていないことが検出された場合にスレッド切替要求が出されることになる。
【００５２】
図１４は、４つのインストラクション・ワード・レジスタの内で最後の順位のＩＷＲ３を介して分岐命令がデコーダから分岐リザベーションステーション１６に与えられる場合の、命令バッファ１３からデコーダ１４への命令データ供給の説明図である。同図において先頭から３番目の順位までの命令が全て分岐命令以外の命令であるとすると、それらの命令は図２でその他のリザベーションステーション１７に与えられ、ＩＷＲ３を介して供給される最後の順位の分岐命令は分岐リザベーションステーション１６に与えられる。ディレイスロット命令は分岐命令の直後の命令であるために、その供給は図１４には示されておらず、次のサイクルで命令バッファ１３からＩＷＲ０を介してデコーダ１４に供給されるはずとなっている。
【００５３】
図１５は、図１４における命令バッファ１３から４つのインストラクション・ワード・レジスタを介した命令データ供給のタイムチャートである。同図においてＥＢは分岐命令のインストラクション・ワード・レジスタへの命令投入のサイクルを示し、ＥＤはディレイスロット命令のＩＷＲへの投入サイクルを示す、またＥｘ＿ＶＡＬＩＤは命令バッファ内にＩＷＲに投入すべき命令が存在することを、またＤｘ＿ＶＡＬＩＤはＩＷＲｘに命令データがセットされ、デコーダにその命令を供給することが可能であることを示す信号であり、Ｄｘ＿ＲＥＬＥＡＳＥはデコーダから各リザベーションステーションに命令に関するデータの投入が行われたことを示す信号である。
【００５４】
図１５においては、ディレイスロット命令のフェッチ要求に対してはキャッシュにヒットし、ＥＤサイクルでＩＷＲ０に投入されたディレイスロット命令は次のサイクルでデコーダ１４に与えられ、さらに次のサイクルにディレイスロットスタック内でその直前の分岐命令、すなわちＩＷＲ３から供給された分岐命令に関するデータが格納された分岐リザベーションステーション１６のｎ番目のエントリＲＳＢＲｎに対応する位置ＤＳＳｎに格納されている。
【００５５】
すなわちここでは、図１４で説明したように分岐命令がＩＷＲ３を介してレコーダに供給された次のサイクルで、ディレイスロット命令に対するフェッチ要求がキャッシュにヒットし、正常な動作が行われた場合を説明しているが、ディレイスロット命令のフェッチに対してキャッシュミスが起こった場合には、当然ディレイスロット命令の供給は行われず、メモリ２３に対するリード動作が行われることになる。
【００５６】
図１６は図１４、図１５と異なり、ディレイスロット命令のフェッチ要求に対してキャッシュミスが発生し、スレッド切替が行われるべき状態となる場合の命令バッファからの命令データ供給動作の説明図である。
【００５７】
図１６においては、分岐命令がＩＷＲ２からデコーダを介して分岐リザベーションステーション１６に供給されるが、その直後の命令であるディレイスロット命令、すなわちＩＲＷ３を介してデコーダに供給されるべき命令がそのフェッチ時にキャッシュミスとなり、図２においてメモリ２３からそのディレイスロット命令のデータが供給されるまでの期間がスレッド切替要求の対象期間となる。前述のようにメモリ２３からディレイスロット命令のデータが命令バッファ１３に供給されると、その命令データはＩＷＲ０を介してデコーダに供給される。図１６では分岐命令はＩＲＷ２を介してデコーダに供給されているが、分岐命令を供給するインストラクション・ワード・レジスタはＩＷＲ２には限定されず、図１４で説明したようにＩＷＲ３を介しても、またＩＷＲ０、またはＩＷＲ１を介してデコーダに供給されても良い。いずれにしてもその直後のディレイスロット命令のフェッチ時にキャッシュミスが発生すると、メモリ２３から読み出された命令データが供給されるべきＩＷＲ０に対応するＥ０＿ＶＡＬＩＤ信号、およびＤ０＿ＶＡＬＩＤ信号の値がＬの期間が続くことになる。
【００５８】
図１７は図１６に対応する命令データ供給のタイムチャートである。同図を図１５の正常動作の場合と比較すると、分岐命令がＩＷＲ２を介してデコーダに供給されることによる相違と、ＥＤサイクルにおいてディレイスロット（ＤＳ）命令に対応するＥ０＿ＶＡＬＩＤ信号がオンとならず、その後の命令データの供給が停止され、従って一番下のＤＳＳｎ＿ＶＡＬＩＤ信号がオンとならない点が基本的に異なっている。
【００５９】
図１８は実施形態３におけるスレッド切替要求信号生成回路の動作説明図である。第３の実施形態では、分岐命令の直後のディレイスロット命令のフェッチ時にキャッシュミスが発生し、そのデータがメモリから読み出されて、例えば図１６のインストラクション・ワード・レジスタ  ＩＷＲ０を介して供給されるまでの期間を対象としてスレッド切替要求が出されるために、ディレイスロット命令の直前にある分岐命令以外の分岐命令が完了していることは必要であるが、その分岐命令以外の命令が完了していることは必ずしも必要ではなく、例えば図１２と比較するとＣＳＥ使用個数カウンタ２１のカウント値が１であるという条件は必要でない。
【００６０】
図１８においてスレッド切替要求信号を生成するＡＮＤゲート２７に対しては、キャッシュ制御ユニット１１からはディレイスロット命令のフェッチ要求に対するキャッシュミスが起こった時点で図１２と同様の信号が与えられる。分岐リザベーションステーション１６からは、その先頭エントリのデータが有効であることを示す信号と、先頭から２番目のエントリのデータが無効であることを示す信号、およびＲＳＢＲ０に対応するディレイスロットスタックの位置のデータが無効であることを示す信号が入力される。これによって分岐リザベーションステーション１６に格納されている分岐命令が１つだけであり、またそれに対応するディレイスロットスタックには、データが格納されていないことになる。
【００６１】
前述のようにディレイスロット命令のフェッチ時にキャッシュミスが発生すると、その命令データがメモリから読み出されるまでの期間は、命令バッファ１３からＩＷＲ０に与えられるＥ０＿ＶＡＬＩＤ信号と、ＩＷＲ０からデコーダに与えられるＤ０＿ＶＡＬＩＤ信号とはともにＬとなっており、これらの条件もＡＮＤゲート２７に入力されることによってスレッド切替要求信号が出力されることになる。
【００６２】
図１９は図１８のスレッド切替要求信号生成回路における動作のタイムチャートである。同図において簡単のため、Ｅ０＿ＶＡＬＩＤ信号とＤ０＿ＶＡＬＩＤ信号とはともに最初からＬであるとし、またＲＳＢＲ０＿ＶＡＬＩＤ信号も最初からＨであるとする。
【００６３】
図１９では最初から４番目のサイクルでディレイスロット命令に対するキャッシュミスが検出され、ＲＳＢＲ１＿ＶＡＬＩＤ信号はその前のサイクルからＬであるとすると、キャッシュミスが検出されたサイクルからスレッド切替要求を示すＴＨＲＥＡＤ＿ＳＷＩＴＣＨ＿ＲＥＱＵＥＳＴ信号がＨとなる。
【００６４】
すなわち第３の実施形態では、第１の実施形態のようにキャッシュミスを起こした命令より前のすべての命令の実行が完了していることを条件とするのではなく、キャッシュミスを起こしたディレイスロット命令に対応する分岐命令以外の（分岐命令でない）命令が実行完了していなくとも、それ以外の分岐命令が実行完了していれば図９で説明したエントリの消去は起こらず、命令の再フェッチが起こらないことを条件としたスレッド切替が行われる。
【００６５】
以上において本発明の実施形態について詳細に説明したが、例えば第１の実施形態において、命令フェッチ要求に対してキャッシュミスが発生した命令以前の全ての命令が完了した時点でスレッド切替要求信号を出力する場合、キャッシュミスが検出されてからそれ以前の命令がすべて実行完了したことが検出されるまでの時間が長くなれば、スレッド切替要求信号が出力されて実際にスレッドの切替が行われた直後に、メモリから読み出された命令データが供給可能となることも考えられる。このような場合にはスレッド切替による性能向上効果は期待しにくいため、スレッド切替を抑止した方が良いと考えられる。
【００６６】
図２０は、そのようなスレッド切替抑止方式の説明図である。同図においてレジスタ３５にキャッシュミスが検出されてからスレッド切替を抑止するまでの時間の上限値が設定され、その上限値はカウンタ３６に与えられる。カウンタ３６はキャッシュ制御ユニット１１から与えられるキャッシュミス検出信号、すなわちＩＦ＿ＴＯＱ＿ＭＩＳＳ＿ＤＥＴＥＣＴＥＤ信号がＨとなった時点で、例えばカウントダウンを開始し、カウント値が０となった時点でタイムアウト信号を切替要求抑止回路３７に出力する。切替抑止回路３７はタイムアウト信号の入力時点以後は、例えば図６で説明した切替要求生成回路２４からの切替要求を抑止する動作を行う。またキャッシュ制御ユニット１１からのキャッシュミス検出信号は、例えばメモリ２３から実際の命令データが届いた時点でＬになり、その時点以降も切替要求の抑止が行われる。切替要求の抑止が行われない間は、スレッド切替要求信号生成回路２４の出力は切替要求抑止回路３７を介してスレッド切替に関係するステートレジスタやプログラムカウンタなどに与えられる。
【００６７】
以上の説明では、フェッチが要求された命令に対するキャッシュミスの発生を契機としてスレッド切替が行われる方式、すなわちＶＭＴ方式を基本として本発明の実施形態を説明したが、本発明の方式はＶＭＴ方式に限定されず、ＳＭＴ方式にも利用することができる。ＳＭＴ方式では、複数スレッドの命令が同時にパイプラインを流れているために、キャッシュミスが起こった命令列（スレッドを示すタグがついている）が実行されていたスレッドについて、前述の第１の実施形態から第３の実施形態におけると同様にスレッド毎に条件判定を行い、スレッド切替条件が成立すればキャッシュミスが発生したスレッド、すなわちデータ待ち状態に入ったスレッド以外のスレッドの命令列を優先的にパイプラインに投入したり、演算処理を行わせたりすることによって性能向上を実現することができる。
【００６８】
また以上の説明ではキャッシュミスが発生した時、キャッシュに存在しない命令データをメモリからリードする場合について発明の実施形態を説明したが、キャッシュが複数階層を持つ場合には、次にＣＰＵから遠い階層のキャッシュにアクセスし、データリードを行うことになるが、この場合次の階層へのアクセスに要する時間が十分に長く、その時間をスレッド切替に有効に使える場合には、スレッド切替を行うことによって性能向上を図ることができる。複数階層を持つキャッシュシステムにおいて、例えば途中の階層においてキャッシュミスが発生した場合には、図２における命令フェッチ制御ユニット１０に対してのミスヒット報告は、キャッシュミスが発生した階層から直接に行われてもよく、各階層を経由して最もＣＰＵに近い階層のキャッシュから行われても良い。
【００６９】
さらに以上においては、命令キャッシュのミスによるメモリアクセス、および複数階層キャッシュ内のある階層におけるキャッシュミスによる次階層キャッシュへのアクセスを契機とするスレッド切替について説明したが、スレッド切替の契機はこれに限定されることはなく、他の条件、例えばオペランドキャッシュのミスや、複数の条件の組合せを契機としてスレッド切替の制御を行うことも当然可能である。
【００７０】
（付記１）  マルチスレッド方式を用いる情報処理装置において、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力するスレッド切替要求手段を備えることを特徴とするスレッド切替制御装置。
【００７１】
（付記２）  前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数が０であることを示す報告を受けた時にスレッド切替要求信号を出力することを特徴とする付記１記載のスレッド切替制御装置。
【００７２】
（付記３）  前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド切替要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
前記スレッド切替要求手段が、前記キャッシュミスの発生後に該未完了命令数報告手段から未完了命令数が１であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする付記１記載のスレッド切替制御装置。
【００７３】
（付記４）  前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた１つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を１つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
前記スレッド切替要求手段が、前記キャッシュミスの発生後に前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から２番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド切替要求信号を出力することを特徴とする付記１記載のスレッド切替制御装置。
【００７４】
（付記５）  前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド切替要求手段が前記スレッド切替要求信号を出力しない時、その後の該スレッド切替要求信号の出力を停止させるスレッド切替要求抑止手段をさらに備えることを特徴とする付記１記載のスレッド切替制御装置。
【００７５】
（付記６）  マルチスレッド方式を用いる情報処理装置において、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッドの実行優先順位変更要求信号を出力するスレッド優先順位変更要求手段を備えることを特徴とするスレッド切替制御装置。
【００７６】
（付記７）  前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットをさらに備え、
前記スレッド切替制御装置が、該作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数が０であることを示す報告を受けた時にスレッド優先順位変更要求信号を出力することを特徴とする付記６記載のスレッド切替制御装置。
【００７７】
（付記８）  前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションとをさらに備え、
前記スレッド切替制御装置が、前記命令完了管理ユニットに作成されたエントリの内で消去されていないエントリの数に対応して実行が未完了である命令の数を前記スレッド優先順位変更要求手段に報告する未完了命令数報告手段をさらに備えるとともに、
該スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して該未完了命令数報告手段から未完了命令数が１であることを示す報告を受け、かつ前記分岐リザベーションステーションから先頭エントリに有効データが格納されていることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする付記６記載のスレッド切替制御装置。
【００７８】
（付記９）  前記情報処理装置が、すでにデコードされた命令に１対１に対応して該命令の実行に関係するデータが格納されるエントリが作成されて、該命令の実行完了時に該エントリが消去される命令完了管理ユニットと、分岐命令のデコード時に分岐命令のデコード順に、該分岐命令の実行に関するデータが格納されるエントリが先頭から順次作成され、該分岐命令の実行完了時に該エントリが消去されるとともに、未完了の分岐命令に対応するエントリの格納内容が先頭方向に順次移動される分岐リザベーションステーションであって、前記分岐命令に対応する遅延命令が該分岐命令の直後に存在する時、該遅延命令を該分岐命令の実行に関するデータが格納されたエントリに対応して格納するディレイスロットスタックを有する分岐リザベーションステーションと、フェッチされた１つ以上の命令を一時的に格納する命令バッファから同時に複数の命令が供給される時に該複数の命令を１つずつ格納し、格納データが有効であることを示すバリッド信号を出力する複数のインストラクション・ワード・レジスタとをさらに備え、
前記スレッド優先順位変更要求手段が、前記キャッシュミスの発生後に該キャッシュミスの発生したスレッドに対応して前記分岐リザベーションステーションから前記エントリの内で先頭エントリのデータが有効であり、先頭から２番目のエントリのデータが無効であり、かつ該先頭エントリに対応するディレイスロットスタックのデータが無効であることを示す信号を受け、前記複数のインストラクション・ワード・レジスタの内で実行順序が最も早い命令が格納されるべきインストラクション・ワード・レジスタから出力すべきデータが無効であることを示す信号を受け、さらに命令バッファから該インストラクション・ワード・レジスタに供給すべきデータが無効であることを示す信号を受け取った時にスレッド優先順位変更要求信号を出力することを特徴とする付記６記載のスレッド切替制御装置。
【００７９】
（付記１０）  前記キャッシュミスの発生時に起動され、あらかじめ定められた時間内に前記スレッド優先順位変更要求手段が前記スレッド優先順位変更要求信号を出力しない時、その後の該スレッド優先順位変更要求信号の出力を停止させるスレッド優先順位変更要求抑止手段をさらに備えることを特徴とする付記６記載のスレッド切替制御装置。
【００８０】
（付記１１）  マルチスレッド方式を用いる情報処理装置におけるスレッド切替方法であって、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド切替要求信号を出力することを特徴とするスレッド切替方法。
【００８１】
（付記１２）  マルチスレッド方式を用いる情報処理装置におけるスレッド優先順位変更方法であって、
命令フェッチ時にフェッチすべき命令がキャッシュに格納されていないキャッシュミスの発生後にスレッド優先順位変更要求信号を出力することを特徴とするスレッド優先順位変更方法。
【図面の簡単な説明】
【００８２】
【図１】本発明のスレッド切替制御方式を用いる情報処理装置の原理構成ブロック図である。
【図２】本実施形態における情報処理装置の基本的な構成を示すブロック図である。
【図３】図２における命令完了管理ユニットの動作の説明図である。
【図４】第１の実施形態におけるスレッド切替条件検出方式の説明図である。
【図５】コミット・スタック・エントリの空状態検出方式の説明図である。
【図６】第１の実施形態におけるスレッド切替要求信号生成回路の動作の説明図である。
【図７】図６におけるスレッド切替要求信号生成のタイムチャートである。
【図８】分岐リザベーションステーションの動作の概要を説明する図である。
【図９】分岐リザベーションステーションにおけるエントリの移動を説明する図である。
【図１０】分岐命令に対応するディレイスロット命令に対してキャッシュミスが検出された場合のディレイスロットスタックのデータ格納状態を説明する図である。
【図１１】第２の実施形態におけるスレッド切替条件検出方式の説明図である。
【図１２】第２の実施形態におけるスレッド切替要求信号生成回路の動作の説明図である。
【図１３】図１２におけるスレッド切替要求信号生成のタイムチャートである。
【図１４】命令バッファからインストラクション・ワード・レジスタを介した分岐命令の供給動作の説明図である。
【図１５】図１４における命令データ供給のタイムチャートである。
【図１６】第３の実施形態における命令バッファからインストラクション・ワード・レジスタを介した命令データ供給動作の説明図である。
【図１７】図１６における命令データ供給のタイムチャートである。
【図１８】第３の実施形態におけるスレッド切替要求信号生成回路の動作の説明図である。
【図１９】図１８におけるスレッド切替要求信号生成のタイムチャートである。
【図２０】スレッド切替抑止方式の説明図である。
【図２１】マルチスレッド方式の従来例の動作説明図である。
【符号の説明】
【００８３】
１  情報処理装置
２  スレッド切替制御装置
３  命令完了管理ユニット
４  スレッド切替要求手段
５  未完了命令数報告手段
１０  命令フェッチ制御ユニット
１１  キャッシュ制御ユニット
１２  命令キャッシュ
１３  命令バッファ
１４  デコーダ
１５  命令完了管理ユニット
１６  分岐リザベーションステーション
１７  その他のリザベーションステーション
１８  演算ユニット
１９  キャッシュ制御ユニット
２０  オペランドキャッシュ
２１  ＣＳＥ使用個数カウンタ
２２  比較回路
２３  メモリ
２４  切替要求信号生成回路
２５、２６、２７  ＡＮＤゲート
３０  インストラクション・ワード・レジスタ（ＩＷＲ０）
３５  レジスタ
３６  カウンタ
３７  切替要求抑止回路
【図１】
2005309762.tif 000003
【図２】
2005309762.tif 000004
【図３】
2005309762.tif 000005
【図４】
2005309762.tif 000006
【図５】
2005309762.tif 000007
【図６】
2005309762.tif 000008
【図７】
2005309762.tif 000009
【図８】
2005309762.tif 000010
【図９】
2005309762.tif 000011
【図１０】
2005309762.tif 000012
【図１１】
2005309762.tif 000013
【図１２】
2005309762.tif 000014
【図１３】
2005309762.tif 000015
【図１４】
2005309762.tif 000016
【図１５】
2005309762.tif 000017
【図１６】
2005309762.tif 000018
【図１７】
2005309762.tif 000019
【図１８】
2005309762.tif 000020
【図１９】
2005309762.tif 000021
【図２０】
2005309762.tif 000022
【図２１】
2005309762.tif 000023