JP5263844B2 - パイプラインプロセッサにおける長い待ち時間命令の処理 - Google Patents
パイプラインプロセッサにおける長い待ち時間命令の処理 Download PDFInfo
- Publication number
- JP5263844B2 JP5263844B2 JP2010500342A JP2010500342A JP5263844B2 JP 5263844 B2 JP5263844 B2 JP 5263844B2 JP 2010500342 A JP2010500342 A JP 2010500342A JP 2010500342 A JP2010500342 A JP 2010500342A JP 5263844 B2 JP5263844 B2 JP 5263844B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- thread
- counter
- processed
- processor
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims description 43
- 238000000034 method Methods 0.000 claims description 47
- 230000007704 transition Effects 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 16
- 241000238876 Acari Species 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 4
- 241001522296 Erithacus rubecula Species 0.000 claims 2
- 238000007792 addition Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000010521 absorption reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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
長い待ち時間命令に対処するために、プロセッサは、理想的には、命令が完了するのを待っているスレッドをスワップアウトする機構を提供すべきである。しかし、ある一定の要件も満たす必要がある。
第二に、各スレッドは、全てがストリーム内で隣接する可能性がある大量の長い待ち時間命令を有するかもしれない。長い待ち時間命令からの戻りデータが、それらが送出されたものとは異なる順序で戻って来ることを許すことができなければならない。いくつかの長い待ち時間命令が一度に処理される可能性があるとすると、長い待ち時間命令からのデータ障害に起因するプロセッサの停止をできる限り低減すべきである。
第四に、書き込まれたものとは異なる順序で結果を読取ることができなければならない。第五に、宛先の複数の読取りアクセスに対するペナルティがあってはならない。第六に、同じ宛先が別の長い待ち時間命令に対する宛先として書込まれ、かつ再使用されることも同じく許されるべきである。
最後に、長い待ち時間命令及び潜在的データ障害命令を処理するのに専用又は大容量ストレージが必要とされないことが好ましい。また、ゲート費用が最小に保たれることも好ましい。
好ましくは、プロセッサ内の上述の又は各スレッドは、いかなる一時点においても、処理されているか、又は処理されるのを待っているか、又は段階c)ii)に従って休止されているかのいずれかである。好ましくは、いかなる一時点においても、複数のスレッドの部分集合が処理されている。1つの好ましい実施形態では、部分集合内のスレッドの個数は4である。好ましくは、本方法は、更に、スレッドの部分集合を、部分集合内の各スレッドからの1つの命令をラウンドロビン方式で実行することによって処理する段階を含む。
一実施形態では、本方法は、更に、スレッドの最後の命令を処理した後に、このスレッドを複数のスレッドの部分集合から削除する段階を含む。従って、スレッドが完全に処理された状態で、部分集合内に利用可能な空間ができる。
好ましくは、上述の又は各スレッドは、これらのスレッドに関連付けられた複数のN個のそれぞれのカウンタを有し、本方法の段階c)は、各障害命令を処理する前に、スレッドに関連付けられたN個のカウンタのうちの少なくとも1つの値を検査する段階、及びi)少なくとも1つのカウンタの値の全てがゼロであった場合に障害命令を処理する段階、又はii)少なくとも1つのカウンタの値のうちの1つ又はそれよりも多くが非ゼロであった場合に障害命令の処理を後の時点まで休止する段階を含む。
また、好ましくは、各障害命令には、その障害命令が処理される前に、N個のカウンタのうちのどれを検査すべきであるかという指示を含む命令が先行するか、又は各障害命令自体が、その障害命令が処理される前に、N個のカウンタのうちのどれを検査すべきであるかという指示を含むかのいずれかである。
また、コンピュータ手段上で実行された時に、このコンピュータ手段に本発明の第1の態様の方法を実施させるコンピュータプログラムも提供する。そのようなコンピュータプログラムが記憶された記録担体も提供する。
1つの好ましい実施形態では、プロセッサは、更にスレッドマネージャを含み、カウンタは、命令復号器によって維持されるが、スレッドマネージャによってアクセス可能である。
好ましくは、プロセッサは、複数のスレッドを処理するのに適し、各スレッドは、これらのスレッドに関連付けられたそれぞれのカウンタを有する。1つの好ましい実施形態では、複数のスレッドに16個のスレッドが存在する。
好ましくは、プロセッサは、スレッドの最後の命令を処理した後に、このスレッドを複数のスレッドの部分集合から削除するように構成される。状態間のこの移行は、好ましくは、スレッドマネージャによって実行される。
好ましくは、プロセッサは、いかなる一時点においても、複数のスレッド位置のうちのゼロ、1つ、又はそれよりも多くが空きであるようにこの複数のスレッドを最大数とするあらゆる個数のスレッドを処理するように構成される。
また、各障害命令には、その障害命令が処理される前にN個のカウンタのうちのどれを検査すべきであるかという指示を含む命令が先行する。代替的に、各障害命令は、その障害命令が処理される前にN個のカウンタのうちのどれを検査すべきであるかという指示を含むことができる。
本発明の一態様に関連して説明した特徴は、本発明の他の態様にも適用可能である場合がある。
これより本発明の例示的な実施形態を添付図面を参照して以下に説明する。
最初に、「空き」から「待機」への移行301を考える。この移行は、新しいスレッドが提出された時に発生し、次に、このスレッドは、「実行中」部分集合209に入力されるのを常駐スレッド内で待つ。
ここで、「待機」から「実行中」303への移行を考える。「待機」部分集合内で空間が利用可能になる時に(実行中のスレッドがその最後の命令を終了し、それによって「実行中」部分集合内の空間を解放する時に発生させることができる)、スレッドマネージャは、「待機」スレッドのうちの1つを選択し、それを「実行中」状態へと移行させる。これは、スレッドスケジューリングとして公知である。スレッドマネージャは、移行に向けて常駐待機スレッドから待機スレッドを選択するアルゴリズムを用いることができ、例えば、単純なラウンドロビン手法を用いることができる。
障害状態への移行及びそこからの移行309及び311に対して以下に説明する。
以上の説明は、「実行中」部分集合内に存在することが許されるスレッドの個数を選択することにより、データ障害を比較的容易に回避することができる短い待ち時間命令にだけに関する。これより長い待ち時間命令の処理に対して以下に説明する。
図2を参照すると、列207は、各スレッドにおける障害カウンタ値を記憶する。この例では、3個の障害カウンタが存在し、これらのカウンタは、各々0から7のいずれかの値を取ることができる。しかし、障害カウンタの個数は異なるものとすることができ、及び/又は各障害カウンタが取ることができる値の個数も異なるものとすることができる。障害カウンタ値は、実際には命令復号器に記憶されるが、スレッドマネージャは、これらの障害カウンタ値へのアクセスを有する。
そのような長い待ち時間命令の例を図4に示している。図4に示している命令は、32ビットメモリロード命令であり、24ビットのペイロード、6ビットの演算命令、及び増分される障害カウンタを示す2ビットを含む。
いくつかの障害カウンタを存在させることができ、命令復号器が、各長い待ち時間命令に対して増分される障害カウンタを指定することは前に解説した。この例では、各々が0から7の値を取ることができる3個の障害カウンタが存在する。
1)レジスタ位置(r)0をロードし、障害カウンタ(HC)0を増分する。
2)r1をロードし、HC0を増分する。
3)r2をロードし、HC1を増分する。
4)r3をロードし、HC1を増分する。
5)r4をロードし、HC2を増分する。
6)r5をロードし、HC2を増分する。
7)HC0が値0に減少するのを待つ。
8)r0とr1とを加算し、r9の中に入れる。
9)HC1が値0に減少するのを待つ。
10)r2とr3とを加算し、r10の中に入れる。
11)HC2が値0に減少するのを待つ。
12)r4とr5とを加算し、r11の中に入れる。
1)r0をロードし、HC0を増分する。
2)r1をロードし、HC0を増分する。
3)r2をロードし、HC1を増分する。
4)r3をロードし、HC1を増分する。
5)r4をロードし、HC2を増分する。
6)r5をロードし、HC2を増分する。
7)HC0、HC1、及びHC2が値0に減少するのを待つ。
8)r0とr1とを加算し、r9の中に入れる。
9)r2とr3とを加算し、r10の中に入れる。
10)r4とr5とを加算し、r11の中に入れる。
スレッドを終えることができる前に、障害カウンタは、全てゼロでなければならない。(非ゼロ障害カウンタは、未処理命令が存在することを意味するので、これは明らかである。)
命令復号器は、全てのスレッドに対する障害カウンタを記憶する。障害カウンタは、スレッドが障害状態にある時に非ゼロとすることができる。障害カウンタがゼロになると直ぐに、スレッドマネージャは、次の検査でこれらのスレッドを待機状態へと移行させることになる。
図1から5を参照して上記に解説した例は、本発明の方法を実行するためのハードウエアを示している。本発明の方法は、当然ながら代替的にソフトウエアで実施することができる。
最初に、マルチスレッドプロセッサでは、多くのスレッドが、潜在的データ障害を有する場合がある。説明した実施形態では、16個の常駐スレッドのうちの12つまでを障害状態におき、それと同時に4個を依然として実行中とすることができるので、この要件が満たされる。異なる実施形態(異なる個数のスレッドが常駐を許され、異なる個数を実行中部分集合内に置くことが許される)においてもこれは成り立つことになる。
1)r0をロードし、HC0を増分する(長い待ち時間ロード命令)。
2)r1をサンプリングし、HC0を増分する(これは、長い待ち時間サンプリング命令である)。
3)HC0が値0に減少するのを待つ。
4)r0とr4を加算し、r2の中に入れる(短い待ち時間加算命令)。
5)r1とr5とを加算し、r3の中に入れる。
また、長い待ち時間命令からのデータ障害に起因するプロセッサの停止をできる限り低減すべきである。最大利得は、スレッドがWHC命令でスケジューリング解除されることに起因するものと期待され、これは、新しいスレッドがスケジューリングされることになり、確実に行けばこれらのスレッドが、それ自体いずれかのWHC命令に遭遇する前に十分に長い間実行されることになるからである。更に、WHC命令は、長い待ち時間命令の直後にくる必要はない。WHC命令は、データソースの直前にこなければならない。有利な命令を長い待ち時間命令とWHCの間に挿入することができ、それによって待ち時間が更に吸収されることになる。複数の障害カウンタを有することにより、実際には不要な、データを待つのに費やされる時間が低減される。例えば、2つの障害カウンタ、HC0及びHC1しか持たないシステムにおける以下の命令ストリームを考える。
1)r0をロードし、HC0を増分する(長い待ち時間ロード命令)。
2)r1をロードし、HC0を増分する。
3)r2をロードし、HC1を増分する。
4)HC0が値0に減少するのを待つ(すなわち、r0及びr1を待つ)。
5)r0とr10とを加算し、r3の中に入れる(短い待ち時間加算命令)。
6)r3とr11とを加算し、r4の中に入れる。
7)r4とr12とを加算し、r5の中に入れる。
8)r5とr1とを加算し、r6の中に入れる(初めてr1が用いられる)。
9)r6とr13とを加算し、r6の中に入れ戻す。
10)r6とr14とを加算し、r6の中に入れ戻す。
11)r6とr15とを加算し、r6の中に入れ戻す。
12)HC1が値0に減少するのを待つ。
13)r2とr6とを加算し、r6の中に入れ戻す。
分岐のようなフロー制御をサポートするように、スレッド内のあらゆる命令を飛ばして進むことができなければならない。ここではこの要件は、全ての長い待ち時間命令が、復号される時に障害カウンタを増分し、宛先レジスタに書き込まれる時に障害カウンタを減分することによって満たされる。WHC命令が存在するか否かに関わらず、この増分及び減分は常時発生し、障害カウンタの一貫性は常時維持される。スレッドは、このスレッドに対する全ての障害カウンタがゼロになるまで終了することができない。
1)r0をロードし、HC0を増分する。
2)r1をロードし、HC0を増分する。
3)HC0が値0に減少するのを待つ。
4)41とr4とを加算し、r2の中に入れる。
5)r0とr5とを加算し、r3の中に入れる。
この例では、r0のロードは、r1のロードの前に実施されるが、r0の加算は、r1の加算の後に実施される。
1)r0をロードし、HC0を増分する。
2)HC0が値0に減少するのを待つ。
3)r0とr4とを加算し、r2の中に入れる。
4)r0とr5とを加算し、r3の中に入れる。
この例では、r0は、命令3)及び4)の各々において2度読み出すべきである。
1)r0をロードし、HC0を増分する。
2)HC0が値0に減少するのを待つ。
3)r0とr4とを加算し、r2の中に入れる。
4)r0をロードし、HC0を増分する。
5)HC0が値0に減少するのを待つ。
6)r0とr5とを加算し、r3の中に入れる。
この例では、r0は2度書き込まれる。
101 スレッドマネージャ
103 命令フェッチ装置
105 外部メモリ
107 内部キャッシュ
Claims (33)
- スレッドが、複数の逐次命令を含み、該複数の逐次命令が、短い待ち時間命令、及び長い待ち時間命令、及び少なくとも1つの障害命令を含み、該障害命令が、該障害命令が処理される前に1つ又はそれよりも多くの先行命令が処理されることを要求する、パイプラインプロセッサにおいてスレッドを処理する方法であって、
a)各長い待ち時間命令を処理する前に、スレッドに関連付けられたカウンタを1だけ増分する段階、
b)各長い待ち時間命令が処理された後に、前記スレッドに関連付けられた前記カウンタを1だけ減分する段階、
c)各障害命令を処理する前に、前記スレッドに関連付けられた前記カウンタの値を検査する段階、及び
i)前記カウンタの値がゼロであった場合に前記障害命令を処理する段階、又は
ii)前記カウンタの値が非ゼロであった場合に前記障害命令を処理する段階を後の時点まで休止する段階、
を含むことを特徴とする方法。 - 各々にそれぞれのカウンタが関連付けられた複数のスレッドを処理するためのものであることを特徴とする請求項1に記載の方法。
- 前記プロセッサにおける前記又は各スレッドは、いかなる一時点においても、処理されているか、又は処理されるのを待っているか、又は請求項1の段階c)ii)に従って休止されているかのいずれかであることを特徴とする請求項1又は請求項2に記載の方法。
- いかなる一時点においても、複数のスレッドの部分集合が、処理されていることを特徴とする請求項3に記載の方法。
- 前記スレッドの部分集合を該部分集合内の各スレッドから1つの命令をラウンドロビン方式で実行することによって処理する段階を更に含むことを特徴とする請求項4に記載の方法。
- 前記部分集合内のスレッドの個数が、短い待ち時間命令を処理するのに必要とされる最大クロック刻み回数に等しいことを特徴とする請求項4又は請求項5に記載の方法。
- スレッドの最後の命令を処理した後に、該スレッドを前記複数のスレッドの前記部分集合から削除する段階、
を更に含むことを特徴とする請求項4から請求項6のいずれか1項に記載の方法。 - 請求項1の段階c)ii)に従って休止された命令を有するあらゆるスレッドに関連付けられた前記カウンタの前記値を定期的に検査して、スレッドの該カウンタの該値がゼロであった場合に、このスレッドを処理されるのを待っている状態へと移行する段階、
を更に含むことを特徴とする請求項3から請求項7のいずれか1項に記載の方法。 - 前記検査する段階は、クロック刻み毎に実施されることを特徴とする請求項8に記載の方法。
- 前記プロセッサは、複数のスレッドの個数以下の任意数のスレッドを処理するように構成されており、いかなる一時点においても、複数のスレッドのうち、ゼロ、1又は複数が空きであるようにすることを特徴とする請求項2から請求項9のいずれか1項に記載の方法。
- 前記又は各スレッドには、複数N個のそれぞれのカウンタが関連付けられており、
段階c)は、
各障害命令を処理する前に、前記スレッドに関連付けられた前記N個のカウンタのうちの少なくとも1つの前記値を検査する段階、及び
i)前記少なくとも1つのカウンタの前記値の全てがゼロであった場合に前記障害命令を処理する段階、又は
ii)前記少なくとも1つのカウンタの前記値の1つ又はそれよりも多くが非ゼロであった場合に、前記障害命令を処理する段階を後の時点まで休止する段階、
を含む、
ことを特徴とする請求項1から請求項10のいずれか1項に記載の方法。 - 各長い待ち時間命令は、前記N個のカウンタのうちのどれを該長い待ち時間命令が処理される前に増分し、かつ該長い待ち時間命令が処理された後に減分すべきであるかの指示を含むことを特徴とする請求項11に記載の方法。
- 各障害命令には、該障害命令が処理される前に前記N個のカウンタのうちのどれを検査すべきであるかの指示を含む命令が先行することを特徴とする請求項12に記載の方法。
- 各障害命令が、該障害命令が処理される前に前記N個のカウンタのうちのどれを検査すべきであるかの指示を含むことを特徴とする請求項12に記載の方法。
- コンピュータ手段上で実行された時に請求項1から請求項14のいずれか1項に記載の方法を該コンピュータ手段に実施させるコンピュータプログラム。
- 請求項15に記載のコンピュータプログラムを記憶した記録担体。
- スレッドが、複数の逐次命令を含み、該複数の逐次命令が、短い待ち時間命令、及び長い待ち時間命令、及び少なくとも1つの障害命令を含み、該障害命令が、該障害命令が処理される前に1つ又はそれよりも多くの先行命令が処理されることを要求する、スレッドを処理するためのパイプラインプロセッサであって、
スレッドに関連付けられたカウンタ、
各長い待ち時間命令が処理される前に前記カウンタを1だけ増分するための手段、
各長い待ち時間命令が処理された後に前記カウンタを1だけ減分するための手段、及び 各障害命令が処理される前に前記スレッドに関連付けられた前記カウンタの値を検査して、i)該カウンタの値がゼロであった場合に該障害命令を処理し、又はii)該カウンタの値が非ゼロであった場合に該障害命令の処理を後の時点まで休止するための手段、
を含むことを特徴とするプロセッサ。 - 前記カウンタを増分するための前記手段、及び、該カウンタを減分するための前記手段は、短い待ち時間命令と長い待ち時間命令の間の区別を付けることができる命令復号器に含まれることを特徴とする請求項17に記載のプロセッサ。
- スレッドマネージャを更に含み、
前記カウンタは、前記命令復号器によって維持されるが、前記スレッドマネージャによってアクセスすることができる、
ことを特徴とする請求項18に記載のプロセッサ。 - 障害命令が処理される前に前記スレッドに関連付けられた前記カウンタの値を検査するための前記手段は、該障害命令と残りの命令との間の区別を付けることができる前記命令復号器に含まれることを特徴とする請求項18又は請求項19に記載のプロセッサ。
- 各々がそれぞれのカウンタに関連付けられた複数のスレッドを処理するのに適することを特徴とする請求項17から請求項20のいずれか1項に記載のプロセッサ。
- プロセッサにおける前記又は各スレッドは、いかなる一時点においても、処理されているか、又は処理されるのを待っているか、又は請求項17のii)に従って休止されているかのいずれかであることを特徴とする請求項17から請求項21のいずれか1項に記載のプロセッサ。
- いかなる一時点においても、複数のスレッドの部分集合が、処理されていることを特徴とする請求項22に記載のプロセッサ。
- スレッドの前記部分集合を該部分集合内の各スレッドから1つの命令をラウンドロビン方式で実行することによって処理するための手段を更に含むことを特徴とする請求項23に記載のプロセッサ。
- 前記部分集合内のスレッドの個数が、短い待ち時間命令を処理するのに要求される最大クロック刻み回数に等しいことを特徴とする請求項23又は請求項24に記載のプロセッサ。
- スレッドの最後の命令を処理した後に、該スレッドを前記複数のスレッドの前記部分集合から削除するように構成されることを特徴とする請求項23から請求項25のいずれか1項に記載のプロセッサ。
- 請求項17のii)に従って休止された命令を有するあらゆるスレッドに関連付けられた前記カウンタの前記値を定期的に検査して、スレッドの該カウンタの該値がゼロであった場合にこのスレッドを処理されるのを待っている状態へと移行させるように構成されることを特徴とする請求項23から請求項26のいずれか1項に記載のプロセッサ。
- クロック刻み毎に前記カウンタの前記値を検査するように構成されることを特徴とする請求項27に記載のプロセッサ。
- 複数のスレッドの個数以下の任意数のスレッドを処理するように構成されており、いかなる一時点においても、複数のスレッドのうち、ゼロ、1又は複数が空きであるようにすることを特徴とする請求項21から請求項28のいずれか1項に記載のプロセッサ。
- 前記又は各スレッドには、複数N個のそれぞれのカウンタが関連付けられており、該スレッドに関連付けられた該カウンタの値を検査するための前記手段は、
各障害命令が処理される前に前記スレッドに関連付けられた前記N個のカウンタのうちの少なくとも1つの前記値を検査して、i)該少なくとも1つのカウンタの該値の全てがゼロであった場合に該障害命令を処理し、又はii)該少なくとも1つのカウンタの該値のうちの1つ又はそれよりも多くが非ゼロであった場合に該障害命令の処理を後の時点まで休止するための手段、
を含む、
ことを特徴とする請求項17から請求項29のいずれか1項に記載のプロセッサ。 - 各長い待ち時間命令が、前記N個のカウンタのうちのどれを該長い待ち時間命令が処理される前に増分し、かつ該長い待ち時間命令が処理された後に減分すべきかの指示を含むことを特徴とする請求項30に記載のプロセッサ。
- 各障害命令には、該障害命令が処理される前に前記N個のカウンタのうちのどれを検査すべきかの指示を含む命令が先行することを特徴とする請求項31に記載のプロセッサ。
- 各障害命令が、該障害命令が処理される前に前記N個のカウンタのうちのどれを検査すべきかの指示を含むことを特徴とする請求項31に記載のプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0705804.3 | 2007-03-26 | ||
GB0705804A GB2447907B (en) | 2007-03-26 | 2007-03-26 | Processing long-latency instructions in a pipelined processor |
PCT/GB2008/000479 WO2008117008A1 (en) | 2007-03-26 | 2008-02-12 | Processing long-latency instructions in a pipelined processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010522920A JP2010522920A (ja) | 2010-07-08 |
JP5263844B2 true JP5263844B2 (ja) | 2013-08-14 |
Family
ID=38024884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010500342A Active JP5263844B2 (ja) | 2007-03-26 | 2008-02-12 | パイプラインプロセッサにおける長い待ち時間命令の処理 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8214624B2 (ja) |
EP (1) | EP2140347B1 (ja) |
JP (1) | JP5263844B2 (ja) |
GB (1) | GB2447907B (ja) |
WO (1) | WO2008117008A1 (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261025B2 (en) | 2007-11-12 | 2012-09-04 | International Business Machines Corporation | Software pipelining on a network on chip |
US20090260013A1 (en) * | 2008-04-14 | 2009-10-15 | International Business Machines Corporation | Computer Processors With Plural, Pipelined Hardware Threads Of Execution |
US8423715B2 (en) | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
GB2469299B (en) | 2009-04-07 | 2011-02-16 | Imagination Tech Ltd | Ensuring consistency between a data cache and a main memory |
US11210098B2 (en) | 2013-07-15 | 2021-12-28 | Texas Instruments Incorporated | Variable latency instructions |
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
US20150277925A1 (en) * | 2014-04-01 | 2015-10-01 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
US10649780B2 (en) * | 2014-04-01 | 2020-05-12 | The Regents Of The University Of Michigan | Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order |
GB2544994A (en) * | 2015-12-02 | 2017-06-07 | Swarm64 As | Data processing |
US11074075B2 (en) * | 2017-02-24 | 2021-07-27 | Advanced Micro Devices, Inc. | Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value |
GB2584227B (en) * | 2017-06-16 | 2021-06-23 | Imagination Tech Ltd | Inter-pipeline data hazard avoidance |
GB2563582B (en) * | 2017-06-16 | 2020-01-01 | Imagination Tech Ltd | Methods and systems for inter-pipeline data hazard avoidance |
US9934287B1 (en) | 2017-07-25 | 2018-04-03 | Capital One Services, Llc | Systems and methods for expedited large file processing |
US11093251B2 (en) | 2017-10-31 | 2021-08-17 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
US11068305B2 (en) | 2018-05-07 | 2021-07-20 | Micron Technology, Inc. | System call management in a user-mode, multi-threaded, self-scheduling processor |
US11513838B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11513840B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US11126587B2 (en) | 2018-05-07 | 2021-09-21 | Micron Technology, Inc. | Event messaging in a system having a self-scheduling processor and a hybrid threading fabric |
US11074078B2 (en) | 2018-05-07 | 2021-07-27 | Micron Technology, Inc. | Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion |
US11513837B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11119972B2 (en) * | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11119782B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Thread commencement using a work descriptor packet in a self-scheduling processor |
US11157286B2 (en) | 2018-05-07 | 2021-10-26 | Micron Technology, Inc. | Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
CN113853584A (zh) * | 2019-04-15 | 2021-12-28 | 德州仪器公司 | 可变延时指令 |
US11455171B2 (en) * | 2019-05-29 | 2022-09-27 | Gray Research LLC | Multiported parity scoreboard circuit |
US11188406B1 (en) * | 2021-03-31 | 2021-11-30 | Advanced Micro Devices, Inc. | Detecting execution hazards in offloaded operations |
US11467841B1 (en) * | 2021-06-01 | 2022-10-11 | Andes Technology Corporation | Microprocessor with shared functional unit for executing multi-type instructions |
US11762661B2 (en) * | 2021-07-28 | 2023-09-19 | Micron Technology, Inc. | Counter for preventing completion of a thread including a non-blocking external device call with no-return indication |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5961639A (en) * | 1996-12-16 | 1999-10-05 | International Business Machines Corporation | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US5961630A (en) * | 1997-12-30 | 1999-10-05 | Intel Corporation | Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency |
US5996064A (en) * | 1997-12-30 | 1999-11-30 | Intel Corporation | Method and apparatus for guaranteeing minimum variable schedule distance by using post-ready latency |
US6035389A (en) * | 1998-08-11 | 2000-03-07 | Intel Corporation | Scheduling instructions with different latencies |
US6311266B1 (en) * | 1998-12-23 | 2001-10-30 | Cray Inc. | Instruction look-ahead system and hardware |
US6711670B1 (en) | 1999-10-14 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | System and method for detecting data hazards within an instruction group of a compiled computer program |
US6490674B1 (en) | 2000-01-28 | 2002-12-03 | Hewlett-Packard Company | System and method for coalescing data utilized to detect data hazards |
US6715060B1 (en) * | 2000-01-28 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Utilizing a scoreboard with multi-bit registers to indicate a progression status of an instruction that retrieves data |
US6931641B1 (en) * | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
US6757811B1 (en) | 2000-04-19 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Slack fetch to improve performance in a simultaneous and redundantly threaded processor |
US6792525B2 (en) | 2000-04-19 | 2004-09-14 | Hewlett-Packard Development Company, L.P. | Input replicator for interrupts in a simultaneous and redundantly threaded processor |
US6598122B2 (en) | 2000-04-19 | 2003-07-22 | Hewlett-Packard Development Company, L.P. | Active load address buffer |
JP3796124B2 (ja) | 2001-03-07 | 2006-07-12 | 株式会社ルネサステクノロジ | スレッド間優先度可変プロセッサ |
US7096470B2 (en) * | 2002-09-19 | 2006-08-22 | International Business Machines Corporation | Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure |
US20040111594A1 (en) * | 2002-12-05 | 2004-06-10 | International Business Machines Corporation | Multithreading recycle and dispatch mechanism |
US7487502B2 (en) | 2003-02-19 | 2009-02-03 | Intel Corporation | Programmable event driven yield mechanism which may activate other threads |
US7000047B2 (en) * | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
US20040225868A1 (en) * | 2003-05-07 | 2004-11-11 | International Business Machines Corporation | An integrated circuit having parallel execution units with differing execution latencies |
US7257699B2 (en) * | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7664936B2 (en) | 2005-02-04 | 2010-02-16 | Mips Technologies, Inc. | Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages |
-
2007
- 2007-03-26 GB GB0705804A patent/GB2447907B/en active Active
- 2007-05-23 US US11/805,364 patent/US8214624B2/en active Active
-
2008
- 2008-02-12 JP JP2010500342A patent/JP5263844B2/ja active Active
- 2008-02-12 EP EP08702091.3A patent/EP2140347B1/en active Active
- 2008-02-12 WO PCT/GB2008/000479 patent/WO2008117008A1/en active Application Filing
-
2012
- 2012-06-03 US US13/487,218 patent/US8407454B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8214624B2 (en) | 2012-07-03 |
GB0705804D0 (en) | 2007-05-02 |
GB2447907B (en) | 2009-02-18 |
GB2447907A (en) | 2008-10-01 |
WO2008117008A1 (en) | 2008-10-02 |
EP2140347A1 (en) | 2010-01-06 |
JP2010522920A (ja) | 2010-07-08 |
EP2140347B1 (en) | 2017-05-31 |
US8407454B2 (en) | 2013-03-26 |
US20080244247A1 (en) | 2008-10-02 |
US20120246451A1 (en) | 2012-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5263844B2 (ja) | パイプラインプロセッサにおける長い待ち時間命令の処理 | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
EP1008053B1 (en) | Controlling memory access ordering in a multi-processing system | |
US7734897B2 (en) | Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads | |
JP4759273B2 (ja) | データ処理装置及び共用資源へのアクセス制御方法 | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
US20040205747A1 (en) | Breakpoint for parallel hardware threads in multithreaded processor | |
WO2011155097A1 (ja) | 命令発行制御装置及び方法 | |
WO2015057819A1 (en) | Computer processor with deferred operations | |
US8478971B1 (en) | Multithread handling | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
US20120159125A1 (en) | Efficiency of short loop instruction fetch | |
JPS63127368A (ja) | ベクトル処理装置の制御方式 | |
US20100332800A1 (en) | Instruction control device, instruction control method, and processor | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
KR100834180B1 (ko) | 프로그램/명령어의 실행을 구동하는 “l”구동법 및그것의 아키텍처와 프로세서 | |
US20080155237A1 (en) | System and method for implementing and utilizing a zero overhead loop | |
US20070260857A1 (en) | Electronic Circuit | |
JP5316407B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US10481913B2 (en) | Token-based data dependency protection for memory access | |
EP1299801A1 (en) | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors | |
US7124288B2 (en) | Programmable unit with a stack buffer storage device configurable into discrete shadow storage elements accessible by a plurality of command execution units | |
EP1384145B1 (en) | Expanded functionality of processor operations within a fixed width instruction encoding | |
JP4151497B2 (ja) | パイプライン処理装置 | |
CN117520038A (zh) | 一种超标量的低功耗处理器中处理异常和中断的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120924 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121225 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130325 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130408 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130424 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5263844 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |
|
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 |
|
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 |