JP7038227B2 - ハイブリッドメモリシステム - Google Patents

ハイブリッドメモリシステム Download PDF

Info

Publication number
JP7038227B2
JP7038227B2 JP2020550729A JP2020550729A JP7038227B2 JP 7038227 B2 JP7038227 B2 JP 7038227B2 JP 2020550729 A JP2020550729 A JP 2020550729A JP 2020550729 A JP2020550729 A JP 2020550729A JP 7038227 B2 JP7038227 B2 JP 7038227B2
Authority
JP
Japan
Prior art keywords
memory system
memory
hybrid memory
hybrid
data
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.)
Active
Application number
JP2020550729A
Other languages
English (en)
Other versions
JP2021516402A (ja
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 JP2021516402A publication Critical patent/JP2021516402A/ja
Application granted granted Critical
Publication of JP7038227B2 publication Critical patent/JP7038227B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/068Hybrid storage device
    • 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
    • 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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

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 Security & Cryptography (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Description

本開示は概して、半導体メモリ及び方法に関し、特に、ハイブリッドメモリシステムに関連する装置及び方法に関する。
メモリデバイスは典型的には、コンピューティングシステム内で、内蔵の、半導体の、集積回路として設けられる。揮発性メモリ及び不揮発性メモリを含む多くの異なるタイプのメモリが存在する。揮発性メモリは、そのデータ(例えば、ホストデータ、エラーデータなど)を維持する電力を必要とすることがあり、とりわけ、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、同期型ダイナミックランダムアクセスメモリ(SDRAM)、及びサイリスタランダムアクセスメモリ(TRAM)を含むことができる。不揮発性メモリは、電力供給されないときに記憶されたデータを維持することによって永続的データを提供することができ、とりわけ、NANDフラッシュメモリ、NORフラッシュメモリ、及び相変化ランダムアクセスメモリ(PCRAM)などの抵抗性可変メモリ、抵抗性ランダムアクセスメモリ(RRAM)、並びにスピントルクトランスファランダムアクセスメモリ(STT RAM)などの磁気抵抗性ランダムアクセスメモリ(MRAM)を含むことができる。
コンピューティングシステムは、いくつかの処理リソース(例えば、1つ以上のプロセッサ)を含むことが多く、いくつかの処理リソースは、命令を取り出し及び実行することができ、実行した命令の結果を適切な位置に記憶することができる。処理リソースは、例えば、コンピューティングシステムの演算のための命令を実行するために使用することができる、算術論理ユニット(ALU)回路、浮動小数点ユニット(FPU)回路、及び組み合わせ論理ブロックなどの、いくつかの機能ユニットを含むことができる。
コンピューティングシステムにおけるいくつかのコンポーネントは、実行のために機能ユニット回路に命令を提供することに関与することがある。命令は、例えば、コントローラ及び/またはホストプロセッサなどの処理リソースによって実行されることがある。更に、異なるタイプの演算が機能ユニット回路を通じて1つまたは複数のクロックサイクルにおいて実行されることがあるので、命令及びデータの中間結果も順序付けられることがあり、及び/またはバッファリングされることがある。
本開示のいくつかの実施形態に従った、フレームワーク、ホスト、及びメモリシステムを含むコンピューティングシステムの形式にある装置のブロック図である。 本開示のいくつかの実施形態に従った、メインメモリを含むホスト及びメモリシステムを含むコンピューティングシステムの形式にある装置のブロック図である。 本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムに論理ブロックアドレス範囲をマッピングする実施例のフローチャートを示す。 本開示のいくつかの実施形態に従った、ホストメモリ(例えば、ホストと関連付けられたメインメモリ)にハイブリッドメモリシステムの部分をマッピングする実施例のフローチャート317を示す。 コードページング動作の実行に応答してハイブリッドメモリシステムにデータを選択的に転送する実施例のフローチャートを示す。 本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムにコマンドトラフィックを選択的に転送する実施例のフローチャートを示す。 本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムにコマンドを選択的に転換(divert)する実施例のフローチャートを示す。 本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムにコマンドトラフィックを選択的に転換する実施例のフローチャートを示す。 本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムに、識別された書き込みパターンを有するコマンドトラフィックを選択的に転換する実施例のフローチャートを示す。 識別されたコマンド特性によってハイブリッドメモリシステムに選択的に転換する実施例のフローチャートを示す。
本開示は、ハイブリッドメモリシステムに関連する装置及び方法を含む。実施例の装置は、ホストに結合するハイブリッドメモリシステム、及びハイブリッドメモリシステムに結合されたコントローラを含む。コントローラは、コマンドに感度を割り当て、割り当てられた感度の少なくとも一部に基づいて、ハイブリッドメモリシステムにコマンドを選択的に転換させるように構成されてもよい。
パーソナルコンピュータ、ラップトップ、タブレット、ファブレット、スマートフォン、モノのインターネット(IoT)対応デバイスなどのコンピューティングシステムは、コンピューティングシステムと関連付けられたデータ及び/または命令を記憶する1つ以上のメモリリソースを含んでもよい。本明細書で使用されるように、「IoT対応デバイス」は、物理デバイス、車両、家庭用電気製品、並びに電子機器、ソフトウェア、センサ、アクチュエータ、及び/またはそのような物体が接続し、データを交換することを可能にするネットワーク接続と共に組み込まれた他のデバイスを含む。IoT対応デバイスの例は、他のサイバー物理システムの中で、ウェアラブル技術、スマートホームデバイス、インテリジェントショッピングシステム、及び監視デバイスを含む。加えて、コンピューティングシステムは、コンピューティングシステム上で稼働するアプリケーションに対する共通サービスを提供するオペレーティングシステムなどのシステムソフトウェアを実行する1つ以上の処理リソースを含んでもよい。オペレーティングシステムの例は、Linux(登録商標)、Unix(登録商標)、Windows(登録商標)などを含む。
演算の間、コンピューティングシステムは、コンピューティングシステムに機能性を提供するよう、ファームウェア、コンピュータコード、メタコード、フレームワークファイルなどの命令を実行してもよい。それらの命令の少なくともいくつかは、他の命令よりも頻繁に実行されてもよく、及び/またはそれらの命令の少なくともいくつかは、コンピューティングシステムの特定の回数の演算において実行されてもよい。
例えば、コンピューティングシステムが命令の同一の部分を複数回読み出すことを試みる場合、例外(例えば、誤り)が発生することがある。いくつかのアプローチでは、そのような例外を生成する命令は、命令に複数回アクセスする際のコンピューティングシステムの使用の時間の量を削減するよう、リードアヘッド機構(または、他の適切なプリフェッチ機構)を介して、コンピューティングシステムと関連付けられたキャッシュにロードされてもよい。例外に遭遇した(または、例外に遭遇する可能性が高い)命令をプリフェッチすることは、命令に複数回アクセスする際のコンピューティングシステムの使用の時間の量を削減することができるが、そのようなアプローチにおいて利用されるキャッシュは概して、他のメモリリソースほど高速ではない。
いくつかの実施形態では、ページ誤りなどの例外は、ユーザ空間及び/またはカーネルサービスもしくはライブラリにおいて開発されたプログラム(例えば、アプリケーション)がコンピューティングシステムまたはコンピューティングシステムのプロセッサと関連付けられた内部キャッシュに記憶された命令にアクセスすることを試みるときに発生することがあり、命令は、命令にアクセスすることの試みが行われるときにコンピューティングシステムのメモリ(例えば、RAM)に存在しない。そのような例外は、命令が記憶された記憶装置にアクセスし、命令と関連付けられたメモリのページを記憶装置からロードすることによって修正されてもよい。リードアヘッド動作がコンピューティングシステムによって行われる場合、そのような例外は、命令と関連付けられたメモリの連続を記憶装置からロードすることによって修正されてもよい。
別の例として、物理メモリリソースが過剰に利用されることになる場合、例えば、複数のプロセスが仮想メモリ内で実行されるとき、命令は、実行の前に物理メモリ(例えば、メモリの物理ページ)にマッピングされてもよい。しかしながら、命令をマッピングするための物理メモリが十分にない場合、物理メモリリソースは、過剰に利用されることになることがあり、それは、コンピューティングシステム性能を低下させることをもたらすことがあり、及び/またはコンピューティングシステムに対する読み出し/書き込み時間を増大させることをもたらすことがある。
更なる別の例では、特定の書き込みパターンは、コンピューティングシステムが動作しているときに共通してもよい。例えば、特定の命令は、反復的及び/または予測可能書き込みパターンを示すことができるが、いくつかのアプローチでは、それらの書き込みパターンに関する情報は、コンピューティングシステムに対してアクセス可能でないことがある。結果として、いくつかのアプローチでは、時間及び/または処理リソースは、反復的及び/または予測可能読み出しまたは書き込みパターンを有する命令を反復的にフェッチ及び書き込む際に消費されることがある。
対照的に、本明細書における実施形態は、命令が複数回アクセスされるときに発生する例外に対処する際に消費される時間の量及び/もしくは処理リソースの量を減少させることができ、コンピューティングシステムが仮想メモリアドレス指定を利用する計算速度及び/もしくは読み出し/書き込み時間を増大させることができ、並びに/または反復的及び/もしくは予測可能読み出しもしくは書き込みパターンを示す命令を反復的にフェッチする際にコンピューティングシステムによって消費される時間及び/もしくは処理リソースを軽減することができる。
例えば、いくつかの実施形態では、コンピューティングシステムと関連付けられた1つ以上のメモリリソースは、ハイブリッド記憶装置の形式で配置されてもよい。例えば、少なくとも1つのメモリリソースは、特定のタイプのメモリリソースを含んでもよく、少なくとも1つの他のメモリリソースは、異なる特定のタイプのメモリリソースを含んでもよい。非限定的な例として、コンピューティングシステムと関連付けられた1つのメモリリソースは、3D Xpoint不揮発性メモリなどの不揮発性メモリリソースであってもよく、2つ目のメモリリソースは、フラッシュメモリなどの異なる不揮発性メモリリソース(例えば、記憶ボリューム)であってもよい。実施形態は、それらの特定の例に限定されないが、ハイブリッド記憶装置を含むメモリリソースは、他のタイプの不揮発性メモリ(例えば、ROM、PROM、EPROM、EEPROM、NVRAMなど)、及び/または揮発性メモリ(例えば、RAM、DRAM、SRAMなど)の組み合わせを含んでもよい。
いくつかの実施形態では、本明細書でより詳細に説明されるように、特定の特性を示すと判定された命令は、第1のメモリリソースまたは第2のメモリリソースから記憶及び/またはアクセスされてもよい。例えば、いくつかの実施形態では、特定の命令は、命令が第1のメモリリソースから記憶及び/またはアクセスされる場合、コンピューティングシステムによってより低い待ち時間を実現することができるとの判定に応答して、第1のメモリリソースから記憶及び/またはアクセスされてもよい。
本開示の以下の詳細な説明では、本開示の一部を形成し、開示の1つ以上の実施形態をどのように実施することができるかの例示のために示される添付図面への参照が行われる。それらの実施形態は、当業者が本開示の実施形態を実施することを可能にするよう十分に詳細に説明され、本開示の範囲から逸脱することなく、他の実施形態が利用されてもよいこと、並びに処理変更、電気的変更、及び/または構造的変更が行われてもよいことが理解されよう。本明細書で使用されるように、特に、図面における参照符号に関する「N」などの指定子は、そのように指定されたいくつかの特定の特徴が含まれてもよいことを示す。本明細書で使用されるように、「いくつかの(a number of)」特定の事項は、そのような事項のうちの1つ以上を指す(例えば、いくつかのメモリアレイは、1つ以上のメモリアレイを指すことができる)。「複数の(plurality of)」は、1つよりも多いそのような事項を指すことを意図している。
本明細書における図は、最初の桁または桁が描く図番に対応し、残りの桁が図面における要素またはコンポーネントを識別する番号付け慣習に従う。異なる図の間の同様の要素またはコンポーネントは、同様の桁の使用によって識別されてもよい。例えば、104は、図1における参照要素「04」であってもよく、同様の要素は、図2において204として参照されてもよい。認識されるように、本明細書における様々な実施形態において示される要素は、本開示のいくつかの追加の実施形態を提供するように追加、交換、及び/または除去されてもよい。加えて、認識されるように、図において提供される要素の比率及び相対的大きさは、本発明の特定の実施形態を示すことを意図しており、限定的な意味として取られるべきではない。
図1は、本開示のいくつかの実施形態に従った、フレームワーク110、ホスト102、及びメモリシステム104を含むコンピューティングシステム100の形式にある装置のブロック図である。本明細書で使用されるように、フレームワーク110、ホスト102、及び/またはメモリシステム104は、別個に「装置」としても考えられてもよい。いくつかの実施形態では、メモリシステム104は、図2と関連して説明されるハイブリッドメモリシステムであってもよい。
システム100は、本明細書において図2に示されるように、1つ以上のメモリリソースを含む、メモリシステム104に結合された(例えば、接続された)ホスト102を含む。ホスト102は、様々な他のタイプのホストの中で、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、スマートフォン、メモリカードリーダ、IoT対応デバイスなどのホストシステムであってもよい。ホスト102は、システムマザーボード及び/またはバックプレーンを含むことができ、いくつかの処理リソース(例えば、1つ以上のプロセッサ、マイクロプロセッサ、またはいくつかの他のタイプの制御回路)を含むことができる。システム100は、別個の集積回路を含むことができ、またはホスト102及びメモリシステム104の両方は、同一の集積回路上にあってもよい。システム100は、例えば、サーバシステム及び/もしくは高性能コンピューティング(HPC)システム、並びに/またはそれらの部分であってもよい。
明確にするために、システム100は、本開示への特定の関連性を有する特徴に焦点を当てて簡略化されている。メモリシステム104は、例えば、DRAMアレイ(例えば、2T2C DRAMアレイ、3T DRAMアレイなど)、FeRAM、SRAMアレイ、STT RAMアレイ、PCRAMアレイ、TRAMアレイ、RRAMアレイ、NANDフラッシュアレイ、3D Xpointメモリ、NORフラッシュアレイ、並びに/またはコントローラ、3D Xpointメモリ部分、及びNANDフラッシュ部分を含む記憶サブシステムを含むことができる。
フレームワーク110は、システム100の演算を促進するよう、ホスト102と関連付けられた処理リソースによって実行可能な命令を含んでもよい。例えば、フレームワークは、読み出し、書き込み、オープン、クローズなどの計算演算を制御して1つ以上のファイルシステム(例えば、仮想ファイルシステム、拡張ファイルシステムなどのファイルシステムなど)、及び/またはブロックデバイスに対応する1つ以上の命令を提供するよう、ホスト102の処理リソースによって実行可能な命令を含んでもよい。いくつかの実施形態では、フレームワーク110は、Android(登録商標)フレームワークなどのLinux(登録商標)フレームワークであってもよい。加えて、フレームワーク110は、ホスト102上で稼働するオペレーティングシステムが、ホスト102に結合された1つ以上のデバイスと通信することを可能にするよう実行可能なドライバ(例えば、1つ以上のソフトウェアドライバ)を含んでもよい。
いくつかの実施形態では、フレームワーク110は、オペレーティングシステムを表してもよい。例えば、フレームワーク110は、それと関連付けられたLinux(登録商標)カーネルを有するオペレーティングシステムを表してもよい。そのような実施形態では、フレームワーク110は、「ソフトウェア記憶スタック」と考えられてもよい(例えば、フレームワーク110は、オペレーティングシステムのソフトウェアに基づくカーネルの実装態様を表してもよい)。したがって、フレームワーク110は、コンピューティングシステム100を動作させるよう実行可能な命令を記憶する、それと関連付けられた1つ以上のメモリリソースを有してもよく、及び/またはフレームワーク110は、コンピューティングシステム100の演算のためにフレームワーク110によって利用される命令が記憶された仮想メモリリソースを含んでもよい。実施形態は、そのように限定されないが、フレームワーク110によって利用される命令は、本明細書で更に詳細に説明されるように、メモリシステム104に記憶されてもよく、及び/もしくはメモリシステム104からアクセスされてもよく、またはホストのメインメモリに記憶されてもよく、及び/もしくはホストのメインメモリからアクセスされてもよい。
上記説明されたように、フレームワーク110は、特定のタスク及び/または演算を実行するように構成された様々なコンポーネントを含んでもよい。例えば、フレームワーク110は、システムコールコンポーネント111、仮想ファイルシステムコンポーネント112、ファイルシステムコンポーネント113、ブロックデバイスコンポーネント114、及び/またはドライバコンポーネント115を含んでもよい。
システムコールコンポーネント111は、処理リソース(例えば、ホストと関連付けられた処理リソース)によって実行可能な命令を含んでもよく、及び/または命令が実行されることになるオペレーティングシステムのカーネルから1つ以上のサービスを要求するよう最終的に命令を実行することができるハードウェアリソースがプロビジョニングされてもよい。いくつかの実施形態では、システムコールコンポーネント111は、アプリケーションプログラミングインタフェースを介してアクセスされてもよい。実施されるとき、システムコールコンポーネント111と関連付けられた命令は、ユーザ空間からカーネル空間にコンピューティングシステム100の制御を転送してもよい。いくつかの実施形態では、この制御の転送は、ソフトウェア割り込みに応答して行われてもよい。
仮想ファイルシステムコンポーネント112は、処理リソース(例えば、ホストと関連付けられた処理リソース)によって実行可能な命令を含んでもよく、及び/またはファイルシステムコンポーネント113の最上部上で抽象レイヤを設けるよう最終的に命令を実行することができるハードウェアリソースがプロビジョニングされてもよい。例えば、仮想ファイルシステムコンポーネント112は、ローカル記憶装置及び/またはネットワーク記憶装置にアクセスするよう実行することができる命令を含んでもよい。いくつかの実施形態では、仮想ファイルシステム112は、透過的に(例えば、クライアントアプリケーション対話なしに)ローカル記憶装置及び/またはネットワーク記憶装置にアクセスするよう実行することができる命令を含んでもよい。仮想ファイルシステムコンポーネント112と関連付けられた命令は、カーネルとファイルシステムコンポーネント113との間のインタフェースを指定することができる。
ファイルシステムコンポーネント113は、処理リソース(例えば、ホストと関連付けられた処理リソース)によって実行可能な命令を含んでもよく、並びに/またはコンピューティングシステム100と関連付けられたデータがどのように記憶及び/もしくは取り出されるかを制御するよう最終的に命令を実行することができるハードウェアリソースがプロビジョニングされてもよい。例えば、ファイルシステムコンポーネント113は、本明細書でより詳細に議論されるように、メモリシステム104からデータを記憶及び/または取り出すよう実行可能な命令を含んでもよい。
ブロックデバイスコンポーネント114は、処理リソース(例えば、ホストと関連付けられた処理リソース)によって実行可能な命令を記憶してもよく、及び/または特定の記憶場所もしくはコンピューティングシステム100と関連付けられた記憶場所を参照するよう最終的に命令を実行することができるハードウェアリソースがプロビジョニングされてもよい。いくつかの実施形態では、ブロックデバイスコンポーネント114は、コンピューティングシステム100にバッファリングされたアクセスをもたらすことができるハードディスクドライブ及び/またはソリッドステートドライブを含んでもよい。例えば、ブロックデバイスコンポーネント114と関連付けられた命令は、コンピューティングシステム100と関連付けられたデバイス(例えば、メモリシステム104)へのアクセスをもたらすよう実行されてもよい。
ドライバコンポーネント115は、処理リソース(例えば、ホストと関連付けられた処理リソース)によって実行可能な命令を含んでもよく、及び/またはコンピューティングシステム100と関連付けられた様々なコンポーネントに対するドライバサポートをもたらすよう最終的に命令を実行することができるハードウェアリソースがプロビジョニングされてもよい。例えば、ドライバコンポーネント115は、ホスト102、メモリシステム104、及び/またはコンピューティングシステム100と関連付けられてもよい他の周辺機器デバイス(図示せず)と関連付けられたドライバをロード及び/または更新するよう命令を実行するように構成されてもよい。
いくつかの実施形態では、フレームワーク110の様々なコンポーネントは、異なるアクセスパターンを示すことができ、異なるアクセスパターンの少なくともいくつかは、本明細書においてより詳細に説明されるように、予測可能及び/または反復的振る舞いを示すことができる。したがって、本明細書で説明される実施形態は、ハイブリッド記憶システムがフレームワーク110、ホスト102、及び/またはメモリシステム104の様々なコンポーネント及び/または様々なコンポーネントと関連付けられたアクセスパターンの管理を促進することを可能にすることができる。
フレームワーク110は、ホスト102を介してメモリシステム104に結合されてもよい。例えば、ホスト102は、フレームワーク110に記憶された命令(例えば、システムコールコンポーネント111、仮想ファイルシステムコンポーネント112、ファイルシステムコンポーネント113、ブロックデバイスコンポーネント114、及び/またはドライバコンポーネント115と関連付けられた命令)を実行するように構成された1つ以上の処理リソース(例えば、中央処理装置などのコンピュータプロセッサ及び/または他のコンピュータプロセッサ)を含んでもよい。
図2は、本開示のいくつかの実施形態に従った、メインメモリ209を含むホスト202及びメモリシステム204(例えば、ハイブリッドメモリシステム)を含むコンピューティングシステム200の形式にある装置のブロック図である。メインメモリ209は、コンピューティングシステム200の演算と関連付けられたデータの1つ以上のページを記憶するために使用することができる、RAM、DRAM、SRAMなどの揮発性メモリであってもよい。実施形態は、揮発性メモリに限定されないが、メインメモリは、揮発性メモリに加えてまたはその代わりに、不揮発性メモリを含んでもよい。
図2に示されるように、ハイブリッドメモリシステム204は、コントローラ206に結合された1つ以上のメモリリソース208-1、…、208-Nを含んでもよい。図2に示されるように、コントローラ206は、それぞれの通信チャネル210-1、…、210-Nを介して、メモリリソース208-1、…、208-Nに通信可能に結合される。通信チャネル210-1、…、210-Nは、データ及び/またはコマンドがコントローラ206とメモリリソース208-1、…、208-Nとの間で転送されることを可能にすることができる。様々な実施形態では、コントローラ206は、フレームワーク(例えば、図1に示されたフレームワーク110)及び/もしくはホスト202からの命令を実行させ、並びに/またはメモリシステム204へのアクセスを順次行うことを担当する。
コントローラ206は、状態機械、シーケンサ、またはいくつかの他のタイプのコントローラであってもよく、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイなどの形式にあるハードウェア及び/またはファームウェア(例えば、マイクロコード命令)を含むことができる。コントローラ206は、例えば、コンピューティングシステム200の演算を促進するよう実行される命令のアクセスパターンを制御することができる。本明細書で使用されるように、ホスト202、メモリシステム204、コントローラ206、及び/またはメモリリソース208-1、…、208-Nは、別個に「装置」とも考えられてもよい。
いくつかの実施形態では、メモリシステム204は、ハイブリッド記憶システムであってもよく、1つ以上のメモリリソース208-1、…、208-Nを含んでもよい。メモリリソース208-1、…、208-Nは、異なる種類のメモリリソースであってもよい。例えば、メモリリソース208-1は、3D Xpointメモリリソース、強誘電体RAM(FeRAM)などの新たな不揮発性メモリリソースであってもよく、メモリリソース208-Nは、NANDメモリリソースであってもよい。実施形態が、それらの特定の例に限定されず、メモリリソース208-1及び/またはメモリリソース208-Nは、他の適切なタイプのメモリリソースを含んでもよい。
コンピューティングシステム200の演算の間、メモリシステム204は、コードページングのために利用されてもよい。本明細書で使用されるように、「コードページング」は、それによって、コンピューティングシステム200がホスト202のメインメモリ209(例えば、システムメモリ)による使用のためにメモリシステム204からデータを記憶及び取り出すメモリ管理方式である。いくつかの実施形態では、ホスト202のメインメモリ209に記憶することができる、コードページングを促進するよう実行可能な命令は、コンピューティングシステム200の演算の一部として実行されてもよい。
しかしながら、コンピューティングシステム200の演算の間、メインメモリ209の同一の部分にアクセスする複数の命令(例えば、メインメモリ209からデータを記憶及び/または取り出す命令)が実行されてもよい。これは、コンピューティングシステム200によって生じる例外(例えば、誤り)につながることがある。いくつかの実施形態では、プログラムは、コンピューティングシステム200のメインメモリ209にマッピングされないデータ及び/または命令にアクセスしてもよい。このケースでは、データ及び/または命令は、メモリシステム204からアクセスされてもよく、それによって、データ及び/または命令がメインメモリ209からアクセス可能でないことの結果として発生するページ誤りを処理する。いくつかのアプローチでは、この例外は、メインメモリ209以外の記憶場所への読み出し及び/または書き込みアクセスをもたらすことによって扱われてもよい(例えば、修正される)。例えば、いくつかのアプローチでは、リードアヘッド機構は、例外に遭遇した命令セットをプリフェッチし、後続の実行のためにコンピューティングシステム200及び/またはホスト202と関連付けられたキャッシュにそれらを記憶するために利用されてもよい。
そのような例外は、コンピューティングシステム200の演算において非常に一般的であることがある。例えば、マルチプロセシングコンピューティング環境では、いくつかの実施例では、一日当たりに最大で数百ギガバイトの非常に大量の読み出し及び/または書き込みデータを生じさせることがある。いくつかの実施形態では、例外が生じることにつながることがある読み出し/書き込み動作において消費される処理リソース及び/または時間を軽減するために、読み出し/書き込み待ち時間を減少させ、リードアヘッド機構の利用において発生するように命令セットをプリフェッチする際に消費される処理リソースの量を低減させるよう、閾値数の例外を生じさせる命令をメモリリソース(例えば、メモリリソース208-1)に格納することが有益となることがある。
例えば、いくつかの実施形態では、コントローラ206は、特定のデータセットに対する読み出しまたは書き込みアクセス要求に対応する例外が、発生しようとしている(または、発生した)と判定し、コンピューティングシステム200による後続の実行及び/または取り出しのために、メモリリソース208-1に特定のデータセットを書き込ませるように構成されてもよい。いくつかの実施形態では、特定のデータセットは、メモリリソース208-1内のパーティションまたはLBAブロックに記憶されてもよい。パーティション及び/またはLBAブロックは、本明細書において図3A、3B、及び3Cと関連してより詳細に説明されるように、特定のデータ以外のデータ(例えば、読み出しまたは書き込みアクセス要求に対応しないデータ)がパーティション及び/またはLBAブロックに記憶されないように割り当てられてもよい(例えば、予約される)。
上記説明されたように、ホストのメインメモリ209は、揮発性メモリリソース(例えば、RAM、DRAM、SRAMなど)、不揮発性メモリリソース(例えば、HDD、フラッシュメモリ、強誘電体RAMなど)、またはそれらの組み合わせなどの物理メモリリソースであってもよい。結果として、メインメモリ209に記憶することができるデータの量は、メインメモリ209の物理的性質に起因して制限されることがある。例えば、メインメモリ209は、データを記憶することができる有限の量の空間を含むことがある。
したがって、ある動作条件では、メインメモリ209は、ホスト202がメインメモリ209に非常に多くのデータを記憶することを試みるとき、フルになることがあり、及び/または低下した性能を示すことがある。これは、メモリ空間の量がメインメモリ209によって定義された物理メモリ空間の実際の量よりも大きいとの錯覚を生じさせるために、仮想メモリ技術を利用してメモリリソース(例えば、メインメモリ209)を抽象化するシステムにおいては、更に悪化することがある。
そのような実装態様では、仮想アドレス空間は、論理-物理アドレス指定技術を使用して管理されてもよい(例えば、ホスト202と関連付けられたメモリ管理ユニットなどの制御回路によって)。例えば、仮想アドレスは、対応する物理アドレスに割り当てられてもよく、対応する物理アドレスは、最終的にプロセスを実行することができるメインメモリ209の物理位置(例えば、メモリの1つ以上のページなど)に対応してもよい。しかしながら、複数の仮想メモリアドレスが同一の物理メモリアドレスにマッピングされるとき、コンピューティングシステム200は、低下した性能に遭遇することがあり、並びに/またはハングアップすることがある(例えば、プロセスが終了することがあり、及び/もしくは予想外に振る舞うことがある)。
例えば、仮想メモリ技術を利用する計算の実装態様では、1つ以上のプロセスは、メインメモリ209の物理メモリ位置にマッピングすることができる1つ以上の仮想記憶位置(例えば、メモリページ、メモリブロックなど)を参照してもよい。更に、メインメモリ209がフルであるとき、プロセスを実行するために利用可能な適切な物理メモリリソースが存在しないので、仮想メモリページは、呼び出されることが可能でないことがある。
いくつかのアプローチでは、これは、メインメモリ209の物理メモリリソースを解放するよう、メインメモリ209内のデータのページをスワップ空間に転送することによって軽減され得る。例えば、いくつかのアプローチでは、オペレーティングシステムのカーネルは、アノニマスページに対して割り当てられたメインメモリ209の物理メモリリソースを解放する機構を含んでもよい。本明細書で使用されるように、「アノニマスページ」は、関連するファイルを有さないメモリのページである。例えば、アノニマスページは、ファイルによって支持されないメモリのページ(例えば、指定されたファイルを有さないメモリのページ)であってもよい。しかしながら、アノニマスページは、ファイルに関連しなくてもよいが、アノニマスページは、プロセス及び/またはプロセスワーキングセットに関連してもよい。プロセス及びプロセスワーキングセットの非限定的な例は、ヒープ、スタック、定数などのデータ構造を含む。本明細書で使用されるように、プロセスワーキングセットは、ホストのメインメモリなど、ホストの物理メモリに記憶されたホストの仮想アドレス空間内のデータの1つ以上のページを含む。例えば、プロセスワーキングセットは、ホストのメインメモリに可視的なメモリのページ(例えば、ホストによって直近に参照されたページ)を包含する。
そのようなアプローチでは、ページ(例えば、アノニマスページ)の関連するコンテンツは、スワップ空間及び/またはスワップデバイスに一時的に転送されてもよい(例えば、複製される)。ページがその後参照されるイベントでは、ページは、メインメモリ209に再度転送されてもよい(例えば、複製される)。しかしながら、メインメモリ209からスワップ空間またはスワップデバイスにページを転送し、その後、スワップ空間またはスワップデバイスから再度メインメモリ209にページを転送することと関連付けられた時間及びエネルギー消費に起因して、従来のスワッピング技術は、特に、そのような技術が反復的に利用される実装態様では、あまり望ましくないことがある。本明細書で使用されるように、プロセスワーキングセットは、ホストのメインメモリなど、ホストの物理メモリに記憶されたホストの仮想アドレス空間内のデータの1つ以上のページを含む。例えば、プロセスワーキングセットは、ホストのメインメモリに可視的なメモリのページ(例えば、ホストによって直近で参照されたページ)を包含する。
メモリのページに対応するデータなどのデータの選択的な転送を促進するために、いくつかの実施形態では、ハイブリッドメモリデバイス204の一部分は、スワップデバイスとして動作するように構成されてもよい(例えば、ハイブリッドメモリシステム204の一部分への及びハイブリッドメモリシステム204の一部分からのメモリのページの選択的な転送を可能にするように構成されてもよい)。例えば、メモリリソース208-1の一部分は、メモリのページがメモリリソース208-1の一部分に選択的に転送されるように、スワップデバイスとして動作するように構成されてもよい。いくつかの実施形態では、メモリリソース208-1のメモリの1つ以上のページまたはメモリリソース208-1と関連付けられた1つ以上の論理ブロックアドレスは、図4と関連して更に詳細に説明されるように、スワップ動作を実行するよう割り当てられてもよい。メモリの1つ以上のページ及び/もしくは1つ以上の論理ブロックアドレスは、ハイブリッドメモリシステム204が製造されるときに割り当てられてもよく(例えば、ハイブリッドメモリシステム204がエンドユーザに販売のために供給される前)、またはメモリの1つ以上のページ及び/もしくは1つ以上の論理ブロックアドレスは、ハイブリッドメモリシステム204が初期化されるときに割り当てられてもよい(例えば、コンピューティングシステム200がブートアップされるとき)。実施形態はそのように限定されないが、いくつかの実施形態では、メモリの1つ以上のページ及び/または1つ以上の論理ブロックアドレスは、コンピューティングシステム200のランタイムの間にハイブリッドメモリシステム204が動的であるときに割り当てられてもよい。
いくつかの実施形態では、スワップデバイスとして割り当てられたハイブリッドメモリシステム204の部分は、ハイブリッドメモリシステム200の他の部分よりも低いアクセス時間を有するハイブリッドメモリシステム200の一部分であってもよい。例えば、メモリリソース208-1は、メモリリソース208-1が3D Xpointメモリリソースなどの新たなタイプのメモリリソースであることに起因して、メモリリソース208-Nよりも低いアクセス時間を有することができる。更に、いくつかの実施形態では、スワップデバイスとして割り当てられたハイブリッドメモリシステム204の部分は、ハイブリッドメモリシステム200の他の部分よりも長い耐久性を有するハイブリッドメモリシステム200の一部分であってもよい。
いくつかの実施形態では、ホスト202によって実行されるプロセス及び/またはアプリケーションは、NoSQL、SQLite、クラウドベースのデータベースマネジメントシステム(DBMS)、または他の適切なDBMSなどのDBMSに依存することがある。DBMSは、エンドユーザが、コンピューティングシステム200と関連付けられたデータベース内のデータを作成し、読み出し、更新し、及び/または削除することを可能にすることができる。いくつかの実施形態では、DBMSは、データ一貫性及び/またはシステム永続性が実現されることの可能にすることができる、ジャーナリングポリシに従って動作してもよい。DBMSは、それと関連付けられたコマンドを有してもよい。いくつかの実施形態では、DBMSと関連付けられたコマンドは、DBMSコマンドに割り当てられた感度の少なくとも一部に基づいて、ハイブリッドメモリシステムの一部分に選択的に転換されてもよい。
ジャーナリングシステムは、ファイルシステム(例えば、本明細書において図1に示されたファイルシステム113)にまだコミットされていない変更を記録するジャーナリングファイルシステムであってもよい。コンピューティングシステム200の演算の間、ジャーナリングシステムは、メモリシステム204及び/またはメインメモリ209を圧迫するような複数のランダムな書き込みを受けることがある。例えば、ジャーナリングシステムは、コンピューティングシステム200のメモリ及び/またはメインメモリ209を過剰に利用することがある複数の同時ランダム且つ頻繁な書き込みを受けることがあり、それによって、コンピューティングシステム200のメモリ及び/またはメインメモリを圧迫させる。
それらのランダム且つ頻繁な書き込みは、フォアグラウンドで実行される維持動作(例えば、書き込みコマンド実行の間)に起因して、特に、フラッシュベースのメモリシステムにおいて長い待ち時間を発生させることがある。それらの待ち時間は、フラッシュベースのメモリシステムが最大能力でもしくはほぼ最大能力で動作しているとき、及び/またはフラッシュベースのメモリシステムが延長した時間期間の間に動作していたときなどの特定の条件下で、フラッシュベースのメモリシステムにおいて更に悪化することがある。対照的に、ハイブリッドメモリシステム204は、経時的に、及び/またはハイブリッドメモリシステム204が最大能力でもしくはほぼ最大能力で動作しているとき、フラッシュベースのメモリシステムよりも低い待ち時間が発生することがある。
フラッシュベースのメモリシステムと関連付けられた不備を軽減するために、いくつかの実施形態は、コントローラ206が、DBMSによって扱われるコマンドトラフィックの感度を判定し、判定されたトラフィックの感度に基づいて特定のタイプのコマンドトラフィックにインジケータを適用することを可能にする。コマンドトラフィックの感度は、特定のコマンドの実行の頻度、コマンドのサイズ、コマンドの実行が消費するリソースの量(例えば、メモリリソース及び/もしくは処理リソース)、コマンドを実行することができる速度、または他の適切な感度特性などのコマンドトラフィックの特性に基づいてもよい。いくつかの実施形態では、感度は、コマンドの実行と関連付けられた書き込み待ち時間に基づいてもよい。この例では、コマンドは、コマンドの実行と関連付けられた書き込み待ち時間が閾値書き込み待ち時間を上回るとの判定に応答して、ハイブリッドメモリシステム204に選択的に転換されてもよい。
コントローラ206がコマンドにインジケータを付加すると、コマンドは、コンピューティングシステム200の適切な記憶場所に選択的に転換されてもよい。例えば、反復的に、ランダムに、及び/または頻繁に実行されるコマンドトラフィック(コンピューティングシステム200の演算の間にジャーナリングシステムによって受けられる同時のやや頻繁且つランダムな書き込みなど)は、ハイブリッドメモリデバイス204に選択的に転換されてもよい。いくつかの実施形態では、コマンドトラフィックは、インジケータに基づいて、ハイブリッドメモリシステム204と関連付けられた複数のメモリリソース208-1、…、208-Nの特定のメモリリソース(例えば、メモリリソース208-1)に選択的に転換されてもよい。
ハイブリッドメモリシステム204にコマンドトラフィックの特定の部分を選択的に転換することによって、コマンドトラフィックがいずれも選択的に転換されないアプローチ、またはコマンドトラフィックがフラッシュベースのメモリシステムによって扱われるアプローチと比較して、より低い待ち時間及び/または増大した性能を実現することができる。
いくつかの実施形態では、コンピューティングシステム200のファイルシステム(例えば、図1に示された仮想ファイルシステム112、図1に示されたファイルシステム113)は、フラッシュフレンドリファイルシステム(F2FS)などのフラッシュファイルシステムまたはExt4などのジャーナリングファイルシステムであってもよいが、ファイルシステム(複数可)は、それらの特定の例に限定されない。ファイルシステムは、ファイルが更新されるときに更新される特定のメタデータ更新によって、それらの構造を維持してもよい。例えば、コンピューティングシステム200のファイルシステムは、テーブル、ツリー、データアレイなどのデータ構造を含んでもよく、それと関連付けられたファイルがファイルシステムの構造を維持するよう更新されるときに更新されてもよい。
ファイルシステムが更新されるとき(例えば、メタデータ更新がファイル更新に応答してファイルシステムに適用されるとき)、更新は、ややランダムな書き込みにおいて実行される。上記説明されたように、それらのタイプのややランダムな書き込みは、メモリシステム204及び/またはメインメモリ209を圧迫させることがある。それらのランダムな書き込みは、フォアグラウンドで実行される維持動作(例えば、書き込みコマンド実行の間)に起因して、特に、フラッシュベースのメモリシステムにおいて長い待ち時間を発生させることがある。それらの待ち時間は、フラッシュベースのメモリシステムが最大能力でもしくはほぼ最大能力で動作しているとき、及び/またはフラッシュベースのメモリシステムが延長した時間期間の間に動作していたときなどの特定の条件下で、フラッシュベースのメモリシステムにおいて更に悪化することがある。対照的に、ハイブリッドメモリシステム204は、経時的に、及び/またはハイブリッドメモリシステム204が最大能力でもしくはほぼ最大能力で動作しているとき、フラッシュベースのメモリシステムよりも低い待ち時間が発生することがある。
例えば、いくつかの実施形態では、ファイルシステム更新(例えば、ファイルシステムメタデータ更新)と関連付けられたコマンドトラフィックは、コンピューティングシステム200の適切な記憶場所に選択的に転換されてもよい。いくつかの実施形態では、コンピューティングシステム200の適切な記憶場所は、メモリリソース208-1などのハイブリッドメモリシステム204の一部分であってもよい。いくつかの実施形態では、コントローラ206は、ハイブリッドメモリシステム204の一部分にファイルシステム更新を選択的に転換させるように構成されてもよい。
ハイブリッドメモリシステム204にファイルシステム書き込みを選択的に転換することによって、ファイルシステム書き込みがいずれも選択的に転換されないアプローチ、またはファイルシステム書き込みがフラッシュベースのメモリシステムによって扱われるアプローチと比較して、より低い待ち時間及び/または増大した性能を実現することができる。
コンピューティングシステム200の演算の間、特定のファイルシステム(例えば、図1に示された仮想ファイルシステム112、図1に示されたファイルシステム113)は、反復的及び/または予測可能書き込みパターンを示すことができる。例えば、F2FSチェックポイント及び/またはジャーナリングシステムは、予測可能な方式において特定のコマンド及び/またはデータを反復的に書き込んでもよい。それらのコマンド及び/またはデータは、上記説明されたように、ややランダムな書き込みにおいて書き込まれてもよい。
上記説明されたように、それらのややランダムな書き込みは、フォアグラウンドで実行される維持動作(例えば、書き込みコマンド実行の間)に起因して、特に、フラッシュベースのメモリシステムにおいて長い待ち時間を発生させることがある。それらの待ち時間は、フラッシュベースのメモリシステムが最大能力でもしくはほぼ最大能力で動作しているとき、及び/またはフラッシュベースのメモリシステムが延長した時間期間の間に動作していたときなどの特定の条件下で、フラッシュベースのメモリシステムにおいて更に悪化することがある。対照的に、ハイブリッドメモリシステム204は、経時的に、及び/またはハイブリッドメモリシステム204が最大能力でもしくはほぼ最大能力で動作しているとき、フラッシュベースのメモリシステムよりも低い待ち時間が発生することがある。
フラッシュベースのメモリシステムと関連付けられた不備を軽減するために、いくつかの実施形態は、ハイブリッドメモリシステム204の部分にややランダムな書き込みを選択的に転換することを可能にする。例えば、コンピューティングシステム200(または、その部分)は、書き込み動作(例えば、ややランダムな書き込み)の元を判定するように構成されてもよい。いくつかの実施形態では、コンピューティングシステム200と関連付けられたファイルシステム及び/またはコンピューティングシステム200と関連付けられたドライバは、メタデータ書き込み及び/またはデータ構造にヒント(例えば、それらへのインジケータ)を関連付けるように構成されてもよい。ヒントは、書き込みコマンドに転送されてもよく、ヒントを含む書き込みコマンドは、ハイブリッドメモリシステム204に転送されてもよい。いくつかの実施形態では、書き込みコマンド及びそれと関連付けられたヒントがハイブリッドメモリシステム204に転送されることに続いて、コントローラ206は、アクセス時間を減少させ、及び/またはメインメモリ209へのその耐久性を回避するよう、ハイブリッドメモリシステム204にそのようなファイルシステム書き込み(または、メタデータ書き込み)を転換するように更に構成されてもよく、それによって、コンピューティングシステム200の性能を増大させる。
いくつかの実施形態では、コントローラ206は、ハイブリッドメモリシステム204の部分にファイルシステム書き込みを、そこに転換されたコマンドトラフィックを処理するのに最適なハイブリッドメモリシステム204の部分に選択的に転換するように構成されてもよい。例えば、特定のファイルシステムは、特定のタイプのメモリによって最も効率的に処理することができる、特定のコマンドトラフィックパターンを示し得る。非限定的な例として、F2FSでは、NANDメモリに良好に適合することができる、マッピングされていないLBAにデータが順次に書き込まれる判定可能アクセスパターンにおいて、ログ構造ファイルシステム(LFS)書き込みが実行されてもよい。対照的に、3D Xpointメモリなどの低待ち時間メモリに良好に適合することができる、マッピングされたLBAにデータがランダムに書き込まれる判定可能アクセスパターンにおいて、スラック領域リサイクル(SSR)書き込みが実行されてもよい。
したがって、いくつかの実施形態では、コントローラ206は、特定のタイプのファイルシステム書き込みを処理することに最適なハイブリッドメモリシステム204の一部分に、判定可能書き込みパターンと関連付けられたコマンドトラフィックを選択的に転換することができる。例えば、本明細書で説明されるように、コントローラ206は、NANDメモリであってもよい、メモリリソース208-NにLFS書き込みを転換するように構成されてもよく、及び/またはコントローラ206は、低待ち時間の新たなメモリリソースであってもよい、メモリリソース208-1にSSR書き込みを転換するように構成されてもよい。
いくつかのアプローチでは、コンピューティングシステム200と関連付けられたメモリデバイスに、アクセスセマンティック(access semantic)に対応する情報を伝送することが可能ではない。例えば、いくつかのアプローチでは、書き込みアクセス要求がユーザデータまたはファイルシステムメタデータと関連付けられているかどうかに対応する情報は、コンピューティングシステム200と関連付けられたメモリデバイスに伝送されていない。したがって、いくつかのアプローチでは、コンピューティングシステム200と関連付けられたメモリデバイスは、特定のLBAまたはLBA範囲が、ページング処理が実行される記憶位置に記憶される場合、特定のLBAまたはLBA範囲が読み出しまたは書き込みコマンドによって頻繁にアクセスされるかどうかについてのいかなる知識も提供されない場合がある。
対照的に、本明細書における実施形態は、コントローラ206が、書き込みアクセス要求が、例えば、ユーザデータもしくはファイルシステムメタデータと関連付けられているかどうかを判定し、及び/または特定のLBAもしくはLBA範囲が読み出しもしくは書き込みコマンドによって頻繁にアクセスされているかどうかを判定し、ハイブリッドメモリシステム204に、特定の特性を有する読み出しもしくは書き込みコマンドを選択的に転換することを可能にする。
いくつかの実施形態では、ハイブリッドメモリシステム204は、不揮発性メモリエクスプレス(NVMe)仕様に従って動作するように構成されてもよい。例えば、ハイブリッドメモリシステム204のメモリリソース208-1、…、208-Nのうちの1つ以上は、NVMe仕様に従って動作するように構成されてもよい。認識されるように、NVMe仕様は、表1において以下に示されるように、ハイブリッドメモリシステム204などの不揮発性メモリデバイスに特定の機能性を提供する。
Figure 0007038227000001
いくつかの実施形態では、表1に記述された機能性は、コンピューティングシステム200とのハイブリッドメモリシステム204の最適化された統合を促進することができる。例えば、NVMe仕様のLBA範囲タイプ機能性は、図1に示された仮想ファイルシステム112及び/またはファイルシステム113などの指定されたファイルシステムの一部である(例えば、名前空間)LBA範囲のタイプ及び/または属性を示すために使用されてもよい。いくつかの実施形態では、LBA範囲のタイプは、RAID、ページファイル、スワップファイルを含んでもよく、及び/またはベンダ特有のLBA範囲タイプであってもよい。更に、LBA範囲の属性は、LBA範囲を上書きすることができるかどうか、並びに/またはLBA範囲がコンピューティングシステム200のオペレーティングシステム及び/もしくはBIOSに可視的であるか否かを示すために利用されるセマンティックを含んでもよい。
表1に示されたデータセット管理機能は、特定の数のLBAの範囲に収まるコマンド及び/またはデータトラフィックパターンに関連する情報を伝送するために利用されてもよい。例えば、データセット管理機能は、特定の数のLBAの範囲に収まるデータ及び/またはコマンドトラフィックパターンのコマンドアクセスサイズ、書き込み準備、順次書き込み範囲、順次読み出し範囲、アクセス待ち時間、アクセス頻度などに関連する機能を含んでもよい。いくつかの実施形態では、データセット管理機能は、LBA範囲、読み出しコマンド、及び/または書き込みコマンドに基づいて動作してもよい。
指令は、ストリーム指令を含んでもよく、これにより、ホスト202が、書き込みまたは読み出しコマンドにおける指定された論理ブロックが、関連するデータの単一のグループの一部であるというインジケーションをコントローラ206に提供することを可能にすることができる。加えて、指令は、ホスト202とハイブリッドメモリシステム204との間のメタデータの交換を可能にすることができる。いくつかの実施形態では、指令は、ハイブリッドメモリシステム204へのデータの同時書き込みを促進することができ、それは次いで、同時に書き込まれるデータの論理ブロックの同時消去を促進することができる。これは、ハイブリッドメモリシステム204にデータを読み込みまたは書き込むために指令が利用されないアプローチと比較して、ガーベッジコレクション動作を最小にすることができ、及び/または減少した書き込み増幅につながることがある。
図3Aは、本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムに論理ブロックアドレス範囲をマッピングする実施例のフローチャートを示す。ブロック312において、コンピューティングシステム(例えば、図2に示されたコンピューティングシステム200)は、コンピューティングシステムの特定の動作条件の下で使用するために、ホスト(例えば、図2に示されたホスト200)の、図2に示されたメインメモリ209などのメインメモリの一部分(例えば、パーティション)を割り当てるように構成されてもよい。いくつかの実施形態では、コンピューティングシステムは、ページング処理及び/または例外(例えば、誤り)の処理のためにホストのメインメモリの一部分を割り当てるように構成されてもよい。いくつかの実施形態では、コントローラ(例えば、図2に示されたコントローラ206)、またはホストと関連付けられたコントローラは、コンピューティングシステムの演算の間に発生するページング処理及び/または例外の処理のためにメインメモリの一部分を割り当てるように構成されてもよい。
例えば、コンピューティングシステムは、コンピューティングシステムの演算の間に発生するページング処理及び/または例外の処理のためにメモリのページ、メモリのページの一部分、メモリの1つ以上のブロック、及び/またはメインメモリのいくつかのメモリ記憶位置を割り当てるように構成されてもよい。いくつかの実施形態では、コンピューティングシステムの演算の間に発生するページング処理及び/または例外の処理のために割り当てられるメインメモリの部分は、メインメモリの論理パーティションであってもよい。
ブロック314において、コンピューティングシステムは、ハイブリッドメモリシステムと関連付けられたLBA範囲に、コンピューティングシステムの演算の間に発生するページング処理及び/または例外の処理のために割り当てられたメインメモリの部分をマッピングするように構成されてもよい。例えば、割り当てられたメインメモリの部分と関連付けられた論理アドレスは、特定のLBA範囲にマッピングされてもよい。いくつかの実施形態では、LBA範囲は、ページング処理及び/または例外の処理と関連付けられたデータが記憶された位置を指定する(例えば、ハイブリッドメモリシステムの論理記憶位置)連続した一連の論理アドレスを含んでもよい。いくつかの実施形態では、コントローラ(例えば、図2に示されたコントローラ206)、またはホストと関連付けられたコントローラは、実行されるときにメインメモリにページングすることができる特定のLBA範囲に、ハイブリッド記憶システムの部分をマッピングするように構成されてもよい。
ブロック316において、コンピューティングシステムは、ハイブリッドメモリシステム(例えば、図2に示されたハイブリッドメモリシステム204)の一部分にメインメモリのLBA範囲をマッピングするように構成されてもよい。メインメモリと関連付けられたLBA範囲がマッピングされるハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのページ(または、ページの部分)、小区分、1つ以上のLBA、いくつかのブロックなどを含んでもよい。
いくつかの実施形態では、コントローラ(例えば、図2に示されたコントローラ206)、またはホストと関連付けられたコントローラは、ハイブリッドメモリシステムの一部分に、メインメモリと関連付けられたLBA範囲をマッピングするように構成されてもよい。例えば、コントローラは、ページング処理及び例外の処理のために使用されるメモリの物理位置(例えば、物理アドレス)に対応する、マッピングされたLBA範囲を記憶するようハイブリッドメモリシステムの一部分を割り当てるように構成されてもよい。
いくつかの実施形態では、ハイブリッドメモリシステムにマッピングされたLBA範囲は、ハイブリッドメモリシステムの新たな不揮発性メモリリソースであるメモリリソース(例えば、メモリリソース208-1、…、208-N)の1つにマッピングされてもよい。例えば、LBA範囲は、ハイブリッドメモリシステムの他のメモリリソースよりも低い読み出し(または、書き込み)待ち時間を示すように構成されたハイブリッドメモリシステムのメモリリソースにマッピングされてもよい。ハイブリッドメモリシステムの他のメモリリソースよりも低い書き込みまたは読み出し待ち時間を示すハイブリッドメモリシステムのメモリリソースにLBA範囲を選択的にマッピングすることによって、図2と関連して上記説明されたように、コンピューティングシステムの性能を改善することができる。
図3Bは、本開示のいくつかの実施形態に従った、ホストメモリ(例えば、ホストと関連付けられたメインメモリ)にハイブリッドメモリシステムの部分をマッピングする実施例のフローチャート317を示す。いくつかの実施形態では、コンピューティングデバイスのオペレーティングシステムは、コードファイル(例えば、アプリケーション実行可能ファイル、カーネル動的ライブラリなど)に対応する情報を判定することが可能であってもよい。コードファイルは、コンピューティングデバイスのハイブリッドメモリシステムの専用LBA範囲に記憶されてもよい。ハイブリッドメモリシステムに記憶されたコードファイルに関連する命令が参照され、ページ誤りが発生する場合、ハイブリッドメモリシステムのLBA範囲が読み出されてもよい。いくつかの実施形態では、コードファイルを記憶したハイブリッドメモリシステムのLBA範囲は、ハイブリッドメモリシステムの低待ち時間部分にマッピングされ得、それによって、コードページング動作を促進し得る。
ブロック318において、コンピューティングシステムは、コード読み出しコンテンツをページング処理の一部として判定するように構成されてもよい。例えば、コンピューティングシステムは、メインメモリのコード読み出しコンテンツを、コンピューティングシステムによって実行されるページング処理の一部として判定するように構成されてもよい。実施形態は、メインメモリのコード読み出しコンテンツをページング処理の一部として判定することに限定されないが、いくつかの実施形態では、コンピューティングシステムは、本明細書において図2と関連してより詳細に説明されるように、リードアヘッド動作が実行された(または、実行されようとしている)と判定するように構成されてもよい。本明細書で使用されるように、「コード読み出しコンテンツ」は、コンピューティングシステムの読み出し動作の一部として利用されるファイルまたはコマンドと関連付けられたデータである。
例えば、本明細書において図2と関連してより詳細に説明されるように、コントローラ(例えば、図2に示されたコントローラ206)、もしくはホストと関連付けられたコントローラは、ページング処理の一部として読み出された(もしくは、読み出されようとしている)ファイルもしくはコマンドと関連付けられたデータを認識するように構成されてもよく、またはコントローラ(例えば、図2に示されたコントローラ206)、もしくはホストと関連付けられたコントローラは、コンピューティングシステムによって実行されるリードアヘッド動作を認識するように構成されてもよい。
ブロック320において、コンピューティングシステムは、ハイブリッドメモリシステムに、判定されたコード読み出しコンテンツを包含するホストメモリ(例えば、図2に示されたメインメモリ209)の部分をマッピングするように構成されてもよい。いくつかの実施形態では、判定されたコード読み出しコンテンツを包含するホストメモリの部分は、判定されたコード読み出しコンテンツに対応するデータを記憶するよう割り当てられた(例えば、コントローラによって)ハイブリッドメモリシステムの割り当てられた部分にマッピングされてもよい。例えば、ハイブリッドメモリシステムの一部分は、判定されたコード読み出しコンテンツに対応するLBA範囲を記憶するよう割り当てられてもよい。
いくつかの実施形態では、コード読み出しコンテンツに対応するLBA範囲を記憶するよう割り当てられたハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムの新たな不揮発性メモリリソースであるメモリリソース(例えば、メモリリソース208-1、…、208-N)の1つにマッピングされてもよい。例えば、LBA範囲は、ハイブリッドメモリシステムの他のメモリリソースよりも低い読み出し(または、書き込み)待ち時間を示すように構成されたハイブリッドメモリシステムのメモリリソースにマッピングされてもよい。ハイブリッドメモリシステムの他のメモリリソースよりも低い書き込みまたは読み出し待ち時間を示すハイブリッドメモリシステムのメモリリソースにLBA範囲を選択的にマッピングすることによって、図2と関連して上記説明されたように、コンピューティングシステムの性能を改善することができる。
図3Cは、コードページング動作の実行に応答して、ハイブリッドメモリシステムにデータを選択的に転送する実施例のフローチャート313を示す。ブロック315において、ハイブリッドメモリシステムの一部分は、コードページング動作における使用のために割り当てられてもよい。コードページング動作における使用のために割り当てられたハイブリッドメモリシステムの部分は、コンピューティングシステムの初期化において割り当てられてもよく(例えば、起動、リブートなどにおいて)、またはコンピューティングシステムの演算の間に動的に割り当てられてもよく(例えば、コンピューティングシステムのランタイムの間)、またはハイブリッドメモリシステムの製造の間に割り当てられてもよい(例えば、エンドユーザがコンピューティングシステムもしくはハイブリッドメモリシステムを購入する前)。
ハイブリッドメモリシステムの割り当てられた部分は、メモリの1つ以上のページ、1つ以上のLBA、及び/またはメモリの1つ以上のブロックであってもよい。例えば、コントローラは、コードページング動作における使用のためにハイブリッドメモリシステムの特定のLBA範囲を割り当てるように構成されてもよい。いくつかの実施形態では、コードページング動作における使用のために割り当てられたハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最低アクセス時間を示すメモリリソース(例えば、図1に示されたメモリリソース208-1、208-Nなど)の一部分であってもよい。例えば、コードページング動作における使用のために割り当てられたハイブリッドメモリシステムの部分は、図2と関連して上記説明されたように、新たなメモリシステムであるハイブリッドメモリシステムのメモリリソース(例えば、図2に示されたメモリリソース208-1)の部分(例えば、ハイブリッドメモリシステムの異なる部分よりも低いアクセス時間及び/または高い耐久性によって特徴付けられるハイブリッドメモリシステムの部分)であってもよい。
ブロック319において、コードページング動作は、ホストが誤り例外に遭遇したと判定したことに応答して実行されてもよい。例えば、コントローラは、誤り例外が発生したと判定するように構成されてもよい。誤り例外は、図2と関連して上記説明されたように、ホストまたはコンピューティングシステムによって経験されることがある。
ブロック321において、データは、コードページング動作の実行に応答して、ハイブリッドメモリシステムの割り当てられた部分からホストに選択的に転送されてもよい。例えば、いくつかの実施形態では、コントローラは、特定のデータセットに対する読み出しまたは書き込みアクセス要求に対応する例外が発生しようとしている(または、発生した)と判定し、コンピューティングシステムによる後続の実行及び/または取り出しのために、メモリリソース(例えば、ホストのメインメモリ)に特定のデータセットを書き込ませるように構成されてもよい。いくつかの実施形態では、特定のデータセットは、メモリリソース内のパーティションまたはLBAブロックに記憶されてもよい。パーティション及び/またはLBAブロックは、特定のデータ以外のデータ(例えば、読み出しまたは書き込みアクセス要求に対応しないデータ)がパーティション及び/またはLBAブロックに記憶されないように割り当てられてもよい(例えば、予約される)。いくつかの実施形態では、データは、ハイブリッドメモリシステムと関連付けられた特定の論理ブロックアドレス範囲に選択的に転送されてもよい。
いくつかの実施形態では、コントローラは、ホストによって読み出されたコードのコンテンツをコードページング動作の一部として判定するように構成されてもよい。ホストによって読み出されたコードのコンテンツが判定されると、コントローラは、ハイブリッドメモリシステムの割り当てられた部分に、ホストのメモリ(例えば、ホストのメインメモリ)の部分を選択的にマッピングするように構成されてもよい。いくつかの実施形態では、コントローラは、ホストが転送されたデータを参照しているとコントローラが判定したことに応答して、ハイブリッドメモリシステムの割り当てられた部分からホストに再度データを転送させるように更に構成されてもよい。
図4は、本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムにデータを選択的に転送する実施例のフローチャート423を示す。ブロック422において、ハイブリッドメモリシステムの一部分が割り当てられてもよい。例えば、ハイブリッドメモリシステム(例えば、図2に示されたハイブリッドメモリシステム204)の一部分は、上記説明されたように、スワップ空間及び/またはスワップデバイスとしての使用のために割り当てられてもよい。
例えば、ハイブリッドメモリシステムと関連付けられたコントローラ(例えば、図2に示されたコントローラ206)は、スワップ空間及び/またはスワップデバイスとしての使用のためにハイブリッドメモリシステムの部分を割り当てるように構成されてもよい。スワップ空間及び/またはスワップデバイスとしての使用のために割り当てられたハイブリッドメモリシステムの部分は、コンピューティングシステムの初期化において割り当てられてもよく(例えば、起動、リブートなどにおいて)、またはコンピューティングシステムの演算の間に動的に割り当てられてもよく(例えば、コンピューティングシステムのランタイムの間)、またはハイブリッドメモリシステムの製造の間に割り当てられてもよい(例えば、エンドユーザがコンピューティングシステムもしくはハイブリッドメモリシステムを購入する前)。
ハイブリッドメモリシステムの割り当てられた部分は、メモリの1つ以上のページ、1つ以上のLBA、及び/またはメモリの1つ以上のブロックであってもよい。例えば、コントローラは、スワップ空間及び/またはスワップデバイスとしての使用のために、ハイブリッドメモリシステムの特定のLBA範囲を割り当てるように構成されてもよい。いくつかの実施形態では、スワップ空間及び/またはスワップデバイスとしての使用のために割り当てられたハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最低アクセス時間を示すメモリリソース(例えば、図2に示されたメモリリソース208-1、208-Nなど)の一部分であってもよい。例えば、スワップ空間及び/またはスワップデバイスとしての使用のために割り当てられたハイブリッドメモリシステムの部分は、図2と関連して上記説明されたように、新たなメモリシステムであるハイブリッドメモリシステム(例えば、図2に示されたメモリリソース208-1)の一部分であってもよい。
複数の仮想アドレスが同一の物理メモリアドレスにマッピングされるとき、コンピューティングシステムは、低下した性能に遭遇することがあり、及び/またはハングアップすることがある(例えば、プロセスが終了することがあり、及び/もしくは予想外に振る舞うことがある)。ハイブリッドメモリシステムの一部分をスワップ空間及び/またはスワップデバイスとして割り当てることによって、データのページは、ブロック424と関連して以下で更に詳細に説明されるように、同一の物理メモリアドレスにマッピングされた複数の仮想アドレスへの同時呼び出しと関連付けられた性能低下を軽減するよう、ホストとハイブリッドメモリシステムとの間で転送されてもよい。
ブロック424において、コンピューティングシステム及び/またはコントローラは、ハイブリッドメモリシステムの割り当てられた部分にデータを選択的に転送させるように構成されてもよい。例えば、アノニマスページなどのデータのページは、ホスト(例えば、ホストのメインメモリ)からハイブリッドメモリシステムの割り当てられた部分に転送されてもよい。実施形態は、データのページを転送することに限定されず、いくつかの実施形態では、データのブロック及び/またはハイブリッドメモリシステムの特定のLBA範囲に対応するデータは、ハイブリッドメモリシステムからホストに選択的に転送されてもよい。上記説明されたように、データは、スワップ動作の一部として転送されてもよく、したがって、データがホストによってその後参照される場合、ハイブリッドメモリシステムから再度ホストに転送されてもよい。
データ(例えば、データのページ、データのブロック、LBA範囲など)を選択的に転送することによって、コンピューティングシステムの改善された性能を実現することができる。例えば、新たなタイプのメモリリソースであるメモリリソースに対応するハイブリッドメモリシステムの一部分を割り当て、その後、ホストとハイブリッドメモリシステムとの間でデータをスワップ動作の一部として選択的に転送することによって、ハイブリッドメモリシステムを利用しないアプローチと比較して、及び/またはメモリリソースのうちの1つ以上が新たなタイプのメモリリソースでないアプローチと比較して、メモリ耐久性を増大させることができ、及び/またはスワップ動作を実行することと関連付けられた時間を減少させることができる。
図5Aは、本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムにコマンドを選択的に転換する実施例のフローチャート525を示す。ブロック526において、感度がコマンドに割り当てられてもよい。いくつかの実施形態では、感度は、コントローラ(例えば、図2に示されたコントローラ206)によってコマンドに割り当てられてもよい。図2と関連して上記説明されたように、コントローラは、特定のコマンドの実行の頻度、コマンドのサイズ、コマンドの実行が消費するリソースの量、コマンドを実行することができる速度、または他の適切な感度特性などのコマンドトラフィックの特性に基づいて、コマンドの感度を判定するように構成されてもよい。
いくつかの実施形態では、コントローラは、コマンドに、コマンドの判定された感度を示すインジケータを適用するように構成されてもよい。例えば、コントローラは、コマンドの判定された感度に基づいて、コマンドにインジケーションを付加してもよい。インジケータは、コマンドに付加された特定の値を有するフラグまたは桁であってもよいが、実施形態はそのように限定されず、インジケータは、コマンドに付加された一連の桁、またはコマンドがハイブリッドメモリシステムに転換されることになるか否かをコントローラが判定することを可能にする他の適切なインジケータであってもよい。
ブロック528において、コマンドは、ハイブリッドメモリシステムに選択的に転換されてもよい。いくつかの実施形態では、コマンドは、コマンドの割り当てられた感度に基づいて、ハイブリッドメモリシステムに選択的に転換されてもよい。例えば、コントローラは、コマンドの割り当てられた感度を判定し、コマンドの割り当てられた感度に基づいて、ハイブリッドメモリシステムにコマンドを選択的に転換するように構成されてもよい。コントローラがコマンドにインジケータを付加すると、コマンドは、コンピューティングシステムの適切な記憶場所に選択的に転換されてもよい。例えば、反復的に、ランダムに、及び/または頻繁に実行されるコマンドトラフィック(コンピューティングシステムの演算の間にジャーナリングシステムによって受けられる同時のやや頻繁且つランダムな書き込みなど)は、ハイブリッドメモリデバイスに選択的に転換されてもよい。
例として、コントローラは、コマンドがそれに付加された割り当てられた感度に対応する特定のインジケータを有すると判定するように構成されてもよい。例えば、コントローラは、コマンドに付加されたインジケータが高感度を有するコマンド(例えば、反復的に、ランダムに、及び/または頻繁に実行されるコマンド)に対応すると判定してもよく、その後、ハイブリッドメモリシステムにそのコマンドを選択的に転換させてもよい。これに対して、コントローラは、コマンドに付加されたインジケータが低感度を有するコマンド(例えば、反復的でなく、ランダムでなく、及び/または頻繁でなく実行されるコマンド)に対応すると判定してもよく、それに付加された低感度を示すインジケータを有するコマンドに対して何らアクションを取らなくてもよい(例えば、ハイブリッドメモリシステムにコマンドを選択的に転換させなくてもよい)。
図2と関連して上記でより詳細に説明されたように、ハイブリッドメモリシステムにコマンドトラフィックの特定の部分を選択的に転換することによって、コマンドトラフィックがいずれも選択的に転換されないアプローチ、またはコマンドトラフィックがフラッシュベースのメモリシステムによって扱われるアプローチと比較して、より低い待ち時間及び/またはより高い性能を実現することができる。
図5Bは、本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムにコマンドトラフィックを選択的に転換する実施例のフローチャート529を示す。ブロック530において、ファイルシステムメタデータが識別されてもよい。いくつかの実施形態では、ファイルシステムメタデータは、コントローラ(例えば、図2に示されたコントローラ206)によって識別されてもよい。例えば、図2と関連して上記説明されたように、コントローラは、ファイルシステムに適用されるメタデータ更新に対応するコマンドトラフィックなどの、複数のややランダムな書き込みによって特徴付けられるコマンドトラフィックを識別するように構成されてもよい。
いくつかの実施形態では、コントローラは、メタデータに対応するデータ構造を識別することによって、メタデータ更新に対応するコマンドトラフィックを識別するように構成されてもよい。例えば、メタデータは、メタデータが組織化されるデータ構造のタイプに基づいて識別されてもよい。メタデータが組織化されるデータ構造のタイプに対応するデータ構造を識別することによって、コントローラは、メタデータに対応するコマンドトラフィックを識別してもよい。コントローラがメタデータに対応するコマンドトラフィックを識別すると、コントローラは、メタデータ更新がファイルシステムに適用されるときを識別するように更に構成されてもよい。いくつかの実施形態では、コントローラは、ファイルシステムと関連付けられたメタデータが更新され、ファイルシステムに適用されるとの判定に基づいてファイルシステムが更新された(または、更新される)と識別するように構成されてもよい。
コントローラは、ファイル更新に応答して、ファイルシステムに適用されるメタデータ更新などのファイルシステム更新トラフィックに対応するコマンドトラフィックに対応するインジケータを識別するように構成されてもよい。インジケータは、コマンドトラフィックに付加された特定の値を有するフラグまたは桁であってもよいが、実施形態はそのように限定されず、インジケータは、コマンドトラフィックに付加された一連の桁、またはコマンドトラフィックがハイブリッドメモリシステムに転換されることになるか否かをコントローラが判定することを可能にする他の適切なインジケータであってもよい。
ブロック532において、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックは、ハイブリッドメモリシステムの一部分に選択的に転換されてもよい。いくつかの実施形態では、コントローラは、ハイブリッドメモリシステムの一部分に、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックを選択的に転換させるように構成されてもよい。コントローラは、ファイル更新に応答して、ファイルシステムに付加されたメタデータ更新などのファイルシステム更新トラフィックに対応するコマンドトラフィックに付加されたインジケータに基づいて、ハイブリッドメモリシステムの一部分に、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックを選択的に転換させるように構成されてもよい。
本明細書における図4の説明と同様に、ハイブリッドメモリシステムの一部分は、コンピューティングシステムの製造において、またはコンピューティングシステムの演算の間に、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックを選択的に転換する際の使用のために割り当てられてもよい。いくつかの実施形態では、ハイブリッドメモリシステムの一部分は、メモリの1つ以上のページ、1つ以上のLBA、及び/またはメモリの1つ以上のブロックであってもよい。例えば、コントローラは、識別されたファイルシステムメタデータと関連付けられたコマンドトラフィックが転換されることになるハイブリッドメモリシステムの特定のLBA範囲を割り当てるように構成されてもよい。いくつかの実施形態では、ハイブリッドメモリシステムの一部分は、ハイブリッドメモリシステムのメモリリソースの中で最も低いアクセス時間を示すメモリリソース(例えば、図1に示されたメモリリソース208-1、208-Nなど)の部分であってもよい。したがって、いくつかの実施形態では、ファイルシステムメタデータ更新に対応するコマンドトラフィックがハイブリッドメモリシステムに選択的に転換されないいくつかのアプローチと比較して、コンピューティングシステムの待ち時間を減少させることができる。
図5Cは、本開示のいくつかの実施形態に従った、ハイブリッドメモリシステムに、識別された書き込みパターンを有するコマンドトラフィックを選択的に転換する実施例のフローチャート533を示す。ブロック534において、反復的及び/または予測可能書き込みパターンが識別されてもよい。特定のコマンドトラフィックに対応する予測可能及び/または反復的書き込みパターンは、コントローラ(例えば、図2に示されたコントローラ206)によって識別されてもよい。
例えば、コンピューティングシステムの演算の間、特定のファイルシステム(例えば、図1に示された仮想ファイルシステム112、図1に示されたファイルシステム113)は、反復的及び/または予測可能書き込みパターンを示すことができる。例えば、F2FSチェックポイント及び/またはジャーナリングシステムは、予測可能方式において、特定のコマンド及び/またはデータを反復的に書き込んでもよい。それらのコマンド及び/またはデータは、上記説明されたように、ややランダムな書き込みにおいて書き込まれてもよい。
いくつかの実施形態では、コントローラは、コンピューティングデバイスのカーネルとメモリ(例えば、メインメモリ及び/またはハイブリッドメモリシステム)との間のより密な結合をもたらすことによって、それらの反復的及び/または予測可能書き込みパターンを識別するように構成されてもよい。例えば、いくつかの実施形態では、コントローラは、コンピューティングシステムの1つ以上のセマンティック部分にアクセスしてもよく、これにより、コントローラは、コンピューティングシステムの演算の間に発生する反復的及び/または予測可能書き込みパターンを識別することを可能にすることができる。
反復的及び/または予測可能書き込みパターンに対応するコマンドトラフィックがコントローラによって識別されると、コントローラは、予測可能及び/または反復的書き込みパターンを示すコマンドトラフィックへのインジケータを識別するように構成されてもよい。インジケータは、コマンドトラフィックに付加された特定の値を有するフラグまたは桁であってもよいが、実施形態はそのように限定されず、インジケータは、コマンドトラフィックに付加された一連の桁、またはコマンドトラフィックがハイブリッドメモリシステムに転換されることになるか否かをコントローラが判定することを可能にする他の適切なインジケータであってもよい。
ブロック536において、反復的及び/または予測可能書き込みパターンと関連付けられたコマンドトラフィックは、ハイブリッドメモリシステムまたはその部分に選択的に転換されてもよい。前に説明されたように、ハイブリッドメモリシステムの一部分は、コンピューティングシステムの製造において、またはコンピューティングシステムの演算の間に、反復的及び/または予測可能書き込みパターンと関連付けられたコマンドトラフィックを選択的に転換する際の使用のために割り当てられてもよい。いくつかの実施形態では、ハイブリッドメモリシステムの一部分は、メモリの1つ以上のページ、1つ以上のLBA、及び/またはメモリの1つ以上のブロックであってもよい。例えば、コントローラは、反復的及び/または予測可能書き込みパターンと関連付けられたコマンドトラフィックが転換されることになるハイブリッドメモリシステムの特定のLBA範囲を割り当てるように構成されてもよい。いくつかの実施形態では、ハイブリッドメモリシステムの一部分は、ハイブリッドメモリシステムのメモリリソースの中で最低アクセス時間を示すメモリリソース(例えば、図1に示されたメモリリソース208-1、208-Nなど)の部分であってもよい。したがって、いくつかの実施形態では、反復的及び/または予測可能書き込みパターンを示すコマンドトラフィックが、ハイブリッドメモリシステムに選択的に転換されないいくつかのアプローチと比較して、コンピューティングシステムの待ち時間を減少させることができる。
図5Dは、識別されたコマンド特性によってハイブリッドメモリシステムに選択的に転換する実施例のフローチャート540を示す。ブロック542において、特定のタイプのコマンドトラフィックが識別されてもよい。例えば、ファイルシステムメタデータ更新に対応するコマンドトラフィック並びに/または反復的及び/もしくは予測可能書き込みパターンを示すコマンドトラフィックは、図5B及び5Cと関連して上記説明されたように識別されてもよい。いくつかの実施形態では、コントローラは、特定のタイプのコマンドトラフィックを識別するように構成されてもよい。
ブロック544において、コマンドトラフィックは、ハイブリッドメモリシステムに選択的に転換されるように引き起こされてもよい。いくつかの実施形態では、コマンドトラフィックは、ハイブリッドメモリシステムに結合可能なホストによって実行されるコマンドトラフィックに対応してもよい。コントローラは、本明細書で説明されるように、ハイブリッドメモリシステムの一部分にコマンドトラフィックを選択的に転換するように構成されてもよい。例えば、ハイブリッドメモリシステムの部分は、ハイブリッドメモリシステムのメモリリソースの中で最低アクセス時間を示すメモリリソース(例えば、図1に示されたメモリリソース208-1、208-Nなど)の一部分であってもよい。したがって、いくつかの実施形態では、特定のタイプのコマンドトラフィックがハイブリッドメモリシステムに選択的に転換されないいくつかのアプローチと比較して、コンピューティングシステムの待ち時間を減少させることができる。
特定の実施形態が示され、本明細書で説明されてきたが、当業者は、同一の結果を達成するように予測される配列が、示された特定の実施形態と置き換えられてもよいことを認識するであろう。この開示は、本開示の1つ以上の実施形態の適合または変形を網羅することを意図している。上記説明は、限定的でなく例示的な方式において行われたことが理解されよう。上記実施形態の組み合わせ、及び本明細書で特に説明されていない他の実施形態は、上記説明をレビューした当業者にとって明らかであろう。本開示の1つ以上の実施形態の範囲は、上記構造及び方法が使用される他の用途を含む。したがって、本開示の1つ以上の実施形態の範囲は、添付の特許請求の範囲の権利が与えられる均等物の全範囲とともに、添付の特許請求の範囲を参照して判定されるべきである。
前述の詳細な説明では、開示を合理化する目的でいくつかの特徴が単一の実施形態において共にグループ化される。この開示の方法は、本開示の開示された実施形態が各々の請求項に明確に記載されたより多くの特徴を使用する必要があるという意図を反映するとして解釈されるものではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示された実施形態の全ての特徴に満たないものに存在する。したがって、以下の特許請求の範囲は、本明細書によって発明を実施するための形態に組み込まれ、各請求項は、別個の実施形態として独立している。

Claims (13)

  1. 装置であって、
    ハイブリッドメモリシステムと、
    前記ハイブリッドメモリシステムに結合されたコントローラと、を備え、前記コントローラは、
    データに伴う例外が発生したとの判定に応答して、前記ハイブリッドメモリシステムに前記データを選択的に記憶させるように構成されており、
    前記例外が発生したとの前記判定は、リードアヘッド機構が前記装置によって呼び出されたとの判定の少なくとも一部に基づき、
    前記例外は、ページ誤りを含む、
    装置。
  2. 前記コントローラは、前記ハイブリッドメモリシステムの論理ブロックアドレス(LBA)範囲に前記データを選択的にマッピングさせるように更に構成されている、
    請求項1に記載の装置。
  3. 前記コントローラは、
    前記リードアヘッド機構が前記装置によって呼び出されたと前記判定させ、
    前記リードアヘッド機構が呼び出されたとの前記判定に応答して、前記ハイブリッドメモリシステムの連続した部分に、前記リードアヘッド機構と関連付けられたデータに対応する論理ブロックアドレス(LBA)範囲をマッピングさせ、
    前記データが前記ハイブリッドメモリシステムに記憶されるときに、前記データを使用して演算を実行することと関連付けられた時間が減少するとの判定に応答して、前記ハイブリッドメモリシステムに前記データを選択的に記憶させるように更に構成されている、請求項1~のいずれか1項に記載の装置。
  4. 前記コントローラは、前記ハイブリッドメモリシステムに前記データを選択的に記憶することによって、前記データの実行速度を最適化するように更に構成されている、請求項1~のいずれか1項に記載の装置。
  5. 前記装置は、前記ハイブリッドメモリシステムに結合するメインメモリを更に備え、
    前記メインメモリは、前記ハイブリッドメモリシステムに結合されたホストコンピューティングデバイスのメインメモリリソースであり、
    前記ハイブリッドメモリシステムは、第1のメモリリソース及び第2のメモリリソースを含む、請求項1~のいずれか1項に記載の装置。
  6. 前記データは、メモリのページ、メモリのブロック、メモリの論理ブロックアドレス、またはそれらの組み合わせに対応する、請求項1~のいずれか1項に記載の装置。
  7. 装置であって、
    ホストに結合するハイブリッドメモリシステムと、
    前記ハイブリッドメモリシステムに結合されたコントローラと、を備え、前記コントローラは、
    コードページング動作における使用のために前記ハイブリッドメモリシステムの一部分を割り当てさせ、
    論理ブロックアドレス指定(LBA)範囲に、前記ホストと関連付けられたメモリの一部分をマッピングさせ、
    前記ハイブリッドメモリシステムの前記割り当てられた部分に前記LBA範囲をマッピングさせ、
    データに伴う例外が発生したとの判定に応答して、前記ハイブリッドメモリシステムに前記データを選択的に記憶させる、
    ように構成されており、
    前記例外が発生したとの前記判定は、リードアヘッド機構が前記装置によって呼び出されたとの判定の少なくとも一部に基づき、
    前記例外は、ページ誤りを含む、
    装置。
  8. 前記コントローラは、
    コード読み出しのコンテンツを前記コードページング動作の一部として判定することと、
    前記コードページング動作における使用のため割り当てられた前記ハイブリッドメモリシステムの前記部分に、前記判定された前記コード読み出しのコンテンツを包含する前記ホストと関連付けられた前記メモリの一部分を前記コードページング処理の一部としてマッピングすることであって、
    前記ハイブリッドメモリシステムの前記部分は、特定のLBA範囲を含み
    前記コードページング動作は、例外が発生したとの判定に応答して実行される、
    前記マッピングすること、
    を行わせるように更に構成されている、請求項に記載の装置。
  9. 前記ハイブリッドメモリシステムの前記部分は、前記ハイブリッドメモリシステムのページ、前記ハイブリッドメモリシステムのブロック、前記ハイブリッドメモリシステムの論理ブロックアドレス、またはそれらの組み合わせに対応する、請求項7~8のいずれか1項に記載の装置。
  10. 前記ハイブリッドメモリシステムは、第1のメモリリソース及び第2のメモリリソースを含み、
    前記第1のメモリリソース及び前記第2のメモリリソースのうちの少なくとも1つは、不揮発性メモリリソースであり、
    前記ハイブリッドメモリシステムの前記割り当てられた部分は、前記ハイブリッドメモリシステムの別の部分よりも低いアクセス待ち時間によって特徴付けられる前記ハイブリッドメモリシステムの部分に対応する、請求項7~9のいずれか1項に記載の装置。
  11. コードページング動作における使用のためにハイブリッドメモリシステムの一部分を割り当てることと、
    ホストが誤り例外に遭遇したと判定することに応答して、前記コードページング動作を実行することであって、前記ホストが誤り例外に遭遇したと判定することは、リードアヘッド動作が前記ホストによって実行されたと判定することを含む、前記コードページング動作を実行することと、
    前記コードページング動作の実行に応答して、前記ホストから前記ハイブリッドメモリシステムの前記割り当てられた部分にデータを選択的に転送することと、
    を備えた、方法。
  12. 前記ホストから前記ハイブリッドメモリシステムの前記割り当てられた部分にデータを選択的に転送することは、前記ハイブリッドメモリシステムと関連付けられた特定の論理ブロックアドレス範囲に前記データを選択的に転送することを更に含む、請求項11に記載の方法。
  13. 前記ホストによるコード読み出しのコンテンツを前記コードページング動作の一部として判定することと、
    前記ハイブリッドメモリシステムの前記割り当てられた部分に前記ホストのメモリの一部分を選択的にマッピングすることであって、前記ハイブリッドメモリシステムは、第1のメモリリソース及び第2のメモリリソースを含む、前記選択的にマッピングすることと、
    前記ホストが前記データを参照していると判定したことに応答して、前記ハイブリッドメモリシステムの前記割り当てられた部分から前記ホストに再度前記データを転送することと、
    を更に備えた、請求項11~12のいずれか1項に記載の方法。
JP2020550729A 2018-03-21 2019-03-18 ハイブリッドメモリシステム Active JP7038227B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/927,530 2018-03-21
US15/927,530 US10705963B2 (en) 2018-03-21 2018-03-21 Latency-based storage in a hybrid memory system
PCT/US2019/022665 WO2019182931A1 (en) 2018-03-21 2019-03-18 Hybrid memory system

Publications (2)

Publication Number Publication Date
JP2021516402A JP2021516402A (ja) 2021-07-01
JP7038227B2 true JP7038227B2 (ja) 2022-03-17

Family

ID=67983587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020550729A Active JP7038227B2 (ja) 2018-03-21 2019-03-18 ハイブリッドメモリシステム

Country Status (6)

Country Link
US (2) US10705963B2 (ja)
EP (1) EP3769202B1 (ja)
JP (1) JP7038227B2 (ja)
KR (1) KR102443593B1 (ja)
CN (1) CN111868679B (ja)
WO (1) WO2019182931A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10809942B2 (en) * 2018-03-21 2020-10-20 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008310793A (ja) 2007-05-14 2008-12-25 Buffalo Inc 記憶装置
US20120137055A1 (en) 2010-11-29 2012-05-31 Dong Yang Lee Hybrid memory system and method managing the same
US20140013025A1 (en) 2012-07-06 2014-01-09 Seagate Technology Llc Hybrid memory with associative cache
JP2017138853A (ja) 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161527A (ja) * 1997-11-28 1999-06-18 Toshiba Corp データ記憶システム
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
KR100881187B1 (ko) 2007-01-16 2009-02-05 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
US20100169602A1 (en) * 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US8307151B1 (en) * 2009-11-30 2012-11-06 Micron Technology, Inc. Multi-partitioning feature on e-MMC
US20110167197A1 (en) * 2010-01-05 2011-07-07 Mark Leinwander Nonvolatile Storage with Disparate Memory Types
US8725963B1 (en) 2011-04-15 2014-05-13 Parallels IP Holdings GmbH System and method for managing a virtual swap file for virtual environments
DE102011103332A1 (de) * 2011-05-27 2012-11-29 Newfrey Llc Verfahren und Vorrichtung zum Zuführen von Fügeelementen
KR20130032772A (ko) * 2011-09-23 2013-04-02 삼성전자주식회사 하이브리드 메모리 장치, 이를 포함하는 컴퓨터 시스템, 및 하이브리드 메모리장치의 데이터 기입 및 독출 방법
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
JP5971547B2 (ja) * 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
KR101924022B1 (ko) * 2012-04-03 2019-02-22 삼성전자주식회사 메모리 시스템 및 그것의 페이지 교체 방법
KR101456373B1 (ko) 2012-04-04 2014-11-03 홍익대학교 산학협력단 캐시 장치를 관리하는 장치 및 방법
US9946495B2 (en) * 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9129674B2 (en) * 2013-06-27 2015-09-08 Intel Corporation Hybrid memory device
EP3049938B1 (en) * 2013-09-27 2019-03-13 Hewlett-Packard Enterprise Development LP Data management on memory modules
KR20150043102A (ko) * 2013-10-14 2015-04-22 한국전자통신연구원 하이브리드 메모리의 데이터 관리 장치 및 방법
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
KR20150089538A (ko) * 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
US9772776B2 (en) 2014-02-27 2017-09-26 Red Hat Israel, Ltd. Per-memory group swap device
US10430328B2 (en) 2014-09-16 2019-10-01 Sandisk Technologies Llc Non-volatile cache and non-volatile storage medium using single bit and multi bit flash memory cells or different programming parameters
US9711194B2 (en) * 2015-01-28 2017-07-18 Xilinx, Inc. Circuits for and methods of controlling the operation of a hybrid memory system
US9459802B1 (en) * 2015-03-30 2016-10-04 Kabushiki Kaisha Toshiba Hybrid-HDD that limits dirty data in NAND
US9760479B2 (en) * 2015-12-02 2017-09-12 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US9772943B1 (en) * 2016-04-01 2017-09-26 Cavium, Inc. Managing synonyms in virtual-address caches
US10108555B2 (en) * 2016-05-26 2018-10-23 Macronix International Co., Ltd. Memory system and memory management method thereof
US10698732B2 (en) * 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US11977484B2 (en) * 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US10540098B2 (en) * 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10152427B2 (en) * 2016-08-12 2018-12-11 Google Llc Hybrid memory management
US10649665B2 (en) * 2016-11-08 2020-05-12 Micron Technology, Inc. Data relocation in hybrid memory
KR20180094372A (ko) * 2017-02-15 2018-08-23 에스케이하이닉스 주식회사 하이브리드 메모리 시스템 및 그 제어 방법
US10901894B2 (en) * 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US10430329B2 (en) * 2017-06-23 2019-10-01 Western Digital Technologies, Inc. Quality of service aware storage class memory/NAND flash hybrid solid state drive
US10152428B1 (en) * 2017-07-13 2018-12-11 EMC IP Holding Company LLC Virtual memory service levels
US10705963B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10809942B2 (en) * 2018-03-21 2020-10-20 Micron Technology, Inc. Latency-based storage in a hybrid memory system
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008310793A (ja) 2007-05-14 2008-12-25 Buffalo Inc 記憶装置
US20120137055A1 (en) 2010-11-29 2012-05-31 Dong Yang Lee Hybrid memory system and method managing the same
US20140013025A1 (en) 2012-07-06 2014-01-09 Seagate Technology Llc Hybrid memory with associative cache
JP2017138853A (ja) 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム

Also Published As

Publication number Publication date
EP3769202A1 (en) 2021-01-27
JP2021516402A (ja) 2021-07-01
EP3769202B1 (en) 2023-09-13
EP3769202A4 (en) 2021-12-15
US10705963B2 (en) 2020-07-07
US11327892B2 (en) 2022-05-10
US20190294547A1 (en) 2019-09-26
KR102443593B1 (ko) 2022-09-16
CN111868679A (zh) 2020-10-30
KR20200117032A (ko) 2020-10-13
CN111868679B (zh) 2024-05-14
US20200301841A1 (en) 2020-09-24
WO2019182931A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
JP7049476B2 (ja) ハイブリッドメモリシステム
JP7057435B2 (ja) ハイブリッドメモリシステム
US11327892B2 (en) Latency-based storage in a hybrid memory system
JP5801933B2 (ja) ブート・データをキャッシュするソリッドステートドライブ
JP2021149374A (ja) データ処理装置
US11782854B2 (en) Cache architecture for a storage device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200918

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200918

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220307

R150 Certificate of patent or registration of utility model

Ref document number: 7038227

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150