JPH07191847A - 静的インタリーブを用いたマルチスレッドマイクロコンピュータ - Google Patents

静的インタリーブを用いたマルチスレッドマイクロコンピュータ

Info

Publication number
JPH07191847A
JPH07191847A JP5001268A JP126893A JPH07191847A JP H07191847 A JPH07191847 A JP H07191847A JP 5001268 A JP5001268 A JP 5001268A JP 126893 A JP126893 A JP 126893A JP H07191847 A JPH07191847 A JP H07191847A
Authority
JP
Japan
Prior art keywords
instruction
instructions
thread
horizontal
machine
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
JP5001268A
Other languages
English (en)
Other versions
JP2928695B2 (ja
Inventor
Jin-Chin Chung
チン チャン ジン
Chuan-Lin Wu
リン ウー チュアン
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.)
Industrial Technology Research Institute ITRI
Original Assignee
Industrial Technology Research Institute ITRI
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 Industrial Technology Research Institute ITRI filed Critical Industrial Technology Research Institute ITRI
Publication of JPH07191847A publication Critical patent/JPH07191847A/ja
Application granted granted Critical
Publication of JP2928695B2 publication Critical patent/JP2928695B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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)

Abstract

(57)【要約】 (修正有) 【目的】静的インタリ−ブの技法によって、資源の争奪
問題を回避し、かつ、高命令発行レ−トを達成する。 【構成】プロセッサの各機能ユニットは、タイムスロッ
トのあらかじめ定めた固定繰り返しパタ−ン中のあらか
じめ定めた固定タイムスロット中の特定のスレッドより
のマシン命令の実行に割り当てられる。タイムスロット
のあらかじめ定めた固定繰り返しパタ−ンは、計算資源
の争奪問題を解決するためにハ−ドウェアに課せられた
資源の拘束を表している。この資源割り当て戦略は、ハ
−ドウェア資源のあらかじめ定めた固定割り当てを考慮
し、命令間のデータ依存性を維持するように、マシン命
令のシ−ケンスを水平型命令語に編成する並列コンパイ
ラにより提示される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、機能ユニットレベル
で、並列処理技術を利用したプロセッサシステムに関す
るものである。また、本発明は、特に、多重化された命
令スレッドを同時に実行することのできるマイクロプロ
セッサの、VLIW(Very Long Instruction Ward)に
基づいたア−キテクチャ−に関するものである。すなわ
ち、本発明においては、静的インタリ−ブの技術を、多
重化された命令スレッドへの、ハ−ドウェア資源の割り
当てに用いる。具体的には、プロセッサの各機能ユニッ
トを、タイムスロットのあらかじめ定めた固定繰り返し
パタ−ン中のあらかじめ定めた固定タイムスロット無い
の特定のスレッドの命令に割り当てる。このハ−ドウェ
ア割り当ては、ポスト−パス並列コンパイラによって提
示される。ポスト−パス並列コンパイラは、命令間のデ
ータ依存性と、ハ−ドウェア資源の割り当てを考慮し
て、命令実行シ−ケンスの各スレッドを最適化する。
【0002】
【従来の技術】マイクロプロセッサの性能は、現在、多
くのRISCス−パ−スカラプロセッサがそう設計され
ているように、1サイクルで2以上の命令を同時に実行
することにより、また、命令実行時間の短縮化により目
覚ましく向上した。また、今日、市販されているマイク
ロプロセッサは、既に、ス−パ−コンピュ−タシステム
によって得ることのできる性能レベルの主要な一部を達
成することができる。さらに、近い将来に、シングルチ
ップ技術に期待されるクロック速度やゲ−ト数の目覚ま
しい増加は、マイクロプロセッサ技術を、さらなるス−
パコンピュ−ティングの能力を有するコスト性能的にユ
ニ−クなツ−ルとするものと予想される。
【0003】しかしながら、現在、たとえばi860や
MC88100に、ス−パ−スカラマイクロプロセッサ
で採用されている単一スレッドパイプライン命令送出ア
−キテクチャ−では、目覚ましい計算能力の向上は期待
できない。単一命令スレッドの並列処理数は、データと
制御の命令間の依存度によって制限される。この依存度
は、命令の発行レ−トを遅くし、プロセッサ内の機能ユ
ニットの利用度を劣化させる。すなあち、一つの機能ユ
ニットがビ−ジ−状態である間、他のユニットは、この
ビ−ジ−状態のユニットよりの結果待ちのために、アイ
ドル状態となる場合がある。
【0004】機能ユニットの利用度を改善する1つの方
法は、複数のことなる命令スレッドをインタリ−ブする
ことである。これにより、複数の命令スレッドを同時に
実行することができる。
【0005】命令スレッドは、特定のコンテキストに属
する命令の集合として定義することができる。具体的に
は、一つの命令スレッドは、他の命令スレッドから独立
している。スレッドは、充分な並列処理生を示す単一の
プログラムや、異なるプログラムによって生成される。
単一のスレッド内の命令間におけるデータと制御の依存
度は、全ての絹ユニットへの命令の同時発行を妨げる。
しかし、異なるスレッドに属する命令は、相互に独立し
ており、複数の機能ユニットへ同時に発行することがで
きる。
【0006】マルチスレッドア−キテクチャ−では、コ
ンテキストを切り替えるためのオ−バ−ヘッド成しに、
多重化された命令スレッドが同時に実行することができ
るよう、多重化されたコンテキストをハ−ドウェアによ
ってサポ−トする。同時に実行されるスレッド間で、コ
ンテキスト切り替えのオ−バヘッドが存在しないため、
プロセッサのスル−プットおよび実行速度を改善するた
めに、スレッド内、スレッド間の両方の命令レベルの並
列処理を活用することができる。
【0007】より高い性能を得るために、また、シング
ルチップマイクロクプロセッサ内の資源の利用度を改善
するために、多くのマルチスレッドア−キテクチャ−が
提案されている。R.G.PrasadhとC.L.WUによる「A Bench
mark Evaluation of a Multi-threaded RISC Processor
Architecture」(Proc. of the International Confer
ence on Parllel Processing, 1991)では、VLIWモ
デルに基づいたス−パ−スカラア−キテクチャ−が、マ
ルチスレッドア−キテクチャ−の性能を調査するために
提案されている。また、動的インタ−リ−ブの手法が、
資源の争奪(競合)問題の解決のために提案されてる。
また、G.E.Daddis,Jr.とH.C.Tongの「The Concurrent E
xecution of Multipul Instruction Streams on Supers
calar Processors」(Proc. of the International Con
ference on Parllel Processing,1991)において、ラン
タイム中に命令をスケジュ−リングするためのディスパ
ッチスタックを用い、スパ−スカラ−プロセッサにおい
て二つのスレッドを同時に処理するシステムが開示され
ている。また、動的レジスタ割り当ての手法が、スレッ
ド内、スレッド間の両方の命令レベルの並列処理を活用
するために用いられている。
【0008】これらの従来のシステムでは、動的インタ
リ−ブと、スケジュ−リングの技術が、スレッド間での
資源の争奪の問題を解決するために用いられている。
【0009】そこで、動的インタリ−ブについて詳細に
説明する。
【0010】図1は、動的インタリ−ブを用いて、多重
化された命令スレッドを同時に実行するマイクロプロセ
ッサ10を示している。
【0011】プロセッサ10は、FU−1,FU−
2,..,FU−Nの符号を付したの複数の機能ユニッ
ト14を有している。たとえば、このように8個の機能
ユニットを有し、これらの8個の機能ユニットは、メモ
リの読み出しと書き込みを行うロ−ド/ストアユニッ
ト、データの移動と整数加算と減算走査を行う整数ユニ
ット、ビットフィ−ルドの走査を行うロジックユニッ
ト、データタイプに変換を行う整数/浮動小数点変換ユ
ニット、浮動小数点加算ユニット、浮動小数点掛け算ユ
ニット、浮動小数点割算ユニット、分岐ユニットを含
み、各ユニットは、パイプライン化されており、毎サイ
クルに新しい命令を受けることができる。
【0012】たとえば、図1のFU−1は、ロ−ド/ス
トアユニットであり、図示せざるデータキャッシュをア
クセスする。機能ユニット14は、相互連絡ネットワ−
ク16を介してレジスタファイル18に接続している。
各命令スレッドは、レジスタファイル18内に、プレイ
ベ−トなレジスタバンクを有するプロセッサ10によっ
て実行される。プロセッサ10は、1、2、3、..、
TのT個の命令スレッドを実行する。そして、レジスタ
ファイル18は、それぞれが命令スレッドの一つに対応
するT個のレジスタバンクを有している。
【0013】たとえば、各レジスタバンクは、32個の
32ビット整数レジスタと、16個の64ビット浮動小
数点レジスタを有している。整数、論理、ロ−ド/スト
ア、分岐の各ユニットは、整数レジスタにのみアクセス
することができる。また、浮動小数点ユニットが使用で
きるのは、浮動小数点レジスタのみに限られている。そ
して、整数/浮動小数点変換ユニットのみが、両方のレ
ジスタにアクセスすることができる。ここで、整数レジ
スタと浮動小数点レジスタ間の全てのデータ転送は、整
数/浮動小数点変換ユニットによって行われる。
【0014】図1のプロセッサ10で使用される命令セ
ットは、分散型命令セットコンピュ−タ用に開発された
RISC命令セットの部分集合である。このような分散
型命令セットコンピュ−タに関しては、L.Wang, C.L.Wu
らの、「Distributed instruction Set Computer Aechi
tecture」(IEEE Trans. on Computer)や、「Distribut
ed instruction Set Computer」(Ph.D.Dissertaion,Uni
v.Texas, AUstin,Dec.1989)に記載されている。命令セ
ットは、3オペランド、2オペランド、1オペランドの
3つのフォ−マットにおいて、直交化定義された49個
のマシン命令より成る。各マシン命令は、たとえば32
ビット長である。
【0015】図1のプロセッサ10は、コンパイラを実
行する。コンパイラは2つの部分よりなる。前半部は、
たとえばC言語で記述された高級言語プログラムを、先
に示したような命令セットより取りだしたマシン命令の
シ−ケンスに翻訳する。コンパイラの後半部は、シ−ケ
ンシャルなコ−ドを、水平型命令語(HIWs)に変換
する。水平型命令後は、それぞれが特定の機能ユニット
に対応し、対応する特定の機能ユニットで実行されるメ
シン命令を各能することのできる、複数のフィ−ルドも
しくはセクションを有している。プロセッサ10で実行
される各命令スレッドは、これらの水平型命令後より成
る。コンパイラは、相互にデータの依存性を待たない複
数のマシン命令を組み合わせることにより水平型命令語
を生成する。したがい、ひとつの水平型命令語は、同じ
クロックサイクルに発行することができるデータ依存性
の無い複数の命令より成る。もし、ある特定の機能ユニ
ットへの命令が存在しない場合には、コンパイラはNO
OP命令(no opertion)を水平型命令語の
適当なセクションに挿入する。
【0016】図1のプロセッサ10において、各命令ス
レッドの水平型命令後語は、独立した命令キャッシュ2
0に格納される。各命令キャッシュ20は、前述したよ
うにコンパイルされた、1つに命令スレッドの複数の水
平型命令語を格納している。
【0017】図1のプロセッサ10は、また、動的イン
タリ−ブユニット26の制御下で、対応する命令キャッ
シュよりの命令をフェッチする複数の命令フェッチユニ
ット24を有している。
【0018】各命令は、次の3つの主要なパイプライン
ステ−ジを通される。
【0019】1.命令フェッチステ−ジ;命令はキャッ
シュよりフェッチされる。
【0020】2.命令インタリ−ブ/デコ−ドステ−
ジ;命令は、動的インタリ−ブユニット26によって、
可能な場合には他の命令スレッドよりの他の命令と共に
インタリ−ブされる。また、命令は、デコ−ドユニット
27によってデコ−ドされ、対応する機能ユニット14
に発行される。
【0021】3.実行ステ−ジ;各命令は、機能ユニッ
トによって実行され、その結果がレジスタファイル18
に書き戻される。ここで、コンパイラは、適当なコ−ド
スケジュ−リングによって、機能ユニット間の競合を避
けている。
【0022】動的インタリ−ブのプロセスにおいて、動
的インタリ−ブユニットは、たとえばラウンドロビン方
式等の、所定の優先制御方式に従って、一つのスレッド
を選択する。そして、動的インタリ−ブユニットは、そ
のスレッドの次の水平型命令語を調査し、可能な場合に
は、(コンパイラによって挿入された)全てのNOOP
命令を、他のスレッドの対応するNOOPで無い命令に
よって置き換える。そして、この新たに組み合わせた水
平型命令語のここの命令を、適当なデコ−ダ27に送
る。各機能ユニットのは、命令の属するスレッドを識別
し、これに相当する制御信号を生成する。
【0023】図2、3は、動的インタリ−ブの例を示し
たものである。図2aに示すように、この例は、整数加
算/減算ユニットFU−1、論理ユニットFU−2、浮
動小数点/整数変換ユニットFU−3、浮動小数点加算
/減算ユニットFU−4の4つの機能ユニットが存在す
る場合のものである。また、それぞれ対応する命令バッ
ファもしくはキャッシュに格納された、1、2、3の符
号を付して示す3つの命令スレッドが存在する場合のも
のである。図2aに示すように、各命令バッファは、2
つの水平型命令後を格納し、各水平型命令語は、各機能
ユニットに対応するセクションを有している。
【0024】命令バッファ中に示した命令は、コンパイ
ラによって静的にスケジュ−リングされたものである。
この例は、インタリ−ブのためのスレッドの選択にラウ
ンドロビン戦略を用い、各スレッドは自身のレジスタセ
ットを有すると仮定した場合のものである。図2bに示
すように、第1のクロックサイクルCK=1では、3つ
のスレッドの第1番目の水平型命令語が、命令キャッシ
ュよりフェッチされ、動的インタリ−ブユニットに送ら
れる。そして、スレッド1が初めに選択される(図2b
中、ボ−ルド体で示したもの)。このスレッドのADD
2命令は、整数ユニットのデコ−ダに送られる。次に、
スレッド1の命令は、もう無いので、今度は、スレッド
2が選択される。スレッド1のADD2命令が既に整数
ユニットに送られているので、スレッド2のADD2命
令の発行は次のクロックまで延期される。一方、論理ユ
ニットは、空き状態にある。そこで、スレッド2のSH
LL2命令が論理ユニットデコ−ダに送られる。これ
で、このスレッドの命令は無くなったので、次はスレッ
ド3が選択される。一方、スレッド3のFMOVEF命
令は、空き状態にある浮動小数点/整数変換ユニットの
デコ−ダに送られる。この時点では、これ以上の命令は
発行できない。このようにして、CK=1では、スレッ
ド1のADD2命令、スレッド2のSHLL命令、スレ
ッド3のFMOVEFが、同時に機能ユニットデコ−ダ
に発行される。
【0025】第1のクロックサイクロの終了時点におい
て、動的インタリ−ブユニット中に、スレッド1とスレ
ッド2の命令は、もう無い。そこで、これらのスレッド
の次の水平型命令後を、対応する命令キャッシュよりフ
ェッチし、動的インタリ−ブユニットに送る。一方、ス
レッド2について、発行すべきADD2命令が残ってい
るので、スレッド2よりの次の水平型命令語はフェッチ
しない。CK=2における、動的ンタリ−ブユニット内
の3つの水平型命令語を図3aに示す。CK=2におい
ては、ラウンドロビン戦略に従って、スレッド2が初め
に選択される。スレッド2のADD2命令は、整数ユニ
ットデコ−ダに送られる。次に、スレッド3が選択さ
れ。このスレッドのSHLL2命令とFSUB命令が、
論理ユニットと浮動小数点加算/減算ユニッットにそれ
ぞれ送られる。最後は、スレッド1が選択されるが、必
要となる機能ユニットデコ−ダが占有されているので、
スレッド1よりの命令は発行されない。プロセスは、第
3のクロックサイクルCK=3に同様に進む。第3のク
ロックサイクルにおいて、動的インタリ−ブユニットに
格納されている命令を図3bに示す。これらは、第3の
クロックサイクルで機能ユニットに発行される命令であ
る。第3のクロックサイクルの終了時で、3つのスレッ
ドの全ての命令は発行されたことになる。もし、動的イ
ンタリ−ブを用いなければ、例として示した命令を発行
するのに6クロックを要する。このように、動的インタ
リ−ビングは、例示した2つの要因により命令発行レ−
トを改善することができる。
【0026】動的インタリ−ブユニットで行われる基本
的な操作は、それがNOOP命令であるかを調べる、命
令の部分デコ−ドである。もし、ある命令がNOOP命
令でない場合、その命令は、必要な制御信号を生成する
機能ユニットデコ−ダに発行される。もし、命令がNO
OP命令の場合には、より低い優先度のスレッドよりの
次の命令が、NOOP命令で無い命令が見つかるか、全
てのスレッドについて終了するまで、ドミノ式にチェッ
クされる。この、全ての操作は、1クロックサイクル中
に完了しなければならない。図4は、これを実現するこ
とのできる論理回路を示している。図4において、SW
1、SW2は、論理スイッチである。信号NDは、部分
命令デコ−ドの結果たる、「NOOP検出」信号であ
り、Pは、優先度信号である。各クロックサイクルにお
いて、ただひとつのスレッドに対応する優先度信号が値
HIGHとなり、他の優先度信号は値LOWとなる。信
号ISは、命令発行信号であり、これは、HIGHのと
き、対応するスレッドよりの命令が機能ユニットデコ−
ダに発行されることを示す。動的インタリ−ブユニット
は図4に示すような論理回路を、全ての機能ユニットに
対して有している。
【0027】
【発明が解決しようとする課題】このように、動的イン
タリ−ビングによれば、機能ユニットの高利用率を達成
することができるが、いくつかの問題が残っている。
【0028】第1には、NOOP再配置テクニックのた
めに必要となる高命令フェッチ帯域を、ハ−ドウェアが
サポ−トしなければならない点である。さらに、動的イ
ンタリ−ブユニットを実現するためには、次の水平型命
令語をフェッチし実行できるようにスレッドの一つの水
平型命令語の完成を検出するのに必要な、特別のハ−ド
ウェアを含む複雑なハ−ドウェアが必要となる。また、
同じ水平型命令語中の全ての命令が同じクロックサイク
ル中に発行されることが保証されていないので、ライト
後リ−ドという依存性を有する2つの命令を一つの水平
型命令語に含めることができない。同様に、2つの引き
続く水平型命令語が、引き続かないサイクにおいて発行
され得るので、命令を分岐ディレイスロットに格納する
ことができない。このような拘束は、マルチスレッドア
−キテクチャ−の命令発行レ−トを低下させる。
【0029】そこで、本発明は、動的インタリ−ブに可
憐した、これらの問題を解決することができる、マイク
ロプロセッサのマルチスレッドア−キテクチャ−を提供
することを目的とする。
【0030】
【課題を解決するための手段】前記目的達成のために、
本発明は、複数の命令スレッドを同時に実行することの
できるマイクロプロセッサであって、複数の機能ユニッ
トを有するプロセッサと、複数の命令スレッドを形成す
る、それぞれが特定の一つの前記機能ユニットによって
実行される1以上のマシン命令を含む複数の水平型命令
語を記憶する手段と、所定の順序で所定の時間に、異な
る命令スレッドに属する前記水平型命令語を、前記記憶
する手段よりフェッチする手段と、タイムスロットの所
定の固定繰り返しパタ−ン中のあらかじめ定めた固定タ
イムスロット中の、特定の命令スレッドよりのマシン命
令の実行に、前記各機能ユニットを割り当てる手段とを
有することを特徴とするマイクロプロセッサを提供す
る。
【0031】
【作用】すなわち、本発明では、VLIW(Very Long I
nstruction word)マルチスレッドプロセッサア−キテク
チャ−における前記争奪の問題を解決するための、動的
インタリ−ブに代えて、静的インタリ−ブの技法を用い
る。静的インタリ−ブの技法においては、プロセッサの
各機能ユニットは、タイムスロットのあらかじめ定めた
固定繰り返しパタ−ン中のあらかじめ定めた固定タイム
スロット中の特定のスレッドよりのマシン命令の実行に
割り当てられる。特定の機能ユニットが、特定のタイム
スロット中の特定スレッドの命令を割り当てられる、タ
イムスロットのあらかじめ定めた固定繰り返しパタ−ン
は、計算資源の争奪問題を解決するためにハ−ドウェア
に課せられた資源の拘束を表している。この資源割り当
て戦略は、ハ−ドウェア資源のあらかじめ定めた固定割
り当てを考慮し、命令間のデータ依存性を維持するよう
に、マシン命令のシ−ケンスを水平型命令語に編成する
並列コンパイラにより提示される。
【0032】動的インタイ−ブを利用した従来のマイク
ロプロセッサに比べると、静的インタリ−ブを用いる本
発明のマイクロプロセッサは、ハ−ドウェアの複雑さを
軽減することができる。また、さらに、本静的インタリ
−ブの技法によれば、プログラムのコ−ドサイズを、顕
著に減少させることができる。
【0033】
【実施例】以下、本発明の実施例を説明する。
【0034】静的インタリ−ブ方式においては、全ての
機能ユニットを、ラウンドロビン方式によって、スレッ
ドに割り当てる。機能ユニットが、選択したスレッドに
よって用いられない場合、NOOP命令が、その機能ユ
ニットで実行される。
【0035】一般的に、静的インタリ−ブの方式は、割
り当てベクトル(AV)によって特性付けることができ
る。AVは、各機能ユニットFUiについて、エントリ
AViを有している。ここで、1≦AVi≦Tであり、
Tはハ−ドウェアによってサポ−トされるスレッドの数
である。プログラムの実行中において、時間tには、F
Uiは、スレッドτに割り当てられる。ここで、τ=
1,2,...,Tであり、次式で与えられる。
【0036】 τ=1+(t+T−AVi)modT −(式1) 以下、4つの機能ユニットFU−1,FU−2,FU−
3,FU−4を有する4スレッドのア−キテクチャ−に
ついて考える。AV={1,4,2,2}を与えられた
場合の、特定のスレッドに対する機能ユニットの配置を
図5aに示す。図5aにおいて、テ−ブルの各エントリ
は、各タイムスロットにおいて、対応する機能ユニット
を使用することができるスレッドの番号を示している。
タイムスロットの機能ユニットへの割り当ては、それ自
身繰り返すパタ−ンを形成する。図5aにおいては、パ
タ−ンは各4タイムスロット毎に繰り返す。最適なAV
を決定するアルゴリズムを次に説明する。
【0037】図5bは、各スレッドの命令をスケジュ−
ルするために、割り当てベクトルによって特定されるハ
−ドウェア資源の割り当てが、どうのように、ポスト−
パス並列コンパイラに与えられるかを示している。図5
bは、各機能ユニットに対応する4つのセクションを有
する、1、2、3、...の番号を付した水平型命令語
のリストを示している。本実施例では、並列コンパイラ
は、対応する機能ユニットによって実行されるマイクロ
命令を、斜線掛けしたセクションのみに格納することが
できる。斜線掛けしていないセクションはNOOP命令
を格納する。特定の斜線掛けセクションを有する水平型
命令語のパタ−ンは、T個の命令語毎に繰り返す。ここ
でTは、スレッドの数である。
【0038】後述するように、図5bに示す命令の各パ
タ−ンは、4つのHIWsより成り、並列コンパイラに
より、単一の水平型命令語にまとめられる。水平型命令
語の同じパタ−ンが、各スレッドを個々にスケジュ−リ
ングするために、コンパイラによって利用される。
【0039】図5bに示した水平型命令語のパタ−ン
は、この場合AV=(1,4,2,2)である割り当て
ベクトルから導き出される。Hk番目の水平型命令語
の、機能ユニットFUiに対応するフィ−ルドは、(H
k+T−1)modT+1がAViと等しいときに、斜
線掛けされる。本例ではTは4である。
【0040】言い替えるならば、ハ−ドウェアで使用さ
れる資源割り当て戦略によって課される資源の制約は、
並列コンパイラの命令パタ−ンのシ−ケンスとして表現
される。各スレッドが、まずシ−ケンシャルにコンパイ
ルされ、生成されたシ−ケンシャルなコ−ドが、このパ
タ−ンに従って、水平型命令語中にスケジュ−ルされ
る。並列コンパイラにおいて、シ−ケンシャルコンパイ
ラによって生成された各スレッドについての命令は、命
令間の制御依存性とデータ依存性を維持するように、こ
のパタ−ン中にスケジュ−ルされる。そして、各パタ−
ンを形成する水平型命令語の組は、単一の水平型命令語
に圧縮される。この圧縮の詳細について説明する。
【0041】図5bのパタ−ンに従って、全ての命令ス
レッドがコンパイルされたなら、図5aに示すようにス
レッドを相互にインタリ−ブすることができる。ここで
も、割り当てベクトルへの依存性を利用する。すなわ
ち、スレッド#τの開始時間を、スレッド間の資源の争
奪を回避できるように、(τ−1)サイクル遅延する。
【0042】図6に、以上説明してきた静的インタリ−
ブを利用するプロセッサ100の構成を示す。ここで、
プロセッサ100は、たとえば、単一の半導体チップで
実現することができる。プロセッサ100は、4つの機
能ユニットFU−1、FU−2,FU−3,FU−4を
有している。ここでたとえば、FU−1は算術ユニット
であり、FU−2は論理ユニットであり、FU−3はキ
−ド/ストアユニッットであり、FU−4は分岐ユニッ
トである。プロセッサ100は、1、2、3、4のスレ
ッドを同時に実行する。また、キャッシュ1、キャッシ
ュ2、キャッシュ3、キャッシュ4の番号を付した、相
互に分離した命令キャッシュ120が、各命令スレッド
に対応して設けられている。各キャッシュ120は、対
応する命令スレッドを構成する水平型命令語を格納す
る。1,2,3,4の番号を付したレジスタバンク13
0は、個々の命令スレッドのオペランドを格納する。特
定に命令スレッドよりの命令を実行するとき、機能ユニ
ットは適当なレジスタバンクよりオペランドをフェッチ
し、命令を実行した後オペランドをレジスタバンクに戻
す。ここで、機能ユニット110は、バス131を介し
てレジスタバンクにアクセスする。
【0043】各機能ユニットに接続しているのはキュ−
140である。キュ−140は、割り当てベクトルによ
って定義される資源割り当てを実現するために設けられ
ている。すなわち、キュ−140は、タイムスロットの
パタ−ン中でその命令スレッドに予約されたあらかじめ
定めた固定スロット中の特定の命令スレッドよりの命令
が、各機能ユニットに発行されることを保証する。
【0044】先に示した例では、割り当てベクトルをA
V=(1,4,2,2)とした。この場合、FU−1に
接続しているキュ−は、遅延1クロックサイクルを有し
ている。また、FU−2に接続しているキュ−は、遅延
4を、FU−3に接続しているキュ−は、遅延2を、F
U−4に接続しているキュ−は、遅延2を有している。
【0045】水平型命令語は、命令フェッチユニット1
21で用いられているあらかじめ定めた順序で択一的
に、キャッシュ120よりフェッチされる。具体的に
は、水平型命令語は、キャッシュ#1から始まるラウン
ドロビンの順序でキャッシュよりフェッチされる。フェ
ッチされた各水平型命令語について、その中に含まれる
個々のマシン命令は、その命令を実行する機能ユニット
に接続したキュ−に与えられる。マシン命令語は、バス
132を介してキュ−140に転送される。個々の各マ
シン命令は、キュ−のあらかじめ定めた固定遅延によっ
て遅延された後に、適当な機能ユニットに発行される。
割り当てベクトルによって定まる遅延をキュ−に与え、
割り当てベクトルによって導かれるパタ−ンに従ってコ
ンパイルされた水平型命令語をあらかじめ定めた順所で
フェッチすることにより、特定のスレッドよりの個々の
マシン命令が、当該特定の命令スレッドに予約されたあ
らかじめ定めた固定タイムスロットにおいて、特定の機
能ユニットに発行されることを保証することができる。
【0046】静的インタリ−ブの主要な優位性は、コン
パイル時に命令の終了時を知ることができるので、並列
コンパイラが命令が実行シ−ケンスを最適化することが
できることである。
【0047】図7は、本実施例においてプログラムのコ
ンパイルと実行のステップを示したフロ−チャ−トであ
る。初めにC言語のような高級言語で記述されたプログ
ラム210を、シ−ケンシャルコンパイラでコンパイル
する(ステップ220)。シ−ケンシャルコンパイラ
は、高級プログラムをマシン命令のシ−ケンスに変換す
る。次に、並列コンパイラが、マシン命令のシ−ケンス
を水平型命令語に再編成する(ステップ230)。この
再編成は2ステップで実行される。最初のステップ(ス
テップ231)では、各マシン命令が、複数の水平型命
令語を含む、命令パタ−ン中の位置に置かれる。命令パ
タ−ン中のマシン命令の位置は、命令間のデータ依存性
と割り当てベクトルによって決定するハ−ドウェア資源
割り当てに従う。2番目のステップ(ステップ232)
では、各パタ−ンの水平型命令語は、一つの命令スレッ
ドを形成するように、単一の水平型命令語に圧縮され
る。並列コンパイラの処理後、命令スレッドの圧縮され
た水平型命令語は、キャッシュに格納され、先に説明し
たように機能ユニットによって実行される(ステップ2
40)。
【0048】図8bは、図8aに示した4つの水平型命
令語が、どのように図5bに示したパタ−ン中に置かれ
るかを示したものである。図8aに示したシ−ケンス
は、図5bのHIWs1−4の斜線掛けしたセクション
に置かれる。斜線掛けしていないセクションにはNOO
P命令が受け入れられる。図8cは、図8bに示した4
つの命令語のパタ−ンが、単一の水平型命令語に圧縮さ
れるかを示したものである。圧縮は、多くのNOOP命
令を排除することによりコ−ドサイズを小さくする。
【0049】シ−ケンシャルコンパイラによって生成さ
れた命令のシ−ケンス中のマシン命令Iiは、Hj番目
(図5b参照)の特定の水平型命令語中に、次のように
して置かれる。全てのマシン命令Ijは、データ依存性
を決定するために、既にスケジュ−ルされた全ての命令
と比較される。命令Ijは、シ−ケンスの先頭まで、も
しくは、命令Ijのと間にデータ依存性がある命令Ii
が見つかるまで、可能な限り上に移動される。したが
い、Ijをその中に配置することのできる水平型命令語
は、 Hj=Hi+L(D)(Ti)(Tj)−(式2) で表すことができる。
【0050】ここで、HiはIiを追いたHIWの番
号、HjはIjを置くことのできるHIWの番号、Ti
は命令Iiのタイプ、Tjは命令Ijのタイプである。
また、、DはIiとIjとの間のデータ依存性のタイ
プ。ここで、データ依存性のタイプはリ−ドアフタ−ラ
イト(RAW)かライトアフタ−リ−ド(WAR)かい
ずれかである。また、Lは、特定のAVの待ち時間テ−
ブルである。
【0051】もし、Ijが、HIW Hj中の命令と資
源争奪関係を持つならば、Ijは、Tサイクル遅延され
る。もし、それでも競合するのであれば、Ijは、さら
にTサイクル遅延される。このような探索は、Ijを置
くことのできるHIWが見つかるまで続けられる。Hj
の計算において、待ち時間テ−ブルLが、IjとIiと
の間の待ち時間を決定するために用いられる。D,T
i,Tjと、ハ−ドウェアによって定義される、各命令
タイプの実行時間であるFU待ち時間とが与えられる
と、L(D)(Ti)(Tj)が、表1に示すCプログ
ラムによって計算される。
【0052】
【表1】
【0053】ここで、temp1とtemp2は、一時
的数値変数である。計算された待ち時間は、ハ−ドウェ
アによって定義される実行タイムとは異なる。待ち時間
テ−ブルの計算においては、依存のタイプ(すなわち、
D=1の場合のRAW、D=2の場合のWAR)、各命
令の実行時間、AVを考慮する。一度待ち時間テ−ブル
が計算できたら、並列コンパイラは、式2を用いて実行
スケジュ−ル中における各敬礼の位置を決定するのに、
これを用いることができる。
【0054】図9は、AV=(1,4,2,2),FU
待ち時間(Ti)=1、D=1(データ依存性がRA
W)の場合の、待ち知時間テ−ブルL(1)(Ti)
(Tj)を示したものである。この場合、命令タイプT
i、Tjは、これらの命令を実行する機能ユニットFU
i,FUjによって識別される。したがい、たとえば、
FU−3で実行されるIiとFU−2で実行されるIj
との間の待ち時間は2サイクルである。
【0055】図10、11は、コンパイル例を示してい
る。図10は、ほんの短いプログラムについて、シ−ケ
ンシャルコンパイラが生成したマシン命令のシ−ケンス
を示している。図11は、ポストパス並列プロセッサに
よって生成された圧縮後の水平型命令語を示している。
【0056】本実施例に係る静的インタリ−ブにおい
て、割り当てベクトルは重要である。割り当てベクトル
を選ぶ一つの方法は、最も多発するリ−ドアフタ−ライ
ト(RAW)依存の待ち時間を減少させるように割り当
てベクトルを選ぶことである。すなわち、命令間のRA
W依存の分布は、複数のベンチマ−クテストによって得
ることができるので、AVは、式3(数1)が最小とな
るように選ぶ。
【0057】
【数1】
【0058】
【発明の効果】以上のように、本発明によれば、動的イ
ンタリ−ブによって生じる各種問題を、静的インタリ−
ブの技法によって解決することのできる、マルチスレッ
ドマイクロプロセッサを提供することができる。
【図面の簡単な説明】
【図1】動的インタリ−ブを用いた従来のマルチスレッ
ドマイクロプロセッサア−キテクチャ−を示すブロック
図である。
【図2】動的インタリ−ブの操作を示す説明図である。
【図3】動的インタリ−ブの操作を示す説明図である。
【図4】従来のマイクロプロセッサで用いられていた動
的インタリ−ブユニットの構成を示すブロック図であ
る。
【図5】本発明の一実施例に係る静的インタリ−ブで用
いるパタ−ンを示す説明図である。
【図6】本発明の実施例に係る静的インタリ−ブを用い
るマイクロプロセッサの構成を示すブロック図である。
【図7】本発明の実施例におけるプログラムのコンパイ
ルおよび実行操作を示すフロ−チャ−トである。
【図8】本発明の実施例におけるコンパイルのようすを
示した説明図である。
【図9】本発明の実施例に係るコンパイラが用いる待ち
時間テ−ブルを示す説明図である。
【図10】本発明の実施例におけるシ−ケンシャルコン
パイル後のマシン命令のシ−ケンス例を示す説明図であ
る。
【図11】本発明の実施例における圧縮後の水平型命令
の例を示す説明図である
【符号の説明】
110機能ユニット 120 キャッシュ 121 命令フェッチユニット 130 レジスタバンク 140 キュ−

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】複数の命令スレッドを同時に実行すること
    のできるマイクロプロセッサであって、 複数の機能ユニットを有するプロセッサと、 複数の命令スレッドを形成する、それぞれが特定の一つ
    の前記機能ユニットによって実行される1以上のマシン
    命令を含む複数の水平型命令語を記憶する手段と、 所定の順序で所定の時間に、異なる命令スレッドに属す
    る前記水平型命令語を、前記記憶する手段よりフェッチ
    する手段と、 タイムスロットの所定の固定繰り返しパタ−ン中のあら
    かじめ定めた固定タイムスロットの、特定の命令スレッ
    ドよりのマシン命令の実行に、前記各機能ユニットを割
    り当てる手段とを有することを特徴とするマイクロプロ
    セッサ。
  2. 【請求項2】請求項1記載のマイクロプロセッサであっ
    て、 前記割り当てる手段は、適当な割り当てタイムスロット
    に、適当な機能ユニットに、前記各マシン命令が提供さ
    れるように、命令スレッドの水平型命令語の各マシン命
    令に、あらかじめ定めた固定遅延を与えるキュ−イング
    手段を備えて言うことを特徴とするマイクロプロセッ
    サ。
  3. 【請求項3】請求項1記載のマイクロプロセッサであっ
    て、 前記タイムスロットの特定のタイムスロットは、前記命
    令スレッドの特定のマシン命令を実行する特定の機能ユ
    ニットに、前記マシン命令間のリ−ドアフタ−ライト依
    存性による待ち時間を最小化するように割り当てられて
    いることを特徴とするマイクロプロセッサ。
  4. 【請求項4】請求項1記載のマイクロプロセッサであっ
    て、 前記フェッチする手段は、ラウンドロビン方式にしたが
    った順序で、前記記憶する手段より、水平型命令語をフ
    ェッチすることを特徴とするマイクロプロセッサ。
  5. 【請求項5】請求項1記載のマイクロプロセッサであっ
    て、 前記記憶する手段は、それぞれが前記複数の命令スレッ
    ドのうちの一つの命令スレッドについて用いられる、複
    数の独立したキャッシュを有している個とを特徴とする
    マイクロプロセッサ。
  6. 【請求項6】請求項1記載のマイクロプロセッサであっ
    て、 各命令スレッドの前記水平型命令語は、マシ−ン命令の
    シ−ケンスを、複数の水平型命令語を含む、命令のパタ
    −ンのシ−ケンスに再編成するコンパイラによってコン
    パイルされており、かつ、各マシン命令は、他のマシン
    命令との間のデータ依存性と、特定の命令スレッドより
    の命令を実行する特定の機能ユニットに割り当てられた
    特定のタイムスロットとに依存したパタ−ンの位置に配
    されることを特徴とするマイクロプロセッサ。
  7. 【請求項7】タイムスロットのあらかじめ定めた固定繰
    り返しパタ−ン中の、特定のあらかじめ定めた固定タイ
    ムスロット中の前記命令スレッドのうちの特定の一つよ
    りの命令を実行するように、割り当てベクトルに従って
    割り当てられる複数の機能ユニットを備えたプロセッサ
    を有するマルチプロセッサシステムにおいて、複数の命
    令スレッドよりのひとつの命令スレッドをコンパイルし
    実行する方法であって、 シ−ケンシャルコンパイラを
    用いて、ソ−スプログラムを、前記プロセッサシステム
    の特定の機能ユニットによって実行できるマシン命令の
    シ−ケンスにコンパイルするステップと、 並列コンパイラを用いて、前記マシン命令のシ−ケンス
    を、各命令が、前記マシン命令のシ−ケンス中の先行す
    る命令との間のデータ依存性と、適当な機能ユニットを
    命令の実行に用いることのできるタイムスロットを定義
    する割り当てベクトルに依存した位置を、そのパタ−ン
    中に有する命令のパタ−ンのシ−ケンスに再編成するス
    テップと前記並列コンパイラを用いて、ひとつの命令ス
    レッドを形成するために、前記命令の各パタ−ンの命令
    を、一つの水平型命令語に圧縮ステップと、 前記ひとつの命令スレッドの命令をキャッシュに記憶す
    るステップと、 前記一つの命令スレッドの命令を前記機能ユニットで実
    行するステップとを有することを特徴とする命令スレッ
    ドのコンパイルおよび実行方法。
  8. 【請求項8】複数の機能ユニットと、各命令スレッドを
    構成する、特定の前記機能ユニットによって実行される
    1以上の命令を含んだ水平型命令語を記憶する複数のキ
    ャッシュシステムと、を有するマルチスレッドプロセッ
    サにおいて、同時に複数の命令スレッドを実行する方法
    であって、 あらかじめ定めた時間にあらかじめ定めた順序で、異な
    る命令スレッドに属する水平型命令語を、前記キャッシ
    ュシステムよりフェッチするシステムと、 タイムスロットのあらかじめ定めた固定繰り返しパタ−
    ンのあらかじめ定めた固定タイムスロット中の特定の命
    令スレッドよりの命令の実行に、各機能ユニットを割り
    当てるステップと、 前記水平型命令語中の命令を、前記機能ユニットで、前
    記割り当てられたタイムスロットに実行するステップと
    を有することを特徴とする命令スレッド実行方法。
  9. 【請求項9】請求項8記載の命令助の実行方法であっ
    て、 各命令スレッドは、 シ−ケンシャルコンパイラを用いて、ソ−スプログラム
    を、前記プロセッサの特定の機能ユニットによって実行
    できるマシン命令のシ−ケンスにコンパイルするステッ
    プと、 並列コンパイラを用いて、前記マシン命令のシ−ケンス
    を、各命令が、前記マシン命令のシ−ケンス中の先行す
    る命令との間のデータ依存性と、適当な機能ユニットを
    命令の実行に用いることのできるタイムスロットを定義
    する割り当てベクトルに依存した位置を、そのパタ−ン
    中に有する命令のパタ−ンのシ−ケンスに再編成するス
    テップと前記並列コンパイラを用いて、ひとつの命令ス
    レッドを形成するために、前記命令の各パタ−ンの命令
    を、一つの水平型命令語に圧縮ステップとによってコン
    パイルされることを特徴とする命令スレッド実行方法。
  10. 【請求項10】複数の命令スレッドを実行するマイクロ
    プロセッサであって、 複数の機能ユニットと、 それぞれが一つの命令スレッドの水平型命令後を記憶す
    る、複数の命令キャッシュと、 対応する前記命令キャッシュより、前記水平型命令語を
    フェッチする、複数の命令フェッチユニットと、 タイムスロットの繰り返しパタ−ン中のあらかじめ定め
    た固定タイムスロット中の、特定の命令スレッドよりの
    マシン命令の実行に、前記各機能ユニットを、前記水平
    型枚例語のマシン命令のリ−ドアフタ−ライトのための
    待ち時間を最小化する割り当てベクトルに応じて、割り
    当てる割り当て手段とを有することを特徴とするマイク
    ロプロセッサ。
JP5001268A 1992-02-25 1993-01-07 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 Expired - Lifetime JP2928695B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/840,903 1992-02-25
US07/840,903 US5404469A (en) 1992-02-25 1992-02-25 Multi-threaded microprocessor architecture utilizing static interleaving

Publications (2)

Publication Number Publication Date
JPH07191847A true JPH07191847A (ja) 1995-07-28
JP2928695B2 JP2928695B2 (ja) 1999-08-03

Family

ID=25283528

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5001268A Expired - Lifetime JP2928695B2 (ja) 1992-02-25 1993-01-07 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法

Country Status (3)

Country Link
US (1) US5404469A (ja)
JP (1) JP2928695B2 (ja)
DE (1) DE4217012C2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100810017B1 (ko) * 2005-11-30 2008-03-07 인터내셔널 비지네스 머신즈 코포레이션 서로 다른 스레드에 대한 비대칭 하드웨어 멀티스레딩지원을 갖는 디지털 데이터 처리 장치
US8468324B2 (en) 2005-03-18 2013-06-18 Marvell World Trade Ltd. Dual thread processor
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams

Families Citing this family (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
US5560025A (en) * 1993-03-31 1996-09-24 Intel Corporation Entry allocation apparatus and method of same
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem Kreuzschienenschalter
US5640584A (en) * 1994-12-12 1997-06-17 Ncr Corporation Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5848284A (en) * 1995-11-28 1998-12-08 Intel Corporation Method of transferring data between moderately coupled integer and floating point units
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
EP1291765B1 (en) * 1996-08-27 2009-12-30 Panasonic Corporation Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
US6463527B1 (en) 1997-03-21 2002-10-08 Uzi Y. Vishkin Spawn-join instruction set architecture for providing explicit multithreading
US6065112A (en) * 1997-06-18 2000-05-16 Matsushita Electric Industrial Co., Ltd. Microprocessor with arithmetic processing units and arithmetic execution unit
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6076159A (en) * 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6067601A (en) * 1997-11-03 2000-05-23 Brecis Communications Cache memory based instruction execution
US6178482B1 (en) 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US6216218B1 (en) 1997-11-03 2001-04-10 Donald L. Sollars Processor having a datapath and control logic constituted with basis execution blocks
US6016539A (en) 1997-11-03 2000-01-18 Teragen Corporation Datapath control logic for processors having instruction set architectures implemented with hierarchically organized primitive operations
US5940626A (en) * 1997-11-03 1999-08-17 Teragen Corporation Processor having an instruction set architecture implemented with hierarchically organized primitive operations
US5923894A (en) 1997-11-03 1999-07-13 Teragen Corporation Adaptable input/output pin control
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
US6256775B1 (en) 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6453355B1 (en) * 1998-01-15 2002-09-17 Apple Computer, Inc. Method and apparatus for media data transmission
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
JP3881763B2 (ja) * 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6247116B1 (en) 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6263426B1 (en) 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6292815B1 (en) * 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6266769B1 (en) 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US6205519B1 (en) 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6035389A (en) * 1998-08-11 2000-03-07 Intel Corporation Scheduling instructions with different latencies
US6286027B1 (en) * 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
WO2000034854A2 (en) * 1998-12-08 2000-06-15 Koninklijke Philips Electronics N.V. Method of executing an interpreter program
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US7003475B1 (en) 1999-05-07 2006-02-21 Medcohealth Solutions, Inc. Computer implemented resource allocation model and process to dynamically and optimally schedule an arbitrary number of resources subject to an arbitrary number of constraints in the managed care, health care and/or pharmacy industry
US6938147B1 (en) * 1999-05-11 2005-08-30 Sun Microsystems, Inc. Processor with multiple-thread, vertically-threaded pipeline
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
WO2000079395A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for establishing port priority functions in a vliw processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6658556B1 (en) * 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US6470442B1 (en) 1999-07-30 2002-10-22 International Business Machines Corporation Processor assigning data to hardware partition based on selectable hash of data address
US6598118B1 (en) 1999-07-30 2003-07-22 International Business Machines Corporation Data processing system with HSA (hashed storage architecture)
US6446165B1 (en) 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
US6516404B1 (en) 1999-07-30 2003-02-04 International Business Machines Corporation Data processing system having hashed architected processor facilities
US6449691B1 (en) 1999-07-30 2002-09-10 International Business Machines Corporation Asymmetrical cache properties within a hashed storage subsystem
US6823471B1 (en) 1999-07-30 2004-11-23 International Business Machines Corporation Method for providing high availability within a data processing system via a reconfigurable hashed storage subsystem
US6769033B1 (en) * 1999-08-27 2004-07-27 International Business Machines Corporation Network processor processing complex and methods
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6668315B1 (en) * 1999-11-26 2003-12-23 Hewlett-Packard Development Company, L.P. Methods and apparatus for exchanging the contents of registers
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
EP1247195A4 (en) * 1999-12-22 2005-01-05 Ubicom Inc SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6584522B1 (en) 1999-12-30 2003-06-24 Intel Corporation Communication between processors
DE10000960C1 (de) * 2000-01-12 2001-12-20 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US6988188B2 (en) * 2000-03-01 2006-01-17 Realtek Semiconductor Corp. Data object architecture and method for xDSL ASIC processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7096343B1 (en) 2000-03-30 2006-08-22 Agere Systems Inc. Method and apparatus for splitting packets in multithreaded VLIW processor
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
US7007153B1 (en) * 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US7093109B1 (en) 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US7111156B1 (en) * 2000-04-21 2006-09-19 Ati Technologies, Inc. Method and apparatus for multi-thread accumulation buffering in a computation engine
US6675285B1 (en) * 2000-04-21 2004-01-06 Ati International, Srl Geometric engine including a computational module without memory contention
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US6829697B1 (en) * 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US7139898B1 (en) * 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US7240186B2 (en) * 2001-07-16 2007-07-03 Hewlett-Packard Development Company, L.P. System and method to avoid resource contention in the presence of exceptions
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7213045B2 (en) * 2002-08-16 2007-05-01 Silverback Systems Inc. Apparatus and method for transmit transport protocol termination
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US6842848B2 (en) * 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US7360220B2 (en) * 2002-10-31 2008-04-15 Intel Corporation Methods and apparatus for multi-threading using differently coded software segments to perform an algorithm
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US20050039189A1 (en) * 2003-08-14 2005-02-17 Todd Anderson Methods and apparatus to preemptively compile an application
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US20050251649A1 (en) * 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US20060229638A1 (en) * 2005-03-29 2006-10-12 Abrams Robert M Articulating retrieval device
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US8249848B2 (en) * 2007-09-05 2012-08-21 International Business Machines Corporation Verifying a processor design using a processor simulation model
WO2010021119A1 (ja) * 2008-08-21 2010-02-25 パナソニック株式会社 命令制御装置
CN105677253B (zh) * 2016-01-07 2018-09-18 浪潮(北京)电子信息产业有限公司 一种io指令处理队列的优化方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226125A (en) * 1989-11-17 1993-07-06 Keith Balmer Switch matrix having integrated crosspoint logic and method of operation
US5119495A (en) * 1989-12-21 1992-06-02 Bull Hn Information Systems Inc. Minimizing hardware pipeline breaks using software scheduling techniques during compilation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468324B2 (en) 2005-03-18 2013-06-18 Marvell World Trade Ltd. Dual thread processor
KR100810017B1 (ko) * 2005-11-30 2008-03-07 인터내셔널 비지네스 머신즈 코포레이션 서로 다른 스레드에 대한 비대칭 하드웨어 멀티스레딩지원을 갖는 디지털 데이터 처리 장치
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams

Also Published As

Publication number Publication date
DE4217012C2 (de) 1998-12-10
JP2928695B2 (ja) 1999-08-03
US5404469A (en) 1995-04-04
DE4217012A1 (de) 1993-08-26

Similar Documents

Publication Publication Date Title
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
US6988183B1 (en) Methods for increasing instruction-level parallelism in microprocessors and digital system
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
CN106104481B (zh) 用于执行确定性和机会性多线程的系统和方法
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
Weiss et al. Instruction issue logic for pipelined supercomputers
US5519864A (en) Method and apparatus for scheduling the dispatch of instructions from a reservation station
US6237077B1 (en) Instruction template for efficient processing clustered branch instructions
US5884060A (en) Processor which performs dynamic instruction scheduling at time of execution within a single clock cycle
KR102335194B1 (ko) 명령어 체이닝 능력을 이용한 멀티스레드형 프로세서에서의 기회 멀티스레딩
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
EP0813145B1 (en) Pipelined instruction dispatch unit in a superscalar processor
US20140173575A1 (en) Processors and compiling methods for processors
WO2017223006A1 (en) Load-store queue for multiple processor cores
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
JP3777541B2 (ja) マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置
KR100483463B1 (ko) 사전-스케쥴링 명령어 캐시를 구성하기 위한 방법 및 장치
JPH02227730A (ja) データ処理システム
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
JP2004503872A (ja) 共同利用コンピュータシステム
JP2828219B2 (ja) オブジェクト・コード互換性を与える方法、オブジェクト・コード互換性並びにスカラ・プロセッサ及びスーパスカラ・プロセッサとの互換性を与える方法、ツリー命令を実行するための方法、データ処理システム
Gupta A fine-grained MIMD architecture based upon register channels

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990420

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

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080514

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110514

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120514

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 14

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 14