JP2012514254A - トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル - Google Patents

トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル Download PDF

Info

Publication number
JP2012514254A
JP2012514254A JP2011543575A JP2011543575A JP2012514254A JP 2012514254 A JP2012514254 A JP 2012514254A JP 2011543575 A JP2011543575 A JP 2011543575A JP 2011543575 A JP2011543575 A JP 2011543575A JP 2012514254 A JP2012514254 A JP 2012514254A
Authority
JP
Japan
Prior art keywords
attribute
storage
logic
type
data
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.)
Granted
Application number
JP2011543575A
Other languages
English (en)
Other versions
JP5416223B2 (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 JP2012514254A publication Critical patent/JP2012514254A/ja
Application granted granted Critical
Publication of JP5416223B2 publication Critical patent/JP5416223B2/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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • 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
    • 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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

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

Abstract

【解決手段】 ハードウェア属性がトランザクション実行をサポートするためのメモリモデルを提供する方法および装置を説明する。読出監視属性、書込監視属性、または、バッファリング属性をロードする監視試験処理等、ハードウェア属性のロードが発生すると、ハードウェア属性が失われたことを損失フィールドが示している場合には、エラーが発行される。また、アドレスの依存関係およびアクセスの種類の依存関係に基づき、属性アクセス処理についてはブロックおよび転送等の依存関係処理が行なわれる。この結果、メモリモデルでは、属性が失われている場合、および、属性を試験する場合には、別の処理が可能となり、制限される。
【選択図】 図1

Description

本発明は、プロセッサの実行に関する。具体的には、命令群の実行に関する。
半導体加工およびロジック設計の技術革新が進むにしたがって、集積回路装置に設けるロジックの量を増加させることが可能となった。この結果、コンピュータシステム構成は、1つのシステム内に1または複数の集積回路を含む構成から各集積回路に複数のコアおよび複数の論理プロセッサを設ける構成へと進化した。プロセッサまたは集積回路は通常、1つのプロセッサダイで構成され、プロセッサダイは任意の数のコアまたは論理プロセッサを含むとしてよい。
集積回路に設けられるコアおよび論理プロセッサの数が増加の一途を辿ることによって、同時により多くのソフトウェアスレッドを実行できるようになっている。しかし、同時に実行されるソフトウェアスレッドの数が多くなることによって、複数のソフトウェアスレッド間で共有されるデータの同期化について問題が生じている。マルチコアシステムまたはマルチ論理プロセッサシステムにおいて共有データへのアクセスを可能とする一般的な解決方法の1つとして、共有データへの複数のアクセスの間で相互排除を確実に行なうためにロックを利用する方法がある。しかし、複数のソフトウェアスレッドを実行する機能が高度化する一方であるので、誤って競合する危険性および実行が逐次化されてしまう危険性がある。
例えば、共有データを保持するハッシュテーブルを考えられたい。ロックシステムを利用する場合、プログラマはハッシュテーブル全体をロックすることによって、1つのスレッドにハッシュテーブル全体にアクセスさせる。しかし、他のスレッドについては、ロックが解除されるまでハッシュテーブルのどのエントリにもアクセスできないので、スループットおよび実行には悪影響が出る可能性がある。これに代えて、ハッシュテーブル内のエントリ毎にロックする方法もあるとしてよい。いずれの方法でも、このように単純な例に基づき大規模に拡張可能なプログラムを考慮すると、ロック競合、逐次化、細粒度同期化、および、デッドロック回避の複雑性はプログラマにとって非常に面倒な負担となることは明らかである。
別の最新のデータ同期化技術を挙げると、トランザクショナルメモリ(TM)を利用する方法がある。トランザクション実行では、一群を成す複数のマイクロ演算、複数の演算、または複数の命令を実行することが多い。上記の例では、両方のスレッドがいずれもハッシュテーブル内で実行されており、メモリアクセスは監視/追跡されている。どちらのスレッドも同じエントリに対してアクセス/変更を行なう場合、データの有効性を保証するべくコンフリクト解決方法を実行するとしてよい。トランザクションを実行する方法の1つとして、ソフトウェアトランザクショナルメモリ(STM)がある。STMでは、メモリアクセスの追跡、コンフリクト解決、アボートタスク、およびその他のトランザクションタスクを、多くの場合にはハードウェアのサポート無しに、ソフトウェアで実行する。
トランザクションを実行する別の方法として、ハードウェアトランザクショナルメモリ(HTM)システムがある。HTMシステムでは、アクセス追跡、コンフリクト解決、および、その他のトランザクションタスクをサポートするべくハードウェアが含まれている。一例として、トランザクション実行のためのバッファリング、書込動作の監視、および、読出動作の監視をサポートするべくハードウェア属性が含まれているとしてよい。しかし、現在のメモリオーダリング(メモリ順序性)の実施例に応じたハードウェア属性を設定および読み出すための命令を利用すると、オーダリング違反が発生する場合がある。また、ハードウェア属性の保持方法が不可逆的である場合、つまり、強制排除(eviction)/書き換え時に失われてしまう場合、監視読出命令/監視試験命令が得る監視データは間違っている場合がある。
添付図面において本発明の例を図示するが、添付図面は本発明を限定するものではない。
複数のソフトウェアスレッドを同時に実行可能な複数の処理素子を備えるプロセッサの実施形態を示す図である。 ハードウェア属性に対するアクセスについてのメモリオーダリング(メモリ順序性)をサポートする構造を備えるプロセッサの実施形態を示す図である。 ハードウェア属性に対するアクセスについてのメモリオーダリング(メモリ順序性)をサポートする構造を備えるプロセッサの別の実施形態を示す図である。 ハードウェア属性に対するアクセスについてのメモリオーダリング(メモリ順序性)をサポートする構造を備えるプロセッサの別の実施形態を示す図である。 ハードウェア属性を読み出す際に適切なメモリオーダリングを行うための方法の実施形態を示すフローチャートである。
以下に記載する説明では、本発明を深く理解していただくべく、トランザクション実行のためのハードウェア構造の具体例、アクセス監視の種類および実施例の具体例、キャッシュの実施例の具体例、キャッシュコヒーレンシモデルの種類の具体例、データ粒度の具体例、属性の種類の具体例、および、依存性を検出するための構造の具体例等、具体的且つ詳細な内容を数多く記載する。しかし、本発明を実施する際に以下に記載する具体的且つ詳細な内容を必ずしも利用する必要はないことは当業者には明らかである。また、ハードウェア監視/属性の実施例の詳細な内容、トランザクションの画定、具体的且つ別のマルチコア型およびマルチスレッド型のプロセッサアーキテクチャ、具体的なコンパイル方法/実施例、および、具体的且つ詳細なマイクロプロセッサの動作等、公知の構成要素または方法は、本発明を不要にあいまいにすることを避けるべく、詳細な説明を省略している。
本明細書に記載する方法および装置は、トランザクションの実行をサポートするためのハードウェア属性のメモリモデルを提供する。具体的には、アクセスバッファを持つアウトオブオーダ・プロセッサを参照しつつメモリモデルを説明する。実際には、図2から図4は、格納バッファ等のバッファを変形した実施形態に関する図である。しかし、ハードウェア属性のメモリモデルを提供する方法および装置は、任意の形式のプロセッサ、例えば、ハードウェア属性に対するアクセスを処理する任意の構造において実施され得るので、これらに限定されるものではない。
図1を参照すると、同時に複数のスレッドを実行可能なプロセッサの実施形態が図示されている。尚、プロセッサ100は、ハードウェアトランザクション実行をハードウェアでサポートするとしてよい。プロセッサ100はさらに、ハードウェアトランザクション実行と共に、または、それとは別に、ソフトウェアトランザクショナルメモリ(STM)のハードウェア加速化、STMの独立した実行、または、ハイブリッドトランザクショナルメモリ(TM)システム等のこれらの組み合わせをハードウェアでサポートするとしてよい。プロセッサ100は、任意のプロセッサを備え、例えば、マイクロプロセッサ、組み込み型プロセッサ、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、または、コードを実行するその他のデバイスを備える。プロセッサ100は、図示しているように、複数の処理要素を備える。
一実施形態によると、処理要素とは、スレッドユニット、処理ユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、および/または、実行状態またはアーキテクチャ状態等のプロセッサの状態を保持可能な任意のその他の素子を意味する。つまり、処理要素とは、一実施形態によると、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または、その他のコード等のコードと独立して対応付けが可能な任意のハードウェアを意味する。物理プロセッサとは通常、コアまたはハードウェアスレッド等の別の処理要素を任意の数だけ有する集積回路を意味する。
コアとは通常、独立したアーキテクチャ状態を維持可能な集積回路に設けられるロジックを意味する。尚、独立して維持されるアーキテクチャ状態はそれぞれ、少なくとも幾つかの専用実行リソースと対応付けられている。コアとは対照的に、ハードウェアスレッドは通常、独立したアーキテクチャ状態を維持可能な集積回路に設けられる任意のロジックを意味するが、独立して維持されるアーキテクチャ状態は互いに、実行リソースへのアクセスを共有している。ここから分かるように、あるリソースが共有リソースで、他のリソースがあるアーキテクチャ状態の専用リソースである場合、ハードウェアスレッドおよびコアは意味が重複するものとする。しかし多くの場合には、コアおよびハードウェアスレッドはオペレーティングシステムによって個別の論理プロセッサと見なされ、オペレーティングシステムは論理プロセッサ毎に演算を個別にスケジューリングすることができる。
図1に示すように、物理プロセッサ100は、高位レベルキャッシュ110に対するアクセスを共有している2つのコア、コア101およびコア102を備える。プロセッサ100は非対称なコアを備える場合もあるが、つまり、構成、機能ユニット、および/または、ロジックが異なるコアを備える場合もあるが、図示されているのは対称的なコアである。この結果、コア102は、コア101と同一のものとして図示されており、説明が繰り返しにならないように詳細な説明は省略する。また、コア101は、2つのハードウェアスレッド101aおよび101bを有しており、コア102は、2つのハードウェアスレッド102aおよび102bを有している。このため、オペレーティングシステム等のソフトウェアエンティティは、プロセッサ100を4つの別個のプロセッサと見なす。つまり、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサまたは処理要素があると見なす。
ここで、第1のスレッドはアーキテクチャ状態レジスタ101aに対応付けられており、第2のスレッドはアーキテクチャ状態レジスタ101bに対応付けられており、第3のスレッドはアーキテクチャ状態レジスタ102aに対応付けられており、第4のスレッドはアーキテクチャ状態レジスタ102bに対応付けられている。図示されているように、アーキテクチャ状態レジスタ101aはアーキテクチャ状態レジスタ101bで複製されているので、論理プロセッサ101aおよび論理プロセッサ101bについて個別にアーキテクチャ状態/コンテキストが格納可能である。他のより小規模のリソース、例えば、名称変更割り当てロジック130内の名称変更ロジックおよび命令ポインタもまた、スレッド101aおよび101bについて複製されているとしてよい。一部のリソース、例えば、リオーダ/リタイアユニット135内のリオーダバッファ、ILTB120、ロード/格納バッファ、および、待ち行列は、パーティション化によって共有されるとしてよい。その他のリソース、例えば、汎用内部レジスタ、ページテーブルベースレジスタ、低位レベルデータキャッシュおよびデータTLB115、実行ユニット140、および、アウトオブオーダユニット135の一部は、完全に共有化される。
プロセッサ100は通常、上記以外にも完全に共有化されるリソース、パーティション化によって共有されるリソース、または、特定の処理素子専用のリソースも備える。図1に示すプロセッサの実施形態は完全に一例でしかなく、プロセッサの機能ユニット/リソースも一例である。尚、プロセッサは上述した機能ユニットのうちいずれを備えるとしてもよいし、いずれを省略するとしてもよく、図示していない任意のその他の公知の機能ユニット、ロジック、または、ファームウェアを含むとしてもよい。
図示されているように、プロセッサ100は、システムメモリ175、チップセット、ノースブリッジ、または、その他の集積回路等、プロセッサ100の外部のデバイスと通信するべく、バスインターフェースモジュール105を備える。メモリ175は、プロセッサ100専用としてもよいし、または、システム内の別のデバイスとの間で共有するとしてもよい。高位レベルキャッシュまたは遠方のキャッシュ110は、高位レベルキャッシュ110から最近フェッチされた要素をキャッシュする。尚、「高位のレベル」または「遠方」とは、実行ユニットを基準に増えていくキャッシュレベルまたは実行ユニットから離れたキャッシュレベルを意味する。一実施形態によると、高位レベルキャッシュ110は、第2レベルデータキャッシュである。しかし、高位レベルキャッシュ110は、これに限定されるものではなく、命令キャッシュと対応付けられるとしてもよいし、命令キャッシュを含むとしてもよい。これに代えて、トレースキャッシュ、つまり、一種の命令キャッシュをデコーダ125の後に結合して、最近デコードされたトレースを格納するとしてもよい。モジュール120はさらに、実行/採用されるべき分岐を予測するための分岐ターゲットバッファ、および、命令用のアドレス変換エントリを格納するための命令変換バッファ(I−TLB)を含むとしてもよい。
デコードモジュール125は、フェッチされた要素をデコードするべく、フェッチユニット120に結合されている。一実施形態によると、プロセッサ100は、プロセッサ100で実行可能な命令を定義/特定する命令セットアーキテクチャ(ISA)に対応付けられている。ここで、ISAが認識する機械コード命令は、実行されるべき命令または演算を参照/特定するオプコード(opcode)と呼ばれる命令の一部を含むことが多い。
一例によると、割り当て名称変更ブロック130は、命令処理結果を格納するレジスタファイル等のリソースを確保する割り当て部を有する。しかし、スレッド101aおよび101bはアウトオブオーダ実行が可能であり、この場合、割り当て名称変更ブロック130はさらに、命令結果を追跡するためのリオーダバッファ等の他のリソースを確保する。ユニット130はさらに、プログラム/命令参照レジスタをプロセッサ100内の他のレジスタへと名称変更するレジスタ名称変更部を含むとしてよい。リオーダ/退避ユニット135は、上述したリオーダバッファ、ロードバッファ、および、格納バッファ等の素子を含み、アウトオブオーダ実行をサポートすると共に、アウトオブオーダで実行された命令を後で順序正しく退避させる。
スケジューラおよび実行ユニットブロック140は、一実施形態によると、命令/演算を実行ユニットに対してスケジューリングするスケジューラユニットを含む。例えば、浮動少数点命令は、利用可能な浮動小数点実行ユニットを持つ実行ユニットのポートに対してスケジューリングされる。さらに、情報命令処理結果を格納するべく、実行ユニットに対応付けられているレジスタファイルも含まれている。実行ユニットの例を挙げると、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、格納実行ユニット、および、その他の公知の実行ユニットがある。
実行ユニット140には、低位レベルデータキャッシュおよびデータ変換バッファ(D−TLB)150が結合されている。データキャッシュは、最近利用された/演算が行なわれたデータオペランド等の要素であって、メモリコヒーレンシ状態で保持される要素を格納する。D−TLBは、最近の仮想/リニアアドレスから物理アドレスへの変換を格納する。具体例を挙げると、プロセッサは、物理メモリを複数の仮想ページに分割するためのページテーブル構造を備えるとしてよい。
一実施形態によると、プロセッサ100は、ハードウェアトランザクション実行、ソフトウェアトランザクション実行、または、これらの組み合わせまたはハイブリッド実行が可能である。トランザクションは、コードのクリティカルセクションまたはアトミックセクションとも呼ばれ、アトミック群として実行されるべき命令群、演算群、または、マイクロ演算群を含む。例えば、命令または演算に基づき、1つのトランザクションまたは1つのクリティカルセクションの境界を定めるとしてよい。一実施形態によると、以下でより詳細に説明するが、これらの命令は、上述したデコーダ等、プロセッサ100のハードウェアが認識可能な、命令セットアーキテクチャ(ISA)等の命令群の一部である。多くの場合、これらの命令は、高級言語からハードウェアで認識可能なアセンブリ言語にコンパイルされると、デコード段階でデコーダが認識する、演算コード(オプコード)、または、命令のその他の一部分を含む。
一般的に、トランザクションを実行している間は、当該トランザクションがコミットされるまで、メモリに対する更新はグローバルに可視化されない。一例を挙げると、ある位置へのトランザクション的な書込はローカルスレッドには可視であるが、当該トランザクション的な書込を含むトランザクションがコミットされるまで、別のスレッドからの読出に応じて、当該書込データは転送されない。トランザクションがまだ実行中である間は、より詳細に後述されるが、メモリ内からロードされるデータアイテム/要素およびメモリ内に書き込まれるデータアイテム/要素は追跡される。トランザクションがコミットポイントに到達すると、当該トランザクションについてコンフリクトが検出されていなければ、当該トランザクションはコミットされて、トランザクション実行中に為された更新をグローバルに可視化する。
しかし、トランザクションが実行中に無効化されれば、当該トランザクションはアボートされて更新をグローバルに可視化することなく再度開始される。このため、「トランザクション実行中」とは、本明細書において、実行が開始されているがコミットまたはアボートされていない、つまり、完了していないトランザクションを意味する。
ソフトウェアトランザクショナルメモリ(STM)システムは一般的に、アクセス追跡、コンフリクト解決、または、その他のトランザクショナルメモリタスクを少なくとも部分的にソフトウェアで実行することを意味する。一実施形態によると、プロセッサ100は、トランザクション実行をサポートすることを目的としてプログラムコードをコンパイルするコンパイラを実行することができる。ここにおいて、コンパイラは、演算、呼び出し、関数、および、トランザクションの実行を可能とするためのその他のコードを挿入するとしてよい。
コンパイラは通常、ソーステキスト/ソースコードをターゲットテキスト/ターゲットコードに変換するプログラムまたはプログラム群を持つ。大抵の場合、コンパイラによるプログラム/アプリケーションコードのコンパイルは、複数の段階で実行され、高級プログラミング言語のコードを低級の機械言語またはアセンブリ言語のコードに変換する。しかし、コンパイルが単純な場合にはワンパスコンパイラを依然として利用するとしてよい。コンパイラは、任意の公知のコンパイル技術を利用して任意の公知のコンパイル動作を実行するとしてよい。例えば、字句解析、事前処理、構文解析、意味解析、コード生成、コード変換、および、コード最適化等を実行するとしてよい。
コンパイラは大規模になると複数の段階を含むのが通常であるが、これら複数の段階は概して2つの段階に分けられることが非常に多い。(1)フロントエンド段階、つまり、構文的処理、意味的処理、および、一部の変換/最適化が通常実行される段階である。(2)バックエンド段階、つまり、分析、変換、最適化、および、コード生成が通常実行される段階である。一部のコンパイラでは、コンパイラのフロントエンドとバックエンドとの間の線引きをあいまいにするミドルエンドという考え方もある。このため、コンパイラによる挿入、対応付け、生成、または、その他の動作は上記の段階またはパスのいずれにおいて実行されるとしてもよく、コンパイラの任意のその他の公知の段階またはパスにおいて実行されるとしてもよい。説明のために一例を挙げると、コンパイラは基本的に、トランザクション的な演算、呼び出し、関数等をコンパイルのうち1以上の段階で挿入する。例えば、コンパイルのフロントエンド段階で呼び出し/演算を挿入した後で、トランザクショナルメモリ変換段階で呼び出し/演算の低級コードへの変換を行なう。
しかしながら、コンパイラは、実行環境および本質的に動的または静的であるかにかかわらず、一実施形態によると、トランザクションの実行を可能とするべくプログラムコードをコンパイルする。このため、プログラムコードの実行と言う場合、一実施形態によると、(1)コンパイラプログラムを動的または静的に実行して、メインプログラムコードをコンパイルして、トランザクション構造を保持するか、または、他のトランザクション関連の演算を実行するか、(2)トランザクション的な演算/呼び出しを含むメインプログラムコードを実行するか、(3)メインプログラムコードに対応付けられているライブラリ等のほかのプログラムコードを実行するか、または、(4)これらの組み合わせとなる。
一実施形態によると、プロセッサ100は、ハードウェア/ロジックを用いて、つまり、ハードウェアトランザクショナルメモリ(HTM)システム内で、トランザクションを実行することができる。HTMを実現する場合の具体的且つ詳細な内容についてはアーキテクチャおよびマイクロアーキテクチャのいずれの視点からも数多くの文献があり、その大半は、本発明を不要にあいまいにすることを避けるべく本明細書では説明を省略する。しかし、説明を目的として、一部の構造および実施例を記載している。しかし、これらの構造および実施例は必ずしも必要なわけではなく、実施の際の詳細な内容が異なる別の構造を追加および/または置換するとしてもよいものと留意されたい。
データアイテムに対して、ローカル処理素子および他の処理素子の両方からアクセスおよび要求が為されるとしてよい。トランザクショナルメモリシステムに安全機構がなければ、このようなアクセスのうち一部は、無効なデータに対して為されて実行も無効化される可能性がある。つまり、データ書込によって読出が無効になったり、または、無効なデータの読出が行なわれたりする可能性がある。このため、プロセッサ100は、コンフリクトの可能性があるか否かを特定するべく、データアイテムに対するメモリアクセスを追跡または監視するロジックを備えるとしてよい。
データアイテムまたはデータ要素は、ハードウェア、ソフトウェア、または、これらの組み合わせによって定義されるが、任意の粒度レベルのデータを含むとしてよい。データ、データ要素、データアイテム、またはこれらへの参照の例を列挙すると、全てを網羅するものではないが、メモリアドレス、データオブジェクト、クラス、動的言語コードの型のフィールド、動的言語コードの型、変数、オペランド、データ構造、および、メモリアドレスへの間接参照がある。しかし、任意の公知のデータ群をデータ要素またはデータアイテムと呼ぶとしてもよい。上述した例のうち幾つか、例えば、動的言語コードの型のフィールドおよび動的言語コードの型とは、動的言語のコードのデータ構造を意味する。例えば、Sun Microsystems,Inc社のJava(登録商標)のような動的言語コードは、型付けの程度が強い言語である。変数にはそれぞれ、コンパイル時に既知である型が割り当てられる。型は2つのカテゴリーに分類される。プリミティブ型(ブーリアン型および数字型、例えば、整数型、浮動少数点数)および参照型(クラス、インターフェース、および、アレイ)である。参照型の値はオブジェクトに対する参照である。Java(登録商標)では、オブジェクトは、複数のフィールドから構成されており、クラスインスタンスまたはアレイであってよい。クラスAのオブジェクトaを考えると、型AのフィールドxはA::x、クラスAのオブジェクトaのフィールドxはa.xと表記するのが慣習となっている。例えば、a.x=a.y+a.zという式で表されるとしてよい。ここで、フィールドyおよびフィールドzは加算されるべくロードされ、結果はフィールドxに書き込まれる。
このため、データアイテムへのメモリアクセスの監視/バッファリングは任意のデータ粒度レベルで実行されるとしてよい。例えば、一実施形態によると、データに対するメモリアクセスは型のレベルで監視される。この場合、フィールドA::xに対するトランザクション的な書込およびフィールドA::yの非トランザクション的なロードは、同じデータアイテム、つまり、型Aに対するアクセスとして監視されるとしてよい。別の実施形態によると、メモリアクセスの監視/バッファリングは、フィールドレベルの粒度で実行される。この場合、フィールドA::xに対するトランザクション的な書込およびフィールドA::yの非トランザクション的なロードは、別々のフィールドを参照しているので、同じデータアイテムに対するアクセスとして監視されない。尚、データアイテムに対するメモリアクセスを追跡する際には他のデータ構造またはプログラミング技術が考慮される場合がある。一例として、クラスAのオブジェクトのフィールドxおよびy、つまり、A::xおよびA::yがクラスBのオブジェクトを指し示しており、新しく割り当てられたオブジェクトへと初期化され、初期化後は書き込みが為されないと仮定する。一実施形態によると、A::xによって指し示されているオブジェクトのフィールドB::zへのトランザクション的な書込は、A::yによって指し示されているオブジェクトのフィールドB::zの非トランザクション的なロードに関しては、同じデータアイテムに対するメモリアクセスとして監視されない。上記の例から推定すると、監視部は任意のデータ粒度レベルで監視/バッファリングを実行し得ると考えられる。
一実施形態によると、監視部は、監視対象と決定されたロードおよび格納を追跡する読出監視部および書込監視部を含む。一例を挙げると、ハードウェアの読出監視部および書込監視部は、基礎となる格納構造の粒度には関係なく、データアイテムの粒度でデータアイテムを監視する。一実施形態によると、データアイテムは、少なくともデータアイテム全体が適切に監視されるように、格納構造の粒度で対応付けられている追跡機構によって画定される。読出監視部/属性を利用してデータアイテムを監視する例は、同時係属中の出願第XX/XXX,XXX(代理人整理番号第P29130、発明の名称:「トランザクショナルメモリ(TM)システムにおける読出および書込の監視属性」、発明者:ガド・シーファー(Gad Sheaffer)他)により詳細に記載されている。しかし、監視部、属性、注釈、または、その他の追跡機構は、任意の粒度のデータまたはデータ保持構造を用いて、トランザクション実行に対応付けられるコンフリクトの検出に用いられるとしてもよい。
属性は、データアイテムに対応付けられている状態を保持する任意のロジック、ファームウェア、または、構造を含む。例えば、データアイテムの属性は、ビットベクトルを含む。ビットベクトル内の各ビットが、データアイテムの属性、例えば、トランザクション的にロードされたか、トランザクション的に書き込まれたか、非トランザクション的にロードされたか、非トランザクション的に書き込まれたか、トランザクション的にロードされていないか、トランザクション的に書き込まれていないか、非トランザクション的にロードされていないか、非トランザクション的に書き込まれていないか、バッファリングされているか、バッファリングされていないか、アクセスコンフリクトが検出されているか、アクセスコンフリクトが検出されていないか、読出要求か、読出要求でないか、書込要求か、書込要求でないか、所有権要求か、所有権要求でないか、または、データアイテムあるいはデータアイテムを保持するメモリ位置に対応付けられている任意のその他の属性あるいは状態を表す。別の例として、データアイテムの属性はエンコードされた値を含む。例えば、複数の状態、例えば、(1)読出が監視されている、(2)読出が監視されていない、(3)書込が監視されている、(4)書込が監視されていない、(5)バッファリングされている、(6)バッファリングされていない、という4つの状態が、3つの属性ビット、つまり、000、001、010、011、100、101、110という6つのバイナリ値を用いてエンコードされている。
さらに別の例によると、属性は、データキャッシュ150等のキャッシュメモリに対応付けられているコヒーレンシ状態アレイの一部として含められる。キャッシュコヒーレンシ状態の例を列挙すると、全てを網羅するものではないが、読出監視属性、書込監視属性、バッファリング属性、別の属性またはこれらの組み合わせを補完または捕捉する、修正済状態、排他的状態、共有状態、または、無効(MESI)状態がある。このため、新しいコヒーレンシ状態、例えば、読出監視バッファリングコヒーレンシ状態または書込監視バッファリングコヒーレンシ状態を作成する必要がある。したがって、従来から公知のコヒーレンシプロトコルおよび通信/スヌーププロトコルを、コンフリクトを検出するためのハードウェア監視部/属性と組み合わせて、利用するとしてよい。
設計に応じて、キャッシュラインの監視コヒーレンシ状態およびキャッシュコヒーレンシ要求をさまざまに組み合わせると、共有読出状態であるデータアイテムをキャッシュラインが保持すると同時に、スヌープが当該データアイテムに対する書き込み要求を示す等、コンフリクトが生じる可能性がある。逆に、バッファリング書込状態であるデータアイテムをキャッシュラインが保持すると同時に、外部スヌープが当該データアイテムへの読出要求を示す事態は、コンフリクトとなる可能性があると見なされるとしてよい。一実施形態によると、このようなアクセス要求と属性状態との組み合わせを検出するべく、コンフリクトを検出/報告するための監視部および/またはロジック等のコンフリクト検出/報告ロジックにスヌープロジックが結合される。
一実施形態によると、アクセスコンフリクト、監視コンフリクトの損失、データコンフリクトの損失等のコンフリクトを効率的に処理するべく、ハードウェアにはハンドラが登録される。一例を挙げると、レジスタは、トランザクションハンドラのアドレスを登録するべく、例えば、トランザクションランタイムまたはアプリケーションコード等を、ソフトウェアによって変更可能である。上述したようなアクセスコンフリクトまたは情報の損失等、対象となるイベントが検出されると、一実施形態によれば、制御フローは、オペレーティングシステム(OS)等の特権ソフトウェアが介在することなく、レジスタに登録されているトランザクションハンドラへと導かれる。ハードウェアにハンドラを登録する方法は、関連出願(代理人整理番号:P29129、発明の名称:「トランザクショナルメモリのイベントハンドリングのためにハードウェアにユーザハンドラを登録」、発明者:ガド・シーファー(Gad Sheaffer)他に記載されている。
不可逆性データ、つまり、キャッシュから強制排除されると失われる情報として属性が保持されるとしても、または、強制排除に伴って書き戻されるデータの一部として属性が保持されるとしても、一実施形態によると、プロセッサ100のアーキテクチャは、属性にアクセスするための命令、演算、または、マイクロ演算をサポートする。例えば、監視設定命令は、属性を特定値に設定する命令で、監視クリア命令は、属性をデフォルト値にクリアする命令で、属性試験命令は、属性を読み出す命令である。また、トランザクション的なロードおよびトランザクション的な格納といった特定の処理は、非明示的に、属性を設定するとしてよい。例えば、トランザクション的な格納は、非明示的に、データがバッファリングされる旨を示すようにバッファリング属性を設定すると共に、バッファリングされたデータが書込監視される旨を示すように書込監視属性を設定するとしてよい。
一実施形態によると、明示的アクセスまたは非明示的アクセスを含む、属性に対するアクセスを適切にオーダリングするメモリモデルが提供される。例えば、属性の第1のロードおよび第2のロードがアウトオブオーダで実行されると、不正なメモリオーダリングが可能となる場合がある。アウトオブオーダ実行プロセッサにおける擬似コードおよび予測結果を以下に説明する。
Set_monitor[M]
R0=test_monitor[M]
R1=test_monitor[M]
1)R0=TRUEおよびR1=FALSEは許可
2)R0=FALSEおよびR1=TRUEは禁止
3)R0=TRUEおよびR1=TRUEは許可
4)R0=FALSEおよびR1=FALSEは許可
一実施形態によると、ケース1)、3)、および4)は許可されていることに留意されたい。しかし、ケース2)に関しては、アドレスMに対応付けられている読出属性(R0)の第1の試験の前に、アドレスMが読出監視されている旨を示すように読出監視が設定されていると仮定している。また、アドレスMに対応付けられているキャッシュラインおよび読出監視が、読出属性の第2の試験(R1)の前に、強制排除されている。ここにおいて、第1の試験および第2の試験がアウトオブオーダで実行されると、第1の試験(R0)は強制排除のために読出監視は無しと返し(FALSE)、第2の試験が読出監視が有りと返す(TRUE)場合がある。このケースは、一実施形態によると、不正なケースであり、アウトオブオーダで実行されたプログラム順序の試験処理間で矛盾が生じる可能性がある。
このため、一実施形態によると、キャッシュセット、キャッシュライン、キャッシュロケーション、または、キャッシュエントリ等のキャッシュ素子は、損失フィールドと対応付けられている。一例を挙げると、損失フィールドは、データキャッシュの一部に含められ、強制排除時に情報が失われないようにする。ここにおいて、損失フィールドが損失値に設定されていて、属性情報が失われており誤りである可能性がある旨を示している場合には、次のロード処理等の後続アクセスが為された際に一貫性が得られる。上述した例を再度用いて説明する。上述したように、第2の試験処理(R1)が最初に実行された後に、強制排除によって読出属性が失われた結果、損失フィールドが損失値に設定される。損失フィールドが設定された状態で、第1の試験処理(R0)が続いてアウトオブオーダで実行されると、コンフリクトが検出される。一例を挙げると、この場合にはR0はエラーとなる。エラーに応じて、メモリモデルが壊れないようにするべく、どちらの処理も再開される。つまり、上記のうちケース2)は禁止である。
従前のプロセッサアーキテクチャでは、属性情報が失われることに加えて、ほかにもメモリの一貫性に違反する事象が発生する可能性がある。例えば、外部アクセスに関して属性アクセス命令/処理に起因して発生する非一貫性が挙げられる。一例を挙げると、アドレスAのロード処理の前に、アドレスAに対応付けられている読出監視設定処理を実行すると仮定する。尚、読出監視のバッファリングがイネーブルされている場合、読出監視設定処理は、リタイアした後、ロード処理がリタイアした後に読出監視を更新するとしてよい。ロード処理のリタイアと読出属性の実際の更新との間の時間は、脆弱性がある。
この時間において外部スヌープを受け取ると仮定して説明する。ここで、ローカル処理素子は、アドレスAが読出監視されている旨を示すように読出属性が設定されていると考えているが、読出属性はまだマーキングされていないので、外部スヌープはアドレスAが読出監視されていないものと考える。基本的に、読出監視/属性について一貫した見方はない。このため、一実施形態によると、スヌープに応じて、上記の読出監視設定処理等の格納処理等の先の格納がインフライトで、読出属性をマーキングしていないか否かを判断するべく、格納バッファに対してスヌープが行なわれる。例えば、格納バッファ内のエントリがヒットすれば、つまり、ハードウェア属性に対するインフライトな格納があれば、当該エントリからの属性情報の転送、および、読出属性の更新は禁止される。
属性アクセス命令と外部アクセスとの間で一貫性について問題が発生する可能性があることに加えて、属性アクセスをアウトオブオーダで実行する場合も一貫性に問題が発生する可能性がある。例えば、トランザクション的なロードが非明示的に読出監視を設定して、監視試験命令が続いて読出監視を試験して、処理がアウトオブオーダで実行される場合を考えられたい。この結果、監視試験命令は、処理実行タイミングに応じて、「監視あり」または「監視なし」という答えを返すとしてよい。この問題を緩和するべく数多くのメモリモデル実施例が利用されるとしてよい。
第1の例として、読出監視設定処理等の読出監視を設定する処理は、読出監視を設定する処理が読出監視を更新するまで、読出監視試験処理等の読出監視をロードする処理をブロック/禁止する。このため、上述した脆弱性の問題は、後続の試験処理が読出監視のマーキングが行なわれるまでブロックされるので、解決される。別の例を挙げると、監視されている情報は監視を設定する命令から、当該監視を試験する命令へと転送される。また、読出監視のバッファリングを、実際に読出監視をバッファリングすることなく、エミュレーションするとしてよい。
転送または実行をブロックするためには、格納バッファおよび/またはロードバッファを含むメモリオーダバッファが生成側の処理と消費側の処理との間の依存関係を検出する。しかし、依存関係は、アドレスの依存関係だけに応じて決まるのではなく、アクセス種類の依存関係、つまり、生成側アクセスという属性種類および消費側アクセスという属性種類に応じても決まり得る。以下に示す表1に、属性アクセス命令間での依存関係の一例を示す。
Figure 2012514254
尚、上記の表は、命令/処理およびその依存関係を全て網羅して列挙したものではない。表1では、「1」という値は依存関係が存在することを表し、上述したように、依存関係処理として転送またはブロックが行なわれるとしてよい。転送またはブロックをサポートする構造は、図3および図4を参照しつつ、後述する。依存関係が検出されると、生成側からの情報は転送されるべきか否か、または、生成側が当該情報で属性を更新するまで消費側はブロックされるべきか否かが判断される。
最初に図1を参照して上述したように、プロセッサ100のアーキテクチャは説明のために例示的に挙げられているに過ぎない。同様に、さまざまな粒度のデータ項目に対してハードウェア監視/属性を対応付ける方法はどのような方法を用いるとしてもよいので、属性とデータ項目/要素とを対応付ける具体例もまた例に過ぎない。
図2は、トランザクション実行のためのハードウェア属性をサポートするメモリモデルを実装する構造を備えるプロセッサの実施形態を示す図である。プロセッサ250は、トランザクション実行が可能な処理素子を任意の数有する任意の種類の公知のプロセッサを含む。図示していないが、プロセッサ250は、ほかのシステム構成要素に結合されているとしてよい。例えば、チップセット、つまり、メモリコントローラハブおよび入出力(I/O)コントローラハブ、ならびに、システムメモリに結合されているとしてよい。コンピュータシステムが備えるI/Oデバイスの一般的な例としては、ネットワークコントローラ、ビデオディスプレイアダプタ、グラフィクスプロセッサ、オーディオコントローラ、または、その他の入出力デバイスが挙げられる。
一実施形態によると、プロセッサ250はキャッシュメモリを備える。キャッシュの最も一般的な例としては、図1に示すように、第1レベルキャッシュまたは第2レベルキャッシュ等のデータキャッシュが挙げられる。しかし、キャッシュはさらに、命令キャッシュ、トレースキャッシュ、または、その他の公知のキャッシュを含むとしてもよい。キャッシュアーキテクチャについては本発明の説明を不要にあいまいにすることを避けるべく詳細な説明を省略するが、キャッシュの編成方法には数多くの方法があるとしてよい。例えば、キャッシュは、メモリアドレスをキャッシュ内のいずれの箇所でも保持するフルアソシアティブ型、または、所定範囲のメモリアドレスはキャッシュのうち特定セットに制限されるセットアソシアティブ型、または、キャッシュ内の1つの箇所に複数のアドレスが保持されるダイレクトマップ型であってもよい。尚、本明細書で説明する方法および装置は、任意のキャッシュ編成を用いて実現するとしてもよい。
図示しているように、キャッシュは、キャッシュメモリまたはデータアレイとも呼ばれるデータ部分205と、キャッシュメモリ205と対応付けられている制御ロジック230とを有する。キャッシュメモリ205は、素子210、215、220および225を含む。「キャッシュ素子」という用語は、本明細書で用いる場合、キャッシュの構造素子のうち任意の粒度のものを意味し、例えば、キャッシュライン、キャッシュエントリ、キャッシュロケーション、または、キャッシュセットを意味する。例えば、素子210は、セットアソシアティブ型キャッシュの場合に複数のラインから構成されるキャッシュセットを含むとしてよい。これとは対照的に、別の実施形態では、素子210は、同様にアレイ235に対応付けられている一のセットが含む複数のエントリのうちの一のエントリを含む。
制御ロジック230は、それぞれキャッシュ素子210、215、220、および225に対応付けられている/対応しているエントリ211、216、221、および226から構成されるアレイ235を含む。また、ハードウェアの読出属性、書込属性、および、バッファリング属性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226wおよび226bも同様に、キャッシュ素子210、215、220および225に対応付けられている。ハードウェア監視部およびそのさまざまな実施形態は同時係属出願(代理人整理番号:P29130、発明の名称:「トランザクショナルメモリ(TM)システムにおける読出監視属性および書込監視属性」、発明者:ガド・シーファー(Gad Sheaffer)他)でより詳細に説明されているが、本明細書でも簡単に属性の実施形態について説明する。
一実施形態によると、読出監視部および書込監視部は、データを保持する物理的構造の粒度に関わらず、データアイテム201等のデータの監視を画定する。上記の記載から、データアイテムは任意の粒度であるとしてよいことに留意されたい。実際のところ、プログラマは、開始アドレスおよびデータアイテムを構成する追加バイト数を指定することによって、データアイテムを定義するとしてよい。ここで、要素210は、キャッシュの1ラインを含むものと仮定する。この結果、データアイテムは、キャッシュ205のライン210等の1ライン、つまり、キャッシュ205の1キャッシュラインのサイズよりも小さいとしてもよいし、キャッシュ205の1キャッシュラインよりも大きいとしてもよい。同様に、キャッシュ205の1キャッシュラインの開始境界および終了境界とは位置合わせされていないとしてもよい。
図2に示す例では、データアイテム201の範囲は、1キャッシュラインにわたっている。上記の特許出願(代理人整理番号:P29130)では監視属性の動的割り当てについて説明しているが、本例では、キャッシュ素子毎に、属性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226wおよび226bが設けられている。このため、データアイテム201が読出監視される場合、読出監視211rが監視状態に更新されて、対応する素子211が読出監視される旨を示す。
一実施形態によると、属性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226wおよび226bは不可逆性データと見なされる。多くの場合、「不可逆性データ」とは、キャッシュ素子210のうち少なくとも一部の強制排除、および、より高次のレベルのキャッシュへの書き戻し等のイベントが発生すると失われるローカルデータを意味する。一実施形態によると、アレイ235は、エントリ211、216、221、および226がそれぞれ、キャッシュ素子210、215、220、および225に対応するコヒーレンシ状態値を保持するコヒーレンシエントリであるコヒーレンシ状態アレイを含む。一般的なキャッシュコヒーレンシ状態には、MESIがある。つまり、変更(Modified)、排他(Exclusive)、共有(Shared)、および、無効(Invalid)というキャッシュコヒーレンシ状態がある。しかし、図示した3つの属性ビットを追加すると基本的に、読出監視、書込監視、および、バッファリングに基づき新たにコヒーレンシ状態が作成されることになる。
このため、キャッシュ素子210が1つのキャッシュラインを含むと仮定すると、キャッシュライン210の強制排除に応じて、これに対応付けられた、属性211b、211r、および、211wを含むエントリ211を持つ状態情報が失われる。つまり、書き戻しは行なわれない。この結果、ローカル素子は属性が設定されていると考えているがその属性が失われている場合に、一貫性について問題が発生し得る。ここで、一貫性に関する問題は、別の属性に対するアクセスまたは外部アクセスの場合にも、適切な情報が失われているので、発生し得る。
このため、一実施形態によると、要素210、215、220、および225のそれぞれには、損失フィールド212、217、222、および、227が対応付けられている。図示しているように、損失フィールド212、217、222、および227は、要素210、215、220、および225内に含められる。しかし、損失フィールドは、強制排除が実行されても失われない箇所であればどこに保持するとしてもよい。例えば、損失フィールド212は、ライン210の強制排除が実行されても失われないデータキャッシュ構造、または、記録が容易でキャッシュライン210に対応付けられ得るデータキャッシュ構造に含められるとしてもよい。
制御ロジック230は通常、スヌープロジック、置換ロジック、状態ロジック、および、任意の公知のキャッシュ処理を実行するその他のキャッシュ関連ロジックを含む。一実施形態によると、制御ロジック230は、単独またはプロセッサ250内のほかのロジックと共同で、対応付けられている不可逆性データが失われると判断すると、損失フィールドを損失値に更新する。例えば、不可逆性データがコヒーレンシエントリ211内の属性211b、211r、および、211wを含むと仮定する。ここにおいて、制御ロジック230は、211b等の属性が設定されておりキャッシュ素子210が強制排除の対象として選択されると、損失フィールド212を更新する。一実施形態によると、失うデータがない場合、つまり、不可逆性データが存在しない場合、例えば、属性211b、211r、および、211wが設定されていない場合、強制排除が行なわれても損失フィールド212は設定されないことに留意されたい。言い換えると、失うデータがない場合には損失を指し示す理由がない。
一実施形態によると、上述したように、損失に対処するハンドラが呼び出されるとしてよい。しかし、別の実施形態によると、後続のアクセスが為されると一貫性が確保される。例えば、トランザクション的なロードが行なわれた結果、属性211rが設定されて読出監視を示し、その後にライン210が強制排除の対象として選択されると仮定する。この場合、制御ロジック230は損失フィールド212を損失値に設定する。ここにおいて、強制排除後にエントリ210のアドレスが変わるので、一種のアドレスハッシングが用いられるとしてよい。強制排除前は、ライン210のタグ等の不可逆性データは別個に格納されているか、または、フルアソシアティブ型でないキャッシュアレイにおける設定ビット等、強制排除されるラインと新しく割り当てられるラインとで同じ情報を損失フィールド212に用いる。従来は、損失フィールド212が無く、監視試験処理等のロードが続いて行なわれると、211bから不正確な監視情報を受け取ってしまっていた。これは、強制排除によって監視情報が失われるためである。これに代えて、一実施形態によると、読出監視試験処理が続いて行なわれると、フィールド212に保持されている損失値に応じて、エラーとなる。このため、次のアクセス処理において一貫性が確保される。
図3は、ハードウェア属性に対するアクセスについてのメモリオーダリングをサポートする構造を備えるプロセッサの実施形態を示す図である。図示の便宜上、プロセッサのうち幾つかの構造のみを選択して図示していることに留意されたい。一実施形態によると、プロセッサ305は、適切な依存関係処理が実行されるように、ハードウェア属性に対する格納処理と、ハードウェア属性に対する後続のロード処理との間に依存関係があるか否かを判断するロジックを備える。
一例を挙げると、生成側処理と消費側処理との間の依存関係の判断は、属性アクセスの種類に応じて為される。上述したように、属性の例としては、読出監視属性、書込監視属性、および、バッファリング属性がある。ここにおいて、対応するアクセスの種類には、読出監視アクセス、書込監視アクセス、および、バッファリングアクセスがある。従来は、蓄積転送はアドレスの依存関係にのみ基づき実現されていた。
しかし、一実施形態によると、生成側処理および消費側処理のアクセスの種類、ならびに、生成側処理および消費側処理のアドレスを組み合わせて用いて、依存関係を判断する。表1を参照しつつ上述したように、同じアドレスに対するアクセス同士でも、種類が異なれば、依存関係は無いとしてよい。この結果、一実施形態によると、書込監視設定アクセスと読出監視試験アクセスとの間には依存関係はない。
処理がどの種類のアクセスかに基づき依存関係を判断する一実施形態を図3に図示している。ここにおいて、メモリオーダバッファは、特に図示していないが、格納バッファ310およびロードバッファ350を含むものである。どちらのバッファも、対応する処理に対応付けられているエントリを保持するバッファである。図示されているように、エントリ325は、属性データ326を格納するための、属性アクセスの種類327を持ち、アドレス328を参照する格納処理と対応付けられる。格納バッファは2つの別個のアレイ、つまり、格納データバッファ320および格納アドレスバッファ315を持つものとして例示的に図示されているが、格納バッファは任意の公知の実施例を利用するとしてよい。
基本的に、格納バッファロジック310は、格納処理に対応付けられている属性アクセスの種類327を、格納バッファのエントリ325の格納アドレスバッファ315内に、保持する。ロードバッファ350も、ロード処理に関して、同様に動作する。図示されているように、エントリ355は、データエントリ356、および、アクセスの種類357が対応付けられているアドレス358を保持している。説明のために、エントリ325が、先行するインフライトの読出監視設定処理等の格納処理に対応付けられており、読出監視属性等のハードウェア属性を更新後の属性情報326で更新すると仮定する。この後、ロード処理が発生する。ここにおいて、バッファエントリ355は、この後続のロード処理に対応付けられている。
依存関係/ブロック実行ロジック360は、後続のロード処理のアクセスの種類357およびアドレス358と、先行する格納処理のアクセスの種類327およびアドレス328とを比較する。一実施形態によると、この比較は、検索によって実行する。つまり、アクセスの種類357をアドレス358に付加して、格納アドレスバッファ315を検索する。付加して生成された検索基準全てが格納バッファ310内のエントリでヒットすれば、依存関係が存在する。ここにおいて、アクセスの種類357をアドレス358に付加して得られた組み合わせがアクセスの種類337をアドレス338に付加して得られた組み合わせと一致すれば、格納処理とその後続のロード処理との間には依存関係があると判断される。
言い換えると、アクセスの種類、つまり、読出監視アクセス、書込監視アクセス、または、バッファアクセスが一致して、アドレスが一致するので、生成側の格納処理と後続の消費側のロード処理との間に依存関係が存在するのである。一実施形態によると、「後続」とはプログラム順序を意味し、格納バッファ310の検索は、対象となるロードバッファのエントリよりプログラム順序で前の格納バッファのエントリに対してのみ行なうことに留意されたい。
また、転送ロジック370は、依存関係/ブロック実行ロジック360と結合されており、単独または依存関係/ブロック実行ロジックと共同で依存関係処理を行なう。一実施形態によると、依存関係処理は、ブロック処理を含む。一例を挙げると、読出監視は転送されないとしてよい。このため、アクセスの種類が読出監視アクセスを含むと共に依存関係が検出されると、後続のロード処理は、エントリ325に対応付けられている格納処理がアドレス328の適切な読出監視を更新後の属性情報326に更新するまで、ブロックされる。一例として、ブロック実行ロジック360は、ロードバッファエントリ355内のブロックフィールドをブロック値に更新するロジックを含む。エントリ355のブロックフィールドがブロック値を保持している場合には、ブロック値がクリアされるまではロードを回さない。
これとは対照的に、別の依存関係処理には、監視データ転送処理が含まれる。ここにおいて、依存関係ロジック360によって依存関係があると判断されると、ロジック370は更新後のデータ326をロード処理に転送する。しかし、依存関係ロジック360が依存関係は無いと判断すると、依存関係処理は実行されない。しかし、監視データの転送が許可されている場合、一実施形態によると、スヌープロジックが外部アクセス要求に応じて格納バッファ310をスヌープする。ここにおいて、外部アクセス要求に応じて行なわれたスヌープがヒットした場合、例えば、エントリ325でヒットすると、転送ロジック370は更新後の属性データ326を転送しない。また、監視設定処理等の格納処理は、外部スヌープがヒットすると、対応する監視を更新することは禁止されるとしてよい。
図4は、属性アクセス処理間の依存関係を判断する別の実施形態を説明するための図である。尚、図3では、明示的な属性アクセスの種類、例えば、オプコードを検討することによって特定される種類が格納エントリと対応付けられている。アクセスの種類は基本的にアドレスの拡張部分である。例えば、2ビットの拡張部分が上述した3つの状態を表す。さらに、依存関係を確認する際には、アドレスの一部として2ビットの拡張部分の検索/比較も行なわれる。
これとは対照的に、一実施形態によると、アクセスの種類に基づく依存関係の確認は非明示的に行なわれる。図示されているように、プロセッサ405は、図3に示すプロセッサ305と同様の構造を持つ。しかし、格納バッファ320のエントリの1つの位置に、読出監視属性情報、書込監視属性情報、または、バッファリング属性情報をまとめて更新後の属性情報として保持することに代えて、位置431、432、および、433に属性情報が保持されている。このため、従来のアドレス依存関係確認処理は、属性情報の位置の確認をさらに行なうとしてよい。
説明のために、属性情報位置431は読出監視情報を保持する位置であり、属性情報位置432は書込監視情報を保持する位置であり、属性情報位置433はバッファリング属性情報を保持する位置であると仮定する。ロードが発生すると、従来のアドレス依存関係確認処理が実行される。つまり、アドレス458を用いて格納アドレスバッファ415内を検索する。エントリ425でヒットすると、つまり、アドレス458およびアドレス428が一致すると、格納バッファ420内で保持されているデータの位置に基づきアクセスの種類を比較する。一実施形態によると、アクセスの種類の比較は、アドレスが一致するか否かの確認と並行して実行されるとしてよい。ここでさらに、バッファリング属性設定処理がエントリ425に対応付けられていると仮定される。この場合、アドレス428に対応付けられているバッファリング属性の更新後の属性情報は位置433、例えば、最下位から3つ目のビットに保持されている。
後続のロード処理、例えば、書込監視試験処理の際、依存関係ロジック460がアドレスを比較する。書込監視試験処理は種類が書込監視アクセスであり、バッファエントリ425はバッファリングアクセスを示す位置433に更新情報を保持しているので、依存関係の一致はない。しかし、後続のロード処理がバッファリング属性試験処理でアドレスが一致する場合、格納データバッファエントリ425内の情報の位置に基づいて決まるアクセスの種類が一致し、依存関係が存在すると判断される。依存関係が存在する、または、存在しないと判断されると、転送/ブロック実行ロジック470は、図3を参照して上述したのと同様の処理を実行する。
図5は、ハードウェア(HW)属性の読出、ロード、または試験の際に適切なメモリオーダリングを実現する方法の実施形態を説明するためのフローチャートである。図5のフローチャートでは、各ステップは略シリアルに図示されていることに留意されたい。しかし、同図を参照しつつ説明する方法は、順次実行することに限定されるものではなく、任意の順序で行なわれ、少なくとも一部のステップが並行に行なわれるとしてよい。
ステップ505では、ハードウェア属性を読み出すロード処理が発生する。ロード処理の例には、ほかの処理/マイクロ処理を実行するより大規模な命令の一部である監視試験命令、監視試験処理、または、監視試験マイクロ処理がある。一例を挙げると、ロード処理は、属性の種類に対応付けられており、ハードウェア属性に対応付けられているアドレスを参照する。上述したように、ハードウェア属性の例には、読出監視属性、書込監視属性、および、バッファリング属性がある。しかし、属性は、データまたはアドレスに対応付けられている状態を格納するとしてもよい。
ステップ506では、ハードウェア属性に対応付けられている損失フィールド、つまり、ハードウェア属性に対応付けられているロード処理が参照するアドレスが損失値に設定されているか否かを判断する。属性情報等の不可逆性データが失われたことを意味する損失値を損失フィールドが保持している場合、ステップ507において、適切なデータ一貫性を確保するべくこのロード処理についてエラーが開始される。
しかし、損失フィールドが損失値を保持していない場合、ステップ510に進む。ステップ510において、ロード処理と先行するインフライトの格納処理との間に依存関係があるか否かを判断する。格納処理の例としては、ハードウェア属性設定命令、ハードウェア属性設定処理、または、ハードウェア属性マイクロ設定処理がある。ステップ510はステップ511およびステップ512を含むことに留意されたい。本例では、依存関係の確認は両ステップで行なうものとする。
ステップ511では、ロード処理と先行するインフライトの格納処理との間でアドレスが一致するか否かを判断する。ステップ512では、ロード処理と先行するインフライトの格納処理との間でアクセスの種類が一致するか否かを判断する。一実施形態によると、これらのステップは、図3で説明したように、例えば、アクセスの種類がアドレスの拡張部分として保持される場合には、同時に実行される。この場合、属性の種類、つまり、アドレス拡張ビットをアドレスに付加したものを提示して、格納アドレスバッファを検索する。アドレスにアクセスの種類を付加した組み合わせがヒットすると、ロード処理と先行する格納処理はアドレスおよびアクセスの種類の両方が一致するので、依存関係が存在すると判断される。
図4で説明したように、格納データの位置に基づいてアクセスの種類が決まる等、設計ではアクセスの種類が非明示的である別の実施形態によると、ステップ511および512は別々に行なわれるとしてよい。この場合、ステップ511では、ロードが参照するアドレスに対応付けられている格納バッファエントリを格納バッファ内で検索する。ヒットすると、つまり、アドレスが一致すると、格納バッファのうちヒットした格納バッファエントリにおいて保持されている格納データの位置を特定する。例えば、最下位から3つ目のビット等と表される格納データの位置に基づき、格納の属性の種類、例えば、バッファリング、読出監視、または、書込監視かを決定する。決定された格納アクセスの種類がロードの種類と同じであれば、依存関係があると判断される。
いずれの場合も、依存関係が存在しない場合、ステップ515において、属性に関連した依存関係処理を実行することなく、通常通りロードを実行する。しかし、依存関係が検出されれば、ステップ520において、適切な依存関係処理を実行する。一実施形態によると、依存関係処理は、先行するインフライトの格納処理と対応付けられている格納データを転送することを含む。ここにおいて、先行する格納処理が、更新値で書込監視を更新する書込監視設定処理を含む場合、依存関係を持つ、書込監視値を読み出すための監視試験処理に更新値が転送される。
別の実施形態によると、依存関係処理は、先行するインフライトの格納処理によってハードウェア属性が更新されるまで、ロード処理をブロックすることを含む。説明のために、先行する格納処理が読出監視を更新値に更新する読出監視設定処理を含み、ロード処理が読出監視値をロードする読出監視試験処理を含むと仮定する。この場合、読出監視値をロードするロード処理は、読出監視設定処理が実際に読出監視を更新するまで、ブロックされる。いずれの場合も、つまり、転送またはブロックのいずれを行なう場合でも、本発明に係るメモリモデルによってデータ一貫性が維持される。
「モジュール」という用語は、本明細書で用いる場合、任意のハードウェア、ソフトウェア、ファームウェア、または、これらの組み合わせを意味する。別個のものとして図示されているモジュールの境界は、変更するのが一般的で、重なる可能性もある。例えば、第1のモジュールと第2のモジュールは、一部のハードウェア、ソフトウェア、または、ファームウェアを独立したままとしつつも、ハードウェア、ソフトウェア、ファームウェア、または、これらの組み合わせを共有するとしてもよい。一実施形態によると、「ロジック」という用語を用いる場合、トランジスタ、レジスタ等のハードウェア、または、プログラマブルロジックデバイス等のほかのハードウェアを含む。しかし、別の実施形態によると、ロジックはさらに、ハードウェアに組み込まれたソフトウェアまたはコード、例えば、ファームウェアまたはマイクロコードを含む。
「値」という用語は、本明細書で用いる場合、数、状態、論理状態、または、バイナリ論理状態を表現する任意の公知の方法を含む。「論理レベル」、「ロジック値」、または、「論理値」といった用語を用いる場合も、単にバイナリ論理状態を表す1および0の配列を意味することが多い。例えば、「1」はHigh論理レベルを意味し、「0」はLow論理レベルを意味する。一実施形態によると、トランジスタまたはフラッシュセル等の格納セルは、1または複数の論理値を保持することが可能であるとしてよい。しかし、コンピュータシステムは、他の方法を用いて値を表現してきた。例えば、10進数の値「10」は、2進数では値「1010」で、16進数では文字「A」で表され得る。このため、「値」とは、コンピュータシステムで保持可能な情報の表現方法であればどのようなものも含む。
さらに、「状態」という用語は、値で表現されるとしてもよいし、または、値の一部で表現されるとしてもよい。一例を挙げると、論理値「1」等の第1の値がデフォルト状態または初期状態を表し、論理値「0」等の第2の値がデフォルトでない状態を表すとしてよい。また、「再設定」および「設定」という用語はそれぞれ、一実施形態によると、デフォルト値またはデフォルト状態、および、更新値または更新状態を意味する。例えば、デフォルト値は、High論理値、つまり、再設定を含み、更新値は、Low論理値、つまり、設定を含むとしてよい。複数の値を任意に組み合わせて任意の数の状態を表し得ることに留意されたい。
上述した方法、ハードウェア、ソフトウェア、ファームウェア、または、コードの実施形態は、処理素子で実行可能な機械アクセス可能媒体または機械読出可能媒体に格納されている命令またはコードによって実現されるとしてもよい。機械アクセス可能媒体/機械読出可能媒体は、コンピュータまたは電子システム等の機械によって読出可能な形式で情報を提供(つまり、格納および/または送信)する機構であればどのような機構をも含む。例えば、機械アクセス可能媒体は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックRAM(DRAM)等のRAM、ROM、磁気格納媒体または光学格納媒体、フラッシュメモリデバイス、電気格納デバイス、光学格納デバイス、音響格納デバイス、または、その他の形式の伝播信号(例えば、搬送波、赤外線信号、デジタル信号)用の格納デバイス等を含む。機械は、例えば、搬送波等の伝播信号で送信されるべき情報を保持可能な媒体から、伝播信号を受信することによって、格納デバイスにアクセスするとしてよい。
本明細書全体にわたって「一実施形態」または「実施形態」という表現が見られるが、これは当該実施形態に関連付けて説明した特定の特徴、構造、または、特性が本発明の少なくとも1つの実施形態に含まれることを意味する。このため、「一実施形態において」または「実施形態において」という表現が本明細書で繰り返し見られるが、必ずしも全てが同じ実施形態を意味しているわけではない。また、特定の特徴、構造、または、特性は、1以上の実施形態において、適宜組み合わせるとしてもよい。
上記の説明では、具体的な実施形態例を参照しつつ詳細に説明している。しかし、特許請求の範囲に記載する本発明のより大きな意図および範囲から逸脱することなく、上記の具体的な実施形態例をさまざまな点で変形および変更し得ることは明らかである。したがって、本明細書および添付図面は、本発明を限定するものではなく例示するものと解釈されたい。また、上の説明では「実施形態」等の例示的な意味を持つ用語を用いているが、同じ実施形態または同じ例を必ずしも意味するものではなく、同じ実施形態の場合もあるが、別の識別可能な実施形態を意味するとしてもよい。

Claims (33)

  1. 不可逆性データに対応付けられる予定のキャッシュ素子を有するデータキャッシュメモリと、
    前記キャッシュ素子に対応付けられている損失フィールドと、
    前記データキャッシュメモリおよび前記損失フィールドに結合されており、前記不可逆性データが失われる予定であると判断される場合に、損失値を保持するように前記損失フィールドを更新する制御ロジックと
    を備える装置。
  2. 前記キャッシュ素子は、キャッシュセットを含む請求項1に記載の装置。
  3. 前記キャッシュ素子に対応付けられている前記損失フィールドは、前記キャッシュセット用の前記データキャッシュメモリ内の損失ビットを有し、
    前記損失値を保持するように前記損失フィールドを前記制御ロジックが更新することは、第1の論理値の前記損失ビットを前記制御ロジックが更新することを含む請求項2に記載の装置。
  4. 前記キャッシュ素子は、キャッシュセットのキャッシュエントリを含む請求項1に記載の装置。
  5. 前記キャッシュ素子に対応付けられている前記損失フィールドは、前記キャッシュセット用の前記データキャッシュメモリ内の複数のビットを有し、
    前記複数のビットのうち1つのビットが前記キャッシュエントリに対応付けられる予定であり、
    前記損失値を保持するように前記損失フィールドを前記制御ロジックが更新することは、前記複数のビットのうち前記1つのビットを前記制御ロジックが第1の論理値に更新することを含む請求項4に記載の装置。
  6. 前記不可逆性データに対応付けられる予定の前記キャッシュ素子は、前記キャッシュ素子に対応付けられている不可逆性のハードウェア属性を含む請求項1に記載の装置。
  7. 前記不可逆性のハードウェア属性は、バッファリングされているハードウェア属性、前記データキャッシュメモリに対応付けられている状態アレイに保持されているハードウェア属性、および、前記データキャッシュメモリにおいて不可逆性のメタデータとして保持されているハードウェア属性から成る群から選択されるハードウェア属性を含む請求項6に記載の装置。
  8. 前記不可逆性データが失われる予定であると判断される場合に、前記損失値を保持するように前記制御ロジックが前記損失フィールドを更新することは、前記制御ロジックが前記データ要素の少なくとも一部を強制排除の対象として選択する結果、前記キャッシュ素子に対応付けられている前記不可逆性データが失われることを含む請求項1に記載の装置。
  9. 前記制御ロジックはさらに、前記損失フィールドが前記損失値を保持している場合に、前記キャッシュ素子から読み出すための後続のロード処理のエラーを開始する請求項1に記載の装置。
  10. 属性に対応付けられているキャッシュ素子を有するキャッシュメモリと、
    前記キャッシュメモリに結合されており、前記属性を更新する格納処理に対応付けられている格納バッファエントリを保持する格納バッファと、
    前記格納バッファに対応付けられており、前記格納処理に応じて前記属性が更新されるまで、前記属性から読み出すための後続のロード処理をブロックする制御ロジックと
    を備える装置。
  11. 前記キャッシュ素子は、前記キャッシュメモリのセット、前記キャッシュメモリのライン、および、前記キャッシュメモリのエントリから成る群から選択される請求項10に記載の装置。
  12. 前記属性に対応付けられている前記キャッシュ素子は、前記属性を保持しており前記キャッシュ素子に対応するコヒーレンシ状態エントリを有し、
    前記属性は、読出監視、書込監視、および、バッファリング監視から成る群から選択されるハードウェア監視を含む請求項11に記載の装置。
  13. 前記属性は、読出監視属性を含み、
    前記格納処理は、前記読出監視属性を更新するための読出監視属性設定命令を含む請求項10に記載の装置。
  14. 前記後続のロード処理は、前記読出監視属性を読み出す読出監視試験命令を含み、
    前記読出監視試験命令は、プログラム順序で、前記読出監視属性設定命令の後に位置する請求項13に記載の装置。
  15. 一のキャッシュメモリの一のキャッシュ素子に対応付けられている複数のハードウェア属性と、
    前記複数のハードウェア属性のうち少なくとも1つに対する格納処理と、前記複数のハードウェア属性のうち少なくとも1つに対する後続のロード処理との間に依存関係が存在するか否かを、少なくとも前記格納処理の第1の属性アクセスの種類および前記後続のロード処理の第2の属性アクセスの種類に基づいて判断するロジックと、
    前記ロジックに結合されており、前記格納処理と前記後続のロード処理との間に前記依存関係が存在すると判断される場合に、前記格納処理の更新済み属性データを前記後続のロード処理に転送する転送ロジックと
    を備える装置。
  16. 前記格納処理と、前記後続のロード処理との間に依存関係が存在するか否かを、少なくとも前記格納処理の前記第1の属性アクセスの種類および前記後続のロード処理の前記第2の属性アクセスの種類に基づいて判断する前記ロジックは、前記格納処理に対応付けられている前記第1の属性アクセスの種類を保持する格納バッファロジックと、前記格納バッファロジックに結合されており、少なくとも前記第1の属性アクセスの種類および前記第2の属性アクセスの種類を比較する依存関係ロジックとを有する請求項15に記載の装置。
  17. 前記第1の属性アクセスの種類および前記第2の属性アクセスの種類はそれぞれ別個に、読出監視アクセス、書込監視アクセス、および、バッファリングアクセスから選択される請求項16に記載の装置。
  18. 前記格納処理に対応付けられている前記第1の属性アクセスの種類を保持する前記格納バッファロジックは、前記第1の属性アクセスの種類が付加されている前記格納処理に対応付けられている格納アドレスを保持する格納アドレスバッファロジックを含み、
    前記格納バッファロジックおよび前記転送ロジックに結合されている前記依存関係ロジックが少なくとも前記第1の属性アクセスの種類および前記第2の属性アクセスの種類を比較することは、前記依存関係ロジックが前記第1の属性アクセスの種類が付加されている前記格納アドレスと、前記第2の属性アクセスの種類が付加されている前記後続のロード処理に対応付けられているロードアドレスとを比較することを含む請求項16に記載の装置。
  19. 外部アクセス要求に応じて前記格納バッファロジックをスヌープするスヌープロジックをさらに備え、
    前記転送ロジックは、前記外部アクセス要求が前記格納アドレスを参照している場合に、前記更新済み属性データを転送しない請求項18に記載の装置。
  20. 前記依存関係ロジックはさらに、前記第1の属性アクセスの種類が付加されている前記格納アドレスが前記第2の属性アクセスの種類が付加されている前記ロードアドレスに一致する場合に、前記格納処理と前記後続のロード処理との間に前記依存関係が存在すると判断する請求項18に記載の装置。
  21. 前記依存関係ロジックはさらに、前記第1の属性アクセスの種類が付加されている前記格納アドレスが、前記第2の属性アクセスの種類が付加されている前記ロードアドレスに一致しない場合に、前記格納処理と前記後続のロード処理との間に前記依存関係が存在しないと判断し、
    前記転送ロジックは、前記依存関係ロジックが前記格納処理と前記後続のロード処理との間に前記依存関係が存在しないと判断する場合に、前記更新済みの属性データを転送しない請求項20に記載の装置。
  22. 前記格納処理と、前記後続のロード処理との間に前記依存関係が存在するか否かを、少なくとも前記格納処理の前記第1の属性アクセスの種類および前記後続のロード処理の前記第2の属性アクセスの種類に基づいて判断する前記ロジックは、前記格納処理に対応付けられている格納データバッファエントリにおける一の位置に前記更新済みの属性データを保持する格納データバッファロジックを有し、
    前記格納データバッファエントリにおける前記一の位置は、前記第1の属性アクセスの種類を表している請求項15に記載の装置。
  23. 前記格納処理と、前記後続のロード処理との間に前記依存関係が存在するか否かを、少なくとも前記格納処理の前記第1の属性アクセスの種類および前記後続のロード処理の前記第2の属性アクセスの種類に基づいて判断する前記ロジックはさらに、前記格納データバッファおよび前記転送ロジックに結合されており、前記格納処理に対応付けられている格納アドレスが前記後続のロード処理に対応付けられているロードアドレスに一致し、且つ、前記格納データバッファエントリ内に保持されている前記更新済みのデータの前記一の位置に基づいて決まる前記第1の属性アクセスの種類が前記第2の属性アクセスの種類と同じである場合に、前記格納処理と前記後続のロード処理との間に前記依存関係が存在すると判断する依存関係ロジックを有する請求項22に記載の装置。
  24. 前記依存関係ロジックは、前記格納処理に対応付けられている前記格納アドレスが前記後続のロード処理に対応付けられている前記ロードアドレスに一致しない場合、または、前記格納データバッファエントリに保持されている前記更新済み属性データの前記一の位置に基づいて決まる前記第1の属性アクセスの種類が前記第2の属性アクセスの種類と同じである場合に、前記格納処理と前記後続のロード処理との間に前記依存関係が存在しないと判断し、
    前記転送ロジックは、前記格納処理と前記後続のロード処理との間に前記依存関係が存在しないと前記依存関係ロジックが判断する場合に、前記更新済み属性データを転送しない請求項23に記載の装置。
  25. ハードウェア属性を読み出すための処理であり、属性の種類と対応付けられており、前記属性の種類のハードウェア属性に対応付けられているアドレスを参照するロード処理が発生する段階と、
    先行するインフライトの格納処理が、前記属性の種類と対応付けられているか否か、および、前記ハードウェア属性に対応付けられている前記アドレスを参照しているか否かを判断する段階と、
    前記先行するインフライトの格納処理が、前記属性の種類と対応付けられており、且つ、前記ハードウェア属性に対応付けられている前記アドレスを参照していると判断される場合に、依存関係処理を実行する段階と
    を備える方法。
  26. 前記ロード処理は、ハードウェア属性試験処理を含み、
    前記先行するインフライトの格納処理は、ハードウェア属性設定処理を含む請求項25に記載の方法。
  27. 前記属性の種類は、読出監視属性、書込監視属性、および、バッファリング属性から成る群から選択される請求項25に記載の方法。
  28. 前記先行するインフライトの格納処理が、前記属性の種類と対応付けられているか否か、および、前記ハードウェア属性に対応付けられている前記アドレスを参照しているか否かを判断する段階は、前記属性の種類が付加されている前記アドレスについて格納アドレスバッファを検索し、前記属性の種類が付加されている前記アドレスを保持している前記格納アドレスバッファの格納アドレスバッファエントリが発見される場合に、前記先行するインフライトの格納処理が前記属性の種類に対応付けられており、且つ、前記ハードウェア属性に対応付けられている前記アドレスを参照していると判断する段階を有する請求項25に記載の方法。
  29. 前記先行するインフライトの格納処理が、前記属性の種類と対応付けられているか否か、および、前記ハードウェア属性に対応付けられている前記アドレスを参照しているか否かを判断する段階は、
    前記アドレスに対応付けられている格納バッファエントリを発見するべく格納バッファを検索する段階と、
    前記アドレスに対応付けられている前記格納バッファエントリが発見される場合に、前記格納バッファの格納バッファエントリに保持されている前記ハードウェア属性に対応付けられている格納データの位置を特定する段階と、
    前記格納バッファエントリに保持されている前記格納データの前記位置に基づき格納の属性の種類を特定する段階と、
    前記格納の属性の種類が前記ロード処理に対応付けられている前記属性の種類と同じであると判断される場合に、前記先行するインフライトの格納処理が、前記属性の種類と対応付けられており、且つ、前記ハードウェア属性に対応付けられている前記アドレスを参照していると判断する段階と
    を有する請求項25に記載の方法。
  30. 前記依存関係処理を実行する段階は、前記先行するインフライトの格納処理に対応付けられている格納データを転送する段階を有する請求項25に記載の方法。
  31. 前記依存関係処理を実行する段階は、前記先行するインフライトの格納処理によって前記ハードウェア属性が更新されるまで、前記ロード処理をブロックする段階を有する請求項25に記載の方法。
  32. 前記ハードウェア属性に対応付けられているキャッシュ位置の強制排除が発生した結果、前記ハードウェア属性が失われる場合に、前記ハードウェア属性に対応付けられている損失フィールドを損失値へと更新する段階をさらに備える請求項25に記載の方法。
  33. 前記ロード処理は、前記ハードウェア属性を読み出す前記ロード処理が発生し、前記損失フィールドが前記損失値を保持している場合に、エラーとなる請求項32に記載の方法。
JP2011543575A 2008-12-30 2009-12-15 トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル Expired - Fee Related JP5416223B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/346,539 2008-12-30
US12/346,539 US8627014B2 (en) 2008-12-30 2008-12-30 Memory model for hardware attributes within a transactional memory system
PCT/US2009/068114 WO2010077884A2 (en) 2008-12-30 2009-12-15 Memory model for hardware attributes within a transactional memory system

Publications (2)

Publication Number Publication Date
JP2012514254A true JP2012514254A (ja) 2012-06-21
JP5416223B2 JP5416223B2 (ja) 2014-02-12

Family

ID=42286303

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011543575A Expired - Fee Related JP5416223B2 (ja) 2008-12-30 2009-12-15 トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル

Country Status (6)

Country Link
US (2) US8627014B2 (ja)
JP (1) JP5416223B2 (ja)
CN (1) CN101814017B (ja)
BR (1) BRPI0920229A2 (ja)
TW (1) TWI461912B (ja)
WO (1) WO2010077884A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627014B2 (en) 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8533440B2 (en) 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US20120059971A1 (en) * 2010-09-07 2012-03-08 David Kaplan Method and apparatus for handling critical blocking of store-to-load forwarding
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US20140013083A1 (en) * 2011-12-30 2014-01-09 Ashish Jha Cache coprocessing unit
EP2831721B1 (en) 2012-03-30 2020-08-26 Intel Corporation Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
TWI587218B (zh) 2016-09-10 2017-06-11 財團法人工業技術研究院 記憶體事務層級模型模擬方法及系統
US10620971B2 (en) 2017-02-22 2020-04-14 International Business Machines Corporation Accelerating reference count processing in object deletion
CN110647663B (zh) * 2019-09-09 2021-12-17 中国人民解放军国防科技大学 面向最短路径问题的图结点属性存储器实现方法和装置
CN111047187B (zh) * 2019-12-12 2023-10-17 浙江大搜车软件技术有限公司 信息匹配处理方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005710A (ja) * 2003-06-23 2004-01-08 Hitachi Ltd 情報処置装置
WO2007015925A1 (en) * 2005-08-01 2007-02-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
WO2007115003A1 (en) * 2006-03-30 2007-10-11 Intel Corporation Transactional memory in out-of-order processors
WO2008005687A2 (en) * 2006-06-30 2008-01-10 Intel Corporation Global overflow method for virtualized transactional memory
WO2008155827A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュ制御装置及び制御方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6216200B1 (en) * 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US6192452B1 (en) * 1999-02-26 2001-02-20 International Business Machines Corporation Method and system for avoiding data loss due to cancelled transactions within a non-uniform memory access system
US6549996B1 (en) 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
US6490668B2 (en) 2000-12-15 2002-12-03 Hewlett-Packard Company System and method for dynamically moving checksums to different memory locations
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7565687B2 (en) * 2002-02-08 2009-07-21 International Business Machines Corporation Transmission control system, server, terminal station, transmission control method, program and storage medium
FR2859307A1 (fr) 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US20050091459A1 (en) 2003-10-23 2005-04-28 Nhon Quach Flexible mechanism for enforcing coherency among caching structures
US7237131B2 (en) * 2003-12-30 2007-06-26 Intel Corporation Transaction-based power management in a computer system
US7177987B2 (en) 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US7395374B2 (en) 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
ATE385646T1 (de) * 2004-04-14 2008-02-15 Telecom Italia Spa Eine methode und ein system zur bedienung der zustellung eines inhalts in computernetzen
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4431022B2 (ja) 2004-10-18 2010-03-10 株式会社日立製作所 コンピュータシステム及びその制御方法
US7490199B2 (en) * 2005-05-09 2009-02-10 Noam Camiel System and method for safe removal of a removable device from a digital appliance
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
TWI317065B (en) * 2006-08-11 2009-11-11 Shiwu Lo Method of accessing cache memory for parallel processing processors
US7783805B2 (en) * 2006-11-29 2010-08-24 Cisco Technology, Inc. Interlocking input/outputs on a virtual logic unit number
US7937535B2 (en) 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8751859B2 (en) 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US8195832B2 (en) 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
US8078807B2 (en) * 2007-12-27 2011-12-13 Intel Corporation Accelerating software lookups by using buffered or ephemeral stores
US8627014B2 (en) 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005710A (ja) * 2003-06-23 2004-01-08 Hitachi Ltd 情報処置装置
WO2007015925A1 (en) * 2005-08-01 2007-02-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
WO2007115003A1 (en) * 2006-03-30 2007-10-11 Intel Corporation Transactional memory in out-of-order processors
WO2008005687A2 (en) * 2006-06-30 2008-01-10 Intel Corporation Global overflow method for virtualized transactional memory
JP2009537053A (ja) * 2006-06-30 2009-10-22 インテル・コーポレーション 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法
WO2008155827A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited キャッシュ制御装置及び制御方法

Also Published As

Publication number Publication date
CN101814017A (zh) 2010-08-25
WO2010077884A2 (en) 2010-07-08
US20120159079A1 (en) 2012-06-21
US20100169580A1 (en) 2010-07-01
US8769212B2 (en) 2014-07-01
US8627014B2 (en) 2014-01-07
BRPI0920229A2 (pt) 2015-12-29
CN101814017B (zh) 2015-02-11
JP5416223B2 (ja) 2014-02-12
TWI461912B (zh) 2014-11-21
WO2010077884A3 (en) 2010-09-30
TW201037517A (en) 2010-10-16

Similar Documents

Publication Publication Date Title
JP5416223B2 (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
JP5944417B2 (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
US8612950B2 (en) Dynamic optimization for removal of strong atomicity barriers
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US8195898B2 (en) Hybrid transactions for low-overhead speculative parallelization
US20100122073A1 (en) Handling exceptions in software transactional memory systems
JP6023765B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130531

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130702

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130725

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130801

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130826

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131016

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131021

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131114

R150 Certificate of patent or registration of utility model

Ref document number: 5416223

Country of ref document: JP

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

LAPS Cancellation because of no payment of annual fees