JP2021502629A - 複数のプロセッサによる共有キャッシュ・ラインの同時変更 - Google Patents

複数のプロセッサによる共有キャッシュ・ラインの同時変更 Download PDF

Info

Publication number
JP2021502629A
JP2021502629A JP2020523774A JP2020523774A JP2021502629A JP 2021502629 A JP2021502629 A JP 2021502629A JP 2020523774 A JP2020523774 A JP 2020523774A JP 2020523774 A JP2020523774 A JP 2020523774A JP 2021502629 A JP2021502629 A JP 2021502629A
Authority
JP
Japan
Prior art keywords
cache line
shared cache
shared
computer
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
JP2020523774A
Other languages
English (en)
Other versions
JP7083446B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021502629A publication Critical patent/JP2021502629A/ja
Application granted granted Critical
Publication of JP7083446B2 publication Critical patent/JP7083446B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

【課題】コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法、コンピュータ・システム、コンピュータ・プログラム製品、およびコンピュータ・プログラムを提供する。【解決手段】共有キャッシュ・ラインが、コンピューティング環境の複数のプロセッサによって同時に変更される。同時変更は、データのロックを獲得することも、データの排他的所有権を得ることもなしに、複数のプロセッサが、共有キャッシュ・ラインを同時に更新することを許す1つまたは複数のアーキテクチャ化された命令(非コヒーレント記憶に起因するフェッチ命令)を受信することに少なくとも基づいて実行される。【選択図】図4

Description

1つまたは複数の態様が、一般に、コンピューティング環境内の処理に関し、詳細には、そのような処理を容易化することに関する。
コンピューティング環境内の処理は、データを読み取るべく、または記憶すべく、メイン・メモリおよびメモリ・キャッシュを含むメモリにアクセスすることを含む。そのようなデータを更新することは、更新されるべきデータにアクセスを有する複数のプロセッサを含むコンピューティング環境において複雑である。そのようなマルチプロセッサ・コンピューティング環境において、コンピュータ・ハードウェアが、フィールドの現在の値をフェッチした後、フィールドを新たな値に更新しようと試みる、コンペア・アンド・スワップ(CS)命令などのアトミック更新命令を有することが普通である。その他のプロセッサが同時に同一の機能を実行するのを阻止しながら、コンペアは、古い値を現在の値と比較する。古い値が現在の値と等しい場合、現在の値は、新たな値で置き換えられる。古い値が現在の値と等しくはない場合、新たな値は記憶されず、値が更新されなかったことが条件コードを介してユーザに知らされ、処理は、現在の値を操作すべくループバックする。
コンペア・アンド・スワップがフィールドを比較し、更新するために、コンペア・アンド・スワップは、フィールドをローカル・プロセッサのプライベート・キャッシュに運び入れ、その他のプロセッサのプライベート・キャッシュからそのフィールドを無効にする。このことは、パフォーマンスを低下させるアドレス遅延を生じさせる。フィールドが頻繁に更新されるほど、低下が大きくなる。
このオーバヘッドを最小限に抑える1つのアプローチは、プロセッサの間の競合を取り除く、カウンタなどの一意の個別のプロセッサ関連のフィールドを更新することである。現在の値は、リーダ・プログラムまたは監視プログラムによって周期的に要求され、その要求に基づいて、値が集約され、結果がもたらされる。このことが、オーバヘッドを大幅に低減する。しかし、このことは、複雑さを増加させ、カウンタが既に存在しており、プロセッサ関連の値を集約するサービスを提供することが、不可能ではなくても、現実的ではない事例が存在する。
したがって、前述した問題に対処する必要性が当技術分野に存在する。
「z/Architecture Principles of Operation」、IBM Publication No.SA22−7832−10、2015年3月 「Power ISA(TM) Version 2.07B」、インターナショナル・ビジネス・マシーンズ・コーポレーション、2015年4月9日
コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法、コンピュータ・システム、コンピュータ・プログラム製品、およびコンピュータ・プログラムを提供する。
第1の態様から見て、本発明は、コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法を提供し、方法が、コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、複数の記憶要求が、同時記憶タイプのものである、獲得すること、および複数の記憶要求に基づいて、共有キャッシュ・ラインにデータを同時に記憶することを含む。
さらなる態様から見て、本発明は、コンピューティング環境内の処理を容易化するためのコンピュータ・システムを提供し、コンピュータ・システムが、メモリと、メモリと通信状態にある少なくとも1つのプロセッサとを備え、コンピュータ・システムが、方法を実行するように構成され、方法が、コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、複数の記憶要求が、同時記憶タイプのものである、獲得すること、および複数の記憶要求に基づいて、共有キャッシュ・ラインにデータを同時に記憶することを含む。
さらなる態様から見て、本発明は、コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、処理回路によって可読であり、本発明のステップを実行するための方法を実行するために処理回路によって実行されるように命令を記憶するコンピュータ可読記憶媒体を備える。
さらなる態様から見て、本発明は、コンピュータ可読媒体上に記憶され、デジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムであって、プログラムがコンピュータ上で実行されたとき、本発明のステップを実行するためのソフトウェア・コード部分を備えるコンピュータ・プログラムを提供する。
コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品の提供を通じて、従来技術の欠点が克服され、さらなる利点がもたらされる。コンピュータ・プログラム製品は、処理回路によって可読であり、方法を実行するための命令を記憶するコンピュータ可読記憶媒体を含む。方法は、例えば、コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することを含む。複数の記憶要求は、同時記憶タイプのものである。複数の記憶要求に基づいて、データが、共有キャッシュ・ラインに同時に記憶される。共有キャッシュ・ラインの同時の更新を許すことによって、処理が容易化され、複雑さが低減され、パフォーマンスが向上させられる。
一実施形態において、共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態が、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定される。
例として、データは、共有キャッシュ・ラインにおいて保持されるグローバル共有−変更可能構造に対する更新を含む。グローバル共有−変更可能構造は、複数のプロセッサのうちの複数のプロセッサによって使用される。
さらなる態様において、共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求が、獲得される。フェッチ要求は、同時記憶タイプとは異なる。フェッチ要求に基づいて、共有キャッシュ・ラインに対してシリアル化が実行される。シリアル化を完了することに基づいて、データは、共有キャッシュ・ラインから読み取られる。複数のプロセッサによる同時の更新を許すべく定義された要求ではなく、フェッチ要求に基づいてシリアル化を実行することによって、遅延が低減され、パフォーマンスが向上させられる。
シリアル化を実行することは、例えば、共有キャッシュ・ラインに対する未処理の記憶を停止すること、および共有キャッシュ・ラインのデータを同期することを含む。
さらに、一実施例において、フェッチ要求に基づいて、共有キャッシュ・ラインの所有権状態が、共有−変更可能から別の状態に変更される。その別の状態は、例えば、フェッチ要求に基づいて排他的である、または読取り専用である。
一実施例において、複数の記憶要求を獲得することは、複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することを含む。非コヒーレント記憶に起因するフェッチ要求は、共有キャッシュ・ラインに対する阻止のない(non−blocking)変更を許すようにアーキテクチャ上、定義される。
さらに、一実施例において、記憶することは、複数のプロセッサの1つまたは複数のプライベート・キャッシュにデータを記憶することなしに、共有キャッシュ・ラインに直接にデータを記憶することを含む。
また、1つまたは複数の態様と関係するコンピュータによって実施される方法、およびシステムについても、本明細書において説明され、請求される。さらに、1つまたは複数の態様と関係するサービスについても、本明細書で説明され、請求されることが可能である。
さらなる特徴および利点が、本明細書において説明される技術を通じて実現される。他の実施形態および態様が、本明細書において詳細に説明され、請求される態様の一部分と見なされる。
1つまたは複数の態様が、本明細書の結びにおける特許請求の範囲において実施例として特に指摘され、明確に請求される。以上、ならびに1つまたは複数の態様の目的、特徴、および利点が、添付の図面と併せて解釈される後段の詳細な説明から明白となる。
本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境の一実施例を示す図である。 本発明の1つまたは複数の態様による、図1のコンピュータ・システムによって使用されるメモリ階層のさらなる詳細を示す図である。 排他的フェッチ操作に関連する処理の一実施例を示す図である。 本発明の1つまたは複数の態様による、非コヒーレント操作に起因するフェッチに関連する処理の一実施例を示す図である。 本発明の1つまたは複数の態様による、同時でない操作に起因するフェッチに関連する処理の別の実施例を示す図である。 本発明の1つまたは複数の態様による、非コヒーレントに起因するフェッチ要求を処理することに関連するさらなる詳細を示す図である。 本発明の態様による、コンピューティング環境内の処理を容易化する一実施形態を示す図である。 本発明の態様による、コンピューティング環境内の処理を容易化する一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境の別の実施例を示す図である。 図9のメモリのさらなる詳細を示す図である。 クラウド・コンピューティング環境の一実施形態を示す図である。 抽象モデル層の一実施例を示す図である。
本発明の態様によれば、コンピューティング環境の複数のプロセッサ(コアとも呼ばれる)によって共有キャッシュ・ラインを同時に変更する能力が提供される。複数のプロセッサが、データもしくはフィールドのロックを獲得することも、排他的所有権を得ることもなしに、カウンタなどの、データもしくはフィールドにアクセスし、データもしくはフィールドを更新することが可能である。
一実施例において、能力は、頻繁に更新されるが、読み取られる頻度の低い、カウンタなどのデータもしくはフィールドを更新するのに使用されてよい、非コヒーレント記憶に起因するフェッチ(FNC)命令と本明細書において呼ばれる、阻止のないアトミック・コンペア・アンド・スワップ命令を含む。命令は、例えば、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)などのアーキテクチャによって定義されるハードウェア命令である。命令は、ローカルの、プライベート・キャッシュにデータを運び込む必要も、比較ミスを繰り返す必要もなしに、したがって、更新時のオーバヘッドの多くを解消して、データ、例えば、カウントを非同期でインクリメントする、またはデクリメントする。非コヒーレント記憶に起因するフェッチ命令を使用して、共有キャッシュにおけるキャッシュ・ラインが、変更の意図でフェッチされ、データが、例えば、従来のMESIコヒーレンス規則またはz/Architecture(R)コヒーレンス規則の下で非コヒーレント様態で動作する、1つまたは複数のプロセッサによって同時に変更されることが可能である。
本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境の一実施形態が、図1を参照して説明される。一実施例において、コンピューティング環境は、IBM(R)z/Architecture(R)に基づく。z/Architecture(R)の一実施形態が、「z/Architecture Principles of Operation」、IBM Publication No.SA22−7832−10、2015年3月において説明される。
別の例において、コンピューティング環境は、IBM(R)Power Architecture(R)に基づく。Power Architecture(R)の一実施形態が、「Power ISA(TM) Version 2.07B」、インターナショナル・ビジネス・マシーンズ・コーポレーション、2015年4月9日において説明される。IBM(R)、z/Architecture(R)、およびPower Architecture(R)は、世界中の多くの管轄区域において登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
また、コンピューティング環境は、Intel(R)x86アーキテクチャ、またはQualcomm Snapdragon(R)アーキテクチャを含むが、以上には限定されない他のアーキテクチャに基づいてもよい。また、他の実施例も存在する。Intel(R)は、米国、および他の国々におけるインテル・コーポレーション、またはその子会社の商標または登録商標である。
図1に示されるとおり、コンピューティング環境100は、例えば、汎用コンピューティング・デバイスの形態で示される、例えば、コンピュータ・システム102を含む。コンピュータ・システム102は、1つもしくは複数のバスまたは他の接続110、あるいはその両方を介して互いに結合された、1つまたは複数のプロセッサ、処理ユニットもしくは処理コア104(例えば、中央処理装置(CPU))、メモリ106(別名、例として、システム・メモリ、メイン・メモリ、メイン・ストレージ、中央ストレージ、またはストレージ)、および1つまたは複数の入出力(I/O)インターフェース108を含んでよいが、以上には限定されない。
バス110は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスもしくはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサ・バスもしくはローカル・バスを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。例として、限定としてではなく、そのようなアーキテクチャは、インダスリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)を含む。
メモリ106は、例えば、プロセッサ104のローカル・キャッシュ122に結合されてよい、共有キャッシュなどのキャッシュ120を含んでよい。さらに、メモリ106は、1つまたは複数のプログラムもしくはアプリケーション130と、オペレーティング・システム132と、1つまたは複数のコンピュータ可読プログラム命令134とを含んでよい。コンピュータ可読プログラム命令134は、本発明の態様の実施形態の機能を実行するように構成されてよい。
また、コンピュータ・システム102は、例えば、I/Oインターフェース108を介して、1つもしくは複数の外部デバイス140、1つもしくは複数のネットワーク・インターフェース142、または1つもしくは複数のデータ・ストレージ・デバイス144、あるいはその組合せと通信してもよい。例示的な外部デバイスは、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ、その他を含む。ネットワーク・インターフェース142は、コンピュータ・システム102が、他のコンピューティング・デバイスもしくはコンピューティング・システムとの通信を提供する、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つもしくは複数のネットワークと通信することを可能にする。
データ・ストレージ・デバイス144は、1つもしくは複数のプログラム146、1つもしくは複数のコンピュータ可読プログラム命令148、またはデータ、あるいはその組合せ、その他を記憶してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
コンピュータ・システム102は、取外し可能な/取外し可能でない、揮発性/不揮発性のコンピュータ・システム記憶媒体を含んでよく、またはそのような媒体に結合されてよく、あるいはその両方が行われてよい。例えば、コンピュータ・システム102は、取外し可能でない、不揮発性の磁気媒体(通常、「ハードドライブ」と呼ばれる)、取外し可能な、不揮発性の磁気ディスク(例えば、「フロッピ・ディスク」)から読み取るため、およびそのようなディスクに書き込むための磁気ディスク・ドライブ、またはCD−ROM、DVD−ROM、もしくは他の光媒体などの取外し可能な、不揮発性の光ディスクから読み取るため、およびそのようなディスクに書き込むための光ディスク・ドライブ、あるいはその組合せを含んでよく、またはそのような媒体に結合されてよく、あるいはその両方が行われてよい。他のハードウェア構成要素またはソフトウェア構成要素、あるいはその両方が、コンピュータ・システム102と併せて使用されることが可能であることを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長な処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライバ、およびデータ・アーカイブ・ストレージ・システム、その他を含むが、以上には限定されない。
コンピュータ・システム102は、他の多数の汎用または専用のコンピューティング・システム環境またはコンピューティング・システム構成で動作可能であり得る。コンピュータ・システム102と一緒に使用するのに適することが可能なよく知られたコンピューティング・システム、コンピューティング環境、またはコンピューティング構成、あるいはその組合せの例は、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップ・ボックス、プログラマブル家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、ならびに以上のシステムもしくはデバイスのいずれかを含む分散クラウド・コンピューティング環境、およびそれに類するものを含むが、以上には限定されない。
プロセッサ104、およびプロセッサによって使用されるメモリ階層に関するさらなる詳細が、図2を参照して説明される。一実施例において、コンピュータ・システム102は、複数のプロセッサまたはコア104を含む。この実施例において、3つのコア、コア0、1、および2が示されるが、コンピュータ・システムは、本明細書において説明されるのと比べて、より多くのコアを有しても、より少ないコアを有してもよい。各コアは、プライベート・ローカル・キャッシュ122を有する。ローカル・キャッシュ122は、例えば、L1キャッシュ200と、L2キャッシュ202とを含む。他の構成も可能である。
ローカル・キャッシュ122は、プロセッサ104によって使用されるメモリ階層の一部である。メモリ階層は、複数のプロセッサ104によってアクセス可能である共有キャッシュ120(例えば、L3キャッシュ)と、メイン・メモリ106とをさらに含む。また、メモリ階層は、他の実施形態において、その他のキャッシュもしくはキャッシュ・レベル、または異なるキャッシュもしくはキャッシュ・レベル、あるいはその組合せを含んでもよい。
プロセッサ、メイン・メモリ、およびキャッシュ・メモリの間のデータの転送は、例えば、キャッシュ・コントローラ206によって制御される。
共有キャッシュ120(および一般にメモリ)は、MESIプロトコルなどのキャッシュ・コヒーレンス・プロトコルの下で動作してよい。MESIプロトコルは、ライトバック・キャッシュをサポートする、無効化ベースのキャッシュ・コヒーレンス・プロトコルである。MESIという頭字語における文字は、キャッシュ・ラインに印が付けられる(例えば、2ビットを使用して符号化される)ことが可能な4つの排他的状態を表す。
変更済み(M):キャッシュ・ラインは、現在のキャッシュ内だけに存在し、ダーティ(dirty)である(すなわち、メイン・メモリにおける値から変更されている(M状態))。キャッシュは、将来の何らかの時点でメイン・メモリにデータをライトバックしてから、(もはや有効でない)メイン・メモリ状態の他の任意の読取りを許す。ライトバックは、ラインを共有状態(S)に変更する。
排他的(E):キャッシュ・ラインは、現在のキャッシュ内だけに存在するが、クリーンである(すなわち、キャッシュ・ラインは、メイン・メモリと合致する)。キャッシュ・ラインは、読取り要求に応答して、任意の時点で共有状態に変更されてよい。代替として、キャッシュ・ラインは、キャッシュ・ラインに書き込むとき、変更済み状態に変更されてよい。
共有(S):このキャッシュ・ラインが、マシンの他のキャッシュに記憶されてよく、クリーンである、すなわち、このラインがメイン・メモリと合致することを示す。このラインは、任意の時点で破棄されて(無効状態に変更されて)よい。
無効(I):このキャッシュ・ラインが無効である(使用されない)ことを示す。
MESIプロトコルを使用することの一実施例が、図3を参照して説明される。図3のシナリオにおいて、排他的フェッチが、様々な時点、すなわち、T0<T1<T2である、時刻T0、時刻T1、および時刻T2において異なる3つのプロセッサまたはコアによって実行される。排他的フェッチは、キャッシュ・ラインの内容を変更することを意図するプロセッサ・フェッチである。一実施例において、共有キャッシュにおけるグローバル・カウンタが、変更される。
図3を参照すると、一実施例において、時刻T0において、コア0が、コア0のローカル・キャッシュL1、L2におけるキャッシュ・ミスに起因して、共有キャッシュ120におけるキャッシュ・ラインAに対して排他的フェッチ300を実行する。共有キャッシュ120(L3)にキャッシュ・ヒットが存在し、それ故、コア0が、共有キャッシュ・ラインの排他的所有権を受け取る。キャッシュ・ラインの排他的所有権を受け取ることに基づいて、コア0は、今や、キャッシュ・ラインAに記憶することができる(例えば、1つの記憶、ホット・グローバル・カウンタ)。その記憶を実行すべく、コア0は、キャッシュ・ラインAをコア0のローカル・キャッシュ(L1またはL2、あるいはその両方)に記憶する(すなわち、値/データを記憶する)ために、キャッシュ・ラインAをコア0に運び戻すことを開始する。
時刻T1において、コア1が、コア1のローカル・キャッシュL1、L2におけるキャッシュ・ミスに起因して、共有キャッシュ120におけるキャッシュ・ラインAに対する排他的フェッチ302を実行する。共有キャッシュ120(L3)にキャッシュ・ヒットが存在し、それ故、MESIコヒーレンス・プロトコルに起因して、コア0がキャッシュ・ラインAの所有権を放棄することを要求すべくクロス無効化(XI)304要求がコア0に送信される。言い換えると、コア0は、キャッシュ・ラインAと関係するローカル・キャッシュにおけるデータの前のコピーを無効にするクロス無効化(XI)を受信する。コア0は、共有キャッシュ120から運び込まれたキャッシュ・ラインAの値が、ローカル・キャッシュ(L1またはL2、あるいはその両方)における前の値と比較されるようにコンペア・アンド・スワップを実行する過程にあり、キャッシュ・ラインAの値とローカル・キャッシュの値が異なる場合、キャッシュ・ラインAの値は、コア0のローカル・キャッシュに記憶される。しかし、コア1が、今や、コア0から共有キャッシュ120におけるキャッシュ・ラインAの排他的所有権を奪取しているため、コア0のローカル・キャッシュに記憶が行われることは可能でなく、それ故、コンペア・アンド・スワップ手続きは、失敗する(すなわち、コンペア・アンド・スワップは、完了前に中断されており、したがって、記憶は、行われない)。
時刻T2において、コア2が、コア2のローカル・キャッシュL1、L2におけるキャッシュ・ミスに起因して、共有キャッシュ120におけるキャッシュ・ラインAに対する排他的フェッチ306を実行する。共有キャッシュ120(L3)にキャッシュ・ヒットが存在し、それ故、MESIコヒーレンス・プロトコルに起因して、プロセッサがキャッシュ・ラインAの所有権を放棄することを要求すべくクロス無効化(XI)308要求がコア1に送信される。言い換えると、コア1は、キャッシュ・ラインAと関係するローカル・キャッシュにおけるデータの前のコピーを無効にするクロス無効化(XI)308を受信する。コア1は、共有キャッシュ120から運び込まれたキャッシュ・ラインAの値が、ローカル・キャッシュ(L1またはL2、あるいはその両方)における前の値と比較されるようにコンペア・アンド・スワップを実行する過程にあり、キャッシュ・ラインAの値とローカル・キャッシュの値が異なる場合、キャッシュ・ラインAの値は、コア1のローカル・キャッシュに記憶される。しかし、コア2が、今や、コア1から共有キャッシュ120の排他的所有権を奪取しているため、コア1のローカル・キャッシュに記憶が行われることは可能でなく、それ故、コンペア・アンド・スワップ手続きは、失敗する(すなわち、コンペア・アンド・スワップは、完了前に中断されており、したがって、記憶は、行われない)。コア2が、コア2の要求される更新を続ける。
前述のシナリオを参照して説明されるとおり、1つのプロセッサが共有キャッシュ・ラインを更新している間、その他のプロセッサは、阻止されており(例えば、ロックを介して、またはアトミック操作を介して、あるいはその両方を介して)、その結果、キャッシュ・コヒーレンスをもたらす。キャッシュ・コヒーレンスは、複数のローカル・キャッシュに記憶された共有されるリソース・データの一様性、およびシステム内のプロセッサが見ることができるキャッシュ・データの整合性である。
しかし、本発明の1つまたは複数の態様によれば、阻止することなしに、コヒーレンスおよび可視のデータ整合性を確実にしながら、複数のコアが、キャッシュ・ラインの内容を同時に変更することを可能にする新たなタイプのキャッシュ・ディレクトリ状態(例えば、新たなMESI状態)、および新たなフェッチ・タイプが提供される。この新たなディレクトリ状態は、MESIプロトコルの脈絡において共有−変更可能またはフェッチ非コヒーレント(X)と呼ばれ、フェッチ操作は、「非コヒーレント記憶に起因するフェッチ(Fetch due to Non−Coherent Store)」と呼ばれる。キャッシュ・ラインが、記憶に関して共有−変更可能状態またはフェッチ非コヒーレント状態に置かれた場合、コヒーレンスは、依然としてもたらされるが、可視のコヒーレンスは、不明瞭になる。プロセッサから見て、プロセッサは、キャッシュ・ラインに記憶してよいが、プロセッサは、更新されている内容を検査しない。例えば、キャッシュ・ラインの値が、インクリメントされる/デクリメントされる、または増倍されるなどするが、このことは、その特定の時点における値を知ることなしに盲目に行われる。プロセッサが、データを見ること(例えば、非コヒーレントに起因するフェッチではないフェッチ)を所望する場合、シリアル化が、そのフェッチに先立って実行される。
前述したとおり、MESIプロトコルにおいて、キャッシュ・ラインは、以下の状態のうちの1つ、すなわち、変更済み状態、排他的状態、共有状態、または無効状態に存在する。排他的状態および共有状態には、排他的/読取り専用フェッチがキャッシュ・アドレスにアクセスすることによって入り、変更済みは、プロセッサ記憶が後に続く排他的フェッチを使用し、無効は、ラインを引き離すチップ/キャッシュを有する、または初期ディレクトリ状態である。各状態遷移とともに、キャッシュ・ラインに対する変更が、コヒーレンスを確実にすべくメモリにライトバックされる。
共有−変更可能状態またはフェッチ非コヒーレント(X)状態の追加とともに、キャッシュ・ラインは、1つまたは複数のコアが、例えば、グローバル共有−変更可能構造の値(例えば、一般的なデバッグ・カウンタ、その他のカウンタ、またはロック)をインクリメントすること/デクリメントすることなどの一般的な操作、および他のより複雑な操作のために、キャッシュ・ラインに同時に記憶していることが可能である状態に存在しているものと認識されることが可能である。同時の記憶とともに、1つのコアが、プライベート・キャッシュからの変更要求を、キャッシュ・ラインに関連付けられたデータに対する変更が行われる共有キャッシュ・レベルにプッシュすることによって、別のコアがその別のコアの記憶を完了する前に、キャッシュ・ラインに対する記憶を開始してよい。
本発明の1つまたは複数の態様による、フェッチ非コヒーレント操作を含む更新されたMESIプロトコルを使用するシナリオの一実施例が、図4を参照して説明される。T0<T1<T2である、時刻T0、時刻T1、および時刻T2が、例示される。
時刻T0において、コア0が、共有キャッシュ120におけるキャッシュ・ラインAに対して非コヒーレント記憶に起因するフェッチ(FNC)命令400を実行する。フェッチ非コヒーレント要求に基づいて、コア0に、キャッシュ・ラインAに対するアクセスが与えられ、コア0が、この実施例において、ターゲット・キャッシュの内容を更新するために共有キャッシュ・レベルに対して読取り/変更/書込み操作(例えば、インクリメント/デクリメント)を発行することを可能にする。さらに、FNC操作は、1つまたは複数のコアがその後、共有キャッシュ・ラインに同時に記憶することを可能にするキャッシュ・ディレクトリ状態(共有−変更可能またはフェッチ非コヒーレント)を設定する。非コヒーレントに起因するフェッチは、プロセッサから見て可視のキャッシュ・ライン・コヒーレンスおよびデータ整合性を維持しながら、複数のコアがキャッシュ・ラインに記憶することを許す。同時の更新/変更は、従来のアーキテクチャにおけるシリアル化ペナルティをマスクすることに起因して、より小さいオーバヘッドで可能にされる。
時刻T1において、コア1が、共有キャッシュ120におけるキャッシュ・ラインAに対して非コヒーレント記憶に起因するフェッチ命令402を実行する。そのラインは、フェッチ非コヒーレント状態を有するので、コア1は、コア0にクロス無効化が発行されることなしに、共有キャッシュ・ラインを更新してもよい。コア0とコア1の両方からの複数の記憶が、介在する同時でない記憶タイプ・フェッチ(例えば、フェッチ非コヒーレント記憶でないフェッチ)がまったく行われないという条件付きで、キャッシュ・ラインAに対して発行されてよい。
時刻T2において、コア2が、共有キャッシュ・ライン120におけるキャッシュ・ラインAに対して非コヒーレントに起因するフェッチ命令404を実行する。そのラインは、フェッチ非コヒーレント状態を有するので、コア2は、コア1(またはコア0)にクロス無効化が発行されることなしに、共有キャッシュ・ラインを更新してもよい。
非コヒーレントに起因するフェッチ操作のそれぞれにおいて、共有キャッシュ・ラインは、ローカルのプライベート・キャッシュのいずれにもデータを運び込むことなしに、更新される。
非コヒーレントに起因するフェッチ操作を使用することの別の実施例が、図5を参照して説明される。この実施例において、時刻T0において、コア0が、共有キャッシュ・ラインAに関して排他的フェッチ500を発行する。次に、時刻T1において、コア1が、共有キャッシュ・ラインAに関して非コヒーレントに起因するフェッチ命令502を発行する。コア0が、キャッシュ・ラインAの排他的所有権を、共有−変更可能所有権またはフェッチ非コヒーレント所有権の代わりに有するので、所有権を排他的から共有−変更可能またはフェッチ非コヒーレントに格下げするクロス無効化504がコア0に対して発行される。それ故、コア0とコア1の両方が、共有キャッシュ・ラインAを更新することができる。
時刻T2において、コア2が、共有キャッシュ120におけるキャッシュ・ラインAに対して非コヒーレントに起因するフェッチ命令506を実行する。そのラインは、フェッチ非コヒーレント状態を有するので、コア2は、共有キャッシュ・ラインを更新してもよい。
時刻T3において、コア0が、コア0が共有キャッシュ・ラインAの排他的所有権を所望すると判定する。したがって、コア0は、共有キャッシュ・ラインに関して排他的フェッチ510を発行する。排他的フェッチ510に基づいて、クロス無効化512、514が、それぞれ、コア1およびコア2に対して発行される。排他的フェッチに基づいて、記憶が共有キャッシュにおいてマージされ、更新された値が、コア0に戻される。例えば、その他のコアに対するクロス無効化が、それらのコアがキャッシュ・ラインに記憶するのを止めるべきことをそれらのコアに知らせるのに使用される。すべての未処理の記憶は、L3キャッシュにドレインされることになり、完了する。その時点の後、排他的フェッチを発行するプロセッサには、キャッシュ・ラインの更新されたバージョンが戻されることが可能である。
本明細書において説明されるとおり、複数のプロセッサが、共有キャッシュ・ラインに対して同時の書込みアクセスを有し、このことが、クロス無効化およびシリアル化オーバヘッドの必要性を解消して、コンピューティング環境内の処理を容易化する。このことが、例えば、書込みが頻繁で、読取りの頻度が低い使用事例に関して使用される。
共有キャッシュ・ラインの同時の変更と関係するさらなる詳細が、図6を参照して説明される。第1のプロセッサまたはコアが、共有キャッシュ・ラインAをターゲットとする所与のキャッシュ・レベル(例えば、L3)に「非コヒーレント記憶に起因するフェッチ」要求を送信する、ステップ600。キャッシュ・レベルが、フェッチ要求の受信に基づいて、ターゲットにされたキャッシュ・ラインに関するキャッシュ・ディレクトリ状態を共有−変更可能またはフェッチ非コヒーレントに設定する、ステップ602。さらに、キャッシュ・ラインに関連付けられたデータが、要求するプロセッサに戻されてよく、または初期状態が関係ないものとすると、フェッチ応答が、要求するプロセッサに戻されてよい、ステップ604。プロセッサは、キャッシュ・ラインに記憶することを始め、ステップ606、ここにおいて、更新された値(または、例えば、インクリメントされるべき/デクリメントされるべき量)が、読取り−変更−書込み更新のために共有キャッシュに送信される。更新は、共有キャッシュ(例えば、L3キャッシュ)に直接に送信され、プライベート・キャッシュ(例えば、L1キャッシュ、L2キャッシュ)には書き込まれない。
さらなる1つまたは複数のプロセッサが、その後、共通の、共有キャッシュ・ラインを更新する許可を獲得すべく「非コヒーレント記憶に起因するフェッチ」要求を送信する、ステップ608。キャッシュ・レベルが、そのさらなるフェッチ要求の受信に基づいて、複数の所有権を示すべくキャッシュ・ディレクトリを更新し、ステップ610、キャッシュ・ラインに関連付けられたデータのコピー、または単純なフェッチ応答を戻す、ステップ612。さらなるコアは、その後、キャッシュ・ラインに直接に記憶を送信する(プライベート・キャッシュに記憶することなしに)、ステップ614。記憶値は、例えば、キャッシュ・レベルが読取り−変更−書込み操作としてキャッシュ・データ内容を更新するのに使用するインクリメント/デクリメント・オフセット値を示す。
キャッシュ・ラインに対する参照(例えば、「非コヒーレント記憶に起因するフェッチ」要求以外のフェッチ・タイプ)の受信、ステップ616に基づいて、キャッシュ・レベルは、プロセッサが、キャッシュ・ラインに関連付けられたデータの値を検査しようとしていることを検出し、キャッシュ・ラインに対するクロス無効化要求のセットを生成して、キャッシュ・ラインに記憶することを止めるようキャッシュ・レベルにアタッチされたコアを強制する、ステップ618。キャッシュ・ラインの共有−変更可能所有権またはフェッチ非コヒーレント所有権を有するコアから無効化要求を受信することに基づいて、キャッシュ・レベルは、キャッシュ・ラインに関連付けられたデータの内容を検査することを意図するプロセッサによってキャッシュ・レベルに送り込まれたフェッチ操作のタイプに基づいて、要求するプロセッサに対して読取り専用または排他的としてディレクトリ状態を更新する、ステップ620。それ故、フェッチ非コヒーレント記憶要求以外の要求を受信することに基づいて、未処理の記憶が停止され、キャッシュ内容が同期され、結果の値が要求するプロセッサに戻されるシリアル化が実行される。
このプロセスを容易化すべく、キャッシュ・レベルは、それらの操作の扱いを迅速化する短いRMW(読取り、変更、書込み)バッファを有して、所与のキャッシュ・レベルにおけるパイプラインの深度の2倍によって考えられるのと比べて、より頻繁な記憶操作を可能にしてよい。
以上のことに基づいて、一実施例において、複数のコアが、プライベート・キャッシュにカウンタ値を運び込むことなしに、同一のキャッシュ・ライン、例えば、キャッシュ・ラインにおける同一のソフトウェア・カウンタまたは異なるソフトウェア・カウンタに同時に記憶してよい。複数のプロセッサが、共有−変更可能状態またはフェッチ非コヒーレント・ディレクトリ状態を介してデータ完全性を確実にしながら、単一のキャッシュ・ラインに対する書込みアクセスを同時に維持することが可能である。クロス無効化は、使用されず、シリアル化オーバヘッドが低減される。それ故、コンピューティング環境内のパフォーマンスが向上させられることが可能である。
本発明の1つまたは複数の態様は、コンピュータ技術と密接に結び付いており、コンピュータ内の処理を容易化して、コンピュータのパフォーマンスを向上させる。本発明の1つまたは複数の態様と関係する、コンピューティング環境内の処理を容易化することの一実施形態のさらなる詳細が、図7〜図8を参照して説明される。
図7を参照すると、一実施形態において、共有キャッシュ・ラインに記憶する複数の記憶要求が、コンピューティング環境の複数のプロセッサから獲得される(700)。複数の記憶要求は、同時記憶タイプのものである(701)。複数の記憶要求に基づいて、データが、共有キャッシュ・ラインに同時に記憶される(702)。さらに、一実施形態において、共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態が、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定される(704)。
例として、データは、共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を含む(706)。グローバル共有−変更可能構造は、複数のプロセッサのうちの複数のプロセッサによって使用される(708)。
さらなる態様において、共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求が獲得される(710)。フェッチ要求は、同時記憶タイプとは異なる(711)。フェッチ要求に基づいて、共有キャッシュ・ラインに関してシリアル化が実行され(712)、シリアル化を完了することに基づいて、データは、共有キャッシュ・ラインから読み取られる(714)。
一例として、図8を参照すると、シリアル化を実行することは、共有キャッシュ・ラインに対する未処理の記憶を停止すること(720)、および共有キャッシュ・ラインのデータを同期すること(722)を含む。
さらに、一実施形態において、フェッチ要求に基づいて、共有キャッシュ・ラインの所有権状態が、共有−変更可能から別の状態に変更される(724)。その別の状態は、フェッチ要求に基づいて、排他的または読取り専用である(726)。
一実施形態において、複数の記憶要求を獲得することは、複数のプロセッサからの複数の非コヒーレント記憶に起因するフェッチ要求を受信することを含む(728)。非コヒーレント記憶に起因するフェッチ要求は、共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される(730)。
さらに、一実施形態において、記憶することは、複数のプロセッサの1つまたは複数のプライベート・キャッシュにデータを記憶することなしに、共有キャッシュ・ラインに直接にデータを記憶することを含む(732)。
その他の変形形態および実施形態が可能である。
他のタイプのコンピューティング環境は、実施例が図9を参照して説明される、エミュレーション環境を含むが、これには限定されない、本発明の1つまたは複数の態様を組み込み、使用してもよい。この実施例において、コンピューティング環境20が、例えば、1つまたは複数のバス28または他の接続、あるいはその両方を介して互いに結合された、例えば、ネイティブ中央処理装置(CPU)22、メモリ24、および1つまたは複数の入出力デバイスまたは入出力インターフェース26、あるいはその組合せを含む。例として、コンピューティング環境20は、ニューヨーク州アーモンク市所在のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるIBM(R)PowerPC(R)プロセッサまたはIBM(R)Power Series(R)サーバもしくはIBM(R)pSeries(R)サーバ、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、インテル社、または他の企業によって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPC(R)およびPower Series(R)は、世界中の多くの管轄区域において登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
ネイティブ中央処理装置22は、環境内の処理中に使用される1つもしくは複数の汎用レジスタまたは1つもしくは複数の専用レジスタ、あるいはその両方などの1つもしくは複数のネイティブ・レジスタ30を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
さらに、ネイティブ中央処理装置22は、メモリ24に記憶された命令およびコードを実行する。特定の一実施例において、中央処理装置は、メモリ24に記憶されたエミュレータ・コード32を実行する。このコードは、1つのアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード32は、PowerPCプロセッサ、pSeriesサーバ、またはその他のサーバもしくはプロセッサなどのz/Architecture(R)以外のアーキテクチャに基づくマシンが、z/Architecture(R)をエミュレートすること、およびz/Architecture(R)に基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
エミュレータ・コード32と関係するさらなる詳細が、図10を参照して説明される。メモリ24に記憶されるゲスト命令40は、ネイティブCPU22のもの以外であるアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令と互いに関係する)を備える。例えば、ゲスト命令40は、z/Architecture(R)プロセッサ上で実行されるように設計されていることが可能であるが、代わりに、例えば、Intel(R)プロセッサであってよいネイティブCPU22上でエミュレートされている。一実施例において、エミュレータ・コード32は、メモリ24から1つまたは複数のゲスト命令40を獲得し、オプションとして、獲得された命令のためのローカル・バッファリングを提供する命令フェッチ・ルーチン42を含む。また、エミュレータ・コード32は、獲得されているゲスト命令のタイプを判定し、ゲスト命令を対応する1つまたは複数のネイティブ命令46に変換する命令変換ルーチン44も含む。この変換は、例えば、ゲスト命令によって実行されるべき機能を識別すること、およびその機能を実行すべきネイティブ命令を選択することを含む。
さらに、エミュレータ・コード32は、ネイティブ命令が実行されるようにするエミュレーション制御ルーチン48を含む。エミュレーション制御ルーチン48は、ネイティブCPU22に、前に獲得された1つまたは複数のゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終わりに、次のゲスト命令またはゲスト命令のグループを獲得することをエミュレートすべく命令フェッチ・ルーチンに制御を戻させることが可能である。ネイティブ命令46の実行は、変換ルーチンによって判定されるとおり、メモリ24からレジスタにデータをロードすること、レジスタからメモリにデータを再び記憶すること、または何らかのタイプの算術演算もしくは論理演算を実行することを含んでよい。
各ルーチンは、例えば、メモリに記憶され、ネイティブ中央処理装置22によって実行されるソフトウェアにおいて実装される。他の実施例において、ルーチンまたは操作のうちの1つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはその何らかの組合せにおいて実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ30を使用して、またはメモリ24におけるロケーションを使用することによってエミュレートされてよい。実施形態において、ゲスト命令40、ネイティブ命令46、およびエミュレータ・コード32は、同一のメモリ内に存在してよく、または異なるメモリ・デバイスの間に分散されてよい。
本明細書において使用されるファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、より高レベルのマシン・コードの実装において使用されるハードウェア・レベル命令またはデータ構造、あるいはその両方を含む。一実施形態において、ファームウェアは、例えば、通常、信頼されるソフトウェアを含むマイクロコード、または基礎をなすハードウェアに特有のマイクロコードとして提供される専有のコードを含み、システム・ハードウェアに対するオペレーティング・システム・アクセスを制御する。
獲得され、変換され、実行されるゲスト命令40は、例えば、本明細書において説明される命令のうちの1つであってよい。1つのアーキテクチャ(例えば、z/Architecture(R))のものであるその命令が、メモリからフェッチされ、変換され、別のアーキテクチャ(例えば、PowerPC(R)、pSeries(R)、Intel(R)、その他)のネイティブ命令46のシーケンスとして表される。次に、これらのネイティブ命令が、実行される。
1つまたは複数の態様が、クラウド・コンピューティングと関係してよい。
本開示は、クラウド・コンピューティングに関する詳細な説明を含むものの、本明細書に記載される教示の実施は、クラウド・コンピューティング環境に限定されないものとあらかじめ理解される。むしろ、本発明の実施形態は、現在、知られている、または後に開発される他の任意のタイプのコンピューティング環境と併せて実施されることが可能である。
クラウド・コンピューティングは、最小限の管理労力、またはサービス・プロバイダとの最小限のやりとりしか伴わずに迅速にプロビジョニングされ、リリースされることが可能である構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有されるプールに対する好都合な、オンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのモデルである。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの展開モデルとを含むことが可能である。
特徴は、以下のとおりである。
オンデマンド・セルフ・サービス:クラウド・コンシューマが、サービスのプロバイダとの対人的なやりとりを要求することなしに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることが可能である。
ブロード・ネットワーク・アクセス:能力が、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、モバイル電話、ラップトップ、およびPDA)による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、様々な物理リソースおよび仮想リソースが、デマンドに応じて動的に割り当てられること、および再割当てされることが行われて、マルチテナント・モデルを使用して複数のコンシューマに役立てられるようにプールされる。コンシューマが、一般に、提供されるリソースの厳密なロケーションをまったく管理しておらず、それについての知識も有さないが、抽象性のより高いレベルにおいてロケーション(例えば、国、州、またはデータセンタ)を指定することができる可能性があるという点で、ロケーション独立の感覚が存在する。
迅速な伸縮性:能力が、急速にスケールアウトするように、かつ急速にスケールインすべく迅速に解放されるように、一部の事例において自動的に、迅速に、伸縮的にプロビジョニングされることが可能である。コンシューマには、プロビジョニングのために利用可能な能力は、しばしば、無制限であるように見え、任意の時点で任意の数量で購入されることが可能である。
測定されるサービス:クラウド・システムが、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適切な抽象性の何らかのレベルで測定能力を活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用率が、監視され、制御され、報告されて、利用されるサービスのプロバイダとコンシューマの両方に透明性を提供することが可能である。
サービス・モデルは、以下のとおりである。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。コンシューマは、限られたユーザ特有のアプリケーション構成設定を可能な例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション能力さえも含め、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマによって作成された、または獲得されたアプリケーションをクラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしないが、展開されるアプリケーション、および、場合により、アプリケーションをホストする環境構成を管理する。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供される能力は、コンシューマが、オペレーティング・システムと、アプリケーションとを含むことが可能な任意のソフトウェアを展開すること、および実行することができる場合に、処理、ストレージ、ネットワーク、およびその他の基礎的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしないが、オペレーティング・システム、ストレージ、展開されるアプリケーション、および、場合により、選定されたネットワーキング構成要素(例えば、ホスト・ファイアウォール)の限られた制御を管理する。
展開モデルは、以下のとおりである。
プライベート・クラウド:クラウド・インフラストラクチャは、専ら組織のために運用される。クラウド・インフラストラクチャは、組織またはサードパーティによって管理されることが可能であり、敷地内に存在することも、敷地外に存在することも可能である。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される関心(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサードパーティによって管理されることが可能であり、敷地内に存在することも、敷地外に存在することも可能である。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大きい業界グループに提供され、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ移植性およびアプリケーション移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された、または専有の技術によって一緒に結び付けられた2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
クラウド・コンピューティング環境は、ステートレスであること、低結合、モジュール性、および意味相互運用性に焦点を合わせて、サービス指向である。クラウド・コンピューティングの中核には、互いに接続されたノードのネットワークを備えるインフラストラクチャがある。
次に図11を参照すると、例示的なクラウド・コンピューティング環境50が示される。図示されるとおり、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)もしくはセルラ電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信相手とすることが可能な、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信することが可能である。ノード10は、前段で説明されるプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せなどの、1つまたは複数のネットワークにおいて、物理的に、または仮想でグループ化されてよい(図示せず)。このことは、クラウド・コンピューティング環境50が、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することを可能にする。図11に示されるコンピューティング・デバイス54A〜Nのタイプは、単に例示的であることが意図されること、ならびにコンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方を介して任意のタイプのコンピュータ化されたデバイスと通信することが可能である(例えば、ウェブ・ブラウザを使用して)ことが理解される。
次に図12を参照すると、クラウド・コンピューティング環境50(図11)によって提供される機能抽象化層のセットが示される。図12に示される構成要素、層、および機能は、単に例示的であることが意図され、本発明の実施形態は、これらに限定されないことをあらかじめ理解されたい。図示されるとおり、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60が、ハードウェア構成要素と、ソフトウェア構成要素とを含む。ハードウェア構成要素の例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング構成要素66を含む。一部の実施形態において、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア67と、データベース・ソフトウェア68とを含む。
仮想化層70が、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、および仮想クライアント75が提供されることが可能な抽象化層を提供する。
一実施例において、管理層80が、後段で説明される機能を提供してよい。リソース・プロビジョニング81が、クラウド・コンピューティング環境内でタスクを実行するのに利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。測定および価格設定82が、クラウド・コンピューティング環境内でリソースが利用されるにつれての費用追跡、およびこれらのリソースの消費に関する料金請求またはインボイス送付を提供する。一実施例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを備えてよい。セキュリティが、クラウド・コンシューマおよびタスクに関する身元検証、ならびにデータおよびその他のリソースに関する保護を提供する。ユーザ・ポータル83が、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84が、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割当ておよび管理を提供する。サービス・レベル合意(SLA)計画および履行85が、SLAにより将来の要求が予期されるクラウド・コンピューティング・リソースの事前準備および調達を提供する。
作業負荷層90が、クラウド・コンピューティング環境が利用されてよい機能の例を提供する。この層から提供されてよい作業負荷および機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育デリバリ93、データ・アナリティクス処理94、トランザクション処理95、および同時変更処理96を含む。
本発明は、統合の任意の可能な技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つの(または複数の)コンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであることが可能である。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであってよいが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能なプログラマブル読取り専用メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、命令が記録されているパンチカードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝達媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または配線を介して伝送される電気信号などの一過性の信号そのものであると解釈されるべきではない。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、伝送光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++、もしくはそれに類するものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくはそれに類似したプログラミング言語などの手続き型プログラミング言語を含め、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェア・パッケージとして実行されても、一部がユーザのコンピュータ上で、かつ一部が遠隔コンピュータ上で実行されても、全体が遠隔コンピュータもしくは遠隔サーバの上で実行されてもよい。全体が遠隔コンピュータもしくは遠隔サーバの上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてもよい(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)。一部の実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することが可能である。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施されることが可能であることが理解されよう。
これらのコンピュータ可読プログラム命令は、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるそれらの命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製造品を備えるべく、特定の様態で機能するようにコンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せを導くことができるコンピュータ可読記憶媒体に記憶されてもよい。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を例示する。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表すことが可能である。一部の代替の実装形態において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、時として、関与する機能に依存して、逆の順序で実行されてよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実施されることが可能であることにも留意されたい。
以上のことに加えて、1つまたは複数の態様が、顧客環境の管理を提供するサービス・プロバイダによってもたらされること、提供されること、展開されること、管理されること、保守されることなどが可能である。例えば、サービス・プロバイダは、1つまたは複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャ、あるいはその両方を作成すること、維持すること、サポートすることなどが可能である。その見返りとして、サービス・プロバイダは、例として、サブスクリプションまたは料金契約、あるいはその両方の下で顧客から支払いを受け取ってよい。さらに、または代替として、サービス・プロバイダは、1つまたは複数のサードパーティに対する広告コンテンツの販売から支払いを受け取ってよい。
一態様において、1つまたは複数の実施形態を実行するためのアプリケーションが展開される。一実施例として、アプリケーションを展開することは、1つまたは複数の実施形態を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに組み込むことを備えるコンピューティング・インフラストラクチャが展開されてよく、ここにおいて、コンピューティング・システムと組み合わされたコードが、1つまたは複数の実施形態を実行することができる。
さらなる態様として、コンピュータ可読コードをコンピュータ・システムに組み込むことを備えるコンピューティング・インフラストラクチャを組み込むためのプロセスが、提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、ここにおいて、コンピュータ媒体が、1つまたは複数の実施形態を備える。コンピュータ・システムと組み合わされたコードが、1つまたは複数の実施形態を実行することができる。
様々な実施形態が前段で説明されるものの、これらは、実施例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境が、1つまたは複数の実施形態を組み込み、使用するのに使用されることが可能である。さらに、異なる命令または操作が、使用されてよい。多くの変形形態が可能である。
さらに、他のタイプのコンピューティング環境が有益であり、使用されることが可能である。実施例として、メモリ要素に直接に、またはシステム・バスを介して間接的に結合された少なくとも2つのプロセッサを含む、プログラム・コードを記憶するのに、または実行するのに、あるいはその両方を行うのに適したデータ処理システムが、使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、ならびに実行中に大容量ストレージからコードが取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリを含む。
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サムドライブ、および他のメモリ媒体、その他を含むが、以上には限定されない)が、システムに直接に、または介在するI/Oコントローラを通じて結合されることが可能である。また、データ処理システムが、介在するプライベート・ネットワークもしくはパブリック・ネットワークを通じて他のデータ処理システム、または遠隔のプリンタもしくはストレージ・デバイスに結合されるようになることを可能にするネットワーク・アダプタが、システムに結合されてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、利用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
本明細書において使用される術語は、特定の実施形態について説明することのみを目的とし、限定することは意図していない。本明細書において使用される、「或る」および「その」という単数形は、文脈がそうでないことを明示するのでない限り、複数形も含むことを意図している。「備える」または「備えた」あるいはその両方の術語は、本明細書において使用される場合、明記される特徴、整数、ステップ、操作、要素、または構成要素あるいはその組合せの存在を明示するが、他の1つまたは複数の特徴、整数、ステップ、操作、要素、構成要素、またはそのグループ、あるいは以上の組合せの存在も、追加も除外することはないことがさらに理解されよう。
添付の特許請求の範囲におけるすべての手段もしくはステップおよび機能要素の対応する構造、材料、動作、および均等物は、存在する場合、明示的に主張される以外の主張される要素と組合せでその機能を実行するための任意の構造、材料、または動作を含むことを意図している。1つまたは複数の実施形態の説明は、例示および説明のために提示されてきたが、網羅的であることも、開示される形態に限定されることも意図していない。多くの変更形態および変形形態が、当業者には明白となろう。実施形態は、様々な態様、および実際的な応用を最もよく説明するために、かつ当業者が、企図される特定の用途に適する様々な変形を伴う様々な実施形態を理解することを可能にするように選択され、説明されている。

Claims (27)

  1. コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法であって、
    前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
    前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
    を含む、方法。
  2. 前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項1に記載の方法。
  3. 前記データが、前記共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を備える、請求項1または2のいずれかに記載の方法。
  4. 前記グローバル共有−変更可能構造が、前記複数のプロセッサのうちの複数のプロセッサによって使用される、請求項3に記載の方法。
  5. 前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
    前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
    前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
    をさらに含む、請求項1ないし4のいずれかに記載の方法。
  6. シリアル化を前記実行することが、
    前記共有キャッシュ・ラインに対する未処理の記憶を停止すること、および
    前記共有キャッシュ・ラインのデータを同期すること
    を含む、請求項5に記載の方法。
  7. 前記フェッチ要求に基づいて、前記共有キャッシュ・ラインの所有権状態を共有−変更可能状態から別の状態に変更することをさらに含む、請求項5または6のいずれかに記載の方法。
  8. 前記別の状態が、前記フェッチ要求に基づいて、排他的または読取り専用である、請求項7に記載の方法。
  9. 前記複数の記憶要求を前記獲得することが、
    前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
    を含む、請求項1ないし8のいずれかに記載の方法。
  10. 前記記憶することが、前記複数のプロセッサの1つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項1ないし9のいずれかに記載の方法。
  11. コンピューティング環境内の処理を容易化するためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信状態にある少なくとも1つのプロセッサと
    を備え、
    前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
    前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
    を含む方法を実行するように構成される、
    コンピュータ・システム。
  12. 前記方法が、前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項11に記載のシステム。
  13. 前記データが、前記共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を備える、請求項11または12のいずれかに記載のシステム。
  14. 前記グローバル共有−変更可能構造が、前記複数のプロセッサのうちの複数のプロセッサによって使用される、請求項13に記載のシステム。
  15. 前記方法が、
    前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
    前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
    前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
    をさらに含む、請求項11ないし14のいずれかに記載のシステム。
  16. シリアル化を前記実行することが、
    前記共有キャッシュ・ラインに対する未処理の記憶を停止すること、および
    前記共有キャッシュ・ラインのデータを同期すること
    を含む、請求項15に記載のシステム。
  17. 前記方法が、前記フェッチ要求に基づいて、前記共有キャッシュ・ラインの所有権状態を共有−変更可能状態から別の状態に変更することをさらに含む、請求項15または16のいずれかに記載のシステム。
  18. 前記別の状態が、前記フェッチ要求に基づいて、排他的または読取り専用である、請求項17に記載のシステム。
  19. 前記複数の記憶要求を前記獲得することが、
    前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
    を含む、請求項11ないし18のいずれかに記載のシステム。
  20. 前記記憶することが、前記複数のプロセッサの1つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項11ないし19のいずれかに記載のシステム。
  21. コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品であって、
    処理回路によって可読であり、かつ請求項1ないし10のいずれかに記載の方法を実行するために前記処理回路によって実行されるように命令を記憶するコンピュータ可読記憶媒体を備える、コンピュータ・プログラム製品。
  22. コンピュータ上で実行されたとき、請求項1ないし10のいずれかに記載の方法を実行するためのソフトウェア・コード部分を備える、コンピュータ可読媒体上に記憶され、かつデジタル・コンピュータの内部メモリにロード可能である、コンピュータ・プログラム。
  23. コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法であって、
    前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
    前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
    を含む、方法。
  24. 前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項16に記載のコンピュータによって実施される方法。
  25. 前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
    前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
    前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
    をさらに含む、請求項16に記載のコンピュータによって実施される方法。
  26. 前記複数の記憶要求を前記獲得することが、
    前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
    を含む、請求項16に記載のコンピュータによって実施される方法。
  27. 前記記憶することが、前記複数のプロセッサの1つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項16に記載のコンピュータによって実施される方法。
JP2020523774A 2017-11-10 2018-11-08 複数のプロセッサによる共有キャッシュ・ラインの同時変更 Active JP7083446B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/809,049 2017-11-10
US15/809,049 US10769068B2 (en) 2017-11-10 2017-11-10 Concurrent modification of shared cache line by multiple processors
PCT/IB2018/058761 WO2019092622A1 (en) 2017-11-10 2018-11-08 Concurrent modification of shared cache line by multiple processors

Publications (2)

Publication Number Publication Date
JP2021502629A true JP2021502629A (ja) 2021-01-28
JP7083446B2 JP7083446B2 (ja) 2022-06-13

Family

ID=66433437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020523774A Active JP7083446B2 (ja) 2017-11-10 2018-11-08 複数のプロセッサによる共有キャッシュ・ラインの同時変更

Country Status (6)

Country Link
US (1) US10769068B2 (ja)
JP (1) JP7083446B2 (ja)
CN (1) CN111279323B (ja)
DE (1) DE112018004636B4 (ja)
GB (1) GB2581753B (ja)
WO (1) WO2019092622A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200054B2 (en) * 2018-06-26 2021-12-14 Intel Corporation Atomic-copy-XOR instruction for replacing data in a first cacheline with data from a second cacheline
US10893120B2 (en) * 2018-09-19 2021-01-12 International Business Machines Corporation Data caching and data-aware placement to accelerate machine learning applications
US11989128B1 (en) * 2022-12-15 2024-05-21 International Business Machines Corporation Invalidity protection for shared cache lines

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04260146A (ja) * 1990-10-31 1992-09-16 Internatl Business Mach Corp <Ibm> データ・アクセス管理装置および方法
JP2000250812A (ja) * 1999-03-01 2000-09-14 Internatl Business Mach Corp <Ibm> メモリ・キャッシュ・システムおよびその管理方法
JP2007323192A (ja) * 2006-05-30 2007-12-13 Toshiba Corp キャッシュメモリ装置および処理方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4136386A (en) 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
US5715428A (en) 1994-02-28 1998-02-03 Intel Corporation Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US6115804A (en) * 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6928525B1 (en) 2000-04-28 2005-08-09 Hewlett-Packard Development Company, L.P. Per cache line semaphore for cache access arbitration
US6748498B2 (en) 2000-06-10 2004-06-08 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method implementing store-conditional memory transactions while an associated directory entry is encoded as a coarse bit vector
US6516393B1 (en) * 2000-09-29 2003-02-04 International Business Machines Corporation Dynamic serialization of memory access in a multi-processor system
US6571322B2 (en) 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US8935483B2 (en) 2009-04-27 2015-01-13 Lsi Corporation Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor
US8195883B2 (en) * 2010-01-27 2012-06-05 Oracle America, Inc. Resource sharing to reduce implementation costs in a multicore processor
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
CN104508645B (zh) * 2012-07-31 2017-08-18 慧与发展有限责任合伙企业 用于使用多个子锁来控制对具有读取器‑写入器锁的共享数据结构的访问的系统和方法
US9417910B2 (en) 2012-12-20 2016-08-16 Oracle International Corporation System and method for implementing shared probabilistic counters storing update probability values
US9092345B2 (en) 2013-08-08 2015-07-28 Arm Limited Data processing systems
US10146690B2 (en) * 2016-06-13 2018-12-04 Intel Corporation Synchronization logic for memory requests

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04260146A (ja) * 1990-10-31 1992-09-16 Internatl Business Mach Corp <Ibm> データ・アクセス管理装置および方法
JP2000250812A (ja) * 1999-03-01 2000-09-14 Internatl Business Mach Corp <Ibm> メモリ・キャッシュ・システムおよびその管理方法
JP2007323192A (ja) * 2006-05-30 2007-12-13 Toshiba Corp キャッシュメモリ装置および処理方法

Also Published As

Publication number Publication date
US20190146916A1 (en) 2019-05-16
CN111279323A (zh) 2020-06-12
DE112018004636B4 (de) 2021-12-30
CN111279323B (zh) 2023-10-31
JP7083446B2 (ja) 2022-06-13
GB2581753A (en) 2020-08-26
DE112018004636T5 (de) 2020-07-16
GB202008687D0 (en) 2020-07-22
GB2581753B (en) 2021-01-06
US10769068B2 (en) 2020-09-08
WO2019092622A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
US10027675B2 (en) Determining virtual adapter access controls in a computing environment
US11016907B2 (en) Increasing the scope of local purges of structures associated with address translation
US10572385B2 (en) Granting exclusive cache access using locality cache coherency state
US10042653B2 (en) Ascertaining configuration of a virtual adapter in a computing environment
US11003452B2 (en) Effectiveness and prioritization of prefetches
JP7083446B2 (ja) 複数のプロセッサによる共有キャッシュ・ラインの同時変更
EP3568754B1 (en) Temporarily suppressing processing of a restrained storage operand request
US10572387B2 (en) Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200519

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210423

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7436

Effective date: 20210603

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20210604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220328

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

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20220502

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220511

R150 Certificate of patent or registration of utility model

Ref document number: 7083446

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150