(57)【要約】  本発明では、マルチプロセッサシステムは、プロセッサにそれぞれ対応したキャッシュメモリと各キャッシュメモリの階層レベルが設定される階層設定レジスタと各キャッシュメモリ間のアクセスを制御するアクセス制御部を有している。プロセッサ毎のキャッシュメモリの階層レベルは、書き換え可能な階層設定レジスタに保持さる。各プロセッサは、他のプロセッサに対応したキャッシュメモリをそのプロセッサに対応しているキャッシュメモリより階層が深いキャッシュメモリとして扱う。この結果、各プロセッサは全てのキャッシュメモリにアクセスできるので、キャッシュメモリの利用効率を良くすることができ、アプリケーション毎に最適なレイテンシになるように階層レベルを設定できる。
2007099643.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
プロセッサ毎に異なる階層レベルを有し、前記プロセッサに共有された複数のキャッシュメモリと、
前記キャッシュメモリの階層レベルを保持する書き換え可能な階層設定レジスタと、
前記階層設定レジスタに設定された階層レベルに従って、各キャッシュメモリ間のアクセスを制御するアクセス制御部とを備えていることを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層設定レジスタに保持されたキャッシュメモリの階層レベルを書き換える設定部を備えていることを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件が設定される書き換え可能な転送設定レジスタを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
【請求項４】
請求項３記載のマルチプロセッサシステムにおいて、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録を保持するタグを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に加えて、前記タグに保持された情報に従って動作することを特徴とするマルチプロセッサシステム。
【請求項５】
請求項４記載のマルチプロセッサシステムにおいて、
前記タグは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるLRU（Least Recently Used）データを保持することを特徴とするマルチプロセッサシステム。
【請求項６】
請求項３記載のマルチプロセッサシステムにおいて、
前記アクセス制御部は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステム。
【請求項７】
請求項３記載のマルチプロセッサシステムにおいて、
前記プロセッサが共有するメインメモリと、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件が設定される書き換え可能な置換設定レジスタとを備え、
前記アクセス制御部は、前記置換設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
【請求項８】
請求項３記載のマルチプロセッサシステムにおいて、
前記転送設定レジスタに“保持”の条件が設定されているときに、
前記アクセス制御部は、前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステム。
【請求項９】
複数のプロセッサと、前記プロセッサに共有された複数のキャッシュメモリとを備えたマルチプロセッサシステムの動作方法であって、
前記キャッシュメモリを前記プロセッサ毎で異なる階層レベルに設定し、前記階層レベルは書き換え可能であり、
前記キャッシュメモリの階層レベルに従って各キャッシュメモリ間のアクセスを制御することを特徴とするマルチプロセッサシステムの動作方法。
【請求項１０】
請求項９記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層レベルを書き換えることを特徴とするマルチプロセッサシステムの動作方法。
【請求項１１】
請求項９記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件である転送条件を設定し、前記転送条件は書き換え可能であり、
前記転送条件に従ってキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
【請求項１２】
請求項１１記載のマルチプロセッサシステムの動作方法において、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録であるアクセス情報を保持し、
前記転送条件に加えて、前記アクセス情報に従ってキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
【請求項１３】
請求項１２記載のマルチプロセッサシステムの動作方法において、
前記アクセス情報として、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるＬＲＵ（Least Recently Used）データを用いることを特徴とするマルチプロセッサシステムの動作方法。
【請求項１４】
請求項１１記載のマルチプロセッサシステムの動作方法において、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステムの動作方法。
【請求項１５】
請求項１１記載のマルチプロセッサシステムの動作方法において、
前記プロセッサは、メインメモリを共有し、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件である置換条件を設定し、前記置換条件は書き換え可能であり、
前記置換条件に従って、上位階層のキャッシュメモリから溢れたキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
【請求項１６】
請求項１１記載のマルチプロセッサシステムの動作方法において、
前記転送条件が“保持”の条件のときに、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム及びマルチプロセッサシステムの動作方法に関する。
【背景技術】
【０００２】
一般に、プロセッサシステムでは、プロセッサと主記憶装置であるメインメモリの動作速度のバランスをとるために、プロセッサとメインメモリの間に高速なキャッシュメモリを搭載する方式がとられている。また、高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが用いられている。マルチプロセッサシステムでは、例えば、複数のプロセッサがキャッシュメモリを介在してメインメモリのデータをアクセスするマルチプロセッサシステムに搭載されるキャッシュメモリは、プロセッサにそれぞれ対応して備えられる。このキャッシュメモリは、プロセッサ毎に固定のアクセス優先度をもって、全てのプロセッサからアクセスされる（例えば、特許文献１参照）。
【特許文献１】特開平６−２０２９４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プロセッサにそれぞれ対応したキャッシュメモリを有する従来のマルチプロセッサシステムでは、各キャッシュメモリは全てのプロセッサからアクセスされるので、キャッシュメモリの利用効率は良い。しかし、各キャッシュメモリへのアクセス優先度（階層レベル）が固定されているため、プロセッサがキャッシュメモリにアクセスを要求してからデータを受け取るまでの遅延時間（レイテンシ）は、大きくなる場合がある。例えば、最適なレイテンシになるための階層レベルが、使用するアプリケーション毎に異なる場合でも、キャッシュメモリの階層レベルは、固定されている。このため、レイテンシは、アプリケーションによって大きくなる場合がある。また、複数のプロセッサによってアクセスされる共有データがキャッシュメモリのいずれかに存在するとき、他のキャッシュメモリにデータを移動した方が、レイテンシは小さくなる場合がある。この場合でも、キャッシュメモリ間でデータを転送できないので、レイテンシは小さくならない。【０００４】
本発明の目的は、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることである。
【課題を解決するための手段】
【０００５】
本発明では、マルチプロセッサシステムは、プロセッサにそれぞれ対応したキャッシュメモリと各キャッシュメモリの階層レベルが設定される階層設定レジスタと各キャッシュメモリ間のアクセスを制御するアクセス制御部を有している。
各プロセッサは、他のプロセッサに対応したキャッシュメモリをそのプロセッサに対応しているキャッシュメモリより階層が深いキャッシュメモリとして扱う。この結果、各プロセッサは全てのキャッシュメモリにアクセスできるので、キャッシュメモリの利用効率を良くすることができる。プロセッサ毎のキャッシュメモリの階層レベルは、書き換え可能な階層設定レジスタに保持されているので、アプリケーション毎に最適なレイテンシになるように変更できる。【０００６】
また、下位階層のキャッシュメモリがキャッシュヒットしたときのキャッシュラインを移動するか、複製するか、保持するかの条件（以後、転送条件とも称する）は、書き換え可能な転送設定レジスタに設定される。このため、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能になる。例えば、あるアプリケーションは、下位階層のキャッシュメモリに登録されているキャッシュラインを連続して使用する。この場合、キャッシュラインの転送条件を“移動”あるいは“複製”に設定することにより、レイテンシを小さくすることができる。別の例では、ある特定のプロセッサは、他のプロセッサより頻繁に、各プロセッサに共有されているデータをアクセスする。この場合、特定のプロセッサに対応するキャッシュメモリの転送条件を“保持”に設定することにより、レイテンシを小さくすることができる。【０００７】
この結果、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
【発明の効果】
【０００８】
キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態を示すブロック図である。
【図２】図１に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルを示す説明図である。
【図３】図１に示した転送設定レジスタに設定される下位階層でキャッシュヒットしたキャッシュラインの転送条件を示す説明図である。
【図４】図１に示した置換設定レジスタに設定されるキャッシュライン登録時のキャッシュラインの置換条件を示す説明図である。
【図５】図１に示した転送設定レジスタに設定されるＬＲＵデータの更新手順を示す説明図である。
【図６】第１の実施形態のマルチプロセッサシステムの動作の一例を示すフローチャートである。
【図７】本発明の第２の実施形態を示すブロック図である。
【図８】図７に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルの一例を示す説明図である。
【図９】図７に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルの別の例を示す説明図である。
【図１０】図７に示した転送設定レジスタに設定される下位階層でキャッシュヒットしたキャッシュラインの転送条件を示す説明図である。
【図１１】図７に示した置換設定レジスタに設定されるキャッシュライン登録時のキャッシュラインの置換条件を示す説明図である。
【図１２】第２の実施形態のマルチプロセッサシステムの動作の一例を示すフローチャートである。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を図面を用いて説明する。
図１は、本発明の第１の実施形態を示している。マルチプロセッサシステムは、プロセッサＰ０、Ｐ１、Ｐ２、キャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３、アクセス制御部ＡＣＮＴ、階層設定レジスタＬＲＥＧ、転送設定レジスタＴＲＥＧ、置換設定レジスタＲＲＥＧ、およびメインメモリＭＭを有している。各キャッシュメモリＣ０−Ｃ３は、それぞれタグＴＧ０−ＴＧ３を有している。プロセッサＰ０、Ｐ１、Ｐ２は、それぞれキャッシュメモリＣ０、Ｃ１、Ｃ２に直接接続されている。キャッシュメモリＣ０、Ｃ１、Ｃ２は、アクセス制御部ＡＣＮＴに接続されている。アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧ、転送設定レジスタＴＲＥＧ、置換設定レジスタＲＲＥＧ、キャッシュメモリＣ３およびメインメモリＭＭに接続されている。メインメモリＭＭはキャッシュメモリＣ３に接続されている。各キャッシュメモリＣ０−Ｃ３のタグＴＧ０−ＴＧ３には、ＬＲＵ（Least Recently Used）データが記録されている。ここで、ＬＲＵデータは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータである。上述した各レジスタＬＲＥＧ、ＴＲＥＧ、ＲＲＥＧは、書き換え可能である。アプリケーション毎に適切な設定に書き換えることにより、アプリケーションに依存せずに、レイテンシを常に小さくすることが可能である。【００１１】
図２は、プロセッサＰ０−Ｐ２から見た各キャッシュメモリＣ０−Ｃ３の階層レベルを示している。図２に示したキャッシュメモリＣ０−Ｃ３の階層レベルは、図１に示した階層設定レジスタＬＲＥＧに設定される。アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧに設定された階層レベルに従って、各キャッシュメモリＣ０−Ｃ３間のアクセスを制御する。プロセッサＰ０から見たキャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の階層レベルは、それぞれレベル１、レベル２、レベル２、レベル３である。プロセッサＰ１から見たキャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の階層レベルは、それぞれレベル２、レベル１、レベル２、レベル３である。プロセッサＰ２から見たキャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の階層レベルは、それぞれレベル２、レベル２、レベル１、レベル３である。プロセッサＰ０−Ｐ２は、全てのキャッシュメモリＣ０−Ｃ３にアクセスできるので、キャッシュメモリの利用効率を良くすることができる。また、プロセッサＰ０−Ｐ２は、レベル２、レベル３のキャッシュメモリを備える。これにより、メインメモリＭＭまでアクセスする機会を減らすことができ、レイテンシを小さくできる。【００１２】
図３は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインの転送条件を示している。図３に示した転送条件は、図１に示した転送設定レジスタＴＲＥＧに設定される。アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧに設定された条件に従って、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを制御する。キャッシュメモリＣ０−Ｃ２は、ＬＲＵデータの値が最後に使用したデータ（最新データ）を示しているときは、キャッシュラインを移動せずに保持する。ＬＲＵデータの値が最新データ以外を示しているときは、キャッシュラインを移動する（複製はしない）。図３に示した転送条件により、他のプロセッサが連続して使用する場合にキャッシュラインを移動し、適切なキャッシュメモリにキャッシュラインが登録される。この結果、レイテンシを小さくできる。キャッシュメモリＣ３は、ＬＲＵデータの値に拘わらず、キャッシュラインを複製する。【００１３】
図４は、キャッシュラインを登録したときに、上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、メインメモリＭＭへ書き出すか、破棄するかの条件（以後、置換条件とも称する）を示している。図４に示した置換条件は、図１に示した置換設定レジスタＲＲＥＧに設定される。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧに設定された条件に従って、上位階層のキャッシュメモリから溢れたキャッシュラインを制御する。キャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の置換条件は、それぞれ“破棄”、“移動”、“移動”、“破棄”である。このように、キャッシュメモリ毎にキャッシュラインの置換条件を設定できるので、アプリケーション毎に適切な設定に書き換えることにより、レイテンシを小さくすることが可能である。例えば、図４の置換条件では、あるプロセッサがキャッシュメモリＣ１、Ｃ２から溢れたキャッシュラインにアクセスする場合、そのキャッシュラインは他のキャッシュメモリに登録されているので、プロセッサはメインメモリＭＭにアクセスする必要がない。この結果、レイテンシを小さくできる。【００１４】
図５は、ＬＲＵデータの更新手順を示している。図５に示したＬＲＵデータの更新手順は、図１に示した転送設定レジスタＴＲＥＧに設定される。以下では、一例として、下位階層のキャッシュメモリがキャッシュヒットした場合のＬＲＵデータの更新手順を説明する。キャッシュヒットしたキャッシュラインに対応するＬＲＵデータの値が“最新”の場合、キャッシュメモリＣ０、Ｃ１、Ｃ２は、ＬＲＵデータの値を“最新”から“２番目”に交換する（図５に示した“ＬＲＵ最新”の列）。この結果、最後から２番目に使用されたキャッシュラインに対応するＬＲＵデータの値は“最新”に設定され、最後に使用されたキャッシュラインに対応するＬＲＵデータの値は“２番目”に設定される。従来の更新手順では、最後から２番目に使用されたキャッシュラインに対応するＬＲＵデータの値を“２番目”に設定する。キャッシュヒットしたキャッシュラインに対応するＬＲＵデータの値が“最新”でない場合、レベル１のキャッシュメモリにキャッシュラインを移動した後、ＬＲＵデータの値を“最新”に設定する（図５に示した“ＬＲＵ最新以外”の列）。キャッシュメモリＣ３は、ＬＲＵデータの値に関わらず、ＬＲＵデータの値を“最新”に設定する。本実施形態では、図４に示した転送条件が機能するように、ＬＲＵデータを更新している。【００１５】
また、キャッシュラインの置き換えが起こり、下位階層のキャッシュメモリに上位階層から溢れたキャッシュラインを登録する場合、キャッシュメモリＣ０−Ｃ２は、キャッシュラインが割り当てられるＬＲＵデータの値を“最古”に設定する（図５の“リプレース時”の列）。キャッシュメモリＣ３は、キャッシュラインが割り当てられるＬＲＵデータの値を変更しない（図５の“リプレース時”の列）。ここで、ＬＲＵデータの値の“最古”は、最初に使用されたキャッシュライン（未使用の時間がもっとも長いキャッシュライン）を意味する。【００１６】
図６は、第１の実施形態のマルチプロセッサシステムの動作の一例を示している。アドレスＸ、Ｙは、図１のメインメモリＭＭ内のアドレスを示している。アドレスＸのデータはキャッシュメモリＣ０−Ｃ３に未登録で、アドレスＹのデータは既にキャッシュメモリＣ３に登録されている場合を例にして、図６に示す動作を説明する。
まず、ステップＳ１００では、プロセッサＰ０は、キャッシュメモリＣ０（レベル１）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュミスとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧに設定された階層に従って、キャッシュメモリＣ１（レベル２）とキャッシュメモリＣ２（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ１、Ｃ２はキャッシュミスとなる。キャッシュメモリＣ１、Ｃ２は、アクセス制御部ＡＣＮＴにキャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ３（レベル３）にアドレスＸのリード要求を発行する。キャッシュメモリＣ３はキャッシュミスとなる。キャッシュメモリＣ３は、アクセス制御部ＡＣＮＴにキャッシュミスを通知する。【００１７】
アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧにキャッシュメモリＣ３より下位階層のキャッシュメモリが設定されていないので、メインメモリＭＭにアドレスＸのリード要求を発行する。アクセス制御部ＡＣＮＴは、メインメモリＭＭからアドレスＸを含むキャッシュラインサイズ分のデータを読み出す。アクセス制御部ＡＣＮＴは、読み出したデータを含むキャッシュラインをキャッシュメモリＣ０、Ｃ３に転送する。キャッシュメモリＣ３は、プロセッサＰ０−Ｐ２で最下層の共有キャッシュメモリとして使用している。このため、メインメモリＭＭから読み出したキャッシュラインは、キャッシュメモリＣ３にも登録される。キャッシュメモリＣ０、Ｃ３は、アクセス制御部ＡＣＮＴから送られたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ０、Ｃ３は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ０は、プロセッサＰ０にアドレスＸのデータを返送する。【００１８】
アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ３の置換設定レジスタＲＲＥＧの置換条件が“破棄”になっているので、キャッシュメモリＣ０、Ｃ３から溢れたキャッシュラインを破棄する。但し、キャッシュメモリＣ０から溢れたキャッシュラインが“ダーティ”の場合は、アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０から溢れたキャッシュラインをキャッシュメモリＣ３に移動する。ここで、“ダーティ”は、上位階層のキャッシュメモリにあるデータのみ更新して、下位階層のキャッシュメモリあるいはメインメモリＭＭにあるデータを更新していない状態である。キャッシュメモリＣ３は、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ３は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、キャッシュメモリＣ０から送られてきたキャッシュラインを登録する。キャッシュメモリＣ３は、登録したキャッシュラインを“ダーティ”に設定する。キャッシュメモリＣ３から溢れたキャッシュラインが“ダーティ”のときは、アクセス制御部ＡＣＮＴは、そのキャッシュラインをメインメモリＭＭに書き出す。【００１９】
ステップＳ１１０では、プロセッサＰ１は、キャッシュメモリＣ１（レベル１）にアドレスＸのリード要求を発行する。キャッシュメモリＣ１はキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ２（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュヒットとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“最新”を示しているので、キャッシュヒットしたキャッシュラインを移動せずに保持する。アクセス制御部ＡＣＮＴは、アドレスＸのデータをキャッシュメモリＣ０からキャッシュメモリＣ１を経由して、プロセッサＰ１に返送する。キャッシュメモリＣ０は、キャッシュヒットしたキャッシュラインのＬＲＵデータの値を“２番目”に設定する。例えば、ステップＳ１２０の前に、プロセッサＰ０がアドレスＸのリード要求を再度発行した場合、キャッシュメモリＣ０（レベル１）にアドレスＸのデータが、まだ登録されているので、レイテンシを小さくできる。【００２０】
ステップＳ１２０では、プロセッサＰ１は、キャッシュメモリＣ１（レベル１）にアドレスＸのリード要求を再度発行する。キャッシュメモリＣ１はキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ２（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュヒットとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“２番目”を示しているので、キャッシュヒットしたキャッシュラインをキャッシュメモリＣ１（レベル１）に移動する。キャッシュメモリＣ１は、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ１は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ１は、登録したキャッシュラインのＬＲＵデータの値を“最新”に設定する。さらに、キャッシュメモリＣ１は、プロセッサＰ１にアドレスＸのデータを返送する。【００２１】
また、アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ１の置換条件が“移動”に設定されているので、キャッシュメモリＣ１から溢れたキャッシュラインをキャッシュメモリＣ０に移動する。キャッシュメモリＣ０は、キャッシュメモリＣ１から溢れたキャッシュラインを、キャッシュメモリＣ１に送ったキャッシュライン（キャッシュヒットしたキャッシュライン）があったところに登録する。キャッシュメモリＣ０は、登録したキャッシュラインのＬＲＵデータの値を“最古”に設定する。このように、下位階層のキャッシュメモリＣ０でキャッシュヒットしたキャッシュラインをキャッシュメモリＣ１に移動しているので、キャッシュメモリＣ０とキャッシュメモリＣ１に同じデータが存在しない。このため、キャッシュメモリの利用効率を良くできる。また、上位階層のキャッシュメモリＣ１から溢れたキャッシュラインをメインメモリＭＭに書き戻さずに、下位階層のキャッシュメモリＣ０に移動している。このため、あるプロセッサがこのキャッシュラインに対応したアドレスにアクセス要求を発行した場合、キャッシュメモリＣ０にキャッシュラインが、まだ登録されているので、レイテンシを小さくできる。【００２２】
ステップＳ１３０では、プロセッサＰ２は、キャッシュメモリＣ２（レベル１）にアドレスＸのライト要求を発行する。キャッシュメモリＣ２はキャッシュミスとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ１（レベル２）にアドレスＸのライト要求を発行する。キャッシュメモリＣ１はキャッシュヒットとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“最新”を示しているので、キャッシュヒットしたキャッシュラインを移動せずに保持する。アクセス制御部ＡＣＮＴは、プロセッサＰ２から送られたデータをキャッシュメモリＣ１に送る。キャッシュメモリＣ１は、プロセッサＰ２からアクセス制御部ＡＣＮＴを経由して送られてきたデータをキャッシュヒットしたキャッシュラインに書き込み、ＬＲＵデータの値を“２番目”に設定する。キャッシュメモリＣ１は、更新したキャッシュラインを“ダーティ”に設定する。または、キャッシュメモリＣ１は、更新したキャッシュラインを“ダーティ”と設定せずに、下位階層のキャッシュメモリＣ３、あるいはメインメモリＭＭまで、ライトスルーしてもよい。ここで、ライトスルーとは、プロセッサが上位階層のキャッシュメモリにデータを書き込む場合、上位階層のキャッシュメモリと同時に下位階層のメモリにもデータを書き込む方式である。【００２３】
ステップＳ１３０では、プロセッサＰ２は、キャッシュメモリＣ１に直接データを書き込んでいる。このため、ステップＳ１４０の前に、プロセッサＰ１がアドレスＸのアクセス要求を発行した場合、キャッシュメモリＣ１（レベル１）にアドレスＸのデータが、まだ登録されているので、レイテンシを小さくできる。
ステップＳ１４０では、プロセッサＰ２はキャッシュメモリＣ２（レベル１）にアドレスＸのライト要求を再度発行する。キャッシュメモリＣ２はキャッシュミスとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ１（レベル２）にアドレスＸのライト要求を発行する。キャッシュメモリＣ１はキャッシュヒットとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“２番目”を示しているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリＣ２に移動する。キャッシュメモリＣ２は、キャッシュメモリＣ１から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ２は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ２は、登録したキャッシュラインにプロセッサＰ２から送られたデータを書き込む。キャッシュメモリＣ２は、書き込んだキャッシュラインを“ダーティ”にし、ＬＲＵデータの値を“最新”に設定する。これにより、プロセッサＰ２が、アドレスＸのアクセス要求を再度発行した場合、キャッシュメモリＣ２（レベル１）にアドレスＸのデータが登録されているので、レイテンシを小さくできる。【００２４】
アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ２の置換条件が“移動”に設定されているので、キャッシュメモリＣ２から溢れたキャッシュラインをキャッシュメモリＣ１に移動する。キャッシュメモリＣ１は、キャッシュメモリＣ２から溢れたキャッシュラインを、キャッシュメモリＣ２に送ったキャッシュラインがあったところに登録し、ＬＲＵデータの値を“最古”に変更する。この場合も、ステップＳ１２０と同様に、上位階層のキャッシュメモリＣ２から溢れたキャッシュラインをメインメモリＭＭに書き戻さずに、下位階層のキャッシュメモリＣ１に移動している。このため、あるプロセッサがこのキャッシュラインに対応したアドレスにアクセス要求を発行した場合、キャッシュメモリＣ１にキャッシュラインが、まだ登録されているので、レイテンシを小さくできる。【００２５】
ステップＳ１５０では、プロセッサＰ１は、キャッシュメモリＣ１（レベル１）にアドレスＹのリード要求を発行する。キャッシュメモリＣ１はキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ２（レベル２）にアドレスＹのリード要求を発行する。キャッシュメモリＣ０、Ｃ２はキャッシュミスとなる。キャッシュメモリＣ０、Ｃ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ３（レベル３）にアドレスＹのリード要求を発行する。キャッシュメモリＣ３はキャッシュヒットとなる。キャッシュメモリＣ３は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧのキャッシュメモリＣ３の転送条件が“複製”に設定されているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリＣ１に複製する。キャッシュメモリＣ１は、キャッシュメモリＣ３から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ１は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ１は、ＬＲＵデータの値を“最新”に設定する。さらに、キャッシュメモリＣ１は、プロセッサＰ１にアドレスＹのデータを返送する。また、アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ１の置換条件が“移動”に設定されているので、キャッシュメモリＣ１から溢れたキャッシュラインをレベルが１つ下のキャッシュメモリＣ０に移動する。図２に示したように、レベルが１つ下のキャッシュメモリが複数ある場合、キャッシュラインの移動先になるキャッシュメモリは、ある判定基準を元に選択される。ステップＳ１５０では、キャッシュラインの移動先になるキャッシュメモリは、キャッシュメモリＣ０とキャッシュメモリＣ２からランダムに選択されている。その結果、キャッシュメモリＣ０が選択されている。【００２６】
キャッシュメモリＣ０は、キャッシュメモリＣ１から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ０は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ０は、ＬＲＵデータの値を“最古”に設定する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ０の置換条件が“破棄”に設定されているので、キャッシュメモリＣ０から溢れたキャッシュラインを破棄する。置換条件を“破棄”に設定すると、下位階層キャッシュメモリへのキャッシュラインの移動が発生しないので、バス占有率を軽減できる。但し、破棄対象のキャッシュラインが“ダーティ”のときは、アクセス制御部ＡＣＮＴは、破棄対象のキャッシュラインをキャッシュメモリＣ３に移動する。キャッシュメモリＣ３は、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ３は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ３は、登録したキャッシュラインを“ダーティ”に設定する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ３の置換条件が“破棄”に設定されているので、キャッシュメモリＣ３から溢れたキャッシュラインを破棄する。このとき、破棄対象のキャッシュラインが“ダーティ”のときは、アクセス制御部ＡＣＮＴは、破棄対象のキャッシュラインをメインメモリＭＭに書き出す。【００２７】
以上、第１の実施形態では、階層設定レジスタＬＲＥＧに設定された階層レベルに従って、プロセッサＰ０−Ｐ２は全てのキャッシュメモリＣ０−Ｃ３にアクセスできるので、キャッシュメモリの利用効率を良くすることができる。さらに、レジスタＬＲＥＧ、ＴＲＥＧ、ＲＲＥＧに設定する条件をアプリケーション毎に適切な条件に設定できるので、アプリケーションに依存せずに、レイテンシを常に小さくすることが可能である。この結果、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。【００２８】
図７は、本発明の第２の実施形態を示している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムでは、第１の実施形態のキャッシュメモリＣ３が省かれ、プロセッサＰ３と階層設定部ＬＣＮＴが追加されている。また、キャッシュメモリＣ１は、プロセッサＰ１のアプリケーションの特性からキャッシュメモリ容量が小さくてもよいとの前提で、キャッシュメモリＣ１ＡとキャッシュメモリＣ１Ｂとに分けて使用されている。キャッシュメモリＣ１Ｂは、他のプロセッサに解放されている。【００２９】
プロセッサＰ３は、アクセス制御部ＡＣＮＴに直接接続されている。階層設定部ＬＣＮＴは、アクセス制御部ＡＣＮＴと階層設定レジスタＬＲＥＧに接続されている。階層設定部ＬＣＮＴは、階層設定レジスタＬＲＥＧに階層レベルを設定する。この実施形態では、階層設定部ＬＣＮＴは、プロセッサＰ０のアクセス要求に対して、キャッシュメモリＣ２でキャッシュヒットした場合に図９の階層レベルを階層設定レジスタＬＲＥＧに設定し、キャッシュメモリＣ１Ｂでキャッシュヒットした場合に図８の階層レベルを階層設定レジスタＬＲＥＧに設定する。【００３０】
図８は、プロセッサＰ０−Ｐ３から見た各キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルの一例を示している。この例では、プロセッサＰ０から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれレベル１、未使用、レベル２、レベル３である。プロセッサＰ１から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、レベル１、未使用、未使用である。プロセッサＰ２から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、未使用、レベル１である。プロセッサＰ３から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、未使用、レベル１である。未使用のキャッシュメモリは、階層設定レジスタＬＲＥＧに、未使用のフラグが設定される。【００３１】
図９は、プロセッサＰ０−Ｐ３から見た各キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルの別の例を示している。この例では、プロセッサＰ０から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれレベル１、未使用、レベル３、レベル２である。プロセッサＰ１から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、レベル１、未使用、未使用である。プロセッサＰ２から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、未使用、レベル１である。プロセッサＰ３から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、レベル１、未使用である。但し、プロセッサＰ３は、キャッシュメモリＣ１Ｂがキャッシュミスした場合、キャッシュメモリＣ１Ｂにキャッシュラインの登録をしないで、メインメモリＭＭにアクセスする。つまり、プロセッサＰ３は、キャッシュメモリＣ１Ｂがキャッシュヒットした場合のみ、キャッシュメモリＣ１Ｂを利用する。【００３２】
図１０は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインの転送条件を示している。図１０に示した転送条件は、図７に示した転送設定レジスタＴＲＥＧに設定される。キャッシュメモリＣ０、Ｃ１Ａは、下位階層にならないので転送条件は設定されない。キャッシュメモリＣ１Ｂは、キャッシュヒットしたキャッシュラインを移動する。キャッシュメモリＣ２はキャッシュヒットしたキャッシュラインを複製する。【００３３】
図１１は、キャッシュラインを登録したときに、上位階層のキャッシュメモリから溢れたキャッシュラインの置換条件を示している。図１１に示した条件は、図７に示した置換設定レジスタＲＲＥＧに設定される。キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の置換条件は、それぞれ“移動”、“破棄”、“メインメモリＭＭにライト”、“移動”である。ここで、“メインメモリＭＭにライト”は、メインメモリＭＭへデータを書き戻すことである。【００３４】
図１２は、第２の実施形態のマルチプロッセッサシステムの動作の一例を示している。この例では、アドレスＸのデータとアドレスＹのデータは、キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２に未登録である。また、ステップＳ２００の前のキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、図８に示した階層レベルが、図７に示した階層設定レジスタＬＲＥＧに設定されている。新しいデータを格納する場所を確保するために既存のデータを追い出す方法として、図７には図示されていないが、従来のキャッシュメモリシステムで利用されているＬＲＵデータの値を使用している。このような場合を例にして、動作を説明する。【００３５】
まず、ステップＳ２００では、プロセッサＰ２は、キャッシュメモリＣ２（レベル１）にアドレスＸのライト要求を発行する。キャッシュメモリＣ２はキャッシュミスとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ２より下位階層のキャッシュメモリが階層設定レジスタＬＲＥＧに設定されていないので、メインメモリＭＭにアドレスＸを含むキャッシュラインのリード要求を発行する。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴを経由して、メインメモリＭＭから読み出したキャッシュラインを登録する。キャッシュメモリＣ２は、プロセッサＰ２から送られたデータを登録したキャッシュラインに書き込む。そして、キャッシュメモリＣ２は、書き込んだキャッシュラインを“ダーティ”に設定する。【００３６】
ステップＳ２１０では、プロセッサＰ０は、キャッシュメモリＣ０（レベル１）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュミスとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ１Ｂ（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ１Ｂはキャッシュミスとなる。キャッシュメモリＣ１Ｂは、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ２（レベル３）にアドレスＸのリード要求を発行する。キャッシュメモリＣ２はキャッシュヒットとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧのキャッシュメモリＣ２の条件が“複製”に設定されているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリＣ０に複製する。キャッシュメモリＣ０は、キャッシュメモリＣ２から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ０は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ０は、ＬＲＵデータの値を“最新”に設定する。そして、キャッシュメモリＣ０は、アドレスＸのデータをプロセッサＰ０に返送する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ０の置換条件が“移動”に設定されているので、キャッシュメモリＣ０から溢れた“最古”のキャッシュラインをレベルが１つ下のキャッシュメモリＣ１Ｂに移動する。キャッシュメモリＣ１Ｂは、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ１Ｂは、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ１Ｂの置換条件が“メインメモリＭＭにライト”に設定されているので、キャッシュメモリＣ１Ｂから溢れたキャッシュラインが“ダーティ”であるのを確認して、メインメモリＭＭにキャッシュラインのデータを書き出す。“ダーティ”でない場合は、メインメモリＭＭに書き出さずに破棄する。また、アクセス制御部ＡＣＮＴは、階層設定部ＬＣＮＴに、キャッシュメモリＣ２がキャッシュヒットしたことを通知する。階層設定部ＬＣＮＴは、階層設定レジスタＬＲＥＧの設定を図８の階層レベルから図９の階層レベルに変更する。この動作により、例えば、あるアプリケーションは、キャッシュメモリＣ１Ｂ（またはキャッシュメモリＣ２）にあるデータを使い始めたら、連続してキャッシュメモリＣ１Ｂ（またはキャッシュメモリＣ２）にあるデータにアクセスする。この場合、このアプリケーションをプロセッサＰ０で動作させれば、階層設定部ＬＣＮＴは、下位階層でのキャッシュヒットに応じて、キャッシュメモリＣ１Ｂ、Ｃ２の階層レベルを変更するので、レイテンシを小さくできる。【００３７】
ステップＳ２２０では、プロセッサＰ３は、キャッシュメモリＣ１Ｂ（レベル１）にアドレスＹのリード要求を発行する。キャッシュメモリＣ１Ｂはキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ１Ｂより下位階層のキャッシュメモリが階層設定レジスタＬＲＥＧに設定されていないので、メインメモリＭＭにアドレスＹのリード要求を発行する。アクセス制御部ＡＣＮＴは、メインメモリＭＭから読み出したデータをキャッシュメモリＣ１Ｂに登録せずに、プロセッサＰ３に読み出したデータを返送する。このため、キャッシュメモリＣ１ＢにあるプロセッサＰ０で必要なデータは、プロセッサＰ３のアクセスによって追い出されない。この結果、プロセッサＰ０がキャッシュメモリＣ１Ｂに登録されているデータへ再度アクセスした場合、キャッシュメモリＣ１Ｂはキャッシュミスが減るため、レイテンシを小さくできる。また、キャッシュメモリＣ１Ｂに登録してあるデータをプロセッサＰ３が使用する場合、プロセッサＰ３は、キャッシュメモリＣ１Ｂにアクセスできるので、メインメモリＭＭにアクセスするより、レイテンシを小さくできる。【００３８】
以上、第２の実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。さらに、この実施形態では、階層設定部ＬＣＮＴは、下位階層でのキャッシュヒットに応じて、キャッシュメモリＣ１Ｂ、Ｃ２の階層レベルを変更するので、同一キャッシュメモリに連続してアクセスする場合に、レイテンシを小さくできる。
なお、上述した第１の実施形態では、図６のステップＳ１１０において、下位階層のキャッシュメモリＣ０でキャッシュヒットしたキャッシュラインを保持したまま、アクセス要求したプロセッサＰ１がデータをアクセスする例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、アクセス制御部ＡＣＮＴは、キャッシュメモリＣ１を経由しないで、プロセッサＰ１がキャッシュメモリＣ０にあるデータをアクセスするようにしてもよい。これにより、キャッシュメモリＣ１を経由する分のデータ遅延時間がなくなり、レイテンシを小さくできる。【００３９】
上述した第１の実施形態では、キャッシュヒットしたキャッシュラインの転送条件にＬＲＵデータの値を用いる例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、ＬＲＵデータの値を用いずに転送条件を決める方式にすることで、ハードウェアの構成を簡単にできる。この場合にも、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能なので、レイテンシを小さくできる。また、ＬＲＵデータの代わりに、プロセッサからキャッシュラインへアクセスされた記録であるアクセス情報として、別のアクセス情報を用いて転送条件を決める方式でもよい。例えば、キャッシュヒットしたキャッシュラインのアクセス回数を各キャッシュメモリＣ０−Ｃ３のタグＴＧ０−ＴＧ３に記録して、タグＴＧ０−ＴＧ３に記録したアクセス回数を転送条件に用いる。すなわち、アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧに設定された条件に加えて、タグＴＧ０−ＴＧ３に保持された情報に従って動作する。この場合にも、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能なので、レイテンシを小さくできる。【００４０】
上述した第１の実施形態では、上位階層のキャッシュメモリから溢れたキャッシュラインを制御する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、上位階層から溢れたキャッシュラインの制御を“移動”のみにして、置換設定レジスタＲＲＥＧを用いずに、キャッシュラインを他のキャッシュメモリに移動する方式にすることで、レジスタ数を削減できる。この場合にも、アクセス制御部ＡＣＮＴは、上位階層から溢れたキャッシュラインを他のキャッシュメモリに移動するので、メインメモリＭＭまでアクセスする機会を減らすことができ、レイテンシを小さくできる。【００４１】
以上、本発明について詳細に説明してきが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【産業上の利用可能性】
【００４２】
本発明は、キャッシュメモリを持つマルチプロセッサシステムに適用できる。
【図１】
2007099643.tif 000003
【図２】
2007099643.tif 000004
【図３】
2007099643.tif 000005
【図４】
2007099643.tif 000006
【図５】
2007099643.tif 000007
【図６】
2007099643.tif 000008
【図７】
2007099643.tif 000009
【図８】
2007099643.tif 000010
【図９】
2007099643.tif 000011
【図１０】
2007099643.tif 000012
【図１１】
2007099643.tif 000013
【図１２】
2007099643.tif 000014
【手続補正書】
【提出日】平成20年7月7日(2008.7.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
プロセッサ毎に異なる階層レベルを有し、前記プロセッサに共有された複数のキャッシュメモリと、
前記キャッシュメモリの階層レベルを保持する書き換え可能な階層設定レジスタと、
前記階層設定レジスタに設定された階層レベルに従って、各キャッシュメモリ間のアクセスを制御するアクセス制御部とを備えていることを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層設定レジスタに保持されたキャッシュメモリの階層レベルを書き換える設定部を備えていることを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件が設定される書き換え可能な転送設定レジスタを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
【請求項４】
請求項３記載のマルチプロセッサシステムにおいて、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録を保持するタグを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に加えて、前記タグに保持された情報に従って動作することを特徴とするマルチプロセッサシステム。
【請求項５】
請求項４記載のマルチプロセッサシステムにおいて、
前記タグは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるLRU（Least Recently Used）データを保持することを特徴とするマルチプロセッサシステム。
【請求項６】
請求項３記載のマルチプロセッサシステムにおいて、
前記アクセス制御部は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステム。
【請求項７】
請求項３記載のマルチプロセッサシステムにおいて、
前記プロセッサが共有するメインメモリと、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件が設定される書き換え可能な置換設定レジスタとを備え、
前記アクセス制御部は、前記置換設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
【請求項８】
請求項３記載のマルチプロセッサシステムにおいて、
前記転送設定レジスタに“保持”の条件が設定されているときに、
前記アクセス制御部は、前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステム。
【請求項９】
複数のプロセッサと、前記プロセッサに共有された複数のキャッシュメモリとを備えたマルチプロセッサシステムの動作方法であって、
前記キャッシュメモリを前記プロセッサ毎で異なる階層レベルに設定し、前記階層レベルは書き換え可能であり、
前記キャッシュメモリの階層レベルに従って各キャッシュメモリ間のアクセスを制御することを特徴とするマルチプロセッサシステムの動作方法。
【請求項１０】
請求項９記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層レベルを書き換えることを特徴とするマルチプロセッサシステムの動作方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム及びマルチプロセッサシステムの動作方法に関する。
【背景技術】
【０００２】
一般に、プロセッサシステムでは、プロセッサと主記憶装置であるメインメモリの動作速度のバランスをとるために、プロセッサとメインメモリの間に高速なキャッシュメモリを搭載する方式がとられている。また、高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが用いられている。マルチプロセッサシステムでは、例えば、複数のプロセッサがキャッシュメモリを介在してメインメモリのデータをアクセスするマルチプロセッサシステムに搭載されるキャッシュメモリは、プロセッサにそれぞれ対応して備えられる。このキャッシュメモリは、プロセッサ毎に固定のアクセス優先度をもって、全てのプロセッサからアクセスされる（例えば、特許文献１参照）。
【特許文献１】特開平６−２０２９４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
プロセッサにそれぞれ対応したキャッシュメモリを有する従来のマルチプロセッサシステムでは、各キャッシュメモリは全てのプロセッサからアクセスされるので、キャッシュメモリの利用効率は良い。しかし、各キャッシュメモリへのアクセス優先度（階層レベル）が固定されているため、プロセッサがキャッシュメモリにアクセスを要求してからデータを受け取るまでの遅延時間（レイテンシ）は、大きくなる場合がある。例えば、最適なレイテンシになるための階層レベルが、使用するアプリケーション毎に異なる場合でも、キャッシュメモリの階層レベルは、固定されている。このため、レイテンシは、アプリケーションによって大きくなる場合がある。また、複数のプロセッサによってアクセスされる共有データがキャッシュメモリのいずれかに存在するとき、他のキャッシュメモリにデータを移動した方が、レイテンシは小さくなる場合がある。この場合でも、キャッシュメモリ間でデータを転送できないので、レイテンシは小さくならない。
【０００４】
本発明の目的は、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることである。
【課題を解決するための手段】
【０００５】
本発明では、マルチプロセッサシステムは、プロセッサにそれぞれ対応したキャッシュメモリと各キャッシュメモリの階層レベルが設定される階層設定レジスタと各キャッシュメモリ間のアクセスを制御するアクセス制御部を有している。
【０００６】
各プロセッサは、他のプロセッサに対応したキャッシュメモリをそのプロセッサに対応しているキャッシュメモリより階層が深いキャッシュメモリとして扱う。この結果、各プロセッサは全てのキャッシュメモリにアクセスできるので、キャッシュメモリの利用効率を良くすることができる。プロセッサ毎のキャッシュメモリの階層レベルは、書き換え可能な階層設定レジスタに保持されているので、アプリケーション毎に最適なレイテンシになるように変更できる。
【０００７】
また、下位階層のキャッシュメモリがキャッシュヒットしたときのキャッシュラインを移動するか、複製するか、保持するかの条件（以後、転送条件とも称する）は、書き換え可能な転送設定レジスタに設定される。このため、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能になる。例えば、あるアプリケーションは、下位階層のキャッシュメモリに登録されているキャッシュラインを連続して使用する。この場合、キャッシュラインの転送条件を“移動”あるいは“複製”に設定することにより、レイテンシを小さくすることができる。別の例では、ある特定のプロセッサは、他のプロセッサより頻繁に、各プロセッサに共有されているデータをアクセスする。この場合、特定のプロセッサに対応するキャッシュメモリの転送条件を“保持”に設定することにより、レイテンシを小さくすることができる。
【０００８】
この結果、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
【発明の効果】
【０００９】
キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を図面を用いて説明する。
【００１１】
図１は、本発明の第１の実施形態を示している。マルチプロセッサシステムは、プロセッサＰ０、Ｐ１、Ｐ２、キャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３、アクセス制御部ＡＣＮＴ、階層設定レジスタＬＲＥＧ、転送設定レジスタＴＲＥＧ、置換設定レジスタＲＲＥＧ、およびメインメモリＭＭを有している。各キャッシュメモリＣ０−Ｃ３は、それぞれタグＴＧ０−ＴＧ３を有している。プロセッサＰ０、Ｐ１、Ｐ２は、それぞれキャッシュメモリＣ０、Ｃ１、Ｃ２に直接接続されている。キャッシュメモリＣ０、Ｃ１、Ｃ２は、アクセス制御部ＡＣＮＴに接続されている。アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧ、転送設定レジスタＴＲＥＧ、置換設定レジスタＲＲＥＧ、キャッシュメモリＣ３およびメインメモリＭＭに接続されている。メインメモリＭＭはキャッシュメモリＣ３に接続されている。各キャッシュメモリＣ０−Ｃ３のタグＴＧ０−ＴＧ３には、ＬＲＵ（Least Recently Used）データが記録されている。ここで、ＬＲＵデータは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータである。上述した各レジスタＬＲＥＧ、ＴＲＥＧ、ＲＲＥＧは、書き換え可能である。アプリケーション毎に適切な設定に書き換えることにより、アプリケーションに依存せずに、レイテンシを常に小さくすることが可能である。
【００１２】
図２は、プロセッサＰ０−Ｐ２から見た各キャッシュメモリＣ０−Ｃ３の階層レベルを示している。図２に示したキャッシュメモリＣ０−Ｃ３の階層レベルは、図１に示した階層設定レジスタＬＲＥＧに設定される。アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧに設定された階層レベルに従って、各キャッシュメモリＣ０−Ｃ３間のアクセスを制御する。プロセッサＰ０から見たキャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の階層レベルは、それぞれレベル１、レベル２、レベル２、レベル３である。プロセッサＰ１から見たキャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の階層レベルは、それぞれレベル２、レベル１、レベル２、レベル３である。プロセッサＰ２から見たキャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の階層レベルは、それぞれレベル２、レベル２、レベル１、レベル３である。プロセッサＰ０−Ｐ２は、全てのキャッシュメモリＣ０−Ｃ３にアクセスできるので、キャッシュメモリの利用効率を良くすることができる。また、プロセッサＰ０−Ｐ２は、レベル２、レベル３のキャッシュメモリを備える。これにより、メインメモリＭＭまでアクセスする機会を減らすことができ、レイテンシを小さくできる。
【００１３】
図３は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインの転送条件を示している。図３に示した転送条件は、図１に示した転送設定レジスタＴＲＥＧに設定される。アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧに設定された条件に従って、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを制御する。キャッシュメモリＣ０−Ｃ２は、ＬＲＵデータの値が最後に使用したデータ（最新データ）を示しているときは、キャッシュラインを移動せずに保持する。ＬＲＵデータの値が最新データ以外を示しているときは、キャッシュラインを移動する（複製はしない）。図３に示した転送条件により、他のプロセッサが連続して使用する場合にキャッシュラインを移動し、適切なキャッシュメモリにキャッシュラインが登録される。この結果、レイテンシを小さくできる。キャッシュメモリＣ３は、ＬＲＵデータの値に拘わらず、キャッシュラインを複製する。
【００１４】
図４は、キャッシュラインを登録したときに、上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、メインメモリＭＭへ書き出すか、破棄するかの条件（以後、置換条件とも称する）を示している。図４に示した置換条件は、図１に示した置換設定レジスタＲＲＥＧに設定される。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧに設定された条件に従って、上位階層のキャッシュメモリから溢れたキャッシュラインを制御する。キャッシュメモリＣ０、Ｃ１、Ｃ２、Ｃ３の置換条件は、それぞれ“破棄”、“移動”、“移動”、“破棄”である。このように、キャッシュメモリ毎にキャッシュラインの置換条件を設定できるので、アプリケーション毎に適切な設定に書き換えることにより、レイテンシを小さくすることが可能である。例えば、図４の置換条件では、あるプロセッサがキャッシュメモリＣ１、Ｃ２から溢れたキャッシュラインにアクセスする場合、そのキャッシュラインは他のキャッシュメモリに登録されているので、プロセッサはメインメモリＭＭにアクセスする必要がない。この結果、レイテンシを小さくできる。
【００１５】
図５は、ＬＲＵデータの更新手順を示している。図５に示したＬＲＵデータの更新手順は、図１に示した転送設定レジスタＴＲＥＧに設定される。以下では、一例として、下位階層のキャッシュメモリがキャッシュヒットした場合のＬＲＵデータの更新手順を説明する。キャッシュヒットしたキャッシュラインに対応するＬＲＵデータの値が“最新”の場合、キャッシュメモリＣ０、Ｃ１、Ｃ２は、ＬＲＵデータの値を“最新”から“２番目”に交換する（図５に示した“ＬＲＵ最新”の列）。この結果、最後から２番目に使用されたキャッシュラインに対応するＬＲＵデータの値は“最新”に設定され、最後に使用されたキャッシュラインに対応するＬＲＵデータの値は“２番目”に設定される。従来の更新手順では、最後から２番目に使用されたキャッシュラインに対応するＬＲＵデータの値を“２番目”に設定する。キャッシュヒットしたキャッシュラインに対応するＬＲＵデータの値が“最新”でない場合、レベル１のキャッシュメモリにキャッシュラインを移動した後、ＬＲＵデータの値を“最新”に設定する（図５に示した“ＬＲＵ最新以外”の列）。キャッシュメモリＣ３は、ＬＲＵデータの値に関わらず、ＬＲＵデータの値を“最新”に設定する。本実施形態では、図４に示した転送条件が機能するように、ＬＲＵデータを更新している。
【００１６】
また、キャッシュラインの置き換えが起こり、下位階層のキャッシュメモリに上位階層から溢れたキャッシュラインを登録する場合、キャッシュメモリＣ０−Ｃ２は、キャッシュラインが割り当てられるＬＲＵデータの値を“最古”に設定する（図５の“リプレース時”の列）。キャッシュメモリＣ３は、キャッシュラインが割り当てられるＬＲＵデータの値を変更しない（図５の“リプレース時”の列）。ここで、ＬＲＵデータの値の“最古”は、最初に使用されたキャッシュライン（未使用の時間がもっとも長いキャッシュライン）を意味する。
【００１７】
図６は、第１の実施形態のマルチプロセッサシステムの動作の一例を示している。アドレスＸ、Ｙは、図１のメインメモリＭＭ内のアドレスを示している。アドレスＸのデータはキャッシュメモリＣ０−Ｃ３に未登録で、アドレスＹのデータは既にキャッシュメモリＣ３に登録されている場合を例にして、図６に示す動作を説明する。
【００１８】
まず、ステップＳ１００では、プロセッサＰ０は、キャッシュメモリＣ０（レベル１）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュミスとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧに設定された階層に従って、キャッシュメモリＣ１（レベル２）とキャッシュメモリＣ２（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ１、Ｃ２はキャッシュミスとなる。キャッシュメモリＣ１、Ｃ２は、アクセス制御部ＡＣＮＴにキャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ３（レベル３）にアドレスＸのリード要求を発行する。キャッシュメモリＣ３はキャッシュミスとなる。キャッシュメモリＣ３は、アクセス制御部ＡＣＮＴにキャッシュミスを通知する。
【００１９】
アクセス制御部ＡＣＮＴは、階層設定レジスタＬＲＥＧにキャッシュメモリＣ３より下位階層のキャッシュメモリが設定されていないので、メインメモリＭＭにアドレスＸのリード要求を発行する。アクセス制御部ＡＣＮＴは、メインメモリＭＭからアドレスＸを含むキャッシュラインサイズ分のデータを読み出す。アクセス制御部ＡＣＮＴは、読み出したデータを含むキャッシュラインをキャッシュメモリＣ０、Ｃ３に転送する。キャッシュメモリＣ３は、プロセッサＰ０−Ｐ２で最下層の共有キャッシュメモリとして使用している。このため、メインメモリＭＭから読み出したキャッシュラインは、キャッシュメモリＣ３にも登録される。キャッシュメモリＣ０、Ｃ３は、アクセス制御部ＡＣＮＴから送られたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ０、Ｃ３は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ０は、プロセッサＰ０にアドレスＸのデータを返送する。
【００２０】
アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ３の置換設定レジスタＲＲＥＧの置換条件が“破棄”になっているので、キャッシュメモリＣ０、Ｃ３から溢れたキャッシュラインを破棄する。但し、キャッシュメモリＣ０から溢れたキャッシュラインが“ダーティ”の場合は、アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０から溢れたキャッシュラインをキャッシュメモリＣ３に移動する。ここで、“ダーティ”は、上位階層のキャッシュメモリにあるデータのみ更新して、下位階層のキャッシュメモリあるいはメインメモリＭＭにあるデータを更新していない状態である。キャッシュメモリＣ３は、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ３は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、キャッシュメモリＣ０から送られてきたキャッシュラインを登録する。キャッシュメモリＣ３は、登録したキャッシュラインを“ダーティ”に設定する。キャッシュメモリＣ３から溢れたキャッシュラインが“ダーティ”のときは、アクセス制御部ＡＣＮＴは、そのキャッシュラインをメインメモリＭＭに書き出す。
【００２１】
ステップＳ１１０では、プロセッサＰ１は、キャッシュメモリＣ１（レベル１）にアドレスＸのリード要求を発行する。キャッシュメモリＣ１はキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ２（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュヒットとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“最新”を示しているので、キャッシュヒットしたキャッシュラインを移動せずに保持する。アクセス制御部ＡＣＮＴは、アドレスＸのデータをキャッシュメモリＣ０からキャッシュメモリＣ１を経由して、プロセッサＰ１に返送する。キャッシュメモリＣ０は、キャッシュヒットしたキャッシュラインのＬＲＵデータの値を“２番目”に設定する。例えば、ステップＳ１２０の前に、プロセッサＰ０がアドレスＸのリード要求を再度発行した場合、キャッシュメモリＣ０（レベル１）にアドレスＸのデータが、まだ登録されているので、レイテンシを小さくできる。
【００２２】
ステップＳ１２０では、プロセッサＰ１は、キャッシュメモリＣ１（レベル１）にアドレスＸのリード要求を再度発行する。キャッシュメモリＣ１はキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ２（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュヒットとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“２番目”を示しているので、キャッシュヒットしたキャッシュラインをキャッシュメモリＣ１（レベル１）に移動する。キャッシュメモリＣ１は、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ１は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ１は、登録したキャッシュラインのＬＲＵデータの値を“最新”に設定する。さらに、キャッシュメモリＣ１は、プロセッサＰ１にアドレスＸのデータを返送する。
【００２３】
また、アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ１の置換条件が“移動”に設定されているので、キャッシュメモリＣ１から溢れたキャッシュラインをキャッシュメモリＣ０に移動する。キャッシュメモリＣ０は、キャッシュメモリＣ１から溢れたキャッシュラインを、キャッシュメモリＣ１に送ったキャッシュライン（キャッシュヒットしたキャッシュライン）があったところに登録する。キャッシュメモリＣ０は、登録したキャッシュラインのＬＲＵデータの値を“最古”に設定する。このように、下位階層のキャッシュメモリＣ０でキャッシュヒットしたキャッシュラインをキャッシュメモリＣ１に移動しているので、キャッシュメモリＣ０とキャッシュメモリＣ１に同じデータが存在しない。このため、キャッシュメモリの利用効率を良くできる。また、上位階層のキャッシュメモリＣ１から溢れたキャッシュラインをメインメモリＭＭに書き戻さずに、下位階層のキャッシュメモリＣ０に移動している。このため、あるプロセッサがこのキャッシュラインに対応したアドレスにアクセス要求を発行した場合、キャッシュメモリＣ０にキャッシュラインが、まだ登録されているので、レイテンシを小さくできる。
【００２４】
ステップＳ１３０では、プロセッサＰ２は、キャッシュメモリＣ２（レベル１）にアドレスＸのライト要求を発行する。キャッシュメモリＣ２はキャッシュミスとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ１（レベル２）にアドレスＸのライト要求を発行する。キャッシュメモリＣ１はキャッシュヒットとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“最新”を示しているので、キャッシュヒットしたキャッシュラインを移動せずに保持する。アクセス制御部ＡＣＮＴは、プロセッサＰ２から送られたデータをキャッシュメモリＣ１に送る。キャッシュメモリＣ１は、プロセッサＰ２からアクセス制御部ＡＣＮＴを経由して送られてきたデータをキャッシュヒットしたキャッシュラインに書き込み、ＬＲＵデータの値を“２番目”に設定する。キャッシュメモリＣ１は、更新したキャッシュラインを“ダーティ”に設定する。または、キャッシュメモリＣ１は、更新したキャッシュラインを“ダーティ”と設定せずに、下位階層のキャッシュメモリＣ３、あるいはメインメモリＭＭまで、ライトスルーしてもよい。ここで、ライトスルーとは、プロセッサが上位階層のキャッシュメモリにデータを書き込む場合、上位階層のキャッシュメモリと同時に下位階層のメモリにもデータを書き込む方式である。
【００２５】
ステップＳ１３０では、プロセッサＰ２は、キャッシュメモリＣ１に直接データを書き込んでいる。このため、ステップＳ１４０の前に、プロセッサＰ１がアドレスＸのアクセス要求を発行した場合、キャッシュメモリＣ１（レベル１）にアドレスＸのデータが、まだ登録されているので、レイテンシを小さくできる。
【００２６】
ステップＳ１４０では、プロセッサＰ２はキャッシュメモリＣ２（レベル１）にアドレスＸのライト要求を再度発行する。キャッシュメモリＣ２はキャッシュミスとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ１（レベル２）にアドレスＸのライト要求を発行する。キャッシュメモリＣ１はキャッシュヒットとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、キャッシュヒットしたキャッシュラインのＬＲＵデータの値と転送設定レジスタＴＲＥＧの転送条件を確認する。アクセス制御部ＡＣＮＴは、ＬＲＵデータの値が“２番目”を示しているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリＣ２に移動する。キャッシュメモリＣ２は、キャッシュメモリＣ１から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ２は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ２は、登録したキャッシュラインにプロセッサＰ２から送られたデータを書き込む。キャッシュメモリＣ２は、書き込んだキャッシュラインを“ダーティ”にし、ＬＲＵデータの値を“最新”に設定する。これにより、プロセッサＰ２が、アドレスＸのアクセス要求を再度発行した場合、キャッシュメモリＣ２（レベル１）にアドレスＸのデータが登録されているので、レイテンシを小さくできる。
【００２７】
アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ２の置換条件が“移動”に設定されているので、キャッシュメモリＣ２から溢れたキャッシュラインをキャッシュメモリＣ１に移動する。キャッシュメモリＣ１は、キャッシュメモリＣ２から溢れたキャッシュラインを、キャッシュメモリＣ２に送ったキャッシュラインがあったところに登録し、ＬＲＵデータの値を“最古”に変更する。この場合も、ステップＳ１２０と同様に、上位階層のキャッシュメモリＣ２から溢れたキャッシュラインをメインメモリＭＭに書き戻さずに、下位階層のキャッシュメモリＣ１に移動している。このため、あるプロセッサがこのキャッシュラインに対応したアドレスにアクセス要求を発行した場合、キャッシュメモリＣ１にキャッシュラインが、まだ登録されているので、レイテンシを小さくできる。
【００２８】
ステップＳ１５０では、プロセッサＰ１は、キャッシュメモリＣ１（レベル１）にアドレスＹのリード要求を発行する。キャッシュメモリＣ１はキャッシュミスとなる。キャッシュメモリＣ１は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ０、Ｃ２（レベル２）にアドレスＹのリード要求を発行する。キャッシュメモリＣ０、Ｃ２はキャッシュミスとなる。キャッシュメモリＣ０、Ｃ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ３（レベル３）にアドレスＹのリード要求を発行する。キャッシュメモリＣ３はキャッシュヒットとなる。キャッシュメモリＣ３は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧのキャッシュメモリＣ３の転送条件が“複製”に設定されているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリＣ１に複製する。キャッシュメモリＣ１は、キャッシュメモリＣ３から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ１は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ１は、ＬＲＵデータの値を“最新”に設定する。さらに、キャッシュメモリＣ１は、プロセッサＰ１にアドレスＹのデータを返送する。また、アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ１の置換条件が“移動”に設定されているので、キャッシュメモリＣ１から溢れたキャッシュラインをレベルが１つ下のキャッシュメモリＣ０に移動する。図２に示したように、レベルが１つ下のキャッシュメモリが複数ある場合、キャッシュラインの移動先になるキャッシュメモリは、ある判定基準を元に選択される。ステップＳ１５０では、キャッシュラインの移動先になるキャッシュメモリは、キャッシュメモリＣ０とキャッシュメモリＣ２からランダムに選択されている。その結果、キャッシュメモリＣ０が選択されている。
【００２９】
キャッシュメモリＣ０は、キャッシュメモリＣ１から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ０は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ０は、ＬＲＵデータの値を“最古”に設定する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ０の置換条件が“破棄”に設定されているので、キャッシュメモリＣ０から溢れたキャッシュラインを破棄する。置換条件を“破棄”に設定すると、下位階層キャッシュメモリへのキャッシュラインの移動が発生しないので、バス占有率を軽減できる。但し、破棄対象のキャッシュラインが“ダーティ”のときは、アクセス制御部ＡＣＮＴは、破棄対象のキャッシュラインをキャッシュメモリＣ３に移動する。キャッシュメモリＣ３は、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ３は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ３は、登録したキャッシュラインを“ダーティ”に設定する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ３の置換条件が“破棄”に設定されているので、キャッシュメモリＣ３から溢れたキャッシュラインを破棄する。このとき、破棄対象のキャッシュラインが“ダーティ”のときは、アクセス制御部ＡＣＮＴは、破棄対象のキャッシュラインをメインメモリＭＭに書き出す。
【００３０】
以上、第１の実施形態では、階層設定レジスタＬＲＥＧに設定された階層レベルに従って、プロセッサＰ０−Ｐ２は全てのキャッシュメモリＣ０−Ｃ３にアクセスできるので、キャッシュメモリの利用効率を良くすることができる。さらに、レジスタＬＲＥＧ、ＴＲＥＧ、ＲＲＥＧに設定する条件をアプリケーション毎に適切な条件に設定できるので、アプリケーションに依存せずに、レイテンシを常に小さくすることが可能である。この結果、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
【００３１】
図７は、本発明の第２の実施形態を示している。第１の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムでは、第１の実施形態のキャッシュメモリＣ３が省かれ、プロセッサＰ３と階層設定部ＬＣＮＴが追加されている。また、キャッシュメモリＣ１は、プロセッサＰ１のアプリケーションの特性からキャッシュメモリ容量が小さくてもよいとの前提で、キャッシュメモリＣ１ＡとキャッシュメモリＣ１Ｂとに分けて使用されている。キャッシュメモリＣ１Ｂは、他のプロセッサに解放されている。
【００３２】
プロセッサＰ３は、アクセス制御部ＡＣＮＴに直接接続されている。階層設定部ＬＣＮＴは、アクセス制御部ＡＣＮＴと階層設定レジスタＬＲＥＧに接続されている。階層設定部ＬＣＮＴは、階層設定レジスタＬＲＥＧに階層レベルを設定する。この実施形態では、階層設定部ＬＣＮＴは、プロセッサＰ０のアクセス要求に対して、キャッシュメモリＣ２でキャッシュヒットした場合に図９の階層レベルを階層設定レジスタＬＲＥＧに設定し、キャッシュメモリＣ１Ｂでキャッシュヒットした場合に図８の階層レベルを階層設定レジスタＬＲＥＧに設定する。
【００３３】
図８は、プロセッサＰ０−Ｐ３から見た各キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルの一例を示している。この例では、プロセッサＰ０から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれレベル１、未使用、レベル２、レベル３である。プロセッサＰ１から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、レベル１、未使用、未使用である。プロセッサＰ２から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、未使用、レベル１である。プロセッサＰ３から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、未使用、レベル１である。未使用のキャッシュメモリは、階層設定レジスタＬＲＥＧに、未使用のフラグが設定される。
【００３４】
図９は、プロセッサＰ０−Ｐ３から見た各キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルの別の例を示している。この例では、プロセッサＰ０から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれレベル１、未使用、レベル３、レベル２である。プロセッサＰ１から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、レベル１、未使用、未使用である。プロセッサＰ２から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、未使用、レベル１である。プロセッサＰ３から見たキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、それぞれ未使用、未使用、レベル１、未使用である。但し、プロセッサＰ３は、キャッシュメモリＣ１Ｂがキャッシュミスした場合、キャッシュメモリＣ１Ｂにキャッシュラインの登録をしないで、メインメモリＭＭにアクセスする。つまり、プロセッサＰ３は、キャッシュメモリＣ１Ｂがキャッシュヒットした場合のみ、キャッシュメモリＣ１Ｂを利用する。
【００３５】
図１０は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインの転送条件を示している。図１０に示した転送条件は、図７に示した転送設定レジスタＴＲＥＧに設定される。キャッシュメモリＣ０、Ｃ１Ａは、下位階層にならないので転送条件は設定されない。キャッシュメモリＣ１Ｂは、キャッシュヒットしたキャッシュラインを移動する。キャッシュメモリＣ２はキャッシュヒットしたキャッシュラインを複製する。
【００３６】
図１１は、キャッシュラインを登録したときに、上位階層のキャッシュメモリから溢れたキャッシュラインの置換条件を示している。図１１に示した条件は、図７に示した置換設定レジスタＲＲＥＧに設定される。キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の置換条件は、それぞれ“移動”、“破棄”、“メインメモリＭＭにライト”、“破棄”である。ここで、“メインメモリＭＭにライト”は、メインメモリＭＭへデータを書き戻すことである。
【００３７】
図１２は、第２の実施形態のマルチプロッセッサシステムの動作の一例を示している。この例では、アドレスＸのデータとアドレスＹのデータは、キャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２に未登録である。また、ステップＳ２００の前のキャッシュメモリＣ０、Ｃ１Ａ、Ｃ１Ｂ、Ｃ２の階層レベルは、図８に示した階層レベルが、図７に示した階層設定レジスタＬＲＥＧに設定されている。新しいデータを格納する場所を確保するために既存のデータを追い出す方法として、図７には図示されていないが、従来のキャッシュメモリシステムで利用されているＬＲＵデータの値を使用している。このような場合を例にして、動作を説明する。
【００３８】
まず、ステップＳ２００では、プロセッサＰ２は、キャッシュメモリＣ２（レベル１）にアドレスＸのライト要求を発行する。キャッシュメモリＣ２はキャッシュミスとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ２より下位階層のキャッシュメモリが階層設定レジスタＬＲＥＧに設定されていないので、メインメモリＭＭにアドレスＸを含むキャッシュラインのリード要求を発行する。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴを経由して、メインメモリＭＭから読み出したキャッシュラインを登録する。キャッシュメモリＣ２は、プロセッサＰ２から送られたデータを登録したキャッシュラインに書き込む。そして、キャッシュメモリＣ２は、書き込んだキャッシュラインを“ダーティ”に設定する。
【００３９】
ステップＳ２１０では、プロセッサＰ０は、キャッシュメモリＣ０（レベル１）にアドレスＸのリード要求を発行する。キャッシュメモリＣ０はキャッシュミスとなる。キャッシュメモリＣ０は、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ１Ｂ（レベル２）にアドレスＸのリード要求を発行する。キャッシュメモリＣ１Ｂはキャッシュミスとなる。キャッシュメモリＣ１Ｂは、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ２（レベル３）にアドレスＸのリード要求を発行する。キャッシュメモリＣ２はキャッシュヒットとなる。キャッシュメモリＣ２は、アクセス制御部ＡＣＮＴに、キャッシュヒットを通知する。アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧのキャッシュメモリＣ２の条件が“複製”に設定されているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリＣ０に複製する。キャッシュメモリＣ０は、キャッシュメモリＣ２から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ０は、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリＣ０は、ＬＲＵデータの値を“最新”に設定する。そして、キャッシュメモリＣ０は、アドレスＸのデータをプロセッサＰ０に返送する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ０の置換条件が“移動”に設定されているので、キャッシュメモリＣ０から溢れた“最古”のキャッシュラインをレベルが１つ下のキャッシュメモリＣ１Ｂに移動する。キャッシュメモリＣ１Ｂは、キャッシュメモリＣ０から送られてきたキャッシュラインが割り当てられるＬＲＵデータの値を確認する。キャッシュメモリＣ１Ｂは、ＬＲＵデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。アクセス制御部ＡＣＮＴは、置換設定レジスタＲＲＥＧのキャッシュメモリＣ１Ｂの置換条件が“メインメモリＭＭにライト”に設定されているので、キャッシュメモリＣ１Ｂから溢れたキャッシュラインが“ダーティ”であるのを確認して、メインメモリＭＭにキャッシュラインのデータを書き出す。“ダーティ”でない場合は、メインメモリＭＭに書き出さずに破棄する。また、アクセス制御部ＡＣＮＴは、階層設定部ＬＣＮＴに、キャッシュメモリＣ２がキャッシュヒットしたことを通知する。階層設定部ＬＣＮＴは、階層設定レジスタＬＲＥＧの設定を図８の階層レベルから図９の階層レベルに変更する。この動作により、例えば、あるアプリケーションは、キャッシュメモリＣ１Ｂ（またはキャッシュメモリＣ２）にあるデータを使い始めたら、連続してキャッシュメモリＣ１Ｂ（またはキャッシュメモリＣ２）にあるデータにアクセスする。この場合、このアプリケーションをプロセッサＰ０で動作させれば、階層設定部ＬＣＮＴは、下位階層でのキャッシュヒットに応じて、キャッシュメモリＣ１Ｂ、Ｃ２の階層レベルを変更するので、レイテンシを小さくできる。
【００４０】
ステップＳ２２０では、プロセッサＰ３は、キャッシュメモリＣ１Ｂ（レベル１）にアドレスＹのリード要求を発行する。キャッシュメモリＣ１Ｂはキャッシュミスとなる。キャッシュメモリＣ１Ｂは、アクセス制御部ＡＣＮＴに、キャッシュミスを通知する。アクセス制御部ＡＣＮＴは、キャッシュメモリＣ１Ｂより下位階層のキャッシュメモリが階層設定レジスタＬＲＥＧに設定されていないので、メインメモリＭＭにアドレスＹのリード要求を発行する。アクセス制御部ＡＣＮＴは、メインメモリＭＭから読み出したデータをキャッシュメモリＣ１Ｂに登録せずに、プロセッサＰ３に読み出したデータを返送する。このため、キャッシュメモリＣ１ＢにあるプロセッサＰ０で必要なデータは、プロセッサＰ３のアクセスによって追い出されない。この結果、プロセッサＰ０がキャッシュメモリＣ１Ｂに登録されているデータへ再度アクセスした場合、キャッシュメモリＣ１Ｂはキャッシュミスが減るため、レイテンシを小さくできる。また、キャッシュメモリＣ１Ｂに登録してあるデータをプロセッサＰ３が使用する場合、プロセッサＰ３は、キャッシュメモリＣ１Ｂにアクセスできるので、メインメモリＭＭにアクセスするより、レイテンシを小さくできる。
【００４１】
以上、第２の実施形態においても、上述した第１の実施形態と同様の効果を得ることができる。さらに、この実施形態では、階層設定部ＬＣＮＴは、下位階層でのキャッシュヒットに応じて、キャッシュメモリＣ１Ｂ、Ｃ２の階層レベルを変更するので、同一キャッシュメモリに連続してアクセスする場合に、レイテンシを小さくできる。
【００４２】
なお、上述した第１の実施形態では、図６のステップＳ１１０において、下位階層のキャッシュメモリＣ０でキャッシュヒットしたキャッシュラインを保持したまま、アクセス要求したプロセッサＰ１がデータをアクセスする例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、アクセス制御部ＡＣＮＴは、キャッシュメモリＣ１を経由しないで、プロセッサＰ１がキャッシュメモリＣ０にあるデータをアクセスするようにしてもよい。これにより、キャッシュメモリＣ１を経由する分のデータ遅延時間がなくなり、レイテンシを小さくできる。
【００４３】
上述した第１の実施形態では、キャッシュヒットしたキャッシュラインの転送条件にＬＲＵデータの値を用いる例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、ＬＲＵデータの値を用いずに転送条件を決める方式にすることで、ハードウェアの構成を簡単にできる。この場合にも、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能なので、レイテンシを小さくできる。また、ＬＲＵデータの代わりに、プロセッサからキャッシュラインへアクセスされた記録であるアクセス情報として、別のアクセス情報を用いて転送条件を決める方式でもよい。例えば、キャッシュヒットしたキャッシュラインのアクセス回数を各キャッシュメモリＣ０−Ｃ３のタグＴＧ０−ＴＧ３に記録して、タグＴＧ０−ＴＧ３に記録したアクセス回数を転送条件に用いる。すなわち、アクセス制御部ＡＣＮＴは、転送設定レジスタＴＲＥＧに設定された条件に加えて、タグＴＧ０−ＴＧ３に保持された情報に従って動作する。この場合にも、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能なので、レイテンシを小さくできる。
【００４４】
上述した第１の実施形態では、上位階層のキャッシュメモリから溢れたキャッシュラインを制御する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、上位階層から溢れたキャッシュラインの制御を“移動”のみにして、置換設定レジスタＲＲＥＧを用いずに、キャッシュラインを他のキャッシュメモリに移動する方式にすることで、レジスタ数を削減できる。この場合にも、アクセス制御部ＡＣＮＴは、上位階層から溢れたキャッシュラインを他のキャッシュメモリに移動するので、メインメモリＭＭまでアクセスする機会を減らすことができ、レイテンシを小さくできる。
【００４５】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
複数のプロセッサと、
プロセッサ毎に異なる階層レベルを有し、前記プロセッサに共有された複数のキャッシュメモリと、
前記キャッシュメモリの階層レベルを保持する書き換え可能な階層設定レジスタと、
前記階層設定レジスタに設定された階層レベルに従って、各キャッシュメモリ間のアクセスを制御するアクセス制御部とを備えていることを特徴とするマルチプロセッサシステム。
（付記２）
付記１記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層設定レジスタに保持されたキャッシュメモリの階層レベルを書き換える設定部を備えていることを特徴とするマルチプロセッサシステム。
（付記３）
付記１記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件が設定される書き換え可能な転送設定レジスタを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
（付記４）
付記３記載のマルチプロセッサシステムにおいて、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録を保持するタグを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に加えて、前記タグに保持された情報に従って動作することを特徴とするマルチプロセッサシステム。
（付記５）
付記４記載のマルチプロセッサシステムにおいて、
前記タグは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるLRU（Least Recently Used）データを保持することを特徴とするマルチプロセッサシステム。
（付記６）
付記３記載のマルチプロセッサシステムにおいて、
前記アクセス制御部は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステム。
（付記７）
付記３記載のマルチプロセッサシステムにおいて、
前記プロセッサが共有するメインメモリと、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件が設定される書き換え可能な置換設定レジスタとを備え、
前記アクセス制御部は、前記置換設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
（付記８）
付記３記載のマルチプロセッサシステムにおいて、
前記転送設定レジスタに“保持”の条件が設定されているときに、
前記アクセス制御部は、前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステム。
（付記９）
複数のプロセッサと、前記プロセッサに共有された複数のキャッシュメモリとを備えたマルチプロセッサシステムの動作方法であって、
前記キャッシュメモリを前記プロセッサ毎で異なる階層レベルに設定し、前記階層レベルは書き換え可能であり、
前記キャッシュメモリの階層レベルに従って各キャッシュメモリ間のアクセスを制御することを特徴とするマルチプロセッサシステムの動作方法。
（付記１０）
付記９記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層レベルを書き換えることを特徴とするマルチプロセッサシステムの動作方法。
（付記１１）
付記９記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件である転送条件を設定し、前記転送条件は書き換え可能であり、
前記転送条件に従ってキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
（付記１２）
付記１１記載のマルチプロセッサシステムの動作方法において、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録であるアクセス情報を保持し、
前記転送条件に加えて、前記アクセス情報に従ってキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
（付記１３）
付記１２記載のマルチプロセッサシステムの動作方法において、
前記アクセス情報として、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるＬＲＵ（Least Recently Used）データを用いることを特徴とするマルチプロセッサシステムの動作方法。
（付記１４）
付記１１記載のマルチプロセッサシステムの動作方法において、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステムの動作方法。
（付記１５）
付記１１記載のマルチプロセッサシステムの動作方法において、
前記プロセッサは、メインメモリを共有し、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件である置換条件を設定し、前記置換条件は書き換え可能であり、
前記置換条件に従って、上位階層のキャッシュメモリから溢れたキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
（付記１６）
付記１１記載のマルチプロセッサシステムの動作方法において、
前記転送条件が“保持”の条件のときに、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステムの動作方法。
【００４６】
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【産業上の利用可能性】
【００４７】
本発明は、キャッシュメモリを持つマルチプロセッサシステムに適用できる。
【図面の簡単な説明】
【００４８】
【図１】本発明の第１の実施形態を示すブロック図である。
【図２】図１に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルを示す説明図である。
【図３】図１に示した転送設定レジスタに設定される下位階層でキャッシュヒットしたキャッシュラインの転送条件を示す説明図である。
【図４】図１に示した置換設定レジスタに設定されるキャッシュライン登録時のキャッシュラインの置換条件を示す説明図である。
【図５】図１に示した転送設定レジスタに設定されるＬＲＵデータの更新手順を示す説明図である。
【図６】第１の実施形態のマルチプロセッサシステムの動作の一例を示すフローチャートである。
【図７】本発明の第２の実施形態を示すブロック図である。
【図８】図７に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルの一例を示す説明図である。
【図９】図７に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルの別の例を示す説明図である。
【図１０】図７に示した転送設定レジスタに設定される下位階層でキャッシュヒットしたキャッシュラインの転送条件を示す説明図である。
【図１１】図７に示した置換設定レジスタに設定されるキャッシュライン登録時のキャッシュラインの置換条件を示す説明図である。
【図１２】第２の実施形態のマルチプロセッサシステムの動作の一例を示すフローチャートである。
【国際調査報告】
2007099643.tif 000015
2007099643.tif 000016