TW201738763A - 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統 - Google Patents

使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統 Download PDF

Info

Publication number
TW201738763A
TW201738763A TW106107672A TW106107672A TW201738763A TW 201738763 A TW201738763 A TW 201738763A TW 106107672 A TW106107672 A TW 106107672A TW 106107672 A TW106107672 A TW 106107672A TW 201738763 A TW201738763 A TW 201738763A
Authority
TW
Taiwan
Prior art keywords
queues
input
output
queue
nvme
Prior art date
Application number
TW106107672A
Other languages
English (en)
Other versions
TWI747886B (zh
Inventor
康斯坦汀 維夏特斯奇
卡羅斯 歐里 弗朗西斯科
馬諾基 古素拉
Original Assignee
三星電子股份有限公司
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 三星電子股份有限公司 filed Critical 三星電子股份有限公司
Publication of TW201738763A publication Critical patent/TW201738763A/zh
Application granted granted Critical
Publication of TWI747886B publication Critical patent/TWI747886B/zh

Links

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)

Abstract

揭露一種使用NVMe介面達成對NVMe元件的同時核心模式存取和使用者模式存取的系統及方法。所述方法包括:藉由在核心空間中至少預留第一記憶體位址範圍來創建第一組隊列;將第一組隊列的位置位址及大小提供至NVMe元件的控制器;接收自在主機電腦系統上運行的使用者應用進程的使用者模式存取的請求;以及因應於接收到使用者模式存取的請求而執行以下操作:藉由至少預留第二記憶體位址範圍而創建第二組隊列,第二記憶體位址範圍被映射成由使用者應用進程使用;以及將第二組隊列的位置位址及大小提供至使用者應用進程及NVMe元件的控制器。

Description

使用NVME介面存取元件的同時核心模式和使用者模式
本揭露大體而言是有關於電腦硬體元件。具體而言,本揭露是有關於一種使用非揮發性快速記憶體(Non-Volatile Memory Express,NVMe)介面來對元件提供同時核心模式存取和使用者模式存取的系統及方法。
當前,大多數硬驅動機(hard drive,HD)及固態驅動機(solid state drive,SSD)被配置成經由串列高級技術附接(Serial Advanced Technology Attachment,SATA)匯流排而連接至主機電腦系統(或簡稱為「主機」)。然而,由於技術的進步,SSD的存取速度已提高至使得SATA匯流排的最大傳遞速度(maximum transfer speed)已變為瓶頸的程度。因此,現在亦存在被配置成經由周邊組件快速互連(Peripheral Component Interconnect Express,PCIe或PCI-E)匯流排而連接至主機電腦系統的SSD,此種SSD相較於SATA匯流排而言提供更高的最大傳遞速度及頻寬可分級性(bandwidth scalability)。
為了更充分地利用PCIe匯流排所提供的優點,亦已製訂出NVMe規範。NVMe規範是為經由PCIe匯流排存取所附接非揮發性儲存媒體而製訂的邏輯元件介面規範。NVMe規範相較於為SATA匯流排而製訂的高級主機控制器介面(Advanced Host Controller Interface,AHCI)規範而言提供顯著的優點,例如提供更低的延時(latency)及改善的多處理器核芯支援。在下文中,根據NVMe介面規範而採用並進行運作的元件可被稱作「NVMe元件」。
NVMe元件用來提供相較於藉由SATA達成的元件而言提高的效能的一種方式是利用多個輸入/輸出(input/output,I/O)隊列。然而,該些I/O隊列通常居於主機的記憶體空間中的核心空間中,此意味著其可僅由核心模式進程存取。因此當僅具有使用者模式存取且在主機的記憶體空間中的指定使用者空間中運行的使用者應用進程須對NVMe元件執行輸入/輸出(I/O)操作(例如,讀取或寫入)時,所述使用者應用進程須將I/O請求提交至核心空間中的一或多個核心模式進程。亦即,使用者應用進程將須利用核心模式進程來間接地對I/O隊列進行存取。然而,歷經各核心進程來對I/O隊列進行存取會牽涉到經由一或多個抽象層(例如,阻擋I/O層)來傳送或處理I/O請求並且會不可避免地引發延時。
本揭露提供一種使主機電腦系統使用NVMe介面達成對NVMe元件的同時核心模式存取和使用者模式存取的方法,其中所述主機電腦系統包括被劃分成至少核心空間及一或多個使用者空間的主機記憶體空間。根據示例性實施例,所述方法包括:藉由在所述核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列;將所述第一組隊列的位置位址及大小提供至所述NVMe元件的控制器;接收自在所述主機電腦系統上運行的使用者應用進程的使用者模式存取的請求;以及因應於接收到所述使用者模式存取的請求而執行以下操作:藉由至少預留第二記憶體位址範圍而創建第二組一或多個隊列,所述第二記憶體位址範圍被映射成由所述使用者應用進程使用;以及將所述第二組隊列的位置位址及大小提供至所述使用者應用進程及所述NVMe元件的所述控制器。
本揭露亦提供一種上面儲存有電腦可執行指令的非暫時性電腦可讀取媒體,所述電腦可執行指令在由具有被劃分成至少核心空間及一或多個使用者空間的主機記憶體空間的主機電腦系統執行時,使用NVMe介面達成對NVMe元件的同時核心模式存取和使用者模式存取。根據示例性實施例,執行所述指令會使所述主機電腦系統執行至少以下操作:藉由在所述核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列;將所述第一組隊列的位置位址及大小提供至所述NVMe元件的控制器;接收自在所述主機電腦系統上運行的使用者應用進程的使用者模式存取的請求;以及因應於接收到所述進行使用者模式存取的請求而執行以下操作:藉由至少預留第二記憶體位址範圍而創建第二組一或多個隊列,所述第二記憶體位址範圍被映射成由所述使用者應用進程使用;以及將所述第二組隊列的位置位址及大小提供至所述使用者應用進程及所述NVMe記憶體元件的所述控制器。
本揭露亦提供一種支援使用NVMe介面對NVMe元件進行同時核心模式存取和使用者模式存取的主機電腦系統。根據示例性實施例,所述系統包括作業系統以及記憶體元件驅動器。所述作業系統用以運行使用者應用及核心模式進程,以及創建主機記憶體空間,所述主機記憶體空間被劃分成至少核心空間及一或多個使用者空間。所述記憶體元件驅動器用以藉由在所述核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列,將所述第一組隊列的位置位址及大小提供至所述NVMe元件的控制器,接收自在所述主機電腦系統上運行的使用者應用進程的使用者模式存取的請求,以及因應於接收到所述使用者模式存取的請求而執行以下操作:藉由至少預留第二記憶體位址範圍而創建第二組一或多個隊列,所述第二記憶體位址範圍被映射成由所述使用者應用使用,以及將所述第二組隊列的位置位址及大小提供至所述使用者應用及所述NVMe元件的所述控制器。
本文所揭露的特徵及教示內容中的每一者可單獨使用或結合其他特徵及教示內容來使用以提供本系統及方法。參照附圖闡述代表性實例,所述代表性實例單獨地使用及組合地使用該些特徵及教示內容中的諸多特徵及教示內容。儘管本詳細說明對此項技術中具有通常知識者說明關於實踐本教示內容的態樣的進一步細節,然而其並不限制申請專利範圍的範圍。因此,在本詳細說明中所揭露特徵的組合是本教示內容的代表性實例且可能未必是在最廣泛意義上實踐本教示內容所必需的。
本揭露參考NVMe元件、NVMe規範、及其他特定教示內容作為實例來說明本文中的本系統及方法。然而,本系統及方法以及其應用並非僅限於該些實例且可應用於依賴隊列來與主機電腦系統進行通訊的其他元件。
如先前所論述,每一使用者應用進程在主機的記憶體空間中的指定使用者空間中運行且通常無法存取所述主機的記憶體空間中的核心空間中的記憶體位置。因此,當用於與NVMe元件通訊的I/O隊列居於核心空間中時,使用者應用進程須經過所述核心空間及各種一或多個抽象層以對所述NVMe元件執行I/O操作且由此而引發延時。本揭露的實施例藉由達成對NVMe元件的同時核心模式存取和使用者模式存取來克服延時問題。如此一來,在核心進程保持對NVMe元件進行核心模式存取的同時,需要高效能及低延時的使用者應用進程可對所述NVMe元件進行使用者模式存取。
圖1是繪示根據本揭露示例性實施例的對NVMe元件提供同時核心模式存取和使用者模式存取的主機電腦系統的軟體抽象概念的方塊圖。主機電腦系統(或簡稱為「主機」)100運行作業系統且包括被劃分成至少核心空間110以及第一使用者空間120及第二使用者空間130的主機記憶體空間。核心空間110包括各自包括一或多個核心進程的阻擋I/O層111及NVMe元件驅動器112。核心空間110亦包括第一組隊列113,例如管理提交隊列ASQ、管理完成隊列ACQ、I/O提交隊列ISQ1、及I/O完成隊列ICQ1。核心空間110亦包括第二組隊列132,例如I/O提交隊列ISQ2及I/O完成隊列ICQ2。然而,各組隊列113及132並非僅限於圖1中所示者。
ISQ1將I/O命令(例如,讀取命令及寫入命令)中繼至NVMe元件200,且ICQ1將該些I/O命令的完成狀態中繼回至主機100。藉由相似的方式,ASQ將管理命令中繼至NVMe元件200,且ACQ將該些管理命令的完成狀態中繼回至主機100。管理命令的實例包括創建及刪除I/O提交/完成隊列的命令。NVMe元件驅動器112可藉由在核心空間中預留記憶體位址範圍來創建第一組隊列113並藉由例如對ASQ進行寫入而將第一組隊列113的位置位址及大小提供至NVMe控制器201。
在第一使用者空間120中運行的第一應用進程121可藉由使用核心模式存取間接地對第一組隊列113進行讀取及寫入來對NVMe元件200執行I/O操作。同時,在第二使用者空間130中運行的第二應用進程131可藉由使用使用者模式存取直接地對第二組隊列132進行讀取及寫入來對NVMe元件200執行I/O操作。第二使用者應用進程131能夠藉由使用者模式存取來直接地對第二組隊列132進行存取,乃因NVMe元件驅動器112已將第二組隊列132映射至第二使用者空間130以使得第二使用者應用進程131可在無核心干預(kernel intervention)情況下對所述隊列進行存取。
第一應用進程121可藉由將I/O請求提交至阻擋I/O層111來對NVMe元件200執行I/O操作,阻擋I/O層111接著會處理所述I/O請求並將所述I/O請求轉發至NVMe元件驅動器112。儘管圖1中未示出,然而I/O請求可在到達NVMe元件驅動器112之前由其他層或子系統處理。
NVMe元件驅動器112可因應於接收到所述I/O請求而將對應I/O命令寫入至ISQ1的尾部位置。NVMe元件驅動器112亦可更新與ISQ1對應的ISQ1尾部門鈴暫存器的值。所述新的值可為指向ISQ1的所更新尾部位置的指針(pointer)。ISQ1尾部門鈴暫存器可為NVMe控制器201中的多個暫存器202中的一者且可由NVMe元件驅動器112藉由經記憶體映射的I/O(memory-mapped I/O,MMIO)通訊而進行存取。更新ISQ1尾部門鈴暫存器的值或敲響所述門鈴會使NVMe控制器201確知已有新I/O命令排隊於ISQ1中。
NVMe控制器201可以ISQ1的首部位置開始、自所述ISQ1獲取及處理I/O命令。儘管NVMe 201控制器可自ISQ1以首部至尾部的次序獲取I/O命令,然而其可以任何次序執行該些命令。在執行完I/O命令之後,NVMe控制器201可將完成狀態寫入至ICQ1的尾部位置並向主機100產生例如MSI-X中斷(MSI-X interrupt)。
NVMe元件驅動器112可以ICQ1的首部位置開始、自所述ICQ1獲取完成狀態。在獲取到與來源於第一應用進程121的I/O請求對應的完成狀態之後,NVMe元件驅動器112可處理所請求I/O操作的完成並經由阻擋I/O層111(且可能經由圖1中所未示出的其他層或子系統)而將完成狀態傳送回至第一應用進程121。NVMe元件驅動器112亦可更新與ICQ1對應的ICQ1首部門鈴暫存器的值。所述新的值可為指向ICQ1的所更新首部位置的指針。ICQ1首部門鈴暫存器可為NVMe控制器201中的多個暫存器202中的一者,其可由NVMe元件驅動器112藉由MMIO通訊而進行存取。
如先前所提及,第二應用進程131可藉由使用者模式存取來對第二組隊列132進行存取,同時第一應用進程121藉由核心模式存取來間接地對第一組隊列113進行存取。然而,如同第一組隊列113,第二組隊列132可能需要先創建再使用。舉例而言,第二應用進程131可提交使用者模式存取的請求至NVMe元件驅動器112,所述請求可包括請求創建第二組隊列132。所述請求可例如藉由輸入/輸出控制(input/output control,IOCTL)系統呼叫而被發送至NVMe元件驅動器112。
NVMe元件驅動器112可藉由以下操作而創建第二組隊列132:在核心空間110中預留被映射至第二使用者空間130的記憶體位址範圍;以及藉由IOCTL系統呼叫而將第二組隊列132的位置位址及大小提供至第二應用進程131並藉由寫入至ASQ的命令而將第二組隊列132的所述位置位址及大小提供至NVMe控制器201。舉例而言,NVMe元件驅動器112可將命令寫入至ASQ,且所述命令包括用於創建ISQ2的第一命令及用於創建ICQ2的第二命令。NVMe元件驅動器112亦可更新與ASQ對應的ASQ尾部門鈴暫存器的值。所述新的值可為指向ASQ的尾部位置的指針。ASQ尾部門鈴暫存器可為NVMe控制器201中的多個暫存器202中的一者。
NVMe控制器201可以ASQ的首部位置開始、自所述ASQ獲取及處理管理命令。儘管NVMe 201控制器可自ASQ以首部至尾部的次序獲取管理命令,然而其可以任何次序執行該些命令。在執行完管理命令之後,NVMe控制器201可將完成狀態寫入至ACQ的尾部位置並向主機100產生例如MSI-X中斷。
NVMe元件驅動器112可以ACQ的首部位置開始、自所述ACQ獲取完成狀態。在獲取到與來源於第二應用進程131的隊列創建請求對應的完成狀態之後,NVMe元件驅動器112可藉由IOCTL呼叫而將完成狀態傳送回至第二應用進程131,所述IOCTL呼叫可伴隨有第二組隊列132的位置位址及大小。NVMe元件驅動器112亦可更新與ACQ對應的ACQ首部門鈴暫存器的值。所述新的值可為指向ACQ的所更新首部位置的指針。ACQ首部門鈴暫存器可為NVMe控制器201中的多個暫存器202中的一者。
在創建第二組隊列132之後,第二應用進程131可藉由使用者模式存取來直接地對第二組隊列132進行讀取及寫入且藉此在繞過核心進程(例如阻擋I/O層111中的核心進程)的同時對NVMe元件200執行I/O操作。第二應用進程131可藉由將對應I/O命令寫入至ISQ2的尾部位置來對NVMe元件200執行I/O操作。NVMe元件驅動器112亦可更新與ISQ2對應的ISQ2尾部門鈴暫存器的值。所述新的值可為指向ISQ2的所更新尾部位置的指針。ISQ2尾部門鈴暫存器可為NVMe控制器201中的多個暫存器202中的一者。更新ISQ2尾部門鈴暫存器的值會使NVMe控制器201確知已有新I/O命令排隊於ISQ2中。
NVMe控制器201可以ISQ2的首部位置開始、自所述ISQ2獲取及處理I/O命令。儘管NVMe 201控制器可自ISQ2以首部至尾部的次序獲取I/O命令,然而其可以任何次序執行該些命令。在執行完I/O命令之後,NVMe控制器201可將完成狀態寫入至ICQ2的尾部位置並向主機100產生例如MSI-X中斷。
第二應用進程131可以ICQ2的首部位置開始、自所述ICQ2獲取完成狀態。在獲取到與所請求I/O操作對應的完成狀態之後,第二應用進程131可處理所請求I/O操作的完成並更新與ICQ2對應的ICQ2首部門鈴暫存器的值。所述新的值可為指向ICQ2的所更新首部位置的指針。ICQ2首部門鈴暫存器可為NVMe控制器201中的多個暫存器202中的一者。
因此,根據本系統及方法的示例性實施例的主機100對NVMe元件提供同時核心模式存取和使用者模式存取。如此一來,在核心進程保持對NVMe元件進行核心模式存取的同時,需要高效能及低延時的使用者應用進程可對所述NVMe元件提供使用者模式存取。
圖2示出根據本揭露示例性實施例的對NVMe元件提供同時核心模式存取和使用者模式存取的主機電腦系統的高階操作的流程圖。使用者模式存取可包括在繞過主機電腦系統的核心空間中的阻擋I/O層的同時對NVMe元件執行I/O操作。主機電腦系統與NVMe元件之間的通訊可符合所述NVMe規範。
儘管以下闡述執行所揭露操作的主機電腦系統的及NVMe元件的一或多個組件,然而本系統及方法並非僅限於此,且所述主機電腦系統的及NVMe元件的其他組件亦可作為所述一或多個組件的替代或與所述一或多個組件相結合地執行該些操作。記憶體元件驅動器藉由在核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列(在201處)。所述第一組隊列可包括至少管理提交隊列、管理完成隊列、I/O提交隊列、及I/O完成隊列。記憶體元件驅動器將第一組隊列的位置位址及大小提供至NVMe元件的控制器(在202處)。
記憶體元件驅動器接收自在主機電腦系統上運行的使用者應用進程的使用者模式存取的請求(在203處)。記憶體元件驅動器藉由因應於接收到所述使用者模式存取的請求而至少預留被映射成由使用者應用進程使用的第二記憶體位址範圍來創建第二組一或多個隊列(在204處)。所述第二組隊列可包括至少I/O提交隊列及I/O完成隊列。記憶體元件驅動器亦因應於接收到所述進行使用者模式存取的請求而將第二組隊列的位置位址及大小提供至使用者應用進程及NVMe元件的控制器(在205處)。
在創建第一組隊列及第二組隊列之後,在主機電腦系統上運行的使用者應用進程可執行I/O命令的虛擬記憶體寫入操作至第二組隊列中的I/O提交隊列,並更新與所述第二組隊列中的I/O提交隊列對應的提交尾部門鈴暫存器的值。同時,核心模式進程可執行I/O命令的虛擬記憶體寫入操作至第一組隊列中的I/O提交隊列,並更新與所述第一組隊列中的I/O提交隊列對應的提交尾部門鈴暫存器的值。換言之,使用者應用模式進程及核心模式進程可分別地且並列地執行對第二組隊列中的I/O提交隊列執行的虛擬記憶體寫入操作與對第一組隊列中的I/O提交隊列執行的虛擬記憶體寫入操作。
圖3說明可用於實作本系統及方法的實施例的示例性電腦架構。所述示例性電腦架構可用於實作本揭露中所述的一或多個組件,所述一或多個組件包括但不限於主機電腦系統。架構300的一個實施例包括用於傳達資訊的系統匯流排320、及耦接至匯流排320以處理資訊的處理器310。架構300更包括耦接至匯流排320以儲存欲由處理器310執行的資訊及指令的隨機存取記憶體(random access memory,RAM)或其他動態儲存元件325(在本文中被稱作主記憶體(main memory))。主記憶體325亦可用於在由處理器310執行指令期間儲存時間變數(temporary variable)或其他中間資訊。架構300亦可包括耦接至匯流排320以儲存由處理器310使用的靜態資訊及指令的唯讀記憶體(read only memory,ROM)及/或其他靜態儲存元件326。
資料儲存元件321(例如,磁碟片或光碟)及其對應驅動機亦可耦接至架構300以儲存資訊及指令。架構300亦可經由I/O介面330而耦接至第二I/O匯流排350。I/O匯流排350可耦接有多個I/O元件,所述多個I/O元件包括顯示元件343、輸入元件(例如,文數輸入元件(alphanumeric input device)342、遊標控制元件(cursor control device)341、及/或觸控螢幕元件(touchscreen device))。
通訊元件340使得能夠經由網路而對其他電腦(例如,伺服器或客戶端)進行存取。通訊元件340可包括一或多個數據機、網路介面卡、無線網路介面或其他介面元件(例如,用於耦接至乙太網路、符記環(token ring)或其他類型的網路的介面元件)。
本文中的詳細說明的某些部分是以演算法及對電腦記憶體內的資料位元進行的運算的符號表示法來展現。該些演算法描述及表示法是被熟習資料處理技術的技術人員用於向其他熟習此項技術者最有效地傳達其工作的實質的方式。演算法在此處且一般而言均被視作能得到所期望結果的步驟的自洽序列(self-consistent sequence)。所述步驟需要對物理量進行物理調處。通常(儘管未必必需),該些量會呈現能夠被儲存、傳遞、組合、比較、及以其他方式被調處的電性訊號或磁性訊號的形式。業已證明,主要出於通用的原因,將該些訊號稱作位元、值、元素、符號、字元、項、數字等有時是方便的。
然而,應記住,該些用語中的所有者及所有相似用語皆欲與適宜的物理量相關聯且僅作為應用於該些量的便利標簽。除非藉由閱讀以下論述顯而易見地另有具體說明,否則應知在本說明通篇中,使用例如「處理(processing)」或「計算(computing)」或「運算(calculating)」或「判斷(determining)」或者「顯示(displaying)」等用語進行的論述是指電腦系統或相似電子計算元件的動作及處理,所述電腦系統或相似電子計算元件調處在電腦系統的暫存器及記憶體內被表示為物理(電子)量的資料並將所述資料轉換成在電腦系統記憶體或暫存器或者其他此類資訊儲存裝置、資訊傳輸裝置或資訊顯示裝置內被相似地表示為物理量的其他資料。
本揭露亦是有關於一種執行本文中的操作的設備。此種設備可出於所需目的而專門構建,或者其可包括通用電腦,所述通用電腦由儲存於所述電腦中的電腦程式選擇性地啟動或重新配置。此種電腦程式可儲存於電腦可讀取儲存媒體中,所述電腦可讀取儲存媒體例如為但不限於任何類型的碟片(包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)及磁光碟(magnetic-optical disk))、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、磁性卡(magnetic card)或光學卡(optical card)、或適合於儲存電子指令且各自耦接至電腦系統匯流排的任何類型的媒體。
本文中所展現的演算法並非在本質上有關於任何特定電腦或其他設備。各種通用系統、傳訊伺服器、或個人電腦可根據本文中的教示內容而與程式一起使用,或者構建更專門的設備來執行所需方法步驟可被證明為方便的。各種該些系統的所需結構呈現於以上說明中。可使用各種程式化語言來實作如本文所述本揭露的教示內容。
此外,代表性實例的及隨附申請專利範圍的各種特徵可以並非具體地且精確地列舉的方式加以組合以提供本教示內容的其他實施例。圖中所示組件的尺寸及形狀被設計成幫助理解如何實踐本教示內容且並不限制實例中所示尺寸及形狀。
100‧‧‧主機電腦系統/主機
110‧‧‧核心空間
111‧‧‧阻擋輸入/輸出(I/O)層
112‧‧‧非揮發性快速記憶體(NVMe)元件驅動器
113‧‧‧隊列/第一組隊列
120‧‧‧第一使用者空間
121‧‧‧第一應用進程
130‧‧‧第二使用者空間
131‧‧‧第二應用進程
132‧‧‧隊列/第二組隊列
200‧‧‧非揮發性快速記憶體(NVMe)元件
201‧‧‧非揮發性快速記憶體(NVMe)控制器/步驟
202‧‧‧暫存器/步驟
203、204、205‧‧‧步驟
300‧‧‧架構
310‧‧‧處理器
320‧‧‧匯流排/系統匯流排
321‧‧‧資料儲存元件
325‧‧‧動態儲存元件/主記憶體
326‧‧‧靜態儲存元件
330‧‧‧輸入/輸出(I/O)介面
340‧‧‧通訊元件
341‧‧‧遊標控制元件
342‧‧‧文數輸入元件
343‧‧‧顯示元件
350‧‧‧輸入/輸出(I/O)匯流排/第二輸入/輸出(I/O)匯流排
作為本揭露的一部分而包括在內的各個附圖說明各種實施例,且與以上所給出的大體說明及以下所給出的對各種實施例的詳細說明一起用於闡釋及教示本文所述原理。
圖1是繪示根據本揭露示例性實施例的對NVMe元件提供同時核心模式存取和使用者模式存取的主機電腦系統的軟體抽象概念的方塊圖。 圖2示出根據本揭露示例性實施例的對NVMe元件提供同時核心模式存取和使用者模式存取的主機電腦系統的高階操作的流程圖。 圖3說明可用於實作本揭露實施例的示例性電腦架構(例如,主機電腦系統)。
圖式中的各個圖未必是按比例繪製,且出於說明目的,在所有圖中具有相似結構或功能的部件一般是由相同的參考編號表示。各個圖僅旨在方便闡述本文所述各種實施例並且並不闡述本文所揭露教示內容的每一個態樣且並不限制申請專利範圍的範圍。
100‧‧‧主機電腦系統/主機
110‧‧‧核心空間
111‧‧‧阻擋輸入/輸出(I/O)層
112‧‧‧非揮發性快速記憶體(NVMe)元件驅動器
113‧‧‧隊列/第一組隊列
120‧‧‧第一使用者空間
121‧‧‧第一應用進程
130‧‧‧第二使用者空間
131‧‧‧第二應用進程
132‧‧‧隊列/第二組隊列
200‧‧‧非揮發性快速記憶體(NVMe)元件
201‧‧‧非揮發性快速記憶體(NVMe)控制器
202‧‧‧暫存器

Claims (18)

  1. 一種使主機電腦系統使用NVMe介面達成對NVMe元件的同時核心模式存取和使用者模式存取的方法,所述主機電腦系統包括被劃分成至少核心空間及一或多個使用者空間的主機記憶體空間,所述方法包括: 藉由在所述核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列; 將所述第一組隊列的位置位址及大小提供至所述NVMe元件的控制器; 接收自在所述主機電腦系統上運行的使用者應用進程的使用者模式存取的請求;以及 因應於接收到所述使用者模式存取的請求而執行以下操作: 藉由至少預留第二記憶體位址範圍而創建第二組一或多個隊列,所述第二記憶體位址範圍被映射成由所述使用者應用進程使用,以及 將所述第二組隊列的位置位址及大小提供至所述使用者應用進程及所述NVMe記憶體元件的所述控制器。
  2. 如申請專利範圍第1項所述的方法,其中: 所述第一組隊列包括至少管理提交隊列及管理完成隊列,且 所述第一組隊列及所述第二組隊列中的每一組均包括至少輸入/輸出(I/O)提交隊列及輸入/輸出完成隊列。
  3. 如申請專利範圍第2項所述的方法,其中自所述使用者應用進程的使用者模式存取包括在繞過所述核心空間中的阻擋輸入/輸出層的同時對所述NVMe元件執行輸入/輸出操作。
  4. 如申請專利範圍第3項所述的方法,更包括: 執行輸入/輸出命令的虛擬記憶體寫入操作至所述第二組隊列中的所述輸入/輸出提交隊列;以及 更新與所述第二組隊列中的所述輸入/輸出提交隊列對應的提交尾部門鈴暫存器的值。
  5. 如申請專利範圍第4項所述的方法,更包括: 執行所述輸入/輸出命令的所述虛擬記憶體寫入操作至所述第一組隊列中的所述輸入/輸出提交隊列;以及 更新與所述第一組隊列中的所述輸入/輸出提交隊列對應的提交尾部門鈴暫存器的值。
  6. 如申請專利範圍第5項所述的方法,其中對所述第二組隊列中的所述輸入/輸出提交隊列的所述虛擬記憶體寫入操作是與對所述第一組隊列中的所述輸入/輸出提交隊列的所述虛擬記憶體寫入操作並列地執行。
  7. 一種上面儲存有電腦可執行指令的非暫時性電腦可讀取媒體,所述電腦可執行指令在由具有被劃分成至少核心空間及一或多個使用者空間的主機記憶體空間的主機電腦系統執行時,藉由使所述主機電腦系統執行至少以下操作而使用NVMe介面達成對NVMe元件的同時核心模式存取和使用者模式存取: 藉由在所述核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列; 將所述第一組隊列的位置位址及大小提供至所述NVMe元件的控制器; 接收自在所述主機電腦系統上運行的使用者應用進程的使用者模式存取的請求;以及 因應於接收到所述使用者模式存取的請求而執行以下操作: 藉由至少預留第二記憶體位址範圍而創建第二組一或多個隊列,所述第二記憶體位址範圍被映射成由所述使用者應用進程使用,以及 將所述第二組隊列的位置位址及大小提供至所述使用者應用進程及所述NVMe元件的所述控制器。
  8. 如申請專利範圍第7項所述的非暫時性電腦可讀取媒體,其中: 所述第一組隊列包括至少管理提交隊列及管理完成隊列,且 所述第一組隊列及所述第二組隊列中的每一組均包括至少輸入/輸出(I/O)提交隊列及輸入/輸出完成隊列。
  9. 如申請專利範圍第8項所述的非暫時性電腦可讀取媒體,其中自所述使用者應用進程的使用者模式存取包括在繞過所述核心空間中的阻擋輸入/輸出層的同時對所述NVMe元件執行輸入/輸出操作。
  10. 如申請專利範圍第9項所述的非暫時性電腦可讀取媒體,其中所述電腦可執行指令更使所述主機電腦系統: 執行輸入/輸出命令的虛擬記憶體寫入操作至所述第二組隊列中的所述輸入/輸出提交隊列;以及 更新與所述第二組隊列中的所述輸入/輸出提交隊列對應的提交尾部門鈴暫存器的值。
  11. 如申請專利範圍第10項所述的非暫時性電腦可讀取媒體,其中所述電腦可執行指令更使所述主機電腦系統: 執行輸入/輸出命令的虛擬記憶體寫入操作至所述第一組隊列中的所述輸入/輸出提交隊列;以及 更新與所述第一組隊列中的所述輸入/輸出提交隊列對應的提交尾部門鈴暫存器的值。
  12. 如申請專利範圍第11項所述的非暫時性電腦可讀取媒體,其中所述電腦可執行指令更使所述主機電腦系統對所述第二組隊列中的所述輸入/輸出提交隊列的所述虛擬記憶體寫入操作與對所述第一組隊列中的所述輸入/輸出提交隊列的所述虛擬記憶體寫入操作並列地執行。
  13. 一種支援使用NVMe介面對NVMe元件進行同時核心模式存取和使用者模式存取的主機電腦系統,所述主機電腦系統包括: 作業系統,用以: 運行使用者應用進程及核心模式進程,以及 創建主機記憶體空間,所述主機記憶體空間被劃分成至少核心空間及一或多個使用者空間;以及 記憶體元件驅動器,用以: 藉由在所述核心空間中至少預留第一記憶體位址範圍來創建第一組一或多個隊列; 將所述第一組隊列的位置位址及大小提供至所述NVMe元件的控制器; 接收自在所述主機電腦系統上運行的所述使用者應用進程的使用者模式存取的請求;以及 因應於接收到所述使用者模式存取的請求而執行以下操作: 藉由至少預留第二記憶體位址範圍而創建第二組一或多個隊列,所述第二記憶體位址範圍被映射成由所述使用者應用進程使用,以及 將所述第二組隊列的位置位址及大小提供至所述使用者應用進程及所述NVMe元件的所述控制器。
  14. 如申請專利範圍第13項所述的主機電腦系統,其中: 所述第一組隊列包括至少管理提交隊列及管理完成隊列,且 所述第一組隊列及所述第二組隊列中的每一組均包括至少輸入/輸出(I/O)提交隊列及輸入/輸出完成隊列。
  15. 如申請專利範圍第14項所述的主機電腦系統,其中自所述使用者應用進程的使用者模式存取包括在繞過所述核心空間中的阻擋輸入/輸出層的同時對所述NVMe元件執行輸入/輸出操作。
  16. 如申請專利範圍第15項所述的主機電腦系統,其中所述使用者應用用以: 執行輸入/輸出命令的虛擬記憶體寫入操作至所述第二組隊列中的所述輸入/輸出提交隊列;以及 更新與所述第二組隊列中的所述輸入/輸出提交隊列對應的提交尾部門鈴暫存器的值。
  17. 如申請專利範圍第16項所述的主機電腦系統,其中所述核心模式進程用以: 執行輸入/輸出命令的虛擬記憶體寫入操作至所述第一組隊列中的所述輸入/輸出提交隊列;以及 更新與所述第一組隊列中的所述輸入/輸出提交隊列對應的提交尾部門鈴暫存器的值。
  18. 如申請專利範圍第17項所述的主機電腦系統,其中所述使用者應用進程及所述核心模式進程用以分別地且並列地執行對所述第二組隊列中的所述輸入/輸出提交隊列的所述虛擬記憶體寫入操作與對所述第一組隊列中的所述輸入/輸出提交隊列的所述虛擬記憶體寫入操作。
TW106107672A 2016-04-22 2017-03-09 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統 TWI747886B (zh)

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 2016-10-19
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

Publications (2)

Publication Number Publication Date
TW201738763A true TW201738763A (zh) 2017-11-01
TWI747886B TWI747886B (zh) 2021-12-01

Family

ID=60089010

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106107672A TWI747886B (zh) 2016-04-22 2017-03-09 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統

Country Status (5)

Country Link
US (1) US10379745B2 (zh)
JP (1) JP7008422B2 (zh)
KR (1) KR20170121046A (zh)
CN (1) CN107305534B (zh)
TW (1) TWI747886B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810363B (zh) * 2018-09-13 2023-08-01 日商鎧俠股份有限公司 使用乙太網路驅動器和乙太網路開放通道驅動器儲存資料的系統與方法

Families Citing this family (12)

* 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 郑州云海信息技术有限公司 一种线程模型
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
CN116235139A (zh) * 2020-07-31 2023-06-06 华为技术有限公司 一种处理器、ufs控制方法及计算机***
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 万兴科技(湖南)有限公司 磁盘数据读取方法、装置、计算机设备及存储介质

Family Cites Families (29)

* 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 北京奇虎科技有限公司 一种防止文件被篡改的***和方法
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
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
US9015353B2 (en) 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a 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
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
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 주식회사 맴레이 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810363B (zh) * 2018-09-13 2023-08-01 日商鎧俠股份有限公司 使用乙太網路驅動器和乙太網路開放通道驅動器儲存資料的系統與方法
US11726948B2 (en) 2018-09-13 2023-08-15 Kioxia Corporation System and method for storing data using ethernet drives and ethernet open-channel drives

Also Published As

Publication number Publication date
US20170308298A1 (en) 2017-10-26
CN107305534B (zh) 2022-02-18
CN107305534A (zh) 2017-10-31
JP7008422B2 (ja) 2022-01-25
KR20170121046A (ko) 2017-11-01
TWI747886B (zh) 2021-12-01
JP2017194959A (ja) 2017-10-26
US10379745B2 (en) 2019-08-13

Similar Documents

Publication Publication Date Title
TW201738763A (zh) 使用nvme介面存取元件的同時核心模式和使用者模式的方法、非暫時性電腦可讀取媒體及主機電腦系統
EP3796179A1 (en) System, apparatus and method for processing remote direct memory access operations with a device-attached memory
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
US9563367B2 (en) Latency command processing for solid state drive interface protocol
US9785545B2 (en) Method and apparatus for providing dual memory access to non-volatile memory
US9727503B2 (en) Storage system and server
US11604594B2 (en) Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US11042300B2 (en) Command load balancing for NVME dual port operations
US20230054866A1 (en) System and method to extend nvme queues to user space
TW201905714A (zh) 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體
US20180300064A1 (en) Scalable low-latency storage interface
EP3441870B1 (en) Managing function level reset in an io virtualization-enabled storage device
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
KR20070024670A (ko) 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
CN112416250A (zh) 基于NVMe的固态硬盘的命令处理方法及相关设备
CN104123236A (zh) 用于使用预提升缓冲器的高吞吐量硬件加速的方法和***
US10592113B2 (en) Method for transferring command from host to device controller and system using the same
US10831684B1 (en) Kernal driver extension system and method
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
WO2020029619A1 (zh) 数据处理的方法、设备和服务器
US9015388B2 (en) Controlling access to storage in a computing device
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
US11940917B2 (en) System and method for network interface controller based distributed cache