WO2012001777A1 - マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム - Google Patents

マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム Download PDF

Info

Publication number
WO2012001777A1
WO2012001777A1 PCT/JP2010/061080 JP2010061080W WO2012001777A1 WO 2012001777 A1 WO2012001777 A1 WO 2012001777A1 JP 2010061080 W JP2010061080 W JP 2010061080W WO 2012001777 A1 WO2012001777 A1 WO 2012001777A1
Authority
WO
WIPO (PCT)
Prior art keywords
time
core
cpu
child
result
Prior art date
Application number
PCT/JP2010/061080
Other languages
English (en)
French (fr)
Inventor
鈴木 貴久
浩一郎 山下
宏真 山内
康志 栗原
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2010/061080 priority Critical patent/WO2012001777A1/ja
Priority to JP2012522382A priority patent/JP5354102B2/ja
Publication of WO2012001777A1 publication Critical patent/WO2012001777A1/ja
Priority to US13/729,854 priority patent/US9223641B2/en

Links

Images

Classifications

    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • 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/54Interprogram communication

Definitions

  • the core that has completed the child process notifies the completion of the child process and the result of the child process to the core that is executing the parent process through inter-core communication.
  • the core that is executing the parent process that has received the notification temporarily interrupts the parent process, and executes a process corresponding to the interrupt, a process of receiving the notified content, and a return process to the parent process.
  • the contents of the cache memory are rewritten to the contents of another process, and there is a problem that the cache hit rate is lowered when the parent process is restored and the processing efficiency is lowered. .
  • the above-mentioned problem becomes more prominent when the number of cores increases and many child processes are executed, and the frequency of communication increases in proportion to the number of child processes.
  • the parent process is frequently obstructed by communication from the child process, and there is a problem that the processing efficiency of the core executing the parent process decreases.
  • the flash ROM controller 105 controls reading / writing of data with respect to the flash ROM 106 under the control of the CPUs 101.
  • the flash ROM 106 stores data written under the control of the flash ROM controller 105. Specific examples of the data include image data and video data acquired by the user using the multi-core processor system 100 through the I / F 108.
  • As the flash ROM 106 for example, a memory card, an SD card, or the like can be adopted.
  • the keyboard 109 has keys for inputting numbers, various instructions, etc., and inputs data.
  • the keyboard 109 may be a touch panel type input pad or a numeric keypad.
  • FIG. 2 is a block diagram of functions of the multi-core processor system 100 according to the first embodiment.
  • the multi-core processor system 100 includes a notification unit 202, an acquisition unit 203, a calculation unit 204, a detection unit 205, a notification unit 206, and an acquisition unit 207.
  • the functions (notifying unit 202 to acquiring unit 207) serving as the control unit are realized by the CPU # 0 and CPU # 1 executing the program stored in the storage device.
  • the storage device is, for example, the ROM 102, the RAM 103, the flash ROM 104, the flash ROM 106, etc. shown in FIG.
  • the function may be realized by another CPU executing via the I / F 108.
  • the notification unit 206 transmits the result of the second process from the second core after the estimated completion time of the first process obtained by adding the remaining time to the time when the second process acquired by the acquisition unit 203 is started. It has a function of notifying the first core. Further, the notification unit 206 may notify the first core from the second core when the detection unit 205 detects that the standby time has elapsed. For example, the notification unit 206 notifies the CPU # 0 of the result of the child process by the CPU # 1 after the estimated completion time of the first process obtained by adding the remaining time A1 to the time when the child process is started. The notified contents may be stored in a register of CPU # 1, a cache memory, or the like.
  • the acquisition unit 207 has a function of acquiring the result notified by the notification unit 206. For example, the acquisition unit 207 acquires the result of the child process notified by the CPU # 1 by the CPU # 0. The acquired contents are stored in a register of CPU # 0, a cache memory, or the like.
  • CPU # 1 which has received the notification at time t1, executes child process 1.
  • CPU # 2 also executes child process 2 at time t3, and CPU # 3 also executes child process 3 at time t2.
  • CPU # 1 completes child process 1.
  • the waiting time A1-C1 is set in the timer. After the setting, CPU # 1 sleeps the thread that executes the child process 1 until the timer expires.
  • CPU # 3 completes child process 3.
  • remaining time A3 ⁇ time C3 required for child process 3 and CPU # 0 has completed the parent process, so CPU # 3 immediately notifies CPU # 0 of the result of child process 3.
  • CPU # 0 receives the notification, CPU # 0 performs interrupt processing corresponding to CPU # 3 from time t10 to time t11, performs reception processing of the results of child processing 1 and child processing 2 from time t11 to time t12, and starts from time t12. Return processing is performed at time t13.
  • Receiving the notifications from CPU # 1 to CPU # 3 CPU # 0 executes processing using the results of child processing 1 to child processing 3 from time t13 to time t14.
  • FIG. 6 is an explanatory diagram showing an example of the contents stored in the profile table 201.
  • the profile table 201 has four fields: a parent process name, an estimated time for completing the parent process (A), a child process name, and an estimated process time (B) using the result of the child process.
  • the parent process name field stores the function name of the parent process or the address where the actual code of the function is stored.
  • the estimated time to complete parent process field stores the estimated time to complete the parent process measured by a profiler or the like.
  • the child process name field stores a child process corresponding to the parent process stored in the parent process name field.
  • the estimated time (B) field of the process using the result of the child process stores an estimated time for completing the process using the result of the child process measured by the profiler or the like.
  • the estimated processing time using the result of the child processing is used in the multi-core processor system 100 used in the second embodiment to be described later.
  • step S706 If the estimated time A is greater than the processing time C of the child process (step S706: Yes), the CPU # 1 sets a timer so that the thread returns from sleep after (estimated time A-processing time C of the child process). (Step S707), the thread is put to sleep (Step S708). After returning from sleep by the process of step S708, or when the estimated time A is equal to or shorter than the process time C of the child process (step S706: No), the CPU # 1 notifies the CPU # 0 of the result of the child process. (Step S709), the process ends. Receiving the notification, CPU # 0 executes a process using the result of the child process (step S710) and ends the process.
  • FIG. 8 is a block diagram of functions of the multi-core processor system 100 according to the second embodiment.
  • the multi-core processor system 100 includes a notification unit 801, an acquisition unit 802, an acquisition unit 803, an acquisition unit 804, a notification unit 805, a notification unit 806, an acquisition unit 807, an acquisition unit 808, and a calculation unit 809. , A detection unit 810 and a notification unit 811.
  • the functions (notification unit 801 to notification unit 811) serving as the control unit are realized by the CPU # 0 to CPU # 3 executing the program stored in the storage device.
  • the acquisition unit 802 to the acquisition unit 804 have a function of acquiring the estimated processing time using the result of the second process in addition to the content acquired by the acquisition unit 203.
  • the acquisition unit 802 estimates from the CPU # 0 the execution request of the child process 1 and the remaining time A1 from the time of the execution request until the parent process is completed and the process using the result of the child process 1 is completed.
  • B1 is acquired by CPU # 1.
  • the acquired contents are stored in, for example, a register of CPU # 1, a cache memory, or the like.
  • the notification unit 811 displays the result of the third process after the estimated completion time of the fourth process, which is obtained by adding the estimated time of the fourth process to the time when the estimated time of the fourth process is acquired by the acquisition unit 807.
  • the third core has a function of notifying the first core.
  • the notification unit 811 may notify the first core from the third core when the detection unit 810 detects that the standby time has elapsed. For example, the notification unit 811 sends the result of the child process 3 from the CPU # 3 to the CPU # 0 after the time obtained by adding the estimated time B1 from the time when the estimated time B1 of the process using the result of the child process 1 is acquired. Notice.
  • the notified contents may be stored in a register of CPU # 3, a cache memory, or the like.
  • CPU # 0 completes the parent process.
  • the process waits until notification is received.
  • CPU # 1 completes child process 1.
  • the remaining time A1 ⁇ time C1 required for the child process 1, and the parent process is completed, so the CPU # 1 immediately notifies the CPU # 0 of the result of the child process 1.
  • the CPU # 1 notifies the CPU # 2 and CPU # 3 that are executing other child processes of the estimated time B1 of the process using the result of the child process 1.
  • the CPU # 0 starts the parent process, and at time t1, the CPU # 1 requests execution of the child process 1, and the remaining time from the time t1 to the estimated time t6 when the parent process is completed.
  • the CPU # 1 is notified of A1 and the estimated time B1 of the process 1101 using the result of the child process 1.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

 CPU(#0)は、第1の処理を実行する。第1の処理実行中に、CPU(#0)は、通知部(202)によって、第2の処理の実行要求と第1の処理が完了する推定時刻までの残余の時間を通知する。CPU(#1)は、取得部(203)によって第2の処理の実行要求と第1の処理が完了する推定時刻までの残余の時間を取得する。CPU(#1)は、第2の処理を実行し、通知部(206)によって、第2の処理を開始した時刻に残余の時間を加えた第1の処理の完了推定時刻以後に、第2の処理の結果をCPU(#0)へ通知する。

Description

マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
 本発明は、コア間の通信を制御するマルチコアプロセッサシステム、通信制御方法、および通信制御プログラムに関する。
 従来、マルチコアプロセッサでの並列処理の一つの形態として、一つの処理が親処理となり、親処理を実行するコアから、他のコアに対して子処理を非同期に実行する形態が存在する。子処理を実行するコアは、処理が完了すると親処理を実行するコアに子処理の結果を通知し、親処理を実行するコアは、結果を用いて処理を継続する。このような並列処理の形態は、親子間の通信が子の起動と終了のタイミングに限られるため、コア間でキャッシュのコヒーレント機構を持たないマルチコアプロセッサシステムや、共有メモリを持たないような疎な結合のマルチコアプロセッサに適している。
 また、一つのコアで親処理を同時に一つだけ実行するようにし、それ以外のコアでは親処理から指示された子処理のみを実行するようにすることで、親処理から他のコアを制御することができる。この動作は、マルチコアプロセッサでそれぞれのプロセッサの能力が異なる非対称型のマルチコアプロセッサや、マルチコアプロセッサに対応したOSを搭載していないマルチコアプロセッサシステムでの並列処理の実現に適している。特に組込機器の分野では、並列処理を行う処理を複数同時に起動するケースはまだ少なく、単純なハードウェアで実現できるため、マルチコアプロセッサに対応したOSも不要なこの並列処理の形態が非常に適している。
 前述の他のコアの制御方法の一つとして、処理の完了する推定時間を予測しておき、推定時間を利用することで、効率的にマルチコアプロセッサを運用することができる。たとえば、他のコアからタスクがすべて終了すると予想される時間を収集し、収集された予測時間から処理を割り当てるコアを決定するという技術が開示されている(たとえば、下記特許文献1を参照。)。
 また、他の推定時間を利用する技術として、たとえば、リアルタイム性が要求されるシステムにおいて、ハードウェアやソフトウェアの遅延を予測し、予測された遅延時間を考慮してタイマを設定する。遅延時間が考慮されたタイマによる割り込み発生時にパケット送信することで、処理要求時間内にパケットを送信できるという技術が開示されている(たとえば、下記特許文献2を参照。)。
特開平9-160890号公報 特開2001-156842号公報
 しかしながら、上述した従来技術では、子処理が完了したコアがコア間通信によって、親処理を実行中のコアに子処理の完了や子処理の結果を通知する。通知を受けた親処理を実行中のコアは、一旦親処理を中断し、割り込みに対応する処理や、通知された内容の受信処理、親処理等への復帰処理を実行する。このように、処理の中断、再開によるオーバーヘッドが発生するという問題があった。また、処理中に別の処理が挟まるため、キャッシュメモリの内容が別の処理の内容に書き変わってしまい、親処理復帰時にキャッシュのヒット率が低下し、処理効率が低下するという問題があった。
 前述の問題点は、コア数が多くなり多くの子処理を実行する場合、子処理の数に比例して通信の頻度が増加すると、より顕著となる。子処理の数が増加するにつれ、親処理が頻繁に子処理からの通信に妨害されるようになり、親処理を実行するコアの処理効率が低下するという問題があった。
 本発明は、上述した従来技術による問題点を解消するため、親処理を実行するコアが処理の途中で割り込まれることなく、処理効率を向上できるマルチコアプロセッサシステム、通信制御方法、および通信制御プログラムを提供することを目的とする。
 上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、マルチコアのうち第1の処理を実行する第1のコアから、第2の処理の実行要求と実行要求が実行される時刻から第1の処理が完了する推定時刻までの残余の時間とを第1のコアとは異なる第2のコアにより取得し、第2の処理を開始した時刻に残余の時間を加えた第1の処理の完了推定時刻以後に、第2の処理の結果を第2のコアから第1のコアへ通知する。
 本マルチコアプロセッサシステム、通信制御方法、および通信制御プログラムによれば、親処理を実行するコアが処理の途中で割り込まれず、キャッシュメモリが不用意に書き変わられることを防ぎ、処理効率を向上できるという効果を奏する。
実施の形態1と実施の形態2にかかるマルチコアプロセッサシステム100のハードウェアを示すブロック図である。 実施の形態1にかかるマルチコアプロセッサシステム100の機能を示すブロック図である。 実施の形態1にかかるキャッシュメモリを有効活用できる親子間の処理の動作パターンを示す説明図である。 実施の形態1にかかるコア間通信のタイミングを制御するための設計時と実行時に行う処理を示す説明図である。 実施の形態1にかかるコア間通信のタイミングを制御した際の親子間の処理の実行例を示す説明図である。 プロファイルテーブル201の記憶内容の一例を示す説明図である。 実施の形態1にかかるコア間通信のタイミングを制御した際の親子間の処理を示すフローチャートである。 実施の形態2にかかるマルチコアプロセッサシステム100の機能を示すブロック図である。 実施の形態2にかかるキャッシュメモリを有効活用できる親子間の処理の動作パターンを示す説明図である。 実施の形態2にかかるコア間通信のタイミングを制御するための設計時と実行時に行う処理を示す説明図である。 実施の形態2にかかるコア間通信のタイミングを制御した際の親子間の処理の実行例1を示す説明図である。 実施の形態2にかかるコア間通信のタイミングを制御した際の親子間の処理の実行例2を示す説明図である。 実施の形態2にかかるコア間通信のタイミングを制御した際の親子間の処理を示すフローチャートである。
 以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、通信制御方法、および通信制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステム100のハードウェア)
 図1は、実施の形態1と実施の形態2にかかるマルチコアプロセッサシステム100のハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、を含む。また、マルチコアプロセッサシステム100は、フラッシュROM104と、フラッシュROMコントローラ105と、フラッシュROM106と、を含む。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ107と、I/F(Interface)108と、キーボード109と、を含む。また、各部はバス110によってそれぞれ接続されている。
 ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101は、CPU#0~CPU#3を含む。CPU#0~CPU#3は、それぞれ専用のキャッシュメモリを有する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるCPUが並列されている形態を例にあげて説明する。
 ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを、受信した新しいOSに更新する。
 フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。
 ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。
 I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。
 キーボード109は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。
