(57)【要約】本発明の一実施形態に従って、方法は、メモリ装置から、例えば記憶装置のような目的の装置へのデータの送信に関連するプリフェッチサイクルに関して、メモリアクセス待ち時間を測定するステップを有する。その後、プリフェッチレートは、測定されたメモリアクセス待ち時間に基づいて動的に調整される。
2008547138.tif 000002
【特許請求の範囲】
【請求項１】
メモリ装置から目的の装置へのデータの送信に関連するプリフェッチサイクルのメモリアクセス待ち時間を測定するステップと、
前記測定されたメモリアクセス待ち時間に基づいてプリフェッチレートを調整するステップとを有する方法。
【請求項２】
前記メモリアクセス待ち時間の測定ステップは、前記メモリ装置からのデータのフレームにアクセスするために必要とされる時間量を測定するようタイマを起動するステップを含む、請求項１記載の方法。
【請求項３】
前記プリフェッチレートの調整ステップは、データ伝送時間に対する前記メモリアクセス待ち時間の比率を計算するステップを含み、
前記データ伝送時間は、前記目的の装置へ結合されたリンクを介して前記目的の装置へ前記データのフレームを送信するための時間量である、請求項２記載の方法。
【請求項４】
前記プリフェッチレートの調整ステップは、前記メモリ装置と前記目的の装置との間で実施される記憶プロトコルエンジンの送信トランスポート層において行われる、請求項３記載の方法。
【請求項５】
前記メモリアクセス待ち時間の測定ステップは、各プリフェッチサイクルに関して前記メモリアクセス待ち時間を測定するステップを含む、請求項３記載の方法。
【請求項６】
前記プリフェッチレートの調整ステップは、実時間において動的に行われる、請求項５記載の方法。
【請求項７】
前記プリフェッチレートの調整ステップは、各プリフェッチサイクルの後に行われる、請求項５記載の方法。
【請求項８】
前記目的の装置は、リンクにおいて適切なリンクレートを保つようプリフェッチ動作を行うために必要とされる装置であり、
最適なリンクレートの１つの形式は、前記リンクによってサポートされる最大伝送レートである、請求項１記載の方法。
【請求項９】
メモリ装置と、
記憶装置と、
前記メモリ装置及び前記記憶装置と通信する記憶プロトコルエンジンとを有し、
前記記憶プロトコルエンジンは、前記メモリ装置から前記記憶装置へのデータの送信に関連するプリフェッチサイクルに関してメモリアクセス待ち時間を測定し、且つ、該測定されたメモリアクセス待ち時間に基づいてプリフェッチレートを動的に調整する、計算装置。
【請求項１０】
前記メモリ装置は、ホストメモリとして動作するランダムアクセスメモリである、請求項９記載の計算装置。
【請求項１１】
前記記憶プロトコルエンジンは、
直接メモリアクセス（ＤＭＡ）エンジンと、
前記ＤＭＡエンジンへ結合される送信バッファと、
前記ＤＭＡエンジンへ結合され且つ複数のタイマを有する動的フレームフェッチロジックとを有し、
前記動的フレームフェッチロジックは、タイマを用いて前記メモリ装置から前記記憶装置へのデータの送信に関連するプリフェッチサイクルに関してメモリアクセス待ち時間を測定し、且つ、該測定されたメモリアクセス待ち時間と、前記記憶プロトコルエンジンから前記記憶装置へデータを送信するための時間量であるデータ伝送時間との間の比率に基づいて前記プリフェッチレートを動的に調整するよう構成される、請求項９記載の計算装置。
【請求項１２】
半導体メモリである前記メモリ装置を備えたコンピュータである、請求項９記載の計算装置。
【請求項１３】
前記記憶プロトコルエンジンは、前記記憶装置内で実施される、請求項９記載の計算装置。
【請求項１４】
前記記憶プロトコルエンジンは、前記メモリ装置及び前記記憶装置へ通信上結合されたチップセット内で実施される、請求項９記載の計算装置。
【請求項１５】
計算装置によって実施される場合に、該計算装置に、
半導体メモリから目的の装置へのデータの送信に関連するプリフェッチサイクルのメモリアクセス待ち時間を測定するステップと、
前記測定されたメモリアクセス待ち時間に基づいて、プリフェッチすべきデータのフレームの数であるプリフェッチレートを動的に調整するステップと
を実行させるソフトウェアを提供する記憶媒体。
【請求項１６】
前記メモリ装置からのデータの単一のフレームにアクセスするために必要とされる時間量を測定するようタイマを起動するソフトウェアモジュールを更に有する、請求項１５記載の記憶媒体。
【請求項１７】
データ伝送時間に対する前記メモリアクセス待ち時間の比率を計算するソフトウェアモジュールを更に有し、
前記データ伝送時間は、前記目的の装置へ結合されたリンクを介して前記目的の装置へ前記データのフレームを送信する時間量である、請求項１５記載の記憶媒体。
【請求項１８】
前記メモリ装置と前記目的の装置との間で実施される記憶プロトコルエンジンの送信トランスポート層において前記プリフェッチレートを動的に調整するソフトウェアモジュールを更に有する、請求項１５記載の記憶媒体。
【請求項１９】
前記ソフトウェアは、各プリフェッチサイクルに関して前記メモリアクセス待ち時間を測定する、請求項１５記載の記憶媒体。
【請求項２０】
前記ソフトウェアは、前記半導体メモリと、前記目的の装置である記憶装置との間で、各プリフェッチサイクルに関して前記メモリアクセス待ち時間を測定する、請求項１５記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ記憶の分野、特に、記憶装置のための動的データプリフェッチのメカニズムに関する。
【背景技術】
【０００２】
長年にわたって、コンピュータは、プロセッサ（例えば、中央演算処理ユニット（ＣＰＵ）。）と、半導体ベースのホストメモリと、１又はそれ以上の記憶装置とにより実施されている。通常、ホストメモリは、例えば、命令又は、例えばプロセッサによって即座にアクセスされる必要がある他の形式のデジタルデータのようなデータを記憶するよう構成される。例えば、コンピュータが通常動作にある場合に、ホストメモリは、通常、そのオペレーティングシステムの主な部分と、目下使用されているアプリケーションプログラム及び関連するデータの幾つか若しくは全てとを含む。ホストメモリの１つの形式は、コンピュータのプロセッサの物理的に近くに置かれるランダムアクセスメモリ（ＲＡＭ）である。
【０００３】
ホストメモリとは対照的に、記憶装置は、ホストメモリに含まれるデータよりも頻繁には使用されない、より多くの量のデータを記憶する物理的な媒体を提供する。従って、総体的なコンピュータの費用を削減するために、ホストメモリのサイズは、通常制限される。このことは、データがホストメモリから記憶装置へ頻繁に送信されることを必要とする。
【０００４】
記憶装置への夫々の送信の間、通常、時間遅延が認められる。この時間遅延は、メモリアクセス待ち時間と、データ経路によるデータ伝送時間との和である。データ伝送時間は、相互接続を介する記憶装置への通信の速度であるリンクレートに基づく。
【０００５】
メモリアクセス待ち時間が所与のリンクレートに関してデータ伝送時間よりも大きい場合、記憶装置は、送信経路においてリンク遊休時間を削除するために、データフレームをプリフェッチすることを要する。
【０００６】
今のところ、このプリフェッチレートは、記憶装置のドライバソフトウェアによって制御レジスタにハードコード又はプログラムされる一定値である。プリフェッチレートは、例えば、推定される平均メモリアクセス待ち時間及び、選択された相互接続の推定される伝送レートに基づいて一定であるデータ伝送時間のような、多数の要因に基づいて選択される。プリフェッチすべきデータフレームの最大数は、利用可能な送信バッファ空間に基づく。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、実際の動作状態において、メモリアクセス待ち時間は一定値でなく、コンピュータの動作条件に応答して変化する。かかる動作条件は、コンピュータ内の増大又は減少するメモリトラフィック、あるいは、記憶装置によって利用されるインターフェース又は通信プロトコルの形式の変更を含む。要約すると、現在のプリフェッチメカニズムは、様々なプリフェッチサイクルの間に検出される実時間の動作条件を考慮していない。
【発明を実施するための最良の形態】
【０００８】
本発明は、本発明の実施形態を表すために用いられる以下の記載及び添付の図面を参照することによって、最も良く理解され得る。
【０００９】
ここで、本発明のある実施形態は、記憶装置のための動的データプリフェッチメカニズムに関する。動的データプリフェッチメカニズムは、現在のリンクレートを保ち、実質的にリンクアイドル時間を削除するために、プリフェッチレートの実時間決定を提供する。本発明の１つの実施例に従って、プリフェッチレートは、自動的に実時間で決定され、プリフェッチされるデータのフレームに関するメモリアクセス待ち時間の測定に基づいて調整される。
【００１０】
このようなプリフェッチレートの動的な調整は、多数の利点を提供する。例えば、計算装置は、過度のデータプリフェッチの回避により、より効率的に記憶装置へのその相互接続を利用し、そのメモリサブシステム上でより良い負荷バランシングを提供する。過度のデータプリフェッチは、メモリバス帯域幅を浪費するのみならず、計算装置が再起動又は異常終了入出力（Ｉ／Ｏ）シーケンス状態となる場合に、送信バッファのフラッシュ時間を増大させる。
【００１１】
以下の記載で、ある技術は、本発明の特徴を記載するために使用される。例えば、用語“計算装置”は、例えば、１又はそれ以上の半導体メモリ装置及び１又はそれ以上の記憶装置など、データの複数の記憶レベルをサポートする装置である。計算装置の例は、コンピュータ、携帯型のオーディオ装置、又は、データ記憶を備えたいずれかの電子機器を含むが、それらに限定されない。“データ”は、例えば、デジタルデータ及び、アドレス、制御又はそれらのいずれかの組合せなど、如何なる形式の情報としても幅広く定義される。
【００１２】
用語“メモリアクセス待ち時間”は、一般に、ローカルメモリ内の所定量のデータにアクセスするために必要とされる時間と考えられる。“データ伝送時間”は、一般に、リンクを介して記憶装置へそのデータを送信するために必要とされる時間に等しい。この時間は、予め定められるか、あるいは、接続が目的の装置により確立される場合には、接続ごとに取り決められる。“目的の装置”は、リンクにおいて最適なリンクレートを保つようプリフェッチ動作を行うために必要とされる記憶装置又は如何なる装置であっても良い。最適なリンクレートの１つの形式は、リンクによってサポートされる最大伝送レートであるが、最大伝送レートより小さいものは、ある構成において最適であり得る。
【００１３】
用語“ロジック”は、一般に、メモリ装置からデータをプリフェッチする際の経過時間の測定など、１又はそれ以上の動作を実行するハードウェア及び／又はソフトウェアとして定義される。この測定される時間は、プリフェッチサイクルの間、メモリアクセス待ち時間を構成する。例えば、“記憶プロトコルエンジン”は、メモリアクセス待ち時間を測定し、部分的にその測定されたメモリアクセス待ち時間に基づいてプリフェッチレートを調整するロジックである。
【００１４】
“ソフトウェアモジュール”は、例えば、オペレーティングシステム、アプリケーション、アプレット、ルーチン、あるいは、１又はそれ以上の命令などのコードを実行可能である。ソフトウェアモジュールは、如何なる形式のメモリにも、即ち、例えば、プログラム可能な電子回路、揮発性メモリ（例えば、ランダムアクセスメモリなど。）若しくは不揮発性メモリ（例えば、読み出し専用メモリ、フラッシュメモリなど。）のような如何なる形式の半導体メモリ装置、フロッピー（登録商標）ディスク、光学ディスク（例えば、コンパクトディスク若しくはデジタルバーサタイルディスク“ＤＶＤ”。）、持ち運び可能な装置、ハードドライブディスク、デジタルテープなど、適切な記憶媒体に記憶され得る。
【００１５】
用語“フレーム”は、一般に、所定サイズのデータのシーケンスとして定義される。例えば、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＡＳ）Ｓｅｒｉａｌ  ＳＣＳＩ  Ｐｒｏｔｏｃｏｌ（“ＳＡＳ  ＳＳＰ”と呼ばれる。）に従うデータのフレームは、１キロバイト（１ＫＢ）の最大所定サイズを有する。
【００１６】
“リンク”は、一般に、通信経路を確立する情報伝送媒体として定義される。リンクは、媒体が物理媒体（例えば、電気配線、光ファイバ、ケーブル、バストレースなど。）である場合には有線相互接続であっても良く、あるいは、無線相互接続（例えば、無線信号伝送技術との併用で空気。）であっても良い。
【００１７】
以下の記載で、多数の具体的な詳細が挙げられる。しかし、当然、本発明の実施形態は、かかる具体的な詳細を用いずに実行され得る。他の例で、よく知られる回路、構成及び技術は、この記載の理解を不明瞭にしないために詳細には示されていない。
【００１８】
図１を参照すると、本発明を用いるＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）レイアウトにおいて表される計算装置の第１の例となるブロック図が、示されている。計算装置１００は、目的の装置１６０及び、ローカルメモリサブシステム１４５の一部である半導体メモリ１４０（例えば、ホスト若しくはローカルメモリ。）の両方と通信する記憶プロトコルエンジン１２０を有する。記憶プロトコルエンジン１２０は、計算装置１００の内部回路（例えば、メモリコントローラハブ“ＭＣＨ”若しくはＩ／Ｏコントローラハブ“ＩＣＨ”。）内に、又は目的の装置１６０内で実施される外部コントローラ内に組み込まれ得ると考えられる。
【００１９】
示されるように、本発明のかかる実施形態に関して、目的の装置１６０は、データを記憶するための物理的媒体を提供する記憶装置であり、この記憶装置に記憶されるデータは、通常は、メモリ１４０に含まれるデータよりも頻繁には使用されない。記憶装置１６０の例は、例えば、１又はそれ以上のディスクドライブ、テープドライバなど、如何なる形式の大容量記憶装置も含む。本発明の実施形態は実現され得ると考えられる。
【００２０】
本発明の係る実施形態に従って、記憶装置１６０は、ホストバスアダプタ（ＨＢＡ）１６２及び第１のリンク１６４を特徴としうるシリアル通信経路を介して、計算装置１００の一部として相互接続されている。ＨＢＡ１６２の例は、ファイバチャネル・ホストバスアダプタ（ＦＣ  ＨＢＡ）、インターネット小型コンピュータ用周辺機器インターフェースＨＢＡ（ｉＳＣＳＩ  ＨＢＡ）、シリアル付加ＳＣＳＩ  ＨＢＡ（ＳＡＳ  ＨＢＡ）などを含むが、それらに限定されない。
【００２１】
更に示されるように、記憶プロトコルエンジン１２０は、物理層１２５と、データリンク層１３０と、トランスポート層１３５とを有する。物理層１２５は、記憶装置１６０へ通信上結合される記憶プロトコルエンジン１２０のインターフェースの物理特性を定める。かかる物理特性は、リンク１６４への記憶プロトコルエンジン１２０の接続に関する機械的且つ電気的な態様を含む。データリンク層１３０は、記憶装置１６０への送信のための適切なフォーマットによりデータのフレームをアセンブルし、これらのフレームの流れを統合するよう構成される。
【００２２】
トランスポート層１３５は、記憶プロトコルエンジン１２０の内外のデータの流れを監視及び制限するよう構成される。トランスポート層１３５は、送信トランスポート層１３６と、受信トランスポート層１３７とを有する。送信トランスポート層１３６は、メモリ１４０から記憶装置１６０へのデータの流れを監視及び制限し、一方、受信トランスポート層１３７は、記憶装置１６０からメモリ１４０へのデータの流れを監視及び制限する。本発明の１つの実施例に関して、動的フレームプリフェッチ動作は、以下で記載されるように送信トランスポート層１３６内で扱われる。
【００２３】
ここで、送信トランスポート層１３６は、動的フレームプリフェッチロジック１８０と、動的メモリアクセス（ＤＭＡ）エンジン１８５と、送信バッファ１９０とを有する。メモリ１４０から記憶装置１６０へ送信すべきコマンドを受信すると、動的フレームプリフェッチロジック１８０は、メモリ１４０から所定量のデータをプリフェッチするようＤＭＡエンジン１８５をプログラムする。この所定量は、Ｎ個の連続するデータフレームとしてプリフェッチされる。なお、１≦Ｎ≦Ｍａｘであり、“Ｍａｘ”は、データフレームのサイズ（Ｆ＿Ｓｉｚｅ）に対する送信バッファ１９０のサイズ（ＴＢ＿Ｓｉｚｅ）の比率に関する、端数を切り捨てられた正の自然数である。データフレームのプリフェッチは、以下の式に従って決定される：
プリフェッチフレーム＃＝端数切り上げ（ｒｏｕｎｄ−ｕｐ）［メモリアクセス待ち時間／データ伝送時間］、
なお、Ｍａｘ＝端数切り捨て（ｒｏｕｎｄ−ｄｏｗｎ）［ＴＢ＿Ｓｉｚｅ／Ｆ＿Ｓｉｚｅ］である。
【００２４】
例えば、送信バッファ１９０の大きさが４キロバイト（４ＫＢ）であり、データのフレームの大きさが１ＫＢである場合には、４フレームが送信バッファ１９０に記憶され得る。最初のメモリアクセス待ち時間の存続期間が５マイクロ秒（５μｓ）であると推定され、データ伝送時間が４マイクロ秒（４μｓ）であると推定される場合には、２フレームがプリフェッチされ得る。かかる計算は、以下のように決定される：
プリフェッチフレーム＃＝端数切り上げ［５／４］＝２、
なお、“２”は、それが送信バッファ１９０の最大記憶（４）よりも小さいので、受け入れ可能なプリフェッチ値である。
【００２５】
その後、ＤＭＡエンジン１８５は、データフレームを生成し、送信バッファ１９０内にデータフレームを局所的に記憶する。
【００２６】
図１及び図２に示されるように、記憶プロトコルエンジン（ＳＰＥ）１２０が、データの他のフレームがメモリ１４０からプリフェッチされる必要があると判断するところのプリフェッチサイクル２５０の開始時（ｔ１）２００に、動的フレームプリフェッチロジック１８０は、このプリフェッチサイクルに関してメモリアクセス待ち時間を測定するようタイマを起動する。このような決定は、送信バッファ１９０のメモリ容量のレベルを監視することによって達成され得る。
【００２７】
タイマを起動することに加えて、動的フレームプリフェッチロジック１８０は、時間（ｔ２）２１０において示されるようにデータフレームをプリフェッチするようＤＭＡエンジン１８５をプログラムする。データフレームは、時間（ｔ３）２２０及び（ｔ４）２３０で、メモリサブシステム１４５によってフェッチされて、ＳＰＥ１２０へ返される。その後、ＳＰＥ１２０はデータフレームを処理する。このデータフレームは、時間（ｔ５）２４０で、目下、記憶装置１６０への送信のための準備ができている。データフレームを取り出すための測定される時間は、所与のラインレートを保つために、プリフェッチすべきフレームの数の実時間の再計算を実行するよう、動的フレームプリフェッチロジック１８０によって使用される。
【００２８】
ここで図３を参照すると、本発明を用いるＯＳＩレイアウトにおいて表される計算装置の第２の例となる実施形態が、示されている。図３で、計算装置１００は、ローカルメモリサブシステム１４５の一部である半導体メモリ１４０及び、１又はそれ以上の拡張器３００（例えば、拡張器３０２及び３０４。）の両方と通信する記憶プロトコルエンジン１２０を有する。拡張器３００は、記憶プロトコルエンジン１２０が、複数の記憶装置（ＳＤ）３１０１〜３１０Ｒに通信上結合されて、それらへのデータの送信を制御することを可能にするファンアウトスイッチであっても良い。なお、Ｒ≧２である。当然、拡張器３００は、示されるように、多数の記憶装置をサポートするよう直列に連結された複数の拡張器であっても良いと考えられる。
【００２９】
示されるように、データ伝送時間は、伝送経路３２０における最低リンクレートに基づいて決定される。例えば、記憶プロトコルエンジン１２０と拡張器３０２との間の第１のリンクレート３３０は毎秒６ギガバイト（６Ｇｂ）であり、拡張器３０２と拡張器３０４との間の第２のリンクレート３４０は３Ｇｂであり、拡張器３０４と目標とする記憶装置３１０２との間の第３のリンクレート３５０は１．５Ｇｂである場合に、計算されるデータ伝送時間は、１．５Ｇｂリンクレート、即ち、伝送経路３２０における最低リンクレートに基づいて決定され得る。
【００３０】
計算装置１００のトポロジーとは無関係に、記憶プロトコルエンジン１２０は、少なくともメモリアクセス待ち時間への変化と、おそらくデータ伝送時間への変化とに基づいて、プリフェッチを監視し、動的に変更するよう構成される。なお、データ伝送時間への変化は、メモリアクセス待ち時間における変化よりも実質的に低い頻度である。
【００３１】
図４を参照すると、メモリアクセス待ち時間の変動を処理するための動的フレームプリフェッチロジックの動作を表すフローチャートの例となる実施形態が、示されている。ＤＭＡエンジンが、選択されるデータフレームにアクセスするようメモリサブシステムへ読み出し（Ｒｅａｄ）コマンドを発行する前に、１又はそれ以上の更なるフレームがメモリからプリフェッチされる必要があると記憶プロトコルエンジンが判断すると（ブロック４００）、メモリアクセス待ち時間を測定するよう動的フレームプリフェッチロジックによってタイマが起動される（ブロック４１０）。記憶プロトコルエンジンが、読み出しコマンドにおいて特定されるデータを受け取って、そのデータをＳＰＥが目下データフレームを送信する状態にある点まで処理すると、タイマは停止される（ブロック４２０及び４３０）。このように測定された時間（Ｍ＿Ｔｉｍｅ）は、以下の式：
プリフェッチレート＝端数切り上げ［Ｍ＿Ｔｉｍｅ／データ伝送時間］
に示されているように、プリフェッチレートを再計算するために使用される（ブロック４４０）。
【００３２】
結果として、プリフェッチレートは、現在のプリフェッチサイクルに関して計算されるメモリアクセス待ち時間に基づく実時間の値であり、ブロック４５０〜４８０で示されるように調整される。遊休リンク時間は、即座には削除されないが、実質的に減じられ、その後のプリフェッチサイクルに関して完全に削除され得る。
【００３３】
図５を参照すると、増大するメモリアクセス待ち時間を処理するための動的フレームプリフェッチロジックの動作を表すタイミング図の例となる実施形態が、示されている。図５で、説明目的のために、最初のメモリアクセス待ち時間は、存続期間が５μｓに等しく、データ伝送時間は、存続期間が４μｓであると推定される。従って、２フレーム（例えば、端数切り上げ［５／４］。）が、リンクレートを保つためにプリフェッチされ得る。送信バッファは、４データフレームまで記憶するよう構成される。
【００３４】
示されるように、時間Ｔ０から始まって、２フレームのデータがプリフェッチされ、対応するタイマは、かかるプリフェッチ動作に関連するメモリアクセス待ち時間を測定するよう起動される。より具体的に、動的フレームプリフェッチロジックは、第１のデータフレーム（ＤＡＴＡ０（５００））をフェッチするところの第１のプリフェッチサイクルの間に認められるメモリアクセス待ち時間を測定するよう第１のタイマを起動する。一般に第１のタイマの起動と同時に、時間Ｔ１で、動的フレームプリフェッチロジックは、第２のデータフレーム（ＤＡＴＡ１（５１０））をフェッチするためのメモリアクセス待ち時間を測定するよう第２のタイマを起動する。
【００３５】
時間Ｔ２で、ＤＡＴＡ０（５００）は、プロトコル記憶エンジンによって受け取られて、記憶装置への送信のために準備ができている。第１のタイマは停止され、プリフェッチレートは、測定されたメモリアクセス待ち時間及び一定のデータ伝送時間に基づいて再計算される。ＤＡＴＡ０（５００）をフェッチするための測定されたメモリアクセス待ち時間は、この例となる実施形態に関して５μｓであるから、プリフェッチレートは、２つのデータフレームで保たれる。
【００３６】
送信バッファは、４データフレームまで保持することができる十分なサイズであるから、時間Ｔ２で、“ＤＡＴＡ２”５２０として表されるデータの第３のフレームがプリフェッチされ、その対応する（第３の）タイマが起動される。ＤＡＴＡ０（５００）は、また、記憶プロトコルエンジンから記憶装置へと図１のリンク１６４を介して送信される。
【００３７】
更に、時間Ｔ３で、ＤＡＴＡ１（５１０）は、プロトコル記憶エンジンによって受け取られて、記憶装置への送信のために準備ができている。第２のタイマは停止され、プリフェッチレートは、測定されたメモリアクセス待ち時間及び一定のデータ伝送時間に基づいて再計算される。先と同じく、第２のデータフレームをフェッチするための測定されたメモリアクセス待ち時間は、本例に関して５μｓであると決定されているから、プリフェッチレートは、２つのデータフレームで保たれる。“ＤＡＴＡ３”５３０として表されるデータの第４のフレームがプリフェッチされ、その対応する（第４の）タイマが起動される。
【００３８】
時間Ｔ４で、ＤＡＴＡ０（５００）は、記憶プロトコルエンジンから記憶装置へと図１のリンク１６４を介して完全に送信される。従って、ＤＡＴＡ１（５１０）の送信が始まり、Ｔ５で完了する。
【００３９】
時間Ｔ６で、プロトコル記憶エンジンはＤＡＴＡ２（５２０）を受け取る。ＤＡＴＡ２（５２０）は、目下、記憶装置への送信のための準備ができている。第３のタイマは停止され、プリフェッチレートは、測定されたメモリアクセス待ち時間及び一定のデータ伝送時間に基づいて再計算される。ＤＡＴＡ２（５２０）をフェッチするための測定されたメモリアクセス待ち時間は、本例に関して１０μｓまで増加しているので、プリフェッチレートは、このとき、以下：端数切り上げ［１０／４］＝３のように計算される３つのデータフレームまで増大する。従って、“ＤＡＴＡ４”５４０として表される第５のデータフレーム５４０はプリフェッチされる。
【００４０】
時間Ｔ７で、ＤＡＴＡ３（５３０）はプロトコル記憶エンジンによって受け取られて、記憶装置への送信の準備ができている。第４のタイマは停止され、プリフェッチレートは、測定されたメモリアクセス待ち時間及び一定のデータ伝送時間に基づいて再計算される。ＤＡＴＡ３（５３０）をフェッチするための測定されたメモリアクセス待ち時間は、本例に関して１０μｓで保たれるので、プリフェッチレートは３つのデータフレームで保たれる。従って、時間Ｔ７における“ＤＡＴＡ５”５５０として表される第６のデータフレーム５５０及び時間Ｔ８における“ＤＡＴＡ６”５６０として表されるその後の第７のデータフレーム５６０は、対応する（第６及び第７の）タイマが起動された状態でプリフェッチされる。
【００４１】
時間Ｔ９で、ＤＡＴＡ４（５４０）はプロトコル記憶エンジンによって受け取られて、記憶装置への送信の準備ができている。第５のタイマは停止され、プリフェッチレートは、測定されたメモリアクセス待ち時間及び一定のデータ伝送時間に基づいて再計算される。ＤＡＴＡ４（５４０）をフェッチするための測定されたメモリアクセス待ち時間は、本例に関して１０μｓで保たれるので、プリフェッチレートは３つのデータフレームで保たれる。従って、“ＤＡＴＡ７”５７０として表される第８のデータフレームは、第８のタイマが起動された状態でプリフェッチされる。
【００４２】
時間Ｔ１０及びＴ１１で、第６及び第７のデータフレーム５５０及び５６０はプロトコル記憶エンジンによって受け取られて、目下、記憶装置への送信の準備ができている。かかるデータフレームの夫々をフェッチするための測定されたメモリアクセス待ち時間は、本例に関して１０μｓで保たれるので、プリフェッチレートは３つのデータフレームで保たれる。しかし、この時点で、プリフェッチ動作は、データフレーム５４０〜５６０が現在送信バッファ内に記憶されており、ＤＡＴＡ７（５７０）がプリフェッチされているので、起こり得ない。従って、送信バッファは完全に割り当てられている。
【００４３】
時間Ｔ１２で、ＤＡＴＡ４（５４０）は記憶装置へ送信され、送信バッファは、他のプリフェッチされているデータフレームを自由に記憶することができる。結果として、“ＤＡＴＡ８”５８０として表される第９のデータフレーム５８０が、第９のタイマが起動された状態でプリフェッチされる。同様に、“ＤＡＴＡ９”５９０として表される第１０のデータフレーム５９０は、ＤＡＴＡ５（５４０）が記憶装置へ送信されて、送信バッファが、他のプリフェッチされているデータフレームを自由に記憶することができるまで、プリフェッチされ得ない。
【００４４】
図６を参照すると、減少するメモリアクセス待ち時間を処理するための動的フレームプリフェッチロジックの動作を表すタイミング図の例となる実施形態が、示されている。図５と同様に、説明目的のために、最初のメモリアクセス待ち時間は、存続期間が１０μｓに等しく、データ伝送時間は、存続期間が４μｓであると推定される。従って、３フレーム（例えば、端数切り上げ［１０／４］。）が、リンクレートを保つためにプリフェッチされ得る。送信バッファは、４データフレームまで記憶するよう構成される。
【００４５】
示されるように、時間Ｔ０〜Ｔ２で、３つのフレームのデータがプリフェッチされ、対応するタイマは、かかるプリフェッチ動作に関連するメモリアクセス待ち時間を測定するよう起動される。より具体的に、動的フレームプリフェッチロジックは、第１のデータフレーム（ＤＡＴＡ−０（６００））をフェッチするところの第１のプリフェッチサイクルの間に認められるメモリアクセス待ち時間を測定するよう第１のタイマを起動する。一般に第１のタイマの起動と同時に、時間Ｔ１で、動的フレームプリフェッチロジックは、第２のデータフレーム（ＤＡＴＡ−１（６１０））をフェッチするためのメモリアクセス待ち時間を測定するよう第２のタイマを起動し（ｉ）、第３のデータフレーム（ＤＡＴＡ−２（６２０））をフェッチするためのメモリアクセス待ち時間を測定するよう第３のタイマを起動する（ｉｉ）。
【００４６】
時間Ｔ３で、ＤＡＴＡ−０（６００）は、プロトコル記憶エンジンによって受け取られて、記憶装置への送信のために準備ができている。第１のタイマは停止され、プリフェッチレートは、測定されたメモリアクセス待ち時間及び一定のデータ伝送時間に基づいて再計算される。ＤＡＴＡ−０（６００）をフェッチするための測定されたメモリアクセス待ち時間は、この例となる実施形態に関して１０μｓであるから、プリフェッチレートは、３つのデータフレームで保たれる。
【００４７】
送信バッファは、４データフレームまで保持することができる十分なサイズであるから、時間Ｔ３で、“ＤＡＴＡ−３”６３０として表されるデータの第４のフレームがプリフェッチされ、その対応する（第４の）タイマが起動される。ＤＡＴＡ−０（６００）は、また、記憶プロトコルエンジンから記憶装置へと図１のリンク１６４を介して送信される。
【００４８】
時間Ｔ４及びＴ５で、ＤＡＴＡ−１（６１０）及びＤＡＴＡ−２（６２０）は、プロトコル記憶エンジンによって受け取られて、目下、記憶装置への送信のために準備ができている。かかるデータフレームの夫々をフェッチするための測定されたメモリアクセス待ち時間は、本例に関して１０μｓのままであるから、プリフェッチレートは、３つのデータフレームで保たれる。しかし、この時点で、プリフェッチ動作は、データフレーム６００〜６２０が現在送信バッファ内に記憶されており、ＤＡＴＡ−３（６３０）がプリフェッチされているので、起こり得ない。従って、送信バッファは完全に割り当てられている。
【００４９】
時間Ｔ６で、ＤＡＴＡ−０（６００）は記憶装置へ送信され、送信バッファは、他のプリフェッチされているデータフレームを自由に記憶することができる。結果として、“ＤＡＴＡ−４”６４０として表される第５のデータフレーム６４０が、第５のタイマが起動された状態でプリフェッチされる。
【００５０】
時間Ｔ７で、ＤＡＴＡ−３（６３０）は、プロトコル記憶エンジンによって受け取られて、目下、記憶装置への送信のために準備ができている。ＤＡＴＡ−３（６３０）をフェッチするための測定されたメモリアクセス待ち時間は、本例に関して５μｓまで減少しているので、プリフェッチレートは、このとき、以下の計算：
プリフェッチ＝端数切り上げ［５／４］＝２
によって計算される２データフレームまで減少する。このようにして、記憶プロトコルエンジンは、時間Ｔ８〜Ｔ１３において示されるように適切にプリフェッチレートを調整する。
【００５１】
より具体的に、時間Ｔ８で、ＤＡＴＡ−１（６１０）は記憶装置へ送信され、送信バッファは、他のプリフェッチされているデータフレームを自由に記憶することができる。結果として、“ＤＡＴＡ−５”６５０として表される第６のデータフレーム６５０が、第６のタイマが起動された状態でプリフェッチされる。
【００５２】
時間Ｔ９で、ＤＡＴＡ−４（６４０）は、プロトコル記憶エンジンによって受け取られて、目下、記憶装置への送信のために準備ができている。測定されたメモリアクセス待ち時間は、本例に関して５μｓに保たれるから、プリフェッチレートは、２データフレームに保たれる。
【００５３】
時間Ｔ１０で、ＤＡＴＡ−５（６５０）が受け取られる前に、ＤＡＴＡ−２（６２０）は記憶装置へ送信され、送信バッファは、他のプリフェッチされているデータフレームを自由に記憶することができる。結果として、“ＤＡＴＡ−６”６６０として表される第７のデータフレーム６６０が、第７のタイマが起動された状態でプリフェッチされる。
【００５４】
時間Ｔ１１で、ＤＡＴＡ−５（６５０）は、プロトコル記憶エンジンによって受け取られて、目下、記憶装置への送信のために準備ができている。測定されたメモリアクセス待ち時間は、本例に関して５μｓに保たれるから、プリフェッチレートは、２データフレームに保たれる。
【００５５】
時間Ｔ１２で、ＤＡＴＡ−６（６６０）が受け取られる前に、ＤＡＴＡ−３（６３０）は記憶装置へ送信され、送信バッファは、他のプリフェッチされているデータフレームを自由に記憶することができる。結果として、“ＤＡＴＡ−７”６７０として表される第８のデータフレーム６７０が、第８のタイマが起動された状態でプリフェッチされる。
【００５６】
時間Ｔ１３で、ＤＡＴＡ−６（６６０）は、プロトコル記憶エンジンによって受け取られて、目下、記憶装置への送信のために準備ができている。測定されたメモリアクセス待ち時間は、本例に関して５μｓに保たれるから、プリフェッチレートは、２データフレームに保たれる。この処理は続き、動的フレームプリフェッチアルゴリズムを提供するよう図５の処理とともに動作する。
【００５７】
本発明は幾つかの実施形態に関して記載されてきたが、所謂当業者には明らかなように、本発明の記載される実施形態には限定されず、添付の特許請求の範囲の精神及び適用範囲の範囲内で変形及び変更をなされ得る。従って、本記載は、限定ではなく説明として考えられるべきである。例えば、プリフェッチレートが増大すると、幾つかの状況で、プリフェッチサイクルは、夫々単一のデータフレームを対象とする一連のプリフェッチサイクルに代わって、複数のフレームを対象としても良い。
【図面の簡単な説明】
【００５８】
【図１】本発明を用いるＯＳＩレイアウトにおいて表される計算装置の第１の例となるブロック図である。
【図２】メモリアクセス待ち時間及び、メモリアクセス待ち時間の計算に関する動作の例となる図である。
【図３】本発明を用いるＯＳＩレイアウトにおいて表される計算装置の第２の例となる実施形態である。
【図４】メモリアクセス待ち時間の変動を処理するための動的フレームプリフェッチロジックの動作を表すフローチャートの例となる実施形態である。
【図５】増大するメモリアクセス待ち時間を処理するための動的フレームプリフェッチロジックの動作を表すタイミング図の例となる実施形態である。
【図６】減少するメモリアクセス待ち時間を処理するための動的フレームプリフェッチロジックの動作を表すタイミング図の例となる実施形態である。
【図１】
2008547138.tif 000003
【図２】
2008547138.tif 000004
【図３】
2008547138.tif 000005
【図４】
2008547138.tif 000006
【図５】
2008547138.tif 000007
【図６】
2008547138.tif 000008
【国際調査報告】
2008547138.tif 000009
2008547138.tif 000010