(57)【特許請求の範囲】
【請求項１】
キャッシュ（１２４）及び下位メモリシステム（１７０）を有するメモリ階層を持つデータ処理システムにおいて、
少なくとも一つの前記キャッシュ（１２４）のキャッシュラインにメモリロケーションを割り当て、
データプロデューサ（１２２）により、前記少なくとも一つのキャッシュラインへデータエレメントを書き込み、かつ、
データコンシューマ（１６０）から前記データエレメントに対してのリードワンスリクエストを受信し、前記データコンシューマは、前記リードワンスリクエストを通じて、前記少なくとも一つのキャッシュラインがライトバックが行われることなく無効にされることを指示し、かつ、
前記リードワンスリクエストに応答して前記キャッシュ（１２４）から前記データエレメントを直接読み出すことによって前記データコンシューマ（１６０）へ前記データエレメントを送り、かつ、その後、前記下位メモリシステム（１７０）にアクセスせずに、前記少なくとも一つのキャッシュラインの割り当てを解除する、というステップを有する方法。
【請求項２】
前記割り当て解除のステップが、前記読み出しステップに応答して、前記少なくとも一つのキャッシュラインを無効としてマークするステップを有する、請求項１記載の方法。
【請求項３】
前記割り当てのステップが、前記下位メモリシステム（１７０）にアクセスせずに、前記キャッシュ（１２４）の、前記少なくとも一つのキャッシュラインへ、前記メモリロケーションを割り当てるステップを有する、請求項１記載の方法。
【請求項４】
前記データエレメントを書き込む前記ステップが、データ通信フレームの少なくとも一部を書き込むステップを有する、請求項１記載の方法。
【請求項５】
キャッシュ及び下位メモリシステムを含むメモリ階層を有すデータ処理システムにおいて、オーバーヘッドを小さくするための方法であって、
データエレメントに対するリードワンスリクエストを受信し、前記リードワンスリクエストは、少なくとも一つのキャッシュラインがライトバックが行われることなく無効にされることを指示するものであり、
前記少なくとも一つのキャッシュラインにおいて、前記データエレメントの存在に対してプロービングし、
前記プロービングステップとともに、前記少なくとも一つのキャッシュラインの次の状態が無効であることを示し、かつ、
前記キャッシュに前記データエレメントが記録される場合、前記キャッシュの前記少なくとも一つのキャッシュラインからデータを送るとともに前記少なくとも一つのキャッシュラインを無効にする、あるいは、前記キャッシュに前記データエレメントが記録されない場合、前記下位メモリシステムから前記データエレメントをフェッチする、のいずれか一方により、前記リードワンスリクエストに応じる、ステップを有す方法。
【請求項６】
前記少なくとも一つのキャッシュラインからデータを送る前記ステップは、
下位メモリシステムにアクセスを開始し、かつ
続いて、前記キャッシュに記録されるべき前記データエレメントが検知された場合は、前記アクセスを中断する、請求項５記載の方法。
【請求項７】
前記リードワンスリクエストを受信する前記ステップが更に、ハイパートランスポートＴＭＩ／Ｏリンク仕様書バージョン１．０３と実質的に互換性があるリンクを使用して、前記リードワンスリクエストを受信するステップを有する、請求項１あるいは請求項５のいずれかに記載の方法。
【請求項８】
データプロセッサ（１２０）であって、
キャッシュ（１２４）を含む中央処理装置（１２２）を有し、
前記中央処理装置（１２２）と結合され、データコンシューマ（１６０）からデータエレメントに対するリードワンスリクエストを受信できるホストブリッジ（１３０）を有し、前記データコンシューマは、前記リードワンスリクエストを通じて、少なくとも一つのキャッシュラインがライトバックが行われることなく無効にされることを指示するものであり、
前記ホストブリッジ（１３０）と結合された入力を有し、かつ前記中央処理装置（１２２）と結合された出力を有するメモリコントローラを有し、
前記メモリコントローラ（１２６）は、前記リードワンスリクエストを受信して、前記データエレメントに対し、前記中央処理装置へプローブを発行するものであり、このプローブは、前記データエレメントを有する前記少なくとも一つのキャッシュラインの次の状態が無効であることを示すものであり、
前記キャッシュ（１２４）が前記データエレメントを含む場合、前記中央処理装置（１２２）は、前記ホストブリッジ（１３０）へ前記データエレメントを送り、かつ、前記キャッシュ（１２４）は前記少なくとも一つのキャッシュラインが無効であるとマークする、データプロセッサ（１２０）。
【請求項９】
前記ホストブリッジ（１３０）が、ハイパートランスポートＴＭＩ／Ｏリンク仕様書バージョン１．０３と実質的に互換性があるリンクを使用して、入力／出力デバイス（１６０）と結合される、請求項８記載のデータプロセッサ（１２０）。
【請求項１０】
前記中央処理装置（１２２）、前記ホストブリッジ（１３０）、及び前記メモリコントローラ（１２６）が、単一の集積回路に組み込まれている、請求項８記載のデータプロセッサ（１２０）。
【発明の詳細な説明】
【技術分野】
【０００１】
概して本発明はデータ処理システムに関し、更に具体的には、キャッシュを備えたデータ処理システムに関する。
【背景技術】
【０００２】
コンピュータシステムの性能を向上させる周知の方法は、キャッシュとしてローカル高速メモリを備えることである。中央処理装置（ＣＰＵ）が特定のアドレスにおいてデータエレメントにアクセスすると、その次は隣接するアドレスへアクセスするため、キャッシュはシステム性能を向上させる。キャッシュは、より低速であるメインメモリあるいは下位キャッシュから、要求されるデータの一部に隣接して配置されるデータをフェッチ及び記録する。ＣＰＵに最も近接し、上位あるいは“Ｌ１”としてよく知られているキャッシュは、階層の最上位のキャッシュであり、通常は最速である。次いで他の、通常遅いキャッシュは、“Ｌ２”キャッシュから始まり、メインメモリに結合されている最下位のキャッシュまで、降順に配置される。
【０００３】
キャッシュがデータを記録及び破棄する場合は、特定の方式に従う。例えば、多くのプロセッサは、ＣＰＵにより書き込みされるメモリロケーションに対応するキャッシュラインが、キャッシュに記録される“アロケートオンライト”(allocate-on-write)方式に従う。典型的にキャッシュは、全ての場所(location)が一杯になると、新たなデータエレメント用に場所を作るために、どの場所を破棄すべきかを判断する、ＬＲＵ（最長時間未使用：least-recently-used）として知られている方式に従う。
【０００４】
典型的にキャッシュは、システムを通してデータのコヒーレンシーを維持するために、キャッシュラインの状態を示すためのマルチステータスビット(multiple status bits)を有す。１つの一般的なコヒーレンシープロトコルは、“ＭＯＥＳＩ”プロトコルとして周知である。このプロトコルによれば、各キャッシュラインは、ラインがどのＭＯＥＳＩ状態にあるかを示すためのステータスビットを含む。ステータスビットには、キャッシュラインが変更されている（Ｍ）ことを示すビット、キャッシュラインが排他的（Ｅ）である、あるいは共有（Ｓ）であることを示すビット、あるいはキャッシュラインは無効である（Ｉ）ことを示すビットを含む。オウンド（Ｏ：Owned）状態は、ラインが一つのキャッシュで変更されること、他のキャッシュに共有コピーがありうること、また、メモリのデータが古い状態、つまりステイルな状態であることを示す。
【０００５】
典型的な構造では、全キャッシュは同じ集積回路のＣＰＵに結合され、またメインメモリは外部に配置される。メインメモリは、システムにおいて、一番遅く、一番安いメモリであり、安価であるが相対的に遅いダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）チップから構成されうる。この特徴が外部のＤＲＡＭメインメモリへのアクセスでボトルネックをもたらす。そのため、これらのボトルネックをできるだけ回避することが望ましい。更に近年は、マイクロプロセッサの速度はＤＲＡＭのアクセス速度よりも速くなっており、このボトルネック問題を悪化させている。
【発明の開示】
【０００６】
本発明によれば、キャッシュ及び下位メモリシステムを備えたデータ処理システムにおいて、オーバーヘッドを小さくするための方法が提供されている。まずキャッシュの少なくとも一つのキャッシュラインに、メモリロケーションが割当てられる。データプロデューサが少なくとも一つのキャッシュラインにデータエレメントを書き込む。リードワンスリクエストがデータコンシューマから受信される。それに応答して、キャッシュからデータエレメントを直接読み込むことにより、データエレメントがデータコンシューマに送られる。その後キャッシュラインは、下位メモリシステムにアクセスせずに、割当てを解除される。
【０００７】
一形態では、本発明は、キャッシュ、ホストブリッジ、及びメモリコントローラを備えた中央処理装置を持つデータプロセッサを有す。ホストブリッジは中央処理装置に結合されており、データエレメントに対するリードワンスリクエストをデータコンシューマから受信するように構成されている。メモリコントローラはホストブリッジと結合されている入力、及び中央処理装置と結合されている出力を有す。メモリコントローラは、リードワンスリクエストの受信に応答して、中央処理装置へデータエレメントに対するプローブを発行する。プローブは、リクエストされたデータエレメントを含む、少なくとも一つのキャッシュラインの次の状態が無効であることを示す。キャッシュがデータエレメントを有す場合、中央処理装置はホストブリッジへデータエレメントを送るとともに、キャッシュは少なくとも一つのキャッシュラインが無効であることをマークする。
【０００８】
本発明は以下に添付の図面とともに解説され、同じ番号は同じ要素を示す。
【発明を実施するための最良の形態】
【０００９】
図１に、従来技術に公知のデータ処理システムにおける制御信号、及びデータの流れに関連するタイミング図を示す。図１に示すように、縦軸は、上から下へと流れる時間を表す。図１は水平方向沿いに割当てられた縦線として３つのデバイス（ノード）を描いている。“ＮＯＤＥ  Ａ”と名付けられた第一ノードは、データコンシューマである。例えば、ＮＯＤＥ  Ａは、データ通信チャネルの送信機などの、入力／出力デバイスに対応しうる。この例では、ＮＯＤＥ  Ａはデータの流れをアシストするために、関連のダイレクトメモリアクセス（ＤＭＡ）コントローラを持つことができる。“ＮＯＤＥ  Ｂ”と名付けられた第二ノードは、下位メモリシステムであり、メインメモリと、場合によっては、一つ以上の下位キャッシュを有す。“ＮＯＤＥ  Ｃ”と名付けられた第三ノードは、アプリケーションプログラムを実行する中央処理装置などのキャッシュを持つデータプロデューサである。データ通信コンテキストでは、ＮＯＤＥ  Ｃは、ＮＯＤＥ  Ａに結合されるデータ通信デバイスにより、最終通信のために、メモリのサーキュラバッファシステムを使用して、データフレームの形状でデータを生成する。
【００１０】
以下にデータの流れ、及び制御信号を解説する。まず、通信プロトコルドライバなどの、ＮＯＤＥ  Ｃで実行するアプリケーションプログラムがデータフレームを生成する。ＮＯＤＥ  Ｃは、メモリロケーションに記録オペレーションを実施することにより、データフレームに対するデータを書き込む。ＮＯＤＥ  Ｃのローカルキャッシュにアドレスが割当てられていないので、ＮＯＤＥ  Ｃは矢印１２で表されるメインメモリへ記録リクエストを開始する。ＮＯＤＥ  Ｂにおけるメモリコントローラは、時間１４の間にメモリアクセスを開始し、ＮＯＤＥ  Ｃを含む全キャッシュに無効プローブ１６を送る。無効プローブは、コヒーレンシーのために、メモリコントローラが排他状態のキャッシュラインを、ＮＯＤＥ  Ｃへ割当てようとしていることをシステムの全キャッシュに知らせる。データが下位メモリシステムから戻されると、メモリコントローラがそのデータを、矢印１８により示されているように、ＮＯＤＥ  Ｃのデータ処理キャッシュへフォーワードする。
【００１１】
キャッシュの書き込み完了後、ＮＯＤＥ  Ｃのアプリケーションプログラムは、ＮＯＤＥ  ＣからＮＯＤＥＡへ、通知メッセージ２２を介して、データフレームの生成を知らせる。ＮＯＤＥ  ＡはＮＯＤＥ  Ｂに戻り、ＤＭＡリードリクエスト２４で応答する。ＮＯＤＥ  Ｂは時間２６の間にメモリアクセスを開始し、ＮＯＤＥ  Ｃへプローブ２８を送る。このデータはＮＯＤＥ  Ｃにおいてキャッシュに存在するので、矢印３０により示されているように、データプロセッサはこのリクエストに応じるためにデータを戻す。その後、ＮＯＤＥ  Ａにおけるデータコンシューマは、期間３２の間に、通信チャネルの送信ＦＩＦＯ（first-in, first-out）メモリ、送信バッファなどに、データを書き込む。
【００１２】
システムの他のイベントに基づいて、所定の時間が経過した後、ＮＯＤＥ  Ｃにおけるキャッシュに記録された、変更されたキャッシュラインは、最長時間未使用のキャッシュラインとなり、キャストアウトがなされる。その後、ＮＯＤＥ  Ｃは、矢印３６として示されているように、変更されたデータをＮＯＤＥ  Ｂにおける下位メモリシステムへ送ることにより、ライトバックを実施する。ＮＯＤＥ  Ｂにおけるメモリコントローラは、期間３８の間に、下位メモリシステムへデータを書き込む。
【００１３】
この従来のオペレーションが、メインメモリへ、一つのリード（読み出し）及び一つのライト（書き込み）を要求し、これにより、期間１４及び３８の間に、メインメモリバスを占有する点に留意すべきである。高帯域幅通信プロトコルを実装しているシステムに対して多くの場合このオペレーションが繰り返され、利用可能な帯域幅の多くの部分を消費する。近年、メインメモリのスピードは高まっているものの、プロセッサのスピードほど速くなく、また、このオペレーションに要求されるメインメモリバスの帯域幅の縮小は望ましくない。
【００１４】
メインメモリにおける帯域幅を小さくするために、発明者は、通信オペレーションはデータはプロセッサのキャッシュにのみ依存して単独でオペレーションを行うという特殊なものであるということを見いだし、メインメモリへのアクセス要求をまったく行わないようにした。更に、データが使用されるのは一度だけなので、その後のライトバックは要求されない。発明者はライトバックを回避するために、そのような状態を知らせるための、またライトバックの発生を防ぐための、方法及び対応のデータ処理システムを考案した。システムには、キャッシュライン状態のナンバーを追加せずに無効プローブに応答する、汎用キャッシュを備えて実装されうる。そのような方法は図２を参照して理解されうるものであり、図２は、本発明による制御信号及びデータの流れに関連するタイミング５０を示す図である。図１と同様に、縦軸は、上から下へ流れる時間を表し、また横軸は上述と同じ３つのノードを描いている。
【００１５】
オペレーションはＣＰＵと“ＰＲＥＦＥＴＣＨ  ＡＬＬＯＣＡＴＥ”として周知のメモリコントローラとの間のリクエスト５２から開始する。この特別なキャッシュコントロール命令により、キャッシュラインが、ＤＲＡＭからメモリロケーションのコンテンツをリードせずに、ＮＯＤＥ  Ｃのキャッシュへ割り当てられる。ラインのコンテンツは全てゼロにセットされ、またラインはＭ状態において生成される。メモリコントローラは、そのディレクトリをアップデートし、ターゲット完了信号５４で応答する。その後、データプロセッサのドライバプログラムが、時間５６の間に、フレームを構成するためにキャッシュへ直接データを書き込む。アプリケーションプログラムがフレームを構成すると、通知メッセージ５８をＮＯＤＥ  Ａにおける入力／出力デバイスのＤＭＡコントローラへ送る。Ｉ／Ｏデバイスは、ＤＭＡリードリクエスト６０でＮＯＤＥ  Ｂへ応答する。ＮＯＤＥ  Ｂはメモリアクセスを開始し、ＮＯＤＥ  Ｃへプローブ６２を送る。次いでＮＯＤＥ  Ａがその内部ＦＩＦＯへデータを書き込み、あるいは後の送信のために、期間６６の間にバッファを送信する。ＮＯＤＥ  Ａがデータをリードすると、ＮＯＤＥ  Ｃにおけるキャッシュが、通常は要求されるライトバックなしに、キャッシュラインの割当てを解除する。このオペレーションにより、データ処理システムは、ＰＲＥＦＥＴＣＨ  ＡＬＬＯＣＡＴＥ命令を使用することにより、またリードと同時にキャッシュからデータを取り除く（解除する）ことにより、下位メモリシステムへの全アクセスを回避できる。
【００１６】
キャッシュラインのコンテンツをメインメモリへライトバックせずに、キャッシュラインの割当てを解除する方法が少なくとも３つある。第一に、ＮＯＤＥ  ＡにおけるＩ／Ｏコントローラが、キャッシュラインがライトバックされずに無効にされる予定であることを示す、ＲＥＡＤ  ＯＮＣＥアトリビュート信号を追加できることである。第二に、ＮＯＤＥ  ＣにおけるＣＰＵが、ＤＭＡリードリクエストに対するＩ／Ｏアドレスをデコードでき、また、所定のアドレスウインドウ内にリードが収まる場合、ラインを無効にすることである。第三に、データ処理の命令セットが、シングルキャッシュラインの割り当てを解除するために、“ＣＦＬＵＳＨ  ＤＥＡＬＬＯＣＡＴＥ”コマンドを追加するよう変更されうることである。以下に詳細を更に説明しているように、発明者は、オンチップのＩ／Ｏコントローラのいくつかの有益な特徴を利用するために、第一の技術を選択している。この技術及び実装する装置は、以下の図３及び図４を参照して、以下に更に詳しく解説される。
【００１７】
図３に、本発明によるデータ処理システム１００のブロック図を示す。一般に、データ処理システム１００は、シングルチップマイクロプロセッサ１２０の形状のデータプロセッサ、入力／出力（Ｉ／Ｏ）デバイス１６０、及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）１７０を備えている。一般に、マイクロプロセッサ１２０は、中央処理装置（ＣＰＵ）１２２、メモリコントローラ１２６、“ＸＢＡＲ”と名付けられたクロスバースイッチ１２８、及び、更なる詳細を以下に説明している、各々が “ＨＴ” （ハイパートランスポート：HyperTransport）と名付けられている３つのホストブリッジ、１３０、１４０及び１５０を備えている。ＣＰＵ１２２はいわゆる、ｘ８６命令セットの命令を実行するように構成されているプロセッサである。このｘ８６命令は、８０８６のマイクロプロセッサの命令セットに基づくものであり、カリフォルニア州サンタクララのインテルコーポレーションにより最初に製造されたものである。しかしながら、ＣＰＵ１２２は、パイプライン化やスーパースカラ設計を含む、ｘ８６プログラムを高性能で実行するための多くの優れた機能を有す。ＣＰＵ１２２は、頻繁に使用されるデータを記録するために、少なくとも一つのキャッシュ１２４を備えている。好ましい形態では、ＣＰＵは実際には２つのＬ１キャッシュ（一方は命令用、そしてもう一方はデータ用）と、命令及びデータストリームにより共有されるＬ２キャッシュを備えている。この形状では、共有のＬ２キャッシュはＲＥＡＤ  ＯＮＣＥデータを記録する。しかしながら、本発明は少なくとも一つのキャッシュを持つＣＰＵに応用が可能である。
【００１８】
メモリコントローラ１２６は、マイクロプロセッサ１２０とＤＲＡＭ１７０との間にデータを送信するための機構である。メモリコントローラ１２６は、ＣＰＵ１２２からメモリアクセスを開始、終了するタスクをオフロードする。また、メモリコントローラ１２６は、内部キューを有し、ＤＲＡＭ１７０へ外部バスの効率的な使用が可能になる。他の実施形態では、ＤＲＡＭ１７０は一つ以上の付加的なキャッシュ及びメインメモリを含む下位メモリシステム、スタティックＲＡＭ、非揮発性メモリ、などにより交換されうる。
【００１９】
ＸＢＡＲ１２８は、バスをマイクロプロセッサ１２０内部へ連結させるように設計された、スイッチ／マルチプレックス回路である。
【００２０】
ホストブリッジ１３０、１４０及び１５０は、対応する出力チャネル１３２、１４２及び１５２を通って、また、対応する入力チャネル１３４、１４４、及び１５４を通って、マイクロプロセッサ１２０の外部のデバイスと結合されている。ホストブリッジ１３０、１４０及び１５０の各々は、HyperTransportTM I/O Link Specification、Revision 1.03、２００１ハイパートランスポートテクノロジーコンソーシアム（2001 HyperTransport technology Consortium）と互換性があり、かつ、１６００ＭＨｚのデータ転送速度を使用する場合、３．２ＧＢ／秒のスループットを達成することができる。ハイパートランスポート技術とは、それぞれが独立した単方向性の２本の配線に実装されるバケットベースのリンクのことである。よって、例えば、ホストブリッジ１３０が出力接続１３２及び入力接続１３４を通ってＩ／Ｏデバイス１６０と通信する。ハイパートランスポートリンクは、名目上はポイントツーポイントのリンクであり、２つのデバイスを接続する。ハイパートランスポートリンクのチェーンは、Ｉ／Ｏデバイスとブリッジをホストシステムに接続するＩ／Ｏチャネルとして使用することもできる。
【００２１】
ハイパートランスポートリンクは、ＣＰＵ、メモリ、及びＩ／Ｏデバイス間に高性能でスケーラブルな相互接続をするように設計される。ハイパートランスポートリンクは、非常に高速なデータ転送速度を実現するために、オン−ダイ差動終端（ディファレンシャルターミネイション）を備えた低振動の差動信号を使用する。ハイパートランスポートリンクは、スケーラブルな帯域幅を実現するために、スケーラブルな周波数及びデータ幅を使用する。
【００２２】
Ｉ／Ｏデバイス１６０は、データコンシューマとして機能する入力／出力デバイスである。例示の実施形態では、Ｉ／Ｏデバイス１６０は、電気電子技術者協会（ＩＥＥＥ：Institute of electrical and Electronics Engineers）により、ＩＥＥＥ８０２．３委員会の下で規格化される、ローカルエリアネットワーク通信プロトコルを実装しているコントローラであり、一般に“イーサネット”と言われている。しかしながら本発明は他のデータコンシューマにも同様に応用が可能である。
【００２３】
動作では、ＣＰＵ１２２に実行するアプリケーションプログラムは、キャッシュ１２４においてフレームを送信及び記録するために、フレームを準備する。図２に関して上述しているように、ＣＰＵ１２２は、キャッシュラインが、ＤＲＡＭ１７０にアクセスすることなくキャッシュ１２４に割り当てられるように、まずはＰＲＥＦＥＴＣＨ  ＡＬＬＯＣＡＴＥコマンドを実施する。Ｉ／Ｏデバイス１６０は、外部のイーサネットバスにこのデータを送信する前に、このデータにアクセスする。ハイパートランスポート規格によれば、Ｉ／Ｏデバイス１６０は、ハイパートランスポートリンクを通って、ブロックリードリクエストパケットを送ることにより、このデータエレメントを要求できる。ＨＴブロック１３０は、ブロックリードリクエストを受信し、受信したブロックリードリクエストを、ＸＢＡＲ１２８を通ってメモリコントローラ１２６へフォーワードする。次に、メモリコントローラ１２６は、オンチップデバイスをプローブし、それらのオンチップデバイスがリクエストデータエレメントの有効コピーを含んでいるかどうかを判断する。この例では、キャッシュ１２４はこのデータの有効なコピーを含んでいる。キャッシュ１２４はＨＴブロック１３０を通ってＩ／Ｏデバイス１６０にこのデータをフォーワードすることにより、アクセスを完了する。
【００２４】
既存データでは、プロセッサのキャッシュ１２４は、ＬＲＵ交換方式などの周知の方式に従う。このデータエレメントが最長時間未使用データエレメントになるとともに、キャッシュ１２４が新たなキャッシュラインを割り当てる必要がある場合は適宜、キャッシュ１２４はメモリコントローラ１２６を通ってＤＲＡＭ１７０へデータを書き込む。しかしながら、プロデューサ−コンシューマデータ通信の例などの場合では、このデータはシステムにより一度だけ使用され、ＤＲＡＭ１７０への書き込みは不要となる。従って、本発明によれば、Ｉ／Ｏデバイス１６０は、ハイパートランスポート入力チャネル１３４を通して、ＲＥＡＤ  ＯＮＣＥパケットとして周知の新たなパケットタイプを送る。好ましくはＲＥＡＤ  ＯＮＣＥパケットは、現在のところ、ハイパートランスポートの規格には定義されていない、リザーブされたリードリクエストパケットのコマンドフィールドのエンコーディングを使用し、リクエストデータの用途がＲＥＡＤ  ＯＮＣＥを目的とするものであることを知らせる。ＲＥＡＤ  ＯＮＣＥリクエストにより、マイクロプロセッサ１２０は、ライトバックに通常要求されるＤＲＡＭアクセスを抑制でき、これにより、メインメモリバスの帯域幅を維持することができる。
【００２５】
今後のＤＲＡＭアクセスを抑制する機構が以下に詳細に説明される。この新たなＲＥＡＤ  ＯＮＣＥリクエストを受信すると、メモリコントローラ１２６は、リクエストデータエレメントを持ついずれのデバイスのキャッシュラインにおいて次の状態は無効（Ｉ：Invalid）であることを示すプローブを発行する。従って、データエレメントを記録している場合、キャッシュ１２４はメモリコントローラ１２６へリクエストデータをフォーワードするとともに、データエレメントが配置されているキャッシュラインは無効とマークする。ＲＥＡＤ  ＯＮＣＥデータを含むキャッシュラインは無効であるとマークすることにより、有効なキャッシュラインがキャッシュ１２４からキャストアウトされる場合、マイクロプロセッサ１２２では、ＤＲＡＭ１７０へ戻りデータを書き込む必要性が回避される。
【００２６】
図４にＲＥＡＤ  ＯＮＣＥリクエストパケットを形成するために使用されうるハイパートランスポートパケット２００の図を示す。このパケット構造は、アドレスを持つリクエストパケットとして周知である。パケットは付加的な４バイトのアドレスを持つ４バイト長である。本発明によれば、Ｉ／Ｏデバイス１６０は、コマンドフィールドへ新たなＲＥＡＤ  ＯＮＣＥのエンコーディングを挿入することにより、ＲＥＡＤ  ＯＮＣＥリクエストに信号を送る。以下に更なる詳細を説明する。
【００２７】
このパケットに関連する様々なフィールドを解説する。[ビットタイム（Bit-time）０のビット７と６、及びビットタイム１のビット６と５を連結させて形成された]ＳｅｑＩＤ［３：０］が、リクエストのタググループとして使用される。タググループはデバイスにより順序付けされたシーケンスの一部として発行されたものであり、また、仮想チャネル内にしっかりと順序付けられる必要があるものである。対応するゼロ以外のＳｅｑＩＤを持つ同じＩ／Ｏストリーム、及び、仮想チャネル内の全てのリクエストは、自身の順番を維持する必要がある。０×０のＳｅｑＩＤ値は、トランザクションがシーケンスの一部でないことを示すためにリザーブされる。この値を持つトランザクションは、シーケンスオーダリング(sequence-ordering)の制限はないが、それらのトランザクションはハイパートランスポート定義のチャプター６に解説されているような他の理由により順序付けられうる。
【００２８】
Ｃｍｄ［５：０］フィールドは、ハイパートランスポートプロトコルにおいて、様々なコマンドに信号を送るために使用される。２００１ハイパートランスポート規格は、Ｃｍｄ［５：０］フィールドの様々なエンコーディングを定義し、また他のエンコーディングをリザーブする。表１に、定義され、リザーブされたエンコーディングを示す。
【００２９】
表１
│コード│仮想チ│コマンド  │コメント／オプション│パケット│ 
│      │ャンネ│          │                    │タイプ  │ 
│      │ル(VCh│          │                    │        │ 
│      │an)   │          │                    │        │ 
│000000│−    │ＮＯＰ    │ヌルパケット。フロー│情報    │ 
│      │      │          │制御情報を含む。    │        │ 
│      │      │          │                    │        │ 
│000001│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│000010│ＮＰＣ│フラッシュ│ポスティッドライトを│リクエス│ 
│      │      │          │フラッシュ          │ト      │ 
│000011│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│x01xxx│ＮＰＣ│ライト    │書き込みリクエスト  │        │ 
│      │あるい│(sized）  │［５］リクエストがポ│        │ 
│      │はＰＣ│          │スティッドであるかど│        │ 
│      │（ビッ│          │うかを定義          │        │ 
│      │ト５）│          │０：ノンポスティッド│        │ 
│      │      │          │１：ポスティッド    │        │ 
│      │      │          │［２］データ長を定義│        │ 
│      │      │          │０：バイト          │        │ 
│      │      │          │１：ダブルワード    │        │ 
│      │      │          │［１］帯域幅／レイテ│        │ 
│      │      │          │ンシー要求を定義    │        │ 
│      │      │          │０：ノーマル        │        │ 
│      │      │          │１：アイソクロナス  │        │ 
│      │      │          │［０］アクセスがホス│        │ 
│      │      │          │トキャッシュコヒーレ│        │ 
│      │      │          │ンスを要求するかどう│        │ 
│      │      │          │かを示す（ホストメモ│        │ 
│      │      │          │リへのアクセスでない│        │ 
│      │      │          │場合は無視）        │        │ 
│      │      │          │０：ノンコヒーレント│        │ 
│      │      │          │１：コヒーレント    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│01xxx │ＮＰＣ│リード    │［３］応答に対するオ│リクエス│ 
│01xxx │      │（sized） │ーダリング要求を定義│ト／アド│ 
│      │      │          │０：応答はポスティッ│レス    │ 
│      │      │          │ドリクエストをパスし│        │ 
│      │      │          │ない                │        │ 
│      │      │          │１：応答はポスティッ│        │ 
│      │      │          │ドリクエストをパスす│        │ 
│      │      │          │る                  │        │ 
│      │      │          │［２］データ長を定義│        │ 
│      │      │          │０：バイト          │        │ 
│      │      │          │１：ダブルワード    │        │ 
│      │      │          │［１］帯域幅／レイテ│        │ 
│      │      │          │ンシー要求を定義    │        │ 
│      │      │          │０：ノーマル        │        │ 
│      │      │          │１：アイソクロナス  │        │ 
│      │      │          │［０］アクセスがホス│        │ 
│      │      │          │トキャッシュコヒーレ│        │ 
│      │      │          │ンスを要求するかどう│        │ 
│      │      │          │かを示す（ホストメモ│        │ 
│      │      │          │リへのアクセスでない│        │ 
│      │      │          │場合は無視）        │        │ 
│      │      │          │０：ノンコヒーレント│        │ 
│      │      │          │１：コヒーレント    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│100xxx│      │リザーブド│                    │        │ 
│      │      │−Ｉ／Ｏ  │                    │        │ 
│110000│Ｒ    │Ｒｄ応答  │リード応答          │応答／デ│ 
│      │      │          │                    │ータ    │ 
│110001│      │リザーブド│                    │        │ 
│110010│      │−ホスト  │                    │        │ 
│      │      │          │                    │        │ 
│      │      │          │                    │        │ 
│コード│VChan │コマンド  │コメント／オプション│パケット│ 
│      │      │          │                    │タイプ  │ 
│110011│Ｒ    │ＴｇｔＤｏ│ターゲット完了をリク│応答    │ 
│      │      │ｎｅ      │エストのソースに伝え│        │ 
│      │      │          │る                  │        │ 
│      │      │          │                    │        │ 
│11010x│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│11010x│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│11011x│      │リザーブド│                    │        │ 
│      │      │−Ｉ／Ｏ  │                    │        │ 
│11100x│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│11100x│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│11100x│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│111010│ＰＣ  │ブロードキ│ブロードキャスト  メ│リクエス│ 
│      │      │ャスト    │ッセージ            │ト／アド│ 
│      │      │          │                    │レス    │ 
│111011│      │リザーブド│                    │        │ 
│      │      │−ホスト  │                    │        │ 
│111100│ＰＣ  │フェンス  │ポスティッドリクエス│リクエス│ 
│      │      │          │トをフェンスする    │ト      │ 
│      │      │          │                    │        │ 
│111101│ＮＰＣ│アトミック│Atomic Read-Modify- │リクエス│ 
│      │      │  ＲＭＷ  │Write               │ト／アド│ 
│      │      │          │                    │レス／デ│ 
│      │      │          │                    │ータ    │ 
│111110│      │リザーブド│                    │        │ 
│      │      │−Ｉ／Ｏ  │                    │        │ 
│111111│      │同期化／エ│Link Synchronization│情報    │ 
│      │      │ラー      │ and Error Packet   │        │ 
【００３０】
ＰａｓｓＰＷは、このパケットが同じＩ／Ｏストリームのポスティッドリクエストチャネル内のパケットをパスできることを示す。そうでない場合、パケットはこれらのパケットの後ろにオーダーされる。
このビットは、ハイパートランスポート技術のスタンダードパーソナルコンピュータインターフェース（ＰＣＩ）と同様のオーダリングモデルを維持するためにクリアにされる必要がある。ＰＣＩ−ライクのオーダリングを必要としないシステムは、高性能化のためにＰａｓｓＰＷをセットすることができる。
【００３１】
ＵｎｉｔＩＤ［４：０］フィールドは、トランザクションにおいてパーティシパントを識別するように機能する。全パケットはファブリックの端において、ホストブリッジへ、又はホストブリッジから送信されるので、ソースあるいはデスティネーションノードのどちらか一方が含まれる。値０はホストブリッジのＵｎｉｔＩＤに対してリザーブされる。ＵｎｉｔＩＤの用途の更なる詳細については、２００１ハイパートランスポート規格のセクション４．２を参照のこと。マルチロジカルＩ／Ｏストリームを持つノードは、マルチＵｎｉｔＩＤ値を所有することができる。
【００３２】
ハイパートランスポートプロトコルは、コマンドに特有となる、ビットタイム２及び３の間に送信される２バイトをリザーブする。
【００３３】
Ａｄｄｒ［３９：２］は、リクエストによりアクセスされるダブルワードのアドレスを表す。リクエストタイプ全てに全てのアドレスビットが含まれているわけではない。細分性が更に要求される場合は、バイトマスクが使用される。
【００３４】
好ましくは、Ｉ／Ｏデバイス１６０は“Ｒｅｓｅｒｖｅｄ−Ｉ／Ｏ”とマークされているＣｍｄ［５：０］のフィールド定義のいずれかを用いて、ＲＥＡＤ  ＯＮＣＥリクエストに信号を送る。しかしながら、更に、Ｉ／Ｏデバイスに対しては、リザーブされたコマンドエンコーディングはごくわずかであるので、新たなＲＥＡＤ  ＯＮＣＥパケットが、好ましくは、ただ一つのＲｅｓｅｒｖｅｄ−Ｉ／Ｏコマンドエンコーディングを使用して、他の新たなパケットフォーマットと組み合わせられる。この目的は、他の新たなパケットタイプ間を区別するための付加的な状態をエンコードするために４ビットのＳｅｑＩＤフィールドを使用して達成される。
【００３５】
上述してきたＲＥＡＤ  ＯＮＣＥのシグナリングの論議は、ハイパートランスポートプロトコルに特有のものであることは明らにされるべきである。しかしながら、本発明の他の実施形態では、ＲＥＡＤ  ＯＮＣＥ状態のシグナリング法が使用されうる。例えば、ビットフィールドの特殊なエンコーエヒング、既存の、あるいは追加の入力／出力ピンなどが、ＲＥＡＤ  ＯＮＣＥ状態に信号を送るために使用されてよい。ＲＥＡＤ  ＯＮＣＥシグナリングは、Ｉ／Ｏ  ＤＭＡリードリクエストパケットのリザーブされた、又はベンダー独自のフィールドを使用することにより、ＰＣＩ、ＰＣＩ−Ｘ、ＰＣＩＥなどの他のＩ／Ｏバスに、達成される。
【００３６】
本発明は好ましい実施形態に関連して解説されているが、様々な変形は当業者には自明となるであろう。例えば、開示されている方法を用いたデータ処理システムは、メインメモリに直接接続しているシステムに応用でき、また同様に下位キャッシュにも応用できる。更に、本発明は、一つ以上の上位キャッシュを持つシステムにも応用できる。メインメモリはＤＲＡＭ、ＳＲＡＭ、非揮発性メモリ、あるいは他のいずれの種類のメモリを用いて構成されうる。更に、一度リードされた後に、キャッシュラインの割当てを解除する様々な方法が可能である。従って、添付の請求項により、本発明の真の範囲内において、発明の全ての変形をカバーするものである。
【図面の簡単な説明】
【００３７】
【図１】従来技術に周知のデータ処理システムのデータの流れ及び制御信号に関連するタイミング図である。
【図２】本発明によるデータの流れ及び制御信号に関連するタイミング図である。
【図３】本発明によるデータ処理システムのブロック図である。
【図４】ＲＥＡＤ  ＯＮＣＥリクエストパケットを形成するために使用されるハイパートランスポートパケットのエンコーディングテーブルの例示的説明図である。
【図１】
0004559861.tif 000002
【図２】
0004559861.tif 000003
【図３】
0004559861.tif 000004
【図４】
0004559861.tif 000005