CN114730243A - 既支持字节可寻址协议又支持块可寻址协议的固态硬盘 - Google Patents
既支持字节可寻址协议又支持块可寻址协议的固态硬盘 Download PDFInfo
- Publication number
- CN114730243A CN114730243A CN202080078459.7A CN202080078459A CN114730243A CN 114730243 A CN114730243 A CN 114730243A CN 202080078459 A CN202080078459 A CN 202080078459A CN 114730243 A CN114730243 A CN 114730243A
- Authority
- CN
- China
- Prior art keywords
- data packet
- data
- protocol
- addressable
- ssd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
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能读取及写入最初与将固定大小的数据块存储于使用逻辑块地址(LBA)寻址的硬盘盘片(platter)的扇区中的硬盘协议相关联的固定数据块。实例协议包含小计算机系统接口(SCSI)及高级技术附接/串行高级技术附接(ATA/SATA)。后来,为由非易失性存储器(NVM)组成但仍保留以可由LBA寻址的固定大小块传输数据的概念的SSD引入特定协议。NVM存储协议的实例包含非易失性存储器高速(NVMe)协议,即一种块可寻址协议。相比之下,根据例如双倍数据速率3(DDR3)、双倍数据速率4(DDR4)等的协议标准,存储器装置经由使用字节级传输协议的存储器总线附接到CPU。在开发如NAND快闪存储器的NVM技术前,这些装置是易失性的,实例包含由动态随机存取存储器装置(DRAM)组成的双列直插式模块(DIMM)。最近,已开发由DRAM及NAND快闪存储器装置两者组成但仍采用DDR型的字节级协议的例如NVDIMM(非易失性DIMM)的永久性存储器装置。目前,SSD经设计用于根据仅块级传输协议处理数据,且存储器装置经设计用于根据仅字节级协议处理数据。
因此,长期以来一直需要能够使用字节可寻址及块可寻址协议两者有效地处理数据分组的SSD。
发明内容
在一方面中,一种经启用以处理并存储块及字节可寻址数据的SSD包含:第一存储区,其经配置以通过可寻址数据存储;第二存储区,其经配置以存储块可寻址数据;及控制器,其通过总线通信地耦合到所述第一存储区及所述第二存储区。所述控制器包含:处理器;及接口,其经配置以接收来自主机的数据分组。所述控制器在所述接口处接收来自所述主机的数据分组,确定所述数据分组是包含字节可寻址数据还是块可寻址数据,且基于所述确定选择所述第一存储区或所述第二存储区。所述控制器将与所述数据分组相关联的所述数据存储于所述所选择的存储区中。
在另一方面中,一种用于将数据存储于SSD中的方法,所述SSD具有用于存储字节可寻址数据的第一存储区、用于存储块可寻址数据的第二存储区及通过总线通信地耦合到所述第一存储区及所述第二存储区的控制器,所述方法包含:在所述控制器的接口处接收来自主机的数据分组;及在所述控制器的处理器处确定所述数据分组是包含字节可寻址数据还是块可寻址数据。所述方法还包含基于所述确定选择所述第一存储区或所述第二存储区中的任一者及将与所述数据分组相关联的所述数据存储于所述所选择的存储区中。
附图说明
图1展示支持字节可寻址协议及块可寻址协议的混合SSD系统的框图;
图2展示混合SSD与主机CPU之间的通信方案的框图;
图3展示用于利用字节可寻址协议或块可寻址协议解码数据分组的决策方法;
图4展示用于利用字节可寻址协议或块可寻址协议编码数据分组的决策方法;
图5展示示范性字节可寻址命令分组字段的框图;
图6展示示范性读取请求特定的分组字段的框图;及
图7展示用于利用字节可寻址协议或块可寻址协议处理数据分组的方法的流程图。
具体实施方式
SSD通用性及耐久性可通过启用SSD来根据字节可寻址及块可寻址协议两者处理并存储数据来改进。将块及字节可寻址存储装置并入到SSD中改进装置的使用寿命,因为如果字节可寻址存储装置变得不可用,那么块可寻址存储装置可保持可用。2019年9月13日申请的且涉及SSD中的存储装置的重新分类的题为“可重新配置的SSD存储集区(Reconfigurable SSD Storage Pool)”的第16/570,455号美国专利申请案的全文以引用方式并入本文中。
启用SSD来根据块及字节可寻址协议两者处理并存储数据分组要求配备SSD控制器及存储区来根据两个协议识别并解译数据分组,且要求SSD硬件及主机能够传输及存储数据分组。
图1展示支持字节可寻址协议及块可寻址协议的混合SSD系统100的框图。SSD系统100包含通过总线106耦合的SSD 102及主机104。SSD 102包含SSD控制器108,所述SSD控制器108具有处理器112、元数据寄存器114、分组解码器121及块可寻址协议控制器115及字节可寻址协议控制器116。SSD 102还包含接口111及包含多个存储区118a到118n的存储器110。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块可寻址协议控制器。
虽然为了清楚起见,字节可寻址协议控制器116及块可寻址协议控制器115在图1中被描绘为单个逻辑块,但协议控制器实际上可在SSD控制器108内包括多个逻辑块。字节可寻址协议控制器116及块可寻址协议控制器115各自具有解码标头字段、解码特定传输协议命令及在SSD 102内分别针对字节可寻址协议及块可寻址协议处理、执行及传输数据及命令的能力。此外,虽然为了清楚起见,分组解码器121在图1中被描绘为SSD控制器108中的单独块,但分组解码器121的分组识别及路由功能可被实施为定位于接口111或字节控制器116内的专用硬件逻辑以提高SSD中的识别、分类及分组路由的速度。
在SSD控制器108中,Gen-Z SSD 102包含基于专用硬件的NVMe Over Fabric协议编码及解码加速引擎,所述引擎可为块可寻址协议控制器115的部分。SSD控制器108及块可寻址协议控制器115拦截嵌入于Gen-Z命令分组内的NVMe Over Fabric协议命令及命令有效负载。将NVMe Over Fabric协议编码及解码逻辑实施于SSD控制器108内导致比在CPU软件中将单独包含NVMe Over Fabric协议逻辑的系统更低的延时。传入分组的路由及分类可实施于接口111中的硬件逻辑中以进一步减小延时。Gen-Z协议结构的顶部上的Gen-Z SSD102内的NVMe Over Fabric协议的实施使用经修改Gen-Z命令来交换NVMe Over Fabric协议命令及数据。通过使用可为制造商或供应商特定的唯一运算符类(OpClass)及运算符代码(OpCode),将唯一标识符添加到数据分组,从而允许Gen-Z SSD 102用常规NVMe OverFabric协议分类并使用多个存储区118a到118n内的块可寻址存储区以进行装置发现、数据交换及错误恢复过程。配备分组解码器121以接收并解译包含各个供应商定义的字段的供应商定义的OpClass分组格式以识别分组的内容及协议。在一些实施方案中,NVMe OverFabric协议可由SSD 102的模拟网络接口上的软件API供应。
数据编码可在SSD控制器108中发生用于传输到主机104,以及在数据分组及命令传输到SSD 102之前在主机104中发生。数据分组及命令的编码将在下文关于图4进一步论述。简而言之,为了处理块可寻址协议分组,块可寻址协议命令及数据囊封于字节可寻址协议命令分组中,如将在下文关于图4到6描述。数据分组的标头内的标识符指示命令是否是字节可寻址协议命令或字节可寻址协议数据分组是否载送块可寻址命令及/或命令有效负载。
多个存储区118a到118n中的每一者被识别为字节可寻址存储区或块可寻址存储区且在元数据寄存器114中识别。多个存储区118a到118n包含识别为字节可寻址存储区且经配备以存储字节可寻址数据的第一存储区118a及识别为块可寻址存储区且经配备以存储块可寻址数据的第二存储区118b。在一些实施方案中,多个存储区118a到118n是混合存储存储器,例如存储类存储器(SCM)。在一些实施方案中,多个存储区118a到118n是非易失性快闪存储器。在一些实施方案中,多个存储区118a到118n是动态随机存取存储器(DRAM)。
在一些实施方案中,总线106可形成为将SSD 102的接口111通信地耦合到主机104的主机接口120的序列化器/反序列化器(SerDes)链路。在总线106处将SSD 102耦合到主机104的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链路。因此,启用字节可寻址命令及块可寻址协议的SSD与仅允许经由SerDes链路的NVMe块存储而没有处理字节可寻址协议的能力的常规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还包含启用主机104以与SSD 102通信及编码、解码及处理块可寻址协议及字节可寻址协议的嵌入式CPU资源。
图2展示混合SSD 202与主机CPU 204之间的通信方案200的框图。总线206(例如图1中的总线106)将混合SSD 202(例如图1中的SSD 102)耦合到主机CPU 204(例如图1中的主机104)。混合SSD 202包含处理器或控制器,所述处理器或控制器具有接收、解码及处理块可寻址协议及字节可寻址命令的能力。主机CPU 204包含用于将数据分组传输到混合SSD202及从混合SSD 202接收数据分组的接口。
在一些实施例中,混合SSD 202是混合Gen-Z SSD,其包含处理Gen-Z字节可寻址命令及NVMe Over Fabric块可寻址命令两者的能力。总线206可为SerDes链路或其它通道,其将混合SSD 202通信地耦合到CPU主机204,使得字节可寻址命令及块可寻址数据协议可在混合SSD 202与CPU主机204之间传输。在一些实施方案中,总线206可为Gen-Z SerDes。块可寻址协议命令及字节可寻址协议命令两者在主机CPU 204与混合SSD 202之间的总线206顶部上运行。通过将块可寻址协议命令及命令有效负载囊封于字节可寻址命令分组内,Gen-ZSerDes能够传输命令。接着,混合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标识符。解码器可识别唯一供应商指定的OpClass或OpCode的存在,如将在下文进一步描述。如果解码器确定数据分组含有Gen-Z标识符,例如唯一OpClass及OpCode,那么在步骤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编码器,且最后在步骤316,Gen-Z协议分组解码器方法结束。
如果解码器确定数据分组不含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命令或供应商定义的OpClass及Opcode。供应商定义的OpClass及OpCode实现主机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协议分组的唯一供应商定义的OpClass及/或OpCode。供应商定义的OpClass及OpCode还可将例如SSD内部元数据及特殊控制器操作的控制平面信息从主机104传递到SSD 102。在其它实施方案中,Gen-Z标识符编码器控制器可不将任何唯一标识符添加到标头字段,且缺少唯一标识符将由SSD控制器108解译为数据分组使用Gen-Z协议的指示。在步骤408,Gen-Z标识符编码器控制器将数据分组传输到Gen-Z字节可寻址协议控制器116用于编码命令及命令有效负载。在步骤410,主机104更新数据分组的元数据,且在步骤420,Gen-Z协议分组编码器完成,且数据分组可被传输到SSD 102。
如果在步骤404不存在状态变化,那么主机104确定是否需要将NVMe Over Fabric块可寻址协议囊封于Gen-Z协议分组中。主机104确定是否存在将要传输的NVMe OverFabric块可寻址命令或命令有效负载。如果不存在将要传输的NVMe Over Fabric块可寻址命令或命令有效负载,那么在步骤408,主机104将命令传递到Gen-Z字节可寻址协议控制器116,且正常地继续编码Gen-Z字节可寻址命令。
如果主机104确定存在将要传输的NVMe Over Fabric块可寻址命令或命令有效负载,那么在步骤414,主机104利用NVMe Over Fabric块可寻址协议控制器(例如图1中的块可寻址协议控制器115)来处理命令及命令有效负载及将命令及命令有效负载囊封到Gen-Z命令分组中。接着,在步骤416,主机104在数据分组标头字段中设置标识符以识别在数据分组中存在NVMe Over Fabric块可寻址命令及命令有效负载,例如使用如上文所描述的供应商定义的OpClass或OpCode来指示存在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或接口111内的分组解码器121读取以确定字节可寻址命令分组(例如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描述,唯一标识符可在数据分组的标头内找到以指示命令中所使用的协议。唯一标识符可为或可利用供应商定义的OpClass及OpCode来识别命令及命令有效负载的协议。在一些实施方案中,在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处理且通过例如单个SerDes链路的单个总线106传输到SSD的字节可寻址命令及块可寻址协议,需要较少量芯片上引脚用于实施。常规系统可能在主机CPU及SSD上需要高得多的引脚计数或需要额外并行总线或SerDes链路。因此,启用字节可寻址命令及块可寻址协议的SSD与允许经由SerDes链路而无需字节可寻址协议来进行NVMe块存储的常规SSD相比具有高得多的带宽及低得多的延时。启用字节可寻址及块可寻址协议两者的SSD可在消费者电子器件中使用以获得处理及存储命令及数据的更大效率。
本发明的各个方面的其它目标、优点及实施例将为本发明领域的技术人员所明白,且在描述及附图的范围内。举例来说(但非限制),可依据本发明重新布置结构或功能元件。类似地,根据本发明的原理可应用于其它实例,所述其它实例即使在此处未详细地具体描述仍将在本发明的范围内。
Claims (20)
1.一种经启用以处理并存储块可寻址及字节可寻址数据的固态硬盘(SSD),所述SSD包括:
第一存储区,其经配置以存储字节可寻址数据;
第二存储区,其经配置以存储块可寻址数据;
控制器,其通过总线通信地耦合到所述第一存储区及所述第二存储区,所述控制器包括:
处理器;及
接口,其经配置以接收来自主机的数据分组;
其中所述控制器经配置以:
在所述接口处接收来自所述主机的数据分组;
在所述处理器处确定所述数据分组是包含字节可寻址数据还是块可寻址数据;
基于所述确定选择所述第一存储区或所述第二存储区;及
将与所述数据分组相关联的数据存储于所述所选择的存储区中。
2.根据权利要求1所述的SSD,其中所述控制器进一步包括经配置以解码数据分组的解码器。
3.根据权利要求2所述的SSD,其中所述控制器进一步经配置以在所述解码器处解码所述数据分组,且其中确定所述数据分组是包含字节可寻址数据还是块可寻址数据是基于所述数据分组的所述解码。
4.根据权利要求1所述的SSD,其中所述控制器进一步经配置以检测所述数据分组的标头。
5.根据权利要求4所述的SSD,其中所述数据分组的所述标头包含所述数据分组是使用第一传输协议还是第二传输协议的指示,其中所述第二传输协议不同于所述第一传输协议。
6.根据权利要求5所述的SSD,其中所述控制器进一步经配置以基于所述数据分组是使用所述第一传输协议还是所述第二传输协议的所述指示确定所述数据分组是包含字节可寻址数据还是块可寻址数据。
7.根据权利要求6所述的SSD,其中所述第一传输协议是Gen-Z协议且所述第二传输协议是非易失性存储器高速(NVMe)Over Fabric协议。
8.根据权利要求5所述的SSD,其中所述控制器进一步包括实施于场可编程门阵列(FPGA)或专用集成电路(ASIC)中的NVMe Over Fabric传输协议控制器。
9.根据权利要求1所述的SSD,其中所述第一存储区及所述第二存储区经实施为存储类存储器(SCM)。
10.根据权利要求1所述的SSD,其中所述第一存储区及所述第二存储区经实施为非易失性快闪存储器。
11.根据权利要求1所述的SSD,其中所述控制器进一步经配置以经由序列化器/反序列化器(SerDes)链路将与所述数据分组相关联的所述数据传输到所述所选择的存储区。
12.根据权利要求1所述的SSD,其中所述控制器进一步包括经配置以包含用于存储于所述第一存储区及所述第二存储区中的数据的元数据地址信息的寄存器,且其中所述控制器进一步经配置以在所述寄存器中更新与所述所存储数据相关联的元数据。
13.一种用于将数据存储于SSD中的方法,所述SSD具有经配置以存储字节可寻址数据的第一存储区、经配置以存储块可寻址数据的第二存储区及通过总线通信地耦合到所述第一存储区及所述第二存储区的控制器,所述方法包括:
在所述控制器的接口处接收来自主机的数据分组;
在所述控制器中的处理器处确定所述数据分组是包含字节可寻址数据还是块可寻址数据;
基于所述确定选择所述第一存储区或所述第二存储区中的任一者;及
将与所述数据分组相关联的数据存储于所述所选择的存储区中。
14.根据权利要求13所述的方法,其进一步包括经由SerDes链路将与所述数据分组相关联的所述数据传输到所述所选择的存储区。
15.根据权利要求13所述的方法,其进一步包括:
检测所述数据分组的标头;及
在所述数据分组的所述标头中识别所述数据分组是使用第一传输协议还是第二传输协议的指示,其中所述第二传输协议不同于所述第一传输协议。
16.根据权利要求15所述的方法,其中所述第一传输协议是Gen-Z协议且所述第二传输协议是NVMe Over Fabric协议。
17.根据权利要求16所述的方法,其进一步包括:
如果所述数据分组的所述标头包含所述数据分组使用NVMe Over Fabric协议的指示,那么:
将所述数据分组传输到NVMe Over Fabric协议控制器;
在所述NVMe Over Fabric协议控制器处处理所述数据分组;及
将与所述数据分组相关联的数据作为块可寻址数据传输到所述第二存储区。
18.根据权利要求17所述的方法,其进一步包括:
如果所述数据分组的所述标头包含所述数据分组使用Gen-Z协议的指示,那么:
将所述数据分组传输到Gen-Z协议控制器;
在所述Gen-Z协议控制器处处理所述数据分组;及
将与所述数据分组相关联的数据作为字节可寻址数据传输到所述第一存储区。
19.根据权利要求16所述的方法,其进一步包括:
在寄存器中更新与相关联于所述数据分组及所述所选择的第一存储区或第二存储区的所述数据相关联的元数据。
20.一种用于解码混合Gen-Z SSD中的Gen-Z数据分组的方法,所述方法包括:
接收来自主机的数据分组;
确定所述数据分组是否包含所述数据分组需要Gen-Z传输协议用于存储所述数据分组的指示符;及
如果所述数据分组不包含所述数据分组需要所述Gen-Z传输协议的指示符,那么:
确定所述数据分组是否包含所述数据分组需要NVMe传输协议用于存储所述数据分组的指示符;
其中所述SSD经配置以存储需要所述NVMe Over Fabric传输协议的块可寻址数据及字节可寻址数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/570,521 | 2019-09-13 | ||
US16/570,521 US11314460B2 (en) | 2019-09-13 | 2019-09-13 | Solid state drive supporting both byte addressable protocol and block addressable protocol |
PCT/IB2020/000723 WO2021048616A1 (en) | 2019-09-13 | 2020-09-10 | Solid state drive supporting both byte addressable protocol and block addressable protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114730243A true CN114730243A (zh) | 2022-07-08 |
Family
ID=72744786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080078459.7A Pending CN114730243A (zh) | 2019-09-13 | 2020-09-10 | 既支持字节可寻址协议又支持块可寻址协议的固态硬盘 |
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 WO PCT/IB2020/000723 patent/WO2021048616A1/en active Application Filing
- 2020-09-10 CN CN202080078459.7A patent/CN114730243A/zh active Pending
- 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 |
---|---|
US11875064B2 (en) | 2024-01-16 |
US20220206721A1 (en) | 2022-06-30 |
US11314460B2 (en) | 2022-04-26 |
WO2021048616A1 (en) | 2021-03-18 |
US20210081148A1 (en) | 2021-03-18 |
TW202123014A (zh) | 2021-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9927984B2 (en) | Electronic system with interface control mechanism and method of operation thereof | |
US11188251B2 (en) | Partitioned non-volatile memory express protocol for controller memory buffer | |
US11372564B2 (en) | Apparatus and method for dynamically allocating data paths in response to resource usage in data processing system | |
KR102107723B1 (ko) | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 | |
US11003376B2 (en) | Reconfigurable SSD storage pool | |
CN112053730A (zh) | 用于存储器子系统的冗余云存储器存储装置 | |
CN115495389A (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
KR102219759B1 (ko) | 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법 | |
CN113396399A (zh) | 具有带单根虚拟化的多个端口的存储器子系统 | |
US11875064B2 (en) | Solid state drive supporting both byte addressable protocol and block addressable protocol | |
CN113448511B (zh) | 通过链接阵列依序预提取 | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
US10133492B2 (en) | Electronic system with interface control mechanism and method of operation thereof | |
US20220050629A1 (en) | Completion management | |
US11461238B2 (en) | Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes | |
CN115461731A (zh) | 存储器装置的多个引脚配置 | |
KR20220070034A (ko) | 로드 명령을 위한 타임 투 리브 | |
KR102645786B1 (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
CN112242176B (zh) | 具有测试接口的存储装置 | |
CN114579484A (zh) | 数据存储装置及其操作方法 | |
WO2021055853A1 (en) | Managing data dependencies for out of order processing in a hybrid dimm | |
CN113168387A (zh) | 向主机系统提供存储器子系统的控制器存储缓冲器弹性状态的信息 | |
US11431629B2 (en) | Data packet management | |
US20240061614A1 (en) | Error detection and correction in a controller | |
US20240069738A1 (en) | Accessing memory devices via switchable channels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |