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
Application number
JP2001094456A
Other languages
English (en)
Other versions
JP3832623B2 (ja
Inventor
Alan David Berenbaum
ディヴィッド ベレンバウム アラン
Nevin Heintze
ヘインツ ネヴィン
Tor E Jeremiassen
イー.ジェレミアッセン トア
Stefanos Kaxiras
カックシラス ステファノス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agere Systems LLC
Original Assignee
Agere Systems Guardian Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Agere Systems Guardian Corp filed Critical Agere Systems Guardian Corp
Publication of JP2001306323A publication Critical patent/JP2001306323A/ja
Application granted granted Critical
Publication of JP3832623B2 publication Critical patent/JP3832623B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction 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

(57)【要約】 【課題】 本発明は、マルチスレッド超長命令語(VL
IW)プロセッサにおいて機能単位を割り当てるための
方法および装置を提案することを目的とする。 【解決手段】 本発明は従来のVLIWアーキテクチャ
の技法と従来のマルチスレッドアーキテクチャの技法を
組み合わせて、個別のプログラム内およびワークロード
全体で実行時間を削減する。本発明はコンパイラを使用
して並列処理を検出する。開示されたマルチスレッドV
LIWアーキテクチャは、単一スレッドVLIWプロセ
ッサと同様な方法で単一のプログラムシーケンサから多
数の命令を発行することによってプログラムの並列処理
を使用するとともに、同時マルチスレッド化と同じよう
に多数のプログラムシーケンサをサポートする。命令は
機能単位に割り当てられて、同じサイクルの中で多数の
VLIW命令を多数の機能単位に発行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般にマルチスレッ
ドプロセッサに関し、特に、このようなマルチスレッド
プロセッサ内で機能単位を割り当てるための方法および
装置に関する。
【0002】
【従来の技術】コンピュータアーキテクチャの設計は、
さらに早くワークロードを完了しようと試みている。プ
ログラムの平行処理を使用するための、多くのアーキテ
クチャ設計が提案または提言されてきた。一般に、一度
に複数の動作を開始できるアーキテクチャは、一度に1
つの動作しか開始できないアーキテクチャよりも早くプ
ログラムを実行できる。コンピュータアーキテクチャに
おけるもっとも最近の発展は、一度に1つ以上の動作を
開始し、それによってプログラム動作の速度を上げる方
法に向けられてきた。図1は、従来のマイクロプロセッ
サのアーキテクチャ100を示す。具体的には、マイク
ロプロセッサ100はプログラムカウンタ(PC)11
0、レジスタセット120、および多くの機能単位(F
U)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に示されたプログラムフラグメント3
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」を参照されたい。
【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(198
1)の241〜248ページにある、Burton
J.Smithによる「Architecture and Application
s of the HEP Multiprocessor Computer System」を参
照されたい。
【0007】VLIWプロセッサの一変形例は、たとえ
ば、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つまたは複数の動作を含
む。
【0008】図5に示されたマルチスレッドプロセッサ
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つの例である。
【0009】同時マルチスレッド化と呼ばれる、マルチ
スレッドアーキテクチャ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に示されてい
るより効率的にハードウェアを使用することができる。
【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 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」という名称の米
国特許出願に関連し、各々は本明細書と同時に提出さ
れ、本発明の譲渡人に譲渡され、参照により本発明に援
用されている。
【0017】図6は、本発明によるマルチスレッドVL
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に移動できる。
【0018】一般的に、命令とそれによって指定される
動作の間には1対1の対応があることに留意されたい。
したがって、この用語は本明細書内では相互に交換可能
であるように使用される。さらに、命令が多数の動作を
指定する状況では、マルチスレッドVLIWプロセッサ
600は1つまたは複数の多数動作の機能単位620を
含んで、多数動作を指定する命令を実行すると仮定され
ていることに留意されたい。多数動作を指定する命令が
処理できるアーキテクチャの例は、複雑命令セットコン
ピュータ(CISC)である。
【0019】本発明は命令を機能単位に割り当て、同じ
サイクルの中で多数のVLIW命令を多数の機能単位に
発行する。本発明の割り当て機構は、引数が機能単位に
ディスパッチされる直前にパイプライン段を占める。図
7Aは従来のパイプライン700を示し、パイプライン
700はパケットがメモリから得られるフェッチ段71
0、フェッチされた命令に関して必要な機能単位および
レジスタが識別される復号段720、および、指定され
た動作が実行され、かつその結果が処理される実行段7
30を含む。
【0020】このように、従来のVLIWアーキテクチ
ャでは、最高でK個までの命令を含むパケットが各サイ
クルでフェッチされる(フェッチ段710)。復号段7
20では最高でK個までの命令が復号化され、(最高
で)K個の機能単位(FU)に送信される。実行段73
0では、命令に対応するレジスタが読み出され、機能単
位はそれについて動作してその結果がレジスタに書き込
まれて戻される。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および77
0でフェッチされ、かつ復号化された(最高で)N*K
個の命令から適切なM個の命令を選択して実行する。選
択の判定基準はスレッドの優先順位またはリソースの可
用性またはその両方である。スレッドの優先順位判定基
準の下では、種々のスレッドは異なる優先順を有するこ
とができる。割り当て段780は、実装されている優先
順位の方針にしたがってもっとも高い優先順位を伴うス
レッドに属するパケット(またはパケットからの命令)
を選択し転送して実行する。多数の優先順位方針を実装
できる。たとえば、N個のコンテキスト(N個のハード
ウェアスレッド)をサポートするマルチスレッドVLI
Wプロセッサに関する優先順位方針は、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を設定する。入力クロスバスイッチ8
10は最高で3K*N個の入力を最高で3*M個の出力
にルーティングする。第1のクロスバスイッチ810は
各パケットのレジスタ識別子(または適切なレジスタの
内容)を適切な機能単位に転送する機能を有する。
【0027】同じサイクル内で選択できるスレッドは最
高でN個までであり、各スレッドは最高でK個までの命
令のパケットを発行でき、各命令は最高で3個までのレ
ジスタを読み出せるので、選択元のレジスタ識別子は3
K*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 クロスバスイッチ
フロントページの続き (72)発明者 アラン ディヴィッド ベレンバウム アメリカ合衆国 10011 ニューヨーク, ニューヨーク,ウエスト ツエルヴス ス トリート 37,アパートメント 9ジェー (72)発明者 ネヴィン ヘインツ アメリカ合衆国 07960 ニュージャーシ ィ,モリスタウン,マウント ケンブル アヴェニュー 301 (72)発明者 トア イー.ジェレミアッセン アメリカ合衆国 08873 ニュージャーシ ィ,サマーセット,オスウエストリー ウ エイ 81 (72)発明者 ステファノス カックシラス アメリカ合衆国 ニュージャーシィ,ジャ ーシィ シティ,ワシントン ブウルヴァ ード 444,アパートメント 2119

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 マルチスレッド超長命令語(VLIW)
    プロセッサであって、 複数のスレッドを有する命令ストリームから複数の命令
    を実行し、該スレッドは優先順位を有する複数の機能単
    位と、 前記命令ストリームから命令を選択し、該命令を前記複
    数の機能単位に転送し、該命令を前記スレッドの優先順
    位に基づいて選択するアロケータとを備えるマルチスレ
    ッド超長命令語(VLIW)プロセッサ。
  2. 【請求項2】 前記スレッド優先順位は種々のスレッド
    が異なる優先順位を有することを可能にする請求項1に
    記載のマルチスレッド超長命令語(VLIW)プロセッ
    サ。
  3. 【請求項3】 前記アロケータは、もっとも高い優先順
    位を伴うスレッドに属する前記命令を選択し、かつ転送
    して実行する請求項1に記載のマルチスレッド超長命令
    語(VLIW)プロセッサ。
  4. 【請求項4】 前記アロケータは、前記スレッドの優先
    順位およびリソースの可用性に基づいて前記命令を選択
    し、かつ転送する請求項1に記載のマルチスレッド超長
    命令語(VLIW)プロセッサ。
  5. 【請求項5】 マルチスレッド超長命令語(VLIW)
    プロセッサであって、 マルチスレッド命令ストリームから複数の命令を実行す
    るための複数の機能単位と、 前記命令ストリームから命令を選択し、該命令を前記複
    数の機能単位に転送し、該命令をリソースの可用性に基
    づいて選択するアロケータとを備えるマルチスレッド超
    長命令語(VLIW)プロセッサ。
  6. 【請求項6】 前記リソースの可用性は、命令によって
    必要とされるリソースが次のサイクルについて使用可能
    である場合のみ該命令を割り当てることを可能にする請
    求項5に記載のマルチスレッド超長命令語(VLIW)
    プロセッサ。
  7. 【請求項7】 前記リソースは前記機能単位を含む請求
    項5に記載のマルチスレッド超長命令語(VLIW)プ
    ロセッサ。
  8. 【請求項8】 前記アロケータは前記リソースの可用性
    および前記スレッドに割り当てられた優先順位に基づい
    て前記命令を選択し、かつ転送する請求項5に記載のマ
    ルチスレッド超長命令語(VLIW)プロセッサ。
  9. 【請求項9】 マルチスレッド超長命令語(VLIW)
    プロセッサにおいて複数のスレッドを有する命令ストリ
    ームから命令を処理するための方法であって、 複数の機能単位を使用して前記命令を実行するステップ
    であって、前記スレッドは優先順位を有するステップ
    と、 前記スレッドの優先順位に基づいて前記命令ストリーム
    から命令を選択するステップと、 前記選択された命令を前記複数の機能単位に転送するス
    テップとを含む方法。
  10. 【請求項10】 前記スレッドの優先順位は、種々のス
    レッドが異なる優先順位を有することを可能にする請求
    項9に記載の方法。
  11. 【請求項11】 前記選択のステップはもっとも高い優
    先順位を伴うスレッドに属する前記命令を選択して実行
    する請求項9に記載の方法。
  12. 【請求項12】 マルチスレッド超長命令語(VLI
    W)プロセッサにおいて複数のスレッドを有する命令ス
    トリームから命令を処理するための方法であって、 複数の機能単位を使用して前記命令を実行するステップ
    と、 リソースの可用性に基づいて前記命令ストリームから命
    令を選択するステップと、 前記選択された命令を前記複数の機能単位に転送するス
    テップとを含む方法。
  13. 【請求項13】 前記リソースの可用性は、前記命令に
    よって必要とされるリソースが次のサイクルについて使
    用可能な場合のみ、前記命令を割り当てることを可能に
    する請求項12に記載の方法。
  14. 【請求項14】 前記リソースは前記機能単位を含む請
    求項12に記載の方法。
  15. 【請求項15】 マルチスレッド超長命令語(VLI
    W)プロセッサにおいて複数のスレッドを有する命令ス
    トリームから命令を処理するための製造物であって、 その上に具現化されたコンピュータ読み取り可能プログ
    ラムコード手段を有するコンピュータ読み取り可能媒体
    を含み、該コンピュータ読み取り可能プログラムコード
    手段は、コンピュータに、 複数の機能単位を使用して前記命令を実行させ、前記ス
    レッドは優先順位を有し、 前記スレッドの優先順位に基づいて前記命令ストリーム
    から命令を選択させ、 前記選択された命令を前記複数の機能単位へ転送させる
    プログラムコード手段を備える製造物。
  16. 【請求項16】 マルチスレッド超長命令語(VLI
    W)プロセッサにおいて複数のスレッドを有する命令ス
    トリームから命令を処理するための製造物であって、 その上に具現化されたコンピュータ読み取り可能プログ
    ラムコード手段を有するコンピュータ読み取り可能媒体
    を含み、該コンピュータ読み取り可能プログラムコード
    手段は、コンピュータに、 複数の機能単位を使用して前記命令を実行させ、 リソースの可用性に基づいて前記命令ストリームから命
    令を選択させ、 前記選択された命令を前記複数の機能単位に転送させる
    プログラムコード手段を備える製造物。
JP2001094456A 2000-03-30 2001-03-29 マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 Expired - Fee Related JP3832623B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (10)

* Cited by examiner, † Cited by third party
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