パフォーマンス測定ユニット

Download PDF

Info

Publication number
JP2014106973A
Authority
JP
Grant status
Application
Patent type
Prior art keywords
event
counter
measurement
unit
value
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
JP2013238617A
Other languages
English (en)
Inventor
Min-Ju Lee
▲敏▼周 李
Egger Bernhard
ベルンハルト・エガー
Jae-Jin Lee
在鎭 李
Eiraku Kin
永洛 金
Hong-Gyu Kim
鴻圭 金
Hong-June Kim
洪準 金
Original Assignee
Samsung Electronics Co Ltd
三星電子株式会社Samsung Electronics Co.,Ltd.
Seoul National Univ R&Db Foundation
ソウル ナショナル ユニバーシティ アールアンドディビー ファウンデーション
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Abstract

【課題】パフォーマンス測定ユニットを提供する。
【解決手段】前記パフォーマンス測定ユニットはプロセッサコアで発生するイベントの個数を示すイベントカウント値を記録する第1イベントカウンタと、前記第1イベントカウンタに記録した前記イベントカウント値をコピーする第2イベントカウンタを含む。前記プロセッサコアがあらかじめ定められた動作モードに進入する際に、前記第2イベントカウンタは前記第1イベントカウンタに記録した前記イベントカウント値をコピーする。前記あらかじめ定められた動作モードは、オペレーティングシステムカーネルモードである。前記第1イベントカウンタに記録した前記イベントカウント値を前記第2イベントカウンタにコピーすることを選択的に許可するカウンタ設定ロジックをさらに含む
【選択図】図1

Description

本発明は、パフォーマンス測定ユニットに関するものである。

プロファイリングとは、実行中のプログラムの実行状態やオペレーティングシステムカーネルとの通信状態などを解析することを示す。プロファイリングによりプログラムの性能情報を測定し、プログラムの実行において性能低下の要因などを見つけることができる。

本発明が解決しようとする課題は、マルチタスキングオペレーティングシステムシステムで高機能のプロセスプロファイリングが可能なパフォーマンス測定ユニットを提供するものである。

本発明が解決しようとする課題は、以上で言及した課題に限定されず、言及されていないまた他の課題は次の記載から当業者に明確に理解できるであろう。

前記課題を解決するための本発明のパフォーマンス測定ユニットの一実施形態は、プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録する第1イベントカウンタと、前記第1イベントカウンタに記録した前記イベントカウント値をコピーする第2イベントカウンタを含む。

本発明のいくつかの実施形態で、前記プロセッサコアがあらかじめ定められた動作モードに進入する際に、前記第2イベントカウンタは前記第1イベントカウンタに記録した前記イベントカウント値をコピーし得る。

また、前記あらかじめ定められた動作モードは、オペレーティングシステムカーネルモードであり得る。

また、前記第1イベントカウンタに記録した前記イベントカウント値を前記第2イベントカウンタにコピーすることを選択的に許可するカウンタ設定ロジックをさらに含み得る。

本発明のいくつかの実施形態で、前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックし得る。

また、前記プロセッサコアがあらかじめ定められた動作モードから解除される際に、前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックし得る。

本発明のいくつかの実施形態で、前記プロセッサコアでイベントが発生する際、前記第1イベントカウンタに記録した前記イベントカウント値を累積して記録するカウンタ更新ロジックをさらに含み得る。

前記課題を解決するための本発明のパフォーマンス測定ユニットの他の一実施形態は、プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録するイベントカウンタと、前記イベントカウンタに記録した前記イベントカウント値をコピーするためのシャドウカウンタを含み、前記イベントカウンタに記録した前記イベントカウント値は第1命令に従い前記シャドウカウンタにコピーできる。

本発明のいくつかの実施形態で、前記第1命令は前記プロセッサコアが オペレーティングシステムカーネルモードに進入する際に発生し得る。

本発明のいくつかの実施形態で、前記シャドウカウンタにコピーした前記イベントカウント値は第2命令に従い前記イベントカウンタにコピーバックし得る。

また、前記第2命令は前記プロセッサコアがオペレーティングシステムカーネルモードから解除される際に発生し得る。

本発明のその他具体的な内容は詳細な説明及び図面に含まれている。

本発明の第1実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。 本発明の第2実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。 本発明の第3実施形態によるパフォーマンス測定ユニットを説明するための概略的なブロック図である。 本発明の第1実施形態によるプロセスプロファイリング方法を説明するための概略的なフローチャートである。 本発明の第2実施形態によるプロセスプロファイリング方法を説明するための概略的なフローチャートである。 本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化を説明するための概略的な図である。 本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化を説明するための概略的な図である。 本発明のいくつかの実施形態によるプロセスプロファイリング方法によるイベントカウント値の変化を説明するための概略的な図である。 本発明の第1実施形態によるプロセッサコアを説明するための概略的なブロック図である。 本発明の第2実施形態によるプロセッサコアを説明するための概略的なブロック図である。 本発明のいくつかの実施形態によるプロセッサコアを含むプロファイリングシステムを説明するための概略的なブロック図である。 本発明のいくつかの実施形態によるプロセッサコアを含む電子システムを説明するための概略的なブロック図である。 本発明のいくつかの実施形態によるプロセッサコアを適用できる例示的な電子システムである。 本発明のいくつかの実施形態によるプロセッサコアを適用できる例示的な電子システムである。

本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、特許請求の範囲によってのみ定義される。

一つの素子(elements)が他の素子と「接続された(connected to)」または「カップリングされた(coupled to)」と記載される概念は、他の素子と直接連結またはカップリングされた場合または中間に他の素子を介在する場合をすべて含む。反面、一つの素子が他の素子と「直接接続された(directly connected to)」または「直接カップリングされた(directly coupled to)」と記載されるものは中間に他の素子を介在しないことを示す。明細書全体にかけて同一参照符号は同一構成要素を意味しし、「および/または」は、言及されたアイテムのそれぞれおよび一つ以上のすべての組合せを含む。

各ブロックは特定の論理的機能を行うための一つ以上の実行可能なインストラクションを含むモジュール、セグメントまたはコードの一部を示すことができる。また、いくつの代替実行例では、ブロックで言及された機能が下記の順序とは異なって発生することも可能であるということに注目せねばならない。例えば、連続して図示されている2つのブロックは、実質的に同時に行われてもよく、またはそのブロックが時々該当する機能によって逆順に行われてもよい。

第1、第2などが多様な素子、構成要素を説明するために使用されるが、これら素子、構成要素及び/またはセクションはこれらの用語によって限定されないことはいうまでもない。これらの用語は、単に一つ構成要素またはセクションを他の素子、構成要素またはセクションと区別するために使用するものである。したがって、以下で言及される第1構成要素、第1構成要素または第1セクションは本発明の技術的思想内で第2構成要であり得ることは勿論である。

本明細書で使用された用語は実施形態を説明するためであり、本発明を限定しようとするものではない。本明細書で、単数型は文句で特に言及しない限り複数型も含む。明細書で使用される「含む(comprises)」および/または「含む(comprising)」は言及された構成要素、ステップ、動作および/または素子は一つ以上の他の構成要素、ステップ、動作および/または素子の存在または追加を排除しない。

他に定義されなければ、本明細書で使用されるすべての用語(技術および科学的用語を含む)は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞典に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。

以下では添付する図面を参照して本発明の実施形態について詳細に説明する。

以下で使用するパフォーマンス測定ユニット(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 カウンタ設定ロジック

Claims (10)

  1. プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録する第1イベントカウンタと、
    前記第1イベントカウンタに記録した前記イベントカウント値をコピーする第2イベントカウンタを含むパフォーマンス測定ユニット。
  2. 前記プロセッサコアがあらかじめ定められた動作モードに進入する際に、前記第2イベントカウンタは前記第1イベントカウンタに記録した前記イベントカウント値をコピーする請求項1に記載のパフォーマンス測定ユニット。
  3. 前記あらかじめ定められた動作モードは、オペレーティングシステムカーネルモードである請求項2に記載のパフォーマンス測定ユニット。
  4. 前記第1イベントカウンタに記録した前記イベントカウント値を前記第2イベントカウンタにコピーすることを選択的に許可するカウンタ設定ロジックをさらに含む請求項2に記載のパフォーマンス測定ユニット。
  5. 前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックする請求項1に記載のパフォーマンス測定ユニット。
  6. 前記プロセッサコアがあらかじめ定められた動作モードから解除する際に、前記第1イベントカウンタは前記第2イベントカウンタにコピーした前記イベントカウント値をコピーバックする請求項5に記載のパフォーマンス測定ユニット。
  7. 前記プロセッサコアでイベントが発生する際、前記第1イベントカウンタに記録した前記イベントカウント値を累積して記録するカウンタ更新ロジックをさらに含む請求項1に記載のパフォーマンス測定ユニット。
  8. プロセッサコアで発生するイベントの個数を示すイベントカウント値を記録するイベントカウンタと、
    前記イベントカウンタに記録した前記イベントカウント値をコピーするためのシャドウカウンタを含み、
    前記イベントカウンタに記録した前記イベントカウント値は第1命令に従い前記シャドウカウンタにコピーするパフォーマンス測定ユニット。
  9. 前記シャドウカウンタにコピーした前記イベントカウント値は第2命令に従い前記イベントカウンタにコピーバックする請求項8に記載のパフォーマンス測定ユニット。
  10. 前記第1命令は、前記プロセッサコアがオペレーティングシステムカーネルモードに進入する際に発生し、
    前記第2命令は前記プロセッサコアがオペレーティングシステムカーネルモードから解除される際に発生する請求項9に記載のパフォーマンス測定ユニット。

Also Published As

Publication number Publication date Type
EP2790106A2 (en) 2014-10-15 application
US20140149078A1 (en) 2014-05-29 application
EP2790106A3 (en) 2015-04-22 application
CN103838539A (zh) 2014-06-04 application
KR20140066914A (ko) 2014-06-03 application

Similar Documents

Publication Publication Date Title
Yi et al. Simulation of computer architectures: Simulators, benchmarks, methodologies, and recommendations
US5675729A (en) Method and apparatus for performing on-chip measurement on a component
US20090158067A1 (en) Saving power in a computer system
US20070294693A1 (en) Scheduling thread execution among a plurality of processors based on evaluation of memory access data
Nagasaka et al. Statistical power modeling of GPU kernels using performance counters
US20060230317A1 (en) System and method for benchmarking
US20080148240A1 (en) Method and apparatus for call stack sampling to obtain information for analyzing idle states in a data processing system
US20110145498A1 (en) Instrumentation of hardware assisted transactional memory system
Joseph et al. Prefetching using Markov predictors
US20020147965A1 (en) Tracing out-of-order data
US7086035B1 (en) Method and system for counting non-speculative events in a speculative processor
US20090199190A1 (en) System and Method for Priority-Based Prefetch Requests Scheduling and Throttling
US20050086660A1 (en) System and method for CPI scheduling on SMT processors
US20110055838A1 (en) Optimized thread scheduling via hardware performance monitoring
US5193179A (en) Activity monitor system non-obtrusive statistical monitoring of operations on a shared bus of a multiprocessor system
US20070220495A1 (en) Method and apparatus for profiling execution of code using multiple processors
US20050154812A1 (en) Method and apparatus for providing pre and post handlers for recording events
Peir et al. Bloom filtering cache misses for accurate data speculation and prefetching
US7239980B2 (en) Method and apparatus for adaptive tracing with different processor frequencies
US20050081183A1 (en) System and method for CPI load balancing in SMT processors
Zilles et al. A programmable co-processor for profiling
US5727167A (en) Thresholding support in performance monitoring
Gordon-Ross et al. Frequent loop detection using efficient nonintrusive on-chip hardware
US6539500B1 (en) System and method for tracing
Yoon et al. Adaptive granularity memory systems: A tradeoff between storage efficiency and throughput

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141226