(57)【要約】【課題】コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法、コンピュータ・システム、コンピュータ・プログラム製品、およびコンピュータ・プログラムを提供する。【解決手段】共有キャッシュ・ラインが、コンピューティング環境の複数のプロセッサによって同時に変更される。同時変更は、データのロックを獲得することも、データの排他的所有権を得ることもなしに、複数のプロセッサが、共有キャッシュ・ラインを同時に更新することを許す１つまたは複数のアーキテクチャ化された命令（非コヒーレント記憶に起因するフェッチ命令）を受信することに少なくとも基づいて実行される。【選択図】図４
2021502629.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法であって、
前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
を含む、方法。
【請求項２】
前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項１に記載の方法。
【請求項３】
前記データが、前記共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を備える、請求項１または２のいずれかに記載の方法。
【請求項４】
前記グローバル共有−変更可能構造が、前記複数のプロセッサのうちの複数のプロセッサによって使用される、請求項３に記載の方法。
【請求項５】
前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
をさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
シリアル化を前記実行することが、
前記共有キャッシュ・ラインに対する未処理の記憶を停止すること、および
前記共有キャッシュ・ラインのデータを同期すること
を含む、請求項５に記載の方法。
【請求項７】
前記フェッチ要求に基づいて、前記共有キャッシュ・ラインの所有権状態を共有−変更可能状態から別の状態に変更することをさらに含む、請求項５または６のいずれかに記載の方法。
【請求項８】
前記別の状態が、前記フェッチ要求に基づいて、排他的または読取り専用である、請求項７に記載の方法。
【請求項９】
前記複数の記憶要求を前記獲得することが、
前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
を含む、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記記憶することが、前記複数のプロセッサの１つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
コンピューティング環境内の処理を容易化するためのコンピュータ・システムであって、
メモリと、
前記メモリと通信状態にある少なくとも１つのプロセッサと
を備え、
前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
を含む方法を実行するように構成される、
コンピュータ・システム。
【請求項１２】
前記方法が、前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項１１に記載のシステム。
【請求項１３】
前記データが、前記共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を備える、請求項１１または１２のいずれかに記載のシステム。
【請求項１４】
前記グローバル共有−変更可能構造が、前記複数のプロセッサのうちの複数のプロセッサによって使用される、請求項１３に記載のシステム。
【請求項１５】
前記方法が、
前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
をさらに含む、請求項１１ないし１４のいずれかに記載のシステム。
【請求項１６】
シリアル化を前記実行することが、
前記共有キャッシュ・ラインに対する未処理の記憶を停止すること、および
前記共有キャッシュ・ラインのデータを同期すること
を含む、請求項１５に記載のシステム。
【請求項１７】
前記方法が、前記フェッチ要求に基づいて、前記共有キャッシュ・ラインの所有権状態を共有−変更可能状態から別の状態に変更することをさらに含む、請求項１５または１６のいずれかに記載のシステム。
【請求項１８】
前記別の状態が、前記フェッチ要求に基づいて、排他的または読取り専用である、請求項１７に記載のシステム。
【請求項１９】
前記複数の記憶要求を前記獲得することが、
前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
を含む、請求項１１ないし１８のいずれかに記載のシステム。
【請求項２０】
前記記憶することが、前記複数のプロセッサの１つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項１１ないし１９のいずれかに記載のシステム。
【請求項２１】
コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品であって、
処理回路によって可読であり、かつ請求項１ないし１０のいずれかに記載の方法を実行するために前記処理回路によって実行されるように命令を記憶するコンピュータ可読記憶媒体を備える、コンピュータ・プログラム製品。
【請求項２２】
コンピュータ上で実行されたとき、請求項１ないし１０のいずれかに記載の方法を実行するためのソフトウェア・コード部分を備える、コンピュータ可読媒体上に記憶され、かつデジタル・コンピュータの内部メモリにロード可能である、コンピュータ・プログラム。
【請求項２３】
コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法であって、
前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
を含む、方法。
【請求項２４】
前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項１６に記載のコンピュータによって実施される方法。
【請求項２５】
前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
をさらに含む、請求項１６に記載のコンピュータによって実施される方法。
【請求項２６】
前記複数の記憶要求を前記獲得することが、
前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
を含む、請求項１６に記載のコンピュータによって実施される方法。
【請求項２７】
前記記憶することが、前記複数のプロセッサの１つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項１６に記載のコンピュータによって実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様が、一般に、コンピューティング環境内の処理に関し、詳細には、そのような処理を容易化することに関する。
【背景技術】
【０００２】
コンピューティング環境内の処理は、データを読み取るべく、または記憶すべく、メイン・メモリおよびメモリ・キャッシュを含むメモリにアクセスすることを含む。そのようなデータを更新することは、更新されるべきデータにアクセスを有する複数のプロセッサを含むコンピューティング環境において複雑である。そのようなマルチプロセッサ・コンピューティング環境において、コンピュータ・ハードウェアが、フィールドの現在の値をフェッチした後、フィールドを新たな値に更新しようと試みる、コンペア・アンド・スワップ（ＣＳ）命令などのアトミック更新命令を有することが普通である。その他のプロセッサが同時に同一の機能を実行するのを阻止しながら、コンペアは、古い値を現在の値と比較する。古い値が現在の値と等しい場合、現在の値は、新たな値で置き換えられる。古い値が現在の値と等しくはない場合、新たな値は記憶されず、値が更新されなかったことが条件コードを介してユーザに知らされ、処理は、現在の値を操作すべくループバックする。
【０００３】
コンペア・アンド・スワップがフィールドを比較し、更新するために、コンペア・アンド・スワップは、フィールドをローカル・プロセッサのプライベート・キャッシュに運び入れ、その他のプロセッサのプライベート・キャッシュからそのフィールドを無効にする。このことは、パフォーマンスを低下させるアドレス遅延を生じさせる。フィールドが頻繁に更新されるほど、低下が大きくなる。
【０００４】
このオーバヘッドを最小限に抑える１つのアプローチは、プロセッサの間の競合を取り除く、カウンタなどの一意の個別のプロセッサ関連のフィールドを更新することである。現在の値は、リーダ・プログラムまたは監視プログラムによって周期的に要求され、その要求に基づいて、値が集約され、結果がもたらされる。このことが、オーバヘッドを大幅に低減する。しかし、このことは、複雑さを増加させ、カウンタが既に存在しており、プロセッサ関連の値を集約するサービスを提供することが、不可能ではなくても、現実的ではない事例が存在する。
【０００５】
したがって、前述した問題に対処する必要性が当技術分野に存在する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ  Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．ＳＡ２２−７８３２−１０、２０１５年３月
【非特許文献２】「Ｐｏｗｅｒ  ＩＳＡ（ＴＭ）  Ｖｅｒｓｉｏｎ  ２．０７Ｂ」、インターナショナル・ビジネス・マシーンズ・コーポレーション、２０１５年４月９日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法、コンピュータ・システム、コンピュータ・プログラム製品、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００８】
第１の態様から見て、本発明は、コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法を提供し、方法が、コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、複数の記憶要求が、同時記憶タイプのものである、獲得すること、および複数の記憶要求に基づいて、共有キャッシュ・ラインにデータを同時に記憶することを含む。
【０００９】
さらなる態様から見て、本発明は、コンピューティング環境内の処理を容易化するためのコンピュータ・システムを提供し、コンピュータ・システムが、メモリと、メモリと通信状態にある少なくとも１つのプロセッサとを備え、コンピュータ・システムが、方法を実行するように構成され、方法が、コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、複数の記憶要求が、同時記憶タイプのものである、獲得すること、および複数の記憶要求に基づいて、共有キャッシュ・ラインにデータを同時に記憶することを含む。
【００１０】
さらなる態様から見て、本発明は、コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品が、処理回路によって可読であり、本発明のステップを実行するための方法を実行するために処理回路によって実行されるように命令を記憶するコンピュータ可読記憶媒体を備える。
【００１１】
さらなる態様から見て、本発明は、コンピュータ可読媒体上に記憶され、デジタル・コンピュータの内部メモリにロード可能であるコンピュータ・プログラムであって、プログラムがコンピュータ上で実行されたとき、本発明のステップを実行するためのソフトウェア・コード部分を備えるコンピュータ・プログラムを提供する。
【００１２】
コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品の提供を通じて、従来技術の欠点が克服され、さらなる利点がもたらされる。コンピュータ・プログラム製品は、処理回路によって可読であり、方法を実行するための命令を記憶するコンピュータ可読記憶媒体を含む。方法は、例えば、コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することを含む。複数の記憶要求は、同時記憶タイプのものである。複数の記憶要求に基づいて、データが、共有キャッシュ・ラインに同時に記憶される。共有キャッシュ・ラインの同時の更新を許すことによって、処理が容易化され、複雑さが低減され、パフォーマンスが向上させられる。
【００１３】
一実施形態において、共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態が、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定される。
【００１４】
例として、データは、共有キャッシュ・ラインにおいて保持されるグローバル共有−変更可能構造に対する更新を含む。グローバル共有−変更可能構造は、複数のプロセッサのうちの複数のプロセッサによって使用される。
【００１５】
さらなる態様において、共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求が、獲得される。フェッチ要求は、同時記憶タイプとは異なる。フェッチ要求に基づいて、共有キャッシュ・ラインに対してシリアル化が実行される。シリアル化を完了することに基づいて、データは、共有キャッシュ・ラインから読み取られる。複数のプロセッサによる同時の更新を許すべく定義された要求ではなく、フェッチ要求に基づいてシリアル化を実行することによって、遅延が低減され、パフォーマンスが向上させられる。
【００１６】
シリアル化を実行することは、例えば、共有キャッシュ・ラインに対する未処理の記憶を停止すること、および共有キャッシュ・ラインのデータを同期することを含む。
【００１７】
さらに、一実施例において、フェッチ要求に基づいて、共有キャッシュ・ラインの所有権状態が、共有−変更可能から別の状態に変更される。その別の状態は、例えば、フェッチ要求に基づいて排他的である、または読取り専用である。
【００１８】
一実施例において、複数の記憶要求を獲得することは、複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することを含む。非コヒーレント記憶に起因するフェッチ要求は、共有キャッシュ・ラインに対する阻止のない（ｎｏｎ−ｂｌｏｃｋｉｎｇ）変更を許すようにアーキテクチャ上、定義される。
【００１９】
さらに、一実施例において、記憶することは、複数のプロセッサの１つまたは複数のプライベート・キャッシュにデータを記憶することなしに、共有キャッシュ・ラインに直接にデータを記憶することを含む。
【００２０】
また、１つまたは複数の態様と関係するコンピュータによって実施される方法、およびシステムについても、本明細書において説明され、請求される。さらに、１つまたは複数の態様と関係するサービスについても、本明細書で説明され、請求されることが可能である。
【００２１】
さらなる特徴および利点が、本明細書において説明される技術を通じて実現される。他の実施形態および態様が、本明細書において詳細に説明され、請求される態様の一部分と見なされる。
【００２２】
１つまたは複数の態様が、本明細書の結びにおける特許請求の範囲において実施例として特に指摘され、明確に請求される。以上、ならびに１つまたは複数の態様の目的、特徴、および利点が、添付の図面と併せて解釈される後段の詳細な説明から明白となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の１つまたは複数の態様を組み込み、使用するコンピューティング環境の一実施例を示す図である。
【図２】本発明の１つまたは複数の態様による、図１のコンピュータ・システムによって使用されるメモリ階層のさらなる詳細を示す図である。
【図３】排他的フェッチ操作に関連する処理の一実施例を示す図である。
【図４】本発明の１つまたは複数の態様による、非コヒーレント操作に起因するフェッチに関連する処理の一実施例を示す図である。
【図５】本発明の１つまたは複数の態様による、同時でない操作に起因するフェッチに関連する処理の別の実施例を示す図である。
【図６】本発明の１つまたは複数の態様による、非コヒーレントに起因するフェッチ要求を処理することに関連するさらなる詳細を示す図である。
【図７】本発明の態様による、コンピューティング環境内の処理を容易化する一実施形態を示す図である。
【図８】本発明の態様による、コンピューティング環境内の処理を容易化する一実施形態を示す図である。
【図９】本発明の１つまたは複数の態様を組み込み、使用するコンピューティング環境の別の実施例を示す図である。
【図１０】図９のメモリのさらなる詳細を示す図である。
【図１１】クラウド・コンピューティング環境の一実施形態を示す図である。
【図１２】抽象モデル層の一実施例を示す図である。
【発明を実施するための形態】
【００２４】
本発明の態様によれば、コンピューティング環境の複数のプロセッサ（コアとも呼ばれる）によって共有キャッシュ・ラインを同時に変更する能力が提供される。複数のプロセッサが、データもしくはフィールドのロックを獲得することも、排他的所有権を得ることもなしに、カウンタなどの、データもしくはフィールドにアクセスし、データもしくはフィールドを更新することが可能である。
【００２５】
一実施例において、能力は、頻繁に更新されるが、読み取られる頻度の低い、カウンタなどのデータもしくはフィールドを更新するのに使用されてよい、非コヒーレント記憶に起因するフェッチ（ＦＮＣ）命令と本明細書において呼ばれる、阻止のないアトミック・コンペア・アンド・スワップ命令を含む。命令は、例えば、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）などのアーキテクチャによって定義されるハードウェア命令である。命令は、ローカルの、プライベート・キャッシュにデータを運び込む必要も、比較ミスを繰り返す必要もなしに、したがって、更新時のオーバヘッドの多くを解消して、データ、例えば、カウントを非同期でインクリメントする、またはデクリメントする。非コヒーレント記憶に起因するフェッチ命令を使用して、共有キャッシュにおけるキャッシュ・ラインが、変更の意図でフェッチされ、データが、例えば、従来のＭＥＳＩコヒーレンス規則またはｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）コヒーレンス規則の下で非コヒーレント様態で動作する、１つまたは複数のプロセッサによって同時に変更されることが可能である。
【００２６】
本発明の１つまたは複数の態様を組み込み、使用するコンピューティング環境の一実施形態が、図１を参照して説明される。一実施例において、コンピューティング環境は、ＩＢＭ（Ｒ）ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態が、「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ  Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．ＳＡ２２−７８３２−１０、２０１５年３月において説明される。
【００２７】
別の例において、コンピューティング環境は、ＩＢＭ（Ｒ）Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態が、「Ｐｏｗｅｒ  ＩＳＡ（ＴＭ）  Ｖｅｒｓｉｏｎ  ２．０７Ｂ」、インターナショナル・ビジネス・マシーンズ・コーポレーション、２０１５年４月９日において説明される。ＩＢＭ（Ｒ）、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）、およびＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）は、世界中の多くの管轄区域において登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
【００２８】
また、コンピューティング環境は、Ｉｎｔｅｌ（Ｒ）ｘ８６アーキテクチャ、またはＱｕａｌｃｏｍｍ  Ｓｎａｐｄｒａｇｏｎ（Ｒ）アーキテクチャを含むが、以上には限定されない他のアーキテクチャに基づいてもよい。また、他の実施例も存在する。Ｉｎｔｅｌ（Ｒ）は、米国、および他の国々におけるインテル・コーポレーション、またはその子会社の商標または登録商標である。
【００２９】
図１に示されるとおり、コンピューティング環境１００は、例えば、汎用コンピューティング・デバイスの形態で示される、例えば、コンピュータ・システム１０２を含む。コンピュータ・システム１０２は、１つもしくは複数のバスまたは他の接続１１０、あるいはその両方を介して互いに結合された、１つまたは複数のプロセッサ、処理ユニットもしくは処理コア１０４（例えば、中央処理装置（ＣＰＵ））、メモリ１０６（別名、例として、システム・メモリ、メイン・メモリ、メイン・ストレージ、中央ストレージ、またはストレージ）、および１つまたは複数の入出力（Ｉ／Ｏ）インターフェース１０８を含んでよいが、以上には限定されない。
【００３０】
バス１１０は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスもしくはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサ・バスもしくはローカル・バスを含む、いくつかのタイプのバス構造のいずれかの１つまたは複数を表す。例として、限定としてではなく、そのようなアーキテクチャは、インダスリ・スタンダード・アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）を含む。
【００３１】
メモリ１０６は、例えば、プロセッサ１０４のローカル・キャッシュ１２２に結合されてよい、共有キャッシュなどのキャッシュ１２０を含んでよい。さらに、メモリ１０６は、１つまたは複数のプログラムもしくはアプリケーション１３０と、オペレーティング・システム１３２と、１つまたは複数のコンピュータ可読プログラム命令１３４とを含んでよい。コンピュータ可読プログラム命令１３４は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００３２】
また、コンピュータ・システム１０２は、例えば、Ｉ／Ｏインターフェース１０８を介して、１つもしくは複数の外部デバイス１４０、１つもしくは複数のネットワーク・インターフェース１４２、または１つもしくは複数のデータ・ストレージ・デバイス１４４、あるいはその組合せと通信してもよい。例示的な外部デバイスは、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイ、その他を含む。ネットワーク・インターフェース１４２は、コンピュータ・システム１０２が、他のコンピューティング・デバイスもしくはコンピューティング・システムとの通信を提供する、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組合せなどの１つもしくは複数のネットワークと通信することを可能にする。
【００３３】
データ・ストレージ・デバイス１４４は、１つもしくは複数のプログラム１４６、１つもしくは複数のコンピュータ可読プログラム命令１４８、またはデータ、あるいはその組合せ、その他を記憶してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００３４】
コンピュータ・システム１０２は、取外し可能な／取外し可能でない、揮発性／不揮発性のコンピュータ・システム記憶媒体を含んでよく、またはそのような媒体に結合されてよく、あるいはその両方が行われてよい。例えば、コンピュータ・システム１０２は、取外し可能でない、不揮発性の磁気媒体（通常、「ハードドライブ」と呼ばれる）、取外し可能な、不揮発性の磁気ディスク（例えば、「フロッピ・ディスク」）から読み取るため、およびそのようなディスクに書き込むための磁気ディスク・ドライブ、またはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、もしくは他の光媒体などの取外し可能な、不揮発性の光ディスクから読み取るため、およびそのようなディスクに書き込むための光ディスク・ドライブ、あるいはその組合せを含んでよく、またはそのような媒体に結合されてよく、あるいはその両方が行われてよい。他のハードウェア構成要素またはソフトウェア構成要素、あるいはその両方が、コンピュータ・システム１０２と併せて使用されることが可能であることを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長な処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライバ、およびデータ・アーカイブ・ストレージ・システム、その他を含むが、以上には限定されない。
【００３５】
コンピュータ・システム１０２は、他の多数の汎用または専用のコンピューティング・システム環境またはコンピューティング・システム構成で動作可能であり得る。コンピュータ・システム１０２と一緒に使用するのに適することが可能なよく知られたコンピューティング・システム、コンピューティング環境、またはコンピューティング構成、あるいはその組合せの例は、パーソナル・コンピュータ（ＰＣ）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップ・ボックス、プログラマブル家庭用電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、ならびに以上のシステムもしくはデバイスのいずれかを含む分散クラウド・コンピューティング環境、およびそれに類するものを含むが、以上には限定されない。
【００３６】
プロセッサ１０４、およびプロセッサによって使用されるメモリ階層に関するさらなる詳細が、図２を参照して説明される。一実施例において、コンピュータ・システム１０２は、複数のプロセッサまたはコア１０４を含む。この実施例において、３つのコア、コア０、１、および２が示されるが、コンピュータ・システムは、本明細書において説明されるのと比べて、より多くのコアを有しても、より少ないコアを有してもよい。各コアは、プライベート・ローカル・キャッシュ１２２を有する。ローカル・キャッシュ１２２は、例えば、Ｌ１キャッシュ２００と、Ｌ２キャッシュ２０２とを含む。他の構成も可能である。
【００３７】
ローカル・キャッシュ１２２は、プロセッサ１０４によって使用されるメモリ階層の一部である。メモリ階層は、複数のプロセッサ１０４によってアクセス可能である共有キャッシュ１２０（例えば、Ｌ３キャッシュ）と、メイン・メモリ１０６とをさらに含む。また、メモリ階層は、他の実施形態において、その他のキャッシュもしくはキャッシュ・レベル、または異なるキャッシュもしくはキャッシュ・レベル、あるいはその組合せを含んでもよい。
【００３８】
プロセッサ、メイン・メモリ、およびキャッシュ・メモリの間のデータの転送は、例えば、キャッシュ・コントローラ２０６によって制御される。
【００３９】
共有キャッシュ１２０（および一般にメモリ）は、ＭＥＳＩプロトコルなどのキャッシュ・コヒーレンス・プロトコルの下で動作してよい。ＭＥＳＩプロトコルは、ライトバック・キャッシュをサポートする、無効化ベースのキャッシュ・コヒーレンス・プロトコルである。ＭＥＳＩという頭字語における文字は、キャッシュ・ラインに印が付けられる（例えば、２ビットを使用して符号化される）ことが可能な４つの排他的状態を表す。
【００４０】
変更済み（Ｍ）：キャッシュ・ラインは、現在のキャッシュ内だけに存在し、ダーティ（ｄｉｒｔｙ）である（すなわち、メイン・メモリにおける値から変更されている（Ｍ状態））。キャッシュは、将来の何らかの時点でメイン・メモリにデータをライトバックしてから、（もはや有効でない）メイン・メモリ状態の他の任意の読取りを許す。ライトバックは、ラインを共有状態（Ｓ）に変更する。
【００４１】
排他的（Ｅ）：キャッシュ・ラインは、現在のキャッシュ内だけに存在するが、クリーンである（すなわち、キャッシュ・ラインは、メイン・メモリと合致する）。キャッシュ・ラインは、読取り要求に応答して、任意の時点で共有状態に変更されてよい。代替として、キャッシュ・ラインは、キャッシュ・ラインに書き込むとき、変更済み状態に変更されてよい。
【００４２】
共有（Ｓ）：このキャッシュ・ラインが、マシンの他のキャッシュに記憶されてよく、クリーンである、すなわち、このラインがメイン・メモリと合致することを示す。このラインは、任意の時点で破棄されて（無効状態に変更されて）よい。
【００４３】
無効（Ｉ）：このキャッシュ・ラインが無効である（使用されない）ことを示す。
【００４４】
ＭＥＳＩプロトコルを使用することの一実施例が、図３を参照して説明される。図３のシナリオにおいて、排他的フェッチが、様々な時点、すなわち、Ｔ０＜Ｔ１＜Ｔ２である、時刻Ｔ０、時刻Ｔ１、および時刻Ｔ２において異なる３つのプロセッサまたはコアによって実行される。排他的フェッチは、キャッシュ・ラインの内容を変更することを意図するプロセッサ・フェッチである。一実施例において、共有キャッシュにおけるグローバル・カウンタが、変更される。
【００４５】
図３を参照すると、一実施例において、時刻Ｔ０において、コア０が、コア０のローカル・キャッシュＬ１、Ｌ２におけるキャッシュ・ミスに起因して、共有キャッシュ１２０におけるキャッシュ・ラインＡに対して排他的フェッチ３００を実行する。共有キャッシュ１２０（Ｌ３）にキャッシュ・ヒットが存在し、それ故、コア０が、共有キャッシュ・ラインの排他的所有権を受け取る。キャッシュ・ラインの排他的所有権を受け取ることに基づいて、コア０は、今や、キャッシュ・ラインＡに記憶することができる（例えば、１つの記憶、ホット・グローバル・カウンタ）。その記憶を実行すべく、コア０は、キャッシュ・ラインＡをコア０のローカル・キャッシュ（Ｌ１またはＬ２、あるいはその両方）に記憶する（すなわち、値／データを記憶する）ために、キャッシュ・ラインＡをコア０に運び戻すことを開始する。
【００４６】
時刻Ｔ１において、コア１が、コア１のローカル・キャッシュＬ１、Ｌ２におけるキャッシュ・ミスに起因して、共有キャッシュ１２０におけるキャッシュ・ラインＡに対する排他的フェッチ３０２を実行する。共有キャッシュ１２０（Ｌ３）にキャッシュ・ヒットが存在し、それ故、ＭＥＳＩコヒーレンス・プロトコルに起因して、コア０がキャッシュ・ラインＡの所有権を放棄することを要求すべくクロス無効化（ＸＩ）３０４要求がコア０に送信される。言い換えると、コア０は、キャッシュ・ラインＡと関係するローカル・キャッシュにおけるデータの前のコピーを無効にするクロス無効化（ＸＩ）を受信する。コア０は、共有キャッシュ１２０から運び込まれたキャッシュ・ラインＡの値が、ローカル・キャッシュ（Ｌ１またはＬ２、あるいはその両方）における前の値と比較されるようにコンペア・アンド・スワップを実行する過程にあり、キャッシュ・ラインＡの値とローカル・キャッシュの値が異なる場合、キャッシュ・ラインＡの値は、コア０のローカル・キャッシュに記憶される。しかし、コア１が、今や、コア０から共有キャッシュ１２０におけるキャッシュ・ラインＡの排他的所有権を奪取しているため、コア０のローカル・キャッシュに記憶が行われることは可能でなく、それ故、コンペア・アンド・スワップ手続きは、失敗する（すなわち、コンペア・アンド・スワップは、完了前に中断されており、したがって、記憶は、行われない）。
【００４７】
時刻Ｔ２において、コア２が、コア２のローカル・キャッシュＬ１、Ｌ２におけるキャッシュ・ミスに起因して、共有キャッシュ１２０におけるキャッシュ・ラインＡに対する排他的フェッチ３０６を実行する。共有キャッシュ１２０（Ｌ３）にキャッシュ・ヒットが存在し、それ故、ＭＥＳＩコヒーレンス・プロトコルに起因して、プロセッサがキャッシュ・ラインＡの所有権を放棄することを要求すべくクロス無効化（ＸＩ）３０８要求がコア１に送信される。言い換えると、コア１は、キャッシュ・ラインＡと関係するローカル・キャッシュにおけるデータの前のコピーを無効にするクロス無効化（ＸＩ）３０８を受信する。コア１は、共有キャッシュ１２０から運び込まれたキャッシュ・ラインＡの値が、ローカル・キャッシュ（Ｌ１またはＬ２、あるいはその両方）における前の値と比較されるようにコンペア・アンド・スワップを実行する過程にあり、キャッシュ・ラインＡの値とローカル・キャッシュの値が異なる場合、キャッシュ・ラインＡの値は、コア１のローカル・キャッシュに記憶される。しかし、コア２が、今や、コア１から共有キャッシュ１２０の排他的所有権を奪取しているため、コア１のローカル・キャッシュに記憶が行われることは可能でなく、それ故、コンペア・アンド・スワップ手続きは、失敗する（すなわち、コンペア・アンド・スワップは、完了前に中断されており、したがって、記憶は、行われない）。コア２が、コア２の要求される更新を続ける。
【００４８】
前述のシナリオを参照して説明されるとおり、１つのプロセッサが共有キャッシュ・ラインを更新している間、その他のプロセッサは、阻止されており（例えば、ロックを介して、またはアトミック操作を介して、あるいはその両方を介して）、その結果、キャッシュ・コヒーレンスをもたらす。キャッシュ・コヒーレンスは、複数のローカル・キャッシュに記憶された共有されるリソース・データの一様性、およびシステム内のプロセッサが見ることができるキャッシュ・データの整合性である。
【００４９】
しかし、本発明の１つまたは複数の態様によれば、阻止することなしに、コヒーレンスおよび可視のデータ整合性を確実にしながら、複数のコアが、キャッシュ・ラインの内容を同時に変更することを可能にする新たなタイプのキャッシュ・ディレクトリ状態（例えば、新たなＭＥＳＩ状態）、および新たなフェッチ・タイプが提供される。この新たなディレクトリ状態は、ＭＥＳＩプロトコルの脈絡において共有−変更可能またはフェッチ非コヒーレント（Ｘ）と呼ばれ、フェッチ操作は、「非コヒーレント記憶に起因するフェッチ（Ｆｅｔｃｈ  ｄｕｅ  ｔｏ  Ｎｏｎ−Ｃｏｈｅｒｅｎｔ  Ｓｔｏｒｅ）」と呼ばれる。キャッシュ・ラインが、記憶に関して共有−変更可能状態またはフェッチ非コヒーレント状態に置かれた場合、コヒーレンスは、依然としてもたらされるが、可視のコヒーレンスは、不明瞭になる。プロセッサから見て、プロセッサは、キャッシュ・ラインに記憶してよいが、プロセッサは、更新されている内容を検査しない。例えば、キャッシュ・ラインの値が、インクリメントされる／デクリメントされる、または増倍されるなどするが、このことは、その特定の時点における値を知ることなしに盲目に行われる。プロセッサが、データを見ること（例えば、非コヒーレントに起因するフェッチではないフェッチ）を所望する場合、シリアル化が、そのフェッチに先立って実行される。
【００５０】
前述したとおり、ＭＥＳＩプロトコルにおいて、キャッシュ・ラインは、以下の状態のうちの１つ、すなわち、変更済み状態、排他的状態、共有状態、または無効状態に存在する。排他的状態および共有状態には、排他的／読取り専用フェッチがキャッシュ・アドレスにアクセスすることによって入り、変更済みは、プロセッサ記憶が後に続く排他的フェッチを使用し、無効は、ラインを引き離すチップ／キャッシュを有する、または初期ディレクトリ状態である。各状態遷移とともに、キャッシュ・ラインに対する変更が、コヒーレンスを確実にすべくメモリにライトバックされる。
【００５１】
共有−変更可能状態またはフェッチ非コヒーレント（Ｘ）状態の追加とともに、キャッシュ・ラインは、１つまたは複数のコアが、例えば、グローバル共有−変更可能構造の値（例えば、一般的なデバッグ・カウンタ、その他のカウンタ、またはロック）をインクリメントすること／デクリメントすることなどの一般的な操作、および他のより複雑な操作のために、キャッシュ・ラインに同時に記憶していることが可能である状態に存在しているものと認識されることが可能である。同時の記憶とともに、１つのコアが、プライベート・キャッシュからの変更要求を、キャッシュ・ラインに関連付けられたデータに対する変更が行われる共有キャッシュ・レベルにプッシュすることによって、別のコアがその別のコアの記憶を完了する前に、キャッシュ・ラインに対する記憶を開始してよい。
【００５２】
本発明の１つまたは複数の態様による、フェッチ非コヒーレント操作を含む更新されたＭＥＳＩプロトコルを使用するシナリオの一実施例が、図４を参照して説明される。Ｔ０＜Ｔ１＜Ｔ２である、時刻Ｔ０、時刻Ｔ１、および時刻Ｔ２が、例示される。
【００５３】
時刻Ｔ０において、コア０が、共有キャッシュ１２０におけるキャッシュ・ラインＡに対して非コヒーレント記憶に起因するフェッチ（ＦＮＣ）命令４００を実行する。フェッチ非コヒーレント要求に基づいて、コア０に、キャッシュ・ラインＡに対するアクセスが与えられ、コア０が、この実施例において、ターゲット・キャッシュの内容を更新するために共有キャッシュ・レベルに対して読取り／変更／書込み操作（例えば、インクリメント／デクリメント）を発行することを可能にする。さらに、ＦＮＣ操作は、１つまたは複数のコアがその後、共有キャッシュ・ラインに同時に記憶することを可能にするキャッシュ・ディレクトリ状態（共有−変更可能またはフェッチ非コヒーレント）を設定する。非コヒーレントに起因するフェッチは、プロセッサから見て可視のキャッシュ・ライン・コヒーレンスおよびデータ整合性を維持しながら、複数のコアがキャッシュ・ラインに記憶することを許す。同時の更新／変更は、従来のアーキテクチャにおけるシリアル化ペナルティをマスクすることに起因して、より小さいオーバヘッドで可能にされる。
【００５４】
時刻Ｔ１において、コア１が、共有キャッシュ１２０におけるキャッシュ・ラインＡに対して非コヒーレント記憶に起因するフェッチ命令４０２を実行する。そのラインは、フェッチ非コヒーレント状態を有するので、コア１は、コア０にクロス無効化が発行されることなしに、共有キャッシュ・ラインを更新してもよい。コア０とコア１の両方からの複数の記憶が、介在する同時でない記憶タイプ・フェッチ（例えば、フェッチ非コヒーレント記憶でないフェッチ）がまったく行われないという条件付きで、キャッシュ・ラインＡに対して発行されてよい。
【００５５】
時刻Ｔ２において、コア２が、共有キャッシュ・ライン１２０におけるキャッシュ・ラインＡに対して非コヒーレントに起因するフェッチ命令４０４を実行する。そのラインは、フェッチ非コヒーレント状態を有するので、コア２は、コア１（またはコア０）にクロス無効化が発行されることなしに、共有キャッシュ・ラインを更新してもよい。
【００５６】
非コヒーレントに起因するフェッチ操作のそれぞれにおいて、共有キャッシュ・ラインは、ローカルのプライベート・キャッシュのいずれにもデータを運び込むことなしに、更新される。
【００５７】
非コヒーレントに起因するフェッチ操作を使用することの別の実施例が、図５を参照して説明される。この実施例において、時刻Ｔ０において、コア０が、共有キャッシュ・ラインＡに関して排他的フェッチ５００を発行する。次に、時刻Ｔ１において、コア１が、共有キャッシュ・ラインＡに関して非コヒーレントに起因するフェッチ命令５０２を発行する。コア０が、キャッシュ・ラインＡの排他的所有権を、共有−変更可能所有権またはフェッチ非コヒーレント所有権の代わりに有するので、所有権を排他的から共有−変更可能またはフェッチ非コヒーレントに格下げするクロス無効化５０４がコア０に対して発行される。それ故、コア０とコア１の両方が、共有キャッシュ・ラインＡを更新することができる。
【００５８】
時刻Ｔ２において、コア２が、共有キャッシュ１２０におけるキャッシュ・ラインＡに対して非コヒーレントに起因するフェッチ命令５０６を実行する。そのラインは、フェッチ非コヒーレント状態を有するので、コア２は、共有キャッシュ・ラインを更新してもよい。
【００５９】
時刻Ｔ３において、コア０が、コア０が共有キャッシュ・ラインＡの排他的所有権を所望すると判定する。したがって、コア０は、共有キャッシュ・ラインに関して排他的フェッチ５１０を発行する。排他的フェッチ５１０に基づいて、クロス無効化５１２、５１４が、それぞれ、コア１およびコア２に対して発行される。排他的フェッチに基づいて、記憶が共有キャッシュにおいてマージされ、更新された値が、コア０に戻される。例えば、その他のコアに対するクロス無効化が、それらのコアがキャッシュ・ラインに記憶するのを止めるべきことをそれらのコアに知らせるのに使用される。すべての未処理の記憶は、Ｌ３キャッシュにドレインされることになり、完了する。その時点の後、排他的フェッチを発行するプロセッサには、キャッシュ・ラインの更新されたバージョンが戻されることが可能である。
【００６０】
本明細書において説明されるとおり、複数のプロセッサが、共有キャッシュ・ラインに対して同時の書込みアクセスを有し、このことが、クロス無効化およびシリアル化オーバヘッドの必要性を解消して、コンピューティング環境内の処理を容易化する。このことが、例えば、書込みが頻繁で、読取りの頻度が低い使用事例に関して使用される。
【００６１】
共有キャッシュ・ラインの同時の変更と関係するさらなる詳細が、図６を参照して説明される。第１のプロセッサまたはコアが、共有キャッシュ・ラインＡをターゲットとする所与のキャッシュ・レベル（例えば、Ｌ３）に「非コヒーレント記憶に起因するフェッチ」要求を送信する、ステップ６００。キャッシュ・レベルが、フェッチ要求の受信に基づいて、ターゲットにされたキャッシュ・ラインに関するキャッシュ・ディレクトリ状態を共有−変更可能またはフェッチ非コヒーレントに設定する、ステップ６０２。さらに、キャッシュ・ラインに関連付けられたデータが、要求するプロセッサに戻されてよく、または初期状態が関係ないものとすると、フェッチ応答が、要求するプロセッサに戻されてよい、ステップ６０４。プロセッサは、キャッシュ・ラインに記憶することを始め、ステップ６０６、ここにおいて、更新された値（または、例えば、インクリメントされるべき／デクリメントされるべき量）が、読取り−変更−書込み更新のために共有キャッシュに送信される。更新は、共有キャッシュ（例えば、Ｌ３キャッシュ）に直接に送信され、プライベート・キャッシュ（例えば、Ｌ１キャッシュ、Ｌ２キャッシュ）には書き込まれない。
【００６２】
さらなる１つまたは複数のプロセッサが、その後、共通の、共有キャッシュ・ラインを更新する許可を獲得すべく「非コヒーレント記憶に起因するフェッチ」要求を送信する、ステップ６０８。キャッシュ・レベルが、そのさらなるフェッチ要求の受信に基づいて、複数の所有権を示すべくキャッシュ・ディレクトリを更新し、ステップ６１０、キャッシュ・ラインに関連付けられたデータのコピー、または単純なフェッチ応答を戻す、ステップ６１２。さらなるコアは、その後、キャッシュ・ラインに直接に記憶を送信する（プライベート・キャッシュに記憶することなしに）、ステップ６１４。記憶値は、例えば、キャッシュ・レベルが読取り−変更−書込み操作としてキャッシュ・データ内容を更新するのに使用するインクリメント／デクリメント・オフセット値を示す。
【００６３】
キャッシュ・ラインに対する参照（例えば、「非コヒーレント記憶に起因するフェッチ」要求以外のフェッチ・タイプ）の受信、ステップ６１６に基づいて、キャッシュ・レベルは、プロセッサが、キャッシュ・ラインに関連付けられたデータの値を検査しようとしていることを検出し、キャッシュ・ラインに対するクロス無効化要求のセットを生成して、キャッシュ・ラインに記憶することを止めるようキャッシュ・レベルにアタッチされたコアを強制する、ステップ６１８。キャッシュ・ラインの共有−変更可能所有権またはフェッチ非コヒーレント所有権を有するコアから無効化要求を受信することに基づいて、キャッシュ・レベルは、キャッシュ・ラインに関連付けられたデータの内容を検査することを意図するプロセッサによってキャッシュ・レベルに送り込まれたフェッチ操作のタイプに基づいて、要求するプロセッサに対して読取り専用または排他的としてディレクトリ状態を更新する、ステップ６２０。それ故、フェッチ非コヒーレント記憶要求以外の要求を受信することに基づいて、未処理の記憶が停止され、キャッシュ内容が同期され、結果の値が要求するプロセッサに戻されるシリアル化が実行される。
【００６４】
このプロセスを容易化すべく、キャッシュ・レベルは、それらの操作の扱いを迅速化する短いＲＭＷ（読取り、変更、書込み）バッファを有して、所与のキャッシュ・レベルにおけるパイプラインの深度の２倍によって考えられるのと比べて、より頻繁な記憶操作を可能にしてよい。
【００６５】
以上のことに基づいて、一実施例において、複数のコアが、プライベート・キャッシュにカウンタ値を運び込むことなしに、同一のキャッシュ・ライン、例えば、キャッシュ・ラインにおける同一のソフトウェア・カウンタまたは異なるソフトウェア・カウンタに同時に記憶してよい。複数のプロセッサが、共有−変更可能状態またはフェッチ非コヒーレント・ディレクトリ状態を介してデータ完全性を確実にしながら、単一のキャッシュ・ラインに対する書込みアクセスを同時に維持することが可能である。クロス無効化は、使用されず、シリアル化オーバヘッドが低減される。それ故、コンピューティング環境内のパフォーマンスが向上させられることが可能である。
【００６６】
本発明の１つまたは複数の態様は、コンピュータ技術と密接に結び付いており、コンピュータ内の処理を容易化して、コンピュータのパフォーマンスを向上させる。本発明の１つまたは複数の態様と関係する、コンピューティング環境内の処理を容易化することの一実施形態のさらなる詳細が、図７〜図８を参照して説明される。
【００６７】
図７を参照すると、一実施形態において、共有キャッシュ・ラインに記憶する複数の記憶要求が、コンピューティング環境の複数のプロセッサから獲得される（７００）。複数の記憶要求は、同時記憶タイプのものである（７０１）。複数の記憶要求に基づいて、データが、共有キャッシュ・ラインに同時に記憶される（７０２）。さらに、一実施形態において、共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態が、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定される（７０４）。
【００６８】
例として、データは、共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を含む（７０６）。グローバル共有−変更可能構造は、複数のプロセッサのうちの複数のプロセッサによって使用される（７０８）。
【００６９】
さらなる態様において、共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求が獲得される（７１０）。フェッチ要求は、同時記憶タイプとは異なる（７１１）。フェッチ要求に基づいて、共有キャッシュ・ラインに関してシリアル化が実行され（７１２）、シリアル化を完了することに基づいて、データは、共有キャッシュ・ラインから読み取られる（７１４）。
【００７０】
一例として、図８を参照すると、シリアル化を実行することは、共有キャッシュ・ラインに対する未処理の記憶を停止すること（７２０）、および共有キャッシュ・ラインのデータを同期すること（７２２）を含む。
【００７１】
さらに、一実施形態において、フェッチ要求に基づいて、共有キャッシュ・ラインの所有権状態が、共有−変更可能から別の状態に変更される（７２４）。その別の状態は、フェッチ要求に基づいて、排他的または読取り専用である（７２６）。
【００７２】
一実施形態において、複数の記憶要求を獲得することは、複数のプロセッサからの複数の非コヒーレント記憶に起因するフェッチ要求を受信することを含む（７２８）。非コヒーレント記憶に起因するフェッチ要求は、共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される（７３０）。
【００７３】
さらに、一実施形態において、記憶することは、複数のプロセッサの１つまたは複数のプライベート・キャッシュにデータを記憶することなしに、共有キャッシュ・ラインに直接にデータを記憶することを含む（７３２）。
【００７４】
その他の変形形態および実施形態が可能である。
【００７５】
他のタイプのコンピューティング環境は、実施例が図９を参照して説明される、エミュレーション環境を含むが、これには限定されない、本発明の１つまたは複数の態様を組み込み、使用してもよい。この実施例において、コンピューティング環境２０が、例えば、１つまたは複数のバス２８または他の接続、あるいはその両方を介して互いに結合された、例えば、ネイティブ中央処理装置（ＣＰＵ）２２、メモリ２４、および１つまたは複数の入出力デバイスまたは入出力インターフェース２６、あるいはその組合せを含む。例として、コンピューティング環境２０は、ニューヨーク州アーモンク市所在のインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＩＢＭ（Ｒ）ＰｏｗｅｒＰＣ（Ｒ）プロセッサまたはＩＢＭ（Ｒ）Ｐｏｗｅｒ  Ｓｅｒｉｅｓ（Ｒ）サーバもしくはＩＢＭ（Ｒ）ｐＳｅｒｉｅｓ（Ｒ）サーバ、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、インテル社、または他の企業によって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。ＰｏｗｅｒＰＣ（Ｒ）およびＰｏｗｅｒ  Ｓｅｒｉｅｓ（Ｒ）は、世界中の多くの管轄区域において登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
【００７６】
ネイティブ中央処理装置２２は、環境内の処理中に使用される１つもしくは複数の汎用レジスタまたは１つもしくは複数の専用レジスタ、あるいはその両方などの１つもしくは複数のネイティブ・レジスタ３０を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【００７７】
さらに、ネイティブ中央処理装置２２は、メモリ２４に記憶された命令およびコードを実行する。特定の一実施例において、中央処理装置は、メモリ２４に記憶されたエミュレータ・コード３２を実行する。このコードは、１つのアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード３２は、ＰｏｗｅｒＰＣプロセッサ、ｐＳｅｒｉｅｓサーバ、またはその他のサーバもしくはプロセッサなどのｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）以外のアーキテクチャに基づくマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）をエミュレートすること、およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいて開発されたソフトウェアおよび命令を実行することを可能にする。
【００７８】
エミュレータ・コード３２と関係するさらなる詳細が、図１０を参照して説明される。メモリ２４に記憶されるゲスト命令４０は、ネイティブＣＰＵ２２のもの以外であるアーキテクチャにおいて実行されるように開発されたソフトウェア命令（例えば、マシン命令と互いに関係する）を備える。例えば、ゲスト命令４０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）プロセッサ上で実行されるように設計されていることが可能であるが、代わりに、例えば、Ｉｎｔｅｌ（Ｒ）プロセッサであってよいネイティブＣＰＵ２２上でエミュレートされている。一実施例において、エミュレータ・コード３２は、メモリ２４から１つまたは複数のゲスト命令４０を獲得し、オプションとして、獲得された命令のためのローカル・バッファリングを提供する命令フェッチ・ルーチン４２を含む。また、エミュレータ・コード３２は、獲得されているゲスト命令のタイプを判定し、ゲスト命令を対応する１つまたは複数のネイティブ命令４６に変換する命令変換ルーチン４４も含む。この変換は、例えば、ゲスト命令によって実行されるべき機能を識別すること、およびその機能を実行すべきネイティブ命令を選択することを含む。
【００７９】
さらに、エミュレータ・コード３２は、ネイティブ命令が実行されるようにするエミュレーション制御ルーチン４８を含む。エミュレーション制御ルーチン４８は、ネイティブＣＰＵ２２に、前に獲得された１つまたは複数のゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終わりに、次のゲスト命令またはゲスト命令のグループを獲得することをエミュレートすべく命令フェッチ・ルーチンに制御を戻させることが可能である。ネイティブ命令４６の実行は、変換ルーチンによって判定されるとおり、メモリ２４からレジスタにデータをロードすること、レジスタからメモリにデータを再び記憶すること、または何らかのタイプの算術演算もしくは論理演算を実行することを含んでよい。
【００８０】
各ルーチンは、例えば、メモリに記憶され、ネイティブ中央処理装置２２によって実行されるソフトウェアにおいて実装される。他の実施例において、ルーチンまたは操作のうちの１つまたは複数が、ファームウェア、ハードウェア、ソフトウェア、またはその何らかの組合せにおいて実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ３０を使用して、またはメモリ２４におけるロケーションを使用することによってエミュレートされてよい。実施形態において、ゲスト命令４０、ネイティブ命令４６、およびエミュレータ・コード３２は、同一のメモリ内に存在してよく、または異なるメモリ・デバイスの間に分散されてよい。
【００８１】
本明細書において使用されるファームウェアは、例えば、プロセッサのマイクロコードを含む。ファームウェアは、例えば、より高レベルのマシン・コードの実装において使用されるハードウェア・レベル命令またはデータ構造、あるいはその両方を含む。一実施形態において、ファームウェアは、例えば、通常、信頼されるソフトウェアを含むマイクロコード、または基礎をなすハードウェアに特有のマイクロコードとして提供される専有のコードを含み、システム・ハードウェアに対するオペレーティング・システム・アクセスを制御する。
【００８２】
獲得され、変換され、実行されるゲスト命令４０は、例えば、本明細書において説明される命令のうちの１つであってよい。１つのアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ））のものであるその命令が、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ（Ｒ）、ｐＳｅｒｉｅｓ（Ｒ）、Ｉｎｔｅｌ（Ｒ）、その他）のネイティブ命令４６のシーケンスとして表される。次に、これらのネイティブ命令が、実行される。
【００８３】
１つまたは複数の態様が、クラウド・コンピューティングと関係してよい。
【００８４】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むものの、本明細書に記載される教示の実施は、クラウド・コンピューティング環境に限定されないものとあらかじめ理解される。むしろ、本発明の実施形態は、現在、知られている、または後に開発される他の任意のタイプのコンピューティング環境と併せて実施されることが可能である。
【００８５】
クラウド・コンピューティングは、最小限の管理労力、またはサービス・プロバイダとの最小限のやりとりしか伴わずに迅速にプロビジョニングされ、リリースされることが可能である構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有されるプールに対する好都合な、オンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのモデルである。このクラウド・モデルは、少なくとも５つの特徴と、少なくとも３つのサービス・モデルと、少なくとも４つの展開モデルとを含むことが可能である。
【００８６】
特徴は、以下のとおりである。
オンデマンド・セルフ・サービス：クラウド・コンシューマが、サービスのプロバイダとの対人的なやりとりを要求することなしに、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることが可能である。
ブロード・ネットワーク・アクセス：能力が、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム（例えば、モバイル電話、ラップトップ、およびＰＤＡ）による使用を促進する標準機構を通じてアクセスされる。
リソース・プーリング：プロバイダのコンピューティング・リソースは、様々な物理リソースおよび仮想リソースが、デマンドに応じて動的に割り当てられること、および再割当てされることが行われて、マルチテナント・モデルを使用して複数のコンシューマに役立てられるようにプールされる。コンシューマが、一般に、提供されるリソースの厳密なロケーションをまったく管理しておらず、それについての知識も有さないが、抽象性のより高いレベルにおいてロケーション（例えば、国、州、またはデータセンタ）を指定することができる可能性があるという点で、ロケーション独立の感覚が存在する。
迅速な伸縮性：能力が、急速にスケールアウトするように、かつ急速にスケールインすべく迅速に解放されるように、一部の事例において自動的に、迅速に、伸縮的にプロビジョニングされることが可能である。コンシューマには、プロビジョニングのために利用可能な能力は、しばしば、無制限であるように見え、任意の時点で任意の数量で購入されることが可能である。
測定されるサービス：クラウド・システムが、サービスのタイプ（例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント）に適切な抽象性の何らかのレベルで測定能力を活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用率が、監視され、制御され、報告されて、利用されるサービスのプロバイダとコンシューマの両方に透明性を提供することが可能である。
【００８７】
サービス・モデルは、以下のとおりである。
ソフトウェア・アズ・ア・サービス（ＳａａＳ）：コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ（例えば、ウェブ・ベースの電子メール）などのシン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。コンシューマは、限られたユーザ特有のアプリケーション構成設定を可能な例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション能力さえも含め、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしない。
プラットフォーム・アズ・ア・サービス（ＰａａＳ）：コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマによって作成された、または獲得されたアプリケーションをクラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしないが、展開されるアプリケーション、および、場合により、アプリケーションをホストする環境構成を管理する。
インフラストラクチャ・アズ・ア・サービス（ＩａａＳ）：コンシューマに提供される能力は、コンシューマが、オペレーティング・システムと、アプリケーションとを含むことが可能な任意のソフトウェアを展開すること、および実行することができる場合に、処理、ストレージ、ネットワーク、およびその他の基礎的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理することも、制御することもしないが、オペレーティング・システム、ストレージ、展開されるアプリケーション、および、場合により、選定されたネットワーキング構成要素（例えば、ホスト・ファイアウォール）の限られた制御を管理する。
【００８８】
展開モデルは、以下のとおりである。
プライベート・クラウド：クラウド・インフラストラクチャは、専ら組織のために運用される。クラウド・インフラストラクチャは、組織またはサードパーティによって管理されることが可能であり、敷地内に存在することも、敷地外に存在することも可能である。
コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される関心（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス考慮事項）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサードパーティによって管理されることが可能であり、敷地内に存在することも、敷地外に存在することも可能である。
パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆または大きい業界グループに提供され、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ移植性およびアプリケーション移植性（例えば、クラウド間の負荷分散のためのクラウド・バースティング）を可能にする標準化された、または専有の技術によって一緒に結び付けられた２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の合成である。
【００８９】
クラウド・コンピューティング環境は、ステートレスであること、低結合、モジュール性、および意味相互運用性に焦点を合わせて、サービス指向である。クラウド・コンピューティングの中核には、互いに接続されたノードのネットワークを備えるインフラストラクチャがある。
【００９０】
次に図１１を参照すると、例示的なクラウド・コンピューティング環境５０が示される。図示されるとおり、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ）もしくはセルラ電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはその組合せなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信相手とすることが可能な、１つまたは複数のクラウド・コンピューティング・ノード１０を含む。ノード１０は、互いに通信することが可能である。ノード１０は、前段で説明されるプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せなどの、１つまたは複数のネットワークにおいて、物理的に、または仮想でグループ化されてよい（図示せず）。このことは、クラウド・コンピューティング環境５０が、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することを可能にする。図１１に示されるコンピューティング・デバイス５４Ａ〜Ｎのタイプは、単に例示的であることが意図されること、ならびにコンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方を介して任意のタイプのコンピュータ化されたデバイスと通信することが可能である（例えば、ウェブ・ブラウザを使用して）ことが理解される。
【００９１】
次に図１２を参照すると、クラウド・コンピューティング環境５０（図１１）によって提供される機能抽象化層のセットが示される。図１２に示される構成要素、層、および機能は、単に例示的であることが意図され、本発明の実施形態は、これらに限定されないことをあらかじめ理解されたい。図示されるとおり、以下の層および対応する機能が提供される。
【００９２】
ハードウェアおよびソフトウェア層６０が、ハードウェア構成要素と、ソフトウェア構成要素とを含む。ハードウェア構成要素の例は、メインフレーム６１、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーキング構成要素６６を含む。一部の実施形態において、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア６７と、データベース・ソフトウェア６８とを含む。
【００９３】
仮想化層７０が、仮想エンティティの以下の例、すなわち、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、および仮想クライアント７５が提供されることが可能な抽象化層を提供する。
【００９４】
一実施例において、管理層８０が、後段で説明される機能を提供してよい。リソース・プロビジョニング８１が、クラウド・コンピューティング環境内でタスクを実行するのに利用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。測定および価格設定８２が、クラウド・コンピューティング環境内でリソースが利用されるにつれての費用追跡、およびこれらのリソースの消費に関する料金請求またはインボイス送付を提供する。一実施例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを備えてよい。セキュリティが、クラウド・コンシューマおよびタスクに関する身元検証、ならびにデータおよびその他のリソースに関する保護を提供する。ユーザ・ポータル８３が、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４が、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割当ておよび管理を提供する。サービス・レベル合意（ＳＬＡ）計画および履行８５が、ＳＬＡにより将来の要求が予期されるクラウド・コンピューティング・リソースの事前準備および調達を提供する。
【００９５】
作業負荷層９０が、クラウド・コンピューティング環境が利用されてよい機能の例を提供する。この層から提供されてよい作業負荷および機能の例は、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想教室教育デリバリ９３、データ・アナリティクス処理９４、トランザクション処理９５、および同時変更処理９６を含む。
【００９６】
本発明は、統合の任意の可能な技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つの（または複数の）コンピュータ可読記憶媒体を含んでよい。
【００９７】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持すること、および記憶することができる有形のデバイスであることが可能である。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組合せであってよいが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピ・ディスク、命令が記録されているパンチカードもしくは溝の中の隆起構造などの機械的に符号化されたデバイス、および以上の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝達媒体を介して伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または配線を介して伝送される電気信号などの一過性の信号そのものであると解釈されるべきではない。
【００９８】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、伝送光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶されるようにコンピュータ可読プログラム命令を転送する。
【００９９】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくはそれに類するものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくはそれに類似したプログラミング言語などの手続き型プログラミング言語を含め、１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェア・パッケージとして実行されても、一部がユーザのコンピュータ上で、かつ一部が遠隔コンピュータ上で実行されても、全体が遠隔コンピュータもしくは遠隔サーバの上で実行されてもよい。全体が遠隔コンピュータもしくは遠隔サーバの上で実行されるシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または接続は、外部コンピュータに対して行われてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。一部の実施形態において、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、電子回路をカスタマイズするようにコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することが可能である。
【０１００】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施されることが可能であることが理解されよう。
【０１０１】
これらのコンピュータ可読プログラム命令は、そのコンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行されるそれらの命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含む製造品を備えるべく、特定の様態で機能するようにコンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せを導くことができるコンピュータ可読記憶媒体に記憶されてもよい。
【０１０２】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実施されるプロセスを作り出すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【０１０３】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を例示する。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を備える、命令のモジュール、セグメント、または部分を表すことが可能である。一部の代替の実装形態において、ブロックに記載される機能は、図に記載される順序を外れて生じてよい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてよく、またはそれらのブロックが、時として、関与する機能に依存して、逆の順序で実行されてよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実施されることが可能であることにも留意されたい。
【０１０４】
以上のことに加えて、１つまたは複数の態様が、顧客環境の管理を提供するサービス・プロバイダによってもたらされること、提供されること、展開されること、管理されること、保守されることなどが可能である。例えば、サービス・プロバイダは、１つまたは複数の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャ、あるいはその両方を作成すること、維持すること、サポートすることなどが可能である。その見返りとして、サービス・プロバイダは、例として、サブスクリプションまたは料金契約、あるいはその両方の下で顧客から支払いを受け取ってよい。さらに、または代替として、サービス・プロバイダは、１つまたは複数のサードパーティに対する広告コンテンツの販売から支払いを受け取ってよい。
【０１０５】
一態様において、１つまたは複数の実施形態を実行するためのアプリケーションが展開される。一実施例として、アプリケーションを展開することは、１つまたは複数の実施形態を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１０６】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに組み込むことを備えるコンピューティング・インフラストラクチャが展開されてよく、ここにおいて、コンピューティング・システムと組み合わされたコードが、１つまたは複数の実施形態を実行することができる。
【０１０７】
さらなる態様として、コンピュータ可読コードをコンピュータ・システムに組み込むことを備えるコンピューティング・インフラストラクチャを組み込むためのプロセスが、提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、ここにおいて、コンピュータ媒体が、１つまたは複数の実施形態を備える。コンピュータ・システムと組み合わされたコードが、１つまたは複数の実施形態を実行することができる。
【０１０８】
様々な実施形態が前段で説明されるものの、これらは、実施例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境が、１つまたは複数の実施形態を組み込み、使用するのに使用されることが可能である。さらに、異なる命令または操作が、使用されてよい。多くの変形形態が可能である。
【０１０９】
さらに、他のタイプのコンピューティング環境が有益であり、使用されることが可能である。実施例として、メモリ要素に直接に、またはシステム・バスを介して間接的に結合された少なくとも２つのプロセッサを含む、プログラム・コードを記憶するのに、または実行するのに、あるいはその両方を行うのに適したデータ処理システムが、使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、ならびに実行中に大容量ストレージからコードが取り出されなければならない回数を減らすために少なくともいくらかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリを含む。
【０１１０】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サムドライブ、および他のメモリ媒体、その他を含むが、以上には限定されない）が、システムに直接に、または介在するＩ／Ｏコントローラを通じて結合されることが可能である。また、データ処理システムが、介在するプライベート・ネットワークもしくはパブリック・ネットワークを通じて他のデータ処理システム、または遠隔のプリンタもしくはストレージ・デバイスに結合されるようになることを可能にするネットワーク・アダプタが、システムに結合されてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、利用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【０１１１】
本明細書において使用される術語は、特定の実施形態について説明することのみを目的とし、限定することは意図していない。本明細書において使用される、「或る」および「その」という単数形は、文脈がそうでないことを明示するのでない限り、複数形も含むことを意図している。「備える」または「備えた」あるいはその両方の術語は、本明細書において使用される場合、明記される特徴、整数、ステップ、操作、要素、または構成要素あるいはその組合せの存在を明示するが、他の１つまたは複数の特徴、整数、ステップ、操作、要素、構成要素、またはそのグループ、あるいは以上の組合せの存在も、追加も除外することはないことがさらに理解されよう。
【０１１２】
添付の特許請求の範囲におけるすべての手段もしくはステップおよび機能要素の対応する構造、材料、動作、および均等物は、存在する場合、明示的に主張される以外の主張される要素と組合せでその機能を実行するための任意の構造、材料、または動作を含むことを意図している。１つまたは複数の実施形態の説明は、例示および説明のために提示されてきたが、網羅的であることも、開示される形態に限定されることも意図していない。多くの変更形態および変形形態が、当業者には明白となろう。実施形態は、様々な態様、および実際的な応用を最もよく説明するために、かつ当業者が、企図される特定の用途に適する様々な変形を伴う様々な実施形態を理解することを可能にするように選択され、説明されている。
【図１】
2021502629.tif 000003
【図２】
2021502629.tif 000004
【図３】
2021502629.tif 000005
【図４】
2021502629.tif 000006
【図５】
2021502629.tif 000007
【図６】
2021502629.tif 000008
【図７】
2021502629.tif 000009
【図８】
2021502629.tif 000010
【図９】
2021502629.tif 000011
【図１０】
2021502629.tif 000012
【図１１】
2021502629.tif 000013
【図１２】
2021502629.tif 000014
【手続補正書】
【提出日】令和2年5月19日(2020.5.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易化するためのコンピュータによって実施される方法であって、
前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
を含む、方法。
【請求項２】
前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項１に記載の方法。
【請求項３】
前記データが、前記共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を備える、請求項１または２のいずれかに記載の方法。
【請求項４】
前記グローバル共有−変更可能構造が、前記複数のプロセッサのうちの複数のプロセッサによって使用される、請求項３に記載の方法。
【請求項５】
前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
をさらに含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
シリアル化を前記実行することが、
前記共有キャッシュ・ラインに対する未処理の記憶を停止すること、および
前記共有キャッシュ・ラインのデータを同期すること
を含む、請求項５に記載の方法。
【請求項７】
前記フェッチ要求に基づいて、前記共有キャッシュ・ラインの所有権状態を共有−変更可能状態から別の状態に変更することをさらに含む、請求項５または６のいずれかに記載の方法。
【請求項８】
前記別の状態が、前記フェッチ要求に基づいて、排他的または読取り専用である、請求項７に記載の方法。
【請求項９】
前記複数の記憶要求を前記獲得することが、
前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
を含む、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記記憶することが、前記複数のプロセッサの１つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
コンピューティング環境内の処理を容易化するためのコンピュータ・システムであって、
メモリと、
前記メモリと通信状態にある少なくとも１つのプロセッサと
を備え、
前記コンピューティング環境の複数のプロセッサから、共有キャッシュ・ラインに記憶する複数の記憶要求を獲得することであって、前記複数の記憶要求が同時記憶タイプのものである、前記獲得すること、および
前記複数の記憶要求に基づいて、前記共有キャッシュ・ラインにデータを同時に記憶すること
を含む方法を実行するように構成される、
コンピュータ・システム。
【請求項１２】
前記方法が、前記共有キャッシュ・ラインに関連付けられたキャッシュ・ディレクトリ状態を、複数のプロセッサによる複数の記憶要求が許容されることを示す共有−変更可能に設定することをさらに含む、請求項１１に記載のシステム。
【請求項１３】
前記データが、前記共有キャッシュ・ラインにおいて維持されるグローバル共有−変更可能構造に対する更新を備える、請求項１１または１２のいずれかに記載のシステム。
【請求項１４】
前記グローバル共有−変更可能構造が、前記複数のプロセッサのうちの複数のプロセッサによって使用される、請求項１３に記載のシステム。
【請求項１５】
前記方法が、
前記共有キャッシュ・ラインに対するアクセスを要求するフェッチ要求を獲得することであって、前記フェッチ要求が、前記同時記憶タイプとは異なる、前記獲得すること、
前記フェッチ要求に基づいて前記共有キャッシュ・ラインに関するシリアル化を実行すること、および
前記シリアル化を完了することに基づいて、前記共有キャッシュ・ラインから前記データを読み取ること
をさらに含む、請求項１１ないし１４のいずれかに記載のシステム。
【請求項１６】
シリアル化を前記実行することが、
前記共有キャッシュ・ラインに対する未処理の記憶を停止すること、および
前記共有キャッシュ・ラインのデータを同期すること
を含む、請求項１５に記載のシステム。
【請求項１７】
前記方法が、前記フェッチ要求に基づいて、前記共有キャッシュ・ラインの所有権状態を共有−変更可能状態から別の状態に変更することをさらに含む、請求項１５または１６のいずれかに記載のシステム。
【請求項１８】
前記別の状態が、前記フェッチ要求に基づいて、排他的または読取り専用である、請求項１７に記載のシステム。
【請求項１９】
前記複数の記憶要求を前記獲得することが、
前記複数のプロセッサから複数の非コヒーレント記憶に起因するフェッチ要求を受信することであって、前記複数の非コヒーレント記憶に起因するフェッチ要求が、前記共有キャッシュ・ラインに対する阻止のない変更を許すようにアーキテクチャ上、定義される、前記受信すること
を含む、請求項１１ないし１８のいずれかに記載のシステム。
【請求項２０】
前記記憶することが、前記複数のプロセッサの１つまたは複数のプライベート・キャッシュに前記データを記憶することなしに、前記共有キャッシュ・ラインに直接に前記データを記憶することを含む、請求項１１ないし１９のいずれかに記載のシステム。
【請求項２１】
コンピューティング環境内の処理を容易化するためのコンピュータ・プログラム製品であって、
処理回路によって可読であり、かつ請求項１ないし１０のいずれかに記載の方法を実行するために前記処理回路によって実行されるように命令を記憶するコンピュータ可読記憶媒体を備えるコンピュータ・プログラム製品。
【請求項２２】
コンピュータ上で実行されたとき、請求項１ないし１０のいずれかに記載の方法を実行するためのソフトウェア・コード部分を備える、コンピュータ可読媒体上に記憶され、かつデジタル・コンピュータの内部メモリにロード可能である、コンピュータ・プログラム。
【国際調査報告】
2021502629.tif 000015
2021502629.tif 000016