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

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

Info

Publication number
JP5708861B2
JP5708861B2 JP2014077376A JP2014077376A JP5708861B2 JP 5708861 B2 JP5708861 B2 JP 5708861B2 JP 2014077376 A JP2014077376 A JP 2014077376A JP 2014077376 A JP2014077376 A JP 2014077376A JP 5708861 B2 JP5708861 B2 JP 5708861B2
Authority
JP
Japan
Prior art keywords
cpu
cache
task
core
execution
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
JP2014077376A
Other languages
English (en)
Other versions
JP2014130644A (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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2014077376A priority Critical patent/JP5708861B2/ja
Publication of JP2014130644A publication Critical patent/JP2014130644A/ja
Application granted granted Critical
Publication of JP5708861B2 publication Critical patent/JP5708861B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、タスクの割り当てを制御するマルチプロセッサシステム、制御方法、および制御プログラムに関する。
従来からCPU(Central Processing Unit)はキャッシュを有しており、キャッシュには使用頻度の高いデータや実行頻度の高いプログラムの実行コードが格納されている(たとえば、下記特許文献1を参照。)。使用頻度の高いデータとは、たとえば、実行中のプログラム内で何度も参照されるデータである。実行頻度の高いプログラムとは、たとえば、一定時間ごとに実行される数ステップのプログラム(以下、「周期実行プログラム」と称する。)である。
また、マルチコアプロセッサシステムにおいて、実行が中断されたタスクが再実行される場合、中断前に実行していたCPUと同一のCPUに該タスクをスケジューリングする技術が知られている(たとえば、下記特許文献2を参照。)。これにより、キャッシュミスを減らすことができる。さらに、ローカルメモリを有するマルチコアプロセッサシステムにおいて、ローカルメモリの有効活用度合いに基づいてどのローカルメモリにどのタスクを括り付けるかを決定する技術が知られている(たとえば、下記特許文献3を参照。)。これにより、データ転送によるオーバーヘッドの増加を防止することができる。
特開2004−192403号公報 特開平08−30562号公報 特開平04−338837号公報
しかしながら、データロードが増加すると、キャッシュに格納されているデータやプログラムの実行コードの多くは追い出されてしまう。たとえば、ローカルメモリを有さないマルチコアプロセッサシステムにおいて、I/O(Input/Output)処理を多く行うタスクが一のCPUに割り当てられた場合、共有メモリからのデータロードが増加する。また、一のCPUが多くのタスクを実行すると、命令キャッシュに格納されている命令が頻繁に追い出される。
命令コードサイズの大きいタスクが割り当てられたCPUや多くのタスクを実行するCPUと同一のCPUに周期実行プログラムが割り当てられた場合、周期実行プログラムの実行コードがキャッシュから追い出される確率が増加するという問題点があった。すなわち、CPUが周期実行プログラムの実行コードを共有メモリからキャッシュへ再ロードする回数が増加するという問題点があった。
また、CPUが共有メモリから該実行コードを読み出す時間は該CPUがキャッシュから実行コードを読み出す時間よりも長いため、該CPUが該実行コードをキャッシュに再ロードせずに実行する場合、オーバーヘッドが増加してしまう問題点があった。
そこで、たとえば、周期実行プログラムの実行コードが格納されているキャッシュの領域をロックすることにより、該実行コードがキャッシュから追い出されなくすることができる。しかしながら、該周期実行プログラムを実行するCPUに割り当てられた他のタスクがキャッシュミスの大きいタスクであると、該他のタスクで使用できるキャッシュの領域が減るため、該他のタスクのキャッシュミスが増大する。その結果、CPUの性能が低下するという問題点があった。
本発明は、上述した従来技術による問題点を解消するため、特定のプログラムがキャッシュから追い出されず、周期実行プログラムと同一のCPUに割り当てられたタスクの実行に与える影響を小さくすることができるマルチプロセッサシステム、制御方法、および制御プログラムを提供することを目的とする。
本発明の一観点によれば、タスクをそれぞれ処理する複数のコアと、前記複数のコアで処理する前記タスクをそれぞれ記憶する複数のキャッシュとを有するマルチプロセッサシステムであって、前記複数のコアのうちの第1のコアは、特定のタスクを前記第1のコアに対応する前記複数のキャッシュのうちの第1のキャッシュに格納し、前記第1のコアよりもキャッシュミスヒット率が低い第2のコアがある場合に、前記特定のタスクを前記第1のキャッシュから前記第2のコアに対応する前記複数のキャッシュのうちの第2のキャッシュに移し、前記第2のキャッシュにおける前記特定のタスクの格納領域を書き込み禁止にするマルチプロセッサシステム、制御方法、および制御プログラムが提供される。
本マルチプロセッサシステム、制御方法、および制御プログラムによれば、特定のプログラムがキャッシュから追い出されず、周期実行プログラムと同一のCPUに割り当てられたタスクの実行に与える影響を小さくすることができるという効果を奏する。
マルチコアプロセッサシステムのハードウェアを示すブロック図である。 サイズテーブル152の一例を示す説明図である。 識別情報153の一例を示す説明図である。 マルチコアプロセッサシステム100の機能ブロック図である。 周期実行プログラムの実行コード502がロードされた領域がロックされる例を示す説明図である。 周期実行プログラムが実行される例を示す説明図である。 周期実行プログラムでないタスクの割り当てを示す説明図である。 命令コードサイズの合計値の算出例を示す説明図である。 実行コード502の移動例を示す説明図である。 実行コード502が格納されている領域をロックさせる例を示す説明図である。 OS141の制御処理手順を示すフローチャート(その1)である。 OS141の制御処理手順を示すフローチャート(その2)である。 スヌープコントローラ105による移動処理を示すフローチャートである。 次指定先CPUによる書き込み禁止設定処理を示すフローチャートである。 現指定先CPUによる一時停止処理を示すフローチャートである。
以下に本マルチプロセッサシステム、制御方法、および制御プログラムの好適な実施の形態を詳細に説明する。
まず、ここで、上述の周期実行プログラムについて説明する。周期実行プログラムは一定時間ごとに実行されるプログラムであり、かつ他のイベントにより起動されるプログラムではない。一般的なタスクでは実行のタイミングと実行時間とが決まっていないが、周期実行プログラムでは実行のタイミングと実行時間とに変化がない。周期実行プログラムとしては、たとえば、携帯電話の通信待ち受けプログラムが挙げられる。携帯電話の通信待ち受けプログラムは携帯電話がどのようなタスク処理中であっても定期的に基地局に通信を問い合わせて通信を検出する。
また、本実施の形態のマルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(マルチコアプロセッサシステムのハードウェア)
図1は、マルチコアプロセッサシステムのハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、マスタCPU101と、スレーブCPU102〜スレーブCPU104と、共有メモリ107と、スヌープコントローラ105と、を有している。また、各CPUと共有メモリ107とはバス106を介してそれぞれ接続されている。各CPUとスヌープコントローラ105とは、バス106とは異なるバスを介してそれぞれ接続されている。
ここで、マスタCPU101とスレーブCPU102〜スレーブCPU104では、たとえば、それぞれコアとレジスタとキャッシュとを有している。マスタCPU101はOSを実行し、マルチコアプロセッサシステム100の全体の制御を司る。OS141は、ソフトウェアの各プロセスをどのCPUに割り当てるかを制御する制御プログラムを有し、マスタCPU101に割り当てられたタスクの切り替えを制御する機能を有している。
スレーブCPU102〜スレーブCPU104は、それぞれOS142〜OS144を実行する。OS142〜OS144は各CPUに割り当てられたタスクの切り替えを制御する機能を有している。
各CPUのキャッシュは、命令キャッシュとデータキャッシュの2種類のキャッシュを有している。命令キャッシュはプログラムを保持するキャッシュであり、データキャッシュはプログラムが実行中に用いられるデータを保持するキャッシュである。
マスタCPU101はキャッシュとして命令キャッシュ111とデータキャッシュ121を有し、スレーブCPU102はキャッシュとして命令キャッシュ112とデータキャッシュ122を有している。スレーブCPU103はキャッシュとして命令キャッシュ113とデータキャッシュ123を有し、スレーブCPU104はキャッシュとして命令キャッシュ114とデータキャッシュ124を有している。
各CPUのキャッシュは更新状態を把握および管理し、他のキャッシュと更新状態の情報を交換することにより、各CPUのキャッシュはどのキャッシュに最新のデータが存在するかを把握することができる。スヌープコントローラ105がこの情報交換を行う。
また、各CPUはレジスタを有している。マスタCPU101はレジスタ131を有し、スレーブCPU102はレジスタ132を有している。スレーブCPU103はレジスタ133を有し、スレーブCPU104はレジスタ134を有している。
また、スヌープコントローラ105は、たとえば、移動元のキャッシュと移動先のキャッシュと移動対象とに関する情報を含む移動指示を受け付けると、移動元のキャッシュから移動対象を複製し、複製した移動対象を移動先のキャッシュに格納する。これにより、スヌープコントローラ105は移動元のキャッシュから移動先のキャッシュへ移動対象を移動させる。
また、本実施の形態では、周期実行プログラムの実行コードが格納されるキャッシュの領域はいずれのCPUのキャッシュであっても同一アドレスの領域とする。たとえば、周期実行プログラムの実行コードはキャッシュの先頭の領域に格納させると利用者があらかじめ決定しておいても良い。
共有メモリ107は、たとえば、マスタCPU101とスレーブCPU102〜スレーブCPU104とに共有されるメモリである。共有メモリ107は、たとえば、プロセス管理テーブル151と、サイズテーブル152と、識別情報153と、OS141〜OS144のブートプログラムなどのプログラムと、を記憶している。共有メモリ107は、たとえば、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを有している。
たとえば、ROMまたはフラッシュROMは該プログラムなどを記憶し、RAMはマスタCPU101とスレーブCPU102〜スレーブCPU104とのワークエリアとして使用される。共有メモリ107に記憶されている該プログラムは、各CPUにロードされることで、コーディングされている処理を各CPUに実行させることとなる。
プロセス管理テーブル151とは、たとえば、各タスクがどのCPUに割り当てられているか、割り当てられているCPUが該タスクを実行中であるか否かを示す情報である。各CPUは、プロセス管理テーブル151を読み出して各CPUのキャッシュに記憶しておく。OS141はマスタCPU101およびスレーブCPU102〜スレーブCPU104のうちのいずれかのCPUにタスクを割り当てると、プロセス管理テーブル151に該タスクがどのCPUに割り当てられたかを登録する。
さらに、タスクの切り替えが発生すると、各CPUはプロセス管理テーブル151にどのタスクが実行状態になったかを登録する。また、タスクの実行が完了すると、各CPUはプロセス管理テーブル151から該完了したタスクの情報を削除する。
図2は、サイズテーブル152の一例を示す説明図である。サイズテーブル152は、各タスクの命令コードサイズを示すテーブルである。サイズテーブル152はタスク名の項目201と命令コードサイズの項目202とを有している。タスク名の項目201にはタスク名が保持されており、命令コードサイズの項目202には、タスクの命令コードサイズが保持されている。命令コードサイズとは、たとえば、タスクのステップ数である。
たとえば、サイズテーブル152ではタスク名の項目201の値がタスクAの場合、命令コードサイズの項目202の値が300である。
図3は、識別情報153の一例を示す説明図である。識別情報153はどのタスクが周期実行プログラムのタスクであるかを示す情報である。識別情報153はタスク名の項目301を有している。たとえば、識別情報153によりタスクGは周期実行プログラムのタスクであると判別される。
(マルチコアプロセッサシステム100の機能ブロック)
図4は、マルチコアプロセッサシステム100の機能ブロック図である。マルチコアプロセッサシステム100は、たとえば、特定部401と移動部402と設定部403〜設定部406とを有している。特定部401と設定部403とはマスタCPU101に実行されるOS141が有している。移動部402はスヌープコントローラ105が有している。設定部404はスレーブCPU102に実行されるOS142が有している。設定部405はスレーブCPU103に実行されるOS143が有している。設定部406はスレーブCPU104に実行されるOS144が有している。
特定部401は、マルチコアプロセッサから、特定のプログラムをキャッシュに格納する一のCPUよりもキャッシュミスヒット率が低い他のCPUを各CPUに割り当てられたタスクの情報量に基づいて特定する。
本実施の形態では、各タスクの情報量を命令コードサイズと称し、命令コードサイズをタスクのステップ数としているが、これに限らず、たとえば、タスクのデータサイズとしてもよい。命令コードサイズやデータサイズが小さいと命令キャッシュを使用する領域が少ないため、キャッシュミスヒット率が小さくなる。また、本実施の形態では、周期実行プログラムを特定のプログラムとして挙げているが、これに限らず、利用者が選択したプログラムを特定のプログラムとしてもよい。
つぎに、移動部402は、特定のプログラムを前記一のコアのキャッシュから特定部401により特定された他のコアのキャッシュに移動させる。
特定されたCPUで動作するOSが有する設定部は、移動部402により特定のプログラムが他のCPUのキャッシュに移動させられた後、他のCPUのキャッシュのうち特定のプログラムが格納された領域を書き込み禁止領域に設定する。さらに、移動元の設定部は、特定プログラムの移動後、書き込み禁止領域に設定していた特定プログラムの領域の禁止設定を解除する。
以上を踏まえて図を用いて実施例を説明する。実施例では、一のコアを現指定先CPUとし、他のコアを次指定先CPUとする。
図5は、周期実行プログラムの実行コード502がロードされた領域がロックされる例を示す説明図である。まず、OS141が、周期実行プログラムの実行コード502をマスタCPU101の命令キャッシュ111にロードする。そして、OS141が、該実行コード502がロードされた領域をレジスタ設定によりロックする。ロードされた領域をロックするとは、ロードされた領域を書き込み禁止領域に設定することを示す。
各CPUのレジスタはキャッシュに関するレジスタを有しており、キャッシュに関するレジスタにはキャッシュのワーク領域を設定することができる。よって、該ロードされた領域をキャッシュのワーク領域から外すことにより、該ロードされた領域がロックされる。また、OS141は、現指定先CPUと次指定先CPUとをマスタCPU101に設定する。
図6は、周期実行プログラムが実行される例を示す説明図である。周期実行プログラムの実行コード502がロックされると、OS141は実行待ちキュー501を監視し、実行待ちキュー501にタスクが積まれると、OS141は(1)タスクGを取り出す。
ここで、実行待ちキュー501とは、マスタOS141であるOS141が有するキューである。たとえば、ユーザ操作により割り当て指示が発生したタスクは実行待ちキュー501に入れられ、OS141が実行待ちキュー501からタスクを取り出し、OS141がどのCPUに割り当てるかを決定する。
そして、OS141はタスクGが周期実行プログラムであるか否かを識別情報153に基づいて判断する。タスクGは周期実行プログラムであるため、OS141は現指定先CPUへタスクGを割り当て、OS141が(2)タスクGを実行する。
図7は、周期実行プログラムでないタスクの割り当てを示す説明図である。図7では、マスタCPU101にタスクAが割り当てられ、スレーブCPU102にタスクBとタスクEとが割り当てられ、スレーブCPU103にタスクCが割り当てられ、スレーブCPU104にタスクDが割り当てられる。
そして、OS141が、(1)実行待ちキュー501からタスクを取り出し、取り出したタスクが周期実行プログラムであるか否かを識別情報153に基づいて判断する。ここで、取り出したタスクがタスクFであり、タスクFは周期実行プログラムではない。OS141がタスクFを任意のCPUに割り当てる。ここでは、(2)タスクFはマスタCPU101に割り当てられる。
図8は、命令コードサイズの合計値の算出例を示す説明図である。つぎに、OS141が、(3)各CPUの合計命令コードサイズをサイズテーブル152に基づいて算出する。タスクAの命令コードサイズが300であり、タスクFの命令コードサイズが250であるため、マスタCPU101の合計命令コードサイズは550である。タスクBの命令コードサイズが300であり、タスクEの命令コードサイズが150であるため、スレーブCPU102の合計命令コードサイズは450である。
タスクCの命令コードサイズが400であるため、スレーブCPU103の合計命令コードサイズは400である。タスクDの命令コードサイズが450であるため、スレーブCPU104の合計命令コードサイズは450である。
つぎに、OS141は合計命令コードサイズが現指定先CPUよりも小さいCPUを特定する。すなわち、OS141はキャッシュミスヒット率が現指定先CPUよりも小さいCPUを特定することができる。ここでは、スレーブCPU102〜スレーブCPU104が特定される。
特定されたCPUが複数であるため、たとえば、OS141は合計命令コードサイズが最も低いスレーブCPU103を選択する。すなわち、OS141はキャッシュミスヒット率が現指定先CPUよりも小さいCPUのうち、最もキャッシュミスヒット率が小さいスレーブCPU103を特定することができる。OS141は(4)特定したスレーブCPU103を次指定先CPUに設定する。
図9は、実行コード502の移動例を示す説明図である。つぎに、OS141が、(5)次指定先CPUであるスレーブCPU103に実行の一時停止を指示する。そして、OS143(次指定先CPUであるスレーブCPU103上で動作するOS)がタスクCの実行を一時停止する。
OS141が、(6)現指定先CPUの命令キャッシュから次指定先CPUの命令キャッシュに周期実行プログラムの実行コード502を移動させる移動指示をスヌープコントローラ105へ通知する。該移動指示では、移動元が現指定先CPUの命令キャッシュであり、移動先が次指定先CPUの命令キャッシュであり、移動対象が実行コード502である。
そして、スヌープコントローラ105が移動指示を受け付けると、スヌープコントローラ105は(7)周期実行プログラムの実行コード502を現指定先CPUの命令キャッシュから次指定先CPUの命令キャッシュに移動させる。スヌープコントローラ105は(8)OS141に移動完了を通知する。
図10は、実行コード502が格納されている領域をロックさせる例を示す説明図である。つぎに、OS141が(9)次指定先CPUの命令キャッシュの領域のうち実行コード502が格納されている領域をロックさせるロック指示を次指定先CPUに通知する。OS143が(10)レジスタ設定により実行オブジェクトをロックし、OS143が(11)ロック完了をOS141に通知する。
OS141が、ロック完了を受け付けると、(12)一時停止解除指示を次指定先CPUへ通知する。そして、OS143がタスクCの一時停止を解除する。OS141が(13)レジスタ設定によりマスタCPU101の命令キャッシュ111のロックを解除する。OS141が(14)現指定先CPUをスレーブCPU103に設定する。
(OS141の制御処理手順)
図11および図12は、OS141の制御処理手順を示すフローチャートである。まず、OS141が、サイズテーブル152と識別情報153とを取得し(ステップS1101)、現指定先CPUおよび次指定先CPUにマスタCPU101を設定する(ステップS1102)。つぎに、OS141が、マスタCPU101の命令キャッシュ111に周期実行プログラムの実行コードをロードし(ステップS1103)、ロードした実行コードの領域をロックする(ステップS1104)。
つぎに、OS141が、マスタOSの実行待ちキュー501が空か否かを判断し(ステップS1105)、マスタOSの実行待ちキュー501が空の場合(ステップS1105:Yes)、ステップS1105に戻る。なお、マスタOSはOS141である。一方、OS141が、マスタOSの実行待ちキュー501が空でないと判断した場合(ステップS1105:No)、マスタOSの実行待ちキュー501からタスクを取り出す(ステップS1106)。
つぎに、OS141が、取り出したタスクが周期実行プログラムか否かを判断する。(ステップS1107)。OS141が、取り出したタスクが周期実行プログラムであると判断した場合(ステップS1107:Yes)、現指定先CPUへ取り出したタスクを割り当て(ステップS1108)、ステップS1105へ移行する。
一方、OS141が、取り出したタスクが周期実行プログラムでないと判断した場合(ステップS1107:No)、取り出したタスクを任意のCPUへ割り当てる(ステップS1109)。そして、OS141が、CPUごとに割り当てられたタスクの命令コードサイズの合計値を算出する(ステップS1110)。
OS141が、算出結果が現指定先CPUよりも小さいCPUを特定する(ステップS1111)。すなわち、キャッシュミスヒット率が現指定先CPUよりも低いCPUを特定する。そして、OS141が、算出結果が現指定先CPUよりも小さいCPUを特定したか否かを判断し(ステップS1112)、該小さいCPUを特定していないと判断した場合(ステップS1112:No)、ステップS1105へ戻る。
一方、OS141が、該小さいCPUを特定したと判断した場合(ステップS1112:Yes)、特定したCPUを次指定先CPUに設定する(ステップS1113)。たとえば、複数のCPUを特定した場合、最も算出結果が小さいCPUを次指定先CPUに指定する。これにより、最もキャッシュ使用量が少ないCPUに周期実行プログラムを格納することができる。これにより、他のタスクの実行への影響を最小限にすることができる。
そして、OS141が、次指定先CPUへ実行一時停止指示を通知する(ステップS1114)。つぎに、OS141が、現指定先CPUの命令キャッシュから次指定先CPUの命令キャッシュへの周期実行プログラムの移動指示をスヌープコントローラ105へ通知し(ステップS1115)、スヌープコントローラ105から移動完了の通知を受け付けたか否かを判断する(ステップS1116)。OS141が、スヌープコントローラ105から移動完了の通知を受け付けていないと判断した場合(ステップS1116:No)、ステップS1116に戻る。
OS141が、スヌープコントローラ105から移動完了の通知を受け付けたと判断した場合(ステップS1116:Yes)、周期実行プログラムがロードされた領域をロックさせる指示を次指定先CPUへ通知する(ステップS1117)。そして、OS141が、次指定先CPUからロック完了を受け付けたか否かを判断する(ステップS1118)。OS141が、次指定先CPUからロック完了を受け付けていないと判断した場合(ステップS1118:No)、ステップS1118へ戻る。
OS141が、次指定先CPUからロック完了を受け付けたと判断した場合(ステップS1118:Yes)、次指定先CPUへ一時停止解除指示を通知する(ステップS1119)。そして、OS141が、現指定先CPUの命令キャッシュのロックを解除させる解除指示を現指定先CPUへ通知する(ステップS1120)。
つぎに、OS141が、次指定先CPUからロック完了を受け付けたか否かを判断する(ステップS1121)。OS141が、次指定先CPUからロック完了を受け付けていないと判断した場合(ステップS1121:No)、ステップS1121へ戻る。OS141が、次指定先CPUからロック完了を受け付けたと判断した場合(ステップS1121:Yes)、現指定先CPUを次指定先CPUに設定し(ステップS1122)、ステップS1105へ戻る。
(スヌープコントローラ105による移動処理)
図13は、スヌープコントローラ105による移動処理を示すフローチャートである。まず、スヌープコントローラ105が、移動指示を受け付けたか否かを判断し(ステップS1301)、移動指示を受け付けていないと判断した場合(ステップS1301:No)、ステップS1301へ戻る。
スヌープコントローラ105が、移動指示を受け付けたと判断した場合(ステップS1301:Yes)、現指定先CPUの命令キャッシュから次指定先CPUの命令キャッシュへ周期実行プログラムの実行コードを移動する(ステップS1302)。つぎに、スヌープコントローラ105が、移動完了をマスタOSへ通知し(ステップS1303)、ステップS1301へ戻る。
(次指定先CPUによる書き込み禁止設定処理)
図14は、次指定先CPUによる書き込み禁止設定処理を示すフローチャートである。まず、次指定先CPUが、ロック指示を受け付けたか否かを判断する(ステップS1401)。次指定先CPUが、ロック指示を受け付けていないと判断した場合(ステップS1401:No)、ステップS1401へ戻る。
一方、次指定先CPUが、ロック指示を受け付けたと判断した場合(ステップS1401:Yes)、キャッシュに関するレジスタを設定することにより指定領域をロックする(ステップS1402)。そして、次指定先CPUが、ロック完了をマスタOSへ通知する(ステップS1403)。なお、マスタOSはOS141である。
(現指定先CPUによる一時停止処理)
図15は、現指定先CPUによる一時停止処理を示すフローチャートである。まず、現指定先CPUが、ロック解除指示を受け付けたか否かを判断する(ステップS1501)。現指定先CPUが、ロック解除指示を受け付けていないと判断した場合(ステップS1501:No)、ステップS1501へ戻る。
一方、現指定先CPUが、ロック解除指示を受け付けたと判断した場合(ステップS1501:Yes)、キャッシュに関するレジスタを設定することにより指定領域のロックを解除する(ステップS1502)。そして、現指定先CPUが、解除完了をマスタOSへ通知する(ステップS1503)。
以上説明したように、マルチプロセッサシステム、制御方法、および制御プログラムによれば、周期実行プログラムを格納しているCPUよりもキャッシュミスヒット率が低いCPUのキャッシュに周期実行プログラムを移動させる。さらに、該低いCPUのキャッシュのうち、周期実行プログラムを格納した領域を書き込み禁止領域に設定する。これにより、周期実行プログラムがキャッシュに常駐し、キャッシュから追い出されないため、周期実行プログラムが再ロードされるのを防止することができる。さらに、周期実行プログラムがCPUのキャッシュに常駐したままであっても、該CPUに割り当てられた他のタスクの実行に与える影響を小さくすることができる。すなわち、各CPUに割り当てられた周期実行プログラムと異なる他のタスクの実行時にキャッシュミスが発生するのを抑制することができ、CPUの性能が低下するのを防止することができる。
100 マルチコアプロセッサシステム
105 スヌープコントローラ
111,112,113,114 命令キャッシュ

Claims (3)

  1. タスクをそれぞれ処理する複数のコアと、
    前記複数のコアで処理する前記タスクをそれぞれ記憶する複数のキャッシュとを有するマルチプロセッサシステムであって、前記複数のコアのうちの第1のコアは、
    特定のタスクを前記第1のコアに対応する前記複数のキャッシュのうちの第1のキャッシュに格納し、前記複数のコアのそれぞれに割り当てられた前記タスクの情報量に基づき前記第1のコアよりもキャッシュミスヒット率が低い第2のコアを検出した場合に、前記特定のタスクを前記第1のキャッシュから前記第2のコアに対応する前記複数のキャッシュのうちの第2のキャッシュに移し、前記第2のキャッシュにおける前記特定のタスクの格納領域を書き込み禁止にする
    マルチプロセッサシステム。
  2. タスクをそれぞれ処理する複数のコアと、前記複数のコアで処理する前記タスクをそれぞれ記憶する複数のキャッシュとを有するマルチプロセッサシステムの制御方法であって、前記複数のコアのうちの第1のコアが、
    特定のタスクを前記第1のコアに対応する前記複数のキャッシュのうちの第1のキャッシュに格納し、
    前記複数のコアのそれぞれに割り当てられた前記タスクの情報量に基づき前記第1のコアよりもキャッシュミスヒット率が低い第2のコアを検出した場合に、前記特定のタスクを前記第1のキャッシュから前記第2のコアに対応する前記複数のキャッシュのうちの第2のキャッシュに移し、
    前記第2のキャッシュにおける前記特定のタスクの格納領域を書き込み禁止にする
    処理を実行する、マルチプロセッサシステムの制御方法。
  3. タスクをそれぞれ処理する複数のコアと、前記複数のコアで処理する前記タスクをそれぞれ記憶する複数のキャッシュとを有するマルチプロセッサシステムの制御プログラムであって、前記複数のコアのうちの第1のコアに、
    特定のタスクを前記第1のコアに対応する前記複数のキャッシュのうちの第1のキャッシュに格納し、
    前記複数のコアのそれぞれに割り当てられた前記タスクの情報量に基づき前記第1のコアよりもキャッシュミスヒット率が低い第2のコアを検出した場合に、前記特定のタスクを前記第1のキャッシュから前記第2のコアに対応する前記複数のキャッシュのうちの第2のキャッシュに移し、
    前記第2のキャッシュにおける前記特定のタスクの格納領域を書き込み禁止にする
    処理を実行させる、マルチプロセッサシステムの制御プログラム。
JP2014077376A 2014-04-03 2014-04-03 マルチプロセッサシステム、制御方法、および制御プログラム Expired - Fee Related JP5708861B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014077376A JP5708861B2 (ja) 2014-04-03 2014-04-03 マルチプロセッサシステム、制御方法、および制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014077376A JP5708861B2 (ja) 2014-04-03 2014-04-03 マルチプロセッサシステム、制御方法、および制御プログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012519177A Division JP5516728B2 (ja) 2010-06-10 2010-06-10 マルチコアプロセッサシステム、制御プログラム、および制御方法

Publications (2)

Publication Number Publication Date
JP2014130644A JP2014130644A (ja) 2014-07-10
JP5708861B2 true JP5708861B2 (ja) 2015-04-30

Family

ID=51408899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014077376A Expired - Fee Related JP5708861B2 (ja) 2014-04-03 2014-04-03 マルチプロセッサシステム、制御方法、および制御プログラム

Country Status (1)

Country Link
JP (1) JP5708861B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020149597A (ja) * 2019-03-15 2020-09-17 株式会社デンソーテン 制御装置および制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2149794T3 (es) * 1993-09-24 2000-11-16 Siemens Ag Procedimiento para compensar la carga en un sistema multiprocesador.
JP3266029B2 (ja) * 1997-01-23 2002-03-18 日本電気株式会社 マルチプロセッサシステムにおけるディスパッチング方式、ディスパッチング方法およびディスパッチングプログラムを記録した記録媒体
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
WO2010024071A1 (ja) * 2008-08-25 2010-03-04 日本電気株式会社 キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム

Also Published As

Publication number Publication date
JP2014130644A (ja) 2014-07-10

Similar Documents

Publication Publication Date Title
JP5516728B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP6314355B2 (ja) メモリ管理方法およびデバイス
US6016490A (en) Database management system
US8689221B2 (en) Speculative thread execution and asynchronous conflict events
KR102571293B1 (ko) 충돌들의 존재시 효율적인 작업 스케줄링을 위한 방법
US9542238B2 (en) Systems and methods for direct memory access coherency among multiple processing cores
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
CN104375958A (zh) 高速缓存存储器管理事务性存储器访问请求
KR20090005921A (ko) 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
CN106537329B (zh) 用于为多线程执行锁保护处理操作的数据处理装置及方法
JP2004280297A (ja) タスク切換装置、方法及びプログラム
WO2016063482A1 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体
JP2007052511A (ja) スケジューリング方法およびスケジューリング装置
JP2009059310A (ja) プログラム制御装置
JP6687845B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP5708861B2 (ja) マルチプロセッサシステム、制御方法、および制御プログラム
US9372724B2 (en) System and method for conditional task switching during ordering scope transitions
JP4857325B2 (ja) タスク切換装置、方法及びプログラム
CN107305507B (zh) 死锁控制方法和装置
US9354935B2 (en) Work processing apparatus for scheduling work, control apparatus for scheduling activation, and work scheduling method in a symmetric multi-processing environment
JP5300005B2 (ja) スレッド実行制御方法、およびシステム
JP6036692B2 (ja) 情報処理装置、情報処理システム、情報処理方法および制御プログラム記録媒体
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
JP5676664B2 (ja) リソース管理装置、リソースの管理方法、及びプログラム
JP5915235B2 (ja) 情報処理装置、及び、情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140507

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150113

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150216

R150 Certificate of patent or registration of utility model

Ref document number: 5708861

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees