(57)【要約】【課題】この発明は、データ値のキャッシュコピーを含むコヒーレント多重処理システムにおいて、一貫性維持を必要とするデータ値を格納するキャッシュメモリがアクティブ状態であって、プロセッサコア自体の動作を必要とせずにメモリアクセス管理ユニットが一貫性管理動作を行う間、プロセッサコアをパワーダウンして非アクティブ状態にすることにより、一貫性を維持する能力と共に節電機能を実現する。【解決手段】コヒーレント多重処理に基づいて動作する複数のプロセッサコアを含む多重処理システムにおいて、それぞれのコアはコヒーレントメモリ領域内のデータ値のローカルコピーを格納するキャッシュメモリを含んでいる。それぞれのプロセッサコアを節電モードすなわち非動作状態に置き、キャッシュメモリを一貫性管理要求に応答可能な状態に置くことにより、システムは全体として動作を持続し、一貫性を管理し続ける。【選択図】図５
2005025726.tif 000002
【特許請求の範囲】
【請求項１】
コヒーレントメモリ領域へのアクセスを共有するコヒーレント多重処理モードでそれぞれのデータ処理動作を実行する少なくとも二つのプロセッサコアを含む複数のプロセッサコアと、
前記複数のプロセッサコアに接続され、前記コヒーレントメモリ領域からのデータ値の少なくとも一つのキャッシュコピーに関する一貫性管理動作を実行するメモリアクセス制御装置と、を含むデータ装置処理であって、
前記コヒーレント多重処理モードで動作する前記プロセッサコアの少なくとも一つはキャッシュメモリに接続され、前記キャッシュメモリに接続された前記プロセッサコアが非アクティブ節電状態にあるとき、前記メモリアクセス管理ユニットから発行される一貫性管理動作に対するサービスのために前記キャッシュメモリがアクティブ状態を維持するデータ処理装置。
【請求項２】
前記非アクティブ節電状態では、前記キャッシュメモリと接続される前記プロセッサコアがクロックされない請求項１記載の装置。
【請求項３】
前記メモリアクセス管理ユニットからのコピー一貫性管理要求に前記キャッシュメモリが応答して前記キャッシュメモリ中のデータ値のコピーを戻す請求項１記載の装置。
【請求項４】
前記メモリアクセス管理ユニットからの状態変化一貫性管理要求に前記キャッシュメモリが応答して前記キャッシュメモリ中のデータ値に関する状態値を変化させる請求項１記載の装置。
【請求項５】
前記キャッシュメモリ中のデータ値が不正（ｄｉｒｔｙ）データである場合、前記メモリアクセス管理ユニットからの適正（ｃｌｅａｎ）な一貫性管理要求に前記キャッシュメモリが応答して前記不正データ値を主メモリに戻す請求項１記載の装置。
【請求項６】
前記非アクティブ節電状態のときに割込み信号に応答して前記プロセッサコアをアクティブ電源状態に戻す請求項１記載の装置。
【請求項７】
前記キャッシュメモリが前記アクティブ状態を維持している間に前記プロセッサコアを非アクティブ節電状態にするために割込み待ち命令を実行する請求項１記載の前記装置。
【請求項８】
前記コヒーレント多重処理モードで動作する前記プロセッサコアの各々をそれぞれのキャッシュメモリと接続した請求項１記載の装置。
【請求項９】
前記複数のプロセッサコアと、前記メモリアクセス管理ユニットと、前記キャッシュメモリとを含む集積回路を有する請求項１記載の装置。
【請求項１０】
コヒーレントメモリ領域へのアクセスを共有するコヒーレント多重処理モードで動作する少なくとも２つのプロセッサコアを含む複数のプロセッサコアがそれぞれデータ処理動作を実行するステップと、
前記複数のプロセッサコアに接続されるメモリアクセス制御装置を使用して前記コヒーレントメモリ領域から得られたデータ値の少なくとも一つのキャッシュコピーに関して一貫性管理動作を実行するステップとを含み、
前記コヒーレント多重処理モードで動作する前記プロセッサコアの少なくとも一つはキャッシュメモリに接続され、前記キャッシュメモリに接続された前記プロセッサコアが非アクティブ節電状態にあるとき、前記メモリアクセス管理ユニットによる一貫性管理動作に対するサービスのために前記キャッシュメモリがアクティブ状態を維持するデータ処理方法。
【請求項１１】
前記非アクティブ節電状態では、前記キャッシュメモリと接続される前記プロセッサコアがクロックされない請求項１０記載の方法。
【請求項１２】
前記メモリアクセス管理ユニットからのコピー一貫性管理要求に前記キャッシュメモリが応答して前記キャッシュメモリ中のデータ値のコピーを戻す請求項１０記載の方法。
【請求項１３】
前記メモリアクセス管理ユニットからのステータス変更一貫性管理要求に前記キャッシュメモリが応答して前記キャッシュメモリ中のデータ値に関連する状態値を変更する請求項１０記載の方法。
【請求項１４】
前記キャッシュメモリ中のデータ値が不正データである場合、前記メモリアクセス管理ユニットからの適正な一貫性管理要求に前記キャッシュメモリが応答して前記不正データ値を主メモリに戻す請求項１０記載の方法。
【請求項１５】
前記非アクティブ節電状態のときに割込み信号に応答して前記プロセッサコアをアクティブ電源状態に戻す請求項１０記載の方法。
【請求項１６】
前記キャッシュメモリが前記アクティブ状態を維持している間に前記プロセッサコアを非アクティブ節電状態にするために割込み待ち命令を実行する請求項１０記載の前記方法
【請求項１７】
前記コヒーレント多重処理モードで動作する前記プロセッサコアの各々をそれぞれのキャッシュメモリと接続した請求項１０記載の方法。
【請求項１８】
前記複数のプロセッサコアと、前記メモリアクセス管理ユニットと、前記キャッシュメモリとを単一集積回路の一部とする請求項１０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はデータ処理システムに関する。この発明は特に、コヒーレントメモリ領域へのアクセスを共有して、それぞれのデータ処理動作を実行する複数のプロセッサコアを含むデータ処理システムに関する。
【背景技術】
【０００２】
（従来技術の説明）
コヒーレントメモリ領域へのアクセスを共有して、コヒーレント多重処理モードで動作する二つ以上のプロセッサコアを含むデータ処理システムが知られている。そのようなシステムでは、所望の総合的処理結果を得るために、それぞれのデータ処理動作を異なるプロセッサコアで並列に実行する。
【０００３】
コヒーレント多重処理システムの例としては、ＩＢＭ３７０システムとＳＰＡＲＣマルチプロセッサシステムがある。これらコヒーレント多重処理システムは高性能システムであって、電力効率や電力消費量は重視されず、最高の処理速度を得ることを主目標としている。
【０００４】
コヒーレント多重処理システムでは、異なるプロセッサコアが保持するデータ値のキャッシュコピー間の一貫性管理（ｍａｎａｇｍｅｎｔ  ｏｆ  ｃｏｈｅｒｅｎｃｙ）が重要な課題である。プロセッサコアに結合されたメモリアクセス制御装置が知られている。この装置は、コヒーレント多重処理システム内のどこかにより新しいバージョンのデータがあってそちらを使うべきときに、誤まってプロセッサコアが古いローカルキャッシュデータ値を使用するような状況を避けるために一貫性管理動作をする。
【発明の開示】
【０００５】
（発明の概要）
この発明の一側面によるデータ処理装置は、
コヒーレントメモリ領域へのアクセスを共有するコヒーレント多重処理モードでそれぞれのデータ処理動作を実行する少なくとも二つのプロセッサコアを含む複数のプロセッサコアと、
前記複数のプロセッサコアに接続され、前記コヒーレントメモリ領域からのデータ値の少なくとも一つのキャッシュコピーに関する一貫性管理動作を実行するメモリアクセス制御装置と、を含むデータ処理装置であって、
前記コヒーレント多重処理モードで動作する前記プロセッサコアの少なくとも一つはキャッシュメモリに接続され、前記キャッシュメモリに接続された前記プロセッサコアが非アクティブ節電状態にあるとき、前記メモリアクセス管理ユニットから発行される一貫性管理動作に対するサービスのために前記キャッシュメモリがアクティブ状態を維持するデータ処理装置である。
【０００６】
この発明は、データ値のキャッシュコピーを含むコヒーレント多重処理システムにおいて、一貫性維持を必要とするデータ値を格納するキャッシュメモリがアクティブ状態であって、プロセッサコア自体のアクティブ状態の維持を要することなくメモリアクセス管理ユニットが一貫性管理動作を行う間、プロセッサコアをパワーダウンして非アクティブ状態にすることにより、一貫性を維持する能力と共に節電機能を実現するという利点をもたらす。この手法は、関連プロセッサコアをパワーダウンして非アクティブ状態にしたときにキャッシュメモリもパワーダウンして非アクティブ状態する一般的な習慣とは逆である。キャッシュへの電力供給を維持しているとキャッシュのフラッシュ動作が不要になるので、コアのパワーダウンが速くなり、キャッシュされたメモリへの他のコアのアクセスが比較的速くなり、比較的遅い主記憶装置アクセスが避けられるので、コアのウェークアップ時に所要データがまだキャッシュされていて、比較的遅いリフィル（ｒｅｆｉｌｌ）が不要になる確率が高いという利点がある。
プロセッサコアを非アクティブ状態にする方法として、クロックのゲート制御が便利である。
【０００７】
プロセッサコアのパワーダウン中にキャッシュメモリによるサポートが必要な一貫性管理動作には、様々な形態がある。この発明の好ましい実施例では、これらの一貫性管理動作は、キャッシュメモリに格納されているデータ値のコピーのメモリアクセス管理ユニットへの返送を開始するためにコピー一貫性管理要求と、キャッシュメモリに格納されているデータ値に関連する状態値を変更する役割を持つメモリアクセス管理ユニットからのステータス変更一貫性管理要求と、キャッシュに格納されている不正（ｄｉｒｔｙ）値の主コヒーレントメモリへのフラッシングを開始するための適正（ｃｌｅａｎ）一貫性要求とが使われる。
【０００８】
プロセッサコアが非アクティブ状態に入ることによる節電は有利であるが、さらに、プロセッサコアのアクティブ状態への戻りを迅速かつ簡単にすることが重要であり、好ましい実施例において、プロセッサコアは、割込み信号の受信に応答して非アクティブ節電状態からアクティブ状態に戻る。
【０００９】
発明の方法は、複数プロセッサコアの一部のプロセッサコアだけが関連キャッシュメモリを備えていて、プロセッサコアのパワーダウン時にそれらのキャッシュメモリがアクティブ状態を維持する場合に有用であるが、特に、すべてのプロセッサコアが関連のキャッシュメモリを備えていて、関連処理コアの非アクティブ時にすべてのキャッシュメモリがアクティブ状態を維持するようなシステムに適している。
【００１０】
この方法は、プロセッサコア、キャッシュメモリ、メモリアクセス制御ユニット等が異なる集積回路上または集積回路の組み合わせで形成されるシステムで実施可能であるが、特に、これらの要素が単一の集積回路上に形成される場合に適している。
【００１１】
別の側面として、この発明はデータ処理方法を提供する。この方法は、
コヒーレントメモリ領域へのアクセスを共有するコヒーレント多重処理モードで動作する少なくとも２つのプロセッサコアを含む複数のプロセッサコアがそれぞれデータ処理動作を実行するステップと、
前記複数のプロセッサコアに接続されるメモリアクセス制御装置を使用して前記コヒーレントメモリ領域から得られたデータ値の少なくとも一つのキャッシュコピーに関して一貫性管理動作を実行するステップとを含み、
前記コヒーレント多重処理モードで動作する前記プロセッサコアの少なくとも一つはキャッシュメモリに接続され、前記キャッシュメモリに接続された前記プロセッサコアが非アクティブ節電状態にあるとき、前記メモリアクセス管理ユニットによる一貫性管理動作に対するサービスのために前記キャッシュメモリがアクティブ状態を維持する。
【００１２】
この発明に関する上記およびその他の目的、特徴、利点は、添付図面にしたがって記述する以下の詳細な実施例説明で明らかになる。
【実施例】
【００１３】
図１は複数のマイクロプロセッサコア４、６、８を含む集積回路２を示しており、各マイクロプロセッサコアはそれぞれ関連キャッシュメモリ１０、１２、１４を含む。プロセッサコア４、６、８は、メモリ管理アクセスユニット１６（スヌープ（ｓｎｏｏｐ）制御ユニットとも呼ばれる）に繋がるそれぞれのメモリバスＡＨＢ、ＣＣＢに接続される。一つのプロセッサ４には、プライベート周辺装置としての周辺装置１８が接続される。
【００１４】
集積回路２は、複数のマスターＡＨＢポートの１つを介してメモリ２０に接続される。メモリ２０はコヒーレント共有領域２２を含んでいる。メモリは、二つ以上のプロセッサがアクセスするときに非コヒーレント共有メモリとして働くように構成され、例えば、一貫性制御なしで汎用のプロセッサコアと専用ＤＳＰコアが共通のメモリ領域へのアクセスを共有する。コヒーレント共有メモリにおいて、メモリのアクセスと管理を行う機構は、そのコヒーレント共有領域内の記憶域に対する読み書きが関連データ値の現在のかつ最新値で行われることを保証する。これが、コヒーレント共有メモリと非コヒーレント共有メモリの違いである。したがって、コヒーレント共有メモリでは、あるプロセッサコアがコヒーレント共有領域のデータ値を変更すると、別のプロセッサコアがそのデータ値にアクセスした場合に、最新の更新データ値が読み出される。また、コヒーレントメモリ領域２２のデータ値への書き込みを行うと、他の場所に格納されているそのデータ値のコピーも強制的にある程度まで変更され、更新前のコピーは不適切な使用を防止するための無効マーク付けが保証される。
【００１５】
図１のシステムでは、スヌープ制御ユニット１６はメモリ２０、特にコヒーレント共有メモリ領域２２へのアクセス管理を受け持つ。スヌープ制御ユニット１６は、コヒーレント多重処理モードで動作中のプロセッサコア４、６の内、どのプロセッサコアがキャッシュメモリ１０、１２のコヒーレントメモリ領域２２からのデータ値のローカルコピーを保持しているかを監視する。一貫性管理自体は周知の技術である。この技術に関する記述は、例えばｔｈｅ  Ｗｅｓｔｅｒｎ  Ｒｅｓｅａｒｃｈ  Ｌａｂｏｒａｔｏｒｙ  Ｒｅｓｅａｒｃｈ  Ｒｅｐｏｒｔ  ９５／７に掲載された“Ｓｈａｒｅ  Ｍｅｍｏｒｙ  Ｃｏｎｓｉｓｔｅｎｃｙ  Ｍｏｄｅｌｓ：  Ａ  Ｔｕｔｏｒｉａｌ”ｂｙ  Ｓａｒｉｔａ  Ｖ．  Ａｄｖｅ  ａｎｄ  Ｋｏｕｒｏｓｈ  Ｇｈａｒａｃｈｏｒｌｏｏ；  Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｗｉｓｃｏｎｓｉｎ  −  Ｍａｄｉｓｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅｓ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ／９０２  Ｄｅｃｅｍｂｅｒ  １９８９；“Ｗｅｅｋ  Ｏｒｄｅｒｉｎｇ  −  Ａ  Ｎｅｗ  Ｄｅｆｉｎｉｔｉｏｎ  Ａｎｄ  Ｓｏｍｅ  Ｉｎｄｉｃａｔｉｏｎｓ”ｂｙ  Ｓａｒｉｔａ  Ｖ．  Ａｄｖｅ  ａｎｄ  Ｍａｒｋ  Ｄ  Ｈｉｌｌ；“Ａｎ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  Ｏｆ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ  Ｌｉｎｕｘ”ｂｙ  Ａｌａｎ  Ｃｏｘ，  １９９５等に記述されている。コヒーレント多重処理自体は確立した技術であるが、ハードウェアの複雑さの解消や、下位互換性（ｂａｃｋｗａｒｄ  ｃｏｍｐａｔｉｂｉｌｉｔｙ）、構成の柔軟性に関する重要な課題が残されている。
【００１６】
図２はプロセッサコア４、６、８とスヌープ制御ユニット１６との間のメモリバスを詳細に示す。特に、このメモリバスは一貫性制御バス（ＣＣＢ）と並列なＡＨＢバス（ＡＭＢＡ  ハイパフォーマンスバス）で形成される。ＡＨＢバスは、英国ケンブリッジのＡＲＭ社からの資料に記載された周知の標準形式である。このＡＨＢバスは、ユニプロセシング（または、共有非コヒーレントメモリにアクセスするコアやＤＳＰなどの非コヒーレント多重処理）実行用のプロセッサコアと共に動作する機能を持ったユニプロセシングバス（ｕｎｉ−ｐｒｏｃｅｓｓｉｎｇ  ｂｕｓ）である。ＡＨＢバスにはコヒーレント多重処理の機能がない。システムのコヒーレント多重処理を利用しない条件において、図１に示すような周辺装置１８などのプライベート周辺装置は、変更なしでＡＨＢバスに接続することができる。これは、既存の周辺機器設計との下位互換性が得られて好都合である。
【００１７】
一貫性制御バスＣＣＢは、プロセッサコア４、６とスヌープ制御ユニット１６との間に複数の通信チャンネルを形成すると考えることができる。特に、コアは一貫性要求信号、コアステータス信号、コアサイドバンド信号を生成することが可能であり、これらの信号はプロセッサコア４、６からスヌープ制御ユニット１６へ送られる。スヌープ制御ユニット１６は一貫性コマンドを出力し、各プロセッサコア４、６へ送る。
【００１８】
特にＣＣＢは、要求されているメモリアクセスを特徴付ける追加情報をコア４、６からスヌープ制御装置１６に供給する際にＡＨＢ上の信号値を増大させるために使用され、そのメモリアクセス要求に付された一貫性に関する指示内容（ｃｏｈｅｒｅｎｃｙ  ｉｍｐｌｉｃａｔｉｏｎｓ）がスヌープ制御装置１６によって取扱われる。例えば、コヒーレント多重処理コア４、６に関連するキャッシュメモリ１０、１２のライン・フィル・リード要求を増強することにより、それが単純なライン・フィル要求か、それともライン・フィル及び廃棄要求（ｉｎｖａｌｉｄａｔｅ  ｒｅｑｕｅｓｔ）であるかを表わすことが可能であり、後者であれば、スヌープ制御ユニット１６はどこか別の場所に保持されている当該データ値のコピーを廃棄する。同様に、異なるタイプの書き込み要求信号についてもＣＣＢ上の一貫性要求信号によって区別し、スヌープ制御回路１６で処理することができる。
【００１９】
コアステータス信号は一貫性に関連する情報をコアからスヌープ制御ユニットへ送る。この信号は例えば、特定のコアがコヒーレント多重処理モードで動作しているか否か、スヌープ制御ユニット１６から一貫性コマンドを受信可能状態か否か、スヌープ制御ユニット１６から要求されているデータ値を保持しているか否かを示す信号である。コアからＣＣＢを介してスヌープ制御ユニット１６に渡されるコアサイドバンド信号（ｃｏｒｅ  ｓｉｄｅｂａｎｄ  ｓｉｇｎａｌ）は、コアから送られるデータが現在有効なデータであってサンプリング可能であることを示す信号や、送信中のデータが「不正」（ｄｉｒｔｙ）であり、その主記憶位置及び他の適切な位置に書き戻す必要があることを示す信号、当該データが退避（ｅｖｉｃｔｉｏｎ）書き込みバッファの中に入っていてコアのキャッシュメモリの中にもはや存在しないことを示す信号などである。スヌープ制御ユニット１６からプロセッサコア４、６に渡されたスヌープ制御ユニット一貫性コマンドは、スヌープ制御ユニット１６の命令のもとでプロセッサコア４、６によって実行される一貫性管理に関する動作を指定するコマンドを含む。例えば、プロセッサコア４、６のキャッシュメモリ１０、１２に保持されているデータ値に関連する状態値を強制変更する命令により、使用される一貫性プロトコルにしたがって、その状態を修正状態または専有状態から無効状態または共有状態に変えることができる。その他に、現在のデータ値のコピーをスヌープ制御ユニット１６へ送るようにプロセッサコア４、６に命令するコマンドがあり、これは、そのプロセッサコアから、メモリ読み出し要求に対するサービスを実行する別のプロセッサコアに転送される。その他に、例えばクリーンコマンドがある。
【００２０】
図３は発明の実施例による集積回路２の一部を示す。集積回路２はメモリアクセス制御ユニット１６（スヌープ制御ユニットまたはメモリ管理アクセス装置と呼ばれることもある）、メモリ２０、複数のプロセッサコア４、６を含む。プロセッサコアは、非コヒーレント処理モードかコヒーレント多重処理モードのいずれかで動作するように設定可能なプロセッサコア４を含んでいる。他方のプロセッサコア（図３では一部のみ図示）は、マルチプロセッサコアまたは非コヒーレントプロセッサコア、あるいは、いずれの動作にも設定可能なプロセッサ４のようなプロセッサコアでもよい。
【００２１】
コヒーレント多重処理モードで動作するプロセッサコアは共有メモリ領域にアクセスする。この領域はコヒーレント多重処理モードで動作しているコアによってキャッシュ可能な領域でありかつメモリ２０の定義された部分である。非コヒーレントモードで動作するプロセッサコアがコヒーレント共有メモリ領域にアクセスすることはなく、そのキャッシュはこれらの領域に含まれるいかなるデータもミラー化（ｍｉｒｒｏｒ）していない。
【００２２】
メモリ２０は集積回路２上のブロックとして示されるが、これは単に説明上の理由であって、実際のメモリ２０には、集積回路集積回路の内外に様々なデータ記憶域とプロセッサコアのキャッシュが含まれる。
【００２３】
プロセッサコア４には、関連キャッシュメモリ１０と、この実施例でＣＰ１５レジスタの一部を形成するモード制御パラメータ格納要素が含まれる。モード制御パラメータは、プロセッサコアを非コヒーレント処理モードかコヒーレント多重処理モードのいずれかで動作するように制御する。パラメータは様々な方法、例えばアプリケーションまたはオペレーティングシステムからのソフトウェア命令に応答して設定すること等々が可能であり、また、外部ピン１１の信号によってハードウェア的に制御することもできる。
【００２４】
他の実施例と同様、プロセッサコア４はバスを介してスヌープ制御ユニットと接続される。このバスは、主部あるいはＡＨＢ部と、多重処理部あるいはＣＣＢ（一貫性制御バス）部とに二分割される。主部は、メモリアクセス信号をプロセッサコアからスヌープ制御ユニットへ、そしてスヌープ制御ユニットからコアへ送るために使用され、その他の部分は一貫性管理動作に関する付加情報用に使用される。
【００２５】
非コヒーレント処理モードでのプロセッサコア動作を指定するようにモード制御パラメータが設定されている場合、それに応じてコアはＣＣＢを非動作状態にする。これは、メモリアクセス信号がＡＨＢバスだけを介して送られ、付加的な一貫性関連データがないことを意味する。付加的な一貫性情報が与えられなければ、スヌープ制御ユニット１６は、メモリアクセス要求に対して一貫性動作を実行せず、単にメモリ２０の関連部分にメモリアクセス要求を送るだけである。
【００２６】
図３から分かるように、コア４を非動作状態に制御することに加え、モード制御パラメータはＳＭＰ／ＡＭＰ信号としてスヌープ制御ユニットに直接送られる。この場合、モード制御パラメータはプロセッサコア４が非コヒーレント処理モードで動作中であることを示すように設定され、スヌープ制御ユニット１６が受け取った信号はプロセッサコア４のキャッシュ１０がいかなる共有メモリもミラー化していないことを示す。従って、スヌープ制御ユニットが他のコアからのメモリアクセス要求を処理しているとき、キャッシュメモリ１０はスヌープ制御ユニット１６とは無関係であり、スヌープ制御回路は他の処理コアからのメモリアクセス要求の処理中はキャッシュメモリ１０を無視する。
【００２７】
プロセッサコア４のコヒーレント多重処理モード動作を指定するように管理パラメータが設定された場合、ＣＣＢバスは自動的には非アクティブ状態にならない。この状況において、コアは特定のメモリアクセス要求を記述するために追加情報を生成し、メモリアクセス要求をＡＨＢバス上に、そして追加データをＣＣＢバス上に送出する。ＣＣＢバスに追加情報が受信されたとき、スヌープ制御ユニットは、プロセッサコア４がコヒーレント多重処理モードで動作していて一貫性管理動作の実行が必要であることを認識する。情況によっては、コアがコヒーレント多重処理モードで動作していても、この特定のメモリアクセス要求に関しては一貫性の問題がないことが分かっている場合もある。このような状況、例えばコアが読み出す必要のあるデータの最新版が自己のキャッシュ内に存在することを認識している場合、コアは非コヒーレント処理モードのときと同様にＣＣＢを非アクティブ状態にし、メモリアクセス要求に関する追加情報を送らない。この場合、非コヒーレント処理モードの例と同様に、スヌープ制御ユニットは一貫性管理動作の実行が不要であることを認識しているので、指示されたメモリ領域にメモリアクセス要求を送るだけである。
【００２８】
このように管理パラメータがコヒーレント多重処理モードを指示するよう設定されている場合、プロセッサコア４のキャッシュ１０は、コヒーレント多重処理モードで動作している他のコア６にアクセス可能な共有メモリを部分的にミラー化しているので、コヒーレント多重処理モードプロセッサからのメモリアクセス要求を処理しているスヌープ制御ユニット１６と関連がある。スヌープ制御ユニット１６は、モード管理パラメータの値を表す信号を受信すると、それを認識し、コヒーレント多重処理モードで動作中の他のプロセッサコアからのメモリアクセス要求を処理するときにコア４のキャッシュ１０を無視することはない。
【００２９】
図４は、プロセッサコア４、６、８がすべて、多重処理か非コヒーレント処理モードのいずれでも動作するように設定可能な代替実施例を示す。この実施例では、モード管理パラメータは、プロセッサコア自体には格納されず、スヌープ制御ユニット１６に格納される。この実施例では、これらの信号がプロセッサコアの非コヒーレントプロセッサモード動作を指示していれば、図３の実施例と同様に、信号はコアに送られ、ＣＣＢをディスエーブルにするためにコアで使用される。信号がスヌープ制御ユニット１６に格納されているので、スヌープ制御ユニットはコヒーレント多重処理モードプロセッサコアからのメモリアクセス要求を処理するときにアクセスすることが必要なプロセッサコアのキャッシュを特定するために、信号にアクセスし、その信号を使う。
【００３０】
上記二つの実施例では、制御パラメータは設定可能なコア４またはスヌープ制御ユニット１６に格納されるが、集積回路２のほかのどこの場所にでも格納することが可能である。いずれの実施例においても、制御パラメータは様々な方法、例えばアプリケーションまたはオペレーティングシステムからのソフトウェア命令を介する方法で設定することが可能であり、また、外部ピン（図示せず）の信号によってハードウェア的に制御することもできる。
【００３１】
図５は、付属キャッシュメモリ１０を備えたプロセッサコア４を示す。このキャッシュメモリ１０は４ウェイ物理アドレスキャッシュメモリである。キャッシュメモリ１０には、それ自体のクロック信号が供給される。プロセッサ４に供給されるクロック信号は、キャッシュメモリ１０へのクロック供給が続いている間、制御ゲート２４によってゲートオフされ得る。したがって、制御ゲート２４によるクロック信号のゲートオフによって、プロセッサコア４は停止し、節電モードに入る。クロック信号を通過させるかオフするかを制御ゲート２４で切り換える際に、コア設定コプロセッサＣＰ１５の中のステータスフラグが使用される。キャッシュクロックはアクティブ状態としておく一方、このステータスフラグを設定しコアクロックのゲート制御を行うために、あるタイプのＷＦＩ（割込み待ち）命令が使用される。また、別のタイプのＷＦＩ命令を用いて、コアとキャッシュの双方へのクロック信号をゲート制御することができる。
【００３２】
キャッシュメモリ１０の中に設けられた一貫性コマンドデコーダ２６は、スヌープ制御ユニット１６からＣＣＢを介して送られる一貫性コマンドに応答する。これらの一貫性コマンドは、キャッシュメモリ１０に保持されたデータ値に関するステータスを強制的に変更したり、保持されたスヌープ制御ユニット１６の命令でデータ値を返したりクリーニングすることを含む。したがって、システム全体の電力消費を抑えるためにプロセッサコア４を節電モードで動作させる一方で、キャッシュメモリ１０は、スヌープ制御ユニット１６からＣＣＢを介して入力される一貫性管理要求に応答することができる。その結果、一貫性管理を犠牲にすることなく、大幅な節電が可能になる。
【００３３】
以下に、マルチプロセッサアーキテクチャの詳細を記述する。
【００３４】
（用語と略語）
この明細書では、下記の用語および略語を使用する。
用語                          意味
ＳＭＰ                        対称多重処理
ＡＭＰ                        非対称多重処理
Ｌ２ＣＣ                      レベル２キャッシュコントローラ
ＷＦＩ                        割り込み待ち。低電力モード。コアの全クロッ
クがオフされ、コアは割込み受信時に起動。
【００３５】
（序論）
以下に、グローバル多重処理プラットホームについて説明する。
規定のアーキテクチャでは、同じプラットホームにおいて同じプログラマモデルを用いてＳＭＰとＡＭＰの両方を可能とする。
【００３６】
典型的なＭＰシステムは下記を含む。
・メモリ一貫性サポート；
・割込み分配機構；
・プロセッサ間通信チャンネル；
・マルチコア・デバッグ機能；
・マルチコア・トレース（ｔｒａｃｅ）機能
【００３７】
このアーキテクチャは低電力多重処理システム（Ｌｏｗ  Ｐｏｗｅｒ  Ｍｕｌｔｉ−ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍｓ）の開発を可能にする（低電力モードのＷＦＩ状態がサポートされる）。
【００３８】
このアーキテクチャはプライベートレベル２キャッシュを備えたコアに合わせてスケーリングする。
【００３９】
このアーキテクチャは、既存設計への容易な統合が考慮されている。現在の仕様により、他の設計変更を伴わずにシングルコアをＳＭＰ対応システム（ＳＭＰ−ｃａｐａｂｌｅ  ｓｙｓｔｅｍ）で置換することが可能になる。
【００４０】
ＳＭＰソリューション
コヒーレント多重処理メモリシステム
選択された解決法を図１に示す。
多重処理メモリシステムを製作するための主要タスクを下記二つとする。
・  マルチプロセッサコアを製作するために、ＡＲＭコアにＭＰエクステンションを付加する。これらの変更には、物理アドレシングへのコアの移動、キャッシュライン状態の更新、コアインタフェースでの一貫性制御バス（ＣＣＢ）の付加が含まれる。
・  メモリシステムの一貫性を担当するブロックを設ける。このブロックはスヌープ制御ユニット（ＳＣＵ）と呼ばれる。このブロックは、システムレベルでＭＥＳＩ一貫性プロトコルを実行し、一貫性要求をメモリシステムのコアに送る。
【００４１】
（ＳＭＰ対応コア））（ＳＭＰ−ｃａｐａｂｌｅ  ｃｏｒｅｓ）
多重処理環境が利用できるように標準ＡＲＭコアを修正する。
・  コアは、一貫性制御バス（ＣＣＢ）を介してスヌープ制御ユニット（ＳＣＵ）との間でメッセージを交換する。
・  コアは、基本ＭＥＳＩ状態、ＳＭＰ／ＡＭＰ認識、移送（ｍｉｇｒａｔｏｒｙ）ライン検出など、コアのキャッシュラインのＳＭＰ情報を処理する。
・  コアは、より良いロック機構（ｌｏｃｋｉｎｇ  ｍｅｃｈａｎｉｓｍ）を支援するために新規のＭＰ命令を発行することができる。
ここで重要なポイントは、この状態でもＳＭＰ対応コアが標準ＡＨＢバスと互換性を持っていて、非多重処理メモリ環境においてシームレスで動作することである。
【００４２】
（スヌープコントローラユニット）
ＡＲＭのＭＰアーキテクチャでは、集中ユニット（スヌープ制御ユニットまたはＳＣＵと呼ぶ）が、コアからのＡＨＢ要求を制御して一貫性の必要性をチェックする。このユニットは、すべてのキャッシュ間におけるメモリの一貫性維持を保証する。必要に応じて、データキャッシュに制御メッセージ（ＩＮＶＡＬＩＤＡＴＥ、ＣＬＥＡＮまたはＣＯＰＹコマンド）を送って、メモリ転送を（プロセッサ間で直接、または外部ＡＨＢインターフェースへ）リダイレクトする。
【００４３】
ＳＣＵに様々な機能を付加することができる。これらの機能は、プログラマには透明であり、性能や電力消費量を改善することができる。これらは設定可能であり、デフォルト設定のときにプログラマモデルが変更されないように構成することができる。必須要件でないが、例えば、メモリシステム内でプロセッサへの問合せ（速度低下の原因になる）を省略して一貫性ルックアップを高速化するために、全プロセッサのデータタグアレイ（ＤＡＴＡ  ＴＡＧ  ａｒｒａｙｓ）のローカルコピーをＳＣＵで保持することができる。
【００４４】
ＳＣＵはまた外部マスターＡＨＢインターフェースを使用する。インターフェースは、要求されたラインが他のデータキャッシュに存在しない場合（スヌープ失敗）、メモリに書き込み要求を送り、主メモリからデータを読み出すことができる。ＳＭＰ対応システムの実現を容易にするため、この外部インターフェースは、Ｌ２ＣＣ、ＡＭＢＡ３ラッパー（ｗｒａｐｐｅｒ）または標準ＡＨＢバスに容易に差し込めるように設計される。
【００４５】
コヒーレントプロトコルおよびバス
（スヌーピング動作と一貫性プロトコル）
ＳＣＵレベルでは、ＳＭＰコアからの各メモリ要求が一貫性チェックを生成する。ＳＭＰメモリシステム内のプロセッサのデータ側キャッシュだけが、必要なデータのためにルックアップされる。
【００４６】
コア−ＳＣＵ通信に使用されるキャッシュ一貫性プロトコルは、ＭＥＳＩプロトコルに基づくが、その性能と電力消費量を改善するためにバークレー法（Ｂｅｒｋｅｌｅｙ  ａｐｐｒｏａｃｈ）にしたがって修正されている。
【００４７】
多重処理メモリシステムでは、一貫性モデルはプログラマモデルの重要な要素である。これにより、読み書き動作中における記憶内容の変更をプログラマがどのようにして期待できるかを定義する。ＡＲＭ  ＭＰアーキテクチャの一貫性モデルは、弱い順序付けモデル（Ｗｅａｋ  Ｏｒｄｅｒｉｎｇ  ｍｏｄｅｌ）であって、同期動作を用い正しいプログラム挙動を保証する。
【００４８】
（一貫性制御バス）
コアとＳＣＵの間の配置された一貫性制御バス（ＣＣＢ）と呼ばれるバスであって、ＳＣＵとコアの間でメッセージの受け渡しの役割を果たす。これはＳＭＰ対応コアとＳＣＵの間の標準インターフェースを規定する。
【００４９】
ＳＭＰアーキテクチャの進化に伴い、このバスはＳＭＰ・コア間インタフェースの安定性の維持に寄与する。
【００５０】
また、下記「サポート機能」で記述するように、多重処理機能実行に必須のステータス信号が、このバスを介して転送される。
【００５１】
サポート機能
（ＳＭＰ／ＡＭＰ属性）
マルチプロセッサシステムにおいて、一つ以上のプロセッサを非ＳＭＰタスク／ＯＳ専用にすることが考えられる。これは、その（それらの）プロセッサが共有データを処理しないことを意味する。
【００５２】
あるＯＳから新しいＯＳへのアプリケーションのポーティング（ｐｏｒｔｉｎｇ）を避けたい場合が、これに相当する。これは、そのＯＳがＳＭＰ対応でなくても、専用プロセッサで別のＯＳを走らせれば解決できる。また、例えば、別のプロセッサ（特定のまたはプライベートのコプロセッサを装備し得る）で専用マルチメディアタスクを実行するときのようにＯＳサポートを必要としない特定のタスク／スレッドの場合も、同様に考えることができる。
【００５３】
これらのプロセッサからの各ＡＨＢ要求に対して一貫性チェックをしても、プロセッサ間にデータの共有がないので無意味である。その上、システム全体（ＳＣＵに負荷が掛かることになるので）とプロセッサ自体の両方の性能を損なうことになる（一貫性の必要性を調べるためにＡＨＢ要求にレイテンシが生じることになるので）。
【００５４】
プロセッサが対称モード（ｓｙｍｍｅｔｒｉｃａｌ  ｍｏｄｅ）で動作しているか否かは、ＣＰ１５の中の属性で規定される。この属性は、プロセッサからのＡＨＢ要求をＳＣＵで処理するべきか、そして他のプロセッサから一貫性要求が発生したときにそのプロセッサのデータキャッシュをチェックする必要があるか否かを規定する。
この属性はＳＣＳＭＰｎＡＭＰビットとしてＳＣＵに送られる。
【００５５】
（直接データ調停）
（説明）
あるプロセッサが別のプロセッサのキャッシュに格納されているラインを必要とするとき、ＳＣＵはそれをラインを持つプロセッサから要求元へ送ることができる。その目的は、それ以降のメモリレベルへのアクセスを制限することであり、それはアクセスによるタイミングと電力消費の両方への悪影響を避けるためである。ＳＣＵは、入手したラインを要求側プロセッサに送る。
【００５６】
所有プロセッサ（変更されたか、共有または専用の）、要求のタイプ（読み出しまたは書き込み）、移送ライン機能（ｍｉｇｒａｔｏｒｙ  ｌｉｎｅ  ｆｅａｔｕｒｅ）の状態（イネーブルか否か）によって、それぞれ異なるステータス変化が規定される。
【００５７】
（コアがオフ、キャッシュがオンのときの一貫性）
Ｌ１キャッシュ（オン）の一貫性を維持した状態でコアをオフにするために追加の「割込み待ち」命令（Ｗａｉｔ−ｆｏｒ−Ｉｎｔｅｒｒｕｐｔ  ｉｎｓｔｒｕｃｔｉｏｎ）が定義されている。
ＭＰ対応コアには、下記２つの「割込み待ち」命令が用意されている。
・  コアとキャッシュの両方を低電力状態にするＷＦＩ命令。
・  キャッシュがまだオンのままであって、ＳＣＵからの一貫性要求に対してサービス可能な状態のとき（ＦＯＲＣＥ／ＣＯＰＹとＣＬＥＡＮ動作）、コアを低電力状態にするＷＦＩ命令。
両方のＷＦＩ命令はＣＰ１５命令として実行される。
低電力状態にする方法はクロックのゲート制御に基づいている。ＣＰＵレベルのモジュールによって、コアのクロック、またはコアとキャッシュの両方のクロックを停止させる。
コアは割込みが入り次第、低電力ＷＦＩ状態から抜け出す。
【００５８】
（一貫性制御バス（ＣＣＢ））
一貫性制御バス（ＣＣＢ）は、ＡＲＭ  ＭＰ対応コアとスヌープコントローラユニット（ＳＣＵ）の間で一貫性メッセージをやりとりする役割を持つ。
このバスは元来、ＡＲＭ１０２６コアファミリに基づく多重処理システム用として設計されたものである。ＡＲＭ１０２６コアとＳＣＵの間で使用されるＡＭＢＡバスはプライベートバスである。
しかし、規定されたＣＣＢ仕様も、以下のメモリ環境に適用可能である。
・  ＡＨＢ−ｌｉｔｅメモリシステム（コアレベルで複数のプライベートスレーブを使用する）
・  フルＡＨＢメモリシステム（コアレベルで複数のマスターを使用する）
・  小規模修正を施したＡＸＩメモリシステム（ＡＨＢ３．０）
このコヒーレント制御バス（ＣＣＢ）のｂｕｌｌｅｔ仕様は以下の通りである。
・  制御経路とデータ経路においてマスターインタフェースにおけるＡＭＢＡバスにサイドバンド信号を付加する。
・  コヒーレントＡＭＢＡ要求（ＳＣＲＥＱサイドバンド信号をアサートした要求）をスヌープ制御ユニットに急送しなければならない。
・  スヌープコントローラユニットは、一貫性コマンドをコアに送るためにプライベートチャンネルを使用する。
・  要求されたコヒーレントデータとコア通知メッセージは、ＡＭＢＡ書き込みアクセスとしてＳＣＵに送られる。
以下の記述では、ＡＨＢ２．０メモリ環境におけるＣＣＢスキームを詳細に説明する。
【００５９】
ＣＣＢ概要
（コア要求に関するサイドバンド信号）
ＡＭＢＡバス上にメモリ要求を送出するとき、多重処理を意識（ａｗａｒｅ）してコアは所要のメモリバーストのタイプを示すために「ＣＣＢコアサイドバンド」信号を設定する。
このサイドバンドバスの値によって以下の動作が区別される。
・  標準の読み出しおよび書き込みＡＭＢＡ要求
・  コヒーレントな「Ｌｉｎｅ  Ｆｉｌｌ」および「Ｌｉｎｅ  Ｆｉｌｌ  ａｎｄ  Ｉｎｖａｌｉｄａｔｅ」読み出し要求
・  コヒーレントな「Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ  ａｎｄ  Ｉｎｖａｌｉｄａｔｅ」、「Ｗｒｉｔｅ  Ｎｏｔ  Ａｌｌｏｃａｔｅ  ａｎｄ  Ｉｎｖａｌｉｄａｔｅ」、「Ｉｎｖａｌｉｄａｔｅ」書き込み要求
・  「ＣＰ１５  Ｉｎｖａｌｉｄａｔｅ」、「ＣＰ１５  Ｉｎｖａｌｉｄａｔｅ  Ａｌｌ」通知
・  要求された「ＣＬＥＡＮ／ＣＯＰＹ  ｄａｔａ  ｔｒａｎｓｆｅｒｓ」
符号化内容を含む詳細な信号リストは以下で利用できる。
【００６０】
（ＳＣＵ一貫性コマンドチャンネル）
メモリシステムの一貫性を確保するため、ＳＣＵはメモリシステムのすべてのコアに一貫性コマンドを送らなければならない場合がある。
以下に一貫性動作を定義する。
・  キャッシュライン（ＦＯＲＣＥコマンド）の状態変更動作
・  キャッシュラインの状態変更と、バス上のライン内容のクリーニング（ＣＬＥＡＮ）動作
・  キャッシュラインの状態変更と、バス上のライン内容のコピー（ＣＯＰＹ）動作
・  ノーオペレーション（ＮＯＰコマンド）
【００６１】
一貫性動作と共に、ＭＥＳＩ状態が送出される。これは、一貫性動作の完了後にキャッシュラインの最終状態を示す。
【００６２】
スヌープコントローラユニットは、一貫性コマンドをコアに送るためにプライベート通信チャンネルを使用する。
・  ＳＣＯＰバスは、所要の一貫性動作をコアに知らせる。
・  ＳＣＣＯＲＥＲＥＡＤＹ信号は、現在の一貫性要求が完了しているか否かと、コアが別の要求（ＡＨＢ  ＨＲＥＡＤＹ信号と同様に）を処理し得る状態か否かをＳＣＵに知らせる。
【００６３】
このバスはＡＭＢＡバスに依存しない。ＳＣＣＯＲＥＲＥＡＤＹ信号がアサートされているときに一貫性要求がＳＣＵに必要であれば、コアは一貫性要求を登録して、ＳＣＣＯＲＥＲＥＡＤＹ信号をドロップする必要がある。
【００６４】
コアが一貫性動作を完了するまでの間、ＳＣＣＯＲＥＲＥＡＤＹ信号はローでなければならない。
一貫性要求管理の詳細情報については、タイミング図と下記説明参照されたい。
【００６５】
（ＣＰ１５通知の送出）
データキャッシュの「ＣＰ１５  ＩＮＶＡＬＩＤＡＴＥ」または「ＣＰ１５  ＩＮＶＡＬＩＤＡＴＥ  ＡＬＬ」コマンドを発行する際、コアからＳＣＵユニットにメッセージを送らなければならない。このメッセージは、ＳＣＵにそのデュアルタグアレイ（Ｄｕａｌ  Ｔａｇ  ａｒｒａｙｓ）を更新させるために必要である。
【００６６】
この「ＣＰ１５  ｎｏｔｉｆｉｃａｔｉｏｎ」メッセージは、下記のように単一のＡＨＢ  ＷＲＩＴＥサイクルとしてコアから送られる（タイミング図参照）。
・  ＳＣＲＥＱ＝ＨＩＧＨは、ＳＣＵブロック宛のコヒーレント要求を示す。
・  ＳＣＩＮＶ＝ＬＯＷおよびＳＣＤＡＴＡ＝ＬＯＷは、「ＣＰ１５  ＩＮＶＡＬＩＤＡＴＩＯＮ」通知メッセージを示す。
・  ＷＤＡＴＡバス値は、このメッセージと関連がない。ＳＣＵレベルでは、この要求は「ＣＰ１５  ｎｏｔｉｆｉｃａｔｉｏｎ」とみなされるので、主記憶装置に転送されない。
・  ＨＡＤＤＲバス値は、このメモリアクセスと関連がない。ただし、このバスは破棄（ｉｎｖａｌｉｄａｔｉｏｎ）動作のためのＩｎｄｅｘ＋Ｗａｙアドレスを含んでいる。
【００６７】
これは、コアとＳＣＵの間のＡＭＢＡアドレス復号論理（存在すれば）が、ＳＣＲＥＱビットをアサートしたメモリ要求を受信したときにＳＣＵスレーブポートを必ず選択することを意味する。
【００６８】
（コアレベルにおける一貫性要求の処理）
コアは、ＳＣＵからの一貫性コマンドをＳＣＯＰバス上で受信すると、要求された動作を登録して、要求に対するサービスの準備に入る。
【００６９】
コアインタフェースでは様々なケースが発生する。
ａ）  コアは、ＢＩＵインターフェースで全くメモリ処理をしていないとき、一貫性要求を直ちに始めることができる（ＦＯＲＣＥ／ＣＬＥＡＮ／ＣＯＰＹ）。
クリーニングまたはコピーされたデータがＳＣＵに返送されなければならない場合、コアは以下の通りインクリメントＡＭＢＡ  ＷＲＩＴＥバーストを生成する（下記のタイミング図参照）。
・  ＳＣＲＥＱ＝ＨＩＧＨは、ＳＣＵブロック宛のコヒーレント要求を示す。
・  ＳＣＩＮＶ＝ＬＯＷおよびＳＣＤＡＴＡ＝ＨＩＧＨは、「ＣＯＰＹ／ＣＬＥＡＮ  ｔｒａｎｓｆｅｒ」を示す。
・  ＳＣＤＡＴＡ  ＶＡＬＩＤおよびＳＣＤＩＲＴＹＷＲは、データベース（ｄａｔａ  ｂａｓｉｓ）で更新される。
・  ＣＰ１５  ｎｏｔｉｆｉｃａｔｉｏｎメッセージとＨＡＤＤＲ  ｓｅｎｔ値は関連がない。
ＳＣＵレベルでは、このメッセージは「ＣＯＰＹ／ＣＬＥＡＮ  ｔｒａｎｓｆｅｒ」とみなされ、主記憶装置に転送されない。
【００７０】
ｂ）  コアは、非コヒーレントデータを処理または要求しているとき（ＳＣＲＥＱ信号はアサートされていない）、現在のバーストを通常通り処理する。これは、コアがプライベートスレーブへのメモリ転送か、ＳＣＵへの非コヒーレント転送のいずれかを処理している場合である。
バーストが終了すると、上記ａ）の場合と同様に、コアは「ＣＬＥＡＮ  ｏｒ  ＣＯＰＹ  ｄａｔａ  ｔｒａｎｓｆｅｒ」を処理しなければならない。
【００７１】
ｃ）  コアがメモリ要求を処理または要求しているとき（ＳＣＲＥＱ信号はアサートされている）、これは、コアがＳＣＵでコヒーレント転送中であることを意味する。
この場合、コアがＳＣＵからの一貫性コマンドに対するサービスが終わるまで、転送は完了しない。この挙動は、メモリシステムのデッドロックを隠すためである。
一貫性コマンドに対するサービス完了するまで、ＳＣＵが滞留状態の要求の処理を先に進めないことが保証される（ＨＲＥＡＤＹをＨＩＧＨにアサートするか、データ返送することによって）。コアは、一貫性要求（ＦＯＲＣＥ／ＣＬＥＡＮ／ＣＯＰＹ）の処理を開始する必要がある。
クリーニング／コピーされたデータをＳＣＵに戻す必要がある場合、コアはデータベース（ｄａｔａ  ｂａｓｉｓ）でＳＣＤＡＴＡ  ＶＡＬＩＤおよびＳＣＤＩＲＴＹＷＲ信号を設定し、そのデータをＷＤＡＴＡバス上でＳＣＵに送ることができる（以下のタイムチャート参照）。
【００７２】
ＣＣＢ信号
一貫性制御バス（ＣＣＢ）は４つの信号グループに分割することができる。
・  コア一貫性要求信号。コアによって制御され、ＡＭＢＡ要求と並列に送られる信号である。これら信号は、ＡＭＢＡ要求がコヒーレント要求か否かを示し、必要な一貫性動作の種類をＳＣＵに伝える。
以下のコヒーレントメモリ要求が定義される。
＃  ＬＦ「Ｌｉｎｅ  Ｆｉｌｌ」。プロセッサで読み出しミスが生じたときに発行される。このコマンドは共有または専有状態においてラインを要求する。最終状態はＳＣＵからの応答に依存する。
＃  ＬＦＩ「Ｌｉｎｅ  Ｆｉｌｌ  ａｎｄ  Ｉｎｖａｌｉｄａｔｅ」。Ｗｒｉｔｅ  Ａｌｌｏｃａｔｉｏｎが有効（ｅｎａｂｌｅｄ）の場合に、プロセッサで書き込みミスが生じたときに発行される。このコマンドはラインの独占所有権（ｅｘｃｌｕｓｉｖｅ  ｏｗｎｅｒｓｈｉｐ）を要求する。
＃  ＷＴＩ「Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ  Ｉｎｖａｌｉｄａｔｅ」。キャッシュがＷｒｉｔｅ  Ｔｈｒｏｕｇｈモードで構成されるときに発行される。この場合、必要に応じて、ＳＣＵは他のプロセッサの対応ラインを破棄（ｉｎｖａｌｉｄａｔｅ）しなければならない。プロセッサが専有状態または修正状態で既にラインを保持している場合、コマンドは発行されない。
＃  ＷＮＡＩ「Ｗｒｉｔｅ  ｎｏｎ−ａｌｌｏｃａｔｅ  ｉｎｖａｌｉｄａｔｅ」。キャッシュがｗｒｉｔｅ  ｎｏｎ−ａｌｌｏｃａｔｅモードで構成され、ラインがキャッシュに存在しないときに発行される。必要に応じて、ＳＣＵは他のプロセッサのラインを破棄しなければならない。
＃  Ｉｎｖａｌｉｄａｔｅ。ラインが共有状態で、キャッシュに書き込みヒットＷｒｉｔｅ  Ｈｉｔがあるときに発行される。バスへのデータ送出を必要としない。このメッセージを受信すると、ＳＣＵは他のキャッシュ内のラインを破棄する。
＃  ＣＰ１５  ｉｎｖａｌｉｄａｔｉｏｎｓ。ＳＣＵにおけるＤＵＡＬ  ＴＡＧ  ＡＲＲＡＹＳを更新するために使用される。
・  コアステータス信号。これらの信号はコアから送られる一貫性ステータス信号である。ＳＣＵからの一貫性コマンドをコアが処理可能な状態か否かを示す信号であり、現在の一貫性要求のステータスを示す。
・  コアサイドバンド信号。これらの信号は一貫性動作中にデータと並列にコアから送られる信号である。
・  ＳＣＵコマンド信号。これらの信号は一貫性コマンドをコアに送るためにＳＣＵで使用される信号である。
2005025726.tif 000003
2005025726.tif 000004
2005025726.tif 000005
2005025726.tif 000006
2005025726.tif 000007
（ＡＨＢ２．０タイミング図）
下記はコア／ＳＣＵ通信を説明するタイミング図である。
・  Ｌｉｎｅ  Ｆｉｌｌの例
・  Ｉｎｖａｌｉｄａｔｅ  Ａｌｌの例
・  ＦＯＲＣＥコマンドの例（Ｎｏｔ  Ｐｒｅｓｅｎｔの場合）
・  ＣＯＰＹコマンドの例（ヒットの場合）
・  ＣＬＥＡＮコマンドの例（ミスの場合）
・  Ｃｏｈｅｒｅｎｔ  ｗｒｉｔｅ  ｂｕｒｓｔ  ｄｅｌａｙｅｄ  ｂｙ  ａ  ＣＯＰＹコマンド
Ｃｏｈｅｒｅｎｔ  Ｌｉｎｅ  Ｆｉｌｌ要求
（図６参照）
ＩＮＶＡＬＩＤＡＴＥ  ＡＬＬメッセージ
（図７参照）
ＦＯＲＣＥコマンド（Ｎｏｔ  Ｐｒｅｓｅｎｔの場合）
（図８参照）
ＣＯＰＹコマンド（ヒットの場合）
（図９参照）
ＣＬＥＡＮコマンド（ミスの場合）
（図１０参照）
Ｃｏｈｅｒｅｎｔ  ｗｒｉｔｅ  ｂｕｒｓｔ  ｄｅｌａｙｅｄ  ｂｙ  ａ  ＣＯＰＹコマンド
（図１１参照）
【００７３】
添付図面にしたがって詳細に発明の実施例を説明したが、発明は上述の実施例に制限されるものではなく、特許請求の範囲内において当業者によって様々な変更が可能である。
【図面の簡単な説明】
【００７４】
【図１】複数のプロセッサコアを含むデータ処理システムを示す図。
【図２】プロセッサコアとメモリアクセス制御装置の間のメモリバスを示す図。
【図３】ＣＰ１５レジスタにモード制御パラメータを保持する集積回路の一部を示す図。
【図４】メモリ管理ユニットにモード制御パラメータを保持する集積回路を示す図。
【図５】キャッシュメモリが一貫性管理動作に応答している間プロセッサコアがパワーダウンされるように、別々にクロック制御されるプロセッサコアとキャッシュメモリを示す図。
【図６】発明の実施例によるマルチプロセッサアーキテクチャとバスインタフェースの詳細を示す図。
【図７】発明の実施例によるマルチプロセッサアーキテクチャとバスインタフェースの詳細を示す図。
【図８】発明の実施例によるマルチプロセッサアーキテクチャとバスインタフェースの詳細を示す図。
【図９】発明の実施例によるマルチプロセッサアーキテクチャとバスインタフェースの詳細を示す図。
【図１０】発明の実施例によるマルチプロセッサアーキテクチャとバスインタフェースの詳細を示す図。
【図１１】発明の実施例によるマルチプロセッサアーキテクチャとバスインタフェースの詳細を示す図。
【符号の説明】
【００７５】
２  集積回路
４  マイクロプロセッサコア
６  マイクロプロセッサコア
８  マイクロプロセッサコア
１０  キャッシュメモリ
１２  キャッシュメモリ
１４  キャッシュメモリ
１６  メモリ管理アクセスユニット
１８  周辺装置
２０  メモリ
２２  コヒーレント共有領域
２４  制御ゲート
２６  一貫性コマンドデコーダ
【図１】
2005025726.tif 000008
【図２】
2005025726.tif 000009
【図３】
2005025726.tif 000010
【図４】
2005025726.tif 000011
【図５】
2005025726.tif 000012
【図６】
2005025726.tif 000013
【図７】
2005025726.tif 000014
【図８】
2005025726.tif 000015
【図９】
2005025726.tif 000016
【図１０】
2005025726.tif 000017
【図１１】
2005025726.tif 000018