(57)【要約】【課題】システムバスエラーを起こすことなく、コンピュータシステムのソフトウェアやホストブリッジに変更を加えることなくI/Oとメモリ間のデータ転送の高速化を実現する。【解決手段】ページサイズ調査部183は、ホストを疑似してI/O17-3が保持するコンフィグレーションレジスタ171-3に登録されたページサイズを自律的にリードして取得する。データプリフェッチ部185は、I/O17-3のメモリ12に対するリード要求を受信すると、最大で要求されたデータが存在するページのページ境界までのプリフェッチを行い、次のページに該当するデータへのプリフェッチは、I/Oから次のページへのリード要求を受信した後で行う。【選択図】図１
2008257596.tif 000002
【特許請求の範囲】
【請求項１】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチデバイスにおいて、
前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とするデータプリフェッチデバイス。
【請求項２】
前記メモリで用いられているページサイズを保持するページサイズ記憶手段と、
前記ページサイズ記憶手段で保持されたページサイズを参照し、前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後で開始するデータプリフェッチ手段と、
を備えたことを特徴とする請求項１に記載のデータプリフェッチデバイス。
【請求項３】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチデバイスにおいて、
ホストを疑似してＩ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とするデータプリフェッチデバイス。
【請求項４】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチデバイスにおいて、
ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とするデータプリフェッチデバイス。
【請求項５】
ホストのＩＤを保持するホスト情報記憶手段と、
前記ホスト情報記憶手段で保持されたＩＤを用いて、Ｉ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得するページサイズ調査手段と、
前記ページサイズで規定される前記メモリのページ境界を越えないようデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後で開始するデータプリフェッチ手段と、
を備えたことを特徴とする請求項３に記載のデータプリフェッチデバイス。
【請求項６】
ホストのＩＤを保持するホスト情報記憶手段と、
前記ホスト情報記憶手段で保持されたＩＤを用いて、Ｉ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得するページサイズ調査手段と、
を備え、
取得されたページサイズは前記ページサイズ記憶手段に保持されることを特徴とする請求項２に記載のデータプリフェッチデバイス。
【請求項７】
ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータから、前記メモリで用いられているページサイズを取得するページサイズ調査手段と、
前記ページサイズで規定される前記メモリのページ境界を越えないようデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後で開始するデータプリフェッチ手段と、
を備えたことを特徴とする請求項４に記載のデータプリフェッチデバイス。
【請求項８】
ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータから、前記メモリで用いられているページサイズを取得するページサイズ調査手段を備え、
取得されたページサイズは前記ページサイズ記憶手段に保持されることを特徴とする請求項２に記載のデータプリフェッチデバイス。
【請求項９】
前記ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータが、ホストが発行したデータであることを確認するため、予め保持しているホストのIDを参照することを特徴とする請求項４、７、８のいずれか１項に記載のデータプリフェッチデバイス。
【請求項１０】
前記メモリで用いられているページサイズは、前記データプリフェッチデバイスを通過する、ホストが発行したデータから取得したものであることを特徴とする請求項４、７〜９のいずれか１項に記載のデータプリフェッチデバイス。
【請求項１１】
前記ホスト情報記憶手段に登録されたホストのＩＤは、前記データプリフェッチデバイスを通過する、ホストが発行したデータから取得したものであることを特徴とする請求項５又は６に記載のデータプリフェッチデバイス。
【請求項１２】
前記データプリフェッチデバイスに接続されるバスの規格がＰＣＩエクスプレスに従うことを特徴とする請求項１〜１１のいずれか１項に記載のデータプリフェッチデバイス。
【請求項１３】
請求項１から１２のいずれか１項に記載のデータプリフェッチデバイスと、該データプリフェッチデバイスにより読み出されるデータを記憶するメモリと、ＣＰＵとを備えたコンピュータシステム。
【請求項１４】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチ方法において、
前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とするデータプリフェッチ方法。
【請求項１５】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチ方法において、
ホストを疑似してＩ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とするデータプリフェッチ方法。
【請求項１６】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチ方法において、
ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とするデータプリフェッチ方法。
【請求項１７】
前記ホストの疑似では、ホストのＩＤを用いて前記コンフィグレーションレジスタに対するリードを発行することを特徴とする請求項１５に記載のデータプリフェッチ方法。
【請求項１８】
前記ホストのＩＤは、前記データプリフェッチデバイスを通過するホストが発行したデータから取得することを特徴とする請求項１７に記載のデータプリフェッチ方法。
【請求項１９】
前記ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータが、ホストが発行したデータであることを確認するため、予め保持しているホストのIDを参照することを特徴とする請求項１６に記載のデータプリフェッチ方法。
【請求項２０】
前記メモリで用いられているページサイズは、前記データプリフェッチデバイスを通過する、ホストが発行したデータから取得したものであることを特徴とする請求項１６に記載のデータプリフェッチ方法。
【請求項２１】
前記データプリフェッチがＰＣＩエクスプレスの規格に基づいて行われることを特徴とする請求項１４〜２０のいずれか１項に記載のデータプリフェッチ方法。
【請求項２２】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチをコンピュータに実行させるためのデータプリフェッチプログラムであって、
前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始する処理を前記コンピュータに実行させるデータプリフェッチプログラム。
【請求項２３】
前記処理の前に、前記メモリで用いられているページサイズを保持する第１の処理と  保持されたページサイズを参照する第２の処理とをコンピュータに実行させることを特徴とする請求項２２に記載のデータプリフェッチプログラム。
【請求項２４】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチをコンピュータに実行させるためのデータプリフェッチプログラムであって、
ホストを疑似してＩ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始する処理を前記コンピュータに実行させることを特徴とするデータプリフェッチプログラム。
【請求項２５】
データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチをコンピュータに実行させるためのデータプリフェッチプログラムであって、
ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始する処理を前記コンピュータに実行させることを特徴とするデータプリフェッチプログラム。
【請求項２６】
前記処理の前にホストのＩＤを保持する他の処理を前記コンピュータに実行させ、
前記処理でのページサイズの取得は、前記ＩＤを用いて行われる請求項２４に記載のデータプリフェッチプログラム。
【請求項２７】
前記ＩＤは、コンピュータを通過するホストが発行したデータから取得したものであることを特徴とする請求項２６に記載のデータプリフェッチプログラム。
【請求項２８】
前記ホストがI/Oデバイスのコンフィグレーションレジスタに書き込むデータが、ホストが発行したデータであることを確認するため、予め保持しているホストのIDを参照することを特徴とする請求項２５に記載のデータプリフェッチプログラム。
【請求項２９】
前記メモリで用いられているページサイズは、前記データプリフェッチデバイスを通過する、ホストが発行したデータから取得したものであることを特徴とする請求項２５に記載のデータプリフェッチプログラム。
【請求項３０】
前記データプリフェッチプログラムは、ＰＣＩエクスプレスの規格に従って動作することを特徴とする請求項２２〜２９のいずれか１項に記載のデータプリフェッチプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラムに関し、ページ境界を自律的に判断しプリフェッチを制御するデータプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラムに関する。
【背景技術】
【０００２】
従来、この種のデータプリフェッチデバイスはコンピュータシステムにおいてI/Oとメモリ間のデータ転送の高速化を実現するために用いられている。従来のデータプリフェッチデバイスを用いたコンピュータシステムの一例が特許文献１に記載されている。
【０００３】
図７を参照すると、特許文献１に記載されたコンピュータシステムの形態は、CPU11と、メモリ12と、それぞれのバスを相互に接続するホストブリッジ15と、CPU11とホストブリッジ15とを接続するCPUバス13と、メモリ12とホストブリッジ15とを接続するメモリバス14と、I/Oデバイス（以下、I/Oという）17-1〜17-3と、I/O17-1〜17-3とホストブリッジ15とを接続するI/Oバス16-1〜16-3とを含む。
【０００４】
図７に示したコンピュータシステムでは、ホストブリッジ15がデータプリフェッチデバイスの機能を実行し、I/O17-1〜17-3が発行するメモリ12に対するリード要求のプリフェッチを行うことで、I/O17-1〜17-3とメモリ12間のデータ転送の高速化を実現する。
【０００５】
今、ホストがI/O17-1のDirect Memory Access (DMA)動作を設定したとする。I/O17-1はメモリ12に対し、ホストに指定されたアドレスをリードする要求を送信する。ホストブリッジ15は、I/O17-1から受信したリード要求をメモリ12に転送すると同時に、リード要求のアドレスの値に+1したアドレスに対するプリフェッチを行う。続いて、I/O17-1がアドレスが連続する次のリード要求を発行すると、ホストブリッジ15はプリフェッチしておいたデータをI/O17-1に送信すると共に、さらに次の+1したアドレスに対してプリフェッチを行う。このようにして、I/O17-1〜17-3とメモリ12間のデータ転送の高速化が実現される。
【０００６】
ここでブレードサーバなど、個々のコンポーネントを別々のボードやカードに実装する形態では、図８に示すように、ホストブリッジ15とI/O17-3の物理的な距離が隔たっている場合がある。この場合、I/Oバス16-3とI/Oバス16-4との間でかつI/O17-3の付近に、I/O17-3のメモリ12へのリード要求を更にプリフェッチするデータプリフェッチデバイス81を用いることが有効である。また、一度のDMA動作で、メモリ12の連続するアドレスに対し多量のデータをリードするI/O17-3に対しては、データプリフェッチデバイス81はリード要求のアドレスの値に+1したアドレスに対してだけでなく、更にその先のアドレスもまとめてプリフェッチすることが望ましい。
【０００７】
しかし、データプリフェッチデバイス81はホストからは透過であるため、コンピュータシステムにおいて標準的に用いられているソフトウェアでは、メモリ12で用いられているページサイズを知ることができない。従って、メモリ12に対しページ境界を越えるデータのプリフェッチを行った場合、システムバスエラーを発生させる可能性がある。
【０００８】
これは、コンピュータシステムではメモリ12にはページ単位でデータが組み込まれており、その組み込みは動的であって、ある時点で全てのアドレスに対応するページがメモリ１２に組み込まれているわけではないからである。
【特許文献１】特開2001-84216号公報(図1)
【発明の開示】
【発明が解決しようとする課題】
【０００９】
第１の問題点は、I/Oバスの途中でI/Oのメモリに対するリードのプリフェッチを行う場合、システムバスエラーを発生させることである。
【００１０】
その理由は、従来のデータプリフェッチデバイスは、メモリで用いられているページサイズを知ることができず、ページ境界を越えるプリフェッチを行うからである。
【００１１】
第２の問題点は、データプリフェッチデバイスにページサイズを通知する場合、ソフトウェアやホストブリッジの変更が必要なことである。
【００１２】
その理由は、従来のコンピュータシステムではデータプリフェッチデバイスを想定しておらず、従ってデータプリフェッチデバイスにページサイズを通知する場合、特別なソフトウェアやホストブリッジを設計する必要があるためである。
【００１３】
本発明の第１の目的は、メモリのページ境界を判断し、システムバスエラーを発生させないようにデータのプリフェッチを制御するデータプリフェッチデバイスを提供することにある。
【００１４】
本発明の第２の目的は、コンピュータシステムのソフトウェアやホストブリッジに変更を加えることなく、メモリのページ境界を判断するデータプリフェッチデバイスを提供することにある。
【課題を解決するための手段】
【００１５】
本発明のデータプリフェッチデバイスは、データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチデバイスにおいて、
前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とする。
【００１６】
また本発明のデータプリフェッチデバイスは、データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチデバイスにおいて、
ホストを疑似してＩ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とする。
【００１７】
本発明のデータプリフェッチ方法は、データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチ方法において、
前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とする。
【００１８】
また本発明のデータプリフェッチ方法は、データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチ方法において、
ホストを疑似してＩ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始することを特徴とする。
【００１９】
本発明のデータプリフェッチプログラムは、データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチをコンピュータに実行させるためのデータプリフェッチプログラムであって、
前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始する処理を前記コンピュータに実行させるデータプリフェッチプログラムである。
【００２０】
また本発明のデータプリフェッチプログラムは、データが必要とされる前にメモリから該データをプリフェッチするデータプリフェッチをコンピュータに実行させるためのデータプリフェッチプログラムであって、
ホストを疑似してＩ／Ｏデバイスのコンフィグレーションレジスタから、前記メモリで用いられているページサイズを取得し、このページサイズで規定される前記メモリのページ境界を越えないようにデータプリフェッチを行い、次のページに該当するデータのプリフェッチは、該次のページに該当するデータのリード要求を受信した後に開始する処理を前記コンピュータに実行させることを特徴とするデータプリフェッチプログラムである。
【発明の効果】
【００２１】
本発明の第１の効果は、システムバスエラーを起こさずデータプリフェッチができることにある。
【００２２】
その理由は、メモリで用いられているページサイズを保持し、メモリに対するリード要求のプリフェッチにおいて、ページサイズの境界を越えないようにし、次のページに対応するデータのプリフェッチは、そのページに対するリード要求を受信した後に開始するためである。
【００２３】
本発明の第2の効果は、本発明に係わるコンピュータシステムでは、コンピュータシステムのソフトウェアやホストブリッジに変更を加えることなくメモリで用いられているページサイズを取得できることにある。
【００２４】
その理由は、データプリフェッチデバイスはI/Oデバイスのコンフィグレーションレジスタに登録された、メモリで用いられているページサイズをホストを疑似して自律的にリードし取得するためである。
【発明を実施するための最良の形態】
【００２５】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
［第１の実施の形態］
図1は、本発明を実施するための第1の実施の形態のコンピュータシステムの構成を示すブロック図である。
【００２６】
図１に示すコンピュータシステムは、CPU11と、メモリ12と、それぞれのバスを相互に接続するホストブリッジ15と、CPU11とホストブリッジ15とを接続するCPUバス13と、メモリ12とホストブリッジ15とを接続するメモリバス14と、I/Oデバイス（以下、I/Oという）17-1〜17-3と、I/O17-1,17-2とホストブリッジ15とを接続するI/Oバス16-1，16-2と、データプリフェッチデバイス１８と、ホストブリッジ１５とデータプリフェッチデバイス１８とを接続するI/Oバス16-3と、データプリフェッチデバイス１８とI/O17-3とを接続するI/Oバス16-4を含んでいる。
【００２７】
図１を参照すると、データプリフェッチデバイス18は、コンピュータシステムに組み込まれ、I/Oバス16-3とI/Oバス16-4とに接続し、I/O17-3がメモリ12からリードするデータのプリフェッチを行う。このときデータプリフェッチデバイス18は、ホストに対しては透過となる。
【００２８】
データプリフェッチデバイス18は、I/Oバス16-3を通過するホストが発行したデータからホストのIDを調査するホスト情報調査部181と、ホストのIDを保持するホスト情報記憶部182と、メモリ12で用いられているページサイズをI/O17-3から取得するページサイズ調査部183と、ページサイズを記憶するページサイズ記憶部184と、ページ境界を越えない範囲でデータのプリフェッチを行うデータプリフェッチ部185と、プリフェッチしたデータを記憶するデータ記憶部186とを含む。データプリフェッチデバイスの各構成部は専用ＩＣを用いて構成することができる。複数の構成部を１つのＩＣで構成することもできる。
【００２９】
I/O17-1〜17-3は、ホストに対しデバイス情報を提供し、デバイスの制御を受け付けるコンフィグレーションレジスタ171-1〜171-3を含む。
【００３０】
コンフィグレーションレジスタ171-1〜171-3のフィールドの1つは、ホストがメモリ12で用いられているページサイズを登録する領域である。これはI/O17-3のリソースをメモリマップする際、マップする領域をページサイズに揃えるためである。
【００３１】
ページサイズ調査部183は、ホストがコンフィグレーションレジスタ171-3に対するライトによりデバイス設定が終了した後、ホスト情報記憶部182に記載されたホストのIDを用いることでホストからのアクセスを疑似し、コンフィグレーションレジスタ171-3のページサイズが登録されたフィールドをリードし、ページサイズ記憶部182に記載する。このとき、必要に応じてホストからI/O17-3へのアクセスは遮断して記憶し、ページサイズを取得した後にまとめてそれらのアクセスを再開する。
【００３２】
データプリフェッチ部185は、I/O17-3のメモリ12に対するリード要求を受信すると、リード要求のアドレスがプリフェッチしたデータの領域か確認し、該当領域であれば、該当データをプリフェッチしたデータが格納されたデータ記憶部186から読み出し、I/O17-3に返信する。一方、リード要求のアドレスがプリフェッチしたデータの該当領域ではない場合、I/O17-3のリード要求を転送すると同時に、後のアドレスをプリフェッチするリード要求をメモリ12に送信する。このとき、ページサイズ記憶部184に記載されたページサイズを参照し、プリフェッチがページ境界を越えないように制御する。従って、データプリフェッチ部185は、ページ境界においてメモリ12からのデータのフェッチを停止し、次のページに対するリード要求をI/O17-3から受信した段階で、再び次のページのアドレスに対するデータのプリフェッチを開始する。I/O17-3から受信したリード要求がページ境界までの全てのデータを要求する場合、データプリフェッチ部185はデータのプリフェッチを行わない。また、データプリフェッチ部185は、I/O17-3のメモリ12に対するリード要求に関連しないデータは、単にI/O17-3とメモリ12の間であて先へ転送を行う。
【００３３】
次に、図１〜図３を参照して本発明を実施するための第１の実施の形態の動作について詳細に説明する。
【００３４】
まず、図１及び図２を参照してホストによるI/O17-3のコンフィグレーション時にデータプリフェッチデバイス18がホストのID及びページサイズを取得する動作を説明する。
【００３５】
ホストによるI/O17-3のコンフィグレーションが開始されると(ステップ201)、コンフィグレーションに関するデータがI/Oバス16-3とI/Oバス16-316-4とを流れる。
【００３６】
ホスト情報調査部181はデータプリフェッチデバイス18を通過するデータから、ホストのID情報を検出し(ステップ202)、ホスト情報記憶部182に登録する(ステップ203)。ホストによるI/O17-3のコンフィグレーションが完了すると(ステップ204)、ページサイズ調査部183はホストからI/O17-3へのアクセスを一時遮断しアクセスを記憶しておく(ステップ205)。続いてページサイズ調査部183は、ホスト情報記憶部182に登録されているホストのIDを用いてホストを疑似し、コンフィグレーションレジスタ171-3に登録されているページサイズを読み取り(ステップ206)、ページサイズ記憶部184に登録する(ステップ207)。最後にステップ205で遮断したアクセスを再開する(ステップ208)。以上の動作により、データプリフェッチデバイス18はホストID及びページサイズを取得する。
【００３７】
次に図１及び図３を参照して、I/O17-3がメモリ12に対してリードするデータのプリフェッチを、データプリフェッチデバイス18が行う場合の動作を説明する。
【００３８】
データプリフェッチ部185が、I/O17-3からメモリ12に対するリード要求を受信すると(ステップ301)、リード要求があったアドレスのデータを既にプリフェッチ済みか調べる(ステップ302)。既にプリフェッチ済みだった場合、データプリフェッチ部185がメモリ12に要求したデータが既にデータ記憶部186に格納されている場合と、受信待ちの場合がある(ステップ303)。該当データがデータ記憶部186に既に格納されている場合、データプリフェッチ部185は該当データをリードし、I/O17-3に返信する(ステップ304)。一方受信待ちだった場合、データプリフェッチ部185は、メモリ12が該当データを返信するまで待機し(ステップ312)、プリフェッチデータを受信すると(ステップ313)、I/O17-3から要求があったアドレス範囲に該当するデータを返信する(ステップ314)。
【００３９】
また、ステップ302においてI/O17-3からリード要求があったアドレスのデータがプリフェッチ済みでない場合、リード要求がページ境界までの全てのデータを要求しているか調べる(ステップ305)。ページ境界までの全てのデータを要求している場合、データプリフェッチ部185はI/O17-3の要求をメモリ12に転送し、データプリフェッチは行わない(ステップ306)。データプリフェッチ部305は転送したI/O17-3のリード要求に対する応答をメモリ12から受信すると、受信データをI/O17-3に転送する(ステップ307)。
一方、ステップ305において、I/O17-3がページ境界までのデータを要求しない場合、データプリフェッチ部185はI/O17-3のリード要求をメモリ12に転送し、続いてリード要求のアドレスの後のアドレスに対応するデータを、最大同ページの境界までプリフェッチする要求をメモリ12に送信する。データプリフェッチ部185は、メモリ12から、まず転送したI/O17-3のリード要求に対する応答を受信し、I/O17-3に転送する(ステップ310)。続いて、プリフェッチしたデータを受信し、データ記憶部186に格納する(ステップ311)。
【００４０】
次に、本発明を実施するための第1の実施の形態の効果について説明する。
【００４１】
本発明の第1の実施の形態では、ホストによるI/Oのコンフィグレーション完了時に、データプリフェッチデバイスがホストを疑似して、I/Oのコンフィグレーションレジスタからページサイズを取得し、I/Oがメモリからリードするデータのプリフェッチは、最大でI/Oから要求されたデータが存在するページのページ境界までとし、次のページに該当するデータのプリフェッチは、I/Oから次のページへのリード要求を実際に受信した後で行う。
【００４２】
このため、コンピュータシステムのソフトウェアやホストブリッジに変更を加えることなく、データプリフェッチデバイスがページ境界を自律的に判断し、システムバスエラーを起こさずに効率的なメモリ、I/O間のデータ転送ができる。
【００４３】
なお、本実施の形態ではページサイズ調査部183がコンフィグレーションレジスタ171-3に登録されているページサイズを読み取る構成を示したが、ページサイズ調査部183は、ホストによるI/O17-3のコンフィグレーション時に、ホストがコンフィグレーションレジスタ171-3に書き込むデータがデータプリフェッチデバイス18を通過する際に、データに含まれるページサイズを取得することも可能である（以下の第２の実施の形態においても同様である）。また、その際、取得したデータがホストが発行したものであるかホスト情報記憶部182に格納されているホストのID情報から確認することが可能である。
［第２の実施の形態］
次に、本発明を実施するための第２の実施の形態について図面を参照して詳細に説明する。
【００４４】
図４を参照すると、本発明の第２の実施の形態であるデータプリフェッチデバイス41はコンピュータシステムに組み込まれ、I/Oバス16-3とI/Oバス16-4に接続し、I/O17-3がメモリ12からリードするデータのプリフェッチを行う。
【００４５】
データプリフェッチデバイス41は、データ処理を行うCPU411と、データを記憶するデータ記憶部412と、CPU411にデータプリフェッチデバイス41の処理を行わせるデータプリフェッチデバイスプログラム413とを含む。
【００４６】
データプリフェッチデバイスプログラム413はCPU411に読み込まれ、図1に示した第1の実施の形態におけるホスト情報記憶部182と、ページサイズ記憶部184と、データ記憶部186に対応するデータを、それぞれホスト情報記憶部4121と、ページサイズ記憶部4122と、プリフェッチデータ記憶部4123とに記憶する。CPU411は、データプリフェッチデバイスプログラム413の制御により、図２及び図３を用いて説明した第1の実施の形態におけるホスト情報調査部181と、ページサイズ調査部183と、データプリフェッチ部185と同様の処理を行う。データプリフェッチデバイスプログラム413はCPU411とは別に設けられたＲＯＭ等の記憶部に記憶されてもよい。
【実施例１】
【００４７】
次に、本発明の第1の実施例を、図面を参照して説明する。かかる実施例は本発明を実施するための第1の実施の形態に対応するものである。図５は本発明の第１の実施例に係わるデータプリフェッチデバイスを含むコンピュータシステムを説明するための図である。
【００４８】
図5の構成を図１と対比させて説明すると、本実施例のデータプリフェッチデバイス58はホスト情報調査部181としてホスト情報調査部581を、ホスト情報記憶部182としてホスト情報記憶部582を、ページサイズ調査部183としてページサイズ調査部583を、ページサイズ記憶部184としてページサイズ記憶部584を、データプリフェッチ部185としてデータプリフェッチ部585を、データ記憶部186としてデータ記憶部586とを含む。また、I/Oバス16-1〜I/Oバス16-4はPCI-SIG (PCI Special Interest Group)で標準化されているPCIe (PCI Express)規格に従うPCIeバス56-1〜56-4であり、I/O57-1〜57-3はコンフィグレーションレジスタ171-1〜171-3としてPCIeコンフィグレーションレジスタ571-1〜571-3を含む。
【００４９】
今、コンピュータシステムの電源が投入されたとすると、ホストによりシステムのコンフィグレーションが開始される。ホストからはデータプリフェッチデバイス58は見えず、ホストブリッジ55とI/O57-3が直接接続されているように認識される。I/O57-3のコンフィグレーションでは、ホストがコンフィグレーションリードTLP(Transaction Layer Packet)を用いてPCIeコンフィグレーションレジスタ571-3に登録されているデバイス情報をリードする。このとき、これらのTLPはデータプリフェッチデバイス58を通過する。よってホスト情報調査部581は、通過するTLPからホストのIDであるバス番号、デバイス番号、ファンクション番号の組み合わせを取得し、ホスト情報記憶部582にライトする。一方、ホストはコンフィグレーションリードTLPによりI/O571-3のデバイス情報を取得した後、それらの情報に基づき、コンフィグレーションライトTLPを用いてPCIeコンフィグレーションレジスタ571-3にライトすることで、I/O57-3のコンフィグレーションを完了する。
【００５０】
ページサイズ調査部583は、これら一連のホストによるコンフィグレーションが完了すると、ホスト側からI/O17-3へのTLPを一時遮断する。続いて、ホスト情報記憶部182に登録されたホストのIDであるバス番号、デバイス番号、ファンクション番号の組み合わせを用いてコンフィグレーションリードTLPを作成し、コンフィグレーションレジスタ171-3のページサイズが登録されているフィールドをリードし、取得した情報をページサイズ記憶部584に登録する。最後に、ページサイズ調査部583は遮断していたホストからのアクセスを再開し、I/O57-3に転送する。以上の動作によりデータプリフェッチデバイス58は自律的にページサイズを取得する。
【００５１】
次に、通常の動作時においてデータプリフェッチデバイス58が、I/O57-3からDMAによりメモリ52のデータのリードを要求するメモリリードTLPを受信したとする。データプリフェッチ部585は、メモリリードTLPのアドレス領域が、すでにデータプリフェッチ部585がプリフェッチ要求を行った領域と一致するか調べる。プリフェッチ要求を行った領域と一致し、かつ、該当データがデータ記憶部586に既に格納されている場合、データプリフェッチ部585は該当データをリードし、I/O57-3に返信する。一方プリフェッチ要求を行ったものの、メモリ52からの返信待ちの場合、データプリフェッチ部585は該当データを受信するまで待機し、データを受信した後、I/O57-3のメモリリードTLPに該当するアドレス範囲のデータを応答TLPとしてI/O57-3に返信する。
【００５２】
また、I/O57-3のメモリリードTLPのアドレス領域が、すでにデータプリフェッチ部585がプリフェッチ要求を行った領域と一致しない場合、データプリフェッチ部585はメモリリードTLPがページ境界までの全てのデータを要求しているか調べる。このとき、ページサイズ記憶部584にはページサイズが登録されているため、その情報をもとに判断する。例えばページサイズが4KBのシステムでは、メモリリードTLPが4KBの区切りとなるアドレスまでの全てのデータを要求する場合、ページ境界までのデータを要求していることとなる。このとき、データプリフェッチ部585はプリフェッチを行わず、I/O57-3のメモリリードTLPのみをメモリ52に転送し、その応答TLPを受信した場合はI/O57-3に転送する。
【００５３】
一方I/O57-3のメモリリードTLPがページ境界までの全てのデータを要求しない場合、データプリフェッチ部585はまず、I/O57-3のメモリリードTLPをメモリ52に転送し、続いてメモリリードTLPの要求アドレスの後のアドレスに該当するデータを、最大I/O57-3が要求したデータが存在するページのページ境界までプリフェッチする。その後、データプリフェッチ部585はメモリ52からまず、I/O57-3のメモリリードリクエストに対する応答TLPを受信し、これをI/O57-3に転送する。続いてデータプリフェッチ要求の応答に該当するデータはデータ記憶部586に格納し、後からI/O57-3がメモリリードTLPによりデータを要求する場合に備える。
【実施例２】
【００５４】
次に本発明の第2の実施例を、図面を参照して説明する。かかる実施例は本発明を実施するための第2の実施の形態に対応するものである。
【００５５】
図6を参照すると、本実施例のデータプリフェッチデバイス61はCPU411としてCPU611を、データ記憶部412としてデータ記憶部612を、データプリフェッチデバイスプログラム413としてデータプリフェッチデバイスプログラム613を、ホスト情報記憶部4121としてホスト情報記憶部6121を、ページサイズ記憶部4122としてページサイズ記憶部6122を、プリフェッチデータ記憶部4123としてプリフェッチデータ記憶部6123とを含む。
【００５６】
データプリフェッチデバイスプログラム613はCPU611に読み込まれ、図5に示した第1の実施例におけるホスト情報記憶部582と、ページサイズ記憶部584と、データ記憶部586に対応するデータをそれぞれホスト情報記憶部6121と、ページサイズ記憶部6122と、プリフェッチデータ記憶部6123とに生成する。CPU611は、データプリフェッチデバイスプログラム613の制御により、第1の実施例におけるホスト情報調査部581と、ページサイズ調査部583と、データプリフェッチ部585と同様の処理を行う。
【００５７】
以上説明した実施例では、I/Oのレジスタからページ情報を読み込む構成を述べたが、ホストがそれらのレジスタに情報を書き込む際、データプリフェッチデバイス58、61を通過する関連する情報からページサイズを取得することも可能である。
【００５８】
また、以上説明した各実施例及び各実施形態のコンピュータシステムには、ホストブリッジを設けているが、ホストブリッジを設けず、ＣＰＵ、メモリ、データプリフェッチデバイスを直接バスで接続してもよい。
【産業上の利用可能性】
【００５９】
本発明によれば、コンピュータシステムやネットワークシステムの内部コンポーネントを相互に接続するバスのデータ転送高速化といった用途に適用できる。また、コンピュータシステムやネットワークシステムにおいて物理的に分離したコンポーネントを相互に接続するバスやインターコネクトのデータ転送高速化といった用途に適用できる。
【図面の簡単な説明】
【００６０】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示す流れ図である。
【図３】本発明の第１の実施の形態の動作を示す流れ図である。
【図４】本発明の第２の実施の形態の構成を示すブロック図である。
【図５】本発明の第１の実施例を説明するための図である。
【図６】本発明の第２の実施例を説明するための図である。
【図７】従来技術を説明するための図である。
【図８】従来技術を説明するための図である。
【符号の説明】
【００６１】
11 CPU
12 メモリ
13 CPUバス
14 メモリバス
15 ホストブリッジ
16-1〜16-4 I/Oバス
17-1〜17-3 I/O
18 データプリフェッチデバイス
41 データプリフェッチデバイス
51 CPU
52 メモリ
53 CPUバス
54 メモリバス
55 ホストブリッジ
56-1〜56-4 I/Oバス
57-1〜57-3 I/O
58 データプリフェッチデバイス
61 データプリフェッチデバイス
81 データプリフェッチデバイス
171-1〜171-3 コンフィグレーションレジスタ
181 ホスト情報調査部
182 ホスト情報記憶部
183 ページサイズ調査部
184 ページサイズ記憶部
185 データプリフェッチ部
186 データ記憶部
411 CPU
412 データ記憶部
413 データプリフェッチデバイスプログラム
4121 ホスト情報記憶部
4122 ページサイズ記憶部
4123 プリフェッチデータ記憶部
【図１】
2008257596.tif 000003
【図２】
2008257596.tif 000004
【図３】
2008257596.tif 000005
【図４】
2008257596.tif 000006
【図５】
2008257596.tif 000007
【図６】
2008257596.tif 000008
【図７】
2008257596.tif 000009
【図８】
2008257596.tif 000010