WO2006109887A1 - マルチプロセッサシステム及びマルチグレイン並列化コンパイラ - Google Patents

マルチプロセッサシステム及びマルチグレイン並列化コンパイラ Download PDF

Info

Publication number
WO2006109887A1
WO2006109887A1 PCT/JP2006/308161 JP2006308161W WO2006109887A1 WO 2006109887 A1 WO2006109887 A1 WO 2006109887A1 JP 2006308161 W JP2006308161 W JP 2006308161W WO 2006109887 A1 WO2006109887 A1 WO 2006109887A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
processor unit
compiler
processor
code
Prior art date
Application number
PCT/JP2006/308161
Other languages
English (en)
French (fr)
Inventor
Hironori Kasahara
Keiji Kimura
Jun Shirako
Masaki Ito
Hiroaki Shikano
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 EP06732068A priority Critical patent/EP1870792A4/en
Priority to EP13176745.1A priority patent/EP2657839B1/en
Publication of WO2006109887A1 publication Critical patent/WO2006109887A1/ja
Priority to US12/654,956 priority patent/US8812880B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the conventional multiprocessor system is a homogeneous processor system in which a plurality of PUs having the same configuration are mounted as disclosed in the above-mentioned Japanese Patent Laid-Open No. 2000-025 2 7 28.
  • the present invention automatically extracts a task having parallelism from an input program to be processed 3 ⁇ 4 ⁇ in a multiprocessor system equipped with various kinds of PUs, and executes the task according to the characteristics of each PU.
  • the PU By placing the PU, the PU can be moved efficiently, and the processing frequency of the PU can also be estimated; the operating frequency can be increased; the code to be hatched can be added to the target program and the compiler can be: The purpose of this is to establish a MANO processor system.
  • FIG. 10 c illustrates local memory FV control, and is an explanatory diagram illustrating an example in which FV control is performed for each address space set in a plurality of banks.
  • FIG. 16 is an explanatory diagram showing a memory map of the entire multiprocessor system showing the FV control register bubbling.
  • Figure 18a is a macrotask graph showing the dependency of FV control on parallel processing of tasks and showing the parallel dependency of macrotasks.
  • FIG. 6 shows an example of the configuration of the Kuttano Node Selector (CLKSEL) 214.
  • the CLKSEL 214 includes a decoding unit 2171 for the input control signal CKCL and a clock signal selection unit 2172.
  • Each PU is specified by multiple clocks by controlling the DCSEL 214 via the control line (CKCL) 215 according to the mode of the FV control register that the PU has.
  • FL power S job the supply of the clock FL 216.
  • the local memory LM has a bank configuration, and FV control is performed for each bank (BankO ⁇ : Bank 3). For this reason, each bank 0 to 3 is connected to a «3 ⁇ 4 ⁇ 1-select circuit (VD SEL) 203 force S.
  • VD SEL 1-select circuit
  • each bank (B Ank 0 to 3) FV control is performed in units divided by a fixed address space (Areal to Area4).
  • VD SEL SE selection circuits
  • FIG. 10c is applied to the memory SM18 instead of the local memory LM, and is a unit divided by a fixed address space (Areal ⁇ Area4) across each bank (Bank0 ⁇ 3); It is also possible to perform FV control ( « ⁇ control). Note that Figure 10a to Figure 10c are applied to Memory SM 18 ⁇ Assume that LMJ is read as “SM”.
  • Figure 18a is a macrotask graph showing the parallel execution dependency between tasks. This graph shows that macrotask MT1 (301) and macrotask MT2 (302) can be entered simultaneously, and macrotask MT3 (303) finishes executing macrotask MT1 (301) and TVIT 2 (302). Later we show that it can be done.
  • the macro task MT1 is allocated to PU10 (CPU0)
  • the macrotask MT2 is allocated to PU12 (BMP0) 12
  • the macrotask MT3 is allocated to PU10 (CPU0).
  • FIG. 18b shows a processing Gantt chart when the macrotask scheduled as described above is processed normally ( «! ⁇ frequency 3 ⁇ 4 ⁇ no control).
  • Mac mouth tasks MT 1 and MT 2 can be paralleled, so MT 1 is processed by CPU (CPU0) (305) and MT2 is processed by BMP (BMP0) (306). Is done.
  • CPU CPU0
  • BMP0 BMP0
  • both the CPU and BMP are supplied miB or normal VD
  • the operating frequency is normal FC.
  • the number of processing cycles for macro task MT1 in the CPU is smaller than the number of cycles for macro task MT 2 in BMP, so processing of macro task MT1 in CPU (305) Force processing of MT2 in BMP (306 ) (Go ahead and exit.)
  • the macro task MT1 processing by the CPU is terminated prior to the macro task MT2 (306) in the BMP.
  • the CPU is put in a standby state (OFF), and the BMP is in the macro task MT 2.
  • (306) is completed, the CPU is returned to the normal state by supplying the normal fl ⁇ flffi and the clock to the normal clock, and processing (307) of the macro task MT3 is started.
  • the operation stops without idling the CPU, so that the consumption ⁇ can be reduced.
  • the compiler when compiling a program (task), the compiler will give advance processing time based on the PU configuration! The process that can be statically determined at the time of compilation is determined in advance, and the operating frequency and performance of each PU are finely managed so that the performance of the multiprocessor system is not impaired. This makes it possible to change
  • Figure 19b shows the Gantt chart when FV control is applied by this method.
  • the compiler sets the operating frequency at which the processing can be completed by the processing deadline, and determines the CPU FV control mode to “LOWj mode” as shown in the figure.
  • the supply «EVL can also be reduced and consumed. Can be optimized.
  • Fig. 21 shows an example of the above input program (source program 400).
  • the processing cost ⁇ f is obtained to obtain the processing cycle required when the above macro task ⁇ is saved in each PU (4 0 4).
  • the processing cost table 4 20 As a method for measuring the processing cost (calculation cost), for example, for the CPU, the number of cycles required at the instruction level such as multiplication and addition is stored in the processing cost table 4 20 as profiling information. By referring to the table 4 20, it is possible to obtain the number of sequential processing cycles when the macro task ⁇ is obtained by the PU.
  • the accuracy is improved by profiling once with a low-powered compiler.
  • Processing cost can also be calculated. If the macro task MT includes ⁇ without performing this profiling, the cost is calculated with a probability of 50%. Similarly, profiling is not performed and the size of the array is not fixed. For example, the fixed number of times is set to the maximum number when the array is declared, and the method is applied.
  • a cost as the number of processing cycles (time), but by defining the cost as ⁇ , it is possible to perform scheduling that minimizes. For example, based on the processing cycle number and the processing limit to complete the macro task MT, select the operation mode that can be set to the minimum consumption 3 ⁇ 4 ⁇ within the processing limit from among the settable FV control modes 01 wave number and operation «E) . Or? The consumption 3 ⁇ 43 ⁇ 4 of 1;
  • the macro task MT 1-2 has a parallel jll ⁇ relationship established before the new task, and can schedule tasks in a fixed (static) manner.
  • the compiler 40 refers to the macro task graph MTG tape No. 421 generated by ⁇ , and performs processor grouping according to the shape and parallelism of the macro task graph or as specified by the user ( 406).
  • the macrotask ⁇ of the upper layer expressed in the macrotask graph MTG for example, the macrotask ⁇ 1-2 (502), MT1-3 (503) shape and parallelism are entered, and the corresponding macro task ⁇ is processed.
  • One group includes at least one general-purpose processor (CPU) for controlling the special purpose processors (DSP, DRP, BMP) in the group.
  • the compiler 40 performs gunto pig jigging including a special-purpose processor, at an age at which an appropriate processor PU group configuration can be determined at the time of compiling based on the configuration of the macro task graph MTG.
  • the macro task graph MTG configuration does not allow processor grouping at compile time. In other words, the number of tasks that should be used by the processor is multi-layered. Sometimes a processor that acts as a scheduler assigns a task to a special-purpose processor group. At this time, if the load on the special-purpose processor is large, the general-purpose processor performs frT processing. Note that the determined ⁇ ⁇ bing information is the processor gno! ⁇ Bing tape, Nore 422, is lifted to the external storage, and is crushed in the latter stage.
  • the configuration of the special-purpose processor required by each processor group is determined.
  • This H3 ⁇ 4 form Since the required processor configuration can be realized with the resources available on the macro task graph MTG1, the processor groups are CPU0, DSP0, DRP0, DR Pl, and CPU1, DSP1, BMP0, BMP1. Determine at compile time.
  • the compiler 40 generates a scheduling program that performs control according to the situation such as
  • the advantage that the compiler 40 generates a scheduling program (scheduling code) is that it can be connected to the OS or library like a conventional multiprocessor; ⁇ of tasks, and thousands of clocks when scheduling ; ⁇ To avoid bar heads that could be created.
  • processor grouping table 4 2 2 Referring to information, control information for synchronization between execution tasks between PUs and activation of other tasks, etc., and determine where to insert the control information.
  • data I * information is also generated.
  • the local memory LM is fully utilized to minimize the amount of data. If the schedule information is generated by the above process, it will be stored in the macro task schedule table 4 2 3.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)

Abstract

マルチプロセッサシステムにおいて、コンパイラにより処理対象となる入力プログラムから自動的に並列性を持つタスクを抽出し、各プロセッサユニットの特性に合わせて当該タスクを配置することで当該プロセッサユニットを効率よく動かすスケジューリングを行い、さらには当該プロセッサユニットの処理量を見積もることで動作周波数や電源電圧を最適化するコードを生成する。

Description

明細書
マルチプロセッサシステム及びマノ グレイン並列ィ匕コンパイラ 技術分野
本発明は、 複数のプロセッサユニットで構成されるマルチプロセッサシステムにおいて、 当^ m数プロセッサュニットを効率よく動作させることを可能とするマノ^ "プロセッサシス テムのハードウエア構 β¾¾ぴプログラムを生成するコンパイラに関する。 技贿景
半導讓造技術の進歩による素子の鶴田ィ匕により、 駄な数のトランジスタを^ るこ とが可能となっている。 それと同時にプロセッサの高周波数化も進むが、 動作 Β#«Λの増加 、 またリ一ク¾¾に起因する待機 の増加〖こより、 従来のプロセッサが歩んできた動作 周波数の向上と論理^:の改善により達成してきた性能向上に限界が見え始めている。
そこで難、 性能改善と低 ®Λ化を親する手段として、 従来の C PU、 D S Pといった プロセッサュニット (以下、 P Uとする) を複数個オンチップで搭載し、 処理を並列で行う ことで、 動作周波数を向上させなくとも、 高レヽ演算性能を得ることが可能な、 マルチプロセ ッサシステム (シングルチップ'マルチプロセッサシステム) が有望となっている。 将来、 鶴田化がさらに進むことで、 PUをオンチップで 1 0 0個〜 1 0 0 0個^ Tることも可能 となると予彻 Jされる。
このようなマルチプロセッサシステムにおいて、 P Uの数に比例した演算性能を得るため には、 搭載された P Uを同時に,させプログラムを処理する必要がある。 しかしながら、 通常の入力プログラムは処理が時系列で逐次的に ΙΕίされてレヽるため、 複数の P Uを搭 it" るにも拘わらず、 当!^数 P Uに比例して期待される演算性能を得ることができなレ、。
この問題点を解決するための一つの方法として、 プログラム開発者が自らプログラムの並 列性を考慮し、 当該プログラムを^ ϊさせるマノ^プロセッサシステムの構成に基づいて、 当該プログラムを複数の PUで 亍させるための並列化コードを付加する必要がある。 しか しながら、 本手法は PUが数個のシステムにおいては^ ¾である力 s、 の数十〜数千とい つた数の P Uが積載されたシステムにおレヽては、 また特に P uが で構成される は、 開発時間、 実効 14能の点で実用的ではない。
そこで、 構^ ¾ぴ演算性能が同種の複数 PUで構成されたマルチプロセッサシステムにお レヽて、 入力プログラムを讀し、 当該プログラム中から並列に動作可能な部分を抽出し、 当 ¾分を複数の P Uに割り当て同時に することを可能とする、 自動並列化コンパイラの 研究がすでに行われている。 例えば、 入力ソースプログラムを籠し、 当該プログラムをサ プノ "チンゃノ! ^プなどさまざまな ¾gのブロック (タスク) に分割し、 当!^数タスク間 の並列性を すると共に、 タスクとそれらがアクセスするデータをキャッシュあるいは口 一カルメモリに適合するサイズに分割し、 それらを各 PUに対して当該タスクを ¾g割り当 てすることによって、 マノ^プロセッサシステムを効率よく動力す目的プログラムを^^す るコンパイル;^;が、 特開 2004— 252728号に開示されている。 またマノ! ^グレイ ン並列処理の機能をサポートするチップマノ^プロセッサのアーキテクチャとしては、 特開 2001— 175619号に開示されている。
また、 電力消費の低 ¾υ¾ ¾の低減のため、 マルチプロセッサシステムにおいて各 PU の低 化カ泌須となるが、 個別のプロセッサに関して低 化する手法に関し、 様々な提 案が行われている。 例えば、 リアルタイム処理制約内でプロセッサの動作クロックを赚さ せ、 そのクロック周波数に応じた プロセッサに供^ Τる、 という周波数 ·¾£を動的に 制御すことにより低 ¾Λ化を する手法が、 特許第 3138737号、 特開 2004— 2 34126号で開示されている。
また、 画像処理など予め処理の手順力 S判明しているァプリケーションにおレヽて、 の 特性に合わせて C P Uや D S Ρなどの■の異なる複数のプロセッサを組み合わせ、 当該プ 口セッサ上での処理時間や消費電力情報を予め測定し与えておくことで、 当該情報により動 的に一連の処理を当該各プロセッサに割り当てる手法力 特開 2004— 252900号に 開示されている。 発明の開示
¾¾、 自動車のナビゲーシヨンシステム、 携帯電話、 デジタノレテレビなどといった、 画像 、 音声、 データベース情報など多様なデータを同時に扱う新アプリケーションが生まれる中 で、 様々な種類の入力データを、 当該データ夫々に最適な方法で同時に処理をするために、 プロセッサは複 の p uを搭 ^ることになると考えられる。 従来のマルチプロセッサ システムでは、 上記特開 2 0 0 4— 2 5 2 7 2 8号で開示されているように同じ構成の PU を複数搭載したホモジニァスなプロセッサシステムであった。
しかしながらこのように、 多様なアプリケーションが同時に多種の P U上で処理される将 来のヘテロジニアスマルチプロセッサシステムにおいて、 搭載する PUの と数に比例し て処理性能を得るためには、 P uの を考慮したプロダラムの並列ィ匕と配置力 s必須となる という問題がある。
また従来、 複数の P U上でプログラムを効率よく実 するためには、 小規模なプロダラム や処理シーケンスが常に固定的に実行できる 、 スケジユーリングを行うための実行時間 などのスケジュール清報を得るために、 一度プログラムを当該システム上で紫亍して処理時 間などを測定することが必要となり、 当該測定値を元に開発者が予め当該スケジユーノレ清報 を手動で^^する必要があり、 多大な労力と時間が必要となる。
この 、 事前に 理の内容やシーケンスが不明な一般のプログラムの場合、 特に規模が 大きなプログラムの # ^は、 当該情報を事前に手動で^^することが困難となる。 また PU の種類や数が増加した も同じく、 当該情報を手動で することが困難となる。
また、 の PUが搭載されるシステムでは、 プロセッサ全体の消費 ¾Λ増大力^^され るため、 特に携帯 などのモバイル^^、 雜で麵されるデジタノ レビなどに適用 することを考慮すると、 従来の O Sによる FV (動作周波数と, 制御のみならず、 各アプリケーションプロダラム内でのソフトウェアによる各 P Uの処理状況によりきめ細か レ、 ®¾g管理や動作周波数制御力 s必要となる。
特に、 処理性能を落とさずに消費 ®Λを嫌する必要がある。 また、 実時間処理を要^ るプログラムを ¾ίϊ·するに際しても、 時間制約を遵守しつつ、 電力を «する必要がある。 そこで本発明は、 多様な種頃の PUを搭載するマルチプロセッサシステムにおいて、 処理 ¾ ^となる入力プログラムから自動的に並列性を持つタスクを抽出し、 各 P Uの特性に合わ せて当該タスクを配置することで当該 P Uを効率よく動かし、 さらに当該 P Uの処理量を見 積もることで動作周波数 を; Μ化するコードを^^し、 目的プログラムに付加す るコンパィラ及ぴその: 化を可能とするマノ ^プロセッサシステムを «することを目的 とする。
したがって、 本発明により、 多種のプロセッサユニットを集度するマルチプロセッサシス テムにおいて、 当該プロセッサュニットを効率よく動作させるプログラムの分割配置および 制御コード (実行コード) を生成するコンパイラにより、 当該プロセッサシステムの性能を 最大限活用しつつ、 時間が最小となり、 かつ、 低 にて効率よく処理することが可能 となる。 また、 さらにはソフトウェア開発者がプロセッサユニットの構成を意識することな く、 短時間で効率良いプログラム作成が可能となる。
また、 入力プログラムをコンパイノける際に、 プロセッサユニットの構成に基づきコンパ ィラが予め事前の鍵時間を赚もり、 コンパイル時に処理 I醉を静的に決定できる部分に 関しては事前に処理手順を決定しておき、 また^ 時にならないと処理 I,が決定できなレヽ 部分に関しては、 コンパイラが実行時間を含んだ処理情報に基づレヽたスケジユーリングを動 的に行うプログラムを生成することで、 一般のプログラムを多種のプロセッサュニットで構 成されるマルチプロセッサシステム上で効率よく !¾0連できる。
また、 入力プログラムをコンパイラカ讀し、 事前に讀手順を決定した後に処理時間を 赚もり、 時間制約に财る当該処理時間の余裕度を見てプロセッサュニット毎に飄管理 や周波纖 I胸をきめ細かく行うことで、 電力を大きく赚できる。
また、 難のプロセッサユニットで構成されるマルチプロセッサにおいて、 節時間最小 となるよう入力プログラムを並列ィ匕しスケジューリングした後、 各プロセッサュニット間で 処理時間が最小となるよう、 プロセッサュニット毎にきめ細かく動作周波数制御及び 管 理を行うことで、 性能を損なわずに ¾Λを ¾¾ィ匕できる。 図面の簡単な説明
図 1は、 本発明の—実施形態を示す電源 ·周波数^^型のマルチプロセッサシステムのブロ ック図である。
図 2は、 電源電圧生成回路のブロック図である。
図 3は、 降圧回路のブロック図である。
図 4は、 供給 flffi選択回路のプロック図である。
図 5は、 クロック^回路のブロック図である。
図 6は、 クロックノ、。ルス選択器のブロック図である。
図 7は、 マノ! ^プロセッサシステムの他の例を示し、 fl^flffi ^^回路とクロック^^回路 を集約した電源 ·周波獎 51択型のマルチプロセッサシステムのプロック図である。
図 8は、 マルチプロセッサシステムの他の例を示し、 各プロセッサユニットの FV制御レジ スタを^した F V制御テーブルを有するマノ^プロセッサシステムのプロック図である。 図 9は、 F V制御によるプロセッサュニットの動作モードを示す説明図である。
図 1 0 aは、 ローカルメモリの F V制御を示し、 ローカルメモリ LMを複数バンクで構成し てバンク毎に F V制御を行う例を示 t¾明図である。
図 1 0 bは、 ローカルメモリの F V制御を示し、 ローカルメモリ LMを複数のァドレス空間 毎に F V制御を行う例を示す説明図である。
図 1 0 cは、 ローカルメモリの FV制御を示し、 複数バンクに設定したァドレス空間毎に F V制御を行う例を示す説明図である。
図 1 1は、 ローカルバス L B U Sをクロスバで構成した場合の電源制御の説明図である。 図 1 2は、 図 1 1に示したローカルバス L BU Sの構成図である。
図 1 3は、 F V制御による口一カルメモリ LMの動作モードを示す説明図である。
図 1 4 aは、 FV制御レジスタフォーマットを示し、 ローカルメモリ LMを 4バンクで構成 した場合のレジスタフォーマットを示す説明図である。
図 1 4 bは、 F V制御レジスタフォーマットを示し、 図 1 4 aと同じくレジスタの設定例を 示す説明図である。
図 14 cは、 F V制御レジスタフォーマットを示し、 他のレジスタフォーマットを示" η¾明 図で、 LMを 4バンク構成とし、制御 ¾ ^毎にアドレスを割り振った FV制御レジスタフォー マツトの例ある。
図 15は、 図 8に示した FV設定テーブルのフォーマツ卜の例を示す説明図である。
図 16は、 FV制御レジスタの ッビングを示すマルチプロセッサシステム全体のメモリマ ップを示す説明図である。
図 17aは、 FV制御レジスタアクセスの例を示し、 CPU0が DSPOの FV制御レジス タにアクセスする例を示す説明図である。
図 17bは、 FV制御レジスタアクセスの例を示し、 CPU0が DSP0の FV制御レジス タにアクセスする場合のオブジェクトコ一ドを示す説明図である。
図 17 cは、 FV制御レジスタアクセスの例を示し、 OSの A P Iを用いて FV制御レジス タを操作する場合のオブジェクトコードを示す説明図である。
図 18 aは、 タスクを並列処理する の F V制御の |¾¾を示し、 マクロタスクの並列菊 f 依存性を示すマクロタスクグラフである。
図 18 bは、 タスクを並列処理する # ^の F V制御の ¾ ^を示し、 F V制御を行わなレヽ (FULLモード) のガントチャートを示す。
図 18 cは、 タスクを並列処理する場合の F V制御の概念を示し、 C P Uを «して動作さ せる ^の FV制御の例を示すガントチヤートである。
図 18 dは、 タスクを並列処理する の F V制御の を示し、 C P Uを一時的に停止さ せる の FV制御の例を示すガントチヤートである。
図 19 aは、 リアルタィム制約時の F V制御を示し、 通常処理によるリアルタィム処理のガ ントチャートである。
図 19bは、 リアルタイム制約時の FV制御を示し、 CPUを^^して動作させる^の F V制御の例を示すガントチャートである。
図 19 cは、 リアルタイム制約時の FV制御を示し、 CPUを一時的に停止させる ¾ ^の F V制御の例を示すガントチヤートである。
図 20は、 コンパイラの処理を示すフローチャートである。
図 21は、 入力プログラムの一例を示すソースコードである。
図 22は、 コンパイラが生成したタスク間の依存関係図である。
図 23は、 タスク · FV制御スケジユーリング結果を示す時系列的なチヤ一トである。 図 24は、 コンパイラが生成するコードの例を示し、 CPU0、 DSP0、 DRP0、 BRP1向けの コードを示す説明図である。
図 25は、 同じくコンパイラが するコードの例を示し、 CPU1、 DSP1、 BMP0、 BMP1 向けのコードを示す説明図である。
発明を実施するための最良の形態
以下、 本発明の一雄形態を、謝図面に基づレ、て説明する。
< 形態の全體成 >
図 1は、 本発明の一実施形態であるマルチプロセッサシステムの構成を示す。 図 1におい て、 マルチプロセッサシステムは、 複数の のプロセッサユニット (以下、 PUとする) 10〜17と、 これら^ [メモリ (以下、 SMとする) 18を主体にして構成される。 当該 各 PU10〜17は、 それぞれのバスインタフェース (B I F) 27を介し、 ローカルバス (L BUSとする) 19に接続される。 また、 SM18は LBUS 19に接続され、 各 PU 10〜17からアクセスすることができる。 当該各 PU10〜17は、 当該 PUに対し m¾g 及ひ ¾作クロックを供^" Tる ¾^¾ΒΕ 回路 (DCGEN) 20、 及ぴクロック^^ 回路 (CLKGEN) 21が されている。 なお、 本マノ!^プロセッサシステムは、 のプロセッサユニットで構成されたへテロジニァスマノレチプロセッサシステムの例を示す。 本雄形態では PUの觀と個数を、 2個の汎用処理プロセッサ (以下、 CPU) 10、 11と、 2個の信号処理プロセッサ (以下、 DSP) 14、 15と、 2個の動的 成可能 プロセッサ (以下、 DRP) 16、 17と、 及び 2個のビット演算処理プロセッサ (以下、 BMP) 12、 13で構成した例を示す。 なお、 上記 PUの觀ゃ数〖鉢魏形態で示した 限りではなく、 さまざまな構成を取り得る。 また、 従来の同種の PUのみによる構成 (例え ば CPUのみ 4個で構成) としても良い。 また、 本実施形態では、 DSP (0、 1) 14、 15と、 DRP (0、 1) 16、 17と、 BMP (0、 1) 12、 13を特定用途プロセッ サユニットとし、 CPU (0、 1) 10、 11を汎用プロセッサユニットとする。
また、 動的 成可能プロセッサ 16、 17は、 処理回路を動的に S«成することが可能 なプロセッサを指し、 限られたコア内で仮想的に回路を変更することができる。
上記各 PU10〜17は、 各 PUで処理されるプログラムやデータを一時的に保存する口 一カルメモリ (またはキャッシュ) (LM) 24及ぴ、 当該 PUに る觸Sffi (VL)や 動作周波数 (FL) を決定する周波数 (FV) 制御、 及び PU間の同期制御を行 うためのシステム制御レジスタ (R) 25を具 1"る。 なお、 ローカルメモリ (LM) 24 は、 他の PU及ぴ当該 LMを持つ自 PUからアクセス可能なグローバノレアドレスがマツピン グされている領域と、 当該自 PUのみアクセス可能なプライべ一トァドレスがマッピングさ れている領域に分割される。 なお、 L BUS 19に接続された メモリ (SM) 18はグ ローノ ルアドレスがマッピングされており、 複数の PUからアクセス可能である。 なお、 以 上は本発明における適用構成の一例に過ぎず、 H½の形態としてはこの限りでなレヽ。 例えば 図 1では表現されていないが、 LBUS 19には入出力処理、 割り込み^ I、 タイマ、 デバ ッグ回路、 等の周辺回路を必要に応じて接続することとなる。 また、 バスブリッジを介して 、 同觀または ¾^のバスを階層的に接続してもよい。
また、 各 PU10〜17で * ^される SM18には、 SM18に供^する供^ ¾圧 (VL ) や動作周波数 (FL) を設定して、 周波数 ·¾¾¾«Ε (FV) 制御を行うためのシステム 制御レジスタ (R) 181を具備する。 また、 前記 PU及び前記 SMを相互に赚するロー カルバス L BUS 19には、 LBUS 19に供糸^ Tる VLや F Lを設定して、 FV制御を行 うためのシステム制御レジスタ R191を具備する。 なお、 このシステム制御レジスタ (R ) 181に代わって、 各 PU10〜17のシステム制御レジスタ (R) 25のそれぞれに、 SM18及び LBUS 19の FV制御用のレジスタを設けても良レ、。 また、 システム制御レ ジスタ (R) 181は、 PU10〜17のいずれ力一つによって設定される。 なお、 上記 PU10〜17は、 一つのチップ (LS I) 上に構成された^を示すが、 P U 10〜 17を構成する複数の L S Iを結合し、 一つのチップまたはモジュールとしたもの であっても良い。
また、 SM18は、 プロセッサの觀毎 (CPU, DSP、 DRP、 BMP毎) に^"す るようにしても良く、 例えば、 後述する図 10 a〜図 10 cのように、 SM18の領域をバ ンクに分割し、各バンクをプロセッサの種類毎に^"することもできる。 あるいは、 SM1 8の一部を複数の P Uで共有するようにしても良レ、。
<«1Ξ· Ι波数可変回路 >
次に、 各 PUに纖された飄 «|¾ ^回路 (DCGEN) 20及びクロック 回路 ( CLKGEN) 21の構成について説明する。
図 2は、 DCGEN20の構成を示す。 DCGEN 20は外部より供給された通常の A 電圧 (VD) 22を予め指定した複数の供給電圧 (VL) 205に降圧 (または昇圧) する 回路 (DCCNV) 206、 した複数の当該 より PUへ供糸^ Tる «Εを選択す る供^ 回路 (VDSEL) 203、 及び顧 ®Eを遮 H"る回路 (後述) で構成す る。
なお降圧 ほたは昇圧) 回路 (DCCNV) 206は、 複数の 降下部を含み、 例えば 、 図 2のように、 fl¾«SVDをそのまま供糸^ Tる回路 22' と、 ¾¾!®£VDを 3Z4に 低下する降圧回路 (LVCNV) 201と、 mSimffiVDを 1/2に低下する降圧回路 (L VCNV) 202と力ら構成される。
各 PU10〜17は、 当該 PUが持つシステム制御レジスタ (R) 25内の FV制御レジ スタに設定された FV (義周波徹ぴ義 モードにより制御線 (DCCL) 204 を介して供^ 選択回路 (VD S E L) 203を制御することで、 降圧回路 (DCCNV ) 206で^^された複数の «ΕΕのうちいずれかひとつを選択し、 当該職された供^ V Lが対応する P U 10〜 17に供給される。 なお、 F V制御レジスタはシステム制御レジ スタ 25内の所定の領域に設定されるものである。
¾¾¾電圧を降圧する回路 (LVCNV) の構成の一例を図 3に示す。 上記図 2の降圧回路 LVCNV201, 202は、 供^ «E (3/4VO) を決定する参照 回路 (VR EF) 207、 及び参照 ®1Ϊで指定した ¾11まで降圧し PUに対し fl¾を供^ Τ5«¾¾^¾ 回路 (VG Ε Ν) 208で構成され、 M± 208の出力が図 2の供 ^sra^回路
203に入力される。
降圧回路 LVCNVの出力電圧 (VCNV) は、 参照電圧を決定する参照電圧生成回路 ( VREF) 207内の nMOSFETの段数により決まり、 F、V制御レジスタで指定する電 圧を供^ Tるよう、 L V CNVの構成は決定される。 以上の回路で降圧した複数の «ΕΕから 、 PUからの制御線 204により指定された を選択し、 各 PU10〜17へ出力 (20 5) する。
図 4は、 供給 SEES択回路 (VDSEL) 203の構成の一例を示す。 供給 SE1択回路 (VDSEL) 203は制御信号デコード部 2031と 選択スィツチ 2032で構成す る。 また、 PUのソース ^合部にしきレ 直の高い nMOSFET 209を挿入すること で、 当該?11の¾«断時に ¾ίτるリーク を,することができる。 なお、 図 3、 図 4 の構成ば、 降圧回路 LVCNVの機能を実現するための一つの構成に過ぎず、 他の様々な電 源 ¾¾¾¾回路^;を適用しても良い。
続いて図 5に、 クロック生成回路 (CLKGEN) 21の構成の一例について説明する。 CLKGEN21は、 内部クロック FC (23) を当該内部クロックの 1 2、 1Z4など 内部クロック F Cを 分の 1に«する分周回路 212、 213、 及び分周^^した複数 のクロックから、 当該 PUへ供^ Tるクロック (FL) 216を選択する、 クロックノヽレス 選択器 (CLKSEL) 214で構成する。 なお、 内部クロック FC (23) は、 PLL ( Pha s e Lo cke d L o o p) 回路 211にて、 外部から入力されたシステムクロ ックを、 指定した遁倍率で通倍することで «される。
ク口ッタノ ノレス選択器 (CLKSEL) 214の構成の一例を図 6に示す。 CLKSEL 214は入力制御信号 CKCLのデコード部 2171と、 クロック信^!択部 2172で構 成する。 各 PUは、 当該 PUカ持つ FV制御レジスタのモードにより制御線 (CKCL) 2 15を介して DCSEL214を制御することで、 された複数のクロックより指定され た FL力 S職され、 当該クロック FL 216の供給を受ける。
なお、 上記図 1に示した構成の他にも図 7に示すように、 fl¾T、®£、 クロックパノレスを変 換する回路 (DCCNV206、 CLKCNV217) を複数 PU (または PU全体) に対 し各 1個付加し、 各 P U側に^^した複 ^の ¾¾g®BE及びク口ックパルスを選択する回 路 (VDSEL203、 CLKSEL214) を付加する構成としても良い。 図 7の例では 、 2組の ¾¾|®Ξ4 ^回路 206とクロック 回路 217が、 それぞれ 4つの PUに とクロックを供^" Τる を示す。
このように、 fl^flffi及びクロックノ ルスを^^、 る回路は様々な構成を取り得る ことができ、 その構成は以上に示した限りではない。 例えば、 を変換する回路 DC CNV206を複数PU (または PU全体) に対し 1個付加し、 クロックパルスを する 回路 CLKCNV217は PU側に PU毎に付加する構成とすることもできる。 また、 例え ば、 クロックパノレスを^^する回路 CLKCNV217を複数 PU (または PU全体) に対 し 1個付カロし、 電源電圧を変換する回路 DCCNV206は PU側に PU毎に付加する構成 とすることもできる。 また、 例えばチップ内に DCCNV206を搭載 "l^f、 チップ外部に て生成した複難類の «EEを入力し、 03£乙にて所望の供^«£ し205を選択 供給するキ冓成としてもよレ、。
また、 FV制御モードを設定する手段として、 図 1や図 7に示した各 PUが当該 PUの F V制御を行う FV制御レジスタ (システム制御レジスタ (R) 25) を持つ構成とする他に 、 図 8に示すように各各 P U 10〜 17の F V制御モードを一括して! ^する F V制御テー ブノレ (FVTBL) 26を LBUS 19に接続する構成としてもよレヽ。 図 8においては、 図 1においてシステム制御レジスタ 25に含まれていた FV制御レジスタを、 ローカルバス L BUS 19に接続された FV制御テーブル 26とし、 勸したものである。
FV制御テーブル (FVTBL) 26は各 PU10〜: 17からアクセス可能であって、 共 有メモリ SMの一部に設定されてもよいし、 メモリ SMから独立したメモリ (またはレ ジスタ) で構成されても良レ、。
ぐバス I F> 以上のように、 各 PU10〜17は を個別に設定することが可能なため、 当該 P Uと,された LBUS 19間においては、 信号の ¾Eレベルが異なることになる。 そこで 、 PU10〜17と LBUS 19間に纖されたバスインタフェース (B I F) 27は信号 レベル変換回路 (図 略) を具備し、 ノくス LBUS 19と PU10〜: L 7間の信号レベル 変換を行う。
< PUに対する電圧 ·周波数モードの与え方 >
次に、 回路 (DCGEN) 20及ぴクロック ^^回路 (CLKGEN) 21 で賊する爾 «!£ (VL) 205及ひ 作クロック (F L) 216を決定するノ、一ドゥエ ァ機構について説明する。
飄 ®E 回路 DCGEN 20及びクロック 回路 CLKGEN 21の動作モード ( る VL、 FL値) は設計時に予め決定されており、 各 PUは flfilS回路に対し当該 PU が具 {§·する FV制御レジスタの値によって制御線 DCCL、 CKCLを介して指定する。 V L、 FLの設定方法の詳細に関しては後述する力 コンパイラが FV制御レジスタをセット する制御コードを生成し、 当該コードを実行する汎用プロセッサ C PU0または CPU 1が 、 メモリマップされた FV制御レジスタにアクセスして値を書き換える。
本実施形態における PU10〜17の FVモードは、 VL、 FLの組み合わせを 4段階 ( F V制御レジスタ内の 2ビット) として設定する。 図 9に PU10〜17の動作モード一覧 を示す。 つまり、 F V制御レジスタの 2ビットの値が "00" におレ、ては VL = 0、 FL = 0の SEE ·周波 断となる OFFモードに設定され、 上記レジスタ値が "1 1" において は、 VL = VDでシステムの と^ ffi、 FL = FCでシステムの動 ί乍周波数と^ ffiと する F U L Lモードが設定される。
またレジスタ値が "01" では VL= (1/2) VD、 FL= (1/4) FCとなる LO Wモードに設定され、 レジスタ値が "10" では VL= (3/4) VD、 FL= (1/2) Fとなる MI DDL Eに設定される。 なお、 VL · F Lモードの数、 また VLi直 · FL値は 、構築するシステムの形態やアプリケーション、 するプロセス技術、 等により、 決定さ れる。 く P U内の部分的な F V制御 >
以上では F V制御を とする範囲を P U全体とし、 一括で F V制御モードを設定すると して説明したが、 PU10〜17に搭¾^るローカルメモリ (LM) や FV制御レジスタ、 また他のプロセッサ周辺回路に対し、 夫々異なる FV制御モード設定を行っても良レ、。 これ は、 F V制御レジスタのビットフィールドを拡張し、 被 F V制御部に対応した F V制御モー ドを設定するフィ一ノレドを持たせることで できる。 例えば、 口一カルメモリ LMまたは システム制御レジスタ (R) 25といったデータ保持が必要な回路部に対しては、 独立に F L、 VLを設定する画とすることが考えられる。 つまりローカルメモリ LMや FV制御レ ジスタに対し独立して FV制御を行うことで、 ttrlEPUの FVが遮断状態としても、 当該し M及び Rのデータ力 され、 また ¾ PU力 S遮断状態においても、 他の PUから当該 PU の LMに対しアクセスすることも可能となる。
またさらに、 ロー力ノレメモリ LMの構成により FV制御 ¾ ^を複 ^定することができる 。 図 10a〜図 10cにローカノレメモリ LMに ¾~Τる F V制御;^;を示す。
例えば、 図 10 aに示す通りローカルメモリ LMをバンク構成とし、 各バンク毎 (Ban kO〜: Bank 3) に対してそれぞれ FV制御を雄する。 このため、 各 Bank0〜3に はそれぞれ «¾ΕΒ1択回路 (VD SEL) 203力 S接続される。
つまり、 データの保持が必要なバンクのみ通常電圧、 またはデータ保持に必要な最低限の flffiを供給し、 当該バンク以外の他のバンクは を遮 fl"ることで ¾Λを削減すると共に 、 データの退 理を行う必要がなくなるため?11の電¾断時から通常動作時への復帰を 高速に行うことが可能となる。
またさらには、 図 10bに示す通り、 ローカルメモリ LMのアドレス空間を一定の連続し たアドレス空間 (Ar e a l〜Ar e a 4) で分割し、 当該空間単位で FV制御を行うこと で、 不要なアドレス空間 (記憶領域) に¾"1 "る飄を遮 »ί"Τることで を削減できる。 このため、 ローカルメモリ LMの各アドレス空間 (Ar e a l〜Ar e a 4)毎に供給電 ffi 択回路 (VDSEL) 203が嫌される。
また、 図 10cに示す通り、 口一カルメモリ LMがバンク構成としたとき、 各バンク (B a n k 0〜3) に跨る一定の したァドレス空間 (Ar e a l〜Ar e a4) で分割した 単位で FV制御を行う。
このため、 ローカルメモリ LMの各 B a n k 0〜 3に跨る各アドレス空間 (Ar e a l〜 Ar e a 4) 毎に供 ^®SE選択回路 (VD SEL) 203カ観される。 この構成により、 バンク構成を活用しメモリアクセスを高速化するメモリインタリーブを しつつ低 化 が可能となる。
なお、 ローカルメモリ LMは、 機能的に当該 LMを搭 る PUのみからアクセスできる 部分 (非 メモリ) と、 当該 PUのみならず他の PUからもアクセス可能な部分 (^[共 有メモリ) に分割して実装してもよく、 以上の 2つのメモリ機能単位別で F V制御を行うこ とも考えられる。 このため、 図示はしないが、 上記非 メモリと^ メモリの領域毎 にそれぞれ供糸^«11選択回路 (VDSEL) 力 S赚される。
また、 図 10 a〜図 10 cに示したメモリ分割 は、 Sfit己メモリ機能単位、 また メ モリ SMなど、 システム力 s搭 る様々なメモリ 能 立単位に対しても、 同様に適用す ることが可能である。 例えば PU外に配置した * ^メモリ SMに対しても複数バンク構成と し、 各バンクに対するアクセス ®¾やシステム状態 (スタンバイ、 スリープなど) に対応し て、 別途 FV制御を行うようにしてもよい。
例えば、 図 10 aの構成をローカルメモリ LMに代わって雜メモリ SM18に適用し、 * ^メモリ SM18をバンク (Bank0〜3) に分割して、 各バンク毎に供 ^Mffil択回 路 (VD SEL) 203を接続することでバンク単位で ®Λ制御を行うことができる。 また 、 図 10 bの構成をローカルメモリ LMに代わって^"メモリ SM18に適用し、 メモ リ SM18のァドレス空間を一定の したァドレス空間 (Ar e a l〜Ar e a 4) で分 割し、 当該空間単位で FV制御を行うことで、 不要なアドレス空間 (記憶領域) に ¾ "る電 源を遮 Slf-Tることで ®Λを削減できる。 また、 図 10 cの構成をローカルメモリ LMに代わ つて メモリ SM18に適用し、 各バンク (Bank0〜3) に跨る一定の; iS^したアド レス空間 (Ar e a l〜Ar e a4) で分割した単位で F V制御 («Λ制御) を行うことも 可能である。 なお、 図 10 a〜図 10 cを^ *メモリ SM 18に適用する^^には、 図中 「 LMJ を 「SM」 と読¾ えるものとする。
<ローカノレメモリ LMに ¾ "る F V制御モード〉
? 制御纖を?!;內の複数部分 (機能部分) とする例として、 ローカルメモリ LMに対 して PUとは独立して FV制御を行う方法を以下に説明する。 本例ではローカルメモリ LM は図 10 aで示したように 4バンク (Bank0〜3) で構成し、 FV制御 は PU及び LMバンク毎とする。
PUの FV制御モードは上記図 9に示した通りである。 図 13にローカルメモリ LMの F V制御モードの一覧を示す。 LMの動作モードに関しては¾ がメモリとなるため、 本 ¾5¾ 形態では通常メモリアクセス及びデータ が可能である通 ¾作モード (VL = VD、 F L = FC、 レジスタ値" 11") と、 メモリアクセスは不可であるがデータを麟可能なデー タ保持モード (VL=lZ2VD、 FL = 0、 レジスタ値 " 01") と、データ麟を行わず 完全に廳を遮 る、 断モード (VL=0、 FL = 0、 レジスタ値 " 00") の 3モ ードとする。 続いて、 ローカルメモリ LMを図 10 aまたは図 10 cのように複数のバンクで構成し、 バンク毎の F V制御に対応した F V制御レジスタのフォーマットを図 14 aに示す。 本例で は、 各 PU10〜17毎に、 FV制御レジスタ 1250を一メモリアドレスにマップし、 そ のフィールド (マップしたアドレス) で制御対象毎に FV制御モードを決定する。 1フィー ルドが図示のように 32ビットの場合、 つまりビット 1、 0を PUの F V制御モード (PU FV)ゝ ビット 3、 2を LMバンク 0 (BankO) の FV制御モード (LM0FV)、 ビッ ト 5、 4を LMバンク 1 (Bankl) の F V制御モード (LM1 F V)、 ビット 7、 6を L Mバンク 2 (B a n k 2) の F V制御モード (LM2 F V)、 ビット 9、 8を LMバンク 3 ( Bank 3) の FV制御モード (LM3FV) として、 所望のフィールドをアクセスし、 図 13のテーブルからローカルメモリ LMの動作モードを決定し、 FV制御を行う。 なお、 P Uの動作モードは、 図 9のテープンレに基づいて決定する。
FV制御レジスタ 1250の設定例を図 14bに示す。 本例では、 PUのモードは図 14 aの PUFVに MI DDLE (" 1、 0") が設定され、 ローカルメモリ LMのバンク 0のみ を活性化し通^!)作させるよう LMO F Vには" 1、 1" 力 S設定され、 LMのバンク 1はデ ータ麟モードとなるように LM1 FVには" 1、 0"力 S設定され、 バンク 2及びバンク 3 は LM2FV、 LM3FVに" 0、 0" を設定し fl¾断としている。
また、 上記の他にも F V制御レジスタに対し、 制御 ^毎にァドレスを割り振る構成とし ても良い。 例えば、 図 14 cで示すように F V制御対象毎にレジスタをメモリアドレスにマ ップした FV制御レジスタのフォーマットを示す。 図 14cでは、 アドレスの順に PUの F V制御モードと LMの F V制御モードを示す PUF V、 LMO F V〜LM3 F Vが欄され 上記図 14 aで示したように、 F V制御レジスタのビットフィールドで淛御 ¾ ^の F V制 御モードを切り替える^^、 当該フィ一ノレドの値を設定するためのビット演算が必要となる 力 図 14 cの構成では直接当該制御対象レジスタがマップされたァドレスに直接アクセス すれば良く、 FV制御レジスタの設定に関する命令数を肖 U減することができる。 しかしその 反面、 アドレスリソースが図 14 aと比較し多く必要となる。 以上では、 各 PUが持つ FV制御レジスタを設定することで、 PUゃLMのFV制御モー ドを設定する例として説明したが、 図 8で説明したように各 P U 10〜 17の F V制御モー ドを示す FV制御レジスタを、 ローカノレバス L BUS 19に接続された FV制御テーブル ( FVTBL) 26として持たせる では、 図 15に示すように当該 F VTBLを構成する 図 15は、 図 8で示した FV制御テーブル FVTBLのフォーマットを示す。 当該 FVT BLの 1ラインは、 PU番号(PUN 250)、 当該 PUの FV制御モード (PUFV251 )、 LMの FV制御モード (LM0FV252、 LM1 FV253、 LM2FV254、 LM 3FV255)、 後 るローカルバス L BUSの FV制御モード (BUSFV) に対応し、 任意の PUに対する当該 PU、 LM、 L BUSの FV動作モードを決定できる。
そして、 CPU0等がこの FV制御テーブル FVTBLを読み込んで、 各 PU10〜17 毎に PUと口一カルメモリ LM (各バンク毎) 及びロー力ノレパスの FV制御モードを決定し 、 ^^回路 (DCGEN) 20及びクロック 回路 (CLKGEN) 21を制御する くバスに ¾ ~る ¾¾¾制御〉
また、 各 PU10〜: I 7を接続するローカルバス (LBUS) 19に対しても、 マルチプ 口セッサシステムの機能 立単位の FV制御として、 部分的に観制御 m )するこ とができる。
例えば、 P U 10〜 17の何れかが 乍時で β¾断されている 、 該当する P Uの バスインタフェース (B I F) はアクセスきれないため、 当該 B I Fの電¾¾1断を行うこと ができ、 その結果リーク β¾を肖 I滅することができる。 また、 バス構成をクロスバとした場 合、 当該 ρ υに接続するバスを決定するスィッチ部の飄を制御し遮 f "ることもできる。 図 11に、 クロスノ^ t成のバスに る ¾ ^制御の を示す。 例えば、 DSP0 (14 ) を 断状態とし DSP0に ¾~Τる通信トラフィックが無いとすると、 DSP0に付随 する B I F (27)、及び DSP0に対し他の PU及び^ *メモリ SMからのバスネットヮー クを赚するスィッチ群 (192)、 に る飄も遮 る。
これにより、 «) 態となつた DSP0のスィッチ群 192の 消費を肖 IJ減できる。 図 12に、 クロスパネットワークに対する ®f、制御を実現するための回路構成を示す。 な お本図では、 CPU0、 DSPO, DSP 1及び^"メモリ SMを、 クロスバネットワーク で構成されたローカルバス L BUS 19に纖した構成を示す。 本回路は、 各 PU10〜1 7が送出したパケットデータを續し、 図 11に示したスィツチ群 192の制御を行うネッ トワーク制御部 NWCRLと、 当該バケツトデータの送出元と送出先のネットワークを接続 するネットワークスィッチ部 (NWSW) で構成する。
ネットワーク制御部 NWC RLは、 PU10〜17が送出したパケットを新しパケット 処理の優先度を決定する SHCTL195と、 SHCTL195により優先度決定された当 該パケットを選択するセレクタ (SELC) 196と、 当該パケットを一時的に するキ ユー 197と、 当該パケットを角浙し送出先及び送出元のネットワークを接続するセレクタ スィッチ 191〜 194を制御する SWCT L 198から構成される。
また、 ネットワークスィッチ NWSWは各 PU間のネットワークを するセレクタスィ ツチ (SEL) 191〜: L 94で構成する。
各 PU10〜17とネットワーク制御部 NWCRLには、 廳 回路 DCGENと職 的に接続するスィッチ (DCSEL) 199がそれぞれ設けられる。 そして、 スィッチ (D CSEL) 199から各 PU10〜17及び B I F27と、 当該 PUが接続されるセレクタ スィッチ 191〜 194に対し電源供給を行う。
例えば D SP0を 断状態とし、 D S P 0に対する通信トラフィック力 S発生しなレヽと すると、 D S P 0に付加したスィツチ D C S E L 199は、 当該 D SP0のみならず当該 D SP0に^^された B I F27及び、 当該 DS P 0へのネットワークを選択するセレクタス イッチ SEL1 (192) に る ®¾gを遮^る。 これにより、 ®«断状態とした DS P 0のみならず、 周辺の回 ¾ ^の ¾Λを遮 f ^ることで ®Λ消費をさらに削減できる。 なお 、 ネットワーク全体を待獄態、 つまり 断状態とするときは、 NWCRLに対しても 当該 NWCRLへ ¾ ^供糸^ Τるスィッチ DCSEL 199により、 断を行う。
<F V制御レジスタの設定方法〉
次に、 FV制御レジスタ 1250を設定する具体的な方法について説明する。 なお以下で は、 レジスタフォーマットを図 14 aの構成として説明する。
各 PUの FV制御レジスタ 25には、 全 PUから一意にアクセス可能なグロ一ノくノレアドレ スがそれぞれ割り振られ、 コンパイラが予め決定したタスク管理用の PU (つまり、 スケジ ユーラまたは OSを る PU) カ当該アドレスにアクセスし、 当該レジスタ値を変更す ることで F V制御モードを設定する。
図 16にマルチプロセッサシステム全体のグローバルアドレス空間マップを示す。 本実施 形態では、 先頭アドレスより所定のアドレスまで PU自身のローカルリソース (LM、 FV 制御レジスタ 1250を含むシステム設定レジスタ) が見える領域、 ブロードキャスト (B C) 領域を定義する。 BC領域に関しては後财る。 そして、 BC領域の後に各 PU毎のァ ドレス空間を割り振り、 さらに各 PU内のアドレス空間にローカルメモリ LMアドレス、 及 びシステム設定レジスタアドレスを割り振る。 FV制御レジスタは、 前記システム設定レジ スタァドレス内の 1アドレスを持ち、 当該ァドレスをアクセスすることで FV制御モードを 設定できる。 なお図 16では、 CPUO、 CPU1、 DSPO、 DSP 1, の順に先頭空間 よりアドレスがマップされ、 例えば DSPOの FV制御レジスタを設^る際は、 アドレス "DSPO— FVREG— ADRS" をアクセスすることとなる。 また、 当該空間の各 PU 領域の後には メモリ SMのァドレスを割り振る。
F V制御レジスタの設定は、 コンパイラが決定したタスク管理用の P Uがレジスタァクセ ス用のオブジェクトコードを ¾ί し、 ローカルバス L BUS 19を介して制御先 PUの FV 制御レジスタをアクセスすることで行う。 コンパイラが当該オブジェクトコードを生成する 具体的な方法に関しては後述するが以下簡単に説明すると、 コンパイラがタスクを複数 P U に割り当てる際、 当! ¾t数の PUをグノ "プ化し、 グノ プ内のタスクの起動や同期処理を 行うタスク管理 PUを決定する。 コンパイラは、 当該管理 PU上で FV制御を行うコードを 当該管理 PUは当該コードを菊亍することで、 グ ^プ内の PUの FV制御を行う
。 なお、 上記コンパイラは図示しなレヽ計難上で節されるものである。
図 1 7 aに FV制御レジスタを設定する例を示す。 コンパイラが CPUO、 DSPO、 D
SP 1をグノ ~プ化し、 CPUOがタスク管理を行い、 当該 CPU0が DSP0に対し FV 制御を行うとする。 CPU0は、 コンパイラが した FV設定を行うオブジェクトコード を^ frTることで、 DSP0の F V制御モードを設定する。
図 17 bに DSP0の F V制御モ一ドを設定するオブジェクトコ一ドの例を示す。 本例で は DSP0內の FV制御レジスタのアドレスを予め定義しておき、 CPU0内の汎用レジス タに当該 FV制御レジスタのアドレス、 及び FV設定値を 差し、 当 定値を当該アドレ スで指定されたレジスタに書き込むことで、 設定を完了する。
なお、 FV設定を行う方法として、 タスク管理 PUがレジスタを直接アクセスするォブジ ェクトコードを るとした力 例えば、 図 1 7 cに示すように、 OSが各 PUの FV動 作モ一ドを管理するとした^^では、 O Sの F V制御用 A P Iをコーノ ることで、 O Sの 管理下で P Uの F V制御モード¾定を行うことができる。 なお、 システム全体の F V制御用レジスタを設け、 このレジスタ内にすベての P U 1 0〜 1 7の F V制御モードを設定するレジスタを設けて、 各レジスタにモードを設定すると、 全 PU 1 0〜1 7の F Vモードが自動で設定される謹を持たせても良レヽ。 例えば、 図 8の F V制御テーブル 2 6のように全 PU 1 0〜: 1 7で共有するレジスタを設け、 当該レジスタを JE fすることで、 全 PU 1 0〜1 7の FV制御モードを変更することが可能となる。
また、 当該システム全体の制御用レジスタに測処理 PU群(C PU)、専用麵 PU群 ( D S P、 DR P、 BMP) など、 プロセッサの «に対応して、 当!^^ごとの PUについ て F Vモードを同期して設定する複数の F V制御レジスタを設けるようにしても良い。 この 図 8の F V制御テーブル 2 6にプロセッサの種類毎に F V制御レジスタを設け、 各 C PU、 D S P、 DR P、 BMP毎に F V制御レジスタを * ^することにより、 一つのレジス タを変更することにより、 プロセッサの «毎に F V制御モードを変更することができる。 ぐ B C領域 >
続レ、て、 上記図 1 6で示したメモリマツプの先頭領域に設けたブロードキャスト (B C) 領域について、 以下に説明する。 当該 B C領域は書き込み専用の領域であり、一 PUが当該 B C領域の一アドレスに対しデータの書き込みを行うと、 当該アドレスに予め対応させた全 PUの各 LMエントリに当該データを、 ローカルバス L BU S 1 9を介して同時に書き込む 。 これにより、 全 PUで贿するデータを同時に各 PUのローカルメモリ LMが持つことと なり、 各 PU 1 0〜1 7は共有メモリ SMにアクセスしなくとも高速に LM上の当該データ にアクセスすることが可能となる。
また、 F V制御などのシステム制御を行うに際しても、 当該ブロードキャストを行うこと で全 PUに対し一斉に制御情報を ることが可能となる。 また、 PU範囲を指定するマ スク情報を饼せてブロードキャスト送信することで、 P uの範囲を限定してデータ^リ御情 報を 計るマルチキャスト機能を親することも可能である。 この結果、 例えばコンパィ ラが、 あるタスクを並列処理する複数 PUで構成する PUグ プを定義する齢、 当該 P Uグ プ内で一斉にタスク処理を開台したり、 F V制御を 亍したりすることが可能とな り、 システム全体のスループットが向上する。 くタスク処理時の F V制御!^ >
次に、 図 18 a〜図 18 dを用いて各 PU10〜17におけるタスク処理時の
動作周波数 (FV) 制御方法の Hfe について説明する。 各 PUで Hfrf"るタスク (プロダラ ム) は、 後 るコンパイラによって入力プログラムから^される。 つまり、 当該入カブ ログラムは、 ま -f^izi るコンパイルにより、 当該プログラムの構造を することで、 代 入文のみからなるベーシックブロック (BB)、 繰り返しプロック (RB)、 サブルーチン ( SB) といった ¾ ^が大きなステートメント 'ブロックをマクロタスク (ΜΤ) として分害 ij する。 本例では、 3個のマクロタスク MT 301〜303に分割されるとする。 ここで、 マ クロタスクは、 入力プログラム (ソースコード) を複数の粒度の単位ブロックに分割したも のである。 つまり、 マクロタスクに分割することで、 サブ ^チン等の粗 ¾ ^タスク間の並 歹 IJ処理を利用するマク口データフロー処理、 ノトプレベルの並列処理である中 並列処理 に、 s ^プロック内部のステートメントレベルの並列性を利用する 並列^ aとを階 層的に組み合わせて並列処理を行うマノ グレイン並列処理を行う。 また、 本魏形態では 、 プログラムの構成要素をマクロタスクとし、 マクロタスクの構成要素をタスクとし、 タス クを PU10〜17に割り当てるものとする。
続いて、 当該マクロタスク MTの任意の PUにおける演算コスト等の特 14情報を算出する ことで、 当該マクロタスク MTをどの PU上で ¾frTるかを決定し、 また当該マクロタスク MT間のデータ依存性^ ^御依存性を滅することで、 タスクの Hffll辭を決定する。
図 18 aは、 タスク間の並列実行依存性を示したマクロタスクグラフである。 本グラフは 、 マクロタスク MT1 (301) とマクロタスク MT2 (302) は同時に 亍できること を示し、 さらにマクロタスク MT3 (303) は、 マクロタスク MT1 (301) 及ひ TVIT 2 (302) の実行が終了後に、 実行できることを示している。 また本例では、 マクロタス ク MT1は PU10 (CPU0) に、 マクロタスク MT2は PU12 (BMP0) 12に、 マクロタスク MT3は PU10 (CPU0) に配置される。
以上のようにスケジューリングされたマクロタスクを通常処理 («!£·周波 ¾ ^御なし) したときの処理ガントチャートを図 18bに示す。 図 18 bにおいて、 マク口タスク MT 1と MT 2は並列 Hi亍可能なため、 MT 1は C PU (CPU0) にて (305)、 MT2は BMP (BMP0) にて (306) 同時に処理が開始 される。 通常処理時は CPU、 BMP共に される miBま通常の VD、 また動作周波数も 通常の FCが供給されている。 本例では、 CPUにおけるマクロタスク MT1の処理サイク ノレ数は、 BMPにおけるマクロタスク MT 2の^ サイクル数より小さいため、 CPUにお けるマクロタスク MT1の処理 (305) 力 BMPにおける MT2の処理 (306) (こ先 行して終了する。
CPUはマクロタスク MT 1の処理 (305) を終了したため、 次にマクロタスク MT 3 を処理 (307) することになるが、 マクロタスク MT間の依存関係から BMPにおける M T 2の処理 (306) が終了するまでは、 CPUにおいて次に処理すべきマクロタスク MT 3を実行することができない。 そのため、 CPUは BMPでのマクロタスク MT 2の処理が 終了するまでアイドル状態となる。 当該アイドル状態においても、 CPUに対しては通常の ¾¾S¾EVD及びクロック F Cが 合されているため、 余分な ®Λを消費することになる。 そこで以上を解決する一方法として、 CPUにおいてマクロタスク MT 1を frTる際に 、 BMPがマクロタスク MT 2の処理に必要とする時間と、 CPUで るマクロタスク MT1の処理時間が等しくなるよう、 CPUの動作周波数を通常時 (FULLモード) より も謹させる LOWモード(図 9の 1Z4FCを供糸^ Tるモード) で,画する (308)。 つ まり、 BMPを通常時の FV制御モード (FULL) で駆動する一方、 〇?11の ¥制御モ 一ドを L OWモードとし、 処理が早く終了する方の P Uの動作周波 ¾¾ HS^し、 並列処理 を行う P U間で F V制御モードが異なるように F V制御レジスタの設定を行う。 本手法によ る FV制御適用時のガントチャートを図 18 cに示す。 コンパイラは、 CPU (CPU0) におけるマクロタスク MT1の処理サイクノレ^ ¾ぴ、 BMP (BMP0) におけるマクロタ スク MT 2の処理サイクノ^:を^^もることで、 双方の S時間が等しくなるよう C P の 動作周波数を決定する。 この結果、 CPUの動作周波数が iS^されるため、 当該 PUに る « «BEVLも ig^することが可能となり、 消費 を: il化できる。
つまりこの例では、 マクロタスク MT1について、 〇?11の 制御モードを図9の 「L OWモード」 に設定し、 並列的に処理が行われる BMPの FV制御モードを 「FULL」 に 設定する。
また、 上記図 18bの C PUアイドル状態を解決する別の方法として、 C PUにおけるマ クロタスク MT 1の処理 (309) が終了した時点で、 . C P Uの 及ひ 作クロック の供給を遮断し待 Κ態とする (310)。つまり、 CPUがマクロタスク MT1の処理を完 了すると、 ?11の 制御モードを図9の 「OFF」 に設定する。 そして、 マクロタスク MT 3の開始時に、 FV制御モードを 「FULL」 に設定し、 処理を再開する。 本手法によ る F V制御適用時のガントチヤートを図 18 dに示す。
図 18 dにおいて、 CPUによるマクロタスク MT1の処理は BMPにおけるマクロタス ク MT2 (306) より先行して終了するが、 当該終了時点で CPUを待纖態 (OFF) とし、 BMPがマクロタスク MT 2の (306) が終了した時点で再び C PUを通常の fl^flffi及 Ό¾¾作クロックを供糸^ Τることで通常状態に復帰させ、 マクロタスク MT 3の処 理 (307) を開始する。 この結果、 CPUをアイドノレさせることなく動作が停止するため 、 消費 ¾Λを «できる。
このように、 プログラム (タスク) をコンパイルする時、 PUの構成に基づきコンパイラ が予め事前の処理時間を!^もり、 コンパイノレ時に処理 ιϋΫを静的に決定できる部分に関し ては事前に達手順を決定し、 PU毎にきめ細かく動作周波辦嗍及ぴ飄管理を行うこと で、 マルチプロセッサシステムの性能を損なわずに を 化することが可能となるので ある。
くタスク処理時 (リアルタイム制約時) の FV制御 〉
以上では、 マクロタスク (ΜΤ) の ^条件が他のマクロタスク ΜΤに依存する^^の F V制御方法を説明したが、 他にもタスクがある一定時間内に処理すべき制約を持つ、 すなわ ち図 19 aで図示するような、 当該タスクの処3¾限 (許容時間) が決定されているリアル タイム処理タスクを^とした F V制御方法も考えることができる。
図 19 aで例示したマクロタスク (MT1) 311では、 「FUL L」モード、つまり通常 の « βΕΕ及びクロック周波数で動作する CPUで処理した:^、 処糊限 (De a d 1 i n e) よりも先行して鍵が終了する。 この 処理が終了した時点で CPUはアイドル 状態となるが、 本来の処理期限に対して余裕があるため、 処 ffl限制約内で CPUの動作周 波数を赚させる (312) ことが可能となる。
本手法による FV制御適用時のガントチャートを図 19bに示す。 コンパイラは処理期限 までに処理を完了可能な動作周波数を貝賴もり、 図示のように CPUの FV制御モードを 「 LOWj モードに決定する。 その結果、 供糸 «EVLも籠することができ、 消費 を最 適化できる。
また、 同様にマクロタスク MT 1の処理 (313) が終了した時点で C P Uの «Μ¾ひ!!] 作クロックを遮断する (314) ことで、 消費 ¾Λを観するようにしてもよい。 本手法に よる FV制御適用時のガントチャートを図 19 cに示す。 この場合、 CPUは 「FULL」 モードでマクロタスク MTiを処理し、 処 a¾限前に処理を完了することになる力 マクロ タスク MT 1の完了時に動作モ一ドを 「◦ F F」 とすることで、 無駄な 消費を回避する ことができる。
くコンパイラの処理フロー〉
次に前述したマルチプロセッサ 'アーキテクチャ上で、 プロセッサユニット (PU) の特 性に合わせたスケジューリングと ·周波数の動的変化による消費 の; 制御を行う コ一ドを «するコンパィノレ方法と、 当該手法を難したコンパィラの処理について以下順 を追って説明していく。 図 20に本手法を実装したコンパイラ 40の処理フローを示す。
<マクロタスクの^^〉
Cや F o r t r a n等の高級 ¾|¾で fffiiされた逐次構造の入力プログラム 400は、 まず 、 当該プログラム構造を讀することで、 繰り返しブロック (RB : Re p e t i t i o n B l o c k), サブノ "チン (SB : Sub Rou t i ne)ゝ «代入文ブロック (BP A: B 1 o c k o f P s e udo As s i gnmen t s t a t emen t sノ の 3種類の が大きなマクロタスク (MT) に分割し、 各マクロタスクを する (401 )。 R B【 レープブロックで各階層での最も外側のループであり、 B P Aはスケジユーリング オーバーへッドあるいは並列性を考慮し、 代入文からなる複数の »ブロックを融合あるい は分割したブロックである。 図 2 1に、 上記のような入力プログラム (ソースプログラム 4 0 0 ) の一例を示す。
<D i r e c t i V e指定〉
なお、 当該ソースプログラム 4 0 0中には、 予め P Uの割り当てを記 することが可能で あり、 例えばあるサブルーチンを D S Pに、 またあるサブルーチンを C PUに割り当てるこ とを明示的に指定することも可能である。 その結果、 当該 D S Pサブ ^チンはコンパイラ 4 0によりさらに並列性の^ iが行われ、 例えば D S Pが 4個ある:^、 当該 4個の D S P に対してコンパィラ 4 0は並列ィ匕スケジユーリングを ¾ ^する。
ぐデータ依存 ·制御フ口一^?〉
続いて、 分割生成された当該マクロタスク間の制御フロー及びデータ依存性を籠し、 マ クロタスク MTの^ mi醉関係を抽出する (4 0 2)。図 2 1の入力プログラム 4 0 0は、逐 次的に fffilされているため、 通常のコンパイラ 4 0によって される新コードは、 当該 プログラムの と同様に逐次的な 1 ^で菊亍される力 マクロタスク MT間で見ると必ず しも IKiされた順序で "る必要がないことが多い。 .
つまり、 マクロタスク MT間において、 制御またはデータ参照の依存性がなレ、 特に マノレチプロセッサシステムにおいては、 複数の p Uに複数のマクロタスク ΜΤを配置して同 時に、 または jl,を変更して、 全体の 時間力短くなるようスケジユーリングすることが 重要となる。
このようなスケジューリングを行うためには、 MT間の並列性を籠する必要がある。 そ こで、 この^?に向けた として、 データ依存 ·制御フロー 処理 4 0 2により、 マク 口タスク MT間の 亍 II醉関係を抽出する。
<ノ プレベル並歹 lj†¾^)f〉
続いて、 マクロタスク MT内の中 S レベルの並列' として、 ノトプレベルの並列ィ匕 を行う (4 0 3 )。 ノ^ "プレベル並列ィ匕 4 0 3では、ノ -プの繰り返し (イタレーシヨン) 単 位間のデータ依存性を解折して、 各ィタレ一ションカ独立に処理できるかを判断し、 可能な は各ィタレーションを複数の P Uに割り当てて並列 を行う。 また、 単一の プを複数のノ^ "プに分割して並列性を高めたり、 データのコピーや配列 変数の拡張により、 各ノ "プ間のデータ依存性を削时ることで並列化したり、 また複数の ノ!^プを単一のノ!^ "プに融合することでノ "プ制御に必要なオーバーへッドを軽減したり、 といった様々な手法により プの並列化を翔する。
<処理コスト續 >
次に、 上記 されたマクロタスク ΜΤを各 PUで節した際に必要となる処理サイクル を ¾もる、処理コスト^ fを行う (4 0 4 )。処理コスト (演算コスト) の もり方法と しては、 例えば C PUなどに関しては、 乗算や加算など命令レベルで必要とするサイクル数 を処理コストテーブル 4 2 0にプロフアイリング情報として ί ^しておき、 当該テーブル 4 2 0を参照することで、 マクロタスク ΜΤを当該 PUで ¾m "る際の逐次処理サイクノレ数を ¾もることができる。
また、 01 ?ゃ0 3 ?など、 プログラム中から表現される命令レベルでのサイクノレ数の見 積もりが困難な:^は、 一度当該プロックのプログラムを D R Pや D S P用の ϊコードを ^^する夫々のローカルコンパイラを呼び出し、 変換した 亍コードを元にプロフアイリン グを行レ、、処理コストを求める (4 1 3 )。 なお、 ローカルコンパイラは、 P Uの に応じ て予め設定され、 例えば、 D S Pであれば D S Pのローカルコンパイラプロフアイリング 報を、 DR Pであれば DR Pのローカルコンパイラプロフアイリング情報を用いる。
また、 例えば分岐を含む^ \ あるいはノトプのサイズ 己列のサイズが、 マクロタスク MTの菊ラ前では定まらないような においは、 ロー力ノレなコンパィラで一度プロフアイ リングすることにより、 精度を高めた処理コストの算出を行うこともできる。 なお、 本プロ フアイリングを行わずマクロタスク MTが ϋを含む ^は、 確率を 5 0 %としてコス ト算出を行う。 また、 同じくプロフアイリングを行わずノ!^プゃ配列のサイズが定まらない # ^は、 例えばノ プを固定回数とし、 また配列宣言時の最大サイズとする、 等の方法を適 用する。
以上では^ aコストを、 処理サイクル数 (時間) として定義したが、 他にコストを ®Λと して定義することで、 が最小となるようなスケジユーリングを行うことも可能である。 例えば、 処理サイクル数とマクロタスク MTを完了すべき処翻限から、 設定可能な F V制 御モード 01波数、 動作 «E) のうち処糊限内で最小の消費 ¾Λとなる動作モードを選択 する。 あるいは、 ?1;の消費¾¾は、
消費 «Λ=動作 ®Ε 2 X職周波数
と!^もることができるので、 処環限内で消費 が最小となる F V制御モードの組み合 わせを選択し、 スケジューリングすればよレ、。 例えば、 図 1 9 bのように L OWモードのみ で、 処理を実行する^^、 図 1 9 cのように複数の F V制御モードを組み合わせる。 ある レ、は、 処理時間が最小かつ消費 が最小となる F V制御モードの組み合わせを選択するこ ともできる。
くマクロタスク間並列 't4^ff=最早紫亍条件籠〉
コンパイラ 4 0はマク口タスク MTの処理コストが決定した後、 データ依存 ·制御フロー 漸処理 4 0 2で抽出したマクロタスク MT間の制御フローと、 データ依存性を同時に讀 した結果から、 マクロタスク MT間の並列性、 つまり各マクロタスク MTの を最も早く 新してよい条件 (最早新条件) を決定する (4 0 5 )。
この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ (MTG) である 。 図 2 1の入力プログラムを解析し生成された MTGを、 図 2 2に示す。 なお、 マクロタス ク間並列' 結果は、 マクロタスクグラフテーブル 4 2 1として外部記 1t¾置に され 、 後段のコンパイル処理で使用される。 なお、 この外部記 tt¾置は、 コンパイラ 4 0を紫亍 する図示しなレヽ計算機のものを指す。
<マクロタスクグラフの説明 >
以下、 図 2 2を参照しながら、 マクロタスクグラフ MTGについて説明する。 本グラフ中 の各ノ一ドはマク口タスク MTを示し、 ノード間の はマク口タスク間のデータ依存関係 を、 ノード間の ·はマクロタスク間の制御依存関係を、 ノ一ド内の /J、円が条件分岐を表し ている。 例えば、 マクロタスク MT 1—1 ( 5 0 1 ) から MT 1— 2 ( 5 0 2 ) 及 D T 1 —3 ( 5 0 3 ) に対して織が伸びているが、 これ の大きいマクロタスク MT 1—2 RXMAT 1 3が MT 1 1を Hi亍した結 じたデータを入力データとして用レ \ 処理を ¾ίϊしているという依存 M ^があることを示している。 そのため、 として、 MT1 _ 2及ひ IIT 1—3 ilMT 1 _ 1の終了後、 亍できることを示す。
また、 入力プログラム 400から求めたマクロタスク ΜΤ 1—2 (502) は、 複数のル 一プゃサプ ^チンで構成された ¾¾ の大きいブロックなので、 コンパイラ 40は当該マク 口タスク MTをさらに複数のマクロタスク MTに階層的に分割する。 よって、 当該マクロタ スクグラフ MT Gでは MT 1— 2中に、 別階層でさらにマクロタスクダラフ MT G 1 _ 2を 構成する。 マクロタスク MT1_3 (503) も同様に別階層のマクロタスクグラフ MTG MTG1一 3を構成する。
マクロタスク MT1— 2 (502) 内のマクロタスクグラフ MTG1— 2 (510) を見 ると、 タスク MT1— 2— 1 (511) 力らはタスク MT 1— 2—2 (512)、 タスク MT 1— 2—4 (514)、 タスク MT 1— 2—5 (515) に鎌が延びているため、 MT1_ 2—1 (511) 終了後、 同時にこれら 3つのタスク 512、 514、 515を^? ~るこ とが可能である。
また、 タスク MT 1— 2—2 (512) はさらにタスク MT1_2一 3 (513) へ依存 があるが、 これは MT 1— 2—2 (512) のタスクが終了後、 MT 1_2— 3 (513) のタスクを^ Tればよレヽ。 また、 タスク MT1_2— 4 (514) 及ひ¾1丁1— 2— 5 ( 515) 力らタスク MT 1— 2—6 (516) に対して が延びているため、 タスク MT 1— 2—4 (514) 及びタスク MT 1— 2—5 (515) 双方の 亍が終了した時点で M T1— 2— 6 (516) が紫亍できる。
以上のように、 マクロタスク MT 1—2は新前に並列 jll^関係は確定されており、 あら 力 じめ固定的 (静的) にタスクをスケジューリング可能である。
続いて、 マクロタスク MT1_3 (503) 内のマクロタスクグラフ MTG (520) を 見ると、 マクロタスク MT1_3_1 (521) には小円が するが、 これはタスク MT 1— 3—1 (521) が条件^ 1¾を含むことを示している。 小円からタスク MT 1— 3— 2 (522)、 MT1— 3— 5 (525)へは矢印のある破線が伸びており、 また制御依存の O R条件を表す点線のアーク 529が重なっているため、 当該条件がタスク MT 1— 3— 2ま たは MT— 1—3— 5の ί可れかに "ることを示している。
また、 タスク ΜΤ 1—3— 3 (523) へは矢印のなレ^!力延びており、 タスク MT1 —3—3 (522) への矢印のない当! ¾ ^と、 タスク MT1— 3_2 (523) に接続さ れる■上には、 制御依存の AND条件を表す実線のアーク 528が重なっている。 これは 、 もし当該条件で、 矢印で指されているタスク MT1— 3— 2の方向に^"すると、 同一の に制御依存してレ、るタスク MT1— 3— 3が同時に 亍可能なことを示してレ、る。 なお 、 図中!^はタスクの実行が確定される制御依存関係と、 データ依存しているタスクが実行 されない の条件を表している。 また、 矢印がついた は、 データ依存'制御フロー解 析 (402) で求めた制御フローと同一 (つまり、 オリジナル) であることを表す。
なお、 タスク MT 1— 3—1 (521) の条件 は、 当該タスク MT 1— 3— 1を新 しないと分岐方向が確定しないため、 実行時の状況に応じたスケジユーリングを行う必要が ある。 当該条件分岐力 S確定し、 タスク MT 1— 3—2 (522) 及びタスク MT1— 3— 3 (523) 方向に した 、 タスク MT 1—3—2 (522) 及ぴタスク MT1— 3—
3 (523) 力らタスク ΜΤί_3_4 (524) にデータ依存関係を示す雄があるため 、 双方のタスク ΜΤ (522、 523) 処理の節が終了した時点で、 タスク ΜΤ 1—3—
4 (524) の処理を 亍できる。
また、 タスク ΜΤ 1—3—5 (525) 方向に した:^、 同様にデータ依存関係から 当該タスク 525が終了した時点で、 タスク MT1— 3— 6 (526) 及びタスク MT 1— 3一 7 (527) の処理を実行できる。
<プロセッサグルーピング >
次にコンパイラ 40は、 ^^されたマクロタスクグラフ MTGテープノレ 421を参照し、 マクロタスクグラフの形状や並列性に応じた、 またはユーザからの指定に応じたプロセッサ のグノ^-プ化を行う (406)。
つまり、 マクロタスクグラフ MTGで表現された上位階層のマクロタスク ΜΤ、 例えばマ クロタスク ΜΤ 1—2 (502)、 MT1— 3 (503) の形状、 並列性を簾し、 当該マク 口タスク ΜΤの処理に必要となる PU10〜17をグノ プ化し、 当該グノ! ^プに対してタ スク MTを割り当てる。 なお、 1つのグループは、 当該グループ内の特定用途プロセッサ ( DSP、 DRP、 BMP) を制御するための汎用プロセッサ (CPU) を少なくとも一つ含 合となる。 具体的には、 マクロタスクグラフ MTGの構成によりにコンパィノレ時に適切 なプロセッサ PUのグ "プ構成が判断できる齢、 コンパイラ 40は特定用途プロセッサ を含めたグントピジグを行う。
また、 マクロタスクグラフ MTGの構成によりコンパイル時にプロセッサグルーピングが できない 、 つまり 用途プロセッサ力 すべきタスクが多階層に し、 グノ^ "ピ ングカ S適切に行えなレ、 では、 コンパイル時にコンパィラ 40、 または ラ時にスケジュ ーラとしての鄉を果た 用プロセッサが、 タスクを特定用途プロセッサグノ^"プに対し. 割り当てる。 この際、 特定用途プロセッサへの負荷が大きレヽ場合、 汎用プロセッサで処理を frTる。 なお、 決定したグ Λ ^ビング情報は、 プロセッサグノ! ^ビングテープ、ノレ 422と して外部記難置に騰され、 後段の纏で鶴される。
本実施形態では、 図 22のマクロタスクグラフ MTG1 (500) においてマクロタスク MT1_2 (502) と MT1一 3 (503) の処理コストが同等であり、 これらマクロタ スク内部のマクロタスクグラフ MTG 1—2 (510)、 MTG1_3 (520) の実行には 汎用プロセッサによる特定用途プロセッサの制御が必要であるため、 2個のプロセッサダル ープを定義する。
次に、 マクロタスク MT1— 2、 MT1— 3の各 PUに る処理コストや並列性に応じ 、 各プロセッサグノ^"プ內で必要とされる特定用途プロセッサの構成を決定する。 本 H¾形 態においては、 必要とされるプロセッサ構成がマクロタスクグラフ MTG1上の利用可能な リソースで実現できるため、 プロセッサグループを、 CPU0、 DSP0、 DRP0、 DR Pl、 及び CPU 1、 DSP 1, BMP0、 BMP 1とコンパイル時に決定する。
くスタティックスケジュールとダイナミックスケジユーノレ〉
コンパイラ 40は次にスケジューリング方法として、 スタティックスケジュールかダイナ ミックスケジュールかを判! る(407)。夫々のスケジューリング方法の詳細は後财る 力 以下簡単に説明する。 まず、 もし、 タスク MTに条件 がなく最早新条件が予め決 定できる MTフローであれば、 前者のスタティックスケジュールを適用し、 コンパイラ 4 0 が予めタスク MTのスケジューリングを行い、 同期コード及び F V制御コード (スケジユー リングコ一ド) をタスク間に挿入する。
また、 もし、 タスク MTに^ f牛分咬がある、 あるいはタスク MTの処理時間が^ 時に変 IrTるなど、 コンパイル時に予測できなレヽ ΜΤフローであれば、 後者のダイナミックスケジ ユールを適用し、 コンパイラ 4 0は、 などの状況に応じた制御を 亍時に行うスケジュ 一リングプログラムを生成する。 コンパイラ 4 0がスケジューリングプログラム (スケジュ 一リングコード) を生成する利点は、 従来のマルチプロセッサのように O Sあるいはライブ ラリにネ且; タスクの^^、 スケジユーリングを すると、 数千から数万クロックの;^ バーヘッドが生じてしまう可能性があり、 それを避けるためである。
<スタティックスケジユーリング >
まず、 スタティックスケジューリングの処理フローについて説明する。 スタティックスケ ジユーリングでは、 コンパイル時にタスク MTの割り当てと ¾ίϊ順序力 Sすでに決定している ため、 まず、 マクロタスクスケジューリング処理 4 0 8により、 マクロタスクテープ'ノレ 4 2
1及びプロセッサグルーピングテーブル 4 2 2情報を参照し、 PU間における実行タスク間 の同期ゃ他タスクの起動等を行う制御情報を し、 当該制御情報の挿入箇所を決定する。 また、 さらに、 タスクプログラムまたはタスクが必要とするデータを、 他 P Uのローカル メモリ LMや^ メモリ SMより当該 PUのローカルメモリ LMにロードするといつたデー タ I*報も併せて生成する。 このような、 データロー力ライゼーシヨン手法により、 ロー カルメモリ LMを^ ¾に活用し、 データの^ ¾量を最 匕する。 以上の処理により^^され たスケジユーノレ If報は、 マクロタスクスケジュールテーブル 4 2 3として、 外部記',置に される。
続いて、 コンパイラ 4 0は、 スタティック F Vスケジューリング処理 4 0 9を行う。 本処 理では、 図 1 8 a〜図 1 8 dで説明したタスク並列処理実行時の F V制摘 に基づき、 マ クロタスクスケジユーリング 4 0 8で生成されたスケジユーノレ If報 (マクロタスクスケジュ ールテーブル) より、 タスクの処理コスト及びスケジュール期限 (処 a¾限) で決定される 余裕度を判定し、 当該余裕度に応じた動作周波数 ·供^ mmを決定する p u動作モードを設 定するため、 FV制御情報を する。 当該 FV制御情報は、 麵 ' FV制御スケジュール テーブル 424として、 外部記難置に麟される。 なお、 余裕度は、 例えば、 新開始か ら実行完了までの処理時間と、 処理期限までの時間から求まるものであり、 各 PU10〜1 7の性能上の余裕の度合レ、を示す。 例えば、 図 19 aのように、 CPUOの 亍完了から処 ■限までの時間力 S長い^^には余裕度が大きいと判定し、 逆に 亍完了から処 限まで の時間が短レヽ には余裕度が小さいと判定できる。
また、 処翻限 (許容時間) は、 入力プログラムに! Ε3ί&したり、 コンパイラ 40の処理時 に図示しないコンソールから入力してもよレ、。
<ダイナミックスケジューリング >
次に、 ダイナミックスケジューリングの処理フローについて説明する。 ダイナミックスケ ジユーリング時は、 タスク MT内の条件分岐等の不確定要素によりコンパイノレ時にスケジュ 一リング内容を決定することができない。 このためコンパイラ 40は、 タスク MTの処 果に基づき、 プログラム実行時に動的にスケジューリングを行うスケジューリングプロダラ ムを生成する (410)。本プログラムは、処理結果に基づきタスク MTの起動や同期、及び 当! ¾MT力必要とするデータのロードを行う。 また、 さらに図 18 a〜図 18 dで説明した タスク並列^ 亍時の F V制 fe^に基づき、 P Uの動作周波数 ·供^ flffiを決定する動 作モード (FV制御モード) を設定する。 生成したスケジューリングプログラムは、 電源' FV制御スケジュールテーブル 424として、 外部記 H¾置に勝される。
<スケジユーリングコ一ドの生成 >
コンパイラ 40は以上の処理により、 入力プログラム 400の PU10〜17へのスケジ ユーリングを完了する。 これまでの処理で生成したスケジユーリング情報は外部記 1t¾置に テーブル (421〜424) として麟されている。 コンパイラ 40は、 当該テーブル (4 21〜 424 ) にアクセスし、 タスクの WI^^一タ^†青報、 及び F V制御情報を読 み込み、 入力プログラムに対してスタティックスケジュール部には制御コード (スケジユー リングコード) を、 またダイナミックスケジュール部にはスケジューリングプログラムを付 カロする (411)。制御コードは、例えば ϋメモリ型並列計^^における並列プロダラミン グ標準インタフェースである MP I (Me s s a g e Pa s s i ng I n t e r f a c e) などを用いて生成する。 当該コードが付加された入力プログラムは、 さらに各 PUの種 類毎に用意されたローカルコンパイラで処理することにより、 当該 PUにおける節バイナ リコードに変換される (412)。 なお、 ローカルコンパイラは、上述のように CPU、 DS P、 DRP、 BMPの PUの 毎に予め用意され、 コンパイラ 40から各 PUの■に応 じた口一力ノレコンパイラを呼び出して実行バイナリコードを生成するものである。
<スケジューリングの結果 >
本スケジユーリング結果の例を図 23に示す。 図 23は、 MTのスケジユーリング結果を P U毎に時間軸で示している。 本例では C P U 0がタスクの起動や同期、 F V制御などの管 理を行うため、 最初に CPU0上にコンパイラ 40が^ ¾した制御コード 550力 Sロードさ れる。 当該制御コード 550は、 各 PUの FV制御を行うコード、 及び CPU0においてマ クロタスク MT 1—1を起動するコードで表現されている。 つまり CPU0は、 マクロタス ク MT 1— 1を ¾ίϊする C P U 0に対し動作モードを F U L Lにするよう F V制御レジスタ の値を "3" に設定する。 また、 他の PUに対しては処理すべき ΜΤがないため、 動作モー ドを OFFにするよう FV制御レジスタの値を "0" に設定する。 次に、 CPU0は自 CP U0にてマクロタスク MTl— 1の処理を開台する。
CPU0でマクロタスク MT1— 1処 SU 後、 コンパイラ 40が生成した制御コード 5 51を ¾iし、 F V制御モードの設定を行う。 次に処理すべきタスクは、 マクロタスク MT 1—2及ひ *MT 1—3の下ィ のマクロタスクグラフ MT Gで指定されたタスク MT 1— 2 — 1及ぴタスク ΜΤ1_3— 1であり、 前者は CPU 0にて、 後者は CPU 1にて節され る。
従って CPU0はタスク MT1_3— 1を処理する CPU 1の FV制御レジスタを通常モ ード (FULL) に設定する。 また CPU 0に関しても、 すでに F V制御モードは通常モー ドである力 引き続き MT 1—2 1を処理するため通常モード (FULL) としておく。 このとき、 tiflSタスク MT1— 2— 1及ひ iilBタスク MT1— 3— 1の処理中は、 他の P U上での処理タスクは しないため、 当該他の PUは引き続き動作モードを OF Fとして おく。 続いて CPU0は、 自 CPU0においてタスク MT1— 2— 1を、 また CPU1にお いてタスク MT 1— 3— 1の処理を開始する。
なお前述した通り、 マク口タスク MTG 1—2は条件 を含まないためコンパイル時で すでにスケジューリング力 S行われており (スタティックスケジューリング)、 CPU0、 DS P0、 DRP0、 DP 1グノ^ "プへタスク MTを割り振る。 またマクロタスク MTG 1—3 は条件 を含むため、 新時にスケジューリングを行うプログラムを付加し、 Htf結果に よって CPU1、 DSP 1, BMP0、 BMP 1のグノ^ "プへタスク MTを割り振る。
続レ、てマクロタスクグラフ MT G1— 2のタスク MTグノ! ^プのスケジユーリングにつレヽ て説明する。 タスク MT 1— 2— 1の Hfiが CPU0において終了すると、 CPU0は制御 コード 552を実 ί?し、 タスク ΜΤ 1— 2— 2を処理するために DSP0を通常動作モード FULLとするよう、 FV制御レジスタを "3" に設定する。 またタスク MT 1— 2— 4及 t^MTl_2— 5はコンパイノレ時の FVスケジユーリングによるタスクの余裕度判定により DRP0、 DRP 1を低 ¾Λ動作モード MI DDL Eとするよう、 FV制御レジスタを " 2 " に設定する。 また、 CPU0においては実 frTべき MTはないが、 スケジューラを実行し DSP0、 DRP 0, 及ぴ DRP 1のタスクの同期管理を行っているため、 スケジューラは CPU0に対して低 ¾Λ動作モード LOWとするよう、 FV制御レジスタを "1" に設定す る。 そして、 タスク MT 1— 2—2、 タスク MT 1— 2—4、 及ぴタスク MT 1— 2— 5の 処理を開女台する。 なお、 タスク MT1— 2— 2は当該 MT処 «了後、 同じく DSP0にお いてタスク MT 1— 2— 3を ることとなるため、 この時点でタスク ΜΤ 1— 2— 2終 了後にタスク ΜΤ1— 2_3を起動するようタスクの起動予約 (タスクレディキューへのタ スクの登録) をしておく。
次に肅己タスク ΜΤ 1— 2— 4及びタスク ΜΤ 1— 2—5の処理が双方とも終了したこと を CPU0力 S判定すると、 当該 CPU 0は制御コード 553を節し、 CPU0はタスク M T 1 _ 2— 6を処理する自 C P U 0の動作モードを M I D D L Eに、 また D R P 0及び D R P 1は処理すべきタスクが雜しなレ、ため、 動作モードを O F Fに設定し、 通常よりも と動作周波数を赚した状態で 5タスク MT 1— 2— 6の処理を開始する。 ttl!Eタスク M Τ 1— 2— 6の処理が終了すると、 CPU0は制御コード 554を 亍しタスク ΜΤ 1—2 — 3の処 了を判^ Τると、 MTG 1—2グノープ内のタスク処理が完了したため、 CP U 0は DSP 0の動作モードを OFFに設定する。
続いて MTG 1_3のタスク MTグノ^ "プについて説明する。 マクロタスク MT 1_3は 内部に を持っため、 タスクを紫亍しないと^ ^向がわからなレヽ。 従って、 Hfi1時の状 況によりタスク、 データのロード、 タスクの起動、 同期及び FV制御コードの管理を行うダ イナミックスケジューラ 555を、 CPU1において実行する。 当該スケジューラ 555は 、 まずタスク MT 1— 3— 1を実行するため CPU 1の動作モードを FULLに設定し、 タ スク MT1_3— 1を起動する。 タスク MT 1—3—1 Hi亍終了後、 スケジューラ 556は
^^向を判定し、 次に起動するタスクを判 る。
図 23に示したスケジューリングでは、 タスク MT1— 3_2が DSP 1にて、 タスク M T 1— 3— 3が BMP 0にて TOされる。 当該処理の起動前に、 スケジューラ 556は FV スケジユーリング結果に従い D S P 1の動作モードを FULLに、 また BMP 0の動作モー ドを LOWに設定する。 CPU 1においては、 実 m~べきタスク MTはないが、 スケジユー ラ 556を実行し DS P 1及ぴ BMP 0のタスク管理を行っているため、 スケジューラ 55 6は C PU 1の動作モードを 1ΜΛモード LOWに設定する。
次に、 CPU0上のダイナミックスケジューラ 557は、 fillEタスク MT1_3— 2及ぴ タスク MT 1— 3— 3の双方の 了を判定すると、 次にタスク MT 1— 3— 4を処理す る自 CPU 0の動作モード (FV制御モード) を FULLに、 また実 frTべきタスクが存在 しない DSP 1及び BMP 0の動作モードを OFFに設定する。 そして、 自 CPU 0におい て、 ΙΙ己タスク MT1— 3— 4を紫?1 "る。
以上により、 の PU10~17で構成されるマノ1^プロセッサにおいて、 マノ! ^ダレ ィン並列処理により、 亍時間が最小となるよう入力プログラムを並列化しスケジユーリン グした後、 各 P U間で処理時間が均一となるよう、 P U毎にきめ細かく動作周波数制御及ぴ 管理を行うことで、 最小の 時間で性能を損なわずに消費 の を図ることが可 能となるのである。
<コンパイラが する目的プログラム >
コンパイラ 4 0により、 以上で説明したようなスケジュールを行うスケジユーリングコ一 ドを、 入力プログラム 4 0 0に付加し PU毎に出力した出力プログラム (目的コード) の一 例を図 2 4及び図 2 5に示す。 図 2 4、 図 2 5は、 上記図 2 3で示した処理を記述したもの で、 図 2 4はマクロタスク MTG 1—2を処理するプロセッサのグループとして C PU 0、 D S P 0、 DR P 0、 DR P 1の各 PU用の菊亍コードを示す。 また、 図 2 5は、 マクロタ スク MTG 1—3を処理するプロセッサのグ ~プとして C PU 1、 D S P 1 , BMP 0、 1の各 PU用の節コードを示す。 コンパイラ 4 0の賊コードは賺コードで表現されて いるが、 前述したように実際は MP I等のインタフェース規格に従って表現される。
ぐまとめ >
以上のように、 本発明によれば、 多種のプロセッサユニット PUを集積するマルチプロセ ッサシステムにおいて、 当該 PUを効率よく動作させるプログラムの分割配置および制御コ 一ドを^" Tるコンパイラ 4 0により、 当該プロセッサシステムの性能を最大限活用しつつ 、 最小限の麵時間内に低 ¾Λにて効率よく処理することが可能となる。 また、 さらにはソ フトウエア開発者がプロセッサの構成を意識することなく、 短時間で極めて効率の良いプロ グラム作成が可能となる。
ぐ補足 >
なお、 上記 »形態にぉレヽては、 一つのチップに複数の P U 1 0〜 1 7を備えたマルチプ 口セッサシステムに本発明を適用した例を示したが、 図 1に示したチップを複数備えた並列 計 に適用することも可能であり、 上記と同様の作用効果を得ることができる。
また、 請求項 1 4、 請求項 2 2、 請求項 3 0において、 tif!Eプロセッサユニット毎に設定 されたプロファイリング情報に基づレ、て ΙίΐϊΕ単位プロックを処理する処理サイクノレ数を求め 、 当該処理サイクルから tins演算サイクル時間を求めることを赚とするマルチグレイン並 列化コンパイラ。 また、 請求項 1 4、 請求項 2 2、 請求項 3 0において、 前 1¾¾算サイクノレ時間は、 前記プ ロセッサュニット毎に設定された口一カルコンパイラにより tijfS単位プロックを節コード に変換し、 ΙΐΙίΒプロセッサュニット毎に設定されたプロフアイリング情報に基づいて Ι ΐΞ単 位ブロックを処理する処理サイクル数を求め、 当該処理サイクル数に基づいて ffil¾t算サイ クル時間を求めることを とするマルチグレイン並列ィ匕コンパイラ。
また、 請求項 1 5、 請求項 2 3、 請求項 3 1において、 前記プロセッサュニット毎に設定 されたプロファイリング情報に基づレヽて 単位プロックを処理する処理サイクル数を求め 、 当該処理サイクルから ΙίίΐΒΜΛを求めることを赚とするマルチグレイン並列化コンパイ また、 請求項 1 5、 請求項 2 3、 請求項 3 1において、 前 ia¾算サイクノレ時間は、 前記プ ロセッサュニット毎に設定されたローカノレコンパイラにより tfjfE単位プロックを ¾ίϊコード に変換し、 tiriaプロセッサュニット毎に設定されたプロフアイリング情報に基づいて tine単 位ブロックを する サイクノレ数を求め、 当該処理サイクル数に基づレ、て tirism^を求 めることを赚とするマノ グレイン並列ィ匕コンパイラ。
また、 請求項 1 3、 請求項 2 1、 請求項 2 9にお ヽて、 嫌己単位プロックの並列性を抽出 する処理は、 ήίίϊΕ抽出した単位ブロックをマクロタスクグラフテーブルに;^し、 fiit己単位 プロックを処理するのに必要なプロセッサュニットをグノレ—プ化してプロセッサグルーピン グテーブルに ¾ ^する処理とを含み、
ttifSスケジューリングコードを生成する処理は、 前記マクロタスクグラフテーブルとプロ セッサグルーピングテーブル及ぴコスト情報を参照してプロセッサュニッ卜の制御コードを
^^する処理と、 嫌己単位プロックの菊亍 mmこ応じて MI己制御コードを挿入する処理を含 むことを難とするマノ グレイン並列化コンパィラ。
また、 請求項 1 3、 請求項 2 1、 請求項 2 9において、 編己単位ブロックの並列性を抽出 する処理は、 tine抽出した単位ブロックをマクロタスクグラフテーブルに し、 肅己単位 ブロックを処理するのに必要なプロセッサュニットをグ プ化してプロセッサグノ "ピン グテープ 'ノレに する処理とを含み、 ΙίίΐΒスケジューリングコードを^^する処理は、 ΙΞマクロタスクグラフテーブルとプロ セッサグノレーピングテーブル及びコスト情報を参照して、 動的に前記単位ブロックのスケジ ユーリングを行うスケジューリングプログラムを生成する処理と、 前記単位ブロックの実行 JI醉に応じて tijfBスケジユーリングプログラムを挿入する を含むことを,とするマル チグレイン並列ィ匕コンパイラ。 産業上の利用可能性
本発明によれば、 多様な PUを集積するマルチプロセッサシステムにおいて、 当該 PUを 効率よく動作させるプロダラムの分割配置および制御コードを するコンパイラにより、 当該プロセッサシステムの性能を最大限活用しつつ、 低 *Λにて効率よく処理することが可 能となる。 また、 さらにはソフトウェア開発者がプロセッサの構成を: i^することなく、 短 時間で効率良いプログラム作成が可能となる。 その結果、 高い演算性能を持ち力ゝっ低 に することが強く望まれる、 カーナビゲーシヨンシステム 帯 «¾、 家電向けの L s Iに本発明を適用することができ、 高品質の動画像^声 、 また画像認 識 といった機能を することが可能となる。 また、 自動車における情報系、 制御系システム 向け L S Iに対しても適用することができ、 自動 システム等を ¾すること が可能となる。 またさらには、 将来非常に高い演算性能を有しつつ低 化が必須となる、 ス一パーコンピュータへの適用も可能である。

Claims

請求の範囲
1. 単一または複獎 のプロセッサュニットを複数個有するマルチプロセッサシステムで あって、
前記プロセッサシステムは、
プロセッサュニットに複数のク口ック周波数の内の一つを動作クロックとして供糸^" るクロック供給部と、
tin己プロセッサュニットに複数の ¾ffの内の一つを動作 として » る 供給部と ftilE^プロセッサュニットに供糸 る動作クロックと動作 «j£を設定するシステム制御レ ジスタと、
を備え、
前記プロセッサュニットのうちのいずれか一つが、 並列処理のスケジューリングに基づい て各プロセッサュニッ卜に供糸^ る動作クロックと動作 を tinsシステム制御レジスタに 設定することを赚とするマノ プロセッサシステム。
2. 請求項 1に記載のマルチプロセッサシステムにおいて、
廳己ク口ック供給部は、 当該ク口ック供給部に入力される周波数の難分の一の周波数を 動作クロックとして^ ることを mとするマノ^プロセッサシステム。
3. 請求項 1に記載のマルチプロセッサシステムにおいて、
前記システム制御レジスタは、 予め設定した複数のク口ック周波数のそれぞれについて最 適化した動作 ¾Εを予め設定し、 ΙίίΙΞプロセッサユニットのレ、ずれ力、一つは、 当該システム 制御レジスタの設定値に基づレヽて Ι ΙΕクロック周波数を選択し、 当該クロック周波数に対応 する動作 を決定することを W [とするマルチプロセッサシステム。
4. 請求項 1に記載のマルチプロセッサシステムにおいて、
前記システム制御レジスタは、 当該マルチプロセッサシステムを構成する複数の機能部位 単位毎に対応するビットフィーノレドを複 ¾定し、 当該ビットフィ一ルドに設定された値に 応じて tiJiat能 立単位毎に動作周波数と動作 «ΒΕをそれぞれ設定することを赚とするマ ノ^プロセッサシステム。
5. 請求項 4に記載のマノ^プロセッサシステムにおレヽて、
tiiaプロセッサュニットは、 予め複数の領域に区分けされたメモリを有し、
SilfEシステム制御レジスタは、 能部位と ΙΞメモリの複数の領域毎に対応したビッ トフィールドを有し、 当該ビットブイールドに設定された値に応じて ΙϋΙΞメモリの領域毎に 動作周波数と動作 をそれぞれ設定することを とするマルチプロセッサシステム。
6. 請求項 5に記載のマノ^プロセッサシステムにおレ、て、
fJlHビットフィールドは、 個別のァドレスを有し、
前記プロセッサュニットは当該アドレス 参照して値を設定することで、 前記ビットフィ ールドに対応した 11¾能¾5{立または t fiSメモリの^!域の動作周波数と動作 を設定す ることを赚とするマルチプロセッサシステム。
7. 請求項 4または請求項 6に記載のマルチプロセッサシステムにお 、て、
ffllE 能 立は、 プロセッサユニット内のメモリと、 複数のプロセッサユニットで す る^ メモリと、 各プロセッサユニットを接続するローカルバスと、 を含み、 これら機能部 位の少なくとも一つについて、 機能 立単位毎に動作周波数または動作 Sffiをそれぞれ変更 することを とするマノ^プロセッサシステム。
8 - 請求項 1に記載のマルチプロセッサシステムにおいて、
ttrt己プロセッサュニットのうち複数のプロセッサで される * ^メモリと、
Ι ϊΒ*^メモリに予め設定された複数の領域と、
前記共有メモリの前記領域毎に供給する動作電圧を設定する第 2のシステム制御レジスタ と、 を備えて、
前記プロセッサュ二ットが前記第 2のシステム制御レジスタに設定した値に応じて ¾ΐΠΕ共 有メモリの領域毎に動作 をそれぞれ設定することを とするマノ^プロセッサシステ ム。
9. 請求項 1に記載のマルチプロセッサシステムにおいて、
前記プロセッサュニットのうちのいずれか一つが、 並列処理の処理時間が最小となるスケ ジユーリングに基づいて、 各プロセッサュニットに供糸^ る動作ク口ックと動作 miEを tins システム制御レジスタに設定することを とするマルチプロセッサシステム。
1 0. 請求項 1に記載のマノレチプロセッサシステムにおいて、
前記システム制御レジスタは、 当該マルチプロセッサシステムのァドレス領域でプロセッ サュニット毎に一意のァドレス力設定され、 ttjf己各プロセッサュニットからアクセス可能に 設定されたことを 1¾とするマノ^プロセッサシステム。
1 1 . 請求項 1に記載のマルチプロセッサシステムにおいて、
tinsシステム制御レジスタは、 tinsプロセッサュニット毎に配置されたことを w [とする マノレチプロセッサシステム。
1 2. 請求項 1に記載のマルチプロセッサシステムにおいて、
前記プロセッサュニットはローカルバスを介して接続され、 前記システム制御レジスタは 、 tiff己ローカルバスに赚された制御テーブルに配置されて、 ΙίίΙΕプロセッサユニット毎の 設定値を ることを とするマルチプロセッサシステム。
1 3. 単一または複 通類のプロセッサュニットを複数個有するマルチプロセッサシステム に 亍させる目的プログラムを^^するコンパィラであって、
入力プロダラムを読み込む処理と、
鎌己入力プログラムを績し、 IB入力プログラムを複数の驢の単位プロックに分割す る処理と、
単位プロック間の制御依存性、 及びデータ依存性を^?し、 tif!E単位プロックの並列 性を抽出する と、
ffjfEマルチプロセッサシステムが具備する各プロセッサュニットで前記単位ブロックの演 算に必要なコスト情報を求める処理と、
tiHEコスト情報に基づいて firlE入力プログラムの処理時間が最小となるように、 ΙίίΙΕ単位 プロックを前記プロセッサュニットに割り当てるスケジユーリングコ一ドを生成する処理と 、
前記スケジユーリングコ一ドを入力プログラムに付加し、 前記各プロセッサュニット毎の 新コードを^ ¾し、 目的コードとして出力する処理と、
を計 に¾^ させることを とするマルチグレイン並列化コンパイラ。
1 4. 請求項 1 3に記載のマノ!^グレイン並歹 IJィ匕コンノヽ。ィラにおレ、て、
tUiaコスト情報を求める処理は、 ftjiEプロセッサュニッ卜が嫌己単位ブロックを処理する ために必要な演算サイクル時間をコスト情報として求めることを とするマルチグレイン 並列化コンパイラ。 .
1 5. 請求項 1 3に記載のマノレチグレイン並列ィ匕コンパイラにおレ、て、
膽己コスト情報を求める処理は、 ttilBプロセッサュニットが編己単位ブロックを処理する ために必要な電力をコスト情報として求めることを |敫とするマルチグレイン並列化コンパ イラ。
1 6. 請求項 1 3に記載のマノ!^グレイン並列化コンパイラにおいて、
ftllEスケジューリングコードを生成する処理は、
ItltE単位プロックをスケジユーリングによって割り当てられたプロセッサュニットで演算 した際に、 漏¾¾算に必要とする時間が MIEスケジューリングで許容された時間内であった # ^は、
前記プロセッサユ^ットの演算に際して消費する電力を低減するためプロセッサュニット に与える動作 及ひ 1M乍ク口ックを変化または遮断するための制御コードを «1 "る処理 を含むことを難とするマルチグレイン並列化コンパイラ。
1 7. 請求項 1 3に記載のマルチグレイン並列化コンパイラにおいて、
前記スケジユーリングコ一ドを生成する処理は、
ΙίίΙΞ単位プロックをスケジユーリングによって割り当てられたプロセッサュニット以外の プロセッサュニットについて、 動作クロック及ひ ¾作 の供給を遮断するための制御コー ドを^^することを赚とするマノ グレイン並列ィ匕コンパイラ。
1 8. 請求項 1 3に記載のマルチグレイン並列化コンパイラにおいて、
tinsプロセッサユニットは、 特定用途プロセッサユニットと汎用プロセッサユニットとを 含み、 ΙίίΙΞ前記スケジユーリングコ一ドを生成する処理は、
fijlE単位プロックを鍵するのに必要な fiflE特定用途プロセッサュニットを選択し、 さら に少なくともひとつの ^lfflプロセッサュニットを選択し、 これら特定用途プロセッサュニッ トと プロセッサユニットを 1つのヴ) プとして ΙίίΙΗ単位プロックを割り当てることを 赚とするマノ グレイン並列化コンパイラ。
1 9. 請求項 1 3に記載のマノ グレイン並列ィ匕コンパイラにおレ、て、
iia 亍コードを^^し、 目的コードとして出力する処理は、
tiffS各プロセッサュニットの觀に応じたローカルコンパイラを用いて ΙίΐΙ5¾ίϊコードを
^^することを赚とするマノ^"グレイン 列化コンパイラ。
2 0. 請求項 1 6に纖のマノけグレイン並列ィ匕コンパイラにおレ、て、
Ι5マノレチプロセッサシステムは、 前記プロセッサュニットに複数のクロック周波数め内 の一つを動作クロックとして供糸^ Τるクロツク^!合部と、 Ι ΙΞプロセッサュニットに複数の
®Εの内の一つを動作 mmとして供糸^ る^ ι~る ¾Λ 合部と、 ΐίιΐΕク口ック供給部及び
¾Λ供給部がプロセッサュ二ットに供 る動作ク口ックと動作 ®£とを設定するシステム 制御レジスタを有し、
前記スケジユーリングコ一ドを生成する処理は、
ΙΐίΐΞ単位プロックをスケジユーリングによって割り当てられたプロセッサュニットで演算 した際に、 算に必要とする時間が tiHBスケジューリングで許容された時間内であつチこ ¾ ^は、
前記プロセッサュニットの演算に際して消費する電力を«するため前記システム制御レ ジスタに設 る値を変更する制御コードを; ^する処理を含むことを mとするマノ グ レイン並列ィ匕コンパイラ。
2 1 . 単一または複翁種類のプロセッサュニットを複数個有するマルチプロセッサシステム に新させる目的プログラムを するコンパイラであって、
入力プログラムを読み込む と、
tiflH入力プログラムの 亍が完了すべき許容時間を設定する処理と、 tiff己入力プログラムを解析し、 前記入力プログラムを複数の粒度の単位プロックに、割す る処理と、
fillE単位プロック間の制御依存性、 及びデータ依存性を鐘し、 ttilE単位プロックの並列 性を抽出する処理と、
前記マルチプロセッサシステムが具備する各プロセッサュニットで前記単位ブロックの演 算に必要なコスト情報を求める処理と、
tin己コスト情報に基づいて tiit己入力プログラムの処理時間が ttiiE許容時間内となるように 、 前記単位ブロックを前記プロセッサュニットに割り当てるスケジユーリングコ一ドを生成 する処理と、
肅己スケジユーリングコ一ドを入力プログラムに付加し、 廳己各プロセッサュニット毎の 実 f亍コードを し、 目的コードとして出力する処理と、
を計^ iに紫亍させることを «とするマノけグレイン並列化コンパィラ。
2 2. 請求項 2 1に記載のマルチグレイン並列ィ匕コンパイラにおレ、て、
廳己コスト情報を求める処理は、 鎌己プロセッサュニットが ttlfS単位ブロックを処理する ために必要な演算サイクル時間をコスト情報として求めることを,とするマノ グレイン 並列化コンパイラ。
2 3. 請求項 2 1に記載のマノ ^グレイン並歹 IJィ匕コンパイラにおレ、て、
ttilSコスト情報を求める処理は、 編己プロセッサュニットが ,単位ブロックを処理する ために必要な ®Λをコスト情報として求めることを とするマルチグレイン並列ィ匕コンパ イラ。
2 4. 請求項 2 1に記載のマルチグレイン並列ィ匕コンパイラにおレ、て、
前記スケジューリングコードを生成する処理は、
tilt己単位プロックをスケジュ一リングによって割り当てられたプロセッサュニットで演算 した際に、 ¾(1!¾¾算に必要とする時間力 Sffi!Eスケジユーリングで許容された時間内であった は、
前記プロセッサュニットの演算に際して消費する電力を低減するためプロセッサュニット に与える動作電圧及ひ ¾ι作ク口ックを変化または遮 るための制御コードを生成する処理 を含むことを赚とするマルチグレイン並列ィ匕コンパイラ。
2 5. 請求項 2 1に記載のマノけグレイン並歹 IJィ匕コンパイラにおレヽて、
ΙΐΠΞスケジユーリングコ一ドを生成する処理は、
前記単位ブロックをスケジューリングによって割り当てられたプロセッサュニット以外の プロセッサュニットにつレヽて、 動作ク口ック及ひ 作 の供給を遮 るための制御コー ドを することを赚とするマノ グレイン並列化コンパイラ。
2 6. 請求項 2 1に記載のマノ グレイン並列化コンパイラにおレ、て、
ffjf己プロセッサュニットは、 特定用途プロセッサユニットと汎用プロセッサユニットとを 含み、
ΙίίΙΕ前記スケジューリングコードを生成する処理は、
ΙίίΐΞ単位ブロックを処理するのに必要な til 特定用途プロセッサュニットを選択し、 さら に少なくともひとつの汎用プロセッサュニットを選択し、 これら特定用途プロセッサュニッ トと汎用プロセッサュニットを 1つのグノ! ^プとして嫌己単位ブロックを割り当てることを 赚とするマノ グレイン並列ィ匕コンパイラ。
2 7. 請求項 2 1に記載のマノ グレイン並列ィ匕コンノ、。ィラにおレヽて、
tiHEHfi1コードを し、 目的コードとして出力する^ Sは、
ΙίίΙΕ各プロセッサュニットの■に応じたローカルコンパィ.ラを用いて tiffB i?コードを することを特徴とするマルチグレイン並列ィ匕コンパイラ。
2 8. 請求項 2 1に記載のマノ ^グレイン並列ィ匕コンパイラにおレ、て、
ίίίΙΞマノレチプロセッサシステムは、 前記プロセッサュニットに複数のクロック周波数の内 の一つを動作クロックとして供^ "るク口ック供給部と、 tinsプロセッサュ二ットに複数の
®Eの内の一つを動作 として供^ 1"る る 供糸合部と、 tfilEク口ック供給部及び 供給部がプロセッサュニットに供糸^る動作ク口ックと動作 とを設定するシステム 制御レジスタを有し、
tiJlEスケジューリングコードを生成する処理は、 fijlE単位ブロックをスケジユーリングによって割り当てられたプロセッサュニットで演算 した際に、 tilt¾t算に必要とする時間が tiifBスケジューリングで許容された時間内であった ^は、
前記プロセッサュニットの演算に際して消費する電力を低減するため前記システム制御レ ジスタに設定する値を変更する制御コードを する処理を含むことを »とするマノ^グ レイン並列化コンパイラ。
2 9. 単一または複数麓頃のプロセッサュニットを複数個有するマルチプロセッサシステム に実行させる目的プログラムを生成するコンパイラであって、
入力プロダラムを読み込む処理と、
tins入力プログラムの^?が完了すべき許容時間を設定する処理と、
ΙίίΙΗ入力プログラムを解析し、 前言己入力プログラムを複数の粒度の単位プロックに分割す る処理と、
ΙΪΙΙΕ単位ブロック間の制御依存性、 及びデータ依存性を^?し、 編己単位ブロックの並列 性を抽出する処理と、
前記マルチプロセッサシステムが具備する各プロセッサュニットで前記単位ブロックの演 算に必要な ®Λコストを ¾もる処理と、
tilt己入力プログラムの処理時間が ΙίΓΪΞ許容時間内で、 力、つ Ι ΙΕ¾Λコストが最小となるよ うに、 前記単位ブロックを前記プロセッサュニットに割り当てるスケジューリングコードを する処理と、
tfilBスケジューリングコードを入力プログラムに付加し、 filiS各プロセッサュニット毎の コードを^^し、 目的コードとして出力する処理と、
を計難に節させることを赚とするマルチグレイン並列ィ匕コンパイラ。
3 0. 請求項 2 9に記載のマルチグレイン並列ィ匕コンパイラにおレヽて、
tinsコスト情報を求める処理は、 プロセッサュニットが tijfB単位ブロックを処理する ために必要な演算サイクル時間をコスト情報として求めることを,とするマルチグレイン 並列化コンパイラ。
3 1. 請求項 2 9に記載のマノ!^グレイン並列ィ匕コンパイラにおレヽて、
fijiaコスト情報を求める処理は、 ItjfBプロセッサュニットが ItjfE単位ブロックを処理する ために必要な をコスト情報として求めることを mとするマルチグレイン並列ィ匕コンパ イラ。
3 2. 請求項 2 9に記載のマ/ グレイン並歹 W匕コンパイラにおレ、て、
前記スケジューリングコードを生成する処理は、
tiHH単位プロックをスケジユーリングによって割り当てられたプロセッサュニットで演算 した際に、 tiftat算に必要とする時間が tinsスケジユーリングで許容された時間内であった は、
前記プロセッサュニッ卜の演算に際して消費する電力を低減するためプロセッサュニット に与える動作 me及ひ 作ク口ックを変化または遮 るための制御コードを^^する を含むことを赚とするマルチグレイン並列ィ匕コンパイラ。
3 3. 請求項 2 9に記載のマノ1^グレイン並列ィ匕コンパイラにおレ、て、
前記スケジューリングコードを生成する処理は、
前記単位プロックをスケジユーリングによって割り当てられたプロセッサュニット以外の プロセッサュニットについて、 動作クロック及ひ 作電源の供給を遮断するための制御コー ドを^^することを赚とするマルチグレイン並列ィ匕コンパイラ。
34. 請求項 2 9に記載のマノ^グレイン並列化コンノ、。ィラにおレ、て、
tfllEプロセッサュニットは、 特定用途プロセッサユニットと汎用プロセッサユニットとを 含み、
tilt己前記スケジユーリングコ一ドを生成する処理は、
tfjia単位ブロックを処理するのに必要な tins特定用途プロセッサュニットを し、 さら に少なくともひとつの汎用プロセッサュニットを選択し、 これら特定用途プロセッサュニッ トと汎用プロセッサュ二ットを 1つのグノ^-プとして嫌己単位ブロックを割り当てることを 赚とするマノ!^グレイン並列ィ匕コンパイラ。
3 5. 請求項 2 9に記載のマルチグレイン並歹 Μ匕コンパイラにおレ、て、 觸己 亍コードを^^し、 目的コードとして出力する は、
ia各プロセッサュニットの ¾ ^に応じたローカルコンパイラを用いて tins ϊコードを
^^することを 115 [とするマノ グレイン並列ィ匕コンパイラ。
3 6. 請求項 2 9に記載のマノ ^グレイン並列化コンパイラにおレ、て、
前記マルチプロセッサシステムは、 前記プロセッサユニットに複数のクロック周波数の内 の一つを動作クロックとして供^ るクロック供糸合部と、 tfjiBプロセッサュニットに複数の の内の一つを動作 mmとして » る供糸^ る ¾Λ供給部と、 ΙΞクロック供給部及び ®Λ供給部がプロセッサュ二ットに供糸^ る動作クロックと動作 «ffとを設定するシステム 制御レジスタを有し、
前記スケジユーリングコ一ドを生成する处理は、
tilt己単位プロックをスケジユーリングによって割り当てられたプロセッサュニッ卜で演算 した際に、 前言 as算に必要とする時間が前記スケジューリングで許容された時間内であった # ^は、
前記プロセッサュニットの演算に際して消費する電力を低減するため前記システム制御レ ジスタに設定する値を変更する制御コードを^ ·τる処理を含むことを»とするマノ グ レイン並歹 IJ化コンパイラ。
PCT/JP2006/308161 2005-04-12 2006-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ WO2006109887A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP06732068A EP1870792A4 (en) 2005-04-12 2006-04-12 MULTIPROCESSOR AND COMPILER SYSTEM WITH MULTIGRAIN PARALLELISM
EP13176745.1A EP2657839B1 (en) 2005-04-12 2006-04-12 Multiprocessor system and multigrain parallelizing compiler
US12/654,956 US8812880B2 (en) 2005-04-12 2010-01-11 Multiprocessor system and multigrain parallelizing compiler

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-114842 2005-04-12
JP2005114842A JP4082706B2 (ja) 2005-04-12 2005-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US11/660,104 A-371-Of-International US7895453B2 (en) 2005-04-12 2006-04-12 Multiprocessor system and multigrain parallelizing compiler
US12/654,956 Division US8812880B2 (en) 2005-04-12 2010-01-11 Multiprocessor system and multigrain parallelizing compiler

Publications (1)

Publication Number Publication Date
WO2006109887A1 true WO2006109887A1 (ja) 2006-10-19

Family

ID=37087143

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/308161 WO2006109887A1 (ja) 2005-04-12 2006-04-12 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ

Country Status (6)

Country Link
US (2) US7895453B2 (ja)
EP (3) EP2620840B1 (ja)
JP (1) JP4082706B2 (ja)
KR (1) KR100861631B1 (ja)
CN (3) CN100514253C (ja)
WO (1) WO2006109887A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008107944A (ja) * 2006-10-24 2008-05-08 Nec Electronics Corp データ処理装置
WO2009021539A1 (de) * 2007-08-16 2009-02-19 Siemens Aktiengesellschaft Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung
JP2009064340A (ja) * 2007-09-07 2009-03-26 Murata Mach Ltd データ転送システム
EP2178115A1 (en) * 2007-08-09 2010-04-21 Fujitsu Limited Semiconductor integrated circuit
EP2202638A1 (en) * 2007-09-21 2010-06-30 Fujitsu Limited Translating device, translating method and translating program, and processor core control method and processor
JP2010211544A (ja) * 2009-03-11 2010-09-24 Fujitsu Ltd マルチコアプロセッサ及びその制御方法
EP2115550B1 (en) * 2007-01-07 2020-01-22 Apple Inc. Methods and systems for power management in a data processing system

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US7949887B2 (en) 2006-11-01 2011-05-24 Intel Corporation Independent power control of processing cores
JP4945410B2 (ja) * 2006-12-06 2012-06-06 株式会社東芝 情報処理装置及び情報処理方法
JP4957729B2 (ja) * 2007-01-25 2012-06-20 日本電気株式会社 プログラム並列化方法、プログラム並列化装置及びプログラム
US8291197B2 (en) 2007-02-12 2012-10-16 Oracle America, Inc. Aggressive loop parallelization using speculative execution mechanisms
JP2007305148A (ja) * 2007-06-25 2007-11-22 Univ Waseda マルチプロセッサシステム
JP2009069921A (ja) 2007-09-11 2009-04-02 Hitachi Ltd マルチプロセッサシステム
JP2009140304A (ja) * 2007-12-07 2009-06-25 Sony Corp 半導体チップ
KR100957060B1 (ko) * 2007-12-12 2010-05-13 엠텍비젼 주식회사 명령어 병렬 스케줄러, 방법 및 그 기록매체
JP4823209B2 (ja) * 2007-12-13 2011-11-24 アラクサラネットワークス株式会社 パケット転送装置
JP2009146243A (ja) * 2007-12-17 2009-07-02 Hitachi Ltd 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム
US8117398B2 (en) * 2008-01-18 2012-02-14 Texas Instruments Incorporated Prefetch termination at powered down memory bank boundary in shared memory controller
JP5214262B2 (ja) * 2008-01-30 2013-06-19 株式会社東芝 半導体集積回路及び電源制御方法
KR101418969B1 (ko) * 2008-02-27 2014-08-13 삼성전자주식회사 프로세서 및 컴파일 방법
JP4996519B2 (ja) * 2008-03-27 2012-08-08 パナソニック株式会社 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
US8176341B2 (en) * 2008-03-31 2012-05-08 Intel Corporation Platform power management based on latency guidance
US20100058086A1 (en) * 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
JP5245722B2 (ja) * 2008-10-29 2013-07-24 富士通株式会社 スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
EP2359237A4 (en) * 2008-11-28 2012-04-25 Siemens Ag AUTOMATIC CONTROL SYSTEM AND METHOD FOR PARALLELLY EXECUTING A CONTROL PROGRAM
US9323306B2 (en) * 2008-12-03 2016-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Energy based time scheduler for parallel computing system
US8495342B2 (en) * 2008-12-16 2013-07-23 International Business Machines Corporation Configuring plural cores to perform an instruction having a multi-core characteristic
JP5007838B2 (ja) * 2009-03-05 2012-08-22 富士ゼロックス株式会社 情報処理装置および情報処理プログラム
JP4621786B2 (ja) * 2009-04-28 2011-01-26 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
US9032407B2 (en) 2009-05-25 2015-05-12 Panasonic Intellectual Property Corporation Of America Multiprocessor system, multiprocessor control method, and multiprocessor integrated circuit
US8230410B2 (en) * 2009-10-26 2012-07-24 International Business Machines Corporation Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization
CN101714103B (zh) * 2009-12-15 2012-11-28 中国华录·松下电子信息有限公司 基于可编程逻辑器件的任务调度器
US9128705B2 (en) 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US8909962B2 (en) 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9563250B2 (en) * 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines
US8689037B2 (en) * 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8775830B2 (en) 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
KR101155202B1 (ko) 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템
WO2011079424A1 (zh) * 2009-12-31 2011-07-07 西门子公司 并行化自动控制程序的方法及编译器
US20140223439A1 (en) * 2010-02-22 2014-08-07 Analog Devices, Inc. Superscalar control for a probability computer
JP4809497B2 (ja) * 2010-02-25 2011-11-09 ファナック株式会社 複数の独立したシーケンスプログラムを並列実行するプログラマブルコントローラ
US8723877B2 (en) 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
EP2590083A4 (en) * 2010-06-30 2016-04-20 Fujitsu Ltd DATA RECOVERY PROGRAM, DATA RESTORE DEVICE, AND DATA RESTORATION METHOD
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
JP5581960B2 (ja) * 2010-10-14 2014-09-03 凸版印刷株式会社 半導体装置
CN101989192A (zh) * 2010-11-04 2011-03-23 浙江大学 一种程序自动并行化的方法
JP5545376B2 (ja) 2010-12-22 2014-07-09 富士通株式会社 マルチコアプロセッサシステム、および電力制御方法
WO2012093498A1 (en) * 2011-01-07 2012-07-12 Nec Corporation Energy-efficient resource management system and method for heterogeneous multicore processors
US8468373B2 (en) * 2011-01-14 2013-06-18 Apple Inc. Modifying performance parameters in multiple circuits according to a performance state table upon receiving a request to change a performance state
KR101754998B1 (ko) * 2011-01-27 2017-07-06 삼성전자주식회사 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
CN107256077A (zh) * 2011-02-10 2017-10-17 富士通株式会社 调度方法、设计辅助方法以及系统
US8799880B2 (en) * 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments
CN102207892B (zh) * 2011-05-27 2013-03-27 清华大学 一种动态可重构处理器内子单元间进行同步的方法
US8494477B2 (en) * 2011-06-24 2013-07-23 Intel Corporation Power management for an electronic device
KR20130002046A (ko) 2011-06-28 2013-01-07 삼성전자주식회사 멀티 코어를 포함하는 저장 장치의 전력 관리 방법
JP5653315B2 (ja) * 2011-07-28 2015-01-14 株式会社東芝 情報処理装置
US20130055224A1 (en) * 2011-08-25 2013-02-28 Nec Laboratories America, Inc. Optimizing compiler for improving application performance on many-core coprocessors
GB2511672B (en) * 2011-11-04 2020-04-15 Univ Waseda Processor system and accelerator
KR101893982B1 (ko) * 2012-04-09 2018-10-05 삼성전자 주식회사 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
FR2989797B1 (fr) * 2012-04-24 2014-12-26 Kalray Reduction de la consommation electrique d'une matrice de processeurs
RU2012127578A (ru) 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред
RU2012127581A (ru) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Генератор исходного кода для разработки и тестирования программного обеспечения для многопроцессорных сред
US9619282B2 (en) * 2012-08-21 2017-04-11 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US20140068581A1 (en) * 2012-08-30 2014-03-06 International Business Machines Corporation Optimized division of work among processors in a heterogeneous processing system
US9110734B2 (en) * 2012-11-12 2015-08-18 International Business Machines Corporation Power-constrained compiler code generation and scheduling of work in a heterogeneous processing system
US20150363230A1 (en) * 2013-01-23 2015-12-17 Waseda University Parallelism extraction method and method for making program
US9442559B2 (en) 2013-03-14 2016-09-13 Intel Corporation Exploiting process variation in a multicore processor
CN103257892B (zh) * 2013-05-27 2016-03-23 北京世纪瑞尔技术股份有限公司 一种基于宏组合的多任务调度方法及系统
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2015014833A (ja) * 2013-07-03 2015-01-22 スパンション エルエルシー 再構築可能なlsi
KR102114453B1 (ko) 2013-07-19 2020-06-05 삼성전자주식회사 모바일 장치 및 그것의 제어 방법
CN104424156A (zh) * 2013-09-09 2015-03-18 中兴通讯股份有限公司 处理器的核处理方法、装置及终端
KR101770234B1 (ko) 2013-10-03 2017-09-05 후아웨이 테크놀러지 컴퍼니 리미티드 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템
JP6387626B2 (ja) * 2014-03-04 2018-09-12 日本電気株式会社 情報処理システム、情報処理方法、および、スケジューリングプログラム
US10180828B2 (en) * 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
JP6372331B2 (ja) 2014-12-05 2018-08-15 富士通株式会社 並列演算装置、並列演算システム、および並列演算プログラム
JP6072090B2 (ja) * 2015-01-16 2017-02-01 京セラドキュメントソリューションズ株式会社 情報処理装置、データ処理方法
US9400685B1 (en) * 2015-01-30 2016-07-26 Huawei Technologies Co., Ltd. Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
CN105005547B (zh) * 2015-06-25 2017-08-25 浪潮电子信息产业股份有限公司 一种基于numa的多路服务器完全物理分区方法
EP3121714B1 (en) * 2015-07-23 2018-02-21 Karlsruher Institut für Technologie Computer system and method for multi-processor communication
JP6439623B2 (ja) 2015-08-05 2018-12-19 富士通株式会社 計算機、動作周波数決定プログラム及び動作周波数決定方法
CN108141648B (zh) * 2015-10-13 2021-10-26 富士通株式会社 控制系统和控制方法
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10877816B2 (en) * 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
JP6808414B2 (ja) * 2016-09-21 2021-01-06 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US10386909B1 (en) * 2016-09-28 2019-08-20 Cadence Design Systems, Inc. Method and system to mitigate large power load steps due to intermittent execution in a computation system
EP3343351B1 (en) * 2016-12-28 2023-04-26 Waseda University Parallel program generating method and parallelization compiling apparatus
US10459817B2 (en) 2017-01-18 2019-10-29 International Business Machines Corporation Evaluating performance improvement of executing instructions in a first processor over execution on a second processor
KR102475892B1 (ko) * 2017-07-26 2022-12-08 삼성전자주식회사 집적 회로, 집적 회로에게 전력을 공급하는 방법 및 시스템
JP6933052B2 (ja) * 2017-08-23 2021-09-08 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
JP7031930B2 (ja) * 2018-03-19 2022-03-08 Necプラットフォームズ株式会社 プログラム生成部、情報処理装置、プログラム生成方法、及びプログラム
JP2019179418A (ja) * 2018-03-30 2019-10-17 株式会社デンソー スケジューリング方法、スケジューリング装置
RU2685018C1 (ru) * 2018-04-24 2019-04-16 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в вычислительной системе
RU2691860C1 (ru) * 2018-06-25 2019-06-18 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в среде логического программирования в вычислительной системе
GB2575290B (en) * 2018-07-04 2020-12-02 Graphcore Ltd Gateway Fabric Ports
JP7087752B2 (ja) * 2018-07-11 2022-06-21 株式会社デンソー 電子装置
US10831535B2 (en) 2019-01-01 2020-11-10 International Business Machines Corporation Reducing minimum operating voltage through heterogeneous codes
RU2704533C1 (ru) * 2019-01-28 2019-10-29 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ распараллеливания программ в среде агентно-ориентированного программирования в вычислительной системе
CN113439256A (zh) 2019-02-26 2021-09-24 三菱电机株式会社 信息处理装置、信息处理方法和信息处理程序
CN111913743B (zh) * 2019-05-09 2023-04-14 杭州海康威视数字技术股份有限公司 数据处理方法及装置
JP7259656B2 (ja) 2019-09-04 2023-04-18 トヨタ自動車株式会社 車両の制御装置、車両の制御方法及び制御プログラム
JP7316902B2 (ja) * 2019-10-16 2023-07-28 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
KR20210132862A (ko) * 2020-04-28 2021-11-05 삼성전자주식회사 클록 제어 방법 및 이를 위한 전자 장치
CN112257362B (zh) * 2020-10-27 2023-01-31 海光信息技术股份有限公司 逻辑代码的验证方法、验证装置以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175619A (ja) * 1999-12-22 2001-06-29 Univ Waseda シングルチップマルチプロセッサ
JP2005062956A (ja) * 2003-08-14 2005-03-10 Toshiba Corp スケジューリング方法および情報処理システム

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1013070B (zh) * 1988-01-09 1991-07-03 北京信通电脑技术公司 直接处理接近数学公式的″机器表达式″的计算机系统
JPH0786787B2 (ja) * 1988-04-12 1995-09-20 日本電気株式会社 マイクロコンピュータ
JP3343346B2 (ja) * 1990-11-28 2002-11-11 株式会社日立製作所 消費電力制御方式、情報処理装置および複合部品
US5461266A (en) * 1990-11-27 1995-10-24 Hitachi, Ltd. Power consumption control system
US5392430A (en) * 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
JP3433970B2 (ja) * 1993-05-25 2003-08-04 シャープ株式会社 デジタル電子機器用電力制御装置、該電力制御装置により電力が制御される処理装置、及び該電力制御装置を備えたデジタル電子機器用電力管理システム
JP3718251B2 (ja) * 1994-02-28 2005-11-24 株式会社ルネサステクノロジ データ処理装置
US5778237A (en) * 1995-01-10 1998-07-07 Hitachi, Ltd. Data processor and single-chip microcomputer with changing clock frequency and operating voltage
US5815715A (en) * 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5630110A (en) * 1996-03-01 1997-05-13 Samsung Electronics Co., Ltd. Method and apparatus for enhancing performance of a processor
JPH11272490A (ja) 1998-03-20 1999-10-08 Mitsubishi Electric Corp 診断制御システム
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
JP2000003225A (ja) * 1998-06-16 2000-01-07 Hitachi Ltd データ処理装置及びデータ処理システム
FI117523B (fi) 1998-10-07 2006-11-15 Nokia Corp Menetelmä tehonkulutuksen säätämiseksi
US6477654B1 (en) * 1999-04-06 2002-11-05 International Business Machines Corporation Managing VT for reduced power using power setting commands in the instruction stream
JP3138737B1 (ja) 1999-10-22 2001-02-26 東京大学長 パワー制御装置及び方法並びにパワー制御プログラムを記録した記録媒体
US6587737B2 (en) * 2000-09-14 2003-07-01 Sulzer Makert And Technology Ag Method for the monitoring of a plant
JP2002215597A (ja) * 2001-01-15 2002-08-02 Mitsubishi Electric Corp マルチプロセッサ装置
JP2003099148A (ja) * 2001-09-19 2003-04-04 Sanyo Electric Co Ltd データ処理装置とこれに利用可能なシステム制御装置およびデータ変換方法
US7111178B2 (en) * 2001-09-28 2006-09-19 Intel Corporation Method and apparatus for adjusting the voltage and frequency to minimize power dissipation in a multiprocessor system
JP3794312B2 (ja) * 2001-11-08 2006-07-05 ソニー株式会社 電源電圧周波数制御回路
JP2005523510A (ja) * 2002-04-19 2005-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション マイクロプロセッサおよびその電力を管理する方法
JP3485558B1 (ja) * 2002-05-28 2004-01-13 沖電気工業株式会社 半導体集積回路
JP2004038642A (ja) 2002-07-04 2004-02-05 Renesas Technology Corp マルチプロセッサ
JP2004199139A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
JP2004234116A (ja) 2003-01-28 2004-08-19 Hitachi Information Technology Co Ltd 電力供給課金システム及び電力供給課金方法
JP3896087B2 (ja) 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4090908B2 (ja) 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
US7185215B2 (en) * 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US7009363B2 (en) * 2003-03-26 2006-03-07 Pathfinder Energy Services, Inc. Optimized battery life in multiple battery applications
US7134031B2 (en) * 2003-08-04 2006-11-07 Arm Limited Performance control within a multi-processor system
US6956579B1 (en) * 2003-08-18 2005-10-18 Nvidia Corporation Private addressing in a multi-processor graphics processing system
US8190863B2 (en) * 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7930539B2 (en) * 2004-08-03 2011-04-19 Hewlett-Packard Development Company, L.P. Computer system resource access control
JP4557803B2 (ja) * 2005-05-27 2010-10-06 富士通株式会社 ネットワークシステム及び通信方法
JP4457047B2 (ja) * 2005-06-22 2010-04-28 株式会社ルネサステクノロジ マルチプロセッサシステム
US7464280B2 (en) * 2005-06-22 2008-12-09 Hewlett-Packard Development Company, L.P. Power module for a plurality of processors
US7870400B2 (en) * 2007-01-02 2011-01-11 Freescale Semiconductor, Inc. System having a memory voltage controller which varies an operating voltage of a memory and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175619A (ja) * 1999-12-22 2001-06-29 Univ Waseda シングルチップマルチプロセッサ
JP2005062956A (ja) * 2003-08-14 2005-03-10 Toshiba Corp スケジューリング方法および情報処理システム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008107944A (ja) * 2006-10-24 2008-05-08 Nec Electronics Corp データ処理装置
EP2115550B1 (en) * 2007-01-07 2020-01-22 Apple Inc. Methods and systems for power management in a data processing system
EP2178115A1 (en) * 2007-08-09 2010-04-21 Fujitsu Limited Semiconductor integrated circuit
EP2178115A4 (en) * 2007-08-09 2011-01-26 Fujitsu Ltd INTEGRATED SEMICONDUCTOR SWITCHING
US8022753B2 (en) 2007-08-09 2011-09-20 Fujitsu Limited Semiconductor integrated circuit with intermittent power supply operation of circuit blocks
WO2009021539A1 (de) * 2007-08-16 2009-02-19 Siemens Aktiengesellschaft Kompilieren von computerprogrammen für multicore-prozessoren und deren ausführung
JP2009064340A (ja) * 2007-09-07 2009-03-26 Murata Mach Ltd データ転送システム
EP2202638A1 (en) * 2007-09-21 2010-06-30 Fujitsu Limited Translating device, translating method and translating program, and processor core control method and processor
EP2202638A4 (en) * 2007-09-21 2011-12-14 Fujitsu Ltd TRANSLATION FACILITY, TRANSLATION PROCEDURE AND TRANSLATION PROGRAM AND PROCESSOR CONTROL SYSTEM AND PROCESSOR
US8543993B2 (en) 2007-09-21 2013-09-24 Fujitsu Limited Compiler, compile method, and processor core control method and processor
JP2010211544A (ja) * 2009-03-11 2010-09-24 Fujitsu Ltd マルチコアプロセッサ及びその制御方法

Also Published As

Publication number Publication date
CN100514253C (zh) 2009-07-15
EP1870792A4 (en) 2010-11-03
JP4082706B2 (ja) 2008-04-30
EP2657839A2 (en) 2013-10-30
KR20070061795A (ko) 2007-06-14
EP1870792A1 (en) 2007-12-26
US20100146310A1 (en) 2010-06-10
EP2657839B1 (en) 2020-06-03
EP2620840A1 (en) 2013-07-31
CN101019084A (zh) 2007-08-15
KR100861631B1 (ko) 2008-10-07
JP2006293768A (ja) 2006-10-26
CN101571745B (zh) 2012-04-04
EP2657839A3 (en) 2014-08-20
EP2620840B1 (en) 2016-02-03
US8812880B2 (en) 2014-08-19
CN101504619B (zh) 2012-08-08
CN101504619A (zh) 2009-08-12
US20070255929A1 (en) 2007-11-01
CN101571745A (zh) 2009-11-04
US7895453B2 (en) 2011-02-22

Similar Documents

Publication Publication Date Title
WO2006109887A1 (ja) マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US8051412B2 (en) Global compiler for controlling heterogeneous multiprocessor
Aldinucci et al. Fastflow: High‐Level and Efficient Streaming on Multicore
US10095657B2 (en) Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
US8250548B2 (en) Method for controlling heterogeneous multiprocessor and multigrain parallelizing compiler
JP4635082B2 (ja) マルチプロセッサシステム及びグルーピング方法
WO2008105558A1 (ja) メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
Choi et al. Stream compilation for real-time embedded multicore systems
JP2007305148A (ja) マルチプロセッサシステム
Ha et al. Decidable dataflow models for signal processing: Synchronous dataflow and its extensions
Owaida et al. Massively parallel programming models used as hardware description languages: The OpenCL case
Hascoët et al. Hierarchical dataflow model for efficient programming of clustered manycore processors
Huynh et al. Mapping streaming applications onto GPU systems
JP2021099785A (ja) コンピュータアプリケーションを異種システムのために分配する自動学習技術
Che et al. Unrolling and retiming of stream applications onto embedded multicore processors
Liu et al. MKPipe: A compiler framework for optimizing multi-kernel workloads in OpenCL for FPGA
Ha et al. Decidable signal processing dataflow graphs
Kalms et al. DECISION: Distributing OpenVX Applications on CPUs, GPUs and FPGAs using OpenCL
Popp et al. Automatic control flow generation for OpenVX graphs
Wong et al. 07361 Abstracts Collection–Programming Models for Ubiquitous Parallelism
Leidi et al. Component-Based and Model-Driven Development of Data-Intensive, Time-Critical Applications for Multi-Core Embedded Systems
Luecke What is the Current State of Software Development for Multi-core Processors?
Hwang for Pipelined Data-path Synthesis

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 11660104

Country of ref document: US

Ref document number: 2006732068

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 1020077003527

Country of ref document: KR

Ref document number: 200680000666.0

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: RU

WWP Wipo information: published in national office

Ref document number: 2006732068

Country of ref document: EP