(57)【特許請求の範囲】
【請求項１】
データ処理システムであって、
キャッシュを備えた第１マスタと、
第２マスタと、
システム相互接続を介して前記第１マスタおよび前記第２マスタに操作可能に結合されたメモリとを備え、
前記キャッシュは、キャッシュ・コントローラを備え、該キャッシュ・コントローラは、前記キャッシュのデータ・ユニットに対する１組のキャッシュ・コヒーレント状態を実行し、該キャッシュ・コヒーレント状態は、
無効状態と、
前記キャッシュのデータ・ユニットにおけるデータが修正されておらず、前記データ処理システムにおける他のキャッシュにおけるデータとコヒーレントであると保証されないことを示す未修正非コヒーレント状態と、
前記データ・ユニットのデータが修正されておらず、前記メモリ及び前記データ処理システムにおける他のキャッシュにおけるデータとコヒーレントであることを示す未修正コヒーレント状態と、
前記キャッシュのデータ・ユニットにおけるデータが修正されており、前記データ処理システムにおける他のキャッシュにおけるデータとコヒーレントであると保証されないことを示す修正済非コヒーレント状態と、を含み、
前記キャッシュのデータ・ユニットにおけるデータのためにライト・スルーが必要であることを示すライト・スルー要求属性に応じて、前記キャッシュ・コヒーレント状態が前記無効状態から前記未修正コヒーレント状態又は前記未修正非コヒーレント状態のいずれかに移行する、データ処理システム。
【請求項２】
前記無効状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行は、前記キャッシュへの読み取りミスに応じてなされ、該読み取りミスのデータは、前記データ・ユニットに書き込まれ、キャッシュ・コヒーレンス動作は、前記読み取りミスに応じて前記データ処理システムにおける他のキャッシュ上では行なわれない請求項１記載のデータ処理システム。
【請求項３】
書込みキャッシュ・ミスに応じて、該書込みミスのデータが書き込まれる、前記無効状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行は、前記データ処理システムにおける他のキャッシュにおけるキャッシュ・コヒーレンス動作を生成しない請求項１記載のデータ処理システム。
【請求項４】
前記無効状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行は、前記データ処理システムにおける他のキャッシュが、前記データ・ユニットに書き込まれるデータに対応したメモリ・アドレスを含むか否かを判断するために、前記他のキャッシュへのルックアップ動作を生じさせない請求項１記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理システムに関し、より詳しくは、データ処理システムにおけるキャッシュ・コヒーレンス・プロトコルに関する。
【背景技術】
【０００２】
キャッシュ・コヒーレンス・プロトコルは、典型的には、多重プロセッサ・システムで使用される。そのようなプロトコルの１つは、ＭＥＳＩプロトコルである。しかしながら、ＭＥＳＩプロトコルを実施するために、多重プロセッサ・システムのバス・プロトコルは、特定の形式のバス・トランザクションをサポートする必要がある。さらに、ＭＥＳＩプロトコルは、より低レベルのシステムに対して複雑過ぎるかまたはコスト高となる場合がある。
【発明の概要】
【０００３】
アイテム１．  データ処理システム（例えば、１０）であって、
キャッシュ（例えば、２８）を備えた第１マスタ（例えば、１４）と、
第２マスタ（例えば、１６）と、
システム相互接続（例えば、１２）を介して第１マスタおよび第２マスタに操作可能に結合されたメモリ（例えば、２０）とを備え、
前記キャッシュは、キャッシュ・コントローラ（例えば、２９）を備え、該キャッシュ・コントローラは、前記キャッシュのデータ・ユニット（例えば、キャッシュ・エントリまたはキャッシュ・ライン）に対する１組のキャッシュ・コヒーレント状態（例えば、Ｉ，Ｎ，Ｃ，Ｍ）を実行、
該キャッシュ・コヒーレント状態は、
無効状態（例えば、Ｉ）と、
前記キャッシュのデータ・ユニットにおけるデータが修正されておらず、前記データ処理システムのうちの少なくとも１つの他の記憶装置におけるデータとコヒーレントであると保証されないことを示す未修正非コヒーレント状態（例えば、Ｎ）と、
前記データ・ユニットのデータが修正されておらず、前記データ処理システムのうちの少なくとも１つの他の記憶装置におけるデータとコヒーレントであることを示す未修正コヒーレント状態（例えば、Ｃ）と
を含んでいるデータ処理システム。
【０００４】
アイテム２．  前記無効状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行は、前記キャッシュへの読み取りミスに応じてなされ、該読み取りミスのデータは、前記データ・ユニットに書き込まれ、キャッシュ・コヒーレンス動作は、前記読み取りミスに応じて前記データ処理システムにおける他のキャッシュ上では行なわれないアイテム１記載のデータ処理システム。
【０００５】
アイテム３．  書込みキャッシュ・ミスに応じて、該書込みミスのデータが書き込まれる、前記無効状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行は、前記データ処理システムにおける他のキャッシュにおけるキャッシュ・コヒーレンス動作を生成しないアイテム１記載のデータ処理システム。
【０００６】
アイテム４．  前記無効状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行は、それらのキャッシュが、前記データ・ユニットに書き込まれる前記データに対応したメモリ・アドレスを含むか否かを判断するために、前記データ処理システムの他のキャッシュへのルックアップ動作を生じさせないアイテム１記載のデータ処理システム。
【０００７】
アイテム５．  前記キャッシュのデータ・ユニットが前記未修正非コヒーレント状態であるとき、そのデータ・ユニットの方へ向かうスヌープ処理は、そのデータ・ユニットに対するコヒーレント状態の変化をもたらさないアイテム１記載のデータ処理システム。
【０００８】
アイテム６．  キャッシュ・ミスのデータが前記キャッシュのデータ・ユニットに書き込まれる前記キャッシュ・ミスに応じて、
前記キャッシュのデータ・ユニットの前記無効状態から前記未修正非コヒーレント状態への移行（例えば、移行１１０）は、ライト・スルーが前記データ・ユニットに書き込まれたデータのために必要でないことを示すライト・スルー要求属性に応じてなされ、
前記キャッシュのデータ・ユニットの前記無効状態から前記未修正コヒーレント状態への移行（例えば、移行１２８）は、ライト・スルーが前記キャッシュのデータ・ユニットに書き込まれた前記データのために必要であることを示すライト・スルー要求属性に応じてなされるアイテム１記載のデータ処理システム。
【０００９】
アイテム７．  前記キャッシュ・ミスは、書込みミスであり、
前記ライト・スルーが前記書込みミスのデータのために必要であることを前記ライト・スルー要求属性が示す場合、前記書込みミスのデータは、その後のコピーバック・バス・トランザクションで前記メモリに書き込まれないアイテム６記載のデータ処理システム。
【００１０】
アイテム８．  前記キャッシュ・コヒーレント状態は、前記キャッシュのデータ・ユニットにおけるデータが修正されており、前記データ処理システムのうちの少なくとも１つの他の記憶装置における前記データとコヒーレントであると保証されないことを示す修正済非コヒーレント状態（例えば、Ｍ）をさらに含んでいるアイテム１記載のデータ処理システム。
【００１１】
アイテム９．  前記未修正非コヒーレント状態から前記キャッシュのデータ・ユニットの前記修正済非コヒーレント状態への移行（例えば、移行１１４）は、前記データ・ユニットのデータへの書込みヒットに応じてなされるアイテム８記載のデータ処理システム。
【００１２】
アイテム１０．  前記未修正コヒーレント状態にあるとき、前記キャッシュのデータ・ユニットのデータへの書込みヒットは、前記メモリへの前記データにライト・スルーを生成し（例えば、移行１３２）、
前記未修正非コヒーレント状態にあるとき、前記キャッシュのデータ・ユニットの前記データへの書込みヒットは、前記データのライト・スルー動作を生成しないアイテム９記載のデータ処理システム。
【００１３】
アイテム１１．  前記修正済非コヒーレント状態から前記キャッシュのデータ・ユニットの前記未修正非コヒーレント状態への移行（例えば、移行１１６）は、前記データ・ユニットに対する無効キャッシュ動作命令なしに、前記データ・ユニットに対するフラッシュ・キャッシュ動作命令に応じてなされ、ライト・スルー要求属性は、ライト・スルーが前記データ・ユニットのデータのために必要でないことを示すアイテム８記載のデータ処理システム。
【００１４】
アイテム１２．  前記修正済非コヒーレント状態から前記キャッシュのデータ・ユニットの前記未修正コヒーレント状態への移行（例えば、移行１２６）は、前記データ・ユニットに対するフラッシュ・キャッシュ動作命令に応じてなされ、前記データのライト・スルー要求属性は、ライト・スルーが前記データのために必要であることを示すアイテム８記載のデータ処理システム。
【００１５】
アイテム１３．  ライト・スルーが前記データのために必要でないことをデータ・ユニットにおけるデータに対するライト・スルー要求属性が示す場合、前記修正済非コヒーレント状態から前記キャッシュの前記データ・ユニットの前記無効状態への移行は、
前記データ・ユニットに対する無効キャッシュ動作命令なしの、前記データ・ユニットに対するフラッシュ・キャッシュ動作命令であって、前記データが、前記フラッシュ・キャッシュ動作命令に応じてコピーバック・バス・トランザクションで前記メモリに書き込まれるもの（例えば、移行１２４）、または
前記データ・ユニットに対する無効キャッシュ動作命令（例えば、移行１２２）
に応じてなされるアイテム８記載のデータ処理システム。
【００１６】
アイテム１４．  ライト・スルーが前記キャッシュのデータ・ユニットのデータのために必要であることをライト・スルー要求属性が示す場合、前記キャッシュの前記データ・ユニットの前記未修正非コヒーレント状態から前記未修正コヒーレント状態への移行（例えば、移行１２０）は、前記データ・ユニットに対する無効キャッシュ動作命令なしに、前記データ・ユニットに対するフラッシュ・キャッシュ動作命令に応じてなされるアイテム１記載のデータ処理システム。
【００１７】
アイテム１５．  ライト・スルーが前記データのために必要でないことをライト・スルー要求属性が示す場合、前記キャッシュのデータ・ユニットの前記未修正コヒーレント状態から前記未修正非コヒーレント状態への移行（例えば、移行１３４）は、前記データ・ユニットに対する無効キャッシュ動作命令なしに、前記データ・ユニットに対するフラッシュ・キャッシュ動作命令に応じてなされるアイテム１記載のデータ処理システム。
【００１８】
アイテム１６．  前記未修正非コヒーレント状態および前記未修正コヒーレント状態の各々から前記キャッシュのデータ・ユニットの前記無効状態への移行（例えば、移行１１２および１３０）は、前記データ・ユニットに対する無効キャッシュ動作命令に応じてなされるアイテム１記載のデータ処理システム。
【００１９】
アイテム１７．  データ処理システム（例えば、１０）を動作させる方法であって、
前記データ処理システムのキャッシュ（例えば、３０）への書込みミスを生成する第１マスタ（例えば、１６）によってデータの書込み処理を行なうことであって、前記第１マスタがシステム相互接続（例えば、１２）に操作可能に結合され、前記データ処理システムが第２マスタ（例えば、１４）と前記システム相互接続に操作可能に結合されたメモリ（例えば、２０）とを備えること、
前記書込みミスに応じて、前記キャッシュに前記データを書きこむこと、
前記データのライト・スルーが要求されることを前記書込み処理の前記データに対するライト・スルー要求属性（例えば、Ｗ）が示す場合、前記メモリへの前記データのライト・スルーを行ない、前記データのライト・スルーが要求されないことを前記ライト・スルー要求属性が示す場合、前記データのライト・スルーが行なわれないこと、および
前記データのライト・スルーが要求されることを前記ライト・スルー要求属性が示す場合、少なくとも１つの他のキャッシュが前記書込み処理に対応したメモリ・アドレスを含むか否かを判断するために、前記データ処理システムのうちの前記少なくとも１つの他のキャッシュ（例えば、２８）を探索することであって、前記データのライト・スルーが要求されないことを前記ライト・スルー要求属性が示す場合、前記少なくとも１つの他のキャッシュの探索を行なわないこと
を含む方法。
【００２０】
アイテム１８．  データ処理システム（例えば、１０）であって、
キャッシュ（例えば、２８）を備えたプロセッサ（例えば、１４）と、
第２マスタ（例えば、１６）と、
前記プロセッサおよび前記第２マスタにシステム相互接続（例えば、１２）を介して操作可能に結合されたメモリ（例えば、２０）と、
該メモリの記憶位置に関連した複数の属性を提供するメモリ属性ロジック（例えば、ＭＭＵ４２内、またはプロセッサ１４もしくはシステム１０内のどこか他の場所）とを備え、前記複数の属性のうちの１つは、ライト・スルー要求属性（例えば、Ｗ）であり、
前記キャッシュは、キャッシュ・コントローラ（例えば、２９）を備え、該キャッシュ・コントローラは、前記キャッシュのデータ・ユニットに対する１組のキャッシュ・コヒーレント状態を実行する回路を備え、前記キャッシュ・コントローラは、メモリ・コヒーレンスが前記メモリ内の一または複数の記憶位置に対して必要か否かを判断するために、前記ライト・スルー要求属性を利用するデータ処理システム。
【００２１】
アイテム１９．  前記システム相互接続に操作可能に結合されたキャッシュ・コヒーレンス・マネージャ（例えば、１８）をさらに備え、メモリ・コヒーレンスが書込み処理のために必要であることを前記ライト・スルー要求属性が示す場合、前記キャッシュ・コヒーレンス・マネージャは、前記書込み処理のメモリ・アドレスに対するキャッシュ・コヒーレンス・ルックアップ動作を行なうために、前記データ・システムの他のキャッシュ（例えば、３０，４１）に示すアイテム１８記載のデータ・システム。
【００２２】
アイテム２０．  メモリ・コヒーレンスが前記書込み処理のために必要ではないことを前記ライト・スルー要求属性が示す場合、前記データ・システムにおけるメモリ・コヒーレンス処理は、前記書込み処理に対して行なわれないアイテム１９記載のデータ・システム。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態にかかるデータ処理システムを示す図。
【図２】本発明の一実施形態にかかる、図１のデータ処理システムのプロセッサの一部を示す図。
【図３】本発明の一実施形態にかかる、図２のプロセッサによって実施されるキャッシュ・コヒーレンス・プロトコルの状態図。
【図４】１つのバス・プロトコルにかかる、ＨＢＵＲＳＴバス信号の符号化を規定する表を示す図。
【図５】１つのバス・プロトコルにかかる、ＨＰＲＯＴバス信号の符号化を規定する表を示す図。
【図６】フローチャートの形態で、キャッシュ・コヒーレンス動作（例えば、スヌープすること）が行なわれるか否かを判断するための様々な実施形態を示す図。
【図７】フローチャートの形態で、キャッシュ・コヒーレンス動作（例えば、スヌープすること）が行なわれるか否かを判断するための様々な実施形態を示す図。
【図８】フローチャートの形態で、キャッシュ・コヒーレンス動作（例えば、スヌープすること）が行なわれるか否かを判断するための様々な実施形態を示す図。
【図９】フローチャートの形態で、キャッシュ・コヒーレンス動作（例えば、スヌープすること）が行なわれるか否かを判断するための様々な実施形態を示す図。
【発明を実施するための形態】
【００２４】
本発明は、例示として示され、添付図面によって限定されるものではない。ここでは、同様の参照符号が同様の要素を示している。図中の要素は、簡明のために示され、必ずしも当尺には描かれてはいない。
【００２５】
一実施形態では、キャッシュ・コヒーレンス・プロトコルは、一貫性および非一貫性書込みに対する個別の移行（ｔｒａｎｓｉｔｉｏｎ）および状態（ｓｔａｔｅ）を使用することがある。一実施形態では、このキャッシュ・コヒーレンス・プロトコルは、コヒーレント状態間の一または複数の移行を規定するために、制御値としてメモリ管理ユニット（ＭＭＵ）によって提供されるライト・スルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）・ページ属性を使用する。一実施形態では、キャッシュ・コヒーレンス・プロトコルは、コヒーレント・トラフィックに対するライト・スルー動作に依存し、非コヒーレント・データに対するコピーバック処理をサポートする。さらに、このキャッシュ・コヒーレンス・プロトコルは、キャッシュ・コヒーレンスを現在サポートしない標準バス・プロトコルと共に使用されることがある。さらに、一実施形態では、バス・トランザクションの一部は、キャッシュ・コヒーレンスが必要なものに対して選択されることが可能である。つまり、一または複数の要因に基づいて、特定のバス・トランザクションは、キャッシュ・コヒーレンス動作をもたらすこともあり、また、もたらさないこともある（例えば、スヌープ要求の生成をもたらすることもあり、また、もたらさないこともある）。さらに、一実施形態では、選択的なスヌープを行なうために使用される一または複数の要因は、既存の業界標準バス・プロトコルに存在し、その結果、標準バス・プロトコルへの追加の信号伝達機構または他の改変が、必要ではない。
【００２６】
ここで使用される用語「バス」は、複数の信号または導体を参照するために使用され、それは、データ、アドレス、制御または状態等の一または複数の多様な形式の情報を転送するために使用されることが可能である。ここで議論される導体は、単一の導体、複数の導体、一方向性の導体、または双方向性の導体として例示または記述されることがある。しかしながら、異なる実施形態によって、導体の実装が変更されることがある。例えば、双方向性の導体ではなく、むしろ個別の一方向性の導体が使用されることがあり、その逆もあり得る。さらに、複数の導体を、多重信号を連続的にまたは時分割多重通信の方法で転送する単一の導体で置き換えることが可能である。同様に、多重信号を搬送する単一の導体は、これらの信号の一部を搬送する種々多様な導体に分離されることが可能である。したがって、信号の転送には多くのオプションが存在する。
【００２７】
用語「アサート」または「設定」および、「ネゲート」（すなわち、「デアサート」もしくは「クリア」を意味する）は、ここでは、信号のレンダリング、状態ビット、または同様の装置をそれぞれその論理上の真の状態または論理上の誤りの状態にすることを参照する場合に使用される。論理上の真の状態が論理レベル１である場合、論理上の誤りの状態は論理レベル０である。また、論理上の真の状態が論理レベル０である場合、論理上の誤りの状態は論理レベル１である。
【００２８】
ここで記述される各信号は、正論理または負論理として設計されることがあり、負論理は、信号名の上のバーまたはその名前に続くアスタリクス（＊）によって示される。負論理信号の場合、その信号は、論理上の真の状態が論理レベル０に対応するアクティブ・ローである。正論理信号の場合、その信号は、論理上の真の状態が論理レベル１に対応するアクティブ・ハイである。ここで記述される信号のいずれも、負または正の論理信号のいずれかとして設計されることができることを注記しておく。したがって、代替の実施形態では、正論理信号として記述されるそれらの信号は、負論理信号として実施されることが可能であり、負論理信号として記述されるそれらの信号は、正論理信号として実施されることが可能である。
【００２９】
角括弧は、ここではバスの導体または数値データのビット位置を示すために使用される。例えば、「バス６０［７：０］」または「バス６０の導体［７：０］」は、バス６０の８つの低次導体を示し、「アドレス・ビット［７：０］」または「ＡＤＤＲＥＳＳ［７：０］」は、アドレス値の８つの低次ビットを示している。数に先行するシンボル「＄」は、その数が１６進法またはＢＡＳＥ１６形式で表わされていることを示している。数に先行するシンボル「％」は、その数が２進法またはＢＡＳＥ２形式で表わされていることを示している。
【００３０】
図１は、本発明の一実施形態にかかるデータ処理システム１０のブロック図を示している。システム１０は、システム・オン・チップであり得る。システム１０は、単一の集積回路または複数の集積回路上に実装され得る。システム１０は、例えばシステム・バスである、システム相互接続１２を備える。一実施形態では、システム相互接続１２は、ＡＭＢＡ  ＡＨＢまたはＡＸＩプロトコル（ＡＭＢＡ、ＡＸＩ、およびＡＨＢは、ＡＲＭ社の登録商標である）に従って動作するシステム・バスである。システム１０は、プロセッサ１４および１６等の任意の個数のプロセッサ、システム処理アービタ３２、キャッシュ・コヒーレンス・マネージャ１８、メモリ２０、レベル２のキャッシュ４１、他のマスタ（複数可）２２、他のスレーブ（複数可）２４、入力／出力（Ｉ／Ｏ）モジュール２６、および直接メモリ・アクセス（ＤＭＡ）モジュール４０を備え、各々は、システム相互接続１２に双方向結合されている。プロセッサ１４は、キャッシュ２８を備え、プロセッサ１６は、キャッシュ３０を備えている。キャッシュ・コヒーレンス・マネージャ１８は、コヒーレント・マスタ制御レジスタ１９を備えている。キャッシュ・コヒーレンス・マネージャ１８もまた、システム相互接続１２とは別個の場合があるスヌープ制御・インタフェースを介して、Ｌ２キャッシュ４１、プロセッサ１４、およびプロセッサ１６の各々に双方向結合されている。加えて、キャッシュ・コヒーレンス・マネージャ１８は、システム１０内の他のマスタに双方向結合されることも可能である。システム１０の代替の実施形態は、図１に示されていない追加回路を備えるか、または、例示されたものよりも少ない回路を備えることも可能である。幾つかの実施形態では、キャッシュ・コヒーレンス・マネージャ１８は、プロセッサ１４および１６内に割り振られることが可能であり、または、存在しないことも可能である。
【００３１】
図２は、図１のデータ処理システム１０に関連するプロセッサ１４のブロック図である。プロセッサ１４は、パイプライン式の方法で動作を行なうように実装され、命令パイプ２３、実行ユニット２５、命令フェッチ・ユニット２７、制御回路１７、汎用レジスタ３１、ロード／記憶ユニット３３、バス・インタフェース・ユニット（ＢＩＵ）４８、メモリ管理ユニット（ＭＭＵ）４２、およびキャッシュ２８を備えることが可能である。一実施形態では、制御回路１７は、ＢＩＵ４８、キャッシュ２８、ＭＭＵ４２、命令フェッチ・ユニット２７、命令パイプ２３、実行ユニット２５、ロード／記憶ユニット３３の各々に双方向結合される。命令パイプ２３は、命令フェッチ・ユニット２７、実行ユニット２５、およびロード／記憶ユニット３３に双方向結合される。実行ユニット２５は、ＭＭＵ４２、キャッシュ２８、および汎用レジスタ３１の各々に双方向結合される。ロード／記憶ユニットは、汎用レジスタ３１、ＭＭＵ４２、およびキャッシュ２８に双方向結合される。プロセッサ１４は、ＢＩＵ４８に結合されたシステム相互接続１２を介してデータ処理システム１０の他の構成要素と通信することが可能である。キャッシュ２８は、一実施形態では、ＭＭＵ４２によって提供されるメモリ・ページ属性に少なくとも部分的に基づいてキャッシュ２８に対するキャッシュ・コヒーレンス・プロトコルを実施する制御回路２９を備えている。キャッシュ２８は、複数のキャッシュ・エントリ（キャッシュ・ラインとも呼ばれる）を含み、各キャッシュ・エントリは、その現在のキャッシュ・コヒーレンス・プロトコル状態に関する情報を含む、アドレス・タグ、対応したデータ、および状態情報を含んでいる。プロセッサ１４は、制御回路２９およびキャッシュ・コヒーレンス・プロトコルを実施する任意の回路を除いては、当業者に知られるように動作し、したがって、ここではさらに詳細には議論されないことを注記しておく。
【００３２】
ＭＭＵ４２は、本技術分野で知られるように、仮想アドレス（それらは、例えば、実行ユニット２５、ロード／記憶ユニット３３、および命令フェッチ・ユニット２７から受信されることが可能である）を物理アドレスに変換する。ＭＭＵ４２は、変換したアドレスをキャッシュ２８に提供する。つまり、ＭＭＵ４２は、物理アドレスに対応したメモリのページに対するページ属性と共に、物理アドレスを提供する。例えば、キャッシュ２８内のエントリは、メモリ２０の記憶位置に対応することが可能であり、メモリ２０は、ページと呼ばれる記憶単位を備えている。したがって、物理アドレス変換情報と共にＭＭＵ４２によって提供されるページ属性は、ＭＭＵ４２の記憶回路（又はプロセッサ１４内の他の場所）にプログラムされ、提供された物理アドレスを含んだ特定のページに対応することが可能である。一実施形態では、これらのページ属性は、ライト・スルー要求属性（Ｗ）を含むとともに、次の属性のうちのいずれか１つ、すなわちキャッシュ禁止（Ｉ）、メモリ・コヒーレンスが必要（Ｍ）（全体的に共有された（ＳＧ）とも称されることがある）、保護（Ｇ）、エンディアンネス（Ｅ）、およびユーザ定義可能（例えば、Ｕ０，Ｕ１，Ｕ２，Ｕ３）のうちのいずれか１つを含んでいる。例えば、一実施形態では、ＭＭＵ４２は、変換ルックアサイド・バッファ（ＴＬＢ）を備え、そのエントリは、これらの属性と共にアドレス変換を記憶し、したがって、プロセッサ１４が各ＴＬＢエントリに関連したページにおける記憶アクセスを行なう方法を制御する。一実施形態では、各ページのページ属性は、ＷおよびＭの両方を含み、ＷおよびＭ属性の各々は、互いに独立して設定されることができる。
【００３３】
典型的には、キャッシュ・コヒーレンスは、マルチマスタ・システムにおけるメモリ・コヒーレンスを可能にするようにサポートされる。コヒーレンスは、キャッシュ・コヒーレンス動作の使用にも拘わらず、維持されることが可能である。一実施形態では、これらのキャッシュ・コヒーレンス動作は、プロセッサ１４等のプロセッサに提供されるスヌープ要求（つまり、スヌープ無効要求）を含んでいる。一実施形態では、これらのスヌープ要求は、キャッシュ・コヒーレンス・マネージャ１８によってプロセッサ１４および１６の各々に提供される。これらのスヌープ無効要求は、プロセッサによって受信され、その結果、プロセッサは、スヌープ無効要求に対応したアドレスがキャッシュ内に記憶されているか否かを判断することができる。したがって、キャッシュ・コヒーレンス動作は、スヌープ・ルックアップを参照することが可能であり、キャッシュがスヌープ処理に関連したデータを含むか否かを判断するように、キャッシュにおけるルックアップが行なわれる。つまり、キャッシュ・コヒーレンス動作は、少なくとも１つのキャッシュが、スヌープされたバス・トランザクションのメモリ・アドレスに関連したデータを含むか否かを判断するために、データ処理システム（データ処理システム１０等）のうちの少なくとも１つのキャッシュを探索することを含むことが可能である。その後、キャッシュが、スヌープされたトランザクションに関連したデータ（スヌープ要求に対応したメモリ・アドレスに一致するエントリを含む）を含んでいる場合、プロセッサは、そのエントリに対する適切なコヒーレンス動作またはそのエントリの上書きを行なうことができる。一実施形態では、スヌープ無効コヒーレンス動作は、キャッシュ・コヒーレンス・プロトコルにおいて利用され、この一致するエントリが無効にされる。なぜならば、別のバス・マスタによって行なわれるスヌープされたトランザクションがそのアドレスに記憶されたデータを修正すると思われるからである。これに代えて、キャッシュ・コヒーレンス動作がキャッシュ・エントリの状態の変化を参照することができることを注記しておく。
【００３４】
図３は、修正済非コヒーレント状態（Ｍ）、無効状態（Ｉ）、未修正非コヒーレント状態（Ｎ）、および未修正コヒーレント状態（Ｃ）の４つの状態を有したキャッシュ・コヒーレンス・プロトコル１００を示している。この４つの状態のプロトコルでは、個別の移行および状態がコヒーレント書込みおよび非コヒーレント書込みに使用される。一実施形態では、キャッシュ・コヒーレンス・プロトコル１００は、コヒーレント状態間の一または複数の移行を規定するための制御値としてＭＭＵ４２によって提供されるＷページ属性を使用する。一実施形態では、キャッシュ・コヒーレンス・プロトコルは、コヒーレント・トラフィックに対するライト・スルー動作に依存し、非コヒーレント・データに対するコピーバック処理をサポートする。例えば、以下でさらに記述されるように、コヒーレント書込みは、ＩおよびＣの状態を利用し、ライト・スルー書込みとして行なわれる。非コヒーレント書込みは、Ｉ、ＮおよびＭ状態を利用し、コピーバック書込みとして行なわれる。
【００３５】
図３の状態図は、プロセッサ１４に関して記述される。つまり、一実施形態では、キャッシュ２８内の制御回路２９は、図３の状態図を実行する。キャッシュ２８における各キャッシュ・エントリは、キャッシュ・エントリの状態（Ｍ，Ｉ，ＮまたはＣ）を示すために一または複数の状態指標を含んでいる。（キャッシュ・エントリは、キャッシュ・ラインと称されることもあることを注記しておく。）図３に示されるように、状態１０２はＩ状態に対応し、状態１０４はＮ状態に対応し、状態１０８はＭ状態に対応し、状態１０６はＣ状態に対応している。キャッシュ・コヒーレンス・プロトコル１００に関して使用されるように、キャッシュ・エントリが「未修正」の場合、プロセッサ１４のキャッシュ２８におけるキャッシュ・エントリのデータは、それが割り付けられているので、メモリ２０におけるコピーに関して修正されていない。キャッシュ・エントリが「修正」される場合、それが割り付けられているので、プロセッサ１４のキャッシュ２８におけるキャッシュ・エントリのデータは、メモリ２０におけるコピーに関して修正されている。キャッシュ・エントリが「コヒーレント」である場合、キャッシュ２８におけるキャッシュ・エントリのデータは、メモリ２０、および同一のアドレス位置に対応したシステム１０における任意のキャッシュ（キャッシュ３０等）の任意の有効なエントリにおけるものと同一である。「非コヒーレント」は、他のキャッシュに対して非コヒーレントであることを参照している。つまり、キャッシュ・エントリが「非コヒーレント」である場合、キャッシュ２８におけるキャッシュ・エントリのデータは、メモリ２０の同一のアドレス位置に対応した、キャッシュ３０等の別のキャッシュの有効なエントリとは異なる値を有することが可能である。「非コヒーレント」が他のキャッシュに対して非コヒーレントであることを参照しているので、キャッシュ・エントリが「非コヒーレント」である場合、キャッシュ・エントリのデータは、メモリ２０におけるものと同一である場合があることを注記しておく。非コヒーレンスは、キャッシュ・コヒーレンス動作がメモリにおける特定のアドレス位置に対して行なわれていない場合に生じることがある。
【００３６】
コヒーレント・キャッシュ・エントリは、Ｃ状態またはＩ状態のいずれかである。コヒーレンスを要求しないキャッシュ・エントリは、Ｉ、ＮまたはＭ状態を想定することが可能である。修正済または共有の状態（ＭＥＳＩプロトコルにおいて使用されるような）がコヒーレント・キャッシュ・エントリに対してサポートされず、したがって、スヌープ・コピーバックまたは介入操作が要求されないことを注記しておく。非コヒーレント・キャッシュ・エントリは、依然として修正済の状態を想定していることがある。一実施形態では、コヒーレンス動作を要求するメモリ領域（メモリ２０内等）は、「メモリ・コヒーレンスが必要」（そのＭビットを１に設定する）および「ライト・スルーが必要」（そのＷビットを１に設定する）としてマーク付けされる。プロトコル１００は、バス・プロトコルと共に使用されることが可能であり、それは、例えばＡＭＢＡ  ＡＨＢまたはＡＸＩプロトコルなどのキャッシュ・コヒーレンス動作を包含またはサポートしないことを注記しておく。キャッシュ・コヒーレンスをサポートしないバス・プロトコルでは、ＭＥＳＩプロトコルを実施することができない。例えば、ＡＭＢＡ  ＡＨＢプロトコルに存在しない「アドレス・オンリー処理」を利用するＭＥＳＩプロトコルのＳ状態からＭ状態への移行を示す方法がないことがある。さらに、ＭＥＳＩキャッシュ・コヒーレンス処理をサポートしないそのようなバス・プロトコルは、ＭＥＳＩプロトコルにおけるＩ状態からＥ状態への移行を実行するために利用される「修正の意図を持った読出し」処理をサポートしていない。そのようなプロトコルに必要な他の種類の処理もまた、ＡＭＢＡ  ＡＨＢまたはＡＸＩバス・プロトコルによっては規定されない。したがって、一実施形態では、キャッシュ・コヒーレンス・プロトコル１００が、キャッシュ・コヒーレンスを現在サポートしていない既存のバス・プロトコルに重畳されることが可能であることを注記しておく。
【００３７】
図３を参照して、キャッシュ・エントリが無効状態であり、キャッシュ・ミスが生じて無効のキャッシュ・エントリへの割付けをもたらした場合、Ｗページ属性は、状態Ｎ（非コヒーレント状態）または状態Ｃ（コヒーレント状態）のどちらへ移行するかを判断するために使用される。キャッシュ・ミスが生じ、且つ、Ｗ＝０である場合（ライト・スルーがこのアドレスに対して行なわれていないことを示す）、キャッシュ・エントリの状態は、移行１１０を介して状態Ｉから状態Ｎに移行する。ライト・スルーがこのアドレスに対して行なわれないので、キャッシュ・エントリのデータは、コヒーレントであるとは保証されることができない。ライト・スルーが行なわれないので、このキャッシュ・エントリへの書込み処理は、システム相互接続１２には位置せず、したがって、その処理は、キャッシュ・コヒーレンス・マネージャ１９によって（または他のキャッシュによって）スヌープされることができない。したがって、コヒーレンス動作が行なわれないので、それは非コヒーレントと考えられる。キャッシュ・エントリが新しく割り付けられるので、そのデータは未修正であると考えられる。
【００３８】
しかしながら、キャッシュ・ミスが生じ、且つ、Ｗ＝１である場合（ライト・スルーがこのアドレスへの書込みに対して行なわれることを示す）、キャッシュ・エントリの状態は、移行１２８を介して状態Ｉから状態Ｃに移行する。ライト・スルーがこのアドレスへの書込みに対して行なわれるので、コヒーレンスが維持される。例えば、書込みミスのライト・スルーに対して、移行１２８の際に新しく割り付けられたキャッシュ・エントリに記憶されたデータもまた、システム相互接続１２を介してメモリ２０に提供される。読み取りミスのライト・スルーに対しては、新しく割り付けられたキャッシュ・エントリへの記憶用データは、システム相互接続１２を介してメモリ２０によってプロセッサ１４に提供される。したがって、ライト・スルーを行なう際に、新しく割り付けられたキャッシュ・エントリに記憶されたデータは、システム相互接続１２を介して提供され、それは、キャッシュ・コヒーレンス・マネージャ１８によって監視される。したがって、キャッシュ・コヒーレンス・マネージャ１８は、ライト・スルー処理に対応したシステム相互接続１２上のアドレスをスヌーピングすることによってキャッシュ・コヒーレンス動作を行なうことができる。例えば、キャッシュ・コヒーレンス・マネージャ１８は、プロセッサ１６にスヌープ無効要求を提供することができ、その結果、プロセッサ１６は、スヌープしたアドレスがキャッシュ３０においてヒットしたか否かを判断することができ、そうであれば、それを無効にする。
【００３９】
状態Ｃで一度、キャッシュ・エントリに対する任意の読出しヒットまたは書込みヒットは、キャッシュ・エントリを状態Ｃのままにする。書込みヒットの場合、ライト・スルーが行なわれ（アドレスに対するＷページ属性が設定されたので）、それは、コヒーレンスが維持されることを可能にする。つまり、ライト・スルーに際して、キャッシュ・コヒーレンス動作を行なうことができる。例えば、上述したように、キャッシュ・コヒーレンス・マネージャ１８は、プロセッサ１６へのスヌープ無効要求を生成することができ、その結果、コヒーレンスを維持することができる。キャッシュ・エントリ上のキャッシュ無効動作は、移行１３０を介してキャッシュ・エントリを状態Ｉに戻す。状態Ｃでは、キャッシュ・エントリのアドレスに関連したデータが別のプロセッサによって（プロセッサ１６によって、など）修正されるとき、プロセッサ１４は、キャッシュ・コヒーレンス・マネージャ１８から、スヌープ無効要求などのキャッシュ・コヒーレンス動作を受信することが可能であることも注記しておく。この場合、スヌープ無効要求は、プロセッサ１４におけるキャッシュ・エントリをヒットし、移行１２９を介してキャッシュ・エントリの状態を状態Ｉに移行し戻す。
【００４０】
さらに、キャッシュ・フラッシュ動作（それらは、フラッシュ・キャッシュ動作命令とも称されることがある）が、メモリ２０における記憶位置に対してプロセッサ１４または１６によってそれぞれ行なわれることが可能であり、それによって、キャッシュ２８またはキャッシュ３０内にある任意の修正済データでメモリ２０を更新する。一実施形態では、これらのキャッシュ・フラッシュ動作は、メモリ２０への任意の修正済データをフラッシュし、その後、キャッシュ・エントリを有効状態（つまり、無効なしのキャッシュ・フラッシュ動作）のままにするか、または、これに代えて、メモリ２０への任意の修正済データをフラッシュし、そして、このフラッシュを行なった後で、キャッシュ・エントリを無効状態（つまり、無効を伴うキャッシュ・フラッシュ動作）にするように、指定され得る。キャッシュ・フラッシュ動作は、キャッシュ内にあるアドレスに対応したデータの存在についての経験的知識なしに、または、そのデータを含んだキャッシュ・エントリの状態なしに、キャッシュにおけるルックアップに対してアドレスを提供する。したがって、一実施形態では、フラッシュ動作は、キャッシュ・エントリがいずれかの修正済データを有する場合、一致するキャッシュ・エントリがメモリに書き戻される動作である。つまり、キャッシュ・ラインまたはエントリがダーティ（ｄｉｒｔｙ）である場合、それはメモリ（例えば、メモリ２０）に書き戻される。修正済データがない場合、メモリへの書戻しは必要ではない。無効を伴ってまたは無効なしに、フラッシュを行なうことができることも注記しておく。
【００４１】
依然として状態Ｃを参照して、無効なしのキャッシュ・フラッシュ動作を行なう際、Ｗページ属性は、状態間をどのように移行するかを判断するために再びチェックされる。無効なしのキャッシュ・フラッシュ動作に際して、Ｗページ属性が０にクリアされた場合（例えば、メモリ２０における対応したページのＷページ属性をソフトウェアが修正する結果として）、キャッシュ・エントリ状態は、移行１３４を介して状態Ｎに移行する。つまり、キャッシュ・エントリは、無効ではないが（無効なしにフラッシュが行なわれるので）、ここでは、ライト・スルーはもはや行なわれない。このように、再び、コヒーレンスは保証されない。また、フラッシュが要求されるので、そのデータは、フラッシュ動作の完了時に未修正であることが分かる。無効を伴ってフラッシュが行なわれた場合、そのフラッシュ動作が行なわれた後で、キャッシュ・エントリが無効にされ、したがって、（移行１３０を介して）状態Ｉに移行し戻る。無効なしにフラッシュが行なわれた場合、キャッシュ・エントリは、フラッシュ動作の後も有効なままであり、状態（状態Ｃのままか、または、状態Ｎに移行）は、Ｗページ属性に基づいて判断される。
【００４２】
状態Ｎで一度、キャッシュ・エントリへの任意の読出しヒットが、キャッシュ・エントリを状態Ｎのままにする。キャッシュ・エントリのキャッシュ無効動作は、移行１１２を介してキャッシュ・エントリを状態Ｉに戻す。無効なしのキャッシュ・フラッシュ動作は、Ｗページ属性の値に依存して状態Ｃに移行させることが可能である。例えば、無効なしのキャッシュ・フラッシュ動作が行なわれ、且つ、Ｗページ属性が依然として０のままである場合、キャッシュ・エントリの状態は、状態Ｎのままである。無効なしのキャッシュ・フラッシュ動作が行なわれ、且つ、Ｗページ属性が今度は１である場合（例えばソフトウェアによって変更された）、キャッシュ・エントリの状態は、状態Ｎから状態Ｃに移行し、ここでは、フラッシュによって、データは未修正のままであり、また、今行なわれているライト・スルーによって、コヒーレンスは維持される。無効を伴うフラッシュが行なわれた場合、そのフラッシュ動作の後で、キャッシュ・エントリの状態は、（移行１１２を介して）Ｉに移行し戻す。状態Ｎでのキャッシュ・エントリへの書込みヒットの際、キャッシュ・エントリの状態は、移行１１４を介して状態Ｎから状態Ｍに移行する。したがって、キャッシュ・エントリは、ライト・スルーが行なわれないので、依然として非コヒーレントであるが、ここでは、それは、状態Ｉから状態Ｎへの移行１１０に際して割り付けられたので、修正されたと考えられる。
【００４３】
状態Ｍで一度、キャッシュ・エントリへの任意のヒットがキャッシュ・エントリを状態Ｍのままにする。無効なしのキャッシュ・フラッシュ動作が行なわれた場合、上述したように、メモリ（例えば、メモリ２０）へのコピーバックが行なわれ、キャッシュ・エントリは無効にされない。その後、Ｗページ属性に基づいて、キャッシュ・エントリは、状態Ｍから状態ＮまたはＣに移行する。その後、Ｗ＝０の場合、キャッシュ・エントリ状態は、移行１１６を介して状態Ｎに移行し戻され、ここでは、データは、（フラッシュ動作により）再び未修正であり、ライト・スルーは行なわれない（したがって、コヒーレンスは保証されない）。Ｗ＝１の場合、キャッシュ・エントリの状態は、移行１２６を介して状態Ｃに移行し戻され、ここでは、データは、（フラッシュ動作により）再び未修正であり、ライト・スルーが行なわれる（したがってコヒーレンスを維持される）。状態Ｍでは、無効を伴うフラッシュが行なわれた場合、上述したように、メモリへのコピーバックが行なわれ、キャッシュ・エントリが無効にされ、キャッシュ・エントリの状態は、移行１２４を介して状態Ｉに戻される。状態Ｍで置換動作がキャッシュ・エントリ上で行なわれる場合、修正済データは、まずメモリ２０にコピーし戻される。その後、キャッシュ・エントリのデータは、まず無効にされ（移行１２４を介して状態Ｉに移行する）、次に、上書きされる（割付けが有効に生じるので、Ｗページ属性の値に依存して状態ＮまたはＣへの移行をもたらす）。また、無効動作が行なわれる場合、キャッシュ・エントリの状態は、コピーバック動作を行なうことなしに、移行１２２を介して状態Ｍから状態Ｉに移行する。
【００４４】
したがって、キャッシュ・コヒーレンス・プロトコルがコヒーレントおよび非コヒーレント書込みに対して個別の移行および状態をどのように使用するかを評価することができる。一実施形態では、キャッシュ・コヒーレンス・プロトコル１００は、コヒーレント状態間の一または複数の移行を規定するために、制御値としてＭＭＵ４２によって提供されるＷページ属性を使用する。一実施形態では、キャッシュ・コヒーレンス・プロトコルは、コヒーレント・トラフィックに対するライト・スルー動作に依存し、非コヒーレント・データに対するコピーバック処理をサポートする。したがって、キャッシュ・コヒーレンス・プロトコル１００は、キャッシュ・コヒーレンス動作に対して提供しない標準バス・プロトコルと共に使用されることが可能である。
【００４５】
一実施形態では、キャッシュ・コヒーレンス・マネージャ１８は、キャッシュ・コヒーレンスが必要なバス・トランザクションの一部を選択することが可能である。つまり、一または複数の要因に基づいて、図４〜図９を参照して下で議論されるように、特定の種類のトランザクションがスヌープされるかまたはスヌープされず、したがって、キャッシュ・コヒーレンス動作をもたらすこともあれば、もたらさないこともある。さらに、一実施形態では、選択的にスヌープを行なうために使用される一または複数の要因は、ＡＭＢＡ  ＡＨＢまたはＡＸＩなどの既存の業界標準バス・プロトコルである。このように、追加の信号伝達機構または標準バス・プロトコルへの他の修正は必要ない。
【００４６】
一実施形態では、キャッシュ・コヒーレンス・マネージャ１８は、スヌープし、バス・トランザクションが単一のビート処理またはバースト処理であるか否かに基づいてキャッシュ・コヒーレンス動作を行なう。例えば、一実施形態では、スヌープおよびキャッシュ・コヒーレンス動作は、バス・トランザクションが単一のビート処理であるがバースト処理ではない場合に行なわれる。これは、プロセッサによって開始されたバーストが典型的にはコピーバック処理をする可能性があるからであり、したがって、キャッシュ・コヒーレンス動作は、これらのバースト処理には必要ではない。しかしながら、一実施形態では、処理がバースト処理であるが、プロセッサ（プロセッサ１４または１６等）によってではなく、むしろＤＭＡ４０によって開始される場合、典型的にはＤＭＡによって開始されたバースト処理がコピーバックを行なわないので、スヌープは依然として行なわれ、これは、キャッシュ・コヒーレンス動作が依然として必要である場合があることを意味している。したがって、一実施形態では、スヌープすべきか否かの判断は、両方の種類のバス・トランザクション、および、どのマスタまたはどの種類のマスタがバス・トランザクションを開始したかに基づくことが可能である。以下に記述されるように、他の要因または要因の組合せが、スヌープが行なわれるべきか否かを判断するために、キャッシュ・コヒーレンス・マネージャ１８または他のキャッシュ・コヒーレンス制御回路等によってシステム１０内で使用されることが可能である。一実施形態では、マスタ識別子（マスタＩＤ）は、どのマスタが処理を開始したか識別する各バス・トランザクションを与えられることを注記しておく。マスタ地位の判断は、転送アドレスの属性として開始マスタによってバス・トランザクションの一部として示されるか、または、他の方法で示されるか信号伝達されることが可能である。一実施形態では、バースト書込みアクセスが開始される場合、どのマスタがコヒーレンス動作を行なうかの判断は、システム１０のユーザによってプログラムで選択されることが可能である。一実施形態では、コヒーレンス動作が行なわれるべき一または複数のマスタを示すために、転送の種類（バーストもしくは非バースト、または１組の特定のバースト種類の中から選択）に基づいて、制御レジスタがシステム１０内に設けられることが可能である。
【００４７】
例としてＡＭＢＡ  ＡＨＢプロトコルを使用して、バースト情報は、８つの可能性のある種類の処理を符号化する３ビットのバス信号、ＨＢＵＲＳＴ［２：０］を使用して提供される。これらの符号化は図４に提供されている。例えば、ＨＢＵＲＳＴに対する「０００」の値は、単一の転送（つまり、単一のビート処理）を示している一方で、他の７つの値は、異なる種類のバースト処理を示している。一実施形態では、ＨＢＵＲＳＴの値が０００（単一の転送を示す）であることをキャッシュ・コヒーレンス・マネージャ１８が判断したとき、スヌープが行なわれる。しかしながら、ＨＢＵＲＳＴの値が０１０（４ビートのラップ・バーストを示す）、０１１（４ビートのインクリメント・バーストを示す）、１００（８ビートのラップ・バーストを示す）、１０１（８ビートのインクリメント・バーストを示す）、１１０（１６のビートラップ・バーストを示す）、または１１１（１６ビートのインクリメント・バーストを示す）であると判断された場合、スヌープは行なわれない。実施形態によっては、ＨＢＵＲＳＴの値が００１（無指定の長さのインクリメント・バーストを示す）である場合、スヌープは行なわれたり行なわれなかったりする。上で議論したように、スヌープすべきか否かの決定は、さらに、どのマスタまたはどの種類のマスタがバス・トランザクションまたは転送を開始したかに基づくことが可能である。
【００４８】
一実施形態では、スヌープすべきか否かの決定は、さらに、現在のアクセス（現在のバス・トランザクション）がキャッシュすることができるか否かによって特定される。例としてＡＭＢＡ  ＡＨＢプロトコルを依然として使用して、ＨＰＲＯＴ［３：０］信号は、バス・トランザクションのアクセス・アドレスを備え、また、例えば、転送がオペレーション・コードのフェッチまたはデータ・アクセスであるか、特権モードアクセスまたはユーザ・モード・アクセスであるかを示し、そして、ＭＭＵを備えたマスタに対して、現在のアクセスがキャッシュすることができるか否かを示す。ＨＰＲＯＴ［３：０］信号の符号化は、図５に示されている。例えば、ＨＰＲＯＴ［３］が０の値を有する場合、バス・トランザクションのアクセスはキャッシュすることができないので、スヌープは行なわれないが、その一方で、ＨＰＲＯＴ［３］が１の値を有する場合、バス・トランザクションのアクセスはキャッシュすることができるので、スヌープは行なわれる。したがって、上述した要因の使用に加えてまたはそれに代えて、ＨＰＲＯＴ信号は、スヌープが行なわれるべきか否かを判断するために使用されることも可能である。別の例の実施形態では、ＨＰＲＯＴ［２］が０の値を有する場合、バス・トランザクションのアクセスはバッファすることができないので、スヌープは行なわれない一方で、ＨＰＲＯＴ［２］が１の値を有する場合、バス・トランザクションのアクセスはバッファすることができるので、スヌープが行なわれる。幾つかの実施形態では、バス・アクセスを開始する特定のマスタに応じて、ＨＰＲＯＴビットの値は、コヒーレンス動作が行なわれるか否かを制御するためにプログラムで使用されることが可能である。したがって、上述した要因の使用に加えてまたはそれに代えて、ＨＰＲＯＴ信号は、処理を開始するマスタの識別の判断と関連して、随意に、スヌープすべきか否かを判断するために使用されることも可能である。例えば、システム１０のユーザは、ＨＰＲＯＴ［３］＝１である場合にマスタＸに対して、ＨＰＲＯＴ［２］＝１である場合にマスタＹに対して、ＨＰＲ０Ｔ［３］＝１およびＨＰＲＯＴ［２］＝０である場合にマスタＺに対して行なわれるコヒーレンス動作を達成するように、一または複数の制御レジスタまたはレジスタ・フィールドをプログラムすることが可能である。これに代えて、他の実現可能な制御の組合せが使用されることも可能である。
【００４９】
図６〜図９は、キャッシュ・コヒーレンス動作（例えば、スヌープ）が行なわれるべきか否かを判断するためのフローチャートの様々な例を示している。上で議論したように、キャッシュ・コヒーレンス動作は、他のキャッシュへのスヌープ要求（もしあれば）を、それらのキャッシュが次にそのスヌープ要求を処理するシステム１０内で生成することを含むことが可能である。一実施形態では、キャッシュ・コヒーレンス動作は、キャッシュ・エントリの状態の変更を含むことが可能である。一実施形態では、フローの各々は、キャッシュ・コヒーレンス・マネージャ１８によって実行されることが可能である。これに代えて、他のキャッシュ・コヒーレンス制御回路は、これらの機能のうちのいずれかを行ない、システム１０における任意の場所に存在することが可能である。一実施形態では、個々のキャッシュまたはキャッシュ制御回路は、図６〜図９に示される機能を行なうことが可能である。図６は、ブロック５０２から始まるフロー５００を示しており、ここでは、例えばプロセッサ１４、プロセッサ１６、ＤＭＡ４０、または他のマスタ２２等のバス・マスタによってバス・トランザクションが開始される。フローは判断ダイヤモンド５０４に進み、ここでは、書込み処理が行なわれているか否かが判断される。そうでなければ、フローは、ブロック５１４に進み、ここでは、キャッシュ・コヒーレンス動作は行なわれない。つまり、図６の例示の実施形態では、読出し処理はスヌープされない。判断ダイヤモンド５０４では、バス・トランザクションが書込み処理であると判断された場合、フローは判断ダイヤモンド５０６に進み、ここでは、バス・トランザクションが単一のビート（つまり、単一の転送）処理であるか否かが判断される。そうでなければ、フローは、ブロック５１４に進む。バス・トランザクションが単一のビート処理である場合、フローは、ブロック５１２に進み、ここでは、書込み処理のデータに対するキャッシュ・コヒーレンス動作が行なわれる。したがって、フロー５００では、バス・トランザクションが単一のビート書込み処理である場合にのみ、キャッシュ・コヒーレンス動作が行なわれる。
【００５０】
図７は、例えば、プロセッサ１４、プロセッサ１６、ＤＭＡ４０、または他のマスタ２２等のバス・マスタによってバス・トランザクションが開始されるブロック６０２から始まるフロー６００を示している。フローは判断ダイヤモンド６０４に進み、ここでは、書込み処理が行なわれているか否かが判断される。そうでなければ、フローは、ブロック６１４に進み、キャッシュ・コヒーレンス動作は行なわれない。つまり、図７の例示の実施形態では、読出し処理はスヌープされない。判断ダイヤモンド６０４では、バス・トランザクションが書込み処理であると判断された場合、フローは判断ダイヤモンド６０６に進み、ここでは、バス・トランザクションが単一のビート（すなわち、単一の転送）処理であるか否かが判断される。そうであれば、フローは、ブロック６１２に進み、ここでは、書込み処理のデータに対するキャッシュ・コヒーレンス動作が行なわれる。そうでなければ、フローは、ブロック６０８に進み、ここでは、その処理のマスタＩＤが判断される。つまり、上述したように、一実施形態では、マスタＩＤは、開始マスタを識別するために各バス・トランザクションを与えられる。次いで、フローは判断ダイヤモンド６１０に進み、ここでは、マスタＩＤがＤＭＡ４０等のＤＭＡを示すか否かが判断される。そうであれば、フローは、６１２ブロックに進み、ここでは、書込み処理のデータに対するキャッシュ・コヒーレンス動作が行なわれる。そうでなければ、フローは、ブロック６１４に進む。つまり、書込み処理がバースト書込み（つまり、判断ダイヤモンド６０６からの「ＮＯ」の分岐先）であっても、キャッシュ・コヒーレンス動作は、開始マスタがＤＭＡならば、依然として行なわれる。しかしながら、書込み処理がバースト書込みであり、且つ、開始マスタがＤＭＡでない場合、キャッシュ・コヒーレンス動作は行なわれない。なぜならば、この場合、バースト処理がコピーバック処理であると思われるからである。
【００５１】
図８は、例えば、プロセッサ１４、プロセッサ１６、ＤＭＡ４０、または他のマスタ２２等のバス・マスタによってバス・トランザクションが開始されるブロック７０２から始まるフロー７００を示している。フローは判断ダイヤモンド７０４に進み、ここでは、書込み処理が行なわれているか否かが判断される。そうでなければ、フローはブロック７１４に進み、ここでは、キャッシュ・コヒーレンス動作は行なわれない。つまり、図８の例示の実施形態では、読出し処理はスヌープされない。判断ダイヤモンド７０４では、バス・トランザクションが書込み処理であると判断された場合、フローは判断ダイヤモンド７０６に進み、ここでは、バス・トランザクションが単一のビート（つまり、単一の転送）処理であるか否かが判断される。そうであれば、フローはブロック７１２に進み、ここでは、書込み処理のデータに対するキャッシュ・コヒーレンス動作が行なわれる。そうでなければ、フローはブロック７０８に進み、ここでは、その処理のマスタＩＤが判断される。つまり、上述したように、一実施形態では、マスタＩＤは、開始マスタを識別するために各バス・トランザクションを与えられている。その後、フローは判断ダイヤモンド７１０に進み、ここでは、マスタＩＤが、選択されたマスタを示すか否かが判断される。そうであれば、フローはブロック７１２に進み、ここでは、書込み処理のデータに対するキャッシュ・コヒーレンス動作が行なわれる。そうでなければ、フローはブロック７１４に進む。一実施形態では、キャッシュ・コヒーレンス・マネージャ１８は、どのマスタがコヒーレンスを要求するかを示すコヒーレント・マスタ制御レジスタ１９を備えている。例えば、制御レジスタ１９は、キャッシュ・コヒーレンスが望まれるかまたは要求されるシステム１０におけるそれらのマスタのＩＤでプログラム可能であり得る。したがって、図８の判断ダイヤモンド７１０では、ブロック７０２でのバス・トランザクションを開始するマスタのマスタＩＤは、制御レジスタ１９と比較されることができ、それによって、開始マスタのマスタＩＤが制御レジスタ１９によって示された選択されたマスタに対応するか否かを判断する。これに代えて、他の回路または他の方法が、キャッシュ・コヒーレンス動作が行なわれるべきである開始マスタを識別するために使用されることが可能である。したがって、書込み処理がバースト書込み（つまり、判断ダイヤモンド６０６からの「ＮＯ」の分岐先）であっても、キャッシュ・コヒーレンス動作は、開始マスタがコヒーレント・マスタ制御レジスタ１９によって選択されたマスタならば、依然として行なわれることが可能である。代替の実施形態では、判断ステップ７１０が、システム１０内の他の所定の選択基準を利用して行なわれることが可能である。一実施形態では、この選択基準は、システム１０のユーザによってプログラムされることが可能である。
【００５２】
図９は、例えば、プロセッサ１４、プロセッサ１６、ＤＭＡ４０、または他のマスタ２２等のバス・マスタによってバス・トランザクションが開始されるブロック８０２から始まるフロー８００を示している。フローは判断ダイヤモンド８０４に進み、ここでは、書込み処理が行なわれているか否かが判断される。そうでなければ、フローはブロック８１４に進み、ここでは、キャッシュ・コヒーレンス動作は行なわれない。つまり、図９の例示の実施形態では、読出し処理はスヌープされない。判断ダイヤモンド８０４では、バス・トランザクションが書込み処理であると判断された場合、フローは判断ダイヤモンド８０６に進み、ここでは、バス・トランザクションのキャッシュ可能性フィールドまたは信号が読み出される。例えば、これは、上述したＨＰＲＯＴ［３］またはＨＰＲＯＴ［２］を参照することができる。その後、フローは判断ダイヤモンド８０８に進み、ここでは、キャッシュ可能性フィールドまたは信号が、キャッシュ可能な処理を示すか否かが判断される。そうでなければ、フローはブロック８１４に進む。そうであれば、フローは判断ダイヤモンド８１０に進み、ここでは、書込み処理が単一のビート書込みであるか否かが判断される。そうでなければ、フローはブロック８１４に進む。そうであれば、フローはブロック８１２に進み、ここでは、キャッシュ・コヒーレンス動作が書込み処理に対して行なわれる。つまり、図９の例では、キャッシュ・コヒーレンス動作は、キャッシュ可能な単一の書込み処理に対してのみ行なわれる。つまり、バースト処理は、例えば、システム相互接続１２のバス・プロトコルに応じて与えられる信号によってキャッシュ可能でない処理として示される任意の処理もそうであるように、キャッシュ・コヒーレンス動作をもたらさない。代替の実施形態では、判断ステップ８０８は、図８のステップ７０８および７１０によって行なわれる判断と同様の処理を開始するマスタを識別する判断ステップの後に続くことが可能である。一実施形態では、この判断の結果は、キャッシュ・コヒーレンス動作がバス・トランザクションに対して行なわれるべきか否かを判断するさらなる要因として作用することが可能である。
【００５３】
したがって、キャッシュ・コヒーレンス動作（例えば、スヌープ）が行なわれるか否かを判断するために、単独でまたは互いに様々な組合せで、種々多様な要因がどのように使用されることがあるかを認識することができる。キャッシュ・コヒーレンス動作のこの選択的な動作は、例えば、既存の標準バス・プロトコルを使用して実行されることが可能である。
【００５４】
本発明を実施する装置が、大部分は、当業者に知られる電子部品および回路からなるので、回路詳細は、本発明の基本的概念についての理解および認識のために、および、本発明の教示を不明瞭にしたり混乱させたりしないために、上に例示したような必要と考えられるものよりも広い範囲では説明されない。
【００５５】
本発明は、比導電率型または電位の極性に関して記述されたが、当業者は、比導電率型および電位の極性が逆にされることがあることを認識する。
さらに、本記述および特許請求の範囲における用語「前」、「後」、「上」「下」、「上側」「下側」など（もしあれば）、説明の目的のために使用されるものであって、必ずしも恒久的な相対的位置について記述するためのものではない。そのように使用される用語は、適切な状況下では置換可能であり、その結果、ここで記述される本発明の実施形態は、例えば、ここで例示されたものまたは記述されたもの以外の他の配置で実施されることができるものと理解される。
【００５６】
ここで使用される用語「プログラム」は、コンピュータ・システム上で実行するように設計された一連の命令として定義される。プログラムまたはコンピュータ・プログラムは、サブルーチン、関数機能、手順、オブジェクト方法、オブジェクト実施、実行可能なアプリケーション、アプレット、サーブレット、ソース・コード、オブジェクト・コード、共有ライブラリ／ダイナミック・ロード・ライブラリ、および／またはコンピュータ・システム上で実行するように設計された他の一連の命令を含むことが可能である。
【００５７】
上記の実施形態のうちの幾つかは、適宜状況に合わせて、種々多様な情報処理システムを使用して実施されることが可能である。例えば、図１およびその議論は、典型的な情報処理アーキテクチャについて記述しているが、この典型的なアーキテクチャは、本発明の様々な態様についての議論の際に有用な参照を単に提供するために示されている。勿論、そのアーキテクチャの記述は、議論の目的のために簡略化されており、それは、本発明に従って使用されることが可能である多くの異なる種類の適切なアーキテクチャの単に１種類である。当業者は、ロジック・ブロック間の境界が単に例示であり、その代替の実施形態がロジック・ブロックまたは回路要素を結合するか、様々なロジック・ブロックまたは回路要素に機能の代替の分解を課すことが可能であることを認識する。
【００５８】
このように、ここで図示されるアーキテクチャが単に典型例であり、実際には、同一の機能を達成する多くの他のアーキテクチャを実施することができることが理解される。抽象的な意味でで、しかしながら依然として有限の意味で、同一の機能を達成する構成要素の任意の配置は、所望の機能が達成されるように有効に「関連付けられる」。したがって、特定の機能を達成するためにここで組み合わせられた任意の２つの構成要素は、互いに「関連付けられる」ものと見なされることができ、その結果、所望の機能は、アーキテクチャまたは中間構成要素に関係なく、達成される。同様に、そのように関連付けられた任意の２つの構成要素は、所望の機能を達成するために、互いに「操作可能に接続される」または「操作可能に結合される」ものとして見られることもできる。
【００５９】
さらに、例えば、一実施形態では、システム１０の図示の要素は、単一の集積回路上にまたは同一の装置内に配置された回路である。これに代えて、システム１０は、互いに相互接続された任意の数の個別の集積回路または個別の装置を備えることが可能である。例えば、メモリ２０は、プロセッサ１４および１６として同一の集積回路上に、または、個別の集積回路上に配置されるか、または、システム１０の他の要素から個別に分離された別の周辺機器またはスレーブ内に配置されることが可能である。他のスレーブ２４およびＩ／Ｏ回路２６は、個別の集積回路または装置上に配置されることが可能である。さらに、例えば、システム１０またはその一部は、物理的な回路または該物理的な回路に変換可能な論理的表現のソフトもしくはコード表現であることが可能である。そのため、システム１０は、任意の適切な種類のハードウェア記述言語で具現化されることが可能である。
【００６０】
さらに、当業者は、上述した動作の機能間の境界が単に実例であることを認識する。複数の動作の機能は、単一の動作に組み合わせられることが可能であり、および／または、単一の動作の機能は、追加の動作に分散されることが可能である。さらに、代替の実施形態は、特定の動作の複数の例を含むことが可能であり、動作の順序は、様々な他の実施形態において変更されることが可能である。
【００６１】
ここで記述されたソフトウェアのすべてまたは幾つかは、例えば、メモリ３５または他のコンピュータ・システム上の他の媒体等のコンピュータ読取り可能な媒体からシステム１０の要素を受信することが可能である。そのようなコンピュータ読取り可能な媒体は、システム１０等の情報処理システムに恒久的に取外し可能にまたは遠隔に結合されることが可能である。コンピュータ読取り可能な媒体は、幾つか例を挙げると、例えば、限定なしに、ディスクおよびテープ記憶媒体を含む磁気記憶媒体；コンパクトディスク媒体（例えば、ＣＤ−ＲＯＭ、ＣＤ−Ｒなど）等の光記憶媒体およびデジタル・ビデオ・ディスク記憶媒体；ＦＬＡＳＨメモリ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭなどの半導体ベースのメモリ・ユニットを含む不揮発性メモリ記憶媒体；強磁性デジタル・メモリ；ＭＲＡＭ；レジスタ、バッファまたはキャッシュ、メイン・メモリ、ＲＡＭなどを含む揮発性記憶媒体；コンピュータ・ネットワーク、ポイント・ツー・ポイント通信機器および搬送波送信媒体を含むデータ伝送媒体、のうちの任意のものを含むことが可能である。
【００６２】
一実施形態では、システム１０は、パーソナル・コンピュータ・システム等のコンピュータ・システムである。他の実施形態は、異なる種類のコンピュータ・システムを含むことが可能である。コンピュータ・システムは、一または複数のユーザに対して独立した演算能力を与えるように設計されることができる情報処理システムである。コンピュータ・システムは、多くの形態で表されることがあり、メインフレーム、ミニコンピュータ、サーバ、ワークステーション、パーソナル・コンピュータ、ノートパッド、携帯情報端末、コンピュータ・ゲーム、自動車および他の内蔵システム、携帯電話および様々な他の無線装置を含むが、これらに限定されるものではない。典型的なコンピュータ・システムは、少なくとも１つの処理装置、関連するメモリ、および多数の入力／出力（Ｉ／Ｏ）装置を備えている。
【００６３】
コンピュータ・システムは、プログラムに従って情報を処理し、Ｉ／Ｏ装置を介して結果としての出力情報を生成する。プログラムは、特定のアプリケーション・プログラムおよび／またはオペレーティング・システム等の命令のリストである。コンピュータ・プログラムは、典型的には、コンピュータ読取り可能な記憶媒体上で内部に記憶されるか、または、コンピュータ読取り可能な送信媒体を介してコンピュータ・システムに送信される。コンピュータ・プロセスは、典型的には、実行（ラン）プログラムまたはプログラムの一部、現在のプログラム値および状態情報、ならびにそのプロセスの実行を管理するためにオペレーティング・システムによって使用されるリソースを含んでいる。親処理は、親処理の全体的な機能を行なうのを支援するために、他の子処理を生じさせることが可能である。親処理が、特に、該親処理の全体的な機能の一部を行なうために子処理を生じさせるので、子処理（および孫処理など）によって行なわれる機能は、親処理によって行なわれるように場合によっては記述されることがある。
【００６４】
本発明は、ここでは特定の実施形態に関して記述されているが、様々な改変および変更が、下の特許請求の範囲で述べられるような本発明の範囲から逸脱することなしになされることができる。したがって、本明細書および図面は、限定的な意味ではなく、むしろ実例的な意味とみなさるべきであり、すべてのそのような改変は、本発明の範囲に含まれるものとして意図されている。特定の実施形態に関してここで記述される如何なる恩恵、利点、または問題に対する解決策も、いずれかまたはすべての請求項の重大な、要求された、本質的な特徴または要素として解釈されるようには意図されていない。
【００６５】
ここで使用される用語「結合」は、直接的な結合または機械的な結合に限定されるようには意図されていない。
さらに、ここで使用される用語「ａ」または「ａｎ」は、１つまたは１以上として定義される。また、特許請求の範囲での「少なくとも１つ」および「一または複数」などの導入句の使用は、不定冠詞「ａ」または「ａｎ」による別の請求項要素の導入が、同一の請求項が導入句「一または複数」または「少なくとも１つ」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、１つだけそのような要素を含んだ発明への導入請求項要素を含んだ任意の特定の請求項を限定することを意味するように解釈されるべきではない。同じことが定冠詞の使用にも該当する。
【００６６】
特に述べない限り、用語「第１」および「第２」は、そのような用語が記述する要素間の任意の識別に使用される。このように、これらの用語は、そのような要素の時間的または他の優先順位を示すようには必ずしも意図されていない。
【図１】
0005583660.tif 000002
【図２】
0005583660.tif 000003
【図３】
0005583660.tif 000004
【図４】
0005583660.tif 000005
【図５】
0005583660.tif 000006
【図６】
0005583660.tif 000007
【図７】
0005583660.tif 000008
【図８】
0005583660.tif 000009
【図９】
0005583660.tif 000010