(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-05
(45)【発行日】2023-04-13
(54)【発明の名称】バンク毎及び全てのバンクの動的リフレッシュ
(51)【国際特許分類】
G06F 12/00 20060101AFI20230406BHJP
G11C 11/406 20060101ALI20230406BHJP
【FI】
G06F12/00 550B
G11C11/406 140
G11C11/406 400
(21)【出願番号】P 2020534251
(86)(22)【出願日】2018-09-19
(86)【国際出願番号】 US2018051774
(87)【国際公開番号】W WO2019125560
(87)【国際公開日】2019-06-27
【審査請求日】2021-09-15
(32)【優先日】2017-12-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ガンハオ シェン
(72)【発明者】
【氏名】ラヴィンドラ エヌ. バルガヴァ
(72)【発明者】
【氏名】ジェームズ レイモンド マグロ
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
(72)【発明者】
【氏名】ジン ワン
【審査官】北村 学
(56)【参考文献】
【文献】特開2013-229096(JP,A)
【文献】特表2016-541050(JP,A)
【文献】特開平10-011964(JP,A)
【文献】特開2016-114997(JP,A)
【文献】米国特許出願公開第2017/0040050(US,A1)
【文献】特表2016-536666(JP,A)
【文献】特表2009-515263(JP,A)
【文献】特開平10-049436(JP,A)
【文献】特開平09-198863(JP,A)
【文献】特開平04-362593(JP,A)
【文献】特開2015-011729(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 11/406
(57)【特許請求の範囲】
【請求項1】
通信ファブリックと、
1つまたは複数のコンピューティングリソースであって、1つまたは複数のアプリケーションを実行することと、メモリアクセス要求を生成することと、を行うように構成された、前記1つまたは複数のコンピューティングリソースと、
複数のランクであって、各ランクが複数のバンクを含む前記複数のランクを含むメモリデバイスに結合されたメモリコントローラと、
を含む、コンピューティングシステムであって、
前記メモリコントローラは、
前記通信ファブリックを介して前記メモリアクセス要求を受信することと、
前記1つまたは複数のアプリケーションを識別する情報を受信することと、
前記受信された情報に少なくとも基づいて第1の待ち時間を予測することであって、前記第1の待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが、前記複数のランクの所与のランクをターゲットにしたメモリ要求を記憶していない時間量である、前記第1の待ち時間を予測することと、
前記所与のランクに対して全てのバンクをリフレッシュする動作を行うか、または、前記所与のランクの前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うかを、前記第1の待ち時間と、全てのバンクをリフレッシュする動作の第2の待ち時間とを比較することに少なくとも基づいて、決定することと、
前記所与のランクに対するリフレッシュ間隔を開始する指示を受信することに応答して、
前記第1の待ち時間に基づいて1つまたは複数のリフレッシュ動作を選択することと、
前記選択した1つまたは複数のリフレッシュ動作を前記所与のランクに対して行うことと、
を行うように構成された、コンピューティングシステム。
【請求項2】
前記メモリコントローラは、前記第1の待ち時間が前記第2の待ち時間より短いと判断することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うように構成される、請求項
1に記載のコンピューティングシステム。
【請求項3】
前記メモリコントローラは、前記所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、第3の待ち時間を決定するように構成される、請求項
1に記載のコンピューティングシステム。
【請求項4】
前記メモリコントローラは、
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第1の待ち時間が前記第2の待ち時間よりも長いこと、及び、
前記第3の待ち時間が前記第2の待ち時間よりも長いこと
を判定することに応答して、前記所与のランクに対して前記全てのバンクをリフレッシュする動作を行うように構成される、請求項
3に記載のコンピューティングシステム。
【請求項5】
前記メモリコントローラは、
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第1の待ち時間が前記第2の待ち時間よりも長いこと、及び、
前記第3の待ち時間が前記第2の待ち時間よりも短いこと
を判定することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うように構成される、請求項
3に記載のコンピューティングシステム。
【請求項6】
前記第1の待ち時間を予測することは、前記複数のランクのうちのどのランクが前記1つまたは複数のアプリケーションによってアクセスされるかを識別することを含む、請求項1に記載のコンピューティングシステム。
【請求項7】
前記第1の待ち時間を予測することは、前記1つまたは複数のアプリケーションを実行する前記1つまたは複数のコンピューティングリソースの
今後のまたは現在の動作条件に少なくとも部分的に基づいている、請求項1に記載のコンピューティングシステム。
【請求項8】
前記第1の待ち時間を予測することは、前記1つまたは複数のコンピューティングリソースのキャッシュメモリサブシステムのミス率を識別することを含む、請求項1に記載のコンピューティングシステム。
【請求項9】
1つまたは複数のコンピューティングリソースが、1つまたは複数のアプリケーションを実行することと、
前記1つまたは複数のコンピューティングリソースが、複数のランクであって、各ランクが複数のバンクを含む前記複数のランクを含むメモリデバイスに記憶されたデータに対するメモリアクセス要求を生成することと、
メモリコントローラが、前記メモリアクセス要求を受信することと、
前記メモリコントローラが、前記1つまたは複数のアプリケーションを識別する情報を受信することと、
前記メモリコントローラが、前記受信した情報に少なくとも基づいて、前記複数のランクのうちの所与のランクのアクセス間の第1の待ち時間を予測すること
であって、前記第1の待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが、前記所与のランクをターゲットにしたメモリ要求を記憶していない時間量である、ことと、
前記メモリコントローラが、前記所与のランクに対して全てのバンクをリフレッシュする動作を行うか、または、前記所与のランクの前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うかを、前記第1の待ち時間と、全てのバンクをリフレッシュする動作の第2の待ち時間とを比較することに少なくとも基づいて、決定することと、
前記所与のランクに対するリフレッシュ間隔を開始する指示を受信することに応答して、
前記メモリコントローラが、前記第1の待ち時間に基づいて1つまたは複数のリフレッシュ動作を選択することと、
前記メモリコ
ントローラが、前記選択した1つまたは複数のリフレッシュ動作を前記所与のランクに対して行うことと、
を含む、方法。
【請求項10】
前記第1の待ち時間が前記第2の待ち時間より短いと判断することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うことをさらに含む、請求項
9に記載の方法。
【請求項11】
前記所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、第3の待ち時間を決定することをさらに含む、請求項
9に記載の方法。
【請求項12】
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第1の待ち時間が前記第2の待ち時間よりも長いこと、及び、
前記第3の待ち時間が前記第2の待ち時間よりも長いこと
を判定することに応答して、前記所与のランクに対して前記全てのバンクをリフレッシュする動作を行うことをさらに含む、請求項
11に記載の方法。
【請求項13】
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第1の待ち時間が前記第2の待ち時間よりも長いこと、及び、
前記第3の待ち時間が前記第2の待ち時間よりも短いこと
を判定することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うことをさらに含む、請求項
11に記載の方法。
【請求項14】
1つまたは複数のアプリケーションを実行する1つまたは複数のコンピューティングリソースによって生成されたメモリアクセス要求を受信する第1のインタフェースと、
複数のランクであって、各ランクが複数のバンクを含む前記複数のランクを含むメモリデバイスに前記メモリアクセス要求を送信する第2のインタフェースと、
制御ロジックと
を含むメモリコントローラであって、
前記制御ロジックは、
前記1つまたは複数のアプリケーションを識別する情報を受信することと、
前記受信した情報に少なくとも基づいて、前記複数のランクのうちの所与のランクのアクセス間の第1の待ち時間を予測すること
であって、前記第1の待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが、前記所与のランクをターゲットにしたメモリ要求を記憶していない時間量である、ことと、
前記所与のランクに対して全てのバンクをリフレッシュする動作を行うか、または、前記所与のランクの前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うかを、前記第1の待ち時間と、全てのバンクをリフレッシュする動作の第2の待ち時間とを比較することに少なくとも基づいて、決定することと、
前記所与のランクに対するリフレッシュ間隔を開始する指示を受信することに応答して、
前記第1の待ち時間に基づいて1つまたは複数のリフレッシュ動作を選択することと、
前記選択した1つまたは複数のリフレッシュ動作を前記所与のランクに対して行うことと、
を行うように構成された、前記メモリコントローラ。
【請求項15】
前記制御ロジックは、前記第1の待ち時間が前記第2の待ち時間より短いと判断することに応答して、前記複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うように構成される、請求項
14に記載のメモリコントローラ。
【請求項16】
前記制御ロジックは、前記所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として、第3の待ち時間を決定するように構成される、請求項
14に記載のメモリコントローラ。
【請求項17】
前記制御ロジックは、
前記所与のバンクをターゲットにした保留中のメモリ要求が無いこと、
前記第1の待ち時間が前記第2の待ち時間よりも長いこと、及び、
前記第3の待ち時間が前記第2の待ち時間よりも長いこと、
を判定することに応答して、前記所与のランクに対して前記全てのバンクをリフレッシュする動作を行うように構成される、請求項
16に記載のメモリコントローラ。
【発明の詳細な説明】
【背景技術】
【0001】
所与のスレッドへのメモリアクセスが、コンピューティングシステムの最後のレベルのキャッシュでミスすると、要求は、システムメモリに送信される。オフチップダイナミックランダムアクセスメモリ(DRAM)などのシステムメモリへのメモリアクセス待ち時間は通常、キャッシュへのアクセス待ち時間よりずっと長い。このような待ち時間の影響を低減するために、また、読み取り動作がプログラム実行のためのクリティカルパスである場合が多いことを考慮すると、読み取り動作は、書き込み動作より高い優先順位を割り当てられてよい。にもかかわらず、メモリバスが、双方向共有バス構造を利用していることがあるので、バスの駆動方向の切り替えを行わなければならず、データバスのターンアラウンドの追加の待ち時間が存在する。
【0002】
帯域幅を増加させ、待ち時間をさらに減らすために、DRAMは、独立したランクに編成されてよく、メモリアクセスのパイプライン化をサポートしてよい。一般的にいうと、DRAMは、所与のバンクのアクティブ化された行からバッファにデータを記憶する。しかしながら、スタティックRAM(SRAM)とは異なり、DRAMは、各ストレージアクセスに対するアクセス時間が等しくない。むしろ、システムメモリからの読み取りデータの受信は、システムメモリへの書き込みデータの送信より待ち時間が長い。上記に加えて、システムメモリへのアクセスは、複数のトランザクションを使用する。例えば、プリチャージ、行のアクティブ化/オープン、オープン行の列の読み取りアクセス、オープン行の列の書き込みアクセス、及び、オープン行のクローズ等のDRAMトランザクションが状況に応じて必要とされる。さらに、これらの様々なトランザクションは、それぞれ、待ち時間が異なる場合がある。アクティブ化及びプリチャージのトランザクションは、読み取りアクセス及び書き込みアクセスのトランザクションよりも大幅に待ち時間が長くなることが多い。
【0003】
バンクの同じ行への連続したアクセス等、上記トランザクションよりも使用するトランザクションが少ないメモリアクセスもある。より多くのトランザクションを必要とするトランザクションもある。例えば、要求された行がオープンでない異なるバンクへの連続したアクセスを含むメモリトランザクションは、より多くのトランザクションを必要とする。上記に加えて、行にアクセス後、いつ行をクローズするかは、性能及び電力消費に影響を与えるDRAMの制御ロジックによって決定される。
【0004】
上記を考慮して、コンピューティングシステムのための効率的なメモリアクセスを実行するための効率的な方法及びシステムが望まれる。
【0005】
添付図面と共に以下の説明を参照することによって、本明細書に記載される方法及び機構の利点をより良く理解することができよう。
【図面の簡単な説明】
【0006】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】メモリコントローラの一実施形態のブロック図である。
【
図3】作業負荷と総バンク待ち時間とに基づいた予測待ち時間に基づいて、ランクをリフレッシュするリフレッシュ動作を選択する方法の一実施形態のフロー図である。
【
図4】作業負荷と総バンク待ち時間とに基づいた予測待ち時間に基づいて、ランクをリフレッシュするリフレッシュ動作を選択する方法の一実施形態のフロー図である。
【
図5】作業負荷と総バンク待ち時間とに基づいた予測待ち時間に基づいて、ランクをリフレッシュするリフレッシュ動作を選択する方法の一実施形態のフロー図である。
【発明を実施するための形態】
【0007】
本発明は、様々な修正及び代替形態を受け入れるが、特定の実施形態を図面中の例によって示し、本明細書で詳細に説明する。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定するものではなく、反対に、本発明は、添付の請求項によって定義される本発明の範囲内に収まる全ての修正、均等物、及び代替物を包含することは、理解されたい。
【0008】
以下の説明では、本明細書に提示する方法及び機構の完全な理解を提供するために、多くの特定の詳細が述べられている。しかしながら、当業者は、それらの特定の詳細なしに様々な実施形態を実践し得ることを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の簡潔性及び明確さのために、図に示される要素は、必ずしも縮尺通りに描かれていないことは理解されよう。例えば、要素のいくつかの寸法は、他の要素に対して誇張されてよい。
【0009】
コンピューティングシステムのための効率的なメモリアクセスを実行するための様々なシステム、装置、方法、及びコンピュータ可読媒体が開示される。一実施形態では、コンピューティングシステムは、1つまたは複数のコンピューティングリソースと、様々な種類のダイナミックランダムアクセスメモリ(DRAM)のうちの1つ等の外部システムメモリとを含む。コンピューティングリソースの例には、汎用中央処理装置(CPU)、グラフィック処理装置(GPU)、加速処理装置(APU:accelerated processing unit)などが含まれる。様々な実施形態では、所与のコンピューティングリソースは、キャッシュメモリサブシステムを含む。所与のコンピューティングリソースがキャッシュメモリサブシステム内でメモリアクセス要求のミスを判別すると、所与のコンピューティングリソースはメモリアクセス要求を1つまたは複数のメモリコントローラのうちの所与のメモリコントローラに送信する。
【0010】
所与のメモリコントローラは、メモリアクセス要求のターゲットアドレスに関連付けられたメモリデバイスに結合される。コンピューティングシステムに複数のメモリデバイスが含まれている場合、オペレーティングシステムによってアドレス空間が複数のメモリデバイスに分散される。メモリコントローラは、コンピューティングリソースの要求アドレスとメモリデバイス(複数可)の記憶場所を指すアドレスとの間のマッピングをサポートする。ある実施形態では、メモリコントローラは、単一のメモリデバイスに接続される。他の実施形態では、メモリコントローラは、複数のメモリデバイスに接続される。
【0011】
ある実施形態では、メモリコントローラの制御ロジックは1つまたは複数のコンピューティングリソースが実行するべき作業負荷に関する情報を受信する。例えば、制御ロジックは、所与のコンピューティングリソースの一意のコンピューティングリソース識別子(ID)と、処理すべきスレッド数とを受信する。ある実施形態では、オペレーティングシステム(OS)スケジューラが、コンピューティングリソースIDとスレッド数とをメモリコントローラに送信する。例えば、OSスケジューラは、CPUに対応するIDとCPUにスケジュールされるスレッド数とを送信できる。例えば、OSスケジューラは、GPUに対応する異なるIDと、GPUにスケジュールされるスレッド数とを送信できる。
【0012】
様々な実施形態では、メモリコントローラの制御ロジックは、受信した情報に少なくとも基づいて待ち時間を予測する。所与のランクに対する予測待ち時間は、メモリコントローラから送信されたその所与のランクをターゲットにした最新のメモリアクセスからその所与のランクをターゲットにした他のメモリアクセスをメモリコントローラが受信するまでの予測時間量である。様々な実施形態では、メモリコントローラは、受信したメモリアクセス要求を記憶する保留中のキューを含む。メモリコントローラは、次に、メモリに伝えるために保留中のキューからメモリアクセス要求を取り出す。このような実施形態では、予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【0013】
例えば、一定のアプリケーションを処理するために特定のコンピューティングリソースが選択される。ある一定のアプリケーションの処理の振る舞いは、特定のコンピューティングリソースのキャッシュメモリサブシステムで所与の数のメモリアクセスミスを含む場合がある。これらのミスは、幾つかのメモリ要求がメモリコントローラを介してシステムメモリに送信されることにつながる。ある実施形態では、OSスケジューラはまた、ミスに対応する特定のアプリケーションまたはアプリケーションタイプを識別する一意のアプリケーションIDをメモリコントローラに送信する。アプリケーションタイプを使用してメモリアクセスミスを予測し、予測待ち時間を決定することもできる。
【0014】
メモリコントローラは、受信したメモリ要求のターゲットアドレスを、ターゲットランク、ターゲットランク内のターゲットバンク、及び、ターゲットバンク内のターゲット行の表示に翻訳する。メモリコントローラは、コンピューティングリソースIDと、メモリ要求がターゲットにしたランクへのスレッド数とに関するアクセス履歴を維持することができる。ある実施形態では、メモリコントローラによって行われた関連付けは、アプリケーションIDも使用する。ある実施形態では、コンピューティングリソースまたは電力マネージャも、コンピューティングリソースに対応する電力性能状態(P状態)をメモリコントローラに送信する。ある実施形態では、メモリコントローラは、受信した情報を有する1つまたは複数の表を維持し、どの条件の下で特定のランクにアクセスするかを判断する。さらに、メモリコントローラは、前述の予測待ち時間を決定するように構成される。
【0015】
様々な実施形態では、コンピューティングリソースは、実行のためにスレッドを受信すると、リソースIDと、コンピューティングリソースが処理するようにスケジュールされたスレッド数とを送信する。一実施形態では、コンピューティングリソースは、上記スレッド数の相違が生じると、スレッド数の更新を送信する。例えば、スレッド数の増加が閾値を超えた場合、コンピューティングリソースは、更新された数をメモリコントローラに送信する。同様に、数の減少が閾値未満に低下すると、コンピューティングリソースは、更新された数をメモリコントローラに送信する。
【0016】
さらに別の実施形態では、コンピューティングリソースは、コンピューティングリソースが使用するキャッシュメモリサブシステムに対応するキャッシュミス率の情報の更新を送信する。ある実施形態では、階層キャッシュメモリサブシステムの各レベルのミス率が、コンピューティングリソースによって送信される。他の実施形態では、1つの合算したミス率が送信される。スレッド数と同様、ミス率情報は、閾値をまたぐ変化が検出された時に送信される。様々な実施形態では、特定のランクがどの条件の下でアクセスされるか決定する時、また、上記待ち時間を予測する時、メモリコントローラは、P状態及びミス率の1つまたは複数を追加で使用する。
【0017】
ある実施形態では、メモリコントローラは、メモリデバイスに所与のランクに対してリフレッシュ間隔を開始する指示を受信する時、所与のランクの予測待ち時間に少なくとも基づいて、1つまたは複数のリフレッシュ動作を選択する。一実施形態では、メモリコントローラは、予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較する。全てのバンクをリフレッシュする動作の待ち時間は、所与のランクの全てのバンクをリフレッシュするのにかかる時間量である。一例では、所与のランクは、8つのバンクを含み、所与のランクに対して全てのバンクをリフレッシュする動作が行われる間、保留中のメモリ要求は、所与のランクの8つのバンクのいずれに対するアクセスも許可されない。様々な実施形態では、全てのバンクをリフレッシュする動作の待ち時間は、一定値である。例えば、全てのバンクをリフレッシュする動作の待ち時間は、約130ナノ秒(ns)であってよい。待ち時間は、クロックサイクル数として測定することもできる。
【0018】
対照的に、バンク毎のリフレッシュ動作の待ち時間は通常、全てのバンクをリフレッシュする動作の待ち時間より短い。一例では、バンク毎のリフレッシュ動作の待ち時間は、60nsに達し得る。しかしながら、8つのバンクのうち、1つのバンクがリフレッシュ中で、保留中のメモリ要求によってアクセスできない間、他の7つのバンクは、保留中のメモリ要求によってアクセス可能である。一実施形態では、メモリコントローラは、所与のランクをターゲットにした保留中のメモリ要求があると判断すると、所与のランクの複数のバンクのうちの所与のバンクにバンク毎のリフレッシュ動作を行うことを選択する。ある実施形態では、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短く、所与のランクをターゲットにした保留中のメモリ要求が無いとメモリコントローラが判断すると、メモリコントローラは、所与のランクの複数のバンクのうちの所与のバンクに対してバンク毎のリフレッシュ動作を行うことを選択する。
【0019】
ある実施形態では、メモリコントローラは、総バンク待ち時間を、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として決定する。他の実施形態では、メモリコントローラは、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より長いこと、総バンク待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短いこと、及び、所与のランクをターゲットにする1つまたは複数の保留中のメモリ要求があることを判別することに応答して、所与のランクのバンク毎のリフレッシュ動作を行う。他の実施形態では、メモリコントローラは、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短いと判断することに応答して、所与のランクのバンク毎のリフレッシュ動作を行う。
【0020】
図1を参照すると、コンピューティングシステム100の一実施形態の一般的なブロック図が示されている。図に示すように、コンピューティングシステム100は、各メモリコントローラ130とコンピューティングリソース110との間に通信ファブリック120を含む。図示の実施形態では、コンピューティングリソースは、中央処理装置(CPU)112、グラフィック処理装置(GPU)114、及びハブ116を含む。ハブ116は、マルチメディアエンジン118との通信に使用される。単一のメモリコントローラ130が示されているが、他の実施形態では、別の数のメモリコントローラがコンピューティングシステム100で使用される。
【0021】
ある実施形態では、コンピューティングシステム100のコンポーネントは、システムオンチップ(SOC)などの集積回路(IC)上の個々のダイである。他の実施形態では、コンポーネントは、システムインパッケージ(SiP)またはマルチチップモジュール(MCM)の個々のダイである。一実施形態では、コンピューティングシステム100は、モバイルコンピュータ、スマートフォン、スマートウォッチ、もしくはタブレット内のスタンドアロンシステム、デスクトップ、サーバ等である。CPU112、GPU114、及びマルチメディアエンジン118は、メモリアクセス要求を生成することができるコンピューティングリソースの例である。図示されていないが、他の実施形態では、他のタイプのコンピューティングリソースがコンピューティングリソース110に含まれる。
【0022】
様々な実施形態では、メモリコントローラ130は、通信ファブリック120を介してコンピューティングリソース110からメモリアクセス要求を受信し、メモリアクセス要求を、オフチップディスクメモリ162、及び、オフチップダイナミックランダムアクセスメモリ(DRAM)170として実装されるシステムメモリの1つまたは複数に送信する。メモリコントローラ130はまた、DRAM170及びディスクメモリ162から応答を受信し、その応答をコンピューティングリソース110の対応する要求元に送信する。
【0023】
CPU112の1つまたは複数のプロセッサコアのそれぞれは、所与の選択された命令セットアーキテクチャ(ISA)に従って命令を実行する回路を含む。様々な実施形態では、CPU112のプロセッサコアのそれぞれは、所与のISAの命令を処理するために使用されるスーパースカラ、マルチスレッドマイクロアーキテクチャを含む。ある実施形態では、GPU114は、相当な数の並列実行レーンを備えた高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンに対して単一命令複数データ(SIMD)パイプラインを使用する。マルチメディアエンジン118は、マルチメディアアプリケーションのための音声データ及び映像データを処理するためのプロセッサを含む。
【0024】
一例では、加速処理装置(APU)、ディスプレイコントローラ、オーディオプロセッサなどが、処理ユニット110に含まれる追加の候補である。APUの例は、GPU、FPGA、または他の処理ユニットと同じダイに統合されたCPUであり、消費電力を削減しながら、これらのユニット間のデータ転送速度を向上させる。他の実施形態では、APUは、ビデオ処理及び他のアプリケーション固有のアクセラレータを含む。
【0025】
様々な実施形態では、通信ファブリック120は、コンピューティングリソース110とメモリコントローラ130との間でトラフィックを前後に転送し、且つ、それぞれの通信プロトコルをサポートするためのインタフェースを含む。ある実施形態では、通信ファブリック120は、要求及び応答を記憶するためのキュー、内部ネットワークを通して要求を送信する前に受信した要求間の調整を行うための選択ロジック、パケットを構築及びデコードするためのロジック、及び、パケットのルートを選択するためのロジックを含む。
【0026】
ある実施形態では、コンピューティングシステム100のアドレス空間は、少なくともCPU112、GPU114、及びハブ116と入力/出力周辺機器(図示せず)及び他のタイプのコンピューティングリソース等の1つまたは複数の他のコンポーネントとの間で分割される。どのアドレスがどのコンポーネントにマッピングされるか、従って、CPU112、GPU114、及びハブ116のどれに特定のアドレスに対するメモリ要求がルーティングされるべきかを決定するために、メモリマップが維持される。コンピューティングリソース110の1つまたは複数は、各プロセッサコアのメモリ待ち時間を低減するためのキャッシュメモリサブシステムを含む。さらに、ある実施形態では、共有キャッシュメモリサブシステムは、オフチップDRAM170及び/またはオフチップディスクメモリ162にアクセスする前に、最後のレベルのキャッシュ(LLC)としてプロセッサコアによって使用される。コンピューティングリソース110のキャッシュメモリサブシステム(図示せず)は、データを記憶するように構成された高速キャッシュメモリを含む。様々な実施形態では、キャッシュメモリサブシステムは、キャッシュの階層として実装される。本明細書で使用される場合、「メモリアクセス」という用語は、対応する要求アドレスの要求されたデータがキャッシュに存在する場合に、キャッシュヒットをもたらすメモリ読み取り要求またはメモリ書き込み要求の動作を行うことを指す。あるいは、要求されたデータがキャッシュに存在しない場合、メモリアクセス要求はキャッシュミスになる。
【0027】
メモリコントローラ130は、メモリバス150を通してオフチップDRAM170にメモリアクセス要求を送信する。キャッシュミスに応答して、元のメモリアクセス要求を完了するために、対応するデータが、オフチップDRAM170から処理ユニット110のキャッシュメモリサブシステムに伝達される。様々な実施形態では、オフチップDRAM170は、マルチチャネルメモリアーキテクチャを含む。このタイプのアーキテクチャは、それらの間の通信のチャネルを追加することにより、メモリコントローラ130へのデータの転送速度を向上させる。ある実施形態では、マルチチャネルアーキテクチャは、複数のメモリモジュール及びマザーボード及び/または複数のチャネルをサポートできるカードを利用する。ある実施形態では、DRAM170は、三次元集積回路(3D IC)を利用してシステムメモリを提供する。このような実施形態では、3D集積DRAMは、オフチップメモリアクセスを低減するために待ち時間の少ない相互接続と追加のオンチップメモリストレージとの両方を提供する。様々な実施形態では、DRAM170は、コンピューティングシステム100のシステムメモリとして使用される。1つまたは複数の行バッファまたは他の同等の構造を含む行ベースのアクセス方式を使用するシステムメモリのための他のメモリ技術が可能であり、企図されている。他のメモリ技術の例には、相変化メモリ、スピントルク伝達抵抗メモリ、メモリスタなどが含まれる。
【0028】
図に示すように、DRAM170は、複数のランク176A~176Bを含み、各ランクは複数のメモリアレイバンクを有する。例えば、図示のように、ランク176Aは、メモリアレイバンク174A~174Bを含む。バンク174A~174Bの各バンクは、行バッファ172A~172Bを含む。行バッファ172A~172Bの各行バッファは、メモリアレイバンク174A~174B内の複数の行のアクセスされた行に対応するデータを記憶する。アクセスされた行は、受信したメモリアクセス要求のDRAMアドレスによって識別される。DRAM170内の制御ロジックは、DRAM170内のデータ及び制御ラインのアクティブ化及びプリチャージ等のトランザクションを行って、識別された行からデータを読み取り、識別された行にデータを書き込む。
【0029】
様々な実施形態では、DRAM170は、1つまたは複数のメモリチャネル、1チャネルあたり1つまたは複数のメモリモジュールもしくはデバイス、1メモリモジュールあたり1つまたは複数のランク、1ランクあたり1つまたは複数のバンク、及び、1バンクあたり1つまたは複数の行を含む。通常、各行はデータのページを記憶する。ページのサイズは、設計上の考慮事項に基づいて選択される。このようなページサイズは、1キロバイト(1KB)、4キロバイト(4KB)等であってよい。様々な実施形態では、メモリバス150は、双方向共有バス構造を利用する。
【0030】
キャッシュメモリサブシステムでキャッシュミスが生じる場合、要求されたデータを読み出すメモリアクセス要求が生成される。メモリコントローラ130は、コンピューティングリソース110から受信したメモリアクセス要求のターゲットアドレスを翻訳する。様々な実施形態では、メモリコントローラ130のメモリアクセス制御ロジックを実行することによって、ランク176A~176Bのターゲットランク、メモリアレイバンク174A~174Bのターゲットバンク、及び、ターゲットバンク内のターゲットページを決定する。
【0031】
図1に示されるように、メモリコントローラ130は、通信ファブリック120を介してコンピューティングリソース110から受信したメモリアクセス要求をキューに入れるための要求キュー132を含む。メモリコントローラ130はまた、DRAM170から受信した応答を記憶するための応答キュー134を有する。様々な実施形態では、要求キュー132は、読み取り及び書き込みの両方のメモリアクセス要求を記憶するための1つまたは複数のキューを含む。他の実施形態では、要求キュー132は、読み取り要求及び書き込み要求を記憶するために別個のキューを含む。さらに別の実施形態では、要求キュー132は、受信したメモリアクセス要求を記憶するための1つまたは複数のキューと、1つまたは複数のキューから選択されたスケジュールされたメモリアクセス要求を記憶するための別個のキューとを含む。
【0032】
図1のスケジューラ136は、DRAM170に発行するために、要求キュー132に記憶されたメモリアクセス要求を選択するためのロジックを含む。様々な実施形態では、メモリ要求は、順番でまたは順不同で選択されてよい。メモリコントローラ130による要求の順不同の選択は、優先度レベル、サービス品質表示、経過時間、プロセスもしくはスレッド識別、ターゲットアドレス、並びに、同じメモリチャネルをターゲットにする、同じランクをターゲットにする、同じバンクをターゲットにする、及び/または、同じページをターゲットにするなど、他の記憶された要求との関係に基づいてよい。同様に、ある実施形態では、メモリコントローラ130は、コンピューティングリソース110への読み取り応答(すなわち、検索された読み取りデータ)の順不同の発行もサポートする。
【0033】
リフレッシュ動作タイプセレクタ138(「セレクタ」138とも呼ばれる)を使用して、今後のまたは現在の動作条件に対応する情報に少なくとも部分的に基づいて、所与のランクの待ち時間を予測する。予測待ち時間は、所与のランクをターゲットにした最後に残っているメモリアクセスがメモリコントローラから送信されてから、所与のランクをターゲットにした次のメモリアクセスがメモリコントローラによって受信される時点までに経過すると予測される時間量である。様々な実施形態では、予測待ち時間は、未処理のメモリ要求を記憶するための要求キュー132の保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。リフレッシュ動作タイプセレクタ138は、予測待ち時間に少なくとも基づいて、所与のランクのリフレッシュ間隔中、1つまたは複数のリフレッシュ動作を選択する。
【0034】
様々な実施形態では、セレクタ138は、コンピューティングリソース110の1つを識別するコンピューティングリソース識別子(ID)と、コンピューティングリソース110の識別された1つに割り当てられたスレッド数とを受信する。ある実施形態では、オペレーティングシステム(OS)スケジューラが、この情報を送信し、他の実施形態では、コンピューティングリソース110が、この情報をセレクタ138に送信する。ある実施形態では、コンピューティングリソース110または電力マネージャ(図示せず)が、コンピューティングリソース110に対応する電力性能状態(P状態)をセレクタ138に送信する。他の実施形態では、コンピューティングリソース110の1つまたは複数が、コンピューティングリソースによってアクセスされるキャッシュメモリサブシステムのキャッシュヒット率及び/またはキャッシュミス率を送信する。例えば、個々のミス率のそれぞれの積を使用する。さらに別の実施形態では、各重みが、階層キャッシュメモリサブシステムの各レベルに関連付けられ、重みは、加重和で使用される、または、個々の値としてセレクタ138に送信される。ある実施形態では、処理されているスレッド数とミス率との更新された値は、これらの値の変化が対応する閾値を超えると、送信される。様々な実施形態では、セレクタ138は、受信した情報に基づいて、ランク176A~176Bのそれぞれの対応する待ち時間を予測する。
【0035】
様々な実施形態では、メモリコントローラ130が、ランク176A~176Bの所与のランクのリフレッシュ間隔を開始する指示を受信すると、セレクタ138が、所与のランクの予測待ち時間に少なくとも基づいて、1つまたは複数のリフレッシュ動作を選択する。一実施形態では、セレクタ138は、予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較する。ある実施形態では、待ち時間は、クロックサイクル数として測定される。様々な実施形態では、セレクタ138は、総バンク待ち時間を、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として決定する。例えば、バンク毎のリフレッシュ動作の待ち時間が60nsで、所与のランクの8つのバンクのうちの6つが、既にリフレッシュされている場合、総バンク待ち時間は、残りの2つのバンク掛ける60ns/バンク、すなわち、120nsである。総バンク待ち時間は、クロックサイクル数として測定することもできる。
【0036】
ある実施形態では、セレクタ138は、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より長いこと、総バンク待ち時間が全てのバンクをリフレッシュする動作の待ち時間より長いこと、及び、所与のランクをターゲットにした要求キュー132に保留中のメモリ要求が無いことを判別することに応答して、所与のランクに対して全てのバンクをリフレッシュする動作を選択する。ある実施形態では、セレクタ138は、所与のランクをターゲットにした要求キュー132に1つまたは複数の保留中のメモリ要求があると判断することに応答して、所与のランクに対してバンク毎のリフレッシュ動作を選択する。他の実施形態では、セレクタ138は、予測待ち時間が全てのバンクをリフレッシュする動作の待ち時間より短いと判断することに応答して、所与のランクに対してバンク毎のリフレッシュ動作を選択する。
【0037】
様々な実施形態では、メモリバス150が、読み取りモードまたは書き込みモード中等、一度に一方向へのデータトラフィックをサポートする。ある実施形態では、メモリバス150は、少なくともコマンドバス及びデータバスを使用し、DRAM170からメモリコントローラ130へのデータバス上のデータトラフィックを受信する読み取りモードをサポートする。さらに、メモリバス150は、データバス上のデータトラフィックをメモリコントローラ130からDRAM170に送信するための書き込みモードをサポートする。
【0038】
図2を参照すると、メモリコントローラ200の一実施形態の一般的なブロック図が示されている。図示の実施形態では、メモリコントローラ200は、通信ファブリックを介したコンピューティングリソースへのインタフェース210、受信したメモリアクセス要求及び受信した応答を記憶するキュー220、制御ユニット250、並びに、少なくともメモリバスのデータバスを介したメモリデバイスへのインタフェース280を含む。インタフェース210及び280のそれぞれは、各通信プロトコルをサポートする。
【0039】
ある実施形態では、キュー220は、受信した読み取り要求を記憶する読み取りキュー232と、受信した書き込み要求を記憶する別個の書き込みキュー234とを含む。他の実施形態では、キュー220は、メモリ読み取り要求とメモリ書き込み要求との両方を記憶する統合されたキューを含む。一実施形態では、キュー220は、読み取りキュー232、書き込みキュー234、または統合されたキュー(統合されたキューが使用される場合)から選択されたスケジュールされたメモリアクセス要求を記憶するキュー236を含む。キュー236は、保留中のキュー236とも呼ばれる。ある実施形態では、制御レジスタ270は、現在のモードの表示を記憶する。例えば、オフチップメモリデータバスとメモリデバイスは、所与の時間の読み取りモードまたは書き込みモードをサポートする。従って、トラフィックは現在のモード中に所与の一方向にルーティングされ、現在のモードが終了すると、方向が変わる。
【0040】
ある実施形態では、読み取りスケジューラ252は、読み取りキュー232から読み取り要求を順不同で選択するための調整ロジックを含む。読み取りスケジューラ252は、サービス品質(QoS)もしくは他の優先度情報、経過時間、プロセスもしくはスレッド識別子(ID)、並びに、同じメモリチャネルをターゲットにする、同じランクをターゲットにする、同じバンクをターゲットにする、及び/または、同じページをターゲットにするなど、他の記憶された要求との関係に基づいて、読み取りキュー232内の記憶された要求のメモリデバイスへの順不同の発行をスケジュールする。書き込みスケジューラ254は、書き込みキュー234のための類似の選択ロジックを含む。ある実施形態では、応答スケジューラ256は、優先順位に基づいて、メモリデバイスから受信された応答をコンピューティングリソースに順不同で発行するための同様のロジックを含む。
【0041】
ランクアクセス待ち時間ユニット262は、ユニット262とも呼ばれ、今後のまたは現在の動作条件に対応する受信した情報に少なくとも基づいて、所与のランクの待ち時間を予測する。予測待ち時間は、所与のランクをターゲットにした最後のメモリアクセスが保留中のキュー236から送信されて対応される第1の時点から、所与のランクをターゲットにした次のメモリアクセスが保留中のキュー236に記憶される第2の時点までである。言い換えると、予測待ち時間は、保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。様々な実施形態では、ユニット262は、コンピューティングリソースID、コンピューティングリソースに割り当てられたスレッド数、コンピューティングリソースのP状態、及び、キャッシュメモリサブシステムのミス率のうちの1つまたは複数を受信する。受信した情報と、ターゲットアドレスのメモリデバイスのランクへのマッピングとに基づいて、ユニット262は、ランクの予測待ち時間を決定する。制御レジスタ270の複数のプログラム可能レジスタは、メモリデバイスの複数のランクの予測待ち時間を決定するためにユニット262が使用する1つまたは複数の閾値を記憶する。
【0042】
ある実施形態では、ユニット262はまた、総バンク待ち時間を、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量として決定する。ある実施形態では、メモリコントローラ200が、メモリデバイスに所与のランクに対してリフレッシュ間隔を開始する指示を受信すると、リフレッシュ動作タイプセレクタ260は、予測待ち時間と、所与のランクに対してユニット262によって決定された総バンク待ち時間とに少なくとも基づいて、1つまたは複数のリフレッシュ動作を選択する。リフレッシュ動作タイプセレクタ260は、セレクタ260とも呼ばれる。所与のランクの既にリフレッシュされたバンクのカウントを維持するのではなく、セレクタ260は、ユニット262が決定した予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較して、リフレッシュ動作を選択する。従って、一例では、ランクが8つのバンクを含み、6つをリフレッシュする時、セレクタ260は、バンク毎のリフレッシュ動作を必ず選択しなければならないのではなく、リフレッシュ間隔で全てのバンクをリフレッシュする動作を選択して、バンクのリフレッシュを完了することもできる。
【0043】
バンク毎のリフレッシュ動作は、選択されたバンクをリフレッシュしながら、8つのバンクのうち7つへのアクセスを可能にする。しかしながら、8つのバンクのうち6つをリフレッシュし、ユニット260が決定した予測待ち時間が全てのバンクをリフレッシュする動作のリフレッシュ待ち時間より長い場合、セレクタ260は、全てのバンクをリフレッシュする動作を選択することができる。予測待ち時間が正確である時、全てのバンクをリフレッシュする動作が8つのバンク全てをリフレッシュする間、保留中のキュー236には所与のランクをターゲットにしたメモリ要求が無いので、ブロックされるメモリアクセスは無い。
【0044】
図3を参照すると、ランクのアクセス間の予測待ち時間に基づいてリフレッシュ動作を選択する方法300の一実施形態が示される。説明のために、本実施形態の(また、
図4の)ステップも順番に示される。しかしながら、記載の方法の様々な実施形態では、記載する要素のうちの1つまたは複数は、同時に実行される、示されるのとは異なる順序で実行される、または、全体的に省略されることに注意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステムまたは装置のいずれも、方法300を実施するように構成されている。
【0045】
図示の方法300において、1つまたは複数のコンピューティングリソースが、1つまたは複数のソフトウェアアプリケーションを処理する(ブロック302)。コンピューティングリソースの例は、中央処理装置、グラフィックス処理装置、並びにその他のものを含む。作業負荷評価情報が、メモリコントローラに送信される(ブロック304)。この情報の例は、コンピューティングリソースID、コンピューティングリソースに割り当てられたスレッド数、コンピューティングリソースの性能状態、及び、キャッシュメモリサブシステムのヒット率及び/またはミス率のうちの1つまたは複数を含む。受信した情報、ターゲットアドレスのメモリデバイスへのマッピング、及び、維持されたカウンタ値に基づいて、保留中のキューがランクをターゲットにしたメモリ要求を記憶していない時間に対応するランクの待ち時間を予測する(ブロック306)。上記のように、所与のランクの予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューがその所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【0046】
キャッシュメモリサブシステムの各レベルでミスが判別される場合(条件ブロック308の「はい」分岐)、所与のコンピューティングリソースに対するメモリ要求が生成される(ブロック310)。生成されたメモリ要求は、メモリコントローラに送信される(ブロック312)。キャッシュメモリサブシステムの各レベルでミスが判別されない場合(条件ブロック308の「いいえ」分岐)、方法300の制御フローは、条件ブロック314に進む。リフレッシュ間隔が所与のランクに対して生じていると判断される場合(条件ブロック314の「はい」分岐)、リフレッシュ間隔中、所与のランクに対する全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間で選択を行うために少なくとも予測待ち時間を利用する(ブロック316)。リフレッシュ動作を選択するために、ある実施形態では、メモリコントローラは、所与のランクをターゲットにした保留中のメモリ要求がある時、所与のランクに対してバンク毎のリフレッシュ動作を選択する。様々な実施形態では、所与のランクをターゲットにした保留中のメモリ要求が無い時、メモリコントローラは、予測待ち時間をリフレッシュすべき残りのバンク数の総バンク待ち時間と比較することに加えて、予測待ち時間と、全てのバンクをリフレッシュする動作の待ち時間とを比較して、リフレッシュ動作を選択する。
【0047】
図4を参照すると、作業負荷に基づいたランクのアクセス間の予測待ち時間に基づいてランクをリフレッシュするリフレッシュ動作を選択する方法400の他の実施形態が示される。複数のバンクを有する所与のランクのリフレッシュ間隔が開始される(ブロック402)。所与のランクに対する予測待ち時間が決定される(ブロック404)。前述のように、所与のランクの予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューがその所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。(
図3の)方法300のブロック302及び304に関して前述したように、作業負荷評価情報、ターゲットアドレスのメモリデバイスのランクへのマッピング、及び、維持されたカウンタ値を使用して、ランクの待ち時間を予測する。所与のランクの全てのバンクがリフレッシュされる場合(条件ブロック406の「はい」分岐)、リフレッシュ間隔が完了し、メモリデバイスは、所与のランクの全てのバンクのメモリ要求に応える準備ができる(ブロック408)。
【0048】
所与のランクのバンクの全てがリフレッシュされていない場合(条件ブロック406の「いいえ」分岐)、所与のランクの総バンク待ち時間が決定される(ブロック410)。総バンク待ち時間は、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量である。例えば、バンク毎のリフレッシュ動作の待ち時間が60nsで、所与のランクの8つのバンクのうちの6つが既にリフレッシュされている場合、総バンク待ち時間は、残りの2つのバンク掛ける60ns/バンク、すなわち、120nsである。総バンク待ち時間は、クロックサイクル数として測定することもできる。
【0049】
所与のランクに対して保留中のメモリ要求がある場合(条件ブロック412の「はい」分岐)、現在のリフレッシュ間隔中に所与のランクからリフレッシュされていないバンクが選択される(ブロック414)。所与のランクの選択されたバンクは、バンク毎のリフレッシュ動作を用いてリフレッシュされる(ブロック416)。その後、方法400の制御フローは、ブロック404に戻る。所与のランクに保留中のメモリ要求がない場合(条件ブロック412の「いいえ」分岐)、リフレッシュ間隔中、所与のランクに対する全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間で選択を行うために予測待ち時間及び総バンク待ち時間が利用される(ブロック418)。その後、方法400の制御フローは、ブロック404に戻る。再度、様々な実施形態では、予測待ち時間は、未処理のメモリ要求を記憶するための保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【0050】
図5を参照すると、作業負荷に基づいたランクのアクセス間の予測待ち時間に基づいてランクをリフレッシュするリフレッシュ動作を選択する方法500の他の実施形態が示されている。リフレッシュ間隔は開始されているが、まだ、完了していない。この時点で、所与のバンクのリフレッシュ中に所与のランクをターゲットにした保留中のメモリ要求が無いと判断される(ブロック502)。この判断は、(
図4の)方法400のブロック418に到達することに類似している。前述のように、所与のランクの予測待ち時間は、未処理のメモリ要求を記憶するためのメモリコントローラの保留中のキューが所与のランクをターゲットにしたメモリ要求を記憶していない時間量である。
【0051】
予測待ち時間が、全てのバンクをリフレッシュする動作の待ち時間以下の場合(条件ブロック504の「いいえ」分岐)、現在のリフレッシュ間隔中にリフレッシュされていないバンクが所与のランクから選択される(ブロック506)。所与のランクの選択されたバンクは、バンク毎のリフレッシュ動作を用いてリフレッシュされる(ブロック508)。例えば、予測待ち時間が90nsで、全てのバンクをリフレッシュする動作の待ち時間が130nsの場合、全てのバンクをリフレッシュする動作が完了する前に、所与のランクをターゲットにしたメモリ要求がメモリコントローラの保留中のキューに記憶されることが予測される。従って、所与のランクのバンクをリフレッシュするために、バンク毎のリフレッシュ動作が選択される。
【0052】
前述のように、所与のランクの総バンク待ち時間は、所与のランクのまだリフレッシュされていないバンク数をバンク毎のリフレッシュ動作を用いてリフレッシュする時間量である。予測待ち時間が、全てのバンクをリフレッシュする動作の待ち時間より長い(条件ブロック504の「はい」分岐)が、所与のランクの総バンク待ち時間が、全てのバンクをリフレッシュする動作の待ち時間以下の場合(条件ブロック510の「いいえ」分岐)、方法500の制御フローは、ブロック506に進み、バンク毎のリフレッシュ動作のためのバンクが選択される。例えば、予測待ち時間が200nsで、全てのバンクをリフレッシュする動作の待ち時間が130nsの場合、全てのバンクをリフレッシュする動作が完了する前に、所与のランクをターゲットにしたメモリ要求は、メモリコントローラの保留中のキューに記憶されないことが予測される。しかしながら、バンク毎のリフレッシュ動作の待ち時間が60nsで、所与のランクの8つのバンクのうちの6つが、既にリフレッシュされている場合、総バンク待ち時間は、2つのバンク掛ける60ns/バンク、すなわち、120nsである。全てのバンクをリフレッシュする動作の待ち時間(130ns)と総バンク待ち時間(120ns)のそれぞれが、予測待ち時間(200ns)より短いので、所与のランクをターゲットにしたメモリ要求がメモリコントローラの保留中のキューに記憶されることが予測される前に、全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間の各選択が完了することが予測される。しかしながら、総バンク待ち時間は、全てのバンクをリフレッシュする動作の待ち時間より短いので、2つの残りのバンクに対してバンク毎のリフレッシュ動作の選択が実行される。
【0053】
予測待ち時間が、全てのバンクをリフレッシュする動作の待ち時間より長く(条件ブロック504の「はい」分岐)、所与のランクの総バンク待ち時間が、全てのバンクをリフレッシュする動作の待ち時間より長い場合(条件ブロック510の「はい」分岐)、所与のランクの全てのバンクは、全てのバンクをリフレッシュする動作を用いてリフレッシュされる(ブロック512)。例えば、予測待ち時間が200nsで、全てのバンクをリフレッシュする動作の待ち時間が130nsの場合、全てのバンクをリフレッシュする動作が完了する前に、所与のランクをターゲットにしたメモリ要求はメモリコントローラの保留中のキューに記憶されないことが予測される。バンク毎のリフレッシュ動作の待ち時間が60nsで、所与のランクの8つのバンクのうちの5つが、既にリフレッシュされている場合、総バンク待ち時間は、3つのバンク掛ける60ns/バンク、すなわち、180nsである。全てのバンクをリフレッシュする動作の待ち時間(130ns)と総バンク待ち時間(180ns)のそれぞれが、予測待ち時間(200ns)より短いので、所与のランクをターゲットにしたメモリ要求がメモリコントローラの保留中のキューに記憶されることが予測される前に、全てのバンクをリフレッシュする動作とバンク毎のリフレッシュ動作との間の各選択が完了することが予測される。しかしながら、全てのバンクをリフレッシュする動作の待ち時間は、総バンク待ち時間より短いので、全てのバンクをリフレッシュする動作の選択が実行される。
【0054】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述の方法及び/または機構を実施する。プログラム命令は、C言語などの高水準プログラミング言語でハードウェアの振る舞いを記述している。代替として、Verilogなどのハードウェア設計言語(HDL)を使用する。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、使用中コンピューティングシステムによってアクセス可能で、プログラム命令及び付随するデータをプログラム実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、少なくとも1つまたは複数のメモリと、プログラム命令を実行するように構成された1つまたは複数のプロセッサとを含む。
【0055】
上記実施形態が、実装態様の非限定的な例にすぎないことを強調しておく。上記の開示を十分に理解すると、多くの変形形態及び修正形態が、当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図される。