TW201720123A - 用於透過乙太式網路遠端存取記憶體及輸入/輸出之特快非揮發性記憶體控制器 - Google Patents
用於透過乙太式網路遠端存取記憶體及輸入/輸出之特快非揮發性記憶體控制器 Download PDFInfo
- Publication number
- TW201720123A TW201720123A TW105128392A TW105128392A TW201720123A TW 201720123 A TW201720123 A TW 201720123A TW 105128392 A TW105128392 A TW 105128392A TW 105128392 A TW105128392 A TW 105128392A TW 201720123 A TW201720123 A TW 201720123A
- Authority
- TW
- Taiwan
- Prior art keywords
- nvme
- remote
- state
- buffer
- extended
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/263—Network storage, e.g. SAN or NAS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/604—Address structures or formats
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/645—Fibre channel identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/106—Mapping addresses of different types across networks, e.g. mapping telephone numbers to data network addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5038—Address allocation for local use, e.g. in LAN or USB networks, or in a controller area network [CAN]
Abstract
本發明揭示一種用於使得特快非揮發性記憶體(NVMe)能夠用於透過乙太網路或其他網路存取遠端固態硬碟(SSD) (或其他類型之遠端非揮發性記憶體)之方法及系統。提供一種經擴充NVMe控制器以使得CPU能夠使用NVMe協定來存取遠端非揮發性記憶體。在一個伺服器上實施該經擴充NVMe控制器以經由乙太網路交換器與其他伺服器或非揮發性記憶體通信。藉由修改該NVMe協定而透過該乙太網路或類似網路使用該NVMe協定以提供一特殊乙太網路上NVM訊框。
Description
本發明一般而言係關於透過一網路藉由使用特快非揮發性記憶體(NVMe)協定而以低延時存取遠端記憶體。
通常,一CPU可籍由使用網路協定而透過一網路存取遠端記憶體或I/O裝置。存取遠端記憶體或I/O裝置之一種習用方法係透過iSCSI儲存裝置。此方法使用由CPU進行之顯著處理,此增加總存取延時。經由iSCSI儲存裝置存取遠端記憶體或I/O裝置通常具有比本端記憶體或I/O裝置之一直接存取大四至五倍之延時。此導致需要透過一網路之遠端記憶體或I/O裝置存取之系統之明顯效能及輸送量降級。 處理本端非揮發性記憶體存取之一相對新介面標凖係特快NVM (NVMe),有時稱作非揮發性記憶體主機控制器介面規範。NVMe係允許主機軟體與一非揮發性記憶體子系統通信之一暫存器層級介面。此介面經最佳化用於通常附接至特快PCI (PCIe)介面之企業及用戶端固態硬碟(SSD)。NVMe提供對本端非揮發性記憶體之一直接I/O存取。與透過傳統I/O介面(諸如SAS (串列SCSI)或SATA (串列ATA))連接相比,使用NVMe減少了讀取及寫入操作之延時。 然而,NVMe具有與透過乙太網路交換器或其他類型之網路傳遞資料有關之一限制。通常,NVMe經設計以存取本端SSD且並非依據透過一網路存取遠端儲存裝置而定義。如現今所定義之NVMe不提供由多個主機CPU透過一網路存取多個遠端SSD之解決方案。因此,需要使得NVMe能夠透過一網路(例如,乙太網路)高效地工作以透過該網路存取遠端SSD及命名空間。
本發明藉由提供使得能夠使用NVMe命令來透過一外部網路(諸如乙太網路)存取遠端非揮發性記憶體之一系統而克服先前技術之限制。在一項態樣中,一經擴充NVMe控制器提供此能力。 在一種方法中,一經擴充NVMe控制器使得一CPU能夠使用NVMe協定來存取遠端非揮發性記憶體(例如,SSD)。舉例而言,在一個伺服器上實施該經擴充NVMe控制器以經由一乙太網路交換器與其他伺服器或SSD通信。可藉由提供一乙太網路上NVM (NVMoE)訊框而透過乙太網路使用該NVMe協定。在一項實施方案中,定義一NVMoE訊框,從而規定由該經擴充NVMe控制器透過乙太網路傳輸之一NVMoE命令。該經擴充NVMe控制器包含用於基於該NVMoE訊框之定義而將一NVMe命令轉換成一NVMoE命令之一轉換機制。具體而言,由用於將NVMe命令之NVMe控制器及/或命名空間識別符(NSID)之主機識別符(HSID)映射至包含於NVMoE命令中之乙太網路媒體存取控制(MAC)位址之一映射表來支援該轉換機制。 在另一態樣中,該經擴充NVMe控制器配備有用於自透過外部網路傳輸之NVMe命令之損失復原之一再試機制。該再試機制包含用於偵測一NVMe命令之一損失之一計時器且若該NVMe命令根據該計時器判定為丟失,則該再試機制將重新發佈該NVMe命令。 在又一態樣中,該經擴充NVMe控制器達成多路徑I/O及命名空間共用。多路徑I/O係指一單個主機與一命名空間之間的兩個或兩個以上完全獨立實體PCIe路徑。命名空間共用係指兩個或兩個以上主機使用不同NVMe控制器來存取一共同共用命名空間之能力。該等經擴充NVMe控制器中之一或多者可使得一主機能夠透過多個PCIe路徑存取一單個命名空間且使得兩個或兩個以上主機能夠存取一共用命名空間。 本發明之另一態樣包含一經擴充NVMe儲存網路,該經擴充NVMe儲存網路包含多個本端NVMe儲存節點及耦合該多個NVMe儲存節點之一外部網路。該等本端NVMe儲存節點包含一或多個主機處理器、如上文所闡述之該等經擴充NVMe控制器及本端非揮發性記憶體。 在一項例示性實施例中,該外部網路可包含一L3網路。因此,該等經擴充NVMe控制器可包含用於將該等NVMe命令轉譯成由L3封包標頭囊封並因此適合於透過該L3網路傳輸之NVMoE命令的命令轉譯器。 本文中亦闡述該經擴充NVMe儲存網路之各種實例性應用以適合不同情境。在一項應用中,該經擴充NVMe儲存網路實施為一伺服器機櫃,其中該等本端儲存節點包含該伺服器機櫃中之伺服器且外部網路包含一機櫃頂部乙太網路交換器。在另一應用中,該經擴充NVMe儲存網路實施為包含一單個主機之一單個伺服器,其中每一本端NVMe儲存節點包含一專用經擴充NVMe控制器及一基於專用本端非揮發性記憶體之命名空間。在又一實例性應用中,該經擴充NVMe儲存網路包含至少兩個主機處理器且經由該兩個經擴充NVMe控制器提供冗餘。 在一額外實施例中,該經擴充NVMe控制器支援負載平衡。為達成負載平衡,該經擴充NVMe控制器之一本端儲存介面經由一本端非揮發性記憶體之記憶體通道將該經擴充NVMe控制器耦合至針對該本端非揮發性記憶體之一本端命名空間,使得記憶體通道以一均勻散佈耦合至該經擴充NVMe控制器之複數個埠。 在另一額外實施例中,一經擴充NVMe目錄伺服器包含一網路介面,該網路介面用以將該目錄伺服器耦合至具有複數個經擴充NVMe控制器之一外部網路。該目錄伺服器亦具有一記憶體,該記憶體經調適以儲存所指派NVMe識別符與網路位址之間的映射。該目錄伺服器亦具有一處理器,該處理器用以將一或多個訊息發送至該經擴充NMVe控制器以將可用NVMe識別符指派至請求一NVMe識別符之經擴充NVMe控制器且將該指派作為一映射儲存於該記憶體中。 在另一實施例中,該經擴充NVMe控制器藉由探查遠端經擴充NVMe控制器以獲得一遠端緩衝器狀態且將其緩衝器中之每一者之一緩衝器狀態傳輸至遠端經擴充NVMe控制器而支援流控。 本發明之其他態樣包含與上文所闡述之態樣有關之方法、系統、組件、裝置、改良、應用及其他態樣。 本發明之額外特徵及優點將在以下說明中加以陳述,且該等額外特徵及優點將自該說明部分地顯而易見,或可藉由本發明之實踐獲知。本發明之各種優點可藉由書面說明及其申請專利範圍以及隨附圖式中所特定指出之結構予以實現及獲得。應理解,前述一般說明及以下詳細說明兩者皆係例示性及闡釋性的且意欲提供對如所主張之本發明之進一步闡釋。
相關申請案交叉參考
本申請案主張2015年9月2日提出申請之美國申請案第14/843,884號、2015年9月2日提出申請之美國申請案第14/843,891號、2015年9月2日提出申請之美國申請案第14/843,892號及2015年11月30日提出申請之美國申請案第14/954,691號之權益,所有該等申請案以其全文引用之方式併入本文中。另外,本申請案係關於2013年6月26日提出申請之美國臨時申請案第61/839,389號及2014年2月26日提出申請之美國申請案第14/191,335號,該等申請案以其全文引用之方式併入本文中。 通常,一NVMe控制器與一單個PCI功能相關聯。一控制器所支援之能力指示於控制器能力(CAP)暫存器中且作為控制器及命名空間資料結構之部分藉由一識別命令傳回。控制器資料結構指示應用於整個控制器之能力及設定。命名空間資料結構指示對一特定命名空間特有之能力及設定。另外,NVMe控制器係基於一成對提交及完整佇列機制。命令由主機軟體放置至一提交佇列中。完整項由控制器放置至相關聯完整佇列中。多個提交佇列可利用相同完整佇列。提交及完整佇列分配於主機記憶體中。 本發明係針對用於使用NVMe協定透過一網路達成對遠端非揮發性記憶體(例如,SSD)命名空間之存取以減少存取延時之一方法。因此,一經擴充NVMe控制器使得主機CPU能夠使用NVMe協定來存取遠端非揮發性記憶體。各圖及以下說明與僅藉由圖解說明方式之較佳實施例相關。應注意,依據以下論述,本文中所揭示之結構及方法之替代實施例將易於視為可在不背離所主張內容之原理之情況下採用之可行替代方案。 現在參考圖1A,根據一項例示性實施例繪示圖解說明一經擴充NVMe儲存網路之一系統100之一方塊圖。經擴充NVMe儲存網路100可係一乙太網路上NVMe架構之一項實例。在所圖解說明例示性實施例中,經擴充NVMe儲存網路100包含兩個本端NVMe儲存節點111a、111b及耦合該兩個本端NVMe儲存節點111a、111b之一外部網路(包含一交換器114)。經擴充NVMe儲存網路100亦包含以通信方式耦合至包含交換器114之外部網路之一目錄伺服器116。在一項實施例中,外部網路係一乙太網路。在其他實施例中,外部網路可係光纖通道(FC)或無限頻帶(IB)類型之網路。 兩個本端NVMe儲存節點111a、111b各自包含一主機處理器(例如,CPU A或CPU B)、一經擴充NVMe控制器112A、112B以及由NVMe命名空間(例如,NVM NS 1-1及NVM NS 1-2或NVM NS 2-1及NVM NS 2-2)表示之本端非揮發性記憶體。在一項實施例中,非揮發性記憶體係一固態硬碟(SSD)。在另一實施例中,非揮發性記憶體係一硬碟機。經擴充NVMe控制器112A、112B分別經由其自身主機介面耦合至CPU (例如,CPU A、CPU B)。舉例而言,包含於一經擴充NVMe控制器112A、112B中之主機介面可係一特快PCI (PCIe)介面。另外,經擴充NVMe控制器112A、112B包含其各別直接網路介面以將其耦合至外部網路(包含交換器114)。舉例而言,為將經擴充NVMe控制器112A、112B耦合至一乙太網路,直接網路介面可係乙太網路MAC介面。此外,經擴充NVMe控制器112A、112B經由一或多個本端儲存介面而各自耦合至本端非揮發性記憶體之其本端NVMe命名空間。舉例而言,經擴充NVMe控制器112A經由一本端儲存介面耦合至其本端NVMe命名空間(例如,NVM NS 1-1及NVM NS 1-2)。類似地,經擴充NVMe控制器112B經由包含於控制器112B中之另一本端儲存介面耦合至其本端NVMe命名空間(例如,NVM NS 2-1及NVM NS 2-2)。 經擴充NVMe控制器112A、112B分別在節點111a、111b內自其主機CPU (例如,CPU A、CPU B)接收針對其本端NVMe命名空間(例如,NVM NS 1-1及NVM NS 1-2或NVM NS 2-1及NVM NS 2-2)之NVMe命令且為CPU提供對其本端命名空間之I/O存取。舉例而言,經擴充控制器112A可自CPU A接收存取本端命名空間NVM NS 1-1及NVM NS 1-2之NVMe命令。由於NVMe控制器112A、112B具有其本端命名空間之位址之一清晰定義,因此NVMe控制器112A、112B可處理命令。 在一項實施例中,經擴充NVMe控制器112A、112B (亦個別地或共同地稱作112)可自其主機CPU (例如,CPU A或CPU B)接收針對耦合至外部網路之遠端非揮發性記憶體之一遠端命名空間之NVMe命令。舉例而言,經擴充NVMe控制器112A可自CPU A接收針對耦合至外部網路之NVM NS 2-1或NVM NS 2-2之一NVMe命令。舉例而言,此在節點111a中之CPU A期望自節點111b中之遠端命名空間NVM NS 2-1或NVM NS 2-2讀取資料/寫入資料至節點111b中之遠端命名空間NVM NS 2-1或NVM NS 2-2時發生。根據圖1中之所圖解說明例示性實施例,經擴充NVMe控制器112可應用一乙太網路上NVMe (NVMoE)協定以透過外部網路交換器(例如,一收斂增強型乙太網路交換器或甚至傳統乙太網路交換器)傳輸NVMe命令。此一新協定有益地允許一CPU使用NVMe協定來存取附接至一不同經擴充NVMe控制器之一命名空間或呼叫一遠端命名空間。此進一步使得CPU能夠僅以區域存取延時存取一遠端命名空間。 為達成此,經擴充NVMe控制器112將針對一遠端命名空間之NVMe命令轉換成適合於透過外部網路傳輸之一格式,使得可將命令傳輸至區域地耦合(諸如經由一本端儲存介面耦合)至遠端命名空間之另一經擴充NVMe控制器112。通常,一NVMe控制器具有一64位元主機識別符(HSID)且一NVMe命名空間具有一32位元命名空間識別符(NSID)。HSID可藉由主機透過NVMe設定特徵命令而組態。為清晰起見,應注意此處所參考且本發明通篇中所使用之主機識別符(HSID)通常由一探索伺服器指派並用於將經擴充NVMe控制器映射至一MAC位址(或其他網路位址)且不具有與NVMe規範中所定義之HSID相同之含義。NSID係一連續命名空間序列1至n,其中n係可用命名空間之總數目。在一項例示性實施例中,經擴充NVMe控制器112可藉由利用用於將一NVMe命令中之HSID及NSID映射至用於透過乙太網路傳輸之乙太網路MAC位址之一機制而將該NVMe命令轉換成用於透過乙太網路傳輸之一適合格式。下文在圖2中圖解說明適合於透過乙太網路傳輸之NVMe命令之格式之一定義。 在圖1A之實例中,每一儲存節點111a、111b包含可發佈NVMe命令之一主機處理器(CPU A、CPU B)、可由本端及遠端主機處理器存取之本端非揮發性記憶體(NVM NS 1-1、1-2、2-1、2-2)以及可接受NVMe命令、可存取本端非揮發性記憶體且可將NVMe命令轉換成用於存取遠端非揮發性記憶體之NVMoE命令之一經擴充NVMe控制器(112A、112B)。此功能性中之某些功能性係習用NVMe功能性,舉例而言,一主機處理器存取一本端非揮發性記憶體。此功能性中之某些功能性係由於圖1A中之系統100為雙向。 圖1B係僅圖解說明系統100之經擴充NVMe能力(且僅沿一個方向)之一方塊圖。具體而言,CPU A發佈針對遠端非揮發性記憶體NVM NS 2-1及NVM NS 2-2之NVMe命令。在此實例中,經擴充NVMe控制器112A接收NVMe命令且應用一NVMoE協定以透過外部網路交換器114傳輸NVMe命令。經擴充NVMe控制器112B接收NVMoE命令、將其轉換回成NVMe命令且因此存取非揮發性記憶體NVM NS 2-1及NVM NS 2-2。當起此等特定作用時,經擴充NVMe控制器112A可稱作一NVMoE起始器且經擴充NVMe控制器112B可稱作一NVMoE目標。節點111a及111b可分別稱作NVMoE起始器節點及NVMoE目標節點。注意在圖1A中,每一經擴充NVMe控制器112起起始器及目標兩者之作用。因此,圖1A中之節點111a及111b可稱作NVMoE雙向節點。 然而,在圖1B中,經擴充NVMe控制器112A僅起起始器之作用且經擴充NVMe控制器112B僅起目標之作用。因此,自圖1A中不存在與非揮發性記憶體NVM NS 1-1及NVM NS 1-2之互動。因此,在圖1B中未展示非揮發性記憶體NVM NS 1-1及NVM NS 1-2。事實上,節點111a可不具有任何本端儲存裝置且可不用作一儲存節點。若如此,則經擴充NVMe控制器112A可具有經減少功能性。其不需要以下功能性:存取本端非揮發性記憶體或起針對自其他節點接收之NVMoE命令之目標之作用。節點111a可稱作一NVMoE起始器節點。類似地,在節點111b處,不需要CPU B,此乃因無NVMoE命令係源自節點111b。另外,經擴充NVMe控制器112B亦可具有經減少功能性。其不需要與一本端主機處理器介接且亦不需要將NVMe命令轉換成NVMoE以存取遠端非揮發性記憶體。節點111b可稱作一NVMoE目標節點。與圖1A中之經擴充NVMe控制器112A、112B相比,圖1B中之經擴充NVMe控制器112A、112B可為經簡化(且較廉價)版本。另一選擇係,圖1B中之經擴充NVMe控制器112A、112B可具有與圖1A中之經擴充NVMe控制器112A、112B相同之全功能性以(舉例而言)減少總體部件計數,但其中啟用少於全功能性之功能性。 在某些實施方案中,NVMoE起始器亦管理一NVMe命令佇列。在此一實施方案中,NVMoE起始器將來自一命令佇列中之一個元素之一NVMe命令囊封至一NVMoE訊框中。NVMoE起始器亦可在NVMoE訊框中之其他欄位中指示識別命令來自哪一NVMe佇列之資訊。NVMoE目標隨後處理命令且傳回含有指示命令之完整狀態之一欄位之一NVMoE訊框。NVMoE起始器隨後將命令之完整狀態投遞於適當NVMe完整佇列上。在此一系統中,NVMoE起始器管理NVMe佇列之所有態樣。此外,NVMoE起始器亦可依據NVMe規範管理NVMe中斷。 注意,除命令之外,由NVMoE起始器建立之NVMoE訊框亦可包含資料(舉例而言,將被寫入至一儲存位置之資料)。類似地,由NVMoE目標傳回之NVMoE訊框亦可含有資料(諸如自一儲存位置讀取之資料)。當傳回讀取資料時,NVMoE起始器在將狀態投遞至完整佇列之前將讀取資料寫入至主機記憶體,如NVMe規範中所定義。另外,NVMoE起始器可在內部產生NVMoE訊框。此等NVMoE訊框可被發送至其他NVMoE起始器或一目錄服務或伺服器。 圖2圖解說明根據一項例示性實施例之乙太網路上NVMe (NVMoE)訊框結構200之一定義。乙太網路上NVMe (NVMoE)訊框200包含一目的地MAC位址(例如,一48位元目的地MAC位址)。在MAC位址之所有位元當中,24個最高有效位元建構組織唯一識別符(OUI)。NVMoE訊框亦包含:一來源MAC位址(例如,一48位元來源MAC位址);一IEEE 802.1Q標籤,諸如一虛擬區域網路(VLAN)/服務品質(QoS) 1Q標籤;一類型碼「ET」;及一版本號碼「VER」 (例如,一4位元版本號碼)。類型碼「ET」可用於指示此係一乙太網路上NVMe類型之訊框。另外,NVMoE訊框200包含定義Admin及I/O命令之一NVMe訊框,及一訊框檢查序列(FCS) (例如,針對整個NVMoE訊框之一32位元訊框檢查總和)。在此實例中,不存在針對NVMe訊框之單獨循環冗餘檢查(CRC)。在一項實施例中,經擴充NVMe控制器112可使用諸如圖2中所展示之訊框200之一NVMoE訊框來規定呈適合於透過乙太網路傳輸之一格式之一NVMe命令。 返回參考圖1,亦圖解說明根據例示性實施例之一HSID及NSID指派機制。在乙太網路上NVMe協定中,一HSID包含由CPU組態之64個位元。在附接有經擴充NVMe控制器112之CPU將一命令發送至一遠端NVMe命名空間時,其與目錄伺服器116通信。在一項例示性實施例中,目錄伺服器116可係一軟體定義儲存(SDS)控制器。在實務中,SDS控制器116可駐存於管理網路交換器114之相同CPU上。然而,其亦可實施於與管理交換器114之一者不同之一CPU上。SDS控制器116具有一目錄,該目錄管理整個經擴充NVMe儲存網路100內之NVMe儲存節點111a、111b (亦個別地或共同地稱作111)之所有HSID及NSID,使得不存在所指派HSID以及所指派NSID之重複。舉例而言,針對不同本端NVMe儲存節點111,SDS控制器116將不同HSID指派至不同CPU且將不同NSID指派至不同命名空間。因此,一儲存節點111中之每一命名空間具有唯一HSID及NSID。對於諸如CPU A及CPU B之不同CPU,相同命名空間之NSID可係不同的,而在上層應用中,命名空間應理解為相同邏輯命名空間,不管其不同命名空間ID如何。 圖1亦圖解說明根據例示性實施例之一NVMe至乙太網路映射表。一旦指派HSID及NSID,為透過乙太網路交換器114傳輸及接收NVMe命令及資料,經擴充NVMe儲存網路100便將一經擴充NVMe控制器之HSID及一NVMe命名空間之NSID映射至MAC位址。圖3A圖解說明48位元MAC位址之一結構。因此,為將64位元HSID映射至48位元MAC位址,要使用一64位元至48位元映射。經擴充NVMe控制器112使用MAC位址之最高有效24個位元之OUI且使用所指派HSID [23:0]作為填寫網路介面控制器(NIC)特有的MAC位址之較低24個位元之開始位址。若不只期望HSID之較低24個位元,則其他映射係可能的。 為NSID至MAC位址映射,使用一32位元至48位元映射。經擴充NVMe控制器112使用上文HSID所映射MAC位址及本端NSID作為命名空間MAC位址。亦即,MAC位址之較高24個位元係OUI;較低24個位元用於NSID特定值。(再次,若不只期望NSID之較低24個位元,則其他映射係可能的。) 以此方式,經擴充NVMe控制器所使用之MAC位址可係連續的且易於管理。一個經擴充NVMe控制器卡使用MAC位址空間中之1+n個位址,其中1個位址用於HSID且n個位址用於命名空間控制器所使用之NSID命名空間。其他經擴充NVMe控制器之NSID係基於其OUI及開始NIC ID而被映射。在一項實施例中,目錄伺服器116之SDS控制器可處置並管理HSID及NSID至MAC位址之映射。在其他例示性實施例中,經擴充NVMe控制器112可藉由維持用於將HSID及NSID映射至MAC位址之一映射表而處置HSID及NSID至MAC位址之映射。 在一項實施例中,此映射使得使用L2學習機制成為可能,此乃因實施例使用乙太網路MAC位址來識別HSID及NSID。因此,可應用L2網路交換器之行為。在一項實施例中,一個目錄伺服器116亦管理收斂增強型乙太網路(CEE) MAC位址至實體埠映射。在一項實施例中,單根I/O虛擬化(SR-IOV)支援可經由經擴充NVMe控制器之虛擬功能(VF)而使用不同MAC位址。 一旦將HSID及NSID映射至如圖3中所圖解說明之乙太網路MAC位址,經擴充NVMe控制器112便使用MAC位址來產生如圖2中所圖解說明之NVMoE訊框。因此,圖3A亦圖解說明圖2中所繪示之NVMoE訊框之第一部分(例如,MAC位址)。 在一項實施例中,HSID及NSID至MAC位址之映射儲存於如圖3B中所圖解說明之一表330中。此映射表可儲存於目錄伺服器116中。如圖3B中所圖解說明,映射表將HSID或NSID (取決於裝置是一主機還是儲存裝置)映射至MAC位址。映射表亦指示所映射裝置是一主機還是儲存裝置(亦即,儲存節點)、其為作用還是非作用(亦即,不可達)及映射是靜態填入還是動態填入(亦即,使用網路探索來獲知)。在一項實施例中,一主機與儲存裝置共用相同MAC位址以及一經擴充NVMe控制器上之相同實體埠。舉例而言,一主機及一儲存裝置兩者可耦合至相同NVMe控制器,該NVMe控制器具有一單個乙太網路MAC介面。在此一情形中,主機及儲存裝置共用相同MAC位址。 在一項實施例中,在一儲存裝置關機之前,其關於關機而通知目錄伺服器116,此後目錄伺服器116通知所附接主機終止與彼特定儲存裝置(例如,非揮發性記憶體)之進一步通信。為此,目錄伺服器116較佳地知曉哪些主機已向儲存裝置註冊(例如,藉由一作用工作階段)。此可儲存於映射表中,如圖3C中之例示性表360中所圖解說明。在例示性表360中,具有「0.0.0.0.1.0.0.1」及「0.0.0.0.1.0.0.2」之HSID之兩個主機已向具有NSID 「0.0.128.0」之儲存裝置註冊。目錄伺服器116可能已自主機接收到此註冊請求。此註冊指示此兩個主機可與儲存裝置(例如,經由一作用工作階段)通信。當目錄伺服器116自具有NSID 「0.0.128.0」之儲存裝置接收一關機通知時,該目錄伺服器通知具有「0.0.0.0.1.0.0.1」及「0.0.0.0.1.0.0.2」之HSID之主機由於關機而終止與該儲存裝置之通信。在一項實施例中,目錄伺服器116等待來自主機之指示通信已終止之一應答(或等待一逾時),且作為回應,目錄伺服器116通知儲存裝置其可繼續關機。在一項實施例中,例示性表360亦針對每一NSID儲存一控制器ID。此係具有NSID之對應命名空間所實體耦合至的經擴充NVMe控制器之識別符。 在一項實施例中,目錄伺服器116及NVMoE網路上之裝置支援一特殊化位址分配及管理協定(其可稱作非揮發性記憶體位址解析(NVMAR)協定)。NVMAR允許將HSID及NSID分配至裝置。NVMAR可包含具有MAC位址、HSID/NSID、命名空間(NS)保留狀態、NS錯誤狀態及NS全域唯一識別符(GUID)之一映射表,類似於圖3B至圖3C中所展示之映射表。在請求後,此映射資訊可在網路中之各種裝置當中共用。在一項實施例中,映射表在重新啟動及其他關機或錯誤事件期間係持久的。 圖3D圖解說明NVMAR之一例示性訊息格式390。在該訊息中,目的地及來源MAC位址係訊息之目的地及來源。VLAN標籤識別用於乙太網路上NVMe之VLAN。可針對NVMAR訊息指示一新乙太類型。用戶端MAC係與目錄伺服器116通信之裝置。一NGUID係裝置之一全域唯一識別符。用戶端類型指示裝置是一主機還是一儲存裝置。用戶端ID係裝置之HSID/NSID。伺服器NGUID係目錄伺服器116之一全域唯一識別符。選項結束指示訊息之結束。 在某些實施例中,定義多個NVMAR訊息類型。此等可包含但不限於一ID探索訊息、一ID提供訊息、一ID請求訊息、一ID應答訊息、一ID否定應答訊息、一ID釋放訊息、一ID識別訊息、一ID通知訊息、一ID回覆訊息、一ID保留訊息及一ID標籤訊息。取決於訊息之類型,額外訊框資料可包含於訊息中。 為獲得一HSID/NSID,一裝置(例如,一主機或儲存節點)在一初始狀態期間廣播一ID探索訊息以探索支援NVMAR之目錄伺服器116。在某些實施例中,可存在一個以上支援NVMAR之伺服器。一ID探索訊息之訊息類型可係「IDDISCOVER」。針對此一訊息將用戶端ID欄位設定為零。目的地MAC可係一廣播MAC位址。隨後,目錄伺服器116以具有訊息類型「IDOFFER」之一ID提供訊息來回應。將用戶端ID欄位設定為可供裝置採取之所提供HSID/NSID。裝置可然後將具有訊息類型「IDREQUEST」之一ID請求訊息發送至目錄伺服器116以請求所提供HSID/NSID。目錄伺服器116以指示對請求之應答之具有訊息類型「IDACK」之一ID應答訊息來回應。另一選擇係,目錄伺服器116可以指示無法分配特定HSID/NSID之具有訊息類型「IDNACK」之一ID否定應答訊息來回應。 在某一時刻,一裝置可希望取消其HSID/NSID分配(例如,當關機或變為非作用時)。裝置可然後將一ID釋放訊息發送至目錄伺服器116。ID釋放訊息可包含指示一釋放狀態(例如,順利關機)之額外訊框資料。 在另一態樣中,一主機裝置可將一ID識別訊息發送至目錄伺服器116以請求所分配HSID/NSID之狀態。此訊息之訊框資料可針對識別請求包含一識別符。目錄伺服器116可將具有包含HSID/NSID與MAC位址映射表中之項目之訊框資料之一ID回覆訊息發送至一ID識別訊息。 在又一態樣中,目錄伺服器116可將指示任何問題(諸如一丟失之活動信號、一錯誤、一ID釋放訊息、一儲存裝置之非作用等等)之一ID通知訊息發送至該儲存裝置之任何經註冊主機。此一訊息之訊框資料可另外包含所關注問題之一識別符。 一主機裝置可將指示其希望與一儲存裝置通信之一ID保留訊息發送至目錄伺服器116。此訊息之訊框資料可另外包含保留或不保留儲存裝置之一指示。目錄伺服器116可然後針對儲存裝置更新經註冊HSID以包含主機裝置之HSID。 一裝置可進一步發送指示一當前狀態之一ID標籤訊息(例如,一活動信號(heartbeat))。此訊息可包含具有關於狀態(例如,作用或非作用)之資訊之訊框資料。此可回應於由目錄伺服器116進行之一輪詢請求。 現在參考圖4至圖5,圖4圖解說明根據一項例示性實施例之用於使得NVMe命令能夠透過乙太網路傳輸之一方法之一流程圖。圖5圖解說明對應於圖4中所繪示之方法之一項實施例之一例示性經擴充NVMe控制器。在所圖解說明實施例中,經擴充NVMe控制器112包含一PCIe介面及DMA邏輯模組以透過PCI介面自主機處理器(CPU)接收NVMe命令及/或資料。所接收NVMe命令及/或資料可係針對一本端記憶體/儲存裝置之一本端命名空間或針對一遠端記憶體/儲存裝置之一遠端命名空間。PCIe介面及DMA邏輯模組負責處置來自主機CPU及至主機CPU之PCIe讀取及寫入命令且亦負責排程至CPU主機記憶體之DMA寫入及自CPU主機記憶體之DMA讀取。 經擴充NVMe控制器112亦可包含將排程管理(Admin)及輸入/輸出(I/O)提交佇列410用於所接收命令及/或資料之處理及傳輸之一排程及仲裁邏輯模組(或一排程器及仲裁器)。此外,經擴充NVMe控制器112可將所接收NVMe命令轉換成適合於透過外部網路傳輸至耦合至一遠端命名空間之另一NVMe控制器112之一格式。舉例而言,經擴充NVMe控制器112包含一NVMe至NVMoE命令轉譯器以將HSID及NSID映射至MAC位址420且基於映射將NVMe命令轉譯成NVMoE命令430。具體而言,在一項例示性實施例中,命令轉譯器包含可查詢用於將HSID及NSID映射至乙太網路MAC位址之一映射表之一NVMe至NVMoE映射器。基於映射,命令轉譯器可將NVMe命令轉譯成NVMoE命令。 NVMe命令包含判定一NVMe控制器提取一命令以供執行所按照之優先級之一優先級等級。在一較低優先級佇列中之命令之前提取一較高優先級佇列中之命令。將Admin命令設定為最高優先級,其中一或多個優先級等級在此最高優先級等級之下。在一項實施例中,當將命令自NVMe轉譯成NVMoE時,一Admin命令之最高優先級及任何其他較低NVMe優先級等級被轉譯成具有一適當IEEE 802.1Q優先級碼點(PCP)欄位之一乙太訊框,使得在該乙太訊框中反映優先級等級。NVMe優先級等級至PCP欄位值之映射可係基於一映射表。 經擴充NVMe控制器112進一步包含一傳輸器,該傳輸器將NVMoE命令傳輸至耦合至網路之另一經擴充NVMe控制器112以在耦合至另一控制器112之遠端命名空間中交換資料440。傳輸器將基於所映射乙太網路MAC位址經由乙太網路MAC介面而透過乙太網路傳輸NVMoE命令。 熟習此項技術者將瞭解,所提議經擴充NVMe控制器112係可縮放的。經擴充NVMe控制器112提供以經減少延時透過乙太網路對SSD之遠端存取。 圖6圖解說明根據一項例示性實施例之經擴充NVMe控制器之一詳細結構。在所圖解說明實施例中,經擴充NVMe控制器112包含用於處置與PCIe介面之命令及/或資料通信之一PCIe介面及訊息信號中斷(MSI)/MSI-X處理模組。經擴充NVMe控制器112亦包含一提交Q管理程式及管理提交佇列之一佇列仲裁器。佇列仲裁器亦可自PCIe介面及MSI/MSI-X處理模組讀取實體區域頁(PRP)或分散聚集列表(SGL)資料。經擴充NVMe控制器112包含用於將HSID及NSID映射至MAC位址之一MAC位址映射器。此外,經擴充NVMe控制器112包含剖析自PCIe介面接收之NVMe命令之一NVMe命令剖析器,及基於所映射MAC位址而格式化NVMe命令以產生NVMoE命令之一NVMe至NVMoE格式器。經擴充NVMe控制器112亦可包含用以緩衝NVMoE命令之一共用緩衝集區。然後可自共用緩衝集區將NVMoE命令發送出穿過一內部SSD介面及乙太網路媒體存取控制器(例如,10GE MAC或40GE MAC)。如使用虛線602a、602b、602c所繪示,共用緩衝集區可提供對自NVMe至NVMoE格式器流動至內部SSD介面及乙太網路MAC之命令及/或資料之流控。經擴充NVMe控制器112亦包含與NVMe命令剖析器及共用緩衝集區協作以緩衝並處理自內部SSD介面及乙太網路MAC介面接收之NVMe命令傳回佇列之一NVMe完整佇列處理器及NVMe控制器命令處理器。 圖7圖解說明根據一項例示性實施例之由經擴充NVMe控制器112用以規定NVMoE命令之NVMoE訊框700之一結構。通常,所圖解說明NVMoE訊框700具有與圖2中所定義之結構相同之結構。然而,圖7中所圖解說明之NVMoE訊框700包含NVMe訊框之作為NVMoE訊框之一部分之一詳細結構。NVMe訊框包含:一7位元類別值,其定義NVMoE訊框資料之訊框資料之類型;一Admin/IO位元,其中0指示此係一Admin命令且1指示此係一I/O命令;一命令碼,其如NVMe規範中所定義;SEQ_ID[15:0],定義NVMe I/O命令中之所發佈命令之次序且用於識別整個I/O命令中之子命令之序列之16個序列標籤位元;Q_ID[15:0],自起始器識別提交佇列之16個佇列ID位元;CMD_ID[15:0],識別提交佇列中之命令之16個命令ID位元;LENGTH[15:0],定義命令之大小之16個長度資訊位元;位址向上及位址向下[47:0],以DWORD指向NVMe儲存裝置中之邏輯區塊位址或實體記憶體位址之48個位址位元;NVMe資料,其闡述NVMe命令;及狀態[31:0],指示資料是否包含任何錯誤或可報告警告訊息之32個狀態欄位位元。 注意,在扇區大小係4096位元組或更大時,NVMe附加項資料總計為少於所傳輸資料之1%。 圖8係一NVMoE訊框800之另一實施例之一圖式。與圖7中所展示之NVMoE訊框700相比,NVMoE訊框800另外包含:一時間戳記,其闡述用於量測延時之16個時間戳記資訊位元;NVME命令DW[10:15],其可通過NVMoE命令訊框;標頭FCS,其闡述在NVMoE標頭上產生之CRC值;後設資料;及完整雙字組(CMPL DWord或CMPL DW),達成如NVMe規範中所定義之完整之兩個DW。 在一項實施例中,802.11Q標籤包含一標籤協定識別符、標籤控制資訊(優先級碼點、丟棄合適指示符及VLAN識別符)。乙太類型(ET)可係乙太網路上NVMe之一新類型。類別區段中之位元可指示是一主機還是儲存裝置為訊息之來源、特快周邊組件互連(PCIe)埠號碼及一PCIe單根I/O虛擬化(SR-IOV)虛擬功能(VF)號碼。 admin位元可指示命令究竟係一admin命令還是一I/O命令。碼位元可指示一作業碼。「最後」位元識別當前訊框中之當前命令是否係作為一原子性存取之部分之一系列命令中之最後命令,且「第一」位元指示該系列中之相同但係第一命令。命令標籤位元可在其中由於訊框大小限制(例如,每訊框4 KB)而將訊框分成多個訊框之情形中識別訊框。 保留位元可指示訊框之一索引值。記憶體位址位元可指示用於資料傳送處理之控制器記憶體空間中之位址。佇列ID (Q_ID)識別主機裝置CPU發佈命令至其的提交佇列。命令ID (CMD_ID)由一主機裝置CPU設定且可識別提交佇列中之命令。 命令DW區段可用於將命令DWORD傳遞至目的地裝置。當訊框包含一admin命令時,最終命令DWORD (DW15)係命令之NSID。Header_FCS位元係對標頭之前六十個位元之一32位元循環冗餘檢查(CRC)之一訊框檢查序列。 完整佇列項目DWORD (CMPL_DW)指示一實體頁位址(PPA)命令或一寫入PPA原始資料命令之通過或失敗狀態。狀態位元指示各種狀態資訊。狀態位元之高16個位元係NVMe規範之狀態位元(例如,DNR、M、SCT及SC)。低16個位元係對乙太網路上NVMe特有之狀態位元。此等低位元可具有對admin命令、讀取/抹除命令及寫入/清除命令進行流控之一指示。此等低位元可指示各種錯誤或警告碼(例如,高錯誤率、不可復原之錯誤、逾時、位址超出範圍、無效命令、封包CRC錯誤、訊框不匹配、一般故障等等)。訊框可為針對整個乙太網路訊框之一CRC之一訊框檢查總和(FCS)結束。 圖9圖解說明根據一項例示性實施例之透過L3網路之一經擴充NVMe儲存系統。在所圖解說明例示性實施例中,系統900包含與圖1中所展示之系統100之組件類似之組件。舉例而言,系統900包含各自包含一經擴充NVMe控制器912A、912B、912C (亦個別地或共同地稱作912)之NVMe儲存節點911a、911b、911c (亦個別地或共同地稱作911)。在一項實施例中,經擴充NVMe控制器912具有與圖1中所展示之經擴充NVMe控制器112類似之功能性。舉例而言,經擴充NVMe控制器912可將NVMe命令轉譯成NVMoE格式。 在一項實施例中,不同於經擴充NVMe控制器112,經擴充NVMe控制器912進一步使得訊框之NVMoE格式透過閘道器/隧道918A、918B (亦個別地或共同地稱作918) (諸如無狀態式傳輸層隧道(STT)、虛擬可擴充LAN (VXLAN)或使用同屬路由囊封(NVGRE)之網路虛擬化)而透過L3網路行進。舉例而言,經擴充NVMe控制器912可囊封STT或VXLAN或者NVGRE作為L3封包標頭且將L3封包標頭添加至NVMoE訊框。在一項實施例中,為支援一較小MTU大小(諸如1.5千位元組),閘道器/隧道(功能) 918可先給原始NVMoE訊框分段,然後在接收到原始訊框之分段時將該等分段發送並重裝至原始NVMoE訊框中。 圖9亦展示用於一I/O命令之一可靠傳輸之一再試機制。儘管收斂增強型乙太網路訊框係無損失的,但由於乙太網路交換器914A、914B中之資料惡化或其他錯誤而發生某一封包丟棄係可能的。類似地,諸如由於L3網路之訊務擁塞,因此封包資料之損失亦可發生在L3乙太網路中。為自所傳輸NVMe命令資料之損失復原,經擴充NVMe儲存系統900可併入不同類型之再試機制。舉例而言,經擴充NVMe儲存系統900可實施一基於硬體之再試機制,使得若一特定I/O命令不返回,則系統900可因一逾時而重新發送I/O命令。經擴充NVMe控制器912針對每一NVMoE命令指派一計時器,且在經擴充NVMe控制器912將NVMoE命令發佈至乙太網路介面以供傳輸時,計時器開始運行。因此,若計時器逾時且一對應NVMoE命令未返回,則其指示所發佈NVMoE命令已在網路中丟失,且經擴充NVMe控制器912因此重新發佈一NVMoE命令以供傳輸。以此方式,經擴充NVMe儲存系統900可自一NVMoE命令損失復原。 另外,系統900可支援NVMe層級處之一基於軟體之再試機制。軟體NVMe驅動器針對每一所發佈命令包含一計時器。一旦在計時器逾時時一特定NVMe命令未傳回,則軟體NVMe驅動器將中止原始NVMe命令並重新發送一新NVMe命令。 現在參考圖10,圖解說明根據一項例示性實施例之由NVMe儲存系統900使用之一NVMoE訊框1000。NVMoE訊框1000可透過閘道器/隧道918 (諸如STT、VXLAN或NVGRE)而透過L3網路行進。如上文所提及,為使得NVMoE訊框能夠透過L3網路行進,經擴充NVMe控制器912將STT或VXLAN或者NVGRE之囊封添加至NVMoE訊框1000。舉例而言,在所圖解說明實施例中,NVMoE訊框1000具有插入至該訊框中之一L3封包標頭。 圖11A至圖11B圖解說明經擴充NVMe儲存網路作為一伺服器機櫃之一應用模型,其中經擴充NVMe控制器經由乙太網路交換器通信。所圖解說明應用模型係一伺服器機櫃及機櫃頂部交換器系統,其中NVMe儲存節點可包含伺服器機櫃中之伺服器且外部網路可包含機櫃頂部交換器。在所圖解說明實施例中,伺服器A之CPU A可經由經擴充NVMe控制器(可透過交換器發送及接收資料)存取伺服器B中之命名空間NS_B1及NS_B2。所提議經擴充NVMe控制器就經減少存取延時而言提供優點。 經擴充NVMe控制器連同SSD命名空間一起安裝於伺服器之PCIe槽中,乙太網路連接器透過乙太網路電纜連接至機櫃頂部交換器。在此情形中,伺服器可透過NVMoE協定而共用SSD命名空間,如由例示性實施例所闡述。 圖12A至圖12B圖解說明根據一項例示性實施例之經擴充NVMe儲存網路作為一單個伺服器系統之一應用模型。在例示性實施例中,單個伺服器系統包含一單個主機(CPU)及各自包含一專用經擴充NVMe控制器及一專用本端非揮發性記憶體之多個NVMe儲存節點。經擴充NVMe控制器可充當一主機匯流排配接器(HBA)。存在自經擴充NVMe控制器出來之多個介面。然後經擴充NVMe控制器可將每一介面連接至一SSD命名空間。以此方式,主機(CPU)能夠以低延時(比傳統SAS/SATA介面低之延時)存取SSD命名空間。圖12A至圖12B亦展示HBA起始器及裝置。 圖13圖解說明根據一項例示性實施例之經擴充NVMe儲存網路作為一高可用性雙伺服器系統1300之一應用模型。在所圖解說明雙伺服器系統1300中,經擴充NVMe控制器連同SSD命名空間一起安裝於伺服器(例如,伺服器A、伺服器B)之PCIe槽中。每一伺服器包含一主機處理器(CPU)。乙太網路連接器用於將兩個伺服器中之NVMe控制器連接在一起。在此情形中,伺服器A及伺服器B可在作用-作用模式或作用-待用模式中工作,從而共用貯存於伺服器A及伺服器B中之所有命名空間。若一個伺服器之CPU出故障,則另一服務器之CPU可接管。另外,有可能,駐存於伺服器B上之命名空間可係駐存於伺服器A上之命名空間之一鏡射複本且在將命名空間寫入於伺服器A上時保持同步。因此,若伺服器A出故障,則伺服器B可接管而不具有資料損失。 注意,命名空間NS_A1、NS_A2、NS_B1及NS_B2係邏輯驅動器(亦即,非揮發性記憶體之區塊之收集)。其出現分別作為CPU A及CPU B之驅動器。 圖14係圖解說明根據一項例示性實施例之經擴充NVMe儲存網路作為一雙埠式伺服器系統1400之一應用模型之一圖式。系統1400可係包含具有其本端命名空間控制器之兩個經擴充NVMe控制器之一雙CPU單伺服器系統。兩個經擴充NVMe控制器透過乙太網路介面彼此連接。在所圖解說明實施例中,系統1400包含連接至兩個CPU之兩個PCIe埠,其中一個PCIe介面連接至每一CPU。每一PCIe埠將CUP連接至經擴充NVMe控制器。以此方式,系統1400可支援雙埠PCIe SSD控制器應用。 圖15圖解說明根據一項例示性實施例之一命名空間控制器。如例示性實施例中所展示,命名空間控制器包含一乙太網路MAC介面、一命令處理器、一資料緩衝器管理程式、一ECC編碼器/解碼器、一快閃記憶體排序器、一FTL管理邏輯模組、一快閃區塊管理程式及一廢棄項目收集管理程式。乙太網路MAC介面接收或發送NVMoE訊框。命令處理器解譯NVMoE命令訊框資料。在命令由命令處理器處理或自ECC解碼器接收時,資料緩沖模組儲存NVMoE命令。FTL管理邏輯模組視情況將邏輯區塊位址轉換成實體頁位址。快閃區塊管理程式管理一區塊之狀態,不管其是否處於一特定P/E週期內還是需要再新。廢棄項目收集管理程式管理回收一非揮發性記憶體區塊資料之時序以獲得較多自由區塊以抹除及寫入。ECC編碼器/解碼器可視情況添加錯誤校正寫碼能力以校正非揮發性記憶體位元錯誤。快閃記憶體介面排序器控制命令及資料介面,使得基於NVMoE命令及廢棄項目收集管理程式之需要而儲存及讀取資料。 圖16圖解說明用於經擴充NVMe控制器112之一例示性負載平衡機制1600。儘管圖16中所圖解說明之例示性經擴充NVMe控制器112A包含四個來源埠且經擴充NVMe控制器112B包含三個目的地埠,但在其他實施例中,經擴充NVMe控制器112A及112B包含不同數目個來源及/或目的地埠。舉例而言,此等埠可係10 GE埠。 一本端命名空間之每一儲存裝置可具有多個快閃記憶體通道(例如,NAND實體通道)。在某些情境中,透過經擴充NVMe控制器112之一單個埠發送所有通道可導致效能瓶頸。替代地,經擴充NVMe控制器112基於正被讀取或寫入之資料之實體頁位址(PPA)之低位元(例如,較低4個位元)或邏輯區塊位址(LBA)之低位元(例如,較低4個位元)以及4個位元之一來源埠號碼遮罩而將每一記憶體通道指派且可重新指派至來源埠中之一或多者,以判定用於每一通道之埠。在其他實施例中,經擴充NVMe控制器跨越不同埠指派且可重新指派記憶體通道,使得遍歷每一埠之資料係相等的或處於其他埠中之每一者之一特定範圍(例如,5%)內。在圖16A之負載平衡實例中,基於經擴充NVMe控制器112A之來源埠遮罩,通道0、4、8及C去往來源埠0,通道1、5、9及D去往埠1,通道2、6、A及E去往埠2,且通道3、7、B及F去往埠3。一類似方案用於一經擴充NVMe控制器112之目的地埠,且在圖16中針對經擴充NVMe控制器112B之三個目的地埠展示一例示性通道散佈。使用此一方法,跨越來源/目的地埠儘可能均勻地散佈(條帶化)快閃記憶體通道。 在某些實施例中,用於來源(亦即,起始器)之經擴充NVMe控制器112亦判定目的地(亦即,目標)處之經擴充NVMe控制器之埠及其對應網路位址。此可係經由發送至與目的地處之經擴充NVMe控制器112相關聯之一已知網路位址之一探索訊息或藉由自一目錄伺服器請求資訊(例如,使用一通知類型訊息)。來源處之經擴充NVMe控制器112然後在各種來源埠當中散佈本端命名空間之儲存裝置之記憶體通道。來源處之經擴充NVMe控制器112基於目的地處之埠之目的地埠遮罩之低位元而將透過來源埠中之每一者傳輸之個別訊息進一步引導至目的地埠,使得跨越目的地埠均勻地散佈此等訊息。來源處之經擴充NVMe控制器112能夠藉由改變每一訊息之目的地網路位址而將個別訊息傳輸至不同目的地埠。 在一項實施例中,當經擴充NVMe控制器112之埠中之一者出故障、被移除或被添加時,經擴充NVMe控制器112可基於PPA/LBA位址及一新埠號碼遮罩(其基於經改變埠組)之較低4個位元而將針對出故障之埠之通道動態地重新指派至其他埠。 圖17係用於NVMoE之流控之一例示性狀態圖1700。儘管圖17中展示某些例示性狀態,但在其他實施例中,狀態及此等狀態之間的轉變可係不同的。在一項實施例中,NVMoE之一來源及對應目標兩者皆支援流控。來源及目標可各自係一儲存節點、一主機裝置或一儲存裝置。來源正將命令發送至目標。目標具有一讀取緩衝器、一寫入緩衝器及一控制緩衝器(例如,針對admin命令)。讀取緩衝器緩衝自其他裝置(諸如來源)接收之讀取請求。寫入緩衝器緩衝自其他裝置接收之寫入命令,且其他控制資料緩衝器緩衝自其他裝置接收之其他控制資料。當然,來源裝置亦可在其自其他裝置接收命令時起一目標之作用且將具有其自身之緩衝器組以用於流控。 圖17之狀態圖用於控制自來源至目標之流且可單獨地應用於目標之三個緩衝器中之每一者。當緩衝器狀態達到特定等級時,目標將一流控訊息發送至來源以指示緩衝器之狀態等級。在圖17中,此等緩衝器等級按自最空至最滿之次序係:「耗盡」、「饑餓」、「滿足」及「滿」,其中耗盡指示緩衝器係空的或接近空的且滿指示緩衝器達到或接近容量。來源接收流控訊息且可然後根據圖17之狀態圖而減少或增加至目標之資料或控制資料流。 除目標緩衝器之狀態等級之外,圖17亦展示來源之狀態:「XON」、「XSLOW」、「XOFF」及「探查」。來源可最初以探查狀態開始。在探查狀態中,來源可首先判定目標之緩衝器狀態。若緩衝器之狀態等級係滿,則來源針對彼目標轉變1710為發送狀態XOFF,在此情形中無資料或控制資料被發送。替代地,來源可延遲達一時間週期、將另一探查請求發送至目標且在對彼探查請求之回應指示一不同緩衝器狀態時發送資料。若狀態等級係滿足,則來源轉變1712為發送狀態「XSLOW」,在此情形中資料或控制資料以一緩慢或經減小速度(例如,全速度之一半)發送。若狀態等級係饑餓或耗盡,則來源轉變1714為發送狀態「XON」,在此情形中資料或控制資料以全速度發送。 週期性地,來源可關於目標之緩衝器之狀態等級而輪詢目標或目標可以其他方式更新其狀態等級。來源根據圖17之狀態圖改變狀態,此取決於目標之流控訊息。注意,狀態圖具有遲滯性。舉例而言,若來源處於狀態XON中,則一狀態等級饑餓將使狀態保持為XON且一狀態等級滿足將使狀態移動至XSLOW。然而,一旦來源處於狀態XSLOW中,一狀態等級饑餓便將不使狀態移動回至XON。而是,狀態將由於遲滯性而保持處於XSLOW,且需要較低狀態等級耗盡來使狀態移動至XON。 在一項實施例中,當來源將資料或控制資料發送至目標時,來源亦發送針對目標之各別緩衝器之緩衝器狀態等級之其當前指示符。若目標判定此緩衝器狀態等級不正確,則目標將正確緩衝器狀態等級發送至來源,該來源然後更新緩衝器狀態等級之其當前指示符且視需要改變發送狀態。 在一項實施例中,來源以一預定義時間間隔(例如,每一秒)將緩衝器狀態等級之其當前指示符週期性地發送至目標。 在一項實施例中,若來源不能夠判定目標之緩衝器狀態等級,則可在一規定週期之後發生一逾時且來源可返回至圖17之探查狀態。 參考圖18,圖解說明用於實施本發明之一例示性計算系統1800。計算系統1800包含呈一個人電腦(或一節點) 20或伺服器或者諸如此類之形式之一個一般用途計算裝置(亦即,一主機節點),該一般用途計算裝置包含一處理單元21、一系統記憶體22及將包含系統記憶體之各種系統組件耦合至處理單元21之一系統匯流排23。系統匯流排23可係包含一記憶體匯流排或記憶體控制器、一周邊匯流排及一區域匯流排之使用多種匯流排架構中之任一者之數種類型之匯流排結構中之任一者。系統記憶體包含唯讀記憶體(ROM) 24及隨機存取記憶體(RAM) 25。 含有諸如在啟動期間幫助在電腦20內之元件之間傳送資訊之基本常式的一基本輸入/輸出系統26 (BIOS)儲存於ROM 24中。個人電腦/節點20可進一步包含用於自一硬碟讀取且寫入至該硬碟之一硬碟機(未展示)、用於自一可抽換式磁碟29讀取或寫入至可抽換式磁碟29之一磁碟機28及用於自一可抽換式光碟31讀取或寫入至可抽換式光碟31之一光碟機30,諸如一CD-ROM、DVD-ROM或其他光學媒體。 硬碟機、磁碟機28及光碟機30分別由一硬碟機介面32、一磁碟機介面33及一光碟機介面34連接至系統匯流排23。磁碟機及其相關聯電腦可讀媒體提供對個人電腦20之電腦可讀指令、資料結構、程式模組及其他資料之非揮發性儲存。 儘管本文中所闡述之例示性環境採用一硬碟、一可抽換式磁碟29及一可抽換式光碟31,但熟習此項技術者應瞭解,可儲存可由一電腦存取之資料之其他類型之電腦可讀媒體(諸如磁盒、快閃記憶體卡、數位視訊磁碟、伯努利(Bernoulli)盒式磁帶、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、固態硬碟及諸如此類)亦可用於例示性作業環境中。 若干個程式模組可儲存於硬碟、固態硬碟、磁碟29、光碟31、ROM 24或包含一作業系統35 (較佳地WINDOWS™)之RAM 25上。電腦20包含與作業系統35相關聯或包含於作業系統35內之一檔案系統36 (諸如WINDOWS NT™檔案系統(NTFS))、一或多個應用程式37、其他程式模組38及程式資料39。一使用者可透過諸如一鍵盤40及指向裝置42之輸入裝置將命令及資訊鍵入至個人電腦20中。 其他輸入裝置(未展示)可包含一麥克風、操縱桿、遊戲墊、衛星接收碟、掃描機或諸如此類。此等及其他輸入裝置通常透過耦合至系統匯流排之一串列埠介面46連接至處理單元21,但可藉由諸如一並列埠、遊戲埠或通用串列匯流排(USB)之其他介面連接。一監視器47或其他類型之顯示裝置亦經由諸如一視訊配接器48之一介面連接至系統匯流排23。 除監示器47之外,個人電腦通常亦包含其他周邊輸出裝置(未展示),諸如揚聲器及印表機。諸如一硬碟機、一固態硬碟、一磁帶或其他類型之儲存裝置之一資料儲存裝置亦經由一介面連接至系統匯流排23,諸如經由一連接介面(諸如整合式驅動電子器件(IDE)、進階技術附接(ATA)、超ATA、小電腦系統介面(SCSI)、SATA、串列SCSI、PCIe及諸如此類)之一主機配接器。 電腦20可使用至一或多個遠端電腦49之邏輯連接而在一網路連線環境中操作。遠端電腦(或電腦) 49可係另一個人電腦、一伺服器、一路由器、一網路PC、一同儕裝置或其他共同網路節點,且通常包含上文關於電腦20所闡述之元件中之諸多或所有元件。 電腦20可進一步包含一記憶體儲存裝置50。邏輯連接包含一區域網路(LAN) 51及一廣域網路(WAN) 52。此等網路連線環境在辦公室、全企業電腦網路、內部網路及網際網路中係常見的。在用於一LAN網路連線環境中時,個人電腦20透過一網路介面或配接器53連接至區域網路51。 在用於一WAN網路連線環境中時,個人電腦20通常包含用於透過廣域網路52 (諸如網際網路)建立通信之一數據機54或其他構件。可係內部或外部之數據機54經由串列埠介面46連接至系統匯流排23。在一網路連線環境中,關於個人電腦20所繪示之程式模組或其部分可儲存於遠端記憶體儲存裝置中。將瞭解,所展示之網路連接係例示性的且可使用建立電腦之間的一通信鏈路之其他構件。 應理解,本發明中所給出之實例意欲係實例。其他變化將係顯而易見的,如圖19至圖23中所展示。舉例而言,儲存網路組態並不限於圖中所展示之節點數目且不同類型之節點可組合於一儲存網路中。圖19係圖解說明使用圖1A中所展示之全功能之經擴充NVMe控制器之一經擴充NVMe儲存網路之一系統之一方塊圖。如圖1A中,圖19中之NVMoE雙向節點1911a至1911e中之每一者包含一主機處理器CPU、一經擴充NVMe控制器(標記為NVMoE-B,其中「B」代表雙向)及本端非揮發性記憶體NVM。來自任何節點1911之主機處理器可存取任何節點1911中之遠端非揮發性記憶體。在一替代實施例中,存取可被分離。舉例而言,可准許任何主機處理器僅存取特定遠端非揮發性記憶體。 圖20係圖解說明使用圖1B中所展示之起始器及目標經擴充NVMe控制器之一經擴充NVMe儲存網路之一系統之一方塊圖。節點2011a至2011c僅含有由NVMoE-I指示之起始器。存在一主機處理器但無本端非揮發性記憶體。節點2011d至2011g僅含有由NVMoE-T指示之目標。不需要主機處理器。在所展示之實例中,存在三個NVMoE起始器節點2011a至2011c及四個NVMoE目標節點2011d至2011g。來自起始器節點2011a至2011c中之任一者之主機處理器可存取任何目標節點2011d至2011g中之遠端非揮發性記憶體,儘管亦可實施較受限制存取。在一特殊情形中,可僅存在一個NVMoE起始器節點2011及諸多NVMoE目標節點2012。舉例而言,可期望一主機處理器存取比將透過直接NVMe連接可獲得多之資料儲存裝置。 作為另一實例,圖21展示雙向節點2111b、2111e、起始器節點2111a、2111c與目標節點2111d、2111f、2111g之一混合。 圖22係根據另一實施例之實施一經擴充NVMe儲存網路之一機櫃安裝式系統2200之一圖式。機櫃安裝式系統包含一單元2210,該單元通常可係一2U高或3U高擱架(shelf)。單元2210包含在圖22中標記為00至23之24個刀鋒槽。刀鋒槽04至23中之每一者含有具有由「T」表示之一NVMoE目標之一NVM刀鋒。在此實例中,NVM刀鋒係SSD刀鋒。刀鋒槽00至01及02至03含有用於運行額外功能(諸如一探索服務或其他NVMoE管理功能)之冗餘伺服器。刀鋒中之每一者連接至一內部L2乙太網路交換器2215。SSD刀鋒經由其NVMoE目標控制器「T」而連接。刀鋒伺服器藉由由「N」表示之網路介面控制器(NIC)而連接至交換器2215。另一選擇係,刀鋒伺服器可藉由含有起始器功能性之NVMoE控制器而連接至交換器2215。機櫃系統2200亦包含一機櫃頂部或列結尾(end-of-row)乙太網路光纖2205以允許超出單元2210之進一步連接。 圖22亦展示各種用戶端,該等用戶端具有NVMoE起始器(由「I」表示)以透過乙太網路存取SSD刀鋒。此等用戶端不需要係機櫃系統之部分。在此實例中,用戶端2222及2226在機櫃系統外部。用戶端2222經由乙太網路光纖2205及乙太網路交換器2215存取SSD刀鋒。用戶端2226直接存取單元2210內之乙太網路交換器2215。用戶端2224及2228在機櫃系統內部。其可裝納於機櫃系統內之不同單元中或甚至裝納於單元2210內。用戶端2224經由乙太網路光纖2205及乙太網路交換器2215存取SSD刀鋒,而用戶端2228直接存取單元2210內之乙太網路交換器2215。以此方式,用戶端上之NVMoE起始器「I」中之任一者可經由其NVMoE目標「T」而存取SSD刀鋒中之任一者。 NVMoE起始器及NVMoE目標可實施為專用NVMoE裝置或多用途裝置。舉例而言,NVMoE起始器可實施為含有起始器及目標功能性兩者但其中僅使用起始器功能性之積體電路。另一選擇係,其可係僅含有起始器功能性之一裝置。作為另一實例,其可係一標準NIC,起始器功能性被添加至該標準NIC或該標準NIC經重新組態以用作一起始器。 圖23展示一替代架構。在此實例中,用戶端2322至2328使用某些其他協定(諸如RDMA (遠端直接記憶體存取)、iSCSI (網際網路小電腦系統介面)、NFS (網路檔案系統)、NVMf或NVMoF (皆係透過光纖之NVMe之縮寫字))來與槽00至03中之刀鋒伺服器通信。網路連接係透過由「N」表示之NIC進行。針對槽04至23中之SSD刀鋒,刀鋒伺服器用作彼協定與NVMoE之間的橋接器。在NVMoE協定內,刀鋒伺服器用作一NVMoE起始器且SSD刀鋒用作NVMoE目標。在圖23中,另一協定由虛線識別,且NVMoE由實線識別。 在某些實施方案中,藉由針對每一協定使用單獨VLANS (虛擬本端區域網路)而使L2乙太網路交換器2315中之用於NVMoE協定之埠與用於其他協定之埠分離。此提供NVMoE網路訊務與其他網路訊務之隔離。將訊務分離成單獨VLAN防止用戶端2322至2328直接存取SSD刀鋒。此隔離防止可受一病毒或一安全性缺口損害之用戶端直接存取SSD刀鋒。 因此在闡述了一系統及方法之不同實施例之後,熟習此項技術者應明瞭已達成所闡述方法及設備之特定優點。 亦應瞭解,可在本發明之範疇及精神內做出各種修改、變更及其替代實施例。本發明由以下申請專利範圍進一步定義。 儘管詳細說明含有諸多特定細節,但此等不應視為限制本發明之範疇,而應僅視為圖解說明本發明之不同實例及態樣。應瞭解,本發明之範疇包含上文未詳細地論述之其他實施例。可在不背離如隨附申請專利範圍中所定義之本發明之精神及範疇之情況下對本文中所揭示之本發明之方法及設備之配置、操作及細節做出熟習此項技術者將明瞭之各種其他修改、改變及變化。因此,本發明之範疇應由隨附申請專利範圍及其合法等效形式來判定。 取決於模組之形式,模組之間的「耦合」亦可呈現不同形式。舉例而言,專用電路可藉由硬連線或者藉由存取一共同暫存器或記憶體位置而彼此耦合。軟體「耦合」可藉由任何數目個方式發生以在軟體組件之間(或在軟體與硬體之間,若情形如此)傳遞資訊。術語「耦合」意指包含所有此等且並非意指限制於兩個組件之間的一硬連線永久連接。另外,可存在介入元件。舉例而言,在將兩個元件闡述為彼此耦合時,此並不暗示該等元件彼此直接耦合,其亦不排除在該兩個元件之間使用其他元件。
00-23‧‧‧刀鋒槽/槽
1-1‧‧‧非揮發性記憶體命名空間
1-2‧‧‧非揮發性記憶體命名空間
2-1‧‧‧非揮發性記憶體命名空間
2-2‧‧‧非揮發性記憶體命名空間
20‧‧‧個人電腦/節點/電腦
21‧‧‧處理單元
22‧‧‧系統記憶體
23‧‧‧系統匯流排
24‧‧‧唯讀記憶體
25‧‧‧隨機存取記憶體
26‧‧‧基本輸入/輸出系統
28‧‧‧磁碟機
29‧‧‧可抽換式磁碟/磁碟
30‧‧‧光碟機
31‧‧‧可抽換式光碟/光碟
32‧‧‧硬碟機介面
33‧‧‧磁碟機介面
34‧‧‧光碟機介面
35‧‧‧作業系統
36‧‧‧檔案系統
37‧‧‧應用程式
38‧‧‧程式模組
39‧‧‧程式資料
40‧‧‧鍵盤
42‧‧‧指向裝置
46‧‧‧串列埠介面
47‧‧‧監視器
48‧‧‧視訊配接器
49‧‧‧遠端電腦/電腦
50‧‧‧記憶體儲存裝置
51‧‧‧區域網路
52‧‧‧廣域網路
53‧‧‧網路介面/配接器
54‧‧‧數據機
100‧‧‧系統/經擴充特快非揮發性記憶體儲存網路
111a‧‧‧本端特快非揮發性記憶體儲存節點/節點/特快非揮發性記憶體儲存節點/儲存節點
111b‧‧‧本端特快非揮發性記憶體儲存節點/節點/特快非揮發性記憶體儲存節點/儲存節點
112‧‧‧經擴充特快非揮發性記憶體控制器/特快非揮發性記憶體控制器/控制器
112A‧‧‧經擴充特快非揮發性記憶體控制器/經擴充控制器/特快非揮發性記憶體控制器
112B‧‧‧經擴充特快非揮發性記憶體控制器/控制器/特快非揮發性記憶體控制器
114‧‧‧交換器/乙太網路交換器/外部網路交換器/網路交換器
116‧‧‧目錄伺服器/軟體定義儲存控制器
200‧‧‧乙太網路上特快非揮發性記憶體訊框結構/乙太網路上非揮發性記憶體訊框/訊框
330‧‧‧表
360‧‧‧表
390‧‧‧訊息格式
602a‧‧‧虛線
602b‧‧‧虛線
602c‧‧‧虛線
700‧‧‧乙太網路上非揮發性記憶體訊框
800‧‧‧乙太網路上非揮發性記憶體訊框
900‧‧‧系統/經擴充特快非揮發性記憶體儲存系統/特快非揮發性記憶體儲存系統
911a‧‧‧節點
911b‧‧‧節點
911c‧‧‧節點
912A‧‧‧經擴充特快非揮發性記憶體控制器
912B‧‧‧經擴充特快非揮發性記憶體控制器
912C‧‧‧經擴充特快非揮發性記憶體控制器
914A‧‧‧乙太網路交換器
914B‧‧‧乙太網路交換器
918A‧‧‧閘道器/隧道
918B‧‧‧閘道器/隧道
1000‧‧‧乙太網路上非揮發性記憶體訊框
1300‧‧‧高可用性雙伺服器系統/雙伺服器系統
1400‧‧‧雙埠式伺服器系統/系統
1600‧‧‧計算系統
1700‧‧‧狀態圖
1710‧‧‧轉變
1712‧‧‧轉變
1714‧‧‧轉變
1800‧‧‧計算系統
1911a‧‧‧乙太網路上非揮發性記憶體雙向節點
1911b‧‧‧乙太網路上非揮發性記憶體雙向節點
1911c‧‧‧乙太網路上非揮發性記憶體雙向節點
1911d‧‧‧乙太網路上非揮發性記憶體雙向節點
1911e‧‧‧乙太網路上非揮發性記憶體雙向節點
2011a‧‧‧節點/乙太網路上非揮發性記憶體起始器節點/起始器節點
2011b‧‧‧節點/乙太網路上非揮發性記憶體起始器節點/起始器節點
2011c‧‧‧節點/乙太網路上非揮發性記憶體起始器節點/起始器節點
2011d‧‧‧節點/乙太網路上非揮發性記憶體目標節點/目標節點
2011e‧‧‧節點/乙太網路上非揮發性記憶體目標節點/目標節點
2011f‧‧‧節點/乙太網路上非揮發性記憶體目標節點/目標節點
2011g‧‧‧節點/乙太網路上非揮發性記憶體目標節點/目標節點
2111a‧‧‧起始器節點
2111b‧‧‧雙向節點
2111c‧‧‧起始器節點
2111d‧‧‧目標節點
2111e‧‧‧雙向節點
2111f‧‧‧目標節點
2111g‧‧‧目標節點
2200‧‧‧機櫃安裝式系統/機櫃系統
2205‧‧‧機櫃頂部/列結尾乙太網路光纖/乙太網路光纖
2210‧‧‧單元
2215‧‧‧內部L2乙太網路交換器/交換器/乙太網路交換器
2222‧‧‧用戶端
2224‧‧‧用戶端
2226‧‧‧用戶端
2228‧‧‧用戶端
2315‧‧‧L2乙太網路交換器
2322‧‧‧用戶端
2324‧‧‧用戶端
2326‧‧‧用戶端
2328‧‧‧用戶端
A‧‧‧中央處理單元/伺服器
B‧‧‧中央處理單元/伺服器
C‧‧‧中央處理單元
CMD_ID‧‧‧命令識別符位元
ET‧‧‧類型碼
I‧‧‧乙太網路上非揮發性記憶體起始器
N‧‧‧網路介面控制器
NIC_A‧‧‧網路介面控制器
NIC_B‧‧‧網路介面控制器
NS_1- NS_N‧‧‧命名空間
NS_A1‧‧‧命名空間
NS_A2‧‧‧命名空間
NS_B1‧‧‧命名空間
NS_B2‧‧‧命名空間
Q_ID‧‧‧佇列識別符位元
SEQ_ID‧‧‧序列標籤位元
T‧‧‧乙太網路上非揮發性記憶體目標
XOFF‧‧‧來源之狀態/發送狀態
XON‧‧‧來源之狀態/發送狀態/狀態
XSLOW‧‧‧來源之狀態/發送狀態/狀態
本發明具有在結合隨附圖式時依據對本發明及隨附申請專利範圍之以下詳細說明將更加顯而易見之其他優點及特徵,在隨附圖式中: 圖1A係圖解說明一經擴充NVMe儲存網路之一系統之一方塊圖。 圖1B係圖解說明圖1A中之系統之經擴充NVMe能力之一方塊圖。 圖2係一NVMoE訊框定義之一圖式。 圖3A係如圖2中所繪示之NVMoE訊框定義之一第一部分之一圖式。 圖3B係HSID/NSID至MAC位址之一例示性映射表。 圖3C係HSID/NSID至MAC位址(包含經註冊HSID)之另一例示性映射表。 圖3D圖解說明非揮發性記憶體位址解析(NVMAR)協定之一例示性訊息格式。 圖4係用於使得NVMe命令能夠透過乙太網路傳輸之一方法之一流程圖。 圖5係一經擴充NVMe控制器之一方塊圖。 圖6係如圖5中所繪示之經擴充NVMe控制器之詳細結構之一方塊圖。 圖7係一NVMoE訊框之一項實施例之一圖式。 圖8係一NVMoE訊框之另一實施例之一圖式。 圖9係透過L3網路之一經擴充NVMe儲存系統之一方塊圖。 圖10係適合於透過L3網路傳輸之一NVMoE訊框之一圖式。 圖11A至圖11B係圖解說明經擴充NVMe儲存網路作為一伺服器機櫃之一應用模型之圖式。 圖12A至圖12B係圖解說明經擴充NVMe儲存網路作為一單個伺服器之一應用模型之圖式。 圖13係圖解說明經擴充NVMe儲存網路作為一雙伺服器系統之一應用模型之一圖式。 圖14係圖解說明經擴充NVMe儲存網路作為一雙埠式伺服器系統之一應用模型之一圖式。 圖15係一命名空間控制器之一方塊圖。 圖16圖解說明用於經擴充NVMe控制器之一例示性負載平衡機制。 圖17係用於NVMoE之流控之一例示性狀態圖。 圖18係可用於本發明中之一電腦或一伺服器之一示意性實例之一方塊圖。 圖19至圖23係根據各種實施例之圖解說明一經擴充NVMe儲存網路之一系統之方塊圖。 各圖僅出於圖解說明之目的繪示本發明之實施例。依據以下論述,熟習此項技術者將易於認識到,可在不背離本文中所闡述之本發明之原理之情況下採用本文中所圖解說明之結構及方法之替代實施例。
1-1‧‧‧非揮發性記憶體命名空間
1-2‧‧‧非揮發性記憶體命名空間
2-1‧‧‧非揮發性記憶體命名空間
2-2‧‧‧非揮發性記憶體命名空間
100‧‧‧系統/經擴充特快非揮發性記憶體儲存網路
111a‧‧‧本端特快非揮發性記憶體儲存節點/節點/特快非揮發性記憶體儲存節點/儲存節點
111b‧‧‧本端特快非揮發性記憶體儲存節點/節點/特快非揮發性記憶體儲存節點/儲存節點
112A‧‧‧經擴充特快非揮發性記憶體控制器/經擴充控制器/特快非揮發性記憶體控制器
112B‧‧‧經擴充特快非揮發性記憶體控制器/控制器/特快非揮發性記憶體控制器
114‧‧‧交換器/乙太網路交換器/外部網路交換器/網路交換器
116‧‧‧目錄伺服器/軟體定義儲存控制器
A‧‧‧中央處理單元/伺服器
B‧‧‧中央處理單元/伺服器
Claims (20)
- 一種經擴充特快非揮發性記憶體(NVMe)控制器裝置,其包括: 一主機介面,其經調適以將該經擴充NVMe控制器耦合至一主機處理器; 一直接網路介面,其經調適以將該經擴充NVMe控制器耦合至一外部網路; 其中該經擴充NVMe控制器自該主機處理器接收針對具有耦合至該外部網路之遠端非揮發性記憶體之一遠端命名空間之NVMe命令,且該經擴充NVMe控制器將該等NVMe命令轉換成適合於透過該外部網路傳輸至耦合至該遠端命名空間之一遠端經擴充NVMe控制器之一格式;且 其中該經擴充NVMe控制器回應於該遠端經擴充NVMe控制器之一遠端緩衝器之一狀態而將資料傳輸至該遠端經擴充NVMe控制器。
- 如請求項1之經擴充NVMe控制器裝置,其中該遠端緩衝器係用以緩衝讀取請求之一讀取緩衝器。
- 如請求項1之經擴充NVMe控制器裝置,其中該遠端緩衝器係用以緩衝寫入請求之一寫入緩衝器。
- 如請求項1之經擴充NVMe控制器裝置,其中該遠端緩衝器之該狀態係耗盡,該耗盡緩衝器狀態指示以全速將資料傳輸至該遠端NVMe控制器之該遠端緩衝器。
- 如請求項1之經擴充NVMe控制器裝置,其中該遠端緩衝器之該狀態係滿足,該滿足緩衝器狀態指示以經減小速度將資料傳輸至該遠端NVMe控制器之該遠端緩衝器。
- 如請求項1之經擴充NVMe控制器裝置,其中該遠端緩衝器之該狀態係滿,該滿緩衝器狀態指示延遲資料至該遠端NVMe控制器之該遠端緩衝器之該傳輸。
- 如請求項1之經擴充NVMe控制器裝置,其中該經擴充NVMe控制器將該經擴充NVMe控制器之一本端緩衝器之一緩衝器狀態週期性地發送至該遠端經擴充NVMe控制器。
- 如請求項1之經擴充NVMe控制器裝置,其中該經擴充NVMe控制器向該遠端經擴充NVMe控制器週期性地請求該遠端緩衝器之該狀態。
- 如請求項1之經擴充NVMe控制器裝置,其中該經擴充NVMe控制器回應於將資料傳輸至該遠端NVMe控制器而接收該遠端緩衝器之該狀態。
- 如請求項1之經擴充NVMe控制器裝置,其中該經擴充NVMe控制器延遲任何資料至該遠端經擴充NVMe控制器之該傳輸且在達到一逾時週期時探查該遠端緩衝器之該狀態以接收該遠端緩衝器狀態。
- 一種在一經擴充特快非揮發性記憶體(NVMe)控制器裝置中用於流控之電腦實施之方法,其包括: 自一主機處理器接收針對耦合至一外部網路之一遠端非揮發性記憶體之一遠端命名空間之NVMe命令,該經擴充NVMe控制器亦耦合至該外部網路; 將該等所接收NVMe命令轉換成適合於透過該外部網路傳輸至耦合至該遠端命名空間之一遠端經擴充NVMe控制器之一格式; 回應於該遠端NVMe控制器之一遠端緩衝器之狀態而鍵入一發送狀態。
- 如請求項11之電腦實施之方法,其中該等發送狀態包含:一關斷狀態,其中該經擴充NVMe控制器不將任何資料發送至該遠端經擴充NVMe控制器;一緩慢狀態,其中該經擴充NVMe控制器以一經減小速度將資料發送至該遠端經擴充NVMe控制器;及一接通狀態,其中該經擴充NVMe控制器以一全速將資料發送至該遠端經擴充NVMe控制器。
- 如請求項12之電腦實施之方法,其中當該遠端緩衝器之該狀態係滿時,該發送狀態係該關斷狀態。
- 如請求項12之電腦實施之方法,其中當該遠端緩衝器之該狀態係滿足時,該發送狀態係該緩慢狀態。
- 如請求項12之電腦實施之方法,其中當該遠端緩衝器之該狀態係耗盡時,該發送狀態係該接通狀態。
- 如請求項12之電腦實施之方法,其中該發送狀態係該關斷狀態,且該方法進一步包括: 接收對遠端緩衝器之該狀態之指示一饑餓狀態之一更新;及 鍵入該緩慢發送狀態。
- 如請求項12之電腦實施之方法,其中該發送狀態係該緩慢狀態,且該方法進一步包括: 接收對該遠端緩衝器之該狀態之指示一耗盡狀態之一更新;及 鍵入該接通發送狀態。
- 如請求項12之電腦實施之方法,其中該發送狀態係該緩慢狀態,且該方法進一步包括: 接收對該遠端緩衝器之該狀態之指示一滿狀態之一更新;及 鍵入該關斷發送狀態。
- 如請求項12之電腦實施之方法,其中該發送狀態係該接通狀態,且該方法進一步包括: 接收對該遠端緩衝器之該狀態之指示一滿狀態之一更新;及 鍵入該關斷發送狀態。
- 如請求項12之電腦實施之方法,其中該發送狀態係該接通狀態,且該方法進一步包括: 接收對該遠端緩衝器之該狀態之指示一滿足狀態之一更新;及 鍵入該緩慢發送狀態。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/843,891 US9785356B2 (en) | 2013-06-26 | 2015-09-02 | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US14/843,892 US20150378640A1 (en) | 2013-06-26 | 2015-09-02 | Nvm express controller for remote access of memory and i/o over ethernet-type networks |
US14/843,884 US9785355B2 (en) | 2013-06-26 | 2015-09-02 | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US14/954,691 US10063638B2 (en) | 2013-06-26 | 2015-11-30 | NVM express controller for remote access of memory and I/O over ethernet-type networks |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201720123A true TW201720123A (zh) | 2017-06-01 |
Family
ID=58188351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105128392A TW201720123A (zh) | 2015-09-02 | 2016-09-02 | 用於透過乙太式網路遠端存取記憶體及輸入/輸出之特快非揮發性記憶體控制器 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN108702374A (zh) |
TW (1) | TW201720123A (zh) |
WO (1) | WO2017040706A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI795491B (zh) * | 2018-03-26 | 2023-03-11 | 南韓商三星電子股份有限公司 | 驅動器至驅動器儲存系統、儲存驅動器和儲存資料的方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515469A (zh) * | 2017-03-22 | 2021-10-19 | 北京忆恒创源科技股份有限公司 | 创建、删除命名空间的方法与存储设备 |
US10733137B2 (en) * | 2017-04-25 | 2020-08-04 | Samsung Electronics Co., Ltd. | Low latency direct access block storage in NVME-of ethernet SSD |
US11102294B2 (en) * | 2017-06-09 | 2021-08-24 | Samsung Electronics Co., Ltd. | System and method for supporting energy and time efficient content distribution and delivery |
EP3657315A4 (en) * | 2017-08-10 | 2020-07-22 | Huawei Technologies Co., Ltd. | DATA ACCESS METHOD, DEVICE AND SYSTEM |
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 |
US20190114112A1 (en) * | 2017-10-12 | 2019-04-18 | Silicon Motion, Inc. | Data storage management method and data storage system with namespace planning |
CN109656833B (zh) * | 2017-10-12 | 2022-11-11 | 慧荣科技股份有限公司 | 数据储存装置 |
US10715499B2 (en) * | 2017-12-27 | 2020-07-14 | Toshiba Memory Corporation | System and method for accessing and managing key-value data over networks |
WO2019168965A1 (en) * | 2018-03-01 | 2019-09-06 | Huawei Technologies Co., Ltd. | Packet-programmable statelets |
WO2020014869A1 (zh) | 2018-07-17 | 2020-01-23 | 华为技术有限公司 | 处理i/o请求的方法及设备 |
CN113767360A (zh) * | 2019-03-14 | 2021-12-07 | 马维尔亚洲私人有限公司 | 在驱动器级别处对非易失性存储器联网消息的终止 |
EP4054140A4 (en) * | 2019-11-22 | 2022-11-16 | Huawei Technologies Co., Ltd. | METHOD OF PROCESSING A NON-BUFFER DATA WRITE REQUEST, BUFFER AND NODE |
CN112988623B (zh) * | 2019-12-17 | 2021-12-21 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
CN111399771B (zh) * | 2020-02-28 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种mcs存储系统的协议配置方法、装置及设备 |
CN111367721A (zh) * | 2020-03-06 | 2020-07-03 | 西安奥卡云数据科技有限公司 | 一种基于非易失性存储器的高效远程复制系统 |
US11736417B2 (en) * | 2020-08-17 | 2023-08-22 | Western Digital Technologies, Inc. | Devices and methods for network message sequencing |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104798349B (zh) * | 2013-01-30 | 2018-08-07 | 慧与发展有限责任合伙企业 | 响应于端口故障的故障转移 |
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 |
US9311110B2 (en) * | 2013-07-08 | 2016-04-12 | Intel Corporation | Techniques to initialize from a remotely accessible storage device |
CN103828332B (zh) * | 2013-12-04 | 2015-12-30 | 华为技术有限公司 | 数据处理方法、装置、存储控制器和机柜 |
CN108062285B (zh) * | 2014-06-27 | 2022-04-29 | 华为技术有限公司 | 一种访问NVMe存储设备的方法和NVMe存储设备 |
-
2016
- 2016-08-31 WO PCT/US2016/049759 patent/WO2017040706A1/en active Application Filing
- 2016-08-31 CN CN201680064116.9A patent/CN108702374A/zh active Pending
- 2016-09-02 TW TW105128392A patent/TW201720123A/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI795491B (zh) * | 2018-03-26 | 2023-03-11 | 南韓商三星電子股份有限公司 | 驅動器至驅動器儲存系統、儲存驅動器和儲存資料的方法 |
US11775454B2 (en) | 2018-03-26 | 2023-10-03 | Samsung Electronics Co., Ltd. | Mechanism to autonomously manage SSDs in an array |
Also Published As
Publication number | Publication date |
---|---|
CN108702374A (zh) | 2018-10-23 |
WO2017040706A1 (en) | 2017-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10063638B2 (en) | NVM express controller for remote access of memory and I/O over ethernet-type networks | |
US9785355B2 (en) | NVM express controller for remote access of memory and I/O over ethernet-type networks | |
US9785356B2 (en) | NVM express controller for remote access of memory and I/O over ethernet-type networks | |
TW201720123A (zh) | 用於透過乙太式網路遠端存取記憶體及輸入/輸出之特快非揮發性記憶體控制器 | |
TWI571087B (zh) | 用於在乙太型網路上對記憶體及輸入/輸出進行遠端存取之非揮發性記憶體快速控制器 | |
US20150378640A1 (en) | Nvm express controller for remote access of memory and i/o over ethernet-type networks | |
US11748278B2 (en) | Multi-protocol support for transactions | |
US20160162189A1 (en) | Storage array having multiple controllers | |
JP5735883B2 (ja) | ローカル・アダプタの読み取り操作により操作の完了が確認されるまで操作の肯定応答を遅延させる方法 | |
US10423332B2 (en) | Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands | |
EP3441878B1 (en) | Method and device for data transmission in virtual switch technique | |
WO2017162175A1 (zh) | 一种数据传输方法及装置 | |
TW201027354A (en) | Dynamic physical and virtual multipath I/O | |
US9864717B2 (en) | Input/output processing | |
KR20040054620A (ko) | 엔드 노드 파티션 방법, 시스템 및 컴퓨터 프로그램 제품 | |
US11210240B2 (en) | Memory appliance couplings and operations | |
JP5469081B2 (ja) | 制御パス入出力仮想化方法 | |
US20220116454A1 (en) | Direct response to io request in storage system having an intermediary target apparatus | |
US20230421451A1 (en) | Method and system for facilitating high availability in a multi-fabric system | |
US9946819B2 (en) | Simulating a large network load | |
US9330056B2 (en) | Communication protocol placement into switch memory |