(57)【特許請求の範囲】
【請求項１】
マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置であって、
前記マルチスレッド・プロセッサによって現在実行中の活動スレッド用の命令を格納する主命令待ち行列と、
前記マルチスレッド・プロセッサによって現在実行されていない休止スレッド用の命令を格納する少なくとも１つのスレッド切換え命令待ち行列と、
前記活動スレッドの実行中に前記主命令待ち行列からの命令を実行のためにディスパッチし、スレッド切換えを行うときに前記スレッド切換え命令待ち行列からの命令を実行のためにディスパッチするディスパッチ手段とを備え、
前記ディスパッチ手段が、
前記主命令待ち行列の出力と前記スレッド切換え命令待ち行列の出力とを受け取り、スレッド切換えを示すスレッド切換え信号に基づいてその一方を出力する第１のマルチプレクサと、
前記第１のマルチプレクサの出力と前記主命令待ち行列内に格納すべき命令とを受け取って、前記スレッド切換え信号に基づいてその一方を出力する第２のマルチプレクサとを含み、
前記ディスパッチ手段が、前記スレッド切換え信号に基づいて、前記スレッド切換え命令待ち行列内に格納された命令の一部分を実行のためにディスパッチし、実行のためにディスパッチされていない前記スレッド切換え命令待ち行列内の命令を前記主命令待ち行列に転送する、装置。
【請求項２】
前記スレッド切換え命令待ち行列が、命令キャッシュおよびメイン・メモリの少なくとも一方から先取りされた前記休止スレッド用の命令を格納することを特徴とする請求項１に記載の装置。
【請求項３】
前記スレッド切換え命令待ち行列が、単一処理サイクルで実行のためにディスパッチできるよりも多くの命令を格納する、請求項１に記載の装置。
【請求項４】
前記スレッド切換え命令待ち行列が、複数の休止スレッドのうちの１つのスレッド用の命令を格納することを特徴とする請求項１に記載の装置。
【請求項５】
複数の休止スレッド用の命令をそれぞれ格納する複数のスレッド切換え命令待ち行列を備え、
前記ディスパッチ手段が、前記複数のスレッド切換え命令待ち行列のうち、前記スレッド切換え信号に基づいて活動スレッドになる前記休止スレッドに対応する１つのスレッド切換え命令待ち行列から命令をディスパッチする、請求項１に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチスレッド・プロセッサにおけるスレッド切換待ち時間を減少させる方法および装置に関する。
【０００２】
【従来の技術】
今日、高性能シングルチップ・マイクロプロセッサの最も一般的なアーキテクチャは、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャである。半導体技術の進歩に伴って、ＲＩＳＣアーキテクチャの目的は、マシンのクロック・サイクルごとに１つの命令を開始できるプロセッサ設計を開発することになっている。この尺度、すなわち１命令当たりのクロック・サイクル数ＣＰＩは、一般に、高性能プロセッサのアーキテクチャを特徴付けるために使用されている。命令パイプライン方式およびキャッシュ・メモリのアーキテクチャの特徴によりＣＰＩの改善が可能になった。パイプライン式の命令実行により、前に出された命令の実行が終了する前に次の命令の実行を開始することができる。キャッシュ・メモリにより、ほとんどの場合メイン・メモリの全アクセス時間を待つことなく命令の実行を継続することが可能になる。
【０００３】
メイン・メモリに使用されるメモリ・デバイスは高速になってきているが、そのようなメモリ・チップとハイエンド・プロセッサとの速度のギャップはますます大きくなっている。したがって、現在のハイエンド・プロセッサの設計においては、キャッシュ・ミスがあると実行時間の多くがその解決のために費やされ、メモリ待ち時間を許容する技術が実施されないかぎりメモリ・アクセス遅延がプロセッサ実行時間のうちでますます大きな割合を占めるようになると予想される。
【０００４】
メモリ待ち時間を許容する１つの既知の技術は、マルチスレッディングである。マルチスレッディングには、ハードウェア・マルチスレッディングとソフトウェア・マルチスレッディングの２つのタイプがある。通常、ハードウェア・マルチスレッディングは、いくつかのタスクまたはスレッドの状態をチップ上に維持するプロセッサを使用する。これは、一般に、各スレッドごとにプロセッサ・レジスタを複製するものである。
【０００５】
ハードウェア・マルチスレッディングには２つの基本的形態がある。伝統的な形態は、プロセッサ内でＮ個のスレッドまたは状態を保持し、サイクルごとにスレッドをインターリーブするものである。これにより、単一スレッド内の命令が分離されるため、すべてのパイプライン依存性がなくなる。ハードウェア・マルチスレッディングの他の形態は、ある待ち時間の長いイベントでスレッドを切り換えるものである。本発明の好ましい実施形態は、ハードウェア・マルチスレッディングを利用して、ある待ち時間の長いイベントでスレッドを切り換える。
【０００６】
しかし、スレッドの切換え自体が、多くのクロック・サイクルを必要とする。スレッド切換えによる待ち時間のかなりの部分は、新しいスレッドを実行し始めるのに必要な命令取出しによるものである。図１に、マルチスレッド・プロセッサの複数のパイプラインによって処理される命令をディスパッチする従来技術の構成を示す。図１に示したように、命令受渡しマルチプレクサ８は、第１と第２の入力を有する。第１の入力は、複数の命令を格納する命令キャッシュ４に接続される。命令キャッシュ４に格納された命令は、現在実行中のスレッドである活動スレッドと、現在実行されていない１つまたは複数の休止スレッドの両方に属する。命令受渡しマルチプレクサ８の第２の入力は、メイン・メモリまたはメモリ・サブシステム２あるいはその両方に接続される。メイン・メモリは、各スレッド用のすべての命令を格納し、レベル２キャッシュなどのメモリ・サブシステムは、様々なスレッド用のすべての命令は格納しないが、命令キャッシュ４よりも多くの命令を格納することができる。図１に示したように、命令キャッシュ４はまた、メイン・メモリまたはメモリ・サブシステム２あるいはその両方に接続される。
【０００７】
命令受渡しマルチプレクサ８は、制御論理６から受け取ったライン充填バイパス信号に従って、命令キャッシュ４またはメイン・メモリ／メモリ・サブシステム２あるいはその両方から、制御論理６によってアドレスされた命令を出力する。命令受渡しマルチプレクサ８は、命令を主命令待ち行列１０に出力する。主命令待ち行列１０は、マルチスレッド・プロセッサによって実施される複数の処理パイプラインにディスパッチするために出力する複数の命令を格納する。
【０００８】
スレッド切換えが行われると、主命令待ち行列１０内の命令は無効にされ、第１のクロック・サイクルの間に、活動スレッドになる休止スレッドの命令用のアドレスが制御論理６によって生成される。第２のクロック・サイクルの間に、新たに生成された命令アドレスに基づいて命令がアドレスされ、制御論理６は、命令受渡しマルチプレクサ８が命令キャッシュ４に接続された入力を選択するようにライン充填バイパス信号を出力する。アドレスされた命令が命令キャッシュ４内にある場合は、第３のクロック・サイクルの間、命令受渡しマルチプレクサ８がこれらの命令を主命令待ち行列１０に出力し、主命令待ち行列１０は、処理パイプラインにディスパッチのため命令を出力する。したがって、活動スレッドになる休止スレッドの命令が命令キャッシュ４内にあるとき、スレッド切換えは３クロック・サイクルで完了する。
【０００９】
当然ながら、命令キャッシュ４が、制御論理６によってアドレスされた、活動スレッドになる休止スレッドの命令を含まない場合は、スレッド切換えの完了に要する時間は、命令キャッシュ・ミスを解決するのに要する時間だけ増加する。
【００１０】
【発明が解決しようとする課題】
本発明の一目的は、マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させるための方法および装置を提供することである。
【００１１】
本発明のもう１つの目的は、スレッド切換えを実行するのに必要な時間から主命令待ち行列を再充填する時間をなくす、マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置を提供することである。
【００１２】
【課題を解決するための手段】
上記その他の目的は、活動スレッド用の命令を格納する主命令待ち行列の他に、休止スレッド用の命令を格納するスレッド切換え命令待ち行列を提供することによって達成される。スレッド切換えが行われるとき、スレッド切換え待ち行列に格納された命令が実行のために出力され、それにより、主命令待ち行列を再充填するために待たなければならないことによるスレッド切換え待ち時間がなくなる。
【００１３】
さらに、活動スレッドになる休止スレッドの命令が、スレッド切換え命令待ち行列から出力される一方で、スレッド切換え命令待ち行列に格納された命令のうちのいくつかが主命令待ち行列に転送される。スレッド切換え命令待ち行列からの命令の最初の出力の後に、実行のための命令が主命令待ち行列から再び得られる。主命令待ち行列は、スレッド切換え命令待ち行列に格納されていた命令で事前に充填されているので、主命令待ち行列に充填するためのそれ以上の遅延がなくなる。
【００１４】
本発明の他の目的、機能および特徴、構造の関連要素の方法、動作および機能、部品の組み合わせ、ならびに製造の経済性は、以下の好ましい実施形態の詳細な説明と、添付の図面から明らかとなろう。図面はすべて本明細書の一部分を構成し様々な図で同じ参照番号は対応する部品を示す。
【００１５】
【発明の実施の形態】
本発明による命令をディスパッチする構造は、主命令待ち行列と並列に、命令受渡しマルチプレクサおよび出力マルチプレクサに接続されたスレッド切換え命令待ち行列を含む。スレッド切換え命令待ち行列は、休止スレッドの命令を格納し、主命令待ち行列は活動スレッドの命令を格納する。スレッド切換え命令待ち行列に格納された命令は、スレッド切換えが行われるときに出力マルチプレクサによって実行のために出力され、それにより、主命令待ち行列が再充填されるのを待たなければならないことによるスレッド切換え待ち時間がなくなる。
【００１６】
さらに、活動スレッドになる休止スレッドの命令が出力マルチプレクサによって出力される一方で、これらの命令のいくつかは主命令待ち行列に転送される。スレッド切換え命令待ち行列から得られた命令の最初の出力の後、出力マルチプレクサは、主命令待ち行列からの命令を実行のために再び出力する。主命令待ち行列は、スレッド切換え命令待ち行列に元々格納されていた命令ですでに一杯なため、主命令待ち行列を充填するためのそれ以上の遅延がなくなる。
【００１７】
次に、図２を参照して、本発明による命令をディスパッチする構造を詳細に説明する。図２に示したように、命令受渡しマルチプレクサ８、制御論理６、命令キャッシュ４およびメイン・メモリ／メモリ・サブシステム２が、従来技術の命令ディスパッチ構造に関して前述したのと同じ方法で接続される。同様に、制御論理６は、命令受渡しマルチプレクサ８が命令キャッシュ４またはメイン・メモリ／メモリ・サブシステム２から受け取った命令を出力するべきかどうか示すライン充填バイパス信号を、命令受渡しマルチプレクサ８に出力する。
【００１８】
一方、本発明による命令をディスパッチする構造は、命令充填マルチプレクサ１２、スレッド切換え命令待ち行列１４、および出力マルチプレクサ１６をも含む。命令充填マルチプレクサ１２は、第１と第２の入力を有する。第１の入力は、命令受渡しマルチプレクサ８の出力に接続される。命令充填マルチプレクサ１２の第２の入力は、出力マルチプレクサ１６の出力に接続される。命令充填マルチプレクサ１２は、制御論理６から受け取ったスレッド切換え信号に基づいて、命令受渡しマルチプレクサ８または出力マルチプレクサ１６から受け取った命令を主命令待ち行列１０に出力する。
【００１９】
スレッド切換え命令待ち行列１４はまた、命令受渡しマルチプレクサ８の出力を受け取り、スレッド切換え命令待ち行列１４と主命令待ち行列１０は共にその出力を出力マルチプレクサ１６に送る。出力マルチプレクサ１６は、制御論理６によって生成されたスレッド切換え信号に基づいて、主命令待ち行列１０またはスレッド切換え命令待ち行列１４からの命令を選択的に出力する。出力マルチプレクサ１６から出力された命令は、マルチスレッド・プロセッサの複数の処理パイプラインにディスパッチされる。
【００２０】
活動スレッドの実行中、スレッド切換え信号は低レベルのままであり、その結果、命令充填マルチプレクサ１２は、命令受渡しマルチプレクサ８から受け取った命令を出力して主命令待ち行列１０を一杯にし、出力マルチプレクサ１６は、主命令待ち行列１０から受け取った命令を出力する。
【００２１】
さらに、活動スレッドの実行中、休止スレッドの命令が先取りされてスレッド切換え命令待ち行列１４に格納される。スレッド切換え命令待ち行列１４に格納するために休止スレッドの命令を先取りする際に、制御論理６は、活動スレッドの命令を先取りして主命令待ち行列１０に格納するために、指定されたクロック・サイクルを使う。制御論理６は、（１）スレッド切換え命令待ち行列１４にまだ休止スレッドの命令がロードされていないとき、（２）休止スレッド用の命令の先取りによる命令キャッシュ・ミスが処理されていないとき、そして（３）主命令待ち行列１０内の分岐命令と複数の処理パイプラインによって処理されている命令がどれも命令キャッシュ４にアクセスする必要がないときに、これらのクロック・サイクルをスチールする。これらの条件が満たされた場合、制御論理６は、休止スレッドの命令のアドレスを生成し、命令キャッシュ４とメイン・メモリ／メモリ・サブシステム２のうちの少なくとも１つからの命令にアクセスし、命令受渡しマルチプレクサ８が休止スレッドの先取りした命令を出力するようにライン充填バイパス信号を出力する。制御論理６は、また、スレッド切換え命令待ち行列１４がこれらの命令を格納できるようにし、主命令待ち行列１０がこれらの命令を格納しないようにする。分かりやすくするため、制御論理６から主命令待ち行列１０およびスレッド切換え命令待ち行列１４へのイネーブル／ディセーブル制御線は示してない。
【００２２】
主命令待ち行列１０のサイズとスレッド切換え命令待ち行列１４のサイズは、所望の動作特性に基づいて設定することができる。ただし、好ましい実施形態においては、スレッド切換え命令待ち行列１４のサイズは、スレッド切換え命令待ち行列１４が複数の処理パイプラインによって単一クロック・サイクル内で受け取ることができるよりも多くの命令を格納するように設定される。
【００２３】
スレッド切換えが行われるとき、制御論理６は、１クロック・サイクルの間スレッド切換え信号の状態を低レベルから高レベルに変化させる。その結果、出力マルチプレクサ１６は、スレッド切換え命令待ち行列１４に格納されていた命令を出力する。スレッド切換え命令待ち行列１４は、複数の処理パイプラインによって受け取ることができるよりも多くの命令を格納するので、複数の処理パイプラインにディスパッチされなかった命令は命令充填マルチプレクサ１２が受け取る。命令充填マルチプレクサ１２は、スレッド切換え信号の状態変化に従って、出力マルチプレクサ１６から出力された命令出力を主命令待ち行列１０に出力する。このようにして、単一クロック・サイクル中に、活動スレッドになる休止スレッドからの命令が処理パイプラインにディスパッチされ、主命令待ち行列１０に転送される。
【００２４】
クロック・サイクルの完了後、スレッド切換え信号はその低レベル状態に戻り、命令が主命令待ち行列１０から処理パイプラインに再びディスパッチされる。さらに、制御論理６は、命令の先取りを始めて、主命令待ち行列１０とスレッド切換え命令待ち行列１４を満杯にする。
【００２５】
本発明による命令ディスパッチ構造は、従来技術の構造と異なり、命令待ち行列を満杯にし命令待ち行列から命令をディスパッチし始めるのに必要な時間をスレッド切換え待ち時間からなくす。したがって、本発明により、従来の技術と比べてスレッド切換え待ち時間が２サイクル少なくなる。
【００２６】
本発明は、図２に示した実施形態に限定されるものではないことを理解されたい。たとえば、本発明を、これまで２つのスレッドだけを実施するマルチスレッド・プロセッサに関して説明した。しかし、マルチスレッド・プロセッサは、複数のスレッドを実施することができ、制御論理６は、スレッド切換え命令待ち行列１４内に、スレッド切換えが行われた場合に活動スレッドになる可能性が最も高い休止スレッドの命令を格納する。さらに別の代替方法として、休止スレッドにそれぞれ対応する複数のスレッド切換え命令待ち行列を設け、命令充填マルチプレクサ１２と出力マルチプレクサ１６を、追加のスレッド切換え命令待ち行列に対応するように拡張することができる。
【図面の簡単な説明】
【図１】従来技術による命令をディスパッチするの構造を示す図である。
【図２】本発明による命令をディスパッチする構造を示す図である。
【符合の説明】
２  メイン・メモリ／メモリ・サブシステム
４  命令キャッシュ
６  制御論理回路
８  命令受渡しマルチプレクサ
１０  主命令待ち行列
１２  命令充填マルチプレクサ
１４  スレッド切換え命令待ち行列
１６  出力マルチプレクサ
【図１】
0003573943.tif 000002
【図２】
0003573943.tif 000003