(57)【要約】メモリコントローラのレジスタまたは回路に直接アクセスする必要なく、メモリコントローラにより利用されるメモリページ管理実現をプロセッサにより決定するシステム及び方法が開示される。一実施例では、カウンタのマトリックスは、潜在的なページ管理実現とブロックごとのページ数に対応する。長いアクセス遅延が検出されたときは常に、対応するページ管理実現とページ数がページ境界を予測するかに依存して、カウンタがインクリメントまたはデクリメントされてもよい。一定時間後に最大値を有するカウンタが、実際のページ管理実現及びブロックごとのページ数に対応するかもしれない。
2006511886.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセスリクエストをキュー処理するバスアクセスキューと、
メモリアクセスリクエストを前記バスアクセスキューにスケジューリングするバススケジューラと、
ｉｊ個のカウンタ（ただし、ｉはバンクのメモリページ数、ｊは可能なページ管理実現に対応する）のマトリックスを有するページヒット予測データを前記バススケジューラに提供するページヒット予測器と、
から構成されることを特徴とするバスインタフェース。
【請求項２】
請求項１記載のバスインタフェースであって、さらに、
観察された遅延を決定するタイマを有することを特徴とするバスインタフェース。
【請求項３】
請求項２記載のバスインタフェースであって、さらに、
平均遅延を決定する平均遅延カウンタを有することを特徴とするバスインタフェース。
【請求項４】
請求項３記載のバスインタフェースであって、
前記ページヒット予測器は、前記観察された遅延から前記平均遅延を引いた値が閾値より大きいか判断することを特徴とするバスインタフェース。
【請求項５】
請求項４記載のバスインタフェースであって、
前記ページヒット予測器は、前記ｊに対応する可能なページ管理実現と前記ｉに対応するメモリページの個数とにより、現在のメモリアクセスが以前のメモリアクセスと比較して新しいメモリページ上にあると予測されると、論理信号を真に設定することを特徴とするバスインタフェース。
【請求項６】
請求項５記載のバスインタフェースであって、
前記ｉｊカウンタは、前記論理信号が真であるときインクリメントされることを特徴とするバスインタフェース。
【請求項７】
請求項５記載のバスインタフェースであって、
前記ｉｊカウンタは、前記論理信号が偽であるときデクリメントされることを特徴とするバスインタフェース。
【請求項８】
各々が可能なページ管理実現とブロックのメモリページ数の組み合わせに対応するカウンタの集合を確立するステップと、
メモリアクセスに対する観察される遅延が平均遅延を超えるか判断するステップと、
前記メモリアクセスに対する観察される遅延が平均遅延を超える場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものであると予測されると、前記カウンタの１つをインクリメントするステップと、
から構成されることを特徴とする方法。
【請求項９】
請求項８記載の方法であって、
前記判断するステップは、メモリアクセスに対する前記観察された遅延から前記平均遅延を引いた値が閾値を超えるか判断することを特徴とする方法。
【請求項１０】
請求項８記載の方法であって、さらに、
前記判断するステップが肯定される場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものでないと予測されると、前記カウンタの１つをデクリメントするステップを有することを特徴とする方法。
【請求項１１】
請求項８記載の方法であって、さらに、
前記平均遅延を更新するステップを有することを特徴とする方法。
【請求項１２】
請求項８記載の方法であって、さらに、
前記カウンタの集合の値の集合の最大値を決定するステップを有することを特徴とする方法。
【請求項１３】
請求項１２記載の方法であって、さらに、
前記最大値を有するカウンタに対応する前記可能なページ管理実現とメモリページ数の組み合わせの１つをページヒット予測器に供給するステップを有することを特徴とする方法。
【請求項１４】
プロセッサにより実行されるとき、
各々が可能なページ管理実現とブロックのメモリページ数の組み合わせに対応するカウンタの集合を確立するステップと、
メモリアクセスに対する観察される遅延が平均遅延を超えるか判断するステップと、
前記メモリアクセスに対する観察される遅延が平均遅延を超える場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものであると予測されると、前記カウンタの１つをインクリメントするステップと、
を実行するプログラム命令を有することを特徴とするコンピュータ可読媒体。
【請求項１５】
請求項１４記載のコンピュータ可読媒体であって、
前記判断するステップは、メモリアクセスに対する前記観察された遅延から前記平均遅延を引いた値が閾値を超えるか判断することを特徴とする媒体。
【請求項１６】
請求項１４記載のコンピュータ可読媒体であって、さらに、
前記判断するステップが肯定される場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものでないと予測されると、前記カウンタの１つをデクリメントするステップを有することを特徴とする媒体。
【請求項１７】
請求項１４記載のコンピュータ可読媒体であって、さらに、
前記平均遅延を更新するステップを有することを特徴とする媒体。
【請求項１８】
請求項１４記載のコンピュータ可読媒体であって、さらに、
前記カウンタの集合の値の集合の最大値を決定するステップを有することを特徴とする媒体。
【請求項１９】
請求項１８記載のコンピュータ可読媒体であって、さらに、
前記最大値を有するカウンタに対応する前記可能なページ管理実現とメモリページ数の組み合わせの１つをページヒット予測器に供給するステップを有することを特徴とする媒体。
【請求項２０】
メモリアクセスリクエストをキュー処理するバスアクセスキューと、メモリアクセスリクエストを前記バスアクセスキューにスケジューリングするバススケジューラと、ｉｊ個のカウンタ（ただし、ｉはバンクのメモリページ数、ｊは可能なページ管理実現に対応する）のマトリックスを有するページヒット予測データを前記バススケジューラに提供するページヒット予測器とを有するプロセッサと、
前記プロセッサに接続されるシステムバスと、
前記システムバスに接続され、前記メモリアクセスリクエストを受信するメモリコントローラと、
前記システムバスに接続される音声入出力装置と、
から構成されることを特徴とするシステム。
【請求項２１】
請求項２０記載のシステムであって、
前記プロセッサは、観察された遅延を決定するタイマを有することを特徴とするシステム。
【請求項２２】
請求項２１記載のシステムであって、
前記プロセッサは、平均遅延を決定する平均遅延カウンタを有することを特徴とするシステム。
【請求項２３】
請求項２２記載のシステムであって、
前記ページヒット予測器は、前記観察された遅延から前記平均遅延を引いた値が閾値より大きいか判断することを特徴とするシステム。
【請求項２４】
請求項２３記載のシステムであって、
前記ページヒット予測器は、前記ｊに対応する可能なページ管理実現と前記ｉに対応するメモリページの個数とにより、現在のメモリアクセスが以前のメモリアクセスと比較して新しいメモリページ上にあると予測されると、論理信号を真に設定することを特徴とするシステム。
【請求項２５】
請求項２４記載のシステムであって、
前記ｉｊカウンタは、前記論理信号が真であるときインクリメントされることを特徴とするシステム。
【請求項２６】
請求項２５記載のシステムであって、
前記ｉｊカウンタは、前記論理信号が偽であるときデクリメントされることを特徴とするシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［技術分野］
本開示は、一般にマイクロプロセッサに関し、より詳細には、システムバスを介しメモリコントローラと共に動作可能なマイクロプロセッサシステムに関する。
【０００２】
［背景］
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）は、メモリプリチャージ動作、起動動作、リード動作及びライト動作を有するかもしれない。特に、メモリバンクをアドレス指定するメモリコントローラは、まずメモリバンクをプリチャージし、その後、当該バンク内のアドレス指定されたページが、当該ページのアドレス指定されたカラムがアクセス（リードまたはライト）される前に起動される必要がある。「ＤＲＡＭページオープン」や「ページヒット」は、アクセスされているメモリがすでにプリチャージ及び起動されていることを示し、各メモリアクセス中にメモリをプリチャージまたは起動する必要なく、データがページから読み出しまたは書き込みされるかもしれない。「ページミス」が発生すると（すなわち、オープンされているページ以外のメモリのページからデータがアクセスされる）、このオープンされているページは、センスアンプからＤＲＡＭチップに書き込みされる必要がある。次に、新たなメモリページがまずプリチャージされ、アクセスされる前に起動される必要がある。古いページのＤＲＡＭへの書き込みと、新しいＤＲＡＭページのプリチャージ及び起動は時間を要するものであり、メモリアクセスをスローダウンさせ、メモリバスの非効率な利用（帯域幅の減少）とＤＲＡＭを用いる装置（例えば、コンピュータなど）のパフォーマンスのロスを引き起こす。
【０００３】
プロセッサは、システムバスを介しメモリコントローラにメモリアクセスコマンドを発行することにより、ＤＲＡＭを含むシステムメモリとやりとりするかもしれない。プロセッサのバスインタフェース回路は、バスアクセスキューを介しプロセッサからシステムメモリへのアクセス（リード及びライト）をスケジューリングするバススケジューラを有するかもしれない。バススケジューラがメモリアクセスリクエストをバスアクセスキューにページミスを減少させ、ページヒットを増加させる順序により配置することが可能である場合、アクセス遅延は減少するかもしれない。プロセッサが、通常はメモリコントローラにより制御されているメモリページ管理実現（ｍｅｍｏｒｙ  ｐａｇｅ  ｍａｎａｇｅｍｅｎｔ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）とバンクごとのページ数の両方を知っている場合、そのようなバススケジューラを生成することが可能であろう。しかしながら、この情報は、一般にはメモリコントローラから読み出すことができない。
【０００４】
［詳細な説明］
以下の説明では、メモリコントローラのレジスタまたは回路への直接的なアクセスを有する必要なく、メモリコントローラにより利用されているメモリページ管理実現を決定するプロセッサのための技術が説明される。以下の説明では、本発明の完全なる理解を与えるため、論理実現、ソフトウェアモジュール割当て、バス信号処理技術などの多数の具体的詳細及び動作の詳細が提供される。しかしながら、本発明がこのような具体的詳細なく実現されうるということは、当業者には理解されるであろう。他の例では、制御構造、ゲートレベル回路および完全なソフトウェア命令シーケンスは、本発明を不明瞭にすることを避けるため、詳細には図示されていない。当業者は、含まれている説明により、過度な実験を行うことなく適切な機能を実現することができるであろう。本発明は、メモリコントローラに接続されたシステムメモリを有するマイクロプロセッサシステム内部のシステムバスにより接続されたメモリコントローラ及びプロセッサの形態により開示される。しかしながら、本発明は、他の構成のプロセッサ及びシステムメモリにより実現されてもよい。
【０００５】
図１を参照するに、一実施例によるマルチプロセッサシステム１００の概略図が示される。図１のシステムは、簡単化のため２つのプロセッサ１４０と１６０のみが示されているが、複数のプロセッサを有するようにしてもよい。プロセッサ１４０と１６０は、レベル１キャッシュ１４２と１６２を有するようにしてもよい。図１のマルチプロセッサシステム１００は、バスインタフェース１４４、１６４、１１２及び１０８を介しシステムバス１０６と接続される複数の機能を有するようにしてもよい。一実施例では、システムバス１０６は、インテル（登録商標）コーポレイションにより製造されているペンティアム（登録商標）マイクロプロセッサと共に利用されるフロントサイドバス（ＦＳＢ）であってもよい。システムバストバスインタフェースを介し接続される機能の一般的名称は、「エージェント」である。エージェントの例として、プロセッサ１４０と１６０、バスブリッジ１３２及びメモリコントローラ１３４があげられる。一部の実施例では、メモリコントローラ１３４とバスブリッジ１３２は、まとめてチップセットと呼ばれることもある。一部の実施例では、チップセットの機能は、図１の実施例に示されるものとは異なる物理的チップに分割されてもよい。
【０００６】
プロセッサ１４０と１６０のぞれぞれのバスインタフェース１４４と１６４のそれぞれは、一実施例では、メモリアクセスリクエストをキュー処理するためのバスアクセスキュー、メモリアクセスリクエストをバスアクセスキューに配置するバススケジューラ、及びページミスアクセスの回数を減少させる順番によりバスアクセスリクエストを配置するバススケジューラを支援するページヒット予測器を有する。
【０００７】
メモリコントローラ１３４は、プロセッサ１４０と１６０がシステムメモリ１１０及びＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３６に対する読み出し及び書き込みを実行することを許可するかもしれない。一部の実施例では、ＢＩＯＳ  ＥＰＲＯＭ１３６は、フラッシュメモリを利用してもよい。メモリコントローラ１３４は、メモリリード及びライトデータがシステムバス１０６上のバスエージェントとの間で搬送されることを可能にするバスインタフェースを有するようにしてもよい。メモリコントローラ１３４はまた、ハイパフォーマンスグラフィックインタフェース１３９を介しハイパフォーマンスグラフィック回路１３８と接続されてもよい。ある実施例では、ハイパフォーマンスグラフィックインタフェース１３９は、４×ＡＧＰや８×ＡＧＰなどの複数スピードで動作するＡＧＰインタフェースあるいはアドバンストグラフィックポートＡＧＰインタフェースであってもよい。メモリコントローラ１３４は、ハイパフォーマンスグラフィックインタフェース１３９を介しシステムメモリ１１０からハイパフォーマンスグラフィック回路１３８にリードデータを伝送する。
【０００８】
バスブリッジ１３２は、一部の実施例では、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスあるいはＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスであってもよいシステムバス１０６とバス１１６との間のデータ交換を可能にするかもしれない。一部の実施例にでは、ローパフォーマンスグラフィックコントローラ、ビデオコントローラ及びネットワーキングコントローラを含むバス１１６上の各種入出力Ｉ／Ｏ装置１１４が設けられてもよい。他のバスブリッジ１１８は、一部の実施例では、バス１１６と１２０との間のデータ交換を可能にするよう利用されてもよい。一部の実施例では、バス１２０は、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）バス、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）バス、あるいはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）バスであってもよい。追加的Ｉ／Ｏ装置はバス１２０と接続されてもよい。これらには、キーボード、マウスを含むカーソル制御装置１２２、音声Ｉ／Ｏ１２４、モデムやネットワークインタフェースを含む通信装置１２６、及びデータ記憶装置１２８を有するものであってもよい。ソフトウェアコード１３０が、データ記憶装置１２８に格納されてもよい。一部の実施例では、データ記憶装置１２８は、固定された磁気ディスク、フロッピー（登録商標）ディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、フラッシュメモリを含む不揮発性メモリであってもよい。
【０００９】
図２を参照するに、一実施例によるメモリ管理実現の概略図が示される。一般に、メモリはバンクに組織化され、さらにページに分割される。メモリアクセス方法の詳細は、メモリページ管理実現（ｍｅｍｏｒｙ  ｐａｇｅ  ｍａｎａｇｅｍｅｎｔ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）と呼ばれるかもしれない。与えられたメモリサイズに対し、多数の可能なメモリページ管理実現が存在する。例えば、ＤＲＡＭは、ファーストページＤＲＡＭ、ＥＤＯ（Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔ）ＤＲＡＭ、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、デュアルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、ランバス（登録商標）ＤＲＡＭ（ＲＤＲＡＭ）などの各種個別のフォーマットにより購入されてもよい。多数のより多くのフォーマットが以降において利用可能となるかもしれない。あるメモリページ管理実現は、システムメモリ１１０とメモリコントローラ１３４との組み合わせにより特定されるかもしれない。メモリタイプ、メモリサイズ、インタリーブされたアクセスの利用性、及び他の多くの要因が、特定のメモリページ管理実現に加わるかもしれない。
【００１０】
図２は、１つの可能なメモリページ管理実現を示す。ここでは、バンク０（２２０）とバンク１（２３０）の２つが示されているが、２以上のメモリバンクが設けられてもよい。各バンクに対し４つのページが示されているが、他の実施例では、一様でないサイズのページを含む各バンクに対し他の個数のページが設けられてもよい。バンク０（２２０）には、ページ０（２２２）、ページ１（２２４）、ページ２（２２６）及びページ３（２２８）とラベル付けされている。他の実施例では、異なるバンク０（２２０）とバンク１（２３０）には、異なる個数のページが設けられてもよい。図２の実施例では、ある時点においては各バンクに対し１つのみのページがオープンされてもよいと仮定されているが、他の実施例では、ある時点において複数のページがオープン可能であるかもしれない。
【００１１】
バンク０（２２０）のメモリアクセス２４０、２４２、２４４のシーケンスを考える。この例では、ページ１（２２４）はすでにオープンされていると仮定する。このとき、ページ１（２２４）は、アクセス２４０においてオープンのままであり、ページヒットとなる。同一のページ１（２２４）に対する以降のアクセス２４２もまたページ２２４がオープンであると検出すべきであり、このため、アクセス２４２もまたページヒットとなるべきである。しかしながら、アクセス２２４はアクセス２４４の開始時にはクローズされているページ２（２２６）に対するものである。一般に、アクセス２４４は、アクセス２４２と比較すると、ある程度より時間がかかるべきである。
【００１２】
メモリにわたってメモリアクセスを行い、アクセス遅延時間が基準より長いとき通知することにより、プロセッサは実際のページ管理実現を判断することが可能となるようである。この場合、メモリページの境界が探索されたということは推論可能である。しかしながら実際には、この方法は正確な結果を与えないかもしれない。例えば、所与のメモリアクセスがある基準より長いアクセス遅延時間を有するのには他の多くの理由が存在する。ＤＲＡＭは、リフレッシュサイクルを利用している。リフレッシュサイクル中に発行されたアクセスは、基準より長い遅延時間を有するかもしれない。同様に、図１に示されるマルチプロセッサシステムでは、プロセッサ１４０により発行されたメモリアクセスは、プロセッサ１６０により発行された以前のメモリアクセスにより遅延されるかもしれない。プロセッサ１６０により発行されたメモリアクセスはそれ自体時間を要するものであるだけでなく、メモリの異なるページをオープンさせるかもしれない。これら両方の効果は、プロセッサ１４０により発行されるアクセスのメモリアクセス遅延に影響を与えるかもしれない。
【００１３】
図３を参照するに、本開示の一実施例による図１のバスインタフェースの概略図が示される。図３は、一実施例ではフロントサイドバス（ＦＳＢ）インタフェースであるかもしれないメモリアクセスをスケジューリングするバスインタフェースを示す。バスインタフェース１４４は、バスアクセスキュー３１０を用いてプロセッサ１４０からＤＲＡＭへのＤＲＡＭアクセスをスケジューリングするバススケジューラ３２０を有するようにしてもよい。バスインタフェース１４４は、キャッシュ１４２の内部の追加的バスを介しプロセッサ１４０に、システムバス１０６を介しメモリコントローラ１３４のバスインタフェースに接続されてもよい。メモリコントローラ１３４は、メモリバスを介しシステムメモリ１１０に接続されてもよい。一実施例では、システムメモリ１１０はＤＲＡＭであってもよい。
【００１４】
プロセッサ１４０は、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）コアとハードウェアプリフェッチャ（ＨＷＰ）とから構成されてもよい。アウト・オブ・オーダコアは、複数の命令がプロセッサの全体的パフォーマンスを向上させるように実行中にオーバーラップされるパイプライン技術を利用してもよい。ＨＷＰは、アウト・オブ・オーダコアの実行ユニットにより最終的に必要とされると予測されるＤＲＡＭアクセスを予め取得してもよい。
【００１５】
バスインタフェース１４４は、バススケジューラ３２０とページヒット予測器３３０とを有するようにしてもよい。一実施例では、バススケジューラ３２０はページヒット予測器３３０に接続されてもよく、バススケジューラ３２０はバスアクセスキュー３１０に接続されてもよい。他の実施例では、バスアクセスキュー３１０にはページヒット予測器３３０とバススケジューラ３２０の両方が接続されてもよい。一実施例では、バススケジューラ３２０は、プロセッサにより処理されているアプリケーションまたはアプリケーションの一部に基づき、プロセッサ１４０から（すなわち、アウト・オブ・オーダコアとＨＷＰから）システムメモリ１１０へのアクセスをスケジューリングする。例えば、処理されているアプリケーションが遅延耐性的なものである場合、バススケジューラ３２０は、利用可能なメモリバス帯域幅を利用するため、メモリアクセスをスケジューリングするかもしれない。
【００１６】
あるいは、処理されているアプリケーションが遅延耐性的でない場合、バススケジューラ３２０は、メモリアクセス遅延を減少させるようメモリアクセスをスケジューリングするかもしれない。言い換えると、バススケジューラ３２０は、プロセッサ１４０により処理されているアプリケーションの特性に基づき、バスアクセスキュー３１０のメモリアクセスを調整するようにしてもよい。例えば、メモリアクセスが分岐予測ミスを解決する必要があるとき、アプリケーションは遅延耐性的でないかもしれない。この例では、分岐が予測ミスされると、コアにより実行される投機的作業は、メモリアクセスが完了し、プロセッサがプログラム実行の正確なパスから命令をフェッチするまで、無駄となるかもしれない。アプリケーションが「遅延耐性的」または「遅延非耐性的」か判断するため、バススケジューラ３２０は、ＨＷＰとアウト・オブ・オーダコアにより生成されたメモリアクセスをモニタするようにしてもよい。
【００１７】
システムメモリのオープンページからデータにアクセスすると予測されるシステムメモリアクセスをスケジューリングするため、バススケジューラ３２０は、ページヒット予測器３３０を利用してもよい。一実施例では、ページヒット予測器３３０は、アクセスされるシステムメモリ内のページ履歴を追跡するようにしてもよく、アクセスされたページの履歴に基づき、ページヒット予測器３２０は、オープンされると予測されるシステムメモリ内のページのリストを生成するようにしてもよい。例えば、ページ１２、１４、１６及び１８が以前にアクセスされ、システムメモリ１１０のページ管理実現により４ページが同時にオープンされることを可能にされている場合、ページヒット予測器は、ページ１２への新たなアクセスがヒットし、ページ１３への新たなアクセスがミスすると予測するかもしれない。本発明の一実施例では、ページヒット予測器３３０は、少なくともメモリバスサイクルごとにシステムメモリにおいてオープンされると予測されるページリストを生成（または更新）するようにしてもよい。他の実施例では、ページヒット予測器３３０は、少数の（例えば、２以上）メモリバスサイクルごとにシステムメモリにおいてオープンされると予測されるページリストを生成（または更新）するようにしてもよい。
【００１８】
メモリのオープンなページを決定するため、ページヒット予測器３３０は、システムメモリ１１０の実際のページ管理実現を知るべきである。このことは多くの実施例では困難かもしれない。なぜなら、プロセッサ１４０は、実際のページ管理実現を示すメモリコントローラ１３４の部分に直接アクセスしないからである。また、図２の説明で述べられたように、単にメモリアクセス遅延の増加を通知することによるメモリ全体へのメモリアクセスの実行及びメモリページ境界の位置の特定は、正確な結果を与えないかもしれない。
【００１９】
従って、本開示の一実施例では、ページヒット予測器３３０は、システムの実際のページ管理実現の決定において支援する追加的回路を有するようにしてもよい。図３の実施例では、タイマ３３２、平均遅延カウンタ３３４及びカウンタマトリックス３３６が、この決定に資するよう利用されてもよい。さらなる他の実施例では、本開示の方法はプロセッサ上で実行されるソフトウェアプログラムにより実行されてもよい。
【００２０】
タイマ３３２は、プロセッサ１４０により発行された所与のメモリアクセスに対する測定されたメモリアクセス遅延時間を提供するのに利用されてもよい。一実施例では、この遅延時間は、リードデータがバスインタフェース１４４に到達するまで、あるいはライトデータがバスインタフェース１４４から放出されるまで、システムバス１０６を介しバスアクセスキュー３１０から発行されるメモリアクセスリクエスト間の時間として与えられるかもしれない。タイマ３３２は、当該技術では周知な回路を用いて実現されてもよい。
【００２１】
平均遅延カウンタ３３４は、プロセッサ１４０から発行されるメモリアクセスの移動平均遅延を追跡するのに利用されてもよい。一般に、あるタイプのＤＲＡＭにはノミナルなメモリアクセス時間が存在するかもしれない。例えば、あるＤＲＡＭの例では、ページヒットには、１２５ナノ秒のメモリアクセス遅延が想定され、ページミスには、１８０ナノ秒が想定されるかもしれない。これらの値は一般には静的なものであり、時間に関して可変的なものではない。いくつかのＤＲＡＭは、「ページエンプティ」状態へのアクセスに対応する第３の可能なノミナルメモリアクセス時間を有するかもしれない。ページエンプティ状態は、バンクのリード回路の何れもがチャージされていないとき（すなわち、何れのページもオープンでないとき）、発生するかもしれない。このため、アクセスされたページに対応するリード回路がチャージされる必要はあるが、センスアンプからＤＲＡＭに書き込まれる必要のあるオープンページは存在しない。このため、ページエンプティバンクへのメモリアクセスは、ページヒットのものとページミス状態との間の何れかにおいて、ノミナルなアクセス遅延を有するかもしれない。
【００２２】
一部の実施例では、平均遅延として上記静的なメモリアクセス時間の１つあるいは組み合わせを利用することが可能であろう。しかしながら、平均遅延カウンタ３３４は、移動平均遅延を与えるため利用されるかもしれない。平均遅延カウンタ３３４は、ある選ばれた値に初期化されてもよい。このとき、観察される各メモリアクセス遅延に対し、この新しい値は、平均遅延の新たな値を生成するため、平均遅延カウンタ３３４のコンテンツと合成される。一実施例では、平均遅延カウンタ３３４は、メモリアクセスが完了するたび、１０００だけインクリメントされてもよい。このとき、平均遅延カウンタ３３４は、各クロックサイクルで０．９９９と乗算されてもよい。ノミナルにメモリアクセスが１００クロックサイクルごとに完了する場合、平均リターン遅延は、１０５／（平均遅延カウンタのコンテンツ）となるかもしれない。他の実施例では、他の移動平均遅延値を与えるため、平均遅延カウンタの他の実現が利用されてもよい。
【００２３】
カウンタマトリックス３３６は、各々が特定の可能なページ管理実現と特定の可能なバンクごとのページ数の両方に対応する多数のカウンタを有するようにしてもよい。発生する各メモリアクセスに対し、カウンタマトリックス３３６は、特定の可能なページ管理実現とバンクごとのページ数の各組み合わせに対し、直前のメモリアクセスと比較して、ページ境界がクロスするかの予測を計算するかもしれない。メモリアクセス遅延（一実施例では、タイマ３３２により生成されるような）と平均遅延（一実施例では、平均遅延カウンタ３３４により生成されるような）との間の差が選択された閾値より大きい場合、カウンタマトリックス３３６のすべてのカウンタがインクリメントあるいはデクリメントされるかもしれない。直前のメモリアクセスと比較するとき、ページ境界がクロスするかという予測が偽である場合、特定のカウンタがデクリメントされる。他方、直前のメモリアクセスと比較するとき、ページ境界がクロスするかという予測が真である場合、特定のカウンタがインクリメントされる。一実施例では、カウンタがインクリメントされる量は１０であり、デクリメントされる量は１である。他の量が選択されてもよい。このようにして、所定の時間後、最大値を有するカウンタが、実際のページ管理実現とバンクごとの実際のページ数に対応すると推定される。
【００２４】
図３に示される回路は、ページ管理実現とバンクごとのページ数がシステムメモリ内の各種バンク間において同一であることを前提としている。他の実施例では、追加的なカウンタマトリックスが、異なるページ管理実現とバンクごとのページ数によりバンクに対応するよう追加されてもよい。
【００２５】
図４を参照するに、本開示の一実施例による可能なメモリ管理実現とブロックごとのメモリのページ数に対応するｉｊ個のカウンタ集合の概略図が示される。ｉｊ個のカウンタの集合は、図３の通常のカウンタマトリックス３３６に構成されるものとして示される。しかしながら、他の実施例では、ｉｊ個のカウンタの集合は、マトリックス以外のものとして構成されてもよい。
【００２６】
カウンタマトリックス３３６の上部には、０ＰＭＩ、１ＰＭＩから４ＰＭＩまでラベル付けされたいくつかの可能なページ管理実現（ＰＭＩ）が設けられている。与えられる実施例に従って、それ以上またはそれ以下のページ管理実現が設けられてもよい。一部の実施例では、以降におけるページ管理実現の新たな形式の追加を可能にするため、カウンタマトリックスには余分なカラムが設けられてもよい。第ｊＭＰＩの例として、「ファーストページ−非インタリーブ」、「ファーストページ−インタリーブ」、「ＥＤＯ−非インタリーブ」「ＥＤＯ−インタリーブ」と共に、他の多数のタイプのページ管理実現があるかもしれない。
【００２７】
カウンタマトリック３３６の左側には、バンクごとのページ数が示されている。図４は、２のべき乗としてバンクごとのページ数ｉを示している。しかしながら、他の実施例では、他の値のシーケンスを利用することも可能である。一部の実施例では、以降におけるバンクごとの新たなページ数の追加を可能にするため、カウンタマトリックスに余分なローが設けられてもよい。
【００２８】
図４に示されるｉｊ個のカウンタの各々は、ｊ番目の可能なページ管理実現とｉ番目のバンクごとのページ数に対応している。例えば、２，３カウンタ４２８は、第３ページ管理実現と第２バンクごとのページ数（８ページ）に対応している。図３に関する上述のプロセスが実行された後、最大の値を有するｉｊカウンタは、実際のページ管理実現と実際のバンクごとのページ数に対応するであろう。例えば、２，１カウンタ４２４が最大値を有する場合、第１ページ管理実現が実際のものであり、第２バンクごとのページ数（８ページ）が実際のページ数となるであろう。
【００２９】
ｉｊカウンタの最大値の決定は、様々な方法により実行されるかもしれない。一実施例では、固定された閾値Ｍが選ばれ、ｉｊカウンタの何れかがＭ以上となると、当該プロセスは中断される。他の実施例では、カウンタは時間の制限なく実行され、必要に応じて読み出されるようにしてもよい。一部の状況では、実際のページ管理実現が与えられたカウンタマトリックスにリストされないということは注目すべきことである。しかしながら依然として、最大値を有するｉｊカウンタに対応する潜在的なページ管理実現を利用して、ページヒット予測器３３０などのページヒット予測器において利用されるとき効果的であるかもしれない。
【００３０】
図５を参照するに、本開示の一実施例による方法のフローチャートが示される。図示されるプロセスは、簡単化のためリードメモリアクセスを説明するものであるが、ライトメモリアクセスが利用されてもよい。図５のプロセスは、ブロック５１４において開始され、初期値がカウンタマトリックスの様々なｉｊカウンタに配置されるかもしれない。このとき、平均遅延に対する初期値を用いて、平均遅延カウンタが初期化されてもよい。その後ブロック５１８において、本プロセスはメモリからデータが到達するのを待機する。データがメモリから到達すると、ブロック５２２において、本プロセスはカウンタマトリックスのロー０及びカラム０から開始される。ブロック５２６において、現在のメモリアクセスに対して、第ｉページ数と第ｊページ管理実現によるページに関する予測された位置に実行される。その後判定ブロック５３０において、観察された遅延と平均遅延との差が閾値Ｔを上回っているか判断される。
【００３１】
判定ブロック５３０の結果がＹＥＳである場合、本プロセスは判定ブロック５３４に移行する。判定ブロック５３４において、ブロック５２６において決定されたページに関する予測された位置が直前のメモリアクセスに対し予測されたものと異なるページ上にあるか判断される。判定ブロック５３４の結果がＹＥＳである場合、本プロセスはブロック５３８においてｉｊカウンタをインクリメントする。他方、判定ブロック５３４の結果がＮＯである場合、本プロセスはブロック５４２においてｉｊカウンタをデクリメントする。何れの場合でも、その後本プロセスは判定ブロック５４６に移行し、本プロセスがカウンタマトリックスの最後のローに対するものであったか判断される。この回答がＮＯである場合、ブロック５５４においてｉの値はインクリメントされ、本プロセスはブロック５２６において繰り返される。回答がＹＥＳである場合、本プロセスは判定ブロック５５０に移行し、本プロセスがカウンタマトリックスの最後のカラムに対するものであったか判断される。回答がＮＯである場合、ブロック５５８において、ｉの値は０にリセットされ、ｊの値はインクリメントされる。その後本プロセスはブロック５２６に繰り返される。他方、回答がＹＥＳである場合、ブロック５６２において平均遅延は更新され、本プロセスはブロック５１８においてデータを待機するため戻る。
【００３２】
判定ブロック５３０に戻って、そこでなされた判定がＮＯである場合、ブロック５６２において平均遅延が更新され、本プロセスはブロック５１８においてデータを待機するため戻る。
【００３３】
上記明細書では、本発明はそれの特定の実施例を参照して説明された。しかしながら、添付された請求項に与えられるような本発明のより広範な趣旨及び範囲から逸脱することなく、様々な改良及び変更が可能であるということは明らかであろう。従って、明細書と図面は、限定的な意味でなく、例示的なものとしてみなされるべきである。
【図面の簡単な説明】
【００３４】
【図１】図１は、一実施例によるマルチプロセッサシステムの概略図である。
【図２】図２は、一実施例によるメモリ管理実現の概略図である。
【図３】図３は、本開示の一実施例による図１のバスインタフェースの概略図である。
【図４】図４は、本開示の一実施例による可能なメモリ管理実現とブロックごとのメモリのページ数に対応するカウンタ集合の概略図である。
【図５】図５は、本開示の一実施例による方法のフローチャートである。
【図１】
2006511886.tif 000003
【図２】
2006511886.tif 000004
【図３】
2006511886.tif 000005
【図４】
2006511886.tif 000006
【図５】
2006511886.tif 000007
【国際調査報告】
2006511886.tif 000008
2006511886.tif 000009