(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、
少なくとも幾らかが共用メモリとして指定されている外部メインメモリ、
外部メモリインターフェースを介して前記外部メインメモリへ結合されており、そのトランズアクションセット内に定義されたキャッシュコヒーレンストランズアクションを有しているトランズアクションをベースとしたバスメカニズム、
キャッシュメモリを具備しており、前記トランズアクションをベースとしたバスメカニズムへ結合されているＣＰＵコア、
前記バスメカニズムへ結合されておりキャッシュコヒーレンスポリシィを特定する論理を有しているシステムコンポーネント、
前記バスメカニズムに関する特定されたキャッシュポリシィに従ってキャッシュトランズアクションを開始させる前記システムコンポーネント内の論理、
前記開始したキャッシュトランズアクションに応答し前記キャッシュトランズアクションによって特定されたキャッシュ操作を実行する前記ＣＰＵコア内の論理、
を有していることを特徴とするコンピュータシステム。
【請求項２】
請求項１において、更に、各区画に対して特定された独立したキャッシュポリシィを具備している２つ又はそれ以上のキャッシュ区画を定義する前記システムコンポーネント内の論理を有していることを特徴とするコンピュータシステム。
【請求項３】
請求項１において、更に、前記バスメカニズム上のシステムコンポーネントに対してアドレスされている応答を発生する前記ＣＰＵコア内の論理を有しており、前記応答が前記キャッシュ操作の完了を通知することを特徴とするコンピュータシステム。
【請求項４】
請求項１において、前記キャッシュコヒーレンスポリシィを特定する論理が、
基準メモリアドレスを保持するエントリを持っている第一レジスタ、
前記キャッシュメモリ内の前記基準メモリアドレスを表すキャッシュラインに対して特定したキャッシュポリシィを表す値を保持しているエントリを持っている第二レジスタ、
を有していることを特徴とするコンピュータシステム。
【請求項５】
請求項４において、前記キャッシュコヒーレンスポリシィを特定する論理が、更に、前記特定したキャッシュポリシィが適用される前記基準メモリアドレスに関するメモリアドレスの範囲を表す値を保持しているエントリを持っている第三レジスタを有していることを特徴とするコンピュータシステム。
【請求項６】
請求項２において、前記２つ又はそれ以上のキャッシュ区画を定義する論理が、
各エントリが基準メモリアドレスを保持している各定義されたキャッシュ区画に対するエントリを持っている第一レジスタ、
各キャッシュ区画を構成する前記基準メモリアドレスに関するアドレス範囲の寸法を表す値を保持しているエントリを持っている第二レジスタ、
を有していることを特徴とするコンピュータシステム。
【請求項７】
請求項１乃至６の内のいずれか１項において、前記システムコンポーネントがＰＣＩブリッジであることを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、大略、マイクロプロセッサシステムに関するものであって、更に詳細には、キャッシュサポートを具備するマイクロプロセッサシステムにおいてキャッシュコヒーレンスを与えるシステム、方法及びメカニズムに関するものである。
【背景技術】
【０００２】  マイクロプロセッサはコンピュータプログラムによって特定される命令にしたがってデータを処理する。従来のシステムにおける命令及びデータは、メモリバスによってプロセッサへ結合されているメインメモリ内に格納される。命令を実行するためのプロセッサの能力は、典型的に、プロセッサへ命令及びデータを供給するメモリサブシステムの能力をはるかにしのいでいる。本明細書において使用するように、「マイクロプロセッサ」及び「プロセッサ」と言う用語は、完全命令セットコンピュータ（ＣＩＳＣ）、減少命令セットコンピュータ（ＲＩＳＣ）及びそれらのハイブリッドを包含している。【０００３】  殆どのプロセッサはメモリアクセスを高速化するためにキャッシュメモリシステムを使用している。キャッシュメモリは同一のデータ及び命令に対する後のアクセスを高速化させるために設計された最近アクセスされたデータ及び命令を保持している１つ又はそれ以上のレベルの専用の高速メモリを有している。キャッシュ技術は、プログラムが同一の命令及びデータをしばしば再使用するという前提に基づいている。又、命令及びデータは「空間的局所性」と呼ばれる傾向を示し、それは将来使用されるべき命令及びデータは最近使用された命令及びデータとメモリの同一の領域に位置されている傾向があることを意味している。データがメインシステムメモリから読取られると、メインメモリ内の関連する位置に対するインデックスと共に、そのコピーがキャッシュメモリ内に保存される。キャッシュエントリは、特に要求されたデータばかりでなく、特に要求されたデータの周りのデータも包含していることが多々ある。【０００４】  キャッシュはその後のデータに対する要求をモニタして、必要とされる情報が既にキャッシュ内に格納されているか否かを判別する。データがキャッシュ内に格納されている場合には、そのデータはすぐさまプロセッサへ送られ、一方メインメモリから情報をフェッチするための試みはアボートされる（即ち開始されることはない）。一方、そのデータが以前にキャッシュ内に格納されていない場合には、それはメインメモリから直接的にフェッチされ且つ将来のアクセスに備えてキャッシュ内に保存される。【０００５】  マイクロプロセッサの性能はキャッシュメモリの使用によって著しく向上される。キャッシュメモリはメインメモリよりもより低い待ち時間を有するメモリ装置を有している。特に、１つ又はそれ以上のレベルのオンチップキャッシュメモリは特に低い待ち時間の格納動作を与える。オンチップキャッシュメモリは単に１つ又は２つのクロックサイクルの待ち時間を有するメモリ構造及び装置で実現することが可能である。キャッシュメモリ、特にオンチップキャッシュメモリは、高速でマイクロプロセッサによってアクセスされるのに特に適している。【０００６】  キャッシュサブシステムに対する１つのタスクはキャッシュコヒーレンスを維持することである。キャッシュコヒーレンスとは、キャッシュメモリの内容がメインメモリにおける対応する位置と一貫性を有することを確保することのタスクのことを意味している。マイクロプロセッサのみがメインメモリヘアクセスすることが可能である場合には、キャッシュコヒー��ンスは比較的簡単なタスクである。然しながら、この制限事項はメインメモリへの全てのアクセスをマイクロプロセッサを介して経路付けさせることを強制させる。グラフィックモジュール、マルチメディアモジュール、ネットワークインターフェースモジュール等の多くの装置は効率的な動作のためにシステムメモリを使用することが可能である。然しながら、これらのモジュールがシステムメモリを使用するためにプロセッサと結合されねばならない場合には、全体的な性能は低下する。【０００７】  プロセッサの使用をより効率的なものとさせるために、多くのシステムではマイクロプロセッサ以外のモジュール及び周辺機器が直接的にメインメモリへアクセスすることを可能としている。典型的なコンピュータシステムアーキテクチャにおけるシステムバスは、マイクロプロセッサ及びダイレクトメモリアクセス（ＤＭＡ）制御器へ結合する。該バスへ結合されるその他のモジュール及び周辺機器はＤＭＡ制御器を使用してマイクロプロセッサへ結び付けられることなしにメインメモリへアクセスすることが可能である。このことは共用メモリシステムと呼称される。何故ならば、メインメモリの全部又は一部が、メモリへアクセスすることが可能なマイクロプロセッサを包含する多様な装置の間で共用されるからである。【０００８】  共用メモリシステムはキャッシュコヒーレンスタスクを著しく複雑なものとさせる。ＤＭＡ装置は直接的にメインメモリへアクセスするが、通常、直接的にキャッシュメモリへアクセスするものではない。ＤＭＡ装置が正しいデータを得ることを確保するために、ＤＭＡ装置によってアクセスされている共用メモリ位置の内容がマイクロプロセッサによって使用されているその位置のキャッシュされたコピーにおいて変化されていないものであることを検証するための手段がこうじられなければならない。更に、このコヒーレンスチェックによって課される待ち時間は、キャッシュ動作又はダイレクトメモリアクセスのいずれかの利点をしのぐようなものであってはならない。【０００９】  １つの解決方法は、メインメモリをキャッシュ可能な部分とキャッシュ不可能な部分とに区画化することである。ＤＭＡ装置はメモリのキャッシュ不可能な部分のみを使用することに制限される。このように、ＤＭＡ装置はキャッシュの内容と無関係なものとさせることが可能である。然しながら、キャッシュ不可能な部分に格納されているデータについては、キャッシュ技術の全ての利点が失われることとなる。【００１０】  別の解決方法は、ＤＭＡ制御器又はシステムバスへ結合されているその他のハードウエアが共用メモリへのアクセスが許可される前にキャッシュを「スヌープ」即ち偵察することを可能とさせることである。このことの１つの例はペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス内に存在しており、それはＰＣＩブリッジ装置がＤＭＡ装置トランズアクションの一部として自動的にＣＰＵキャッシュをスヌープすることを可能とする。このことは共用メモリをキャッシュさせることを可能とするが、全てのＤＭＡトランズアクションに対して待ち時間を付加する。全てのＤＭＡトランズアクションが行われる単一のシステムバスを有するシステムはスヌーププロトコルを効率的に実現することが可能である。何故ならば、単一バスシステムはいずれかの装置が全てのその他の装置に対して信号を迅速に且つ効率的にブロードキャスト即ち同報通信し共用メモリアクセスが発生していることを表示することを可能とさせるからである。【００１１】  然しながら、システムコンポーネントを相互接続するための堅牢で複雑でマルチパス通信サブシステムを有するシステムに対する要求が益々高まっている。複雑な通信ネットワークはより大きな拡張の可能性及びカスタム化を可能とさせる。更に、このようなシステムは既存の証明されたサブシステム及びモジュール設計（しばしば、知的所有権即ち「ＩＰ」と呼ばれる）を再使用することを可能とさせる。複数個の独立した経路を可能とするより複雑なバスネットワークを有するシステムにおいては、ネットワークブロードキャストは遅い場合があり、従来のスヌーププロトコルを非現実的なものとさせる。【００１２】  より複雑なネットワークに対して使用されている別の解決方法は、キャッシュステータス情報を保持するために中央に集中させるか又は分散させたディレクトリィ構造を使用するものである。これらは、例えば、マルチプロセッサアーキテクチャにおいて見られる。共用メモリへアクセスするいずれかの装置は、最初に、ディレクトリィへアクセスしてターゲットメモリアドレスが現在キャッシュされているか否かを判別する。そのアドレスがキャッシュされていない場合には、共用メモリ位置に対する直接的なアクセスが行われる。そのアドレスがキャッシュされている場合には、直接的なアドレスが完了する前にキャッシュされたデータがメインメモリへ書き戻される。ディレクトリィをベースとした解決方法はスヌープ操作よりも高速であるが、ディレクトリィ構造をサポートするために、各ＤＭＡアクセス及びハードウエアオーバーヘッドに対して待ち時間を付加させることとなる。
【発明が解決しようとする課題】
【００１３】  本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、キャッシュメモリシステムにおいて効率的な共用メモリアクセスを可能とするシステム、方法及びメカニズムを提供することを目的とする。本発明の別の目的とするところは、複雑でマルチパスのシステムバスを有するシステムにおいてキャッシュコヒーレンスを実行するメカニズムを提供することである。
【課題を解決するための手段】
【００１４】  本発明はメモリの少なくとも幾らかが共用メモリとして指定されているメモリシステムを有するコンピュータシステムを提供している。トランズアクションをベースとしたバスメカニズムがメモリシステムへ結合しており且つそのトランズアクションセット内に定義されたキャッシュコヒーレンストランズアクションを有している。キャッシュメモリを有するプロセッサがトランズアクションをベースとしたバスメカニズムを介してメモリシステムへ結合している。バスメカニズムへ結合されているシステムコンポーネントはキャッシュコヒーレンスポリシィを特定する論理を有している。システムコンポーネント内の論理はバスメカニズムに関して特定されたキャッシュポリシィに従ってキャッシュトランズアクションを開始させる。プロセッサ内の論理が、キャッシュトランズアクションによって特定されたキャッシュ操作を実行することによって、開始されたトランズアクションに応答する。
【発明を実施するための形態】
【００１５】  本発明の好適実施例は、単一の集積回路で１個のチップ上のシステムとして、又は異なるレベルの集積化での複数個の集積回路チップとして実現することの可能なシステムを有している。いずれの場合においても、システムの構成要素は、１つ又はそれ以上のタイプのバス技術を有することの可能なバスネットワークによって相互接続されている。該バスネットワークはバスネットワークを介して通信することの可能な複数個のトランズアクションを有するトランズアクションセットを実現する。各トランズアクションは要求／応答対又は１組の要求／応答対を有している。
【００１６】  特定の実現例においては、トランズアクションセットはキャッシュトランズアクションプリミティブを有している。バスネットワークに結合されているシステム構成要素のうちの１つは中央処理装置（ＣＰＵ）である。該ＣＰＵはキャッシュ管理又はメモリ管理ユニットを有しており、それはＣＰＵがメインメモリからの命令及びデータをキャッシュすることを可能とする。バスネットワークへ結合されているモジュール、装置及び構成要素は、ＣＰＵをしてそれらの代わりにキャッシュ管理動作を実施させるためにキャッシュトランズアクションを使用する。このように、モジュールが直接的にメインメモリへアクセスすることを所望する場合には、ダイレクトメモリアクセス即ち直接的なメモリアクセスの前にキャッシュトランズアクションを発行することによってキャッシュコヒーレンシィを確保することが可能である。好適実施例においては、これらのキャッシュトランズアクションは明示的なコマンドとしてＣＰＵによって解釈される。
【００１７】  いずれのシステムも、図１に示したように、データオブジェクト又はメッセージを介して通信を行うプロセス又はモジュールの集まりとして記述される。これらのモジュールはそれらの特性が幾分緩く定義されている回路の大きな集まりとすることが可能であり、且つ寸法及び構成が著しく異なることが可能である。データオブジェクト又はメッセージはシステムを構成するモジュール間の通信である。システム内のモジュールを実際に接続するためには、システムとコンポーネント（構成要素）モジュールとの間のインターフェースを定義することが必要である。
【００１８】  本発明は図１に示したメディアシステム１００によって例示される。メディアプロセッサ１００は、例えば、ビデオ処理用の「セットトップボックス（ｓｅｔ−ｔｏｐ  ｂｏｘ）」、ビデオゲーム制御器、デジタルビデオディスク（ＤＶＤ）再生器等を有している。基本的には、システム１００は高処理能力マルチメディア適用をターゲットとした特定目的データ処理システムである。本発明の特徴は高速バス１０２、ペリフェラルバス１０４、メモリバス１０６を介して受取られたデータを通信し且つ処理すべく動作するプロセッサ１０１において実現されている。
【００１９】  ビデオ制御器１０５はシステム１０２からデジタルデータを受取り且つ外部ビデオモニタ、テレビ受像器等の上に情報を表示するためのビデオ信号を発生する。発生されたビデオ信号はアナログ又はデジタルとすることが可能である。オプションとして、ビデオ制御器は外部装置からもアナログ及び／又はデジタルビデオ信号を受取ることが可能である。オーディオ制御器１０７はビデオ制御器１０５と類似した態様で動作するが、それはビデオではなくオーディオ情報を制御するという点が異なっている。ネットワークカードＩ／Ｏ制御器１０９はデジタル情報を通信するための従来のネットワーク、ＩＳＤＮ接続、モデム等とすることが可能である。高速バス１０２へ結合されている大容量記憶装置１１１は磁気ディスク、テープ駆動装置、ＣＤ−ＲＯＭ、ＤＶＤ、ランダムアクセスメモリからなるバンク等を有することが可能である。多様なランダムアクセス及びリードオンリメモリ技術を使用することが可能であり且つ本発明の目的のためには均等なものである。大容量記憶装置１１１はコンピュータプログラム及びデータをその中に記憶することが可能である。
【００２０】  特定の実施例においては、高速バス１０２はペリフェラルコンポーネントインターコネクト（ＰＣＩ）業界標準バスとして実現される。業界標準バスを使用することの利点は、制御器１０５，１０７，１０９，１１１等の多様な拡張ユニットが容易に入手可能であるという点である。ＰＣＩバス１０２はスヌーププロトコルを使用するダイレクトメモリアクセスコンポーネントをサポートする。
【００２１】  ペリフェラル即ち周辺装置１１３は高速バス１０２によって与えられるものよりもより低い帯域幅の通信を必要とする多様な汎用のＩ／Ｏ装置を包含している。典型的なＩ／Ｏ装置は、例えばゲームプログラムカートリッジ等のリードオンリメモリ（ＲＯＭ）装置、例えばマウス又はジョイスティック、キーボード等のシリアル入力装置を包含している。プロセッサ１０１は対応するシリアルポート、パラレルポート、プリンタポート、ペリフェラル１１３と通信するための外部タイマポートを包含している。更に、プロセッサ１０１と集積化されている例えばＢＩＯＳ  ＲＯＭ等のオンボードＲＯＭとの通信をサポートするためのポートを設けることが可能である。外部メモリ１０３は、典型的には、プロセッサ１０１に対する作業用の格納部（記憶部）を提供するために必要とされ且つプロセッサ１０１に対してアクセス可能な態様でデジタルデータを格納することが可能なダイナミック又はスタティックＲＡＭ、ＲＯＭ、同期型ＤＲＡＭ、又はその他の多様な等価な装置を使用して実現することが可能である。
【００２２】  プロセッサ１０１は図２の機能図においてより詳細に示してある。データ処理システムにおける１つのモジュールは中央処理装置（ＣＰＵ）コア２０１である。ＣＰＵコア２０１は、実行資源（例えば、演算論理ユニット、レジスタ、制御論理）及びキャッシュメモリを包含している。これらの機能ユニットについては後により詳細に説明するが、メモリから命令およびデータをフェッチし、フェッチした命令を予備処理し、実行されるべき命令をスケジュールし、命令を実行し、メモリトランズアクションを管理し、且つ外部回路及び装置とインターフェースする機能を実施する。
【００２３】  ＣＰＵコア２０１はシステムバス２０２を介して図２に示したその他のコンポーネント（構成要素）と通信を行う。好適実施例においては、システムバス２０２はパケット技術を使用した高速のネットワークバスであって、ここでは「スーパーハイウェイ」と呼称する。バス２０２は多様なシステムコンポーネントを結合している。特に重要なコンポーネントは、例えば外部メモリインターフェースユニット２０３、ＰＣＩブリッジ２０７、ペリフェラルバス２０４等の外部ハードウエアとのインターフェースを実現するコンポーネントである。バス２０２へ結合されている各コンポーネントはトランズアクションパケット内のアドレスによって特定されてバス２０２上のトランズアクションパケットのターゲットとなることが可能である。
【００２４】  外部メモリインターフェース２０３はシステムバス２０２と外部メインメモリサブシステム１０３（図１に示してある）との間のインターフェースとを与える。外部メモリインターフェースはシステムバス２０２へのポート及びＤＲＡＭ制御器を有している。本発明の重要な特徴は、外部メモリインターフェース２０３を介してアクセスされるメモリがシステムバス２０２から見た場合にコヒーレンス即ち一貫性のあるものであると言うことである。全ての要求はＥＭＩユニット２０３によってこれらの要求の受取られた順番で外部メモリインターフェース２０３上において逐次的に処理される。然しながら、対応するストア応答パケットは、書込動作がＤＲＡＭに対して実際に完了するまでシステムバス２０２上の開始したものへ帰還されることはない。同一のアドレスに対する全ての要求はＤＲＡＭインターフェース上で順番で処理されるので（何故ならば、それらはスーパーハイウェイインターフェースから受取られるので）、メモリのコヒーレンス即ち一貫性が達成される。
【００２５】  図２に示したシステムにおける相互接続の構成はその特定の目的のために各相互接続を最適化する原理によって案内される。バスシステム２０２の相互接続は幾つかの異なるタイプのサブシステムの一体化を容易なものとさせる。それは、厳しいメモリ待ち時間／帯域幅条件を有する密接して結合されたサブシステムに対して使用される。ペリフェラルサブシステム２０４はインターフェースポート２１３を介して図１を参照して表されるタイプのハードウエアの容易な集積化を可能とさせるバススタンダードをサポートする。ＰＣＩブリッジ２０７はペリフェラルポート２０４を介して使用可能なものよりもより高い性能を要求する多様なＰＣＩ標準装置を使用して拡張をサポートする標準インターフェースを提供する。システムバス２０２は、システム１０１の他のコンポーネントを変化させることなしに、アプリケーションモジュールの迅速な集積化をサポートする拡張ポートに合わせることが可能である。
【００２６】  注意すべきことであるが、本発明のシステムにおいては、ＰＣＩブリッジ２０７はＣＰＵ２０１へ直接的に結合されておらず、従ってＰＣＩ標準によって特定される従来の態様でスヌープ動作をサポートすることは不可能である。その代わりに、システムバス２０２は例えばＰＣＩブリッジ２０７からのキャッシュコマンドをバス２０２のトランズアクションセット内のキャッシュトランズアクション上にマッピングする本発明に基づくプロトコルを供給する。ＣＰＵ２０１は予測されたキャッシュコマンドを実現することによってキャッシュトランズアクションに応答する。
【００２７】  図３はスーパーハイウェイ２０２を介しての通信のための要求パケット３０１と応答パケット３０３とを有する例示的なトランズアクション３００を示している。パケット３０１及び３０３はパケット・ルーター３０５を介しての１単位のデータ転送を構成している。モジュール３０７と３０９との間の通信は、これらのモジュールの間でのパケットの交換によって行われる。各モジュール３０７及び３０９は一次的なアドレスに対するパケットルーター３０５が割り当てられるか又はそれとやりとりを行う。特定の実施例においては、各アドレスは符号なし整数値であり、それはプロセッサ２０１の物理的メモリ空間内の１つの位置に対応している。アドレスビットのうちの幾つかは、ディスティネーション（宛先）モジュールを表し、且つアドレスビットのうちの幾つか（「オフセットビット」と呼ばれる）はそのディスティネーションモジュール内の特定の位置を表す。物理的アドレスの寸法、ディスティネーションビットの数、オフセットビットの数は特定の具体例の必要性を満足するために選択され、具体例毎に依存する。
【００２８】  パケットルーター３０５はルーチング即ち経路付けを行うためにディスティネーションビットを使用する。パケットルーター３０５は受取ったパケットのディスティネーションビットを検査し、そのパケットが経路付けされるべき適宜のポートを決定し、且つそのパケットの特定されたモジュールにたいする経路付けを行う。パケットルーター３０５は特定のアプリケーションの必要性を満足させるために、バス、クロスバー、パケットルーチングネットワーク、又は等価なパケット搬送メカニズムとして実現することが可能である。
【００２９】  パケットはトランズアクションのタイプ、トランズアクションのターゲットアドレス、及び／又はそのトランズアクションによって必要とされるか又は発生されるデータ等の情報を表す複数個のフィールドを有している。各フィールドはそのパケットを特性付けるための多数の可能な値を有している。全てのパケットはどのモジュールへそのパケットが経路付けされるべきかを決定するためのパケットルーター３０５によって使用されるディスティネーションフィールドを包含している。特定の具体例においては、全てのパケットはクラスとタイプとを有している。パケットのクラスは要求（リクエスト）又は応答（レスポンス）のいずれかである。応答パケットクラスは通常の応答か又はエラー応答のいずれかに分割される。パケットのタイプはそのパケットと関連するトランズアクションの種類を表す。パケットのクラス及びタイプは一体となってパケットオプコード（ｐａｃｋｅｔ  ｏｐｃｏｄｅ）を形成する。
【００３０】  各パケットはソースモジュールとディスティネーションモジュールとに関連している。ソース（発生源）はポートを介してバス２０２内のパケットルーター３０５へパケット３０１又は３０３を送り出す。パケットルーター３０５はそのパケットをディスティネーションへ接続されているｐポートへ経路付けさせるべく調整を行う。次いで、ディスティネーションがパケットルーターからそのｐポートを介してこのパケットを受取る。ソースとディスティネーションとが同一のモジュールである可能性がある。更に、パケットが複数個の「セル」に分解される可能性があり、その場合には、パケットの各セルは同一のソース及びディスティネーションモジュール及び同一のパケットタイプを有している。複数個のセルはディスティネーションにおいて１個のパケットへ結合される。
【００３１】  図３における点線によって示される「トランズアクション」３００は、スーパーハイウェイバス２０２を使用して１つのモジュールが別のモジュールの状態へアクセスすることを可能とするパケットの交換である。トランズアクションは要求モジュール３０７（「イニシエータ」（開始体）とも呼ばれる）からの要求パケット３０１を応答モジュール３０９（「ターゲット」とも呼ばれる）へ転送し、次いでその応答モジュール３０９から要求モジュール３０７へ応答パケット３０３を転送することを包含している。要求パケット３０１はトランズアクションを開始させ且つその内容がなされるべきアクセスを決定する。応答パケット３０３はそのトランズアクションを完了させ且つその内容はアクセスの結果を表す。応答パケット３０３は、更に、その要求が有効であったか否かをあらわすことが可能である。応答パケット３０３は、その要求が有効なものであった場合には通常の応答としてフォーマット化させることが可能であり、又はその要求が無効なものであって場合にはエラー応答としてフォーマット化させることが可能である。
【００３２】  好適実施例においては、要求パケットと応答パケットとの間には１：１の態様が存在している。好適実施例におけるトランズアクションプロトコルは「スプリットフェーズ」である。何故ならば、要求パケット３０１と応答パケット３０３とは互いに非同期的なものだからである。要求はパイプライン化させることが可能であり、その場合に要求モジュール３０７は、トランズアクションに関連する待ち時間をオーバーラップさせるために、いずれかの応答パケット３０３を受取る前に、複数個の要求パケット３０１を発生することが可能である。
【００３３】  応答モジュール３０９は受取った順番に要求を処理し、要求されたアクションがコミットされるまで応答パケット３０３を発生することはない。このように、ディスティネーションモジュール内部での内部的待ち時間のほかに、要求パケット３０１が受取られた場合に、バス２０２へ結合されている全てのモジュールによって観察されるように、そのアクセスは完了される。そのターゲットモジュールに対するその後に受取られる要求はそのアクセスの後に動作が行われる。このことはディスティネーションにおけるアクセスの時間的順番付けは、対応する応答を待機することによって課すことが可能であることを保証する。
【００３４】  本発明にとって特に重要なパケットタイプのうちの１つはキャッシュコヒーレンストランズアクションと関連するキャッシュコヒーレンスパケットタイプである。キャッシュコヒーレンストランズアクションは「フラッシュ」及び「パージ」トランズアクションを包含している。これらは、主に、図２に示したＰＣＩブリッジ２０７等のＤＭＡ型モジュールの集積化をサポートするために与えられるものであるが、より一般的には、外部メモリインターフェース２０３を介して与えられるメインメモリを使用する任意のモジュールをサポートするために与えられる。
【００３５】  フラッシュトランズアクションはキャッシュからフラッシュ即ち排除されるべき物理的アドレスである単一のオペランドを有している。フラッシュトランズアクションがＣＰＵ２０１内のキャッシュ／ＭＭＵによってバス２０２から受取られると、それはキャッシュ／ＭＭＵをしてキャッシュ内のアドレスをルックアップさせる。そのルックアップがメインメモリに関して修正されていないキャッシュラインに対するミス又はヒットを発生すると、キャッシュ／ＭＭＵはそのルックアップ直後にフラッシュ要求に対する応答を発行する。そのルックアップがメインメモリに関して修正されているキャッシュラインに対するヒットを発生する場合には、キャッシュ制御器は特定されたラインのメインメモリに対するライトバックを発生する。このライトバックに続いて、キャッシュ／ＭＭＵはフラッシュ要求に対する応答を発行する。いずれの場合においても、キャッシュ／ＭＭＵによって発生される応答は単一のアクノレッジメント即ち通知であり、それはメインメモリ及びキャッシュが首尾一貫したものであることを表すデータを運ぶものではない。
【００３６】  パージトランズアクションは、キャッシュからパージ即ち消去されるべき物理的アドレスである単一のオペランドを有している。パージトランズアクションがＣＰＵ２０１内のキャッシュ／ＭＭＵによってバス２０２から受取られると、それはキャッシュ／ＭＭＵをして該キャッシュ内のアドレスをルックアップさせる。そのルックアップがミスを発生すると、キャッシュ／ＭＭＵはそのルックアップ直後にパージ要求に対する応答を発行する。そのルックアップがメインメモリに関して修正されたキャッシュラインに対するヒットを発生する場合には、キャッシュ制御器がメインメモリに対する特定したラインのライトバックを発生する。そのルックアップがヒットを発生する場合には、キャッシュラインはそのラインがメインメモリに関して修正されたか否かに拘わらずに無効化される。その無効化に続いて、キャッシュ／ＭＭＵはパージ要求に対する応答を発行する。いずれの場合においても、キャッシュ／ＭＭＵによって発生された応答は単一なアクノレッジメント即ち通知であって、それはメインメモリ及びキャッシュが首尾一貫したものであること及び特定されたメモリ位置が最早キャッシュ内において有効なものでないことを表すデータを運ぶものではない。
【００３７】  モジュールによるフラッシュ及びパージの使用はあるレベルのキャッシュコヒーレンスを与える。これらの操作は、共用メモリシステムにおけるアドレスに対するモジュールによる読取操作がそのアドレスに最後に書込まれた値を受取ることを保証する。そのアクセス時間は、フラッシュがキャッシュ制御器によって受取られた時間として与えられる。モジュール読取操作は、アクセス時間以後にシステムメモリの値と一貫性のあるデータ値を得ることが保証される。共用メモリ内のアドレスに対するモジュールによる書込操作の場合には、パージ操作は、書込まれたデータがアクセス時間の後に全てのメモリユーザによって読取可能であることを保証する。アクセス時間はデータキャッシュのパージに続いてシステムメモリに対して書込操作が実施された時間として与えられる。
【００３８】  典型的な操作においては、ＰＣＩバス２０５に結合されているコンポーネントが共用メモリ位置へアクセスすることを所望し、ＰＣＩブリッジ２０７に対してＰＣＩ標準ＤＭＡ信号処理プロトコルを使用してメモリ要求をアサート即ち活性化させる。ＣＰＵ２０１はＰＣＩ２０５へ直接的に結合されているものではないので、この信号処理プロトコルはＣＰＵ２０１によって認識されることはない。本発明に基づく操作はＰＣＩモジュール２０７を参照して説明するが、共用メモリを使用することを所望するバス２０２へ結合されている任意のモジュールが以下に説明するステップを実現することが可能であることを理解すべきである。
【００３９】  ＰＣＩモジュール２０７が共用メモリに対するコヒーレントな要求を完了することを望む場合には、モジュール２０７が図４に概略的に示したステップを実行する。ステップ４０１において、該モジュールはそのメモリ要求を複数個の非キャッシュラインに跨るシステム相互接続要求へ分割する。このように、各要求は単一のキャッシュラインに影響を与えることが確保され、且つキャッシュ／ＭＭＵはキャッシュ跨り要求を認識し且つ実現するために特別の動作を実行することが必要なものではない。フラッシュ要求及びパージ要求の両方がパケット化され且つステップ４０３においてＣＰＵ２０１におけるキャッシュ／ＭＭＵと関連するポートに対してアドレスされる。次いで、要求モジュールがステップ４０４においてキャッシュ／ＭＭＵからの応答を受取ることを待機する。
【００４０】  共用メモリからの読取操作の場合には、メモリインターフェースユニット２０３に対してアドレスされたパケットにおいてステップ４０５においてロード要求がなされる。書込操作の場合には、ストア要求パケットがステップ４０７においてメモリインターフェースユニット２０３に対してアドレスされる。ステップ４０９において、外部メモリインターフェースユニットがコヒーレントアクセスの完了を表す応答パケットを発生する。
【００４１】  このように、本発明はバス２０２の基本トランズアクションセット内に組込まれたキャッシュ制御命令を提供している。この特徴は、バス２０２に結合されているモジュールがキャッシュ制御を実行し且つ共用メモリ資源のコヒーレントな即ち一貫性のある使用を確保することを可能としている。ＣＰＵ２０１のキャッシュ／ＭＭＵにおける対応する論理がキャッシュ制御トランズアクションに応答して要求モジュールの変わりにキャッシュ制御操作を実行する。
【００４２】  要求モジュール（例えば、ＰＣＩブリッジ２０７）内のコヒーレンシィ論理が、好適には、１つ又はそれ以上のキャッシュウインドウを特定することが可能であり且つコヒーレンシィ性能を増加させるためにキャッシュ内の特定の領域に対してのキャッシュポリシィの遠隔的特定を行うことを可能とする。このことは、図５に示した制御レジスタ空間５０１を与えることによって実現され、それはスヌープポリシィ又はモード及びスヌーピングに対するアドレス範囲を特定する。ＰＣＩモジュール２０７内のスヌープアドレスレジスタ６０１（図６に示してある）は１つ又はそれ以上のアドレスを格納する。スヌープ制御レジスタ５０１及びスヌープアドレスレジスタ６０１の両方が異なるスヌープポリシィを有する任意の数のキャッシュ領域を特定する任意の数のラインを有している。各スヌープ制御レジスタは対応するスヌープアドレスレジスタを有している。
【００４３】  特定の実施例においては、２ビットモードフィールドが、ＰＣＩ要求におけるアドレスがスヌープアドレスレジスタ内に格納されているアドレスと比較されるか否か及びどのようにして比較されるかを表す。１つの例示的なコード化を以下の表１に要約してある。
【００４４】
【表１】
0005265827.tif 000002
【００４５】  レンジフィールドは特定の実施例においては８個の可能な値を有しており、各値はＰＣＩ要求におけるメモリアドレスとレジスタ６０１における格納されているスヌープアドレスとの比較期間中にマッチ即ち一致が発生するアドレスの範囲を表す。基本的には、レンジフィールドの各値は格納されているスヌープアドレスの中で何個のビットがその比較に参加するかを表す。以下の表には例示的なコード化を要約してある。
【００４６】
【表２】
0005265827.tif 000003
【００４７】  実際のコード化及びレンジの寸法及びイネーブルされる個別的な範囲の数は特定のアプリケーションの必要性を満足するために選択される設計的事項である。このように、スヌープアドレスレジスタ６０１内にアドレスを格納することによってキャッシュ区画化を実現することが可能であり、その区画の寸法はスヌープ制御レジスタ５０１のレンジフィールド内に格納される値によって特定される。その区画に対するキャッシュコヒーレンスポリシィは、スヌープ制御レジスタ５０１の対応するモードフィールド内に値を設定することによって制御することが可能である。本発明のこの特徴は、ＣＰＵ２０１内の制御レジスタの処理を必要とすることのない態様でキャッシュポリシィの遠隔的特定を行うことを可能とする。フラッシュ又はパージコマンドが発行されるか否かはＰＣＩモジュール２０７によって決定され、且つＣＰＵ２０１内のキャッシュ／ＭＭＵは、単に、応答して発行されたキャッシュ制御コマンドを実行し且つアクノレッジするに過ぎない。
【００４８】  上述した特徴を実現するために、ＰＣＩモジュール２０７は、図４に示したステップ４０１の前に、要求された共用メモリアドレスがスヌープ制御レジスタ５０１によって特定された境界内においてスヌープアドレスレジスタ６０１内に特定されたアドレスとマッチ即ち一致するか否かをチェックするステップを行う。格納されているアドレスはスヌープが実施されるべきであることを表す場合があり、その場合には処理はステップ４０１へ進行する。一方、スヌープが実施されるべきでない場合には、処理はステップ４０５及び４０７へ進行する。
【００４９】  上述した具体例は、モードフィールドに対して付加的なビットを付加することによって拡張することが可能である。例えば、特定の実施例はキャッシュポリシィに基づいて最適化を実施することが可能である。各定義されたスヌープレンジに対して、２つのオプションの挙動の間で選択を行うために単一のビットを使用することが可能である。例えば、各スヌープレンジは「読取でのフラッシュ、書込でのパージ」又は「読取では何もなし、書込でのパージ」のポリシィを割り当てることが可能である。モードフィールドにおける単一のビットは各キャッシュ領域に対してポリシィの選択を独立的なものとさせることを可能とする。このオプションの特徴は、不必要なコヒーレンシィトランズアクションの数を減少させる。特に、ＣＰＵキャッシュポリシィがライトスルーである場合には、キャッシュ内にダーティデータが存在する可能性はなく、従って遠隔的に開始されるフラッシュは冗長的である。最適化はこれらの冗長な操作を回避することを可能とする。
【００５０】  以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。例えば、本発明はソフトウエアで実現することも可能である。例えば、充分な複雑性を有するプログラマブルロジック装置、ハードウエアエミュレータ、ソフトウエアエミュレータ等がエミューレートされるか又はシミュレートされた順番外マシンにおいて精密なアーキテクチャのアップデートを実施するために具体化されたコンピュータ読取可能なコードを有するコンピュータによって使用可能な媒体を包含するコンピュータプログラム製品として本発明を実現することが可能である。
【図面の簡単な説明】
【図１】  本発明に基づく装置及びシステムを組込んだコンピュータシステムの概略ブロック図。
【図２】  本発明に基づく装置及び方法を組込んだプロセッサを示した概略ブロック図。
【図３】  本発明に基づくバストランズアクションを示した概略図。
【図４】  本発明に基づく共用メモリアクセス操作を示したフローチャート。
【図５】  本発明に基づく例示的な制御レジスタフォーマットを示した概略図。
【図６】  本発明に基づく例示的なスヌープアドレスレジスタのフォーマットを示した概略図。
【符号の説明】  １００  メディアプロセッサ
１０１  プロセッサ
１０２  高速バス
１０４  ペリフェラルバス
１０５  ビデオ制御器
１０６  メモリバス
１０７  オーディオ制御器
１０９  ネットワークＩ／Ｏ制御器
【図１】
0005265827.tif 000004
【図２】
0005265827.tif 000005
【図３】
0005265827.tif 000006
【図４】
0005265827.tif 000007
【図５】
0005265827.tif 000008
【図６】
0005265827.tif 000009