JPH10283203A - マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置 - Google Patents
マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置Info
- Publication number
- JPH10283203A JPH10283203A JP10053267A JP5326798A JPH10283203A JP H10283203 A JPH10283203 A JP H10283203A JP 10053267 A JP10053267 A JP 10053267A JP 5326798 A JP5326798 A JP 5326798A JP H10283203 A JPH10283203 A JP H10283203A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- instruction
- instructions
- instruction queue
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 22
- 239000011159 matrix material Substances 0.000 claims 1
- 239000000725 suspension Substances 0.000 abstract 2
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
ド切換え待ち時間を減少させるための方法および装置を
提供すること。 【解決手段】 マルチスレッド・プロセッサにおけるス
レッド切換え待ち時間を減少させるための方法および装
置は、主命令待ち行列に活動スレッド用の命令を格納
し、スレッド切換え命令待ち行列に休止スレッド用の命
令を格納する。活動スレッドとは、マルチスレッド・プ
ロセッサによって現在処理されているスレッドである。
一方、休止スレッドはマルチスレッド・プロセッサによ
って現在実行されていないスレッドである。活動スレッ
ドの実行中、命令は、主命令待ち行列から処理のために
ディスパッチされる。スレッド切換えが行われるとき、
命令はスレッド切換え命令待ち行列から実行のためにデ
ィスパッチされる。同時に、スレッド切換え命令待ち行
列に格納された命令が主命令待ち行列に転送される。こ
のようにして、休止スレッドの命令を主命令待ち行列に
充填する時間によるスレッド切換え待ち時間がなくな
る。
Description
プロセッサにおけるスレッド切換待ち時間を減少させる
方法および装置に関する。
プロセッサの最も一般的なアーキテクチャは、RISC
(縮小命令セット・コンピュータ)アーキテクチャであ
る。半導体技術の進歩に伴って、RISCアーキテクチ
ャの目的は、マシンのクロック・サイクルごとに1つの
命令を開始できるプロセッサ設計を開発することになっ
ている。この尺度、すなわち1命令当たりのクロック・
サイクル数CPIは、一般に、高性能プロセッサのアー
キテクチャを特徴付けるために使用されている。命令パ
イプライン方式およびキャッシュ・メモリのアーキテク
チャの特徴によりCPIの改善が可能になった。パイプ
ライン式の命令実行により、前に出された命令の実行が
終了する前に次の命令の実行を開始することができる。
キャッシュ・メモリにより、ほとんどの場合メイン・メ
モリの全アクセス時間を待つことなく命令の実行を継続
することが可能になる。
イスは高速になってきているが、そのようなメモリ・チ
ップとハイエンド・プロセッサとの速度のギャップはま
すます大きくなっている。したがって、現在のハイエン
ド・プロセッサの設計においては、キャッシュ・ミスが
あると実行時間の多くがその解決のために費やされ、メ
モリ待ち時間を許容する技術が実施されないかぎりメモ
リ・アクセス遅延がプロセッサ実行時間のうちでますま
す大きな割合を占めるようになると予想される。
術は、マルチスレッディングである。マルチスレッディ
ングには、ハードウェア・マルチスレッディングとソフ
トウェア・マルチスレッディングの2つのタイプがあ
る。通常、ハードウェア・マルチスレッディングは、い
くつかのタスクまたはスレッドの状態をチップ上に維持
するプロセッサを使用する。これは、一般に、各スレッ
ドごとにプロセッサ・レジスタを複製するものである。
2つの基本的形態がある。伝統的な形態は、プロセッサ
内でN個のスレッドまたは状態を保持し、サイクルごと
にスレッドをインターリーブするものである。これによ
り、単一スレッド内の命令が分離されるため、すべての
パイプライン依存性がなくなる。ハードウェア・マルチ
スレッディングの他の形態は、ある待ち時間の長いイベ
ントでスレッドを切り換えるものである。本発明の好ま
しい実施形態は、ハードウェア・マルチスレッディング
を利用して、ある待ち時間の長いイベントでスレッドを
切り換える。
クロック・サイクルを必要とする。スレッド切換えによ
る待ち時間のかなりの部分は、新しいスレッドを実行し
始めるのに必要な命令取出しによるものである。図1
に、マルチスレッド・プロセッサの複数のパイプライン
によって処理される命令をディスパッチする従来技術の
構成を示す。図1に示したように、命令受渡しマルチプ
レクサ8は、第1と第2の入力を有する。第1の入力
は、複数の命令を格納する命令キャッシュ4に接続され
る。命令キャッシュ4に格納された命令は、現在実行中
のスレッドである活動スレッドと、現在実行されていな
い1つまたは複数の休止スレッドの両方に属する。命令
受渡しマルチプレクサ8の第2の入力は、メイン・メモ
リまたはメモリ・サブシステム2あるいはその両方に接
続される。メイン・メモリは、各スレッド用のすべての
命令を格納し、レベル2キャッシュなどのメモリ・サブ
システムは、様々なスレッド用のすべての命令は格納し
ないが、命令キャッシュ4よりも多くの命令を格納する
ことができる。図1に示したように、命令キャッシュ4
はまた、メイン・メモリまたはメモリ・サブシステム2
あるいはその両方に接続される。
6から受け取ったライン充填バイパス信号に従って、命
令キャッシュ4またはメイン・メモリ/メモリ・サブシ
ステム2あるいはその両方から、制御論理6によってア
ドレスされた命令を出力する。命令受渡しマルチプレク
サ8は、命令を主命令待ち行列10に出力する。主命令
待ち行列10は、マルチスレッド・プロセッサによって
実施される複数の処理パイプラインにディスパッチする
ために出力する複数の命令を格納する。
行列10内の命令は無効にされ、第1のクロック・サイ
クルの間に、活動スレッドになる休止スレッドの命令用
のアドレスが制御論理6によって生成される。第2のク
ロック・サイクルの間に、新たに生成された命令アドレ
スに基づいて命令がアドレスされ、制御論理6は、命令
受渡しマルチプレクサ8が命令キャッシュ4に接続され
た入力を選択するようにライン充填バイパス信号を出力
する。アドレスされた命令が命令キャッシュ4内にある
場合は、第3のクロック・サイクルの間、命令受渡しマ
ルチプレクサ8がこれらの命令を主命令待ち行列10に
出力し、主命令待ち行列10は、処理パイプラインにデ
ィスパッチのため命令を出力する。したがって、活動ス
レッドになる休止スレッドの命令が命令キャッシュ4内
にあるとき、スレッド切換えは3クロック・サイクルで
完了する。
理6によってアドレスされた、活動スレッドになる休止
スレッドの命令を含まない場合は、スレッド切換えの完
了に要する時間は、命令キャッシュ・ミスを解決するの
に要する時間だけ増加する。
ルチスレッド・プロセッサにおけるスレッド切換え待ち
時間を減少させるための方法および装置を提供すること
である。
えを実行するのに必要な時間から主命令待ち行列を再充
填する時間をなくす、マルチスレッド・プロセッサにお
けるスレッド切換え待ち時間を減少させる方法および装
置を提供することである。
動スレッド用の命令を格納する主命令待ち行列の他に、
休止スレッド用の命令を格納するスレッド切換え命令待
ち行列を提供することによって達成される。スレッド切
換えが行われるとき、スレッド切換え待ち行列に格納さ
れた命令が実行のために出力され、それにより、主命令
待ち行列を再充填するために待たなければならないこと
によるスレッド切換え待ち時間がなくなる。
の命令が、スレッド切換え命令待ち行列から出力される
一方で、スレッド切換え命令待ち行列に格納された命令
のうちのいくつかが主命令待ち行列に転送される。スレ
ッド切換え命令待ち行列からの命令の最初の出力の後
に、実行のための命令が主命令待ち行列から再び得られ
る。主命令待ち行列は、スレッド切換え命令待ち行列に
格納されていた命令で事前に充填されているので、主命
令待ち行列に充填するためのそれ以上の遅延がなくな
る。
の関連要素の方法、動作および機能、部品の組み合わ
せ、ならびに製造の経済性は、以下の好ましい実施形態
の詳細な説明と、添付の図面から明らかとなろう。図面
はすべて本明細書の一部分を構成し様々な図で同じ参照
番号は対応する部品を示す。
する構造は、主命令待ち行列と並列に、命令受渡しマル
チプレクサおよび出力マルチプレクサに接続されたスレ
ッド切換え命令待ち行列を含む。スレッド切換え命令待
ち行列は、休止スレッドの命令を格納し、主命令待ち行
列は活動スレッドの命令を格納する。スレッド切換え命
令待ち行列に格納された命令は、スレッド切換えが行わ
れるときに出力マルチプレクサによって実行のために出
力され、それにより、主命令待ち行列が再充填されるの
を待たなければならないことによるスレッド切換え待ち
時間がなくなる。
の命令が出力マルチプレクサによって出力される一方
で、これらの命令のいくつかは主命令待ち行列に転送さ
れる。スレッド切換え命令待ち行列から得られた命令の
最初の出力の後、出力マルチプレクサは、主命令待ち行
列からの命令を実行のために再び出力する。主命令待ち
行列は、スレッド切換え命令待ち行列に元々格納されて
いた命令ですでに一杯なため、主命令待ち行列を充填す
るためのそれ以上の遅延がなくなる。
をディスパッチする構造を詳細に説明する。図2に示し
たように、命令受渡しマルチプレクサ8、制御論理6、
命令キャッシュ4およびメイン・メモリ/メモリ・サブ
システム2が、従来技術の命令ディスパッチ構造に関し
て前述したのと同じ方法で接続される。同様に、制御論
理6は、命令受渡しマルチプレクサ8が命令キャッシュ
4またはメイン・メモリ/メモリ・サブシステム2から
受け取った命令を出力するべきかどうか示すライン充填
バイパス信号を、命令受渡しマルチプレクサ8に出力す
る。
る構造は、命令充填マルチプレクサ12、スレッド切換
え命令待ち行列14、および出力マルチプレクサ16を
も含む。命令充填マルチプレクサ12は、第1と第2の
入力を有する。第1の入力は、命令受渡しマルチプレク
サ8の出力に接続される。命令充填マルチプレクサ12
の第2の入力は、出力マルチプレクサ16の出力に接続
される。命令充填マルチプレクサ12は、制御論理6か
ら受け取ったスレッド切換え信号に基づいて、命令受渡
しマルチプレクサ8または出力マルチプレクサ16から
受け取った命令を主命令待ち行列10に出力する。
命令受渡しマルチプレクサ8の出力を受け取り、スレッ
ド切換え命令待ち行列14と主命令待ち行列10は共に
その出力を出力マルチプレクサ16に送る。出力マルチ
プレクサ16は、制御論理6によって生成されたスレッ
ド切換え信号に基づいて、主命令待ち行列10またはス
レッド切換え命令待ち行列14からの命令を選択的に出
力する。出力マルチプレクサ16から出力された命令
は、マルチスレッド・プロセッサの複数の処理パイプラ
インにディスパッチされる。
号は低レベルのままであり、その結果、命令充填マルチ
プレクサ12は、命令受渡しマルチプレクサ8から受け
取った命令を出力して主命令待ち行列10を一杯にし、
出力マルチプレクサ16は、主命令待ち行列10から受
け取った命令を出力する。
ッドの命令が先取りされてスレッド切換え命令待ち行列
14に格納される。スレッド切換え命令待ち行列14に
格納するために休止スレッドの命令を先取りする際に、
制御論理6は、活動スレッドの命令を先取りして主命令
待ち行列10に格納するために、指定されたクロック・
サイクルを使う。制御論理6は、(1)スレッド切換え
命令待ち行列14にまだ休止スレッドの命令がロードさ
れていないとき、(2)休止スレッド用の命令の先取り
による命令キャッシュ・ミスが処理されていないとき、
そして(3)主命令待ち行列10内の分岐命令と複数の
処理パイプラインによって処理されている命令がどれも
命令キャッシュ4にアクセスする必要がないときに、こ
れらのクロック・サイクルをスチールする。これらの条
件が満たされた場合、制御論理6は、休止スレッドの命
令のアドレスを生成し、命令キャッシュ4とメイン・メ
モリ/メモリ・サブシステム2のうちの少なくとも1つ
からの命令にアクセスし、命令受渡しマルチプレクサ8
が休止スレッドの先取りした命令を出力するようにライ
ン充填バイパス信号を出力する。制御論理6は、また、
スレッド切換え命令待ち行列14がこれらの命令を格納
できるようにし、主命令待ち行列10がこれらの命令を
格納しないようにする。分かりやすくするため、制御論
理6から主命令待ち行列10およびスレッド切換え命令
待ち行列14へのイネーブル/ディセーブル制御線は示
してない。
換え命令待ち行列14のサイズは、所望の動作特性に基
づいて設定することができる。ただし、好ましい実施形
態においては、スレッド切換え命令待ち行列14のサイ
ズは、スレッド切換え命令待ち行列14が複数の処理パ
イプラインによって単一クロック・サイクル内で受け取
ることができるよりも多くの命令を格納するように設定
される。
6は、1クロック・サイクルの間スレッド切換え信号の
状態を低レベルから高レベルに変化させる。その結果、
出力マルチプレクサ16は、スレッド切換え命令待ち行
列14に格納されていた命令を出力する。スレッド切換
え命令待ち行列14は、複数の処理パイプラインによっ
て受け取ることができるよりも多くの命令を格納するの
で、複数の処理パイプラインにディスパッチされなかっ
た命令は命令充填マルチプレクサ12が受け取る。命令
充填マルチプレクサ12は、スレッド切換え信号の状態
変化に従って、出力マルチプレクサ16から出力された
命令出力を主命令待ち行列10に出力する。このように
して、単一クロック・サイクル中に、活動スレッドにな
る休止スレッドからの命令が処理パイプラインにディス
パッチされ、主命令待ち行列10に転送される。
換え信号はその低レベル状態に戻り、命令が主命令待ち
行列10から処理パイプラインに再びディスパッチされ
る。さらに、制御論理6は、命令の先取りを始めて、主
命令待ち行列10とスレッド切換え命令待ち行列14を
満杯にする。
来技術の構造と異なり、命令待ち行列を満杯にし命令待
ち行列から命令をディスパッチし始めるのに必要な時間
をスレッド切換え待ち時間からなくす。したがって、本
発明により、従来の技術と比べてスレッド切換え待ち時
間が2サイクル少なくなる。
れるものではないことを理解されたい。たとえば、本発
明を、これまで2つのスレッドだけを実施するマルチス
レッド・プロセッサに関して説明した。しかし、マルチ
スレッド・プロセッサは、複数のスレッドを実施するこ
とができ、制御論理6は、スレッド切換え命令待ち行列
14内に、スレッド切換えが行われた場合に活動スレッ
ドになる可能性が最も高い休止スレッドの命令を格納す
る。さらに別の代替方法として、休止スレッドにそれぞ
れ対応する複数のスレッド切換え命令待ち行列を設け、
命令充填マルチプレクサ12と出力マルチプレクサ16
を、追加のスレッド切換え命令待ち行列に対応するよう
に拡張することができる。
の事項を開示する。
てスレッド切換え待ち時間を減少させる方法であって、
(a)主命令待ち行列に、前記マルチスレッド・プロセ
ッサによって現在実行中の活動スレッド用の命令を格納
する段階と、(b)スレッド切換え命令待ち行列に、前
記マルチスレッド・プロセッサによって現在実行されて
いない休止スレッド用の命令を格納する段階と、(c)
前記活動スレッドの実行中に、前記主命令待ち行列から
命令を実行のためディスパッチする段階と、(d)スレ
ッド切換えを行うとき、前記スレッド切換え命令待ち行
列からの命令を実行のためディスパッチする段階とを含
む方法。 (2)前記段階(d)が、前記スレッド切換え命令待ち
行列に格納された命令の一部分をディスパッチし、
(e)スレッド切換えを行うとき、段階(d)でディス
パッチされなかった前記スレッド切換え命令待ち行列内
の命令を前記主命令待ち行列に転送する段階をさらに含
む上記(1)に記載の方法。 (3)(e)命令キャッシュおよびメイン・メモリの少
なくとも一方から、前記スレッド切換え命令待ち行列に
格納するために、前記休止スレッドの命令を先取りする
段階をさらに含む、上記(1)に記載の方法。 (4)前記段階(e)が、(e1)前記主命令待ち行列
内にあるまたは実行のためディスパッチされた分岐命令
が前記命令キャッシュにアクセスする必要があるかどう
かを判定する段階と、(e2)休止スレッドの命令先取
りの結果として命令キャッシュ・ミスが処理されている
かどうかを判定する段階と、(e3)前記段階(e1)
で、前記主命令待ち行列内にあるまたは実行のためディ
スパッチされた分岐命令が前記命令キャッシュにアクセ
スする必要がないと判定されたとき、および前記段階
(e2)で、命令キャッシュ・ミスが処理されていない
と判定されたときに、活動スレッド用の命令の代わりに
前記休止スレッド用の命令を先取りする段階とを含む上
記(3)に記載の方法。 (5)前記スレッド切換え命令待ち行列が、単一処理サ
イクルで実行のためディスパッチできるよりも多くの命
令を格納する、上記(1)に記載の方法。 (6)前記段階(b)で、複数の休止スレッドのうちの
1つのスレッドの命令を格納する上記(1)に記載の方
法。 (7)前記段階(b)で、複数の休止スレッドにそれぞ
れ関連付けられた複数のスレッド切換え命令待ち行列
に、前記複数の休止スレッド用の命令を格納し、前記段
階(d)で、スレッド切換えにより活動スレッドになる
休止スレッドに対応する、前記スレッド切換え命令待ち
行列からの命令をディスパッチする、上記(1)に記載
の方法。 (8)スレッド切換え待ち時間を減少させる、マルチス
レッド・プロセッサによって実行される命令をディスパ
ッチする装置であって、前記マルチスレッド・プロセッ
サによって現在実行中の活動スレッド用の命令を格納す
る主命令待ち行列と、前記マルチスレッド・プロセッサ
によって現在実行されていない休止スレッド用の命令を
格納する少なくとも1つのスレッド切換え命令待ち行列
と、前記活動スレッドの実行中に前記主命令待ち行列か
らの命令を実行のためディスパッチし、スレッド切換え
を行うときに前記スレッド切換え命令待ち行列からの命
令を実行のためディスパッチするディスパッチ手段とを
含む装置。 (9)前記ディスパッチ手段が、スレッド切換えを行う
ときに、前記スレッド切換え命令待ち行列内に格納され
た命令の一部分を実行用のためディスパッチし、実行の
ためディスパッチされていない前記スレッド切換え命令
待ち行列内の命令を前記主命令待ち行列に転送する、請
求項8に記載の装置。 (10)前記ディスパッチ手段が、前記主命令待ち行列
の出力と前記スレッド切換え命令待ち行列の出力とを受
け取り、スレッド切換えを示すスレッド切換え信号に基
づいてその一方を出力する第1のマルチプレクサと、前
記第1のマルチプレクサの出力と前記主命令待ち行列に
格納する命令とを受け取って、前記スレッド切換え信号
に基づいてその一方を出力する第2のマルチプレクサと
を含む、上記(9)に記載の装置。 (11)前記スレッド切換え命令待ち行列が、命令キャ
ッシュおよびメイン・メモリの少なくとも一方から先取
りされた前記休止スレッド用の命令を格納することを特
徴とする上記(8)に記載の装置。 (12)前記スレッド切換え命令待ち行列が、単一処理
サイクルで実行のためにディスパッチできるよりも多く
の命令を格納する、上記(8)に記載の装置。 (13)前記スレッド切換え命令待ち行列が、複数の休
止スレッドのうちの1つのスレッド用の命令を格納する
ことを特徴とする上記(8)に記載の装置。 (14)複数の休止スレッドの命令をそれぞれ記憶する
複数のスレッド切換え命令待ち行列を含み、前記ディス
パッチ手段が、スレッド切換えにより活動スレッドにな
っている休止スレッドに対応するスレッド切換え命令待
ち行列から命令をディスパッチする、上記(8)に記載
の装置。 (15)前記ディスパッチ手段が、前記主命令待ち行列
に接続された1つの入力と、前記スレッド切換え命令待
ち行列に接続された別の入力とを有するマルチプレクサ
を含む上記(8)に記載の装置。
を示す図である。
す図である。
Claims (15)
- 【請求項1】マルチスレッド・プロセッサにおいてスレ
ッド切換え待ち時間を減少させる方法であって、(a)
主命令待ち行列に、前記マルチスレッド・プロセッサに
よって現在実行中の活動スレッド用の命令を格納する段
階と、(b)スレッド切換え命令待ち行列に、前記マル
チスレッド・プロセッサによって現在実行されていない
休止スレッド用の命令を格納する段階と、(c)前記活
動スレッドの実行中に、前記主命令待ち行列から命令を
実行のためディスパッチする段階と、(d)スレッド切
換えを行うとき、前記スレッド切換え命令待ち行列から
の命令を実行のためディスパッチする段階とを含む方
法。 - 【請求項2】前記段階(d)が、前記スレッド切換え命
令待ち行列に格納された前記命令の一部分をディスパッ
チし、(e)スレッド切換えを行うとき、段階(d)で
ディスパッチされなかった前記スレッド切換え命令待ち
行列内の命令を前記主命令待ち行列に転送する段階をさ
らに含む請求項1に記載の方法。 - 【請求項3】(e)命令キャッシュおよびメイン・メモ
リの少なくとも一方から、前記スレッド切換え命令待ち
行列に格納するために、前記休止スレッドの命令を先取
りする段階をさらに含む、請求項1に記載の方法。 - 【請求項4】前記段階(e)が、(e1)前記主命令待
ち行列内にあるまたは実行のためディスパッチされた分
岐命令が前記命令キャッシュにアクセスする必要がある
かどうかを判定する段階と、(e2)休止スレッドの命
令先取りの結果として命令キャッシュ・ミスが処理され
ているかどうかを判定する段階と、(e3)前記段階
(e1)で、前記主命令待ち行列内にあるまたは実行の
ためディスパッチされた分岐命令が前記命令キャッシュ
にアクセスする必要がないと判定されたとき、および前
記段階(e2)で、命令キャッシュ・ミスが処理されて
いないと判定されたときに、活動スレッド用の命令の代
わりに前記休止スレッド用の命令を先取りする段階とを
含む請求項3に記載の方法。 - 【請求項5】前記スレッド切換え命令待ち行列が、単一
処理サイクルで実行のためディスパッチできるよりも多
くの命令を格納する、請求項1に記載の方法。 - 【請求項6】前記段階(b)で、複数の休止スレッドの
うちの1つのスレッドの命令を格納する請求項1に記載
の方法。 - 【請求項7】前記段階(b)で、複数の休止スレッドに
それぞれ関連付けられた複数のスレッド切換え命令待ち
行列に、前記複数の休止スレッド用の命令を格納し、前
記段階(d)で、スレッド切換えにより活動スレッドに
なる休止スレッドに対応する、前記スレッド切換え命令
待ち行列からの命令をディスパッチする、請求項1に記
載の方法。 - 【請求項8】スレッド切換え待ち時間を減少させる、マ
ルチスレッド・プロセッサによって実行される命令をデ
ィスパッチする装置であって、 前記マルチスレッド・プロセッサによって現在実行中の
活動スレッド用の命令を格納する主命令待ち行列と、 前記マルチスレッド・プロセッサによって現在実行され
ていない休止スレッド用の命令を格納する少なくとも1
つのスレッド切換え命令待ち行列と、 前記活動スレッドの実行中に前記主命令待ち行列からの
命令を実行のためディスパッチし、スレッド切換えを行
うときに前記スレッド切換え命令待ち行列からの命令を
実行のためディスパッチするディスパッチ手段とを含む
装置。 - 【請求項9】前記ディスパッチ手段が、スレッド切換え
を行うときに、前記スレッド切換え命令待ち行列内に格
納された命令の一部分を実行のためディスパッチし、実
行のためディスパッチされていない前記スレッド切換え
命令待ち行列内の命令を前記主命令待ち行列に転送す
る、請求項8に記載の装置。 - 【請求項10】前記ディスパッチ手段が、 前記主命令待ち行列の出力と前記スレッド切換え命令待
ち行列の出力とを受け取り、スレッド切換えを示すスレ
ッド切換え信号に基づいてその一方を出力する第1のマ
ルチプレクサと、 前記第1のマルチプレクサの出力と前記主命令待ち行列
に格納する命令とを受け取って、前記スレッド切換え信
号に基づいてその一方を出力する第2のマルチプレクサ
とを含む、請求項9に記載の装置。 - 【請求項11】前記スレッド切換え命令待ち行列が、命
令キャッシュおよびメイン・メモリの少なくとも一方か
ら先取りされた前記休止スレッド用の命令を格納するこ
とを特徴とする請求項8に記載の装置。 - 【請求項12】前記スレッド切換え命令待ち行列が、単
一処理サイクルで実行のためにディスパッチできるより
も多くの命令を格納する、請求項8に記載の装置。 - 【請求項13】前記スレッド切換え命令待ち行列が、複
数の休止スレッドのうちの1つのスレッド用の命令を格
納することを特徴とする請求項8に記載の装置。 - 【請求項14】複数の休止スレッドの命令をそれぞれ記
憶する複数のスレッド切換え命令待ち行列を含み、 前記ディスパッチ手段が、スレッド切換えにより活動ス
レッドになっている休止スレッドに対応するスレッド切
換え命令待ち行列から命令をディスパッチする、請求項
8に記載の装置。 - 【請求項15】前記ディスパッチ手段が、 前記主命令待ち行列に接続された1つの入力と、前記ス
レッド切換え命令待ち行列に接続された別の入力とを有
するマルチプレクサを含む請求項8に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/829518 | 1997-03-28 | ||
US08/829,518 US5907702A (en) | 1997-03-28 | 1997-03-28 | Method and apparatus for decreasing thread switch latency in a multithread processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10283203A true JPH10283203A (ja) | 1998-10-23 |
JP3573943B2 JP3573943B2 (ja) | 2004-10-06 |
Family
ID=25254763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP05326798A Expired - Fee Related JP3573943B2 (ja) | 1997-03-28 | 1998-03-05 | マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5907702A (ja) |
JP (1) | JP3573943B2 (ja) |
KR (1) | KR100274268B1 (ja) |
CN (1) | CN1092360C (ja) |
GB (1) | GB2324392B (ja) |
HK (1) | HK1011567A1 (ja) |
SG (1) | SG63818A1 (ja) |
TW (1) | TW362194B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100362474C (zh) * | 2002-03-29 | 2008-01-16 | 太阳微系统公司 | 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备 |
WO2020121416A1 (ja) * | 2018-12-11 | 2020-06-18 | サンケン電気株式会社 | プロセッサ及びパイプライン処理方法 |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6044447A (en) * | 1998-01-30 | 2000-03-28 | International Business Machines Corporation | Method and apparatus for communicating translation command information in a multithreaded environment |
US6457064B1 (en) * | 1998-04-27 | 2002-09-24 | Sun Microsystems, Inc. | Method and apparatus for detecting input directed to a thread in a multi-threaded process |
US20010032307A1 (en) * | 1998-12-30 | 2001-10-18 | Joseph Rohlman | Micro-instruction queue for a microprocessor instruction pipeline |
EP1236092A4 (en) * | 1999-09-01 | 2006-07-26 | Intel Corp | BRANCH COMMAND FOR A PROCESSOR |
KR100678930B1 (ko) * | 1999-10-11 | 2007-02-07 | 삼성전자주식회사 | 디지털 시그널 프로세서를 위한 실시간 제어 시스템 |
US6629236B1 (en) | 1999-11-12 | 2003-09-30 | International Business Machines Corporation | Master-slave latch circuit for multithreaded processing |
US7093109B1 (en) | 2000-04-04 | 2006-08-15 | International Business Machines Corporation | Network processor which makes thread execution control decisions based on latency event lengths |
US6931641B1 (en) | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
US7139898B1 (en) * | 2000-11-03 | 2006-11-21 | Mips Technologies, Inc. | Fetch and dispatch disassociation apparatus for multistreaming processors |
US7234139B1 (en) * | 2000-11-24 | 2007-06-19 | Catharon Productions, Inc. | Computer multi-tasking via virtual threading using an interpreter |
US8762581B2 (en) * | 2000-12-22 | 2014-06-24 | Avaya Inc. | Multi-thread packet processor |
US7149880B2 (en) * | 2000-12-29 | 2006-12-12 | Intel Corporation | Method and apparatus for instruction pointer storage element configuration in a simultaneous multithreaded processor |
US7320065B2 (en) | 2001-04-26 | 2008-01-15 | Eleven Engineering Incorporated | Multithread embedded processor with input/output capability |
US6965982B2 (en) * | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
CN100449478C (zh) * | 2002-05-31 | 2009-01-07 | 德拉华州大学 | 用于实时多线程处理的方法和装置 |
US7275247B2 (en) * | 2002-09-19 | 2007-09-25 | International Business Machines Corporation | Method and apparatus for handling threads in a data processing system |
US7062606B2 (en) * | 2002-11-01 | 2006-06-13 | Infineon Technologies Ag | Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events |
US7076616B2 (en) | 2003-03-24 | 2006-07-11 | Sony Corporation | Application pre-launch to reduce user interface latency |
US7496915B2 (en) * | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US20040226011A1 (en) * | 2003-05-08 | 2004-11-11 | International Business Machines Corporation | Multi-threaded microprocessor with queue flushing |
US7653904B2 (en) * | 2003-09-26 | 2010-01-26 | Intel Corporation | System for forming a critical update loop to continuously reload active thread state from a register storing thread state until another active thread is detected |
US8140829B2 (en) * | 2003-11-20 | 2012-03-20 | International Business Machines Corporation | Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution |
US7430737B2 (en) * | 2003-12-04 | 2008-09-30 | Sun Microsystems, Inc. | Processor and method for supporting compiler directed multithreading management |
US7441101B1 (en) * | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7360064B1 (en) | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7493621B2 (en) * | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data prefetching in multithreaded computer |
US7617499B2 (en) * | 2003-12-18 | 2009-11-10 | International Business Machines Corporation | Context switch instruction prefetching in multithreaded computer |
US7206922B1 (en) | 2003-12-30 | 2007-04-17 | Cisco Systems, Inc. | Instruction memory hierarchy for an embedded processor |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
US20050246461A1 (en) * | 2004-04-29 | 2005-11-03 | International Business Machines Corporation | Scheduling threads in a multi-processor computer |
US20050270297A1 (en) * | 2004-06-08 | 2005-12-08 | Sony Corporation And Sony Electronics Inc. | Time sliced architecture for graphics display system |
EP1776632B1 (en) * | 2004-08-03 | 2012-03-21 | Nxp B.V. | System, controller and method of controlling the communication between a processor and an external peripheral device |
US7487503B2 (en) | 2004-08-12 | 2009-02-03 | International Business Machines Corporation | Scheduling threads in a multiprocessor computer |
US20060112208A1 (en) * | 2004-11-22 | 2006-05-25 | International Business Machines Corporation | Interrupt thresholding for SMT and multi processor systems |
GB0516474D0 (en) * | 2005-08-10 | 2005-09-14 | Symbian Software Ltd | Pre-emptible context switching in a computing device |
US7913255B2 (en) * | 2005-10-20 | 2011-03-22 | Qualcomm Incorporated | Background thread processing in a multithread digital signal processor |
US7873816B2 (en) * | 2008-11-20 | 2011-01-18 | International Business Machines Corporation | Pre-loading context states by inactive hardware thread in advance of context switch |
CN102426553B (zh) * | 2011-11-11 | 2014-05-28 | 中国科学技术大学 | 基于双缓存预读的向用户传输数据的方法和装置 |
WO2013113595A1 (en) * | 2012-01-31 | 2013-08-08 | International Business Machines Corporation | Major branch instructions with transactional memory |
US9170968B2 (en) * | 2012-09-27 | 2015-10-27 | Intel Corporation | Device, system and method of multi-channel processing |
JP2015106167A (ja) * | 2013-11-28 | 2015-06-08 | ソニー株式会社 | 情報処理装置、情報処理方法および記憶媒体 |
US20160283233A1 (en) * | 2015-03-24 | 2016-09-29 | Freescale Semiconductor, Inc. | Computer systems and methods for context switching |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901230A (en) * | 1983-04-25 | 1990-02-13 | Cray Research, Inc. | Computer vector multiprocessing control with multiple access memory and priority conflict resolution method |
US4926323A (en) * | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
EP0381655A3 (en) * | 1989-01-31 | 1992-12-02 | International Business Machines Corporation | Method for synchronizing the dispatching of tasks among multitasking operating systems |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5109512A (en) * | 1990-05-31 | 1992-04-28 | International Business Machines Corporation | Process for dispatching tasks among multiple information processors |
US5452452A (en) * | 1990-06-11 | 1995-09-19 | Cray Research, Inc. | System having integrated dispatcher for self scheduling processors to execute multiple types of processes |
DE69130138T2 (de) * | 1990-06-29 | 1999-05-06 | Digital Equipment Corp | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
US5357617A (en) * | 1991-11-22 | 1994-10-18 | International Business Machines Corporation | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
US5490272A (en) * | 1994-01-28 | 1996-02-06 | International Business Machines Corporation | Method and apparatus for creating multithreaded time slices in a multitasking operating system |
-
1997
- 1997-03-28 US US08/829,518 patent/US5907702A/en not_active Expired - Fee Related
- 1997-11-21 TW TW086117440A patent/TW362194B/zh not_active IP Right Cessation
- 1997-12-02 KR KR1019970065342A patent/KR100274268B1/ko not_active IP Right Cessation
-
1998
- 1998-02-23 GB GB9803618A patent/GB2324392B/en not_active Expired - Lifetime
- 1998-02-26 SG SG1998000434A patent/SG63818A1/en unknown
- 1998-03-05 JP JP05326798A patent/JP3573943B2/ja not_active Expired - Fee Related
- 1998-03-06 CN CN98106048A patent/CN1092360C/zh not_active Expired - Fee Related
- 1998-12-02 HK HK98112653A patent/HK1011567A1/xx not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100362474C (zh) * | 2002-03-29 | 2008-01-16 | 太阳微系统公司 | 单处理器流水线内的头线程和推理性线程的交替执行的方法和设备 |
WO2020121416A1 (ja) * | 2018-12-11 | 2020-06-18 | サンケン電気株式会社 | プロセッサ及びパイプライン処理方法 |
JPWO2020121416A1 (ja) * | 2018-12-11 | 2021-10-28 | サンケン電気株式会社 | プロセッサ及びパイプライン処理方法 |
US11586444B2 (en) | 2018-12-11 | 2023-02-21 | Sanken Electric Co., Ltd. | Processor and pipeline processing method for processing multiple threads including wait instruction processing |
Also Published As
Publication number | Publication date |
---|---|
US5907702A (en) | 1999-05-25 |
JP3573943B2 (ja) | 2004-10-06 |
SG63818A1 (en) | 1999-03-30 |
KR100274268B1 (ko) | 2000-12-15 |
GB2324392A (en) | 1998-10-21 |
HK1011567A1 (en) | 1999-07-16 |
TW362194B (en) | 1999-06-21 |
CN1092360C (zh) | 2002-10-09 |
CN1195135A (zh) | 1998-10-07 |
GB9803618D0 (en) | 1998-04-15 |
KR19980079506A (ko) | 1998-11-25 |
GB2324392B (en) | 2001-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3573943B2 (ja) | マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置 | |
JP6243935B2 (ja) | コンテキスト切替方法及び装置 | |
US5574939A (en) | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism | |
JP3595504B2 (ja) | マルチスレッド式プロセッサにおけるコンピュータ処理方法 | |
US5353418A (en) | System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread | |
US6205543B1 (en) | Efficient handling of a large register file for context switching | |
US6981133B1 (en) | Zero overhead computer interrupts with task switching | |
JP3120152B2 (ja) | コンピューターシステム | |
EP0933698B1 (en) | Probing computer memory latency | |
KR100745904B1 (ko) | 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로 | |
US8635621B2 (en) | Method and apparatus to implement software to hardware thread priority | |
US20040205719A1 (en) | Hop method for stepping parallel hardware threads | |
JPH10275100A (ja) | マルチスレッド・プロセッサ内でパフォーマンスを監視する方法およびシステム | |
US20060184772A1 (en) | Lookahead mode sequencer | |
NZ201809A (en) | Microprocessor | |
JP4585647B2 (ja) | パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート | |
US6324640B1 (en) | System and method for dispatching groups of instructions using pipelined register renaming | |
US7725659B2 (en) | Alignment of cache fetch return data relative to a thread | |
US11789742B2 (en) | Pipeline protection for CPUs with save and restore of intermediate results | |
US20030196072A1 (en) | Digital signal processor architecture for high computation speed | |
US5897654A (en) | Method and system for efficiently fetching from cache during a cache fill operation | |
JPH10301779A (ja) | デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置 | |
US7389405B2 (en) | Digital signal processor architecture with optimized memory access for code discontinuity | |
US6675287B1 (en) | Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor | |
US6625634B1 (en) | Efficient implementation of multiprecision arithmetic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040406 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040531 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040622 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040630 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070709 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080709 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080709 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090709 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100709 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110709 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |