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

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

Info

Publication number
JP5534002B2
JP5534002B2 JP2012506729A JP2012506729A JP5534002B2 JP 5534002 B2 JP5534002 B2 JP 5534002B2 JP 2012506729 A JP2012506729 A JP 2012506729A JP 2012506729 A JP2012506729 A JP 2012506729A JP 5534002 B2 JP5534002 B2 JP 5534002B2
Authority
JP
Japan
Prior art keywords
task
core
cpu
assigned
cores
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
JP2012506729A
Other languages
English (en)
Other versions
JPWO2011118012A1 (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 JPWO2011118012A1 publication Critical patent/JPWO2011118012A1/ja
Application granted granted Critical
Publication of JP5534002B2 publication Critical patent/JP5534002B2/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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)

Description

本発明は、マルチコアプロセッサへのタスクの割り当てを制御するマルチコアプロセッサシステム、制御プログラム、および制御方法に関する。
従来、マルチコアプロセッサシステムにおいてスケジューラはタスクの割り当て指示を受け付けると、どのCPU(Central Processing Unit)にタスクを割り当てるかを決定する(たとえば、下記特許文献1〜3参照。)。決定方法としては、たとえば、スケジューラがマルチコアプロセッサから最も低負荷なCPUを特定して、該低負荷なCPUに割り当てる方法が知られている。
また、タスクには、他のタスクと同期するタスクと他のタスクと同期しないタスクがある。たとえば、動画再生に関するタスク(以下、「動画再生タスク」と称する。)は、動画デコードに関するタスク(以下、「動画デコードタスク」と称する。)と音声デコードに関するタスク(以下、「音声デコードタスク」と称する。)を起動する。一のCPUに動画デコードタスクが割り当てられ、他のCPUに音声デコードタスクが割り当てられたとする。動画の再生が30FPS(Frame Per Second)の場合、動画デコードの結果と音声デコードの結果との結合のために1秒間に30回同期処理が一のCPUと他のCPUで行われていた(たとえば、下記特許文献4参照。)。
特開平2−33650号公報 特開2005−267635号公報 特許第3429582号公報 特公平6−1464号公報
しかしながら、動画デコードタスクが割り当てられている一のCPUまたは音声デコードタスクが割り当てられている他のCPUにいずれのタスクにも同期しないタスクが割り当てられていると、同期処理に起因する待ち時間により該同期しないタスクの実行時間が増大するという問題点があった。
マルチコアプロセッサで共有する共有メモリに与えるクロックの周波数を上げることで、同期処理による待ち時間を減少させることができるが、共有メモリの消費電力はマルチコアプロセッサ全体の消費電力において大きな割合を占める。そのため、マルチコアプロセッサにおいて共有メモリに与えるクロックの周波数を上げることができないという問題点があった。
本発明は、上述した従来技術による問題点を解消するため、消費電力を増大させることなく、いずれのタスクにも同期しないタスクの実行時間を減少でき、スループットを向上させることができるマルチコアプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本マルチコアプロセッサシステム、制御プログラム、および制御方法は、対象タスクと同期するタスクの有無を判断し、前記対象タスクと同期するタスクがあると判断された場合、マルチコアプロセッサのうち、いずれのタスクにも同期しない非同期タスクが割り当てられていないコアを特定し、前記対象タスクと同期するタスクがないと判断された場合、前記マルチコアプロセッサのうち、いずれかのタスクに同期する同期タスクが割り当てられていないコアを特定し、前記対象タスクの起動指示を前記特定されたコアへ通知することを要件とする。
本マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、消費電力を増大させることなく、いずれのタスクにも同期しないタスクの実行時間を減少でき、スループットを向上させることができるという効果を奏する。
本発明の一実施例を示す説明図である。 本実施の形態にかかるマルチコアプロセッサシステム100のハードウェア構成を示すブロック図である。 同期テーブル132の一例を示す説明図である。 分周回路104の一例を示す説明図である。 クロックテーブル133の一例を示す説明図である。 クロック制御テーブル134の一例を示す説明図である。 本実施の形態にかかるスケジューラ121の機能的構成を示すブロック図である。 実施例1において各タスクがCPUに割り当てられている例を示す説明図である。 実施例1において同期タスクであるタスク#7の割り当て例を示す説明図である。 実施例1において非同期タスクであるタスク#5の割り当て例を示す説明図である。 実施例1にかかるスケジューラ121による制御処理手順の一例を示すフローチャートである。 実施例2において非同期タスクであるタスク#3の割り当て例を示す説明図である。 実施例2において同期タスクであるタスク#4の割り当て例を示す説明図である。 実施例3においてメモリクロックが下げられる例を示す説明図である。 実施例3において同期タスクであるタスク#7がCPUに割り当てられる例を示す説明図である。 タスク#1が動作状態からスリープ状態に変化した例を示す説明図である。 実施例2および3にかかるスケジューラ121による制御処理手順の一例を示すフローチャート(その1)である。 実施例2および3にかかるスケジューラ121による制御処理手順の一例を示すフローチャート(その2)である。 実施例2および3にかかるスケジューラ121による制御処理手順の一例を示すフローチャート(その3)である。 実施例2および3にかかるスケジューラ121による制御処理手順の一例を示すフローチャート(その4)である。
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、制御プログラム、および制御方法の好適な実施の形態を詳細に説明する。なお、本実施の形態のマルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
図1は、本発明の一実施例を示す説明図である。たとえば、CPU#0には動画再生タスクと該動画再生タスクにより起動された動画デコードタスクが割り当てられ、CPU#1には動画再生タスクにより起動された音声デコードタスクが割り当てられている。
動画再生タスクが動画再生に関するアプリの処理であって、動画デコードタスクが動画デコード処理であり、音声デコードタスクが音声デコード処理である。動画再生に関するアプリでは、各デコード処理の結果を一定間隔で結合する結合処理が行われるため、動画デコードタスクと音声デコードタスクとは同期する必要がある。ここで、動画デコードタスクと音声デコードタスクのようにいずれかのタスクに同期するタスクを同期タスクと称する。
CPU#2にはいずれのタスクにも同期しない非同期タスク1が割り当てられ、CPU#3にはいずれのタスクにも同期しない非同期タスク2が割り当てられている。ここで、いずれのタスクにも同期しないタスクを非同期タスクと称する。
そして、スケジューラ121が非同期タスク3の割り当て指示を受け付けると、非同期タスク3に同期するタスクの有無を判断する。ここでは、非同期タスク3に同期するタスクは無いと判断される。そして、スケジューラ121が、同期タスクが割り当てられていないCPUを特定する。同期タスクが割り当てられていないCPUとは、いずれのタスクも割り当てられていないCPUおよび非同期タスクが割り当てられているCPUである。ここでは、同期タスクが割り当てられていないCPUとしてCPU#2とCPU#3が特定され、スケジューラ121が特定したCPU#2に非同期タスク#3の起動指示を通知することによりCPU#2に非同期タスク#3が割り当てられる。
また、図示していないが、スケジューラ121が同期タスクの割り当て指示を受け付けると、非同期タスクが割り当てられていないCPUを特定する。非同期タスクが割り当てられていないCPUとは、いずれのタスクも割り当てられていないCPUおよび同期タスクが割り当てられているCPUである。ここで、CPU#1とCPU#2が特定され、CPU#1とCPU#2のうちのいずれか一方に同期タスクを割り当てる。
このように、同期タスクと非同期タスクを同一のCPUに割り当てないように制御することで、同期処理によって発生する待ち時間により非同期タスクの実行時間が増大するのを防止でき、スループットを向上させることができる。
(マルチコアプロセッサシステム100のハードウェア構成)
図2は、本実施の形態にかかるマルチコアプロセッサシステム100のハードウェア構成を示すブロック図である。図2において、マルチコアプロセッサシステム100は、CPU♯0〜CPU#3と、調停回路102と、共有メモリ103と、分周回路104と、を備えている。また、各構成部は、バス101によってそれぞれ接続されている。
CPU#0〜CPU#2は、それぞれコアとレジスタとキャッシュとを備えている。各レジスタは、POWとFRを備えている。POWは各CPU上で動作するOS(Operating System)が省電力モードであるか否かを示すレジスタであり、POWが1であれば省電力モードであることを示し、POWが0であれば省電力モードでないことを示す。
FRはメモリクロックが下げられているか否かを示すレジスタであり、FRが1であればメモリクロックが下げられていることを示し、FRが0であればメモリクロックが下げられていないことを示す。メモリクロックとはキャッシュメモリや共有メモリ103へ与えられるクロックである。
CPU#0はOS111を実行し、マルチコアプロセッサシステム100の全体の制御を司り、割り当てられたタスクを実行する。OS111はマスタOSであり、タスクをどのCPUに割り当てるかを制御するスケジューラ121を備えている。
同期タスクと非同期タスクとが同一CPUに割り当てられないように制御する制御プログラムがスケジューラ121に備えられているため、該制御プログラムにコーディングされている処理はCPU#0が実行する。CPU#1とCPU#2とCPU#3は、それぞれOS112とOS113とOS114を実行し、各OSに割り当てられたタスクを実行する。OS112〜OS114はスレーブOSである。また、タスクが割り当てられているCPUとタスクが割り当てられているOSとは同一の意味である。OS111〜OS114は、省電力モードと通常モードがある。各OSは通常モードから省電力モードに移行すると、該各OSを実行するCPUのレジスタ内のPOWを1に設定する。
調停回路102は、CPU#0〜CPU#3から共有メモリ103へのアクセスを調停する回路である。具体的には、調停回路102は、CPU#0〜CPU#3のそれぞれに割り当てられたタスクからのアクセス要求をリクエストバッファへ登録し、リクエストバッファに登録されている順にアクセス要求を取り出し、取り出したアクセス要求を許可する。また、調停回路102は、どのCPUが許可されているかを示す信号(後述するSEL[1:0])を分周回路104へ入力する。
共有メモリ103は、マルチコアプロセッサに共有されるメモリであり、タスクテーブル131と、同期テーブル132と、クロックテーブル133と、クロック制御テーブル134と、を記憶している。共有メモリ103は、具体的には、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを備えている。
たとえば、フラッシュROMが各OSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU#0〜CPU#3のワークエリアとして使用される。共有メモリ103に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることとなる。
タスクテーブル131は、タスクがどのCPUに割り当てられているか、CPUがどのタスクを実行中であるかを示す情報である。各OSは該OSが起動後にプロセステーブルを読み出して各CPUのキャッシュに記憶しておく。スケジューラ121はタスクを割り当てるとタスクテーブル131に登録する。各OSはタスクスイッチが発生するとプロセステーブルにどのタスクが実行状態になったかを登録する。
各OSはタスクテーブル131を書き換えると、スヌープ処理を実行することで、全CPUのキャッシュに記憶されているタスクテーブル131を更新する。スケジューラ121はタスクテーブル131に変更があるか否かによってタスクディスパッチやタスクスイッチが発生したことを検出することができる。つぎに、同期テーブル132について図3を用いて詳細に説明する。
図3は、同期テーブル132の一例を示す説明図である。同期テーブル132は、各タスクがどのタスクに同期するかを示すテーブルであり、タスクの項目301と同期対象タスクの項目302と同期中断イベントの項目303を備えている。タスクの項目301および同期対象タスクの項目302にはタスク名が保持されている。該タスクの項目301に保持されているタスク名(以下、「タスクの項目301のタスク名」と称する。)に対応するタスクは、同期対象タスクの項目302にタスク名が保持されていれば同期タスクであり、同期対象タスクの項目302にタスク名が保持されていなければ非同期タスクである。
たとえば、タスクの項目301のタスク名がタスク#0の場合、同期対象タスクの項目302にはタスク#1とタスク#2が保持されている。すなわち、タスク#0はタスク#1とタスク#2と同期することを示している。また、たとえば、タスクの項目301のタスク名がタスク#3の場合、同期対象タスクの項目302にはタスク名が登録されていないため、タスク#3は非同期タスクである。また、タスク#0〜タスク#2と、タスク#4と、タスク#6と、タスク#7と、は同期タスクであり、タスク#3と、タスク#5と、タスク#8と、タスク#9と、は非同期タスクである。
同期対象タスクの項目302に保持されているタスク名(以下、「同期対象タスクの項目302のタスク名」と称する。)に対応するタスクが、ある状態でタスクの項目301のタスク名に対応するタスクに同期しなくなる場合がある。同期中断イベントの項目303には該ある状態の状態名が保持されている。タスクの項目301のタスク名がタスク#0の場合、同期対象タスクの項目302にはタスク#1とタスク#2が保持され、同期中断イベントの項目303にはそれぞれ「complete」が保持されている。すなわち、タスク#1が「complete」となった場合、タスク#0とタスク#1は同期を中断し、タスク#2が「complete」となった場合、タスク#0とタスク#2は同期を中断する。なお、「complete」は完了状態を示し、「sleep」はスリープ状態を示す。また、通常に動作している状態は動作状態と称する。
また、アプリケーションの設計者が設計時にコンパイラを用いて解析することにより、各タスクが同期であるか非同期であるかが判別され、同期テーブル132が該設計者により作成される。
図2の説明に戻って、分周回路104は、CPU#0〜CPU#3と各CPUのキャッシュとバス101と共有メモリ103へクロックを供給する供給源である。なお、図2では各構成部と分周回路104とを接続する接続線を省略している。
図4は、分周回路104の一例を示す説明図である。分周回路104は、クロックを逓倍にするPLL回路401とクロックを分周するカウンタ回路402とを備えている。分周回路104は、CLKINと、CMODE[3:0]と、CMODE_0[3:0]と、CMODE_1[3:0]と、CMODE_2[3:0]と、CMODE_3[3:0]と、を入力とし、各構成部へのクロックを出力とする。
CLKINには、たとえば、発振回路からのクロックが入力される。たとえば、CLKINに周波数が50MHzのクロックが入力されると、入力されたクロックの周波数をPLL回路401が2倍にし、PLL回路401が逓倍後の100MHzのクロックをカウンタ回路402に与える。カウンタ回路402はCMODE[3:0]の値とCMODE_0[3:0]の値とCMODE_1[3:0]の値とCMODE_2[3:0]の値とMODE_3[3:0]の値に沿って各構成部に100MHzを分周して与える。ここで、分周とは、周波数をさげることであり、2分周とは周波数を1/2にすることであり、4分周とは周波数を1/4にすることである。
CMODE_0[3:0]に入力される値に基づいて、CPU#0のキャッシュへ与えるクロックの周波数と、調停回路102によりCPU#0から共有メモリ103へのアクセスが許可されている場合の共有メモリ103へのクロックの周波数が決定される。CMODE_1[3:0]に入力される値に基づいて、CPU#1のキャッシュへ与えるクロックの周波数と、調停回路102によりCPU#1から共有メモリ103へのアクセスが許可されている場合の共有メモリ103へのクロックの周波数が決定される。
CMODE_2[3:0]に入力される値に基づいて、CPU#2のキャッシュへ与えるクロックの周波数と、調停回路102によりCPU#2から共有メモリ103へのアクセスが許可されている場合の共有メモリ103へのクロックの周波数が決定される。CMODE_3[3:0]に入力される値に基づいて、CPU#3のキャッシュへ与えるクロックの周波数と、調停回路102によりCPU#3から共有メモリ103へのアクセスが許可されている場合の共有メモリ103へのクロックの周波数が決定される。
また、調停回路102により共有メモリ103へのアクセスを許可されているCPUはSEL[1:0]によって判別される。たとえば、SEL[1:0]が“00”であれば、CPU#0が共有メモリ103へのアクセスが許可されており、SEL[1:0]が“01”であれば、CPU#1が共有メモリ103へのアクセスが許可されている。たとえば、SEL[1:0]が“10”であれば、CPU#2が共有メモリ103へのアクセスが許可されており、SEL[1:0]が“11”であれば、CPU#3が許可されている。
CMODE[3:0]に入力される値に基づいて、マルチコアプロセッサの構成部のうち各CPUのキャッシュおよび共有メモリ103を除く残余の構成部に与えるクロックの周波数が決定される。
つぎに、図2に戻って、共有メモリ103に記憶されているクロックテーブル133とクロック制御テーブル134について説明する。
図5は、クロックテーブル133の一例を示す説明図である。クロックテーブル133には、メモリクロックテーブル501と他のクロックテーブル511が備えられている。まず、メモリクロックテーブル501は、メモリクロックの周波数を決定するためのテーブルであり、CMODE_x[3:0]の項目502と比率の項目503を備えている。CMODE_xのxは0〜3であり、CPU#0〜CPU#3に対応している。CMODE_x[3:0]の項目502の値は分周回路104のCMODE_x[3:0]に対応している。比率の項目503は、共有メモリの項目504とキャッシュの項目505を備え、比率の項目503の値はPLL回路401による逓倍後の周波数に対する分周比を表している。
上述のように分周とは、周波数を下げることであり、2分周とは周波数を1/2にすることであり、4分周とは周波数を1/4にすることである。比率の項目503の値が2であれば、2分周であることを示し、比率の項目503の値が4であれば、4分周であることを示す。
たとえば、CMODE_x[3:0]の項目502の値が“0000”の場合、共有メモリの項目504は2であり、キャッシュの項目505は2である。すなわち、PLL回路401による逓倍後の周波数が100MHzであると、共有メモリ103へのクロック周波数は50MHzであり、キャッシュへのクロック周波数は50MHzである。また、分周回路104に与えるCMODE_x[3:0]が“0000”の場合をデフォルトのメモリクロックとし、スケジューラ121がメモリクロックをデフォルトに戻すとは、分周回路104に与えるCMODE_x[3:0]を“0000”に設定することを示す。
つぎに、他のクロックテーブル511は、マルチコアプロセッサの構成部のうち共有メモリ103およびキャッシュを除く残余の構成部に与えるクロックを決定するためのテーブルであり、CMODE[3:0]の項目512と比率の項目513とを備えている。CMODE[3:0]の項目512の値は分周回路104のCMODE[3:0]に与える値である。比率の項目513は、外部バスの項目514とコアの項目515などマルチコアプロセッサシステム100のうちの共有メモリ103およびキャッシュを除く残余の構成部の項目を備え、比率の項目513の値はPLL回路401による逓倍後の周波数に対する比率を表している。
図6は、クロック制御テーブル134の一例を示す説明図である。クロック制御テーブル134は、各CPUに割り当てられているタスクに基づいて省電力モード時のメモリクロックを決定するためのテーブルであり、タスクの項目601と比率の項目602が備えられている。比率の項目602は、共有メモリの項目603とキャッシュの項目604が備えられている。クロック制御テーブル134では、タスクの項目601のタスク名ごとに共有メモリの項目603の値とキャッシュの項目604の値が登録されている。
共有メモリの項目603の値とキャッシュの項目604の値は、PLL回路401による逓倍後のクロックに対する分周比である。たとえば、タスク#0が他のタスクに同期していない場合であり、かつタスク#0が割り当てられているCPU上で動作するOSが省電力モード時の場合において、逓倍後のクロックが4分周された分周後のクロックを共有メモリ103に与えることができることを示している。さらに、タスク#0が割り当てられているCPUのキャッシュメモリへ逓倍後のクロックが4分周された分周後のクロックを与えることができる。
すなわち、対象タスクがいずれのタスクにも同期していない場合でかつ、省電力モード時にはメモリクロックを下げることができる。メモリクロックを下げるとは、メモリクロックの周波数を低くすることを指す。
また、他のタスクが完了状態となり同期していないタスク#0と非同期タスクであるタスク#5が同一CPUに割り当てられ、かつ該CPU上で動作するOSが省電力モードの場合を例に挙げる。タスクの項目601のタスク名がタスク#0の場合、共有メモリの項目603の値は2であり、タスクの項目601のタスク名がタスク#5の場合、共有メモリの項目603の値は4である。ここでは、周波数が高い方が優先され、共有メモリ103へ与えるクロックは逓倍後のクロックが2分周されたクロックまで下げることができる。
また、上述のように各OSは、該各OSを実行するCPUに割り当てられたタスクの状態により通常モードから省電力モードに移行する。たとえば、タスク#0が動作状態から完了状態(「complete」)に変化すると、該タスク#0が割り当てられているCPU上で動作するOSが該変化を検出して省電力モードに移行し、該OSが該CPUのレジスタ内のPOWを1に設定する。
また、図2に戻って、図示していないが、マルチコアプロセッサシステム100では、I/F(InterFace)やディスプレイやキーボードなどを備えている。I/Fは、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、当該ネットワークを介して他の装置に接続される。そして、I/Fは、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/Fには、たとえばモデムやLANアダプタなどを採用することができる。
ディスプレイは、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイは、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。キーボードは、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。
CPU#0では、タスク#0とタスク#1が実行され、CPU#2では、タスク#2とタスク#3が実行され、CPU#3では、タスク#6が実行されている。
(スケジューラ121の機能的構成)
図7は、本実施の形態にかかるスケジューラ121の機能的構成を示すブロック図である。スケジューラ121は、受付部701と、タスク判断部702と、特定部703と、移行部704と、状態判断部705と、通知部706とを備えている。各機能(受付部701〜通知部706)は、具体的には、たとえば、共有メモリ103に記憶されたスケジューラ121をCPU♯0に実行させることにより該各機能を実現する。
本実施の形態では、各機能を実施例1〜実施例3に分けて説明する。実施例1では、対象スレッドが同期タスクであるか非同期タスクであるかに基づいて割り当てるCPUが特定される例を説明する。実施例2では、対象スレッドを割り当てるCPUが特定されなかった場合の例を説明する。実施例3では、非同期タスクが割り当てられているCPU上で動作するOSが省電力モードに移行した場合に、メモリクロックを下げる例を説明する。
(実施例1)
まず、受付部701は、対象タスクの割り当て指示を受け付け、タスク判断部702は、該受付部701により対象タスクの割り当て指示を受け付けると、対象タスクと同期するタスクの有無を判断する。
つぎに、特定部703は、判断部により対象タスクと同期するタスクがあると判断された場合、マルチコアプロセッサのうち、いずれのタスクにも同期しない非同期タスクが割り当てられていないCPUを特定する。一方、特定部703は、判断部により対象タスクと同期するタスクがないと判断された場合、マルチコアプロセッサのうち、いずれかのタスクに同期する同期タスクが割り当てられていないCPUを特定する。
そして、通知部706は、対象タスクの起動指示を特定部703により特定されたCPUへ通知する。以上の説明を踏まえて図を用いて詳細に説明する。
図8は、実施例1において各タスクがCPUに割り当てられている例を示す説明図である。CPU#0にはタスク#0とタスク#1が割り当てられ、CPU#1にはタスク#2とタスク#4が割り当てられている。CPU#2にはタスク#6が割り当てられ、CPU#3にはタスク#3が割り当てられている。タスク#0とタスク#1とタスク#2とがそれぞれ同期し、タスク#4とタスク#6が同期している。タスク#3は非同期タスクである。
図9は、実施例1において同期タスクであるタスク#7の割り当て例を示す説明図である。まず、スケジューラ121がタスク#7の割り当て指示を受け付けると、同期テーブル132を読み出し、同期テーブル132のタスクの項目301からタスク#7を検索して同期対象タスクの項目302のタスク名を読み出す。スケジューラ121がタスクの項目のタスク名がタスク#7の場合において同期対象タスクの項目302が空であるか否かに基づいてタスク#7が同期タスクであるか非同期タスクであるかを判断する。
タスクの項目301のタスク名がタスク#7の場合、同期対象タスクの項目302にはタスク#6が登録されているため、スケジューラ121はタスク#7が同期タスクであると判断する。つづいて、スケジューラ121は、CPU#0〜CPU#3のうち、非同期タスクが割り当てられていないCPUを特定する。ここで、CPU#1〜CPU#2が、非同期タスクが割り当てられていないCPUとして特定される。
そして、スケジューラ121が、CPU#1〜CPU#2のうち最も低負荷なCPUを特定し、特定したCPUにタスク#7の起動指示を通知する。ここでは、CPU#2にタスク#7の起動指示が通知される。
図10は、実施例1において非同期タスクであるタスク#5の割り当て例を示す説明図である。まず、スケジューラ121がタスク#5の割り当て指示を受け付けると、同期テーブル132を読み出し、同期テーブル132のタスクの項目301からタスク#5を検索して同期対象タスクの項目302を読み出す。スケジューラ121がタスクの項目301のタスク名がタスク#5の場合において同期対象タスクの項目302のタスク名が空であるか否かに基づいてタスク#5が同期タスクであるか非同期タスクであるかを判断する。
タスクの項目301のタスク名がタスク#5の場合、同期対象タスクの項目302が空であるため、スケジューラ121はタスク#5が非同期タスクであると判断する。つづいて、スケジューラ121は、CPU#0〜CPU#3のうち、同期タスクが割り当てられていないCPUを特定する。ここで、CPU#3が、同期タスクが割り当てられていないCPUとして特定される。そして、スケジューラ121が、CPU#3にタスク#5の起動指示を通知する。
(実施例1にかかるスケジューラ121による制御処理手順)
図11は、実施例1にかかるスケジューラ121による制御処理手順の一例を示すフローチャートである。まず、スケジューラ121が、対象タスクの割り当て指示を受け付けたか否かを判断し(ステップS1101)、対象タスクの割り当て指示を受け付けていないと判断した場合(ステップS1101:No)、ステップS1101へ戻る。
一方、スケジューラ121が、受付部701により、対象タスクの割り当て指示を受け付けたと判断した場合(ステップS1101:Yes)、判断部により、対象タスクに同期するタスクがあるか否かを判断する(ステップS1102)。スケジューラ121が、対象タスクに同期するタスクがあると判断した場合(ステップS1102:Yes)、特定部703により、非同期タスクが割り当てられていないCPUを特定する(ステップS1103)。そして、スケジューラ121が、通知部706により、対象タスクの起動指示を特定したCPUへ通知し(ステップS1104)、ステップS1101へ戻る。
一方、スケジューラ121が、対象タスクが対象タスクに同期するタスクがないと判断した場合(ステップS1102:No)、特定部703により、同期タスクが割り当てられていないCPUを特定する(ステップS1105)。そして、スケジューラ121が、通知部706により、対象タスクの起動指示を特定したCPUへ通知し(ステップS1106)、ステップS1101へ戻る。
(実施例2)
実施例2では、対象スレッドに同期するタスクがある場合に非同期タスクが割り当てられていないCPUが特定されなかった場合と、対象スレッドに同期するタスクがない場合に同期タスクが割り当てられていないCPUが特定されなかった場合とについて説明する。
図7の説明に戻って、特定部703は、対象タスクと同期するタスクがあると判断された場合において、非同期タスクが割り当てられていないCPUが特定されなかった場合、マルチコアプロセッサのうち、非同期タスクが割り当てられているCPU群を特定する。
移行部704は、特定部703により特定されたCPU群のうちの一のCPUに割り当てられた非同期タスクをCPU群のうちの一のCPUを除く他のCPUに移行させる。
通知部706は、移行部704により一のCPUに割り当てられた非同期タスクを他のCPUに移行させた後、対象タスクの起動指示を一のCPUに通知する。
また、特定部703は、対象タスクと同期するタスクがないと判断された場合において、同期タスクが割り当てられていないCPUが特定されなかった場合、マルチコアプロセッサのうち、同期タスクが割り当てられているCPU群を特定する。
移行部704は、特定部703により特定されたCPU群のうちの一のCPUに割り当てられた同期タスクをCPU群のうちの一のCPUを除く他のCPUに移行させる。
通知部706は、移行部704により一のCPUに割り当てられた同期タスクを他のCPUに移行させた後、対象タスクの起動指示を一のCPUに通知する。
以上を踏まえて図を用いて詳細に説明する。
図12は、実施例2において非同期タスクであるタスク#3の割り当て例を示す説明図である。図12では、CPU#0にはタスク#0とタスク#1が割り当てられ、CPU#1にはタスク#2とタスク#4が割り当てられ、CPU#2にはタスク#6が割り当てられ、CPU#3にはタスク#7が割り当てられている(点線のタスク#7)。
まず、スケジューラ121がタスク#3の割り当て指示を受け付けると、タスク#3が同期タスクであるか非同期タスクであるかを判断する。タスク#3は非同期タスクである。そして、スケジューラ121が、CPU#0〜CPU#3のうち、同期タスクが割り当てられていないCPUを特定する。
ここで、同期タスクが割り当てられていないCPUはない。つぎに、スケジューラ121が、同期タスクが割り当てられていないCPUが特定されない場合、同期タスクが割り当てられているCPU群を特定する。ここでは、同期タスクが割り当てられているCPU群としてCPU#0〜CPU#3が特定される。
つぎに、スケジューラ121が、同期タスクが割り当てられているCPU群から最も低負荷な第1の低負荷CPUを特定し、該CPU群から2番目に低負荷な第2の低負荷CPUを特定する。図12では、第1の低負荷CPUとしてCPU#3が特定され、第2の低負荷CPUとしてCPU#2が特定される。
そして、スケジューラ121が、(1)第1の低負荷CPUであるCPU#3に割り当てられたタスク#7を第2の低負荷CPUであるCPU#2にマイグレーションさせる。スケジューラ121が、(2)タスク#7がマイグレーションすると、いずれのタスクも割り当てられていないCPU#3にタスク#3の起動指示を通知する。
図13は、実施例2において同期タスクであるタスク#4の割り当て例を示す説明図である。図13では、CPU#0にはタスク#3が割り当てられ、CPU#1にはタスク#5が割り当てられ、CPU#2にはタスク#8が割り当てられ、CPU#3にはタスク#9が割り当てられている(マイグレーション前の点線のタスク#9)。タスク#3とタスク#5とタスク#8とタスク#9とは非同期タスクである。
そして、スケジューラ121が、タスク#4の起動指示を受け付けると、タスク#4が同期タスクであるか非同期タスクであるかを判断する。タスク#4は同期タスクである。そして、スケジューラ121が、CPU#0〜CPU#3のうち、非同期タスクが割り当てられていないCPUを特定する。
ここで、非同期タスクが割り当てられていないCPUはない。つぎに、スケジューラ121が、非同期タスクが割り当てられていないCPUが特定されない場合、非同期タスクが割り当てられているCPU群を特定する。ここでは、非同期タスクが割り当てられているCPU群としてCPU#0〜CPU#3が特定される。
つぎに、スケジューラ121が、非同期タスクが割り当てられているCPU群から最も低負荷な第1の低負荷CPUを特定し、該CPU群から2番目に低負荷な第2の低負荷CPUを特定する。図13では、第1の低負荷CPUとしてCPU#3が特定され、第2の低負荷CPUとしてCPU#2が特定される。
そして、スケジューラ121が、(1)第1の低負荷CPUであるCPU#3に割り当てられたタスク#9を第2の低負荷CPUであるCPU#2にマイグレーションさせる。スケジューラ121が、(2)タスク#9がマイグレーションすると、いずれのタスクも割り当てられていないCPU#3にタスク#4の起動指示を通知する。
(実施例3)
実施例3では、OSが省電力モードであり、かつ非同期タスクのみが割り当てられているCPUのメモリクロックを下げる例を説明する。従来より、共有メモリ103の消費電力はマルチコアプロセッサシステム100の消費電力において大きな割合を占めていた。同期タスクは同期処理のために共有メモリ103へのアクセスやキャッシュへのアクセスを遅くすることができないため、共有メモリ103やキャッシュに与えるクロックの周波数を下げることができなかった。従来では、同期タスクと非同期タスクが混在してCPUに割り当てられていたため、常に共有メモリ103やキャッシュに与えるクロックの周波数を下げることができないという問題点があった。
本発明におけるスケジューラ121は同期タスクと非同期タスクとが同一CPUに割り当てられないように制御する。実施例3では、OSが省電力モードであり、かつ非同期タスクのみが割り当てられているCPUのキャッシュに与えるクロックの周波数や該CPUが調停回路102によりアクセスが許可されている期間において共有メモリ103へ与えるクロックの周波数を下げる例を説明する。
さらに、実施例3では、クロックが下げられているCPUに割り当てられた非同期タスクがマイグレーションにより他のCPUに割り当てられ、該クロックが下げられているCPUに同期タスクが割り当てられる例を説明する。
図7の説明に戻って、状態判断部705は、対象タスクと同期するタスクがないと判断された場合において、特定部703により特定されたCPUが省電力モードであるか否かを判断する。
通知部706は、状態判断部705により特定されたCPUが省電力モードであると判断された場合、共有メモリ103に与えるクロックの周波数および該CPUのキャッシュに与えるクロックの周波数をそれぞれ所定周波数まで下げる指示を分周回路104に通知する。
以上を踏まえて図を用いて詳細に説明する。
図14は、実施例3においてメモリクロックが下げられる例を示す説明図である。図14では、CPU#0にはタスク#1とタスク#4が割り当てられ、CPU#1にはタスク#2とタスク#6が割り当てられ、CPU#2にはタスク#7が割り当てられ、CPU#3にはタスク#5が割り当てられている。
まず、スケジューラ121がタスク#3の割り当て指示を受け付けると、タスク#3が同期タスクであるか非同期タスクであるかを判断する。タスク#3は非同期タスクである。そして、スケジューラ121が、CPU#0〜CPU#3のうち、同期タスクが割り当てられていないCPUを特定する。
ここで、同期タスクが割り当てられていないCPUとしてCPU#3が特定される。そして、OS114が省電力モードであるか否かを判断する。具体的には、CPU#3のレジスタ内のPOWが1であるか否かを判断する。該POWが1であれば、OS114は省電力モードであり、該POWが0であれば、OS114は省電力モードでない。図14では、CPU#3のレジスタ内のPOWが1であり、かつ非同期タスクのみが割り当てられているため、スケジューラ121が(1)CPU#3のメモリクロックを下げる。
CPU#3のメモリクロックを下げるとは、CPU#3のキャッシュへ与えるクロックの周波数と調停回路102によりCPU#3から共有メモリ103へのアクセスが許可されている場合の共有メモリ103へのクロックの周波数とが下げられることを意味している。たとえば、スケジューラ121がCMODE_3[3:0]を“0000”に設定して分周回路104に与えているとする。
そして、スケジューラ121が、クロック制御テーブル134からタスクの項目601のタスク名がCPU#3の場合およびタスク#5の場合の共有メモリの項目603の値とキャッシュの項目604の値を検索する。ここで、クロック制御テーブル134からタスクの項目601のタスク名がタスク#5の場合の共有メモリの項目603の値は4であり、キャッシュの項目604の値は4である。一方、クロック制御テーブル134でタスクの項目601のタスク名がタスク#3の場合の共有メモリの項目603の値は4であり、キャッシュの項目604の値は4である。
タスクの項目601のタスク名がタスク#3の場合とタスク#5の場合とで共有メモリの項目603の値が同一値であり、キャッシュメモリの項目の値が同一値である。よって、スケジューラ121が、共有メモリ103へ与えるクロックの周波数を逓倍後のクロックの周波数の2分周とし、キャッシュへ与えるクロックの周波数を逓倍後のクロックの周波数の2分周とする。
そして、スケジューラ121が、メモリクロックテーブル501から共有メモリの項目504の値が4であり、キャッシュの項目505の値が4であるCMODE_x[3:0]の値を特定する。ここでは、CMODE_x[3:0]の値が“0011”の場合、共有メモリの項目603の値が4であり、キャッシュの項目505の値が4である。
そして、スケジューラ121が、CMODE_3[3:0]の値を“0111”に設定して分周回路104に与えることで、共有メモリ103に与えるクロックとCPU#3のキャッシュに与えるクロックの周波数が下がる。CPU#3のキャッシュには周波数が25MHzのクロックが与えられ、CPU#3が調停回路102によりアクセスが許可されている期間に共有メモリ103には周波数が25MHzのクロックが与えられる。
つぎに、スケジューラ121が、(1)メモリクロックを下げると、(2)CPU#3のレジスタ内のFRを1に設定し、(3)タスク#3の起動指示をCPU#3に通知することでCPU#3にタスク3を割り当てる。
図15は、実施例3において同期タスクであるタスク#7がCPUに割り当てられる例を示す説明図である。図15では、CPU#0にはタスク#1とタスク#4が割り当てられ、CPU#1にはタスク#2とタスク#6が割り当てられ、CPU#2にはタスク#3が割り当てられ(マイグレーション前の点線のタスク#3)、CPU#3にはタスク#5が割り当てられている。
まず、スケジューラ121がタスク#7の割り当て指示を受け付けると、タスク#7が同期タスクであるか非同期タスクであるかを判断する。タスク#7は同期タスクである。そして、スケジューラ121が、CPU#0〜CPU#3のうち、非同期タスクが割り当てられていないCPUを特定する。ここでは、CPU#0とCPU#1が、非同期タスクが割り当てられていないCPUとして特定される。
スケジューラ121が、タスク#7をCPU#0に割り当ててリアルタイム制約を遵守できるか否かを判断する。リアルタイム制約とは、たとえば、ある時間以内にタスクを実行することができることなどの実行時間に関する制約である。スケジューラ121は実行時間を予測することでリアルタイム制約を遵守できるか否かを判断する。図15では、スケジューラ121が、タスク#7をCPU#0に割り当ててリアルタイム制約を遵守できないと判断する。
つぎに、スケジューラ121が、タスク#7をCPU#1に割り当ててリアルタイム制約を遵守できるか否かを判断する。図15では、スケジューラ121が、タスク#7をCPU#1に割り当ててリアルタイム制約を遵守できないと判断する。
スケジューラ121は、非同期タスクが割り当てられていないCPUに割り当てることができない場合、非同期タスクが割り当てられていないCPUが特定できないと判断する。つぎに、スケジューラ121は、非同期タスクが割り当てられていないCPUが特定できなかった場合、実施例2で示したように非同期タスクが割り当てられているCPU群を特定する。ここでは、スケジューラ121が、CPU#2とCPU#3を非同期タスクが割り当てられているCPU群として特定する。
つぎに、スケジューラ121は、(1)CPU#2に割り当てられている非同期タスクをCPU#3にマイグレーションさせる。そして、スケジューラ121が、CPU#2のメモリクロックが下げられているか否かをCPU#2のレジスタ内のFRに基づいて判断する。FRは1であるため、スケジューラ121が、CPU#2のメモリクロックが下げられていると判断し、(2)CPU#2のメモリクロックをデフォルトに戻す。
そして、スケジューラ121がCPU#2のメモリクロックをデフォルトに戻したため、(3)CPU#2のレジスタ内のFRを0に設定し、(4)タスク#7の起動指示をCPU#2に通知することでタスク#7をCPU#2に割り当てる。
また、図8から図15の例では、スケジューラ121がタスクの割り当て指示を受け付けた場合におけるスケジューラ121の割り当て処理について説明したが、これに限らず。たとえば、タスクが通常の状態からスリープ状態に変化した場合に同期タスクであったものが非同期タスクとなる場合があり、スケジューラ121は再割り当てを行うことにより同期タスクと非同期タスクを同一のコアに割り当てないように制御する。
図16は、タスク#1が動作状態からスリープ状態に変化した例を示す説明図である。図16では、タスク#1が動作状態の場合、CPU#0にはタスク#1が割り当てられ、CPU#1にはタスク#2とタスク#4(マイグレーション前の点線のタスク#4)が割り当てられている。さらに、CPU#2にはタスク#6が割り当てられ、CPU#3にはタスク#7が割り当てられている。タスク#2とタスク#4はいずれも同期タスクであるため同一のCPUに割り当てられている。
つぎに、タスク#1が動作状態からスリープ状態に変化したとする。スケジューラ121は、タスク#1が動作状態からスリープ状態への変化を検出し、同期テーブル132からタスク#1に同期している同期対象タスクを特定する。タスク#1に同期する同期対象タスクはタスク#0とタスク#2である。ここでは、タスク#0は起動していないため、タスク#2のみが特定される。
そして、スケジューラ121が、同期テーブル132からタスクの項目301のタスク名がタスク#2であり、かつ同期対象タスクの項目302のタスク名がタスク#1の場合の同期中断イベントの項目303の値を読み出す。ここでは、該同期中断イベントの項目303の値として「sleep」が読み出される。スケジューラ121が、タスク#1がスリープ状態であり、該同期中断イベントの項目303の値として「sleep」であるため、タスク#2は同期タスクであったが、非同期タスクになったと判断する。
よって、スケジューラ121が、CPU#1には非同期タスクであるタスク#2と同期タスクであるタスク#4が同一のCPUに割り当てられているため、再割り当てを行う。たとえば、スケジューラ121が、CPU#0〜CPU#3のうち、同期タスクが割り当てられていないCPUを特定する。ここでは、CPU#2とCPU#3が特定される。ここで、CPU#3がCPU#2よりも負荷の小さいCPUであるとする。
そして、スケジューラ121が、タスク#4をCPU#1から特定したCPU#3にマイグレーションさせることにより、同期タスクと非同期タスクが同一CPUに割り当てられないように制御する。したがって、CPU#1には非同期タスクであるタスク#2のみが割り当てられ、CPU#3には同期タスクであるタスク#7とタスク#4が割り当てられている。
(実施例2および3にかかるスケジューラ121による制御処理手順)
図17〜図20は、実施例2および3にかかるスケジューラ121による制御処理手順の一例を示すフローチャートである。まず、スケジューラ121が、各CPUに割り当てられたタスクの変化を検出したか否かまたはタスクの起動指示を受け付けたか否かを判断する(ステップS1701)。ここで、各CPUに割り当てられたタスクの変化とは、たとえば、タスクが完了したり、タスクのディスパッチまたはタスクのスイッチが発生した場合を示している。スケジューラ121が、各CPUに割り当てられたタスクの変化を検出していないおよびタスクの起動指示を受け付けていないと判断した場合(ステップS1701:No)、ステップS1701へ戻る。
一方、スケジューラ121が、各CPUに割り当てられたタスクの変化を検出したまたはタスクの起動指示を受け付けたと判断した場合(ステップS1701:Yes)、各CPUに割り当てられたタスクまたは割り当て指示があるタスクを特定する(ステップS1702)。つぎに、スケジューラ121が、特定したタスクの中で未選択のタスクがあるか否かを判断する(ステップS1703)。そして、スケジューラ121が、特定したタスクの中で未選択のタスクがあると判断した場合(ステップS1703:Yes)、未選択のタスクの中から任意のタスクを対象タスクとして選択する(ステップS1704)。
つぎに、スケジューラ121が、対象タスクに同期するタスクがあるか否かを判断する(ステップS1705)。スケジューラ121が、対象タスクに同期するタスクがあると判断した場合(ステップS1705:Yes)、いずれのタスクも割り当てられていないCPUおよび同期タスクが割り当てられているCPUを第1のCPU群として特定する(ステップS1706)。
そして、スケジューラ121が、第1のCPU群があるか否かを判断し(ステップS1707)、第1のCPU群があると判断した場合(ステップS1707:Yes)、第1のCPU群から最も負荷の小さいCPUを特定する(ステップS1708)。スケジューラ121が、第1のCPU群から低負荷CPUを削除し(ステップS1709)、対象タスクを低負荷CPUに割り当てた場合、リアルタイム制約を遵守できるか否かを判断する(ステップS1710)。
スケジューラ121が、対象タスクを低負荷CPUに割り当てた場合、リアルタイム制約を遵守できると判断した場合(ステップS1710:Yes)、対象タスクを低負荷CPUに割り当て(ステップS1711)、ステップS1703へ戻る。一方、対象タスクを低負荷CPUに割り当てた場合、リアルタイム制約を遵守できないと判断した場合(ステップS1710:No)、ステップS1707に戻る。
一方、ステップS1707において、スケジューラ121が、第1のCPU群がないと判断した場合(ステップS1707:No)、非同期タスクのみが割り当てられている第2のCPU群を特定する(ステップS1712)。そして、スケジューラ121が、第2のCPU群から最も負荷の小さい第1の低負荷CPUを特定し(ステップS1713)、第2のCPU群から2番目に負荷の小さい第2の低負荷CPUを特定する(ステップS1714)。
スケジューラ121が、第1の低負荷CPUに割り当てられた非同期タスクを第2の低負荷CPUにマイグレーションさせてリアルタイム制約を遵守できるか否かを判断する(ステップS1715)。そして、スケジューラ121が、第1の低負荷CPUに割り当てられた非同期タスクを第2の低負荷CPUにマイグレーションさせてリアルタイム制約を遵守できると判断した場合(ステップS1715:Yes)、ステップS1716に移行する。一方、スケジューラ121が、第1の低負荷CPUに割り当てられた非同期タスクを第2の低負荷CPUにマイグレーションさせるとリアルタイム制約を遵守できないと判断した場合(ステップS1715:No)、ステップS1720へ移行する。
つぎに、スケジューラ121が、第1の低負荷CPUに割り当てられたタスクを第2の低負荷CPUにマイグレーションさせ(ステップS1716)、第1の低負荷CPUのメモリクロックが下げられているか否かを判断する(ステップS1717)。スケジューラ121が、第1の低負荷CPUのメモリクロックが下げられていると判断した場合(ステップS1717:Yes)、第1の低負荷CPUのメモリクロックをデフォルトに戻す(ステップS1718)。
そして、スケジューラ121が、第1の低負荷のメモリクロックに関するレジスタを0に設定し(ステップS1719)、対象タスクを第1の低負荷CPUに割り当て(ステップS1720)、ステップS1703へ戻る。一方、スケジューラ121が、第1の低負荷CPUのメモリクロックが下げられていないと判断した場合(ステップS1717:No)、ステップS1720へ移行する。
一方、ステップS1705において、スケジューラ121が、対象タスクに同期するタスクがないと判断した場合(ステップS1705:No)、いずれのタスクも割り当てられていないCPUおよび非同期タスクのみが割り当てられているCPUを第2のCPU群として特定する(ステップS1721)。つぎに、スケジューラ121が、第2のCPU群があるか否かを判断し(ステップS1722)、第2のCPU群があると判断した場合(ステップS1722:Yes)、第2のCPU群の中で最も低負荷な第1の低負荷CPUを特定し(ステップS1723)、ステップS1729へ移行する。
一方、スケジューラ121が、第2のCPU群がないと判断した場合(ステップS1722:No)、同期タスクが割り当てられている第1のCPU群を特定する(ステップS1724)。つぎに、スケジューラ121が、第1のCPU群の中で最も低負荷な第1の低負荷CPUを特定し(ステップS1725)、第1のCPU群から2番目に負荷の小さい第2の低負荷CPUを特定する(ステップS1726)。
そして、スケジューラ121が、第1の低負荷CPUに割り当てられた同期タスクを第2の低負荷CPUにマイグレーションさせてリアルタイム制約を遵守できるか否かを判断する(ステップS1727)。スケジューラ121が、第1の低負荷CPUに割り当てられた同期タスクを第2の低負荷CPUにマイグレーションさせてリアルタイム制約を遵守できないと判断した場合(ステップS1727:No)、ステップS1732へ移行する。
一方、スケジューラ121が、第1の低負荷CPUに割り当てられた同期タスクを第2の低負荷CPUにマイグレーションさせてリアルタイム制約を遵守できると判断した場合(ステップS1727:Yes)、ステップS1728に移行する。つぎに、ステップS1728において、スケジューラ121が、第1の低負荷CPUに割り当てられた同期タスクを第2の低負荷CPUにマイグレーションさせ(ステップS1728)、第1の低負荷CPU上で動作するOSが省電力モードであるか否かを判断する(ステップS1729)。
まず、スケジューラ121が、第1の低負荷CPU上で動作するOSが省電力モードでないと判断した場合(ステップS1729:No)、ステップS1732へ移行する。一方、スケジューラ121が、第1の低負荷CPU上で動作するOSが省電力モードであると判断した場合(ステップS1729:Yes)、第1の低負荷CPUに割り当てられたタスクに基づきメモリクロックを下げる(ステップS1730)。
そして、スケジューラ121が、第1の低負荷CPUのメモリクロックに関するレジスタを1に設定し(ステップS1731)、対象タスクを第1の低負荷CPUに割り当て(ステップS1732)、ステップS1703へ戻る。
一方、スケジューラ121が、特定したタスクの中で未選択のタスクがないと判断した場合(ステップS1703:No)、ステップS1701へ戻る。
また、実施例3では共有メモリ103およびCPUのキャッシュに与えるクロックの周波数を下げる例を示したが、該共有メモリ103やCPUのキャッシュに与える電源電圧を下げてもよい。図2で示していないが、マルチコアプロセッサシステム100が各構成部へ電源電圧を供給する電源供給回路を備えているとする。
状態判断部705は、対象タスクと同期するタスクがないと判断された場合において、特定部703により特定されたCPUが省電力状態であるか否かを判断する。
通知部706は、状態判断部705により特定されたCPUが省電力状態であると判断された場合、電源電圧の値を所定値まで下げる指示を電源供給回路に通知する。
たとえば、共有メモリ103やCPUのキャッシュへ通常の動作状態では1.1[V]の電源電圧を与えなければならないとする。あるCPUが省電力モードでありかつ非同期タスクのみが割り当てられていれば、該あるCPUのキャッシュに与える電源電圧と調停回路102に許可されている間、共有メモリ103へ与える電源電圧を所定電圧まで下げてもよい。所定電圧とは、タスクごとにあらかじめ設計者により決められている値である。
以上説明したように、マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、いずれかのタスクに同期する同期タスクといずれのタスクにも同期しない非同期タスクとが同一CPUに割り当てられないように制御する。したがって、同期タスクの同期処理により非同期タスクが待機するのを防止でき、非同期タスクの実行時間を防止できる。これにより、非同期タスクが割り当てられているCPUのスループットを向上させることができる。
また、対象タスクが非同期タスクの場合において、同期タスクが割り当てられていないCPUが特定されなかった場合、同期タスクが割り当てられている一のCPUから同期タスクを同期タスクが割り当てられている他のCPUへマイグレーションさせる。そして、一のCPUに対象タスクを割り当てることで、非同期タスクと同期タスクとが同一のCPUに割り当てられないように制御できる。したがって、同期タスクの同期処理により非同期タスクが待機するのを防止することができる。
また、対象タスクが同期タスクの場合において、非同期タスクが割り当てられていないCPUが特定されなかった場合、非同期タスクが割り当てられている一のCPUから非同期タスクを非同期タスクが割り当てられている他のCPUへマイグレーションさせる。そして、一のCPUに対象タスクを割り当てることで、非同期タスクと同期タスクとが同一のCPUに割り当てられないように制御できる。したがって、同期タスクの同期処理により非同期タスクが待機するのを防止することができる。
また、非同期タスクが割り当てられているCPU上で動作するOSが省電力モードであれば、共有メモリと該CPUのキャッシュへ供給するクロックを下げることで、低消費電力化を図ることができる。
また、非同期タスクが割り当てられているCPU上で動作するOSが省電力モードであれば、共有メモリと該CPUのキャッシュへ供給する電源電圧を下げることで、低消費電力化を図ることができる。
100 マルチコアプロセッサシステム
103 共有メモリ
104 分周回路
121 スケジューラ
702 タスク判断部
703 特定部
704 移行部
705 状態判断部
706 通知部

Claims (7)

  1. 複数のコアを有するマルチコアプロセッサシステムであって、
    前記複数のコアのうちの一のコアが
    対象タスクと同期するタスクの有無を判断し、
    記対象タスクと同期するタスクがあると判断した場合、前記複数のコアのうち、いずれのタスクにも同期しない非同期タスクが割り当てられたコアを除く第1のコアを特定し、前記対象タスクと同期するタスクがないと判断した場合、前記複数のコアのうち、いずれかのタスクに同期する同期タスクが割り当てられたコアを除く第2のコアを特定
    した前記第1または第2のコアに対し前記対象タスクの起動指示を通知する
    処理を実行することを特徴とするマルチコアプロセッサシステム。
  2. 前記一のコアが、
    特定する処理の後に、移行元のコアに割り当てられたタスクを移行先のコアに移行させる処理を実行し
    特定する処理では、
    前記対象タスクと同期するタスクがあると判断した場合において、前記第1のコアが特定されなかった場合、前記複数のコアのうち、前記非同期タスクが割り当てられているコア群を特定し、
    移行させる処理では、
    した前記コア群のうちの第3のコアに割り当てられた前記非同期タスクを前記コア群のうちの前記第3のコアを除く他のコアに移行させ、
    通知する処理では、
    第3のコアに割り当てられた前記非同期タスクを前記他のコアに移行させた後、前記対象タスクの起動指示を前記第3のコアに通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 前記一のコアが、
    特定する処理の後に、移行元のコアに割り当てられているタスクを移行先のコアに移行させる処理を実行し
    特定する処理では、
    前記対象タスクと同期するタスクがないと判断した場合において、前記第2のコアが特定されなかった場合、前記複数のコアのうち、前記同期タスクが割り当てられているコア群を特定し、
    移行させる処理では、
    した前記コア群のうちの第3のコアに割り当てられた前記同期タスクを前記コア群のうちの前記第3のコアを除く他のコアに移行させ、
    通知する処理では、
    第3のコアに割り当てられた前記同期タスクを前記他のコアに移行させた後、前記対象タスクの起動指示を前記第3のコアに通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  4. 記憶装置と、
    前記記憶装置へクロックを供給するクロック供給回路と、
    前記複数のコアの各々について、前記コアが省電力状態であるか否かを示す値を保持可能であって、前記コアが前記値を変更可能なレジスタと、
    を有し、
    前記一のコアが、
    前記対象タスクと同期するタスクがないと判断した場合において、特した前記第1のコアまたは第2のコアが前記省電力状態であるか否かを前記レジスタに保持された前記値に基づいて判断する処理を実行し、
    通知する処理では、
    特定した前記第1のコアまたは第2のコアが前記省電力状態であると判断前記クロックの周波数が所定周波数よりも大きい場合に、前記クロックの周波数を所定周波数まで下げる指示を前記クロック供給回路に通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  5. 記憶装置と、
    前記記憶装置へ電源電圧を供給する電源供給回路と、
    前記複数のコアの各々について、前記コアが省電力状態であるか否かを示す値を保持可能であって、前記コアが前記値を変更可能なレジスタと、
    を有し、
    前記一のコアが、
    前記対象タスクと同期するタスクがないと判断した場合において、特した前記第1または第2のコアが前記省電力状態であるか否かを前記レジスタに保持された前記値に基づいて判断する処理を実行し、
    通知する処理では、
    特定した前記第1または第2のコアが前記省電力状態であると判断前記電源電圧の値が所定値よりも大きい場合に、前記電源電圧の値を所定値まで下げる指示を前記電源供給回路に通知することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  6. 複数のコアを有するマルチコアプロセッサシステムの制御プログラムであって、
    前記複数のコアのうちの一のコアに、
    対象タスクと同期するタスクの有無を判断
    記対象タスクと同期するタスクがあると判断した場合、前記複数のコアのうち、いずれのタスクにも同期しない非同期タスクが割り当てられたコアを除く第1のコアを特定し、前記対象タスクと同期するタスクがないと判断した場合、前記複数のコアのうち、いずれかのタスクに同期する同期タスクが割り当てられたコアを除く第2のコアを特定
    した前記第1または第2のコアに対し前記対象タスクの起動指示を通知する
    処理を実行させることを特徴とするマルチコアプロセッサシステムの制御プログラム。
  7. 複数のコアを有するマルチコアプロセッサシステムの制御方法であって、
    前記複数のコアのうちの一のコアが、
    対象タスクと同期するタスクの有無を判断
    記対象タスクと同期するタスクがあると判断した場合、前記複数のコアのうち、いずれのタスクにも同期しない非同期タスクが割り当てられたコアを除く第1のコアを特定し、前記対象タスクと同期するタスクがないと判断した場合、前記複数のコアのうち、いずれかのタスクに同期する同期タスクが割り当てられたコアを除く第2のコアを特定
    した前記第1または第2のコアに対し前記対象タスクの起動指示を通知する
    処理を実行することを特徴とするマルチコアプロセッサシステムの制御方法。
JP2012506729A 2010-03-25 2010-03-25 マルチコアプロセッサシステム、制御プログラム、および制御方法 Expired - Fee Related JP5534002B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JPWO2011118012A1 JPWO2011118012A1 (ja) 2013-07-04
JP5534002B2 true JP5534002B2 (ja) 2014-06-25

Family

ID=44672603

Family Applications (1)

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

Country Status (3)

Country Link
US (1) US9292339B2 (ja)
JP (1) JP5534002B2 (ja)
WO (1) WO2011118012A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6309216B2 (ja) * 2013-07-19 2018-04-11 サイプレス セミコンダクター コーポレーション プロセッサシステムおよび半導体集積回路
WO2016165980A1 (fr) * 2015-04-13 2016-10-20 Zodiac Seats France Module de sieges muni d'un accoudoir a configuration optimisee
JP6578824B2 (ja) * 2015-08-31 2019-09-25 コニカミノルタ株式会社 画像形成装置、同装置におけるタスク制御方法及びタスク制御プログラム
US10642336B2 (en) * 2016-07-12 2020-05-05 Advanced Micro Devices, Inc. Clock adjustment for voltage droop
US10884477B2 (en) * 2016-10-20 2021-01-05 Advanced Micro Devices, Inc. Coordinating accesses of shared resources by clients in a computing device
JP7157709B2 (ja) * 2019-07-04 2022-10-20 株式会社日立製作所 計算機システム及びプログラム実行方法
US11687364B2 (en) 2019-07-30 2023-06-27 Samsung Electronics Co., Ltd. Methods and apparatus for cache-aware task scheduling in a symmetric multi-processing (SMP) environment
CN112769959B (zh) * 2021-03-04 2022-09-30 抖音视界有限公司 会话同步方法、装置、第一节点、第二节点、系统及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020650A (ja) * 2008-07-14 2010-01-28 Sony Corp 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0233650A (ja) 1988-07-25 1990-02-02 Nec Corp マルチプロセッサシステムのタスクスケジュール方式
JPH061464A (ja) 1992-06-22 1994-01-11 Sanko Seiki Kk 折丁の自動給紙装置
JP3429582B2 (ja) 1994-11-28 2003-07-22 富士通株式会社 マルチプロセッサシステム
JP2795312B2 (ja) * 1996-04-08 1998-09-10 日本電気株式会社 プロセス間通信スケジューリング方式
US8020163B2 (en) * 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US20050228967A1 (en) 2004-03-16 2005-10-13 Sony Computer Entertainment Inc. Methods and apparatus for reducing power dissipation in a multi-processor system
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
JP4509951B2 (ja) * 2006-03-01 2010-07-21 三菱電機株式会社 シミュレーション実行制御装置及びプログラム
JP4370313B2 (ja) * 2006-07-10 2009-11-25 三菱電機株式会社 制御装置、制御装置のプロセス制御方法およびプロセス制御プログラム
JP2008084009A (ja) * 2006-09-27 2008-04-10 Toshiba Corp マルチプロセッサシステム
US20080115010A1 (en) * 2006-11-15 2008-05-15 Rothman Michael A System and method to establish fine-grained platform control
KR101375836B1 (ko) * 2007-06-26 2014-04-01 삼성전자주식회사 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치
US7886172B2 (en) * 2007-08-27 2011-02-08 International Business Machines Corporation Method of virtualization and OS-level thermal management and multithreaded processor with virtualization and OS-level thermal management
KR101440107B1 (ko) * 2008-01-28 2014-09-12 삼성전자주식회사 다중 코어 시스템에서 접근 시간에 기초한 메모리 관리방법 및 장치
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8347301B2 (en) * 2008-06-30 2013-01-01 Intel Corporation Device, system, and method of scheduling tasks of a multithreaded application
JP4557062B2 (ja) * 2008-07-11 2010-10-06 ソニー株式会社 光ディスク装置および発光制御方法
US20100058086A1 (en) * 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
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.
US8336056B1 (en) * 2009-12-22 2012-12-18 Gadir Omar M A Multi-threaded system for data management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010020650A (ja) * 2008-07-14 2010-01-28 Sony Corp 情報処理システム及び情報処理方法、ロボットの制御システム及び制御方法、並びコンピュータ・プログラム

Also Published As

Publication number Publication date
WO2011118012A1 (ja) 2011-09-29
US20130024865A1 (en) 2013-01-24
US9292339B2 (en) 2016-03-22
JPWO2011118012A1 (ja) 2013-07-04

Similar Documents

Publication Publication Date Title
JP5534002B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US10649935B2 (en) Deferred inter-processor interrupts
JP5713029B2 (ja) スケジューリング方法、設計支援方法、およびシステム
US8914623B2 (en) Utilization of the screen image information of a primary environment for reproduction and user-interaction in a secondary environment
JP6186862B2 (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
JPWO2012046302A1 (ja) マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム
CN115617494B (zh) 多cpu环境下的进程调度方法、装置、电子设备和介质
US9507641B1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (PCD)
US9507645B2 (en) Thread processing method for using a multi-core processor and systems therefor
JP2009026199A (ja) クロック周波数制御方法及びコンピュータプログラム
US20130298132A1 (en) Multi-core processor system and scheduling method
JP5708450B2 (ja) マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム
JP5472447B2 (ja) マルチコアプロセッサシステム、メモリコントローラ制御方法、およびメモリコントローラ制御プログラム
JP2004512614A (ja) オペレーティングシステムサポートのために一定の時間基準を用いるマルチモード電力管理システムのハードウェアアーキテクチャ
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
JP2009070389A (ja) 処理装置のためのコントローラ
JP5783348B2 (ja) 制御装置、制御プログラム、画像形成装置
WO2012098683A1 (ja) スケジューリング方法およびスケジューリングシステム
JP2010140319A (ja) 半導体装置
JP5605477B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP2003233434A (ja) 消費電力管理装置
JP5601414B2 (ja) マルチコアプロセッサシステム、制御方法、および制御プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131224

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

R150 Certificate of patent or registration of utility model

Ref document number: 5534002

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140414

LAPS Cancellation because of no payment of annual fees