(57)【要約】【課題】データ・プリフェッチにオープン・ページ・モードを使うメモリへのメモリ・アクセスを実施する方法および装置を提供する。【解決手段】中央処理装置はメモリ・コマンドを発行する。メモリ・コマンドを受信するメモリ・コントローラはデータ・プリフェッチ・コマンドを識別する。メモリ・コントローラは、識別したプリフェッチ・コマンドの次の順次ラインが現在アクセスされているページ内にあるかどうかをチェックし、次の順次ラインが現在のページ内にあるとの識別に応答して、現在のコマンドを処理して、現在のページを開いたままにしておく。【選択図】図３
2008102932.tif 000002
【特許請求の範囲】
【請求項１】
データ・プリフェッチ・コマンドを識別するステップと、
次の順次ラインがアクセスされている現在のページ内にあるかどうかをチェックするステップと、
前記次の順次ラインが前記現在のページ内にあるとの識別に応答して、現在のコマンドを処理し、前記現在のページを開いたままにしておくステップと、
を有する、メモリへのメモリ・アクセスを実施する方法。
【請求項２】
次のメモリ・コマンドを待つステップをさらに含む、請求項１に記載のメモリ・アクセスを実施する方法。
【請求項３】
要求時フェッチ・コマンドを識別するステップと、前記要求時フェッチ・コマンドを処理するステップと、前記現在のページを閉じるステップとをさらに含む、請求項２に記載のメモリ・アクセスを実施する方法。
【請求項４】
前記次の順次ラインが前記現在のページ内にないと識別するステップと、前記次の順次ラインを含むページを開くステップとをさらに含む、請求項１に記載のメモリ・アクセスを実施する方法。
【請求項５】
前記現在のプリフェッチ・コマンドを処理するステップと、前記現在のページを閉じるステップとをさらに含む、請求項４に記載のメモリ・アクセスを実施する方法。
【請求項６】
メモリ・コマンドを受信して書き込みコマンドを識別するステップと、前記書き込みコマンドを処理するステップと、前記現在のページを閉じるステップとをさらに含む、請求項１に記載のメモリ・アクセスを実施する方法。
【請求項７】
メモリ・コマンドを受信して、要求時フェッチ読み出しコマンドを識別するステップと、前記読み出しフェッチ・コマンドを処理するステップと、前記現在のページを閉じるステップとをさらに含む、請求項１に記載のメモリ・アクセスを実施する方法。
【請求項８】
メモリへのメモリ・アクセスを実施する装置であって、
メモリ・コマンドを発行する中央処理装置と、
前記メモリ・コマンドを受信して、データ・プリフェッチ・コマンドを識別するメモリ・コントローラとを有し、
前記メモリ・コントローラが次の順次ラインがアクセスされている現在のページ内にあるかどうかをチェックし、
前記メモリ・コントローラが、前記次の順次ラインが前記現在のページ内にあるとの識別に応答して、現在のコマンドを処理し、前記現在のページを開いたままにしておく、
メモリ・アクセスを実施する装置。
【請求項９】
前記メモリ・コントローラが次のメモリ・コマンドを受信し、受信した次のメモリ・コマンドがデータ・プリフェッチ・コマンドであるかどうかをチェックする、請求項８に記載のメモリ・アクセスを実施する装置。
【請求項１０】
前記メモリ・コントローラが要求時フェッチ・コマンドを識別し、前記要求時フェッチ・コマンドを処理し、前記現在のページを閉じる、請求項９に記載のメモリ・アクセスを実施する装置。
【請求項１１】
前記メモリ・コントローラが現在のプリフェッチ・コマンドの前記次の順次ラインが前記現在のページ内にないことを識別し、前記次の順次ラインを含むページを開く、請求項８に記載のメモリ・アクセスを実施する装置。
【請求項１２】
前記メモリ・コントローラが前記現在のプリフェッチ・コマンドを処理し、前記現在のページを閉じる、請求項１１に記載のメモリ・アクセスを実施する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にデータ処理分野に関し、より具体的には、データ・プリフェッチにオープン・ページ・モードを使用して、メモリへのメモリ・アクセスを実施する方法および装置に関する。
【背景技術】
【０００２】
中央処理装置（ＣＰＵ）がメイン・メモリにアクセスするのにかかる時間は、コンピュータ・システムの全体的なパフォーマンスに多大な影響をもつ。ＣＰＵがメイン・メモリからワードを読み出すまたは書き込むのにかかる時間を短縮する、すなわちメモリ待ち時間を短縮するのが望ましいため、このデータ・アクセス・プロセスを迅速化するためにいくつかのメカニズムが採用されている。そのうちの２つがデータ・プリフェッチ・ポリシーとオープン・ページ・モード・ポリシーである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
データ・プリフェッチは、ＣＰＵがメモリ・ワードを実際に使用する前に当該メモリ・ワードのデータ・フェッチを開始することによって、長いメモリ・アクセス待ち時間を吸収しようとする。データ・プリフェッチが一般に最も効果的に使用されるのは、長いデータ・ストリームをＣＰＵで処理しようとする場合である。当該データ・ストリームの処理は、予測可能で長期的なメモリ・アドレッシング・パターンを生じるのが一般的である。ほとんどの場合、これらアドレッシング・パターンは、連続的にアドレス指定されるメモリ・ワードの長いシーケンス、またはアドレス間の距離（ストライドともいう）が固定であるメモリ・ワードのシーケンスのいずれかである。プリフェッチのサポートに専念しなければならないリソースは、メモリ待ち時間に比例して増加する。実際のシステムはどれもそのようなリソースの数に限りがあるため、データ・プリフェッチの効果はメモリ待ち時間が短くならないと減じられる可能性がある。
【０００４】
オープン・ページ・モード・メモリも典型的なメモリ・アクセス・パターンを利用しようとする。オープン・ページ・ポリシーを使用して、新たにアクセスしたメモリ・ページは、将来のメモリ・アクセスも同じページで応じられると予想して、メモリ・コントローラによって開いておく。開いているページは閉じたページよりも速くアクセスでき、メモリ参照はそのアドレッシング・パターンにまとまる傾向があるため、オープン・ページ・モード・ポリシーは平均メモリ待ち時間を短縮できる。
【課題を解決するための手段】
【０００５】
本発明の第１の側面は、データ・プリフェッチにオープン・ページ・モードを使用して、メモリへのメモリ・アクセスを実施する方法および装置を提供することである。本発明の他の重要な側面は、実質的に悪影響なく、先行技術の構成の欠点の多くを克服するオープン・ページ・モードを使ってデータ・プリフェッチを実施する方法および装置を提供することである。
【０００６】
簡単に言うと、データ・プリフェッチにオープン・ページ・モードを使うメモリへのメモリ・アクセスを実施する方法および装置を提供する。中央処理装置がメモリ・コマンドを発行する。メモリ・コマンドを受信するメモリ・コントローラはデータ・プリフェッチ・コマンドを識別する。メモリ・コントローラは、次の順次ラインが現在アクセスされているページ内にあるかどうかをチェックし、次の順次ラインが現在のページ内にあるとの識別に応答して、現在のコマンドを処理し、識別したプリフェッチ・コマンドのために現在のページを開いたままにしておく。
【０００７】
本発明の特徴によると、プリフェッチ・コマンドの次の順次ラインが現在のページ内にない場合、次の順次ラインのページを開いてプリフェッチ・コマンドを処理して、ページを閉じる。受信したメモリ・コマンドがプリフェッチ・コマンドではない場合、現在のコマンドを処理してから、現在のページを閉じる。
【発明を実施するための最良の形態】
【０００８】
本発明の特徴によると、プリフェッチとオープン・ページ・モード・メモリはともに同様なメモリ・アドレッシング・パターンを利用できるため、この２つの協力関係を確立する方法を提供する。ＣＰＵからのデータ・プリフェッチとメモリのオープン・ページ・モードを組み合わせるために、メモリ・アクセスを実施する方法を提供する。
【０００９】
ここで図面の図１を参照すると、好適な実施形態によるオープン・ページ・モードを使ってデータ・プリフェッチ方法を実施する例示的なサーバまたはコンピュータ・システムが図示され、全体を参照番号１００で示されている。コンピュータ・システム１００は、システム・バス１０６によって好適な実施形態のメモリ・コントローラ１０８とダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）１１０などのシステム・メモリ１１０に結合されるメイン・プロセッサ１０２または中央処理装置（ＣＰＵ）１０２、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）１１２、およびフラッシュ・メモリ１１４を含む。システム・バス１０６とメモリ・コントローラ１０８に結合する大容量記憶装置インターフェース１１６は、直接アクセス記憶デバイス（ＤＡＳＤ）１１８およびＣＤ−ＲＯＭドライブ１２０をメイン・プロセッサ１０２に接続する。コンピュータ・システム１００はシステム・バス１０６に結合し、ディスプレイ１２４に接続するディスプレイ・インターフェース１２２を含む。
【００１０】
コンピュータ・システム１００は本発明を理解できるのに足る簡素化した形態で示している。図示するコンピュータ・システム１００はアーキテクチャまたは機能上の制限を示すものではない。本発明は様々なハードウェア実装およびシステム、並びに複数のメイン・プロセッサなど様々な他の内部ハードウェア・デバイスとともに使用することができる。
【００１１】
コンピュータ・システム１００には、例えばＩＢＭ（Ｒ）パーソナル・コンピュータ、またはＩＢＭ（Ｒ）  Ｓｙｓｔｅｍ  ｐサーバ・コンピュータなどのＩＢＭサーバ・コンピュータなど、様々な市販のコンピュータを使用できる。
【００１２】
データ・プリフェッチは典型的にはメモリからの長いデータ・ストリームの処理に関連するが、それは、これらメモリ・アクセス・パターンをもつプログラムはプリフェッチから多大な恩恵を受けるからである。従来のコンピュータ・システムはそのようなアクセス・パターンを検出し、それに従ってＣＰＵ内部からまたはそのキャッシュの１つからデータ・プリフェッチを開始するハードウェアおよびソフトウェアのメカニズムを内蔵することが多い。プリフェッチが開始されると、メモリ・システムは典型的には連続メモリ・アドレスまたは小さなストライドだけ隔てたメモリ・アドレスに対する長いプリフェッチ・コマンド・シーケンスを受け取る。プリフェッチは、要求されたメモリ・ワードをＣＰＵにより近い場所に配送するようメモリ・システムに指示して、同じアドレスへの対応する読み出しまたは書き込み（要求時フェッチ）がワードに素早くアクセスするようにする。
【００１３】
メモリに到達するプリフェッチ・コマンドは一般的に、プリフェッチをサポートするメモリ・コントローラによる通常のメモリ・ロードとは異なる。プリフェッチは典型的には予測可能な順次メモリ・アクセス・パターンを予告するため、近い将来、後続のメモリ・アドレスがもう何回かアクセスされる可能性が高いという示唆として役立てられる。
【００１４】
本発明の特徴によると、メモリ・コントローラ１０８はオープン・ページ・モードをサポートし、この示唆を使って、プリフェッチによりアクセスされたページを、アドレスが同じページ内にある後続のプリフェッチのために開いたままにしておく。この場合、後続のアクセスは要求されたワードをより速く引き渡せる。これには２つの有益な効果がある。まず、ワードをＣＰＵ１０２に近いその宛先により速くプリフェッチでき、そのためＣＰＵが対応する要求時フェッチを発行するまでに当該ワードが到着する可能性が高くなる。次に、プリフェッチ動作を開始すると典型的には、動作が完了するまでＣＰＵのリソースを消費するが、動作をより速く完了すれば、これらリソースを他の仕事をするために自由にでき、それによってシステムのパフォーマンスが高まる。
【００１５】
図２も参照すると、好適な実施例によるオープン・ページ・モードを使ってデータ・プリフェッチを実施するコンピュータ・システム１００の例示的なメモリ・システムが図示され、全体を参照番号２００で示す。
【００１６】
メモリ・システム２００は、メモリ・システム２００の動作を制御するための制御ロジック２０２を含む。メモリ・システム２００の動作は、典型的にはメモリ・コントローラ１０８が生成するハイレベル・コマンド信号に応答して行われる、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）などのシステム・メモリ１１０へのメモリ・アクセスを含む。システム・メモリ１１０は複数のバンク１−Ｎ、例えば図２に図示するように４つのバンクを含む。図示するように、制御ロジック２０２に結合する信号はクロック信号ＣＬＫ、ライト・イネーブル信号ＷＥバー（記号）、行アドレス・ストローブ信号ＲＡＳバー（記号）、列アドレス・ストローブ信号ＣＡＳバー（記号）、出力イネーブル信号ＯＥバー（記号）を含み、バー（記号）は信号がアクティブ・ローであることを示す。これらコマンド信号とそのそれぞれの機能は従来どおりである。
【００１７】
制御ロジック２０２は第１クロック・ジェネレータ２０４と第２クロック・ジェネレータ２０６に結合し、第１クロック・ジェネレータ２０４には行アドレス・ストローブ信号ＲＡＳバー（記号）が印加される。制御ロジック２０２は、データ選択信号ＤＱ１、ＤＱ２、ＤＱ３、ＤＱ４を受信するデータ・アウト・バッファ２１０に結合するデータ・イン・バッファ２０８に結合し、両バッファ２０８、２１０はデータをＳＤＲＡＭメモリ・アレイ１１０に、およびＳＤＲＡＭメモリ・アレイ１１０から転送するために、センス・アンプＩ／Ｏゲートブロック２１２に結合する。
【００１８】
メモリ・システム２００は行アドレス・バッファ２１４と列アドレス・バッファ２１６を含み、図面ではアドレス入力Ａ０〜Ａ９として示されている行アドレスと列アドレスをそれぞれ受信する。列アドレス・バッファ２１６は列デコーダ２１８に接続し、列デコーダ２１８は列アドレスを復号して、対応する信号をセンス・アンプＩ／Ｏゲート論理ブロック２１２を介してメモリ１１０のバンクまたはアレイの１つに送出する。行アドレス・バッファ２１４は行デコーダ２２０に接続し、行デコーダ２２０は第１クロック・ジェネレータ２０４からクロック信号を受信する。行デコーダ２２０は行アドレスを復号して、対応する信号を補数選択２２２および行選択２２４を介してメモリ１１０のバンクまたはアレイの１つに送出する。制御ロジック２０２が制御するリフレッシュ・コントローラ２２６は第１クロック・ジェネレータ２０４に結合する。行アドレスが、行アドレス・バッファ２１４に結合されるリフレッシュ・カウンタ２２８によってリフレッシュのために生成される。
【００１９】
本発明の特徴によると、メモリ・アクセスのタイプによってページを開いたままにしておくかどうかを決定するメモリ・コントローラ１０８を提供する。アクセスが通常の要求時フェッチの場合、アクセスの完了後ページは閉じるべきである。アクセスがプリフェッチであれば、典型的にはページは開いたままにしておく。
【００２０】
クローズド・モード・ページ・ポリシーでは、メモリ１１０には次のように一連のステップでアクセスする。メモリ・コントローラ１０８は、ＣＰＵから読み出し、書き込み、またはプリフェッチのアドレスを受信すると、どのメモリ・バンクがアクセスすべきメモリ・ワードを含むかを識別し、起動信号をメモリ１１０のそのバンクに送る。メモリ・コントローラ１０８はさらにアドレスを２つのセグメントに分割する。第１セグメントは行アクセス・ストローブまたはＲＡＳとして知られる信号のセットを作成するのに使う。第２の信号のセットは列アクセス・ストローブまたはＣＡＳと呼ばれる。これら２つのセグメントがそのように呼ばれるのは、メモリ１１０の物理的な配列がメモリ素子の矩形アレイで、アレイ内の特定の素子にアクセスするのにＣＡＳとＲＡＳを数学のデカルト座標とほぼ同じように使えるからである。
【００２１】
まず、ＲＡＳをデータ・アレイに提示する。これによって行または典型的にはサイズが１６Ｋから６４Ｋバイトのデータのページが開かれる。数クロック後、ＣＡＳ信号を使ってページ内の該当の特定のメモリ・ワードにアクセスする。この時点で、索引付きメモリ・アレイ１１０からメモリ・バッファ２１０に、またはメモリ・バッファ２０８から索引付きメモリ・アレイ１１０にデータが流れ始める。メモリの動作が書き込みの場合、データをメモリに書き込んだ直後にページを閉じることができる。読み出しまたはプリフェッチの場合、ページはバッファがいっぱいになった直後に閉じることができる。
【００２２】
多少なりともメモリ・アクセスを迅速化しようとして、システム２００はオープン・ページ・モードを採用する。このモードは、現在の要求のアドレスが前の要求と同じページにあるとき、メモリ・コントローラ１０８に上記ステップの一部をスキップさせることができる。すなわち、現在の動作が完了したときにページを閉じなければ、その後の同じページへのアクセスにはメモリ・バンクを起動する必要はない、またはＲＡＳ信号をアサートする必要はない。代わりに、メモリ・コントローラ１０８はすぐにＣＡＳ信号をアサートするとともに、新たなデータをそれぞれのメモリ・バッファ２０８、２１０に、またはそれぞれのメモリ・バッファ２０８、２１０から流すことができる。
【００２３】
すべてのメモリ・アクセスにオープン・ページ・モードを使用することの一つの欠点は、最後の動作で開いたままにされたページが現在の動作のページとは異なるが、現在の動作のページと同じ論理パーティションまたはメモリ・バンク内にある場合、次の２つのステップをしなければ読み出しまたは書き込みコマンドを始められないことである。メモリ・バンクをプリチャージしてバンク内のすべてのページを閉じなければならず、また正しいページを起動しなければならない。オープン・ページ・ポリシーを使用する別の欠点は、システム２００で開いているページを追跡するためにメモリ・コントローラ１０８のリソースを使うことである。特定のバンクの状態と、特定のバンクで開いているページに応じて、メモリ・コントローラ１０８は適切なメモリ・コマンドを送らなければならない。メモリ要求に対して特定のバンクに開いているページがない場合、要求ページを開くための起動コマンドを送る。要求ページがすでにバンクで開いている場合、読み出しまたは書き込みコマンドをそのページに送る。また、メモリ要求に対してバンクにすでに別のページが開いている場合、バンクをまずプリチャージしてからでなければ、起動コマンドを送って適切なページを開き、最終的に読み出しまたは書き込みコマンドを送れない。上記２つのステップにはそれぞれ数メモリ・サイクルかかる。そのため、オープン・ページ・モードはパフォーマンスには有益であるが、ロジックの複雑さが増し、それが面積および電力消費を増大させる。
【００２４】
好適な実施形態のメモリ・コントローラ１０８では、開いたページの数を制限して、再使用される可能性が高いページだけを開いたままにしておきながら、オープン・ページ・ポリシーをサポートする。
【００２５】
本発明の特徴によると、ページが近い将来再びアクセスされそうかどうかを事前に予測する方法を提供する。本発明の方法は、プリフェッチ・コマンドを他のメモリ・アクセスとは別に扱うことによって、このような予測をしようと試みる。プリフェッチにより要求されたメモリ・ワードの投機的フェッチを行うことに加えて、メモリ・コントローラ１０８はプリフェッチのアドレスを、次の順次アドレス指定メモリ・ワードを含むページも開かれるという示唆として使用する。ここで２つの状況が想定される。
【００２６】
まず、このワードが前のワードと同じページにある場合、現在のページを開いたままにしておき、その後にそのページのロードおよびストアを実行してもページを閉じない。好適な実施形態では、ページの最後のワードへのプリフェッチを、ページを閉じてもよいことを示す信号として使う。この状況になりやすいのは、メモリ・コントローラ１０８が通常のオープン・ページ・モード・ポリシーが機能している場合のように、連続アドレス指定ワードが同じページになるようにアドレスをハッシュするときである。
【００２７】
次に、次の順次アドレス指定ワードが異なるメモリ・ページにある場合、このページをメモリ・コントローラ１０８で開く。この状況では、その後そのページにアクセスした後にページを閉じる。メモリ・コントローラ１０８が、連続アドレス指定メモリ・ワードが異なるページになるようにアドレスをハッシュする場合にこうなりやすい。この種のハッシングは一般的にクローズド・モード・ページ・ポリシーをサポートするように設計されたメモリ・コントローラに特徴的である。
【００２８】
図３も参照すると、好適な実施形態によるオープン・ページ・モードを使ってデータ・プリフェッチを実施する例示的な操作を図示しており、ブロック３００から始まる。まず、ブロック３０２で示すように次のメモリ・コマンドを待つ。コマンドを受信したら、判断ブロック３０４で示すように、コマンドがプリフェッチ・コマンドかどうかをチェックする。プリフェッチ・コマンドを識別したら、ブロック３０６で示すように次の順次ラインのアドレスを計算する。
【００２９】
次に、判断ブロック３０８で示すように、次の順次ラインが同じページにあるかどうかをチェックする。次の順次ラインが同じページにある場合、ブロック３１０で示すように、現在のコマンドを処理し、さらにブロック３１２で示すようにページを開いたままにしておく。
【００３０】
判断ブロック３０８で次の順次ラインが同じページにないと決定する場合、ブロック３１４で示すように次の順次ラインを含むページを開く。次に、ブロック３１６で示すように現在のコマンドを処理し、さらにブロック３１８で示すように現在のコマンドのページを閉じる。
【００３１】
また、判断ブロック３０４でコマンドがプリフェッチ・コマンドではないと決定する場合、ブロック３１６で現在のコマンドを処理し、さらにブロック３１８で現在のコマンドのページを閉じる。
【００３２】
本発明は図面に示す発明の実施形態の詳細を参照しながら説明してきたが、これら詳細は特許請求の範囲で請求する発明の範囲を制限するものではない。
【図面の簡単な説明】
【００３３】
【図１】好適な実施形態によるオープン・ページ・モードを使ってデータ・プリフェッチを実施する例示的なコンピュータ・システムを図示するブロック図である。
【図２】好適な実施形態によるオープン・ページ・モードを使ってデータ・プリフェッチを実施する図１のコンピュータ・システムの例示的なメモリ・システムを図示するブロック図である。
【図３】好適な実施形態によるオープン・ページ・モードを使ってデータ・プリフェッチを実施する例示的な操作を図示するフローチャートである。
【図１】
2008102932.tif 000003
【図２】
2008102932.tif 000004
【図３】
2008102932.tif 000005