JP2001306323A - マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 - Google Patents
マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置Info
- Publication number
- JP2001306323A JP2001306323A JP2001094456A JP2001094456A JP2001306323A JP 2001306323 A JP2001306323 A JP 2001306323A JP 2001094456 A JP2001094456 A JP 2001094456A JP 2001094456 A JP2001094456 A JP 2001094456A JP 2001306323 A JP2001306323 A JP 2001306323A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- thread
- processor
- vliw
- functional units
- 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 abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 11
- 238000012546 transfer Methods 0.000 claims description 7
- 238000004519 manufacturing process Methods 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003139 buffering 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
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)
Abstract
IW)プロセッサにおいて機能単位を割り当てるための
方法および装置を提案することを目的とする。 【解決手段】 本発明は従来のVLIWアーキテクチャ
の技法と従来のマルチスレッドアーキテクチャの技法を
組み合わせて、個別のプログラム内およびワークロード
全体で実行時間を削減する。本発明はコンパイラを使用
して並列処理を検出する。開示されたマルチスレッドV
LIWアーキテクチャは、単一スレッドVLIWプロセ
ッサと同様な方法で単一のプログラムシーケンサから多
数の命令を発行することによってプログラムの並列処理
を使用するとともに、同時マルチスレッド化と同じよう
に多数のプログラムシーケンサをサポートする。命令は
機能単位に割り当てられて、同じサイクルの中で多数の
VLIW命令を多数の機能単位に発行する。
Description
ドプロセッサに関し、特に、このようなマルチスレッド
プロセッサ内で機能単位を割り当てるための方法および
装置に関する。
さらに早くワークロードを完了しようと試みている。プ
ログラムの平行処理を使用するための、多くのアーキテ
クチャ設計が提案または提言されてきた。一般に、一度
に複数の動作を開始できるアーキテクチャは、一度に1
つの動作しか開始できないアーキテクチャよりも早くプ
ログラムを実行できる。コンピュータアーキテクチャに
おけるもっとも最近の発展は、一度に1つ以上の動作を
開始し、それによってプログラム動作の速度を上げる方
法に向けられてきた。図1は、従来のマイクロプロセッ
サのアーキテクチャ100を示す。具体的には、マイク
ロプロセッサ100はプログラムカウンタ(PC)11
0、レジスタセット120、および多くの機能単位(F
U)130−Nを含む。冗長機能単位(FU)130―
1〜130―Nは、例としてのマイクロプロセッサのア
ーキテクチャ100に十分なハードウェアリソースを提
供して、対応する数の動作を並列的に実行する。
テクチャは、一度に複数の機能単位にオペランドを発行
して、プログラム実行の速度を上げる。スーパースカラ
ープロセッサ、超長命令語(VLIW)プロセッサ、お
よびマルチスレッドプロセッサを含む、並列アーキテク
チャを伴う多くのアーキテクチャが提案または提言され
ており、各々はそれぞれ、図2、図4、および図5と共
に下記に説明される。一般に、スーパースカラープロセ
ッサは実行時にハードウェアを使用して、単一の命令ス
トリームからの多くの動作が独立しているか否かを動的
に決定し、独立している場合は、プロセッサは並列演算
論理機構(ALU)を使用して命令を実行する。ソース
オペランドがそれに先行する命令の宛先オペランドに依
存していない場合、2つの命令は独立していると言われ
る。超長命令語(VLIW)プロセッサは、依存性の情
報に基づいてコンパイル中に命令を評価し、動作を適切
にグループ分けし、並列実行する。他方マルチスレッド
プロセッサは、単一の命令ストリーム内で並列処理を使
用しようと試みるのではなく、複数の命令ストリームを
並列に実行する。
サのアーキテクチャ200は、各々に有効なデータが提
供された場合、独立して動作する多くの機能単位を有す
る。たとえば図2に示されたように、スーパースカラー
プロセッサ200は演算論理機構(ALU)230―N
として具現化された3つの機能単位を有し、その各々は
同時に結果を計算できる。スーパースカラープロセッサ
200は、命令フェッチブロック210、命令復号ブロ
ック215、および命令順序付けユニット220(発行
ブロック)を有するフロントエンド部208を含む。命
令フェッチブロック210は単一スレッドの命令ストリ
ームの入力待ち行列205から命令を得る。命令順序付
けユニット220は、知られた方法で使用可能な演算論
理機構(ALU)230―Nの中で同時に実行できる独
立した命令を識別する。詳細化ブロック250は命令が
完了することを可能にし、バッファ化および再順序付け
を提供して、結果をレジスタセット240に書き込んで
戻す。
10の中で、命令L2およびL3の中にあるソースオペ
ランドのいずれもそれに先行する任意の命令の宛先オペ
ランドに依存していないという点で、場所L1、L2、
およびL3にある命令は独立している。プログラムカウ
ンタ(PC)が場所L1に設定されている時、命令順序
付けユニット220は命令ストリームの先を見越して、
L2およびL3における命令が独立していることを検出
するので、したがってこれら3つすべてが3つの使用可
能な機能単位230―Nに同時に発行できる。スーパー
スカラープロセッサのさらに詳細な説明に関しては、た
とえば、参照により本明細書に援用された、IEEE
(1995年12月)の議事録の、James.E.S
mithおよびGurindar.S.Sohiによる
「The Microarchitecture of Superscalar Processor
s」を参照されたい。
令語(VLIW)プロセッサ400は、ハードウェアを
使用して実行時に動的に並列処理を検出するのではな
く、ソフトウェアに頼って単一の命令ストリームからコ
ンパイル時にデータの並列処理を検出する。VLIWコ
ンパイラは図3のコードフラグメント310を生成する
ために使用されたソースコードを与えられると、命令の
独立性を検出し、3つの動作すべてから成る単一の非常
に長い命令を構築する。実行時には、プロセッサ400
の発行論理はこの大きな命令を1つのサイクルで発行
し、データをすべての使用可能な機能単位430―Nに
向ける。図4に示したように、超長命令語(VLIW)
プロセッサ400は統合フェッチ/復号ブロック420
を含み、統合フェッチ/復号ブロック420は前もって
グループ分けされた命令410をメモリから得る。超長
命令語(VLIW)プロセッサのさらに詳細な説明に関
しては、たとえば、参照により本明細書に援用されてい
る、SPIE Real Time Signal Processing IV(198
1)の241〜248ページにある、Burton
J.Smithによる「Architecture and Application
s of the HEP Multiprocessor Computer System」を参
照されたい。
ば、IEEE Transactions on Co
mputers (1998年8月)のRobert
P.Colwellらによる「A VLIW Architecture for
a Trace Scheduling Compiler」で論じられているよう
なマルチフローアーキテクチャによって代表され、固定
長命令を使用して、そこにおいてあらかじめ定義された
フィールドがデータを一度にすべての機能ユニット43
0―Nに向ける。大きな命令の中で指定されたすべての
動作が完了すると、プロセッサは新しい、多数の動作の
命令を発行する。テキサス州ダラスのTexas In
strumentsから市販されているC6xプロセッ
サや、カリフォルニア州サンタクララのIntel C
orpから市販されているEPIC IA−64などの
いくつかのより最近のVLIWプロセッサは、その代わ
りに可変長命令パケットを使用し、可変長命令パケット
は互いにバンドルされている1つまたは複数の動作を含
む。
500は単一の命令ストリーム内で平行処理を使用しよ
うと試みるのではなく、複数の命令ストリームを並列に
実行することによってパフォーマンスの向上を得る。図
5に示されたマルチスレッドプロセッサ500は、プロ
グラムカウンタ510―N、レジスタセット520―
N、および機能単位530―Nを含み、各々は対応する
命令ストリームNに専用である。マルチスレッドプロセ
ッサ500の代替の実装は、いくつかのレジスタセット
520―Nおよびプログラムカウンタ510―Nを伴う
単一の機能単位530を使用してきた。このような代替
のマルチスレッドプロセッサ500は、プロセッサ50
0が、1つまたは2つのサイクル内で命令発行を1つの
プログラムカウンタ/レジスタセット510―N/52
0−Nから、別のプログラムカウンタ/レジスタセット
510−N/520−Nに切り換えることができるよう
に設計されている。したがって、LOAD命令などの待
ち時間が長い命令は、別の命令ストリームからのより短
い動作と重ねることができる。ワシントン州シアトルの
Tera Computer Companyから市販
されているTERAMTAアーキテクチャはこのタイプ
の1つの例である。
スレッドアーキテクチャ500の拡張は、図2と共に上
記に説明されたスーパースカラーアーキテクチャと、図
5と共に上記に説明されたマルチスレッド設計との両方
を組み合わせている。同時マルチスレッド化技法の詳細
な説明に関しては、たとえば、参照により本明細書に援
用されている、第22回 Annual Int’l
Symposiumon Computer Arch
itecture(1995年6月、イタリア、San
ta Margherita Ligure)の議事
録、392〜403ページにある、Dean Tull
senらによる「Simultaneous Multithreading: Maxim
izing On-Chip Parallelism」を参照されたい。一般
に、同時マルチスレッド化アーキテクチャでは機能単位
のプールがあり、そのうち任意の数が、多くのプログラ
ムカウンタ/レジスタセット構造のうち任意の1つから
発行できる命令に動的に割り当てられる。機能単位を多
くのプログラムスレッドの間で共有することにより、同
時マルチスレッド化アーキテクチャは図5に示されてい
るより効率的にハードウェアを使用することができる。
アーキテクチャの組み合わされた手法がスーパースカラ
ーアーキテクチャまたはマルチスレッドアーキテクチャ
の個別の手法よりも改善された効率を提供する一方、同
時マルチスレッド化アーキテクチャは依然として、動的
に命令ストリームを検討して潜在的な並列処理を検出す
るために、精巧な発行論理を必要とする。したがって、
2つの命令ストリームが独立しているか否かを動的に決
定する必要のない、マルチスレッドプロセッサのアーキ
テクチャに対するニーズが存在する。さらに、同時マル
チスレッド化を提供するマルチスレッドのアーキテクチ
ャに対するニーズが存在する。またさらに、リアルタイ
ムでのこのようなマルチスレッドプロセッサ内で機能単
位を割り当てるマルチスレッドのアーキテクチャに対す
るニーズが存在する。
超長命令語(VLIW)プロセッサにおいて、機能単位
を割り当てるための方法および装置が開示される。本発
明は従来の超長命令語(VLIW)アーキテクチャおよ
び従来のマルチスレッドアーキテクチャの技法を組み合
わせている。本発明の組み合わされたアーキテクチャ
は、個別のプログラム内、およびワークロード全体で実
行時間を軽減する。
レッドプロセッサのアーキテクチャ内で並列処理を検出
する。したがって動的な決定が必要ないため、単一スレ
ッドVLIWプロセッサと同じ方法で単一のプログラム
シーケンサから多数の命令を発行することによって、ま
た、同時マルチスレッド化と同じように多数のプログラ
ムシーケンサをサポートするが発行論理内で複雑さが軽
減されてサポートすることによって、プログラムの並列
処理を使用するマルチスレッドVLIWアーキテクチャ
が開示される。
のVLIW命令を同じサイクル内の多数の機能単位に発
行する。本発明の割り当て機構は、引数が機能単位にデ
ィスパッチされる直前に、パイプライン段を占有する。
一般に、割り当て段は、適切な命令を選択し、スレッド
の優先順位またはリソース可用性、あるいはその両方に
もとづいて、その命令を機能単位に割り当てることによ
って、命令をどのようにグループ分けして効率を最大に
するかを決定する。
され復号化された(最高で)N*K個の命令から、適切
なM個の命令を選択して実行する。命令の選択に関する
判定基準は、スレッドの優先順位またはリソースの可用
性またはその両方である。スレッドの優先順位判定基準
の下では、種々のスレッドは異なる優先順位を有するこ
とができる。割り当て段は、実装されている優先順位の
方針にしたがって、もっとも高い優先順位を伴うスレッ
ドに属するパケット(またはパケットからの命令)を選
択し、かつ転送して実行する。リソースの可用性判定基
準の下では、(最高でK個の命令を有する)パケット
は、そのパケットによって必要とされるリソース(機能
単位など)が次のサイクルについて使用可能である場合
にのみ、割り当てられる。機能単位はその可用性を割り
当て段に報告する。
さらなる特徴および利点は、次の詳細な説明および図面
を参照することによって得られる。
は、代理人整理番号(Berenbaum 8−3−4
−4)の、「Method and Apparatus for Releasing Fun
ctional Units in a Multithreaded Very Large Instru
ction 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」という名称の米
国特許出願に関連し、各々は本明細書と同時に提出さ
れ、本発明の譲渡人に譲渡され、参照により本発明に援
用されている。
IWプロセッサ600を示す図である。図6に示したよ
うに、3つの命令スレッド、すなわちスレッドA(T
A)、スレッド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に移動できる。
動作の間には1対1の対応があることに留意されたい。
したがって、この用語は本明細書内では相互に交換可能
であるように使用される。さらに、命令が多数の動作を
指定する状況では、マルチスレッドVLIWプロセッサ
600は1つまたは複数の多数動作の機能単位620を
含んで、多数動作を指定する命令を実行すると仮定され
ていることに留意されたい。多数動作を指定する命令が
処理できるアーキテクチャの例は、複雑命令セットコン
ピュータ(CISC)である。
サイクルの中で多数のVLIW命令を多数の機能単位に
発行する。本発明の割り当て機構は、引数が機能単位に
ディスパッチされる直前にパイプライン段を占める。図
7Aは従来のパイプライン700を示し、パイプライン
700はパケットがメモリから得られるフェッチ段71
0、フェッチされた命令に関して必要な機能単位および
レジスタが識別される復号段720、および、指定され
た動作が実行され、かつその結果が処理される実行段7
30を含む。
ャでは、最高でK個までの命令を含むパケットが各サイ
クルでフェッチされる(フェッチ段710)。復号段7
20では最高でK個までの命令が復号化され、(最高
で)K個の機能単位(FU)に送信される。実行段73
0では、命令に対応するレジスタが読み出され、機能単
位はそれについて動作してその結果がレジスタに書き込
まれて戻される。1機能単位あたり最高で3つまでのレ
ジスタが読み出され、最高で1つのレジスタが書き込ま
れると仮定されている。
を示し、ここでは図8と共にさらに以下に説明される割
り当て段780が追加されて、マルチスレッドVLIW
プロセッサを実装する。一般に、割り当て段780は動
作をグループ化して効率を最大限にする方法を決定す
る。パイプライン750は、最高でN個までのパケット
がメモリから得られるフェッチ段760、フェッチされ
た命令(最高でN*K個の命令)に関して機能単位およ
びレジスタが識別される復号段770、適切な命令が選
択されFUに割り当てられる割り当て段780、およ
び、指定された動作が実行され、かつその結果が処理さ
れる実行段790を含む。
サ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個までのレジスタに書
き込む。
0でフェッチされ、かつ復号化された(最高で)N*K
個の命令から適切なM個の命令を選択して実行する。選
択の判定基準はスレッドの優先順位またはリソースの可
用性またはその両方である。スレッドの優先順位判定基
準の下では、種々のスレッドは異なる優先順を有するこ
とができる。割り当て段780は、実装されている優先
順位の方針にしたがってもっとも高い優先順位を伴うス
レッドに属するパケット(またはパケットからの命令)
を選択し転送して実行する。多数の優先順位方針を実装
できる。たとえば、N個のコンテキスト(N個のハード
ウェアスレッド)をサポートするマルチスレッドVLI
Wプロセッサに関する優先順位方針は、N個の優先順位
レベルを有することが可能である。プロセッサ内のもっ
とも優先順位の高いスレッドは、他のどのスレッドより
も前に割り当てられる。等しい優先順位を伴うスレッド
の間では、もっとも長いこと割り当てを待っていたスレ
ッドが優先される。
高でK個までの命令を有する)パケットは、そのパケッ
トによって必要とされるリソース(機能単位)が次のサ
イクルについて使用可能である場合にのみ、割り当てら
れる。機能単位はその可用性を割り当て段780に報告
する。
成図である。図8に示されたように、割り当て段780
を実装するために必要とされるハードウェアは、優先順
位符号器810および2つのクロスバスイッチ820、
830を含む。一般に、優先順位符号器810は各スレ
ッドの中で多数の動作の状態、および使用可能な機能単
位の状態を検討する。優先順位符号器810は、第1の
クロスバスイッチ820を実行して設定しようとするパ
ケットを選択するので、適切なレジスタの内容が次のサ
イクルの最初で機能単位に転送される。優先順位符号器
810の出力は第1のクロスバスイッチ820を構成し
て、選択されたスレッドからのデータを適切な機能単位
にルーティングする。これはたとえば、(スレッド識別
子を含む)レジスタ識別子を機能単位に送信し、機能単
位に別のデータネットワークを介してレジスタの内容を
読み取らせ、クロスバスイッチ810を使用して適切な
レジスタの内容を、次のサイクルの初めに機能単位によ
って読み出されるラッチに移動することによって達成で
きる。
(図7B)によってフェッチされたN個のパケットか
ら、優先順位およびリソースの可用性に従って最高でN
個までのパケットを選択して実行する。言い換えれば、
優先順位符号器は、もっとも優先順位が高く、しかも実
行のために使用不可能なリソースを必要としないスレッ
ドを選択する。ついで、優先順位符号器は第1のクロス
バスイッチ810を設定する。入力クロスバスイッチ8
10は最高で3K*N個の入力を最高で3*M個の出力
にルーティングする。第1のクロスバスイッチ810は
各パケットのレジスタ識別子(または適切なレジスタの
内容)を適切な機能単位に転送する機能を有する。
高でN個までであり、各スレッドは最高でK個までの命
令のパケットを発行でき、各命令は最高で3個までのレ
ジスタを読み出せるので、選択元のレジスタ識別子は3
K*N個である。機能単位はM個しかなく、各機能単位
は単一の命令を受け取ることができるので、選択される
べきレジスタ識別子は3M個のみである。したがって、
クロスバスイッチはレジスタ識別子(またはレジスタの
内容)の、3K*Nから3Mへのルーティングを実装す
る。
力をN*M個またはN*K個の出力にルーティングす
る。第2のクロスバスイッチ830は適切な時間に設定
され、機能単位の結果を適切なレジスタに転送して戻
す。第2のクロスバスイッチ830は、(スレッド識別
子を含む)レジスタ識別子を機能単位に送信することに
よって、別のネットワークとして実装できる。機能単位
が結果を計算する時、機能単位はその結果を所与のレジ
スタ識別子にルーティングする。最高でN個までのスレ
ッドにルーティングされるべき結果はM個ある。各スレ
ッドは最高でK個までの結果を受け取ることができる。
第2のクロスバスイッチ830は、M個の結果をN*K
個の可能な宛先にルーティングする。第2のクロスバス
イッチ830は、N個のレジスタファイルすべてに接続
されたM個のバスとして実装できる。この場合、ルーテ
ィングはM個になり、N*M個の可能な宛先へルーティ
ングすることになる(レジスタファイルがM個の結果を
受け取る機能を有している場合)。
よびその変形例は、本発明の原理の例にすぎず、当業者
によって本発明の範囲および精神から逸脱することなく
種々の変更例が実装できることを理解されたい。
キテクチャを示す図である。
クチャの概略構成図である。
示す図である。
ーキテクチャの概略構成図である。
である。
サの図である。
イプラインを示す図である。
するパイプラインを示す図である。
る。
Claims (16)
- 【請求項1】 マルチスレッド超長命令語(VLIW)
プロセッサであって、 複数のスレッドを有する命令ストリームから複数の命令
を実行し、該スレッドは優先順位を有する複数の機能単
位と、 前記命令ストリームから命令を選択し、該命令を前記複
数の機能単位に転送し、該命令を前記スレッドの優先順
位に基づいて選択するアロケータとを備えるマルチスレ
ッド超長命令語(VLIW)プロセッサ。 - 【請求項2】 前記スレッド優先順位は種々のスレッド
が異なる優先順位を有することを可能にする請求項1に
記載のマルチスレッド超長命令語(VLIW)プロセッ
サ。 - 【請求項3】 前記アロケータは、もっとも高い優先順
位を伴うスレッドに属する前記命令を選択し、かつ転送
して実行する請求項1に記載のマルチスレッド超長命令
語(VLIW)プロセッサ。 - 【請求項4】 前記アロケータは、前記スレッドの優先
順位およびリソースの可用性に基づいて前記命令を選択
し、かつ転送する請求項1に記載のマルチスレッド超長
命令語(VLIW)プロセッサ。 - 【請求項5】 マルチスレッド超長命令語(VLIW)
プロセッサであって、 マルチスレッド命令ストリームから複数の命令を実行す
るための複数の機能単位と、 前記命令ストリームから命令を選択し、該命令を前記複
数の機能単位に転送し、該命令をリソースの可用性に基
づいて選択するアロケータとを備えるマルチスレッド超
長命令語(VLIW)プロセッサ。 - 【請求項6】 前記リソースの可用性は、命令によって
必要とされるリソースが次のサイクルについて使用可能
である場合のみ該命令を割り当てることを可能にする請
求項5に記載のマルチスレッド超長命令語(VLIW)
プロセッサ。 - 【請求項7】 前記リソースは前記機能単位を含む請求
項5に記載のマルチスレッド超長命令語(VLIW)プ
ロセッサ。 - 【請求項8】 前記アロケータは前記リソースの可用性
および前記スレッドに割り当てられた優先順位に基づい
て前記命令を選択し、かつ転送する請求項5に記載のマ
ルチスレッド超長命令語(VLIW)プロセッサ。 - 【請求項9】 マルチスレッド超長命令語(VLIW)
プロセッサにおいて複数のスレッドを有する命令ストリ
ームから命令を処理するための方法であって、 複数の機能単位を使用して前記命令を実行するステップ
であって、前記スレッドは優先順位を有するステップ
と、 前記スレッドの優先順位に基づいて前記命令ストリーム
から命令を選択するステップと、 前記選択された命令を前記複数の機能単位に転送するス
テップとを含む方法。 - 【請求項10】 前記スレッドの優先順位は、種々のス
レッドが異なる優先順位を有することを可能にする請求
項9に記載の方法。 - 【請求項11】 前記選択のステップはもっとも高い優
先順位を伴うスレッドに属する前記命令を選択して実行
する請求項9に記載の方法。 - 【請求項12】 マルチスレッド超長命令語(VLI
W)プロセッサにおいて複数のスレッドを有する命令ス
トリームから命令を処理するための方法であって、 複数の機能単位を使用して前記命令を実行するステップ
と、 リソースの可用性に基づいて前記命令ストリームから命
令を選択するステップと、 前記選択された命令を前記複数の機能単位に転送するス
テップとを含む方法。 - 【請求項13】 前記リソースの可用性は、前記命令に
よって必要とされるリソースが次のサイクルについて使
用可能な場合のみ、前記命令を割り当てることを可能に
する請求項12に記載の方法。 - 【請求項14】 前記リソースは前記機能単位を含む請
求項12に記載の方法。 - 【請求項15】 マルチスレッド超長命令語(VLI
W)プロセッサにおいて複数のスレッドを有する命令ス
トリームから命令を処理するための製造物であって、 その上に具現化されたコンピュータ読み取り可能プログ
ラムコード手段を有するコンピュータ読み取り可能媒体
を含み、該コンピュータ読み取り可能プログラムコード
手段は、コンピュータに、 複数の機能単位を使用して前記命令を実行させ、前記ス
レッドは優先順位を有し、 前記スレッドの優先順位に基づいて前記命令ストリーム
から命令を選択させ、 前記選択された命令を前記複数の機能単位へ転送させる
プログラムコード手段を備える製造物。 - 【請求項16】 マルチスレッド超長命令語(VLI
W)プロセッサにおいて複数のスレッドを有する命令ス
トリームから命令を処理するための製造物であって、 その上に具現化されたコンピュータ読み取り可能プログ
ラムコード手段を有するコンピュータ読み取り可能媒体
を含み、該コンピュータ読み取り可能プログラムコード
手段は、コンピュータに、 複数の機能単位を使用して前記命令を実行させ、 リソースの可用性に基づいて前記命令ストリームから命
令を選択させ、 前記選択された命令を前記複数の機能単位に転送させる
プログラムコード手段を備える製造物。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/538670 | 2000-03-30 | ||
US09/538,670 US7007153B1 (en) | 2000-03-30 | 2000-03-30 | Method and apparatus for allocating functional units in a multithreaded VLIW processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001306323A true JP2001306323A (ja) | 2001-11-02 |
JP3832623B2 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) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
KR101239082B1 (ko) | 2004-03-31 | 2013-03-06 | 후지쯔 세미컨덕터 가부시키가이샤 | 멀티코어 아키텍처 내의 리소스 관리 |
US8533716B2 (en) | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
JP2017513094A (ja) * | 2014-03-27 | 2017-05-25 | インテル・コーポレーション | 複数のストランドからの命令をディスパッチするためのプロセッサロジックおよび方法 |
Families Citing this family (24)
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 |
AU2002241767A1 (en) * | 2000-10-23 | 2002-06-18 | 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 |
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 |
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 |
US7681014B2 (en) | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
US7657891B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency |
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 |
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 |
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 |
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 |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7506140B2 (en) * | 2005-02-04 | 2009-03-17 | Mips Technologies, Inc. | Return data selector employing barrel-incrementer-based round-robin apparatus |
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 |
US7773621B2 (en) * | 2006-09-16 | 2010-08-10 | Mips Technologies, Inc. | Transaction selector employing round-robin apparatus 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 |
US7961745B2 (en) * | 2006-09-16 | 2011-06-14 | Mips Technologies, Inc. | Bifurcated transaction selector 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 | 삼성전자주식회사 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
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 | 株式会社ルネサステクノロジ | 並列処理プロセッサ |
CN100373331C (zh) | 1996-08-27 | 2008-03-05 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
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 KR KR1020010016387A patent/KR20010095069A/ko active Search and Examination
- 2001-03-29 JP JP2001094456A patent/JP3832623B2/ja 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-30 TW TW090107611A patent/TW514827B/zh not_active IP Right Cessation
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US7827388B2 (en) | 2003-04-25 | 2010-11-02 | International Business Machines Corporation | Apparatus for adjusting instruction thread priority in a multi-thread processor |
US8145885B2 (en) | 2003-04-25 | 2012-03-27 | International Business Machines Corporation | Apparatus for randomizing instruction thread interleaving in a multi-thread processor |
KR101239082B1 (ko) | 2004-03-31 | 2013-03-06 | 후지쯔 세미컨덕터 가부시키가이샤 | 멀티코어 아키텍처 내의 리소스 관리 |
US8533716B2 (en) | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US9779042B2 (en) | 2004-03-31 | 2017-10-03 | Synopsys, Inc. | Resource management in a multicore architecture |
US10268609B2 (en) | 2004-03-31 | 2019-04-23 | Synopsys, Inc. | Resource management in a multicore architecture |
JP2017513094A (ja) * | 2014-03-27 | 2017-05-25 | インテル・コーポレーション | 複数のストランドからの命令をディスパッチするためのプロセッサロジックおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20010095069A (ko) | 2001-11-03 |
TW514827B (en) | 2002-12-21 |
EP1148414A3 (en) | 2003-05-14 |
JP3832623B2 (ja) | 2006-10-11 |
US7007153B1 (en) | 2006-02-28 |
DE60115982T2 (de) | 2006-09-14 |
CA2337172A1 (en) | 2001-09-30 |
CA2337172C (en) | 2006-12-19 |
DE60115982D1 (de) | 2006-01-26 |
EP1148414A2 (en) | 2001-10-24 |
EP1148414B1 (en) | 2005-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3832623B2 (ja) | マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 | |
JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
JP3777541B2 (ja) | マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置 | |
JP3780449B2 (ja) | マルチスレッドvliwプロセッサにおいて機能単位を解放するための方法および装置 | |
US5519864A (en) | Method and apparatus for scheduling the dispatch of instructions from a reservation station | |
US5627985A (en) | Speculative and committed resource files in an out-of-order processor | |
US5699537A (en) | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions | |
US5574942A (en) | Hybrid execution unit for complex microprocessor | |
CN108027770B (zh) | 用于数据流isa的密集读取编码 | |
US5974523A (en) | Mechanism for efficiently overlapping multiple operand types in a microprocessor | |
US5564056A (en) | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming | |
JP3575617B2 (ja) | コンピュータシステム | |
US5452426A (en) | Coordinating speculative and committed state register source data and immediate source data in a processor | |
Kavi et al. | Scheduled dataflow: Execution paradigm, architecture, and performance evaluation | |
US20080046689A1 (en) | Method and apparatus for cooperative multithreading | |
US5860154A (en) | Method and apparatus for calculating effective memory addresses | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
US7127589B2 (en) | Data processor | |
Brehob et al. | Beyond RISC–The Post-RISC Architecture | |
JP2011113457A (ja) | 同時マルチスレッディングプロセッサ、制御方法、プログラム、コンパイル方法、及び情報処理装置 | |
Theobald et al. | A Superstrand Architecture |
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 |