本開示の様々な実施形態の要素を導入するとき、「1つの(a)」、「1つの(an)」、「その(the)」、及び「該(said)」という冠詞は、1つ以上の要素が存在することを意味することが意図される。「含む(comprising)」、「含む(including)」、及び「有する」という用語は、包括的であることが意図され、列挙される要素以外の追加の要素が存在し得ることを意味する。本明細書に記載される本実施形態の1つまたは複数の特定の実施形態を、以下に説明する。これらの実施形態の簡潔な説明を提供するために、実際の実装の全ての特徴が本明細書に記載してはいない。任意のエンジニアリングまたは設計プロジェクトにおけるように、このような実際の実装の開発では、実装ごとに異なり得るシステム関連の制約及びビジネス関連の制約に準拠することなどの、開発者固有の目標を達成するために、実装固有の多数の決定を行う必要があるということを理解されたい。さらに、そのような開発努力は複雑で時間がかかる可能性があるが、それにもかかわらず、本開示の利益を有する通常の技術者にとって、設計、製作、及び製造の日常的な作業であるであろうことを理解されたい。
一般に、コンピューティングシステムのハードウェアは、1つまたは複数のプロセッサ及び/または1つまたは複数のメモリデバイス(例えば、チップとして、集積回路として)を使用して実装される処理回路及びメモリを含む。コンピューティングシステムの動作中、処理回路は、例えば、ユーザの入力に基づいて対応する命令を実行することによって様々な動作(例えば、タスク)を実行し、入力データに対して動作を実行することによって出力データを決定することができる。コンピューティングシステムの動作を容易にするために、処理回路にアクセス可能なデータは、メモリデバイスが入力データ、出力データ、実行可能命令を示すデータ、またはそれらの任意の組み合わせを格納するように、メモリデバイスに格納され得る。
さらに、場合によっては、メモリデバイスは異なるメモリのタイプを使用して実装されることがある。例えば、メモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)やスタティックランダムアクセスメモリ(SRAM)などの揮発性メモリとして実装できる。あるいは、メモリデバイスは、フラッシュ(例えば、NAND、NOR)メモリ、相変化メモリ(例えば、3D XPoint(商標))、強誘電体ランダムアクセスメモリ(FeRAM)などの不揮発性メモリとして実装できる。いずれの場合でも、メモリデバイスは、一般に、チャネル(例えば、データチャネル、通信結合、バスインターフェース)を介してメモリデバイスに送信されるデータビット(例えば、「0」ビットまたは「1」ビット)を格納するために、少なくとも1つのメモリダイ(例えば、半導体ウェーハの一部または「ダイ」に構成されたメモリセルのアレイ)を含み、メモリデバイスが異なるメモリのタイプを含む場合でも、処理回路の観点から機能的に類似している可能性がある。
ホストデバイスの動作中に、ホストデバイスのアプリケーションまたはプログラム、あるいはホストデバイスの他のコンポーネントが、メモリに格納された情報を生成またはアクセスする場合がある。メモリ内部にデータとして保存される情報は、物理的な場所に保存される場合がある。メモリ内のこれらの物理的な場所には、参照可能な論理アドレスを介してホストデバイスのコンポーネントからアクセスできる。メモリコントローラは、メモリの動作を制御し、及び/またはメモリとホストデバイスとの間の中間デバイスとして機能することができる。このように、メモリがホストデバイスからコマンドを受信するとき、コマンドは、命令(例えば、読み取り命令、書き込み命令)及び論理アドレスの指示(例えば、ホストデバイスのコンポーネントがアクセスを希望しているメモリの位置を示すビットの文字列)を含み得る。メモリコントローラは、コマンドを受信した後、論理対物理変換テーブル(L2Pテーブル)を参照して、コマンドの論理アドレスに対応する物理アドレスを決定でき、物理アドレスは、ホストデバイスがコマンドでアクセスを所望するメモリ内部の物理的な場所である。
時間の経過と共に、メモリの一部の物理アドレスは、メモリの他の物理アドレスよりも頻繁にアクセスされる可能性がある。不均等なアクセス分布、及び/またはメモリにアクセスする不均一なアクセスパターンは、メモリの他の部分よりも比較的速い速度でメモリの一部を経年劣化する可能性がある。メモリの不均一な経年劣化は、デバイスの寿命を短くする可能性があるため一般に望ましくなく、メモリの不均一な経年劣化に対する操作(例えば、メモリへの均一化アクセス)は「ウェアレベリング」操作と呼ばれることがある。
本明細書で説明するように、不均一なメモリアクセスによる不均一なウェアリングを低減する、及び/またはメモリコマンドを処理するために使用される合計時間を改善するなど、メモリアクセスパターンを補償するために、メモリコントローラは、ホストデバイスによって発せられたコマンドに基づいてL2Pテーブルを調整することができる。例えば、メモリコントローラは、他の物理アドレスよりも相対的に頻繁にアクセスされる物理アドレスを考慮して、及び/または一般的に連続的にアクセスされる論理アドレスを考慮して、または相互に続く持続期間を考慮して、L2Pテーブルを調整でき、そのため、最初のコマンドの処理が依然として進行中で、後続のコマンドの処理の開始を遅らせる。アドレスアクセスパターン(例えば、トラフィックパターン)に基づいてL2Pテーブルを調整することにより、メモリコントローラは、不均一なウェアリングを先制的に削減または排除し、ウェアレベリングを促進すること、及び/またはメモリの操作の実行速度を向上させることができる(例えば、並行して実行され得るメモリアクセスの数を増やすことによって)。いくつかの実施形態では、メモリコントローラはまた、L2Pテーブルを調整して物理アドレスアクセス分布を改善する(例えば、より均一にする)及びウェアレベリングを改善する(例えば、アクセス数をより等しくする)ときにパフォーマンスを考慮し得る。
このようにして、L2P変換を使用して、メモリシステムのパフォーマンスを向上させることができる(例えば、メモリ操作の実行に使用される時間を短縮できる)。L2Pテーブルは、データが依然連続した論理アドレス空間にある場合でも、メモリ内の任意の物理的な場所にデータを格納する機能を備えるため、L2Pテーブルを利用して、メモリアクセスパターンを最適化及び/または改善できる。場合によっては、最適なデータストレージのパターンはメモリアクセスに依存するため、コンピューティングシステムの各ソフトウェアアプリケーション(例えば、メモリシステムへのアクセスを有するまたは使用する各ソフトウェアアプリケーション)は、独自の最適なパターンを備えている可能性がある。したがって、いくつかの実施形態では、メモリシステム及び/またはコンピューティングシステムは、メモリシステムのソフトウェアアプリケーションアクセスを分析して、トラフィックパターンを決定することができる。深層学習のアルゴリズムの展開を通じて、トラフィックパターンを使用して、ソフトウェアアプリケーションの実際のアクセス傾向に基づいて、メモリシステムへのアクセスを改善するように設計されたL2P変換テーブルを生成できる。
場合によっては、複数のソフトウェアアプリケーションの最適な動作または比較的改善されたパフォーマンスを表すL2Pテーブルが生成され得る。2つ以上のソフトウェアアプリケーションのトラフィックパターンに基づいて生成されたL2Pテーブルは、メモリシステムのデフォルトのL2Pテーブルとして使用及び/またはアクセスできる。ソフトウェアアプリケーションのトラフィックパターンに基づいて調整されたL2Pテーブルを使用することにより、メモリシステムのパフォーマンスが向上する可能性がある。これは、後に互いに比較的頻繁にアクセスされる論理アドレスを、異なるバンクの物理アドレスを参照するように定義できるためである。これらのL2Pテーブルはまた、1つ以上のメモリバンクにメモリアクセスの分散などによって、ウェアレベリングを管理するために使用できる。さらに、これらのウェアレベリングアルゴリズムは、メモリシステムの動作中にL2Pテーブルを変更して、ウェアレベリング及び/または予想されるメモリアクセスのシーケンスを最適化するため、これらの決定が実行されている間、メモリの操作を遅らせる必要がないことに留意されたい。
説明を促すために、図1は、1つまたは複数のリモートコンピューティングデバイス12を含むコンピューティングシステム10の例を示している。図示の実施形態のように、リモートコンピューティングデバイス12は、通信ネットワーク16を介して1つまたは複数のクライアントデバイス14に通信可能に結合され得る。図示された実施形態は、単に例示を意図するものであり、限定するものではないことを理解されたい。例えば、他の実施形態では、リモートコンピューティングデバイス12は、単一のクライアントデバイス14または2つより多いクライアントデバイス14に通信可能に結合され得る。さらに、コンピューティングシステム10に応じて、メモリコントローラ34は、メモリモジュール26だけにあるようにせずともよい。このように、メモリコントローラ34が完全にメモリモジュール26上にある、説明された技術の一般的な使用法が示されている。しかし、他の例は、メモリモジュールのないメモリコントローラを含み得、及び/またはメモリコントローラ34として処理回路24を使用し得る。
いずれの場合でも、通信ネットワーク16は、クライアントデバイス14とリモートコンピューティングデバイス12との間のデータ通信を可能にすることができる。いくつかの実施形態では、クライアントデバイス14は、例えば、リモートコンピューティングデバイス12が中央データセンターに配置されるように、リモートコンピューティングデバイス12から物理的に遠隔(例えば、別個)であり得る。したがって、いくつかの実施形態では、通信ネットワーク16は、インターネットなどの広域ネットワーク(WAN)であり得る。通信ネットワーク16を介した通信を容易にするために、リモートコンピューティングデバイス12及びクライアントデバイス14は、それぞれ、ネットワークインターフェース18を含むことができる。
ネットワークインターフェース18に加えて、クライアントデバイス14は、ユーザがクライアントデバイス14と対話することを可能にするために、入力デバイス20及び/または電子ディスプレイ22を含み得る。例えば、入力デバイス20は、ユーザの入力を受信することができ、したがって、ボタン、キーボード、マウス、トラックパッドなどを含むことができる。追加的または代替的に、電子ディスプレイ22は、その画面(例えば、電子ディスプレイ22の表面)に接触する物体の発生及び/または位置を検出することによってユーザの入力を受信するタッチ感知コンポーネントを含み得る。ユーザの入力を可能にすることに加えて、電子ディスプレイ22は、オペレーティングシステム、アプリケーションインターフェース、テキスト、静止画像、ビデオコンテンツなどのグラフィカルユーザインターフェース(GUI)を表示することによって、情報の視覚的表現を提示するのを容易にすることができる。
上記のように、通信ネットワーク16は、リモートコンピューティングデバイス12と1つまたは複数のクライアントデバイス14との間のデータ通信を可能にすることができる。言い換えれば、通信ネットワーク16は、ユーザの入力がクライアントデバイス14からリモートコンピューティングデバイス12に通信されることを可能にし得る。追加的または代替的に、通信ネットワーク16は、例えば、その電子ディスプレイ22に表示される画像データとして、ユーザの入力に基づいてリモートコンピューティングデバイス12によって実行される操作の結果を、クライアントデバイス14に通信して戻すことを可能にし得る。
実際、いくつかの実施形態では、通信ネットワーク16によって提供されるデータ通信を利用して、集中型ハードウェアを複数のユーザが利用できるようにすることができ、その結果、クライアントデバイス14のハードウェアを減らすことができる。例えば、リモートコンピューティングデバイス12は、複数の異なるクライアントデバイス14にデータストレージを設けることができ、それにより、クライアントデバイス14でローカルに設けられるデータストレージ(例えば、メモリ)を減らすことができる。追加的または代替的に、リモートコンピューティングデバイス12は、複数の異なるクライアントデバイス14に処理を行い得、それにより、クライアントデバイス14でローカルに与えられる処理能力を低減することを可能にする。
したがって、ネットワークインターフェース18に加えて、リモートコンピューティングデバイス12は、データバス28を介して通信可能に結合された処理回路24及び1つまたは複数のメモリモジュール26(例えば、サブシステム)を含み得る。いくつかの実施形態で、例えば、処理回路24及び/またはメモリモジュール26は、第1のリモートコンピューティングデバイス12が処理回路24の一部及び第1のメモリモジュール26Aを含む一方、M番目のリモートコンピューティングデバイス12が、処理回路24の別の部分及びM番目のメモリモジュール26Mを含むように、複数のリモートコンピューティングデバイス12にわたって実装され得る。追加的または代替的に、処理回路24及びメモリモジュール26は、単一のリモートコンピューティングデバイス12に実装され得る。
いずれの場合でも、処理回路24は、一般に、例えば、クライアントデバイス14から受信したユーザの入力によって示される、動作を遂行するための命令を実行することができる。したがって、処理回路24は、1つまたは複数の中央処理装置(CPU)、1つまたは複数のグラフィックス処理装置(GPU)、1つまたは複数のプロセッサコア、またはそれらの任意の組み合わせを含むことができる。いくつかの実施形態では、処理回路24は、処理回路24で形成された(例えば、プログラムされた)回路の接続に基づいて動作をさらに実行することができる。したがって、そのような実施形態では、処理回路24は、1つまたは複数の特定用途向け集積回路(ASIC)、1つまたは複数のフィールドプログラマブルロジックアレイ(FPGA)、または適切な処理装置の任意の組み合わせをさらに含むことができる。
さらに、メモリモジュール26は、処理回路24にアクセス可能なデータストレージを設けることができる。例えば、メモリモジュール26は、クライアントデバイス14から受信したデータ、処理回路24によって実行された動作から生じたデータ、処理回路24によって実行された動作に入力されるデータ、操作を実行するための処理回路24によって実行可能な命令、またはそれらの任意の組み合わせを格納することができる。データストレージを設けることを容易にするために、メモリモジュール26は、1つまたは複数のメモリデバイス30(例えば、チップまたは集積回路)を含むことができる。言い換えれば、メモリデバイス30はそれぞれ、処理回路24にアクセス可能なデータを格納する、有形の、非一時的な、コンピュータ可読媒体を含み得る。
リモートコンピューティングデバイス12のハードウェアは、複数のクライアントデバイス14によって利用され得るので、少なくともいくつかの例では、メモリモジュール26は、異なるクライアントデバイス14に対応するデータを格納することができる。いくつかの実施形態では、データは、データブロック32としてグループ化及び格納され得る。実際、いくつかの実施形態では、各クライアントデバイス14に対応するデータは、別個のデータブロック32として格納され得る。例えば、第1のメモリモジュール26Aのメモリデバイス30は、第1のクライアントデバイス14Aに対応する第1のデータブロック32Aと、N番目のクライアントデバイス14Nに対応するN番目のデータブロック32Nとを格納することができる。1つまたは複数のデータブロック32は、メモリデバイス30のメモリダイ内に格納され得る。
追加的または代替的に、いくつかの実施形態では、データブロック32は、クライアントデバイス14に設けられる仮想マシン(VM)に対応し得る。言い換えれば、例示的な例として、リモートコンピューティングデバイス12は、第1のクライアントデバイス14Aに第1のデータブロック32Aを介して第1の仮想マシンを備え、N番目のクライアントデバイス14Nに第Nのデータブロック32Nを介して第Nの仮想マシンを備えることができる。したがって、第1のクライアントデバイス14Aが第1の仮想マシンを対象としたユーザの入力を受信すると、第1のクライアントデバイス14Aは、通信ネットワーク16を介してリモートコンピューティングデバイス12にユーザの入力を通信することができる。少なくとも部分的にユーザの入力に基づいて、リモートコンピューティングデバイス12は、第1のデータブロック32Aを検索し、対応する操作を行うための命令を実行し、操作の結果を、通信ネットワーク16を介して第1のクライアントデバイス14Aに戻す通信をすることができる。
同様に、第Nのクライアントデバイス14Nが第Nの仮想マシンを対象としたユーザの入力を受信すると、第Nのクライアントデバイス14Nは、通信ネットワーク16を介してリモートコンピューティングデバイス12にユーザの入力を通信することができる。少なくとも部分的にユーザの入力に基づいて、リモートコンピューティングデバイス12は、第Nのデータブロック32Nを検索し、対応する操作を行うための命令を実行し、操作の結果を、通信ネットワーク16を介して第Nのクライアントデバイス14Nに戻すことができる。したがって、リモートコンピューティングデバイス12は、メモリモジュール26に格納された様々なデータブロック32にアクセス(例えば、読み取り及び/または書き込み)することができる。
格納されたデータブロック32へのアクセスを改善することを容易にするために、メモリモジュール26は、そのメモリデバイス30へのデータの格納を制御するメモリコントローラ34を含むことができる。いくつかの実施形態では、メモリコントローラ34は、メモリコントローラ34内に形成された(例えば、プログラムされた)回路の接続に基づいて動作することができる。したがって、そのような実施形態では、メモリコントローラ34は、1つまたは複数の特定用途向け集積回路(ASIC)、1つまたは複数のフィールドプログラマブルロジックゲートアレイ(FPGA)、または適切な処理装置の任意の組み合わせを含むことができる。いずれの場合も、上記のように、メモリモジュール26は、例えば、データアクセス速度とデータ記憶密度との間の様々なトレードオフをもたらす、異なるメモリタイプを使用するメモリデバイス30を含むことができる。したがって、そのような実施形態では、メモリコントローラ34は、例えば、メモリモジュール26が高速データアクセス速度及び高いデータストレージ容量を備えるように、様々なトレードオフを活用することを容易にするために、複数のメモリデバイス30にわたるデータストレージを制御することができる。
説明を助けるために、図2は、異なるタイプのメモリデバイス30を含むメモリモジュール26の例を示している。特に、メモリモジュール26は、1つまたは複数の不揮発性メモリデバイス30、及び1つまたは複数の揮発性メモリデバイス30を含むことができる。いくつか の実施形態では、揮発性メモリデバイス30は、ダイナミックランダムアクセスメモリ(DRAM)及び/またはスタティックランダムアクセスメモリ(SRAM)であり得る。言い換えれば、そのような実施形態では、メモリモジュール26は、1つまたは複数のDRAMデバイス(例えば、チップまたは集積回路)、1つまたは複数のSRAMデバイス(例えば、チップまたは集積回路)、または適切なメモリデバイスの任意の組み合わせを含み得る。
さらに、いくつかの実施形態では、不揮発性メモリデバイス30は、フラッシュ(例えば、NAND)メモリ、相変化(例えば、3D XPoint(商標))メモリ、及び/またはFeRAMであり得る。言い換えれば、そのような実施形態では、メモリモジュール26は、1つまたは複数のNANDメモリデバイス、1つまたは複数の3D XPoint(商標)メモリデバイス、1つまたは複数のFeRAMメモリデバイス、または適切なメモリデバイスの任意の組み合わせを含み得る。実際、いくつかの実施形態では、不揮発性メモリデバイス30は、ストレージクラスメモリ(SCM)を設けることができ、これは、少なくともいくつかの例では、例えば、他の不揮発性データストレージデバイスをコンピューティングシステム10において不要にすることによって、実装関連コストの削減を促進することができる。
いずれの場合も、いくつかの実施形態では、メモリモジュール26は、プリント回路基板(PCB)の平坦な(例えば、前及び/または後ろの)表面においてメモリデバイス30を含むことができる。データバス28を介したデータ通信を容易にするために、メモリモジュール26は、バスインターフェース44(バスI/F)を含み得る。例えば、バスインターフェース44は、プリント回路基板の(例えば、底部)縁部に沿って形成されたデータピン(例えば、接点)を含み得る。したがって、いくつかの実施形態では、メモリモジュール26は、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)などであり得る。
さらに、いくつかの実施形態では、バスインターフェース44は、メモリモジュール26がデータバス28の通信プロトコルを介して通信することを可能にする論理を含み得る。例えば、バスインターフェース44は、通信プロトコルに従って、メモリモジュール26からデータバス28へのデータ出力のタイミングを制御し、及び/またはデータバス28からメモリモジュール26へのデータ入力を解釈することができる。したがって、いくつかの実施形態では、バスインターフェース44は、ダブルデータレート第4世代(DDR4)インターフェース、ダブルデータレート第5世代(DDR5)インターフェース、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース、不揮発性デュアルインラインメモリモジュール(NVDIMM-Pなど)インターフェース、アクセラレータ用キャッシュコヒーレント相互接続(CCIX)インターフェースなどであり得る。
いずれの場合でも、上記のように、メモリコントローラ34は、例えば、メモリモジュール26内のデータストレージを制御して、メモリモジュール26のメモリタイプによって提供される様々なトレードオフを活用することによって、データアクセス速度及び/またはデータストレージ効率の改善を容易にすることができる。したがって、図示の例のように、メモリコントローラ34は、例えば、プリント回路基板上に形成された導電性トレースとして設けられる1つまたは複数の内部バス37を介して、バスインターフェース44とメモリデバイス30との間に結合され得る。例えば、メモリコントローラ34は、データブロック32がメモリデバイス30に格納されるかどうかを制御することができる。言い換えれば、メモリコントローラ34は、データブロック32を第1のメモリデバイス30から第2のメモリデバイス30に、またはその逆に転送することができる。
データの転送を促進するために、メモリコントローラ34は、例えば、一時的なデータストレージを設けるために、バッファメモリ46を含むことができる。いくつかの実施形態では、バッファメモリ46は、スタティックランダムアクセスメモリ(SRAM)を含み得、したがって、揮発性メモリデバイス30及び不揮発性メモリデバイス30と比較して、より速いデータアクセス速度をもたらし得る。バッファメモリ46は、場合によっては、DRAMまたはFeRAMであり得る。さらに、記憶されたデータブロック32へのアクセスを促進するために、メモリモジュール26は、論理対物理アドレス変換テーブル(L2Pテーブル)及び/またはバッファメモリ46、不揮発性メモリデバイス(例えば、メモリデバイス30の一部)、揮発性メモリデバイス(例えば、メモリデバイス30の一部)、専用アドレスマップメモリデバイス(例えば、メモリデバイス30の一部)、またはそれらの任意の組み合わせに保存される他のパラメータを含み得る。他のパラメータは、メモリモジュール26及び/またはコンピューティングシステム10の1つまたは複数のコンポーネントの動作に関連するパラメータ及び/またはデータを格納する物理的経験テーブルを含み得る。
さらに、リモートコンピューティングデバイス12は、処理回路24及び/またはデータバス28に含まれるか、またはそれらから分離されるサービスプロセッサ及び/またはサービスバスと通信することができる。サービスプロセッサ、処理回路24、及び/またはメモリコントローラ34は、エラー検出操作及び/またはエラー訂正操作(ECC)を実行することができ、エラー検出及びエラー訂正操作がリモートコンピューティングデバイス12への電力が失われた場合に続行できるように、リモートコンピューティングデバイス12の外部に配置することができる。説明を簡単にするために、サービスプロセッサの動作は、メモリコントローラ34に含まれ、メモリコントローラ34によって実行されるものとして説明されるが、いくつかの実施形態では、エラー訂正操作またはデータ回復操作が、サービスプロセッサ、処理回路24、またはリモートコンピューティングデバイス12またはクライアントデバイス14の内部または外部に配置された追加の処理回路により実行される機能として利用され得ることを理解されたい。
メモリモジュール26が様々なコンポーネントまたはサブモジュールを含む単一のデバイスとして図2に示されている。いくつかの例では、リモートコンピューティングデバイス12は、メモリモジュール26を構成する様々なデバイス、モジュール、及びコンポーネントと同等の1つまたはいくつかの個別のコンポーネントを含み得る。例えば、リモートコンピューティングデバイス12は、不揮発性メモリ、揮発性メモリ、及び1つまたはいくつかの異なるチップまたは基板に配置されたコントローラを含み得る。言い換えれば、メモリモジュール26の特徴及び機能は、本明細書で説明される利点を達成するために単一のモジュールで使用される必要はない。
上記のように、メモリモジュール26は、情報をデータとしてデータブロック32に格納することができる。メモリモジュール26のダイ48は、データブロック32を格納することができる。データブロック32は、ダイ48の1つの部分50に、または複数の部分50にわたって格納され得る。部分50は、任意の量のビットを格納することができ、したがって、メモリモジュール26の特定の用途のために設計することができる。例として、メモリの一部分50は512メガビット(MB)を格納できる。このように、メモリの一部分50は、メモリセル、メモリバンク、メモリパーティション、メモリモジュール26の一部分、メモリモジュール26全体などと見なすことができる。しかし、図示されるように、議論を容易にするために、部分50は、ダイ30として割り当てられたメモリの部分よりも小さいと見なされるメモリの一部分であり得る。
処理回路24がメモリモジュール26に格納されたデータへのアクセスを要求するとき、処理回路24はコマンドを発することができる。コマンドは、部分50の1つに格納された情報の検索を容易にするためにメモリコントローラ34を操作するなどの読み取り操作を実行するための命令を含み得る。時々、コマンドは、部分50のうちの1つへの情報の記憶を促すためにメモリコントローラ34を操作するなどの、書き込み操作を実行するための命令を含む。他のコマンドを使用して、メモリコントローラ34に他の操作を実行するように命令することができる。
時間の経過と共に、メモリの一部の物理アドレスが、メモリの他の物理アドレスよりも頻繁にアクセスされるようになる可能性がある。それは、メモリの他の部分よりも相対的に速い速度でメモリの一部を経年劣化し得る。詳しく説明すると、図3は、一定期間後の図2のメモリモジュールのブロック図である。図3のメモリモジュール26は、比較的不均一な経年変化及び/または不均一なメモリアクセスによって影響を受ける可能性があり、これは、部分50への相対的に多いまたは相対的に少ないアクセスを強調するための異なる陰影の使用によって示されている。例えば、メモリデバイス30Bは、メモリデバイス30Dよりも相対的に多くアクセスされ、したがって、メモリデバイス30Bの部分50は、メモリデバイス30Dの部分50よりも速い速度でコンポーネントの経年劣化を経る可能性がある。
最適化されていないメモリアクセスを補償するために、メモリコントローラ34は、ホストデバイスによって発せられたコマンド(例えば、メモリコントローラ34のアクセスに関連するトラフィックパターンを示す履歴データセット)に基づいてL2Pテーブルを調整することができる。例えば、メモリコントローラ34は、他の物理アドレスよりも相対的に頻繁にアクセスされる物理アドレスを考慮して、及び/または相対的に頻繁に他の物理アドレスに続いてアクセスされる物理アドレスを考慮して、L2Pテーブルを調整することができる。最も頻繁にアクセスされる物理アドレスに基づいてL2Pテーブルを調整することにより、調整されたL2Pテーブルがメモリの部分間のトラフィックパターンを比較的均一的または均等にし得るため、メモリコントローラ34は、不均一な経年劣化及び/または不均一なメモリアクセスを先制的に削減または排除することができる。追加的に、または代替的に、頻繁に後続的にアクセスされる物理アドレスに基づいてL2Pテーブルを調整することにより、異なるメモリバンク及び/またはメモリの様々な部分など、互いに独立したメモリの物理的な場所をアドレス指定するために、連続して互いにアクセスされることが予想されるアドレスを使用できる。
最適化されていないメモリアクセスパターンを補償するように動作するコントローラ34の例が図4に示されている。図4は、頻繁に連続的にアクセスされるアドレス(例えば、メモリアクセスパターン)を先制的に補償するために、元の論理対物理テーブル(L2Pテーブル)を調整するように動作するメモリコントローラ34の図である。メモリコントローラ34は、様々なトラフィックデータセット60(60A、60B、60C)及び現在のL2Pテーブル62を入力として受信することができる。現在のL2Pテーブル62は、元のL2Pテーブルであり得るか、またはメモリコントローラ34がメモリ操作(例えば、読み取り操作、書き込み操作)のために現在参照している以前に調整されたL2Pテーブルであり得る。
メモリコントローラ34は、トラフィックデータセット60を使用して、現在のL2Pテーブル62を新しいL2Pテーブル64に動的に変更することができる。そうするために、メモリコントローラ34は、トラフィックデータセット60の1つまたは複数を分析することができる。分析から、メモリコントローラ34は、メモリモジュール26のどの部分が互いに連続してアクセスされる頻度であるかを知ることができる。例えば、メモリコントローラ34は、トラフィックデータセット60の1つを分析して、第2の部分50がアクセスされる直前に第1の部分50が頻繁にアクセスされる(例えば、回数の閾値だけ連続的にアクセスされる)ことを判定することができる。アクセス量の閾値だけより頻繁にアクセスされる、及び/またはアクセス量の閾値だけ連続的にアクセスされるメモリモジュール26の部分をメモリコントローラ34が識別することに応答して、メモリコントローラ34は、これらのアクセスパターンを補償するために新しいL2Pテーブル64を生成することができる。
メモリコントローラ34は、メモリモジュール26のL2Pマッピングを変更して、望ましくないいずれかのアクセスパターンを補償することができる。例えば、メモリコントローラ34は、その後アクセスされる論理アドレスによってアドレス指定される物理的位置を、メモリの独立して動作する部分(例えば、異なるメモリバンク、異なるメモリダイ50のメモリの部分)の位置を参照するように変更することができる。メモリコントローラ34は、メモリアドレスを交換することができ、その結果、1つまたは複数の頻繁にアクセスされるアドレスは、相対的に頻繁にアクセスされないアドレスに置き換えられ、例えば、最も頻繁にアクセスされるアドレスは、最も頻繁にアクセスされないアドレスに置き換えられ得、2番目によくアクセスされるアドレスは、2番目にアクセスされる頻度の低いアドレスに置き換えられる、などがある。
部分50は、場合によっては交換され得るが、望ましくないメモリアクセスパターンは、メモリダイ48レベルなどの任意の適切な粒度のメモリアクセスで補償され得ることを理解されたい。場合によっては、メモリコントローラ34は、トラフィックデータセット60に応答してメモリアクセスパターンを調整するコントローラではない可能性がある。メモリアクセスパターンを調整するコントローラが処理回路24、または他の何らかのシステムレベルコントローラ(例えば、メモリモジュールレベルのメモリコントローラ34とは対照的に)である場合、現在のL2Pテーブル62は、メモリモジュール26の間で、望ましくないアクセスパターンを補償するように調整され得る。
トラフィックデータセット60のそれぞれは、リアルタイムトラフィックデータ、テストトラフィックデータ、過去のトラフィックデータなどを含み得る。このように、トラフィックデータセット60のそれぞれは、所与のワークロードの代表的なトラフィックサンプルであり得る。リアルタイムトラフィックデータは、リアルタイムで、またはメモリの読み取り及び書き込み操作が進行している間に、メモリコントローラ34によって記憶及び分析されるメモリの読み取り及び書き込み操作に関連する情報であり得る。メモリトランザクション(例えば、個々の読み取りまたは書き込み操作の発生)は、特定の量のメモリトランザクションデータが記録されてトラフィックデータセット60(例えば、60A、60B、60C)を形成するまで、時間の経過と共にメモリコントローラ34によって記録され得る。メモリトランザクションの数がメモリトランザクションの閾値量以上になるまでメモリコントローラ34がメモリトランザクションを監視及び記録するように、特定の量のメモリトランザクションデータが、閾値によって定義され得る。メモリトランザクションの数が閾値の量以上であることに応答して、メモリコントローラ34は、トラフィックデータセット60の一部としてメモリトランザクションを関連付けることができる。このようにして、トラフィックデータセット60は、実際のメモリの操作を示し得る。テストトラフィックデータを使用する場合、メモリトランザクションをシミュレートするか、実際のメモリトランザクションまたは通常予想されるメモリトラフィックパターンに基づくデータのサンプルセットを使用できる。さらに、場合によっては、実際のメモリトラフィックパターンを模倣するか表す、または模倣しないか表さないデータ値が、テストトラフィックデータとして、または通常予想されるメモリトラフィックパターンとして使用されることがある。さらに、場合によっては、メモリコントローラ34は、時間の経過と共にメモリトランザクションデータを格納し、格納されたメモリトランザクションデータを後で、例えば数日または数ヶ月後にトラフィックデータセット60として使用することができる。
いくつかの実施形態では、メモリコントローラ34はまた、物理アドレスのアクセスの分散を改善するためにL2Pテーブルを調整するときのパフォーマンスを考慮し得る(例えば、メモリの同じ部分50への連続的アクセスの量を減らす)。例えば、メモリコントローラ34は、コスト(例えば、入力)として読み取りまたは書き込み動作時間を使用し、コストを最適化するように調整するためにノブ(例えば、可変)として新しいL2Pテーブル64を使用する深層学習の操作を使用し得る。深層学習の操作の例には、長短期記憶(LSTM)人工リカレントニューラルネットワークの使用が含まれ得る。このようにして、メモリコントローラ34は、最終的なL2Pテーブル64として出力される最終的なアドレス割り当ての組み合わせを選択する前に、様々な適格なアドレス割り当てをテストすることができる。メモリコントローラ34は、いくつかのアドレスの再割り当てを最大化しながら、コストを最小化するアドレスの割り当ての構成の判定ができる(特に、次から次へと相対的により頻繁にアクセスするアドレス、または第1のコマンドの処理が終了するまで第2のコマンドの処理を待機するような、連続的な持続期間)。このようにして、メモリコントローラ34は、メモリアクセスの待ち時間(例えば、読み取りまたは書き込み操作時間として定義されるコスト)、及び物理アドレスを論理アドレスに再割り当てするときには、再割り当ての割合(例えば、相対的により少なく連続的に割り当てされるメモリの部分に対する、過剰使用または相対的により多く連続的にアクセスされている再割り当てのメモリの部分の割合)を考慮することができる。例えば、メモリコントローラ34は、第1のL2Pテーブル調整オプション及び第2のL2Pテーブル調整オプションについて1つまたは複数の読み取り及び/または書き込みの操作を実行するために使用される合計期間の間の比較を考慮して、どちらの生じたL2Pテーブルが、より適切な調整及び/または最適化に対応するかを判定することができる。
メモリコントローラ34が深層学習操作を使用するとき、メモリコントローラ34は、1つまたは複数のトラフィックデータセット60で最終的なL2Pテーブル64を訓練することができる。トラフィックデータセット60のトラフィックデータのサブセットは、調整された論理対物理のアドレス割り当てのパフォーマンスを検証するためなど、訓練されたL2Pテーブル64のテストのために予約され得る。訓練されたL2Pテーブル64のパフォーマンスをテストして、訓練または調整後にアクセス速度またはアクセス分布がどのように変化したかを確認できる。例えば、メモリコントローラ34は、新しいL2Pテーブル64のパフォーマンスの結果を、現在のL2Pテーブル62の以前のパフォーマンスの結果、または論理対物理の割り当てのデフォルト設定(例えば、メモリコントローラ34の元のL2Pテーブル)と比較することによって、新しいL2Pテーブル64(例えば、訓練されたL2Pテーブル64)のパフォーマンスを検証することができる。
変更は、時間の経過と共に、及び/または調整される論理アドレスのセットから論理アドレスのサブセットを調整することによるなどの、反復プロセスの一部として、新しいL2Pテーブル64に適用され得る。このようにして、メモリコントローラ34は、新しいL2Pテーブル64が時間と共に漸進的に改善されるように、現在のL2Pテーブル62に対して1回または複数回の改善を実行することができる。例えば、第1の現在のL2Pテーブル62は、調整され、新しいL2Pテーブル64として出力され得、これは、次の反復で、第2の現在のL2Pテーブル62として使用され、調整され、後続の新しいL2Pテーブル64として出力される。連続的アクセスパターンを補償するために現在のL2Pテーブル62を調整するために、任意の数の反復がメモリコントローラ34によって実行され得る。場合によっては、反復数の閾値が定義され、メモリコントローラ34によって実行される反復の最大数を制御するために使用され得る。
メモリコントローラ34はアクセス及びアクセスパターンを監視しているので、メモリアクセスパターンがコンピューティングシステム10のコンポーネントに影響を与える前に、メモリコントローラ34はメモリアクセスパターンを先制的に補償することができる。例えば、望ましくないアクセスパターンがメモリモジュール26に影響を与える前にメモリコントローラ34がL2Pテーブルを調整するとき、メモリの部分へのアクセスが予め補償されるので、連続的アクセスは先制的に(例えば、予め)防止され得る。L2Pテーブルの先制的な調整は、メモリコントローラ34が、キューに入れられたコマンドがメモリの非独立部分に対応していると判定したことや、例えば、別のメモリアクセスと同時に実行できるデータを書き込むメモリ内の場所を変更するようにL2Pテーブルを調整すると判定したのに応じて、起こり得る。
メモリコントローラ34の例示的な動作を詳しく説明するために、図5は、メモリアクセスパターンを先制的に補償するためのプロセス76のフローチャートである。メモリコントローラ34は、プロセス76を実行するものとして以下に説明されるが、任意の適切な処理回路が、追加的または代替的にプロセス76を実行し得ることを理解されたい。さらに、プロセス76は、特定の順序で実行されるものとして以下に説明されるが、任意の適切な順序を使用して、プロセス76の個々の操作を実行することができることを理解されたい。
ブロック78で、メモリコントローラ34は、トレーニングデータセットを受信することができる。トレーニングデータセットは、1つまたは複数のトラフィックデータセット60及び/または1つまたは複数のトラフィックデータセット60の1つまたは複数の部分を含み得る。上記のように、トラフィックデータセット60のそれぞれは、リアルタイムトラフィックデータ、テストトラフィックデータ、過去のトラフィックデータなどを含み得る。場合によっては、メモリコントローラ34は、トラフィックデータセット60及び/またはトラフィックデータセット60のデータの部分をトレーニングデータセット及びテストデータセットに分割することができる。
ブロック80で、メモリコントローラ34は、トレーニングデータセット及び/またはトラフィックデータセット60を使用して、1つまたは複数の連続的にアクセスされる論理アドレスを判定することができる。メモリコントローラ34は、閾値を使用して、予想される連続的にアクセスされる論理アドレスの傾向を識別することができる。例えば、メモリコントローラ34は、2つ以上の論理アドレスの連続的アクセスの比較的少数(例えば、発生の閾値の量より少ない量)が、L2Pテーブルへの再割り当てまたは調整により恩恵を必ずしも受けない場合があるので、閾値の量のメモリアクセスを使用して、連続的アクセスパターンが、予想される(例えば、先制的に予期される)連続的アクセスパターンに対応する十分な回数生じているときを判定することができる。閾値は、他のメモリアクセス量に対するメモリアクセスの数の閾値を定義できる。このようにして、メモリコントローラ34は、メモリの異なる部分に対して閾値の量よりも何倍も多くアクセスされるメモリモジュール26の部分を識別し、したがって、メモリの第1の部分(例えば、同じダイ48の第1の部分50)は、メモリの第2の部分(例えば、同じダイ48の第2の部分50)のアクセスに連続的にアクセスされると判定することができる。
ブロック82で、メモリコントローラ34は、連続的にアクセスされる論理アドレスを補償するために、新しいL2Pテーブル64を生成することができる。このようにして、メモリコントローラ34は、論理アドレスを物理アドレス割り当てに調整して、連続的に参照される論理アドレスを、メモリの独立した部分(例えば、異なるメモリバンク、異なるダイ48、異なる部分50)に関連付けられた物理アドレスに変換させることができる。上記のように、メモリコントローラ34は、部分50、ダイ48、及び/またはメモリデバイス30が同じ論理アドレス指定に従って異なるパターンでアクセスされるように、L2Pテーブルを介して論理アドレスに割り当てられた物理アドレスを交換することができる。メモリコントローラ34は、現在のL2Pテーブル62を調整して、新しいL2Pテーブル64を生成し、及び/または現在のL2Pテーブル62を格納する既存のデータ構造から独立している新しいL2Pテーブル64を生成することができる。場合によっては、メモリコントローラ34は、適格な新しいL2Pテーブル64のセットを生成し、ブロック84の動作を使用して、ブロック86での選択に適格な新しいL2Pテーブル64のセットを評価することができる。適格な新しいL2Pテーブル64のセットのそれぞれを生成するために、メモリコントローラ34は、第1の新しいL2Pテーブル64の1つまたは複数の態様(例えば、変数)を体系的に変更して、新しいL2Pテーブル64の異なるオプションをテストすることができる。このようにして、メモリコントローラ34は、メモリの相対的により頻繁にアクセスされる論理アドレスの分散を改善しながら(例えば、メモリの独立している部分に対応する物理アドレスへの再割り当て)、読み取りまたは書き込みの待ち時間を最小化するL2Pテーブルの適切な構成を決定することができる。したがって、メモリコントローラ34は、最終的なL2Pテーブル64として出力される最終的なアドレス割り当ての組み合わせを選択する前に、現在のL2Pテーブル62を調整して、様々な適格なアドレスの割り当て(例えば、適格な新しいL2Pテーブル64のセット)をテストすることができる。例えば、メモリの第1の部分50がメモリの第2の部分50のアクセスに連続的にアクセスされると判定することに応答して、メモリコントローラ34は、メモリの第3の部分50(例えば、メモリの第2の部分50から独立したメモリの部分)の物理アドレスに現在対応しているメモリの第1の部分50の物理アドレスに元々対応していた論理アドレスの割り当てをそれぞれが含む複数の論理対物理テーブルを生成し得る。
ブロック84で、メモリコントローラ34は、適格な新しいL2Pテーブル64のセットのパフォーマンスを評価することができる。メモリコントローラ34は、パフォーマンスのメトリクスを取得するために、テストデータセット(例えば、トラフィックデータセット60の1つまたは複数の部分)を使用して、適格な新しいL2Pテーブル64のセットのそれぞれをテストすることができる。適格な新しいL2Pテーブル64のセットのそれぞれの各パフォーマンスのメトリクスは、現在のL2Pテーブル62の対応するパフォーマンスメトリクスまたはメモリコントローラ34のデフォルト設定と比較することができる。パフォーマンスのメトリクス間の比較により、パフォーマンスが向上したか否か(例えば、より高速なメモリアクセスが得られたか、比較的均一なアクセス分散で同等のメモリアクセス速度が得られたか、読み取りまたは書き込みの待ち時間の短縮が得られたか)を示すパフォーマンス向上メトリクスを得ることができる。パフォーマンス改善メトリクスは、適格な新しいL2Pテーブル64のセットの特定のL2Pテーブルのパフォーマンスの改善を示す場合がある。このようにして、メモリコントローラ34は、パフォーマンス改善メトリクスに少なくとも部分的に基づいて、適格な新しいL2Pテーブル64のセットのパフォーマンスを評価して、望ましいまたは最大化されたパフォーマンスをもたらす現在のL2Pテーブル62への変更の適切な組み合わせを決定することができる。場合によっては、メモリコントローラ34は、コストとして読み取りまたは書き込み動作時間(例えば、読み取りまたは書き込みの待ち時間)を使用し、ノブ(例えば、可変)として新しいL2Pテーブル64を使用する深層学習操作(例えば、LSTM)を使用して、コストを最適化するために調整し得る。
ブロック86で、メモリコントローラ34は、適格な新しいL2Pテーブル64のセットから最終的な新しいL2Pテーブル64を選択することができ、バッファメモリ46の最後の新しいL2Pテーブル64を使用することができる。したがって、L2Pテーブルは、ブロック84で生成及びテストされた複数のL2Pテーブルから選択されて、複数のL2Pテーブルのそれぞれのメモリアクセスの待ち時間を評価することができる。現在のL2Pテーブル62は、場合によっては、バックアップL2Pテーブルとして、及び/または将来の参照のためにメモリに保持され得る。新しいL2Pテーブル64をバッファメモリ46に書き込んで、現在のL2Pテーブル62を上書きすることができる。このようにして、メモリコントローラ34は、現在のL2Pテーブル62を置き換え、将来のメモリアクセスのために新しいL2Pテーブル64を使用する(例えば、メモリコントローラ34は、新しいL2Pテーブル64を使用する)。例えば、メモリコントローラ34は、第1のL2Pテーブル(例えば、現在のL2Pテーブル62)を元の論理対物理テーブルとしてバッファメモリ46に格納し、第2のL2Pテーブル(例えば、新しいL2Pテーブル64)を、ブロック82などで第1のL2Pテーブルを調整した後の第1のL2Pテーブルを使用して生成することができ、メモリコントローラ34が論理対物理アドレスの変換の実行時に第2のL2Pテーブルを使用するように、バッファメモリ46内の第1のL2Pテーブルを第2のL2Pテーブルで上書きすることができる。
ただし、図1では、クライアントデバイス14は、リモートコンピューティングデバイス12に通信可能に結合されたものとして示されているが、いくつかの実施形態では、上記のシステム及び方法は、クライアントデバイス14のメモリコントローラ34で使用され得ることに留意されたい。本明細書に記載の技術は、本明細書に記載の利点を達成するために、様々なメモリタイプ及びコンピューティング構造と組み合わせて使用することができる。
場合によっては、メモリコントローラ34は、ワークロードタイプの表示を含むトラフィックデータセット60を使用することができる。このようにして、結果として生じる新しいL2Pテーブル64は、メモリコントローラ34を操作するワークロードタイプに少なくとも部分的に基づいて選択され得る。例えば、一部のメモリ(例えば、メモリチップ)は、並列で動作することがある16個のメモリバンクなど、並列で動作できる多数のメモリバンクを有する。異なるワークロード用の現在のL2Pテーブル62は、連続するコマンドが異なるメモリバンクに対するものである確率を高めるように最適化または設計され得、したがって並列に実行され得て、メモリのパフォーマンスの改善(例えば、メモリのトランザクションをより速い速度で完了する)をもたらす。ワークフローの例は、同じコンピューティングデバイスによって使用され、ソフトウェアアプリケーションの実行中にメモリモジュール26にアクセスする異なるソフトウェアアプリケーションを含み得る。特定のワークロード用のL2Pテーブルを設計するとき、論理アドレスは、元々、同じメモリダイ48または同じメモリデバイス30内に配置または位置決めされたメモリの部分50の物理アドレスを参照することができる。例示的なワークフローの間、メモリコントローラ34は、並列に処理することができないメモリの部分50を参照する論理アドレスに連続的にアクセスすることができる(例えば、メモリの同じ部分、同じメモリダイ48、同じメモリデバイス30)。論理アドレスを含むこれらの連続的アクセスパターンは識別され得、論理アドレスは、論理アドレスがメモリの独立した部分を参照する物理アドレスに割り当てられるように、異なるメモリダイ48または異なるメモリデバイス30に、またはその内部に配置された部分50に対応する物理アドレスに再割り当てされ得る。このように、論理アドレスに連続的にアクセスするワークロードは、物理アドレスが並列処理可能なメモリの部分50を参照するので(例えば、物理アドレスは、独立して動作するメモリの部分50を参照するため)、メモリコントローラ34に、メモリの異なる部分50に並列にアクセスさせることができる。いくつかの実施形態では、ワークロードタイプは、ワークロードのタイプに応答して、選択された新しいL2Pテーブル64をプリロードすることができるメモリコントローラ34に対して識別され得る。例えば、L2Pテーブル64は、コンピューティングデバイスで実行されている対応するソフトウェアアプリケーションに応答して、コンピューティングデバイス(例えば、コンピューティングデバイスのメモリコントローラ34)によって格納及びロードされ得る。
いくつかの実施形態では、現在のL2Pテーブル62の改良(例えば、新しいL2Pテーブル64を生成するため)が、製造時間の後、コンピューティングシステム10の動作中に実行され得る。このようにして、現在のL2Pテーブル62は、時間の経過と共に、コンピューティングシステム10のデバイスの寿命にわたって更新することができる。場合によっては、L2Pテーブルの改良は、コンピューティングシステム10が低電力モードにあるか、アイドル状態であるか、オフラインであるか、またはそうでなければメモリモジュール26にアクセスしていないときに実行され得、その結果、新しいL2Pテーブル64は、進行中のメモリプロセスを中断することなく、メモリコントローラ34によって使用される。例えば、図5の動作は、メモリコントローラ34が別のメモリ操作(例えば、読み取りの操作、書き込みの操作、リフレッシュの操作)を実行している最中でないときに、メモリコントローラ34によって実行され得る。
いくつかの実施形態では、メモリモジュール26の相対的にアクセスの多い部分を判定すること、及び/またはL2Pテーブルへの最終調整を判定することは、アクセスの閾値の量よりも多大なアクセス量の差を識別するために差の分析を実行するメモリコントローラ34を含み得る。例えば、第1の部分50は10回アクセスされ得、第2の部分50は50回アクセスされ得、アクセスの閾値の量は15回のアクセスに等しい差であり得る。第1の部分50と第2の部分50とのアクセスの差は40であり、アクセスの閾値の量は15アクセスに等しい差に対応するので、メモリコントローラ34は、第2の部分50を、比較的過剰使用されていると識別することができる。このようにして、メモリコントローラ34は、論理アドレスを物理アドレスの割り当てに時々調整して、メモリモジュール26のアクセスの少ない部分が相対的により頻繁にアクセスされるようにすることができる。
追加的または代替的に、いくつかの実施形態では、図5のブロック80で、メモリモジュール26の過度に使用された部分を識別することが、メモリモジュール26の過剰に使用された部分及び/またはより使用されていない部分の物理アドレスを識別することを含み得る。例えば、メモリコントローラ34は、ある期間に第1の部分50が関与する第1の数のメモリトランザクション(例えば、メモリ読み取りの操作、メモリ書き込みの操作、メモリリフレッシュの操作)を分析すること、同じ期間に、第2の部分50が関与する第2の数のメモリトランザクションを分析すること、及び第1の数が第2の数より大きいと判断することに、少なくとも部分的によって、第1の部分50が第2の部分50よりも頻繁にアクセスされることを判定できる。期間が開始時間と終了時間を共有するように、期間を同じ期間にしてもよく、及び/または期間は、開始時間に対して同じ持続期間(例えば、必ずしも同じ開始時間に開始してはいない、等しく持続している期間)にしてもよい。期間は、メモリの一部へのアクセスを比較するとき、及び/またはメモリのアクセスに関連するトラフィックパターンを分析するときに使用する監視期間であり得る。いくつかの実施形態では、カウンタを使用して、物理アドレスアクセスをカウントすることができることに留意されたい。カウンタは、アクセスの閾値までカウントアップすることも、アクセスされている特定の物理アドレスに応じてアクセスの閾値からカウントダウンすることもできる。任意の適切なタイプ及び数のカウンタを使用することができ、例えば、各アドレスはカウンタに対応することができ、及び/またはアドレスのセットはカウンタに対応することができる。
本開示の技術的効果は、メモリのメモリアクセスパターン(例えば、不均一なアクセスパターン、連続的論理アドレスアクセスパターン)を補うことによって、メモリの動作を改善することを含み得る。メモリコントローラは、互いに連続的にアクセスされることが多い論理アドレスを識別し、識別された連続的にアクセスされる論理アドレスに対応する論理アドレスを別の物理アドレスに再割り当てすることができる。これにより、使用頻度の低いメモリの部分に対応する、及び/またはメモリの独立した部分に対応する物理アドレスに論理アドレスが再割り当てされ、それにより、メモリの独立した部分の並列メモリアクセス動作が可能になる。新しいまたは調整された物理アドレスへの論理アドレスの再割り当ては、新しい及び/または更新されたL2Pテーブルに格納され得る。新しい及び/または更新されたL2Pテーブルに従ってメモリへのアクセスを管理するメモリコントローラは、メモリのシステムのパフォーマンスを向上させ得る。
これらの技術的効果を念頭に置いて、複数のメモリデバイスをメモリモジュールに含めることができ、それにより、メモリデバイスをユニットとして処理回路に通信可能に結合することが可能になる。例えば、デュアルインラインメモリモジュール(DIMM)には、プリント回路基板(PCB)と複数のメモリデバイスが含まれ得る。メモリモジュールは、通信ネットワークを介してクライアントデバイスまたはホストデバイスに通信可能に結合されたメモリコントローラからのコマンドに応答する。または、場合によっては、メモリコントローラがメモリ-ホストインターフェースのホスト側で使用されることがある。例えば、プロセッサ、マイクロコントローラ、FPGA、ASICなどは、それぞれ、メモリコントローラを含み得る。この通信ネットワークは、その間におけるデータ通信を可能にし、したがって、クライアントデバイスは、メモリコントローラを介してアクセス可能なハードウェアリソースを利用することができる。クライアントデバイスへのユーザの入力に少なくとも部分的に基づいて、メモリコントローラの処理回路は、クライアントデバイスとメモリデバイスとの間のデータの検索または送信を容易にするために、1つまたは複数の動作を実行することができる。クライアントデバイスとメモリデバイスとの間で通信されるデータは、クライアントデバイスでのグラフィカルユーザインターフェース(GUI)を介したユーザへの視覚化の提示、処理操作、計算などを含むがこれに限定されない様々な目的に使用することができる。したがって、これを念頭に置いて、メモリコントローラの操作及びメモリ書き込み操作に対する上記の改善は、視覚化の質(例えば、レンダリングの速度、レンダリングの質)の改善、処理操作の改善、計算の改善などとして明示し得る。
上記の特定の実施形態は例として示されているが、これらの実施形態は様々な修正及び代替的な形態が可能であることを理解されたい。クレームは、開示される特定の形態に限定することを意図するものではなく、本開示の趣旨及び範囲内に含まれる、すべての修正、同等物、及び代替案を網羅することが意図されていることをさらに理解されたい。
本明細書で提示及び特許請求される技術は、現在の技術分野を明らかに改善し、したがって、抽象的、無形、または純粋に理論的ではない、実用的な性質の物質的対象及び具体的な例に参照及び適用される。さらに、本明細書の末尾に追加された請求項に、「[機能]を[実行する]ための手段…」または「[機能]を[実行する]ためのステップ…」として指定された1つまたは複数の要素が含まれている場合、そのような要素は米国特許法第112条(f)の下で解釈されることが意図される。ただし、他の方法で指定された要素を含むいずれの請求項については、そのような要素が米国特許法第112条(f)に基づいて解釈されないことが意図されている。