(57)【要約】  書込み動作を処理するための装置及び方法が提供される。本装置は、命令のシーケンスを実行する第１の処理デバイスを有し、シーケンスは、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するために１つ又は複数の書込み動作を実行するために、第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも１つの命令と、所有権の確立の後に実行される少なくとも１つの書込み命令とを含む。第１の処理デバイスに関連付けられたライトバック・キャッシュが、１つ又は複数の書込み動作中に出力される書込みデータを記憶するために使用される。コヒーレンシ回路が、ライトバック・キャッシュと、少なくとも１つのさらなる処理デバイスに関連付けられた少なくとも１つのさらなるキャッシュとに結合される。第１の処理デバイスは、トリガ・イベントに応答して、書込みデータがライトバック・キャッシュからメモリに書き込まれるようにするために、クリーン動作を開始する。さらに、コヒーレンシ回路は、クリーン動作に応答して、書込みデータを少なくとも１つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために少なくとも１つのさらなるキャッシュと対話する。これにより、いくつかのシステムにおいてキャッシュ・コヒーレンシを実装するための極めて効率的でコスト効果的な機構が得られ得る。
2021505994.tif 000002
【特許請求の範囲】
【請求項１】
命令のシーケンスを実行する第１の処理デバイスであって、前記シーケンスが、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するための１つ又は複数の書込み動作を実行するために、前記第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも１つの命令と、前記所有権の確立の後に実行される少なくとも１つの書込み命令とを含む、第１の処理デバイスと、
前記第１の処理デバイスに関連付けられ、前記１つ又は複数の書込み動作中に出力された前記書込みデータを記憶するように構成されたライトバック・キャッシュと、
前記ライトバック・キャッシュと、少なくとも１つのさらなる処理デバイスに関連付けられた少なくとも１つのさらなるキャッシュとに結合されたコヒーレンシ回路と
を備える装置であって、
前記第１の処理デバイスが、前記書込みデータが前記ライトバック・キャッシュからメモリに書き込まれるようにするために、トリガ・イベントに応答してクリーン動作を開始し、
前記コヒーレンシ回路が、前記クリーン動作に応答して、前記書込みデータを前記少なくとも１つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも１つのさらなるキャッシュと対話する、
装置。
【請求項２】
前記装置が、前記第１の処理デバイスによってトリガされる前記ソフトウェア・プロトコルと、前記コヒーレンシ回路によって実装される前記ハードウェア・プロトコルとの組合せによって、前記第１のメモリ領域に関してキャッシュ・コヒーレンシ・プロトコルを実装する、請求項１に記載の装置。
【請求項３】
前記コヒーレンシ回路が、前記クリーン動作に応答して、前記少なくとも１つのさらなるキャッシュに、前記書込みデータの前記少なくとも１つのメモリ・ロケーションに関連付けられた内容をもつキャッシュ・エントリを無効にさせるように構成された、請求項１又は請求項２に記載の装置。
【請求項４】
前記少なくとも１つのさらなるキャッシュが複数のキャッシュを備え、
前記コヒーレンシ回路が、前記複数のうちの各キャッシュについて、そのキャッシュによってキャッシュされるデータをもつ前記メモリ・ロケーションの指示を与える記録を維持し、
前記コヒーレンシ回路が、前記書込みデータを前記少なくとも１つのさらなる処理デバイスに見えるようにするために、前記複数のうちのどのキャッシュと対話するべきかを決定するときに前記記録を参照するように構成された、請求項１から３までのいずれか一項に記載の装置。
【請求項５】
前記コヒーレンシ回路がスヌープ回路である、請求項４に記載の装置。
【請求項６】
いくつかのメモリ領域のためのロック指示を維持するためのロック・ストレージをさらに備え、
前記ソフトウェア・プロトコルが、前記第１の処理デバイスによってアクティブ化されたときに、前記第１のメモリ領域のための前記ロック指示がクリアであるかどうかを決定するように構成されるとともに、前記ロック指示がクリアである場合、前記第１のメモリ領域のために前記ロック指示を設定し、前記第１の処理デバイスが前記第１のメモリ領域のための前記所有権を有することを前記第１の処理デバイスに対して識別するように構成された、請求項１から５までのいずれか一項に記載の装置。
【請求項７】
前記書込みデータが前記少なくとも１つのさらなる処理デバイスに見えるようにされたことを前記コヒーレンシ回路から通知されると、前記第１の処理デバイスが、前記所有権を放棄するように構成された、請求項１から６までのいずれか一項に記載の装置。
【請求項８】
前記トリガ・イベントが、
前記第１の処理デバイスによる、前記クリーン動作を開始する前記シーケンス内のクリーニング命令の実行、及び
前記書込みデータを含んでいる前記ライトバック・キャッシュのエントリに関してトリガされるエビクション・イベント
のうちの１つを含む、請求項１から７までのいずれか一項に記載の装置。
【請求項９】
前記クリーニング命令が、クリーンにされるべきデータをもつ前記ライトバック・キャッシュの特定のエントリを識別する、請求項８に記載の装置。
【請求項１０】
前記クリーニング命令が、前記ライトバック・キャッシュの複数のエントリのクリーニングをトリガし、前記装置は、前記複数のエントリが識別されることを可能にする情報を記憶するための記憶ユニットをさらに備える、請求項８に記載の装置。
【請求項１１】
前記記憶ユニットが、前記第１の処理デバイスによって実行される前記書込み動作の指示を記憶するように構成され、
前記クリーニング命令が命令の前記シーケンス内の終了命令であり、前記第１の処理デバイスが、前記終了命令の実行に応答して、
指示が前記記憶ユニット中に記憶される各書込み動作の前記対象である前記書込みデータが、前記ライトバック・キャッシュから前記メモリにクリーンにされるようにし、
前記記憶ユニットに記憶された前記書込み動作の前記指示をクリアする、請求項１０に記載の装置。
【請求項１２】
前記メモリが、持続性のポイントを形成する不揮発性メモリであり、前記終了命令の実行が、前記書込みデータを持続性の前記ポイントに伝搬させる、請求項１１に記載の装置。
【請求項１３】
前記第１の処理デバイスがさらに、前記第１の処理デバイスによって実行される前記書込み動作の前記指示を、命令の前記シーケンス内の開始命令の後に前記記憶ユニットに記憶させるように構成された、請求項１１又は請求項１２に記載の装置。
【請求項１４】
前記第１の処理デバイスが、前記第１のメモリ領域にデータを書き込むための前記所有権が確立されたときにのみ、前記第１のメモリ領域に対して書込み動作を実行するように構成され、前記第１のメモリ領域内のメモリ・ロケーションを指定するペンディング書込み命令は、その前に前記開始命令があり、その後に前記終了命令がある、請求項１３に記載の装置。
【請求項１５】
少なくとも１つのさらなるメモリ領域について、前記キャッシュ・コヒーレンシ・プロトコルが前記コヒーレンシ回路のみによって実装され、前記第１の処理デバイスが、前記少なくとも１つのさらなるキャッシュに関して前記コヒーレンシ回路によって実行されるステップを介して、前記少なくとも１つのさらなるメモリ領域への排他的書込みアクセスを取得するように構成された、請求項２に従属するときの、請求項１から１４までのいずれか一項に記載の装置。
【請求項１６】
第１の処理デバイスと、前記第１の処理デバイスに関連付けられたライトバック・キャッシュと、前記ライトバック・キャッシュと少なくとも１つのさらなる処理デバイスに関連付けられた少なくとも１つのさらなるキャッシュとに結合されたコヒーレンシ回路とを有する装置において書込み動作を処理する方法であって、前記方法は、
前記第１の処理デバイス上で、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するための１つ又は複数の書込み動作を実行するために、前記第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化する少なくとも１つの命令と、前記所有権の確立の後に実行される少なくとも１つの書込み命令とを実行することと、
前記１つ又は複数の書込み動作中に出力された前記書込みデータを前記ライトバック・キャッシュ内に記憶することと、
トリガ・イベントに応答して、前記書込みデータが前記ライトバック・キャッシュからメモリに書き込まれるようにするために、前記第１の処理デバイスがクリーン動作を開始するようにすることと、
前記クリーン動作に応答して、前記書込みデータを前記少なくとも１つのさらなる処理デバイスに見えるようにするために、前記コヒーレンシ回路が、ハードウェア・プロトコルを実装するために前記少なくとも１つのさらなるキャッシュと対話するようにすることと
を含む方法。
【請求項１７】
命令のシーケンスを実行する第１の処理手段であって、前記シーケンスが、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するために１つ又は複数の書込み動作を実行するために、前記第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも１つの命令と、前記所有権の確立の後に実行される少なくとも１つの書込み命令とを含む、第１の処理手段と、
前記１つ又は複数の書込み動作中に出力された前記書込みデータを記憶するための、前記第１の処理手段に関連付けられたライトバック・キャッシュ手段と、
前記ライトバック・キャッシュ手段と、少なくとも１つのさらなる処理手段に関連付けられた少なくとも１つのさらなるキャッシュ手段とに結合するためのコヒーレンシ手段と
を備える装置であって、
前記第１の処理手段が、トリガ・イベントに応答して、前記書込みデータが前記ライトバック・キャッシュ手段からメモリに書き込まれるようにするために、クリーン動作を開始し、
前記コヒーレンシ手段が、前記クリーン動作に応答して、前記書込みデータを前記少なくとも１つのさらなる処理手段に見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも１つのさらなるキャッシュ手段と対話する、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法は、書込み動作を処理するための装置及び方法に関する。
【背景技術】
【０００２】
データ処理システムは、しばしば、データに対してデータ処理動作を実行することができる複数の処理デバイスを含み、それらの様々な処理デバイスは、メモリ中の共有データへのアクセスを有するように構成され得る。しばしば、処理デバイスは、それらの処理デバイスによって操作されるデータが、毎回メモリからフェッチされる必要がある場合に可能であるよりも速いそのデータへのアクセスを可能にするためにキャッシュされ得る、１つ又は複数のレベルのローカル・キャッシュを含む。
【０００３】
しかしながら、ローカル・キャッシュの存在はコヒーレンシ問題を引き起こし得、その場合、最も最新のバージョンが別の処理デバイスのローカル・キャッシュにキャッシュされるとき、１つの処理デバイスが古いデータにアクセスする可能性がある。
【０００４】
ハードウェア・キャッシュ・コヒーレンシ機構がそのような状況のために開発されたが、それらの機構は、ハードウェア面積及び／又は実行時間に関して実装するのに比較的費用がかかり得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願第１５／５０１，２７８号
【発明の概要】
【課題を解決するための手段】
【０００６】
第１の例示的な構成では、命令のシーケンスを実行する第１の処理デバイスであって、前記シーケンスが、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するために１つ又は複数の書込み動作を実行するために、第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも１つの命令と、所有権の確立の後に実行される少なくとも１つの書込み命令とを含む、第１の処理デバイスと、第１の処理デバイスに関連付けられ、１つ又は複数の書込み動作中に出力された書込みデータを記憶するように構成されたライトバック・キャッシュと、ライトバック・キャッシュと、少なくとも１つのさらなる処理デバイスに関連付けられた少なくとも１つのさらなるキャッシュとに結合されたコヒーレンシ回路とを備える装置であって、
第１の処理デバイスが、書込みデータがライトバック・キャッシュからメモリに書き込まれるようにするために、トリガ・イベントに応答してクリーン動作を開始し、
コヒーレンシ回路が、クリーン動作に応答して、書込みデータを前記少なくとも１つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも１つのさらなるキャッシュと対話する、装置が提供される。
【０００７】
さらなる例示的な構成では、第１の処理デバイスと、第１の処理デバイスに関連付けられたライトバック・キャッシュと、ライトバック・キャッシュと少なくとも１つのさらなる処理デバイスに関連付けられた少なくとも１つのさらなるキャッシュとに結合されたコヒーレンシ回路とを有する装置において書込み動作を処理する方法であって、本方法は、
第１の処理デバイス上で、第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化する少なくとも１つの命令と、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するための１つ又は複数の書込み動作を実行するために、所有権の確立の後に実行される少なくとも１つの書込み命令とを実行することと、
１つ又は複数の書込み動作中に出力された書込みデータをライトバック・キャッシュ内に記憶することと、
トリガ・イベントに応答して、書込みデータが前記ライトバック・キャッシュからメモリに書き込まれるようにするために、第１の処理デバイスがクリーン動作を開始するようにすることと、
クリーン動作に応答して、書込みデータを前記少なくとも１つのさらなる処理デバイスに見えるようにするために、コヒーレンシ回路が、ハードウェア・プロトコルを実装するために前記少なくとも１つのさらなるキャッシュと対話するようにすることと
を含む方法が提供される。
【０００８】
さらに他の例示的な構成では、命令のシーケンスを実行する第１の処理手段であって、前記シーケンスが、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するために１つ又は複数の書込み動作を実行するために、第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも１つの命令と、所有権の確立の後に実行される少なくとも１つの書込み命令とを含む、第１の処理手段と、
１つ又は複数の書込み動作中に出力された書込みデータを記憶するための、第１の処理手段に関連付けられたライトバック・キャッシュ手段と、
ライトバック・キャッシュ手段と少なくとも１つのさらなる処理手段に関連付けられた少なくとも１つのさらなるキャッシュ手段とに結合するためのコヒーレンシ手段と
を備える装置であって、
第１の処理手段が、トリガ・イベントに応答して、書込みデータがライトバック・キャッシュ手段からメモリに書き込まれるようにするために、クリーン動作を開始し、
コヒーレンシ手段が、クリーン動作に応答して、書込みデータを前記少なくとも１つのさらなる処理手段に見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも１つのさらなるキャッシュ手段と対話する、
装置が提供される。
【０００９】
添付の図面に示されている本技法の実例を参照しながら、本技法について単に実例としてさらに説明する。
【図面の簡単な説明】
【００１０】
【図１】本明細書で説明する技法が実装され得る例示的なシステムのブロック図である。
【図２】図１のコヒーレンシ回路によって維持され得るディレクトリの１つの実例を示す図である。
【図３】図１のシステムのメモリ内に設けられ得るロック・ストレージの１つの実例を示す図である。
【図４Ａ】１つ又は複数の書込み動作を実行するときに処理デバイス内で実行され得るプロセスの流れ図を提示する図である。
【図４Ｂ】１つ又は複数の書込み動作を実行するときに処理デバイス内で実行され得るプロセスの流れ図を提示する図である。
【図５】１つ又は複数の書込み動作を実行した処理デバイスによって開始されたクリーン動作に応答して、１つの例示的な構成におけるコヒーレンシ回路によって実行されるステップを示す流れ図である。
【図６】図１のシステムによって採用されるコヒーレンシ機構を、書込み動作が実行されるべきメモリ領域にどのように依存させることができるかを示す流れ図である。
【図７Ａ】例示的な構成における処理デバイスのうちの１つによって実行され得るコードの例示的なシーケンスを示す図である。
【図７Ｂ】例示的な構成における処理デバイスのうちの１つによって実行され得るコードの例示的なシーケンスを示す図である。
【図７Ｃ】例示的な構成における処理デバイスのうちの１つによって実行され得るコードの例示的なシーケンスを示す図である。
【図７Ｄ】例示的な構成における処理デバイスのうちの１つによって実行され得るコードの例示的なシーケンスを示す図である。
【図８】クリーンにされる必要がある書込み動作を追跡するために、１つの例示的な構成における、１つ又は複数の処理デバイス中に設けられ得るＦＩＦＯ（先入れ先出し）ストレージを示す図である。
【図９】１つの例示的な構成におけるライトバック・キャッシュを概略的に示す図である。
【図１０】一実例においてデータ処理デバイスが実行し得る命令の例示的なシーケンスを示す図である。
【発明を実施するための形態】
【００１１】
各自のローカル・キャッシュ構造をもつ複数の処理デバイスを有するシステムでは、一般に、各処理デバイスが、処理デバイスの間で共有されるデータの同じビューを有することを保証するために、キャッシュ・コヒーレンシ・プロトコルが実装される。そのようなキャッシュ・コヒーレンシ・プロトコルは、異なる処理デバイスが、メモリ・ロケーションに関連付けられたデータを競合する形で更新することができないことを保証する必要があり、これは、たとえば、２つの異なる処理デバイスが、同時に同じデータに関して書込み動作を実行することが可能にされた場合に起こり得る（これは「レーシング書込み」条件と呼ばれることがある）。したがって、特定のメモリ・アドレスにおけるデータに関して書込み動作が必要とされるときに、知られているハードウェア・キャッシュ・コヒーレンシ方式に従うと、書込み動作を実行することを望む処理デバイスはコヒーレンシ回路に通知し、それにより、要求側処理デバイスが、次いで、他の処理デバイスのいずれかがそのメモリ・アドレスに関して競合する書込みを実行する危険なしに書込み動作を実行し得ることを保証するために、他の処理デバイスによって保持され得るそのデータのキャッシュされたコピーを考慮しながら、次いでコヒーレンシ回路が必要なステップを実行する。コヒーレンシ回路はまた、いずれかの処理デバイスがその後メモリ・アドレスへのアクセスを要求するときはいつでも、処理デバイスがデータの最も最新のバージョンを取得することを保証することができる。
【００１２】
しかしながら、データが複数の処理デバイスの間で共有されるいくつかのシステムでは、発明者らは、どの時点においてもただ１つの処理デバイスが特定のメモリ・ロケーションに書き込む能力を有することを効果的に保証することができるソフトウェア方式も適当であり得ることに気づいた。単に例として、データの大きいデータベースが様々な処理デバイスの間で共有され得るラックスケール計算システムでは、どの処理デバイスがどの特定の時点においてどの特定のメモリ・ロケーションに書き込むことが可能であるかを制御するために、ソフトウェア技法が使用され得る。したがって、発明者らは、そのようなシステムでは、通常、キャッシュ・コヒーレンシ機構に関連付けられた機能のうちのいくつかは、もはやコヒーレンシ回路によって実行される必要がないということに気づいた。
【００１３】
特に、発明者らは、ハードウェア・コヒーレンシ機構によって実行される機能は、本質的に、データを書き込む処理デバイスの権利を確立するためのステップと、更新された書込みデータを他の処理デバイスに見えるようにするために書込み動作が実行された後で取られるさらなるステップとを伴うことに気づいた。どの処理デバイスがどの特定のメモリ・ロケーションに書き込むことができるかを効果的に制御するためのソフトウェア機構をすでに設けたシステムでは、発明者らは、キャッシュ・コヒーレンシ・プロトコルがハードウェアにおいて完全に実装される必要なしに、キャッシュ・コヒーレンシが効果的に維持され得ることに気づいた。特に、データを書き込む権利を確立するために必要とされるステップはソフトウェアにおいて実行され得、その場合、更新された書込みデータが他の処理デバイスに見えるようにされることを確かめるためにハードウェア機構が使用される。これは、システム内でキャッシュ・コヒーレンシ・サポートを与えることに関連する（ハードウェア面積及び／又は実行時間に関した）コストのかなりの低減につながり得る。
【００１４】
１つの例示的な構成では、命令のシーケンスを実行するように構成された第１の処理デバイスを備える装置が提供され得、シーケンスは、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに記憶するための書込みデータを出力するために１つ又は複数の書込み動作を実行するために、第１のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも１つの命令と、所有権の確立の後に実行される少なくとも１つの書込み命令とを含む。第１の処理デバイスは、第１の処理デバイスに関連付けられたライトバック・キャッシュを有し、１つ又は複数の書込み動作中に出力された書込みデータがライトバック・キャッシュに記憶される。さらに、ライトバック・キャッシュと、少なくとも１つのさらなる処理デバイスに関連付けられた少なくとも１つのさらなるキャッシュとに結合されたコヒーレンシ回路が設けられる。
【００１５】
ソフトウェア・プロトコルの使用によって、第１の処理デバイスに第１のメモリ領域に関して所有権が与えられたとき、他の処理デバイスは、その第１のメモリ領域に対して競合する書込み動作を実行することができないことが保証され得る。しかしながら、第１の処理デバイスによって生成された書込みデータが、他の処理デバイスに見えるようにされることを保証する必要が依然としてある。
【００１６】
説明した実例によれば、これは、書込みデータがライトバック・キャッシュからメモリに書き込まれるようにするために、第１の処理デバイスが、トリガ・イベントに応答して、クリーン動作を開始することによって達成される。ライトバック・キャッシュからメモリへの書込みデータの項目の「クリーニング」は、ここでは、ライトバック・キャッシュ中に記憶されたそのデータ項目の変更されたコピー（すなわち、本明細書で参照される書込みデータ）が、メモリに記憶された元のデータ項目を更新するために使用されることを意味すると理解されるべきである。クリーニング動作が実行されることに加えて、コヒーレンシ回路は、次いで、クリーン動作に応答して、書込みデータを少なくとも１つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために少なくとも１つのさらなるキャッシュと対話するように構成される。
【００１７】
そのような手法によれば、処理デバイス上で実行されるべき命令を書き込むソフトウェア・プログラマーは、書込み動作が第１のメモリ領域に関して実行されるべきときに、関連がある処理デバイスが、最初に、ソフトウェア・プロトコルを使用して所有権を確立することを求めるように、所有権を確立するために必要とされるソフトウェア・プロトコルを知っている必要があり、特に、様々な処理デバイスによって実行される命令のシーケンス内に適切な命令を含む必要がある。これは、そのような問題を回避する役割をソフトウェアが担うので、ハードウェア・コヒーレンシ回路はレーシング書込みの問題を考慮する必要がないことを意味する。しかしながら、次いで、書込みデータを少なくとも１つのさらなる処理デバイスに見えるようにするという問題を処理するために、ハードウェア・プロトコルがコヒーレンシ回路によって実装され得る。コヒーレンシ回路は、クリーン動作の通知に直接応答して、必要とされるステップを引き受けることができるので、処理デバイス上で実行しているソフトウェアは、書込み動作を実行する前に他の処理デバイスによって保持されるデータのコピーをクリーンする及び／若しくは無効にするステップを取る必要がないか、又はデータが書き込まれた後に、他の処理デバイス上でコピーを無効にするためのステップを取る必要がない。
【００１８】
結果として、採用される手法は、キャッシュ・コヒーレンシ・プロトコル全体がソフトウェア様式で実装されるべき状況よりも、ソフトウェアの視点から、はるかに煩瑣でない。さらに、必要とされるハードウェア・プロトコルは、書込みデータを他の処理デバイスに見えるようにするという問題のみに関係すればよく、書き込む権利の確立はソフトウェアに移譲されるため、採用される手法は、完全なキャッシュ・コヒーレンシ・プロトコルがハードウェアにおいて実装されるシステムよりも、実装するのに（ハードウェア面積及び／又は実行時間に関して）著しくコストがかからない。コヒーレンシ回路によって実装されるハードウェア・プロトコルは、その機能を実装するために、処理デバイス上で実行されるコードに命令が追加される必要がなく、代わりに、コヒーレンシ回路が、クリーン動作によってトリガされるハードウェアにおいて必要とされる機能を完全に実装するので、ソフトウェア・プログラマーに対して完全に透過的にされ得る。
【００１９】
したがって、上記で説明した技法によれば、装置は、第１の処理デバイスによってトリガされるソフトウェア・プロトコルとコヒーレンシ回路によって実装されるハードウェア・プロトコルとの組合せによって、第１のメモリ領域に関してキャッシュ・コヒーレンシ・プロトコルを実装するように構成され得ることが諒解されよう。これにより、特に、ただ１つの処理デバイスがどの特定のメモリ・ロケーションにも１回で書き込むことができることを、適切なソフトウェア機構を介してすでに保証するシステムにおいて、キャッシュ・コヒーレンシを実装するための極めて効率的な機構が提供され得る。
【００２０】
コヒーレンシ回路がクリーン動作に応答する様式は、実装に応じて変動させられ得る。一実例では、コヒーレンシ回路は、クリーン動作に応答して、少なくとも１つのさらなるキャッシュに、書込みデータの少なくとも１つのメモリ・ロケーションに関連付けられた内容をもつキャッシュ・エントリを無効にさせるように構成される。この時点で、当該のメモリ・ロケーションについての最も最新のデータは、１つ又は複数の書込み動作の実施中に第１の処理デバイスによって生成されたものであることが知られているので、単にそれらのキャッシュ・エントリを無効にするだけで十分である。さらに、クリーン動作は、データのその最新のバージョンをメモリに出力させ、したがって、やがて、少なくとも１つのさらなる処理デバイスのいずれかが少なくとも１つのメモリ・ロケーションについてのデータを要求すると、その処理デバイスのローカル・キャッシュ中にミスが発生し、正しいデータがメモリから取り出される。
【００２１】
上記で説明した様式でエントリを無効にすることは、取ることができる最も簡単な手法であるが、必要な場合、エントリを無効にするのではなく、代わりに、第１の処理デバイスによって生成される最新の書込みデータを記憶するために、書込みデータの少なくとも１つのメモリ・ロケーションに関連付けられた内容をもつキャッシュ・エントリが更新され得る。これにより、データがある将来の時点で必要とされた場合、そのデータがその後メモリから再要求されなければならないことが回避されるであろう。
【００２２】
コヒーレンシ回路は、様々な方法で動作するように構成され得る。たとえば、コヒーレンシ回路は、クリーン動作に応答して、単に、さらなる処理デバイスに関連付けられたすべてのキャッシュが、書込み動作の影響を受けたデータのコピーをキャッシュしているか否かにかかわらず、それらのキャッシュに無効化又は更新要求をブロードキャストするように構成され得る。しかしながら、代替実施例では、コヒーレンシ回路は、よりターゲットを絞った動作を実行するように構成され得る。特に、一実例では、少なくとも１つのさらなるキャッシュは複数のキャッシュを備え、コヒーレンシ回路は、前記複数のうちの各キャッシュについて、そのキャッシュによってキャッシュされるデータをもつメモリ・ロケーションの指示を与える記録を維持する。コヒーレンシ回路は、次いで、書込みデータを少なくとも１つのさらなる処理デバイスに見えるようにするために、前記複数のうちのどのキャッシュと対話するかを決定するときに、記録を参照するように構成される。
【００２３】
記録がコヒーレンシ回路によって維持される１つのそのような実例では、コヒーレンシ回路はスヌープ回路の形態を取り得る。スヌープ回路は、どのメモリ・アドレスがシステム中の様々なキャッシュによってキャッシュされるかの指示を維持し、その情報を使用して、キャッシュ・コヒーレンシ・プロトコルを実装するために特定のキャッシュに対してスヌープ要求のターゲットを絞ることができる、知られているタイプのキャッシュ・コヒーレンシ回路である。しかしながら、上記で説明した技法によれば、少なくとも第１のメモリ領域について、データを書き込む権利を確立する態様が代わりにソフトウェア・プロトコルに移譲されるので、スヌープ回路は、完全なキャッシュ・コヒーレンシ・プロトコルを実装する必要がない。
【００２４】
ソフトウェア・プロトコルが本装置内で実装され得るいくつかの方法がある。一実例では、本装置は、いくつかのメモリ領域についてのロック指示を維持するためのロック・ストレージをさらに備え、ソフトウェア・プロトコルは、第１の処理デバイスによってアクティブ化されたとき、第１のメモリ領域についてのロック指示がクリアであるかどうかを決定するように構成される。ロック指示がクリアである場合、ソフトウェア・プロトコルは、第１のメモリ領域についてロック指示を設定させ、第１の処理デバイスが第１のメモリ領域のための所有権を有することを、第１の処理デバイスに対して識別する。
【００２５】
したがって、各メモリ領域についてのロック指示は、関連するメモリ領域が更新されている過程にあるときにそのことを示すように設定され得る、別個の変数として保持される指示の形態として閲覧され得る。
【００２６】
ロック・ストレージによって追跡される各メモリ領域は、実装に応じて、個々のメモリ・アドレス、又は一連のメモリ・アドレスを備え得る。各メモリ・ロケーションはメモリ・アドレスによって識別され、したがって、ロック・ストレージによって追跡される各メモリ領域内に１つ又は複数のメモリ・ロケーションがあり得る。
【００２７】
１つの例示的な構成では、書込みデータが少なくとも１つのさらなる処理デバイスに見えるようにされたことを、コヒーレンシ回路から通知されると、第１の処理デバイスは、所有権を放棄するように構成される。したがって、第１の処理デバイスに所有権が与えられると、その第１の処理デバイスによって生成された書込みデータが他の処理デバイスのいずれかに見えることが保証されることが保証され得るまで、第１の処理デバイスは所有権を保持する。いくつかの事例では、これは、書込みデータがシステム内のコヒーレンスのポイント（たとえば、データがメモリに書き込まれる前にデータが一時的に記憶されるバッファ・ストレージ）に到達し、したがって、他の処理デバイスのいずれかが、影響を受けたメモリ・ロケーションにあるデータを要求するとき、その最新の書込みデータがまだメイン・メモリに書き込まれていない場合、他の処理デバイスのいずれかがコヒーレンスのポイントからその最新の書込みデータを取得することが保証され得るという条件で、書込みデータが実際にメイン・メモリに書き込まれたことを意味しないことに留意されたい。
【００２８】
第１の処理デバイスによってクリーン動作を開始するために使用されるトリガ・イベントは様々な形式を取ることができる。たとえば、トリガ・イベントは、命令のシーケンス内のクリーニング命令の第１の処理デバイスによる実行により行われ得、そのクリーニング命令の実行は、クリーン動作が実行されるようにする。別の実例として、トリガ・イベントは、書込みデータを含んでいるライトバック・キャッシュのエントリに関してエビクション・イベントがトリガされた場合に起こり得る。これは、たとえば、ライトバック・キャッシュ内の容量問題、特に、キャッシュ中に割り振られるべき新しいデータのための空間を作成するためにビクティム・エントリが選択される必要があることにより起こり得る。たとえば、そのようなエビクション・イベントは、第１の処理デバイスが、書込み動作のうちの１つによって書き込まれたエントリをアクティブにクリーンするためのクリーニング命令を実行する前に、そのエントリをビクティム・エントリとしてターゲットにし得ることが可能である。
【００２９】
クリーニング命令は様々な形式を取ることができる。たとえば、簡単なケースでは、書込みデータが、必要とされるメモリ・ロケーションに書き込まれると、後続のクリーニング命令が次いでそのメモリ・ロケーションを識別するように、各書込み命令に関連付けられたクリーニング命令があり得る。
【００３０】
しかしながら、代替構成では、単一のクリーニング命令が、ライトバック・キャッシュの複数のエントリのクリーニングをトリガするように構成され得、そのような事例では、本装置は、複数のエントリが識別されることを可能にする情報を記憶するための記憶ユニットをさらに備え得る。たとえば、同一出願人が所有する同時係属米国特許出願第１５／５０１，２７８号に記載された技法が利用され得、そこでは、クリーニング命令は、その中に規定された終了命令の形態を取ることができ、これにより、書込み動作にかけられたライトバック・キャッシュ内のいくつかの識別されたエントリが次いでメイン・メモリに対してクリーンにされる。上記の同時係属ケースに記載されている実例では、メモリは、システム内に持続性のポイントを形成する不揮発性メモリを形成し、終了命令の実行により、識別されたエントリからの書込みデータが持続性のポイントに伝搬される。しかしながら、本技法では、終了命令は、メモリの形態とは無関係に使用され得、上記で説明した機構と組み合わせられたとき、書込み動作のシーケンスによって生成される書込みデータに関連してキャッシュ・コヒーレンシを維持するための極めて効率的な技法を与えることができ、ソフトウェア・プロトコルは、他の処理デバイスがメモリ領域内で競合する書込み動作を実行することができないことを保証し、ハードウェア・コヒーレンシ回路は、次いで、クリーン動作に応答して、書込みデータのすべてを少なくとも１つのさらなる処理デバイスに見えるようにする。
【００３１】
１つの例示的な構成では、記憶ユニットは、第１の処理デバイスによって実行される書込み動作の指示を記憶するように構成され得、クリーニング命令は命令のシーケンス内の終了命令であり得、第１の処理デバイスは、終了命令の実行に応答して、指示が記憶ユニットに記憶される各書込み動作の対象である書込みデータがライトバック・キャッシュからメモリにクリーンにされるようにし、記憶ユニットに記憶された書込み動作の指示をクリアし得る。
【００３２】
上記で説明した終了命令技法を使用することによって、データ処理装置のプログラマーが、（書込み命令の実行によって開始される）書込み動作の特定の順序付けがメモリに対して行われることを保証することを望む状況では、これは、本装置が実行するべきデータ処理動作を定義するための、プログラマーによって与えられる命令のシーケンスへの終了命令の追加によって行われ得る。
【００３３】
いくつかの例示的な構成では、第１の処理デバイスは、さらに、第１の処理デバイスによって実行される書込み動作の指示を、命令のシーケンス内の開始命令の後に記憶ユニットに記憶させるように構成される。したがって、処理デバイスが応答する命令セットにさらなる命令が追加され得、これにより、システム・プログラマーは、（開始命令によって先行され、終了命令によって終了される）書込み動作の「書込みセット」をカプセル化することが可能になる。次いで、ライトバック・キャッシュの動作に関して、及び第１の処理デバイスの動作によってではなく（これは、スケジューリングの理由で、特定の命令が実行される順序を変更し得る）、プログラマーによって望まれる（他の書込み動作に対するこの書込みセットの）書込み順序がメイン・メモリの内容において尊重されることが保証され得る。
【００３４】
１つの例示的な構成では、第１の処理デバイスは、第１のメモリ領域にデータを書き込むための所有権が確立されたときにのみ、第１のメモリ領域に対して書込み動作を実行するように構成され得、第１のメモリ領域内のメモリ・ロケーションを指定するペンディング書込み命令は、その前に開始命令があり、その後に終了命令がある。
【００３５】
上記で説明した技法はメモリ内のメモリ領域のすべてに関して採用され得るが、他の実例では、上記で説明した技法は特定のメモリ領域に限定され得、他のメモリ領域について、必要な場合、完全なハードウェア・キャッシュ・コヒーレンシ方式が実装され得る。したがって、１つのそのような構成では、少なくとも１つのさらなるメモリ領域について、キャッシュ・コヒーレンシ・プロトコルはコヒーレンシ回路のみによって実装され、第１の処理デバイスは、少なくとも１つのさらなるキャッシュに関してコヒーレンシ回路によって実行されるステップを介して、少なくとも１つのさらなるメモリ領域への排他的書込みアクセスを取得するように構成される。したがって、少なくとも１つのさらなるメモリ領域について、ソフトウェア・プロトコルは使用されず、代わりに、第１の処理デバイスが、書込み動作を実行する前にそのメモリ領域への排他的書込みアクセスを取得することを保証するために、システム内の様々な他のキャッシュに対してコヒーレンシ回路によって直接取られるステップが使用される。
【００３６】
次に、図を参照しながら、特定の実例について説明する。
【００３７】
図１は、上記で説明した技法が実装され得るシステムのブロック図である。複数の処理デバイス１０、２０、３０は、メモリ７０へのアクセスを有するように構成される。各処理デバイスには１つ又は複数のレベルのローカル・キャッシュ１５、２５、３５が設けられ得、それらのローカル・キャッシュに、処理デバイスによって処理されているデータのローカル・コピーが一時的に記憶される。各データ値は、メモリ７０内のメモリ・ロケーションを識別する関連付けられたメモリ・アドレスを有し、標準的な慣例に従って、データ値のコピーが、一般には、そのメモリ・アドレスの指示とともにキャッシュ内に記憶される。たとえば、１つ又は複数の書込み動作がローカル・キャッシュ中のデータに関して処理デバイスによって実行された結果として、そのデータが更新された場合、更新されたデータがメモリ７０に書き戻され得る。キャッシュは様々な方法で構成され得る。たとえば、キャッシュがライト・スルー・キャッシュとして構成された場合は、キャッシュ・ラインに記憶されたデータになされた更新も、更新が遅延なしにメモリにおいて複製されるようにするために、相互接続４０を介してメモリ７０に伝搬される。しかしながら、少なくとも１つのレベルのローカル・キャッシュがライトバック・キャッシュとして構成されることが一般的であり、キャッシュに保持されるデータの更新されたバージョンはすぐにはメモリに伝搬されない。代わりに、メモリよりも最新であるデータを含んでいるキャッシュ・ラインにダーティー・フラグが関連付けられ得、その結果、それらのキャッシュ・ライン内容がその後キャッシュからエビクトされたとき、必要な更新がメモリになされ得る。本明細書で説明する技法は、ライトバック・キャッシュとして構成された少なくとも１つのレベルのローカル・キャッシュを有するいかなる処理デバイスに関しても適用され得る。図１において、キャッシュ１５は１つのライトバック・キャッシュとして識別されるが、１つの例示的な構成では、ローカル・キャッシュ１５、２５、３５の各々がライトバック・キャッシュであり得る。
【００３８】
個々の処理デバイスのそれぞれのローカル・キャッシュ１５、２５、３５中のデータのコピーをローカルにキャッシュする個々の処理デバイスの能力により、競合する書込み動作が、同じメモリ・ロケーションに関して、異なる処理デバイス内で行われないことを保証するために、及び各処理デバイスが共有データの同じビューを有することを保証するために、キャッシュ・コヒーレンシ・プロトコルを実装することが必要である。特に、メモリに保持されたデータの一部は特定の処理デバイスに固有であり得るが、処理デバイスがメモリに保持されるデータの一部を共有することが多い。実例として、メモリは共有データベース７５を含み得、処理デバイスの各々には、共有データベース７５に保持される情報に関して処理タスクが割り振られ得る。共有データベース中の特定のデータが複数の処理デバイスによって競合する更新にかけられないこと、及び処理デバイスの各々に、共有データベース７５に保持されるデータの一貫したビューが与えられることを保証することが重要である。
【００３９】
１つの例示的な構成では、キャッシュ・コヒーレンシ・プロトコルの少なくとも一部を実装するために相互接続４０内にコヒーレンシ回路５０が設けられ得る。キャッシュ・コヒーレンシ・プロトコルを実装するとき、本質的に、引き受けられる必要がある２つのタスクがある。特に、処理デバイスが、特定のメモリ・ロケーションに関して書込み動作を実行することを望むとき、書込み動作を行うことを望む処理デバイスが、そのメモリ・ロケーションに関してその書込み動作を実行する権利を確立したことを保証することが必要である。これは、同じメモリ・ロケーションに関して行われる競合する書込みの予想を回避するために使用され得る。さらに、特定のメモリ・ロケーションについてのデータがそのような書込み動作を介して更新されると、他の処理デバイスがそのメモリ・ロケーションへのアクセスを要求するときはいつでも、他の処理デバイスが更新されたデータを参照することを保証することが重要である。したがって、キャッシュ・コヒーレンシ・プロトコルの一部として、書込み動作の結果が他の処理デバイスのすべてに見えるようにされることを保証することが必要である。
【００４０】
本明細書で説明する技法によれば、上述の必要とされる機能を考慮に入れるために、キャッシュ・コヒーレンシ・プロトコルをハードウェアにおいて完全に実装するために、相互接続内にコヒーレンシ回路を構成することが可能であるが、少なくともいくつかのメモリ領域について、キャッシュ・コヒーレンシ・プロトコルの実装はソフトウェアとハードウェアとの間でスプリットされる。特に、コヒーレンシ回路５０は、書込み動作の結果として１つの処理デバイスによって生成された更新されたデータが他の処理デバイスに見えるようにされることを保証するために使用され得る。しかしながら、メモリ・ロケーションにデータを書き込む権利を取得することはソフトウェア・プロトコルに移譲され、その結果、コヒーレンシ回路５０はその態様を考慮する必要がない。後でより詳細に説明するように、いずれかの処理デバイスが、スプリットされたソフトウェア／ハードウェア機構によって制御されるキャッシュ・コヒーレンシをもつメモリ領域内のメモリ・アドレスに書込み動作を実行する前に、その処理デバイスが、関連があるメモリ領域に関して所有権を取得することを保証するために、ソフトウェア・プロトコルは、メモリ７０において維持されるロック８０を使用してロックベース機構を使用することができる。そのような手法によって、ソフトウェアは、そのようなメモリ領域に関してレーシング書込み条件が起こることを回避するタスクを課され、コヒーレンシ回路は、次いで、更新された書込みデータを他の処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装する。
【００４１】
本明細書で説明する技法によれば、指定されたメモリ領域の１つ又は複数のメモリ・ロケーション内で更新された書込みデータを生成するために、書込み動作、又はいくつかの事例では一連の書込み動作が実行されると、ローカル・ライトバック・キャッシュ１５内のその更新された書込みデータがメモリ７０内の適切なメモリ・ロケーションに伝搬されるようにするために、クリーン動作がトリガされる。一実例では、メモリは、不揮発性メモリであり、したがって、システム内の持続性のポイントを表す。特に、データがメモリ７０にコミットされると、そのデータは、電力がシステムから除去された場合でも残る。クリーン動作は、したがって、データをシステム内の持続性のポイントに伝搬させることができる。しかしながら、別の実例では、メモリは不揮発性メモリである必要はない。
【００４２】
説明した技法によれば、コヒーレンシ回路は、クリーン動作の開始に応答して、次いで、書込みデータを他の処理デバイスに見えるようにするために、いくつかのコヒーレンシ行為を取る。
【００４３】
たとえば、処理デバイス１０が、その処理デバイスが第１のメモリ領域にデータを書き込むための所有権を確立するために、ソフトウェア・プロトコルをアクティブ化するための命令を実行し、次いで、第１のメモリ領域内の少なくとも１つのメモリ・ロケーションに対して１つ又は複数の書込み動作を実行し、それにより、更新された書込みデータがローカル・ライトバック・キャッシュ１５内に記憶される状況について考える。処理デバイス１０は、次いで、影響を受けた書込みデータのすべてが、適切なメモリ・ロケーションに記憶するためにメモリ７０に伝搬されるようにするために、クリーン動作を開始するためのクリーン命令を実行し得る。コヒーレンシ回路は、次いで、そのクリーン動作に応答して、他の処理デバイス２０、３０が更新されたデータへのアクセスを必要とする場合、それらの処理デバイス２０、３０がそのデータを参照することを保証するために、それらの処理デバイス２０、３０のローカル・キャッシュ２５、３５に関連したステップを取ることができる。１つのシナリオでは、コヒーレンシ回路は、単にローカル・キャッシュ２５、３５の各々に無効化要求を伝搬し、影響を受けたメモリ・ロケーションを指定するように構成され得る。各ローカル・キャッシュは、次いで、そのメモリ・ロケーションのためのキャッシュにエントリが存在するかどうかを決定するために、各指定されたメモリ・ロケーションに関してルックアップを実行する。そうである場合、現在の内容は、次いで、ローカル・キャッシュ内で無効にされる。これは、処理デバイスが、その後、そのメモリ・アドレスにおけるデータのための要求を行う場合、ローカル・キャッシュにおいてミスが検出され、データが次いでメモリから取得されるようになり、その結果、正しいデータが処理デバイス２０、３０によって受信されることを保証する。
【００４４】
簡単な構成では、コヒーレンシ回路は他のローカル・キャッシュのすべてに対する無効化要求をただブロードキャストし得るだけであるが、代替実施例では、コヒーレンシ回路は、スヌープ・コントローラ５５と、関連付けられたディレクトリ６０とを含むスヌープ回路の形態を取り得る。ディレクトリは、ローカル・キャッシュ１５、２５、３５の各々によってデータがキャッシュされるメモリ・ロケーションの指示を与えるために、スヌープ・コントローラによって維持される。したがって、クリーン動作の影響を受けたメモリ・ロケーション又は複数のメモリ・ロケーションに関して、スヌープ・コントローラ５５は、様々なローカル・キャッシュのうちのどれが、影響を受けたデータのキャッシュされたローカル・コピーを有し得るかを識別するために、ディレクトリ内でルックアップを実行することができ、したがって、単に無効化要求をあらゆるキャッシュにブロードキャストするのではなく、無効化要求を関連があるキャッシュにターゲットすることができる。
【００４５】
そのような手法によって、コヒーレンシ回路は、クリーン動作に応答して、更新された書込みデータがメモリに書き込まれるポイントにおいて、処理デバイスのすべてがそのデータの一貫したビューを有することが保証され得ることを、保証することができることがわかる。
【００４６】
クリーン動作が実行される前の期間において、また、処理デバイス１０が、１つ又は複数のメモリ・ロケーションのための更新された書込みデータを生成するために、１つ又は複数の書込み命令を実行している間、ソフトウェア・プロトコルは、他の処理デバイスによる、それらの１つ又は複数のメモリ・ロケーションへのアクセスを調整することができる。いくつかの事例では、データの意図されたソフトウェア使用は、ソフトウェア・プロトコルは、別の処理デバイスがメモリからデータの古い値を読み取ることを可能にするようなものであり得るが、他の事例では、そのような読取り動作が、その時間には禁止され得る。
【００４７】
図２は、図１のディレクトリ６０の１つの例示的な構成を概略的に示すダイヤグラムである。この実例では、ディレクトリはいくつかのエントリ１００、１０５を有し、各エントリは、メモリ・アドレス又は一連のメモリ・アドレスを識別し、次いで、どのキャッシュがそのメモリ・アドレス又は一連のメモリ・アドレス内にデータのコピーを含有し得るかを識別する。これは、どのローカル・キャッシュが、前述のクリーン動作に応答して無効化動作にかけられる必要があるかを決定するために、スヌープ・コントローラによって使用され得る。図２の実例では、関連付けられたキャッシュが、キャッシュされたコピーを保持し得ることを示すためにティック（ｔｉｃｋ）が使用され、関連付けられたキャッシュがコピーを保持しないことを示すためにクロスが使用される。ティック及びクロスは好適な値によって符号化され得、たとえば、論理１値がティックを示し得、論理０値がクロスを示し得ることが諒解されよう。
【００４８】
図２は、単にディレクトリ６０の１つの例示的な構成を示し、どのキャッシュが受信されるクリーン動作に応答して無効化動作にかけられる必要があるかに関する情報をスヌープ・コントローラに与えるために、他の好適な構成が使用され得ることが諒解されよう。
【００４９】
図３は、使用され得るロック・ストレージ８０の例示的な構成を示す。ロック・ストレージは、各々が特定のメモリ領域に関係する、複数のエントリ１１０、１１５、１２０を含有することができる。各メモリ領域について、その領域内の少なくとも１つのメモリ・アドレスが、それのデータ値が更新される過程にあるかどうかを識別するために、ロック指示が維持され得る。ロック指示が設定された場合、これは、領域内の少なくとも１つのメモリ・アドレスのためのデータが更新されていることを示すが、ロック指示がクリアである場合、これは、領域内のアドレスのいずれも、更新されている過程にあるデータを含有しないことを示す。
【００５０】
処理デバイスが、ロック・ストレージによって支配される領域のうちの１つ内のメモリ・アドレスに関して書込み動作を実行することを望むとき、関連付けられたロック指示を設定することを求めるために、その処理デバイスによって命令が実行される。関連付けられたロック指示が現在クリアである場合、関連付けられたロック指示が設定され、肯定応答が処理デバイスに戻され、これは、事実上、処理デバイスが、このとき、関連付けられたメモリ領域のための所有権を確立しており、したがって、そのメモリ領域に関して自由に書込み動作を実行することを、処理デバイスに対して識別する。しかしながら、ロック指示がすでに設定されている場合、処理デバイスは、ロックを設定することを求めている命令を超えて継続することを妨げられ、特に、関連がある領域内のメモリ・アドレスに書き込むことを求める書込み命令を実行することを、その段階において許可されない。一実例では、実行は、関連がある領域のためのロック指示がクリア状態に戻るような時間まで停止し、その時点において、ロック指示は、次いで、再び設定され得、処理デバイスが、このとき、メモリ領域に関する所有権を有することを識別するために肯定応答が処理デバイスに対して発行され、その後、書込み命令が次いで実行され得る。そのような手法によって、複数のメモリ領域のための所有権を維持するためにソフトウェア・プロトコルが使用され、それにより、特定の時点において、ただ１つの処理デバイスに、各そのような領域内のメモリ・ロケーションに関して書込み動作を実行する権利が与えられることが保証され得る。これにより、コヒーレンシ回路５０は、特定の処理デバイスによる排他的所有権を保証するためのステップを取る必要がなく、代わりに、単に、後続のクリーン動作に応答して、データが更新された後に処理デバイスがデータの一貫したビューを有することを保証する必要があるだけであるので、コヒーレンシ回路５０に要求される動作が簡略化される。
【００５１】
図４Ａ及び図４Ｂは、１つの例示的な構成において、処理デバイスが、組み合わせられたソフトウェア／ハードウェア機構がキャッシュ・コヒーレンシを実装するために使用される特定のメモリ領域内で、データを更新することを望むとき、その処理デバイス内で実行されるステップを示す流れ図を与える。
【００５２】
ステップ２００において、所望のメモリ領域に関してロック取得命令が処理回路によって実行される。これにより、メモリ内のロック８０がアクセスされ、特に、関連がある領域のためのロック指示状態が査定される。ロック指示がすでに設定されている場合、プロセスは、ロック指示が現在クリアであることが決定されるような時間まで、ステップ２０５に停止し、その時点において、次いで、ロック取得命令を実行する処理デバイスによってロックが取得されたことを示すために、ロック指示が設定され得る。ロックが取得されると、これは、ステップ２１０によって示されるように、要求側処理デバイスが所望のメモリ領域内のロケーションにデータを書き込むための所有権を確立したことを効果的に意味する。この段階において、他の処理デバイスのいずれかがロック取得命令を実行すべき場合、ロック指示がすでに設定されたことが決定され、したがって、それらの他の処理デバイスはそのメモリ領域のためのロックを取得することが不可能になるため、ソフトウェア・プロトコルは、他の処理デバイスが当該のメモリ領域への書込みアクセスを有することを防ぐ。したがって、ステップ２００、２０５、２１０は、データを書き込む権利を確立するためにソフトウェア・プロトコルを実装することと見なされ得る。
【００５３】
ステップ２１０の後、次いでステップ２１５において、処理デバイスは、ロックされたメモリ領域内のメモリ・ロケーションのための書込みデータを生成するために１つ又は複数の書込み動作を実行することができ、生成された書込みデータは、次いで、処理デバイスのローカル・ライトバック・キャッシュに記憶される。このプロセスは、ステップ２２０においてクリーン動作のためのトリガが検出されるまで継続し得る。
【００５４】
１つの例示的な構成では、クリーン動作のためのトリガは様々な理由で行われ得る。たとえば、単純なケースでは、別個のクリーン命令が各書込み命令に関連付けられ得、その結果、実行されるプロセスは、処理デバイスが、ロックを取得し、次いで、所望のメモリ・ロケーションに対して単一の書込み動作を実行し、次いで、その書込みデータに関してクリーン動作をトリガするためにクリーン命令が実行される。しかしながら、別の例示的な構成では、ロックされたメモリ領域内のメモリ・アドレスに関して一連の書込み動作を一緒にグループ化することが可能であり得、それらの書込み動作が実行された後に単一のクリーン動作がトリガされる。たとえば、この機能を達成するための１つの好適な機構は、その内容全体が参照により本明細書に組み込まれる、同一出願人が所有する同時係属米国特許出願第１５／５０１，２７８号に記載されている機構である。特に、その中で定義された終了命令は、クリーン動作をトリガするためのクリーン命令として使用され得、必要な場合、終了命令に遭遇したときにクリーンにされる必要がある書込みデータをもつ書込み命令のシーケンスの開始を識別するために、関連付けられた開始命令が使用され得る。終了命令に応答してクリーンにされる必要があるメモリ・ロケーションを追跡し続けるために、別個のストレージ構造が維持され得る。
【００５５】
ステップ２２０において起こり得るトリガのさらに他の実例として、これは、ステップ２１５において実行される書込み動作によって生成された更新された書込みデータを含んでいるキャッシュ・エントリをターゲットにするエビクション・イベントであり得る。エビクション・イベントは、たとえば、ローカル・キャッシュ内の容量問題により起こり得、キャッシュ中に割り振られるべき新しいデータのための場所を作るために、ビクティム・エントリが選択される必要がある。ビクティム・エントリが、ステップ２１５において生成された書込みデータを含んでいるエントリであるとき、これは、ステップ２２０においてクリーン動作をトリガすることができる。一連の書込み動作が開始命令と終了命令とに関連付けられる、前の例示的な構成が採用される場合、少なくとも影響を受けたキャッシュ・エントリのうちの１つに関してクリーン動作をトリガさせるために、そのエントリに関してエビクションが使用され得るか、又は、そのエビクションにより、必要な場合、エビクション・トリガが行われる時間に、開始命令と終了命令との間に書込みデータが生成されたエントリのすべてのクリーニングが引き起こされ得る。
【００５６】
ステップ２２０においてトリガ・イベントが行われると、プロセスはステップ２２５に進み、そこで、書込み動作によって生成された更新されたデータを反映するために、メモリ内容が更新されるようにするために、ロックされたメモリ領域に関して生成された書込みデータのために、クリーン動作が実行される。
【００５７】
前に説明したように、コヒーレンシ回路５０は、そのようなクリーン動作の存在に応答して、メモリに書き込まれている書込みデータが処理デバイスのすべてに見えるようにされることを保証するために、他の処理デバイスのローカル・キャッシュにおける関連があるエントリに関して無効化動作を実行する。ステップ２３０において、必要とされるメモリ領域のためのロックを取得した処理デバイスは、書込みデータが他の処理デバイスに見えているという、コヒーレンシ回路からの確認を待つ。クリーン・プロセス中に複数のキャッシュ・エントリがクリーンにされ得る状況では、関連がある書込みデータのすべてが他の処理デバイスに見えるようにされたという確認、すなわち、必要とされる無効化動作のすべてが実行されたという確認が、ステップ２３０において待たれる。
【００５８】
ステップ２３０においてそのような確認が受信されると、次いで、クリーン動作が完了し、ステップ２３５において、実行されるべきそれ以上の書込み動作又はクリーン動作があるかどうかが決定される。これは、たとえば、実行によりロックが解放される命令より前に、命令シーケンス内に１つ又は複数の追加の書込み命令又はクリーニング命令がある場合にそうであると決定され得る。実行されるべき少なくともあと１つの書込み動作又はクリーン動作がある場合、プロセスはステップ２２０に進み、別のクリーン動作のためのトリガがあるかどうかが決定され、そうでない場合、プロセスはステップ２１５に戻って、１つ又は複数のさらなる書込み動作を実行する。
【００５９】
ステップ２３５において、実行されるべき書込み又はクリーン動作がもうないことが決定されると、処理回路は、次いで、ステップ２４０において、メモリ領域のためのロックを解放するためのロック解放命令を実行するように構成され得る。これは、その領域のためのロック指示をクリア状態にリセットするために、ロック・ストレージ８０中の適切なエントリへのアクセスを実行することによって達成される。
【００６０】
図５は、一実例におけるコヒーレンシ回路５０の動作を示す流れ図である。ステップ３００において、コヒーレンシ回路５０は、図４Ａ及び図４Ｂに関して前に説明したステップを実行している処理デバイスからのクリーン動作の通知を待つ。クリーン動作が通知されると、コヒーレンシ回路は、メモリ内容が更新されるようにするために、ステップ３０５において、関連付けられた書込みデータをメモリ７０に伝搬させる。並行して、プロセスはステップ３１０に進み、他のキャッシュがあれば、どのキャッシュが、クリーン動作に関連付けられたメモリ・アドレスのためのデータを記憶し得るかを識別するために、ディレクトリ６０が参照される。スヌープ・コントローラ５５は、次いで、ステップ３１５においてディレクトリ情報によって示された各キャッシュに無効化要求を送るように構成される。無効化要求は、当該のメモリ・アドレスを識別し、事実上、そのメモリ・アドレスにおいてデータのコピーをキャッシュするエントリがあるかどうかを識別するために、その無効化要求を受信するローカル・キャッシュにルックアップ演算を実行させ、そのようなエントリがある場合、エントリが無効にされる。これは、関連付けられた処理デバイスは、そのメモリ・アドレスにおいてデータを要求する場合、ローカル・キャッシュ内でヒットをもはや受信せず、代わりに、正しいデータがメモリ７０から取り出されることを保証する。
【００６１】
説明した実例では、ステップ３１５において、スヌープ・コントローラ５５によって関連があるローカル・キャッシュに無効化要求が送られるが、代替手法では、必要とされるデータを正しく反映するためにローカル・キャッシュ内容が更新されるようにするために、新しい書込みデータとともに更新要求が送られ得る。
【００６２】
ステップ３２０において、スヌープ・コントローラ５５は、要求された無効化のすべてが行われたという確認を待つ。その確認が受信されると、次いで、ステップ３２５において、スヌープ・コントローラは、データがこのとき他の処理デバイスに見えることを識別するために、クリーン動作を開始した処理デバイスに通知し得る。ステップ３１０において、ディレクトリが、他のキャッシュのいずれも、必要とされるメモリ・アドレスのためのデータを記憶し得ないことを示す場合、プロセスは直接ステップ３１０からステップ３２５に進み得ることに留意されたい。
【００６３】
前述の開始命令及び終了命令を使用するときなどがそうであるように、クリーン動作が複数のメモリ・アドレスに関して適用される事例では、次いで、更新されるキャッシュ・ライン内容の各々のための必要とされるキャッシュに無効化要求が送られ得、ステップ３２０において、スヌープ・コントローラは、ステップ３２５に進む前に、更新されたデータ値のすべてに関して要求された無効化のすべてが行われたという確認を待つことになる。
【００６４】
ステップ３１０〜ステップ３２５は、コヒーレンシ回路５０によって完全に開始され、ソフトウェア・プログラマーに対する可視性を必要とせず、特に、明示的命令が処理デバイスのいずれかによって実行される必要がないことが諒解されよう。したがって、ステップ３１０〜ステップ３２５は、書込みデータを処理デバイスのすべてに見えるようにするためにハードウェア・プロトコルを実装することがわかる。
【００６５】
ステップ３０５において出力されたデータのメモリへの実際の書き込みは多くのクロック・サイクルを要し得るが、書込みデータは、一般に、書込みデータがキャッシュから相互接続４０に伝搬された後にすぐ、コヒーレンスのポイント（たとえば、メモリへのインターフェースに関連付けられた１つ又は複数の書込みバッファ）に達する。図５では、少なくともステップ３１０における検査が実行されたときまでにコヒーレンスのポイントに達していることが仮定され、したがって、ステップ３２５に達するときまでに、書込みデータがまだメイン・メモリに書き戻されていない場合でも、書込みデータがコヒーレンスのポイントから利用可能であることが理解される。
【００６６】
必要とされるキャッシュ・コヒーレンシ・プロトコルを実装するためにソフトウェア・プロトコルとハードウェア・プロトコルの組合せを使用する、上記で説明した機構は、処理デバイスの間で共有され得るメモリ７０のメモリ領域のすべてに関して実装され得るが、代替例では、そのような手法はいくつかの領域のために使用され得るが、必要な場合、完全なハードウェア・キャッシュ・コヒーレンシが他の領域のために実装され得る。これは図６の流れ図によって概略的に示されている。特に、ステップ３５０において、当該の領域が完全なハードウェア・コヒーレンシを必要とするかどうかが決定される。完全なハードウェア・コヒーレンシが必要である場合、プロセスはステップ３５５に進み、キャッシュ・コヒーレンシ・プロトコルをハードウェアにおいて完全に実装するためにコヒーレンシ回路が使用される。特に、更新されるデータが処理デバイスのすべてに見えることを保証するために、クリーン動作に応答して、上記で説明したステップを実装するだけでなく、いずれかの処理デバイスが書込み動作を実行する前に、書込み動作を実行することを望む処理デバイスが、その処理デバイスに対して排他的であるとマーキングされた、キャッシュされたコピーを有することを保証するために、ローカル・キャッシュに関してコヒーレンシ行為を実行する、既存のスヌープ機構が使用され得る。そのような手法を用いると、したがって、コヒーレンシ回路５０によって実行されるハードウェア・プロトコル内に埋め込まれるべきデータを書き込むための権利の確立が可能になる。ステップ３５５において、知られているハードウェア・キャッシュ・コヒーレンシ方式が使用され得る。
【００６７】
しかしながら、領域が完全なハードウェア・コヒーレンシを必要としない場合、プロセスはステップ３６０に進み、メモリ７０におけるロック８０に関して、前に説明したソフトウェア・プロトコル技法を使用して、領域に書込む権利が管理される。次いで、ステップ３６５において、更新された書込みデータを処理デバイスのすべてに見えるようにするために必要とされるステップが、前に説明したハードウェア・プロトコルを使用して管理され、コヒーレンシ回路５０によって実装される。
【００６８】
図７Ａ〜図７Ｄは、キャッシュ・コヒーレンシを実装するためにソフトウェア・プロトコルとハードウェア・プロトコルとが組み合わせられて使用される状況において、ローカル・ライトバック・キャッシュを有する処理デバイスによって実行され得る、例示的な命令シーケンスを示す。図７Ａに示されているように、単一の書込み命令及び関連付けられたクリーン命令がロック取得命令とロック解放命令との間で実行され得る。代替構成では、図７Ｂに示されているように、前述の開始命令及び終了命令は書込み命令のグループを識別するために使用され得、終了命令は、一連の書込み命令によって生成される書込みデータのすべてに関してクリーン動作を開始するために使用される。図７Ｃ及び図７Ｄは、図７Ａに示された構成の変形態であり、特に、ロック取得命令とロック解放命令との間で複数の書込み命令及び関連付けられたクリーン命令が実行される、さらなる代替構成を示す。図７Ｄから、特定の書込み命令に関連付けられたクリーン命令は、必ずしも、シーケンス内の書込み命令の直後に来る必要はないことに留意されたい。
【００６９】
前述のように、前述の開始命令と終了命令とが使用される例示的な構成では、そのような開始命令と終了命令との間で処理デバイスによって実行される書込み動作の指示を維持するように、開始命令と終了命令とを含む命令のシーケンスを実行する処理デバイスに関連して記憶ユニットが設けられ得る。図８はそのような記憶ユニットの１つの例示的な構成を示し、記憶ユニットはＦＩＦＯ記憶回路４５０の形態を取る。
【００７０】
開始命令と終了命令とによってサンドイッチされる書込み命令に遭遇したとき、処理デバイスは、この書込み命令に応答して実行されるべき書込み動作の指示がＦＩＦＯストレージ４４６のエントリ中に追加されるべきであることを、ＦＩＦＯ制御４４８及び関連付けられたライトバック・キャッシュに示す。図８は、ＦＩＦＯストレージ４４６の４つのエントリが現在書込み動作Ａ〜Ｄの指示でポピュレートされている例示的な構成を示す。図に示されているように、これらの指示は、書込み動作のターゲット・メモリ・アドレス（又は実際には部分メモリ・アドレスのみ。ライトバック・キャッシュ中の対応するエントリを識別するためにはそれで十分である）を含み得るか、又は、代わりに、対応するエントリがライトバック・キャッシュ中のどこで見つけられるかを示す、キャッシュ・ブロック・インジケータであり得る。ＦＩＦＯ制御ユニット４４８は、ＦＩＦＯストレージ４４６の全体的制御を維持し、要求に応じて、エントリの追加及びエントリの削除（個々に又はＦＩＦＯの内容全体のいずれか）を管理する。ＦＩＦＯ記憶回路４５０が、ライトバック・キャッシュ中の特定のデータ項目がＦＩＦＯストレージ４４６中の対応するエントリを有するかどうかに関する、ライトバック・キャッシュからの問合せに応答する必要がある場合、ＦＩＦＯ記憶回路４５０は、この機能を与えるために内容アドレス指定可能な様式で構成され得る。そのような個々の問合せが受信され得るときの１つの実例は、ライトバック・キャッシュからのデータ項目のエビクション時であり、それに応答して、ＦＩＦＯ制御４４８は、ＦＩＦＯストレージ４４６中の対応するエントリが削除されるように構成され得る。代替的に、ライトバック・キャッシュからの内容問合せは、キャッシュ・コヒーレンシ機構におけるそれの参加の一部としてライトバック・キャッシュによって受信されるスヌープ問合せに応答して受信され得るが、図９に関して以下で説明するように、ライトバック・キャッシュ自体は、ＦＩＦＯストレージ４４６にこの内容アドレス指定可能なメモリ構成が提供される必要を回避し、したがって、処理デバイスへの比較的小さい追加としてのＦＩＦＯストレージ４４６の提供を促進するために、対応するエントリが現在ＦＩＦＯストレージ４４６中に保持されているかどうかの指示を記憶するように構成され得る。最後に、図８に示されているように、ＦＩＦＯ制御４４８は、さらに、ＦＩＦＯストレージ４４６が完全にポピュレートされた状態になる（したがって、さらなるエントリが作成されることが可能でない）かどうかを監視するように構成される。ＦＩＦＯストレージ４４６が完全にポピュレートされている場合、ＦＩＦＯ制御４４８は、このことをライトバック・キャッシュにシグナリングし、ライトバック・キャッシュ中の対応するエントリが次いで即座にメモリ７０に書き戻されるようにし、ＦＩＦＯ４４６の内容がクリアされる。
【００７１】
図９は、ライトバック・キャッシュ４３２を概略的に示し、このライトバック・キャッシュがコントローラ４６０といくつかのキャッシュ・ライン４６２とを有することを示す。キャッシュ・コントローラ４６０は、データ項目と関連付けられた処理デバイスから受信される制御信号とを監視し、制御信号は処理デバイスのパイプラインとＦＩＦＯ制御４４８の両方から受信される。キャッシュ・ライン４６２は、処理デバイスのデータ処理動作において処理デバイスによって使用されるデータ項目を記憶するように構成され、各キャッシュ・ラインは、データ項目自体と、関連付けられたステータス・マーカー（通常の様式でダーティー／有効など）の両方を記憶する。しかしながら、加えて、各キャッシュ・ラインの１つのビットは、ここでは、クリーンオンスヌープ・マーカーとして扱われ得る専用マーカー４６４として定義され、スヌープが、キャッシュ・ライン４６２のうちの１つに当たる別のキャッシュ／ＣＰＵから受信される場合、マーカー４６４の存在により、そのキャッシュ・ラインがメモリに対してクリーンにされることに留意されたい。キャッシュ・ラインのエビクションはただ１つのそのような実例であり、マーカー４６４は、したがって、クリーンオンエビクト・マーカーとして閲覧され得る。示されている構成では、キャッシュ・コントローラ４６０は、システム中の他のキャッシュから受信されるスヌープを監視するように構成され、マーカー４６４が設定されたキャッシュ４３２のキャッシュ・ライン４６２に記憶されるデータ項目に関する、別のキャッシュからのスヌープが受信されたとき、キャッシュ・コントローラ４６０は、直ちに、そのキャッシュ・ラインがエビクトされるように構成される。このイベントはまた、ＦＩＦＯストレージ４４６中の対応する内容がクリアされ得るように、ＦＩＦＯ制御４４８にシグナリングされる。
【００７２】
図１０は、一実例における、プロセッサデバイスによって実行され得る例示的な命令のシーケンスを示す。この場合、開始命令及び終了命令は、システム内の持続性のポイントを形成する不揮発性メモリに対して実行されるべき一連の書込みを識別するために使用されることが仮定される。特に、不揮発性メモリは不揮発性バイト・アドレス指定可能（ＮＶＢＡ）メモリであり得る。シーケンスの（Ａと標示された）第１の部分は、不揮発性バイト・アドレス指定可能メモリに記憶されないデータ項目にアクセスする、読取り命令、書込み命令、及びデータ処理命令に関係するいくつかの命令を有する。その後に、読取り命令、データ処理命令、及び書込み命令が、不揮発性バイト・アドレス指定可能メモリに記憶されたデータ項目に（少なくとも部分的に）関係する、第１の領域（書込みセット）の開始を定義するｎｖｂａ＿開始命令（前述の開始命令の実例）が続く。（Ｂと標示された）この第１の領域（書込みセット）はｎｖｂａ＿終了命令（前述の終了命令の実例）で終える。その後に、不揮発性バイト・アドレス指定可能メモリに記憶されたデータ項目に関係しない命令（Ａ）の第２のセットが続く。最後に、不揮発性書込みアドレス指定可能メモリに記憶されたデータ項目に（少なくとも部分的に）関係する、読取り命令、データ処理命令、及び書込み命令（Ｂ）の第２の領域（書込みセット）は、第２のｎｖｂａ＿開始命令と第２のｎｖｂａ＿終了命令とによって定義される。ｎｖｂａ＿開始命令及びｎｖｂａ＿終了命令の提供は、プログラマーが書込みセットを定義することを可能にし、本技法は、アクセスされたデータ項目が不揮発性メモリに記憶されるときでも、書込みセットの（互いに対する）順序付けを保存することができ、不揮発性メモリへのアクセスはライトバック・キャッシュによってキャッシュされる。
【００７３】
本明細書で説明する技法によれば、処理デバイスが書込み動作のいずれかを実行する前に書き込む権利を取得することを保証するために前述のソフトウェア・プロトコル機構が使用され得るように、開始命令と終了命令とによって識別されるブロックの各々は、その前にロック取得命令があり、その後にロック解放命令がある。結果として、コヒーレンシ回路によって増分されるハードウェア・プロトコルは、次いで、終了命令によってトリガされるクリーン動作が行われると、書込みデータが様々な他の処理デバイスに見えるようにすることを保証することのみが必要である。
【００７４】
本出願において、「〜ように構成された／ｃｏｎｆｉｇｕｒｅｄ  ｔｏ」という単語は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するために使用される。このコンテキストにおいて、「構成／ｃｏｎｆｉｇｕｒａｔｉｏｎ」はハードウェア又はソフトウェアの相互接続の構成又は様式を意味する。たとえば、装置が、定義された動作を与える専用ハードウェアを有し得るか、又は、プロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された／ｃｏｎｆｉｇｕｒｅｄ  ｔｏ」は、装置要素が、定義された動作を与えるために任意の方法で変更される必要があることを暗示しない。
【００７５】
添付の図面を参照しながら、本明細書において本発明の例示的な実施例について詳細に説明したが、本発明はそれらの正確な実施例に限定されないこと、並びに添付の特許請求の範囲によって定義されている本発明の範囲及び趣旨から逸脱することなく、様々な変更、追加、及び修正が当業者によってその中で実施され得ることを理解されたい。たとえば、本発明の範囲から逸脱することなく、従属クレームの特徴の様々な組合せが独立クレームの特徴とともに行われ得る。
【図１】
2021505994.tif 000003
【図２】
2021505994.tif 000004
【図３】
2021505994.tif 000005
【図４Ａ】
2021505994.tif 000006
【図４Ｂ】
2021505994.tif 000007
【図５】
2021505994.tif 000008
【図６】
2021505994.tif 000009
【図７Ａ】
2021505994.tif 000010
【図７Ｂ】
2021505994.tif 000011
【図７Ｃ】
2021505994.tif 000012
【図７Ｄ】
2021505994.tif 000013
【図８】
2021505994.tif 000014
【図９】
2021505994.tif 000015
【図１０】
2021505994.tif 000016
【国際調査報告】
2021505994.tif 000017
2021505994.tif 000018
2021505994.tif 000019