JP2022050757A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2022050757A
JP2022050757A JP2020156861A JP2020156861A JP2022050757A JP 2022050757 A JP2022050757 A JP 2022050757A JP 2020156861 A JP2020156861 A JP 2020156861A JP 2020156861 A JP2020156861 A JP 2020156861A JP 2022050757 A JP2022050757 A JP 2022050757A
Authority
JP
Japan
Prior art keywords
command
host
memory
unit
memory system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020156861A
Other languages
English (en)
Inventor
健太 安福
Kenta Yasufuku
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020156861A priority Critical patent/JP2022050757A/ja
Priority to US17/198,676 priority patent/US11372783B2/en
Publication of JP2022050757A publication Critical patent/JP2022050757A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

【課題】低レイテンシでコマンドを取得することができるメモリシステムを提供する。【解決手段】メモリシステムは、インタフェース部と、初回読み込み部と、無効化要求検知部と、コマンド取得部と、を備える。インタフェース部は、ホストとキャッシュコヒーレンシを保って接続する。初回読み込み部は、ホストによるI/Oコマンド用の発行キューへのコマンド書き込み前に、I/Oコマンド用の発行キューを読み込む。無効化要求検知部は、初回読み込み部による読み込み後に、ホストによるI/Oコマンド用の発行キューへのコマンド書き込みに基づく無効化要求をインタフェース部を介して検知する。コマンド取得部は、無効化要求検知部により検知された無効化要求に応じて、I/Oコマンド用の発行キューのコマンドを取得する。【選択図】図3

Description

本発明の実施形態は、メモリシステムに関する。
ホストとストレージデバイスとを含むシステムにおいて、ホストがコマンド発行キューであるSQ領域にコマンドを登録すると、ストレージデバイスは、これに応じてコマンドを取得する。この場合、低レイテンシでコマンドを取得することが望まれる。
米国特許出願公開第2017/0075834号明細書
一つの実施形態は、低レイテンシでコマンドを取得することができるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、インタフェース部と、初回読み込み部と、無効化要求検知部と、コマンド取得部と、を備える。インタフェース部は、ホストとキャッシュコヒーレンシを保って接続する。初回読み込み部は、ホストによるI/Oコマンド用の発行キューへのコマンド書き込み前に、I/Oコマンド用の発行キューを読み込む。無効化要求検知部は、初回読み込み部による読み込み後に、ホストによるI/Oコマンド用の発行キューへのコマンド書き込みに基づく無効化要求をインタフェース部を介して検知する。コマンド取得部は、無効化要求検知部により検知された無効化要求に応じて、I/Oコマンド用の発行キューのコマンドを取得する。
図1は、実施形態にかかるメモリシステムを含む情報処理システムの構成を示す図である。 図2は、実施形態にかかるホストメモリの構成の一例を示す図である。 図3は、実施形態にかかるコントローラの機能構成の一例を示すブロック図である。 図4は、実施形態にかかるメモリシステムを含む情報処理システムの動作を示すシーケンス図である。 図5は、比較例のコマンド取得処理の手順を説明するシーケンス図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(実施形態)
図1は、実施形態にかかるメモリシステム100を含む情報処理システム1の構成を示す図である。
メモリシステム100は、ホスト2に通信可能に接続され、ホスト2に対する外部記憶装置として機能する。メモリシステム100は、UFS(Universal Flash Storage)規格やeMMC(embedded Multi Media Card)規格などに準拠した組み込み用途のフラッシュメモリや、SSD(Solid State Drive)などである。ホスト2は、例えば、マイクロプロセッサ、撮像装置などである。以下では、ホスト2とメモリシステム100とが通信路を介してNVMe(Non-Volatile Memory express)(登録商標)規格に準拠したパケットを送受信できる場合について例示する。
ホスト2は、ホストSoC (System On Chip)3及びホストメモリ4を有する。ホストSoC3は、CPUを有し、メモリシステム100に要求を発行するために必要な処理を行う。例えば、キューを作成するためのコマンドや、データ更新等のコマンドをホストメモリ4に書き込み、メモリシステム100の制御レジスタの読み書きを行う。
また、ホストSoC3は、CXL(Compute Express Link)(登録商標)プロトコル等のキャッシュコヒーレンシを保証するプロトコルに準拠したインタフェースを有する。ホストSoC3は、自身やメモリシステム100からホストメモリ4へのアクセスを監視し、状態に応じてメモリシステム100に対してキャッシュコヒーレンシを保つための要求を発行する。例えば、メモリシステム100が読み込み共有を示す要求(CXL.CacheのRdShare要求)を用いて読み込んだホストメモリ4の領域に対してホストSoC3が書き込みをすると、当該インタフェースの機能(例えば、CXL規格のブリッジ機能)により、メモリシステム100に対して該当データの無効化要求(CXL.CacheのSnvInv要求)を送信する。
ホストメモリ4は、例えば、DRAM(Dynamic Random Access Memory)等のメモリである。ここで、ホストメモリ4の構成の一例について、図2を用いて説明する。図2は、実施形態にかかるホストメモリ4の構成の一例を示す図である。図2に示すように、ホストメモリ4は、Admin SQ41、Admin CQ42、I/O SQ43、I/O CQ44、およびバッファ領域45を含む。Admin SQ41は、管理用のコマンド発行キューである。Admin CQ42は、管理用のコマンド完了キューである。I/O SQ43は、I/Oコマンド用の発行キューであり、データ転送に関するコマンド発行キューである。I/O CQ44は、データ転送に関するコマンド完了キューである。バッファ領域45は、I/O SQ43にエンキューされたライトコマンドに対応したライトデータと、リードコマンドに対応したリードデータが格納される。
上記のように、管理用コマンドのキューおよびI/Oコマンド用のキューは、発行キューと完了キューとの対によって構成される。発行キューは、ホスト2からメモリシステム100に発行されたコマンドが格納されるキューである。完了キューは、メモリシステム100が発行キューを介して受け付けたコマンドの実行を完了した場合に当該コマンドの実行完了の通知がメモリシステム100によって格納されるキューである。ホスト2は、完了キューに格納された通知を確認することによって、コマンドの実行の完了を知ることができる。
発行キューおよび完了キューは、一例では、リングバッファである。各キュー(発行キューおよび完了キューのそれぞれ)が備えるエントリは、ヘッド(Head)とテール(Tail)という2つの変数によって管理される。ホスト2またはメモリシステム100は、ヘッドおよびテールが指し示す場所(ヘッドポインタ、テールポインタ)に基づいて、各キューの参照箇所(例えば、新たにエンキューされたコマンド情報の場所)を特定することができる。
図1に戻り、メモリシステム100は、コントローラ110、バッファメモリ120、及び不揮発性メモリ130を有する。コントローラ110は、ホストインタフェース111、バッファインタフェース112、CPU113、RAM(Random Access Memory)114、及びメモリインタフェース115を有する。
不揮発性メモリ130は、複数のメモリチップで構成され得る。各メモリチップはメモリセルアレイを有する。各メモリチップのメモリセルアレイでは、一括してデータの書き込みおよび読み出しのアクセスが可能な単位が物理ページである。複数の物理ページから構成され、独立してデータの消去が可能な最小のアクセス単位が物理ブロックである。1物理ページよりも小さい単位のデータ管理単位であるクラスタで、CPU113により、不揮発性メモリ130内でのデータが管理されるものとする。クラスタサイズは、ホスト2からの最小アクセス単位であるセクタのサイズ以上であり、クラスタサイズの自然数倍が物理ページサイズとなるように定められる。1物理ページは4クラスタで構成され、1論理ページは64クラスタで構成され得る。
例えば、上述の書き込み単位のサイズは、クラスタサイズであってもよいし、ページサイズであってもよいし、ブロックサイズであってもよいし、それらと異なるサイズであってもよい。クラスタサイズは、4KBであってもよく、ページサイズは、16KBであってもよい。
不揮発性メモリ130は、例えばNAND型フラッシュメモリであるが、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory:磁気抵抗メモリ)、PRAM(Phasechange Random Access Memory:相変化メモリ)、ReRAM(ResistiveRandom Access Memory:抵抗変化型メモリ)、FeRAM(Ferroelectric Random Access Memory)など他の不揮発性の半導体メモリでもよい。また、不揮発性メモリ130は、3次元構造のメモリでもよい。
ホストSoC3とホストインタフェース111はNVMe規格で定められたプロトコルに従って動作する。また、ホストSoC3とホストインタフェース111は、CXLプロトコル等のキャッシュコヒーレンシを保証するプロトコルに準拠したインタフェースも有する。なお、上記CXL以外に、CCIX(Cache Coherent Interconnect for Accelerators)プロトコルやOpenCAPI(Open Coherent Accelerator Processor Interface)(登録商標)プロトコルに準拠したプロトコルでもよい。なお、CXLプロトコルの場合、CXL.ioに加えて、CXL.cacheをサポートする必要がある。
CPU113は、コントローラ110の各部を統括的に制御する。CPU113は、例えば、ホストインタフェース111を介して各種コマンドを取得すると、当該コマンドに応じて処理をする。
RAM114は、メモリであり、CPU113による作業領域として機能する。
バッファメモリ120は、情報を一時的に保持するメモリ領域として機能する。バッファメモリ120は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリで構成される。また、バッファメモリ120は、コントローラ110内部に搭載されてもよいし、コントローラ110の外にコントローラ110とは独立して搭載されてもよい。
メモリインタフェース115は、バスを介して不揮発性メモリ130と接続され、不揮発性メモリ130との通信を制御する。例えば、メモリインタフェース115は、CPU113からライトコマンドの実行が指示された際に、ライト要求及びライトデータを不揮発性メモリ130へ転送する。また、不揮発性メモリ130はライト処理が完了した際、完了通知をメモリインタフェース115へ送信し、メモリインタフェース115は完了通知を不揮発性メモリ130から受ける。CPU113からリードコマンドの実行が指示された場合、メモリインタフェース115は、リード要求を不揮発性メモリ130へ転送し、不揮発性メモリ130は、リードデータをメモリインタフェース115へ送信し、メモリインタフェース115は、当該リードデータを不揮発性メモリ130から受信する。
CPU113は、メモリインタフェース115を介してCPU113が指示したライト要求に対する完了通知を受けると、ライトコマンドの実行完了を示す完了情報をホストインタフェース111経由でホストメモリ4におけるI/O CQ44に登録する。リード要求の場合、CPU113は、リードデータをホストインタフェース111経由でホストメモリ4におけるバッファ領域へ転送し、リードコマンドの実行完了を示す完了情報をホストインタフェース111経由でホストメモリ4におけるI/O CQ44に登録する。
バッファインタフェース112は、コントローラ110からバッファメモリ120へのアクセスを制御するコントローラであり、例えばDDR(Double Data Rate)でのバッファメモリ120へのアクセスを可能とするコントローラである。CPU113は、必要に応じて不揮発性メモリ130に転送するライトデータや、不揮発性メモリ130が出力するリードデータをバッファメモリ120に格納し、ホストインタフェース111を介して、ホストメモリ4との間でデータの転送を行う。
続いて、図3を用いてコントローラ110の機能について説明する。図3は、実施形態にかかるコントローラ110の機能構成の一例を示すブロック図である。図3に示すように、コントローラ110は、インタフェース部11と、初期設定部12と、初回読み込み部13と、無効化要求検知部14と、コマンド取得部15と、コマンド処理部16とを含む。CPU113が、不揮発性メモリ130で記憶されているプログラム等を実行し、ホストインタフェース111、バッファインタフェース112、メモリインタフェース115を制御することで、初期設定部12と、初回読み込み部13と、コマンド処理部16とを実現する。また、無効化要求検知部14と、コマンド取得部15とはホストインタフェース111に実装されている機能によって実現する。
インタフェース部11は、ホスト2とキャッシュコヒーレンシを保って接続するインタフェース(例えば、CXL規格に準拠するインタフェース)であり、ホストインタフェース111により実現する。
初期設定部12は、初期化処理に関する設定処理をする要素である。ここで、初期化処理とは、ホスト2の電源が投入される場合やメモリシステム100の電源が投入される場合やメモリシステム100がスリープ状態から復旧する場合等に実行する前処理である。
メモリシステム100のスリープ状態は、例えば、メモリシステム100の消費電力の節約のためにメモリシステム100に含まれる回路やメモリの少なくとも一部の電源がオフになった状態である。メモリシステム100のスリープ状態の実現方法として、例えば、コントローラ110がRAM114やバッファメモリ120に保存されている所定の情報を不揮発性メモリ130に記憶し、その後メモリシステム100の電源をオフとする方法や、コントローラ110がRAM114やバッファメモリ120に保存されている所定の情報をコントローラ110に含まれる記憶回路のうち消費電力の小さい記憶回路に保存し、その後メモリシステム100に含まれる回路やメモリのうち消費電力の小さい記憶回路を除いて電源をオフとする方法がある。
初期化処理の一つとして、例えば、I/O SQ43の作成が存在する。初期設定部12は、ホスト2による書き込み処理により、Admin SQ41のテールポインタが更新されたことを検知すると、Admin SQ41上に新規コマンドが登録されたことを認識する。初期設定部12は、当該新規コマンドの情報をホストメモリ4から取得し、当該新規コマンドを解析する。初期設定部12は、新規コマンドを解析した結果、I/O SQ43の作成コマンドであると判定した場合には、I/O SQ43の領域設定処理をする。このI/O SQ43の領域設定処理では、I/O SQ43の領域のアドレスやサイズをホストインタフェース111に設定することで、後続の無効化要求検知部14とコマンド取得部15は、ホストメモリ4上のI/O SQ43への要求を発行可能となる。
初回読み込み部13は、初期設定部12によるI/O SQ43の領域設定処理の後に、当該I/O SQ43を読み込む処理を実行する。初回読み込み部13は、I/O SQ43の領域設定処理後で、且つホスト2によるI/O SQ43へのコマンド書き込み前にI/O SQ43を読み込む。初回読み込み部13が、読み込み共有を示す要求(CXL.CacheのRdShare要求)を用いてI/O SQ43を読み込むことにより、ホスト2のホストSoC3は、メモリシステム100がI/O SQ43を参照していることを認識、記憶する。後続の処理において、I/O SQ43への書き込みが発生した場合、ホストSoC3は、メモリシステム100に対して該当データの無効化要求を発行する。また、読み込んだ情報は有効なコマンド情報を示していないため、初回読み込み部13は、読み込んだ情報を所定のタイミングで破棄する。
無効化要求検知部14は、初回読み込み部13による読み込み後に、ホストSoC3によるI/O SQ43へのコマンド書き込みによって発生する無効化要求(CXL.CacheのSnvInv要求)をインタフェース部11を介して検知する要素である。無効化要求検知部14は、当該無効化要求に応じて、I/O SQ43への書き込みを検知し、I/O SQ43のテールポインタを更新する。無効化要求検知部14は、ホストインタフェース111内の回路により実現する。
コマンド取得部15は、無効化要求検知部14により検知された無効化要求に応じて、I/O SQ43のコマンド情報を取得する要素である。コマンド情報の取得には、初回読み込み部13と同様に、読み込み共有を示す要求(CXL.CacheのRdShare要求)を用いて読み込みを行うことで、ホスト2のホストSoC3は、その時点の最新のデータをメモリシステム100が参照していることを認識する。コマンド取得部15は、ホストインタフェース111内の回路により実現する。
コマンド処理部16は、コマンド取得部15によって取得したコマンドが示すホストの要求を処理する要素である。必要に応じてCPU113はホストインタフェース111、バッファインタフェース112、メモリインタフェース115を制御し、ホストメモリ4と不揮発性メモリ130との間のデータ転送を行なう。
次に、メモリシステム100を含む情報処理システム1の動作について図4を用いて説明する。図4は、実施形態にかかるメモリシステム100を含む情報処理システム1の動作を示すシーケンス図である。まず、最初に、情報処理システム1では、ステップS1~ステップS14において、初期化処理を実行する。なお、図4に示すのは情報処理システム1に特有な動作に関連した動作であり、メモリシステム100を動作させるためには、図4に示した以外の、情報処理システム1に非特有である初期化処理が必要である。それらは図4に示した初期化処理の前後の適切なタイミングで行う。また、図4においてコマンド処理として、リードコマンドとライトコマンドを例に示すが、それ以外のコマンドにおいても、ホストSoC3とメモリシステム100間のコマンド投入とコマンド完了の手続きは同様であり、CPU113が必要に応じた制御を行うことで、コマンドによるホストの要求を適切に処理する。
ホスト2のホストSoC3は、Admin SQ41に、I/O SQ43の作成コマンドを書き込み(ステップS1)、メモリバリア命令(例えばIntel社のCPUに実装されているSFENCE命令)を実行し(ステップS2)、Admin SQ41のテールポインタを更新する(ステップS3)。メモリバリア命令はAdmin SQ41への書き込みと、Admin SQ41のテールポインタの更新(ステップS3)との順序を保証するために必要な命令である。ホストSoC3がAdmin SQ41のテールポインタを更新することで、初期設定部12は、新規コマンドが登録されたことを認識する(ステップS4)。初期設定部12は、当該認識に応じて、ホストメモリ4へアクセスし、コマンドの読み込み要求をして(ステップS5)、ホストメモリ4からコマンド情報を取得する(ステップS6)。初期設定部12は、取得したコマンド情報に基づき、I/O SQ43の設定処理をする(ステップS7)。初期設定部12は、この設定処理により、I/O SQ43のアドレスやサイズを設定することができる。
初回読み込み部13は、上記設定処理後に、ホストメモリ4へアクセスしてI/O SQ43の全領域を読み込むための要求をホスト2へ送信する(ステップS8)。初回読み込み部13は、例えば、コマンド長かつキャッシュ管理単位である64バイト長のデータの読み出し要求であってCXL.Cacheの読み込み共有を示す要求(RdShare要求)を複数回送信する。初回読み込み部13は、ホストメモリ4からI/O SQ43のデータを取得する(ステップS9)。このように、初期化処理終了後に実行されるホストSoC3によるI/O SQ43へのコマンド(例えば、ライトコマンドやリードコマンド)の書き込みよりも前に、初回読み込み部13がI/O SQ43のデータを読み込む。なお、初回読み込み部13は、初期設定部12により設定されたI/O SQ43のアドレスやサイズに基づいて読み込み処理をする。
初回読み込み部13は、取得したI/O SQ43のデータを破棄する(ステップS10)。このように、初回読み込み部13は、I/O SQ43を空読みする。初期設定部12は、ホストメモリ4のAdmin CQ42へ完了通知を書き込み(ステップS11)、ホストSoC3へ割り込み通知する(ステップS12)。
ホストSoC3は、Admin CQ42の情報を読み込み(ステップS13)、コマンド完了情報を取得する(ステップS14)。ここまでの処理が初期化処理に該当する。
ホストSoC3は、I/O SQ43にコマンドを書き込む(ステップS15)。この結果、初回読み込み部13で読み込んだI/O SQ43に更新が発生することになり、ホストSoC3における、CXL規格のコヒーレンシブリッジ機能により、ホストSoC3は、メモリシステム100へ無効化要求をする(ステップS16)。例えば、ホストSoC3は、CXL.Cacheの無効化要求(SnvInv要求)を送信する。また、この無効化要求では、ホストSoC3がステップS15でコマンド(例えば、ライトコマンドやリードコマンド)を書き込んだ箇所を示すアドレス情報を含む。ホストSoC3がI/O SQ43にコマンドを書き込む場合、コマンド情報を構成するデータをまとめて一つの命令で書き込む必要があり、例えばIntel社のCPUに実装されているAVX-512のストア命令を使う必要がある。
メモリシステム100の無効化要求検知部14は、ホストSoC3が発行した無効化要求をインタフェース部11を介して検知する。また、無効化要求検知部14は、当該無効化要求の情報に含まれるアドレス情報を参照し、当該アドレス情報に基づいてI/O SQ43のテールポインタを更新する(ステップS17)。
コマンド取得部15は、I/O SQ43のテールポインタの更新に基づいて、ホストメモリ4にコマンド読み込み要求をして(ステップS18)、ホストメモリ4からコマンド情報を取得する(ステップS19)。コマンド取得部15は、コマンド情報を取得して、I/O SQ43のヘッドポインタを更新する(ステップS20)。
コマンド処理部16は、取得したコマンド情報が示す内容に応じてコマンド処理を実行する(ステップS21)。ステップS21において、コマンド処理部16は、取得したコマンド情報がリードコマンドを示すものである場合、コマンド情報の内容に基づき、不揮発性メモリ130から対応するデータを読み出し、ホストメモリ4へデータを転送する。
また、コマンド処理部16は、取得したコマンド情報がライトコマンドを示すものである場合、ステップS21において、ホストメモリ4から書き込みデータを取得して、取得した書き込みデータを、コマンド情報の内容に基づき、不揮発性メモリ130の対応した箇所にデータ書き込みを行う。
コマンド処理部16は、コマンドの処理が完了すると、ホストメモリ4のI/O CQ44へ完了通知書き込みをして(ステップS22)、ホストSoC3へ割り込み通知をする(ステップS23)。
ホストSoC3は、当該割り込み通知に応じて、ホストメモリ4のI/O CQ44を読み込み(ステップS24)、ホストメモリ4からコマンド完了情報を取得し(ステップS25)、処理を終了する。
以上述べたように、実施形態では、インタフェース部11は、ホスト2とキャッシュコヒーレンシを保って接続する。初回読み込み部13は、ホスト2によるI/O SQ43へのコマンド書き込み前にI/O SQ43を読み込んでおく。無効化要求検知部14は、初回読み込み部13による読み込み後に、ホスト2によるI/O SQ43へのコマンド書き込みに基づく無効化要求をインタフェース部11を介して検知し、コマンド取得部15は、当該無効化要求に応じて、I/O SQ43のコマンドを取得する。このように、コントローラ110は、ホスト2によってI/O SQ43のテールポインタが更新されることを検知することなく、コマンド情報を取得するので、低レイテンシでコマンドを取得することができる。
この技術と比較される技術(比較例と称する)として、先行技術文献のような、ホストSoCがI/O SQにコマンドを書き込み、さらにホストが、I/O SQテールポインタを更新する技術がある。ここで、図5を用いて、比較例のコマンド取得処理の手順を説明する。図5は、比較例のコマンド取得処理の手順を説明するシーケンス図である。
前提として、I/O SQの作成が完了しているものとする。まず、ホストSoCは、I/O SQにコマンドを書き込み(ステップS51)、メモリバリア命令を実行する(ステップS52)。このメモリバリア命令とは、I/O SQへの書き込みと、I/O SQテールポインタの更新との順序を保証するための命令である。続いて、ホストSoCは、I/O SQテールポインタを更新する(ステップS53)。
メモリシステムは、当該I/O SQテールポインタの更新に基づいて、新規コマンド供給を認識し(ステップS54)、ホストメモリにI/O SQのコマンドの読み込み要求をして(ステップS55)、コマンド情報を取得する(ステップS56)。そして、メモリシステムは、I/O SQのヘッドポインタをインクリメントする(ステップS57)。
比較例によれば、ホストSoCが、I/O SQのテールポインタを更新する処理(図5のステップS53)と、処理順序を保証するための命令(図5のステップS52)を実行する分、メモリシステムがコマンド読み込み処理を開始するまで遅延が発生する。
これに対し、実施形態によれば、無効化要求を検知した上で、メモリシステム100がI/O SQテールポインタを更新するので、ホストSoC3がテールポインタを更新する必要もなく、また、ホストSoC3が、処理順序を保証するための命令を実行する必要もない。よって、比較例に比べ、低レイテンシでコマンドを取得することが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 情報処理システム、2 ホスト、3 ホストSoC、4 ホストメモリ、11 インタフェース部、12 初期設定部、13 初回読み込み部、14 無効化要求検知部、15 コマンド取得部、16 コマンド処理部、110 コントローラ、111 ホストインタフェース、112 バッファインタフェース、113 CPU、114 RAM、115 メモリインタフェース、120 バッファメモリ、130 不揮発性メモリ。

Claims (5)

  1. ホストとキャッシュコヒーレンシを保って接続するインタフェース部と、
    前記ホストによるI/Oコマンド用の発行キューへのコマンド書き込み前に、前記I/Oコマンド用の発行キューを読み込む初回読み込み部と、
    前記初回読み込み部による読み込み後に、前記ホストによる前記I/Oコマンド用の発行キューへのコマンド書き込みに基づく無効化要求を前記インタフェース部を介して検知する無効化要求検知部と、
    前記無効化要求検知部により検知された無効化要求に応じて、前記I/Oコマンド用の発行キューのコマンドを取得するコマンド取得部と、
    を有するメモリシステム。
  2. 前記初回読み込み部は、初期設定における前記I/Oコマンド用の発行キューの設定後に前記読み込みをする、請求項1に記載のメモリシステム。
  3. 前記無効化要求検知部は、前記無効化要求に応じて前記I/Oコマンド用の発行キューのテールポインタを更新する、請求項1に記載のメモリシステム。
  4. 前記初回読み込み部は、前記読み込みした内容を破棄する、請求項1に記載のメモリシステム。
  5. 前記インタフェース部は、CXL規格に準拠し、
    前記初回読み込み部は、CXL.CacheのRdShare要求を前記ホストに送信し、前記I/Oコマンド用の発行キューを読み込む、請求項1に記載のメモリシステム。
JP2020156861A 2020-09-18 2020-09-18 メモリシステム Pending JP2022050757A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020156861A JP2022050757A (ja) 2020-09-18 2020-09-18 メモリシステム
US17/198,676 US11372783B2 (en) 2020-09-18 2021-03-11 Memory system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020156861A JP2022050757A (ja) 2020-09-18 2020-09-18 メモリシステム

Publications (1)

Publication Number Publication Date
JP2022050757A true JP2022050757A (ja) 2022-03-31

Family

ID=80740451

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020156861A Pending JP2022050757A (ja) 2020-09-18 2020-09-18 メモリシステム

Country Status (2)

Country Link
US (1) US11372783B2 (ja)
JP (1) JP2022050757A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914865B2 (en) * 2022-04-11 2024-02-27 Mellanox Technologies, Ltd. Methods and systems for limiting data traffic while processing computer system operations
US20240143228A1 (en) * 2022-11-01 2024-05-02 Western Digital Technologies, Inc. Fast execution of barrier command

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979593B2 (en) * 2005-06-08 2011-07-12 International Business Machines Corporation Non-disruptive library reset method
TWI424435B (zh) * 2009-08-31 2014-01-21 Phison Electronics Corp 對快閃記憶體下達程式化指令的方法、控制器與儲存系統
KR20170032502A (ko) 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
US20190035445A1 (en) 2017-07-31 2019-01-31 CNEX Labs, Inc. a Delaware Corporation Method and Apparatus for Providing Low Latency Solid State Memory Access
US11016890B2 (en) 2018-02-05 2021-05-25 Micron Technology, Inc. CPU cache flushing to persistent memory
US11216404B2 (en) 2019-08-05 2022-01-04 Intel Corporation Mechanism for device interoperability of switches in computer buses
US11201838B2 (en) 2019-09-25 2021-12-14 Intel Corporation System, apparatus and method for increasing efficiency of link communications

Also Published As

Publication number Publication date
US20220092002A1 (en) 2022-03-24
US11372783B2 (en) 2022-06-28

Similar Documents

Publication Publication Date Title
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
US20180275921A1 (en) Storage device
US9122598B2 (en) Semiconductor device and operating method thereof
US9087562B2 (en) Non-volatile storage module having magnetic random access memory (MRAM) with a buffer window
US20130290606A1 (en) Power management for a system having non-volatile memory
US11669451B2 (en) Multi-plane switching of non-volatile memory
US20220245066A1 (en) Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof
CN110941395A (zh) 动态随机存取存储器、内存管理方法、***及存储介质
JP2022050757A (ja) メモリシステム
CN113467704B (zh) 通过智能阈值检测的命令优化
CN113518977A (zh) 基于高速缓存行的扇区的修改来逐出高速缓存行
WO2022204061A1 (en) Supporting multiple active regions in memory devices
US20220374150A1 (en) Adjustable timer component for semiconductor devices
JP2016167215A (ja) メモリ装置
US11366770B2 (en) Storage controller managing completion timing, and operating method thereof
CN114270317B (zh) 层次型存储器***
US20210157527A1 (en) Memory system
CN114341816A (zh) 三层层次型存储器***
US20230367712A1 (en) Tracking memory modifications at cache line granularity
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US20170075630A1 (en) Memory module, electronic device and method
US11734184B2 (en) Effective avoidance of line cache misses
US11822793B2 (en) Complete and fast protection against CID conflict
US20240176735A1 (en) Configuration of Memory Services of a Data Storage Device to a Host System
TWI742961B (zh) 快閃記憶體系統及其快閃記憶體裝置