JP2928695B2 - 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 - Google Patents
静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法Info
- Publication number
- JP2928695B2 JP2928695B2 JP5001268A JP126893A JP2928695B2 JP 2928695 B2 JP2928695 B2 JP 2928695B2 JP 5001268 A JP5001268 A JP 5001268A JP 126893 A JP126893 A JP 126893A JP 2928695 B2 JP2928695 B2 JP 2928695B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- thread
- horizontal
- microprocessor
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 17
- 230000003068 static effect Effects 0.000 title description 14
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000007616 round robin method Methods 0.000 claims description 3
- 238000007667 floating Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 102100024348 Beta-adducin Human genes 0.000 description 5
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000013468 resource allocation Methods 0.000 description 5
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 235000021152 breakfast Nutrition 0.000 description 1
- PKOMXLRKGNITKG-UHFFFAOYSA-L calcium;hydroxy(methyl)arsinate Chemical compound [Ca+2].C[As](O)([O-])=O.C[As](O)([O-])=O PKOMXLRKGNITKG-UHFFFAOYSA-L 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 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
- 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)
Description
で、並列処理技術を利用したプロセッサシステムに関す
るものである。また、本発明は、特に、多重化された命
令スレッドを同時に実行することのできるマイクロプロ
セッサの、VLIW(Very Long Instruction Word)に
基づいたア−キテクチャ−に関するものである。すなわ
ち、本発明においては、静的インタリ−ブの技術を、多
重化された命令スレッドへの、ハ−ドウェア資源の割り
当てに用いる。具体的には、プロセッサの各機能ユニッ
トを、タイムスロットのあらかじめ定めた固定繰り返し
パタ−ン中のあらかじめ定めた固定タイムスロット内の
特定のスレッドの命令に割り当てる。このハ−ドウェア
割り当ては、ポスト−パス並列コンパイラによって提示
される。ポスト−パス並列コンパイラは、命令間のデー
タ依存性と、ハ−ドウェア資源の割り当てを考慮して、
命令実行シ−ケンスの各スレッドを最適化する。
くのRISCス−パ−スカラプロセッサがそう設計され
ているように、1サイクルで2以上の命令を同時に実行
することにより、また、命令実行時間の短縮化により目
覚ましく向上した。また、今日、市販されているマイク
ロプロセッサは、既に、ス−パ−コンピュ−タシステム
によって得ることのできる性能レベルの主要な一部を達
成することができる。さらに、近い将来に、シングルチ
ップ技術に期待されるクロック速度やゲ−ト数の目覚ま
しい増加は、マイクロプロセッサ技術を、さらなるス−
パコンピュ−ティングの能力を有するコスト性能的にユ
ニ−クなツ−ルとするものと予想される。
MC88100に、ス−パ−スカラマイクロプロセッサ
で採用されている単一スレッドパイプライン命令送出ア
−キテクチャ−では、目覚ましい計算能力の向上は期待
できない。単一命令スレッドの並列処理数は、データと
制御の命令間の依存度によって制限される。この依存度
は、命令の発行レ−トを遅くし、プロセッサ内の機能ユ
ニットの利用度を劣化させる。すなわち、一つの機能ユ
ニットがビィジー状態である間、他のユニットは、この
ビィジー状態のユニットよりの結果待ちのために、アイ
ドル状態となる場合がある。
法は、複数の異なる命令スレッドをインタリ−ブするこ
とである。これにより、複数の命令スレッドを同時に実
行することができる。
する命令の集合として定義することができる。具体的に
は、一つの命令スレッドは、他の命令スレッドから独立
している。スレッドは、充分な並列処理性を示す単一の
プログラムや、異なるプログラムによって生成される。
単一のスレッド内の命令間におけるデータと制御の依存
度は、全ての機能ユニットへの命令の同時発行を妨げ
る。しかし、異なるスレッドに属する命令は、相互に独
立しており、複数の機能ユニットへ同時に発行すること
ができる。
ンテキストを切り替えるためのオ−バ−ヘッド成しに、
多重化された命令スレッドが同時に実行することができ
るよう、多重化されたコンテキストをハ−ドウェアによ
ってサポ−トする。同時に実行されるスレッド間で、コ
ンテキスト切り替えのオ−バヘッドが存在しないため、
プロセッサのスル−プットおよび実行速度を改善するた
めに、スレッド内、スレッド間の両方の命令レベルの並
列処理を活用することができる。
ルチップマイクロクプロセッサ内の資源の利用度を改善
するために、多くのマルチスレッドア−キテクチャ−が
提案されている。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)において、ラン
タイム中に命令をスケジュ−リングするためのディスパ
ッチスタックを用い、スパ−スカラ−プロセッサにおい
て二つのスレッドを同時に処理するシステムが開示され
ている。また、動的レジスタ割り当ての手法が、スレッ
ド内、スレッド間の両方の命令レベルの並列処理を活用
するために用いられている。
リ−ブと、スケジュ−リングの技術が、スレッド間での
資源の争奪の問題を解決するために用いられている。
説明する。
化された命令スレッドを同時に実行するマイクロプロセ
ッサ10を示している。
2,..,FU−Nの符号を付した複数の機能ユニット
14を有している。たとえば、このように8個の機能ユ
ニットを有し、これらの8個の機能ユニットは、メモリ
の読み出しと書き込みを行うロ−ド/ストアユニット、
データの移動と整数加算と減算操作を行う整数ユニッ
ト、ビットフィ−ルドの操作を行うロジックユニット、
データタイプに変換を行う整数/浮動小数点変換ユニッ
ト、浮動小数点加算ユニット、浮動小数点掛け算ユニッ
ト、浮動小数点割算ユニット、分岐ユニットを含み、各
ユニットは、パイプライン化されており、毎サイクルに
新しい命令を受けることができる。
トアユニットであり、図示せざるデータキャッシュをア
クセスする。機能ユニット14は、相互連絡ネットワ−
ク16を介してレジスタファイル18に接続している。
各命令スレッドは、レジスタファイル18内に、プライ
ベ−トなレジスタバンクを有するプロセッサ10によっ
て実行される。プロセッサ10は、1、2、3、..、
TのT個の命令スレッドを実行する。そして、レジスタ
ファイル18は、それぞれが命令スレッドの一つに対応
するT個のレジスタバンクを有している。
32ビット整数レジスタと、16個の64ビット浮動小
数点レジスタを有している。整数、論理、ロ−ド/スト
ア、分岐の各ユニットは、整数レジスタにのみアクセス
することができる。また、浮動小数点ユニットが使用で
きるのは、浮動小数点レジスタのみに限られている。そ
して、整数/浮動小数点変換ユニットのみが、両方のレ
ジスタにアクセスすることができる。ここで、整数レジ
スタと浮動小数点レジスタ間の全てのデータ転送は、整
数/浮動小数点変換ユニットによって行われる。
ットは、分散型命令セットコンピュ−タ用に開発された
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
ビット長である。
行する。コンパイラは2つの部分よりなる。前半部は、
たとえばC言語で記述された高級言語プログラムを、先
に示したような命令セットより取りだしたマシン命令の
シ−ケンスに翻訳する。コンパイラの後半部は、シ−ケ
ンシャルなコ−ドを、水平型命令語(HIWs)に変換
する。水平型命令語は、それぞれが特定の機能ユニット
に対応し、対応する特定の機能ユニットで実行されるマ
シン命令を格納することのできる、複数のフィ−ルドも
しくはセクションを有している。プロセッサ10で実行
される各命令スレッドは、これらの水平型命令語より成
る。コンパイラは、相互にデータの依存性を待たない複
数のマシン命令を組み合わせることにより水平型命令語
を生成する。したがい、ひとつの水平型命令語は、同じ
クロックサイクルに発行することができるデータ依存性
の無い複数の命令より成る。もし、ある特定の機能ユニ
ットへの命令が存在しない場合には、コンパイラはNO
OP命令(no opertion)を水平型命令語の
適当なセクションに挿入する。
レッドの水平型命令後語は、独立した命令キャッシュ2
0に格納される。各命令キャッシュ20は、前述したよ
うにコンパイルされた、1つに命令スレッドの複数の水
平型命令語を格納している。
タリ−ブユニット26の制御下で、対応する命令キャッ
シュよりの命令をフェッチする複数の命令フェッチユニ
ット24を有している。
ステ−ジを通される。
シュよりフェッチされる。
ジ;命令は、動的インタリ−ブユニット26によって、
可能な場合には他の命令スレッドよりの他の命令と共に
インタリ−ブされる。また、命令は、デコ−ドユニット
27によってデコ−ドされ、対応する機能ユニット14
に発行される。
トによって実行され、その結果がレジスタファイル18
に書き戻される。ここで、コンパイラは、適当なコ−ド
スケジュ−リングによって、機能ユニット間の競合を避
けている。
的インタリ−ブユニットは、たとえばラウンドロビン方
式等の、所定の優先制御方式に従って、一つのスレッド
を選択する。そして、動的インタリ−ブユニットは、そ
のスレッドの次の水平型命令語を調査し、可能な場合に
は、(コンパイラによって挿入された)全てのNOOP
命令を、他のスレッドの対応する非NOOP命令によっ
て置き換える。そして、この新たに組み合わせた水平型
命令語の各命令を、適切なデコ−ダ27に送る。各機能
ユニットのは、命令の属するスレッドを識別し、これに
相当する制御信号を生成する。
たものである。図2aに示すように、この例は、整数加
算/減算ユニットFU−1、論理ユニットFU−2、浮
動小数点/整数変換ユニットFU−3、浮動小数点加算
/減算ユニットFU−4の4つの機能ユニットが存在す
る場合のものである。また、それぞれ対応する命令バッ
ファもしくはキャッシュに格納された、1、2、3の符
号を付して示す3つの命令スレッドが存在する場合のも
のである。図2aに示すように、各命令バッファは、2
つの水平型命令語を格納し、各水平型命令語は、各機能
ユニットに対応するセクションを有している。
ラによって静的にスケジュ−リングされたものである。
この例は、インタリ−ブのためのスレッドの選択にラウ
ンドロビン戦略を用い、各スレッドは自身のレジスタセ
ットを有すると仮定した場合のものである。図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が、同時に機能ユニットデコ−ダ
に発行される。
て、動的インタリ−ブユニット中に、スレッド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つの要因により命令発行レ−
トを改善することができる。
的な操作は、それがNOOP命令であるかを調べる、命
令の部分デコ−ドである。もし、ある命令がNOOP命
令でない場合、その命令は、必要な制御信号を生成する
機能ユニットデコ−ダに発行される。もし、命令がNO
OP命令の場合には、より低い優先度のスレッドよりの
次の命令が、非NOOP命令が見つかるか、全てのスレ
ッドについて終了するまで、ドミノ式にチェックされ
る。この、全ての操作は、1クロックサイクル中に完了
しなければならない。図4は、これを実現することので
きる論理回路を示している。図4において、SW1、S
W2は、論理スイッチである。信号NDは、部分命令デ
コ−ドの結果たる、「NOOP検出」信号であり、P
は、優先度信号である。各クロックサイクルにおいて、
ただひとつのスレッドに対応する優先度信号が値HIG
Hとなり、他の優先度信号は値LOWとなる。信号IS
は、命令発行信号であり、これは、HIGHのとき、対
応するスレッドよりの命令が機能ユニットデコ−ダに発
行されることを示す。動的インタリ−ブユニットは図4
に示すような論理回路を、全ての機能ユニットに対して
有している。
タリ−ビングによれば、機能ユニットの高利用率を達成
することができるが、いくつかの問題が残っている。
めに必要となる高命令フェッチ帯域を、ハ−ドウェアが
サポ−トしなければならない点である。さらに、動的イ
ンタリ−ブユニットを実現するためには、次の水平型命
令語をフェッチし実行できるようにスレッドの一つの水
平型命令語の完成を検出するのに必要な、特別のハ−ド
ウェアを含む複雑なハ−ドウェアが必要となる。また、
同じ水平型命令語中の全ての命令が同じクロックサイク
ル中に発行されることが保証されていないので、ライト
後リ−ドという依存性を有する2つの命令を一つの水平
型命令語に含めることができない。同様に、2つの連続
する水平型命令語が、非連続サイクルにおいて発行され
得るので、命令を分岐ディレイスロットに格納すること
ができない。このような拘束は、マルチスレッドア−キ
テクチャ−の命令発行レ−トを低下させる。
連した、これらの問題を解決することができる、マイク
ロプロセッサのマルチスレッドア−キテクチャ−を提供
することを目的とする。
本発明は、複数の命令スレッドを同時に実行することの
できるマイクロプロセッサであって、複数の機能ユニッ
トを有するプロセッサと、複数の命令スレッドを形成す
る、それぞれが特定の一つの前記機能ユニットによって
実行される1以上のマシン命令を含む複数の水平型命令
語を記憶する手段と、所定の順序で所定の時間に、異な
る命令スレッドに属する前記水平型命令語を、前記記憶
する手段よりフェッチする手段と、タイムスロットの所
定の固定繰り返しパタ−ン中のあらかじめ定めた固定タ
イムスロット中の、特定の命令スレッドよりのマシン命
令の実行に、前記各機能ユニットを割り当てる手段とを
有することを特徴とするマイクロプロセッサを提供す
る。
nstruction word)マルチスレッドプロセッサア−キテク
チャ−における前記争奪の問題を解決するための、動的
インタリ−ブに代えて、静的インタリ−ブの技法を用い
る。静的インタリ−ブの技法においては、プロセッサの
各機能ユニットは、タイムスロットのあらかじめ定めた
固定繰り返しパタ−ン中のあらかじめ定めた固定タイム
スロット中の特定のスレッドよりのマシン命令の実行に
割り当てられる。特定の機能ユニットが、特定のタイム
スロット中の特定スレッドの命令を割り当てられる、タ
イムスロットのあらかじめ定めた固定繰り返しパタ−ン
は、計算資源の争奪問題を解決するためにハ−ドウェア
に課せられた資源の拘束を表している。この資源割り当
て戦略は、ハ−ドウェア資源のあらかじめ定めた固定割
り当てを考慮し、命令間のデータ依存性を維持するよう
に、マシン命令のシ−ケンスを水平型命令語に編成する
並列コンパイラにより提示される。
ロプロセッサに比べると、静的インタリ−ブを用いる本
発明のマイクロプロセッサは、ハ−ドウェアの複雑さを
軽減することができる。また、さらに、本静的インタリ
−ブの技法によれば、プログラムのコ−ドサイズを、顕
著に減少させることができる。
機能ユニットを、ラウンドロビン方式によって、スレッ
ドに割り当てる。機能ユニットが、選択したスレッドに
よって用いられない場合、NOOP命令が、その機能ユ
ニットで実行される。
り当てベクトル(AV)によって特性付けることができ
る。AVは、各機能ユニットFUiについて、エントリ
AViを有している。ここで、1≦AVi≦Tであり、
Tはハ−ドウェアによってサポ−トされるスレッドの数
である。プログラムの実行中において、時間tには、F
Uiは、スレッドτに割り当てられる。ここで、τ=
1,2,...,Tであり、次式で与えられる。
3,FU−4を有する4スレッドのア−キテクチャ−に
ついて考える。AV={1,4,2,2}を与えられた
場合の、特定のスレッドに対する機能ユニットの配置を
図5aに示す。図5aにおいて、テ−ブルの各エントリ
は、各タイムスロットにおいて、対応する機能ユニット
を使用することができるスレッドの番号を示している。
タイムスロットの機能ユニットへの割り当ては、それ自
身繰り返すパタ−ンを形成する。図5aにおいては、パ
タ−ンは各4タイムスロット毎に繰り返す。最適なAV
を決定するアルゴリズムを次に説明する。
ルするために、割り当てベクトルによって特定されるハ
−ドウェア資源の割り当てが、どうのように、ポスト−
パス並列コンパイラに与えられるかを示している。図5
bは、各機能ユニットに対応する4つのセクションを有
する、1、2、3、...の番号を付した水平型命令語
のリストを示している。本実施例では、並列コンパイラ
は、対応する機能ユニットによって実行されるマイクロ
命令を、斜線掛けしたセクションのみに格納することが
できる。斜線掛けしていないセクションはNOOP命令
を格納する。特定の斜線掛けセクションを有する水平型
命令語のパタ−ンは、T個の命令語毎に繰り返す。ここ
でTは、スレッドの数である。
タ−ンは、4つのHIWsより成り、並列コンパイラに
より、単一の水平型命令語にまとめられる。水平型命令
語の同じパタ−ンが、各スレッドを個々にスケジュ−リ
ングするために、コンパイラによって利用される。
は、この場合AV=(1,4,2,2)である割り当て
ベクトルから導き出される。Hk番目の水平型命令語
の、機能ユニットFUiに対応するフィ−ルドは、(H
k+T−1)modT+1がAViと等しいときに、斜
線掛けされる。本例ではTは4である。
れる資源割り当て戦略によって課される資源の制約は、
並列コンパイラの命令パタ−ンのシ−ケンスとして表現
される。各スレッドが、まずシ−ケンシャルにコンパイ
ルされ、生成されたシ−ケンシャルなコ−ドが、このパ
タ−ンに従って、水平型命令語中にスケジュ−ルされ
る。並列コンパイラにおいて、シ−ケンシャルコンパイ
ラによって生成された各スレッドについての命令は、命
令間の制御依存性とデータ依存性を維持するように、こ
のパタ−ン中にスケジュ−ルされる。そして、各パタ−
ンを形成する水平型命令語の組は、単一の水平型命令語
に圧縮される。この圧縮の詳細について説明する。
レッドがコンパイルされたなら、図5aに示すようにス
レッドを相互にインタリ−ブすることができる。ここで
も、割り当てベクトルへの依存性を利用する。すなわ
ち、スレッド#τの開始時間を、スレッド間の資源の争
奪を回避できるように、(τ−1)サイクル遅延する。
ブを利用するプロセッサ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を介し
てレジスタバンクにアクセスする。
140である。キュ−140は、割り当てベクトルによ
って定義される資源割り当てを実現するために設けられ
ている。すなわち、キュ−140は、タイムスロットの
パタ−ン中でその命令スレッドに対して確保されている
あらかじめ定めた固定スロット中の特定の命令スレッド
よりの命令が、各機能ユニットに発行されることを保証
する。
V=(1,4,2,2)とした。この場合、FU−1に
接続しているキュ−は、遅延1クロックサイクルを有し
ている。また、FU−2に接続しているキュ−は、遅延
4を、FU−3に接続しているキュ−は、遅延2を、F
U−4に接続しているキュ−は、遅延2を有している。
21で用いられているあらかじめ定めた順序で択一的
に、キャッシュ120よりフェッチされる。具体的に
は、水平型命令語は、キャッシュ#1から始まるラウン
ドロビンの順序でキャッシュよりフェッチされる。フェ
ッチされた各水平型命令語について、その中に含まれる
個々のマシン命令は、その命令を実行する機能ユニット
に接続したキュ−に与えられる。マシン命令語は、バス
132を介してキュ−140に転送される。個々の各マ
シン命令は、キュ−のあらかじめ定めた固定遅延によっ
て遅延された後に、適当な機能ユニットに発行される。
割り当てベクトルによって定まる遅延をキュ−に与え、
割り当てベクトルによって導かれるパタ−ンに従ってコ
ンパイルされた水平型命令語をあらかじめ定めた順所で
フェッチすることにより、特定のスレッドよりの個々の
マシン命令が、当該特定の命令スレッドに対して確保さ
れているあらかじめ定めた固定タイムスロットにおい
て、特定の機能ユニットに発行されることを保証するこ
とができる。
パイル時に命令の終了時を知ることができるので、並列
コンパイラが命令が実行シ−ケンスを最適化することが
できることである。
ンパイルと実行のステップを示したフロ−チャ−トであ
る。初めにC言語のような高級言語で記述されたプログ
ラム210を、シ−ケンシャルコンパイラでコンパイル
する(ステップ220)。シ−ケンシャルコンパイラ
は、高級プログラムをマシン命令のシ−ケンスに変換す
る。次に、並列コンパイラが、マシン命令のシ−ケンス
を水平型命令語に再編成する(ステップ230)。この
再編成は2ステップで実行される。最初のステップ(ス
テップ231)では、各マシン命令が、複数の水平型命
令語を含む、命令パタ−ン中の位置に置かれる。命令パ
タ−ン中のマシン命令の位置は、命令間のデータ依存性
と割り当てベクトルによって決定するハ−ドウェア資源
割り当てに従う。2番目のステップ(ステップ232)
では、各パタ−ンの水平型命令語は、一つの命令スレッ
ドを形成するように、単一の水平型命令語に圧縮され
る。並列コンパイラの処理後、命令スレッドの圧縮され
た水平型命令語は、キャッシュに格納され、先に説明し
たように機能ユニットによって実行される(ステップ2
40)。
令語が、どのように図5bに示したパタ−ン中に置かれ
るかを示したものである。図8aに示したシ−ケンス
は、図5bのHIWs1−4の斜線掛けしたセクション
に置かれる。斜線掛けしていないセクションにはNOO
P命令が受け入れられる。図8cは、図8bに示した4
つの命令語のパタ−ンが、単一の水平型命令語に圧縮さ
れるかを示したものである。圧縮は、多くのNOOP命
令を排除することによりコ−ドサイズを小さくする。
れた命令のシ−ケンス中のマシン命令Iiは、Hj番目
(図5b参照)の特定の水平型命令語中に、次のように
して置かれる。全てのマシン命令Ijは、データ依存性
を決定するために、既にスケジュ−ルされた全ての命令
と比較される。命令Ijは、シ−ケンスの先頭まで、も
しくは、命令Ijのと間にデータ依存性がある命令Ii
が見つかるまで、可能な限り上に移動される。したが
い、Ijをその中に配置することのできる水平型命令語
は、 Hj=Hi+L(D)(Ti)(Tj)−(式2) で表すことができる。
号、HjはIjを置くことのできるHIWの番号、Ti
は命令Iiのタイプ、Tjは命令Ijのタイプである。
また、DはIiとIjとの間のデータ依存性のタイプで
ある。ここで、データ依存性のタイプはリ−ドアフタ−
ライト(RAW)かライトアフタ−リ−ド(WAR)か
いずれかである。また、Lは、特定のAVの待ち時間
(レイテンシ)テ−ブルである。
源争奪関係を持つならば、Ijは、Tサイクル遅延され
る。もし、それでも競合するのであれば、Ijは、さら
にTサイクル遅延される。このような探索は、Ijを置
くことのできるHIWが見つかるまで続けられる。Hj
の計算において、待ち時間テ−ブルLが、IjとIiと
の間の待ち時間を決定するために用いられる。D,T
i,Tjと、ハ−ドウェアによって定義される、各命令
タイプの実行時間であるFU待ち時間とが与えられる
と、L(D)(Ti)(Tj)が、表1に示すCプログ
ラムによって計算される。
的数値変数である。計算された待ち時間は、ハ−ドウェ
アによって定義される実行タイムとは異なる。待ち時間
テ−ブルの計算においては、依存のタイプ(すなわち、
D=1の場合のRAW、D=2の場合のWAR)、各命
令の実行時間、AVを考慮する。一度待ち時間テ−ブル
が計算できたら、並列コンパイラは、式2を用いて実行
スケジュ−ル中における各命令の位置を決定するのに、
これを用いることができる。
待ち時間(Ti)=1、D=1(データ依存性がRA
W)の場合の、待ち知時間テ−ブルL(1)(Ti)
(Tj)を示したものである。この場合、命令タイプT
i、Tjは、これらの命令を実行する機能ユニットFU
i,FUjによって識別される。したがい、たとえば、
FU−3で実行されるIiとFU−2で実行されるIj
との間の待ち時間は2サイクルである。
る。図10は、ほんの短いプログラムについて、シ−ケ
ンシャルコンパイラが生成したマシン命令のシ−ケンス
を示している。図11は、ポストパス並列プロセッサに
よって生成された圧縮後の水平型命令語を示している。
て、割り当てベクトルは重要である。割り当てベクトル
を選ぶ一つの方法は、最も多発するリ−ドアフタ−ライ
ト(RAW)依存の待ち時間を減少させるように割り当
てベクトルを選ぶことである。すなわち、命令間のRA
W依存の分布は、複数のベンチマ−クテストによって得
ることができるので、AVは、式3(数1)が最小とな
るように選ぶ。
ンタリ−ブによって生じる各種問題を、静的インタリ−
ブの技法によって解決することのできる、マルチスレッ
ドマイクロプロセッサを提供することができる。
ドマイクロプロセッサア−キテクチャ−を示すブロック
図である。
的インタリ−ブユニットの構成を示すブロック図であ
る。
いるパタ−ンを示す説明図である。
るマイクロプロセッサの構成を示すブロック図である。
ルおよび実行操作を示すフロ−チャ−トである。
示した説明図である。
時間テ−ブルを示す説明図である。
パイル後のマシン命令のシ−ケンス例を示す説明図であ
る。
の例を示す説明図である
Claims (9)
- 【請求項1】複数の命令スレッドを同時に実行すること
のできるマイクロプロセッサであって、 複数の機能ユニットを有するプロセッサと、 複数の命令スレッドを形成する、それぞれが特定の1つ
の前記機能ユニットによって実行される1以上のマシン
命令を含む複数の水平型命令語を記憶する手段と、 異なる命令スレッドに属する前記水平型命令語を、予め
定めた順序で予め定めた時間に、前記記憶する手段より
フェッチする手段と、 特定の命令スレッドに含まれるマシン命令を、予め定め
た繰り返しパタ−ンで繰り返される時間枠(タイムスロ
ット)群中の予め定めた固定タイムスロットで実行する
ために、前記機能ユニットのそれぞれを割り当てる手段
とを有することを特徴とするマイクロプロセッサ。 - 【請求項2】請求項1記載のマイクロプロセッサであっ
て、 前記割り当てる手段は、前記各マシン命令が、適切なタ
イムスロットにおいて適切な前記機能ユニットに提供さ
れるように、前記命令スレッドの各水平型命令語に含ま
れる各マシン命令に、予め定めた量の固定遅延を与える
キュ−イング手段を備えていることを特徴とするマイク
ロプロセッサ。 - 【請求項3】請求項1記載のマイクロプロセッサであっ
て、 前記フェッチする手段は、ラウンドロビン方式にしたが
った順序で、前記記憶する手段より、前記水平型命令語
をフェッチすることを特徴とするマイクロプロセッサ。 - 【請求項4】請求項1記載のマイクロプロセッサであっ
て、 前記記憶する手段は、それぞれが前記複数の命令スレッ
ドのうちの1つの命令スレッドについて用いられる、複
数の独立したキャッシュを有していることを特徴とする
マイクロプロセッサ。 - 【請求項5】請求項1記載のマイクロプロセッサであっ
て、 各命令スレッドの前記水平型命令語は、マシン命令のシ
−ケンスを、複数の水平型命令語を含む、命令パタ−ン
のシ−ケンスに再編成するコンパイラによってコンパイ
ルされており、各マシン命令のパターン中の位置は、他
のマシン命令との間のデータ依存性と、特定の命令スレ
ッドの命令を実行する特定の機能ユニットに割り当てら
れた特定のタイムスロットとに応じて設定されるもので
あることを特徴とするマイクロプロセッサ。 - 【請求項6】複数の機能ユニットを具備し、該複数の機
能ユニットの各々に対して割り当てられるべき命令スレ
ッドを示す割り当てベクトルに従い、予め定めた繰り返
しパタ−ンで繰り返されるタイムスロット群中の予め定
めた特定の固定タイムスロットで、前記命令スレッドに
含まれる特定の命令を実行するように、該複数の機能ユ
ニットに複数の命令スレッドが割り当てられるマルチス
レッドプロセッサシステムにおいて、複数の命令スレッ
ドのうちの1つの命令スレッドをコンパイルし実行する
方法であって、 シ−ケンシャルコンパイラを用いて、ソ−スプログラム
を、前記プロセッサシステムの特定の機能ユニットによ
って実行できるマシン命令のシ−ケンスにコンパイルす
るステップと、 並列コンパイラを用いて、前記マシン命令のシ−ケンス
を、前記マシン命令のシ−ケンス中の先行する命令との
間のデータ依存性と、適切な機能ユニットを命令の実行
に用いることができるように前記割り当てベクトルで定
義されたタイムスロットとに応じて設定された位置に各
命令が配されている、命令パタ−ンのシ−ケンスに再編
成するステップと、 前記並列コンパイラを用いて、1つの命令スレッドを形
成するために、前記命令パタ−ンの各々の命令を、1つ
の水平型命令語に圧縮するステップと、 前記1つの命令スレッドの命令をキャッシュに記憶する
ステップと、 前記1つの命令スレッドの命令を前記機能ユニットで実
行するステップとを有することを特徴とする命令スレッ
ド実行方法。 - 【請求項7】複数の機能ユニットと、各命令スレッドを
構成する、特定の前記機能ユニットによって実行される
1以上の命令を含んだ水平型命令語を記憶する複数のキ
ャッシュシステムと、を有するマルチスレッドプロセッ
サにおいて、同時に複数の命令スレッドを実行する方法
であって、 あらかじめ定めた時間にあらかじめ定めた順序で、異な
る命令スレッドに属する水平型命令語を、前記キャッシ
ュシステムよりフェッチするステップと、 あらかじめ定めた繰り返しパタ−ンで繰り返されるタイ
ムスロット群中のあらかじめ定めた固定タイムスロット
で、特定の命令スレッドに含まれる命令を実行するため
に、各機能ユニットを割り当てるステップと、 前記水平型命令語中の命令を、前記機能ユニットで、前
記割り当てられたタイムスロットに実行するステップと
を有することを特徴とする命令スレッド実行方法。 - 【請求項8】請求項7記載の命令スレッド実行方法であ
って、 各命令スレッドは、 シ−ケンシャルコンパイラを用いて、ソ−スプログラム
を、前記プロセッサの特定の機能ユニットによって実行
できるマシン命令のシ−ケンスにコンパイルするステッ
プと、 並列コンパイラを用いて、前記マシン命令のシ−ケンス
を、前記マシン命令のシ−ケンス中の先行する命令との
間のデータ依存性と、適切な機能ユニットを命令の実行
に用いることができるように前記割り当てベクトルで定
義されたタイムスロットとに応じて設定された位置に各
命令が配されている、命令パタ−ンのシ−ケンスに再編
成するステップと、 前記並列コンパイラを用いて、1つの命令スレッドを形
成するために、前記命令パタ−ンの各々の命令を、1つ
の水平型命令語に圧縮するステップとによってコンパイ
ルされることを特徴とする命令スレッド実行方法。 - 【請求項9】複数の命令スレッドを実行するマイクロプ
ロセッサであって、 複数の機能ユニットと、 それぞれが1つの命令スレッドの水平型命令語を記憶す
る、複数の命令キャッシュと、 対応する前記命令キャッシュより、前記水平型命令語を
フェッチする、複数の命令フェッチユニットと、 予め定めた繰り返しパタ−ンで繰り返されるタイムスロ
ット群中のあらかじめ定めた固定タイムスロットで、特
定の命令スレッドに含まれるマシン命令を実行するよう
に、前記水平型命令語のマシン命令のリ−ドアフタ−ラ
イト依存性に起因する待ち時間を最小化する割り当てベ
クトルに応じて、前記各機能ユニットを割り当てる割り
当て手段とを有することを特徴とするマイクロプロセッ
サ。
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 JPH07191847A (ja) | 1995-07-28 |
JP2928695B2 true 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) |
Families Citing this family (129)
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 |
EP1186995B1 (en) * | 1993-11-05 | 2003-09-03 | Intergraph Corporation | Instruction memory with associative cross-bar switch |
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 |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
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 |
US6105127A (en) * | 1996-08-27 | 2000-08-15 | Matsushita Electric Industrial Co., Ltd. | 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 |
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 |
US5924117A (en) * | 1996-12-16 | 1999-07-13 | International Business Machines Corporation | Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto |
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 |
WO1998043193A2 (en) * | 1997-03-21 | 1998-10-01 | University Of Maryland | 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 |
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 |
US5940626A (en) * | 1997-11-03 | 1999-08-17 | Teragen Corporation | Processor having an instruction set architecture implemented with hierarchically organized primitive operations |
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 |
US6067601A (en) * | 1997-11-03 | 2000-05-23 | Brecis Communications | Cache memory based instruction execution |
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 |
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 |
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 |
US6282554B1 (en) * | 1998-04-30 | 2001-08-28 | Intel Corporation | Method and apparatus for floating point operations and format conversion operations |
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 |
US6292815B1 (en) * | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
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 |
JP2002532775A (ja) * | 1998-12-08 | 2002-10-02 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | インタープリタプログラム実行方法 |
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 |
US6341347B1 (en) * | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded 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 |
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 |
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 |
US6449691B1 (en) | 1999-07-30 | 2002-09-10 | International Business Machines Corporation | Asymmetrical cache properties within a hashed storage subsystem |
US6516404B1 (en) | 1999-07-30 | 2003-02-04 | International Business Machines Corporation | Data processing system having hashed architected processor facilities |
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 |
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) |
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 |
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 |
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 |
US6694380B1 (en) * | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US7051329B1 (en) | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US7620702B1 (en) | 1999-12-28 | 2009-11-17 | Intel Corporation | Providing real-time control data for a network processor |
US6661794B1 (en) * | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6584522B1 (en) | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US7480706B1 (en) | 1999-12-30 | 2009-01-20 | Intel Corporation | Multi-threaded round-robin receive for fast network port |
US6952824B1 (en) | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
DE10000960C1 (de) * | 2000-01-12 | 2001-12-20 | Infineon Technologies Ag | Datenverarbeitungsvorrichtung |
US20010049757A1 (en) * | 2000-03-01 | 2001-12-06 | Ming-Kang Liu | Programmable task scheduler for use with multiport xDSL processing system |
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 |
US7007153B1 (en) * | 2000-03-30 | 2006-02-28 | Agere Systems Inc. | Method and apparatus for allocating functional units in a 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 |
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 |
US6675285B1 (en) * | 2000-04-21 | 2004-01-06 | Ati International, Srl | Geometric engine including a computational module without memory contention |
US7111156B1 (en) * | 2000-04-21 | 2006-09-19 | Ati Technologies, Inc. | Method and apparatus for multi-thread accumulation buffering in a computation engine |
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 |
US7035998B1 (en) | 2000-11-03 | 2006-04-25 | Mips Technologies, Inc. | Clustering stream and/or instruction queues for multi-streaming processors |
US7139898B1 (en) * | 2000-11-03 | 2006-11-21 | Mips Technologies, Inc. | Fetch and dispatch disassociation apparatus for multistreaming 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 |
US6842848B2 (en) * | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
US6904511B2 (en) * | 2002-10-11 | 2005-06-07 | Sandbridge Technologies, Inc. | Method and apparatus for register file port reduction in a multithreaded processor |
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 |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
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 |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
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 |
WO2009107462A1 (ja) | 2008-02-26 | 2009-09-03 | 日本電気株式会社 | 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム |
WO2010021119A1 (ja) * | 2008-08-21 | 2010-02-25 | パナソニック株式会社 | 命令制御装置 |
CN105677253B (zh) * | 2016-01-07 | 2018-09-18 | 浪潮(北京)电子信息产业有限公司 | 一种io指令处理队列的优化方法及装置 |
Family Cites Families (2)
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 |
-
1992
- 1992-02-25 US US07/840,903 patent/US5404469A/en not_active Expired - Fee Related
- 1992-05-22 DE DE4217012A patent/DE4217012C2/de not_active Expired - Lifetime
-
1993
- 1993-01-07 JP JP5001268A patent/JP2928695B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5404469A (en) | 1995-04-04 |
DE4217012A1 (de) | 1993-08-26 |
JPH07191847A (ja) | 1995-07-28 |
DE4217012C2 (de) | 1998-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2928695B2 (ja) | 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 | |
US7363467B2 (en) | Dependence-chain processing using trace descriptors having dependency descriptors | |
JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
US6988183B1 (en) | Methods for increasing instruction-level parallelism in microprocessors and digital system | |
US5519864A (en) | Method and apparatus for scheduling the dispatch of instructions from a reservation station | |
EP1023659B1 (en) | Efficient processing of clustered branch instructions | |
US8677330B2 (en) | Processors and compiling methods for processors | |
US9811340B2 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
JP4841861B2 (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
CN100461094C (zh) | 一种针对流处理器的指令控制方法 | |
JP2017027636A (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
JP3777541B2 (ja) | マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置 | |
US6950926B1 (en) | Use of a neutral instruction as a dependency indicator for a set of instructions | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
US5041968A (en) | Reduced instruction set computer (RISC) type microprocessor executing instruction functions indicating data location for arithmetic operations and result location | |
KR19980018874A (ko) | 파이프라인 방식 프로세서 (processor with pipelining-structure) | |
JPH1097423A (ja) | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
JP2828219B2 (ja) | オブジェクト・コード互換性を与える方法、オブジェクト・コード互換性並びにスカラ・プロセッサ及びスーパスカラ・プロセッサとの互換性を与える方法、ツリー命令を実行するための方法、データ処理システム | |
JPH11242599A (ja) | コンピュータプログラム製品 | |
JP2861234B2 (ja) | 命令処理装置 | |
JP3743155B2 (ja) | パイプライン制御型計算機 |
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 |