(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-20
(45)【発行日】2023-12-28
(54)【発明の名称】メモリの複数のランクを有するシステムのダイナミックランダムアクセスメモリリフレッシュの構成
(51)【国際特許分類】
G06F 12/00 20060101AFI20231221BHJP
G11C 11/406 20060101ALI20231221BHJP
【FI】
G06F12/00 550B
G06F12/00 571B
G11C11/406 104
G11C11/406 400
G11C11/406 102
(21)【出願番号】P 2021502979
(86)(22)【出願日】2019-06-18
(86)【国際出願番号】 US2019037789
(87)【国際公開番号】W WO2020023133
(87)【国際公開日】2020-01-30
【審査請求日】2022-05-20
(32)【優先日】2018-07-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケダーナス バラクリシュナン
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開平10-003785(JP,A)
【文献】特開2008-046989(JP,A)
【文献】国際公開第2017/205378(WO,A1)
【文献】特開2007-066382(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 11/406
(57)【特許請求の範囲】
【請求項1】
複数のメモリのランクを含むメモリ機能ブロックと、
前記メモリに接続されたメモリコントローラ機能ブロックと、を備え、
メモリコントローラは、
前記メモリのランク毎のバッファリング済みのメモリアクセスに基づいて、リフレッシュ間隔中にリフレッシュが実行されるメモリの2つ以上のランクを検出することと、
前記メモリの2つ以上のランクに対するバッファリング済みのメモリアクセスの1つ以上の特性に少なくとも部分的に基づいて、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行するためのリフレッシュ順序を決定することと、
前記リフレッシュ順序で、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行することと、
を行うように構成されたリフレッシュロジックを含む、
電子デバイス。
【請求項2】
前記リフレッシュ順序で、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行する場合に、
前記リフレッシュロジックは、
前記メモリの2つ以上のランクのうち前記リフレッシュ順序の1番目である所定のランクについて、対応するバッファリング済みのメモリアクセスを停止することと、前記リフレッシュ間隔の開始とほぼ同時にメモリの前記所定のランクに対してリフレッシュを実行することと、を行うように構成されている、
請求項1の電子デバイス。
【請求項3】
前記リフレッシュ順序で、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行する場合に、
前記リフレッシュロジックは、
前記リフレッシュ順序で前記メモリのランクのうち前のランクに対してリフレッシュが実行されている間、前記メモリのランクのうち所定のランクについて対応するバッファリング済みのメモリアクセスを実行することによって、後続のリフレッシュのためにメモリの前記所定のランクを準備することを行うように構成されている、
請求項1の電子デバイス。
【請求項4】
前記リフレッシュロジックは、
前記リフレッシュ順序で前記メモリのランクのうち前記前のランクに対してリフレッシュが実行されている間、特定のメモリコマンドをメモリの前記所定のランクに送信することを停止することによって、前記後続のリフレッシュのためにメモリの前記所定のランクを準備することを行うように構成されている、
請求項3の電子デバイス。
【請求項5】
前記リフレッシュロジックは、
前記リフレッシュ間隔中にリフレッシュが実行される前記メモリのランクの数に少なくとも部分的に基づいて、前記リフレッシュ間隔を複数のサブ間隔に分割することであって、各サブ間隔中に前記メモリの2つ以上のランクのうち異なるランクに対してリフレッシュが実行される、ことを行うように構成されている、
請求項1の電子デバイス。
【請求項6】
前記バッファリング済みのメモリアクセスの特性は、前記バッファリング済みのメモリアクセスのカウントを含み、
より多くのバッファリング済みのメモリアクセスを有するメモリのランクは、前記リフレッシュ順序において、より少ないバッファリング済みのメモリアクセスを有するメモリのランクよりも後の順序に含まれる、
請求項1の電子デバイス。
【請求項7】
前記バッファリング済みのメモリアクセスの特性は、前記メモリアクセスの各々のタイプを含み、
より多くの所定のタイプのバッファリング済みのメモリアクセスを有するメモリのランクは、前記リフレッシュ順序において、より少ない前記所定のタイプのバッファリング済みのメモリアクセスを有するメモリのランクよりも先の順序に含まれる、
請求項1の電子デバイス。
【請求項8】
前記メモリアクセスの各々のタイプは、メモリ読み出し又はメモリ書き込みのうち一方を含む、
請求項7の電子デバイス。
【請求項9】
前記バッファリング済みのメモリアクセスの特性は、前記メモリアクセスの優先度を含み、
より高い優先度のバッファリング済みのメモリアクセスをより多く有するメモリのランクは、前記リフレッシュ順序において、より高い優先度のバッファリング済みのメモリアクセスをより少なく有するメモリのランクよりも先の順序に含まれる、
請求項1の電子デバイス。
【請求項10】
前記リフレッシュロジックは、
前記バッファリング済みのメモリアクセスの前記1つ以上の特性に加えて、前記メモリコントローラによって実行された又は実行される動作に基づいて、前記メモリのランクのうち少なくとも1つについてのリフレッシュ間隔中にリフレッシュを実行するためのリフレッシュ順序を決定することを行うように構成されている、
請求項1の電子デバイス。
【請求項11】
特定の数のメモリアクセスがメモリの所定のランク内にバッファリングされている場合に、前記メモリの所定のランクに対してリフレッシュが実行される、
請求項1の電子デバイス。
【請求項12】
各ランクは、1つ以上のメモリのバンクを含み、
前記検出することと、前記決定することと、前記実行することと、が前記メモリのランク内のメモリのバンク
に対して実行されることによって、メモリの所定のランク内の前記1つ以上のメモリのバンクの一部のみが前記リフレッシュ間隔中にリフレッシュされる、
請求項1の電子デバイス。
【請求項13】
複数のメモリのランクを含むメモリ機能ブロックと、リフレッシュロジックを含むメモリコントローラ機能ブロックと、を有する電子デバイスを動作させるための方法であって、
前記リフレッシュロジックによって、前記メモリのランク毎のバッファリング済みのメモリアクセスに基づいて、リフレッシュ間隔中にリフレッシュが実行されるメモリの2つ以上のランクを検出することと、
前記メモリの2つ以上のランクに対するバッファリング済みのメモリアクセスの1つ以上の特性に少なくとも部分的に基づいて、前記リフレッシュロジックによって、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行するためのリフレッシュ順序を決定することと、
前記メモリコントローラ
機能ブロックによって、前記リフレッシュ順序で、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行することと、を含む、
方法。
【請求項14】
前記リフレッシュ順序で、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行することは、
前記メモリの2つ以上のランクのうち前記リフレッシュ順序の1番目である所定のランクについて、対応するバッファリング済みのメモリアクセスを停止することと、前記リフレッシュ間隔の開始とほぼ同時にメモリの前記所定のランクに対してリフレッシュを実行することと、を含む、
請求項13の方法。
【請求項15】
前記リフレッシュ順序で、前記リフレッシュ間隔中に前記メモリの2つ以上のランクに対してリフレッシュを実行することは、
前記リフレッシュ順序で前記メモリのランクのうち前のランクに対してリフレッシュが実行されている間、前記メモリのランクのうち所定のランクについて対応するバッファリング済みのメモリアクセスを実行することによって、後続のリフレッシュのためにメモリの前記所定のランクを準備することを含む、
請求項13の方法。
【請求項16】
前記リフレッシュ順序で前記メモリのランクのうち前記前のランクに対してリフレッシュが実行されている間、特定のメモリコマンドをメモリの前記所定のランクに送信することを停止することによって、前記後続のリフレッシュのためにメモリの前記所定のランクを準備することをさらに含む、
請求項15の方法。
【請求項17】
前記リフレッシュ間隔中にリフレッシュが実行される前記メモリのランクの数に少なくとも部分的に基づいて、前記リフレッシュ間隔を複数のサブ間隔に分割することであって、各サブ間隔中に前記メモリの2つ以上のランクのうち何れかのランクに対してリフレッシュが実行される、ことをさらに含む、
請求項13の方法。
【請求項18】
前記バッファリング済みのメモリアクセスの特性は、前記バッファリング済みのメモリアクセスのカウントを含み、
より多くのバッファリング済みのメモリアクセスを有するメモリのランクは、前記リフレッシュ順序において、より少ないバッファリング済みのメモリアクセスを有するメモリのランクよりも後の順序に含まれる、
請求項13の方法。
【請求項19】
前記バッファリング済みのメモリアクセスの特性は、前記メモリアクセスの各々のタイプを含み、
より多くの所定のタイプのバッファリング済みのメモリアクセスを有するメモリのランクは、前記リフレッシュ順序において、より少ない前記所定のタイプのバッファリング済みのメモリアクセスを有するメモリのランクよりも先の順序に含まれる、
請求項13の方法。
【請求項20】
前記バッファリング済みのメモリアクセスの特性は、前記メモリアクセスの優先度を含み、
より高い優先度のバッファリング済みのメモリアクセスをより多く有するメモリのランクは、前記リフレッシュ順序において、より高い優先度のバッファリング済みのメモリアクセスをより少なく有するメモリのランクよりも先の順序に含まれる、
請求項13の方法。
【請求項21】
前記リフレッシュロジックは、
前記バッファリング済みのメモリアクセスの前記1つ以上の特性に加えて、前記メモリコントローラによって実行された又は実行される動作に基づいて、前記メモリのランクのうち少なくとも1つについてのリフレッシュ間隔中にリフレッシュを実行するためのリフレッシュ順序を決定することを行うように構成されている、
請求項13の方法。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術)
一部の電子デバイスは、ダブルデータレート第4世代(DDR4)同期DRAM等のダイナミックランダムアクセスメモリ(DRAM)を含む。例えば、デスクトップコンピュータは、各種の計算処理の情報(すなわち、データ、命令等)を記憶するために使用されるメインメモリとして、数ギガバイトのDDR4 SDRAMを含むことができる。一般に、DRAMは、半導体集積回路チップ上に製造された集積回路要素を用いて情報を記憶する半導体メモリである。例えば、一部のDRAMは、情報のビットを記憶するためにキャパシタを使用し、キャパシタは、論理値1を記憶するために充電され、論理値0を記憶するために放電される。DRAMは、情報を記憶するために使用される回路要素によって時間の経過と共に電荷が消失するという意味で「ダイナミック」である。これは、回路要素が周期的に再充電されない場合、DRAMに記憶された情報が最終的に消失することを意味する。例えば、キャパシタを記憶要素として使用するDRAMの場合、キャパシタの充電状態がリークによって失われる。したがって、記憶された情報を保持するために、キャパシタを再充電、すなわち「リフレッシュ」しなければならない。
【0002】
一部の電子デバイスは、大量のDRAMを有するメモリを含む。このメモリは、通常、メモリを形成するために組み合わされた複数の個別のDRAM集積回路チップ(或いは、より簡単に言えば「DRAMチップ」)上に実装される。これらの電子デバイスでは、複数のDRAMチップの個別のDRAMチップを、電力制御、アドレス指定/メモリアクセス等の問題に対して論理的及び/又は物理的なグループに分割することができる。例えば、一部の電子デバイスでは、複数のDRAMチップがメモリモジュール(例えば、デュアルインラインメモリモジュール、すなわちDIMM等)に取り付けられ、メモリモジュールは、電子デバイス内の通信バスに接続されたソケットに取り付けられる。このような電子デバイスでは、電源接続、チップセレクト、並びに、他の電力、制御及びアクセス信号を、メモリモジュール上のDRAM集積回路チップのサブセットに接続することにより、DRAMチップ又はその一部を論理的及び/又は物理的にグループ化することができる。例えば、一部の電子デバイスでは、メモリモジュール上のDRAMチップは、N個のランク(例えば、4ランク、8ランク等)のうち何れかに含まれるか、そのようなランクとして動作することができ、各チップは、M個のバンク(例えば、32バンク)を含み、各バンクは、情報を記憶するためのDRAM回路要素のいくつかのアレイを含む。
【0003】
複数のDRAMチップを含む電子デバイスでは、上述したリフレッシュ動作を、DRAMチップの論理的及び/又は物理的なグループに対して実行することができる。例えば、これらの電子デバイスの一部は、ランクレベルでリフレッシュを実行する。すなわち、リフレッシュ動作を実行してDRAMチップ内の回路要素を再充電する場合に、これらの電子デバイスは、ランク内の1つ以上のDRAMチップをグループとしてリフレッシュする。このような電子デバイスでは、ランクをリフレッシュするために、ランクは、先ず、ランク内のDRAMチップのチップ可用性信号(chip availability signal)をデアサートする等によって、メモリアクセス(読み出し、書き込み等)を実行するための使用から除去又はブロックされる。次に、ランク内のDRAMチップ内の回路要素がリフレッシュされる(すなわち、既存の情報をリフレッシュするために、その既存の情報によって書き換えられる)。リフレッシュした後、そのランクのDRAMチップは、メモリアクセスの実行に使用するためにリストアされる。
【0004】
ランク内のDRAMチップ内の回路要素をリフレッシュするためのプロセスは、数百クロックサイクルを必要とする。これは、数百ナノ秒に相当し、その間、ランク内のDRAMチップをメモリアクセスの実行に利用することができない。したがって、メモリアクセス動作及びそれによって実行される動作の結果に依存する電子デバイス内のエンティティは、リフレッシュ動作によって、メモリアクセス動作が完了する前に大幅な時間の遅延が生じる可能性がある。DRAMリフレッシュ動作によって電子デバイスの他の動作の遅延が引き起こされるので、DRAMリフレッシュ動作を改善することは、電子デバイスにとって有益である。
【図面の簡単な説明】
【0005】
【
図1】いくつかの実施形態による、電子デバイスを示すブロック図である。
【
図2】いくつかの実施形態による、メモリのランクに対してリフレッシュを実行するために使用されるリフレッシュ順序を選択するためのプロセスを示すフローチャートである。
【
図3】いくつかの実施形態による、リフレッシュ順序を使用してメモリのランクに対してリフレッシュを実行するためのプロセスを示すフローチャートである。
【
図4】いくつかの実施形態による、メモリのランクに対するリフレッシュ動作の実行を示すタイムライン図である。
【発明を実施するための形態】
【0006】
図面及び説明全体を通して、同様の符号は、同じ要素を指す。
【0007】
以下の説明は、当業者が、説明する実施形態を作成及び使用するのを可能にするために提示され、特定の用途及びその要件に照らして提供される。説明する実施形態に対する様々な変更は、当業者には容易に明らかであり、本明細書で定義される一般的原理は、他の実施形態及び用途に適用されてもよい。したがって、説明する実施形態は、示された実施形態に限定されるものではなく、本明細書に開示される原理及び特徴と一致する最も広い範囲で許容されることとなる。
【0008】
(用語)
以下の説明では、実施形態を説明するために様々な用語が使用される。以下に、これらの用語を簡略化して一般的に説明する。用語は、明確及び簡潔にするために本明細書に記載されていない重要な追加態様を有してもよく、したがって、説明は、用語を限定することを意図していないことに留意されたい。
【0009】
機能ブロック:機能ブロックは、集積回路要素、ディスクリート回路要素等のように、1つ以上の相互に関連する回路要素のグループ、集合及び/又はセットを指す。回路要素は、回路要素が少なくとも1つの特性を共有するという点で「相互に関連する」。例えば、集積回路要素は、特定の集積回路チップ又はその一部に含まれてもよく、その上に製造されてもよく、それに結合されてもよく、所定の機能(計算又は処理機能、メモリ機能等)の実行に関与してもよく、共通の制御要素によって制御されてもよい。機能ブロックは、単一の回路要素(例えば、単一の集積回路論理ゲート)から数百万又は数十億の回路要素(例えば、集積回路メモリ)までの任意の数の回路要素等を含むことができる。
【0010】
(概要)
説明する実施形態は、メモリ機能ブロック及びメモリコントローラ機能ブロックを有する電子デバイスを含む。メモリ機能ブロックは、複数ランクのダイナミックランダムアクセス(DRAM)メモリ回路を含む。メモリ回路は、時間の経過と共に電荷が消失するという点で「ダイナミック」であり、したがって、記憶された情報の消失を回避するために周期的にリフレッシュされなければならない。メモリコントローラ機能ブロックは、リフレッシュ間隔中にメモリの個々のランクに対してリフレッシュ動作をどのように実行するか、及び、そのようなリフレッシュ動作をいつ実行するかを決定するリフレッシュロジックを含む。例えば、メモリコントローラは、指定された基準に基づいて、リフレッシュされるメモリの特定のランク、及び、リフレッシュ間隔中にメモリのランクがリフレッシュされるリフレッシュ順序を決定することができる。
【0011】
いくつかの実施形態では、リフレッシュ間隔の前に、リフレッシュロジックは、リフレッシュ間隔に対するリフレッシュ順序を決定するための動作を実行する。一般に、リフレッシュ順序は、識別されたメモリのランク(或いは、より簡単に言えば「ランク」)がリフレッシュ間隔中にリフレッシュされる順序である。リフレッシュ順序を決定する場合、リフレッシュロジックは、最初に、リフレッシュ間隔中にリフレッシュが実行されるランクを識別する。例えば、リフレッシュロジックは、指定された数を超えるメモリアクセスが現在メモリコントローラによってバッファリングされているランクを識別することができる(ここで、「アクセス」には、メモリの読み出し、書き込み、移動、削除等が含まれる)。次に、リフレッシュロジックは、識別されたランクの数に少なくとも部分的に基づいて、リフレッシュ間隔をサブ間隔に分割する。各サブ間隔は、識別されたランクのうち1つに対してリフレッシュを実行するために使用される。例えば、識別されたランクが5つある場合、リフレッシュロジックは、リフレッシュ間隔を5つのサブ間隔に分割してもよい。次いで、バッファリング済みのメモリアクセスの特性及び/又はメモリコントローラと識別されたランクとの間の相互作用に関連する1つ以上の基準に基づいて、リフレッシュロジックは、識別されたランクに対してリフレッシュを実行するためのリフレッシュ順序を決定する。これらの動作の最後に、リフレッシュロジックは、リフレッシュ間隔のサブ間隔の数と、サブ間隔においてリフレッシュが実行されるリフレッシュ順序と、の両方を決定する。
【0012】
いくつかの実施形態では、リフレッシュ順序を決定するために使用されるバッファリング済みのメモリアクセスの1つ以上の特性に関連する基準は、各ランクに対するバッファリング済みのメモリアクセスのカウント(すなわち、各ランクに対してメモリコントローラ内で保留されているメモリアクセスの総数)、タイプのセット(例えば、読み出し、書き込み、移動、削除等)の中からのバッファリング済みのメモリアクセスの各々のタイプ、優先度のセットの中からのバッファリング済みのメモリアクセスの優先度等の基準を含む。例えば、いくつかの実施形態では、メモリコントローラは、複数の優先度レベルの各々でのバッファリング済みのメモリアクセスの数のランク毎の記録を保持し、基準は、指定された優先度のバッファリング済みのメモリアクセスの数、各ランクに対するバッファリング済みのメモリアクセスの平均優先度レベル等である。いくつかの実施形態では、メモリコントローラと識別されたランクとの間の相互作用に関連する基準は、ランクに既に送信された又は送信されるコマンドのタイプ、ランク間の相互関係等の基準を含む。例えば、基準は、識別されたランク及び/又は他のランクへのメモリコントローラによるそのようなコマンドの以前の送信(又は非送信)の相対的なタイミングであってもよい。いくつかの実施形態では、メモリコントローラは、対応する基準が満たされているかどうかを判別するために使用される値のうち1つ以上の実行レコード(すなわち、リアルタイムで且つイベントが発生したときに更新されるレコード)を保持する。
【0013】
いくつかの実施形態では、リフレッシュ順序を決定した後、リフレッシュロジックは、メモリコントローラに、リフレッシュ順序でリフレッシュ動作を実行させる。リフレッシュ順序の1番目のランクに対して、メモリコントローラは、1番目のサブ間隔においてリフレッシュを送信する。これは、1番目のランクに対するバッファリング済みのメモリアクセスを停止し、リフレッシュ間隔の開始とほぼ同時に1番目のランクに対してリフレッシュを実行することを意味する。リフレッシュ順序の2番目のランク及びその後続のランクに対しては、リフレッシュ順序の1つ以上前のランクに対してリフレッシュが実行されている間、メモリコントローラは、そのランクに対してバッファリング済みのメモリアクセスを実行する。このように、1番目のランク以降の各ランクに対してリフレッシュを実行するためのサブ間隔が発生すると、そのランクがリフレッシュのために準備される。換言すれば、メモリコントローラは、ランクをリフレッシュする前に、ランクに対するバッファリング済みのメモリアクセスを(可能な範囲で)クリアしている。説明するように、リフレッシュを実行する前にバッファリング済みのメモリアクセスを実行することによって、メモリコントローラは、バッファリング済みのメモリアクセスに依存するエンティティ(例えば、プロセッサ、入出力デバイス等)の遅延を回避するのに役立つことができる。いくつかの実施形態では、メモリコントローラは、指定されたコマンドを、ランクが発生するサブ間隔の指定された時間内に当該ランクに送信することを回避し、それによって、サブ間隔中のリフレッシュの対応する遅延を回避する。
【0014】
説明するように、リフレッシュ順序を決定し、リフレッシュ順序を使用してリフレッシュを実行する前にバッファリング済みのメモリアクセスを実行することによって、説明する実施形態は、リフレッシュ動作の性能を改善する。より具体的には、説明する実施形態は、リフレッシュ動作がリアクティブ(reactive)且つリフレッシュ順序を使用せずに実行され、その後、それぞれのリフレッシュ動作を実行した後に、停止されたバッファリング済みのメモリ動作を送信することによってメモリアクセスが遅延する場合に、既存のシステムに生じる遅延の一部を回避することができる。これは、DRAMリフレッシュを実行する既存の電子デバイスにおいて発生するプログラムコードの実行、アイドルな計算要素及び他の非効率性のための不要な遅延を回避するのに役立つことができる。電子デバイスの機能の改善は、ユーザの満足度をより高めることに寄与することができる。
【0015】
(電子デバイス)
図1は、いくつかの実施形態による、電子デバイス100を示すブロック図である。
図1に示すように、電子デバイス100は、処理機能ブロック102と、メモリ機能ブロック110と、を含む。一般に、処理機能ブロック102及びメモリ機能ブロック110は、ハードウェア、すなわち、様々な回路要素及びデバイスを使用して実装される。例えば、処理機能ブロック102及びメモリ機能ブロック110を、機能ブロックの各々について1つ以上の個別の半導体チップを含む1つ以上の半導体チップ上に完全に製造すること、ディスクリート回路要素と組み合わせて半導体チップから形成すること、ディスクリート回路要素単体から製造すること等が可能である。本明細書で説明するように、処理機能ブロック102及びメモリ機能ブロック110は、メモリ機能ブロック110内のダイナミックランダムアクセスメモリ(DRAM)のリフレッシュを処理するための動作を実行する。
【0016】
処理機能ブロック102は、電子デバイス100内で計算及び他の動作(例えば、制御動作、構成動作等)を実行する機能ブロックである。
図1に示すように、処理機能ブロック102は、処理複合体104~106を含む。処理複合体104~106は、計算及び他の動作を実行するための中央処理ユニット(CPU)又はCPUコア、特定用途向け集積回路(ASIC)、汎用グラフィックス処理ユニット(GPGPU)、フィールドプログラマブルゲートアレイ(FPGA)等の要素を含む機能ブロックである。例えば、いくつかの実施形態では、処理複合体104~106の一方又は両方は、高速相互接続を介して互いに結合された複数のCPUコア、キャッシュ及び他の要素を含む。処理機能ブロック102は、以下により詳細に説明するメモリコントローラ108も含む。
【0017】
メモリ機能ブロック110は、電子デバイス100用のメモリ(例えば、「メイン」メモリ)の動作を実行する電子デバイス100内の機能ブロックである。メモリ機能ブロック110は、第4世代ダブルデータレート同期DRAM(DDR4 SDRAM)等のメモリ回路、及び/又は、電子デバイス100内の機能ブロックによる使用のためにデータ及び命令を記憶するための他のタイプのメモリ回路と、メモリ回路に記憶されたデータ及び命令のアクセスを処理するための、さらには、他の制御又は構成動作を実行するための制御回路と、を含む。説明する実施形態では、メモリ機能ブロック110内のメモリ回路の少なくとも一部は、「ダイナミック」メモリ回路である。ダイナミックメモリ回路は、リーク及び/又は他の電荷消失メカニズムによって経時的に電荷が消失するキャパシタ等の回路要素を使用して情報(例えば、データ、命令等の情報のビット)を記憶する。回路要素によって電荷が消失するため、周期的にリフレッシュ動作を実行して回路要素を再充電することにより、記憶された情報の消失を回避する。例えば、いくつかの実施形態では、回路要素に記憶された情報がリーク及び/又は他の電荷消失メカニズムによって消失しないことを確実にするために、所定の回路要素をNマイクロ秒毎にリフレッシュする必要があり得る。
【0018】
図1に示すように、メモリ機能ブロック110は、メモリモジュール112~118を含む。これらのメモリモジュール112~118は、回路基板の両側に取り付けられた(メモリモジュール112~118の片側のみが
図1に示されている)複数のメモリ集積回路チップ(MEMチップ)120(例えば、DDR SDRAM集積回路チップ)を含むデュアルインラインメモリモジュール(DIMM)等のモジュールである。説明する実施形態では、各メモリチップ120は、バンク122等の複数のバンクを含み(明確にするために、バンクは、
図1のメモリチップ120のうち1つのみについて符号が付されている)、各バンクは、メモリ回路の複数のアレイを含む(図示省略)。メモリモジュール112~118上のメモリチップ120は、破線を使用して示すように、
図1に示すメモリモジュール112~118の側で、論理的及び/又は物理的に8つのランクに分割される(明確にするために、ランク124~126は、
図1のメモリモジュールの一部のみについて符号が付されている)。いくつかの実施形態では、制御信号、電力信号、アドレス信号、チップセレクト及び/又は他の信号は、各ランクに別々に結合されており、ランクを別々にアドレス指定/アクセス、制御、電源投入及び切断、並びに/又は、相互作用させることが可能である。説明する実施形態は、ランクの分解能でメモリ機能ブロック110内のメモリ回路のリフレッシュを実行する。換言すれば、DRAMメモリ回路をリフレッシュする場合、説明する実施形態は、ランクを選択し、そのランクのメモリ回路に対してリフレッシュを実行する。
【0019】
いくつかの実施形態では、メモリチップ120の一部又は全ては、スタックに配置された少なくとも2つの個別のDRAMメモリチップを含む。換言すれば、バンクのセットを含む複数の個別のメモリチップがスタックに物理的に配置されており、これを「3Dスタック」と呼ぶことができる。これらの実施形態では、メモリチップは、スタック内のメモリチップと通信、及び、メモリチップ間の通信を行うためのシリコン貫通ビア等の通信メカニズムを含み、スタック内の少なくとも1つのチップは、メモリコントローラ108及びスタックの外部の他のエンティティとの通信を行うためのインタフェース回路を含む。いくつかの実施形態では、上述したランクは、メモリチップの単一スタック内のチップの少なくとも一部であるか、そのチップの少なくとも一部を含む。
【0020】
メモリコントローラ108は、処理機能ブロック102とメモリ機能ブロック110との間の相互作用を管理、制御及び他の方法で処理する機能ブロックである。例えば、メモリコントローラ108は、処理機能ブロック102に代わってメモリアクセス(すなわち、読み出し、書き込み、削除、移動等)を実行し、メモリ機能ブロック110の構成及び制御動作、及び/又は、他の動作を実行する。いくつかの実施形態では、メモリコントローラ108は、メモリ機能ブロック110内のDRAMメモリ回路に対するリフレッシュの実行をスケジューリングし、引き起こし、及び/又は、制御する。いくつかの実施形態では、メモリコントローラ108は、バス、ワイヤ、ガイド、及び/又は、他の通信要素及び回路を含むチャネル128~130等のチャネルを介して、メモリモジュール112~118内の個々のメモリモジュールと通信する。
【0021】
いくつかの実施形態では、メモリアクセスは、メモリコントローラ108によってバッファリングされる。換言すれば、メモリアクセスが処理複合体104等のエンティティから実行されるという要求、コマンド又は他の指示を受信すると、メモリコントローラ108は、メモリアクセス(すなわち、要求、コマンド等、又は、これらに基づく情報)が、メモリコントローラ108内のバッファ、キュー又は別のメモリ要素に保持され、解決のためにメモリ機能ブロック110に直ちに送信されないことを決定する。例えば、メモリコントローラ108は、メモリアクセスの(再)順序付けを可能にすること、アクセスされるランクによって実行される他の動作との競合を回避すること、対応するチャネル上の他のトラフィックとの干渉を回避すること等のために、メモリアクセスをバッファリングしてもよい。これらの実施形態のいくつかでは、メモリコントローラ108は、アーキテクチャ仕様又は他のシステムルール等によって、各ランクに対して、所定の時間(例えば、7、8等)で所定数のメモリアクセスのみをバッファリングするように、及び/又は、メモリアクセスがメモリ機能ブロック110に送信される前にバッファリング済みのメモリアクセスを指定された時間のみ保持するように制限される。
【0022】
メモリコントローラ108は、リフレッシュロジック(RELO)132を含む。リフレッシュロジック132は、リフレッシュ間隔中にメモリのランクをリフレッシュするリフレッシュ順序を決定するための動作を実行するメモリコントローラ108内の機能ブロックである。本明細書で説明するように、リフレッシュロジック132は、バッファリング済みのメモリアクセスの特性及び/又はメモリコントローラ108とメモリのランクとの間の相互作用に基づいて、リフレッシュ順序を決定し、次に、メモリコントローラに、リフレッシュ順序に基づいてリフレッシュされる各ランクに対して各々のリフレッシュを送信させる。
【0023】
電子デバイス100は、説明の目的で簡略化されている。しかしながら、いくつかの実施形態では、電子デバイス100は、追加又は異なる機能ブロック、サブシステム、要素及び/又は通信経路を含む。例えば、電子デバイス100は、表示サブシステム、電力サブシステム、入出力(I/O)サブシステム等を含んでもよい。電子デバイス100は、一般に、本明細書で説明する動作を実行するのに十分な機能ブロック等を含む。
【0024】
電子デバイス100は、コンピュータ動作を実行する任意のデバイスとすることができ、又は、このような任意のデバイスに含まれてもよい。例えば、電子デバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブルコンピューティングデバイス、タブレットコンピュータ、仮想現実若しくは拡張現実機器の一部、スマートフォン、人工知能(AI)若しくは機械学習デバイス、サーバ、ネットワークアプライアンス、玩具、オーディオビジュアル機器の一部、家電製品、車両等、及び/又は、これらの組み合わせであってもよいし、これらに含まれてもよい。
【0025】
(リフレッシュ動作)
説明する実施形態では、メモリ機能ブロック内のダイナミックメモリ回路は、「リフレッシュ動作」中に、記憶された情報の消失を回避するためにリフレッシュされる。いくつかの実施形態では、リフレッシュ動作は、メモリのランクの分解能で実行されるため、メモリのランク内の全てのメモリ回路が、単一のリフレッシュ動作中にリフレッシュされる。いくつかの実施形態では、リフレッシュ動作中に、リフレッシュされるメモリのランクが最初に除去されるか、アクティブな使用からブロックされるため、メモリアクセス及びメモリのランクのメモリ回路に記憶された情報を必要とする他の動作は、リフレッシュ動作の期間中、停止、終了又は遅延される。例えば、いくつかの実施形態では、メモリコントローラは、リフレッシュ動作が完了するまで、保留中のメモリアクセス動作を、ランクに関連するバッファ、キュー又は他のメモリ回路に記憶する。次に、メモリのランクがリフレッシュされる。例えば、いくつかの実施形態では、ランク内のメモリ要素のロウのセットについて、リフレッシュ動作中、各ロウがリフレッシュされるまで、メモリコントローラは、メモリ回路の次のロウ内のビットのセットからの値をロウバッファに記憶し、メモリ回路のそのロウのメモリ回路をプリチャージし、記憶された値をロウバッファからメモリ回路のそのロウに書き戻す。リフレッシュ動作が完了すると、すなわち、ランク内のメモリ回路が全てリフレッシュされると、メモリのランクが解放されてアクティブな使用に戻るため、メモリアクセス、及び、バッファリング済みのメモリアクセスを含むメモリ回路に記憶された情報を必要とする他の動作が、正常に実行される。
【0026】
(リフレッシュ順序を使用した複数のメモリのランクに対するリフレッシュの実行)
説明する実施形態では、メモリコントローラ内のリフレッシュロジックは、複数のメモリのランクの中から、メモリのランク内のダイナミックメモリ回路がリフレッシュされる順序を決定する。
図2は、いくつかの実施形態による、メモリのランクに対してリフレッシュを実行するために使用されるリフレッシュ順序を選択するためのプロセスを示すフローチャートである。
図2に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び/又は異なる順序で実行される動作を含む。
図2の例では、電子デバイス100と同様の内部構成を有する電子デバイスが、様々な動作を実行するものとして説明する。しかしながら、いくつかの実施形態では、異なる構成の電子デバイスが、説明する動作を実行する。例えば、異なる数のランク、メモリモジュール等が電子デバイス内に存在してもよい。
【0027】
図2に示す動作は、メモリコントローラ(例えば、メモリコントローラ108)内のリフレッシュロジック(例えば、リフレッシュロジック132)が、リフレッシュが実行されるメモリのランクを検出したときに開始する(ステップ200)。この動作について、リフレッシュロジックは、メモリのランクについての情報や、メモリのランクに関連する情報に基づいて、次のリフレッシュ間隔中にリフレッシュが実行されることを決定するために、1つ以上のチェックを実行する。例えば、いくつかの実施形態では、リフレッシュロジックは、メモリコントローラが、対応するメモリアクセスルールに違反することを回避するために、バッファリング済みのメモリアクセスのうち少なくともいくつかが次のリフレッシュ間隔中に送信される必要のある十分な数のメモリアクセスをバッファリングした(及び、場合によっては意図的にバッファリングした/遅延させた)ランク等のように、指定された状態にあるか、その状態に近いメモリのランクを検出する。この場合、バッファリングされたメモリアクセスの許容数の制限は、アーキテクチャ仕様、電子デバイス内のルール、及び/又は、タイミング制約によって定められてもよく、バッファリング済みのメモリアクセスは、失効する前、要求側デバイスがタイムアウトする前等に送信される必要がある。
【0028】
次に、リフレッシュロジックは、リフレッシュが実行されるメモリのランクの数に少なくとも部分的に基づいて、リフレッシュ間隔を複数のサブ間隔に分割する(ステップ202)。この動作中、いくつかの実施形態では、リフレッシュロジックは、リフレッシュ間隔を、リフレッシュが実行されるメモリのランクの数に等しい数のサブ間隔に分割する。例えば、8つのランクのうち5つがリフレッシュ間隔中にリフレッシュされる場合、リフレッシュロジックは、リフレッシュ間隔を5つの等しいサブ間隔に分割してもよい。その結果、Nマイクロ秒(例えば、4マイクロ秒、2マイクロ秒等)のリフレッシュ間隔が、N/5マイクロ秒のサブ間隔に分割される。いくつかの実施形態では、リフレッシュロジックは、リフレッシュが実行されるメモリのランクの数に加えて、サブ間隔の数、期間及び/又は配置を決定するための1つ以上の他の入力又は要因を使用する。例えば、メモリの各ランクの現在の状態(例えば、バッファリング済みのメモリアクセスの数等)を使用して、リフレッシュ間隔を、それぞれ異なる時間長のサブ間隔に分割してもよい。
【0029】
いくつかの実施形態では、最小数及び/又は最大数のサブ間隔が使用される。例えば、ステップ200で少なくとも最小数のランクがリフレッシュを必要とすると決定されたかどうかに関係なく、指定された最小数のメモリのランクを、リフレッシュが実行されるメモリのランクとして選択してもよい。この場合、ステップ200~202は、少なくとも最小数のランク、したがってサブ間隔を含む。これらの実施形態では、以下により詳細に説明するように、デフォルト又は初期のリフレッシュ順序を使用して、最小数未満のランクがリフレッシュを必要とすると決定された場合にリフレッシュされるメモリのランクのうち少なくともいくつかを定めてもよい。別の例として、(例えば、リフレッシュ間隔内で各ランクをリフレッシュするのに要する時間によって制限されるような)指定された最大数のランクが、リフレッシュが実行されるメモリのランクとして選択されてもよく、ステップ200~202は、多くとも最大数のランク、したがってサブ間隔を含む。
【0030】
次に、リフレッシュロジックは、メモリのランクに対するバッファリング済みのメモリアクセスの1つ以上の特性、及び/又は、メモリコントローラの動作に基づいて、メモリのランクに対してリフレッシュを実行するためのリフレッシュ順序を決定する(ステップ204)。一般に、この動作について、リフレッシュロジックは、バッファリング済みのメモリアクセス、ランク及び/又はメモリコントローラの現在の状態に基づいてリフレッシュ順序を決定(すなわち、生成、選択等)する。決定されたリフレッシュ順序は、バッファリング済みのメモリアクセス及び他の現在の状態を考慮して、リフレッシュを実行する電子デバイスの全体的な性能に対する影響を低減するのに役立つように順序付けられたランクに対するリフレッシュ動作を有する。換言すれば、リフレッシュ順序は、何れのリフレッシュ(特に、既存の電子デバイスでは、バッファリング済みのメモリアクセスの実行を妨げる可能性がある)が、バッファリング済みのメモリアクセスを実行する際の遅延を低減するように実行されるかについて決定される。これは、バッファリング済みのメモリアクセスに依存するエンティティ(例えば、処理複合体104~106等)が、リフレッシュによって遅延されるバッファリング済みのメモリアクセスの完了を待機して、全体的又は部分的にアイドル状態になる可能性が低いことを意味する。
【0031】
いくつかの実施形態では、リフレッシュ順序を決定するために使用されるバッファリング済みのメモリアクセスの特性は、リフレッシュされるメモリのランク毎にバッファリングされるメモリアクセスの数である。例えば、いくつかの実施形態では、Nを超えるバッファリング済みのメモリアクセス(例えば、5、7等)を有するメモリのランクがリフレッシュされ、リフレッシュ順序は、メモリの各ランクに対するバッファリング済みのメモリアクセスの実際の数に基づいて選択される。例えば、N=5と仮定すると、アーキテクチャ仕様に従って、メモリの任意のランクに対して最大7個のバッファリング済みのメモリアクセスが保持されてもよく、メモリの4つのランクは、以下の数のバッファリング済みのメモリアクセスを有する。ランク0=5、ランク1=7、ランク2=6、ランク3=5。この場合、可能なリフレッシュ順序は、ランク0、ランク3、ランク2、ランク1である。その結果、ランク0がリフレッシュ順序の1番目、ランク3がリフレッシュ順序の2番目等となる。
【0032】
いくつかの実施形態では、リフレッシュ順序を決定するために使用されるバッファリング済みのメモリアクセスの特性は、リフレッシュされるメモリのランク毎にバッファリングされるメモリアクセスの優先度である。例えば、いくつかの実施形態では、電子デバイス内の様々なエンティティからのメモリアクセスには、メモリコントローラによって、2つ以上の優先度のセットの中から対応する優先度が割り当てられる。例えば、これらの実施形態では、I/Oサブシステムからのメモリアクセスに対して、処理複合体からのメモリアクセスよりも低い優先度が割り当てられてもよく、特定のソフトウェアエンティティ(例えば、ブラウザ、ワードプロセッサ等)からのメモリアクセスに対して、他のソフトウェアエンティティ(例えば、オペレーティングシステム、ファームウェア等)からのメモリアクセスよりも低い優先度が割り当てられてもよい等である。これらの実施形態では、リフレッシュ順序は、特定の優先度を有するバッファリング済みのメモリアクセスのカウント、バッファリング済みのメモリアクセスの優先度の平均若しくは合計、及び/又は、バッファリングリング済みのメモリアクセスの優先度の別の特徴に基づいて選択される。例えば、メモリの4つのランクがリフレッシュされ、優先度が少なくとも最低の優先度及び最高の優先度を含み、4つのメモリのランクが以下のように最高の優先度のメモリアクセスをバッファリングしたと仮定する。ランク0=0、ランク1=3、ランク2=1、ランク3=1。この場合、可能なリフレッシュ順序は、ランク1、ランク2、ランク3、ランク0である。その結果、ランク1がリフレッシュ順序の1番目、ランク2がリフレッシュ順序の2番目等となる。
【0033】
いくつかの実施形態では、リフレッシュ順序を決定するために使用されるバッファリング済みのメモリアクセスの特性は、リフレッシュされるメモリのランク毎にバッファリングされるメモリアクセスのタイプである。例えば、いくつかの実施形態では、メモリアクセスは、メモリ読み出し、メモリ書き込み、メモリ削除、メモリ移動等を含むタイプである。これらの実施形態では、リフレッシュ順序は、特定のタイプを有するバッファリング済みのメモリアクセスのカウント、1つ以上のタイプを有するバッファリング済みのメモリアクセスの平均若しくはは合計、及び/又は、バッファリング済みのメモリアクセスのタイプの別の特徴に基づいて選択される。例えば、メモリの5つのランクがリフレッシュされ、タイプが少なくとも書き込みタイプ及び読み出しタイプを含み、5つのメモリのランクが以下のように書き込みタイプのメモリアクセスをバッファリングしたと仮定する。ランク0=5、ランク1=2、ランク2=6、ランク3=2、ランク4=3。この場合、可能なリフレッシュ順序は、ランク2、ランク0、ランク4、ランク1、ランク3である。その結果、ランク2がリフレッシュ順序の1番目、ランク0がリフレッシュ順序の2番目等となる。
【0034】
いくつかの実施形態では、リフレッシュ順序を決定するために使用されるメモリコントローラの動作は、メモリコントローラによってメモリのランクに以前に送信されたコマンドである。例えば、いくつかの実施形態では、メモリコントローラがコマンド(例えば、ページオープンコマンド等)をメモリのランクに送信する場合、メモリのランクは、複数の動作を実行し、次に、後続の動作、したがってコマンドがメモリのランクによって処理可能になる前に遅延時間(例えば、Nマイクロ秒)を待機する。いくつかの実施形態では、リフレッシュ順序は、遅延期間内にコマンドがメモリのランクに送信されたか否かに基づいて選択される。例えば、メモリの3つのランク(ランク0、ランク1、ランク2)がリフレッシュされ、特定のコマンドのうち1つがMナノ秒前にランク0に送信されたと仮定する。ここで、M<<Nである。この場合、可能なリフレッシュ順序は、ランク1、ランク2、ランク3、ランク0である。その結果、ランク1がリフレッシュ順序の1番目、ランク2がリフレッシュ順序の2番目等となる。
【0035】
いくつかの実施形態では、メモリのランクに対するバッファリング済みのメモリアクセスの上記の特性及び/又はメモリコントローラの動作のうち2つ以上の組み合わせが、リフレッシュ順序を決定するために使用される。例えば、いくつかの実施形態では、複数の特性(例えば、バッファリング済みのメモリアクセスのカウント、及び、各ランクに対するバッファリング済みのメモリアクセスの優先度)の組み合わされた値又は平均値が、リフレッシュ順序を決定する際に使用される。いくつかの実施形態では、数学的、論理的及び/又は他の関数が、組み合わされた値を決定するために使用される。
【0036】
いくつかの実施形態では、リフレッシュロジック又は別のエンティティは、リフレッシュ順序を決定するために使用されるメモリのランクに対するバッファリング済みのメモリアクセスの1つ以上の特性及び/又はメモリコントローラの動作の実行レコードを保持する。例えば、バッファリング済みのメモリアクセスの特性が、メモリのランク毎にバッファリング済みのメモリアクセスの数を含む実施形態を仮定すると、リフレッシュロジック、メモリコントローラ及び/又は別のエンティティは、メモリのランク毎にバッファリング済みのメモリアクセスのカウンタを保持することができる。このカウンタは、メモリアクセスがバッファリングされる(例えば、メモリコントローラ内のバッファ又はキューに記憶される)とインクリメントされ、メモリアクセスがバッファリング解除されて実行されるか他の方法で処理されるとデクリメントされる。別の例として、メモリコントローラの動作を使用してリフレッシュ順序を決定する実施形態を仮定すると、リフレッシュロジック、メモリコントローラ及び/又は別のエンティティは、特定のコマンド(複数可)がメモリの各ランクに送信されるときに開始され、特定のコマンド(複数可)がメモリの各ランクに送信されたときのタイムスタンプを記憶する等のタイマを保持してもよい。いくつかの実施形態では、リフレッシュロジック又は別のエンティティは、必要に応じてリフレッシュ順序を決定するために使用されるメモリのランクに対するバッファリング済みのメモリアクセスの1つ以上の特性及び/又はメモリコントローラの動作のレコードを生成するか他の方法で決定する。例えば、リフレッシュロジック又は他のエンティティは、必要に応じて、メモリアクセスが記憶されているバッファのテールポインタ等を使用して、バッファリング済みのメモリアクセスのカウントを計算してもよい。
【0037】
いくつかの実施形態では、静的/不変のデフォルト又は初期のリフレッシュ順序を、いくつか又は全てのリフレッシュ間隔に使用することができる。例えば、対応するメモリアクセスルールに違反することを回避するためにバッファリング済みのメモリアクセスのうち少なくともいくつかが次のリフレッシュ間隔中に送信される必要がある上記の指定された状態又はそれに近い状態で動作しているランクがない状況において、デフォルトのリフレッシュ順序を使用することができる。いくつかの実施形態では、デフォルト又は初期のリフレッシュ順序は、外部エンティティによって、構成ファイル又はファームウェア等に提供される。いくつかの実施形態では、
図2で決定されたリフレッシュ順序は、デフォルト又は初期のリフレッシュ順序の変形である。
【0038】
いくつかの実施形態では、1つ以上のルール、ガイドライン、閾値、関数等が、メモリのランクに対するバッファリング済みのメモリアクセスの上記の特性及び/又はメモリコントローラの動作に基づいてリフレッシュ順序を決定するために使用される。これらの実施形態のいくつかでは、1つ以上のルール、ガイドライン、閾値、関数等を、ソフトウェアエンティティ、構成ファイル、ファームウェア等の外部ソースから受信することができる。
【0039】
次に、リフレッシュロジックは、リフレッシュ順序で、メモリのランクに対するリフレッシュをメモリコントローラに実行させる(ステップ206)。この動作について、リフレッシュロジックは、メモリコントローラにリフレッシュ順序を通信する。次いで、メモリコントローラは、対応するリフレッシュ間隔中にリフレッシュを実行するために、リフレッシュ順序を使用する。
図3は、いくつかの実施形態による、リフレッシュ順序を使用してメモリのランクに対してリフレッシュを実行するためのプロセスを示すフローチャートである。
図3に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として示されていることに留意されたい。他の実施形態によって実行される動作は、異なる動作及び/又は異なる順序で実行される動作を含む。
図3の例の場合、電子デバイス100と同様の内部構成を有する電子デバイスが様々な動作を実行するものとして説明する。しかしながら、いくつかの実施形態では、異なる構成の電子デバイスが、説明する動作を実行する。
【0040】
図3に示す動作は、メモリコントローラが、リフレッシュ順序の1番目のメモリのランクに対して、バッファリング済みのメモリアクセスを停止し、リフレッシュ間隔におけるサブ間隔のセットのうち1番目のサブ間隔においてリフレッシュを実行するときに開始する(ステップ300)。一般に、本明細書でより詳細に説明するように、説明する実施形態の利点の1つは、リフレッシュが実行されるサブ間隔の前に対応するバッファリング済みのメモリアクセスを送信することによって、メモリのランクを保留中のリフレッシュのために準備できることである。しかしながら、いくつかの実施形態では、リフレッシュ順序の1番目のメモリのランクについては、対応するバッファリング済みのメモリアクセスを送信するためのリフレッシュ間隔の時間が存在しない。その代わりに、バッファリング済みのメモリアクセスは、メモリコントローラ内のバッファに保持されることによって「停止」され、リフレッシュが完了するまで実行されない。リフレッシュは、リフレッシュ間隔の開始時又はその直後(すなわち、リフレッシュ間隔の1番目のサブ間隔の開始時)にリフレッシュ順序の1番目のメモリのランクに対してリフレッシュが実行されるという点で「ほぼ同時に(substantially immediately)」実行される。いくつかの実施形態では、
図2の動作は、リフレッシュ間隔中にリフレッシュ順序でメモリのランクのリフレッシュを開始するのにちょうど間に合うようにリフレッシュ順序が生成/準備されるような方法及びタイミングで実行されてもよい。したがって、リフレッシュ順序が準備され次第、1番目のサブ間隔において1番目のメモリのランクに対してリフレッシュが実行されてもよく、すなわち、「ほぼ同時に」実行されてもよい。
【0041】
図4は、いくつかの実施形態による、メモリのランクに対するリフレッシュ動作の実行を示すタイムライン図である。より具体的には、
図4は、
図3に示すように、リフレッシュ順序に基づいて実行されるリフレッシュの例示である。
図4は、一実施形態のリフレッシュ動作の一例として示されているが、他の実施形態では、異なる数のメモリのランクのリフレッシュ及び/又は異なる順序でのメモリのランクのリフレッシュ、異なる時間でのバッファリング済みのメモリアクセスの実行等のように、異なるように動作することに留意されたい。
図4に示すように、リフレッシュ順序は、(1)メモリランク(ランク)400、(2)メモリランク402、(3)メモリランク406、(4)メモリランク404である。
図3のステップ300で説明したように、リフレッシュ間隔の開始とほぼ同時に、すなわち、サブ間隔(サブINT)408において、リフレッシュ順序のメモリの1番目のランクであるメモリランク(ランク)400に対してリフレッシュ動作が実行される。メモリランク400に対するバッファリング済みのメモリアクセスの実行は、リフレッシュ間隔内のサブ間隔408の後、すなわち、サブ間隔410中(又は、場合によってはそれ以降)まで発生しない。
【0042】
図3に戻ると、リフレッシュ順序の2番目及びその後続のメモリのランクに対して、メモリコントローラは、対応するバッファリング済みのメモリアクセスを、メモリの前のランクに対してリフレッシュが実行されている間に実行する(ステップ302)。この動作中、メモリコントローラは、メモリの所定のランクに対して、メモリの所定のランクに対してリフレッシュを開始する前に実行可能な限り多くのバッファリング済みのメモリアクセスを実行する。換言すれば、バッファリング済みのメモリ読み出し、書き込み等が、実行されるメモリのランクに送信され、それによってメモリアクセスを完了させる。場合によっては、全てではないにしても殆どの、メモリの所定のランクに対するバッファリング済みのメモリアクセスは、対応するサブ間隔中にメモリの所定のランクに対するリフレッシュを開始する前に実行される。
図4に戻り、
図3のステップ302について上述したように、サブ間隔408中にランク402に対してバッファリング済みのメモリアクセスが実行され、サブ間隔410~412中にランク404に対してバッファリング済みのメモリアクセスが実行され、サブ間隔408~410中にランク406に対してバッファリング済みのメモリアクセスが実行される。
【0043】
図3~
図4に示すように、リフレッシュの開始前にバッファリング済みのメモリアクセスを実行することによって、説明する実施形態は、バッファリング済みのメモリアクセスの結果に依存する電子デバイス内の他のエンティティ(例えば、処理複合体104~106等)の動作の遅延を回避することができる。しかしながら、電子デバイス内の他のエンティティは、メモリの所定のランクに対するリフレッシュ中にメモリコントローラによってバッファリングされる新たなメモリアクセスを生成することができ、これには、サブ間隔より前であるがサブ間隔の閾値時間以内に生成されるメモリアクセスを生成することが含まれることに留意されたい。このようにして、これらの時間に生成されたメモリアクセスが、リフレッシュ中に停止される。
【0044】
図3に戻ると、メモリの2番目以降のランクに対して、メモリコントローラは、リフレッシュ間隔内のサブ間隔のセットのうち対応するサブ間隔においてリフレッシュを実行する(ステップ304)。
図4に示すように、さらには
図3のステップ304について説明したように、サブ間隔410において、リフレッシュ順序の2番目のメモリのランクであるメモリランク402に対してリフレッシュ動作が実行され、サブ間隔412において、リフレッシュ順序の3番目のメモリのランクであるメモリランク406に対してリフレッシュ動作が実行され、サブ間隔414において、リフレッシュ順序の4番目のメモリのランクであるメモリランク404に対してリフレッシュ動作が実行される。
【0045】
説明する実施形態は、複数のランクがメモリアクセスの処理に関して最大能力付近で動作しているときに(既存の電子デバイスとは対照的に)電子デバイスの性能を改善することができる。これは、
図2~
図4に示すように、リフレッシュが体系化され、その結果、対応するリフレッシュが実行される前に、可能な範囲でバッファリング済みのメモリストアが実行されるからであると言える。これは、バッファリング済みのメモリアクセスを送信しなければならない状態にランクが到達したことにリアクティブであり、リフレッシュに対するアプローチにおいて殆ど体系化されておらず、効率も劣る既存の電子デバイスとは対照的である。
【0046】
(バンク毎のリフレッシュ)
本明細書で説明する実施形態、及び、
図2~
図4の例では、リフレッシュ動作は、ランクレベルで(すなわち、ランクの分解能によって)実行される。しかしながら、ランク毎のバンク及びDRAMチップの特定の数は、電子デバイスの構成、使用中のDRAMメモリ技術又はアーキテクチャ、メモリモジュールの配置等に応じて変化する。例えば、いくつかの実施形態では、ランクは、1つのDRAMチップのみ、1つ以上のバンク等を含む。したがって、「ランク」をリフレッシュする場合、ランク内の1つ以上のバンクをリフレッシュすることができる。いくつかの実施形態では、リフレッシュ動作中にリフレッシュされるバンクの数及び配置は、ランク内の全てのバンクよりも少ないバンク、すなわち、ランク内の一部のバンクのみが、所定のリフレッシュ間隔(又は、サブ間隔)中にリフレッシュされる。例えば、いくつかの実施形態では、複数のバンクのランク内の1つ以上のバンクを個別にリフレッシュすることができる。これらの実施形態では、ランクのリフレッシュについて説明した動作を、ランク内の1つ以上のバンクに適用するように対応させることができる。例えば、リフレッシュ間隔及び/又はリフレッシュ順序は、バンクレベル、並びに/又は、ランク及びバンクレベルで決定することができ、それに応じてリフレッシュを実行することができる。
【0047】
いくつかの実施形態では、電子デバイス(例えば電子デバイス100及び/又はその一部)は、非一時的なコンピュータ可読記憶媒体に記憶されたコード及び/又はデータを使用して、本明細書に説明する一部又は全ての動作を実行する。より具体的には、電子デバイスは、説明する動作を実行する場合に、コンピュータ可読記憶媒体からコード及び/又はデータを読み出し、コードを実行し、及び/又は、データを使用する。コンピュータ可読記憶媒体は、電子デバイスによって使用されるコード及び/又はデータを記憶する任意のデバイス、媒体又はこれらの組み合わせとすることができる。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(eDRAM、RAM、SRAM、DRAM、DDR、DDR2/DDR3/DDR4 SDRAM等)、リードオンリーメモリ(ROM)、及び/又は、磁気若しくは光学記憶媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD)を含む揮発性メモリ又は不揮発性メモリを含むことができるが、これらに限定されない。
【0048】
いくつかの実施形態では、1つ以上のハードウェアモジュールが、本明細書で説明する動作を実行するように構成される。例えば、ハードウェアモジュールは、1つ以上のプロセッサ/コア/中央処理装置(CPU)、特定用途向け集積回路(ASIC)チップ、フィールドプログラマブルゲートアレイ(FPGA)、計算ユニット、組み込みプロセッサ、グラフィックプロセッサ(GPU)/グラフィックコア、パイプライン、加速処理ユニット(APU)、システム管理ユニット、電力コントローラ、及び/又は、他のプログラマブルロジックデバイスを含むことができるが、これらに限定されない。このようなハードウェアモジュールが起動されると、ハードウェアモジュールは、一部又は全ての動作を実行する。いくつかの実施形態では、ハードウェアモジュールは、命令(プログラムコード、ファームウェア等)を実行することによって動作を実行するように構成された1つ以上の汎用回路を含む。
【0049】
いくつかの実施形態では、本明細書で説明する構造及びメカニズムのうち一部又は全てを表すデータ構造(例えば、処理機能ブロック102、メモリ機能ブロック110、及び/又は、これらの一部)は、電子デバイスによって読み出し可能であり、構造及びメカニズムを含むハードウェアを製造するために直接的又は間接的に使用可能なデータベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に記憶される。例えば、データ構造は、Verilog又はVHDL等の高水準設計言語(HDL)におけるハードウェア機能の動作レベルの記述又はレジスタ転送レベル(RTL)の記述であってもよい。記述は、合成ツールによって読み出され、合成ツールは、記述を合成して、上述した構造及びメカニズムを含むハードウェアの機能を表す合成ライブラリからゲート/回路要素のリストを含むネットリストを生成する。次に、ネットリストを配置し、ルーティングして、マスクに適用される幾何学的形状を記述するデータセットを生成することができる。次いで、様々な半導体製造ステップでマスクを使用して、上述した構造及びメカニズムに対応する1つ以上の半導体回路(例えば、集積回路)を製造することができる。或いは、コンピュータがアクセス可能な記憶媒体上のデータベースは、必要に応じて、ネットリスト(合成ライブラリの有無に関わらず)若しくはデータセット又はグラフィックデータシステム(GDS)IIデータであってもよい。
【0050】
本説明では、変数又は不特定の値(すなわち、値の特定の例のない、値の一般的な説明)は、N等の文字によって表される。同様の文字が本説明の他の箇所で使用され得るが、本明細書で使用されるように、各例の変数及び不特定の値は、必ずしも同じではない。すなわち、一般変数及び不特定値の一部又は全てに対して、様々な変数量及び値が存在し得る。換言すれば、本説明で変数及び不特定の値を表すのに使用されるN及び任意の他の文字は、必ずしも互いに関連するわけではない。
【0051】
本明細書で使用される「等(et cetera)」又は「等(etc.)」という表現は、及び/又はケース、すなわち、「等」に関連するリスト内の要素のうち「少なくとも1つ」に相当するものを提示することを意図している。例えば、「システムは、第1の動作、第2の動作等を実行する」という文において、システムは、第1の動作、第2の動作、及び、他の動作のうち少なくとも1つを実行する。加えて、「等」に関連するリスト内の要素は、実施例のセットの中の単なる例に過ぎず、実施例の少なくともいくつかは、いくつかの実施形態において現れない場合がある。
【0052】
以上の実施形態の説明は、例示及び説明のためにのみ提示されている。これらは、包括的であること、又は、実施形態を開示された形態に限定することを意図するものではない。したがって、当業者には、多くの変更及び変形が明らかであろう。さらに、上記の開示は、実施形態を限定することを意図していない。実施形態の範囲は、添付の特許請求の範囲によって定義される。