JP4925973B2 - 装置、システム、方法およびプログラム - Google Patents

装置、システム、方法およびプログラム Download PDF

Info

Publication number
JP4925973B2
JP4925973B2 JP2007215235A JP2007215235A JP4925973B2 JP 4925973 B2 JP4925973 B2 JP 4925973B2 JP 2007215235 A JP2007215235 A JP 2007215235A JP 2007215235 A JP2007215235 A JP 2007215235A JP 4925973 B2 JP4925973 B2 JP 4925973B2
Authority
JP
Japan
Prior art keywords
memory
logic
flag
channel
access operation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007215235A
Other languages
English (en)
Other versions
JP2008071339A (ja
Inventor
ジェイ. ニューバーン、クリス
シブ、クマー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2008071339A publication Critical patent/JP2008071339A/ja
Application granted granted Critical
Publication of JP4925973B2 publication Critical patent/JP4925973B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Description

本発明は、コンピューティングおよびコンピュータシステムの分野に関し、より詳しくは、コンピュータシステム内のメモリに対するアドレス、命令、データまたは他の参照を検出することの分野に関する。
コンピュータプログラムによりメモリに対する様々な参照を追跡すべく、参照ポイントにより注釈をつけることができる(計装など)プログラムを走らせるコンピュータシステムがある。例えば、コンピュータプログラムによりアクセスされるアドレス範囲を追跡する計装コードを含み得るコンピュータもあり、特定のアドレス範囲へのアクセスに応答していくらかの動作がとられることもある。一般的に、プログラムの一のメモリアクセスと、複数のメモリアドレスまたは値のある試験範囲との比較、および/または、特定のメモリ範囲へのアクセスに応答してある機能を実行することに用いられるロジックは、ソフトウェアプログラムまたはルーチン内に実装される。
ソフトウェアにおけるメモリアクセスの比較動作の実行は、モニタされることができるメモリアクセスのタイプ、数、および、頻度を制限する可能性があり、それは、それらチェックするのに必要なソフトウェアを実行することに付随するオーバーヘッドなどの理由による。一般に、メモリアクセスフィルタリングまたはモニタリングなどの機能をモニタするソフトウェアプログラムが大きくなるにつれ、コンピュータシステムの性能は低下し、その一方で、コードサイズは拡大する。それによって、より大きなコードを格納できるデバイスが必要になり、システムコストは上昇する。
本発明の実施形態は、コンピュータシステムに関する。より詳しくは、本発明の少なくとも1つの実施形態は、コンピュータシステムにおけるメモリアクセスに関連するアクセスまたは情報を検出しかつフィルタリングする技術に関する。
一実施形態では、コンピュータプログラムまたは他のロジックによるメモリへのアクセスがモニタでき、また、それに応答して、プロセッサ内の回路に実装されるようなハードウェアロジックと、1つまたはそれ以上のソフトウェア命令との組み合わせを用いて様々な動作が実行される。一実施形態では、「チャネル」などのハードウェア・プログラマブルロジックは、様々なメモリ領域または様々なデータ値のアクセスを検出し、それら検出されたアクセスに応答してチャネル内でプログラムされた様々なシナリオに従い機能を実行すべく用いられてよい。
一実施形態では、特定のシナリオ、または、シナリオの組み合わせの発生は、これらの発生に応答して機能を実行するハンドラルーチンを呼び出すフォールトのような成果イベントをトリガしてよい。
一実施形態において、メモリ参照またはアクセスの発生を検出し、それに応答するロジックは、ハードウェアロジック内に実装されているので、メモリ参照/アクセスの役割を果たすソフトウェアは、オーバーヘッドコードによる負担が少ない。これにより、メモリアクセス/参照が検出され、ソフトウェア内で処理される場合より、ソフトウェアはより効率的に、より高いパフォーマンスレベルで実行できるようになる。さらに、少なくとも1つの実施形態では、検出され得る様々なメモリアクセスおよび参照の数、タイプ、および、組み合わせにおいてより柔軟性が見込まれる。
一実施形態では、ハードウェアに定義されたシナリオは、モニタされるべきソフトウェアプログラム内に命令または他のコードを含むことにより、プログラム内の様々なメモリアクセスをモニタすることができ、プログラムが実行された場合、それは、シナリオに、コード内の他の命令を検出させる。
例えば、一実施形態では、「センチネル」命令などの命令は、メモリ領域にアクセスする命令または命令のグループに予めプログラム順で挿入されてもよい。センチネルがプログラムを走らせるプロセッサと遭遇するかまたはプロセッサにより実行された後、そのプロセッサまたは他のプロセッサ内の対応する一のまたは複数のチャネルは、センチネルに続きプログラム順で実行される命令に含まれるか関連するデータ、アドレス、または、他の情報に対し、様々な比較動作を実行してよい。また、チャネルにプログラムされているという条件がセンチネルに続く命令のプログラム順での実行により満たされる場合、その条件は、フォールトのような成果イベントをトリガすることができ、それに応答してハンドラは、機能を実行することができる。
一実施形態では、線形または物理アドレスの範囲へのアクセスは、1つまたはそれ以上のチャネルにアクセスを検出させ、それに応答して機能を実行させるセンチネルによりプログラム順で先行する命令または命令のグループによりアクセスされてよい。他の実施形態では、線形または物理メモリアドレスに格納されるデータまたはデータの範囲は、これらデータまたはデータ範囲を格納する役割を果たすプログラム順の命令に先立つ1つまたはそれ以上のセンチネルの検出に応答して1つまたはそれ以上のシナリオを実行する1つまたはそれ以上のチャネルにより検出されてよい。さらに、一実施形態では、分岐ターゲットまたは分岐ターゲット範囲への制御の移行は、分岐予測動作を実行する役割を果たすプログラム順の命令に先立つ1つまたはそれ以上のセンチネルの検出に応答して1つまたはそれ以上のシナリオを実行する1つまたはそれ以上のチャネルにより検出されてよい。他の実施形態では、他のメモリ参照またはアクセスは、プログラム内のセンチネルの検出に応答していくつかのシナリオを実行するチャネルをプログラムすることにより検出されてよい。さらに、メモリ参照またはアクセスの1つまたはそれ以上の組み合わせ(例えば一のメモリアクセスに対応するデータまたはアドレス)は、チャネルにより実行されるシナリオを組み合わせることにより、1つまたはそれ以上のチャネル内で検出されてよい。
一実施形態では、データへのポインタが「スタック」外のプログラムに公開された場合、データが簡単に上書きされるスタックのようなさらなる一時記憶域よりむしろ「ヒープ」のようなグローバルメモリ領域をプログラムスレッド、または、他の命令シーケンスが使用できるようするべく、領域フィルタリング技術が用いられてよい。より詳しくは、一実施形態では、ヒープ(「キンダーガルテン」)の部分は、このキンダーガルテンへのポインタが他のプログラムまたはスレッドに公開されているかどうかに関わらず、1つまたはそれ以上のプログラムスレッドに特に割り当てられてよい。なぜなら、ポインタをヒープ(「ゴミ収集」)に維持する既存の技術は、キンダーガルテンへのアクセスを有するそれらのスレッドのみのためにキンダーガルテンに適用されるかもしれないからである。一実施形態では、メモリアクセスフィルタリング技術は、一のまたは複数のスレッドがヒープ全体に関わるゴミ収集オーバヘッドを招くことなく、スタックの一時的品質を回避できるよう、スタックが情報を格納し、アクセスできるようにするより、むしろ、スレッドがヒープキンダーガルテンを使用するようにできる。
図1は、一実施形態に従う、実行資源の条件をモニタできるシステムを示す。図1の実施形態では、実行資源105、モニタ110、および、イネーブルロジック120は、命令を実行できるプロセッサ100の一部を形成する。いくつかの実施形態では、実行資源は、単一の構成要素または集積回路に集積できるハードウェア資源を含んでよい。しかしながら、実行資源は、プログラム命令の実行時に使用することもできるソフトウェアまたはファームウェア資源、あるいは、ハードウェアおよびソフトウェアおよび/またはファームウェアの任意の組み合わせを含んでよい。例えば、ファームウェアは、抽象概念層の一部として用いられるか、または、ソフトウェアのように、ハードウェアの処理に機能を追加してもよい。ソフトウェアは、また、命令セットの1部またはすべてをエミュレートするか、または処理中の支援をするために用いられてもよい。
プロセッサは、命令を実行する種々の異なるタイプのいずれであってもよい。例えば、プロセッサは、縮小命令セットコンピューティング(RISC)プロセッサ、複合命令セットコンピューティング(CISC)プロセッサ、超長命令語(VLIW)プロセッサ、または、任意のハイブリッドまたは他のプロセッサタイプであってよい。さらに、ネットワークまたは通信プロセッサ、コプロセッサ、埋込み型プロセッサ、圧縮エンジン、グラフィックプロセッサなどの専用プロセッサが開示された技術に用いられてもよい。集積化が引き続きトレンドであり、プロセッサがより複雑になるにつれ、内部パフォーマンスインジケータをモニタし、それに反応することの必要はさらに高まる可能性があり、それはここに開示される技術にとってさらに望ましいことである。しかしながら、この技術の領域の目覚しい進歩により、開示された技術がプログラムシーケンスを実行する複雑なハードウェアに普及しているにも関わらず、それらの用途すべてを予見することは難しい。
図1に示すように、プロセッサ100は、メモリなどの記憶媒体150に結合される。記憶媒体150は、様々な階層レベルを有するメモリサブシステムであってよく、階層レベルは、キャッシュメモリ、ダイナミック・ランダム・アクセス・メモリなどのシステムメモリ、フラッシュメモリ(メモリスティックなど)の不揮発性メモリ、磁気または光ディスクの様々なレベルを含むがこれらに限定されない。図に示すように、記憶媒体は、プログラム160、ハンドラおよび/またはサービススレッド170の命令などの他のスレッド命令を格納する。さらに、メモリは、一のまたは複数のプログラムスレッドが実行資源内の様々なイベントのモニタリングに応答して展開されかつ最適化される管理されたランタイム環境155を格納してよい。
モニタ110が望ましいイベントをモニタできるようにすべく、モニタ110は、特定の条件が検出されるように、または、特定のミクロアーキテクチャイベントが伝えられるように、実行資源の様々な部分に結合されてよい。信号ラインは、モニタ110への経路を定められてよく、あるいは、モニタは、関連する資源と共に効果的に配置されるか集積化されてよい。モニタ110は、様々なプログラマブルロジック、あるいは、ソフトウェアまたはファームウェア要素を含んでよい。少なくとも1つの実施形態では、モニタ110は、構造上定義されたイベントの組み合わせ、または、成果イベントをトリガするために用いられ得る「シナリオ」に関連する1つまたはそれ以上のアーキテクチャまたはミクロアーキテクチャイベントをモニタするようプログラムされてよい。
一実施形態では、シナリオを実装するようプログラムされるロジックは、より精巧なシナリオを組み立てるべく、個別にまたは組み合わせて用いられることができるハードウェアチャネル内に含まれる。一実施形態では、シナリオは、ソフトウェア命令または命令のグループを用いてプログラムされてよい。さらに、一実施形態では、チャネルは、多数のチャネルに格納された、多数の相互関係のあるシナリオを実行するチャネル読み取り命令を実行することにより、他のチャネルと論理的に関連付けられてよい。または、モニタ110は、一のシナリオに関連する特定の条件または条件のセットを検出すべくハードウェアに組み込まれてよい。
したがって、図1に示されるシステムは、1つまたはそれ以上のアーキテクチャイベント、または、「成果イベント」を支持してよい。成果イベントは、現在走っている命令ストリームからチャネルの成果イベントサービスルーチンへと実行を移す。チャネルのサービスルーチンは、現在走っている命令ストリームの同じプロセス/コンテキストに属する。チャネルに関連するシナリオがトリガされると、成果イベントに信号が送られる。
モニタ110は、様々なイベントまたは条件を追跡し、検出されるようプログラムされるイベントまたは条件が発生する場合、実行資源105は、そうしなければプログラムが続く通常の制御フローを途絶えさせるよう信号が送られる。図1に示すように、途絶は、結果としてスレッドスイッチの発生と呼ばれるイベントハンドラを生じる。少なくとも1つの別の実施形態では、モニタ110によりモニタされるイベントまたは条件が生じる場合には、必ずしもプログラムの通常制御フローの途絶はトリガされない。その代わりに、チャネル1300のような、アーキテクチャ状態記憶素子のグループの1つまたはそれ以上は、一のシナリオに対するすべての条件がモニタ110によって検出された場合は成果イベントが生じるべきかどうかを示すよう利用されてよい。すなわち、チャネルがプログラムされ得る場合、その結果シナリオが検出されると、成果イベントが生じる。チャネル内にこのような指示がない場合、シナリオが満足していることが検出されたにもかかわらず、成果イベントを生じないこともある。
一実施形態では、図1に示されるプロセッサ100は、一組のチャネル1300を含む。各チャネルは、トリガシナリオを特定できる。シナリオのトリガに応答し、成果イベントハンドラは、トリガイベントの発生を記録し、図1に示されるチャネルサービスハンドラ185のようなサービスルーチンを呼び出すことにより応答してよい。成果イベントハンドラは、ハードウェア、ファームウェア、または、ソフトウェア機構であってよい。
一実施形態では、メモリ領域(例えばキャッシュ内またはシステムメモリ内のいずれか)がプロセッサ上を走るプログラム内の一の動作によりアクセスされる場合、1つまたはそれ以上のシナリオは、フォールトのような成果を生じるよう、1つまたはそれ以上のチャネルにプログラムされてよい。例えば、一実施形態では、シナリオは、アクセスの線形または物理アドレスに基づき、メモリの第1の領域へのアクセスをテストするよう定義されてよい。加えて、あるいは、その代わりに、一実施形態では、シナリオは、第2のアドレス範囲に格納されるデータをテストするよう定義されてもよい。さらに別の実施形態では、メモリからの格納またはアクセスされるべきデータ範囲がテストされてよく、それに応答して成果イベントがトリガされてよい。低速プログレスインジケータでもあり得る他の検出可能なイベントは、実行資源の様々なミクロアーキテクチャまたは構造上の詳細に関連してよい。
図1は、記憶媒体150がチャネルサービスハンドラ機構185に加え、オペレーティングシステム(OS)180も含み得ることを示す。少なくとも1つの実施形態では、オペレーティングシステム180は、本願明細書中に記載されるユーザレベルのスレッドモニタおよび最適化技術に最小限関係していてよい。例えば、OS180は、成果イベント処理の間、コンテキストをセーブしリストアすることに関わる可能性がある。オペレーティングシステム180は、したがって、コンテキスト管理サービスを提供し得る。チャネル状態は、OS180が管理するコンテキストの一部である。
しかしながら、少なくとも1つの実施形態では、OS180は、成果イベントの供給には関与しない。このような実施形態では、プログラムされたシナリオ(すなわち、成果イベントをトリガすべくチャネルにプログラムされているイベントの組み合わせ)を満足させることにより、ハードウェアまたはファームウェア内の成果イベントハンドラを介し供給される一の成果イベントをトリガする。例えば、少なくとも1つの実施形態では、シナリオの満足をトリガする命令は、ハードウェアを介しタグ付けされてよい。このようなタグは、成果イベントを供給するべく処理されることができる。このような処理は、例えば実行資源105のマイクロコードロム命令のようなハードウェアまたはファームウェアにおいて生じることもあり得る。成果イベントの制御を転送するこのハードウェアまたはファームウェア機構は、本願明細書中「成果イベントハンドラ」と呼ばれることもある。
制御は、成果イベントハンドラを介し、チャネルサービスハンドラ185へと転送される。この方法では、構造上定義されたシナリオの処理は、OS180による介入は最小限でユーザレベルコードにより直接実行されてよい。シナリオ状態の検出および成果イベントの共有(制御転送を含む)は、このような実施形態のOS180に対しトランスペアレントである。
しかしながら、少なくとも1つの他の実施形態では、シナリオの満足は、前述のようなハードウェアにより供給される成果イベントをトリガするより、むしろ、内部で生じるソフトウェア割り込みをトリガする可能性がある。このような実施形態では、オペレーティングシステム180は、成果イベントソフトウェアの割り込みが生じたとき、チャネルサービスハンドラ185を呼び出す。
成果イベントがどのように供給されるかに関わらず(ハードウェア対ソフトウェア)、成果イベントは、ユーザレベルコードにより取り扱われることができる。すなわち、いずれのアプローチ制御がチャネルサービスハンドラ185に転送されるにしても、実質的に、制御は、トリガ条件の検出に応答して、ユーザ定義のサービススレッドまたはハンドラに転送されてよい。この制御の転送は、成果イベントが生じたときに実行していた最新の命令ストリームの実行を中断させる。一実施形態において、ユーザ定義のサービススレッド、または、ハンドラは、トリガされるべきシナリオを生じたスレッドを最適化させるルーチンを含んでよい。さらに、一実施形態では、ユーザ定義のサービススレッドまたはハンドラは、リアルタイムでの最適化が実現されるよう、管理されたランタイム環境内でシナリオをトリガさせるユーザレベルのプログラムを最適化するよう用いられてよい。
少なくとも1つの実施形態においてシナリオが満足させられた場合、様々な状態を示すよう1つまたはそれ以上のフラグを設定すること、および/または、成果イベントを生成することを含むいくつかの機能の1つまたはそれ以上が実行されてよい。例えば、データ範囲またはアドレス領域へのアクセスがモニタされる第1のシナリオをトリガすることに応答し、他のシナリオを呼び出すべく、「キャリーフラグ」などのフラグが用いられてよい。一実施形態では、1つ、または、それ以上のチャネルが以下を実行するようプログラムされる。1)キャリーフラグを設定し、成果イベントは生じない。または、2)キャリーフラグを設定し、成果イベントを生ずる。
さらに、一実施形態では、他のタイプのシナリオを実行した結果として起こされる他の動作を意味するよう他のフラグが用いられてよい。例えば、命令ポインタの範囲がすでにアクセスされている第1のシナリオをトリガすることに応答し、他のシナリオを呼び出すべく、「ゼロフラグ」などのフラグが用いられてよい。一実施形態では、1つまたはそれ以上のチャネルが以下を実行するようプログラムされてよい。ゼロフラグを設定し、成果イベントは生じない。または、2)ゼロフラグを設定し、成果イベントを生ずる。同様に、ブランチターゲットアドレスがすでにアクセスされている第1のシナリオをトリガすることに応答し、他のシナリオを呼び出すべく、「オーバーフラグ」などのフラグが設定されてよい。例えば、一実施形態では、1つまたはそれ以上のチャネルが以下を実行するようプログラムされてよい。1)オーバーフローフラグを設定し、成果イベントは生じない。または、2)オーバーフローフラグを設定し、成果イベントを生ずる。
一実施形態では、フラグは、チャネルロジック内、または、チャネルロジックに関連するビット記憶領域として実装されてよい。さらに、対応するイベントが生じた後、適切なフラグを設定すべく各シナリオに関連するチャネルをプログラミングすることにより、組み合わせの論理関数を実装するよう、いかなる数のシナリオが論理的に一緒に構成されてよい。シナリオは、シナリオを正しい順序で呼び出すべく、他のシナリオのフラグをモニタするようプログラムされてよい。
図6は、一実施形態に従う、フラグにより相互に接続される異なるシナリオによりプログラムされる2つのチャネルを示す。図6では、チャネル601は、第1のシナリオを実行し、そのシナリオの発生に応答して、チャネル610においてプログラムされる第2のシナリオによりモニタされるキャリーフラグ605を設定する。結果は、第1および第2のシナリオの一の機能である出力を有する合成シナリオとなる。一実施形態において、第2のシナリオが実行された後、成果フラグ620により一の成果イベントに信号が送られる。ハンドラは、2つのシナリオの発生の組み合わせに基づくいくつかの機能を実行するよう設定された成果フラグに応答して実行されてよい。
一実施形態では、プログラムは、特定のシナリオとは読み取りまたは書き込み動作のような特定のメモリアクセスをテストすることであるプログラムにおけるポイントを示すセンチネル命令を含んでよい。一実施形態では、センチネルは、シナリオによりプログラムされるチャネルとは、以降の動作または命令をモニタし始めることであるプログラム順におけるポイントを示す以外の機能を実行しない命令である。他の実施形態では、センチネルは、プログラムがシナリオによりモニタされ始めることであるところを示すことに加えて実行されることになっている他の機能を含んでよい。いくつかの実施形態では、センチネルは、シナリオによりモニタされる同じ命令または複数の命令に含まれてよい。
一実施形態では、センチネル命令は、「MOD r/m」フォーマットを有し得る。「MOD」は、ソースアドレスからの修正動作を示し、「r/m」(レジスタ/メモリアドレス)は、例えば、3バイトオペコードにより表される。この例では、センチネルは、宛先アドレスフィールドは含まない。しかしながら、他の実施形態では、センチネルは、宛先アドレスフィールドを含んでもよいし、または、他のフォーマットを有してもよい。センチネルのフォーマット(例えばオペコードなど)は、所属する特定の命令セットアーキテクチャに少なくとも一部基づいてよい。例えば、オペランドは、mod r/mフォーマットにより特定されるようなメモリまたはレジスタからであってよい。
本発明の一実施形態に従いモニタされ得るメモリアクセスを実行する命令シーケンスを以下に示す。
Sentinel<mode>
Mov<dest>、<src>
上記コードシーケンスでは、センチネル命令の後にメモリアクセス命令が続く。一実施形態では、センチネルは、プロセッサ内のチャネルにプログラムされるシナリオに、メモリアクセス命令は、第1のメモリアドレスまたはアドレス範囲、および、次の命令に関連するデータへのアクセスに対するモニタであることを示す。他の実施形態では、次の命令は、データ範囲が次の命令によりメモリに格納されるかどうかを検出することなど、他の理由でモニタされてよい。
メモリアクセス命令が一のまたは複数のチャネルにプログラムされる条件を満たす場合、成果イベントに応答していくつかの動作を実行すべくハンドラルーチンを呼び出すフォールトのような成果イベントが生じてよい。ハンドラにより実行される動作は、変化し得る。例えば、一実施形態では、ハンドラは、特定のアドレス範囲にアクセスがなされていることをユーザに伝えてよい。他の実施形態では、ハンドラは、成果イベントに応答し、他のプロファイリングまたはユーザコード修正を実行してよく、そのいくつかは、本開示において以下に述べる。成果イベントのトリガ条件を設定すべく、多数のシナリオがチャネルにプログラムされてよい。さらに、いくつかの実施形態では、1つまたはそれ以上のシナリオは、より複雑なシナリオを検出すべく、論理的に鎖で繋がれた1つまたはそれ以上のチャネルにプログラムされることもできる。
一実施形態では、初期化手続きが実行され、ここで、処理ハードウェアにおける1つまたはそれ以上のチャネルがシナリオを検出すべくプログラムされ、ここで第1のセンチネルが検出された場合、ストア命令のような次のメモリアクセス動作のターゲットアドレスがアドレス範囲と比較される。一実施形態では、ストア命令のターゲットアドレスが特定のアドレス範囲内にある場合、ハードウェアフラグまたは他のインジケータは、ストア命令に対応する特定のデータ範囲などの他の条件の発生をモニタするよう他のシナリオに伝えるべく設定されてよい。この例では、第1のシナリオは、成果イベントを生じないであろうし、フラグまたは他のインジケータを設定するだけであり、コードシーケンスは続であろう。
一実施形態では、(上記)第1のシナリオの発生を検出するよう、また、第1のシナリオにおいて検出された命令に対応するデータ値の範囲(例えばデータ値の特定の範囲内にあるストア命令に対応するデータ)を次に検出するよう、第2のシナリオが初期化されてよい。第2のシナリオが満たされる場合、一実施形態では、成果イベントが発生し、ハンドラは、満たされた2つのシナリオに応答していくつかの動作を実行するよう呼び出される。上記例において、第1のシナリオは、アドレス範囲内にあるストア命令のターゲットアドレスを検出するよう、また、それに応答してフラグを設定するよう初期化され、第2のシナリオは、フォールトのような成果がハンドラを呼び出す場合、ストア命令に対応する記憶データが特定の値の範囲内にあるかまたは特定の値に等しいかを決定すべくモニタするよう初期化される。他の実施形態では、一の範囲または特定のメモリ位置に対応するメモリロード動作のようなメモリアクセス動作の他の発生を検出すべく、他のシナリオが初期化されてよい。この方法では、メモリ領域フィルタリングを実行すべく、少なくとも1つの実施形態が用いられてよい。
図2は、本発明の少なくとも1つの実施形態に対応する動作を示すフローチャートである。動作201では、第1のセンチネルの発生がモニタされる。第1のセンチネルが検出されない場合、プログラム動作は継続する。第1のセンチネルが検出される場合、動作205において、次のメモリアクセス動作が関心のメモリ位置またはメモリ位置の範囲に対応するかどうかが決定される。対応する場合、動作210において、第1のシナリオが満たされることを示すようフラグが設定される。一実施形態では、次のメモリアクセス動作は、関心のターゲットアドレス、または、ターゲットアドレスの特定の範囲を有するストア命令であってよい。他の実施形態では、次のメモリアクセス動作は、特定のロードアドレスまたはロードアドレスの範囲に対応するロード命令であってよい。第1のセンチネルが検出される場合、また、第1のシナリオからフラグが設定されていて、メモリアクセス動作に対応するデータが特定の値に等しいかまたは特定の範囲またはデータ値内に収まる場合、そして、動作215において、前のシナリオの結果に基づくいかなるシナリオもない場合、動作220においてフォールトのような成果が発生し、動作225でハンドラが呼び出される。第1のシナリオからのフラグが設定されなかった場合、または、メモリアクセスに対応するデータ値が特定の値または範囲の中にない場合、成果イベントは発生せず、プログラム動作は続行する。
本願明細手中に記載された実施形態は、メモリから/へのロードまたは格納動作よるアクセス、メモリの様々な領域への命令ポインタによるアクセス、および、コードブランチターゲットに対応するメモリ領域へのアクセスなどを含む様々なメモリアクセスに適用されることができる。さらに、少なくとも1つの実施形態は、命令、命令ポインタ、または、ブランチターゲットによりアクセスされるアドレスおよび/またはデータ値の範囲をフィルタすべく用いられることもできる。
上記例においてフォールトのような成果が生じた場合、いかなる数の動作を実行するようハンドラが呼び出されてよい。例えば、一実施形態では、成果イベントを生じたプログラムがリアルタイムで修正できるよう、上記シナリオが満たされたことに応じて様々なプロファイリング動作が実行されてよい。一実施形態では、1つまたはそれ以上のメモリアクセス動作の発生に応じて1つまたはそれ以上のシナリオが満足することにより、メモリ領域にアクセスすることが想定されないプログラムまたは命令によりアクセスされることから様々なメモリ領域を保護するプログラムが呼び出されることもあり得る。
例えば、一実施形態では、上記メモリ領域フィルタリング技術は、ソフトウェアプログラムスレッドがそのヒープキンダーガルテン、スタック、または、他のメモリ領域に割り当てられていないオブジェクトへのアクセスを試みている場合を検出し、さらなるアクセスを防ぐよう用いられることもできる。さらに、一実施形態は、ポインタがスタック外に公開される可能性がない場合、推測でオブジェクトをスタックに割り当てる。これは、スタックアクセス時間を節約しながら、キャッシュスラッシングを防ぐ。あるいは、一実施形態では、スレッドに対するヒープの他の領域におけるガベージコレクションの実行に関わらず、キンダーガルテンへのポインタが維持されて、キンダーガルテンに対しガベージコレクションが実行されるよう、オブジェクトは、スレッド特定ヒープキンダーガルテンに格納されることができる。さらに、特定のスレッドまたは複数のスレッドに対応するキンダーガルテンにアクセスがなされた場合、少なくとも1つの実施形態は、例えば結果としてフォールトのような成果を生じるイベントを取り扱うべくシナリオをトリガしてよい。
一実施形態では、センチネル命令は、メモリへのアクセスを検出し、続いて、フォールトのような成果を生じる1つまたはそれ以上のトリガイベントを定義し得るシナリオをトリガしてよい。少なくとも1つの実施形態では、シナリオは、実際には、合成シナリオを形成するいくつかのトリガ機能に従い論理的に結合される多数のシナリオから構成されることもできる。しかしながら、他の実施形態では、センチネル(または複合センチネル)トリガのシナリオ数が減少するよう、1つまたはそれ以上のシナリオにおいて定義される1つまたはそれ以上のトリガイベントは、センチネル命令、または、論理的に相互接続されるセンチネル命令の組み合わせにおいて定義されてよい。
いくつかの実施形態では、センチネル命令は、メモリ領域へのアクセスだけでなく、他のパラメータを定義すべく用いられることもできる。例えば、一実施形態では、1つのセンチネルは、メモリ領域へのアクセスが他のセンチネルによりモニタされる時間窓を制御することもできる。例えば、第1のセンチネルは、メモリ領域へのアクセスをモニタし始めることを他のセンチネルに示すフラグを設定してよい。第1のセンチネルは、メモリ領域へのアクセスをモニタするのを中断するよう他のセンチネルに示すフラグを後で消去することもできる。
いくつかの実施形態では、センチネルは、メモリ領域に加えて、または、メモリ領域の代わりにモニタする入出力(I/O)範囲を定義することもできる。一実施形態では、I/Oの範囲は、アドレス範囲に従いモニタされる一方、他の実施形態では、センチネルは、それぞれ異なるI/Oに対応するビットのいくつかの組み合わせ(例えば「ビットマップ」)に従いI/Oの範囲へのアクセスをモニタすることができる。
都合がよいことに、本発明の1つまたはそれ以上の実施形態は、少なくとも抽象的かつ一般的には、特権レベルに従うOSカーネルのみが利用できるプロセッサ資源へのオペレーティングシステムアクセス内で稼働するソフトウェアアプリケーションのようなユーザプログラムを実現できる。例えば、一実施形態では、ユーザプログラムは、領域へのメモリアクセスをモニタするべくセンチネルを用い、それに応じて1つの処理アーキテクチャ内の「リング0」における特権付き資源のような、高い特権処理資源に影響を及ぼす動作を実行することができる。他の処理アーキテクチャが資源特権の異なるレベルを定義し、ユーザプログラムがそれらの資源にアクセスできないようにまたはできるようにすべく実施形態を用いてもよい。
一実施形態では、メモリ領域は、データが同時並列のスレッド間で共有されるアプリケーションを含む、本願明細書中に記載される技術に従いフィルタリングされることができる。例えば、一度に1つのスレッドのみが所定のデータオブジェクトにアクセスするよう、データオブジェクトへの相互排除アクセスを実施すべく、アプリケーション中で少なくとも1つの実施形態が用いられてよい。データオブジェクトへの相互排除アクセスを維持することは、パフォーマンスオーバーヘッドを招く可能性もあるので、少なくとも1つの実施形態では、データオブジェクトがただ1つのスレッドによりアクセスされるメモリ領域に分類されるようにする。さらに、他のスレッドからのアクセスは、少なくとも一つの実施形態においてモニタされることにより、データオブジェクトへのアクセス間での相互排除を確実にする。
一実施形態では、メモリ領域は、保護された、または、「ロックされていない」データへのアクセスを防ぐべく、本願明細書中に記載される技術に従い、フィルタリングされてよい。例えば、メモリに格納されるあるデータが特定のスレッドに対し指定される一方で、他のデータが多数の異なるスレッドにより用いられてよい。したがって、本発明の少なくとも1つの実施形態は、特定のスレッドに対してのみ割り当てられるデータへのアクセスを検出し、未許可のスレッドによるこの「ロックされた」データへのアクセスを防ぐこともできる。反対に、本発明の複数の実施形態は、特定のスレッド、または、「ロックされていない」データ専用でない可能性があるデータへの多数のスレッドによるアクセスを許容する。この例では、オブジェクトが「スレッド−ローカル」メモリ空間として指定されるメモリ空間に格納されたとき、スレッドは、コードのロックがかかっていないバージョンを使用することを許可され、その一方で、特定の状況下では、スレッドは、他のメモリ空間におけるデータにアクセスするよう、コードのロックがかかったバージョンを使用することを許可されるだけであってよい。
本発明の実施形態は、他の用途にも同様に用いられることができる。例えばセキュリティの領域では、少なくとも1つの実施形態は、メモリアクセスをモニタし、ユーザがリアルタイムでソフトウェアにおける様々なセキュリティパラメータを調整できるようハンドラを呼び出すべく用いられてよい。具体的には、少なくとも1つの実施形態は、信頼できる、または、機械的に検証されたコードが同じプロセス内の危険なエージェントにより変更されることを防ぐよう、プライベートデータ構造が同じプロセス内の未許可のエージェントに閲覧されるのを防ぐよう、データ構造が同じプロセス内の未許可のエージェントにより変更されることを防ぐよう、あるいは、認可されたコードがいかなるパフォーマンスオーバーヘッドもなく保護された構造にアクセスできるように用いられることができる。
一実施形態では、様々なプログラミング言語において認識されるようなコードオブジェクトへのアクセスは、特に、アクセスが対応するものの外側のヒープまたはスタックから/へのデータをロードまたは格納すべくアクセスが試みられる場合にモニタされかつ検出されてよい。例えば、第1のチャネルは、シナリオによりプログラムされることにより、オブジェクトロードのアドレス(x)が、オブジェクトロードに割り当てられるグローバルヒープ範囲(r1)にも、オブジェクトロードに割り当てられるスレッド特定ヒープ範囲(r2)にもないかどうか決定してよい。オブジェクトロードのアドレスを確認するシナリオをトリガすべく、第1のセンチネル命令は、プログラム順でオブジェクトロードに先立ち用いられてよい。
オブジェクト記憶動作の場合、第2のセンチネルは、第2のチャネルにプログラムされるシナリオをトリガするよう用いられてよく、その結果、オブジェクト記憶のアドレス(y)がr2に対応せず、今のところオブジェクト記憶のデータ(z)がr2に記憶されているかどうかが決定される。もしそうであれば、オブジェクト記憶は、それが対応するローカルヒープの外側にデータを公開しようとしていると仮定してよい。
図7は、一実施形態に従うフローチャートを示す。図7に示すように、動作700において、モニタされるべきプログラム条件は、決定される。プログラム命令は、動作705において実行される。動作710において、メートルまたはミクロアーキテクチャイベントがモニタされてよい。図7に示すように、トリガが発生しなければ、方法は、動作705において再開されてよい。そうでなければ、動作715において(例えば、トリガされた場合)、処理は、検出された条件を生じる処理に合せて調整するよう中断されてよい。さらに、動作715において、制御フローは、異なるプログラム部分に転送されてよい。
図8は、オブジェクトロードおよびオブジェクト記憶がそれらの対応するソフトウェアヒープの外側のメモリ領域にアクセスを試みたかどうかを決定すべくモニタされる、一実施形態に用いられる動作を示すフローチャートである。動作801において、第1のセンチネルが検出された場合、動作805において、第1のシナリオは、次のオブジェクトロードのアドレス(x)がオブジェクトロードに割り当てられたグローバルヒープ範囲(r1)内にも、スレッド特定ヒープ範囲(r2)内にもないかどうかをテストする。もしそうであれば、動作810において、オブジェクトロードを再発行する、および/または、キャンセルするようハンドラを呼び出す成果イベントが生じてよい。もし、そうでない場合、動作815において、第2のセンチネルが検出されたかどうかが決定され、決定された場合、動作820において、オブジェクト記憶のアドレス(y)がr2に対応せず、オブジェクト記憶のデータ(z)が未だr2に格納されているかどうかが決定される。格納されていれば、動作825において、オブジェクト記憶を再発行および/またはキャンセルすべくハンドラを呼び出す成果イベントが生じる。
管理されたランタイム環境で使用され得る上述の用途に加え、本発明の複数の実施形態は、管理されたランタイム環境に関わりなく他の方法において用いられることができる。例えば、一実施形態において、上述のメモリ領域フィルタリング技術は、スレッド特定オブジェクトへのアクセスからの検出およびリカバリ、あるいは、メモリ領域またはメモリタイプの間での過干渉性プロトコルの実施のために用いられてよい。本願明細書中に記載された実施形態を多数の他の用途に利用できる。
図3は、一実施形態に従う、処理リソース内で発生するイベントをモニタし、アーキテクチャ内で稼働するユーザレベルのソフトウェアプログラムを向上させるかまたは最適化させるべくモニタされるイベントを使用するシステムを示す。特に、図3は、アプリケーションのようなユーザレベルのソフトウェアプログラムが展開され得る管理されたランタイム環境301を示す。他の実施形態では、環境301は、管理されないランタイム環境であってよい。一実施形態では、ソフトウェアプログラムは、マルチコアプロセッサおよび/またはマルチプロセッサなどの複数の処理リソースを含み得るCPU320により実行される。チャネル315は、コードホットスポットのような、CPUの特定の性能特性の検出において役立つイベントおよびシナリオをモニタすべく、プロファイリング・アプリケーション・プログラミング・インタフェース(API)を介しプログラムされてよい。コードホットスポットのような性能特性は、チャネルにプログラムされるイベントおよびシナリオの結果を翻訳することにより、ロジックまたはソフトウェア307により検出されることができる。さらに、チャネルにプログラムされる成果動作も翻訳され、それに応答して検出コード/ロジック307により正しいハンドラが呼び出される。
検出ロジック/コード307により翻訳されかつ検出されるパフォーマンス情報は、管理されたランタイム環境内のアプリケーションのようなユーザコードを向上または最適化すべく、プロフィール法生成コードまたはロジック305により特定の動作または方法に翻訳され得るプロフィール生成コードまたはロジック303によりモニタされる特性のプロフィールを生成するよう用いられてよい。さらに、一実施形態において、図3のパフォーマンスモニタアーキテクチャにより課されるオーバーヘッドがほとんどまたは全く検出されずに、リアルタイムかつスレッドごとにユーザコードへの改善がなされてよい。他の実施形態では、CPU内のパフォーマンス情報を検出し、それに応答してユーザコードを最適化するよう要求される情報を生成すべく、他の段階または機能単位が用いられてよい。
図4は、本発明の一実施形態が用いられ得るフロントサイドバス(FSB)コンピュータシステムを示す。プロセッサ405は、レベルワン(L1)キャッシュメモリ410からメインメモリ415までのデータにアクセスする。本発明の他の実施形態では、キャッシュメモリは、レベルツー(L2)キャッシュ、または、コンピュータシステムのメモリ階層内の他のメモリであってよい。さらに、いくつかの実施形態では、図4のコンピュータシステムは、L1キャッシュおよびL2キャッシュをどちらも含んでよい。
図4のプロセッサ内にマシンステートの記憶領域406が示されている。一実施形態では、記憶領域は、一組のレジスタであってよく、一方、他の実施形態では、記憶領域は、他の記憶構造であってよい。また、図4には、一実施形態に従うセーブエリアセグメントの記憶領域407も示される。他の実施形態では、セーブエリアセグメントは、他のデバイスまたはメモリ構造内にあってよい。プロセッサは、いかなる数の処理コアを有することもできる。本発明の他の実施形態は、しかしながら、個別のバスエージェントなどのシステム内の他のデバイス内に実装されるか、または、ハードウェア、ソフトウェア、または、そのいくつかの組み合わせ全体にわたり分散されてよい。
メインメモリは、ダイナミックランダムアクセスメモリ(DRAM)、ハードディスクドライブ(HDD)420、または、様々な記憶デバイスおよび技術を含むネットワークインターフェース430を介し、コンピュータシステムから離れて位置するメモリソースのような様々なメモリソースに実装されることができる。キャッシュメモリは、プロセッサ内に配置されるか、または、プロセッサのローカルバス407上など、プロセッサに極めて接近して配置されるかのいずれかであってよい。
さらに、キャッシュメモリは、6トランジスタ(6T)セルなどの比較的高速なメモリセル、または、ほぼ同じかそれより高速なアクセス速度の他のメモリセルを含み得る。図4のコンピュータシステムは、ポイントツーポイント(PtP)ネットワークにおける各エージェント専用のバス信号を介し通信するマイクロプロセッサのようなバスエージェントのPtPネットワークであってよい。図5は、ポイントツーポイント(PtP)構成に配列されるコンピュータシステムを示す。特に、図5は、プロセッサ、メモリ、および、入出力デバイスが多数のポイントツーポイントインターフェースにより相互接続されるシステムを示す。
図5のシステムは、いくつかのプロセッサを含んでもよく、説明をわかりやすくするため、そのうちの2つ、プロセッサ570および580のみが示される。プロセッサ570および580は、メモリ22および24を接続するローカルメモリコントローラハブ(MCH)572および582をそれぞれ含む。プロセッサ570および580は、PtPインターフェース回路578および588を用い、ポイントツーポイント(PtP)インターフェース550を介しデータを交換してよい。プロセッサ570および580は、ポイントツーポイントインターフェース回路576、594、586、および598を用い、個別のPtPインターフェース552および554を介しデータとチップセット590とをそれぞれ交換してよい。チップセット590は、高性能グラフィックインターフェース539を介し、データと高性能グラフィック回路538とを交換することもできる。本発明の実施形態は、いかなる数の処理コアを有する任意のプロセッサ内、または、図5の各PtPバスエージェント内に配置されてもよい
しかしながら、本発明の他の実施形態は、図5のシステム内の他の回路、論理演算装置、または、デバイス内に存在してもよい。さらに、本発明の他の実施形態は、図5に示されるいくつかの回路、論理演算装置、または、デバイスのすべてにわたり分散されてもよい。
本願明細書中で言及されるプロセッサ、または、本発明の一実施形態に従い設計される他のいかなる構成要素は、作成、シミュレーション、製造までの様々な段階において設計されてよい。設計を表すデータは、設計を多くの方法で表してよい。第1に、シミュレーションに役立つように、ハードウェアは、ハードウェア記述言語または他の関数的記述言語を用いて表わされてよい。加えて、または、代わりに、論理および/またはトランジスタゲートによる回路レベルモデルが設計プロセスのいくつかの段階で生成されてよい。さらに、ほとんどの設計は、ある段階において、様々なデバイスの物理的配置を表すデータによりモデル化され得るレベルに到達する。従来の半導体製造技術が用いられる場合、デバイスの配置モデルを表すデータは、集積回路を製造するのに用いられるマスクの異なるマスク層における様々な特徴の有無を特定するデータであってよい。
設計のいかなる表現においても、データは、機械可読媒体の任意の形式で格納されてよい。このような情報を伝送すべく変調あるいは生成される光または電波、メモリ、あるいは、ディスクのような磁気または光記憶媒体は、機械可読媒体であってよい。これらの媒体のいずれも、設計、あるいは、エラーリカバリルーチンにおける命令などの、本発明の一実施形態に用いられる他の情報を有するかあるいは示してよい。情報を示すかまたは有する電子キャリアが伝送されると、電気信号のコピー、バッファリング、または、再送が実行される範囲で新たなコピーがなされる。したがって、通信プロバイダまたはネットワークプロバイダの動作は、本発明の技術を実施するキャリアのような物品のコピーを作成することであってよい。
このように、ロード、記憶などのメモリアクセスを操る技術が開示される。これまで特定の実施形態が添付の図面を示しながら記載されてきたが、このような実施形態は例示に過ぎず、本発明の範囲を制限しないこと、そして、本発明は、特定の構造および配置に限定されず、様々な変更が生じてよいことは、本発明を研究する当業者にとり、明らかであろう。成長が急速であり、さらなる発展が予見し難いこのような技術の領域では、本発明の開示の趣旨および添付の請求項の範囲を逸脱せずに技術的発展を実現することにより容易とされる配置および詳細の修正も直ちに可能である。
本発明の1つまたはそれ以上の実施形態の様々な側面が記載され、説明されるか、さらもなくば、本発明の1つまたはそれ以上の実施形態が用いられ得るプロセッサまたはコンピュータシステムの広告において言及されている。このような広告は、新聞、雑誌、ビルボード、または、他の紙あるいは有形媒体を含み得るが、これに限定されない。特に、ウェブサイトまたは「ポップアップ」を作成するためにプログラムを主催しているサーバがアメリカ合衆国またはその領土内にあるにせよ無しにせよ、本発明の1つまたはそれ以上の実施形態の様々な側面は、ウェブサイト、「ポップアップ」広告または他のウェブベースの媒体を介しインターネット上で広告されることができる。
添付の図面によって本発明を例示するが、これに限定されない。
プロセッサ内の様々なイベントをモニタするシステムの一実施形態を示す。
本発明の少なくとも1つの実施形態の様々な側面を示すフローチャートである。
1つの実施形態が用いられ得る管理されたランタイム環境を示す。
少なくとも1つの実施形態が用いられ得る共有バスシステムを示す。
本発明の少なくとも1つの実施形態が用いられ得るポイント・ツー・ポイントバスを示す。
1つの実施形態に従い、1つまたはそれ以上のシナリオがプログラムされる多数のチャネルを示す。
1つの実施形態に従う、1つまたはそれ以上のシナリオがメモリ領域へのアクセスをモニタできるようにする際に用いられる動作を示すフローチャートである。
1つの実施形態で用いられる動作を示すフローチャートである。

Claims (16)

  1. 装置であって、
    ソフトウェアプログラムの実行中に前記ソフトウェアプログラム内に予め定められた命令を検出した場合に、プログラム順で前記予め定められた命令に後続する命令をモニタして、前記予め定められた命令に後続する命令によるメモリアクセス動作によって前記ソフトウェアプログラムのスレッドに割り当てられていない1以上の予め定められたメモリ領域がアクセスされるか否かを決定するハードウェアロジック
    を備え、
    前記ハードウェアロジックは、前記メモリアクセス動作によって、前記予め定められたメモリ領域がアクセスされる場合に、前記スレッドが当該メモリ領域にアクセスすることを防ぐ割り込みハンドラを呼び出すためのイベントを発生し、
    前記メモリアクセス動作によって、前記スレッドに割り当てられたメモリ領域がアクセスされる場合には、前記ソフトウェアプログラムの実行を継続し、
    前記ハードウェアロジックは、前記メモリアクセス動作によって前記予め定められたメモリ領域アクセスされると決定された場合に、プロセッサのフラグ記憶領域に記憶される第1チャネルロジック用のフラグを設定し、前記第1チャネルロジックと、前記フラグをモニタするための第2チャネルロジックとが、前記フラグにより接続されたチャネルロジックの組み合わせをなす
    装置。
  2. 前記予め定められた命令は、ロード動作に対応する宛先ロードアドレスを含まない、請求項1に記載の装置。
  3. 前記第2チャネルロジックをさらに含み、
    前記第2チャネルロジックは、前記メモリアクセス動作に対応する一のデータが一の値の範囲内にあるかどうかを前記フラグの設定に応じて決定する、請求項1または2に記載の装置。
  4. 前記ハードウェアロジックは、前記第2チャネルロジックが前記メモリアクセス動作に対応するデータは前記一の値の範囲内にあるかどうかを決定するかどうかを前記第2チャネルロジックに示すよう前記フラグを前記プロセッサの前記フラグ記憶領域に設定する、請求項3に記載の装置。
  5. 前記イベントは、フォールトを含む、請求項3または4に記載の装置。
  6. 前記ハードウェアロジックは、前記予め定められた命令の検出に応答して1以上の論理を実行する1以上のハードウェア・プログラマブルロジックのチャネルを含む、請求項5に記載の装置。
  7. 前記ハードウェアロジックは、前記メモリアクセス動作によって、他のスレッドに割り当てられた前記予め定められたメモリ領域がアクセスされるか否かを決定する、請求項1から6のいずれか一項に記載の装置。
  8. システムであって、
    予め定められた命令を格納するメモリと、
    ソフトウェアプログラムの実行中に前記ソフトウェアプログラム内に前記予め定められた命令を検出した場合に、プログラム順で前記予め定められた命令に後続する複数の命令をモニタして、前記予め定められた命令に後続する命令によるメモリアクセス動作によって、前記ソフトウェアプログラムのスレッドに割り当てられていない、予め定められた1以上のアドレス範囲のメモリ領域がアクセスされるか否かを決定するプロセッサと、
    を備え、
    前記プロセッサは、前記メモリアクセス動作によって前記予め定められた1以上のアドレス範囲のメモリ領域がアクセスされる場合に、前記スレッドが当該メモリ領域にアクセスすることを防ぐ割り込みハンドラを呼び出すためのイベントを発生し、
    前記メモリアクセス動作によって、前記スレッドに割り当てられたメモリ領域がアクセスされる場合には、前記ソフトウェアプログラムの実行を継続し、
    前記プロセッサは、前記メモリ領域へのアクセスを検出するための第1の論理が満たされた場合に、前記プロセッサのフラグ記憶領域に記憶されるフラグを設定し、前記第1の論理と、前記フラグをモニタするための第2の論理とが、前記フラグにより接続された論理の組み合わせをなす
    システム。
  9. 前記メモリアクセス動作は、メモリからのロード動作またはメモリへの記憶動作を含む、請求項8に記載のシステム。
  10. 前記メモリアクセス動作は、スタックへの命令ポインタによるアクセス動作を含む、請求項8に記載のシステム。
  11. 前記メモリアクセス動作は、分岐ターゲットのメモリアドレスへのアクセス動作を含む、請求項8に記載のシステム。
  12. 前記プロセッサは、前記1以上のアドレス範囲へのアクセスをモニタすべく複数の論理によりプログラムされる複数のハードウェア・プログラマブルロジックのチャネルを含む、請求項9に記載のシステム。
  13. 前記プロセッサは、前記1以上のアドレス範囲へのアクセスが前記イベントを生じることになるかどうかを示すための前記複数の論理に対応する複数のフラグ記憶領域を含み、
    前記複数のフラグ記憶領域は、前記第2の論理によりプログラムされる前記チャネルによりモニタされるフラグを記憶する、請求項12に記載のシステム。
  14. 前記複数のフラグ記憶領域は、前記第1の論理によりプログラムされる前記チャネルが前記第2の論理によりプログラムされる前記チャネルに、前記第2の論理において前記1以上のアドレス範囲への前記アクセスをモニタすべきか否かを伝えるためのフラグを記憶する、請求項13に記載のシステム。
  15. 前記1以上のアドレス範囲は、1以上の線形アドレス範囲を含む、請求項8から14のいずれか一項に記載のシステム。
  16. 前記プロセッサは、前記メモリアクセス動作によって、他のスレッドに割り当てられた前記予め定められた1以上のアドレス範囲のメモリ領域がアクセスされるか否かを決定する、請求項8から15のいずれか一項に記載のシステム。
JP2007215235A 2006-08-21 2007-08-21 装置、システム、方法およびプログラム Expired - Fee Related JP4925973B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/508,016 2006-08-21
US11/508,016 US7769964B2 (en) 2006-08-21 2006-08-21 Technique to perform memory reference filtering

Publications (2)

Publication Number Publication Date
JP2008071339A JP2008071339A (ja) 2008-03-27
JP4925973B2 true JP4925973B2 (ja) 2012-05-09

Family

ID=38566530

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007215235A Expired - Fee Related JP4925973B2 (ja) 2006-08-21 2007-08-21 装置、システム、方法およびプログラム

Country Status (6)

Country Link
US (1) US7769964B2 (ja)
JP (1) JP4925973B2 (ja)
CN (3) CN102226891B (ja)
DE (1) DE102007039431A1 (ja)
GB (4) GB0716036D0 (ja)
HK (1) HK1120126A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214574B2 (en) * 2006-09-08 2012-07-03 Intel Corporation Event handling for architectural events at high privilege levels
US7613753B2 (en) * 2006-11-28 2009-11-03 Alcatel Lucent Platform and method for functional programming (FP) processing
US20090073981A1 (en) * 2007-09-18 2009-03-19 Sensory Networks, Inc. Methods and Apparatus for Network Packet Filtering
US8032804B2 (en) * 2009-01-12 2011-10-04 Micron Technology, Inc. Systems and methods for monitoring a memory system
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US9576244B2 (en) * 2013-09-03 2017-02-21 Roger Midmore Methods and systems of four-valued simulation
US9977725B2 (en) * 2016-08-26 2018-05-22 Cisco Technology, Inc. Automatic classification and parallel processing of untested code in a protected runtime environment
GB2563885B (en) * 2017-06-28 2019-10-23 Advanced Risc Mach Ltd Interrupting export of memory regions
US10884662B2 (en) * 2018-08-06 2021-01-05 Silicon Motion, Inc. Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server
US11635965B2 (en) 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
US11080182B2 (en) * 2019-01-07 2021-08-03 International Business Machines Corporation Object load introspection using guarded storage
CN113138798A (zh) * 2020-01-18 2021-07-20 佛山市云米电器科技有限公司 多场景下的指令执行方法、装置、设备及存储介质
US11029957B1 (en) 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0117930B1 (en) 1983-02-23 1987-09-23 International Business Machines Corporation Interactive work station with auxiliary microprocessor for storage protection
DD233676A1 (de) * 1985-01-03 1986-03-05 Thueringer Moebel Speicherbereichsschutz in der mini- und mikrorechentechnik
US5295260A (en) * 1991-05-31 1994-03-15 Cray Research Systems, Inc. Memory range monitoring apparatus for a multiprocessor computer system
JPH08179965A (ja) * 1994-12-26 1996-07-12 Mitsubishi Denki Semiconductor Software Kk イベント検出回路
JP2658982B2 (ja) * 1995-05-25 1997-09-30 日本電気株式会社 特定命令実行検出方式
US6185668B1 (en) * 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5950228A (en) * 1997-02-03 1999-09-07 Digital Equipment Corporation Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables
US6035378A (en) * 1997-12-16 2000-03-07 Ncr Corporation Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system
JP2901149B1 (ja) * 1998-01-30 1999-06-07 株式会社画像技研 コンピュータ作動状況監視装置
KR20010072477A (ko) * 1998-08-13 2001-07-31 썬 마이크로시스템즈, 인코포레이티드 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치
US6499028B1 (en) * 1999-03-31 2002-12-24 International Business Machines Corporation Efficient identification of candidate pages and dynamic response in a NUMA computer
JP4522548B2 (ja) 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
JP3710671B2 (ja) * 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
JP3419392B2 (ja) * 2000-10-27 2003-06-23 日本電気株式会社 メモリアクセス監視装置、メモリアクセス監視方法およびメモリアクセス監視用プログラムを記録した記録媒体
JP3707727B2 (ja) * 2000-10-30 2005-10-19 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
JP4611659B2 (ja) * 2004-04-19 2011-01-12 上田日本無線株式会社 不正アクセス検出装置、不正アクセス検出方法、プログラム

