JP2008532171A - パイプラインスループットを促進するための方法及び装置 - Google Patents

パイプラインスループットを促進するための方法及び装置 Download PDF

Info

Publication number
JP2008532171A
JP2008532171A JP2007557672A JP2007557672A JP2008532171A JP 2008532171 A JP2008532171 A JP 2008532171A JP 2007557672 A JP2007557672 A JP 2007557672A JP 2007557672 A JP2007557672 A JP 2007557672A JP 2008532171 A JP2008532171 A JP 2008532171A
Authority
JP
Japan
Prior art keywords
processor
producer
consumer
task
pipeline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007557672A
Other languages
English (en)
Other versions
JP4749431B2 (ja
Inventor
ケラディ・スライダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2008532171A publication Critical patent/JP2008532171A/ja
Application granted granted Critical
Publication of JP4749431B2 publication Critical patent/JP4749431B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

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)

Abstract

本発明は、パイプラインプロセッサシステムにおけるパイプラインスループットを促進するための方法及び装置に関し、限定ではないがより詳細には、非プログラマブルプロセッサの同期パイプラインを通るパイプラインスループットを促進するための方法及び装置に関する。少なくとも1つのプロデューサプロセス/コンシューマプロセスのペアを含む同期パイプラインシステムにおけるパイプラインスループットを促進する方法であって、前記プロデューサプロセス/コンシューマプロセスのペアを制御するステップであって、前記プロデューサプロセス及び前記コンシューマプロセスが依存関係を壊すことなく非同期で実行されることを可能にするステップを含む方法。
【選択図】 図4

Description

本発明は、パイプラインプロセッサシステムにおけるパイプラインスループットを促進するための方法及び装置に関し、限定ではないがより詳細には、非プログラマブルプロセッサの同期パイプラインを通るパイプラインスループットを促進するための方法及び装置に関する。
コンピューティング環境において、パイプラインは、いくつかのステップでタスクを実行する一連の機能ユニット又はプロセッサである。各プロセッサは、バッファに記憶されている入力を取り込んで、バッファに記憶される出力を生成する。したがって、或るプロセッサの出力バッファは、次のプロセッサの入力バッファである。この構成によって、パイプラインのプロセッサは、並列に動作することが可能になり、したがって、次の入力が入ることができる前に各入力がパイプライン全体を通過しなければならない場合よりも、大きなスループットが与えられる。バッファに出力するプロセッサは通例「プロデューサ」と呼ばれ、バッファから入力を受け取るプロセッサは通例「コンシューマ」と呼ばれる。パイプラインは、一般に、複数のプロデューサプロセッサ/コンシューマプロセッサのペアを有し、通例は多くのプロデューサプロセッサ/コンシューマプロセッサのペアを有する。
パイプラインは多くのアルゴリズムに使用される。これらの多くのアルゴリズムには、特に(これらに限定されるものではないが)、イメージングの分野、オーディオ/ビデオの分野、及び無線の分野で使用されるアルゴリズムが含まれる。これらのアルゴリズムは、通例、非常に高性能となるように実施されなければならない。高性能オペレーションのためのパイプラインプロセッサは、多くの場合ハードウェアで実施され、これらのハードワイヤ化されたプロセッサは、非プログラマブルプロセッサとして知られている。
パイプラインシステムのすべてのプロセッサは、相互と共時的に動作してプロセッサ間のデータ依存性を満たすようにスケジューリングされ、且つ、ハードワイヤ化されている(同期スケジューリングと呼ばれる)。プロセッサ内コントローラは、各プロセッサ内の実行を処理する。単一のプロセッサ間コントローラ又はパイプラインコントローラは、指定された時刻にプロセッサでタスクを起動することや、パイプラインが次のタスクを受け付ける準備ができていることの報告等、システムレベルの制御を処理する。
ランタイムにおいて、オペレーションは、いくつかのプロセッサに対してストールを生成する場合がある。ストールは、或るプロセッサを他のプロセッサと非同期にし、その結果、実行が不正確になる。このような同期変動は、パイプラインにとって重大な問題である。
パイプラインコントローラの1つのソリューションは、いずれか1つのプロセッサに対するストールについてあらゆるプロセッサをストールさせる、パイプラインの共通ストール領域(common stall domain)又は単一ストール領域(single stall domain)を操作することである。これは、パイプラインスループットのオペレーションを停止する影響を有する一方、プロセッサは、ストールされて相互に同期する状態に戻される。この手法は、パイプラインのスループットに深刻な悪影響を与え、全体の性能を大幅に低減させる可能性がある。単一ストール領域のソリューションは、最後のタスクをパイプラインからフラッシュする特別な「フラッシュ」コマンド及び回路部も必要とする。
米国特許第5787272号 米国特許第6370600号 米国特許第5452461号 米国特許第5317734号 米国特許第5535387号
本発明は、上述した背景からなされたものであって、非プログラマブルプロセッサの同期パイプラインを通るパイプラインスループットを促進するために改良された方法及び装置を提供することを目的とする。
少なくとも1つのプロデューサプロセス/コンシューマプロセスのペアを含む同期パイプラインシステムにおけるパイプラインスループットを促進する方法の一実施の形態においては、その実施の形態は、プロデューサプロセス/コンシューマプロセスのペアを制御するステップであって、それによって、それらのプロデューサプロセス及びコンシューマプロセスが依存関係を壊すことなく非同期で実行されることを可能にする、制御するステップを含む。
本発明の特徴及び利点は、添付図面を参照する、単なる例としての本発明の一実施形態の以下の説明から明らかになる。
本発明の方法及び装置の一実施形態を詳細に説明する前に、従来の同期パイプラインのオペレーションを図1及び図2に関して説明する。
イメージングの分野、オーディオ/ビデオの分野、及び無線の分野の多くのアルゴリズムは、一連の計算を使用して構築されている。各計算は、論理計算ブロックとしてコード化される。外部からのデータがいくつかのブロックに入力され、これらのブロックの計算出力がいくつかの後続のブロックに供給され、その結果が最終ブロックから出力される。
これらのアルゴリズムは、非常に高性能となるように実施されなければならない。最も一般的な方法の1つは、アルゴリズムの論理計算ブロックをハードウェアで実施することである。これらのハードワイヤ化されているブロックのそれぞれは、計算を実行する非プログラマブルプロセッサである。プロセッサ間には、中間バッファ又はプロセッサ間バッファ(IPB)が存在し、別のプロセッサへ供給される或るプロセッサの出力を保持する。バッファを介して接続されるプロセッサにより形成される全体のシステムは、非循環有向グラフ、すなわちDAGとみなすことができる。DAGのノードは、プロセッサを表し、或るプロセッサから別のプロセッサへの有向エッジは、プロセッサ間のプロデューサ−コンシューマ関係を表す。エッジは、1つ又は2つ以上のプロセッサ間バッファ、すなわちIPBが存在することを暗に意味する。
システムのスループットは、(出力データレート(output_data_rate)/入力データレート(input_data_rate))である。ここで、入力及び出力は、システムの境界において観測される。高スループットの要件は、システムレベル並列性(system level parallelism)と呼ばれる、プロセッサ間の並列実行を必要とする。スループットを増加させることのほかに、システムが、逐次実行の場合のようにプロセッサ間ですべてのデータをバッファリングする必要がない場合、高スループットの要件は、IPBのサイズを削減する。高スループットは、さらにタスクのパイプライン化によって達成することができる。タスクは、或るデータセットに対するシステムの1つの完結した実行を表す。タスク間にデータフローは存在せず、したがって、タスクは相互に独立している。パイプライン化システムは、いくつかの古いタスクがまだシステムで動作している場合であっても、次のタスクを受け付けることができる。システムのプロセッサはそれ自体でパイプラインステージとみなすことができ、タスクの実行は、前のステージから後のステージへ進む。図1は、DAGを示している。図2は、システムレベル並列性及びタスクパイプライン化を示している。これらの図において、p、p、pはプロセッサであり、t、tはタスクである。
プロセッサp、p、pは、プロデューサ/コンシューマのペアを形成する。pは、p(コンシューマ)のデータのプロデューサである。pは、プロセッサp(プロデューサ)からのデータのコンシューマである。加えて、pは、プロセッサpのコンシューマでもある。有向エッジは、IPB1、IPB2、IPB3を介して接続されている。
最小タスク間インターバル(minimum inter task interval)(MITI)は、パイプライン設計を駆動するスループットインジケータである。パイプラインは、スループットを満たすようにあらゆるMITIサイクルで新しいタスクを受け付けることができるべきである。同期パイプライン設計は、プロセッサオペレーションのスケジュールを作成し、最小のIPBを設計し、各プロセッサの起動時刻を指定する。スケジュールは、あらゆるタスクについて同じである。オペレーションのスケジュールは、ハードワイヤ化され、非プログラマブルプロセッサを構築する。プロセッサ内コントローラは、プロセッサの内部でスケジュールを実行する。起動時刻は、依存関係を満たすために、プロセッサ間の(クロックサイクルでの)相対時間間隔又は相対時間距離を暗黙的に指定する。システムには、指定された起動時刻にプロセッサを起動するパイプラインコントローラが存在する。また、パイプラインコントローラは、MITIサイクル後に次のタスクを受け付ける準備ができていることを外部世界に信号で伝える。指定された相対時間距離からのずれが±1サイクルであっても、場合によっては実行が不正確になる可能性があることから、スケジュールはタイトであると言われる。
一例を考える。スケジュールは、プロセッサpがpよりも「d」サイクル進んでいなければならないことを指定するものとする。pがpよりも>dサイクル進んで実行されている場合、本発明者らは、pがpよりも同期進みであると言う。pがpよりも>d遅れて実行されている場合、本発明者らは、pがpよりも同期進みであると言う。これらの双方の場合には、(p,p)ペアは、非同期であると言われる。それ以外のすべての状況の下では、(p,p)ペアは同期していると言われる。
パイプラインの実行中、いくつかのプロセッサにおけるオペレーションが、そのプロセッサに対するストールを生成する場合がある。或るプロセッサに対するストールによって、そのプロセッサは他のプロセッサに対して非同期になり、その結果、実行は不正確となる。パイプラインコントローラの単一ストール領域のソリューションは、パイプラインのすべてのプロセッサを共通ストール領域の下に有することになる。パイプラインコントローラは、いずれかのプロセッサに対するストールについても、パイプラインのあらゆるプロセッサをストールし、したがって、相対時間距離が維持される。起動時刻カウンタ及びMITIカウンタは、ストールしていないサイクルのみをカウントし、したがって、正確さが保証される。ランタイムストールは、スループットに深刻な影響を与える。単一ストール領域のソリューションは、最も簡単であるが、性能を非常に低下させる。
次に、図2に関して本発明の一実施形態を説明することにする。この実施形態では、プロセッサは、パイプラインのオペレーションを混乱させることなく、時に非同期な実行を可能にすることができる。
図3では、ハードワイヤ化されているプロセッサの同期パイプラインが、参照符号10によって包括的に表されている。この図には、パイプライン10の1つのセクションのみが示されている。これは、プロデューサプロセッサp及びコンシューマプロセッサpを示している。パイプラインコントローラ11も示されている。また、IPB12も示され、加えて、本発明のこの実施形態では、さらなるプロセッサ間素子13も示されている。パイプラインコントローラ11は、プロセッサp及びpと通信することができ、また、さらなるプロセッサ間素子13とも通信することができる。複数のプロセッサが存在する実際の実施態様では、パイプラインの各プロデューサ/コンシューマのペアの間にさらなるプロセッサ間素子13が含まれることになり、パイプラインコントローラは、各プロデューサ/コンシューマのペアに加えて追加のプロセッサ間素子も制御することに留意されたい。
この実施形態において、この例ではパイプラインコントローラ11である制御手段は、プロデューサプロセッサp及びコンシューマプロセッサpのペアを制御して、それらのプロセッサが依存関係を壊すことなく非同期で動作することを可能にするように構成されている。パイプラインコントローラ11は、プロデューサ/コンシューマのペアの依存関係を監視し、多くの動作状況において非同期オペレーションを可能にする。或る動作状況は、コンシューマプロセッサが、プロデューサプロセッサよりも同期進みで実行され、プロデューサプロセッサによって実行されているタスクよりも古いタスクを実行している状態を含む。
別の動作状態は、プロデューサプロセッサがコンシューマプロセッサよりも同期進みで実行されている状態を含み、プロデューサプロセッサは、プロデューサプロセッサによって実行されているタスクよりも古いタスクを実行している。
さらなるプロセッサ間素子13は、この実施形態では、バッファであり、これは、プロデューサプロセッサがコンシューマプロセッサよりも同期進みで実行されている時のデータ転送のさらなるバッファリング遅延を実施するように構成されている。
パイプラインコントローラは、実際には、タイトにスケジューリングされている同期パイプラインの柔軟なパイプラインコントローラとして動作する。或るプロセッサがストールを得ても、いくつかの状況下では、他のプロセッサが実行されることが可能になる。これは、時にプロセッサを非同期にする可能性があるが、本発明者らは、それでも、正確な実行を有する。この手法は、パイプラインが被らなければならない全体の遅延を削減し、したがって、単一ストール領域のソリューションを上回る性能改善を提供する。
非同期実行
本発明者らは、まず、本発明者らがプロセッサの非同期実行をいつ、どのように可能にするかを説明する。この実施形態では、依存関係は、いかなるプロデューサ/コンシューマのペアについても壊されず、これによって、さらに、システム全体の正確さが促進される。
コンシューマc(図3のp)が、プロデューサp(図3のp)よりも同期進みで実行される場合、コンシューマcは、まだ書き込まれていないIPB値を読み出す場合がある。しかしながら、cがpのタスクよりも古いタスクを実行している場合、pは、cが必要とするすべての値をすでに生成していることになる。したがって、cは、pのストールを無視することができ、同期進みで進むことができる。次に、pがcよりも同期進みで実行される場合、pは、まだ読み出されていないIPB値を上書きする場合がある。しかしながら、pがcのタスクよりも古いタスクを実行している場合、pは、(cがタスクを完了すると)IPBへの書き込みをそれ以上生成しない。したがって、pは、cのストールを無視することができ、同期進みで進むことができる。プロセッサpがpよりも古いタスクを実行していることは、pがpに依存していないことを暗に意味する。依存関係(p,p)(dep(p1, p2))は、その値が、pがこの時点においてpに依存しているか否かを指定するブール変数である。
プロデューサpがコンシューマcのタスクよりも古いタスクを実行することは、正当ではあるが、稀である。pがcよりも同期進みで実行される機会をより多く設けるために、本発明者らは以下のことを提案する。プロデューサとIPB12との間において、本発明者らは、或る特別なバッファ、すなわちEB13を設ける。EB13が一杯でない場合、pがcよりも同期進みで実行されることを可能にすることができる。pがcよりも同期進みである場合の書き込みはEBに与えられ、したがって、読み出し前のIPBデータの上書きが回避される。EB13のデータは、適切な時にIPB12に移動し、コンシューマは、常にIPB12から読み出しを行う。
プロセッサストールの信号伝達
パイプラインコントローラ11は、実行するのが安全でない時にプロセッサをストールする。パイプラインコントローラ11は、あらゆるプロデューサ/コンシューマのペアの間のランタイム相対時間距離と、コンシューマのプロデューサに対する変化する依存関係及びその逆と、EB状態(一杯又は一杯でない)とに関する情報を有する。この情報を使用して、パイプラインコントローラ11は、ストール信号をプロセッサへ発行する。
ストール(P)=自己ストール(P)OR(すべてのプロデューサiについてPへの供給OR(プロデューサiによるストール(P)))OR(すべてのコンシューマjについてPからの読み出しOR(コンシューマjによるストール(P)))OR(タスク完了(P)&!起動(P))
Pは、自身のオペレーションによってストールすることもあるし、Pのプロデューサ又はコンシューマにより誘発されてストールすることもある。Pの現在のタスクが完了し(レベルであるタスク完了信号によって示される)、且つ、起動(パルス入力信号)がPに発行されない場合に、Pはストールしなければならない。
コンシューマjによるストール(P)=依存関係(P,j)&同期進み(P,j)&PからjへのEBが一杯(P_to_j_eb_full)
プロデューサiによるストール(P)=依存関係(P,i)&同期進み(P,i)
相対時間距離の維持及びMITIの順守(honoring)
パイプラインコントローラ11は、ランタイムにおいて、あらゆるプロデューサ(p)/コンシューマcのペアの間の相対時間距離rを維持する。rの計算は示す通りである(注:それらはif条件であって、elseif条件ではない)。
if(ストール(p))r--;if(ストール(c))r++;if(終了(p))r+=a(p);if(終了(c))r-=a(c);
rをa(p)だけインクリメントすること、及び、rをa(c)だけディクリメントすることは説明を要する。MITIを順守することは、プロセッサが、依存関係を壊すことなくあらゆるタスクを確実に実行するようにすることである。本発明者らのソリューションは、MITIを保証するいかなる明示的な制御をも有しない。本発明者らは、rを操作することによってこれを達成し、ストール回路部は、安全になるまでプロセッサをストールする。a(P)=MITI−実行時間(P)は、プロセッサPが、MITIを順守するためにタスク間でアイドル状態でなければならないサイクル数を表す。rをa(p)だけインクリメントすることによって、同期進み(p,c)が信号で伝達され、したがって、安全になるまでpはストールされる。rをa(c)だけディクリメントすることによって、同期進み(c,p)が信号で伝達され、したがって、安全になるまでcはストールされる。
プロセッサの起動及びパイプラインの準備
ここで、本発明者らは、プロセッサを起動する方法、及び、パイプラインが次のタスクを受け付ける準備ができていることを信号で伝達する方法を説明する。プロセッサにおけるタスクの起動及び終了はイベントを表すものとする。スケジュールから、プロセッサにおける起動イベント及び終了イベントの次第に増加する順序を得ることができる。イベント時刻の非減少順によるこのようなイベントの順序は、イベント順序(event_order)又はeorderとして知られている。本発明者らは、たとえ非同期の実行を可能にしても、どのタスクの実行もeorderの通りに行われるように制限する。この決定論的な実行によって、単純なトークンパッシングメカニズムを使用してプロセッサを起動することが可能になるだけでなく、(起動イベント及び終了イベントを使用する)単純なロジックがプロセッサ間の依存関係を追跡することも可能になる。
トークンパッシングメカニズムは、タスクごとに<イベント>可能トークン(allow_<event> token)を有することによって実施することができる。最初の起動プロセッサは、パイプラインに対する起動コマンドで起動可能トークン(allow_start token)を得る。プロセッサがタスクを終了し、自身のイベントについて<イベント>可能トークンを有し、且つ、そのプロセッサのeorderの後続のもの(eorder_successor)がトークンを受け付ける準備ができている場合に、プロセッサはイベント(起動又は終了)を実行することができる。最後の条件は、eorderの次のイベントを可能にするために渡されたトークンが決して失われないことを保証するものである。起動可能トークンストレージ及び終了可能トークンストレージ(それぞれ1ビット)は、プロセッサごとに存在する。
eorderの最初の起動プロセッサが起動可能トークンを保持していない場合に、パイプラインが次のタスクを受け付ける準備ができていることは、信号(レベル信号)で伝達される。
起動は、プロセッサ間の所望の時間距離を考慮しないことに留意されたい。パイプラインの準備ができていることの信号による伝達は、MITIを考慮しない。これらは、安全になるまでプロセッサをストールするパイプラインコントローラのストール決定モジュール(前述)によって自動的に処理される。
依存関係の計算
依存関係(p,c)及び依存関係(c,p)は、プロデューサ/コンシューマのペアごとに保持される。ペアの間の依存関係は、多くのタスクのスケジュールを作成し、安定した状態を検査することによって求めることができる。依存関係(p,p)は、時に、pがpのタスクと同じタスク又はpのタスクよりも新しいタスクを実行している時に存在し、pがpのタスクよりも古いタスクを実行している時は存在しない。実行中、依存関係は、プロセッサにおける起動イベント及び終了イベントを使用して容易に追跡することができる。たとえば、図2において、依存関係(p,p)は、起動(p)において開始し、終了(p)において終了する。すべてのタイプのプロデューサ/コンシューマのスケジュールについて依存関係決定ロジックを計算することができる。
本発明者らのソリューションは、単一ストール領域と共に存在するフラッシュ問題を解決する。いくつかのプロセッサが、(決して来ることはない)(最後+1)番目のタスクの起動を待機してストールすると、最後のタスクをまだ実行しているプロセッサも、共通ストール領域によってストールする。最後のタスクは、特別なフラッシュ入力信号及び回路部を使用してフラッシュされる。本発明者らのソリューションは、依存関係変数が偽を示す時に、最後のタスクを自動的に排出又はフラッシュする。
EBコントローラ
EBコントローラは、あらゆるEB13と共に存在する。IPBの書き込みは、常にEBコントローラを通る。pがcよりも同期進みである場合、EBコントローラはEBに書き込みを行う。pがcよりも同期進みでない場合、EBコントローラは、IPBへデータを通過させる。EBは、タイムスタンプが付けられるデータを有するFIFOとしてモデル化される。データがEBに最初に書き込まれる時、タイムスタンプ=r(p,c)−d(p,c)である。ここでそれぞれ、rはランタイムであり、dは指定された相対時間距離である。EBのデータアイテムのタイムスタンプは、コンシューマの非ストールサイクルごとに1つずつ減少される。EB FIFOの先頭データのタイムスタンプが0になると、そのデータは、コンシューマと同期しており、その先頭はIPBへフラッシュされる。コンシューマは常にIPBから読み出しを行う。
パイプライン性能は、EB FIFOの深さと共に増加する。一方、本発明者らは、ランダムなストールで10個のタスクを実行する2つのプロセッサ及び1つのIPBのパイプラインにおいて、ちょうど1のEBサイズで20%〜25%の改善(単一ストール領域を上回る)を見出した。
次に、本発明の一実施形態に従って制御されるプロデューサ/コンシューマのペアのオペレーションの一例を図4を参照して説明する。
各クロックサイクル20において、パイプラインコントローラ11は、図4の概観に示すようなアルゴリズムを実行する。21において、プロデューサ及びコンシューマ(図3のp及びp)が同期しているか否かについての判断が行われる。イエスである場合(Y)、オペレーションは問題がなく、ランタイム相対時間距離更新ステップ22が実行される。このルーチンは、次のクロックサイクル20を待つ。
p及びcが同期していないとの判断がステップ21で行われた場合(N)、このルーチンはステップ23に進む。ステップ23において、cがpよりも同期進みであるか否かについての判断が行われる。イエスである場合、ステップ24において、cがpに依存しているか否かについての判断が行われる。依存関係(c,p)は、上述した状態について求められる。すなわち、cがpよりも古いタスクを実行している場合、cは、同期進みで実行を継続することができる。すなわち、cはpに依存しない。この場合(N)、cはpに依存せず、このルーチンの次のステップは、cとpとの間のランタイム相対時間距離を更新することである(ステップ22)。
一方、ステップ24において、cがpに依存する(すなわち、cは、pよりも古いタスクを実行していない)場合、ステップ25において、cは、同期を維持するためにストールされる。次に、ランタイム相対時間距離がステップ22において調整され、次のクロックサイクル20が待機される。
ステップ23において、cがpよりも同期進みでないと判断された場合、ステップ26において、pがcよりも同期進みで実行されていると仮定され、pがcに依存しているか否かについての判断が行われる。pがcのタスクよりも古いタスクを実行している状況では、pはcに依存せず、そうである場合(N)、p及びcはオペレーションを継続することができ、ランタイム相対時間距離22が更新され、次のクロックサイクル20が待機される。
一方、pがcに依存する場合(一般にはそうである)、ステップ27において、EBに空きがあるか否かについての判断が行われる。EBに空きがある場合(Y)、EBには、或るスループットで(at throughput)プロデューサからデータがロードされ、EBは、依存関係を壊すことなく継続することができる。ランタイム相対時間距離22が更新され、次のクロックサイクル20が待機される。
ランタイム相対時間距離の調整は、ストール(p)、ストール(c)、終了(p)、及び終了(c)に依存する。終了(p)及び終了(c)において、MITI要件を保証するために、調整が必要とされる。この理由から、ランタイム相対時間距離調整ブロックが毎サイクル実行される。
一方、ステップ27において、EBが一杯であると判断された場合、プロセッサpは、ステップ28において単独でストールされる。
したがって、パイプラインが動作を継続し、ストールが、図4に関して解説した状況でのみ実施されることが分かる。一方、ストールは、(パイプライン単位ではなく)個々の単位で実施され、その結果、パイプラインは、すべてのプロセスがストールされない限り、全体として動作し続ける。上述したように、システムのオペレーションは、フラッシュを自動的に行わせるので、フラッシュプロセスは必要とされない。
上述した実施形態は、パイプラインにおけるハードワイヤ化されている同期プロセッサに関する。本発明は、ソフトウェアパイプラインにもまったく同様に適用することができ、ハードウェアに限定されるものではない。
当業者に明らかな変更及び変形は、本発明の範囲内にあるとみなされる。
非プログラマブルプロセッサの従来の同期パイプラインのオペレーションを示す図である。 非プログラマブルプロセッサの従来の同期パイプラインのオペレーションを示す図である。 本発明の一実施形態によるパイプライン構成の図である。 本発明の一実施形態のオペレーションを示すフロー図である。
符号の説明
1・・・中間バッファ(プロセッサ間バッファ)
2・・・中間バッファ(プロセッサ間バッファ)
3・・・中間バッファ(プロセッサ間バッファ)
10・・・パイプライン
11・・・パイプラインコントローラ
12・・・中間バッファ(プロセッサ間バッファ)
13・・・さらなるプロセッサ間素子(特別なバッファ)

Claims (24)

  1. 少なくとも1つのプロデューサプロセス/コンシューマプロセスのペアを含む同期パイプラインシステムにおけるパイプラインスループットを促進する方法であって、
    前記プロデューサプロセス/コンシューマプロセスのペアを制御するステップであって、
    前記プロデューサプロセス及び前記コンシューマプロセスが依存関係を壊すことなく非同期で実行されることを可能にするステップ
    を含む方法。
  2. 前記制御するステップは、
    前記プロデューサプロセス/コンシューマプロセスのペアの前記依存関係を監視すると共に、該依存関係を壊すという結果にはならない所定のパイプライン動作状況で、前記プロデューサプロセス/コンシューマプロセスのペアの非同期のオペレーションを可能にするステップ
    を含む
    請求項1に記載の方法。
  3. 前記所定のパイプライン動作状況は、
    前記プロデューサ及び前記コンシューマが互いに依存しない場合の動作状態
    を含む
    請求項2に記載の方法。
  4. 前記動作状態は、
    前記コンシューマプロセスが、前記プロデューサプロセスよりも同期進み(sync-ahead)で実行される状態
    を含み、
    前記コンシューマプロセスは、前記プロデューサプロセスによって実行されているタスクよりも古いタスクを実行している
    請求項3に記載の方法。
  5. 前記動作状態は、
    前記プロデューサプロセスが、前記コンシューマプロセスよりも同期進みで実行される状態
    を含み、
    前記プロデューサプロセスは、前記コンシューマプロセスによって実行されているタスクよりも古いタスクを実行している
    請求項3に記載の方法。
  6. 前記制御するステップは、
    プロセス間オペレーションを制御するステップ
    を含む
    請求項1に記載の方法。
  7. 前記プロセス間オペレーションは、前記プロデューサプロセスと前記コンシューマプロセスとの間のデータ転送のバッファリングであり、
    該バッファリングを制御するステップは、
    前記プロデューサプロセスが前記コンシューマプロセスよりも同期進みで実行されている時にデータ転送のさらなるバッファリング遅延を導入するステップ
    を含む
    請求項6に記載の方法。
  8. 前記バッファリングを制御するステップは、
    前記プロデューサプロセスが前記コンシューマプロセスよりもどれだけの時間分同期進みで実行されているかに従って、前記さらなるバッファリング遅延の時間を変化させるステップ
    を含む
    請求項7に記載の方法。
  9. プロセスストール領域(process stall domain)を実施するステップ
    をさらに含み、
    前記プロデューサプロセス及び前記コンシューマプロセスのペアの少なくとも一方は、単独でストールされる
    請求項1に記載の方法。
  10. 同期を維持するために、前記プロデューサプロセスと前記コンシューマプロセスとの間のランタイム相対時間距離を調整するステップ
    をさらに含む請求項1に記載の方法。
  11. 個々のプロセスがタスクを起動した時及び終了した時にフラグを立て、前記個々のプロセスが実施している前記タスクの追跡を可能にするステップ
    をさらに含む請求項1に記載の方法。
  12. 前記個々のプロセスの前記フラグを立てることを利用し、あるプロセスが別のプロセスに依存しているか否かを判断するステップ
    を含む請求項11に記載の方法。
  13. 少なくとも1つのプロデューサプロセッサ/コンシューマプロセッサのペアを備える同期パイプラインシステムにおけるパイプラインスループットを促進する装置であって、
    前記プロデューサプロセッサ/コンシューマプロセッサのペアを制御するように構成され、前記プロデューサプロセッサ及び前記コンシューマプロセッサが依存関係を壊すことなく非同期で実行されることを可能にする制御手段
    を備える装置。
  14. 前記制御手段は、前記プロデューサプロセッサ/コンシューマプロセッサのペアの前記依存関係を監視すると共に、該依存関係を壊すという結果にはならない所定のパイプライン動作状況で、前記プロデューサプロセッサ/コンシューマプロセッサのペアの非同期のオペレーションを可能にするように構成されている
    請求項13に記載の装置。
  15. 前記所定のパイプライン動作状況は、
    前記プロデューサ及び前記コンシューマが互いに依存しない場合の動作状態
    を含む
    請求項14に記載の装置。
  16. 前記動作状態は、
    前記コンシューマプロセッサが、前記プロデューサプロセッサよりも同期進みで実行される状態
    を含み、
    前記コンシューマプロセッサは、前記プロデューサプロセッサによって実行されているタスクよりも古いタスクを実行している
    請求項15に記載の装置。
  17. 前記動作状態は、
    前記プロデューサプロセッサが、前記コンシューマプロセッサよりも同期進みで実行される状態
    を含み、
    前記プロデューサプロセッサは、前記コンシューマプロセッサによって実行されているタスクよりも古いタスクを実行している
    請求項15に記載の装置。
  18. 前記コンシューマプロセッサが前記プロデューサプロセッサよりも同期進みで実行されている時にデータ転送のさらなるバッファリング遅延を実施するように構成されるバッファ
    をさらに備える請求項13に記載の装置。
  19. 前記制御手段は、前記プロデューサプロセッサが前記コンシューマプロセッサよりもどれだけの時間分同期進みで実行されているかに従って、前記さらなるバッファリング遅延の時間を変化させるように前記バッファを制御するよう構成されている
    請求項18に記載の装置。
  20. 前記制御手段は、プロセッサストール領域を実施するように構成され、プロセッサを単独でストールする
    請求項13に記載の装置。
  21. 前記制御手段は、同期を維持するために、前記プロデューサプロセッサと前記コンシューマプロセッサとの間のランタイム相対時間距離を調整するように構成されている
    請求項20に記載の装置。
  22. 前記制御手段は、個々のプロセッサがタスクを起動している時及び終了している時にフラグを立てると共に、タスクの該起動及び/又は該終了が個々のプロセッサによって実施されている時を追跡するように構成されている
    請求項13に記載の装置。
  23. 前記制御手段は、前記フラグを立てることを利用して、或るプロセスが別のプロセスに依存しているか否かを判断するように構成されている
    請求項22に記載の装置。
  24. 請求項1に記載の方法を実施するように同期パイプラインを制御するよう構成されるコンピュータプログラムを提供する
    コンピュータ可読媒体。
JP2007557672A 2005-03-04 2005-03-04 パイプラインスループットを促進するための方法及び装置 Expired - Fee Related JP4749431B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IN2005/000070 WO2006092807A1 (en) 2005-03-04 2005-03-04 A method and apparatus for facilitating pipeline throughput

Publications (2)

Publication Number Publication Date
JP2008532171A true JP2008532171A (ja) 2008-08-14
JP4749431B2 JP4749431B2 (ja) 2011-08-17

Family

ID=36940868

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007557672A Expired - Fee Related JP4749431B2 (ja) 2005-03-04 2005-03-04 パイプラインスループットを促進するための方法及び装置

Country Status (4)

Country Link
US (1) US8271993B2 (ja)
EP (1) EP1859346B1 (ja)
JP (1) JP4749431B2 (ja)
WO (1) WO2006092807A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539143A (ja) * 2010-10-07 2013-10-17 コミッサリア ア レネルジー アトミーク エ オ ゼネルジ ザルタナテイヴ 論理時刻ベクトルに基づくタスクの実行をスケジュールするためのシステム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7945745B2 (en) 2007-09-17 2011-05-17 General Electric Company Methods and systems for exchanging data
KR20100035394A (ko) * 2008-09-26 2010-04-05 삼성전자주식회사 멀티 프로세싱에서의 메모리 관리장치 및 그 방법
US20120151488A1 (en) * 2010-12-10 2012-06-14 International Business Machines Corporation Measuring Transaction Performance Across Application Asynchronous Flows
US9235798B2 (en) 2012-07-18 2016-01-12 Micron Technology, Inc. Methods and systems for handling data received by a state machine engine
US9621636B1 (en) 2013-09-10 2017-04-11 Google Inc. Distributed processing system throttling
US10917438B2 (en) * 2018-01-25 2021-02-09 Cisco Technology, Inc. Secure publishing for policy updates
US11275485B2 (en) * 2018-06-15 2022-03-15 Sap Se Data processing pipeline engine
US11461127B2 (en) * 2019-05-24 2022-10-04 Texas Instruments Incorporated Pipeline arbitration
US11785117B2 (en) * 2019-06-26 2023-10-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatuses for service discovery

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0228862A (ja) * 1988-07-19 1990-01-30 Agency Of Ind Science & Technol 並列論理型言語におけるデータ転送方式
EP1206084A2 (en) * 2000-11-07 2002-05-15 Alcatel Internetworking (PE), Inc. Non-blocking, multi-context pipelined processor
US20020199085A1 (en) * 2001-06-08 2002-12-26 Norden Erik K. Variable length instruction pipeline

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4073005A (en) * 1974-01-21 1978-02-07 Control Data Corporation Multi-processor computer system
EP0353819B1 (en) * 1988-08-02 1997-04-09 Koninklijke Philips Electronics N.V. Method and apparatus for synchronizing parallel processors using a fuzzy barrier
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
US5317734A (en) * 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
JP2772304B2 (ja) * 1992-04-10 1998-07-02 富士通株式会社 並列処理の負荷均一化方法
US6049860A (en) * 1998-02-19 2000-04-11 International Business Machines Corporation Pipelined floating point stores
US6370600B1 (en) * 1999-05-25 2002-04-09 Advanced Micro Devices, Inc. Staging buffer for translating clock domains when source clock frequency exceeds target clock frequency
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0228862A (ja) * 1988-07-19 1990-01-30 Agency Of Ind Science & Technol 並列論理型言語におけるデータ転送方式
EP1206084A2 (en) * 2000-11-07 2002-05-15 Alcatel Internetworking (PE), Inc. Non-blocking, multi-context pipelined processor
US20020199085A1 (en) * 2001-06-08 2002-12-26 Norden Erik K. Variable length instruction pipeline

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013539143A (ja) * 2010-10-07 2013-10-17 コミッサリア ア レネルジー アトミーク エ オ ゼネルジ ザルタナテイヴ 論理時刻ベクトルに基づくタスクの実行をスケジュールするためのシステム

Also Published As

Publication number Publication date
US20080168464A1 (en) 2008-07-10
EP1859346A4 (en) 2008-07-09
EP1859346A1 (en) 2007-11-28
WO2006092807A1 (en) 2006-09-08
US8271993B2 (en) 2012-09-18
EP1859346B1 (en) 2012-01-11
JP4749431B2 (ja) 2011-08-17

Similar Documents

Publication Publication Date Title
JP4749431B2 (ja) パイプラインスループットを促進するための方法及び装置
KR100951092B1 (ko) 정교한 멀티스레드 디스패치 차단 방법, 장치 및 컴퓨터 판독가능한 기록 매체
US5579498A (en) Pipelined data processing system capable of stalling and resuming a pipeline operation without using an interrupt processing
JP2008210107A (ja) シミュレーション方法及びシミュレーション装置
JPH04306735A (ja) 非同期割込み禁止機構
EP3364296A1 (en) Simulating execution-time variations and scheduling in a block-oriented simulation system
TW201835765A (zh) 死結偵測器、包括其之系統與其方法
JP2009157629A (ja) 半導体集積回路装置および半導体集積回路装置のクロック制御方法
US7069425B1 (en) Real-time processor executing predetermined operation defined by program correctly at predetermined time
JP2019125350A5 (ja)
US10445445B2 (en) Sliding time window control mechanism for parallel execution of multiple processor core models in a virtual platform simulation
US20240036921A1 (en) Cascading of Graph Streaming Processors
WO2017088456A1 (zh) 多输入多输出处理器流水线数据同步装置及方法
JP2010534888A (ja) 高インテグリティと高可用性のコンピュータ処理モジュール
JP2008269390A (ja) プロセッサ
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
JP2013250696A (ja) プロセッサシステムおよびプロセッサ制御装置
JP2924736B2 (ja) パイプライン演算装置
US11741044B2 (en) Issuing instructions on a vector processor
JP2008197943A (ja) コンピュータシステム
JP2001014161A (ja) プログラマブルコントローラ
TWI795475B (zh) 週期行程執行系統以及系統晶片裝置
Ntaryamira et al. Data consistency and temporal validity under the circular buffer communication paradigm
Khatib Modeling and scheduling embedded real-time systems using Synchronous Data Flow Graphs
JP2006126893A (ja) クロック制御装置、情報処理装置およびクロック制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100616

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100922

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110415

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: 20110511

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110517

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4749431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140527

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees