JP3832623B2 - マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 - Google Patents
マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 Download PDFInfo
- Publication number
- JP3832623B2 JP3832623B2 JP2001094456A JP2001094456A JP3832623B2 JP 3832623 B2 JP3832623 B2 JP 3832623B2 JP 2001094456 A JP2001094456 A JP 2001094456A JP 2001094456 A JP2001094456 A JP 2001094456A JP 3832623 B2 JP3832623 B2 JP 3832623B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- thread
- functional units
- priority
- instructions
- 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 title claims description 18
- 238000012545 processing Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 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
-
- 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/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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
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)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は一般にマルチスレッドプロセッサに関し、特に、このようなマルチスレッドプロセッサ内で機能単位を割り当てるための方法および装置に関する。
【0002】
【従来の技術】
コンピュータアーキテクチャの設計は、さらに早くワークロードを完了しようと試みている。プログラムの平行処理を使用するための、多くのアーキテクチャ設計が提案または提言されてきた。一般に、一度に複数の動作を開始できるアーキテクチャは、一度に1つの動作しか開始できないアーキテクチャよりも早くプログラムを実行できる。コンピュータアーキテクチャにおけるもっとも最近の発展は、一度に1つ以上の動作を開始し、それによってプログラム動作の速度を上げる方法に向けられてきた。図1は、従来のマイクロプロセッサのアーキテクチャ100を示す。具体的には、マイクロプロセッサ100はプログラムカウンタ(PC)110、レジスタセット120、および多くの機能単位(FU)130−Nを含む。冗長機能単位(FU)130―1〜130―Nは、例としてのマイクロプロセッサのアーキテクチャ100に十分なハードウェアリソースを提供して、対応する数の動作を並列的に実行する。
【0003】
プログラム内で平行処理を使用するアーキテクチャは、一度に複数の機能単位にオペランドを発行して、プログラム実行の速度を上げる。スーパースカラープロセッサ、超長命令語(VLIW)プロセッサ、およびマルチスレッドプロセッサを含む、並列アーキテクチャを伴う多くのアーキテクチャが提案または提言されており、各々はそれぞれ、図2、図4、および図5と共に下記に説明される。一般に、スーパースカラープロセッサは実行時にハードウェアを使用して、単一の命令ストリームからの多くの動作が独立しているか否かを動的に決定し、独立している場合は、プロセッサは並列演算論理機構(ALU)を使用して命令を実行する。ソースオペランドがそれに先行する命令の宛先オペランドに依存していない場合、2つの命令は独立していると言われる。超長命令語(VLIW)プロセッサは、依存性の情報に基づいてコンパイル中に命令を評価し、動作を適切にグループ分けし、並列実行する。他方マルチスレッドプロセッサは、単一の命令ストリーム内で並列処理を使用しようと試みるのではなく、複数の命令ストリームを並列に実行する。
【0004】
図2に示されたスーパースカラープロセッサのアーキテクチャ200は、各々に有効なデータが提供された場合、独立して動作する多くの機能単位を有する。たとえば図2に示されたように、スーパースカラープロセッサ200は演算論理機構(ALU)230―Nとして具現化された3つの機能単位を有し、その各々は同時に結果を計算できる。スーパースカラープロセッサ200は、命令フェッチブロック210、命令復号ブロック215、および命令順序付けユニット220(発行ブロック)を有するフロントエンド部208を含む。命令フェッチブロック210は単一スレッドの命令ストリームの入力待ち行列205から命令を得る。命令順序付けユニット220は、知られた方法で使用可能な演算論理機構(ALU)230―Nの中で同時に実行できる独立した命令を識別する。詳細化ブロック250は命令が完了することを可能にし、バッファ化および再順序付けを提供して、結果をレジスタセット240に書き込んで戻す。
【0005】
図3に示されたプログラムフラグメント310の中で、命令L2およびL3の中にあるソースオペランドのいずれもそれに先行する任意の命令の宛先オペランドに依存していないという点で、場所L1、L2、およびL3にある命令は独立している。プログラムカウンタ(PC)が場所L1に設定されている時、命令順序付けユニット220は命令ストリームの先を見越して、L2およびL3における命令が独立していることを検出するので、したがってこれら3つすべてが3つの使用可能な機能単位230―Nに同時に発行できる。スーパースカラープロセッサのさらに詳細な説明に関しては、たとえば、参照により本明細書に援用された、IEEE(1995年12月)の議事録の、James.E.SmithおよびGurindar.S.Sohiによる「The Microarchitecture of Superscalar Processors」を参照されたい。
【0006】
先に示したように、図4に示された超長命令語(VLIW)プロセッサ400は、ハードウェアを使用して実行時に動的に並列処理を検出するのではなく、ソフトウェアに頼って単一の命令ストリームからコンパイル時にデータの並列処理を検出する。VLIWコンパイラは図3のコードフラグメント310を生成するために使用されたソースコードを与えられると、命令の独立性を検出し、3つの動作すべてから成る単一の非常に長い命令を構築する。実行時には、プロセッサ400の発行論理はこの大きな命令を1つのサイクルで発行し、データをすべての使用可能な機能単位430―Nに向ける。図4に示したように、超長命令語(VLIW)プロセッサ400は統合フェッチ/復号ブロック420を含み、統合フェッチ/復号ブロック420は前もってグループ分けされた命令410をメモリから得る。超長命令語(VLIW)プロセッサのさらに詳細な説明に関しては、たとえば、参照により本明細書に援用されている、SPIE Real Time Signal Processing IV(1981)の241〜248ページにある、Burton J.Smithによる「Architecture and Applications of the HEP Multiprocessor Computer System」を参照されたい。
【0007】
VLIWプロセッサの一変形例は、たとえば、IEEE Transactions on Computers (1998年8月)のRobert P.Colwellらによる「A VLIW Architecture for a Trace Scheduling Compiler」で論じられているようなマルチフローアーキテクチャによって代表され、固定長命令を使用して、そこにおいてあらかじめ定義されたフィールドがデータを一度にすべての機能ユニット430―Nに向ける。大きな命令の中で指定されたすべての動作が完了すると、プロセッサは新しい、多数の動作の命令を発行する。テキサス州ダラスのTexas Instrumentsから市販されているC6xプロセッサや、カリフォルニア州サンタクララのIntel Corpから市販されているEPIC IA−64などのいくつかのより最近のVLIWプロセッサは、その代わりに可変長命令パケットを使用し、可変長命令パケットは互いにバンドルされている1つまたは複数の動作を含む。
【0008】
図5に示されたマルチスレッドプロセッサ500は単一の命令ストリーム内で平行処理を使用しようと試みるのではなく、複数の命令ストリームを並列に実行することによってパフォーマンスの向上を得る。図5に示されたマルチスレッドプロセッサ500は、プログラムカウンタ510―N、レジスタセット520―N、および機能単位530―Nを含み、各々は対応する命令ストリームNに専用である。マルチスレッドプロセッサ500の代替の実装は、いくつかのレジスタセット520―Nおよびプログラムカウンタ510―Nを伴う単一の機能単位530を使用してきた。このような代替のマルチスレッドプロセッサ500は、プロセッサ500が、1つまたは2つのサイクル内で命令発行を1つのプログラムカウンタ/レジスタセット510―N/520−Nから、別のプログラムカウンタ/レジスタセット510−N/520−Nに切り換えることができるように設計されている。したがって、LOAD命令などの待ち時間が長い命令は、別の命令ストリームからのより短い動作と重ねることができる。ワシントン州シアトルのTera Computer Companyから市販されているTERA MTAアーキテクチャはこのタイプの1つの例である。
【0009】
同時マルチスレッド化と呼ばれる、マルチスレッドアーキテクチャ500の拡張は、図2と共に上記に説明されたスーパースカラーアーキテクチャと、図5と共に上記に説明されたマルチスレッド設計との両方を組み合わせている。同時マルチスレッド化技法の詳細な説明に関しては、たとえば、参照により本明細書に援用されている、第22回 Annual Int’l Symposium on Computer Architecture(1995年6月、イタリア、Santa Margherita Ligure)の議事録、392〜403ページにある、Dean Tullsenらによる「Simultaneous Multithreading: Maximizing On-Chip Parallelism」を参照されたい。一般に、同時マルチスレッド化アーキテクチャでは機能単位のプールがあり、そのうち任意の数が、多くのプログラムカウンタ/レジスタセット構造のうち任意の1つから発行できる命令に動的に割り当てられる。機能単位を多くのプログラムスレッドの間で共有することにより、同時マルチスレッド化アーキテクチャは図5に示されているより効率的にハードウェアを使用することができる。
【0010】
【発明が解決しようとする課題】
同時マルチスレッド化アーキテクチャの組み合わされた手法がスーパースカラーアーキテクチャまたはマルチスレッドアーキテクチャの個別の手法よりも改善された効率を提供する一方、同時マルチスレッド化アーキテクチャは依然として、動的に命令ストリームを検討して潜在的な並列処理を検出するために、精巧な発行論理を必要とする。したがって、2つの命令ストリームが独立しているか否かを動的に決定する必要のない、マルチスレッドプロセッサのアーキテクチャに対するニーズが存在する。さらに、同時マルチスレッド化を提供するマルチスレッドのアーキテクチャに対するニーズが存在する。またさらに、リアルタイムでのこのようなマルチスレッドプロセッサ内で機能単位を割り当てるマルチスレッドのアーキテクチャに対するニーズが存在する。
【0011】
【課題を解決するための手段】
一般に、マルチスレッド超長命令語(VLIW)プロセッサにおいて、機能単位を割り当てるための方法および装置が開示される。本発明は従来の超長命令語(VLIW)アーキテクチャおよび従来のマルチスレッドアーキテクチャの技法を組み合わせている。本発明の組み合わされたアーキテクチャは、個別のプログラム内、およびワークロード全体で実行時間を軽減する。
【0012】
本発明は、コンパイラを使用してマルチスレッドプロセッサのアーキテクチャ内で並列処理を検出する。したがって動的な決定が必要ないため、単一スレッドVLIWプロセッサと同じ方法で単一のプログラムシーケンサから多数の命令を発行することによって、また、同時マルチスレッド化と同じように多数のプログラムシーケンサをサポートするが発行論理内で複雑さが軽減されてサポートすることによって、プログラムの並列処理を使用するマルチスレッドVLIWアーキテクチャが開示される。
【0013】
本発明は命令を機能単位に割り当て、多数のVLIW命令を同じサイクル内の多数の機能単位に発行する。本発明の割り当て機構は、引数が機能単位にディスパッチされる直前に、パイプライン段を占有する。一般に、割り当て段は、適切な命令を選択し、スレッドの優先順位またはリソース可用性、あるいはその両方にもとづいて、その命令を機能単位に割り当てることによって、命令をどのようにグループ分けして効率を最大にするかを決定する。
【0014】
割り当て段は、パイプライン内でフェッチされ復号化された(最高で)N*K個の命令から、適切なM個の命令を選択して実行する。命令の選択に関する判定基準は、スレッドの優先順位またはリソースの可用性またはその両方である。スレッドの優先順位判定基準の下では、種々のスレッドは異なる優先順位を有することができる。割り当て段は、実装されている優先順位の方針にしたがって、もっとも高い優先順位を伴うスレッドに属するパケット(またはパケットからの命令)を選択し、かつ転送して実行する。リソースの可用性判定基準の下では、(最高でK個の命令を有する)パケットは、そのパケットによって必要とされるリソース(機能単位など)が次のサイクルについて使用可能である場合にのみ、割り当てられる。機能単位はその可用性を割り当て段に報告する。
【0015】
本発明のさらに完全な理解、また本発明のさらなる特徴および利点は、次の詳細な説明および図面を参照することによって得られる。
【0016】
【発明の実施の形態】
(関連出願への相互参照)
本発明は、代理人整理番号(Berenbaum 8−3−4−4)の、「Method and Apparatus for Releasing Functional Units in a Multithreaded Very Large Instruction Word (VLIW) Processor」という名称の米国特許出願と、代理人整理番号(Berenbaum 9−4−5−5)の、「Method and Apparatus for Splitting Packets in a Multithreaded Very Large Instruction Word (VLIW) Processor」という名称の米国特許出願と、代理人整理番号(Berenbaum 10−5−6−6)で、「Method and Apparatus for Identifying Splittable Packets in a Multithreaded Very Large Instruction Word (VLIW) Processor」という名称の米国特許出願に関連し、各々は本明細書と同時に提出され、本発明の譲渡人に譲渡され、参照により本発明に援用されている。
【0017】
図6は、本発明によるマルチスレッドVLIWプロセッサ600を示す図である。図6に示したように、3つの命令スレッド、すなわちスレッドA(TA)、スレッドB(TB)およびスレッドC(TC)があり、各々は命令番号nで動作している。さらに、例としてのマルチスレッドVLIWプロセッサ600は、9つの機能単位620−1〜620−9を含み、これは任意のスレッドTA―TCに独立的に割り当てることができる。例としての3つのスレッドTA―TC上の命令の数は9で、例としての使用可能な機能ユニット620の数もまた9なので、3つのスレッドTA―TCすべてからの命令の各々は1つのサイクルで命令パケットを発行でき、次のサイクルで命令n+1に移動できる。
【0018】
一般的に、命令とそれによって指定される動作の間には1対1の対応があることに留意されたい。したがって、この用語は本明細書内では相互に交換可能であるように使用される。さらに、命令が多数の動作を指定する状況では、マルチスレッドVLIWプロセッサ600は1つまたは複数の多数動作の機能単位620を含んで、多数動作を指定する命令を実行すると仮定されていることに留意されたい。多数動作を指定する命令が処理できるアーキテクチャの例は、複雑命令セットコンピュータ(CISC)である。
【0019】
本発明は命令を機能単位に割り当て、同じサイクルの中で多数のVLIW命令を多数の機能単位に発行する。本発明の割り当て機構は、引数が機能単位にディスパッチされる直前にパイプライン段を占める。図7Aは従来のパイプライン700を示し、パイプライン700はパケットがメモリから得られるフェッチ段710、フェッチされた命令に関して必要な機能単位およびレジスタが識別される復号段720、および、指定された動作が実行され、かつその結果が処理される実行段730を含む。
【0020】
このように、従来のVLIWアーキテクチャでは、最高でK個までの命令を含むパケットが各サイクルでフェッチされる(フェッチ段710)。復号段720では最高でK個までの命令が復号化され、(最高で)K個の機能単位(FU)に送信される。実行段730では、命令に対応するレジスタが読み出され、機能単位はそれについて動作してその結果がレジスタに書き込まれて戻される。1機能単位あたり最高で3つまでのレジスタが読み出され、最高で1つのレジスタが書き込まれると仮定されている。
【0021】
図7Bは本発明によるパイプライン750を示し、ここでは図8と共にさらに以下に説明される割り当て段780が追加されて、マルチスレッドVLIWプロセッサを実装する。一般に、割り当て段780は動作をグループ化して効率を最大限にする方法を決定する。パイプライン750は、最高でN個までのパケットがメモリから得られるフェッチ段760、フェッチされた命令(最高でN*K個の命令)に関して機能単位およびレジスタが識別される復号段770、適切な命令が選択されFUに割り当てられる割り当て段780、および、指定された動作が実行され、かつその結果が処理される実行段790を含む。
【0022】
本発明のマルチスレッドVLIWプロセッサ600では、最高でN個までのスレッドがハードウェア内でサポートされる。N個のスレッドのコンテキストが存在し、単一のスレッドの可能なすべてのレジスタと、必要なすべての状態情報とを含む。マルチスレッドVLIWプロセッサ600はM個の機能単位を有し、MはKより大きいか等しい。図7Bに示された修正されたパイプライン段750は、次の方法で動作する。フェッチ段760では各サイクルにおいて、最高でN個までのパケット(各々は最高でK個の命令を含む)がフェッチされる。復号段770では最高でN*K個までの命令を復号化し、その要件および、読み出され、かつ書き込まれるレジスタを決定する。割り当て段780では(最高で)N*K個の命令からM個の命令を選択し、それらをM個の機能単位に転送する。各機能単位は最高で3個までのレジスタを読み出すことができ、1個のレジスタに書き込むことができると仮定されている。実行段790では、最高でM個までの機能単位が最高で3*M個までのレジスタを読み出し、最高でM個までのレジスタに書き込む。
【0023】
割り当て段780は、段760および770でフェッチされ、かつ復号化された(最高で)N*K個の命令から適切なM個の命令を選択して実行する。選択の判定基準はスレッドの優先順位またはリソースの可用性またはその両方である。スレッドの優先順位判定基準の下では、種々のスレッドは異なる優先順を有することができる。割り当て段780は、実装されている優先順位の方針にしたがってもっとも高い優先順位を伴うスレッドに属するパケット(またはパケットからの命令)を選択し転送して実行する。多数の優先順位方針を実装できる。たとえば、N個のコンテキスト(N個のハードウェアスレッド)をサポートするマルチスレッドVLIWプロセッサに関する優先順位方針は、N個の優先順位レベルを有することが可能である。プロセッサ内のもっとも優先順位の高いスレッドは、他のどのスレッドよりも前に割り当てられる。等しい優先順位を伴うスレッドの間では、もっとも長いこと割り当てを待っていたスレッドが優先される。
【0024】
リソースの可用性判定基準の下では、(最高でK個までの命令を有する)パケットは、そのパケットによって必要とされるリソース(機能単位)が次のサイクルについて使用可能である場合にのみ、割り当てられる。機能単位はその可用性を割り当て段780に報告する。
【0025】
図8は、割り当て段780の実装の概略構成図である。図8に示されたように、割り当て段780を実装するために必要とされるハードウェアは、優先順位符号器810および2つのクロスバスイッチ820、830を含む。一般に、優先順位符号器810は各スレッドの中で多数の動作の状態、および使用可能な機能単位の状態を検討する。優先順位符号器810は、第1のクロスバスイッチ820を実行して設定しようとするパケットを選択するので、適切なレジスタの内容が次のサイクルの最初で機能単位に転送される。優先順位符号器810の出力は第1のクロスバスイッチ820を構成して、選択されたスレッドからのデータを適切な機能単位にルーティングする。これはたとえば、(スレッド識別子を含む)レジスタ識別子を機能単位に送信し、機能単位に別のデータネットワークを介してレジスタの内容を読み取らせ、クロスバスイッチ810を使用して適切なレジスタの内容を、次のサイクルの初めに機能単位によって読み出されるラッチに移動することによって達成できる。
【0026】
優先順位符号器810はフェッチ段760(図7B)によってフェッチされたN個のパケットから、優先順位およびリソースの可用性に従って最高でN個までのパケットを選択して実行する。言い換えれば、優先順位符号器は、もっとも優先順位が高く、しかも実行のために使用不可能なリソースを必要としないスレッドを選択する。ついで、優先順位符号器は第1のクロスバスイッチ810を設定する。入力クロスバスイッチ810は最高で3K*N個の入力を最高で3*M個の出力にルーティングする。第1のクロスバスイッチ810は各パケットのレジスタ識別子(または適切なレジスタの内容)を適切な機能単位に転送する機能を有する。
【0027】
同じサイクル内で選択できるスレッドは最高でN個までであり、各スレッドは最高でK個までの命令のパケットを発行でき、各命令は最高で3個までのレジスタを読み出せるので、選択元のレジスタ識別子は3K*N個である。機能単位はM個しかなく、各機能単位は単一の命令を受け取ることができるので、選択されるべきレジスタ識別子は3M個のみである。したがって、クロスバスイッチはレジスタ識別子(またはレジスタの内容)の、3K*Nから3Mへのルーティングを実装する。
【0028】
出力クロスバスイッチ830は、M個の入力をN*M個またはN*K個の出力にルーティングする。第2のクロスバスイッチ830は適切な時間に設定され、機能単位の結果を適切なレジスタに転送して戻す。第2のクロスバスイッチ830は、(スレッド識別子を含む)レジスタ識別子を機能単位に送信することによって、別のネットワークとして実装できる。機能単位が結果を計算する時、機能単位はその結果を所与のレジスタ識別子にルーティングする。最高でN個までのスレッドにルーティングされるべき結果はM個ある。各スレッドは最高でK個までの結果を受け取ることができる。第2のクロスバスイッチ830は、M個の結果をN*K個の可能な宛先にルーティングする。第2のクロスバスイッチ830は、N個のレジスタファイルすべてに接続されたM個のバスとして実装できる。この場合、ルーティングはM個になり、N*M個の可能な宛先へルーティングすることになる(レジスタファイルがM個の結果を受け取る機能を有している場合)。
【0029】
本明細書に示され、説明された実施形態およびその変形例は、本発明の原理の例にすぎず、当業者によって本発明の範囲および精神から逸脱することなく種々の変更例が実装できることを理解されたい。
【図面の簡単な説明】
【図1】従来の一般化されたマイクロプロセッサのアーキテクチャを示す図である。
【図2】従来のスーパースカラープロセッサのアーキテクチャの概略構成図である。
【図3】動作の独立性を示すプログラムフラグメントを示す図である。
【図4】従来の超長命令語(VLIW)プロセッサのアーキテクチャの概略構成図である。
【図5】従来のマルチスレッドプロセッサの概略構成図である。
【図6】本発明によるマルチスレッドVLIWプロセッサの図である。
【図7A】マルチスレッドプロセッサに関する従来のパイプラインを示す図である。
【図7B】本発明によるマルチスレッドプロセッサに関するパイプラインを示す図である。
【図8】図7Bの割り当て段の実装の概略構成図である。
【符号の説明】
100 マイクロプロセッサ
110 プログラムカウンタ
120 レジスタセット
130−N 機能単位
200 スーパースカラープロセッサ
205 入力待ち行列
208 フロントエンド部
210 命令フェッチブロック
215 命令復号ブロック
220 命令順序づけユニット
230―N 演算論理機構
240 レジスタセット
250 詳細化ブロック
310 プログラムフラグメント
400 超長命令語(VLIW)プロセッサ
410 命令
420 統合フェッチ/復号ブロック
430−N 機能単位
500 マルチスレッドプロセッサ
510−N プログラムカウンタ
520−N レジスタ
530−N 機能単位
600 VLIWプロセッサ
620−N 機能単位
700 パイプライン
710 フェッチ段
720 復号段
730 実行段
750 パイプライン
760 フェッチ段
770 復号段
780 割り当て段
790 実行段
810 優先順位符号器
820 クロスバスイッチ
830 クロスバスイッチ
Claims (16)
- マルチスレッド超長命令語プロセッサであって、
複数のスレッドを有する命令ストリームからの複数の命令を実行するための複数の機能単位であって、該スレッドが優先順位を有するような複数の機能単位と、
前記命令ストリームから命令を選択し、該命令を前記複数の機能単位に転送するアロケータであって、該命令を前記スレッドの優先順位に基づいて選択し、そして前記複数のマルチスレッドを有する命令ストリーム内の任意のスレッドへ、複数の機能単位を各々独立して割り当てるアロケータと、を備えるマルチスレッド超長命令語プロセッサ。 - 前記スレッド優先順位は種々のスレッドが異なる優先順位を有することを可能にする請求項1に記載のマルチスレッド超長命令語プロセッサ。
- 前記アロケータは、もっとも高い優先順位を伴うスレッドに属する前記命令を選択し、かつ転送して実行する請求項1に記載のマルチスレッド超長命令語プロセッサ。
- 前記アロケータは、前記スレッドの優先順位およびリソースの可用性に基づいて前記命令を選択し、かつ転送する請求項1に記載のマルチスレッド超長命令語プロセッサ。
- マルチスレッド超長命令語プロセッサであって、
マルチスレッド命令ストリームから複数の命令を実行するための複数の機能単位と、
前記命令ストリームから命令を選択し、該命令を前記複数の機能単位に転送するアロケータであって、該命令をリソースの利用性に基づいて選択し、そして複数のマルチスレッドを有する命令ストリーム内の任意のスレッドへ、前記複数の機能単位を各々各々独立して割り当てるアロケータと、を備えるマルチスレッド超長命令語プロセッサ。 - 前記リソースの可用性は、命令によって必要とされるリソースが次のサイクルについて使用可能である場合のみ該命令を割り当てることを可能にする請求項5に記載のマルチスレッド超長命令語プロセッサ。
- 前記リソースは前記機能単位を含む請求項5に記載のマルチスレッド超長命令語プロセッサ。
- 前記アロケータは前記リソースの可用性および前記スレッドに割り当てられた優先順位に基づいて前記命令を選択し、かつ転送する請求項5に記載のマルチスレッド超長命令語プロセッサ。
- マルチスレッド超長命令語プロセッサにおいて複数のスレッドを有する命令ストリームから命令を処理するための方法であって、
複数の機能単位を使用して前記命令を実行するステップであって、前記スレッドは優先順位を有するステップと、
前記スレッドの優先順位に基づいて前記命令ストリームから命令を選択するステップと、
前記選択された命令を前記複数の機能単位に転送するステップであって、前記機能単位が各々独立して、複数のマルチスレッドを有する命令ストリーム内の任意のスレッドへ割り当てられるステップと、を含む方法。 - 前記スレッドの優先順位は、種々のスレッドが異なる優先順位を有することを可能にする請求項9に記載の方法。
- 前記選択のステップはもっとも高い優先順位を伴うスレッドに属する前記命令を選択して実行する請求項9に記載の方法。
- マルチスレッド超長命令語プロセッサにおいて複数のスレッドを有する命令ストリームから命令を処理するための方法であって、
複数の機能単位を使用して前記命令を実行するステップと、
リソースの可用性に基づいて前記命令ストリームから命令を選択するステップと、
前記選択された命令を前記複数の機能単位に転送するステップであって、前記機能単位が各々独立して、複数のマルチスレッドを有する命令ストリーム内の任意のスレッドへ割り当てられるステップと、を含む方法。 - 前記リソースの可用性は、前記命令によって必要とされるリソースが次のサイクルについて使用可能な場合のみ、前記命令を割り当てることを可能にする請求項12に記載の方法。
- 前記リソースは前記機能単位を含む請求項12に記載の方法。
- マルチスレッド超長命令語プロセッサにおいて複数のスレッドを有する命令ストリームから命令を処理するための装置であって、
その上に記録されたコンピュータ読み取り可能プログラムを有するコンピュータ読み取り可能媒体を含み、該コンピュータ読み取り可能プログラムは、コンピュータに、
複数の機能単位を使用して前記命令を実行させ、前記スレッドは優先順位を有し、
前記スレッドの優先順位に基づいて前記命令ストリームから命令を選択させ、および
前記選択された命令を前記複数の機能単位へ転送させるようにし、前記機能単位は各々独立して、複数のマルチスレッドを有する命令ストリーム内の任意のスレッドへ割り当てられるようになっている装置。 - マルチスレッド超長命令語プロセッサにおいて複数のスレッドを有する命令ストリームから命令を処理するための装置であって、
その上に記録されたコンピュータ読み取り可能プログラムを有するコンピュータ読み取り可能媒体を含み、該コンピュータ読み取り可能プログラムは、コンピュータに、
複数の機能単位を使用して前記命令を実行させ、
リソースの可用性に基づいて前記命令ストリームから命令を選択させ、および
前記選択された命令を前記複数の機能単位に転送させるようにし、前記機能単位は各々独立して、複数のマルチスレッドを有する命令ストリーム内の任意のスレッドへ割り当てられるようになっている装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/538,670 US7007153B1 (en) | 2000-03-30 | 2000-03-30 | Method and apparatus for allocating functional units in a multithreaded VLIW processor |
US09/538670 | 2000-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001306323A JP2001306323A (ja) | 2001-11-02 |
JP3832623B2 true JP3832623B2 (ja) | 2006-10-11 |
Family
ID=24147921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001094456A Expired - Fee Related JP3832623B2 (ja) | 2000-03-30 | 2001-03-29 | マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7007153B1 (ja) |
EP (1) | EP1148414B1 (ja) |
JP (1) | JP3832623B2 (ja) |
KR (1) | KR20010095069A (ja) |
CA (1) | CA2337172C (ja) |
DE (1) | DE60115982T2 (ja) |
TW (1) | TW514827B (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096343B1 (en) | 2000-03-30 | 2006-08-22 | Agere Systems Inc. | Method and apparatus for splitting packets in multithreaded VLIW processor |
WO2002046887A2 (en) * | 2000-10-23 | 2002-06-13 | Xyron Corporation | Concurrent-multitasking processor |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US7401207B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Apparatus and method for adjusting instruction thread priority in a multi-thread processor |
US7360062B2 (en) | 2003-04-25 | 2008-04-15 | International Business Machines Corporation | Method and apparatus for selecting an instruction thread for processing in a multi-thread processor |
US7401208B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor |
US8533716B2 (en) | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
GB0407384D0 (en) | 2004-03-31 | 2004-05-05 | Ignios Ltd | Resource management in a multicore processor |
US7664936B2 (en) * | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
US7613904B2 (en) * | 2005-02-04 | 2009-11-03 | Mips Technologies, Inc. | Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7490230B2 (en) * | 2005-02-04 | 2009-02-10 | Mips Technologies, Inc. | Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor |
US7657891B2 (en) | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
US7681014B2 (en) | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7853777B2 (en) * | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US7254697B2 (en) * | 2005-02-11 | 2007-08-07 | International Business Machines Corporation | Method and apparatus for dynamic modification of microprocessor instruction group at dispatch |
US7395414B2 (en) * | 2005-02-11 | 2008-07-01 | International Business Machines Corporation | Dynamic recalculation of resource vector at issue queue for steering of dependent instructions |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector supporting dynamic priorities in multi-port switch |
US7990989B2 (en) * | 2006-09-16 | 2011-08-02 | Mips Technologies, Inc. | Transaction selector employing transaction queue group priorities in multi-port switch |
US7760748B2 (en) * | 2006-09-16 | 2010-07-20 | Mips Technologies, Inc. | Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch |
GB2466984B (en) | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
CN101901130B (zh) * | 2010-07-26 | 2014-01-08 | 清华大学 | 一种指令分配和预处理指令译码的装置 |
KR102177871B1 (ko) * | 2013-12-20 | 2020-11-12 | 삼성전자주식회사 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
JP2017513094A (ja) * | 2014-03-27 | 2017-05-25 | インテル・コーポレーション | 複数のストランドからの命令をディスパッチするためのプロセッサロジックおよび方法 |
US11068274B2 (en) * | 2017-12-15 | 2021-07-20 | International Business Machines Corporation | Prioritized instructions in an instruction completion table of a simultaneous multithreading processor |
CN109491798A (zh) * | 2018-11-27 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种资源分配的方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404469A (en) * | 1992-02-25 | 1995-04-04 | Industrial Technology Research Institute | Multi-threaded microprocessor architecture utilizing static interleaving |
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
JPH09265397A (ja) * | 1996-03-29 | 1997-10-07 | Hitachi Ltd | Vliw命令用プロセッサ |
JP3745450B2 (ja) * | 1996-05-13 | 2006-02-15 | 株式会社ルネサステクノロジ | 並列処理プロセッサ |
KR100500002B1 (ko) | 1996-08-27 | 2005-09-08 | 마츠시타 덴끼 산교 가부시키가이샤 | 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 |
US5890009A (en) * | 1996-12-12 | 1999-03-30 | International Business Machines Corporation | VLIW architecture and method for expanding a parcel |
US6170051B1 (en) * | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
KR100280460B1 (ko) * | 1998-04-08 | 2001-02-01 | 김영환 | 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 |
US6317820B1 (en) * | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
-
2000
- 2000-03-30 US US09/538,670 patent/US7007153B1/en not_active Expired - Fee Related
-
2001
- 2001-03-01 CA CA002337172A patent/CA2337172C/en not_active Expired - Fee Related
- 2001-03-29 EP EP01302936A patent/EP1148414B1/en not_active Expired - Lifetime
- 2001-03-29 DE DE60115982T patent/DE60115982T2/de not_active Expired - Lifetime
- 2001-03-29 KR KR1020010016387A patent/KR20010095069A/ko active Search and Examination
- 2001-03-29 JP JP2001094456A patent/JP3832623B2/ja not_active Expired - Fee Related
- 2001-03-30 TW TW090107611A patent/TW514827B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1148414A2 (en) | 2001-10-24 |
EP1148414A3 (en) | 2003-05-14 |
EP1148414B1 (en) | 2005-12-21 |
TW514827B (en) | 2002-12-21 |
DE60115982D1 (de) | 2006-01-26 |
DE60115982T2 (de) | 2006-09-14 |
US7007153B1 (en) | 2006-02-28 |
JP2001306323A (ja) | 2001-11-02 |
CA2337172A1 (en) | 2001-09-30 |
CA2337172C (en) | 2006-12-19 |
KR20010095069A (ko) | 2001-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3832623B2 (ja) | マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 | |
JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
JP3777541B2 (ja) | マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置 | |
JP3780449B2 (ja) | マルチスレッドvliwプロセッサにおいて機能単位を解放するための方法および装置 | |
JP4818918B2 (ja) | マルチスレッド化されたマイクロプロセッサで並行命令ストリームを開始する命令 | |
JP3741551B2 (ja) | データ処理装置 | |
US5574942A (en) | Hybrid execution unit for complex microprocessor | |
US5519864A (en) | Method and apparatus for scheduling the dispatch of instructions from a reservation station | |
US20080046689A1 (en) | Method and apparatus for cooperative multithreading | |
GB2287109A (en) | Multiple execution unit bypasses for efficient processor execution | |
JP2002333978A (ja) | Vliw型プロセッサ | |
KR20030067892A (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
GB2287108A (en) | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path | |
Müller | Employing finite automata for resource scheduling | |
JP7495030B2 (ja) | プロセッサ、処理方法、および関連デバイス | |
US7237093B1 (en) | Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams | |
US7127589B2 (en) | Data processor | |
JP2004038751A (ja) | プロセッサ及び命令制御方法 | |
Cichon et al. | Compiler scheduling for STA-processors | |
JP2011113457A (ja) | 同時マルチスレッディングプロセッサ、制御方法、プログラム、コンパイル方法、及び情報処理装置 | |
Theobald et al. | A Superstrand Architecture | |
JPS63318635A (ja) | デ−タ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050207 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050214 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050513 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050518 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050803 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050824 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051124 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060418 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060605 |
|
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: 20060619 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20060712 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060712 |
|
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: 20100728 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100728 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110728 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120728 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120728 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130728 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |