(57)【要約】  共有メモリへの書込みアクセスを処理するためにデータ処理装置と方法を提供する。データ処理装置は、共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置を有し、各演算処理装置は、該演算処理装置によるアクセスのためにデータのサブセットを格納することができる、それに関連付けられたキャッシュを有する。各演算処理装置によりアクセスされるデータが最新であることを保障するために、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー論理が提供される。各演算処理装置は、共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行し、その書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー論理内で開始される。次に、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた全てのキャッシュに関してコヒーレンシー操作を行う。更に、キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となる各データ値に関して、共有メモリに更新要求を発行することができる。このような方法は、特に、複雑度を増すことなく、又、発行元の演算処理装置とそれに関連付けられたキャッシュのアクセスタイミングに影響を与えることなく、書込みアクセス要求の正確な動作を保障するための簡単で効率的な機構を提供する。
2010507160.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行することができる複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納することができる、それに関連付けられたキャッシュを有する前記複数の演算処理装置と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー論理と、を含むデータ処理装置であって、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するように動作することができ、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー論理内で開始され、
該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、書込みアクセス要求が、前記共有メモリに対する、キャッシュ不可の領域への書込みアクセス要求である場合、キャッシュ・コヒーレンシー論理内において、コヒーレンシー操作を開始するデータ処理装置。
【請求項３】
請求項１記載のデータ処理装置において、書込みアクセス要求が、前記共有メモリに対する、ライトスルー書込みアクセス要求である場合、キャッシュ・コヒーレンシー論理内において、コヒーレンシー操作を開始するデータ処理装置。
【請求項４】
請求項１から３のいずれかに記載のデータ処理装置において、コヒーレンシー操作を行う際に、キャッシュ・コヒーレンシー論理が、複数の演算処理装置に関連付けられたキャッシュの各々に対して、コヒーレンシー要求信号を発行し、コヒーレンシー要求信号は、書込みアクセス要求の対象となるデータ値に対応したアドレスを特定するデータ処理装置。
【請求項５】
請求項１から３のいずれかに記載のデータ処理装置において、コヒーレンシー操作を行う際に、キャッシュ・コヒーレンシー論理は、フィルタ操作を適用し、どのキャッシュがコヒーレンシー要求を発行するのかを決定し、次に、決定されたキャッシュに対してコヒーレンシー要求を発行し、コヒーレンシー要求信号は、書込みアクセス要求の対象となるデータ値に対応したアドレスを特定するデータ処理装置。
【請求項６】
請求項１から５のいずれかに記載のデータ処理装置において、書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、該書込みアクセス要求を発行した演算処理装置に関連付けられたキャッシュにおいてキャッシュルックアップを行わずに、キャッシュ・コヒーレンシー論理内において、コヒーレンシー操作を開始するデータ処理装置。
【請求項７】
請求項１から６のいずれかに記載のデータ処理装置において、各演算処理装置において、それに関連付けられたキャッシュは、該演算処理装置にのみ関連付けられたローカルキャッシュであるデータ処理装置。
【請求項８】
請求項１から７のいずれかに記載のデータ処理装置において、共有メモリは、メモリの共有メモリ領域であるデータ処理装置。
【請求項９】
請求項１から８のいずれかに記載のデータ処理装置において、複数の演算処理装置の少なくとも一つは、プロセッサ・コアであるデータ処理装置。
【請求項１０】
請求項１から９のいずれかに記載のデータ処理装置において、キャッシュ・コヒーレンシー・プロトコルは、スヌープに基づくキャッシュ・コヒーレンシー・プロトコルであるデータ処理装置。
【請求項１１】
データ処理装置で用いるためのキャッシュ・コヒーレンシー論理であって、
該データ処理装置は、共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置を有し、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュを有し、
前記キャッシュ・コヒーレンシー論理は、各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用い、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するように動作することができ、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー論理が、キャッシュ・コヒーレンシー操作を開始し、
該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するキャッシュ・コヒーレンシー論理。
【請求項１２】
データ処理装置において共有メモリへの書き込みアクセス要求を処理するための方法であって、
該データ処理装置は、
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュを有する演算処理装置を含み、
該方法は、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するステップと、
該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、キャッシュ・コヒーレンシー論理内でコヒーレンシー操作を開始するステップであって、該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、キャッシュ・コヒーレンシー・プロトコルを用いるステップと、
キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行うステップと、
書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するステップとを含む方法。
【請求項１３】
共有メモリ手段内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理手段であって、各演算処理手段は、該演算処理手段によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュ手段を有する演算処理手段と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー手段と、を含むデータ処理装置であって、
各演算処理手段は、前記共有メモリ手段内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行し、該書込みアクセス要求が、関連付けられたキャッシュおよび共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー手段内で開始し、
該キャッシュ・コヒーレンシー手段は、これらのキャッシュ手段内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理手段に関連付けられたキャッシュ手段を含む、複数の演算処理手段に関連付けられた各々のキャッシュ手段に関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー手段は、書込みアクセス要求の対象となるデータ各データ値に関して、前記共有メモリ手段に更新要求を発行するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
特許出願は、データ処理装置の共有メモリへの書込みアクセス要求の処理に関する。
【背景技術】
【０００２】
２つあるいはそれ以上の数の処理ユニット、例えば、プロセッサ・コアが、共有メモリへのアクセスを共有するマルチ・プロセッシング・システムを提供することが知られている。このようなシステムは、通常、複数の異なるプロセッサ・コアを配置して、各々のデータ処理操作を並列して実行することにより、高速性能を得るために用いられる。このようなマルチ・プロセッシング機能を提供する既知のデータ処理システムとしては、ＩＢＭ３７０システムとＳＰＡＲＣマルチ・プロセッシング・システムがある。これらの特定のマルチ・プロセッシング・システムは、電力効率と電力消費にはほとんど着目せず、その主目的が処理速度を最大化することにあるような高性能システムである。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このようなマルチ・プロセッシング・システムにおいて、データへのアクセス速度を更に向上させるために、共有メモリに保持されるデータのサブセットを格納する専用のローカルキャッシュを、演算処理装置の各々に設けることが知られている。これにより、データへのアクセス速度は向上できるものの、データのコヒーレンシーに関する問題が複雑なものとなる。特に、特定のプロセッサが、そのローカルキャッシュに保持されたデータ値に関して、書込み操作を行なった場合、そのデータ値は、キャッシュ内でローカルに更新されるが、その値は、必ずしも共有メモリ内では同時に更新されることはない。特に、問題となっているデータ値が、メモリのライトバック領域にある場合には、後でキャッシュからデータ値が消去された時に、キャッシュ内で更新されたデータ値が、共有メモリに書き戻されるだけである。
【０００４】
データは、他のプロセッサと共有されるため、共有メモリ内の関連するアドレスにアクセスしようとする際に、これらのプロセッサが、最新のデータにアクセスすることを保障することが重要である。これを保障するために、特定のプロセッサが、そのローカルキャッシュに保持されたデータ値を更新した際に、そのデータへのアクセスを後で要求する任意の他のプロセッサにおいて、その最新データが利用可能となることを保障するために、マルチ・プロセッシング・システム内でキャッシュ・コヒーレンシー・プロトコルを用いることが知られている。
【０００５】
通常のキャッシュ・コヒーレンシー・プロトコルによれば、プロセッサにより行われる何らかのアクセスは、コヒーレンシーを維持する操作を行うことを要求するものとなる。コヒーレンシーを維持する操作により、発生したアクセスの種類とアクセスされているアドレスとを特定する通知が、他のプロセッサに送られる。これにより、これらの他のプロセッサは、キャッシュ・コヒーレンシー・プロトコルにより定義された何らかの動作を行い、また、ある場合には、これらのプロセッサの一つあるいはそれ以上のものから、コヒーレンシーを維持する操作を要求するアクセスを開始したプロセッサに対して、何らかの情報がフィードバックされる結果となる。このような方法により、様々なローカルキャッシュに保持されたデータのコヒーレンシーが維持され、各プロセッサが最新のデータにアクセスすることを保障する。このようなキャッシュ・コヒーレンシー・プロトコルの一つとして、“修正（Ｍｏｄｉｆｉｅｄ）、排他（Ｅｘｃｌｕｓｉｖｅ）、共有（Ｓｈａｒｅｄ）、無効（Ｉｎｖａｌｉｄ）”（ＭＥＳＩ）キャッシュ・コヒーレンシー・プロトコルがある。
【０００６】
データの特定の要素が、一つのプロセッサのみによって排他的に利用されることを保障できた場合には、そのプロセッサが当該データにアクセスする際には、コヒーレンシーを維持する操作は不要となる。しかし、通常のマルチ・プロセッシング・システムでは、データが、一般的に共有されたデータに属していたり、マルチ・プロセッシング・システムが、プロセッサ間でプロセッサを切り替えることや、実際に、特定のプロセスを複数のプロセッサで並列して実行することを可能とするため、プロセッサ間のプロセスデータの多くが共有メモリ間で共有され、その結果、特定のプロセスに固有のデータであっても、そのデータが、特定のプロセッサによって排他的に利用されるという保障はない。
【０００７】
キャッシュ・コヒーレンシー・プロトコルを利用して、各演算処理装置が、最新のデータにアクセスすることは保障されるものの、メモリを共有する複数の演算処理装置を有するシステムでは、その取り扱いが複雑なものとなるような種類のアクセスが存在する。例えば、共有メモリの領域が、ライトスルー領域として指定され、特定の演算処理装置により、その共有メモリのライトスルー領域への書込みアクセス要求が行われた場合には、書込みアクセス要求の発行元となった演算処理装置のキャッシュにおいて、何らかの更新が行われた際には、メモリを更新する必要がある。マルチ・プロセッシング・システムにおいてこのような更新を行うことは、多くの危険性を伴う。関連するローカルキャッシュのキャッシュ制御論理が、正確に動作することを保障するためには、キャッシュと共有メモリの更新がアトミックな方法で行われることを保障するために、その論理の複雑度や、キャッシュへのアクセスでの大幅な遅延を更に増やしてしまう論理を付加する必要がある。更新操作を行っている最中に、他の読出し又は書込みアクセスが、同じデータ位置にアクセスしないように、このアトミック操作は、読出し又は書込み操作に何ら干渉せずに、完全に行わなければならない。
【０００８】
共有メモリのライトスルー領域への書込みアクセス要求を処理している際に起こりうる危険性の種類の一例としては、第一の書込みがキャッシュにヒットし、それがキャッシュ・コヒーレンシー論理により処理され、そのためプロセッサ・コア内では保留状態となる状況がある。その処理が行われている際には、第一の書込みに重なる位置に対して、第二の書込みが発行される。第一の書込みが保留状態となっている間に第二の書込みを処理する標準的な方法は、適用可能な場合に、２つのアクセスを１つにマージすることである。この方法は、省電力（コヒーレンシー論理がその動作を完了した時点で、一つのみの書込みをキャッシュに対して行うこと）を行い、性能を向上させる（２つの書込みを１つにマージすることにより、単一の“スロット”が２つのメモリアクセスに利用可能となり、それにより、後のいくつかのメモリアクセスのために、いくつかのリソースを開放できる）ために、多く用いられる。
【０００９】
しかし、１つにマージする方法は、これらの書込みの対象が、共有可能なメモリ領域である場合には、コヒーレンシー論理によって第一の書込みが二度発行させられてしまうため、この方法は使うことができない。第一の書込みが完了し、メモリが更新された時には、第二の書込みは、少なくともメモリを更新するために、コヒーレンシー論理によってまだ処理中である。これらの２つの書込みが１つにマージされてしまったため、第二のコヒーレンシー動作（及び、第二のメモリ更新）は、実質的に、これら２つの書込みをマージしたものから構成され、その結果、メモリへの第一の書込みが繰り返されるものとなる。これは、メモリの秩序あるモデルを乱すことになり、従って、それを防止しなければならない。
【００１０】
このような二重書込みを防ぐために、第一の方法は、このようなマージを防ぐための何らかの論理（従って、何らかの複雑度が増すもの）を付加することから構成される。このような複雑度が増すことを避けるための、他の可能な方法は、このようなマージが起こらないようにして、標準的な場合であっても、性能と電力消費に及ぶ影響を防ぐことである。
【００１１】
このようなコヒーレントなライトスルー書込みアクセスの提供に伴う、更に増した複雑度や危険性があると、キャッシュのコヒーレンスを維持する能力を有するプロセッサを提供する多くのシステムは、このような動作をサポートする見込みはなくなり、共有メモリに対するライトスルー書込みアクセスを可能とする選択肢を失ってしまう。しかし、このような立場を取ったとしても、同様の危険性を引き起こしてしまう他の種類のアクセスが依然として存在する。特に、特定のプロセッサ、又は、そのプロセッサ上で実行される特定のプロセスにより、共有メモリの領域をキャッシュ不可の領域として指定し、そのキャッシュ不可の領域に対して書込みアクセスを行うこともできる。キャッシュ不可の領域への書込みアクセスに関しては、キャッシュ内でルックアップを行う必要はないものと仮定することができる。しかし、プロセッサが、キャッシュ不可の領域を利用する場合、プロセッサ自身は、そのキャッシュ不可の領域に属する何らのデータを、キャッシュに割り付けることはないものとなる。しかし、ローカルキャッシュにアクセス可能でもある互いに蜜結合したコプロセッサを含む、システムの他のプロセッサは、異なるメモリの見え方となり、特に、１つのプロセッサからはキャッシュ不可の領域として見える領域は、他のプロセッサからはキャッシュ不可の領域ではないように見える領域となる場合がある。更に、同一のプロセッサで実行される異なるプロセスは、異なるメモリマップを用いることができ、それにより、キャッシュ不可の領域に対する書込みアクセス要求の対象となるデータが、実際にキャッシュ内に存在することも可能となる。
【００１２】
以上より、共有メモリへの、キャッシュ不可の領域に対する書込みアクセスを処理する際には、通常、キャッシュ内のルックアップが必要となり、その結果、処理する要求のある動作は、上述したような、コヒーレントなライトスルー書込みアクセスと極めて似たものであるといえる。しかし、共有メモリに対する、コヒーレントなライトスルー書込みアクセスをサポートしないと判断した場合であっても、共有メモリへの、キャッシュ不可の領域に対する書込みアクセスを処理するためには、何らかの機能を提供する必要がある。しかし、特に、共有メモリへの、キャッシュ不可の領域に対する書込みアクセスが、キャッシュにヒットすることが、多くの場合そうであるように、実際に起こる見込みは極めて低いならば、このような機能の導入は、導入される付加的な複雑度及び／又は付加的に生じるアクセス遅延の観点からは、極めて高価なものとなる。
【００１３】
従って、発行元となる演算処理装置のキャッシュ及び共有メモリの両方の更新を要求する種類の書込みアクセス要求に関して、正しい動作を可能とするための、コスト効果のより高い解決策を提供することが望まれている。
【課題を解決するための手段】
【００１４】
本発明の第一の態様に関して、本発明は、データ処理装置を提供するものであり、
該データ処理装置は、
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行することができる複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納することができる、それに関連付けられたキャッシュを有する演算処理装置と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー論理を含むデータ処理装置であって、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するように動作することができ、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー論理内で開始され、
該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するデータ処理装置である。
【００１５】
本発明によれば、データ処理装置の他の演算処理装置に関連付けられたキャッシュ内のデータが最新であることを保つことを保障するために、すでに提供されたキャッシュ・コヒーレンシー論理により、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類の書込みアクセス要求を、効率的に処理する機能が実現される。特に、発行元となる演算処理装置が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類の書込みアクセス要求を発行する際に、コヒーレンシー論理においてコヒーレンシー操作が開始される。システム内の他の演算処理装置に関連付けられたキャッシュに対して、キャッシュ・コヒーレンシー論理がコヒーレンシー操作を行うという通常の動作に加えて、キャッシュ・コヒーレンシー論理は、発行元となる演算処理装置に関連付けられた各キャッシュに対してもコヒーレンシー操作を行い、その結果、これらのキャッシュの全てのデータがコヒーレントとなる。また、キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するように構成されており、それにより、共有メモリへの更新要求が行われることを保障する。
【００１６】
このような方法によって、結果として、発行元となる演算処理装置は、書込みアクセス要求を、キャッシュルックアップを不要とする書き込みアクセス要求として扱うことができ、それに代えて、キャッシュ・コヒーレンシー論理は、コヒーレント操作を行うように構成されており、特に、該コヒーレント操作を行う際に、発行元となる演算処理装置に関連付けられたキャッシュを含むように構成されている。この構成により、発行元となる演算処理装置が、実質的にキャッシュ更新と、メモリ更新とをアトミックな方法で行うことにより、それに関連付けられたキャッシュとの組合せで、要求された動作を試みて完了した際に起きるようなキャッシュアクセス・ペナルティ及び／又は複雑度が増すことを防ぐ。
また、キャッシュ・コヒーレンシー論理が、発生する可能性のある危険性を避けることができるように本来準備されているので、発行元となる演算処理装置によって実行されるアトミックな更新から得られうる同様の動作を達成する間に、要求された共有メモリの更新からキャッシュの更新を切り離すことができる。
【００１７】
従って、本発明は、関連付けられたキャッシュと共有メモリとを更新する必要がある状況で、共有メモリに対する書込みアクセス要求を処理する際の問題に対して、演算処理装置が、書込みアクセス要求を簡単な方法で処理できるようにし、キャッシュ・コヒーレンシー論理の固有の機能により、このような書込みアクセスに対する要求された動作を行うことにより、さらに高度で簡単な解決策を提供する。
【００１８】
関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類の書込みアクセス要求には、様々な種類がある。一実施例において、このような書込みアクセス要求の一つの種類として、供給メモリに対する、キャッシュ不可の領域に対する書込みアクセス要求がある。それに代え、又は、それに加え、上述した方法を用いることによりサポートできる他の種類の書込みアクセス要求としては、共有メモリに対するライトスルー書込み要求がある。
【００１９】
キャッシュ・コヒーレンシー論理によって行われるコヒーレンシー操作には、様々な形態がある。一実施例において、キャッシュ・コヒーレンシー操作を行う際に、キャッシュ・コヒーレンシー論理が、複数の演算処理装置に関連付けられたキャッシュの各々にコヒーレンシー要求信号を発行する。このコヒーレンシー要求信号は、書込みアクセス要求の対象となるデータ値に関連付けられたアドレスを特定するものである。その結果、このような実施例において、様々な演算処理装置に関連付けられた全てのキャッシュは、コヒーレンシーチェックを受ける。しかし、他の実施例では、コヒーレンシー操作を行う際に、キャッシュ・コヒーレンシー論理によりフィルタ操作を適用し、どのキャッシュがコヒーレンシー要求を発行するかを決定し、更に、決定されたキャッシュにコヒーレンシー要求信号を発行する。このコヒーレンシー要求信号は、書込みアクセス要求の対象となるデータ値に関連付けられたアドレスを特定するものである。このような実施例において、キャッシュ・コヒーレンシー論理に、コヒーレンシー要求をフィルタできるという付加的な特徴が設けられており、特に、このフィルタ操作は、どのキャッシュを、コヒーレンシーチェックの対象とする必要があるかを決定するために、通常、様々なキャッシュの内容についての何らかの知識を考慮するものとなっている。
【００２０】
本発明の実施例によれば、発行元となる演算処理装置が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類の書込みアクセス要求を発行した際には、その演算処理装置は、キャッシュ・コヒーレンシー論理にコヒーレンシー操作を開始させる前に、キャッシュ内でルックアップを行う必要はない。しかし、いくつかの実施例においては、演算処理装置は、何らかの他の理由で、キャッシュのルックアップを行うことを選択してもよい。しかし、本発明の特定の実施例においては、発行元となる演算処理装置に関連付けられたキャッシュ内でルックアップを行わずに、キャッシュ・コヒーレンシー論理でコヒーレンシー操作を開始する。
【００２１】
各演算処理装置に関連付けられたキャッシュには、様々な形態がある。特に、演算処理装置のあるものは、このようなキャッシュを共有する。しかし、一実施例において、各演算処理装置において、それに関連付けられたキャッシュは、該演算処理装置のみに関連付けられたローカルキャッシュである。このようなキャッシュは、通常、レベル１キャッシュと呼ばれる。
【００２２】
一実施例において、キャッシュの各々は、データ値を格納するのみに用いられるデータキャッシュとして設けられ、通常は、分離した命令キャッシュが、関連付けられた演算処理装置により実行される命令を格納するために設けられる。しかし、他の実施例においては、キャッシュは、命令とデータの両方を格納する統合キャッシュとすることができる。
【００２３】
共有メモリには、様々な形態があり、従って、一実施例においては、その全体のアドレス空間が共有される特定のメモリ装置であってもよい。しかし、他の実施例においては、共有メモリは、あるメモリの共有メモリ領域であり、通常、このようなメモリは、それに関連付けられた他の属性を有する他の領域をも有するものとなっているため、例えば、非共有メモリとして分類される。しばしば、メモリシステムは、複数のメモリ装置からなり、それらの全ては、一つ又は複数のメモリ領域又は区域の一部となっている。例えば、アドレス０に置かれ、１０２４ワード（１Ｋワード）幅のメモリ領域を、例えば、複数のメモリ装置、例えば、メモリ装置Ｍ０からＭ３に、実際に設けることができる。Ｍ０に、その位置０から２５５にデータを格納させ、Ｍ１に、その位置２５６から５１１等にデータを格納させることに代えて、Ｍ０が、位置０、４、８、１２．．．にデータを格納するように構成し、Ｍ１が、位置１、５、９、１３．．．にデータを格納するように構成することができる。
【００２４】
演算処理装置には、様々な形態があるが、一実施例においては、演算処理装置の少なくとも一つは、プロセッサ・コアである。一実施例において、全ての演算処理装置をプロセッサ・コアとすることもできるが、他の実施例においては、一つ又はそれ以上の数の演算処理装置は、他の装置の形態、例えば、デジタル信号プロセッサ（ＤＳＰ）、ハードウェア・アクセラレータ等の形態としてもよい。
【００２５】
キャッシュ・コヒーレンシー・プロトコルには、様々な形態があるが、一実施例においては、スヌープに基づくキャッシュ・コヒーレンシー・プロトコルである。このようなキャッシュ・コヒーレンシー・プロトコルに基づいて、システムの各演算処理装置（例えば、個々の演算処理装置である処理装置、又は関連付けられたキャッシュと組み合わせた個々の演算処理装置である処理装置）は、要求されたコヒーレンシー動作を行うため、共有バスから取得した情報に応じて、共有バス上での動きをスヌープするように構成することができる。このような実施例において、キャッシュ・コヒーレンシー論理は、通常、処理装置の各々に関連付けられた多数のディスクリート部品で構成されるものであると考えられる。
【００２６】
本発明の第二の態様に関して、本発明は、データ処理装置で用いるためのキャッシュ・コヒーレンシー論理を提供するものであり、
該データ処理装置は、
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュを有する演算処理装置と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー論理を含むデータ処理装置であって、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するように動作することができ、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー論理内で開始し、
該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行することができるキャッシュ・コヒーレンシー論理である。
【００２７】
本発明の第三の態様に関して、本発明は、データ処理装置において共有メモリへの書き込みアクセス要求を処理するための方法を提供するものであり、
該データ処理装置は、
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュを有する演算処理装置を含み、
該方法は、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するステップと、
該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、キャッシュ・コヒーレンシー論理内でコヒーレンシー操作を開始するステップであって、該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、キャッシュ・コヒーレンシー・プロトコルを用いるステップと、
キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行うステップと、
書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するステップとを含む方法である。
【００２８】
本発明の第四の態様に関して、本発明は、データ処理装置を提供するものであり、
該データ処理装置は、
共有メモリ手段内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理手段であって、各演算処理手段は、該演算処理手段によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュ手段を有する演算処理手段と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー手段を含むデータ処理装置であって、
各演算処理手段は、前記共有メモリ手段内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行し、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー手段内で開始され、
該キャッシュ・コヒーレンシー手段は、これらのキャッシュ手段内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理手段に関連付けられたキャッシュ手段を含む、複数の演算処理手段に関連付けられた各々のキャッシュ手段に関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー手段は、書込みアクセス要求の対象となるデータ各データ値に関して、前記共有メモリ手段に更新要求を発行するデータ処理装置である。
【図面の簡単な説明】
【００２９】
【図１Ａ】本発明の第一の実施例に係るデータ処理装置のブロック図。
【図１Ｂ】本発明の第二の実施例に係るデータ処理装置のブロック図。
【図２】図１Ａ及び図１Ｂのデータ処理装置で用いられるキャッシュ・コヒーレンシー・プロトコルの概略を示す図。
【図３】本発明の一実施例に係る、図１Ａ及び図１Ｂに図示したデータキャッシュに設けられた構成要素を詳細に示すブロック図。
【図４】本発明の一実施例に係る、書込みアクセス要求を処理するために行われる処理を示すフローチャート。
【図５】本発明の他の実施例に係る、データ処理装置を示す図。
【発明を実施するための形態】
【００３０】
図１Ａは、コヒーレントバス構造５０を介して共有メモリ領域６０と接続された複数プロセッサ２０、３０、４０からなるデータ処理装置１０のブロック図である。プロセッサ２０、３０、４０の各々は、関連付けられたローカルキャッシュ２４、３４、４４が各々接続されたプロセッサ・コア２２、３２、４２からなり、各キャッシュは、共有メモリ内に保持されたデータのサブセットを格納するために用いられ、関連付けられたプロセッサによる該データへのアクセス速度を向上させる。一実施例において、各キャッシュ２４、３４、４４は、関連付けられたプロセッサ・コア２２、３２、４２により用いられるデータ値を格納するために用いられるデータキャッシュであり、通常、分離した命令キャッシュが、プロセッサ・コアに要求された命令をキャッシュするために（図１Ａでは不図示であるが）設けられる。
【００３１】
コヒーレントバス構造５０は、様々なキャッシュ２４、３４、４４に保持されたデータが最新となることを保障するために、キャッシュ・コヒーレンシー・プロトコルを適用するために用いられるキャッシュ・コヒーレンシー論理を備えた、バス接続装置から構成されている。特に、一つのプロセッサがそのローカルキャッシュ内のデータを更新した際には、コヒーレンシーを保障するため、他のプロセッサに関連付けられたキャッシュ内の該データの任意のコピーが、これらのローカルキャッシュ内で適切に更新されるか無効化されることを、キャッシュ・コヒーレンシー論理が保障する。一実施例において、用いられるキャッシュ・コヒーレンシー・プロトコルは、ＭＥＳＩキャッシュ・コヒーレンシー・プロトコルであり、以下、図２を参照して詳細に説明する。
【００３２】
メモリ６０は、全体が、共有メモリとして構成されていてもよいし、それに代えて、複数のメモリ領域から構成されているものであってもよい。これらのメモリ領域の少なくとも一つは、プロセッサ２０、３０、４０が、これらのプロセッサ間で共有するデータを格納することができる共有メモリ領域である。
【００３３】
図１Ｂは、本発明の第二の実施例に係る、データ処理装置１００のブロック図である。本実施例では、キャッシュ・コヒーレンシー論理は、コヒーレントバス構造の一部としては構成されておらず、それに代えて、分離したキャッシュ・コヒーレンシー論理１２６、１３６、１４６が、各プロセッサ１２０、１３０、１４０に設けられ、個々のプロセッサは、バス接続１５０を介してメモリ６０に接続されている。第一の実施例と同様に、各プロセッサ１２０、１３０、１４０は、対応するローカルデータキャッシュ１２４、１３４、１４４に接続されたプロセッサ・コア１２２、１３２、１４２を含んでいる。
【００３４】
図１Ｂの実施例によれば、各キャッシュ・コヒーレンシー論理は、他のプロセッサの動作がバス接続１５０に現れる際に、その動作をスヌープし、このスヌープの結果として受け取った情報に基づいて、関連付けられたデータキャッシュに関して何らかのコヒーレンシー操作を行い、そのデータキャッシュの内容がコヒーレントとなるようにする必要があるかどうかを決定するように構成されている。従って、例えば、プロセッサ・コア２  １３２が、データキャッシュ１３４に格納されたデータ値に関して、該データキャッシュに関連したキャッシュラインの内容を更新する結果となる書込みアクセス要求を発行した場合、キャッシュ・コヒーレンシー論理１３６は、この更新が起こっていることを示す通知をバス１５０上に発行し、他のプロセッサ１２０、１４０のキャッシュ・コヒーレンシー論理ユニット１２６、１４６の各々は、この通知を監視し、関連付けられたデータキャッシュ１２４、１４４に対し、任意の必要なコヒーレンシー操作を行う。一実施例において、この操作は、もし、関連付けられたデータキャッシュ内にデータが格納されている場合には、関連するキャッシュラインを無効化すること、あるいはそれに代えて、必要な更新を行うことを含んでいる。このスヌープ操作が、キャッシュのコヒーレンシーを実装するために用いられている場合には、データ処理装置は、スヌープに基づくキャッシュ・コヒーレンシー・プロトコルを用いているものとして呼ばれることもある。図１Ａを参照して説明したように、一実施例において、実際に用いられるキャッシュ・コヒーレンシー・プロトコルは、ＭＥＳＩキャッシュ・コヒーレンシー・プロトコルである。
【００３５】
図２は、ＭＥＳＩキャッシュ・コヒーレンシー・プロトコルと呼ばれる、特定の種類のキャッシュ・コヒーレンシー・プロトコルを示す状態遷移図であり、一実施例において、ＭＥＳＩキャッシュ・コヒーレンシー・プロトコルは、図１Ａ及び１Ｂのデータ処理装置１０、１００で用いられる。図２に示すように、キャッシュの各キャッシュラインは、４つの状態、Ｉ（無効）状態、Ｓ（共有）状態、Ｅ（排他）状態、Ｍ（変更）状態のいずれか一つの状態となる。キャッシュラインが無効である場合に、Ｉ状態となる。キャッシュラインが他のプロセッサのキャッシュにも保持されているデータを含む場合に、Ｓ状態となる。キャッシュラインが他のプロセッサのキャッシュには保持されていないデータを含む場合に、Ｅ状態となる。キャッシュラインが変更されたデータを含む場合に、Ｍ状態となる。
【００３６】
図２は、様々な読出し又は書込み操作の結果として起こる可能性のある状態の遷移を示している。ローカル読出し又は書込み操作とは、キャッシュが存在しているプロセッサで行われる読出し又は書込み操作のことであり、一方、リモート読出し又は書込み操作とは、データ処理装置の他のプロセッサの一つで行われ、コヒーレンシー要求によって識別される読出し又は書込み操作のことである。
【００３７】
なお、図２において、複数の読出し及び書込み操作は、いかなるコヒーレンシー操作を行うことを要求するものではないが、コヒーレンシー操作を行うことを要求する、いくつかの数の読出し及び書込み操作が存在する。特に、キャッシュが存在するプロセッサは、キャッシュミスをもたらすローカル読出し操作を行った場合、この操作は、キャッシュの特定のキャッシュラインに対して行われるラインフィル処理をもたらす結果となり、キャッシュラインの状態は、Ｉビットを設定する状態から、Ｓビット又はＥビットを設定する状態に変化する。Ｓビット又はＥビットのどちらを設定するかを決定するために、プロセッサは、問題となっているアドレスにローカルにデータをキャッシュした可能性のある他のプロセッサに対してコヒーレンシー操作を行い、そのコヒーレンシー操作の結果を待ってから、Ｓビット又はＥビットのどちらを設定するかを選択する必要がある。問題となっているアドレスにデータをキャッシュした可能性のある他のプロセッサが、データをキャッシュしていなかった場合は、Ｅビットを設定し、そうでない場合には、Ｓビットを設定する。なお、Ｅビットを設定し、他のプロセッサが、同じアドレスにあるデータに関して、そのキャッシュに対するローカル読出しを行った場合には、そのＥビットは、以前に設定されたキャッシュによるリモート読出しと見なされ、図２に示すように、Ｅビットをクリアし、Ｓビットを設定するような状態遷移が行われる。
【００３８】
また、図２に示すように、ローカル書込み処理は、キャッシュのキャッシュラインに保持されたデータ値の更新をもたらす結果となり、これにより、Ｍビットが設定される。Ｍビットの設定が、Ｉビット設定の状態からの遷移（キャッシュミスの発生後、キャッシュライン割当てが行われ、更に、書込み操作が行われる）又はＳビット設定状態からの遷移のいずれかで行われる場合には、再度、プロセッサによってコヒーレンシー操作を行う必要がある。このような例では、プロセッサは、コヒーレンシー操作の対象となっている他のプロセッサからフィードバックを受ける必要はないが、これらの他のプロセッサは、それ自身のキャッシュに関して必要な動作を行う必要があり、その場合、書込みは、リモート書込み処理と見なされる。なお、Ｅビットが設定されたキャッシュラインへのローカル書込みが発生した際には、この書込みを行った時点では、当該アドレスのデータは他のプロセッサのキャッシュにはキャッシュされていないことが分かっているため、Ｅビットをクリアし、コヒーレンシー操作は行わずにＭビットを設定する。
【００３９】
図３は、本発明の一実施例による、図１Ａ及び１Ｂに示した各データキャッシュ内に設けられた構成要素を示すブロック図である。データキャッシュ２００は、ロード／ストアユニット（ＬＳＵ）２１０を介して、関連付けられたプロセッサ・コアに接続され、関連付けられたプロセッサ・コアからの読出し及び書込みアクセス要求を受信するように構成されている。読出しアクセス要求が発生すると、そのアクセス要求は、キャッシュアレイ２３０に直接送られ、要求されたデータがキャッシュアレイ内にあるかどうかを決定するために実行すべきルックアップ処理が可能となる。もし、データがあれば、そのデータ値は、ＬＳＵ２１０を介してプロセッサ・コアに返送される。キャッシュミスが発生すると、ラインフィル要求が、バスインターフェース２５０を介してバス接続キャッシュ・コヒーレンシー論理に送られ、着目するデータ値を含むデータに相当するキャッシュラインにより、キャッシュアレイ２３０内に格納する値として、メモリ６０から取り出される。その後、要求されたデータ値は、ＬＳＵ２１０を介してプロセッサ・コアに返送される。
【００４０】
書込みアクセス要求については、これらの要求は、格納バッファ２２０に送られ、さらにその先で処理される。特に、キャッシュ可能なアクセス要求については、格納バッファが、キャッシュアレイ２３０内のパス２２２を介してルックアップを開始し、書込みアクセス要求の対象となるデータ値が、キャッシュアレイ内にあるかどうかを判定する。もしあれば、キャッシュアレイ２３０のキャッシュラインで更新を行う。キャッシュミスが発生すると、バスインターフェース２５０を介して、格納バッファ２２０によりラインフィル処理を起動し、データに相当するキャッシュラインにより、キャッシュアレイに格納する値として、メモリから取り出され、その後、キャッシュアレイ内での書込み更新が可能となる。それに代えて、データに相当するキャッシュラインを、メモリから受け、バスインターフェース２５０内に設けられたラインフィルバッファに受け取る。さらに、書込み要求は、ラインフィルバッファ内のデータとマージされ、その後、データラインがキャッシュアレイ２３０内で割り当てられる。
【００４１】
コヒーレンシー要求をキャッシュ・コヒーレンシー論理から受け取るために、コヒーレンシーハンドラ２４０も設けられ、キャッシュアレイ２３０内の所定のラインに対して、要求されたコヒーレンシー維持操作を行う。コヒーレンシーハンドラ２４０が、所定のデータ値がキャッシュアレイ２３０内に格納されているかどうかを識別するために、通常、キャッシュ・コヒーレンシー論理から受取ったコヒーレンシー要求は、コヒーレンシー操作を行うアクセスの種類と、アクセス要求の対象となるデータ値のアドレスとを識別し、もし、格納されていれば、（例えば、ＭＥＳＩプロトコルに関し、図２で先に示したように）適切な動作をとる。
【００４２】
コヒーレンシー維持操作の結果として、キャッシュラインを、キャッシュアレイ２３０から追い出す必要がある場合には、コヒーレンシーハンドラ２４０は、バスインターフェース２５０と通信を行い、必要となる追い出し操作を行うことができる。
【００４３】
先に説明したように、ある種類の書込みアクセス要求は、関連付けられたキャッシュ及び共有メモリの両方の更新を要求するが、このようなアクセス要求の例としては、キャッシュ不可の領域に対する書込みアクセス要求とライトスルーアクセス要求がある。このようなアクセス要求を、所定のプロセッサによって正確に処理しようとした場合、格納バッファ２２０の複雑度を著しく増してしまうことになる。その理由は、共有メモリ６０とキャッシュアレイ２３０の両方で、更新がアトミックに行われることを保障するため、格納バッファは、共有メモリ６０での更新が行われている間に書込みアクセス要求の対象となるデータ値に対する記録を維持し、メモリ内の更新と同期してキャッシュアレイ２３０内の更新を行う必要があるためである。このアトミックな更新が行われた後でのみ、格納バッファは、その記録を破棄し、別の書込み要求の処理に移ることができる。従って、キャッシュアレイ２３０へのアクセスに関して、複雑度が増すだけでなく、性能に大きな影響を及ぼす恐れがある。格納バッファ内に更に論理を付加することにより、メモリ内の更新の最中に、（キャッシュアレイ２３０全体ではなく）キャッシュアレイ２３０内の所定のキャッシュのみをロックすることができるが、これは、メモリ内の更新の最中にキャッシュアレイへの全ての書込みアクセス要求を単にブロックすることよりも、さらに複雑なものとなってしまう。
【００４４】
しかし、本発明の実施例によれば、関連付けられたキャッシュと共有メモリとの両方に対して更新を要求する種類のアクセス要求については、キャッシュに対する動作を要求しないアクセスとして扱い、それにより、キャッシュをヒットするかミスするかを判定するためにキャッシュアレイ２３０内のルックアップを要求しないアクセスとして扱うように、格納バッファ２２０が構成されている。その結果、所定の書込みアクセス要求を格納バッファにより処理する際には、その要求は、格納バッファ２２０からバスインターフェース２５０に伝えられ、その結果、そのアクセス要求は、バス接続に伝えられる。キャッシュ・コヒーレンシー論理も、この要求を受け取り、全てのキャッシュ２４、３４、４４又はキャッシュ１２４、１３４、１４４に対してコヒーレンシー操作を行う。ここで重要なのは、このコヒーレンシー操作は、該当する書込みアクセス要求自身に関わらないプロセッサのデータキャッシュに対して行われるだけでなく、この書込みアクセス要求の発行元となったプロセッサに関連付けられたデータキャッシュに関しても行われるということである。
【００４５】
従って、図１Ａの実施例によれば、プロセッサ・コア２２が、関連付けられたキャッシュ２４と共有メモリ６０の両方に対して更新を要求する種類のアクセス要求を発行した場合には、このアクセス要求は、コヒーレントバス構造５０に送られ、データキャッシュ２４内のルックアップは行わず、その代わり、キャッシュ・コヒーレンシー論理が、データキャッシュ２４、３４、４４の各々に対してコヒーレンシー操作を行う。一実施例において、この操作は、データキャッシュ２４、３４、４４の各々にコヒーレンシー要求を発行することを含み、このコヒーレンシー要求は、各データキャッシュ内のコヒーレンシーハンドラ２４０により受け取られる。その後、各データキャッシュ内で、要求されたコヒーレンシー維持操作が行われる。
【００４６】
他の実施例において、キャッシュ・コヒーレンシー論理は、各データキャッシュに関して、そのデータキャッシュのコヒーレンシーハンドラ２４０に対してコヒーレンシー要求を発行する必要があるかどうかを決定することができるように付加されたフィルタ論理を含んでいる。このフィルタ操作は、キャッシュ維持操作を行う必要があるかどうかを決定するために、各データキャッシュの内容に関する何らかの補足情報へ参照することを含んでいる。この方法により、多数のコヒーレンシー要求を行う必要性を取り除き、各データキャッシュ内のコヒーレンシーハンドラ２４０により行うことが必要なコヒーレンシー維持操作の数を大幅に減らすことができ、それにより、大きな省電力を図ることができる。
【００４７】
コヒーレンシーハンドラ２４０によるコヒーレンシー維持操作には、様々な形態がある。一実施例において、コヒーレンシーハンドラ２４０は、キャッシュアレイにヒットしたかどうかを検出し、もしヒットすれば、所定のキャッシュラインを無効にし、キャッシュラインを無効にする際に適切となる必要な動作を行うような状況に対応するように構成してもよい。それに代えて、コヒーレンシーハンドラは、キャッシュアレイがヒットを検出した際に、新しいデータ値でキャッシュラインを実際に更新し、必要に応じて、そのキャッシュラインに関連付けられた所定のコヒーレンシー状態ビットを更新するように構成してもよい。
【００４８】
この方法により、格納バッファは、単に、キャッシュアクセスを行う必要はないかのように、書き込みアクセス要求を処理するため、データキャッシュの格納バッファ２２０内には、新たに論理を付加する必要がなく、その結果、アトミックな操作を行う必要はない。その代わり、キャッシュ・コヒーレンシー論理が、要求の発行元となったプロセッサ・コアに関連付けられたデータキャッシュを含む、所定のデータキャッシュ内でのコヒーレンシー操作を行い、更に、要求されたメモリの更新を行う。もし、キャッシュ・コヒーレンシー論理が、その固有な特徴として、メモリ更新の最中に起こりうる危険性を検出し回避することができれば、データキャッシュの更新とメモリ更新とをアトミックに行う必要はない。一実施例において、実際には、データキャッシュにヒットすれば、いずれの場合でも、所定のキャッシュを無効化する結果となる。
【００４９】
図４は、一実施例における、書込みアクセス要求を処理する際の、図１Ａ又は図１Ｂのデータ処理装置１０、１００の動作を示すフローチャートである。最初に、ステップ３００において、データキャッシュにより、書込みアクセスが要求されたかどうかを判定する。その結果、関連付けられたプロセッサ・コアが、データキャッシュに対して書込みアクセス要求を発行し、その要求をステップ３００で検出し、ステップ３０５に進み、そのアクセスが、共有メモリ領域に対するものであり、アクセスの種類が、キャッシュとメモリとを更新する要求であるかを判定する。もしそうでなければ、ステップ３１０において、データキャッシュは、その通常の書込みアクセス処理を行う。この通常の書込みアクセス処理は、図２で先に説明したことからわかるように、キャッシュ・コヒーレンシー論理に対して、コヒーレンシー要求を発行することを含んでも、含まなくともよい。
【００５０】
一方、ステップ３０５において、アクセスが、共有メモリ領域に対するものであり、アクセスの種類が、キャッシュとメモリとを更新する要求であったと判定された場合は、ステップ３１５に進み、キャッシュのルックアップは行わず、キャッシュは、コヒーレンシー要求を発行する。次に、ステップ３２０において、書込みは保留するものと示され、例えば、格納バッファ内の所定のステータスフラグを設定する。更に、ステップ３２５において、キャッシュは、キャッシュ・コヒーレンシー論理からの確認応答を待つ。確認応答を受け取るまで、書込みアクセスは保留となるが、確認応答を受け取ると、ステップ３３０において、例えば、格納バッファ内の所定のステータスビットがクリアされることにより、書込みが完了したものと判断され、その後、ステップ３００に戻る。
【００５１】
更に、ステップ３１５において、コヒーレンシー要求が発行されると、その要求は、キャッシュ・コヒーレンシー論理に送られ、ステップ３３５において、キャッシュ・コヒーレンシー論理が既にコヒーレンシー要求を受け取る準備ができているかどうかを判定する。もしそうでなければ、ステップ３４０において、遅延を受け入れ、その後、ステップ３３５に戻る。キャッシュ・コヒーレンシー論理で、コヒーレンシー要求を受け取る準備ができると、ステップ３４５において、キャッシュ・コヒーレンシー論理は、発行元のプロセッサのレベル１キャッシュを含む、全てのレベル１キャッシュにそのコヒーレンシー要求を発行する。
【００５２】
その後、ステップ３５０において、各キャッシュは、要求されたコヒーレンシー操作を行い、キャッシュ・コヒーレンシー論理に対して、そのコヒーレンシー操作が完了したことを通知する。ステップ３５５において、全ての確認応答が受信されると、キャッシュ・コヒーレンシー論理は、ステップ３２５で検出した確認応答を、発行元のプロセッサに送り、ステップ３３０において、所定の書込みアクセスについて、完了したものとしてマーク付けする。更に、ステップ３６０において、キャッシュ・コヒーレンシー論理は、メモリ内の所定の内容を更新するために、メモリ６０にアクセス要求を発行し、ステップ３３５に戻る。
【００５３】
一実施例において、キャッシュ・コヒーレンシー論理が、メモリにアクセス要求を一度だけ発行する間に、全ての要求されたキャッシュ維持操作が、データキャッシュで行われるが、他の実施例においては、メモリへのアクセス要求を並列して発行し、データキャッシュに対するコヒーレンシー操作を行うこともできる。
【００５４】
なお、本発明の実施例の方法は、所定の処理装置の全てがプロセッサ・コアであるとは限らないシステムに適用することができるが、各処理装置が、実際に、それ自身に専用のキャッシュを有することは必須ではない。特に、発行元の処理装置からメモリに到る通常パス上にはないシステム内にキャッシュがあれば、このキャッシュ・コヒーレンシー論理は適切なものとなる。
【００５５】
従って、図５は、本発明の上述した方法も用いることができる他の実施例を示すものである。本実施例において、プロセッサ４２０は、プロセッサ・コア４２２と、関連付けられたレベル１データキャッシュ４２４とからなり、レベル１データキャッシュは、コヒーレントバス構造４５０を介してハードウェア・アクセラレータ４３０とデジタル信号プロセッサ（ＤＳＰ）４４０に接続されており、これらはキャッシュ４４５を共有している。更に、コヒーレントバス構造４５０は、レベル２キャッシュ４５５を介して、メモリ６０に接続されている。図１Ａの実施例と同様に、コヒーレントバス構造４５０は、キャッシュ・コヒーレンシー論理を含んでいる。
【００５６】
ハードウェア・アクセラレータ４３０は、様々な目的のために用いられるが、一例としては、グラフィック処理を実行するために用いられるグラフィックエンジンの形態であってもよい。ＤＳＰ４４０は、通常、ハードウェア・アクセラレータよりも多くの様々な機能を実行することができ、一例としては、グラフィックアルゴリズムを実行する音声フィルタリング機能を実行するために用いるものであってもよい。
【００５７】
レベル２キャッシュ４５５は、処理装置４２０、４３０、４４０のいずれかによるアクセスのためのデータを格納することができるが、共有メモリ４４５は、ハードウェア・アクセラレータ４３０又はＤＳＰ４４０のためのデータを格納できるものでありながら、プロセッサ４２０からはアクセスできない。すなわち、プロセッサ４２０からメモリ６０に到る通常のパス上（すなわち、レベル１データキャッシュ４２４、コヒーレントバス構造４５０、レベル２キャッシュ４５５を経由するパス上）のキャッシュではない。
【００５８】
このような状況でも、本発明の実施例の方法を用いることができる。一例としては、プロセッサ・コア４２２は、レベル１データキャッシュ４２４とメモリ６０の両方で行うべき更新を要求する種類の書込みアクセス要求を発行した場合には、この要求は、レベル１データキャッシュ４２４でルックアップを行わずに、それに代えて、コヒーレントバス構造４５０に直接送られる。その結果、キャッシュ・コヒーレンシー論理により、レベル１データキャッシュ４２４とレベル２キャッシュ４５５の両方にコヒーレンシー要求が発行され、要求されたキャッシュ維持操作が行われ、それと独立して、レベル２キャッシュ４５５からメモリ６０に経由して、メモリ更新が行なわれる。
【００５９】
上述したように、本発明の上述した実施例には、データキャッシュ論理の複雑度を増やさずに、キャッシュ更新とメモリ更新の両方を要求する共有メモリに対する書込みアクセスの正しい動作を保障するための簡単な実装を提供することができる。特に、どのような状況でもコヒーレント・ライトスルー書込みアクセスは選択しないが、それでも、キャッシュ不可の領域への共有書込みを正確に処理する機能を有する必要がある場合、通常は、キャッシュにヒットすることは実際にはほとんど起こらないために、データキャッシュ論理内に付加回路を設けることは特にコスト増となると考えられる状況では、上記のことは本実施例において有利なものとなる。
【００６０】
本発明の先行技術では、キャッシュ不可の領域への共有書込みが発生した際には、キャッシュ内でルックアップを行うことが必要であり、また、キャッシュヒットが発生した際には、更に、キャッシュ・コヒーレンシー論理にコヒーレンシー要求を発行し、データ処理装置の他のプロセッサに関連付けられたほかの全てのキャッシュを対象として、要求されたコヒーレンシー操作を行うことが必要である。その後、発行元のプロセッサのキャッシュと共有メモリの両方を、アトミックな方法で更新する必要があるが、これにより、多くの危険性を生じることになり、これに対する上述したような策は、実装するために多くのコストと時間を要するものとなる。
【００６１】
しかし、本発明の実施例の方法を用いることにより、発行元のプロセッサのキャッシュ内でルックアップを行う必要はなく、その代わり、コヒーレンシー要求を、キャッシュ・コヒーレンシー論理に直接送り、このコヒーレンシー要求を、要求の発行元となったプロセッサを含む、システムの全てのプロセッサに送る。書込みアクセス要求の発行元となるプロセッサが、そのキャッシュにデータを有している場合には、そのプロセッサは、コヒーレンシーを維持するために適切な動作（例えば、対応するキャッシュラインを更新又は無効化する）を行い、コヒーレンシー要求に応答するが、これは、単に、キャッシュ・コヒーレンシー要求を受け取る任意のデータキャッシュが行う標準的な処理の一部である。更に、キャッシュ・コヒーレンシー論理が、コヒーレンシー要求を通常受け取る他の全てのプロセッサに加え、発行元となったプロセッサにもコヒーレンシー要求を発行することができるようにすること以外には、更に複雑度を増やすことは求められない。
【００６２】
キャッシュ・コヒーレンシー論理がコヒーレンシー要求をフィルタすることが可能となるという、有利な特徴を有している本実施例においては、書込みアクセス要求の発行元であるプロセッサにコヒーレンシー要求を送ることは、必要となることもあるし、必要とならないこともあるが、特に、キャッシュ・コヒーレンシー論理が、そのデータがキャッシュ内にないと判定した場合には、発行元であるプロセッサに要求を送ることは必要ではないこともある。本発明の実施例を用いて、キャッシュ不可の領域への共有書込みを処理するための正しい動作を提供する際には、多くの場合、データキャッシュにヒットすることはないものであり、従って、キャッシュ・コヒーレンシー論理に、このようなフィルタ論理を設けることにより、大きな省電力を図ることができる。
【００６３】
以上では、特定の実施例を記述してきたが、本発明は、それに限定されるものではなく、本発明の範囲内において、それに対し多くの変更と付加を加えることができる。例えば、本発明の範囲を逸脱することなく、以下の従属クレームの特徴を、独立クレームの特徴と様々に組合せることが可能である。
【図１Ａ】
2010507160.tif 000003
【図１Ｂ】
2010507160.tif 000004
【図２】
2010507160.tif 000005
【図３】
2010507160.tif 000006
【図４】
2010507160.tif 000007
【図５】
2010507160.tif 000008
【手続補正書】
【提出日】平成20年5月13日(2008.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行することができる複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納することができる、それに関連付けられたキャッシュを有する前記複数の演算処理装置と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー論理と、を含むデータ処理装置であって、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するように動作することができ、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方のアトミックな方法での更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー論理内で開始され、
該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、書込みアクセス要求が、前記共有メモリに対する、キャッシュ不可の領域への書込みアクセス要求である場合、キャッシュ・コヒーレンシー論理内において、コヒーレンシー操作を開始するデータ処理装置。
【請求項３】
請求項１記載のデータ処理装置において、書込みアクセス要求が、前記共有メモリに対する、ライトスルー書込みアクセス要求である場合、キャッシュ・コヒーレンシー論理内において、コヒーレンシー操作を開始するデータ処理装置。
【請求項４】
請求項１から３のいずれかに記載のデータ処理装置において、コヒーレンシー操作を行う際に、キャッシュ・コヒーレンシー論理が、複数の演算処理装置に関連付けられたキャッシュの各々に対して、コヒーレンシー要求信号を発行し、コヒーレンシー要求信号は、書込みアクセス要求の対象となるデータ値に対応したアドレスを特定するデータ処理装置。
【請求項５】
請求項１から３のいずれかに記載のデータ処理装置において、コヒーレンシー操作を行う際に、キャッシュ・コヒーレンシー論理は、フィルタ操作を適用し、どのキャッシュがコヒーレンシー要求を発行するのかを決定し、次に、決定されたキャッシュに対してコヒーレンシー要求を発行し、コヒーレンシー要求信号は、書込みアクセス要求の対象となるデータ値に対応したアドレスを特定するデータ処理装置。
【請求項６】
請求項１から５のいずれかに記載のデータ処理装置において、書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方の更新を要求する種類のものである場合に、該書込みアクセス要求を発行した演算処理装置に関連付けられたキャッシュにおいてキャッシュルックアップを行わずに、キャッシュ・コヒーレンシー論理内において、コヒーレンシー操作を開始するデータ処理装置。
【請求項７】
請求項１から６のいずれかに記載のデータ処理装置において、各演算処理装置において、それに関連付けられたキャッシュは、該演算処理装置にのみ関連付けられたローカルキャッシュであるデータ処理装置。
【請求項８】
請求項１から７のいずれかに記載のデータ処理装置において、共有メモリは、メモリの共有メモリ領域であるデータ処理装置。
【請求項９】
請求項１から８のいずれかに記載のデータ処理装置において、複数の演算処理装置の少なくとも一つは、プロセッサ・コアであるデータ処理装置。
【請求項１０】
請求項１から９のいずれかに記載のデータ処理装置において、キャッシュ・コヒーレンシー・プロトコルは、スヌープに基づくキャッシュ・コヒーレンシー・プロトコルであるデータ処理装置。
【請求項１１】
データ処理装置で用いるためのキャッシュ・コヒーレンシー論理であって、
該データ処理装置は、共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置を有し、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュを有し、
前記キャッシュ・コヒーレンシー論理は、各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用い、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するように動作することができ、該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方のアトミックな方法での更新を要求する種類のものである場合に、コヒーレンシー論理が、キャッシュ・コヒーレンシー操作を開始し、
該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー論理は、書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するキャッシュ・コヒーレンシー論理。
【請求項１２】
データ処理装置において共有メモリへの書き込みアクセス要求を処理するための方法であって、
該データ処理装置は、
共有メモリ内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理装置であって、各演算処理装置は、該演算処理装置によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュを有する演算処理装置を含み、
該方法は、
各演算処理装置は、前記共有メモリ内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行するステップと、
該書込みアクセス要求が、関連付けられたキャッシュ及び共有メモリの両方のアトミックな方法での更新を要求する種類のものである場合に、キャッシュ・コヒーレンシー論理内でコヒーレンシー操作を開始するステップであって、該キャッシュ・コヒーレンシー論理は、キャッシュ内のデータがコヒーレントを保つことを保障するために、キャッシュ・コヒーレンシー・プロトコルを用いるステップと、
キャッシュ内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理装置に関連付けられたキャッシュを含む、複数の演算処理装置に関連付けられた各々のキャッシュに関してコヒーレンシー操作を行うステップと、
書込みアクセス要求の対象となるデータ値に関して、前記共有メモリに更新要求を発行するステップとを含む方法。
【請求項１３】
共有メモリ手段内のデータへのアクセスを要求するデータ処理操作を実行するための複数の演算処理手段であって、各演算処理手段は、該演算処理手段によるアクセスのために前記データのサブセットを格納するための、それに関連付けられたキャッシュ手段を有する演算処理手段と、
各演算処理装置によりアクセスされるデータが最新であることを保障する、キャッシュ・コヒーレンシー・プロトコルを用いたキャッシュ・コヒーレンシー手段と、を含むデータ処理装置であって、
各演算処理手段は、前記共有メモリ手段内に格納するためのデータ値を出力する際に、書込みアクセス要求を発行し、該書込みアクセス要求が、関連付けられたキャッシュおよび共有メモリの両方のアトミックな方法での更新を要求する種類のものである場合に、コヒーレンシー操作が、キャッシュ・コヒーレンシー手段内で開始し、
該キャッシュ・コヒーレンシー手段は、これらのキャッシュ手段内のデータがコヒーレントを保つことを保障するために、書込みアクセス要求を発行する演算処理手段に関連付けられたキャッシュ手段を含む、複数の演算処理手段に関連付けられた各々のキャッシュ手段に関してコヒーレンシー操作を行い、
更に、該キャッシュ・コヒーレンシー手段は、書込みアクセス要求の対象となるデータ各データ値に関して、前記共有メモリ手段に更新要求を発行するデータ処理装置。
【国際調査報告】
2010507160.tif 000009
2010507160.tif 000010