Also Published As

Publication number Publication date
GB2441216B (en) 2009-08-26
DE102007039431A1 (de) 2008-04-10
CN101174223A (zh) 2008-05-07
US7769964B2 (en) 2010-08-03
CN102226891A (zh) 2011-10-26
CN102393823A (zh) 2012-03-28
GB0817653D0 (en) 2008-11-05
GB0716299D0 (en) 2007-09-26
JP2008071339A (ja) 2008-03-27
CN102393823B (zh) 2018-05-22
GB0716300D0 (en) 2007-09-26
HK1120126A1 (en) 2009-03-20
GB0716036D0 (en) 2007-09-26
CN102226891B (zh) 2014-09-17
US20080046668A1 (en) 2008-02-21
CN101174223B (zh) 2011-08-10
GB2441216A (en) 2008-02-27

Similar Documents

Publication Publication Date Title
JP4925973B2 (ja) 装置、システム、方法およびプログラム
JP6095682B2 (ja) プログラム・イベント記録イベントのランタイム計装イベントへの変換
JP5367802B2 (ja) 階層化された仮想化アーキテクチャにおける仮想化イベント処理
JP4764360B2 (ja) メモリ属性を用いるための技術
JP6195572B2 (ja) ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム
KR101126820B1 (ko) 스레드 통신 및 동기화 기법
JP6195571B2 (ja) 低特権状態からのランタイム・インストルメンテーション制御の変更
CN103064784B (zh) 面向Xen环境的运行时内存泄漏检测方法及其实现系统
US20080040715A1 (en) Virtualizing performance counters
US20090007103A1 (en) Injecting virtualization events in a layered virtualization architecture
KR20130081302A (ko) 시스템 관리 모드의 프로세서에 상태 스토리지를 제공하기 위한 장치, 방법 및 시스템
US9483293B2 (en) Technology abstraction layer
US20110252256A1 (en) Methods, systems, and computer program products for managing an idle computing component
KR20080025652A (ko) 요구-기반 프로세싱 자원 할당
WO2011084205A1 (en) Hardware support for collecting performance counters directly to memory
JP2009271597A (ja) プロセッサ
JP5236278B2 (ja) 非同期制御転送
US20210240480A1 (en) A system and method for handling exception causing events
US20130246747A1 (en) Run-time-instrumentation controls emit instruction
Takaronis Linux kernel exploitation, a wonderful mess

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110516

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110712

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111011

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111014

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111111

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees