JP4304347B2 - マルチプロセッサ - Google Patents

マルチプロセッサ Download PDF

Info

Publication number
JP4304347B2
JP4304347B2 JP2008118007A JP2008118007A JP4304347B2 JP 4304347 B2 JP4304347 B2 JP 4304347B2 JP 2008118007 A JP2008118007 A JP 2008118007A JP 2008118007 A JP2008118007 A JP 2008118007A JP 4304347 B2 JP4304347 B2 JP 4304347B2
Authority
JP
Japan
Prior art keywords
memory
multiprocessor
shared memory
processing element
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2008118007A
Other languages
English (en)
Other versions
JP2008217825A (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.)
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 JP2008118007A priority Critical patent/JP4304347B2/ja
Publication of JP2008217825A publication Critical patent/JP2008217825A/ja
Application granted granted Critical
Publication of JP4304347B2 publication Critical patent/JP4304347B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、複数のCPUを備えたマルチプロセッサ(特に、複数のCPUを単一のチップに納めたシングルチッププロセッサ)のアーキテクチャに関し、より具体的には、マルチグレインのコンパイラ協調型シングルチップマルチプロセッサアーキテクチャと、それらを接続した高性能マルチプロセッサシステムアーキテクチャとに関する。
現在、日本のスーパーコンピュータメーカは世界でもトップのハードウエア技術を有し、現時点でのピーク性能は、数TFLOPSを越え、21世紀初頭には数十TFLOPS以上のピーク性能を持つマシンが開発されると予想される。しかし、現在のスーパーコンピュータは、ピーク性能の向上とともにプログラムを実行したときの実効性能との差が大きくなっている、すなわち価格性能比が必ずしも優れているとはいえない状況になっている。また、使い勝手としても、ユーザは問題中の並列性を抽出し、HPF、MPI,PVMなどの拡張言語あるいはライブラリを用いハードウエアを効果的に使用できるようなプログラムを作成しなければならず、一般のユーザには使い方が難しい、あるいは使いこなせないという問題が生じている。さらに、これらにも起因して、世界の高性能コンピュータの市場を拡大できないということが大きな問題となっている。
この価格性能比、使いやすさの問題を解決し、スーパーコンピュータの市場を拡大するためには、ユーザが使い慣れているフォートラン、C等の逐次型言語で書かれたプログラムを自動的に並列化する自動並列化コンパイラの開発が重要となる。
特に、21世紀初頭の汎用並びに組み込み用マイクロプロセッサ、家庭用サーバからスーパーコンピュータに至るマルチプロセッサシステムの主要アーキテクチャの一つとなると考えられるシングルチップマルチプロセッサについて検討を行うことは重要である。さらに、シングルチップマルチプロセッサについても、従来からある主記憶共有アーキテクチャでは十分な性能と優れた価格性能比は得られない。したがって、プログラム中の命令レベルの並列性、ループ並列性、粗粒度並列性をフルに使用できるマルチグレイン並列処理のように、真に実行すべき命令列からより多くの並列性を抽出し、システムの価格性能比を向上し、誰にでも使えるユーザフレンドリなシステムの構築を可能とする新しい自動並列化コンパイル技術と、それを生かせるようなアーキテクチャの開発が重要である。
したがって、本発明は、マルチグレイン並列化をサポートするコンパイラ協調型のシングルチップマルチプロセッサおよびそれを結合したハイパフォーマンスマルチプロセッサシステムを提供することを目的とする。
本発明は、CPUと、前記CPUに接続されているネットワークインタフェースと、スタティックスケジューリング時に転送されるデータを格納する第1メモリと、前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有される集中共有メモリと、を備える複数のプロセッシングエレメントと、前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有される集中共有メモリと、を備えるマルチプロセッサであって、前記各プロセシングエレメントは、前記CPU及び前記ネットワークインタフェースに直接接続され、将来実行すべき命令を前記集中共有メモリから先読みするアジャスタブルプリフェッチ命令キャッシュをさらに備え、前記アジャスタブルプリフェッチ命令キャッシュは、将来実行される命令列を事前読み出しできるエリアとして、指定された複数のウェイを使用し、それ以外のウェイ分のエリアを通常のキャッシュエリアとしてを使用することを特徴とするマルチプロセッサを提供する。
また、本発明は、請求項1から6のいずれか一つに記載のマルチプロセッサが複数接続されて構成されるマルチプロセッサシステムであって、前記集中共有メモリは、前記マルチプロセッサ内に設けられ、当該マルチプロセッサ内の各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有されるものであって、前記マルチプロセッサシステムは、前記マルチプロセッサ外に設けられ、各マルチプロセッサに接続され、前記各マルチプロセッサ内のプロセッシングエレメントによって共有される第2集中共有メモリを備え、前記第1メモリ、前記各集中共有メモリ及び前記第2集中共有メモリが、各プロセッシングエレメントから直接読み書きできるように配置されていることを特徴とするマルチプロセッサシステムを提供する。
上述のように、本発明のシングルチップマルチプロセッサによれば、価格性能比を改善し、高まりつつある半導体集積度にスケーラブルな性能向上が可能である。また、本発明は、このようなシングルチップマルチプロセッサを複数含むシステムをも提供するが、そのようなシステムは、より一層の高速処理を可能にするものである。
本発明はマルチグレイン並列化をサポートするシングルチップマルチプロセッサを提供する。本発明の一実施形態であるシングルチップマルチプロセッサのアーキテクチャを図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において、点線は、通信線を必要に応じて用意できることを意味しており、コストあるいはピン数などを考えて不必要あるいは困難な場合には、点線の接続はなくても動作することを示すものである。
以上のように、特定の実施の形態に基づいて本発明を説明してきたが、本発明の技術的範囲はこのような実施の形態に限定されるものではなく、当業者にとって容易な種々の変形を含むものである。
本発明の1実施形態であるマルチグレイン並列処理用システムを示すブロックダイアグラムである。 本発明において用いることができるコンパイラにおける粗粒度並列処理のためのマクロフローグラフの一例を示すグラフである。 本発明において用いることができるコンパイラにおける粗粒度並列処理のためのマクロタスクグラフの一例を示すグラフである。 本発明において用いることができるコンパイラにおける近細粒度並列処理のための近細粒度タスクグラフの一例を示すグラフである。 本発明において用いることができるアジャスタブルプリフェッチ命令キャッシュの構成を示すブロックダイアグラムである。
符号の説明
10 シングルチップマルチプロセッサ
12 チップ間接続ネットワーク
14 集中共有メモリ(チップ)
16 プロセッシングエレメント
20 CPU
22 分散共有メモリ
24 アジャスタブルプリフェッチ命令キャッシュ
26 ローカルデータメモリ
28 集中共有メモリ
30 データ転送コントローラ
32 ネットワークインタフェース
34 チップ内接続ネットワーク

Claims (7)

  1. CPUと、前記CPUに接続されているネットワークインタフェースと、スタティックスケジューリング時に転送されるデータを格納する第1メモリと、を備える複数のプロセッシングエレメントと、
    前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有される集中共有メモリと、を備えるマルチプロセッサであって、
    前記各プロセシングエレメントは、前記CPU及び前記ネットワークインタフェースに直接接続され、将来実行すべき命令を前記集中共有メモリから先読みするアジャスタブルプリフェッチ命令キャッシュをさらに備え、
    前記アジャスタブルプリフェッチ命令キャッシュは、将来実行される命令列を事前読み出しできるエリアとして、指定された複数のウェイを使用し、それ以外のウェイ分のエリアを通常のキャッシュエリアとして使用することを特徴とするマルチプロセッサ。
  2. 前記マルチプロセッサ用のコンパイラがタスクのスケジューリングをし、
    前記スケジューリングの結果に基づいて、前記事前読み出しできるエリアと前記通常のキャッシュエリアとが、前記プロセッシングエレメントで実行されるプログラムに応じて指定されることを特徴とする請求項1に記載のマルチプロセッサ。
  3. 前記第1メモリは、前記第1メモリを備えるプロセッシングエレメントだけからアクセス可能なローカルデータメモリであり、
    前記ローカルデータメモリは、L1キャッシュとして使用できることを特徴とする請求項1に記載のマルチプロセッサ。
  4. 前記第1メモリは、他の前記プロセッシングエレメントからアクセス可能な分散共有メモリ、及び、前記第1メモリを備えるプロセッシングエレメントだけからアクセス可能なローカルデータメモリを含み、
    前記マルチプロセッサは、前記分散共有メモリの一つのポートに接続されるデータ転送コントローラを備え、
    前記データ転送コントローラは、前記ローカルデータメモリを介して与えられたデータ転送指示によって、前記分散共有メモリにアクセスしてデータを転送することを特徴とする請求項1に記載のマルチプロセッサ。
  5. 前記分散共有メモリは、デュアルポートメモリで構成され、
    前記分散共有メモリの一つのポートには、前記データ転送コントローラが接続され、
    前記分散共有メモリの他のポートには、前記CPUが接続されることを特徴とする請求項4に記載のマルチプロセッサ。
  6. 前記ローカルデータメモリは、デュアルポートメモリで構成され、
    前記ローカルデータメモリの一つのポートには、前記データ転送コントローラが接続され、
    前記ローカルデータメモリの他のポートには、前記CPUが接続されることを特徴とする請求項4又は5に記載のマルチプロセッサ。
  7. 請求項1から6のいずれか一つに記載のマルチプロセッサが複数接続されて構成されるマルチプロセッサシステムであって、
    前記集中共有メモリは、前記マルチプロセッサ内に設けられ、当該マルチプロセッサ内の各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有されるものであって、
    前記マルチプロセッサシステムは、前記マルチプロセッサ外に設けられ、各マルチプロセッサに接続され、前記各マルチプロセッサ内のプロセッシングエレメントによって共有される第2集中共有メモリを備え
    前記第1メモリ、前記各集中共有メモリ及び前記第2集中共有メモリが、各プロセッシングエレメントから直接読み書きできるように配置されていることを特徴とするマルチプロセッサシステム。
JP2008118007A 2008-04-30 2008-04-30 マルチプロセッサ Expired - Lifetime JP4304347B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008118007A JP4304347B2 (ja) 2008-04-30 2008-04-30 マルチプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008118007A JP4304347B2 (ja) 2008-04-30 2008-04-30 マルチプロセッサ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008090853A Division JP4784842B2 (ja) 2008-03-31 2008-03-31 マルチプロセッサ及びマルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2008217825A JP2008217825A (ja) 2008-09-18
JP4304347B2 true JP4304347B2 (ja) 2009-07-29

Family

ID=39837711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008118007A Expired - Lifetime JP4304347B2 (ja) 2008-04-30 2008-04-30 マルチプロセッサ

Country Status (1)

Country Link
JP (1) JP4304347B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2551776B1 (en) 2010-03-25 2017-11-22 Fujitsu Limited Multi-core processor system, control program, and control method
WO2014068694A1 (ja) * 2012-10-31 2014-05-08 ルネサスエレクトロニクス株式会社 半導体装置及びキャッシュメモリへのデータ先読み方法
JP6289197B2 (ja) * 2014-03-24 2018-03-07 三菱電機株式会社 プラント制御装置エンジニアリングツール
JP6230525B2 (ja) * 2014-12-08 2017-11-15 本田技研工業株式会社 演算装置

Also Published As

Publication number Publication date
JP2008217825A (ja) 2008-09-18

Similar Documents

Publication Publication Date Title
Etsion et al. Task superscalar: An out-of-order task pipeline
JP5224498B2 (ja) メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
US7490218B2 (en) Building a wavecache
Krashinsky et al. The vector-thread architecture
US6978389B2 (en) Variable clocking in an embedded symmetric multiprocessor system
US20170083338A1 (en) Prefetching associated with predicated load instructions
Chen et al. Efficient data supply for hardware accelerators with prefetching and access/execute decoupling
US20170083339A1 (en) Prefetching associated with predicated store instructions
Sohi et al. Speculative multithreaded processors
US9378003B1 (en) Compiler directed cache coherence for many caches generated from high-level language source code
JP4784792B2 (ja) マルチプロセッサ
JP4304347B2 (ja) マルチプロセッサ
Bousias et al. Instruction level parallelism through microthreading—a scalable approach to chip multiprocessors
JP4784842B2 (ja) マルチプロセッサ及びマルチプロセッサシステム
Owaida et al. Massively parallel programming models used as hardware description languages: The OpenCL case
Šilc et al. A survey of new research directions in microprocessors
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
Takano Performance scalability of adaptive processor architecture
Zope Queue Streaming Model: Theory, Algorithms, and Implementation
Hammond Hydra: a chip multiprocessor with support for speculative thread-level parallelization
Ding Exploiting Hardware Abstraction for Parallel Programming Framework: Platform and Multitasking
Zhong Architectural and Complier Mechanisms for Accelerating Single Thread Applications on Mulitcore Processors.

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080916

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081117

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4304347

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120515

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130515

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130515

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S201 Request for registration of exclusive licence

Free format text: JAPANESE INTERMEDIATE CODE: R314201

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term