JP2022050757A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash 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領域にコマンドを登録すると、ストレージデバイスは、これに応じてコマンドを取得する。この場合、低レイテンシでコマンドを取得することが望まれる。
一つの実施形態は、低レイテンシでコマンドを取得することができるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、インタフェース部と、初回読み込み部と、無効化要求検知部と、コマンド取得部と、を備える。インタフェース部は、ホストとキャッシュコヒーレンシを保って接続する。初回読み込み部は、ホストによるI/Oコマンド用の発行キューへのコマンド書き込み前に、I/Oコマンド用の発行キューを読み込む。無効化要求検知部は、初回読み込み部による読み込み後に、ホストによるI/Oコマンド用の発行キューへのコマンド書き込みに基づく無効化要求をインタフェース部を介して検知する。コマンド取得部は、無効化要求検知部により検知された無効化要求に応じて、I/Oコマンド用の発行キューのコマンドを取得する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(実施形態)
図1は、実施形態にかかるメモリシステム100を含む情報処理システム1の構成を示す図である。
図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)
- ホストとキャッシュコヒーレンシを保って接続するインタフェース部と、
前記ホストによるI/Oコマンド用の発行キューへのコマンド書き込み前に、前記I/Oコマンド用の発行キューを読み込む初回読み込み部と、
前記初回読み込み部による読み込み後に、前記ホストによる前記I/Oコマンド用の発行キューへのコマンド書き込みに基づく無効化要求を前記インタフェース部を介して検知する無効化要求検知部と、
前記無効化要求検知部により検知された無効化要求に応じて、前記I/Oコマンド用の発行キューのコマンドを取得するコマンド取得部と、
を有するメモリシステム。 - 前記初回読み込み部は、初期設定における前記I/Oコマンド用の発行キューの設定後に前記読み込みをする、請求項1に記載のメモリシステム。
- 前記無効化要求検知部は、前記無効化要求に応じて前記I/Oコマンド用の発行キューのテールポインタを更新する、請求項1に記載のメモリシステム。
- 前記初回読み込み部は、前記読み込みした内容を破棄する、請求項1に記載のメモリシステム。
- 前記インタフェース部は、CXL規格に準拠し、
前記初回読み込み部は、CXL.CacheのRdShare要求を前記ホストに送信し、前記I/Oコマンド用の発行キューを読み込む、請求項1に記載のメモリシステム。
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)
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)
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 |
-
2020
- 2020-09-18 JP JP2020156861A patent/JP2022050757A/ja active Pending
-
2021
- 2021-03-11 US US17/198,676 patent/US11372783B2/en active Active
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) | 快閃記憶體系統及其快閃記憶體裝置 |