(57)【特許請求の範囲】
【請求項１】
データについての要求を発行するプロセッサと、
メモリ・バスに結合された、各々が複数のバンクを有する第１のメモリ・チップおよび第２のメモリ・チップであって、前記メモリ・バス上で前記第１のメモリ・チップにより駆動される第１のサイクルと前記第２のメモリ・チップにより駆動される第２のサイクルとの間にデッド・サイクルが必要とされる、第１のメモリ・チップおよび第２のメモリ・チップと、
前記メモリ・バスに結合されたメモリ・コントローラとを含み、
前記メモリ・コントローラは、
前記プロセッサにより発行された要求を格納するように構成された読み取りキューをさらに含み、前記読み取りキュー中の待ち状態要求の数が上限しきい値を超える場合、前記メモリ・バス上の要求されるデッド・サイクルを最小限にする順序で前記読み取りキューの要求にサービスし、前記読み取りキュー中の待ち状態要求の前記数が下限しきい値未満になる場合、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得ることを条件に、該より新しい要求をサービスするように構成されている、
コンピュータ・システム。
【請求項２】
前記メモリ・コントローラは、前記読み取りキュー中の待ち状態要求の数が上限しきい値を超える場合、
特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にあることを条件に、前記一連の要求にサービスし、
前記特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にないことを条件に、前記読み取りキュー中の前記最も古い要求にサービスする、請求項１に記載のコンピュータ・システム。
【請求項３】
前記上限しきい値がプログラム可能となるように構成され、または前記下限しきい値がプログラム可能となるように構成され、あるいはその両方である、請求項２に記載のコンピュータ・システム。
【請求項４】
前記上限しきい値または前記下限しきい値あるいはその両方が、実配線により設定される、請求項２に記載のコンピュータ・システム。
【請求項５】
前記メモリ・コントローラは、データをプロセッサに、前記プロセッサが前記データについての要求を発行した順序で返すように構成されている、請求項１に記載のコンピュータ・システム。
【請求項６】
コンピュータ・システムにおいて読み取り要求にサービスする方法であって、
プロセッサにより発行された読み取り要求を読み取りキュー中に受信するステップと
前記読み取りキュー中の待ち状態の要求の数に基づいてメモリ・アクセス・モードを決定するステップとを含み、
前記メモリ・アクセス・モードを決定するステップは、
待ち状態の要求の前記数が上限しきい値を超えれば、前記メモリ・アクセス・モードを高帯域幅モードに設定し、
待ち状態の要求の前記数が下限しきい値未満であれば、前記メモリ・アクセス・モードを低待ち時間モードに設定するステップを含み、
前記高帯域幅モードでは、前記メモリ・バス上の要求されるデッド・サイクルを最小限にする順序で前記読み取りキューの要求にサービスし、
前記低待ち時間モードでは、前記最も古い要求がより新しい要求によって決して遅延されないようにメモリ・チップへの読み取りを発行することにより、前記読み取りキュー中の要求にサービスする、
前記方法。
【請求項７】
前記高帯域幅モードでは、
特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にある時にはいつも、前記一連の要求にサービスし、前記特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求が前記読み取りキュー中にない時にはいつも、前記読み取りキュー中の前記最も古い要求にサービスする、請求項６に記載の方法。
【請求項８】
前記メモリ・アクセス・モードが前記低待ち時間モードにあり、前記最も古い要求が遅延されないことを条件に、より新しい要求にサービスするステップをさらに含む、請求項７に記載の方法。
【請求項９】
前記メモリ・アクセス・モードが高帯域幅モードにあれば、前記読み取りキュー中に非推測的要求が全くない場合に限り、推測的要求にサービスするステップをさらに含む、請求項６に記載の方法。
【請求項１０】
データについての要求を発行するプロセッサと、
メモリ・バスに結合された、各々が複数のバンクを有する第１のメモリ・チップおよび第２のメモリ・チップであって、前記メモリ・バス上で前記第１のメモリ・チップにより駆動される第１のサイクルと前記第２のメモリ・チップにより駆動される第２のサイクルとの間にデッド・サイクルが必要とされる、第１のメモリ・チップおよび第２のメモリ・チップと、
前記メモリ・バスに結合されたメモリ・コントローラとを含み、
前記メモリ・コントローラが、
前記プロセッサにより発行された要求を格納するように構成された読み取りキューをさらに含み、
前記読み取りキュー中の待ち状態要求の前記数が第１のしきい値の値より小さければ、最も古い要求の待ち時間を増大することなくより新しい要求がサービスされ得るのでない限り、前記最も古い要求にサービスする第１のメモリ・アクセス・モードを用い、前記読み取りキュー中の待ち状態要求の前記数が前記第１のしきい値の値以上かつ第２のしきい値の値未満であれば、１つ以上のより新しい要求にサービスすることによりメモリ・バス上の１つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記１つ以上のより新しい要求にサービスすることにより、前記最も古い要求の待ち時間を第１の量だけ延長させる第２のメモリ・アクセス・モードを用い、前記読み取りキュー中の待ち状態要求の前記数が前記第２のしきい値よりも大きい第３のしきい値の値以上であれば、１つ以上のより新しい要求にサービスすることによりメモリ・バス上の１つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記１つ以上のより新しい要求にサービスすることにより、前記最も古い要求の待ち時間を前記第１の量より大きい第２の量だけ延長させる第３のメモリ・アクセス・モードを用いる、
コンピュータ・システム。
【請求項１１】
前記第３のメモリ・アクセス・モードにおける前記メモリ・コントローラは、推測的要求にサービスすることにより非推測的要求の待ち時間が増大させられるのであれば、推的要求にサービスしないように構成されている、請求項１０に記載のコンピュータ・システム。
【請求項１２】
前記第１、第２および第３のしきい値が、プログラム可能となるように構成される、請求項１０に記載のコンピュータ・システム。
【請求項１３】
前記第１、第２および第３のしきい値が、実配線値により設定される、請求項１０に記載のコンピュータ・システム。
【請求項１４】
前記メモリ・コントローラは、前記プロセッサがデータについての要求を発行した前記順序で、前記データを前記プロセッサに返すように構成される、請求項１０に記載のコンピュータ・システム。
【請求項１５】
コンピュータ・システムにおいて読み取り要求にサービスする方法であって、
プロセッサにより発行された読み取り要求を読み取りキュー中に受信するステップと
メモリ・アクセス・モードを、３つ以上のメモリ・アクセス・モードを有するメモリ・アクセス・モードのセットから、前記読み取りキュー中の待ち状態の要求の数の関数として決定するステップとを含み、
前記メモリ・アクセス・モードを決定する前記ステップが、
待ち状態の要求の前記数が第１のしきい値未満であれば、前記メモリ・アクセス・モードを第１のメモリ・アクセス・モードに設定するステップと、
待ち状態の要求の前記数が前記第１のしきい値以上かつ第２のしきい値未満であれば、前記メモリ・アクセス・モードを第２のメモリ・アクセス・モードに設定するステップ
、  待ち状態の要求の前記数が前記第２のしきい値以上であれば、前記メモリ・アクセス・モードを第３のメモリ・アクセス・モードに設定するステップとをさらに含み、
前記第１のメモリ・アクセス・モードでは、最も古い要求がより新しい要求によって決して遅延されないようにメモリ・チップへの読み取りを発行することにより、前記読み取りキュー中の要求がサービスされ、
第２のメモリ・アクセス・モードでは、１つ以上のより新しい要求にサービスすることによりメモリ・バス上の１つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記１つ以上のより新しい要求にサービスすることにより、前記最も古い要求が第１の量だけ遅延され、
第３のメモリ・アクセス・モードでは、１つ以上のより新しい要求にサービスすることにより前記メモリ・バス上の１つ以上のデッド・サイクルが除去されるときはいつも、前記最も古い要求にサービスする前に、前記１つ以上のより新しい要求にサービスすることにより、前記最も古い要求が前記第１の量より大きい第２の量だけ遅延される、
前記方法。
【請求項１６】
前記第３のメモリ・アクセス・モードでは、推測的要求にサービスすることにより非推測的要求の待ち時間を遅延させるのであれば、推測的要求はサービスされない、請求項１５に記載の方法。
【発明の詳細な説明】
【関連出願への相互参照】
【０００１】
本出願は、「Memory Controller ReadQueue Dynamic Optimization of Command Selection」と題された２００７年７月１０日提出の米国特許出願第１１／７７５，４１１号、および「MemoryController Granular Read Queue Dynamic Optimization of Command Selection」と題された２００７年７月１０日提出の米国特許出願第１１／７７５，４５９号に基づいている。
【技術分野】
【０００２】
本発明は、コンピュータ・システムにおけるメモリ・コントローラに関する。より具体的には、本発明は、メモリ・フェッチ（memory fetch）が行われる順序を制御することに関する。
【背景技術】
【０００３】
最新のコンピュータ・システムは、１つ以上のプロセッサからの高いスループットを達成するために、メモリ中に格納されたデータへの迅速なアクセスを必要とする１つ以上のプロセッサを含む。コンピュータ・システムは一般に、プロセッサとメモリと間にメモリ・コントローラを有する。要求は、プロセッサ・バス上を送られ、メモリ・コントローラ中の読み取りキュー（read queue）に送られて、待ち行列に並べられる。メモリ・コントローラは、メモリへの読み取りアクセスをスケジュール設定し、メモリから読み取られたデータを待ち行列に並べ、プロセッサへ伝送するためのデータを伝送する。
【０００４】
読み取りキューが満杯になると、さらなる要求はメモリ・コントローラにより全く受け入れられない。この状況はスループットを低下させ、従って望ましくない。
【０００５】
従って、読み取りキューが満杯になるという出来事を低減または排除するための方法および装置が必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、読み取りキューが満杯になるというメモリ・コントローラにおける望ましくない状況の可能性を低減または回避することによりコンピュータ・システムにおけるメモリ・アクセスを改善するための方法および装置を提供する。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、データが要求された順序と同じ順序でデータがメモリから返されることを要求するコンピュータ・システムにおいて特に有利である。本発明の実施形態は、メモリ・チップからデータを読み取った後、メモリ・チップ中のバンクを開いたままにしておくのではなく、バンクを閉じるコンピュータ・システムにおいても特に有利である。
【０００８】
１つの実施形態において、プロセッサは、メモリからのデータについての要求を発行する。メモリは、第１のメモリ・チップおよび第２のメモリ・チップを含み、各メモリ・チップは複数のバンクを有する。第１のメモリ・チップからの連続した読み取りは、メモリ・バス上でのデッド・サイクルを必要としない。第２のメモリ・チップからの連続した読み取りは、メモリ・バス上でのデッド・サイクルを必要としない。第２のメモリ・チップからの読み取りが続く第１のメモリ・チップからの読み取りは、メモリ・バス上でのデッド・サイクルを必要とする。要求のための最低待ち時間は、プロセッサにより発行された順序で要求がサービスされる場合に生じ、読み取りキューが比較的満杯になるまで、または読み取りキューが要求の第１のしきい値に満たされるまで、基本設定にされる。読み取りキューが比較的満杯になると、または読み取りキューが粒度ベースで徐々に満杯になるにつれ、第１のメモリ・チップまたは第２のメモリ・チップへの読み取りシーケンスが識別され、メモリ・バス上のデッド・サイクルを低減または除去するために順不同でサービスされる。
【０００９】
１つの方法実施形態において、プロセッサにより発行された読み取り要求を読み取りキュー中に受け入れる第１のステップ、および読み取りキュー中の待ち状態の要求の数に基づいて、メモリ・アクセス・モードを決定する、特に３つ以上のメモリ・モードのセットからメモリ・アクセス・モードを決定するステップを含む方法が記載される。
【発明を実施するための最良の形態】
【００１０】
好ましい実施形態の以下の詳細な説明において、添付図面が参照され、添付図面は本明細書の一部を成し、添付図面の中では、本発明が実施され得る特定の実施形態が例示的に示される。他の実施形態が利用でき、構造的変更が本発明の範囲を逸脱することなく行えることが理解されるべきである。
【００１１】
イン・オーダー・モード（In-Order mode）（すなわち、データが、要求された順序と同じ順序で返される）で動作するプロセッサを備えるコンピュータ・システムにおいて、メモリ・コントローラが、より新しい読み取り要求が最も古い読み取り要求の待ち時間に影響しない場合に限り、より新しい読み取り要求を選択して、最も古い読み取り要求をより新しい読み取り要求に対して優先させることは非常に有利である。もしデータがメモリ・チップから順不同で取り出されると、プロセッサ・バスは、最も古いデータがメモリから取り出されるのを待たなければならず、それによってプロセッサ・バスを機能停止（stall）させる。しかしながら、この方式は、最適化されたメモリ・バス・スループットという結果にはならず、さらにメモリ・バス・スループットが最適化されないので、読み取りキューは満杯になることがあり、コンピュータ・システムがより多くの要求を発行することを妨げる。メモリ・バス上のスループットの最適化は、メモリ・コントローラから順不同でデータを受信するように構成されたプロセッサについてさえも有利である。
【００１２】
本発明は、コンピュータ・システムにおいて満杯になるメモリ・コントローラ中の読み取りキューの発生を低減または排除する方法および装置の実施形態を提供する。
【００１３】
１つの実施形態において、メモリ・バス上のメモリへのアクセスの２つのメモリ・アクセス・モードが実施される。低待ち時間モードは、メモリ・コントローラが読み取り要求を受信した時から、そのデータが要求プロセッサに送られる時までの最小時間間隔を提供する。高帯域幅モードは、メモリ・バス上のデータ・スループットを最大化する。メモリ・コントローラは低待ち時間モードで開始し、読み取りキュー中の待ち状態の要求の数が、その読み取りキューが満杯になりつつあることを示す第１のしきい値に達するまで低待ち時間モードで動作し続ける。第１のしきい値に到達すると、メモリ要求により迅速にサービスするために、メモリ・コントローラは高帯域幅モードに切り替わるが、いくつかの要求について、メモリ・コントローラによるそれらの要求の受信からそれらの要求のためのデータのプロセスへの返送までの間隔を増大するという犠牲を払う。読み取りキュー中の待ち状態の要求の数が、第１のしきい値よりも低い第２のしきい値まで下落すると、メモリ・コントローラは、低待ち時間モードに復帰する。
【００１４】
また、１つの実施形態において、メモリ・バス上のメモリへのアクセスの３つ以上のメモリ・アクセス・モードが実施される。第１のメモリ・アクセス・モードは、メモリ・コントローラが読み取り要求を受信した時から、そのデータが要求プロセッサに送られる時までの最小時間間隔を提供する。第２のメモリ・アクセス・モードは、もしそうすることによりメモリ・バス上の１つ以上のデッド・サイクルが除去されるのであれば、より古い要求にサービスする前に１つ以上のより新しい要求にサービスすることにより、メモリ・バス上のデータ・スループットを増大する。第３のメモリ・アクセス・モードは、高帯域幅モードであり、もし最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上のデッド・サイクルが除去されるのであれば、第２のメモリ・アクセス・モードにおいて行われるよりも、最も古い要求のまえにより多くのより新しい要求にサービスすることを優先して、最も古い要求がさらに遅延されることを可能にすることにより、第２のメモリ・アクセス・モードが行うよりもメモリ・バス上のスループットを増大することにより、メモリ・バス上のスループットを最大化する。
【００１５】
ここで図１を参照すると、コンピュータ・システム１００が、ブロック図形状で示してある。理解を容易にするため、本発明の実施形態を理解するのに必要なコンピュータ・システム１００の要素のみが示してある。コンピュータ・システムが多くの他の要素（例えば、ディスク、ネットワーク通信施設等）を含むことが理解される。
【００１６】
コンピュータ・システム１００は、メモリからのデータについての要求を発行するように構成されたプロセッサ１０２を含む。
【００１７】
プロセッサ１０２は、プロセッサ・バス１０５によってメモリ・コントローラ１０６に結合されている。双方向バス、一方向バス、アドレス／制御部分がデータと共に時分割多重化されるバス、別個のアドレス／制御部分を有するバス等のような、プロセッサ・バスの多くの実施形態が知られている。様々な実装において、メモリ・コントローラ１０６およびプロセッサ・バス１０５が、プロセッサ１０２と同じ半導体チップ上に物理的に設置されることも理解される。
【００１８】
メモリ・コントローラ１０６は、メモリ・バス１０７によって複数のメモリ・チップ１１０（図１において、インスタンス１１０ａ〜１１０ｄとして示される）に結合されている。メモリ・コントローラ１０６は、後に説明される制御ロジック１２２をさらに含む。コンピュータ・システムの実装によっては、バッファ・チップがメモリ・コントローラ１０６とメモリ・チップ１１０と間に挿入されることが理解される。メモリ・コントローラ１０６は後により詳細に説明される。
【００１９】
図２はメモリ・チップ１１０のブロック図を示す。メモリ・チップ１１０からメモリ・バス１０７上へのデータ読み取りを駆動するようにドライバ１２６が構成される。メモリ・チップ１１０が、メモリ・バス１０７からデータまたはアドレス／コマンドあるいはその両方を受信するように構成された受信機１２４をさらに含むことが理解される。メモリ・チップ１１０は、バンク０〜バンク３としてされる複数のバンク１１１（１１１ａ、１１１ｂ、１１１ｃ、および１１１ｄと呼ばれるインスタンス）をさらに含む。４つのバンク１１１が示されているが、より多いまたはより少ないバンク１１１が考えられる。
【００２０】
図３は、メモリ・バス１０７と接続された２つのメモリ・チップ１１０（１１０ａおよび１１０ｂ）を示す。メモリ・チップ１１０ａは、バンク０〜３  １１１ａ〜１１１ｄ、マルチプレクサ１２５ａ、およびドライバ１２６ａを含んでいる。メモリ・チップ１１０ｂは、バンク０〜３  １１１ａ〜１１１ｄ、マルチプレクサ１２５ｂ、およびドライバ１２６ｂを含んでいる。ドライバ１２６ａが第１のサイクルにおいてメモリ・バス１０７上の「１」（例えば、高電圧）を駆動し、ドライバ１２６ｂが、直後の第２のサイクルにおいてメモリ・バス１０７上の「０」（例えば、低電圧）を駆動すると、ドライバ１２６ａおよび１２６ｂにおける、瞬間的ではない切り換え遷移時間、またはメモリ・チップ１１０ａおよび１１０ｂの間の通常のタイミング・スキュー（timing skew）あるいはそれら両方のために、いくらかのシュートスルー電流（shoot-through current）が生じる。シュートスルー電流１２７は、この図においてドライバ１２６ａおよび１２６ｂ双方を通り抜ける電流である。そのようなタイミング・スキューは、プロセス変動、メモリ・チップ１１０ａおよび１１０ｂが取り付けされるプリント配線カード上の配線長さの差等に起因することがある。シュートスルー電流１２７は、望ましくない。第１に、シュートスルー電流１２７は、メモリ・チップ１１０ａおよび１１０ｂの電力消費量を増大させる。第２に、シュートスルー電流１２７は、メモリ・チップ１１０ａおよび１１０ｂにより用いられる電源において望ましくない電圧降下を引き超すことがある。第３に、シュートスルー電流１２７は、短時間、ドライバ１２６ａおよび１２６ｂ双方が部分的にオン（導電性）になり、不確定で信頼できないロジック・レベルがメモリ・バス１０７上で駆動されるという結果になることを意味する。これらの理由から、ギャップ、または「デッド・サイクル（deadcycle）」が、ドライバ１２６ａがメモリ・バス１０７を駆動する第１のサイクルとドライバ１２６ｂがメモリ・バス１０７を駆動する第２のサイクルとの間に配置されることが必要である。
【００２１】
図４は、メモリ・バス１０７の許容される駆動をさらに例示する。４つの連続したデータ読み取りがメモリ・チップ１１０ａから行われ、第１の読み取りはサイクル０の間にバンク０ａから、第２の読み取りはサイクル１においてバンク１ａから、第３の読み取りはサイクル３においてバンク２ａから、そして第４の読み取りはサイクル３においてバンク３ａから行われる。サイクル３におけるバンク３ａからの読み取りに続いて、図３に関して説明されたシュートスルー電流１２７を回避するためにギャップ、または「デッド・サイクル」がサイクル４において必要とされる。サイクル５において、データはメモリ・チップ１１０ｂから読み取られる（任意のバンク）。次の読み取りが再びメモリ・チップ１１０ａからなので、サイクル６において別のギャップが必要とされ、サイクル７においてメモリ・チップ１１０ａ上のメモリ・バンクからの読み取りが続く。連続した読み取りが同じメモリ・チップ１１０から、異なるメモリ・チップ１１０からデータを読み取る前に可能な程度行われる場合に、メモリ・チップ１１０からのデータの伝送が最大化されることが上記の説明から理解されるであろう。
【００２２】
最新のメモリ・チップは、特定のメモリ・チップからの連続した読み取りの数に関するさらなる制約を有することがある、例えば、特定のメモリ・チップ製品は、４つの連続した読み取りに限定されることがある。特定のバンクは連続的に読み取ることができない。なぜならば、その特定のバンクが再び読み取られるようになる前にそのバンクを閉じるために時間が必要とされるからである。例えば、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）の場合、バンクから読み取られたデータは、ストレージ・セル中に再書き込みされなければならず、ビット線は、所定の電圧まで駆動されなければならない。多くのメモリ・チップにおいて、もしバンクが開いたままにされれば、同じバンクへの多くの連続した読み取りが実行され得ることが理解される。本発明の実施形態は、読み取り要求へのサービスが、バンクを開き、データをバンクから読み取り、バンクを閉じるメモリ・チップの使用に向けられている。
【００２３】
多くの最新のメモリ・チップ１１０は、読み取りに応答してメモリ・バス１０７上で複数ビートのデータを伝送する。例えば、特定のメモリ・バンクからの読み取りは、１６ビットのデータを提供するが、特定のメモリ・チップ１１０は、８つのドライバ１２６を物理的に有することがある（図３のドライバ１２６を参照）。そのような実施において、２ビートのデータが読み取りに応答してメモリ・バス１０７上で駆動される（すなわち、８つのドライバは、第１のビートにおいてメモリ・バス１０７上で８ビットの第１のグループを駆動し、８つのドライバは、第２のビートにおいてメモリ・バス１０７上で８ビットの第２のグループを駆動する）。図４を再度参照すると、そのような実施において、データが駆動されるサイクル（すなわち、サイクル０、１、２、３、５、および７）の各々は、メモリ・バス１０７上に２つのバス駆動サイクルを含む。サイクル４および６は、「ギャップ」または「デッド・サイクル」である。特定のメモリ・チップ１１０の仕様に応じて、サイクル４および６は、持続して１つのバス駆動サイクルまたは２つのバス駆動サイクルであり得る。
【００２４】
図５は、メモリ・コントローラ１０６をより詳細に示す。メモリ・コントローラ１０６は、プロセッサ１０２からの要求１１５をバッファする読み取りキュー１２１を含んでいる。読み取りキュー１２１は、“ｎ"個の要求１１５（すなわち、要求０〜要求ｎ−１）をバッファする能力を有することが示してある。読み取りキュー１２１中の各要求１１５は、アドレス・フィールド１１６、要求１１５が受け取られた順序を常時監視する配列情報フィールド１１７および特定の要求が推論的でありかつプロセッサ１０２により実際に必要とされるまたは必要とされないことがあり得ることを示す推論的要求フィールド１１８を含み得る。プロセッサ１０２は、いくつかの実施形態において、もしプロセッサ１０２が推論的要求中のデータが必要とされ得ると予測すれば、推論的要求を作成するように構成される。１つの実施形態におけるアドレス・フィールド１１６は、どのメモリ・チップ１１０およびどのバンク１１１が要求によりアドレスされるかに関する情報を含む。別の実施形態において、制御ロジック１２２は、どのメモリ・チップ１１０およびどのバンク１１１がアドレス・フィールド１１６に基づいて読み取られるべきかを決定するように構成される。１つの実施形態において、読み取りキュー１２１は、配列情報フィールド１１７を有する代わりに、要求が受け取られた順序を読み取りキュー１２１中の位置により暗黙的に維持する。
【００２５】
メモリ・コントローラ１０６は制御ロジック１２２を含む。制御ロジック１２２は、読み取りキュー１２１中のどの要求１１５が特定の時にメモリ・バス１０７上で駆動されるかを制御する。制御ロジック１２２は、読み取りキュー１２１中に待ち状態の要求がいくつあるかを示す要求カウント１３２を含む。例えば、もし読み取りキュー１２１に待ち状態の要求が全くなければ、要求カウント１３２は、０の値を有するであろう。もし読み取りキュー１２１が完全に満杯であり、プロセッサ１０２からの要求をそれ以上受け入れることができなければ、要求カウント１３２は、「ｎ」の値を有する（図５の例。要求カウント１３２は、待ち状態の要求が全くない場合を説明するために、「ｎ−１」ではなく、「ｎ」の最大値を有さなければならないことに留意されたい）。制御ロジック１２２は、要求カウント１３２の現在値に対して比較される複数のしきい値をさらに含むしきい値１３０を含み、要求カウント１３２の現在値に対する１つ以上のしきい値の値の比較は、メモリ・チップ１１０への要求のサービスの順序で制御するために用いられる。
【００２６】
第１の実施形態において、しきい値１３０は、プログラム可能である。例えば、しきい値１３０は、いくつかのレジスタを含むことができ、各レジスタは、各レジスタに書き込みまたは走査されるしきい値を有するように構成される。プログラム可能は、メモリ・コントローラ１０６を含むチップが製造されるまたはその後に電気的にプログラムされる時のヒューズまたはアンチヒューズのいずれかによるプログラミングも含む。第２の実施形態において、しきい値１３０は単に、メモリ・コントローラ１０６に「実配線（hard wired）」され得る。
【００２７】
メモリ・コントローラ１０６は、返送キュー（returnqueue）１２３も含み得る。データが要求されたのと同じ順序でそのデータが返送されることを要求するプロセッサ１０２の実施例において、返送キュー１２３は、プロセッサ・バス１０５をプロセッサ１０２により要求された順序でプロセッサに送られるデータをバッファする。すなわち、もし制御ロジック１２２が、（プロセッサ１０２により送られた順序に関して）順不動で要求にサービスすれば（メモリ・チップ１１０に対して読み取りを行えば）、制御ロジック１２２は、データをバッファし、要求された順序でデータをプロセッサ１０２に返送するために、返送キュー１２３を従来のやり方で管理する。
【００２８】
プロセッサ１０２が、メモリ・コントローラ１０６への書き込み要求も行うことが理解される。メモリ・コントローラ１０６は、書き込みキュー（図示せず）も有する。最新のコンピュータ・システムは、プロセッサ１２０がデータを迅速に取得し、さらに読み取り要求が全くない場合、読み取り要求が推測的読み取りについてのものである場合、あるいはいくつかの実施形態に置いて、書き込みキューがほぼ満杯である場合に、書き込みキューが満足させられるように、書き込みより読み取りを優先するメモリ・コントローラ１０６を有する。本発明の実施形態は、読み取り要求を扱うものであり、従って、書き込み要求、書き込みキュー、書き込み要求へのサービスの議論は、本明細書中で記載されない。
【００２９】
図６は、制御ロジック１２２の一部の第１の実施形態を示す。図６に示される実施形態は、上記の要求カウント１３２ならびに２つのしきい値、１３０ａおよび１３０ｂを含む。第１の比較１３３ａは、要求カウント１３２を「下限しきい値」１３０ａと比較する。第２の比較１３３ｂは、要求カウント１３２を「上限しきい値」１３０ｂと比較する。比較１３３ａは、ラッチ１３５の再設定入力に結合されている。比較１３３ｂは、ラッチ１３５の設定入力に結合されている。コンピュータ・システム１００が初期化される場合、要求カウント１３２は０に初期化される（すなわち、待ち状態の要求が皆無）。プロセッサ１０２がプロセッサ・バス１０５上で要求を送ると、読み取りキュー１２１は、要求を列に並ばせ始め、要求カウント１３２は、要求が読み取りキュー１２１に入ると増分され、読み取りキュー１２１からの要求がサービスされると減分される。制御ロジック１２２は、図６の実施形態において、ラッチ１３５が再設定される時のメモリ・アクセス・モードである低待ち時間モードで開始する。低待ち時間モードにおいて、制御ロジック１２２は、待ち時間を最小化するように要求にサービスする。すなわち、最も古い要求の待ち時間に影響することなくより新しい要求にサービスできるのでない限り、最も古い要求が最初に処理される。もし最も古い要求が、特定のメモリ・チップ１１０の特定のバンクへの以前の要求を待っているのであれば、最も古い要求の待ち時間に影響することなく、より新しい要求にサービスすることが可能であろう。
【００３０】
しかしながら、待ち時間を最小化するように要求にサービスすることは、異なるメモリ・チップ１１０への読み取りを行うことを要求することがよくあり、これは、メモリ・バス１０７上の多くのギャップ（デッド・サイクル）という結果になり、従って、メモリ・バス１０７上のデータ・スループットを減少させる。メモリ・コントローラ１０６は遅れて開始すること、すなわち、プロセッサ１０２が要求を送るのと同じ早さで要求にサービスしないことがある。これが生じると、読み取りキュー１２１は満たされ始める。読み取りキュー１２１が満杯になると、さらなる要求は全く受け入れられなくなり、プロセッサ１０２は、読み取りキュー１２１がより多くの要求のための余地を再度有するまで、それ以上の要求を伝送することができない。
【００３１】
待ち時間の最小化を犠牲にして、メモリ・バス１０７上のギャップを排除することによりスループットを促進することは、満杯読み取りキュー１２１の条件を低減または排除し得る。要求カウント１３２中の値がしきい値１３０ｂ（「上限しきい値」）の値を超えると、比較１３３ｂは、ラッチ１３５を「１」に設定して、メモリ・アクセス・モード１３６を、高帯域幅モードである「１」に変更する。メモリ・アクセス・モード１３６が「１」であることに応答して、制御ロジック１２２は、メモリ・バス１０７上のギャップを最小化するようなやり方で要求１１５にサービスする。制御ロジック１２２は、単一のメモリ１１０上の異なるバンクへの連続したアクセスを行う要求をできるだけ選択およびサービスすることによってこれを行い、それによって、メモリ・バス１０７上のギャップを排除する。さらなる例によってこれを例示するため、表１は、００〜１５まで番号を付けられた、読み取りキュー中の１６の要求を示しており、要求０は最も古い要求であり、要求１５は最も新しい要求である。
【００３２】
【表１】
0005340658.tif 000002
【００３３】
メモリ・コントローラ１２２は、メモリ・バス１０７上のスループットを最大化する「高帯域幅」モードにおいて、メモリ・バス１０７上の各サイクルについて、表１の読み取りキュー要求番号を与え、メモリ・バス１０７上のギャップ（デッド・サイクル）について「−」を与えることにより、要求にアクセスする。４つのメモリ・チップ１１０が仮定されており（０〜３）、各メモリ・チップ１１０は、４つのバンク１１１（０〜３）を有する。３つのギャップを含む１９のサイクルのみがメモリ・バス１０７上で必要とされる。
00 13 14 15 - 01 10 11 12 - 02 07 08 09 - 03 04 05 06
【００３４】
上記の要求サービスのメモリ・チップ番号およびバンク番号が、選択されたメモリ・チップ上のメモリ・チップおよびバンクを表示するサイクルごとの番号と共に以下に示される。例えば、「００」は、メモリ・チップ０、バンク０を意味し、「２３」は、メモリ・チップ２、バンク３を意味する。
00 01 02 03 - 10 11 12 13 - 20 21 22 23 - 30 31 32 33
【００３５】
表１の読み取りキュー状態、（最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでなければ、要求が「最も古い要求が最初に（oldest request first）サービスされる」）「低待ち時間」モードのメモリ・コントローラ１０６を再度用い、以下は、メモリ・バス１０７上の要求番号サービスを示す。
00 - 01 - 02 - 03 04 05 06 - 07 08 09 - 10 11 12 -13 14 15
【００３６】
メモリ・バス１０７上で２２のサイクルが必要とされる。この「低待ち時間」モードにおいてメモリ・バス１０７上で６つのギャップが必要とされ、メモリ・バス１０７上のいくらかの潜在的な帯域幅が無駄になるが、要求に関する最小待ち時間が保証される。
【００３７】
以下は、「低待ち時間モード」の場合のメモリ・バス１０７上の各サイクルについてのチップ番号およびバンク番号を示す。
00 - 10 - 20 - 30 31 32 33 - 21 22 23 - 11 12 13- 01 02 03
【００３８】
異なるメモリ・チップ１１０への連続した読み取りを行うことは、メモリ・バス１０７上のスループットに大きく影響し、同じメモリ・チップ１１０上の異なるバンク１１１からの読み取りへの要求サービスを並べ替える能力は、メモリ・バス１０７上のスループットを向上することが上記の例から明らかである。
【００３９】
図７は、読み取りキュー１２１がどのくらい満杯になっているかに応じて要求がどのようにサービスされるかにおける粒度（granularity）を提供する制御ロジック１２２の第２の実施形態を示す。図７における制御ロジック１２２は要求カウント１３２を含み、これは、待ち状態の要求が読み取りキュー１２１中にいくつあるかを示す。４つのしきい値１３０、すなわち、「しきい値Ａ」１３０ａ、「しきい値Ｂ」１３０ｂ、「しきい値Ｃ」１３０ｃ、および「しきい値Ｄ」１３０ｄが図７に示してある。要求カウント１３２における現在の値が、しきい値１３０の各々と、比較１３３ａ、１３３ｂ、１３３ｃおよび１３３ｄを用いて比較される。例えば、１６の要求を格納できる読み取りキュー１２１を仮定して、しきい値Ａ１３０ａが８に設定され、しきい値Ｂ１３０ｂが１０に設定され、しきい値Ｃ１３０ｃが１２に設定され、しきい値Ｄ１３０ｄが１４にセットされると仮定する。読み取りキュー１２１がかなり空くと（８未満の要求）、上述の「低待ち時間」モードが実施される。すなわち、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、最も古い要求が最初にサービスされる。
【００４０】
要求カウント１３２中の値が、比較されているしきい値１３０と等しいかそれより大きければ、図７の比較１３３は各々「１」を出力する。従って図７の比較１３３は、「温度計コード（thermometer code）」を生成する。すなわち、要求カウント１３２中の値が増大するにつれて、モード１３６が「００００」から「０００１」、「００１１」、「０１１１」、そして最終的に「１１１１」へ移動する。比較１３３の他の実施形態が、例えば、図１４に描かれるように考えられ、図１４に関連して論じられる。
【００４１】
読み取りキュー１２１が満たされ始め、８つの待ち状態の要求が読み取りキュー１２１中にあるので、要求カウント１３２中の値は、しきい値Ａ１３０ａ中の値に等しくなり、比較１３３ａは、メモリ・アクセス・モード・ビット１３６ａを作動させる。（メモリ・アクセス・モード１３６＝「０００１」であり、メモリ・アクセス・モード・ビット１３６ａは、最下位ビットである）。メモリ・アクセス・モード１３６＝「０００１」に応答して、もしより古い要求から取り出されるより新しい要求がメモリ・バス１０７上のギャップの除去という結果になるのであれば、制御ロジック１２２は、最も古い要求へのサービスを犠牲にして、より新しい要求がサービスされることを可能にする。
【００４２】
読み取りキュー１２１が満たされ続け、１０の待ち状態要求を有すれば、要求カウント１３２の値（１０）は、しきい値Ｂにおける値と等しく、比較１３３ｂは、メモリ・アクセス・モード１３６ｂを作動させ、メモリ・アクセス・モード１３６を「００１１」にする。制御ロジック１２２は、メモリ・アクセス・モード１３６＝「００１１」に応答して、１または２つのより新しい要求が、もしそうすることによってメモリ・バス１０７上の１つ以上のギャップが排除されるのであれば、最も古い要求の前にサービスされることを可能にする。
【００４３】
読み取りキュー１２１がさらに満たされ、１２の待ち状態要求を有すると、要求カウント１３２の値（１２）は、しきい値Ｃ１３０ｃと等しく、比較１３３ｃは、メモリ・アクセス・モード１３６ｃを作動させ、メモリ・アクセス・モード１３６を「０１１１」にする。メモリ・アクセス・モード１３６＝「０１１１」に応答して、制御ロジック１２２は、もしそうすることによってメモリ・バス１０７上の１つ以上のギャップが排除されるのであれば、最も古い要求の前に、最高３つのより新しい要求がサービスされることを可能にする。
【００４４】
読み取りキュー１２１がなおいっそう満たされ、１４の待ち状態要求に達すると、要求カウント１３２の値（１４）は、しきい値Ｄ１３０ｄと等しく、比較１３３ｄは、メモリ・アクセス・モードビット１３６ｄを作動させ、メモリ・アクセス・モード１３６を「１１１１」にする。メモリ・アクセス・モード１３６＝「１１１１」に応答して、制御ロジック１２２は、図６における上限しきい値１３０ｂが超えられた時に関連して説明されたのと同様に、メモリ・バス１０７上のギャップを最小化する順序で、読み取りキュー１２１中の要求にサービスする。いくつかのプロセッサ１０２は、推測的読み取り要求を行う。要求に応答して読み取られるべきデータが必要とされるとプロセッサ１０２が予測する場合に、推測的読み取り要求が行われる。すべての推測的読み取りがプロセッサ１０２により必要とされるわけではない。１つの実施形態において、メモリ・アクセス・モード１３６＝「１１１１」である場合、もし非推測的要求がサービスされ得るのであれば、推測的な要求は制御ロジック１２２によりサービスされない。
【００４５】
本発明の実施形態は、方法としても表現され得る。図８は、方法２００の非常に高レベルの流れ図を示す。方法２００は、ステップ２０１から始まる。ステップ３００、２０３、４００、および２０５は、相互依存性を有する並行プロセスとして考えることができる。
【００４６】
方法３００は、図６において単一ビットとして示されるメモリ・アクセス・モード１３６、または図７において、図７に関連して上記で説明されたような粒度を提供する複数のビットとして示されるメモリ・アクセス・モード１３６のようなメモリ・アクセス・モードの管理を提供する。簡単に言えば、方法３００は、（要求カウント１３２（図６または図７のような）要求カウントの値を、（図６における下限しきい値１３０ａおよび上限しきい値１３０ｂ、または図７におけるしきい値１３０ａ、１３０ｂ、１３０ｃ、１３０ｄのような）１つ以上のしきい値と比較し、データについての要求がサービスされる順序を決定するために用い得るメモリ・アクセス・モードを決定する。
【００４７】
ステップ２０３は、メモリ・コントローラにより制御された複数のメモリ・チップ中に常駐するデータについて、プロセッサから要求を受信する。メモリ・コントローラは、その要求を読み取りキュー中に配置する。いくつかの実施形態において、メモリ・コントローラは、要求のアドレス値部分から、どのメモリ・チップおよびメモリ・チップ中のどのバンクが要求に応答して読み取られなければならないかを決定する。１つの実施形態において、メモリ・コントローラは、読み取りキュー中の位置により要求が受信された順序を追跡する。別の実施形態において、メモリ・コントローラは、要求がメモリ・コントローラにより受信された順序を決定するのに適した値を各要求に割り当てる。
【００４８】
ステップ４００は、メモリにアクセスし、読み取りキューからの要求が受信される順序を決定するためにステップ３００によって決定されるメモリ・アクセス・モードを用いて、読み取りキューからの要求にサービスする。
【００４９】
ステップ２０５は、メモリから読み取られたデータをバッファし、要求された順序でデータが返されることを要求するコンピュータ・システムにおいて、メモリ・コントローラによりプロセッサからデータが受信された順序で、データをプロセッサへ返す。
【００５０】
ステップ３００（図８）のより詳細な方法実施形態が図９に示してある。図９の方法３００は、図６において制御ロジック１２２として示されるものと同様な方法実施形態であり、低待ち時間モードか高帯域幅モードであるメモリ・アクセス・モードを生成する。方法３００は、ステップ３０２から始まる。ステップ３０４において、メモリ・アクセス・モードは低待ち時間に設定される。最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、低待ち時間モードは、ステップ４００（図８）において、読み取りキュー中の要求は、最も古い要求が最初にサービスされるべきであることを意味すると認識される。ステップ３０６において、読み取りキュー中の待ち状態の要求のカウントが、上限しきい値と比較される。もしそのカウントが上限しきい値を超えれば（同等または超過が考えられる）、制御はステップ３０８に渡され、そうでなければ、制御はステップ３０６に戻る。ステップ３０８において、メモリ・アクセス・モードは、高帯域幅モードに設定される。高帯域幅モードは、異なるメモリ・チップへの要求にサービスする前に単一のメモリ・チップの異なるバンクへの要求を行う順序で要求にサービスすることにより、ギャップをできるだけ排除することを意図している。ステップ３１０は、待ち状態要求の要求カウントを下限しきい値と比較し、下限しきい値は、上限しきい値より小さい。もし要求カウントが下限しきい値より小さくなければ、制御はステップ３１０に戻る。もし要求カウントが下限しきい値より小さければ、制御はステップ３０４に戻る。
【００５１】
方法３００は、プロセッサ、メモリ・コントローラ、およびメモリを含むコンピュータ・システムが動作している限り継続する。
【００５２】
図１０は、図６の制御ロジック１２２に対応する方法４００の実施形態の高レベル流れ図を示す。方法４００は、ステップ４０１から始まる。ステップ４０２において、メモリ・アクセス・モードの現在の状態（例えば、図６におけるメモリ・アクセス・モード１３６であり、上記の方法３００に関連してさらに説明される）が問い合わせされる。もしメモリ・アクセス・モードが低待ち時間であれば、制御はステップ４６０へ進み、制御ロジック１２０は、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、読み取りキュー中の最も古い要求が常にサービスされるように、メモリ・チップへの読み取りを発行する。もしステップ４０２が、メモリ・アクセス・モードが低待ち時間ではないと決定すれば、制御はステップ４８０へ進み、制御ロジック１２２（図６）は、メモリ・バス上のスループットが最大化されるように、メモリ・チップへの読み取りを発行する。前に説明されたように、これは、メモリ・チップからメモリ・コントローラへのデータ伝送においてギャップを有する必要を回避するために、そうすることが可能な場合に、同じメモリ・チップの異なるバンクへのものである読み取りキューからの要求に連続してサービスすることによって行われる。
【００５３】
図１１は、方法４００（図１０）のステップ４６０についてのさらなる詳細を提供する方法４６０を示す。方法４６０は、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでない限り、読み取りキュー中の最も古い要求が最初にサービスされる低待ち時間モードで要求にサービスする。
【００５４】
方法４６０は、ステップ４６２から始まる。ステップ４６３において、読み取りキュー中の最も古い要求が決定される。最も古い要求の決定は、読み取りキュー中の要求の物理的位置がその要求の古さであり、最も古い要求が、読み取りキュー中の最後の要素である実施形態において、最後の要素を選ぶことによりなされる。代わりに、読み取りキュー中の要求の古さを常時監視するためにポインタを用いることができる。別の選択肢は、要求の受信順序を示す値でメモリ・コントローラにより満たされ得るフィールドを要求に含めることである。
【００５５】
ステップ４６４において、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るかどうかを見るためのチェックがなされる。例えば、読み取りキュー中の最も古い要求は、前の要求によってアクセスされている特定のメモリ・チップ中の特定のバンクへのものであり得る。その特定のバンクを開き、その特定のバンクからデータを読み取り、その特定のバンクを閉じるために、かなりの時間が必要とされる。最も古い要求のために特定のメモリ・チップ中の特定のバンクがアクセスされ得る前に、同じメモリ・チップ中の異なるバンクまたは異なるメモリ・チップへのより新しい要求が開始され、メモリ・コントローラにデータを返すかもしれない。もし最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのであれば、より新しい要求は、ステップ４６６においてサービスされる。ステップ４６６は、制御をステップ４６４へ戻す。さもなければ、最も古い要求は、ステップ４６８においてサービスされる。ステップ４６８は、制御をステップ４６３へ戻す。
【００５６】
図１２は、図１０のステップ４８０における付加的なステップの実施形態を示す。ステップ４８０は、図５のメモリ・バス１０７のようなメモリ・バス上のスループットを最大化しようと努める。
【００５７】
ステップ４８１は、ステップ４８０の付加的なステップを開始する。ステップ４８２において、読み取りキュー中の要求は、特定のメモリ・チップ中の異なるバンクから連続的に読み取られ得る一連の要求があるかどうかを見るために検査される。メモリ制御は、どのメモリ・チップおよびメモリ・チップ中のどのバンクに、各要求がアクセスする必要があるかを知る。同じメモリ・チップ中の異なるバンクに連続してアクセスすることにより、メモリ・バス上のギャップ（「デッド・サイクル」）の必要が排除され、従って、メモリ・バス上のスループットが最大化される。もしそのような一連の要求が存在すれば、制御はステップ４８４への移行し、その一連の要求がサービスされる。ステップ４８４は、制御をステップ４８２へ返す。もしそのような一連の要求が存在しなければ、読み取りキュー中の最も古い要求がサービスされる。
【００５８】
図１３は、要求にサービスすることの方法実施形態を説明する。要求にサービスすることは以前いろいろな時に論じられており、メモリ・チップからデータを読み取ることを意味する。方法４９０は、ステップ４９１から始まる。ステップ４９２において、特定のメモリ・チップ中の特定のバンクが開かれ、バンク中の特定の位置についてアドレスがメモリ・チップにより受信される。ステップ４９３において、データは特定のバンクから読まれる。典型的なＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）チップにおいて、読み取りは、選択されたビット線が、「０」（低電圧）がそのビット線に結合されたキャパシタ中に格納されていたことを示すのに十分なだけ放電されたかどうかを検出することを意味する。もしそうであれば、「０」はラッチ・アップ（latch up）され、その後メモリ・バス上で駆動される。もしそうでなければ、「１」がラッチ・アップされ、その後メモリ・バス上で駆動される。ステップ４９４において、特定のバンクを閉じ異なるワード線における新しい読み取りに応答してビット線を再充電する必要なくそのバンクが迅速に再アクセスされるように、そのバンクが閉じられる（読み取られたデータは再書き込みされ、ビット線は再充填される）。いくつかのコンピュータ・システムは、ページをできる限り開いたままにしておこうと試みることが理解される。これは、読み取りの間、ワード線が多くのビット線を作動させ、そのワード線のすべてが特定の要求のために必要とされるわけではないので、行われる。もし付加的な要求が、読み取り中にラッチ・アップされたビットについてなされるが、メモリ・バスに駆動するために選択されなければ、そのようなプロトコルは有利である。例えば、ワード線の起動が１２８本のビット線の読み取りを引き起こし、ビット線のうちの８本が特定の要求によって用いられると仮定しよう。さらに、特定のプログラムがデータに直線的にアクセスしていると仮定しよう。すなわち、一度に８ビットを「またぎ越す（striding）」。そのような場合、バンクを開いたままにしておくことが有利である。しかしながら、もしメモリ・アクセスが比較的ランダムであれば、メモリ・チップ中のバンクを、そのバンク中の異なるワード線を作動させる前に閉じる必要が頻繁にあるため、性能は損なわれるであろう。
【００５９】
図１４は、図７に示されるより粒状の制御ロジック１２２により実行されるやり方に対応するやり方でステップ３００および４００（図８）の実施形態を組み入れる方法５００を示す。方法５００において、読み取りキューが満杯になるにつれてメモリ・バス上のスループットを増大させるために、次第に積極的な試みがなされる。
【００６０】
方法５００は、ステップ５０１から始まる。ステップ５０２、５０４、５０６、５０８および５１０は、「ケース文（case format）」形式で示してある。すなわち、これらのステップの各々は、読み取りキューが特定の時点でどれほど満たされているかを示す「要求カウント」（図７における要求カウント１３２に関する以前の議論を参照されたい）を比較する。これらのステップの各々は、要求カウントの値を１つ以上のしきい値と比較し、比較が「真」であるステップは、方法４００中のステップを実行させる信号を作動させる。図１４に示される「比較」が、図７における比較と異なり、これによって「温度計コード」メモリ・アクセス・モード１３６が生成されることが注目される。図１４の比較は、要求カウントを、示されるような１つ以上のしきい値と比較する。
【００６１】
ステップ５０２は、要求カウントの値を「しきい値Ａ」（図７の「しきい値Ａ１３０ａ」を参照）と比較する。しきい値Ａは、比較的低いしきい値、例えば、１６の要求を保持できる読み取りキューについて８の値、であることを意図している。もしステップ５０２が、要求カウントの値が「しきい値Ａ」の値より小さいと決定すれば、ステップ５０３が作動される。ステップ５０３は、最も古い要求の待ち時間に影響することなくより新しい要求がサービスされ得るのでなければ、読み取りキュー中の要求が、最も古い要求が最初にサービスされるようにする。
【００６２】
ステップ５０４は、要求カウントの値を「しきい値Ａ」および「しきい値Ｂ」の値と比較する。もし要求カウントが、「しきい値Ａ」以上かつ「しきい値Ｂ」未満であれば、ステップ５０５が作動される。ステップ５０５において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上のギャップ（「デッド・サイクル」）が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にして１つのより新しい要求がサービスされることを可能にする。
【００６３】
ステップ５０６は、要求カウントの値を「しきい値Ｂ」および「しきい値Ｃ」と比較する。もし要求カウントが、「しきい値Ｂ」以上かつ「しきい値Ｃ」未満であれば、ステップ５０７が作動される。ステップ５０７において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上の１つ以上のギャップ（「デッド・サイクル」）が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にして１つまたは２つのより新しい要求がサービスされることを可能にする。
【００６４】
ステップ５０８は、要求カウントの値を「しきい値Ｃ」および「しきい値Ｄ」と比較する。もし要求カウントが、「しきい値Ｃ」以上かつ「しきい値Ｄ」未満であれば、ステップ５０９が作動される。ステップ５０９において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上の１つ以上のギャップ（「デッド・サイクル」）が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にして１つ、２つ、または３つのより新しい要求がサービスされることを可能にする。
【００６５】
ステップ５１０は、要求カウントの値を「しきい値Ｄ」と比較する。もし要求カウントが「しきい値Ｄ」以上であれば、ステップ５１１が起動される。ステップ５１１において、最も古い要求の前により新しい要求にサービスすることによりメモリ・バス上の１つ以上のギャップ（「デッド・サイクル」）が排除されれば、メモリ・コントローラは、最も古い要求の待ち時間を犠牲にしてより新しい要求がサービスされることを可能にする。加えて、もしプロセッサが、推測的要求を行うように構成されていれば、ステップ５１１は、もし非推測的要求がサービスされ得るのであれば、推測的要求にサービスしない。
【図面の簡単な説明】
【００６６】
【図１】コンピュータ・システムのブロック図を示す。
【図２】図１のコンピュータ・システムにより用いられるメモリ・チップのブロック図を示す。
【図３】第１のメモリ・チップおよび第２のメモリ・チップからの連続的なアクセスがメモリ・バス上でのギャップ（「デッド・サイクル」）なしで発生する場合に生じ得る問題を例示する。
【図４】メモリ・バス上での必要とされるギャップを有する第２のメモリ・チップへのアクセスが続く第１のメモリ・チップの異なるバンクからの複数のアクセスを示す。
【図５】メモリ・コントローラのブロック図である。
【図６】メモリ・コントローラにおけるメモリ・アクセス・モード生成機能の実施形態のブロック図である。
【図７】メモリ・コントローラにおける第２のメモリ・アクセス・モード生成機能の実施形態のブロック図である。
【図８】本発明の実施形態に従ってメモリ・コントローラにより実行されるメモリ要求並べ替え機能を高レベルで例示する流れ図である。
【図９】メモリ・アクセス・モードの管理を例示する流れ図である。
【図１０】異なるメモリ・アクセス方式間で切り替えるために、図８のメモリ・アクセス・モードがメモリ・コントローラによりどのように用いられるかを例示する流れ図である。
【図１１】メモリ・アクセスの低待ち時間モードをより詳細に例示する。
【図１２】メモリ・アクセスの高帯域幅モードをより詳細に例示する。
【図１３】メモリにアクセスすることにより要求にサービスするためのステップを例示する。
【図１４】要求へのサービスの並べ替えの粒度制御（granularcontrol）を提供するために使用されるステップを例示する。
【図１】
0005340658.tif 000003
【図２】
0005340658.tif 000004
【図３】
0005340658.tif 000005
【図４】
0005340658.tif 000006
【図５】
0005340658.tif 000007
【図６】
0005340658.tif 000008
【図７】
0005340658.tif 000009
【図８】
0005340658.tif 000010
【図９】
0005340658.tif 000011
【図１０】
0005340658.tif 000012
【図１１】
0005340658.tif 000013
【図１２】
0005340658.tif 000014
【図１３】
0005340658.tif 000015
【図１４】
0005340658.tif 000016