CN110515861A - Storage device and method for processing flash command - Google Patents
Storage device and method for processing flash command Download PDFInfo
- Publication number
- CN110515861A CN110515861A CN201810488347.3A CN201810488347A CN110515861A CN 110515861 A CN110515861 A CN 110515861A CN 201810488347 A CN201810488347 A CN 201810488347A CN 110515861 A CN110515861 A CN 110515861A
- Authority
- CN
- China
- Prior art keywords
- data
- cache unit
- write
- command
- 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.)
- Granted
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
技术领域technical field
本申请涉及存储设备,尤其涉及存储设备利用缓存来处理刷写(Flush)命令。The present application relates to a storage device, and in particular, to a storage device using a cache to process a flush (Flush) command.
背景技术Background technique
图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。Figure 1 shows a block diagram of a solid-state storage device. The solid state storage device 102 is coupled to the host for providing storage capabilities for the host. The host and the solid-state storage device 102 can be coupled in various ways, including but not limited to, for example, SATA (Serial Advanced Technology Attachment, Serial Advanced Technology Attachment), SCSI (Small Computer System Interface, Small Computer System Interface) , SAS (Serial Attached SCSI, Serial Attached SCSI), IDE (Integrated Drive Electronics, Integrated Drive Electronics), USB (Universal Serial Bus, Universal Serial Bus), PCIE (Peripheral Component Interconnect Express, PCIe, high-speed peripheral component interconnection), NVMe (NVM Express, high-speed non-volatile storage), Ethernet, Fibre Channel, wireless communication networks, etc. connect the host and the solid-state storage device 102 . The host may be an information processing device, such as a personal computer, tablet computer, server, portable computer, network switch, router, cellular phone, personal digital assistant, etc., capable of communicating with the storage device in the manner described above. The solid-state storage device 102 includes an interface 103 , a control unit 104 , one or more NVM chips 105 , and a DRAM (Dynamic Random Access Memory, dynamic random access memory) 110 .
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。NAND flash memory, phase change memory, FeRAM (Ferroelectric RAM, ferroelectric memory), MRAM (Magnetic Random Access Memory, magnetoresistive memory), RRAM (Resistive Random Access Memory, resistive memory), etc. are common NVMs.
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。The interface 103 may be adapted to exchange data with the host via, for example, SATA, IDE, USB, PCIE, NVMe, SAS, Ethernet, Fibre Channel, and the like.
控制部件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命令的数据。The control unit 104 is used to control the data transmission between the interface 103, the NVM chip 105 and the DRAM 110, and is also used to store and manage the mapping of host logical addresses to flash physical addresses, erase leveling, bad block management, and the like. The control unit 104 can be implemented in various ways of software, hardware, firmware or a combination thereof. For example, the control unit 104 can be an FPGA (Field-programmable gate array, field programmable gate array), an ASIC (Application Specific Integrated Circuit, application specific integrated circuit) circuit) or a combination thereof. The control unit 104 may also include a processor or controller in which software is executed to manipulate the hardware of the control unit 104 to process IO (Input/Output) commands. Control unit 104 may also be coupled to DRAM 110 and may access data of DRAM 110 . The FTL table and/or cached IO command data may be stored in DRAM.
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。The control unit 104 includes a flash interface controller (or referred to as a media interface controller, a flash channel controller), which is coupled to the NVM chip 105 and issues commands to the NVM chip 105 in a manner that follows the interface protocol of the NVM chip 105 , to operate the NVM chip 105 and receive the command execution result output from the NVM chip 105 . Known NVM chip interface protocols include "Toggle", "ONFI" and the like.
在现有的固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。In existing solid-state storage devices, FTL (Flash Translation Layer, flash memory translation layer) is used to maintain mapping information from logical addresses to physical addresses. The logical address constitutes the storage space of the solid-state storage device perceived by upper-layer software such as the operating system. The physical address is the address of the physical storage unit used to access the solid state storage device. In the related art, the address mapping can also be implemented using an intermediate address form. For example, a logical address is mapped to an intermediate address, and the intermediate address is further mapped to a physical address.
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。A table structure that stores mapping information from logical addresses to physical addresses is called an FTL table. FTL tables are important metadata in solid-state storage devices. Usually, the data item of the FTL table records the address mapping relationship in the unit of data page in the solid-state storage device.
NVMe协议中还定义了刷写(Flush)命令。通过Flush命令,指示存储设备将先于Flush命令接收到的所有命令要写入的数据(及其元数据)都保存到非易失存储介质。The Flush command is also defined in the NVMe protocol. With the Flush command, the storage device is instructed to save the data (and its metadata) to be written by all commands received prior to the Flush command to the non-volatile storage medium.
固态存储设备使用缓存来提高性能。对于写命令,将写命令指示的数据写入缓存后,即指示写命令处理完成。由于缓存的存在,在处理Flush命令时,要将缓存中的数据写入非易失存储介质,这一过程占用了过长的时间。需要降低或避免因Flush命令而使主机经历的将缓存中的数据写入非易失存储介质过程引起的性能抖动。Solid-state storage devices use caching to improve performance. For the write command, after the data indicated by the write command is written into the cache, it indicates that the write command is processed. Due to the existence of the cache, when the Flush command is processed, the data in the cache needs to be written to the non-volatile storage medium, which takes a long time. There is a need to reduce or avoid the performance jitter experienced by the host during the process of writing data in the cache to the non-volatile storage medium due to the Flush command.
发明内容SUMMARY OF THE INVENTION
本申请的固态存储设备以及向其写入数据的方法的解决了因Flush命令所引发的固态存储设备写入数据时产生的性能抖动问题。The solid-state storage device and the method for writing data to the solid-state storage device of the present application solve the problem of performance jitter caused by the Flush command when the solid-state storage device writes data.
根据本申请的第一方面,本申请提供一种向固态存储设备写入数据的方法,其中,包括如下步骤:响应于接收了刷写命令,获取当前时间以生成关联于所述刷写命令的时间戳;访问缓存描述符;获得缓存描述符中的时间戳数据;将缓存描述符的时间戳早于所述刷写命令的时间戳的缓存描述符所指示的缓存单元的数据写入非易使性存储器。According to a first aspect of the present application, the present application provides a method for writing data to a solid-state storage device, comprising the steps of: in response to receiving a flash command, obtaining a current time to generate a data associated with the flash command Timestamp; access the cache descriptor; obtain the timestamp data in the cache descriptor; write the data of the cache unit indicated by the cache descriptor whose timestamp of the cache descriptor is earlier than the timestamp of the flush command is not easy enable memory.
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,在时间戳早于所述刷写命令的时间戳的所有缓存描述符所指示的缓存单元的数据都写入非易使性存储器时,指示所述刷写命令处理完成。A method for writing data to a solid-state storage device according to the first aspect of the present application, wherein data of all cache units indicated by cache descriptors with timestamps earlier than that of the flush command are written to In the case of non-volatile memory, it indicates that the flash command processing is completed.
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,所述缓存描述符中包括所分配的缓存单元的索引、指示所分配的缓存单元写入时间的时间戳以及所分配的缓存单元中数据的地址。A method for writing data to a solid-state storage device according to a first aspect of the present application, wherein the cache descriptor includes an index of an allocated cache unit, a timestamp indicating a writing time of the allocated cache unit, and The address of the data in the allocated cache unit.
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,其中,所述数据的地址是非易使性存储器的逻辑地址或物理地址。A method of writing data to a solid-state storage device according to a first aspect of the present application, wherein, the address of the data is a logical address or a physical address of a non-volatile memory.
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,当接收的是写命令时,为写命令分配动态随机存储器的缓存单元与缓存描述符。A method for writing data to a solid-state storage device according to a first aspect of the present application, wherein when a write command is received, a cache unit and a cache descriptor of a dynamic random access memory are allocated for the write command.
根据本申请的第一方面的一种向固态存储设备写入数据的方法,其中,在接收刷写命令之后,设置标记以指示有刷写命令待处理;在刷写命令处理完成后,清除所设置的标记。A method for writing data to a solid-state storage device according to the first aspect of the present application, wherein after receiving a flush command, a flag is set to indicate that there is a flush command to be processed; after the flush command is processed, all set tags.
根据本申请的第二方面,本申请还提供一种向固态存储设备写入数据的方法,其中,包括如下步骤:响应于动态随机存储器的缓存单元被写入数据,轮询缓存描述符;根据缓存描述符,将缓存单元内的数据写入非易使性存储器。According to a second aspect of the present application, the present application further provides a method for writing data to a solid-state storage device, wherein the method includes the following steps: in response to data being written to a cache unit of the dynamic random access memory, polling the cache descriptor; Cache descriptor, which writes the data in the cache unit to the non-volatile memory.
根据本申请的第二方面的一种向固态存储设备写入数据的方法,其中,响应于缓存单元内的数据写入非易使性存储器,释放所述缓存单元。A method of writing data to a solid-state storage device according to a second aspect of the present application, wherein the cache unit is released in response to data in the cache unit being written to the non-volatile memory.
根据本申请的第三方面,本申请还提供一种向固态存储设备写入数据的方法,其中,包括如下步骤:响应于接收了写命令,识别所述写命令是否命中了缓存单元;若所述写命令命中了缓存单元,判断所述命中的缓存单元是否受到刷写命令的影响;若被命中的缓存单元受刷写命令的影响,则临时缓存所述写命令以待所述刷写命令处理完成后再处理所述写命令或者为写命令分配新的不受刷写命令影响的缓存单元。According to a third aspect of the present application, the present application further provides a method for writing data to a solid-state storage device, including the following steps: in response to receiving a write command, identifying whether the write command hits a cache unit; The write command hits the cache unit, and it is determined whether the hit cache unit is affected by the flush command; if the hit cache unit is affected by the flush command, the write command is temporarily cached to wait for the flush command After the processing is completed, the write command is processed or a new cache unit that is not affected by the flush command is allocated for the write command.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,若所述写命令未命中缓存单元,则为所述写命令分配空闲的缓存单元,并将写命令对应的数据存储在缓存单元中。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein if the write command does not hit a cache unit, a free cache unit is allocated for the write command, and a corresponding write command is assigned to a cache unit. Data is stored in cache units.
根据本申请的第三方面的一种的向固态存储设备写入数据的方法,其中,通过写命令要访问的逻辑地址与缓存描述符所记录的逻辑地址是否一致来识别所述写命令是否命中了缓存单元。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein whether the write command hits is identified by whether the logical address to be accessed by the write command is consistent with the logical address recorded in the cache descriptor cache unit.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,若被命中的缓存单元不受刷写命令的影响,则将写命令待写入的存储在被命中的缓存单元中,并指示写命令处理完成。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein if the hit cache unit is not affected by the flush command, the write command to be written is stored in the hit cache unit, and indicates that write command processing is complete.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,在当前没有待执行的刷写命令或者当前虽然有待执行的刷写命令,但所述待执行的刷写命令的时间戳小于被命中的缓存单元的时间戳时,判断被命中的缓存单元不受刷写命令的影响。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein there is currently no refresh command to be executed or although there is currently a refresh command to be executed, the refresh command to be executed is When the timestamp of the hit cache unit is less than the timestamp of the hit cache unit, it is determined that the hit cache unit is not affected by the flush command.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,在当前有待执行的刷写命令且所述待执行的刷写命令的时间戳不小于被命中的缓存单元的时间戳时,判断被命中的缓存单元受刷写命令的影响。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein there is currently a flush command to be executed and the timestamp of the flush command to be executed is not less than the time stamp of the hit cache unit. When the time stamp is used, it is determined that the hit cache unit is affected by the flush command.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,在临时缓存所述写命令期间,继续接收命令并进行处理。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein during the temporary buffering of the write command, the command continues to be received and processed.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,为写命令分配新的不受刷写命令影响的缓存单元是在当前没有待执行的刷写命令时的任意未被占用的缓存单元或者当前虽然有待执行的刷写命令,但所述待执行的刷写命令的时间戳小于缓存单元的时间戳的未被占用的缓存单元。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein allocating a new cache unit that is not affected by the flush command for the write command is any An unoccupied cache unit or an unoccupied cache unit for which there is currently a flush command to be executed, but the timestamp of the to-be-executed flush command is smaller than the timestamp of the cache unit.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,为写命令分配新的不受刷写命令影响的缓存单元之后,还为所述新的不受刷写命令影响的缓存单元分配缓存描述符。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein after allocating a new cache unit that is not affected by the flush command for the write command, the new non-flush command is also Affected cache units allocate cache descriptors.
根据本申请的第三方面的一种向固态存储设备写入数据的方法,其中,所述缓存描述符中包括所分配的缓存单元的索引、指示所分配的缓存单元写入时间的时间戳以及所分配的缓存单元中数据的地址。A method for writing data to a solid-state storage device according to a third aspect of the present application, wherein the cache descriptor includes an index of an allocated cache unit, a timestamp indicating a writing time of the allocated cache unit, and The address of the data in the allocated cache unit.
根据本申请的第三方面的一种所述的向固态存储设备写入数据的方法,其中,在所述写入命令对应的数据存储在缓存单元中后,指示所述写入命令完成。According to the method for writing data to a solid-state storage device according to the third aspect of the present application, after the data corresponding to the write command is stored in the cache unit, it is indicated that the write command is completed.
根据本申请的第四方面,本申请还提供一种固态存储设备,包括动态随机存储器、控制器与非易失性存储器,其中,控制器执行如上之一所述的方法。According to a fourth aspect of the present application, the present application further provides a solid-state storage device including a dynamic random access memory, a controller and a non-volatile memory, wherein the controller executes the method described in one of the above.
根据本申请的第四方面,本申请还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行如上所述的之一的方法。According to a fourth aspect of the present application, the present application also provides a program comprising program code which, when loaded into the CPU and executed in the CPU, causes the CPU to perform one of the methods described above.
附图说明Description of drawings
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the following briefly introduces the accompanying drawings required for the description of the embodiments or the prior art. Obviously, the drawings in the following description are only These are some embodiments described in this application. For those of ordinary skill in the art, other drawings can also be obtained according to these drawings.
图1为现有技术的固态存储设备的结构示意图;1 is a schematic structural diagram of a solid-state storage device in the prior art;
图2为根据本申请实施例的固态存储设备的结构示意图;FIG. 2 is a schematic structural diagram of a solid-state storage device according to an embodiment of the present application;
图3为根据本申请实施例的缓存描述符;3 is a cache descriptor according to an embodiment of the present application;
图4A-4C为根据本申请实施例的处理Flush命令的示意图;4A-4C are schematic diagrams of processing a Flush command according to an embodiment of the present application;
图5A-5D为根据本申请又一实施例的处理Flush命令的示意图;5A-5D are schematic diagrams of processing a Flush command according to yet another embodiment of the present application;
图6为根据本申请实施例的利用缓存处理Flush命令的流程图;6 is a flowchart of processing a Flush command using a cache according to an embodiment of the present application;
图7为根据本申请又一实施例的利用缓存处理Flush命令的流程图。FIG. 7 is a flowchart of processing a Flush command by using a cache according to yet another embodiment of the present application.
具体实施方式Detailed ways
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。The technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings in the embodiments of the present invention. Obviously, the described embodiments are part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative efforts shall fall within the protection scope of the present invention.
图2展示了根据本申请实施例的固态存储设备的框图。固态存储设备的控制部件包括主机接口210、CPU 220、地址转换单元230和用于访问NVM芯片105的介质接口240。控制部件还耦合到外部存储器(例如,DRAM)260。FIG. 2 shows a block diagram of a solid-state storage device according to an embodiment of the present application. The control part of the solid-state storage device includes a host interface 210 , a CPU 220 , an address translation unit 230 , and a media interface 240 for accessing the NVM chip 105 . The control components are also coupled to external memory (eg, DRAM) 260 .
控制部件的存储器中存储了缓存描述符。缓存描述符的一个或多个记录了对应的缓存单元265在DRAM 260中的地址与占用缓存单元的数据的存储设备地址(例如,存储设备可被主机访问的逻辑地址或物理地址)。Cache descriptors are stored in the memory of the control unit. One or more of the cache descriptors record the address of the corresponding cache unit 265 in DRAM 260 and the storage device address of the data occupying the cache unit (eg, the logical address or physical address of the storage device accessible by the host).
主机接口210用于同主机交换命令与数据。例如,主机与存储设备通过NVMe/PCIe协议通信,主机接口210处理PCIe协议数据包,提取出NVMe协议命令,并向主机返回NVMe协议命令的处理结果。The host interface 210 is used to exchange commands and data with the host. For example, the host communicates with the storage device through the NVMe/PCIe protocol, and the host interface 210 processes the PCIe protocol data packet, extracts the NVMe protocol command, and returns the processing result of the NVMe protocol command to the host.
CPU 220耦合到主机接口210,用于接收主机发送给存储设备的IO命令,并利用一个或多个缓存单元265来服务所接收的IO命令。若主机使用逻辑地址访问存储设备,CPU220还访问地址转换单元230以将逻辑地址转换为物理地址。CPU 220还将接收的IO命令(IO命令形态在处理处理过程中可能发生变化,这里为了表达简洁而统称为IO命令)发送给介质接口240,由介质接口240根据IO命令访问一个或多个NVM芯片。The CPU 220 is coupled to the host interface 210 for receiving IO commands sent by the host to the storage device, and utilizing one or more cache units 265 to service the received IO commands. If the host uses the logical address to access the storage device, the CPU 220 also accesses the address translation unit 230 to convert the logical address into a physical address. The CPU 220 also sends the received IO command (the form of the IO command may change during processing, and is collectively referred to as an IO command here for brevity) to the media interface 240, and the media interface 240 accesses one or more NVMs according to the IO command. chip.
图3展示了根据本申请实施例的缓存描述符。FIG. 3 shows a cache descriptor according to an embodiment of the present application.
每个缓存描述符用于描述同其对应的一个缓存单元。缓存描述符记录了对应的缓存单元的索引(图3的缓存单元索引)、时间戳与逻辑地址(LBA)。缓存单元索引指示缓存单元在DRAM 260中的位置。时间戳记录缓存单元被分配的时间,逻辑地址(LBA)记录该缓存单元被分配给的IO命令所访问的逻辑地址。可以理解地,主机使用物理地址访问存储设备时,缓存单元描述符的逻辑地址字段被替换为记录物理地址。Each cache descriptor is used to describe a cache unit corresponding to it. The cache descriptor records the index of the corresponding cache unit (the cache unit index in FIG. 3 ), the timestamp and the logical address (LBA). The cache unit index indicates the location of the cache unit in DRAM 260 . The time stamp records the time the cache unit was allocated, and the logical address (LBA) records the logical address accessed by the IO command to which the cache unit was allocated. Understandably, when the host uses the physical address to access the storage device, the logical address field of the cache unit descriptor is replaced with the recorded physical address.
图4A-4C展示了根据本申请实施例处理Flush命令的示意图。4A-4C show schematic diagrams of processing a Flush command according to an embodiment of the present application.
图4A展示了命令队列中按时间顺序收到的IO命令。最早在T1时刻收到写命令(IOW1),接下来在T2时刻收到写命令(IO W2),然后收到Flush命令,接下来在T3时刻与T4时刻依次收到写命令(IO W3)与写命令(IO W4)。图4A中,箭头指示时间流逝的方向。收到Flush命令的时刻在T3时刻与T4时刻之间。Figure 4A shows the IO commands received in the command queue in chronological order. The write command (IOW1) is received at the earliest time T1, then the write command (IO W2) is received at the time of T2, then the Flush command is received, and then the write command (IO W3) and Write command (IO W4). In FIG. 4A, arrows indicate the direction in which time passes. The time when the Flush command is received is between time T3 and time T4.
图4B展示了处理Flush命令之前,缓存单元的状态。根据本申请实施例的存储设备,收到Flush命令后,并不停止对其他IO命令的接收与处理。因而虽然在写命令(IO W3)之前收到了Flush命令,对写命令(IO W3)与写命令(IO W4)依然已经开始处理,为写命令(IOW3)分配了缓存单元(由ID3指示),并且写命令(IO W3)要写入的数据已经被存储在缓存单元中,为写命令(IO W4)分配了缓存单元(由ID4指示),但写命令(IO W4)要写入的数据尚未被写入缓存单元。Figure 4B shows the state of the cache unit before processing the Flush command. According to the storage device of the embodiment of the present application, after receiving the Flush command, it does not stop receiving and processing other IO commands. Therefore, although the Flush command is received before the write command (IO W3), the processing of the write command (IO W3) and the write command (IO W4) has already started, and the write command (IOW3) is allocated a buffer unit (indicated by ID3), And the data to be written by the write command (IO W3) has been stored in the cache unit, the cache unit (indicated by ID4) is allocated for the write command (IO W4), but the data to be written by the write command (IO W4) has not been is written to the cache unit.
图4C展示了处理Flush命令之后,缓存单元的状态。响应于收到Flush命令,将先于接收Flush命令而接收的所有IO命令(参看图4A,写命令(IO W1)与写命令(IO W2))的要写入的数据写入到非易失存储介质(例如,NVM芯片105,也参看图2)。接下来可以向主机指示Flush命令被处理完成。而此时写命令(IO W3)与写命令(IO W4)要写入的数据是否被写入非易失存储介质不受该Flush命令的语义约束。Figure 4C shows the state of the cache unit after processing the Flush command. In response to receiving the Flush command, the data to be written of all IO commands received prior to receiving the Flush command (refer to FIG. 4A, the write command (IO W1) and the write command (IO W2)) are written to the non-volatile Storage medium (eg, NVM chip 105, see also Figure 2). The host can then be indicated that the Flush command has been processed. At this time, whether the data to be written by the write command (IO W3) and the write command (IO W4) is written to the non-volatile storage medium is not constrained by the semantics of the Flush command.
图5A-5D展示了根据本申请又一实施例处理Flush命令的示意图。5A-5D show schematic diagrams of processing a Flush command according to yet another embodiment of the present application.
图5A与图4A相同,展示了命令队列中按时间顺序收到的IO命令。最早在T1时刻收到写命令(IO W1),接下来在T2时刻收到写命令(IO W2),然后收到Flush命令,接下来在T3时刻与T4时刻依次收到写命令(IO W3)与写命令(IO W4)。图5A中,箭头指示时间流逝的方向。收到Flush命令的时刻在T3时刻与T4时刻之间。Figure 5A is the same as Figure 4A, showing the IO commands received in the command queue in chronological order. Receive the write command (IO W1) at the earliest time T1, then receive the write command (IO W2) at the time of T2, then receive the Flush command, and then receive the write command (IO W3) at the time of T3 and T4. with the write command (IO W4). In FIG. 5A, arrows indicate the direction in which time passes. The time when the Flush command is received is between time T3 and time T4.
图5B展示了处理Flush命令之前,缓存单元的状态。根据本申请实施例的存储设备,收到Flush命令后,并不停止对其他IO命令的接收与处理。因而虽然在写命令(IO W3)之前收到了Flush命令,对写命令(IO W3)与写命令(IO W4)依然已经开始处理,为写命令(IOW3)分配了缓存单元(由ID3指示),并且写命令(IO W3)要写入的数据尚未被存储在缓存单元中。以及在Flush命令开始处理前,尚未给写命令(IO W4)分配缓存单元。Figure 5B shows the state of the cache unit before processing the Flush command. According to the storage device of the embodiment of the present application, after receiving the Flush command, it does not stop receiving and processing other IO commands. Therefore, although the Flush command is received before the write command (IO W3), the processing of the write command (IO W3) and the write command (IO W4) has already started, and the write command (IOW3) is allocated a buffer unit (indicated by ID3), And the data to be written by the write command (IO W3) has not been stored in the cache unit. And before the Flush command starts processing, the write command (IO W4) has not been allocated a buffer unit.
图5C展示了处理Flush命令过程中的某时刻,缓存单元的状态。响应于收到Flush命令,要将先于接收Flush命令而接收的所有IO命令(参看图5A,写命令(IO W1)与写命令(IO W2))的要写入的数据写入到非易失存储介质(例如,NVM芯片105,也参看图2)。在图5C展示的时刻,写命令(IO W1)要写入的数据已经被写入非易失存储介质,而写命令(IO W2)要写入的数据尚未被写入非易失性存储介质。写命令(IO W3)要写入的数据依然尚未被写入缓存单元。以及依然尚未给写命令(IO W4)分配缓存单元。Figure 5C shows the state of the cache unit at a certain point in the process of processing the Flush command. In response to receiving the Flush command, the data to be written of all IO commands (refer to FIG. 5A, the write command (IO W1) and the write command (IO W2)) received prior to the Flush command are written to the non-volatile Loss of storage medium (eg, NVM chip 105, see also Figure 2). At the moment shown in FIG. 5C, the data to be written by the write command (IO W1) has been written to the non-volatile storage medium, while the data to be written by the write command (IO W2) has not been written to the non-volatile storage medium . The data to be written by the write command (IO W3) has not yet been written to the cache unit. And the write command (IO W4) has not yet been allocated a cache unit.
图5D展示了处理Flush命令之后,缓存单元的状态。先于接收Flush命令而接收的所有IO命令(参看图5A,写命令(IO W1)与写命令(IO W2))的要写入的数据已经被写入到非易失存储介质(例如,NVM芯片105,也参看图2)。由于写命令(IO W1)被处理完成,其占用的缓存单元被释放,该缓存单元可被分配给其他写命令。写命令(IO W2)占用的缓存单元尚未被释放。Figure 5D shows the state of the cache unit after processing the Flush command. The data to be written of all IO commands (see Figure 5A, write commands (IO W1) and write commands (IO W2)) received prior to receiving the Flush command have been written to the non-volatile storage medium (eg, NVM Chip 105, see also Figure 2). As the write command (IO W1) is processed, the buffer unit occupied by it is released, and the buffer unit can be allocated to other write commands. The buffer unit occupied by the write command (IO W2) has not been released.
接下来可以向主机指示Flush命令被处理完成。而此时写命令(IO W3)与写命令(IO W4)要写入的数据是否被写入非易失存储介质不受该Flush命令的语义约束。作为举例,参看图5D,写命令(IO W3)要写入的数据依然尚未被写入缓存单元。以及为写命令(IOW4)分配了缓存单元(ID 4)。The host can then be indicated that the Flush command has been processed. At this time, whether the data to be written by the write command (IO W3) and the write command (IO W4) is written to the non-volatile storage medium is not constrained by the semantics of the Flush command. As an example, referring to FIG. 5D, the data to be written by the write command (IO W3) has not yet been written to the cache unit. And the cache unit (ID 4) is allocated for the write command (IOW4).
图6是根据本申请实施例的利用缓存处理Flush命令的流程图。FIG. 6 is a flowchart of processing a Flush command by using a cache according to an embodiment of the present application.
根据图6的实施例所展示的处理流程由例如图2的CPU 220控制,并协同控制部件104的其他部分共同完成。The processing flow shown according to the embodiment of FIG. 6 is controlled by, for example, the CPU 220 of FIG.
响应于从主机接口获取的IO命令(610),识别IO命令的类型,以区分IO命令是写命令(620),还是Flush命令(670)。对于写命令,为写命令分配缓存,例如,分配尚未被使用的缓存单元与缓存描述符。在缓存描述符中记录分配的缓存单元的地址、指示当前时间的时间戳,以及从主机获取写命令要写入的数据,将要写入的数据存储在分配的缓存单元中(630)。至此虽然写命令对应的数据尚未被写入NVM芯片,但可向主机指示该写命令处理完成(640)。In response to the IO command obtained from the host interface (610), the type of the IO command is identified to distinguish whether the IO command is a write command (620) or a Flush command (670). For write commands, allocate buffers for write commands, eg, allocate buffer locations and buffer descriptors that have not yet been used. The address of the allocated buffer unit, the timestamp indicating the current time, and the data to be written by the write command are obtained from the host, and the data to be written is stored in the allocated buffer unit (630). So far, although the data corresponding to the write command has not been written into the NVM chip, it can indicate to the host that the write command is processed (640).
在CPU中运行的另一任务,用于将写入缓存单元的数据搬移到NVM芯片(650)。例如,响应于缓存单元被写入数据,即开始将缓存单元的数据搬移到NVM芯片的过程。作为又一个例子,轮询各缓存描述符,以轮流地将被写入了数据的缓存单元的数据搬移到NVM芯片。可选地,响应于缓存单元中的数据被搬移到NVM芯片,释放该缓存单元,从而该缓存单元中的时间戳被更新(或清除),以及该缓存单元可被分配给其他写命令。Another task running in the CPU is to move the data written to the cache unit to the NVM chip (650). For example, in response to data being written to the cache unit, the process of moving the data of the cache unit to the NVM chip is started. As yet another example, each cache descriptor is polled to move the data of the cache unit to which the data is written to the NVM chip in turn. Optionally, in response to the data in the cache unit being moved to the NVM chip, the cache unit is freed so that the timestamp in the cache unit is updated (or cleared) and the cache unit can be allocated to other write commands.
对于从主机接口获取的IO命令,如为Flush命令,获取当前时间以生成关联于该Flush命令的时间戳(680)。通过访问各缓存描述符,以识别时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据是否都被搬移到了NVM芯片(660)。如果时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据都被搬移到了NVM芯片,则向主机指示该Flush命令处理完成(690)。For an IO command obtained from a host interface, such as a Flush command, obtain the current time to generate a timestamp associated with the Flush command (680). By accessing each cache descriptor, it is identified whether the data of the cache unit indicated by each cache descriptor with a timestamp earlier than that of the Flush command has been moved to the NVM chip (660). If the data of the cache units indicated by the cache descriptors whose timestamps are earlier than the timestamps of the Flush command are all moved to the NVM chip, the host is indicated to complete the processing of the Flush command (690).
如果时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据并未都被搬移到了NVM芯片,对于该Flush命令,则待时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据都被搬移到了NVM芯片(660)后,再向主机指示该Flush命令处理完成(690)。可以理解地,在等待时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据都被搬移到了NVM芯片期间,可继续执行图6所示的流程,从主机接口获取IO命令并进行处理。If the data of the cache units indicated by the cache descriptors whose timestamps are earlier than the timestamp of the Flush command have not all been moved to the NVM chip, for the Flush command, the data of the cache units whose timestamps are earlier than the timestamp of the Flush command are not all moved to the NVM chip. After the data of the cache unit indicated by each cache descriptor has been moved to the NVM chip (660), the host is then instructed to complete the processing of the Flush command (690). Understandably, while waiting for the data of the cache units indicated by the cache descriptors whose timestamps are earlier than the timestamp of the Flush command to be moved to the NVM chip, the process shown in FIG. IO commands and process them.
作为举例,若收到了Flush命令,设置标记以指示有Flush命令待处理。并且在每次从主机接口获取了IO命令后,若发现指示有Flush命令待处理的标记存在,访问各缓存描述符,以识别时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据是否都被搬移到了NVM芯片。若识别出Flush命令被处理完成,还清除所设置的标记。As an example, if a Flush command is received, a flag is set to indicate that a Flush command is pending. And after each IO command is obtained from the host interface, if a flag indicating that there is a Flush command to be processed is found, each cache descriptor is accessed to identify the timestamp indicated by each cache descriptor with a timestamp earlier than that of the Flush command. Whether the data of the cache unit has been moved to the NVM chip. If it is recognized that the Flush command has been processed, the set flag is also cleared.
参看图6,作为举例,将写入缓存单元的数据搬移到NVM芯片的任务持续不断的执行,而并非响应于识别出时间戳早于该Flush命令的时间戳的各缓存描述符所指示的缓存单元的数据并未都被搬移到了NVM芯片而被执行。但是,对Flush命令的处理依赖于将缓存单元中的关联于Flush命令的缓存单元的数据搬移到NVM芯片。可选地,响应于要处理Flush命令,优先处理将关联于Flush命令的缓存单元的数据搬移到NVM芯片的任务,以将写入这些缓存单元的数据尽早搬移到NVM芯片。Referring to FIG. 6, as an example, the task of moving data written into the cache unit to the NVM chip is continuously performed, rather than in response to identifying the cache descriptors with timestamps earlier than the Flush command. The data of the cell is not all moved to the NVM chip to be executed. However, the processing of the Flush command relies on moving the data in the cache unit associated with the Flush command's cache unit to the NVM chip. Optionally, in response to the Flush command to be processed, the task of moving data of the cache units associated with the Flush command to the NVM chip is preferentially processed, so as to move the data written in these cache units to the NVM chip as early as possible.
图7是根据本申请又一实施例的利用缓存处理Flush命令的流程图。FIG. 7 is a flowchart of processing a Flush command by using a cache according to yet another embodiment of the present application.
在图6所示的流程图的基础上,根据图7的实施例的流程图进一步处理IO写命令命中缓存单元的情形。On the basis of the flow chart shown in FIG. 6 , the situation in which the IO write command hits the cache unit is further processed according to the flow chart of the embodiment of FIG. 7 .
响应于接收了写命令(720),通过写命令要访问的逻辑地址与缓存描述符记录的逻辑地址是否一致来识别写命令是否命中了缓存单元(730)。In response to receiving the write command (720), whether the write command hits a cache location is identified by whether the logical address to be accessed by the write command is consistent with the logical address recorded by the cache descriptor (730).
若写命令未命中缓存单元,为写命令分配空闲的缓存单元,在该缓存单元对应的缓存条目中记录指示当前时间的时间戳,并将写命令对应的数据存储在缓存单元(740)。以及向主机指示写命令处理完成(770)。If the write command misses the cache unit, allocate a free cache unit for the write command, record a timestamp indicating the current time in the cache entry corresponding to the cache unit, and store the data corresponding to the write command in the cache unit (740). And indicate to the host that write command processing is complete (770).
若写命令命中了缓存单元,进一步识别被命中的缓存单元是否是受到Flush命令影响而其数据需要被写入NVM芯片的缓存单元(750)。若被命中的缓存单元不受Flush命令影响(当前没有待执行的Flush命令,或者当前有待执行的Flush命令,但待执行Flush命令的时间戳小于被命中缓存单元的时间戳),则将写命令待写入的数据存储在被命中的缓存单元(760),并向主机指示写命令处理完成(770)。若被命中的缓存单元受到Flush命令影响(当前有待执行的Flush命令,且待执行Flush命令的时间戳不小于被命中缓存单元的时间戳)(750),则临时缓存该写命令(780)以待Flush命令被处理完成后再处理该写命令。在临时缓存该写命令期间,还从主机接口获取其他IO命令进行处理,以避免因执行Flush命令而造成存储设备的性能抖动。If the write command hits the cache unit, it is further identified whether the hit cache unit is a cache unit affected by the Flush command and its data needs to be written into the NVM chip (750). If the hit cache unit is not affected by the Flush command (there is currently no Flush command to be executed, or there is currently a Flush command to be executed, but the timestamp of the Flush command to be executed is less than the timestamp of the hit cache unit), the command will be written The data to be written is stored in the hit cache unit (760) and indicates to the host that the write command processing is complete (770). If the hit cache unit is affected by the Flush command (there is currently a Flush command to be executed, and the timestamp of the Flush command to be executed is not less than the timestamp of the hit cache unit) (750), the write command is temporarily cached (780) to The write command is processed after the Flush command is processed. During the temporary buffering of the write command, other IO commands are also obtained from the host interface for processing, so as to avoid the performance jitter of the storage device caused by the execution of the Flush command.
可选地,若被命中的缓存单元受到Flush命令影响,为写命令分配新的缓存单元与缓存描述符,在缓存描述符中记录分配的缓存单元的地址、指示当前时间的时间戳,以及从主机获取写命令要写入的数据,将要写入的数据存储在分配的缓存单元中,接下来向主机指示该写命令处理完成。Optionally, if the hit cache unit is affected by the Flush command, allocate a new cache unit and a cache descriptor for the write command, record the address of the allocated cache unit, a timestamp indicating the current time, and a cache descriptor in the cache descriptor. The host acquires the data to be written by the write command, stores the data to be written in the allocated buffer unit, and then indicates to the host that the write command is processed.
本申请实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本申请实施例的方法之一。The embodiments of the present application also provide a program including program codes, when loaded into a host and executed on the host, the program causes a processor of the host to execute one of the methods provided above according to the embodiments of the present application.
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。It will be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by various means including computer program instructions. These computer program instructions may be loaded on a general purpose computer, special purpose computer or other programmable data control device to produce a machine such that the instructions executed on the computer or other programmable data control device create a flow diagram for implementing one or more blocks device with the function specified in .
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。These computer program instructions may also be stored in a computer readable memory that can direct a computer or other programmable data control device to function in a particular manner, such that the instructions stored in the computer readable memory can be used to manufacture including for implementing a Articles of manufacture of computer readable instructions for the functions specified in the flowchart block or blocks. Computer program instructions can also be loaded onto a computer or other programmable data control device to cause a series of operations to be performed on the computer or other programmable data control device, resulting in a computer-implemented process, which in turn is performed on the computer or other programmable data control device. The instructions executing on the control device provide operations for implementing the functions specified in one or more of the flowchart blocks.
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of operations for performing the specified functions and combinations of program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or operations, or by combinations of special purpose hardware and computer instructions.
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。Although the examples with reference to the present invention are described for purposes of explanation only and not limitation of the application, changes, additions and/or deletions to the embodiments may be made without departing from the scope of the application.
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。Many modifications and other embodiments of the applications set forth herein will come to mind to those skilled in the art to which these embodiments pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that this application is not to be limited to the specific embodiments disclosed, but that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
Claims (10)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488347.3A CN110515861B (en) | 2018-05-21 | 2018-05-21 | Memory device for processing flash command and method thereof |
CN202210225337.7A CN114610654B (en) | 2018-05-21 | 2018-05-21 | A solid-state storage device and a method for writing data thereto |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488347.3A CN110515861B (en) | 2018-05-21 | 2018-05-21 | Memory device for processing flash command and method thereof |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210225337.7A Division CN114610654B (en) | 2018-05-21 | 2018-05-21 | A solid-state storage device and a method for writing data thereto |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110515861A true CN110515861A (en) | 2019-11-29 |
CN110515861B CN110515861B (en) | 2022-08-05 |
Family
ID=68621697
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210225337.7A Active CN114610654B (en) | 2018-05-21 | 2018-05-21 | A solid-state storage device and a method for writing data thereto |
CN201810488347.3A Active CN110515861B (en) | 2018-05-21 | 2018-05-21 | Memory device for processing flash command and method thereof |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210225337.7A Active CN114610654B (en) | 2018-05-21 | 2018-05-21 | A solid-state storage device and a method for writing data thereto |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114610654B (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988623A (en) * | 2019-12-17 | 2021-06-18 | 北京忆芯科技有限公司 | Method and storage device for accelerating SGL (secure gateway) processing |
US20240143227A1 (en) * | 2022-10-26 | 2024-05-02 | Western Digital Technologies, Inc. | Data Storage Device and Method for Reducing Flush Latency |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281245A (en) | 2021-11-26 | 2022-04-05 | 三星(中国)半导体有限公司 | Synchronous writing method and device, storage system, electronic device |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070192544A1 (en) * | 2006-02-16 | 2007-08-16 | Svend Frolund | Method of operating replicated cache |
CN103049396A (en) * | 2012-12-10 | 2013-04-17 | 浪潮(北京)电子信息产业有限公司 | Method and device for flushing data |
CN103221949A (en) * | 2010-07-27 | 2013-07-24 | 甲骨文国际公司 | MYSQL database heterogeneous log based replication |
CN104035729A (en) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | Block device thin-provisioning method for log mapping |
CN105224478A (en) * | 2015-09-25 | 2016-01-06 | 联想(北京)有限公司 | A kind of formation of mapping table, renewal and restoration methods and electronic equipment |
US20170031830A1 (en) * | 2015-07-30 | 2017-02-02 | Netapp, Inc. | Deduplicated host cache flush to remote storage |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8578100B1 (en) * | 2010-11-08 | 2013-11-05 | Western Digital Technologies, Inc. | Disk drive flushing write data in response to computed flush time |
US20140059271A1 (en) * | 2012-08-27 | 2014-02-27 | Apple Inc. | Fast execution of flush commands using adaptive compaction ratio |
CN104391653A (en) * | 2014-10-31 | 2015-03-04 | 山东超越数控电子有限公司 | Data block-based cache design method |
CN105528180B (en) * | 2015-12-03 | 2018-12-07 | 浙江宇视科技有限公司 | A kind of date storage method, device and equipment |
CN107506311B (en) * | 2017-08-30 | 2020-10-20 | 苏州浪潮智能科技有限公司 | Method and device for flashing FTL (flash translation layer) table of solid state disk |
CN107608909A (en) * | 2017-09-19 | 2018-01-19 | 记忆科技(深圳)有限公司 | A kind of method that NVMe solid state disk writes accelerate |
-
2018
- 2018-05-21 CN CN202210225337.7A patent/CN114610654B/en active Active
- 2018-05-21 CN CN201810488347.3A patent/CN110515861B/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070192544A1 (en) * | 2006-02-16 | 2007-08-16 | Svend Frolund | Method of operating replicated cache |
CN103221949A (en) * | 2010-07-27 | 2013-07-24 | 甲骨文国际公司 | MYSQL database heterogeneous log based replication |
CN103049396A (en) * | 2012-12-10 | 2013-04-17 | 浪潮(北京)电子信息产业有限公司 | Method and device for flushing data |
CN104035729A (en) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | Block device thin-provisioning method for log mapping |
US20170031830A1 (en) * | 2015-07-30 | 2017-02-02 | Netapp, Inc. | Deduplicated host cache flush to remote storage |
CN105224478A (en) * | 2015-09-25 | 2016-01-06 | 联想(北京)有限公司 | A kind of formation of mapping table, renewal and restoration methods and electronic equipment |
Non-Patent Citations (4)
Title |
---|
MATTEO BERTOZZI: "cache flush timstamp before I/O", 《HTTPS://BLOG.CLOUDERA.COM/APACHE-HBASE-I-O-HFILE/》, 29 June 2012 (2012-06-29), pages 1 * |
周文胜: "关系数据库系统事务恢复策略的设计和实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》, no. 01, 15 January 2006 (2006-01-15), pages 138 - 27 * |
赵继远: "面向互联网应用的存储引擎优化", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
赵继远: "面向互联网应用的存储引擎优化", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》, 31 December 2015 (2015-12-31) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988623A (en) * | 2019-12-17 | 2021-06-18 | 北京忆芯科技有限公司 | Method and storage device for accelerating SGL (secure gateway) processing |
CN112988623B (en) * | 2019-12-17 | 2021-12-21 | 北京忆芯科技有限公司 | Method and storage device for accelerating SGL (secure gateway) processing |
US20240143227A1 (en) * | 2022-10-26 | 2024-05-02 | Western Digital Technologies, Inc. | Data Storage Device and Method for Reducing Flush Latency |
US12248706B2 (en) * | 2022-10-26 | 2025-03-11 | SanDisk Technologies, Inc. | Data storage device and method for reducing flush latency |
Also Published As
Publication number | Publication date |
---|---|
CN110515861B (en) | 2022-08-05 |
CN114610654A (en) | 2022-06-10 |
CN114610654B (en) | 2025-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210263645A1 (en) | NVMe Controller Memory Manager | |
JP6729914B2 (en) | Solid state storage drive, system, and method | |
CN110730945B (en) | Scalable low latency memory interface | |
JP5922740B2 (en) | Apparatus for memory device, memory device and method for control of memory device | |
US11762590B2 (en) | Memory system and data processing system including multi-core controller for classified commands | |
US11494318B2 (en) | Controller and operation method thereof | |
US20160124639A1 (en) | Dynamic storage channel | |
CN108710474A (en) | A kind of date storage method, device and computer storage media | |
WO2018024214A1 (en) | Io flow adjustment method and device | |
CN110515861B (en) | Memory device for processing flash command and method thereof | |
CN105389268A (en) | Data storage system and method of operation | |
CN111290975B (en) | Method and storage device for processing read commands and pre-read commands using unified cache | |
CN111352865B (en) | Write caching for memory controllers | |
CN111290974B (en) | Cache elimination method for storage device and storage device | |
CN112148626A (en) | Storage method and storage device for compressed data | |
US11556276B2 (en) | Memory system and operating method thereof | |
CN112578993B (en) | Method and memory device for processing programming errors of multi-plane NVM | |
JP6100927B2 (en) | Information processing device | |
CN110096452B (en) | Nonvolatile random access memory and method for providing the same | |
US11941246B2 (en) | Memory system, data processing system including the same, and operating method thereof | |
CN112947845A (en) | Thermal data identification method and storage device thereof | |
CN112579328A (en) | Method for processing programming error and storage device | |
WO2020019173A1 (en) | Memory control circuit for object storage | |
CN119301556A (en) | Write merging via HMB to optimize write performance | |
CN118841048A (en) | Data writing method, electronic device and 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |