(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-26
(45)【発行日】2023-08-03
(54)【発明の名称】書込み動作を処理するための装置及び方法
(51)【国際特許分類】
G06F 12/0817 20160101AFI20230727BHJP
【FI】
G06F12/0817
(21)【出願番号】P 2020529307
(86)(22)【出願日】2018-11-28
(86)【国際出願番号】 GB2018053442
(87)【国際公開番号】W WO2019110961
(87)【国際公開日】2019-06-13
【審査請求日】2021-11-19
(32)【優先日】2017-12-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ローズ、アンドリュー クリストファー
(72)【発明者】
【氏名】グリセンスウェイト、リチャード ロイ
(72)【発明者】
【氏名】サイーディ、アリ ガッサン
【審査官】松平 英
(56)【参考文献】
【文献】米国特許第07877549(US,B1)
【文献】特開2008-027435(JP,A)
【文献】特表2017-527023(JP,A)
【文献】特開平09-062577(JP,A)
【文献】特開平09-062580(JP,A)
【文献】特開2009-176179(JP,A)
【文献】中森 章,InterFace 2016年11月号 別冊付録 64ビット&IoT時代コンピュータ・アーキテクチャ MIPSからのアプローチ,第42巻 第11号,日本,CQ出版株式会社,2016年11月01日,pp.83-90
【文献】Hisa Ando,高性能コンピュータ技術の基礎,初版,日本,株式会社毎日コミュニケーションズ,2011年06月20日,pp.117-133、143-167,ISBN:978-4-8399-3796-6
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30-9/355
9/455-9/54
12/00-12/128
13/16-13/18
15/16-15/177
(57)【特許請求の範囲】
【請求項1】
命令のシーケンスを実行する第1の処理デバイスであって、前記シーケンスが、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するための1つ又は複数の書込み動作を実行するために、前記第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも1つの命令と、前記所有権の確立の後に実行される少なくとも1つの書込み命令とを含む、第1の処理デバイスと、
前記第1の処理デバイスに関連付けられ、前記1つ又は複数の書込み動作中に出力された前記書込みデータを記憶するように構成されたライトバック・キャッシュと、
前記ライトバック・キャッシュの複数のエントリが識別されることを可能にする情報を記憶する、記憶ユニットと、
前記ライトバック・キャッシュと、少なくとも1つのさらなる処理デバイスに関連付けられた少なくとも1つのさらなるキャッシュとに結合されたコヒーレンシ回路と
を備える装置であって、
前記第1の処理デバイスが、前記第1の処理デバイスによって実行される前記書込み動作の指示を、命令の前記シーケンス内の開始命令の後に前記記憶ユニットに記憶させるように構成され、
前記第1の処理デバイスが、前記第1の処理デバイスによる前記シーケンス内のクリーニング命令の実行に応答して、指示が前記記憶ユニットに記憶される各書込み動作の対象である書込みデータが、前記ライトバック・キャッシュから前記第1のメモリ領域にクリーンにされるために、クリーン動作を開始し、
前記コヒーレンシ回路が、前記クリーン動作に応答して、前記クリーン動作に関連する前記書込みデータを前記少なくとも1つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも1つのさらなるキャッシュと対話する、
装置。
【請求項2】
前記装置が、前記第1の処理デバイスによってトリガされる前記ソフトウェア・プロトコルと、前記コヒーレンシ回路によって実装される前記ハードウェア・プロトコルとの組合せによって、前記第1のメモリ領域に関してキャッシュ・コヒーレンシ・プロトコルを実装する、請求項1に記載の装置。
【請求項3】
前記コヒーレンシ回路が、前記クリーン動作に応答して、前記少なくとも1つのさらなるキャッシュに、前記書込みデータの前記少なくとも1つのメモリ・ロケーションに関連付けられた内容をもつキャッシュ・エントリを無効にさせるように構成された、請求項1又は請求項2に記載の装置。
【請求項4】
前記少なくとも1つのさらなるキャッシュが複数のキャッシュを備え、
前記コヒーレンシ回路が、前記複数のうちの各キャッシュについて、そのキャッシュによってキャッシュされるデータをもつ前記メモリ・ロケーションの指示を与える記録を維持し、
前記コヒーレンシ回路が、前記書込みデータを前記少なくとも1つのさらなる処理デバイスに見えるようにするために、前記複数のうちのどのキャッシュと対話するべきかを決定するときに前記記録を参照するように構成された、請求項1から3までのいずれか一項に記載の装置。
【請求項5】
前記コヒーレンシ回路がスヌープ回路である、請求項4に記載の装置。
【請求項6】
いくつかのメモリ領域のためのロック指示を維持するためのロック・ストレージをさらに備え、
前記ソフトウェア・プロトコルが、前記第1の処理デバイスによってアクティブ化されたときに、前記第1のメモリ領域のための前記ロック指示がクリアであるかどうかを決定するように構成されるとともに、前記ロック指示がクリアである場合、前記第1のメモリ領域のために前記ロック指示を設定し、前記第1の処理デバイスが前記第1のメモリ領域のための前記所有権を有することを前記第1の処理デバイスに対して識別するように構成された、請求項1から5までのいずれか一項に記載の装置。
【請求項7】
前記書込みデータが前記少なくとも1つのさらなる処理デバイスに見えるようにされたことを前記コヒーレンシ回路から通知されると、前記第1の処理デバイスが、前記所有権を放棄するように構成された、請求項1から6までのいずれか一項に記載の装置。
【請求項8】
前記クリーニング命令が命令の前記シーケンス内の終了命令であり、前記第1の処理デバイスが、前記終了命令の実行に応答して、
前記記憶ユニットに記憶された前記書込み動作の前記指示をクリアする、請求項1に記載の装置。
【請求項9】
前記第1のメモリ領域が、持続性のポイントを形成する不揮発性メモリであり、前記クリーニング命令の実行が、前記書込みデータを持続性の前記ポイントに伝搬させる、請求項1に記載の装置。
【請求項10】
前記第1の処理デバイスが、前記第1のメモリ領域にデータを書き込むための前記所有権が確立されたときにのみ、前記第1のメモリ領域に対して書込み動作を実行するように構成され、前記第1のメモリ領域内のメモリ・ロケーションを指定するペンディング書込み命令は、その前に前記開始命令があり、その後に前記クリーニング命令がある、請求項1に記載の装置。
【請求項11】
少なくとも1つのさらなるメモリ領域について、前記キャッシュ・コヒーレンシ・プロトコルが前記コヒーレンシ回路のみによって実装され、前記第1の処理デバイスが、前記少なくとも1つのさらなるキャッシュに関して前記コヒーレンシ回路によって実行されるステップを介して、前記少なくとも1つのさらなるメモリ領域への排他的書込みアクセスを取得するように構成された、請求項2に記載の、又は、請求項2に従属するときの、請求項3から
7までのいずれか一項に記載の装置。
【請求項12】
第1の処理デバイスと、前記第1の処理デバイスに関連付けられたライトバック・キャッシュと、前記ライトバック・キャッシュの複数のエントリが識別されることを可能にする情報を記憶する記憶ユニットと、前記ライトバック・キャッシュと少なくとも1つのさらなる処理デバイスに関連付けられた少なくとも1つのさらなるキャッシュとに結合されたコヒーレンシ回路とを有する装置において書込み動作を処理する方法であって、前記方法は、
前記第1の処理デバイス上で、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するための1つ又は複数の書込み動作を実行するために、前記第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化する少なくとも1つの命令と、前記所有権の確立の後に実行される少なくとも1つの書込み命令とを含む命令のシーケンスを実行することと、
前記1つ又は複数の書込み動作中に出力された前記書込みデータを前記ライトバック・キャッシュ内に記憶することと、
前記命令のシーケンス内の開始命令の後に実行される前記書込み命令の指示を前記記憶ユニット内に記憶することと、
前記第1の処理デバイスによるクリーニング命令の実行に応答して、指示が前記記憶ユニットに記憶される各書込み動作の対象である書込みデータが、前記ライトバック・キャッシュから前記第1のメモリ領域にクリーンにされるために、前記第1の処理デバイスがクリーン動作を開始するようにすることと、
前記クリーン動作に応答して、前記クリーン動作に関連する前記書込みデータを前記少なくとも1つのさらなる処理デバイスに見えるようにするために、前記コヒーレンシ回路が、ハードウェア・プロトコルを実装するために前記少なくとも1つのさらなるキャッシュと対話するようにすることと
を含む方法。
【請求項13】
命令のシーケンスを実行する第1の処理手段であって、前記シーケンスが、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するために1つ又は複数の書込み動作を実行するために、前記第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも1つの命令と、前記所有権の確立の後に実行される少なくとも1つの書込み命令とを含む、第1の処理手段と、
前記1つ又は複数の書込み動作中に出力された前記書込みデータを記憶するための、前記第1の処理手段に関連付けられたライトバック・キャッシュ手段と、
前記ライトバック・キャッシュ手段の複数のエントリが識別されることを可能にする情報を記憶する、記憶手段と、
前記ライトバック・キャッシュ手段と、少なくとも1つのさらなる処理手段に関連付けられた少なくとも1つのさらなるキャッシュ手段とに結合するためのコヒーレンシ手段と
を備える装置であって、
前記第1の処理手段が、前記第1の処理手段によって実行される前記書込み動作の指示を、命令の前記シーケンス内の開始命令の後に前記記憶手段に記憶させるように構成され、
前記第1の処理手段が、前記第1の処理手段による前記シーケンス内のクリーニング命令の実行に応答して、指示が前記記憶手段に記憶される各書込み動作の対象である書込みデータが、前記ライトバック・キャッシュ
手段から前記第1のメモリ領域にクリーンにされるために、クリーン動作を開始し、
前記コヒーレンシ手段が、前記クリーン動作に応答して、前記クリーン動作に関連する前記書込みデータを前記少なくとも1つのさらなる処理手段に見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも1つのさらなるキャッシュ手段と対話する、
装置。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、書込み動作を処理するための装置及び方法に関する。
【背景技術】
【0002】
データ処理システムは、しばしば、データに対してデータ処理動作を実行することができる複数の処理デバイスを含み、それらの様々な処理デバイスは、メモリ中の共有データへのアクセスを有するように構成され得る。しばしば、処理デバイスは、それらの処理デバイスによって操作されるデータが、毎回メモリからフェッチされる必要がある場合に可能であるよりも速いそのデータへのアクセスを可能にするためにキャッシュされ得る、1つ又は複数のレベルのローカル・キャッシュを含む。
【0003】
しかしながら、ローカル・キャッシュの存在はコヒーレンシ問題を引き起こし得、その場合、最も最新のバージョンが別の処理デバイスのローカル・キャッシュにキャッシュされるとき、1つの処理デバイスが古いデータにアクセスする可能性がある。
【0004】
ハードウェア・キャッシュ・コヒーレンシ機構がそのような状況のために開発されたが、それらの機構は、ハードウェア面積及び/又は実行時間に関して実装するのに比較的費用がかかり得る。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【課題を解決するための手段】
【0006】
第1の例示的な構成では、命令のシーケンスを実行する第1の処理デバイスであって、前記シーケンスが、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するために1つ又は複数の書込み動作を実行するために、第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも1つの命令と、所有権の確立の後に実行される少なくとも1つの書込み命令とを含む、第1の処理デバイスと、第1の処理デバイスに関連付けられ、1つ又は複数の書込み動作中に出力された書込みデータを記憶するように構成されたライトバック・キャッシュと、ライトバック・キャッシュと、少なくとも1つのさらなる処理デバイスに関連付けられた少なくとも1つのさらなるキャッシュとに結合されたコヒーレンシ回路とを備える装置であって、
第1の処理デバイスが、書込みデータがライトバック・キャッシュからメモリに書き込まれるようにするために、トリガ・イベントに応答してクリーン動作を開始し、
コヒーレンシ回路が、クリーン動作に応答して、書込みデータを前記少なくとも1つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも1つのさらなるキャッシュと対話する、装置が提供される。
【0007】
さらなる例示的な構成では、第1の処理デバイスと、第1の処理デバイスに関連付けられたライトバック・キャッシュと、ライトバック・キャッシュと少なくとも1つのさらなる処理デバイスに関連付けられた少なくとも1つのさらなるキャッシュとに結合されたコヒーレンシ回路とを有する装置において書込み動作を処理する方法であって、本方法は、
第1の処理デバイス上で、第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化する少なくとも1つの命令と、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するための1つ又は複数の書込み動作を実行するために、所有権の確立の後に実行される少なくとも1つの書込み命令とを実行することと、
1つ又は複数の書込み動作中に出力された書込みデータをライトバック・キャッシュ内に記憶することと、
トリガ・イベントに応答して、書込みデータが前記ライトバック・キャッシュからメモリに書き込まれるようにするために、第1の処理デバイスがクリーン動作を開始するようにすることと、
クリーン動作に応答して、書込みデータを前記少なくとも1つのさらなる処理デバイスに見えるようにするために、コヒーレンシ回路が、ハードウェア・プロトコルを実装するために前記少なくとも1つのさらなるキャッシュと対話するようにすることと
を含む方法が提供される。
【0008】
さらに他の例示的な構成では、命令のシーケンスを実行する第1の処理手段であって、前記シーケンスが、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するために1つ又は複数の書込み動作を実行するために、第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも1つの命令と、所有権の確立の後に実行される少なくとも1つの書込み命令とを含む、第1の処理手段と、
1つ又は複数の書込み動作中に出力された書込みデータを記憶するための、第1の処理手段に関連付けられたライトバック・キャッシュ手段と、
ライトバック・キャッシュ手段と少なくとも1つのさらなる処理手段に関連付けられた少なくとも1つのさらなるキャッシュ手段とに結合するためのコヒーレンシ手段と
を備える装置であって、
第1の処理手段が、トリガ・イベントに応答して、書込みデータがライトバック・キャッシュ手段からメモリに書き込まれるようにするために、クリーン動作を開始し、
コヒーレンシ手段が、クリーン動作に応答して、書込みデータを前記少なくとも1つのさらなる処理手段に見えるようにするために、ハードウェア・プロトコルを実装するために前記少なくとも1つのさらなるキャッシュ手段と対話する、
装置が提供される。
【0009】
添付の図面に示されている本技法の実例を参照しながら、本技法について単に実例としてさらに説明する。
【図面の簡単な説明】
【0010】
【
図1】本明細書で説明する技法が実装され得る例示的なシステムのブロック図である。
【
図2】
図1のコヒーレンシ回路によって維持され得るディレクトリの1つの実例を示す図である。
【
図3】
図1のシステムのメモリ内に設けられ得るロック・ストレージの1つの実例を示す図である。
【
図4A】1つ又は複数の書込み動作を実行するときに処理デバイス内で実行され得るプロセスの流れ図を提示する図である。
【
図4B】1つ又は複数の書込み動作を実行するときに処理デバイス内で実行され得るプロセスの流れ図を提示する図である。
【
図5】1つ又は複数の書込み動作を実行した処理デバイスによって開始されたクリーン動作に応答して、1つの例示的な構成におけるコヒーレンシ回路によって実行されるステップを示す流れ図である。
【
図6】
図1のシステムによって採用されるコヒーレンシ機構を、書込み動作が実行されるべきメモリ領域にどのように依存させることができるかを示す流れ図である。
【
図7A】例示的な構成における処理デバイスのうちの1つによって実行され得るコードの例示的なシーケンスを示す図である。
【
図7B】例示的な構成における処理デバイスのうちの1つによって実行され得るコードの例示的なシーケンスを示す図である。
【
図7C】例示的な構成における処理デバイスのうちの1つによって実行され得るコードの例示的なシーケンスを示す図である。
【
図7D】例示的な構成における処理デバイスのうちの1つによって実行され得るコードの例示的なシーケンスを示す図である。
【
図8】クリーンにされる必要がある書込み動作を追跡するために、1つの例示的な構成における、1つ又は複数の処理デバイス中に設けられ得るFIFO(先入れ先出し)ストレージを示す図である。
【
図9】1つの例示的な構成におけるライトバック・キャッシュを概略的に示す図である。
【
図10】一実例においてデータ処理デバイスが実行し得る命令の例示的なシーケンスを示す図である。
【発明を実施するための形態】
【0011】
各自のローカル・キャッシュ構造をもつ複数の処理デバイスを有するシステムでは、一般に、各処理デバイスが、処理デバイスの間で共有されるデータの同じビューを有することを保証するために、キャッシュ・コヒーレンシ・プロトコルが実装される。そのようなキャッシュ・コヒーレンシ・プロトコルは、異なる処理デバイスが、メモリ・ロケーションに関連付けられたデータを競合する形で更新することができないことを保証する必要があり、これは、たとえば、2つの異なる処理デバイスが、同時に同じデータに関して書込み動作を実行することが可能にされた場合に起こり得る(これは「レーシング書込み」条件と呼ばれることがある)。したがって、特定のメモリ・アドレスにおけるデータに関して書込み動作が必要とされるときに、知られているハードウェア・キャッシュ・コヒーレンシ方式に従うと、書込み動作を実行することを望む処理デバイスはコヒーレンシ回路に通知し、それにより、要求側処理デバイスが、次いで、他の処理デバイスのいずれかがそのメモリ・アドレスに関して競合する書込みを実行する危険なしに書込み動作を実行し得ることを保証するために、他の処理デバイスによって保持され得るそのデータのキャッシュされたコピーを考慮しながら、次いでコヒーレンシ回路が必要なステップを実行する。コヒーレンシ回路はまた、いずれかの処理デバイスがその後メモリ・アドレスへのアクセスを要求するときはいつでも、処理デバイスがデータの最も最新のバージョンを取得することを保証することができる。
【0012】
しかしながら、データが複数の処理デバイスの間で共有されるいくつかのシステムでは、発明者らは、どの時点においてもただ1つの処理デバイスが特定のメモリ・ロケーションに書き込む能力を有することを効果的に保証することができるソフトウェア方式も適当であり得ることに気づいた。単に例として、データの大きいデータベースが様々な処理デバイスの間で共有され得るラックスケール計算システムでは、どの処理デバイスがどの特定の時点においてどの特定のメモリ・ロケーションに書き込むことが可能であるかを制御するために、ソフトウェア技法が使用され得る。したがって、発明者らは、そのようなシステムでは、通常、キャッシュ・コヒーレンシ機構に関連付けられた機能のうちのいくつかは、もはやコヒーレンシ回路によって実行される必要がないということに気づいた。
【0013】
特に、発明者らは、ハードウェア・コヒーレンシ機構によって実行される機能は、本質的に、データを書き込む処理デバイスの権利を確立するためのステップと、更新された書込みデータを他の処理デバイスに見えるようにするために書込み動作が実行された後で取られるさらなるステップとを伴うことに気づいた。どの処理デバイスがどの特定のメモリ・ロケーションに書き込むことができるかを効果的に制御するためのソフトウェア機構をすでに設けたシステムでは、発明者らは、キャッシュ・コヒーレンシ・プロトコルがハードウェアにおいて完全に実装される必要なしに、キャッシュ・コヒーレンシが効果的に維持され得ることに気づいた。特に、データを書き込む権利を確立するために必要とされるステップはソフトウェアにおいて実行され得、その場合、更新された書込みデータが他の処理デバイスに見えるようにされることを確かめるためにハードウェア機構が使用される。これは、システム内でキャッシュ・コヒーレンシ・サポートを与えることに関連する(ハードウェア面積及び/又は実行時間に関した)コストのかなりの低減につながり得る。
【0014】
1つの例示的な構成では、命令のシーケンスを実行するように構成された第1の処理デバイスを備える装置が提供され得、シーケンスは、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに記憶するための書込みデータを出力するために1つ又は複数の書込み動作を実行するために、第1のメモリ領域にデータを書き込むための所有権を確立するためのソフトウェア・プロトコルをアクティブ化するための少なくとも1つの命令と、所有権の確立の後に実行される少なくとも1つの書込み命令とを含む。第1の処理デバイスは、第1の処理デバイスに関連付けられたライトバック・キャッシュを有し、1つ又は複数の書込み動作中に出力された書込みデータがライトバック・キャッシュに記憶される。さらに、ライトバック・キャッシュと、少なくとも1つのさらなる処理デバイスに関連付けられた少なくとも1つのさらなるキャッシュとに結合されたコヒーレンシ回路が設けられる。
【0015】
ソフトウェア・プロトコルの使用によって、第1の処理デバイスに第1のメモリ領域に関して所有権が与えられたとき、他の処理デバイスは、その第1のメモリ領域に対して競合する書込み動作を実行することができないことが保証され得る。しかしながら、第1の処理デバイスによって生成された書込みデータが、他の処理デバイスに見えるようにされることを保証する必要が依然としてある。
【0016】
説明した実例によれば、これは、書込みデータがライトバック・キャッシュからメモリに書き込まれるようにするために、第1の処理デバイスが、トリガ・イベントに応答して、クリーン動作を開始することによって達成される。ライトバック・キャッシュからメモリへの書込みデータの項目の「クリーニング」は、ここでは、ライトバック・キャッシュ中に記憶されたそのデータ項目の変更されたコピー(すなわち、本明細書で参照される書込みデータ)が、メモリに記憶された元のデータ項目を更新するために使用されることを意味すると理解されるべきである。クリーニング動作が実行されることに加えて、コヒーレンシ回路は、次いで、クリーン動作に応答して、書込みデータを少なくとも1つのさらなる処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装するために少なくとも1つのさらなるキャッシュと対話するように構成される。
【0017】
そのような手法によれば、処理デバイス上で実行されるべき命令を書き込むソフトウェア・プログラマーは、書込み動作が第1のメモリ領域に関して実行されるべきときに、関連がある処理デバイスが、最初に、ソフトウェア・プロトコルを使用して所有権を確立することを求めるように、所有権を確立するために必要とされるソフトウェア・プロトコルを知っている必要があり、特に、様々な処理デバイスによって実行される命令のシーケンス内に適切な命令を含む必要がある。これは、そのような問題を回避する役割をソフトウェアが担うので、ハードウェア・コヒーレンシ回路はレーシング書込みの問題を考慮する必要がないことを意味する。しかしながら、次いで、書込みデータを少なくとも1つのさらなる処理デバイスに見えるようにするという問題を処理するために、ハードウェア・プロトコルがコヒーレンシ回路によって実装され得る。コヒーレンシ回路は、クリーン動作の通知に直接応答して、必要とされるステップを引き受けることができるので、処理デバイス上で実行しているソフトウェアは、書込み動作を実行する前に他の処理デバイスによって保持されるデータのコピーをクリーンする及び/若しくは無効にするステップを取る必要がないか、又はデータが書き込まれた後に、他の処理デバイス上でコピーを無効にするためのステップを取る必要がない。
【0018】
結果として、採用される手法は、キャッシュ・コヒーレンシ・プロトコル全体がソフトウェア様式で実装されるべき状況よりも、ソフトウェアの視点から、はるかに煩瑣でない。さらに、必要とされるハードウェア・プロトコルは、書込みデータを他の処理デバイスに見えるようにするという問題のみに関係すればよく、書き込む権利の確立はソフトウェアに移譲されるため、採用される手法は、完全なキャッシュ・コヒーレンシ・プロトコルがハードウェアにおいて実装されるシステムよりも、実装するのに(ハードウェア面積及び/又は実行時間に関して)著しくコストがかからない。コヒーレンシ回路によって実装されるハードウェア・プロトコルは、その機能を実装するために、処理デバイス上で実行されるコードに命令が追加される必要がなく、代わりに、コヒーレンシ回路が、クリーン動作によってトリガされるハードウェアにおいて必要とされる機能を完全に実装するので、ソフトウェア・プログラマーに対して完全に透過的にされ得る。
【0019】
したがって、上記で説明した技法によれば、装置は、第1の処理デバイスによってトリガされるソフトウェア・プロトコルとコヒーレンシ回路によって実装されるハードウェア・プロトコルとの組合せによって、第1のメモリ領域に関してキャッシュ・コヒーレンシ・プロトコルを実装するように構成され得ることが諒解されよう。これにより、特に、ただ1つの処理デバイスがどの特定のメモリ・ロケーションにも1回で書き込むことができることを、適切なソフトウェア機構を介してすでに保証するシステムにおいて、キャッシュ・コヒーレンシを実装するための極めて効率的な機構が提供され得る。
【0020】
コヒーレンシ回路がクリーン動作に応答する様式は、実装に応じて変動させられ得る。一実例では、コヒーレンシ回路は、クリーン動作に応答して、少なくとも1つのさらなるキャッシュに、書込みデータの少なくとも1つのメモリ・ロケーションに関連付けられた内容をもつキャッシュ・エントリを無効にさせるように構成される。この時点で、当該のメモリ・ロケーションについての最も最新のデータは、1つ又は複数の書込み動作の実施中に第1の処理デバイスによって生成されたものであることが知られているので、単にそれらのキャッシュ・エントリを無効にするだけで十分である。さらに、クリーン動作は、データのその最新のバージョンをメモリに出力させ、したがって、やがて、少なくとも1つのさらなる処理デバイスのいずれかが少なくとも1つのメモリ・ロケーションについてのデータを要求すると、その処理デバイスのローカル・キャッシュ中にミスが発生し、正しいデータがメモリから取り出される。
【0021】
上記で説明した様式でエントリを無効にすることは、取ることができる最も簡単な手法であるが、必要な場合、エントリを無効にするのではなく、代わりに、第1の処理デバイスによって生成される最新の書込みデータを記憶するために、書込みデータの少なくとも1つのメモリ・ロケーションに関連付けられた内容をもつキャッシュ・エントリが更新され得る。これにより、データがある将来の時点で必要とされた場合、そのデータがその後メモリから再要求されなければならないことが回避されるであろう。
【0022】
コヒーレンシ回路は、様々な方法で動作するように構成され得る。たとえば、コヒーレンシ回路は、クリーン動作に応答して、単に、さらなる処理デバイスに関連付けられたすべてのキャッシュが、書込み動作の影響を受けたデータのコピーをキャッシュしているか否かにかかわらず、それらのキャッシュに無効化又は更新要求をブロードキャストするように構成され得る。しかしながら、代替実施例では、コヒーレンシ回路は、よりターゲットを絞った動作を実行するように構成され得る。特に、一実例では、少なくとも1つのさらなるキャッシュは複数のキャッシュを備え、コヒーレンシ回路は、前記複数のうちの各キャッシュについて、そのキャッシュによってキャッシュされるデータをもつメモリ・ロケーションの指示を与える記録を維持する。コヒーレンシ回路は、次いで、書込みデータを少なくとも1つのさらなる処理デバイスに見えるようにするために、前記複数のうちのどのキャッシュと対話するかを決定するときに、記録を参照するように構成される。
【0023】
記録がコヒーレンシ回路によって維持される1つのそのような実例では、コヒーレンシ回路はスヌープ回路の形態を取り得る。スヌープ回路は、どのメモリ・アドレスがシステム中の様々なキャッシュによってキャッシュされるかの指示を維持し、その情報を使用して、キャッシュ・コヒーレンシ・プロトコルを実装するために特定のキャッシュに対してスヌープ要求のターゲットを絞ることができる、知られているタイプのキャッシュ・コヒーレンシ回路である。しかしながら、上記で説明した技法によれば、少なくとも第1のメモリ領域について、データを書き込む権利を確立する態様が代わりにソフトウェア・プロトコルに移譲されるので、スヌープ回路は、完全なキャッシュ・コヒーレンシ・プロトコルを実装する必要がない。
【0024】
ソフトウェア・プロトコルが本装置内で実装され得るいくつかの方法がある。一実例では、本装置は、いくつかのメモリ領域についてのロック指示を維持するためのロック・ストレージをさらに備え、ソフトウェア・プロトコルは、第1の処理デバイスによってアクティブ化されたとき、第1のメモリ領域についてのロック指示がクリアであるかどうかを決定するように構成される。ロック指示がクリアである場合、ソフトウェア・プロトコルは、第1のメモリ領域についてロック指示を設定させ、第1の処理デバイスが第1のメモリ領域のための所有権を有することを、第1の処理デバイスに対して識別する。
【0025】
したがって、各メモリ領域についてのロック指示は、関連するメモリ領域が更新されている過程にあるときにそのことを示すように設定され得る、別個の変数として保持される指示の形態として閲覧され得る。
【0026】
ロック・ストレージによって追跡される各メモリ領域は、実装に応じて、個々のメモリ・アドレス、又は一連のメモリ・アドレスを備え得る。各メモリ・ロケーションはメモリ・アドレスによって識別され、したがって、ロック・ストレージによって追跡される各メモリ領域内に1つ又は複数のメモリ・ロケーションがあり得る。
【0027】
1つの例示的な構成では、書込みデータが少なくとも1つのさらなる処理デバイスに見えるようにされたことを、コヒーレンシ回路から通知されると、第1の処理デバイスは、所有権を放棄するように構成される。したがって、第1の処理デバイスに所有権が与えられると、その第1の処理デバイスによって生成された書込みデータが他の処理デバイスのいずれかに見えることが保証されることが保証され得るまで、第1の処理デバイスは所有権を保持する。いくつかの事例では、これは、書込みデータがシステム内のコヒーレンスのポイント(たとえば、データがメモリに書き込まれる前にデータが一時的に記憶されるバッファ・ストレージ)に到達し、したがって、他の処理デバイスのいずれかが、影響を受けたメモリ・ロケーションにあるデータを要求するとき、その最新の書込みデータがまだメイン・メモリに書き込まれていない場合、他の処理デバイスのいずれかがコヒーレンスのポイントからその最新の書込みデータを取得することが保証され得るという条件で、書込みデータが実際にメイン・メモリに書き込まれたことを意味しないことに留意されたい。
【0028】
第1の処理デバイスによってクリーン動作を開始するために使用されるトリガ・イベントは様々な形式を取ることができる。たとえば、トリガ・イベントは、命令のシーケンス内のクリーニング命令の第1の処理デバイスによる実行により行われ得、そのクリーニング命令の実行は、クリーン動作が実行されるようにする。別の実例として、トリガ・イベントは、書込みデータを含んでいるライトバック・キャッシュのエントリに関してエビクション・イベントがトリガされた場合に起こり得る。これは、たとえば、ライトバック・キャッシュ内の容量問題、特に、キャッシュ中に割り振られるべき新しいデータのための空間を作成するためにビクティム・エントリが選択される必要があることにより起こり得る。たとえば、そのようなエビクション・イベントは、第1の処理デバイスが、書込み動作のうちの1つによって書き込まれたエントリをアクティブにクリーンするためのクリーニング命令を実行する前に、そのエントリをビクティム・エントリとしてターゲットにし得ることが可能である。
【0029】
クリーニング命令は様々な形式を取ることができる。たとえば、簡単なケースでは、書込みデータが、必要とされるメモリ・ロケーションに書き込まれると、後続のクリーニング命令が次いでそのメモリ・ロケーションを識別するように、各書込み命令に関連付けられたクリーニング命令があり得る。
【0030】
しかしながら、代替構成では、単一のクリーニング命令が、ライトバック・キャッシュの複数のエントリのクリーニングをトリガするように構成され得、そのような事例では、本装置は、複数のエントリが識別されることを可能にする情報を記憶するための記憶ユニットをさらに備え得る。たとえば、同一出願人が所有する同時係属米国特許出願第15/501,278号に記載された技法が利用され得、そこでは、クリーニング命令は、その中に規定された終了命令の形態を取ることができ、これにより、書込み動作にかけられたライトバック・キャッシュ内のいくつかの識別されたエントリが次いでメイン・メモリに対してクリーンにされる。上記の同時係属ケースに記載されている実例では、メモリは、システム内に持続性のポイントを形成する不揮発性メモリを形成し、終了命令の実行により、識別されたエントリからの書込みデータが持続性のポイントに伝搬される。しかしながら、本技法では、終了命令は、メモリの形態とは無関係に使用され得、上記で説明した機構と組み合わせられたとき、書込み動作のシーケンスによって生成される書込みデータに関連してキャッシュ・コヒーレンシを維持するための極めて効率的な技法を与えることができ、ソフトウェア・プロトコルは、他の処理デバイスがメモリ領域内で競合する書込み動作を実行することができないことを保証し、ハードウェア・コヒーレンシ回路は、次いで、クリーン動作に応答して、書込みデータのすべてを少なくとも1つのさらなる処理デバイスに見えるようにする。
【0031】
1つの例示的な構成では、記憶ユニットは、第1の処理デバイスによって実行される書込み動作の指示を記憶するように構成され得、クリーニング命令は命令のシーケンス内の終了命令であり得、第1の処理デバイスは、終了命令の実行に応答して、指示が記憶ユニットに記憶される各書込み動作の対象である書込みデータがライトバック・キャッシュからメモリにクリーンにされるようにし、記憶ユニットに記憶された書込み動作の指示をクリアし得る。
【0032】
上記で説明した終了命令技法を使用することによって、データ処理装置のプログラマーが、(書込み命令の実行によって開始される)書込み動作の特定の順序付けがメモリに対して行われることを保証することを望む状況では、これは、本装置が実行するべきデータ処理動作を定義するための、プログラマーによって与えられる命令のシーケンスへの終了命令の追加によって行われ得る。
【0033】
いくつかの例示的な構成では、第1の処理デバイスは、さらに、第1の処理デバイスによって実行される書込み動作の指示を、命令のシーケンス内の開始命令の後に記憶ユニットに記憶させるように構成される。したがって、処理デバイスが応答する命令セットにさらなる命令が追加され得、これにより、システム・プログラマーは、(開始命令によって先行され、終了命令によって終了される)書込み動作の「書込みセット」をカプセル化することが可能になる。次いで、ライトバック・キャッシュの動作に関して、及び第1の処理デバイスの動作によってではなく(これは、スケジューリングの理由で、特定の命令が実行される順序を変更し得る)、プログラマーによって望まれる(他の書込み動作に対するこの書込みセットの)書込み順序がメイン・メモリの内容において尊重されることが保証され得る。
【0034】
1つの例示的な構成では、第1の処理デバイスは、第1のメモリ領域にデータを書き込むための所有権が確立されたときにのみ、第1のメモリ領域に対して書込み動作を実行するように構成され得、第1のメモリ領域内のメモリ・ロケーションを指定するペンディング書込み命令は、その前に開始命令があり、その後に終了命令がある。
【0035】
上記で説明した技法はメモリ内のメモリ領域のすべてに関して採用され得るが、他の実例では、上記で説明した技法は特定のメモリ領域に限定され得、他のメモリ領域について、必要な場合、完全なハードウェア・キャッシュ・コヒーレンシ方式が実装され得る。したがって、1つのそのような構成では、少なくとも1つのさらなるメモリ領域について、キャッシュ・コヒーレンシ・プロトコルはコヒーレンシ回路のみによって実装され、第1の処理デバイスは、少なくとも1つのさらなるキャッシュに関してコヒーレンシ回路によって実行されるステップを介して、少なくとも1つのさらなるメモリ領域への排他的書込みアクセスを取得するように構成される。したがって、少なくとも1つのさらなるメモリ領域について、ソフトウェア・プロトコルは使用されず、代わりに、第1の処理デバイスが、書込み動作を実行する前にそのメモリ領域への排他的書込みアクセスを取得することを保証するために、システム内の様々な他のキャッシュに対してコヒーレンシ回路によって直接取られるステップが使用される。
【0036】
次に、図を参照しながら、特定の実例について説明する。
【0037】
図1は、上記で説明した技法が実装され得るシステムのブロック図である。複数の処理デバイス10、20、30は、メモリ70へのアクセスを有するように構成される。各処理デバイスには1つ又は複数のレベルのローカル・キャッシュ15、25、35が設けられ得、それらのローカル・キャッシュに、処理デバイスによって処理されているデータのローカル・コピーが一時的に記憶される。各データ値は、メモリ70内のメモリ・ロケーションを識別する関連付けられたメモリ・アドレスを有し、標準的な慣例に従って、データ値のコピーが、一般には、そのメモリ・アドレスの指示とともにキャッシュ内に記憶される。たとえば、1つ又は複数の書込み動作がローカル・キャッシュ中のデータに関して処理デバイスによって実行された結果として、そのデータが更新された場合、更新されたデータがメモリ70に書き戻され得る。キャッシュは様々な方法で構成され得る。たとえば、キャッシュがライト・スルー・キャッシュとして構成された場合は、キャッシュ・ラインに記憶されたデータになされた更新も、更新が遅延なしにメモリにおいて複製されるようにするために、相互接続40を介してメモリ70に伝搬される。しかしながら、少なくとも1つのレベルのローカル・キャッシュがライトバック・キャッシュとして構成されることが一般的であり、キャッシュに保持されるデータの更新されたバージョンはすぐにはメモリに伝搬されない。代わりに、メモリよりも最新であるデータを含んでいるキャッシュ・ラインにダーティー・フラグが関連付けられ得、その結果、それらのキャッシュ・ライン内容がその後キャッシュからエビクトされたとき、必要な更新がメモリになされ得る。本明細書で説明する技法は、ライトバック・キャッシュとして構成された少なくとも1つのレベルのローカル・キャッシュを有するいかなる処理デバイスに関しても適用され得る。
図1において、キャッシュ15は1つのライトバック・キャッシュとして識別されるが、1つの例示的な構成では、ローカル・キャッシュ15、25、35の各々がライトバック・キャッシュであり得る。
【0038】
個々の処理デバイスのそれぞれのローカル・キャッシュ15、25、35中のデータのコピーをローカルにキャッシュする個々の処理デバイスの能力により、競合する書込み動作が、同じメモリ・ロケーションに関して、異なる処理デバイス内で行われないことを保証するために、及び各処理デバイスが共有データの同じビューを有することを保証するために、キャッシュ・コヒーレンシ・プロトコルを実装することが必要である。特に、メモリに保持されたデータの一部は特定の処理デバイスに固有であり得るが、処理デバイスがメモリに保持されるデータの一部を共有することが多い。実例として、メモリは共有データベース75を含み得、処理デバイスの各々には、共有データベース75に保持される情報に関して処理タスクが割り振られ得る。共有データベース中の特定のデータが複数の処理デバイスによって競合する更新にかけられないこと、及び処理デバイスの各々に、共有データベース75に保持されるデータの一貫したビューが与えられることを保証することが重要である。
【0039】
1つの例示的な構成では、キャッシュ・コヒーレンシ・プロトコルの少なくとも一部を実装するために相互接続40内にコヒーレンシ回路50が設けられ得る。キャッシュ・コヒーレンシ・プロトコルを実装するとき、本質的に、引き受けられる必要がある2つのタスクがある。特に、処理デバイスが、特定のメモリ・ロケーションに関して書込み動作を実行することを望むとき、書込み動作を行うことを望む処理デバイスが、そのメモリ・ロケーションに関してその書込み動作を実行する権利を確立したことを保証することが必要である。これは、同じメモリ・ロケーションに関して行われる競合する書込みの予想を回避するために使用され得る。さらに、特定のメモリ・ロケーションについてのデータがそのような書込み動作を介して更新されると、他の処理デバイスがそのメモリ・ロケーションへのアクセスを要求するときはいつでも、他の処理デバイスが更新されたデータを参照することを保証することが重要である。したがって、キャッシュ・コヒーレンシ・プロトコルの一部として、書込み動作の結果が他の処理デバイスのすべてに見えるようにされることを保証することが必要である。
【0040】
本明細書で説明する技法によれば、上述の必要とされる機能を考慮に入れるために、キャッシュ・コヒーレンシ・プロトコルをハードウェアにおいて完全に実装するために、相互接続内にコヒーレンシ回路を構成することが可能であるが、少なくともいくつかのメモリ領域について、キャッシュ・コヒーレンシ・プロトコルの実装はソフトウェアとハードウェアとの間でスプリットされる。特に、コヒーレンシ回路50は、書込み動作の結果として1つの処理デバイスによって生成された更新されたデータが他の処理デバイスに見えるようにされることを保証するために使用され得る。しかしながら、メモリ・ロケーションにデータを書き込む権利を取得することはソフトウェア・プロトコルに移譲され、その結果、コヒーレンシ回路50はその態様を考慮する必要がない。後でより詳細に説明するように、いずれかの処理デバイスが、スプリットされたソフトウェア/ハードウェア機構によって制御されるキャッシュ・コヒーレンシをもつメモリ領域内のメモリ・アドレスに書込み動作を実行する前に、その処理デバイスが、関連があるメモリ領域に関して所有権を取得することを保証するために、ソフトウェア・プロトコルは、メモリ70において維持されるロック80を使用してロックベース機構を使用することができる。そのような手法によって、ソフトウェアは、そのようなメモリ領域に関してレーシング書込み条件が起こることを回避するタスクを課され、コヒーレンシ回路は、次いで、更新された書込みデータを他の処理デバイスに見えるようにするために、ハードウェア・プロトコルを実装する。
【0041】
本明細書で説明する技法によれば、指定されたメモリ領域の1つ又は複数のメモリ・ロケーション内で更新された書込みデータを生成するために、書込み動作、又はいくつかの事例では一連の書込み動作が実行されると、ローカル・ライトバック・キャッシュ15内のその更新された書込みデータがメモリ70内の適切なメモリ・ロケーションに伝搬されるようにするために、クリーン動作がトリガされる。一実例では、メモリは、不揮発性メモリであり、したがって、システム内の持続性のポイントを表す。特に、データがメモリ70にコミットされると、そのデータは、電力がシステムから除去された場合でも残る。クリーン動作は、したがって、データをシステム内の持続性のポイントに伝搬させることができる。しかしながら、別の実例では、メモリは不揮発性メモリである必要はない。
【0042】
説明した技法によれば、コヒーレンシ回路は、クリーン動作の開始に応答して、次いで、書込みデータを他の処理デバイスに見えるようにするために、いくつかのコヒーレンシ行為を取る。
【0043】
たとえば、処理デバイス10が、その処理デバイスが第1のメモリ領域にデータを書き込むための所有権を確立するために、ソフトウェア・プロトコルをアクティブ化するための命令を実行し、次いで、第1のメモリ領域内の少なくとも1つのメモリ・ロケーションに対して1つ又は複数の書込み動作を実行し、それにより、更新された書込みデータがローカル・ライトバック・キャッシュ15内に記憶される状況について考える。処理デバイス10は、次いで、影響を受けた書込みデータのすべてが、適切なメモリ・ロケーションに記憶するためにメモリ70に伝搬されるようにするために、クリーン動作を開始するためのクリーン命令を実行し得る。コヒーレンシ回路は、次いで、そのクリーン動作に応答して、他の処理デバイス20、30が更新されたデータへのアクセスを必要とする場合、それらの処理デバイス20、30がそのデータを参照することを保証するために、それらの処理デバイス20、30のローカル・キャッシュ25、35に関連したステップを取ることができる。1つのシナリオでは、コヒーレンシ回路は、単にローカル・キャッシュ25、35の各々に無効化要求を伝搬し、影響を受けたメモリ・ロケーションを指定するように構成され得る。各ローカル・キャッシュは、次いで、そのメモリ・ロケーションのためのキャッシュにエントリが存在するかどうかを決定するために、各指定されたメモリ・ロケーションに関してルックアップを実行する。そうである場合、現在の内容は、次いで、ローカル・キャッシュ内で無効にされる。これは、処理デバイスが、その後、そのメモリ・アドレスにおけるデータのための要求を行う場合、ローカル・キャッシュにおいてミスが検出され、データが次いでメモリから取得されるようになり、その結果、正しいデータが処理デバイス20、30によって受信されることを保証する。
【0044】
簡単な構成では、コヒーレンシ回路は他のローカル・キャッシュのすべてに対する無効化要求をただブロードキャストし得るだけであるが、代替実施例では、コヒーレンシ回路は、スヌープ・コントローラ55と、関連付けられたディレクトリ60とを含むスヌープ回路の形態を取り得る。ディレクトリは、ローカル・キャッシュ15、25、35の各々によってデータがキャッシュされるメモリ・ロケーションの指示を与えるために、スヌープ・コントローラによって維持される。したがって、クリーン動作の影響を受けたメモリ・ロケーション又は複数のメモリ・ロケーションに関して、スヌープ・コントローラ55は、様々なローカル・キャッシュのうちのどれが、影響を受けたデータのキャッシュされたローカル・コピーを有し得るかを識別するために、ディレクトリ内でルックアップを実行することができ、したがって、単に無効化要求をあらゆるキャッシュにブロードキャストするのではなく、無効化要求を関連があるキャッシュにターゲットすることができる。
【0045】
そのような手法によって、コヒーレンシ回路は、クリーン動作に応答して、更新された書込みデータがメモリに書き込まれるポイントにおいて、処理デバイスのすべてがそのデータの一貫したビューを有することが保証され得ることを、保証することができることがわかる。
【0046】
クリーン動作が実行される前の期間において、また、処理デバイス10が、1つ又は複数のメモリ・ロケーションのための更新された書込みデータを生成するために、1つ又は複数の書込み命令を実行している間、ソフトウェア・プロトコルは、他の処理デバイスによる、それらの1つ又は複数のメモリ・ロケーションへのアクセスを調整することができる。いくつかの事例では、データの意図されたソフトウェア使用は、ソフトウェア・プロトコルは、別の処理デバイスがメモリからデータの古い値を読み取ることを可能にするようなものであり得るが、他の事例では、そのような読取り動作が、その時間には禁止され得る。
【0047】
図2は、
図1のディレクトリ60の1つの例示的な構成を概略的に示すダイヤグラムである。この実例では、ディレクトリはいくつかのエントリ100、105を有し、各エントリは、メモリ・アドレス又は一連のメモリ・アドレスを識別し、次いで、どのキャッシュがそのメモリ・アドレス又は一連のメモリ・アドレス内にデータのコピーを含有し得るかを識別する。これは、どのローカル・キャッシュが、前述のクリーン動作に応答して無効化動作にかけられる必要があるかを決定するために、スヌープ・コントローラによって使用され得る。
図2の実例では、関連付けられたキャッシュが、キャッシュされたコピーを保持し得ることを示すためにティック(tick)が使用され、関連付けられたキャッシュがコピーを保持しないことを示すためにクロスが使用される。ティック及びクロスは好適な値によって符号化され得、たとえば、論理1値がティックを示し得、論理0値がクロスを示し得ることが諒解されよう。
【0048】
図2は、単にディレクトリ60の1つの例示的な構成を示し、どのキャッシュが受信されるクリーン動作に応答して無効化動作にかけられる必要があるかに関する情報をスヌープ・コントローラに与えるために、他の好適な構成が使用され得ることが諒解されよう。
【0049】
図3は、使用され得るロック・ストレージ80の例示的な構成を示す。ロック・ストレージは、各々が特定のメモリ領域に関係する、複数のエントリ110、115、120を含有することができる。各メモリ領域について、その領域内の少なくとも1つのメモリ・アドレスが、それのデータ値が更新される過程にあるかどうかを識別するために、ロック指示が維持され得る。ロック指示が設定された場合、これは、領域内の少なくとも1つのメモリ・アドレスのためのデータが更新されていることを示すが、ロック指示がクリアである場合、これは、領域内のアドレスのいずれも、更新されている過程にあるデータを含有しないことを示す。
【0050】
処理デバイスが、ロック・ストレージによって支配される領域のうちの1つ内のメモリ・アドレスに関して書込み動作を実行することを望むとき、関連付けられたロック指示を設定することを求めるために、その処理デバイスによって命令が実行される。関連付けられたロック指示が現在クリアである場合、関連付けられたロック指示が設定され、肯定応答が処理デバイスに戻され、これは、事実上、処理デバイスが、このとき、関連付けられたメモリ領域のための所有権を確立しており、したがって、そのメモリ領域に関して自由に書込み動作を実行することを、処理デバイスに対して識別する。しかしながら、ロック指示がすでに設定されている場合、処理デバイスは、ロックを設定することを求めている命令を超えて継続することを妨げられ、特に、関連がある領域内のメモリ・アドレスに書き込むことを求める書込み命令を実行することを、その段階において許可されない。一実例では、実行は、関連がある領域のためのロック指示がクリア状態に戻るような時間まで停止し、その時点において、ロック指示は、次いで、再び設定され得、処理デバイスが、このとき、メモリ領域に関する所有権を有することを識別するために肯定応答が処理デバイスに対して発行され、その後、書込み命令が次いで実行され得る。そのような手法によって、複数のメモリ領域のための所有権を維持するためにソフトウェア・プロトコルが使用され、それにより、特定の時点において、ただ1つの処理デバイスに、各そのような領域内のメモリ・ロケーションに関して書込み動作を実行する権利が与えられることが保証され得る。これにより、コヒーレンシ回路50は、特定の処理デバイスによる排他的所有権を保証するためのステップを取る必要がなく、代わりに、単に、後続のクリーン動作に応答して、データが更新された後に処理デバイスがデータの一貫したビューを有することを保証する必要があるだけであるので、コヒーレンシ回路50に要求される動作が簡略化される。
【0051】
図4A及び
図4Bは、1つの例示的な構成において、処理デバイスが、組み合わせられたソフトウェア/ハードウェア機構がキャッシュ・コヒーレンシを実装するために使用される特定のメモリ領域内で、データを更新することを望むとき、その処理デバイス内で実行されるステップを示す流れ図を与える。
【0052】
ステップ200において、所望のメモリ領域に関してロック取得命令が処理回路によって実行される。これにより、メモリ内のロック80がアクセスされ、特に、関連がある領域のためのロック指示状態が査定される。ロック指示がすでに設定されている場合、プロセスは、ロック指示が現在クリアであることが決定されるような時間まで、ステップ205に停止し、その時点において、次いで、ロック取得命令を実行する処理デバイスによってロックが取得されたことを示すために、ロック指示が設定され得る。ロックが取得されると、これは、ステップ210によって示されるように、要求側処理デバイスが所望のメモリ領域内のロケーションにデータを書き込むための所有権を確立したことを効果的に意味する。この段階において、他の処理デバイスのいずれかがロック取得命令を実行すべき場合、ロック指示がすでに設定されたことが決定され、したがって、それらの他の処理デバイスはそのメモリ領域のためのロックを取得することが不可能になるため、ソフトウェア・プロトコルは、他の処理デバイスが当該のメモリ領域への書込みアクセスを有することを防ぐ。したがって、ステップ200、205、210は、データを書き込む権利を確立するためにソフトウェア・プロトコルを実装することと見なされ得る。
【0053】
ステップ210の後、次いでステップ215において、処理デバイスは、ロックされたメモリ領域内のメモリ・ロケーションのための書込みデータを生成するために1つ又は複数の書込み動作を実行することができ、生成された書込みデータは、次いで、処理デバイスのローカル・ライトバック・キャッシュに記憶される。このプロセスは、ステップ220においてクリーン動作のためのトリガが検出されるまで継続し得る。
【0054】
1つの例示的な構成では、クリーン動作のためのトリガは様々な理由で行われ得る。たとえば、単純なケースでは、別個のクリーン命令が各書込み命令に関連付けられ得、その結果、実行されるプロセスは、処理デバイスが、ロックを取得し、次いで、所望のメモリ・ロケーションに対して単一の書込み動作を実行し、次いで、その書込みデータに関してクリーン動作をトリガするためにクリーン命令が実行される。しかしながら、別の例示的な構成では、ロックされたメモリ領域内のメモリ・アドレスに関して一連の書込み動作を一緒にグループ化することが可能であり得、それらの書込み動作が実行された後に単一のクリーン動作がトリガされる。たとえば、この機能を達成するための1つの好適な機構は、その内容全体が参照により本明細書に組み込まれる、同一出願人が所有する同時係属米国特許出願第15/501,278号に記載されている機構である。特に、その中で定義された終了命令は、クリーン動作をトリガするためのクリーン命令として使用され得、必要な場合、終了命令に遭遇したときにクリーンにされる必要がある書込みデータをもつ書込み命令のシーケンスの開始を識別するために、関連付けられた開始命令が使用され得る。終了命令に応答してクリーンにされる必要があるメモリ・ロケーションを追跡し続けるために、別個のストレージ構造が維持され得る。
【0055】
ステップ220において起こり得るトリガのさらに他の実例として、これは、ステップ215において実行される書込み動作によって生成された更新された書込みデータを含んでいるキャッシュ・エントリをターゲットにするエビクション・イベントであり得る。エビクション・イベントは、たとえば、ローカル・キャッシュ内の容量問題により起こり得、キャッシュ中に割り振られるべき新しいデータのための場所を作るために、ビクティム・エントリが選択される必要がある。ビクティム・エントリが、ステップ215において生成された書込みデータを含んでいるエントリであるとき、これは、ステップ220においてクリーン動作をトリガすることができる。一連の書込み動作が開始命令と終了命令とに関連付けられる、前の例示的な構成が採用される場合、少なくとも影響を受けたキャッシュ・エントリのうちの1つに関してクリーン動作をトリガさせるために、そのエントリに関してエビクションが使用され得るか、又は、そのエビクションにより、必要な場合、エビクション・トリガが行われる時間に、開始命令と終了命令との間に書込みデータが生成されたエントリのすべてのクリーニングが引き起こされ得る。
【0056】
ステップ220においてトリガ・イベントが行われると、プロセスはステップ225に進み、そこで、書込み動作によって生成された更新されたデータを反映するために、メモリ内容が更新されるようにするために、ロックされたメモリ領域に関して生成された書込みデータのために、クリーン動作が実行される。
【0057】
前に説明したように、コヒーレンシ回路50は、そのようなクリーン動作の存在に応答して、メモリに書き込まれている書込みデータが処理デバイスのすべてに見えるようにされることを保証するために、他の処理デバイスのローカル・キャッシュにおける関連があるエントリに関して無効化動作を実行する。ステップ230において、必要とされるメモリ領域のためのロックを取得した処理デバイスは、書込みデータが他の処理デバイスに見えているという、コヒーレンシ回路からの確認を待つ。クリーン・プロセス中に複数のキャッシュ・エントリがクリーンにされ得る状況では、関連がある書込みデータのすべてが他の処理デバイスに見えるようにされたという確認、すなわち、必要とされる無効化動作のすべてが実行されたという確認が、ステップ230において待たれる。
【0058】
ステップ230においてそのような確認が受信されると、次いで、クリーン動作が完了し、ステップ235において、実行されるべきそれ以上の書込み動作又はクリーン動作があるかどうかが決定される。これは、たとえば、実行によりロックが解放される命令より前に、命令シーケンス内に1つ又は複数の追加の書込み命令又はクリーニング命令がある場合にそうであると決定され得る。実行されるべき少なくともあと1つの書込み動作又はクリーン動作がある場合、プロセスはステップ220に進み、別のクリーン動作のためのトリガがあるかどうかが決定され、そうでない場合、プロセスはステップ215に戻って、1つ又は複数のさらなる書込み動作を実行する。
【0059】
ステップ235において、実行されるべき書込み又はクリーン動作がもうないことが決定されると、処理回路は、次いで、ステップ240において、メモリ領域のためのロックを解放するためのロック解放命令を実行するように構成され得る。これは、その領域のためのロック指示をクリア状態にリセットするために、ロック・ストレージ80中の適切なエントリへのアクセスを実行することによって達成される。
【0060】
図5は、一実例におけるコヒーレンシ回路50の動作を示す流れ図である。ステップ300において、コヒーレンシ回路50は、
図4A及び
図4Bに関して前に説明したステップを実行している処理デバイスからのクリーン動作の通知を待つ。クリーン動作が通知されると、コヒーレンシ回路は、メモリ内容が更新されるようにするために、ステップ305において、関連付けられた書込みデータをメモリ70に伝搬させる。並行して、プロセスはステップ310に進み、他のキャッシュがあれば、どのキャッシュが、クリーン動作に関連付けられたメモリ・アドレスのためのデータを記憶し得るかを識別するために、ディレクトリ60が参照される。スヌープ・コントローラ55は、次いで、ステップ315においてディレクトリ情報によって示された各キャッシュに無効化要求を送るように構成される。無効化要求は、当該のメモリ・アドレスを識別し、事実上、そのメモリ・アドレスにおいてデータのコピーをキャッシュするエントリがあるかどうかを識別するために、その無効化要求を受信するローカル・キャッシュにルックアップ演算を実行させ、そのようなエントリがある場合、エントリが無効にされる。これは、関連付けられた処理デバイスは、そのメモリ・アドレスにおいてデータを要求する場合、ローカル・キャッシュ内でヒットをもはや受信せず、代わりに、正しいデータがメモリ70から取り出されることを保証する。
【0061】
説明した実例では、ステップ315において、スヌープ・コントローラ55によって関連があるローカル・キャッシュに無効化要求が送られるが、代替手法では、必要とされるデータを正しく反映するためにローカル・キャッシュ内容が更新されるようにするために、新しい書込みデータとともに更新要求が送られ得る。
【0062】
ステップ320において、スヌープ・コントローラ55は、要求された無効化のすべてが行われたという確認を待つ。その確認が受信されると、次いで、ステップ325において、スヌープ・コントローラは、データがこのとき他の処理デバイスに見えることを識別するために、クリーン動作を開始した処理デバイスに通知し得る。ステップ310において、ディレクトリが、他のキャッシュのいずれも、必要とされるメモリ・アドレスのためのデータを記憶し得ないことを示す場合、プロセスは直接ステップ310からステップ325に進み得ることに留意されたい。
【0063】
前述の開始命令及び終了命令を使用するときなどがそうであるように、クリーン動作が複数のメモリ・アドレスに関して適用される事例では、次いで、更新されるキャッシュ・ライン内容の各々のための必要とされるキャッシュに無効化要求が送られ得、ステップ320において、スヌープ・コントローラは、ステップ325に進む前に、更新されたデータ値のすべてに関して要求された無効化のすべてが行われたという確認を待つことになる。
【0064】
ステップ310~ステップ325は、コヒーレンシ回路50によって完全に開始され、ソフトウェア・プログラマーに対する可視性を必要とせず、特に、明示的命令が処理デバイスのいずれかによって実行される必要がないことが諒解されよう。したがって、ステップ310~ステップ325は、書込みデータを処理デバイスのすべてに見えるようにするためにハードウェア・プロトコルを実装することがわかる。
【0065】
ステップ305において出力されたデータのメモリへの実際の書き込みは多くのクロック・サイクルを要し得るが、書込みデータは、一般に、書込みデータがキャッシュから相互接続40に伝搬された後にすぐ、コヒーレンスのポイント(たとえば、メモリへのインターフェースに関連付けられた1つ又は複数の書込みバッファ)に達する。
図5では、少なくともステップ310における検査が実行されたときまでにコヒーレンスのポイントに達していることが仮定され、したがって、ステップ325に達するときまでに、書込みデータがまだメイン・メモリに書き戻されていない場合でも、書込みデータがコヒーレンスのポイントから利用可能であることが理解される。
【0066】
必要とされるキャッシュ・コヒーレンシ・プロトコルを実装するためにソフトウェア・プロトコルとハードウェア・プロトコルの組合せを使用する、上記で説明した機構は、処理デバイスの間で共有され得るメモリ70のメモリ領域のすべてに関して実装され得るが、代替例では、そのような手法はいくつかの領域のために使用され得るが、必要な場合、完全なハードウェア・キャッシュ・コヒーレンシが他の領域のために実装され得る。これは
図6の流れ図によって概略的に示されている。特に、ステップ350において、当該の領域が完全なハードウェア・コヒーレンシを必要とするかどうかが決定される。完全なハードウェア・コヒーレンシが必要である場合、プロセスはステップ355に進み、キャッシュ・コヒーレンシ・プロトコルをハードウェアにおいて完全に実装するためにコヒーレンシ回路が使用される。特に、更新されるデータが処理デバイスのすべてに見えることを保証するために、クリーン動作に応答して、上記で説明したステップを実装するだけでなく、いずれかの処理デバイスが書込み動作を実行する前に、書込み動作を実行することを望む処理デバイスが、その処理デバイスに対して排他的であるとマーキングされた、キャッシュされたコピーを有することを保証するために、ローカル・キャッシュに関してコヒーレンシ行為を実行する、既存のスヌープ機構が使用され得る。そのような手法を用いると、したがって、コヒーレンシ回路50によって実行されるハードウェア・プロトコル内に埋め込まれるべきデータを書き込むための権利の確立が可能になる。ステップ355において、知られているハードウェア・キャッシュ・コヒーレンシ方式が使用され得る。
【0067】
しかしながら、領域が完全なハードウェア・コヒーレンシを必要としない場合、プロセスはステップ360に進み、メモリ70におけるロック80に関して、前に説明したソフトウェア・プロトコル技法を使用して、領域に書込む権利が管理される。次いで、ステップ365において、更新された書込みデータを処理デバイスのすべてに見えるようにするために必要とされるステップが、前に説明したハードウェア・プロトコルを使用して管理され、コヒーレンシ回路50によって実装される。
【0068】
図7A~
図7Dは、キャッシュ・コヒーレンシを実装するためにソフトウェア・プロトコルとハードウェア・プロトコルとが組み合わせられて使用される状況において、ローカル・ライトバック・キャッシュを有する処理デバイスによって実行され得る、例示的な命令シーケンスを示す。
図7Aに示されているように、単一の書込み命令及び関連付けられたクリーン命令がロック取得命令とロック解放命令との間で実行され得る。代替構成では、
図7Bに示されているように、前述の開始命令及び終了命令は書込み命令のグループを識別するために使用され得、終了命令は、一連の書込み命令によって生成される書込みデータのすべてに関してクリーン動作を開始するために使用される。
図7C及び
図7Dは、
図7Aに示された構成の変形態であり、特に、ロック取得命令とロック解放命令との間で複数の書込み命令及び関連付けられたクリーン命令が実行される、さらなる代替構成を示す。
図7Dから、特定の書込み命令に関連付けられたクリーン命令は、必ずしも、シーケンス内の書込み命令の直後に来る必要はないことに留意されたい。
【0069】
前述のように、前述の開始命令と終了命令とが使用される例示的な構成では、そのような開始命令と終了命令との間で処理デバイスによって実行される書込み動作の指示を維持するように、開始命令と終了命令とを含む命令のシーケンスを実行する処理デバイスに関連して記憶ユニットが設けられ得る。
図8はそのような記憶ユニットの1つの例示的な構成を示し、記憶ユニットはFIFO記憶回路450の形態を取る。
【0070】
開始命令と終了命令とによってサンドイッチされる書込み命令に遭遇したとき、処理デバイスは、この書込み命令に応答して実行されるべき書込み動作の指示がFIFOストレージ446のエントリ中に追加されるべきであることを、FIFO制御448及び関連付けられたライトバック・キャッシュに示す。
図8は、FIFOストレージ446の4つのエントリが現在書込み動作A~Dの指示でポピュレートされている例示的な構成を示す。図に示されているように、これらの指示は、書込み動作のターゲット・メモリ・アドレス(又は実際には部分メモリ・アドレスのみ。ライトバック・キャッシュ中の対応するエントリを識別するためにはそれで十分である)を含み得るか、又は、代わりに、対応するエントリがライトバック・キャッシュ中のどこで見つけられるかを示す、キャッシュ・ブロック・インジケータであり得る。FIFO制御ユニット448は、FIFOストレージ446の全体的制御を維持し、要求に応じて、エントリの追加及びエントリの削除(個々に又はFIFOの内容全体のいずれか)を管理する。FIFO記憶回路450が、ライトバック・キャッシュ中の特定のデータ項目がFIFOストレージ446中の対応するエントリを有するかどうかに関する、ライトバック・キャッシュからの問合せに応答する必要がある場合、FIFO記憶回路450は、この機能を与えるために内容アドレス指定可能な様式で構成され得る。そのような個々の問合せが受信され得るときの1つの実例は、ライトバック・キャッシュからのデータ項目のエビクション時であり、それに応答して、FIFO制御448は、FIFOストレージ446中の対応するエントリが削除されるように構成され得る。代替的に、ライトバック・キャッシュからの内容問合せは、キャッシュ・コヒーレンシ機構におけるそれの参加の一部としてライトバック・キャッシュによって受信されるスヌープ問合せに応答して受信され得るが、
図9に関して以下で説明するように、ライトバック・キャッシュ自体は、FIFOストレージ446にこの内容アドレス指定可能なメモリ構成が提供される必要を回避し、したがって、処理デバイスへの比較的小さい追加としてのFIFOストレージ446の提供を促進するために、対応するエントリが現在FIFOストレージ446中に保持されているかどうかの指示を記憶するように構成され得る。最後に、
図8に示されているように、FIFO制御448は、さらに、FIFOストレージ446が完全にポピュレートされた状態になる(したがって、さらなるエントリが作成されることが可能でない)かどうかを監視するように構成される。FIFOストレージ446が完全にポピュレートされている場合、FIFO制御448は、このことをライトバック・キャッシュにシグナリングし、ライトバック・キャッシュ中の対応するエントリが次いで即座にメモリ70に書き戻されるようにし、FIFO446の内容がクリアされる。
【0071】
図9は、ライトバック・キャッシュ432を概略的に示し、このライトバック・キャッシュがコントローラ460といくつかのキャッシュ・ライン462とを有することを示す。キャッシュ・コントローラ460は、データ項目と関連付けられた処理デバイスから受信される制御信号とを監視し、制御信号は処理デバイスのパイプラインとFIFO制御448の両方から受信される。キャッシュ・ライン462は、処理デバイスのデータ処理動作において処理デバイスによって使用されるデータ項目を記憶するように構成され、各キャッシュ・ラインは、データ項目自体と、関連付けられたステータス・マーカー(通常の様式でダーティー/有効など)の両方を記憶する。しかしながら、加えて、各キャッシュ・ラインの1つのビットは、ここでは、クリーンオンスヌープ・マーカーとして扱われ得る専用マーカー464として定義され、スヌープが、キャッシュ・ライン462のうちの1つに当たる別のキャッシュ/CPUから受信される場合、マーカー464の存在により、そのキャッシュ・ラインがメモリに対してクリーンにされることに留意されたい。キャッシュ・ラインのエビクションはただ1つのそのような実例であり、マーカー464は、したがって、クリーンオンエビクト・マーカーとして閲覧され得る。示されている構成では、キャッシュ・コントローラ460は、システム中の他のキャッシュから受信されるスヌープを監視するように構成され、マーカー464が設定されたキャッシュ432のキャッシュ・ライン462に記憶されるデータ項目に関する、別のキャッシュからのスヌープが受信されたとき、キャッシュ・コントローラ460は、直ちに、そのキャッシュ・ラインがエビクトされるように構成される。このイベントはまた、FIFOストレージ446中の対応する内容がクリアされ得るように、FIFO制御448にシグナリングされる。
【0072】
図10は、一実例における、プロセッサデバイスによって実行され得る例示的な命令のシーケンスを示す。この場合、開始命令及び終了命令は、システム内の持続性のポイントを形成する不揮発性メモリに対して実行されるべき一連の書込みを識別するために使用されることが仮定される。特に、不揮発性メモリは不揮発性バイト・アドレス指定可能(NVBA)メモリであり得る。シーケンスの(Aと標示された)第1の部分は、不揮発性バイト・アドレス指定可能メモリに記憶されないデータ項目にアクセスする、読取り命令、書込み命令、及びデータ処理命令に関係するいくつかの命令を有する。その後に、読取り命令、データ処理命令、及び書込み命令が、不揮発性バイト・アドレス指定可能メモリに記憶されたデータ項目に(少なくとも部分的に)関係する、第1の領域(書込みセット)の開始を定義するnvba_開始命令(前述の開始命令の実例)が続く。(Bと標示された)この第1の領域(書込みセット)はnvba_終了命令(前述の終了命令の実例)で終える。その後に、不揮発性バイト・アドレス指定可能メモリに記憶されたデータ項目に関係しない命令(A)の第2のセットが続く。最後に、不揮発性書込みアドレス指定可能メモリに記憶されたデータ項目に(少なくとも部分的に)関係する、読取り命令、データ処理命令、及び書込み命令(B)の第2の領域(書込みセット)は、第2のnvba_開始命令と第2のnvba_終了命令とによって定義される。nvba_開始命令及びnvba_終了命令の提供は、プログラマーが書込みセットを定義することを可能にし、本技法は、アクセスされたデータ項目が不揮発性メモリに記憶されるときでも、書込みセットの(互いに対する)順序付けを保存することができ、不揮発性メモリへのアクセスはライトバック・キャッシュによってキャッシュされる。
【0073】
本明細書で説明する技法によれば、処理デバイスが書込み動作のいずれかを実行する前に書き込む権利を取得することを保証するために前述のソフトウェア・プロトコル機構が使用され得るように、開始命令と終了命令とによって識別されるブロックの各々は、その前にロック取得命令があり、その後にロック解放命令がある。結果として、コヒーレンシ回路によって増分されるハードウェア・プロトコルは、次いで、終了命令によってトリガされるクリーン動作が行われると、書込みデータが様々な他の処理デバイスに見えるようにすることを保証することのみが必要である。
【0074】
本出願において、「~ように構成された/configured to」という単語は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するために使用される。このコンテキストにおいて、「構成/configuration」はハードウェア又はソフトウェアの相互接続の構成又は様式を意味する。たとえば、装置が、定義された動作を与える専用ハードウェアを有し得るか、又は、プロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された/configured to」は、装置要素が、定義された動作を与えるために任意の方法で変更される必要があることを暗示しない。
【0075】
添付の図面を参照しながら、本明細書において本発明の例示的な実施例について詳細に説明したが、本発明はそれらの正確な実施例に限定されないこと、並びに添付の特許請求の範囲によって定義されている本発明の範囲及び趣旨から逸脱することなく、様々な変更、追加、及び修正が当業者によってその中で実施され得ることを理解されたい。たとえば、本発明の範囲から逸脱することなく、従属クレームの特徴の様々な組合せが独立クレームの特徴とともに行われ得る。