(57)【要約】【課題】  プロセッサバスの負荷を軽減するとともに、データの高速転送を可能とする。【解決手段】  バスインタフェースアダプタ１０が、プロセッサ２０からのリクエストの受信やプロセッサ２０へレスポンスの送信を行なうプロセッサバスインタフェース制御部１１と、各プロセッサ２０のキャッシュラインの物理アドレス及び／又はキャッシュステータスを有する履歴テーブルを記憶する履歴テーブル記憶部１４と、履歴テーブルを参照する履歴テーブル制御部１５と、プロセッサバスインタフェース制御部１１で受信されたリクエストの内容及び／又は履歴テーブル制御部１５での参照の結果にもとづき、プロセッサ２０とシステムメモリ４０との間でデータの転送を行なうリクエスト監視部１６とを備えた。【選択図】    図１
2008204101.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサからのリクエストを受信するとともに、プロセッサへレスポンスを送るプロセッサバスインタフェース制御部と、システムメモリからデータをリードするとともに、システムメモリにデータをライトするシステムメモリ制御部とを有したバスインタフェースアダプタであって、
一又は二以上の前記プロセッサのキャッシュラインの物理アドレス及び／又はキャッシュステータスを有する履歴テーブルを記憶する履歴テーブル記憶部と、
前記履歴テーブルを参照する履歴テーブル制御部と、
前記プロセッサバスインタフェース制御部で受信された前記リクエストの内容及び／又は前記履歴テーブル制御部での参照の結果にもとづき、前記プロセッサとシステムメモリとの間でデータの転送を行なうリクエスト監視部とを有した
ことを特徴とするバスインタフェースアダプタ。
【請求項２】
ＩＯ装置からのリクエストを受信するとともに、ＩＯ装置へレスポンスを送るＩＯ装置バスインタフェース制御部を備え、
前記リクエスト監視部は、前記ＩＯ装置バスインタフェース制御部で受信された前記リクエストの内容及び／又は前記履歴テーブル制御部での参照の結果にもとづき、前記プロセッサ，システムメモリ，ＩＯ装置のいずれかの間でデータの転送を行なう
ことを特徴とする請求項１記載のバスインタフェースアダプタ。
【請求項３】
前記リクエストが、前記プロセッサで発行されたリードリクエストであり、
前記参照の結果、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在しないとき、
前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードリクエストへのレスポンスとして前記プロセッサに対し発行する
ことを特徴とする請求項１又は２記載のバスインタフェースアダプタ。
【請求項４】
前記リクエストが、前記プロセッサで発行されたリードリクエストであり、
前記キャッシュステータスが、キャッシュラインが有効な情報を持たないことを示すインバリデート、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、キャッシュブラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示すシェアード、キャッシュラインは有効な情報を持ち、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示すクリーンイクスクルーシブを有し、
前記参照の結果、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在するとともに、前記キャッシュステータスが、インバリデート、シェアード、又は、クリーンイクスクルーシブのいずれかであるとき、
前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードリクエストへのレスポンスとして前記プロセッサに対し発行する
ことを特徴とする請求項１〜３のいずれかに記載のバスインタフェースアダプタ。
【請求項５】
前記リクエストが、一のプロセッサで発行されたリードリクエストであり、
前記キャッシュステータスが、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示すダーティーイクスクルーシブを有し、
前記参照の結果、前記履歴テーブルに前記リードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがダーティーイクスクルーシブであるとき、
前記リクエスト監視部は、他のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記他のプロセッサに対してリード付きスヌープリクエストを発行し、前記他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記リードリクエストへのレスポンスとして前記一のプロセッサに対し発行する
ことを特徴とする請求項１〜４のいずれかに記載のバスインタフェースアダプタ。
【請求項６】
前記リクエストが、前記プロセッサで発行されたリードモディファイライトリクエストであり、
前記参照の結果、前記履歴テーブルに前記リードモディファイライトリクエストのキャッシュラインの物理アドレスが存在していないとき、又は、当該物理アドレスが存在しており、前記キャッシュステータスがインバリデートであるとき、
前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードモディファイライトリクエストへのレスポンスとして前記プロセッサに対し発行する
ことを特徴とする請求項１〜５のいずれかに記載のバスインタフェースアダプタ。
【請求項７】
前記リクエストが、一の前記プロセッサで発行されたリードモディファイライトリクエストであり、
前記参照の結果、前記履歴テーブルに前記リードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがシェアード又はクリーンイクスクルーシブであるとき、
前記リクエスト監視部は、他のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記他のプロセッサに対してリード付きスヌープリクエストを発行するとともに、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記リードモディファイライトリクエストへのレスポンスとして前記一のプロセッサに対し発行する
ことを特徴とする請求項１〜６のいずれかに記載のバスインタフェースアダプタ。
【請求項８】
前記リクエストが、一のプロセッサで発行されたリードモディファイライトリクエストであり、
前記参照の結果、前記履歴テーブルに前記リードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスが、ダーティーイクスクルーシブであるとき、
前記リクエスト監視部は、他のプロセッサ内のキャッシュに最新のデータが存在することを示して、前記他のプロセッサに対してリード付きスヌープリクエストを発行し、前記他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記リードモディファイライトリクエストへのレスポンスとして前記一のプロセッサに対し発行する
ことを特徴とする請求項１〜７のいずれかに記載のバスインタフェースアダプタ。
【請求項９】
前記リクエストが、前記プロセッサで発行されたインバリデートリクエストであり、
前記参照の結果、前記履歴テーブルに前記インバリデートリクエストのキャッシュラインの物理アドレスが存在しないとき、
前記リクエスト監視部は、前記プロセッサに対して、インバリデートリクエストの完了を発行する
ことを特徴とする請求項１〜８のいずれかに記載のバスインタフェースアダプタ。
【請求項１０】
前記リクエストが、前記プロセッサで発行されたインバリデートリクエストであり、
前記参照の結果、前記履歴テーブルに前記インバリデートリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスが、インバリデート又はシェアードであるとき、
前記リクエスト監視部は、前記プロセッサに対して、インバリデートリクエストを発行する
ことを特徴とする請求項１〜９のいずれかに記載のバスインタフェースアダプタ。
【請求項１１】
前記リクエストが、ＩＯ装置で発行されたＤＭＡリードリクエストであり、
前記参照の結果、前記履歴テーブルに前記ＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、当該物理アドレスが存在しており、前記キャッシュステータスがインバリデートであるとき、
前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記ＤＭＡリードリクエストへのレスポンスとして前記ＩＯ装置に対し発行する
ことを特徴とする請求項２〜１０のいずれかに記載のバスインタフェースアダプタ。
【請求項１２】
前記リクエストが、ＩＯ装置で発行されたＤＭＡリードリクエストであり、
前記参照の結果、前記履歴テーブルに前記ＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスが、シェアード又はクリーンイクスクルーシブのいずれかであるとき、
前記リクエスト監視部は、前記システムメモリのデータが最新であることを示して、前記システムメモリからデータを獲得し、このデータを前記ＤＭＡリードリクエストへのレスポンスとして前記ＩＯ装置に対し発行する
ことを特徴とする請求項２〜１１のいずれかに記載のバスインタフェースアダプタ。
【請求項１３】
前記リクエストが、ＩＯ装置で発行されたＤＭＡリードリクエストであり、
前記参照の結果、前記履歴テーブルに前記ＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスがダーティーイクスクルーシブであるとき、
前記リクエスト監視部は、前記プロセッサ内のキャッシュに最新のデータが存在することを示して、前記プロセッサに対しリード付きスヌープリクエストを発行し、前記プロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記ＤＭＡリードリクエストへのレスポンスとして前記ＩＯ装置に対し発行する
ことを特徴とする請求項２〜１２のいずれかに記載のバスインタフェースアダプタ。
【請求項１４】
前記リクエストが、ＩＯ装置で発行されたＤＭＡライトリクエストであり、
前記参照の結果、前記履歴テーブルに前記ＤＭＡライトリクエストのキャッシュラインの物理アドレスが存在しないとき、
前記リクエスト監視部は、前記プロセッサに対して、インバリデートリクエストの完了を発行する
ことを特徴とする請求項２〜１３のいずれかに記載のバスインタフェースアダプタ。
【請求項１５】
前記リクエストが、ＩＯ装置で発行されたＤＭＡライトリクエストであり、
前記参照の結果、前記履歴テーブルに前記ＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しており、前記キャッシュステータスが、シェアード、クリーンイクスクルーシブ又はダーティーイクスクルーシブのいずれかであるとき、
前記リクエスト監視部は、前記プロセッサ内のキャッシュに最新のデータが存在することを示して、前記プロセッサに対しインバリデートリクエストを発行し、前記プロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータを前記ＤＭＡライトリクエストへのレスポンスとして前記ＩＯ装置に対し発行する
ことを特徴とする請求項２〜１４のいずれかに記載のバスインタフェースアダプタ。
【請求項１６】
バスインタフェースアダプタのプロセッサバスインタフェース制御部がプロセッサからのリクエストを受信する処理を有したデータ転送方法であって、
前記リクエストが受信されると、前記バスインタフェースアダプタの履歴テーブル制御部が、一又は二以上の前記プロセッサに関する物理アドレス及び／又はキャッシュステータスを有する履歴テーブルを参照し、
前記バスインタフェースアダプタのリクエスト監視部が、前記履歴テーブルの参照結果にもとづき、前記プロセッサとシステムメモリとの間でデータの転送を行なう
ことを特徴とするデータ転送方法。
【請求項１７】
キャッシュメモリを有する一又は二以上のプロセッサと、プロセッサバスを介して前記プロセッサに接続されたバスインタフェースアダプタと、このバスインタフェースアダプタに接続されたシステムメモリとを備えたデータ転送システムであって、
前記バスインタフェースアダプタが、前記請求項１〜請求項１５のいずれかに記載のバスインタフェースアダプタからなる
ことを特徴とするデータ転送システム。
【請求項１８】
基板上にデータ転送システムが形成されたペリフェラルコンポネントインタコネクトボードを備えた情報処理装置であって、
前記データ転送システムが、前記請求項１７に記載のデータ転送システムを有した
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサとシステムメモリとの間のデータ転送を制御するバスインタフェースアダプタ、その制御方法であるデータ転送方法、バスインタフェースアダプタやプロセッサ、システムメモリ等を有するデータ転送システム、及び、このデータ転送システムが形成されたボードを備えた情報処理装置に関し、特に、バスの負荷を軽減するとともに、データ高速転送を実現するのに好適なバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置に関する。
【背景技術】
【０００２】
従来のマルチプロセッサを搭載するコンピュータにおいて、キャッシュを内蔵するマルチプロセッサ構成のコンピュータでのキャッシュコヒーレンシのアルゴリズムとして、スヌープ方式（Ｓｎｏｏｐ：監視）が採用されている（例えば、特許文献１、２参照。）。これは各プロセッサのキャッシュが自身や他プロセッサのキャッシュライン更新状態を把持、管理し、他キャッシュと更新状態の情報を交換することで、どのキャッシュに最新のデータが存在するかを知り、各プロセッサのキャッシュが必要なときに最新のデータを取得できるように自身の状態を更新したり、キャッシュラインのパージを行なう。この情報交換は共通のバスを介して行なわれるため、情報の通知と実際のデータ転送との順序が保たれる。
【０００３】
各プロセッサからのリード／ライトリクエストや、ストレージ系やネットワーク系のＩＯ装置におけるＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）リード／ライトリクエストが発行された場合、キャッシュコヒーレンシを保つために、すべてのプロセッサに対して、スヌープ処理を必ず実施し、スヌープ処理が完全に完了してから、システムメモリへアクセスしなければならない。
【０００４】
まず、キャッシュラインの各キャッシュステータスについて説明する。
（１）インバリデート（Ｉｎｖａｌｉｄａｔｅ）とは、キャッシュブラインは有効な情報を持たないことを示す。以下、「ＩＶ」とする。
（２）シェアード（Ｓｈａｒｅｄ）とは、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、また、キャッシュブラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示す。以下、「ＳＨ」とする。
【０００５】
（３）クリーンイクスクルーシブ（ＣｌｅａｎＥｘｃｌｕｓｉｖｅ）とは、キャッシュラインは有効な情報を持ち、また、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示す。以下、「ＣＥ」とする。
（４）ダーティーイクスクルーシブ（ＤｉｒｔｙＥｘｃｌｕｓｉｖｅ）とは、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、また、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示す。以下、「ＤＥ」とする。
【０００６】
次に、キャッシュを内蔵したマルチプロセッサと接続される従来のバスインタフェースアダプタについて説明する。この従来のバスインタフェースアダプタは、図１６に示すような構成となっている。
すなわち、バスインタフェースアダプタ１００は、プロセッサ２００（２００−１〜２００−ｎ）内のキャッシュラインとのデータコヒーレンシを保つためのプロセッサバス２２０（２２０−１〜２２０−ｎ）を制御するプロセッサバスインタフェース制御部１１０、ＩＯ装置３００（３００−１〜３００−ｎ）と接続されるＩＯバス３１０（３１０−１〜３１０−ｎ）を制御するＩＯバスインタフェース制御部１２０、システムメモリ４００を制御するシステムメモリ制御部１３０を有している。
【０００７】
この従来のバスインタフェースアダプタの動作について、図１７〜図３２を参照して説明する。
（１）プロセッサ２００−１が、データのリードを実施する場合
図１７に示すように、プロセッサ２００−１内のキャッシュ２１０−１に有効なキャッシュラインが存在していると（ステップ１０００）、このキャッシュラインのデータが参照される（ステップ１００１）。
【０００８】
図１８に示すように、プロセッサ２００−１内のキャッシュ２１０−１に有効なキャッシュラインが存在しないと（ステップ２０００）、プロセッサバス２２０−１を介して、プロセッサ２００−１がリードリクエストを発行し（ステップ２００１）、バスインタフェースアダプタ１００はこのリードリクエストを受信することにより（ステップ２００２）、プロセッサバス２２０−２〜２２０−ｎを介して、プロセッサ２００−２〜２００−ｎに対して、リード付きスヌープリクエストを発行する（ステップ２００３）。
【０００９】
プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在しない場合（ステップ２００４）、プロセッサバス２２０−２〜２２０−ｎを介してプロセッサ２００−２〜２００−ｎは有効なキャッシュラインが存在しないことを示すレスポンスを発行し（ステップ２００５）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ２００６）、システムメモリ４００に格納されているデータが最新であることを示し（ステップ２００７）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータをリードし（ステップ２００８）、プロセッサバス２２０−１を介して、バスインタフェースアダプタ１００はこのデータをつけたレスポンスを発行する（ステップ２００９）。プロセッサ２００−１は、このキャッシュラインのデータを参照し、キャッシュ内に格納し（ステップ２０１０）、キャッシュステートをＣＥに変更する（ステップ２０１１）。
【００１０】
一方、図１９に示すように、プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在し（ステップ２０１２）、キャッシュステートがＳＨあるいはＣＥの場合は（ステップ２０１３）、プロセッサバス２２０−２〜２２０−ｎを介してプロセッサ２００−２〜２００−ｎは、有効なキャッシュラインが存在し、キャッシュステートがＳＨあるいはＣＥを示すレスポンスを発行し（ステップ２０１４）、キャッシュステートをＳＨに変更し（ステップ２０１５）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ２０１６）、システムメモリに格納されているデータが有効なデータであることがわかり（ステップ２０１７）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータをリードし（ステップ２０１８）、プロセッサバス２２０−１を介して、バスインタフェースアダプタ１００はこのデータをつけたレスポンスを発行する（ステップ２０１９）。プロセッサ２００−１は、このキャッシュラインのデータを参照し、キャッシュ内に格納し（ステップ２０２０）、キャッシュステートをＳＨに変更する（ステップ２０２１）。
【００１１】
また、図２０に示すように、プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在し（ステップ２０１２）、キャッシュステートがＤＥの場合（ステップ２０２２）、プロセッサバス２２０−２〜２２０−ｎを介して、プロセッサ２００−２〜２００−ｎは有効なキャッシュラインが存在し、キャッシュステートがＤＥを示すレスポンスを発行し（ステップ２０２３）、システムメモリ４００を更新するために、キャッシュラインのライトバックリクエストを発行し（ステップ２０２４）、キャッシュステートをＳＨに変更し（ステップ２０２５）、バスインタフェースアダプタ１００はこのレスポンスやライトバックリクエストを受信することにより（ステップ２０２６、ステップ２０２７）、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることを示し（ステップ２０２８）、バスインタフェースアダプタ１００は、プロセッサバス２２０−１を介して、このデータをつけたレスポンスを発行し（ステップ２０２９）、かつ、システムメモリ制御部１３０は、このデータをシステムメモリ４００に格納する（ステップ２０３０）。プロセッサ２００−１は、このキャッシュラインのデータを参照し、キャッシュ内に格納し（ステップ２０３１）、キャッシュステートをＳＨに変更する（ステップ２０３２）。
【００１２】
（２）プロセッサ２００−１が、データのライトを実施する場合
図２１に示すように、プロセッサ２００−１内のキャッシュに有効なキャッシュラインが存在しないと（ステップ３０００）、プロセッサバス２２０−１を介して、プロセッサ２００−１がリードモディファイライトリクエストを発行し（ステップ３００１）、バスインタフェースアダプタ１００はこのリードモディファイライトリクエストを受信することにより（ステップ３００２）、プロセッサバス２２０−２〜２２０−ｎを介して、プロセッサ２００−２〜２００−ｎに対して、リードモディファイライト付きスヌープリクエストを発行する（ステップ３００３）。
【００１３】
プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在しない場合（ステップ３００４）、プロセッサバス２２０−２〜２２０−ｎを介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し（ステップ３００５）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ３００６）、システムメモリ４００に格納されているデータが有効なデータであることを示し（ステップ３００７）、システムメモリ制御部１３０に格納されているデータをリードし（ステップ３００８）、バスインタフェースアダプタ１００は、プロセッサバス２２０−１を介して、このデータを付けたレスポンスを発行する（ステップ３００９）。プロセッサ２００−１はキャッシュ内に格納し、データを更新し（ステップ３０１０）、キャッシュステートをＤＥに変更する（ステップ３０１１）。
【００１４】
一方、図２２に示すように、プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在し（ステップ３０１２）、キャッシュステートがＳＨあるいはＣＥの場合（ステップ３０１３）、プロセッサバス２２０−２〜２２０−ｎを介して、有効なキャッシュラインが存在し、キャッシュステートがＳＨあるいはＣＥを示すレスポンスを発行し（ステップ３０１４）、キャッシュステートをＩＶに変更し（ステップ３０１５）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ３０１６）、システムメモリ４００に格納されているデータが有効なデータであることを示し（ステップ３０１７）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータをリードし（ステップ３０１８）、バスインタフェースアダプタ１００は、プロセッサバス２２０−１を介して、このデータを付けたレスポンスを発行する（ステップ３０１９）。プロセッサ２００−１はキャッシュ内に格納し、データを更新し（ステップ３０２０）、キャッシュステートをＤＥに変更する（ステップ３０２１）。
【００１５】
また、図２３に示すように、プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在し（ステップ３０１２）、キャッシュステートがＤＥの場合（ステップ３０２２）、プロセッサバス２２０−２〜２２０−ｎを介して、有効なキャッシュラインが存在し、キャッシュステートがＤＥを示すレスポンスを発行し（ステップ３０２３）、システムメモリ４００を更新するために、キャッシュブロックのライトバックリクエストを発行し（ステップ３０２４）、キャッシュステートをＩＶに変更し（ステップ３０２５）、バスインタフェースアダプタ１００はこのレスポンスやライトバックリクエストを受信することにより（ステップ３０２６、ステップ３０２７）、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることを示し（ステップ３０２８）、バスインタフェースアダプタ１００は、プロセッサバス２２０−１を介して、このデータを付けたレスポンスを発行し（ステップ３０２９）、かつ、システムメモリ制御部１３０は、このデータをシステムメモリ４００に格納する（ステップ３０３０）。プロセッサ２００−１は、キャッシュ内に格納し、データを更新し（ステップ３０３１）、キャッシュステートをＤＥに変更する（ステップ３０３２）。
【００１６】
（３）プロセッサ２００−１が、インバリデートリクエストを発行する場合
図２４に示すように、プロセッサ２００−１内のキャッシュに有効なキャッシュラインが存在し（ステップ４０００）、キャッシュステートがＳＨとすると（ステップ４００１）、プロセッサバス２２０−１を介して、プロセッサ２００−１がインバリデートリクエストを発行し（ステップ４００２）、バスインタフェースアダプタ１００はこのインバリデートリクエストを受信することにより（ステップ４００３）、プロセッサバス２２０−２〜２２０−ｎを介して、プロセッサ２００−２〜２００−ｎに対して、インバリデート付きスヌープリクエストを発行する（ステップ４００４）。
【００１７】
プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在しない場合（ステップ４００５）、プロセッサバス２２０−２〜２２０−ｎを介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し（ステップ４００６）、バスインタフェースアダプタ１００は、このレスポンスを受信することにより（ステップ４００７）、プロセッサバス２２０−１を介して、インバリデートリクエストの完了を示すレスポンスを発行する（ステップ４００８）。プロセッサ２００−１内のキャッシュラインのデータを更新し（ステップ４００９）、キャッシュステートをＤＥに変更する（ステップ４０１０）。
【００１８】
一方、図２５に示すように、プロセッサ２００−２〜２００−ｎ内のキャッシュに有効なキャッシュラインが存在し（ステップ４０１１）、キャッシュステートがＳＨあるいはＣＥの場合（ステップ４０１２）、プロセッサバス２２０−２〜２２０−ｎを介して、有効なキャッシュブロックが存在し、キャッシュステートがＳＨあるいはＣＥを示すレスポンスを発行し（ステップ４０１３）、キャッシュステートをＩＶに変更し（ステップ４０１４）、バスインタフェースアダプタ１００は、このレスポンスを受信することにより（ステップ４０１５）、プロセッサバス２２０−１を介してインバリデートリクエストの完了を示すレスポンスを発行する（ステップ４０１６）。プロセッサ２００−１内のキャッシュラインのデータを更新し（ステップ４０１７）、キャッシュステートをＤＥに変更する（ステップ４０１８）。
【００１９】
また、図２６に示すように、プロセッサ２００−１内のキャッシュに有効なキャッシュラインが存在し（ステップ４０００）、キャッシュステートがＣＥあるいはＤＥとすると（ステップ４０１９）、このキャッシュ内のキャッシュラインのデータを更新し（ステップ４０２０）、キャッシュステートをＤＥに変更する（ステップ４０２１）。
【００２０】
（４）ＩＯ装置が、ＤＭＡリードリクエストを発行する場合
図２７に示すように、ＩＯ装置３００が、ＩＯバス３１０を介して、ＤＭＡリードリクエストを発行すると（ステップ５０００）、バスインタフェースアダプタ１００は、このＤＭＡリードリクエストを受信し（ステップ５００１）、これにより、プロセッサバス２２０を介して、各プロセッサ２００に対して、リードを示すスヌープリクエストを発行する（ステップ５００２）。
【００２１】
プロセッサ２００内のキャッシュに有効なキャッシュラインが存在しない場合（ステップ５００３）、プロセッサバス２２０を介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し（ステップ５００４）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ５００５）、システムメモリ４００に格納されているデータが最新のデータであることが判り（ステップ５００６）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータをリードし（ステップ５００７）、バスインタフェースアダプタ１００は、ＩＯバス３１０を介して、ＩＯ装置３００に対し、このデータを付けたレスポンスを発行する（ステップ５００８）。
【００２２】
一方、図２８に示すように、プロセッサ２００内のキャッシュに有効なキャッシュラインが存在し（ステップ５００９）、キャッシュステートがＳＨあるいはＣＥの場合（ステップ５０１０）、プロセッサバス２２０を介して、有効なキャッシュラインが存在し、キャッシュステートがＳＨあるいはＣＥと示すレスポンスを発行し（ステップ５０１１）、キャッシュステートをＳＨに変更し（ステップ５０１２）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ５０１３）、システムメモリ４００に格納されているデータが最新のデータであることが判り（ステップ５０１４）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータをリードし（ステップ５０１５）、バスインタフェースアダプタ１００は、ＩＯバス３１０を介して、ＩＯ装置３００に対し、このデータを付けたレスポンスを発行する（ステップ５０１６）。
【００２３】
また、図２９に示すように、プロセッサ２００内のキャッシュに有効なキャッシュラインが存在し（ステップ５００９）、キャッシュステートがＤＥの場合（ステップ５０１７）、プロセッサバス２２０を介して、有効なキャッシュラインが存在し、キャッシュステートがＤＥを示すレスポンスを発行し（ステップ５０１８）、システムメモリ４００を更新するために、キャッシュラインのライトバックリクエストを発行し（ステップ５０１９）、キャッシュステートをＳＨに変更し（ステップ５０２０）、バスインタフェースアダプタ１００はこのレスポンスやライトバックリクエストを受信することにより（ステップ５０２１、ステップ５０２２）、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることが判り（ステップ５０２３）、バスインタフェースアダプタ１００は、ＩＯバス３１０を介して、ＩＯ装置３００に対し、このデータを付けたレスポンスを発行し（ステップ５０２４）、かつ、システムメモリ制御部１３０は、このデータをシステムメモリ４００に格納する（ステップ５０２５）。
【００２４】
（５）ＩＯ装置が、ＤＭＡライトリクエストを発行する場合
図３０に示すように、ＩＯ装置３００において、ＩＯバス３１０を介して、ＤＭＡライトリクエストが発行されると（ステップ６０００）、バスインタフェースアダプタ１００は、このＤＭＡライトリクエストを受信することにより（ステップ６００１）、プロセッサバス２２０を介して、プロセッサ２００に対して、リードモディファイライトを示すスヌープリクエストを発行する（ステップ６００２）。
プロセッサ２００内のキャッシュに有効なキャッシュラインが存在しない場合（ステップ６００３）、プロセッサバス２２０を介して、有効なキャッシュラインが存在しないことを示すレスポンスを発行し（ステップ６００４）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ６００５）、システムメモリ４００に格納されているデータが有効なデータであることが判り（ステップ６００６）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータを更新する（ステップ６００７）。
【００２５】
一方、図３１に示すように、プロセッサ２００内のキャッシュに有効なキャッシュラインが存在し（ステップ６００８）、キャッシュステートがＳＨあるいはＣＥの場合（ステップ６００９）、プロセッサバス２２０を介して、有効なキャッシュラインが存在し、キャッシュステートがＳＨあるいはＣＥを示すレスポンスを発行し（ステップ６０１０）、キャッシュステートをＩＶに変更し（ステップ６０１１）、バスインタフェースアダプタ１００はこのレスポンスを受信することにより（ステップ６０１２）、システムメモリ４００に格納されているデータが有効なデータであることが判り（ステップ６０１３）、システムメモリ制御部１３０は、システムメモリ４００に格納されているデータを更新する（ステップ６０１４）。
【００２６】
また、図３２に示すように、プロセッサ２００内のキャッシュに有効なキャッシュラインが存在し（ステップ６００８）、キャッシュステートがＤＥの場合（ステップ６０１５）、プロセッサバス２２０を介して、有効なキャッシュラインが存在し、キャッシュステートがＤＥを示すレスポンスを発行し（ステップ６０１６）、システムメモリ４００を更新するために、キャッシュブロックのライトバックリクエストを発行し（ステップ６０１７）、キャッシュステートをＩＶに変更し（ステップ６０１８）、バスインタフェースアダプタ１００はこのレスポンスやライトバックリクエストを受信することにより（ステップ６０１９、ステップ６０２０）、このライトバックリクエストに付いているキャッシュブロックに格納されているデータが有効なデータであることが判り（ステップ６０２１）、データを更新し（ステップ６０２２）、システムメモリ制御部１３０は、この更新したデータをシステムメモリ４００に格納する（ステップ６０２３）。
【特許文献１】特開２００１−０３４５３３号公報
【特許文献２】特開２００３−１５０５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
しかしながら、従来のマルチプロセッサを搭載したコンピュータにおいては、各プロセッサからのリード／ライトリクエストや、ストレージ系やネットワーク系のＩＯ装置におけるＤＭＡリード／ライトリクエストが発行された場合、キャッシュコヒーレンシを保つために、すべてのプロセッサに対して、スヌープ処理を必ず実施し、スヌープ処理が完全に完了してから、システムメモリへアクセスしなければならなかった。このため、プロセッサバスに多大な負荷がかかるとともに、データの高速転送に支障をきたしていた。
【００２８】
本発明は、上記の問題を解決すべくなされたものであり、プロセッサバスの負荷を軽減するとともに、データの高速転送を可能とするバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置の提供を目的とする。
【課題を解決するための手段】
【００２９】
この目的を達成するため、本発明のバスインタフェースアダプタは、プロセッサからのリクエストを受信するとともに、プロセッサへレスポンスを送るプロセッサバスインタフェース制御部と、システムメモリからデータをリードするとともに、システムメモリにデータをライトするシステムメモリ制御部とを有したバスインタフェースアダプタであって、一又は二以上のプロセッサのキャッシュラインの物理アドレス及び／又はキャッシュステータスを有する履歴テーブルを記憶する履歴テーブル記憶部と、履歴テーブルを参照する履歴テーブル制御部と、プロセッサバスインタフェース制御部で受信されたリクエストの内容及び／又は履歴テーブル制御部での参照の結果にもとづき、プロセッサとシステムメモリとの間でデータの転送を行なうリクエスト監視部とを有した構成としてある。
【００３０】
バスインタフェースアダプタをこのような構成とすると、各プロセッサのキャッシュラインの物理アドレスやキャッシュステータスにより構成された履歴テーブルや、この履歴テーブルを制御する履歴テーブル制御部、そして、プロセッサからのリクエストの内容に応じて制御を行なうリクエスト監視部をバスインタフェースアダプタに備えることで、プロセッサのキャッシュラインの物理アドレス等をプロセッサに問い合わせていた従来のスヌープ処理を削減できる。そして、このプロセッサへの不要なスヌープ処理が削減されることにより、プロセッサ内部のスヌープ処理を削減することができる。したがって、スヌープ処理が完了するまでの遅延時間が削減することから、システムとしてデータ転送の高速化を実現できる。
特に、現在稼動しているコンピュータでは、プロセッサ内のキャッシュの最大容量は１６ＭＢであり、システムメモリの最大容量は５１２ＧＢであることから、不要なスヌープリクエストの発行を無くすことが、バス負荷を軽減させる手法として最も効果的である。なお、メモリデータベースサーバ向けのコンピュータでのシステムメモリ容量は、３２ＧＢ、６４ＧＢ、１２８ＧＢである。
【００３１】
また、本発明のバスインタフェースアダプタは、ＩＯ装置からのリクエストを受信するとともに、ＩＯ装置へレスポンスを送るＩＯ装置バスインタフェース制御部を備え、リクエスト監視部は、ＩＯ装置バスインタフェース制御部で受信されたリクエストの内容及び／又は履歴テーブル制御部での参照の結果にもとづき、プロセッサ，システムメモリ，ＩＯ装置のいずれかの間でデータの転送を行なう構成とすることができる。
バスインタフェースアダプタをこのような構成とすれば、ＩＯ装置からのリクエストを受信した場合でも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００３２】
また、本発明のバスインタフェースアダプタは、リクエストが、プロセッサで発行されたリードリクエストであり、参照の結果、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在しないとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードリクエストへのレスポンスとしてプロセッサに対し発行する構成とすることができる。
【００３３】
バスインタフェースアダプタをこのような構成とすると、プロセッサからリードリクエストが発行された場合であってそのリードリクエストのキャッシュラインの物理アドレスが不存在のときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００３４】
また、本発明のバスインタフェースアダプタは、リクエストが、プロセッサで発行されたリードリクエストであり、キャッシュステータスが、キャッシュラインが有効な情報を持たないことを示すインバリデート、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュにも存在し、キャッシュブラインの内容はシステムメモリと同じであり、キャッシュラインのオーナーではないことを示すシェアード、キャッシュラインは有効な情報を持ち、キャッシュラインの内容はシステムメモリと同じであり、プロセッサはオーナーではないことを示すクリーンイクスクルーシブを有し、参照の結果、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在するとともに、キャッシュステータスが、インバリデート、シェアード、又は、クリーンイクスクルーシブのいずれかであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードリクエストへのレスポンスとしてプロセッサに対し発行する構成とすることができる。
【００３５】
バスインタフェースアダプタをこのような構成とすれば、プロセッサからリードリクエストが発行された場合であってそのリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがインバリデート、シェアード、又は、クリーンイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００３６】
また、本発明のバスインタフェースアダプタは、リクエストが、一のプロセッサで発行されたリードリクエストであり、キャッシュステータスが、キャッシュラインは有効な情報を持ち、他のプロセッサのキャッシュには存在せず、キャッシュラインの内容はシステムメモリと異なり、プロセッサはオーナーであることを示すダーティーイクスクルーシブを有し、参照の結果、履歴テーブルにリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるとき、リクエスト監視部は、他のプロセッサ内のキャッシュに最新のデータが存在することを示して、他のプロセッサに対してリード付きスヌープリクエストを発行し、他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをリードリクエストへのレスポンスとして一のプロセッサに対し発行する構成とすることができる。
【００３７】
バスインタフェースアダプタをこのような構成とすると、プロセッサからリードリクエストが発行された場合であってそのリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００３８】
また、本発明のバスインタフェースアダプタは、リクエストが、プロセッサで発行されたリードモディファイライトリクエストであり、参照の結果、履歴テーブルにリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在していないとき、又は、当該物理アドレスが存在しており、キャッシュステータスがインバリデートであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードモディファイライトリクエストへのレスポンスとしてプロセッサに対し発行する構成とすることができる。
【００３９】
バスインタフェースアダプタをこのような構成とすれば、プロセッサからリードモディファイライトリクエストが発行された場合であってそのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在し、キャッシュステータスがインバリデートであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００４０】
また、本発明のバスインタフェースアダプタは、リクエストが、一のプロセッサで発行されたリードモディファイライトリクエストであり、参照の結果、履歴テーブルにリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがシェアード又はクリーンイクスクルーシブであるとき、リクエスト監視部は、他のプロセッサ内のキャッシュに最新のデータが存在することを示して、他のプロセッサに対してリード付きスヌープリクエストを発行するとともに、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをリードモディファイライトリクエストへのレスポンスとして一のプロセッサに対し発行する構成とすることができる。
【００４１】
バスインタフェースアダプタをこのような構成とすると、プロセッサからリードモディファイライトリクエストが発行された場合であってそのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがシェアード又はクリーンイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００４２】
また、本発明のバスインタフェースアダプタは、リクエストが、一のプロセッサで発行されたリードモディファイライトリクエストであり、参照の結果、履歴テーブルにリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスが、ダーティーイクスクルーシブであるとき、リクエスト監視部は、他のプロセッサ内のキャッシュに最新のデータが存在することを示して、他のプロセッサに対してリード付きスヌープリクエストを発行し、他のプロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをリードモディファイライトリクエストへのレスポンスとして一のプロセッサに対し発行する構成とすることができる。
【００４３】
バスインタフェースアダプタをこのような構成とすれば、プロセッサからリードモディファイライトリクエストが発行された場合であってそのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００４４】
また、本発明のバスインタフェースアダプタは、リクエストが、プロセッサで発行されたインバリデートリクエストであり、参照の結果、履歴テーブルにインバリデートリクエストのキャッシュラインの物理アドレスが存在しないとき、リクエスト監視部は、プロセッサに対して、インバリデートリクエストの完了を発行する構成とすることができる。
【００４５】
バスインタフェースアダプタをこのような構成とすると、プロセッサからインバリデートリクエストが発行された場合であってそのインバリデートリクエストのキャッシュラインの物理アドレスが存在しないときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００４６】
また、本発明のバスインタフェースアダプタは、リクエストが、プロセッサで発行されたインバリデートリクエストであり、参照の結果、履歴テーブルにインバリデートリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスが、インバリデート又はシェアードであるとき、リクエスト監視部は、プロセッサに対して、インバリデートリクエストを発行する構成とすることができる。
【００４７】
バスインタフェースアダプタをこのような構成とすれば、プロセッサからインバリデートリクエストが発行された場合であってそのインバリデートリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがインバリデート又はシェアードであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００４８】
また、本発明のバスインタフェースアダプタは、リクエストが、ＩＯ装置で発行されたＤＭＡリードリクエストであり、参照の結果、履歴テーブルにＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しないとき、又は、当該物理アドレスが存在しており、キャッシュステータスがインバリデートであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをＤＭＡリードリクエストへのレスポンスとしてＩＯ装置に対し発行する構成とすることができる。
【００４９】
バスインタフェースアダプタをこのような構成とすると、ＩＯ装置からＤＭＡリードリクエストが発行された場合であってそのＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在し、キャッシュステータスがインバリデートであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００５０】
また、本発明のバスインタフェースアダプタは、リクエストが、ＩＯ装置で発行されたＤＭＡリードリクエストであり、参照の結果、履歴テーブルにＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスが、シェアード又はクリーンイクスクルーシブのいずれかであるとき、リクエスト監視部は、システムメモリのデータが最新であることを示して、システムメモリからデータを獲得し、このデータをＤＭＡリードリクエストへのレスポンスとしてＩＯ装置に対し発行する構成とすることができる。
【００５１】
バスインタフェースアダプタをこのような構成とすれば、ＩＯ装置からＤＭＡリードリクエストが発行された場合であってそのＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがシェアード又はクリーンイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００５２】
また、本発明のバスインタフェースアダプタは、リクエストが、ＩＯ装置で発行されたＤＭＡリードリクエストであり、参照の結果、履歴テーブルにＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスがダーティーイクスクルーシブであるとき、リクエスト監視部は、プロセッサ内のキャッシュに最新のデータが存在することを示して、プロセッサに対しリード付きスヌープリクエストを発行し、プロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをＤＭＡリードリクエストへのレスポンスとしてＩＯ装置に対し発行する構成とすることができる。
【００５３】
バスインタフェースアダプタをこのような構成とすると、ＩＯ装置からＤＭＡリードリクエストが発行された場合であってそのＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがダーティーイクスクルーシブであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００５４】
また、本発明のバスインタフェースアダプタは、リクエストが、ＩＯ装置で発行されたＤＭＡライトリクエストであり、参照の結果、履歴テーブルにＤＭＡライトリクエストのキャッシュラインの物理アドレスが存在しないとき、リクエスト監視部は、プロセッサに対して、インバリデートリクエストの完了を発行する構成とすることができる。
【００５５】
バスインタフェースアダプタをこのような構成とすれば、ＩＯ装置からＤＭＡライトリクエストが発行された場合であってそのＤＭＡライトリクエストのキャッシュラインの物理アドレスが存在しないときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００５６】
また、本発明のバスインタフェースアダプタは、リクエストが、ＩＯ装置で発行されたＤＭＡライトリクエストであり、参照の結果、履歴テーブルにＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しており、キャッシュステータスが、シェアード、クリーンイクスクルーシブ又はダーティーイクスクルーシブのいずれかであるとき、リクエスト監視部は、プロセッサ内のキャッシュに最新のデータが存在することを示して、プロセッサに対しインバリデートリクエストを発行し、プロセッサからライトバックリクエストが送られてくると、このライトバックリクエストに付されたデータをＤＭＡライトリクエストへのレスポンスとしてＩＯ装置に対し発行する構成とすることができる。
【００５７】
バスインタフェースアダプタをこのような構成とすると、ＩＯ装置からＤＭＡライトリクエストが発行された場合であってそのＤＭＡライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがシェアード、クリーンイクスクルーシブ又はダーティーイクスクルーシブのいずれかであるときでも、プロセッサへの不要なスヌープ処理が削減されるため、データ転送の高速化を実現できる。
【００５８】
また、本発明のデータ転送方法は、バスインタフェースアダプタのプロセッサバスインタフェース制御部がプロセッサからのリクエストを受信する処理を有したデータ転送方法であって、リクエストが受信されると、バスインタフェースアダプタの履歴テーブル制御部が、一又は二以上のプロセッサに関する物理アドレス及び／又はキャッシュステータスを有する履歴テーブルを参照し、バスインタフェースアダプタのリクエスト監視部が、履歴テーブルの参照結果にもとづき、プロセッサとシステムメモリとの間でデータの転送を行なう方法とすることができる。
【００５９】
データ転送方法をこのような方法とすれば、各プロセッサのキャッシュラインの物理アドレスやキャッシュステータスがバスインタフェースアダプタの内部で検索、取得できるため、プロセッサへの不要なスヌープ処理が削減され、データ転送の高速化を実現できる。
【００６０】
また、本発明のデータ転送システムは、キャッシュメモリを有する一又は二以上のプロセッサと、プロセッサバスを介してプロセッサに接続されたバスインタフェースアダプタと、このバスインタフェースアダプタに接続されたシステムメモリとを備えたデータ転送システムであって、バスインタフェースアダプタが、上記のバスインタフェースアダプタからなる構成とすることができる。
【００６１】
データ転送システムをこのような構成とすると、プロセッサとシステムメモリとの間のデータ転送を行なう際、各プロセッサのキャッシュラインの物理アドレスやキャッシュステータスの取得をバスインタフェースアダプタの内部で行なえるため、プロセッサへの不要なスヌープ処理が削減され、データ転送の高速化を実現できる。
【００６２】
また、本発明の情報処理装置は、基板上にデータ転送システムが形成されたペリフェラルコンポネントインタコネクトボード（ＰＣＩ）を備えた情報処理装置であって、データ転送システムが、上記のデータ転送システムを有した構成とすることができる。
情報処理装置をこのような構成とすれば、データ転送の高速化を実現したＰＣＩを備えて、処理能力の優れた情報処理装置を提供できる。
【発明の効果】
【００６３】
以上のように、本発明によれば、プロセッサへの不要なスヌープ時間を削減できるため、プロセッサ内部のスヌープ処理を削減でき、スヌープ処理が完了されるまでの遅延時間が削減されることから、システムとしてデータ転送が高速となる。
【発明を実施するための最良の形態】
【００６４】
以下、本発明に係るバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置の好ましい実施形態について、図面を参照して説明する。
【００６５】
［データ転送システム及びバスインタフェースアダプタ］
まず、本発明のデータ転送システム及びバスインタフェースアダプタの実施形態について、図１を参照して説明する。
同図は、本実施形態のデータ転送システム（バスインタフェースアダプタを含む）の構成を示すブロック図である。
【００６６】
同図に示すように、データ転送システムＡは、バスインタフェースアダプタ１０と、プロセッサ２０（２０−１〜２０−ｎ）と、ＩＯ装置３０（３０−１〜３０−ｎ）と、システムメモリ４０とを備えている。
ここで、バスインタフェースアダプタ１０は、プロセッサバスインタフェース制御部１１と、ＩＯバスインタフェース制御部１２と、システムメモリ制御部１３と、履歴テーブル記憶部１４と、履歴テーブル制御部１５と、リクエスト監視部１６とを有している。
【００６７】
プロセッサバスインタフェース制御部１１は、プロセッサ２０内のキャッシュラインとのデータコヒーレンシを保つためのプロセッサバス２２（２２−１〜２２−ｎ）を制御する。
このプロセッサバスインタフェース制御部１１は、プロセッサバス２２を介して、プロセッサ２０が発行したリードリクエスト、リードモディファイライトリクエスト、インバリデートリクエストやスヌープ完了レスポンスを受信し、リクエスト監視部１６やシステムメモリ制御部１３へ転送する。
また、プロセッサバスインタフェース制御部１１は、プロセッサバス２２を介して、プロセッサ２０に対して、リード付きスヌープリクエスト、モディファイライト付きスヌープリクエスト、インバリデートリクエスト、データレスポンス、リクエスト完了レスポンスを発行する。
【００６８】
ＩＯバスインタフェース制御部１２は、ＩＯ装置３０と接続されるＩＯバス３１（３１−１〜３１−ｎ）を制御する。
このＩＯバスインタフェース制御部１２は、ＩＯバス３１（３１−１〜３１−ｎ）を介して、ＩＯ装置３０が発行したＤＭＡリードあるいはライトリクエストを受信し、リクエスト監視部１６やシステムメモリ制御部１３へ転送する。
さらに、ＩＯバスインタフェース制御部１２は、ＩＯバス３１を介して、ＩＯ装置３０に対して、データレスポンスやリクエスト完了レスポンスを発行する。
【００６９】
システムメモリ制御部１３は、システムメモリ４０を制御する。具体的には、システムメモリ４０からのデータのリード（獲得）、システムメモリ４０へのデータのライト（格納）などを行う。
【００７０】
履歴テーブル記憶部１４は、プロセッサ２０内のキャッシュラインの状態が記録された履歴テーブルを記憶する。
履歴テーブルは、図２（ａ）〜（ｄ）に示すように、各プロセッサ２０ごとに、プロセッサ２０内のキャッシュラインのコピーを保有しており、キャッシュラインの物理アドレスやキャッシュステータスで構成されている。
【００７１】
履歴テーブル制御部１５は、履歴テーブルを制御する。具体的には、リクエスト監視部１６からの指示により、プロセッサ２０内のキャッシュラインのコピーを保持するために、履歴テーブルを更新し、プロセッサバス２２を介して、プロセッサ２０に対して、スヌープリクエストやインバリデートリクエストを発行する必要があるか否かを判断するために、履歴テーブルを参照し、履歴テーブルを制御する。
【００７２】
リクエスト監視部１６は、プロセッサバスインタフェース制御部１１やＩＯバスインタフェース制御部１２を介して、リクエストを監視する。
このリクエスト監視部１６は、プロセッサ２０が発行しプロセッサバスインタフェース制御部１１から転送されてきたリクエストやレスポンス、ＩＯ装置３０が発行しＩＯバスインタフェース制御部１２から転送されてきたＤＭＡリードあるいはライトリクエストを監視し、プロセッサ２０内のキャッシュラインのコピーを保有する。
【００７３】
［データ転送方法］
次に、本実施形態のデータ転送システムの動作（データ転送方法）について、図３〜図１５を参照して説明する。
図３〜図１５は、本実施形態のデータ転送システムの動作を示す動作手順図であって、図３〜図５は、プロセッサがリードリクエストを発行した場合、図６〜図８は、プロセッサがリードモディファイライトリクエストを発行した場合、図９〜図１０は、プロセッサがインバリデートリクエストを発行した場合、図１１〜図１３は、ＩＯ装置がＤＭＡリードリクエストを発行した場合、図１４〜図１５は、ＩＯ装置がＤＭＡライトリクエストを発行した場合をそれぞれ示す。
【００７４】
（ａ）プロセッサが、リードリクエストを発行した場合
図３に示すように、プロセッサ２０−１が、プロセッサバス２２−１を介して、リードリクエストを発行し（ステップ１００）、バスインタフェースアダプタ１００のプロセッサバスインタフェース制御部１１がそのリードリクエストを受信すると（ステップ１０１）、このリードリクエストがプロセッサバスインタフェース制御部１１からリクエスト監視部１６を介して履歴テーブル制御部１５へ送られる。この履歴テーブル制御部１５が、履歴テーブルを参照し、そのリードリクエストのキャッシュラインの物理アドレスを検索する（ステップ１０２）。
【００７５】
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがＩＶの場合、つまり、履歴テーブルに有効なものが登録されていない場合、システムメモリ４０に格納されているデータが最新のデータであることを示し（ステップ１０３）、システムメモリ制御部１３がシステムメモリ４０からデータを獲得し（ステップ１０４）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、その獲得されたデータをリードリクエストのレスポンス（データレスポンス）として発行する（ステップ１０５）。プロセッサ２０−１は、そのキャッシュラインのデータを参照し、キャッシュ内に格納する（ステップ１０６）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＣＥに変更する（ステップ１０７）。
【００７６】
履歴テーブル制御部１５が履歴テーブルを参照しそのリードリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ１０２）、図４に示すように、該当する物理アドレスが存在し、キャッシュステータスがＳＨあるいはＣＥの場合、システムメモリ４０に格納されているデータが最新のデータであることを示し（ステップ１０８）、システムメモリ制御部１３がシステムメモリ４０からデータを獲得し（ステップ１０９）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、その獲得されたデータをリードリクエストのレスポンス（データレスポンス）として発行する（ステップ１１０）。プロセッサ２０−１は、そのキャッシュラインのデータを参照し、キャッシュ内に格納する（ステップ１１１）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＳＨに変更する（ステップ１１２）。
【００７７】
履歴テーブル制御部１５が履歴テーブルを参照しそのリードリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ１０２）、図５に示すように、該当する物理アドレスが存在し、キャッシュステータスがＤＥの場合、プロセッサ２０内のキャッシュに最新のデータが存在することを示し（ステップ１１３）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−２〜２２−ｎを介し、プロセッサ２０−２〜２０−ｎに対して、リード付きスヌープリクエストを発行する（ステップ１１４）。
【００７８】
続いて、キャッシュラインのキャッシュステータスがＤＥであるキャッシュを保有するプロセッサ２０−ｍがライトバックのリクエストを発行した場合（リード付きスヌープリクエストへのレスポンス、ステップ１１５）、プロセッサバスインタフェース制御部１１がそのライトバックリクエストを受信し（ステップ１１６）、このライトバックリクエストがリクエスト監視部１６を介してシステムメモリ制御部１３へ送られ、システムメモリ制御部１３が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ４０のデータを更新し（ライトバック、ステップ１１７）、リクエスト監視部１６が、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、そのデータをリードリクエストのレスポンス（データレスポンス）として発行する（ステップ１１８）。プロセッサ２０−１は、そのキャッシュラインのデータを参照し、キャッシュ内に格納する（ステップ１１９）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＳＨに変更するとともに（ステップ１２０）、履歴テーブルにおけるプロセッサ２０−２〜２０−ｎのキャッシュステートをＳＨに変更する（ステップ１２１）。
【００７９】
（ｂ）プロセッサが、リードモディファイライトリクエストを発行した場合
図６に示すように、プロセッサ２０−１が、プロセッサバス２２−１を介して、リードモディファイライトリクエストを発行し（ステップ２００）、バスインタフェースアダプタ１００のプロセッサバスインタフェース制御部１１がそのリードモディファイライトリクエストを受信すると（ステップ２０１）、このリードモディファイライトリクエストがプロセッサバスインタフェース制御部１１からリクエスト監視部１６を介して履歴テーブル制御部１５へ送られる。この履歴テーブル制御部１５が、履歴テーブルを参照し、このリードモディファイライトリクエストのキャッシュラインの物理アドレスを検索する（ステップ２０２）。
【００８０】
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがＩＶの場合、つまり、履歴テーブルに有効なものが登録されていない場合、システムメモリ４０に格納されているデータが最新のデータであることを示し（ステップ２０３）、システムメモリ制御部１３がシステムメモリ４０からデータを獲得し（ステップ２０４）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、その獲得されたデータをリードモディファイライトリクエストのレスポンス（データレスポンス）として発行する（ステップ２０５）。プロセッサ２０−１は、キャッシュ内に格納し、データを更新する（ステップ２０６）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＤＥに変更する（ステップ２０７）。
【００８１】
履歴テーブル制御部１５が履歴テーブルを参照しそのリードモディファイライトリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ２０２）、図７に示すように、該当する物理アドレスが存在し、キャッシュステータスがＳＨあるいはＣＥの場合、プロセッサ２０内のキャッシュに有効なデータが存在することを示し（ステップ２０８）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２を介し、プロセッサ２０に対して、リードモディファイライト付きスヌープリクエストを発行する（ステップ２０９）。また、システムメモリ４０に格納されているデータが最新のデータであることから、システムメモリ制御部１３は、システムメモリ４０からデータを獲得し（ステップ２１０）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、その獲得されたデータをリードモディファイライトリクエストのレスポンス（データレスポンス）として発行する（ステップ２１１）。プロセッサ２０−１は、キャッシュ内に格納し、データを更新する（ステップ２１２）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＤＥに変更するとともに（ステップ２１３）、履歴テーブルにおけるプロセッサ２０−２〜２０−ｎのキャッシュステートをＩＶに変更する（ステップ２１４）。
【００８２】
履歴テーブル制御部１５が履歴テーブルを参照しそのリードモディファイライトリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ２０２）、図８に示すように、該当する物理アドレスが存在し、キャッシュステータスがＤＥの場合、プロセッサ２０内のキャッシュに最新のデータが存在することを示し（ステップ２１５）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−２〜２２−ｎを介し、プロセッサ２０−２〜２０−ｎに対して、リード付きスヌープリクエストを発行する（ステップ２１６）。
【００８３】
続いて、キャッシュラインのキャッシュステータスがＤＥであるキャッシュを保有するプロセッサ２０−ｍがライトバックのリクエストを発行した場合（ステップ２１７）、プロセッサバスインタフェース制御部１１がそのライトバックリクエストを受信し（ステップ２１８）、このライトバックリクエストがリクエスト監視部１６を介してシステムメモリ制御部１３へ送られ、システムメモリ制御部１３が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ４０のデータを更新し（ステップ２１９）、リクエスト監視部１６が、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介して、プロセッサ２０−１に対して、そのデータをリードモディファイライトリクエストのレスポンス（データレスポンス）として発行する（ステップ２２０）。プロセッサ２０−１は、キャッシュ内に格納し、データを更新する（ステップ２２１）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＤＥに変更するとともに（ステップ２２２）、履歴テーブルにおけるプロセッサ２０−２〜２０−ｎのキャッシュステートをＩＶに変更する（ステップ２２３）。
【００８４】
（ｃ）プロセッサが、インバリデートリクエストを発行した場合
図９に示すように、プロセッサ２０−１が、プロセッサバス２２−１を介して、インバリデートリクエストを発行し（ステップ３００）、バスインタフェースアダプタ１００のプロセッサバスインタフェース制御部１１がそのインバリデートリクエストを受信すると（ステップ３０１）、このインバリデートリクエストがプロセッサバスインタフェース制御部１１からリクエスト監視部１６を介して履歴テーブル制御部１５へ送られる。この履歴テーブル制御部１５が、履歴テーブルを参照し、このインバリデートリクエストのキャッシュラインの物理アドレスを検索する（ステップ３０２）。
【００８５】
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがＩＶの場合、つまり、履歴テーブルに有効なものが登録されていない場合（ステップ３０３）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、そのインバリデートリクエストの完了を発行する（ステップ３０４）。プロセッサ２０−１は、キャッシュラインのデータを更新する（ステップ３０５）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＤＥに変更する（ステップ３０６）。
【００８６】
履歴テーブル制御部１５が履歴テーブルを参照しそのインバリデートリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ３０２）、図１０に示すように、該当する物理アドレスが存在し、キャッシュステータスがＳＨ（ＣＥあるいはＤＥはありえないキャッシュステータス）の場合、プロセッサ２０内のキャッシュに有効なデータが存在することを示し（ステップ３０７）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２−１を介し、プロセッサ２０−１に対して、インバリデートリクエストを発行する（ステップ３０８）。プロセッサ２０−１は、キャッシュラインのデータを更新する（ステップ３０９）。バスインタフェースアダプタ１０の履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０−１のキャッシュステートをＤＥに変更するとともに（ステップ３１０）、履歴テーブルにおけるプロセッサ２０−２〜２０−ｎのキャッシュステートをＩＶに変更する（ステップ３１１）。
【００８７】
（ｄ）ＩＯ装置が、ＤＭＡリードリクエストを発行した場合
図１１に示すように、ＩＯ装置３０が、ＩＯバス３１を介して、ＤＭＡリードリクエストを発行し（ステップ４００）、バスインタフェースアダプタ１００のＩＯバスインタフェース制御部１２がそのＤＭＡリードリクエストを受信すると（ステップ４０１）、このＤＭＡリードリクエストがＩＯバスインタフェース制御部１２からリクエスト監視部１６を介して履歴テーブル制御部１５へ送られる。この履歴テーブル制御部１５が、履歴テーブルを参照し、このＤＭＡリードリクエストのキャッシュラインの物理アドレスを検索する（ステップ４０２）。
【００８８】
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがＩＶの場合、つまり、履歴テーブルに有効なものが登録されていない場合、システムメモリ４０に格納されているデータが最新のデータであることを示し（ステップ４０３）、システムメモリ制御部１３がシステムメモリ４０からデータを獲得し（ステップ４０４）、リクエスト監視部１６は、ＩＯバスインタフェース制御部１２及びＩＯバス３１を介し、ＩＯ装置３０に対して、そのデータをリードリクエストのレスポンス（データレスポンス）として発行する（ステップ４０５）。
【００８９】
履歴テーブル制御部１５が履歴テーブルを参照しそのＤＭＡリードリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ４０２）、図１２に示すように、該当する物理アドレスが存在し、キャッシュステータスがＳＨあるいはＣＥの場合、システムメモリに格納されているデータが最新のデータであることを示し（ステップ４０６）、システムメモリ制御部１３がシステムメモリ４０からデータを獲得し（ステップ４０７）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２を介し、プロセッサ２０に対して、その獲得されたデータをリードリクエストのレスポンス（データレスポンス）として発行する（ステップ４０８）。また、履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０のキャッシュステートをＳＨに変更する（ステップ４０９）。
【００９０】
履歴テーブル制御部１５が履歴テーブルを参照しそのＤＭＡリードリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ４０２）、図１３に示すように、該当する物理アドレスが存在し、キャッシュステータスがＤＥの場合、プロセッサ２０内のキャッシュに最新のデータが存在することを示し（ステップ４１０）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２を介し、プロセッサ２０に対して、リード付きスヌープリクエストを発行する（ステップ４１１）。
【００９１】
続いて、キャッシュラインのキャッシュステータスがＤＥであるキャッシュを保有するプロセッサ２０がライトバックのリクエストを発行し（ステップ４１２）、プロセッサバスインタフェース制御部１１がそのライトバックリクエストを受信し（ステップ４１３）、このライトバックリクエストがリクエスト監視部１６を介してシステムメモリ制御部１３へ送られ、システムメモリ制御部１３が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ４０のデータを更新し（ステップ４１４）、リクエスト監視部１６が、ＩＯバスインタフェース制御部１２及びＩＯバス３１を介し、ＩＯ装置３０に対して、そのデータをリードリクエストのレスポンス（データレスポンス）として発行する（ステップ４１５）。また、履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０のキャッシュステートをＳＨに変更する（ステップ４１６）。
【００９２】
（ｅ）ＩＯ装置が、ＤＭＡライトリクエストを発行した場合
図１４に示すように、ＩＯ装置３０が、ＩＯバス３１を介して、ＤＭＡライトリクエストを発行し（ステップ５００）、バスインタフェースアダプタ１００のＩＯバスインタフェース制御部１２がそのＤＭＡライトリクエストを受信すると（ステップ５０１）、このＤＭＡライトリクエストがＩＯバスインタフェース制御部１２からリクエスト監視部１６を介して履歴テーブル制御部１５へ送られる。この履歴テーブル制御部１５が、履歴テーブルを参照し、このインバリデートリクエストのキャッシュラインの物理アドレスを検索する（ステップ５０２）。
検索の結果、該当する物理アドレスが存在しない、あるいは該当する物理アドレスが存在するが、キャッシュステータスがＩＶの場合、つまり、履歴テーブルに有効なものが登録されていない場合（ステップ５０３）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２を介し、プロセッサ２０に対して、そのインバリデートリクエストの完了を発行する（ステップ５０４）。
【００９３】
履歴テーブル制御部１５が履歴テーブルを参照しそのインバリデートリクエストのキャッシュラインの物理アドレスを検索した結果（ステップ５０２）、図１５に示すように、該当する物理アドレスが存在し、キャッシュステータスがＳＨ，ＣＥあるいはＤＥのいずれかの場合、プロセッサ２０内のキャッシュに有効なデータが存在することを示し（ステップ５０５）、リクエスト監視部１６は、プロセッサバスインタフェース制御部１１及びプロセッサバス２２を介し、プロセッサ２０に対して、インバリデートリクエストを発行する（ステップ５０６）。
【００９４】
続いて、キャッシュラインのキャッシュステータスがＤＥであるキャッシュを保有するプロセッサ２０がライトバックのリクエストを発行し（ステップ５０７）、プロセッサバスインタフェース制御部１１がそのライトバックリクエストを受信し（ステップ５０８）、このライトバックリクエストがリクエスト監視部１６を介してシステムメモリ制御部１３へ送られ、システムメモリ制御部１３が、ライトバックリクエストに付いているキャッシュブロックに格納されているデータによりシステムメモリ４０のデータを更新し（ステップ５０９）、ＤＭＡライトリクエストのライトデータをマージする。また、履歴テーブル制御部１５は、リクエスト監視部１６からの指示により、履歴テーブルにおけるプロセッサ２０のキャッシュステートをＩＶに変更する（ステップ５１０）。
【００９５】
［情報処理装置］
パーソナルコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話機に代表される情報処理装置には、内部にマザーボードと、拡張ボードとしてのＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ペリフェラル  コンポネント  インタコネクト））ボード（ＰＣＩカード）を配置したものがある。
ＰＣＩとは、情報処理装置内部においてパーツとパーツを結ぶデータ伝送路であるバスの規格をいう。
【００９６】
ＰＣＩボードには、バスインタフェースアダプタ、システムメモリ、プロセッサ、ＩＯ装置などで構成されるデータ転送システムが形成されている。このデータ転送システムは、前述した本実施形態のデータ転送システムにより構成することができる。これにより、データ転送の高速化を実現したＰＣＩボードを実現でき、情報処理装置全体としてもデータ処理の高速化を図ることができる。
なお、ＰＣＩボードを備えた情報処理装置については、例えば、特開２００４−２７２６４６号公報「ＰＣＩボード及び情報処理装置」に開示されている。
【００９７】
以上説明したように、本実施形態のバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置によれば、プロセッサへの不要なスヌープ時間を削減できるため、プロセッサ内部のスヌープ処理を削減できる。そして、スヌープ処理が完了されるまでの遅延時間が削減されることから、データ転送の高速化を図ることができる。
【００９８】
以上、本発明のバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置の好ましい実施形態について説明したが、本発明に係るバスインタフェースアダプタ、データ転送方法、データ転送システム及び情報処理装置は上述した実施形態にのみ限定されるものではなく、本発明の範囲で種々の変更実施が可能であることは言うまでもない。
例えば、上述した実施形態では、システムメモリを一つのみ備えた構成としたが、一つのみに限るものではなく複数備えることもできる。
【産業上の利用可能性】
【００９９】
本発明は、データ転送を制御するバスインタフェースアダプタに関する発明であるため、バスインタフェースアダプタを搭載した装置や機器に利用可能である。
【図面の簡単な説明】
【０１００】
【図１】本発明の実施形態のデータ転送システムの構成を示すブロック図である。
【図２】履歴テーブルの構成を示す図表である。
【図３】プロセッサからリードリクエストが発行された場合であって、そのリードリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがインバリデート（ＩＶ）であるときのデータ転送システムの動作を示す動作手順図である。
【図４】プロセッサからリードリクエストが発行された場合であって、そのリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがシェアード（ＳＨ）又はクリーンイクスクルーシブ（ＣＥ）であるときのデータ転送システムの動作を示す動作手順図である。
【図５】プロセッサからリードリクエストが発行された場合であって、そのリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがダーティーイクスクルーシブ（ＤＥ）であるときのデータ転送システムの動作を示す動作手順図である。
【図６】プロセッサからリードモディファイライトリクエストが発行された場合であって、そのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがＩＶであるときのデータ転送システムの動作を示す動作手順図である。
【図７】プロセッサからリードモディファイライトリクエストが発行された場合であって、そのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがＳＨ又はＣＥであるときのデータ転送システムの動作を示す動作手順図である。
【図８】プロセッサからリードモディファイライトリクエストが発行された場合であって、そのリードモディファイライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがＤＥであるときのデータ転送システムの動作を示す動作手順図である。
【図９】プロセッサからインバリデートリクエストが発行された場合であって、そのインバリデートリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがＩＶであるときのデータ転送システムの動作を示す動作手順図である。
【図１０】プロセッサからインバリデートリクエストが発行された場合であって、そのインバリデートリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがＳＨであるときのデータ転送システムの動作を示す動作手順図である。
【図１１】ＩＯ装置からＤＭＡリードリクエストが発行された場合であって、そのＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがＩＶであるときのデータ転送システムの動作を示す動作手順図である。
【図１２】ＩＯ装置からＤＭＡリードリクエストが発行された場合であって、そのＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがＳＨ又はＣＥであるときのデータ転送システムの動作を示す動作手順図である。
【図１３】ＩＯ装置からＤＭＡリードリクエストが発行された場合であって、そのＤＭＡリードリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがＤＥであるときのデータ転送システムの動作を示す動作手順図である。
【図１４】ＩＯ装置からＤＭＡライトドリクエストが発行された場合であって、そのＤＭＡライトリクエストのキャッシュラインの物理アドレスが存在しないとき、または、その物理アドレスが存在するもののキャッシュステータスがＩＶであるときのデータ転送システムの動作を示す動作手順図である。
【図１５】ＩＯ装置からＤＭＡライトドリクエストが発行された場合であって、そのＤＭＡライトリクエストのキャッシュラインの物理アドレスが存在し、キャッシュステータスがＳＨ、ＣＥ、ＤＥのいずれかであるときのデータ転送システムの動作を示す動作手順図である。
【図１６】従来のデータ転送システムの構成を示すブロック図である。
【図１７】プロセッサに有効なキャッシュラインが存在するときの従来のデータ転送システムの動作を示す動作手順図である。
【図１８】プロセッサからリードリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。
【図１９】プロセッサからリードリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがＳＥ又はＣＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２０】プロセッサからリードリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがＤＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２１】プロセッサからリードモディファイライトリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。
【図２２】プロセッサからリードモディファイライトリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがＳＥ又はＣＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２３】プロセッサからリードモディファイライトリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがＤＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２４】プロセッサからインバリデートリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。
【図２５】プロセッサからインバリデートリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがＳＨであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２６】プロセッサからインバリデートリクエストが発行された場合であって、他のプロセッサに有効なキャッシュラインが存在し、そのプロセッサのキャッシュステータスがＣＥ又はＤＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２７】ＩＯ装置からＤＭＡリードリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。
【図２８】ＩＯ装置からＤＭＡリードリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがＳＨ又はＣＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図２９】ＩＯ装置からＤＭＡリードリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがＤＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図３０】ＩＯ装置からＤＭＡライトリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在しないときの従来のデータ転送システムの動作を示す動作手順図である。
【図３１】ＩＯ装置からＤＭＡライトリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがＳＨ又はＣＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【図３２】ＩＯ装置からＤＭＡライトリクエストが発行された場合であって、プロセッサに有効なキャッシュラインが存在し、キャッシュステータスがＤＥであるときの従来のデータ転送システムの動作を示す動作手順図である。
【符号の説明】
【０１０１】
１０  バスインタフェースアダプタ
１１  プロセッサバスインタフェース制御部
１２  ＩＯバスインタフェース制御部
１３  システムメモリ制御部
１４  履歴テーブル記憶部
１５  履歴テーブル制御部
１６  リクエスト監視部
２０  プロセッサ
２１  キャッシュ
２２  プロセッサバス
３０  ＩＯ装置
３１  ＩＯバス
４０  システムメモリ
Ａ  データ転送システム
【図１】
2008204101.tif 000003
【図２】
2008204101.tif 000004
【図３】
2008204101.tif 000005
【図４】
2008204101.tif 000006
【図５】
2008204101.tif 000007
【図６】
2008204101.tif 000008
【図７】
2008204101.tif 000009
【図８】
2008204101.tif 000010
【図９】
2008204101.tif 000011
【図１０】
2008204101.tif 000012
【図１１】
2008204101.tif 000013
【図１２】
2008204101.tif 000014
【図１３】
2008204101.tif 000015
【図１４】
2008204101.tif 000016
【図１５】
2008204101.tif 000017
【図１６】
2008204101.tif 000018
【図１７】
2008204101.tif 000019
【図１８】
2008204101.tif 000020
【図１９】
2008204101.tif 000021
【図２０】
2008204101.tif 000022
【図２１】
2008204101.tif 000023
【図２２】
2008204101.tif 000024
【図２３】
2008204101.tif 000025
【図２４】
2008204101.tif 000026
【図２５】
2008204101.tif 000027
【図２６】
2008204101.tif 000028
【図２７】
2008204101.tif 000029
【図２８】
2008204101.tif 000030
【図２９】
2008204101.tif 000031
【図３０】
2008204101.tif 000032
【図３１】
2008204101.tif 000033
【図３２】
2008204101.tif 000034