JP7008422B2 - NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 - Google Patents

NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 Download PDF

Info

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
Application number
JP2017071315A
Other languages
English (en)
Other versions
JP2017194959A (ja
Inventor
コンスタンチン ヴィシェツキー,
カルロス オーレ フランシスコ,
マノイ ゴトゥラ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017194959A publication Critical patent/JP2017194959A/ja
Application granted granted Critical
Publication of JP7008422B2 publication Critical patent/JP7008422B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI 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

本発明はコンピュータハードウェア装置に関し、特に、NVMeインターフェイスを使用する装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するシステム及び方法に関する。
近年まで、大部分のハードドライブ及びソリッドステートドライブ(SSD)はSATA(Serial Advanced Technology Attachment)バスを通じてホストコンピュータシステム(又は簡単に“ホスト”)と接続されていた。
しかし、技術発展にしたがってSSDのアクセス速度は、SATAバスの最大伝送速度がボトルネックになる地点まで上昇した。
したがって、最近ではSATAバスに比べてさらに高い最大伝送速度及び帯域幅拡張性を提供するPCIe(Peripheral Component Interconnect Express、又はPCI-E)バスを通じてホストコンピュータシステムに接続するように構成されたSSDもある。
PCIeバスが提供する長所を最大に活用するために、NVMe(Non-Volatile Memory Express)仕様(specification)が開発された。
NVMe仕様は、PCIeバスを通じて接続された不揮発性格納(記憶)媒体にアクセスするために開発された論理的装置インターフェイス仕様である。
NVMe仕様は、SATAバス用として開発されたAHCI(Advanced Host Controller Interface)仕様より低い待機時間(latency)及び向上された多重プロセッサコア支援のような重要な長所を提供する。
以下、NVMeインターフェイス仕様にしたがって採択し、動作する装置を“NVMe装置”と称する。
NVMe装置がSATA支援装置でより向上された性能を提供する方法は、複数個のI/Oキューを活用する。
しかし、このようなI/Oキューは一般的にホストメモリ空間のカーネル空間に常駐するので、カーネルモードプロセスのみによってアクセス可能である。
したがって、使用者モードアクセスのみを含み、ホストメモリ空間の指定された使用者空間で実行される使用者アプリケーションプロセスがNVMe装置で入/出力(I/O)動作(例えば、読出し及び書込み)を実行しなければならない場合、使用者アプリケーションプロセスはカーネル空間の1つ以上のカーネルモードプロセスにI/O要求を送信しなければならない。
即ち、使用者アプリケーションプロセスは、カーネルモードアクセスを使用して間接的にI/Oキューにアクセスしなければならない。
しかしながら、I/Oキューにアクセスするためにカーネルプロセスを経ることは1つ以上の抽象化階層(例えば、ブロックI/O階層)を通じてI/O要求を伝達又は処理することを伴い、必然的に待機時間をもたらすという問題がある。
米国特許第6,049,866号明細書 米国特許第7,845,009号明細書 米国特許公開第2005/0144422号明細書 米国特許公開第2015/0324137号明細書 米国特許公開第2014/0317337号明細書 米国特許公開第2015/0347314号明細書
本発明は上記従来のNVMe装置における問題点に鑑みてなされたものであって、本発明の目的は、NVMeインターフェイスを使用するNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステムを提供することにある。
また、本発明の他の目的は、NVMeインターフェイスを利用してNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するためのコンピュータ実行可能な命令を格納する非一時的コンピュータ読出可能記録媒体を提供することにある。
上記目的を達成するためになされた本発明によるNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法は、少なくともカーネル空間及び1つ以上の使用者空間に区分されたホストメモリ空間を含むホストコンピュータシステムによってNVMe(Non-Volatile Memory Express)インターフェイスを使用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法において、前記カーネル空間でメモリアドレスの第1範囲を少なくとも予約することによって1つ以上のキューからなる第1キューセットを生成する段階と、前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供する段階と、前記ホストコンピュータシステムで実行される使用者アプリケーションプロセスから使用者モードアクセスの要求を受信する段階と、前記使用者モードアクセスの要求を受信することに応答して以下のような段階を実行する段階と、を有し、前記以下のような段階は、前記使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する段階と、前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置の前記コントローラへ提供する段階と、を含むことを特徴とする。
上記目的を達成するためになされた本発明による非一時的コンピュータ読出可能記録媒体は、少なくともカーネル空間及び1つ以上の使用者空間に区分されたホストメモリ空間を含むホストコンピュータシステムにより、少なくとも以下の段階を実行させることによって、NVMe(Non-Volatile Memory Express)インターフェイスを使用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にするコンピュータ実行可能な命令が格納された非一時的なコンピュータ読出可能記録媒体であって、前記以下の段階は、前記カーネル空間でメモリアドレスの第1範囲を少なくとも予約することによって1つ以上キューからなる第1キューセットを生成する段階と、前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供する段階と、前記ホストコンピュータシステムで実行される使用者アプリケーションプロセスから使用者モードアクセスの要求を受信する段階と、前記使用者モードアクセスの要求を受信することに応答してさらに以下の段階を実行する段階と、を有し、前記さらに以下の段階は、前記使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する段階と、前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置のコントローラへ提供する段階と、を含むことを特徴とする。
上記目的を達成するためになされた本発明によるホストコンピュータシステムは、NVMeインターフェイスを利用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時にサポートするホストコンピュータシステムにおいて、オペレーティングシステムは、使用者アプリケーションプロセス及びカーネルモードプロセスを実行し、少なくともカーネル空間及び1つ以上の使用者空間に分割されたホストメモリ空間を生成し、メモリ装置ドライバーは、前記カーネル空間内メモリアドレスの第1範囲を少なくとも予約することによって1つ以上のキューからなる第1キューセットを生成し、前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供し、前記ホストコンピュータシステムで実行される前記使用者アプリケーションプロセスから使用者モードアクセスの要求を受信し、前記使用者モードアクセスの要求を受信することに応答して以下のことを実行し、前記以下のこととは、前記使用者アプリケーションプロセスによって使用されるためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成し、前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置の前記コントローラへ提供することであることを特徴とする。
本発明に係るNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体によれば、NVMe装置に対するカーネルモードアクセス及び使用者モードアクセスを同時に可能することによって使用者アプリケーションプロセスは、カーネルモードアクセスを使用して間接的にI/OキューにアクセスしなければならずI/Oキューにアクセスするためにカーネルプロセスを経ることは1つ以上の抽象化階層を通じてI/O要求を伝達又は処理することを伴い、必然的に待機時間をもたらすという待機時間問題を克服するという効果がある。
本発明の実施形態に係るNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するホストコンピュータシステムのソフトウェア抽象化を示すブロック図である。 本発明の実施形態に係るNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するホストコンピュータシステムのハイ-レベル動作を説明するためのフローチャートである。 本発明の実施形態に係るホストコンピュータシステム及びカーネルモードアクセス及び使用者モードアクセスを同時に提供する方法を具現するのに使用することができる例示的なコンピュータアーキテクチャを示すブロック図である。
次に、本発明に係るNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体を実施するための形態の具体例を図面を参照しながら説明する。
図面は必ずしも縮尺通り図示されなく、類似な構造又は機能要素は一般的に図面の全体で例示的な目的に同一の参照符号に表示する。
図面は本明細書に説明された多様な実施形態の説明を容易にするために本明細書に開示された教示(teachings)のすべての側面を説明しなく、請求項の範囲を制限しないことと意図する。
ここに開示した各々の特徴及び教示は、本システム及び方法を提供するために個別的に又は他の特徴及び教示と共に利用することができる。
これらの特徴及び教示の中で多数を個別的に及び組み合わして使用する代表的な例が添付された図面を参照して説明する。
本明細書の詳細な説明は、該当技術分野の当業者が本発明を実施できるように例示しているが、これは請求範囲を制限しない。したがって、詳細な説明に開示された特徴の組み合わせは本発明の教示の代表的な例であり、最も広い意味にそれを教示、実施するのに必須的ではなくともよい。
本明細書では本システム及び方法を説明するための例としてNVMe装置、NVMe仕様(specification)及び他の特定教示を参照する。
しかし、本システム、方法及びこれらのアプリケーションはこのような例に限定されなく、ホストコンピュータシステムと通信するためにキューに依存する他の装置に適用することもできる。
先に説明したように、各使用者アプリケーションプロセスはホストのメモリ空間の指定された使用者空間で実行され、典型的にはホストのメモリ空間のカーネル空間内のメモリ位置にアクセスできない。
したがって、NVMe装置と通信するためのI/Oキューがカーネル空間にある時、使用者アプリケーションプロセスはNVMe装置でI/O動作を実行するためにカーネル空間及び多様な抽象化階層を経なければならなく、これによって待機時間が発生する。
本発明の実施形態は、NVMe装置に対するカーネルモードアクセス及び使用者モードアクセスを同時に可能することによって待機時間問題を克服する。
このような方法によって、高性能及び低い待機時間を要求する使用者アプリケーションプロセスはカーネルプロセスがNVMe装置にカーネルモードアクセスを維持しながらもNVMe装置に対する使用者モードアクセスを有することができる。
図1は、本発明の実施形態に係るNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するホストコンピュータシステムのソフトウェア抽象化を示すブロック図である。
ホストコンピュータシステム(又は簡単に“ホスト”)100は、オペレーティングシステムを実行し、少なくともカーネル空間110と第1使用者空間120及び第2使用者空間130に分割されたホストメモリ空間とを含む。
カーネル空間110は、ブロックI/O階層111及びNVMe装置ドライバー112を含み、各々は1つ以上のカーネルプロセスを含む。
また、カーネル空間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に示したものに制限されない。
I/O送信キュー(ISQ1)は、NVMe装置200にI/O命令(例えば、読出し及び書込み命令)を伝達し、I/O完了キュー(ICQ1)はそのようなI/O命令の完了状態(completion status)をホスト100に伝達する。
同様な方式で、管理送信キュー(ASQ)は管理命令をNVMe装置200に伝達し、管理完了キュー(ACQ)はそのような命令の完了状態を再びホスト100に伝達する。
管理命令の例は、I/O送信/完了キューを生成及び削除するための命令を含む。
NVMe装置ドライバー112は、例えば管理送信キュー(ASQ)に書き込みを通じて、カーネル空間にメモリアドレス範囲を予約し、第1キューセット113の位置アドレス及び大きさをNVMeコントローラ201に提供することによって第1キューセット113を生成する。
第1使用者空間120で実行される第1アプリケーションプロセス121は、カーネルモードアクセスを使用して第1キューセット113に間接的に読み出す及び書き込むことによってNVMe装置200に対するI/O動作を実行する。
同時に、第2使用者空間130で実行される第2アプリケーションプロセス131は使用者モードアクセスを使用して第2キューセット132に直接読み出す及び書き込むことによってNVMe装置200に対するI/O動作を実行することができる。
NVMe装置ドライバー112が第2キューセット132を第2使用者空間130にマッピングをし、その結果、第2アプリケーションプロセス131はカーネル介入無しでキューにアクセスできるので、第2アプリケーションプロセス131は使用者モードアクセスを通じて第2キューセット132を直接アクセスすることができる。
第1アプリケーションプロセス121は、ブロックI/O階層111にI/O要求を送信することによってNVMe装置200に対するI/O動作を実行し、そうするとブロックI/O階層111はそのI/O要求を処理し、NVMe装置ドライバー112に伝達する。
たとえば、図1に示してないが、I/O要求は、NVMe装置ドライバー112に伝達する前に他の階層又はサブシステムによって処理することができる。
NVMe装置ドライバー112は、I/O要求の受信に応答してI/O送信キュー(ISQ1)のテール位置(tail position)に対応するI/O命令を書き込む。
NVMe装置ドライバー112は、またI/O送信キュー(ISQ1)に対応するI/O送信キュー(ISQ1)テールドアベルレジスター(tail doorbell register)の値をアップデートする。
新しい値はI/O送信キュー(ISQ1)のアップデートされたテール位置に対するポインターである。
I/O送信キュー(ISQ1)テールドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中で1つであり、メモリマッピングされたI/O(memory-mapped I/O;MMIO)通信を通じてNVMe装置ドライバー112によってアクセスされる。
I/O送信キュー(ISQ1)テールドアベルレジスターの値をアップデートするか、或いはテールベルを鳴らすことは、NVMeコントローラ201が新しいI/O命令がI/O送信キュー(ISQ1)内にキューイングされたことを分かるようにする。
NVMeコントローラ201は、I/O送信キュー(ISQ1)のヘッド位置(head position)で開始してI/O送信キュー(ISQ1)からI/O命令を引出(fetch)し、処理する。
NVMeコントローラ201は、I/O送信キュー(ISQ1)のヘッドツーテール(head-to-tail)順にI/O命令を引き出すが、他の順序で命令を実行することもできる。
I/O命令の実行を完了した後、NVMeコントローラ201は、I/O完了キュー(ICQ1)のテール位置に完了状態を書き込み、例えばホスト100にMSI-Xインタラプトを生成する。
NVMe装置ドライバー112は、I/O完了キュー(ICQ1)のヘッド位置で開始してI/O完了キュー(ICQ1)から完了状態を引き出す。
第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アプリケーションプロセス121が第1キューセット113に間接的にアクセスする間に第2アプリケーションプロセス131は使用者モードアクセスを通じて第2キューセット132にアクセスすることができる。
しかし、第1キューセット113と同様に、第2キューセット132は使用の前に生成する必要があり得る。
例えば、第2アプリケーションプロセス131は、第2キューセット132を生成するための要求を含む使用者モードアクセス要求をNVMe装置ドライバー112に送信する。
例えば、要求は、入出力制御システムコール(Input/Output Control(IOCTL) System Call)を通じてNVMe装置ドライバー112に伝送される。
NVMe装置ドライバー112は、第2使用者空間130にマッピングされるカーネル空間110内のメモリアドレスの範囲を予約し、第2キューセット132の位置アドレス及び大きさをIOCTLシステムコールを通じて第2アプリケーションプロセス131、及び管理送信キュー(ASQ)に対する命令を通じてNVMeコントローラ201に提供することによって第2キューセット132を生成する。
例えば、NVMe装置ドライバー112は、I/O送信キュー(ISQ2)を生成するための第1命令、及びI/O完了キュー(ICQ2)を生成するための第2命令を管理送信キュー(ASQ)に書き込む。
NVMe装置ドライバー112は、また、管理送信キュー(ASQ)に対応する管理送信キュー(ASQ)テールドアベルレジスターの値をアップデートする。
新しい値は、管理送信キュー(ASQ)のテール位置に対するポインターである。
管理送信キュー(ASQ)テールドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中の1つである。
NVMeコントローラ201は、管理送信キュー(ASQ)のヘッド位置で開始して管理送信キュー(ASQ)から管理命令を引き出し、そして処理する。
NVMeコントローラ201は、管理送信キュー(ASQ)からヘッドツーテール順に管理命令を引き出すことができるが、順序に関わらず該当命令を実行することもできる。
管理命令の実行を完了した後、NVMeコントローラ201は、管理完了キュー(ACQ)のテール位置に完了状態を書き込み、例えばホスト100に対するMSI-Xインタラプトを生成する。
NVMe装置ドライバー112は、管理完了キュー(ACQ)のヘッド位置で開始して管理完了キュー(ACQ)から完了状態を引き出す。
第2アプリケーションプロセス131からのキュー生成要求に対応する完了状態を引き出した後、NVMe装置ドライバー112は、IOCTLシステムコールを通じて第2キューセット132の位置アドレス及び大きさを伴う完了状態を第2アプリケーションプロセス131に戻す。
NVMe装置ドライバー112は、管理完了キュー(ACQ)に対応する管理完了キュー(ACQ)ヘッドドアベルレジスターの値をアップデートする。
新しい値は管理完了キュー(ACQ)のアップデートされたヘッド位置に対するポインターである。
管理完了キュー(ACQ)ヘッドドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中の1つである。
第2キューセット132が生成された後、第2アプリケーションプロセス131は、使用者モードアクセスを通じて第2キューセット132に直接的に読み出し及び書き込みを行い、それによりブロックI/O階層111内にあるようなカーネルプロセスをバイパスしながらNVMe装置200に対するI/O動作を実行する。
第2アプリケーションプロセス131は、I/O送信キュー(ISQ2)のテール位置に、対応するI/O命令を書き込むことによってNVMe装置200に対するI/O動作を実行する。
NVMe装置ドライバー112は、また、I/O送信キュー(ISQ2)に対応するI/O送信キュー(ISQ2)テールドアベルレジスターの値をアップデートする。
新しい値は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送信キュー(ISQ2)からI/O命令を引き出し、処理する。
NVMeコントローラ201は、I/O送信キュー(ISQ2)でI/O命令をヘッドツーテール順に持って来るが、順序に関わらず該当命令を実行することもできる。
I/O命令の実行を完了した後、NVMeコントローラ201は、完了状態をI/O完了キュー(ICQ2)のテール位置に書き込み、例えばホスト100にMSI-Xインタラプトを生成する。
第2アプリケーションプロセス131は、I/O完了キュー(ICQ2)のヘッド位置で開始してI/O完了キュー(ICQ2)から完了状態を引き出す。
要求されたI/O動作に対応する完了状態を引き出した後に、第2アプリケーションプロセス131は、要求されたI/O動作の完了を処理し、I/O完了キュー(ICQ2)に対応するI/O完了キュー(ICQ2)ヘッドドアベルレジスターの値をアップデートする。
新しい値は、I/O完了キュー(ICQ2)のアップデートされたヘッド位置に対するポインターである。
I/O完了キュー(ICQ2)ヘッドドアベルレジスターは、NVMeコントローラ201内の複数のレジスター202の中の1つである。
したがって、本システム及びその方法の例示的な実施形態に係るホスト100は、NVMe装置に対するカーネルモードアクセス及び使用者モードアクセスを同時に提供する。
このような方式によって、カーネルプロセスがNVMe装置にカーネルモードアクセスを維持しながらも、高性能及び低い待機時間を要求する使用者アプリケーションプロセスはNVMe装置に対する使用者モードアクセスを提供する。
図2は、本発明の実施形態に係るNVMe装置にカーネルモードアクセス及び使用者モードアクセスを同時に提供するホストコンピュータシステムのハイ-レベル動作を説明するためのフローチャートである。
使用者モードアクセスは、ホストコンピュータシステムのカーネル空間でブロックI/O階層をバイパスしながらも、NVMe装置でI/O動作を実行することを含むことができる。
ホストコンピュータシステムとNVMe装置との間の通信はNVMe仕様にしたがう。
ホストコンピュータシステム及びNVMe装置の1つ以上の構成要素が開示された動作を実行することとして以下で説明するが、本システム及び方法はこれに制限されなく、ホストコンピュータシステム及びNVMe装置の他の構成要素は、代わりに、又は共に、そのような動作を実行することができる。
メモリ装置ドライバーは、少なくともカーネル空間でメモリアドレスの第1範囲を予約することによって1つ以上のキューからなる第1キューセットを生成する(ステップS201)。
第1キューセットは、少なくとも管理送信キュー、管理完了キュー、I/O送信キュー、及びI/O完了キューを含む。
次に、メモリ装置ドライバーは、NVMe装置のコントローラに第1キューセットの位置アドレス及び大きさを提供する(ステップS202)。
次に、メモリ装置ドライバーは、ホストコンピュータシステム上で実行される使用者アプリケーションプロセスから使用者モードアクセスに対する要求を受信する(ステップS203)。
次に、メモリ装置ドライバーは、使用者モードアクセスに対する要求を受信したことに応答して使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する(ステップS204)。
第2キューセットは、少なくともI/O送信キュー及びI/O完了キューを含む。
メモリ装置ドライバーは、また使用者モードアクセス要求を受信したことに応答して第2キューセットの位置アドレス及び大きさを使用者アプリケーションプロセス及びNVMe装置のコントローラに提供する(ステップS205)。
第1及び第2キューセットが生成された後、ホストコンピュータシステム上で実行される使用者アプリケーションプロセスは、第2キューセット内のI/O送信キューに対するI/O命令の仮想メモリ書込み動作を実行し、第2キューセット内のI/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする。
同時に、カーネルモードプロセスは、第1キューセット内のI/O送信キューに対するI/O命令の仮想メモリ書込み動作を実行し、第1キューセット内のI/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする。
即ち、使用者アプリケーション及びカーネルモードプロセスは、第2キューセット内のI/O送信キューに対する仮想メモリ書込み動作及び第1キューセット内のI/O送信キューに対する仮想メモリ書込み動作を各々及び並行して実行する。
図3は、本発明の実施形態に係るホストコンピュータシステム及びカーネルモードアクセス及び使用者モードアクセスを同時に提供する方法を具現するのに使用することができる例示的なコンピュータアーキテクチャを示すブロック図である。
例示的なコンピュータアーキテクチャは、本明細書で説明する1つ以上の構成を具現するために使用することができるが、ホストコンピュータシステムはこれに制限されない。
本発明の一実施形態に係るアーキテクチャ300は、情報を伝送するためのシステムバス320及び情報を処理するためにシステムバス320に接続されたプロセッサ310を含む。
アーキテクチャ300は、プロセッサ310によって実行される情報及び命令語を格納するためにシステムバス320に接続されたランダムアクセスメモリ(RAM)又は他の動的格納装置325(以下、メインメモリと記す)をさらに含む。
また、メインメモリ325は、プロセッサ310による命令の実行の間に臨時変数又は他の中間情報を格納するために使用する。
また、アーキテクチャ300は、メインメモリ325によって使用される静的情報及び命令語を格納するためにシステムバス320に接続された読出し専用メモリ(ROM)326、及び/又は他の静的格納装置を含む。
磁気ディスク又は光ディスクのようなデータストレージ装置321、及びそれの対応するドライブもまた情報及び命令を格納するためにアーキテクチャ300に接続することができる。
アーキテクチャ300は、またI/Oインターフェイス330を通じて第2I/Oバス350に接続される。
複数のI/O装置は、ディスプレイ装置343、入力装置(例えば、英文/数字入力装置(キーボード)342、カーソル制御装置341、及び/又はタッチスクリーン装置)を含む。
通信装置340は、ネットワークを通じて他のコンピュータ(例えば、サーバー又はクライアント)に対するアクセスを許容する。
通信装置340は、イーサーネット、トークンリング、又は他の類型のネットワークに接続するために使用されるような1つ以上のモデム、ネットワークインターフェイスカード、無線ネットワークインターフェイス、又は他のインターフェイス装置を含むことができる。
本明細書の詳細な説明の一部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及びシンボル表現によって提供される。
このようなアルゴリズム説明及び表現は、データ処理技術分野の当業者がそれらの作業内容を当業者に最も効果的に伝達するために使用される手段である。
アルゴリズムは、一般的に所望する結果を誘導するステップの一貫性のあるシークェンスとして考えられる。
ステップは、物理的量を物理的に操作することを必要とする。
一般的に必ずそうではないが、このような量は、格納、伝送、結合、比較、及びその他の操作が可能な電気又は磁気信号の形態を取る。
このような信号をビット(bits)、値(values)、要素(elements)、記号(symbols)、文字(characters)、用語(terms)、数字(numbers)等に参照する一般的な使用原則が時々に便利であることが立証された。
しかし、これら及び類似する用語の全ては、適切な物理的量と関連されなければならなく、単なるこのような量に適用される便利なラベルであることを注意しなければならない。
特別に言及しない限り、以下の説明から明確であるように、“処理(processing)”、“コンピューティング(computing)”又は“計算(calculating)”又は“決定(determining)”又は“表示(displaying)”等のような用語は、明細書の全般にわたって、コンピュータシステム又は類似の電子コンピューティング装置の動作及び処理を参照して、コンピュータシステムのレジスター及びメモリ内で物理的(電子)量で表現されたデータをコンピュータシステムメモリ、レジスター、情報ストレージ、伝送、又はディスプレイ装置のような他の装置内物理的量に同様に表現される他のデータに操作及び変換することを意味する。
また、本明細書は、本発明に係る動作を実行するための装置を開示する。
この装置は要求される目的のために特別に構成されるか、コンピュータに格納されたコンピュータプログラムによって選択的に活性化されるか、或いは再構成される汎用コンピュータを含むことができる。
このようなコンピュータプログラムは、フロッピー(登録商標)ディスク、光学ディスク、CD-ROM、及び磁気光学ディスクを含む任意の類型のディスクのようなコンピュータ読出し可能記録媒体に格納され、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光学カード、又は電子命令を格納するのに適合な任意の類型の媒体を含み、その各々はコンピュータシステムバスに接続される。
本明細書で提示したアルゴリズムは、本質的に任意の特定コンピュータ又は他の装置と関連されない。
多様な汎用システム、メッセージングサーバー、又は個人用コンピュータが本明細書の教示にしたがってプログラムと共に使用することができるか、或いは要求される方法ステップを実行するためにより特殊化された装置を構成することが便利であることもある。
多様なシステムに必要である構造は上述にて行った。
本明細書で説明した教示を具現するために多様なプログラミング言語を使用することができる。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
100 ホストコンピュータシステム(ホスト)100
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. 少なくともカーネル空間及び1つ以上の使用者空間に区分されたホストメモリ空間を含むホストコンピュータシステムによってNVMe(Non-Volatile Memory Express)インターフェイスを使用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法において、
    前記カーネル空間でメモリアドレスの第1範囲を少なくとも予約することによって1つ以上のキューからなる第1キューセットを生成する段階と、
    前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供する段階と、
    前記ホストコンピュータシステムで実行される使用者アプリケーションプロセスから使用者モードアクセスの要求を受信する段階と、
    前記使用者モードアクセスの要求を受信することに応答して以下のような段階を実行する段階と、を有し、
    前記以下のような段階は、
    前記使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する段階と、
    前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置の前記コントローラへ提供する段階と、を含むことを特徴とするNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
  2. 前記第1キューセットは、少なくとも管理送信キュー(administrative submission queue:ASQ)及び管理完了キュー(administrative completion queue:ACQ)を含み、
    前記第1及び第2キューセットの各々は、少なくとも1つの入/出力(I/O)送信キュー及びI/O完了キューを含むことを特徴とする請求項1に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
  3. 前記使用者アプリケーションプロセスからの使用者モードアクセスは、前記カーネル空間でブロックI/O階層をバイパスしながら前記NVMe装置に対するI/O動作を実行する段階を含むことを特徴とする請求項2に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
  4. 前記第2キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
    前記第2キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスター(submission tail doorbell register)の値をアップデートする段階と、をさらに有することを特徴とする請求項3に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
  5. 前記第1キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
    前記第1キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする段階と、をさらに有することを特徴とする請求項4に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
  6. 前記第2キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み
    動作を実行する段階は、前記第1キューセット内の前記I/O送信キューに前記I/O命令の前記仮想メモリ書込み動作を実行する段階と並行して実行されることを特徴とする請求項5に記載のNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法。
  7. 少なくともカーネル空間及び1つ以上の使用者空間に区分されたホストメモリ空間を含むホストコンピュータシステムにより、少なくとも以下に示す段階を実行させることによって、NVMe(Non-Volatile Memory Express)インターフェイスを使用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にするコンピュータ実行可能な命令が格納された非一時的なコンピュータ読出可能記録媒体であって、
    前記段階は、
    前記カーネル空間でメモリアドレスの第1範囲を少なくとも予約することによって、1つ以上のキューを含む第1キューセットを生成する段階と、
    前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供する段階と、
    前記ホストコンピュータシステムで実行される使用者アプリケーションプロセスから使用者モードアクセスの要求を受信する段階と、
    前記使用者モードアクセスの要求を受信することに応答してさらに以下の段階を実行する段階と、を有し、
    前記さらに以下の段階は、
    前記使用者アプリケーションプロセスによって使用するためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成する段階と、
    前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置のコントローラへ提供する段階と、を含むことを特徴とする非一時的コンピュータ読出可能記録媒体。
  8. 前記第1キューセットは、少なくとも管理送信キュー(ASQ)及び管理完了キュー(ACQ)を含み、
    前記第1及び第2キューセットの各々は、少なくとも入/出力(I/O)送信キュー及びI/O完了キューを含むことを特徴とする請求項7に記載の非一時的コンピュータ読出可能記録媒体。
  9. 前記使用者アプリケーションプロセスからの使用者モードアクセスは、前記カーネル空間でブロックI/O階層をバイパスしながら前記NVMe装置に対するI/O動作を実行する段階を含むことを特徴とする請求項8に記載の非一時的コンピュータ読出可能記録媒体。
  10. 前記コンピュータ実行可能な命令は、前記ホストコンピュータシステムが、
    前記第2キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
    前記第2キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする段階と、を実行させる命令をさらに含むことを特徴とする請求項9に記載の非一時的コンピュータ読出可能記録媒体。
  11. 前記コンピュータ実行可能な命令は、前記ホストコンピュータシステムが、前記第1キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行する段階と、
    前記第1キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートする段階と、を実行させる命令をさらに含むことを特徴とする請求項10に記載の非一時的コンピュータ読出可能記録媒体。
  12. 前記ホストコンピュータシステムが、前記第2キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行する段階は、前記第1キューセット内の前記I/O送信キューに前記I/O命令の前記仮想メモリ書込み動作を実行する段階と並行して実行されることを特徴とする請求項11に記載の非一時的コンピュータ読出可能記録媒体。
  13. NVMeインターフェイスを利用するNVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時にサポートするホストコンピュータシステムにおいて、
    オペレーティングシステムは、
    使用者アプリケーションプロセス及びカーネルモードプロセスを実行し、
    少なくともカーネル空間及び1つ以上の使用者空間に分割されたホストメモリ空間を生成し、
    メモリ装置ドライバーは、
    前記カーネル空間内メモリアドレスの第1範囲を少なくとも予約することによって1つ以上のキューからなる第1キューセットを生成し、
    前記第1キューセットの位置アドレス及び大きさを前記NVMe装置のコントローラへ提供し、
    前記ホストコンピュータシステムで実行される前記使用者アプリケーションプロセスから使用者モードアクセスの要求を受信し、
    前記使用者モードアクセスの要求を受信することに応答して以下のことを実行し、
    前記以下のこととは、
    前記使用者アプリケーションプロセスによって使用されるためにマッピングされたメモリアドレスの第2範囲を少なくとも予約することによって1つ以上のキューからなる第2キューセットを生成し、
    前記第2キューセットの位置アドレス及び大きさを前記使用者アプリケーションプロセス及び前記NVMe装置の前記コントローラへ提供することであることを特徴とするホストコンピュータシステム。
  14. 前記第1キューセットは、少なくとも管理送信キュー(ASQ)及び管理完了キュー(ACQ)を含み、
    前記第1及び第2キューセットの各々は、少なくとも1つの入/出力(I/O)送信キュー及びI/O完了キューを含むことを特徴とする請求項13に記載のホストコンピュータシステム。
  15. 前記使用者アプリケーションプロセスからの使用者モードアクセスは、前記カーネル空間でブロックI/O階層をバイパスしながら前記NVMe装置に対するI/O動作を実行することを含むことを特徴とする請求項14に記載のホストコンピュータシステム。
  16. 前記使用者アプリケーションプロセスは、前記第2キューセット内の前記I/O送信キューにI/O命令の仮想メモリ書込み動作を実行し、
    前記第2キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートすることを含むことを特徴とする請求項15に記載のホストコンピュータシステム。
  17. 前記カーネルモードプロセスは、前記第1キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行し、
    前記第1キューセット内の前記I/O送信キューに対応する送信テールドアベルレジスターの値をアップデートすることを含むことを特徴とする請求項16に記載のホストコンピュータシステム。
  18. 前記使用者アプリケーションプロセス及び前記カーネルモードプロセスは、前記第2キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行することと、前記第1キューセット内の前記I/O送信キューにI/O命令の前記仮想メモリ書込み動作を実行することを並行して実行することを特徴とする請求項17に記載のホストコンピュータシステム。

JP2017071315A 2016-04-22 2017-03-31 NVMe装置に対しカーネルモードアクセス及び使用者モードアクセスを同時に可能にする方法及びホストコンピュータシステム並びに非一時的コンピュータ読出可能記録媒体 Active JP7008422B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 주식회사 맴레이 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램

Patent Citations (2)

* Cited by examiner, † Cited by third party
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