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

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

Info

Publication number
JP5516728B2
JP5516728B2 JP2012519177A JP2012519177A JP5516728B2 JP 5516728 B2 JP5516728 B2 JP 5516728B2 JP 2012519177 A JP2012519177 A JP 2012519177A JP 2012519177 A JP2012519177 A JP 2012519177A JP 5516728 B2 JP5516728 B2 JP 5516728B2
Authority
JP
Japan
Prior art keywords
cache
core
cpu
program
task
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
JP2012519177A
Other languages
English (en)
Other versions
JPWO2011155046A1 (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
Publication of JPWO2011155046A1 publication Critical patent/JPWO2011155046A1/ja
Application granted granted Critical
Publication of JP5516728B2 publication Critical patent/JP5516728B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

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

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に割り当てられたタスクの実行に与える影響を小さくすることができるマルチコアプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。
本発明の一観点によれば、マルチコアプロセッサから、特定のプログラムをキャッシュに格納する一のコアよりもキャッシュミスヒット率が低い他のコアを各コアに割り当てられたタスクの情報量に基づいて特定する特定手段と、前記特定のプログラムを前記一のコアのキャッシュから前記特定手段により特定された他のコアのキャッシュに移動させる移動手段と、前記移動手段により前記特定のプログラムが前記他のコアのキャッシュに移動させられた後、前記他のコアのキャッシュのうち前記特定のプログラムが格納された領域を書き込み禁止領域に設定する設定手段と、を備えるマルチコアプロセッサシステムが提供される。
本マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、特定のプログラムがキャッシュから追い出されず、周期実行プログラムと同一の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. マルチコアプロセッサから、特定のプログラムをキャッシュに格納する一のコアよりもキャッシュミスヒット率が低い他のコアを各コアに割り当てられたタスクの情報量に基づいて特定する特定手段と、
    前記特定のプログラムを前記一のコアのキャッシュから前記特定手段により特定された他のコアのキャッシュに移動させる移動手段と、
    前記移動手段により前記特定のプログラムが前記他のコアのキャッシュに移動させられた後、前記他のコアのキャッシュのうち前記特定のプログラムが格納された領域を書き込み禁止領域に設定する設定手段と、
    を備えることを特徴とするマルチコアプロセッサシステム。
  2. 移動先コアのキャッシュと移動元コアのキャッシュと移動対象プログラムとの移動通知を受け付けると、前記移動コアのキャッシュから前記移動コアのキャッシュへ前記移動対象プログラムを移動させる制御回路にアクセス可能なマルチコアプロセッサに、
    前記マルチコアプロセッサから、特定のプログラムをキャッシュに格納する一のコアよりもキャッシュミスヒット率が低い他のコアを各コアに割り当てられたタスクの情報量に基づいて特定する特定工程と、
    前記制御回路に、前記特定のプログラムを前記一のコアのキャッシュから前記特定工程により特定された他のコアのキャッシュに移動させる移動処理工程と、
    前記移動処理工程により前記特定のプログラムが前記他のコアのキャッシュに移動させられた後、前記他のコアのキャッシュのうち前記特定のプログラムが格納された領域を書き込み禁止領域に設定する設定工程と、
    を実行させることを特徴とする制御プログラム。
  3. 移動先コアのキャッシュと移動元コアのキャッシュと移動対象プログラムとの移動通知を受け付けると、前記移動コアのキャッシュから前記移動コアのキャッシュへ前記移動対象プログラムを移動させる制御回路にアクセス可能なマルチコアプロセッサが、
    前記マルチコアプロセッサから、特定のプログラムをキャッシュに格納する一のコアよりもキャッシュミスヒット率が低い他のコアを各コアに割り当てられたタスクの情報量に基づいて特定する特定工程と、
    前記制御回路に、前記特定のプログラムを前記一のコアのキャッシュから前記特定工程により特定された他のコアのキャッシュに移動させる移動処理工程と、
    前記移動処理工程により前記特定のプログラムが前記他のコアのキャッシュに移動させられた後、前記他のコアのキャッシュのうち前記特定のプログラムが格納された領域を書き込み禁止領域に設定する設定工程と、
    を実行することを特徴とする制御方法。
JP2012519177A 2010-06-10 2010-06-10 マルチコアプロセッサシステム、制御プログラム、および制御方法 Expired - Fee Related JP5516728B2 (ja)

Applications Claiming Priority (1)

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

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
JPWO2011155046A1 JPWO2011155046A1 (ja) 2013-08-01
JP5516728B2 true JP5516728B2 (ja) 2014-06-11

Family

ID=45097676

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US20130097382A1 (ja)
EP (1) EP2581833A4 (ja)
JP (1) JP5516728B2 (ja)
CN (1) CN102934095A (ja)
WO (1) WO2011155046A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929723B (zh) * 2012-11-06 2015-07-08 无锡江南计算技术研究所 基于异构众核处理器的并行程序段划分方法
JP6142916B2 (ja) * 2013-03-01 2017-06-07 日本電気株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
JP5591969B1 (ja) * 2013-03-27 2014-09-17 株式会社東芝 マルチコアプロセッサおよび制御方法
JP5808450B1 (ja) 2014-04-04 2015-11-10 ファナック株式会社 マルチコアプロセッサを使用して逐次プログラムを実行する制御装置
US9632958B2 (en) * 2014-07-06 2017-04-25 Freescale Semiconductor, Inc. System for migrating stash transactions
JP2016194831A (ja) * 2015-03-31 2016-11-17 オムロン株式会社 制御装置
JP2018101256A (ja) * 2016-12-20 2018-06-28 ルネサスエレクトロニクス株式会社 データ処理システム及びデータ処理方法
US20190087333A1 (en) * 2017-09-15 2019-03-21 Qualcomm Incorporated Converting a stale cache memory unique request to a read unique snoop response in a multiple (multi-) central processing unit (cpu) processor to reduce latency associated with reissuing the stale unique request
CN110187891B (zh) * 2019-03-18 2023-03-03 杭州电子科技大学 一种用于多核可编程控制器的程序开发方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207850A (ja) * 1997-01-23 1998-08-07 Nec Corp マルチプロセッサシステムにおけるディスパッチング方 式、ディスパッチング方法およびディスパッチングプログ ラムを記録した記録媒体
JP2000276401A (ja) * 1999-03-24 2000-10-06 Nec Ibaraki Ltd キャッシュメモリ制御方法および装置
JP2003248666A (ja) * 2002-02-25 2003-09-05 Nec Corp マルチプロセッサシステム
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163141A (en) * 1988-08-01 1992-11-10 Stenograph Corporation RAM lock device and method for a text entry system
US5983310A (en) * 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
JP2002055966A (ja) * 2000-08-04 2002-02-20 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法
US6615316B1 (en) * 2000-11-16 2003-09-02 International Business Machines, Corporation Using hardware counters to estimate cache warmth for process/thread schedulers
US7082602B2 (en) * 2002-04-12 2006-07-25 Intel Corporation Function unit based finite state automata data structure, transitions and methods for making the same
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US8490101B1 (en) * 2004-11-29 2013-07-16 Oracle America, Inc. Thread scheduling in chip multithreading processors
JP2007102332A (ja) * 2005-09-30 2007-04-19 Toshiba Corp 負荷分散システム及び負荷分散方法
US8812822B2 (en) * 2006-02-09 2014-08-19 International Business Machines Corporation Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US8533395B2 (en) * 2006-02-24 2013-09-10 Micron Technology, Inc. Moveable locked lines in a multi-level cache
US7774549B2 (en) * 2006-10-11 2010-08-10 Mips Technologies, Inc. Horizontally-shared cache victims in multiple core processors
US20080263279A1 (en) * 2006-12-01 2008-10-23 Srinivasan Ramani Design structure for extending local caches in a multiprocessor system
US7996632B1 (en) * 2006-12-22 2011-08-09 Oracle America, Inc. Device for misaligned atomics for a highly-threaded x86 processor
US8161482B1 (en) * 2007-04-13 2012-04-17 Marvell International Ltd. Power optimization for multi-core devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207850A (ja) * 1997-01-23 1998-08-07 Nec Corp マルチプロセッサシステムにおけるディスパッチング方 式、ディスパッチング方法およびディスパッチングプログ ラムを記録した記録媒体
JP2000276401A (ja) * 1999-03-24 2000-10-06 Nec Ibaraki Ltd キャッシュメモリ制御方法および装置
JP2003248666A (ja) * 2002-02-25 2003-09-05 Nec Corp マルチプロセッサシステム
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法

Also Published As

Publication number Publication date
US20130097382A1 (en) 2013-04-18
CN102934095A (zh) 2013-02-13
JPWO2011155046A1 (ja) 2013-08-01
WO2011155046A1 (ja) 2011-12-15
EP2581833A1 (en) 2013-04-17
EP2581833A4 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
JP5516728B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US8689221B2 (en) Speculative thread execution and asynchronous conflict events
US6016490A (en) Database management system
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
US9733981B2 (en) System and method for conditional task switching during ordering scope transitions
JP2004280297A (ja) タスク切換装置、方法及びプログラム
KR20090005921A (ko) 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
CN106537329B (zh) 用于为多线程执行锁保护处理操作的数据处理装置及方法
WO2007055917A1 (en) Program thread synchronization
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
JP2009059310A (ja) プログラム制御装置
JP2012043031A (ja) 共有キャッシュメモリ装置
JP5708861B2 (ja) マルチプロセッサシステム、制御方法、および制御プログラム
WO2012014287A1 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
CN107305507B (zh) 死锁控制方法和装置
US20150277973A1 (en) System and method for conditional task switching during ordering scope transitions
JP4857325B2 (ja) タスク切換装置、方法及びプログラム
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
JP2008176804A (ja) タスクスケジューリングシステム、方法、およびプログラム
JP2684993B2 (ja) プロセッサシステムとその制御方法
JP5300005B2 (ja) スレッド実行制御方法、およびシステム
JP2011018281A (ja) ジョブ実行管理システム、ジョブ実行管理方法、ジョブ実行管理プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131007

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140317

R150 Certificate of patent or registration of utility model

Ref document number: 5516728

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees