JP2009230764A - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP2009230764A
JP2009230764A JP2009159744A JP2009159744A JP2009230764A JP 2009230764 A JP2009230764 A JP 2009230764A JP 2009159744 A JP2009159744 A JP 2009159744A JP 2009159744 A JP2009159744 A JP 2009159744A JP 2009230764 A JP2009230764 A JP 2009230764A
Authority
JP
Japan
Prior art keywords
data
shared memory
processing
memory
processing element
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.)
Pending
Application number
JP2009159744A
Other languages
English (en)
Inventor
Hironori Kasahara
博徳 笠原
Keiji Kimura
啓二 木村
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.)
Waseda University
Original Assignee
Waseda University
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 Waseda University filed Critical Waseda University
Priority to JP2009159744A priority Critical patent/JP2009230764A/ja
Publication of JP2009230764A publication Critical patent/JP2009230764A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

【課題】並列処理用のマルチプロセッサにおいて、価格性能比を改善し、高まりつつある半導体集積度にスケーラブルな性能向上を達成する。
【解決手段】CPUと、分散共有メモリと、ローカルデータメモリと、を備える複数のプロセッシングエレメントと、前記各プロセッシングエレメントに接続される集中共有メモリと、を備えるマルチプロセッサであって、前記各プロセッシングエレメントに割り当てられたタスク間で共通に使用されるデータが、前記各タスクで必要とされるとき以前に、データの消費先の前記プロセッシングエレメントの前記分散共有メモリへ転送され、前記集中共有メモリは、粗粒度並列処理において条件分岐に対応するために使用されるダイナミックスケジューリングにおいて、プログラムの実行時までどのCPUにより使用されるかが決まっていないデータを格納する。
【選択図】図1

Description

本発明は、複数のCPUを備えたマルチプロセッサ(特に、複数のCPUを単一のチップに納めたシングルチッププロセッサ)のアーキテクチャに関し、より具体的には、マルチグレインのコンパイラ協調型シングルチップマルチプロセッサアーキテクチャと、それらを接続した高性能マルチプロセッサシステムアーキテクチャとに関する。
現在、日本のスーパーコンピュータメーカは世界でもトップのハードウエア技術を有し、現時点でのピーク性能は、数TFLOPSを越え、21世紀初頭には数十TFLOPS以上のピーク性能を持つマシンが開発されると予想される。しかし、現在のスーパーコンピュータは、ピーク性能の向上とともにプログラムを実行したときの実効性能との差が大きくなっている、すなわち価格性能比が必ずしも優れているとはいえない状況になっている。また、使い勝手としても、ユーザは問題中の並列性を抽出し、HPF、MPI,PVMなどの拡張言語あるいはライブラリを用いハードウエアを効果的に使用できるようなプログラムを作成しなければならず、一般のユーザには使い方が難しい、あるいは使いこなせないという問題が生じている。さらに、これらにも起因して、世界の高性能コンピュータの市場を拡大できないということが大きな問題となっている。
この価格性能比、使いやすさの問題を解決し、スーパーコンピュータの市場を拡大するためには、ユーザが使い慣れているフォートラン、C等の逐次型言語で書かれたプログラムを自動的に並列化する自動並列化コンパイラの開発が重要となる。
特に、21世紀初頭の汎用並びに組み込み用マイクロプロセッサ、家庭用サーバからスーパーコンピュータに至るマルチプロセッサシステムの主要アーキテクチャの一つとなると考えられるシングルチップマルチプロセッサについて検討を行うことは重要である。さらに、シングルチップマルチプロセッサについても、従来からある主記憶共有アーキテクチャでは十分な性能と優れた価格性能比は得られない。したがって、プログラム中の命令レベルの並列性、ループ並列性、粗粒度並列性をフルに使用できるマルチグレイン並列処理のように、真に実行すべき命令列からより多くの並列性を抽出し、システムの価格性能比を向上し、誰にでも使えるユーザフレンドリなシステムの構築を可能とする新しい自動並列化コンパイル技術と、それを生かせるようなアーキテクチャの開発が重要である。
したがって、本発明は、マルチグレイン並列化をサポートするコンパイラ協調型のシングルチップマルチプロセッサおよびそれを結合したハイパフォーマンスマルチプロセッサシステムを提供することを目的とする。
本発明は、CPUと、前記CPUに接続されているネットワークインタフェースと、コンパイラによりスタティックスケジューリングされたプログラムの実行時に転送されるデータを格納し、他のプロセッシングエレメントからアクセス可能な分散共有メモリと、当該プロセッシングエレメントだけからアクセス可能なローカルデータメモリと、を備える複数のプロセッシングエレメントと、前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有され、コンパイラによりダイナミックスケジューリングされたプログラムの実行時に使用されるデータを格納する集中共有メモリと、を備えるマルチプロセッサであって、前記分散共有メモリは、スタティックスケジューリングされたプログラムの実行時に、プロセシングエレメント間のデータ転送に使用され、前記ローカルデータメモリは、当該プロセッシングエレメントに割り当てられたタスクにおいて使用されるローカルデータを保持するために使用され、前記各プロセッシングエレメントに割り当てられたタスク間で共通に使用されるデータが、前記各タスクで必要とされるとき以前に、データの消費先の前記プロセッシングエレメントの前記分散共有メモリへ転送され、前記集中共有メモリは、粗粒度並列処理において条件分岐に対応するために使用されるダイナミックスケジューリングにおいて、プログラムの実行時までどのCPUにより使用されるかが決まっていないデータを格納することを特徴とするマルチプロセッサを提供する。
上述のように、本発明のシングルチップマルチプロセッサによれば、価格性能比を改善し、高まりつつある半導体集積度にスケーラブルな性能向上が可能である。また、本発明は、このようなシングルチップマルチプロセッサを複数含むシステムをも提供するが、そのようなシステムは、より一層の高速処理を可能にするものである。
本発明の1実施形態であるマルチグレイン並列処理用システムを示すブロックダイアグラムである。 本発明において用いることができるコンパイラにおける粗粒度並列処理のためのマクロフローグラフの一例を示すグラフである。 本発明において用いることができるコンパイラにおける粗粒度並列処理のためのマクロタスクグラフの一例を示すグラフである。 本発明において用いることができるコンパイラにおける近細粒度並列処理のための近細粒度タスクグラフの一例を示すグラフである。 本発明において用いることができるアジャスタブルプリフェッチ命令キャッシュの構成を示すブロックダイアグラムである。
本発明はマルチグレイン並列化をサポートするシングルチップマルチプロセッサを提供する。本発明の一実施形態であるシングルチップマルチプロセッサのアーキテクチャを図1に示す。図1においては、複数のプロセッシングエレメント(PE0,PE1,...,PEn)を含んでなる複数(m+1個)のシングルチップマルチプロセッサ(SCM0、SCM1、SCM2、...、SCMm、...)10と、共有メモリのみからなる複数(j+1個)の集中共有メモリチップ(CSM0,....,CSMj)(ただし、CSMは要求されるシステム条件によっては1個もなくてもよい)と、入出力制御を行う複数(k+1個)のシングルチップマルチプロセッサで構成される入出力チップ(I/O SCM0,...,I/O SCMk)(ただし、入出力制御に関しては既存技術のプロセッサを用いることもできる)とが、チップ間接続ネットワーク12によって接続されている。このインタチップ接続ネットワーク12は、クロスバー、バス、マルチステージネットワークなど既存のネットワーク技術を利用して実現できるものである。
図1に示した形態においては、I/Oデバイスは要求される入出力機能に応じてk+1個のSCMで構成される入出力制御チップに接続している構成となっている。さらに、このチップ間接続ネットワーク12には、システム中の全プロセッシングエレメントにより共有されているメモリのみから構成されるj+1個の集中共有メモリ(CSM:centralized shared memory)チップ14が接続されている。これは、SCM10内にある集中共有メモリを補完する働きをするものである。
マルチグレイン並列処理とは、サブルーチン、ループ、基本ブロック間の粗粒度並列性、ループタイプイタレーション間の中粒度並列性(ループ並列性)、ステートメントあるいは命令間の(近)細粒度並列性を階層的に利用する並列処理方式である。この方式により、従来の市販マルチプロセッサシステム用自動並列化コンパイラで用いられていたループ並列化、あるいはスーパースカラ、VLIWにおける命令レベル並列化のような局所的で単一粒度の並列化とは異なり、プログラム全域にわたるグローバルかつ複数粒度によるフレキシブルな並列処理が可能となる。
[粗粒度タスク並列処理(マクロデータフロー処理)]
単一プログラム中のサブルーチン、ループ、基本ブロック間の並列性を利用する粗粒度並列処理は、マクロデータフロー処理とも呼ばれる。ソースとなる例えばフォートランプログラムを、粗粒度タスク(マクロタスク)として、繰り返しブロック(RB:repetition block)、サブルーチンブロック(SB:subroutine block)、疑似代入文ブロック(BPA:block of pseudo assignment statements)の3種類のマクロタスク(MT)に分解する。RBは、各階層での最も外側のナチュラルループであり、SBはサブルーチン、BPAはスケジューリングオーバヘッドあるいは並列性を考慮し融合あるいは分割された基本ブロックである。ここで、BPAは、基本的には通常の基本ブロックであるが、並列性抽出のために単一の基本ブロックを複数に分割したり、逆に一つのBPAの処理時間が短く、ダイナミックスケジューリング時のオーバヘッドが無視できない場合には、複数のBPAを融合し得一つのBPAを生成する。最外側ループであるRBがDoallループであるときは、ループインデクスを分割することにより複数の部分Doallループに分割し、分割後の部分Doallループを新たにRBと定義する。また、サブルーチンSBは、可能な限りインライン展開するが、コード長を考慮し効果的にインライン展開ができないサブルーチンはそのままSBとして定義する。さらに、SBやDoall不可能なRBの場合、これらの内部の並列性に対し、階層的マクロデータフロー処理を適用する。
次に、マクロタスク間の制御フローとデータ依存を解析し、図2のようなマクロフローグラフ(MFG)を生成する。MFGでは、各ノードがマクロタスク(MT)、点線のエッジが制御フロー、実線のエッジがデータ依存、ノード内の小円が条件分岐文を表している。また、MT7のループ(RB)は、内部で階層的にMTおよびMFGを定義できることを示している。
次に、マクロタスク間制御依存およびデータ依存より各マクロタスクが最も早く実行できる条件(最早実行可能条件)すなわちマクロタスク間の並列性を検出する。この並列性をグラフ表現したのが図3に示すマクロタスクグラフ(MTG)である。MTGでも、ノードはMT、実線のエッジがデータ依存、ノード内の小円が条件分岐文を表す。ただし、点線のエッジは拡張された制御依存を表し、矢印のついたエッジは元のMFGにおける分岐先、実線の円弧はAND関係、点線の円弧はOR関係を表している。例えば、MT6へのエッジは、MT2中の条件分岐がMT4の方向に分岐するか、MT3の実行が終了したとき、MT6が最も早く実行が可能になることを示している。
そして、コンパイラは、MTG上のMTをプロセッサクラスタ(コンパイラあるいはユーザによりソフトウェア的に実現されるプロセッサのグループ)へコンパイル時に割り当てを行う(スタティックスケジューリング)か、実行時に割り当てを行うためのダイナミックスケジューリングコードを、ダイナミックCPアルゴリズムを用いて生成し、これをプログラム中に埋め込む。これは、従来のマルチプロセッサのようにOSあるいはライブラリに粗粒度タスクの生成、スケジューリングを依頼すると、数千から数万クロックのオーバヘッドが生じてしまう可能性があり、それを避けるためである。このダイナミックなスケジューリング時には、実行時までどのプロセッサでタスクが実行されるか分からないため、タスク間共有データは全プロセッサから等距離に見える集中共有メモリに割り当てられる。
また、このスタティックスケジューリングおよびダイナミックスケジューリングコードの生成の時には、各プロセッサ上のローカルメモリあるいは分散共有メモリを有効に使用し、プロセッサ間のデータ転送量を最小化するためのデータローカライゼーション手法も用いられる。
データローカライゼーションは、MTG上でデータ依存のある複数の異なるループにわたりイタレーション間のデータ依存を解析し(インターループデータ依存解析)、データ転送が最小になるようにループとデータを分割(ループ整合分割)後、それらのループとデータが同一のプロセッサにスケジューリングされるように、コンパイル時にそれらのループを融合するタスク融合方式か、実行時に同一プロセッサへ割り当てられるようにコンパイラが指定するパーシャルスタティックスケジューリングアルゴリズムを用いてダイナミックスケジューリングコードを生成する。このデータローカライゼーション機能を用いて各ローカルメモリの有効利用を行うことができる。
またこの際、データローカライゼーションによっても除去できなかったプロセッサ間のデータ転送を、データ転送とマクロタスク処理をオーバーラップして行うことにより、データ転送オーバヘッドを隠蔽しようとするプレロード・ポストストアスケジューリングアルゴリズムも使用される。このスケジューリングの結果に基づいて各プロセッサ上のデータ転送コントローラを利用したデータ転送が実現される。
[ループ並列処理(中粒度並列処理)]
マルチグレイン並列化では、マクロデータフロー処理によりプロセッサクラスタ(PC)に割り当てられるループ(RB)は、そのRBがDoallあるいはDoacrossループの場合、PC内のプロセッシングエレメント(PE)に対してイタレーションレベルで並列化処理(分割)される。
ループストラクチャリングとしては、以下のような従来の技術をそのまま利用できる。
(a)ステートメントの実行順序の変更
(b)ループディストリビューション
(c)ノードスプリッティングスカラエクスパンション
(d)ループインターチェンジ
(e)ループアンローリング
(f)ストリップマイニング
(g)アレイプライベタイゼーション
(h)ユニモジュラー変換(ループリバーサル、パーミュテーション、スキューイング)
また、ループ並列化処理が適用できないループに関しては、図4のようにループボディ部を次に述べる(近)細粒度並列処理か、ボディ部を階層的にマクロタスクに分割しマクロデータフロー処理(粗粒度タスク並列処理)を適用する。
[(近)細粒度並列処理]
PCに割り当てられるMTがBPAまたはループ並列化或いは階層的にマクロデータフロー処理を適用できないRB等の場合には、BPA内部のステートメント或いは命令を近細粒度タスクとしてPC内プロセッサで並列処理する。
マルチプロセッサシステム或いはシングルチップマルチプロセッサ上での近細粒度並列処理では、プロセッサ間の負荷バランスだけでなくプロセッサ間データ転送をも最少にするようにタスクをプロセッサにスケジューリングしなければ、効率よい並列処理は実現できない。さらに、この近細粒度並列処理で要求されるスケジューリングでは、図4のタスクグラフに示すように、タスク間にはデータ依存による実行順序の制約があるため強NP完全な非常に難しいスケジューリング問題となる。このグラフは、無サイクル有向グラフである。図中、各タスクは各ノードに対応している。ノード内の数字はタスク番号iを表し、ノードの脇の数字はプロセッシングエレメント上でのタスク処理時間tiを表す。また、ノードNiからNjに向けて引かれたエッジは、タスクTiがTjに先行するという半順序制約を表している。タスク間のデータ転送時間も考慮する場合、各々のエッジは一般に可変な重みを持つ。タスクTiとTjが異なるプロセッシングエレメントへ割り当てられた場合、この重みtijがデータ転送時間となる。図4においては、データ転送および同期に要する時間を9クロックと仮定している。逆にこれらのタスクが同一プロセッシングエレメントに割り当てられた場合、重みtijは0となる。
このようにして生成されたタスクグラフを各プロセッサにスタティックにスケジューリングする。この際、スケジューリングアルゴリズムとして、データ転送オーバヘッドを考慮し実行時間を最小化するヒューリスティックアルゴリズム、例えばCP/DT/MISF法、CP/ETF/MISF法、ETF/CP法、あるいはDT/CP法の4手法を自動的に適用し最良のスケジュールを選ぶことができる。また、このようにタスクをスタティックにプロセッサに割り当てることにより、BPA内で用いられるデータのローカルメモリ、分散共有メモリ、レジスタへの配置等、データのメモリへの最適化やデータ転送・同期オーバヘッドの最小化といった各種の最適化が可能になる。
スケジューリング後、コンパイラはプロセッシングエレメントに割り当てられたタスクの命令列を順番に並べ、データ転送命令や同期命令を必要な箇所に挿入することにより、各プロセッサ用のマシンコードを生成する。近細粒度タスク間の同期にはバージョンナンバー法を用い、同期フラグの受信は受信側プロセッシングエレメントのビジーウェイトによって行われる。ここで、データ転送および同期フラグのセットは、送信側のプロセッサが受信側のプロセッサ上の分散共有メモリに直接書き込むことにより低オーバヘッドで行うことができる。
マシンコード生成時、コンパイラはスタティックスケジューリングの情報を用いたコード最適化を行うことができる。例えば、同一データを使用する異なるタスクが同一プロセッシングエレメントに割り当てられたとき、レジスタを介してそのデータを受け渡しすることができる。また、同期のオーバヘッドを最小化するため、タスクの割り当て状況や実行順序から、冗長な同期を除去することもできる。特に、シングルチップマルチプロセッサでは、コード生成時に厳密なコード実行スケジューリングを行うことにより、実行時のデータ転送タイミングを含めたすべての命令実行をコンパイラが制御し、すべての同期コードを除去して並列実行を可能とする無同期並列化のような究極的な最適化も行える。
上述のようなマルチグレイン並列処理をマルチプロセッサシステム上で実現するため、一例として、シングルチップマルチプロセッサ(SCM)10は図1に示すようなアーキテクチャを有する。
図1において示したアーキテクチャにおいては、CPU20に加えて、分散共有メモリ(DSM:distributed shared memory)22とアジャスタブルプリフェッチ命令キャッシュ24が各SCM10に設けられている。ここで用いられるCPU20は、特に限定されず、整数演算や浮動小数点演算が可能なものであればよい。例えば、ロード/ストアアーキテクチャのシンプルなシングルイッシューRISCアーキテクチャのCPUを用いることができるほか、スーパースカラプロセッサ、VLIWプロセッサなども用いることができる。分散共有メモリ22は、デュアルポートメモリで構成されており、他のプロセッシングエレメントからも直接リード/ライトができるようになっており、上に説明した近細粒度タスク間のデータ転送に使用する。
アジャスタブルプリフェッチ命令キャッシュ24は、コンパイラあるいはユーザからの指示で、将来実行すべき命令をメモリあるいは低レベルキャッシュからプリフェッチするものである。このアジャスタブルプリフェッチ命令キャッシュ24は、複数ウェイのセットアソシアティブキャッシュにおいて、コンパイラ等のソフトから指示される、あるいはハードにより事前に決められたウェイに、将来実行されるライン(命令列)をフェッチできるようにするものである。その際、フェッチの単位としては、複数ラインの連続転送指示も行える。アジャスタブルプリフェッチ命令キャッシュ24は、命令キャッシュへのミスヒットを最小化させ、命令実行の高速化を可能にするコンパイラによる調整および制御を可能にするキャッシュシステムである。
すなわち、このアジャスタブルプリフェッチ命令キャッシュ24は、すべてのプログラム(命令列)がメモリサイズより小さいことを仮定しているローカルプログラムメモリとは異なり、大きなプログラムにも対応することができ、プログラムの特徴に応じ、プリフェッチをしない通常のキャッシュとしても使用できるし、逆にすべてコンパイラ制御によるプリフェッチキャッシュとして使え、ミスヒットのない(ノーミスヒット)キャッシュとして使用できるものである。
このようなアジャスタブルプリフェッチ命令キャッシュの構造の一例を図5に示す。図5に示されたnウェイのセットアソシエイティブキャッシュにおいては、コンパイラあるいはユーザがプログラムに応じて指定するjウェイをプリフェッチ(事前読み出し)するエリアとして使用できるものである。コンパイラにより挿入されたプリフェッチ命令(ラインごとではなく複数ラインのプリフェッチも可能)により、命令実行の前に必要な命令が命令キャッシュ上に存在することを可能とし、高速化が実現できる。プロセッシングエレメントは、nウェイすべてを通常のキャッシュと同様に読み出すことができる。ラインのリプレースは通常のLRU(least recently used)法で行われる。そして、各セット(集合)中のウェイには、通常、自由に転送されたラインを格納できるが、プリフェッチ用に指定されたウェイにはプリフェッチ命令によってCSMから転送されたラインのみ格納される。それ以外のウェイは通常のキャッシュと同様にラインを割り当てられる。プリフェッチキャッシュコントローラは、コンパイラからの指示により、命令をCSMからプリフェッチする。このときの転送の単位は、1ラインから複数ラインである。コンパイラがjウェイ分のプリフェッチエリアを指定し、それ以外の(n−j)ウェイ分のエリアは通常のキャッシュとして使用される。
さらに、図1のアーキテクチャにおいては、ローカルデータメモリ(LDM)26が設けられている。このローカルデータメモリ26は、各プロセッシングエレメント16内だけでアクセスできるメモリであり、データローカライゼーション技術などにより、各プロセッシングエレメント16に割り当てられたタスク間で使用されるローカルデータを保持するために使用される。また、このローカルデータメモリ26は、対象とするアプリケーションプログラムに対しコンパイラあるいはユーザがデータのローカルメモリへの分割配置が可能な場合には、ローカルメモリとして使用され、ローカルメモリを有効に使用できない場合には、レベル1キャッシュ(Dキャッシュ)に切り替えて使用できるようにすることが好ましい。また、ゲーム機等のリアルタイム応用に専ら用いられるような場合には、ローカルメモリだけとして設計することも可能である。基本的に各プロセッシングエレメント内で使用されるメモリであるため、共有メモリに比べチップ面積を消費しないので、相対的に大きな容量をとれるものである。
粗粒度並列処理では、条件分岐に対処するためにダイナミックスケジューリングが使用される。この場合、マクロタスクがどのプロセッサで実行されるかは、コンパイル時には分からない。したがって、ダイナミックにスケジューリングされるマクロタスク間の共有データは、集中共有メモリ(CSM:centralized shared memory)に配置できることが好ましい。そのため、本実施形態においては、各プロセッシングエレメント16が共有するデータを格納する集中共有メモリ28を各SCM内に設けるほか、さらに、チップ間接続ネットワーク12につながれた集中共有メモリ14を設けている。このチップ内の集中共有メモリ28は、チップ10内のすべてのプロセッシングエレメント16から、そして複数チップの構成では他のチップ上のプロセッシングエレメントからも共有されるデータを保存するメモリである。チップ外の集中共有メモリ14も同様に各プロセッシングエレメントにより共有されるメモリである。したがって、実際の設計上、集中共有メモリ28、14は、物理的に各チップに分散されているが、論理的にはどのプロセッシングエレメントからも等しく共有することができるものである。すべてのプロセッシングエレメントから等距離に見えるようにインプリメントすることもできるし、自チップ内のプロセッシングエレメントからは近く見えるようにインプリメントすることをも可能である。
単一のSCMチップからなるシステムでは、チップ内のプロセッシングエレメント(PE)16間で共有される等距離の共有メモリとしてこの集中共有メモリ28を用いることができる。また、コンパイラの最適化が困難である場合には、L2キャッシュとして使用することができる。このメモリ28,14には、ダイナミックタスクスケジューリング時にタスク間で共有されるデータを主に格納する。また、別のチップとなった集中共有メモリ14は、SCMチップ10内の集中共有メモリ28の容量が足りない場合、必要に応じて、メモリのみからなる大容量集中共有メモリチップを任意の数接続することができる。
また、粒度によらずスタティックスケジューリングが適用できる場合には、あるマクロタスクが定義する共有データをどのプロセッサが必要とするかはコンパイル時に分かるため、生産側のプロセッサが消費側のプロセッサの分散共有メモリにデータと同期用のフラグを直接書き込めることが好ましい。
データ転送コントローラ(DTC)30は、コンパイラあるいはユーザの指示により自プロセッシングエレメント上のDSM22や、自あるいは他のSCM10内のCSM28、あるいは他のプロセッシングエレメント上のDSMとの間でデータ転送を行う。複数のSCMからなる構成を採用する場合には、他のSCM上のCSMやDSMとの間でのデータ転送、あるいは、独立したCSMとの間でのデータ転送を行う。
図1におけるローカルデータメモリ26とデータ転送コントローラ30との間の点線は、用途に応じて、データ転送コントローラ30がローカルデータメモリ(Dキャッシュ)26にアクセスできる構成をとってもよいことを表している。このような場合、ローカルデータメモリ26を介してCPU20が転送指示をデータ転送コントローラ30に与えたり、転送終了のチェックを行う構成をとることができる。
データ転送コントローラ30へのデータ転送の指示は、ローカルデータメモリ26、DSM22、あるいは専用のバッファ(図示しない)を介して行い、データ転送コントローラ30からCPU20へのデータ転送終了の報告は、ローカルメモリ、DSMあるいは専用のバッファを介して行う。このとき、どれを使うかはプロセッサの用途に応じプロセッサ設計時に決めるかあるいはハード的に複数の方法を用意し、プログラムの特性に応じコンパイラあるいはユーザがソフト的に使い分けられるようにする。
データ転送コントローラ30へのデータ転送指示(例えば何番地から内バイトのデータをどこにストアし、またロードするか、データ転送のモード(連続データ転送、ストライド、ストライド・ストライド転送など)など)は、コンパイラが、データ転送命令をメモリあるいは専用バッファに格納しておき、実行時にはどのデータ転送命令を実行するかの指示のみを出すようにして、データ転送コントローラ20の駆動のためのオーバヘッドを削減することが好ましい。
各SCMチップ10内のプロセッシングエレメント16の間の接続は、各プロセッシングエレメントに設けられたネットワークインタフェース32を介して、チップ内接続ネットワーク(マルチバス、クロスバーなどからなる)34によって達成されており、このチップ内接続ネットワーク34を介して、プロセッシングエレメントが共通の集中共有メモリ28に接続される。集中共有メモリ28は、チップの外にあるチップ間接続ネットワーク12に接続している。このチップ間接続ネットワークは、クロスバーネットワークあるいはバス(複数バスも含む)が特に好ましいが、多段結合網等でもかまわず、予算、SCMの数、アプリケーションの特性に応じて選ぶことができるものである。また、このチップ内接続ネットワーク34を介さずに、外部のチップ間接続ネットワーク12とネットワークインタフェース32を接続することも可能であり、このような構成は、システム中の全プロセッシングエレメントが平等に各チップ上に分散された集中共有メモリ、分散共有メモリにアクセスすることを可能にするほか、チップ間でのデータ転送が多い場合には、この直結パスを設けることにより、システム全体のデータ転送能力を大幅に高めることができる。
グローバルレジスタファイル36は、マルチポートレジスタであり、チップ内のプロセッシングエレメントにより共有されるレジスタである。たとえば、近細粒度タスク(分散共有メモリを用いた場合など)のデータ転送および同期に使用することができる。このグローバルレジスタファイルは、プロセッサの用途に応じて、省略することも可能なものである。
図1において、点線は、通信線を必要に応じて用意できることを意味しており、コストあるいはピン数などを考えて不必要あるいは困難な場合には、点線の接続はなくても動作することを示すものである。
以上のように、特定の実施の形態に基づいて本発明を説明してきたが、本発明の技術的範囲はこのような実施の形態に限定されるものではなく、当業者にとって容易な種々の変形を含むものである。
10 シングルチップマルチプロセッサ
12 チップ間接続ネットワーク
14 集中共有メモリ(チップ)
16 プロセッシングエレメント
20 CPU
22 分散共有メモリ
24 アジャスタブルプリフェッチ命令キャッシュ
26 ローカルデータメモリ
28 集中共有メモリ
30 データ転送コントローラ
32 ネットワークインタフェース
34 チップ内接続ネットワーク

Claims (1)

  1. CPUと、前記CPUに接続されているネットワークインタフェースと、コンパイラによりスタティックスケジューリングされたプログラムの実行時に転送されるデータを格納し、他のプロセッシングエレメントからアクセス可能な分散共有メモリと、当該プロセッシングエレメントだけからアクセス可能なローカルデータメモリと、を備える複数のプロセッシングエレメントと、
    前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有され、コンパイラによりダイナミックスケジューリングされたプログラムの実行時に使用されるデータを格納する集中共有メモリと、を備えるマルチプロセッサであって、
    前記分散共有メモリは、スタティックスケジューリングされたプログラムの実行時に、プロセシングエレメント間のデータ転送に使用され、
    前記ローカルデータメモリは、当該プロセッシングエレメントに割り当てられたタスクにおいて使用されるローカルデータを保持するために使用され、
    前記各プロセッシングエレメントに割り当てられたタスク間で共通に使用されるデータが、前記各タスクで必要とされるとき以前に、データの消費先の前記プロセッシングエレメントの前記分散共有メモリへ転送され、
    前記集中共有メモリは、粗粒度並列処理において条件分岐に対応するために使用されるダイナミックスケジューリングにおいて、プログラムの実行時までどのCPUにより使用されるかが決まっていないデータを格納することを特徴とするマルチプロセッサ。
JP2009159744A 2009-07-06 2009-07-06 マルチプロセッサシステム Pending JP2009230764A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009159744A JP2009230764A (ja) 2009-07-06 2009-07-06 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009159744A JP2009230764A (ja) 2009-07-06 2009-07-06 マルチプロセッサシステム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP36370299A Division JP4784792B2 (ja) 1999-12-22 1999-12-22 マルチプロセッサ

Publications (1)

Publication Number Publication Date
JP2009230764A true JP2009230764A (ja) 2009-10-08

Family

ID=41245997

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009159744A Pending JP2009230764A (ja) 2009-07-06 2009-07-06 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP2009230764A (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02244253A (ja) * 1989-03-17 1990-09-28 Hitachi Ltd 分散共有メモリを持つマルチプロセッサシステム
JPH04123234A (ja) * 1990-09-14 1992-04-23 Hitachi Ltd マルチプロセッサのプロセススケジューリング方式及びメモリ管理方式
JPH04333955A (ja) * 1990-11-30 1992-11-20 Xerox Corp バスの競合を解決するための裁定手段
JPH06266683A (ja) * 1993-03-12 1994-09-22 Toshiba Corp 並列処理装置
JPH07509085A (ja) * 1992-07-10 1995-10-05 クレイ・リサーチ・インコーポレイテッド 統一されたパラレル処理アーキテクチャのための方法と装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02244253A (ja) * 1989-03-17 1990-09-28 Hitachi Ltd 分散共有メモリを持つマルチプロセッサシステム
JPH04123234A (ja) * 1990-09-14 1992-04-23 Hitachi Ltd マルチプロセッサのプロセススケジューリング方式及びメモリ管理方式
JPH04333955A (ja) * 1990-11-30 1992-11-20 Xerox Corp バスの競合を解決するための裁定手段
JPH07509085A (ja) * 1992-07-10 1995-10-05 クレイ・リサーチ・インコーポレイテッド 統一されたパラレル処理アーキテクチャのための方法と装置
JPH06266683A (ja) * 1993-03-12 1994-09-22 Toshiba Corp 並列処理装置

Similar Documents

Publication Publication Date Title
EP3449359B1 (en) Out-of-order block-based processors and instruction schedulers
Etsion et al. Task superscalar: An out-of-order task pipeline
EP3314401B1 (en) Block-based architecture with parallel execution of successive blocks
Burger et al. Scaling to the end of silicon with EDGE architectures
US7490218B2 (en) Building a wavecache
JP5224498B2 (ja) メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
Yazdanpanah et al. Hybrid dataflow/von-Neumann architectures
US20170083338A1 (en) Prefetching associated with predicated load instructions
Keckler et al. Multicore processors and systems
US20170083339A1 (en) Prefetching associated with predicated store instructions
WO2017223006A1 (en) Load-store queue for multiple processor cores
Sohi et al. Speculative multithreaded processors
JP4784792B2 (ja) マルチプロセッサ
JP4304347B2 (ja) マルチプロセッサ
EP3746883B1 (en) Processor having multiple execution lanes and coupling of wide memory interface via writeback circuit
Bousias et al. Instruction level parallelism through microthreading—a scalable approach to chip multiprocessors
Owaida et al. Massively parallel programming models used as hardware description languages: The OpenCL case
JP4784842B2 (ja) マルチプロセッサ及びマルチプロセッサシステム
Etsion et al. Task superscalar: Using processors as functional units
Leback et al. Tesla vs. xeon phi vs. radeon a compiler writer’s perspective
JP2009230764A (ja) マルチプロセッサシステム
Tsai Superthreading: Integrating compilation technology and processor architecture for cost-effective concurrent multithreading
Arandi The data-driven multithreading virtual machine
Brownell Architectural Implications of Automatic Parallelization With HELIX-RC
Bernard et al. A microthreaded architecture and its compiler

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090811

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090811

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100720