TWI828824B - 具有啟動器模式的固態硬碟 - Google Patents

具有啟動器模式的固態硬碟 Download PDF

Info

Publication number
TWI828824B
TWI828824B TW108146474A TW108146474A TWI828824B TW I828824 B TWI828824 B TW I828824B TW 108146474 A TW108146474 A TW 108146474A TW 108146474 A TW108146474 A TW 108146474A TW I828824 B TWI828824 B TW I828824B
Authority
TW
Taiwan
Prior art keywords
state drive
solid state
solid
command
queue
Prior art date
Application number
TW108146474A
Other languages
English (en)
Other versions
TW202042077A (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 TW202042077A publication Critical patent/TW202042077A/zh
Application granted granted Critical
Publication of TWI828824B publication Critical patent/TWI828824B/zh

Links

Classifications

    • 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
    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0653Monitoring storage devices or systems
    • 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
    • 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
    • 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)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一種用以儲存持久數位編碼資料的固態硬碟可運算於啟動器模式。當運算於啟動器模式中時,固態硬碟可啟動命令或請求的生成與發布至另一個固態硬碟以執行資料儲存相關的程序。由固態硬碟生成的命令或請求可被直接通訊至另一個固態硬碟而不用透過例如為主機端處理器的媒介裝置通訊。

Description

具有啟動器模式的固態硬碟
本發明要求美國臨時申請序號62/783060的優先權,該序號於2018年12月20日提交,標題為「SOLID-STATE DRIVE (SSD) INITIATOR MODE」,其內容通過引用完整地併入本文。
本發明大致關於用於電腦與電子網路系統的資料儲存領域。特別是關於資料儲存裝置的運算模式。
固態硬碟(Solid-States Drive, 固態硬碟)是使用非揮發性記憶體(non-volatile memory)例如NAND (Not-And)記憶體或是NOR (Not-Or)記憶體來儲存持久數位編碼資料(persistent digitally encoded data)。固態硬碟可被用來模擬硬碟(一種儲存持久數位編碼資料於快速旋轉圓盤的磁表面的裝置),且在許多應用中取代硬碟。
主機端通常耦接至固態硬碟以從固態硬碟讀取資料、寫入資料至固態硬碟以及自固態硬碟消除資料。主機端可透過媒介裝置耦接至固態硬碟,媒介裝置例如為介面切換器。為了便於讀取、寫入及消除資料,固態硬碟可包括有主機介面以便與主機端通訊的固態硬碟控制器,以及用來管理固態硬碟中非揮發性記憶體的非揮發性記憶體介面通訊。通訊主機端介面包括定址、資料匯流排,及用於與主機端通訊的控制,且主機端介面符合數據通訊協定例如SATA、SAS、NVMe或USB。而非揮發性記憶體介面包括定址、資料匯流排,及與用於管理非揮發性記憶體的控制,且非揮發性記憶體介面符合資料通訊協定例如用於NAND非揮發性記憶體的開啟NAND快閃介面(ONFI)。
於運算中,主機端通常提出用於資料儲存服務的請求,例如寫入、讀取及消除,來執行儲存於固態硬碟資料的寫入、讀取及消除相應的運算。為了執行寫入運算,在各種情況下,主機端透過介面切換器傳送寫入請求至固態硬碟。寫入請求指示資料寫入及寫入資料的資料位址。在固態硬碟的主機端介面接收寫入請求。然後,固態硬碟控制器透過非揮發性記憶體介面執行硬體及/或韌體而將資料基於資料位址寫入於非揮發性記憶體。為了執行讀取運算,在一些情況下,主機端透過介面切換器送出讀取請求至固態硬碟。讀取請求指示資料位址讀取。固態硬碟的主機端介面接收讀取請求。固態硬碟控制器執行硬體及/或韌體在非揮發性記憶體中基於資料位址讀取資料。固態硬碟控制器接收由非揮發性記憶體透過非揮發性記憶體介面讀取的資料且透過主機端介面提供讀取資料至主機端。為了執行消除運算,在一些情況下,主機端透過介面切換器送出消除請求至固態硬碟。消除請求指示消除資料位址。固態硬碟的主機端介面接收消除請求。固態硬碟控制器執行硬體及/或韌體在非揮發性記憶體基於資料位址運行消除運算。
本發明涉及用以生成及啟動在一或多個相等固態硬碟之間直接通訊且無須透過主機端裝置轉移的一或多個請求與命令的固態硬碟。於實施例中,固態硬碟可在啟動器模式運行,並可在不涉及固態硬碟可耦接的主機端裝置的情況下,以直接耦接方式生成並發送請求及/或命令至一或多個其他固態硬碟。固態硬碟之間的請求和命令的啟動和直接耦接可以消除主機端裝置複製該些請求和/或命令的需要,而該需要為處理個別固態硬碟之間通訊的請求和/或命令的一部分,並且如果請求和/或命令是通過主機端裝置在固態硬碟之間通訊而不是使用直接耦接如本次披露,還可以消除為了通常需要的通訊標準而將請求和/或命令從一個協議或格式轉換為通訊不同的協定或格式的需要。
根據所述系統及技術的一方面,方法包含:在第一固態硬碟與第二固態硬碟建立一組佇列,這組佇列用以控制第一固態硬碟與第二固態硬碟之間透過互連的直接通訊,互連耦接於第一固態硬碟與第二固態硬碟;透過第一固態硬碟啟動至少一個命令或請求的生成;透過第一固態硬碟通過互連驅動此至少一個命令或請求,以使此至少一個命令或請求直接通訊於第一固態硬碟與第二固態硬碟之間。
根據所述系統及技術的另一方面,當由一或多個處理器執行時,儲存指令的非暫態電腦可讀媒體至少使此一或多個處理器:在第一固態硬碟與第二固態硬碟建立一組佇列,用以控制第一固態硬碟與第二固態硬碟之間透過耦接於第一固態硬碟與第二固態硬碟的互連的直接通訊;由第一固態硬碟啟動至少一命令或請求的生成;由第一固態硬碟透過互連驅動至少一命令或請求,以使至少一命令或請求直接通訊於第一固態硬碟與第二固態硬碟之間。
根據所述系統及技術的另一方面,設備包括:包括本機處理器與記憶陣列的固態硬碟,其中記憶陣列用以儲存持久數位編碼資料(persistent digitally encoded data)於非揮發性記憶體,且其中本機處理器用以運算於啟動器模式,其中本機處理器啟動用於資料儲存程序的命令或請求的生成,該命令或請求直接通過互連傳送到耦接於固態硬碟的一或多個額外的固態硬碟。
本發明提供了與資料儲存服務相關的示例與細節,該服務提供予一個或多個主機端,而該主機端具有一個切換裝置耦接於一個或多個主機端及用於提供資料儲存的固態硬碟。固態硬碟用以接收、處理及回應由一或多個主機端產生且透過切換裝置通訊的資料儲存服務請求。此外,固態硬碟本身被配置為請求啟動器來運行,其中資料儲存服務的請求可由一或多個固態硬碟之間的一個第一固態硬碟發起,其中第一固態硬碟可被稱為啟動器固態硬碟。由啟動器固態硬碟啟動的資料儲存服務的請求可被通訊或處理或回應至第二固態硬碟(被稱為目標固態硬碟)。啟動器固態硬碟與使用直接通訊連結耦接至啟動器固態硬碟的目標固態硬碟之間的通訊以及目標固態硬碟無須透過媒介裝置通訊。主機端處理器。 雖然諸如切換裝置或主機端的媒介裝置不是必需的,一個或多個媒介裝置可作為耦接在一或多個固態硬碟之連接方案的一部分,以通過模式操作。本文描述的原理可應用於控制其它類型儲存裝置的效能,例如硬碟或混合固態硬碟。
圖1說明了提供各種資料儲存服務至主機端的資料儲存系統100的示例配置,其同時還提供命令或請求予為資料儲存服務或資料儲存流程效能被配置為命令或請求啟動器的固態硬碟,該命令或請求直接通訊於固態硬碟之間而無須透過耦合於系統的主機端發起,且在一些例子中,固態硬碟無須透過例如為主機端處理器的媒介裝置通訊於固態硬碟間。資料儲存系統100可包括一或多個主機端102、由一或多個固態硬碟130, 140, 150組成的資料儲存器136,其中固態硬碟130, 140, 150透過切換器110可通訊地耦合至一或多個主機端。一或多個主機端可作為對使用者或網路上其他節點提供資訊資源、服務及/或應用程式的伺服器。在一些範例中,一或多個主機端可包含虛擬機(virtual machines, VM)。虛擬機可以在主機端上使用快捷周邊元件互連(Peripheral Component Interconnect Express, PCIe)單根輸入/輸出虛擬化(single root input/output virtualization, SR-IOV)實現。在多樣的範例中,一或多個主機端102可透過通訊連結101耦接至網路106,通訊連結101例如有線網路連結、區域網路(local area network, LAN)、廣域網路(wide area network, WAN)及/或無線網路連接例如互聯網(Internet)。網路106可包含一或多個其他裝置例如一或多個額外的主機端、介面開關及/或可通訊地耦接至一或多個主機端102的資料儲存系統,其中這些額外的裝置及系統可請求或接收涉及一或多個固態硬碟130、140及/或150的資料儲存服務。
在各種例子中,一或多個固態硬碟130, 140, 150可包含基於積體電路(integrated circuit, IC)的儲存機制,此儲存機制可持續地儲存資料以啟用一或多個主機端102去提供所需功能。固態硬碟130, 140, 150可能可以提供比硬碟(hard disk drive, HDD)更高的頻寬與較低的延遲。
介面切換器(切換器)110可位於一或多個主機端102與固態硬碟130, 140, 150之間,且可用以將一或多個主機端通訊地耦接至這些固態硬碟。在各種例子中,切換器110為一NVMe切換器,用以執行NVMe命令去控制在一或多個主機端102與固態硬碟130, 140, 150之間基於PCIe的點式拓墣切換器(point-topoint switch)連結。於系統100的一些例子中,每一個固態硬碟有其自有的專用連接以連接至一或多個主機端102。在各種例子中,切換器110包括處理器電路114,該處理器電路114可通訊地耦接至主機端介面112、固態硬碟介面116以及包含記憶體的佇列118。
處理器電路114例如可包括一或多個例如為微處理器的計算機處理器、例如為一或多個管理處理器模組的額外電路、命令處理器以及資料處理器模組。在一些例子中,有助於在切換器110以及一或多個主機端102之間通訊的主機端介面可以是端點,例如但不限於是PCIe端點群集,而固態硬碟介面(在一些例子中有可能是PCIe根雜群集)有助於在切換器110以及固態硬碟130, 140, 150之間的通訊。處理器電路114的命令處理器可用以處理來自一或多個主機端102的命令。命令可以是例如自其中一個固態硬碟取來資料的命令以及提供至主機端的或自主機端儲存資料在固態硬碟的命令,例如NVMe命令。處理器電路的命令處理器可用以增加標籤至命令。此標籤可能指示此命令是由一個特定主機端接收。然後,命令被傳送至其中一個可以被指定為該命令一部份的固態硬碟。因此,切換器110可提供需要進行的額外處理以提供在主機端102以及固態硬碟130, 140, 150之間通訊的請求、命令及/或數據的適當路由(routing)與處理,例如標題和位址更改。
在接收命令或請求的回應中,命令或請求被定向到的固態硬碟可傳送例如為PCIe記憶體讀取請求的PCIe記憶體請求至切換器110。PCIe記憶體請求可包括啟動處理器電路114的資料處理器模組的標籤去傳送PCIe記憶體請求至特定主機端以執行與此主機端關聯的命令或請求。管理處理器模組可用以執行切換器110的管理功能。舉例來說,如果NVMe或PCIe交易不符合命令處理器可以執行的項目(譬如由於錯誤或PCIe記憶體請求的複雜性或大小),該功能可能被卸載至管理處理器模組。再舉一個例子,管理處理器模組可管理與固態硬碟130, 140, 150相關聯的保留存取及/或名稱空間的固態硬碟的分區。
在各種範例中,一或多個主機端102可實施為了方便固態硬碟存取的佇列對(例如依據NVMe)。佇列對可以由提交佇列和完成佇列組成。如系統100所示,主機端包括提交佇列105及完成佇列107。主機端也可有額外佇列,例如管理佇列。主機端可生成包括資料儲存請求以獲取儲存在固態硬碟的資料或儲存資料至固態硬碟的命令,例如NVMe命令。其中命令被放置於提交佇列105中。命令由主機端被發送至切換器110,如箭頭104所示。
當命令最終地被固態硬碟130, 140, 150執行後,表示命令所指示的程序已執行完成的指示可以存儲在完成佇列107中。作為這些過程的一部分, 切換器110可包括作為處理器電路114的一部分的裝置佇列管理者模組。裝置佇列管理者模組可提供佇列對118以助於切換器110與固態硬碟130, 140, 150之間的命令的通訊。裝置佇列管理者模組可通過互連137耦接至切換器的每個固態硬碟130, 140, 150維持對應的提交佇列以及完成佇列。如示,佇列對118可包括包含與固態硬碟130(固態硬碟-1)相關的提交佇列和完成佇列的佇列121、包含與固態硬碟140(固態硬碟-2)相關的提交佇列和完成佇列的佇列122以及包含與固態硬碟150(固態硬碟-N)相關的提交佇列和完成佇列的佇列123。可提供額外對的佇列作為佇列118的一部分,以與資料存儲136中包括的任何額外的固態硬碟相關聯。
在各式的範例中,處理器電路114的命令處理器模組可透過分發在提交佇列中分別基於固態硬碟130, 140, 150的佇列對121, 122, 123中的特定一對來終止與存取固態硬碟的請求相關的主機端102所接收的命令,例如NVMe命令,而資料儲存服務請求即是針對該固態硬碟所發出。而後,這些來自主機端102為了資料儲存服務的請求透過由切換器110透過固態硬碟介面116發送的命令可被分配至對應的固態硬碟,如延伸於切換器110與固態硬碟130, 140, 150之間的箭頭111所示。
根據切換器110的指示,一或多個固態硬碟可接收命令。接到命令後,對應的固態硬碟或複數固態硬碟可更新位於固態硬碟內的發送佇列以表示命令已被接收,然後固態硬碟的本機處理器可開始執行被命令指示執行的實際資料儲存過程。
完成請求的資料儲存流程後,一或多個固態硬碟130, 140, 150可發送代表請求的服務已完成的命令,且將完成指示回傳至切換器110,如虛線箭頭113所示。資料存儲過程的完成還可以包括執行該過程的固態硬碟或複數固態硬碟對位於固態硬碟或各複數固態硬碟內的各個完成佇列進行更新,以表示命令所指示的過程已經執行和完成。
在切換器110完成接收完成指示後,指示可被儲存於位於切換器中且與提供完成指示的固態硬碟相關聯的完成佇列的佇列對121, 122, 123中的一個。切換器110的裝置佇列管理模組可處理儲存於完成佇列的完成指示,包含準備由主機端介面112傳送的命令,如由切換器110至主機端介面112的完成佇列107的虛線箭頭108所示。然後,主機端可以通過基於對完成佇列107的更新來清除命令存儲佇列105的提交指示來更新命令的狀態,以表示命令所請求的過程已完成。
如圖1所示,用於將一個或多個主機端102通訊地偶接至切換器110的互連103可能需要與用於可通訊地耦接切換器110至固態硬碟130, 140, 150的通訊格式及/或資料介面不同的通訊格式及/或資料介面。如此,當切換器110處理並格式化從主機102到固態硬碟 130、140和150的資料存儲服務請求,且將回應回傳(包含由固態硬碟至一或多個主機端102的讀取或寫入資料請求)時,通常會需要額外的處理(以及因處理命令產生的時間延遲)  。此外,為了處理這些命令以及資料請求,切換器110通常亦需要冗余地儲存資料在切換器,例如裝置識別、位址、及/或資料,這需要切換器本身提供額外記憶體需求和處理。在主機端102被直接耦接至固態硬碟130, 140, 150而無使用切換器110的例子中,主機端本身需要去處理被執行的資料交易的管理與儲存,因此,將處理和資料存儲要求直接載入到主機端。
如圖1所示,系統100的固態硬碟可用以提供在固態硬碟間的直接通訊而無需涉及一或多個主機端102,例如使用互連137以及一些例子中的互連139。在各式的實施例中,在固態硬碟間的通訊被指引至切換器,例如切換器110,通訊可被當作對等流量而被重新指引至另一個固態硬碟。如圖1所示,固態硬碟130, 140, 150被配置為包括提交佇列及在固態硬碟本身之相應完成佇列,提交佇列與完成佇列允許固態硬碟通訊資料儲存服務或其他直接在相互之間傳輸的資料相關處理的命令及/或請求。
如一個系統100的非限制例子,固態硬碟130包括本機處理器132、記憶體陣列135、提交佇列133及完成佇列134。固態硬碟140包括本機處理器142、記憶體陣列145、提交佇列143及完成佇列144。固態硬碟150包括本機處理器152、記憶體陣列155、提交佇列153及完成佇列154。每一個記憶體陣列135, 145, 155可包括用以允許數位資料由固態硬碟寫入、讀取及消除的持續儲存設備陣列。每個固態硬碟的各個提交佇列和完成佇列可以位於各固態硬碟的各個記憶體陣列的一部分中,或者可以配置為位於每個相應的固態硬碟中的單獨記憶體。每個固態硬碟的本機處理器132, 142, 152可用以管理與各自本機處理器所位於的固態硬碟相關的資料運算,例如讀取、寫入及消除與各自本機處理器所位於的固態硬碟相關的資料運算。
此外,本機處理器132, 142, 152亦用以運行在啟動器模式,其中本機處理器可啟動資料儲存服務或其他由其他固態硬碟執行的資料相關處理的命令及/或請求,其為由本機處理器所位於的固態硬碟發起且不由一個或多個主機端102及/或切換器110發送或接收。在不同的例子中,發起該命令或請求的固態硬碟可以回應於由主機端(例如主機端102)指引到固態硬碟的命令或請求而這樣做,但命令或請求最初僅指引到發起命令或請求的固態硬碟中的另一個固態硬碟。
以非限制性的例子來說,由固態硬碟140(固態硬碟-2)延伸至固態硬碟130(固態硬碟-1)的箭頭147代表一通訊,其可包括由固態硬碟140啟動且與固態硬碟130直接通訊(例如使用互連137)且無通過切換器110的命令或請求,以運行資料儲存服務或其他資料儲存流程。作為啟動通訊的一部分,固態硬碟140的本機處理器142可將一指示輸入固態硬碟140的提交佇列143,指示命令和/或請求已在最初由固態硬碟140生成,且發送到固態硬碟130。在固態硬碟130接收命令及/或請求後,本機處理器132可更新固態硬碟130的提交佇列133來指示請求已被接收,而後繼續處理接收到的命令或請求。由目標固態硬碟的角度來看(在此範例中為固態硬碟130),請求如同由例如主機端(例如主機端102)接收的任何形式的請求。目標固態硬碟不一定具有表示通訊來自另一個固態硬碟的資訊,因此在請求時操作,就好像它來自主機端設備,例如主機端102。
當完成命令或請求的處理後,固態硬碟130的完成佇列134被更新以提供命令或請求已被完成的指示。基於此更新後的指示,本機處理器132清空來自提交佇列133且提供通訊至固態硬碟140命令或請求的接收指示,如在固態硬碟130與固態硬碟140之間延伸的虛線箭頭148所示。通訊包括由固態硬碟生成且啟動的完成命令或請求的指示。在接收由固態硬碟140啟動的命令或請求完成的指示後,本機處理器142以命令或請求完成的指示更新完成佇列144以及更新固態硬碟140的提交佇列143以移除或清除在等待命令或請求的指示。再者,由使用互連137且不通過切換器110或主機端102的固態硬碟130至固態硬碟140的通訊如虛線箭頭148所示。
基於命令或請求完成的指示,或在另一種情況下,亦即當命令或請求還在等待時,固態硬碟140的本機處理器142可運行一或多個其他的程序,包括產生或啟動指向其他包括於資料儲存器136的固態硬碟之一的命令或請求,接收和處理由其他包括於資料儲存器136的固態硬碟的命令或請求,及/或與切換器110通訊及/或處理由主機端102透過切換器110傳送指向用以資料儲存服務的固態硬碟140的命令或請求。固態硬碟140可利用提交佇列143及完成佇列144以追蹤由固態硬碟140啟動和被固態硬碟140請求執行的未決資料儲存操作,並追蹤這些操作的完成情況。
關於在固態硬碟建立的佇列,提交佇列與完成佇列一般僅用於從屬操作,此固態硬碟是接收請求或命令的目標裝置,且回應接收的請求或命令。在這些情況下,提交佇列保存固態硬碟需要執行的所有事務,完成佇列保存已完成並需要報告給請求者的所有事務。換句話說,提交佇列是固態硬碟的輸入,包含固態硬碟被請求執行的所有請求或命令,完成佇列是固態硬碟的輸出佇列及其回應。當固態硬碟操作於啟動器模式時,這些佇列(雖然它們可以有相同名稱)的目的必須從主機端方面來看,包括:提交佇列將是固態硬碟的輸出佇列,記錄啟動器的固態硬碟請求其他固態硬碟執行的所有作業,而完成佇列將是固態硬碟的輸入,包含來自其他固態硬碟的回應。
系統100的例子不受限於特定一個或任何特定用以運作在啟動器模式來生成和發送命令或請求至其他固態硬碟的固態硬碟,且在不同的例子中,一個、一些或耦接在一起作為資料儲存器136的一部分的全部固態硬碟可在啟動器模式下操作,並且生成用於資料儲存服務的命令或請求並直接向其他固態硬碟發出,而無須經過諸如主機端102之類的媒介裝置。固態硬碟130可以在啟動器模式下操作,並且生成和發出一個或多個命令或請求,以將資料儲存過程傳送給固態硬碟140和150中的一個或兩個並由其執行。固態硬碟140和/或固態硬碟150可以在啟動器模式下操作,生成並發出一個或多個命令或請求,以便與一個或多個其他固態硬碟通訊並由其執行資料儲存過程。
固態硬碟130, 140, 150在不通過中繼裝置(例如主機端102)通訊的情況下彼此直接通訊的能力可以藉由無須在一個或多個中繼裝置(例如切換器或主機端)上重複儲存用於在裝置之間傳輸命令/請求的通訊格式和/或資料格式通訊來節省處理時間。在固態硬碟之間的直接通訊可加速整體通訊輸出,因此,通過消除在這些中繼裝置上改變訊息格式的需要來對命令或請求進行總體處理,諸如由主機端至切換器至固態硬碟,且由固態硬碟透過切換器及主機端備份。
系統100的例子不限於固態硬碟的數量。在不同的例子中,系統100可包括至少兩個固態硬碟,也可包括N個固態硬碟(N為正整數),如圖1所示,通常由括弧138所指的點表示。作為一個非限制性的例子,資料儲存可以包括耦接到配置於系統100中的互連137/139的多個單獨的固態硬碟。每一個被包括在系統100的固態硬碟可被通訊地連接至切換器110,如圖1的互連137以及表示通訊連結至任一固態硬碟(由括弧138指的點表示)的虛線箭號139所示。
可由固態硬碟生成並直接與一個或多個其他固態硬碟通訊的資料儲存服務或資料儲存過程的類型不限於任何特定類型的命令或請求。在不同的例子中,命令或請求涉及由主機端(例如主機端102)生成及傳送至一或多個固態硬碟的相同讀取、寫入或消除請求形式。在不同的例子中,個別的固態硬碟例如固態硬碟130, 140, 150有由主機端(例如主機端102)啟動且指向固態硬碟的命令或請求,其中固態硬碟運行任務或命令或請求指示的流程,並在無須涉及任何其他包含於資料儲存器136的固態硬碟的情況下送回任務或流程已被完成的指示。
舉例來說,固態硬碟例如固態硬碟130, 140, 150由主機端(例如主機端102)接收一寫入請求或透過網路106耦接至系統100主機端生成後續的請求至相等的固態硬碟且發送請求至相等的固態硬碟,或複製由固態硬碟和對等固態硬碟執行的寫入請求,例如出於備份的目的。在兩種情況下,接收的固態硬碟仍然是連接遠端主機端以完成任務的固態硬碟,但是實際的任務可以由不同的固態硬碟完成。在一個系統100的例子,可能有一些實體,例如位於固態硬碟中的一個本機處理器,或一個或多個單獨的處理器,它們將在接收固態硬碟之間進行負載平衡,以確保不會出現瓶頸。擁有這樣的解決方案可以實現全框虛擬化,例如,無需添加在現有系統中完成此任務所需的複雜計算資源。
在不同的例子中,具有最初由主機端(例如主機端102)生成並指向個別固態硬碟的命令或請求的個別固態硬碟隨後可以在啟動器模式下操作,並且生成和發出指向到包括在資料儲存器136中的一個或多個固態硬碟的附加命令及/或請求,但主機端生成和發出的命令及/或請求中並沒有具體包含這些內容。作為一個非限制性的例子,例如為主機端102的主機端生成及發送命令去讀取且回傳給此主機端與一電影相關聯的所有資料(例如影像或聲音資料)。命令可被指向至一個單獨固態硬碟,例如固態硬碟130。然而,與電影相關聯的資料可被儲存在包含在資料儲存器136的多個固態硬碟中的一個。在接收起初由主機端生成與發送的命令後,固態硬碟130以運作啟動器模式回應,且生成並發送命令以讀取和轉發與存儲在這些各自固態硬碟上與電影相關聯的固態硬碟130資料至固態硬碟140及/或固態硬碟150。就固態硬碟130發出的命令而言,固態硬碟140和固態硬碟150可以被視為目標固態硬碟,並且回應從固態硬碟130接收到的命令,且可以通過以請求的資料回覆固態硬碟130來執行所需的資料讀取/轉發操作。
在固態硬碟130及固態硬碟140及/或固態硬碟150之間的通訊可發生在互連137,互連137可包括通過切換器110但不需要任何通過主機端102的通訊。當固態硬碟130由固態硬碟140及/或固態硬碟150接收請求的資料後,固態硬碟130可以協調將與電影相關聯的請求資料轉發回切換器110和/或主機端102,以完成在主機端發出並指向到固態硬碟130的命令中最初請求的操作。使包括在資料儲存器136中的固態硬碟在各個固態硬碟之間通過而不需要也通過切換器110或主機端102或由切換器110或主機端102控制的這種能力可以允許對命令進行更快的整體處理,同時根據記憶體和/或處理負載要求卸載主機端102和切換器110。
在不同的例子中,運算在啟動器模式的由固態硬碟請求的運算不會被主機端(例如主機端102)初始生成的命令或請求觸發。作為一個非限制性的例子,資料儲存器136的第一固態硬碟可以生成和發出命令或請求,請求將資料儲存器136的第二固態硬碟中的資料複製到第二固態硬碟中以用於備份目的。這樣的命令可以由第一固態硬碟發起,而不被來自切換器110或主機端102的任何命令或請求提示或觸發。在此例子中,第一固態硬碟可被配置為以預定的時間間隔,或例如基於對觸發事件的檢測,例如檢測到功率損失或系統100的關閉,來發起執行資料備份過程的命令或請求。
可能觸發固態硬碟以啟動器模式運行的其他類型的功能或事件可能包括將任務從啟動器固態硬碟傳輸到目標固態硬碟、從遠端主機處理器虛擬化物理驅動器、資料管理任務、和自癒系統功能。例如,資料儲存器136的固態硬碟可以在啟動器模式下操作以生成命令,請求對包括於資料儲存器136中的其它固態硬碟中存儲的資料執行各種功能,例如計算存儲功能。
用於提供使用在資料儲存器136的固態硬碟之間透過互連137, 139之通訊協定的種類和通訊的網路格式不限於任何特定協定或網路標準。在一個非限制的例子中,介於包括於資料儲存器136的固態硬碟之間的通訊包括使用PCIe作為傳輸層,以及使用MVE作為協定層。變化可包括使用NVMe作為用於通訊的傳輸層。變化可包括使用乙太網路。當作為固態硬碟間之通訊連結的一部分包含乙太網路時,額外的佇列,例如遠端直接記憶體存取(Remote Direct Memory Access, RDMA)佇列對或傳輸控制協定(Control Protocol, TCP),可被設置在固態硬碟以建立這些使用乙太網路通訊格式化的通訊連結固態硬碟的啟動器模式之範例
在不同的例子中,作為資料儲存系統的部分,可通訊地耦接於一起的一或多個固態硬碟可運作在啟動器模式以提供介於第一固態硬碟與第二固態硬碟之間的直接通訊,其中第一固態硬碟作為啟動器以生成及發送與資料儲存管理相關聯的命令及/或請求直接到第二固態硬碟,無須通過例如切換裝置或主機端的媒介裝置通訊,且沒有由主機端發起的命令或請求。
圖2為方法200根據本揭露中不同描述以及同等範例之範例流程圖。方法200包括與在啟動器模式下操作的一個或多個固態硬碟相關聯的各種功能,以生成並向另一固態硬碟發出與資料儲存管理相關聯的直接通訊命令或請求,而不使通訊通過諸如切換器或主機端設備之類的媒介裝置。
在步驟202,方法200包括在第一固態硬碟與第二固態硬碟建立一組佇列,該佇列用以控制第一固態硬碟與第二固態硬碟之間透過耦接於第一固態硬碟與第二固態硬碟的互連的直接通訊。在不同的實施例中,建立在第一固態硬碟的第一組佇列驅動包括第一提交佇列以及第一完成佇列,而建立在第二固態硬碟的第二組佇列包括第二提交佇列以及第二完成佇列。在不同的實施例中,建立在第一固態硬碟的第一佇列驅動包括用於硬碟的協定操作的提交佇列及完成佇列,而在一些實施例,在第一組佇列之上的第二組佇列(例如一個或多個RDMA佇列對或TCP佇列)為結構的協定操作被建立,例如乙太網路。
在步驟204,方法200包括透過第一固態硬碟啟動至少一個命令或請求的生成。在不同的實施例中,請求可包括寫入資料至固態硬碟(例如第二固態硬碟)的記憶體陣列之請求。在不同的實施例中,請求可包括自固態硬碟(例如第二固態硬碟)的記憶體陣列讀取資料之請求。在不同的實施例中,請求可包括由包含於一個固態硬碟(例如第二固態硬碟)中的記憶體陣列的一些部分或全部消除資料之請求。在不同的實施例中,命令可以包括執行與記憶體陣列及/或固態硬碟(例如第二固態硬碟)相關的資料管理操作的命令。
在步驟206,方法200包括透過第一固態硬碟通過互連驅動至少一個命令或請求,以使至少一個命令或請求直接通訊於第一固態硬碟與第二固態硬碟之間。在各種實施例中通訊至少一個命令或請求包括通過PCIe介面驅動至少一個命令或請求。在各種實施例中通訊至少一個命令或請求包括通過介面卡通過NVMe驅動至少一個命令或請求。在不同例子中,通訊至少一個命令或請求包括乙太網路連接。在使用乙太網路連接的例子中,方法200可包括建立第二組或專用於互連的通訊路徑中使用的結構的操作之額外的RDMA、QPs 或TCP佇列。
在步驟208,方法200的實施例包括在第二固態硬碟接收由第一固態硬碟通訊的至少一個命令或請求。接收至少一個命令或請求可包括更新位於第二固態硬碟的至少一個佇列(例如第二固態硬碟中的提交佇列)表示資料儲存相關操作的命令或請求已被第二固態硬碟接收。
在步驟210,方法200的例子包括透過第二固態硬碟對儲存於第二固態硬碟的資料執行一或多個與資料儲存相關的運算作為接收至少一命令或請求的回應。執行一或多個與資料儲存相關的運算可包括寫入資料至包含於第二固態硬碟的記憶體陣列。執行一或多個與資料儲存相關的運算可包括自包含於第二固態硬碟的記憶體陣列讀取資料。執行一或多個與資料儲存相關的運算可包括自包含於第二固態硬碟的記憶體陣列的部分或一些部分消除資料。執行一或多個與資料儲存相關的運算可包括對儲存在第二固態硬碟上的資料執行計算儲存操作。執行一或多個與資料儲存相關的運算可包括重新排列儲存在第二固態硬碟上的資料,例如作為對儲存在第二固態硬碟上的資料執行磁碟重組過程的一部分。
在完成由至少一個命令或請求指示的由第二固態硬碟執行的操作時,方法200的示例包括更新第二固態硬碟中的至少一個佇列,例如第二固態硬碟中的完成佇列,以指示操作已由第二固態硬碟完成固態硬碟。
在步驟212,方法200的例子包括透過第二固態硬碟驅動回覆,將回覆通過互連傳至第一固態硬碟,回覆係代表儲存於第二固態硬碟的資料已完成執行一或多個資料運算。在不同的例子中,由第二固態硬碟讀取的資料亦可透過互連驅動至第一固態硬碟作為由第一固態硬碟啟動及通訊至第二固態硬碟的命令或請求的回應。
在步驟214,方法200的例子包括在第一固態硬碟接收至少指示由命令或請求指示的資料儲存運算已由第二固態硬碟完成的回應。在不同的方法200例子中,在第一固態硬碟接收回應包括以由第一固態硬碟傳送至第二固態硬碟的命令或請求已被完成的指示更新佇列,例如在第一固態硬碟的完成佇列。基於由第一固態硬碟傳送至第二固態硬碟的命令或請求已被完成的指示來更新在第一固態硬碟的對列包括更新第一個固態硬碟上的提交佇列,以清除與提交至少一個命令或請求相關的指示。設備範例
圖3是固態硬碟300的簡化示例方塊圖,固態硬碟300可以根據本發明中描述的各種示例以及其任何等效物進行配置。固態硬碟300的例子可包含本機處理器302、記憶體陣列304、介面306以及一或多個佇列組308。匯流排303被耦接於包括固態硬碟300的不同的元件,且被用以可通訊地耦接於這些元件。固態硬碟300例如可為如圖1所示固態硬碟130, 140及/或150其中一個或多個,且可被用以執行如圖2所示方法200及等同方法200的一些或全部功能。
本機處理器302的範例可包含協調固態硬碟300操作的多處理器、多核心、多節點及/或實現多線處理等。記憶體陣列304的範例不限於任何特定記憶體種類,且可包括隨機存取記憶體(random access memory, RAM)、同步隨機存取記憶體(synchronous RAM, SRAM)、動態隨機存取記憶體(dynamic RAM, DRAM)、零電容隨機存取記憶體(zero capacitor RAM)、雙電晶體隨機存取記憶體(Twin Transistor RAM)、嵌入式DRAM(embedded DRAM, eDRAM)、擴充資料輸出RAM(extended data output RAM, EDO RAM)、雙倍數據率RAM(double data rate RAM, DDR RAM)、電子抹除式可複寫唯讀記憶體(electrically erasable programmable read only memory, EEPROM)、奈米RAM(Nano-RAM, NRAM)、可變電阻式RAM(resistive RAM, RRAM)、矽-氧化物-氮化物-氧化物-矽記憶體(silicon-oxide-nitride-oxide-silicon memory, SONOS)、參數隨機存取記憶體(parameter random access memory, PRAM)等或任何一個或多個其他可實現的非暫態機械可讀媒體。
介面306的範例不限於任何特定種類的介面,且可包括一個或多個由本機處理器302控制的介面設備或模組,用於使用本發明中描述的任何方法和/或技術以及其任何同等技術在固態硬碟300和一個或多個其他固態硬碟之間提供通訊。舉例來說,介面306可由本機處理器控制以提供固態硬碟300與其他固態硬碟透過互連且無須透過媒介裝置(例如主機端裝置)的直接通訊。當固態硬碟300運行在啟動器模式以及生成與發送命令或請求至其他固態硬碟以執行一些資料儲存相關流程時,介面306可提供與其他固態硬碟的直接通訊。當固態硬碟300作為目標固態硬碟運行且接收由運行啟動器模式的其他固態硬碟直接傳送至固態硬碟300的命令或請求時,介面306可提供與其他固態硬碟的直接通訊。
在各種例子中,介面306還可以被配置成從一個或多個主機端(例如,圖1所示的一個或多個主機端102)發送和接收命令和請求,例如,通過切換器110(圖1)等切換設備耦接到固態硬碟300。
匯流排303不限於任何特定種類的匯流排,例如符合PCI、工業標準結構(Industry Standard Architecture, ISA)、PCIe、新匯流排(NuBus)、進階可拓展匯流排(Advanced Extensible Bus)、AXI bus以及乙太網路標準。匯流排303可促進本機處理器302與記憶體陣列304與佇列308之間的通訊。佇列308包括用以允許固態硬碟300與其他固態硬碟之間的通訊連結而建立的一個或多個佇列。在各種示例中,佇列308包括一對佇列310,其包括作為允許在固態硬碟 300和另一個固態硬碟之間建立通訊連結的提交佇列(SQ)和完成佇列(CQ)。根據需要,還可以在佇列308內建立額外佇列(例如由佇列311表示),以提供固態硬碟300與一個或多個主機端通訊時可能需要的任何和所有通訊連結,並且在不需要讓固態硬碟 300與一個或多個其他固態硬碟之間的通訊通過媒介裝置(如切換器或主機端)的情況下,以啟動器模式直接與一個或多個額外固態硬碟通訊通訊。
這些歸因於固態硬碟300的功能可以在硬體和/或儲存在非暫時性機器可讀介質/媒體上的軟體(例如,電腦代碼、程式指令、程式碼、電腦指令)的組合中實現。在一些情況下,本機處理器302和記憶體陣列304可以實現或促進實現功能,且可替代或額外於管理處理器模組、資料處理器模組和/或命令處理器模組。此外,固態硬碟300的示例可包括少於圖3中的元件或額外於圖3的元件(例如,視訊卡、音訊卡、附加網路介面、週邊設備等)
上面已經詳細描述了一些實施例,並且可以進行各種修改。所揭露之標的,包括本說明書中描述的功能操作,可以在電子電路、電腦硬體、韌體、軟體或它們的組合中實現,例如本說明書中公開的結構裝置及其結構等效物:包括一個程式,該程式可使一個或多個資料處理設備(例如處理器)執行所描述的操作(例如編碼在非暫時性電腦可讀媒體中的程式,它可以是記憶體裝置、儲存裝置、機器可讀儲存基板或其他物理、機器可讀媒體,或其中一種或多種媒體的組合)。
程式(也稱為電腦程式、軟體、軟體應用程式、腳本或代碼)可以用任何形式的程式設計語言編寫,包括編譯或解釋語言、聲明或程式編輯語言,並且可以以任何形式部署,包括作為獨立程式或作為模組、元件、子常式或其他適合在計算環境中使用的單元。程式不一定與檔案系統中的檔案對應。程式可以存儲在保存其他程式或資料的檔案的一部分(例如,存儲在標記語言文檔中的一或多個腳本)、專用於所述程式的單個檔案或多個協調檔(例如,存儲一或多個模組、副程式或部分代碼的檔案)中。一個程式可以配置在一台電腦上執行,也可以配置在多台電腦上,該些電腦位於一個位置上,或者分佈在多個位置上,並通過通訊網路互連。
雖然本規範包含許多細節,但不應將其解釋為對可能聲明的範圍的限制,而應將其解釋為對特定實現特定功能的描述。本揭露中在單獨實現的上下文中描述的某些特性也可以在單個實現中組合實現。相反地,在單個實現的上下文中描述的各種特性也可以在多個實現中單獨實現或在任何合適的子組合中實現。此外,儘管上述特徵可被描述為在某些組合中起作用,且即使最初請求項例如來自一個請求的組合的一或多個特徵在某些情況下可以從組合中刪除,並且所要求的組合可以指向子組合或子組合的變體。
類似地,雖然在附圖中以特定順序描述操作,但這不應理解為要求以所示的特定順序或循序執行這些操作,或者要求執行所有所示操作,以獲得期望的結果。在某些情況下,多工和並行處理可能是有利的。此外,不應將上述實現中各種系統元件的分離理解為在所有實現中都需要這種分離。
除非另有說明,在列表前面加上「及」和短語「至少一」不應被視為他排性的列表,也不應被解釋為每一個類別都有一個項目的類別列表。如果一個子句寫著「A、B及C中至少一個」,可被解釋為只包含一個列表的項目、多個列表的項目、和一或多個列表的項目和未列出的另一項。
100:資料儲存系統 101:通訊連結 102:主機端 103,137,139:互連 104,111,147:箭頭 105,133,143,153:提交佇列 106:網路 107,134,144,154:完成佇列 108,113,148:虛線箭頭 110:切換裝置 112:主機端介面 114:處理器電路 116:固態硬碟介面 118,308,310:佇列 121,122,123,311:佇列對 130,140,150,300:固態硬碟 132,142,152,302:本機處理器 135,145,155,304:記憶體陣列 136:資料儲存器 138:括弧 200:方法 202,204,206,208,210,212,214:步驟 303:匯流排 306:介面
圖1示出了包括用以操作於啟動器模式的固態儲存裝置之儲存系統的範例。
圖2為根據本發明及其任何等效物的不同範例方法的流程圖。
圖3是可以根據本發明及其任何等效物中描述的各種示例進行配置的固態硬碟的簡化示例圖。
這些附圖僅是為了說明示例性實施例,但應當理解,這些實施例不限於附圖中所示的設置和工具性。
100:資料儲存系統
101:通訊連結
102:主機端
103,137,139:互連
104,111,147:箭頭
105,133,143,153:提交佇列
106:網路
107,134,144,154:完成佇列
108,113,148:虛線箭頭
110:切換裝置
112:主機端介面
114:處理器電路
116:固態硬碟介面
118:佇列
121,122,123:佇列對
130,140,150:固態硬碟
132,142,152:本機處理器
135,145,155:記憶體陣列
136:資料儲存器
138:括弧

Claims (18)

  1. 一種用於執行記憶體操作的方法,該方法包含:在一第一固態硬碟與一第二固態硬碟建立一組佇列,用以控制該第一固態硬碟與該第二固態硬碟之間透過耦接於該第一固態硬碟與該第二固態硬碟的一互連的直接通訊,包括在該第一固態硬碟建立:用以儲存由該第一固態硬碟向該第二固態硬碟發起的命令指示的一提交佇列;以及用以儲存由該第二固態硬碟執行的命令完成指示的一完成佇列;由該第一固態硬碟啟動將被該第二固態硬碟所執行的至少一命令的生成;由該第一固態硬碟透過該互連驅動該至少一命令,以使該至少一命令直接通訊於該第一固態硬碟與該第二固態硬碟之間;由該第一固態硬碟在該第一固態硬碟的該提交佇列中儲存該至少一命令是由該第一固態硬碟向該第二固態硬碟發起的一指示;在該第一固態硬碟接收來自該第二固態硬碟之該第二固態硬碟完成相應該至少一命令的至少一對應的資料操作的至少一對應的指示;以及更新該第一固態硬碟的該完成佇列以指示該至少一命令已由該第二固態硬碟完成。
  2. 如請求項1所述之方法,還包含:在該第二固態硬碟接收由該第一固態硬碟通訊的該至少一命令;回應接收該至少一命令,該第二固態硬碟對儲存於該第二固態硬碟的資料執行該至少一資料操作;以及由該第二固態硬碟透過該互連驅動將該至少一對應的指示給該第一固態硬碟。
  3. 如請求項1所述之方法,其中耦接於該第一固態硬碟與該第二固態硬碟的該互連利用快捷周邊元件互連(PCIe)及乙太網路(Ethernet)。
  4. 如請求項1所述之方法,其中更新該第一固態硬碟的該完成佇列包含:回應於該第一固態硬碟接收來自該第二固態硬碟的該至少一對應的指示,由該第一固態硬碟以該至少一命令被完成的一指示更新該第一固態硬碟的該完成佇列。
  5. 如請求項1所述之方法,還包含:回應於該第一固態硬碟接收來自該第二固態硬碟的該至少一對應的指示,由該第一固態硬碟從該第一固態硬碟的該提交佇列中移除或清除由該第一固態硬碟向該第二固態硬碟發起的該至少一命令的該指示。
  6. 如請求項1所述之方法,還包含:回應由一主機發起且由該第一固態硬碟接收的一傳入命令,該第一固態硬碟進入一啟動器模式以及啟動該至少一命令的生成。
  7. 如請求項1所述之方法,還包含:該第一固態硬碟進入一啟動器模式以及啟動該至少一命令的生成。
  8. 一種非暫態電腦可讀媒體,儲存複數指令,當被一或多個處理器執行時,使得該一或多個處理器至少:在一第一固態硬碟與一第二固態硬碟建立一組佇列,用以控制該第一固態硬碟與該第二固態硬碟之間透過耦接於該第一固態硬碟與該第二固態硬碟的一互連的直接通訊,包括在該第一固態硬碟建立:用以儲存由該第一固態硬碟向該第二固態硬碟發起的命令指示的一提交佇列;以及用以儲存由該第二固態硬碟執行的命令完成指示的一完成佇列;由該第一固態硬碟啟動將被該第二固態硬碟所執行的至少一命令的生成;通過該互連驅動該至少一命令,以使該至少一命令直接通訊於該第一固態硬碟與該第二固態硬碟之間; 在該第一固態硬碟的該提交佇列中儲存該至少一命令是由該第一固態硬碟向該第二固態硬碟發起的一指示;在該第一固態硬碟接收來自該第二固態硬碟之該第二固態硬碟完成相應該至少一命令的至少一對應的資料操作的至少一對應的指示;以及更新該第一固態硬碟的該完成佇列以指示該至少一命令已由該第二固態硬碟完成。
  9. 如請求項8所述之非暫態電腦可讀媒體,還包含指令,使得:該第二固態硬碟接收自該第一固態硬碟通訊的該至少一命令;回應接收該至少一命令,該第二固態硬碟對儲存於該第二固態硬碟的資料執行該至少一資料操作;以及透過該互連驅動將該至少一對應的指示該第一固態硬碟。
  10. 如請求項8所述之非暫態電腦可讀媒體,其中耦接於該第一固態硬碟與該第二固態硬碟的該互連利用快捷周邊元件互連(PCIe)及乙太網路(Ethernet)。
  11. 如請求項8所述之非暫態電腦可讀媒體,其中用於更新該完成佇列的該些指令,包括:用於回應於該第一固態硬碟接收來自該第二固態硬碟的該至少一對應的指示,從該第一固態硬碟的該提交佇列中移除或清除由該第一固態硬碟向該第二固態硬碟發起的該至少一命令的該指示的指令。
  12. 如請求項8所述之非暫態電腦可讀媒體,還包含:回應於該第一固態硬碟接收來自該第二固態硬碟的該至少一對應的指示,由該第一固態硬碟從該第一固態硬碟的該提交佇列中移除或清除由該第一固態硬碟向該第二固態硬碟發起的該至少一命令的該指示的指令。
  13. 如請求項8所述之非暫態電腦可讀媒體,還包含: 回應由一主機發起且由該第一固態硬碟接收的一傳入命令,用以使該第一固態硬碟進入一啟動器模式以及啟動該至少一命令的生成的指令。
  14. 如請求項8所述之非暫態電腦可讀媒體,還包含:回應與一主機發起的一命令無關的一事件的偵測,用以使該第一固態硬碟進入一啟動器模式以及啟動該至少一命令的生成的指令。
  15. 一種用於在資料儲存系統內操作的第一固態硬碟,該資料儲存系統包括經由一切換裝置通訊地耦接至該第一固態硬碟以及至少一第二固態硬碟的一主機端,該第一固態硬碟包含:一本機處理器;耦接至該本機處理器的一本機記憶體,該本機記憶體用以儲存用以控制該第一固態硬碟與該第二固態硬碟之間透過耦接於該第一固態硬碟與該第二固態硬碟的一互連的直接通訊的一組佇列,該組佇列包括:用以儲存由該第一固態硬碟向該第二固態硬碟發起的命令指示的一提交佇列;以及用以儲存由該第二固態硬碟執行的命令完成指示的一完成佇列;以及一記憶陣列用以儲存持久數位編碼資料(persistent digitally encoded data)於非揮發性記憶體;其中該本機處理器用以:啟動將被該第二固態硬碟所執行的至少一命令的生成;通過該互連驅動該至少一命令,以使該至少一命令直接通訊於該第一固態硬碟與該第二固態硬碟之間;在該第一固態硬碟的該提交佇列中儲存該至少一命令是由該第一固態硬碟向該第二固態硬碟發起的一指示;接收來自該第二固態硬碟之該第二固態硬碟完成相應該至少一命令的至少一對應的資料操作的至少一對應的指示;以及更新該第一固態硬碟的該完成佇列以指示該至少一命令已由該第二固態硬碟完成。
  16. 如請求項15所述之第一固態硬碟,其中該本機處理器還用以:回應於該第一固態硬碟接收來自該第二固態硬碟的該至少一對應的指示,從該第一固態硬碟的該提交佇列中移除或清除由該第一固態硬碟向該第二固態硬碟發起的該至少一命令的該指示。
  17. 如請求項15所述之第一固態硬碟,其中該本機處理器還用以:回應於該第一固態硬碟接收來自該第二固態硬碟的該至少一對應的指示,以該至少一命令被完成的一指示更新該第一固態硬碟的該完成佇列。
  18. 如請求項15所述之第一固態硬碟,其中該本機處理器用以通過該互連使用一快捷周邊元件互連及乙太網路驅動該至少一命令。
TW108146474A 2018-12-20 2019-12-18 具有啟動器模式的固態硬碟 TWI828824B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862783060P 2018-12-20 2018-12-20
US62/783,060 2018-12-20
US16/717,408 2019-12-17
US16/717,408 US11366610B2 (en) 2018-12-20 2019-12-17 Solid-state drive with initiator mode

Publications (2)

Publication Number Publication Date
TW202042077A TW202042077A (zh) 2020-11-16
TWI828824B true TWI828824B (zh) 2024-01-11

Family

ID=69061085

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108146474A TWI828824B (zh) 2018-12-20 2019-12-18 具有啟動器模式的固態硬碟

Country Status (5)

Country Link
US (2) US11366610B2 (zh)
EP (1) EP3671477B1 (zh)
KR (1) KR20200078382A (zh)
CN (1) CN111352583A (zh)
TW (1) TWI828824B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11573708B2 (en) * 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11768613B2 (en) 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11288196B2 (en) * 2020-01-15 2022-03-29 EMC IP Holding Company LLC Efficient data read operation
US11704059B2 (en) 2020-02-07 2023-07-18 Samsung Electronics Co., Ltd. Remote direct attached multiple storage function storage device
US20220300165A1 (en) * 2021-03-22 2022-09-22 Google Llc Cooperative Storage Architecture
US20220311716A1 (en) * 2021-03-25 2022-09-29 Nokia Solutions And Networks Oy Supporting communications for data storage

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102566943A (zh) * 2011-12-31 2012-07-11 记忆科技(深圳)有限公司 基于固态硬盘的通讯方法及固态硬盘
US20180101450A1 (en) * 2016-10-07 2018-04-12 Samsung Electronics Co., Ltd. Storage device capable of performing peer-to-peer communication and data storage system including the same
TW201843596A (zh) * 2017-03-31 2018-12-16 南韓商三星電子股份有限公司 聚集儲存方法、跨結構高速非揮發性記憶體固態硬碟用的容量聚集方法及聚集的乙太網路固態硬碟群組

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7499450B2 (en) 2004-04-30 2009-03-03 Infineon Technologies Ag Router IP port for an IP router
US9313128B2 (en) 2011-02-17 2016-04-12 Nec Corporation Network system and network flow tracing method
US20180107591A1 (en) * 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US9785355B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US10063638B2 (en) 2013-06-26 2018-08-28 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
US9565269B2 (en) 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
EP3295321A4 (en) 2015-05-14 2019-04-24 Apeiron Data Systems ACCESS TO MULTIPLE STORAGE DEVICES FROM MULTIPLE HOSTS WITHOUT DIRECT REMOTE MEMORY ACCESS (RDMA)
KR102430187B1 (ko) * 2015-07-08 2022-08-05 삼성전자주식회사 RDMA NVMe 디바이스의 구현 방법
US10162793B1 (en) 2015-09-29 2018-12-25 Amazon Technologies, Inc. Storage adapter device for communicating with network storage
US10769098B2 (en) 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
EP3279810B1 (en) 2016-06-14 2019-09-04 Huawei Technologies Co., Ltd. Data access method and related apparatus and system
US10311008B2 (en) 2016-08-12 2019-06-04 Samsung Electronics Co., Ltd. Storage device with network access
US20180088978A1 (en) * 2016-09-29 2018-03-29 Intel Corporation Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container
EP3352087B1 (en) 2016-12-05 2020-09-16 Huawei Technologies Co., Ltd. Control method for data read/write command in nvme over fabric framework, device and system
US10691368B2 (en) 2017-03-31 2020-06-23 Samsung Electronics Co., Ltd. System and method for providing data replication in NVMe-oF ethernet SSD
US10459665B2 (en) 2017-04-03 2019-10-29 Samsung Electronics Co., Ltd. System and method of configuring NVMe-oF devices using a baseboard management controller (BMC)
US10275180B2 (en) 2017-05-08 2019-04-30 Samsung Electronics Co., Ltd. Ethernet SSD system including storage offload engine (SoE) controller and ethernet switch
US10860508B2 (en) 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
US10423358B1 (en) 2017-05-31 2019-09-24 FMAD Engineering GK High-speed data packet capture and storage with playback capabilities
US10719474B2 (en) 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US20190163364A1 (en) 2017-11-30 2019-05-30 Eidetic Communications Inc. System and method for tcp offload for nvme over tcp-ip
US10761775B2 (en) 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
US10963394B2 (en) 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
US11003229B2 (en) * 2018-07-02 2021-05-11 Samsung Electronics Co., Ltd. Cost-effective solid state disk data protection method for hot removal event
US11231764B2 (en) 2018-10-17 2022-01-25 Samsung Electronics Co., Ltd. System and method for supporting chassis level keep alive in NVME-of based system
US10671302B1 (en) 2018-10-26 2020-06-02 Pure Storage, Inc. Applying a rate limit across a plurality of storage systems
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
KR20200087052A (ko) 2019-01-10 2020-07-20 삼성전자주식회사 NVMe-SSD 저장 장치 및 NVMe-oF 호스트 유닛 사이의 통신 관리 시스템 및 방법
US10877682B2 (en) 2019-01-10 2020-12-29 Western Digital Technologies, Inc. Non-disruptive cross-protocol live data migration
WO2020183246A2 (en) 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Termination of non-volatile memory networking messages at the drive level
WO2020183444A1 (en) 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Transferring data between solid state drives (ssds) via a connection between the ssds
CN113767361A (zh) 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 启用以太网的固态驱动器(ssd)

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102566943A (zh) * 2011-12-31 2012-07-11 记忆科技(深圳)有限公司 基于固态硬盘的通讯方法及固态硬盘
US20180101450A1 (en) * 2016-10-07 2018-04-12 Samsung Electronics Co., Ltd. Storage device capable of performing peer-to-peer communication and data storage system including the same
TW201843596A (zh) * 2017-03-31 2018-12-16 南韓商三星電子股份有限公司 聚集儲存方法、跨結構高速非揮發性記憶體固態硬碟用的容量聚集方法及聚集的乙太網路固態硬碟群組

Also Published As

Publication number Publication date
EP3671477A1 (en) 2020-06-24
KR20200078382A (ko) 2020-07-01
US11366610B2 (en) 2022-06-21
CN111352583A (zh) 2020-06-30
US20220317936A1 (en) 2022-10-06
EP3671477B1 (en) 2021-11-03
US11640269B2 (en) 2023-05-02
TW202042077A (zh) 2020-11-16
US20200201575A1 (en) 2020-06-25

Similar Documents

Publication Publication Date Title
TWI828824B (zh) 具有啟動器模式的固態硬碟
TWI625674B (zh) 用於支援在主機上運行的多個虛擬機器的nvme控制器虛擬化的系統和方法
US9501245B2 (en) Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
US9430268B2 (en) Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US8949486B1 (en) Direct memory access to storage devices
US10474496B1 (en) Dynamic multitasking for distributed storage systems by detecting events for triggering a context switch
US10241722B1 (en) Proactive scheduling of background operations for solid state drives
CN107077447B (zh) 共享的虚拟化本地存储装置
US20140351492A1 (en) System and method for non-volatile random access memory emulation
US10956189B2 (en) Methods for managing virtualized remote direct memory access devices
EP3350700B1 (en) Multi root i/o virtualization system
KR20190142178A (ko) 판독 명령 실행을 위한 NVMeoF RAID 구현 방법
CN114286993B (zh) 数据存储系统中的链路速度恢复
US11899544B2 (en) Efficient synchronization of cloud enabled file system database during snapshot restore operation
US11144232B2 (en) Storage system with efficient snapshot pair creation during synchronous replication of logical storage volumes
US10120594B1 (en) Remote access latency in a reliable distributed computing system
US10942821B1 (en) Method and apparatus for dynamic binding and unbinding thin logical storage volumes to snapshots of a file system
JP7247405B2 (ja) ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法
WO2016188014A1 (zh) 数据存储方法和装置
US20160283134A1 (en) Data replication across host systems via storage controller
US11971855B2 (en) Supporting multiple operations in transaction logging for a cloud-enabled file system
TW202416147A (zh) 具有啟動器模式的固態硬碟
US11010248B2 (en) Reuse of resources in a storage controller for executing write commands over a plurality of interfaces
EP4148572B1 (en) Computational storage device and storage system including the computational storage device