TW202123014A - 支持位元組可定址協定及塊可定址協定兩者的固態硬碟 - Google Patents
支持位元組可定址協定及塊可定址協定兩者的固態硬碟 Download PDFInfo
- Publication number
- TW202123014A TW202123014A TW109131333A TW109131333A TW202123014A TW 202123014 A TW202123014 A TW 202123014A TW 109131333 A TW109131333 A TW 109131333A TW 109131333 A TW109131333 A TW 109131333A TW 202123014 A TW202123014 A TW 202123014A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- data packet
- protocol
- ssd
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
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)
- Communication Control (AREA)
Abstract
一種能夠處理和儲存塊可定址和位元組可定址資料的固態硬碟(SSD),其包括用於儲存位元組可定址資料的第一儲存區、用於儲存塊可定址資料的第二儲存區、以及藉由匯流排耦接至第一儲存區和第二儲存區的SSD控制器。SSD控制器包括處理器及用於從主機接收資料封包的介面。SSD控制器在介面處從主機接收資料封包、在處理器處判定資料封包是否包括位元組可定址資料或塊可定址資料、基於判定選擇第一儲存區或第二儲存區、以及將與資料封包相關聯的資料儲存在所選擇的儲存區。
Description
本發明大致上係關於利用位元組可定址協定或塊可定址協定來處理命令封包的系統和方法。
固態硬碟(SSD)包括允許SSD接收和處理來自中央處理單元(CPU)之命令封包的控制器。控制器包括允許控制器解碼和處理接收到的資料封包的邏輯。習知地,邏輯允許控制器根據可用的記憶體和控制器、SSD、及儲存區的類型處理指明類型的命令封包。
一般而言,SSD使用儲存協定,該儲存協定係塊可定址協定。塊可定址傳輸協定使SSD可讀取和寫入固定的資料塊,其原始地與將固定大小的資料塊儲存在使用邏輯塊位址(logical block address; LBA)來定址之硬碟磁盤的扇區的硬碟協定相關聯。實例協定包括小電腦系統介面(SCSI)及先進技術附件/串列先進技術附件(advanced technology attachment/serial advanced technology attachment; ATA/SATA)。後來,針對由非揮發性記憶體(NVM)組成的SSD引入了特定的協定,但仍保留了以LBA可定址之固定大小塊來傳輸資料的概念。NVM儲存協定的實例包括非揮發性記憶體快速(NVMe)協定、塊可定址協定。相反,根據諸如雙倍資料速率3(DDR3)、雙倍資料速率4(DDR4)等協定標準,記憶體裝置使用位元組級傳輸協定經由記憶體匯流排附接至CPU。在開發像是NAND快閃之類的NVM技術之前,這些裝置係揮發性,實例包括由動態隨機存取記憶體裝置(DRAM)組成的雙列直插式記憶體模組(dual in-line memory module; DIMM)。最近,已經開發由DRAM和NAND快閃記憶體裝置組成之諸如NVDIMM (非揮發性DIMM)的持續記憶體裝置,但仍採用DDR類型的位元組級協定。目前,SSD係設計成僅根據塊級傳輸協定來處理資料,並且記憶體裝置係設計成僅根據位元組級協定來處理資料。
因此,長期以來迫切需要SSD能夠使用位元組可定址和塊可定址協定有效地處理資料封包。
在一態樣中,能夠處理和儲存塊可定址和位元組可定址資料的SSD包括組態以由可定址資料儲存的第一儲存區、組態以儲存塊可定址資料的第二儲存區、以及藉由匯流排通訊地耦接至第一儲存區和第二儲存區的控制器。控制器包括處理器及組態以從主機接收資料封包的介面。控制器在介面處從主機接收資料封包、判定資料封包是否包括位元組可定址資料或塊可定址資料、以及基於判定選擇第一儲存區或第二儲存區。控制器將與資料封包相關聯的資料儲存在所選擇的儲存區。
在另一態樣中,用於將資料儲存在具有用於儲存位元組可定址資料的第一儲存區、用於儲存塊可定址資料的第二儲存區、以及藉由匯流排通訊地耦接至第一儲存區和第二儲存區的控制器之SSD的方法包括在控制器之介面處從主機接收資料封包、以及在控制器的處理器處判定資料封包是否包括位元組可定址資料或塊可定址資料。方法亦包括基於判定選擇第一儲存區或第二儲存區以及將與資料封包相關聯的資料儲存在所選擇的儲存區。
藉由使SSD能夠根據位元組可定址和塊可定址協定兩者來處理和儲存資料來改善SSD的多功能性和壽命。將塊和位元組可定址儲存整合至SSD中可改善裝置的壽命,因為如果位元組可定址儲存變成不可用,則塊可定址儲存仍然可用。2019年9月13日申請之美國專利申請案編號第16/570,455號,標題為「Reconfigurable SSD Storage Pool」,並且關於SSD中的儲存的重新分類的全部內容以引用方式併入本文中。
使SSD能夠根據塊和位元組可定址協定處理和儲存資料封包需要SSD控制器和儲存區裝備有根據兩種協定來識別和解釋資料封包,並且需要能夠傳輸和儲存資料封包的SSD硬體和主機。
圖1顯示支持位元組可定址協定和塊可定址協定之混合SSD系統100的方塊圖。SSD系統100包括SSD 102和由匯流排106耦接的主機104。SSD 102包括SSD控制器108,其具有處理器112、元資料暫存器114、封包解碼器121、及塊可定址協定控制器115與位元組可定址協定控制器116。SSD 102亦包括介面111及記憶體110,記憶體包括複數個儲存區118a-118n。SSD控制器108藉由通道117耦接至記憶體。主機104包括主介面120。
通道或匯流排106將主機104耦接至SSD 102。主機104在主介面120處傳輸和接收資料封包。由主機傳輸和接收的資料封包包括命令封包,以及用於儲存在SSD 102中的資料,有時稱為命令酬載。
SSD控制器108在介面111處接收資料封包並接資料封包傳遞至封包解碼器121。封包解碼器121判定接收的資料封包的傳輸協定(位元組可定址協定或塊可定址協定)、並將資料封包傳輸至用於編碼之合適的協定控制器。封包解碼器121識別資料封包是否包括指示資料封包之內容是位元組可定址或塊可定址的識別符。如果封包解碼器121判定資料封包使用位元組可定址協定,封包解碼器121將資料封包傳遞至用於解碼的位元組可定址協定控制器116。如果封包解碼器121判定資料封包使用塊可定址協定,封包解碼器121將資料封包傳遞至用於解碼的塊可定址協定控制器115。封包解碼器121更用在資料封包中資料之類型和目的地來更新元資料暫存器114。封包解碼器121判定用於資料封包之合適的協定之方法在下文中更詳細地敘述。
當封包解碼器121識別資料封包為位元組可定址,位元組可定址協定控制器116藉由解碼標頭和資料封包中的資料以及將資料傳輸至複數個儲存區118a-118n之合適的儲存區來處理資料封包。位元組可定址協定控制器116提示處理器112用位元組可定址資訊更新元資料暫存器114。如將下文解釋,在一些實施方式中,如果資料封包不包括有關傳輸協定之類型的識別符,則封包解碼器121將資料預設將資料封包傳輸至位元組可定址協定控制器116。在一些實施方式中,位元組可定址協定控制器116係Gen-Z位元組可定址協定控制器。
當封包解碼器121識別資料封包為塊可定址,塊可定址協定控制器115藉由解碼標頭和資料封包中的資料以及將資料傳輸至複數個儲存區118a-118n之合適的儲存區來處理資料封包。塊可定址協定控制器115可提示處理器112更新元資料暫存器114。封包解碼器121亦可向主機104提供回饋或確認。在一些實施方式中,塊可定址協定控制器115係NVMe Over Fabric塊可定址協定控制器。
儘管為了清楚起見圖1中的位元組可定址協定控制器116和塊可定址協定控制器115被描繪為單一邏輯塊,但是協定控制器可實際地在SSD控制器108內包含複數個邏輯塊。位元組可定址協定控制器116和塊可定址協定控制器115各具有解碼標頭欄位、解碼特定傳輸協定命令、及分別針對位元組可定址協定和塊可定址協定處理、執行、和傳輸SSD 102內的資料和命令的能力。此外,儘管為了清楚起見在圖1中將封包解碼器121係描繪為在SSD控制器108中分開的塊,則封包解碼器121之封包識別和路由功能可實施為位於介面111或位元組控制器116內的專用硬體邏輯以增加SSD中識別、分類和封包路由的速度。
Gen-Z SSD 102包括在SSD控制器108中的專用的基於硬體的NVMe Over Fabric協定編碼和解碼加速引擎,其可為塊可定址協定控制器115的一部分。SSD控制器108和塊可定址協定控制器115攔截嵌入在Gen-Z命令封包內的NVMe Over Fabric協定命令及命令酬載。與僅在CPU軟體中包括NVMe Over Fabric協定邏輯的系統相比,在SSD控制器108內之NVMe Over Fabric協定編碼和解碼邏輯的實施導致較低的延遲。進入的封包的路由和重新分類可實施在介面111中的硬體邏輯中,以進一步減少延遲。在Gen-Z協定結構之上的Gen-Z SSD 102內的NVMe Over Fabric協定的實施方式使用修改的Gen-Z命令來交換NVMe Over Fabric協定命令和資料。藉由使用可由製造商或供應商指明的唯一操作員類別(OpClasses)和操作員碼(OpCodes),將唯一識別符添加至資料封包中,以使Gen-Z SSD 102利用習知NVMe Over Fabric協定對複數個儲存區118a-118n內的塊可定址儲存區進行分類和使用,以用於裝置探索、資料交換、及錯誤回復程序。裝備封包解碼器121來接收和解釋包括各種賣方界定的欄位之賣方界定的OpClass封包格式,來識別封包內容和協定。在一些實施方式中,NVMe Over Fabric協定可由SSD 102之仿真網路介面上的軟體API提供。
在資料封包和命令傳輸至SSD 102之前,資料的編碼可發生在SSD控制器108中以傳輸至主機104以及主機104中。資料封包和命令的編碼將在關於圖4之下文中進一步討論。簡言之,為了處理塊可定址協定封包、塊可定址協定命令和資料係囊封在位元組可定址協定命令封包中,其將在下文關於圖4-6敘述。資料封包之標頭內的識別符指示命令是否為位元組可定址協定命令,或位元組可定址協定資料封包是否攜帶塊可定址命令及/或命令酬載。
複數個儲存區118a-118n中的每一者係識別為位元組可定址儲存區或塊可定址儲存區,並且在元資料暫存器114中識別。複數個儲存區118a-118n包括識別為位元組可定址儲存區並裝備以儲存位元組可定址資料的第一儲存區118a以及識別為塊可定址儲存區並裝備以儲存塊可定址資料的第二儲存區118b。在一些實施方式中,複數個儲存區118a-118n係混合儲存記憶體,諸如儲存類記憶體(SCM)。在一些實施方式中,複數個儲存區118a-118n係非揮發性快閃記憶體。在一些實施方式中,複數個儲存區118a-118n係動態隨機存取記憶體(DRAM)。
在一些實施方式中,匯流排106可形成為串聯器/解串器(SerDes)鏈路,以將SSD 102之介面111通訊地耦接至主機104的主介面120。使SSD 102耦接至主機104的匯流排106處的SerDes鏈路或互連能夠利用位元組可定址和塊可定址傳輸協定來傳輸資料封包。例如,在一些實施方式中,SerDes鏈路係能夠使用 Gen-Z位元組可定址傳輸協定來傳輸資料封包以及使用NVMe Over Fabric塊可定址協定傳輸資料封包。SSD控制器108藉由允許位元組可定址命令和塊可定址NVMe Over Fabric協定在相同高速SerDes鏈路上運行以來支持使用位元組或塊可定址協定之資料封包的儲存。
SSD 102能夠使用位元組可定址和塊可定址協定兩者以儲存資料,從而允許同時運行位元組可定址命令和塊可定址協定(諸如,NVMe Over Fabric協定)兩者的應用程式以與SSD 102一起使用。在單一SSD上同時使用位元組可定址命令和塊可定址協定將使用單一匯流排106 (諸如,單一SerDes鏈路),並且需要少量的晶片上接腳才能實現。習知系統可能需要更多主機CPU和SSD上的接腳數,或需要額外並行的匯流排或SerDes鏈路。因此,與僅允許在SerDes鏈路上的NVMe塊儲存而沒有處理塊可定址協定之能力的習知SSD相比,啟用位元組可定址命令和塊可定址協定的SSD具有更高頻寬和更低的延遲。SSD 102可用在諸如行動電話、平板電腦、機上盒、密集伺服器、或高效能計算(HPC)伺服器的消費型電子產品中。
SSD控制器108可實例化為現場可程式閘陣列(FPGA)或特定應用積體電路(ASIC),其中功能係由專用硬體邏輯提供。在一些實施方式中,一些SSD控制器108的功能可實施為在處理器112上運行的韌體、或可實施為在塊協定控制器115和位元組協定控制器116上運行的微碼。SSD控制器108包括塊可定址協定,諸如ASIC或FPGA內的NVMe Over Fabric協定編碼和解碼邏輯。在一些實施方式中,諸如NVMe Over Fabric協定編碼和解碼的塊可定址協定在編碼/解碼加速引擎中的SSD控制器108中完成,該編碼/解碼加速引擎攔截或接收被識別為包括塊可定址協定的傳輸命令。主機104亦包括嵌入式CPU資源,其使主機104能夠與SSD 102通訊,並編碼、解碼、和處理塊可定址協定及位元組可定址協定。
圖2顯示混合SSD 202和主機CPU 204之間的通訊方案200的方塊圖。匯流排206(例如,圖1中的匯流排106)將混合SSD 202(例如,圖1中的SSD 102)耦接至主機CPU 204(例如,圖1中的主機104)。混合SSD 202包括處理器或控制器,其具有接收、解碼、和處理塊可定址協定和位元組可定址命令的能力。主機CPU 204包括用於向和從混合SSD 202傳輸和接收資料封包的介面。
在一些實施例中,混合SSD 202係混合Gen-Z SSD,其包括處理Gen-Z位元組可定址命令和NVMe Over Fabric塊可定址命令兩者的能力。匯流排206可為將混合SSD 202通訊地耦接至CPU主機204的SerDes鏈路或其它通道,使得位元組可定址命令和塊可定址資料協定可在混合SSD 202和CPU主機204之間傳輸。在一些實施方式中,匯流排206可為Gen-Z SerDes。塊可定址協定命令和位元組可定址協定命令兩者在主機CPU 204和混合SSD 202之間的匯流排206之上運行。藉由將塊可定址協定命令和命令酬載囊封在位元組可定址命令封包內,Gen-Z SerDes能夠傳輸命令。然後,混合Gen-Z SSD能夠識別處理命令所需的協定,並將資料封包或命令資料封包定向至SSD控制器內合適的協定控制器,以進一步處理和儲存。
圖3顯示用於利用位元組可定址協定或塊可定址協定來解碼資料封包的決定方法的決定圖300。在步驟302,Gen-Z協定封包解碼器(例如,圖1中的封包解碼器121)在當其從主機(例如,圖1中的主機104、圖2中的CPU主機204)接收資料封包時開始解碼步驟。Gen-Z協定封包解碼器可在一般位元組可定址協定解碼器(例如,圖1中位元組可定址協定控制器116)內或在SSD控制器(例如,圖1中SSD控制器108)內的另一控制器內。Gen-Z協定封包解碼器係形成為SSD控制器108中的邏輯、微碼、或韌體。在步驟304,解碼器判定再所接收的資料封包中使否檢測到Gen-Z識別符。在一些實施方式中,解碼器藉由解碼資料封包的標頭欄位並判定存在指示資料封包攜帶Gen-Z命令和命令酬載的唯一識別符,來判定是否存在Gen-Z識別符。解碼器可識別唯一供應商指明的OpClasses或OpCodes的存在,這將在下文進一步敘述。如果解碼器判定資料封包含有Gen-Z識別符(諸如,唯一OpClasses和OpCodes),則在步驟306解碼器將資料封包傳輸至在SSD控制器108內的Gen-Z識別符控制器。Gen-Z識別符控制器可在一般位元組可定址協定解碼器(諸如,圖1中位元組可定址協定控制器116)內或可為SSD控制器108內的另一控制器。在步驟310,Gen-Z識別符控制器將資料封包傳遞至Gen-Z位元組可定址協定控制器(例如,圖1中位元組可定址協定控制器116),其中包含在封包中的資料和命令被處理並且在必要時儲存在合適的儲存區中。在步驟312,更新元資料,例如在元資料暫存器(諸如,圖1之元資料暫存器114)中,以指示命令的儲存或命令酬載。如果需要,SSD控制器108在步驟318發送回饋至主機104編碼器,且最終Gen-Z協定封包解碼器方法結束在步驟316。
如果解碼器判定資料封包不含有Gen-Z識別符,則在步驟308,解碼器判定資料封包是否包括NVMe Over Fabric識別符。例如,圖5和圖6敘述此種識別符。在資料封包之標頭欄位中的唯一識別符指示資料封包包括在Gen-Z命令封包內的NVMe Over Fabric命令或酬載。如果解碼器未識別出在資料封包標頭欄位中的NVMe Over Fabric識別符,則解碼器默認將資料封包視為包括Gen-Z協定命令的Gen-Z資料封包和酬載,並且繼續執行步驟310以處理如上所述之Gen-Z資料封包。
如果解碼器識別出在資料封包標頭欄位中的NVMe Over Fabric識別符,解碼器在步驟314將資料封包傳遞至在SSD控制器108內的NVMe Over Fabric塊可定址協定控制器(例如,圖1中的塊可定址協定控制器115)。NVMe Over Fabric塊可定址協定控制器115必要時處理、執行、儲存NVMe Over Fabric命令和命令酬載。NVMe Over Fabric塊可定址協定控制器115接著在步驟312更新元資料暫存器114或提示SSD控制器108更新暫存器114、必要時在步驟318提供回饋制主機編碼器、以及最終方法在步驟316結束。
儘管針對Gen-Z位元組可定址協定和NVMe Over Fabric塊可定址協定的指明傳輸協定敘述用於解碼資料封包的方法,但是該方法的相同原理可以與其它成對的傳輸協定一起使用。SSD 102和SSD控制器108的第一傳輸協定可以用於囊封具有第二傳輸協定的命令,並且資料封包之標頭欄位中的唯一識別符可用來識別利用第二傳輸協定之第一傳輸協定資料封包攜帶命令和命令酬載。以這種方式,SSD 102和SSD控制器108可以與具有多種傳輸協定的命令一起使用,以有效地處理來自主機104的命令。
具體而言,接收的資料封包可為Gen-Z大讀取(LDM1)、大寫MSG命令、或供應商界定的OpClasses和OpCodes。供應商界定的OpClasses和OpCodes可以在主機104和SSD 102之間進行控制平面資訊的通訊,包括SSD內部元資料和控制器操作。下面將參考圖5和圖6進一步敘述這樣的識別符。主機104對資料封包進行編碼以傳輸至SSD 102,將塊可定址協定命令和命令酬載(諸如,NVMe Over Fabric協定命令)囊封在位元組可定址協定資料封包中。主機使用唯一識別符指示資料封包中是否存在塊可定址協定命令和命令酬載。在一些實施方式中,SSD 102還能夠編碼傳輸至主機的命令,諸如編碼位元組可定址協定命令封包內的塊可定址協定命令和命令酬載。
圖4顯示用於利用位元組可定址協定或塊可定址協定來編碼資料封包的決定方法400。方法通常發生在將資料封包傳輸至SSD(例如,圖1中的SSD 102,圖2中的混合SSD 202)之前的主機(例如,圖1中的主機104,圖2中的CPU主機204)內,但是如上所述,在一些實施方案中,SSD 102亦能夠編碼資料封包。因此,Gen-Z協定封包編碼器可位於主機104內,或在一些實施方式中,在SSD控制器(例如,圖1中的SSD控制器108)內。在一些實施方式中,Gen-Z協定封包編碼器可為SSD控制器108(例如,圖1中的位元組可定址協定控制器116)內位元組可定址協定控制器的一部分。
當Gen-Z協定封包編碼器開始將命令或命令酬載編碼為用於傳輸的資料封包時,方法開始於步驟402。在步驟404,主機104判定目標SSD 102是否已將SSD 102或SSD 102內的儲存區的狀態中任何改變通知主機,這將限制SSD 102處理塊可定址協定命令或命令酬載的能力。如果狀態發生變化,則在步驟406,主機104利用Gen-Z識別符編碼器控制器使用位元組可定址協定將資料封包標頭欄位正常編碼。在一些實施方式中,Gen-Z識別符編碼器控制器係SSD控制器108內的位元組可定址協定控制器116的一部分。在一些實施方式中,這可以包括將唯一識別符插入到使用Gen-Z協定識別封包之資料封包標頭欄位中,諸如將封包識別為Gen-Z協定封包的唯一供應商定義的OpClasses及/或OpCodes。供應商界定的OpClasses和OpCodes亦可將控制平面資訊(諸如SSD內部元資料和特殊控制器操作)從主機104傳送SSD 102。在其它實施方案中,Gen-Z識別符編碼器控制器可不向標頭欄位添加任何唯一識別符,並且SSD控制器108將解釋缺少唯一識別符作為資料封包使用Gen-Z協定的指標。Gen-Z識別符編碼器控制器在步驟408將封包傳輸至Gen-Z位元組可定址協定控制器116,以對命令和命令酬載進行編碼。在步驟410,主機104更新資料封包的元資料,以及步驟420完成Gen-Z協定封包編碼器,並且可將資料封包傳輸至SSD 102。
如果在步驟404沒有狀態改變,則主機104判定是否需要將NVMe Over Fabric塊可定址協定囊封在Gen-Z協定封包中。主機104判定是否傳輸NVMe Over Fabric塊可定址命令或命令酬載。如果沒有傳輸NVMe Over Fabric塊可定址命令或命令酬載,則主機104在步驟408將命令傳遞給Gen-Z位元組可定址協定控制器116,並按常規進行編碼Gen-Z位元組可定址命令。
如果主機104判定傳輸NVMe Over Fabric塊可定址命令或命令酬載,則主機104在步驟414利用NVMe Over Fabric塊可定址協定控制器(例如,圖1中的塊可定址協定控制器115) 來處理命令和命令酬載並將命令和命令酬載囊封在Gen-Z命令封包中。在步驟416,主機104接著將識別符設定在資料封包標頭欄位以識別NVMe Over Fabric block 可定址命令和命令酬載在資料封包中,例如使用如上所述之供應商界定的OpClasses或OpCodes來指示NVMe Over Fabric塊可定址命令和命令酬載的存在。在步驟418,NVMe Over Fabric酬載控制器最終確定資料封包並在步驟410,主機104更新元資料。然後Gen-Z協定封包編碼器方法在步驟420結束。
在一些實施方式中,在整個程序中,將回饋從更新的元資料410提供給主機104,以使得主機104在步驟404使用元資料來判定是否存在狀態改變。
如上關於圖3中解碼方法所述,此處針對Gen-Z位元組可定址協定和NVMe Over Fabric塊可定址協定的指明傳輸協定敘述用於編碼資料封包的方法,但是該方法的相同原理可以與其它成對的傳輸協定一起使用。SSD 102和SSD控制器108的第一傳輸協定可以用於囊封具有第二傳輸協定的命令,並且資料封包之標頭欄位中的唯一識別符可用來識別利用第二傳輸協定之第一傳輸協定資料封包攜帶命令和命令酬載。以這種方式,SSD 102和SSD控制器108可以與具有多種傳輸協定的命令一起使用,以有效地處理來自主機的命令。
圖5顯示包括用於識別命令封包協定之位元組可定址資料或命令封包的特定欄位的細節的方塊圖500。命令封包之特定欄位具有欄位名稱530、欄位縮寫532、位元中的大小534、及敘述536。列538包括具有保留敘述之5位元的R0欄位。特定欄位是位元組可定址命令封包的欄位,但是該欄位可用於識別位元組可定址命令封包包括攜帶塊可定址命令和酬載的命令酬載。
儘管任何類型的合適識別符可包括在資料封包標頭中以識別SSD之處理器或資料封包解碼器(例如,圖1之SSD控制器108中處理器112或封包解碼器212內)是否使用位元組可定址協定或塊可定址協定,並且此處繪示實例識別符。識別符可為(例如)添加至命令之5位元R0保留欄位內之標頭的唯一值,以將命令識別為塊可定址命令封包。
藉由利用位元組可定址命令封包的特定欄位來識別由封包攜帶之命令酬載的協定,封包解碼器121係能夠判定如何處理命令,例如判定那個協定控制器(例如,圖1中的位元組可定址協定控制器116和塊可定址協定控制器)應被用來解碼或傳輸命令。封包解碼器121可實施在處理器(例如,圖1中的實例處理器112)中、SSD控制器108中、或在SSD之介面(例如,圖1中的介面111)內。封包解碼器121可實施為硬體邏輯以快速地處理、分類、及路由進入的資料封包。
用於識別讀取請求之命令封包協定之位元組可定址命令封包之特定欄位的另一實例係繪示於圖6中。圖6中的方塊圖600將多個欄位列出為列,以及欄位名稱行630、欄位縮寫行632、位元大小行634、及欄位敘述行636。第一列638包括用於讀取請求特定命令封包之額外的資訊。欄位RD大小係32位元,欄位RD大小之欄位敘述指示基於讀取請求要讀取之位元組的數量。第二列640包括大小為9位元的欄位R0並且具有保留的敘述。第三列642包括大小為6位元的欄位R1並且具有保留的敘述。
類似於圖5中的通用資料封包,讀取特定資料封包可包括識別符,以向封包解碼器121指示命令酬載係塊可定址還是位元組可定址。例如,可利用在命令封包中的唯一6位元R1欄位識別符向封包解碼器121指示位元組可定址命令攜帶塊可定址協定命令和酬載。在一些實施方式中,識別符可指示Gen-Z命令封包和Gen-Z命令攜帶NVMe Over Fabric協定命令和酬載。唯一識別符可以是任意數量的位元,並且可按照製造商或銷售商的編程,位於資料封包標頭中的任何可用欄位中,以使SSD控制器108能夠定位識別符。圖5和6中繪示的識別符僅為例示性的。
命令封包中的識別符可由SSD控制器108內的封包解碼器121或介面111讀取以判定位元組可定址命令封包(例如,Gen-Z命令封包)攜帶塊可定址協定(例如,NVMe Over Fabric協定)命令和酬載。在封包解碼器121已基於命令封包標頭欄位之解碼做此判定之後,封包解碼器121將命令傳輸至SSD控制器108內的合適的協定控制器,以進行進一步處理和儲存。
為了實現高線速度效能,如圖1中所敘述之塊可定址協定(例如,NVMe Over Fabric)編碼和解碼加速引擎係使用專用的ASIC或FPGA邏輯實施。因此,如果SSD 102囊封在位元組可定址協定中,則其能夠編碼和解碼位元組可定址協定以及塊可定址協定。
圖7顯示用於利用位元組可定址協定或塊可定址協定來處理資料封包之方法700的流程圖。在步驟702,SSD控制器(例如,圖1中的SSD控制器108)在SSD控制器之介面(例如,圖1中的介面111)處從主機(例如,圖1中的主機104,圖2中的CPU主機204)接收第一資料封包。第一資料封包為位元組可定址資料封包,但是資料封包內的命令和酬載可根據用於儲存的塊可定址協定或位元組可定址協定編碼。
在步驟704,SSD控制器108判定第一資料封包是否包括位元組可定址協定或塊可定址協定資料和命令。SSD控制器108包括封包解碼器(例如,圖1中的封包解碼器121)或處理器112(例如,處理器112) ,其為了識別第一資料封包是否包括指示器第一資料封包係根據塊可定址協定或位元組可定址協定編碼之識別符而解碼第一資料封包之標頭。封包解碼器可實施為在SSD控制器內的不同的控制器,或可實施為控制器或介面中的硬體邏輯,以更快的分類和路由進入的資料封包。如上關於圖5和6所述,唯一識別符可在資料封包之標頭內發現,以指示命令中所使用的協定。唯一識別符可為或可利用供應商界定的OpClasses和OpCodes來識別命令和命令酬載的協定。在一些實施方式中,在SSD控制器108識別用於資料封包之合適的傳輸協定之後,SSD控制器108進一步利用塊可定址協定控制器/解碼器(例如,圖1中的塊可定址協定控制器115)或位元組可定址協定控制器/解碼器(例如,圖1中的位元組可定址協定控制器116)來處理第一資料封包。
在步驟706,封包解碼器121基於步驟704的判定以為了儲存第一資料封包選擇第一儲存區和第二儲存區中的一者。第一儲存區可為位元組可定址儲存區(例如,圖1中的儲存區118a),並且第二儲存區可為塊可定址儲存區(例如,圖1中的儲存區118b)。第一或第二儲存區的選擇係基於在步驟706之第一資料封包是否包括位元組可定址資料或塊可定址資料的判定。
在步驟708,與第一資料封包相關聯的資料係傳輸至第一儲存區和第二儲存區之選擇的儲存區。在步驟710,與第一資料封包相關聯的資料係儲存在選擇的儲存區。
在一些實施方式中,更新暫存器(例如,圖1中的暫存器114)中的元資料,以反應第一資料封包的儲存位置以及為第一資料封包判定傳輸型定。
使SSD控制器108能夠接受包括位元組可定址或塊可定址資料的資料封包並適當地識別資料封包使用哪種協定,導致能夠根據各種協定處理和儲存資料的通用SSD。由於可以同時處理塊可定址和位元組可定址資料,因此使用者可以以更多種方式使用SSD,並提高效率。
如果SSD能夠根據位元組可定址協定和塊可定址協定接收和處理命令,則可以為複雜應用程式提供更通用、更高效的SSD。藉由使位元組可定址命令和塊可定址協定由單一SSD處理並由單一匯流排106(諸如,單一SerDes鏈路)傳輸至SSD,實施更少的所需晶片上接腳。習知系統可能需要更多主機CPU和SSD上的接腳數,或需要額外並行的匯流排或SerDes鏈路。因此,與允許在SerDes鏈路上的NVMe塊儲存而沒有塊可定址協定的習知SSD相比,啟用位元組可定址命令和塊可定址協定的SSD具有更高頻寬和更低的延遲。能夠使用位元組可定址和塊可定址協定兩者的SSD可在消費型電子產品中使用,以提高處理和儲存命令和資料的效率。
對於所屬技術領域中具有通常知識者,本發明之各種態樣的其它物件、優點、和實施例將是顯而易見的,並且在說明書和附圖的範圍內。例如,但不限於,可以依據本發明重新配置結構或功能元件。類似地,根據本發明的原理可以應用於其它實例,即使在這裡沒有詳細敘述,其他實例也將落入本發明的範圍內。
100:SSD系統
102:SSD
104:主機
106,206:匯流排
108:SSD控制器
110:記憶體
111:介面
112:處理器
114:元資料暫存器
115:塊可定址協定控制器
116:位元組可定址協定控制器
117:通道
118a~118n:儲存區
120:主介面
121:封包解碼器
200:通訊方案
202:混合SSD
204:主CPU
300:決定圖
302,304,306,308,310,312,314,316,318,402,404,406,408,410,412,414,416,418,420,702,704,706,708,710:步驟
500,600:方塊圖
530:欄位名稱
532:欄位縮寫
534:位元中的大小
536:敘述
538:列
630:欄位名稱行
632:位縮寫行
634:位元大小行
636:欄位敘述行
638:第一列
640:第二列
642:第三列
700:方法
[圖1]顯示支持位元組可定址協定和塊可定址協定之混合SSD系統的方塊圖;
[圖2]顯示混合SSD和主機CPU之間的通訊方案的方塊圖;
[圖3]顯示用於利用位元組可定址協定或塊可定址協定來解碼資料封包的決定方法;
[圖4]顯示用於利用位元組可定址協定或塊可定址協定來編碼資料封包的決定方法;
[圖5]顯示例示性位元組可定址命令封包欄位;
[圖6]顯示例示性讀取請求指明封包欄位;以及
[圖7]顯示用於利用位元組可定址協定或塊可定址協定來處理資料封包之方法的流程圖。
100:SSD系統
102:SSD
104:主機
106:匯流排
108:SSD控制器
110:記憶體
111:介面
112:處理器
114:元資料暫存器
115:塊可定址協定控制器
116:位元組可定址協定控制器
117:通道
118a,118b,118n:儲存區
120:主介面
121:封包解碼器
Claims (20)
- 一種固態硬碟(SSD),其夠處理和儲存塊可定址和位元組可定址資料,該SSD包含: 第一儲存區,其組態以儲存位元組可定址資料; 第二儲存區,其組態以儲存塊可定址資料; 控制器,其藉由匯流排通訊地耦接至該第一儲存區及該第二儲存區,該控制器包含: 處理器;以及 介面,組態以從主機接收資料封包; 其中該控制器係組態以: 在該介面處從該主機接收資料封包; 在該處理器處判定該資料封包是否包括位元組可定址資料或塊可定址資料; 基於該判定選擇該第一儲存區或該第二儲存區;以及 將與該資料封包相關聯的資料儲存在該所選擇的儲存區。
- 如請求項1之SSD,其中該控制器更包含組態以解碼資料封包的解碼器。
- 如請求項2之SSD,其中該控制器更組態以在該解碼器處解碼該資料封包,並且其中判定該資料封包是否包括位元組可定址資料或塊可定址資料係基於該資料封包的該解碼。
- 如請求項1之SSD,其中該控制器更組態以檢測該資料封包的標頭。
- 如請求項4之SSD,其中該資料封包之該標頭包括該資料封包是否使用第一傳輸協定或第二傳輸協定的指標,其中該第二傳輸協定與該第一傳輸協定不同。
- 如請求項5之SSD,其中該控制器更組態以基於該資料封包是否使用該第一傳輸或該第二傳輸協定的該指標判定該資料封包是否包括位元組可定址資料或塊可定址資料。
- 如請求項6之SSD,其中該第一傳輸協定係Gen-Z協定,且該第二傳輸協定係非揮發性記憶體高速(NVMe)Over Fabric協定。
- 如請求項5之SSD,其中該控制器更包含實施在現場可程式閘陣列(FPGA)或特定應用積體電路(ASIC)中之NVMe Over Fabric傳輸協定控制器。
- 如請求項1之SSD,其中該第一儲存區和該第二儲存區係實施為儲存級記憶體(SCM)。
- 如請求項1之SSD,其中該第一儲存區和該第二儲存區係實施為非揮發性快閃記憶體。
- 如請求項1之SSD,其中該控制器更組態以透過串聯器/解串器(SerDes)鏈路將與該資料封包相關聯的該資料傳輸至該所選擇的儲存區。
- 如請求項1之SSD,其中該控制器更包含暫存器,該暫存器組態以包括用於儲存在該第一儲存區和該第二儲存區中資料的元資料位址資訊,並且其中該控制器更組態以更新在該暫存器中與該儲存的資料相關聯的元資料。
- 一種用於將資料儲存在SSD的方法,該SSD具有組態以儲存位元組可定址資料的第一儲存區、組態以儲存塊可定址資料的第二儲存區、以及藉由匯流排通訊地耦接至該第一儲存區和該第二儲存區的控制器,該方法包含: 在該控制器之介面處從主機接收資料封包; 在該控制器中的處理器處判定該資料封包是否包括位元組可定址資料或塊可定址資料; 基於該判定選擇該第一儲存區或該第二儲存區;以及 將與該資料封包相關聯的資料儲存在該所選擇的儲存區。
- 如請求項13之方法,更包含透過SerDes鏈路將與該資料封包相關聯的該資料傳輸至該所選擇的儲存區。
- 如申請專利範圍第13項所述之方法,更包含: 檢測該資料封包之標頭;以及 識別在該資料封包之該標頭中該資料封包是否使用第一傳輸協定或第二傳輸協定的指標,其中該第二傳輸協定與該第一傳輸協定不同。
- 如請求項15之方法,其中該第一傳輸協定係Gen-Z協定,且該第二傳輸協定係NVMe Over Fabric協定。
- 如申請專利範圍第16項所述之方法,更包含: 如果該資料封包之該標頭包括該資料封包使用NVMe Over Fabric協定的指標: 將該資料封包傳輸至NVMe Over Fabric協定控制器; 在該NVMe Over Fabric協定控制器處處理該資料封包;以及 將與該資料封包相關聯的資料作為塊可定址資料傳輸至該第二儲存區。
- 如請求項17之方法,更包含: 如果該資料封包之該標頭包括該資料封包使用Gen-Z協定的指標: 將該資料封包傳輸至Gen-Z協定控制器; 在該Gen-Z協定控制器處處理該資料封包;以及 將與該資料封包相關聯的資料作為位元組可定址資料傳輸至該第一儲存區。
- 如請求項16之方法,更包含: 更新暫存器中與該資料封包及該所選擇的第一儲存區或第二儲存區相關聯之該資料相關聯的元資料。
- 一種用於解碼在混合Gen-Z SSD中Gen-Z資料封包的方法,該方法包含: 從主機接收資料封包; 判定該資料封包是否包括該資料封包需要用於儲存該資料封包之Gen-Z傳輸協定的指示器;以及 如果該資料封包不包括該資料封包需要Gen-Z傳輸協定的指示器: 判定該資料封包是否包括該資料封包需要用於儲存該資料封包之NVMe傳輸協定的指示器; 其中該SSD係組態以儲存需要NVMe Over Fabric傳輸協定和位元組可定址資料的塊可定址資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/570,521 US11314460B2 (en) | 2019-09-13 | 2019-09-13 | Solid state drive supporting both byte addressable protocol and block addressable protocol |
US16/570,521 | 2019-09-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202123014A true TW202123014A (zh) | 2021-06-16 |
Family
ID=72744786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109131333A TW202123014A (zh) | 2019-09-13 | 2020-09-11 | 支持位元組可定址協定及塊可定址協定兩者的固態硬碟 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11314460B2 (zh) |
CN (1) | CN114730243A (zh) |
TW (1) | TW202123014A (zh) |
WO (1) | WO2021048616A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11940935B2 (en) * | 2021-04-19 | 2024-03-26 | Mellanox Technologies, Ltd. | Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028051B1 (en) * | 2000-09-29 | 2006-04-11 | Ugs Corp. | Method of real-time business collaboration |
US7703138B2 (en) * | 2004-12-29 | 2010-04-20 | Intel Corporation | Use of application signature to identify trusted traffic |
US9098402B2 (en) * | 2012-12-21 | 2015-08-04 | Intel Corporation | Techniques to configure a solid state drive to operate in a storage mode or a memory mode |
US10977201B1 (en) * | 2013-11-13 | 2021-04-13 | Avago Technologies International Sales Pte. Limited | Per IO direct memory access redirection |
US10235103B2 (en) * | 2014-04-24 | 2019-03-19 | Xitore, Inc. | Apparatus, system, and method of byte addressable and block addressable storage and retrival of data to and from non-volatile storage memory |
US9904490B2 (en) * | 2015-06-26 | 2018-02-27 | Toshiba Memory Corporation | Solid-state mass storage device and method for persisting volatile data to non-volatile media |
US9886194B2 (en) * | 2015-07-13 | 2018-02-06 | Samsung Electronics Co., Ltd. | NVDIMM adaptive access mode and smart partition mechanism |
US10318185B2 (en) * | 2016-07-01 | 2019-06-11 | Intel Corporation | Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive |
US20180173419A1 (en) | 2016-12-21 | 2018-06-21 | Western Digital Technologies, Inc. | Hybrid ssd with delta encoding |
US20190042413A1 (en) | 2018-03-02 | 2019-02-07 | Intel Corporation | Method and apparatus to provide predictable read latency for a storage device |
US10698856B1 (en) * | 2018-12-18 | 2020-06-30 | Ati Technologies Ulc | Alternative protocol selection |
-
2019
- 2019-09-13 US US16/570,521 patent/US11314460B2/en active Active
-
2020
- 2020-09-10 CN CN202080078459.7A patent/CN114730243A/zh active Pending
- 2020-09-10 WO PCT/IB2020/000723 patent/WO2021048616A1/en active Application Filing
- 2020-09-11 TW TW109131333A patent/TW202123014A/zh unknown
-
2022
- 2022-03-18 US US17/698,658 patent/US11875064B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN114730243A (zh) | 2022-07-08 |
US20220206721A1 (en) | 2022-06-30 |
US20210081148A1 (en) | 2021-03-18 |
WO2021048616A1 (en) | 2021-03-18 |
US11314460B2 (en) | 2022-04-26 |
US11875064B2 (en) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109416677B (zh) | 支持用于一组公共互连连接器的多种互连协议的技术 | |
KR102312648B1 (ko) | 채널 통신 프로토콜, 그것을 지원하는 메모리 모듈, 및 시스템 | |
US20180322085A1 (en) | Memory device for a hierarchical memory architecture | |
TWI582588B (zh) | 用於在記憶體系統中提高效率之系統及方法 | |
KR102358477B1 (ko) | 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 | |
US10719472B2 (en) | Interface circuit and packet transmission method thereof | |
US11038749B2 (en) | Memory resource allocation in an end-point device | |
WO2014209764A1 (en) | Nvm express controller for remote memory access | |
US10719462B2 (en) | Technologies for computational storage via offload kernel extensions | |
TWI704453B (zh) | 具有通訊機制的計算系統及其操作方法 | |
US11875064B2 (en) | Solid state drive supporting both byte addressable protocol and block addressable protocol | |
US10133492B2 (en) | Electronic system with interface control mechanism and method of operation thereof | |
US20240020062A1 (en) | Selective Message Processing by External Processors for Network Data Storage Devices | |
TWI658402B (zh) | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 | |
US11914879B2 (en) | Storage controller and storage system comprising the same | |
EP4369173A1 (en) | Access method of storage device and virtual device | |
US11868828B1 (en) | Message routing in a network-ready storage product for internal and external processing | |
US20220413698A1 (en) | Providing Priority Indicators for NVMe Data Communication Streams | |
US20110167210A1 (en) | Semiconductor device and system comprising memories accessible through dram interface and shared memory region | |
CN114822631A (zh) | 一种基于mram主存的混合型nvme ssd存储系统 | |
CN117406913A (zh) | 计算系统及其操作方法 |