JP7008422B2 - NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 - Google Patents
NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 Download PDFInfo
- Publication number
- JP7008422B2 JP7008422B2 JP2017071315A JP2017071315A JP7008422B2 JP 7008422 B2 JP7008422 B2 JP 7008422B2 JP 2017071315 A JP2017071315 A JP 2017071315A JP 2017071315 A JP2017071315 A JP 2017071315A JP 7008422 B2 JP7008422 B2 JP 7008422B2
- Authority
- JP
- Japan
- Prior art keywords
- queue
- mode access
- user
- nvme
- kernel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 95
- 230000005540 biological transmission Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 9
- 238000007726 management method Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06F13/1694—Configuration of memory controller to different memory types
-
- 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
- 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]
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
しかし、技術発展にしたがってSSDのアクセス速度は、SATAバスの最大伝送速度がボトルネックになる地点まで上昇した。
したがって、最近ではSATAバスに比べてさらに高い最大伝送速度及び帯域幅拡張性を提供するPCIe(Peripheral Component Interconnect Express、又はPCI-E)バスを通じてホストコンピュータシステムに接続するように構成されたSSDもある。
NVMe仕様は、PCIeバスを通じて接続された不揮発性格納(記憶)媒体にアクセスするために開発された論理的装置インターフェイス仕様である。
NVMe仕様は、SATAバス用として開発されたAHCI(Advanced Host Controller Interface)仕様より低い待機時間(latency)及び向上された多重プロセッサコア支援のような重要な長所を提供する。
以下、NVMeインターフェイス仕様にしたがって採択し、動作する装置を“NVMe装置”と称する。
しかし、このようなI/Oキューは一般的にホストメモリ空間のカーネル空間に常駐するので、カーネルモードプロセスのみによってアクセス可能である。
したがって、使用者モードアクセスのみを含み、ホストメモリ空間の指定された使用者空間で実行される使用者アプリケーションプロセスがNVMe装置で入/出力(I/O)動作(例えば、読出し及び書込み)を実行しなければならない場合、使用者アプリケーションプロセスはカーネル空間の1つ以上のカーネルモードプロセスにI/O要求を送信しなければならない。
即ち、使用者アプリケーションプロセスは、カーネルモードアクセスを使用して間接的にI/Oキューにアクセスしなければならない。
また、本発明の他の目的は、NVMeインターフェイスを利用してNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するためのコンピュータ実行可能な命令を格納する非一時的コンピュータ読出可能記録媒体を提供することにある。
図面は本明細書に説明された多様な実施形態の説明を容易にするために本明細書に開示された教示(teachings)のすべての側面を説明しなく、請求項の範囲を制限しないことと意図する。
ここに開示した各々の特徴及び教示は、本システム及び方法を提供するために個別的に又は他の特徴及び教示と共に利用することができる。
これらの特徴及び教示の中で多数を個別的に及び組み合わして使用する代表的な例が添付された図面を参照して説明する。
本明細書の詳細な説明は、該当技術分野の当業者が本発明を実施できるように例示しているが、これは請求範囲を制限しない。したがって、詳細な説明に開示された特徴の組み合わせは本発明の教示の代表的な例であり、最も広い意味にそれを教示、実施するのに必須的ではなくともよい。
しかし、本システム、方法及びこれらのアプリケーションはこのような例に限定されなく、ホストコンピュータシステムと通信するためにキューに依存する他の装置に適用することもできる。
したがって、NVMe装置と通信するためのI/Oキューがカーネル空間にある時、使用者アプリケーションプロセスはNVMe装置でI/O動作を実行するためにカーネル空間及び多様な抽象化階層を経なければならなく、これによって待機時間が発生する。
このような方法によって、高性能及び低い待機時間を要求する使用者アプリケーションプロセスはカーネルプロセスがNVMe装置にカーネルモードアクセスを維持しながらもNVMe装置に対する使用者モードアクセスを有することができる。
ホストコンピュータシステム(又は簡単に“ホスト”)100は、オペレーティングシステムを実行し、少なくともカーネル空間110と第1使用者空間120及び第2使用者空間130に分割されたホストメモリ空間とを含む。
また、カーネル空間110は、管理送信キュー(administration submission queue:ASQ)、管理完了キュー(administration completion queue:ACQ)、I/O送信キュー(I/O submission queue、ISQ1)及びI/O完了キュー(I/O completion queue、ICQ1)のような第1キューセット113を含む。
また、カーネル空間110は、I/O送信キュー(ISQ2)及びI/O完了キュー(ICQ2)のような第2キューセット132を含む。
しかし、第1キューセット113、第2キューセット132は、図1に示したものに制限されない。
同様な方式で、管理送信キュー(ASQ)は管理命令をNVMe装置200に伝達し、管理完了キュー(ACQ)はそのような命令の完了状態を再びホスト100に伝達する。
管理命令の例は、I/O送信/完了キューを生成及び削除するための命令を含む。
NVMe装置ドライバー112は、例えば管理送信キュー(ASQ)に書き込みを通じて、カーネル空間にメモリアドレス範囲を予約し、第1キューセット113の位置アドレス及び大きさをNVMeコントローラ201に提供することによって第1キューセット113を生成する。
同時に、第2使用者空間130で実行される第2アプリケーションプロセス131は使用者モードアクセスを使用して第2キューセット132に直接読み出す及び書き込むことによってNVMe装置200に対するI/O動作を実行することができる。
NVMe装置ドライバー112が第2キューセット132を第2使用者空間130にマッピングをし、その結果、第2アプリケーションプロセス131はカーネル介入無しでキューにアクセスできるので、第2アプリケーションプロセス131は使用者モードアクセスを通じて第2キューセット132を直接アクセスすることができる。
たとえば、図1に示してないが、I/O要求は、NVMe装置ドライバー112に伝達する前に他の階層又はサブシステムによって処理することができる。
NVMe装置ドライバー112は、またI/O送信キュー(ISQ1)に対応するI/O送信キュー(ISQ1)テールドアベルレジスター(tail doorbell register)の値をアップデートする。
新しい値はI/O送信キュー(ISQ1)のアップデートされたテール位置に対するポインターである。
I/O送信キュー(ISQ1)テールドアベルレジスターの値をアップデートするか、或いはテールベルを鳴らすことは、NVMeコントローラ201が新しいI/O命令がI/O送信キュー(ISQ1)内にキューイングされたことを分かるようにする。
NVMeコントローラ201は、I/O送信キュー(ISQ1)のヘッドツーテール(head-to-tail)順にI/O命令を引き出すが、他の順序で命令を実行することもできる。
I/O命令の実行を完了した後、NVMeコントローラ201は、I/O完了キュー(ICQ1)のテール位置に完了状態を書き込み、例えばホスト100にMSI-Xインタラプトを生成する。
第1アプリケーションプロセス121で発生したI/O要求に対応する完了状態を引き出した後、NVMe装置ドライバー112は要求されたI/O動作の完了を処理し、ブロックI/O階層111(及び、図1に示されない他の階層又はサブシステム)を通じて完了状態を第1アプリケーションプロセス121に返送する。
NVMe装置ドライバー112は、又、I/O完了キュー(ICQ1)に対応するI/O完了キュー(ICQ1)ヘッドドアベルレジスターの値をアップデートする。
新しい値は、I/O完了キュー(ICQ1)の更新されたヘッド位置に対するポインターである。
I/O完了キュー(ICQ1)ヘッドドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中のいずれか1つであり、MMIO通信を通じてNVMe装置ドライバー112によってアクセスされる。
しかし、第1キューセット113と同様に、第2キューセット132は使用の前に生成する必要があり得る。
例えば、第2アプリケーションプロセス131は、第2キューセット132を生成するための要求を含む使用者モードアクセス要求をNVMe装置ドライバー112に送信する。
例えば、要求は、入出力制御システムコール(Input/Output Control(IOCTL) System Call)を通じてNVMe装置ドライバー112に伝送される。
例えば、NVMe装置ドライバー112は、I/O送信キュー(ISQ2)を生成するための第1命令、及びI/O完了キュー(ICQ2)を生成するための第2命令を管理送信キュー(ASQ)に書き込む。
新しい値は、管理送信キュー(ASQ)のテール位置に対するポインターである。
管理送信キュー(ASQ)テールドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中の1つである。
NVMeコントローラ201は、管理送信キュー(ASQ)のヘッド位置で開始して管理送信キュー(ASQ)から管理命令を引き出し、そして処理する。
NVMeコントローラ201は、管理送信キュー(ASQ)からヘッドツーテール順に管理命令を引き出すことができるが、順序に関わらず該当命令を実行することもできる。
管理命令の実行を完了した後、NVMeコントローラ201は、管理完了キュー(ACQ)のテール位置に完了状態を書き込み、例えばホスト100に対するMSI-Xインタラプトを生成する。
第2アプリケーションプロセス131からのキュー生成要求に対応する完了状態を引き出した後、NVMe装置ドライバー112は、IOCTLシステムコールを通じて第2キューセット132の位置アドレス及び大きさを伴う完了状態を第2アプリケーションプロセス131に戻す。
NVMe装置ドライバー112は、管理完了キュー(ACQ)に対応する管理完了キュー(ACQ)ヘッドドアベルレジスターの値をアップデートする。
新しい値は管理完了キュー(ACQ)のアップデートされたヘッド位置に対するポインターである。
管理完了キュー(ACQ)ヘッドドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中の1つである。
第2アプリケーションプロセス131は、I/O送信キュー(ISQ2)のテール位置に、対応するI/O命令を書き込むことによってNVMe装置200に対するI/O動作を実行する。
新しい値はI/O送信キュー(ISQ2)のアップデートされたテール位置に対するポインターである。
I/O送信キュー(ISQ2)テールドアベルレジスターは、NVMeコントローラ201の複数のレジスター202の中の1つである。
I/O送信キュー(ISQ2)テールドアベルレジスターの値のアップデートは、NVMeコントローラ201が、新しいI/O命令がI/O送信キュー(ISQ2)にキューイングされたことを分かるようにするものである。
NVMeコントローラ201は、I/O送信キュー(ISQ2)でI/O命令をヘッドツーテール順に持って来るが、順序に関わらず該当命令を実行することもできる。
I/O命令の実行を完了した後、NVMeコントローラ201は、完了状態をI/O完了キュー(ICQ2)のテール位置に書き込み、例えばホスト100にMSI-Xインタラプトを生成する。
要求されたI/O動作に対応する完了状態を引き出した後に、第2アプリケーションプロセス131は、要求されたI/O動作の完了を処理し、I/O完了キュー(ICQ2)に対応するI/O完了キュー(ICQ2)ヘッドドアベルレジスターの値をアップデートする。
新しい値は、I/O完了キュー(ICQ2)のアップデートされたヘッド位置に対するポインターである。
I/O完了キュー(ICQ2)ヘッドドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中の1つである。
このような方式によって、カーネルプロセスがNVMe装置にカーネルモードアクセスを維持しながらも、高性能及び低い待機時間を要求する使用者アプリケーションプロセスはNVMe装置に対する使用者モードアクセスを提供する。
使用者モードアクセスは、ホストコンピュータシステムのカーネル空間でブロックI/O階層をバイパスしながらも、NVMe装置でI/O動作を実行することを含むことができる。
ホストコンピュータシステム及びNVMe装置の1つ以上の構成要素が開示された動作を実行することとして以下で説明するが、本システム及び方法はこれに制限されなく、ホストコンピュータシステム及びNVMe装置の他の構成要素は、代わりに、又は共に、そのような動作を実行することができる。
第1キューセットは、少なくとも管理送信キュー、管理完了キュー、I/O送信キュー、及びI/O完了キューを含む。
次に、メモリ装置ドライバーは、ホストコンピュータシステム上で実行される使用者アプリケーションプロセスから使用者モードアクセスに対する要求を受信する(ステップS203)。
第2キューセットは、少なくともI/O送信キュー及びI/O完了キューを含む。
メモリ装置ドライバーは、また使用者モードアクセス要求を受信したことに応答して第2キューセットの位置アドレス及び大きさを使用者アプリケーションプロセス及びNVMe装置のコントローラに提供する(ステップS205)。
同時に、カーネルモードプロセスは、第1キューセット内のI/O送信キューに対するI/O命令の仮想メモリ書込み動作を実行し、第1キューセット内のI/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする。
即ち、使用者アプリケーション及びカーネルモードプロセスは、第2キューセット内のI/O送信キューに対する仮想メモリ書込み動作及び第1キューセット内のI/O送信キューに対する仮想メモリ書込み動作を各々及び並行して実行する。
例示的なコンピュータアーキテクチャは、本明細書で説明する1つ以上の構成を具現するために使用することができるが、ホストコンピュータシステムはこれに制限されない。
アーキテクチャ300は、プロセッサ310によって実行される情報及び命令語を格納するためにシステムバス320に接続されたランダムアクセスメモリ(RAM)又は他の動的格納装置325(以下、メインメモリと記す)をさらに含む。
また、メインメモリ325は、プロセッサ310による命令の実行の間に臨時変数又は他の中間情報を格納するために使用する。
磁気ディスク又は光ディスクのようなデータストレージ装置321、及びそれの対応するドライブもまた情報及び命令を格納するためにアーキテクチャ300に接続することができる。
アーキテクチャ300は、またI/Oインターフェイス330を通じて第2I/Oバス350に接続される。
複数のI/O装置は、ディスプレイ装置343、入力装置(例えば、英文/数字入力装置(キーボード)342、カーソル制御装置341、及び/又はタッチスクリーン装置)を含む。
通信装置340は、イーサーネット、トークンリング、又は他の類型のネットワークに接続するために使用されるような1つ以上のモデム、ネットワークインターフェイスカード、無線ネットワークインターフェイス、又は他のインターフェイス装置を含むことができる。
このようなアルゴリズム説明及び表現は、データ処理技術分野の当業者がそれらの作業内容を当業者に最も効果的に伝達するために使用される手段である。
アルゴリズムは、一般的に所望する結果を誘導するステップの一貫性のあるシークェンスとして考えられる。
ステップは、物理的量を物理的に操作することを必要とする。
このような信号をビット(bits)、値(values)、要素(elements)、記号(symbols)、文字(characters)、用語(terms)、数字(numbers)等に参照する一般的な使用原則が時々に便利であることが立証された。
しかし、これら及び類似する用語の全ては、適切な物理的量と関連されなければならなく、単なるこのような量に適用される便利なラベルであることを注意しなければならない。
この装置は要求される目的のために特別に構成されるか、コンピュータに格納されたコンピュータプログラムによって選択的に活性化されるか、或いは再構成される汎用コンピュータを含むことができる。
このようなコンピュータプログラムは、フロッピー(登録商標)ディスク、光学ディスク、CD-ROM、及び磁気光学ディスクを含む任意の類型のディスクのようなコンピュータ読出し可能記録媒体に格納され、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光学カード、又は電子命令を格納するのに適合な任意の類型の媒体を含み、その各々はコンピュータシステムバスに接続される。
多様な汎用システム、メッセージングサーバー、又は個人用コンピュータが本明細書の教示にしたがってプログラムと共に使用することができるか、或いは要求される方法ステップを実行するためにより特殊化された装置を構成することが便利であることもある。
多様なシステムに必要である構造は上述にて行った。
本明細書で説明した教示を具現するために多様なプログラミング言語を使用することができる。
110 カーネル空間
111 ブロックI/O階層
112 NVMe装置ドライバー
113 第1キューセット
120 第1使用者空間
121 第1アプリケーションプロセス
130 第2使用者空間
131 第2アプリケーションプロセス
132 第2キューセット
200 NVMe装置
201 NVMeコントローラ
202 レジスター
300 アーキテクチャ
310 プロセッサ
320 システムバス
321 データストレージ装置
325 メインメモリ(動的格納装置)
330 I/Oインターフェイス
340 通信装置
341 カーソル制御装置
342 キーボード
343 ディスプレイ装置
350 第2I/Oバス
Claims (18)
- 少なくともカーネル空間及び1つ以上の使用者空間に区分されたホストメモリ空間を含むホストコンピュータシステムによってNVMe(Non-Volatile Memory Express)インターフェイスを使用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法において、
前記カーネル空間でメモリアドレスの第1範囲を少なくとも予約することによって1つ以上のキューからなる第1キューセットを生成する段階と、
前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供する段階と、
前記ホストコンピュータシステムで実行される使用者アプリケーションプロセスから使用者モードアクセスの要求を受信する段階と、
前記使用者モードアクセスの要求を受信することに応答して以下のような段階を実行する段階と、を有し、
前記以下のような段階は、
前記使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する段階と、
前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置の前記コントローラへ提供する段階と、を含むことを特徴とするNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。 - 前記第1キューセットは、少なくとも管理送信キュー(administrative submission queue:ASQ)及び管理完了キュー(administrative completion queue:ACQ)を含み、
前記第1及び第2キューセットの各々は、少なくとも1つの入/出力(I/O)送信キュー及びI/O完了キューを含むことを特徴とする請求項1に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。 - 前記使用者アプリケーションプロセスからの使用者モードアクセスは、前記カーネル空間でブロックI/O階層をバイパスしながら前記NVMe装置に対するI/O動作を実行する段階を含むことを特徴とする請求項2に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
- 前記第2キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
前記第2キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスター(submission tail doorbell register)の値をアップデートする段階と、をさらに有することを特徴とする請求項3に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。 - 前記第1キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
前記第1キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする段階と、をさらに有することを特徴とする請求項4に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。 - 前記第2キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み
動作を実行する段階は、前記第1キューセット内の前記I/O送信キューに前記I/O命令の前記仮想メモリ書込み動作を実行する段階と並行して実行されることを特徴とする請求項5に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。 - 少なくともカーネル空間及び1つ以上の使用者空間に区分されたホストメモリ空間を含むホストコンピュータシステムにより、少なくとも以下に示す段階を実行させることによって、NVMe(Non-Volatile Memory Express)インターフェイスを使用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にするコンピュータ実行可能な命令が格納された非一時的なコンピュータ読出可能記録媒体であって、
前記段階は、
前記カーネル空間でメモリアドレスの第1範囲を少なくとも予約することによって、1つ以上のキューを含む第1キューセットを生成する段階と、
前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供する段階と、
前記ホストコンピュータシステムで実行される使用者アプリケーションプロセスから使用者モードアクセスの要求を受信する段階と、
前記使用者モードアクセスの要求を受信することに応答してさらに以下の段階を実行する段階と、を有し、
前記さらに以下の段階は、
前記使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する段階と、
前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置のコントローラへ提供する段階と、を含むことを特徴とする非一時的コンピュータ読出可能記録媒体。 - 前記第1キューセットは、少なくとも管理送信キュー(ASQ)及び管理完了キュー(ACQ)を含み、
前記第1及び第2キューセットの各々は、少なくとも入/出力(I/O)送信キュー及びI/O完了キューを含むことを特徴とする請求項7に記載の非一時的コンピュータ読出可能記録媒体。 - 前記使用者アプリケーションプロセスからの使用者モードアクセスは、前記カーネル空間でブロックI/O階層をバイパスしながら前記NVMe装置に対するI/O動作を実行する段階を含むことを特徴とする請求項8に記載の非一時的コンピュータ読出可能記録媒体。
- 前記コンピュータ実行可能な命令は、前記ホストコンピュータシステムが、
前記第2キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
前記第2キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする段階と、を実行させる命令をさらに含むことを特徴とする請求項9に記載の非一時的コンピュータ読出可能記録媒体。 - 前記コンピュータ実行可能な命令は、前記ホストコンピュータシステムが、前記第1キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
前記第1キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする段階と、を実行させる命令をさらに含むことを特徴とする請求項10に記載の非一時的コンピュータ読出可能記録媒体。 - 前記ホストコンピュータシステムが、前記第2キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行する段階は、前記第1キューセット内の前記I/O送信キューに前記I/O命令の前記仮想メモリ書込み動作を実行する段階と並行して実行されることを特徴とする請求項11に記載の非一時的コンピュータ読出可能記録媒体。
- NVMeインターフェイスを利用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時にサポートするホストコンピュータシステムにおいて、
オペレーティングシステムは、
使用者アプリケーションプロセス及びカーネルモードプロセスを実行し、
少なくともカーネル空間及び1つ以上の使用者空間に分割されたホストメモリ空間を生成し、
メモリ装置ドライバーは、
前記カーネル空間内メモリアドレスの第1範囲を少なくとも予約することによって1つ以上のキューからなる第1キューセットを生成し、
前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供し、
前記ホストコンピュータシステムで実行される前記使用者アプリケーションプロセスから使用者モードアクセスの要求を受信し、
前記使用者モードアクセスの要求を受信することに応答して以下のことを実行し、
前記以下のこととは、
前記使用者アプリケーションプロセスによって使用されるためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成し、
前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置の前記コントローラへ提供することであることを特徴とするホストコンピュータシステム。 - 前記第1キューセットは、少なくとも管理送信キュー(ASQ)及び管理完了キュー(ACQ)を含み、
前記第1及び第2キューセットの各々は、少なくとも1つの入/出力(I/O)送信キュー及びI/O完了キューを含むことを特徴とする請求項13に記載のホストコンピュータシステム。 - 前記使用者アプリケーションプロセスからの使用者モードアクセスは、前記カーネル空間でブロックI/O階層をバイパスしながら前記NVMe装置に対するI/O動作を実行することを含むことを特徴とする請求項14に記載のホストコンピュータシステム。
- 前記使用者アプリケーションプロセスは、前記第2キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行し、
前記第2キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートすることを含むことを特徴とする請求項15に記載のホストコンピュータシステム。 - 前記カーネルモードプロセスは、前記第1キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行し、
前記第1キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートすることを含むことを特徴とする請求項16に記載のホストコンピュータシステム。 - 前記使用者アプリケーションプロセス及び前記カーネルモードプロセスは、前記第2キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行することと、前記第1キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行することを並行して実行することを特徴とする請求項17に記載のホストコンピュータシステム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662326459P | 2016-04-22 | 2016-04-22 | |
US62/326,459 | 2016-04-22 | ||
US15/298,053 US10379745B2 (en) | 2016-04-22 | 2016-10-19 | Simultaneous kernel mode and user mode access to a device using the NVMe interface |
US15/298,053 | 2016-10-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017194959A JP2017194959A (ja) | 2017-10-26 |
JP7008422B2 true JP7008422B2 (ja) | 2022-01-25 |
Family
ID=60089010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017071315A Active JP7008422B2 (ja) | 2016-04-22 | 2017-03-31 | NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10379745B2 (ja) |
JP (1) | JP7008422B2 (ja) |
KR (1) | KR20170121046A (ja) |
CN (1) | CN107305534B (ja) |
TW (1) | TWI747886B (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407244A (zh) * | 2016-03-01 | 2021-09-17 | 华为技术有限公司 | 一种级联板、ssd远程共享访问的系统和方法 |
CN107861894B (zh) * | 2017-11-03 | 2021-08-31 | 郑州云海信息技术有限公司 | NVMe协议的队列命令的执行方法、装置及存储介质 |
US11093140B2 (en) * | 2018-01-19 | 2021-08-17 | Micron Technology, Inc. | Performance allocation among users for accessing non-volatile memory devices |
US11018444B2 (en) * | 2018-03-09 | 2021-05-25 | Samsung Electronics Co., Ltd. | Multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-of) device |
CN108762682B (zh) * | 2018-05-31 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种线程模型 |
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 |
CN109740310B (zh) * | 2018-12-29 | 2024-06-07 | 嘉楠明芯(北京)科技有限公司 | 用于嵌入式操作系统的内核对象访问方法和装置 |
CN110221783B (zh) * | 2019-06-12 | 2022-03-15 | 西安奥卡云数据科技有限公司 | 一种NVMe-oF用户空间直通后端存储的方法及系统 |
US10831684B1 (en) * | 2019-07-31 | 2020-11-10 | EMC IP Holding Company, LLC | Kernal driver extension system and method |
US11438497B2 (en) * | 2019-12-13 | 2022-09-06 | Sony Group Corporation | Managing multiple image devices |
EP4184304A4 (en) * | 2020-07-31 | 2023-09-13 | Huawei Technologies Co., Ltd. | PROCESSOR, UFS CONTROL METHOD AND COMPUTER SYSTEM |
US11604743B2 (en) | 2020-08-31 | 2023-03-14 | International Business Machines Corporation | Input/output queue hinting for resource utilization |
CN112035071B (zh) * | 2020-09-27 | 2023-06-06 | 万兴科技(湖南)有限公司 | 磁盘数据读取方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279988A1 (en) | 2013-03-14 | 2014-09-18 | Michael W. Shapiro | Method and system for hybrid direct input/output (i/o) with a storage device |
US20150324118A1 (en) | 2014-05-07 | 2015-11-12 | HGST Netherlands B.V. | SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317717A (en) * | 1987-07-01 | 1994-05-31 | Digital Equipment Corp. | Apparatus and method for main memory unit protection using access and fault logic signals |
US5771383A (en) * | 1994-12-27 | 1998-06-23 | International Business Machines Corp. | Shared memory support method and apparatus for a microkernel data processing system |
US6049866A (en) * | 1996-09-06 | 2000-04-11 | Silicon Graphics, Inc. | Method and system for an efficient user mode cache manipulation using a simulated instruction |
US6834325B1 (en) * | 1999-07-16 | 2004-12-21 | Storage Technology Corporation | System and method for providing client-directed staging to improve non-sequential access performance in a caching disk storage system |
US7032088B2 (en) * | 2003-08-07 | 2006-04-18 | Siemens Corporate Research, Inc. | Advanced memory management architecture for large data volumes |
US20050144422A1 (en) * | 2003-12-30 | 2005-06-30 | Mcalpine Gary L. | Virtual to physical address translation |
US7707362B2 (en) * | 2005-06-30 | 2010-04-27 | Seagate Technology Llc | Context-free data transactions between dual operating systems embedded within a data storage subsystem |
US7845009B2 (en) * | 2006-05-16 | 2010-11-30 | Intel Corporation | Method and apparatus to detect kernel mode rootkit events through virtualization traps |
KR101396831B1 (ko) * | 2007-03-30 | 2014-05-21 | 삼성전자주식회사 | 메모리 접근 제어 방법 |
CN101150486A (zh) * | 2007-11-15 | 2008-03-26 | 曙光信息产业(北京)有限公司 | 一种零拷贝缓冲区队列网络数据接收的管理方法 |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US9389952B2 (en) * | 2008-06-18 | 2016-07-12 | Super Talent Technology, Corp. | Green NAND SSD application and driver |
US7996722B2 (en) * | 2009-01-02 | 2011-08-09 | International Business Machines Corporation | Method for debugging a hang condition in a process without affecting the process state |
US9047351B2 (en) * | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US9311122B2 (en) * | 2012-03-26 | 2016-04-12 | Oracle International Corporation | System and method for providing a scalable signaling mechanism for virtual machine migration in a middleware machine environment |
CN102902909B (zh) * | 2012-10-10 | 2015-09-16 | 北京奇虎科技有限公司 | 一种防止文件被篡改的系统和方法 |
US9069658B2 (en) * | 2012-12-10 | 2015-06-30 | Google Inc. | Using a virtual to physical map for direct user space communication with a data storage device |
US9164888B2 (en) * | 2012-12-10 | 2015-10-20 | Google Inc. | Using a logical to physical map for direct user space communication with a data storage device |
US9489316B2 (en) * | 2013-03-15 | 2016-11-08 | Freescale Semiconductor, Inc. | Method and device implementing execute-only memory protection |
US9311230B2 (en) * | 2013-04-23 | 2016-04-12 | Globalfoundries Inc. | Local direct storage class memory access |
US9986028B2 (en) * | 2013-07-08 | 2018-05-29 | Intel Corporation | Techniques to replicate data between storage servers |
US9665296B2 (en) * | 2014-05-07 | 2017-05-30 | Sandisk Technologies Llc | Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications |
KR102308777B1 (ko) * | 2014-06-02 | 2021-10-05 | 삼성전자주식회사 | 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법 |
EP2985690B1 (en) * | 2014-08-11 | 2018-07-18 | Dot Hill Systems Corporation | Method and apparatus for sequential stream i/o processing |
CN104239225B (zh) * | 2014-09-04 | 2018-02-06 | 浪潮(北京)电子信息产业有限公司 | 一种管理异构混合内存的方法及装置 |
CN104536701B (zh) * | 2014-12-23 | 2018-02-06 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
KR101936950B1 (ko) * | 2016-02-15 | 2019-01-11 | 주식회사 맴레이 | 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램 |
-
2016
- 2016-10-19 US US15/298,053 patent/US10379745B2/en active Active
-
2017
- 2017-02-28 KR KR1020170026428A patent/KR20170121046A/ko not_active Application Discontinuation
- 2017-03-09 TW TW106107672A patent/TWI747886B/zh active
- 2017-03-23 CN CN201710178710.7A patent/CN107305534B/zh active Active
- 2017-03-31 JP JP2017071315A patent/JP7008422B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140279988A1 (en) | 2013-03-14 | 2014-09-18 | Michael W. Shapiro | Method and system for hybrid direct input/output (i/o) with a storage device |
US20150324118A1 (en) | 2014-05-07 | 2015-11-12 | HGST Netherlands B.V. | SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS |
Also Published As
Publication number | Publication date |
---|---|
US10379745B2 (en) | 2019-08-13 |
US20170308298A1 (en) | 2017-10-26 |
TWI747886B (zh) | 2021-12-01 |
TW201738763A (zh) | 2017-11-01 |
KR20170121046A (ko) | 2017-11-01 |
JP2017194959A (ja) | 2017-10-26 |
CN107305534B (zh) | 2022-02-18 |
CN107305534A (zh) | 2017-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7008422B2 (ja) | NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 | |
JP5241737B2 (ja) | プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置 | |
US8086765B2 (en) | Direct I/O device access by a virtual machine with memory managed using memory disaggregation | |
CN104583933B (zh) | Gpu和fpga组件之间的直接通信的方法和系统 | |
US9043777B2 (en) | Transferring files to a baseboard management controller (‘bmc’) in a computing system | |
US6003112A (en) | Memory controller and method for clearing or copying memory utilizing register files to store address information | |
KR20200087052A (ko) | NVMe-SSD 저장 장치 및 NVMe-oF 호스트 유닛 사이의 통신 관리 시스템 및 방법 | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
US8661163B2 (en) | Tag allocation for queued commands across multiple devices | |
JP2020522797A (ja) | Gpuタスクスケジューリングの継続分析タスク | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
KR102387460B1 (ko) | 데이터 저장 장치와 이의 작동 방법 | |
TWI423028B (zh) | 存取一具有複數個直接存取儲存設備之數位儲存系統的方法、處理系統及電腦程式產品及排程i/o操作的方法 | |
TW202101227A (zh) | 閃存實體資源集合管理裝置及方法以及電腦程式產品 | |
US7263568B2 (en) | Interrupt system using event data structures | |
CN107918613B (zh) | 因应服务质量的固态硬盘访问方法以及使用该方法的装置 | |
US7743195B2 (en) | Interrupt mailbox in host memory | |
TW201351276A (zh) | 計算工作的排程和執行 | |
US20150326684A1 (en) | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access | |
KR20220061983A (ko) | 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공 | |
CN111625281A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20220171717A1 (en) | Adaptive out of order arbitration for numerous virtual queues | |
US20170199701A1 (en) | Enhanced message control banks | |
US8667188B2 (en) | Communication between a computer and a data storage device | |
JP2013142927A (ja) | 物理乱数生成装置を搭載した計算機及び物理乱数生成装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200330 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210511 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210730 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220104 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220111 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7008422 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |