JPH05224923A - ハイブリッドパイプライン接続プロセッサおよびその処理方法 - Google Patents
ハイブリッドパイプライン接続プロセッサおよびその処理方法Info
- Publication number
- JPH05224923A JPH05224923A JP4277539A JP27753992A JPH05224923A JP H05224923 A JPH05224923 A JP H05224923A JP 4277539 A JP4277539 A JP 4277539A JP 27753992 A JP27753992 A JP 27753992A JP H05224923 A JPH05224923 A JP H05224923A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- threads
- thread
- program
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 5
- 230000006378 damage Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique 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/3802—Instruction prefetching
-
- 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
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)【要約】
【目的】 分岐、割込み等により発生するパイプライン
の破壊,切断を阻止する。 【構成】 ハイブリッドパイプライン接続プロセッサお
よびそれに関連の処理方法であって、複数のプログラム
命令スレッドを実質的に同時に時分割の形態で別個に取
扱う。ハイブリッドアーキテクチャは命令フェッチユニ
ット12,命令デコードユニット16および実行ユニッ
ト20を含む。実行ユニット20は複数セットのレジス
タファイル40を含み、その各々は複数nの命令スレッ
ドの中の対応する一つに対するワーキング内容を含む。
タイミングおよび制御回路22はプロセッサの基本的な
構成要素の各々と結合し、複数nの命令スレッドからの
命令についての動作のタイミングおよびシーケンス制御
を行うので、複数nの命令スレッドは実質的に同時に別
個に取扱われる。
の破壊,切断を阻止する。 【構成】 ハイブリッドパイプライン接続プロセッサお
よびそれに関連の処理方法であって、複数のプログラム
命令スレッドを実質的に同時に時分割の形態で別個に取
扱う。ハイブリッドアーキテクチャは命令フェッチユニ
ット12,命令デコードユニット16および実行ユニッ
ト20を含む。実行ユニット20は複数セットのレジス
タファイル40を含み、その各々は複数nの命令スレッ
ドの中の対応する一つに対するワーキング内容を含む。
タイミングおよび制御回路22はプロセッサの基本的な
構成要素の各々と結合し、複数nの命令スレッドからの
命令についての動作のタイミングおよびシーケンス制御
を行うので、複数nの命令スレッドは実質的に同時に別
個に取扱われる。
Description
【0001】
【産業上の利用分野】この発明は、一般的にはパイプラ
イン接続プロセッサおよびパイプライン処理方法に関
し、およびより詳しくは、複数のプログラム命令スレッ
ド(thread)を受付けるように構成した、単一の
ハイブリッドパイプライン接続プロセッサおよびその処
理方法に関する。
イン接続プロセッサおよびパイプライン処理方法に関
し、およびより詳しくは、複数のプログラム命令スレッ
ド(thread)を受付けるように構成した、単一の
ハイブリッドパイプライン接続プロセッサおよびその処
理方法に関する。
【0002】
【従来の技術】パイプラインデータ処理システムは、従
来技術においてよく知られており、たとえば、米国特許
4,594,655号および4,646,236号およ
びそれらの中で議論されている参照文献を見て頂きた
い。パイプライン接続の技法はデジタル信号プロセッサ
(DSP)技術においてよく知られている。典型的に
は、パイプラインプロセッサは、命令実行機能を3つの
パイプラインフェーズ(pipeline phas
e)に分離することにより実行速度を増大させる。この
フェーズ分割により、前の命令をデコードし(D)、お
よびそれより前の命令を実行する(E)間にある命令を
フェッチする(F)。図1に示すように、単一の命令を
処理する(すなわち、フェッチし、デコードしおよび実
行する)ための経過時間は3マシンサイクルである。し
かしながら、3つのパイプライン接続フェーズが重複し
て演算を行うので、平均のスループットはマシンサイク
ルあたり1命令である。
来技術においてよく知られており、たとえば、米国特許
4,594,655号および4,646,236号およ
びそれらの中で議論されている参照文献を見て頂きた
い。パイプライン接続の技法はデジタル信号プロセッサ
(DSP)技術においてよく知られている。典型的に
は、パイプラインプロセッサは、命令実行機能を3つの
パイプラインフェーズ(pipeline phas
e)に分離することにより実行速度を増大させる。この
フェーズ分割により、前の命令をデコードし(D)、お
よびそれより前の命令を実行する(E)間にある命令を
フェッチする(F)。図1に示すように、単一の命令を
処理する(すなわち、フェッチし、デコードしおよび実
行する)ための経過時間は3マシンサイクルである。し
かしながら、3つのパイプライン接続フェーズが重複し
て演算を行うので、平均のスループットはマシンサイク
ルあたり1命令である。
【0003】
【発明が解決しようとする課題】この処理速度の改良
は、パイプライン接続アーキテクチャを使用することの
動機づけとなっているが、この利益と共に多数の制限が
生じることになる。
は、パイプライン接続アーキテクチャを使用することの
動機づけとなっているが、この利益と共に多数の制限が
生じることになる。
【0004】特に、パイプライン接続プロセッサは、ハ
ードウエアにより強いられる制約に起因してプログラム
することが一層難しい。その例としては、以下の制約が
典型的である。
ードウエアにより強いられる制約に起因してプログラム
することが一層難しい。その例としては、以下の制約が
典型的である。
【0005】(1) 標準の逐次シーケンスプログラム
中の、分岐命令の後に配置された命令は、いつも実行さ
れる。その理由は、分岐命令が分岐とデコードされる前
に(図1参照、そこでは、Dは分岐命令であるとデコー
ドするものと仮定する。)、その命令がフェッチされる
からである。フェーズ分割の故に、F* で示される命令
は分岐命令Dのデコードと同時にパイプライン接続プロ
セッサに持ち込まれる。次の2つのマシンサイクルで、
この命令F* は、無効にされてオーバーライドされない
限りは、デコードされ(D* )、次いで実行される(E
* )。時々、有効な命令を分岐命令以降に置くことはで
きるが、そのような命令を見付け出すことは困難かもし
れないし、および、プログラムの読取能力を損ねるかも
しれない。しばしばこの位置にはノーオペレーション
(NOP)命令が単に埋め込まれる。
中の、分岐命令の後に配置された命令は、いつも実行さ
れる。その理由は、分岐命令が分岐とデコードされる前
に(図1参照、そこでは、Dは分岐命令であるとデコー
ドするものと仮定する。)、その命令がフェッチされる
からである。フェーズ分割の故に、F* で示される命令
は分岐命令Dのデコードと同時にパイプライン接続プロ
セッサに持ち込まれる。次の2つのマシンサイクルで、
この命令F* は、無効にされてオーバーライドされない
限りは、デコードされ(D* )、次いで実行される(E
* )。時々、有効な命令を分岐命令以降に置くことはで
きるが、そのような命令を見付け出すことは困難かもし
れないし、および、プログラムの読取能力を損ねるかも
しれない。しばしばこの位置にはノーオペレーション
(NOP)命令が単に埋め込まれる。
【0006】(2) 分岐命令に関連して以上に説明し
たのと同様の理由で、割込みは、割込みベクトルの処理
後にNOP命令を強制するのが代表的である。
たのと同様の理由で、割込みは、割込みベクトルの処理
後にNOP命令を強制するのが代表的である。
【0007】(3) もし、命令によりインデックスレ
ジスタを変更(インクリメントまたはロード)する場
合、その命令を用いて次の命令に対するアドレスを発生
することはできない。これは、パイプラインのフェーズ
3の処理の間、対応するレジスタが更新されるためであ
り、そして、それ故に同じマシンサイクルで(すなわ
ち、そのフェーズ2の開始時点で)アドレスを発生する
ことはできない。ここでもまた、正しいインデックスが
確実に用いられるようにするためには、NOP命令が必
要になる。
ジスタを変更(インクリメントまたはロード)する場
合、その命令を用いて次の命令に対するアドレスを発生
することはできない。これは、パイプラインのフェーズ
3の処理の間、対応するレジスタが更新されるためであ
り、そして、それ故に同じマシンサイクルで(すなわ
ち、そのフェーズ2の開始時点で)アドレスを発生する
ことはできない。ここでもまた、正しいインデックスが
確実に用いられるようにするためには、NOP命令が必
要になる。
【0008】(4) 条件は典型的にはフェーズ3のA
LUプロセッサの演算の結果であるので、条件付きの分
岐の演算は、上述と類似の問題および同じ制約を有す
る。
LUプロセッサの演算の結果であるので、条件付きの分
岐の演算は、上述と類似の問題および同じ制約を有す
る。
【0009】ここに論じてきた各例において、先の命令
の結果を次の命令により使用する前に、当該先の命令の
結果を安定化させるためには、1マシンサイクルの時間
遅延を必要とすることから処理の問題が生じる。本発明
によれば、時分割の形態で、実質的に同時に複数の命令
経路長を交互に取扱うようにパイプライン接続プロセッ
サを構築することにより上述した制約のすべてが有効に
除去される。
の結果を次の命令により使用する前に、当該先の命令の
結果を安定化させるためには、1マシンサイクルの時間
遅延を必要とすることから処理の問題が生じる。本発明
によれば、時分割の形態で、実質的に同時に複数の命令
経路長を交互に取扱うようにパイプライン接続プロセッ
サを構築することにより上述した制約のすべてが有効に
除去される。
【0010】
【課題を解決するための手段】簡単に述べると、この発
明は、第1の基本的な形態において、実質的に同時に複
数n個のプログラム命令スレッドを処理するハイブリッ
ドパイプライン接続プロセッサを具える。命令スレッド
の各々は、たとえば、パイプライン接続プロセッサに結
合された命令メモリに記憶された一連の命令により定義
される。このプロセッサは命令メモリから命令をフェッ
チするひとつの命令フェッチユニットおよびフェッチさ
れた命令をデコードするひとつの命令デコードユニット
を含む。第1のパイプラインは、フェッチされた命令を
受取り、ラッチして命令デコードユニットにより次に読
取りがなされるように結合される。実行ユニットは命令
デコードユニットによりデコードされた命令を実行す
る。実行ユニットはnセットのレジスタファイルを含
み、その各々は、複数n個の命令スレッドの中の対応す
るひとつの命令スレッドに対する作業内容を含む。第2
のパイプラインにより命令デコードユニットおよび実行
ユニットの間を結合して、デコードされた命令をラッチ
し、実行ユニットによる次の読取りがなされるようにす
る。タイミングおよび制御回路は、命令フェッチユニッ
ト、命令デコードユニットおよび実行ユニットの各々に
結合されて、複数n個の命令スレッドの命令についての
動作のタイミングおよびシーケンスを制御して、複数の
命令スレッドは、複数n個の命令スレッドの命令間をハ
イブリッドパイプライン接続プロセッサで切替えて、実
質的に同時に時分割の形態で、別個に取扱う。ハイブリ
ッドアーキテクチャの多数の特定の特徴および改良され
た特徴についても記述され、かつ特許請求を行う。
明は、第1の基本的な形態において、実質的に同時に複
数n個のプログラム命令スレッドを処理するハイブリッ
ドパイプライン接続プロセッサを具える。命令スレッド
の各々は、たとえば、パイプライン接続プロセッサに結
合された命令メモリに記憶された一連の命令により定義
される。このプロセッサは命令メモリから命令をフェッ
チするひとつの命令フェッチユニットおよびフェッチさ
れた命令をデコードするひとつの命令デコードユニット
を含む。第1のパイプラインは、フェッチされた命令を
受取り、ラッチして命令デコードユニットにより次に読
取りがなされるように結合される。実行ユニットは命令
デコードユニットによりデコードされた命令を実行す
る。実行ユニットはnセットのレジスタファイルを含
み、その各々は、複数n個の命令スレッドの中の対応す
るひとつの命令スレッドに対する作業内容を含む。第2
のパイプラインにより命令デコードユニットおよび実行
ユニットの間を結合して、デコードされた命令をラッチ
し、実行ユニットによる次の読取りがなされるようにす
る。タイミングおよび制御回路は、命令フェッチユニッ
ト、命令デコードユニットおよび実行ユニットの各々に
結合されて、複数n個の命令スレッドの命令についての
動作のタイミングおよびシーケンスを制御して、複数の
命令スレッドは、複数n個の命令スレッドの命令間をハ
イブリッドパイプライン接続プロセッサで切替えて、実
質的に同時に時分割の形態で、別個に取扱う。ハイブリ
ッドアーキテクチャの多数の特定の特徴および改良され
た特徴についても記述され、かつ特許請求を行う。
【0011】他の形態では、本発明は、ハイブリッドア
ーキテクチャに関連するある新規な処理方法を具える。
たとえば、第1の方法は、パイプライン接続プロセッサ
内で複数n個のプログラム命令スレッドの実質的に同時
の処理を提供する。ここでもまた、命令スレッドの各々
は、パイプライン接続プロセッサに関連する命令メモリ
に含まれる一連の命令により定義される。パイプライン
接続プロセッサはnレジスタファイルセットを含み、n
レジスタファイルセットの各々は、複数n個の命令スレ
ッドの対応するひとつに対する作業内容を含む。上記方
法は、プログラム命令スレッドの中のひとつから命令を
フェッチするステップと、プログラム命令スレッドの中
の異なるひとつから別の命令をフェッチしている間、そ
れと同時に、フェッチされた命令をデコードするステッ
プと、プログラム命令スレッドの中の異なるひとつから
フェッチした別の命令をデコードし、およびプログラム
命令スレッドのひとつから新たな命令をフェッチしてい
る間に、それと同時に、プログラム命令スレッドのひと
つからフェッチされてデコードされた命令を実行するス
テップであって、該実行ステップは、実行された命令の
作業結果を、n個のレジスタファイルセットの中のひと
つに記憶するステップを含むステップと、新たにフェッ
チされた命令をデコードし、および複数のプログラム命
令スレッドの中のひとつから別の新しい命令をフェッチ
している間に、それと同時に、複数n個のプログラム命
令スレッドの異なるひとつからフェッチされてデコード
された命令を実行するステップであって、該実行ステッ
プは実行された別の命令の作業結果を、n個のレジスタ
ファイルセットの中のひとつに記憶するステップを含む
ステップと、プログラム命令スレッド内の複数の命令に
対して上述した2つの実行ステップを繰り返して、単一
のパイプライン接続プロセッサ内で時分割の形態で実質
的に同時に複数のプログラム命令スレッドを別個に取扱
うステップとを具える。
ーキテクチャに関連するある新規な処理方法を具える。
たとえば、第1の方法は、パイプライン接続プロセッサ
内で複数n個のプログラム命令スレッドの実質的に同時
の処理を提供する。ここでもまた、命令スレッドの各々
は、パイプライン接続プロセッサに関連する命令メモリ
に含まれる一連の命令により定義される。パイプライン
接続プロセッサはnレジスタファイルセットを含み、n
レジスタファイルセットの各々は、複数n個の命令スレ
ッドの対応するひとつに対する作業内容を含む。上記方
法は、プログラム命令スレッドの中のひとつから命令を
フェッチするステップと、プログラム命令スレッドの中
の異なるひとつから別の命令をフェッチしている間、そ
れと同時に、フェッチされた命令をデコードするステッ
プと、プログラム命令スレッドの中の異なるひとつから
フェッチした別の命令をデコードし、およびプログラム
命令スレッドのひとつから新たな命令をフェッチしてい
る間に、それと同時に、プログラム命令スレッドのひと
つからフェッチされてデコードされた命令を実行するス
テップであって、該実行ステップは、実行された命令の
作業結果を、n個のレジスタファイルセットの中のひと
つに記憶するステップを含むステップと、新たにフェッ
チされた命令をデコードし、および複数のプログラム命
令スレッドの中のひとつから別の新しい命令をフェッチ
している間に、それと同時に、複数n個のプログラム命
令スレッドの異なるひとつからフェッチされてデコード
された命令を実行するステップであって、該実行ステッ
プは実行された別の命令の作業結果を、n個のレジスタ
ファイルセットの中のひとつに記憶するステップを含む
ステップと、プログラム命令スレッド内の複数の命令に
対して上述した2つの実行ステップを繰り返して、単一
のパイプライン接続プロセッサ内で時分割の形態で実質
的に同時に複数のプログラム命令スレッドを別個に取扱
うステップとを具える。
【0012】さらに、単一パイプライン接続プロセッサ
内で2重(dual)命令スレッドを実質的に同時に処
理する方法が提供される。この方法では、第1の命令ス
レッドは、パイプライン接続プロセッサに関連する命令
メモリ内に含まれる命令の第1の系列により定義され、
および第2の命令スレッドは、その命令メモリ内に含ま
れる命令の第2の系列により定義される。この方法は、
第1の命令スレッドから命令をフェッチするステップ
と、第2の命令スレッドから命令をフェッチしている間
に、それと同時に、第1の命令スレッドからフェッチさ
れた命令をデコードするステップと、第2の命令スレッ
ドからフェッチされた命令をデコードし、および第1の
命令スレッドから別の命令をフェッチしている間に、そ
れと同時に、第1の命令スレッドからフェッチされて、
デコードされた命令を実行するステップと、第1の命令
ステッドからフェッチされた別の命令をデコードし、お
よび第2の命令スレッドから別の命令をフェッチしてい
る間に、それと同時に、第2の命令スレッドからフェッ
チされてデコードされた命令を実行するステップと、第
1の命令スレッドおよび第2の命令スレッドにおける複
数の命令に対して上述した2つの実行ステップを繰り返
して、単一のパイプライン接続プロセッサ内で時分割の
形態で実質的に同時に2つの命令スレッドを別個に処理
するステップとを具える。
内で2重(dual)命令スレッドを実質的に同時に処
理する方法が提供される。この方法では、第1の命令ス
レッドは、パイプライン接続プロセッサに関連する命令
メモリ内に含まれる命令の第1の系列により定義され、
および第2の命令スレッドは、その命令メモリ内に含ま
れる命令の第2の系列により定義される。この方法は、
第1の命令スレッドから命令をフェッチするステップ
と、第2の命令スレッドから命令をフェッチしている間
に、それと同時に、第1の命令スレッドからフェッチさ
れた命令をデコードするステップと、第2の命令スレッ
ドからフェッチされた命令をデコードし、および第1の
命令スレッドから別の命令をフェッチしている間に、そ
れと同時に、第1の命令スレッドからフェッチされて、
デコードされた命令を実行するステップと、第1の命令
ステッドからフェッチされた別の命令をデコードし、お
よび第2の命令スレッドから別の命令をフェッチしてい
る間に、それと同時に、第2の命令スレッドからフェッ
チされてデコードされた命令を実行するステップと、第
1の命令スレッドおよび第2の命令スレッドにおける複
数の命令に対して上述した2つの実行ステップを繰り返
して、単一のパイプライン接続プロセッサ内で時分割の
形態で実質的に同時に2つの命令スレッドを別個に処理
するステップとを具える。
【0013】
【作用】要約すると、本発明は、複数のプログラム命令
スレッドを受付けるように構成した新規なハイブリッド
パイプライン接続プロセッサおよびそれに関連するある
新規な処理方法を具える。複数の命令スレッドを同時に
処理できることにより、ハイブリッドアーキテクチャお
よびそれに関連する方法は、パイプライン接続プロセッ
サの従来の欠点を効果的になくす。複数の命令スレッド
は実質的に同時に時分割の形態で別個に取扱われるの
で、パイプライン接続プロセッサはプログラム命令スレ
ッド間で効果的に切替えを行う。このようにして分岐、
割込みおよびある条件付のデコードなどの命令に関連し
たパイプラインの切断はマスクされる。その結果、ハイ
ブリッドパイプライン接続プロセッサは、従来のパイプ
ライン接続プロセッサによって得られるよりも優れた性
能特性を有する、単一の高速集積回路チップとして実施
することが可能になる。
スレッドを受付けるように構成した新規なハイブリッド
パイプライン接続プロセッサおよびそれに関連するある
新規な処理方法を具える。複数の命令スレッドを同時に
処理できることにより、ハイブリッドアーキテクチャお
よびそれに関連する方法は、パイプライン接続プロセッ
サの従来の欠点を効果的になくす。複数の命令スレッド
は実質的に同時に時分割の形態で別個に取扱われるの
で、パイプライン接続プロセッサはプログラム命令スレ
ッド間で効果的に切替えを行う。このようにして分岐、
割込みおよびある条件付のデコードなどの命令に関連し
たパイプラインの切断はマスクされる。その結果、ハイ
ブリッドパイプライン接続プロセッサは、従来のパイプ
ライン接続プロセッサによって得られるよりも優れた性
能特性を有する、単一の高速集積回路チップとして実施
することが可能になる。
【0014】本発明のこれら、および他の目的、利益お
よび形態は、添付図面を参照して説明する本発明の好適
実施例についての以下の詳細な記述からさらに容易に理
解される。
よび形態は、添付図面を参照して説明する本発明の好適
実施例についての以下の詳細な記述からさらに容易に理
解される。
【0015】
【実施例】図面を参照するが、ここで、種々の図面にお
いて同一の参照番号を用いて同一または類似の構成要素
を表わすものとする。
いて同一の参照番号を用いて同一または類似の構成要素
を表わすものとする。
【0016】図2は2つの命令スレッドのインターリー
ブ処理の一実施例を示すシーケンスダイアグラム図であ
る。第1のプログラムスレッドを“A”命令スレッドと
称し、一方、第2のプログラムスレッドを“B”命令ス
レッドと称する。この順序付けの実施例では、本発明の
パイプライン接続プロセッサは、“A”命令スレッドか
らの命令(FA )を命令メモリからフェッチすること
と、“B”命令スレッドからの命令(FB )を命令メモ
リからフェッチすることとの間で、交互に切換えて、ス
レッド“A”およびスレッド“B”の命令が交互にデコ
ードされ(DA ,DB )、および実行される(EA ,E
B )ようにする。このようにして、ジャンプ、割込み等
の命令のデコードを行っても、パイプライン処理は破壊
されないままである。たとえば、デコード(D B )での
命令が分岐命令としてデコードされる場合、次のデコー
ド(D* A)は、その直後の実行E* Aのステップと同様
に、有効のままである。これは、分岐命令のデコード
(D B )と同時のマシンサイクルでフェッチ(すなわち
F* A)された命令が、プログラムの命令スレッド“A”
に属し、それは、スレッドBに対するデコードされた分
岐命令の影響を受けないからである。
ブ処理の一実施例を示すシーケンスダイアグラム図であ
る。第1のプログラムスレッドを“A”命令スレッドと
称し、一方、第2のプログラムスレッドを“B”命令ス
レッドと称する。この順序付けの実施例では、本発明の
パイプライン接続プロセッサは、“A”命令スレッドか
らの命令(FA )を命令メモリからフェッチすること
と、“B”命令スレッドからの命令(FB )を命令メモ
リからフェッチすることとの間で、交互に切換えて、ス
レッド“A”およびスレッド“B”の命令が交互にデコ
ードされ(DA ,DB )、および実行される(EA ,E
B )ようにする。このようにして、ジャンプ、割込み等
の命令のデコードを行っても、パイプライン処理は破壊
されないままである。たとえば、デコード(D B )での
命令が分岐命令としてデコードされる場合、次のデコー
ド(D* A)は、その直後の実行E* Aのステップと同様
に、有効のままである。これは、分岐命令のデコード
(D B )と同時のマシンサイクルでフェッチ(すなわち
F* A)された命令が、プログラムの命令スレッド“A”
に属し、それは、スレッドBに対するデコードされた分
岐命令の影響を受けないからである。
【0017】本発明に従って単一のパイプライン接続プ
ロセッサにより処理を行うためには、望ましくは、プロ
グラム命令を3つ以上の命令スレッドにコンパイルする
とよい(現在は、プログラム命令を複数スレッドにコン
パイルすることはマニュアル処理だけが可能であるが、
この仕事を行うのに自動コンパイラがまもなく利用可能
になるであろう)。ハイブリッドパイプライン接続プロ
セッサでは、スレッドの数にかかわりなく、各命令スレ
ッドの文脈は、他の命令スレッドとは別個のまま維持さ
れなければならない。さらに、当業者であれば種々の順
序付け(シーケンシング)の構成を実行可能であること
を理解し得よう。たとえば、2重(dual)命令スレ
ッドフォーマットでは、2つの“A”スレッド命令が順
次に選択され、ひとつの“B”スレッド命令がそれに続
き、さらに2つの“A”スレッド命令が続き、ひとつの
“B”スレッド命令が続く等々となる。唯一の好適な制
限は、命令プログラムをコンパイルし、およびフェッ
チ、デコードおよび実行の順序付けを実行して、もしも
このようにしなければパイプライン処理を破壊するなん
らかの命令(たとえば分岐や割込み命令)に、異なる命
令スレッドからの命令処理が引き続くようにする。
ロセッサにより処理を行うためには、望ましくは、プロ
グラム命令を3つ以上の命令スレッドにコンパイルする
とよい(現在は、プログラム命令を複数スレッドにコン
パイルすることはマニュアル処理だけが可能であるが、
この仕事を行うのに自動コンパイラがまもなく利用可能
になるであろう)。ハイブリッドパイプライン接続プロ
セッサでは、スレッドの数にかかわりなく、各命令スレ
ッドの文脈は、他の命令スレッドとは別個のまま維持さ
れなければならない。さらに、当業者であれば種々の順
序付け(シーケンシング)の構成を実行可能であること
を理解し得よう。たとえば、2重(dual)命令スレ
ッドフォーマットでは、2つの“A”スレッド命令が順
次に選択され、ひとつの“B”スレッド命令がそれに続
き、さらに2つの“A”スレッド命令が続き、ひとつの
“B”スレッド命令が続く等々となる。唯一の好適な制
限は、命令プログラムをコンパイルし、およびフェッ
チ、デコードおよび実行の順序付けを実行して、もしも
このようにしなければパイプライン処理を破壊するなん
らかの命令(たとえば分岐や割込み命令)に、異なる命
令スレッドからの命令処理が引き続くようにする。
【0018】本発明のハイブリッドアーキテクチャの一
実施例を図3に示す。この実施例は2重(dual)命
令スレッドプロセッサとして構成されているが、上述し
たように、3つ以上の命令スレッドもまた、以下に述べ
るようなわずかな修正で適応させることができる。符号
10で総称して示すハイブリッドパイプライン接続プロ
セッサは、命令フェッチユニット12,第1のパイプラ
イン14,命令デコード/アドレス発生ユニット16,
第2のパイプライン18および実行ユニット20を含
む。プロセッサ10の種々の構成要素間の動作のタイミ
ングおよびシーケンスはタイミングおよび制御ユニット
22により制御される。
実施例を図3に示す。この実施例は2重(dual)命
令スレッドプロセッサとして構成されているが、上述し
たように、3つ以上の命令スレッドもまた、以下に述べ
るようなわずかな修正で適応させることができる。符号
10で総称して示すハイブリッドパイプライン接続プロ
セッサは、命令フェッチユニット12,第1のパイプラ
イン14,命令デコード/アドレス発生ユニット16,
第2のパイプライン18および実行ユニット20を含
む。プロセッサ10の種々の構成要素間の動作のタイミ
ングおよびシーケンスはタイミングおよび制御ユニット
22により制御される。
【0019】パイプライン接続プロセッサ10はデータ
フェッチ処理から命令フェッチ処理を分離し、その対応
する情報を2つの別個のメモリバンクに格納する。パイ
プライン接続プロセッサ10は3つのフェーズ、すなわ
ち、命令フェッチフェーズ、命令デコード/アドレス発
生フェーズおよび実行フェーズに分割されている。命令
フェッチフェーズにおいて、命令フェッチユニット12
は、命令アドレスバス24を介して、命令メモリ(図示
せず)に保持された2重命令スレッドの内のひとつに格
納された命令のアドレスを転送する。フェッチされた命
令は、命令データバス26を介してプロセッサ10に戻
るが、これらフェッチされた命令は第1のパイプライン
14内に含まれるレジスタ(図示せず)に初期的にラッ
チされる。ここでもまた、命令フェッチユニット12は
命令デコード/アドレス発生ユニット16とある双方向
性のライン28を介して直接に交信する。
フェッチ処理から命令フェッチ処理を分離し、その対応
する情報を2つの別個のメモリバンクに格納する。パイ
プライン接続プロセッサ10は3つのフェーズ、すなわ
ち、命令フェッチフェーズ、命令デコード/アドレス発
生フェーズおよび実行フェーズに分割されている。命令
フェッチフェーズにおいて、命令フェッチユニット12
は、命令アドレスバス24を介して、命令メモリ(図示
せず)に保持された2重命令スレッドの内のひとつに格
納された命令のアドレスを転送する。フェッチされた命
令は、命令データバス26を介してプロセッサ10に戻
るが、これらフェッチされた命令は第1のパイプライン
14内に含まれるレジスタ(図示せず)に初期的にラッ
チされる。ここでもまた、命令フェッチユニット12は
命令デコード/アドレス発生ユニット16とある双方向
性のライン28を介して直接に交信する。
【0020】次のフェーズにおいて、命令デコード/ア
ドレス発生ユニット16は(バス30を介して)第1の
パイプライン14のレジスタ内にラッチされている命令
を読出す。もしも命令デコード/アドレス発生ユニット
16が、フェッチされた命令が分岐命令であるとデコー
ドした場合は、所望の命令の分岐に対応するアドレスが
発生される。分岐アドレスは、(ライン28を介して)
命令フェッチユニット12にフィードバックされ、次い
で、バス24上の出力を命令メモリに供給する。再び、
タイミングおよび制御ユニット22は、命令デコード/
アドレス発生ユニット16,パイプライン14および命
令フェッチユニット12の間の動作シーケンスを制御す
る。デコードされた命令はライン32に出力され、そし
て第2のパイプライン18内の2つのレジスタ(図示せ
ず)にラッチされるが、これらデコードされた命令は、
次いで(ライン34を介して)実行ユニット20により
次のマシンサイクルの間に読出される。
ドレス発生ユニット16は(バス30を介して)第1の
パイプライン14のレジスタ内にラッチされている命令
を読出す。もしも命令デコード/アドレス発生ユニット
16が、フェッチされた命令が分岐命令であるとデコー
ドした場合は、所望の命令の分岐に対応するアドレスが
発生される。分岐アドレスは、(ライン28を介して)
命令フェッチユニット12にフィードバックされ、次い
で、バス24上の出力を命令メモリに供給する。再び、
タイミングおよび制御ユニット22は、命令デコード/
アドレス発生ユニット16,パイプライン14および命
令フェッチユニット12の間の動作シーケンスを制御す
る。デコードされた命令はライン32に出力され、そし
て第2のパイプライン18内の2つのレジスタ(図示せ
ず)にラッチされるが、これらデコードされた命令は、
次いで(ライン34を介して)実行ユニット20により
次のマシンサイクルの間に読出される。
【0021】実行ユニット20は従来のパイプライン接
続プロセッサの実行回路と比較して著しく変更されてい
る。たとえば、ALU36および乗算器38のような慣
例の実行ロジックに加えて、実行ユニット20は複数の
レジスタセット40に分離されたレジスタファイルを含
む(ここで述べている例では、2つのレジスタセットだ
けが示されている)。レジスタファイルの各セットに
は、命令をつなげた(threaded)プログラムの
2重スレッドAおよびBのひとつを割当てる。レジスタ
ファイルの各セットは関連する命令スレッドの命令の作
業内容を収容するのに適切なサイズとする。これらのワ
ーキングレジスタに加えて、現在ステータスレジスタ、
アドレスポインタおよびインデックスレジスタのような
ステータスレジスタをプロセッサのステータスを保存す
るために必要な他の情報と共に用いる。ここでもまた、
各命令スレッドには命令レジスタの別個のセットが割当
てられる。
続プロセッサの実行回路と比較して著しく変更されてい
る。たとえば、ALU36および乗算器38のような慣
例の実行ロジックに加えて、実行ユニット20は複数の
レジスタセット40に分離されたレジスタファイルを含
む(ここで述べている例では、2つのレジスタセットだ
けが示されている)。レジスタファイルの各セットに
は、命令をつなげた(threaded)プログラムの
2重スレッドAおよびBのひとつを割当てる。レジスタ
ファイルの各セットは関連する命令スレッドの命令の作
業内容を収容するのに適切なサイズとする。これらのワ
ーキングレジスタに加えて、現在ステータスレジスタ、
アドレスポインタおよびインデックスレジスタのような
ステータスレジスタをプロセッサのステータスを保存す
るために必要な他の情報と共に用いる。ここでもまた、
各命令スレッドには命令レジスタの別個のセットが割当
てられる。
【0022】タイミングおよび制御回路22は共通デー
タバス(CDB)42および共通アドレスバス(CA
B)44上の出力(CDB(A),CDB(B),CA
B(A),CAB(B))を各マシンサイクル毎に1度
切替える(すなわち、プロセッサ10は図2に示すよう
にスレッド“A”および“B”のインタリーブされた命
令処理を行うようにプログラムされているものと仮定す
る)。タイミングおよび制御回路22からの切替えられ
た制御信号は、レジスタファイルに対する高位の選択ラ
インとして実行ユニット20により用いられて、偶数マ
シンサイクルでレジスタファイルの第1のセットがアク
チブと定められ、および奇数マシンサイクルでレジスタ
ファイルの第2のセットが使用される。もし、RAMマ
クロをレジスタファイル40を定義するのに用いる場合
は、複数の読出しおよび書込みポートは、データアドレ
ス発生用のインデックスレジスタのアクセス処理のみな
らず、複数のソースおよび種々の命令(特に、デジタル
信号プロセッサにおいて使用される並行命令)の宛先を
収容するのに必要とされる。命令のフェッチおよびアド
レスの発生を専用的に取扱う別個の機能に、そのような
RAMアレイを分割することが望まれることもある。し
かしながら、マシンコンタクトを単一ファイルまたはR
AMに統合するか、あるいはいくつかのファイルまたは
RAMに分配するにしても、基本的な考え方は同じであ
る。
タバス(CDB)42および共通アドレスバス(CA
B)44上の出力(CDB(A),CDB(B),CA
B(A),CAB(B))を各マシンサイクル毎に1度
切替える(すなわち、プロセッサ10は図2に示すよう
にスレッド“A”および“B”のインタリーブされた命
令処理を行うようにプログラムされているものと仮定す
る)。タイミングおよび制御回路22からの切替えられ
た制御信号は、レジスタファイルに対する高位の選択ラ
インとして実行ユニット20により用いられて、偶数マ
シンサイクルでレジスタファイルの第1のセットがアク
チブと定められ、および奇数マシンサイクルでレジスタ
ファイルの第2のセットが使用される。もし、RAMマ
クロをレジスタファイル40を定義するのに用いる場合
は、複数の読出しおよび書込みポートは、データアドレ
ス発生用のインデックスレジスタのアクセス処理のみな
らず、複数のソースおよび種々の命令(特に、デジタル
信号プロセッサにおいて使用される並行命令)の宛先を
収容するのに必要とされる。命令のフェッチおよびアド
レスの発生を専用的に取扱う別個の機能に、そのような
RAMアレイを分割することが望まれることもある。し
かしながら、マシンコンタクトを単一ファイルまたはR
AMに統合するか、あるいはいくつかのファイルまたは
RAMに分配するにしても、基本的な考え方は同じであ
る。
【0023】図4および図5は図3のハイブリッドパイ
プライン接続プロセッサ10の主要構成要素をさらに詳
細に示す。特に、命令フェッチユニット12,第1のパ
イプライン14,命令デコード/アドレス発生ユニット
16,第2のパイプライン18および実行ユニット20
が多少詳しく示されている。タイミングおよび制御の相
互接続は、わかりやすくするという理由からこれらの図
面から省略している。当業者であればここで与えられた
記述から所望のタイミングおよび制御機能を実現するこ
とができる。
プライン接続プロセッサ10の主要構成要素をさらに詳
細に示す。特に、命令フェッチユニット12,第1のパ
イプライン14,命令デコード/アドレス発生ユニット
16,第2のパイプライン18および実行ユニット20
が多少詳しく示されている。タイミングおよび制御の相
互接続は、わかりやすくするという理由からこれらの図
面から省略している。当業者であればここで与えられた
記述から所望のタイミングおよび制御機能を実現するこ
とができる。
【0024】最初に図4を参照するに、命令フェッチユ
ニット12がシーケンサ50,命令アドレスレジスタ
(IAR)52および2つの命令リンクレジスタILR
(A)54aおよびILR(B)54bを有することが
示されている。動作にあっては、シーケンサ50はIA
R52にラッチすべき次の命令アドレスを識別し、およ
びこのIAR52から命令アドレスバス24を介して命
令メモリに出力する。レジスタ54aおよび54bは、
また、IAR52の出力を受け取るようにも結合されて
いる。これらレジスタ54aおよび54bは、命令スレ
ッドAおよび命令スレッドBからそれぞれフェッチされ
た最終命令の識別を行うのに供される。これらレジスタ
内に含まれている情報もまた、シーケンサ50にフィー
ドバックされ、シーケンサ50は、次に選択されるアド
レスに対する信号をインクリメントする。動作にあたっ
て、シーケンサ50は加算器として機能して、各プログ
ラムスレッドを決定づける命令が交互に順次にフェッチ
されるようにする。タイミングおよび制御回路22(図
3)はILR(A)またはILR(B)にラッチされた
アドレスについてのシーケンサ50の選択を監視する。
ニット12がシーケンサ50,命令アドレスレジスタ
(IAR)52および2つの命令リンクレジスタILR
(A)54aおよびILR(B)54bを有することが
示されている。動作にあっては、シーケンサ50はIA
R52にラッチすべき次の命令アドレスを識別し、およ
びこのIAR52から命令アドレスバス24を介して命
令メモリに出力する。レジスタ54aおよび54bは、
また、IAR52の出力を受け取るようにも結合されて
いる。これらレジスタ54aおよび54bは、命令スレ
ッドAおよび命令スレッドBからそれぞれフェッチされ
た最終命令の識別を行うのに供される。これらレジスタ
内に含まれている情報もまた、シーケンサ50にフィー
ドバックされ、シーケンサ50は、次に選択されるアド
レスに対する信号をインクリメントする。動作にあたっ
て、シーケンサ50は加算器として機能して、各プログ
ラムスレッドを決定づける命令が交互に順次にフェッチ
されるようにする。タイミングおよび制御回路22(図
3)はILR(A)またはILR(B)にラッチされた
アドレスについてのシーケンサ50の選択を監視する。
【0025】命令メモリから取出された命令は、命令デ
ータバス26によりシステム10(図3)の第1のパイ
プライン14内の命令データレジスタ(IDR)56に
供給される。次のマシンサイクルで命令デコード/アド
レス発生ユニット16はレジスタ56にラッチされた命
令情報を読出し、デコードする。ここでもまた、タイミ
ングおよび制御回路22(図3)は、レジスタ56から
読出された命令が命令スレッドAの部分か命令スレッド
Bの部分かを追跡調査する。命令デコード/アドレス発
生ユニット16により取出された命令は命令デコード論
理ブロック58に供給され、それにより命令をデコード
し、実行ユニットに対してそれに結合された信号線59
を介して適切な制御信号を出力するするように動作す
る。わかりやすくするために制御ライン59の結合は図
4および図5から省略されている。
ータバス26によりシステム10(図3)の第1のパイ
プライン14内の命令データレジスタ(IDR)56に
供給される。次のマシンサイクルで命令デコード/アド
レス発生ユニット16はレジスタ56にラッチされた命
令情報を読出し、デコードする。ここでもまた、タイミ
ングおよび制御回路22(図3)は、レジスタ56から
読出された命令が命令スレッドAの部分か命令スレッド
Bの部分かを追跡調査する。命令デコード/アドレス発
生ユニット16により取出された命令は命令デコード論
理ブロック58に供給され、それにより命令をデコード
し、実行ユニットに対してそれに結合された信号線59
を介して適切な制御信号を出力するするように動作す
る。わかりやすくするために制御ライン59の結合は図
4および図5から省略されている。
【0026】レジスタ56から読出された命令は、第1
のパイプライン14、特にレジスタ57を通じて命令フ
ェッチユニット12のシーケンス50に結合されたイン
デックス選択および加算回路60にも渡される。もし、
妥当であれば、インデックス選択および加算回路60は
シーケンサ50による次の読出しのためにレジスタ57
に置かれている命令アドレスに対してジャンプを発生す
る。たとえば、もし、命令デコード論理ブロック58が
分岐命令をデコードする場合、インデックス選択および
加算回路60は分岐命令に対して適当なアドレスを発生
する。命令デコード/アドレス発生ユニット16のイン
デックス選択および加算回路60は、また、第2のパイ
プライン18のパイプラインレジスタに対して、たとえ
ば、ライン62(図5参照)を介して結合される。加え
て、インデックス選択および加算回路60は実行ユニッ
ト20内のレジスタファイル40の2つのセットから
(ライン64を介して)データを受け取ることができ
る。
のパイプライン14、特にレジスタ57を通じて命令フ
ェッチユニット12のシーケンス50に結合されたイン
デックス選択および加算回路60にも渡される。もし、
妥当であれば、インデックス選択および加算回路60は
シーケンサ50による次の読出しのためにレジスタ57
に置かれている命令アドレスに対してジャンプを発生す
る。たとえば、もし、命令デコード論理ブロック58が
分岐命令をデコードする場合、インデックス選択および
加算回路60は分岐命令に対して適当なアドレスを発生
する。命令デコード/アドレス発生ユニット16のイン
デックス選択および加算回路60は、また、第2のパイ
プライン18のパイプラインレジスタに対して、たとえ
ば、ライン62(図5参照)を介して結合される。加え
て、インデックス選択および加算回路60は実行ユニッ
ト20内のレジスタファイル40の2つのセットから
(ライン64を介して)データを受け取ることができ
る。
【0027】今、図5を参照すると、デコードされた命
令は、次のマシンサイクルでの実行のために第2のパイ
プライン18内の別々のスレッドAおよびスレッドBの
レジスタに置かれている。実行ユニット20の中心は、
複数(この例では2つ)のレジスタファイルセット、す
なわち、レジスタファイル(A)およびレジスタファイ
ル(B)66を設けることである。これらファイルセッ
トは命令スレッドAおよび命令スレッドBの両方に対す
る作業レジスタを含む。タイミングおよび制御回路22
(図3)は与えられた実行対象のある命令がスレッド
(A)かまたはスレッド(B)に属するかを追跡調査す
る。
令は、次のマシンサイクルでの実行のために第2のパイ
プライン18内の別々のスレッドAおよびスレッドBの
レジスタに置かれている。実行ユニット20の中心は、
複数(この例では2つ)のレジスタファイルセット、す
なわち、レジスタファイル(A)およびレジスタファイ
ル(B)66を設けることである。これらファイルセッ
トは命令スレッドAおよび命令スレッドBの両方に対す
る作業レジスタを含む。タイミングおよび制御回路22
(図3)は与えられた実行対象のある命令がスレッド
(A)かまたはスレッド(B)に属するかを追跡調査す
る。
【0028】レジスタファイル66に加えて、実行ユニ
ット20は、ステータスレジスタ、例えば、メモリ制御
レジスタMCR(A)とMCR(B)、およびパイプラ
インステータスレジスタPSR(A)とPSR(B)等
のステータスレジスタの複数のスタック68を含んでい
る。これらステータスレジスタスタックの各々はパイプ
ライン18のレジスタから読出された命令に対してアク
セスする。レジスタ68の出力は、2セットのレジスタ
ファイル66に直接接続されたマルチプレクサ70に供
給される。マルチプレクサ70の出力は、実行ロジック
72たとえば慣例の乗算器、ALUおよび追加のマルチ
プレクサを含むことのできる実行ロジック72に結合さ
れる。実行ロジック72は、また2セットのレジスタフ
ァイル66に直接に接続されている。実行ユニット20
からの出力は、共通アドレスバス44上に命令スレッド
Aまたは命令スレッドBに対するデータアドレス信号を
出力する第1のマルチプレクサCAB MUX76を介
して取り出される。加えて、共通データバスマルチプレ
クサCDB MUX74は、命令スレッド(A)または
命令スレッド(B)からの実行された命令により指示さ
れるデータを、共通データバス42を介して出力/受信
する。
ット20は、ステータスレジスタ、例えば、メモリ制御
レジスタMCR(A)とMCR(B)、およびパイプラ
インステータスレジスタPSR(A)とPSR(B)等
のステータスレジスタの複数のスタック68を含んでい
る。これらステータスレジスタスタックの各々はパイプ
ライン18のレジスタから読出された命令に対してアク
セスする。レジスタ68の出力は、2セットのレジスタ
ファイル66に直接接続されたマルチプレクサ70に供
給される。マルチプレクサ70の出力は、実行ロジック
72たとえば慣例の乗算器、ALUおよび追加のマルチ
プレクサを含むことのできる実行ロジック72に結合さ
れる。実行ロジック72は、また2セットのレジスタフ
ァイル66に直接に接続されている。実行ユニット20
からの出力は、共通アドレスバス44上に命令スレッド
Aまたは命令スレッドBに対するデータアドレス信号を
出力する第1のマルチプレクサCAB MUX76を介
して取り出される。加えて、共通データバスマルチプレ
クサCDB MUX74は、命令スレッド(A)または
命令スレッド(B)からの実行された命令により指示さ
れるデータを、共通データバス42を介して出力/受信
する。
【0029】要約すると、2つの独立の命令スレッドを
使用することにより、NOP命令のための余分な処理フ
ェーズを省略し、およびパイプラインは実質的に透過的
になる。特に、プロセッサスレッドの各々は、あたか
も、本来の非パイプライン接続構造内での実行のように
見える。その概念を拡張してパイプライン構造に対して
付加的な命令スレッドおよび/または付加的なフェーズ
を用いることもできる。nフェーズのパイプラインは処
理速度の遅い回路をパイプライン接続することで作成さ
れるので、2つの異なる命令の部分(たとえば、第1の
サイクルでのひとつの命令および第2のサイクルでの別
の命令)はそれらを通じて流れる。ここで述べられたフ
ェッチ、デコードおよび実行の各フェーズに対するこの
概念を用いると、本来の3つのフェーズに対する置換え
として実質的に6つのフェーズのパイプラインになる。
使用することにより、NOP命令のための余分な処理フ
ェーズを省略し、およびパイプラインは実質的に透過的
になる。特に、プロセッサスレッドの各々は、あたか
も、本来の非パイプライン接続構造内での実行のように
見える。その概念を拡張してパイプライン構造に対して
付加的な命令スレッドおよび/または付加的なフェーズ
を用いることもできる。nフェーズのパイプラインは処
理速度の遅い回路をパイプライン接続することで作成さ
れるので、2つの異なる命令の部分(たとえば、第1の
サイクルでのひとつの命令および第2のサイクルでの別
の命令)はそれらを通じて流れる。ここで述べられたフ
ェッチ、デコードおよび実行の各フェーズに対するこの
概念を用いると、本来の3つのフェーズに対する置換え
として実質的に6つのフェーズのパイプラインになる。
【0030】さらに他の例として4つの命令スレッドに
コンパイルされたプログラムを、4つの完全なレジスタ
ファイルセットを保持するRAMおよびRAMアドレス
を駆動する2ビットカウンタと共に用いることができ
る。そのような場合、6フェーズのパイプラインは透過
的になる。一般に、パイプラインフェーズの数は、命令
スレッドの数を倍増させることによりコードの実行に影
響を及ぼすことなく倍増することができる。開示された
アーキテクチャの付加の特徴を高性能のアプリケーショ
ンに活用することができる。特に、共通プロセッサ内の
複数のレジスタファイルを用いることにより文脈(co
ntext)の高速切替えを実現できる。そのような環
境では、プロセッサは複数の命令スレッドモードから単
一の命令スレッドを有するモードに切替えることが可能
になる。
コンパイルされたプログラムを、4つの完全なレジスタ
ファイルセットを保持するRAMおよびRAMアドレス
を駆動する2ビットカウンタと共に用いることができ
る。そのような場合、6フェーズのパイプラインは透過
的になる。一般に、パイプラインフェーズの数は、命令
スレッドの数を倍増させることによりコードの実行に影
響を及ぼすことなく倍増することができる。開示された
アーキテクチャの付加の特徴を高性能のアプリケーショ
ンに活用することができる。特に、共通プロセッサ内の
複数のレジスタファイルを用いることにより文脈(co
ntext)の高速切替えを実現できる。そのような環
境では、プロセッサは複数の命令スレッドモードから単
一の命令スレッドを有するモードに切替えることが可能
になる。
【0031】命令をつなげた(threaded)複数
プログラムは、どのスレッドによりどのタスクを実行中
であるのかを決定するプロセスに複雑さを加える。しか
しながら、この複雑さは、パイプライン接続およびNO
Pを回避することで実現される改良性能および透過のパ
イプラインで可能な簡素なプログラムの流れに比べる
と、些細であると考えられる。さらに、複数の命令スレ
ッドは、複数の非同期リアルタイム事象を取扱う上で有
益であることが証明された。もし、複数の事象を単一の
プロセッサスレッドで取扱うとすると、プロセッサは一
度にはひとつのスレッドだけしか注目せず、および余り
長い期間プロセッサの制御を続ける場合には、タイミン
グの問題を生じやすい。しかしながら、複数スレッドの
環境においては、複数のスレッドの処理は同時に取扱わ
れる。長期間にわたっての平均の処理のスループットは
同様であるが、応答時間を著しく改善することができ
る。これは、本質的には、プロセッサの内部へおよび外
部にタスクを移動させることを要求されたゼロ処理オー
バヘッドを用いて、利用可能な処理能力を複数の命令ス
レッドの間で均等に分割するハードウエアキューイング
メカニズムである。
プログラムは、どのスレッドによりどのタスクを実行中
であるのかを決定するプロセスに複雑さを加える。しか
しながら、この複雑さは、パイプライン接続およびNO
Pを回避することで実現される改良性能および透過のパ
イプラインで可能な簡素なプログラムの流れに比べる
と、些細であると考えられる。さらに、複数の命令スレ
ッドは、複数の非同期リアルタイム事象を取扱う上で有
益であることが証明された。もし、複数の事象を単一の
プロセッサスレッドで取扱うとすると、プロセッサは一
度にはひとつのスレッドだけしか注目せず、および余り
長い期間プロセッサの制御を続ける場合には、タイミン
グの問題を生じやすい。しかしながら、複数スレッドの
環境においては、複数のスレッドの処理は同時に取扱わ
れる。長期間にわたっての平均の処理のスループットは
同様であるが、応答時間を著しく改善することができ
る。これは、本質的には、プロセッサの内部へおよび外
部にタスクを移動させることを要求されたゼロ処理オー
バヘッドを用いて、利用可能な処理能力を複数の命令ス
レッドの間で均等に分割するハードウエアキューイング
メカニズムである。
【0032】現在、認められたアプリケーションでは、
固定タスクは各命令スレッドに割振られ、従って、特別
のアセンブラやコンパイラは必要ない。初期時、プログ
ラムコードは、単にIDワードを読取りどの命令スレッ
ドを実行しているのかを識別し、そして適切なタスクへ
分岐する。もし複数の命令スレッドが同じ割込みレベル
に応答するとすると、割込みハンドラーもまた、このI
Dワードを検査して所要の動作を決定する。ひとつの命
令スレッドが割込みに応答するとき、パイプラインを再
び満たすのに1マシンサイクルを要するが、そのマシン
サイクルは他の命令スレッドに対するものであるから、
明らかに目につくような遅延はない。将来、命令スレッ
ドの各々に対するタスクの動的な割振りを処理の負荷に
基づいて行うことが可能であるかもしれない。これに
は、特別のコンパイラおよび現在は要求されていない他
の技術が必要となると思われる。
固定タスクは各命令スレッドに割振られ、従って、特別
のアセンブラやコンパイラは必要ない。初期時、プログ
ラムコードは、単にIDワードを読取りどの命令スレッ
ドを実行しているのかを識別し、そして適切なタスクへ
分岐する。もし複数の命令スレッドが同じ割込みレベル
に応答するとすると、割込みハンドラーもまた、このI
Dワードを検査して所要の動作を決定する。ひとつの命
令スレッドが割込みに応答するとき、パイプラインを再
び満たすのに1マシンサイクルを要するが、そのマシン
サイクルは他の命令スレッドに対するものであるから、
明らかに目につくような遅延はない。将来、命令スレッ
ドの各々に対するタスクの動的な割振りを処理の負荷に
基づいて行うことが可能であるかもしれない。これに
は、特別のコンパイラおよび現在は要求されていない他
の技術が必要となると思われる。
【0033】当業者は、複数のプログラム命令スレッド
を受け入れるように構成された新規なパイプライン接続
プロセッサおよびそれに伴う処理方法がここで述べられ
ていることを認識するだろう。提案された技術を用いる
ことにより、複数の命令スレッドは、実質的に同時に、
時分割の形態で個別に取扱われるので、パイプライン接
続プロセッサは、プログラム命令スレッド間を効率的に
切替える。このようにして、分岐、割込みおよびある種
の条件のデコード等の命令に関連したパイプラインの切
断を阻止(マスク)する。その結果、ハイブリッドパイ
プライン接続プロセッサは、性能特性に優れた単一の高
速集積回路チップとして実施可能である。デジタル信号
プロセッサに加えて、ここで述べられた本発明の概念
を、高性能マイクロプロセッサおよび大規模のメインフ
レームプロセッサに拡張することも可能である。
を受け入れるように構成された新規なパイプライン接続
プロセッサおよびそれに伴う処理方法がここで述べられ
ていることを認識するだろう。提案された技術を用いる
ことにより、複数の命令スレッドは、実質的に同時に、
時分割の形態で個別に取扱われるので、パイプライン接
続プロセッサは、プログラム命令スレッド間を効率的に
切替える。このようにして、分岐、割込みおよびある種
の条件のデコード等の命令に関連したパイプラインの切
断を阻止(マスク)する。その結果、ハイブリッドパイ
プライン接続プロセッサは、性能特性に優れた単一の高
速集積回路チップとして実施可能である。デジタル信号
プロセッサに加えて、ここで述べられた本発明の概念
を、高性能マイクロプロセッサおよび大規模のメインフ
レームプロセッサに拡張することも可能である。
【0034】本発明は、その好適実施例に従ってここで
詳細に述べられてきたが、当業者は、その中に多くの変
更および変形をすることができる。したがって、本発明
の真の精神および範囲内で生じるような変更および変形
の全てを包含することを添付の特許請求の範囲は意図し
ている。
詳細に述べられてきたが、当業者は、その中に多くの変
更および変形をすることができる。したがって、本発明
の真の精神および範囲内で生じるような変更および変形
の全てを包含することを添付の特許請求の範囲は意図し
ている。
【0035】
【発明の効果】本発明によれば、複数の命令スレッドは
実質的に同時に時分割の形態で別個に取扱われるので、
パイプライン接続プロセッサはプログラム命令スレッド
を効率的に切替える。このようにして分岐、割込みおよ
びある条件のデコードに関連したパイプラインの切断,
破壊は消去(マスク)される。その結果、ハイブリッド
パイプライン接続プロセッサは、従来のパイプライン接
続プロセッサに比べて優れた性能特性を有し、単一の高
速集積回路チップとして実現することが可能になる。
実質的に同時に時分割の形態で別個に取扱われるので、
パイプライン接続プロセッサはプログラム命令スレッド
を効率的に切替える。このようにして分岐、割込みおよ
びある条件のデコードに関連したパイプラインの切断,
破壊は消去(マスク)される。その結果、ハイブリッド
パイプライン接続プロセッサは、従来のパイプライン接
続プロセッサに比べて優れた性能特性を有し、単一の高
速集積回路チップとして実現することが可能になる。
【図1】慣例のパイプライン接続プロセッサのフェッ
チ、デコードおよび実行の処理フェーズに対する逐次シ
ーケンスダイアグラム図である。
チ、デコードおよび実行の処理フェーズに対する逐次シ
ーケンスダイアグラム図である。
【図2】本発明に従った、複数命令スレッドパイプライ
ン接続プロセッサのインタリーブされたフェッチ、デコ
ードおよび実行の処理フェーズの一実施例に対する交互
シーケンスダイアグラム図である。
ン接続プロセッサのインタリーブされたフェッチ、デコ
ードおよび実行の処理フェーズの一実施例に対する交互
シーケンスダイアグラム図である。
【図3】本発明に従った複数命令スレッドパイプライン
接続プロセッサの一実施例のブロック図である。
接続プロセッサの一実施例のブロック図である。
【図4】図3の複数命令スレッドパイプライン接続プロ
セッサの基本的な構成要素のより詳細なブロック図であ
る。
セッサの基本的な構成要素のより詳細なブロック図であ
る。
【図5】図3の複数命令スレッドパイプライン接続プロ
セッサの基本的な構成要素のより詳細なブロック図であ
る。
セッサの基本的な構成要素のより詳細なブロック図であ
る。
10 (ハイブリッド)パイプライン接続プロセッサ 12 命令フェッチユニット 14 第1のパイプライン 16 命令デコード/アドレス発生ユニット 18 第2のパイプライン 20 実行ユニット 22 タイミングおよび制御ユニット 40,66 レジスタファイル 50 シーケンサ 52 命令アドレスレジスタ 54a,54b 命令リンクレジスタ 56 命令データレジスタ 58 命令デコードロジックブロック 60 インデックス選択および加算回路 68 複数スタック 70,74 マルチプレクサ 72 実行ロジック
フロントページの続き (72)発明者 セバスチャン ティ. ヴェントロン アメリカ合衆国 05465 ヴァーモント州 ジェリコ アップルツリー レーン 1
Claims (7)
- 【請求項1】 複数n個のプログラム命令スレッドの実
質的に同時の処理を行い、前記プログラム命令スレッド
の各々は一連の命令により定義されるハイブリッドパイ
プライン接続プロセッサにおいて、 前記複数n個のプログラム命令スレッドから命令をフェ
ッチする命令フェッチユニットと、 前記命令フェッチユニットによりフェッチされた命令を
デコードする命令デコードユニットと、 前記フェッチされた命令を、前記命令デコードユニット
により読出すためにラッチするように結合された第1の
パイプライン手段と、 前記命令デコードユニットによりデコードされた命令を
実行する実行ユニットであって、該実行ユニットはnセ
ットのレジスタファイルを含み、該レジスタファイルセ
ットの各々は前記複数n個のプログラム命令スレッドの
中の対応するひとつのための作業内容を含む実行ユニッ
トと、 前記命令デコードユニットおよび前記実行ユニットを結
合し、前記命令デコードユニットからのデコードされた
命令をラッチし、および前記デコードされた命令を前記
実行ユニットにより読出す第2のパイプライン手段と、 前記命令フェッチユニット、前記命令デコードユニット
および前記実行ユニットの各々に結合され、前記複数n
個のプログラム命令スレッドを実質的に同時に時分割の
形態で別個に取扱うように前記複数n個のプログラム命
令スレッドの命令についての動作のタイミングおよびシ
ーケンスを制御するタイミングおよび制御手段とを具え
たことを特徴とするハイブリッドパイプライン接続プロ
セッサ。 - 【請求項2】 前記命令フェッチユニットは前記複数n
個のプログラム命令スレッドの各々からの命令を実質的
に予め定められたシーケンスでフェッチすることを特徴
とする請求項1に記載のハイブリッドパイプライン接続
プロセッサ。 - 【請求項3】 前記複数n個のプログラム命令スレッド
は第1の命令スレッドおよび第2の命令スレッドを含
み、前記命令フェッチユニットは、パイプライン処理の
ために前記第1の命令スレッドおよび前記第2の命令ス
レッドの各々からの命令を交互にフェッチすることを特
徴とする請求項2に記載のハイブリッドパイプライン接
続プロセッサ。 - 【請求項4】 前記命令実行ユニットは、さらに、複数
n個のステータスレジスタを含み、該ステータスレジス
タの各々は、前記複数n個のプログラム命令スレッドの
中の対応するひとつに対するプロセッサのステータスに
関連するデータを記憶することを特徴とする請求項2に
記載のハイブリッドパイプライン接続プロセッサ。 - 【請求項5】 前記命令デコードユニットは、分岐命令
を前記命令デコードユニットによりデコードした時に、
前記命令フェッチユニットにフィードバックする分岐命
令アドレスを発生する命令アドレス発生ユニットを含む
ことを特徴とする請求項1に記載のハイブリッドパイプ
ライン接続プロセッサ。 - 【請求項6】 単一のパイプライン接続プロセッサ内で
複数n個のプログラム命令スレッドを、実質的に同時に
処理し、前記複数n個のプログラム命令の各々が、前記
パイプライン接続プロセッサに関連した命令メモリに含
まれる一連の命令により定義され、前記パイプライン接
続プロセッサは、n個のレジスタファイルセットを含
み、該n個のレジスタファイルセットの各々は、前記複
数n個のプログラム命令スレッドの中の対応するひとつ
に対する作業内容を含む、実質的に同時に処理を行う処
理方法において、 (a) 前記命令メモリ内に含まれる前記複数n個のプ
ログラム命令スレッドの中のひとつから命令をフェッチ
するステップと、 (b) 前記複数n個のプログラム命令スレッドの中の
異なるひとつから別の命令をフェッチしている間、それ
と同時に前記命令メモリからフェッチされた前記命令を
デコードするステップと、 (c) 前記複数n個のプログラム命令スレッドの中の
異なるひとつからフェッチした前記別の命令をデコード
し、および前記複数n個のプログラム命令スレッドのひ
とつから新しい命令をフェッチしている間に、それと同
時に、前記複数n個のプログラム命令スレッドのひとつ
から、フェッチされた前記デコードされた命令を実行す
るステップであって、該実行のステップは、前記実行さ
れた命令の作業結果を、前記nのレジスタファイルセッ
トの中の対応するひとつに記憶するステップを含むステ
ップと、 (d) 前記新たにフェッチされた命令をデコードし、
および前記複数n個のプログラム命令スレッドの中のひ
とつから別の新しい命令をフェッチしている間に、それ
と同時に、前記複数n個のプログラム命令スレッドの異
なるひとつからフェッチされた、前記デコードされた命
令を実行するステップであって、該実行のステップは前
記実行された別の命令の作業結果を、前記複数n個のレ
ジスタファイルセットの中の対応するひとつに記憶する
ステップを含むステップと、 (e) 前記単一のパイプライン接続プロセッサ内で時
分割の形態で実質的に同時に複数のプログラム命令スレ
ッドを別個に取扱うように前記複数n個のプログラム命
令スレッドからの複数の命令に対して前記ステップ
(c)および前記ステップ(d)を繰り返すステップと
を具えたことを特徴とする処理方法。 - 【請求項7】 単一のパイプライン接続プロセッサ内で
2つの命令スレッドを実質的に同時に処理し、第1の命
令スレッドは命令の第1の系列で定義され、および第2
の命令スレッドは命令の第2の系列で定義された、実質
的に同時に処理を行う方法において、 (a) 前記第1の命令スレッドからの命令を処理する
ステップと、 (b) 前記第2の命令スレッドからの命令をフェッチ
している間に、それと同時に、前記第1の命令スレッド
からフェッチされた前記命令をデコードするステップ
と、 (c) 前記第2の命令スレッドからフェッチされた前
記命令をデコードし、および前記第1の命令スレッドか
ら別の命令をフェッチしている間に、それと同時に、前
記第1の命令スレッドからフェッチされた、前記デコー
ドされた命令を実行するステップと、 (d) 前記第1の命令ステッドからフェッチされた前
記別の命令をデコードし、および前記第2の命令スレッ
ドから別の命令をフェッチしている間に、それと同時
に、前記第2の命令スレッドからフェッチされた、前記
デコードされた命令を実行するステップと、 (e) 前記単一のパイプライン接続プロセッサ内で時
分割の形態で実質的に同時に前記2つの命令スレッドを
別個に処理するように前記第1の命令スレッドおよび前
記第2の命令スレッドにおける複数の命令に対して前記
ステップ(c)および前記ステップ(d)を繰り返すス
テップとを具えたことを特徴とする処理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/796,194 US5357617A (en) | 1991-11-22 | 1991-11-22 | Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor |
US796194 | 1991-11-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05224923A true JPH05224923A (ja) | 1993-09-03 |
JP2500036B2 JP2500036B2 (ja) | 1996-05-29 |
Family
ID=25167576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4277539A Expired - Lifetime JP2500036B2 (ja) | 1991-11-22 | 1992-10-15 | ハイブリッドパイプライン接続プロセッサおよびその処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5357617A (ja) |
JP (1) | JP2500036B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930518A (en) * | 1995-12-20 | 1999-07-27 | Matsushita Electric Industrial Co., Ltd. | Arithmetic unit |
JP2005182825A (ja) * | 2003-12-18 | 2005-07-07 | Nvidia Corp | マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
US6128721A (en) * | 1993-11-17 | 2000-10-03 | Sun Microsystems, Inc. | Temporary pipeline register file for a superpipelined superscalar processor |
JPH07200289A (ja) * | 1993-12-28 | 1995-08-04 | Fujitsu Ltd | 情報処理装置 |
US5613114A (en) * | 1994-04-15 | 1997-03-18 | Apple Computer, Inc | System and method for custom context switching |
US5655132A (en) * | 1994-08-08 | 1997-08-05 | Rockwell International Corporation | Register file with multi-tasking support |
GB2296352A (en) * | 1994-12-22 | 1996-06-26 | Motorola Gmbh | Microprocessor for executing multiplexed streams of instructions |
JPH096633A (ja) * | 1995-06-07 | 1997-01-10 | Internatl Business Mach Corp <Ibm> | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム |
US5713039A (en) * | 1995-12-05 | 1998-01-27 | Advanced Micro Devices, Inc. | Register file having multiple register storages for storing data from multiple data streams |
US5974455A (en) * | 1995-12-13 | 1999-10-26 | Digital Equipment Corporation | System for adding new entry to web page table upon receiving web page including link to another web page not having corresponding entry in web page table |
IL116885A0 (en) | 1996-01-24 | 1996-05-14 | Scitex Corp Ltd | An imaging apparatus for exposing a printing member |
DE69717369T2 (de) * | 1996-08-27 | 2003-09-11 | Matsushita Electric Ind Co Ltd | Vielfadenprozessor zur Verarbeitung von mehreren Befehlsströmen unabhängig von einander durch eine flexible Durchsatzsteuerung in jedem Befehlsstrom |
US5835788A (en) * | 1996-09-18 | 1998-11-10 | Electronics For Imaging | System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory |
US6209020B1 (en) * | 1996-09-20 | 2001-03-27 | Nortel Networks Limited | Distributed pipeline memory architecture for a computer system with even and odd pids |
US5928322A (en) * | 1996-11-20 | 1999-07-27 | Silicon Graphics, Inc. | Low-latency real-time dispatching in general purpose multiprocessor systems |
US6000011A (en) * | 1996-12-09 | 1999-12-07 | International Business Machines Corporation | Multi-entry fully associative transition cache |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US5907702A (en) * | 1997-03-28 | 1999-05-25 | International Business Machines Corporation | Method and apparatus for decreasing thread switch latency in a multithread processor |
FR2765361B1 (fr) * | 1997-06-26 | 2001-09-21 | Bull Cp8 | Microprocesseur ou microcalculateur imprevisible |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
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 |
WO1999019799A1 (en) * | 1997-10-14 | 1999-04-22 | Analog Devices, Inc. | Signal processor |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities 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 |
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 |
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 |
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 |
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 |
US6330584B1 (en) * | 1998-04-03 | 2001-12-11 | Mmc Networks, Inc. | Systems and methods for multi-tasking, resource sharing and execution of computer instructions |
US7055151B1 (en) * | 1998-04-03 | 2006-05-30 | Applied Micro Circuits Corporation | Systems and methods for multi-tasking, resource sharing and execution of computer instructions |
US6307860B1 (en) | 1998-04-03 | 2001-10-23 | Mmc Networks, Inc. | Systems and methods for data transformation and transfer in networks |
US6115056A (en) * | 1998-04-06 | 2000-09-05 | Creoscitex Corporation Ltd. | Focusing adjustment apparatus |
US6134653A (en) * | 1998-04-22 | 2000-10-17 | Transwitch Corp. | RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit |
US6188411B1 (en) * | 1998-07-02 | 2001-02-13 | Neomagic Corp. | Closed-loop reading of index registers using wide read and narrow write for multi-threaded system |
SE9803632D0 (sv) * | 1998-10-22 | 1998-10-22 | Ericsson Telefon Ab L M | A processor |
JP3526773B2 (ja) * | 1999-02-26 | 2004-05-17 | 松下電器産業株式会社 | マルチプロセッサ装置およびその制御方法 |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6351808B1 (en) * | 1999-05-11 | 2002-02-26 | Sun Microsystems, Inc. | Vertically and horizontally threaded processor with multidimensional storage for storing thread data |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded 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 |
US7191309B1 (en) | 1999-09-01 | 2007-03-13 | Intel Corporation | Double shift instruction for micro engine used in multithreaded parallel processor architecture |
US7421572B1 (en) | 1999-09-01 | 2008-09-02 | Intel Corporation | Branch instruction for processor with branching dependent on a specified bit in a register |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal 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 |
US7051329B1 (en) | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US6609193B1 (en) | 1999-12-30 | 2003-08-19 | Intel Corporation | Method and apparatus for multi-thread pipelined instruction decoder |
US6671795B1 (en) * | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US7856633B1 (en) | 2000-03-24 | 2010-12-21 | Intel Corporation | LRU cache replacement for a partitioned set associative cache |
US6931641B1 (en) | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
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 |
US6675285B1 (en) * | 2000-04-21 | 2004-01-06 | Ati International, Srl | Geometric engine including a computational module without memory contention |
JP2004503872A (ja) * | 2000-06-13 | 2004-02-05 | シネルジェスティック コンピューティング システムズ エーピーエス | 共同利用コンピュータシステム |
US7847803B1 (en) * | 2000-07-26 | 2010-12-07 | Ati Technologies Ulc | Method and apparatus for interleaved graphics processing |
JP2004512029A (ja) * | 2000-08-16 | 2004-04-22 | カイロン コーポレイション | ヒト遺伝子および遺伝子発現産物 |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US20020053017A1 (en) * | 2000-09-01 | 2002-05-02 | Adiletta Matthew J. | Register instructions for a multithreaded processor |
US7020871B2 (en) * | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
US8762581B2 (en) * | 2000-12-22 | 2014-06-24 | Avaya Inc. | Multi-thread packet processor |
US20020144101A1 (en) * | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
US7320065B2 (en) | 2001-04-26 | 2008-01-15 | Eleven Engineering Incorporated | Multithread embedded processor with input/output capability |
US7225281B2 (en) | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
US7216204B2 (en) | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
US7487505B2 (en) | 2001-08-27 | 2009-02-03 | Intel Corporation | Multithreaded microprocessor with register allocation based on number of active threads |
US6868476B2 (en) | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US6874080B2 (en) * | 2001-11-19 | 2005-03-29 | Intel Corporation | Context processing by substantially simultaneously selecting address and instruction of different contexts |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US20030126379A1 (en) * | 2001-12-31 | 2003-07-03 | Shiv Kaushik | Instruction sequences for suspending execution of a thread until a specified memory access occurs |
US7127561B2 (en) | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US7610451B2 (en) | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
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 |
US7337275B2 (en) | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
US7124284B2 (en) * | 2003-01-06 | 2006-10-17 | Sun Microsystems, Inc. | Method and apparatus for processing a complex instruction for execution and retirement |
US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US7493615B2 (en) * | 2003-05-01 | 2009-02-17 | Sun Microsystems, Inc. | Apparatus and method for synchronizing multiple threads in an out-of-order microprocessor |
US20050060517A1 (en) * | 2003-09-12 | 2005-03-17 | Morrow Michael W. | Switching processor threads during long latencies |
US20050066149A1 (en) * | 2003-09-22 | 2005-03-24 | Codito Technologies Private Limited | Method and system for multithreaded processing using errands |
US7684563B1 (en) * | 2003-12-12 | 2010-03-23 | Sun Microsystems, Inc. | Apparatus and method for implementing a unified hash algorithm pipeline |
US7000048B2 (en) * | 2003-12-18 | 2006-02-14 | Intel Corporation | Apparatus and method for parallel processing of network data on a single processing thread |
US7720219B1 (en) * | 2004-10-19 | 2010-05-18 | Oracle America, Inc. | Apparatus and method for implementing a hash algorithm word buffer |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
US20060212853A1 (en) * | 2005-03-18 | 2006-09-21 | Marvell World Trade Ltd. | Real-time control apparatus having a multi-thread processor |
US8230423B2 (en) * | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
US7873961B2 (en) * | 2005-07-29 | 2011-01-18 | International Business Machines Corporation | Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage |
JP2007059227A (ja) | 2005-08-25 | 2007-03-08 | Japan Aviation Electronics Industry Ltd | 基板搭載用コネクタ |
US20080126754A1 (en) * | 2006-07-28 | 2008-05-29 | Padauk Technologies Corporation, R.O.C. | Multiple-microcontroller pipeline instruction execution method |
CN102023844B (zh) * | 2009-09-18 | 2014-04-09 | 深圳中微电科技有限公司 | 并行处理器及其线程处理方法 |
US20110276784A1 (en) * | 2010-05-10 | 2011-11-10 | Telefonaktiebolaget L M Ericsson (Publ) | Hierarchical multithreaded processing |
EP3627764B1 (en) * | 2012-03-30 | 2021-07-28 | Intel Corporation | Method and apparatus to process sha-2 secure hashing algorithm |
US10108805B2 (en) | 2013-06-26 | 2018-10-23 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
CN107038125B (zh) * | 2017-04-25 | 2020-11-24 | 上海兆芯集成电路有限公司 | 具有加速预取请求的独立流水线的处理器高速缓存 |
CN113946540B (zh) * | 2021-10-09 | 2024-03-22 | 深圳市创成微电子有限公司 | 一种dsp处理器及其判断跳转指令的处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5317023A (en) * | 1976-07-30 | 1978-02-16 | Hitachi Ltd | Color picture tube |
JPH03188530A (ja) * | 1989-12-18 | 1991-08-16 | Matsushita Electric Ind Co Ltd | プログラム先取り装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4305124A (en) * | 1978-06-09 | 1981-12-08 | Ncr Corporation | Pipelined computer |
US4320453A (en) * | 1978-11-02 | 1982-03-16 | Digital House, Ltd. | Dual sequencer microprocessor |
US4244028A (en) * | 1979-03-08 | 1981-01-06 | National Semiconductor Corporation | Digital microprocessor having a time-shared adder |
US4646236A (en) * | 1981-04-17 | 1987-02-24 | International Business Machines Corp. | Pipelined control apparatus with multi-process address storage |
US4546431A (en) * | 1982-11-03 | 1985-10-08 | Burroughs Corporation | Multiple control stores in a pipelined microcontroller for handling jump and return subroutines |
US4586127A (en) * | 1982-11-03 | 1986-04-29 | Burroughs Corp. | Multiple control stores for a pipelined microcontroller |
US4551798A (en) * | 1982-11-03 | 1985-11-05 | Burroughs Corporation | Multiple control stores in a pipelined microcontroller for handling nester subroutines |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4757445A (en) * | 1983-09-12 | 1988-07-12 | Motorola, Inc. | Method and apparatus for validating prefetched instruction |
US5010476A (en) * | 1986-06-20 | 1991-04-23 | International Business Machines Corporation | Time multiplexed system for tightly coupling pipelined processors to separate shared instruction and data storage units |
US5117387A (en) * | 1988-08-18 | 1992-05-26 | Delco Electronics Corporation | Microprogrammed timer processor |
-
1991
- 1991-11-22 US US07/796,194 patent/US5357617A/en not_active Expired - Fee Related
-
1992
- 1992-10-15 JP JP4277539A patent/JP2500036B2/ja not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5317023A (en) * | 1976-07-30 | 1978-02-16 | Hitachi Ltd | Color picture tube |
JPH03188530A (ja) * | 1989-12-18 | 1991-08-16 | Matsushita Electric Ind Co Ltd | プログラム先取り装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930518A (en) * | 1995-12-20 | 1999-07-27 | Matsushita Electric Industrial Co., Ltd. | Arithmetic unit |
JP2005182825A (ja) * | 2003-12-18 | 2005-07-07 | Nvidia Corp | マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ |
Also Published As
Publication number | Publication date |
---|---|
JP2500036B2 (ja) | 1996-05-29 |
US5357617A (en) | 1994-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2500036B2 (ja) | ハイブリッドパイプライン接続プロセッサおよびその処理方法 | |
JP2647315B2 (ja) | 動的に複数モードで並列処理するアレイ | |
CN1127687C (zh) | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 | |
JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
US4740893A (en) | Method for reducing the time for switching between programs | |
EP1148414B1 (en) | Method and apparatus for allocating functional units in a multithreaded VLIW processor | |
US5459843A (en) | RISC-type pipeline processor having N slower execution units operating in parallel interleaved and phase offset manner with a faster fetch unit and a faster decoder | |
EP0427245B1 (en) | Data processor capable of simultaneously executing two instructions | |
EP0473420A2 (en) | Virtual long instruction word memory architecture for digital signal processor | |
US6839831B2 (en) | Data processing apparatus with register file bypass | |
JP3829166B2 (ja) | 極長命令語(vliw)プロセッサ | |
JP2002333978A (ja) | Vliw型プロセッサ | |
EA004196B1 (ru) | Управляющий программный продукт и система обработки данных | |
EP0376004A2 (en) | Variable length pipe operations sequencing | |
JPH1165844A (ja) | パイプラインバイパス機能を有するデータ処理装置 | |
US5890009A (en) | VLIW architecture and method for expanding a parcel | |
JP3702184B2 (ja) | データ処理装置 | |
US5778208A (en) | Flexible pipeline for interlock removal | |
JPH09237184A (ja) | 命令実行方法および命令実行装置 | |
EP0496407A2 (en) | Parallel pipelined instruction processing system for very long instruction word | |
JP2916605B2 (ja) | コンピュータ用プロセツサ | |
US5828861A (en) | System and method for reducing the critical path in memory control unit and input/output control unit operations | |
JP2861234B2 (ja) | 命令処理装置 | |
JPH08106383A (ja) | 演算処理装置 | |
JPH08328859A (ja) | Vliwコンピュータに適用される仮想並列演算装置 |