(実施の形態1にかかるマルチコアプロセッサシステム100の機能)
 次に、実施の形態1にかかるマルチコアプロセッサシステム100の機能について説明する。図2は、実施の形態1にかかるマルチコアプロセッサシステム100の機能を示すブロック図である。マルチコアプロセッサシステム100は、通知部202と、取得部203と、算出部204と、検出部205と、通知部206と、取得部207と、を含む。この制御部となる機能(通知部202~取得部207)は、記憶装置に記憶されたプログラムをCPU♯0、CPU#1が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104、フラッシュROM106などである。または、I/F108を経由して他のCPUが実行することにより、その機能を実現してもよい。
 また、図2では、CPU#0の機能として、通知部202、取得部207が含まれ、CPU#1の機能として取得部203~通知部206が含まれる。これはCPU#0が特定の処理を実行し、特定の処理を親処理として、親処理から呼び出される子処理をCPU#1が実行することを想定している。したがって、親処理をCPU#1が実行し、子処理をCPU#0が実行する場合であれば、CPU#1の機能として通知部202、取得部207が含まれ、CPU#0の機能として取得部203~通知部206が含まれていてもよい。
 また、本実施の形態での処理とは、プログラムの実行単位となるスレッドそのものであってもよいし、スレッド内の1関数でもよいし、関数内の1部分であってもよい。関数内の1部分として、たとえば、処理は、特定の条件を満たすまで繰り返すコード部分を指していてもよい。
 また、マルチコアプロセッサシステム100は、RAM103等に格納されているプロファイルテーブル201にアクセス可能である。プロファイルテーブル201は、プロファイル等によって取得した、処理が完了する推定時間を格納している。プロファイルテーブル201の詳細は、図6にて後述する。
 通知部202は、マルチコアのうち第1の処理を実行する第1のコアにより、第2の処理の実行要求と実行要求が実行される時刻から第1の処理が完了する推定時刻までの残余の時間とを第2のコアに通知する機能を有する。第1の処理とは、たとえば、親処理であり、第2の処理は子処理である。たとえば、通知部202は、親処理を実行するCPU#0により、子処理の実行要求と実行要求の時刻から親処理が完了するまでの残余の時間A1を、CPU#1に通知する。なお、通知した内容は、CPU#0のレジスタ、キャッシュメモリなどに記憶されてもよい。
 取得部203は、第1のコアから、第2の処理の実行要求と実行要求が実行される時刻から第1の処理が完了する推定時刻までの残余の時間とを第1のコアとは異なる第2のコアにより取得する機能を有する。たとえば、取得部203は、CPU#0から、子処理の実行要求と実行要求の時刻から親処理が完了するまでの残余の時間A1を、CPU#1により取得する。なお、取得した内容は、CPU#1のレジスタ、キャッシュメモリなどに記憶される。
 算出部204は、第1の処理の完了推定時刻より前に、第2のコアにより第2の処理を完了した場合、残余の時間から第2の処理の完了にかかった時間を減じた待機時間を算出する機能を有する。たとえば、算出部204は、親処理が完了する推定時刻より前に、CPU#1により子処理を完了した場合、残余の時間A1から子処理の完了にかかった時間C1を減じた待機時間(A1-C1)を算出する。なお、算出値は、CPU#1のレジスタ、キャッシュメモリなどに記憶される。
 検出部205は、算出部204による算出時点の時刻から算出部204によって算出された待機時間が経過したことを第2のコアにより検出する機能を有する。たとえば、検出部205は、CPU#1の待機時間の算出後から、待機時間(A1-C1)が経過したことをCPU#1により検出する。具体的な検出方法としては、OSの機能であるタイマを利用してもよいし、CPU#1等のクロックパルスを計数するカウンタを利用してもよい。本実施の形態では、OSの機能であるタイマを利用し、タイマに算出された待機時間を設定し、タイマが満了したことで、待機時間が経過したことを検出する。なお、検出されたという情報は、CPU#1のレジスタ、キャッシュメモリなどに記憶される。
 通知部206は、取得部203によって取得された第2の処理を開始した時刻に残余の時間を加えた第1の処理の完了推定時刻以後に、第2の処理の結果を第2のコアから第1のコアへ通知する機能を有する。また、通知部206は、検出部205によって待機時間が経過したことが検出された場合に、第2のコアから第1のコアへ通知してもよい。たとえば、通知部206により、子処理を開始した時刻に残余の時間A1を加えた第1の処理の完了推定時刻以後に、子処理の結果をCPU#1によりCPU#0へ通知する。なお、通知した内容は、CPU#1のレジスタ、キャッシュメモリなどに記憶されてもよい。
 取得部207は、通知部206によって通知された結果を取得する機能を有する。たとえば、取得部207により、CPU#1によって通知した子処理の結果をCPU#0により取得する。なお、取得した内容は、CPU#0のレジスタ、キャッシュメモリなどに記憶される。
 図3は、実施の形態1にかかるキャッシュメモリを有効活用できる親子間の処理の動作パターンを示す説明図である。図3では、時刻t0にてCPU#0は親処理を実行しており、CPU#1~CPU#3は親処理からの実行要求を受けて子処理1~子処理3を実行している。具体的には、CPU#1は、時刻t1にて子処理1を実行し、CPU#2は、時刻t2にて子処理2を実行し、CPU#3は、時刻t3にて子処理3を実行している。
 図3では、CPU#1、CPU#2が、親処理が待ちとなる時刻t4より前に処理が完了した場合を想定している。CPU#1、CPU#2は、親処理が待ちとなる時刻t4まで待機し、時刻t4にてCPU#0に子処理1、子処理2の結果を通知する。通知を受けたCPU#0は、時刻t4から時刻t5にかけてCPU#1、CPU#2に対応する割り込み処理をまとめて行い、時刻t5から時刻t6にかけて子処理1と子処理2の結果の受信処理を行い、時刻t6から時刻t7にかけて復帰処理を行う。子処理3を実行しているCPU#3は、子処理3が完了した時刻t8の時点で、時刻t4を越えているため、そのままCPU#0に子処理3の結果を通知する。
 このように、CPU#0が時刻t0から時刻t4の間で親処理を実行している間に子処理が完了した場合、子処理を実行しているCPUは、親処理がまだ実行中であるとして待機する。これにより、CPU#0の親処理の処理途中の状態を保存しているキャッシュメモリの内容が一旦割り込み処理や子処理の結果で書き変えられてしまうのを防ぐことができる。また、割り込み処理が親処理の終了時にまとめて行われるため、割り込み回数を減らすことができる。
 図4は、実施の形態1にかかるコア間通信のタイミングを制御するための設計時と実行時に行う処理を示す説明図である。図4では、図3にて示した動作を実現するために要求される設計時の処理と実行時の処理とを示している。符号401にて示す処理群が、設計時と実行時に行われる処理403~処理406を示しており、符号402にて示す説明図が、処理403~処理406に対応する処理の内容を示している。設計時に行われる処理として処理403、処理404があり、実行時に行われる処理として処理405、処理406がある。
 処理403にて、プロファイラまたは設計者は、親子間の処理の通信動作をパターン化する。たとえば、プロファイラは、特定の処理から呼び出された処理が存在した場合に、前者の処理を親処理として、後者の処理を子処理として記憶しておく。符号402で示す説明図では、CPU#0で実行する処理を親処理、CPU#1で実行する処理を子処理として記憶する。続けて、処理404にて、プロファイラは、シミュレーションなどで動かした結果から、親処理の完了する推定時間(A)を取得する。
 実行時には、処理405にて、親処理が実行されるCPUが子処理の実行要求をする時に、子処理を実行するCPUに対して親処理の完了する推定時間(A)を通知する。符号402で示す説明図では、CPU#0が通知407にて子処理1の実行要求と親処理の完了する推定時間(A)をCPU#1に通知する。続けて、処理406にて、子処理を実行するCPUは、親処理が完了したタイミングを見計らって親処理を実行するCPUに子処理の結果を通知する。符号402で示す説明図では、CPU#1が通知408にてCPU#0に子処理1の結果を通知する。
 図5は、実施の形態1にかかるコア間通信のタイミングを制御した際の親子間の処理の実行例を示す説明図である。図5では、図4にて設計時の処理を行い、コア間通信のタイミングを制御した際の親子間の処理の実行例を示している。時刻t0にて、CPU#0は、親処理を起動し、時刻t1にてCPU#1に対して子処理1の実行要求と、時刻t1から親処理が完了する推定時刻t6までの残余の時間A1をCPU#1に通知する。続けて、CPU#0は、時刻t2にてCPU#3に対して子処理3の実行要求と、時刻t2から親処理が完了する推定時刻t6までの残余の時間A3をCPU#3に通知する。続けて、CPU#0は、時刻t3にてCPU#2に対して子処理2の実行要求と、時刻t3から親処理が完了する推定時刻t6までの残余の時間A2をCPU#2に通知する。
 時刻t1にて通知を取得したCPU#1は、子処理1を実行する。CPU#2も時刻t3にて子処理2を実行し、CPU#3も時刻t2にて子処理3を実行する。時刻t4にて、CPU#1が子処理1を完了する。時刻t4では、残余の時間A1>子処理1にかかった時間C1となり、CPU#0が親処理を完了していないため、CPU#1は、A1からC1を減じた待機時間A1-C1を算出し、タイマに待機時間A1-C1を設定する。設定後、CPU#1は、タイマが満了するまで子処理1を実行するスレッドをスリープさせる。
 同様に、時刻t5にて、CPU#2が子処理2を完了する。時刻t4でも、残余の時間A2>子処理2にかかった時間C2となり、CPU#0が親処理を完了していないため、CPU#2は、A2からC2を減じた待機時間A2-C2を算出し、タイマに待機時間A2-C2を設定する。設定後、CPU#2は、タイマが満了するまでスレッドをスリープさせる。
 時刻t6にて、CPU#1とCPU#2のタイマが満了すると、CPU#1とCPU#2は、スレッドをスリープから再開させ、親処理を実行するCPU#0に、それぞれ、子処理1の結果、子処理2の結果を通知する。CPU#0は、時刻t6から時刻t7にかけてCPU#1、CPU#2に対応する割り込み処理をまとめて行い、時刻t7から時刻t8にかけて子処理1と子処理2の結果の受信処理を行い、時刻t8から時刻t9にかけて復帰処理を行う。時刻t9以降では、CPU#0は処理を特に行わないため、待機状態となる。
 時刻t10にて、CPU#3が子処理3を完了する。時刻t10では、残余の時間A3≦子処理3にかかった時間C3となり、CPU#0が親処理を完了しているため、CPU#3は、即座に子処理3の結果をCPU#0に通知する。通知を受けたCPU#0は、時刻t10から時刻t11にかけてCPU#3に対応する割り込み処理を行い、時刻t11から時刻t12にかけて子処理1と子処理2の結果の受信処理を行い、時刻t12から時刻t13にかけて復帰処理を行う。CPU#1~CPU#3から通知を受け取ったCPU#0は、時刻t13から時刻t14にかけて子処理1~子処理3の結果を用いた処理を実行する。
 図6は、プロファイルテーブル201の記憶内容の一例を示す説明図である。プロファイルテーブル201は、親処理名、親処理の完了する推定時間(A)、子処理名、子処理の結果を用いた処理の推定時間(B)という4つのフィールドを有する。
 親処理名フィールドは、親処理の関数名、または関数の実コードが格納されたアドレスを格納する。親処理の完了する推定時間フィールドは、プロファイラなどで計測した親処理の完了する推定時間を格納する。子処理名フィールドは、親処理名フィールドに格納された親処理に対応する子処理を格納する。子処理の結果を用いた処理の推定時間(B)フィールドは、プロファイラなどで計測した子処理の結果を用いた処理が完了する推定時間を格納する。子処理の結果を用いた処理の推定時間については、後述する実施の形態2にて利用されるマルチコアプロセッサシステム100にて使用される。
 たとえば、マルチコアプロセッサシステム100で実行されるソフトウェアであるWebブラウザの処理の一部として、HTML(Hyper Text Markup Language)文書を解析する関数“parse_html()”が親処理となる場合を想定する。Webブラウザをシミュレーションなどで実行し、プロファイラなどで“parse_html()”にかかった時間を計測する。図6の例では、20[msec]を得たため、設計者などによって親処理の完了する推定時間(A)に20[msec]が格納される。
 また、HTML文書内に、画像が存在する場合、“parse_html()”関数は、子処理として対応する関数を呼び出す。たとえば、JPEG(Joint Photographic Experts Group)画像が存在した場合、“parse_html()”関数は“decode_jpeg()”関数を子処理として呼び出す。また、PNG(Portable Network Graphics)画像が存在した場合、“parse_html()”関数は“decode_png()”関数を子処理として呼び出す。このように、親処理から呼び出される関数が子処理名フィールドに登録される。
 子処理であった“decode_jpeg()”関数、“decode_png()”関数は、終了後に、たとえば、画像の格納アドレスや、画像のサイズなどを親処理となる“parse_html()”関数に通知する。通知を受けた“parse_html()”関数は、画像の格納アドレスや、画像のサイズをHTML文書の解析結果に取り込む処理を行う。シミュレーション時、この取り込み処理に2[msec]かかったとすると、設計者などによって子処理の結果を用いた処理の推定時間(B)に2[msec]が格納される。
 図7は、実施の形態1にかかるコア間通信のタイミングを制御した際の親子間の処理を示すフローチャートである。図7に表示される親子間の処理では、親処理をCPU#0が実行し、子処理をCPU#1~CPU#3が実行する。説明の簡略化のため、子処理をCPU#1が実行するとして説明を行う。
 CPU#0は、親処理を実行する(ステップS701)。親処理を実行中に子処理を呼び出す処理が発生すると、CPU#0は、子処理のパラメータに親処理の推定時間Aを追加する(ステップS702)。追加後、CPU#0は、子処理の実行要求をCPU#1に通知する(ステップS703)。
 子処理の実行要求を取得したCPU#1は、子処理を実行する(ステップS704)。CPU#1は、子処理完了後、子処理にかかった処理時間Cを取得する(ステップS705)。取得後、CPU#1は、パラメータに追加された推定時間Aが子処理の処理時間Cより大きいかを判断する(ステップS706)。
 推定時間Aが子処理の処理時間Cより大きい場合(ステップS706:Yes)、CPU#1は、(推定時間A-子処理の処理時間C)後にスレッドをスリープから復帰するようにタイマを設定し(ステップS707)、スレッドをスリープさせる(ステップS708)。ステップS708の処理によるスリープからの復帰後、または、推定時間Aが子処理の処理時間C以下である場合(ステップS706:No)、CPU#1は、CPU#0に子処理の結果を通知し(ステップS709)、終了する。通知を受けたCPU#0は、子処理の結果を用いた処理を実行し(ステップS710)、処理を終了する。
 以上説明したように、マルチコアプロセッサシステム、通信制御方法、および通信制御プログラムによれば、第1のコアによる第1の処理の完了の推定時間と第2の処理の実行要求を第2のコアが取得し、推定時間後に特定のコアに第2の処理の結果を通知する。これにより、マルチコアプロセッサシステムは、第1のコアが第1の処理の実行中に第2の処理の結果を受け取ることがなくなり、第1のコアのキャッシュメモリの内容が別の処理の内容に書き変わらないため、処理効率を向上させることができる。
 また、マルチコアプロセッサシステムは、第1の処理の完了の推定時刻より前に、第2のコアが第2の処理を完了した場合、第1の処理の完了の推定時刻が経過したことを検出した場合に、特定のコアに第2の処理の結果を通知してもよい。これにより、マルチコアプロセッサシステムは、第1のコアのキャッシュメモリの内容が別の処理の内容に書き変わらず、処理効率を向上させることができる。
 また、第1の処理の完了の推定時間より前に第2の処理を完了した第2のコアが複数存在する場合、第2の処理の結果が第1の処理の完了の推定時間経過後に一斉に通知されることになる。したがって、第1のコアでは、第2の処理の結果の割り込み処理や受信処理をまとめて行うことができるため、割り込み処理回数が削減され、処理効率を向上させることができる。
 また、本実施の形態1では、第2の処理についての推定時間を準備しておかなくてもよい。したがって、比較的処理時間が予測しやすい処理を第1の処理に割り振ることで、第1の処理の完了の推定時間の精度を上げることができる。処理時間が予測しやすい処理としては、たとえば、条件分岐が少ない処理などである。
