CN103631728A - 使用自适应压缩比率快速执行刷新命令 - Google Patents
使用自适应压缩比率快速执行刷新命令 Download PDFInfo
- Publication number
- CN103631728A CN103631728A CN201310485840.7A CN201310485840A CN103631728A CN 103631728 A CN103631728 A CN 103631728A CN 201310485840 A CN201310485840 A CN 201310485840A CN 103631728 A CN103631728 A CN 103631728A
- Authority
- CN
- China
- Prior art keywords
- memory
- storage
- data
- refresh command
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007906 compression Methods 0.000 title abstract description 29
- 230000006835 compression Effects 0.000 title abstract description 13
- 230000003044 adaptive effect Effects 0.000 title abstract 2
- 230000015654 memory Effects 0.000 claims abstract description 159
- 238000000034 method Methods 0.000 claims abstract description 23
- 239000000872 buffer Substances 0.000 claims abstract description 18
- 230000003139 buffering effect Effects 0.000 claims description 8
- 230000000903 blocking effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开涉及使用自适应压缩比率快速执行刷新命令。一种方法包括在包括非易失性存储器和易失性缓冲器的存储设备中,接收一个或多个存储命令以及至少一个刷新命令,其中,所述易失性缓冲器缓冲接收以存储在所述非易失性存储器中的数据。所述刷新命令指示所述存储设备将在所述易失性缓冲器中缓冲的数据提交给所述非易失性存储器。根据第一存储规则执行所述存储命令。根据第二存储规则执行所述刷新命令,所述第二存储规则相对于所述第一存储规则具有较小的延迟。
Description
技术领域
本发明通常涉及存储器设备(memory device),更具体地涉及快速执行刷新命令(flush command)的方法和系统。
背景技术
一些非易失性存储器系统包括用于临时缓冲数据,所述数据等待被存储在非易失性存储器。一些存储协议支持刷新命令,所述刷新命令指示存储设备(storage device)将易失性存储器中的任意数据传送到非易失性存储器中。
例如,在NVM Express协议中支持刷新命令。NVMExpress中的刷新命令在例如2011年7月12日的“NVM Express”修订版本1.0b的第6.7节中进行了规定,该协议通过引用而被包含在本文中。串行ATA(SATA)协议同样规定了被称为“FLUSH CACHE(刷新高速缓存)”和“FLUSH CACHE EXT(刷新高速缓存扩展)”的刷新命令。小型计算机系统接口(SCSI)协议规定了被称为“SYNCHRONIZE CACHE(同步高速缓存)”的刷新命令。
发明内容
本文中描述的本发明一个实施例提供了在存储设备(torage device)中的一种方法所述存储设备包括非易失性存储器和易失性缓冲器,所述易失性缓冲器缓冲接收以存储在所述非易失性存储器中的数据。所述方法包括在所述存储设备中接收一个或多个存储命令以及至少一个刷新命令。所述刷新命令指示所述存储设备将在所述易失性缓冲器中缓冲的数据提交给所述非易失性存储器。根据第一存储规则执行所述存储命令。根据第二存储规则执行所述刷新命令,所述第二存储规则相对于所述第一存储规则具有较小的延迟(latency)。
在一些实施例中,根据第二存储规则执行所述刷新命令包括:将对于每个压缩操作而在所述非易失性存储器中执行的编程操作的数量限制到预定义比率,并且根据第一存储规则执行所述存储命令包括:允许所述数量超过所述预定义比率。
根据第一存储规则执行所述存储命令可以包括强制实施备选比率,所述备选比率大于所述预定义比率。在一个实施例中,将对于每个压缩操作而在所述非易失性存储器中执行的编程操作的数量限制到预定义比率包括:根据在所述非易失性存储器中可用的空闲存储器块的计数来修改所述预定义比率。
在一些实施例中,所述方法包括:为了加速所述刷新命令而在所述非易失性存储器中专门分配一个或多个存储器块,并且执行所述刷新命令包括:将在所述易失性缓冲器中缓冲的数据提交给专门分配的存储器块,并且随后将提交的数据从所述专门分配的存储器块传送到所述非易失性存储器中的备选存储位置。在一个实施例中,将在所述易失性缓冲器中缓冲的数据提交给专门分配的存储器块包括:使用低延迟存储配置将所述数据存储在所述专门分配的存储器块中。
根据本发明一个实施例,还提供了一种存储系统,包括:非易失性存储器;易失性缓冲器,所述易失性缓冲器缓冲接收以存储在所述非易失性存储器的数据;以及处理器。所述处理器被配置成接收一个或多个存储命令和至少一个刷新命令,根据第一存储规则执行所述储命令,根据第二存储规则执行所述刷新命令,所述刷新命令指示所述存储设备将在所述易失性缓冲器中缓冲的数据提交给所述非易失性存储器,并且所述第二存储规则相对于所述第一存储规则具有较小的延迟。
根据本发明的一个实施例,还提供了一种存储器控制器,包括接口与处理器。所述接口被配置成与非易失性存储器通信。所述处理器被配置成将接收以存储在所述非易失性存储器中的数据缓冲在易失性缓冲器中,接收一个或多个存储命令和至少一个刷新命令,根据第一存储规则执行所述存储命令,根据第二存储规则执行所述刷新命令,所述刷新命令指示所述存储器控制器将在所述易失性缓冲器中缓冲的数据提交给所述非易失性存储器,并且所述第二存储规则相对于所述第一存储规则具有较小的延迟。
根据本发明一个实施例,进一步提供了一种系统,包括主机和存储设备。所述存储设备包括非易失性存储器,用于缓冲从所述主机接收以存储在所述非易失性存储器中的数据的易失性缓冲器以及处理器。所述处理器被配置成从所述主机接收一个或多个存储命令以及至少一个刷新命令,根据第一存储规则执行所述存储命令,以及根据第二存储规则执行所述刷新命令,所述刷新命令指示所述存储设备将缓冲在所述易失性缓冲器中的数据提交给所述非易失性存储器,并且所述第二存储规则相对于所述第一存储规则具有较小的延迟。
从下面对本发明实施例的详细说明并结合附图,本发明将会被更充分地理解。
附图说明
图1是示出了根据本发明一个实施例的存储器系统(memory system)的框图;以及
图2是示意性示出了根据本发明一个实施例的用于快速执行刷新命令的方法的流程图。
具体实施方式
概述
一些非易失性存储系统包括临时缓冲数据的易失性缓冲器,所述数据等待被存储在非易失性存储器中。一些固态驱动器(SSD),例如,从主机接收数据,初始将数据缓冲在易失性缓冲器中,稍后将数据传送到非易失存储器中。一旦数据被存储在易失性缓冲器中,常常在数据被成功地提交给非易失性存储器之前,SSD通常发送确认给主机。
这种缓冲相当程度上提高了存储性能。另一方面,如果电力中断,即使已经向主机确认了成功存储,但是已缓冲但还没有提交给非易失性存储器的数据可能丢失。这种情况将导致数据不一致,因此需要被避免。
为了避免这些和其他情形,一些存储协议支持刷新命令,其指示存储设备将所有缓冲的数据提交给非易失性存储器。存储设备只在易失性缓冲器中的所有数据已经被成功地传送到非易失性存储器时才确认刷新命令。刷新命令通常是阻塞命令(blocking command),即,主机操作系统和文件系统不发送新的写命令,直到刷新操作完成为止。因此,执行刷新命令会使存储设备暂停一个长的时间段。
本文描述的本发明实施例提供了改进的用于在诸如SSD的非易失性存储器系统中实现刷新命令的方法和系统。在所公开的实施例中,存储设备中的处理器管理从主机接受的命令的执行。具体地,处理器在执行存储命令时应用某个存储规则,而在执行刷新命令时应用具有较小延迟的另一存储规则。结果,由刷新命令引起的阻塞时间减少了。
在示例实施例中,在执行刷新命令期间,对于每个编程操作,处理器执行比在存储命令期间执行的少的压缩操作。压缩操作,也称为“垃圾收集”,将有效数据从非易失性存储器的部分有效的存储器块拷贝到新的存储器块,从而为新的存储释放连续的存储器空间。通过在刷新命令执行期间临时限制压缩操作的数量,处理器能够提高数据从易失性存储器到非易失性存储器的传送速率。由刷新命令引起的阻塞时间因此减少了。
在一些实施例中,处理器在执行存储命令时执行可变的编程压缩比率。该比率作为在非易失性存储器中剩余的空闲存储器块的数量的函数、根据特定规则而变化。在执行刷新命令时,处理器切换到强制实施更高编程压缩比率的备选规则。
在一些实施例中,处理器在非易失性存储器中分配了空闲存储器块池,专门用于存储在刷新命令期间从易失性缓冲器传送的数据。通过使用这个池,刷新命令可以更快的速度执行,并且其阻塞时间可以被进一步减少。
系统描述
图1是示意性图示了根据本发明一个实施例的存储器系统的框图,在本例中该存储器系统是固态驱动器(SSD)20。SSD20为主机24存储数据。例如,SSD20可被安装在移动或个人计算机中,在此情况下,主机24包括计算机的中央处理单元(CPU)芯片集。备选地,SSD20可和任何其他合适的主机一起使用。尽管本文描述的实施例主要涉及SSD,所公开的技术可被用于各种其他种类的存储器系统,诸如企业存储设备、移动电话、数字照相机、诸如膝上型计算机的移动计算设备、平板计算机或者个人数字助理(PDA)、媒体播放器、可移动存储卡或设备、或任意其他合适的数据存储系统。
SSD20为主机24在非易失性存储器中存储数据,在本例中在一个或多个NAND闪存存储器设备28中存储数据。在备选实施例中,在SSD20中的非易失性存储器可包括任意其他合适种类的非易失性存储器,诸如例如NOR闪存、电荷捕获闪存(CTF)、相变RAM(PRAM)、磁阻RAM(MRAM)或者铁电RAM(FeRAM)。
SSD控制器36执行SSD的各种存储和管理任务,特别是使用下面描述的方法执行刷新命令。SSD控制器通常同样被称为存储器控制器。SSD控制器36包括用于和主机24通信的主机接口40、用于和闪存设备28通信的存储器接口44以及执行本文描述的方法的处理器48。
SSD20进一步包括易失性写缓冲器32,用于临时缓冲从主机24接收以供存储的数据。通常,来到的数据初始存储在缓冲器32中,随后被拷贝到非易失性存储器设备28中的其指定存储位置。拷贝操作通常使用直接存储器访问(DMA)实现,但同样可由处理器48执行。
在本例中,缓冲器32实现在随机存取存储器(RAM)中,也可能实现在处理器48为了其他目的而使用的RAM设备中。在图1的实施例中,RAM支持的缓冲器32被示为SSD控制器36的一部分,尽管备选地,RAM可以与SSD控制器分离开。在各种实施例中,易失性存储器支持的缓冲器32可包括任何适当种类的易失性存储器,诸如,例如,动态RAM(DRAM)、双数据速率DRAM(DDRDRAM)或者静态RAM(SRAM)。
SSD控制器36,特别是处理器48,可被实现为硬件。备选地,SSD控制器可包括运行适当软件的微处理器,或者硬件元件和软件元件的组合。
图1的配置是示例性配置,其仅仅为了概念上清楚的目的而示出。任何其他合适的SSD或者其他存储器系统配置同样可被使用。对于理解本发明的原理不是必需的元件,诸如各种接口、寻址电路、时序电路以及调试电路,为了清楚的目的已经从图上被略去了。在一些应用中,例如非SSD应用,SSD控制器36的功能由适当的存储器控制器执行。
在图1所示的示例性系统配置中,存储器设备28和SSD控制器48实现为独立的集成电路(IC)。然而,在备选实施例中,存储器设备和SSD控制器可被集成到单个多芯片封装(MCP)或片上系统(SoC)中的独立的半导体晶片(die)上,并可通过内部总线互联。进一步备选地,SSD控制器电路的一些或者所有可驻留在同一晶片上,在其上设置有一个或多个存储器设备28。进一步备选地,SSD控制器36的一些或者所有功能可被实现为软件,并由处理器或主机24的其他元件执行。在一些实施例中,主机24和SSD控制器36可被制造在同一晶片上,或在同一设备封装的不同晶片上。
在一些实施例中,SSD控制器36包括通用处理器,其以软件编程来执行本文描述的功能。例如,该软件可在网络上以电子形式下载到处理器,或者备选地或者附加地,其可以被提供和/或存储在非临时性有形介质上,诸如,磁、光、或者电存储器上。
刷新命令的快速执行
在一些实施例中,SSD20的处理器48通过首先将来到的数据存储在易失性缓冲器32中,随后将缓冲的数据传送到非易失性存储器设备28中来实现高的写性能。然而,在电源中断的情况下这种易失性缓冲会导致数据不一致。
例如,考虑如下情形:在缓冲器32中的部分数据还没有成功传送到非易失性存储器设备28时SSD24的电源中断。一方面,该数据通常将丢失。另一方面,处理器48已经对主机24确认了数据存储是成功的。结果,数据不一致或者缺乏同步会在主机处产生:在实际上数据已经丢失时,主机却认为数据被成功地存储了。
为了避免这种情形,主机24和SSD20之间的存储协议包括刷新命令。刷新命令由主机发布,并指示SSD20中的处理器48将易失性缓冲器32中的所有数据传送到非易失性存储器设备28。处理器48只在缓冲器32中的所有数据已经被成功地传送并提交给非易失性存储器时才确认刷新命令。
刷新命令通常是阻塞命令,即,新的写命令不会被发送到处理器48,直到刷新操作完成为止。因此,执行刷新命令会使存储设备暂停一个长的时间段,有时为大约几秒。刷新命令的持续时间可取决于,例如,被缓冲的数据的数量以及存储器设备28中的空闲存储器空间。
在一些实施例中,处理器48通过应用在刷新命令执行期间具有较少延迟的存储规则或模式来减少由刷新命令导致的阻塞时间。本文描述的实施例主要涉及限制在刷新命令执行期间的压缩操作的数量。然而在备选实施例中,处理器48可应用使得刷新命令执行具有比存储命令执行小的延迟的任意其他适当的规则或模式。在下面的描述中,术语“存储命令”指的是从主机接收的但不是刷新命令的任何命令,例如,写命令或读命令。术语“主机命令”指的是从主机接收以在SSD中执行的任意命令,包括存储命令和刷新命令。
在典型的闪存存储器中,数据以页为单位写到存储器设备28,但是擦除被应用到整个存储器块。数据只被写到已擦除的页中,因此不可能就地更新数据。更新数据包括将更新后的数据写到闪存存储器中的另一个物理存储位置,将之前的数据版本标记为失效,并动态更新将数据的逻辑地址翻译为存储数据的物理存储位置的逻辑到物理地址映射。
由于闪存存储器的这些特性,存储器设备28的存储器块渐渐地累积失效数据页,其更新的版本已经存储在其他的物理存储位置。为了减少失效页的数量,SSD控制器36的处理器48执行压缩,或“垃圾收集”过程。这一背景过程选择用于压缩的一个或多个存储器块(被称为源块),将有效数据从所选的源块拷贝到一个或多个其他块(被称为目标块)中的其他存储位置,然后擦除源块。所擦除的块然后为随后的编程做好准备。压缩过程保证在任何给定的时间,预定数量的存储器块被擦除并可用于新的编程。这些存储器块此处被称为空闲块。
可以理解的是,压缩过程包括大量的拷贝操作,其以写来自主机的新数据的编程操作为代价。换句话说,压缩过程的拷贝操作以及新数据的编程操作对于SSD中的同一处理资源进行竞争。
在一些实施例中,处理器48调节编程和压缩操作的速率以便维持期望的空闲块数量。在示例实施例中,当空闲块的数量低于预定义阈值时,处理器48暂停任意新的编程操作,并且只执行压缩操作。由于压缩操作增加空闲块的数量,空闲块的数量很快超过预定义阈值,并且处理器48允许新的编程操作进行。
更一般而言,处理器48可使用两个或更多个用于定义空闲存储器块的数量范围的预定义阈值。在每个范围内,处理器48限制每个压缩操作的编程操作数量为特定编程-压缩比率。(术语“编程-压缩比率”一般指的是编程和拷贝的可比较数据大小。例如,比率可被定义为:
通常,当空闲块的数量减少时,对于每个压缩操作,处理器48允许更少的编程操作,反之亦然。下面的表格给出了五个范围(四个阈值)以及相应的编程-压缩比率的示例配置:
范围索引 | 空闲块的数量(N) | 编程-压缩操作比率 |
I-只编程 | N>20 | 只编程 |
II | 15<N≤20 | 3:1 |
III | 10<N≤15 | 1:1 |
IV | 5<N≤10 | 1:3 |
V-只压缩 | N≤5 | 只压缩 |
表1:示例编程-压缩比率
在表1的配置中,当空闲块的数量(N)是五或者更低时,处理器停止所有新的编程并只允许压缩。在另一个极端,当空闲块的数量超过20时,处理器48停止压缩并只执行编程。在N的中间值,处理器48应用中间的编程-压缩比率。
考虑处理器48使用表1的配置并执行一些随机(即,非连续)写操作的示例情形。当空闲块的数量降低到最低阈值之下时,主机24发布刷新命令。在这个点,处理器48不允许新的存储命令,而缓冲器32中的数据不能被提交给存储器设备28,直到空闲块的数量上升到“只压缩”阈值之上。在这个情形下,主机将典型地必须等待一个长时间段到压缩过程结束。只在那时刷新命令实际将缓冲的数据传送到非易失性存储器并随后确认。所公开的技术克服了这个和其他有问题的情形。
在一些实施例中,对于给定数量的空闲块,当执行存储命令时,处理器48执行更小的编程-压缩比率,而当执行刷新命令时,执行更大的编程-压缩比率。通过在刷新命令执行期间对于每个压缩操作允许更多的编程操作,处理器能够更快速的将缓冲的数据从缓冲器32传送到闪存设备28。结果,刷新命令的阻塞时间大大减少了。
没有这个机制,阻塞时间可达到大约500ms,而在一些情况下,其高达几秒。当使用所公开的机制时,阻塞时间可被减少到大约10ms。这些数据仅仅作为例子给出,可在备选实施例中实现各种其他阻塞时间。
在一些实施例中,在存储命令执执期间,处理器48限制每个压缩操作的编程操作数量为特定比率,但在刷新命令执行期间允许超过该比率。在一些实施例中,在刷新命令执行期间,处理器48强制实施比存储命令执行期间使用的比率更大的编程压缩比率。
当使用诸如上面的表1中的多个阈值时,处理器48强制实施两种不同的配置——一个配置用在存储命令执行期间而另一个配置用在刷新命令执行期间。对于给定数量的空闲存储器块,在刷新命令执行期间应用的编程-压缩比率大于在存储命令执行期间应用的比率。
在一个示例实施例中,处理器48在存储命令执行期间强制实施上面的表1中的配置,而在刷新命令执行期间执行下面的表2中的配置。
范围索引 | 空闲块的数量(N) | 编程-压缩操作比率 |
I | N>20 | 只编程 |
II | 15<N≤20 | 只编程 |
III | 10<N≤15 | 只编程 |
IV | 5<N≤10 | 只编程 |
V | 2<N≤5 | 只编程 |
VI-只压缩 | N≤2 | 只压缩 |
表2:在刷新命令执行期间的示例编程-压缩比率
表2中的例子假设写缓冲器32的大小小于三个存储器块。当刷新命令完成并被确认时,对于后续的存储命令处理器48回复到上面的表1。上面的表1和表2的配置仅仅通过例子的方式示出。在备选实施例中,可使用任何其他适当的编程-压缩比率的配置。
在一些实施例中,处理器48在非易失性存储器设备28中分配一个或多个空闲存储器块的池,专门用于存储在刷新命令期间从缓冲器32传送来的数据。当执行刷新命令时,处理器48将数据从缓冲器32拷贝到这些专门分配的块。处理器可随后将数据从专门分配的块传送到设备28中备选的存储位置,使得块的池再次可用于下一个刷新命令。这一机制提高了刷新命令执行的速度。
在一些实施例中,处理器48通过使用低延迟存储配置将数据存储在专门分配的块中来进一步加速刷新命令执行。例如,处理器可使用多层单元(MLC)配置,即,以每个存储器单元多个比特的存储密度来存储普通数据。然而,当将数据从缓冲器32传送到专门分配的块的池时,处理器可使用单层单元(SLC)配置,即,以每个存储器单元一个比特的存储密度来存储数据。
由于SLC存储大大快于MLC存储,这个技术大大减少了刷新命令的执行时间。通常,处理器48随后将数据从块的池传送到备选的存储位置,并使用MLC存储数据。
图2是示意性图示根据本发明一个实施例的用于快速执行刷新命令的方法的流程图。该方法开始于在池分配步骤60,SSD控制器36的处理器48在非易失性存储器设备28中分配空闲存储器块的池以供在刷新命令期间使用。
在规则定义步骤64,处理器48定义第一和第二存储规则,其分别在存储命令执行期间和刷新命令执行期间应用。第一规规则指定在存储命令执行期间使用的一个或多个编程-压缩比率(例如,上面的表1)。第二规则指定在刷新命令执行期间使用的一个或多个编程-压缩比率(例如,上面的表2)。对于给定数量的空闲存储器块,由第二规则指定的编程-压缩比率大于由第一规则指定的编程-压缩比率。
在命令输入步骤68,处理器48从主机24接收要在SSD中执行的命令。在检查步骤72,处理器48检查该命令是否包括存储命令或刷新命令。在第一规则应用步骤76,如果该命令包括存储命令,处理器48应用第一存储规则。在第二规则应用步骤80,如果该命令包括刷新命令,处理器48应用第二存储规则。
在执行步骤84,处理器48按照适用的第一或第二规则执行接收到的命令。该方法然后循环回到上面的步骤68来处理下一个主机命令。
可以理解的是上面描述的实施例作为例子引用,本发明不限于在上文中详细示出和描述的内容。而是,本发明的范围包括在上文中描述的各种特征的组合和子组合,以及本领域技术人员在阅读了前面的描述会想到而没有在现有技术中公开的变形和修改。在本专利申请中通过引用合并的文档将被视为该申请的组成部分,除了就在这些合并的文档中以与在本说明书中明确或暗示地做出的定义相矛盾的方式定义任何术语的方面而言,只应当考虑在本说明书中的定义之外。
Claims (18)
1.一种方法,包括:
在包括非易失性存储器和易失性缓冲器的存储设备中,接收一个或多个存储命令以及至少一个刷新命令,其中,所述易失性缓冲器缓冲接收以存储在所述非易失性存储器中的数据,所述刷新命令指示所述存储设备将在所述易失性缓冲器中缓冲的数据提交给行述非易失性存储器;
根据第一存储规则执行所述存储命令;
根据第二存储规则执行所述刷新命令,所述第二存储规则相对于所述第一存储规则具有较小的延迟。
2.如权利要求1所述的方法,其中根据第二存储规则执行所述刷新命令包括:
将对于每个压缩操作而在所述非易失性存储器中执行的编程操作的数量限制到预定义比率,并且
其中根据第一存储规则执行所述存储命令包括:
允许所述数量超过所述预定义比率。
3.如权利要求2所述的方法,其中根据第一存储规则执行所述存储命令包括:
强制实施备选比率,所述备选比率大于所述预定义比率。
4.如权利要求2所述的方法,其中将对于每个压缩操作而在所述非易失性存储器中执行的编程操作的数量限制到预定义比率包括:
根据在所述非易失性存储器中可用的空闲存储器块的计数来修改所述预定义比率。
5.如权利要求1所述的方法,包括:为了加速所述刷新命令而在所述非易失性存储器中专门分配一个或多个存储器块,其中执行所述刷新命令包括:将在所述易失性缓冲器中缓冲的数据提交给专门分配的存储器块,并且随后将提交的数据从所述专门分配的存储器块传送到所述非易失性存储器中的备选存储位置。
6.如权利要求5所述的方法,其中将在所述易失性缓冲器中缓冲的数据提交给专门分配的存储器块包括:
使用低延迟存储配置将所述数据存储在所述专门分配的存储器块中。
7.一种存储系统,包括:
非易失性存储器;
易失性缓冲器,所述易失性缓冲器缓冲接收以存储在所述非易失性存储器的数据;以及
处理器,所述处理器被配置成接收一个或多个存储命令和至少一个刷新命令,根据第一存储规则执行所述存储命令,根据第二存储规则执行所述刷新命令,所述刷新命令指示所述存储设备将在所述易失性缓冲器中缓冲的数据提交给所述非易失性存储器,并且所述第二存储规则相对于所述第一存储规则具有较小的延迟。
8.如权利要求7所述的存储系统,其中所述处理器被配置成通过将对于每个压缩操作而在所述非易失性存储器中执行的编程操作的数量限制到预定义比率来根据第二存储规则执行所述刷新命令,并且通过允许所述数量超过所述预定义比率来根据第一存储规则执行所述存储命令。
9.如权利要求8所述的存储系统,其中所述处理器被配置成通过强制实施备选比率来根据第一存储规则执行所述存储命令,所述备选比率大于所述预定义比率。
10.如权利要求8所述的存储系统,其中所述处理器被配置成根据在所述非易失性存储器中可用的空闲存储器块的计数来修改所述预定义比率。
11.如权利要求7所述的存储系统,其中所述处理器被配置成为了加速所述刷新命令而在所述非易失性存储器中专门分配一个或多个存储器块,并且通过将在所述易失性缓冲器中缓冲的数据提交给专门分配的存储器块,以及随后将提交的数据从所述专门分配的存储器块传送到所述非易失性存储器中的备选存储位置来执行所述刷新命令。
12.如权利要求11所述的存储系统,其中所述处理器被配置成使用低延迟存储配置将所述数据存储在所述专门分配的存储器块中。
13.一种存储器控制器,包括:
用于与非易失性存储器通信的接口;以及
处理器,所述处理器被配置成将接收以存储在所述非易失性存储器中的数据缓冲在易失性缓冲器中,接收一个或多个存储命令和至少一个刷新命令,根据第一存储规则执行所述存储命令,根据第二存储规则执行所述刷新命令,所述刷新命令指示所述存储器控制器将在所述易失性缓冲器中缓冲的数据提交给所述非易失性存储器,并且所述第二存储规则相对于所述第一存储规则具有较小的延迟。
14.如权利要求13所述的存储器控制器,其中所述处理器被配置成通过将对于每个压缩操作而在所述非易失性存储器中执行的编程操作的数量限制到预定义比率来根据第二存储规则执行所述刷新命令,并且通过允许所述数量超过所述预定义比率来根据第一存储规则执行所述存储命令。
15.如权利要求14所述的存储器控制器,其中所述处理器被配置成通过强制实施备选比率来根据第一存储规则执行所述存储命令,所述备选比率大于所述预定义比率。
16.如权利要求14所述的存储器控制器,其中所述处理器被配置成根据在所述非易失性存储器中可用的空闲存储器块的计数来修改所述预定义比率。
17.如权利要求13所述的存储器控制器,其中所述处理器被配置成为了加速所述刷新命令而在所述非易失性存储器中专门分配一个或多个存储器块,并且通过将在所述易失性缓冲器中缓冲的数据提交给专门分配的存储器块,以及随后将提交的数据从所述专门分配的存储器块传送到所述非易失性存储器中的备选存储位置来执行所述刷新命令。
18.如权利要求17所述的存储器控制器,其中所述处理器被配置成使用低延迟存储配置将所述数据存储在所述专门分配的存储器块中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/595,806 US20140059271A1 (en) | 2012-08-27 | 2012-08-27 | Fast execution of flush commands using adaptive compaction ratio |
US13/595,806 | 2012-08-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103631728A true CN103631728A (zh) | 2014-03-12 |
Family
ID=49084775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310485840.7A Pending CN103631728A (zh) | 2012-08-27 | 2013-08-27 | 使用自适应压缩比率快速执行刷新命令 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140059271A1 (zh) |
EP (1) | EP2703995A1 (zh) |
KR (1) | KR101497826B1 (zh) |
CN (1) | CN103631728A (zh) |
TW (1) | TW201415233A (zh) |
WO (1) | WO2014035756A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170379A (zh) * | 2017-12-28 | 2018-06-15 | 深圳忆联信息系统有限公司 | 一种提升ssd稳态时写命令服务质量的方法及ssd |
CN109522248A (zh) * | 2017-09-19 | 2019-03-26 | 三星电子株式会社 | 存储控制器的操作方法及储存设备的操作方法 |
CN110413233A (zh) * | 2019-07-26 | 2019-11-05 | 杭州电子科技大学 | 一种固态硬盘控制器 |
CN111966614A (zh) * | 2019-05-20 | 2020-11-20 | 美光科技公司 | 内部通信接口管理 |
CN114610654A (zh) * | 2018-05-21 | 2022-06-10 | 北京忆芯科技有限公司 | 一种固态存储设备以及向其写入数据的方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996889B2 (en) * | 2013-03-29 | 2015-03-31 | Dropbox, Inc. | Portable computing device with methodologies for client-side analytic data collection |
JP5916958B2 (ja) * | 2013-07-31 | 2016-05-11 | 株式会社日立製作所 | 計算機システム及び計算機システム制御方法 |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
US10346048B2 (en) * | 2015-04-10 | 2019-07-09 | Samsung Electronics Co., Ltd. | Electronic system with storage management mechanism and method of operation thereof |
US9946496B2 (en) * | 2015-07-27 | 2018-04-17 | Elastifile Ltd. | SSD with non-blocking flush command |
TWI635495B (zh) * | 2016-02-05 | 2018-09-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
TWI607457B (zh) * | 2016-06-28 | 2017-12-01 | 光寶電子(廣州)有限公司 | 固態儲存裝置及其資料寫入方法 |
KR102680390B1 (ko) | 2016-10-12 | 2024-07-03 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US10489288B2 (en) | 2017-01-25 | 2019-11-26 | Samsung Electronics Co., Ltd. | Algorithm methodologies for efficient compaction of overprovisioned memory systems |
KR102529710B1 (ko) * | 2018-02-19 | 2023-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN108595264A (zh) * | 2018-04-10 | 2018-09-28 | 平安科技(深圳)有限公司 | 刷新任务分配方法、电子设备及计算机可读存储介质 |
KR102624911B1 (ko) * | 2018-06-13 | 2024-01-12 | 삼성전자주식회사 | 개선된 메타 데이터 관리를 통한 플래시 메모리의 내구성 향상 방법 |
KR102605566B1 (ko) * | 2018-11-22 | 2023-11-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US12236112B2 (en) * | 2022-04-25 | 2025-02-25 | SanDisk Technologies, Inc. | Securing a data storage device against rogue hosts |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303845A (zh) * | 2007-05-10 | 2008-11-12 | 智多微电子(上海)有限公司 | 一种控制图像数据写入缓冲单元及读取的控制装置和方法 |
US20100042773A1 (en) * | 2008-08-12 | 2010-02-18 | Phison Electronics Corp. | Flash memory storage system and data writing method thereof |
US20110058440A1 (en) * | 2009-09-09 | 2011-03-10 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
EP2360595A1 (en) * | 2010-02-16 | 2011-08-24 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320209A1 (en) * | 2000-01-06 | 2008-12-25 | Super Talent Electronics, Inc. | High Performance and Endurance Non-volatile Memory Based Storage Systems |
KR100725410B1 (ko) * | 2006-01-20 | 2007-06-07 | 삼성전자주식회사 | 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법 |
US7711890B2 (en) * | 2006-06-06 | 2010-05-04 | Sandisk Il Ltd | Cache control in a non-volatile memory device |
EP1988474A1 (en) * | 2007-05-04 | 2008-11-05 | Axalto SA | System and method of managing indexation of flash memory |
US8205063B2 (en) * | 2008-12-30 | 2012-06-19 | Sandisk Technologies Inc. | Dynamic mapping of logical ranges to write blocks |
US20100287217A1 (en) * | 2009-04-08 | 2010-11-11 | Google Inc. | Host control of background garbage collection in a data storage device |
US8595572B2 (en) * | 2009-04-08 | 2013-11-26 | Google Inc. | Data storage device with metadata command |
TWI385523B (zh) * | 2009-11-06 | 2013-02-11 | Phison Electronics Corp | 用於快閃記憶體的資料備份方法及其控制器與儲存系統 |
US8438361B2 (en) * | 2010-03-10 | 2013-05-07 | Seagate Technology Llc | Logical block storage in a storage device |
US8799561B2 (en) * | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
-
2012
- 2012-08-27 US US13/595,806 patent/US20140059271A1/en not_active Abandoned
-
2013
- 2013-08-21 WO PCT/US2013/055949 patent/WO2014035756A1/en active Application Filing
- 2013-08-26 EP EP13181719.9A patent/EP2703995A1/en not_active Withdrawn
- 2013-08-27 CN CN201310485840.7A patent/CN103631728A/zh active Pending
- 2013-08-27 TW TW102130671A patent/TW201415233A/zh unknown
- 2013-08-27 KR KR1020130101970A patent/KR101497826B1/ko not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303845A (zh) * | 2007-05-10 | 2008-11-12 | 智多微电子(上海)有限公司 | 一种控制图像数据写入缓冲单元及读取的控制装置和方法 |
US20100042773A1 (en) * | 2008-08-12 | 2010-02-18 | Phison Electronics Corp. | Flash memory storage system and data writing method thereof |
US20110058440A1 (en) * | 2009-09-09 | 2011-03-10 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
EP2360595A1 (en) * | 2010-02-16 | 2011-08-24 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522248A (zh) * | 2017-09-19 | 2019-03-26 | 三星电子株式会社 | 存储控制器的操作方法及储存设备的操作方法 |
CN109522248B (zh) * | 2017-09-19 | 2023-07-11 | 三星电子株式会社 | 存储控制器的操作方法及储存设备的操作方法 |
CN108170379A (zh) * | 2017-12-28 | 2018-06-15 | 深圳忆联信息系统有限公司 | 一种提升ssd稳态时写命令服务质量的方法及ssd |
CN114610654A (zh) * | 2018-05-21 | 2022-06-10 | 北京忆芯科技有限公司 | 一种固态存储设备以及向其写入数据的方法 |
CN114610654B (zh) * | 2018-05-21 | 2025-02-07 | 北京忆芯科技有限公司 | 一种固态存储设备以及向其写入数据的方法 |
CN111966614A (zh) * | 2019-05-20 | 2020-11-20 | 美光科技公司 | 内部通信接口管理 |
CN111966614B (zh) * | 2019-05-20 | 2024-06-11 | 美光科技公司 | 内部通信接口管理 |
CN110413233A (zh) * | 2019-07-26 | 2019-11-05 | 杭州电子科技大学 | 一种固态硬盘控制器 |
Also Published As
Publication number | Publication date |
---|---|
KR101497826B1 (ko) | 2015-03-02 |
KR20140027894A (ko) | 2014-03-07 |
TW201415233A (zh) | 2014-04-16 |
WO2014035756A1 (en) | 2014-03-06 |
US20140059271A1 (en) | 2014-02-27 |
EP2703995A1 (en) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103631728A (zh) | 使用自适应压缩比率快速执行刷新命令 | |
US11513948B2 (en) | Controller and memory system | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
US12131053B2 (en) | Apparatus and method for erasing data programmed in a non-volatile memory block in a memory system multiple times | |
US10606758B2 (en) | Memory system and method of operating the same | |
US20250165403A1 (en) | Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system | |
US12079131B2 (en) | Memory system and operating method thereof | |
US10782909B2 (en) | Data storage device including shared memory area and dedicated memory area | |
US20170228191A1 (en) | Systems and methods for suppressing latency in non-volatile solid state devices | |
CN109521950B (zh) | 存储设备、其操作方法及包括存储设备的存储系统 | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
CN113220215B (zh) | 双slc/qlc编程和资源释放 | |
CN110489056A (zh) | 控制器以及包括该控制器的存储器系统 | |
US20240168886A1 (en) | Method for operating memory system, memory controller, memory system and electronic device | |
CN112099731A (zh) | 数据储存装置与数据处理方法 | |
US20150254011A1 (en) | Memory system, memory controller and control method of non-volatile memory | |
US10923178B1 (en) | Data storage with improved write performance for preferred user data | |
US20250208925A1 (en) | Devices and methods for improved workload-balancing processing bandwidth allocation | |
US20240394193A1 (en) | Host bandwidth optimized data stream memory writes | |
TWI863804B (zh) | 基於來源區塊類型管理快閃記憶體中的垃圾回收操作的方法以及相關的記憶體控制器和儲存系統 | |
US20250156273A1 (en) | Flexible raid parity application for memory management | |
JP2025523330A (ja) | メモリシステムおよびその動作方法、記憶媒体ならびにメモリコントローラ | |
CN119902690A (zh) | 存储器系统及其操作方法、计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140312 |