JP6317365B2 - 同期命令を含む処理システム - Google Patents

同期命令を含む処理システム Download PDF

Info

Publication number
JP6317365B2
JP6317365B2 JP2015546462A JP2015546462A JP6317365B2 JP 6317365 B2 JP6317365 B2 JP 6317365B2 JP 2015546462 A JP2015546462 A JP 2015546462A JP 2015546462 A JP2015546462 A JP 2015546462A JP 6317365 B2 JP6317365 B2 JP 6317365B2
Authority
JP
Japan
Prior art keywords
synchronization
controller
processors
processor
adapter
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
Application number
JP2015546462A
Other languages
English (en)
Other versions
JP2016501414A5 (ja
JP2016501414A (ja
Inventor
ドブス,カール・エス
マリク,アフザル・エム
フォークナー,ケネス・アール
ソルカ,マイケル・ビイ
Original Assignee
コーヒレント・ロジックス・インコーポレーテッド
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 コーヒレント・ロジックス・インコーポレーテッド filed Critical コーヒレント・ロジックス・インコーポレーテッド
Publication of JP2016501414A publication Critical patent/JP2016501414A/ja
Publication of JP2016501414A5 publication Critical patent/JP2016501414A5/ja
Application granted granted Critical
Publication of JP6317365B2 publication Critical patent/JP6317365B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Description

本発明は、コンピュータシステムおよびデジタル信号プロセッサ(DSP)に関し、さらに詳細には、マルチプロセッサシステムに関する。
本明細書は、電子システム、特に、コンピュータ、デジタル信号プロセッサ(DSP)などのデジタル電子システム、およびさらに大きいシステムに組み込まれたこれらのシステムに関する。さらに詳細には、本概念は、デジタル電子システム内の信号ネットワークに関し、特にマルチプロセッサアレイ(MPA)内の同期信号ネットワークに関する。MPAは、処理要素(PE)のグループと、支持メモリ(SM)と、PEとメモリとの間で帯域幅の広いデータ通信を支持する第一相互接続ネットワーク(PIN)とで設定される。
上記PEは、入力データおよび出力データをバッファリングするためのレジスタ、命令処理ユニット(IPU)、およびデータに対して算術関数および論理関数を実施するための論理回路/回路のほか、システムの他の部分と通信するための多数のスイッチおよびポートを有する。IPUは、メモリから命令を取得し、それを復号化し、適切な制御信号を設定してデータをプロセッサから出し入れして算術関数および論理関数を実施する。
コンピュータのメモリおよびDSPは、最上部に高速メモリがある階層で、階層が一段下がるにつれて低速になるが容量が多くなっていく階層内に組織される。MPAでは、階層の最上部にある支持メモリが各PEに隣接して設置される。各支持メモリは、命令のみまたはデータのみを保持するように特殊化されてよい。特定のPEに対する支持メモリがそのPEに専用のものであってもよいし、他のPEと共有されてもよい。
MPAが最初に回路基板上でデジタル集積回路(IC)のアレイとして作製され、各ICが1つのプロセッサを備え、回路基板がプロセッサどうしを相互接続するデータ通信リンクを提供していた。製造寸法がさらに小さい相補型金属酸化膜半導体(CMOS)トランジスタ回路に基づいた超大規模集積(VLSI)技術が進化し続け、シリコンICチップ1つあたりの論理回路とメモリ回路との密度が大幅に増大した。今日、1つのICチップ上でMPAは、100個以上のプロセッサおよびその支持メモリおよび相互接続ネットワークを備えて作製されている。これらのMPAチップを回路基板上でさらに相互接続させてさらに大きいシステムを作製できる。
MPAに適したPEは、単にMPAチップ1つあたりのPE数が多いために汎用プロセッサ(GPP)よりもエネルギー効率が高いことがあり、余分なエネルギーは余分な廃熱になり、その熱を取り除くにはチップのパッケージ費用および操作費用が加算される。
米国特許第7,415,594号 米国特許出願第13/274,138号
マルチプロセッサアレイの様々な実施形態を開示する。広義には、複数のプロセッサおよび複数のコントローラが散在するように一緒に接続している回路および方法が構想される。各プロセッサは、複数のプロセッサポートおよび1つの同期アダプタを備え、同期アダプタは、複数のアダプタポートを備えている。各アダプタポートは、複数のコントローラのうちの1つのコントローラポートに接続され、各コントローラは、複数のコントローラポート、および1つの設定ポートを備えている。各プロセッサは、1つ以上のアダプタポートを介して同期信号をそれぞれの1つ以上のコントローラに送信するように設定され、さらに、1つ以上のコントローラから受信する応答に応じてプログラム命令の実行を停止するように設定される。
さらに別の実施形態では、各コントローラは、設定ポートを備えていてよい。設定ポートは、1つ以上の設定データビットを受信するように設定されてよい。
もう1つの非限定的な実施形態では、各コントローラは、さらに、1つ以上の設定ビットに応じて応答を送信するように設定されてよい。
コンピューティングシステムの一実施形態を示すブロック図である。 一実施形態のコンピューティングシステムのソフトウェアとハードウェアとの階層を示すブロック図である。 テストおよび開発システムを示すブロック図である。 マルチプロセッサ集積回路の一実施形態を示すブロック図である。 マルチプロセッサアレイの一実施形態を示すブロック図である。 同期コントローラの一実施形態を示すブロック図である。 同期ネットワークのもう1つの実施形態を示すブロック図である。 同期アダプタの一実施形態を示すブロック図である。 同期コントローラの一実施形態を示すブロック図である。 同期の連鎖を示すブロック図である。 マルチプロセッサアレイを動作させる方法の一実施形態を描いたフローチャートである。 マルチプロセッサアレイを動作させるもう1つの方法の一実施形態を描いたフローチャートである。 マルチプロセッサアレイの2つの処理要素の間の同期を示すブロック図である。 マルチプロセッサシステムの処理要素を同期させる方法の一実施形態を描いたフローチャートである。 マルチプロセッサシステムの3つの処理要素の間の同期を示すブロック図である。 マルチプロセッサシステム内の同期コントローラを動作させる方法の一実施形態を描いたフローチャートである。 マルチプロセッサシステム内の2つのプロセッサ群を同期させる方法の一実施形態を描いたフローチャートである。 マルチプロセッサシステム内の2セットのプロセッサ同期させる方法の一実施形態を描いたフローチャートである。 マルチプロセッサシステム内の2セットのプロセッサ同期させる方法の一実施形態を描いたフローチャートである。 マルチプロセッサシステム用のソフトウェアを設計する方法の一実施形態を描いたフローチャートである。
本開示は、様々な修正および代替形態が可能であるが、本開示の特定の実施形態を例として図面に示し、本明細書ではこれについて詳述していく。しかしながら、図面およびそれに対する詳細な説明は、図示した特定の形態に本開示を限定する意図はなく、逆にその意図は、付属の特許請求の範囲に規定される本開示の精神および範囲内に収まるあらゆる修正、均等物、代替物を含むことである点を理解すべきである。本明細書で使用する見出しは、編成のみを目的とし、本明細書の範囲を限定するために使用しているのではない。本明細書全体にわたって使用しているように、「may(〜であってよい)」という単語は、強制の意味(すなわち、must(〜しなければならない)の意味)ではなく、容認の意味(すなわち、その可能性があるという意味)で使用している。同じように、「include(含む)」、「including(含む)」および「includes(含む)」という単語は、それを含んでいるという意味であって、限定するものではない。
様々なユニット、回路、またはその他のコンポーネントが、1つまたは複数のタスクを実行する「ように設定された(configured to)」と記載されていることがある。このような文脈では、「〜するように設定された(configured to)」というのは、動作中にその1つまたは複数のタスクを実行する「回路を有する」ことを全体的に意味する構造の広義の詳述である。このように、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントがその時点でオンになっていないとしても、タスクを実行するように設定できるものである。一般に、「〜するように設定された(configured to)」に対応する構造を形成する回路は、ハードウェア回路を含んでいてよい。同じように、様々なユニット/回路/コンポーネントが1つまたは複数のタスクを実行すると便宜上明細書内に記載していることがある。このような記載は、「〜するように設定された(configured to)」という句を含むものと解釈すべきである。1つ以上のタスクを実行するように設定されたユニット/回路/コンポーネントの詳述は、米国特許法第112条第6段落にあるそのようなユニット/回路/コンポーネントに対する解釈を採用しないことを明確に意図している。さらに全体的には、どの要素の詳述も、「means for(〜を意味する)」または「step for(〜のステップである)」という言葉が明記されていない限り、米国特許法第112条第6段落にあるそのような要素に対する解釈を採用しないことを明確に意図している。
「Processing System With Interspersed Stall Propagating Processors And Communication Elements」と題し、発明者がMichael B.Doerr、William H.Hallidy、およびDavid A.Gibson、Craig M.Chaseである米国特許第7,415,594号を参照することにより、本明細書に完全に記載されているかのようにその全容を本明細書に援用する。
2011年10月14日に出願され、「Disabling Communication in a Multiprocessor System」と題し、発明者がMichael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R Trocino、およびDavid A.Gibsonである米国特許出願第13/274,138号を参照することにより、本明細書に完全に記載されているかのようにその全容を本明細書に援用する。
用語
ハードウェア設定プログラム−例えば集積回路などのハードウェアをプログラムするか設定するために使用できるバイナリイメージにコンパイルできるソーステキストからなるプログラム。
コンピュータシステム−様々な種類のコンピューティングシステムまたは処理システムのうちのいずれかであり、パーソナルコンピュータシステム(PC)、メインフレームコンピュータシステム、ワークステーション、ネットワーク機器、インターネット機器、携帯情報端末(PDA)、グリッドコンピューティングシステム、もしくはその他のデバイス、あるいはデバイスを組み合わせたものなどである。一般に、「コンピュータシステム」という用語は、記憶媒体からの命令を実行する少なくとも1つのプロセッサを有する任意のデバイス(またはデバイスを組み合わせたもの)を含ませるために広義に規定できる。
自動的−コンピュータシステム(例えばコンピュータシステムが実行するソフトウェア)またはデバイス(例えば回路、プログラム可能なハードウェア要素、ASICなど)によって実施されるアクションまたは動作のことであり、そのアクションまたは動作を直接指定したり実施したりするユーザ入力がないこと。そのため、「自動的」という用語は、ユーザが手動で実施または指定する動作で、ユーザが動作を直接実施するための入力を提供するものとは対照的である。自動的な手順であれば、ユーザが提供する入力で開始できるが、「手動で」実施されるその後のアクションはユーザが指定するものではなく、すなわち「手動で」実施されず、ユーザは実施するための各アクションを指定する。例えば、各フィールドを選択して電子フォームに書き込み、(例えば情報をタイピングしたり、チェックボックスを選択したり、無線選択をしたりして)入力して情報を指定しているユーザは、コンピュータシステムがユーザの行為に応答して更新しなければならないとしても、手動でフォームに書き込んでいる。フォームは、コンピュータシステムによって自動的に書き込まれてよく、この場合、コンピュータシステム(例えばコンピュータシステムで実行するソフトウェア)は、フォームのフィールドを分析し、フィールドへの回答を指定する何らかのユーザ入力なしにフォームに書き込む。前述したように、ユーザは、フォームの自動書き込みを呼び出すことができるが、その時点のフォームの書き込みに関わってはいない(例えばユーザは、フィールドへの回答を手動で指定してはおらず、むしろフィールドは自動的に完成されている)。本明細書では、ユーザが取った行為に応答して自動的に実施された動作の様々な例を提供する。
概要
並列処理が可能なコンピュータシステムは、複数のデータ処理要素(PE)、支持メモリ(SM)ユニット、および帯域幅の広い相互接続ネットワーク(IN)で設定されて、個々のPE、SM、およびI/Oポートシステムどうしの間でデータを移動させることができる。そのようなシステムの第一IN(またはPIN)は、帯域幅が広く平均配信時間(待ち時間)が短くなるように最適化されてよい。しかしながら、PINは、確実に配信するようには最適化できない(メッセージは、「ビジー」信号になる他のメッセージをブロックできる)。その結果、PINは、PEのグループに対してタスクを同期させるのには適していないことがある。いくつかの実施形態では、同期化のためにコンピュータシステムに追加のネットワークを追加することができる。このようなネットワークにより、メッセージを確実に配信できるが、このネットワークにより、コンピュータシステムに対して複雑さ、電力消費、または物理的なサイズが加わることがある。図面に示し、以下に説明した実施形態は、並列処理要素をコンピュータシステム内で同期させると同時に、コンピュータシステムの複雑さ、電力消費、または物理的なサイズに対する影響を最小にする技術を提供できる。
並列処理
旧式のマイクロプロセッサおよびデジタル信号プロセッサ(DSP)は、一度に1つのタスクを実行でき、これは一般に、以下のように実行スレッドと呼ばれる。プロセッサのIPUユニットからわかるように、実行スレッドは命令ストリームである。いくつかの実施形態では、命令ストリームに応答して結果の単一のストリームが生成される。この実行方式は一般に、Single Instruction Single Data(単一命令単一データ、SISD)と呼ばれる。他の実施形態では、複数の算術論理ユニット(ALU)を用いて、結果の複数のストリームを可能にすることができる。この実行方式は通常、Single Instruction Multiple Data(単一命令複数データ、SIMD)と呼ばれる。さらに大きいマイクロプロセッサおよびDSPは、SIMDの能力を有することがあり、様々な実施形態では、そのような並列処理を利用して性能を高めるために、ソフトウェアを用いてよい。例えば、SIMDを使用することによって、映像圧縮およびトランスコーディング、コンピュータビジョン、音声認識、および暗号化を加速できる。
SIMD命令によって、命令の効果的な処理が可能になることがある。しかしながら、その効果は、データがALUに供給される速度によって異なることがある。通常、1つのSIMD命令から生じるデータ数は、2から8までの範囲であり、SIMDごとに生じるデータ数は増大するため、各データ項目に含まれるビット数は通常減少する。SIMD命令ごとのデータ項目数を増大させる努力をすると、次のような様々な問題が生じることがある:複数のデータ項目が共通のメモリから同時にALUに供給され、ALUの結果を格納すると同時にメモリに戻り、動作中に余分な電力消費が起こり、余分なALUはアイドル状態だが電源が入って準備が整っているときに余計な漏れ電力を消費するなどだが、これに限定されない。
より最近のマイクロプロセッサおよびDSPは、複数のIPUならびにALUを用いて複数のスレッドを同時に実行できる。何を反復するかや特殊化されるかどうかは、それぞれのマイクロプロセッサ/DSPの設計タイプによって大きく異なる。それぞれのスレッドには独立した命令ストリームがあってよいため、この並列動作方式は、multi−instruction multi−data(マルチ命令マルチデータ、MIMD)と呼ばれる。プロセッサごとの通常のスレッド数は2〜4だが、プロセッサは16スレッド以上の能力があるように設計されている。プロセッサごとのスレッド数を増大させる努力をすると、命令ストリームが共通のメモリから複数のIPUへ同時に流れ、余分なレジスタに対して余分な漏れ電力を消費するという問題が起こるが、これらは、複数のデータストリームが対応するALUに供給される問題に加えて起こることである。
マルチプロセッシング
マルチプロセッサシステムによってプログラマは、大型のタスクを、並列に実行できる複数の小さなタスクに分割できる。並列実行を利用して、時間を短縮して大型のタスクを完了するか、あるいは(プロセッサのクロック周波数を低減して)電力消費を削減することができる。クロック周波数が低減すれば、電源の電圧も低下してエネルギーを節約できる。
マルチプロセッサシステムは、様々なコンピュータシステムのうちの1つに用いることができる。コンピューティングシステムの一実施形態を図1に示している。図示した実施形態では、コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、またはその他の任意の適切なシステムであってよい。コンピューティングシステム100は、様々な実施形態では、例えば組み込みシステム110のような1つ以上の組み込みシステムを備えていてよい。いくつかの実施形態では、組み込みシステム100は、例えばマルチプロセッサIC120のような1つ以上の集積回路(IC)を備えていてよい。組み込みシステム110には1つのICしか描かれていないが、他の実施形態では、異なる数のICを用いてよく、そのそれぞれが異なる機能を実施するように設定されてよい。
図2Aには、一実施形態のソフトウェアとハードウェアとの階層を描いたブロック図を示している。この階層の下はコンピューティングシステム240である。いくつかの実施形態では、コンピューティングシステム240は、コンピューティングシステム100に相当するものであってよい。コンピューティングシステム240は、様々な実施形態では、デスクトップワークステーションであってよく、他の実施形態では、コンピューティングシステム240は、ラップトップコンピュータまたはその他のモバイルデバイスであってよく、ディスプレイ、ハードディスクドライブ、ネットワークインターフェースデバイスのようなコンポーネント、およびその他の任意の適切なコンポーネントを備えていてよい。
階層の次のレベルは、オペレーティングシステム250である。様々な実施形態では、オペレーティングシステム250は、例えばWindows(登録商標)、Linux(登録商標)、Unix(登録商標)などの様々なタイプのオペレーティングシステムのうちの1つであってよい。オペレーティングシステム250のようなオペレーティングシステムは、様々な実施形態では、コンピューティングシステム240のハードウェアにアクセスするためのアプリケーションまたはユーザプログラムに必要なコマンドおよびプログラム命令を提供できる。
上記のように、オペレーティングシステム250は、他のプログラムのためにハードウェアリソースへのアクセスを提供できる。図示した実施形態では、このようなプログラムは、設計ツール一式210、ならびにプロジェクトデータベース220Aおよび220Bを備えている。いくつかの実施形態では、設計ツール一式210は、ユーザがハードウェアリソースをコンピューティングシステム240内で設定できるように設定されていてよい。以下にさらに詳細に説明するように、このような設定は、制御ビットをマルチプロセッサ内の1つ以上の制御レジスタに格納することを含んでいてよい。制御ビットは、様々な実施形態では、マルチプロセッサの処理要素どうしの間の情報のルーティングを制御できる。いくつかの実施形態では、制御ビットは、マルチプロセッサの処理要素どうしの間の同期も制御できる。
テストおよび開発システムの一実施形態を図2Bに示している。図示した実施形態では、マルチプロセッサIC270は、開発システム250に含まれている。開発システム250は、テストベンチ260と接続している。様々な実施形態では、テストベンチ260は、テスト機材、ラップトップコンピュータ、およびマルチプロセッサIC270のテストおよび開発を補佐するその他の任意の適切な機材を備えていてよい。
動作中、開発システム250を使用して、所与のソフトウェアアプリケーションと一緒に使用するためにどのようにマルチプロセッサ270を設定するかを決定できる。いくつかの実施形態では、設定は、1つ以上の処理要素をどのようにマルチプロセッサ270内で同期させて、並列処理中に個々の処理要素にデータを交換させるかを決定することを含んでよい。
図2Bに示した実施形態は単なる一例であることに注意されたい。他の実施形態では、異なる数のマルチプロセッサICおよび異なるテスト機材を用いてよい。
マルチプロセッサICの一実施形態を図3に示している。図示した実施形態では、マルチプロセッサIC300は、プロセッサアレイ310を備えている。マルチプロセッサIC300は、他の実施形態では、他の回路および機能ブロック(図示せず)も備えていてよい。例えば、マルチプロセッサIC300は、発振器、位相ロックループ(PLL)、内部で電源を生成し調節する回路などを備えていてよいアナログ/混合信号ブロックを備えていてよい。
動作中、メモリまたはハードディスクドライブまたはその他の適切な媒体に格納されたプログラム命令をプロセッサアレイ310で実行できる。いくつかの実施形態では、プロセッサアレイ310内の個々の処理要素(PE)を、特定のプログラム命令を実行するように設定できる。以下にさらに詳細に説明するように、プログラム命令の実行は、様々な実施形態では、同期を利用してPEどうしの間で調整できる。
図4には、マルチプロセッサアレイ(MPA)の一例を示している。いくつかの実施形態では、MPA400は、図3に示したマルチプロセッサIC300のプロセッサアレイ310に相当するものであってよい。図示した実施形態では、MPA400は、複数の処理要素(PE)および複数の支持メモリ(SM)および1つの相互接続ネットワーク(IN)を備えている。INは、スイッチノードとリンクとで設定される。ルータとも呼ばれるスイッチノードをリンクと共に使用して、PEどうしの間およびPEとMPAのI/Oポートとの間に通信経路を形成できる。しかしながら、各PEでは、通信されるどのような情報もSMにバッファリングされてよい。図示した実施形態では、SMは、データメモリルータ(DMR)と呼ばれる通信経路ルータと組み合わされている。本明細書で使用しているように、PEをPEノードと呼ぶこともあり、DMRをDMRノードと呼ぶこともある。本明細書ではDMRを「設定可能な通信素子(configurable communication element)、またはCCE」と呼ぶこともある。
図4に示したようなDMRどうしの間のリンクは、直線のメッシュを形成する。しかしながら、他の実施形態では、他の多くの接続図式が可能であり、構想される。図4に示したMPA接続図式では、各PEは4つの隣接するDMRに接続しているのに対し、各DMRは4つの隣接するPEに接続するとともに4つの隣接するDMRにも接続している。DMR1つあたりにDMRとDMRとの6つのリンクを使用して3次元の直線メッシュを支持するか、あるいはDMR1つあたりに8つのリンクを使用して東西南北方向に加えて4つの対角線方向を支持するなど、より高次元のINを支持するために他の接続図式も検討される。リンクは、物理的に最も近くにある隣接対象物に限定されない。
MPAとアプリケーションソフトウェアとを組み合わせたものは、様々な実施形態では、並列処理システム(PPS)と呼ぶことがある。例えば、MPAをプログラムして、カメラからの生の映像データをバッファリングして分析してから、バッファコンテンツに対して映像データの圧縮を実施し、圧縮したデータを無線リンク上に伝送することができる。このアプリケーションソフトウェアとMPAとを組み合わせたものを、例えば並列映像信号プロセッサと呼ぶことがある。
I/Oセルチップを含むMPA400を、汎用マイクロプロセッサ、DSP、FPGA、またはASICが現在使用されている様々なシステムおよびアプリケーションのいずれかに使用できる。例えば、図4に示した処理システムは、様々なタイプのコンピュータシステム、デジタル信号プロセッサ(DSP)または計算を必要とする他のデバイスのいずれかで使用できる。
図4に示したMPAは単なる一例であることに注意されたい。他の実施形態では、異なる数のPEおよびPEどうしの間の異なる接続機構を用いてよい。
同期
マルチプロセッシングにより、さらに多くのプログラム命令を同時に実行できる可能性があるが、マルチプロセッシングにより、効果的な通信および調整のために、小さいタスクを特定の境界で時間と空間の面で同期させる必要性が生じる可能性あがる。タスクがシステムクロック(クロックサイクルまたは省略して単に「サイクル」とも呼ばれる)の最小ティックで始まる場合、2つ以上のタスクが同期される。タスクの同期は、様々な実施形態では、サイクル数が少ない同期を実施するには困難なことがある。
上記に注意したように、PINはメッセージの配信を確実にするものではない。そのため、PINはPEの同期には適していない。代替策が、各PEおよび共有メモリロケーションでソフトウェアバリアを用いることである。PEがそのバリアに到達すると、PEはロケーション値を上げた後、そのロケーション値が調整すべき予想PE数と一致するまでその値を定期的にポーリングする。しかしながら、このような技術を用いると、ほとんどのPEのアーキテクチャは、一連のPEがすべてバリアを超えて同じクロックサイクル内で他のPEと同期し続けるのを確実にすることはない。
様々な実施形態では、PEのアーキテクチャは、例えば1から20サイクルまでのような広いサイクル範囲内でタスクを同期させることができる可能性があるが、特定の瞬間の現在のサイクル数は、プログラマの正常な制御を超えたいくつかの要因、例えば、他のアクティブスレッドの状態、SMで現在処理されているデータのロケーション、キャッシング、割り込み処理などによって異なる。
いくつかの実施形態では、同期ネットワーク(synchronization network)(本明細書では「同期ネットワーク(sync network)」とも呼ぶ)を用いて、MPAの1つ以上のPEどうしの間でタスクを同期させることができる。マルチプロセッサシステムの第一相互接続ネットワーク(PIN)は、リンクとノードとで設定されてよく、その場合のノードは、リンクならびに点在する処理要素(PE)および支持メモリ(SM)に接続するためのポートを有するが、同期ネットワークを、一連の同期コントローラと、一連のPEアダプタおよびその間の接続部と、各PEにおける新たな命令とで設定してよい。
同期ネットワークを備えたMPAの一実施形態を図5に示している。図示した実施形態では、単一の同期コントローラ(C)をPINの各ノードに対して使用する。1つのシステムにある同期コントローラはすべて同じであってよい。各同期コントローラは、複数のポートを有してよく、その各々が隣接するPEに結合し、1つのポートが設定のためのものであってよい。いくつかの実施形態では、同期コントローラに結合している一連の隣接するPEは、最も近いPINノードが結合している一連のPEと同じであってよい。設定ポートは、SMロケーション、PEレジスタ、プログラミング/デバッグするための第二ネットワーク、または設定ポートに設定データを供給するその他の任意の手段に結合していてよい。同期コントローラにあるPEポートは、インバウンド用の同期信号およびアウトバウンド用の同期停止信号を有する。
いくつかの実施形態では、各PEは、複数のポートを有する同期アダプタ(A)を用いることができ、各ポートは、同期コントローラに結合するほか、それ自体のPEにも結合する。いくつかの実施形態では、同期アダプタをPEに組み込むことができ、他の実施形態では、同期アダプタは別のエンティティであってよい。同期コントローラに結合している様々なポートは、PEから見た方向、例えば結合が4つの場合はNE、SE、SW、およびNWというコンパスの方向で区別することができる。アダプタにある各ポートは、アウトバウンド用の同期信号およびインバウンド用の同期停止信号を有する。さらに高次元のINを支持するために、同期コントローラとアダプタとの間の他の接続図式も検討される。同期コントローラと同期アダプタとの間のリンクは、物理的に最も近い隣接物に限定される必要はない。
図5に示した同期ネットワークは単なる一例であることに注意されたい。他の実施形態では、異なる数の同期コントローラおよびアダプタ、ならびに同期コントローラとアダプタとの間の異なる接続が可能であり、構想される。
いくつかの実施形態では、PEどうしの間の同期のソフトウェアによる制御を用いてよい。このような場合、専用の「同期」命令をPE命令セットに含めてよい。様々な実施形態では、このような命令に対するアセンブリ言語形式は、
同期<direction list>
であってよい。
<direction list>フィールドは、信号を送信(アサート)し、その後同期停止信号をデアサートするのを待つための同期コントローラ方向のリスト(すなわち1つ以上)を指摘できる。APEは、次の命令を実行する前にリストに一致するすべての同期停止信号がデアサートされるまで待つことができる。
いくつかの実施形態では、同期コントローラがこのPEを1つ以上の他のPEと同期させるように設定されていない場合、同期停止信号はデアサートされたままになり、PEは同期停止信号を待つことができない。同期コントローラは、同期設定レジスタ内に「マスクされて」いるPEからの同期を無視できるとともに、同期停止をこのPEにアサートできない。様々な実施形態では、同期設定レジスタは、MPAが実行する所与のアプリケーションに特有の設定情報を格納できる。
同期コントローラが所与のPEを1つ以上の他のマスクされていないPEと同期するように設定され、かつそのマスクされていないPEがそのそれぞれの同期信号をまだアサートしていない場合は、同期コントローラは、同期停止信号をアサートし返すことで応答できる。その場合、所与のPEは、同期コントローラがマスクされていないPEの同期信号をすべて受信し、マスクされていない同期停止信号をすべてデアサートするまで待つことができる。
様々な実施形態では、同期コントローラをDMRの一部として備えてよく、他の実施形態では、各同期コントローラをMPA内のスタンドアローン型ユニットとして実施してよいことに注意されたい。
図6には、同期ネットワークの一部の一実施形態を示している。図示した実施形態では、同期ネットワーク600は、同期アダプタ601、603、および605、ならびに同期コントローラ602、604、および606を備えている。それぞれの同期コントローラと同期アダプタとの間の接続部は、2つのワイヤを備えている。1つのワイヤは、同期リクエスト(sync_request、SR)信号の通信に使用されてよく、もう1つのワイヤは、同期停止(sync_stall、SS)信号の通信に使用されてよい。いくつかの実施形態では、SR信号は同期アダプタから同期コントローラに送信されてよく、SSは同期コントローラから同期アダプタに送信されてよい。
所与の同期コントローラと所与の同期アダプタとの間の接続部に備わる2つのワイヤは、4つの状態を符号化できる。第1の状態では、SRとSS信号の両方が、非アクティブを指す論理0レベルであってよい。SR信号は論理0レベルであってよく、SS信号は第2の状態で論理1レベルであってよく、これは同期バリアがアクティブであるが、まだリクエストされていないことを指す。第3の状態では、SR信号およびSS信号は両方とも論理1値であってよく、これは同期バリアがアクティブでリクエストされているがまだ完了していないことを指す。第4の状態では、SRリクエスト信号は論理1値であってよく、SS信号は、同期バリアが完了したことを指す論理0値であってよい。
図6に示した実施形態は単なる一例であることに注意されたい。他の実施形態では、異なる数の同期アダプタおよび同期コントローラ、ならびに異なる設定の同期コントローラおよび同期アダプタを用いてよい。
同期アダプタの一実施形態を図7に示している。図示した実施形態では、同期アダプタ700は、接続したORゲート710を備えている。同期アダプタ700は、様々な実施形態では、PE内に含まれていてよく、他の実施形態では、同期アダプタは、MPA内の別のエンティティであってよい。同期アダプタ700はORゲートを備えているが、他の実施形態では、他の論理ゲートおよび論理ゲートの他の設定を用いてよい。
動作中、同期アダプタ700は、PEの命令を取得し復号化するユニットと隣接する同期コントローラとの間の通信を仲介できる。PEの命令を取得し復号化するユニットから受信したSR信号は、同期アダプタ700を介して隣接する同期コントローラまで移動できる。いくつかの実施形態では、SR信号は、前述した命令のようなソフトウェア命令の関数であってよい。SS信号はそれぞれの同期コントローラから戻り、ORゲート710によって論理的に組み合わされる。その結果生じる信号は、PEの命令を取得し復号化するユニットを停止するために使用されてよい。いくつかの実施形態では、次のPEクロックサイクルに対する命令の取得を遅らせるには、隣接する同期コントローラのうちの1つから送信される単一のアクティブなSS信号で十分である可能性がある。
図7に示した同期アダプタは単なる一例であることに注意されたい。他の実施形態では、異なる数の論理ゲートならびに異なる数のSR信号およびSS信号が可能であり、構想される。
図8には、同期コントローラの一実施形態を示している。図示した実施形態では、同期コントローラ800は、論理ゲート801から804、マスクレジスタ805を備えている。いくつかの実施形態では、マスクレジスタは、同期コントローラ800の外部に位置していてもよいし、メモリ内にマッピングされた場所であってもよい。本明細書に記載したようなレジスタは、1つ以上のデータビットを格納するように設定された格納回路の特定の実施形態であってよい。いくつかの実施形態では、レジスタは、ラッチ、フリップフロップなどの1つ以上のデータ格納セルを備えていてよい。レジスタ805は、対応するPEの各「方向」に対応するマスクビットを備えていてよい。マスクレジスタ805には4方向しか描かれていないが、他の実施形態では、異なる数の「方向」が可能であり、構想される点に注意されたい。
動作中、同期コントローラ800は、例えば図7に示した同期アダプタ700のような隣接する同期アダプタからSR信号806を受信する。すると、論理ゲート801から804は、受信したSR信号を組み合わせてSS信号807を生成することができる。いくつかの実施形態では、SS信号807の生成にマスクレジスタ805からの設定ビットを用いてもよい。例えば、マスクビットが論理0であれば、対応する方向からの入力は無視してもよく、その方向に対応するSS信号は、対応するPEが停止していないことを指す論理0レベルに設定されてよい。
マスクビットが論理1レベルの場合、対応する方向に対するSS信号の状態は、その方向からのSR信号および対応する論理ゲート内の対応するORゲートの出力によって異なっていてよい。マスクビットが論理0レベルの場合、対応するSS信号および対応するSR信号の状態は、SS信号の状態に影響を及ぼさない。
2つ以上のマスクビットが論理1レベルの場合、対応するSS信号は論理0レベルになり、これは、様々な実施形態では、SR信号が論理0レベルの場合に「停止しない」条件を指すことがある。SS信号に対応するSR信号が論理1レベルであり、少なくとも1つの他のSR信号が論理1レベルであれば、SS信号は、「停止」条件を指してよい論理1レベルになる。
「低い」、「低い論理レベル」または「論理0レベル」とは、アースでの電圧またはアース近くの電圧のことであり、「高い」、「高い論理レベル」または「論理1レベル」とは、nチャネル型MOSFETをオンにし、pチャネル型MOSFETをオフにするのに十分な大きさの電圧レベルのことである点に注意されたい。他の実施形態では、異なる技術では「低い」および「高い」に対して異なる電圧レベルになることがある。図8に描いた同期コントローラの実施形態は単なる一例であることにさらに注意されたい。他の実施形態では、異なる論理ゲートおよび論理ゲートの異なる設定を用いてよい。
どのような実際のプロセッサアレイであっても、DMRに接続されるPEには有限数nがあり、これは1クロックサイクルでDMRが同期できるPEの最大数である点に注意されたい。いくつかの実施形態では、この数は4であってよいが、他の実施形態では、異なる数を用いてよい。PE1つあたりにt個の実行スレッドがある場合、各同期コントローラポートおよび各アダプタポートで同期信号の数および同期停止信号の数にtを乗算することによって、t×n個のスレッドを単一のDMRと同期させるとができる。n個よりも多いPEを同期させるためには、異なる技術を用いてよい。
大規模なPEグループ全体に対して慎重に構築した一連の同期コマンドをプログラミングすることで、どのような数のPEでも同期させることができるが、1つのクロックサイクルで即座に同期させることはできない。このプログラミング技術は、グループ内の最も外側にあるPEから、そのグループの中心にあるいくつかのDMRまで停止バリアが行き渡るように調整し、その後、中心のDMRから最も外側のPEまでリリース波が伝播するように調整する技術である。いくつかの実施形態では、同期を微調整するために非動作命令(一般に「nops」と呼ばれる)を追加してよい。
図9には、1つのラインに配置された6つのPEの同期を示す一例を示している。PEはどのような形状に配置されてもよいが、明瞭化のために例として1つのラインを選択した点に注意されたい。
PEのラインに対して、DMRを使用して図9に示したPEの対を同期させることができる。DMRのNEポートおよびNWポートにある両方のPEが同期信号をDMRに発信した場合に限り、同期停止から一対のPEを解放するように所与のDMRを設定できる。他のPEが割り込むのを防ぐため、5つのDMRすべてをそのSW方向およびSE方向で同期ポートをマスクする(無視する)ように設定する(これは、SW、SE方向で他のPEへのDMRの接続がないこと以外は図示していない)。DMRのこの設定は、各DMRにある同期設定レジスタに設定ビットを格納することによって、同期命令よりも前に行われる。
図9に描いた6つのPEを同期させるのに必要な同期プログラミングも図9に示している。各PEの下に一連の命令を列挙している。各PEは、対応する命令を上から下に向かって実行する。破線で示したコネクタラインは、異なるPEに対してどの同期命令が対になって共通のDMR(対になっている両PEに接続しているDMR)を介して一緒に動作するのかを示している。各PEは、異なるクロックサイクルで第1の同期命令に到達してよいが、対になっているPEと同じクロックサイクルでその同期命令を終了するようハードウェアによって強制される。この特定の連鎖の例ではPEが対になっているが、前述したDMRの制約に従って、必要に応じて3つ以上のPEを単一のサイクルで同期させることができる。
図9に示したPEのプログラミングを検証した上で、中心で交差している2つのチェーンに注意されたい。第1のチェーンは、PE00およびPE01に対する第1の対の同期命令からなる第1のリンク、PE01とPE02との間の第1の対の同期命令からなる第2のリンク、PE02とPE03との間の唯一の対の同期命令からなる第3のリンク、PE03とPE04との間の第2の対の同期命令からなる第4のリンク、およびPE04とPE05との間の第2の対の同期命令からなる第5のリンクを有する。第2のチェーンは、同様に形成されるが、第1のチェーンに対するミラー像のように形成される。つまり、PE05との間の第1の対の同期命令からなるリンクで始まり、PE00とPE01との間の第2の対の同期命令からなる第5のリンクで終わる。
そのため、PE01は第1の同期SW命令で停止から解放されると、第1の同期SE命令に捕捉され、これは、PE02の第1の同期SW命令と対になることによってチェーンの次のリンクになる。PE02の列についても同様に、PE02は第1の同期SW命令から解放されると、第1の同期SE命令に捕捉され、これは、PE02の第1の同期SW命令と対になることによってチェーンの次のリンクになる。これ以降も同じように続く。
各PEがプログラムされたタスクを有し、そのそれぞれのタスクが別々に、かつ場合によっては任意の時間をかけてよいと仮定すると、PEは、もう1つの反復に向けて準備するためにデータを交換することになる。このデータ交換に対して準備するために、PEは図9の同期プログラミングと同期されてよい。
各PEはそのタスクを終了すると、図9にあるそのPEの対応する列で第1の同期命令を実行する。チェーン内の同期命令にヒットするのが第1のPEであれば、待機する。さらに多くのPEが各チェーンの上半分に到達してリンクを解放した場合、各PEは、下半分のチェーンにある次の同期命令に進み、待機する。最終的に両チェーンの上半分が解放され、中央のDMR03の端から端までのリンクが解放される。この時点で全PEが下半分のチェーンで待機しているため、これらのチェーンは、1サイクルあたり1リンクの割合で高速に連続してPEを解放する。
図示したように、同期終了の波が外側へ向かう間、内側のPEが、最も外側のPEが解放されるのを待つようにする必要があることがある。これは、終了が起こる同期命令の後にnopsを追加することによってプログラムできる。PEがnop命令を1つ実行すると、1クロックサイクル分を待機する。各PEに対してプログラム内で使用するnopsの数は、外側へ向かう同期の実行がそれぞれ正確に1クロックサイクル分かかることを把握した上で計算される。外側へ向かう同期の実行はそれぞれ1サイクルかかり、nopsはいずれも1サイクルかかり、停止する可能性のあるコードを実行しているPEはないため、すべてのPEを同期させる形で解放できる。図示したプログラミングは、すべてのPEが命令の連続を正確に同じクロックサイクルで終了するようにする。
この技術は、数千のPEを含むMPAにもスケーラブルである。例えば、2025個のPEからなる正方向のアレイであれば、エッジの長さはPE45個分、つまりPEからPEまでの中継点が44個であり、対角線のマンハッタン(階段状の)距離の中継点は88個である。同期チェーンは、領域全体を覆うように放射状のファン模様に設定できる。角から角まで通っているチェーンは、中継点88個分の長さであり、これらの中継点が2025個のPEすべてを同期するための最悪の場合の時間間隔を決定し、この場合は88クロックサイクルである。PEが停止する動作中は、同期命令に遭遇すると、最終的にこれはアレイの中央まで通信される。停止は中央から波の形で解放され、この波は放射状に外側に向かって伝播する。No−ops(非動作)は、中央により近いPEを波が角に到達するまで遅らせるために必要になることがある。その場合、全PEは、連続する命令を同じクロックサイクルで開始できる。
同期命令は、配信された支持メモリを含むプロセッサグループを調整して並列プログラムを実行するために使用できる。並列プログラムには多くの様々な種類がある。
この命令によりプログラマは、大規模なMPAにある複数のプロセッサをロックステップの実行に組み入れることができる可能性がある。これによって、このようなアレイの並列処理の利便性を、特にリアルタイムで処理するタスクや、収縮モードでの動作で大いに高めることができる。収縮モードとは、鼓動サイクルの長さが1以上であってよい鼓動を有するようにMPAがプログラムされるプログラミング方法である。各鼓動においていくつかのデータ項目が各PEに受信され、いくつかの動作が実施され、その結果が隣接するPEに出力される。収縮モードは、PE1つあたりにほとんどメモリを必要とせず、いくつか例を挙げると、行列数学、フィルタリング、および画像処理アプリケーションに適用されてきた。一次元の収縮モードは、通常パイプラインと呼ばれる。これらおよびその他の並列プログラミング方法によりプログラマは、大規模な単一タスクの計算力を多くの小さなタスクに分割しやすくなる。
単一命令複数データ(SIMD)の能力を含む従来のコンピュータ/DSPシステムでは、並列処理は、1つのPEサイクルにあるALUに対して利用可能にできるデータ項目数によって制限される。通常この数には一定の最大値があり、マイクロプロセッサの場合は通常2〜8であり、スーパーコンピュータでは最大でおそらく128である。MIMDの並列処理が可能な従来のマルチプロセッサシステムは、その複数の命令ストリーム中の同じ命令を用いてプログラムできる;しかしながら、これ単独では、関連するPEが始動したりロックステップの実行に残ったりすることは確実にはならない。
同期命令の連鎖を用いることによって、大規模なPEグループの開始を、いくつかの実施形態では、同じサイクルで開始でき、同じ命令を同時に実行するALUの数に対するSIMDの制限を克服する。同じタスクの複数のコピーを実行することで、複数のPEがロックステップにとどまることが可能だが、確実ではない。PEは、データ値、データメモリまたは通信リソースに対する干渉が原因で起こる待機状態、割り込み、ブレークポイントなどに対してサイクルのカウントが依存していない場合に限り、ロックステップにとどまることができる。長期間にわたってロックステップの実行を達成するには慎重なプログラミングが必要になることがある。しかしながら、これがうまくいかない場合は、上記の方法によって複数のスレッドを定期的に再度同期させることができる。
ハードウェア(およびそれに伴い電力)の影響は、追加された同期命令の能力に対しては極めて低い。必要でないPEは閉じてよい。そのため、電力は、アルゴリズムが必要な時のみに使用され、SIMD命令を実施させるのに必要だが常時使用するわけではないオーバーヘッド電力の一部ではない。
図10には、図5に描いたアレイMPA500のようなマルチプロセッサアレイを動作させる方法の一実施形態を示している。この方法はブロック1001から始まる。次に、マルチプロセッサシステムに対して設定およびソフトウェアを設計できる(ブロック1002)。いくつかの実施形態では、ソフトウェアは、様々なアプリケーションプログラムのうちのいずれか1つであってよく、その個々のプログラム命令は、MPA内にある個々のPEで作動可能なものであってよい。設定は、いくつかの実施形態では、PEの時間面での共通点でデータ交換を可能にするための同期の命令およびセッティングを含んでいてよい。
ソフトウェアおよび設定の設計が完了すると、マルチプロセッサシステムを設定できる(ブロック1003)。いくつかの実施形態では、マルチプロセッサシステムの設定は、例えば図8に示したレジスタ805のような設定レジスタに情報を格納することを含んでいてよい。他の実施形態では、設定データは、マルチプロセッサシステム内に備わっている1つ以上のメモリに格納されてよい。
マルチプロセッサアレイの設定が完了した状態で、事前に設計したソフトウェアをマルチプロセッサシステムにロードできる(ブロック1004)。いくつかの実施形態では、ソフトウェアは、マルチプロセッサシステム内に備わっている1つ以上のメモリにロードされてよい。ソフトウェアは、他の実施形態では、例えばハードディスクドライブ、CDなどのコンピュータアクセス可能媒体、またはその他の任意の適切な記憶媒体に格納されてよい。
ソフトウェアがマルチプロセッサシステムにロードされると、マルチプロセッサの個々のPEが開始される(ブロック1005)。いくつかの実施形態では、各PEは、ロードされたソフトウェア内に含まれる特定の命令セットを実行できる。各PEは、様々な実施形態では、命令の実行を停止して、マルチプロセッサシステム内の他のPEによって実行されている命令の完了を保留できる。PEが命令を実行している状態で、本方法はブロック1006で終了できる。
図10に描いた方法は単なる一例であることに注意されたい。他の実施形態では、異なる動作および異なる順序の動作を用いてよい。
マルチプロセッサシステムを動作させる方法のもう1つの実施形態を図11に示している。本方法はブロック1101から始まる。次に、マルチプロセッサシステムを動作させる複数のセットを設計できる(ブロック1102)。いくつかの実施形態では、各セットは、設定データおよびソフトウェアアプリケーションを含んでいてよい。設定データは、様々な実施形態では、そのセットに含まれる特定のソフトウェアアプリケーションに唯一のものであってよい。
複数のセットを規定した状態で、複数のセットの第1のセットの設定データに基づいてマルチプロセッサシステムを設定でき、その後、対応するソフトウェアアプリケーションを実行できる(ブロック1103)。いくつかの実施形態では、マルチプロセッサシステム内の様々なPEが、ソフトウェアアプリケーションの一部である様々な命令を実行してよい。
第1のセットからソフトウェアアプリケーションが実行されると、複数のセットの次のセットから得たデータでマルチプロセッサシステムを設定できる(ブロック1104)。新たに設定したマルチプロセッサシステムを用いて対応するソフトウェアアプリケーションを作動できる。いくつかの実施形態では、対応するソフトウェアアプリケーションのタスクを実行しているプロセッサは、停止させられてよく、本方法を前述したブロック1103から進めてよい。本方法は、ブロック1105で終了できる。
図11に示した方法は単なる一例であることに注意されたい。他の実施形態では、異なる動作および異なる順序の動作が可能であり、構想される。
図12には、マルチプロセッサシステムの2つのPEを同期させる一実施形態を描いたブロック図を示している。図示した実施形態では、処理要素P1およびP2は、それぞれ方向D1およびD2を介して同期コントローラC1に接続している。PEのP1およびP2によって処理されている各スレッドは、同期命令を含んでいる。いくつかの実施形態では、同期命令は、上記にさらに詳細に記載したような方法を含んでいてよい。
動作中、マルチプロセッサシステムを設定し、ソフトウェアアプリケーションをロードして実行できる。PEのP1およびP2がそれぞれの指定タスクを実行している際に、同期命令に遭遇することがある。同期命令に遭遇する第1のPEは、他のPEがそのそれぞれの同期命令に遭遇するまで実行を停止できる。その時、2つのPEはデータを交換でき、その後そのPEのそれぞれのスレッドの実行を再開できる。
図12に示した実施形態は単なる一例であることに注意されたい。他の実施形態では、異なる数のPEおよび異なる数の同期コントローラを用いてよい。
マルチプロセッサシステム内でPEを同期させる方法の一実施形態を示すフローチャートを図13に描いている。図12のブロック図および図13のフローチャートを合わせて参照すると、本方法はブロック1301から始まる。次に、同期バリアよりも前にあるソフトウェア命令をプロセッサP1およびP2によって実行できる(ブロック1302)。
次に、プロセッサP1は、同期命令に遭遇でき、その同期命令に応答して、同期リクエストをコントローラC1に送信できる(ブロック1303)。いくつかの実施形態では、マルチプロセッサシステム内の様々なプロセッサが実行する命令スレッドどうしの間の同期をそれぞれが要求する場所をソフトウェア内で特定できる。
プロセッサP1が同期命令を送信すると、プロセッサP1は、コントローラC1が生成した停止信号に応答する実行を停止できる(ブロック1304)。図12には単一のコントローラを示しているが、他の実施形態では、1つのプロセッサを複数のコントローラに接続してよく、複数のコントローラのいずれか1つから得た停止信号で、さらに他のプログラム命令の実行を停止できる。様々な実施形態では、停止信号は、コントローラC1がプロセッサP1とプロセッサP2との両方から同期リクエストを受信した時点でデアセートされてよい。コントローラC1が両方のプロセッサから同期リクエストを受信したとき、両プロセッサは同期バリアに到達していて、「同期している」と通知される。コントローラC1は、様々な実施形態では、図15に関して以下に記載する方法と同様に、停止信号をいつデアサートするかを決定できる。
停止信号のデアサートによって、プロセッサP1は、同期バリアの後にソフトウェアの実行を再開できる(ブロック1305)。その時点で、本方法はブロック1306で終了できる。図13に示した方法には同期リクエストのみを描いているが、他の実施形態では、所与のプロセッサの命令スレッドに複数の同期命令を挿入してよい。追加の同期命令によって、いくつかの実施形態では、マルチプロセッサシステム内のさらに多数のプロセッサを同期させることが可能なことがある。
図13に示した方法は単なる一例であることに注意されたい。他の実施形態では、異なる動作および異なる順序の動作を用いてよい。
図14には、マルチプロセッサシステムの3つのPEを同期させる一実施形態を描いたブロック図を示している。図示した実施形態では、処理要素P1は、方向D1を通って同期コントローラC1に接続し、処理要素は、方向D2およびD4を通って同期コントローラC1およびC2にそれぞれ接続し、処理要素P3は、方向D3を通って同期コントローラC2に接続している。
設計段階では、3つのPEを動作させるための設定が設計される。いくつかの実施形態では、この設定は、同期コントローラC1およびC2内のマスクレジスタにロードされるデータビットを含んでいてよい。データビットは、前述した方向D1からD4に応じて決定されてよい。例えば、方向D1およびD2以外の全方向をマスクするようにC1のレジスタを設定できる。設計は、関連ソフトウェアの命令スレッドのどこに同期命令を挿入するかを決定することを含んでいてもよい。データビットおよび同期命令は、一緒にバリアを形成する、すなわち、全スレッドがその地点に到達するまで3つの処理要素の各々が待機する時間に1つの場所を形成することができる。
次に、設定データおよび関連ソフトウェアは、マルチプロセッサシステムにロードされてよい。ロードされると、P1、P2、およびP3の各々に対して標的となった命令(スレッドとも呼ばれる)を実行できる。P1が同期命令に遭遇したとき、P1は、P2がD2方向で同期命令に遭遇するまでそのスレッドの実行を停止できる。同じように、P3が同期命令に遭遇したとき、P3は、P2がD4方向で同期命令に遭遇するまでそのスレッドの実行を停止できる。
P1およびP3に対する同期命令がP2に対するどの同期命令よりも先に到着した場合、同期命令がD2方向で到着することによって、P1を次のクロックサイクルのD1方向でその第2の同期命令まで進めることができる。次のクロックサイクルでも、P2がD4方向で同期命令に遭遇すると、これによってP3をD3方向でその第2の同期命令まで進めることができる。第3のクロックサイクルでは、P2がD2方向で同期命令に到達することによって、1つのサイクルでP1と再度同期させることができる。いくつかの実施形態では、P3に対してはno−op命令が望ましいことがある。
P1がP2の後にバリアに到達した場合、P2は、P1が到達するまでその同期(D2)命令で待機する。P3がP2の後にバリアに到達すれば、P2は、P3がバリアに到達するまでその同期(D4)命令で待機する。
図14に示した実施形態は単なる一例であることに注意されたい。他の実施形態では、異なる数のPEおよびコントローラを用いてよい。
図15には、例えば図8の同期コントローラのような同期コントローラを動作させる方法の一実施形態を描いたフローチャートを示している。本方法はブロック1501から始まる。次に、設定を決定できる(ブロック1502)。いくつかの実施形態では、設定データは、例えば図8に示したレジスタ805のようなレジスタに含まれていてよい。このようなレジスタに格納されている設定データビットは、様々な実施形態では、同期情報の受信をどの方向から許可するのかを決定するために復号化されてよい。それぞれの方向は、隣接するプロセッサのうちの対応する1つに一致していてよい。
次に、全方向からアサートされた同期リクエストを設定と比較することができる(ブロック1503)。いくつかの実施形態では、この比較は、例えば図8に示した論理回路801のような論理回路を用いて実施できる。次に同期停止信号は、受信した同期リクエストおよび設定に応じてアサートされるかデアサートされてよい(ブロック1504)。いくつかの実施形態では、図8の論理回路801のような論理回路が、1つ以上の同期リクエストと設定情報とを論理的に合わせて、所与の停止信号をいつアサートまたはデアサートすべきかを判断できる。いくつかの実施形態では、2つ以上の同期停止信号を任意の所与の時間にアサートしデアサートできる点に注意されたい。次に本方法はブロック1505で終了できる。図15に示したフローチャートには、そこに描いた動作の単一の適用例を示しているが、様々な実施形態では、図15の方法をマルチプロセッサシステムの動作中に常時実施してよい。
図15に示した方法は単なる一例であることに注意されたい。他の実施形態では、異なる数の同期リクエストおよび設定データビットが可能であり、構想される。
マルチプロセッサシステム内の2つのグループのプロセッサを同期させる方法の一実施形態を描いたフローチャートを図16に示している。本方法はブロック1601から始まる。次に、マルチプロセッサシステムの第1のグループのプロセッサの同期を開始できる(ブロック1602)。いくつかの実施形態では、第1のグループのプロセッサの同期は、図13および図15に記載した方法に関して前述した同期に似た動作を含んでいてよい。第1のグループは、様々な実施形態では、マルチプロセッサシステムの1つ以上のプロセッサを備えていてよい。いくつかの実施形態では、マルチプロセッサシステムのプロセッサの第1のグループの同期は、複数のクロックサイクルを完了するよう要求できる。
プロセッサの第2のグループの同期も開始できる(ブロック1603)。第1のグループの同期と同じく、プロセッサの第2のグループの同期は、図13および図15に記載した方法に関して前述した同期に似た動作を含んでいてよい。第2のグループは、様々な実施形態では、第1のグループに含まれるプロセッサを排除するマルチプロセッサシステムの1つ以上のプロセッサを含んでいてよい。いくつかの実施形態では、1つ以上のプロセッサは、第1のグループと第2のグループとの間で共有されてよい。第1のグループが同期していると、第2のグループの同期は、複数のクロックサイクルが完了することを要求できる。
次に本方法は、第1のグループおよび第2のグループの同期動作の状態に依存してよい(ブロック1604)。同期動作の一方または両方ともが完了していないとき、2つのグループのプロセッサによるその先の実行が停止したままになる(ブロック1605)。両方の同期動作が完了すると、第1のグループのプロセッサは、プログラム命令の実行を再開できる(ブロック1606)。第2のグループのプロセッサは、プログラム命令の実行も再開できる(ブロック1607)。両グループのプロセッサが実行を再開すると、本方法はブロック1608を終了できる。実行を再開する2つの動作は、連続する形で実施されるように描かれている点に注意されたい。他の実施形態では、これらの動作は、並列または逆の順序で実施されてもよい。代替実施形態でその他の動作およびその他の順序の動作を用いてもよい。
図17には、マルチプロセッサシステムにある2セットのプロセッサを同期させる方法の一実施形態を描いたフローチャートを示している。本方法はブロック1701から始まる。次に、マルチプロセッサシステムの第1セットのプロセッサを同期させることができる(ブロック1702)。いくつかの実施形態では、同期は、図13および図15に記載した方法に関して前述した同期に似た動作を含んでいてよい。第1セットのプロセッサに含まれる各プロセッサは、様々な実施形態では、例えば図8に示した同期コントローラのような共通の同期コントローラに接続されてよい。
マルチプロセッサシステムの第1セットのプロセッサが同期すると、次にマルチプロセッサシステムの第2セットのプロセッサを同期させることができる(ブロック1703)。様々な実施形態では、第2セットの各プロセッサは、共通の同期コントローラに接続されてよい。第1セットのプロセッサを同期させた状態で、第2セットのプロセッサの同期は、図13および図15に記載した方法に関して前述した同期に似た動作を含んでいてよい。
第2セットのプロセッサの同期が完了すると、第1セットのプロセッサから1つのプロセッサを第2セットのプロセッサの1つのプロセッサと同期させることができる(ブロック1704)。いくつかの実施形態では、第1セットのプロセッサからのプロセッサ、および第2セットのプロセッサからのプロセッサは、共通の同期コントローラに接続されてよい。
第1セットからのプロセッサおよび第2セットからのプロセッサが同期すると、第1セットのプロセッサを再同期させることができる(ブロック1705)。次に第2セットのプロセッサを再同期させることができる(ブロック1706)。2つの再同期動作は、連続する形で実施するように示しているが、他の実施形態では、動作は並列または逆の順序で実施してよい点に注意されたい。本方法はブロック1707で終了できる。図17に描いた方法を用いることによって、様々な実施形態では、マルチプロセッサシステムのどのような数のプロセッサも同期させることができる。
図17のフローチャートに描いた方法は単なる一例であることに注意されたい。他の実施形態では、異なる動作および異なる順序の動作が可能であり、構想される。
マルチプロセッサシステムの2セットのプロセッサを同期させる方法のもう1つの実施形態を図18のフローチャートに示している。本方法はブロック1801から始まる。次に、第1セットのプロセッサのマルチプロセッサシステムを同期させることができる(ブロック1802)。いくつかの実施形態では、同期は、図13および図15に記載した方法に関して前述した同期に似た動作を含んでいてよい。第1セットのプロセッサに含まれる各プロセッサは、様々な実施形態では、例えば図8に示した同期コントローラのような共通の同期コントローラに接続されてよい。
マルチプロセッサシステムの第1セットのプロセッサが同期すると、次にマルチプロセッサシステムの第2セットのプロセッサを同期させることができる(ブロック1803)。様々な実施形態では、第2セットの各プロセッサは、共通の同期コントローラに接続されてよく、第2セットのプロセッサに含まれる少なくとも1つのプロセッサも第1セットのプロセッサに含まれる。第1セットのプロセッサを同期させた状態で、第2セットのプロセッサの同期は、図13および図15に記載した方法に関して前述した同期に似た動作を含んでいてよい。
マルチプロセッサシステムの第2セットのプロセッサの同期が完了すると、次に第1セットのプロセッサを再同期させることができる(ブロック1804)。いくつかの実施形態では、第1セットおよび第2セットのプロセッサに少なくとも1つのプロセッサを含むことによって、第1と第2の両方のセットにある全プロセッサを同期させることが可能になる。第1セットのプロセッサの再同期が完了すると、本方法はブロック1805で終了できる。図18に描いた方法を用いることによって、様々な実施形態では、マルチプロセッサシステムのどのような数のプロセッサも同期させることができる。
図18に示したフローチャートは単なる一例であることに注意されたい。他の実施形態では、代替動作を用いてよい。
マルチプロセッサシステムに対してソフトウェアを設計する方法の一実施形態を描いたフローチャートを図19に示している。本方法はブロック1901から始まる。次にソフトウェアを、例えば図3に示したマルチプロセッサIC300のようなマルチプロセッサシステムに対して設計できる(ブロック1902)。ソフトウェアは、様々な実施形態では、プロセッサのアレイ上にマッピングできるグラフィックスや映像データ、またはその他の任意の適切なアプリケーションを処理するためのアプリケーションを含んでいてよい。いくつかの実施形態では、他の命令スレッドとの同期を要求する個々のプロセッサの命令スレッド内での場所を特定できる。前述したもののような同期命令は、命令スレッドに挿入して同期バリアを形成できるとともに、マルチプロセッサシステム内にある1つ以上のプロセッサの間での同期を可能にすることができる。
同期命令が挿入されると、設定データを設計できる(ブロック1903)。いくつかの実施形態では、設定データは、同期コントローラが、この同期コントローラに接続している1つ以上のプロセッサから同期リクエストを受け入れることができる設定データビットを含んでいてよい。所与の1セットの設定ビットの各ビットは、いくつかの実施形態では、接続しているプロセッサへ向かう対応する方向を表していてよいが、他の実施形態では、所与の1セットの設定ビットは、同期を入力するために許された方向を決定するために復号化されてよい。
次に、設定データをマルチプロセッサシステムにロードできる(ブロック1905)。いくつかの実施形態では、設定データの一部を、例えば図8に示したレジスタ805のようなコントローラ内のレジスタにロードできる。設定データは、他の実施形態では、マルチプロセッサシステム内の1つ以上のメモリにロードできる。
次に、設計したソフトウェアをマルチプロセッサシステムにロードできる(ブロック1905)。いくつかの実施形態では、ソフトウェアをマルチプロセッサシステム内にある1つ以上の共有メモリにロードできる。ソフトウェアは、他の実施形態では、小分けでき、ソフトウェアの個々のパーツをマルチプロセッサシステム内のローカルメモリにロードできる。このようなローカルメモリそれぞれをマルチプロセッサシステム内の対応するプロセッサに接続できる。
設定データおよびソフトウェアがマルチプロセッサシステムにロードされると、ソフトウェアを実行できる(ブロック1906)。実行中、各プロセッサは、挿入された同期命令を実行して、命令スレッド内に前もって特定された場所で、プロセッサの様々なサブセット、または様々なプロセッサにそれ自体の動作を同期させることができる。ソフトウェアの実行が完了すると、本方法はブロック1907で終了できる。
図19のフローチャートに示した動作のいくつかは、連続する形で実施されているように描かれている点に注意されたい。他の実施形態では、1つ以上の動作を並列に実施できる。
本発明のシステムおよび方法を好適な実施形態に結びつけて記載してきたが、本発明は本明細書に記載した特定の形態に限定されることを意図しているわけではなく、逆にそのような代替案、修正、および均等物は、付属の特許請求の範囲に規定した本発明の精神および範囲内に正当に含まれてよいため、これを範囲に含めることを意図している。

Claims (15)

  1. 複数のプロセッサであって、前記複数のプロセッサの各プロセッサは、複数のプロセッサポートおよび1つの同期アダプタを備え、前記同期アダプタが複数のアダプタポートを備える、プロセッサと;
    複数のコントローラであって、前記複数のコントローラの各コントローラは、複数のコントローラポートを備え、前記複数のコントローラポートの各コントローラポートは、前記複数のプロセッサのうちの隣接するプロセッサのアダプタポートに接続している、コントローラと;
    を備えるシステムであって、
    前記複数のプロセッサの各プロセッサは、
    選択的に、1つ以上のアダプタポートを介して同期信号を前記複数のコントローラのそれぞれの1つ以上のコントローラに送信し;
    1つ以上のコントローラからの応答に応じてプログラム命令の実行を停止する;
    ように設定され、
    前記複数のコントローラの各コントローラは、
    前記複数のプロセッサのそれぞれの1つ以上のプロセッサから1つ以上の同期信号を受信し;
    前記受信した1つ以上の同期信号に応じて前記複数のプロセッサの前記それぞれの1つ以上のプロセッサの各々に応答を送信するように設定される、システム。
  2. 前記複数のコントローラの各コントローラは、1つ以上の設定データビットを受信するように設定された設定ポートを備える、請求項1に記載のシステム。
  3. 前記それぞれの1つ以上のプロセッサの各々に前記応答を送信するために、前記複数のコントローラの各コントローラは、さらに、前記1つ以上の設定データビットに応じて前記それぞれの1つ以上のプロセッサに前記応答を送信するように設定される、請求項2に記載のシステム。
  4. 前記複数のコントローラの各コントローラは、レジスタを備える、請求項1に記載のシステム。
  5. 前記複数のコントローラの各コントローラに対する前記1つ以上の設定ビットは、各コントローラの前記レジスタに格納される、請求項4に記載のシステム。
  6. マルチプロセッサシステムを動作させるための方法であって、前記マルチプロセッサシステムは、複数のプロセッサおよび複数の同期コントローラを備え、前記複数のプロセッサの各プロセッサは、同期アダプタを備え、
    つ以上のグループのプロセッサの各グループは、前記複数のプロセッサのサブセットを備え、
    前記方法は:
    前記1つ以上のグループのプロセッサの所与のグループを特定し、前記所与のグループの各プロセッサのソフトウェア内に少なくとも1つの場所を特定して、同期バリアを挿入すること;
    前記所与のグループの各プロセッサの各同期アダプタに接続している、前記複数の同期コントローラのうちの1つの同期コントローラを特定すること;
    前記特定した同期コントローラに接続している各同期アダプタに向かう方向に応じて、前記特定した同期コントローラに対する設定データを決定し、前記設定データは、前記特定した同期コントローラと、前記所与のグループの選択されたプロセッサの前記同期アダプタとの間で複数の同期信号を伝送することを可能にすること;および
    前記所与のグループの各プロセッサに対して、前記ソフトウェア内で前記特定した場所の各々に同期バリアを挿入し、各同期バリアは一連の1つ以上の同期命令を含み、各同期命令は1つ以上の引数を含み、前記1つ以上の引数の各引数は、前記所与のグループの各プロセッサの前記同期アダプタから、前記特定した同期コントローラの1つ以上の方向のうちの所与の1つを指定すること;
    前記挿入した同期命令の所与の1つを実行している前記所与のグループの各プロセッサに応答して、前記所与のグループの各プロセッサの実行を停止することと;
    前記所与のグループが前記挿入した同期命令の1つ1つを全プロセッサが実行したかどうかという判断に応答して、前記所与のグループの各プロセッサの実行を再開することとを含む、方法。
  7. 前記判断した設定データは、複数の設定データビットを備え、前記複数の設定データビットのそれぞれの組み合わせに対応する各データパターンは、前記特定した同期コントローラに接続しているプロセッサの前記所与のグループの所与のプロセッサの前記同期アダプタへ向かう方向に一致する、請求項6に記載の方法。
  8. 設定データを前記マルチプロセッサシステムにロードすることは、前記複数の設定データビットを前記特定した同期コントローラのレジスタに格納することを含む、請求項7に記載の方法。
  9. 前記所与のグループの各プロセッサの実行を再開することは、前記特定した同期コントローラによって停止信号をデアサートすることを含む、請求項6に記載の方法。
  10. 前記所与のグループの各プロセッサの実行を停止することは、前記所与のグループの各プロセッサの前記同期アダプタによって同期リクエスト信号をアサートすることを含む、請求項6に記載の方法。
  11. 同期コントローラであって:
    複数の設定ビットを格納するように設定されたレジスタであって、前記複数の設定ビットは、複数のデータパターンを符号化し、前記複数のデータパターンの各データパターンは、接続した方向の複数のサブセットのうちの所与の1つに一致する、レジスタと;
    1つ以上の論理回路であって、前記1つ以上の論理回路の各論理回路は:
    1つ以上の同期リクエスト信号を受信し;
    前記受信した1つ以上の同期リクエストおよび前記複数のデータパターンの対応するデータパターンに応じて、少なくとも1つのプロセッサに対する停止信号を生成し、前記少なくとも1つのプロセッサは、前記接続した方向の複数のサブセットのうちの対応する1つの所与の方向で同期コントローラに接続される
    ように設定される、論理回路とを備える、同期コントローラ。
  12. 1つ以上の入力の各入力は、ラッチを含む、請求項11に記載の同期コントローラ。
  13. 前記受信した1つ以上の同期リクエストおよび前記複数のデータパターンの前記対応するデータパターンに応じて前記停止信号を生成するために、各論理回路は、さらに、接続した方向の前記複数のサブセットのうちの対応する1つの方向に対応する1つ以上の停止信号を生成するように設定される、請求項11に記載の同期コントローラ。
  14. 前記受信した同期リクエストおよび前記複数のデータパターンの前記対応するデータパターンに応じて前記停止信号を生成するために、各論理回路は、さらに、前記受信した同期信号のうちの選択した1つのアサートに応答して前記停止信号を生成するように設定され、前記受信した同期信号のうちの前記選択した1つは、前記複数のデータパターンの前記対応するデータパターンの方向に対応する、請求項11に記載の同期コントローラ。
  15. 前記受信した同期リクエストおよび前記複数のデータパターンの前記対応するデータパターンに応じて前記停止信号を生成するために、各論理回路は、さらに、前記受信した同期信号のうちの残りの同期信号がアサートされていないという判断に応答して前記停止信号を生成するように設定される、請求項14に記載の同期コントローラ。
JP2015546462A 2012-12-06 2013-10-10 同期命令を含む処理システム Active JP6317365B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261734190P 2012-12-06 2012-12-06
US61/734,190 2012-12-06
PCT/US2013/064366 WO2014088698A2 (en) 2012-12-06 2013-10-10 Processing system with synchronization instruction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018063728A Division JP6574865B2 (ja) 2012-12-06 2018-03-29 同期命令を含む処理システム

Publications (3)

Publication Number Publication Date
JP2016501414A JP2016501414A (ja) 2016-01-18
JP2016501414A5 JP2016501414A5 (ja) 2016-11-17
JP6317365B2 true JP6317365B2 (ja) 2018-04-25

Family

ID=49517643

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015546462A Active JP6317365B2 (ja) 2012-12-06 2013-10-10 同期命令を含む処理システム
JP2018063728A Active JP6574865B2 (ja) 2012-12-06 2018-03-29 同期命令を含む処理システム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018063728A Active JP6574865B2 (ja) 2012-12-06 2018-03-29 同期命令を含む処理システム

Country Status (5)

Country Link
US (2) US9323714B2 (ja)
EP (1) EP2929434B1 (ja)
JP (2) JP6317365B2 (ja)
CN (1) CN104823164B (ja)
WO (1) WO2014088698A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6341930B2 (ja) 2012-12-13 2018-06-13 コーヒレント・ロジックス・インコーポレーテッド 改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
US9760410B2 (en) * 2014-12-12 2017-09-12 Intel Corporation Technologies for fast synchronization barriers for many-core processing
US20160301634A1 (en) * 2015-04-11 2016-10-13 International Business Machines Corporation Controlling a delivery of messages to designated computing devices
US10216430B2 (en) 2015-07-01 2019-02-26 Cavium, Llc Local ordering of instructions in a computing system
DE102015221064A1 (de) * 2015-10-28 2017-05-04 Robert Bosch Gmbh Anordnung aus wenigstens zwei Mikrocontrollern und Verfahren zur Herstellung einer solchen Anordnung
US9910716B2 (en) * 2016-03-11 2018-03-06 Knuedge Incorporated Synchronization in a multi-processor computing system
US20170364473A1 (en) * 2016-03-31 2017-12-21 Wave Computing, Inc. Program counter alignment across a reconfigurable hum fabric
US10783165B2 (en) 2017-05-17 2020-09-22 International Business Machines Corporation Synchronizing multiple devices
GB201717295D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Synchronization in a multi-tile processing array
US11795753B1 (en) * 2018-04-25 2023-10-24 Gmi Holdings, Inc. Remote monitoring and control of garage door opener incorporating jackshaft door operator drive assembly
JP7073580B2 (ja) * 2019-04-04 2022-05-23 中科寒武紀科技股▲分▼有限公司 データ処理方法、装置、及び関連製品
CN112306945B (zh) * 2019-07-30 2023-05-12 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN112130898A (zh) * 2019-06-24 2020-12-25 华为技术有限公司 一种***同步指令的方法及装置
GB2597078B (en) * 2020-07-14 2022-07-13 Graphcore Ltd Communication between host and accelerator over network
CN112559054B (zh) * 2020-12-22 2022-02-01 上海壁仞智能科技有限公司 用于同步指令的方法和计算***

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
JPH02264352A (ja) * 1989-04-05 1990-10-29 Hitachi Ltd マルチプロセッサ同期方式
US5345578A (en) * 1989-06-30 1994-09-06 Digital Equipment Corporation Competitive snoopy caching for large-scale multiprocessors
EP0485690B1 (en) * 1990-11-13 1999-05-26 International Business Machines Corporation Parallel associative processor system
US5434995A (en) 1993-12-10 1995-07-18 Cray Research, Inc. Barrier synchronization for distributed memory massively parallel processing systems
JP2780623B2 (ja) * 1993-12-28 1998-07-30 日本電気株式会社 情報処理装置
EP0748540A4 (en) * 1994-03-03 1997-10-29 Proxim Inc PROTOCOL FOR MEDIUM ACCESS CONTROL IN THE FREQUENCY JUMP PROCESS
US5721921A (en) 1995-05-25 1998-02-24 Cray Research, Inc. Barrier and eureka synchronization architecture for multiprocessors
US7013454B2 (en) * 1999-02-22 2006-03-14 Sun Microsystems, Inc. Thread suspension system and method using trapping instructions
US6687756B1 (en) * 2000-05-25 2004-02-03 International Business Machines Corporation Switched-based time synchronization protocol for a NUMA system
US7415594B2 (en) 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US20040034858A1 (en) * 2002-08-14 2004-02-19 Kushlis Robert J. Programming a multi-threaded processor
US7810093B2 (en) * 2003-11-14 2010-10-05 Lawrence Livermore National Security, Llc Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes
US7398403B2 (en) * 2004-07-01 2008-07-08 Matsushita Electric Industrial Co., Ltd. Multiprocessor control apparatus, control method thereof, and integrated circuit
CN101048739A (zh) * 2004-10-27 2007-10-03 松下电器产业株式会社 多处理器***、同步控制装置及同步控制方法
US7925791B2 (en) * 2006-07-17 2011-04-12 The Math Works, Inc. Recoverable error detection for concurrent computing programs
US20090327354A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Notification and synchronization of updated data
CN100568247C (zh) * 2008-07-22 2009-12-09 中国科学院计算技术研究所 一种满足systemC语法的多核处理器的事件处理单元组
CN101634979B (zh) * 2008-07-22 2011-09-07 中国科学院计算技术研究所 一种满足SystemC语法的多核处理器
US8483196B2 (en) * 2010-03-12 2013-07-09 Qualcomm Incorporated Methods and apparatus for supporting synchronization between groups of devices
EP3432152B1 (en) * 2010-10-15 2020-03-18 Coherent Logix Incorporated Disabling communication in a multiprocessor system
CN102200961B (zh) * 2011-05-27 2013-05-22 清华大学 一种动态可重构处理器内子单元的扩展方法
CN104813306B (zh) * 2012-11-21 2017-07-04 相干逻辑公司 具有散布处理器dma‑fifo的处理***
JP2016508258A (ja) * 2012-12-13 2016-03-17 コーヒレント・ロジックス・インコーポレーテッド 多重周波数多重プロセッサシステムのためのクロック分配ネットワーク

Also Published As

Publication number Publication date
EP2929434B1 (en) 2019-01-16
JP6574865B2 (ja) 2019-09-11
US9558150B2 (en) 2017-01-31
JP2018116735A (ja) 2018-07-26
US20160196234A1 (en) 2016-07-07
EP2929434A2 (en) 2015-10-14
CN104823164B (zh) 2019-07-16
US9323714B2 (en) 2016-04-26
US20140164735A1 (en) 2014-06-12
CN104823164A (zh) 2015-08-05
WO2014088698A2 (en) 2014-06-12
JP2016501414A (ja) 2016-01-18

Similar Documents

Publication Publication Date Title
JP6574865B2 (ja) 同期命令を含む処理システム
US11055141B2 (en) Quiesce reconfigurable data processor
US11675734B2 (en) Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
US11573796B2 (en) Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric
US11531543B2 (en) Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
US11868163B2 (en) Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric
US11567766B2 (en) Control registers to store thread identifiers for threaded loop execution in a self-scheduling reconfigurable computing fabric
US11635959B2 (en) Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
US20190303165A1 (en) Loop Execution Control for a Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric Using a Reenter Queue
US11586571B2 (en) Multi-threaded, self-scheduling reconfigurable computing fabric
JP4391935B2 (ja) 散在しているプロセッサと通信要素を備える処理システム
Lari et al. Hierarchical power management for adaptive tightly-coupled processor arrays
US20230125149A1 (en) Fractional Force-Quit for Reconfigurable Processors
Suzuki et al. Instruction rearrangement and path limitation for ALU cascading
KR20090016643A (ko) 비동기적 절전형 컴퓨터

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180329

R150 Certificate of patent or registration of utility model

Ref document number: 6317365

Country of ref document: JP

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