JP4784842B2 - Multiprocessor and multiprocessor system - Google Patents

Multiprocessor and multiprocessor system Download PDF

Info

Publication number
JP4784842B2
JP4784842B2 JP2008090853A JP2008090853A JP4784842B2 JP 4784842 B2 JP4784842 B2 JP 4784842B2 JP 2008090853 A JP2008090853 A JP 2008090853A JP 2008090853 A JP2008090853 A JP 2008090853A JP 4784842 B2 JP4784842 B2 JP 4784842B2
Authority
JP
Japan
Prior art keywords
data transfer
data
memory
shared memory
instruction
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
JP2008090853A
Other languages
Japanese (ja)
Other versions
JP2008181558A (en
JP2008181558A5 (en
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 JP2008090853A priority Critical patent/JP4784842B2/en
Publication of JP2008181558A publication Critical patent/JP2008181558A/en
Publication of JP2008181558A5 publication Critical patent/JP2008181558A5/ja
Application granted granted Critical
Publication of JP4784842B2 publication Critical patent/JP4784842B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

本発明は、複数のCPUを備えたマルチプロセッサ(特に、複数のCPUを単一のチップに納めたシングルチッププロセッサ)のアーキテクチャに関し、より具体的には、マルチグレインのコンパイラ協調型シングルチップマルチプロセッサアーキテクチャと、それらを接続した高性能マルチプロセッサシステムアーキテクチャとに関する。 The present invention relates to an architecture of a multiprocessor having a plurality of CPUs (particularly, a single chip processor in which a plurality of CPUs are contained in a single chip) , and more specifically, a multigrain compiler cooperative single-chip multiprocessor. The present invention relates to architectures and high-performance multiprocessor system architectures connecting them.

現在、日本のスーパーコンピュータメーカは世界でもトップのハードウエア技術を有し、現時点でのピーク性能は、数TFLOPSを越え、21世紀初頭には数十TFLOPS以上のピーク性能を持つマシンが開発されると予想される。しかし、現在のスーパーコンピュータは、ピーク性能の向上とともにプログラムを実行したときの実効性能との差が大きくなっている、すなわち価格性能比が必ずしも優れているとはいえない状況になっている。また、使い勝手としても、ユーザは問題中の並列性を抽出し、HPF、MPI,PVMなどの拡張言語あるいはライブラリを用いハードウエアを効果的に使用できるようなプログラムを作成しなければならず、一般のユーザには使い方が難しい、あるいは使いこなせないという問題が生じている。さらに、これらにも起因して、世界の高性能コンピュータの市場を拡大できないということが大きな問題となっている。   Currently, Japanese supercomputer manufacturers have the world's top hardware technology, and the peak performance at the present time exceeds several TFLOPS, and in the beginning of the 21st century machines with peak performance of several tens of TFLOPS will be developed. It is expected to be. However, with current supercomputers, the difference between the peak performance and the effective performance when the program is executed is large, that is, the price-performance ratio is not necessarily excellent. In terms of usability, the user must extract the parallelism in question and create a program that can use the hardware effectively using an extended language or library such as HPF, MPI, PVM, etc. The problem is that it is difficult or impossible to use for users. Furthermore, due to these reasons, the inability to expand the world's high-performance computer market is a major problem.

この価格性能比、使いやすさの問題を解決し、スーパーコンピュータの市場を拡大するためには、ユーザが使い慣れているフォートラン、C等の逐次型言語で書かれたプログラムを自動的に並列化する自動並列化コンパイラの開発が重要となる。   To solve this price-performance ratio and ease-of-use problem and expand the supercomputer market, programs written in sequential languages such as Fortran and C, which users are accustomed to, are automatically parallelized. Development of an automatic parallelizing compiler is important.

特に、21世紀初頭の汎用並びに組み込み用マイクロプロセッサ、家庭用サーバからスーパーコンピュータに至るマルチプロセッサシステムの主要アーキテクチャの一つとなると考えられるシングルチップマルチプロセッサについて検討を行うことは重要である。さらに、シングルチップマルチプロセッサについても、従来からある主記憶共有アーキテクチャでは十分な性能と優れた価格性能比は得られない。したがって、プログラム中の命令レベルの並列性、ループ並列性、粗粒度並列性をフルに使用できるマルチグレイン並列処理のように、真に実行すべき命令列からより多くの並列性を抽出し、システムの価格性能比を向上し、誰にでも使えるユーザフレンドリなシステムの構築を可能とする新しい自動並列化コンパイル技術と、それを生かせるようなアーキテクチャの開発が重要である。   In particular, it is important to study a single-chip multiprocessor that is considered to be one of the main architectures of general-purpose and embedded microprocessors in the early 21st century and multiprocessor systems ranging from home servers to supercomputers. Furthermore, even with a single-chip multiprocessor, a conventional main memory sharing architecture cannot provide sufficient performance and an excellent price / performance ratio. Therefore, the system extracts more parallelism from the instruction sequence to be executed truly, like multi-grain parallel processing that can fully use instruction level parallelism, loop parallelism, and coarse grain parallelism in the program. It is important to develop a new automatic parallel compilation technology that can improve the price-performance ratio of the system and to build a user-friendly system that can be used by anyone, and an architecture that can make use of it.

したがって、本発明は、マルチグレイン並列化をサポートするコンパイラ協調型のシングルチップマルチプロセッサおよびそれを結合したハイパフォーマンスマルチプロセッサシステムを提供することを目的とする。   Accordingly, it is an object of the present invention to provide a compiler-cooperative single-chip multiprocessor that supports multigrain parallelization and a high performance multiprocessor system that combines them.

本発明は、CPUと、前記CPUに接続されているネットワークインタフェースと、データを格納する分散共有メモリと、当該プロセッシングエレメントだけからアクセス可能なローカルデータメモリと、前記分散共有メモリの一つのポートに接続されるデータ転送コントローラと、を備える複数のプロセッシングエレメントと、前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有される集中共有メモリと、を備えるマルチプロセッサであって、前記マルチプロセッサ用のコンパイラが、前記データ転送コントローラへのデータ転送命令をコンパイル時に生成し、前記コンパイルされたプログラムの実行前に前記ローカルデータメモリに格納し、前記CPUは、前記コンパイルされたプログラムの実行時に、実行すべきデータ転送命令を指示し、前記データ転送コントローラは、実行するデータ転送命令の指示を受け、前記受けた指示に従って前記ローカルデータメモリからデータ転送命令を読み出し、前記読み出したデータ転送命令に従って、前記分散共有メモリからデータを読み出して、前記データの消費先のプロセッシングエレメントの分散共有メモリへ転送することを特徴とするマルチプロセッサを提供する。  The present invention is connected to a CPU, a network interface connected to the CPU, a distributed shared memory for storing data, a local data memory accessible only from the processing element, and one port of the distributed shared memory A multiprocessor comprising: a plurality of processing elements comprising: a data transfer controller; and a centralized shared memory connected to each processing element and shared by each processing element, the compiler for the multiprocessor Generates a data transfer instruction to the data transfer controller at the time of compilation and stores it in the local data memory before execution of the compiled program, and the CPU executes the execution of the compiled program. Sometimes instructing a data transfer instruction to be executed, and the data transfer controller receives an instruction of the data transfer instruction to be executed, reads the data transfer instruction from the local data memory according to the received instruction, and reads the read data transfer instruction In accordance with the present invention, a multiprocessor is provided that reads data from the distributed shared memory and transfers the data to the distributed shared memory of the processing element that consumes the data.

また、本発明は、前記分散共有メモリ及び前記ローカルデータメモリは、デュアルポートメモリで構成され、前記分散共有メモリ及び/又は前記ローカルデータメモリの一つのポートには、前記データ転送コントローラが接続され、前記分散共有メモリ及び/又は前記ローカルデータメモリの他のポートには、前記CPUが接続されることを特徴とする請求項1に記載のマルチプロセッサを提供する。  Further, according to the present invention, the distributed shared memory and the local data memory are configured by a dual port memory, and the data transfer controller is connected to one port of the distributed shared memory and / or the local data memory, The multiprocessor according to claim 1, wherein the CPU is connected to another port of the distributed shared memory and / or the local data memory.

上述のように、本発明のシングルチップマルチプロセッサによれば、価格性能比を改善し、高まりつつある半導体集積度にスケーラブルな性能向上が可能である。また、本発明は、このようなシングルチップマルチプロセッサを複数含むシステムをも提供するが、そのようなシステムは、より一層の高速処理を可能にするものである。   As described above, according to the single chip multiprocessor of the present invention, it is possible to improve the price / performance ratio and to improve the performance scalable to the increasing degree of semiconductor integration. The present invention also provides a system including a plurality of such single-chip multiprocessors, but such a system enables higher-speed processing.

本発明はマルチグレイン並列化をサポートするシングルチップマルチプロセッサを提供する。本発明の一実施形態であるシングルチップマルチプロセッサのアーキテクチャを図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は、クロスバー、バス、マルチステージネットワークなど既存のネットワーク技術を利用して実現できるものである。   The present invention provides a single chip multiprocessor that supports multigrain parallelism. FIG. 1 shows the architecture of a single chip multiprocessor according to an embodiment of the present invention. 1, a plurality (m + 1) of single-chip multiprocessors (SCM0, SCM1, SCM2,..., SCMm,..., SCMm, including a plurality of processing elements (PE0, PE1,..., PEn). ) 10 and a plurality (j + 1) of centralized shared memory chips (CSM0,..., CSMj) consisting only of shared memory (however, there may not be one CSM depending on the required system conditions) , An input / output chip (I / O SCM0,..., I / O SCMk) composed of a plurality of (k + 1) single-chip multiprocessors that perform input / output control Are also connected by the inter-chip connection network 12. The inter-chip connection network 12 can be realized by using existing network technologies such as a crossbar, a bus, and a multistage network.

図1に示した形態においては、I/Oデバイスは要求される入出力機能に応じてk+1個のSCMで構成される入出力制御チップに接続している構成となっている。さらに、このチップ間接続ネットワーク12には、システム中の全プロセッシングエレメントにより共有されているメモリのみから構成されるj+1個の集中共有メモリ(CSM:centralized shared memory)チップ14が接続されている。これは、SCM10内にある集中共有メモリを補完する働きをするものである。   In the form shown in FIG. 1, the I / O device is connected to an input / output control chip composed of k + 1 SCMs according to required input / output functions. Furthermore, j + 1 centralized shared memory (CSM) chips 14 composed only of memories shared by all processing elements in the system are connected to the inter-chip connection network 12. This serves to complement the centralized shared memory in the SCM 10.

マルチグレイン並列処理とは、サブルーチン、ループ、基本ブロック間の粗粒度並列性、ループタイプイタレーション間の中粒度並列性(ループ並列性)、ステートメントあるいは命令間の(近)細粒度並列性を階層的に利用する並列処理方式である。この方式により、従来の市販マルチプロセッサシステム用自動並列化コンパイラで用いられていたループ並列化、あるいはスーパースカラ、VLIWにおける命令レベル並列化のような局所的で単一粒度の並列化とは異なり、プログラム全域にわたるグローバルかつ複数粒度によるフレキシブルな並列処理が可能となる。   Multi-grain parallel processing is a hierarchy of coarse-grained parallelism between subroutines, loops and basic blocks, medium-grained parallelism between loop type iterations (loop parallelism), and (near) fine-grained parallelism between statements or instructions. This is a parallel processing method that is used in an automated manner. This method is different from local parallel processing of single-granularity such as loop parallelization used in the conventional automatic parallelizing compiler for commercial multiprocessor systems, or instruction level parallelization in superscalar and VLIW, Flexible parallel processing with global and multiple granularity over the entire program is possible.

[粗粒度タスク並列処理(マクロデータフロー処理)]
単一プログラム中のサブルーチン、ループ、基本ブロック間の並列性を利用する粗粒度並列処理は、マクロデータフロー処理とも呼ばれる。ソースとなる例えばフォートランプログラムを、粗粒度タスク(マクロタスク)として、繰り返しブロック(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の場合、これらの内部の並列性に対し、階層的マクロデータフロー処理を適用する。
[Coarse grain task parallel processing (macro data flow processing)]
Coarse-grain parallel processing that uses parallelism between subroutines, loops, and basic blocks in a single program is also called macro data flow processing. For example, a Fortran program as a source is a coarse-grained task (macro task), and is a repetition block (RB), a subroutine block (SB), a pseudo assignment statement (BPA) block 3 Break down into types of macrotasks (MT). RB is the outermost natural loop in each layer, SB is a subroutine, and BPA is a basic block that is merged or divided in consideration of scheduling overhead or parallelism. Here, BPA is basically a normal basic block, but a single basic block is divided into a plurality of parts for parallelism extraction, or conversely, the processing time of one BPA is short, and dynamic scheduling If the overhead is not negligible, a plurality of BPAs can be merged to generate one BPA. When the RB that is the outermost loop is a Doall loop, the loop index is divided into a plurality of partial Doall loops, and the divided partial Doall loop is newly defined as an RB. Subroutine SB is expanded inline as much as possible, but a subroutine that cannot be effectively expanded inline is defined as SB as it is in consideration of the code length. Furthermore, in the case of RBs and RBs that cannot be dealt with, hierarchical macro data flow processing is applied to the internal parallelism.

次に、マクロタスク間の制御フローとデータ依存を解析し、図2のようなマクロフローグラフ(MFG)を生成する。MFGでは、各ノードがマクロタスク(MT)、点線のエッジが制御フロー、実線のエッジがデータ依存、ノード内の小円が条件分岐文を表している。また、MT7のループ(RB)は、内部で階層的にMTおよびMFGを定義できることを示している。   Next, the control flow and data dependency between macro tasks are analyzed, and a macro flow graph (MFG) as shown in FIG. 2 is generated. In the MFG, each node is a macrotask (MT), a dotted edge represents a control flow, a solid line edge represents data dependence, and a small circle in the node represents a conditional branch sentence. The MT7 loop (RB) indicates that MT and MFG can be defined hierarchically inside.

次に、マクロタスク間制御依存およびデータ依存より各マクロタスクが最も早く実行できる条件(最早実行可能条件)すなわちマクロタスク間の並列性を検出する。この並列性をグラフ表現したのが図3に示すマクロタスクグラフ(MTG)である。MTGでも、ノードはMT、実線のエッジがデータ依存、ノード内の小円が条件分岐文を表す。ただし、点線のエッジは拡張された制御依存を表し、矢印のついたエッジは元のMFGにおける分岐先、実線の円弧はAND関係、点線の円弧はOR関係を表している。例えば、MT6へのエッジは、MT2中の条件分岐がMT4の方向に分岐するか、MT3の実行が終了したとき、MT6が最も早く実行が可能になることを示している。   Next, the condition that each macrotask can be executed earliest than the control dependency between macrotasks and data dependency (early executable condition), that is, the parallelism between macrotasks is detected. A macrotask graph (MTG) shown in FIG. 3 expresses this parallelism in a graph. Even in MTG, a node is MT, a solid line edge is data-dependent, and a small circle in the node represents a conditional branch sentence. However, the dotted edge represents the extended control dependence, the edge with the arrow represents the branch destination in the original MFG, the solid arc represents the AND relationship, and the dotted arc represents the OR relationship. For example, the edge to MT6 indicates that MT6 can execute the earliest when the conditional branch in MT2 branches in the direction of MT4 or when the execution of MT3 ends.

そして、コンパイラは、MTG上のMTをプロセッサクラスタ(コンパイラあるいはユーザによりソフトウェア的に実現されるプロセッサのグループ)へコンパイル時に割り当てを行う(スタティックスケジューリング)か、実行時に割り当てを行うためのダイナミックスケジューリングコードを、ダイナミックCPアルゴリズムを用いて生成し、これをプログラム中に埋め込む。これは、従来のマルチプロセッサのようにOSあるいはライブラリに粗粒度タスクの生成、スケジューリングを依頼すると、数千から数万クロックのオーバヘッドが生じてしまう可能性があり、それを避けるためである。このダイナミックなスケジューリング時には、実行時までどのプロセッサでタスクが実行されるか分からないため、タスク間共有データは全プロセッサから等距離に見える集中共有メモリに割り当てられる。   Then, the compiler assigns MT on MTG to a processor cluster (a compiler or a group of processors realized by software by a user) at the time of compilation (static scheduling) or dynamic scheduling code for assigning at the time of execution. The dynamic CP algorithm is generated and embedded in the program. This is to avoid the overhead of several thousand to several tens of thousands of clocks when the OS or library is requested to generate and schedule coarse-grained tasks as in the conventional multiprocessor. During this dynamic scheduling, it is not known which processor will execute the task until the execution time, so the shared data between tasks is allocated to a centralized shared memory that appears equidistant from all the processors.

また、このスタティックスケジューリングおよびダイナミックスケジューリングコードの生成の時には、各プロセッサ上のローカルメモリあるいは分散共有メモリを有効に使用し、プロセッサ間のデータ転送量を最小化するためのデータローカライゼーション手法も用いられる。   In addition, when generating the static scheduling and dynamic scheduling code, a data localization method for effectively using the local memory or the distributed shared memory on each processor and minimizing the data transfer amount between the processors is also used.

データローカライゼーションは、MTG上でデータ依存のある複数の異なるループにわたりイタレーション間のデータ依存を解析し(インターループデータ依存解析)、データ転送が最小になるようにループとデータを分割(ループ整合分割)後、それらのループとデータが同一のプロセッサにスケジューリングされるように、コンパイル時にそれらのループを融合するタスク融合方式か、実行時に同一プロセッサへ割り当てられるようにコンパイラが指定するパーシャルスタティックスケジューリングアルゴリズムを用いてダイナミックスケジューリングコードを生成する。このデータローカライゼーション機能を用いて各ローカルメモリの有効利用を行うことができる。   Data localization analyzes data dependence between iterations over multiple different loops with data dependence on MTG (inter-loop data dependence analysis), and splits loops and data to minimize data transfer (loop-consistent division) ) Later, either a task fusion method that fuses these loops at compile time so that the loop and data are scheduled to the same processor, or a partial static scheduling algorithm that the compiler specifies to be assigned to the same processor at runtime To generate dynamic scheduling code. Using this data localization function, each local memory can be effectively used.

またこの際、データローカライゼーションによっても除去できなかったプロセッサ間のデータ転送を、データ転送とマクロタスク処理をオーバーラップして行うことにより、データ転送オーバヘッドを隠蔽しようとするプレロード・ポストストアスケジューリングアルゴリズムも使用される。このスケジューリングの結果に基づいて各プロセッサ上のデータ転送コントローラを利用したデータ転送が実現される。   At this time, preload / poststore scheduling algorithms that attempt to conceal the data transfer overhead by overlapping the data transfer and macrotask processing are also used for data transfer between processors that could not be removed by data localization. Is done. Based on the scheduling result, data transfer using the data transfer controller on each processor is realized.

[ループ並列処理(中粒度並列処理)]
マルチグレイン並列化では、マクロデータフロー処理によりプロセッサクラスタ(PC)に割り当てられるループ(RB)は、そのRBがDoallあるいはDoacrossループの場合、PC内のプロセッシングエレメント(PE)に対してイタレーションレベルで並列化処理(分割)される。
[Loop parallel processing (medium grain parallel processing)]
In multi-grain parallelization, a loop (RB) assigned to a processor cluster (PC) by macro data flow processing is an iteration level with respect to a processing element (PE) in the PC when the RB is a Doall or Doacross loop. Parallelized (divided).

ループストラクチャリングとしては、以下のような従来の技術をそのまま利用できる。
(a)ステートメントの実行順序の変更
(b)ループディストリビューション
(c)ノードスプリッティングスカラエクスパンション
(d)ループインターチェンジ
(e)ループアンローリング
(f)ストリップマイニング
(g)アレイプライベタイゼーション
(h)ユニモジュラー変換(ループリバーサル、パーミュテーション、スキューイング)
また、ループ並列化処理が適用できないループに関しては、図4のようにループボディ部を次に述べる(近)細粒度並列処理か、ボディ部を階層的にマクロタスクに分割しマクロデータフロー処理(粗粒度タスク並列処理)を適用する。
For loop structuring, the following conventional techniques can be used as they are.
(A) Statement execution order change (b) Loop distribution (c) Node splitting scalar expansion (d) Loop interchange (e) Loop unrolling (f) Strip mining (g) Array privateization (h) Unimodular Transformation (loop reversal, permutation, skewing)
For loops to which loop parallelization processing cannot be applied, the loop body part is described as follows (near) fine-grain parallel processing as shown in FIG. 4, or the body part is hierarchically divided into macro tasks and macro data flow processing ( Coarse grain task parallel processing) is applied.

[(近)細粒度並列処理]
PCに割り当てられるMTがBPAまたはループ並列化或いは階層的にマクロデータフロー処理を適用できないRB等の場合には、BPA内部のステートメント或いは命令を近細粒度タスクとしてPC内プロセッサで並列処理する。
[(Near) Fine Grain Parallel Processing]
When the MT assigned to the PC is BPA, loop parallelization, or RB that cannot apply the macro data flow processing hierarchically, a statement or instruction inside the BPA is processed in parallel by a processor in the PC as a near-fine-grain task.

マルチプロセッサシステム或いはシングルチップマルチプロセッサ上での近細粒度並列処理では、プロセッサ間の負荷バランスだけでなくプロセッサ間データ転送をも最少にするようにタスクをプロセッサにスケジューリングしなければ、効率よい並列処理は実現できない。さらに、この近細粒度並列処理で要求されるスケジューリングでは、図4のタスクグラフに示すように、タスク間にはデータ依存による実行順序の制約があるため強NP完全な非常に難しいスケジューリング問題となる。このグラフは、無サイクル有向グラフである。図中、各タスクは各ノードに対応している。ノード内の数字はタスク番号iを表し、ノードの脇の数字はプロセッシングエレメント上でのタスク処理時間tiを表す。また、ノードNiからNjに向けて引かれたエッジは、タスクTiがTjに先行するという半順序制約を表している。タスク間のデータ転送時間も考慮する場合、各々のエッジは一般に可変な重みを持つ。タスクTiとTjが異なるプロセッシングエレメントへ割り当てられた場合、この重みtijがデータ転送時間となる。図4においては、データ転送および同期に要する時間を9クロックと仮定している。逆にこれらのタスクが同一プロセッシングエレメントに割り当てられた場合、重みtijは0となる。   In near-fine-grain parallel processing on a multiprocessor system or single-chip multiprocessor, efficient parallel processing can be achieved if tasks are not scheduled to the processor to minimize not only the load balance between processors but also the data transfer between processors. Cannot be realized. Furthermore, in the scheduling required for this near-fine-grain parallel processing, as shown in the task graph of FIG. 4, there is a restriction of the execution order due to data dependence between tasks, which makes a strong NP complete and very difficult scheduling problem. . This graph is a non-cycle directed graph. In the figure, each task corresponds to each node. The number in the node represents the task number i, and the number beside the node represents the task processing time ti on the processing element. An edge drawn from the node Ni to Nj represents a partial order constraint that the task Ti precedes Tj. When considering the data transfer time between tasks, each edge generally has a variable weight. When tasks Ti and Tj are assigned to different processing elements, this weight tij becomes the data transfer time. In FIG. 4, it is assumed that the time required for data transfer and synchronization is 9 clocks. Conversely, when these tasks are assigned to the same processing element, the weight tij is zero.

このようにして生成されたタスクグラフを各プロセッサにスタティックにスケジューリングする。この際、スケジューリングアルゴリズムとして、データ転送オーバヘッドを考慮し実行時間を最小化するヒューリスティックアルゴリズム、例えばCP/DT/MISF法、CP/ETF/MISF法、ETF/CP法、あるいはDT/CP法の4手法を自動的に適用し最良のスケジュールを選ぶことができる。また、このようにタスクをスタティックにプロセッサに割り当てることにより、BPA内で用いられるデータのローカルメモリ、分散共有メモリ、レジスタへの配置等、データのメモリへの最適化やデータ転送・同期オーバヘッドの最小化といった各種の最適化が可能になる。   The task graph generated in this manner is statically scheduled to each processor. At this time, as a scheduling algorithm, a heuristic algorithm that minimizes execution time in consideration of data transfer overhead, for example, four methods of CP / DT / MISF method, CP / ETF / MISF method, ETF / CP method, or DT / CP method Can be applied automatically to choose the best schedule. In addition, by assigning tasks to processors in this way, the optimization of data in memory such as local memory, distributed shared memory, and register allocation of data used in BPA, and minimum data transfer / synchronization overhead Various optimizations such as optimization are possible.

スケジューリング後、コンパイラはプロセッシングエレメントに割り当てられたタスクの命令列を順番に並べ、データ転送命令や同期命令を必要な箇所に挿入することにより、各プロセッサ用のマシンコードを生成する。近細粒度タスク間の同期にはバージョンナンバー法を用い、同期フラグの受信は受信側プロセッシングエレメントのビジーウェイトによって行われる。ここで、データ転送および同期フラグのセットは、送信側のプロセッサが受信側のプロセッサ上の分散共有メモリに直接書き込むことにより低オーバヘッドで行うことができる。   After scheduling, the compiler arranges the instruction sequences of tasks assigned to the processing elements in order, and inserts data transfer instructions and synchronization instructions at necessary locations, thereby generating machine code for each processor. The version number method is used for synchronization between near-fine-grain tasks, and the synchronization flag is received by the busy wait of the receiving processing element. Here, the data transfer and the setting of the synchronization flag can be performed with low overhead by the transmitting processor directly writing to the distributed shared memory on the receiving processor.

マシンコード生成時、コンパイラはスタティックスケジューリングの情報を用いたコード最適化を行うことができる。例えば、同一データを使用する異なるタスクが同一プロセッシングエレメントに割り当てられたとき、レジスタを介してそのデータを受け渡しすることができる。また、同期のオーバヘッドを最小化するため、タスクの割り当て状況や実行順序から、冗長な同期を除去することもできる。特に、シングルチップマルチプロセッサでは、コード生成時に厳密なコード実行スケジューリングを行うことにより、実行時のデータ転送タイミングを含めたすべての命令実行をコンパイラが制御し、すべての同期コードを除去して並列実行を可能とする無同期並列化のような究極的な最適化も行える。   When generating machine code, the compiler can perform code optimization using static scheduling information. For example, when different tasks using the same data are assigned to the same processing element, the data can be passed through a register. Further, in order to minimize synchronization overhead, redundant synchronization can be removed from the task assignment status and execution order. In particular, in single-chip multiprocessors, strict code execution scheduling is performed during code generation, so that the compiler controls all instruction execution including data transfer timing during execution, and all synchronous code is removed to execute in parallel. Ultimate optimization such as asynchronous parallelization that enables

上述のようなマルチグレイン並列処理をマルチプロセッサシステム上で実現するため、一例として、シングルチップマルチプロセッサ(SCM)10は図1に示すようなアーキテクチャを有する。   In order to realize the multigrain parallel processing as described above on a multiprocessor system, as an example, a single chip multiprocessor (SCM) 10 has an architecture as shown in FIG.

図1において示したアーキテクチャにおいては、CPU20に加えて、分散共有メモリ(DSM:distributed shared memory)22とアジャスタブルプリフェッチ命令キャッシュ24が各SCM10に設けられている。ここで用いられるCPU20は、特に限定されず、整数演算や浮動小数点演算が可能なものであればよい。例えば、ロード/ストアアーキテクチャのシンプルなシングルイッシューRISCアーキテクチャのCPUを用いることができるほか、スーパースカラプロセッサ、VLIWプロセッサなども用いることができる。分散共有メモリ22は、デュアルポートメモリで構成されており、他のプロセッシングエレメントからも直接リード/ライトができるようになっており、上に説明した近細粒度タスク間のデータ転送に使用する。   In the architecture shown in FIG. 1, in addition to the CPU 20, a distributed shared memory (DSM) 22 and an adjustable prefetch instruction cache 24 are provided in each SCM 10. The CPU 20 used here is not particularly limited as long as it can perform integer arithmetic and floating point arithmetic. For example, a simple single issue RISC architecture CPU having a load / store architecture can be used, and a superscalar processor, a VLIW processor, or the like can also be used. The distributed shared memory 22 is composed of a dual port memory, and can be directly read / written from other processing elements, and is used for data transfer between near-fine-grain tasks described above.

アジャスタブルプリフェッチ命令キャッシュ24は、コンパイラあるいはユーザからの指示で、将来実行すべき命令をメモリあるいは低レベルキャッシュからプリフェッチするものである。このアジャスタブルプリフェッチ命令キャッシュ24は、複数ウェイのセットアソシアティブキャッシュにおいて、コンパイラ等のソフトから指示される、あるいはハードにより事前に決められたウェイに、将来実行されるライン(命令列)をフェッチできるようにするものである。その際、フェッチの単位としては、複数ラインの連続転送指示も行える。アジャスタブルプリフェッチ命令キャッシュ24は、命令キャッシュへのミスヒットを最小化させ、命令実行の高速化を可能にするコンパイラによる調整および制御を可能にするキャッシュシステムである。   The adjustable prefetch instruction cache 24 prefetches an instruction to be executed in the future from a memory or a low level cache in accordance with an instruction from a compiler or a user. This adjustable prefetch instruction cache 24 is a multi-way set associative cache that can fetch a line (instruction string) to be executed in the future in a way designated by software such as a compiler or predetermined by hardware. To do. At that time, as a fetch unit, a continuous transfer instruction of a plurality of lines can also be given. The adjustable prefetch instruction cache 24 is a cache system that enables adjustment and control by a compiler that minimizes miss hits to the instruction cache and enables high-speed instruction execution.

すなわち、このアジャスタブルプリフェッチ命令キャッシュ24は、すべてのプログラム(命令列)がメモリサイズより小さいことを仮定しているローカルプログラムメモリとは異なり、大きなプログラムにも対応することができ、プログラムの特徴に応じ、プリフェッチをしない通常のキャッシュとしても使用できるし、逆にすべてコンパイラ制御によるプリフェッチキャッシュとして使え、ミスヒットのない(ノーミスヒット)キャッシュとして使用できるものである。   In other words, this adjustable prefetch instruction cache 24 can be adapted to a large program, unlike a local program memory that assumes that all programs (instruction sequences) are smaller than the memory size. It can be used as a normal cache without prefetching, or conversely, can be used as a prefetch cache under compiler control, and can be used as a cache with no miss (no miss).

このようなアジャスタブルプリフェッチ命令キャッシュの構造の一例を図5に示す。図5に示されたnウェイのセットアソシエイティブキャッシュにおいては、コンパイラあるいはユーザがプログラムに応じて指定するjウェイをプリフェッチ(事前読み出し)するエリアとして使用できるものである。コンパイラにより挿入されたプリフェッチ命令(ラインごとではなく複数ラインのプリフェッチも可能)により、命令実行の前に必要な命令が命令キャッシュ上に存在することを可能とし、高速化が実現できる。プロセッシングエレメントは、nウェイすべてを通常のキャッシュと同様に読み出すことができる。ラインのリプレースは通常のLRU(least recently used)法で行われる。そして、各セット(集合)中のウェイには、通常、自由に転送されたラインを格納できるが、プリフェッチ用に指定されたウェイにはプリフェッチ命令によってCSMから転送されたラインのみ格納される。それ以外のウェイは通常のキャッシュと同様にラインを割り当てられる。プリフェッチキャッシュコントローラは、コンパイラからの指示により、命令をCSMからプリフェッチする。このときの転送の単位は、1ラインから複数ラインである。コンパイラがjウェイ分のプリフェッチエリアを指定し、それ以外の(n−j)ウェイ分のエリアは通常のキャッシュとして使用される。   An example of the structure of such an adjustable prefetch instruction cache is shown in FIG. The n-way set associative cache shown in FIG. 5 can be used as an area for prefetching (pre-reading) the j-way designated by the compiler or the user according to the program. The prefetch instruction inserted by the compiler (prefetching of a plurality of lines instead of each line is possible) enables necessary instructions to be present on the instruction cache before the instruction is executed, thereby realizing high speed. The processing element can read all n ways in the same way as a normal cache. The replacement of the line is performed by a normal LRU (least recently used) method. A way in each set (aggregation) can normally store freely transferred lines, but a way designated for prefetch stores only lines transferred from the CSM by a prefetch instruction. The other ways are assigned lines in the same way as a normal cache. The prefetch cache controller prefetches instructions from the CSM according to instructions from the compiler. The unit of transfer at this time is from one line to a plurality of lines. The compiler designates a prefetch area for j ways, and the other (n−j) way areas are used as a normal cache.

さらに、図1のアーキテクチャにおいては、ローカルデータメモリ(LDM)26が設けられている。このローカルデータメモリ26は、各プロセッシングエレメント16内だけでアクセスできるメモリであり、データローカライゼーション技術などにより、各プロセッシングエレメント16に割り当てられたタスク間で使用されるローカルデータを保持するために使用される。また、このローカルデータメモリ26は、対象とするアプリケーションプログラムに対しコンパイラあるいはユーザがデータのローカルメモリへの分割配置が可能な場合には、ローカルメモリとして使用され、ローカルメモリを有効に使用できない場合には、レベル1キャッシュ(Dキャッシュ)に切り替えて使用できるようにすることが好ましい。また、ゲーム機等のリアルタイム応用に専ら用いられるような場合には、ローカルメモリだけとして設計することも可能である。基本的に各プロセッシングエレメント内で使用されるメモリであるため、共有メモリに比べチップ面積を消費しないので、相対的に大きな容量をとれるものである。   Further, in the architecture of FIG. 1, a local data memory (LDM) 26 is provided. The local data memory 26 is a memory that can be accessed only within each processing element 16 and is used to hold local data used between tasks assigned to each processing element 16 by a data localization technique or the like. . The local data memory 26 is used as a local memory when the compiler or the user can divide the data into the local memory for the target application program, and when the local memory cannot be used effectively. Is preferably switched to a level 1 cache (D cache). In addition, when used exclusively for real-time applications such as game machines, it is also possible to design as a local memory only. Since the memory is basically used in each processing element, the chip area is not consumed as compared with the shared memory, so that a relatively large capacity can be obtained.

粗粒度並列処理では、条件分岐に対処するためにダイナミックスケジューリングが使用される。この場合、マクロタスクがどのプロセッサで実行されるかは、コンパイル時には分からない。したがって、ダイナミックにスケジューリングされるマクロタスク間の共有データは、集中共有メモリ(CSM:centralized shared memory)に配置できることが好ましい。そのため、本実施形態においては、各プロセッシングエレメント16が共有するデータを格納する集中共有メモリ28を各SCM内に設けるほか、さらに、チップ間接続ネットワーク12につながれた集中共有メモリ14を設けている。このチップ内の集中共有メモリ28は、チップ10内のすべてのプロセッシングエレメント16から、そして複数チップの構成では他のチップ上のプロセッシングエレメントからも共有されるデータを保存するメモリである。チップ外の集中共有メモリ14も同様に各プロセッシングエレメントにより共有されるメモリである。したがって、実際の設計上、集中共有メモリ28、14は、物理的に各チップに分散されているが、論理的にはどのプロセッシングエレメントからも等しく共有することができるものである。すべてのプロセッシングエレメントから等距離に見えるようにインプリメントすることもできるし、自チップ内のプロセッシングエレメントからは近く見えるようにインプリメントすることをも可能である。   In coarse grain parallel processing, dynamic scheduling is used to deal with conditional branches. In this case, it is not known at the time of compilation which processor the macrotask is executed on. Therefore, it is preferable that shared data between dynamically scheduled macrotasks can be placed in a centralized shared memory (CSM). Therefore, in this embodiment, a centralized shared memory 28 for storing data shared by the processing elements 16 is provided in each SCM, and a centralized shared memory 14 connected to the inter-chip connection network 12 is further provided. This centralized shared memory 28 in the chip is a memory for storing data shared by all the processing elements 16 in the chip 10 and also by processing elements on other chips in a multi-chip configuration. Similarly, the central shared memory 14 outside the chip is a memory shared by the processing elements. Therefore, in the actual design, the centralized shared memories 28 and 14 are physically distributed in each chip, but logically can be shared equally from any processing element. It can be implemented so that all processing elements appear equidistant, or it can be implemented so that it appears close to the processing elements in its own chip.

単一のSCMチップからなるシステムでは、チップ内のプロセッシングエレメント(PE)16間で共有される等距離の共有メモリとしてこの集中共有メモリ28を用いることができる。また、コンパイラの最適化が困難である場合には、L2キャッシュとして使用することができる。このメモリ28,14には、ダイナミックタスクスケジューリング時にタスク間で共有されるデータを主に格納する。また、別のチップとなった集中共有メモリ14は、SCMチップ10内の集中共有メモリ28の容量が足りない場合、必要に応じて、メモリのみからなる大容量集中共有メモリチップを任意の数接続することができる。   In a system composed of a single SCM chip, this centralized shared memory 28 can be used as an equidistance shared memory shared between processing elements (PE) 16 in the chip. If optimization of the compiler is difficult, it can be used as an L2 cache. The memories 28 and 14 mainly store data shared between tasks during dynamic task scheduling. In addition, if the capacity of the centralized shared memory 28 in the SCM chip 10 is insufficient, the centralized shared memory 14 that is a separate chip can be connected to an arbitrary number of large-capacity centralized shared memory chips that include only the memory as necessary. can do.

また、粒度によらずスタティックスケジューリングが適用できる場合には、あるマクロタスクが定義する共有データをどのプロセッサが必要とするかはコンパイル時に分かるため、生産側のプロセッサが消費側のプロセッサの分散共有メモリにデータと同期用のフラグを直接書き込めることが好ましい。   In addition, when static scheduling can be applied regardless of the granularity, it is possible to know which processor needs shared data defined by a macrotask at compile time, so that the processor on the production side distributes the shared shared memory of the processor on the consumption side. It is preferable to directly write data and a synchronization flag.

データ転送コントローラ(DTC)30は、コンパイラあるいはユーザの指示により自プロセッシングエレメント上のDSM22や、自あるいは他のSCM10内のCSM28、あるいは他のプロセッシングエレメント上のDSMとの間でデータ転送を行う。複数のSCMからなる構成を採用する場合には、他のSCM上のCSMやDSMとの間でのデータ転送、あるいは、独立したCSMとの間でのデータ転送を行う。   The data transfer controller (DTC) 30 performs data transfer between the DSM 22 on its own processing element, the CSM 28 in itself or another SCM 10, or the DSM on another processing element, according to a compiler or user instruction. When adopting a configuration composed of a plurality of SCMs, data transfer with CSMs and DSMs on other SCMs or data transfer with independent CSMs is performed.

図1におけるローカルデータメモリ26とデータ転送コントローラ30との間の点線は、用途に応じて、データ転送コントローラ30がローカルデータメモリ(Dキャッシュ)26にアクセスできる構成をとってもよいことを表している。このような場合、ローカルデータメモリ26を介してCPU20が転送指示をデータ転送コントローラ30に与えたり、転送終了のチェックを行う構成をとることができる。   The dotted line between the local data memory 26 and the data transfer controller 30 in FIG. 1 indicates that the data transfer controller 30 may be able to access the local data memory (D cache) 26 depending on the application. In such a case, it can be configured that the CPU 20 gives a transfer instruction to the data transfer controller 30 via the local data memory 26 or checks the end of the transfer.

データ転送コントローラ30へのデータ転送の指示は、ローカルデータメモリ26、DSM22、あるいは専用のバッファ(図示しない)を介して行い、データ転送コントローラ30からCPU20へのデータ転送終了の報告は、ローカルメモリ、DSMあるいは専用のバッファを介して行う。このとき、どれを使うかはプロセッサの用途に応じプロセッサ設計時に決めるかあるいはハード的に複数の方法を用意し、プログラムの特性に応じコンパイラあるいはユーザがソフト的に使い分けられるようにする。   The data transfer instruction to the data transfer controller 30 is made via the local data memory 26, the DSM 22, or a dedicated buffer (not shown), and the end of data transfer from the data transfer controller 30 to the CPU 20 is reported to the local memory, This is done through DSM or a dedicated buffer. At this time, which one is used is determined at the time of designing the processor according to the use of the processor, or a plurality of hardware methods are prepared so that the compiler or the user can use the software properly according to the characteristics of the program.

データ転送コントローラ30へのデータ転送指示(例えば何番地から内バイトのデータをどこにストアし、またロードするか、データ転送のモード(連続データ転送、ストライド、ストライド・ストライド転送など)など)は、コンパイラが、データ転送命令をメモリあるいは専用バッファに格納しておき、実行時にはどのデータ転送命令を実行するかの指示のみを出すようにして、データ転送コントローラ20の駆動のためのオーバヘッドを削減することが好ましい。   The data transfer instruction to the data transfer controller 30 (for example, from where to store and load the internal byte data, the data transfer mode (continuous data transfer, stride, stride / stride transfer, etc.), etc.) However, it is possible to reduce the overhead for driving the data transfer controller 20 by storing the data transfer instruction in a memory or a dedicated buffer and issuing only an instruction on which data transfer instruction is executed at the time of execution. preferable.

各SCMチップ10内のプロセッシングエレメント16の間の接続は、各プロセッシングエレメントに設けられたネットワークインタフェース32を介して、チップ内接続ネットワーク(マルチバス、クロスバーなどからなる)34によって達成されており、このチップ内接続ネットワーク34を介して、プロセッシングエレメントが共通の集中共有メモリ28に接続される。集中共有メモリ28は、チップの外にあるチップ間接続ネットワーク12に接続している。このチップ間接続ネットワークは、クロスバーネットワークあるいはバス(複数バスも含む)が特に好ましいが、多段結合網等でもかまわず、予算、SCMの数、アプリケーションの特性に応じて選ぶことができるものである。また、このチップ内接続ネットワーク34を介さずに、外部のチップ間接続ネットワーク12とネットワークインタフェース32を接続することも可能であり、このような構成は、システム中の全プロセッシングエレメントが平等に各チップ上に分散された集中共有メモリ、分散共有メモリにアクセスすることを可能にするほか、チップ間でのデータ転送が多い場合には、この直結パスを設けることにより、システム全体のデータ転送能力を大幅に高めることができる。   The connection between the processing elements 16 in each SCM chip 10 is achieved by an in-chip connection network (consisting of a multibus, a crossbar, etc.) 34 via a network interface 32 provided in each processing element. Processing elements are connected to a common centralized shared memory 28 via the intra-chip connection network 34. The centralized shared memory 28 is connected to the inter-chip connection network 12 outside the chip. The inter-chip connection network is particularly preferably a crossbar network or a bus (including a plurality of buses), but may be a multi-stage connection network or the like, and can be selected according to the budget, the number of SCMs, and application characteristics. . Further, it is possible to connect the external inter-chip connection network 12 and the network interface 32 without going through the intra-chip connection network 34. With such a configuration, all the processing elements in the system are equally connected to each chip. In addition to making it possible to access the centralized shared memory and distributed shared memory distributed above, if there is a lot of data transfer between chips, providing this direct connection path greatly increases the data transfer capacity of the entire system. Can be increased.

グローバルレジスタファイル36は、マルチポートレジスタであり、チップ内のプロセッシングエレメントにより共有されるレジスタである。たとえば、近細粒度タスク(分散共有メモリを用いた場合など)のデータ転送および同期に使用することができる。このグローバルレジスタファイルは、プロセッサの用途に応じて、省略することも可能なものである。   The global register file 36 is a multi-port register, and is a register shared by processing elements in the chip. For example, it can be used for data transfer and synchronization of near fine-grain tasks (such as when using distributed shared memory). This global register file can be omitted depending on the use of the processor.

図1において、点線は、通信線を必要に応じて用意できることを意味しており、コストあるいはピン数などを考えて不必要あるいは困難な場合には、点線の接続はなくても動作することを示すものである。   In FIG. 1, a dotted line means that a communication line can be prepared as needed, and if it is unnecessary or difficult considering the cost or the number of pins, it can be operated without a dotted line connection. It is shown.

以上のように、特定の実施の形態に基づいて本発明を説明してきたが、本発明の技術的範囲はこのような実施の形態に限定されるものではなく、当業者にとって容易な種々の変形を含むものである。   As described above, the present invention has been described based on specific embodiments. However, the technical scope of the present invention is not limited to such embodiments, and various modifications that are easy for those skilled in the art can be made. Is included.

本発明の1実施形態であるマルチグレイン並列処理用システムを示すブロックダイアグラムである。It is a block diagram which shows the system for multi-grain parallel processing which is one Embodiment of this invention. 本発明において用いることができるコンパイラにおける粗粒度並列処理のためのマクロフローグラフの一例を示すグラフである。It is a graph which shows an example of the macro flow graph for the coarse grain parallel processing in the compiler which can be used in this invention. 本発明において用いることができるコンパイラにおける粗粒度並列処理のためのマクロタスクグラフの一例を示すグラフである。It is a graph which shows an example of the macrotask graph for the coarse grain parallel processing in the compiler which can be used in this invention. 本発明において用いることができるコンパイラにおける近細粒度並列処理のための近細粒度タスクグラフの一例を示すグラフである。It is a graph which shows an example of the near fine grain task graph for the near fine grain parallel processing in the compiler which can be used in this invention. 本発明において用いることができるアジャスタブルプリフェッチ命令キャッシュの構成を示すブロックダイアグラムである。It is a block diagram which shows the structure of the adjustable prefetch instruction cache which can be used in this invention.

符号の説明Explanation of symbols

10 シングルチップマルチプロセッサ
12 チップ間接続ネットワーク
14 集中共有メモリ(チップ)
16 プロセッシングエレメント
20 CPU
22 分散共有メモリ
24 アジャスタブルプリフェッチ命令キャッシュ
26 ローカルデータメモリ
28 集中共有メモリ
30 データ転送コントローラ
32 ネットワークインタフェース
34 チップ内接続ネットワーク
10 Single-chip multiprocessor 12 Inter-chip connection network 14 Centralized shared memory (chip)
16 Processing element 20 CPU
22 Distributed Shared Memory 24 Adjustable Prefetch Instruction Cache 26 Local Data Memory 28 Centralized Shared Memory 30 Data Transfer Controller 32 Network Interface 34 Intra-Chip Connection Network

Claims (4)

CPUと、前記CPUに接続されているネットワークインタフェースと、データを格納する分散共有メモリと、当該プロセッシングエレメントだけからアクセス可能なローカルデータメモリと、前記分散共有メモリの一つのポートに接続されるデータ転送コントローラと、を備える複数のプロセッシングエレメントと、
前記各プロセッシングエレメントに接続され、前記各プロセッシングエレメントによって共有される集中共有メモリと、を備えるマルチプロセッサであって、
前記マルチプロセッサ用のコンパイラが、前記データ転送コントローラへのデータ転送命令をコンパイル時に生成し、前記コンパイルされたプログラムの実行前に前記ローカルデータメモリに格納し、
前記CPUは、前記コンパイルされたプログラムの実行時に、実行すべきデータ転送命令を指示し、
前記データ転送コントローラは、実行するデータ転送命令の指示を受け、前記受けた指示に従って前記ローカルデータメモリからデータ転送命令を読み出し、前記読み出したデータ転送命令に従って、前記分散共有メモリからデータを読み出して、前記データの消費先のプロセッシングエレメントの分散共有メモリへ転送することを特徴とするマルチプロセッサ。
CPU, network interface connected to the CPU, distributed shared memory for storing data, local data memory accessible only from the processing element, and data transfer connected to one port of the distributed shared memory A plurality of processing elements comprising a controller;
A multi-processor comprising: a centralized shared memory connected to each processing element and shared by each processing element;
The multiprocessor compiler generates a data transfer instruction to the data transfer controller at the time of compilation, and stores it in the local data memory before executing the compiled program,
The CPU instructs a data transfer instruction to be executed when the compiled program is executed,
The data transfer controller receives an instruction of a data transfer instruction to be executed, reads a data transfer instruction from the local data memory according to the received instruction, reads data from the distributed shared memory according to the read data transfer instruction , A multiprocessor, wherein the data is transferred to a distributed shared memory of a processing element that consumes the data .
前記分散共有メモリは、デュアルポートメモリで構成され、
前記分散共有メモリの一つのポートには、前記データ転送コントローラが接続され、
前記分散共有メモリの他のポートには、前記CPUが接続されることを特徴とする請求項1に記載のマルチプロセッサ。
The distributed shared memory is composed of a dual port memory,
The data transfer controller is connected to one port of the distributed shared memory,
The multiprocessor according to claim 1, wherein the CPU is connected to another port of the distributed shared memory.
前記ローカルデータメモリは、デュアルポートメモリで構成され、
前記ローカルデータメモリの一つのポートには、前記データ転送コントローラが接続され、
前記ローカルデータメモリの他のポートには、前記CPUが接続されることを特徴とする請求項1又は2に記載のマルチプロセッサ。
The local data memory is a dual port memory,
The data transfer controller is connected to one port of the local data memory,
The multiprocessor according to claim 1, wherein the CPU is connected to another port of the local data memory.
前記データ転送コントローラは、前記読み出されたデータ転送命令によるデータ転送の終了を前記ローカルデータメモリを介して前記CPUに通知することを特徴とする請求項1から3のいずれか一つに記載のマルチプロセッサ。 The data transfer controller notifies the CPU of the end of data transfer by the read data transfer instruction to the CPU via the local data memory . Multiprocessor.
JP2008090853A 2008-03-31 2008-03-31 Multiprocessor and multiprocessor system Expired - Lifetime JP4784842B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008090853A JP4784842B2 (en) 2008-03-31 2008-03-31 Multiprocessor and multiprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008090853A JP4784842B2 (en) 2008-03-31 2008-03-31 Multiprocessor and multiprocessor system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP36370299A Division JP4784792B2 (en) 1999-12-22 1999-12-22 Multiprocessor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008118007A Division JP4304347B2 (en) 2008-04-30 2008-04-30 Multiprocessor

Publications (3)

Publication Number Publication Date
JP2008181558A JP2008181558A (en) 2008-08-07
JP2008181558A5 JP2008181558A5 (en) 2008-10-09
JP4784842B2 true JP4784842B2 (en) 2011-10-05

Family

ID=39725341

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008090853A Expired - Lifetime JP4784842B2 (en) 2008-03-31 2008-03-31 Multiprocessor and multiprocessor system

Country Status (1)

Country Link
JP (1) JP4784842B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015038646A (en) * 2010-11-30 2015-02-26 株式会社東芝 Information processing apparatus and information processing method
KR102082859B1 (en) 2013-01-07 2020-02-28 삼성전자주식회사 System on chip including a plurality of heterogeneous cores and operating method therof
JP6018022B2 (en) 2013-06-14 2016-11-02 株式会社デンソー Parallel compilation method, parallel compiler, parallel compilation device, and in-vehicle device

Also Published As

Publication number Publication date
JP2008181558A (en) 2008-08-07

Similar Documents

Publication Publication Date Title
Etsion et al. Task superscalar: An out-of-order task pipeline
JP5224498B2 (en) MEMORY MANAGEMENT METHOD, INFORMATION PROCESSING DEVICE, PROGRAM CREATION METHOD, AND PROGRAM
Burger et al. Scaling to the end of silicon with EDGE architectures
Krashinsky et al. The vector-thread architecture
US7490218B2 (en) Building a wavecache
US6978389B2 (en) Variable clocking in an embedded symmetric multiprocessor system
US20170083338A1 (en) Prefetching associated with predicated load instructions
US20170083339A1 (en) Prefetching associated with predicated store instructions
Sohi et al. Speculative multithreaded processors
JP4784792B2 (en) Multiprocessor
JP2016192153A (en) Juxtaposed compilation method, juxtaposed compiler, and on-vehicle device
JP4304347B2 (en) Multiprocessor
Bousias et al. Instruction level parallelism through microthreading—a scalable approach to chip multiprocessors
JP4784842B2 (en) Multiprocessor and multiprocessor system
Owaida et al. Massively parallel programming models used as hardware description languages: The OpenCL case
Etsion et al. Task superscalar: Using processors as functional units
Šilc et al. A survey of new research directions in microprocessors
JP2009230764A (en) Multiprocessor system
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
Ding Exploiting Hardware Abstraction for Parallel Programming Framework: Platform and Multitasking
Hammond Hydra: a chip multiprocessor with support for speculative thread-level parallelization

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080430

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080430

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20080430

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080611

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080821

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

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090407

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090706

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090721

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090904

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

R150 Certificate of patent or registration of utility model

Ref document number: 4784842

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

Year of fee payment: 3

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