(57)【特許請求の範囲】
【請求項１】
各々が少なくとも一つのキャッシュメモリと書込みバッファとを有する複数のプロセッサと、
少なくとも一つのデータブロックを有し、少なくとも二つのプロセッサにより共有されるメモリユニットと、
前記少なくとも一つのデータブロックを共有するプロセッサを示す情報を保持するためのディレクトリメモリと、
前記複数のプロセッサと前記ディレクトリメモリとの間に連結された制御ユニットとを含み、
前記ディレクトリメモリ内の情報が、前記複数のプロセッサのうちの第１プロセッサが前記少なくとも一つのデータブロックを共有していることを示していて、かつ、
前記制御ユニットが、前記複数のプロセッサのうちの第２プロセッサから前記メモリユニットの前記少なくとも一つのデータブロックに対する書き込み要求からなるアクセス要求を受信した場合において、
前記制御ユニットは、前記第１プロセッサに対してインタラプト信号を伝送し、
前記少なくとも一つのデータブロックが、前記第１プロセッサのキャッシュメモリ内に保持され、前記第１プロセッサは、前記インタラプト信号を受信した後、前記各々のキャッシュメモリに保持された前記少なくとも一つのデータブロックを無効化し、
前記第１プロセッサの前記書き込みバッファが空いている場合に、前記第１プロセッサは、前記制御ユニットに対してインタラプト処理完了応答を伝送し、
前記少なくとも一つのデータブロックが前記第１プロセッサの前記書き込みバッファ内に存在する場合に、前記第１プロセッサは、前記書き込みバッファ内の前記少なくとも一つのデータブロックを前記メモリユニットに格納し、インタラプト処理完了応答を前記制御ユニットに伝送する、
ことを特徴とするマルチプロセッサシステム。
【請求項２】
前記キャッシュメモリの各々はレベル１キャッシュメモリであり、前記メモリユニットはレベル２キャッシュメモリであることを特徴とする請求項１に記載のマルチプロセッサステム。
【請求項３】
前記ディレクトリメモリは、前記レベル２キャッシュメモリの前記各データブロックに対する有効情報を含むことを特徴とする請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記キャッシュメモリのデータ書き込みは、ライトスルー方式で動作することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項５】
各々が少なくとも一つのキャッシュメモリと書込みバッファとを内蔵した複数のプロセッサがバスを通じてメモリユニットを共有するマルチプロセッサシステムのキャッシュ一貫性維持方法において、
前記複数のプロセッサのうちの第２プロセッサから前記メモリユニットのデータブロックに対するアクセスを要求する段階と、
前記データブロックが前記複数のプロセッサのうち第１プロセッサにより共有されている場合に、インタラプトを前記複数のプロセッサのうち前記第１プロセッサに伝送する段階と、
前記複数のプロセッサのうち第１プロセッサのキャッシュメモリに保持された前記データブロックを無効化する段階と、
前記データブロックが前記第１プロセッサの前記書き込みバッファ内に存在する場合に、前記書き込みバッファ内の前記データブロックを前記メモリユニットに書き込んだ後に、前記第２プロセッサのアクセス要求に応答する段階と、
前記第１プロセッサの前記書き込みバッファが空いている場合に、前記第２プロセッサのアクセス要求に応答する段階と、
を含むことを特徴とするマルチプロセッサシステムのキャッシュ一貫性維持方法。
【請求項６】
前記メモリユニットの任意のデータブロックに対するアクセス要求は、書き込み要求であることを特徴とする請求項５に記載のマルチプロセッサシステムのキャッシュ一貫性維持方法。
【請求項７】
前記アクセス要求がされたデータブロックが前記第１プロセッサを含む他のプロセッサにより共有されている場合に、前記アクセス要求をした第２プロセッサに対して、リトライを要求する段階をさらに含むことを特徴とする請求項５に記載のマルチプロセッサシステムのキャッシュ一貫性維持方法。
【請求項８】
前記バスは分離型トランザクションプロトコルに従い、
前記複数のプロセッサのうち前記第２プロセッサに待機応答信号を伝送する段階をさらに含むことを特徴とする請求項５に記載のマルチプロセッサシステムのキャッシュ一貫性維持方法。
【請求項９】
前記キャッシュメモリの各々はレベル１キャッシュメモリであり、前記メモリユニットはレベル２キャッシュメモリであることを特徴とする請求項５に記載のマルチプロセッサシステムのキャッシュ一貫性維持方法。
【請求項１０】
前記レベル１キャッシュメモリの無効化されたデータブロックに対応する前記レベル２キャッシュメモリの対応するデータブロックを無効化する段階をさらに含むことを特徴とする請求項９に記載のマルチプロセッサシステムのキャッシュ一貫性維持方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各々が少なくとも一つのキャッシュメモリを有する複数のプロセッサと、少なくとも二つのプロセッサによって共有されたメモリユニットとを含むマルチプロセッサシステムに関するものであり、プロセッサからのメモリへのアクセス要求に応答してキャッシュ一貫性(ｃａｃｈｅ−ｃｏｈｅｒｅｎｃｅ)を維持することができるマルチプロセッサシステムに関するものである。
【背景技術】
【０００２】
一つ以上のプロセッサを含み、プロセッサが同一のメモリを部分的に共有するシステムをマルチプロセッサシステムと呼ぶ。一つ以上のプロセッサを有するシステムにおいて、二つの基本原理が適用される。プロセッサは、同一のアドレス空間を共有するか、完全に異なるアドレス空間を有する。プロセッサが同一のアドレス空間を共有するということは、一つのプロセッサによってメモリから読み出されたデータが他のプロセッサによっても読み出されることができるものであり、このような方式を一般的に共有メモリ(ｓｈａｒｅｄ−ｍｅｍｏｒｏｙ)と呼ぶ。ソフトウェアは、いくつのプログラムモジュールで構成される。ソフトウェアが実行される時、プログラムモジュールは、共有されたメモリを通じて情報を交換する。したがって、互いに異なるプロセッサ上でプログラムモジュールが並列に実行される時、共有されたメモリは正確な実行が求められる。
【０００３】
最近は、平均メモリアクセス時間を減少させるために、プロセッサとメモリとの間に一つまたは複数個のキャッシュメモリを階層的(ｈｉｅｒａｒｃｈｙ)に配列する。すべてのプロセッサがローカルキャッシュメモリを含むマルチプロセッサでは、キャッシュ一貫性の問題が発生する。プロセッサのうちのいずれか一つが、共有されたメモリの任意のデータブロック(またはキャッシュライン)に対する書き込み要求(ｗｒｉｔｅ  ｒｅｑｕｅｓｔ)をする際に、書き込み要求されたデータブロックが他のプロセッサ内のキャッシュメモリによって共有されていると、書き込み動作がなされる前にキャッシュ一貫性が考慮されなければならない。キャッシュ一貫性を維持するための多くの方法が提案されている。一般的に使用される方式として、書き込み−無効プロトコル(ｗｒｉｔｅ−ｉｎｖａｌｉｄａｔｅ  ｐｒｏｔｏｃｏｌ)、スヌーピング方式(ｓｎｏｏｐｉｎｇ  ｓｃｈｅｍｅ)及びディレクトリ方式(ｄｉｒｅｃｔｏｒｙ  ｓｃｈｅｍｅ)などがある。しかし、このような方法を実現するために必要な複雑なロジックは電力消耗を増加させるだけでなく、プロセッサコアの設計に多くの変化を引き起こして設計時間を大きく増加させる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、プロセッサコアの修正を最小限に抑えながら、キャッシュ一貫性を維持することができるマルチプロセッサシステムを提供することにある。
【課題を解決するための手段】
【０００５】
上述のような目的を達成するために本発明の一つの特徴に係るマルチプロセッサシステムは、バスと、前記バスと連結され、各々が少なくとも一つのキャッシュメモリと書込みバッファとを内蔵した複数のプロセッサと、少なくとも二つのプロセッサによって共有されるメモリユニットと、前記メモリユニットの各データブロックについての前記キャッシュメモリの共有情報を保持するためのディレクトリメモリと、前記バスと前記ディレクトリメモリとの間に連結された制御ユニットとを含み、前記制御ユニットは、前記プロセッサのうちの一つから前記メモリユニットの任意のデータブロックに対する書き込み要求からなるアクセス要求を受信すると、前記ディレクトリメモリを参照して前記アクセス要求がされたデータブロックが他のプロセッサによって共有されている場合に、共有しているプロセッサにインタラプトを伝送し、
前記少なくとも一つのデータブロックが、前記第１プロセッサのキャッシュメモリ内に保持され、前記第１プロセッサは、前記インタラプト信号を受信した後、前記各々のキャッシュメモリに保持された前記少なくとも一つのデータブロックを無効化し、
前記第１プロセッサの前記書き込みバッファが空いている場合に、前記第１プロセッサは、前記制御ユニットに対してインタラプト処理完了応答を伝送し、
前記少なくとも一つのデータブロックが前記第１プロセッサの前記書き込みバッファ内に存在する場合に、前記第１プロセッサは、前記書き込みバッファ内の前記少なくとも一つのデータブロックを前記メモリユニットに格納し、インタラプト処理完了応答を前記制御ユニットに伝送する。
【００１１】
望ましい実施の形態において、例えば、前記キャッシュメモリはレベル１キャッシュメモリであり、前記メモリユニットはレベル２キャッシュメモリであり、前記ディレクトリメモリは前記レベル２キャッシュメモリの各データブロックに対する有効情報をさらに含む。
【００１２】
望ましい実施の形態において、前記キャッシュメモリのデータ書き込みは、例えば、ライトスルー(ｗｒｉｔｅ−ｔｈｒｏｕｇｈ)方式で書き込まれる。
【００１３】
本発明の他の特徴に係る、各々が少なくとも一つのキャッシュメモリと書込みバッファとを内蔵した複数のプロセッサがバスを通じてメモリユニットを共有するマルチプロセッサシステムのキャッシュ一貫性維持方法は、前記プロセッサのうちの一つから前記メモリユニットの任意のデータブロックに対するアクセスを要求する段階と、前記アクセス要求されたデータブロックが他のプロセッサによって共有されている場合に、共有しているプロセッサに対してインタラプトを伝送する段階と、前記インタラプトを受信したプロセッサに内蔵されたキャッシュメモリに保持された前記アクセス要求されたデータブロックを無効化する段階と、
前記データブロックが前記第１プロセッサの前記書き込みバッファ内に存在する場合に、前記書き込みバッファ内の前記データブロックを前記メモリユニットに書き込んだ後に、前記第２プロセッサのアクセス要求に応答する段階と、
前記第１プロセッサの前記書き込みバッファが空いている場合に、前記第２プロセッサのアクセス要求に応答する段階と、を含む。
【００１４】
望ましい実施の形態において、前記メモリユニットの任意のデータブロックに対するアクセス要求は、例えば、書き込み要求である。前記アクセス要求されたデータブロックが他のプロセッサによって共有されている場合に、前記アクセス要求をしたプロセッサにリトライを要求する段階がさらに含まれる。
【００１５】
この実施の形態において、前記バスが分離型トランザクションプロトコル(ｓｐｌｉｔ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｔｏｃｏｌ)に従う場合において、前記アクセス要求されたデータブロックが他のプロセッサによって共有されている場合に、前記アクセス要求をしたプロセッサに応答待機を要請する段階がさらに含まれうる。
【００１８】
望ましい実施の形態において、例えば、前記キャッシュメモリはレベル１キャッシュメモリであり、前記メモリユニットはレベル２キャッシュメモリであり、前記レベル１キャッシュメモリの無效化されたデータブロックに対応する前記レベル２キャッシュメモリの対応するデータブロックを無効化する段階がさらに実行されてもよい。
【発明の効果】
【００１９】
本発明によると、マルチプロセッサ動作環境を提供しないプロセッサの設計変更を最小化しつつ、キャッシュ一貫性を維持することを可能にする。また、キャッシュ一貫性維持のための複雑なロジックを使用しないことによって、システムの電力消耗を減らすことができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の望ましい実施の形態を添付の図面を参照して詳細に説明する。
【００２１】
図１は、本発明の望ましい実施の形態によるマルチプロセッサシステムを示している。マルチプロセッサシステム１００は、複数のプロセッサコアＰＡ〜ＰＣ、バス１１０、メモリコントローラ１２０、ディレクトリメモリ１３０、及びメモリ１４０を含む。複数のプロセッサコアＰＡ〜ＰＣは、バス１１０と各々連結される。各プロセッサコアは、レベル１(“Ｌ”)キャッシュメモリ、レベル２(“Ｌ２”)キャッシュメモリ、及び書き込みバッファとともに同一の集積回路チップ上に構成される。書き込みバッファは、Ｌ２キャッシュからメモリ１４０に書き込まれるデータが一時的に保持される場所である。メモリ１４０は、メモリコントローラ１２０を通じてバス１１０と連結され、プロセッサコアＰＡ〜ＰＣによって共有される。メモリコントローラ１２０は、メモリ１４０を管理し、プロセッサトランザクションをハンドリングする。ディレクトリメモリ１３０は、メモリ１４０のデータブロックがどのプロセッサコアＰＡによって共有されたかに関する情報を保持する。
【００２２】
メモリとキャッシュメモリとにおいて、データは、同一の大きさのデータブロック(キャッシュライン)に分離されて保持される。キャッシュに保持されている一つのブロックに対するアクセスは、プロセッサコアからそのブロックに対するアクセス要求とともに、そのブロックの物理的アドレスが伝達されることによって示され、キャッシュは、保持されている各データブロックについて、そのブロックの現在状態、例えば、有効(ｖａｌｉｄ)または無效(ｉｎｖａｉｌｄ)を示すデータブロック状態情報を維持する。
【００２３】
図２は、ディレクトリメモリ１３０の配列を概念的に示している。
【００２４】
図２を参照すると、ディレクトリメモリ１３０の行Ｌ０〜Ｌｎは、メモリ１４０のブロックＢＬ０〜ＢＬｎに各々対応し、列ＣＡ−ＣＣは、プロセッサコアＰＡ〜ＰＣに各々対応する。例えば、行Ｌ０及び列ＣＡが交差する部分は、プロセッサコアＰＡがメモリ１４０のブロックＢＬ０を共有しているか否かについての情報を保持する。このような方式によると、メモリ１４０を共有するコアの数がＣ個である場合に、ディレクトリメモリ１３０の一つの行はＣビットを保持する。図２に示したディレクトリメモリ１３０は、一つの実施の形態を例示しているだけであり、他の方式は、例えば、ディレクトリメモリ１３０の一つの行がｌｏｇ２Ｃ（ただ、Ｃはメモリを共有するプロセッサコアの数)ビットを保持するように実現されうる。
【００２５】
再び図１を参照しながら説明すると、メモリコントローラ１２０は、プロセッサコアＰＡ〜ＰＣのうちのいずれか一つからメモリ１４０に対するアクセス要求を受けた場合において、ディレクトリメモリ１３０をアクセスして共有情報を獲得する。メモリコントローラ１２０は、獲得した情報に従ってキャッシュ一貫性を維持するための動作を実行した後に、アクセス要求をしたプロセッサコアに対してメモリ１４０へのアクセスを許可する。
【００２６】
図１に示したように、システム１００内の複数のプロセッサコアＰＡ、ＰＢ、ＰＣは、各々Ｌ１キャッシュＬ１Ａ、Ｌ１Ｂ、Ｌ１Ｃ、及びＬ２キャッシュＬ２Ａ、Ｌ２Ｂ、Ｌ２Ｃを具備する。初期状態では、キャッシュメモリＬ１Ａ、Ｌ２Ａ、Ｌ２Ｃ、及び、Ｌ２Ａ、Ｌ２Ｂ、Ｌ２Ｃは空いている。プロセッサコアＰＡがデータブロックＤＢ０を読み出そうとする場合、データブロックＤＢ０はキャッシュメモリＬ１、Ｌ２に存在しないので、メモリ１４０からデータブロックＤＢ０が読み出される。読み出されたデータブロックＤＢ０は、キャッシュメモリＬ１Ａ、Ｌ２Ａに挿入される。データブロックＤＢ０の値は、ＶＡであると仮定する。プロセッサコアＰＢがデータブロックＤＢ０を読み出そうとした場合、データブロックＤＢ０はキャッシュメモリＬ１Ｂ、Ｌ２Ｂにコピーされ、データブロックＤＢ０の値は依然としてＶＡである。プロセッサコアＰＢがデータブロックＤＢ０に新しい値Ｖ２を書き込むと仮定すると、この新しい値はキャッシュメモリＬ１Ｂ、Ｌ２Ｂに格納される。しかし、メモリ１４０とキャッシュメモリＬ１Ａ、Ｌ２Ａは依然としてデータブロックＤＢ０の以前の値であるＶＡを有するので、メモリ１４０とキャッシュメモリＬ１Ｂ、Ｌ２Ｂとは一貫性がない(ｎｏｔ  ｃｏｈｅｒｅｎｔ)。したがって、本発明の望ましい実施の形態によるマルチプロセッサシステムは、キャッシュ一貫性維持のために次のように動作する。
【００２７】
例えば、プロセッサコアＰＡによってメモリ１４０のデータブロックＤＢ０が共有されていると仮定する。プロセッサコアＰＡによってメモリ１４０のデータブロックＤＢ０が共有されたということは、プロセッサコアＰＡ上のＬ１キャッシュＬＡ１とＬ２キャッシュＬ２Ａが各々データブロックＤＢ０を保持していることを意味する。このような状態で、プロセッサコアＰＢがメモリ１４０のデータブロックＤＢ０にデータを書き込むためのアクセス要求をすると、メモリコントローラ１２０は、ディレクトリメモリ１３０を検査する。メモリコントローラ１２０は、ディレクトリメモリ１３０を検査した結果として、プロセッサコアＰＢによってアクセス要求されたデータブロックＤＢ０がプロセッサコアＰＡによって共有されていると判断することができる。メモリコントローラ１２０は、プロセッサコアＰＢに対しては、アクセス要求のリトライを命じる信号を伝送し、プロセッサコアＰＡに対しては、インタラプト信号を伝送する。
【００２８】
インタラプト信号を受信したプロセッサコアＰＡは、メモリコントローラ１２０から受信したインタラプト信号が他のプロセッサコアＰＢによる書き込み要求に起因するインタラプト信号であると判断して、書き込み要求がされたデータブロックＤＢ０をＬ１キャッシュＬ１Ａ及びＬ２キャッシュＬ２Ｂにおいて各々無効化する。続いて、書き込みバッファＷＢＡに保持されたデータブロックがあるか否かをチェックして、保持されたデータブロックがある場合には、そのデータブロックをメモリ１４０に書き込む。このような過程が全部完了すると、プロセッサコアＰＡは、インタラプト処理完了応答をメモリコントローラ１２０に伝送する。
【００２９】
メモリコントローラ１２０は、プロセッサコアＰＡからインタラプト処理完了応答を受信すると、プロセッサコアＰＡに対して、メモリ１４０に対するアクセスを許可する。したがって、プロセッサコアＰＢが要求したメモリ１４０のデータブロックＤＢ０に対する書き込み動作が実行される。このような方法によって、キャッシュ一貫性が維持される。
【００３０】
一方、プロセッサコアＰＡによってメモリ１４０のデータブロックＤＢ０が共有された状態において、プロセッサコアＰＢがメモリ１４０のデータブロックＤＢ０からデータを読み出すためのアクセス要求をする場合については、大部分の動作は前の説明の書き込み動作と類似である。ただし、プロセッサコアＰＢがメモリ１４０のデータブロックＤＢ０を読み出す動作によってはデータブロックＤＢ０が変化しないので、プロセッサコアＰＡ上のＬ１キャッシュＬ１Ａ及びＬ２キャッシュＬ２Ａに保持されたデータブロックＤＢ０を無効化しなくても良いという点で異なる。以下、マルチプロセッサシステム１００の詳細な動作を図３Ａ及び図３Ｂを参照して詳細に説明する。
【００３１】
図３Ａは、プロセッサコアからアクセス要求があった場合におけるメモリコントローラ１２０の制御手順を示すフローチャートである。図１及び図３Ａを参照しながら説明すると、段階Ｓ２１０において、プロセッサコアＰＡ〜ＰＣのうちのいずれか一つがバス１１０を通じて共有メモリ１４０に対するアクセスを要求すると、メモリコントローラ１２０がアクセス要求を受信する。段階Ｓ２１１において、メモリコントローラ１２０は、メモリ１４０中のアクセス要求されたデータブロックが他のプロセッサコアによって共有されているか否かを判断する。そして、メモリ１４０中のアクセス要求されたデータブロックが他のプロセッサコアによって共有されている場合には、制御は段階Ｓ２１２に進む。
【００３２】
段階Ｓ２１２において、メモリコントローラ１２０は、メモリ１４０に対するアクセスを要求したプロセッサコアに対して、リトライ要求信号を伝送する。バス１１０が分離型トランザクションプロトコルに従う場合には、後に更に応答を送るまで待機するように要求する信号(ｄｅｆｅｒ信号)を、アクセス要求したプロセッサコアに対して伝送する。
【００３３】
段階Ｓ２１３において、メモリコントローラ１２０は、メモリ１４０中のアクセス要求されたデータブロックを共有しているプロセッサコアに対してインタラプトを伝送する。
【００３４】
インタラプトを受信したプロセッサコアの制御手順は、図３Ｂに示されている。図３Ｂを参照しながら説明すると、段階Ｓ２２０において、プロセッサコアは、メモリコントローラ１２０からインタラプトを受信する。段階Ｓ２２１において、インタラプトに応答するプロセッサコアは、メモリコントローラ１２０からインタラプト内容を読み出して、インタラプトの種類を判別する。そして、インタラプトが他のプロセッサコアからの書き込み要求に関連するインタラプトであれば、制御は段階Ｓ２２２に進む。段階Ｓ２２２において、プロセッサコアは、書き込み要求されたデータブロックをＬ１キャッシュメモリとＬ２キャッシュメモリにおいて無効化する。Ｌ１及びＬ２キャッシュメモリがライトスルー方式を採択している場合は、Ｌ１及びＬ２キャッシュメモリに保持されたデータブロックを無効化しても、全体のシステムの動作に影響を及ぼさない。段階Ｓ２２１における判別の結果、インタラプトが他のプロセッサコアからの読み出し要求に関連するインタラプトであれば、制御は段階Ｓ２２３に進む。
【００３５】
ここで、Ｌ２キャッシュからメモリ１４０にライトスルーされるデータが書き込みバッファに保持される場合もある。もし書き込みバッファに保持されたデータがメモリ１４０に書き込まれない状態で、他のプロセッサコアがメモリ１４０の同一のデータブロックに他の値のデータを書き込むと、システム１００の動作にエラーが発生しうる。このような問題を防止するために、段階Ｓ２２３において、プロセッサコアは、書き込みバッファに保持されたデータブロックがあるか否かを判断する。そして、書き込みバッファに保持されたデータブロックがある場合には、制御は段階Ｓ２２４に進む。段階Ｓ２２４において、プロセッサコアは、書き込みバッファに保持されたデータブロックをメモリに書き込む。一方、書き込みバッファに保持されたデータブロックがない場合には、制御は段落２２４をスキップして、段階Ｓ２２５に進む。段階Ｓ２２５において、プロセッサコアは、インタラプト完了応答をメモリコントローラ１２０に伝送する。
【００３６】
再び図３Ａを参照しながら説明を続けると、段階Ｓ２１４において、メモリコントローラ１２０は、インタラプトを要求した先のプロセッサコアからインタラプト完了応答が受信したか否かを判断し、インタラプト完了応答を受信したら、段階Ｓ２１５に進む。段階Ｓ２１５において、メモリコントローラ１２０は、メモリ１４０に対するアクセスを要求したプロセッサコアに対して、アクセスを許可する。
【００３７】
このように、本発明は、マルチプロセッサ動作環境を提供しないプロセッサの設計変更を最小に抑えながら、キャッシュ一貫性を維持することができるようにする。キャッシュ一貫性維持のための複雑なロジックを使用しないことによって、システムの電力消耗を減らすことができる。
【００３８】
ここまでの説明では、マルチプロセッサシステム１００は、プロセッサコアＰＡ〜ＰＣがメインメモリ１４０を共有している。次に説明するシステムは、プロセッサコアがＬ１キャッシュと書き込みバッファとを有し、複数のプロセッサコアがＬ２キャッシュを共有するオンチップマルチプロセッサ(ｏｎ  ｃｈｉｐ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ)を含む。
【００３９】
図４を参照しながら説明すると、マルチプロセッサシステム３００は、複数のプロセッサコアＰＤ〜ＰＦ、バス３１０、Ｌ２キャッシュコントローラ３２０、ディレクトリメモリ３３０及びＬ２キャッシュ３４０が一つのチップ内に構成されたマルチプロセッサ３０２と、メモリコントローラ３５０と、メモリ３６０とを含む。プロセッサコアＰＤ〜ＰＦは、バス３１０に各々連結されている。各プロセッサコアは、レベル１(“Ｌ”)キャッシュメモリ及び書き込みバッファを含む。書き込みバッファは、Ｌ１キャッシュからＬ２キャッシュ３４０に書き込まれるデータが一時的に保持される場所である。Ｌ２キャッシュ３４０は、Ｌ２キャッシュコントローラ３２０を通じてバス３１０と連結され、プロセッサコアＰＤ〜ＰＦによって共有される。Ｌ２キャッシュコントローラ３２０は、Ｌ２キャッシュ３４０を管理し、プロセッサトランザクションをハンドリングする。ディレクトリメモリ３３０は、Ｌ２キャッシュ３４０のデータブロックがどのプロセッサコアによって共有されているかについての情報を保持する。メモリ３６０は、メモリコントローラ３５０を通じてＬ２キャッシュ３４０と連結される。メモリコントローラ３５０は、メモリ３６０を管理する。Ｌ１キャッシュ、Ｌ２キャッシュ、及びメモリにおいて、データは同一の大きさのデータブロック(キャッシュライン)に分離されて保持される。
【００４０】
図５は、ディレクトリメモリ３３０の配列を概念的に示している。
【００４１】
図５を参照しながら説明すると、ディレクトリメモリ３３０の行Ｌ０〜Ｌｍは、Ｌ２キャッシュ３４０のブロックＢＬ０〜ＢＬｍに各々対応し、列ＣＤ〜ＣＦは、プロセッサコアＰＤ〜ＰＦに各々対応する。例えば、行Ｌ０及び列ＣＡの交差する部分は、プロセッサコアＰＤがＬ２キャッシュメモリ３４０のブロックＢＬ０を共有しているか田舎についての情報を保持する。このような方式によると、Ｌ２キャッシュメモリ３４０を共有するプロセッサコアの数がＦ個である場合において、ディレクトリメモリ１３０の一つの行はＦビットを保持する。また、ディレクトリメモリ３３０の各行は、有効ビットＶをさらに含む。有効ビットＶは、Ｌ２キャッシュメモリ３４０の対応するデータブロックに保持されたデータが有効であるか、または無効であるかを示す。図５に示したディレクトリメモリ３３０は、一つの実施の形態を例示しているだけであり、他の方式は、例えば、ディレクトリメモリ３３０の一つの行がｌｏｇ２Ｆ(ただ、ＦはＬ２キャッシュを共有するプロセッサコアの数)ビットを保持するように実現されうる。
【００４２】
再び図４を参照しながら説明すると、Ｌ２キャッシュコントローラ３２０は、プロセッサコアＰＤ〜ＰＦのうちのいずれか一つからＬ２キャッシュ３４０に対するアクセス要求を受けた場合において、ディレクトリメモリ３３０をアクセスして共有情報を獲得する。Ｌ２キャッシュコントローラ３２０は、獲得した情報に従ってキャッシュ一貫性を維持するための動作を実行した後に、アクセス要求をしたプロセッサコアに対してメモリ１４０へのアクセスを許可する。以下、本発明の望ましい実施の形態によるマルチプロセッサシステム３００のキャッシュ一貫性維持のための動作を図６Ａ及び図６Ｂを参照して詳細に説明する。
【００４３】
プロセッサコアＰＤによってＬ２キャッシュメモリ３４０のデータブロックＤＢ０が共有されていると仮定する。プロセッサコアＰＤによってＬ２キャッシュメモリ３４０のデータブロックＤＢ０が共有されたということは、プロセッサコアＰＤ上のＬ１キャッシュＬＡ１がデータブロックＤＢ０を保持していることを意味する。ライトスルー方式を採用したシステムでは、Ｌ１及びＬ２キャッシュのデータブロックＤＢ０がメモリ３６０に保持されている。このような状態において、プロセッサコアＰＥがＬ２キャッシュ３４０のデータブロックＤＢ０にデータを書き込むためのアクセス要求をすると(図６Ａの段階Ｓ４１０)、Ｌ２キャッシュコントローラ３２０は、ディレクトリメモリ３３０を検査する(段階Ｓ４１１)。Ｌ２キャッシュコントローラ３２０がディレクトリメモリ３３０を検査した結果、プロセッサコアＰＥによってアクセス要求がされたデータブロックＤＢ０がプロセッサコアＰＤによって共有されていると判断することができる。Ｌ２キャッシュコントローラ３２０は、プロセッサコアＰＥに対しては、アクセス要求のリトライを命じる信号を伝送し(段階Ｓ４１２)、プロセッサコアＰＤに対しては、インタラプト信号を伝送する(段階Ｓ４１３)。
【００４４】
インタラプト信号を受信したプロセッサコアＰＤは(図６Ｂの段階Ｓ４２０)、Ｌ２キャッシュコントローラ３２０から受信したインタラプト信号が他のプロセッサコアＰＥによる書き込み要請に関連するインタラプトであることを確認し(段階Ｓ４２１)、書き込み要求されたデータブロックＤＢ０をＬ１キャッシュＬ１Ａにおいて無効化する(段階Ｓ４２２)。続いて、書き込みバッファＷＢＤに保持されたデータブロックがあるか否かをチェックして(段階Ｓ４２３)、保持されたデータブロックがある場合には、そのデータブロックをＬ２キャッシュ３４０に書き込む(段階Ｓ４２４)。このような過程が全部完了すると、プロセッサコアＰＤはインタラプト処理完了応答をＬ２キャッシュコントローラ３２０に伝送する(段階Ｓ４２５)。
【００４５】
Ｌ２キャッシュコントローラ３２０は、プロセッサコアＰＤからインタラプト処理完了応答を受信すると(図６Ａの段階Ｓ４１４)、Ｌ１キャッシュメモリにおいて無効化されたデータブロックに対応するＬ２キャッシュメモリ３４０のデータブロックを無効化する(段階Ｓ４１５)。Ｌ２キャッシュメモリ３４０のデータブロック無効化は、ディレクトリメモリ３３０の対応する行の有効ビットＶをリセットすることによって可能である。Ｌ２キャッシュコントローラ３２０は、プロセッサコアＰＤに対して、Ｌ２キャッシュメモリ３４０へのアクセスを許可する(段階Ｓ４１６)。これによって、プロセッサコアＰＥが要求したＬ２キャッシュメモリ３４０のデータブロックＤＢ０に対する書き込み動作が実行される。ライトスルー方式を採用したシステムでは、プロセッサコアＰＥによってＬ２キャッシュメモリ３４０に書き込まれるデータブロックＤＢ０は、メモリ３６０にも書き込まれる。このような方法によってキャッシュ一貫性が維持される。
【００４６】
一方、プロセッサコアＰＤによってＬ２キャッシュメモリ３４０のデータブロックＤＢ０が共有された状態において、プロセッサコアＰＥがＬ２キャッシュメモリ３４０のデータブロックＤＢ０からデータを読み出すためのアクセス要求をする場合については、大部分の動作は前の説明の書き込み動作と類似である。ただし、プロセッサコアＰＥがメモリ３４０のデータブロックＤＢ０を読み出す動作によってはデータブロックＤＢ０が変化しないので、プロセッサコアＰＤ上のＬ１キャッシュＬ１Ａ及びＬ２キャッシュＬ２Ａに保持されたデータブロックＤＢ０を無効化しなくても良いという点で異なる。
【００４７】
上述のように、本発明はマルチプロセッサ動作環境を提供しないプロセッサコアの設計変更を最小に抑えながら、キャッシュ一貫性を維持することができるようにする。また、キャッシュ一貫性維持のための複雑なロジックを使用しないことによって、システムの電力消耗を減らすことができる。
【００４８】
以上、例示的な望ましい実施の形態を利用して本発明を説明したが、本発明の範囲が開示された実施の形態に限定されないことは明らかであろう。したがって、特許請求の範囲は、その範囲を実質的に逸脱しない範囲において、各種の変形例を含む。
【図面の簡単な説明】
【００４９】
【図１】本発明の望ましい実施の形態によるマルチプロセッサシステムを示す図面である。
【図２】図１に示したディレクトリメモリの配列を概念的に示す図面である。
【図３Ａ】プロセッサコアからアクセス要求があった場合における図１のメモリコントローラの制御手順を示すフローチャートである。
【図３Ｂ】インタラプトを受信したプロセッサコアの制御手順を示すフローチャートである。
【図４】本発明の他の実施の形態によるマルチプロセッサシステムを示す図面である。
【図５】図４のディレクトリメモリの配列を概念的に示す図面である。
【図６Ａ】プロセッサコアからアクセス要求があった場合における図４のＬ２キャッシュコントローラの制御手順を示すフローチャートである。
【図６Ｂ】インタラプトを受信したプロセッサコアの制御手順を示すフローチャートである。
【符号の説明】
【００５０】
１００，３００  マルチプロセッサシステム
１１０，３１０  バス
１２０，３５０  メモリコントローラ
１３０，３３０  ディレクトリメモリ
１４０，３６０  メモリ
３２０  Ｌ２キャッシュコントローラ
３４０  Ｌ２キャッシュメモリ
ＰＡ−ＰＣ  プロセッサコア
ＰＤ−ＰＦ  プロセッサコア
Ｌ１Ａ−Ｌ１Ｆ  Ｌ１キャッシュメモリ
Ｌ２Ａ−Ｌ２Ｃ  Ｌ２キャッシュメモリ
ＷＢＡ−ＷＢＦ  書き込みバッファ
【図１】
0004733932.tif 000002
【図２】
0004733932.tif 000003
【図３Ａ】
0004733932.tif 000004
【図３Ｂ】
0004733932.tif 000005
【図４】
0004733932.tif 000006
【図５】
0004733932.tif 000007
【図６Ａ】
0004733932.tif 000008
【図６Ｂ】
0004733932.tif 000009