CN116257176A - 数据存储系统、数据存储方法和存储介质 - Google Patents

数据存储系统、数据存储方法和存储介质 Download PDF

Info

Publication number
CN116257176A
CN116257176A CN202211527666.3A CN202211527666A CN116257176A CN 116257176 A CN116257176 A CN 116257176A CN 202211527666 A CN202211527666 A CN 202211527666A CN 116257176 A CN116257176 A CN 116257176A
Authority
CN
China
Prior art keywords
memory
data
memory controller
segment
type
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
Application number
CN202211527666.3A
Other languages
English (en)
Inventor
王记锋
许玉铭
吴文涛
薛菲
高祥
金加靖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pingtouge Chengdu Semiconductor Co ltd
Original Assignee
Pingtouge Shanghai Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pingtouge Shanghai Semiconductor Co Ltd filed Critical Pingtouge Shanghai Semiconductor Co Ltd
Priority to CN202211527666.3A priority Critical patent/CN116257176A/zh
Priority to US18/174,269 priority patent/US20240176539A1/en
Publication of CN116257176A publication Critical patent/CN116257176A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本公开提供一种数据存储系统、数据存储方法和存储介质。数据存储系统包括主机、存储器控制器、DRAM和闪存,存储器控制器包括SRAM且被配置为:从主机接收包括待写入闪存的数据的写命令;将数据分割成第一部分和第二部分;将第一部分存储在存储器控制器的SRAM中,将第二部分存储到与存储器控制器通信耦合的DRAM中;使用存储器控制器的闪存转换层,发起与写命令相对应的配置操作;响应于闪存转换层指示的将数据存储到闪存中的就绪状态,从SRAM提取第一部分和从DRAM提取第二部分,对所提取的第一部分和第二部分进行组合;以及通过闪存转换层将组合的第一部分和第二部分存储到闪存中。本公开提高了存储器控制器的整体写入速度,并且降低了存储器控制器的能源消耗。

Description

数据存储系统、数据存储方法和存储介质
技术领域
本公开通常涉及对闪存(flash memory)的数据访问,更具体地,涉及一种数据存储系统、数据存储方法和存储介质。
背景技术
对固态驱动器存储系统中的闪存的存储器访问包括读操作和写操作。对闪存的海量数据的写操作成为应用程序执行中的瓶颈。闪存的存储器控制器有时使用外部动态随机存取存储器(Dynamic Random-Access Memory,DRAM)作为高速缓存存储器来加速写操作。随着对闪存的总体I/O吞吐量的需求的持续增长,DRAM也需要增加容量,这对存储器控制器的I/O吞吐率和固态驱动器存储系统的能源效率(energy efficiency)造成了显著的压力。
发明内容
本公开的各种实施例包括用于访问闪存的数据的硬件电路、系统和方法。
根据一个方面,一种系统,包括:主机;存储器控制器,与主机通信耦合;动态随机存取存储器,与存储器控制器通信耦合;以及闪存,与存储器控制器通信耦合;其中,存储器控制器包括静态随机存取存储器(static random-access memory,SRAM),存储器控制器被配置为:从主机接收写命令,写命令包括待写入闪存的数据;将数据分割成第一部分和第二部分;将第一部分存储到静态随机存取存储器;将第二部分存储到动态随机存取存储器;使用存储器控制器中的闪存转换层,发起与写命令相对应的配置操作;响应于闪存转换层指示的将数据存储到闪存的就绪状态,从静态随机存取存储器提取第一部分和从动态随机存取存储器提取第二部分;将所提取的第一部分和所提取的第二部分进行组合;将组合的第一部分和第二部分存储到闪存中。
在一些实施例中,存储器控制器在专用集成电路(application-specificintegrated circuit,ASIC)上实现。
在一些实施例中,闪存包括在固态驱动器(solid-state drive,SSD)。
在一些实施例中,为了将数据分割成第一部分和第二部分,存储器控制器还被配置为将数据分割成多个段,其中,该多个段包括第一类段和第二类段,每个第一类段具有第一长度,每个第二类段具有第二长度,在数据中,每个第一类段与至少一个第二类段相邻,并且第一部分包括第一类段,第二部分包括第二类段。
在一些实施例中,第一长度和第二长度可通过主机上的软件调整。
在一些实施例中,为了将数据分割成第一部分和第二部分,存储器控制器还被配置为将数据分割成多个段,其中,该多个段包括第一类段和第二类段,每个第一类段具有第一长度,每个第二类段具有第二长度,两个相邻的第一类段和第二类段相加为固态驱动器中的扇区的大小,并且第一部分包括第一类段,第二部分包括第二类段。
在一些实施例中,第一长度和第二长度可通过主机上的软件调整。
在一些实施例中,动态随机存取存储器是一个或多个双倍数据速率(double datarate,DDR)同步动态随机存取存储器(synchronous dynamic random access memory,SDRAM)。
在一些实施例中,存储器控制器还被配置为:通过存储器控制器中的静态随机存取存储器控制器,分配静态随机存取存储器中的第一存储空间以存储第一部分;通过存储器控制器中的动态随机存取存储器控制器,分配动态随机存取存储器中的第二存储空间以存储第二部分;以及响应于将组合的第一部分和第二部分存储到闪存中,通过存储器控制器释放第一存储空间和第二存储空间。
在一些实施例中,存储器控制器是用于闪存的开放通道控制器。
根据另一个方面,一种方法,包括:通过存储器控制器从主机接收写命令,写命令包括待写入闪存的数据;通过存储器控制器,将数据分割成第一部分和第二部分;通过存储器控制器,将第一部分存储到存储器控制器中的静态随机存取存储器中;通过存储器控制器,将第二部分存储到与存储器控制器通信耦合的动态随机存取存储器中;通过存储器控制器中的闪存转换层,发起与写命令相对应的配置操作;响应于闪存转换层指示的将数据存储到闪存的就绪状态,通过存储器控制器,从静态随机存取存储器提取第一部分和从动态随机存取存储器提取第二部分;通过存储器控制器,将所提取的第一部分和所提取的第二部分进行组合;以及通过闪存转换层,将组合的第一部分和第二部分存储到闪存中。
根据另一个方面,一种非暂时性的计算机可读存储介质,该非暂时性的计算机可读存储介质存储指令,当由一个或多个处理器执行指令时,使得一个或多个处理器执行操作,该操作包括:通过存储器控制器从主机接收写命令,写命令包括待写入闪存的数据;通过存储器控制器,将数据分割成第一部分和第二部分;通过存储器控制器,将第一部分存储到存储器控制器中的静态随机存取存储器中;通过存储器控制器,将第二部分存储到与存储器控制器通信耦合的动态随机存取存储器中;通过存储器控制器中的闪存转换层,发起与写命令相对应的配置操作;响应于闪存转换层所指示的将数据存储到闪存的就绪状态,通过存储器控制器,从静态随机存取存储器提取第一部分和从动态随机存取存储器提取第二部分;通过存储器控制器,将所提取的第一部分和所提取的第二部分进行组合;以及通过闪存转换层,将组合的第一部分和第二部分存储到闪存中。
本公开实施例中,提高了存储器控制器的整体写入速度,并且降低了存储器控制器的能源消耗。
附图说明
在参考附图考虑以下描述和所附权利要求书的情况下,本公开的系统、方法和硬件设备的这些和其他特征,结构的相关元件的操作方法和功能以及部件的组合和制造的经济性将变得更加明显。附图构成本说明书的一部分,其中相似的附图标记表示附图中的相应部分。然而,应当理解的是,附图仅用于说明和描述的目的,而不旨在定义本发明的限制。
图1示出根据本公开的一些实施例的示例性的固态驱动器存储系统的架构的示意图。
图2示出根据本公开的一些实施例的示例性的具有外部存储器的固态驱动器存储系统的工作流的示意图。
图3示出根据本公开的一些实施例的示例性的具有组合存储器的固态驱动器存储系统的架构的示意图。
图4示出根据本公开的一些实施例的示例性的具有组合存储器的固态驱动器存储系统的工作流的示意图。
图5示出根据本公开的一些实施例的示例性的具有组合存储器的固态驱动器存储系统中的存储数据分布的示意图。
图6示出根据本公开的一些实施例的另一示例性的具有组合存储器的固态驱动器存储系统中的存储数据分布的示意图。
图7示出根据本公开的一些实施例的示例性的使用固态驱动器存储系统中的组合存储器缓存数据的方法的流程图。
具体实施例
本公开在特定应用及其要求的背景下提供,旨在使本领域任何技术人员能够制造和使用实施例。对于本领域技术人员来说,对本公开的实施例的各种修改将是显而易见的,并且本公开定义的一般原理可以应用于其他实施例和应用,而不脱离本公开的精神和范围。因此,本公开不限于所示的实施例,而是符合与本公开的原理和特征一致的最宽范围。
NAND闪存是一种使用浮栅晶体管的非易失性闪存。在NAND闪存中,数据以比特存储,其中通常一个单元存储一个比特。这些单元被分组为NAND闪存的位线。然后,多个位线被分组为页,多个页被分组以形成块。NAND闪存包括多个块,并且NAND闪存中块的确切数量取决于NAND闪存的规格。对于写操作,NAND闪存使用页作为单位进行写入。对于擦除操作,NAND闪存一次擦除一个块。块允许执行的擦除操作的次数是有限的。块允许的最大擦除次数被称为擦写周期(program erase cycle)。应当理解,除非另有指示,否则在本公开中,NAND闪存被用作闪存的示例,并且术语NAND闪存可以指任何其他类似的存储器实体。
逻辑块地址(logical block address,LBA)是用于在应用程序级或主机级指定数据位置的通用方案。LBA对应用程序或主机可见,并且要访问固态驱动器中由LBA指向的数据,需要将LBA转换为固态驱动器中的物理地址。当主机在特定LBA(例如LBA 0)存储数据,并随后重写到相同的LBA时,新数据可以被存储在固态驱动器中的不同物理地址中,但修改NAND闪存的映射表,使得LBA现在指向存储新数据的新物理地址。新数据仍然以串行方式被写入NAND闪存。
固态驱动器(solid-state drive,SSD)是一种使用NAND闪存持久存储数据的存储器驱动器。固态驱动器控制器是固态驱动器上的嵌入式处理器或开放通道控制器,并且固态驱动器控制器被配置为执行固态驱动器的固件级软件并加速固态驱动器上的数据访问和处理。
随机存取存储器(random-access memory,RAM)是一种易失性的计算机存储器,它允许在几乎相同的时间内读数据或写数据,而不考虑存储器内数据的物理位置。
同步动态随机存取存储器(Synchronous Dynamic Random-Access Memory,SDRAM)是一种提供更快数据访问的动态随机存取存储器(dynamic random accessmemory,DRAM)。
静态随机存取存储器(static random-access memory,SRAM)是一种随机存取存储器,其通常比需要定期刷新的动态随机存取存储器更快、更昂贵。
闪存转换层(flash translation layer,FTL)是被配置为管理固态驱动器操作的中间层。闪存转换层包括硬件、软件、或硬件和软件两者,并且闪存转换层被配置为执行逻辑地址到物理地址的转换、垃圾回收、磨损均衡、纠错码(error correction code,ECC)、坏块管理等。
闪存物理地址(flash physical address,FPA)是指NAND闪存上的物理地址。例如,闪存物理地址包括NAND闪存上的特定物理地址的块号、通道号、页码等。
DDR SDRAM是双倍数据速率(double data rate,DDR)同步动态随机存取存储器(synchronous dynamic random access memory,SDRAM),其提供较高的数据传输速率。除非另有说明,否则DDR可指DDR1 SDRAM、DDR2 SDRAM、DDR3SDRAM、DDR4 SDRAM和DDR5 SDRAM等。
高速外围组件互连(Peripheral Component Interconnect Express,PCIe)是一种高速计算机总线标准。PCIe能够将固态驱动器与处理器(例如,中央处理单元(centralprocessing unit,CPU))连接。
直接存储器访问(direct memory access,DMA)是一种允许硬件系统不依赖主机或主机上的CPU访问存储器的功能(例如,模块、电路等)。例如,在实现DMA的情况下,CPU发起数据传输,然后在该传输进行中并且由DMA处理时,CPU执行其他操作。当数据传输完成时,DMA可以向CPU发送完成信号。因此,CPU不需要在进行其他操作之前等待数据传输完成。
扇区(sector)是固态驱动器中的存储单元。工业级固态驱动器上的扇区的典型范围是4096字节(即大约4KB)。扇区是固态驱动器上的读写操作的基本单元。例如,扇区是固态驱动器上的块。在一些实施例中,扇区还包括由扇区范围所涵盖的数据的元数据。
尽管固态驱动器使用NAND闪存(或其他类型的存储介质)提供快速读写带宽,但对于工业规模的应用,执行将大量数据写入固态驱动器的NAND闪存的写操作非常耗时。为了缓解这种情况,固态驱动器可以具有作为数据高速缓存的一个或多个内部DDR。当将数据从主机传输到固态驱动器时,固态驱动器首先将数据存储到内部DDR中,并向主机返回写完成信号。然后,当NAND闪存准备好进行更多写操作时,固态驱动器将数据从DDR传输到NAND闪存上。从主机的角度来看,当数据被存储到DDR上时,(例如,由固态驱动器的DMA指示)写操作完成。因此,主机不需要等待固态驱动器完成对NAND闪存的写操作,由此提高了执行应用的效率。
图1示出根据本公开的一些实施例的示例性的固态驱动器存储系统的架构的示意图。如图1所示,固态驱动器存储系统100包括主机110、固态驱动器控制器113、闪存(例如,NAND闪存)115和DDR 116。图1中的示意图仅用于说明性的目的,并且取决于实施方式,图1中所示的固态驱动器存储系统100可以具有更少、更多和替代的组件和连接。
在一些实施例中,主机110包括一个或多个CPU,其通过PCIe连接与固态驱动器控制器113连接。在一些实施例中,NAND闪存115包括多个NAND闪存存储器。在一些实施例中,固态驱动器控制器113包括PCIe DMA111、FTL 117、NAND DMA114和DDR管理器112。PCIe DMA111被配置为利用DMA来管理主机110和固态驱动器控制器113之间的数据传输。FTL 117被配置为为固态驱动器存储系统100执行逻辑地址到物理地址的转换。NAND DMA 114被配置为利用DMA来管理往来于NAND闪存115的数据传输。DDR管理器112被配置为管理往来于DDR116的数据传输。
在一些实施例中,DDR 116位于固态驱动器控制器113的外部。例如,DDR 116位于承载固态驱动器控制器113的芯片或专用集成电路的外部。尽管在图1中示出了DDR 116,但应理解,DDR 116可以是任何类似类型的RAM,例如SDRAM。在一些实施例中,固态驱动器控制器113在现场可编程门阵列(field programmable gate array,FPGA)上实现。应当理解,固态驱动器控制器113被用作示例,但固态驱动器控制器113可以是负责处理对NAND闪存115的存储器操作的任何类型的存储器控制器。
图2示出根据本公开的一些实施例的示例性的具有外部存储器的固态驱动器存储系统的工作流的示意图。应当理解,可以由图1所示的固态驱动器存储系统100来执行图2所示的工作流。图2仅用于说明性的目的,并且根据实施方式,图2所示的工作流可以具有更少、更多和替代的步骤、组件和连接。
如图2所示,在步骤1001中,主机110(例如,主机110内的CPU)发起对固态驱动器120的写操作。写操作和待写入的数据被从主机110传输到PCIe DMA 111。
在步骤1002中,PCIe DMA 111与DDR管理器112通信以请求DDR 116中的存储空间。
在步骤1003中,PCIe DMA 111从DDR管理器112接收DDR 116中的存储空间的存储地址,并通过存储地址将数据写入存储空间。
在步骤1004中,响应于完成步骤1003,PCIe DMA 111与FTL 117通信以指示待写入的数据准备就绪。
在步骤1005中,FTL 117执行存储器管理操作(例如,逻辑地址到物理地址的转换),并且对NAND闪存115执行配置操作。在一些实施例中,配置操作可以包括将从步骤1004分配的存储地址传输到NAND闪存。
在步骤1006中,响应于完成步骤1005的存储器管理操作或接收到FTL准备好存储数据的就绪信号,NAND DMA 114通过存储地址从DDR 116读出数据。
在步骤1007中,NAND DMA114将数据写入NAND闪存115以完成配置操作。
在步骤1008中,DDR管理器112释放存储地址以供将来使用。
如图2所示,当NAND闪存115正被配置时,固态驱动器存储系统100使用DDR 116作为缓冲器来存储数据。因此,主机110可以被释放以执行其他操作,而不是等待写操作完成。随着PCIe技术的不断进步(例如,PCIe5.0),主机110和固态驱动器120(例如,固态驱动器控制器113)之间的数据传输速率继续增加。然而,为了适应更高的数据传输速率,需要有更多的DDR或更高容量的DDR作为固态驱动器存储系统的一部分使用,这显著增加了成本,并且给能源使用和能源效率带来了额外压力。例如,固态驱动器控制器113通常被设置在被设计为尺寸更小并且高效节能的芯片或ASIC上。硬件约束之一是往来于芯片的总体I/O带宽是有限的(例如,PCIe插槽的数量和每个插槽的带宽是固定的)。因此,将更多外部DDR添加到固态驱动器存储系统可能会对I/O带宽造成显著压力。一种解决方案是将固态驱动器控制器113设置在具有更高I/O带宽的更大型的芯片上。然而,这样的硬件会增加更多成本并导致能源消耗的增加,这是不被期望的。此外,添加更多的DDR会导致固态驱动器存储系统在运行时产生的热量显著增加,这需要使用额外的资源和能源来帮忙散热。此外,在现代数据库和云环境中,固态驱动器控制器可以被分配任务以帮助执行不同种类的应用程序,并且固态驱动器控制器可以被连接到具有不同容量的闪存。不同的应用程序的存储器使用情况可能不同。例如,一些应用程序可以在短时间内写入海量数据,而其他一些应用程序倾向于以一种更统一的方式写入数据。处理较高容量的闪存的固态驱动器控制器可能需要较大的DDR作为高速缓存,而处理较低容量的闪存的固态驱动器控制器可以满足于较小的DDR。因此,灵活设置缓存处理对固态驱动器控制器是有利的。
为了解决上述问题,本公开的实施例提供了使用硬件组合存储器改进闪存数据缓存的系统和方法。图3示出根据本公开的一些实施例的示例性的具有组合存储器的固态驱动器存储系统的架构的示意图。图3仅用于说明性的目的,并且根据实施方式,图3中所示的架构可以具有更少、更多和替代的步骤、组件和连接。
如图3所示,固态驱动器存储系统300包括主机310(例如,类似于图1的主机110)、固态驱动器控制器313、NAND闪存315(例如,类似于图1中的NAND闪存115)和DDR 316(例如,类似于图1中的DDR 116)。
在一些实施例中,DDR 316位于固态驱动器控制器313的外部。例如,DDR 315可以位于承载固态驱动器控制器313的芯片或专用集成电路的外部。尽管在图3中示出了DDR316,但应理解,DDR 316可以是任何类似类型的RAM,例如SDRAM。在一些实施例中,固态驱动器控制器313可以在FPGA上实现。在一些实施例中,固态驱动器控制器313可以是开放通道控制器。应当理解,固态驱动器控制器313被用作示例,但固态驱动器控制器313可以是负责处理对NAND闪存315的存储器操作的任何类型的存储器控制器。
在一些实施例中,固态驱动器控制器313包括PCIe DMA311(例如,类似于图1的PCIe DMA 111)、FTL 317(例如,类似于图1的FTL 117)、NAND DMA 314(例如,类似于图1中的NAND DMA 114)和DDR管理器312(例如,类似于图1的DDR管理器112)。在一些实施例中,固态驱动器控制器313包括数据分割模块320、SRAM管理器321、SRAM 322和数据组合模块323。数据分割模块320可以与SRAM管理器321和DDR管理器312通信耦合,并被配置为确定是否将输入数据推送到SRAM管理器321、DDR管理器312或SRAM管理器321和DDR管理器312两者。SRAM管理器321可以被配置为分配和管理SRAM 322中的存储空间。数据组合模块323可以被配置为与SRAM管理器321和DDR管理器312通信,以从SRAM322和DDR316读取数据并进行组合。在一些实施例中,固态驱动器控制器313还包括NAND控制器318,NAND控制器318可以包括数据组合模块323和NAND DMA 314。
图4示出根据本公开的一些实施例的示例性的具有组合存储器的固态驱动器存储系统的工作流的示意图。应当理解,图4所示的工作流可以由图3所示的固态驱动器存储系统300执行。图4仅用于说明性的目的,并且取决于实施方式,图4中所示的工作流可以具有更少、更多和替代的步骤、组件和连接。
如图4所示,在步骤3001中,主机110(例如,主机310内的CPU)发起对固态驱动器330的写操作。写操作和待写入的数据被从主机310传输到PCIe DMA 311。在一些实施例中,待写入的数据可以是写操作的一部分。
在步骤3002中,PCIe DMA 311与数据分割模块320通信,以将写操作和待写入的数据传输到数据分割模块320。
在步骤3003中,数据分割模块320基于预定的分割配置分割数据,并与SRAM管理器321和DDR管理器312通信,以请求SRAM 322和DDR316中的存储空间。在一些实施例中,取决于预定的分割配置,待写入的数据可以仅存储在SRAM 322中,或者仅存储在DDR 316中,或者存储在SRAM 322和DDR 316的每一个中。在一些实施例中,一个预定的分割配置可以包括首先通过SRAM管理器321请求SRAM 322中的存储空间,并且当SRAM 322耗尽其全部空间来存储数据时,通过DDR管理器312请求DDR 316中的额外存储空间。
在步骤3004中,PCIe DMA 311从DDR管理器312接收DDR 316中的存储空间的一个或多个存储地址,或者从SRAM管理器321接收SRAM 322中的存储空间的一个或多个存储地址,或者从DDR管理器312接收DDR 316中的存储空间的一个或多个存储地址以及从SRAM管理器321接收SRAM 322中的存储空间的一个或多个存储地址,并通过存储地址将数据写入存储空间。DDR中的存储空间可以由DDR管理器312分配,并且SRAM 322中的存储空间可以由SRAM管理器321分配。
在步骤3005中,响应于完成步骤3004,PCIe DMA 311与FTL 317通信以指示待写入的数据准备就绪。
在步骤3006中,FTL 317执行存储器管理操作(例如,逻辑地址到物理地址的转换),并对NAND闪存315执行配置操作。在一些实施例中,配置操作可以包括将通过步骤3004分配的存储地址传输到NAND闪存。
在步骤3007中,响应于完成步骤3006的存储器管理操作或从FTL接收到FTL准备好存储数据的就绪信号,数据组合模块323通过存储地址从DDR 316、SRAM 322或者DDR 316和SRAM 322的每一个中读出数据,并组合数据。在一些实施例中,可以根据预定的分割配置来执行数据的组合。在一些实施例中,进一步响应于接收到的、步骤3005指示的待写入的数据准备就绪的通信消息,执行步骤3007。
在步骤3008中,数据组合模块323将组合的数据传输到NAND DMA 314。
在步骤3009中,NAND DMA 314将组合的数据写入NAND闪存315以完成配置操作。
在步骤3010中,DDR管理器312释放存储地址以供将来使用。
图5示出根据本公开的一些实施例的示例性的具有组合存储器的固态驱动器存储系统中的存储数据分布的示意图。应当理解,图5所示的数据分布可以由图3所示的固态驱动器存储系统300或图4所示的工作流使用。图5仅用于说明性的目的,并且取决于实施方式,图5中所示的数据分布可以具有更少、更多和替代的步骤、组件和连接。
如图5所示,数据流500可以被分割为一个或多个扇区,每个扇区具有相同的长度(例如,大约4KB)。邻近的(即,相邻的、紧邻的)数据扇区可以被组合在一起成为扇区段(asection of sectors),并且彼此相邻的段可以被分配给SSD控制器(例如,图3或图4的固态驱动器控制器313)中的不同存储介质,例如,SRAM(例如,图3或4的SRAM 322)和DRAM(例如,图3和图4的DDR 316)。例如,如图5所示,段1、3、5等中的每一个包括X个扇区,这些段可以被分配给SRAM。段2、4、6等中的每一个包括Y个扇区,这些段可以被分配给DRAM。在一些实施例中,通过数据分割模块(例如,图3的数据分割模块320)执行分配,并且该分配可以是数据分割模块的预定的分割配置的一部分。在一些实施例中,X或Y可以在0和256之间的范围内。
如图5所示,固态驱动器控制器可以根据不同目的调整数字X和Y,以最大化固态驱动器控制器的效率。例如,较大的X和较小的Y允许固态驱动器控制器在SRAM中存储更多数据,从而提高固态驱动器控制器的总体写入速度,并降低固态驱动器控制器的能源消耗。较大的Y和较小的X允许固态驱动器控制器通过利用DRAM来缓冲较大的数据量,这适用于需要频繁将大量数据写入NAND闪存的应用程序。在一些实施例中,X可以设置为0,所有输入数据都被写入DRAM。在一些实施例中,Y可以设置为0,所有输入数据都被写入SRAM。在一些实施例中,当SRAM耗尽存储空间时,剩余的输入数据可以被写入DRAM。在一些实施例中,可以使用软件调整图5中所示的数据分配(例如,调整X和Y)。在一些实施例中,可以通过来自主机(例如,图3或图4的主机310)的操作系统或应用程序调整图5所示的数据分配(例如,调整X和Y)。
基于主机上运行的应用程序的具体要求或由存储器控制器管理的固态驱动器的容量,图5所示的数据分配为对SRAM和DRAM分配数据提供了极大的灵活性。此外,将数据分割为交替的段还可以在分割和组合数据以及在SRAM和DRAM中存储和读取数据时实现额外的并行性,从而进一步提高执行写操作的总体效率。
图6示出根据本公开的一些实施例的另一示例性的具有组合存储器的固态驱动器存储系统的存储数据分布的示意图。应当理解,图6所示的数据分布可以由图3所示的固态驱动器存储系统300或图4所示的工作流使用。图6仅用于说明性的目的,并且取决于实施方式,图6中所示的数据分布可以具有更少、更多和替代的步骤、组件和连接。
如图6所示,数据流600可以被分割为一个或多个扇区,每个扇区具有相同的长度(例如,大约4KB)。每个扇区可以被分为两个段,彼此相邻的段可以被分配给固态驱动器控制器(例如,图3或图4的固态驱动器控制器313)中的不同存储介质,例如,SRAM(例如,图3或图4的SRAM 322)和DRAM(例如,图3或图4的DDR 316)。例如,如图6所示,段1、3等段中的每一个都包括M个字节,这些段可以被分配给SRAM。段2、4等段中的每一个都包括4KB减去M个字节,这些段可以被分配给DRAM。在一些实施例中,可以由数据分割模块(例如,图3的数据分割模块320)执行分配,并且该分配可以是数据分割模块的预定的分割配置的一部分。在一些实施例中,M可以在0字节到4KB的范围内变化。
如图6所示,固态驱动器控制器可以根据不同目的调整M个字节,以最大化固态驱动器控制器的效率。例如,更大的M允许固态驱动器控制器在SRAM中存储更多数据,从而提高固态驱动器控制器的整体写入速度,并且降低固态驱动器控制器的能源消耗。更小的M允许固态驱动器控制器通过利用DRAM来缓冲更大量的数据,这可以适用于需要频繁将大量数据写入NAND闪存的应用程序。在一些实施例中,M可以被设置为0,并且所有输入数据被写入DRAM。在一些实施例中,可以将M设置为4KB(即,扇区中的最大存储容量),并且将所有输入数据写入SRAM。在一些实施例中,当SRAM耗尽存储空间时,剩余的输入数据可以被写入DRAM。在一些实施例中,可以使用软件来调整图5所示的数据分配(例如,调整M)。在一些实施例中,可以由主机(例如,图3或图4的主机310)的操作系统或应用程序来调整图5所示的数据分配(例如,调整M)。
基于主机上运行的应用程序的具体要求或存储器控制器管理的固态驱动器的容量,图6所示的数据分配为对SRAM和DRAM分配数据提供了极大的灵活性。此外,将数据分割为交替的段还可以在分割和组合数据以及在SRAM和DRAM中存储和读取数据时实现额外的并行性,从而进一步提高执行写操作的总体效率。
图7示出根据本公开的一些实施例的示例性的使用固态驱动器存储系统中的组合存储器缓存数据的方法的流程图。应当理解,图7所示的方法700可以由图3或图4所示的系统300执行。图7仅用于说明性的目的,并且取决于实施方式,图7中所示方法700可以具有更少、更多和替代的步骤、组件和连接。
步骤710包括从主机接收对闪存的写命令。在一些实施例中,写命令包括待写入闪存的数据。闪存类似于图3的NAND闪存315。在一些实施例中,步骤710可以由与闪存通信耦合的存储器控制器(例如,图3的固态驱动器控制器313)执行,存储器控制器被配置为管理对NAND闪存的数据读/写操作。在一些实施例中,步骤710可以由负责管理与主机的通信的通信模块(例如,图3的PCIe DMA 311)执行。
步骤720包括根据预定的分割配置将数据分割成第一部分和第二部分。在一些实施例中,步骤720可由存储器控制器执行,例如,存储器控制器中的数据分割模块(例如,图3的数据分割单元320)。在一些实施例中,预定的分割配置可以包括图3、图4、图5和图6中描述的配置。例如,如图5所示,预定的分割配置可以包括将数据分割为多个段,该多个段包括第一类段和第二类段,每个第一类段具有第一长度,每个第二类段具有第二长度。在数据中,每个第一类段邻接至少一个第二类段,并且第一部分包括第一类段,第二部分包括第二类段。如图6所示,预定的分割配置可以包括将数据分割成多个段,该多个段包括第一类段和第二类段,每个第一类段具有第一长度,每个第二类段具有第二长度,两个相邻的第一类段和第二类段加起来等于固态驱动器中扇区的大小,并且第一部分包括第一类段,第二部分包括第二类段。
步骤730包括将第一部分存储到存储器控制器中的静态随机存取存储器(SRAM)中。在一些实施例中,步骤730可由存储器控制器执行,例如,存储器控制器中的SRAM管理器(例如,图3的SRAM管理器321)。在一些实施例中,SRAM类似于图3的SRAM 322。在一些实施方式中,当在SRAM中分配存储空间时,第一部分被存储到SRAM中。例如,SRAM管理器在接收到存储数据的第一部分的通知后,可以在SRAM中分配用于存储第一部分的存储空间。在一些实施例中,在步骤720中没有任何数据被分配到第一部分。在这种情况下,可以跳过步骤730。
步骤740包括将第二部分存储到与存储器控制器通信耦合的动态随机存取存储器(DRAM)中。在一些实施例中,步骤740可由存储器控制器执行,例如,存储器控制器中的DRAM管理器(例如,图3的DRAM管理器312)。在一些实施例中,DRAM可以类似于图3的DDR 316。在一些实施方式中,当在DRAM中分配存储空间时,第二部分被存储到DRAM中。例如,SRAM管理器在接收到存储数据的第二部分的通知后,可以在DRAM中分配用于存储第二部分的存储空间。在一些实施例中,在步骤720中没有任何数据被分配到第二部分。在这种情况下,可以跳过步骤740。
步骤750包括发起与对闪存的写命令相对应的配置操作。在一些实施例中,步骤750可由存储器控制器执行,例如,存储器控制器中的FTL(例如,图3的FTL 317)。在一些实施例中,在执行步骤750之前或作为执行步骤750的一部分,FTL可以执行与写命令相关联的存储器管理操作(例如,逻辑地址到物理地址的转换)。
步骤760包括响应于FTL完成配置操作,从SRAM提取第一部分,从DRAM提取第二部分。在一些实施例中,完成配置操作是指FTL准备好将数据写入固态驱动器的时间或FTL指示将数据写入固态驱动器的就绪状态的时间。例如,当FTL完成与写命令相关联的存储器管理操作时,FTL准备好写入固态驱动器。在一些实施例中,FTL可能正忙于先前的I/O命令。在这种情况下,FTL可以在完成先前的I/O命令之后指示就绪状态。在一些实施例中,步骤760可由存储器控制器执行,例如,存储器控制器中的数据组合模块(例如,图3的数据组合模块323)。
步骤770包括对所提取的第一部分和第二部分进行组合。在一些实施例中,步骤770可以由存储器控制器(例如,数据组合模块(例如,图3的数据组合模块323))执行。在一些实施例中,可以根据预定的分割配置来执行数据的组合。例如,如图5所示,数据流500被分割成交替存储在SRAM和DDR中的段。因此,当所分割的段被组合在一起时,每个段以相同的顺序和方式交替链接。
步骤780包括将组合的第一部分和第二部分存储到与配置操作相对应的闪存中。在一些实施例中,步骤780可由存储器控制器(例如,存储器控制器中的FTL)执行。在一些实施例中,存储数据的第一部分和第二部分是对固态驱动器的配置操作的一部分。
在一些实施例中,方法700还包括响应于将组合的第一部分和第二部分存储到与配置操作相对应的闪存中,释放被分配给DRAM和SRAM的存储空间。在一些实施例中,存储空间的释放可由存储器控制器执行,并且释放的存储空间可用于对固态驱动器的未来操作。
本公开的实施例提供了相对于现有解决方案具有许多优点的系统和方法。在将数据写入NAND闪存之前,固态驱动器控制器不依赖DDR来缓存数据,而是利用位于芯片上的SRAM来帮助缓存数据,并且基于主机上运行的应用程序规范和NAND闪存的容量来为DDR和SRAM分割数据。SRAM的使用允许承载固态驱动器控制器的硬件(例如,芯片、ASIC、FPGA等)具有较小的大小和高效的I/O带宽,这降低了运行额外的DDR产生的成本和散热需求。
上文中描述的每个过程、方法和算法都可以体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中,并可以通过该代码模块完全或部分自动化。这些过程和算法可以部分或全部地在专用电路中实现。
当本文公开的功能以软件功能单元的形式实现并作为独立产品出售或使用时,它们可以是存储在由处理器执行的非易失性的计算机可读存储介质中。本文公开的特定技术解决方案(全部或部分)或有助于当前技术的各方面可以以软件产品的形式体现。软件产品包括多个指令,可以存储在存储介质中,以使计算设备(可以是个人计算机、服务器、网络设备等)执行本公开实施例的方法的全部或一些步骤。存储介质可以包括固态驱动器、便携式硬盘驱动器、ROM、RAM、磁盘、光盘、可用于存储程序代码的另一介质、或其任何组合。
特定实施例还提供了一种系统,该系统包括处理器和非暂时性的计算机可读存储介质,非暂时性的计算机可读存储介质存储可由处理器执行的指令,以使系统执行与上述实施例的任何方法中的步骤相对应的操作。特定实施例还提供一种非暂时性的计算机可读存储介质,其配置有可由一个或多个处理器执行的指令,以使一个或多个处理器执行与上述实施例的任何方法中的步骤相对应的操作。
本文公开的实施例可以通过与客户端交互的云平台、服务器或服务器组(以下统称为“服务系统”)来实现。客户机可以是终端设备,或者由用户在平台上注册的客户机,其中终端设备可以是移动终端、个人计算机(PC)以及可以安装有平台应用程序的任何设备。
上面描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合均在本公开的范围内。此外,在一些实施例中,某些方法或进程方框可能被省略。这里描述的方法和进程也不限于任何特定顺序,并且与之相关的方框或状态可以在适当的其他顺序中执行。例如,所描述的方框或状态可以以特定公开的顺序以外的顺序执行,或者多个方框或状态可以组合在单个方框或状态中。示例方框或状态可以串行、并行或以某种其他方式执行。方框或状态可以添加到本公开的示例实施例中或从本公开的示例实施例中移除。这里描述的示例性系统和组件可以不同于所描述的方式来配置。例如,与本公开的示例实施例相比,可以在本公开的示例实施例中添加、移除或重置元件。
本文描述的示例方法的各种操作可通过算法至少部分地执行。该算法可包括在存储在存储器(例如,上文描述的非暂时性的计算机可读存储介质)中的程序代码或指令中。这种算法可以包括机器学习算法。在一些实施例中,机器学习算法可以不显式地编程计算机以执行功能,但可以从训练数据学习以建立执行该功能的预测模型。
本文所述的示例方法的各种操作可由一个或多个处理器至少部分地执行,这些处理器可被临时配置(例如,通过软件)或永久配置为执行相关操作。无论是临时配置还是永久配置的处理器,这些处理器都可以构成处理器实现的引擎,其运行以执行本文所述的一个或多个操作或功能。类似地,本文描述的方法可以至少部分地由处理器实现,其中特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的引擎执行。此外,一个或多个处理器还可以用于支持在“云计算”环境中或作为“软件即服务”(software as a service,SaaS)的相关操作的能力。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以通过网络(例如,互联网)和通过一个或多个适当的接口(例如,应用程序接口(Application ProgramInterface,API))访问。
某些操作的能力可以分布在处理器之间,不是仅驻留在一台机器内,而是部署在多台机器上。在一些示例性的实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器农场中)。在其他示例性的实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在本说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一个或多个方法的单个操作被示出并描述为单独的操作,但是一个或多个单独操作可以同时执行,并且不要求按照所示顺序执行操作。在示例性的配置中作为单独组件呈现的结构和功能可以作为组合结构或组件来实现。类似地,作为单个组件呈现的结构和功能可以作为单独的组件来实现。这些以及其他变化、修改、添加和改进属于本文主题的范围。
尽管已经参考特定示例性的实施例描述了本主题的概况,但是不偏离本公开实施例的更广泛范围的情况下,可以对这些实施例进行各种修改和改变。在此,本公开的这些实施例可以单独地或共同地通过术语“本公开”来指代,术语“本公开”仅仅是为了方便,并且如果事实上公开了不止一个实施例或概念的话,则不打算自愿地将本公开的范围限制于任何单个公开的实施例或概念。
本文所示的实施例被充分详细地描述,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中衍生出其他实施例,使得可以在不脱离本公开的范围的情况下进行结构和逻辑替换和更改。因此,具体实施例部分不应被理解为限制性的,并且各种实施例的范围仅由所附权利要求以及这些权利要求所享有的全部等同物来定义。
本文描述和/或附图中描述的流程图中的任何过程描述、元素或方框应被理解为可能代表代码的模块、部分或段,其包括用于在过程中实现特定逻辑功能或步骤的一个或多个可执行指令。如本领域技术人员所理解的,本文所描述的实施例的范围包括替代实现方式,在替代实现方式中,根据所涉及的功能,可以删除元素或功能,可以以与所示或所讨论的顺序不同的顺序执行元素或功能(包括基本上同时执行或以相反的顺序执行)。
如本文所用,“或”是包含的,而不是排斥的,除非另有明确指示或上下文另有指示。因此,在这里,“A、B或C”指“A、B、C、A和B、A和C、B和C、或A、B和C”,除非另有明确指示或上下文另有指示。此外,“和”是连带的和个别的,除非另有明确表示或上下文另有表示。因此,在此,“A和B”指“A和B,共同地或分别地”,除非另有明确指示或上下文另有指示。此外,可以为在此描述为单个实例的资源、操作或结构提供多个实例。此外,各种资源、操作、引擎和数据存储之间的边界是任意的,并且在特定说明性配置的上下文中说明特定操作。设想了功能的其他分配,并且可以落在本公开的各种实施例的范围内。通常,在示例配置中作为单独资源呈现的结构和功能可以被实现为组合的结构或资源。类似地,作为单一资源呈现的结构和功能可以作为单独的资源实现。这些和其他变化、修改、添加和改进落在通过所附权利要求所表示的本公开的实施例的范围内。因此,说明书和附图被视为说明性的而不是限制性的。
术语“包括”或“包含”用于表示随后声明的特征的存在,但不排除添加其他特征。条件语言,例如,除其他外,“可能”或“可以”,除非另有明确说明,或在所使用的上下文中以其他方式理解,一般旨在传达某些实施例包括某些特征、元素和/或步骤,而其他实施例不包括。因此,这种条件语言通常并不意味着特征、元素和/或步骤是一个或多个实施例以任何方式所需要的,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下决定这些特征、元素和/或步骤是否包括或将在任何特定实施例中执行的逻辑。

Claims (20)

1.一种数据存储系统,包括:
主机;
存储器控制器,与所述主机通信耦合;
动态随机存取存储器,与所述存储器控制器通信耦合;以及
闪存,与所述存储器控制器通信耦合;
其中,所述存储器控制器包括静态随机存取存储器,并且所述存储器控制器被配置为:
从所述主机接收写命令,所述写命令包括待写入所述闪存的数据,
将所述数据分割成第一部分和第二部分,
将所述第一部分存储到所述静态随机存取存储器中,
将所述第二部分存储到所述动态随机存取存储器中,
使用所述存储器控制器中的闪存转换层,发起与所述写命令相对应的配置操作,
响应于所述闪存转换层指示将所述数据存储到所述闪存中的就绪状态,从所述静态随机存取存储器提取所述第一部分和从所述动态随机存取存储器提取所述第二部分,
对所提取的第一部分和所提取的第二部分进行组合,以及
将组合的第一部分和第二部分存储到所述闪存中。
2.根据权利要求1所述的数据存储系统,其中,所述存储器控制器在专用集成电路上实现。
3.根据权利要求1所述的数据存储系统,其中,所述闪存包括在固态驱动器。
4.根据权利要求1所述的数据存储系统,其中,为了将所述数据分割为所述第一部分和所述第二部分,所述存储器控制器还被配置为将所述数据分割成多个段,
其中,所述多个段包括第一类段和第二类段,每个所述第一类段具有第一长度,每个所述第二类段具有第二长度,在所述数据中,每个所述第一类段与至少一个所述第二类段相邻,并且所述第一部分包括所述第一类段,所述第二部分包括所述第二类段。
5.根据权利要求4所述的数据存储系统,其中,所述第一长度和所述第二长度可通过所述主机上的软件调整。
6.根据权利要求1所述的数据存储系统,其中,为了将所述数据分割为所述第一部分和所述第二部分,所述存储器控制器还被配置为将所述数据分割成多个段,
其中,所述多个段包括第一类段和第二类段,每个所述第一类段具有第一长度,每个所述第二类段具有第二长度,两个相邻的所述第一类段和所述第二类段相加为固态驱动器中的扇区的大小,并且所述第一部分包括所述第一类段,所述第二部分包括所述第二类段。
7.根据权利要求6所述的数据存储系统,其中,所述第一长度和所述第二长度可通过所述主机上的软件调整。
8.根据权利要求1所述的数据存储系统,其中,所述动态随机存取存储器是一个或多个双倍数据速率同步动态随机存取存储器。
9.根据权利要求1所述的数据存储系统,其中,所述存储器控制器还被配置为:
通过所述存储器控制器中的静态随机存取存储器控制器,在所述静态随机存取存储器中分配第一存储空间以存储所述第一部分;
通过所述存储器控制器中的动态随机存取存储器控制器,在所述动态随机存取存储器中分配第二存储空间以存储所述第二部分;以及
响应于将组合的第一部分和第二部分存储到所述闪存中,通过所述存储器控制器释放所述第一存储空间和所述第二存储空间。
10.根据权利要求1所述的数据存储系统,其中,所述存储器控制器是用于所述闪存的开放通道控制器。
11.一种数据存储方法,包括:
通过存储器控制器从主机接收写命令,所述写命令包括待写入闪存的数据;
通过所述存储器控制器,将所述数据分割成第一部分和第二部分;
通过所述存储器控制器,将所述第一部分存储到所述存储器控制器中的静态随机存取存储器中;
通过所述存储器控制器,将所述第二部分存储到与所述存储器控制器通信耦合的动态随机存取存储器中;
通过所述存储器控制器中的闪存转换层,发起与所述写命令相对应的配置操作;
响应于所述闪存转换层指示将所述数据存储到所述闪存中的就绪状态,通过所述存储器控制器,从所述静态随机存取存储器提取所述第一部分和从所述动态随机存取存储器提取所述第二部分;
通过所述存储器控制器,将所提取的第一部分和所提取的第二部分进行组合;以及
通过所述闪存转换层,将组合的第一部分和第二部分存储到所述闪存中。
12.根据权利要求11所述的数据存储方法,其中,所述存储器控制器在专用集成电路上实现。
13.根据权利要求11所述的数据存储方法,其中,所述闪存包括在固态驱动器。
14.根据权利要求11所述的数据存储方法,其中,为了将所述数据分割为所述第一部分和所述第二部分,所述数据存储方法还包括:
将所述数据分割成多个段,
其中,所述多个段包括第一类段和第二类段,每个所述第一类段具有第一长度,每个所述第二类段具有第二长度,在所述数据中,每个所述第一类段与至少一个所述第二类段相邻,并且所述第一部分包括所述第一类段,所述第二部分包括所述第二类段。
15.根据权利要求14所述的数据存储方法,其中,所述第一长度和所述第二长度可通过所述主机上的软件调整。
16.根据权利要求11所述的数据存储方法,其中,为了将所述数据分割为所述第一部分和所述第二部分,所述数据存储方法还包括:
将所述数据分割成多个段,
其中,所述多个段包括第一类段和第二类段,每个所述第一类段具有第一长度,每个所述第二类段具有第二长度,两个相邻的所述第一类段和所述第二类段相加为固态驱动器中的扇区的大小,并且所述第一部分包括所述第一类段,所述第二部分包括所述第二类段。
17.根据权利要求16所述的数据存储方法,其中,所述第一长度和所述第二长度可通过所述主机上的软件调整。
18.根据权利要求17所述的数据存储方法,其中,所述动态随机存取存储器是一个或多个双倍数据速率同步动态随机存取存储器。
19.根据权利要求11所述的数据存储方法,其中,所述数据存储方法还包括:
通过所述存储器控制器中的静态随机存取存储器控制器,在所述静态随机存取存储器中分配第一存储空间以存储所述第一部分;
通过所述存储器控制器中的动态随机存取存储器控制器,在所述动态随机存取存储器中分配第二存储空间以存储所述第二部分;以及
响应于将组合的第一部分和第二部分存储到所述闪存中,通过所述存储器控制器释放所述第一存储空间和所述第二存储空间。
20.一种非暂时性的计算机可读存储介质,所述非暂时性的计算机可读存储介质存储指令,所述指令由一个或多个处理器执行,使得所述一个或多个处理器执行操作,所述操作包括:
通过存储器控制器从主机接收写命令,所述写命令包括待写入闪存的数据;
通过所述存储器控制器,将所述数据分割成第一部分和第二部分;
通过所述存储器控制器,将所述第一部分存储到所述存储器控制器中的静态随机存取存储器中;
通过所述存储器控制器,将所述第二部分存储到与所述存储器控制器通信耦合的动态随机存取存储器中;
通过所述存储器控制器中的闪存转换层,发起与所述写命令相对应的配置操作;
响应于所述闪存转换层指示将所述数据存储到所述闪存中的就绪状态,通过所述存储器控制器,从所述静态随机存取存储器提取所述第一部分和从所述动态随机存取存储器提取所述第二部分;
通过所述存储器控制器,将所提取的第一部分和所提取的第二部分进行组合;以及
通过所述闪存转换层,将组合的第一部分和第二部分存储到所述闪存中。
CN202211527666.3A 2022-11-30 2022-11-30 数据存储系统、数据存储方法和存储介质 Pending CN116257176A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211527666.3A CN116257176A (zh) 2022-11-30 2022-11-30 数据存储系统、数据存储方法和存储介质
US18/174,269 US20240176539A1 (en) 2022-11-30 2023-02-24 Novel data cache scheme for high performance flash memories

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211527666.3A CN116257176A (zh) 2022-11-30 2022-11-30 数据存储系统、数据存储方法和存储介质

Publications (1)

Publication Number Publication Date
CN116257176A true CN116257176A (zh) 2023-06-13

Family

ID=86678207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211527666.3A Pending CN116257176A (zh) 2022-11-30 2022-11-30 数据存储系统、数据存储方法和存储介质

Country Status (2)

Country Link
US (1) US20240176539A1 (zh)
CN (1) CN116257176A (zh)

Also Published As

Publication number Publication date
US20240176539A1 (en) 2024-05-30

Similar Documents

Publication Publication Date Title
US11054991B2 (en) Data storage system scale-out with local address remapping
CN106354615B (zh) 固态硬盘日志生成方法及其装置
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US11630766B2 (en) Memory system and operating method thereof
US20180095662A1 (en) Parallel segment writer
CN113924545B (zh) 基于存储器子系统中的媒体单元的可用性的预测性数据传输
US11966329B2 (en) Address map caching for a memory system
US10754785B2 (en) Checkpointing for DRAM-less SSD
US9569381B2 (en) Scheduler for memory
US11132291B2 (en) System and method of FPGA-executed flash translation layer in multiple solid state drives
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
US20210181986A1 (en) Storage device, storage system and operating method thereof
WO2019062202A1 (zh) 硬盘操作命令的执行方法、硬盘及存储介质
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US20230244394A1 (en) Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive
JP2021149374A (ja) データ処理装置
CN110554833B (zh) 存储设备中并行处理io命令
KR102480016B1 (ko) 다수의 맵핑 단위를 이용하는 불휘발성 메모리 시스템 및 그 동작방법
US20190042443A1 (en) Data acquisition with zero copy persistent buffering
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
CN116257176A (zh) 数据存储系统、数据存储方法和存储介质
US11182329B2 (en) Data processing system and operating method thereof
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
CN113811847A (zh) 来自主机系统的写入命令的部分执行
US20230325110A1 (en) Operation method of host device and operation method of storage device

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
TA01 Transfer of patent application right

Effective date of registration: 20230809

Address after: Zone D, 2nd Floor, Building 3, No. 120 Shengtong Street, High tech Zone, Chengdu City, Sichuan Province, 610000

Applicant after: Pingtouge (Chengdu) Semiconductor Co.,Ltd.

Address before: 200120 floor 5, No. 366, Shangke road and No. 2, Lane 55, Chuanhe Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant before: Pingtouge (Shanghai) semiconductor technology Co.,Ltd.

TA01 Transfer of patent application right