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

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

Info

Publication number
JP5541355B2
JP5541355B2 JP2012505399A JP2012505399A JP5541355B2 JP 5541355 B2 JP5541355 B2 JP 5541355B2 JP 2012505399 A JP2012505399 A JP 2012505399A JP 2012505399 A JP2012505399 A JP 2012505399A JP 5541355 B2 JP5541355 B2 JP 5541355B2
Authority
JP
Japan
Prior art keywords
core
cores
access
ratio
shared memory
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
JP2012505399A
Other languages
English (en)
Other versions
JPWO2011114496A1 (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 JPWO2011114496A1 publication Critical patent/JPWO2011114496A1/ja
Application granted granted Critical
Publication of JP5541355B2 publication Critical patent/JP5541355B2/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Description

本発明は、調停回路を制御するマルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムに関する。
従来から、コンピュータシステムに複数のCPU(Central Processing Unit)を搭載するマルチコアプロセッサシステムの技術が開示されている。マルチコアプロセッサシステムでは、OS(Operating System)の機能により、複数のソフトウェアを複数のCPUに割り当てることで、処理を並列化することができる。
マルチコアプロセッサシステムでの資源制御方法として、特定の処理の履歴負荷特性による統計情報を用いて、CPUの計算能力を動的に増減することで、計算密度の低いコンテンツの電力消費を低減するという技術が開示されている(たとえば、下記特許文献1を参照。)。また、ハードウェアパフォーマンスカウンタを取り付けて動的に負荷量を解析し、あらかじめ設定されたパフォーマンスに満たない場合に、必要なハードウェアリソースを増強するという技術が開示されている(たとえば、下記特許文献2を参照。)。
また、マルチコアプロセッサシステムでは、複数のコアが共用メモリに同時にアクセスすることで、アクセス競合が発生し、パフォーマンスが低下する。メモリのアクセス競合が発生した際に、メモリにアクセスする頻度が少ないCPUに対して低速なクロックを与えることで、メモリにアクセスする頻度が多いCPUのスループットを向上させるという技術が開示されている(たとえば、下記特許文献3を参照。)。
特表2009−501482号公報 特表2009−521056号公報 特開平11−110363号公報
しかしながら、上述した従来技術において、特許文献1にかかる技術では、利用者によって任意の操作が行われるような機器では、統計値がとれないという問題があった。たとえば、利用者によって、複数のアプリケーションが任意のタイミングで起動されるシステムである場合、アプリケーションの組合せが膨大となり、統計情報の保存が非現実的になるという問題があった。
また、特許文献2にかかる技術では、メモリのアクセス競合が発生した場合には、遅延しているCPUのクロックをあげるか、メモリのクロックをあげることで対応することになる。前述の対応方法では、消費電力が増大するだけでなく、クロックをあげただけでは、メモリのアクセス競合のパフォーマンス問題を解決できないという問題があった。また、大規模なSoC(System on a Chip)である場合、パフォーマンスカウンタをどこに配置するか判断するのが難しいという問題があった。一方で、各CPUやバスなどの、考えられる箇所すべてにパフォーマンスカウンタを配置すると、システム規模が増大するという問題があった。
また、特許文献3にかかる技術では、メモリにアクセスする頻度が少ないCPUを低速にすることにより、キャッシュメモリ上の空間で動作している、低速にする必要がないアプリケーションまで影響を受けてしまうという問題があった。
また、非対称型のマルチコアプロセッサシステムである、ヘテロジニアス・マルチコアでは、非対称型の特性により各CPUの負荷がアンバランスとなり、CPU資源の活用に無駄が生じているという問題があった。
本発明は、上述した従来技術による問題点を解消するため、各CPUの負荷をバランスよく分散するように是正し、CPU資源を有効に活用できるマルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、複数のコアと、コアによってアクセスされる共用メモリと、複数のコアによる共用メモリへのアクセス権の競合を調停する調停回路と、を備えたマルチコアプロセッサシステムであって、共用メモリへのアクセス速度のコアごとの実測値を取得し、取得されたアクセス速度の実測値とコアのアクセス速度の理論値とからコアの応答性能をコアごとに算出し、算出されたコアごとの応答性能に基づいて、コアのアクセス権の比率がコアの応答性能より高いコアのアクセス権の比率より大きくなるように、複数のコアによる共用メモリへのアクセス権の比率を算出し、算出された複数のコアによる共用メモリへのアクセス権の比率を調停回路に通知することを要件とする。
本マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムによれば、各CPUの負荷をバランスよく分散するように是正し、CPU資源を有効に活用することができるという効果を奏する。
実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。 マルチコアプロセッサシステム100のハードウェアの一部の構成とソフトウェア構成を示すブロック図である。 マルチコアプロセッサシステム100の機能的構成を示すブロック図である。 プロファイル情報テーブル301の記憶内容の一例を示す説明図である。 マルチコアプロセッサシステム100でのスレッドの起動開始時点の状態を示す説明図である。 各CPUによって共用メモリ203へのアクセス競合が発生した状態を示す説明図である。 ソフトウェアの処理性能に関して異常を検出した状態を示す説明図である。 負荷是正調停後の状態を示す説明図である。 負荷是正前後の応答性能の変化を示す説明図である。 調停回路制御処理のフローチャート(その1)である。 調停回路制御処理のフローチャート(その2)である。 性能乖離判断処理のフローチャートである。 応答性能計測処理のフローチャートである。 負荷状態判定処理のフローチャートである。 性能劣化原因判断処理のフローチャートである。 負荷是正処理のフローチャートである。
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステムのハードウェア構成)
図1は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。図1において、マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs101と、ROM(Read‐Only Memory)102と、RAM(Random Access Memory)103と、を備えている。また、マルチコアプロセッサシステム100は、フラッシュROM104と、フラッシュROMコントローラ105と、フラッシュROM106と、を備えている。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ107と、I/F(Interface)108と、キーボード109と、を備えている。また、各構成部はバス110によってそれぞれ接続されている。
ここで、CPUs101は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs101は、シングルコアのプロセッサを並列して接続したすべてのCPUを指している。CPUs101の詳細は、図2にて後述する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるCPUが並列されており、さらに、各CPUの性能が異なる、ヘテロジニアス・マルチコアを例にあげて説明する。
ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPUs101のワークエリアとして使用される。フラッシュROM104は、OSなどのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F108によって新しいOSを受信し、フラッシュROM104に格納されている古いOSを、受信した新しいOSに更新する。
フラッシュROMコントローラ105は、CPUs101の制御に従ってフラッシュROM106に対するデータのリード/ライトを制御する。フラッシュROM106は、フラッシュROMコントローラ105の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F108を通して取得した画像データ、映像データなどである。フラッシュROM106は、たとえば、メモリカード、SDカードなどを採用することができる。
ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ107は、たとえば、TFT液晶ディスプレイなどを採用することができる。
I/F108は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク111に接続され、ネットワーク111を介して他の装置に接続される。そして、I/F108は、ネットワーク111と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F108には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード109は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード109は、タッチパネル式の入力パッドやテンキーなどであってもよい。
図2は、マルチコアプロセッサシステム100のハードウェアの一部の構成とソフトウェア構成を示すブロック図である。領域201に属するブロック図はハードウェアの構成を示しており、領域202に属するブロック図はソフトウェアの構成を示している。図2で示されるハードウェアは、共用メモリ203と、調停回路204と、CPUs101に含まれるS−CPU群205およびL−CPU群206と、である。調停回路204とS−CPU群205とL−CPU群206は、バス110によって接続されている。
共用メモリ203は、S−CPU群205とL−CPU群206に属するCPUからアクセス可能な記憶領域である。記憶領域とは、具体的には、たとえば、ROM102、RAM103、フラッシュROM104である。
調停回路204は、S−CPU群205とL−CPU群206に属するCPUによる共用メモリ203へのアクセスを制御する。調停回路204は、CPUが共用メモリ203にアクセス要求を行った際に、他のCPUが共用メモリ203にアクセス中の場合、アクセス要求を行ったCPUを待機させる。他のCPUが共用メモリ203にアクセス中でない場合、調停回路204はアクセス要求を行ったCPUにアクセス許可を発行する。また、調停回路204は、リクエストを管理するバッファが用意されており、CPUごとにアクセスの比率を設定する。
S−CPU群205は、性能の低いCPUの集合であり、CPUS#1、CPUS#2、・・・、CPUS#Mで構成する。L−CPU群206は、性能の高いCPUの集合であり、CPUL#1、CPUL#2、・・・、CPUL#Nで構成する。本実施の形態にかかるマルチコアプロセッサシステム100では、2種類の性能が異なるCPU群で構成するが、3種類以上の性能が異なるCPU群で構成してもよい。各CPUはローカルキャッシュメモリを搭載する。各CPUは、ローカルキャッシュメモリにアクセスして演算処理を実行するほか、ローカルキャッシュメモリに記憶されていないデータを必要とする際には、共用メモリ203にアクセスする。
図2で示されるソフトウェアは、AMP(Asymmetric Multiple Processor)ハイパーバイザ207と、SMP(Symmetric Multiple Processor) OS214−1とSMP OS214−2と、スレッド216−1〜スレッド216−4と、プロファイル情報217−1〜プロファイル情報217−4とである。ハイパーバイザとは、ハードウェア上で直接動作するプログラムである。ハイパーバイザは、CPU内のレジスタを直接参照したり、CPU内のレジスタの情報を読み出したり、CPU内のI/O操作を行うような特殊なレジスタの情報を書き換えたりする特権命令を実行することができる。また、ハイパーバイザは、一般のプログラムでは操作できないCPUのキャッシュ制御を行い、一般のプログラムでは読み書きできないメモリ上の空間を用いて動作する。また、ハイパーバイザは、OSとCPUの間にて位置し、前述の特徴によって、OSの監視を行い、OSがハングアップした際にリセットをするほか、OSが何もスレッドを実行していない場合に、省電力設定にする。
AMPハイパーバイザ207は、CPUごとに異なる機能を持つハイパーバイザの集合である。AMPハイパーバイザ207は、S−CPUSMPハイパーバイザ208とL−CPUSMPハイパーバイザ209で構成する。
S−CPUSMPハイパーバイザ208は、S−CPU群205に属するCPUで実行されるハイパーバイザの集合である。S−CPUSMPハイパーバイザ208に属するハイパーバイザは、S−CPUSMPハイパーバイザ208に属するハイパーバイザ間にてハイパーバイザ間通信218を行う。また、S−CPUSMPハイパーバイザ208に属するハイパーバイザは、共用メモリ203へのアクセス221を調停回路204に関して行い、アクセス速度を計測することで、実測値を取得する。
また、本実施の形態では、CPUS#1はS−CPUハイパーバイザ210を実行する。CPUS#2はS−CPUSMPハイパーバイザ208内の他のハイパーバイザを制御するS−CPUハイパーバイザマスタ211を実行する。S−CPUハイパーバイザマスタ211の機能は、S−CPUハイパーバイザ210が持つ機能に加えて、L−CPUSMPハイパーバイザ209とハイパーバイザ間通信219を行う。また、S−CPUハイパーバイザマスタ211は、SMP OS214−1のスケジューラ215−1と情報通信223を行い、調停回路204に対してアクセス権の比率の通知224を行う。S−CPU群205に属するCPUS#1、CPUS#2以外のCPUも、S−CPUハイパーバイザを実行する。
L−CPUSMPハイパーバイザ209は、L−CPU群206に属するCPUで実行されるハイパーバイザの集合である。L−CPUSMPハイパーバイザ209に属するハイパーバイザは、L−CPUSMPハイパーバイザ209に属するハイパーバイザ間にてハイパーバイザ間通信220を行う。また、L−CPUSMPハイパーバイザ209に属するハイパーバイザは、共用メモリ203へのアクセス222を調停回路204に関して行い、アクセス速度を計測する。
また、本実施の形態では、CPUL#2はL−CPUハイパーバイザ213を実行する。CPUL#1はL−CPUSMPハイパーバイザ209内の他のハイパーバイザを制御するL−CPUハイパーバイザマスタ212を実行する。L−CPUハイパーバイザマスタ212の機能は、L−CPUハイパーバイザ213が持つ機能に加えて、S−CPUSMPハイパーバイザ208とハイパーバイザ間通信219を行う。また、L−CPUハイパーバイザマスタ212は、SMP OS214−2のスケジューラ215−2と情報通信225を行い、調停回路204に対してアクセス権の比率の通知226を行う。L−CPU群206に属するCPUL#1、CPUL#2以外のCPUも、S−CPUハイパーバイザを実行する。
SMP OS214−1とSMP OS214−2は、それぞれS−CPU群205とL−CPU群206上で実行されるOSである。SMP OS214−1とSMP OS214−2は、それぞれスケジューラ215−1、スケジューラ215−2の機能により、スレッド216−1〜スレッド216−4をCPUs101に割り当てる。本実施の形態では、スレッド216−1はCPUS#1に、スレッド216−2はCPUS#2に、スレッド216−3はCPUL#1に、スレッド216−4はCPUL#2に割り当てられる。
プロファイル情報217−1〜プロファイル情報217−4は、それぞれ、スレッド216−1〜スレッド216−4に対応したプロファイル情報である。プロファイル情報の詳細は、図4にて後述する。スケジューラ215−1、スケジューラ215−2はプロファイル情報を取得し、スレッド216−1〜スレッド216−4が本来の処理性能から乖離していないかを確認する。
(マルチコアプロセッサシステム100の機能的構成)
つぎに、マルチコアプロセッサシステム100の機能的構成について説明する。図3は、マルチコアプロセッサシステム100の機能的構成を示すブロック図である。マルチコアプロセッサシステム100は、検索部302と、検出部303と、取得部304と、応答性能算出部305と、集約部306と、特定部307と、応答性能ばらつき値算出部308と、判断部309と、アクセス比率算出部310と、通知部311と、を含む構成である。この制御部となる機能(検索部302〜通知部311)は、記憶装置に記憶されたプログラムをCPUs101が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、共用メモリ203などである。
また、マルチコアプロセッサシステム100は、ソフトウェア内で実行される所定の処理ごとに所定の処理が終了される予測時間を記憶するデータベースとして、プロファイル情報テーブル301を共用メモリ203に保持する。プロファイル情報テーブル301の詳細は、図4にて後述する。
また、検索部302、検出部303は、SMP OS214−1、SMP OS214−2の機能に含まれる。同様に、取得部304〜通知部311は、AMPハイパーバイザ207の機能に含まれる。また、集約部306は、CPUS#2、CPUL#1の機能として図示されているが、どのCPUに存在してもよい。特定部307も同様である。また、本実施の形態では、特定部307によってCPUL#3が特定され、応答性能ばらつき値算出部308〜通知部311は、CPUL#3の機能として図示されている。特定部307によって他のCPUが特定されてもよく、その場合、応答性能ばらつき値算出部308〜通知部311は、特定されたCPUの機能となる。
検索部302は、プロファイル情報テーブル301から、コアに割り当てられたソフトウェアにて実行中の処理に応じた予測時間を検索する機能を有する。コアとは、CPUs101に属するそれぞれのCPUである。具体的には、たとえば、CPUS#1にてUIスレッドが実行されている場合に、CPUS#1は、プロファイル情報テーブル301から、運用前実行時間tと、デッドライン時間Dを取得する。取得した時間tとDのうち、小さい値を予測時間としてもよいし、システム化によるオーバーヘッドτを考慮し、t・(1+τ)とDのうち、小さい値を予測時間としてもよい。なお、検索された予測時間は、共用メモリ203などの記憶領域に記憶される。
検出部303は、コアに割り当てられたソフトウェアの実行中の処理を検索部302によって検索された予測時間内に終了しないソフトウェアをコアごとに検出する機能を有する。具体的には、たとえば、CPUS#2にてウィンドウ制御スレッドが割り当てられた場合、ウィンドウ制御スレッド内の描画更新処理が、t・(1+τ)時間、または、D時間経過しても終了しないことを検出する。なお、検出された結果は、AMPハイパーバイザ207に通知されるほか、共用メモリ203などの記憶領域に記憶されてもよい。
取得部304は、共用メモリ203へのアクセス速度のコアごとの実測値を取得する機能を有する。また、取得部304は、検出部303によって、予測時間内に終了しないソフトウェア検出された場合に、実測値を取得してもよい。具体的には、たとえば、CPUS#1は、共用メモリ203へアクセスし、Read/Writeにかかった時間から、アクセス速度を計測することで、実測値を取得する。なお、取得された実測値は、各CPUのレジスタ、または、キャッシュメモリに記憶される。
応答性能算出部305は、取得部304によって取得されたアクセス速度の実測値とコアのアクセス速度の理論値とからコアの応答性能をコアごとに算出する機能を有する。応答性能とは、応答性能劣化比Rであり、応答性能劣化比Rは、実測値/理論値で求められる。また、応答性能劣化比Rでの計算における分子分母を逆にして応答性能を表してもよい。アクセス速度の理論値とは、負荷がかかっていない状態での、CPUによる共用メモリ203のアクセス速度となる。また、応答性能算出部305は、ハイパーバイザから取得できる発行命令カウンタと動作クロックの比率を応答性能としてもよい。
具体的には、たとえば、理論値が100[Mbps]であり、実測値が20[Mbps]である場合、応答性能劣化比Rは、20/100=0.2となる。なお、算出された応答性能劣化比Rは、各CPUのレジスタ、または、キャッシュメモリに記憶される。
集約部306は、応答性能算出部305によって算出された応答性能を集約する機能を有する。具体的には、たとえば、CPUS#2の集約部306は、S−CPUSMPハイパーバイザ208内にて算出された応答性能劣化比Rを集約する。同様に、CPUL#1の集約部306は、AMPハイパーバイザ207内にて算出された応答性能劣化比Rを集約する。具体的な集約方法の例として、各ハイパーバイザによって応答性能劣化比Rがレジスタ、またはキャッシュメモリに書き込まれたことを一定周期で確認し、すべてのハイパーバイザが書き込みを終えた段階で、集約したとする。
特定部307は、応答性能算出部305によって算出されたコアごとの応答性能に基づいて、複数のコアのうち応答性能が最も大きいコアを、最も負荷の低いコアとして特定する機能を有する。具体的には、たとえば、応答性能劣化比Rが、CPUS#1:CPUS#2:CPUL#1:CPUL#2:CPUL#3=0.2:0.3:0.8:0.9:1.0となった場合に、CPUL#3を最も負荷の低いCPUとして特定する。なお、特定されたCPUの情報は、各CPUのレジスタ、または、キャッシュメモリに記憶される。
応答性能ばらつき値算出部308は、応答性能算出部305によって算出されたコアごとの応答性能に基づいて、コアごとの応答性能のばらつき値を算出する機能を有する。応答性能のばらつき値とは、たとえば、標準偏差であってもよいし、四分位範囲、平均差、平均偏差等の他の統計的ばらつき値を使用してもよい。また、応答性能ばらつき値算出部308は、特定部307によって最も負荷の低いCPUとして特定されたCPUにより、応答性能のばらつき値を算出してもよい。
具体的には、たとえば、応答性能のばらつき値として標準偏差を使用する場合を想定する。前述の例として応答性能劣化比Rが、CPUS#1:CPUS#2:CPUL#1:CPUL#2:CPUL#3=0.2:0.3:0.8:0.9:1.0である場合は、標準偏差σは、約0.326として算出される。なお、算出された応答性能のばらつき値は、応答性能ばらつき値算出部308を実行したCPUのレジスタ、または、キャッシュメモリに記憶される。
判断部309は、応答性能ばらつき値算出部308によって算出された応答性能のばらつき値が所定の値より大きいか否かを判断する機能を有する。所定の値は、たとえば誤差Δであり、数値としては0.1等である。また、判断部309は、応答性能算出部305によって算出されたコアごとの応答性能のうち、少なくとも1つのコアの応答性能が所定の閾値以上であるかを判断してもよい。また、判断部309は、特定部307によって最も負荷の低いCPUとして特定されたCPUにより、判断を行ってもよい。
具体的には、たとえば、応答性能のばらつき値σ=0.326であり誤差Δ=0.1であれば、CPUL#3は、応答性能のばらつき値σが誤差Δより大きいと判断する。なお、判断結果は、判断部309を実行したCPUのレジスタ、または、キャッシュメモリに記憶される。
アクセス比率算出部310は、応答性能算出部305によって算出されたコアごとの応答性能に基づいて、複数のコアによる共用メモリ203へのアクセス権の比率を算出する機能を有する。さらに、アクセス比率算出部310は、あるコアのアクセス権の比率があるコアの応答性能より高いコアのアクセス権の比率より大きくなるように算出する。
また、アクセス比率算出部310は、判断部309によって応答性能のばらつき値が所定の値より大きいと判断された場合に、アクセス権の比率を算出してもよい。また、アクセス比率算出部310は、判断部309によってコアごとの応答性能のうち、少なくとも1つのコアの応答性能が所定の閾値以上であると判断された場合に、アクセス権の比率を算出してもよい。また、アクセス比率算出部310は、特定部307によって最も負荷の低いCPUとして特定されたCPUにより、アクセス権の比率を算出してもよい。
算出方法の一つとしては、CPU1、CPU2、・・・、CPUcntの応答性能劣化比Rを、R1、R2、・・・、Rcntとし、CPUがCNT個あるとすると、各CPUのアクセス権の比率を以下の(1)式のように求めてもよい。
CPU1:・・・:CPUcnt=((ΣRn)−R1)/((CNT−1)・(ΣRn)):・・・:((ΣRn)−Rcnt)/((CNT−1)・(ΣRn)) ・・・(1)
ΣRnは、CPU1、CPU2、・・・、CPUcntの応答性能劣化比Rの総和である。式(1)での(CNT−1)にて除算を行っているが、除算を行うことにより、CPU1〜CPUcntのアクセス権の比率の合計を1にすることができる。合計を1にする必要がない場合、(CNT−1)とΣRnで除算を行わなくてもよい。また、他の算出方法としては、以下の(2)式でもよい。
CPU1:・・・:CPUcnt=1/R1:・・・:1/Rcnt=ΠRn/R1:・・・:ΠRn/Rcnt ・・・(2)
ΠRnは、CPU1、CPU2、・・・、CPUcntの応答性能劣化比Rの総積である。また、(1)式または(2)式にて、特定のCPUに重み付けを行ってもよい。たとえば、(1)式または(2)式でアクセス権の比率を算出した後、S−CPUハイパーバイザマスタ211とCPUハイパーバイザマスタ212を実行するCPUS#2、CPUL#1に1以上の係数をかけてもよい。これにより、マルチコアプロセッサシステム100のCPUの負荷のバランスを是正しつつ、特定のCPUを優先することができる。
具体的には、たとえば、CPUS#1、CPUS#2、CPUL#1の応答性能劣化比Rが、それぞれ、RS#1=0.3、RS#2=0.2、RL#1=0.67であった場合を想定する。このとき、CPUL#3は、CPUS#1、CPUS#2、CPUL#1のアクセス権の比率を、(1)式から0.41:0.37:0.21として算出する。なお、算出されたアクセス権の比率は、アクセス比率算出部310を実行したCPUのレジスタ、または、キャッシュメモリに記憶される。
通知部311は、アクセス比率算出部310によって算出された複数のコアによる共用メモリ203へのアクセス権の比率を調停回路204に通知する機能を有する。また、通知部311は、特定部307によって最も負荷の低いCPUとして特定されたCPUにより、アクセス権の比率を通知してもよい。具体的には、たとえば、CPUS#1、CPUS#2、CPUL#1のアクセス権の比率が、0.41:0.37:0.21である場合、CPUL#3は、調停回路204のレジスタに前述の比率を設定する。また、調停回路204のレジスタに整数にて設定する場合、CPUL#3は、アクセス権の比率を、29:26:15で通知する。
図4は、プロファイル情報テーブル301の記憶内容の一例を示す説明図である。プロファイル情報テーブル301は、スレッド名称、処理内容、運用前実行時間t、デッドライン時間Dという4つのフィールドで構成する。スレッド名称フィールドは、処理の名称を格納する。具体的には、スレッドの開始アドレスが設定されており、CPUは、スレッドの開始アドレスを参照して処理を実行する。
処理内容フィールドは、スレッド内の共用メモリ203にアクセスする処理を格納する。一つのスレッドに共用メモリ203にアクセスする処理が複数あれば、複数の処理をプロファイル情報テーブル301に登録してもよい。運用前実行時間tフィールドは、アクセス競合が発生していない状態で、処理内容フィールドに格納された処理内容を実行した際に消費した時間を格納する。デッドライン時間Dフィールドは、処理内容フィールドに格納された処理内容を実行する際に収容時間が決定している場合に、終了時間を格納する。
具体的には、たとえば、UIスレッドは、処理内容としてはUI応答処理がある。UI応答処理の例としては、カーソル移動によるカーソル画像の更新処理である。UI応答処理を負荷のない時点でCPUが行い、1[ミリ秒]で処理が終了した場合、運用前実行時間tフィールドは1[ミリ秒]に設定する。また、UI応答処理の仕様として10[ミリ秒]以内に終了する必要がある場合に、デッドライン時間Dフィールドは10[ミリ秒]となる。
同様に、ウィンドウ制御スレッドは、処理内容として、描画更新処理がある。描画更新処理の例としては、ウィンドウ画面サイズの画像データの更新処理である。ウィンドウ制御スレッドに関しても計測を行い、運用前実行時間tフィールドを14[ミリ秒]に設定する。ウィンドウ制御スレッドの仕様として60[fps](Frame Per Second)で更新する必要があれば、1回の描画更新処理における許容時間は、1/60≒16[ミリ秒]である。したがって、デッドライン時間Dフィールドは16[ミリ秒]となる。
同様に、動画再生スレッドは、処理内容として、フレーム処理がある。フレーム処理の例としては、動画1フレーム分の画像データの更新処理である。動画再生スレッドに関しても計測を行い、運用前実行時間tフィールドを12[ミリ秒]に設定する。動画再生スレッドの仕様として、たとえば、動画を30[fps]で再生する必要がある場合には、1回のフレーム処理における許容時間は、1/30≒33[ミリ秒]である。したがって、デッドライン時間Dフィールドは33[ミリ秒]となる。
同様に、Webブラウザスレッドは、処理内容として、コンテンツ処理がある。コンテンツ処理の例としては、コンテンツ画面の更新処理である。Webブラウザスレッドに関しても計測を行い、運用前実行時間tフィールドを50[ミリ秒]に設定する。Webブラウザスレッドの終了時間に関して仕様が特にない場合、デッドライン時間Dフィールドは時間制約なしとなる。
図5〜図8では、マルチコアプロセッサシステム100にて、スレッド起動から各CPUにより共用メモリ203への競合状態となり、ソフトウェアの処理性能に関して異常を検出した後に負荷是正を行い、負荷の不均衡を是正する、といった一連の状態を示す。
図5は、マルチコアプロセッサシステム100でのスレッドの起動開始時点の状態を示す説明図である。図5では、スレッド216−1としてUIスレッド、スレッド216−2としてウィンドウ制御スレッド、スレッド216−4としてWebブラウザスレッドがそれぞれに割り当てられている状態とする。前述の状態で、マルチコアプロセッサシステム100は、UIスレッドによって動画再生スレッドが呼び出され、スケジューラ215−1、スケジューラ215−2によってスレッド216−3として動画処理が割り当てられる。
また、各スレッドのプロファイル情報はプロファイル情報テーブル301から検索されることで取得する。具体的には、UIスレッドに対応するプロファイル情報217−1は、処理内容がUI応答処理で、予測時間が10[ミリ秒]とする。同様に、ウィンドウ制御スレッドに対応するプロファイル情報217−2は、処理内容が描画更新処理であり、仕様である60[fps]から、予測時間を16[ミリ秒]とする。動画再生スレッドに対応するプロファイル情報217−3は、処理内容がフレーム処理であり、仕様である30[fps]から、予測時間を33[ミリ秒]とする。Webブラウザスレッドに対応するプロファイル情報217−4は、処理内容がコンテンツ処理となる。終了時間の制約については特になしとする。
図6は、各CPUによって共用メモリ203へのアクセス競合が発生した状態を示す説明図である。CPUS#2で実行されているウィンドウ制御スレッドは、スムースな描画を実現するために、60[fps]という高フレームレートで描画を繰り返している。一方、CPUL#1で実行されている動画再生スレッドは、I/Oは少ないものの、性能の高いCPUで実行されているために、共用メモリ203へのアクセス権を獲得しやすい状態である。
したがって、ウィンドウ制御スレッドのアクセス量601は、動画再生スレッドのアクセス量602と比較して多いにもかかわらず、共用メモリ203へのアクセス権は、動画再生スレッドの方が獲得しやすい状態となっている。
図7は、ソフトウェアの処理性能に関して異常を検出した状態を示す説明図である。SMP OS214−1と、SMP OS214−2は、各スレッドの処理性能がプロファイル情報に記載されている処理性能から乖離しているか否かを検出する。図6の段階で、ウィンドウ制御スレッドのアクセス量601が多いにもかかわらず、共用メモリ203へのアクセス権を獲得しづらい状態であったため、ウィンドウ制御スレッドの処理性能は、劣化する。そして、ウィンドウ制御スレッドの描画更新処理が、プロファイル情報である60[fps]、描画更新処理の予測時間である16[ミリ秒]以内に処理を終了しないとなった場合に、SMP OS214−1は異常として検出する。
異常を検出後、SMP OS214−1は、AMPハイパーバイザ207に異常が検出されたことを通知する。AMPハイパーバイザ207内では、S−CPUハイパーバイザマスタ211とL−CPUハイパーバイザマスタ212が情報を通知し、負荷是正を行うか否かを判断する。
図8は、負荷是正調停後の状態を示す説明図である。図8では、AMPハイパーバイザ207内にて、共用メモリ203へのアクセス権の比率を変更することで負荷是正を行うと判断された状態である。具体的には、CPUS#2が、S−CPUハイパーバイザマスタ211の機能により調停回路204に対して、アクセス権の比率を、たとえば、CPUS#2:CPUL#1=2:1にするよう設定する。設定した結果、CPUS#2は、共用メモリ203へのアクセス権を獲得しやすくなるため、高負荷であったCPUS#2の負荷を低減し、マルチコアプロセッサシステム100の各CPUの負荷をバランスよくすることができる。また、ウィンドウ制御スレッドの処理性能を改善し、処理性能の仕様を準拠することができる。
また、図8のアクセス権の比率の設定の結果、CPUL#1にて実行中である動画再生スレッドの性能が劣化した場合には、図7で示すように、SMP OS214−2にて異常を検出し、AMPハイパーバイザ207によってアクセス権の比率の設定が行われる。
図9は、負荷是正前後の応答性能の変化を示す説明図である。符号901で示す表は、各CPUの応答性能の一例を示している。CPUS#1、CPUS#2、CPUL#1のピーク応答性能pは、それぞれ100[Mbps]、100[Mbps]、150[Mbps]である。同様に、測定応答性能rは、それぞれ、20[Mbps]、30[Mbps]、100[Mbps]である。また、調停回路204の転送能力を、150[Mbps]とする。この状態で、共用メモリ203へのアクセス権の比率を算出する。
符号902で示すブロック図にて、調停前と調停後の応答性能劣化比Rを示す。CPUS#1、CPUS#2、CPUL#1の応答性能劣化比Rは、それぞれ、RS#1=20/100、RS#2=30/100、RL#1=100/150と求められる。
CPUS#1による調停回路204へのアクセス権の比率は、式(1)より以下のように求められる。
((30/100)+(100/150))/((3−1)・((20/100)+(30/100)+(100/150)))=29/70≒0.41
同様に、CPUS#2のアクセス権の比率は、以下のように求められる。
((20/100)+(100/150))/((3−1)・((20/100)+(30/100)+(100/150)))=13/35≒0.37
同様に、CPUL#1のアクセス権の比率は、以下のように求められる。
((20/100)+(30/100))/((3−1)・((20/100)+(30/100)+(100/150)))=3/14≒0.21
したがって、CPUS#1、CPUS#2、CPUL#1による調停回路204のアクセス権の比率は、0.41:0.37:0.21となる。調停回路204のレジスタに設定する際に整数を設定する場合、アクセス権の比率は、29:26:15となる。この比率で、調停回路204の転送能力150[Mbps]を分配した場合、CPUS#1、CPUS#2、CPUL#1の測定応答性能劣化比Rは、以下のようになる。
CPUS#1:150×29/(29+26+15)≒62[Mbps]
CPUS#2:150×26/(29+26+15)≒56[Mbps]
CPUL#1:150×15/(29+26+15)≒32[Mbps]
したがって、調停後の各CPUの応答性能劣化比Rは、それぞれ、RS#1=62/100、RS#2=56/100、RL#1=32/150となる。
符号903で示すグラフは、調停前と調停後の応答性能劣化比Rの変化を示すグラフである。グラフにて示されるように、調停前の応答性能劣化比Rが小さいCPUほど、調停後の応答性能劣化比Rが大きくなり、CPUごとに偏った負荷を分散することができる。具体的には、調停前に応答性能劣化比Rが小さく、高負荷であったCPUS#1、CPUS#2の応答性能劣化比Rが上昇し、CPUS#1、CPUS#2の負荷が減少する。
図10A、図10Bは、調停回路制御処理のフローチャートである。調停回路制御処理は、大きく分けて4つの処理に分解できる。4つの処理とは、検出処理、計測処理、集約処理、負荷是正処理である。検出処理は、SMP OS214−1、SMP OS214−2を実行する各CPUで実行される。計測処理は、ハイパーバイザを実行する各CPUで実行される。集約処理は、S−CPUハイパーバイザマスタ211、L−CPUハイパーバイザマスタ212を実行するCPUで実行される。負荷是正処理は、負荷の最も低いCPUで実行される。
検出処理は、ステップS1001〜ステップS1010にて示される処理である。検出処理の機能は、実行中のスレッドの処理性能が低下したことを検出することである。ステップS1001〜ステップS1005は、S−CPU群205に属するすべてのCPUが実行する。ステップS1006〜ステップS1010は、L−CPU群206に属するすべてのCPUが実行する。ステップS1001〜ステップS1005に関して、本実施の形態では、S−CPU群205のうち、CPUS#2が検出処理を実行する場合を説明する。
CPUS#2は、性能乖離判断処理を実行する(ステップS1001)。性能乖離判断処理の詳細は、図11にて後述する。実行後、CPUS#2は、判断結果として、乖離が大かを判断する(ステップS1002)。乖離大と判断された場合(ステップS1002:Yes)、CPUS#2は、すべてのハイパーバイザへ乖離大となったスレッドが検出されたことを通知する(ステップS1003)。具体的には、たとえば、CPUS#2は、CPUS#1、CPUS#2、・・・、CPUS#Mと、CPUL#1、CPUL#2、・・・、CPUL#Nとで実行されているハイパーバイザに通知する。
乖離小であると判断された場合(ステップS1002:No)、CPUS#2は、通常負荷分散処理を実行する(ステップS1004)。通常負荷分散処理とは、スケジューラの機能によって負荷分散を行う処理である。具体的には、たとえば、スケジューラは、優先度の低いスレッドを退避し、CPUの負荷を低下させる。ステップS1003、ステップS1004の処理終了後、CPUS#2は、一定時間待機を行い(ステップS1005)、ステップS1001の処理に移行する。
続けて、L−CPU群206に属するすべてのCPUは、ステップS1006〜ステップS1010を実行する。ステップS1006〜ステップS1010の処理は、ステップS1001〜ステップS1005の処理と等しいため、説明は省略する。また、ステップS1008でも、CPUはすべてのハイパーバイザに通知する。具体的には、たとえば、CPUL#2は、CPUS#1、CPUS#2、・・・、CPUS#Mと、CPUL#1、CPUL#2、・・・、CPUL#Nとで実行されているハイパーバイザに通知する。
計測処理は、ステップS1021〜ステップS1028にて示される処理である。計測処理の機能は、CPUの応答性能を計測することである。計測処理は、検出処理から通知されることによって起動のトリガーを与えられ、各CPUがハイパーバイザの機能によって実行される。たとえば、CPUS#1は、S−CPUハイパーバイザ210の機能によって計測処理となるステップS1021、ステップS1022を実行する。
ステップS1003、またはステップS1008から通知を受けたCPUS#1は、応答性能計測処理を実行する(ステップS1021)。応答性能計測処理の詳細は、図12にて後述する。実行後、CPUS#1は、S−CPUハイパーバイザマスタ211へ応答性能劣化比Rを通知し(ステップS1022)、処理を終了する。ステップS1022の処理の具体例として、CPUS#1は、CPUL#2のレジスタまたはキャッシュメモリに、応答性能劣化比Rを書き込む。CPUS#1は、応答性能劣化比Rを計算せずに測定応答性能rとピーク応答性能pの2つの値を記述してもよい。
同様に、CPUS#2も、ステップS1023、ステップS1024を実行する。ステップS1023、ステップS1024の処理は、ステップS1021、ステップS1022の処理と等しいため、説明は省略する。
ステップS1003、またはステップS1008から通知を受けたCPUL#1もCPUS#1と同様に、応答性能計測処理を実行する(ステップS1025)。実行後、CPUL#1は、L−CPUハイパーバイザマスタ212へ応答性能劣化比Rを通知し(ステップS1026)、処理を終了する。同様に、CPUL#2も、ステップS1027、ステップS1028を実行する。ステップS1027、ステップS1028の処理は、ステップS1025、ステップS1026の処理と等しいため、説明は省略する。
集約処理は、ステップS1041〜ステップS1045にて示される処理である。集約処理の機能は、計測された応答性能劣化比Rを集約することである。集約処理は、計測処理から通知されることによって起動のトリガーを与えられ、CPUがハイパーバイザの機能によって実行される。具体的には、たとえば、CPUS#2は、S−CPUハイパーバイザマスタ211の機能によって集約処理となるステップS1041、ステップS1042を実行する。同様に、CPUL#1は、L−CPUハイパーバイザマスタ212の機能によって集約処理となるステップS1043〜ステップS1045を実行する。
ステップS1022、またはステップS1024から通知を受けたCPUS#2は、CPUS#1〜CPUS#Mの応答性能劣化比Rを集約する(ステップS1041)。ステップS1022の処理の具体例として、CPUS#2は、CPUS#1〜CPUS#Mの応答性能が書き込まれるレジスタ群、またはキャッシュメモリの値を0クリアする。その後、CPUS#2はすべての領域にそれぞれのCPUの応答性能劣化比Rが書き込まれているかを確認する。
すべての領域に応答性能劣化比Rが書き込まれていることを確認後、CPUS#2は、ステップS1041の処理を終える。応答性能劣化比Rを集約後、CPUS#2は、L−CPUハイパーバイザマスタ212へ集約が終えたことを通知し(ステップS1042)、処理を終了する。
同様に、ステップS1026、またはステップS1028から通知を受けたCPUL#1は、CPUL#1〜CPUL#Nの応答性能劣化比Rを集約する(ステップS1043)。ステップS1043終了後、CPUS#2から通知を受けたCPUL#1は、すべてのCPUの応答性能劣化比Rを集約する(ステップS1044)。集約後、CPUL#1は、最も応答性能劣化比Rが高いCPUを、最も負荷の低いCPUとして特定し(ステップS1045)、処理を終了する。特定されたCPUは、負荷是正処理を実行する。
負荷是正処理は、ステップS1061〜ステップS1066にて示される処理である。負荷是正処理の機能は、マルチコアプロセッサシステム100のCPUごとの負荷をバランスよく是正することである。負荷是正処理は、集約処理によって特定されたCPUのハイパーバイザの機能によって実行される。たとえば、CPUL#3が集約処理によって特定された場合、CPUL#3は、L−CPUハイパーバイザの機能によって負荷是正処理となるステップS1061〜ステップS1066を実行する。本実施の形態では、集約処理によって特定されたCPUは、CPUL#3であった場合を想定して説明を行う。
集約処理にて特定されたCPUL#3は、負荷状態判定処理を実行する(ステップS1061)。負荷状態判定処理の詳細は、図13にて後述する。処理終了後、CPUL#3は、負荷状態が均衡かを判断する(ステップS1062)。“均衡”であると判断された場合(ステップS1062:Yes)、CPUL#3は集約処理を終了する。“不均衡”であると判断された場合(ステップS1062:No)、CPUL#3は、性能劣化原因判断処理を実行する(ステップS1063)。性能劣化原因判断処理の詳細は、図14にて後述する。
処理終了後、CPUL#3は、性能劣化原因が“競合による性能劣化”かを判断する(ステップS1064)。“競合による性能劣化”であると判断された場合(ステップS1064:Yes)、CPUL#3は、負荷是正処理を実行し(ステップS1065)、負荷是正処理を終了する。負荷是正処理の詳細は、図15にて後述する。“高負荷による性能劣化”と判断された場合(ステップS1064:No)、CPUL#3は、OSスケジューラ操作を行い(ステップS1066)、負荷是正処理を終了する。
OSスケジューラ操作の具体例としては、SMP OS214−1、SMP OS214−2のスケジューラ215−1、スケジューラ215−2によって、各スレッドの退避処理等を行う。また、マルチコアプロセッサシステム100がユーザに問い合わせを行うことができるのであれば、SMP OS214−1、SMP OS214−2は、終了候補となるスレッドの一覧を表示し、ユーザに選択させてもよい。
図11は、性能乖離判断処理のフローチャートである。性能乖離判断処理はすべてのCPUによって実行されるが、本実施の形態では、CPUS#1によって実行される状態を例にあげて説明する。CPUS#1は、プロファイル情報テーブル301より、運用前実行時間t、デッドライン時間Dを取得する(ステップS1101)。続けて、CPUS#1は、運用中の実効時間Tを取得する(ステップS1102)。運用中の実効時間Tの取得方法の具体例として、各CPUで実行されているスレッドは、自身がどの程度時間を経過したかを取得しながら動作することができる。各CPUは、スレッドが取得した経過時間を運用中の実効時間Tとして取得する。
tとTを用いて、CPUS#1は、t・(1+τ)<Tとなるかを判断する(ステップS1103)。なお、τは、システム化によるオーバーヘッドであり、OS動作やシステムプロセスなどによる性能劣化分である。具体的なτの値は、0.1である。ステップS1103の不等式が成立しないと判断された場合(ステップS1103:No)、CPUS#1は続けて、D<Tとなるかを判断する(ステップS1104)。
ステップS1104の不等式が成立しないと判断された場合(ステップS1104:No)、CPUS#1は、判断結果を、“乖離小”として出力し(ステップS1106)、性能乖離判断処理を終了する。ステップS1103、または、ステップS1104の不等式のいずれかが成立したと判断された場合(ステップS1103:Yes、ステップS1104:Yes)、CPUS#1は、判断結果を、“乖離大”として出力し(ステップS1105)、性能乖離判断処理を終了する。
また、動画再生スレッドなどは、通常1フレームで処理が終わらず、共用メモリ203に存在するバッファ量に応じた処理を行う。したがって、CPUS#1は、バッファ量を考慮して性能が乖離したかを判断してもよい。たとえば、バッファ量が10フレーム分存在する場合、1フレーム分の処理にてCPUS#1が“乖離大”と判断しても、10フレーム分合計で予測時間の10倍の値を超えなければ、処理性能の仕様を準拠できる。この場合、CPUS#1は、“乖離小”として出力してもよい。
図12は、応答性能計測処理のフローチャートである。応答性能計測処理はすべてのCPUによって実行されるが、本実施の形態では、CPUS#1によって実行される状態を例にあげて説明する。CPUS#1は、共用メモリ203にアクセスし、応答時間から、測定応答性能rを計測する(ステップS1201)。計測後、CPUS#1は、応答性能劣化比R=r/pを算出し(ステップS1202)、応答性能計測処理を終了する。
図13は、負荷状態判定処理のフローチャートである。負荷状態判定処理は、集約処理にて特定されたCPUで実行されるため、どのCPUでも実行される可能性がある。ここでは、図10の例とあわせて、CPUL#3が負荷状態判定処理を実行する状態を想定する。
CPUL#3は、応答性能劣化比Rの平均値Rave=(1/CNT)×ΣRnを算出する(ステップS1301)。ここでCNTは、CPUs101の合計の個数であり、具体的には、CPUS#1〜CPUS#Mと、CPUL#1〜CPUL#Nの合計の個数である。ΣRnは、CPUS#1〜CPUS#Mと、CPUL#1〜CPUL#Nの応答性能劣化比Rの総和である。続けて、CPUL#3は、応答性能劣化比Rの標準偏差σを、σ=((1/CNT)×Σ(Rave−Rn)^2)^0.5にて算出する(ステップS1302)。
標準偏差σ算出後、CPUL#3は、σ>Δを判断する(ステップS1303)。Δは、所定の誤差である。σ>Δであると判断された場合(ステップS1303:Yes)、CPUL#3は、負荷状態を“不均衡”として出力し(ステップS1304)、負荷状態判定処理を終了する。σ>Δでないと判断された場合(ステップS1303:No)、CPUL#3は、負荷状態を“均衡”として出力し(ステップS1305)、負荷状態判定処理を終了する。
図14は、性能劣化原因判断処理のフローチャートである。性能劣化原因判断処理も図10の例とあわせて、CPUL#3が負荷状態判定処理を実行する状態を想定する。CPUL#3は、変数iを用意し、i=1に設定する(ステップS1401)。続けて、CPUL#3は、CNT個のCPUのうち、i番目のCPUを選択する(ステップS1402)。選択後、CPUL#3は、選択したi番目のCPUの応答性能劣化比Ri<Rborderが成り立つかを判断する(ステップS1403)。
ここで、Rborderは、選択されたCPUが高負荷か否かを判断する閾値である。たとえば、Rborder=1とすると、CPUL#3は、少しでも性能劣化したCPUを高負荷として判断することになる。また、通常応答性能劣化比Rは、0.3〜0.8の範囲となるため、Rborder=0.8としてもよい。
RiがRborderより小さいと判断された場合(ステップS1403:Yes)、CPUL#3は続けて、CNT番目のCPUを選択したかを判断する(ステップS1404)。CNT番目のCPUを選択していないと判断された場合(ステップS1404:No)、CPUL#3は、変数iをインクリメントし(ステップS1405)、ステップS1402の処理に移行する。
CNT番目のCPUを選択していると判断された場合(ステップS1404:Yes)、CPUL#3は、性能劣化原因を“高負荷による性能劣化”であると判断し(ステップS1406)、性能劣化原因判断処理を終了する。RiがRborder以上であると判断された場合(ステップS1403:No)、CPUL#3は、性能劣化原因を、“競合による性能劣化”であると判断し(ステップS1407)、性能劣化原因判断処理を終了する。
図15は、負荷是正処理のフローチャートである。負荷是正処理も図10の例とあわせて、CPUL#3が負荷状態判定処理を実行する状態を想定する。CPUL#3は、変数iを用意し、i=1に設定する(ステップS1501)。続けて、CPUL#3は、CNT個のCPUのうち、i番目のCPUを選択する(ステップS1502)。選択後、CPUL#3は、選択したi番目のCPUによる共用メモリ203へのアクセス権の比率を((ΣRn)−Ri)/((CNT−1)・(ΣRn))に設定する(ステップS1503)。
設定後、CPUL#3は、CNT番目のCPUを選択したかを判断する(ステップS1504)。CNT番目のCPUを選択していないと判断された場合(ステップS1504:No)、CPUL#3は、変数iをインクリメントし(ステップS1505)、ステップS1502の処理に移行する。CNT番目のCPUを選択したと判断された場合(ステップS1504:Yes)、CPUL#3は1〜CNT番目のCPUによる共用メモリ203へのアクセス権の比率を調停回路204に通知し(ステップS1506)、負荷是正処理を終了する。
以上説明したように、マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムによれば、共用メモリへのアクセス速度の実測値と理論値から応答性能を算出する。算出された応答性能から、低応答性能となるCPUの共用メモリへのアクセスが多くなるように複数のCPUによるアクセス権の比率を算出し、調停回路に通知する。これにより、マルチコアプロセッサシステムの各CPUの負荷のバランスを是正することができる。特に、ヘテロジニアス・マルチコアでは各CPUの負荷がアンバランスとなりやすく、本実施の形態にかかるマルチコアプロセッサシステムでは、CPUのリソースを有効に活用することができる。
また、マルチコアプロセッサシステムは、CPUごとの応答性能に基づいて、CPUごとの応答性能のばらつき値を算出し、応答性能のばらつき値が所定の値より大きいときに、複数のCPUによるアクセス権の比率を算出してもよい。これにより、高負荷のCPUと低負荷のCPUが混在し、負荷是正による効果が大きいときには、アクセス権の比率を算出することで、各CPUの負荷のバランスを是正することができる。また、各CPUの負荷がほぼ均衡であり、負荷是正による効果が小さいときにはアクセス権の比率を算出せず、CPUに対し負荷是正処理分の負荷を減らすことができる。
また、マルチコアプロセッサシステムは、コアごとの応答性能のうち、少なくとも1つのコアの応答性能が所定の閾値以上である場合に、アクセス権の比率を算出してもよい。これにより、高負荷のCPUと低負荷のCPUが混在しており、負荷是正による効果が大きいときにアクセス権の比率を算出することで、各CPUの負荷のバランスを是正することができる。すべてのCPUが高負荷であり、負荷是正による効果が小さいときにはアクセス権の比率を算出せず、CPUに対し負荷是正処理分の負荷を減らすことができる。
また、マルチコアプロセッサシステムは、CPUに割り当てられたソフトウェアにて実行中の処理に応じた予測時間をデータベースより検索し、予測時間内に終了しないソフトウェアが検出された場合に、アクセス権の比率を算出してもよい。これにより、各CPUの負荷のアンバランスを要因としたソフトウェアの処理性能に問題が発生したときに、各CPUの負荷のバランスを是正し、ソフトウェアの処理性能の問題を解決することができる。
また、マルチコアプロセッサシステムは、CPUごとの応答性能に基づいて、複数のコアのうち応答性能が最も大きいコアにて、アクセス権の比率を算出してもよい。これにより、最も低負荷であるCPUにてアクセス権の比率を算出することになり、調停回路制御処理により発生する負荷においても、各CPUの負荷のバランスを保つことができる。
なお、本実施の形態で説明した調停回路制御方法および制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本調停回路制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本調停回路制御プログラムは、インターネット等のネットワークを介して配布してもよい。
S#1 CPU
S#2 CPU
L#1 CPU
L#2 CPU
L#3 CPU
110 バス
203 共用メモリ
204 調停回路
301 プロファイル情報テーブル
302 検索部
303 検出部
304 取得部
305 応答性能算出部
306 集約部
307 特定部
308 応答性能ばらつき値算出部
309 判断部
310 アクセス比率算出部
311 通知部

Claims (11)

  1. 複数のコアと、
    前記複数のコアによってアクセスされる共用メモリと、
    前記複数のコアによる前記共用メモリへのアクセス権の競合を調停する調停回路と
    を有するマルチコアプロセッサシステムであって、前記複数のコアの各コアは、
    前記共用メモリへのアクセス速度の前記コア実測値を取得
    前記アクセス速度の前記各コアの実測値と前記コアのアクセス速度の理論値とから前記コアの応答性能を
    前記複数のコアの中の特定のコアは、
    コア応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出
    記複数のコアによる前記共用メモリへのアクセス権の比率を前記調停回路に通知する
    とを特徴とするマルチコアプロセッサシステム。
  2. 前記特定のコアは、
    前記コア応答性能に基づいて、前記コア応答性能のばらつき値を算出
    前記各コアの応答性能のばらつき値が所定の値より大きいか否かを判断
    各コアの応答性能のばらつき値が前記所定の値より大きいと判断た場合、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、コア応答性能に基づいて、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出することを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 前記特定のコアは、
    コア応答性能のうち、少なくとも1つのコアの応答性能が所定の閾値以上であるかを判断し、
    なくとも1つのコアの応答性能が前記所定の閾値以上であると判断た場合、コア応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出することを特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4. 前記各コアは、
    ソフトウェア内で実行される所定の処理ごとに当該所定の処理が終了される予測時間を記憶するデータベースから、前記コアに割り当てられたソフトウェアにて実行中の処理に応じた前記予測時間を検索
    前記コアに割り当てられたソフトウェアの実行中の処理を、検前記予測時間内に終了しないソフトウェアをし、
    記所定の処理を前記予測時間内に終了しないソフトウェア検出た場合、前記共用メモリへのアクセス速度の前記コア実測値を取得することを特徴とする請求項3に記載のマルチコアプロセッサシステム。
  5. 前記特定のコアは、
    コア応答性能に基づいて、前記複数のコアのうち応答性能が最も大きいコアを、最も負荷の低いコアとして特定
    前記最も負荷の低いコアは、
    前記複数のコアによる前記共用メモリへのアクセス権の比率を算出することを特徴とする請求項4に記載のマルチコアプロセッサシステム。
  6. 第1のコアと、
    前記第1のコアと異なる性能を有する第2のコアと、
    前記第1のコアから共用メモリへのアクセス速度の実測値と、前記第2のコアから共用メモリへのアクセス速度の実測値と、前記第1のコアのアクセス速度の論理値と、前記第2のコアのアクセス速度の論理値に基づき、前記第1および第2のコアから共有メモリへのアクセス権の比率を制御する制御部と
    を有するマルチコアプロセッサシステム。
  7. 前記制御部は、前記第1および第2のコアのアクセス速度の実測値および論理値に基づき、前記第1および第2のコアの応答性能の劣化を示す応答性能劣化比が略均衡になるように、前記第1および第2のコアから前記共用メモリへのアクセス権の比率を制御する、請求項6に記載のマルチコアプロセッサシステム。
  8. 第1のコアと、
    前記第1のコアと異なる性能を有する第2のコアと、
    前記第1のコアから共用メモリへのアクセス速度の実測値と、前記第2のコアから共用メモリへのアクセス速度の実測値と、前記第1のコアのアクセス速度の論理値と、前記第2のコアのアクセス速度の論理値に基づき、前記第1および第2のコアから共有メモリへのアクセス権の比率を制御する制御部と、
    前記第1または第2のコアの処理結果を表示する表示装置と、
    前記第1または第2のコアで処理されるデータを入力するキーボードと
    を有するマルチコアプロセッサシステム
  9. 複数のコアによる共用メモリへのアクセス権の競合を調停する調停回路の制御を行う前記複数のコアの中の特定のコアが、
    前記共用メモリへのアクセス速度の前記複数のコアの各コア実測値を取得
    前記アクセス速度の前記各コアの実測値と前記コアアクセス速度の理論値とから算出される前記コア応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出
    記複数のコアによる前記共用メモリへのアクセス権の比率を前記調停回路に通知する
    処理を実行することを特徴とする調停回路制御方法。
  10. 第1のコアおよび前記第1のコアと性能の異なる第2のコアが共通にアクセスする共用メモリへのアクセス権を制御する制御部が、
    前記第1のコアから前記共用メモリへの第1のアクセス速度を実測し、
    前記第2のコアから前記共用メモリへの第2のアクセス速度を実測し、
    前記第1および第2のアクセス速度の実測値および理論値に基づき、前記第1および第2のコアから共有メモリへのアクセス権の比率を制御する
    制御方法。
  11. 複数のコアによる共用メモリへのアクセス権の競合を調停する調停回路の制御を行う前記複数のコアの中の特定のコアに、
    前記共用メモリへのアクセス速度の前記複数のコアの各コア実測値を取得
    前記アクセス速度の前記各コアの実測値と前記コアアクセス速度の理論値とから算出される前記コア応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出
    記複数のコアによる前記共用メモリへのアクセス権の比率を前記調停回路に通知する
    処理を実行させることを特徴とする調停回路制御プログラム。
JP2012505399A 2010-03-18 2010-03-18 マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラム Expired - Fee Related JP5541355B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/054709 WO2011114496A1 (ja) 2010-03-18 2010-03-18 マルチコアプロセッサシステム、調停回路制御方法、および調停回路制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014097102A Division JP5696807B2 (ja) 2014-05-08 2014-05-08 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2011114496A1 JPWO2011114496A1 (ja) 2013-06-27
JP5541355B2 true JP5541355B2 (ja) 2014-07-09

Family

ID=44648624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012505399A Expired - Fee Related JP5541355B2 (ja) 2010-03-18 2010-03-18 マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラム

Country Status (5)

Country Link
US (1) US9110733B2 (ja)
EP (1) EP2549384B1 (ja)
JP (1) JP5541355B2 (ja)
CN (1) CN102804149B (ja)
WO (1) WO2011114496A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150005A (zh) * 2013-03-01 2013-06-12 福州瑞芯微电子有限公司 非对称低功耗移动设备的多核结构
JP6060098B2 (ja) * 2014-01-29 2017-01-11 日本電信電話株式会社 応答品質推定装置、応答品質推定方法およびプログラム
US9483299B2 (en) * 2014-06-30 2016-11-01 Bmc Software, Inc. Capacity risk management for virtual machines
JP6490552B2 (ja) * 2015-09-29 2019-03-27 シャープ株式会社 情報処理装置、電子機器、制御プログラム、および情報処理装置の制御方法
CN106793093B (zh) * 2015-11-19 2019-12-06 大唐移动通信设备有限公司 一种业务处理方法及装置
US9971580B2 (en) 2016-03-18 2018-05-15 Intel Corporation Fast access and use of common data values relating to applications in parallel computing environments
CN105808357B (zh) * 2016-03-29 2021-07-27 沈阳航空航天大学 性能可精确控制多核多线程处理器
JP6895719B2 (ja) * 2016-06-24 2021-06-30 日立Astemo株式会社 車両制御装置
FR3061327B1 (fr) * 2016-12-26 2019-05-31 Thales Procede de controle d'un processeur multi-coeurs et calculateur associe
US10824475B2 (en) * 2017-03-24 2020-11-03 Tata Consultancy Services Limited Systems and methods for estimating computation times a-priori in fog computing robotics
JP6995644B2 (ja) * 2018-01-23 2022-01-14 日立Astemo株式会社 電子制御装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02143363A (ja) * 1988-11-24 1990-06-01 Fujitsu Ltd マルチプロセッサ装置における共通メモリ制御方法
JPH07281942A (ja) * 1994-04-14 1995-10-27 Asahi Kasei Micro Syst Kk 共有資源のアービトレーション方法
JPH10143382A (ja) * 1996-11-08 1998-05-29 Hitachi Ltd 共有メモリ型マルチプロセッサシステムの資源管理方法
JP2002244917A (ja) * 2001-02-15 2002-08-30 Matsushita Electric Ind Co Ltd アクセス管理装置、およびプログラム
JP2003271404A (ja) * 2002-03-19 2003-09-26 Fujitsu Ltd マルチプロセッサシステム
JP2007004595A (ja) * 2005-06-24 2007-01-11 Hitachi Ltd コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラム
JP2008027245A (ja) * 2006-07-21 2008-02-07 Matsushita Electric Ind Co Ltd メモリアクセス制御装置およびメモリアクセス制御方法
JP2009251871A (ja) * 2008-04-04 2009-10-29 Nec Corp 競合分析装置、競合分析方法、およびプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682522A (en) * 1995-07-18 1997-10-28 Silicon Integrated Systems Corp. Shared memory architecture of graphics frame buffer and hard disk cache
JPH11110363A (ja) 1997-09-30 1999-04-23 Sharp Corp マルチプロセッサシステム
US20060136381A1 (en) * 2004-12-17 2006-06-22 Glaser Howard J Method and system for a text based search of a self-contained document
US20060136681A1 (en) * 2004-12-21 2006-06-22 Sanjeev Jain Method and apparatus to support multiple memory banks with a memory block
CN101223490A (zh) 2005-07-14 2008-07-16 Nxp股份有限公司 使用历史负载简档来动态调整手持多媒体设备处理器内核的工作频率及可用功率
JP4814617B2 (ja) * 2005-11-01 2011-11-16 株式会社日立製作所 ストレージシステム
TW200805047A (en) 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
JP2008117001A (ja) * 2006-10-31 2008-05-22 Matsushita Electric Works Ltd 共有メモリインターフェイス
CN100562854C (zh) * 2008-03-11 2009-11-25 浙江大学 多核处理器操作系统负载均衡的实现方法
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
CN101610209B (zh) * 2008-11-28 2011-08-03 北京网康科技有限公司 一种多核并行的网络业务流处理方法及设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02143363A (ja) * 1988-11-24 1990-06-01 Fujitsu Ltd マルチプロセッサ装置における共通メモリ制御方法
JPH07281942A (ja) * 1994-04-14 1995-10-27 Asahi Kasei Micro Syst Kk 共有資源のアービトレーション方法
JPH10143382A (ja) * 1996-11-08 1998-05-29 Hitachi Ltd 共有メモリ型マルチプロセッサシステムの資源管理方法
JP2002244917A (ja) * 2001-02-15 2002-08-30 Matsushita Electric Ind Co Ltd アクセス管理装置、およびプログラム
JP2003271404A (ja) * 2002-03-19 2003-09-26 Fujitsu Ltd マルチプロセッサシステム
JP2007004595A (ja) * 2005-06-24 2007-01-11 Hitachi Ltd コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラム
JP2008027245A (ja) * 2006-07-21 2008-02-07 Matsushita Electric Ind Co Ltd メモリアクセス制御装置およびメモリアクセス制御方法
JP2009251871A (ja) * 2008-04-04 2009-10-29 Nec Corp 競合分析装置、競合分析方法、およびプログラム

Also Published As

Publication number Publication date
CN102804149A (zh) 2012-11-28
CN102804149B (zh) 2016-01-13
JPWO2011114496A1 (ja) 2013-06-27
US9110733B2 (en) 2015-08-18
US20130013834A1 (en) 2013-01-10
EP2549384A4 (en) 2013-05-22
EP2549384B1 (en) 2018-01-03
WO2011114496A1 (ja) 2011-09-22
EP2549384A1 (en) 2013-01-23

Similar Documents

Publication Publication Date Title
JP5541355B2 (ja) マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラム
KR101385827B1 (ko) 가상화된 환경들 내의 리소스 할당
JP4702127B2 (ja) 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
KR101569093B1 (ko) 분산 시스템에서 데이터를 처리하는 방법
US20230418997A1 (en) Comprehensive contention-based thread allocation and placement
US10871996B2 (en) Detection, modeling and application of memory bandwith patterns
JP5696807B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
US10866838B2 (en) Cluster computing service assurance apparatus and method
JP5178778B2 (ja) 仮想計算機およびcpu割り当て方法
JP5861715B2 (ja) データ処理装置、送信装置、スケジューリング方法、送信制御方法、スケジューリングプログラム、および送信制御プログラム
US8862786B2 (en) Program execution with improved power efficiency
WO2014141419A1 (ja) 仮想計算機システムおよびスケジューリング方法
US20130019069A1 (en) Multi-core processor system, memory controller control method, and computer product
US9507645B2 (en) Thread processing method for using a multi-core processor and systems therefor
JP6201591B2 (ja) 情報処理装置および情報処理装置の制御方法
JP5704176B2 (ja) プロセッサ処理方法、およびプロセッサシステム
JP5348315B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US20180253288A1 (en) Dynamically predict and enhance energy efficiency
JP5605477B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
Fang et al. Scheduling resources to multiple pipelines of one query in a main memory database cluster
Sodan et al. LOMARC: lookahead matchmaking for multiresource coscheduling on hyperthreaded CPUs
JP5713091B2 (ja) マルチコアプロセッサシステム、制御方法、および制御プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5541355

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees