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

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

Info

Publication number
JP7057435B2
JP7057435B2 JP2020550755A JP2020550755A JP7057435B2 JP 7057435 B2 JP7057435 B2 JP 7057435B2 JP 2020550755 A JP2020550755 A JP 2020550755A JP 2020550755 A JP2020550755 A JP 2020550755A JP 7057435 B2 JP7057435 B2 JP 7057435B2
Authority
JP
Japan
Prior art keywords
command
write
memory
memory system
hybrid memory
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
JP2020550755A
Other languages
English (en)
Other versions
JP2021517307A (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 JP2021517307A publication Critical patent/JP2021517307A/ja
Application granted granted Critical
Publication of JP7057435B2 publication Critical patent/JP7057435B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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
    • 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
    • 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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • 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)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (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」などの指示子は、このように指示されたいくつかの特定の特徴が含まれる場合があることを示す。本明細書で使用されるように、「いくつかの」特定のものは、そのようなものの1つ以上を指す(例えば、いくつかのメモリアレイは1つ以上のメモリアレイを指す場合がある)。「複数の」は、そのようなものの2つ以上を指すことを目的とする。
本明細書の図は、最初の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フラッシュ部分を含むストレージサブシステムなどの1つまたはメモリリソースを含む場合がある。
フレームワーク110は、システム100の動作を容易にするためにホスト102と関連付けられた処理リソースによって実行可能な命令を含んでよい。例えば、フレームワークは、読み取り、書き込み、開く、閉じるなどのコンピューティング動作を制御して、1つ以上のファイルシステム(例えば、仮想ファイルシステム、拡張ファイルシステムなどのファイルシステムなど)及び/またはブロックデバイスに対応する1つ以上の命令を提供するためにホスト102の処理リソースによって実行可能な命令を含んでよい。いくつかの実施形態では、フレームワーク110は、Android(登録商標)フレームワークなどのLinux(登録商標)フレームワークであってよい。さらに、フレームワーク110は、ホスト102上で実行中のオペレーティングシステムがホスト102に結合された1つ以上のデバイスと通信できるようにするために、実行可能なドライバ(例えば、1つ以上のソフトウェアドライバ)を含んでよい。
いくつかの実施形態では、フレームワーク110は、オペレーティングシステムを表してよい。例えば、フレームワーク110は、それと関連付けられたLinux(登録商標)カーネルを有するオペレーティングシステムを表してよい。そのような実施形態では、フレームワーク110は、「ソフトウェアストレージスタック」と見なされてよい(例えば、フレームワーク110は、オペレーティングシステムのソフトウェアベースのカーネルの実施態様を表してよい)。したがって、フレームワーク110は、コンピューティングシステム100を動作するために実行可能な命令を記憶するためにフレームワーク110と関連付けられた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と関連付けられたある特定の1つまたは複数の記憶場所を参照するために、その上で命令を最終的に実行してよいハードウェアリソースでプロビジョニングされる場合がある。いくつかの実施形態では、ブロックデバイス構成要素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の動作では非常に一般的である場合がある。例えば、マルチプロセッシングコンピューティング環境では、非常に大量の読み取りデータ及び/または書き込みデータ(いくつかの例では、最高で1日に数百ギガバイトまで)を生成してよい。いくつかの実施形態では、例外が生成されることにつながる場合がある読み取り動作/書き込み動作で消費される処理リソース及び時間を軽減するために、メモリリソース(例えば、メモリリソース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のその部分との間でのメモリのページの選択的な転送を可能にするように構成されてよい)。例えば、メモリリソース208-1の一部分は、メモリのページがメモリリソース208-1のその部分に選択的に転送されるように、スワップデバイスとして動作するように構成されてよい。いくつかの実施形態では、メモリリソース208-1の1ページ以上のメモリまたはメモリリソース208-1と関連付けられた1つ以上の論理ブロックアドレスが、図4との関連でさらに詳細に説明するスワップ動作を実行するために割り当てられてよい。1ページ以上のメモリ及び/または1つ以上の論理ブロックアドレスは、ハイブリッドメモリシステム204が製造されるときに(例えば、ハイブリッドメモリシステム204がエンドユーザーへの販売に供される前に)割り当てられる場合もあれば、1ページ以上のメモリ及び/または1つ以上の論理ブロックアドレスは、ハイブリッドメモリシステム204が初期化されるときに(例えば、コンピューティングシステム200が起動されるときに)割り当てられる場合もある。実施形態はこのように限定されていないが、いくつかの実施形態では、ハイブリッドメモリシステム204がコンピューティングシステム200の実行時中に動的に割り当てられるときに、1ページ以上のメモリ及び/または1つ以上の論理ブロックアドレスが割り当てられてよい。
いくつかの実施形態では、スワップデバイスとして割り当てられるハイブリッドメモリシステム204の部分は、ハイブリッドメモリシステム200の他の部分よりも少ないアクセス時間を有するハイブリッドメモリシステム200の一部分である場合がある。例えば、メモリリソース208-1は、メモリリソース208-1が3D Xpointメモリリソースなどの新たに出現したタイプのメモリリソースであるためにメモリリソース208-Nよりもより少ないアクセス時間を有する場合がある。さらに、いくつかの実施形態では、スワップデバイスとして割り当てられるハイブリッドメモリシステム204の部分は、ハイブリッドメモリシステム200の他の部分よりも高い耐久性を有するハイブリッドメモリシステム200の一部分である場合がある。
いくつかの実施形態では、ホスト202によって実行されるプロセス及び/またはアプリケーションは、NoSQL、SQLite、クラウドベースのDBMS、または他の適切なDBMSなどのデータベース管理システム(DBMS)に依存する場合がある。DBMSは、エンドユーザーが、コンピューティングシステム200と関連付けられたデータベースの中のデータを作成する、読み取る、更新する、及び/または削除することを可能にしてよい。いくつかの実施形態では、DMBSは、データ整合性及び/またはシステム耐久性を実現できるようにし得るジャーナル処理方針に従って動作してよい。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は、ハイブリッドメモリシステム204にそのようなファイルシステム書き込み(またはメタデータ書き込み)を転換させて、アクセス時間を低減する、及び/またはメインメモリ209に対するその耐久性を回避し、それによってコンピューティングシステム200の性能を高めるようにさらに構成されてよい。
いくつかの実施形態では、コントローラ206は、ハイブリッドメモリシステム204の部分に転換されたコマンドトラフィックを処理するために最もよく適したハイブリッドメモリシステム204の部分に、ファイルシステム書き込みを選択的に転換させるように構成されてよい。例えば、特定のファイルシステムは、特定のタイプのメモリによって最も効率的に処理され得る、特定のコマンドトラフィックパターンを示す場合がある。非限定的な例として、F2FSでは、ログ構造化ファイルシステム(LFS)書き込みは、NANDメモリに適する場合があるマッピングされていないLBA上でデータが連続して書き込まれる、判別可能なアクセスパターンで実行されてよい。対照的に、スラックスペースリサイクル(SSR)書き込みは、3D Xpointメモリなどの低レイテンシメモリに適する場合があるマッピングされたLBA上でデータがランダムに書き込まれる、判別可能なアクセスパターンで実行されてよい。
したがって、いくつかの実施形態では、コントローラ206は、特定のタイプのファイルシステム書き込みを処理することに最も適したハイブリッドメモリシステム204の一部分に、判別可能な書き込みパターンと関連付けられたコマンドトラフィックを選択的に転換させることができる。例えば、コントローラ206は、NANDメモリである場合があるメモリリソース208-Nへ、LFS書き込みを転換させるように構成される場合がある、及び/またはコントローラ206は、本明細書に記載されているように、低レイテンシの新たに出現したメモリリソースである場合があるメモリリソース208-1へSSR書き込みを転換させるように構成される場合がある。
いくつかの手法では、コンピューティングシステム200と関連付けられたメモリデバイスに、アクセスセマンティックに対応する情報を送信することはできない。例えば、いくつかの手法では、書き込みアクセス要求がユーザーデータと関連付けられているのか、それともファイルシステムメタデータと関連付けられているのかに対応する情報は、コンピューティングシステム200と関連付けられたメモリデバイスに送信されない。したがって、いくつかの手法では、コンピューティングシステム200と関連付けられたメモリデバイスは、特定のLBAまたはLBA範囲がページングプロセスが実行される格納先に記憶される場合に、その特定のLBAまたはLBA範囲が読み取りコマンドまたは書き込みコマンドによって頻繁にアクセスされるかどうかに関するいかなる知識も与えられない場合がある。
対照的に、本明細書の実施形態は、コントローラ206が、書き込みアクセス要求が、例えば、ユーザーデータと関連付けられているのか、それともファイルシステムメタデータと関連付けられているのかを判断する、及び/または特定のLBAまたはLBA範囲が読み取りコマンドまたは書き込みコマンドによって頻繁にアクセスされるかどうかを判断し、ハイブリッドメモリシステム204に、特定の特性を有する読み取りコマンドまたは書き込みコマンドを選択的に転換させることを可能にする。
いくつかの実施形態では、ハイブリッドメモリシステム204は、不揮発性メモリエクスプレス(NVMe)仕様に従って動作するように構成されてよい。例えば、ハイブリッドメモリシステム204のメモリリソース208-1、・・・、208-Nの1つ以上がNVMe仕様に従って動作するように構成されてよい。理解されるように、NVMe仕様は、以下の表1に示すように、ハイブリッドメモリシステム204などの不揮発性メモリデバイスに特定の機能を提供する。
Figure 0007057435000001
いくつかの実施形態では、表1に記載する機能は、ハイブリッドメモリシステム204のコンピューティングシステム200との最適化された統合を容易にし得る。例えば、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 (15)

  1. 第1の不揮発性メモリ(NVM)リソースと、第2のNVMリソースと、コントローラとを含むハイブリッドメモリシステムを備える装置であって、
    前記コントローラは、
    前記ハイブリッドメモリシステムから分離され且つ前記ハイブリッドメモリシステムに結合可能なホストのメインメモリに関連付けられたコマンドに感度を割り当てることであって、前記感度は、前記コマンドの実行の頻度と、前記コマンドの実行に関連付けられた書き込みレイテンシとに基づく、ことと
    前記コマンドが、判別可能な書き込みパターンを有する特定のタイプのファイルシステム書き込みに相当する、と判定することであって、前記判別可能な書き込みパターンは前記特定のタイプのファイルシステム書き込みに関連付けられている、ことと、
    記割り当てられた感度と、前記特定のタイプのファイルシステム書き込みに対応する前記コマンドと、前記判別可能な書き込みパターンを有する前記特定のタイプのファイルシステム書き込みと少なくとも部分的に基づいて、前記コマンドを処理する際に一層低い書き込みレイテンシ及び一層高い耐久性を示すように構成された前記第1のNVMリソース又は前記第2のNVMリソースのうちの一方に、前記ホストの前記メインメモリに関連付けられた論理ブロックアドレス(LBA)をマッピングすることにより、前記ハイブリッドメモリシステムの前記第1のNVMリソース又は前記第2のNVMリソースに前記コマンドを選択的に転換させることと、
    を行うように構成される、装置。
  2. 前記感度が、前記コマンドの実行の頻度、前記コマンドのサイズ、または前記コマンドの実行で消費されるリソースの量のうちの少なくとも1つに少なくとも部分的に基づいており
    前記コントローラが、前記コマンドの前記割り当てられた感度に基づいて、前記コマンドにインジケータを割り当てるように構成される、請求項1に記載の装置。
  3. 前記コントローラが、
    前記コマンドの実行と関連付けられた書き込みレイテンシを決定することと
    前記コマンドの実行と関連付けられた前記書き込みレイテンシが、特定の書き込みレイテンシ閾値を超える旨の判断に応えて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと
    前記ハイブリッドメモリシステムの別の部分よりも一層低いアクセスレイテンシ及び一層高い耐久性のうちの少なくとも1つによって特徴付けられる前記ハイブリッドメモリシステムの一部分に、前記コマンドを選択的に転換させることと、
    を行うようにさらに構成される、請求項1~2のいずれか1項に記載の装置。
  4. 第1の不揮発性メモリ(NVM)リソースと、第2のNVMリソースと、コントローラとを含むハイブリッドメモリシステムを備える装置であって、
    前記コントローラは、
    前記ハイブリッドメモリシステムから分離され且つ前記ハイブリッドメモリシステムに結合可能なホストのメインメモリに関連付けられた特定のタイプのコマンドトラフィックであって、前記ホストによって実行される前記特定のタイプのコマンドトラフィックを識別することと
    コマンドに感度を割り当てることであって、前記感度は、前記コマンドの実行の頻度と、前記コマンドの実行に関連付けられた書き込みレイテンシとに基づく、ことと、
    前記コマンドが、判別可能な書き込みパターンを有する特定のタイプのファイルシステム書き込みに相当する、と判定することであって、前記判別可能な書き込みパターンは前記特定のタイプのファイルシステム書き込みに関連付けられている、ことと、
    前記コマンドトラフィックの識別された特性と、前記特定のタイプのファイルシステム書き込みに対応する前記コマンドと、前記判別可能な書き込みパターンを有する前記特定のタイプのファイルシステム書き込みと少なくとも部分的に基づいて、前記コマンドを処理する際に一層低い書き込みレイテンシ及び一層高い耐久性を示すように構成された前記第1のNVMリソース又は前記第2のNVMリソースのうちの一方に、前記ホストの前記メインメモリに関連付けられた論理ブロックアドレス(LBA)をマッピングすることにより、前記ハイブリッドメモリシステムの前記第1のNVMリソース又は前記第2のNVMリソースに前記コマンドトラフィックを選択的に転換させることと、
    を行うように構成される、装置。
  5. 前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータの更新に対応するコマンドトラフィックであり、
    前記特定のタイプのコマンドトラフィックが、反復的な書き込みパターン及び予測可能な書き込みパターンのうちの少なくとも一方を示すコマンドトラフィックであり、
    前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータに対応するコマンドトラフィックを含む、請求項4に記載の装置。
  6. 前記コントローラが、
    前記コマンドトラフィックの実行の頻度及び前記コマンドトラフィックのサイズのうちの少なくとも一方に基づいて、前記特定のタイプのコマンドトラフィックを識別することと
    前記コマンドトラフィックの実行で消費されるリソースの量に基づいて、前記特定のタイプのコマンドトラフィックを識別することと、
    を行うようにさらに構成される、請求項4に記載の装置。
  7. 前記ハイブリッドメモリシステムが、第1の部分及び第2の部分を含み、前記第1の部分がNAND部分であり、前記第2の部分が、3D Xpointメモリ部分又は強誘電体RAM部分である、請求項4~6のいずれか1項に記載の装置。
  8. ハイブリッドメモリシステムから分離され且つ前記ハイブリッドメモリシステムに結合可能なホストのメインメモリに関連付けられたコマンドに感度を割り当てることであって、前記感度は、前記コマンドの実行の頻度と、前記コマンドの実行に関連付けられた書き込みレイテンシとに基づく、ことと、
    前記コマンドが、判別可能な書き込みパターンを有する特定のタイプのファイルシステム書き込みに相当する、と判定することであって、前記判別可能な書き込みパターンは前記特定のタイプのファイルシステム書き込みに関連付けられている、ことと、
    記割り当てられた感度と、前記特定のタイプのファイルシステム書き込みに対応する前記コマンドと、前記判別可能な書き込みパターンを有する前記特定のタイプのファイルシステム書き込みと少なくとも部分的に基づいて、前記コマンドを処理する際に一層低い書き込みレイテンシ及び一層高い耐久性を示すように構成された前記ハイブリッドメモリシステムのフラッシュメモリデバイス又は相変化ランダムアクセスメモリデバイスに、前記ホストの前記メインメモリに関連付けられた論理ブロックアドレス(LBA)をマッピングすることにより、前記ハイブリッドメモリシステムの前記フラッシュメモリデバイス又は前記相変化ランダムアクセスメモリデバイスに前記コマンドを選択的に転換させることと、
    を含む方法。
  9. 前記コマンドの実行で消費されるリソースの量、前記コマンドのサイズ、前記コマンドの実行の頻度、またはその組み合わせに基づいて、前記コマンドに前記感度を割り当てることをさらに含む、請求項8に記載の方法。
  10. 前記ハイブリッドメモリシステムの別の部分よりも一層低いアクセスレイテンシ及び一層高い耐久性のうちの少なくとも一方によって特徴付けられる前記ハイブリッドメモリシステムの一部分に前記コマンドを選択的に転換させることをさらに含み、前記コマンドがデータベース管理システムコマンドを含む、請求項8~9のいずれか1項に記載の方法。
  11. 前記コマンドが複数のランダム書き込み動作によって特徴付けられると判断することと、
    記コマンドが前記複数のランダム書き込み動作によって特徴付けられる旨の前記判断に少なくとも部分的に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
    をさらに含む、請求項8~10のいずれか1項に記載の方法。
  12. 前記コマンドが閾値コマンドサイズよりも小さいと判断することと、
    記コマンドが前記閾値コマンドサイズよりも小さい旨の前記判断に少なくとも部分的に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
    をさらに含む、請求項8~11のいずれか1項に記載の方法。
  13. ハイブリッドメモリシステムから分離され且つ前記ハイブリッドメモリシステムに結合可能なホストのメインメモリに関連付けられた特定のタイプのコマンドトラフィックであって、ホストによって実行される前記特定のタイプのコマンドトラフィックを識別することと、
    コマンドに感度を割り当てることであって、前記感度は、前記コマンドの実行の頻度と、前記コマンドの実行に関連付けられた書き込みレイテンシとに基づく、ことと、
    前記コマンドが、判別可能な書き込みパターンを有する特定のタイプのファイルシステム書き込みに相当する、と判定することであって、前記判別可能な書き込みパターンは前記特定のタイプのファイルシステム書き込みに関連付けられている、ことと、
    前記コマンドトラフィックの識別された特性と、前記特定のタイプのファイルシステム書き込みに対応する前記コマンドと、前記判別可能な書き込みパターンを有する前記特定のタイプのファイルシステム書き込みと少なくとも部分的に基づいて、前記コマンドを処理する際に一層低い書き込みレイテンシ及び一層高い耐久性を示すように構成された、前記ホストに結合可能な前記ハイブリッドメモリシステムのフラッシュメモリデバイス又は相変化ランダムアクセスメモリデバイスに、前記ホストの前記メインメモリに関連付けられた論理ブロックアドレス(LBA)をマッピングすることにより、前記ハイブリッドメモリシステムの前記フラッシュメモリデバイス又は前記相変化ランダムアクセスメモリデバイスに前記コマンドトラフィックを選択的に転換させることと、
    を含む方法。
  14. 前記特定のタイプのコマンドトラフィックが、ファイルシステムメタデータの更新に対応するコマンドトラフィック、反復的な書き込みパターンを示すコマンドトラフィック、予測可能な書き込みパターンを示すコマンドトラフィック、前記ホストと関連付けられたジャーナル処理ファイルシステムに対応するコマンドトラフィック、またはその組み合わせである、請求項13に記載の方法。
  15. 前記コマンドが複数のランダム書き込み動作によって特徴付けられること、前記コマンドが閾値コマンドサイズよりも小さいこと、またはその組み合わせであると判断することと、
    記判断に少なくとも部分的に基づいて、前記ハイブリッドメモリシステムに前記コマンドを選択的に転換させることと、
    記コマンドトラフィックが特定の書き込みパターンを示す旨の判断に少なくとも部分的に基づいて、前記ハイブリッドメモリシステムの一部分に前記コマンドトラフィックを選択的に転換させることと、
    をさらに含む、請求項13~14のいずれか1項に記載の方法。
JP2020550755A 2018-03-21 2019-03-20 ハイブリッドメモリシステム Active JP7057435B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/927,339 US10705747B2 (en) 2018-03-21 2018-03-21 Latency-based storage in a hybrid memory system
US15/927,339 2018-03-21
PCT/US2019/023054 WO2019183155A1 (en) 2018-03-21 2019-03-20 Hybrid memory system

Publications (2)

Publication Number Publication Date
JP2021517307A JP2021517307A (ja) 2021-07-15
JP7057435B2 true JP7057435B2 (ja) 2022-04-19

Family

ID=67985228

Family Applications (1)

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

Country Status (6)

Country Link
US (2) US10705747B2 (ja)
EP (1) EP3769201A4 (ja)
JP (1) JP7057435B2 (ja)
KR (1) KR102443600B1 (ja)
CN (1) CN111868678B (ja)
WO (1) WO2019183155A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11249664B2 (en) * 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
KR102480944B1 (ko) * 2020-09-23 2022-12-22 재단법인대구경북과학기술원 하이브리드 메모리 제어 장치 및 방법
KR102650571B1 (ko) * 2020-11-12 2024-03-26 한국전자통신연구원 역가상화 환경용 혼성 메모리 관리 장치 및 방법
CN112737835A (zh) * 2020-12-25 2021-04-30 北京浪潮数据技术有限公司 一种云主机业务管理方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005043394A1 (ja) 2003-10-31 2005-05-12 Matsushita Electric Industrial Co., Ltd. 情報記録媒体、情報記録媒体に対するアクセス装置及びアクセス方法
JP2011522350A (ja) 2008-05-28 2011-07-28 マイクロン テクノロジー, インク. ハイブリッドメモリ管理
WO2015114829A1 (ja) 2014-02-03 2015-08-06 株式会社日立製作所 情報処理装置
WO2017145361A1 (ja) 2016-02-26 2017-08-31 三菱電機株式会社 情報処理装置及び情報処理方法

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR100801015B1 (ko) * 2006-08-30 2008-02-04 삼성전자주식회사 하이브리드 하드 디스크 드라이브와 데이터 저장 방법
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
TWI368224B (en) * 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US20100169602A1 (en) * 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
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
KR101713051B1 (ko) * 2010-11-29 2017-03-07 삼성전자주식회사 하이브리드 메모리 시스템, 및 그 관리 방법
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US8725963B1 (en) 2011-04-15 2014-05-13 Parallels IP Holdings GmbH System and method for managing a virtual swap file for virtual environments
KR20130032772A (ko) * 2011-09-23 2013-04-02 삼성전자주식회사 하이브리드 메모리 장치, 이를 포함하는 컴퓨터 시스템, 및 하이브리드 메모리장치의 데이터 기입 및 독출 방법
US8977803B2 (en) * 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US8751725B1 (en) * 2012-01-27 2014-06-10 Netapp, Inc. Hybrid storage aggregate
JP5971547B2 (ja) * 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
US9946495B2 (en) * 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
WO2014192144A1 (ja) * 2013-05-31 2014-12-04 株式会社日立製作所 制御装置および制御方法
US11733932B2 (en) * 2013-09-27 2023-08-22 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
US10365835B2 (en) * 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
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
WO2016056140A1 (ja) * 2014-10-10 2016-04-14 株式会社日立製作所 インターフェースデバイス、及びインターフェースデバイスを含む計算機システム
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
KR102491651B1 (ko) 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US10140057B2 (en) 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state 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
US10540098B2 (en) * 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
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
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
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
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
WO2005043394A1 (ja) 2003-10-31 2005-05-12 Matsushita Electric Industrial Co., Ltd. 情報記録媒体、情報記録媒体に対するアクセス装置及びアクセス方法
JP2011522350A (ja) 2008-05-28 2011-07-28 マイクロン テクノロジー, インク. ハイブリッドメモリ管理
WO2015114829A1 (ja) 2014-02-03 2015-08-06 株式会社日立製作所 情報処理装置
WO2017145361A1 (ja) 2016-02-26 2017-08-31 三菱電機株式会社 情報処理装置及び情報処理方法

Also Published As

Publication number Publication date
KR20200123850A (ko) 2020-10-30
CN111868678B (zh) 2024-05-14
US11340808B2 (en) 2022-05-24
US20190294356A1 (en) 2019-09-26
JP2021517307A (ja) 2021-07-15
EP3769201A4 (en) 2021-12-22
KR102443600B1 (ko) 2022-09-16
EP3769201A1 (en) 2021-01-27
US20200293211A1 (en) 2020-09-17
US10705747B2 (en) 2020-07-07
CN111868678A (zh) 2020-10-30
WO2019183155A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
JP7057435B2 (ja) ハイブリッドメモリシステム
JP7049476B2 (ja) ハイブリッドメモリシステム
EP3673377B1 (en) Logical to physical mapping
US11327892B2 (en) Latency-based storage in a hybrid memory system
JP2021149374A (ja) データ処理装置
CN114281719A (zh) 用于通过地址映射来扩展命令编排的系统及方法
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: 20201109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220304

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: 20220322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220407

R150 Certificate of patent or registration of utility model

Ref document number: 7057435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150