JP3981378B2 - データ処理装置におけるパイプライン間の同期 - Google Patents
データ処理装置におけるパイプライン間の同期 Download PDFInfo
- Publication number
- JP3981378B2 JP3981378B2 JP2004533589A JP2004533589A JP3981378B2 JP 3981378 B2 JP3981378 B2 JP 3981378B2 JP 2004533589 A JP2004533589 A JP 2004533589A JP 2004533589 A JP2004533589 A JP 2004533589A JP 3981378 B2 JP3981378 B2 JP 3981378B2
- Authority
- JP
- Japan
- Prior art keywords
- pipeline
- queue
- coprocessor
- instruction
- stage
- 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
- 238000012545 processing Methods 0.000 title claims description 64
- 239000000872 buffer Substances 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 45
- 238000009825 accumulation Methods 0.000 claims description 39
- 238000012546 transfer Methods 0.000 claims description 26
- 230000001360 synchronised effect Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 15
- 238000011010 flushing procedure Methods 0.000 claims description 10
- 238000013461 design Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 208000036864 Attention deficit/hyperactivity disease Diseases 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 208000035231 inattentive type attention deficit hyperactivity disease Diseases 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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
-
- 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/3842—Speculative 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Description
本発明は、データ処理装置におけるパイプライン間の同期を達成する技法に関する。
複数のパイプラインステージを有するパイプラインの敷設されたプロセッサーの形をとるメインプロセッサーを、データ処理装置に備えることが知られている。これによって、複数のインストラクションが、いかなる時点においても、メインプロセッサーでの実行の処理中とすることができる。どの特定のインストラクションを実行する間も、そのインストラクションはメインプロセッサーの種々のパイプラインステージを通り、そのインストラクションの実行は、典型的には、インストラクションがメインプロセッサーの最後のパイプラインステージを経て処理されるとき完了し、その時点で、データ処理装置の状態は、そのインストラクションの実行の結果を反映するよう更新されている。一例として、メインプロセッサーのアクセス可能なレジスターバンクの1つ以上のレジスターの内容は、インストラクションの実行の結果に依存して更新される。
第一の観点から見ると、本発明は、一連のインストラクションを実行するよう動作可能なメインプロセッサーであって、複数の第一パイプラインステージを有する第一のパイプラインを備えるメインプロセッサーと、前記一連のインストラクションにおけるコプロセッサーインストラクションを実行するよう動作可能なコプロセッサーであって、複数の第二パイプラインステージを有する第二のパイプラインを備え、かつ各コプロセッサーインストラクションは第一のパイプラインおよび第二のパイプラインの双方を通って経路付けられるようアレンジされているコプロセッサーと、1つのパイプラインにおける所定のパイプラインステージを別のパイプラインにおけるパートナーパイプラインステージと結合する少なくとも1つの同期キュー(待ち行列)であって、その所定のパイプラインステージは、コプロセッサーインストラクションを処理するとき同期キューにトークンが置かれるように動作可能であり、かつパートナーパイプラインステージは、同期キューからのトークンを受け取ってそのコプロセッサーインストラクションを処理するよう動作可能であり、それによって、所定のパイプラインステージとパートナーパイプラインステージとの間で第一および第二のパイプラインを同期させる同期キューとを備えるデータ処理装置を提供する。
図1は、本発明の好ましい実施例の同期技法が使用されるデータ処理システムを示す。図1に示されるように、プロセッサーコア40は、プロセッサーコア40によって要求されるインストラクションのアクセスされるインストラクションキャッシュまたは他のメモリー装置10に結合されている。プロセッサーコア40内には、プリフェッチ(先取り)ユニット20が提供されていて、パイプライン化プロセッサー30によって要求されると、プリフェッチユニットの判断するインストラクションの要求が経路50を通って発行される。そして、インストラクションが検索されるインストラクションメモリー10が、インストラクションを出力して、経路60を通してプリフェッチユニット20に戻し、そしてそこから、それらは経路70を通してパイプライン化プロセッサー30へと送られる。インストラクションを実行しているとき、パイプライン化プロセッサー30は、データ値を収容するレジスターバンク35のレジスターとインターフェースで接続して、インストラクションによって操作される。ロードインストラクションが用いられて、データ値をデータメモリー87からレジスターバンクへとローディングし、そして蓄積インストラクションが用いられて、データ値をレジスターバンク35からデータメモリー87へと蓄積する。そしてデータ処理インストラクションが、レジスターバンク35の特定のレジスターに蓄積されるデータ値で実行される。
コアは、インストラクションを複数のコプロセッサーに送って、それらとデータを交換する必要がある。これらのコプロセッサーは、多かれ少なかれコアと調和することが意図されており、同様にコアにパイプライン化されている。インストラクションは、コアパイプラインのフェッチステージから送り出されてコプロセッサーによって復号され、そしてそれは、復号されたインストラクションをそれ自体のパイプラインへと下す。コプロセッサーインストラクションは、条件符号がうまくいかなければ、コアによってキャンセルされ、あるいはコプロセッサーパイプライン全体が、ブランチが誤って予測された場合にはフラッシュされる。ロードおよび蓄積データもまた、コアLSUとコプロセッサーパイプラインの間を通る必要がある。
GCPインターフェースは、一方のパイプラインから他方のパイプラインへとトークンを交換することによって、2つのパイプライン間の緩やかな同期を達成する。これらのトークンは、パイプライン間のキューを下り、また更なる情報を運搬する。多くの場合、キューの主要な目的は、処理されているインストラクションについての情報を運搬し、または一方のパイプラインに他方のパイプラインで生じている事象のことを知らせるものである。トークンは、コプロセッサーインストラクションが、関係するパイプラインステージから次のステージへと送られるたびごとに生成される。これらのトークンは、他方のパイプラインでパートナーステージによって選択され、そのステージの対応するインストラクションが動き続けることを許可するのに用いられる。各パイプラインを下るコプロセッサーインストラクションの動きは、パイプラインを接続する種々のキューに沿ったトークンの動きによって正確に整合される。そうして、一般的なコプロセッサーインターフェースは、制御駆動よりもむしろデータ駆動である。
GCPは、コプロセッサーに特有の一組のインストラクションから取られる複数のインストラクションを実行する必要がある。所定のコプロセッサーは、必ずしも全ての可能なコプロセッサーインストラクションを実行するものではなく、また取り扱うことのできないこれらのインストラクションを拒絶する。以下の表1は、特定の1つのプロセッサーコア、すなわち英国ケンブリッジのARMリミティッドによって開発されたARMプロセッサーコアの1つによって支援されるコプロセッサーインストラクションを全て列挙し、各々を簡潔に説明する。
GCPパイプラインは、コアパイプラインに非常に類似するが、フェッチステージを欠く。代わりに、インストラクションは、コアからGCPパイプラインの復号ステージへと送られる。そして復号ステージは、インストラクションを復号し、ノンコプロセッサーインストラクションおよび、整合しないコプロセッサー番号を収容するいかなるコプロセッサーインストラクションをも拒絶する。いずれのベクトル化データ転送の長さもまた、この時点で決定されてコアへと返送される。そして、復号されたインストラクションは、発行ステージへと送られる。このステージは、インストラクションのこの特定の事例がアクセプトされるかどうかを決定する。そうできなければ、おそらくはそれが存在していないレジスターをアドレスするからであり、インストラクションがバウンスされて、コアにそれをアクセプトできないと知らせる。インストラクションが有効でもあり、かつ実行可能でもあるならば、それは実行パイプラインEX1乃至EX6を下る。EX6(ここではまたライトバック(WB)ステージとも称する)のパイプラインの底で、インストラクションは退却を待ち、それが整合トークンをコアによって送り込まれた別のキューから受け取るときにそれを行うことができる。
図3は、コアおよびGCPパイプライン並びにそれらの間で通信を行う同期キューを示す。各キューは、非常に短いファーストインファーストアウト(FIFO)バッファとして実行される。キューには、明確なフロー制御が必要とされず、それは、キューの間のパイプライン長によって、いずれのキューも任意の時間に保持できる項目の数が制限されるからである。図示されている形状では、各キューにおいて3つを超えるスロットが使用可能である必要はない。必要とされる状態情報は、キューが空であるときに指示するフラッグのみである。これは、キューの受信端でモニターされることしか必要でなく、そして関係するパイプラインステージが動き続けることができるかどうかを判定する。キューによって運搬されるいかなる情報もまた、同時に読み、作用することができる。
コアは、全てのインストラクションを、そのフェッチステージ190を残してインストラクションキュー300に送る。理想的には、それはコプロセッサーインストラクションで送るのみであるが、このステージにはインストラクションを復号する時間が無い。インストラクションがGCP自体の復号ステージ205に到着するとインストラクションを復号し、かつノンコプロセッサーインストラクションを拒絶することがGCPにゆだねられている。それは、これを静かに行うことができるが、コアがこれらのインストラクションを取り除くことを知る必要がないからであって、それは、その復号ステージ200において各インストラクションのタイプを決定することとなるからである。インストラクションキュー300は、3スロット長である。
コアは、それが既にコプロセッサーへと送ったインストラクションを、キャンセルすることを望むかもしれない。このようなことが起こるのは、インストラクションがその条件符号を達成できないときであって、それによって、インストラクションは、コアおよびコプロセッサーの双方におけるインストラクションの流れから取り除かれることが必要となる。キャンセルキュー310は、この情報をコプロセッサーへと運び、それは3スロット長である。
フィニッシュキュー320は、3スロット長であって、コプロセッサーパイプラインの各インストラクションに退却するよう許可することによって、パイプラインの端で同期性を維持する。コプロセッサーインストラクションの退却を、フィニッシュキュー320の端から現れるトークンに合致させるのに十分な長さだけ遅延させる必要性によって、コプロセッサーパイプラインの長さが決定される。ロードおよび蓄積インストラクションは、フィニッシュキューを利用するものではないので、CDPインストラクションのみがこのキューを必要とすることになる。ロードおよび蓄積インストラクションがどのように退却するかは、後の章で説明される。
コプロセッサーがインストラクションを復号したとき、それは、ベクトル化ロードまたは蓄積動作がどれだけ長くなるのかを知ることとなる。この情報は、同期トークンと一緒に長さキュー330に送られる。一般的な場合において、インストラクションを、フェッチステージ190から、情報が必要とされるEX1ステージ260(ここではシフトステージとも称される)までコアパイプラインで送るよりも、インストラクションを受け取り、それを復号して長さを戻すほうが長くかかる。コアEX1ステージにトークンが到着するのが遅れると、そのステージが1サイクルだけストールすることになる。これによって、余分なサイクルがコプロセッサーインストラクションの実行に加えられる。幸運なことに、この罰則が全てのコプロセッサーインストラクションについて被られるわけではないが、この理由は後の章で詳述する。長さキューは、3スロット長である。
コプロセッサーは、それがインストラクションをアクセプトできず、そしてこの情報を同期トークンと一緒にアクセプトキュー340へと送ることを、発行ステージで決定する。コアEX2ステージ270(ここではまたALUステージとも称される)が、対応するインストラクションを拒絶するようにそれに告げるトークンを受け取ると、それは、EX2ステージをクリアすることによって、パイプラインからインストラクションを取り除く。アクセプトキューは、3スロット長である。
ブランチが誤って予測されているならば、コアが双方のパイプラインをフラッシュすることが必要となる。この動作は、潜在的にパイプライン全体に影響を及ぼすので、それは、キューにおいて送られるものではなく、コアからコプロセッサーへと放送され、キューと同じタイミングの制約を受ける。フラッシュ信号は、コプロセッサーによって受け取られるとき、パイプラインおよびインストラクションキュー300がクリアされて、インストラクションにフラッシュを引き起こさせる。
たいていのコプロセッサーインストラクションは、結果的に、単一の値かまたはベクトルとして、インターフェースを横切るデータの転送を生じる。したがって、データを送るのに経路が必要とされる。これらの経路によって、コアLSU222がコプロセッサーパイプラインと通信できるようになる。コプロセッサーは、一般的に別個のLSUを有してはいないので、ロードデータの蓄積および受け取りのためのデータの生成が、直接パイプラインによって行われる。
ロードおよび蓄積は、以下の章で別々に記述される。
ロードデータは、図5に示されるように、コアLSU222のWBステージ250によってインターフェースを横切って送られ、コプロセッサーパイプラインのEX6ステージ275(すなわちWBステージ)によって受け取られる。EX6のインストラクションが退却できるようにするフィニッシュトークンを待つこと以外には、コプロセッサーパイプラインは、発行ステージを超えてストールできないので、ロードインストラクションは、常にデータがコプロセッサーに到着するのと同期してEX6に到着する。したがって、ロードキューは、ダブルバッファ410によって実行され、それは、EX6へのロードインストラクションの到着でデータを再調整するように働く。このダブルバッファ410は、図4に示されている。
コアLSUは、データが到着するときにそれをアクセプトすることを保証できないので、蓄積キュー400が必要となる。このキューは、LSU222のDC1ステージ230(ここではまたメモリー1ステージとも称される)を、コプロセッサーの発行ステージ215に接続する。様々な量のデータが転送されるので、LSU222がデータの転送を一時的に停止できるようにするよう、蓄積キュー400にフロー制御が必要となる。これについては、後でより詳細に記述される。
トークンキュー(すなわち、ロードキュー410以外のキューの全て)は、その全てが3スロット長であり、同一の機能を有するが、短いFIFOとして実行される。たいていのキューは、同期したパイプラインの自己制限的な性質のために、フロー制御が必要ではないが、蓄積データキュー400は、コプロセッサーからそこへの情報のフローが制御可能である必要がある。キューの形およびフロー制御を加えることについては、以下の章で説明される。
キューFIFOは、マルチプレクサ660、670を用いることによって選択される現在の出力で、3つのレジスター600、610、620として実行される。図6は、この配置を例示する。キューは、3つのレジスター600、610、620からなり、その各々は、それぞれフラッグ630、640、650と関係していて、レジスターが有効なデータを収容しているかどうかを指示する。新しいデータが、バッファA、すなわちレジスター600に書き込まれることによって、キューへと移動され、そして次のレジスターが空であるもしくは空になろうとしている限り、キューに沿って移動し続ける。キューがいっぱいであるならば、最も古いデータ、したがってキューから読み出されるべき最初のものがバッファCを占め、かつ最も新しいものがバッファAを占める。
マルチプレクサ660、670もまた現在のフラッグを選択し、そしてそれらは、選択された出力が有効であるかどうかを指示する。
キューは、各サイクルでバッファA600に書き込まれ、インターフェースを横切って到着するデータをアクセプトし、かつバッファAフラッグ630は、データと関連する有効ビットをアクセプトする。キューが一杯でない限り、この結果、データの損失を生じることは無く、それは、バッファAの内容が、同じサイクルの間にバッファB610へと移されるからである。キューが一杯であるならば、バッファA600のローディングが抑制されてデータの損失を防止する。いずれにしても、先に記述したとおり、図3および図4に示されるパイプラインの形は、3を超えるスロットが各キューで利用可能である必要はなく、そうすると、キューが一杯であるときにインターフェースによって有効なデータが提供されることもなく、データ損失が続いて起こることも無い。3つのバッファフラッグ630、640、650の状態が用いられて、どのバッファが各サイクルの間にキュー出力を提供するのかが決定される。出力は常に、最も古いデータを収容するバッファによって提供される。これは、それが一杯であるならばバッファCであり、またはバッファBであり、あるいはそれが空であるならばバッファAである。単一の優先符号器は、3つのフラッグを見て正しいマルチプレクサ選択信号を提供できる。また3つのフラッグの状態によって、データがキューにおいて1つのバッファから別のものへとどのように移されるのかが決定される。表2は、3つのフラッグがどのように復号されるのかを示す(「X」は「関心無し」状態を示す)。
前述したとおり、コアLSU222がコプロセッサーからのデータの流れを停止できるようにするのに、蓄積データは、フロー制御を必要とする。これは、停止信号をコプロセッサーに送ることによって行われる。この信号は、コプロセッサーに到達するのに2クロックサイクルかかるので、蓄積キュー400が一杯になるという危険が起こり次第、それが生成されなければならない。キュー長が3であると、コアLSUがデータ項目をアクセプトできなくなり次第、この危険が現実のものとなる。そうしてLSUがデータをアクセプトできないときはいつでも、停止信号がコプロセッサーに送られる。遅延があるために、コプロセッサーは、停止信号が生じた後データを更に2サイクル送り続ける。停止信号が送られるときにもまた項目「飛行中」があるならば、キューは、それを送った後3項目をアクセプトしなければならない。図8は、この状況を例示する。
メモリーからフェッチされる全てのインストラクションを、コアは、GCPインターフェース越しに送り、そこでそれはインストラクションキュー300に入る。理想的には、それはコプロセッサーインストラクションのみで送られるべきであるが、このステージではインストラクションを復号するのに十分な時間を有していない。インストラクションが、それ自体の復号ステージ205に到着すると復号し、かつノンコプロセッサーインストラクションを拒絶することが、GCPにゆだねられる。それは、これを静かに行うことができるが、コアがこれらのインストラクションを取り除くのに承認を必要としないからであって、それは、それがそのときまでに、それ自体の復号ステージ200において各インストラクションのタイプを決定するからである。これが意味するのは、コアから受け取られるインストラクションは、それがインストラクションキューに入るや否や復号されなければならないということである。したがって、インストラクションキュー300は、標準キューの変更化バージョンであって、それは、インストラクション復号器205を組み込んでいる。図9は、インストラクションキューがどのように実行されるのかを示す。
時折、コアは、コプロセッサーパイプラインにおいてインストラクションを特定できるようになる必要がある。これは、どのインストラクションがフラッシュされるべきかを、コアがコプロセッサーに指示できるようにフラッシング(詳細は後でカバーされる)に必要である。したがって、コアは、コプロセッサーに送られる各インストラクションにタグを付与し、それは、任意の瞬間にパイプラインの全てのタグが一意的であるだけ十分に大きな値のプールから引き出される。好ましい実施例において、これを達成するのに16のタグが十分であり、4ビットのタグフィールドを必要としている。タグがインストラクションに割り当てられるごとに、モジュロ16でタグ番号が増加されて次のタグを生成する。
ここで、GCPインターフェースの機能の仕方を、行われる種々の動作と起こる事象とを例示して説明する。説明に伴う図は、トークンが種々のキューを下って2つのパイプライン間のインターフェースを横切ることを示す。各キューの識別は、開始および終了ポイントを観察し、図3を参照することによって推定される。
図10は、コアおよびコプロセッサーパイプラインの通常の動作を示す。
通常の動作において、コアは、全てのインストラクションを、インストラクションキュー300を介してコプロセッサーへと送り、そしてインストラクションがコプロセッサーインストラクションであるならば、タグを増加させる。コプロセッサーは、インストラクションを復号して、それがコプロセッサーインストラクションではないならば、もしくはそれが誤ったコプロセッサー番号を収容しているならば、それを捨てる。そして各コプロセッサーインストラクションは、パイプラインを下ってそれが発行ステージへと入っていくとき、トークンを長さキュー330に送る。そして、インストラクションは、それがキャンセルキュー310からトークンを受け取るまで発行ステージに残る。インストラクションがキャンセルされることをキャンセルトークンが要求しないならば、それはEX1ステージにまで移行し続け、トークンをアクセプトキュー340へと入れる。そしてインストラクションは、それがEX6ステージに到達するまでパイプラインを下る。この時点でそれはフィニッシュキュー320からトークンを受け取るのを待っているが、フィニッシュキューはそれを退却させることができる。
図11は、コプロセッサーがその発行ステージにおいてストールするとき、コアおよびコプロセッサーパイプラインがどのように振舞うのかを示す。
図12は、コプロセッサーインストラクションが、その発行ステージにおいてコアによってキャンセルされるとき、どのように、コアおよびコプロセッサーパイプラインが振舞うのかを示す。
インストラクションCは、通常コアパイプラインを下って進み、それが発行ステージに到達するまで、トークンをインストラクションキュー300に送る。この時点で、それはトークンをキャンセルキュー310に送り、インストラクションがキャンセルされるべきであることを指示する。これを行うと、それは(影によって指示されるように)コアパイプライン内のファントムに変わり、EX2ステージまで通常通りパイプラインを下り続ける。これが行われて、それが、長さキュー330およびアクセプトキュー340を介してコプロセッサーパイプラインのそれの相手方によって送られるトークンをピックアップできるものとなる。これらは、コプロセッサーキューのインストラクションが、キャンセルキュー310からのトークンを読む前に送られている。これによって、送っているインストラクションの各々に対応するインストラクションが、他方のパイプラインで受け取られていることを確認することで、キューを下るトークンの経路が正しいものであり続ける。インストラクションCは、最終的に、それがコアのEX2ステージを離れるとき終了するが、それは、もはやトークンをピックアップする必要が無くなるからである。EX1ステージのキャンセルキュー310からキャンセルトークンをピックアップすると直ちに、コプロセッサーパイプラインのインストラクションは終了する。
図13は、コプロセッサーインストラクションがコプロセッサーによってバウンスされる(アクセプトされない)とき、コアおよびコプロセッサーパイプラインがどのように振舞うのかを示す。
インストラクションCは、通常のやり方でコプロセッサーパイプラインを通り、それが発行ステージに到達するまでトークンを長さキュー330に送る。この時点で、それは、トークンをアクセプトキュー340に送り、インストラクションがコプロセッサーによってアクセプトされないことを指示する。これを行うと、それはファントムに変わって、それが終了するときにステージEX1を離れるまで、それは通常通りパイプラインを下り続ける。これを行って、それが、コアパイプラインの相手方によってキャンセルキュー310に送られるトークンをピックアップできるようにする。コアパイプラインのインストラクションは、EX2ステージのアクセプトキュー340からアクセプトトークンをピックアップすると直ちに終了する。
図15は、コアがコプロセッサーにフラッシュ信号を送るとき、コアおよびコプロセッサーパイプラインがどのように振舞うのかを示す。
発行からEX4に含まれるまでのいずれのステージでも、コアによってフラッシュが誘発される。この情報は、一連のキューを通してコプロセッサーパイプラインに送ることができるが、この構成は、不必要にキューを増加させる。その代わりにタグ付けが用いられて、単一の放送信号がコプロセッサーに送られて、対応するタグを送ることによってフラッシュされるべきインストラクションを識別できる。そして、コプロセッサーは、フラッシュタグと同じまたはそれより後のタグを有する全てのインストラクションを見出し、そしてそれらを取り除かなければならない。キューを下るトークンと違い、フラッシュ信号は固定遅延を有していて、コアにおけるフラッシュとコプロセッサーにおけるフラッシュとの間のタイミング関係が正確に知られるものとなっている。
インストラクションがコプロセッサーパイプラインの底に到達するとき、それは退却することを望む。それがどのように退却するかは、そのインストラクションの種類およびそれが反復されるか否かに依存する。CDPインストラクションは、それが、フィニッシュキュー320でそれに合致するトークンを見出すときに退却する。
ロードおよび蓄積インストラクションが退却する条件は、後の章で説明される。
4.1 一般原理
データ転送は、コア側では、LSU222によって管理され、またコプロセッサー側では、パイプライン自体に管理される。転送は、単一の値であるかベクトルであり得る。後者の場合、コプロセッサーは、発行ステージでインストラクションを反復することによって、多重転送を有効に一連の単一転送へと変換する。これによって、転送されるべき、各項目についてのロードまたは蓄積インストラクションの実例が作り出される。インストラクションは、それが反復する間、コプロセッサー発行ステージに留まり、それ自体のコピーを作り出す。ロードについて、これらはパイプラインを下って、それらがロードキュー410から各データ項目を、それがEX6ステージに到達するときにピックアップできるようにする。蓄積について、反復されるインストラクションは、発行ステージから出されないが、それらが作り出されると消失して、反復するごとに蓄積キュー400に入れるために蓄積データを生成する。図17は、ロードインストラクションCの例を示す。反復されるインストラクション(大文字で示されている)の最初はヘッドであり、他のもの(小文字で示されている)はテールである。示されている例において、ベクトル長が4であり、それで1つのヘッドと3つのテールがある。
ロードデータは、コアLSU222のWBステージ250から現れ、ロードキュー410からコプロセッサーEX6ステージ275によって受け取られる。ベクトル化されたロードの各項目は、反復されるロードインストラクションの1つの実例によってピックアップされる。パイプラインのタイミングは、ロードインストラクションが常に用意されているか、各データ項目をピックアップするようEX6に丁度到着したというようなものである。ロードインストラクションがEX6に到着しているが、ロード情報がまだ現れないならば、ロードインストラクションはEX6でストールしなければならず、コプロセッサーパイプラインの残りをストールする。そうして、ロードインストラクションは、それがロードデータに合致するとき、退却する。
コプロセッサーEX6ステージにおいてロードインストラクションでロードデータの正しい配列を達成するために、データはコプロセッサーに到達するとき、二重にバッファされる必要がある。図18により例示されている。
コアEX4ステージ290を含まないフラッシュは、ロードデータバッファに影響を及ぼすことができず、ロード転送は正常に完了する。フラッシュがコアEX4ステージのインストラクションによって開始されるならば、これはロードインストラクションではなく、それは、ロードインストラクションがフラッシュを誘発できないからである。フラッシュポイントの後ろのコプロセッサーロードインストラクションはいずれも、それらがコプロセッサーパイプラインのEX6ステージ275までにも至るならば、フィニッシュトークンが無いためにストールすることとなり、そうしてデータ転送は全く起こることとはならない。ロードデータバッファ410のいずれのデータも、パイプラインが再ローディングする間のフラッシュデッド期間に自然に終了する。
ロードインストラクションがキャンセルされるならば、ヘッドおよびいずれのテールの双方とも取り除かれなければならず、ヘッドは、ファントムで置き換えられるのみである。コプロセッサーEX1ステージ225でキャンセルが生じると、データ転送が起こることにはならず、したがってロードデータを取り扱うのに特別な方策が講じられるものではない。
ロードインストラクションがコプロセッサーパイプラインの底に到達するとき、それは、ロードデータバッファ410の端で、データ項目を見出さなければならない。インストラクションがヘッドインストラクションであるならば、それはまた、フィニッシュキュー320でトークンを見出さなければならない。テールインストラクションは、そのロードデータが提示されていることのみを必要とし、フィニッシュキューからのトークンを必要としない。
蓄積データは、コプロセッサー発行ステージ215から現れ、コアLSU DC1ステージ230によって受け取られる。ベクトル化された蓄積の各項目は、蓄積インストラクションがコプロセッサー発行ステージで反復すると生成される。反復された蓄積インストラクションは、さらに使われることは無く、コプロセッサーパイプラインを下されない。ヘッドインストラクションのみがパイプラインを下る。これが意味するのは、蓄積反復が一旦開始されると、コアによって明確に止められるまで止まらないというものである。とりわけ、蓄積ヘッドインストラクションが、コプロセッサーパイプラインのEX1ステージでストールされるならば、反復が続き、そしてストールによって影響されない。
蓄積データ転送は、LSU222によって任意の時間に止められるので、蓄積データキュー400が必要とされる。更には、蓄積データベクトルが任意の長さであるので、フロー制御が必要とされ、これについては2.5.3章で既に説明されている。3つのスロットのキューの長さは、丁度、データを損失せずにフロー制御を用いることができるのに充分である。
蓄積インストラクションがフラッシュに含まれるとき、蓄積データキュー400は、コアによってフラッシュされなければならない。コアがコプロセッサーにフラッシュを通知した後、2サイクル間キューは充填し続けるので(信号伝播遅延による)、コアは、蓄積データキュー400フラッシュを行う前に、2サイクル間遅延しなければならない。フラッシュの後のデッド期間は、これを行うのに充分なだけ長く続く。
コアが蓄積インストラクションをキャンセルするならば、それは、それが蓄積データを受け取り始める前にインストラクションがキャンセルされることに気付く。コプロセッサーがキャンセル信号を受け取ってそれに働きかけるまでに、それは、既に1つのデータ項目を蓄積データキュー400に送っている。したがって、コアは、キャンセルの後、この信号項目を取り除き、かつ処理しなければならない。これが達成されるのは、デッドデータをピックアップするために、単一の蓄積インストラクションファントムを、LSU222を通して送ることによってである。代わりに、発行ステージがキャンセルキューを見越して、蓄積インストラクションがデータを送り始める前にキャンセルされないということを決定してもよい。
蓄積インストラクションは、フィニッシュトークンキュー320を利用しないので、コプロセッサーパイプラインの底に到達するや否や退却する。
コアに取り付けられるコプロセッサーが2つ以上あってもよく、そうして複数のコプロセッサーを取り扱うのに何らかの手段が必要とされる。経済的な理由から、コプロセッサーインターフェースはできる限り複製されないようにすることを確認するのが重要である。とりわけ、コプロセッサーは、長さ330、アクセプト340および蓄積データ400キューを共有し、それらはコアによって維持される。これらのキューが共有されることとなると、1つのコプロセッサーのみが任意の時間にキューを用いることとなる。このようなことが最も容易に保証されるのは、任意の時間に1つのコプロセッサーしかアクティブでないようにすることによってである。一般的に言って、これは重大な制限ではなく、それは、1つのコプロセッサーしか任意の時間に用いられないからである。典型的には、プロセッサーは、ドライバソフトウェアを通して駆動され、それは1つのコプロセッサーだけを駆動する。ドライバソフトウェアを呼び出してそれから戻ることで、1つのコプロセッサーを使うことと異なるコプロセッサーを使うこととの間に、確実にいくつかのコアインストラクションがあるようにする。
1つのコプロセッサーしか任意の時間にコアと通信できないならば、全てのコプロセッサーは、コアからのGCPインターフェース信号を共有する。コプロセッサーからコアへの信号は、全てのコプロセッサーがインアクティブのとき出力をゼロに保持するならば、単に一緒にOR化されている。
コプロセッサーは、コアからの信号によってイネーブルされる。好ましい実施例には、これらの信号が16あり、各々のコプロセッサーに1つずつであって、任意の時間に1つだけがアクティブである。加えて、コプロセッサーへのインストラクションにはコプロセッサー番号が含まれていて、コプロセッサーがそれら自身の番号と整合しないインストラクションを拒絶できるようにし、またコアインストラクションを拒絶する。
異なるコプロセッサーについてその最後にアドレスされたものに向かうコプロセッサーインストラクションを、コアが復号するとき、それは、先のコプロセッサーインストラクションが退却してしまうまで、このインストラクションをストールする。これによって、確実に、現在選択されているコプロセッサーの全ての活動が止まってしまう。そして、コプロセッサーの選択が切り替えられて、最後にアクティブであったコプロセッサーをディスエーブルし、新しいコプロセッサーをアクティベートする。新しいコプロセッサーインストラクションを受け取っているコプロセッサーは、それを無視してディスエーブルされる。したがって、インストラクションは、コアに嫌われる必要があり、ここで新しくアクティベートされたコプロセッサーによってアクセプトされる。
Claims (41)
- 一連のインストラクションを実行するよう動作可能なメインプロセッサーであって、複数の第一パイプラインステージを有する第一のパイプラインを備えるメインプロセッサーと、
前記一連のインストラクションにおけるコプロセッサーインストラクションを実行するよう動作可能なコプロセッサーであって、複数の第二パイプラインステージを有する第二のパイプラインを備え、かつ各コプロセッサーインストラクションは第一のパイプラインおよび第二のパイプラインの双方を通って経路付けられるようアレンジされているコプロセッサーと、
所定の複数エントリーを有するファーストインファーストアウト(FIFO)バッファを備え、1つのパイプラインにおける所定のパイプラインステージを別のパイプラインにおけるパートナーパイプラインステージと結合する少なくとも1つの同期キューであって、その所定のパイプラインステージは、コプロセッサーインストラクションを処理するとき同期キューのエントリー内にトークンが置かれるように動作可能であり、該トークンはそのトークンが関係するコプロセッサーインストラクションを一意的に識別するタグを含み、かつパートナーパイプラインステージは、同期キューからのトークンを受け取ってそのコプロセッサーインストラクションを処理するよう動作可能であり、それによって、 所定のパイプラインステージとパートナーパイプラインステージとの間で第一および第二のパイプラインの同期をパイプライン間で固定したタイミングで信号を受け渡すことなく行う同期キューと
を備えるデータ処理装置。 - 更に前記同期キューを複数備え、前記同期キューの各々は1つのパイプラインにおける所定のパイプラインステージを別のパイプラインにおけるパートナーパイプラインステージと結合する請求項1に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つはインストラクションキューであり、前記所定のパイプラインステージは、第一のパイプラインにあって、コプロセッサーインストラクションを識別するトークンがインストラクションキューに入れられるようにアレンジされており、かつパートナーパイプラインステージは、第二のパイプラインにあって、トークンを受け取ってトークンの識別するコプロセッサーインストラクションを処理し始めるよう動作可能である請求項1または2に記載のデータ処理装置。
- 前記所定のパイプラインステージは、第一のパイプラインにおけるフェッチステージであり、かつパートナーパイプラインステージは、第二のパイプラインにおける復号ステージであり、その復号ステージは、トークンを受け取ってコプロセッサーインストラクションを復号するよう動作可能である請求項3に記載のデータ処理装置。
- 前記第一のパイプラインのフェッチステージは、トークンが、一連のインストラクションにおける各インストラクションのインストラクションキューに入れられるよう動作可能であり、かつ前記第二のパイプラインの復号ステージは、関連するトークンを受け取って各インストラクションを復号し、そのインストラクションが、コプロセッサーによる更なる処理を必要とするコプロセッサーインストラクションであるかどうかを判断するようアレンジされている請求項4に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つがキャンセルキューであり、前記所定のパイプラインステージが、第一のパイプラインにあって、その所定のパイプラインステージのコプロセッサーインストラクションがキャンセルされるべきかどうかを識別するトークンが、キャンセルキューに入れられるようにアレンジされており、かつパートナーパイプラインステージが、第二のパイプラインにあって、キャンセルキューからトークンを受け取って、かつトークンがコプロセッサーインストラクションはキャンセルされるべきであると識別するならば、そのコプロセッサーインストラクションがキャンセルされるように動作可能である請求項1乃至5のいずれかに記載のデータ処理装置。
- 前記所定のパイプラインステージが、第一のパイプラインの発行ステージであり、かつパートナーパイプラインステージが、第二のパイプラインの発行ステージに続くステージである請求項6に記載のデータ処理装置。
- 前記パートナーパイプラインステージは、キャンセルキューからトークンを受け取って、かつトークンがコプロセッサーインストラクションはキャンセルされるべきであると識別するならば、コプロセッサーインストラクションを第二のパイプラインから取り除くよう動作可能である請求項6または7に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つが、フィニッシュキューであり、前記所定のパイプラインステージが、第一のパイプラインにあって、その所定のパイプラインステージのコプロセッサーインストラクションが、第二のパイプラインから退却するための許可を識別するトークンがフィニッシュキューに入れられるようにアレンジされ、かつパートナーパイプラインステージが、第二のパイプラインにあって、フィニッシュキューからトークンを受け取って、かつコプロセッサーインストラクションが退却するよう許可されることをトークンが識別するならば、そのコプロセッサーインストラクションが退却するように動作可能である請求項1乃至8のいずれかに記載のデータ処理装置。
- 前記所定のパイプラインステージが、第一のパイプラインのライトバックステージであり、かつパートナーパイプラインステージが、第二のパイプラインのライトバックステージである請求項9に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つが、長さキューであり、前記所定のパイプラインステージが、第二のパイプラインにあって、ベクトル化コプロセッサーインストラクションについて、そのベクトル化コプロセッサーインストラクションの長さ情報を識別するトークンが長さキューに入れられるようにアレンジされ、かつパートナーパイプラインステージが、第一のパイプラインにあって、長さキューからトークンを受け取って、長さ情報を、第一のパイプライン内のベクトル化コプロセッサーインストラクションをさらに処理する要因として盛り込むよう動作可能である請求項1乃至10のいずれかに記載のデータ処理装置。
- 前記所定のパイプラインステージが、第二のパイプラインの復号ステージであり、かつパートナーパイプラインステージが、第一のパイプラインの第一実行ステージである請求項11に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つがアクセプトキューであり、前記所定のパイプラインステージが、第二のパイプラインにあって、その所定のパイプラインステージのコプロセッサーインストラクションがコプロセッサーによって実行されるようアクセプトされるべきかどうかを識別するトークンが、アクセプトキューに入れられるようにアレンジされており、かつパートナーパイプラインステージが、第一のパイプラインにあって、アクセプトキューからトークンを受け取って、かつトークンがコプロセッサーインストラクションはアクセプトされるべきではないと識別するならば、そのコプロセッサーインストラクションがメインプロセッサーによって拒絶されるものとするよう動作可能である請求項1乃至12のいずれかに記載のデータ処理装置。
- 前記所定のパイプラインステージが、第二のパイプラインの発行ステージであり、かつパートナーパイプラインステージが、第一のパイプラインの第二実行ステージである請求項13に記載のデータ処理装置。
- パートナーパイプラインステージが、アクセプトキューからトークンを受け取って、かつトークンがコプロセッサーインストラクションはアクセプトされるべきではないと識別するならば、第一のパイプラインからコプロセッサーインストラクションを取り除くよう動作可能である請求項13または14に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つが、コプロセッサーインストラクションが、コプロセッサーからメインプロセッサーのアクセスの可能なメモリーにデータアイテムが転送されるように動作可能な蓄積インストラクションであるときに用いられる蓄積キューであり、前記所定のパイプラインステージが、第二のパイプラインにあって、前記蓄積インストラクションの1つを処理するとき、転送されるべき各データアイテムを識別するトークンが蓄積キューに入れられるようにアレンジされており、かつパートナーパイプラインステージが、第一のパイプラインにあって、蓄積キューから各トークンを受け取って、対応するデータアイテムがメモリーに転送されるように動作可能である請求項1乃至15のいずれかに記載のデータ処理装置。
- 前記所定のパイプラインステージが、第二のパイプラインの発行ステージにあり、かつパートナーパイプラインステージが、第一のパイプラインのアドレス生成ステージである請求項16に記載のデータ処理装置。
- 少なくとも1つの同期キューの1つが、コプロセッサーインストラクションが、メインプロセッサーのアクセスの可能なメモリーからコプロセッサーにデータアイテムが転送されるように動作可能であるロードインストラクションであるとき用いられるロードキューであり、前記所定のパイプラインステージが、第一のパイプラインにあって、前記ロードインストラクションの1つを処理するとき、転送されるべき各データアイテムを識別するトークンがロードキューに入れられるようにアレンジされており、かつパートナーパイプラインステージが、第二のパイプラインにあって、ロードキューから各トークンを受け取って、対応するデータアイテムがコプロセッサーに転送されるように動作可能である請求項1乃至17のいずれかに記載のデータ処理装置。
- 前記所定のパイプラインステージは、第一パイプラインのライトバックステージであり、かつパートナーパイプラインステージは、第二パイプラインのライトバックステージである請求項17に記載のデータ処理装置。
- ロードインストラクションおよび蓄積インストラクションが、転送されるべき複数のデータアイテムを定義するベクトル化コプロセッサーインストラクションであり、かつロードキューおよび蓄積キューの少なくとも一方と関連し、制御信号を前記所定のパイプラインステージに送って、前記所定のパイプラインステージによるトークンの発行を停止させ、その間に前記関連するロードまたは蓄積キューが一杯になると判定されるフロー制御ロジックを更に備える、請求項16に従属する請求項18に記載のデータ処理装置。
- フロー制御ロジックが、蓄積キューに備えられ、フロー制御ロジックは、パートナーパイプラインステージがデータアイテムをアクセプトできないメインプロセッサーからの指示を受け取って制御信号を発行するよう動作可能である請求項20に記載のデータ処理装置。
- ロードキューがダブルバッファである請求項21に記載のデータ処理装置。
- メインプロセッサーは、第一および第二のパイプライン双方からコプロセッサーインストラクションをフラッシュする必要があるとき、フラッシュされる必要のある最も古いインストラクションに関係するタグを識別するコプロセッサーにフラッシュ信号を放送するよう動作可能であり、コプロセッサーは、タグからの最も古いインストラクションを識別して、第二のパイプラインからコプロセッサー内のその最も古いインストラクションおよびそれより後のいずれのインストラクションをもフラッシュするよう動作可能である請求項1乃至22のいずれかに記載のデータ処理装置。
- タグをキュー内のどのトークンがフラッシュされるべきかを識別するのに用いて、前記少なくとも1つの同期キューの1つ以上が、前記フラッシュ信号に応答してフラッシュされる請求項23に記載のデータ処理装置。
- 前記コプロセッサーを複数備え、各同期キューが、メインプロセッサーのパイプラインステージを1つのコプロセッサーのパイプラインステージと結合させる請求項1乃至24のいずれかに記載のデータ処理装置。
- トークンが、前記所定のパイプラインステージによってキューに入れられ、かつクロックサイクルの変化端でパートナーパイプラインステージによってキューから受け取られるような同期設計を有する請求項1乃至25のいずれかに記載のデータ処理装置。
- データ処理装置におけるパイプライン間の同期方法であって、そのデータ処理装置は、一連のインストラクションを実行するよう動作可能なメインプロセッサーと、前記一連のインストラクションの中のコプロセッサーインストラクションを実行するよう動作可能なコプロセッサーとを備え、そのメインプロセッサーは、複数の第一パイプラインステージを有する第一のパイプラインを備え、コプロセッサーは、複数の第二パイプラインステージを有する第二パイプラインを備え、かつ各コプロセッサーインストラクションは、その第一のパイプラインおよび第二のパイプラインの双方を通って経路付けられるようアレンジされており、
(a)1つのパイプラインの所定のパイプラインステージを、所定の複数エントリーを有するファーストインファーストアウト(FIFO)バッファを備えた同期キューを介して別のパイプラインのパートナーパイプラインステージと結合させ、
(b)前記所定のパイプラインステージがコプロセッサーインストラクションを処理しているとき、同期キューのエントリーにトークンを入れ、該トークンはそのトークンが関係するコプロセッサーインストラクションを一意的に識別するタグを含み、
(c)パートナーパイプラインステージが同期キューからトークンを受け取ると、パートナーパイプラインステージ内でコプロセッサーインストラクションを処理する
ステップを備え、
それによって、前記所定のパイプラインステージとパートナーパイプラインステージとの間で第一および第二のパイプラインの同期がパイプライン間で固定したタイミングで信号を受け渡しすることなく得られる
方法。 - 前記同期キューが複数備えられ、かつ前記ステップ(a)乃至(c)が各同期キューについて行われる請求項27に記載の方法。
- 少なくとも1つの同期キューの1つがインストラクションキューであり、前記所定のパイプラインステージが第一のパイプラインにあって、かつパートナーパイプラインステージが第二のパイプラインにあり、
前記ステップ(b)で、コプロセッサーインストラクションを識別するインストラクションキューにトークンを入れ、
前記ステップ(c)で、トークンを受け取って、パートナーパイプラインステージ内でトークンによって識別されるコプロセッサーインストラクションの処理を開始する
ステップを備える請求項27または28に記載の方法。 - 少なくとも1つの同期キューの1つがキャンセルキューであり、前記所定のパイプラインステージが第一のパイプラインにあって、かつパートナーパイプラインステージが第二のパイプラインにあり、
前記ステップ(b)で、キャンセルキューにトークンを入れて、その所定のパイプラインステージのコプロセッサーインストラクションがキャンセルされるべきかどうかを識別し、
前記ステップ(c)で、パートナーパイプラインステージがキャンセルキューからトークンを受け取り、かつコプロセッサーインストラクションがキャンセルされるべきであることをそのトークンが識別するならば、そのコプロセッサーインストラクションがキャンセルされるものとする
ステップを備える請求項27乃至29のいずれかに記載の方法。 - 少なくとも1つの同期キューの1つがフィニッシュキューであり、前記所定のパイプラインステージが第一のパイプラインにあって、かつパートナーパイプラインステージが第二のパイプラインにあり、
前記ステップ(b)で、トークンをフィニッシュキューに入れて、その所定のパイプラインステージのコプロセッサーインストラクションを第二のパイプラインから退却させる許可を識別し、
前記ステップ(c)で、パートナーパイプラインステージがフィニッシュキューからトークンを受け取り、かつコプロセッサーインストラクションが退却するよう許可されることをそのトークンが識別するならば、そのコプロセッサーインストラクションが退却するものとする
ステップを備える請求項27乃至30のいずれかに記載の方法。 - 少なくとも1つの同期キューの1つが長さキューであり、前記所定のパイプラインステージが第二のパイプラインにあって、かつパートナーパイプラインステージが第一のパイプラインにあり、
前記ステップ(b)で、ベクトル化コプロセッサーインストラクションについて、長さキューにトークンを入れて、ベクトル化コプロセッサーインストラクションについて長さ情報を識別し、
前記ステップ(c)で、パートナーパイプラインステージが長さキューからトークンを受け取ると、長さ情報を、第一のパイプライン内でのベクトル化コプロセッサーインストラクションの更なる処理に要因として盛り込む
ステップを備える請求項27乃至31のいずれかに記載の方法。 - 少なくとも1つの同期キューの1つがアクセプトキューであり、前記所定のパイプラインステージが第二のパイプラインにあって、かつパートナーパイプラインステージが第一のパイプラインにあり、
前記ステップ(b)で、アクセプトキューにトークンを入れて、その所定のパイプラインステージのコプロセッサーインストラクションがコプロセッサーによって実行されるようアクセプトされるべきであるかどうかを識別し、
前記ステップ(c)で、パートナーパイプラインステージがアクセプトキューからトークンを受け取り、かつコプロセッサーインストラクションがアクセプトされるべきでないとそのトークンが識別するならば、コプロセッサーインストラクションがメインプロセッサーによって拒絶されるものとする
ステップを備える請求項27乃至32のいずれかに記載の方法。 - 少なくとも1つの同期キューの1つが、コプロセッサーインストラクションが、コプロセッサーからメインプロセッサーのアクセスが可能なメモリーにデータアイテムが転送されるものとするように動作可能な蓄積インストラクションであるとき用いられる蓄積キューであり、所定のパイプラインステージが第二のパイプラインにあって、かつパートナーパイプラインステージが第一のパイプラインにあり、
前記ステップ(b)で、前記蓄積インストラクションの1つを処理するとき、蓄積キューにトークンを入れて、転送されるべき各データアイテムを識別し、
前記ステップ(c)で、パートナーパイプラインステージが蓄積キューから各トークンを受け取ると、対応するデータアイテムがメモリーに転送されるようにする
ステップを備える請求項27乃至33のいずれかに記載の方法。 - 少なくとも1つの同期キューの1つが、コプロセッサーインストラクションが、メインプロセッサーのアクセスが可能なメモリーからコプロセッサーにデータアイテムが転送されるように動作可能なロードインストラクションであるとき用いられるロードキューであり、前記所定のパイプラインステージが第一のパイプラインにあって、かつパートナーパイプラインステージが第二のパイプラインにあり、
前記ステップ(b)で、前記ロードインストラクションの1つを処理するとき、ロードキューにトークンを入れて、転送されるべき各データアイテムを識別し、
前記ステップ(c)で、パートナーパイプラインステージがロードキューから各トークンを受け取ると、対応するデータアイテムがコプロセッサーに転送されるものとする
ステップを備える請求項27乃至34のいずれかに記載の方法。 - ロードインストラクションおよび蓄積インストラクションが転送されるべき複数のデータアイテムを定義するベクトル化コプロセッサーインストラクションであり、
(d)ロードキューおよび蓄積キューの少なくとも一方について、制御信号を所定のパイプラインステージに送って所定のパイプラインステージによるトークンの発行を停止させ、その間関連するロードまたは蓄積キューが一杯になると判定される
ステップを更に備える、請求項34に従属する請求項35に記載の方法。 - 前記ステップ(d)が蓄積キューについて行われ、前記ステップ(d)で、前記方法が、パートナーパイプラインステージがデータアイテムをアクセプトできないとメインプロセッサーから指示を受け取ると、制御信号を発行するステップを備える
請求項36に記載の方法。 - コプロセッサーインストラクションを第一および第二のパイプラインの双方からフラッシュすることが必要であるとき、
フラッシュ信号をメインプロセッサーからコプロセッサーへと放送して、フラッシュされる必要のある最も古いインストラクションに関係するタグを識別し、
コプロセッサー内で、タグからその最も古いインストラクションを識別して、かつコプロセッサー内のその最も古いインストラクションおよびそれより後のいずれのインストラクションをも第二のパイプラインからフラッシュする
ステップを更に備える請求項27乃至37のいずれかに記載の方法。 - タグを用いてキュー内のどのトークンがフラッシュされるべきかを識別し、前記フラッシュ信号に応答して、前記少なくとも1つの同期キューの1つ以上をフラッシュするステップを更に備える請求項38に記載の方法。
- 前記コプロセッサーを複数備え、各同期キューが、メインプロセッサーのパイプラインステージを1つのコプロセッサーのパイプラインステージと結合する請求項27乃至39のいずれかに記載の方法。
- トークンは、前記所定のパイプラインステージがキューに入れ、かつクロックサイクルの変化端でパートナーパイプラインステージがキューから受け取るようにデータ処理装置が同期設計を有する請求項27乃至40のいずれかに記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0220559A GB2392742B (en) | 2002-09-04 | 2002-09-04 | Synchronisation between pipelines in a data processing apparatus |
PCT/GB2003/002411 WO2004023290A1 (en) | 2002-09-04 | 2003-06-04 | Synchronisation between pipelines in a data processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005538439A JP2005538439A (ja) | 2005-12-15 |
JP3981378B2 true JP3981378B2 (ja) | 2007-09-26 |
Family
ID=9943500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004533589A Expired - Lifetime JP3981378B2 (ja) | 2002-09-04 | 2003-06-04 | データ処理装置におけるパイプライン間の同期 |
Country Status (13)
Country | Link |
---|---|
US (1) | US7490221B2 (ja) |
EP (1) | EP1535144B3 (ja) |
JP (1) | JP3981378B2 (ja) |
KR (1) | KR100983786B1 (ja) |
CN (1) | CN100367193C (ja) |
AU (1) | AU2003241029A1 (ja) |
DE (2) | DE60306937T4 (ja) |
GB (1) | GB2392742B (ja) |
IL (2) | IL165381A0 (ja) |
MY (1) | MY131233A (ja) |
RU (1) | RU2005109409A (ja) |
TW (1) | TWI309019B (ja) |
WO (1) | WO2004023290A1 (ja) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346759B1 (en) | 2004-08-06 | 2008-03-18 | Xilinx, Inc. | Decoder interface |
US7546441B1 (en) | 2004-08-06 | 2009-06-09 | Xilinx, Inc. | Coprocessor interface controller |
US7590823B1 (en) * | 2004-08-06 | 2009-09-15 | Xilinx, Inc. | Method and system for handling an instruction not supported in a coprocessor formed using configurable logic |
US7590822B1 (en) * | 2004-08-06 | 2009-09-15 | Xilinx, Inc. | Tracking an instruction through a processor pipeline |
US7603544B2 (en) * | 2004-12-23 | 2009-10-13 | Intel Corporation | Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation |
US7328331B2 (en) * | 2005-01-25 | 2008-02-05 | Hewlett-Packard Development Company, L.P. | Method and system of aligning execution point of duplicate copies of a user program by copying memory stores |
JP4527571B2 (ja) * | 2005-03-14 | 2010-08-18 | 富士通株式会社 | 再構成可能演算処理装置 |
JP3867804B2 (ja) * | 2005-03-22 | 2007-01-17 | セイコーエプソン株式会社 | 集積回路装置 |
US7493471B2 (en) * | 2005-10-31 | 2009-02-17 | Sun Microsystems, Inc. | Coprocessor receiving renamed register identifier from master to complete an operation upon register data ready |
US7490223B2 (en) * | 2005-10-31 | 2009-02-10 | Sun Microsystems, Inc. | Dynamic resource allocation among master processors that require service from a coprocessor |
US7668186B1 (en) * | 2006-03-07 | 2010-02-23 | Xilinx, Inc. | Token ecosystem for buffer management |
US8145882B1 (en) * | 2006-05-25 | 2012-03-27 | Mips Technologies, Inc. | Apparatus and method for processing template based user defined instructions |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US8407451B2 (en) * | 2007-02-06 | 2013-03-26 | International Business Machines Corporation | Method and apparatus for enabling resource allocation identification at the instruction level in a processor system |
US8006068B1 (en) * | 2007-04-18 | 2011-08-23 | Xilinx, Inc. | Processor access to data cache with fixed or low variable latency via instructions to an auxiliary processing unit |
US7984272B2 (en) * | 2007-06-27 | 2011-07-19 | International Business Machines Corporation | Design structure for single hot forward interconnect scheme for delayed execution pipelines |
US7769987B2 (en) * | 2007-06-27 | 2010-08-03 | International Business Machines Corporation | Single hot forward interconnect scheme for delayed execution pipelines |
JP2009054032A (ja) * | 2007-08-28 | 2009-03-12 | Toshiba Corp | 並列プロセッサ |
US7788470B1 (en) * | 2008-03-27 | 2010-08-31 | Xilinx, Inc. | Shadow pipeline in an auxiliary processor unit controller |
JP5493837B2 (ja) * | 2009-12-25 | 2014-05-14 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法 |
US9304774B2 (en) * | 2011-02-04 | 2016-04-05 | Qualcomm Incorporated | Processor with a coprocessor having early access to not-yet issued instructions |
WO2012120573A1 (ja) * | 2011-03-04 | 2012-09-13 | 日本電気株式会社 | デッドロック回避方法、デッドロック回避機構 |
JP2012252374A (ja) * | 2011-05-31 | 2012-12-20 | Renesas Electronics Corp | 情報処理装置 |
KR101849702B1 (ko) * | 2011-07-25 | 2018-04-17 | 삼성전자주식회사 | 외부 인트린직 인터페이스 |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
US9773531B2 (en) * | 2012-06-08 | 2017-09-26 | Hewlett Packard Enterprise Development Lp | Accessing memory |
US9378023B2 (en) | 2012-06-13 | 2016-06-28 | International Business Machines Corporation | Cross-pipe serialization for multi-pipeline processor |
US9582287B2 (en) * | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US20140281429A1 (en) * | 2013-03-14 | 2014-09-18 | Qualcomm Incorporated | Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media |
CN103383641A (zh) * | 2013-04-19 | 2013-11-06 | 中国科学院自动化研究所 | 一种多流水线同步装置 |
CN104424129B (zh) * | 2013-08-19 | 2019-07-26 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
US10318305B2 (en) * | 2013-09-06 | 2019-06-11 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with pepelined arithmetic and logic unit |
US9325520B2 (en) * | 2013-09-06 | 2016-04-26 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with scheduled token passing |
US11113054B2 (en) | 2013-09-10 | 2021-09-07 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression |
EP2940575B1 (en) * | 2014-05-02 | 2018-05-09 | Nxp B.V. | Controller circuits, data interface blocks, and methods for transferring data |
US20150378900A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Co-processor memory accesses in a transactional memory |
US11132203B2 (en) * | 2014-08-14 | 2021-09-28 | Texas Instruments Incorporated | System and method for synchronizing instruction execution between a central processor and a coprocessor |
US9870339B2 (en) | 2015-06-26 | 2018-01-16 | Intel Corporation | Hardware processors and methods for tightly-coupled heterogeneous computing |
US10120683B2 (en) * | 2016-04-27 | 2018-11-06 | International Business Machines Corporation | Supporting even instruction tag (‘ITAG’) requirements in a multi-slice processor using null internal operations (IOPs) |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) * | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
GB2563384B (en) * | 2017-06-07 | 2019-12-25 | Advanced Risc Mach Ltd | Programmable instruction buffering |
US10552162B2 (en) | 2018-01-22 | 2020-02-04 | International Business Machines Corporation | Variable latency flush filtering |
GB2570729B (en) * | 2018-02-06 | 2022-04-06 | Xmos Ltd | Processing system |
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
CN111258657B (zh) * | 2020-01-23 | 2020-11-20 | 上海燧原智能科技有限公司 | 流水线控制方法及相关设备 |
US11734017B1 (en) | 2020-12-07 | 2023-08-22 | Waymo Llc | Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor |
US11301410B1 (en) * | 2020-12-13 | 2022-04-12 | Advanced Mciro Devices, Inc. | Tags for request packets on a network communication link |
CN112738469A (zh) * | 2020-12-25 | 2021-04-30 | 浙江合众新能源汽车有限公司 | 图像处理方法、设备、系统和计算机可读介质 |
US20220245261A1 (en) * | 2021-02-01 | 2022-08-04 | Protegrity Corporation | Parallel tokenization of date and time information in a distributed network environment |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2564805B2 (ja) * | 1985-08-08 | 1996-12-18 | 日本電気株式会社 | 情報処理装置 |
US5241635A (en) * | 1988-11-18 | 1993-08-31 | Massachusetts Institute Of Technology | Tagged token data processing system with operand matching in activation frames |
US5197140A (en) * | 1989-11-17 | 1993-03-23 | Texas Instruments Incorporated | Sliced addressing multi-processor and method of operation |
US5430850A (en) * | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US6112017A (en) * | 1992-06-30 | 2000-08-29 | Discovision Associates | Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus |
US6240508B1 (en) * | 1992-07-06 | 2001-05-29 | Compaq Computer Corporation | Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read |
US5572704A (en) * | 1993-12-15 | 1996-11-05 | Silicon Graphics, Inc. | System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes |
US5860000A (en) * | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
US6259456B1 (en) * | 1997-04-30 | 2001-07-10 | Canon Kabushiki Kaisha | Data normalization techniques |
US6381692B1 (en) | 1997-07-16 | 2002-04-30 | California Institute Of Technology | Pipelined asynchronous processing |
US6477638B1 (en) | 1999-10-01 | 2002-11-05 | Hitachi, Ltd. | Synchronized instruction advancement through CPU and FPU pipelines |
-
2002
- 2002-09-04 GB GB0220559A patent/GB2392742B/en not_active Expired - Lifetime
-
2003
- 2003-06-04 IL IL16538103A patent/IL165381A0/xx unknown
- 2003-06-04 EP EP03730347A patent/EP1535144B3/en not_active Expired - Lifetime
- 2003-06-04 KR KR1020057003803A patent/KR100983786B1/ko active IP Right Grant
- 2003-06-04 DE DE60306937T patent/DE60306937T4/de not_active Expired - Lifetime
- 2003-06-04 JP JP2004533589A patent/JP3981378B2/ja not_active Expired - Lifetime
- 2003-06-04 CN CNB03821122XA patent/CN100367193C/zh not_active Expired - Lifetime
- 2003-06-04 WO PCT/GB2003/002411 patent/WO2004023290A1/en active IP Right Grant
- 2003-06-04 RU RU2005109409/09A patent/RU2005109409A/ru not_active Application Discontinuation
- 2003-06-04 AU AU2003241029A patent/AU2003241029A1/en not_active Abandoned
- 2003-06-04 DE DE60306937A patent/DE60306937D1/de not_active Expired - Lifetime
- 2003-06-24 US US10/601,575 patent/US7490221B2/en active Active
- 2003-06-24 MY MYPI20032349A patent/MY131233A/en unknown
- 2003-09-02 TW TW092124261A patent/TWI309019B/zh not_active IP Right Cessation
-
2004
- 2004-11-24 IL IL165381A patent/IL165381A/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
DE60306937T2 (de) | 2007-02-15 |
MY131233A (en) | 2007-07-31 |
GB2392742B (en) | 2005-10-19 |
WO2004023290A1 (en) | 2004-03-18 |
DE60306937T4 (de) | 2009-03-05 |
TW200409023A (en) | 2004-06-01 |
AU2003241029A1 (en) | 2004-03-29 |
EP1535144B1 (en) | 2006-07-19 |
US20040044878A1 (en) | 2004-03-04 |
IL165381A (en) | 2010-04-15 |
CN1678988A (zh) | 2005-10-05 |
KR100983786B1 (ko) | 2010-09-28 |
IL165381A0 (en) | 2006-01-15 |
TWI309019B (en) | 2009-04-21 |
JP2005538439A (ja) | 2005-12-15 |
DE60306937D1 (de) | 2006-08-31 |
CN100367193C (zh) | 2008-02-06 |
US7490221B2 (en) | 2009-02-10 |
GB2392742A (en) | 2004-03-10 |
EP1535144A1 (en) | 2005-06-01 |
EP1535144B3 (en) | 2009-02-18 |
RU2005109409A (ru) | 2005-09-10 |
GB0220559D0 (en) | 2002-10-09 |
KR20050057199A (ko) | 2005-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3981378B2 (ja) | データ処理装置におけるパイプライン間の同期 | |
US7721071B2 (en) | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor | |
JP3014773B2 (ja) | プロセサアーキテクチャ | |
US6336183B1 (en) | System and method for executing store instructions | |
WO2017032022A1 (en) | Device and processing architecture for instruction memory efficiency | |
JP5209933B2 (ja) | データ処理装置 | |
EP1662377B1 (en) | Branch predicting apparatus and branch predicting method using return address stacks | |
US9304774B2 (en) | Processor with a coprocessor having early access to not-yet issued instructions | |
JP2002522841A (ja) | 異なる待ち時間を伴う命令のスケジューリング | |
US20030182536A1 (en) | Instruction issuing device and instruction issuing method | |
US6912650B2 (en) | Pre-prefetching target of following branch instruction based on past history | |
US7484078B2 (en) | Pipelined asynchronous instruction processor having two write pipeline stages with control of write ordering from stages to maintain sequential program ordering | |
CN105005463A (zh) | 具有世代重命名的计算机处理器 | |
US20050251661A1 (en) | Method and apparatus for handling transfer of guarded instructions in a computer system | |
JP5128382B2 (ja) | 複数のロード命令を実行するための方法および装置 | |
US10713049B2 (en) | Stunt box to broadcast and store results until retirement for an out-of-order processor | |
JP3741945B2 (ja) | 命令フェッチ制御装置 | |
EP1050805B1 (en) | Transfer of guard values in a computer system | |
US7143247B1 (en) | Method and apparatus for parallel execution pipeline data storage in a computer memory | |
US6789185B1 (en) | Instruction control apparatus and method using micro program | |
JP5093237B2 (ja) | 命令処理装置 | |
EP1762929B1 (en) | Centralized resolution of conditional instructions | |
US6918028B1 (en) | Pipelined processor including a loosely coupled side pipe | |
JP2015184979A (ja) | 演算装置および命令フェッチ方法 | |
JPH0290326A (ja) | 先行制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060125 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061019 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061106 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070205 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070507 |
|
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: 20070601 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070629 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3981378 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100706 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110706 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110706 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120706 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120706 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130706 Year of fee payment: 6 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |