JP3573943B2 - マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置 - Google Patents
マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置 Download PDFInfo
- Publication number
- JP3573943B2 JP3573943B2 JP05326798A JP5326798A JP3573943B2 JP 3573943 B2 JP3573943 B2 JP 3573943B2 JP 05326798 A JP05326798 A JP 05326798A JP 5326798 A JP5326798 A JP 5326798A JP 3573943 B2 JP3573943 B2 JP 3573943B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- instruction
- instructions
- instruction queue
- execution
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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)
Description
【発明の属する技術分野】
本発明は、マルチスレッド・プロセッサにおけるスレッド切換待ち時間を減少させる方法および装置に関する。
【0002】
【従来の技術】
今日、高性能シングルチップ・マイクロプロセッサの最も一般的なアーキテクチャは、RISC(縮小命令セット・コンピュータ)アーキテクチャである。半導体技術の進歩に伴って、RISCアーキテクチャの目的は、マシンのクロック・サイクルごとに1つの命令を開始できるプロセッサ設計を開発することになっている。この尺度、すなわち1命令当たりのクロック・サイクル数CPIは、一般に、高性能プロセッサのアーキテクチャを特徴付けるために使用されている。命令パイプライン方式およびキャッシュ・メモリのアーキテクチャの特徴によりCPIの改善が可能になった。パイプライン式の命令実行により、前に出された命令の実行が終了する前に次の命令の実行を開始することができる。キャッシュ・メモリにより、ほとんどの場合メイン・メモリの全アクセス時間を待つことなく命令の実行を継続することが可能になる。
【0003】
メイン・メモリに使用されるメモリ・デバイスは高速になってきているが、そのようなメモリ・チップとハイエンド・プロセッサとの速度のギャップはますます大きくなっている。したがって、現在のハイエンド・プロセッサの設計においては、キャッシュ・ミスがあると実行時間の多くがその解決のために費やされ、メモリ待ち時間を許容する技術が実施されないかぎりメモリ・アクセス遅延がプロセッサ実行時間のうちでますます大きな割合を占めるようになると予想される。
【0004】
メモリ待ち時間を許容する1つの既知の技術は、マルチスレッディングである。マルチスレッディングには、ハードウェア・マルチスレッディングとソフトウェア・マルチスレッディングの2つのタイプがある。通常、ハードウェア・マルチスレッディングは、いくつかのタスクまたはスレッドの状態をチップ上に維持するプロセッサを使用する。これは、一般に、各スレッドごとにプロセッサ・レジスタを複製するものである。
【0005】
ハードウェア・マルチスレッディングには2つの基本的形態がある。伝統的な形態は、プロセッサ内でN個のスレッドまたは状態を保持し、サイクルごとにスレッドをインターリーブするものである。これにより、単一スレッド内の命令が分離されるため、すべてのパイプライン依存性がなくなる。ハードウェア・マルチスレッディングの他の形態は、ある待ち時間の長いイベントでスレッドを切り換えるものである。本発明の好ましい実施形態は、ハードウェア・マルチスレッディングを利用して、ある待ち時間の長いイベントでスレッドを切り換える。
【0006】
しかし、スレッドの切換え自体が、多くのクロック・サイクルを必要とする。スレッド切換えによる待ち時間のかなりの部分は、新しいスレッドを実行し始めるのに必要な命令取出しによるものである。図1に、マルチスレッド・プロセッサの複数のパイプラインによって処理される命令をディスパッチする従来技術の構成を示す。図1に示したように、命令受渡しマルチプレクサ8は、第1と第2の入力を有する。第1の入力は、複数の命令を格納する命令キャッシュ4に接続される。命令キャッシュ4に格納された命令は、現在実行中のスレッドである活動スレッドと、現在実行されていない1つまたは複数の休止スレッドの両方に属する。命令受渡しマルチプレクサ8の第2の入力は、メイン・メモリまたはメモリ・サブシステム2あるいはその両方に接続される。メイン・メモリは、各スレッド用のすべての命令を格納し、レベル2キャッシュなどのメモリ・サブシステムは、様々なスレッド用のすべての命令は格納しないが、命令キャッシュ4よりも多くの命令を格納することができる。図1に示したように、命令キャッシュ4はまた、メイン・メモリまたはメモリ・サブシステム2あるいはその両方に接続される。
【0007】
命令受渡しマルチプレクサ8は、制御論理6から受け取ったライン充填バイパス信号に従って、命令キャッシュ4またはメイン・メモリ/メモリ・サブシステム2あるいはその両方から、制御論理6によってアドレスされた命令を出力する。命令受渡しマルチプレクサ8は、命令を主命令待ち行列10に出力する。主命令待ち行列10は、マルチスレッド・プロセッサによって実施される複数の処理パイプラインにディスパッチするために出力する複数の命令を格納する。
【0008】
スレッド切換えが行われると、主命令待ち行列10内の命令は無効にされ、第1のクロック・サイクルの間に、活動スレッドになる休止スレッドの命令用のアドレスが制御論理6によって生成される。第2のクロック・サイクルの間に、新たに生成された命令アドレスに基づいて命令がアドレスされ、制御論理6は、命令受渡しマルチプレクサ8が命令キャッシュ4に接続された入力を選択するようにライン充填バイパス信号を出力する。アドレスされた命令が命令キャッシュ4内にある場合は、第3のクロック・サイクルの間、命令受渡しマルチプレクサ8がこれらの命令を主命令待ち行列10に出力し、主命令待ち行列10は、処理パイプラインにディスパッチのため命令を出力する。したがって、活動スレッドになる休止スレッドの命令が命令キャッシュ4内にあるとき、スレッド切換えは3クロック・サイクルで完了する。
【0009】
当然ながら、命令キャッシュ4が、制御論理6によってアドレスされた、活動スレッドになる休止スレッドの命令を含まない場合は、スレッド切換えの完了に要する時間は、命令キャッシュ・ミスを解決するのに要する時間だけ増加する。
【0010】
【発明が解決しようとする課題】
本発明の一目的は、マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させるための方法および装置を提供することである。
【0011】
本発明のもう1つの目的は、スレッド切換えを実行するのに必要な時間から主命令待ち行列を再充填する時間をなくす、マルチスレッド・プロセッサにおけるスレッド切換え待ち時間を減少させる方法および装置を提供することである。
【0012】
【課題を解決するための手段】
上記その他の目的は、活動スレッド用の命令を格納する主命令待ち行列の他に、休止スレッド用の命令を格納するスレッド切換え命令待ち行列を提供することによって達成される。スレッド切換えが行われるとき、スレッド切換え待ち行列に格納された命令が実行のために出力され、それにより、主命令待ち行列を再充填するために待たなければならないことによるスレッド切換え待ち時間がなくなる。
【0013】
さらに、活動スレッドになる休止スレッドの命令が、スレッド切換え命令待ち行列から出力される一方で、スレッド切換え命令待ち行列に格納された命令のうちのいくつかが主命令待ち行列に転送される。スレッド切換え命令待ち行列からの命令の最初の出力の後に、実行のための命令が主命令待ち行列から再び得られる。主命令待ち行列は、スレッド切換え命令待ち行列に格納されていた命令で事前に充填されているので、主命令待ち行列に充填するためのそれ以上の遅延がなくなる。
【0014】
本発明の他の目的、機能および特徴、構造の関連要素の方法、動作および機能、部品の組み合わせ、ならびに製造の経済性は、以下の好ましい実施形態の詳細な説明と、添付の図面から明らかとなろう。図面はすべて本明細書の一部分を構成し様々な図で同じ参照番号は対応する部品を示す。
【0015】
【発明の実施の形態】
本発明による命令をディスパッチする構造は、主命令待ち行列と並列に、命令受渡しマルチプレクサおよび出力マルチプレクサに接続されたスレッド切換え命令待ち行列を含む。スレッド切換え命令待ち行列は、休止スレッドの命令を格納し、主命令待ち行列は活動スレッドの命令を格納する。スレッド切換え命令待ち行列に格納された命令は、スレッド切換えが行われるときに出力マルチプレクサによって実行のために出力され、それにより、主命令待ち行列が再充填されるのを待たなければならないことによるスレッド切換え待ち時間がなくなる。
【0016】
さらに、活動スレッドになる休止スレッドの命令が出力マルチプレクサによって出力される一方で、これらの命令のいくつかは主命令待ち行列に転送される。スレッド切換え命令待ち行列から得られた命令の最初の出力の後、出力マルチプレクサは、主命令待ち行列からの命令を実行のために再び出力する。主命令待ち行列は、スレッド切換え命令待ち行列に元々格納されていた命令ですでに一杯なため、主命令待ち行列を充填するためのそれ以上の遅延がなくなる。
【0017】
次に、図2を参照して、本発明による命令をディスパッチする構造を詳細に説明する。図2に示したように、命令受渡しマルチプレクサ8、制御論理6、命令キャッシュ4およびメイン・メモリ/メモリ・サブシステム2が、従来技術の命令ディスパッチ構造に関して前述したのと同じ方法で接続される。同様に、制御論理6は、命令受渡しマルチプレクサ8が命令キャッシュ4またはメイン・メモリ/メモリ・サブシステム2から受け取った命令を出力するべきかどうか示すライン充填バイパス信号を、命令受渡しマルチプレクサ8に出力する。
【0018】
一方、本発明による命令をディスパッチする構造は、命令充填マルチプレクサ12、スレッド切換え命令待ち行列14、および出力マルチプレクサ16をも含む。命令充填マルチプレクサ12は、第1と第2の入力を有する。第1の入力は、命令受渡しマルチプレクサ8の出力に接続される。命令充填マルチプレクサ12の第2の入力は、出力マルチプレクサ16の出力に接続される。命令充填マルチプレクサ12は、制御論理6から受け取ったスレッド切換え信号に基づいて、命令受渡しマルチプレクサ8または出力マルチプレクサ16から受け取った命令を主命令待ち行列10に出力する。
【0019】
スレッド切換え命令待ち行列14はまた、命令受渡しマルチプレクサ8の出力を受け取り、スレッド切換え命令待ち行列14と主命令待ち行列10は共にその出力を出力マルチプレクサ16に送る。出力マルチプレクサ16は、制御論理6によって生成されたスレッド切換え信号に基づいて、主命令待ち行列10またはスレッド切換え命令待ち行列14からの命令を選択的に出力する。出力マルチプレクサ16から出力された命令は、マルチスレッド・プロセッサの複数の処理パイプラインにディスパッチされる。
【0020】
活動スレッドの実行中、スレッド切換え信号は低レベルのままであり、その結果、命令充填マルチプレクサ12は、命令受渡しマルチプレクサ8から受け取った命令を出力して主命令待ち行列10を一杯にし、出力マルチプレクサ16は、主命令待ち行列10から受け取った命令を出力する。
【0021】
さらに、活動スレッドの実行中、休止スレッドの命令が先取りされてスレッド切換え命令待ち行列14に格納される。スレッド切換え命令待ち行列14に格納するために休止スレッドの命令を先取りする際に、制御論理6は、活動スレッドの命令を先取りして主命令待ち行列10に格納するために、指定されたクロック・サイクルを使う。制御論理6は、(1)スレッド切換え命令待ち行列14にまだ休止スレッドの命令がロードされていないとき、(2)休止スレッド用の命令の先取りによる命令キャッシュ・ミスが処理されていないとき、そして(3)主命令待ち行列10内の分岐命令と複数の処理パイプラインによって処理されている命令がどれも命令キャッシュ4にアクセスする必要がないときに、これらのクロック・サイクルをスチールする。これらの条件が満たされた場合、制御論理6は、休止スレッドの命令のアドレスを生成し、命令キャッシュ4とメイン・メモリ/メモリ・サブシステム2のうちの少なくとも1つからの命令にアクセスし、命令受渡しマルチプレクサ8が休止スレッドの先取りした命令を出力するようにライン充填バイパス信号を出力する。制御論理6は、また、スレッド切換え命令待ち行列14がこれらの命令を格納できるようにし、主命令待ち行列10がこれらの命令を格納しないようにする。分かりやすくするため、制御論理6から主命令待ち行列10およびスレッド切換え命令待ち行列14へのイネーブル/ディセーブル制御線は示してない。
【0022】
主命令待ち行列10のサイズとスレッド切換え命令待ち行列14のサイズは、所望の動作特性に基づいて設定することができる。ただし、好ましい実施形態においては、スレッド切換え命令待ち行列14のサイズは、スレッド切換え命令待ち行列14が複数の処理パイプラインによって単一クロック・サイクル内で受け取ることができるよりも多くの命令を格納するように設定される。
【0023】
スレッド切換えが行われるとき、制御論理6は、1クロック・サイクルの間スレッド切換え信号の状態を低レベルから高レベルに変化させる。その結果、出力マルチプレクサ16は、スレッド切換え命令待ち行列14に格納されていた命令を出力する。スレッド切換え命令待ち行列14は、複数の処理パイプラインによって受け取ることができるよりも多くの命令を格納するので、複数の処理パイプラインにディスパッチされなかった命令は命令充填マルチプレクサ12が受け取る。命令充填マルチプレクサ12は、スレッド切換え信号の状態変化に従って、出力マルチプレクサ16から出力された命令出力を主命令待ち行列10に出力する。このようにして、単一クロック・サイクル中に、活動スレッドになる休止スレッドからの命令が処理パイプラインにディスパッチされ、主命令待ち行列10に転送される。
【0024】
クロック・サイクルの完了後、スレッド切換え信号はその低レベル状態に戻り、命令が主命令待ち行列10から処理パイプラインに再びディスパッチされる。さらに、制御論理6は、命令の先取りを始めて、主命令待ち行列10とスレッド切換え命令待ち行列14を満杯にする。
【0025】
本発明による命令ディスパッチ構造は、従来技術の構造と異なり、命令待ち行列を満杯にし命令待ち行列から命令をディスパッチし始めるのに必要な時間をスレッド切換え待ち時間からなくす。したがって、本発明により、従来の技術と比べてスレッド切換え待ち時間が2サイクル少なくなる。
【0026】
本発明は、図2に示した実施形態に限定されるものではないことを理解されたい。たとえば、本発明を、これまで2つのスレッドだけを実施するマルチスレッド・プロセッサに関して説明した。しかし、マルチスレッド・プロセッサは、複数のスレッドを実施することができ、制御論理6は、スレッド切換え命令待ち行列14内に、スレッド切換えが行われた場合に活動スレッドになる可能性が最も高い休止スレッドの命令を格納する。さらに別の代替方法として、休止スレッドにそれぞれ対応する複数のスレッド切換え命令待ち行列を設け、命令充填マルチプレクサ12と出力マルチプレクサ16を、追加のスレッド切換え命令待ち行列に対応するように拡張することができる。
【図面の簡単な説明】
【図1】従来技術による命令をディスパッチするの構造を示す図である。
【図2】本発明による命令をディスパッチする構造を示す図である。
【符合の説明】
2 メイン・メモリ/メモリ・サブシステム
4 命令キャッシュ
6 制御論理回路
8 命令受渡しマルチプレクサ
10 主命令待ち行列
12 命令充填マルチプレクサ
14 スレッド切換え命令待ち行列
16 出力マルチプレクサ
Claims (5)
- マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置であって、
前記マルチスレッド・プロセッサによって現在実行中の活動スレッド用の命令を格納する主命令待ち行列と、
前記マルチスレッド・プロセッサによって現在実行されていない休止スレッド用の命令を格納する少なくとも1つのスレッド切換え命令待ち行列と、
前記活動スレッドの実行中に前記主命令待ち行列からの命令を実行のためにディスパッチし、スレッド切換えを行うときに前記スレッド切換え命令待ち行列からの命令を実行のためにディスパッチするディスパッチ手段とを備え、
前記ディスパッチ手段が、
前記主命令待ち行列の出力と前記スレッド切換え命令待ち行列の出力とを受け取り、スレッド切換えを示すスレッド切換え信号に基づいてその一方を出力する第1のマルチプレクサと、
前記第1のマルチプレクサの出力と前記主命令待ち行列内に格納すべき命令とを受け取って、前記スレッド切換え信号に基づいてその一方を出力する第2のマルチプレクサとを含み、
前記ディスパッチ手段が、前記スレッド切換え信号に基づいて、前記スレッド切換え命令待ち行列内に格納された命令の一部分を実行のためにディスパッチし、実行のためにディスパッチされていない前記スレッド切換え命令待ち行列内の命令を前記主命令待ち行列に転送する、装置。 - 前記スレッド切換え命令待ち行列が、命令キャッシュおよびメイン・メモリの少なくとも一方から先取りされた前記休止スレッド用の命令を格納することを特徴とする請求項1に記載の装置。
- 前記スレッド切換え命令待ち行列が、単一処理サイクルで実行のためにディスパッチできるよりも多くの命令を格納する、請求項1に記載の装置。
- 前記スレッド切換え命令待ち行列が、複数の休止スレッドのうちの1つのスレッド用の命令を格納することを特徴とする請求項1に記載の装置。
- 複数の休止スレッド用の命令をそれぞれ格納する複数のスレッド切換え命令待ち行列を備え、
前記ディスパッチ手段が、前記複数のスレッド切換え命令待ち行列のうち、前記スレッド切換え信号に基づいて活動スレッドになる前記休止スレッドに対応する1つのスレッド切換え命令待ち行列から命令をディスパッチする、請求項1に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/829,518 US5907702A (en) | 1997-03-28 | 1997-03-28 | Method and apparatus for decreasing thread switch latency in a multithread processor |
US08/829518 | 1997-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10283203A JPH10283203A (ja) | 1998-10-23 |
JP3573943B2 true 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) |
Families Citing this family (46)
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 |
US7421572B1 (en) * | 1999-09-01 | 2008-09-02 | Intel Corporation | Branch instruction for processor with branching dependent on a specified bit in a register |
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 |
US6931641B1 (en) | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
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 |
US20030188141A1 (en) * | 2002-03-29 | 2003-10-02 | Shailender Chaudhry | Time-multiplexed speculative multi-threading to support single-threaded applications |
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 |
AU2003231945A1 (en) * | 2002-05-31 | 2003-12-19 | Guang R. Gao | Method and apparatus for real-time multithreading |
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 |
US7617499B2 (en) * | 2003-12-18 | 2009-11-10 | International Business Machines Corporation | Context switch instruction prefetching in multithreaded computer |
US7493621B2 (en) * | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data 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 |
ATE550720T1 (de) * | 2004-08-03 | 2012-04-15 | Nxp Bv | System, controller und verfahren zur steuerung der kommunikation zwischen einem prozessor und einer externen peripherievorrichtung |
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 | 中国科学技术大学 | 基于双缓存预读的向用户传输数据的方法和装置 |
GB2513516A (en) * | 2012-01-31 | 2014-10-29 | Ibm | 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 |
CN113168328B (zh) * | 2018-12-11 | 2024-01-26 | 三垦电气株式会社 | 处理器和管线处理方法 |
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 |
EP0463965B1 (en) * | 1990-06-29 | 1998-09-09 | Digital Equipment Corporation | Branch prediction unit for high-performance processor |
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
Also Published As
Publication number | Publication date |
---|---|
CN1195135A (zh) | 1998-10-07 |
GB2324392A (en) | 1998-10-21 |
GB9803618D0 (en) | 1998-04-15 |
SG63818A1 (en) | 1999-03-30 |
HK1011567A1 (en) | 1999-07-16 |
KR100274268B1 (ko) | 2000-12-15 |
JPH10283203A (ja) | 1998-10-23 |
CN1092360C (zh) | 2002-10-09 |
GB2324392B (en) | 2001-09-05 |
TW362194B (en) | 1999-06-21 |
KR19980079506A (ko) | 1998-11-25 |
US5907702A (en) | 1999-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3573943B2 (ja) | マルチスレッド・プロセッサによる実行のために命令をディスパッチする装置 | |
JP3595504B2 (ja) | マルチスレッド式プロセッサにおけるコンピュータ処理方法 | |
US6981133B1 (en) | Zero overhead computer interrupts with task switching | |
US6931641B1 (en) | Controller for multiple instruction thread processors | |
JP3714598B2 (ja) | マルチスレッド式プロセッサでのスレッド優先順位の変更 | |
EP0933698B1 (en) | Probing computer memory latency | |
JP4006180B2 (ja) | マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置 | |
EP1421490B1 (en) | Methods and apparatus for improving throughput of cache-based embedded processors by switching tasks in response to a cache miss | |
JP4179555B2 (ja) | マルチスレッド・プロセッサにおいてスレッドの優先度を調整するための装置および方法 | |
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) | マルチスレッド・プロセッサ内でパフォーマンスを監視する方法およびシステム | |
WO1990014629A2 (en) | Parallel multithreaded data processing system | |
TW200937284A (en) | System and method for performing locked operations | |
US20040034759A1 (en) | Multi-threaded pipeline with context issue rules | |
US7725659B2 (en) | Alignment of cache fetch return data relative to a thread | |
US5897654A (en) | Method and system for efficiently fetching from cache during a cache fill operation | |
US8387053B2 (en) | Method and system for enhancing computer processing performance | |
US20050273579A1 (en) | Method and apparatus for maintaining status coherency between queue-separated functional units | |
JP2002163121A (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 | |
US9342312B2 (en) | Processor with inter-execution unit instruction issue | |
Pulka et al. | Multithread RISC architecture based on programmable interleaved pipelining |
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 |