(57)【要約】コンピューティングシステムにおいて効率的なメモリアクセスを行うためのシステム、装置、及び方法を開示する。様々な実施形態において、コンピューティングシステムは、コンピューティングリソースと、メモリデバイスに結合されたメモリコントローラとを含む。メモリコントローラは、メモリ要求が複数のランクのうちの所与のランクをターゲットにしていることを判別する。メモリコントローラは、未処理のメモリ要求を記憶するためのメモリコントローラの保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量として、所与のランクの予測待ち時間を決定する。メモリコントローラは、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、総バンク待ち時間を決定する。所与のランクをターゲットにした保留中の要求が無い場合、予測待ち時間と総バンク待ち時間のそれぞれを使用して、バンク毎にリフレッシュする動作と全てのバンクをリフレッシュする動作との間の選択を行う。【選択図】図５
2021507405.tif 000002
【特許請求の範囲】
【請求項１】
通信ファブリックと、
１つまたは複数のコンピューティングリソースであって、１つまたは複数のアプリケーションを実行することと、メモリアクセス要求を生成することと、を行うように構成された、前記１つまたは複数のコンピューティングリソースと、
複数のランクであって、各ランクが複数のバンクを含む前記複数のランクを含むメモリデバイスに結合されたメモリコントローラと、
を含む、コンピューティングシステムであって、
前記メモリコントローラは、
前記通信ファブリックを介して前記メモリアクセス要求を受信することと、
前記１つまたは複数のアプリケーションを識別する情報を受信することと、
前記受信された情報に少なくとも基づいて第１の待ち時間を予測することであって、前記第１の待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが、前記複数のランクの所与のランクをターゲットにしたメモリ要求を記憶していない時間量である、前記第１の待ち時間を予測することと、
前記所与のランクに対するリフレッシュ間隔を開始する指示を受信することに応答して、
前記第１の待ち時間に基づいて１つまたは複数のリフレッシュ動作を選択することと、
前記選択した１つまたは複数のリフレッシュ動作を前記所与のランクに対して行うことと、
を行うように構成された、コンピューティングシステム。
【請求項２】
前記メモリコントローラは、前記所与のランクに対して全てのバンクをリフレッシュする動作を行うか、または、前記所与のランクの前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うかを、前記第１の待ち時間と、全てのバンクをリフレッシュする動作の第２の待ち時間とを比較することに少なくとも基づいて、決定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項３】
前記メモリコントローラは、前記第１の待ち時間が前記第２の待ち時間より短いと判断することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うように構成される、請求項２に記載のコンピューティングシステム。
【請求項４】
前記メモリコントローラは、前記所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、第３の待ち時間を決定するように構成される、請求項２に記載のコンピューティングシステム。
【請求項５】
前記メモリコントローラは、
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第１の待ち時間が前記第２の待ち時間よりも長いこと、及び、
前記第３の待ち時間が前記第２の待ち時間よりも長いこと
を判定することに応答して、前記所与のランクに対して前記全てのバンクをリフレッシュする動作を行うように構成される、請求項４に記載のコンピューティングシステム。
【請求項６】
前記メモリコントローラは、
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第１の待ち時間が前記第２の待ち時間よりも長いこと、及び、
前記第３の待ち時間が前記第２の待ち時間よりも短いこと
を判定することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うように構成される、請求項４に記載のコンピューティングシステム。
【請求項７】
前記第１の待ち時間を予測することは、前記複数のランクのうちのどのランクが前記１つまたは複数のアプリケーションによってアクセスされるかを識別することを含む、請求項１に記載のコンピューティングシステム。
【請求項８】
前記第１の待ち時間を予測することは、前記１つまたは複数のアプリケーションを実行する前記１つまたは複数のコンピューティングリソースの電力性能状態を識別することを含む、請求項１に記載のコンピューティングシステム。
【請求項９】
前記第１の待ち時間を予測することは、前記１つまたは複数のコンピューティングリソースのキャッシュメモリサブシステムのミス率を識別することを含む、請求項１に記載のコンピューティングシステム。
【請求項１０】
１つまたは複数のコンピューティングリソースが、１つまたは複数のアプリケーションを実行することと、
前記１つまたは複数のコンピューティングリソースが、複数のランクであって、各ランクが複数のバンクを含む前記複数のランクを含むメモリデバイスに記憶されたデータに対するメモリアクセス要求を生成することと、
メモリコントローラが、前記メモリアクセス要求を受信することと、
前記メモリコントローラが、前記１つまたは複数のアプリケーションを識別する情報を受信することと、
前記メモリコントローラが、前記受信した情報に少なくとも基づいて、前記複数のランクのうちの所与のランクのアクセス間の第１の待ち時間を予測することと、
前記所与のランクに対するリフレッシュ間隔を開始する指示を受信することに応答して、
前記メモリコントローラが、前記第１の待ち時間に基づいて１つまたは複数のリフレッシュ動作を選択することと、
前記メモリコトンローラが、前記選択した１つまたは複数のリフレッシュ動作を前記所与のランクに対して行うことと、
を含む、方法。
【請求項１１】
前記所与のランクに対して全てのバンクをリフレッシュする動作を行うか、または、前記所与のランクの前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うかを、前記第１の待ち時間と、全てのバンクをリフレッシュする動作の第２の待ち時間とを比較することに少なくとも基づいて、決定することをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記第１の待ち時間が前記第２の待ち時間より短いと判断することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うことをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、第３の待ち時間を決定することをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第１の待ち時間が前記第２の待ち時間よりも長いこと、及び、
前記第３の待ち時間が前記第２の待ち時間よりも長いこと
を判定することに応答して、前記所与のランクに対して前記全てのバンクをリフレッシュする動作を行うことをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第１の待ち時間が前記第２の待ち時間よりも長いこと、及び、
前記第３の待ち時間が前記第２の待ち時間よりも短いこと
を判定することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うことをさらに含む、請求項１３に記載の方法。
【請求項１６】
１つまたは複数のアプリケーションを実行する１つまたは複数のコンピューティングリソースによって生成されたメモリアクセス要求を受信する第１のインタフェースと、
複数のランクであって、各ランクが複数のバンクを含む前記複数のランクを含むメモリデバイスに前記メモリアクセス要求を送信する第２のインタフェースと、
制御ロジックと
を含むメモリコントローラであって、
前記制御ロジックは、
前記１つまたは複数のアプリケーションを識別する情報を受信することと、
前記受信した情報に少なくとも基づいて、前記複数のランクのうちの所与のランクのアクセス間の第１の待ち時間を予測することと、
前記所与のランクに対するリフレッシュ間隔を開始する指示を受信することに応答して、
前記第１の待ち時間に基づいて１つまたは複数のリフレッシュ動作を選択することと、
前記選択した１つまたは複数のリフレッシュ動作を前記所与のランクに対して行うことと、
を行うように構成された、前記メモリコントローラ。
【請求項１７】
前記制御ロジックは、前記所与のランクに対して全てのバンクをリフレッシュする動作を行うか、または、前記所与のランクの前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うかを、前記第１の待ち時間と、全てのバンクをリフレッシュする動作の第２の待ち時間とを比較することに少なくとも基づいて、決定するように構成される、請求項１６に記載のメモリコントローラ。
【請求項１８】
前記制御ロジックは、前記第１の待ち時間が前記第２の待ち時間より短いと判断することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うように構成される、請求項１７に記載のメモリコントローラ。
【請求項１９】
前記制御ロジックは、前記所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、第３の待ち時間を決定するように構成される、請求項１７に記載のメモリコントローラ。
【請求項２０】
前記制御ロジックは、
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第１の待ち時間が前記第２の待ち時間よりも長いこと、及び、
前記第３の待ち時間が前記第２の待ち時間よりも長いこと、
を判定することに応答して、前記所与のランクに対して前記全てのバンクをリフレッシュする動作を行うように構成される、請求項１９に記載のメモリコントローラ。
【発明の詳細な説明】
【背景技術】
【０００１】
所与のスレッドへのメモリアクセスが、コンピューティングシステムの最後のレベルのキャッシュでミスすると、要求は、システムメモリに送信される。オフチップダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのシステムメモリへのメモリアクセス待ち時間は通常、キャッシュへのアクセス待ち時間よりずっと長い。このような待ち時間の影響を低減するために、また、読み取り動作がプログラム実行のためのクリティカルパスである場合が多いことを考慮すると、読み取り動作は、書き込み動作より高い優先順位を割り当てられてよい。にもかかわらず、メモリバスが、双方向共有バス構造を利用していることがあるので、バスの駆動方向の切り替えを行わなければならず、データバスのターンアラウンドの追加の待ち時間が存在する。
【０００２】
帯域幅を増加させ、待ち時間をさらに減らすために、ＤＲＡＭは、独立したランクに編成されてよく、メモリアクセスのパイプライン化をサポートしてよい。一般的にいうと、ＤＲＡＭは、所与のバンクのアクティブ化された行からバッファにデータを記憶する。しかしながら、スタティックＲＡＭ（ＳＲＡＭ）とは異なり、ＤＲＡＭは、各ストレージアクセスに対するアクセス時間が等しくない。むしろ、システムメモリからの読み取りデータの受信は、システムメモリへの書き込みデータの送信より待ち時間が長い。上記に加えて、システムメモリへのアクセスは、複数のトランザクションを使用する。例えば、プリチャージ、行のアクティブ化／オープン、オープン行の列の読み取りアクセス、オープン行の列の書き込みアクセス、及び、オープン行のクローズ等のＤＲＡＭトランザクションが状況に応じて必要とされる。さらに、これらの様々なトランザクションは、それぞれ、待ち時間が異なる場合がある。アクティブ化及びプリチャージのトランザクションは、読み取りアクセス及び書き込みアクセスのトランザクションよりも大幅に待ち時間が長くなることが多い。
【０００３】
バンクの同じ行への連続したアクセス等、上記トランザクションよりも使用するトランザクションが少ないメモリアクセスもある。より多くのトランザクションを必要とするトランザクションもある。例えば、要求された行がオープンでない異なるバンクへの連続したアクセスを含むメモリトランザクションは、より多くのトランザクションを必要とする。上記に加えて、行にアクセス後、いつ行をクローズするかは、性能及び電力消費に影響を与えるＤＲＡＭの制御ロジックによって決定される。
【０００４】
上記を考慮して、コンピューティングシステムのための効率的なメモリアクセスを実行するための効率的な方法及びシステムが望まれる。
【０００５】
添付図面と共に以下の説明を参照することによって、本明細書に記載される方法及び機構の利点をより良く理解することができよう。
【図面の簡単な説明】
【０００６】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】メモリコントローラの一実施形態のブロック図である。
【図３】作業負荷と総バンク待ち時間とに基づいた予測待ち時間に基づいて、ランクをリフレッシュするリフレッシュ動作を選択する方法の一実施形態のフロー図である。
【図４】作業負荷と総バンク待ち時間とに基づいた予測待ち時間に基づいて、ランクをリフレッシュするリフレッシュ動作を選択する方法の一実施形態のフロー図である。
【図５】作業負荷と総バンク待ち時間とに基づいた予測待ち時間に基づいて、ランクをリフレッシュするリフレッシュ動作を選択する方法の一実施形態のフロー図である。
【発明を実施するための形態】
【０００７】
本発明は、様々な修正及び代替形態を受け入れるが、特定の実施形態を図面中の例によって示し、本明細書で詳細に説明する。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定するものではなく、反対に、本発明は、添付の請求項によって定義される本発明の範囲内に収まる全ての修正、均等物、及び代替物を包含することは、理解されたい。
【０００８】
以下の説明では、本明細書に提示する方法及び機構の完全な理解を提供するために、多くの特定の詳細が述べられている。しかしながら、当業者は、それらの特定の詳細なしに様々な実施形態を実践し得ることを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の簡潔性及び明確さのために、図に示される要素は、必ずしも縮尺通りに描かれていないことは理解されよう。例えば、要素のいくつかの寸法は、他の要素に対して誇張されてよい。
【０００９】
コンピューティングシステムのための効率的なメモリアクセスを実行するための様々なシステム、装置、方法、及びコンピュータ可読媒体が開示される。一実施形態では、コンピューティングシステムは、１つまたは複数のコンピューティングリソースと、様々な種類のダイナミックランダムアクセスメモリ（ＤＲＡＭ）のうちの１つ等の外部システムメモリとを含む。コンピューティングリソースの例には、汎用中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、加速処理装置（ＡＰＵ：ａｃｃｅｌｅｒａｔｅｄ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）などが含まれる。様々な実施形態では、所与のコンピューティングリソースは、キャッシュメモリサブシステムを含む。所与のコンピューティングリソースがキャッシュメモリサブシステム内でメモリアクセス要求のミスを判別すると、所与のコンピューティングリソースはメモリアクセス要求を１つまたは複数のメモリコントローラのうちの所与のメモリコントローラに送信する。
【００１０】
所与のメモリコントローラは、メモリアクセス要求のターゲットアドレスに関連付けられたメモリデバイスに結合される。コンピューティングシステムに複数のメモリデバイスが含まれている場合、オペレーティングシステムによってアドレス空間が複数のメモリデバイスに分散される。メモリコントローラは、コンピューティングリソースの要求アドレスとメモリデバイス（複数可）の記憶場所を指すアドレスとの間のマッピングをサポートする。ある実施形態では、メモリコントローラは、単一のメモリデバイスに接続される。他の実施形態では、メモリコントローラは、複数のメモリデバイスに接続される。
【００１１】
ある実施形態では、メモリコントローラの制御ロジックは１つまたは複数のコンピューティングリソースが実行するべき作業負荷に関する情報を受信する。例えば、制御ロジックは、所与のコンピューティングリソースの一意のコンピューティングリソース識別子（ＩＤ）と、処理すべきスレッド数とを受信する。ある実施形態では、オペレーティングシステム（ＯＳ）スケジューラが、コンピューティングリソースＩＤとスレッド数とをメモリコントローラに送信する。例えば、ＯＳスケジューラは、ＣＰＵに対応するＩＤとＣＰＵにスケジュールされるスレッド数とを送信できる。例えば、ＯＳスケジューラは、ＧＰＵに対応する異なるＩＤと、ＧＰＵにスケジュールされるスレッド数とを送信できる。
【００１２】
様々な実施形態では、メモリコントローラの制御ロジックは、受信した情報に少なくとも基づいて待ち時間を予測する。所与のランクに対する予測待ち時間は、メモリコントローラから送信されたその所与のランクをターゲットにした最新のメモリアクセスからその所与のランクをターゲットにした他のメモリアクセスをメモリコントローラが受信するまでの予測時間量である。様々な実施形態では、メモリコントローラは、受信したメモリアクセス要求を記憶する保留中のキューを含む。メモリコントローラは、次に、メモリに伝えるために保留中のキューからメモリアクセス要求を取り出す。このような実施形態では、予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【００１３】
例えば、一定のアプリケーションを処理するために特定のコンピューティングリソースが選択される。ある一定のアプリケーションの処理の振る舞いは、特定のコンピューティングリソースのキャッシュメモリサブシステムで所与の数のメモリアクセスミスを含む場合がある。これらのミスは、幾つかのメモリ要求がメモリコントローラを介してシステムメモリに送信されることにつながる。ある実施形態では、ＯＳスケジューラはまた、ミスに対応する特定のアプリケーションまたはアプリケーションタイプを識別する一意のアプリケーションＩＤをメモリコントローラに送信する。アプリケーションタイプを使用してメモリアクセスミスを予測し、予測待ち時間を決定することもできる。
【００１４】
メモリコントローラは、受信したメモリ要求のターゲットアドレスを、ターゲットランク、ターゲットランク内のターゲットバンク、及び、ターゲットバンク内のターゲット行の表示に翻訳する。メモリコントローラは、コンピューティングリソースＩＤと、メモリ要求がターゲットにしたランクへのスレッド数とに関するアクセス履歴を維持することができる。ある実施形態では、メモリコントローラによって行われた関連付けは、アプリケーションＩＤも使用する。ある実施形態では、コンピューティングリソースまたは電力マネージャも、コンピューティングリソースに対応する電力性能状態（Ｐ状態）をメモリコントローラに送信する。ある実施形態では、メモリコントローラは、受信した情報を有する１つまたは複数の表を維持し、どの条件の下で特定のランクにアクセスするかを判断する。さらに、メモリコントローラは、前述の予測待ち時間を決定するように構成される。
【００１５】
様々な実施形態では、コンピューティングリソースは、実行のためにスレッドを受信すると、リソースＩＤと、コンピューティングリソースが処理するようにスケジュールされたスレッド数とを送信する。一実施形態では、コンピューティングリソースは、上記スレッド数の相違が生じると、スレッド数の更新を送信する。例えば、スレッド数の増加が閾値を超えた場合、コンピューティングリソースは、更新された数をメモリコントローラに送信する。同様に、数の減少が閾値未満に低下すると、コンピューティングリソースは、更新された数をメモリコントローラに送信する。
【００１６】
さらに別の実施形態では、コンピューティングリソースは、コンピューティングリソースが使用するキャッシュメモリサブシステムに対応するキャッシュミス率の情報の更新を送信する。ある実施形態では、階層キャッシュメモリサブシステムの各レベルのミス率が、コンピューティングリソースによって送信される。他の実施形態では、１つの合算したミス率が送信される。スレッド数と同様、ミス率情報は、閾値をまたぐ変化が検出された時に送信される。様々な実施形態では、特定のランクがどの条件の下でアクセスされるか決定する時、また、上記待ち時間を予測する時、メモリコントローラは、Ｐ状態及びミス率の１つまたは複数を追加で使用する。
【００１７】
ある実施形態では、メモリコントローラは、メモリデバイスに所与のランクに対してリフレッシュ間隔を開始する指示を受信する時、所与のランクの予測待ち時間に少なくとも基づいて、１つまたは複数のリフレッシュ動作を選択する。一実施形態では、メモリコントローラは、予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較する。全てのバンクをリフレッシュする動作の待ち時間は、所与のランクの全てのバンクをリフレッシュするのにかかる時間量である。一例では、所与のランクは、８つのバンクを含み、所与のランクに対して全てのバンクをリフレッシュする動作が行われる間、保留中のメモリ要求は、所与のランクの８つのバンクのいずれに対するアクセスも許可されない。様々な実施形態では、全てのバンクをリフレッシュする動作の待ち時間は、一定値である。例えば、全てのバンクをリフレッシュする動作の待ち時間は、約１３０ナノ秒（ｎｓ）であってよい。待ち時間は、クロックサイクル数として測定することもできる。
【００１８】
対照的に、バンク毎のリフレッシュ動作の待ち時間は通常、全てのバンクをリフレッシュする動作の待ち時間より短い。一例では、バンク毎のリフレッシュ動作の待ち時間は、６０ｎｓに達し得る。しかしながら、８つのバンクのうち、１つのバンクがリフレッシュ中で、保留中のメモリ要求によってアクセスできない間、他の７つのバンクは、保留中のメモリ要求によってアクセス可能である。一実施形態では、メモリコントローラは、所与のランクをターゲットにした保留中のメモリ要求があると判断すると、所与のランクの複数のバンクのうちの所与のバンクにバンク毎のリフレッシュ動作を行うことを選択する。ある実施形態では、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短く、所与のランクをターゲットにした保留中のメモリ要求が無いとメモリコントローラが判断すると、メモリコントローラは、所与のランクの複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うことを選択する。
【００１９】
ある実施形態では、メモリコントローラは、総バンク待ち時間を、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として決定する。他の実施形態では、メモリコントローラは、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より長いこと、総バンク待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短いこと、及び、所与のランクをターゲットにする１つまたは複数の保留中のメモリ要求があることを判別することに応答して、所与のランクのバンク毎のリフレッシュ動作を行う。他の実施形態では、メモリコントローラは、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短いと判断することに応答して、所与のランクのバンク毎のリフレッシュ動作を行う。
【００２０】
図１を参照すると、コンピューティングシステム１００の一実施形態の一般的なブロック図が示されている。図に示すように、コンピューティングシステム１００は、各メモリコントローラ１３０とコンピューティングリソース１１０との間に通信ファブリック１２０を含む。図示の実施形態では、コンピューティングリソースは、中央処理装置（ＣＰＵ）１１２、グラフィック処理装置（ＧＰＵ）１１４、及びハブ１１６を含む。ハブ１１６は、マルチメディアエンジン１１８との通信に使用される。単一のメモリコントローラ１３０が示されているが、他の実施形態では、別の数のメモリコントローラがコンピューティングシステム１００で使用される。
【００２１】
ある実施形態では、コンピューティングシステム１００のコンポーネントは、システムオンチップ（ＳＯＣ）などの集積回路（ＩＣ）上の個々のダイである。他の実施形態では、コンポーネントは、システムインパッケージ（ＳｉＰ）またはマルチチップモジュール（ＭＣＭ）の個々のダイである。一実施形態では、コンピューティングシステム１００は、モバイルコンピュータ、スマートフォン、スマートウォッチ、もしくはタブレット内のスタンドアロンシステム、デスクトップ、サーバ等である。ＣＰＵ１１２、ＧＰＵ１１４、及びマルチメディアエンジン１１８は、メモリアクセス要求を生成することができるコンピューティングリソースの例である。図示されていないが、他の実施形態では、他のタイプのコンピューティングリソースがコンピューティングリソース１１０に含まれる。
【００２２】
様々な実施形態では、メモリコントローラ１３０は、通信ファブリック１２０を介してコンピューティングリソース１１０からメモリアクセス要求を受信し、メモリアクセス要求を、オフチップディスクメモリ１６２、及び、オフチップダイナミックランダムアクセスメモリ（ＤＲＡＭ）１７０として実装されるシステムメモリの１つまたは複数に送信する。メモリコントローラ１３０はまた、ＤＲＡＭ１７０及びディスクメモリ１６２から応答を受信し、その応答をコンピューティングリソース１１０の対応する要求元に送信する。
【００２３】
ＣＰＵ１１２の１つまたは複数のプロセッサコアのそれぞれは、所与の選択された命令セットアーキテクチャ（ＩＳＡ）に従って命令を実行する回路を含む。様々な実施形態では、ＣＰＵ１１２のプロセッサコアのそれぞれは、所与のＩＳＡの命令を処理するために使用されるスーパースカラ、マルチスレッドマイクロアーキテクチャを含む。ある実施形態では、ＧＰＵ１１４は、相当な数の並列実行レーンを備えた高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ（ＳＩＭＤ）パイプラインを使用する。マルチメディアエンジン１１８は、マルチメディアアプリケーションのための音声データ及び映像データを処理するためのプロセッサを含む。
【００２４】
一例では、加速処理装置（ＡＰＵ）、ディスプレイコントローラ、オーディオプロセッサなどが、処理ユニット１１０に含まれる追加の候補である。ＡＰＵの例は、ＧＰＵ、ＦＰＧＡ、または他の処理ユニットと同じダイに統合されたＣＰＵであり、消費電力を削減しながら、これらのユニット間のデータ転送速度を向上させる。他の実施形態では、ＡＰＵは、ビデオ処理及び他のアプリケーション固有のアクセラレータを含む。
【００２５】
様々な実施形態では、通信ファブリック１２０は、コンピューティングリソース１１０とメモリコントローラ１３０との間でトラフィックを前後に転送し、且つ、それぞれの通信プロトコルをサポートするためのインタフェースを含む。ある実施形態では、通信ファブリック１２０は、要求及び応答を記憶するためのキュー、内部ネットワークを通して要求を送信する前に受信した要求間の調整を行うための選択ロジック、パケットを構築及びデコードするためのロジック、及び、パケットのルートを選択するためのロジックを含む。
【００２６】
ある実施形態では、コンピューティングシステム１００のアドレス空間は、少なくともＣＰＵ１１２、ＧＰＵ１１４、及びハブ１１６と入力／出力周辺機器（図示せず）及び他のタイプのコンピューティングリソース等の１つまたは複数の他のコンポーネントとの間で分割される。どのアドレスがどのコンポーネントにマッピングされるか、従って、ＣＰＵ１１２、ＧＰＵ１１４、及びハブ１１６のどれに特定のアドレスに対するメモリ要求がルーティングされるべきかを決定するために、メモリマップが維持される。コンピューティングリソース１１０の１つまたは複数は、各プロセッサコアのメモリ待ち時間を低減するためのキャッシュメモリサブシステムを含む。さらに、ある実施形態では、共有キャッシュメモリサブシステムは、オフチップＤＲＡＭ１７０及び／またはオフチップディスクメモリ１６２にアクセスする前に、最後のレベルのキャッシュ（ＬＬＣ）としてプロセッサコアによって使用される。コンピューティングリソース１１０のキャッシュメモリサブシステム（図示せず）は、データを記憶するように構成された高速キャッシュメモリを含む。様々な実施形態では、キャッシュメモリサブシステムは、キャッシュの階層として実装される。本明細書で使用される場合、「メモリアクセス」という用語は、対応する要求アドレスの要求されたデータがキャッシュに存在する場合に、キャッシュヒットをもたらすメモリ読み取り要求またはメモリ書き込み要求の動作を行うことを指す。あるいは、要求されたデータがキャッシュに存在しない場合、メモリアクセス要求はキャッシュミスになる。
【００２７】
メモリコントローラ１３０は、メモリバス１５０を通してオフチップＤＲＡＭ１７０にメモリアクセス要求を送信する。キャッシュミスに応答して、元のメモリアクセス要求を完了するために、対応するデータが、オフチップＤＲＡＭ１７０から処理ユニット１１０のキャッシュメモリサブシステムに伝達される。様々な実施形態では、オフチップＤＲＡＭ１７０は、マルチチャネルメモリアーキテクチャを含む。このタイプのアーキテクチャは、それらの間の通信のチャネルを追加することにより、メモリコントローラ１３０へのデータの転送速度を向上させる。ある実施形態では、マルチチャネルアーキテクチャは、複数のメモリモジュール及びマザーボード及び／または複数のチャネルをサポートできるカードを利用する。ある実施形態では、ＤＲＡＭ１７０は、三次元集積回路（３Ｄ  ＩＣ）を利用してシステムメモリを提供する。このような実施形態では、３Ｄ集積ＤＲＡＭは、オフチップメモリアクセスを低減するために待ち時間の少ない相互接続と追加のオンチップメモリストレージとの両方を提供する。様々な実施形態では、ＤＲＡＭ１７０は、コンピューティングシステム１００のシステムメモリとして使用される。１つまたは複数の行バッファまたは他の同等の構造を含む行ベースのアクセス方式を使用するシステムメモリのための他のメモリ技術が可能であり、企図されている。他のメモリ技術の例には、相変化メモリ、スピントルク伝達抵抗メモリ、メモリスタなどが含まれる。
【００２８】
図に示すように、ＤＲＡＭ１７０は、複数のランク１７６Ａ〜１７６Ｂを含み、各ランクは複数のメモリアレイバンクを有する。例えば、図示のように、ランク１７６Ａは、メモリアレイバンク１７４Ａ〜１７４Ｂを含む。バンク１７４Ａ〜１７４Ｂの各バンクは、行バッファ１７２Ａ〜１７２Ｂを含む。行バッファ１７２Ａ〜１７２Ｂの各行バッファは、メモリアレイバンク１７４Ａ〜１７４Ｂ内の複数の行のアクセスされた行に対応するデータを記憶する。アクセスされた行は、受信したメモリアクセス要求のＤＲＡＭアドレスによって識別される。ＤＲＡＭ１７０内の制御ロジックは、ＤＲＡＭ１７０内のデータ及び制御ラインのアクティブ化及びプリチャージ等のトランザクションを行って、識別された行からデータを読み取り、識別された行にデータを書き込む。
【００２９】
様々な実施形態では、ＤＲＡＭ１７０は、１つまたは複数のメモリチャネル、１チャネルあたり１つまたは複数のメモリモジュールもしくはデバイス、１メモリモジュールあたり１つまたは複数のランク、１ランクあたり１つまたは複数のバンク、及び、１バンクあたり１つまたは複数の行を含む。通常、各行はデータのページを記憶する。ページのサイズは、設計上の考慮事項に基づいて選択される。このようなページサイズは、１キロバイト（１ＫＢ）、４キロバイト（４ＫＢ）等であってよい。様々な実施形態では、メモリバス１５０は、双方向共有バス構造を利用する。
【００３０】
キャッシュメモリサブシステムでキャッシュミスが生じる場合、要求されたデータを読み出すメモリアクセス要求が生成される。メモリコントローラ１３０は、コンピューティングリソース１１０から受信したメモリアクセス要求のターゲットアドレスを翻訳する。様々な実施形態では、メモリコントローラ１３０のメモリアクセス制御ロジックを実行することによって、ランク１７６Ａ〜１７６Ｂのターゲットランク、メモリアレイバンク１７４Ａ〜１７４Ｂのターゲットバンク、及び、ターゲットバンク内のターゲットページを決定する。
【００３１】
図１に示されるように、メモリコントローラ１３０は、通信ファブリック１２０を介してコンピューティングリソース１１０から受信したメモリアクセス要求をキューに入れるための要求キュー１３２を含む。メモリコントローラ１３０はまた、ＤＲＡＭ１７０から受信した応答を記憶するための応答キュー１３４を有する。様々な実施形態では、要求キュー１３２は、読み取り及び書き込みの両方のメモリアクセス要求を記憶するための１つまたは複数のキューを含む。他の実施形態では、要求キュー１３２は、読み取り要求及び書き込み要求を記憶するために別個のキューを含む。さらに別の実施形態では、要求キュー１３２は、受信したメモリアクセス要求を記憶するための１つまたは複数のキューと、１つまたは複数のキューから選択されたスケジュールされたメモリアクセス要求を記憶するための別個のキューとを含む。
【００３２】
図１のスケジューラ１３６は、ＤＲＡＭ１７０に発行するために、要求キュー１３２に記憶されたメモリアクセス要求を選択するためのロジックを含む。様々な実施形態では、メモリ要求は、順番でまたは順不同で選択されてよい。メモリコントローラ１３０による要求の順不同の選択は、優先度レベル、サービス品質表示、経過時間、プロセスもしくはスレッド識別、ターゲットアドレス、並びに、同じメモリチャネルをターゲットにする、同じランクをターゲットにする、同じバンクをターゲットにする、及び／または、同じページをターゲットにするなど、他の記憶された要求との関係に基づいてよい。同様に、ある実施形態では、メモリコントローラ１３０は、コンピューティングリソース１１０への読み取り応答（すなわち、検索された読み取りデータ）の順不同の発行もサポートする。
【００３３】
リフレッシュ動作タイプセレクタ１３８（「セレクタ」１３８とも呼ばれる）を使用して、今後のまたは現在の動作条件に対応する情報に少なくとも部分的に基づいて、所与のランクの待ち時間を予測する。予測待ち時間は、所与のランクをターゲットにした最後に残っているメモリアクセスがメモリコントローラから送信されてから、所与のランクをターゲットにした次のメモリアクセスがメモリコントローラによって受信される時点までに経過すると予測される時間量である。様々な実施形態では、予測待ち時間は、未処理のメモリ要求を記憶するための要求キュー１３２の保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。リフレッシュ動作タイプセレクタ１３８は、予測待ち時間に少なくとも基づいて、所与のランクのリフレッシュ間隔中、１つまたは複数のリフレッシュ動作を選択する。
【００３４】
様々な実施形態では、セレクタ１３８は、コンピューティングリソース１１０の１つを識別するコンピューティングリソース識別子（ＩＤ）と、コンピューティングリソース１１０の識別された１つに割り当てられたスレッド数とを受信する。ある実施形態では、オペレーティングシステム（ＯＳ）スケジューラが、この情報を送信し、他の実施形態では、コンピューティングリソース１１０が、この情報をセレクタ１３８に送信する。ある実施形態では、コンピューティングリソース１１０または電力マネージャ（図示せず）が、コンピューティングリソース１１０に対応する電力性能状態（Ｐ状態）をセレクタ１３８に送信する。他の実施形態では、コンピューティングリソース１１０の１つまたは複数が、コンピューティングリソースによってアクセスされるキャッシュメモリサブシステムのキャッシュヒット率及び／またはキャッシュミス率を送信する。例えば、個々のミス率のそれぞれの積を使用する。さらに別の実施形態では、各重みが、階層キャッシュメモリサブシステムの各レベルに関連付けられ、重みは、加重和で使用される、または、個々の値としてセレクタ１３８に送信される。ある実施形態では、処理されているスレッド数とミス率との更新された値は、これらの値の変化が対応する閾値を超えると、送信される。様々な実施形態では、セレクタ１３８は、受信した情報に基づいて、ランク１７６Ａ〜１７６Ｂのそれぞれの対応する待ち時間を予測する。
【００３５】
様々な実施形態では、メモリコントローラ１３０が、ランク１７６Ａ〜１７６Ｂの所与のランクのリフレッシュ間隔を開始する指示を受信すると、セレクタ１３８が、所与のランクの予測待ち時間に少なくとも基づいて、１つまたは複数のリフレッシュ動作を選択する。一実施形態では、セレクタ１３８は、予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較する。ある実施形態では、待ち時間は、クロックサイクル数として測定される。様々な実施形態では、セレクタ１３８は、総バンク待ち時間を、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として決定する。例えば、バンク毎のリフレッシュ動作の待ち時間が６０ｎｓで、所与のランクの８つのバンクのうちの６つが、既にリフレッシュされている場合、総バンク待ち時間は、残りの２つのバンク掛ける６０ｎｓ／バンク、すなわち、１２０ｎｓである。総バンク待ち時間は、クロックサイクル数として測定することもできる。
【００３６】
ある実施形態では、セレクタ１３８は、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より長いこと、総バンク待ち時間が全てのバンクをリフレッシュする動作の待ち時間より長いこと、及び、所与のランクをターゲットにした要求キュー１３２に保留中のメモリ要求が無いことを判別することに応答して、所与のランクに対して全てのバンクをリフレッシュする動作を選択する。ある実施形態では、セレクタ１３８は、所与のランクをターゲットにした要求キュー１３２に１つまたは複数の保留中のメモリ要求があると判断することに応答して、所与のランクに対してバンク毎のリフレッシュ動作を選択する。他の実施形態では、セレクタ１３８は、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短いと判断することに応答して、所与のランクに対してバンク毎のリフレッシュ動作を選択する。
【００３７】
様々な実施形態では、メモリバス１５０が、読み取りモードまたは書き込みモード中等、一度に一方向へのデータトラフィックをサポートする。ある実施形態では、メモリバス１５０は、少なくともコマンドバス及びデータバスを使用し、ＤＲＡＭ１７０からメモリコントローラ１３０へのデータバス上のデータトラフィックを受信する読み取りモードをサポートする。さらに、メモリバス１５０は、データバス上のデータトラフィックをメモリコントローラ１３０からＤＲＡＭ１７０に送信するための書き込みモードをサポートする。
【００３８】
図２を参照すると、メモリコントローラ２００の一実施形態の一般的なブロック図が示されている。図示の実施形態では、メモリコントローラ２００は、通信ファブリックを介したコンピューティングリソースへのインタフェース２１０、受信したメモリアクセス要求及び受信した応答を記憶するキュー２２０、制御ユニット２５０、並びに、少なくともメモリバスのデータバスを介したメモリデバイスへのインタフェース２８０を含む。インタフェース２１０及び２８０のそれぞれは、各通信プロトコルをサポートする。
【００３９】
ある実施形態では、キュー２２０は、受信した読み取り要求を記憶する読み取りキュー２３２と、受信した書き込み要求を記憶する別個の書き込みキュー２３４とを含む。他の実施形態では、キュー２２０は、メモリ読み取り要求とメモリ書き込み要求との両方を記憶する統合されたキューを含む。一実施形態では、キュー２２０は、読み取りキュー２３２、書き込みキュー２３４、または統合されたキュー（統合されたキューが使用される場合）から選択されたスケジュールされたメモリアクセス要求を記憶するキュー２３６を含む。キュー２３６は、保留中のキュー２３６とも呼ばれる。ある実施形態では、制御レジスタ２７０は、現在のモードの表示を記憶する。例えば、オフチップメモリデータバスとメモリデバイスは、所与の時間の読み取りモードまたは書き込みモードをサポートする。従って、トラフィックは現在のモード中に所与の一方向にルーティングされ、現在のモードが終了すると、方向が変わる。
【００４０】
ある実施形態では、読み取りスケジューラ２５２は、読み取りキュー２３２から読み取り要求を順不同で選択するための調整ロジックを含む。読み取りスケジューラ２５２は、サービス品質（ＱｏＳ）もしくは他の優先度情報、経過時間、プロセスもしくはスレッド識別子（ＩＤ）、並びに、同じメモリチャネルをターゲットにする、同じランクをターゲットにする、同じバンクをターゲットにする、及び／または、同じページをターゲットにするなど、他の記憶された要求との関係に基づいて、読み取りキュー２３２内の記憶された要求のメモリデバイスへの順不同の発行をスケジュールする。書き込みスケジューラ２５４は、書き込みキュー２３４のための類似の選択ロジックを含む。ある実施形態では、応答スケジューラ２５６は、優先順位に基づいて、メモリデバイスから受信された応答をコンピューティングリソースに順不同で発行するための同様のロジックを含む。
【００４１】
ランクアクセス待ち時間ユニット２６２は、ユニット２６２とも呼ばれ、今後のまたは現在の動作条件に対応する受信した情報に少なくとも基づいて、所与のランクの待ち時間を予測する。予測待ち時間は、所与のランクをターゲットにした最後のメモリアクセスが保留中のキュー２３６から送信されて対応される第１の時点から、所与のランクをターゲットにした次のメモリアクセスが保留中のキュー２３６に記憶される第２の時点までである。言い換えると、予測待ち時間は、保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。様々な実施形態では、ユニット２６２は、コンピューティングリソースＩＤ、コンピューティングリソースに割り当てられたスレッド数、コンピューティングリソースのＰ状態、及び、キャッシュメモリサブシステムのミス率のうちの１つまたは複数を受信する。受信した情報と、ターゲットアドレスのメモリデバイスのランクへのマッピングとに基づいて、ユニット２６２は、ランクの予測待ち時間を決定する。制御レジスタ２７０の複数のプログラム可能レジスタは、メモリデバイスの複数のランクの予測待ち時間を決定するためにユニット２６２が使用する１つまたは複数の閾値を記憶する。
【００４２】
ある実施形態では、ユニット２６２はまた、総バンク待ち時間を、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として決定する。ある実施形態では、メモリコントローラ２００が、メモリデバイスに所与のランクに対してリフレッシュ間隔を開始する指示を受信すると、リフレッシュ動作タイプセレクタ２６０は、予測待ち時間と、所与のランクに対してユニット２６２によって決定された総バンク待ち時間とに少なくとも基づいて、１つまたは複数のリフレッシュ動作を選択する。リフレッシュ動作タイプセレクタ２６０は、セレクタ２６０とも呼ばれる。所与のランクの既にリフレッシュされたバンクのカウントを維持するのではなく、セレクタ２６０は、ユニット２６２が決定した予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較して、リフレッシュ動作を選択する。従って、一例では、ランクが８つのバンクを含み、６つをリフレッシュする時、セレクタ２６０は、バンク毎のリフレッシュ動作を必ず選択しなければならないのではなく、リフレッシュ間隔で全てのバンクをリフレッシュする動作を選択して、バンクのリフレッシュを完了することもできる。
【００４３】
バンク毎のリフレッシュ動作は、選択されたバンクをリフレッシュしながら、８つのバンクのうち７つへのアクセスを可能にする。しかしながら、８つのバンクのうち６つをリフレッシュし、ユニット２６０が決定した予測待ち時間が全てのバンクをリフレッシュする動作のリフレッシュ待ち時間より長い場合、セレクタ２６０は、全てのバンクをリフレッシュする動作を選択することができる。予測待ち時間が正確である時、全てのバンクをリフレッシュする動作が８つのバンク全てをリフレッシュする間、保留中のキュー２３６には所与のランクをターゲットにしたメモリ要求が無いので、ブロックされるメモリアクセスは無い。
【００４４】
図３を参照すると、ランクのアクセス間の予測待ち時間に基づいてリフレッシュ動作を選択する方法３００の一実施形態が示される。説明のために、本実施形態の（また、図４の）ステップも順番に示される。しかしながら、記載の方法の様々な実施形態では、記載する要素のうちの１つまたは複数は、同時に実行される、示されるのとは異なる順序で実行される、または、全体的に省略されることに注意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステムまたは装置のいずれも、方法３００を実施するように構成されている。
【００４５】
図示の方法３００において、１つまたは複数のコンピューティングリソースが、１つまたは複数のソフトウェアアプリケーションを処理する（ブロック３０２）。コンピューティングリソースの例は、中央処理装置、グラフィックス処理装置、並びにその他のものを含む。作業負荷評価情報が、メモリコントローラに送信される（ブロック３０４）。この情報の例は、コンピューティングリソースＩＤ、コンピューティングリソースに割り当てられたスレッド数、コンピューティングリソースの性能状態、及び、キャッシュメモリサブシステムのヒット率及び／またはミス率のうちの１つまたは複数を含む。受信した情報、ターゲットアドレスのメモリデバイスへのマッピング、及び、維持されたカウンタ値に基づいて、保留中のキューがランクをターゲットにしたメモリ要求を記憶していない時間に対応するランクの待ち時間を予測する（ブロック３０６）。上記のように、所与のランクの予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューがその所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【００４６】
キャッシュメモリサブシステムの各レベルでミスが判別される場合（条件ブロック３０８の「はい」分岐）、所与のコンピューティングリソースに対するメモリ要求が生成される（ブロック３１０）。生成されたメモリ要求は、メモリコントローラに送信される（ブロック３１２）。キャッシュメモリサブシステムの各レベルでミスが判別されない場合（条件ブロック３０８の「いいえ」分岐）、方法３００の制御フローは、条件ブロック３１４に進む。リフレッシュ間隔が所与のランクに対して生じていると判断される場合（条件ブロック３１４の「はい」分岐）、リフレッシュ間隔中、所与のランクに対する全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間で選択を行うために少なくとも予測待ち時間を利用する（ブロック３１６）。リフレッシュ動作を選択するために、ある実施形態では、メモリコントローラは、所与のランクをターゲットにした保留中のメモリ要求がある時、所与のランクに対してバンク毎のリフレッシュ動作を選択する。様々な実施形態では、所与のランクをターゲットにした保留中のメモリ要求が無い時、メモリコントローラは、予測待ち時間をリフレッシュすべき残りのバンク数の総バンク待ち時間と比較することに加えて、予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較して、リフレッシュ動作を選択する。
【００４７】
図４を参照すると、作業負荷に基づいたランクのアクセス間の予測待ち時間に基づいてランクをリフレッシュするリフレッシュ動作を選択する方法４００の他の実施形態が示される。複数のバンクを有する所与のランクのリフレッシュ間隔が開始される（ブロック４０２）。所与のランクに対する予測待ち時間が決定される（ブロック４０４）。前述のように、所与のランクの予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューがその所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。（図３の）方法３００のブロック３０２及び３０４に関して前述したように、作業負荷評価情報、ターゲットアドレスのメモリデバイスのランクへのマッピング、及び、維持されたカウンタ値を使用して、ランクの待ち時間を予測する。所与のランクの全てのバンクがリフレッシュされる場合（条件ブロック４０６の「はい」分岐）、リフレッシュ間隔が完了し、メモリデバイスは、所与のランクの全てのバンクのメモリ要求に応える準備ができる（ブロック４０８）。
【００４８】
所与のランクのバンクの全てがリフレッシュされていない場合（条件ブロック４０６の「いいえ」分岐）、所与のランクの総バンク待ち時間が決定される（ブロック４１０）。総バンク待ち時間は、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量である。例えば、バンク毎のリフレッシュ動作の待ち時間が６０ｎｓで、所与のランクの８つのバンクのうちの６つが既にリフレッシュされている場合、総バンク待ち時間は、残りの２つのバンク掛ける６０ｎｓ／バンク、すなわち、１２０ｎｓである。総バンク待ち時間は、クロックサイクル数として測定することもできる。
【００４９】
所与のランクに対して保留中のメモリ要求がある場合（条件ブロック４１２の「はい」分岐）、現在のリフレッシュ間隔中に所与のランクからリフレッシュされていないバンクが選択される（ブロック４１４）。所与のランクの選択されたバンクは、バンク毎のリフレッシュ動作を用いてリフレッシュされる（ブロック４１６）。その後、方法４００の制御フローは、ブロック４０４に戻る。所与のランクに保留中のメモリ要求がない場合（条件ブロック４１２の「いいえ」分岐）、リフレッシュ間隔中、所与のランクに対する全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間で選択を行うために予測待ち時間及び総バンク待ち時間が利用される（ブロック４１８）。その後、方法４００の制御フローは、ブロック４０４に戻る。再度、様々な実施形態では、予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【００５０】
図５を参照すると、作業負荷に基づいたランクのアクセス間の予測待ち時間に基づいてランクをリフレッシュするリフレッシュ動作を選択する方法５００の他の実施形態が示されている。リフレッシュ間隔は開始されているが、まだ、完了していない。この時点で、所与のバンクのリフレッシュ中に所与のランクをターゲットにした保留中のメモリ要求が無いと判断される（ブロック５０２）。この判断は、（図４の）方法４００のブロック４１８に到達することに類似している。前述のように、所与のランクの予測待ち時間は、未処理のメモリ要求を記憶するためのメモリコントローラの保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【００５１】
予測待ち時間が、全てのバンクをリフレッシュする動作の待ち時間以下の場合（条件ブロック５０４の「いいえ」分岐）、現在のリフレッシュ間隔中にリフレッシュされていないバンクが所与のランクから選択される（ブロック５０６）。所与のランクの選択されたバンクは、バンク毎のリフレッシュ動作を用いてリフレッシュされる（ブロック５０８）。例えば、予測待ち時間が９０ｎｓで、全てのバンクをリフレッシュする動作の待ち時間が１３０ｎｓの場合、全てのバンクをリフレッシュする動作が完了する前に、所与のランクをターゲットにしたメモリ要求がメモリコントローラの保留中のキューに記憶されることが予測される。従って、所与のランクのバンクをリフレッシュするために、バンク毎のリフレッシュ動作が選択される。
【００５２】
前述のように、所与のランクの総バンク待ち時間は、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量である。予測待ち時間が、全てのバンクをリフレッシュする動作の待ち時間より長い（条件ブロック５０４の「はい」分岐）が、所与のランクの総バンク待ち時間が、全てのバンクをリフレッシュする動作の待ち時間以下の場合（条件ブロック５１０の「いいえ」分岐）、方法５００の制御フローは、ブロック５０６に進み、バンク毎のリフレッシュ動作のためのバンクが選択される。例えば、予測待ち時間が２００ｎｓで、全てのバンクをリフレッシュする動作の待ち時間が１３０ｎｓの場合、全てのバンクをリフレッシュする動作が完了する前に、所与のランクをターゲットにしたメモリ要求は、メモリコントローラの保留中のキューに記憶されないことが予測される。しかしながら、バンク毎のリフレッシュ動作の待ち時間が６０ｎｓで、所与のランクの８つのバンクのうちの６つが、既にリフレッシュされている場合、総バンク待ち時間は、２つのバンク掛ける６０ｎｓ／バンク、すなわち、１２０ｎｓである。全てのバンクをリフレッシュする動作の待ち時間（１３０ｎｓ）と総バンク待ち時間（１２０ｎｓ）のそれぞれが、予測待ち時間（２００ｎｓ）より短いので、所与のランクをターゲットにしたメモリ要求がメモリコントローラの保留中のキューに記憶されることが予測される前に、全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間の各選択が完了することが予測される。しかしながら、総バンク待ち時間は、全てのバンクをリフレッシュする動作の待ち時間より短いので、２つの残りのバンクに対してバンク毎のリフレッシュ動作の選択が実行される。
【００５３】
予測待ち時間が、全てのバンクをリフレッシュする動作の待ち時間より長く（条件ブロック５０４の「はい」分岐）、所与のランクの総バンク待ち時間が、全てのバンクをリフレッシュする動作の待ち時間より長い場合（条件ブロック５１０の「はい」分岐）、所与のランクの全てのバンクは、全てのバンクをリフレッシュする動作を用いてリフレッシュされる（ブロック５１２）。例えば、予測待ち時間が２００ｎｓで、全てのバンクをリフレッシュする動作の待ち時間が１３０ｎｓの場合、全てのバンクをリフレッシュする動作が完了する前に、所与のランクをターゲットにしたメモリ要求はメモリコントローラの保留中のキューに記憶されないことが予測される。バンク毎のリフレッシュ動作の待ち時間が６０ｎｓで、所与のランクの８つのバンクのうちの５つが、既にリフレッシュされている場合、総バンク待ち時間は、３つのバンク掛ける６０ｎｓ／バンク、すなわち、１８０ｎｓである。全てのバンクをリフレッシュする動作の待ち時間（１３０ｎｓ）と総バンク待ち時間（１８０ｎｓ）のそれぞれが、予測待ち時間（２００ｎｓ）より短いので、所与のランクをターゲットにしたメモリ要求がメモリコントローラの保留中のキューに記憶されることが予測される前に、全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間の各選択が完了することが予測される。しかしながら、全てのバンクをリフレッシュする動作の待ち時間は、総バンク待ち時間より短いので、全てのバンクをリフレッシュする動作の選択が実行される。
【００５４】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述の方法及び／または機構を実施する。プログラム命令は、Ｃ言語などの高水準プログラミング言語でハードウェアの振る舞いを記述している。代替として、Ｖｅｒｉｌｏｇなどのハードウェア設計言語（ＨＤＬ）を使用する。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中コンピューティングシステムによってアクセス可能で、プログラム命令及び付随するデータをプログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも１つまたは複数のメモリと、プログラム命令を実行するように構成された１つまたは複数のプロセッサとを含む。
【００５５】
上記実施形態が、実装態様の非限定的な例にすぎないことを強調しておく。上記の開示を十分に理解すると、多くの変形形態及び修正形態が、当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図される。
【図１】
2021507405.tif 000003
【図２】
2021507405.tif 000004
【図３】
2021507405.tif 000005
【図４】
2021507405.tif 000006
【図５】
2021507405.tif 000007
【国際調査報告】
2021507405.tif 000008
2021507405.tif 000009
2021507405.tif 000010