(57)【要約】【課題】パフォーマンス測定ユニットを提供する。【解決手段】前記パフォーマンス測定ユニットはプロセッサコアで発生するイベントの個数を示すイベントカウント値を記録する第1イベントカウンタと、前記第1イベントカウンタに記録した前記イベントカウント値をコピーする第2イベントカウンタを含む。前記プロセッサコアがあらかじめ定められた動作モードに進入する際に、前記第2イベントカウンタは前記第1イベントカウンタに記録した前記イベントカウント値をコピーする。前記あらかじめ定められた動作モードは、オペレーティングシステムカーネルモードである。前記第1イベントカウンタに記録した前記イベントカウント値を前記第2イベントカウンタにコピーすることを選択的に許可するカウンタ設定ロジックをさらに含む【選択図】図1
2014106973.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録する第1イベントカウンタと、
前記第1イベントカウンタに記録した前記イベントカウント値をコピーする第2イベントカウンタを含むパフォーマンス測定ユニット。
【請求項２】
前記プロセッサコアがあらかじめ定められた動作モードに進入する際に、前記第2イベントカウンタは前記第1イベントカウンタに記録した前記イベントカウント値をコピーする請求項１に記載のパフォーマンス測定ユニット。
【請求項３】
前記あらかじめ定められた動作モードは、オペレーティングシステムカーネルモードである請求項２に記載のパフォーマンス測定ユニット。
【請求項４】
前記第1イベントカウンタに記録した前記イベントカウント値を前記第2イベントカウンタにコピーすることを選択的に許可するカウンタ設定ロジックをさらに含む請求項２に記載のパフォーマンス測定ユニット。
【請求項５】
前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックする請求項１に記載のパフォーマンス測定ユニット。
【請求項６】
前記プロセッサコアがあらかじめ定められた動作モードから解除する際に、前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックする請求項５に記載のパフォーマンス測定ユニット。
【請求項７】
前記プロセッサコアでイベントが発生する際、前記第1イベントカウンタに記録した前記イベントカウント値を累積して記録するカウンタ更新ロジックをさらに含む請求項１に記載のパフォーマンス測定ユニット。
【請求項８】
プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録するイベントカウンタと、
前記イベントカウンタに記録した前記イベントカウント値をコピーするためのシャドウカウンタを含み、
前記イベントカウンタに記録した前記イベントカウント値は第1命令に従い前記シャドウカウンタにコピーするパフォーマンス測定ユニット。
【請求項９】
前記シャドウカウンタにコピーした前記イベントカウント値は第2命令に従い前記イベントカウンタにコピーバックする請求項８に記載のパフォーマンス測定ユニット。
【請求項１０】
前記第1命令は、前記プロセッサコアがオペレーティングシステムカーネルモードに進入する際に発生し、
前記第2命令は前記プロセッサコアがオペレーティングシステムカーネルモードから解除される際に発生する請求項９に記載のパフォーマンス測定ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パフォーマンス測定ユニットに関するものである。
【背景技術】
【０００２】
プロファイリングとは、実行中のプログラムの実行状態やオペレーティングシステムカーネルとの通信状態などを解析することを示す。プロファイリングによりプログラムの性能情報を測定し、プログラムの実行において性能低下の要因などを見つけることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、マルチタスキングオペレーティングシステムシステムで高機能のプロセスプロファイリングが可能なパフォーマンス測定ユニットを提供するものである。
【０００４】
本発明が解決しようとする課題は、以上で言及した課題に限定されず、言及されていないまた他の課題は次の記載から当業者に明確に理解できるであろう。
【課題を解決するための手段】
【０００５】
前記課題を解決するための本発明のパフォーマンス測定ユニットの一実施形態は、プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録する第1イベントカウンタと、前記第1イベントカウンタに記録した前記イベントカウント値をコピーする第2イベントカウンタを含む。
【０００６】
本発明のいくつかの実施形態で、前記プロセッサコアがあらかじめ定められた動作モードに進入する際に、前記第2イベントカウンタは前記第1イベントカウンタに記録した前記イベントカウント値をコピーし得る。
【０００７】
また、前記あらかじめ定められた動作モードは、オペレーティングシステムカーネルモードであり得る。
【０００８】
また、前記第1イベントカウンタに記録した前記イベントカウント値を前記第2イベントカウンタにコピーすることを選択的に許可するカウンタ設定ロジックをさらに含み得る。
【０００９】
本発明のいくつかの実施形態で、前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックし得る。
【００１０】
また、前記プロセッサコアがあらかじめ定められた動作モードから解除される際に、前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックし得る。
【００１１】
本発明のいくつかの実施形態で、前記プロセッサコアでイベントが発生する際、前記第1イベントカウンタに記録した前記イベントカウント値を累積して記録するカウンタ更新ロジックをさらに含み得る。
【００１２】
前記課題を解決するための本発明のパフォーマンス測定ユニットの他の一実施形態は、プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録するイベントカウンタと、前記イベントカウンタに記録した前記イベントカウント値をコピーするためのシャドウカウンタを含み、前記イベントカウンタに記録した前記イベントカウント値は第1命令に従い前記シャドウカウンタにコピーできる。
【００１３】
本発明のいくつかの実施形態で、前記第1命令は前記プロセッサコアが オペレーティングシステムカーネルモードに進入する際に発生し得る。
【００１４】
本発明のいくつかの実施形態で、前記シャドウカウンタにコピーした前記イベントカウント値は第2命令に従い前記イベントカウンタにコピーバックし得る。
【００１５】
また、前記第2命令は前記プロセッサコアがオペレーティングシステムカーネルモードから解除される際に発生し得る。
【００１６】
本発明のその他具体的な内容は詳細な説明及び図面に含まれている。
【図面の簡単な説明】
【００１７】
【図１】本発明の第1実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。
【図２】本発明の第2実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。
【図３】本発明の第3実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。
【図４】本発明の第1実施形態によるプロセスプロファイリング方法を説明するための概略的なフローチャートである。
【図５】本発明の第2実施形態によるプロセスプロファイリング方法を説明するための概略的なフローチャートである。
【図６】本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化を説明するための概略的な図である。
【図７】本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化を説明するための概略的な図である。
【図８】本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化を説明するための概略的な図である。
【図９】本発明の第1実施形態によるプロセッサコアを説明するための概略的なブロック図である。
【図１０】本発明の第2実施形態によるプロセッサコアを説明するための概略的なブロック図である。
【図１１】本発明のいくつかの実施形態によるプロセッサコアを含むプロファイリングシステムを説明するための概略的なブロック図である。
【図１２】本発明のいくつかの実施形態によるプロセッサコアを含む電子システムを説明するための概略的なブロック図である。
【図１３】本発明のいくつかの実施形態によるプロセッサコアを適用できる例示的な電子システムである。
【図１４】本発明のいくつかの実施形態によるプロセッサコアを適用できる例示的な電子システムである。
【発明を実施するための形態】
【００１８】
本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、特許請求の範囲によってのみ定義される。
【００１９】
一つの素子（ｅｌｅｍｅｎｔｓ）が他の素子と「接続された（ｃｏｎｎｅｃｔｅｄ  ｔｏ）」または「カップリングされた（ｃｏｕｐｌｅｄ  ｔｏ）」と記載される概念は、他の素子と直接連結またはカップリングされた場合または中間に他の素子を介在する場合をすべて含む。反面、一つの素子が他の素子と「直接接続された（ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ  ｔｏ）」または「直接カップリングされた（ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ  ｔｏ）」と記載されるものは中間に他の素子を介在しないことを示す。明細書全体にかけて同一参照符号は同一構成要素を意味しし、「および／または」は、言及されたアイテムのそれぞれおよび一つ以上のすべての組合せを含む。
【００２０】
各ブロックは特定の論理的機能を行うための一つ以上の実行可能なインストラクションを含むモジュール、セグメントまたはコードの一部を示すことができる。また、いくつの代替実行例では、ブロックで言及された機能が下記の順序とは異なって発生することも可能であるということに注目せねばならない。例えば、連続して図示されている２つのブロックは、実質的に同時に行われてもよく、またはそのブロックが時々該当する機能によって逆順に行われてもよい。
【００２１】
第１、第２などが多様な素子、構成要素を説明するために使用されるが、これら素子、構成要素及び／またはセクションはこれらの用語によって限定されないことはいうまでもない。これらの用語は、単に一つ構成要素またはセクションを他の素子、構成要素またはセクションと区別するために使用するものである。したがって、以下で言及される第１構成要素、第１構成要素または第１セクションは本発明の技術的思想内で第２構成要であり得ることは勿論である。
【００２２】
本明細書で使用された用語は実施形態を説明するためであり、本発明を限定しようとするものではない。本明細書で、単数型は文句で特に言及しない限り複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ）」および／または「含む（ｃｏｍｐｒｉｓｉｎｇ）」は言及された構成要素、ステップ、動作および／または素子は一つ以上の他の構成要素、ステップ、動作および／または素子の存在または追加を排除しない。
【００２３】
他に定義されなければ、本明細書で使用されるすべての用語（技術および科学的用語を含む）は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞典に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。
【００２４】
以下では添付する図面を参照して本発明の実施形態について詳細に説明する。
【００２５】
以下で使用するパフォーマンス測定ユニット(PMU、Performance Measurement Unit)は、プロセッサコア(processor core)の内部構成要素であって、プロセッサコアで発生するイベントを測定する構成要素を示す。ここで、プロセッサコアで発生するイベントとは、本発明が属する技術分野で通常の知識を有する者に、クロックサイクル(clock cycles)、メモリ動作(memory operations;例えば、読み取り(reads)、書き込み(writes))、キャッシュイベント(cache event、例えば、ヒット(hits)、ミス(misses)、ライトバック(writebacks))、実行命令(execution instructions)などを示す意味として理解されるが、これに限定されるものではない。
【００２６】
PMUカウンタ(PMU counter)は、PMUの内部に備えるレジスタ(register)であって、PMUカウンタはプロセッサコアで発生するイベントの個数をカウント(count)し、これを累積したPMUイベントカウント(PMU event count)値を記録する。PMUはソフトウェア的にプログラミングされ得、PMUカウンタは特殊なアセンブリ命令などにより読み取り、書き込みが可能である。
【００２７】
以下では説明の便宜のため、PMUイベントカウント値をイベントカウント値と略称する。
【００２８】
ランタイム(RTE、Runtime Enviroment）と オペレーティングシステム(OS、Operating System)はハードウェアを管理し、マルチタスキング(multitasking)及びプロセススケジューリング(process scheduling)をサポートする。
【００２９】
プロセススケジューリング(process scheduling)とは、時分割システム(time sharing system)をサポートするオペレーティングシステムカーネル(OSkernel)により、所定の優先順位に従い中央処理ユニット(CPU、Central Processing Unit)の使用時間を分割して多数のプロセス(process)を実行させることを示す。本発明の実施形態では、Linuxカーネルをオペレーティングシステムカーネルの一例として説明する。
【００３０】
図1は、本発明の第1実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。
【００３１】
図1を参照すると、本発明の第1実施形態によるパフォーマンス測定ユニット(PMU、100)はカウンタ更新ロジック(Update Logic、110)、イベントカウンタ(Event Counter、120)、シャドウイベントカウンタ(Shadowed Event Counter、130)、カウンタ設定ロジック(Configuration Logic、140)を含む。
【００３２】
カウンタ更新ロジック110は、プロセッサコアでイベントが発生する際、イベントカウンタ120に記録したイベントカウント値を累積して記録する。カウンタ更新ロジック110はプロセッサコアで発生するイベントを測定する度に、イベントカウンタ120に記録したイベントカウント値が更新されるようにする。
【００３３】
イベントカウンタ120にはプロセッサコアで発生するイベントの個数を示すイベントカウント値が記録される。イベントカウンタ120に記録したイベントカウント値は、後述するオペレーティングシステムカーネルによって特殊なアセンブリ命令を利用して参照される。
【００３４】
シャドウイベントカウンタ130は、イベントカウンタ120に記録したイベントカウント値をコピー(copy)する。また、イベントカウンタ120はシャドウイベントカウンタ130にコピーしたイベントカウント値をコピーバック(copy-back)する。シャドウイベントカウンタ130に記録したイベントカウント値も、後述するオペレーティングシステムカーネルによって特殊なアセンブリ命令を利用して参照される。
【００３５】
イベントカウンタ120とシャドウイベントカウンタ130は前述したPMUカウンタに含まれる。
【００３６】
カウンタ設定ロジック140は、イベントカウンタ120とシャドウイベントカウンタ130の全般的な動作を設定する。
【００３７】
カウンタ設定ロジック140による設定により、プロセッサコアの動作モードが転換される際、イベントカウンタ120に記録したイベントカウント値がシャドウイベントカウンタ130にコピーされたり、シャドウイベントカウンタ130に記録したイベントカウント値がイベントカウンタ120にコピーされる。
【００３８】
これによって、プロセッサコアがあらかじめ定められた第1動作モードに進入する際に、シャドウイベントカウンタ130はイベントカウンタ120に記録したイベントカウント値をコピーする。または、プロセッサコアがあらかじめ定められた第1動作モードから解除（release）し、あらかじめ定められた第2動作モードに進入する際に、イベントカウンタ120はシャドウイベントカウンタ130にコピーしたイベントカウント値をコピーバックする。
【００３９】
ここで、あらかじめ定められた第1動作モードは例えば、カーネルモード(kernel mode)であって、あらかじめ定められた第2動作モードは例えば、ユーザモード(user mode)である。
【００４０】
カーネルモードの場合、プロセッサコアは他のハードウェアに対するアクセスが制限されず、メモリに直接アクセスすることができ、CPUのすべての命令を実行する。これに対し、ユーザモードの場合、プロセッサコアは他のハードウェアやメモリへのアクセスが制限され、システムAPIにより、他のハードウェアやメモリに間接的にアクセスする。また、プロセッサコアはCPUの一部の命令のみを実行する。多くのアプリケーションはこのようなユーザモードで実行される。
【００４１】
カーネルモードとユーザモードの区別は本発明が属する技術分野で通常の知識を有する者に自明であるため、以下詳細な説明は省略する。
【００４２】
一方、カウンタ設定ロジック140による設定により、プロセッサコアの動作モードが転換されても、イベントカウンタ120に記録したイベントカウント値がシャドウイベントカウンタ130にコピーされない場合や、シャドウイベントカウンタ130に記録したイベントカウント値がイベントカウンタ120にコピーされない場合もある。
【００４３】
これによって、プロセッサコアがあらかじめ定められた第1動作モードに進入する際に、シャドウイベントカウンタ130がイベントカウンタ120に記録したイベントカウント値をコピーすることを選択的に許可し得る。または、プロセッサコアがあらかじめ定められた第1動作モードから解除され、あらかじめ定められた第2動作モードに進入する際に、イベントカウンタ120がシャドウイベントカウンタ130にコピーしたイベントカウント値をコピーバックすることを選択的に許可し得る。
【００４４】
その他にも、後述するように特定の命令により、 オペレーティングシステムカーネルによって、シャドウイベントカウンタ130に特定のイベントカウント値が書き込まれるか、またはオペレーティングシステムカーネルによってシャドウイベントカウンタ130から特定のイベントカウント値が読み取れる。
【００４５】
一方、図1を参照して説明した本発明の第1実施形態によるパフォーマンス測定ユニット100は、カウンタ更新ロジック110、イベントカウンタ120、シャドウイベントカウンタ130、カウンタ設定ロジック140の他、多数のロジックとレジスタなどをさらに含み得る。これに関する詳細な説明は本発明の要旨が不明確になる恐れがあるため、詳細な説明は省略する。
【００４６】
また、イベントカウンタ120とシャドウイベントカウンタ130の動作を設定するためのカウンタ設定ロジック140は、一体で形成されず、イベントカウンタ120に対応する第1カウンタ設定ロジックと、シャドウイベントカウンタ130に対応する第2カウンタ設定ロジックに分離して形成する場合もある。
【００４７】
図2は、本発明の第2実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。説明の便宜のため、図1との差異点を重点に説明する。
【００４８】
図2を参照すると、本発明の第2実施形態によるパフォーマンス測定ユニット200は、複数のイベントカウンタ(221,222)を含む。また、複数のイベントカウンタの(221,222)それぞれに対応する複数のシャドウイベントカウンタ(231,232)を含む。
【００４９】
第1イベントカウンタ221には、第1イベントカウント値、例えばプロセッサコアで発生するキャッシュヒット(cache hits)をカウントした結果が累積して記録され、第2イベントカウンタ222には第2イベントカウント値、例えばプロセッサコアで発生するキャッシュミス(cache misses)をカウントした結果が累積して記録されるが、これに限定されるものではない。
【００５０】
また、第1シャドウカウンタ231は第1イベントカウンタ221に記録した第1イベントカウント値をコピーし、第1イベントカウンタ221は第1シャドウカウンタ231にコピーした第1イベントカウント値をコピーバックする。第2シャドウカウンタ232は、第2イベントカウンタ222に記録した第2イベントカウント値をコピーし、第2イベントカウンタ222は第2シャドウカウンタ232にコピーした第2イベントカウント値をコピーバックする。
【００５１】
図2は、パフォーマンス測定ユニット200が第1イベントカウンタ221、第2イベントカウンタ222を含むことを図示するが、イベントカウンタの個数がこれに限定されるものではない。
【００５２】
本発明の第2実施形態によるパフォーマンス測定ユニット200によれば、パフォーマンス測定ユニット200は製造社が提供する仕様によって多数のイベントカウンタを含み得、各イベントカウンタが測定して記録するイベントカウントはそれぞれ同一であるかまたは異なる場合もある。
【００５３】
図3は、本発明の第3実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。説明の便宜上、図2と差異点を重点に説明する。
【００５４】
図3を参照すると、本発明の第3実施形態によるパフォーマンス測定ユニット300はサイクルカウンタ321を含む。また、サイクルカウンタ321に対応するシャドウサイクルカウンタ331を含む。
【００５５】
サイクルカウンタ321には、例えばプロセッサコアで発生するクロックサイクルをカウントした結果が累積して記録される。
【００５６】
また、シャドウサイクルカウンタ331はサイクルカウンタ321に記録したサイクルカウント値をコピーし、サイクルカウンタ321はシャドウサイクルカウンタ331にコピーしたサイクルカウント値をコピーバックする。
【００５７】
本発明の第3実施形態によるパフォーマンス測定ユニット300によれば、パフォーマンス測定ユニット300は、特定のイベントのみをカウントするように形成されたPMUカウンタを含む。図3ではパフォーマンス測定ユニット300がサイクルカウンタ321を含むことを図示するが、これに限定されるものではなく、キャッシュヒットまたはキャッシュミスをカウントした結果を記録するキャッシュカウンタなどを含む場合もある。
【００５８】
以下では図4ないし図5を参照して本発明のいくつかの実施形態によるパフォーマンス測定ユニットを利用し、オペレーティングシステムカーネルでプロセスをプロファイリングする方法を説明する。
【００５９】
図4は、本発明の第1実施形態によるプロセスプロファイリング方法を説明するための概略的なフローチャートである。
【００６０】
図4を参照すると、先にプロセッサコアは少なくとも一つのプロセスを実行し、少なくとも一つのプロセスに含まれた命令が実行される(S410)。
【００６１】
次いで、パフォーマンス測定ユニットは、少なくとも一つのプロセスを実行するあいだ発生するイベントカウント値を測定し、イベントカウンタに記録してイベントカウンタを更新する(S420)。ここで、イベントは前述したように、クロックサイクル、メモリ動作、キャッシュベント、実行命令などを含む。
【００６２】
次いで、パフォーマンス測定ユニットは第1イベントが発生するかどうか、例えばプロセッサコアがカーネルモードに進入するかを判断する(S430)。この際、プロセッサコアがカーネルモードに進入することは、ハードウェアまたはソフトウェア的に判断される。例えば、パフォーマンス測定ユニットはプロセッサコアの動作モードを示すピンを含み、前記ピンの値に応じてプロセッサコアがカーネルモードに進入するか、またはカーネルモードから解除されるかを判断する。
【００６３】
次いで、第1イベントが発生したと判断すると、パフォーマンス測定ユニットはイベントカウンタに記録したイベントカウント値をシャドウイベントカウンタにコピーする(S440)。
【００６４】
一方、第1イベントが発生していないと判断すると、パフォーマンス測定ユニットは第2イベントが発生するか、例えばプロセッサコアがカーネルモードから解除され、ユーザモードに進入するかを判断する(S450)。
【００６５】
次いで、第2イベントが発生したと判断すると、パフォーマンス測定ユニットはシャドウイベントカウンタにコピーしたイベントカウント値をイベントカウンタにコピーバックする(S460)。次いで、プロセッサコアは少なくとも一つのプロセスに含まれた命令がすべて実行されて終了したかどうかを判断する(S470)。少なくとも一つのうち何れか一つのプロセスでも終了していないと判断すると、S410のステップを繰り返す。
【００６６】
前記のような過程において、オペレーティングシステムカーネルはイベントカウンタまたはシャドウイベントカウンタに記録したイベントカウント値を参照し、モニタリングプロセスはオペレーティングシステムカーネルから前記イベントカウント値を伝達されてプロセスプロファイリングを行う。
【００６７】
図5は、本発明の第2実施形態によるプロセスプロファイリング方法を説明するための概略的なフローチャートである。説明の便宜上、図4との差異点を重点に説明する。
【００６８】
図5を参照すると、先ずプロセッサコアは少なくとも一つのプロセスを実行して少なくとも一つのプロセスに含まれた命令が実行される(S510)。
【００６９】
次いで、パフォーマンス測定ユニットは少なくとも一つのプロセスを実行するあいだ発生するイベントカウント値を測定し、イベントカウンタに記録してイベントカウンタを更新する(S520)。ここで、イベントは前述したように、クロックサイクル、メモリ動作、キャッシュベント、実行命令などを含む。
【００７０】
次いで、パフォーマンス測定ユニットは第1イベントが発生するかどうか、例えばプロセッサコアがカーネルモードに進入するかを判断する(S530)。
【００７１】
次いで、第1イベントが発生したと判断すると、パフォーマンス測定ユニットは、イベントカウンタに記録したイベントカウント値をシャドウイベントカウンタにコピーすることが許可されるかどうかを判断する(S540)。この際、コピーが許可されるかどうかはカウンタ設定ロジックによる設定により判断される。
【００７２】
次いで、コピーが許可されると、パフォーマンス測定ユニットはイベントカウンタに記録したイベントカウント値をシャドウイベントカウンタにコピーする(S550)。
【００７３】
一方、第1イベントが発生しないと判断すると、パフォーマンス測定ユニットは第2イベントが発生するかどうか、例えばプロセッサコアがカーネルモードから解除されてユーザモードに進入するかを判断する(S560)。
【００７４】
次いで、第2イベントが発生したと判断すると、パフォーマンス測定ユニットはシャドウイベントカウンタにコピーしたイベントカウント値をイベントカウンタにコピーバックすることが許可されるかどうかを判断する(S570)。この際、コピーバックが許可されるかどうかはカウンタ設定ロジックによる設定により判断される。
【００７５】
次いで、コピーバックが許可されると、パフォーマンス測定ユニットはシャドウイベントカウンタにコピーしたイベントカウント値をイベントカウンタにコピーバックする(S580)。
【００７６】
次いで、プロセッサコアは少なくとも一つのプロセスに含まれた命令がすべて実行され、終了したかどうかを判断する(S590)。少なくとも一つのプロセスがすべて終了していないと判断すると、S510のステップを繰り返す。
【００７７】
本発明の第2実施形態によるプロセスプロファイリング方法によれば、イベントカウンタに記録したイベントカウント値をシャドウイベントカウンタにコピーすることと、シャドウイベントカウンタにコピーしたイベントカウント値をイベントカウンタにコピーバックすることを選択的に許可する。
【００７８】
以下では、図6ないし図8を参照して本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化について説明する。図6ないし図8は、本発明のいくつかの実施形態によるプロセスプロファイリング方法に従うイベントカウント値の変化を説明するための概略的な図である。
【００７９】
図6を参照すると、プロセッサコアの動作モードはユーザモードとカーネルモード(kernel)で転換し、ユーザモードでは第1プロセスprocess 1が実行されている。「X」はプロセッサコアでイベントが発生したことを示す。
【００８０】
第1プロセスが実行される前にt1の時点で、シャドウイベントカウンタのイベントカウント値(shadowed counter value)は0に初期化する(reset)。
【００８１】
次いで、t1とt2との間でプロセッサコアはカーネルモードで動作し、2回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値(counter value)は2を記録する。
【００８２】
また、t2の時点で、プロセッサコアの動作モードはカーネルモードからユーザモードに転換する。この際、シャドウイベントカウンタに記録したイベントカウント値0がイベントカウンタにコピーされ、イベントカウンタのイベントカウント値は0を記録する。
【００８３】
次いで、t2とt3との間でプロセッサコアはユーザモードで動作しながら第1プロセスを実行させ、3回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値は3を記録する。
【００８４】
また、t3の時点で、プロセッサコアの動作モードはユーザモードからカーネルモードに転換する。この際、イベントカウンタに記録したイベントカウント値3がシャドウイベントカウンタにコピーされ、シャドウイベントカウンタのイベントカウント値は3を記録する。
【００８５】
次いで、t3とt4との間でプロセッサコアはカーネルモードで動作し、2回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値は5を記録する。
【００８６】
また、t4の時点で、プロセッサコアの動作モードはカーネルモードからユーザモードに転換する。この際、シャドウイベントカウンタに記録したイベントカウント値3がイベントカウンタにコピーされ、イベントカウンタのイベントカウント値は3を記録する。
【００８７】
次いで、t4とt5との間でプロセッサコアはユーザモードで動作しながら第1プロセスを実行させ、3回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値は6を記録する。
【００８８】
また、t5の時点で、プロセッサコアの動作モードはユーザモードからカーネルモードに転換する。この際、イベントカウンタに記録したイベントカウント値6がシャドウイベントカウンタにコピーされ、シャドウイベントカウンタのイベントカウント値は6を記録する。
【００８９】
一般的なPMUは、プロセッサコア単位、より詳細にはCPU単位のイベントを測定するため、図6のような場合、イベントカウンタに記録したイベントカウント値は12である。しかし、本発明のいくつかの実施形態によるプロセスプロファイリング方法によれば、イベントカウント値は、t5の時点以後のシャドウイベントカウンタに記録したイベントカウント値を参照する場合、第1プロセスの実行時の発生した有効なイベントのみがカウントされ、6を示す。
【００９０】
図7は、図6と異なってインターラプトルーチンが追加された場合を図示する。説明の便宜上、図6との差異点を重点に説明する。
【００９１】
図7を参照すると、t3とt4との間でプロセッサコアはカーネルモードで動作し、2回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値(counter value)は5を記録する。また、インターラプトが発生してプロセッサコアがインターラプト(interrupt)ルーチンを実行する前に、オペレーティングシステムカーネルはシャドウイベントカウンタに記録したイベントカウント値(shadowed counter value) 3を読み取って格納する(read)。
【００９２】
次いで、t4とt5との間でプロセッサコアはインターラプトルーチンを実行し、3回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値は6を記録する。
【００９３】
また、t5の時点で、プロセッサコアの動作モードはカーネルモードに転換する。この際、イベントカウンタに記録したイベントカウント値6がシャドウイベントカウンタにコピーされ、シャドウイベントカウンタのイベントカウント値は6を記録する。
【００９４】
次いで、t5とt6との間でプロセッサコアはカーネルモードで動作し、2回のイベントが発生する。この際、パフォーマンス測定ユニットによって測定されたイベントカウンタのイベントカウント値は8を記録する。また、プロセッサコアがインターラプトルーチンの実行を完了した後、ユーザモードに転換する前に、オペレーティングシステムカーネルはシャドウイベントカウンタに前に格納したイベントカウント値3を書き込む(write)。
【００９５】
また、t6の時点で、プロセッサコアの動作モードはカーネルモードからユーザモードに転換する。この際、シャドウイベントカウンタに記録したイベントカウント値3がイベントカウンタにコピーされ、イベントカウンタのイベントカウント値は3を記録する。
【００９６】
本発明のいくつかの実施形態によるプロセスプロファイリング方法によれば、第1プロセスprocess 1が実行されるあいだインターラプトが発生する場合も、インターラプトルーチンが実行する前にシャドウイベントカウンタに記録したイベントカウント値を読み取り、別に格納し、インターラプトルーチンの実行が完了した後、別に格納したイベントカウント値をシャドウイベントカウンタに再び書き込む方法により、イベントカウント値は、第1プロセスの実行時に発生した有効なイベントのみがカウントされ、6を示す。
【００９７】
図8は、図7と別にインターラプトルーチンではない第2プロセスが追加された場合を図示する。
【００９８】
図8を参照すると、プロセッサコアが多重タスキングを行い、第1プロセスprocess 1と第2プロセスprocess 2を同時に実行する場合も、図7を参照して説明した内容と実質的に同じ方法により、第1プロセスの実行時に発生した有効なイベントのみがカウントされる。この場合、第1プロセスは第2プロセスと区別され、オペレーティングシステムカーネルによってプロファイリング対象になる対象プロセスである。
【００９９】
高機能のプロセスプロファイリング、例えば特定のプロセスのプロファイリングは オペレーティングシステムカーネルがスケジューリングをすることにおいて非常に重要である。しかし、前述したように一般的なPMUはプロセッサコア単位、より詳細にはCPU単位のイベントを測定するだけである。これによって、一般的なPMUはCPUがユーザモードで動作するか、カーネルモードで動作するか、または現在実行中であるプロセスはいかなるものかは考慮せず、CPU単位のイベントのみを測定するだけである。
【０１００】
RTEまたはOSがPMUカウンタを利用して高機能のプロセスプロファイリングを遂行するためには、特定のプロセスがスケジューリングされる直前にイベント測定を開始し、特定のプロセスがスケジュールアウトするとすぐにイベント測定を中止しなければならない。また、特定のプロセスの実行中に発生したインターラプトはイベント測定から除外しなければならない。しかし、実際的に特定のプロセスがスケジューリングされる直前と特定のプロセスがスケジュールアウトした直後、イベント測定を開始し、中止させる特定のコードを挿入することは不可能である。特定のプロセスをスケジューリングする時点から数命令の前、また特定のプロセスをスケジュールアウトした時点から数命令後にのみ、イベント測定を開始し、中止することができるため、イベントカウント値が不正確な場合がある。また、イベント測定を開始し、中止させるため、挿入した特定のコードが実行される度にオーバーヘッドが発生する。
【０１０１】
しかし、本発明のいくつかの実施形態によるプロセスプロファイリング方法によると、PMUが自動的にイベントカウント値を保存(save)し、再格納(restore)するため、高機能のプロセスプロファイリングが可能である。
【０１０２】
また、シャドウイベントカウンタのイベントカウント値はインターラプトをハンドリングするあいだも読み取り・書き込みが可能であるため、インターラプトルーチンを実行する直前にイベント測定を中止させる特定のコードを挿入する必要はなく、追加的なオーバーヘッドも発生しない。
【０１０３】
一方、本発明のいくつかの実施形態によるパフォーマンス測定ユニットは、シャドウイベントカウンタという追加的なハードウェアが要求されるが、32ないし64ビットの少なくとも一つのレジスタのみで可能であるため、ハードウェア的なオーバーヘッドは大きくない。
【０１０４】
以下では、本発明のいくつかの実施形態によるパフォーマンス測定ユニットを含むプロセッサコアについて説明する。図9は、本発明の第1実施形態によるプロセッサコアを説明するための概略的なブロック図である。
【０１０５】
図9を参照すると、本発明の第1実施形態によるプロセッサコア1000はCPU1200、PMU1100を含む。
【０１０６】
CPU1200はオペレーティングシステムカーネルのスケジューリングに従い少なくとも一つのプロセスを実行する。PMU1100はCPU1200が少なくとも一つのプロセスを実行するあいだプロセッサコア1000で発生するイベントカウント値を測定する。
【０１０７】
PMU1100は、図1ないし図3を参照して説明した本発明のいくつかの実施形態によるパフォーマンス測定ユニットと同一であるため、詳細な説明は省略する。
【０１０８】
一方、プロセッサコア1000はシャドウイベントカウンタの動作のための追加命令を含むISA(Instruction Set Architecture、1300)を提供する。
【０１０９】
プロセッサコア1000は、イベントカウンタに記録したイベントカウント値をシャドウイベントカウンタにコピーする第1命令を提供する。プロセッサコア1000は、シャドウイベントカウンタにコピーしたイベントカウント値をイベントカウンタにコピーバックする第2命令を提供することもできる。第1命令と第2命令はプロセッサコアの動作モードが転換される際に発生する。例えば、第1命令はプロセッサコアがカーネルモードに進入する際に発生し、第2命令はプロセッサコアがカーネルモードから解除され、ユーザモードに進入する際に発生する。
【０１１０】
また、プロセッサコア1000はイベントカウンタとシャドウイベントカウンタに記録したイベントカウント値を読み取るための第3命令と、イベントカウンタとシャドウイベントカウンタにイベントカウント値を書き込むための第4命令を提供する。例えば、プロセッサコア1000がARM系列である場合、第3命令はMRC命令であり、第4命令はMCR命令である。また、MRCないしMCR命令にはシャドウイベントカウンタに関する新たな因子が追加される。
【０１１１】
また、プロセッサコア1000にはイベントカウンタとシャドウイベントカウンタとの間のコピーを設定する各種命令などが提供される。
【０１１２】
図10は、本発明の第2実施形態によるプロセッサコアを説明するための概略的なブロック図である。説明の便宜上、図9との差異点を重点に説明する。
【０１１３】
図10を参照すると、本発明の第2実施形態によるプロセッサコア2000は、マルチ プロセッサコアである。図10でプロセッサコア2000は第1 CPU2200と第2 CPU2400を含むことを図示するが、本発明がこれに限定されるものではない。マルチプロセッサコア2000はCPU(2200,2400)の個数に対応するようにPMU(2100,2300)を含む。
【０１１４】
図11は、本発明のいくつかの実施形態によるプロセッサコアを含むプロファイリングシステムを説明するための概略的なブロック図である。
【０１１５】
図11を参照すると、プロファイリングシステムはモニタリングプロセス4000、対象プロセス5000、オペレーティングシステムカーネル3000、プロセッサコア1000を含む。
【０１１６】
モニタリングプロセス4000は、対象プロセス5000を追跡(tracing)し、対象プロセス5000の実行過程中のプロセッサコア1000で発生するイベントをモニタする。
【０１１７】
モニタリングプロセス4000は対象プロセス5000のアドレス空間にアクセスする。Linuxなどのオペレーティングシステムで一般的なプロセスは他のユーザプロセスのアドレス空間及びレジスタに対して直接アクセスできない。しかし、モニタリングプロセス4000は例外的に他のユーザプロセスのアドレス空間及びレジスタに対してアクセスできるように許可される。
【０１１８】
一方、モニタリングプロセス4000はオペレーティングシステムカーネル3000に直接アクセスできない。本発明の実施形態ではオペレーティングシステムカーネル3000で収集したイベントカウント情報をモニタリングプロセス4000に伝達するため、イベントカウント情報の項目が追加されたリソース使用情報(resource usage statistics)を利用することができるが、これに限定されるものではない。リソース使用情報はオペレーティングシステムカーネル3000で、プロセスのリソース使用統計を有する資料構造であって、例えばLinuxのwait4因子中のstruct rusageを含むが、これに限定されるものではない。
【０１１９】
対象プロセス5000はモニタリングプロセス4000の追跡対象になるユーザプロセスであって、図11では一つの対象プロセスのみを図示するが、本発明がこれに限定されるものではない。
【０１２０】
プロセッサコア1000はPMU1100とCPU1200を含む。プロセッサコア1000は図9ないし図10を参照して説明したプロセッサコアと同じであるため、詳細な説明は省略する。
【０１２１】
オペレーティングシステムカーネル3000は周期的にイベントカウンタに記録したイベントカウント値を取得する。より詳細には、オペレーティングシステムカーネル3000はシャドウイベントカウンタからプロセッサコア1000がカーネルモードに進入する際のイベントカウント値を取得する。これによって、オペレーティングシステムカーネル3000はプロセッサコア1000が対象プロセスの実行を開始する瞬間に正確にイベント測定を開始することができる。
【０１２２】
オペレーティングシステムカーネル3000は前述したように、イベントカウント値を読み取るためMRC命令などを利用することができ、イベントカウント値を書き込むためMCR命令などを利用することができる。
【０１２３】
プロセススケジューラ3100は所定の優先順位に従いCPU1200の使用時間を分割し、多数のプロセスをスケジューリングと実行させる。
【０１２４】
一方、図11を参照して説明した内容とは異なって、オペレーティングシステムカーネル3000がモニタリングプロセス4000の機能を選択的に行うこともできる。この場合、オペレーティングシステムカーネル3000の内部に各種プロファイリング情報が記録される。
【０１２５】
図12は、本発明のいくつかの実施形態によるプロセッサコアを含む電子システムを説明するための概略的なブロック図である。
【０１２６】
電子システム6000は、コントローラ(CONTROLLER、6400)、入出力装置(I/O、6100)、記憶装置(MEM、6200)、インターフェース(INTERFACE、6300)及びバス6600を含む。コントローラ6400、入出力装置6100、記憶装置6200及び/またはインターフェース6300はバス6600を介して結合される。バス660はデータが移動する通路(path)に該当する。
【０１２７】
コントローラ6400は、マイクロプロセッサ、デジタル信号プロセス、マイクロコントローラ、およびこれらと類似の機能を行うことができる論理素子のうち少なくとも一つを含む。入出力装置6100はキーパッド(keypad)、キーボード及びディスプレイ装置などを含む。記憶装置6200はデータ及び/または命令などを格納する。インターフェース6300は通信ネットワークにデータを伝送するかまたは通信ネットワークからデータを受信する機能を行う。インターフェース6300は有線または無線形態である。例えば、インターフェース6300はアンテナまたは有無線トランシーバーなどを含む。図示していないが、電子システム6000はコントローラ6400の動作を向上させるための動作メモリであって、高速のDRAM及び/またはSRAMなどをさらに含む場合もある。
【０１２８】
図9ないし図10を参照して説明した本発明のいくつかの実施形態によるプロセッサコアはコントローラ6400の一部として提供することができる。
【０１２９】
電子システム6000は個人携帯用情報端末機(PDA、personal digital assistant)ポータブルコンピュータ(portable computer)、ウェブタブレット(web tablet)、無線電話機(wireless phone)、モバイルフォン(mobile phone)、デジタルミュージックプレーヤ(digital music player)、メモリカード(memory card)、または情報を無線環境で送信及び/または受信できるすべての電子製品に適用される。
【０１３０】
図13ないし図14は、本発明のいくつかの実施形態によるプロセッサコアを適用できる例示的な電子システムである。図13は、ノートブックであり、図14は、タブレットパソコンを図示する。本発明のいくつかの実施形態によるプロセッサコアは例示していない他の集積回路装置にも適用され得ることは当業者に自明である。  
【０１３１】
本発明の実施形態と関連して説明した方法またはアルゴリズムのステップはプロセッサによって実行されるハードウェア、ソフトウェアモジュール、またはこの2つの結合により実現することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、着脱型ディスク、CD-ROM、または当業界に知らされた任意の他の形態のコンピュータで判読可能な記録媒体に常駐することもある。例示的な記録媒体は、プロセッサにカップリングされ、そのプロセッサは記録媒体から情報を判読することができ、記録媒体に情報を書込することができる。他の方法としては、記録媒体はプロセッサと一体型であり得る。プロセッサ及び格納媒体は特定用途向け集積回路(ASIC)内に常駐することもできる。ASICはユーザ端末機内に常駐する場合もある。他の方法では、プロセッサ及び格納媒体はユーザ端末機内に個別コンポーネントとして常駐する場合もある。
【０１３２】
以上添付する図面を参照して本発明の実施形態について説明したが、本発明が属する技術分野で通常の知識を有する者は、本発明が、その技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施され得ることを理解することができる。したがって、上記実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
【符号の説明】
【０１３３】
100  パフォーマンス測定ユニット
110  カウンタ更新ロジック
120  イベントカウンタ
130  シャドウイベントカウンタ
140  カウンタ設定ロジック
200  パフォーマンス測定ユニット
210  カウンタ更新ロジック
221  第1イベントカウンタ
222  第2イベントカウンタ
231  第1シャドウイベントカウンタ
232  第2シャドウイベントカウンタ
240  カウンタ設定ロジック
300  パフォーマンス測定ユニット
310  カウンタ更新ロジック
321  サイクルカウンタ
322  第1イベントカウンタ
323  第2イベントカウンタ
331  シャドウサイクルカウンタ
332  第1シャドウイベントカウンタ
333  第2シャドウイベントカウンタ
340  カウンタ設定ロジック
【図１】
2014106973.tif 000003
【図２】
2014106973.tif 000004
【図３】
2014106973.tif 000005
【図４】
2014106973.tif 000006
【図５】
2014106973.tif 000007
【図１０】
2014106973.tif 000008
【図１１】
2014106973.tif 000009
【図１２】
2014106973.tif 000010
【図１３】
2014106973.tif 000011
【図１４】
2014106973.tif 000012
【図６】
2014106973.tif 000013
【図７】
2014106973.tif 000014
【図８】
2014106973.tif 000015
【図９】
2014106973.tif 000016