JP5429402B2 - 情報処理装置、情報処理プログラム、および情報処理方法 - Google Patents
情報処理装置、情報処理プログラム、および情報処理方法 Download PDFInfo
- Publication number
- JP5429402B2 JP5429402B2 JP2012544019A JP2012544019A JP5429402B2 JP 5429402 B2 JP5429402 B2 JP 5429402B2 JP 2012544019 A JP2012544019 A JP 2012544019A JP 2012544019 A JP2012544019 A JP 2012544019A JP 5429402 B2 JP5429402 B2 JP 5429402B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- standby power
- execution
- time
- cpu
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
- G06F11/3062—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Power Sources (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Mobile Radio Communication Systems (AREA)
Description
本発明は、スレッドの実行を制御する情報処理装置、情報処理プログラム、および情報処理方法に関する。
従来、シングルコアプロセッサシステムやマルチコアプロセッサシステムの各CPUにおいて、複数のスレッドが割り当てられた場合、たとえば、スレッドごとに定義された優先度により実行順を決定する技術(第1の従来技術)が知られている(たとえば、下記特許文献1を参照。)。
また、複数のスレッドが割り当てられた場合、ラウンドロビン方式を用いて複数のスレッドの各スレッドを一定時間ずつ順に実行する技術(第2の従来技術)が知られている(たとえば、下記特許文献2と下記非特許文献1とを参照。)。
C.L.Liu,James W.LAYLAND,「Scheduling Algorithms for Multiprogramming in a Hard−Real−Time Environment」Journal of the Association for Computing Machinery,Vol.20,No.1,January 1973
しかしながら、第1の従来技術では、複数のスレッドのうちの優先度が低いスレッドの待機電力が大きい場合、消費電力が増加する問題点があった。また、第2の従来技術では、一定時間ごとにスレッドが切り替わるため、各スレッドの実行情報を一時的に格納するCPU内のキャッシュが競合してしまう。
たとえば、CPUで一のスレッドの実行中には該一のスレッドの実行情報がキャッシュ上に格納されるが、一のスレッドから他のスレッドの実行に切り替わると、該キャッシュ内の一のスレッドの実行情報が他のスレッドの実行情報に書き換えられる。つぎに、他のスレッドから一のスレッドの実行に切り替わると、該キャッシュ内の他のスレッドの実行情報を一のスレッドの実行情報に書き換えなければならず、実行の性能が劣化し、スループットが下がる問題点があった。
本発明は、上述した従来技術による問題点を解消するため、スループットを下げることなく、低消費電力化を図ることができる情報処理装置、情報処理プログラム、および情報処理方法を提供することを目的とする。
本発明の一観点によれば、未実行の第1のスレッドと未実行の第2のスレッドとを検出し、検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出し、前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出し、算出された第1のスレッドの待機電力と算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する情報処理装置、情報処理プログラム、および情報処理方法が提供される。
本情報処理装置、情報処理プログラム、および情報処理方法によれば、スループットを下げることなく、低消費電力化を図ることができるという効果を奏する。
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理プログラム、および情報処理方法の好適な実施の形態を詳細に説明する。
図1は、本発明の一実施例を示す説明図である。ここでは、未実行の第1のスレッドと未実行の第2のスレッドとを例に挙げて説明する。図1では、第1のスレッドと第2のスレッドの実行前に、実行順の組み合わせごとに待機電力がどのくらいかかるかを算出し、算出結果に基づいて実行順を決定する。
まず、(1)実行順が第2のスレッド→第1のスレッドの順の場合、第2のスレッドの実行中には第1のスレッドは待機状態となる。よって、第1のスレッドの待機電力は下記となる。
・第1のスレッドの待機電力=第2のスレッドの実行時間[ms]×第1のスレッドの単位時間当たりの待機電力[mW/ms]
・第1のスレッドの待機電力=第2のスレッドの実行時間[ms]×第1のスレッドの単位時間当たりの待機電力[mW/ms]
つぎに、(2)実行順が第1のスレッド→第2のスレッドの順の場合、第1のスレッドの実行中には第2のスレッドは待機状態となる。よって、第2のスレッドの待機電力は下記となる。
・第2のスレッドの待機電力=第1のスレッドの実行時間[ms]×第2のスレッドの単位時間当たりの待機電力[mW/ms]
・第2のスレッドの待機電力=第1のスレッドの実行時間[ms]×第2のスレッドの単位時間当たりの待機電力[mW/ms]
そして、情報処理装置が、第1のスレッドの待機電力と第2のスレッドの待機電力とを比較する。第1のスレッドの待機電力が第2のスレッドの待機電力以上であれば、情報処理装置が、実行順を第1のスレッド→第2のスレッドに決定する。第1のスレッドの待機電力が第2のスレッドの待機電力未満であれば、情報処理装置が、実行順を第2のスレッド→第1のスレッドに決定する。
図2は、第1のスレッドに実行期限が定義されている場合の説明図である。図2では第1のスレッドに実行期限が定義され、第2のスレッドに実行期限が定義されていない例について説明する。ここで、第1のスレッドに実行期限が定義されているとは、第1のスレッドの生成時刻から第1のスレッドの実行期限までの時間が定義されていることを示す。
第1のスレッドの生成時刻から第1のスレッドの実行期限までの時間(d)が定義されている場合には、実行順を第2のスレッドのつぎに第1のスレッドとした場合に第1のスレッドの実行期限を遵守できるか否かを判断する。すなわち、下記となるか否かが判断される。
・d−第1のスレッドの実行時間>第2のスレッドの実行時間
・d−第1のスレッドの実行時間>第2のスレッドの実行時間
図2のようにd−第1のスレッドの実行時間>第2のスレッドの実行時間であれば、図1で上述したように、情報処理装置が実行順の組み合わせごとに待機するスレッドの待機時間を算出し、実行順を決定する。一方、d−第1のスレッドの実行時間≦第2のスレッドの実行時間の場合、実行順が第2のスレッド→第1のスレッドであると、第1のスレッドの実行期限を遵守できないため、情報処理装置が実行順を第1のスレッド→第2のスレッドに決定する。
本実施の形態では情報処理装置の一例としてマルチコアプロセッサシステムを挙げて説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(情報処理装置のハードウェア)
図3は、情報処理装置のハードウェアを示すブロック図である。図3において、情報処理装置300は、CPU#0と、CPU#1と、共有メモリ302と、を有している。CPU#0と、CPU#1と、共有メモリ302とは、それぞれバス301を介して接続されている。
図3は、情報処理装置のハードウェアを示すブロック図である。図3において、情報処理装置300は、CPU#0と、CPU#1と、共有メモリ302と、を有している。CPU#0と、CPU#1と、共有メモリ302とは、それぞれバス301を介して接続されている。
CPU#0は、キャッシュと、レジスタと、コアと、を有している。CPU#1は、キャッシュと、レジスタと、コアと、を有している。CPU#0はOS310を実行し、情報処理装置の全体の制御を司る。OS310はマスタOSであり、スレッドをどのCPUに割り当てるかを制御する機能を有し、該CPU#0に割り当てられたスレッドを実行する。CPU#1はOS311を実行する。OS311はスレーブOSであり、CPU#1に割り当てられたスレッドを実行する。
共有メモリ302は、具体的には、たとえば、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを有している。たとえば、フラッシュROMがブートプログラムを記憶し、ROMがアプリケーションソフトウェアを記憶し、RAMがCPU#0〜CPU#1のワークエリアとして使用される。共有メモリ302に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることとなる。共有メモリ302は、たとえば、スレッドテーブル400と、割当管理テーブル500と、を記憶している。
図4は、スレッドテーブル400の一例を示す説明図である。スレッドテーブル400は、スレッドの識別情報の項目401と、優先度の項目402と、デッドラインの項目と、実行時間の項目404と、待機電力の項目405と、を有している。スレッドの識別情報の項目401には、各スレッドの識別情報が保持されている。優先度の項目402には、スレッドの識別情報の項目401に識別情報が保持されている各スレッドの優先度が高いか否かを示す情報が保持されている。優先度が高い場合、高優先が保持され、優先度が高くない場合、低優先が保持されている。
デッドラインの項目403には、スレッドが生成された生成時刻から該スレッドの実行期限までの時間(ここでは、「デッドライン」と称する。)が保持されている。実行時間の項目404には、スレッドの識別情報の項目401に識別情報が保持されている各スレッドの実行時間が保持されている。待機電力の項目405には、スレッドの識別情報の項目401に識別情報が保持されている各スレッドの単位時間あたりの待機電力の値が保持されている。
スレッド#0を例に挙げると、スレッド#0は高優先度のスレッドであり、デッドラインが10[ms]である。スレッド#0の実行時間が5[ms]であり、単位時間あたりの待機電力が100[mW/ms]である。
図5は、割当管理テーブル500の一例を示す説明図である。割当管理テーブル500は、CPUの識別情報の項目501と、LOCKの項目502と、割当済スレッドの識別情報の項目503と、実行状態の項目504と、を有している。CPUの識別情報の項目501には、CPUの識別情報が保持されている。
LOCKの項目502には、CPUの識別情報の項目501に識別情報が保持されているCPUがLOCKされているか否かを示す情報が保持されている。LOCKされているか否かとは、CPUに高優先度のスレッドが割り当てられているか否かを示す。CPUに高優先度のスレッドが割り当てられていなければ、LOCKの項目502には0が登録され、CPUに高優先度のスレッドが割り当てられていれば、LOCKの項目502には1が登録される。
割当済スレッドの識別情報の項目503には、CPUの識別情報の項目501に識別情報が保持されているCPUに割り当てられたスレッドの識別情報が登録される。実行状態の項目504とは、割当済スレッドの識別情報の項目503に識別情報が登録されたスレッドの実行状態が登録される。実行状態としてはexe(execution)またはproh(prohibit)のいずれかが登録される。exeはスレッドが実行可能な状態であることを示し、prohはスレッドが実行禁止状態であることを示す。
ここで、各OSは、割当管理テーブル500によりCPU#0にはスレッド#1とスレッド#3とが割り当てられ、CPU#1にはスレッド#2とスレッド#4とが割り当てられていることを特定できる。また、各CPUの割当済スレッドの識別情報は割り当てられた順に登録されているため、各OSは割当管理テーブル500内の割当済スレッドの識別情報を順にアクセスすることで、割当順を特定することができる。
(情報処理装置300の機能ブロック図)
図6は、情報処理装置300の機能ブロック図である。情報処理装置300は、検出部601と、差分算出部602と、判断部603と、第1の算出部604と、第2の算出部605と、比較部606と、決定部607と、を有している。具体的には、たとえば、共有メモリ302に記憶され、検出部601〜決定部607の機能を有する情報処理プログラムをCPU#0がロードする。そして、CPU#0がロードした該情報処理プログラムにコーディングされている処理を実行することにより、検出部601〜決定部607の機能が実現される。
図6は、情報処理装置300の機能ブロック図である。情報処理装置300は、検出部601と、差分算出部602と、判断部603と、第1の算出部604と、第2の算出部605と、比較部606と、決定部607と、を有している。具体的には、たとえば、共有メモリ302に記憶され、検出部601〜決定部607の機能を有する情報処理プログラムをCPU#0がロードする。そして、CPU#0がロードした該情報処理プログラムにコーディングされている処理を実行することにより、検出部601〜決定部607の機能が実現される。
検出部601は、未実行の第1のスレッドと未実行の第2のスレッドとを検出する。
第1の算出部604は、検出部601により検出された第2のスレッドの実行時間と検出部601により検出された第1のスレッドの単位時間当たりの待機電力とを乗算する。これにより、第1の算出部604は、第2のスレッドのつぎに第1のスレッドが実行された場合の第1のスレッドの待機電力を算出する。
第2の算出部605は、第1のスレッドの実行時間と第2のスレッドの単位時間当たりの待機電力とを乗算することにより、第1のスレッドのつぎに第2のスレッドが実行された場合の第2のスレッドの待機電力を算出する。
比較部606は、第1の算出部604により算出された第1のスレッドの待機電力と第2の算出部605により算出された第2のスレッドの待機電力とを比較する。
比較部607は、比較部606により比較された比較結果に基づいて第1のスレッドと第2のスレッドとの実行順を決定する。
また、決定部607は、比較部606により第1のスレッドの待機電力が第2のスレッドの待機電力以上であると比較された場合、実行順を第1のスレッドのつぎに第2のスレッドとする。
また、決定部607は、比較部606により第1のスレッドの待機電力が第2のスレッドの待機電力未満であると比較された場合、実行順を第2のスレッドのつぎに第1のスレッドとする。
差分算出部602は、検出部601により検出された第1のスレッドに実行期限が定義されている場合、第1のスレッドの生成時刻から実行期限までの時間と、第1のスレッドの実行時間との差分時間を算出する。
判断部603は、差分算出部602により算出された差分時間が第2のスレッドの実行時間より大きいか否かを判断する。
第1の算出部604は、判断部603により差分時間が第2のスレッドの実行時間より大きいと判断された場合、第2のスレッドの実行時間と第1のスレッドの単位時間当たりの待機電力とを乗算することにより、第1のスレッドの待機電力を算出する。
第2の算出部605は、判断部603により差分時間が第2のスレッドの実行時間より大きいと判断された場合、第1のスレッドの実行時間と第2のスレッドの単位時間当たりの待機電力とを乗算することにより、第2のスレッドの待機電力を算出する。
決定部607は、判断部603により差分時間が第2のスレッドの実行時間以下であると判断された場合、実行順を第1のスレッドのつぎに第2のスレッドとする。
以上を踏まえて詳細に説明する。本実施の形態では、高優先度のスレッドが生成された場合に、低優先度のスレッドと高い優先度のスレッドとの実行順を決定する例を示す。また、本実施の形態では、低優先度のスレッドのみが割り当てられているCPUについては、割り当てられた順に実行することとする。
本実施の形態では、高優先度が割り当てられていないCPUごとに実行順が決定され、最も待機電力が削減可能なCPUに生成された高優先度のスレッド(対象スレッド)を割り当てることとする。
ここでは、実行順の決定方法を示す。まず、OS310が、高優先度のスレッドが割り当てられていないCPUのうち、任意のCPU(対象CPU)を選択する。そして、OS310が、対象CPUに割り当てられている割当済のスレッドを特定する。つぎに、OS310が、下記式をそれぞれ算出する。
・ptotal=0
・r0=対象スレッドのデッドライン−対象スレッドの実行時間
・pst_high(対象スレッドの待機電力)=r0×対象スレッドの単位時間あたりの待機電力[mW/ms]
・pst_low(割当済のスレッドの待機電力)=対象スレッドの実行時間×(p1+p2+・・・pn)
・r0=対象スレッドのデッドライン−対象スレッドの実行時間
・pst_high(対象スレッドの待機電力)=r0×対象スレッドの単位時間あたりの待機電力[mW/ms]
・pst_low(割当済のスレッドの待機電力)=対象スレッドの実行時間×(p1+p2+・・・pn)
nは割当済スレッド数であり、割当順に沿って割当済スレッドに1〜nの番号が付されている。p1〜pnは、割当済スレッドの待機電力である。よって、(p1+p2+・・・pn)は、割当済スレッドの単位時間あたりの待機電力の合計値である。
つぎに、OS310が、下記式を遵守するか否かを判断する。
・r0>(t1∨t2∨・・・∨tn)∧pst_high<pst_low ・・・式(1)
・r0>(t1∨t2∨・・・∨tn)∧pst_high<pst_low ・・・式(1)
∧は論理積であり、∨は論理和である。t1〜tnは、割当済スレッドの実行時間である。OS310が、上記式(1)がTrueである(遵守する)と、対象スレッドよりも先に実行する低優先度スレッドである割当済のスレッドを決定する。
そして、OS310が、r0>(t1∨t2∨・・・∨tn)となる割当済スレッドの中で、単位時間あたりの待機電力が最も大きいスレッドを対象スレッドよりも先に実行するスレッドとして選択する。ここで、たとえば、割当済スレッドの中で、1番目に割り当てられたスレッドが対象スレッドよりも先に実行するスレッド(先行スレッド)として選択されたと仮定する。
そして、OS310が、(a)下記式を算出する。
・ptotal=ptotal+t1×p0 ・・・式(2)
・pst_high=pst_high−t1×p0 ・・・式(3)
・pst_low=pst_low−t1×p0 ・・・式(4)
・r0=r0−t1 ・・・式(5)
・ptotal=ptotal+t1×p0 ・・・式(2)
・pst_high=pst_high−t1×p0 ・・・式(3)
・pst_low=pst_low−t1×p0 ・・・式(4)
・r0=r0−t1 ・・・式(5)
そして、OS310が、(b)下記式を遵守するか否かを判断する。
・pst_high<pst_low ・・・式(6)
・pst_high<pst_low ・・・式(6)
そして、OS310が、(b)上記式(6)を遵守すると判断した場合、r0>(t2∨・・・∨tn)となる割当済スレッドの中で、単位時間あたりの待機電力が最も大きいスレッドを、先行スレッドのつぎで、対象スレッドよりも先に実行するスレッドとして選択する。
そして、OS310が、(a)〜(b)の処理を繰り返すことで、対象CPUに割り当てた場合の実行順を決定する。そして、OS310が、対象CPUに対象スレッドが割り当てられた場合の実行順が決定すると、高優先度のスレッドが割り当てられていないCPUのうち、対象CPUとして未選択のCPUを対象CPUに選択する。そして、OS310が、該選択した対象CPUに対象スレッドが割り当てられた場合の実行順を決定する。
そして、高優先度のスレッドが割り当てられていないCPUのうち、該CPUごとに算出されたptotalが最も大きい値であるCPUを対象スレッドの割当先CPUに決定する。そして、決定した実行順を該割当先CPUに通知し、割当先CPUが通知された実行順に基づいて該割当先CPUに割り当てられたスレッドを実行する。
つぎに、具体的な数値を用いて詳細に説明する。
図7は、スレッド#0の生成が検出される例を示す説明図である。まず、OS310が(1)スレッド#0の生成を検出すると、スレッド#0の優先度が高いか否かをスレッド#0の識別情報に基づきスレッドテーブル400を用いて判断する。ここでは、スレッド#0の優先度は高いと判断される。つぎに、OS310が、マルチコアプロセッサのうち、(2)高優先度のスレッドが割り当てられていないCPUを割当管理テーブル500に基づいて特定する。ここでは、CPU#0とCPU#1とが特定される。まず、OS310が、CPU#0とCPU#1のうち、CPU#0を対象CPUに選択する。
・r0(CPU#0)=スレッド#0のデッドライン−スレッド#0の実行時間
=10[ms]−5[ms]
=5[ms]
・pst_high(CPU#0)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#0)=スレッド#0の実行時間×(スレッド#1の単位時間あたりの待機電力+スレッド#3の単位時間あたりの待機電力)
=5[ms]×(100[mW/ms]+80[mW/ms])
=900[ms]
=10[ms]−5[ms]
=5[ms]
・pst_high(CPU#0)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#0)=スレッド#0の実行時間×(スレッド#1の単位時間あたりの待機電力+スレッド#3の単位時間あたりの待機電力)
=5[ms]×(100[mW/ms]+80[mW/ms])
=900[ms]
つぎに、OS310が、上記式(1)に算出した各値を代入して上記式(1)を遵守するか否かを判断する。
・5[ms](r0(CPU#0))>(3[ms](スレッド#1の実行時間)∨2[ms](スレッド#3の実行時間))∧500[mW](pst_high(CPU#0))<900[ms](pst_low(CPU#0))
・5[ms](r0(CPU#0))>(3[ms](スレッド#1の実行時間)∨2[ms](スレッド#3の実行時間))∧500[mW](pst_high(CPU#0))<900[ms](pst_low(CPU#0))
そして、OS310が、上記式(1)を遵守すると判断すると、r0(CPU#0)>(3[ms](スレッド#1の実行時間)∨2[ms](スレッド#3の実行時間))となる割当済スレッドの中で、単位時間あたりの待機電力が最大のスレッドを特定する。そして、OS310が、特定したスレッドをスレッド#0よりも先に実行するスレッドとして選択する。なお、選択結果を実行順情報として、共有メモリ302などの記憶領域に出力する。
・CPU#0の実行順情報:スレッド#1
・CPU#0の実行順情報:スレッド#1
そして、OS310が、上記式(2)〜(6)を算出する。
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=0+3[ms]×100[mW/ms]
=300[mW]
・pst_high(CPU#0)=pst_high(CPU#0)−スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=500[mW]−3[ms]×100[mW/ms]
=200[mW]
・pst_low(CPU#0)=pst_low(CPU#0)−スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=900[ms]−3[ms]×100[mW/ms]
=600[mW]
・r0(CPU#0)=r0(CPU#0)−スレッド#1の実行時間
=5[ms]−3[ms]
=2[ms]
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=0+3[ms]×100[mW/ms]
=300[mW]
・pst_high(CPU#0)=pst_high(CPU#0)−スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=500[mW]−3[ms]×100[mW/ms]
=200[mW]
・pst_low(CPU#0)=pst_low(CPU#0)−スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=900[ms]−3[ms]×100[mW/ms]
=600[mW]
・r0(CPU#0)=r0(CPU#0)−スレッド#1の実行時間
=5[ms]−3[ms]
=2[ms]
そして、OS310が、上記式(6)を遵守するか否かを判断する。
・200[mW]<600[mW]
・200[mW]<600[mW]
そして、OS310が、上記式(6)を遵守すると判断し、r0(CPU#0)>(スレッド#3の実行時間)となる割当済スレッドの中で、単位時間あたりの待機電力が最も大きいスレッドを、先行スレッドのつぎで、対象スレッドよりも先に実行するスレッドとして選択する。そして、選択結果を上述のCPU#0の実行順情報に追加する。
・CPU#0の実行順情報:スレッド#1→スレッド#3
・CPU#0の実行順情報:スレッド#1→スレッド#3
そして、OS310が、上記式(2)を算出する。
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#3の実行時間×スレッド#0の単位時間あたりの待機電力
=300[mW]+2[ms]×100[mW/ms]
=500[mW]
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#3の実行時間×スレッド#0の単位時間あたりの待機電力
=300[mW]+2[ms]×100[mW/ms]
=500[mW]
ここで、CPU#0に割り当てられているスレッドがスレッド#1とスレッド#3のみであるため、CPU#0の実行順情報にスレッド#0を追加する。
・CPU#0の実行順情報:スレッド#1→スレッド#3→スレッド#0
・CPU#0の実行順情報:スレッド#1→スレッド#3→スレッド#0
つぎに、OS310が、CPU#0とCPU#1のうち、CPU#1を対象CPUに選択する。
・r0(CPU#1)=スレッド#0のデッドライン−スレッド#0の実行時間
=10[ms]−5[ms]
=5[ms]
・pst_high(CPU#1)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#1)=スレッド#0の実行時間×(スレッド#2の単位時間あたりの待機電力+スレッド#4の単位時間あたりの待機電力)
=5[ms]×(50[mW/ms]+70[mW/ms])
=600[ms]
=10[ms]−5[ms]
=5[ms]
・pst_high(CPU#1)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#1)=スレッド#0の実行時間×(スレッド#2の単位時間あたりの待機電力+スレッド#4の単位時間あたりの待機電力)
=5[ms]×(50[mW/ms]+70[mW/ms])
=600[ms]
つぎに、OS310が、上記式(1)に算出した各値を代入して上記式(1)を遵守するか否かを判断する。
・5[ms](r0(CPU#1))>(4[ms](スレッド#2の実行時間)∨5[ms](スレッド#4の実行時間))∧500[mW](pst_high(CPU#1))<600[ms](pst_low(CPU#1))
・5[ms](r0(CPU#1))>(4[ms](スレッド#2の実行時間)∨5[ms](スレッド#4の実行時間))∧500[mW](pst_high(CPU#1))<600[ms](pst_low(CPU#1))
そして、OS310が、上記式(1)を遵守すると判断すると、r0(CPU#1)>(4[ms](スレッド#2の実行時間))となる割当済スレッドの中で、単位時間あたりの待機電力が最大のスレッドを特定する。そして、OS310が、特定したスレッドをスレッド#0よりも先に実行するスレッドとして選択する。なお、選択結果を実行順情報として、共有メモリ302などの記憶領域に出力する。
・CPU#1の実行順情報:スレッド#2
・CPU#1の実行順情報:スレッド#2
そして、OS310が、上記式(2)を算出する。
・ptotal(CPU#1)=ptotal(CPU#1)+スレッド#2の実行時間×スレッド#0の単位時間あたりの待機電力
=0+4[ms]×100[mW/ms]
=400[mW]
・ptotal(CPU#1)=ptotal(CPU#1)+スレッド#2の実行時間×スレッド#0の単位時間あたりの待機電力
=0+4[ms]×100[mW/ms]
=400[mW]
ここで、r0(CPU#1)未満であるスレッドがスレッド#2のみであるため、CPU#1の実行順情報にスレッド#0を登録し、さらに、スレッド#4を登録する。
・CPU#1の実行順情報:スレッド#2→スレッド#0→スレッド#4
・CPU#1の実行順情報:スレッド#2→スレッド#0→スレッド#4
つぎに、OS310がCPU#0とCPU#1のうち、ptotalが大きいCPUをスレッド#0の割当先CPUに決定する。ここでは、ptotal(CPU#0)が500[mW]であり、ptotal(CPU#1)が400[mW]であるため、CPU#0がスレッド#0の割当先CPUに決定される。
図8は、割当管理テーブル500の更新例を示す説明図である。OS310が、割当管理テーブル500内のCPUの識別情報がCPU#0に、割当済スレッドの識別情報の項目503にスレッド#0の識別情報を登録する。そして、OS310が、スレッド#1の実行状態の項目504にexeを設定し、スレッド#3の実行状態の項目504にprohを設定し、スレッド#0の実行状態の項目504にprohを設定する。そして、OS310が、スレッド#1の実行を開始する。
(情報処理手順)
図9〜11は、情報処理装置300による情報処理手順を示すフローチャートである。実行主体はマスタOSであるOS310である。まず、OS310が、スレッドの生成を検出したか否かを判断する(ステップS901)。OS310が、スレッドの生成を検出していないと判断した場合(ステップS901:No)、ステップS901へ戻る。OS310が、スレッドの生成を検出したと判断した場合(ステップS901:Yes)、生成されたスレッド(対象スレッド)が高優先度スレッドであるか否かを判断する(ステップS902)。
図9〜11は、情報処理装置300による情報処理手順を示すフローチャートである。実行主体はマスタOSであるOS310である。まず、OS310が、スレッドの生成を検出したか否かを判断する(ステップS901)。OS310が、スレッドの生成を検出していないと判断した場合(ステップS901:No)、ステップS901へ戻る。OS310が、スレッドの生成を検出したと判断した場合(ステップS901:Yes)、生成されたスレッド(対象スレッド)が高優先度スレッドであるか否かを判断する(ステップS902)。
OS310が、対象スレッドが高優先度スレッドであると判断した場合(ステップS902:Yes)、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定する(ステップS903)。そして、OS310が、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定できたか否かを判断する(ステップS904)。
OS310が、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定できたと判断した場合(ステップS904:Yes)、ロックがかかっていないCPUのうち、未選択なCPUがあるか否かを判断する(ステップS905)。
OS310が、未選択なCPUがあると判断した場合(ステップS905:Yes)、未選択なCPUから任意のCPUを対象CPUに選択する(ステップS906)。そして、OS310が、実行順の決定処理を実行し(ステップS907)、対象CPUの識別情報と実行順情報とptotalとを関連付けて出力し(ステップS908)、ステップS905へ戻る。
OS310が、対象スレッドが高優先度スレッドでないと判断した場合(ステップS902:No)、最小負荷のCPUを特定する(ステップS909)。そして、OS310が、対象スレッドの割当先CPUを特定した最小負荷のCPUに設定し(ステップS910)、ステップS901へ戻る。
OS310が、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定できなかったと判断した場合(ステップS904:No)、未選択なCPUがあるか否かを判断する(ステップS911)。そして、OS310が、未選択なCPUがあると判断した場合(ステップS911:Yes)、未選択なCPUから任意のCPUを選択する(ステップS912)。
OS310が、選択したCPUの実行順情報に登録されたスレッドを抽出し(ステップS913)、抽出したスレッドの実行時間の合計値を算出する(ステップS914)。OS310が、抽出したスレッドの実行時間の合計値<対象スレッドのデッドライン(d0)−対象スレッドの実行時間(t0)であるか否かを判断する(ステップS915)。
OS310が、抽出したスレッドの実行時間の合計値<d0−t0であると判断した場合(ステップS915:Yes)、対象CPUを、d0を遵守可能なCPUに決定し(ステップS916)、ステップS911へ戻る。一方、抽出したスレッドの実行時間の合計値<d0−t0でないと判断した場合(ステップS915:No)、ステップS911へ戻る。
OS310が、未選択なCPUがないと判断した場合(ステップS911:No)、d0を遵守可能なCPUがあるか否かを判断する(ステップS917)。OS310が、d0を遵守可能なCPUがあると判断した場合(ステップS917:Yes)、d0を遵守可能なCPUのうち、未選択なCPUがあるか否かを判断する(ステップS918)。
OS310が、d0を遵守可能なCPUのうち、未選択なCPUがあると判断した場合(ステップS918:Yes)、未選択なCPUから任意のCPUを対象CPUに選択する(ステップS919)。そして、OS310が、実行順の決定処理を実行し(ステップS920)、対象CPUの識別情報と実行順情報とptotalとを関連付けて出力し(ステップS921)、ステップS905へ戻る。
ステップS918において、OS310が、d0を遵守可能なCPUのうち、未選択なCPUがないと判断した場合(ステップS918:No)、d0を遵守可能なCPUのうち、最もptotalの値が大きいCPUを特定する(ステップS922)。そして、OS310が、特定したCPUの実行順情報を特定したCPUに通知し(ステップS923)、対象スレッドの割当先CPUを特定したCPUに設定し(ステップS924)、ステップS901へ戻る。
OS310が、d0を遵守可能なCPUがないと判断した場合(ステップS917:No)、各CPUに割当済の高優先度のスレッドのうち、実行時間が最小のスレッドを特定する(ステップS925)。つぎに、OS310が、特定したスレッドの割当先CPUを対象スレッドの割当先CPUに設定し(ステップS926)、実行順情報の破棄指示に対象スレッドの割当先CPUに通知し(ステップS927)、ステップS901へ戻る。
ステップS905において、OS310が、未選択なCPUがないと判断した場合(ステップS905:No)、ロックがかかっていないCPUのうち、最もptotalの値が大きいCPUを特定する(ステップS928)。そして、OS310が、特定したCPUの実行順情報を特定したCPUに通知し(ステップS929)、対象スレッドの割当先CPUを特定したCPUに設定し(ステップS930)、ステップS901へ戻る。
図12および図13は、図9で示した実行順の決定処理(ステップS907)の詳細な処理手順を示すフローチャートである。実行順の決定処理がステップS907またはステップS920の場合、実行主体はOS310であるが、実行順の決定処理がステップS1511(図15)の処理の場合、実行主体は各OSである。まず、OSが、r0=対象スレッドのデッドライン(d0)−対象スレッドの実行時間(t0)を算出し(ステップS1201)、pst_high=r0×対象スレッドの単位時間あたりの待機電力(p0)を算出する(ステップS1202)。
つぎに、OSが、ptotal=0とし(ステップS1203)、m=1とし(ステップS1204)、対象CPUに割当済のCPUを特定する(ステップS1205)。OSが、特定した割当済のスレッドのうち、r0よりも実行時間が小さいスレッドを特定する(ステップS1206)。そして、OSが、r0よりも実行時間が小さいスレッドを特定できたか否かを判断する(ステップS1207)。
OSが、r0よりも実行時間が小さいスレッドを特定できたと判断した場合(ステップS1207:Yes)、割当済のスレッドの待機電力の合計値(psum)を算出する(ステップS1208)。OSが、pst_low=psum×t0を算出し(ステップS1209)、pst_high>pst_lowであるか否かを判断する(ステップS1210)。
OSが、pst_high>pst_lowであると判断した場合(ステップS1210:Yes)、r0よりも実行時間が小さいスレッドのうち、未選択なスレッドがあるか否かを判断する(ステップS1211)。OSが、未選択なスレッドがあると判断した場合(ステップS1211:Yes)、未選択なスレッドのうち、最も単位時間あたりの待機電力が大きいスレッドを選択する(ステップS1212)。
そして、OSが、選択したスレッドの識別情報とmの値とを関連付けて実行順情報に出力する(ステップS1213)。OSが、ptotal=ptotal+t0×選択したスレッドの単位時間当たりの待機電力を算出し(ステップS1214)、pst_low=pst_low−t0×選択したスレッドの単位時間当たりの待機電力を算出する(ステップS1215)。
OSが、pst_high=pst_high−選択したスレッドの実行時間×p0を算出し(ステップS1216)、m=m+1とし(ステップS1217)、ステップS1211へ戻る。
ステップS1207において、OSが、r0よりも実行時間が小さいスレッドを特定できなかったと判断した場合(ステップS1207:No)、対象スレッドの識別情報とmの値とを関連付けて実行順情報に出力し(ステップS1218)、ステップS908へ移行する。
また、ステップS1210において、OSが、pst_high>pst_lowでないと判断した場合(ステップS1210:No)、ステップS1218へ移行する。
また、ステップS1211において、OSが、未選択なスレッドがないと判断した場合(ステップS1211:No)、ステップS1218へ移行する。
図14は、各OSによるスレッド割り当て時の情報処理手順を示すフローチャートである。まず、OSが、実行順情報の通知を受け付け、実行順情報の破棄指示を受け付け、またはスレッドの割り当てを検出したか否かを判断する(ステップS1401)。OSが、実行順情報の通知を受け付け、実行順情報の破棄指示を受け付け、およびスレッドの割り当てを検出していないと判断した場合(ステップS1401:No)、ステップS1401へ戻る。
OSが、実行順情報の通知を受け付けたと判断した場合(ステップS1401:実行順情報の通知)、保存済の実行順情報を破棄し、受け付けた実行順情報を保存する(ステップS1402)。
OSが、スレッドの割り当てを検出したと判断した場合(ステップS1401:スレッドの割り当て)、割り当てを検出したスレッドが高優先度スレッドであるか否かを判断する(ステップS1403)。OSが、割り当てを検出したスレッドが高優先度スレッドであると判断した場合(ステップS1403:Yes)、高優先度スレッドの割り当てに関するロックをかける(ステップS1404)。
そして、OSが、実行順情報内の先頭スレッドの実行状態をexeに設定する(ステップS1405)、実行順情報内の先頭スレッドを除く割当済スレッドの実行状態をprohに設定する(ステップS1406)。つぎに、OSが、実行順情報内の先頭スレッドの実行を開始し(ステップS1407)、ステップS1401へ戻る。
ステップS1403において、OSが、割り当てを検出したスレッドが高優先度スレッドでないと判断した場合(ステップS1403:No)、高優先度スレッドの割り当てに関するロックがかかっているか否かを判断する(ステップS1408)。OSが、高優先度スレッドの割り当てに関するロックがかかっていると判断した場合(ステップS1408:Yes)、割り当てを検出したスレッドが実行順情報内の先頭スレッドであるか否かを判断する(ステップS1409)。
そして、OSが、割り当てを検出したスレッドが実行順情報内の先頭スレッドでないと判断した場合(ステップS1409:No)、検出したスレッドの実行状態をprohに設定し(ステップS1410)、ステップS1401へ戻る。OSが、割り当て指示を検出したスレッドが実行順情報内の先頭スレッドであると判断した場合(ステップS1409:Yes)、検出したスレッドの実行状態をexeに設定し(ステップS1411)、ステップS1401へ戻る。
ステップS1408において、OSが、高優先度スレッドの割り当てに関するロックがかかっていないと判断した場合(ステップS1408:No)、ランキューの最後尾に検出したスレッドを登録し(ステップS1412)、ステップS1401へ戻る。
ステップS1401において、OSが、実行順情報の破棄指示の通知を受け付けたと判断した場合(ステップS1401:実行順情報の破棄指示の通知)、保存済の実行順情報を破棄する(ステップS1413)。そして、OSが、割当済の高優先度のスレッドのうち、最も先に割り当てられたスレッドの実行を開始し(ステップS1414)、ステップS1401へ戻る。
図15は、各OSによるスレッド終了時の情報処理手順を示すフローチャートである。まず、OSが、スレッドの終了またはスレッドの切り替えを検出したか否かを判断する(ステップS1501)。そして、OSが、スレッドの終了またはスレッドの切り替えを検出していないと判断した場合(ステップS1501:No)、ステップS1501に戻る。
OSが、スレッドの終了を検出したと判断した場合(ステップS1501:スレッドの終了)、終了したスレッドが高優先度スレッドであるか否かを判断する(ステップS1502)。OSが、終了したスレッドが高優先度スレッドでないと判断した場合(ステップS1502:No)、高優先度スレッドの割り当てに関するロックがかかっているか否かを判断する(ステップS1503)。
OSが、高優先度スレッドの割り当てに関するロックがかかっていると判断した場合(ステップS1503:Yes)、ステップS1509に移行する。OSが、高優先度スレッドの割り当てに関するロックがかかっていないと判断した場合(ステップS1503:No)、ステップS1505へ移行する。
OSが、終了したスレッドが高優先度スレッドであると判断した場合(ステップS1502:Yes)、割当済のスレッドの中に、終了したスレッドを除いて高優先度のスレッドがあるか否かを判断する(ステップS1504)。OSが、割当済のスレッドの中に、終了したスレッドを除いて高優先度のスレッドがないと判断した場合(ステップS1504:No)、高優先度のスレッドの割り当てに関するロックを解除する(ステップS1505)。
そして、OSが、割当済のすべてのスレッドの実行状態をexeに設定し(ステップS1506)、割当済のスレッドの中で、最も割り当てが先のスレッドの実行を開始し(ステップS1507)、ステップS1501へ戻る。
ステップS1504において、OSが、割当済のスレッドの中に、終了したスレッドを除いて高優先度のスレッドがあると判断した場合(ステップS1504:Yes)、実行順情報内に未実行のスレッドがあるか否かを判断する(ステップS1508)。OSが、実行順情報内に未実行のスレッドがあると判断した場合(ステップS1508:Yes)、実行順情報で未実行のスレッドのうち、先頭のスレッドの実行状態をexeに設定する(ステップS1509)。
OSが、先頭のスレッドの実行を開始し(ステップS1510)、ステップS1501へ戻る。OSが、実行順情報内に未実行のスレッドがないと判断した場合(ステップS1508:No)、実行順の決定処理を実行し(ステップS1511)、ステップS1501へ戻る。
以上説明したように、情報処理装置、情報処理プログラム、および情報処理方法によれば、第1のスレッドと第2のスレッドとが未実行の時に、各スレッドの待機電力の比較により実行順を決定する。これにより、スレッドを切り替えずに低消費電力化を図ることができる。
また、第1のスレッドの待機電力が第2のスレッドの待機電力以上である場合、第1のスレッドのつぎに第2のスレッドを実行する。これにより、待機電力の大きいスレッドを先に実行でき、低消費電力化を図ることができる。
また、第1のスレッドの待機電力が第2のスレッドの待機電力未満である場合、第2のスレッドのつぎに第1のスレッドを実行する。これにより、待機電力の大きいスレッドを先に実行でき、低消費電力化を図ることができる。
また、第1のスレッドに実行期限が定義されている場合、第1のスレッドの前に第2のスレッドを実行しても第1のスレッドが実行期限を遵守できるか否かを判断する。そして、第1のスレッドの前に第2のスレッドを実行しても第1のスレッドが実行期限を遵守できると判断された場合において、第1のスレッドの待機電力と第2のスレッドの待機電力に基づき実行順を決定する。これにより、実行期限のあるスレッドの実行時にも、低消費電力化を図ることができる。
また、第1のスレッドの前に第2のスレッドを実行したら第1のスレッドが実行期限を遵守できないと判断された場合において、実行順を第1のスレッドのつぎに第2のスレッドとすることで、第1のスレッドのスループットが下がるのを防止することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出手段と、
前記検出手段により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出手段と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出手段と、
前記第1の算出手段により算出された第1のスレッドの待機電力と前記第2の算出手段により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定手段と、
を備えることを特徴とする情報処理装置。
前記検出手段により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出手段と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出手段と、
前記第1の算出手段により算出された第1のスレッドの待機電力と前記第2の算出手段により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定手段と、
を備えることを特徴とする情報処理装置。
(付記2)前記決定手段は、
前記第1のスレッドの待機電力が前記第2のスレッドの待機電力以上である場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする付記1に記載の情報処理装置。
前記第1のスレッドの待機電力が前記第2のスレッドの待機電力以上である場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする付記1に記載の情報処理装置。
(付記3)前記決定手段は、
前記第1のスレッドの待機電力が前記第2のスレッドの待機電力未満である場合、前記実行順を前記第2のスレッドのつぎに前記第1のスレッドとすることを特徴とする付記1に記載の情報処理装置。
前記第1のスレッドの待機電力が前記第2のスレッドの待機電力未満である場合、前記実行順を前記第2のスレッドのつぎに前記第1のスレッドとすることを特徴とする付記1に記載の情報処理装置。
(付記4)前記検出手段により検出された第1のスレッドに実行期限が定義されている場合、前記第1のスレッドの生成時刻から前記実行期限までの時間と、前記第1のスレッドの実行時間との差分時間を算出する差分算出手段と、
前記差分算出手段により算出された差分時間が前記第2のスレッドの実行時間より大きいか否かを判断する判断手段と、
前記第1の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第2のスレッドの実行時間と前記第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドの待機電力を算出し、
前記第2の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドの待機電力を算出することを特徴とする付記1または2に記載の情報処理装置。
前記差分算出手段により算出された差分時間が前記第2のスレッドの実行時間より大きいか否かを判断する判断手段と、
前記第1の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第2のスレッドの実行時間と前記第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドの待機電力を算出し、
前記第2の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドの待機電力を算出することを特徴とする付記1または2に記載の情報処理装置。
(付記5)前記決定手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間以下であると判断された場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする付記4に記載の情報処理装置。
前記判断手段により前記差分時間が前記第2のスレッドの実行時間以下であると判断された場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする付記4に記載の情報処理装置。
(付記6)未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出工程と、
前記検出工程により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
前記検出工程により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。
(付記7)未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出工程と、
前記検出工程により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータが実行することを特徴とする情報処理方法。
前記検出工程により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータが実行することを特徴とする情報処理方法。
300 情報処理装置
601 検出部
602 差分算出部
603 判断部
604 第1の算出部
605 第2の算出部
606 比較部
607 決定部
601 検出部
602 差分算出部
603 判断部
604 第1の算出部
605 第2の算出部
606 比較部
607 決定部
Claims (7)
- 未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出手段と、
前記検出手段により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出手段と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出手段と、
前記第1の算出手段により算出された第1のスレッドの待機電力と前記第2の算出手段により算出された第2のスレッドの待機電力に基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定手段と、
を備えることを特徴とする情報処理装置。 - 前記決定手段は、
前記第1のスレッドの待機電力が前記第2のスレッドの待機電力以上である場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする請求項1に記載の情報処理装置。 - 前記決定手段は、
前記第1のスレッドの待機電力が前記第2のスレッドの待機電力未満である場合、前記実行順を前記第2のスレッドのつぎに前記第1のスレッドとすることを特徴とする請求項1に記載の情報処理装置。 - 前記検出手段により検出された第1のスレッドに実行期限が定義されている場合、前記第1のスレッドの生成時刻から前記実行期限までの時間と、前記第1のスレッドの実行時間との差分時間を算出する差分算出手段と、
前記差分算出手段により算出された差分時間が前記第2のスレッドの実行時間より大きいか否かを判断する判断手段と、
前記第1の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第2のスレッドの実行時間と前記第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドの待機電力を算出し、
前記第2の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドの待機電力を算出することを特徴とする請求項1または2に記載の情報処理装置。 - 前記決定手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間以下であると判断された場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする請求項4に記載の情報処理装置。 - 未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出工程と、
前記検出工程により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。 - 未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出工程と、
前記検出工程により検出された第2のスレッドの実行時間および第1のスレッドの単位時間当たりの待機電力に基づいて、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間および前記第2のスレッドの単位時間当たりの待機電力に基づいて、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とに基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータが実行することを特徴とする情報処理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/070317 WO2012066620A1 (ja) | 2010-11-15 | 2010-11-15 | 情報処理装置、情報処理プログラム、および情報処理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013252407A Division JP5692341B2 (ja) | 2013-12-05 | 2013-12-05 | マルチプロセッサシステム、制御方法、および制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5429402B2 true JP5429402B2 (ja) | 2014-02-26 |
JPWO2012066620A1 JPWO2012066620A1 (ja) | 2014-05-12 |
Family
ID=46083586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012544019A Expired - Fee Related JP5429402B2 (ja) | 2010-11-15 | 2010-11-15 | 情報処理装置、情報処理プログラム、および情報処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9430352B2 (ja) |
JP (1) | JP5429402B2 (ja) |
CN (1) | CN103189842B (ja) |
WO (1) | WO2012066620A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101770736B1 (ko) * | 2011-03-17 | 2017-09-06 | 삼성전자주식회사 | 응용프로그램의 질의 스케쥴링을 이용한 시스템의 소모전력 절감 방법 및 그 방법을 이용하여 소모전력을 절감하는 휴대단말기 |
US10884950B2 (en) * | 2016-05-16 | 2021-01-05 | International Business Machines Corporation | Importance based page replacement |
JP6959506B2 (ja) * | 2017-06-12 | 2021-11-02 | 富士通株式会社 | 並列処理システムのシステム管理装置、並列処理システムおよび電力制御方法 |
JP6928263B2 (ja) * | 2017-12-15 | 2021-09-01 | 富士通株式会社 | 情報処理装置、計算機制御方法、および計算機制御プログラム |
CN111596963B (zh) * | 2020-04-16 | 2022-11-04 | 广州博依特智能信息科技有限公司 | 一种设备开机时间合并方法、装置及存储介质 |
US20230229519A1 (en) * | 2022-01-14 | 2023-07-20 | Goldman Sachs & Co. LLC | Task allocation across processing units of a distributed system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6368934A (ja) | 1986-09-10 | 1988-03-28 | Nec Corp | タスクスケジユ−ル方式 |
JPH07168726A (ja) * | 1993-12-16 | 1995-07-04 | Matsushita Electric Ind Co Ltd | 電子計算機及びマルチプロセスオペレーティングシステムのスケジューリング方法 |
JPH09297688A (ja) * | 1996-03-06 | 1997-11-18 | Mitsubishi Electric Corp | システムクロック決定装置 |
CN1159021A (zh) * | 1996-03-06 | 1997-09-10 | 三菱电机株式会社 | 系统时钟确定装置 |
JP3043748B1 (ja) | 1999-03-26 | 2000-05-22 | 日本電気アイシーマイコンシステム株式会社 | タスクスケジュ―リング方法及び装置 |
US6775787B2 (en) * | 2002-01-02 | 2004-08-10 | Intel Corporation | Instruction scheduling based on power estimation |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US7206950B2 (en) * | 2004-06-16 | 2007-04-17 | Matsushita Electric Industrial Co., Ltd. | Processor system, instruction sequence optimization device, and instruction sequence optimization program |
US8015566B2 (en) * | 2005-01-13 | 2011-09-06 | Lenovo (Singapore) Pte. Ltd. | Attributing energy consumption to individual code threads in a data processing system |
KR20070089460A (ko) * | 2006-02-28 | 2007-08-31 | 삼성전자주식회사 | 우선 순위에 따른 비휘발성 메모리의 연산 처리 장치 및방법 |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP5208690B2 (ja) * | 2008-11-14 | 2013-06-12 | 株式会社東芝 | 主記憶データ書き換え装置及び方法 |
-
2010
- 2010-11-15 CN CN201080070002.8A patent/CN103189842B/zh not_active Expired - Fee Related
- 2010-11-15 WO PCT/JP2010/070317 patent/WO2012066620A1/ja active Application Filing
- 2010-11-15 JP JP2012544019A patent/JP5429402B2/ja not_active Expired - Fee Related
-
2013
- 2013-05-09 US US13/890,920 patent/US9430352B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103189842B (zh) | 2016-06-29 |
US20130262905A1 (en) | 2013-10-03 |
US9430352B2 (en) | 2016-08-30 |
JPWO2012066620A1 (ja) | 2014-05-12 |
WO2012066620A1 (ja) | 2012-05-24 |
CN103189842A (zh) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5429402B2 (ja) | 情報処理装置、情報処理プログラム、および情報処理方法 | |
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
US20090113181A1 (en) | Method and Apparatus for Executing Instructions | |
KR101626378B1 (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
US9678806B2 (en) | Method and apparatus for distributing processing core workloads among processing cores | |
US9858116B2 (en) | Functional unit for supporting multithreading, processor comprising the same, and operating method thereof | |
WO2017206852A1 (zh) | 处理器计算资源的分配方法、装置及终端 | |
KR20130087257A (ko) | Gpu의 자원 할당을 위한 방법 및 장치 | |
CN110300959B (zh) | 用于动态运行时任务管理的方法、系统、设备、装置和介质 | |
WO2012120654A1 (ja) | タスクスケジューリング方法およびマルチコアシステム | |
GB2605068A (en) | Determining an optimum number of threads per core in a multi-core processor complex | |
KR20140030260A (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 | |
CN113010286A (zh) | 并行任务调度方法、装置、计算机设备和存储介质 | |
WO2017016590A1 (en) | Scheduling heterogenous processors | |
US20160267621A1 (en) | Graphic processing system and method thereof | |
JP2014191655A (ja) | マルチプロセッサ、電子制御装置、プログラム | |
US20130132708A1 (en) | Multi-core processor system, computer product, and control method | |
CN112114877B (zh) | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 | |
JP5692341B2 (ja) | マルチプロセッサシステム、制御方法、および制御プログラム | |
US9367326B2 (en) | Multiprocessor system and task allocation method | |
KR20140030261A (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 | |
JP6156379B2 (ja) | スケジューリング装置、及び、スケジューリング方法 | |
US11132228B2 (en) | SMT processor to create a virtual vector register file for a borrower thread from a number of donated vector register files | |
JP5621896B2 (ja) | マルチプロセッサシステム、制御プログラム、および制御方法 | |
TWI382348B (zh) | 多核心系統及其排程方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20131105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131118 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5429402 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |