JP4764360B2 - メモリ属性を用いるための技術 - Google Patents

メモリ属性を用いるための技術 Download PDF

Info

Publication number
JP4764360B2
JP4764360B2 JP2007028172A JP2007028172A JP4764360B2 JP 4764360 B2 JP4764360 B2 JP 4764360B2 JP 2007028172 A JP2007028172 A JP 2007028172A JP 2007028172 A JP2007028172 A JP 2007028172A JP 4764360 B2 JP4764360 B2 JP 4764360B2
Authority
JP
Japan
Prior art keywords
attribute
cache line
processor
instruction
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007028172A
Other languages
English (en)
Other versions
JP2007242003A (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 JP2007242003A publication Critical patent/JP2007242003A/ja
Application granted granted Critical
Publication of JP4764360B2 publication Critical patent/JP4764360B2/ja
Active 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC 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/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施例は、マイクロプロセッサおよびマイクロプロセッサシステムに関する。より詳しくは、本発明の実施例は、一つ以上のメモリ領域に対応する属性ビットを用いて一つ以上のメモリ領域に関連するメモリ状態またはその他の情報を使用、チェック、およびセットするための技術に関する。
近年のコンピューティングシステムでは、マイクロプロセッサまたはマイクロプロセッサコアは、膨大な数のメモリ種類を含む膨大なメモリアドレス空間にアクセスする。例えば、コンピュータシステムのメモリアドレス範囲は、所定のプロセッサまたはプロセッサコアのみがアクセス可能な情報をストアする一方で、その他のアドレス範囲には、マルチプロセッサまたはプロセッサコアがアクセスする。メモリの排他性は、メモリアドレス範囲に関連する唯一の属性である。
いくつかの従来技術のシステムにおいては、メモリの許可またはアクセスのルールはオペレーティングシステム(OS)により、粒度が比較的粗い仮想メモリページの仮想メモリ管理を介して制御される。仮想メモリページの粒度は様々であるが、いくつかの従来技術のシステムでは、約4キロバイト(KB)から数メガバイト(MB)のサイズである。メモリ許可を変更することは、システムレイテンシ、ダイの不動産(die real estate)またはシステムコストの面で高価なオペレーションとなる。
状況によってはプログラムは、メモリアドレスにアクセスする前にそのメモリアドレスをチェックしなければならない。例えば、プログラムをデバッギングしたり、様々なコンピュータプログラミング言語(例えば、「Java」)の束縛および型安全性をチェックしたり、プログラムを性能分析に際してプロファイリングしたり、またはその他の理由により、プログラムは、アドレスにアクセスする前にそのアドレスをチェックする。
プログラムが一連のルールに従ってアドレスをチェックする場合、少なくとも2つの従来技術的なアプローチを用いる。一つのアプローチは、OSを用いて、ルールを満たさないアドレスが仮想メモリ管理によって確実に検出されるようにすることである。このアプローチにおいて、粒度は、仮想メモリ管理アドレス指定方法の比較的粗い粒度に制限され、アクセスルールを変更するためには大変なコストがかかることがある。もう一つの従来技術的アプローチは、メモリにアクセスするアドレスを用いる前に、そのプログラム自身の中のアドレスに対して一連のチェックを行うことである。この一連のチェックは、任意の一連のルールに対して、任意の粒度でアドレスを比較する。この従来技術的なアプローチの欠点は、実質的な性能オーバーヘッドが、所定のチェックを行うべくすべてのメモリリファレンスに費やされることである。
本発明の実施例は、同一の参照番号が類似する要素を示す添付の図面において、限定ではなく例として示される。
本発明の一実施例に係るキャッシュメモリを示す。ここで、様々なキャッシュラインは、一つ以上の属性ビットに関連付けられる。
コンピュータシステムメモリ階層を示す。ここで、本発明の少なくとも一つの実施例が用いられている。
一実施例に係る、一つ以上のキャッシュラインに関連する属性をチェックすることに係るオペレーションを示すフローチャートである。
本発明の少なくとも一つの実施例が用いられる、共有バスのコンピュータシステムを示す。
本発明の少なくとも一つの実施例が用いられる、ポイントツーポイントバスコンピュータシステムを示す。
本発明の実施例は、マイクロプロセッサおよびマイクロプロセッサシステムに関する。より詳しくは、本発明の実施例は、効率的な方法で様々なメモリプロパティをチェックするためにメモリ属性ビットを用いることに関する。
本発明の一実施例において、メモリの所定のセグメントまたは「ブロック」に関連するメモリ属性は、そのメモリブロックの様々なプロパティを示すために用いられる。例えば、一実施例において、ユーザによって定義された属性ビットは、メモリの各ブロックに関連付けられて、それの関連付けられたメモリブロックの任意数の、例えばアクセス権のようなプロパティを示す。一実施例において、各メモリブロックは、レベル1(L1)またはレベル2(L2)のキャッシュメモリ内のキャッシュラインのような、所定のキャッシュラインに対応し、その属性は、キャッシュメモリラインに配置されるかまたは関連付けられるビット格納領域を表す。他実施例においては、属性が関連するメモリブロックは、一つ以上のキャッシュメモリラインを含むか、または、DRAMのような他の種類のメモリに関連付けられる。
図1は、本発明の一実施例に係るキャッシュメモリの一部を示す。各ラインは、属性ビット格納領域の関連グループを有する。詳しくは、図1は、特定のメモリブロック(図示せず)に対応するキャッシュライン105を含むキャッシュメモリ100を示す。キャッシュライン105は、格納領域110内にビット形式でストアされるべくいくつかの属性に関連付けられる。一実施例において、格納領域はレジスタファイルである一方で、他実施例においては別の種類の格納領域が用いられる。格納領域110内には、キャッシュライン105に関連する属性ビット115のグループが存在する。これは、キャッシュラインにアクセスするソフトウェアプログラムによって使用可能な、キャッシュラインの様々なプロパティを表すビットをストアすることができる。
図1に示す実施例において、属性ビットのグループは、属性ビットが割り当てられる態様に応じてキャッシュラインの一つ以上のプロパティを表す4ビットを含む。例えば、一実施例において、属性ビットは、プログラムが現在アクセスしようとする部分に対してメモリブロックが適切であることを、プログラムが最近チェックしたことを示す。他実施例において、属性ビットは、例えば性能モニタリングツールによって後に分析するべくこのメモリブロックへの最近のリファレンスを、プログラムが記録したことを示す。他実施例において、属性ビットは、その他の許可、プロパティ等を表す。
属性ビットに加え、各キャッシュラインはまた、状態格納領域120にストアされる状態値に関連付けられる。例えば、一実施例において、状態格納領域120は、キャッシュラインが変更状態(M)、排他的所有状態(E)、共有状態(S)または無効状態(I)のいずれかにあることを表す、キャッシュライン105に関連する状態ビット125を含む。MESI状態は、様々なソフトウェアスレッド、コアまたはプロセッサが、所定のキャッシュラインにストアされた情報を使用および/または変更可能か否かを制御することができる。いくつかの実施例において、MESI状態属性は、キャッシュライン105のための属性ビット115に含まれる。
他実施例において、キャッシュメモリは、図1のそれと同様に関連属性ビットを有し、マルチコアプロセッサにおいていくつかのコアによってアクセスされる。各々のコアは、オペレーティングシステム内のシーケンサから発行されるいくつかのソフトウェアスレッドを実行することができる。所定の属性ビットを各キャッシュラインに割り当てることによって、コンピュータシステムの各プロセッサの各コア内の各スレッドは、アクセス、制御および/または変更が可能な単数のまたは複数のキャッシュラインを有する。
図2は、本発明の実施例がキャッシュメモリの構成を簡略化する態様を、コンピュータシステム内のプロセッサコアでソフトウェアを実行するスレッドの観点から概念的に示す。例えば、図2において、各スレッドは、キャッシュラインからなる関連キャッシュメモリ205−20mを有するシングルスレッドコア201−20nとして概念化することができる。そのキャッシュラインは、概念的なシングルスレッドコア上で実行される特定の対応スレッドによってのみ制御されることを表す。例えば、一実施例において、概念的なキャッシュメモリ205−20mは、シングルスレッドコア201−20nによって表されるスレッドによって変更されたMESI状態のみを有する。キャッシュメモリ205−20mの各々は実際には、単数または複数のキャッシュメモリ全体にわたって分配されたキャッシュラインからなるが、図2に示されるように構成を概念化することは、本発明の所定の実施例を理解する上で有用である。
本発明の一実施例において、メモリブロックに関連する属性は、命令、または命令からデコードされたマイクロオペレーションのような所定のオペレーションによって、アクセス、変更、または制御される。例えば、一実施例において、キャッシュラインから情報をロードし、かつ、対応する属性ビットをセットする命令(例えば「ロード・セット」命令)が用いられる。他実施例において、キャッシュラインから情報をロードし、かつ、対応する属性ビットをチェックする命令(例えば「ロード・チェック」命令)が、ロード・セット命令に加えて用いられる。
さらに他の実施例において、属性ビットを制御し、かつ、対応するキャッシュデータにアクセスするためにその他の命令が用いられる。例えば、一実施例において、キャッシュラインに情報をストアする一方で、対応する属性ビットをチェックまたはセット(またはその両方)する命令(例えば「ストア・セット」および/または「ストア・チェック」命令)が用いられる。いくつかの実施例において、ロードまたはストアのような関連キャッシュメモリオペレーションを有しない属性ビットを制御またはアクセスするための命令が用いられる。
キャッシュラインに関連付けられた属性をチェックする命令の場合、チェックされる属性に基づいて所定のイベントを実行すべく、一つ以上のプロセッシングコア内で一つ以上のアーキテクチャシナリオが定義される。属性チェックに応答して実行され得るその他の種類のイベントもある。例えば、一実施例において、アーキテクチャシナリオは、属性ビットを所定のデータセットと比較し、その比較の結果に基づいて軽量イールドイベント(light−weight yield event)を呼び出すように定義される。とりわけ、軽量イールドは、システムで実行されているスレッドまたはその他のプロセスに制御を返す前にシナリオの結果に応答して様々なオペレーションを実行するサービスルーチンを呼び出す。他実施例において、結果を示すべくフラッグまたはレジスタがセットされる。さらに他の実施例において、レジスタは所定値とともに書き込まれる。他のイベントは所定の応答として含まれる。
例えば、定義される一つのシナリオは、予想外のメモリ状態検出時に軽量イールドおよび対応するハンドラを呼び出すシナリオである。これは、スレッドまたはその他のプロセスが、所定のMESI状態を有すると予想してキャッシュラインにアクセスしようとしたがキャッシュラインが他のメモリ状態にある、すなわち、そのキャッシュラインが所定のスレッドまたはプロセスに関連していないことが示される場合に有用である。このようにして、制御を有する所定のスレッドキャッシュラインのみが、適切にアクセス、変更またはチェックされる。他実施例において、キャッシュラインメモリ属性のチェックに基づいて他のシナリオが定義される。他実施例において、キャッシュラインよりも細粒度の領域のメモリ属性がチェックされる。
図3は、本発明の少なくとも一つの実施例のオペレーションを示すフローチャートである。ここで、所定のキャッシュラインまたはキャッシュライン内のアドレス範囲に関連付けられた属性ビットをセットまたはチェックするべく、ロード・セットおよびロード・チェック命令が用いられる。他実施例において、図3に示すオペレーションを実行するために他の命令またはマイクロオペレーション(uop)が用いられる。オペレーション301において、実行されるのはロード・セット命令かロード・チェック命令かが決定される。ロード・セット命令が実行されると、その命令のロード部分によってアドレス指定されたキャッシュラインに関連付けられた属性ビットは、オペレーション305において変更される。一実施例において、ロード・セット命令は、ロード・セット命令からデコードされるロードマイクロオペレーションおよびセットマイクロオペレーションを含む。他の実施例には、ロード処理およびセット処理とともに他のオペレーションも含まれる。
実行される命令がロード・チェック命令の場合、ロード・チェック命令のロード部分によって特定されたアドレスに関連付けられた属性ビットは、オペレーション310で読み取られる。一実施例において、ロード・チェック命令には、ロード・チェック命令からデコードされるロードマイクロオペレーションおよびチェックマイクロオペレーションが含まれる。他実施例において、ロードおよびチェックオペレーションとともに、他のオペレーションが含まれる。オペレーション315において、属性ビットの状態に基づいてシナリオが実行される。他実施例において、シナリオは、オペレーション310で読み取られた属性ビットが未知状態のキャッシュラインを示すか否かをチェックする。そうであれば、オペレーション320において、所定のイベントが発生する。他実施例において、軽量イールドが発生し、それに応答するオペレーションを実行するためにイベントハンドラルーチンが実行される。イベントハンドラが完了した後(またはいくつかの実施例ではイベントハンドラが完了する前)、制御は、プログラム順に命令に戻り、軽量イールドが発生したところからの命令に従う。
他実施例は、属性ビットをチェックせずに、単にレジスタから属性ビットを読み取る。この値はその後プログラムによって用られる。一例としては、プログラムはこの値を比較し、値に応じて異なるコード経路に条件分岐させる。
図4は、本発明の一実施例が用いられたフロントサイドバス(FSB)コンピュータシステムを示す。プロセッサ405は、レベル1(L1)キャッシュメモリ410およびメインメモリ415からデータにアクセスする。本発明の他実施例においては、キャッシュメモリは、レベル2(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のシステム内の装置全体に分配される。
本明細書に記載される本発明の実施例は、相補型金属酸化膜半導体装置すなわち「ハードウェア」、または、本発明の実施例に関するオペレーションをプロセッサのようなマシンによる実行の際に行う、媒体にストアされた一連の命令すなわち「ソフトウェア」、を用いた回路とともに行われる。または、本発明の実施例は、ハードウェアとソフトウェアとの組み合わせを用いて行われる。
本発明は、具体的な実施例を参照して記載されているが、この記載は限定の意味で解釈されるものではない。開示の実施例および他の実施例の、本発明に関する当業者にとって明らかな様々な変更は、本発明の要旨及び範囲内にあるものとみなされる。

Claims (33)

  1. マルチソフトウェアスレッドを有するプログラムの唯一のソフトウェアスレッドに対応する一連の関連属性を有し、ロード・セット命令およびロード・チェック命令によりアクセスされるメモリブロックを含み、
    前記ロード・セット命令に応じて、メモリブロックから情報をロードし、かつ、前記関連属性をセットし、
    前記ロード・チェック命令に応じて、メモリブロックから情報をロードし、かつ、前記関連属性をチェックし、チェックされた前記関連属性に基づいて所定のイベントを実行する、
    装置。
  2. 前記メモリブロックは、キャッシュメモリ内のキャッシュラインに関連付けられる、請求項1に記載の装置。
  3. 前記キャッシュメモリは、前記一連の関連属性をストアするための、属性ビット格納領域の格納領域を含む、請求項2に記載の装置。
  4. 前記属性ビット格納領域は、唯一のキャッシュラインに関連する少なくとも一つのビット格納サブ領域を有する、請求項3に記載の装置。
  5. 前記一連の関連属性は、前記唯一のキャッシュラインが前記マルチソフトウェアスレッド対応することを示す情報を含む、請求項4に記載の装置。
  6. 前記キャッシュメモリの各キャッシュラインは属性ビットに関連する、請求項2からのいずれかに記載の装置。
  7. 前記キャッシュメモリはデータキャッシュである、請求項2からのいずれかに記載の装置。
  8. 前記キャッシュメモリは、データおよび命令をストアするための統合キャッシュである、請求項2からのいずれかに記載の装置。
  9. ストア・セット命令に応じて、メモリブロックに情報をストアし、かつ、前記関連属性をセットし、
    ストア・チェック命令に応じて、メモリブロックに情報をストアし、かつ、前記関連属性をチェックし、チェックされた前記関連属性に基づいて所定のイベントを実行する、
    請求項1から8のいずれかに記載の装置。
  10. 予想外のメモリ状態が検出された場合に所定のイベントを実行する請求項1から9のいずれかに記載の装置。
  11. マルチスレッドプログラムの唯一のソフトウェアスレッドに対応する属性ビットを有するキャッシュラインを含むコンピュータシステムにより実行されるプログラムであって、
    当該プログラムは、前記コンピュータシステムにより、
    前記コンピュータシステムのプロセッサが、ロード・セット命令に応じて、キャッシュラインから情報をロードし、かつ、関連する属性ビットをセットすることと、
    前記プロセッサが、ロード・チェック命令に応じて、キャッシュラインから情報をロードし、かつ、関連する前記属性ビットを読み取ることと、
    前記プロセッサが、前記属性ビットの値を決定することと、
    前記プロセッサが、前記属性ビットの前記値を決定することに応答して軽量イールドイベントを実行することと、
    を実行させるプログラム。
  12. 前記属性ビットの前記値を決定することは、前記プロセッサが、前記プロセッサ内のアーキテクチャシナリオを実行することを含む、請求項11に記載のプログラム
  13. 前記プロセッサは、一つの命令を実行した結果として前記属性ビットチェックる、請求項11または12に記載のプログラム
  14. 当該プログラムは、前記コンピュータシステムにより、
    前記プロセッサが、ストア・セット命令に応じて、キャッシュラインに情報をストアし、かつ、関連する前記属性ビットをセットすることと、
    前記プロセッサが、ストア・チェック命令に応じて、キャッシュラインに情報をストアし、かつ、関連する前記属性ビットを読み取ることと、
    を更に実行させる請求項11から13のいずれかに記載のプログラム。
  15. 前記シナリオは、前記プロセッサが、前記キャッシュメモリが予想外の状態にあるか否かを決定する、請求項12に記載のプログラム
  16. ロード・セット命令およびロード・チェック命令をストアするメモリと、
    前記ロード・セット命令および前記ロード・チェック命令の少なくとも一つをフェッチする少なくとも一つのプロセッシングコアを有する少なくとも一つのプロセッサと、
    を含み、
    前記ロード・セット命令は、キャッシュラインから情報をロードし、かつ、関連する属性ビットをセットし、
    前記ロード・チェック命令は、キャッシュラインから情報をロードし、かつ、関連する属性ビットをチェックし、チェックされた属性に基づいて所定のイベントを実行する、
    システム。
  17. 少なくとも一つのプロセッサは、前記属性ビットをチェックすることに応答してシナリオを実行するロジックを含む、請求項16に記載のシステム。
  18. 前記キャッシュラインが予想外の状態にあることを前記属性が示す場合、前記シナリオは軽量イールドイベントを発生させる、請求項17に記載のシステム。
  19. 前記軽量イールドイベントが発生する場合、前記予想外の状態が検出されることに応答してハンドラルーチンが呼び出される、請求項18に記載のシステム。
  20. 前記ロード・セット命令および前記ロード・チェック命令は、マルチソフトウェアスレッドを含むプログラムの唯一のソフトウェアスレッドに関連付けられる、請求項16から19のいずれかに記載のシステム。
  21. 前記属性ビットは、前記キャッシュラインに関連する複数の属性ビットの一つである、請求項16から20のいずれかに記載のシステム。
  22. 前記複数の属性ビットはユーザ定義である、請求項21に記載のシステム。
  23. 前記メモリは、ストア・セット命令およびストア・チェック命令を更にストアし、
    前記少なくとも一つのプロセッサは、前記ストア・セット命令および前記ストア・チェック命令の少なくとも一つをフェッチする前記少なくとも一つのプロセッシングコアを有し、
    前記ストア・セット命令は、キャッシュラインに情報をストアし、かつ、関連する前記属性ビットをセットし、
    前記ストア・チェック命令は、キャッシュラインに情報をストアし、かつ、関連する前記属性ビットをチェックし、チェックされた前記属性ビットに基づいて所定のイベントを実行する、
    請求項16から22のいずれかに記載のシステム。
  24. キャッシュラインに関連する複数の属性ビットをセットするための第一命令と、前記複数の属性ビットをチェックするための第二命令と、をフェッチするためのフェッチユニットと、
    前記複数の属性ビットをチェックすることに応答してシナリオを実行するためのロジックと、を含み、
    前記第一命令および第二命令は、前記キャッシュラインから情報をロードまたはストアするためのオペレーションを含む、
    プロセッサ。
  25. 複数のプロセッシングコアをさらに有し、各々は複数のソフトウェアスレッドを実行することができる、請求項2に記載のプロセッサ。
  26. 対応する前記キャッシュラインが予想外の状態にあることを前記複数の属性ビットが示す場合、前記シナリオを実行するための前記ロジックはハンドラルーチンを実行する、請求項24または25に記載のプロセッサ。
  27. 前記キャッシュラインは、変更状態、排他状態、共有状態および無効状態からなる複数の状態の一つにある、請求項26に記載のプロセッサ。
  28. 前記キャッシュラインが含まれるキャッシュメモリをさらに含む、請求項24から27のいずれかに記載のプロセッサ。
  29. コンピュータシステムのプロセッサが、ロード・セット命令に応じて、キャッシュラインから情報をロードし、かつ、関連する属性ビットをセットすることと、
    前記プロセッサが、ロード・チェック命令に応じて、キャッシュラインから情報をロードし、かつ、キャッシュラインに関連する属性ビットを読み取ることと、
    前記プロセッサが、前記属性ビットの値を決定することと、を含み、
    前記属性ビットは、性能モニタリングツールおよびデバッギングツールからなるグループから選択されるツールによる分析を目的として、前記キャッシュラインへの以前のリファレンスをプログラムが記録したか否かを示す方法。
  30. 前記キャッシュラインは、マルチスレッドプログラムのソフトウェアスレッドに対応する、請求項29に記載の方法。
  31. 前記プロセッサが、前記属性ビットの前記値を決定することに応答して軽量イールドイベントを実行することをさらに含む、請求項29または30に記載の方法。
  32. 前記属性ビットの前記値を決定することは、前記プロセッサが、プロセッサ内のアーキテクチャシナリオを実行することを含む、請求項29から31のいずれかに記載の方法。
  33. 前記プログラムは計装プログラムである、請求項29から32のいずれかに記載の方法。
JP2007028172A 2006-02-07 2007-02-07 メモリ属性を用いるための技術 Active JP4764360B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/349,661 US7991965B2 (en) 2006-02-07 2006-02-07 Technique for using memory attributes
US11/349,661 2006-02-07

Publications (2)

Publication Number Publication Date
JP2007242003A JP2007242003A (ja) 2007-09-20
JP4764360B2 true JP4764360B2 (ja) 2011-08-31

Family

ID=37898905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007028172A Active JP4764360B2 (ja) 2006-02-07 2007-02-07 メモリ属性を用いるための技術

Country Status (7)

Country Link
US (3) US7991965B2 (ja)
JP (1) JP4764360B2 (ja)
KR (1) KR100933820B1 (ja)
CN (2) CN101916231B (ja)
DE (1) DE102007006190B4 (ja)
GB (2) GB2451003B (ja)
TW (1) TWI335512B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US7610448B2 (en) 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
DE112009005006T5 (de) * 2009-06-26 2013-01-10 Intel Corporation Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM)
US20120239887A1 (en) * 2011-03-16 2012-09-20 Advanced Micro Devices, Inc. Method and apparatus for memory control
US9495305B1 (en) 2012-11-02 2016-11-15 David Fuchs Detecting pointer errors for memory protection
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
GB2517453B (en) * 2013-08-20 2017-12-20 Imagination Tech Ltd Improved use of memory resources
WO2015180068A1 (zh) * 2014-05-28 2015-12-03 华为技术有限公司 一种实现虚拟化网管的方法、装置及系统
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10310963B2 (en) * 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10489273B2 (en) * 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US11119914B2 (en) * 2019-11-15 2021-09-14 Micron Technology, Inc. Method of operating a memory with dynamically changeable attributes

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2573255B2 (ja) * 1987-09-30 1997-01-22 株式会社東芝 データキャッシュ制御方式
JPH01125638A (ja) * 1987-11-11 1989-05-18 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
JPH0210448A (ja) * 1988-06-28 1990-01-16 Hitachi Ltd キャッシュメモリシステム
JPH03193684A (ja) 1989-12-20 1991-08-23 Kobe Steel Ltd 炭素又は炭素複合材料の製造方法
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
KR940015822A (ko) 1992-12-30 1994-07-21 양승택 다중 프로세서 시스템에서 메모리 모듈의 상태변화 시험방법
US6461696B1 (en) 1993-11-16 2002-10-08 Baxter International Inc. Multi-layered polymer based moisture barrier structure for medical grade products
JP3266470B2 (ja) * 1994-10-03 2002-03-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 強制順序で行う要求毎ライト・スルー・キャッシュを有するデータ処理システム
US5761536A (en) * 1996-08-21 1998-06-02 International Business Machines Corporation System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
US5909698A (en) * 1997-03-17 1999-06-01 International Business Machines Corporation Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6412056B1 (en) * 1997-10-01 2002-06-25 Compac Information Technologies Group, Lp Extended translation lookaside buffer with fine-grain state bits
US6189112B1 (en) * 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6332181B1 (en) * 1998-05-04 2001-12-18 International Business Machines Corporation Recovery mechanism for L1 data cache parity errors
JP3331592B2 (ja) * 1998-05-22 2002-10-07 日本電気株式会社 キャッシュメモリ
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6366946B1 (en) * 1998-12-16 2002-04-02 Microsoft Corporation Critical code processing management
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
JP3607540B2 (ja) * 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式
JP3813393B2 (ja) * 1999-10-01 2006-08-23 富士通株式会社 キャッシュメモリの制御方法及び情報処理装置
JP3611295B2 (ja) * 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US6748496B1 (en) * 2000-04-18 2004-06-08 Ati International Srl Method and apparatus for providing cacheable data to a peripheral device
US6748501B2 (en) * 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US6704840B2 (en) * 2001-06-19 2004-03-09 Intel Corporation Computer system and method of computer initialization with caching of option BIOS
JP2003006046A (ja) 2001-06-25 2003-01-10 Sanyo Electric Co Ltd メモリプロテクション方法および回路
US6898694B2 (en) * 2001-06-28 2005-05-24 Intel Corporation High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle
JP4434534B2 (ja) * 2001-09-27 2010-03-17 株式会社東芝 プロセッサ・システム
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US6854039B1 (en) * 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
AU2002217653A1 (en) 2001-12-12 2003-07-09 Telefonaktiebolaget Lm Ericsson (Publ) Collision handling apparatus and method
JP2003223360A (ja) * 2002-01-29 2003-08-08 Hitachi Ltd キャッシュメモリシステムおよびマイクロプロセッサ
US6859868B2 (en) * 2002-02-07 2005-02-22 Sun Microsystems, Inc. Object addressed memory hierarchy
JP3866597B2 (ja) * 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
DE10309919B4 (de) 2003-03-07 2008-09-25 Qimonda Ag Pufferbaustein und Speichermodule
US7089373B2 (en) * 2003-06-12 2006-08-08 International Business Machines Corporation Shadow register to enhance lock acquisition
US7493618B2 (en) * 2003-09-19 2009-02-17 International Business Machines Corporation Fault tolerant mutual exclusion locks for shared memory systems
US20050138306A1 (en) * 2003-12-19 2005-06-23 Panchbudhe Ankur P. Performance of operations on selected data in a storage area
US7174428B2 (en) * 2003-12-29 2007-02-06 Intel Corporation Method and system for transforming memory location references in instructions
US7562361B2 (en) * 2004-02-26 2009-07-14 Microsoft Corporation Thread-based limitation on computer application
KR100620609B1 (ko) * 2004-04-07 2006-09-13 한국해양연구원 저층수인양장치
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US20070124546A1 (en) * 2005-11-29 2007-05-31 Anton Blanchard Automatic yielding on lock contention for a multi-threaded processor
US7616218B1 (en) 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US7987452B2 (en) * 2005-12-15 2011-07-26 International Business Machines Corporation Profile-driven lock handling
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes

Also Published As

Publication number Publication date
TW200817896A (en) 2008-04-16
US7991965B2 (en) 2011-08-02
US8812792B2 (en) 2014-08-19
GB2434892A (en) 2007-08-08
US20140025901A1 (en) 2014-01-23
US20110264866A1 (en) 2011-10-27
GB0813998D0 (en) 2008-09-10
GB2434892B (en) 2008-11-26
TWI335512B (en) 2011-01-01
CN101059777A (zh) 2007-10-24
KR20070080589A (ko) 2007-08-10
GB0702377D0 (en) 2007-03-21
GB2451003B (en) 2010-06-23
GB2451003A (en) 2009-01-14
DE102007006190A1 (de) 2007-08-30
KR100933820B1 (ko) 2009-12-24
DE102007006190B4 (de) 2017-10-26
CN101059777B (zh) 2010-11-03
CN101916231B (zh) 2013-11-20
US8560781B2 (en) 2013-10-15
CN101916231A (zh) 2010-12-15
JP2007242003A (ja) 2007-09-20
US20070186055A1 (en) 2007-08-09

Similar Documents

Publication Publication Date Title
JP4764360B2 (ja) メモリ属性を用いるための技術
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
US8019947B2 (en) Technique for thread communication and synchronization
US8521944B2 (en) Performing memory accesses using memory context information
US20070239940A1 (en) Adaptive prefetching
EP2645237B1 (en) Deadlock/livelock resolution using service processor
WO2008005687A2 (en) Global overflow method for virtualized transactional memory
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
JP5226010B2 (ja) 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路
GB2367648A (en) Avoidance of repeated trap handling
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
US7577791B2 (en) Virtualized load buffers
KR20240004361A (ko) 프로세싱-인-메모리 동시적 프로세싱 시스템 및 방법
US20100131718A1 (en) Multiprocessor system
US12007902B2 (en) Configurable memory system and memory managing method thereof
JP2023538241A (ja) メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視
TW202420100A (zh) 可配置的記憶體系統及其記憶體管理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100819

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

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

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

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4764360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250