(実施の形態2にかかる概要説明)
 実施の形態1では、親処理の途中にて子処理の結果が割り込むことはないが、子処理の結果を用いた処理を実行中に、他の子処理の結果が割り込んでしまう場合があった。実施の形態2にかかるマルチコアプロセッサシステム100では、子処理の結果を用いた処理を実行中にも、他の子処理の結果が割り込まない形態を提供する。
 次に、実施の形態2にかかるマルチコアプロセッサシステム100の機能について説明する。図8は、実施の形態2にかかるマルチコアプロセッサシステム100の機能を示すブロック図である。マルチコアプロセッサシステム100は、通知部801と、取得部802と、取得部803と、取得部804と、通知部805と、通知部806と、取得部807と、取得部808と、算出部809と、検出部810と、通知部811と、を含む。この制御部となる機能(通知部801~通知部811)は、記憶装置に記憶されたプログラムをCPU♯0~CPU#3が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図1に示したROM102、RAM103、フラッシュROM104、フラッシュROM106などである。または、I/F108を経由して他のCPUが実行することにより、その機能を実現してもよい。
 また、図8では、CPU#0の機能として、通知部801、取得部808が含まれ、CPU#1の機能として取得部802、通知部805が含まれ、CPU#2の機能として取得部803、通知部806が含まれる。また、CPU#3の機能として、取得部804、取得部807、算出部809~通知部811が含まれる。
 これはCPU#0が特定の処理を実行し、特定の処理を親処理として、親処理から呼び出される子処理1をCPU#1が実行し、子処理2をCPU#2が実行し、子処理3をCPU#3が実行することを想定している。さらに、子処理1と子処理2のうち少なくともどちらか一方の処理は、親処理より速く完了し、子処理3は、親処理より遅く完了することを想定している。
 また、たとえば、親処理をCPU#1が実行し、子処理をCPU#0が実行する場合であれば、CPU#1の機能として通知部801、取得部808が含まれ、CPU#0の機能として取得部802、通知部805が含まれていてもよい。また、実施の形態2にかかるマルチコアプロセッサシステム100は、プロファイルテーブル201にアクセス可能である。また、取得部808は、取得部207と等しい機能を有するため、説明を省略する。
 通知部801は、通知部202にて通知した内容に加え、第2の処理の結果を用いた処理の推定時間を通知する機能を有する。たとえば、通知部801は、親処理を実行するCPU#0により、子処理1の実行要求と実行要求の時刻から親処理が完了するまでの残余の時間Aと子処理1の結果を用いた処理が完了する推定時間B1をCPU#1に通知する。なお、通知した内容は、CPU#0のレジスタ、キャッシュメモリなどに記憶されてもよい。
 取得部802~取得部804は、取得部203にて取得した内容に加え、第2の処理の結果を用いた処理の推定時間を取得する機能を有する。たとえば、取得部802は、CPU#0から、子処理1の実行要求と実行要求の時刻から親処理が完了するまでの残余の時間A1と子処理1の結果を用いた処理が完了する推定時間B1を、CPU#1により取得する。なお、取得した内容は、たとえば、CPU#1のレジスタ、キャッシュメモリなどに記憶される。
 通知部805、通知部806は、通知部206に加え、第2の処理の結果を用いた処理の推定時間を第1のコアとは異なる他のコアに通知する機能を有する。たとえば、通知部805は、CPU#1により子処理1の結果をCPU#0へ通知し、さらに、子処理1の結果を用いた処理の推定時間B1をCPU#2やCPU#3に通知する。なお、通知した内容は、たとえば、CPU#1のレジスタ、キャッシュメモリなどに記憶されてもよい。
 取得部807は、第3の処理を実行中の第3のコアにより、第2のコアが第1のコアに第2の処理の結果を通知した時に、第2の処理の結果を用いて第1のコアが実行する第4の処理の推定時間を取得する機能を有する。たとえば、取得部807は、第3の処理として子処理3を実行中のCPU#3により、子処理1の結果を用いてCPU#0が実行する処理の推定時間B1を取得する。
 また、取得部807は、第2のコアが複数存在する場合、複数の第2のコアが第1のコアに第2の処理の結果を通知した時に、第3のコアにより、第2のコアごとに存在する第4の処理の推定時間を取得してもよい。たとえば、取得部807は、CPU#1とCPU#2がCPU#0にそれぞれ子処理1の結果と子処理2の結果を通知した時に、CPU#3により、子処理1の結果を用いた処理の推定時間B1と子処理2の結果を用いた処理の推定時間B2を取得する。なお、取得した内容は、CPU#3のレジスタ、キャッシュメモリなどに記憶される。
 算出部809は、第4の処理の完了推定時刻より前に、第3のコアにより第3の処理を完了した場合、第4の処理の推定時間から、取得部807による第4の処理の推定時間の取得時点から第3の処理の完了までの経過時間を減じた待機時間を算出する機能を有する。たとえば、算出部809は、子処理1の結果を用いた処理の完了推定時刻より前に、CPU#3により子処理3を完了した場合、子処理1の結果を用いた処理の推定時間B1から、子処理3の完了までの経過時間D3を減じた待機時間(B1-D3)を算出する。
 また、算出部809は、第2のコアが複数存在する場合、第3のコアにより第4の処理の推定時間の合計から、取得手段による第4の処理の推定時間の集合の取得時点から第3の処理の完了までの経過時間を減じた待機時間を算出してもよい。たとえば、算出部809は、CPU#3により子処理1と子処理2の結果を用いた処理の推定時間の合計B1+B2から、経過時間D3を減じた待機時間(B1+B2-D3)を算出してもよい。なお、算出値は、CPU#3のレジスタ、キャッシュメモリなどに記憶される。
 検出部810は、算出部809による算出時点の時刻から算出部809によって算出された待機時間が経過したことを第3のコアにより検出する。たとえば、検出部810は、CPU#3の待機時間の算出後から、待機時間(B1-D3)が経過したことをCPU#3により検出する。なお、検出されたという情報は、CPU#3のレジスタ、キャッシュメモリなどに記憶される。
 通知部811は、取得部807による第4の処理の推定時間の取得時点の時刻に第4の処理の推定時間を加えた第4の処理の完了推定時刻以後に、第3の処理の結果を第3のコアから第1のコアへ通知する機能を有する。また、通知部811は、検出部810によって待機時間が経過したことが検出された場合に第3のコアから第1のコアへ通知してもよい。たとえば、通知部811は、子処理1の結果を用いた処理の推定時間B1を取得した時点から、推定時間B1を加えた時刻以後に、子処理3の結果をCPU#3からCPU#0へ通知する。なお、通知した内容は、CPU#3のレジスタ、キャッシュメモリなどに記憶されてもよい。
 図9は、実施の形態2にかかるキャッシュメモリを有効活用できる親子間の処理の動作パターンを示す説明図である。図9でも、図3と同様に、時刻t0にてCPU#0は親処理を実行しており、CPU#1~CPU#3は親処理からの実行要求を受けて子処理1~子処理3を実行している。具体的には、CPU#1は、時刻t1にて子処理1を実行し、CPU#2は、時刻t2にて子処理2を実行し、CPU#3は、時刻t3にて子処理3を実行している。
 図9では、CPU#1~CPU#3が、親処理が待ちとなる時刻t4より後に処理が完了し、さらに、CPU#1~CPU#3のうち、時刻t5にてCPU#2が最も速く処理を終了した場合を想定している。時刻t5では、親処理が完了し、CPU#0は待機状態であるため、CPU#2は、即座に子処理2の結果をCPU#0に通知する。
 CPU#0は、時刻t5から時刻t6にかけてCPU#2に対応する割り込み処理を行い、時刻t6から時刻t7にかけて子処理2の結果の受信処理を行い、時刻t7から時刻t8にかけて復帰処理を行う。続けて、CPU#0は、時刻t8から時刻t10にかけて子処理2の結果を用いた処理を実行する。
 時刻t9にて、CPU#1は子処理1を完了する。時刻t9ではCPU#0が子処理2の結果を用いた処理を実行中であるため、CPU#1は、CPU#0が子処理2の結果を用いた処理を完了する時刻t10まで待機し、時刻t10にて、子処理1の結果を通知する。通知を受けたCPU#0は、時刻t10から時刻t11にかけてCPU#1に対応する割り込み処理を行い、時刻t11から時刻t12にかけて子処理1の結果の受信処理を行い、時刻t12から時刻t13にかけて復帰処理を行う。復帰処理後、時刻t13から時刻t14にかけて、CPU#0は、子処理1の結果を用いた処理を実行する。
 このように、CPU#0が時刻t8から時刻t10の間にて子処理の結果を用いた処理を実行している間に他の子処理が完了した場合、他の子処理を完了したCPUは、子処理の結果を用いた処理がまだ実行中であるとして待機する。これにより、CPU#0の子処理の結果を用いた処理の途中を保存しているキャッシュ内容が一旦割り込み処理や他の子処理の結果で書き変えられてしまうのを防ぐことができる。また、図3と同様に、割り込み処理が親処理の終了時にまとめて行われる場合は、割り込み回数を減らすことができる。
 図10は、実施の形態2にかかるコア間通信のタイミングを制御するための設計時と実行時に行う処理を示す説明図である。図10では、図9にて示した動作を実現するために要求される設計時の処理と実行時の動作を示している。符号1001にて示す処理群が、設計時と実行時に行われる処理1003~処理1006を示し、符号1002にて示す説明図が、処理1003~処理1006に対応する処理の内容を示している。設計時に行われる処理として処理1003、処理1004があり、実行時に行われる処理として処理1005、処理1006がある。
 処理1003にて、プロファイラまたは設計者は、親子間の処理の通信動作をパターン化する。たとえば、プロファイラは、特定の処理から呼び出された処理が存在した場合に、前者の処理を親処理として、後者の処理を子処理として記憶しておく。符号1002で示す説明図では、プロファイラはCPU#0で実行する処理を親処理、CPU#1~CPU#3で実行する処理を子処理1~子処理3として記憶する。続けて、処理1004にて、プロファイラは、シミュレーションなどで動かした結果から、親処理の完了する推定時間(A)と子処理の結果を用いた処理の完了する推定時間(B)を取得する。
 実行時には、処理1005にて、親処理が実行されるCPUが子処理の実行要求をする時に、子処理を実行するCPUに対して親処理の完了する推定時間(A)と子処理の結果を用いた処理の完了する推定時間(B)を通知する。符号1002で示す説明図では、CPU#0が通知1007にて子処理1の実行要求と親処理の完了する推定時間(A)と子処理1の結果を用いた処理の完了する推定時間(B1)をCPU#1に通知する。同様に、CPU#0は、通知1008にて子処理2の実行要求と時間(A)と時間(B2)をCPU#2に通知し、CPU#0は、通知1009にて子処理3の実行要求と時間(A)と時間(B3)をCPU#3に通知する。
 続けて、処理1006にて、子処理を実行するCPUは、親処理が完了した、または、子処理の結果を用いた処理が完了したタイミングを見計らって親処理を実行するCPUに子処理の結果を通知する。符号1002で示す説明図では、CPU#0が親処理を完了したタイミングで、CPU#2が通知1010にてCPU#0に子処理2の結果を通知する。また、CPU#0が子処理2の結果を用いた処理を完了したタイミングで、CPU#1が通知1011にてCPU#0に子処理1の結果を通知する。
 図11は、実施の形態2にかかるコア間通信のタイミングを制御した際の親子間の処理の実行例1を示す説明図である。図11では、図10にて設計時の処理を行い、コア間通信のタイミングを制御した際の親子間の処理の実行例の1つ目を示している。時刻t0にて、CPU#0は、親処理を起動し、時刻t1にてCPU#1に対して子処理1の実行要求と、時刻t1から親処理が完了する推定時刻t4までの残余の時間A1と、子処理1の結果を用いた処理1101の推定時間B1をCPU#1に通知する。
 続けて、CPU#0は、時刻t2にてCPU#2に対して子処理2の実行要求と、時刻t2から親処理が完了する推定時刻t4までの残余の時間A2と、子処理2の結果を用いた処理1102の推定時間B2をCPU#2に通知する。続けて、CPU#0は、時刻t3にてCPU#3に対して子処理3の実行要求と、時刻t3から親処理が完了する推定時刻t4までの残余の時間A3と、子処理3の結果を用いた処理1103の推定時間B3をCPU#3に通知する。
 時刻t4にてCPU#0は、親処理を完了する。時刻t4の時点では、CPU#1~CPU#3から通知を受け取っていないため、通知を受け取るまで待機する。時刻t5にて、CPU#1は、子処理1を完了する。時刻t5では、残余の時間A1≦子処理1にかかった時間C1となり、親処理が完了しているため、CPU#1は、即座に子処理1の結果をCPU#0に通知する。また、CPU#1は、他の子処理を実行しているCPU#2、CPU#3に対して、子処理1の結果を用いた処理の推定時間B1を通知する。
 通知を受けたCPU#0は、時刻t5から時刻t6にかけてCPU#1に対応する割り込み処理を行い、時刻t6から時刻t7にかけて子処理1の結果の受信処理を行い、時刻t7から時刻t8にかけて復帰処理を行う。CPU#1から通知を受け取ったCPU#0は、時刻t8から時刻t10にかけて子処理1の結果を用いた処理1101を実行する。
 また、通知を受けたCPU#2、CPU#3は、時刻t5から時刻t6にかけてCPU#1に対応する割り込み処理を行い、時刻t6から時刻t7にかけて時間B1の受信処理を行い、時刻t7から時刻t8にかけて復帰処理を行う。復帰後、CPU#2は子処理2を続行し、CPU#3は子処理3を続行する。
 時刻t9にて、CPU#2は、子処理2を完了する。時刻t9では、子処理1の結果を用いた処理1101の推定時間B1>時間B1を取得した時刻t5から子処理2の完了までの時間D2となり、CPU#0が子処理1の結果を用いた処理1101を完了していない。したがって、CPU#2は、B1からD2を減じた待機時間B1-D2を算出し、タイマに待機時間B1-D2を設定する。設定後、CPU#2は、タイマが満了するまでスレッドをスリープさせる。
 時刻t10にて、CPU#2のタイマが満了すると、CPU#2は、スレッドをスリープから復帰させ、CPU#0に子処理2の結果を通知する。また、CPU#2は、他の子処理を実行するCPU#1、CPU#3に対して、子処理2の結果を用いた処理1102の推定時間B2を通知する。
 通知を受けたCPU#0は、時刻t10から時刻t11にかけてCPU#2に対応する割り込み処理を行い、時刻t11から時刻t12にかけて子処理2の結果の受信処理を行い、時刻t12から時刻t13にかけて復帰処理を行う。復帰処理後、時刻t13から時刻t14にかけて、CPU#0は、子処理2の結果を用いた処理を実行する。
 また、通知を受けたCPU#3は、時刻t10から時刻t11にかけてCPU#2に対応する割り込み処理を行い、時刻t11から時刻t12にかけて時間B2の受信処理を行い、時刻t12から時刻t13にかけて復帰処理を行う。復帰後、CPU#3は、子処理3を続行する。また、CPU#1も通知を受け取るが、子処理1が完了し、実行中の処理が存在しないため、通知は破棄される。
 時刻t14にて、CPU#0は、子処理2の結果を用いた処理1102を完了する。時刻t14の時点では、CPU#0は、子処理3の結果を取得していないため、子処理3の結果を取得するまで待機する。
 時刻t15にて、CPU#3は、子処理3を完了する。時刻t15では、子処理2の結果を用いた処理1102の推定時間B2≦時間B2を取得した時刻t10から子処理3の完了までの時間D3となり、CPU#0は子処理2の結果を用いた処理1102を完了している。したがって、CPU#3は、即座に子処理3の結果をCPU#0に通知する。また、CPU#3は、他の子処理を実行するCPU#1、CPU#2に対して、子処理3の結果を用いた処理の推定時間B3を通知する。
 通知を受けたCPU#0は、時刻t15から時刻t16にかけてCPU#3に対応する割り込み処理を行い、時刻t16から時刻t17にかけて子処理3の結果の受信処理を行い、時刻t17から時刻t18にかけて復帰処理を行う。復帰処理後、時刻t18から時刻t19にかけて、CPU#0は、子処理3の結果を用いた処理1103を実行する。また、CPU#1、CPU#2も通知を受け取るが、それぞれ子処理1、子処理2が完了し、実行中の処理が存在しないため、通知は破棄される。
 図12は、実施の形態2にかかるコア間通信のタイミングを制御した際の親子間の処理の実行例2を示す説明図である。図12では、図10にて設計時の処理を行い、コア間通信のタイミングを制御した際の親子間の処理の実行例の2つ目を示している。図11で示した実行例1との違いとしては、親処理が完了する間に子処理が複数完了している点である。
 時刻t0にて、CPU#0は、親処理を起動し、時刻t1にてCPU#1に対して子処理1の実行要求と、時刻t1から親処理が完了する推定時刻t6までの残余の時間A1と、子処理1の結果を用いた処理1101の推定時間B1をCPU#1に通知する。
 続けて、CPU#0は、時刻t2にてCPU#2に対して子処理2の実行要求と、時刻t2から親処理が完了する推定時刻t6までの残余の時間A2と、子処理2の結果を用いた処理1102の推定時間B2をCPU#2に通知する。続けて、CPU#0は、時刻t3にてCPU#3に対して子処理3の実行要求と、時刻t3から親処理が完了する推定時刻t6までの残余の時間A3と、子処理3の結果を用いた処理1103の推定時間B3をCPU#3に通知する。
 時刻t4にて、CPU#1は、子処理1を完了する。時刻t4では、残余の時間A1>子処理1にかかった時間C1となり、親処理が完了していないため、CPU#1は、A1からC1を減じた待機時間A1-C1を算出し、タイマに待機時間A1-C1を設定する。設定後、CPU#1は、タイマが満了するまでスレッドをスリープさせる。
 時刻t5にて、CPU#2は、子処理2を完了する。時刻t5では、残余の時間A2>子処理2にかかった時間C2となり、親処理が完了していないため、CPU#2は、A2からC2を減じた待機時間A2-C2を算出し、タイマに待機時間A2-C2を設定する。設定後、CPU#2は、タイマが満了するまでスレッドをスリープさせる。
 時刻t6にて、CPU#1とCPU#2のタイマが満了すると、CPU#1とCPU#2は、スレッドをスリープから復帰させ、親処理を実行するCPU#0に、それぞれ、子処理1の結果、子処理2の結果を通知する。また、CPU#1は、他の子処理を実行するCPU#2、CPU#3に対して、子処理1の結果を用いた処理1101の推定時間B1を通知する。同様に、CPU#2は、他の子処理を実行するCPU#1、CPU#3に対して、子処理2の結果を用いた処理1102の推定時間B2を通知する。
 通知を受けたCPU#0は、時刻t6から時刻t7にかけてCPU#1、CPU#2に対応する割り込み処理をまとめて行い、時刻t7から時刻t8にかけて子処理1と子処理2の結果の受信処理を行い、時刻t8から時刻t9にかけて復帰処理を行う。復帰処理後、時刻t9から時刻t11にかけて、CPU#0は、子処理1の結果を用いた処理1101と子処理2の結果を用いた処理1102を連続して実行する。また、CPU#1、CPU#2も通知を受け取るが、それぞれ子処理1、子処理2が完了し、実行中の処理が存在しないため、通知は破棄される。
 通知を受けたCPU#3は、時刻t6から時刻t7にかけてCPU#1、CPU#2に対応する割り込み処理をまとめて行う。続けて、CPU#3は、時刻t7から時刻t8にかけて子処理1の結果を用いた処理1101の推定時間B1と子処理2の結果を用いた処理1102の推定時間B2の受信処理を行い、時刻t8から時刻t9にかけて復帰処理を行う。復帰処理後、時刻t9から時刻t10にかけて、CPU#3は、子処理3を続行する。
 時刻t10にて、CPU#3は子処理3を完了する。時刻10では、子処理1の結果を用いた処理1101の推定時間B1+子処理2の結果を用いた処理1102の推定時間B2>時間B1と時間B2を取得した時刻t6から子処理3の完了までの時間D3となる。この不等式の関係より、CPU#0は子処理1の結果を用いた処理1101と子処理2の結果を用いた処理1102を完了していない。したがって、CPU#3は、B1+B2からD3を減じた待機時間B1+B2-D3を算出し、タイマに待機時間B1+B2-D3を設定する。設定後、CPU#3は、タイマが満了するまでスレッドをスリープさせる。
 時刻t11にて、CPU#3のタイマが満了すると、CPU#3は、スレッドをスリープから復帰させ、CPU#0に子処理3の結果を通知する。また、CPU#3は、他の子処理を実行するCPU#1、CPU#2に対して、子処理3の結果を用いた処理1103の推定時間B3を通知する。
 通知を受けたCPU#0は、時刻t11から時刻t12にかけてCPU#3に対応する割り込み処理を行い、時刻t12から時刻t13にかけて子処理3の結果の受信処理を行い、時刻t13から時刻t14にかけて復帰処理を行う。復帰処理後、時刻t14から時刻t15にかけて、CPU#0は、子処理3の結果を用いた処理を実行する。また、CPU#1、CPU#2も通知を受け取るが、それぞれ子処理1、子処理2が完了し、実行中の処理が存在しないため、通知は破棄される。
 図13は、実施の形態2にかかるコア間通信のタイミングを制御した際の親子間の処理を示すフローチャートである。図13に表示される親子間の処理は、親処理をCPU#0が実行し、子処理をCPU#1~CPU#3が実行する。説明の簡略化のため、子処理をCPU#1が実行するとして説明を行う。
 CPU#0は、親処理を実行する(ステップS1301)。親処理を実行中に子処理を呼び出す処理が発生すると、CPU#0は、子処理のパラメータに親処理の推定時間Aと子処理の結果を用いた処理の推定時間Bを追加する(ステップS1302)。追加後、CPU#0は、子処理の実行要求をCPU#1に通知する(ステップS1303)。
 子処理の実行要求を取得したCPU#1は、子処理を実行する(ステップS1304)。CPU#1は、子処理完了後、子処理の途中で、他の子処理を実行するCPUから推定時間Bの通知を受けたかを判断する(ステップS1305)。他の子処理を実行するCPUとは、本実施の形態では、CPU#2、CPU#3である。
 他の子処理を実行するCPUから推定時間Bの通知を受けていない場合(ステップS1305:No)、CPU#1は、子処理の処理時間Cを取得する(ステップS1306)。取得後、CPU#1は、パラメータに追加された推定時間Aが子処理の処理時間Cより大きいかを判断する(ステップS1307)。推定時間Aが子処理の処理時間Cより大きい場合(ステップS1307:Yes)、CPU#1は、(推定時間A-子処理の処理時間C)後にスレッドを復帰するようにタイマを設定し(ステップS1308)、スレッドをスリープさせる(ステップS1313)。
 ステップS1313の処理によるスリープからの復帰後、または、推定時間Aが子処理の処理時間C以下である場合(ステップS1307:No)、CPU#1は、CPU#0に子処理の結果を通知する(ステップS1314)。子処理の結果を通知後、CPU#1は、CPU#0を除く他のCPUに、自身の推定時間Bを通知し(ステップS1315)、終了する。ステップS1314にて通知を受けたCPU#0は、通知を受けた子処理の結果を用いた処理を実行し(ステップS1316)、処理を終了する。
 他の子処理を実行するCPUから推定時間Bの通知を受けていた場合(ステップS1305:Yes)、CPU#1は、最後に通知を受けてからの経過時間Dを取得する(ステップS1309)。取得後、CPU#1は、最後の通知で同時に受け取った推定時間Bの合計を算出する(ステップS1310)。
 なお、各子処理を完了したCPUからの通信は、若干ずれることもあり、厳密には同時でない場合もありうる。しかし、実際には、各CPUは通信により割り込みが入った時に割り込み処理を行ってから受信処理を行うので、全プロセッサが1チップに収まっているような物理的に近い距離にあるケースでは通信のずれを割り込みオーバーヘッドで吸収することができる。結果、若干ずれて通知が行われても、各CPUは、まとめて受信処理を行うことができる。
 合計を算出後、CPU#1は、推定時間Bの合計が経過時間Dより大きいかを判断する(ステップS1311)。推定時間Bの合計が経過時間Dより大きい場合(ステップS1311:Yes)、CPU#1は、(推定時間B-経過時間D)後にスレッドを復帰するようにタイマを設定し(ステップS1312)、ステップS1313の処理に移行する。推定時間Bの合計が経過時間D以下である場合(ステップS1311:No)、CPU#1は、ステップS1314の処理に移行する。
 以上説明したように、マルチコアプロセッサシステム、通信制御方法、および通信制御プログラムによれば、第3の処理を実行中の第1および第2のコア以外の第3のコアが、第2の処理の結果を用いた第4の処理の完了する推定時間を取得する。第3のコアは、第3の処理の結果を第4の処理の完了する推定時間以後に、第1のコアへ通知する。これにより、マルチコアプロセッサシステムは、第1のコアが他の処理の結果を用いた処理を行っている場合であっても、キャッシュメモリを書き変えずに済み、処理効率を向上させることができる。
 また、マルチコアプロセッサシステムは、第4の処理の完了の推定時刻より前に、第3の処理を完了した場合、第4の処理の完了の推定時刻を経過したことを検出した場合に、第3の処理の結果を第1のコアに通知してもよい。これにより、マルチコアプロセッサシステムは、第1のコアが他の処理の結果を用いた処理を行っている場合であっても、第1のコアのキャッシュメモリの内容が別の処理の内容に書き変わらず、処理効率を向上させることができる。また、第4の処理の完了の推定時刻を経過したことを検出することで、第1のコアの空き時間を発生させずに済み、処理効率を向上させることができる。
 また、マルチコアプロセッサシステムは、第3の処理の完了の推定時刻より前に第2の処理を完了した第2のコアが複数存在する場合、第4の処理群の完了推定時刻以後に、第3の処理の結果を第1のコアに通知してもよい。これにより、マルチコアプロセッサシステムは、第1のコアが第4の処理群を行っている場合であっても、第1のコアのキャッシュメモリの内容が別の処理の内容に書き変わらず、処理効率を向上させることができる。特に、コア数が多くなり、子処理の結果を用いた処理が多くなる場合に有効である。
 また、マルチコアプロセッサシステムは、第4の処理群の完了の推定時刻より前に、第3の処理を完了した場合、第4の処理群の完了の推定時刻を経過したことを検出した場合に、第3の処理の結果を第1のコアに通知してもよい。これにより、マルチコアプロセッサシステムは、第1のコアが第4の処理を行っている場合であっても、第1のコアのキャッシュメモリの内容が別の処理の内容に書き変わらず、処理効率を向上させることができる。また、第4の処理群の完了の推定時刻を経過したことを検出することで、第1のコアの空き時間を発生させずに済み、処理効率を向上させることができる。
 また、マルチコアプロセッサシステムは、実施の形態1と実施の形態2を混在して運用することも可能である。第1のコアが第2のコアに第2の処理の実行要求を通知する際に、第2の処理の結果を用いた第4の処理の推定時間をパラメータに追加するか否かによって、第2のコアは、取得した処理が実施の形態1または実施の形態2であるかを判断することができる。
 なお、本実施の形態で説明した通信制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信制御プログラムは、インターネット等のネットワークを介して配布してもよい。
 #0、#1、#2、#3 CPU
 103 RAM
 110 バス
 201 プロファイルテーブル
 202 通知部
 203 取得部
 204 算出部
 205 検出部
 206 通知部
 207 取得部
 801 通知部
 802 取得部
 803 取得部
 804 取得部
 805 通知部
 806 通知部
 807 取得部
 808 取得部
 809 算出部
 810 検出部
 811 通知部

Claims (8)

  1.  マルチコアのうち第1の処理を実行する第1のコアから、第2の処理の実行要求と前記実行要求が実行される時刻から前記第1の処理が完了する推定時刻までの残余の時間とを第2のコアにより取得する取得手段と、
     前記取得手段によって取得された前記第2の処理を開始した時刻に前記残余の時間を加えた第1の処理の完了推定時刻以後に、前記第2の処理の結果を前記第2のコアから前記第1のコアへ通知する通知手段と、
     を備えることを特徴とするマルチコアプロセッサシステム。
  2.  前記第1の処理の完了推定時刻より前に、前記第2のコアにより第2の処理を完了した場合、前記残余の時間から前記第2の処理の完了にかかった時間を減じた待機時間を算出する算出手段と、
     前記算出手段による算出時点の時刻から前記算出手段によって算出された前記待機時間が経過したことを前記第2のコアにより検出する検出手段と、をさらに備え、
     前記通知手段は、
     前記検出手段によって前記待機時間が経過したことが検出された場合、前記第2の処理の結果を前記第2のコアから前記第1のコアへ通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3.  前記取得手段は、
     第3の処理を実行中の第3のコアにより、前記第2のコアが前記第1のコアに前記第2の処理の結果を通知した時に、前記第2の処理の結果を用いて前記第1のコアが実行する第4の処理が完了する前記第4の処理の推定時間を取得し、
     前記通知手段は、
     前記取得手段による前記第4の処理の推定時間の取得時点の時刻に前記第4の処理の推定時間を加えた前記第4の処理の完了推定時刻以後に、前記第3の処理の結果を前記第3のコアから前記第1のコアへ通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  4.  前記第4の処理の完了推定時刻より前に、前記第3のコアにより第3の処理を完了した場合、前記第4の処理の推定時間から、前記取得手段による前記第4の処理の推定時間の取得時点から前記第3の処理の完了までの経過時間を減じた待機時間を算出する算出手段と、
     前記算出手段による算出時点の時刻から前記算出手段によって算出された前記待機時間が経過したことを前記第3のコアにより検出する検出手段と、をさらに備え、
     前記通知手段は、
     前記検出手段によって前記待機時間が経過したことが検出された場合、前記第3のコアが前記第3の処理の結果を前記第1のコアへ通知することを特徴とする請求項3に記載のマルチコアプロセッサシステム。
  5.  前記取得手段は、
     前記第2のコアが複数存在する場合、複数の前記第2のコアが前記第1のコアに前記第2の処理の結果を通知した時に、前記第3のコアにより、前記第2のコアごとに存在する前記第4の処理の推定時間を取得し、
     前記通知手段は、
     前記取得手段による前記第4の処理の推定時間の取得時点の時刻に前記第4の処理の推定時間の合計を加えた前記第4の処理の完了推定時刻以後に、前記第3の処理の結果を前記第3のコアから前記第1のコアへ通知することを特徴とする請求項3に記載のマルチコアプロセッサシステム。
  6.  前記第4の処理の完了推定時刻より前に、前記第3のコアにより第3の処理を完了した場合、前記第4の処理の推定時間の合計から、前記取得手段による前記第4の処理の推定時間の取得時点から前記第3の処理の完了までの経過時間を減じた待機時間を算出する算出手段と、
     前記算出手段による算出時点の時刻から前記算出手段によって算出された前記待機時間が経過したことを前記第3のコアにより検出する検出手段と、をさらに備え、
     前記通知手段は、
     前記検出手段によって前記待機時間が経過したことが検出された場合、前記第3の処理の結果を前記第3のコアから前記第1のコアへ通知することを特徴とする請求項5に記載のマルチコアプロセッサシステム。
  7.  マルチコアのうち第1の処理を実行する第1のコアから、第2の処理の実行要求と前記実行要求が実行される時刻から前記第1の処理が完了する推定時刻までの残余の時間とを第2のコアにより取得する取得工程と、
     前記取得工程によって取得された前記第2の処理を開始した時刻に前記残余の時間を加えた第1の処理の完了推定時刻以後に、前記第2の処理の結果を前記第2のコアから前記第1のコアへ通知する通知工程と、
     を前記第2のコアが実行することを特徴とする通信制御方法。
  8.  マルチコアのうち第1の処理を実行する第1のコアから、第2の処理の実行要求と前記実行要求が実行される時刻から前記第1の処理が完了する推定時刻までの残余の時間とを第2のコアにより取得する取得工程と、
     前記取得工程によって取得された前記第2の処理を開始した時刻に前記残余の時間を加えた第1の処理の完了推定時刻以後に、前記第2の処理の結果を前記第2のコアから前記第1のコアへ通知する通知工程と、
     を前記第2のコアに実行させることを特徴とする通信制御プログラム。
PCT/JP2010/061080 2010-06-29 2010-06-29 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム WO2012001777A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2010/061080 WO2012001777A1 (ja) 2010-06-29 2010-06-29 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
JP2012522382A JP5354102B2 (ja) 2010-06-29 2010-06-29 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
US13/729,854 US9223641B2 (en) 2010-06-29 2012-12-28 Multicore processor system, communication control method, and communication computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/061080 WO2012001777A1 (ja) 2010-06-29 2010-06-29 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/729,854 Continuation US9223641B2 (en) 2010-06-29 2012-12-28 Multicore processor system, communication control method, and communication computer product

Publications (1)

Publication Number Publication Date
WO2012001777A1 true WO2012001777A1 (ja) 2012-01-05

Family

ID=45401532

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/061080 WO2012001777A1 (ja) 2010-06-29 2010-06-29 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム

Country Status (3)

Country Link
US (1) US9223641B2 (ja)
JP (1) JP5354102B2 (ja)
WO (1) WO2012001777A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017037646A (ja) * 2015-08-12 2017-02-16 エヌエイチエヌ エンターテインメント コーポレーションNHN Entertainment Corporation モバイル環境におけるリソースダウンロード方法、記録媒体、およびリソースダウンロードシステム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITMI20131966A1 (it) * 2013-11-26 2015-05-27 Datalogic IP Tech Srl Sensore di distanza senza contatto e metodo per effettuare una misura di distanza senza contatto
US10896116B1 (en) * 2018-10-19 2021-01-19 Waymo Llc Detecting performance regressions in software for controlling autonomous vehicles

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1124944A (ja) * 1997-06-30 1999-01-29 Ando Electric Co Ltd プロセス同期方法
JPH11306038A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160890A (ja) 1995-10-06 1997-06-20 Matsushita Electric Ind Co Ltd マルチプロセッサシステム
US5715457A (en) 1995-10-06 1998-02-03 Matsushita Electtic Industrial Multiprocessor system for determining assignment of task in view of access time to storage resource
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6292820B1 (en) * 1996-07-29 2001-09-18 At& T Corp. Porting POSIX-conforming operating systems to Win32 API-conforming operating systems
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US6581089B1 (en) 1998-04-16 2003-06-17 Sony Corporation Parallel processing apparatus and method of the same
US6275987B1 (en) * 1998-11-05 2001-08-14 International Business Machines Corporation Adaptive, predictive progress indicator
JP2000347828A (ja) * 1999-06-08 2000-12-15 Canon Inc 情報処理装置及び情報処理装置のジョブ管理方法
JP2001156842A (ja) 1999-11-26 2001-06-08 Mitsubishi Electric Corp 伝送システム
WO2007084700A2 (en) * 2006-01-19 2007-07-26 University Of Maryland Office Of Technology Commercialization System and method for thread handling in multithreaded parallel computing of nested threads
US8495649B2 (en) * 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US8402463B2 (en) * 2006-10-30 2013-03-19 Hewlett-Packard Development Company, L.P. Hardware threads processor core utilization
US8584138B2 (en) * 2007-07-30 2013-11-12 Hewlett-Packard Development Company, L.P. Direct switching of software threads by selectively bypassing run queue based on selection criteria
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US8495636B2 (en) * 2007-12-19 2013-07-23 International Business Machines Corporation Parallelizing single threaded programs by performing look ahead operation on the single threaded program to identify plurality of instruction threads prior to execution
FR2937439B1 (fr) * 2008-10-17 2012-04-20 Commissariat Energie Atomique Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
US8881158B2 (en) * 2008-11-14 2014-11-04 Nec Corporation Schedule decision device, parallel execution device, schedule decision method, and program
US8897372B2 (en) * 2009-02-18 2014-11-25 Nec Corporation Task allocation device, task allocation method, and storage medium storing task allocation program
US8307198B2 (en) * 2009-11-24 2012-11-06 Advanced Micro Devices, Inc. Distributed multi-core memory initialization
US8954996B2 (en) * 2009-12-11 2015-02-10 Red Hat, Inc. Profiling the system providing performance statistics in real time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1124944A (ja) * 1997-06-30 1999-01-29 Ando Electric Co Ltd プロセス同期方法
JPH11306038A (ja) * 1998-04-16 1999-11-05 Sony Corp 並列演算処理装置およびその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017037646A (ja) * 2015-08-12 2017-02-16 エヌエイチエヌ エンターテインメント コーポレーションNHN Entertainment Corporation モバイル環境におけるリソースダウンロード方法、記録媒体、およびリソースダウンロードシステム

Also Published As

Publication number Publication date
US20130117765A1 (en) 2013-05-09
JP5354102B2 (ja) 2013-11-27
US9223641B2 (en) 2015-12-29
JPWO2012001777A1 (ja) 2013-08-22

Similar Documents

Publication Publication Date Title
JP4249763B2 (ja) コンピュータ・システム、及び、その性能・電力消費の管理をする方法
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
TWI597600B (zh) 在運行狀態下藉由減少每個時脈的指令率之微處理器及其省電方法
JP3406594B2 (ja) コンピュータ電力管理システム
CN100338581C (zh) 用于确定cpu利用率的独立于操作系统的方法和系统
US20160077987A1 (en) Deferred inter-processor interrupts
US7770050B2 (en) Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code
JPWO2012046302A1 (ja) マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム
US20160179429A1 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
US20110173628A1 (en) System and method of controlling power in an electronic device
US9690633B2 (en) Synchronization method
JP5354102B2 (ja) マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
JP5590114B2 (ja) ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム
JP5862722B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
EP2551776A1 (en) Multi-core processor system, control program, and control method
JPWO2012101759A1 (ja) プロセッサ処理方法、およびプロセッサシステム
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
Drótos et al. Interrupt driven parallel processing
Flautner Automatic monitoring for interactive performance and power reduction
JPH0619592A (ja) コンピュータ利用機器の省電制御システム
JP2008112243A (ja) シミュレーションプログラム、並びに、それを生成する装置及び方法及びプログラム
Palmur et al. Cpuidle from user space
JP2755205B2 (ja) データ処理装置の低消費電力化方式
JPH0762828B2 (ja) エミュレーション方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10854074

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012522382

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10854074

Country of ref document: EP

Kind code of ref document: A1