JP5195408B2 - マルチコアシステム - Google Patents

マルチコアシステム Download PDF

Info

Publication number
JP5195408B2
JP5195408B2 JP2008331236A JP2008331236A JP5195408B2 JP 5195408 B2 JP5195408 B2 JP 5195408B2 JP 2008331236 A JP2008331236 A JP 2008331236A JP 2008331236 A JP2008331236 A JP 2008331236A JP 5195408 B2 JP5195408 B2 JP 5195408B2
Authority
JP
Japan
Prior art keywords
program
core
data
execution
executing
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 - Fee Related
Application number
JP2008331236A
Other languages
English (en)
Other versions
JP2010152733A (ja
Inventor
雅之 辻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2008331236A priority Critical patent/JP5195408B2/ja
Priority to US12/624,105 priority patent/US8656393B2/en
Publication of JP2010152733A publication Critical patent/JP2010152733A/ja
Application granted granted Critical
Publication of JP5195408B2 publication Critical patent/JP5195408B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Description

本発明は、マルチコアシステムに関する。
マルチコアシステムは、同時実行可能なプログラムを別のコアで同時に実行することができる。複数のプログラムは、それらが扱うデータ間に依存性が無い場合に別のコアで同時に実行できる。しかし、データの依存性がある場合は、依存性のあるデータを参照するプログラムは、そのデータを書き込むプログラムが実行完了するまで実行開始を待つ必要がある。そのため、実行完了待ち時間が発生し、マルチコアシステムの並列度を下げる要因となっている。
特開平6−89188号公報には、コンパイラの自動並列化機能により、マイクロタスク内のローカルデータの終値保証が必要となるループを排他制御や同期制御を用いないで並列化し、オーバーヘッドを抑止することにより、プログラム全体の処理効率を向上させる自動並列化処理方式が開示されている。
また、特開平11−120156号公報には、複数のプロセッサと記憶装置からなるマルチプロセッサシステムにおけるデータ通信方式において、通信バッファを介してデータを分割して送受信する方式が開示されている。
特開平6−89188号公報 特開平11−120156号公報
本発明の目的は、無駄なプログラムの実行完了待ち時間を防止し、並列度を上げることができるマルチコアシステムを提供することである。
本発明のマルチコアシステムは、第1のプログラムを実行することにより第1のデータを書き込み、その書き込み完了後に書き込み完了通知を通知する第1のコアと、第2のプログラムを実行することにより前記書き込まれた第1のデータを参照する第2のコアと、前記第1のプログラムの実行により前記第1のコアから前記書き込み完了通知が通知されると、前記第1のプログラムが実行完了する前に前記第2のプログラムの実行開始を前記第2のコアに指示するスケジューラとを有することを特徴とする。
第1のプログラムの実行による第1のデータの書き込み完了後において、第1のプログラムが実行完了する前に第2のプログラムの実行を開始することができるので、無駄な第1のプログラムの実行完了待ち時間を防止し、並列度を上げることができる。
(参考技術)
図1は、マルチコアシステムの構成例を示す図である。マルチコアシステムは、第1のコア101、第2のコア102、第3のコア103、共有メモリ104、及び割り込みコントローラ(IRC)105を有する。共有メモリ104は、プログラム実行管理テーブル141及びプログラム(プログラムA,B,Cを含む)142を記憶する。第1のコア101は、OS(ドライバ)111及び制御プログラム112を記憶する。第2のコア102は、OS(ドライバ)121及びプログラム122を記憶する。第3のコア103は、OS(ドライバ)131及びプログラム132を記憶する。プログラム122及び132は、それぞれ共有メモリ104からロードして実行するプログラムA,B及びCのうちのいずれか1つである。バス106には、第1のコア101、第2のコア102、第3のコア103、共有メモリ104及び割り込みコントローラ105が接続される。割り込みコントローラ105は、第1のコア101、第2のコア102及び/又は第3のコア103に割り込み信号IRQを出力することができる。
図2は、図1のマルチコアシステムの処理例を示すタイムチャートである。図2、図3及び図7のデータ1〜データ6において、実線はデータ書き込みを示し、破線はデータ参照を示す。プログラムAでは、データ1及びデータ2が参照され、データ3及びデータ4が書き込まれる。その後に実行されるプログラムBでは、データ3が参照され、データ5が書き込まれる。その後に実行されるプログラムCでは、データ5が参照され、データ6が書き込まれる。
プログラムBでは、プログラムAにより書き込まれたデータ3を参照するため、プログラムBはプログラムAの実行完了を待ってから実行を開始する必要がある。そのため、プログラムBを実行可能な他のコアが存在するにもかかわらず、無駄な実行完了待ち時間201が発生する。また、プログラムCでは、プログラムBにより書き込まれたデータ5を参照するため、プログラムCはプログラムBの実行完了を待ってから実行を開始する必要がある。上記の関係がデータの依存関係である。
第1のコア101は、制御プログラム112を実行することにより、共有メモリ104内のプログラム実行管理テーブル141からプログラムA,B,C間のデータの依存関係情報150を読み出し、次のプログラムを実行すべきコア102又は103を決定する。
プログラムAは、第2のコア102により実行される。第2のコア102は、共有メモリ104からプログラムAをロードし、プログラムAをプログラム122として実行開始し、実行が完了すると、実行完了通知152をバス106を介して割り込みコントローラ(IRC)105に出力する。すると、割り込みコントローラ(IRC)105は、割り込み信号IRQにより実行完了通知を第1のコア101に出力する。すると、第1のコア101は、制御プログラム112の処理により、実行待ち状態の例えば第2のコア102に次のプログラムBを割り当てる指示データ151をバス106を介して割り込みコントローラ(IRC)105に出力する。すると、割り込みコントローラ(IRC)105は、割り込み信号IRQにより、次のプログラムBの実行開始を第2のコア102に指示する。すると、第2のコア102は、共有メモリ104からプログラムBをロードし、プログラムBをプログラム122として実行開始し、実行が完了すると、実行完了通知152をバス106を介して割り込みコントローラ(IRC)105に出力する。すると、割り込みコントローラ(IRC)105は、割り込み信号IRQにより実行完了通知を第1のコア101に出力する。すると、第1のコア101は、制御プログラム112の処理により、実行待ち状態の例えば第2のコア102に次のプログラムCを割り当てる指示データ151をバス106を介して割り込みコントローラ(IRC)105に出力する。すると、割り込みコントローラ(IRC)105は、割り込み信号IRQにより、次のプログラムCの実行開始を第2のコア102に指示する。すると、第2のコア102は、共有メモリ104からプログラムCをロードし、プログラムCをプログラム122として実行開始し、実行が完了すると、実行完了通知152をバス106を介して割り込みコントローラ(IRC)105に出力する。すると、割り込みコントローラ(IRC)105は、割り込み信号IRQにより実行完了通知を第1のコア101に出力する。
以上のように、マルチコアシステムは、第1のコア101をマルチコア制御用コアとして、残りの第2のコア102及び第3のコア103をターゲットプログラムの実行用コアとして割り当てる。制御用コア101は、プログラムの依存関係や実行順序が登録されているプログラム実行管理テーブル141を参照し、このスケジュールに従って実行待ち状態のプログラム実行用のコア102又は103にプログラムを順に割り当てる。実行用コア102又は103は、これに従いプログラムを実行する。実行プログラム(バイナリコード)142とプログラム実行管理テーブル141の情報は、プログラム(タスク)間で共有するデータの依存関係を抽出して並列に実行可能なプログラムを生成できるマルチコア用コンパイラ401(図4)及びリンカを用いて生成される。
制御用コア101はプログラム実行管理テーブル141を参照し、実行待ち状態にある例えば第2のコア102に対して次に実行するプログラムAの実行を指示する。指示は、割り込みコントローラ(IRC)105を介して行われ、割り込みコントローラ(IRC)105がターゲットとなる第2のコア102に対して次のプログラムAの起動を通知する。プログラムAの実行を指示された第2のコア102は、やがてプログラムAの実行を完了すると、実行完了を割り込みコントローラ(IRC)105に通知する。割り込みコントローラ(IRC)105は、制御用コア101に対して割り込み、ターゲットとなった第2のコア102が指定されたプログラムAの実行を完了したことを通知する。この実行完了通知の前に、制御用コア101は、次の実行可能なプログラムBがあれば、実行待ち状態にある例えば第3のコア103に対して、このプログラムBの実行を指示することができる。ただし、プログラムA及びプログラムBの間にデータ依存関係がある場合は、プログラムBはプログラムAの実行完了を待ってから実行される必要がある。このようなシーケンスを繰り返して、プログラムの実行が行われる。このようなケースのうち、プログラムA及びプログラムBの間にデータ依存関係がある場合のタイムチャートを図2に示す。このケースのように、実際にはプログラムBが参照するデータ3の書き込みが完了しているにもかかわらず、プログラムAの実行が完了することを待ってから、プログラムBを実行する必要があり、無駄な待ち時間201が発生している。
図3は、図2のプログラムA,B,Cをシングルコアが実行する場合のタイムチャートである。コアは、プログラムAを実行することにより、データ1及びデータ2を参照し、データ3及びデータ4を書き込む。プログラムAの実行完了後、コアは、プログラムBを実行し、データ3を参照し、データ5を書き込む。プログラムBの実行完了後、コアは、プログラムCを実行し、データ5を参照し、データ6を書き込む。
図2のマルチコアシステムの処理は、図3のシングルコアの処理と比較して、マルチコア構成のメリットを生かせていないことが分かる。
図4は、図1のマルチコアシステムの処理例を示すフローチャートである。ステップ402では、コンパイラ401は、プログラム間で共有するデータの依存関係を抽出して並列に実行可能なプログラムA,B,Cを生成する。
次に、ステップ403では、第1のコア101は、プログラムを実行させるコアを選定し、割り込みコントローラ(IRC)105に通知する。例えば、プログラムAを実行させるコアとして第2のコア102を選定する。
次に、ステップ404では、割り込みコントローラ(IRC)105は、プログラムを実行させるコア102又は103を起動する。例えば、第2のコア102を起動する。
次に、ステップ405では、起動された第2のコア102又は第3のコア103は、プログラムを実行開始する。例えば、第2のコア102は、プログラムAを実行開始する。
次に、ステップ406では、第2のコア102又は第2のコア103は、プログラムの実行完了を割り込みコントローラ(IRC)105に通知する。例えば、第2のコア102は、プログラムAの実行完了を通知する。
次に、ステップ407では、割り込みコントローラ(IRC)105は、第1のコア101に割り込み、プログラムを実行完了したコアを通知する。例えば、割り込み信号IRQにより、第2のコア102がプログラムAの実行を完了した旨を第1のコア101に通知する。
次に、ステップ408では、第1のコア101は、プログラムの実行完了が通知されたか否かを判定する。実行完了が通知されていなければ、ステップ403に戻る。ステップ403では、次のプログラムを実行させるコアを選定する。ただし、データ依存関係がある場合には、次のプログラムを実行すべきコアを選定することができず、プログラムの実行完了通知を待ってから、次のプログラムを実行させるコアを選定する。
以上のように、プログラムA,B,Cが扱うデータ間にデータの依存性がある場合は、依存性のあるデータを参照するプログラムは、そのデータを書き込むプログラムが実行完了するまで実行開始を待つ必要がある。しかし、本質的にはそのデータを書き込むプログラムが実行完了せずとも、そのデータの書き込みが完了した時点で、そのデータを参照するプログラムは直ちに実行を開始することが可能である。そのため、本質的には必要の無い、無駄な実行完了待ち時間201が発生し、並列度を下げる要因となっている。以下、上記の課題を解決するための実施形態を説明する。
(実施形態)
図5は、本発明の実施形態によるマルチコアシステムの構成例を示す図である。図5のマルチコアシステムは、図1のマルチコアシステムに対して、割り込みコントローラ505内のプログラム実行管理テーブル561及びスケジューラ562、第2のコア502のプログラム522内の書き込み完了通知部523、並びに第3のコア503のプログラム532内の書き込み完了通知部533が追加されている。
マルチコアシステムは、第1のコア501、第2のコア502、第3のコア503、共有メモリ504、及び割り込みコントローラ(IRC)505を有する。共有メモリ504は、プログラム実行管理テーブル541及びプログラム(プログラムA,B,Cを含む)542を記憶する。第1のコア501は、OS(ドライバ)511及び制御プログラム512を記憶する。第2のコア502は、OS(ドライバ)521及びプログラム522を記憶する。プログラム522は、書き込み完了通知部523を有する。第3のコア503は、OS(ドライバ)531及びプログラム532を記憶する。プログラム532は、書き込み完了通知部533を有する。プログラム522及び532は、それぞれ共有メモリ504からロードして実行するプログラムA,B及びCのうちのいずれか1つである。バス506には、第1のコア501、第2のコア502、第3のコア503、共有メモリ504及び割り込みコントローラ505が接続される。割り込みコントローラ505は、第1のコア501、第2のコア502及び/又は第3のコア503に割り込み信号IRQを出力することができる。第1のコア501、第2のコア502及び第3のコア503は、例えばプロセッサ(DSPを含む)である。DSPは、デジタルシグナルプロセッサである。上記のプログラムA,B,Cは、それぞれタスク及び/又はスレッドを含む。
プログラム実行管理テーブル541及び561は、プログラムA,B,C間のデータ依存関係を記憶する。書き込み完了通知部523及び533は、データの書き込みが完了すると書き込み完了通知を割り込みコントローラ(IRC)505内のスケジューラ562に通知する。スケジューラ562は、実行中のプログラムと、次に実行するプログラムのデータ依存関係を監視し、データ書き込みが完了したことを通知する書き込み完了通知を受けて、次に実行するプログラムが参照するデータが全て書き込み完了していれば、次のプログラム実行を第2のコア502又は第3のコア503に指示する。
図6は、図5の割り込みコントローラ(IRC)505の構成例を示す図である。割り込みコントローラ(IRC)505は、スケジューラ562、メモリ601、スコアボード602及び割り込み制御部603を有する。また、割り込みコントローラ(IRC)505は、書き込み完了通知611及び実行完了通知612を入力し、割り込み信号IRQを出力する。具体的には、スケジューラ562は、書き込み完了通知611を直接入力する。また、スケジューラ562は、割り込み制御部603を介して、実行完了通知612を入力し、割り込み信号IRQを出力する。書き込み完了通知611及び実行完了通知612は、第2のコア502又は第3のコア503からバス506を介して入力される。スケジューラ562、メモリ601、スコアボード602及び割り込み制御部603は、相互にデータの入出力を行うことができる。メモリ601は、プログラム実行管理テーブル561を記憶する。
プログラム実行管理テーブル561は、図2を参照しながら説明したプログラムA,B,C間のデータ依存関係を記憶する。例えば、プログラム実行管理テーブル561は、プログラムAにより書き込まれたデータ3がプログラムBにより参照されることを示す、プログラムA及びプログラムBのデータ3の依存関係を記憶する。スケジューラ562は、プログラム実行管理テーブル561に応じて、例えばプログラムBの実行開始を第3のコア503に指示する。
スコアボード602は、各プログラムA,B,Cにおいて各データの書き込みが完了したか否かを記憶する。例えば、スコアボード602は、プログラムAを実行することによりデータ3の書き込みが完了したか否かを記憶する。スケジューラ562は、スコアボード602のプログラムAの欄において、データ3の書き込みが完了していないときにはデータ3の欄を「1」にし、データ3の書き込みが完了したときにはデータ3の欄を「0」にする。すなわち、スケジューラ562は、例えば第2のコア502からプログラムAのデータ3の書き込み完了通知611が通知されると、プログラムAを実行することによりデータ3の書き込みが完了したことをスコアボード602に記録する。
図7は、図5のマルチコアシステムの処理例を示すタイムチャートである。データ1〜データ6において、実線はデータ書き込みを示し、破線はデータ参照を示す。図2と同様に、プログラムAでは、データ1及びデータ2が参照され、データ3及びデータ4が書き込まれる。その後に実行されるプログラムBでは、データ3が参照され、データ5が書き込まれる。その後に実行されるプログラムCでは、データ5が参照され、データ6が書き込まれる。
プログラムBでは、プログラムAにより書き込まれたデータ3を参照するため、プログラムBは、プログラムAの実行完了前に、プログラムAにおけるデータ3の書き込み完了後に実行を開始する。プログラムBは、プログラムAの実行完了前に、実行を開始することができるので、図2のような実行完了待ち時間201を防止することができる。また、プログラムCでは、プログラムBにより書き込まれたデータ5を参照するため、プログラムCはプログラムBにおけるデータ5の書き込み完了後に実行を開始する。上記の関係がデータの依存関係である。このデータ依存関係は、プログラム実行管理テーブル541及び561に記憶される。
第1のコア501は、制御プログラム512を実行することにより、共有メモリ504内のプログラム実行管理テーブル541からプログラムA,B,C間のデータの依存関係を読み出し、プログラムを実行すべき初期のコア502又は503を決定する。
プログラムAは、例えば第2のコア502により実行される。第2のコア502は、共有メモリ504からプログラムAをロードし、プログラムAをプログラム522として実行開始する。第2のコア502は、プログラムA内の書き込み完了通知部523の処理により、プログラムAのデータ3の書き込みが完了すると、書き込み完了通知611を割り込みコントローラ(IRC)505に出力する。すると、割り込みコントローラ(IRC)505は、プログラム実行管理テーブル561及びスコアボード602を参照し、割り込み信号IRQにより、次のプログラムBの実行開始を実行待ち状態の第3のコア503に指示する。割り込みコントローラ(IRC)505は、プログラム実行管理テーブル561を参照することにより、実行待ち状態の次のプログラムBを実行させるコアを決定することができる。また、割り込みコントローラ(IRC)505は、スコアボード602を参照することにより、次のプログラムBで参照するデータのすべてが書き込み完了したか否かを判断し、すべての書き込みが完了すると、第3のコア503に実行開始を指示することができる。
上記の指示により、第3のコア503は、共有メモリ504からプログラムBをロードし、プログラムBをプログラム532として実行開始する。プログラムBは、プログラムAの実行完了前において、プログラムAのデータ3の書き込み完了後に実行を開始することができるので、図2の実行完了待ち時間201を防止することができる。
次に、第2のコア502は、プログラムAの実行が完了すると、実行完了通知612をバス506を介して割り込みコントローラ(IRC)505に出力する。すると、割り込みコントローラ(IRC)505は、割り込み信号IRQによりプログラムAの実行完了通知を第1のコア501に出力する。
次に、第3のコア503は、プログラムBの実行が完了すると、実行完了通知612をバス506を介して割り込みコントローラ(IRC)505に出力する。すると、割り込みコントローラ(IRC)505は、割り込み信号IRQによりプログラムBの実行完了通知を第1のコア501に出力する。それと共に、割り込みコントローラ(IRC)505は、プログラム実行管理テーブル561及びスコアボード602を参照し、割り込み信号IRQにより、次のプログラムCの実行開始を実行待ち状態の第2のコア502に指示する。この際、割り込みコントローラ(IRC)505は、次のプログラムCで参照するデータのすべてが書き込み完了したときに、第2のコア502に実行開始を指示する。
上記の指示により、第2のコア502は、共有メモリ504からプログラムCをロードし、プログラムCをプログラム522として実行開始する。次に、第2のコア502は、プログラムCの実行が完了すると、実行完了通知612をバス506を介して割り込みコントローラ(IRC)505に出力する。すると、割り込みコントローラ(IRC)505は、割り込み信号IRQによりプログラムCの実行完了通知を第1のコア501に出力する。
以上のように、本実施形態のマルチコアシステムでは、始めにプログラマはプログラム間で共有するデータ領域に対して、書き込み完了を示すコードを予め埋め込んでおく。コンパイラ801(図8)及びリンカでは、図4の場合に加えて、この書き込み完了コードを解読し、プログラム実行管理テーブル541及び561にデータ依存関係のある共有データ領域についての情報も記録しておく。スケジューラ562を内蔵した割り込みコントローラ((IRC)505は最初に共有メモリ504のプログラム実行管理テーブル541を参照し、次に実行すべきプログラムAを導出し、実行待ち状態にある例えば第2のコア502に対してプログラムAの実行を指示する。ターゲットとなった第2のコア502は、プログラムAの実行中に、ソースコードに埋め込まれた共有データ領域への書き込み完了の指示があれば、これをスケジューラ562に通知する。スケジューラ562は、次に実行するプログラムBが先行するプログラムAの共有データ領域を参照している(データ依存関係がある)場合においても、この共有データ領域の書き込み完了通知611を持って、先行プログラムAの実行完了を待たずとも、後続のプログラムBを他の実行待ち状態にある例えば第3のコア503に実行を指示することが可能となる。プログラムAにおいて依存関係にあるデータ3の書き込みが終わった時点で、後続のプログラムBを実行することにより、図2の無駄な待ち時間201が解消されていることが分かる。
図6に示すように、高速な割り込み制御を行うために、スケジューラ562を割り込みコントローラ(IRC)505内部に実装している。割り込みコントローラ(IRC)505内のローカルメモリ601には、プログラム実行管理テーブル561が設けられる。プログラム実行管理テーブル561は、共有メモリ504内のプログラム実行管理テーブル541をコピーしたものである。スケジューラ562は、プログラム実行管理テーブル561を参照することにより、次に実行するプログラムを算出し、割り込み信号IRQを使用して、実行待ち状態にあるコアに対してプログラムの実行を指示する機能を有する。また、スケジューラ562は、プログラム実行管理テーブル561に記録された共有データ領域情報を参照して、このプログラムが書き込みを行う共有メモリ領域情報を、スコアボード602に記録する。
スケジューラ562は、プログラムを実行中のコアから共有データ領域への書き込み完了通知611を検出すると、スコアボード602から該当するデータの書き込み未完了情報をクリアし、次に実行すべきプログラムを選択する際には、プログラム実行管理テーブル561とスコアボード602を参照し、次に実行するプログラムが存在し、共有データ領域の依存関係が解消されていれば、他の実行完了待ちのコアに対して、この次に実行すべきプログラムの実行を、割り込み信号IRQを介して指示する。
なお、スケジューラ562は、必ずしも割り込みコントローラ(IRC)505に内蔵されていなくてよい。また、スケジューラ562は、必ずしもハードウェアによる実装を必要とするものではなく、ソフトウェアでも実装可能である。
図8は、図5のマルチコアシステムの処理例を示すフローチャートである。ステップ802では、コンパイラ801は、プログラム間で共有するデータの依存関係を抽出して並列に実行可能なプログラムA,B,Cを生成する。
次に、ステップ803では、第1のコア501は、プログラムを実行させるコアの初期設定を行い、割り込みコントローラ(IRC)505に通知する。例えば、プログラムAを実行させるコアとして第2のコア502を選定する。
次に、ステップ804では、割り込みコントローラ(IRC)505は、プログラムを実行させるコアを選定する。例えば、第2のコア502を選定する。
次に、ステップ805では、割り込みコントローラ(IRC)505は、ステップ809でプログラムの実行完了通知612が第2のコア502又は第3のコア503から通知されたか否かを判定する。実行完了通知612が通知されていなければステップ806へ進み、実行完了通知612が通知されていれば、割り込みコントローラ(IRC)505は、第1のコア501に上記のプログラムの実行完了通知を通知する。
ステップ806では、割り込みコントローラ(IRC)505は、プログラムを実行させるコアを起動する。例えば、第2のコア502を起動する。
次に、ステップ807では、起動された第2のコア502又は第3のコア503は、プログラムを実行開始する。例えば、第2のコア502は、プログラムAを実行開始する。
次に、ステップ808では、実行中の第2のコア502又は第3のコア503は、共有データの書き込みが完了すると、書き込み完了通知611を割り込みコントローラ(IRC)505に通知する。例えば、第2のコア502は、プログラムAのデータ3の書き込みを完了すると、書き込み完了通知611を割り込みコントローラ(IRC)505に通知する。ここで、書き込み完了通知部523及び533は、各共有データの書き込みが完了する度に、書き込み完了通知611を割り込みコントローラ(IRC)505に通知する。その後、ステップ809及び810へ進む。
ステップ810では、割り込みコントローラ(IRC)505は、データの依存関係を監視する。具体的には、割り込みコントローラ(IRC)505は、第2のコア502又は第3のコア503からプログラム中のデータの書き込み完了通知611が通知されると、スコアボード602に当該プログラムの当該データの書き込みが完了した旨を記録する。
次に、ステップ811では、割り込みコントローラ(IRC)505は、プログラム実行管理テーブル561及びスコアボード602を参照し、データの依存関係が解消されているか否かを判定する。次のプログラムで参照されるデータの書き込みがすべて完了していれば、データの依存関係が解消されていると判定することができる。データの依存関係が解消されていなければ、ステップ810へ戻り、割り込みコントローラ(IRC)505は、データの依存関係を監視する。データ依存関係が解消されていれば、ステップ804へ戻り、割り込みコントローラ(IRC)505は、プログラム実行管理テーブル561を参照し、次のプログラムを実行させるコアを選定する。例えば、次のプログラムBを実行させるコアとして第3のコア503が選定される。
ステップ809では、第2のコア502又は第3のコア503は、プログラムの実行を完了すると、実行完了通知612を割り込みコントローラ(IRC)505に通知し、ステップ805に戻る。ステップ805では、割り込みコントローラ(IRC)505は、プログラムの実行完了により、次に実行すべきプログラムがある場合には、そのプログラムの実行開始を第2のコア502又は第3のコア503に指示する。
以上のように、本実施形態では、プログラムが安全にデータ書き込みの完了を認識するために、プログラム開発者がプログラムの中に、この完了を宣言する記述を追加する。プログラムを実行中の第2のコア502又は第3のコア503は、プログラム実行中にデータ書き込みが完了すると、書き込み完了通知611を割り込みコントローラ(IRC)505に通知する。割り込みコントローラ(IRC)505は、データ書き込みの完了をリアルタイムに認識し、このデータを参照するプログラムの実行を開始することができる。
本実施形態のマルチコアシステムは、プログラムAを実行することによりデータ3を書き込み、その書き込み完了後に書き込み完了通知611を通知するコア502と、プログラムBを実行することにより前記書き込まれたデータ3を参照するコア503とを有する。スケジューラ562は、プログラムAの実行によりコア502から書き込み完了通知611が通知されると、プログラムAが実行完了する前にプログラムBの実行開始をコア503に指示する。
スケジューラ562は、プログラムA及びプログラムBのデータ3の依存関係に応じて、プログラムBの実行開始をコア503に指示する。
また、スケジューラ562は、プログラムBを実行することにより参照するデータのすべての書き込み完了通知611が通知されると、プログラムBの実行開始をコア503に指示する。
スケジューラ562がハードウェアである場合には、書き込み完了通知611は、ハードウェアの信号線により通知される。
また、スケジューラ562がソフトウェアである場合には、書き込み完了通知611は、ソフトウェアのプロトコルにより通知される。
プログラム実行管理テーブル561は、プログラムAにより書き込まれたデータ3がプログラムBにより参照されることを示す、プログラムA及びプログラムBのデータ3の依存関係を記憶する。スケジューラ562は、プログラム実行管理テーブル561に応じて、プログラムBの実行開始をコア503に指示する。
スコアボード602は、プログラムAを実行することによりデータ3の書き込みが完了したか否かを記憶する。スケジューラ562は、コア502から書き込み完了通知611が通知されると、プログラムAを実行することによりデータ3の書き込みが完了したことをスコアボード602に記録する。
スケジューラ562は、割り込み信号IRQによりプログラムBの実行開始をコア503に指示する。例えば、コア502及びコア503は、それぞれプロセッサである。
本実施形態によれば、プログラムAの実行によるデータ3の書き込み完了後において、プログラムAが実行完了する前にプログラムBの実行を開始することができるので、無駄なプログラムAの実行完了待ち時間を防止し、並列度を上げることができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
マルチコアシステムの構成例を示す図である。 図1のマルチコアシステムの処理例を示すタイムチャートである。 図2のプログラムA,B,Cをシングルコアが実行する場合のタイムチャートである。 図1のマルチコアシステムの処理例を示すフローチャートである。 本発明の実施形態によるマルチコアシステムの構成例を示す図である。 図5の割り込みコントローラ(IRC)の構成例を示す図である。 図5のマルチコアシステムの処理例を示すタイムチャートである。 図5のマルチコアシステムの処理例を示すフローチャートである。
符号の説明
501 第1のコア
502 第2のコア
503 第3のコア
504 共有メモリ
505 割り込みコントローラ(IRC)
506 バス
561 プログラム実行管理テーブル
562 スケジューラ

Claims (9)

  1. 第1のプログラムを実行することにより第1のデータを書き込み、その書き込み完了後に書き込み完了通知を通知する第1のコアと、
    第2のプログラムを実行することにより前記書き込まれた第1のデータを参照する第2のコアと、
    前記第1のプログラムの実行により前記第1のコアから前記書き込み完了通知が通知されると、前記第1のプログラムが実行完了する前に前記第2のプログラムの実行開始を前記第2のコアに指示するスケジューラと
    を有することを特徴とするマルチコアシステム。
  2. 前記スケジューラは、前記第1のプログラム及び前記第2のプログラムの前記第1のデータの依存関係に応じて、前記第2のプログラムの実行開始を前記第2のコアに指示することを特徴とする請求項1記載のマルチコアシステム。
  3. 前記スケジューラは、前記第2のプログラムを実行することにより参照するデータのすべての書き込み完了通知が通知されると、前記第2のプログラムの実行開始を前記第2のコアに指示することを特徴とする請求項1又は2記載のマルチコアシステム。
  4. 前記書き込み完了通知は、ハードウェアの信号線により通知されることを特徴とする請求項1〜3のいずれか1項に記載のマルチコアシステム。
  5. 前記書き込み完了通知は、ソフトウェアのプロトコルにより通知されることを特徴とする請求項1〜3のいずれか1項に記載のマルチコアシステム。
  6. さらに、前記第1のプログラムにより書き込まれた第1のデータが前記第2のプログラムにより参照されることを示す、前記第1のプログラム及び前記第2のプログラムの前記第1のデータの依存関係を記憶するプログラム実行管理テーブルを有し、
    前記スケジューラは、前記プログラム実行管理テーブルに応じて、前記第2のプログラムの実行開始を前記第2のコアに指示することを特徴とする請求項2記載のマルチコアシステム。
  7. さらに、前記第1のプログラムを実行することにより前記第1のデータの書き込みが完了したか否かを記憶するスコアボードを有し、
    前記スケジューラは、前記第1のコアから前記書き込み完了通知が通知されると、前記第1のプログラムを実行することにより前記第1のデータの書き込みが完了したことを前記スコアボードに記録することを特徴とする請求項1〜6のいずれか1項に記載のマルチコアシステム。
  8. 前記スケジューラは、割り込み信号により前記第2のプログラムの実行開始を前記第2のコアに指示することを特徴とする請求項1〜7のいずれか1項に記載のマルチコアシステム。
  9. 前記第1のコア及び前記第2のコアは、それぞれプロセッサであることを特徴とする請求項1〜8のいずれか1項に記載のマルチコアシステム。
JP2008331236A 2008-12-25 2008-12-25 マルチコアシステム Expired - Fee Related JP5195408B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008331236A JP5195408B2 (ja) 2008-12-25 2008-12-25 マルチコアシステム
US12/624,105 US8656393B2 (en) 2008-12-25 2009-11-23 Multi-core system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008331236A JP5195408B2 (ja) 2008-12-25 2008-12-25 マルチコアシステム

Publications (2)

Publication Number Publication Date
JP2010152733A JP2010152733A (ja) 2010-07-08
JP5195408B2 true JP5195408B2 (ja) 2013-05-08

Family

ID=42286507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008331236A Expired - Fee Related JP5195408B2 (ja) 2008-12-25 2008-12-25 マルチコアシステム

Country Status (2)

Country Link
US (1) US8656393B2 (ja)
JP (1) JP5195408B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276966A1 (en) * 2010-05-06 2011-11-10 Arm Limited Managing task dependency within a data processing system
EP2669805A4 (en) * 2011-01-25 2016-08-31 Fujitsu Ltd MEMORY CONTROL METHOD AND SYSTEM
US20140068621A1 (en) * 2012-08-30 2014-03-06 Sriram Sitaraman Dynamic storage-aware job scheduling
CN103246625B (zh) * 2013-05-24 2016-03-30 北京大学 一种数据与地址共用引脚自适应调整访存粒度的方法
DE102017217908A1 (de) * 2017-10-09 2019-04-11 Robert Bosch Gmbh Recheneinheit und Betriebsverfahren hierfür

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69130630T2 (de) * 1990-09-14 1999-09-09 Hitachi Synchrones Verfahren und Gerät für Prozessoren
JPH05216792A (ja) * 1992-02-05 1993-08-27 Fujitsu Ltd プロセッサ間におけるサービス要求制御方式
JPH0689188A (ja) 1992-09-08 1994-03-29 Nec Software Ltd 自動並列化処理方式
JPH0830471A (ja) * 1994-07-14 1996-02-02 Hitachi Ltd ジョブの実行プロセサ変更方式
JP3511529B2 (ja) * 1994-09-13 2004-03-29 松下電器産業株式会社 複合演算処理装置
JPH10320218A (ja) * 1997-05-19 1998-12-04 Hitachi Ltd データ転送処理における連携ジョブ自動起動方法
JPH11120156A (ja) * 1997-10-17 1999-04-30 Nec Corp マルチプロセッサシステムにおけるデータ通信方式
US6473808B1 (en) * 1999-04-02 2002-10-29 Motorola, Inc. High performance communication controller for processing high speed data streams wherein execution of a task can be skipped if it involves fetching information from external memory bank
US7165252B1 (en) * 1999-06-21 2007-01-16 Jia Xu Method of scheduling executions of processes with various types of timing properties and constraints
US6978311B1 (en) * 2000-02-09 2005-12-20 Surf Communications Solutions, Ltd. Scheduling in a remote-access server
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US20050149771A1 (en) * 2003-11-07 2005-07-07 Seiko Epson Corporation Processor control circuit, information processing apparatus, and central processing unit
US8984517B2 (en) * 2004-02-04 2015-03-17 Intel Corporation Sharing idled processor execution resources
JP2006024124A (ja) * 2004-07-09 2006-01-26 Sony Corp 制御システム、制御装置および方法、記録媒体、並びにプログラム
US20070143759A1 (en) * 2005-12-15 2007-06-21 Aysel Ozgur Scheduling and partitioning tasks via architecture-aware feedback information
US8032884B2 (en) * 2006-10-31 2011-10-04 Hewlett-Packard Development Company, L.P. Thread hand off
CN101305353B (zh) * 2006-11-27 2013-04-24 英特尔公司 集中式中断控制器
JP2008257578A (ja) * 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法
JP2009069921A (ja) * 2007-09-11 2009-04-02 Hitachi Ltd マルチプロセッサシステム
CN102084357B (zh) * 2008-07-01 2014-06-04 富士通株式会社 检索装置以及检索方法
JP5245722B2 (ja) * 2008-10-29 2013-07-24 富士通株式会社 スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム

Also Published As

Publication number Publication date
JP2010152733A (ja) 2010-07-08
US20100169889A1 (en) 2010-07-01
US8656393B2 (en) 2014-02-18

Similar Documents

Publication Publication Date Title
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
US10067793B2 (en) Data processing method and apparatus for executing task code using reservation instruction and release instruction
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
JP5803972B2 (ja) マルチコアプロセッサ
JP5611756B2 (ja) プログラム・フロー制御
JP5195408B2 (ja) マルチコアシステム
TWI498820B (zh) 具有用於分支錯誤預測之第二跳躍執行單元的處理器
JP2008158759A (ja) プログラミング方法、プログラム処理方法、処理プログラム及び情報処理装置
CN109656868B (zh) 一种cpu与gpu之间的内存数据转移方法
US20180267829A1 (en) Method for configuring an it system, corresponding computer program and it system
JP2005258920A (ja) マルチスレッド実行方法、マルチスレッド実行プログラム、およびマルチスレッド実行装置
US20080307419A1 (en) Lazy kernel thread binding
JP2008269114A (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
JP2017201486A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP7064367B2 (ja) デッドロック回避方法、デッドロック回避装置
JP5540799B2 (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
WO2019188177A1 (ja) 情報処理装置
JP2007122337A (ja) 演算装置
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
JP7039365B2 (ja) デッドロック回避方法、デッドロック回避装置
JP6477216B2 (ja) 演算装置、スレッド切替方法、及びマルチスレッドプログラム
JP2011150636A (ja) マイクロプロセッサ及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110831

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130121

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

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees