JP2023508676A - ウェアレベリングを考慮したメモリ操作 - Google Patents

ウェアレベリングを考慮したメモリ操作 Download PDF

Info

Publication number
JP2023508676A
JP2023508676A JP2022539139A JP2022539139A JP2023508676A JP 2023508676 A JP2023508676 A JP 2023508676A JP 2022539139 A JP2022539139 A JP 2022539139A JP 2022539139 A JP2022539139 A JP 2022539139A JP 2023508676 A JP2023508676 A JP 2023508676A
Authority
JP
Japan
Prior art keywords
memory
logical
physical
memory controller
accessed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022539139A
Other languages
English (en)
Inventor
ラジェシュ エヌ. グプタ
Original Assignee
マイクロン テクノロジー,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロン テクノロジー,インク. filed Critical マイクロン テクノロジー,インク.
Publication of JP2023508676A publication Critical patent/JP2023508676A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本明細書に記載されるように、装置は、第1の部分、第2の部分、及び第3の部分を含むメモリを含み得る。装置はまた、バッファメモリに格納された第1の論理対物理テーブルを含むメモリコントローラを含み得る。メモリコントローラは、第1の部分が第2の部分に連続的にアクセスされることを判定し得、第1の論理対物理テーブルを調整して、メモリコントローラによって実行されるメモリトランザクションが第1の部分ではなく第3の部分にアクセスするようにし得る。

Description

このセクションは、以下に説明及び/または主張される本技術の様々な態様に関連し得る技術の様々な態様を読者に紹介することを意図している。この論述は、本開示の様々な態様のより良い理解を容易にするための背景情報を読者に提供するのに役立つと考えられる。したがって、これらの陳述は、先行技術の承認としてではなく、この観点から読まれるべきであると理解されるべきである。
一般に、コンピューティングシステムは、1つまたは複数のプロセッサまたは他の適切なコンポーネントなどの処理回路、及びチップまたは集積回路などのメモリデバイスを含む。処理回路にアクセス可能なデータを格納するために、デュアルインラインメモリモジュール(DIMM)などのメモリモジュールで1つまたは複数のメモリデバイスを使用できる。例えば、コンピューティングシステムへのユーザの入力に基づいて、処理回路は、メモリモジュールがそのメモリデバイスからのユーザの入力に対応するデータを検索することを要求することができる。場合によっては、検索されたデータは、ファームウェア、または操作を実行するために処理回路によって実行可能な命令を含み得、及び/または操作のための入力として使用されるデータを含み得る。さらに、場合によっては、操作から出力されたデータは、例えば、後続の検索を可能にするために、メモリに格納されることがある。ファームウェアが不揮発性メモリ(メディア、ストレージなど)から取得される場合、メモリに保存されている情報の取得パターンは非効率的である可能性がある。各メモリチップは、メモリバンクと呼ばれることもあるサブユニットで構成されている。メモリバンクは入出力回路を共有する場合があるが、それ以外の場合は互いに独立して動作する場合がある。このようにして、コンピューティングシステムは、別のメモリバンクの一部を参照することなく、あるメモリバンクの一部を参照することができる。メモリユニットは、単一のメモリチップまたはメモリチップの集合体であり得る。メモリユニットは、メモリの「バンク」で構成されていると考えることができる。メモリバンクは独立して動作し得るため、あるメモリバンクへの読み取りまたは書き込み命令は、別のメモリバンクが前の読み取り/書き込み命令の処理でビジー状態のときに実行を続行する場合がある。これは、メモリチップが複数のバンクで同時に動作する可能性があることを意味する。ただし、操作が同じバンクに発せられた場合、メモリチップは、いずれかの前の操作が終了するまで次の操作の処理を待機する場合がある。したがって、所与のメモリシステム(例えば、1つまたは複数のメモリユニット)の読み取り/書き込み速度は、メモリ間で転送されるデータが異なるバンクにわたってどのように分散されるかに依存し得る。例えば、すべてのデータが同じバンクに格納されている場合、メモリの操作の実行に使用される期間の合計は、データが複数のバンクで保存及び/または分散されるときにメモリの操作の実行に使用される期間の合計に比べて長くなると予想される。
ストレージシステムでは、アドレス変換テーブルを使用して、メモリアドレスを論理から物理アドレスにマップすることができる。例えば、データ(例えば、メモリに格納されている情報)は、論理対物理(L2P)変換テーブルを使用して、メモリの論理アドレスから物理アドレスにマッピングできる。時間の経過と共に、メモリアクセスのパターンに応じて、メモリの一部の物理アドレスがメモリの他の物理アドレスよりも頻繁にアクセスされる可能性があり、これは、メモリの他の部分よりも相対的に速い速度で、よりアクセスされた物理アドレスに対応するメモリの部分を経年劣化させ得る。メモリの不均一な経年劣化は、一般に望ましくない。より効率的なメモリアクセス操作は、メモリ管理操作を改善し(例えば、パフォーマンスを改善し、メモリの操作を実行するために使用される時間量を削減する)、ウェアレベリングを改善する(例えば、不均一なアクセスパターンを削減する、メモリの不均一な経年劣化を促すアクセスパターンを均一化する)ことが望ましい場合がある。
本開示の様々な態様は、以下の詳細な説明を読み、以下の図面を参照すると、よりよく理解され得る。
実施形態による、クライアントデバイス及び1つまたは複数のコンピューティングデバイスを含むコンピューティングシステムのブロック図である。 実施形態による、図1のコンピューティングデバイスで使用することができるメモリモジュールのブロック図である。 実施形態による、メモリモジュールが比較的不均一なアクセスパターンによって影響を受けるような持続期間の後の、図2のメモリモジュールのブロック図である。 実施形態による、現在の論理対物理テーブル(L2Pテーブル)を調整して、不均一なアクセスパターンを先制的に補償するように動作する、図2のメモリモジュールのコントローラの図である。 実施形態による、不均一なアクセスパターンを先制的に補償するために図4のコントローラを操作するためのプロセスのフローチャートである。
本開示の様々な実施形態の要素を導入するとき、「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)に基づいて解釈されないことが意図されている。

Claims (20)

  1. 装置であって、
    第1の部分、第2の部分、及び第3の部分を含むメモリ、及び
    第1の論理対物理テーブルを格納するように構成されたバッファメモリを含むメモリコントローラであって、
    前記第1の部分が前記第2の部分に連続的にアクセスされることを判定し、
    前記第1の論理対物理テーブルを調整して、前記第1の部分をアドレス指定するメモリトランザクションが、前記第2の部分から独立して前記第3の部分にアクセスするよう構成されている、前記メモリコントローラを備える、
    前記装置。
  2. 前記メモリコントローラが、
    前記第1の論理対物理テーブルを、元の論理対物理テーブルとして、前記バッファメモリに格納し、
    前記第1の論理対物理テーブルの前記調整後、前記第1の論理対物理テーブルを使用して、第2の論理対物理テーブルを生成し、
    前記バッファメモリの前記第1の論理対物理テーブルを、前記第2の論理対物理テーブルで上書きし、前記メモリコントローラが、前記第2の論理対物理テーブルを使用して前記メモリにアクセスするように構成されている、
    ように構成されている、請求項1に記載の装置。
  3. 前記メモリが、フラッシュメモリ、NANDメモリ、相変化メモリ、3D XPoint(商標)メモリ、または強誘電体ランダムアクセスメモリ、またはそれらの任意の組み合わせのうちの少なくとも1つを含む、請求項1に記載の装置。
  4. 前記メモリコントローラは、前記第1の部分が、閾値よりも多い回数、前記第2の部分に連続的にアクセスされることを判定するのに応じて、前記第1の論理対物理テーブルを調整するように構成される、請求項1に記載の装置。
  5. 前記第1の部分は、以下、
    メモリ読み取りの操作、
    メモリ書き込みの操作、及び
    メモリリフレッシュの操作、のうちの1つまたは複数の一部としてアクセスされる、請求項4に記載の装置。
  6. 前記メモリが、前記第2の部分を含む第1のダイと、前記第3の部分を含む第2のダイとを含む、請求項1に記載の装置。
  7. 前記メモリコントローラは、少なくとも部分的に、第1の論理アドレスを前記第1の部分へのアドレス指定から前記第3の部分へのアドレス指定に変更することによって、前記第1の部分とは対照的に、前記メモリコントローラによって実行される前記メモリトランザクションが前記第3の部分にアクセスするように前記第1の論理対物理テーブルを調整するよう構成される、請求項1に記載の装置。
  8. 前記メモリコントローラは、前記第1の論理アドレスを前記第1の部分へのアドレス指定から前記第3の部分へのアドレス指定に、少なくとも部分的に、
    前記第1の論理対物理テーブルにおいて、前記第1の論理アドレスが前記第1の部分の第1の物理アドレスに対応することを識別し、
    前記第1の論理対物理テーブルにおいて、第2の論理アドレスが前記第3の部分の第2の物理アドレスに対応することを識別し、
    少なくとも部分的に、前記第1の論理アドレスを前記第2の物理アドレスに対応するように再割り当てし、前記第2の論理アドレスを前記第1の物理アドレスに対応するように再割り当てすることによって、第2の論理対物理テーブルを生成することよって、変更するように構成される、請求項7に記載の装置。
  9. 前記メモリコントローラが、
    トレーニングデータセットを受信し、
    前記トレーニングデータセットに少なくとも部分的に基づいて、前記第1の部分が前記第2の部分よりも頻繁にアクセスされるということを判定し、
    それぞれが前記第2の部分よりも頻繁にアクセスされる前記第1の部分を補償する複数の論理対物理テーブルを生成し、
    前記第1の論理対物理テーブルを調整するときに使用する前記複数の論理対物理テーブルの1つを選択するように構成される、請求項1に記載の装置。
  10. 前記メモリコントローラは、前記複数の論理対物理テーブルのそれぞれについての読み取りまたは書き込みの待ち時間の比較に少なくとも部分的に基づいて、前記複数の論理対物理テーブルのうちの1つを選択するように構成される、請求項9に記載の装置。
  11. 前記メモリコントローラは、前記第1の部分が、メモリ書き込みの操作、メモリ読み出しの操作、メモリリフレッシュの操作、またはそれらの任意の組み合わせの完了後に前記第2の部分に連続的にアクセスされることを判定するように構成される、請求項1に記載の装置。
  12. メモリコントローラを動作させる方法であって、
    前記メモリコントローラによって通信可能にアクセスされるメモリの複数の部分のアクセス頻度を示す複数のデータを含むトラフィックデータセットを受信することであって、前記トラフィックデータセットは、前記メモリコントローラが、第1の論理アドレスを、前記複数の部分の第1の部分の第1の物理アドレスに対応させる第1の割り当てを使用する間に生成される、前記受信すること、
    前記第1の部分が前記複数の部分の第2の部分に連続的にアクセスされることを判定すること、
    前記第1の論理アドレスを第3の部分の第3の物理アドレスに対応させる第2の割り当てを生成すること、及び
    前記第1の割り当てを格納するように構成されたバッファメモリに、前記バッファメモリの前記第1の割り当てを上書きする前記第2の割り当てを格納することを含む、
    前記方法。
  13. 前記第1の部分が前記第2の部分に連続的にアクセスされることを判定することは、前記第1の部分が前記第3の部分に持続期間中、連続的にアクセスされるよりも、前記第1の部分が前記持続期間中により多く前記第2の部分に連続してアクセスされることを判定することを含む、請求項12に記載の方法。
  14. 複数の割り当ての評価に少なくとも部分的に基づいて、前記第2の割り当てを生成することを含む、請求項12に記載の方法。
  15. 前記第2の割り当ては、前記複数の割り当てによってそれぞれ得られる複数の読み取りまたは書き込みの待ち時間から、相対的に最も低い読み取りまたは書き込みの待ち時間をもたらす、前記第2の割り当てに応じて前記複数の割り当てから選択される、請求項14に記載の方法。
  16. 半導体デバイスであって、
    第1の部分、第2の部分、及び第3の部分を含み、前記第1の部分及び前記第3の部分は、少なくとも部分的に並列にアクセスされるように構成されるメモリ、及び
    バッファメモリを含むメモリコントローラであって、
    前記第1の部分が前記第2の部分のアクセスに連続的にアクセスされることを判定し、
    前記第1の部分が前記第2の部分の前記アクセスに連続的にアクセスされることを判定することに応じて、それぞれが前記第3の部分にアクセスするために使用される論理アドレスの割り当てを含む複数の論理対物理テーブルを生成し、前記論理アドレスは、前記第1の部分にアクセスした前のときに使用されており、
    前記複数の論理対物理テーブルのそれぞれのメモリアクセスの待ち時間の評価に少なくとも部分的に基づいて、前記複数の論理対物理テーブルから第1の論理対物理テーブルを選択し、
    第2の論理対物理テーブルを上書きするために、前記第1の論理対物理テーブルを前記バッファメモリに格納するように構成される、前記メモリコントローラ、
    を含む、前記半導体デバイス。
  17. 前記メモリコントローラは、前記複数の論理対物理テーブルの前記生成と、それぞれの論理対物理テーブルの前記選択を、繰り返しの回数に対応する反復回数が反復回数の閾値以上になるまで繰り返すように構成されている、請求項16に記載の半導体デバイス。
  18. 前記メモリコントローラは、前記複数の前記論理対物理テーブルを生成するときに、前記第2の論理対物理テーブルを調整して、前記メモリコントローラによって実行されるメモリトランザクションが、前記第1の部分とは対照的に、前記第3の部分にアクセスするように構成される、請求項16に記載の半導体デバイス。
  19. 前記メモリコントローラは、
    第2の部分のセットよりも頻繁にアクセスされる第1の部分のセットを識別し、前記第1の部分のセットは前記第1の部分を含み、前記第2の部分のセットは前記第2の部分を含み、
    前記第1の部分のセットの少なくとも一部を、前記第2の部分のセットの少なくとも一部に対応する物理アドレスに再割り当てする複数の割り当てオプションに対応するように、前記複数の論理対物理テーブルを生成するように構成される、請求項16に記載の半導体デバイス。
  20. 前記メモリコントローラは、前記メモリアクセスの待ち時間及び前記第1の部分のセットの再割り当ての割合を考慮する判定に少なくとも部分的に基づいて、前記複数の論理対物理テーブルから、前記第1の論理対物理テーブルを選択するように構成される、請求項19に記載の半導体デバイス。
JP2022539139A 2019-12-26 2020-11-19 ウェアレベリングを考慮したメモリ操作 Pending JP2023508676A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/727,196 2019-12-26
US16/727,196 US11442631B2 (en) 2019-12-26 2019-12-26 Memory operations with consideration for wear leveling
PCT/US2020/061312 WO2021133485A1 (en) 2019-12-26 2020-11-19 Memory operations with consideration for wear leveling

Publications (1)

Publication Number Publication Date
JP2023508676A true JP2023508676A (ja) 2023-03-03

Family

ID=76545716

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022539139A Pending JP2023508676A (ja) 2019-12-26 2020-11-19 ウェアレベリングを考慮したメモリ操作

Country Status (6)

Country Link
US (2) US11442631B2 (ja)
EP (1) EP4081904A4 (ja)
JP (1) JP2023508676A (ja)
KR (1) KR20220091601A (ja)
CN (1) CN114830098A (ja)
WO (1) WO2021133485A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687245B2 (en) * 2020-11-19 2023-06-27 EMC IP Holding Company LLC Dynamic slice assignment in a distributed storage system
US11556420B2 (en) * 2021-04-06 2023-01-17 Macronix International Co., Ltd. Managing error correction coding in memory systems
US11989431B2 (en) * 2022-03-07 2024-05-21 Western Digital Technologies, Inc. Write updates sorting during BKOPS idle

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934074B2 (en) * 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
KR100472726B1 (ko) * 2002-10-29 2005-03-10 주식회사 하이닉스반도체 고속 데이터억세스를 위한 반도체 메모리장치 및 그구동방법
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7251653B2 (en) * 2004-06-30 2007-07-31 Microsoft Corporation Method and system for mapping between logical data and physical data
US7360063B2 (en) * 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US8135936B2 (en) 2009-12-23 2012-03-13 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
US7707379B2 (en) * 2006-07-13 2010-04-27 International Business Machines Corporation Dynamic latency map for memory optimization
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US8176295B2 (en) * 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8447915B2 (en) * 2009-07-23 2013-05-21 Hitachi, Ltd. Flash memory device for allocating physical blocks to logical blocks based on an erase count
US9026767B2 (en) * 2009-12-23 2015-05-05 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
US8774232B2 (en) * 2010-01-08 2014-07-08 Ciena Corporation Systems and methods of measuring latency and routing thereon in optical networks
US8427958B2 (en) * 2010-04-30 2013-04-23 Brocade Communications Systems, Inc. Dynamic latency-based rerouting
US8843693B2 (en) * 2011-05-17 2014-09-23 SanDisk Technologies, Inc. Non-volatile memory and method with improved data scrambling
US9098400B2 (en) * 2012-10-31 2015-08-04 International Business Machines Corporation Dynamic tuning of internal parameters for solid-state disk based on workload access patterns
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
US9229876B2 (en) * 2013-12-17 2016-01-05 Sandisk Technologies Inc. Method and system for dynamic compression of address tables in a memory
KR102355573B1 (ko) * 2014-10-29 2022-01-27 삼성전자주식회사 선형 리맵퍼 및 액세스 윈도우를 포함하는 메모리 시스템 및 시스템 온 칩
KR20160075174A (ko) 2014-12-19 2016-06-29 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
US9952801B2 (en) * 2015-06-26 2018-04-24 Intel Corporation Accelerated address indirection table lookup for wear-leveled non-volatile memory
US10705972B2 (en) * 2016-09-13 2020-07-07 Advanced Micro Devices, Inc. Dynamic adaptation of memory page management policy
US20180173619A1 (en) 2016-12-21 2018-06-21 Sandisk Technologies Llc System and Method for Distributed Logical to Physical Address Mapping
US10346944B2 (en) * 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
US11023803B2 (en) * 2017-04-10 2021-06-01 Intel Corporation Abstraction library to enable scalable distributed machine learning
US10261903B2 (en) * 2017-04-17 2019-04-16 Intel Corporation Extend GPU/CPU coherency to multi-GPU cores
US11087206B2 (en) * 2017-04-28 2021-08-10 Intel Corporation Smart memory handling and data management for machine learning networks
US20180322386A1 (en) * 2017-05-05 2018-11-08 Intel Corporation Fine-grain compute communication execution for deep learning frameworks
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
KR102540964B1 (ko) * 2018-02-12 2023-06-07 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
US20220180467A1 (en) * 2019-03-15 2022-06-09 Intel Corporation Systems and methods for updating memory side caches in a multi-gpu configuration

Also Published As

Publication number Publication date
CN114830098A (zh) 2022-07-29
US20230004307A1 (en) 2023-01-05
EP4081904A1 (en) 2022-11-02
KR20220091601A (ko) 2022-06-30
WO2021133485A1 (en) 2021-07-01
EP4081904A4 (en) 2023-06-14
US11442631B2 (en) 2022-09-13
US20210200447A1 (en) 2021-07-01

Similar Documents

Publication Publication Date Title
US11625321B2 (en) Apparatuses and methods for memory address translation during block migration using depth mapping table based on mapping state
JP2023508676A (ja) ウェアレベリングを考慮したメモリ操作
US9377958B2 (en) Allocation of read/write channels for storage devices
US11409449B2 (en) Workload based storage optimization
CN111831220B (zh) 用于存储器写入操作的设备、方法和存储器模块
US20160048342A1 (en) Reducing read/write overhead in a storage array
US10430329B2 (en) Quality of service aware storage class memory/NAND flash hybrid solid state drive
US20220171709A1 (en) Forward caching memory systems and methods
WO2015058695A1 (zh) 一种存储器资源优化方法和装置
CN111684408B (zh) 多存储器类型存储器模块系统和方法
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
JP2012248110A (ja) マルチチャネルを有するメモリ装置及び同装置における誤り訂正チャネル決定を含む書き込み制御方法
US10705762B2 (en) Forward caching application programming interface systems and methods
An et al. Avoiding read stalls on flash storage
CN110618872B (zh) 混合内存动态调度方法及系统
CN116795735A (zh) 固态硬盘空间分配方法、装置、介质及系统
Lee et al. Mapping granularity and performance tradeoffs for solid state drive
CN112732182A (zh) 一种nand的数据写入方法及相关装置
US11861193B2 (en) Emulating memory sub-systems that have different performance characteristics
US20230060322A1 (en) Memory channel controller operation
JP2023127069A (ja) 情報処理装置およびメモリアクセス制御方法
KR20210125943A (ko) 데이터 특성에 따른 플래시 메모리 관리 방법, 통합 데이터 관리 방법 및 ssd 컨트롤러
CN117687569A (zh) 磁盘性能优化方法、系统、电子设备及存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220624

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220624

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230801

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240305