(57)【要約】      （修正有）【課題】スロットル技法を活用したマルチコア装置及びマルチコア装置のジョブスケジューリング方法を提供する。【解決手段】マルチコア装置は、アクティブサイクルカウントを保存するアクティブサイクル計数部３５、及びストールサイクルカウントを保存するストールサイクル計数部３６を含む２つ以上のコア３０と、各コアから伝達された状態情報に基づいて、最適コア数を決定し、最適コア数が保持されるように、パワーを調節するジョブスケジューラ２０と、を含む。【選択図】図２
2014235746.tif 000002
【特許請求の範囲】
【請求項１】
アクティブサイクルカウントを保存するアクティブサイクル計数部、及びストールサイクルカウントを保存するストールサイクル計数部を含む２つ以上のコアと、
前記各コアから受信した状態情報に基づいて、アクティブ状態の最適コア数を決定し、前記最適コア数が保持されるように、パワーを調節するジョブスケジューラと、
を含むマルチコア装置。
【請求項２】
前記各コアは、
命令語を実行部に伝達し、
命令語が実行部に伝達されたとき、前記アクティブサイクルカウントを計算して、前記アクティブサイクル計数部に保存し、
命令語が実行部に伝達されないとき、前記ストールサイクルカウントを計算して、前記ストールサイクルカウント計数部に保存するフロントエンド部をさらに含む
請求項１に記載のマルチコア装置。
【請求項３】
前記各コアは、前記状態情報を保存する状態モニタリング部をさらに含み、
前記フロントエンド部は、
前記アクティブサイクルカウント及び前記ストールサイクルカウントに基づいて、前記状態情報を生成して、前記状態モニタリング部に保存する
請求項２に記載のマルチコア装置。
【請求項４】
前記フロントエンド部は、
前記ストールサイクルカウントが、前記アクティブサイクルカウント及び所定閾値より大きいとき、対応するコアをスロットル状態に変更する状態情報を生成する
請求項３に記載のマルチコア装置。
【請求項５】
前記ジョブスケジューラは、
前記状態情報に基づいて、１つ以上のコアをスロットル状態に変更し、前記変更結果に基づいて、前記最適コア数を決定する
請求項１ないし４いずれか一項に記載のマルチコア装置。
【請求項６】
前記ジョブスケジューラは、
現在サイクルが既定のサイクルよりも大きければ、前記変更後に残っている現在アクティブ状態のコア数を前記最適コア数であると決定する
請求項５に記載のマルチコア装置。
【請求項７】
前記ジョブスケジューラは、
現在サイクルが既定のサイクルよりも大きくなく、現在アクティブ状態のコア数がメモリのチャネル数と同じであれば、前記現在アクティブ状態のコア数を最適コア数であると決定する
請求項５または６に記載のマルチコア装置。
【請求項８】
前記ジョブスケジューラは、
現在スロットル状態のコアが存在すれば、現在アクティブ状態のコアのうちからジョブ処理が完了したコアの状態をオフ状態に変更し、そのオフ状態のコアのパワーをゲーティングする
請求項１ないし７いずれか一項に記載のマルチコア装置。
【請求項９】
前記ジョブスケジューラは、
前記アクティブ状態のコアをオフ状態に変更する場合、前記最適コア数が保持されるように、現在スロットル状態のコアをアクティブ状態に変更する
請求項８に記載のマルチコア装置。
【請求項１０】
前記ジョブスケジューラは、
前記コアのうち、現在スロットル状態のコアが存在しなければ、前記コアのうち、ジョブ処理を完了し、現在アクティブ状態であるコアを保持し、そのアクティブ状態のコアに新たなジョブを割り当てる
請求項１ないし９いずれか一項に記載のマルチコア装置。
【請求項１１】
各コアから受信した状態情報に基づいて、１つ以上のコアをスロットル状態に変更する段階と、
前記状態変更結果に基づいて、アクティブ状態にある最適コア数を決定する段階と、
アクティブ状態にあるコアのジョブ処理結果に基づいて、パワーを調節し、前記最適コア数を保持する段階と、
を含むマルチコア装置のジョブスケジューリング方法。
【請求項１２】
前記１つ以上のコアを変更する段階は、
前記状態情報が、対応するあるコアをスロットル状態に変更するように指示するか決定する段階と、
前記状態情報が、対応するあるコアをスロットル状態に変更するように指示するものと決定したとき、前記対応するあるコアをスロットル状態に変更する段階と、
を含む請求項１１に記載のジョブスケジューリング方法。
【請求項１３】
前記状態情報は、対応するあるコアのアクティブサイクルカウント及びストールサイクルカウントに基づいて生成される請求項１１または１２に記載のジョブスケジューリング方法。
【請求項１４】
前記最適コア数を決定する段階は、
現在のサイクルが既定のサイクルよりも大きいか判断する段階と、
現在サイクルが既定のサイクルよりも大きいと決定したとき、現在アクティブ状態にあるコア数を前記最適コア数であると決定する段階と、
を含む請求項１１ないし１３いずれか一項に記載のジョブスケジューリング方法。
【請求項１５】
前記最適コア数を決定する段階は、
前記現在サイクルが既定のサイクルよりも大きくないとき、アクティブ状態にあるコア数が、メモリチャネル数と同じであるか判断する段階と、
アクティブ状態のコア数が、メモリチャネル数と同じであるとき、アクティブ状態にあるコア数を最適コア数であると決定する段階と、
を含む請求項１４に記載のジョブスケジューリング方法。
【請求項１６】
前記パワーを調節する段階は、
スロットル状態にある１つ以上のコアが存在すれば、ジョブの処理を完了しアクティブ状態にあるコアをオフ状態に変更する段階と、
前記オフ状態にあるコアのパワーをゲーティングする段階と、
を含む請求項１１ないし１５いずれか一項に記載のジョブスケジューリング方法。
【請求項１７】
前記パワーを調節する段階は、
前記アクティブ状態のコアがオフ状態に変更されたとき、前記コアのうちからスロットル状態のコアをアクティブ状態に変更して前記最適コア数を保持する段階をさらに含む請求項１６に記載のジョブスケジューリング方法。
【請求項１８】
前記パワーを調節する段階は、
前記スロットル状態にある１つ以上のコアが存在しなければ、前記コアのうち、ジョブ処理を完了し、現在アクティブ状態であるコアを保持し、そのアクティブ状態のコアに新たなジョブを割り当てる請求項１１ないし１７いずれか一項に記載のジョブスケジューリング方法。
【請求項１９】
各コアから受信した状態情報に基づいて、１つ以上のコアをスロットル状態に変更し、前記スロットル状態への変更に応じて、ジョブ処理を完了したアクティブ状態のコアをターンオフし、前記ターンオフ応じて、前記コアのうちからスロットル状態にあるコアをアクティブ状態に変更するプロセッサを含む装置。
【請求項２０】
前記スロットル状態は、対応するあるコアにジョブが割り当てられるが、そのジョブを行わない状態であり、
前記アクティブ状態は、対応するあるコアにジョブが割り当てられ、そのジョブを行う状態である請求項１９に記載の装置。
【請求項２１】
前記対応するコアをスロットル状態に変更するように指示する状態情報は、ストールサイクルカウントが、その対応するコアのアクティブサイクルカウントと既定の閾値よりも大きな場合に生成される請求項１９または２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコア装置及びマルチコア装置のジョブスケジューリング方法に関し、より詳細には、スロットリング（ｔｈｒｏｔｔｌｉｎｇ）技法を活用して、パワーを最適化するマルチコア装置及びマルチコア装置のジョブスケジューリング方法に関する。
【背景技術】
【０００２】
マルチコア装置の応用（ａｐｐｌｉｃａｔｉｏｎ）、特に、グラフィックス及び汎用ＧＰＵ（ＧＰＧＰＵ：Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）の応用は、処理の対象となるデータ相互間に依存性（ｄｅｐｅｎｄｅｎｃｙ）がなくて、大量のデータを並列処理しやすい。このような大量のデータを並列処理するための性能を向上させるためには、資源を最大限活用することで可能である。
【０００３】
既存のＧＰＵを含めて一般的なマルチコア装置では、ジョブスケジューラがラウンドロビン（ｒｏｕｎｄ−ｒｏｂｉｎ）方式で各コアに最大数のジョブを割り当て、コアが処理するジョブが１つずつ終わる度に新たなジョブを再び割り当てることによって、常に最大数のジョブを処理させる。各コアの独立した資源、例えば、レジスタファイル、共有メモリ、コンピューティングユニットを主に使う応用（ｃｏｍｐｕｔａｔｉｏｎ−ｉｎｔｅｎｓｉｖｅｗｏｒｋｌｏａｄ）の場合、ジョブ数が増加するにつれて、メモリアクセス遅延とパイプライン遅延とを隠す効果が大きくなって、全体的な性能向上をもたらしうる。
【０００４】
しかし、あらゆるコアが共有しているメモリを主に使う応用（ｍｅｍｏｒｙ−ｉｎｔｅｎｓｉｖｅ  ｗｏｒｋｌｏａｄ）の場合には、ネットワーク及びメモリの最大性能幅（ｂａｎｄｗｉｄｔｈ）に制限されて、ジョブ数が増加しても、全体的な性能向上を期待することができない。また、過度なトラフィック発生によるネットワーク輻輳（ｃｏｎｇｅｓｔｉｏｎ）及びＬｅｖｅｌ−２（Ｌ２）キャッシュキャパシティー（ｃａｐａｃｉｔｙ）の不足によって、むしろ性能が減少する場合が発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、マルチコア装置及びマルチコア装置のジョブスケジューリング方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、マルチコア装置は、アクティブサイクルカウントを保存するアクティブサイクル計数部、及びストールサイクルカウントを保存するストールサイクル計数部を含む２つ以上のコアと、各コアから受信された状態情報に基づいて、アクティブ状態の最適コア数を決定し、最適コア数が保持されるように、パワーを調節するジョブスケジューラと、を含みうる。
【０００７】
この際、各コアは、命令語を実行部に伝達し、命令語が実行部に伝達される場合、アクティブサイクルカウントを計算して、アクティブサイクル計数部に保存し、命令語が実行部に伝達されない場合、ストールサイクルカウントを計算して、それぞれストールサイクルカウント計数部に保存するフロントエンド部をさらに含みうる。
【０００８】
この際、各コアは、状態情報を保存する状態モニタリング部をさらに含み、フロントエンド部は、アクティブサイクルカウント及びストールサイクルカウントに基づいて、状態情報を生成して、前記状態モニタリング部に保存することができる。
【０００９】
フロントエンド部は、ストールサイクルカウントが、アクティブサイクルカウントと所定閾値よりも大きければ、対応するコアの状態をスロットルに変更させる状態情報を生成することができる。
【００１０】
ジョブスケジューラは、状態情報に基づいて、１つ以上のコアをスロットル（ｔｈｒｏｔｔｌｅ）状態に変更し、変更結果に基づいて、最適コア数を決定することができる。
【００１１】
ジョブスケジューラは、現在サイクルが既定のサイクルよりも大きければ、変更後に残っている現在アクティブ状態のコア数を最適コア数に決定することができる。
【００１２】
ジョブスケジューラは、現在サイクルが既定のサイクルよりも大きくなく、現在アクティブ状態のコア数がメモリのチャネル数と同じであれば、現在アクティブ状態のコア数を最適コア数に決定することができる。
【００１３】
ジョブスケジューラは、現在スロットル状態のコアが存在すれば、現在アクティブ状態のコアのうちからジョブ処理が完了したコアの状態をオフ状態に変更し、そのオフ状態のコアのパワーをゲーティング（ｇａｔｉｎｇ）することができる。
【００１４】
ジョブスケジューラは、アクティブ状態のコアをオフ状態に変更する場合、最適コア数が保持されるように、現在スロットル状態のコアをアクティブ状態に変更することができる。
【００１５】
ジョブスケジューラは、コアのうちから現在スロットル状態のコアが存在しなければ、コアのうちからジョブ処理を完了し、現在アクティブ状態であるコアを保持し、そのアクティブ状態のコアに新たなジョブを割り当てられる。
【００１６】
本発明の一態様によれば、マルチコア装置のジョブスケジューリング方法は、各コアから受信された状態情報に基づいて、１つ以上のコアをスロットル状態に変更する段階と、状態変更結果に基づいて、アクティブ状態にある最適コア数を決定する段階と、アクティブ状態にあるコアのジョブ処理結果に基づいて、最適コア数を保持するために、パワーを調節する段階と、を含みうる。
【００１７】
この際、１つ以上のコアを変更する段階は、状態情報が、対応するあるコアをスロットル状態に変更するように指示するかを決定する段階と、対応するあるコアをスロットル状態に変更するように指示するものと決定する場合、対応するあるコアをスロットル状態に変更する段階と、を含みうる。
【００１８】
この際、状態情報は、対応するあるコアのアクティブサイクルカウント及びストールサイクルカウントに基づいて生成されうる。
【００１９】
最適コア数を決定する段階は、現在のサイクルが既定のサイクルよりも大きいかを判断する段階と、現在サイクルが既定のサイクルよりも大きいと決定されれば、現在アクティブ状態にあるコア数を最適コア数に決定する段階と、を含みうる。
【００２０】
最適コア数を決定する段階は、現在サイクルが既定のサイクルよりも大きくなければ、アクティブ状態にあるコア数が、メモリチャネル数と同じであるかを判断する段階と、アクティブ状態のコア数が、メモリチャネル数と同じであれば、アクティブ状態にあるコア数を最適コア数に決定する段階と、を含みうる。
【００２１】
パワーを調節する段階は、スロットル状態にある１つ以上のコアが存在すれば、ジョブの処理を完了し、アクティブ状態にあるコアをオフ状態に変更する段階と、オフ状態にあるコアのパワーをゲーティングする段階と、を含みうる。
【００２２】
パワーを調節する段階は、アクティブ状態のコアがオフ状態に変更されれば、最適コア数が保持されるように、コアのうちからスロットル状態のコアをアクティブ状態に変更する段階をさらに含みうる。
【００２３】
パワーを調節する段階は、スロットル状態にある１つ以上のコアが存在しなければ、コアのうちからジョブ処理を完了し、現在アクティブ状態であるコアを保持し、そのアクティブ状態のコアに新たなジョブを割り当てられる。
【００２４】
本発明の一態様によれば、装置は、各コアから受信された状態情報に基づいて、１つ以上のコアをスロットル状態に変更し、スロットル状態に変更されることによって、ジョブ処理を完了したアクティブ状態のコアをターンオフ（ｔｕｒｎ  ｏｆｆ）し、ターンオフによって、前記コアのうちからスロットル状態にあるコアをアクティブ状態に変更するプロセッサを含みうる。
【００２５】
この際、スロットル状態は、対応するあるコアにジョブが割り当てられるが、そのジョブを行わない状態であり、アクティブ状態は、対応するあるコアにジョブが割り当てられ、そのジョブを行う状態であり得る。
【００２６】
この際、対応するコアをスロットル状態に変更するように指示する状態情報は、ストールサイクルカウントが、その対応するコアのアクティブサイクルカウントと既定の閾値よりも大きな場合に生成されうる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態によるマルチコア装置のブロック図である。
【図２】本発明の一実施形態によるマルチコア装置のコアの詳細ブロック図である。
【図３】本発明の一実施形態によるマルチコア装置のコアの状態変更を示す図面である。
【図４】本発明の一実施形態によるマルチコア装置のジョブスケジューリング方法のフローチャートである。
【図５】本発明の一実施形態によるジョブスケジューリング方法でコアの状態変更及び最適コア数を決定する段階の詳細フローチャートである。
【図６】本発明の一実施形態によるジョブスケジューリング方法でパワーを調節する段階の詳細フローチャートである。
【図７】本発明の一実施形態によるマルチコア装置で、各コアの状態変更及びパワーゲーティング過程を示す図面である。
【図８】ジョブスケジューリング方式による性能の比較結果を示す図面である。
【発明を実施するための形態】
【００２８】
その他の実施形態の具体的な事項は、詳しい説明及び図面に含まれている。記載の技術の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。明細書の全般に亘って同じ参照符号は、同じ構成要素を指称する。
【００２９】
以下、マルチコア装置及びマルチコア装置のジョブスケジューリング方法の実施形態を図面を参考にして詳しく説明する。
【００３０】
図１は、本発明の一実施形態によるマルチコア装置のブロック図である。図１を参照すれば、マルチコア装置１は、ジョブスケジューラ１０、２つ以上のコア１１、１つ以上のメモリ１２、及びこれらを相互連結するネットワーク１３を含む。ジョブスケジューラ（ｊｏｂ  ｓｃｈｅｄｕｌｅｒ）１０は、マルチコアを成す各コア１１の資源（ｒｅｓｏｕｒｃｅ）状態によって、１つ以上のジョブ（ｊｏｂ）を各コア１１に分配する。各ジョブは、コア１１で一括処理される多数のデータの束を言う。ジョブスケジューラ１０は、コア１１の資源状態、例えば、レジスタファイルの状態及び共有メモリの状態を考慮して、各コア１１が処理することができる最大件数のジョブを割り当てる。
【００３１】
一方、一実施形態によれば、ジョブスケジューラ１０は、割り当てられたあらゆるジョブを完了したコア１１のパワー（ｐｏｗｅｒ）をゲーティングすることによって、マルチコア装置１のエネルギー消耗を最小にする。
【００３２】
コア１１は、割り当てられた１つ以上のジョブを処理する。この際、一サイクル（ｃｙｃｌｅ）に同時に処理することができる単位に分けて管理するために、レジスタファイル、及び小規模のキャッシュ（ａ  ｐｒｉｖａｔｅ  ｃａｃｈｅ）またはメモリ（ａ  ｓｃｒａｔｃｈｐａｄ  ｍｅｍｏｒｙ）を有しうる。
【００３３】
メモリ１２は、コア１１とジョブスケジューラ１０で必要な各種入出力データを保存する。メモリ１２は、あらゆるコア１１によって共有される。
【００３４】
ネットワーク１３は、ジョブスケジューラ１０、コア１１、及びメモリ１２を互いに連結し、データと制御信号の伝達経路になる。
【００３５】
図２は、本発明の一実施形態によるマルチコア装置を構成するコアの詳細ブロック図である。図２を参照すれば、コア３０は、フロントエンド部３１、実行部３２、メモリアクセス部３３、及び記録部３４を含む。また、コア３０は、アクティブサイクル計数部３５、ストールサイクル計数部３６、及び状態モニタリング部３７を含みうる。
【００３６】
フロントエンド部３１は、ジョブスケジューラ２０によって割り当てられたジョブの命令語（ｉｎｓｔｒｕｃｔｉｏｎ）をメモリ（図示せず）またはキャッシュ（図示せず）から引き出して、実行部３２に伝達する。フロントエンド部３１は、命令語を伝達する前に命令語相互間の依存性を確認して、サイクル内で依存性が解消されていない場合には、そのサイクルに実行部３２に命令語を伝達しない。また、フロントエンド部３１は、装置の資源が不足な場合にも、命令語の伝達を保留することができる。
【００３７】
このように、フロントエンド部３１が、実行部３２に有効な命令語を伝達していない状況をストール状況（ｓｔａｌｌ  ｃｏｎｄｉｔｉｏｎ）と言い、ストール状況が発生したサイクルをストールサイクル（ｓｔａｌｌ  ｃｙｃｌｅ）と言う。一方、フロントエンド部３１が、実行部３２に有効な命令語を伝達した場合、その状況をアクティブ状況（ａｃｔｉｖｅ  ｃｏｎｄｉｔｉｏｎ）と言い、そのサイクルをアクティブサイクル（ａｃｔｉｖｅ  ｃｙｃｌｅ）と言う。
【００３８】
実行部３２は、フロントエンド部３１から入力されたデータまたは命令語を命令語の類型によって処理する。
【００３９】
メモリアクセス部３３は、メモリからデータを読み取るか、メモリにデータを記録する。
【００４０】
記録部３４は、実行部３２で処理を終えたデータまたはメモリアクセス部３３によってメモリから読み取ったデータをコア３０のレジスタファイル（図示せず）に記録する。
【００４１】
フロントエンド部３１は、実行部３２に命令語の伝達時に、アクティブ状況が発生すれば、アクティブサイクルカウントを計算するか、増加させ、そのアクティブサイクルカウントをアクティブサイクルカウント計数部３５に保存する。また、フロントエンド部３１は、メモリアクセス命令語によって遅延されているストール状況が発生すれば、ストールサイクルカウントを計算するか、増加させ、そのストールサイクルカウントをストールサイクルカウント計数部３６に保存する。
【００４２】
また、フロントエンド部３１は、アクティブサイクルカウントとストールサイクルカウントとに基づいて、コア３０の状態をアクティブ状態（ａｃｔｉｖｅ  ｓｔａｔｕｓ）からスロットル状態（ｔｈｒｏｔｔｌｅ  ｓｔａｔｕｓ）に変更するか否かを表わす状態情報を生成し、その状態情報を状態モニタリング部３７に保存する。状態モニタリング部３７は、その状態情報をジョブスケジューラ２０に知らせる。例えば、ストールサイクルカウントをアクティブサイクルカウントと既定の閾値（ｔｈｒｅｓｈｏｌｄ）とを比較して、ストールサイクルカウントが、アクティブサイクルカウントと既定の閾値よりもいずれも大きくなれば、コア３０をスロットル状態に変更するように状態情報を生成することができる。
【００４３】
一方、ジョブスケジューラ２０によって、コア３０は、アクティブ状態、スロットル状態、及びオフ状態（ｏｆｆ  ｓｔａｔｕｓ）のうちの何れか１つを有しうる。アクティブ状態は、ジョブスケジューラ２０によってコア３０にジョブが割り当てられ、命令語を実行部３２に伝達することができる状態を意味し、スロットル状態は、コア３０に割り当てられたジョブがあるが、命令語を実行部３２に伝達することができない状態を意味する。また、オフ状態は、コア３０に割り当てられたあらゆるジョブが完了し、ジョブスケジューラ２０によって、これ以上の新たなジョブが割り当てられず、パワーがゲーティングされた状態を意味する。プログラム手続き（ｐｒｏｇｒａｍ  ｓｅｑｕｅｎｃｅ）の最後に、フロントエンド部３１は、コア３０の状態をオフ状態に変更するか否かを指示する状態情報を生成し、その状態情報を状態モニタリング部３７に保存する。状態モニタリング部３７は、その状態情報をジョブスケジューラ２０に知らせる。
【００４４】
図３は、本発明の一実施形態によるマルチコア装置でコアの状態変更を示す図面である。図２及び図３を参照して、ジョブスケジューラ２０によってコア３０の状態が変更されることを説明する。
【００４５】
ジョブスケジューラ２０は、マルチコア装置を構成するあらゆるコアにジョブが割り当てられていない遊休状態（ＩＤＬ）で、あるコア３０に１つ以上のジョブを割り当て、アクティブ状態（ＡＣＴ）に変更する（ＴＲ＿１）。また、フロントエンド部３１によって、そのコア３０をスロットル状態に変更させる状態情報が生成されれば、そのコア３０の状態をスロットル状態（ＴＨＲ）に変更する（ＴＲ＿２）。そのコア３０の状態が、スロットル状態（ＴＨＲ）に変更されず、割り当てられたあらゆるジョブの処理を完了すれば、そのコア３０の状態をオフ状態（ＯＦＦ）に変更し（ＴＲ＿４）、パワーをゲーティングする。そのコア３０の状態が、スロットル状態（ＴＨＲ）に変更され（ＴＲ＿２）、引き続き他のアクティブ状態（ＡＣＴ）のコアが、オフ状態（ＯＦＦ）に変更されれば（ＴＲ＿４）、そのコア３０の状態をアクティブ状態（ＡＣＴ）に変更し、割り当てられたジョブを処理する。マルチコア装置を構成する各コアが、オフ状態（ＯＦＦ）に変更されれば、各コアを再び遊休状態（ＩＤＬ）に変更する（ＴＲ＿５）。
【００４６】
再び図１を参照すれば、ジョブスケジューラ１０は、前述したように、マルチコア装置１を構成するコア１１のうちからスロットル状態に変更させる状態情報を有した各コア１１を毎サイクルごとに段階的にスロットル状態に変更することによって、マルチコア装置１を最小のエネルギー消耗を有させる最適コア数を決定することができる。
【００４７】
さらに具体的に、ジョブスケジューラ１０は、現在のサイクルと既定のモニタリングサイクルとを比較して、現在のサイクルが、既定のモニタリングサイクルよりも大きければ、現在サイクルにスロットル状態に変更されず、残ったアクティブ状態のコア数を最適コア数に決定することができる。もし、現在サイクルが、既定のモニタリングサイクルよりも大きくなければ、現在のサイクルにアクティブ状態のコア数とメモリ（例：ＤＲＡＭ）のチャネル数とを比較して、同じである場合、その現在アクティブ状態のコア数を最適コア数に決定することができる。
【００４８】
引き続き毎サイクルごとに決定された最適コア数ほどのコアをアクティブ状態に保持して、そのアクティブ状態のコアをしてジョブを処理する。そして、残りのコアは、スロットル状態で待機するか、あらゆるジョブが完了したアクティブ状態のコアは、パワーをゲーティングして、オフ状態に変更する。
【００４９】
これを通じて、マルチコア装置１のエネルギー消耗は、最小化されうる。すなわち、最適の性能を発揮できるように決定された最適コア数ほどのコアをアクティブ状態に保持して、動的パワー（ｄｙｎａｍｉｃ  ｐｏｗｅｒ）及び静的パワー（ｓｔａｔｉｃ  ｐｏｗｅｒ）を消耗する。また、スロットル状態のコアは、静的パワーのみを消耗させ、あらゆるジョブが終わってＯＦＦ状態にあるコアは、パワーをゲーティングして、静的パワー及び動的パワーをいずれも消耗しないようにすることによって、エネルギー消耗を最小にする。
【００５０】
ジョブスケジューラ１０は、現在サイクルにスロットル状態のコアが存在すれば、現在アクティブ状態のコアのジョブが完了するまで待つ。現在アクティブ状態のコアのうちからジョブを完了したコアが発生すれば、ジョブを完了したコアの状態をオフ状態に変更し、パワーをオフして、動的及び静的パワーを消耗しないようにゲーティングする。また、最適コア数が保持し続けられるようにスロットル状態のコアをアクティブ状態に変更して、ジョブを処理する。
【００５１】
ジョブスケジューラ１０は、現在サイクルにスロットル状態のコアが存在しなければ、現在アクティブ状態のコアがジョブを完了しても、最適コア数を保持するために、パワーをオフせず、アクティブ状態に保持させ、残っているジョブを新たに割り当てて処理させうる。
【００５２】
図４は、本発明の一実施形態によるマルチコア装置のジョブスケジューリング方法のフローチャートである。図４は、図１の実施形態によるマルチコア装置１でジョブスケジューラ１０によって行われるジョブスケジューリング方法の一例である。
【００５３】
図４を参照すれば、ジョブスケジューラは、マルチコア装置を構成する１つ以上のコアのそれぞれから受信される状態情報に基づいて、１つ以上のコアをスロットル状態に変更する（段階４１０）。ジョブスケジューラは、最適コア数が決定されるまで毎サイクルごとに段階的にコアをスロットル状態に変更することができる。
【００５４】
次いで、ジョブスケジューラは、コアの状態がスロットル状態に変更されれば、その状態変更結果に基づいて、マルチコア装置のエネルギー消耗を最小化する最適コア数を決定する（段階４２０）。
【００５５】
次いで、現在アクティブ状態のコアのジョブ処理結果に基づいて、最適コア数が保持されるように、マルチコア装置を構成する１つ以上のコアのパワーを調節する（段階４３０）。前述したように、ジョブスケジューラは、ジョブをいずれも完了したアクティブ状態のコアをオフ状態に変更し、パワーをゲーティングする。また、決定された最適コア数を引き続きアクティブ状態に保持するために、スロットル状態のコアをアクティブ状態に変更して、ジョブを処理させうる。
【００５６】
図５は、本発明の一実施形態によるジョブスケジューリング方法でコアの状態変更及び最適コア数を決定する段階の詳細フローチャートである。図５の実施形態は、例えば、図１のジョブスケジューラ１０によって行われる。
【００５７】
図５を参照して、さらに具体的に、ジョブスケジューラがコアの状態を変更し、最適コア数を決定する手続きの一例を説明すれば、ジョブスケジューラは、コアのうちからあるコアから受信された状態情報が、そのコアをスロットル状態に変更させるものであるか否かを判断し（段階５１０）、状態情報が、そのコアの状態をスロットル状態に変更させるものであれば、そのコアの状態をスロットル状態に変更する（段階５２０）。
【００５８】
次いで、現在サイクルと既定のモニタリングサイクルとを比較して、現在サイクルが、既定のモニタリングサイクルよりも大きいかを判断し（段階５３０）、現在サイクルが、既定のモニタリングサイクルよりもさらに大きければ、現在サイクルにスロットル状態に変更されず、残っているアクティブ状態のコア数を最適コア数に決定する（段階５４０）。もし、段階５４０で、現在サイクルが、既定のモニタリングサイクルよりも大きくなければ、現在アクティブ状態のコア数とメモリ（例：ＤＲＡＭ）のチャネル数とを比較して、同じであるかを判断する（段階５５０）。現在アクティブ状態のコア数とメモリチャネル数とが同じであれば、現在アクティブ状態のコア数を最適コア数に決定し（段階５４０）、同一ではなければ、サイクルを１増加して、次のサイクルに進行する（段階５６０）。
【００５９】
ジョブスケジューラは、最適コア数が決定されれば、引き続きサイクルは、その決定された最適コア数ほどの現在アクティブ状態のコアを通じてジョブを処理する。
【００６０】
図６は、本発明の一実施形態によるジョブスケジューリング方法でパワーを調節する段階の詳細フローチャートである。図６は、例えば、図１のジョブスケジューラ１０によって行われる一実施形態であり得る。
【００６１】
図６を参照して、さらに具体的に、ジョブスケジューラが、コアのパワーを調節する手続きの一例を説明すれば、ジョブスケジューラは、現在サイクルにスロットル状態のコアの存否を確認する（段階６１０）。ジョブスケジューラは、スロットル状態のコアが存在すれば、現在アクティブ状態のコアのうちから何れか１つが割り当てられたあらゆるジョブを仕上げるまで待機し、あらゆるジョブを完了したアクティブ状態のコアが発生すれば、そのコアの状態をオフ状態に変更する（段階６２０）。
【００６２】
次いで、オフ状態に変更されたコアのパワーをゲーティングし（段階６３０）、最適コア数が保持されるように、スロットル状態のコアのうちから必要数のコアをアクティブ状態に変更し、ジョブを処理する（段階６４０）。
【００６３】
もし、段階６１０で、現在スロットル状態のコアが存在しなければ、処理するジョブの存否を確認し（段階６５０）、存在しなければ、手続きを終了する。確認の結果（段階６５０）、処理するジョブがさらに存在すれば、現在アクティブ状態のコアがジョブを完了しても、アクティブ状態を保持し続け、そのコアに処理するジョブを割り当てられる（段階６６０）。
【００６４】
図７は、本発明の一実施形態によるマルチコア装置で、各コアの状態変更及びパワーゲーティング過程を示す図面である。
【００６５】
マルチコア装置は、５つのコアＣ０〜Ｃ５で構成され、（ａ）段階では、あらゆるコアＣ０〜Ｃ５にジョブが割り当てられて、アクティブ状態（ＡＣＴ）になる。以後、（ｂ）段階では、コアＣ５の状態をスロットル状態（ＴＨＲ）に変更し、以後、最適のアクティブ状態のコア数が決定されるまで段階的にコアの状態を変更する。（ｃ）段階で、コアＣ２、Ｃ３、及びＣ４の状態が、スロットル状態に変更され、コアＣ０及びＣ１の状態が、アクティブ状態のコアで残っている状態で最適コア数が２に決定される。引き続き（ｄ）段階では、コアＣ１のあらゆるジョブが完了して、オフ状態に変更され、パワーがオフになり、スロットル状態のＣ２が、アクティブ状態に変更されて、ジョブを処理する。次いで、（ｅ）段階では、コアＣ０及びＣ２のあらゆるジョブが完了して、オフ状態になり、パワーがオフになり、コアＣ３とＣ４との状態が、アクティブ状態になる。
【００６６】
図８は、ジョブスケジューリング方式による性能の比較結果を示す図面である。図８の（ａ）は、一般的なＧＰＵ方式によるＩＰＣ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｐｅｒ  Ｃｙｃｌｅ）及び性能を示したものであり、図８の（ｂ）は、一実施形態によるＩＰＣ及び性能を示したものであり、図８の（ｃ）は、一般的なパワーゲーティングを行う方式のＩＰＣ及び性能を示したものである。
【００６７】
示したように、図８の（ａ）の一般的なＧＰＵ方式では、あらゆるサイクルで全体のコアが引き続き動作を行うことによって、動的パワー及び静的パワーを消耗し続ける。また、図８の（ｃ）の一般的なパワーゲーティングを行う方式では、基本的に全体コアが引き続き動作を行うために、先にあらゆるジョブを完了したコア０〜２０がパワーゲーティングされる時までは、あらゆるコアがパワーを消耗し続ける。しかし、図８の（ｂ）のように、本実施形態によるマルチコア装置では、毎サイクルごとに最小のエネルギー消耗をもたらしうる最適コア数ほどを常にアクティブ状態に保持して、ジョブを処理させ、残りは、スロットル状態及びパワーゲーティング状態に保持することによって、毎サイクルごとに最小限のエネルギーのみが消耗する。
【００６８】
開示されたマルチコア装置の実施形態は、デスクトップＧＰＵまたはモバイルアプリケーションプロセッサに具現可能である。
【００６９】
また、本実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【００７０】
コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、また、キャリアウェーブ（例えば、インターネットを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本実施形態を具現するための機能的な（ｆｕｎｃｔｉｏｎａｌ）プログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
【００７１】
当業者ならば、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施可能であることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解せねばならない。
【産業上の利用可能性】
【００７２】
本発明は、マルチコア装置及びマルチコア装置のジョブスケジューリング方法関連の技術分野に適用可能である。
【符号の説明】
【００７３】
１    マルチコア装置
１０、２０  ジョブスケジューラ
１１、３０  コア
１２  メモリ
１３  ネットワーク
３１  フロントエンド部
３２  実行部
３３  メモリアクセス部
３４  記録部
３５  アクティブサイクル計数部
３６  ストールサイクル計数部
３７  状態モニタリング部
【図１】
2014235746.tif 000003
【図２】
2014235746.tif 000004
【図３】
2014235746.tif 000005
【図４】
2014235746.tif 000006
【図５】
2014235746.tif 000007
【図６】
2014235746.tif 000008
【図７】
2014235746.tif 000009
【図８】
2014235746.tif 000010