JPWO2011114478A1 - 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置 - Google Patents

生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置 Download PDF

Info

Publication number
JPWO2011114478A1
JPWO2011114478A1 JP2012505385A JP2012505385A JPWO2011114478A1 JP WO2011114478 A1 JPWO2011114478 A1 JP WO2011114478A1 JP 2012505385 A JP2012505385 A JP 2012505385A JP 2012505385 A JP2012505385 A JP 2012505385A JP WO2011114478 A1 JPWO2011114478 A1 JP WO2011114478A1
Authority
JP
Japan
Prior art keywords
processor
program
model
scheduling
function
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.)
Pending
Application number
JP2012505385A
Other languages
English (en)
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 JPWO2011114478A1 publication Critical patent/JPWO2011114478A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

生成装置(100)のコンパイラ(101)は、アプリケーションソースコード(AS)ごとに評価コンパイル(111)と実装コンパイル(112)をおこなう。評価コンパイル(111)では、プロファイルタグテーブル(T)を生成する。ESLシミュレータ(102)は、競合特性情報(120)を生成する第1のESLシミュレーションと競合特性情報(120)を用いて評価用実行コード(C19を実行する第2のESLシミュレーションを実行する。第2のESLシミュレーションでは、実装するマルチコアプロセッサシステムをESLでモデル化したシステムモデル上で各評価用実行コード(C1)を実行する。これにより、評価用実行コード(C1)内の関数ごとにスケジューリング方式が決定され、プロファイルタグテーブル(T)に登録される。

Description

本発明は、情報を生成したり生成された情報を用いてスケジューリングをおこなう生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置に関する。
従来、スケジューリング技術として静的スケジューリングと動的スケジューリングが存在する。
静的スケジューリングとは、コンパイルの段階で実行状態を予測したコードを予め固定的なコードとして実行オブジェクトに埋めておくスケジューリング方式である。具体的には、一般的なコードプティマイズや負荷分散をおこなうための実行先CPU(Central Processing Unit)に固定的にもたせることにより、静的スケジューリングが実行される。
また、静的スケジューリングは、条件分岐処理にあたって、予め分岐比率をもとめることにより、より分岐確率の高いコードをキャッシュラインにのせるようなコード生成をおこなうことができる。静的スケジューリングは、不要なコードを埋め込むことがないため、判断を要する段階でスケジューリングに要する演算処理が入らない。したがって、スケジューリングオーバーヘッドがほとんど発生しない。
また、動的スケジューリングとは、コンパイル時に判明しない不確定要素がある場合、スケジューリングイベント時に、イベント時の状態情報(各プロセッサの負荷など)を収集し、イベント毎の最適な状態をその都度演算するスケジューリング方式である。コンパイル時に判明しない不確定要素としては、たとえば、実行開始後に演算処理量が判明したり、他のソフトウェアとの同時実行にあたって負荷状態が実行してみないとわからない状態がある。
また、スケジューリング計算はNP(Non−deterministic Polynomial)困難問題とされ、本質的に最適解を求めることは現実時間では難しく、通常は最適解に対する近似解となる(本明細書では、近似解を最適解とする)。従来は、このような最適解を得るためのさまざまなアルゴリズムが提案されている。
特開2007−328416号公報 特開2007−18268号公報 特開2000−215186号公報
しかしながら、上述した静的スケジューリングでは、分岐予測がはずれる場合や、想定外の状態が発生した場合にシステム全体のバランスがくずれてパフォーマンスが極端に落ちることがあるという問題があった。
また、スケジューラなどによるソフトウェアのオーバーヘッドを動的予測するのは効率的ではなく、すでに値が決まっているので静的解析すべきである。また、マルチコア環境で共用メモリにアクセスしたときに発生するアクセス競合といったハードウェア的なオーバーヘッドによりスケジューリング結果が乱される場合がある。
この場合、次回のパターンを予測しようとしても、次回にはパターンが変化してしまうため、動的予測する意味がない。したがって、動的スケジューリングでは、スケジューリングイベントが頻発すると、最適解をもとめるためのスケジューリングオーバーヘッドそのものがパフォーマンスを落とす要因になるという問題があった。
本発明は、上述した従来技術による問題点を解消するため、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、動的処理を余儀なくされたようなケースにおいても静的スケジューリングを行うことでシステムパフォーマンスを向上させることができる生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置を提供することを目的とする。
本実施例の一態様によると、プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求め、求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置を提供する。
また、本実施例の他の態様によると、対象プログラムを指定し、前記対象プログラムが指定された場合、マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出し、テーブルを参照して、検出された実行中のプログラムと同時に前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定し、特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から決定し、決定されたプロセッサに前記対象プログラムを割り当てるスケジューリング方法、スケジューリングプログラム、および情報処理装置を提供する。
本生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置によれば、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、動的処理を余儀なくされたようなケースにおいても静的スケジューリングを行うことでシステムパフォーマンスを向上させることができるという効果を奏する。
本実施の形態にかかる生成装置の一実施例を示す説明図である。 プロファイルタグテーブルTの一例を示す説明図である。 負荷源Lのコード例を示す説明図である。 本実施の形態にかかる情報処理装置の一実施例を示すブロック図である。 本実施の形態にかかる第1のESLシミュレーションを示す説明図である。 競合特性情報120を示すグラフである。 本実施の形態にかかる第2のESLシミュレーションを示す説明図である。 登録後のプロファイルタグテーブルTの一例を示す説明図である。 本実施の形態にかかる生成装置100のハードウェア構成の一例を示すブロック図である。 本実施の形態にかかる生成装置100の機能的構成を示すブロック図である。 情報処理装置400の機能的構成を示すブロック図である。 本実施の形態にかかる生成装置100による第1のESLシミュレーションの処理手順を示すフローチャートである。 第2のESLシミュレーションの処理手順を示すフローチャートである。 プロファイルタグテーブルTへの登録処理手順を示すフローチャートである。 情報処理装置400によるスケジューリング処理手順を示すフローチャートである。 本実施の形態を適用しない場合の失敗例となるスケジューリングを示す説明図である。 本実施の形態を適用した場合のスケジューリング(その1)を示す説明図である。 本実施の形態を適用した場合のスケジューリング(その2)を示す説明図である。
本実施の形態では、マルチコアプロセッサシステム内の一のプロセッサで実行中のプログラム(一のアプリケーション内のプロセスやスレッド。「一の関数」。)がある場合、これから呼び出されるプログラム(他のアプリケーション内のプロセスやスレッド。「他の関数」。)をどのようにスケジューリングすべきかというスケジューリング方式を設計段階で決めておく。そして、製品化後は、設計段階で決められたスケジューリング方式でスケジューリングすることでアプリケーションを実行する。
たとえば、静的スケジューリングの場合は、他の関数を一の関数を実行中の一のプロセッサに割り当てて、一の関数と他の関数を時分割で実行することとなる。したがって、時分割実行のため、一の関数と他の関数との間でコンテンションは発生しないこととなる。
一方、動的スケジューリングの場合は、他の関数を一の関数を実行中の一のプロセッサとは異なる他のプロセッサ(たとえば空いているプロセッサ)に割り当てることとなる。
これにより、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、動的スケジューリングを余儀なくされたようなケースにおいてもできる限り静的スケジューリングを行うことでシステムパフォーマンスを向上させる。以下に添付図面を参照して詳細に説明する。
図1は、本実施の形態にかかる生成装置の一実施例を示す説明図である。生成装置100は、アプリケーションソースコードASを入力し、実装用実行コードC2およびプロファイルタグテーブルTを出力する。
生成装置100は、コンパイラ101とESL(Electronic System Level)シミュレータ102とリンカ103とを備えている。コンパイラ101は、アプリケーションソースコードASごとに評価コンパイル111と実装コンパイル112をおこなう。評価コンパイル111とは、アプリケーションソースコードASの評価用実行コードC1を生成する処理である。
評価用実行コードC1とは、通常の実行コード(図1でいう実装用実行コードC2)に、デバッグ情報が埋め込まれた実行コードである。評価オブジェクトとも言う。この埋め込まれたデバッグ情報により、評価用実行コードC1は、実装用実行コードC2よりも余計な動作をする。また、評価コンパイル111では、プロファイルタグテーブルTを生成する。
図2は、プロファイルタグテーブルTの一例を示す説明図である。プロファイルタグテーブルTは、コーリー・コーラー情報エリアと実行開始・終了時刻情報エリアとを有するテーブルである。コーリー・コーラー情報エリアとは、関数や手続きの呼出単位となるコーリー情報やコーラ−情報を記録するエリアである。また、実行開始・終了時刻情報エリアは、評価用実行コードC1内の関数の実行開始時刻と実行終了時刻とを記録するエリアである。
本実施の形態では、プロファイルタグテーブルTは、さらに、動作条件エリアを有する。動作条件エリアとは、事前評価実行時の動作条件を記録するエリアである。簡単に説明すると、対象となる関数のスケジューリング方式が記録されているが、詳細については後述する。なお、プロファイルタグテーブルTの生成時では、いずれのエリアも空の状態であり、評価用実行コードC1を実行することで埋められる。
また、図1において、ESLシミュレータ102は、ESLシミュレーションを実行する。ここで、ESLモデルとはハードウェアデバイスのビヘイビア(ふるまい)をもとに記述することによりハードウェア環境をシミュレーション化する技術である。たとえば、プロセッサのESLモデルでは命令発行の電気回路的なメカニズムをそのままシミュレーションするのではなく、発行命令とそれに要する時間で表現する。
また、バスのESLモデルでは同様に、回路メカニズムによるデータ伝播の遅延を厳密に計算するのではなく、アクセス要求により設計上のレイテンシパターンを掛け合わせて、動作と時間概念をビヘイビア(ふるまい)としてシミュレーションしていくこととなる。
従来、シミュレーションというとRTL(Register Transfer Level)などの回路設計情報をもとに実際に半導体を実装することなくシミュレーションを行うことで実デバイスと同等の動作を実現することで検証を行うために用いられていた。
しかしながら、回路レベルの詳細シミュレーションを実施するには非常に時間がかかり(通常、実デバイスのスピードに対し数千万から数億分の一の処理時間)、アプリケーションを動作させながらのシステム全体の挙動を解析するのは現実的に困難であった。一方で、ESLモデルでは処理と時間の概念をふるまいとして解析するため回路のシミュレーションをおこなうまでもなく概ねの処理時間を評価することが可能な環境である。
本実施の形態では、2種類のESLシミュレーションを実行する。1つは、競合特性情報120を生成するためのESLシミュレーションである(以下、「第1のESLシミュレーション」)。もう1つは、競合特性情報120を用いて評価用実行コードC1を実行するESLシミュレーションである(以下、「第2のESLシミュレーション」)。
まず、第1のESLシミュレーションでは、マルチコアプロセッサシステムを搭載した情報処理装置のために競合特性情報120を生成するが、競合特性情報120を生成する際のESLのシステムモデルは、マルチコアプロセッサシステムと同一構成のモデルではない。マルチコアプロセッサシステムのシステムモデルでは、CPUモデルが複数用意されるが、ここでは、CPUモデルが1つで、残余のCPUモデル群については、単一の負荷源Lとしてまとめてモデル化する。
すなわち、残余のCPUモデル群がそれぞれアプリケーションによりどのようにふるまうかは関係ない。その反面、共有メモリに対してどれだけトランザクション負荷をかけるかをみればよいため、残余のCPUモデル群を負荷源Lとしてまとめても問題なく、かえってシミュレーション速度の高速化を実現できる。
また、第1のESLシミュレーションでは、競合特性情報120を生成する場合、ESLのシステムモデル上でアクセス競合テストプログラムTPを実行することとなる。アクセス競合テストプログラムTPは、I/O系のベンチマークプログラムであり、共有リソース(たとえば、共有メモリ)に対し、リードとライトをおこなうプログラムである。
また、負荷源Lは、アクセス競合テストプログラムTP以外のプログラムを実行するCPUモデル群を擬似的に表現したモデルである。CPUモデル群がそれぞれアプリケーションにより実際にどのようにふるまうかは関係なく、共有メモリに対してどれだけトランザクション負荷をかけるかをみればよいため、負荷源Lとしてまとめても問題なく、かえってシミュレーション速度の高速化を実現できる。
図3は、負荷源Lのコード例を示す説明図である。負荷源Lは、意図的にコンテンション(競合)を発生させるプログラムである。アクセスが競合している状態の密度(アクセス競合率ρ)がパラメトリックになっている。
また、図1において、第2のESLシミュレーションでは、負荷源Lを有するESLのシステムモデルとは別に、実装するマルチコアプロセッサシステムをESLでモデル化したシステムモデル上で各評価用実行コードC1を実行する。これにより、評価用実行コードC1内の関数ごとにスケジューリング方式が決定される。そして、プロファイルタグテーブルTに登録する。
このようにして、相手方である実行中である一の関数との組み合わせにより他の関数のスケジューリング方式が決まる。このあと、コンパイラ101により各アプリケーションソースコードASを実装コンパイル112することで実装用実行コードC2群が得られる。なお、実装用実行コードC2を実行するとリンカ103によりどのプロファイルタグテーブルTと関連づけられるかがわかる。したがって、実装用実行コードC2とそれに対応するプロファイルタグテーブルTとが組み合わさって、実装用実行コードC2ごとに出力される。
図4は、本実施の形態にかかる情報処理装置の一実施例を示すブロック図である。情報処理装置400は、マルチコアプロセッサ(図4では例として4個のCPU401〜404)と共有メモリ405とがバス406で接続されたマルチコアプロセッサシステム410を搭載したコンピュータである。情報処理装置400は、たとえば、携帯電話機、PHS、スマートフォン、携帯ゲーム機、電子辞書、電子書籍端末、ノート型パソコンといった携帯型端末が挙げられる。
OS(Operating System)のスケジューラ411は、実装用実行コードC2とそのプロファイルタグテーブルTを参照し、起動しようとする実装用実行コードC2内の関数のスケジューリングをおこなう。これにより、動的または静的スケジューリングが可能となる。つぎに、図1に示したESLシミュレータ102の具体的な動作について説明する。
図5は、本実施の形態にかかる第1のESLシミュレーションを示す説明図である。ESLシミュレータ102では、CPUモデル501と図3に示した負荷源Lと共有メモリモデル502とをバスモデル503で接続したシステムモデル500を用いる。負荷源Lは、自律的にアクセス競合率ρを0〜100[%]に変化させる。たとえば、Δρ刻みで変化させる。Δρは、1[%]など任意に設定可能である。また、競合特性情報120は、アクセス競合率に対するCPUモデル501の性能を示している。
たとえば、あるアクセス競合率ρのとき、アクセス競合テストプログラムTPのスコアが、9:1(9がアクセス競合テストプログラムTPを実行したCPUモデル501、1が負荷源L)であるとすると、このアクセス競合率ρでのCPU性能比率は、90[%]となる。すなわち、負荷源Lにより10[%]性能が劣化したことを示している。
図6は、競合特性情報120を示すグラフである。図6では、横軸をアクセス競合率、縦軸をピークに対するCPU性能比率としている。ピークに対するCPU性能比率とは、負荷源Lによる負荷が無負荷状態(ρ=0)のときのCPU性能を100[%]、すなわちピークとしたときのCPU性能の比率である。
また、競合特性情報120は通常のアーキテクチャであれば、アクセス競合率が増加するにつれ、一定の値で飽和(漸近)する。ハードアービトレーションにより必ず一定周期でアクセス可能になるからである。
実際には、Δρ刻みでCPU性能比率をプロットされる。プロットされた各点を用いて最小自乗法などの周知の技術により競合特性情報120の近似式を生成する。近似式をグラフ化すると競合特性曲線600となる。そして、近似式(競合特性曲線600)から性能漸近値Zを求める。性能漸近値Zの求め方は、近似式でのρの値を無限大まで大きくしたときのCPU性能比率を求めればよい。また、単純に、ρ=100[%]のときのCPU性能比率を性能漸近値Zとしてもよい。
また、求めた性能漸近値Zに対する許容値率σを設定する。たとえば、σ=10[%]とする。性能漸近値Zのσ[%]のCPU性能比率と競合特性曲線600とが交差するときのアクセス競合率ρを境界値bとする。すなわち、境界値b以上で静的スケジューリングすべきと判断され、境界値b未満で動的スケジューリングすべきと判断される。
図6では、性能漸近値ZをCPU性能比率30[%]、許容値率σ=10[%]とすると、アクセス競合率ρ=38[%]が性能劣化の境界値bとなる。すなわち、ピーク(100[%])から70[%]分下がった性能比率を性能漸近値Zとして、性能劣化の境界となる境界値bを設けることとなる。なお、許容値率σについては、対象となるアーキテクチャ(マルチコアプロセッサシステム)に応じて設定する。
図7は、本実施の形態にかかる第2のESLシミュレーションを示す説明図である。図7では、2つのCPUモデル701,702と共有メモリモデル703とがバスモデル704に接続されたマルチコアプロセッサシステムのシステムモデル700を用いる。第2のCPUモデル702には、第2のアプリケーションC12内のプロセスやスレッドなどの第2の関数c12を割り当てて実行させておく。第1のCPUモデル701には、第2のアプリケーションC12とは異なる第1のアプリケーションC11内の呼出対象となる関数c11を割り当てる。
たとえば、第2のCPUモデル702では、アプリケーションBの関数B1が実行中であるとする。この状況で、第1の関数としてアプリケーションAの関数A1を呼び出して第1のCPUモデル701で実行させると、共有メモリモデル703にアクセス競合が発生する。そして、第1のCPUモデル701のCPU性能比率を第2のESLシミュレーションによる競合結果として取り出す。競合結果となるCPU性能比率は、第2のCPUモデル702が実行していない状態、すなわち、無負荷状態をピークとする。
そして、競合結果を競合特性情報120の近似式(競合特性曲線600)に当てはめて、競合結果(CPU性能比率)であるときの第1のCPUモデル701のアクセス競合率ρを求める。このときのアクセス競合率ρが境界値b未満である場合は、アプリケーションAの関数A1のスケジューリング方式は動的スケジューリングを選択する。
一方、境界値b以上である場合は、アプリケーションAの関数A1のスケジューリング方式は静的スケジューリングを選択する。そして、この選択されたスケジューリング方式を、アプリケーションAのプロファイルタグテーブルTの動作条件エリアに、関数B1を実行中の場合の関数A1のスケジューリング方式として登録する。
図8は、登録後のプロファイルタグテーブルTの一例を示す説明図である。図8では、アプリケーションAのプロファイルタグテーブルTの登録内容を示している。プロファイルタグテーブルTでは、関数ごとに、コーリー・コーラー情報エリア、実行開始・終了時刻情報エリア、および動作条件エリアが確保されているが、図8では、簡略化のため、コーリー・コーラー情報エリアを省略している。プロファイルタグテーブルTにおいて、『contention{』から『}//contention』までの記述が該当する関数の動作条件エリアである。
たとえば、関数A1(「funcA1」)が呼出対象関数である場合、実行中の関数が各アプリケーションB(「ApplyB」)の関数B1(「funcB1」)のときは、“static”が登録されている。すなわち、アプリケーションBの関数B1実行中に関数A1が呼ばれたら静的スケジューリングをおこなうことを示している。この場合、常に競合が発生している状態なので、静的スケジューリング、たとえば、同一のプロセッサに割り当ててタイムスライス動作させることで競合を解消する。
一方、実行中の関数が各アプリケーションBの関数B3(「FuncB3」)のときは、“dynamic”が登録されている。すなわち、アプリケーションBの関数B3実行中に関数A1が呼ばれたら動的スケジューリングをおこなうことを示している。この場合、アプリケーションBからの影響をうけにくかったり、または、動作状態によるオーバーヘッドが広域変化するため、最も負荷の軽いCPUにダイナミックに割り当てる。
図9は、本実施の形態にかかる生成装置100のハードウェア構成の一例を示すブロック図である。図9において、生成装置100は、CPU901と、ROM(Read‐Only Memory)902と、RAM(Random Access Memory)903と、磁気ディスクドライブ904と、磁気ディスク905と、光ディスクドライブ906と、光ディスク907と、ディスプレイ908と、I/F(Interface)909と、キーボード910と、マウス911と、スキャナ912と、プリンタ913と、を備えている。また、各構成部はバス900によってそれぞれ接続されている。
ここで、CPU901は、生成装置100の全体の制御を司る。ROM902は、ブートプログラムなどのプログラムを記憶している。RAM903は、CPU901のワークエリアとして使用される。磁気ディスクドライブ904は、CPU901の制御にしたがって磁気ディスク905に対するデータのリード/ライトを制御する。磁気ディスク905は、磁気ディスクドライブ904の制御で書き込まれたデータを記憶する。
光ディスクドライブ906は、CPU901の制御にしたがって光ディスク907に対するデータのリード/ライトを制御する。光ディスク907は、光ディスクドライブ906の制御で書き込まれたデータを記憶したり、光ディスク907に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ908は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ908は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)909は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク914に接続され、このネットワーク914を介して他の装置に接続される。そして、I/F909は、ネットワーク914と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F909には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード910は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス911は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ912は、画像を光学的に読み取り、生成装置100内に画像データを取り込む。なお、スキャナ912は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ913は、画像データや文書データを印刷する。プリンタ913には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(生成装置100の機能的構成)
図10は、本実施の形態にかかる生成装置100の機能的構成を示すブロック図である。生成装置100は、実行部1001と、生成部1002と、特定部1003と、決定部1004と、保存部1005と、取得部1006と、検出部1007と、選択部1008と、登録部1009と、を備える。実行部1001〜登録部1009は、具体的には、たとえば、図9に示したROM902、RAM903、磁気ディスク905などの記憶装置に記憶されたプログラムをCPU901に実行させることにより、その機能を実現する。
実行部1001は、第1のESLシミュレーションを実行する機能を有する。具体的には、たとえば、図5に示したシステムモデルにより第1のESLシミュレーションを実行する。そして、実行結果となるCPUモデルの性能に関する指標値として、たとえば、ピークに対するCPU性能比率を取得することとなる。また、第1のESLシミュレーションでは、アクセス競合率ρがΔρ刻みで0〜100[%]まで変化するため、アクセス競合率ρごとにピークに対するCPU性能比率を取得することとなる。
生成部1002は、アクセス競合率ごとに求められたプロセッサモデルの性能に関する指標値に基づいて、プロセッサの競合特性の近似式を生成する機能を有する。具体的には、実行部1001では、アクセス競合率ρごとにピークに対するCPU性能比率が取得されるため、各CPU性能比率に対し最小自乗法などの周知の技術を適用することで競合特性情報120の近似式を生成する。なお、アクセス競合が発生した場合は、指数関数または対数関数的な減衰となるため、モデルとなる曲線600は指数関数や対数関数を用いればよい。
特定部1003は、生成部1002によって生成された競合特性の近似式に基づいて、プロセッサモデルの性能に関する指標値の中から、プロセッサモデルの性能が漸近する性能漸近値Zを特定する機能を有する。具体的には、たとえば、競合特性曲線600から性能漸近値Zを求める。
決定部1004は、アクセス競合率のうち、特定部1003によって特定された性能漸近値Zに対する許容誤差値と近似式とに基づくアクセス競合率を、プロセッサモデルの性能劣化の境界値bに決定する機能を有する。具体的には、たとえば、許容値率σから得られた性能漸近値Zの許容誤差値と競合特性曲線600とが交差するアクセス競合率ρを境界値bに決定する。
保存部1005は、実行部1001、生成部1002、特定部1003および決定部1004から得られた競合特性情報120を記憶領域に保存する機能を有する。保存された競合特性情報120は、第2のESLシミュレーションに用いられる。
取得部1006は、第2のESLシミュレーションを実行して、実行結果となる性能指標値を取得する機能を有する。具体的には、たとえば、図7に示したマルチコアプロセッサシステムモデルにより第2のESLシミュレーションを実行する。そして、実行結果となる第1のCPUモデル701の性能に関する指標値として、たとえば、第1のCPUモデル701のピークに対するCPU性能比率を取得することとなる。
検出部1007は、近似式を参照して、取得部1006によって取得された指標値でのアクセス競合率を検出する機能を有する。具体的には、たとえば、取得されたCPU性能比率に対応するアクセス競合率ρを競合特性曲線600から検出する。
選択部1008は、検出されたアクセス競合率ρと境界値bとを比較することにより、第2のプログラムの実行中に第1のプログラムを実行する場合のスケジューリング方式を、動的スケジューリングまたは静的スケジューリングの中から選択する機能を有する。具体的には、たとえば、図7に示した第2のESLシミュレーションにおいて、第2の関数の実行中に第1の関数を実行する場合のスケジューリング方式を選択する。たとえば、検出されたアクセス競合率ρが境界値b以上である場合は静的スケジューリング、境界値b未満の場合は動的スケジューリングを選択する。
登録部1009は、選択部1008によって選択されたスケジューリング方式をプロファイルタグテーブルTに登録する機能を有する。具体的には、たとえば、図8に示したように、関数A1(第1の関数)について選択されたスケジューリング方式(たとえば、静的スケジューリング)のタグ“static”を関数B1と関連付けて登録する。
図11は、情報処理装置400の機能的構成を示すブロック図である。情報処理装置400は、指定部1101と、検出部1102と、特定部1103と、決定部1104と、割当部1105とを備えている。指定部1101〜割当部1105は、具体的には、たとえば、図4に示した共有メモリ405などの記憶装置に記憶されたプログラムをCPU401〜404に実行させることにより、その機能を実現する。
指定部1101は、対象プログラムを指定する機能を有する。具体的には、たとえば、呼び出されたアプリケーション内の呼出対象関数を指定する。
検出部1102は、指定部1101によって対象プログラムが指定された場合、マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する機能を有する。たとえば、指定部1101により呼出対象関数として関数A1が指定された場合、マルチコアプロセッサ内で他の関数B1を実行中のCPUを検出し、そのCPU番号を保持しておく。
特定部1103は、テーブルを参照して、検出部1102によって検出された実行中のプログラムと同時に対象プログラムを実行させる場合の対象プログラムのスケジューリング方式を特定する機能を有する。具体的には、たとえば、呼出対象関数を含むアプリケーションのプロファイルタグテーブルTを参照して、関数B1の実行中における関数A1のスケジューリング方式を読み出し、静的スケジューリングであるか動的スケジューリングであるかを特定する。“static”ならば静的スケジューリングであり、“dynamic”ならば動的スケジューリングである。
決定部1104は、特定部1103によって特定されたスケジューリング方式に従って対象プログラムを実行させるプロセッサをマルチコアプロセッサの中から決定する機能を有する。具体的には、特定部1103によって特定されたスケジューリング方式が静的スケジューリングである場合、対象プログラムを実行させるプロセッサを、対象プログラムを実行中のプログラムが割り当てられているプロセッサに決定する。たとえば、関数B1の実行中における関数A1のスケジューリング方式は静的スケジューリングであるため、関数B1を実行するCPUのCPU番号を読み出す。
一方、特定部1103によって特定されたスケジューリング方式が動的スケジューリングである場合、対象プログラムを実行させるプロセッサを、対象プログラムを実行中のプログラムが割り当てられているプロセッサ以外の残余のプロセッサのうち最も低負荷のプロセッサに決定する。
たとえば、図8を参照すると、関数B3の実行中における関数A1のスケジューリング方式は動的スケジューリングであるため、関数B1を実行するCPU以外の残余のCPU群の中から割当先に決定する。より具体的には、残余のCPU群のうちアイドル状態のCPUを割当先に決定する。アイドル状態のCPUがない場合は、残余のCPU群のうち最も低負荷なCPUを割当先に決定する。なお、CPUの負荷については既存技術によりOSが取得している。
割当部1105は、決定部1104によって決定されたプロセッサに対象プログラムを割り当てる機能を有する。具体的には、たとえば、決定部1104によって決定された割当先のCPUに、対象プログラムである呼出対象関数を通知する。より具体的には、呼出対象関数が保存されている共有メモリ内のアドレスを通知することで、割当先のCPUはその通知されたアドレスを指定して、割当先のCPU内のキャッシュメモリに読み込んで実行することとなる。
図12は、本実施の形態にかかる生成装置100による第1のESLシミュレーションの処理手順を示すフローチャートである。まず、生成装置100は、実行部1001により、システムモデル500内の負荷源Lのアクセス競合率ρをρ=0に設定する(ステップS1201)。つぎに、生成装置100は、システムモデル500についてESLシミュレーションを実行する(ステップS1202)。
このESLシミュレーションにより、生成装置100は、CPUモデル501のアクセス競合率ρでのCPU性能比率を取得する(ステップS1203)。そして、生成装置100は、実行部1001により、ρ<100[%]であるか否かを判断する(ステップS1204)。
ρ<100[%]でない場合(ステップS1204:No)、生成装置100は、現在のρにΔρを加算して(ステップS1205)、ステップS1202に戻る。一方、ρ<100[%]である場合(ステップS1204:Yes)、生成装置100は、得られたCPU性能比率から競合特性の近似式を生成する(ステップS1206)。
このあと、生成装置100は、生成された近似式から競合特性に関する性能漸近値Zを特定する(ステップS1207)。そして、生成装置100は、近似式と許容値率σから性能劣化のしきい値となる境界値bを決定する(ステップS1208)。このあと、生成装置100は、競合特性情報120として保存する記憶装置に保存する(ステップS1209)。これにより、第1のESLシミュレーションを終了する。
このように、第1のESLシミュレーションをおこなうことで、対象アーキテクチャで起こりうる競合によるCPUの統計的な性能劣化を把握することができる。つぎに、図12の第1のESLシミュレーションで得られた競合特性情報120を用いた第2のESLシミュレーションの処理手順について説明する。
図13は、第2のESLシミュレーションの処理手順を示すフローチャートである。生成装置100は、取得部1006により、事前に同時実行するアプリケーションの組み合わせを読み込んでおく。そして、生成装置100は、第1のアプリケーションとなる未選択のアプリケーション(評価用実行コードC1)があるか否かを判断する(ステップS1301)。未選択のアプリケーションがある場合(ステップS1301:Yes)、生成装置100は、未選択のアプリケーションを選択して第1のアプリケーションに設定する(ステップS1302)。
つぎに、生成装置100は、第1のアプリケーションに未選択の関数があるか否かを判断する(ステップS1303)。未選択の関数がある場合(ステップS1303:Yes)、生成装置100は、未選択の関数を選択して第1の関数に設定する(ステップS1304)。また、生成装置100は、同時実行する第2のアプリとなる未選択のアプリケーションがあるか否かを判断する(ステップS1305)。
未選択のアプリケーションがある場合(ステップS1305:Yes)、生成装置100は、未選択のアプリケーションを選択して第2のアプリケーションに設定する(ステップS1306)。つぎに、生成装置100は、第2のアプリケーションに未選択の関数があるか否かを判断する(ステップS1307)。未選択の関数がある場合(ステップS1307:Yes)、生成装置100は、未選択の関数を選択して第2の関数に設定する(ステップS1308)。
このあと、生成装置100は、第2の関数を第2のCPUモデル702に与えてESLシミュレーションを実行する(ステップS1309)。さらに、生成装置100は、第2の関数の実行中において、関数が割り当てられていない第1のCPUモデル701に第1の関数を与えて、ESLシミュレーションを実行する(ステップS1310)。これにより、第1の関数を実行する第1のCPUモデル701のCPU性能比率が得られる。
たとえば、第1のCPUモデル701と第2のCPUモデル702との共有メモリへのアクセス頻度が、7:3である場合、ピーク(100[%])に対する第1のCPUモデル701のCPU性能比率は、70[%]となる。すなわち、第2のCPUモデル702が第2の関数を実行中であるため、第1のCPUモデル701の性能が30[%]劣化したことを示している。そして、生成装置100は、ESLシミュレーションが終了するまで待ち受け(ステップS1311:No)、終了した場合(ステップS1311:Yes)、ステップS1307に戻る。
そして、ステップS1307において、未選択の関数がない場合(ステップS1307:No)、ステップS1305に戻る。また、ステップS1305において、未選択のアプリケーションがない場合(ステップS1305:No)、ステップS1303に戻る。また、ステップS1303において、第1のアプリケーションに未選択関数がない場合(ステップS1303:No)、ステップS1301に戻る。
また、ステップS1301において、第1のアプリケーションとなる未選択のアプリケーションがない場合(ステップS1301:No)、第2のESLシミュレーションを終了する。これにより、すべての関数の組み合わせについて第2のESLシミュレーションを網羅することができる。
図14は、プロファイルタグテーブルTへの登録処理手順を示すフローチャートである。図14のフローチャートに示した登録処理は、図13に示した第2のESLシミュレーションと連動して実行される。
まず、生成装置100は、図13のステップS1304において第1の関数が設定されるのを待ち受ける(ステップS1401:No)。第1の関数が設定された場合(ステップS1401:Yes)、生成装置100は、第1のアプリケーションのプロファイルタグテーブルTの動作条件エリアに第1の関数を登録する(ステップS1402)。
つぎに、生成装置100は、図13のステップS1308において第2の関数が設定されるのを待ち受ける(ステップS1403:No)。第2の関数が設定された場合(ステップS1403:Yes)、生成装置100は、第1のアプリケーションのプロファイルタグテーブルTの動作条件エリアの第1の関数の登録エリアに、第2の関数を登録する(ステップS1404)。
そして、図13のステップS1310でのESLシミュレーションから得られる第1のCPUモデル701のCPU性能比率を取得する(ステップS1405)。CPU性能比率を取得した場合、生成装置100は、競合特性情報120を参照して、取得したCPU性能比率に対応するアクセス競合率を取得する(ステップS1406)。そして、取得したアクセス競合率が境界値b以上であるか否かを判断する(ステップS1407)。
境界値b以上である場合(ステップS1407:Yes)、具体的には、図6の境界値bから左側の領域の場合、生成装置100は、第1のCPUモデル701のCPU性能比率が高いため静的スケジューリングすべきと判断し、第2の関数に対し、静的スケジューリングタグを登録する(ステップS1408)。すなわち、第2の関数の実行中において第1の関数が呼び出された場合は静的スケジューリングすべきとの登録をおこなう。
一方、取得したアクセス競合率が境界値b未満である場合(ステップS1407:No)、具体的には、図6の境界値bから左側の領域の場合、生成装置100は、第1のCPUモデル701のCPU性能比率が高いため動的スケジューリングすべきと判断し、第2の関数に対し、動的スケジューリングタグを登録する(ステップS1409)。すなわち、第2の関数の実行中において第1の関数が呼び出された場合は動的スケジューリングすべきとの登録をおこなう。そして、ステップS1408またはS1409のあと、ステップS1401に戻る。
図15は、情報処理装置400によるスケジューリング処理手順を示すフローチャートである。スケジューリング処理は、情報処理装置400内のOSのスケジューラ411がプロフィルタグテーブルTを参照することで実行される。
まず、情報処理装置400は、呼び出しを待ち受け(ステップS1501:No)、呼び出しがあった場合(ステップS1501:Yes)、情報処理装置400は、呼出対象アプリケーション中の呼出対象関数を特定する(ステップS1502)。一方で、情報処理装置400は、実行中アプリケーションの実行中関数を特定する(ステップS1503)。
つぎに、情報処理装置400は、呼出対象アプリケーションのプロファイルタグテーブルTを参照して、実行中関数の実行中における呼出対象関数のスケジューリング方式を取得する(ステップS1504)。たとえば、図8において、実行中関数が関数B1、呼出対象関数が関数A1とすると、“static”を読み出す。
そして、情報処理装置400は、取得したスケジューリング方式が動的スケジューリングか静的スケジューリングかを判断する(ステップS1505)。動的スケジューリングの場合(ステップS1505:動的)、情報処理装置400は、空きCPU番号を特定し(ステップS1506)、ステップS1508に移行する。なお、空きCPUがない場合は、実行中関数を実行しているCPU以外の残余のCPUで最も低負荷なCPUのCPU番号を特定することとする。
一方、静的スケジューリングの場合(ステップS1505:静的)、情報処理装置400は、実行中関数を実行中のCPUのCPU番号を特定して(ステップS1507)、ステップS1508に移行する。
ステップS1508では、情報処理装置400は、呼出対象関数の関数名およびステップS1506またはS1507で特定されたCPU番号をタスク実行テーブルに登録する(ステップS1508)。そして、情報処理装置400は、呼出対象関数のコンテキストを生成し(ステップS1509)、タスク実行テーブルを参照して、生成されたコンテキストを、特定されたCPU番号のCPUに通知する(ステップS1510)。これにより、呼出対象関数が、通知されたCPUで実行されることとなる。
つぎに、動作例について図16〜図18を用いて説明する。図16〜図18では、CPU401にはアプリケーションAが起動されており、CPU402にはアプリケーションBが起動されており、CPU403にはアプリケーションBの関数B1が実行中であり、CPU404がアイドル状態の空きCPUである。また、スケジューラ411は、たとえば、マスタとなるCPU401で実行されるものとする。この状況で、アプリケーションAの関数A1を呼び出す場合について説明する。
図16は、本実施の形態を適用しない場合の失敗例となるスケジューリングを示す説明図である。図16では、上述した実施の形態を適用しないため、関数A1が呼び出された場合、CPU401ではスケジューラ411が空きCPU404を特定し、動的スケジューリングをおこなう。すなわち、空きCPUであるCPU404に呼出対象関数である関数A1を割り当てることとなる。この場合、関数A1と関数B1との間でロック状態が頻発するため、ロック期間中のCPUパワーが無駄となる。
図17は、本実施の形態を適用した場合のスケジューリング(その1)を示す説明図である。図17は、静的スケジューリングをおこなった例である。図17では、関数A1を静的スケジューリングするため、関数A1を実行中の関数B1と同一のCPU403に割り当てる。これにより、CPU403では、関数A1と関数B1とがタイムスライス動作するため、共有メモリでのアクセス競合(オーバーヘッド)が全く発生しない。
したがって、アクセス競合による性能劣化を隠蔽することができ、CPUリソースを余すことなく使用することができる。また、関数A1はCPU404に割り当てられないため、CPU404はアイドル状態を継続することができ、電力のセーブを継続することができる。さらに、スケジューラ411は、静的スケジューリングの場合、関数B1を実行中のCPUのCPU番号の通知を受けるだけであり、空きCPUを探すといった負荷がなくなるため、スケジューリングのオーバーヘッドも発生しないこととなる。
図18は、本実施の形態を適用した場合のスケジューリング(その2)を示す説明図である。図18は、動的スケジューリングをおこなった例である。図18では、関数B3のコンテンションが低いため、空きCPU404に動的にスケジューリングしてもアクセス競合の性能劣化があっても問題なく動作することができる。
このように、本実施の形態では、可能な限り静的スケジューリングを実施することでオーバーヘッドを軽減しつつ、不確定な動作をするような状態のみにおいて動的スケジューリングを実施することができる。
特に、組み込みシステムの場合、たとえばテレビシステムなど、限られた操作とアプリケーションしか存在しないようなシステムでは比較的静的スケジューリングが有効であるが、携帯端末など、組み込みシステムでありながら任意のアプリケーションを利用者の任意のオペレーションにより操作されるような汎用的な運用を行うものにおいては、どうしても動的にスケジューリングするユースケースが多くなる。
したがって、本実施の形態を適用することで、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、従来では動的処理を余儀なくされたようなケースにおいても静的スケジューリングを行うことができる。したがって、システムパフォーマンスの向上を図ることができる。
100 生成装置
400 情報処理装置
120 競合特性情報
410 マルチコアプロセッサシステム
1001 実行部
1002 生成部
1003 特定部
1004 決定部
1005 保存部
1006 取得部
1007 検出部
1008 選択部
1009 登録部
1101 指定部
1102 検出部
1103 特定部
1104 決定部
1105 割当部
本発明は、情報を生成したり生成された情報を用いてスケジューリングをおこなう生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置に関する。
従来、スケジューリング技術として静的スケジューリングと動的スケジューリングが存在する。
静的スケジューリングとは、コンパイルの段階で実行状態を予測したコードを予め固定的なコードとして実行オブジェクトに埋めておくスケジューリング方式である。具体的には、一般的なコードプティマイズや負荷分散をおこなうための実行先CPU(Central Processing Unit)に固定的にもたせることにより、静的スケジューリングが実行される。
また、静的スケジューリングは、条件分岐処理にあたって、予め分岐比率をもとめることにより、より分岐確率の高いコードをキャッシュラインにのせるようなコード生成をおこなうことができる。静的スケジューリングは、不要なコードを埋め込むことがないため、判断を要する段階でスケジューリングに要する演算処理が入らない。したがって、スケジューリングオーバーヘッドがほとんど発生しない。
また、動的スケジューリングとは、コンパイル時に判明しない不確定要素がある場合、スケジューリングイベント時に、イベント時の状態情報(各プロセッサの負荷など)を収集し、イベント毎の最適な状態をその都度演算するスケジューリング方式である。コンパイル時に判明しない不確定要素としては、たとえば、実行開始後に演算処理量が判明したり、他のソフトウェアとの同時実行にあたって負荷状態が実行してみないとわからない状態がある。
また、スケジューリング計算はNP(Non−deterministic Polynomial)困難問題とされ、本質的に最適解を求めることは現実時間では難しく、通常は最適解に対する近似解となる(本明細書では、近似解を最適解とする)。従来は、このような最適解を得るためのさまざまなアルゴリズムが提案されている。
特開2007−328416号公報 特開2007−18268号公報 特開2000−215186号公報
しかしながら、上述した静的スケジューリングでは、分岐予測がはずれる場合や、想定外の状態が発生した場合にシステム全体のバランスがくずれてパフォーマンスが極端に落ちることがあるという問題があった。
また、スケジューラなどによるソフトウェアのオーバーヘッドを動的予測するのは効率的ではなく、すでに値が決まっているので静的解析すべきである。また、マルチコア環境で共用メモリにアクセスしたときに発生するアクセス競合といったハードウェア的なオーバーヘッドによりスケジューリング結果が乱される場合がある。
この場合、次回のパターンを予測しようとしても、次回にはパターンが変化してしまうため、動的予測する意味がない。したがって、動的スケジューリングでは、スケジューリングイベントが頻発すると、最適解をもとめるためのスケジューリングオーバーヘッドそのものがパフォーマンスを落とす要因になるという問題があった。
本発明は、上述した従来技術による問題点を解消するため、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、動的処理を余儀なくされたようなケースにおいても静的スケジューリングを行うことでシステムパフォーマンスを向上させることができる生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置を提供することを目的とする。
本実施例の一態様によると、プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求め、求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する生成方法、生成プログラム、および生成装置を提供する。
また、本実施例の他の態様によると、対象プログラムを指定し、前記対象プログラムが指定された場合、マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出し、テーブルを参照して、検出された実行中のプログラムと同時に前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定し、特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から決定し、決定されたプロセッサに前記対象プログラムを割り当てるスケジューリング方法、スケジューリングプログラム、および情報処理装置を提供する。
本生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置によれば、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、動的処理を余儀なくされたようなケースにおいても静的スケジューリングを行うことでシステムパフォーマンスを向上させることができるという効果を奏する。
本実施の形態にかかる生成装置の一実施例を示す説明図である。 プロファイルタグテーブルTの一例を示す説明図である。 負荷源Lのコード例を示す説明図である。 本実施の形態にかかる情報処理装置の一実施例を示すブロック図である。 本実施の形態にかかる第1のESLシミュレーションを示す説明図である。 競合特性情報120を示すグラフである。 本実施の形態にかかる第2のESLシミュレーションを示す説明図である。 登録後のプロファイルタグテーブルTの一例を示す説明図である。 本実施の形態にかかる生成装置100のハードウェア構成の一例を示すブロック図である。 本実施の形態にかかる生成装置100の機能的構成を示すブロック図である。 情報処理装置400の機能的構成を示すブロック図である。 本実施の形態にかかる生成装置100による第1のESLシミュレーションの処理手順を示すフローチャートである。 第2のESLシミュレーションの処理手順を示すフローチャートである。 プロファイルタグテーブルTへの登録処理手順を示すフローチャートである。 情報処理装置400によるスケジューリング処理手順を示すフローチャートである。 本実施の形態を適用しない場合の失敗例となるスケジューリングを示す説明図である。 本実施の形態を適用した場合のスケジューリング(その1)を示す説明図である。 本実施の形態を適用した場合のスケジューリング(その2)を示す説明図である。
本実施の形態では、マルチコアプロセッサシステム内の一のプロセッサで実行中のプログラム(一のアプリケーション内のプロセスやスレッド。「一の関数」。)がある場合、これから呼び出されるプログラム(他のアプリケーション内のプロセスやスレッド。「他の関数」。)をどのようにスケジューリングすべきかというスケジューリング方式を設計段階で決めておく。そして、製品化後は、設計段階で決められたスケジューリング方式でスケジューリングすることでアプリケーションを実行する。
たとえば、静的スケジューリングの場合は、他の関数を一の関数を実行中の一のプロセッサに割り当てて、一の関数と他の関数を時分割で実行することとなる。したがって、時分割実行のため、一の関数と他の関数との間でコンテンションは発生しないこととなる。
一方、動的スケジューリングの場合は、他の関数を一の関数を実行中の一のプロセッサとは異なる他のプロセッサ(たとえば空いているプロセッサ)に割り当てることとなる。
これにより、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、動的スケジューリングを余儀なくされたようなケースにおいてもできる限り静的スケジューリングを行うことでシステムパフォーマンスを向上させる。以下に添付図面を参照して詳細に説明する。
図1は、本実施の形態にかかる生成装置の一実施例を示す説明図である。生成装置100は、アプリケーションソースコードASを入力し、実装用実行コードC2およびプロファイルタグテーブルTを出力する。
生成装置100は、コンパイラ101とESL(Electronic System Level)シミュレータ102とリンカ103とを備えている。コンパイラ101は、アプリケーションソースコードASごとに評価コンパイル111と実装コンパイル112をおこなう。評価コンパイル111とは、アプリケーションソースコードASの評価用実行コードC1を生成する処理である。
評価用実行コードC1とは、通常の実行コード(図1でいう実装用実行コードC2)に、デバッグ情報が埋め込まれた実行コードである。評価オブジェクトとも言う。この埋め込まれたデバッグ情報により、評価用実行コードC1は、実装用実行コードC2よりも余計な動作をする。また、評価コンパイル111では、プロファイルタグテーブルTを生成する。
図2は、プロファイルタグテーブルTの一例を示す説明図である。プロファイルタグテーブルTは、コーリー・コーラー情報エリアと実行開始・終了時刻情報エリアとを有するテーブルである。コーリー・コーラー情報エリアとは、関数や手続きの呼出単位となるコーリー情報やコーラ−情報を記録するエリアである。また、実行開始・終了時刻情報エリアは、評価用実行コードC1内の関数の実行開始時刻と実行終了時刻とを記録するエリアである。
本実施の形態では、プロファイルタグテーブルTは、さらに、動作条件エリアを有する。動作条件エリアとは、事前評価実行時の動作条件を記録するエリアである。簡単に説明すると、対象となる関数のスケジューリング方式が記録されているが、詳細については後述する。なお、プロファイルタグテーブルTの生成時では、いずれのエリアも空の状態であり、評価用実行コードC1を実行することで埋められる。
また、図1において、ESLシミュレータ102は、ESLシミュレーションを実行する。ここで、ESLモデルとはハードウェアデバイスのビヘイビア(ふるまい)をもとに記述することによりハードウェア環境をシミュレーション化する技術である。たとえば、プロセッサのESLモデルでは命令発行の電気回路的なメカニズムをそのままシミュレーションするのではなく、発行命令とそれに要する時間で表現する。
また、バスのESLモデルでは同様に、回路メカニズムによるデータ伝播の遅延を厳密に計算するのではなく、アクセス要求により設計上のレイテンシパターンを掛け合わせて、動作と時間概念をビヘイビア(ふるまい)としてシミュレーションしていくこととなる。
従来、シミュレーションというとRTL(Register Transfer Level)などの回路設計情報をもとに実際に半導体を実装することなくシミュレーションを行うことで実デバイスと同等の動作を実現することで検証を行うために用いられていた。
しかしながら、回路レベルの詳細シミュレーションを実施するには非常に時間がかかり(通常、実デバイスのスピードに対し数千万から数億分の一の処理時間)、アプリケーションを動作させながらのシステム全体の挙動を解析するのは現実的に困難であった。一方で、ESLモデルでは処理と時間の概念をふるまいとして解析するため回路のシミュレーションをおこなうまでもなく概ねの処理時間を評価することが可能な環境である。
本実施の形態では、2種類のESLシミュレーションを実行する。1つは、競合特性情報120を生成するためのESLシミュレーションである(以下、「第1のESLシミュレーション」)。もう1つは、競合特性情報120を用いて評価用実行コードC1を実行するESLシミュレーションである(以下、「第2のESLシミュレーション」)。
まず、第1のESLシミュレーションでは、マルチコアプロセッサシステムを搭載した情報処理装置のために競合特性情報120を生成するが、競合特性情報120を生成する際のESLのシステムモデルは、マルチコアプロセッサシステムと同一構成のモデルではない。マルチコアプロセッサシステムのシステムモデルでは、CPUモデルが複数用意されるが、ここでは、CPUモデルが1つで、残余のCPUモデル群については、単一の負荷源Lとしてまとめてモデル化する。
すなわち、残余のCPUモデル群がそれぞれアプリケーションによりどのようにふるまうかは関係ない。その反面、共有メモリに対してどれだけトランザクション負荷をかけるかをみればよいため、残余のCPUモデル群を負荷源Lとしてまとめても問題なく、かえってシミュレーション速度の高速化を実現できる。
また、第1のESLシミュレーションでは、競合特性情報120を生成する場合、ESLのシステムモデル上でアクセス競合テストプログラムTPを実行することとなる。アクセス競合テストプログラムTPは、I/O系のベンチマークプログラムであり、共有リソース(たとえば、共有メモリ)に対し、リードとライトをおこなうプログラムである。
また、負荷源Lは、アクセス競合テストプログラムTP以外のプログラムを実行するCPUモデル群を擬似的に表現したモデルである。CPUモデル群がそれぞれアプリケーションにより実際にどのようにふるまうかは関係なく、共有メモリに対してどれだけトランザクション負荷をかけるかをみればよいため、負荷源Lとしてまとめても問題なく、かえってシミュレーション速度の高速化を実現できる。
図3は、負荷源Lのコード例を示す説明図である。負荷源Lは、意図的にコンテンション(競合)を発生させるプログラムである。アクセスが競合している状態の密度(アクセス競合率ρ)がパラメトリックになっている。
また、図1において、第2のESLシミュレーションでは、負荷源Lを有するESLのシステムモデルとは別に、実装するマルチコアプロセッサシステムをESLでモデル化したシステムモデル上で各評価用実行コードC1を実行する。これにより、評価用実行コードC1内の関数ごとにスケジューリング方式が決定される。そして、プロファイルタグテーブルTに登録する。
このようにして、相手方である実行中である一の関数との組み合わせにより他の関数のスケジューリング方式が決まる。このあと、コンパイラ101により各アプリケーションソースコードASを実装コンパイル112することで実装用実行コードC2群が得られる。なお、実装用実行コードC2を実行するとリンカ103によりどのプロファイルタグテーブルTと関連づけられるかがわかる。したがって、実装用実行コードC2とそれに対応するプロファイルタグテーブルTとが組み合わさって、実装用実行コードC2ごとに出力される。
図4は、本実施の形態にかかる情報処理装置の一実施例を示すブロック図である。情報処理装置400は、マルチコアプロセッサ(図4では例として4個のCPU401〜404)と共有メモリ405とがバス406で接続されたマルチコアプロセッサシステム410を搭載したコンピュータである。情報処理装置400は、たとえば、携帯電話機、PHS、スマートフォン、携帯ゲーム機、電子辞書、電子書籍端末、ノート型パソコンといった携帯型端末が挙げられる。
OS(Operating System)のスケジューラ411は、実装用実行コードC2とそのプロファイルタグテーブルTを参照し、起動しようとする実装用実行コードC2内の関数のスケジューリングをおこなう。これにより、動的または静的スケジューリングが可能となる。つぎに、図1に示したESLシミュレータ102の具体的な動作について説明する。
図5は、本実施の形態にかかる第1のESLシミュレーションを示す説明図である。ESLシミュレータ102では、CPUモデル501と図3に示した負荷源Lと共有メモリモデル502とをバスモデル503で接続したシステムモデル500を用いる。負荷源Lは、自律的にアクセス競合率ρを0〜100[%]に変化させる。たとえば、Δρ刻みで変化させる。Δρは、1[%]など任意に設定可能である。また、競合特性情報120は、アクセス競合率に対するCPUモデル501の性能を示している。
たとえば、あるアクセス競合率ρのとき、アクセス競合テストプログラムTPのスコアが、9:1(9がアクセス競合テストプログラムTPを実行したCPUモデル501、1が負荷源L)であるとすると、このアクセス競合率ρでのCPU性能比率は、90[%]となる。すなわち、負荷源Lにより10[%]性能が劣化したことを示している。
図6は、競合特性情報120を示すグラフである。図6では、横軸をアクセス競合率、縦軸をピークに対するCPU性能比率としている。ピークに対するCPU性能比率とは、負荷源Lによる負荷が無負荷状態(ρ=0)のときのCPU性能を100[%]、すなわちピークとしたときのCPU性能の比率である。
また、競合特性情報120は通常のアーキテクチャであれば、アクセス競合率が増加するにつれ、一定の値で飽和(漸近)する。ハードアービトレーションにより必ず一定周期でアクセス可能になるからである。
実際には、Δρ刻みでCPU性能比率をプロットされる。プロットされた各点を用いて最小自乗法などの周知の技術により競合特性情報120の近似式を生成する。近似式をグラフ化すると競合特性曲線600となる。そして、近似式(競合特性曲線600)から性能漸近値Zを求める。性能漸近値Zの求め方は、近似式でのρの値を無限大まで大きくしたときのCPU性能比率を求めればよい。また、単純に、ρ=100[%]のときのCPU性能比率を性能漸近値Zとしてもよい。
また、求めた性能漸近値Zに対する許容値率σを設定する。たとえば、σ=10[%]とする。性能漸近値Zのσ[%]のCPU性能比率と競合特性曲線600とが交差するときのアクセス競合率ρを境界値bとする。すなわち、境界値b以上で静的スケジューリングすべきと判断され、境界値b未満で動的スケジューリングすべきと判断される。
図6では、性能漸近値ZをCPU性能比率30[%]、許容値率σ=10[%]とすると、アクセス競合率ρ=38[%]が性能劣化の境界値bとなる。すなわち、ピーク(100[%])から70[%]分下がった性能比率を性能漸近値Zとして、性能劣化の境界となる境界値bを設けることとなる。なお、許容値率σについては、対象となるアーキテクチャ(マルチコアプロセッサシステム)に応じて設定する。
図7は、本実施の形態にかかる第2のESLシミュレーションを示す説明図である。図7では、2つのCPUモデル701,702と共有メモリモデル703とがバスモデル704に接続されたマルチコアプロセッサシステムのシステムモデル700を用いる。第2のCPUモデル702には、第2のアプリケーションC12内のプロセスやスレッドなどの第2の関数c12を割り当てて実行させておく。第1のCPUモデル701には、第2のアプリケーションC12とは異なる第1のアプリケーションC11内の呼出対象となる関数c11を割り当てる。
たとえば、第2のCPUモデル702では、アプリケーションBの関数B1が実行中であるとする。この状況で、第1の関数としてアプリケーションAの関数A1を呼び出して第1のCPUモデル701で実行させると、共有メモリモデル703にアクセス競合が発生する。そして、第1のCPUモデル701のCPU性能比率を第2のESLシミュレーションによる競合結果として取り出す。競合結果となるCPU性能比率は、第2のCPUモデル702が実行していない状態、すなわち、無負荷状態をピークとする。
そして、競合結果を競合特性情報120の近似式(競合特性曲線600)に当てはめて、競合結果(CPU性能比率)であるときの第1のCPUモデル701のアクセス競合率ρを求める。このときのアクセス競合率ρが境界値b未満である場合は、アプリケーションAの関数A1のスケジューリング方式は動的スケジューリングを選択する。
一方、境界値b以上である場合は、アプリケーションAの関数A1のスケジューリング方式は静的スケジューリングを選択する。そして、この選択されたスケジューリング方式を、アプリケーションAのプロファイルタグテーブルTの動作条件エリアに、関数B1を実行中の場合の関数A1のスケジューリング方式として登録する。
図8は、登録後のプロファイルタグテーブルTの一例を示す説明図である。図8では、アプリケーションAのプロファイルタグテーブルTの登録内容を示している。プロファイルタグテーブルTでは、関数ごとに、コーリー・コーラー情報エリア、実行開始・終了時刻情報エリア、および動作条件エリアが確保されているが、図8では、簡略化のため、コーリー・コーラー情報エリアを省略している。プロファイルタグテーブルTにおいて、『contention{』から『}//contention』までの記述が該当する関数の動作条件エリアである。
たとえば、関数A1(「funcA1」)が呼出対象関数である場合、実行中の関数が各アプリケーションB(「ApplyB」)の関数B1(「funcB1」)のときは、“static”が登録されている。すなわち、アプリケーションBの関数B1実行中に関数A1が呼ばれたら静的スケジューリングをおこなうことを示している。この場合、常に競合が発生している状態なので、静的スケジューリング、たとえば、同一のプロセッサに割り当ててタイムスライス動作させることで競合を解消する。
一方、実行中の関数が各アプリケーションBの関数B3(「FuncB3」)のときは、“dynamic”が登録されている。すなわち、アプリケーションBの関数B3実行中に関数A1が呼ばれたら動的スケジューリングをおこなうことを示している。この場合、アプリケーションBからの影響をうけにくかったり、または、動作状態によるオーバーヘッドが広域変化するため、最も負荷の軽いCPUにダイナミックに割り当てる。
図9は、本実施の形態にかかる生成装置100のハードウェア構成の一例を示すブロック図である。図9において、生成装置100は、CPU901と、ROM(Read‐Only Memory)902と、RAM(Random Access Memory)903と、磁気ディスクドライブ904と、磁気ディスク905と、光ディスクドライブ906と、光ディスク907と、ディスプレイ908と、I/F(Interface)909と、キーボード910と、マウス911と、スキャナ912と、プリンタ913と、を備えている。また、各構成部はバス900によってそれぞれ接続されている。
ここで、CPU901は、生成装置100の全体の制御を司る。ROM902は、ブートプログラムなどのプログラムを記憶している。RAM903は、CPU901のワークエリアとして使用される。磁気ディスクドライブ904は、CPU901の制御にしたがって磁気ディスク905に対するデータのリード/ライトを制御する。磁気ディスク905は、磁気ディスクドライブ904の制御で書き込まれたデータを記憶する。
光ディスクドライブ906は、CPU901の制御にしたがって光ディスク907に対するデータのリード/ライトを制御する。光ディスク907は、光ディスクドライブ906の制御で書き込まれたデータを記憶したり、光ディスク907に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ908は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ908は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)909は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク914に接続され、このネットワーク914を介して他の装置に接続される。そして、I/F909は、ネットワーク914と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F909には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード910は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス911は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ912は、画像を光学的に読み取り、生成装置100内に画像データを取り込む。なお、スキャナ912は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ913は、画像データや文書データを印刷する。プリンタ913には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(生成装置100の機能的構成)
図10は、本実施の形態にかかる生成装置100の機能的構成を示すブロック図である。生成装置100は、実行部1001と、生成部1002と、特定部1003と、決定部1004と、保存部1005と、取得部1006と、検出部1007と、選択部1008と、登録部1009と、を備える。実行部1001〜登録部1009は、具体的には、たとえば、図9に示したROM902、RAM903、磁気ディスク905などの記憶装置に記憶されたプログラムをCPU901に実行させることにより、その機能を実現する。
実行部1001は、第1のESLシミュレーションを実行する機能を有する。具体的には、たとえば、図5に示したシステムモデルにより第1のESLシミュレーションを実行する。そして、実行結果となるCPUモデルの性能に関する指標値として、たとえば、ピークに対するCPU性能比率を取得することとなる。また、第1のESLシミュレーションでは、アクセス競合率ρがΔρ刻みで0〜100[%]まで変化するため、アクセス競合率ρごとにピークに対するCPU性能比率を取得することとなる。
生成部1002は、アクセス競合率ごとに求められたプロセッサモデルの性能に関する指標値に基づいて、プロセッサの競合特性の近似式を生成する機能を有する。具体的には、実行部1001では、アクセス競合率ρごとにピークに対するCPU性能比率が取得されるため、各CPU性能比率に対し最小自乗法などの周知の技術を適用することで競合特性情報120の近似式を生成する。なお、アクセス競合が発生した場合は、指数関数または対数関数的な減衰となるため、モデルとなる曲線600は指数関数や対数関数を用いればよい。
特定部1003は、生成部1002によって生成された競合特性の近似式に基づいて、プロセッサモデルの性能に関する指標値の中から、プロセッサモデルの性能が漸近する性能漸近値Zを特定する機能を有する。具体的には、たとえば、競合特性曲線600から性能漸近値Zを求める。
決定部1004は、アクセス競合率のうち、特定部1003によって特定された性能漸近値Zに対する許容誤差値と近似式とに基づくアクセス競合率を、プロセッサモデルの性能劣化の境界値bに決定する機能を有する。具体的には、たとえば、許容値率σから得られた性能漸近値Zの許容誤差値と競合特性曲線600とが交差するアクセス競合率ρを境界値bに決定する。
保存部1005は、実行部1001、生成部1002、特定部1003および決定部1004から得られた競合特性情報120を記憶領域に保存する機能を有する。保存された競合特性情報120は、第2のESLシミュレーションに用いられる。
取得部1006は、第2のESLシミュレーションを実行して、実行結果となる性能指標値を取得する機能を有する。具体的には、たとえば、図7に示したマルチコアプロセッサシステムモデルにより第2のESLシミュレーションを実行する。そして、実行結果となる第1のCPUモデル701の性能に関する指標値として、たとえば、第1のCPUモデル701のピークに対するCPU性能比率を取得することとなる。
検出部1007は、近似式を参照して、取得部1006によって取得された指標値でのアクセス競合率を検出する機能を有する。具体的には、たとえば、取得されたCPU性能比率に対応するアクセス競合率ρを競合特性曲線600から検出する。
選択部1008は、検出されたアクセス競合率ρと境界値bとを比較することにより、第2のプログラムの実行中に第1のプログラムを実行する場合のスケジューリング方式を、動的スケジューリングまたは静的スケジューリングの中から選択する機能を有する。具体的には、たとえば、図7に示した第2のESLシミュレーションにおいて、第2の関数の実行中に第1の関数を実行する場合のスケジューリング方式を選択する。たとえば、検出されたアクセス競合率ρが境界値b以上である場合は静的スケジューリング、境界値b未満の場合は動的スケジューリングを選択する。
登録部1009は、選択部1008によって選択されたスケジューリング方式をプロファイルタグテーブルTに登録する機能を有する。具体的には、たとえば、図8に示したように、関数A1(第1の関数)について選択されたスケジューリング方式(たとえば、静的スケジューリング)のタグ“static”を関数B1と関連付けて登録する。
図11は、情報処理装置400の機能的構成を示すブロック図である。情報処理装置400は、指定部1101と、検出部1102と、特定部1103と、決定部1104と、割当部1105とを備えている。指定部1101〜割当部1105は、具体的には、たとえば、図4に示した共有メモリ405などの記憶装置に記憶されたプログラムをCPU401〜404に実行させることにより、その機能を実現する。
指定部1101は、対象プログラムを指定する機能を有する。具体的には、たとえば、呼び出されたアプリケーション内の呼出対象関数を指定する。
検出部1102は、指定部1101によって対象プログラムが指定された場合、マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する機能を有する。たとえば、指定部1101により呼出対象関数として関数A1が指定された場合、マルチコアプロセッサ内で他の関数B1を実行中のCPUを検出し、そのCPU番号を保持しておく。
特定部1103は、テーブルを参照して、検出部1102によって検出された実行中のプログラムと同時に対象プログラムを実行させる場合の対象プログラムのスケジューリング方式を特定する機能を有する。具体的には、たとえば、呼出対象関数を含むアプリケーションのプロファイルタグテーブルTを参照して、関数B1の実行中における関数A1のスケジューリング方式を読み出し、静的スケジューリングであるか動的スケジューリングであるかを特定する。“static”ならば静的スケジューリングであり、“dynamic”ならば動的スケジューリングである。
決定部1104は、特定部1103によって特定されたスケジューリング方式に従って対象プログラムを実行させるプロセッサをマルチコアプロセッサの中から決定する機能を有する。具体的には、特定部1103によって特定されたスケジューリング方式が静的スケジューリングである場合、対象プログラムを実行させるプロセッサを、対象プログラムを実行中のプログラムが割り当てられているプロセッサに決定する。たとえば、関数B1の実行中における関数A1のスケジューリング方式は静的スケジューリングであるため、関数B1を実行するCPUのCPU番号を読み出す。
一方、特定部1103によって特定されたスケジューリング方式が動的スケジューリングである場合、対象プログラムを実行させるプロセッサを、対象プログラムを実行中のプログラムが割り当てられているプロセッサ以外の残余のプロセッサのうち最も低負荷のプロセッサに決定する。
たとえば、図8を参照すると、関数B3の実行中における関数A1のスケジューリング方式は動的スケジューリングであるため、関数B1を実行するCPU以外の残余のCPU群の中から割当先に決定する。より具体的には、残余のCPU群のうちアイドル状態のCPUを割当先に決定する。アイドル状態のCPUがない場合は、残余のCPU群のうち最も低負荷なCPUを割当先に決定する。なお、CPUの負荷については既存技術によりOSが取得している。
割当部1105は、決定部1104によって決定されたプロセッサに対象プログラムを割り当てる機能を有する。具体的には、たとえば、決定部1104によって決定された割当先のCPUに、対象プログラムである呼出対象関数を通知する。より具体的には、呼出対象関数が保存されている共有メモリ内のアドレスを通知することで、割当先のCPUはその通知されたアドレスを指定して、割当先のCPU内のキャッシュメモリに読み込んで実行することとなる。
図12は、本実施の形態にかかる生成装置100による第1のESLシミュレーションの処理手順を示すフローチャートである。まず、生成装置100は、実行部1001により、システムモデル500内の負荷源Lのアクセス競合率ρをρ=0に設定する(ステップS1201)。つぎに、生成装置100は、システムモデル500についてESLシミュレーションを実行する(ステップS1202)。
このESLシミュレーションにより、生成装置100は、CPUモデル501のアクセス競合率ρでのCPU性能比率を取得する(ステップS1203)。そして、生成装置100は、実行部1001により、ρ<100[%]であるか否かを判断する(ステップS1204)。
ρ<100[%]でない場合(ステップS1204:No)、生成装置100は、現在のρにΔρを加算して(ステップS1205)、ステップS1202に戻る。一方、ρ<100[%]である場合(ステップS1204:Yes)、生成装置100は、得られたCPU性能比率から競合特性の近似式を生成する(ステップS1206)。
このあと、生成装置100は、生成された近似式から競合特性に関する性能漸近値Zを特定する(ステップS1207)。そして、生成装置100は、近似式と許容値率σから性能劣化のしきい値となる境界値bを決定する(ステップS1208)。このあと、生成装置100は、競合特性情報120として保存する記憶装置に保存する(ステップS1209)。これにより、第1のESLシミュレーションを終了する。
このように、第1のESLシミュレーションをおこなうことで、対象アーキテクチャで起こりうる競合によるCPUの統計的な性能劣化を把握することができる。つぎに、図12の第1のESLシミュレーションで得られた競合特性情報120を用いた第2のESLシミュレーションの処理手順について説明する。
図13は、第2のESLシミュレーションの処理手順を示すフローチャートである。生成装置100は、取得部1006により、事前に同時実行するアプリケーションの組み合わせを読み込んでおく。そして、生成装置100は、第1のアプリケーションとなる未選択のアプリケーション(評価用実行コードC1)があるか否かを判断する(ステップS1301)。未選択のアプリケーションがある場合(ステップS1301:Yes)、生成装置100は、未選択のアプリケーションを選択して第1のアプリケーションに設定する(ステップS1302)。
つぎに、生成装置100は、第1のアプリケーションに未選択の関数があるか否かを判断する(ステップS1303)。未選択の関数がある場合(ステップS1303:Yes)、生成装置100は、未選択の関数を選択して第1の関数に設定する(ステップS1304)。また、生成装置100は、同時実行する第2のアプリとなる未選択のアプリケーションがあるか否かを判断する(ステップS1305)。
未選択のアプリケーションがある場合(ステップS1305:Yes)、生成装置100は、未選択のアプリケーションを選択して第2のアプリケーションに設定する(ステップS1306)。つぎに、生成装置100は、第2のアプリケーションに未選択の関数があるか否かを判断する(ステップS1307)。未選択の関数がある場合(ステップS1307:Yes)、生成装置100は、未選択の関数を選択して第2の関数に設定する(ステップS1308)。
このあと、生成装置100は、第2の関数を第2のCPUモデル702に与えてESLシミュレーションを実行する(ステップS1309)。さらに、生成装置100は、第2の関数の実行中において、関数が割り当てられていない第1のCPUモデル701に第1の関数を与えて、ESLシミュレーションを実行する(ステップS1310)。これにより、第1の関数を実行する第1のCPUモデル701のCPU性能比率が得られる。
たとえば、第1のCPUモデル701と第2のCPUモデル702との共有メモリへのアクセス頻度が、7:3である場合、ピーク(100[%])に対する第1のCPUモデル701のCPU性能比率は、70[%]となる。すなわち、第2のCPUモデル702が第2の関数を実行中であるため、第1のCPUモデル701の性能が30[%]劣化したことを示している。そして、生成装置100は、ESLシミュレーションが終了するまで待ち受け(ステップS1311:No)、終了した場合(ステップS1311:Yes)、ステップS1307に戻る。
そして、ステップS1307において、未選択の関数がない場合(ステップS1307:No)、ステップS1305に戻る。また、ステップS1305において、未選択のアプリケーションがない場合(ステップS1305:No)、ステップS1303に戻る。また、ステップS1303において、第1のアプリケーションに未選択関数がない場合(ステップS1303:No)、ステップS1301に戻る。
また、ステップS1301において、第1のアプリケーションとなる未選択のアプリケーションがない場合(ステップS1301:No)、第2のESLシミュレーションを終了する。これにより、すべての関数の組み合わせについて第2のESLシミュレーションを網羅することができる。
図14は、プロファイルタグテーブルTへの登録処理手順を示すフローチャートである。図14のフローチャートに示した登録処理は、図13に示した第2のESLシミュレーションと連動して実行される。
まず、生成装置100は、図13のステップS1304において第1の関数が設定されるのを待ち受ける(ステップS1401:No)。第1の関数が設定された場合(ステップS1401:Yes)、生成装置100は、第1のアプリケーションのプロファイルタグテーブルTの動作条件エリアに第1の関数を登録する(ステップS1402)。
つぎに、生成装置100は、図13のステップS1308において第2の関数が設定されるのを待ち受ける(ステップS1403:No)。第2の関数が設定された場合(ステップS1403:Yes)、生成装置100は、第1のアプリケーションのプロファイルタグテーブルTの動作条件エリアの第1の関数の登録エリアに、第2の関数を登録する(ステップS1404)。
そして、図13のステップS1310でのESLシミュレーションから得られる第1のCPUモデル701のCPU性能比率を取得する(ステップS1405)。CPU性能比率を取得した場合、生成装置100は、競合特性情報120を参照して、取得したCPU性能比率に対応するアクセス競合率を取得する(ステップS1406)。そして、取得したアクセス競合率が境界値b以上であるか否かを判断する(ステップS1407)。
境界値b以上である場合(ステップS1407:Yes)、具体的には、図6の境界値bから左側の領域の場合、生成装置100は、第1のCPUモデル701のCPU性能比率が高いため静的スケジューリングすべきと判断し、第2の関数に対し、静的スケジューリングタグを登録する(ステップS1408)。すなわち、第2の関数の実行中において第1の関数が呼び出された場合は静的スケジューリングすべきとの登録をおこなう。
一方、取得したアクセス競合率が境界値b未満である場合(ステップS1407:No)、具体的には、図6の境界値bから左側の領域の場合、生成装置100は、第1のCPUモデル701のCPU性能比率が高いため動的スケジューリングすべきと判断し、第2の関数に対し、動的スケジューリングタグを登録する(ステップS1409)。すなわち、第2の関数の実行中において第1の関数が呼び出された場合は動的スケジューリングすべきとの登録をおこなう。そして、ステップS1408またはS1409のあと、ステップS1401に戻る。
図15は、情報処理装置400によるスケジューリング処理手順を示すフローチャートである。スケジューリング処理は、情報処理装置400内のOSのスケジューラ411がプロフィルタグテーブルTを参照することで実行される。
まず、情報処理装置400は、呼び出しを待ち受け(ステップS1501:No)、呼び出しがあった場合(ステップS1501:Yes)、情報処理装置400は、呼出対象アプリケーション中の呼出対象関数を特定する(ステップS1502)。一方で、情報処理装置400は、実行中アプリケーションの実行中関数を特定する(ステップS1503)。
つぎに、情報処理装置400は、呼出対象アプリケーションのプロファイルタグテーブルTを参照して、実行中関数の実行中における呼出対象関数のスケジューリング方式を取得する(ステップS1504)。たとえば、図8において、実行中関数が関数B1、呼出対象関数が関数A1とすると、“static”を読み出す。
そして、情報処理装置400は、取得したスケジューリング方式が動的スケジューリングか静的スケジューリングかを判断する(ステップS1505)。動的スケジューリングの場合(ステップS1505:動的)、情報処理装置400は、空きCPU番号を特定し(ステップS1506)、ステップS1508に移行する。なお、空きCPUがない場合は、実行中関数を実行しているCPU以外の残余のCPUで最も低負荷なCPUのCPU番号を特定することとする。
一方、静的スケジューリングの場合(ステップS1505:静的)、情報処理装置400は、実行中関数を実行中のCPUのCPU番号を特定して(ステップS1507)、ステップS1508に移行する。
ステップS1508では、情報処理装置400は、呼出対象関数の関数名およびステップS1506またはS1507で特定されたCPU番号をタスク実行テーブルに登録する(ステップS1508)。そして、情報処理装置400は、呼出対象関数のコンテキストを生成し(ステップS1509)、タスク実行テーブルを参照して、生成されたコンテキストを、特定されたCPU番号のCPUに通知する(ステップS1510)。これにより、呼出対象関数が、通知されたCPUで実行されることとなる。
つぎに、動作例について図16〜図18を用いて説明する。図16〜図18では、CPU401にはアプリケーションAが起動されており、CPU402にはアプリケーションBが起動されており、CPU403にはアプリケーションBの関数B1が実行中であり、CPU404がアイドル状態の空きCPUである。また、スケジューラ411は、たとえば、マスタとなるCPU401で実行されるものとする。この状況で、アプリケーションAの関数A1を呼び出す場合について説明する。
図16は、本実施の形態を適用しない場合の失敗例となるスケジューリングを示す説明図である。図16では、上述した実施の形態を適用しないため、関数A1が呼び出された場合、CPU401ではスケジューラ411が空きCPU404を特定し、動的スケジューリングをおこなう。すなわち、空きCPUであるCPU404に呼出対象関数である関数A1を割り当てることとなる。この場合、関数A1と関数B1との間でロック状態が頻発するため、ロック期間中のCPUパワーが無駄となる。
図17は、本実施の形態を適用した場合のスケジューリング(その1)を示す説明図である。図17は、静的スケジューリングをおこなった例である。図17では、関数A1を静的スケジューリングするため、関数A1を実行中の関数B1と同一のCPU403に割り当てる。これにより、CPU403では、関数A1と関数B1とがタイムスライス動作するため、共有メモリでのアクセス競合(オーバーヘッド)が全く発生しない。
したがって、アクセス競合による性能劣化を隠蔽することができ、CPUリソースを余すことなく使用することができる。また、関数A1はCPU404に割り当てられないため、CPU404はアイドル状態を継続することができ、電力のセーブを継続することができる。さらに、スケジューラ411は、静的スケジューリングの場合、関数B1を実行中のCPUのCPU番号の通知を受けるだけであり、空きCPUを探すといった負荷がなくなるため、スケジューリングのオーバーヘッドも発生しないこととなる。
図18は、本実施の形態を適用した場合のスケジューリング(その2)を示す説明図である。図18は、動的スケジューリングをおこなった例である。図18では、関数B3のコンテンションが低いため、空きCPU404に動的にスケジューリングしてもアクセス競合の性能劣化があっても問題なく動作することができる。
このように、本実施の形態では、可能な限り静的スケジューリングを実施することでオーバーヘッドを軽減しつつ、不確定な動作をするような状態のみにおいて動的スケジューリングを実施することができる。
特に、組み込みシステムの場合、たとえばテレビシステムなど、限られた操作とアプリケーションしか存在しないようなシステムでは比較的静的スケジューリングが有効であるが、携帯端末など、組み込みシステムでありながら任意のアプリケーションを利用者の任意のオペレーションにより操作されるような汎用的な運用を行うものにおいては、どうしても動的にスケジューリングするユースケースが多くなる。
したがって、本実施の形態を適用することで、システムパフォーマンスを劣化させるスケジューリングオーバーヘッドを軽減すべく、従来では動的処理を余儀なくされたようなケースにおいても静的スケジューリングを行うことができる。したがって、システムパフォーマンスの向上を図ることができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求める実行工程と、
前記実行工程によって求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する保存工程と、
を含んだことを特徴とする生成方法。
(付記2)前記実行工程により、前記アクセス競合率ごとに求められた前記プロセッサモデルの性能に関する指標値に基づいて、前記プロセッサモデルに関する競合特性の近似式を生成する生成工程を含み、
前記保存工程は、
前記生成工程によって生成された近似式を前記競合特性情報として前記記憶領域に保存することを特徴とする付記1に記載の生成方法。
(付記3)前記生成工程によって生成された競合特性の近似式に基づいて、前記プロセッサモデルの性能に関する指標値の中から、前記プロセッサモデルの性能が漸近する性能漸近値を特定する特定工程を含み、
前記保存工程は、
前記特定工程によって特定された性能漸近値を前記競合特性情報として前記記憶領域に保存することを特徴とする付記2に記載の生成方法。
(付記4)前記アクセス競合率のうち、前記特定工程によって特定された性能漸近値に対する許容誤差値と前記近似式とに基づくアクセス競合率を、前記プロセッサモデルの性能劣化の境界値に決定する決定工程を含み、
前記保存工程は、
前記許容誤差値および前記決定工程によって決定された境界値を前記競合特性情報として前記記憶領域に保存することを特徴とする付記3に記載の生成方法。
(付記5)第1のプロセッサモデルと第2のプロセッサモデルと前記第1および第2のプロセッサモデルがアクセス可能な共有メモリモデルとを表現したマルチコアプロセッサシステムモデルにおいて、第1および第2のプログラムのうち前記第2のプログラムが前記第2のプロセッサモデルで実行中に、前記第1のプログラムを前記第1のプロセッサモデルで実行させたときの前記第1のプロセッサモデルの性能に関する指標値を取得する取得工程と、
前記近似式を参照して、前記取得工程によって取得された指標値でのアクセス競合率を検出する検出工程と、
前記検出工程によって検出されたアクセス競合率と前記境界値とを比較することにより、前記第2のプログラムの実行中に前記第1のプログラムを実行する場合のスケジューリング方式を、動的スケジューリングまたは静的スケジューリングの中から選択する選択工程と、
前記選択工程によって選択されたスケジューリング方式を、前記第1のプログラムの呼出時に参照されるテーブルに登録する登録工程と、
を含んだことを特徴とする付記4に記載の生成方法。
(付記6)プログラムごとに他のプログラムと同時実行する場合のスケジューリング方式が登録され前記プログラムの呼出時に参照されるテーブルと、マルチコアプロセッサと、を備える情報処理装置が、
対象プログラムを指定する指定工程と、
前記指定工程によって前記対象プログラムが指定された場合、前記マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する検出工程と、
前記テーブルを参照して、前記検出工程によって検出された実行中のプログラムとともに前記マルチコアプロセッサで前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定する特定工程と、
前記特定工程によって特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から決定する決定工程と、
前記決定工程によって決定されたプロセッサに前記対象プログラムを割り当てる割当工程と、
を実行することを特徴とするスケジューリング方法。
(付記7)前記決定工程は、
前記特定工程によって特定されたスケジューリング方式が静的スケジューリングである場合、前記対象プログラムを実行させるプロセッサを、前記対象プログラムを前記実行中のプログラムが割り当てられているプロセッサに決定することを特徴とする付記6に記載のスケジューリング方法。
(付記8)前記決定工程は、
前記特定工程によって特定されたスケジューリング方式が動的スケジューリングである場合、前記対象プログラムを実行させるプロセッサを、前記対象プログラムを前記実行中のプログラムが割り当てられているプロセッサ以外の残余のプロセッサのうち最も低負荷のプロセッサに決定することを特徴とする付記6に記載のスケジューリング方法。
(付記9)プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求める実行工程と、
前記実行工程によって求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する保存工程と、
をコンピュータに実行させることを特徴とする生成プログラム。
(付記10)プログラムごとに他のプログラムと同時実行する場合のスケジューリング方式が登録され前記プログラムの呼出時に参照されるテーブルと、マルチコアプロセッサと、を備える情報処理装置に、
対象プログラムを指定する指定工程と、
前記指定工程によって前記対象プログラムが指定された場合、前記マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する検出工程と、
前記テーブルを参照して、前記検出工程によって検出された実行中のプログラムとともに前記マルチコアプロセッサで前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定する特定工程と、
前記特定工程によって特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から選択する選択工程と、
前記選択工程によって選択されたプロセッサに前記対象プログラムを割り当てる割当工程と、
を実行させることを特徴とするスケジューリングプログラム。
(付記11)プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求める実行手段と、
前記実行手段によって求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する保存手段と、
を備えることを特徴とする生成装置。
(付記12)プログラムごとに他のプログラムと同時実行する場合のスケジューリング方式が登録され前記プログラムの呼出時に参照されるテーブルと、マルチコアプロセッサと、を備える情報処理装置であって、
対象プログラムを指定する指定手段と、
前記指定手段によって前記対象プログラムが指定された場合、前記マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する検出手段と、
前記テーブルを参照して、前記検出手段によって検出された実行中のプログラムとともに前記マルチコアプロセッサで前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定する特定手段と、
前記特定手段によって特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から選択する選択手段と、
前記選択手段によって選択されたプロセッサに前記対象プログラムを割り当てる割当手段と、
を備えることを特徴とする情報処理装置。
100 生成装置
400 情報処理装置
120 競合特性情報
410 マルチコアプロセッサシステム
1001 実行部
1002 生成部
1003 特定部
1004 決定部
1005 保存部
1006 取得部
1007 検出部
1008 選択部
1009 登録部
1101 指定部
1102 検出部
1103 特定部
1104 決定部
1105 割当部

Claims (12)

  1. プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求める実行工程と、
    前記実行工程によって求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する保存工程と、
    を含んだことを特徴とする生成方法。
  2. 前記実行工程により、前記アクセス競合率ごとに求められた前記プロセッサモデルの性能に関する指標値に基づいて、前記プロセッサモデルに関する競合特性の近似式を生成する生成工程を含み、
    前記保存工程は、
    前記生成工程によって生成された近似式を前記競合特性情報として前記記憶領域に保存することを特徴とする請求項1に記載の生成方法。
  3. 前記生成工程によって生成された競合特性の近似式に基づいて、前記プロセッサモデルの性能に関する指標値の中から、前記プロセッサモデルの性能が漸近する性能漸近値を特定する特定工程を含み、
    前記保存工程は、
    前記特定工程によって特定された性能漸近値を前記競合特性情報として前記記憶領域に保存することを特徴とする請求項2に記載の生成方法。
  4. 前記アクセス競合率のうち、前記特定工程によって特定された性能漸近値に対する許容誤差値と前記近似式とに基づくアクセス競合率を、前記プロセッサモデルの性能劣化の境界値に決定する決定工程を含み、
    前記保存工程は、
    前記許容誤差値および前記決定工程によって決定された境界値を前記競合特性情報として前記記憶領域に保存することを特徴とする請求項3に記載の生成方法。
  5. 第1のプロセッサモデルと第2のプロセッサモデルと前記第1および第2のプロセッサモデルがアクセス可能な共有メモリモデルとを表現したマルチコアプロセッサシステムモデルにおいて、第1および第2のプログラムのうち前記第2のプログラムが前記第2のプロセッサモデルで実行中に、前記第1のプログラムを前記第1のプロセッサモデルで実行させたときの前記第1のプロセッサモデルの性能に関する指標値を取得する取得工程と、
    前記近似式を参照して、前記取得工程によって取得された指標値でのアクセス競合率を検出する検出工程と、
    前記検出工程によって検出されたアクセス競合率と前記境界値とを比較することにより、前記第2のプログラムの実行中に前記第1のプログラムを実行する場合のスケジューリング方式を、動的スケジューリングまたは静的スケジューリングの中から選択する選択工程と、
    前記選択工程によって選択されたスケジューリング方式を、前記第1のプログラムの呼出時に参照されるテーブルに登録する登録工程と、
    を含んだことを特徴とする請求項4に記載の生成方法。
  6. プログラムごとに他のプログラムと同時実行する場合のスケジューリング方式が登録され前記プログラムの呼出時に参照されるテーブルと、マルチコアプロセッサと、を備える情報処理装置が、
    対象プログラムを指定する指定工程と、
    前記指定工程によって前記対象プログラムが指定された場合、前記マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する検出工程と、
    前記テーブルを参照して、前記検出工程によって検出された実行中のプログラムとともに前記マルチコアプロセッサで前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定する特定工程と、
    前記特定工程によって特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から決定する決定工程と、
    前記決定工程によって決定されたプロセッサに前記対象プログラムを割り当てる割当工程と、
    を実行することを特徴とするスケジューリング方法。
  7. 前記決定工程は、
    前記特定工程によって特定されたスケジューリング方式が静的スケジューリングである場合、前記対象プログラムを実行させるプロセッサを、前記対象プログラムを前記実行中のプログラムが割り当てられているプロセッサに決定することを特徴とする請求項6に記載のスケジューリング方法。
  8. 前記決定工程は、
    前記特定工程によって特定されたスケジューリング方式が動的スケジューリングである場合、前記対象プログラムを実行させるプロセッサを、前記対象プログラムを前記実行中のプログラムが割り当てられているプロセッサ以外の残余のプロセッサのうち最も低負荷のプロセッサに決定することを特徴とする請求項6に記載のスケジューリング方法。
  9. プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求める実行工程と、
    前記実行工程によって求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する保存工程と、
    をコンピュータに実行させることを特徴とする生成プログラム。
  10. プログラムごとに他のプログラムと同時実行する場合のスケジューリング方式が登録され前記プログラムの呼出時に参照されるテーブルと、マルチコアプロセッサと、を備える情報処理装置に、
    対象プログラムを指定する指定工程と、
    前記指定工程によって前記対象プログラムが指定された場合、前記マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する検出工程と、
    前記テーブルを参照して、前記検出工程によって検出された実行中のプログラムとともに前記マルチコアプロセッサで前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定する特定工程と、
    前記特定工程によって特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から選択する選択工程と、
    前記選択工程によって選択されたプロセッサに前記対象プログラムを割り当てる割当工程と、
    を実行させることを特徴とするスケジューリングプログラム。
  11. プロセッサモデルと当該プロセッサモデルがアクセス可能なメモリモデルとアクセス競合率に応じて前記メモリモデルにアクセスする負荷源とを表現したシミュレーションモデルを用いてシミュレーションを実行することにより、前記プロセッサモデルの性能に関する指標値を前記アクセス競合率ごとに求める実行手段と、
    前記実行工程によって求められた前記アクセス競合率ごとの指標値を競合特性情報として記憶領域に保存する保存手段と、
    を備えることを特徴とする生成装置。
  12. プログラムごとに他のプログラムと同時実行する場合のスケジューリング方式が登録され前記プログラムの呼出時に参照されるテーブルと、マルチコアプロセッサと、を備える情報処理装置であって、
    対象プログラムを指定する指定手段と、
    前記指定手段によって前記対象プログラムが指定された場合、前記マルチコアプロセッサ内のプロセッサにより実行中のプログラムを検出する検出手段と、
    前記テーブルを参照して、前記検出手段によって検出された実行中のプログラムとともに前記マルチコアプロセッサで前記対象プログラムを実行させる場合の前記対象プログラムのスケジューリング方式を特定する特定手段と、
    前記特定手段によって特定されたスケジューリング方式に従って前記対象プログラムを実行させるプロセッサを前記マルチコアプロセッサの中から選択する選択手段と、
    前記選択手段によって選択されたプロセッサに前記対象プログラムを割り当てる割当手段と、
    を備えることを特徴とする情報処理装置。
JP2012505385A 2010-03-17 2010-03-17 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置 Pending JPWO2011114478A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/054609 WO2011114478A1 (ja) 2010-03-17 2010-03-17 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置

Publications (1)

Publication Number Publication Date
JPWO2011114478A1 true JPWO2011114478A1 (ja) 2013-06-27

Family

ID=44648607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012505385A Pending JPWO2011114478A1 (ja) 2010-03-17 2010-03-17 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置

Country Status (3)

Country Link
US (1) US20130007763A1 (ja)
JP (1) JPWO2011114478A1 (ja)
WO (1) WO2011114478A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6895719B2 (ja) 2016-06-24 2021-06-30 日立Astemo株式会社 車両制御装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259395A (ja) * 1993-03-02 1994-09-16 Toshiba Corp プロセススケジューリング方式
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
JP2002244891A (ja) * 2001-01-31 2002-08-30 Hewlett Packard Co <Hp> コンピュータシステムのパフォーマンスを自動的に改良する方法
JP2006024180A (ja) * 2004-06-10 2006-01-26 Hitachi Ltd 計算機システム及びその資源割当て方法
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008210107A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd シミュレーション方法及びシミュレーション装置
JP2010033496A (ja) * 2008-07-31 2010-02-12 Fujitsu Ltd コンピュータシステム
JP2010039678A (ja) * 2008-08-04 2010-02-18 Fujitsu Ltd 設計支援プログラム、設計支援装置、および設計支援方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3685637B2 (ja) * 1999-02-19 2005-08-24 シャープ株式会社 ディジタル放送のコンテンツ制御方法
FR2882169B1 (fr) * 2005-02-14 2007-05-25 Cofluent Design Sarl Procede de simulation d'un systeme complexe incluant une hierarchie d'ordonnanceurs, produit programme d'ordinateur et moyen de stockage correspondants
US8132172B2 (en) * 2007-03-26 2012-03-06 Intel Corporation Thread scheduling on multiprocessor systems
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259395A (ja) * 1993-03-02 1994-09-16 Toshiba Corp プロセススケジューリング方式
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
JP2002244891A (ja) * 2001-01-31 2002-08-30 Hewlett Packard Co <Hp> コンピュータシステムのパフォーマンスを自動的に改良する方法
JP2006024180A (ja) * 2004-06-10 2006-01-26 Hitachi Ltd 計算機システム及びその資源割当て方法
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008210107A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd シミュレーション方法及びシミュレーション装置
JP2010033496A (ja) * 2008-07-31 2010-02-12 Fujitsu Ltd コンピュータシステム
JP2010039678A (ja) * 2008-08-04 2010-02-18 Fujitsu Ltd 設計支援プログラム、設計支援装置、および設計支援方法

Also Published As

Publication number Publication date
WO2011114478A1 (ja) 2011-09-22
US20130007763A1 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
US10841236B1 (en) Distributed computer task management of interrelated network computing tasks
CN106462488B (zh) 调试期间的性能优化提示呈现
Huang et al. ShuffleDog: characterizing and adapting user-perceived latency of android apps
US20100107174A1 (en) Scheduler, processor system, and program generation method
JP6925473B2 (ja) 後方互換性のためのアプリケーション固有動作パラメータのリアルタイム調整
JP6695437B2 (ja) 管理計算機及びテスト環境決定方法
US9710355B2 (en) Selective loading of code elements for code analysis
US11188348B2 (en) Hybrid computing device selection analysis
US20090106730A1 (en) Predictive cost based scheduling in a distributed software build
CN112789607A (zh) 自动选择并行化程度以在数据库系统中高效执行查询的方法
CN104834599A (zh) Web安全检测方法和装置
Zhou et al. Task mapping in heterogeneous embedded systems for fast completion time
Zuk et al. Reducing response latency of composite functions-as-a-service through scheduling
EP4085336A1 (en) Computer resource leak detection
Lázaro-Muñoz et al. A tasks reordering model to reduce transfers overhead on GPUs
WO2011114478A1 (ja) 生成方法、スケジューリング方法、生成プログラム、スケジューリングプログラム、生成装置、および情報処理装置
Hauser et al. Predictability of resource intensive big data and hpc jobs in cloud data centres
CN115509926A (zh) 一种基于改进粒子群算法的多任务调度云端测试方法
JP5423876B2 (ja) 検証支援プログラム、検証支援装置、および検証支援方法
Yuan et al. Automatic enhanced CDFG generation based on runtime instrumentation
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
Talluri et al. ExDe: Design space exploration of scheduler architectures and mechanisms for serverless data-processing
Kim et al. RETRACTED ARTICLE: Simulator considering modeling and performance evaluation for high-performance computing of collaborative-based mobile cloud infrastructure
Yuqing et al. The research of performance test method for Linux process scheduling
JP4997144B2 (ja) マルチタスク処理装置およびその方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140722

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141014