CN114610654B - 一种固态存储设备以及向其写入数据的方法 - Google Patents
一种固态存储设备以及向其写入数据的方法 Download PDFInfo
- Publication number
- CN114610654B CN114610654B CN202210225337.7A CN202210225337A CN114610654B CN 114610654 B CN114610654 B CN 114610654B CN 202210225337 A CN202210225337 A CN 202210225337A CN 114610654 B CN114610654 B CN 114610654B
- Authority
- CN
- China
- Prior art keywords
- command
- cache unit
- write command
- flush
- storage device
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/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
- 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/1021—Hit rate improvement
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种固态存储设备以及向其写入数据的方法,其中该方法包括如下步骤:响应于接收了写命令,识别所述写命令是否命中了缓存单元;若所述写命令命中了缓存单元,判断所述命中的缓存单元是否受到刷写命令的影响;若被命中的缓存单元受刷写命令的影响,则临时缓存所述写命令以待所述刷写命令处理完成后再处理所述写命令或者为写命令分配新的不受刷写命令影响的缓存单元。
Description
技术领域
本申请涉及存储设备,尤其涉及一种固态存储设备以及向其写入数据的方法。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。固态存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储以及管理主机逻辑地址到闪存物理地址的映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在现有的固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。
NVMe协议中还定义了刷写(Flush)命令。通过Flush命令,指示存储设备将先于Flush命令接收到的所有命令要写入的数据(及其元数据)都保存到非易失存储介质。
固态存储设备使用缓存来提高性能。对于写命令,将写命令指示的数据写入缓存后,即指示写命令处理完成。由于缓存的存在,在处理Flush命令时,要将缓存中的数据写入非易失存储介质,这一过程占用了过长的时间。需要降低或避免因Flush命令而使主机经历的将缓存中的数据写入非易失存储介质过程引起的性能抖动。
发明内容
本申请的固态存储设备以及向其写入数据的方法的解决了因Flush命令所引发的固态存储设备写入数据时产生的性能抖动问题。
根据本申请的第一方面,本申请提供一种向固态存储设备写入数据的方法,其中,包括如下步骤:响应于接收了刷写命令,获取当前时间以生成关联于所述刷写命令的时间戳;访问缓存描述符;获得缓存描述符中的时间戳数据;将缓存描述符的时间戳早于所述刷写命令的时间戳的缓存描述符所指示的缓存单元的数据写入非易使性存储器。
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,在时间戳早于所述刷写命令的时间戳的所有缓存描述符所指示的缓存单元的数据都写入非易使性存储器时,指示所述刷写命令处理完成。
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,所述缓存描述符中包括所分配的缓存单元的索引、指示所分配的缓存单元写入时间的时间戳以及所分配的缓存单元中数据的地址。
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,其中,所述数据的地址是非易使性存储器的逻辑地址或物理地址。
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,当接收的是写命令时,为写命令分配动态随机存储器的缓存单元与缓存描述符。
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,在接收刷写命令之后,设置标记以指示有刷写命令待处理;在刷写命令处理完成后,清除所设置的标记。
根据本申请的第二方面,本申请还提供一种向固态存储设备写入数据的方法,其中,包括如下步骤:响应于动态随机存储器的缓存单元被写入数据,轮询缓存描述符;根据缓存描述符,将缓存单元内的数据写入非易使性存储器。
根据本申请的第二方面的一种向固态存储设备写入数据的方法,其中,响应于缓存单元内的数据写入非易使性存储器,释放所述缓存单元。
根据本申请的第三方面,本申请还提供一种向固态存储设备写入数据的方法,其中,包括如下步骤:响应于接收了写命令,识别所述写命令是否命中了缓存单元;若所述写命令命中了缓存单元,判断所述命中的缓存单元是否受到刷写命令的影响;若被命中的缓存单元受刷写命令的影响,则临时缓存所述写命令以待所述刷写命令处理完成后再处理所述写命令或者为写命令分配新的不受刷写命令影响的缓存单元。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,若所述写命令未命中缓存单元,则为所述写命令分配空闲的缓存单元,并将写命令对应的数据存储在缓存单元中。
根据本申请的第三方面的一种的向固态存储设备写入数据的方法,其中,通过写命令要访问的逻辑地址与缓存描述符所记录的逻辑地址是否一致来识别所述写命令是否命中了缓存单元。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,若被命中的缓存单元不受刷写命令的影响,则将写命令待写入的存储在被命中的缓存单元中,并指示写命令处理完成。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,在当前没有待执行的刷写命令或者当前虽然有待执行的刷写命令,但所述待执行的刷写命令的时间戳小于被命中的缓存单元的时间戳时,判断被命中的缓存单元不受刷写命令的影响。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,在当前有待执行的刷写命令且所述待执行的刷写命令的时间戳不小于被命中的缓存单元的时间戳时,判断被命中的缓存单元受刷写命令的影响。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,在临时缓存所述写命令期间,继续接收命令并进行处理。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,为写命令分配新的不受刷写命令影响的缓存单元是在当前没有待执行的刷写命令时的任意未被占用的缓存单元或者当前虽然有待执行的刷写命令,但所述待执行的刷写命令的时间戳小于缓存单元的时间戳的未被占用的缓存单元。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,为写命令分配新的不受刷写命令影响的缓存单元之后,还为所述新的不受刷写命令影响的缓存单元分配缓存描述符。
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,所述缓存描述符中包括所分配的缓存单元的索引、指示所分配的缓存单元写入时间的时间戳以及所分配的缓存单元中数据的地址。
根据本申请的第三方面的一种所述的向固态存储设备写入数据的方法,其中,在所述写命令对应的数据存储在缓存单元中后,指示所述写命令完成。
根据本申请的第四方面,本申请还提供一种固态存储设备,包括动态随机存储器、控制器与非易失性存储器,其中,控制器执行如上之一所述的方法。
根据本申请的第四方面,本申请还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行如上所述的之一的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术的固态存储设备的结构示意图;
图2为根据本申请实施例的固态存储设备的结构示意图;
图3为根据本申请实施例的缓存描述符;
图4A-4C为根据本申请实施例的处理Flush命令的示意图;
图5A-5D为根据本申请又一实施例的处理Flush命令的示意图;
图6为根据本申请实施例的利用缓存处理Flush命令的流程图;
图7为根据本申请又一实施例的利用缓存处理Flush命令的流程图
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2展示了根据本申请实施例的固态存储设备的框图。固态存储设备的控制部件包括主机接口210、CPU 220、地址转换单元230和用于访问NVM芯片105的介质接口240。控制部件还耦合到外部存储器(例如,DRAM)260。
控制部件的存储器中存储了缓存描述符。缓存描述符的一个或多个记录了对应的缓存单元265在DRAM 260中的地址与占用缓存单元的数据的存储设备地址(例如,存储设备可被主机访问的逻辑地址或物理地址)。
主机接口210用于同主机交换命令与数据。例如,主机与存储设备通过NVMe/PCIe协议通信,主机接口210处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。
CPU 220耦合到主机接口210,用于接收主机发送给存储设备的IO命令,并利用一个或多个缓存单元265来服务所接收的IO命令。若主机使用逻辑地址访问存储设备,CPU220还访问地址转换单元230以将逻辑地址转换为物理地址。CPU 220还将接收的IO命令(IO命令形态在处理处理过程中可能发生变化,这里为了表达简洁而统称为IO命令)发送给介质接口240,由介质接口240根据IO命令访问一个或多个NVM芯片。
图3展示了根据本申请实施例的缓存描述符。
每个缓存描述符用于描述同其对应的一个缓存单元。缓存描述符记录了对应的缓存单元的索引(图3的缓存单元索引)、时间戳与逻辑地址(LBA)。缓存单元索引指示缓存单元在DRAM 260中的位置。时间戳记录缓存单元被分配的时间,逻辑地址(LBA)记录该缓存单元被分配给的IO命令所访问的逻辑地址。可以理解地,主机使用物理地址访问存储设备时,缓存单元描述符的逻辑地址字段被替换为记录物理地址。
图4A-4C展示了根据本申请实施例处理Flush命令的示意图。
图4A展示了命令队列中按时间顺序收到的IO命令。最早在T1时刻收到写命令(IOW1),接下来在T2时刻收到写命令(IO W2),然后收到Flush命令,接下来在T3时刻与T4时刻依次收到写命令(IO W3)与写命令(IO W4)。图4A中,箭头指示时间流逝的方向。收到Flush命令的时刻在T3时刻与T4时刻之间。
图4B展示了处理Flush命令之前,缓存单元的状态。根据本申请实施例的存储设备,收到Flush命令后,并不停止对其他IO命令的接收与处理。因而虽然在写命令(IO W3)之前收到了Flush命令,对写命令(IO W3)与写命令(IO W4)依然已经开始处理,为写命令(IOW3)分配了缓存单元(由ID3指示),并且写命令(IO W3)要写入的数据已经被存储在缓存单元中,为写命令(IO W4)分配了缓存单元(由ID4指示),但写命令(IO W4)要写入的数据尚未被写入缓存单元。
图4C展示了处理Flush命令之后,缓存单元的状态。响应于收到Flush命令,将先于接收Flush命令而接收的所有IO命令(参看图4A,写命令(IO W1)与写命令(IO W2))的要写入的数据写入到非易失存储介质(例如,NVM芯片105,也参看图2)。接下来可以向主机指示Flush命令被处理完成。而此时写命令(IO W3)与写命令(IO W4)要写入的数据是否被写入非易失存储介质不受该Flush命令的语义约束。
图5A-5D展示了根据本申请又一实施例处理Flush命令的示意图。
图5A与图4A相同,展示了命令队列中按时间顺序收到的IO命令。最早在T1时刻收到写命令(IO W1),接下来在T2时刻收到写命令(IO W2),然后收到Flush命令,接下来在T3时刻与T4时刻依次收到写命令(IO W3)与写命令(IO W4)。图5A中,箭头指示时间流逝的方向。收到Flush命令的时刻在T3时刻与T4时刻之间。
图5B展示了处理Flush命令之前,缓存单元的状态。根据本申请实施例的存储设备,收到Flush命令后,并不停止对其他IO命令的接收与处理。因而虽然在写命令(IO W3)之前收到了Flush命令,对写命令(IO W3)与写命令(IO W4)依然已经开始处理,为写命令(IOW3)分配了缓存单元(由ID3指示),并且写命令(IO W3)要写入的数据尚未被存储在缓存单元中。以及在Flush命令开始处理前,尚未给写命令(IO W4)分配缓存单元。
图5C展示了处理Flush命令过程中的某时刻,缓存单元的状态。响应于收到Flush命令,要将先于接收Flush命令而接收的所有IO命令(参看图5A,写命令(IO W1)与写命令(IO W2))的要写入的数据写入到非易失存储介质(例如,NVM芯片105,也参看图2)。在图5C展示的时刻,写命令(IO W1)要写入的数据已经被写入非易失存储介质,而写命令(IO W2)要写入的数据尚未被写入非易失性存储介质。写命令(IO W3)要写入的数据依然尚未被写入缓存单元。以及依然尚未给写命令(IO W4)分配缓存单元。
图5D展示了处理Flush命令之后,缓存单元的状态。先于接收Flush命令而接收的所有IO命令(参看图5A,写命令(IO W1)与写命令(IO W2))的要写入的数据已经被写入到非易失存储介质(例如,NVM芯片105,也参看图2)。由于写命令(IO W1)被处理完成,其占用的缓存单元被释放,该缓存单元可被分配给其他写命令。写命令(IO W2)占用的缓存单元尚未被释放。
接下来可以向主机指示Flush命令被处理完成。而此时写命令(IO W3)与写命令(IO W4)要写入的数据是否被写入非易失存储介质不受该Flush命令的语义约束。作为举例,参看图5D,写命令(IO W3)要写入的数据依然尚未被写入缓存单元。以及为写命令(IOW4)分配了缓存单元(ID 4)。
图6是根据本申请实施例的利用缓存处理Flush命令的流程图。
根据图6的实施例所展示的处理流程由例如图2的CPU 220控制,并协同控制部件104的其他部分共同完成。
响应于从主机接口获取的IO命令(610),识别IO命令的类型,以区分IO命令是写命令(620),还是Flush命令(670)。对于写命令,为写命令分配缓存,例如,分配尚未被使用的缓存单元与缓存描述符。在缓存描述符中记录分配的缓存单元的地址、指示当前时间的时间戳,以及从主机获取写命令要写入的数据,将要写入的数据存储在分配的缓存单元中(630)。至此虽然写命令对应的数据尚未被写入NVM芯片,但可向主机指示该写命令处理完成(640)。
在CPU中运行的另一任务,用于将写入缓存单元的数据搬移到NVM芯片(650)。例如,响应于缓存单元被写入数据,即开始将缓存单元的数据搬移到NVM芯片的过程。作为又一个例子,轮询各缓存描述符,以轮流地将被写入了数据的缓存单元的数据搬移到NVM芯片。可选地,响应于缓存单元中的数据被搬移到NVM芯片,释放该缓存单元,从而该缓存单元中的时间戳被更新(或清除),以及该缓存单元可被分配给其他写命令。
对于从主机接口获取的IO命令,如为Flush命令,获取当前时间以生成关联于该Flush命令的时间戳(680)。通过访问各缓存描述符,以识别时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据是否都被搬移到了NVM芯片(660)。如果时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据都被搬移到了NVM芯片,则向主机指示该Flush命令处理完成(690)。
如果时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据并未都被搬移到了NVM芯片,对于该Flush命令,则待时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据都被搬移到了NVM芯片(660)后,再向主机指示该Flush命令处理完成(690)。可以理解地,在等待时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据都被搬移到了NVM芯片期间,可继续执行图6所示的流程,从主机接口获取IO命令并进行处理。
作为举例,若收到了Flush命令,设置标记以指示有Flush命令待处理。并且在每次从主机接口获取了IO命令后,若发现指示有Flush命令待处理的标记存在,访问各缓存描述符,以识别时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据是否都被搬移到了NVM芯片。若识别出Flush命令被处理完成,还清除所设置的标记。
参看图6,作为举例,将写入缓存单元的数据搬移到NVM芯片的任务持续不断的执行,而并非响应于识别出时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据并未都被搬移到了NVM芯片而被执行。但是,对Flush命令的处理依赖于将缓存单元中的关联于Flush命令的缓存单元的数据搬移到NVM芯片。可选地,响应于要处理Flush命令,优先处理将关联于Flush命令的缓存单元的数据搬移到NVM芯片的任务,以将写入这些缓存单元的数据尽早搬移到NVM芯片。
图7是根据本申请又一实施例的利用缓存处理Flush命令的流程图。
在图6所示的流程图的基础上,根据图7的实施例的流程图进一步处理IO写命令命中缓存单元的情形。
响应于接收了写命令(720),通过写命令要访问的逻辑地址与缓存描述符记录的逻辑地址是否一致来识别写命令是否命中了缓存单元(730)。
若写命令未命中缓存单元,为写命令分配空闲的缓存单元,在该缓存单元对应的缓存条目中记录指示当前时间的时间戳,并将写命令对应的数据存储在缓存单元(740)。以及向主机指示写命令处理完成(770)。
若写命令命中了缓存单元,进一步识别被命中的缓存单元是否是受到Flush命令影响而其数据需要被写入NVM芯片的缓存单元(750)。若被命中的缓存单元不受Flush命令影响(当前没有待执行的Flush命令,或者当前有待执行的Flush命令,但待执行Flush命令的时间戳小于被命中缓存单元的时间戳),则将写命令待写入的数据存储在被命中的缓存单元(760),并向主机指示写命令处理完成(770)。若被命中的缓存单元受到Flush命令影响(当前有待执行的Flush命令,且待执行Flush命令的时间戳不小于被命中缓存单元的时间戳)(750),则临时缓存该写命令(780)以待Flush命令被处理完成后再处理该写命令。在临时缓存该写命令期间,还从主机接口获取其他IO命令进行处理,以避免因执行Flush命令而造成存储设备的性能抖动。
可选地,若被命中的缓存单元受到Flush命令影响,为写命令分配新的缓存单元与缓存描述符,在缓存描述符中记录分配的缓存单元的地址、指示当前时间的时间戳,以及从主机获取写命令要写入的数据,将要写入的数据存储在分配的缓存单元中,接下来向主机指示该写命令处理完成。
本申请实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本申请实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (9)
1.一种向固态存储设备写入数据的方法,其特征在于,包括如下步骤:
响应于接收了写命令,识别所述写命令是否命中了缓存单元;
若所述写命令命中了缓存单元,判断所述命中的缓存单元是否受到刷写命令的影响;
若被命中的缓存单元受刷写命令的影响,则临时缓存所述写命令以待所述刷写命令处理完成后再处理所述写命令或者为写命令分配新的不受刷写命令影响的缓存单元;
其中,在当前有待执行的刷写命令且所述待执行的刷写命令的时间戳不小于被命中的缓存单元的时间戳时,判断被命中的缓存单元受刷写命令的影响。
2.如权利要求1所述的向固态存储设备写入数据的方法,其特征在于,若所述写命令未命中缓存单元,则为所述写命令分配空闲的缓存单元,并将写命令对应的数据存储在缓存单元中。
3.如权利要求1所述的向固态存储设备写入数据的方法,其特征在于,若被命中的缓存单元不受刷写命令的影响,则将写命令待写入的存储在被命中的缓存单元中,并指示写命令处理完成。
4.如权利要求3所述的向固态存储设备写入数据的方法,其特征在于,在当前没有待执行的刷写命令或者当前虽然有待执行的刷写命令,但所述待执行的刷写命令的时间戳小于被命中的缓存单元的时间戳时,判断被命中的缓存单元不受刷写命令的影响。
5.如权利要求1所述的向固态存储设备写入数据的方法,其特征在于,其中,在临时缓存所述写命令期间,继续接收命令并进行处理。
6.如权利要求1所述的向固态存储设备写入数据的方法,其特征在于,其中,为写命令分配新的不受刷写命令影响的缓存单元是在当前没有待执行的刷写命令时的任意未被占用的缓存单元或者当前虽然有待执行的刷写命令,但所述待执行的刷写命令的时间戳小于缓存单元的时间戳的未被占用的缓存单元。
7.如权利要求6所述的向固态存储设备写入数据的方法,其特征在于,其中,为写命令分配新的不受刷写命令影响的缓存单元之后,还为所述新的不受刷写命令影响的缓存单元分配缓存描述符。
8.如权利要求2-7任一项所述的向固态存储设备写入数据的方法,其特征在于,在所述写命令对应的数据存储在缓存单元中后,指示所述写命令完成。
9.一种固态存储设备,包括动态随机存储器、控制器与非易失性存储器,其中,控制器执行根据权利要求1-8之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210225337.7A CN114610654B (zh) | 2018-05-21 | 2018-05-21 | 一种固态存储设备以及向其写入数据的方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488347.3A CN110515861B (zh) | 2018-05-21 | 2018-05-21 | 处理刷写命令的存储设备及其方法 |
CN202210225337.7A CN114610654B (zh) | 2018-05-21 | 2018-05-21 | 一种固态存储设备以及向其写入数据的方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810488347.3A Division CN110515861B (zh) | 2018-05-21 | 2018-05-21 | 处理刷写命令的存储设备及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114610654A CN114610654A (zh) | 2022-06-10 |
CN114610654B true CN114610654B (zh) | 2025-02-07 |
Family
ID=68621697
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210225337.7A Active CN114610654B (zh) | 2018-05-21 | 2018-05-21 | 一种固态存储设备以及向其写入数据的方法 |
CN201810488347.3A Active CN110515861B (zh) | 2018-05-21 | 2018-05-21 | 处理刷写命令的存储设备及其方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810488347.3A Active CN110515861B (zh) | 2018-05-21 | 2018-05-21 | 处理刷写命令的存储设备及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114610654B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988623B (zh) * | 2019-12-17 | 2021-12-21 | 北京忆芯科技有限公司 | 加速sgl处理的方法与存储设备 |
CN114281245A (zh) | 2021-11-26 | 2022-04-05 | 三星(中国)半导体有限公司 | 同步写方法及装置、存储系统、电子设备 |
US12248706B2 (en) * | 2022-10-26 | 2025-03-11 | SanDisk Technologies, Inc. | Data storage device and method for reducing flush latency |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631728A (zh) * | 2012-08-27 | 2014-03-12 | 苹果公司 | 使用自适应压缩比率快速执行刷新命令 |
CN104391653A (zh) * | 2014-10-31 | 2015-03-04 | 山东超越数控电子有限公司 | 一种基于数据块的高速缓存设计方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761663B2 (en) * | 2006-02-16 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Operating a replicated cache that includes receiving confirmation that a flush operation was initiated |
US8510270B2 (en) * | 2010-07-27 | 2013-08-13 | Oracle International Corporation | MYSQL database heterogeneous log based replication |
US8578100B1 (en) * | 2010-11-08 | 2013-11-05 | Western Digital Technologies, Inc. | Disk drive flushing write data in response to computed flush time |
CN103049396B (zh) * | 2012-12-10 | 2015-10-28 | 浪潮(北京)电子信息产业有限公司 | 数据的刷写方法及装置 |
CN104035729B (zh) * | 2014-05-22 | 2017-02-15 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
US9830273B2 (en) * | 2015-07-30 | 2017-11-28 | Netapp, Inc. | Deduplicated host cache flush to remote storage |
CN105224478B (zh) * | 2015-09-25 | 2019-01-22 | 北京联想核芯科技有限公司 | 一种映射表的形成、更新和恢复方法及电子设备 |
CN105528180B (zh) * | 2015-12-03 | 2018-12-07 | 浙江宇视科技有限公司 | 一种数据存储方法、装置及设备 |
CN107506311B (zh) * | 2017-08-30 | 2020-10-20 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的ftl表的刷写方法及装置 |
CN107608909A (zh) * | 2017-09-19 | 2018-01-19 | 记忆科技(深圳)有限公司 | 一种NVMe固态硬盘写加速的方法 |
-
2018
- 2018-05-21 CN CN202210225337.7A patent/CN114610654B/zh active Active
- 2018-05-21 CN CN201810488347.3A patent/CN110515861B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631728A (zh) * | 2012-08-27 | 2014-03-12 | 苹果公司 | 使用自适应压缩比率快速执行刷新命令 |
CN104391653A (zh) * | 2014-10-31 | 2015-03-04 | 山东超越数控电子有限公司 | 一种基于数据块的高速缓存设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110515861B (zh) | 2022-08-05 |
CN114610654A (zh) | 2022-06-10 |
CN110515861A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6729914B2 (ja) | ソリッドステートストレージドライブ、システム、および方法 | |
KR102584018B1 (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
CN100590609C (zh) | 一种基于非连续页的动态内存管理方法 | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
JP5922740B2 (ja) | メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法 | |
US20140095555A1 (en) | File management device and method for storage system | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
CN107885456A (zh) | 减少io命令访问nvm的冲突 | |
US11822813B2 (en) | Storage device, operation method of storage device, and storage system using the same | |
TW202001573A (zh) | 記憶系統 | |
CN109164976B (zh) | 利用写缓存优化存储设备性能 | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
KR102106261B1 (ko) | 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 | |
US11630779B2 (en) | Hybrid storage device with three-level memory mapping | |
CN108710474A (zh) | 一种数据存储方法、装置及计算机存储介质 | |
US12197318B2 (en) | File system integration into data mining model | |
CN114610654B (zh) | 一种固态存储设备以及向其写入数据的方法 | |
CN110389709A (zh) | 顺序流检测与数据预读 | |
CN110321057B (zh) | 具有增强io性能确定性的缓存的存储设备 | |
US11182329B2 (en) | Data processing system and operating method thereof | |
CN105389268A (zh) | 资料储存系统及其运作方法 | |
CN111352865B (zh) | 存储控制器的写缓存 | |
CN111290975B (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN111290974B (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN112578993B (zh) | 多平面nvm处理编程出错的方法与存储设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |