JP2006518505A - プロセッサネットワーク - Google Patents
プロセッサネットワーク Download PDFInfo
- Publication number
- JP2006518505A JP2006518505A JP2006502300A JP2006502300A JP2006518505A JP 2006518505 A JP2006518505 A JP 2006518505A JP 2006502300 A JP2006502300 A JP 2006502300A JP 2006502300 A JP2006502300 A JP 2006502300A JP 2006518505 A JP2006518505 A JP 2006518505A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- processors
- tasks
- processes
- software
- 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.)
- Withdrawn
Links
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 55
- 230000008569 process Effects 0.000 claims description 36
- 238000003491 array Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 abstract description 31
- 239000000872 buffer Substances 0.000 description 30
- 238000012546 transfer Methods 0.000 description 12
- 239000003607 modifier Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
処理は、プロセッサアレイのプロセッサに自動的に割り当てられる。また、対応する通信リソースは、プログラマーから与えられる情報を用いてコンパイル時に割り当てられる。したがって、アレイの処理タスクは、異なるプロセッサ間においてデータを通信するために必要なリソースが保証されるような方法で、割り当てられる。
Description
本発明は、プロセッサネットワークに関し、特に、プロセッサにソフトウェアタスクを割り当てるプロセッサアレイに関する。他の局面では、本発明は、アレイのプロセッサにソフトウェアタスクを自動的に割り当てる方法およびソフトウェアプロダクトに関する。
プロセッサシステムは、以下のように分類される。
Single Instruction,Single Data(SISD)。これは、命令ストリームによって制御される単一プロセッサを含む従来のシステムである。
Single Instruction,Multiple Data(SIMD)。アレイプロセッサとして知られることもある。同一演算が、各々の命令に起因して多重データ要素上で平行して実行されるからである。このタイプのプロセッサは、たいてい、行列計算に用いられ、スーパーコンピュータに組み込まれている。
Multiple Instruction,Multiple Data(MIMD)。このタイプのシステムは、同一のデータ上で異なる命令をそれぞれ実行する多重独立プロセッサとして考えることができる。
MIMDプロセッサは、細分することができ、以下のものを含む。
スーパースケーラ。スーパースケーラにおいては、単一プログラムまたは単一命令ストリームは、お互いに依存しない命令グループに、実行時間においてプロセッサハードウェアによって分割される。これらの命令グループは、個々の演算実行部において同時に処理される。このタイプのプロセッサは、一度に一つの命令ストリームを実行するだけであり、実際には機能強化されたSISD装置である。
Very Long Instruction Word(VLIW)。スーパースケーラのように、VLIW装置は、単一の命令ストリームを実行する多重実行部を備える。しかしながら、この場合、同一のワードの中のすべての命令が平行に実行されつつ、命令がコンパイラによって並行処理されロングワードに翻訳される。VLIW装置は、2つから20程度の実行部を備えていてもよい。しかしながら、これらの実行部の効率的な使用のためのコンパイラの能力は、2つまたは3つに過ぎない実行部を備えることによって急激に低下する。
マルチスレッド。本質的には、通信の定義済みポイントを除いて互いに独立しかつスレッドが同期化された異なるプログラムスレッドを実行する異なる実行部を備えた、スーパースケーラまたはVLIWである。スレッドは個々のプログラムの一部であるが、全てのスレッドは、実行部の数を制限する共通のメモリを共有する。
共有メモリ。ここで、多くの従来のプロセッサは、メモリの共有エリアを経由して通信を行う。このメモリは純粋な多重ポートメモリでもよく、これらのプロセッサは共有メモリの使用のための調整をしてもよい。プロセッサは、たいていはローカルメモリも備える。それぞれのプロセッサは、独立した命令ストリームを実際に実行する。また、それらのプロセッサが情報を通信する必要のある場合には、この情報はソケットのような種々の安定したプロトコルを用いて実行される。多量のデータはそれぞれの通信イベントにおいて転送されるが、本来、共有メモリアーキテクチャにおけるプロセッサ間の通信は、比較的遅い。
ネットワーク化されたプロセッサ。これらは、ネットワークを介して通信が行われることを除いては、共有メモリプロセッサとほとんど同様の通信を行う。通信はさらに遅く、たいては標準的な通信プロトコルを用いて実行される。
これらのMIMDマルチプロセッサアーキテクチャのほとんどは、複数のプロセッサが備わっている場合に、比較的遅いプロセッサ間の通信および/または制限されたプロセッサ間の通信の帯域幅によって特徴づけられる。スーパースケーラ、VLIWおよびマルチスレッドアーキテクチャは、すべての実行部がその実行部内の共通のメモリおよびたいていは共通のレジスタを共有することから、制限されている。また、共有メモリアーキテクチャは、制限される。システムの全てのプロセッサが互いに通信できるとすれば、それらのプロセッサはすべて、メモリの共通領域に限定された帯域幅を共有しなければならないからである。
ネットワークプロセッサに対して、通信速度および通信帯域幅は、ネットワークの種類によって決定される。データがプロセッサから他のプロセッサに一度に送信され得る場合、帯域幅全体が制限される。しかしながら、スイッチ、ルータ、個々のプロセッサ間の2点間リンクおよびスイッチ組織の使用を含む他の多数のトポロジがある。
マルチプロセッサシステムの種類にかかわらず、プロセッサが、個別のタスク上で独立に機能しまた同一のリソースを共有するのではなく単一システムの一部を形成する場合、ソフトウェアタスク全体の種々の部分は、異なるプロセッサに割り当てられなければならない。この方法は、以下のものを含む。
実行時間においてタスクを他のプロセッサに割り当てる1または複数の監視プロセッサの使用。このことは、割り当てられたタスクが完了するのに比較的長時間を要する場合に機能するが、多数の非同期性タスクを実行しなければならないリアルタイムシステムにおいて非常に困難である。
プロセッサへの処理の手動割り当て。これは、たいていはコンパイルの際に必要となる。多くのリアルタイムアプリケーションにとって、このことはたいてい好ましいことである。プログラマーが、リアルタイムタスクにとって使用可能な十分なリソースが常に存在することを保証することができるからである。しかしながら、多数の処理およびプロセッサがあると、ソフトウェアが修正され処理が再割り当てされることが必要な場合には特に、タスクは困難になる。
コンパイルの際における処理のプロセッサへの自動割り当て。これは、リアルタイムシステムにとっての手動割り当てと同様の利点を有し、大幅に低減された設計時間といった付加的な利点と多数の処理およびプロセッサを含むシステムにとってのメンテナンスの容易さとを備える。
本発明は、コンパイル時における処理のプロセッサへの割り当てに関する。
プロセッサのクロックスピードが増加してアーキテクチャが高度化するにつれて、それぞれのプロセッサは与えられた期間にたくさんのタスクを達成することができるようになる。このことは、以前の特殊用途のハードウェアを必要としていたプロセッサにおいてタスクが実行され得ることを意味する。このことは、新しい種類の課題への取り組みを実現してきたが、リアルタイム処理における新しい課題を生み出してきた。
リアルタイム処理は、特定の時期ごとに結果が必要とされる処理として定義され、洗濯機から自動車のエンジン制御およびデジタルエンターテイメントシステム、果ては移動体通信の基地局に至るまで幅広いアプリケーションに用いられる。後者のアプリケーションにおいては、単一の基地局は複雑な信号処理を実行しかつ一度に何百もの音声およびデータの呼び出しの間に何百ものプロセッサを必要とするタスクを制御してもよい。そのようなリアルタイムシステムにおいては、特定期間に個々のプロセッサにおいて実行されるスケジューリングタスクのジョブおよび共有リソースの使用の調整がますます困難になる。個々のプロセッサは何十何百の異なる処理を実行することができるため、部分的にスケジューリングの課題が発生する。しかしながら、これらの処理が定期的に何度も発生する一方で、他の処理は、非同期的であって数分または数時間おきに発生するだけでもよい。タスクが不正確に組まれれば、イベントの比較的まれなシーケンスがシステムの不具合を起こしうる。さらに、イベントがまれであるので、すべての環境においてシステムの正しい演算を検証することは現実的に不可能である。
この問題の一つの解決策は、より小さくより単純なプロセッサをより多く用い、少数の固定されたタスクをそれぞれのプロセッサに割り当てることである。個々のプロセッサは安価であるから、いくつかのプロセッサは、短期間に完了する必要のある非常にまれで非同期的なタスクを提供することに特化され得る。しかしながら、多数の小さいプロセッサの使用は、調整、特に共有バスまたはネットワークリソースの調整を悪化させる。このことを克服する一つの方法は、バス構造と必要なバスリソースが各々の通信パスにとって使用可能であることを保証する関連プログラミング手順とを用いることである。そのような構造の一つは、国際特許公開第02/50624号に記載されている。
ある局面においては、本発明は、処理をプロセッサに自動的に割り当て、プログラマーによって与えられる情報を用いてコンパイルの際に通信リソースを割り当てる方法に関する。他の局面においては、本発明は、プロセッサに処理を割り当てるプロセッサアレイに関する。
さらに具体的には、本発明は、異なるプロセッサ間においてデータを伝達する必要のあるリソースが保証されるように、マルチプロセッサシステムにおいて処理タスクを割り当てる方法に関する。本発明は、国際特許公開第02/50624号に記載されている一般的な種類のプロセッサアレイに関連して記載されているが、プロセッサ間におけるデータ伝達に用いられるバス上のスロットの割り当てを可能にするマルチプロセッサシステムに適用することができる。
図1を参照すると、国際特許公開第02/50624号に記載されている一般的なプロセッサアレイは、行列に配列された複数のプロセッサ20から構成される。図1は6つの列を示し、各列は10個のプロセッサから構成され、各列の各プロセッサにはP0,P1,P2,…,P8,P9のように番号が付され、アレイ内に合計60個のプロセッサが配置されている。本発明の好ましい一実施の形態は400個以上のプロセッサを含むが、本発明の動作を説明するには十分である。各プロセッサ20は、左から右に伝わる水平バスのセグメント32と右から左に伝わる水平バスのセグメント36とに、コネクタ50によって接続されている。図1に示すように、これらの水平バスセグメント32,36は、上方に伝わる垂直バスセグメント21,23と下方に伝わる垂直バスセグメント22,24とに、スイッチ55において接続されている。
図1は本発明が用いられているプロセッサアレイの一形態を示すが、本発明は他の形態のプロセッサアレイにも適用することができることに留意すべきである。
図1のそれぞれのバスは、主として32個または64個のデータライン、データ有効信号ラインならびに肯定応答信号および再送肯定応答信号からなる2つの肯定応答信号ラインから構成される。
スイッチ55のそれぞれの構造は、図2を参照して説明されている。スイッチ55は、あらかじめデータが読み込まれたRAM61を含む。そのスイッチは、所定のシーケンスにおいてRAM61のアドレスを初めから終わりまでカウントするカウンタを備えるコントローラ60をさらに含む。この同一のシーケンスは無数に繰り返される。また、1回のシーケンスを完了するために要する時間は、システムクロックのサイクル数単位で測定され、シーケンス期間と呼ばれる。各クロックサイクルにおいて、RAM61からの出力データは、レジスタ62に読み込まれる。
スイッチ55は、左から右へ伝わる水平バス、右から左へ伝わる水平バス、上方に伝わる2つの垂直バスセグメントおよび下方に伝わる2つの垂直バスセグメントの6つの出力バスを備える。しかしながら、これらの出力バスの1つのみへの接続が、明確にする目的のために図2に示されている。6つの出力バスのそれぞれは、出力肯定応答信号および再送肯定応答信号のためのライン68に加えてバスセグメント66(32個または64個のラインデータバスおよびデータ品質信号線から構成される)から構成される。
マルチプレクサ65は、7つの入力ラインを備える。それらは、左から右へ伝わる水平バス、右から左へ伝わる水平バス、上方に伝わる2つの垂直バスセグメント、下方に伝わる2つの垂直バスセグメントおよび定数ゼロソースからの入力ラインである。マルチプレクサ65は、レジスタ62からの制御入力64を有する。レジスタ62の中身に応じて、そのサイクル中にこれらの入力のうちの選択された1つの入力上のデータは、出力ライン66に与えられる。定数ゼロの入力は、電力が不必要にバス上の値を変更しないように、出力バスが用いられない場合に優先的に選択される。
同時に、レジスタ62から与えられる値は、ブロック67にも与えられる。ブロック67は、左から右に伝わる水平バス、右から左へ伝わる水平バス、上方に伝わる2つの垂直バスセグメント、下方に伝わる2つの垂直バスセグメントおよび定数ゼロソースからの肯定応答および再送肯定応答信号を受けとり、ライン68上の一組の出力肯定応答信号を選択する。
図3は、2つのプロセッサ20がそれぞれのコネクタ50において左から右へ伝わる水平バス32および右から左へ伝わる水平バス36のセグメントに接続される様子を示す、拡大ブロック概略図である。バスのセグメントは、2つのマルチプレクサ51間の部分として定義され、接続点25によってプロセッサの入力に接続される。プロセッサの出力は、出力バスセグメント26および他のマルチプレクサ51を介してバスのセグメントに接続される。また、プロセッサからの肯定応答信号は、肯定応答重ね合わせブロック27においてバス上の他の肯定応答信号と重ね合わされる。
マルチプレクサ51およびブロック27の選択入力は、関連するプロセッサ内の回路によって制御される。
アレイ内の全ての通信は、所定のシーケンスにおいて発生する。一実施の形態においては、シーケンス期間は1024クロックサイクルである。各スイッチおよび各プロセッサは、シーケンス周期をカウントするカウンタを含む。このシーケンスの各サイクルにおいて、各スイッチは、6つの出力バスのそれぞれに通じる入力バスの一つを選択する。シーケンスの所定のサイクルで、プロセッサは接続点25を経由して入力バスセグメントからデータを読み込み、マルチプレクサ51を用いて出力バスセグメントの方にデータを切り替える。
最低でも、各プロセッサは、関連するマルチプレクサおよび肯定応答重ね合わせブロックを制御し、シーケンスの正しい時間において接続されるバスセグメントからデータを読み込み、データに関する有効な機能を果たすことができることが必要である。この有効な機能は、データの記憶のみから構成されることもある。
データがプロセッサ間において伝達される方法を、図4の例を参照して述べる。図4は図1のアレイの一部を示し、図4においてはx列かつy行のプロセッサはPxyとして特定される。
図の説明のために、データがプロセッサP24からプロセッサP15に転送される場合を述べる。所定のクロックサイクルにおいて、送信プロセッサP24はデータをバスセグメント80に対して有効にし、スイッチSW21はこのデータをバスセグメント72に切り替え、スイッチSW11はそのデータをバスセグメント76に切り替え、受信プロセッサP15はそのデータを読み込む。
通信パスは、アレイの他のプロセッサ間において、それらのプロセッサがバスセグメント80,72または76のいずれも用いないという条件で、同時に構築され得る。本発明の好ましいこの形態においては、送信プロセッサP24および受信プロセッサP15は、1回のシーケンス周期において1またはそれ以上の少数の特定タスクを1または複数回実行するようにプログラムされている。その結果、シーケンス周期ごとに複数回、送信プロセッサP24と受信プロセッサP15との間での通信パスを構築する必要がある。
さらに具体的に、本発明の好ましい形態は、2,4,8,16または1024までの2のべき乗のクロックサイクルごとに一度、通信パスの構築を可能にする。
送信プロセッサP24と受信プロセッサP15との間の通信パスが構築されない場合のクロックサイクルにおいては、バスセグメント80,72および76は、他のいずれかのプロセッサ間の通信パスとして用いられてもよい。
各転送時に用いられるバスセグメント数を低減させるために各プロセッサが隣接するプロセッサと頻繁に通信するように処理をプロセッサに割り当てることが望ましいが、アレイ中の各プロセッサは、他のいずれのプロセッサとも通信することができる。
本発明の好ましい形態においては、各プロセッサは図5に示す全体構成を備える。プロセッサコア11は、命令メモリ15およびデータメモリ16に接続され、また、コンフィギュレーションまたはモニタリングに用いられるコンフィギュレーションバスインタフェース10にも接続され、バスコネクタ50を介して上述した各バスに接続される入出力ポート12に接続される。
ポート12は、図6に示すように構成される。明確にするために、図6は、左から右に伝わる各バス32に接続されるポートのみを示し、右から左に伝わる各バス36に接続されるポートを示さず、制御または時期の詳細について示していない。あるプロセッサと1またはそれ以上の他のプロセッサとの間におけるデータ送信のための各通信チャネルは、一組のバッファ、すなわち、入力ポート用の入力ペア121,122または出力ポート用の出力ペア123,124に割り当てられる。入力ポートは、マルチプレクサ120を経由してプロセッサコア11に接続されている。また、出力ポートは、マルチプレクサ125およびマルチプレクサ51を経由してアレイバス32に接続されている。
他のプロセッサにデータを送信するプロセッサにとって、送信プロセッサコアは、出力ポートバッファ124にデータを転送する命令を実行する。通信チャネルに割り当てられたバッファ124にすでにデータが格納されていれば、そのデータはバッファ123に送信される。また、バッファ123が占有されている場合には、プロセッサコアはバッファが使用可能になるまで停止する。さらに多くのバッファをそれぞれの通信チャネルに使用することができるが、想定しているアプリケーションには二つのバッファで十分であることが以下に延べられている。特定の通信チャネル(スロット)に割り当てられたサイクルで、マルチプレクサ125、51を用いて、データが重ねあわされてアレイバスセグメントに与えられる。また、データは目標プロセッサまたは上述したプロセッサに送られる。
受信プロセッサにおいては、データは、そのチャネルに割り当てられたバッファ121または122に読み込まれる。受信プロセッサ上のプロセッサコア11は、マルチプレクサ120を経由してポートからデータを転送する命令を実行することができる。データが受信された場合、通信チャネルに割り当てられたバッファ121および122の両方が空であれば、データワードはバッファ121に格納される。バッファ121がすでに占有されている場合には、データワードはバッファ122に格納される。以下、バッファ121および122の両方が占有されている場合について説明する。
上記からあきらかであるが、プロセッサ間のデータの転送のためのスロットは通常の周期で割り当てられるが、出力ポートおよび入力ポートにバッファが設けられていることは、出力バッファのオーバーフローの原因にならずかつ入力バッファのアンダーフローの原因にならなければ、プロセッサコアが常にポートへおよびポートからデータを転送することができることを意味する。このことは、以下のテーブルの例で説明されている。見出し欄は、以下のことを意味する。
Cycle この例の目的のために、各システムクロックサイクルに番号が付されている。
PUT プロセッサコアから出力ポートへのデータの転送は、「PUT」と称される。テーブルにおいて、送信プロセッサコアが出力ポートにデータを送信する際にはいつでも、PUT欄に記載が現れる。その記載は、転送されるデータ値を示す。上述したように、PUTはプロセッサ間のデータ転送に対して非同期である。すなわち、プロセッサコア上で動作するソフトウェアによってスケジュールが決定される。
OBuffer0 送信プロセッサ(図6においてマルチプレクサ125に接続された出力バッファ124)における出力バッファ0の中身である。
OBuffer1 送信プロセッサ(図6においてプロセッサコア11に接続された出力バッファ123)における出力バッファ1の中身である。
Slot データが送信されるサイクルを示す。この例では、データは4サイクルごとに転送される。スロットは、明確にするために番号が付されている。
IBuffer0 受信プロセッサ(図6のプロセッサコア120に接続された入力バッファ121)における入力バッファ0の中身である。
IBuffer1 受信プロセッサ(図のバス32に接続された入力バッファ122)における入力バッファ1の中身である。
GET 入力ポートからプロセッサへのデータ転送は、GETと称される。受信プロセッサがデータを入力ポートから転送する際にはいつでも、テーブルにおいてGET欄に記載が現れる。その記載は、転送されるデータ値を示す。上述したように、GETはプロセッサ間のデータ転送に対して非同期である。すなわち、プロセッサコア上で動作するソフトウェアによってスケジュールが決定される。
好ましくは、本発明は、上述したようなマルチプロセッサシステムのプロセッサをプログラムするために用いることができるソフトウェアを書く方法を用いる。特に、本発明は、プロセッサ間における通信帯域幅の要求に関するプログラマーの意図を惹き付ける方法と、決定論的通信を保証するためのバスリソースを割り当てるためにこの通信帯域幅を用いる方法とを提供する。このことを、例を用いて説明する。
プログラム例を以下に示す。また、プログラム例は、図7において図示されている。この例においては、プロセッサ上で実行されるソフトウェアは、ポートへのPUTおよびポートからのGETの動作が明確にわかるように、アセンブラで記載されている。このアセンブラコードは、それぞれの処理のアーキテクチャ描写のCODEとENDCODEとの間の行に記載されている。チャネルがプロセッサ間においてデータを運ぶ方法は、Hardware Description Language,VHDL(IEEE Std 1076−1993)に記載されている。図7は、Producer、ModifierおよびmemWriteからなる3つの処理がチャネル11およびチャネル12にリンクされる方法を示す。
VHDLおよびアセンブラコードのほとんどの詳細は、本発明にとって重要ではなく、また、当業者にとって解釈できるものである。重要な点は、以下のとおりである。
インタフェースを定義づけるVHDLエンティティ宣言および中身を定義づけるVHDLアーキテクチャ宣言によって定義される各処理は、手動でまたは自動コンピュータプログラムを用いることによって、図1のアレイのようなシステムにおけるプロセッサに配置される。
各チャネルに対して、ソフトウェアライターは、VHDL言語の拡張子を用いてスロット周期要件を定義する。これは、「@」と表記され、エンティティ宣言および「toplevel」のアーキテクチャの信号宣言のポート定義に現れ、3つの処理を結びつける方法を定義する。
「@」の後の数字は、システムクロック周期で、処理を実行するシステム内のプロセッサ間にスロットが割り振られなければならない回数を意味する。したがって、本例においては、16システムクロック周期ごとにチャネル1(32ビットバスが2つの16ビット値を持つことを示すinteger16pair)に沿ってModifier処理にデータを送信するためのProducer処理に対してスロットが割り振られ、8システムクロック周期ごとにmemWrite処理にデータを送信するためのModifier処理に対してスロットが割り振られる。
entity Producer is
port (outPort:out integer16pair@16);
end entity Producer;
architecture ASM of Producer is
begin STAN
initialize regs:=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
CODE
loop
for r6 in 0 to 9 loop
copy.0 r6,r4
add.0 r4, 1, r5
put r[5:4], outport
end loop
end loop
ENDCODE;
end Producer;
entity Modifier is
port (outPort:out integer16pair@8;
inPort:in integer16pair@16);
end entity Modifier;
architecture ASM of Modifier is
begin MAC
initialize regs:= (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
CODE
loop
for r6 in 10 to 19 loop
get inport, r[3:2]
add.0 r2, 10, r4
add.0 r3, 10, r5
put r[5:4], outport --This output should be
input into third AE
end loop
end loop
ENDCODE;
end Modifier;
entity memWrite is
port (inPort:in integer16pair@8);
end entity memWrite;
architecture ASM of memWrite is
begin MEM
initialize regs:= (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
initialize code_partition :=2;
CODE
copy.0 0,AP //initialize write pointer
loop
get inPort, r[3:2]
stl r[3:2], (AP) \ add.0 AP, 4, AP
end loop
ENDCODE;
end;
entity toplevel is
end toplevel;
architecture STRUCTURAL of toplevel is
signal channel1: integer16pair@16;
signal channel2: integer16pair@8;
begin
finalObject: entity memWrite
port map (inPort =>channel2);
modifierObject: entity Modifier
port map (inPort=>channel1, outPort=>channel2);
producerObject: entity Producer
port map (outPort=>channel1);
end toplevel
port (outPort:out integer16pair@16);
end entity Producer;
architecture ASM of Producer is
begin STAN
initialize regs:=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
CODE
loop
for r6 in 0 to 9 loop
copy.0 r6,r4
add.0 r4, 1, r5
put r[5:4], outport
end loop
end loop
ENDCODE;
end Producer;
entity Modifier is
port (outPort:out integer16pair@8;
inPort:in integer16pair@16);
end entity Modifier;
architecture ASM of Modifier is
begin MAC
initialize regs:= (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
CODE
loop
for r6 in 10 to 19 loop
get inport, r[3:2]
add.0 r2, 10, r4
add.0 r3, 10, r5
put r[5:4], outport --This output should be
input into third AE
end loop
end loop
ENDCODE;
end Modifier;
entity memWrite is
port (inPort:in integer16pair@8);
end entity memWrite;
architecture ASM of memWrite is
begin MEM
initialize regs:= (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
initialize code_partition :=2;
CODE
copy.0 0,AP //initialize write pointer
loop
get inPort, r[3:2]
stl r[3:2], (AP) \ add.0 AP, 4, AP
end loop
ENDCODE;
end;
entity toplevel is
end toplevel;
architecture STRUCTURAL of toplevel is
signal channel1: integer16pair@16;
signal channel2: integer16pair@8;
begin
finalObject: entity memWrite
port map (inPort =>channel2);
modifierObject: entity Modifier
port map (inPort=>channel1, outPort=>channel2);
producerObject: entity Producer
port map (outPort=>channel1);
end toplevel
上述したように、各処理のアーキテクチャ描写のCODEとENDCODEとの間のコードは、プロセッサコアがこれらの命令を実行できるように、機械語命令に翻訳され、プロセッサの命令メモリ(図5)に読み込まれる。PUT命令が実行されるたびに、上述したようにデータがプロセッサコアのレジスタから出力ポートに転送される。また、GET命令が実行されるたびに、入力ポートからプロセッサコアのレジスタにデータが転送される。
各信号に対するスロット割合は、プログラム例の「@」記号の後の数字であり、適当な周期でアレイバスにスロットを割り当てるために用いられる。例えば、スロット割合が「@4」である場合、スロットは4システムクロックサイクルごとの1つのシステムクロックサイクルで送信プロセッサと受信プロセッサとの間のすべてのバスセグメントに割り当てられなければならない。また、スロット割合が「@8」である場合、スロットは8システムクロックサイクルごとの1つのシステムクロックサイクルで送信プロセッサと受信プロセッサとの間のすべてのバスセグメントに割り当てられなければならない。
上述した方法を用いて、ソフトウェア処理を個々のプロセッサに割り当てることができる。また、データを送信するためのチャネルを提供するアレイバスにスロットを割り当てることができる。特に、ユーザは、同時に処理を実行する2つのプロセッサ間において通信チャネルが構築される回数をそのシステムにより特定することができる。、また、処理を構成するソフトウェアタスクを、必要なチャネルの構築が可能である方法で特定のプロセッサに割り当てることができる。
この割り当ては、手動で、または好ましくはコンピュータプログラムを用いて実行され得る。
図8は、本発明のこの局面に係る方法の一般的な構成を説明するフローチャートである。
ステップS1においては、ユーザは、実行される処理を定義することによってシステム全体の必要な機能性を定義し、処理の一部を実行するプロセッサ間の通信チャネルを構築するために必要な頻度を定義する。
ステップS2においては、コンパイル処理が発生し、ソフトウェアタスクが固定的にアレイのプロセッサに割り当てられる。この割り当ては、必要な通信チャネルが必要な頻度で構築されるような方法で実行される。
ここの記載および特定のシステムパラメータの知識に基づいて、当業者は、コンパイルを実行するための適当なソフトウェアを書くことができる。
ソフトウェアタスクが割り当てられた後、適正なソフトウェアは定義された処理を実行するために各プロセッサに読み込まれ得る。
上述した方法を用いて、プログラマーは、データが送信される正確な時間(位相またはオフセット)ではなく、スロット頻度を特定する。このことは、ソフトウェアを書く仕事を十分に簡略化する。チャネルの入力ポートまたは出力ポートのいずれか一方のバッファがフルになっていないために待たなければならないプロセッサがシステム内に含まれないことも、主な目的である。送信プロセッサがスロット割合より多くPUT命令を実行しようとせず受信プロセッサがスロット割合より多くGET命令を実行しようとしなければ、このことは、各チャネルに関連する入力ポート内の2つのバッファと対応する出力ポート内の2つのバッファとを用いて達成することができる。
したがって、使用可能なリソースの効率的な使用を許容するプロセッサアレイおよびアレイのプロセッサにソフトウェアタスクを割り当てる方法が記載されている。
なお、添付図面は、本発明をよりよく理解し、かつ、本発明が実施される形態を説明するために、次に、一例としての目的のためだけに参照されるものである。
Claims (7)
- プロセッサアレイのプロセッサにソフトウェアタスクを自動的に割り当てる方法であって、
前記プロセッサアレイは、各プロセッサと必要な他の各プロセッサとの接続を可能にする接続部を備える複数のプロセッサを備え、
複数の処理の定義を受け取り、前記処理の少なくともいくつかは、第1および第2の不特定のプロセッサにおいてそれぞれ実行される第1および第2のタスクを少なくとも含む共有処理であり、前記共有処理のそれぞれは、データが前記第1のプロセッサと前記第2のプロセッサとの間で転送される周期でさらに定義され、
自動的に静的に、前記プロセッサアレイのプロセッサに前記複数の前記処理のソフトウェアタスクを割り当て、それぞれの定義された周期で前記各共有処理において前記タスクを実行する前記プロセッサ間の接続を割り当てることを特徴とする方法。 - 前記方法は、コンパイル時に実行されることを特徴とする請求項1記載の方法。
- コンピュータプログラムを用いて、前記ソフトウェアタスクの割り当てを行う前記ステップを実行することを特徴とする請求項1または2記載の方法。
- さらに、割り当てられた前記ソフトウェアタスクを実行するためのソフトウェアを前記各プロセッサに読み込むことを特徴とする請求項1〜3のいずれかに記載の方法。
- 複数の処理の定義を受け取るステップを実行し、前記処理の少なくともいくつかは、第1および第2の不特定のプロセッサにおいてそれぞれ実行される第1および第2のタスクを少なくとも含む共有処理であり、前記共有処理のそれぞれは、データが前記第1のプロセッサと前記第2のプロセッサとの間で転送される周期でさらに定義され、
自動的に静的に、前記プロセッサアレイのプロセッサに前記複数の処理の前記ソフトウェアタスクを割り当て、それぞれの定義された周期で前記各共有処理において前記タスクを実行する前記プロセッサ間の接続を割り当てるステップを実行することを特徴とするプログラムプロダクト。 - プロセッサアレイであって、
各プロセッサと必要な他の各プロセッサとの接続を可能にする接続部を備える複数のプロセッサを備え、前記プロセッサアレイのプロセッサにソフトウェアタスクを自動的に割り当てるための関連ソフトウェアプロダクトを備え、
前記ソフトウェアプロダクトは、
複数の処理の定義を受け取るステップを実行し、前記処理の少なくともいくつかは、第1および第2の不特定のプロセッサにおいてそれぞれ実行される第1および第2のタスクを少なくとも含む共有処理であり、前記共有処理のそれぞれは、データが前記第1のプロセッサと前記第2のプロセッサとの間で転送される周期でさらに定義され、
自動的に静的に、前記プロセッサアレイのプロセッサに前記複数の処理の前記ソフトウェアタスクを割り当て、それぞれの定義された周期で前記各共有処理において前記タスクを実行する前記プロセッサ間の接続を割り当てるステップを実行することを特徴とするプロセッサアレイ。 - プロセッサアレイであって、
複数のプロセッサアレイを備え、
前記プロセッサは、各プロセッサと必要な他のプロセッサとの接続を可能にする複数のバスおよび複数のスイッチによって相互接続され、
前記各プロセッサは、静的に割り当てられた演算シーケンスのそれぞれを実行するようにプログラムされ、
前記シーケンスは、複数のシーケンス周期で繰り返され、
前記アレイにおいて実行される少なくともいくつかの処理は、第1のプロセッサおよび第2のプロセッサのそれぞれにおいて実行される第1および第2のソフトウェアタスクを含み、
前記処理のそれぞれに対して、前記タスクを実行する前記プロセッサ間の必要な接続は、各シーケンス周期における固定された時間に割り当てられることを特徴とするプロセッサアレイ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0304056A GB2398651A (en) | 2003-02-21 | 2003-02-21 | Automatical task allocation in a processor array |
PCT/GB2004/000670 WO2004074962A2 (en) | 2003-02-21 | 2004-02-19 | Allocation of processes to processors in a processor array |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006518505A true JP2006518505A (ja) | 2006-08-10 |
Family
ID=9953470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006502300A Withdrawn JP2006518505A (ja) | 2003-02-21 | 2004-02-19 | プロセッサネットワーク |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070044064A1 (ja) |
EP (1) | EP1595210A2 (ja) |
JP (1) | JP2006518505A (ja) |
KR (1) | KR20050112523A (ja) |
CN (1) | CN100476741C (ja) |
GB (1) | GB2398651A (ja) |
WO (1) | WO2004074962A2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146477A (ja) * | 2006-12-12 | 2008-06-26 | Mitsubishi Electric Corp | 並列処理装置 |
WO2013102970A1 (ja) * | 2012-01-04 | 2013-07-11 | 日本電気株式会社 | データ処理装置、及びデータ処理方法 |
JP5406287B2 (ja) * | 2009-05-25 | 2014-02-05 | パナソニック株式会社 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2370380B (en) | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
US7768435B2 (en) | 2007-07-30 | 2010-08-03 | Vns Portfolio Llc | Method and apparatus for digital to analog conversion |
GB2454865B (en) | 2007-11-05 | 2012-06-13 | Picochip Designs Ltd | Power control |
GB2455133A (en) * | 2007-11-29 | 2009-06-03 | Picochip Designs Ltd | Balancing the bandwidth used by communication between processor arrays by allocating it across a plurality of communication interfaces |
GB2457309A (en) * | 2008-02-11 | 2009-08-12 | Picochip Designs Ltd | Process allocation in a processor array using a simulated annealing method |
GB2459674A (en) * | 2008-04-29 | 2009-11-04 | Picochip Designs Ltd | Allocating communication bandwidth in a heterogeneous multicore environment |
JP2010108204A (ja) * | 2008-10-30 | 2010-05-13 | Hitachi Ltd | マルチチッププロセッサ |
GB2470037B (en) | 2009-05-07 | 2013-07-10 | Picochip Designs Ltd | Methods and devices for reducing interference in an uplink |
GB2470891B (en) | 2009-06-05 | 2013-11-27 | Picochip Designs Ltd | A method and device in a communication network |
GB2470771B (en) | 2009-06-05 | 2012-07-18 | Picochip Designs Ltd | A method and device in a communication network |
GB2474071B (en) | 2009-10-05 | 2013-08-07 | Picochip Designs Ltd | Femtocell base station |
GB2482869B (en) | 2010-08-16 | 2013-11-06 | Picochip Designs Ltd | Femtocell access control |
GB2489716B (en) | 2011-04-05 | 2015-06-24 | Intel Corp | Multimode base system |
GB2489919B (en) | 2011-04-05 | 2018-02-14 | Intel Corp | Filter |
GB2491098B (en) | 2011-05-16 | 2015-05-20 | Intel Corp | Accessing a base station |
US10334334B2 (en) * | 2016-07-22 | 2019-06-25 | Intel Corporation | Storage sled and techniques for a data center |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5367678A (en) * | 1990-12-06 | 1994-11-22 | The Regents Of The University Of California | Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically |
GB2317245A (en) * | 1996-09-12 | 1998-03-18 | Sharp Kk | Re-timing compiler integrated circuit design |
US6789256B1 (en) * | 1999-06-21 | 2004-09-07 | Sun Microsystems, Inc. | System and method for allocating and using arrays in a shared-memory digital computer system |
GB2370380B (en) * | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
AU2002243655A1 (en) * | 2001-01-25 | 2002-08-06 | Improv Systems, Inc. | Compiler for multiple processor and distributed memory architectures |
US7073158B2 (en) * | 2002-05-17 | 2006-07-04 | Pixel Velocity, Inc. | Automated system for designing and developing field programmable gate arrays |
-
2003
- 2003-02-21 GB GB0304056A patent/GB2398651A/en not_active Withdrawn
-
2004
- 2004-02-19 WO PCT/GB2004/000670 patent/WO2004074962A2/en active Application Filing
- 2004-02-19 CN CNB2004800047322A patent/CN100476741C/zh not_active Expired - Fee Related
- 2004-02-19 EP EP04712602A patent/EP1595210A2/en not_active Withdrawn
- 2004-02-19 JP JP2006502300A patent/JP2006518505A/ja not_active Withdrawn
- 2004-02-19 US US10/546,615 patent/US20070044064A1/en not_active Abandoned
- 2004-02-19 KR KR1020057015460A patent/KR20050112523A/ko not_active Application Discontinuation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008146477A (ja) * | 2006-12-12 | 2008-06-26 | Mitsubishi Electric Corp | 並列処理装置 |
JP5406287B2 (ja) * | 2009-05-25 | 2014-02-05 | パナソニック株式会社 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路 |
WO2013102970A1 (ja) * | 2012-01-04 | 2013-07-11 | 日本電気株式会社 | データ処理装置、及びデータ処理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2004074962A2 (en) | 2004-09-02 |
KR20050112523A (ko) | 2005-11-30 |
GB0304056D0 (en) | 2003-03-26 |
CN1781080A (zh) | 2006-05-31 |
CN100476741C (zh) | 2009-04-08 |
US20070044064A1 (en) | 2007-02-22 |
GB2398651A (en) | 2004-08-25 |
EP1595210A2 (en) | 2005-11-16 |
WO2004074962A3 (en) | 2005-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006518505A (ja) | プロセッサネットワーク | |
EP3474141B1 (en) | Compiler method | |
KR102167059B1 (ko) | 멀티-타일 프로세싱 어레이의 동기화 | |
US5056000A (en) | Synchronized parallel processing with shared memory | |
US4972314A (en) | Data flow signal processor method and apparatus | |
EP0502680B1 (en) | Synchronous multiprocessor efficiently utilizing processors having different performance characteristics | |
EP3474152B1 (en) | Instruction set | |
JP2003505753A (ja) | セル構造におけるシーケンス分割方法 | |
EP0712076A2 (en) | System for distributed multiprocessor communication | |
JPH02238553A (ja) | マルチプロセツサ・システム | |
US10963003B2 (en) | Synchronization in a multi-tile processing array | |
EP1470496A2 (en) | Functional pipelines | |
US11416440B2 (en) | Controlling timing in computer processing | |
WO1991020043A1 (en) | Global registers for a multiprocessor system | |
EP1168161A2 (en) | System and method of executing hybridized code on a dynamically cofigurable hardware environment | |
US5530889A (en) | Hierarchical structure processor having at least one sub-sequencer for executing basic instructions of a macro instruction | |
CN111352744A (zh) | 计算机中的数据交换 | |
CN116774914A (zh) | 分布式共享存储器 | |
EP1193607B1 (en) | Apparatus and method for the exchange of signal groups between a plurality of components in a digital signal processor having a direct memory access controller | |
JPH0863440A (ja) | 並列処理装置 | |
JPH07200486A (ja) | 情報処理装置 | |
US11940940B2 (en) | External exchange connectivity | |
Crockett et al. | System software for the finite element machine | |
JP3641837B2 (ja) | 分散メモリ型並列計算機のデータ転送方法 | |
JPS6049464A (ja) | マルチプロセッサ計算機におけるプロセッサ間通信方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061211 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090416 |