JP2022025037A - コマンド処理方法及びストレージ装置 - Google Patents
コマンド処理方法及びストレージ装置 Download PDFInfo
- Publication number
- JP2022025037A JP2022025037A JP2021119943A JP2021119943A JP2022025037A JP 2022025037 A JP2022025037 A JP 2022025037A JP 2021119943 A JP2021119943 A JP 2021119943A JP 2021119943 A JP2021119943 A JP 2021119943A JP 2022025037 A JP2022025037 A JP 2022025037A
- Authority
- JP
- Japan
- Prior art keywords
- command
- storage device
- queue
- controller
- host
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
【課題】コマンドをプロトコルに追加の際、コントローラの再設計必要なしに、ホストのコマンドを処理し得るコマンド処理方法及びストレージ装置を提供する。
【解決手段】ホストからストレージ装置へのコマンドを処理する方法であり、ストレージ装置の第1コントローラでホストに露出された第1キューを経由しホストから第1コマンドを受信する段階、ストレージ装置で第1コマンドに基づき第2コマンドを生成する段階、ストレージ装置で第2キューを経由しストレージ装置の第2コントローラに第2コマンドを提供する段階、第2コントローラで第2キューから第2コマンドを取得、処理する段階、第1コントローラで第2コマンドの状態に基づきホストに第1コマンドの完了を知らせる信号を転送する段階を備え、第2コマンドを取得、処理する段階はストレージ装置の不揮発性ストレージ媒体にアクセスするためであり、第2コマンドと第2キューはホストに露出されない。
【選択図】 図1
【解決手段】ホストからストレージ装置へのコマンドを処理する方法であり、ストレージ装置の第1コントローラでホストに露出された第1キューを経由しホストから第1コマンドを受信する段階、ストレージ装置で第1コマンドに基づき第2コマンドを生成する段階、ストレージ装置で第2キューを経由しストレージ装置の第2コントローラに第2コマンドを提供する段階、第2コントローラで第2キューから第2コマンドを取得、処理する段階、第1コントローラで第2コマンドの状態に基づきホストに第1コマンドの完了を知らせる信号を転送する段階を備え、第2コマンドを取得、処理する段階はストレージ装置の不揮発性ストレージ媒体にアクセスするためであり、第2コマンドと第2キューはホストに露出されない。
【選択図】 図1
Description
本発明は、ストレージ装置に関し、特に、コマンドがプロトコルに追加されているとしても、コントローラを再設計する必要なしに、ホストのコマンドを処理することができるコマンド処理方法及びストレージ装置に関する。
ホストコンピューティング装置は、ストレージインターフェースプロトコルを使用してSSD(solid state drive)のような不揮発性ストレージ装置にアクセスする。
不揮発性ストレージ装置は、プロトコルを使用して生成されたコマンドを処理するコントローラを含む。
プロトコルの技術が発展するにつれて、より多くの機能(又は特徴)(たとえば、コマンド)が、プロトコルに追加されることが可能である。
不揮発性ストレージ装置は、プロトコルを使用して生成されたコマンドを処理するコントローラを含む。
プロトコルの技術が発展するにつれて、より多くの機能(又は特徴)(たとえば、コマンド)が、プロトコルに追加されることが可能である。
既存のSSDは、SSDコントローラを再設計しない限り、追加された機能(又は特徴)を処理することができないという問題がある。
したがって、コマンドがプロトコルに追加されても、SSDコントローラを再設計する必要なしに、ホストのコマンドを処理することができるSSDコントローラの開発が課題となっている。
したがって、コマンドがプロトコルに追加されても、SSDコントローラを再設計する必要なしに、ホストのコマンドを処理することができるSSDコントローラの開発が課題となっている。
本発明は上記従来のストレージ装置における課題点に鑑みてなされたものであって、本発明の目的は、ストレージ装置向けのコマンドを処理するコマンド処理方法及びストレージ装置を使用して、コマンドがプロトコルに追加されているとしても、コントローラを再設計する必要なしに、ホストのコマンドを処理することができるコマンド処理方法及びストレージ装置を提供することにある。
上記目的を達成するためになされた本発明によるコマンド処理方法は、ホストからストレージ装置へのコマンドを処理する方法であって、前記ストレージ装置の第1コントローラにより、前記ホストに露出された(exposed)第1キューを経由して前記ホストから第1コマンドを受信する段階と、前記ストレージ装置により、前記第1コマンドに基づいて、第2コマンドを生成する段階と、前記ストレージ装置により、第2キューを経由して前記ストレージ装置の第2コントローラに前記第2コマンドを提供する段階と、前記第2コントローラにより、前記第2キューから前記第2コマンドを取得、処理する段階と、前記第1コントローラにより、前記第2コマンドの状態に基づいて、前記ホストに前記第1コマンドの完了を知らせる信号を転送する段階と、を備え、前記第2コマンドを取得、処理する段階は、前記ストレージ装置の不揮発性ストレージ媒体にアクセスするためであり、前記第2コマンドと前記第2キューは、前記ホストに露出されないことを特徴とする。
前記第2コマンドは、第1コマンドの一部を含むことが好ましい。
前記第1コマンドが、オペレーションと、第1及び第2のメモリ範囲と、に関連し、前記第2コマンドが前記オペレーションと前記第1メモリの範囲とを含む場合、前記ストレージ装置により、前記オペレーションと前記第2メモリの範囲を含む第3コマンドを生成する段階と、前記ストレージ装置により、前記第2キューを経由して前記第3コマンドを前記第2コントローラに提供する段階と、前記第2コントローラにより、前記第2キューから前記第3コマンドを取得・処理する段階と、をさらに備え、前記第1コントローラにより前記ホストに、前記第1コマンドの完了を知らせる信号を転送する段階は、前記第2コマンドの状態及び前記第3コマンドの状態に基づくことが好ましい。
前記オペレーションは、前記第1及び第2のメモリ範囲の割り当て解除(deallocating)を含むことが好ましい。
前記第2及び第3コマンドは、同時に取得・処理されることが好ましい。
前記第2コマンドは、前記第1コマンドと異なることが好ましい。
前記第1コマンドが、オペレーションと、第1及び第2のメモリ範囲と、に関連し、前記第2コマンドが前記オペレーションと前記第1メモリの範囲とを含む場合、前記ストレージ装置により、前記オペレーションと前記第2メモリの範囲を含む第3コマンドを生成する段階と、前記ストレージ装置により、前記第2キューを経由して前記第3コマンドを前記第2コントローラに提供する段階と、前記第2コントローラにより、前記第2キューから前記第3コマンドを取得・処理する段階と、をさらに備え、前記第1コントローラにより前記ホストに、前記第1コマンドの完了を知らせる信号を転送する段階は、前記第2コマンドの状態及び前記第3コマンドの状態に基づくことが好ましい。
前記オペレーションは、前記第1及び第2のメモリ範囲の割り当て解除(deallocating)を含むことが好ましい。
前記第2及び第3コマンドは、同時に取得・処理されることが好ましい。
前記第2コマンドは、前記第1コマンドと異なることが好ましい。
前記ストレージ装置が不揮発性ストレージ装置である場合、前記第1コントローラ及び第2コントローラは、不揮発性メモリエクスプレス(non-volatile memory express:NVMe)プロトコルにしたがい、前記第1キューは、前記NVMeプロトコルにしたがう提出キューを含み、前記第1コマンドは、NVMeコマンドを含むことが好ましい。
前記第2コントローラにより、前記ホストに露出されない第1完了キューに第1完了状態を提供する段階、をさらに備えることが好ましい。
前記信号を転送する段階は、前記第1完了状態を前記第1完了キューに処理する段階に基づいて、第2完了状態を第2完了キューに提出する段階を含み、前記第2完了キューは、前記ホストに露出されることが好ましい。
前記第2コントローラにより、前記ホストに露出されない第1完了キューに第1完了状態を提供する段階、をさらに備えることが好ましい。
前記信号を転送する段階は、前記第1完了状態を前記第1完了キューに処理する段階に基づいて、第2完了状態を第2完了キューに提出する段階を含み、前記第2完了キューは、前記ホストに露出されることが好ましい。
上記目的を達成するためになされた本発明によるストレージ装置は、ストレージ装置であって、不揮発性ストレージ媒体と、前記不揮発性ストレージ媒体に接続された1つ以上のプロセッサと、を備え、前記1つ以上のプロセッサのそれぞれは、第1コントローラ及び第1キューを介して、ホストから第1コマンドを受信し、前記第1コマンドに基づいて第2コマンドを生成し、第2キューを介して第2コントローラに前記第2コマンドを提供し、前記第2コントローラを介して、前記第2キューから前記第2コマンドを取得・処理し、前記第2コマンドの状態に基づいて、前記第1コントローラを介して、前記第1コマンドが完了されることを知らせるために、前記ホストに信号を転送するように構成され、前記第1キューは、前記ホストに露出され、前記第2コマンドと前記第2キューは、前記ホストに露出されず、前記1つ以上のプロセッサは、前記第2コマンドを処理するために、前記ストレージ装置の前記不揮発性ストレージ媒体にアクセスするようにさらに構成されることを特徴とする。
本発明に係るコマンド処理方法及びストレージ装置によれば、DSMの割り当て解除コマンドが、それぞれ別途のLBA範囲を有する独立したアンマップコマンドに分割されるため、LBA範囲を並列的に処理することは、ストレージ装置の性能を向上させ、また、各LBA範囲のオーバーラップを確認することは、LBA範囲の受動ロックとロック解除が防止されるためプロセッサのオーバーヘッドを減少させる、という効果がある。
次に、本発明に係るコマンド処理方法及びストレージ装置を実施するための形態の具体例を図面を参照しながら説明する。
以下では、例としての実施形態が添付された図面を参照して、より詳細に説明し、図面のような参照符号は、全体にわたって同一の構成要素を指す。
しかし、本開示は、多様で異なる形態に具現化され、表現された実施形態に限定・構成されているものと解釈されてはならない。
むしろ、これらの実施形態は、例示として提供され、本開示が徹底的かつ完璧に、完全に当業者に本開示の態様と特徴を伝えるようにする。
したがって、通常の技術者が、本開示の態様と特徴を完全に理解するのに必要としない過程、構成要素、及び技術は、示されないことがあり得る。
特に別の意味を示していると明示されない限り、添付された図面と説明全体にわたって同じ参照符号は同じ構成要素を示し、したがって、これらの説明は繰り返されないことがあり得る。なお、図面では、明確さのためにレイヤー、構成要素、及び領域の相対的なサイズは、誇張及び/又は簡略化される。
しかし、本開示は、多様で異なる形態に具現化され、表現された実施形態に限定・構成されているものと解釈されてはならない。
むしろ、これらの実施形態は、例示として提供され、本開示が徹底的かつ完璧に、完全に当業者に本開示の態様と特徴を伝えるようにする。
したがって、通常の技術者が、本開示の態様と特徴を完全に理解するのに必要としない過程、構成要素、及び技術は、示されないことがあり得る。
特に別の意味を示していると明示されない限り、添付された図面と説明全体にわたって同じ参照符号は同じ構成要素を示し、したがって、これらの説明は繰り返されないことがあり得る。なお、図面では、明確さのためにレイヤー、構成要素、及び領域の相対的なサイズは、誇張及び/又は簡略化される。
「第1」、「第2」、「第3」などの用語は、多様な構成要素、領域、レイヤー、及びセクションを説明するために使用することがあり、構成要素、領域、レイヤー、及びセクションは、これらの用語に限定されないことが理解されるだろう。
これらの用語は、構成要素、領域、レイヤー又はセクションを、他の構成要素、領域、レイヤー、又はセクションと区別するためにのみ使用する。
したがって、上述した第1構成要素、領域、レイヤー、又はセクションは、発明の技術的思想から逸脱しない範囲内で、第2構成要素、領域、レイヤー、又はセクションと称される。
これらの用語は、構成要素、領域、レイヤー又はセクションを、他の構成要素、領域、レイヤー、又はセクションと区別するためにのみ使用する。
したがって、上述した第1構成要素、領域、レイヤー、又はセクションは、発明の技術的思想から逸脱しない範囲内で、第2構成要素、領域、レイヤー、又はセクションと称される。
専門用語は、特定の実施形態を説明するためのものであり、発明の概念を限定するために使用されない。
「実質的に」、「約」及びこれと類似した用語は、程度を表す用語ではない、近似したことを表す用語として使用され、測定値又は計算値の固有の偏差を、通常の技術者が認定するようにするためである。
「実質的に」、「約」及びこれと類似した用語は、程度を表す用語ではない、近似したことを表す用語として使用され、測定値又は計算値の固有の偏差を、通常の技術者が認定するようにするためである。
単数形で記述された用語は、文脈上明らかに別の意味を示していると判定されない限り、複数形も含むように意図した。
詳細な説明で使用される「含む(comprise)」という用語は、明示された特徴、整数、段階、オペレーション、及び/又は構成要素の存在を特定するが、1つ以上の他の特徴、整数、段階、オペレーション、構成要素、及び/又はそれらの集合の存在若しくは追加を排除しない。
使用した「及び/又は」という用語は、1つ以上のリストされた要素のすべての組み合わせを含む。
構成要素の前に使用される「少なくとも1つ以上」のような表現は、リストの個々の構成要素を限定せずに、構成要素の全体のリストを限定する。
なお、発明の概念による実施形態を説明するときに使用する「できる」という表現は、「本開示の1つ以上の実施形態を」指す。
また、「望ましい」という用語は、例示又は図面を指すために使用される。前記説明において使用された、「使用」という用語は、「活用」という用語と同じ意味だとみなされうる。
詳細な説明で使用される「含む(comprise)」という用語は、明示された特徴、整数、段階、オペレーション、及び/又は構成要素の存在を特定するが、1つ以上の他の特徴、整数、段階、オペレーション、構成要素、及び/又はそれらの集合の存在若しくは追加を排除しない。
使用した「及び/又は」という用語は、1つ以上のリストされた要素のすべての組み合わせを含む。
構成要素の前に使用される「少なくとも1つ以上」のような表現は、リストの個々の構成要素を限定せずに、構成要素の全体のリストを限定する。
なお、発明の概念による実施形態を説明するときに使用する「できる」という表現は、「本開示の1つ以上の実施形態を」指す。
また、「望ましい」という用語は、例示又は図面を指すために使用される。前記説明において使用された、「使用」という用語は、「活用」という用語と同じ意味だとみなされうる。
構成要素又はレイヤーが「~に」「接続される」、「結合される」、又は「隣接した」という用語として、他の構成要素又はレイヤーに参照される場合、他の構成要素又はレイヤーと直接接続されるか、結合されるか、又は隣接することができ、1つ以上の介在する構成要素又はレイヤーが存在することができるというのが理解されるだろう。
一方、構成要素やレイヤーが「直接に」、「直接接続された」、「直接結合された」、「すぐ隣接した」のような用語として、他の構成要素又はレイヤーに参照される場合、その間には介在する構成要素又はレイヤーが存在しない。
一方、構成要素やレイヤーが「直接に」、「直接接続された」、「直接結合された」、「すぐ隣接した」のような用語として、他の構成要素又はレイヤーに参照される場合、その間には介在する構成要素又はレイヤーが存在しない。
説明の中のすべての数値範囲は、引用した範囲に含まれるすべての同じ数値的精度のサブ範囲を含むように意図した。
たとえば、「1から10まで」という範囲は、記載された最小値1.0と記載された最大値10.0の間の、例えば「2.4から7.6まで」のように、最小値は1.0より大きいか同一であり、最大値は10.0より小さいか同一であるすべてのサブ範囲を含むように意図した。
説明の中の最大数値限定は、すべてのそれより小さいサブ数値限定を含むように意図しており、最小数値限定は、すべてのそれより大きいサブ数値限定を含むように意図した。
たとえば、「1から10まで」という範囲は、記載された最小値1.0と記載された最大値10.0の間の、例えば「2.4から7.6まで」のように、最小値は1.0より大きいか同一であり、最大値は10.0より小さいか同一であるすべてのサブ範囲を含むように意図した。
説明の中の最大数値限定は、すべてのそれより小さいサブ数値限定を含むように意図しており、最小数値限定は、すべてのそれより大きいサブ数値限定を含むように意図した。
ホストコンピューティング装置は、通信プロトコルを使用してSSD(solid state drive)のような不揮発性ストレージ装置にアクセスする。
不揮発性ストレージ装置は、プロトコルを使用して生成されたコマンドを処理するコントローラを含む。
プロトコルのテクノロジーが発展するにつれて、漸進的により多くの機能(又は特徴)(たとえば、コマンド)がプロトコルに追加されることがある。
既存のSSDは、SSDコントローラを再設計しない限り、追加された機能(又は特徴)を処理することができない。
したがって、コマンドがプロトコルに追加されるとしても、SSDコントローラを再設計する必要なく、ホストのコマンドを処理することができるSSDコントローラが存在することが望ましい。
不揮発性ストレージ装置は、プロトコルを使用して生成されたコマンドを処理するコントローラを含む。
プロトコルのテクノロジーが発展するにつれて、漸進的により多くの機能(又は特徴)(たとえば、コマンド)がプロトコルに追加されることがある。
既存のSSDは、SSDコントローラを再設計しない限り、追加された機能(又は特徴)を処理することができない。
したがって、コマンドがプロトコルに追加されるとしても、SSDコントローラを再設計する必要なく、ホストのコマンドを処理することができるSSDコントローラが存在することが望ましい。
一般的に、本発明の実施形態は、通信プロトコルにしたがい、ホストのコマンドを処理するように実施されるストレージ装置に関するものである。
例えば、通信プロトコルは、不揮発性メモリエクスプレス(non-volatile memory express:NVMe)プロトコルであり得る。
しかし、本発明の実施形態は、これに限定されず、当業者が認識することができる他のプロトコルで拡張することも可能である。
一実施形態で、ホストのコマンドは、ストレージ装置上で実行される1つ以上の内部コマンドに分解される。
ストレージ装置は、複数の内部コマンドを持ってくる(フェッチする)か実行する内部コントローラを含む。
一実施形態では、ホストと内部コントローラと間の通信経路が設定されない。
したがって、内部コントローラがホストに露出されない。
例えば、通信プロトコルは、不揮発性メモリエクスプレス(non-volatile memory express:NVMe)プロトコルであり得る。
しかし、本発明の実施形態は、これに限定されず、当業者が認識することができる他のプロトコルで拡張することも可能である。
一実施形態で、ホストのコマンドは、ストレージ装置上で実行される1つ以上の内部コマンドに分解される。
ストレージ装置は、複数の内部コマンドを持ってくる(フェッチする)か実行する内部コントローラを含む。
一実施形態では、ホストと内部コントローラと間の通信経路が設定されない。
したがって、内部コントローラがホストに露出されない。
一実施形態で、ホストは、NVMeインターフェースなどのようなインターフェースを使用してホストに露出されてストレージ装置に接続される、外部提出キューにホストコマンドを伝達する。
ストレージ装置の外部コントローラは、ホストコマンドを持ってくる(フェッチする)か取得することができ、フェッチされたコマンドをストレージ装置のプロセッサに伝達して内部コマンドを生成する。
内部コマンドは、1つ以上の内部提出キューに伝達される。
一実施形態では、内部の提出キューと内部コントローラは、ホストに露出されない。
ストレージ装置の外部コントローラは、ホストコマンドを持ってくる(フェッチする)か取得することができ、フェッチされたコマンドをストレージ装置のプロセッサに伝達して内部コマンドを生成する。
内部コマンドは、1つ以上の内部提出キューに伝達される。
一実施形態では、内部の提出キューと内部コントローラは、ホストに露出されない。
内部コントローラは、内部コマンドを持ってくる(フェッチする)か取得することができ、コマンドがホストから開始されるように、内部コマンドを通信プロトコル(例えば、NVMe protocol)にしたがう標準的なコマンド、又はベンダーの特定のコマンドとしてプロセッサによって実行されるように伝達する。
一実施形態では、内部コマンドは、他のストレージ装置(例えば、並列関係)と、互いに同時に、フェッチ又は取得され、そして実行される。
同時に、及び並列の関係という用語は、順次処理より速い速度で、実質的に同じ時間に及び/又はその他類似したものなどを意味し得る。
一実施形態では、内部コマンドは、他のストレージ装置(例えば、並列関係)と、互いに同時に、フェッチ又は取得され、そして実行される。
同時に、及び並列の関係という用語は、順次処理より速い速度で、実質的に同じ時間に及び/又はその他類似したものなどを意味し得る。
図1は、本発明の一実施形態によるデータのストレージと検索(又は回収、retrieval)システム100の概略構成を示すブロック図である。
データのストレージと検索(又は回収、retrieval)システム100は、同じ又は別のオペレーティングシステムで実施される、1つ以上のホスト装置(102a、102b)(又は以下でホストと呼ばれる)を含む。
1つ以上の複数のホスト装置102a、102bは、ストレージインターフェースバス(106a及び106、全体として106として参照される)を介してデータストレージ装置104に接続される。
たとえば、ストレージインターフェースバス106は、PCIe(Peripheral Component Interconnect express)バスであり得る。
一実施形態では、ホスト装置(102a、102b)は、データストレージ装置104から、ストレージインターフェースバス106を介してストレージインターフェースプロトコルを使用して、データを送信及び受信する。
データのストレージと検索(又は回収、retrieval)システム100は、同じ又は別のオペレーティングシステムで実施される、1つ以上のホスト装置(102a、102b)(又は以下でホストと呼ばれる)を含む。
1つ以上の複数のホスト装置102a、102bは、ストレージインターフェースバス(106a及び106、全体として106として参照される)を介してデータストレージ装置104に接続される。
たとえば、ストレージインターフェースバス106は、PCIe(Peripheral Component Interconnect express)バスであり得る。
一実施形態では、ホスト装置(102a、102b)は、データストレージ装置104から、ストレージインターフェースバス106を介してストレージインターフェースプロトコルを使用して、データを送信及び受信する。
ストレージインターフェースプロトコルは、「http://nvmexpress.org」で利用可能な、2020年3月9日に発表された「NVM Express base specification revision 1.4a」(より以前又は将来の改正を含む)で説明されるNVMeプロトコルであり得る。
NVMeプロトコルは、本実施形態を説明するための例示として使用する。
しかし、当業者は、発明の技術的思想から離れることなく、多様な実施形態を、現在又は将来のNVMeプロトコルと同様のストレージインターフェースプロトコルに拡張することができるということを理解しなければならない。
NVMeプロトコルは、本実施形態を説明するための例示として使用する。
しかし、当業者は、発明の技術的思想から離れることなく、多様な実施形態を、現在又は将来のNVMeプロトコルと同様のストレージインターフェースプロトコルに拡張することができるということを理解しなければならない。
ホスト装置(102a、102b)は、データを処理するように実装されるプロセッサ(108a、108b)を含む。
プロセッサ(108a、108b)は、汎用中央処理装置(central processing unit:CPU)、ASIC(application specific integrated circuit)、FPGA(field programmable gate array)、又はソフトウェア、マイクロコード、及び/若しくはファームウェアで実装された他の形態の処理装置であり得る。
プロセッサ(108a、108b)は、汎用中央処理装置(central processing unit:CPU)、ASIC(application specific integrated circuit)、FPGA(field programmable gate array)、又はソフトウェア、マイクロコード、及び/若しくはファームウェアで実装された他の形態の処理装置であり得る。
一実施形態で、プロセッサ(108a、108b)は、ホストメモリ空間(110a、110b)と接続される。
ホストメモリ空間(110a、110b)は、静的ランダムアクセスメモリ(static random access memory:SRAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)、及び/又はその他同様のものであり得る。
ホストメモリ空間(110a、110b)は、静的ランダムアクセスメモリ(static random access memory:SRAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)、及び/又はその他同様のものであり得る。
アプリケーションプログラムは、プロセッサ(108a、108b)によって実行されるよう、ホストのメモリ空間(110a、110b)に格納される。
アプリケーションプログラムは、ストレージ装置104にデータのストレージや検索(又は回収、retrieval)を要請するか、又はストレージ装置104からデータのストレージや検索(又は回収、retrieval)の要請を受ける。
アプリケーションプログラムは、ストレージ又は検索(又は回収、retrieval)したデータに基づいて出力を生成する。
例えば、出力は、ディスプレイ装置に検索(又は回収、retrieval)されたデータを表示するものである。
一実施形態では、内部コマンドがストレージ装置により、アプリケーションプログラムの要請を処理するために使用される場合、要請は、より速く、より少ないオーバーヘッドで処理されることが可能である。
アプリケーションプログラムは、ストレージ装置104にデータのストレージや検索(又は回収、retrieval)を要請するか、又はストレージ装置104からデータのストレージや検索(又は回収、retrieval)の要請を受ける。
アプリケーションプログラムは、ストレージ又は検索(又は回収、retrieval)したデータに基づいて出力を生成する。
例えば、出力は、ディスプレイ装置に検索(又は回収、retrieval)されたデータを表示するものである。
一実施形態では、内部コマンドがストレージ装置により、アプリケーションプログラムの要請を処理するために使用される場合、要請は、より速く、より少ないオーバーヘッドで処理されることが可能である。
また、ホストメモリ空間(110a、110b)は、1つ以上の外部提出キュー(SQ)(112a、112b)、及び1つ以上の外部完了キュー(CQ)(114a、114b)を包含(又は格納、store)する。
ホスト装置(102a、102b)は、外部提出キュー(112a、112b)を経由してストレージインターフェースコマンドを提出してストレージ装置104がコマンドを実行し、外部完了キュー(114a、114b)を経由して、コマンドが実行された後、ストレージ装置104から完了メッセージを受信する。
一実施形態では、外部提出キュー(112a、112b)及び外部完了キュー(114a、114b)は、ホストメモリ空間(110a、110b)の代わりに(又はそれに加えて)、ストレージ装置104のコントローラメモリバッファ(controller memory buffer:CMB)に含まれることがある。
したがって、ホストメモリ空間(110a、110b)への参照は、CMBへの参照を含むものと理解することが可能である。
2つの中のどちらの場合も、外部提出キュー(112a、112b)及び外部完了キュー(114a、114b)は、ホストに露出され、ホストによりアクセスされる。
ホスト装置(102a、102b)は、外部提出キュー(112a、112b)を経由してストレージインターフェースコマンドを提出してストレージ装置104がコマンドを実行し、外部完了キュー(114a、114b)を経由して、コマンドが実行された後、ストレージ装置104から完了メッセージを受信する。
一実施形態では、外部提出キュー(112a、112b)及び外部完了キュー(114a、114b)は、ホストメモリ空間(110a、110b)の代わりに(又はそれに加えて)、ストレージ装置104のコントローラメモリバッファ(controller memory buffer:CMB)に含まれることがある。
したがって、ホストメモリ空間(110a、110b)への参照は、CMBへの参照を含むものと理解することが可能である。
2つの中のどちらの場合も、外部提出キュー(112a、112b)及び外部完了キュー(114a、114b)は、ホストに露出され、ホストによりアクセスされる。
一実施形態で、ホストメモリ空間(110a、110b)は、PRP(physical region page)/SGL(scatter gather list)のエントリ(116a、116b)、及びその他のデータ(117a、117b)を含む(又は格納する(store))。
たとえば、PRP/SGLエントリ(116a、116b)は、ホストメモリ空間(110a、110b)の物理的メモリ位置を説明し、NVMe読み取りコマンドのためにストレージ装置104から読み取ったデータを書き込み、NVMe書き込みコマンドのためにストレージ装置104に書き込まれたデータを読み取る。
特定のストレージインターフェースコマンドの場合には、論理ブロックアドレス(logical block address:LBA)の範囲は、コマンド自体に範囲を含む代わりに、ホストメモリ空間にデータ(117a、117b)として格納される。
そのようなコマンドの例示では、ホストから提供されたLBA範囲を割り当て解除/マッピング解除するのに使用される、データセットの管理の割り当て解除コマンドがある。
たとえば、PRP/SGLエントリ(116a、116b)は、ホストメモリ空間(110a、110b)の物理的メモリ位置を説明し、NVMe読み取りコマンドのためにストレージ装置104から読み取ったデータを書き込み、NVMe書き込みコマンドのためにストレージ装置104に書き込まれたデータを読み取る。
特定のストレージインターフェースコマンドの場合には、論理ブロックアドレス(logical block address:LBA)の範囲は、コマンド自体に範囲を含む代わりに、ホストメモリ空間にデータ(117a、117b)として格納される。
そのようなコマンドの例示では、ホストから提供されたLBA範囲を割り当て解除/マッピング解除するのに使用される、データセットの管理の割り当て解除コマンドがある。
ストレージ装置104は、SSD(solid state drive)のような不揮発性ストレージ装置であり得る。
ストレージ装置104は、通信インターフェース118、NVMeサブシステム120、及び装置コントローラ122を含む。
NVMeサブシステム120と装置コントローラ122は、別個のモジュールとして表しているが、NVMeサブシステム120と装置コントローラ122の機能は、単一のモジュールとして統合することも可能である。
一実施形態では、通信インターフェース118は、ホスト装置(102a、102b)からストレージ装置104への通信と、ストレージ装置104からホスト装置(102a、102b)への通信を可能にする、PCIeポート及びエンドポイントを含む。
ストレージ装置104は、通信インターフェース118、NVMeサブシステム120、及び装置コントローラ122を含む。
NVMeサブシステム120と装置コントローラ122は、別個のモジュールとして表しているが、NVMeサブシステム120と装置コントローラ122の機能は、単一のモジュールとして統合することも可能である。
一実施形態では、通信インターフェース118は、ホスト装置(102a、102b)からストレージ装置104への通信と、ストレージ装置104からホスト装置(102a、102b)への通信を可能にする、PCIeポート及びエンドポイントを含む。
NVMeサブシステム120は、1つ以上の外部コントローラ(124a、124b)及び1つ以上の内部コントローラ126を含むが、これに限定されない。
外部及び内部コントローラ(124a、124b、126)は、ASIC(application-specific integrated circuit)のような、1つ以上のプロセッサを使用して実装される。
一実施形態では、1つ以上の外部コントローラ(124a、124b)は、PCIeインターフェース118を介してホストに露出され得、外部提出キュー及び外部完了キュー(112a、112b及び114a、114b)のキューオペレーションを処理するために呼び出される。
たとえば、特定の外部コントローラ(124a、124b)は、特定の外部提出キュー(112a、112b)のストレージインターフェースコマンドを持ってくる(フェッチする)ことができ、要請されたコマンド(例えば、要請されたコマンドが完了したことを示すインディケーション)の状態に基づいて、対応される外部完了キュー(114a、114b)に完了状態を配置する。
外部及び内部コントローラ(124a、124b、126)は、ASIC(application-specific integrated circuit)のような、1つ以上のプロセッサを使用して実装される。
一実施形態では、1つ以上の外部コントローラ(124a、124b)は、PCIeインターフェース118を介してホストに露出され得、外部提出キュー及び外部完了キュー(112a、112b及び114a、114b)のキューオペレーションを処理するために呼び出される。
たとえば、特定の外部コントローラ(124a、124b)は、特定の外部提出キュー(112a、112b)のストレージインターフェースコマンドを持ってくる(フェッチする)ことができ、要請されたコマンド(例えば、要請されたコマンドが完了したことを示すインディケーション)の状態に基づいて、対応される外部完了キュー(114a、114b)に完了状態を配置する。
一実施形態で、特定の外部コントローラ(124a、124b)は、1つ以上の名前空間(name spaces)と接続される。
この場合に、ストレージ装置104の論理空間(logical space)は、1つ以上の論理空間(logical spaces)/名前空間(name spaces)に分割され、名前空間(name spaces)のそれぞれは、固有な名前空間識別子(namespace ID:NSID)により識別される。
たとえば、4Kの論理ブロックを使用する1TBのストレージ装置は、それぞれ512GB、256GB、256GBの容量を有する3つの名前空間(name space)で割り当てられていると仮定することができる。
ホスト装置(102a、102b)から提供されるコマンドは、NSIDを経由して識別される特定の名前空間(name space)に向けられる。
この場合に、ストレージ装置104の論理空間(logical space)は、1つ以上の論理空間(logical spaces)/名前空間(name spaces)に分割され、名前空間(name spaces)のそれぞれは、固有な名前空間識別子(namespace ID:NSID)により識別される。
たとえば、4Kの論理ブロックを使用する1TBのストレージ装置は、それぞれ512GB、256GB、256GBの容量を有する3つの名前空間(name space)で割り当てられていると仮定することができる。
ホスト装置(102a、102b)から提供されるコマンドは、NSIDを経由して識別される特定の名前空間(name space)に向けられる。
一実施形態で、1つ以上の内部コントローラ126は、ホスト装置(102a、102b)から露出されず(例えば、隠されていて)、アクセスできない。
この場合に、ホスト装置(102a、102b)と内部コントローラ126との間に通信インターフェース(例えば、PCIeインターフェース)が提供されない。
一実施形態によると、内部コントローラ126は、外部コントローラ(124a、124b)の機能を模倣することができる。
この場合には、内部コントローラ126は、まるで外部コントローラ(124a、124b)であるかのように装置コントローラ122と相互作用することができる。
この場合に、ホスト装置(102a、102b)と内部コントローラ126との間に通信インターフェース(例えば、PCIeインターフェース)が提供されない。
一実施形態によると、内部コントローラ126は、外部コントローラ(124a、124b)の機能を模倣することができる。
この場合には、内部コントローラ126は、まるで外部コントローラ(124a、124b)であるかのように装置コントローラ122と相互作用することができる。
一実施形態で、ストレージ装置104は、1つ以上の内部提出キュー130、及び1つ以上の内部完了キュー132を格納する内部CMB128を含む。
内部CMB128は、その他のデータ134(例えば、内部データバッファ)及び内部PRP/SGLエントリ136を含む(又は格納(store))。
一実施形態で、内部コントローラ126は、内部CMB128にアクセスして、装置コントローラ122から提出された内部コマンドを持って来て(フェッチして)処理する。
内部CMB128のコンテンツ及び内部コマンドの処理は、ホストに露出されず(例えば、隠されていて)、アクセスできない。
内部CMB128は、その他のデータ134(例えば、内部データバッファ)及び内部PRP/SGLエントリ136を含む(又は格納(store))。
一実施形態で、内部コントローラ126は、内部CMB128にアクセスして、装置コントローラ122から提出された内部コマンドを持って来て(フェッチして)処理する。
内部CMB128のコンテンツ及び内部コマンドの処理は、ホストに露出されず(例えば、隠されていて)、アクセスできない。
一実施形態で、装置コントローラ122は、外部及び内部コントローラ(124a、124b、126)と相互作用し、ホスト装置(102a、102b)から要請されたコマンドを実行する。
装置コントローラ122は、1つ以上のプロセッサ140及びメディアインターフェース(media interface)142を含むが、これに限定されない。
1つ以上のプロセッサ140は、外部と内部コントローラ((124a、124b)、126)との間でコマンドを処理し、ストレージ装置104のオペレーションを管理するためのコンピュータ読み取り可能なコマンドを実行するように構成され得る。
コンピュータ読み取り可能なコマンドは、1つ以上のプロセッサ140(たとえば、ファームウェアコード)によって実行される。
装置コントローラ122は、1つ以上のプロセッサ140及びメディアインターフェース(media interface)142を含むが、これに限定されない。
1つ以上のプロセッサ140は、外部と内部コントローラ((124a、124b)、126)との間でコマンドを処理し、ストレージ装置104のオペレーションを管理するためのコンピュータ読み取り可能なコマンドを実行するように構成され得る。
コンピュータ読み取り可能なコマンドは、1つ以上のプロセッサ140(たとえば、ファームウェアコード)によって実行される。
1つの例示では、1つ以上のプロセッサに140は、外部及び内部コントローラ(124a、124b、126)と相互作用して、NVMメディア(NVM media)144への、又はNVMメディア144からの書き込み又は読み取りのコマンドを受信するように構成され得る。
1つ以上のプロセッサ140は、メディアインターフェース(media interface)142を介してNVMメディア144と相互作用して、書き込み又は読み取りの動作を効率的に行う。
NVMメディア144は、フラッシュメモリのような、1つ以上のタイプの不揮発性メモリを含み得る。
1つ以上のプロセッサ140は、メディアインターフェース(media interface)142を介してNVMメディア144と相互作用して、書き込み又は読み取りの動作を効率的に行う。
NVMメディア144は、フラッシュメモリのような、1つ以上のタイプの不揮発性メモリを含み得る。
一実施形態で、ストレージ装置104は、短時間のストレージ、又はストレージ装置104の動作中の一時メモリのための内部メモリ138をさらに含む。
内部メモリ138は、DRAM(dynamic random access memory)、SRAM(static random access memory)、及び/又はDTCM(data tightly coupled memory)を含み得る。
内部メモリ138は、内部提出キュー130、内部完結キュー132、データ134、内部PRP/SGLエントリ136、及び/又はその他類似したもののような、内部CMB128に格納されたデータの一部又は全部を格納するために、内部CMB128の代わりに、又は追加的に使用される。
したがって、内部CMB128への参照は、内部メモリ138への参照を含むものと理解することが可能である。
内部メモリ138は、DRAM(dynamic random access memory)、SRAM(static random access memory)、及び/又はDTCM(data tightly coupled memory)を含み得る。
内部メモリ138は、内部提出キュー130、内部完結キュー132、データ134、内部PRP/SGLエントリ136、及び/又はその他類似したもののような、内部CMB128に格納されたデータの一部又は全部を格納するために、内部CMB128の代わりに、又は追加的に使用される。
したがって、内部CMB128への参照は、内部メモリ138への参照を含むものと理解することが可能である。
図2は、本発明の一実施形態によるストレージインターフェースプロトコル、又はベンダー定義のコマンドと関連するコマンドを提出・処理するための多様なモジュールを説明するためのレイアウト図である。
多様なモジュールは、外部及び/又は内部コントローラ(124a、124b、126)によってホスティングされる(hosted)。
また、モジュールのうち、1つ以上が分離された機能的な部分であると仮定するが、当業者は、発明の技術的思想の中核から逸脱せずに、モジュールの機能が1つのモジュールに統合又は結合されるか、又はサブモジュールに、さらに細分化され得ることを認識するだろう。
多様なモジュールは、外部及び/又は内部コントローラ(124a、124b、126)によってホスティングされる(hosted)。
また、モジュールのうち、1つ以上が分離された機能的な部分であると仮定するが、当業者は、発明の技術的思想の中核から逸脱せずに、モジュールの機能が1つのモジュールに統合又は結合されるか、又はサブモジュールに、さらに細分化され得ることを認識するだろう。
一実施形態で、コマンドモジュール200とPRP/SGLフェッチモジュール202のインスタンス(instances)は、内部及び外部コントローラ(124a、124b、126)に含まれ得る。
たとえば、コマンドモジュール200は、コマンド仲裁(arbitration)サブモジュール、コマンドフェッチサブモジュール、コマンドパーサー(parser)サブモジュール、及びコマンドディスパッチャーサブモジュールを含み得る。
コマンドフェッチサブモジュールは、外部提出キュー(112a、112b)からホストコマンドを持ってくるように、又は内部提出キュー130から内部コマンドを持ってくるように(フェッチするように)実施することが可能である。
コマンド仲裁サブモジュールは、コマンドを持ってくる(フェッチする)提出キューを選ぶためには、多様なコントローラの間、及び多様で選択されたコントローラの提出キューの間を仲裁するための仲裁バーストポリシー(arbitration burst policy)を呼び出すように構成される。
たとえば、コマンドモジュール200は、コマンド仲裁(arbitration)サブモジュール、コマンドフェッチサブモジュール、コマンドパーサー(parser)サブモジュール、及びコマンドディスパッチャーサブモジュールを含み得る。
コマンドフェッチサブモジュールは、外部提出キュー(112a、112b)からホストコマンドを持ってくるように、又は内部提出キュー130から内部コマンドを持ってくるように(フェッチするように)実施することが可能である。
コマンド仲裁サブモジュールは、コマンドを持ってくる(フェッチする)提出キューを選ぶためには、多様なコントローラの間、及び多様で選択されたコントローラの提出キューの間を仲裁するための仲裁バーストポリシー(arbitration burst policy)を呼び出すように構成される。
コマンドパーサーサブモジュールは、コマンドフォーマット、NSID有効性、予約状態、LBA検査が必要であるかの可否、名前空間(name space)形式による保護情報の有効性、及び/又はその他類似したものを検査・確認するために、外部又は内部コントローラに提出されたコマンドを構文解析(parse)するように構成され得る。
また、コマンドパーサーサブモジュールは、プログラミングされた設定情報をベースに、コマンドに対するLBAオーバーラップ検査が必要な場合には、コマンドを伝達するために、LBAオーバーラップチェッカー(図示せず)とインターフェースするように構成され得る。
また、コマンドパーサーサブモジュールは、システムの性能を向上させるために、ホストサブシステムをバイパス(迂回)して、メディアインターフェース(media interface)にコマンドを直接伝達する必要があるか否かを決定する。
また、コマンドパーサーサブモジュールは、プログラミングされた設定情報をベースに、コマンドに対するLBAオーバーラップ検査が必要な場合には、コマンドを伝達するために、LBAオーバーラップチェッカー(図示せず)とインターフェースするように構成され得る。
また、コマンドパーサーサブモジュールは、システムの性能を向上させるために、ホストサブシステムをバイパス(迂回)して、メディアインターフェース(media interface)にコマンドを直接伝達する必要があるか否かを決定する。
LBAオーバーラップチェッカーは、ホスト又は内部コマンドが現在、新たに到達したコマンドと同じ範囲で実行されているか否かをチェックする役割を行う。
答えが「はい」の場合、LBAオーバーラップチェッカーは、以前に持ってきた(フェッチされた)、現在処理中のコマンドが完了するまで、新たに到達したコマンドを保持する。
コマンドディスパッチャー(dispatcher)ハードウェアサブモジュールは、コマンドのタイプ(例えば、実行、未実行、又は管理)に基づいて、多様なプロセッサにコマンドを分配する役割を行う。
答えが「はい」の場合、LBAオーバーラップチェッカーは、以前に持ってきた(フェッチされた)、現在処理中のコマンドが完了するまで、新たに到達したコマンドを保持する。
コマンドディスパッチャー(dispatcher)ハードウェアサブモジュールは、コマンドのタイプ(例えば、実行、未実行、又は管理)に基づいて、多様なプロセッサにコマンドを分配する役割を行う。
PRP/SGLフェッチモジュール202は、PRP/SGLエントリ(116a、116b)をホストメモリ(外部コントローラ(124a、124b)の場合)から持ってくる(フェッチするか)、又は内部PRP/SGLエントリ136を内部CMB128(内部コントローラ126の場合)から持ってくるように(フェッチするように)実施される。
一実施形態で、コマンドモジュール200及びPRP/SGLフェッチモジュール202は、フェッチコマンドとPRP/SGLエントリ(116a、116b)のストレージインターフェースプロトコルに従う。
一実施形態で、コマンドモジュール200及びPRP/SGLフェッチモジュール202は、フェッチコマンドとPRP/SGLエントリ(116a、116b)のストレージインターフェースプロトコルに従う。
一実施形態で、ホスト装置(102a、102b)は、ストレージインターフェースコマンドを外部提出キュー(112a、112b)の内のいずれか1つに提供する。
外部コントローラ(124a、124b)の内のいずれか1つのコマンドモジュール200(例えば、コマンドフェッチサブモジュール)は、付加的な処理のために外部提出キュー(112a、112b)からコマンドを持ってくる(フェッチする)か、取得し、装置コントローラ122にコマンドを伝達する。
ホストによって提供されたコマンドのタイプに応じて、装置コントローラ122は、LBA範囲のようなフェッチコマンドを処理するのに必要なデータ(117a、117b)を読み取るために、ホストメモリ(110a、110b)にアクセスする。
一実施形態では、ホスト装置(102a、102b)によって提供されたコマンドが、データ伝達コマンドである場合には、データ伝達コマンドに関連するデータを読み書きするためには、外部コントローラ(124a、124b)と接続するPRP/SGLフェッチモジュール202は、PRP/SGLエントリ(116a、116b)をホストメモリ(110a、110b)又はCMBから持ってくる(フェッチする)。
外部コントローラ(124a、124b)の内のいずれか1つのコマンドモジュール200(例えば、コマンドフェッチサブモジュール)は、付加的な処理のために外部提出キュー(112a、112b)からコマンドを持ってくる(フェッチする)か、取得し、装置コントローラ122にコマンドを伝達する。
ホストによって提供されたコマンドのタイプに応じて、装置コントローラ122は、LBA範囲のようなフェッチコマンドを処理するのに必要なデータ(117a、117b)を読み取るために、ホストメモリ(110a、110b)にアクセスする。
一実施形態では、ホスト装置(102a、102b)によって提供されたコマンドが、データ伝達コマンドである場合には、データ伝達コマンドに関連するデータを読み書きするためには、外部コントローラ(124a、124b)と接続するPRP/SGLフェッチモジュール202は、PRP/SGLエントリ(116a、116b)をホストメモリ(110a、110b)又はCMBから持ってくる(フェッチする)。
一実施形態で、装置コントローラ122は、持ってきた(フェッチされた)コマンドに基づいて、1つ以上の内部コマンドを生成するように構成される。
1つ以上の内部コマンドは、持ってきた(フェッチされた)コマンド(たとえば、持ってきた(フェッチされた)コマンドのオペレーションコード(operation code))の一部を含み得る。
一実施形態で、1つ以上の内部コマンドは、持ってきた(フェッチされた)コマンドとは異なる。
たとえば、内部コマンドは、持ってきた(フェッチされた)コマンドのオペレーションコードと異なるオペレーションコードを含む。
1つ以上の内部コマンドは、持ってきた(フェッチされた)コマンド(たとえば、持ってきた(フェッチされた)コマンドのオペレーションコード(operation code))の一部を含み得る。
一実施形態で、1つ以上の内部コマンドは、持ってきた(フェッチされた)コマンドとは異なる。
たとえば、内部コマンドは、持ってきた(フェッチされた)コマンドのオペレーションコードと異なるオペレーションコードを含む。
装置コントローラ122は、ホスト装置(102a、102b)がNVMeコマンドを外部提出キュー(112a、112b)に提供する方法と同様に、内部提出キュー130に1つ以上の内部コマンドを提供することができる。
例えば、装置コントローラ122は、ハードウェアドアベル(doorbell)レジスタをアップデートし、内部コントローラ126のコマンドモジュール200に1つ以上の内部コマンドが提出されたことを知らせる。
一実施形態で、ホスト装置(102a、102b)から提供されたコマンドは、複数の内部コマンドに分割される。
一実施形態で、複数の内部コマンドは、1つ以上の内部コントローラ126により、互いに(例えば、並列に)同時に提出・処理されるため、ストレージ装置104の性能が向上する。
例えば、装置コントローラ122は、ハードウェアドアベル(doorbell)レジスタをアップデートし、内部コントローラ126のコマンドモジュール200に1つ以上の内部コマンドが提出されたことを知らせる。
一実施形態で、ホスト装置(102a、102b)から提供されたコマンドは、複数の内部コマンドに分割される。
一実施形態で、複数の内部コマンドは、1つ以上の内部コントローラ126により、互いに(例えば、並列に)同時に提出・処理されるため、ストレージ装置104の性能が向上する。
一実施形態で、内部コマンドがデータ伝達を要請する場合には、内部コントローラ126のPRP/SGLフェッチモジュール202は、内部コマンドに関連するデータを読み書きするためには、内部PRP/SGLエントリ136を内部CMB128から持ってくる(フェッチする)。
内部PRP/SGLエントリ136は、装置コントローラ122から生成される。
一実施形態で、NVMメディア144からの伝達を要請する読み取りオペレーションの場合には、内部PRP/SGLエントリ136は、デスティネーション(目的地)バッファ(destination buffer)204に関するものであり得る。
NVMメディア144に伝達しなければならない書き込みのオペレーションである場合、内部PRP/SGLエントリ136は、ソースバッファ206であり得る。
内部PRP/SGLエントリ136は、装置コントローラ122から生成される。
一実施形態で、NVMメディア144からの伝達を要請する読み取りオペレーションの場合には、内部PRP/SGLエントリ136は、デスティネーション(目的地)バッファ(destination buffer)204に関するものであり得る。
NVMメディア144に伝達しなければならない書き込みのオペレーションである場合、内部PRP/SGLエントリ136は、ソースバッファ206であり得る。
一実施形態で、転送キューモジュール(transfer queue module:TQモジュール)208は、コマンドタイプ(例えば、読み取り又は書き込み)に基づいて、内部要請を処理してデータを中間バッファ(図示されず)に伝達したり、中間バッファから伝達されたりするように構成される。
たとえば、内部の読み取り又は書き込みのオペレーションに対して、伝達キューモジュール208は、転送記述子(TR descriptor:transfer descriptor)及びDMA記述子(direct memory access descriptor)を含む、ダイレクトメモリアクセス(direct memory access)を制御するための特定のデータ構造に関する情報を装置コントローラ122から取得する。
たとえば、内部の読み取り又は書き込みのオペレーションに対して、伝達キューモジュール208は、転送記述子(TR descriptor:transfer descriptor)及びDMA記述子(direct memory access descriptor)を含む、ダイレクトメモリアクセス(direct memory access)を制御するための特定のデータ構造に関する情報を装置コントローラ122から取得する。
転送記述子は、データ伝達のためのコマンドタイプ(例えば、読み取り又は書き込み)を含む。
DMA記述子は、コマンドのタイプに対する中間バッファ上に情報を含む。
たとえば、コマンドタイプが内部リードコマンドである場合には、中間バッファは、NVMメディア144から読み取ったデータを一時的に保持するために、メディアインターフェース(media interface)142によって使用される中間読み取りバッファであり得る。
コマンドタイプが内部リード(read)コマンドである場合には、中間バッファは、NVMメディア144から書き込まれたデータを一時的に保持するために、メディアインターフェース142によって使用される中間書き込みバッファであり得る
DMA記述子は、コマンドのタイプに対する中間バッファ上に情報を含む。
たとえば、コマンドタイプが内部リードコマンドである場合には、中間バッファは、NVMメディア144から読み取ったデータを一時的に保持するために、メディアインターフェース(media interface)142によって使用される中間読み取りバッファであり得る。
コマンドタイプが内部リード(read)コマンドである場合には、中間バッファは、NVMメディア144から書き込まれたデータを一時的に保持するために、メディアインターフェース142によって使用される中間書き込みバッファであり得る
一実施形態で、DMA管理モジュール210は、DMA記述子だけではなく、内部PRP/SGLエントリ136を受信し、ソースバッファ206からNVMメディア144に(DMA記述子に提供された中間バッファを介して)データを伝達するか、又はNVMメディア144から(DMA記述子に提供された中間バッファを介して)デスティネーションバッファ204に内部読み取りのオペレーションのために伝達する。
図3は、本発明の一実施形態による、内部提出キュー130の提出キューエントリ(submission queue entry:SQE)として格納された内部コマンドを示す図である。
一実施形態で、内部コマンドは、外部コマンドを生成するためのストレージインターフェースプロトコルに基づいて生成される。
これと関連し、内部コマンドのサイズは、64byteの可能性があり、コマンド識別子(identifier:ID)300、オペレーションコード(operation code:Opcode)302、名前空間ID(name space ID:NSID)304、バッファアドレス(buffer address)306、及びコマンドパラメータ308を含む。
コマンド識別子300は、内部コマンドが提出される内部提出キュー130のコマンドIDであり得る。
一実施形態で、内部コマンドは、外部コマンドを生成するためのストレージインターフェースプロトコルに基づいて生成される。
これと関連し、内部コマンドのサイズは、64byteの可能性があり、コマンド識別子(identifier:ID)300、オペレーションコード(operation code:Opcode)302、名前空間ID(name space ID:NSID)304、バッファアドレス(buffer address)306、及びコマンドパラメータ308を含む。
コマンド識別子300は、内部コマンドが提出される内部提出キュー130のコマンドIDであり得る。
オペレーションコード(operation code:Opcode)302は、実行される特定のコマンドを識別する。
一実施形態で、オペレーションコード302は、NVMコマンド(たとえば、読み取り、書き込み、管理、データセットの管理、又はベンダーの特定のコマンド)を識別するNVMeのオペレーションコード302である。
いくつかの実施形態では、オペレーションコード302は、独自に内部コントローラ126にアクセスする、内部コマンドセットの新しいコマンドを識別する。
一実施形態で、オペレーションコード302は、NVMコマンド(たとえば、読み取り、書き込み、管理、データセットの管理、又はベンダーの特定のコマンド)を識別するNVMeのオペレーションコード302である。
いくつかの実施形態では、オペレーションコード302は、独自に内部コントローラ126にアクセスする、内部コマンドセットの新しいコマンドを識別する。
NSID304は、オペレーションコード302により識別されたコマンドが動作する名前空間(name space)を識別する。
バッファアドレス306は、内部CMB128の内部PRP/SGLエントリ136(又はPRP/SGLエントリを指すポインタ)を含む。
実行と関連するコマンドに関連するいくつかのパラメータは、コマンドパラメータ308として格納される。
バッファアドレス306は、内部CMB128の内部PRP/SGLエントリ136(又はPRP/SGLエントリを指すポインタ)を含む。
実行と関連するコマンドに関連するいくつかのパラメータは、コマンドパラメータ308として格納される。
図4は、本発明の一実施形態にしたがった、所定の名前空間において与えられた論理ブロックアドレスを割り当て解除(マップ解除)するためのデータセット管理(dataset management:DSM)コマンドを処理することを説明するためのフローチャートである。
プロセスが開始すると、ステップS400で、プロセッサ140によって前処理(pre-processing)を行うために、外部コントローラ(124a、124b)の内の1つが外部提出キュー(112a、112b)からコマンドを持ってきて(フェッチして)、装置コントローラ122に伝達する。
プロセスが開始すると、ステップS400で、プロセッサ140によって前処理(pre-processing)を行うために、外部コントローラ(124a、124b)の内の1つが外部提出キュー(112a、112b)からコマンドを持ってきて(フェッチして)、装置コントローラ122に伝達する。
ステップS402で、プロセッサ140は、LBA範囲をホストメモリ(110a、110b)からストレージ装置の内部メモリ138に伝達するために、例えば、ストレージインターフェースバス106を介してホストダイレクトメモリアクセスのオペレーションを開始することを含む、特定の前処理作業を実行する。
なお、プロセッサ140は、隣接していないLBA範囲の総数を識別するために、LBA範囲をパース(parse)する。
なお、プロセッサ140は、隣接していないLBA範囲の総数を識別するために、LBA範囲をパース(parse)する。
ステップS404で、プロセッサ140は、プロセッサによって識別された隣接していないLBA範囲のそれぞれに対する内部アンマップ(unmap)コマンドを生成する。
一実施形態で、アンマップコマンドは、ストレージインターフェースプロトコルの一部ではない、コマンドである。
プロセッサ140は、1つ以上の内部提出キュー130に内部アンマップコマンドを提供する。
一実施形態で、アンマップコマンドは、ストレージインターフェースプロトコルの一部ではない、コマンドである。
プロセッサ140は、1つ以上の内部提出キュー130に内部アンマップコマンドを提供する。
LBA範囲のそれぞれに提供されるアンマップコマンドは、ステップS406~ステップS412で処理される。
単に処理が1つのLBA範囲に対する1つのアンマップコマンドの関係で記述しているが、他のLBA範囲に提供された他のアンマップコマンドもまた、ステップS406~ステップS412に基づいて、並列に処理されることがあることに留意しなければならない。
単に処理が1つのLBA範囲に対する1つのアンマップコマンドの関係で記述しているが、他のLBA範囲に提供された他のアンマップコマンドもまた、ステップS406~ステップS412に基づいて、並列に処理されることがあることに留意しなければならない。
ステップS406で、内部コントローラ126は、内部提出キュー130からアンマップコマンドを持ってきて(フェッチして)処理する。
内部コントローラ126のコマンドモジュール200は、内部提出キュー130から、アンマップコマンドを持ってくる(フェッチする)ために呼び出される。
一実施形態で、アンマップコマンドの処理が、データ転送を要請しないことを考慮するとき、内部コントローラ126のPRP/SGLフェッチモジュール202は、呼び出されずに、そして、どのような内部PRP/SGLリスト136も生成されない。
内部コントローラ126のコマンドモジュール200は、内部提出キュー130から、アンマップコマンドを持ってくる(フェッチする)ために呼び出される。
一実施形態で、アンマップコマンドの処理が、データ転送を要請しないことを考慮するとき、内部コントローラ126のPRP/SGLフェッチモジュール202は、呼び出されずに、そして、どのような内部PRP/SGLリスト136も生成されない。
ステップS408で、内部コントローラ126(例えば、LBAオーバーラップチェッカー)は、内部アンマップコマンドのLBA範囲がホスト装置(102a、102b)に代わって処理されるコマンドのLBAとオーバーラップ(overlap)するか否かを判定する。
たとえば、アンマップコマンドのLBA範囲は、ホスト126の読み取りのオペレーションの対象であるLBAアドレスとオーバーラップする。
オーバーラップが検出された場合、内部コントローラ126は、LBA範囲のアンマップが進行する前に、ホストコマンドが完了されるまで待機する。
たとえば、アンマップコマンドのLBA範囲は、ホスト126の読み取りのオペレーションの対象であるLBAアドレスとオーバーラップする。
オーバーラップが検出された場合、内部コントローラ126は、LBA範囲のアンマップが進行する前に、ホストコマンドが完了されるまで待機する。
しかし、オーバーラップが検出されなければ、ステップS410で、内部コントローラ126は、1つ以上のコマンドを装置コントローラ122を介してメディアインターフェース142に転送して、NVMメディア144上でLBA範囲の実際のアンマップオペレーションを実施する。
コマンドパーサーサブモジュールは、また、アンマップコマンドの確認や検査を、例えば、コマンドフォーマット、NSID有効性、予約状態、LBA確認が必要であるか否かの可否、名前空間のフォーマットに基づいた保護情報の有効性及び/又はその他類似したものの確認や検査のような1つ以上のコマンドを、メディアインターフェース142に伝達する前に、実行するために呼び出されることがあるのが理解されるだろう。
コマンドパーサーサブモジュールは、また、アンマップコマンドの確認や検査を、例えば、コマンドフォーマット、NSID有効性、予約状態、LBA確認が必要であるか否かの可否、名前空間のフォーマットに基づいた保護情報の有効性及び/又はその他類似したものの確認や検査のような1つ以上のコマンドを、メディアインターフェース142に伝達する前に、実行するために呼び出されることがあるのが理解されるだろう。
アンマップオペレーションの完了状態が判定されれば、ステップS412で、内部コントローラ126は、内部完結エントリを、内部アンマップコマンドが提出された内部提出キュー130と関連した内部完結キュー132に提供する。
ステップS414で、プロセッサ140は、提出されたDSMの割り当て解除コマンドのすべてのLBA範囲が割り当て解除(例えば、内部アンマップコマンドの状態に基づいて)されたか否かを判断する。
もし答えが「はい」ならば、ステップS416において、外部コントローラ(124a、124b)は、外部完結エントリを、DSM割り当て解除コマンドが提出された外部提出キュー(112a、112b)に対応する外部完結キュー(114a、114b)に提供する。
もし答えが「はい」ならば、ステップS416において、外部コントローラ(124a、124b)は、外部完結エントリを、DSM割り当て解除コマンドが提出された外部提出キュー(112a、112b)に対応する外部完結キュー(114a、114b)に提供する。
本発明の実施形態によるDSM割り当て解除コマンドの処理は、データのストレージ装置104の機能に技術的な改善を提供することに留意しなければならない。
例えば、DSMの割り当て解除コマンドが、それぞれ別途のLBA範囲を有する独立したアンマップコマンドに分割されるため、LBA範囲を並列的に処理することは、ストレージ装置の性能を向上させることができる。
なお、各LBA範囲のオーバーラップ(例えば、ハードウェアを介して)を確認することは、LBA範囲の受動ロックとロック解除が防止されるため、プロセッサ140のオーバーヘッドを減少させる。
なお、ストレージ装置は、2つのサブシステム(例えば、ホスト装置(102a、102b)と相互作用するホストサブシステム、及びNVMメディア144と相互作用するフラッシュサブシステム)を含む実施形態において、ファームウェア実行の専用プロセッサ(例えば、プロセッサ140)を使用すれば、内部コマンドがホストサブシステムの多くの介入なしに処理されることが可能であるため、ホストサブシステム(例えば、プロセッサ140で実行されるファームウェア)のオーバーヘッドが減少することが可能である。
例えば、DSMの割り当て解除コマンドが、それぞれ別途のLBA範囲を有する独立したアンマップコマンドに分割されるため、LBA範囲を並列的に処理することは、ストレージ装置の性能を向上させることができる。
なお、各LBA範囲のオーバーラップ(例えば、ハードウェアを介して)を確認することは、LBA範囲の受動ロックとロック解除が防止されるため、プロセッサ140のオーバーヘッドを減少させる。
なお、ストレージ装置は、2つのサブシステム(例えば、ホスト装置(102a、102b)と相互作用するホストサブシステム、及びNVMメディア144と相互作用するフラッシュサブシステム)を含む実施形態において、ファームウェア実行の専用プロセッサ(例えば、プロセッサ140)を使用すれば、内部コマンドがホストサブシステムの多くの介入なしに処理されることが可能であるため、ホストサブシステム(例えば、プロセッサ140で実行されるファームウェア)のオーバーヘッドが減少することが可能である。
上述した1つ以上のプロセッサは、例えば、ASIC(application integrated circuits)のような汎用/特殊目的CPU(central processing units)、DSP(digital signal processors)、GPU(graphics processing units)、及び/又はFPGA(field programmable gate arrays)のようなプログラム可能な論理装置を含み得ることに留意しなければならない。
本発明で使用されるプロセッサへの各機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行される。
プロセッサは、単一のプリント回路基板(printed circuit board:PCB)又は複数の相互接続されたPCB上に分散されて実装され得る。
プロセッサは、他の処理回路を含み得る。
例えば、処理回路は、PCB上で相互接続されたFPGA及びCPUの2つの処理回路を含み得る。
本発明で使用されるプロセッサへの各機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行される。
プロセッサは、単一のプリント回路基板(printed circuit board:PCB)又は複数の相互接続されたPCB上に分散されて実装され得る。
プロセッサは、他の処理回路を含み得る。
例えば、処理回路は、PCB上で相互接続されたFPGA及びCPUの2つの処理回路を含み得る。
ストレージインターフェースコマンドを処理する方法及びシステムに対する好ましい実施形態を発明の詳細な説明及び図面を参照して詳述したが、通常の技術者によって、多様な修正が明らかに実行され得る。
したがって、本開示の原理に基づいて実装されたストレージインターフェースコマンドを処理する方法及びシステムは、具体的に詳述したもの以外の他の方法で実装されることがあるのが理解されるべきである。
したがって、本開示の原理に基づいて実装されたストレージインターフェースコマンドを処理する方法及びシステムは、具体的に詳述したもの以外の他の方法で実装されることがあるのが理解されるべきである。
100 データのストレージ及び検索(又は回収、retrieval)システム
102a、102b ホスト装置
104 ストレージ装置
106a、106b インターフェースバス
108a、108b プロセッサ
110a、110b ホストメモリ空間
112a、112b 外部提出キュー
114a、114b 外部完了キュー
116a、116b PRP/SGLエントリ
117a、117b データ
118 通信(PCIe)インターフェース
120 NVMeサブシステム
122 装置コントローラ
124a、124b 外部コントローラ
126 内部コントローラ
128 内部CMB
130 内部提出キュー
132 内部完結キュー
134 データ
136 内部PRP/SGLエントリ
138 内部メモリ
140 プロセッサ
142 メディアインターフェース
144 NVMメディア
102a、102b ホスト装置
104 ストレージ装置
106a、106b インターフェースバス
108a、108b プロセッサ
110a、110b ホストメモリ空間
112a、112b 外部提出キュー
114a、114b 外部完了キュー
116a、116b PRP/SGLエントリ
117a、117b データ
118 通信(PCIe)インターフェース
120 NVMeサブシステム
122 装置コントローラ
124a、124b 外部コントローラ
126 内部コントローラ
128 内部CMB
130 内部提出キュー
132 内部完結キュー
134 データ
136 内部PRP/SGLエントリ
138 内部メモリ
140 プロセッサ
142 メディアインターフェース
144 NVMメディア
Claims (18)
- ホストからストレージ装置へのコマンドを処理する方法であって、
前記ストレージ装置の第1コントローラにより、前記ホストに露出された(exposed)第1キューを経由して前記ホストから第1コマンドを受信する段階と、
前記ストレージ装置により、前記第1コマンドに基づいて、第2コマンドを生成する段階と、
前記ストレージ装置により、第2キューを経由して前記ストレージ装置の第2コントローラに前記第2コマンドを提供する段階と、
前記第2コントローラにより、前記第2キューから前記第2コマンドを取得、処理する段階と、
前記第1コントローラにより、前記第2コマンドの状態に基づいて、前記ホストに前記第1コマンドの完了を知らせる信号を転送する段階と、を備え、
前記第2コマンドを取得、処理する段階は、前記ストレージ装置の不揮発性ストレージ媒体にアクセスするためであり、前記第2コマンドと前記第2キューは、前記ホストに露出されないことを特徴とするコマンド処理方法。 - 前記第2コマンドは、第1コマンドの一部を含むことを特徴とする請求項1に記載のコマンド処理方法。
- 前記第1コマンドが、オペレーションと、第1及び第2のメモリ範囲と、に関連し、
前記第2コマンドが前記オペレーションと前記第1メモリの範囲とを含む場合、
前記ストレージ装置により、前記オペレーションと前記第2メモリの範囲を含む第3コマンドを生成する段階と、
前記ストレージ装置により、前記第2キューを経由して前記第3コマンドを前記第2コントローラに提供する段階と、
前記第2コントローラにより、前記第2キューから前記第3コマンドを取得・処理する段階と、をさらに備え、
前記第1コントローラにより前記ホストに、前記第1コマンドの完了を知らせる信号を転送する段階は、前記第2コマンドの状態及び前記第3コマンドの状態に基づくことを特徴とする請求項2に記載のコマンド処理方法。 - 前記オペレーションは、前記第1及び第2のメモリ範囲の割り当て解除(deallocating)を含むことを特徴とする請求項3に記載のコマンド処理方法。
- 前記第2及び第3コマンドは、同時に取得・処理されることを特徴とする請求項3に記載のコマンド処理方法。
- 前記第2コマンドは、前記第1コマンドと異なることを特徴とする請求項1に記載のコマンド処理方法。
- 前記ストレージ装置が不揮発性ストレージ装置である場合、
前記第1コントローラ及び第2コントローラは、不揮発性メモリエクスプレス(non-volatile memory express:NVMe)プロトコルにしたがい、
前記第1キューは、前記NVMeプロトコルにしたがう提出キューを含み、
前記第1コマンドは、NVMeコマンドを含むことを特徴とする請求項1に記載のコマンド処理方法。 - 前記第2コントローラにより、前記ホストに露出されない第1完了キューに第1完了状態を提供する段階、をさらに備えることを特徴とする請求項1に記載のコマンド処理方法。
- 前記信号を転送する段階は、前記第1完了状態を前記第1完了キューに処理する段階に基づいて、第2完了状態を第2完了キューに提出する段階を含み、
前記第2完了キューは、前記ホストに露出されることを特徴とする請求項8に記載のコマンド処理方法。 - ストレージ装置であって、
不揮発性ストレージ媒体と、
前記不揮発性ストレージ媒体に接続された1つ以上のプロセッサと、を備え、
前記1つ以上のプロセッサのそれぞれは、第1コントローラ及び第1キューを介して、ホストから第1コマンドを受信し、
前記第1コマンドに基づいて第2コマンドを生成し、
第2キューを介して第2コントローラに前記第2コマンドを提供し、
前記第2コントローラを介して、前記第2キューから前記第2コマンドを取得・処理し、
前記第2コマンドの状態に基づいて、前記第1コントローラを介して、前記第1コマンドが完了されることを知らせるために、前記ホストに信号を転送するように構成され、
前記第1キューは、前記ホストに露出され、
前記第2コマンドと前記第2キューは、前記ホストに露出されず、
前記1つ以上のプロセッサは、前記第2コマンドを処理するために、前記ストレージ装置の前記不揮発性ストレージ媒体にアクセスするようにさらに構成されることを特徴とするストレージ装置。 - 前記第2コマンドは、前記第1コマンドの一部を含むことを特徴とする請求項10に記載のストレージ装置。
- 前記第1コマンドが、オペレーションと、第1及び第2のメモリの範囲と、に関連し、
前記第2コマンドが、前記オペレーションと前記第1メモリ範囲とを含む場合、
前記1つ以上のプロセッサは、前記オペレーションと前記第2メモリの範囲を含む第3コマンドを生成し、
前記第2キューを経由して、前記第2コントローラに前記第3コマンドを提供し、
前記第2コントローラを介して、前記第2キューから前記第3コマンドを取得するようにさらに構成され、
前記第1コントローラにより前記ホストに、前記第1コマンドの完了を知らせる信号を転送することは、第2コマンドの状態及び前記第3コマンドの状態に基づくことを特徴とする請求項11に記載のストレージ装置。 - 前記オペレーションは、前記第1及び第2のメモリ範囲を割り当て解除することを含むことを特徴とする請求項12に記載のストレージ装置。
- 前記第2及び第3のコマンドは、同時に取得・処理されることを特徴とする請求項12に記載のストレージ装置。
- 前記第2コマンドは、前記第1コマンドと異なることを特徴とする請求項10に記載のストレージ装置。
- 前記ストレージ装置が不揮発性ストレージ装置である場合、
前記第1コントローラ及び第2コントローラは、不揮発性メモリエクスプレス(non-volatile memory express:NVMe)プロトコルにしたがい、
前記第1キューは、前記NVMeプロトコルにしたがう提出キューを含み、
前記第1コマンドは、NVMeコマンドを含むことを特徴とする請求項10に記載のストレージ装置。 - 前記1つ以上のプロセッサは、前記第2コントローラを介して、第1完了キューに第1完了状態を提出するようにさらに構成され、
前記第1完了キューは、前記ホストに露出されないことを特徴とする請求項10に記載のストレージ装置。 - 前記信号を転送することは、前記第1完了状態を前記第1完了キューに処理することに基づいて、第2完了状態を第2完了キューに提出することを含み、
前記第2完了キューは、前記ホストに露出されることを特徴とする請求項17に記載のストレージ装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063057720P | 2020-07-28 | 2020-07-28 | |
US63/057,720 | 2020-07-28 | ||
US17/024,598 US11733918B2 (en) | 2020-07-28 | 2020-09-17 | Systems and methods for processing commands for storage devices |
US17/024,598 | 2020-09-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022025037A true JP2022025037A (ja) | 2022-02-09 |
Family
ID=75746493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021119943A Pending JP2022025037A (ja) | 2020-07-28 | 2021-07-20 | コマンド処理方法及びストレージ装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11733918B2 (ja) |
EP (1) | EP3945406A1 (ja) |
JP (1) | JP2022025037A (ja) |
KR (1) | KR20220014276A (ja) |
CN (1) | CN114003168B (ja) |
TW (1) | TW202205100A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022021026A (ja) * | 2020-07-21 | 2022-02-02 | キオクシア株式会社 | メモリシステムおよびコマンドをフェッチする方法 |
US20220187992A1 (en) * | 2020-12-16 | 2022-06-16 | Kioxia Corporation | Systems and methods for data copy offload for storage devices |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360176B2 (en) | 2012-01-17 | 2019-07-23 | Intel Corporation | Techniques for command validation for access to a storage device by a remote client |
JP2014130387A (ja) * | 2012-12-27 | 2014-07-10 | Fujitsu Ltd | ストレージコントローラ選択システム、ストレージコントローラ選択方法、およびストレージコントローラ選択プログラム |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
CN103176858B (zh) * | 2013-03-11 | 2017-05-03 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
US9009397B1 (en) | 2013-09-27 | 2015-04-14 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US8954657B1 (en) * | 2013-09-27 | 2015-02-10 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US9727503B2 (en) * | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
US9933976B2 (en) * | 2014-04-28 | 2018-04-03 | Hitachi, Ltd. | Storage apparatus and data processing method thereof, and storage system |
KR102330389B1 (ko) * | 2014-07-24 | 2021-11-24 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR102480016B1 (ko) | 2015-08-18 | 2022-12-21 | 삼성전자 주식회사 | 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법 |
US20170123721A1 (en) | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | System and method for utilization of a data buffer by command completion in parts |
US10423568B2 (en) | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
JP6448570B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10452279B1 (en) | 2016-07-26 | 2019-10-22 | Pavilion Data Systems, Inc. | Architecture for flash storage server |
US10735513B2 (en) | 2016-09-08 | 2020-08-04 | Toshiba Memory Corporation | Remote NVMe activation |
US9927999B1 (en) * | 2016-09-09 | 2018-03-27 | Western Digital Technologies, Inc. | Trim management in solid state drives |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10331584B2 (en) | 2017-03-09 | 2019-06-25 | Toshiba Memory Corporation | Internal system namespace exposed through use of two local processors and controller memory buffer with two reserved areas |
US10282094B2 (en) | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
US10503434B2 (en) | 2017-04-12 | 2019-12-10 | Micron Technology, Inc. | Scalable low-latency storage interface |
CA3062336C (en) | 2017-05-03 | 2022-07-12 | Eidetic Communications Inc. | Apparatus and method for controlling data acceleration |
JP6981096B2 (ja) * | 2017-08-17 | 2021-12-15 | 富士フイルムビジネスイノベーション株式会社 | 情報処理装置 |
CN109542335B (zh) | 2017-09-22 | 2022-04-01 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
TWI639921B (zh) | 2017-11-22 | 2018-11-01 | 大陸商深圳大心電子科技有限公司 | 指令處理方法及使用所述方法的儲存控制器 |
CA3021969A1 (en) | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
KR102446733B1 (ko) * | 2017-11-30 | 2022-09-23 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 |
US10846017B2 (en) | 2017-12-14 | 2020-11-24 | Western Digital Technologies, Inc. | Secure digital (SD) to NVMe buffer manager |
US10466906B2 (en) | 2017-12-19 | 2019-11-05 | Western Digital Technologies, Inc. | Accessing non-volatile memory express controller memory manager |
US11669267B2 (en) * | 2018-02-09 | 2023-06-06 | Western Digital Technologies, Inc. | Completion entry throttling using host memory |
US10489085B2 (en) * | 2018-02-28 | 2019-11-26 | Micron Technology, Inc. | Latency-based scheduling of command processing in data storage devices |
KR20190110360A (ko) * | 2018-03-20 | 2019-09-30 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 시스템 및 그 동작 방법 |
US10671314B2 (en) | 2018-06-07 | 2020-06-02 | Circuit Blvd., Inc. | Method of copying data between open-channel solid state drives (SSDs) and an apparatus performing the same |
US11614986B2 (en) | 2018-08-07 | 2023-03-28 | Marvell Asia Pte Ltd | Non-volatile memory switch with host isolation |
US11188496B2 (en) | 2018-09-13 | 2021-11-30 | Toshiba Memory Corporation | System and method for storing data using ethernet drives and ethernet open-channel drives |
US10866740B2 (en) | 2018-10-01 | 2020-12-15 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
KR20200074647A (ko) * | 2018-12-17 | 2020-06-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10824574B2 (en) * | 2019-03-22 | 2020-11-03 | Dell Products L.P. | Multi-port storage device multi-socket memory access system |
US10915264B2 (en) * | 2019-04-11 | 2021-02-09 | Intel Corporation | Apparatus, systems, and methods to reclaim storage associated with cached data |
KR20200126531A (ko) * | 2019-04-30 | 2020-11-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 커맨드 수행 방법 |
JP2021033845A (ja) * | 2019-08-28 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11042481B1 (en) * | 2019-12-19 | 2021-06-22 | Micron Technology, Inc. | Efficient processing of commands in a memory sub-system |
US11726704B2 (en) * | 2020-03-31 | 2023-08-15 | Kioxia Corporation | Buffer optimization for solid-state drives |
US11036625B1 (en) * | 2020-04-24 | 2021-06-15 | Micron Technology, Inc. | Host-resident translation layer write command associated with logical block to physical address of a memory device |
JP7500311B2 (ja) * | 2020-07-13 | 2024-06-17 | キオクシア株式会社 | メモリシステム及び情報処理システム |
-
2020
- 2020-09-17 US US17/024,598 patent/US11733918B2/en active Active
-
2021
- 2021-04-19 KR KR1020210050603A patent/KR20220014276A/ko active Search and Examination
- 2021-04-26 TW TW110114904A patent/TW202205100A/zh unknown
- 2021-04-30 EP EP21171585.9A patent/EP3945406A1/en not_active Ceased
- 2021-07-20 JP JP2021119943A patent/JP2022025037A/ja active Pending
- 2021-07-27 CN CN202110850755.0A patent/CN114003168B/zh active Active
-
2023
- 2023-07-20 US US18/224,523 patent/US20230359396A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230359396A1 (en) | 2023-11-09 |
US11733918B2 (en) | 2023-08-22 |
CN114003168B (zh) | 2024-02-06 |
US20220035564A1 (en) | 2022-02-03 |
CN114003168A (zh) | 2022-02-01 |
KR20220014276A (ko) | 2022-02-04 |
TW202205100A (zh) | 2022-02-01 |
EP3945406A1 (en) | 2022-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755527B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
CN110147335B (zh) | 用于ssd储存器中nvme命令间关联的系统和方法 | |
US11269774B2 (en) | Delayed snoop for improved multi-process false sharing parallel thread performance | |
US7805543B2 (en) | Hardware oriented host-side native command queuing tag management | |
US6823472B1 (en) | Shared resource manager for multiprocessor computer system | |
US20050033874A1 (en) | Direct memory access using memory descriptor list | |
US5682551A (en) | System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto | |
US20230359396A1 (en) | Systems and methods for processing commands for storage devices | |
US11681553B2 (en) | Storage devices including heterogeneous processors which share memory and methods of operating the same | |
US20190087091A1 (en) | Method and design for dynamic management of descriptors for sgl operation | |
KR20180027646A (ko) | I/o 패킷 압축을 위한 레지스터 파일 | |
US8312461B2 (en) | System and method for discovering and protecting allocated resources in a shared virtualized I/O device | |
US11314673B2 (en) | Configurable multi-function PCIe endpoint controller in an SoC | |
US20090213755A1 (en) | Method for establishing a routing map in a computer system including multiple processing nodes | |
US11789634B2 (en) | Systems and methods for processing copy commands | |
CN113742115B (zh) | 用于通过处理器处理页面错误的方法 | |
WO2007039933A1 (ja) | 演算処理装置 | |
EP3945407A1 (en) | Systems and methods for processing copy commands | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same | |
CN114051611B (zh) | 用于非连续存储器的dma分散和聚集操作 | |
JP4774099B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
CN114051611A (zh) | 用于非连续存储器的dma分散和聚集操作 |