CN102713866A - 减少基于闪存的存储系统中的存取争用 - Google Patents
减少基于闪存的存储系统中的存取争用 Download PDFInfo
- Publication number
- CN102713866A CN102713866A CN2010800570927A CN201080057092A CN102713866A CN 102713866 A CN102713866 A CN 102713866A CN 2010800570927 A CN2010800570927 A CN 2010800570927A CN 201080057092 A CN201080057092 A CN 201080057092A CN 102713866 A CN102713866 A CN 102713866A
- Authority
- CN
- China
- Prior art keywords
- chip
- chip belt
- page
- write
- belt
- 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
Images
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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
示例性实施例包括一种用于减少基于闪存的存储系统中的存取争用的方法,该方法包括:从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,该芯片带包括多个页面;将芯片带设置为写入状态;设置多个通道中的每个通道中的写队列头;对于闪存带中的多个通道的每个通道,将写队列头设置到来自芯片带的属于该通道的芯片中的第一空闲页面;根据写入分配调度器,在通道间分配写入请求;生成页面写入,以及响应于页面写入,递增写队列头;以及当芯片带已满时,将芯片带设置为在线状态。
Description
技术领域
本发明涉及基于闪存的存储系统,具体而言,涉及用于减少基于闪存的存储系统中的或与基于闪存的存储系统具有类似属性的其它存储系统中的存取争用的方法和系统。
背景技术
闪存是能够被电擦除和重新编程的非易失性计算机存储器。诸如固态驱动器(SSD)之类的基于闪存的存储设备具有以下硬件特征:其中,通常以页面大小的字节片来执行读和写,该字节片通常大小为2到4KB。擦除通常以完整的块执行,其中,一个块通常包括64到128个页面。闪存包括NOR类型和NAND类型。一般而言,存在两种不同类型的NAND闪存芯片:基于单电平单元(SLC)的类型存储一个比特,以及基于多电平单元的类型保持多个电压电平以便存储多于一个的比特。基于SLC的闪存芯片中的4KB页面分别具有典型的25和600μs的读取和写入时间。擦除一个完整的块要花费显著较长的时间量,并且在企业级闪存芯片中要花费7ms。这些读取/写入/擦除特征不管工作负荷如何都是有效的。相比之下,在基于硬盘驱动器(HDD)的存储系统中,寻道时间限制了随机存取性能。然而,在基于闪存的存储设备中,在单元能够被编程(例如,写入)之前必须首先擦除它们。因此,用来隐藏块擦除等待时间的常见技术是始终错位地写入数据,并推迟对块的擦除,直到启动无用存储单元收集。当发出擦除命令时,芯片忙碌直到操作完成,并且没有办法在此时间期间对此芯片读取或写入,这被称为“阻止擦除”。错位写入策略要求被叫做闪存转换层(FTL,Flash Translation Layer)的一个特殊层,该层保持闪存中的逻辑块地址(LBA,logical block address)和实际物理页面/块地址(PBA,physical page/block address)之间的映射。
对基于闪存的存储设备的存取时间仍能够受到延迟变化。图1示出了模拟的现有技术系统的概率密度函数相对于等待时间的图100。图2示出了模拟的现有技术系统的累积分布函数相对于等待时间的图200。图1和2示出了高负荷情况下的闪存模拟器。在示例中,当一个块正被擦除时,对同一个芯片的后续读取请求可能必须等待7ms才能被服务。类似地,读取请求可被正在进行的写入请求延迟高达600μs。这样显著的延迟在某些环境下是不可接受的。另外,某些国家(例如,日本)对于特定IT应用甚至强制最大延迟范围(~5-10ms)。因此,潜在的总延迟可能会超出所要求的延迟范围。此外,传统的DRAM存储技术没有与闪存相同的限制,因此,提供显著的、更加均匀的存取延迟。闪存高速缓存解决方案试图用闪存来替换昂贵的有后备电池的DRAM存储器(被叫做NVRAM)。因此,这样的闪存高速缓存的特征类似于那些存储技术的特征。因此,利用基于闪存的存储技术来提供这样的特征是有益的,但不普通。
发明内容
示例性实施例包括一种用于减少基于闪存的存储系统中的或与基于闪存的存储系统具有类似属性的存储系统中的存取争用的方法,该方法包括:从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个页面;将所述芯片带设置为写入状态;设置所述多个通道的每个通道中的写队列头;对于闪存带中的多个通道的每个通道,将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面;根据写入分配调度器,在通道间分配写入请求;生成页面写入;以及响应于所述页面写入,递增所述写队列头。
另外的示例性实施例包括一种用于减少基于闪存的存储系统中的存取争用的计算机程序产品,该计算机程序产品包括用于使计算机实现一种方法的指令,该方法包括:从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个块,以及块包括多个页面;将芯片带设置为写入状态;设置多个通道的每个通道中的写队列头;对于闪存带中的多个通道的每个通道,将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面;根据写入分配调度器,在通道间分配写入请求;生成页面写入;以及响应于所述页面写入,递增所述写队列头。
进一步的示例性实施例包括一种存储设备,包括具有写入分配调度器的多个通道、可通信地耦接到多个通道的每个通道的至少一个芯片带,所述至少一个芯片带具有空闲状态、写入状态、在线状态和擦除状态,其中,所述至少一个芯片带被配置成被从所述空闲状态设置为所述写入状态以分配写入请求,并进一步被配置成被从所述写入状态设置为所述在线状态以服务读取请求。
另外的功能和优点通过本发明的技术来实现。此处将详细描述本发明的其它实施例和方面,它们被视为所要求保护的发明的一部分。为了更好地理解具有这些优点和功能的本发明,请参阅说明和附图。
附图说明
在本说明书结尾时在权利要求书中特别指出了并明确声明了被视为本发明的主题。通过下面的结合附图对本发明进行的详细说明,可以更好地理解本发明的前述和其它特征和优点,其中:
图1示出了模拟的现有技术系统的概率密度函数相对于等待时间的图;
图2示出了模拟的现有技术系统的累积分布函数相对于等待时间的图;
图3示出了其中能够实现示例性存取争用减少方法的示例性闪存体系结构;
图4示出了显示这里所述的示例性四种状态和相应的转变的示例性状态图;
图5示出了根据示例性实施例的用于减少基于闪存的存储系统中的存取争用的方法的流程图;
图6示出了示例性无用存储单元收集方法的流程图;以及
图7示出了显示图6的进一步细节的示例性无用存储单元收集方法的流程图。
具体实施方式
在各示例性实施例中,这里所描述的系统和方法减少/消除由基于闪存的存储系统的擦除和写入延迟引起的存取争用。这里所描述的示例性实施例作为说明性示例讨论了基于闪存的存储系统。应当理解,在其它示例性实施例中,这里所描述的方法可被应用于在存取时间和阻止写入或擦除操作方面与基于闪存的存储系统具有类似属性的任何存储系统。在各示例性实施例中,基于闪存的存储设备体系结构能够提供针对读取和写入请求的严格延迟范围。另外,该体系结构提供有效的无用存储单元收集和磨损平衡,特别是对于闪存高速缓存解决方案。在各示例性实施例中,此处所描述的系统和方法通过分离读取、写入以及擦除操作,来完全隐藏来自对同一芯片的在先操作的附加延迟。为了使得对芯片的读取和写入免于由对同一个芯片的在先擦除操作引起的附加延迟,读取和写入操作只对没有发生擦除而仍提供对存储的所有信息的存取的芯片执行(即,设备的完全LBA空间)。类似地,能够实现此处所描述的方法,以保护读取操作免受对同一个芯片的在先请求的擦除和写入延迟的不利影响。在各示例性实施例中,使读取操作免受不利影响,实现了其中闪存芯片被附接到通道总线并被分组到通道之中的芯片带的体系结构。此体系结构与利用写入页面分配器和无用存储单元收集算法的基于每通道空闲块队列的写入策略组合。
诸如闪存高速缓存或SSD之类的基于闪存的存储设备包括闪存芯片被附接到的若干通道。每个通道具有管理对芯片的所有请求的低复杂度通道控制器。通道被专用通道控制器控制,所述通道控制器对芯片执行读取、写入以及擦除操作,并可能执行诸如添加或验证纠错信息的其它操作。通道控制器由主控制器控制,该主控制器执行诸如LBA到PBA映射、无用存储单元收集、空闲块和坏块管理之类的主要任务。图3示出了其中可以实现示例性存取争用减少方法的示例性闪存体系结构300。如此处所描述的,该体系结构300包括用于多个较低复杂度通道控制器310、315、320、325的主控制器305。在各示例性实施例中,主控制器305为每个通道保持一个空闲块队列和写队列头。所述空闲块队列保留能够被用于写入的所有块。所述写队列头指向当前正被写入数据的块中的第一空闲页面。如此处进一步所描述的,预先已从通道的空闲块队列中获取所述空闲块。在各示例性实施例中,每个通道控制器310、315、320、325都包括芯片的相应通道。如图所示,作为示例,控制器310控制通道1,控制器315控制通道2,控制器320控制通道C-1,而控制器325控制通道C。另外,每个通道控制器310、315、320、325都通过通道总线311、316、321、326可通信地耦接到其相应通道。每个通道还包括芯片,这些芯片被概括地示为“芯片”。在各示例性实施例中,写入模式带(例如,芯片带n)可包括写入头芯片。另外,GC带(例如,芯片带n+2)可包括无用存储单元收集器头芯片。
除通道结构之外,芯片被虚拟地分组到所谓的芯片带中,被示为芯片带1、芯片带2、芯片带n、芯片带n+1、芯片带n+2、芯片带N-1、芯片带N。如此,每个通道中的第一芯片都属于第一芯片带,依此类推。在各示例性实施例中,芯片带处于四种状态之一:在线、无用存储单元收集(GC,garbage collection)、空闲或写入状态。图4示出了示例性状态图400,示出了如此处所描述的示例性四种状态以及相应的转变。在图3所示出的示例中,芯片带1、芯片带2、芯片带N-1以及芯片带N是为读取请求实现的“在线”,芯片带n是写入模式带,芯片带n+1是空闲,而芯片带n+2处于GC状态。这些状态是说明性的,并且在其它示例性实施例中,可以预期其它状态。
在各示例性实施例中,当芯片带处于在线状态时,能够从所有其芯片中读取数据。空闲状态的芯片带保留具有所有新被擦除并准备好被写入的块的芯片。处于写入状态的芯片带包括当前正在对其写入数据的芯片。在优选实施例中,在任何时间,只有一个芯片带处于写入状态。然而,在某些情况下,如此处进一步描述的,让多于一个的芯片带处于写入状态是有意义的。
在各示例性实施例中,处于无用存储单元收集状态(GC状态)的芯片带包括当前正在被清理以便准备它们用于写入的芯片。优选地,没有多于一个的芯片带处于GC状态。因而,在任何时间,GC能够在每个通道中的单个芯片中发生。另外,可以有多于一个的芯片带处于GC状态,如果加速GC,这是期望的。处于GC状态的芯片带的数量也可以是动态的(即,自适应于工作负荷)。大量的存储空间被预留在GC状态,因此,在GC期间无法被用来存储实际数据。在各示例性实施例中,GC状态可以具有子状态,诸如“清理”和“擦除”状态。清理状态表示仍然有效的页面被移动到写入带中的新位置的状态,以及擦除状态表示在所有有效页面都被移动到新位置之后块正在被实际擦除的状态。在清理状态下,用户读取请求仍能够从芯片带服务。一旦芯片带改变为擦除状态,该芯片带上的所有数据都已被移出,以及必须从新位置供应。期望防止从处于擦除状态的带服务用户读取请求。因而,可从新位置服务读取请求。在各示例性实施例中,可在单个芯片上中断擦除,但在整个带上继续。
图5示出了根据示例性实施例的用于减少基于闪存的存储系统中的存取争用的方法500的流程图。在各示例性实施例中,当方法500开始时,所有块都是空闲的,因此,在框505,所有芯片带都处于空闲状态。在框510,在数据能够被写入设备之前,选择空闲芯片带,并设置为写入模式。例如,在框510,可以选择闪存芯片上的第一空闲芯片带,但是可以选择任何其它空闲芯片带。在框515,对于每个通道,从相应的空闲块队列中选择空闲块。在各示例性实施例中,选择每个通道的给定芯片带中的第一空闲块,但是,也可以选择给定芯片带和通道中的任何其它空闲块。在框520,对于每个通道,写队列头被设置到来自处于写入模式的芯片带的属于该通道的芯片中的第一空闲页面。在框525,方法500检查设备是否已经停止。倘若如此,则结束方法500。如果设备仍在运行,则在框530,根据写入分配调度器,在各通道间分配写入请求。在各示例性实施例中,可以实现循环调度器,该调度器在所有可用通道间均匀地分配写入工作负荷。根据期望的属性,在其它示例性实施例中,可以预见其它调度器。在框535,一旦写入了一个页面,就递增写队列头,以便将它设置到块中的下一个空闲页面。在框540,方法500检查芯片带是否已满。在芯片带已满的情况下,框545根据预先配置的值来确定是否有足够的空闲带可用。如果在框545有足够的剩余芯片带,那么,方法继续到框555。如果在框545没有足够的剩余芯片带,那么,在框550触发无用存储单元收集方法600(参见图6),以便从先前已被写入的块中的失效页面回收空间,并且方法500在框555继续。请注意,在优选实施例中,无用存储单元收集方法600独立地并与方法500并行地运行。在框555,已知当前带已满并且它被设置为在线状态。然后,在框510中,方法500选择空闲的下一个较高的芯片带。在其它示例性实施例中,对下一个写入芯片带的选择可以根据某一策略来执行。在芯片带还没有满的情况下,框560检查当前块是否已满。在块还没有满的情况下,方法500在框525继续。当块已满时,在框565,在没有足够的空闲块的情况下,在框570中,根据预定义的值触发无用存储单元收集,以及在框575,从与此通道相关联的空闲块队列中获取下一个空闲块。在各示例性实施例中,能够通过以与芯片中的块的地址相同的顺序在空闲块队列中保持块(同时去除所有的坏块),来保持空闲块队列。
在各示例性实施例中,可在最后一个空闲芯片带被改变为写入状态时触发GC,或更早地基于可配置的阈值(即,基于空闲块的总数)、系统中应当可用的空闲芯片带的数量来触发GC。在各示例性实施例中,阈值越大,储存备用的预留存储空间越高,因此,减小了可用于读取和写入的总容量。阈值可被设置为大于零,以更好地适应写入脉冲串。类似地,可在有足够的空闲页面可用时停止GC。在各示例性实施例中,可根据需要重新启动方法500。
图6示出了示例性无用存储单元收集方法600的流程图。由方法500在框550和570(参见上面的图5)中触发方法600。它首先检查GC是否已经运行。在GC已经运行的情况下,已经运行的GC方法600释放足够的空间,以及没有必要开始方法600的另一个实例。在GC没有运行的情况下,无用存储单元收集在框610开始,以及在框615停止。在方法700中描述了详细的GC方法(参见此处的图7)。在框620,在方法700结束之后,方法600检查是否有足够的空闲块和芯片带可用。如果情况不是这样的,则方法600触发另一个GC循环,方法600停止。
图7详细示出了示例性无用存储单元收集方法700的流程图。在各示例性实施例中,GC方法700在启动时选择最旧的芯片带。在框705,方法700将所选芯片带设置为清理状态。然后,方法700对于所选芯片带中的所有页面执行一系列框。在框710,方法700读取页面元数据和LBA到PBA映射信息。在框715,方法700确定页面是否仍有效。如果页面元数据和LBA到PBA映射信息表示页面仍有效,那么页面被写入到新位置。如此,如果在框715中页面仍有效,那么在框720,方法700读取完整的页面数据。在框725,方法700从写入分配调度器获取页面的目标位置。在各示例性实施例中,写入分配调度器可以分配同一个通道或另一个通道中的新位置。此外,如果通道控制器能够直接在通道中移动数据,那么优选通道控制器移动数据,因为它不消耗其它总线的资源。在框730,方法700将页面写入到新位置。如果在框715中页面不再有效,则在方法700中,不采取动作,并且稍后自动回收无效页面所占用的空间,因为无效页面不被移动,并因而稍后被擦除。在框735,该方法确定是否有剩余的页面。如果在框735有剩余的页面,那么方法700在框710继续。如果在框735没有剩余的页面,那么在框740,方法700将芯片带设置为擦除状态。在框745,方法700擦除芯片带中的所有块。在各示例性实施例中,通道控制器能够并行地执行块的擦除操作。另外,每个通道控制器都能够在后台对芯片执行块擦除,使得当块正在被擦除的同时相应的通道不被阻止。在框750,方法700将芯片带的状态改变为空闲状态。在框755,方法700确定下次将对哪个芯片带运行GC。
在各示例性实施例中,根据给定通道上芯片的数量,芯片带可被拆分成子带。另外,选择带的大小(即,同一个通道中属于同一个芯片带的芯片的数量)以影响通道带宽。当通道控制器支持对多个芯片的读取和写入操作的管线化时,特别期望带宽管理。因此,同一个通道上的多于一个的芯片可以与同一个写入带相关联。此外,对于每个芯片带状态,能够支持不同的带大小。
在各示例性实施例中,能够使得用户读取请求免于由正在进行的对同一个芯片的擦除和写入操作引起的延迟。正在被写入到写入芯片带中的用户数据被保留在主控制器的写入高速缓存中,直到完整的芯片带已被写入。然后,从写入高速缓存服务对此新写入的数据的用户读取请求,因此,消除了由于在先写入导致的潜在延迟。然而,主控制器可能需要能够保持完整芯片带的巨大的写入高速缓存,以便执行这些操作。在各示例性实施例中,为了规避巨大的写入高速缓存,可以实现两个交替的写入带。当写入高速缓存转出数据(de-stage)到闪存时,数据首先被写入到第一写入带,然后,此写入带被临时切换到在线状态,从这里,数据能够被存取。在专用映射块中保持LBA到PBA映射的更新。然后,相同数据被写入到第二写入带,以及创建包含该变化的第二LBA到PBA映射块。在写入完成之后,第二写入带被切换到在线状态(相应的LBA到PBA映射块被设置为活动)。第一芯片带被切换回写入状态,以及数据可被从写入高速缓存中转出等等。一旦写入芯片带已满,它们中的一个就被保持为在线状态,相应的LBA到PBA映射表也是如此。其它芯片带可被擦除并被设置为空闲状态或被用于冗余或并行读取(与RAID 1同理)。这种类型的操作使闪存写入的总数翻倍。
在一些配置中,单个通道上可以只有几个芯片。保持用于GC的完整芯片带在不能被用来保持用户数据的预留存储容量方面变得昂贵。在这样的配置中,将多个通道分组为通道组并将芯片带拆分为子带是有益的。因此,一个子带只包括来自单个通道组的芯片。然后,可以对子带而不是对完整的芯片带应用此处所描述的相同算法。此方法降低了擦除速度,因为更少的芯片能够被并行地擦除。然而,如果写入工作负荷不高,则可以实现此方法。因而,能够根据观察到的写入工作负荷来动态地调整子带大小。
在各示例性实施例中,如此处所描述的通道可以是物理通道,也可以是虚拟通道。若干物理通道可被分组到一个虚拟通道中。因此,此处所描述的系统和方法适用于物理和虚拟通道两者。
在各示例性实施例中,GC、空闲、在线、以及写入状态按顺序移动通过所有芯片带,这可被称为环形缓冲器。环形缓冲器体系结构具有在芯片粒度上均匀地分配块的磨损的优点,因此,由于不要求额外的磨损平衡方法而降低了方案的复杂性。在此处所描述的示例中,用于分配要被写入的页面的循环策略是能够在环形缓冲器中实现的解决方案。尽管如此,由于坏块,写队列头可能在不同通道之间变得不同步。在这样的情况下,可在循环调度器中插入额外的循环,其中仅在最前面的写队列头的头后面的队列中分配页面。
在各示例性实施例中,在可被分离成静态和动态数据的工作负荷的情况下,环形缓冲器体系结构可能导致数据在GC期间被不必要地来回移动。因而,可以实现的策略的另一个示例是基于窗口的贪婪回收策略。可以通过动态地将芯片分组为芯片带以及根据由GC保持的信息来动态地修改芯片带的大小,来调适此处所描述的方法以适合这样的基于窗口的贪婪回收策略。
技术效果包括通过分离读取、写入、以及擦除操作,来完全隐藏来自在先操作的附加延迟。此外,使得对一个芯片的读取和写入操作免于由对同一个芯片的在先擦除操作引起的附加延迟。技术效果还包括确保读取和写入操作只对没有发生擦除而仍提供对存储的所有信息的存取的芯片执行。另外,还防止读取操作受到对同一个芯片的在先请求的擦除和写入延迟的不利影响。
此处所使用的术语只是为了描述特定实施例,并不旨在对本发明作出限制。如此处所使用的,单数形式“一个”、“一”和“该”也包括复数形式,除非上下文明确地指出。还应当进一步理解,本说明中所使用的术语“包括”和/或“包含”表示陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其它特征、整数、步骤、操作、元件、组件或其组合的存在或添加。
下面的权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作以及等效物旨在包括用于与特别要求保护的其它要求保护的元件相结合地执行所述功能的任何结构、材料或动作。对本发明的描述是为了示出和描述的目的而呈现的,而不意欲是排外的或限于所公开的形式。本领域的技术人员将认识到,在不偏离本发明的范围和精神的情况下,可以进行各种修改和变化。所选择和所描述的实施例只是为了最好地说明本发明的原理和实际应用,并使本领域技术人员能够理解具有适合于预期的具体用途的各种修改的各实施例的发明。
此处所描述的流程图只是一个示例。在不偏离本发明的精神的情况下,对此处所描述的这些图或步骤(或操作)可以有许多更改。例如,可以以不同顺序执行各个步骤,也可以添加、删除或修改步骤。所有这些变化都被视为所要求保护的本发明的一部分。
尽管已经描述了本发明的优选实施例,但是,可以理解,本领域的技术人员现在和将来都可以作出在随后的权利要求书的范围内的各种改进和增强。这些权利要求应该被解释为维持对于首先描述的本发明的适当的保护。
Claims (20)
1.一种用于减少存储芯片中的存取争用的方法,所述方法包括:
从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个页面;
将所述芯片带设置为写入状态;
设置所述多个通道中的每个通道中的写队列头;
对于所述芯片带中的所述多个通道中的每个通道,
将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面;
根据写入分配调度器,在所述通道间分配写入请求;
生成页面写入;
响应于所述页面写入,递增所述写队列头;以及
当所述芯片带已满时,将所述芯片带设置为在线状态。
2.如权利要求1所述的方法,进一步包括触发无用存储单元收集。
3.如权利要求1所述的方法,其中,所述多个存储块以与所述存储芯片上的所述多个存储块的相应地址相同的顺序,被保持在所述存储芯片上的空闲块队列中。
4.如权利要求2所述的方法,其中,响应于所述芯片带是被改变为所述写入状态的最后一个空闲芯片带,触发无用存储单元收集。
5.如权利要求2所述的方法,其中,响应于达到所述存储芯片上的空闲状态芯片带的预定阈值,触发无用存储单元收集。
6.如权利要求2所述的方法,其中,响应于所述存储块变满,触发无用存储单元收集。
7.如权利要求2所述的方法,其中,无用存储单元收集包括:
将所述芯片带设置为清理状态;
对于所述多个页面中的每个页面:
读取页面元数据和LBA到PBA映射信息;
响应于所述页面有效,
读取完整的页面数据;
获取所述页面的目标位置;
将页面数据写入到新位置;
将所述芯片带设置为擦除状态;
擦除所述芯片带中的所有块;
将所述芯片带设置为空闲状态。
8.一种用于减少存储芯片中的存取争用的计算机程序产品,所述计算机程序产品包括用于使计算机实现一种方法的指令,所述方法包括:
从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个页面;
将所述芯片带设置为写入状态;
设置所述多个通道中的每个通道中的写队列头;
对于所述芯片带中的所述多个通道中的每个通道,
将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面;
根据写入分配调度器,在所述通道间分配写入请求;
生成页面写入;
响应于所述页面写入,递增所述写队列头;以及
当所述芯片带已满时,将它设置为在线状态。
9.如权利要求8所述的计算机程序产品,其中,递增所述写队列头包括:将所述写队列头设置到来自所述多个存储块的存储块中的下一个空闲页面。
10.如权利要求8所述的计算机程序产品,其中,所述方法进一步包括触发无用存储单元收集。
11.如权利要求8所述的计算机程序产品,其中,所述多个存储块以与所述存储芯片上的所述多个存储块的相应地址相同的顺序,被保持在所述存储器芯片上的空闲块队列中。
12.如权利要求10所述的计算机程序产品,其中,响应于所述芯片带是被改变为所述写入状态的最后一个空闲芯片带,触发无用存储单元收集。
13.如权利要求10所述的计算机程序产品,其中,响应于达到所述存储器设备上的空闲状态芯片带的预定阈值,触发无用存储单元收集。
14.如权利要求10所述的计算机程序产品,其中,响应于所述存储块变满,触发无用存储单元收集。
15.如权利要求10所述的计算机程序产品,其中,无用存储单元收集包括:
将所述芯片带设置为清理状态;
对于所述多个页面中的每个页面:
读取页面元数据和LBA到PBA映射信息;
响应于所述页面有效,
读取完整的页面数据;
获取所述页面的目标位置;
将页面数据写入到新位置;
将所述芯片带设置为擦除状态;
擦除所述芯片带中的所有块;
将所述芯片带设置为空闲状态。
16.一种存储系统,包括:
具有写入分配调度器的多个通道;以及
可通信地耦接到所述多个通道中的每个通道的至少一个芯片带,所述至少一个芯片带具有空闲状态、写入状态、在线状态和擦除状态,
其中,所述至少一个芯片带被配置成被从所述空闲状态设置为所述写入状态以分配写入请求,并进一步被配置成当所述芯片带已满时被从所述写入状态设置为所述在线状态。
17.如权利要求16所述的存储系统,进一步包括位于所述多个通道中的每个通道上的写队列头,
其中,对于所述芯片带中的多个通道中的每个通道,所述系统被配置成:
将所述写队列头设置到来自所述芯片带的属于相应通道的芯片中的第一空闲页面;
根据所述写入分配调度器,在所述多个通道间分配写入请求;
生成页面写入;以及
响应于所述页面写入,递增所述写队列头;以及
当所述芯片带已满时,将它设置为在线状态。
18.如权利要求17所述的存储系统,其中,所述系统进一步被配置成:响应于所述芯片带是被改变为所述写入状态的最后一个空闲芯片带以及达到所述系统中的空闲状态芯片带的预定阈值这两项中的至少一项,触发无用存储单元收集。
19.如权利要求18所述的存储系统,其中,当存储块已满并且达到所述存储系统上的空闲块的预定阈值时,触发无用存储单元收集。
20.如权利要求18所述的存储系统,其中,无用存储单元收集包括:
将所述芯片带设置为清理状态;
对于所述多个页面中的每个页面:
读取页面元数据和LBA到PBA映射信息;
响应于所述页面有效,
读取完整的页面数据;
获取所述页面的目标位置;
将页面数据写入到新位置;
将所述芯片带设置为所述擦除状态;
擦除所述芯片带中的所有块;
将所述芯片带设置为所述空闲状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/637,897 | 2009-12-15 | ||
US12/637,897 US8285946B2 (en) | 2009-12-15 | 2009-12-15 | Reducing access contention in flash-based memory systems |
PCT/IB2010/055802 WO2011073902A1 (en) | 2009-12-15 | 2010-12-14 | Reducing access contention in flash-based memory systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102713866A true CN102713866A (zh) | 2012-10-03 |
CN102713866B CN102713866B (zh) | 2015-09-30 |
Family
ID=43821825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080057092.7A Active CN102713866B (zh) | 2009-12-15 | 2010-12-14 | 减少基于闪存的存储系统中的存取争用 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8285946B2 (zh) |
EP (1) | EP2513798B1 (zh) |
JP (1) | JP5613260B2 (zh) |
CN (1) | CN102713866B (zh) |
WO (1) | WO2011073902A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN108475230A (zh) * | 2016-11-11 | 2018-08-31 | 华为技术有限公司 | 一种存储系统和系统垃圾回收方法 |
CN110515859A (zh) * | 2019-07-09 | 2019-11-29 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN111742291A (zh) * | 2018-02-07 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 具有用户空间闪存转换层的用户空间存储i/o栈的方法和系统 |
CN114072774A (zh) * | 2019-07-01 | 2022-02-18 | 国际商业机器公司 | 数据存储系统中的块模式切换 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101678868B1 (ko) * | 2010-02-11 | 2016-11-23 | 삼성전자주식회사 | 플래시 주소 변환 장치 및 그 방법 |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
JP5635200B2 (ja) * | 2011-09-30 | 2014-12-03 | 株式会社日立製作所 | 不揮発半導体記憶システム |
CN102662856B (zh) * | 2012-04-27 | 2015-10-28 | 中国科学院计算技术研究所 | 一种固态硬盘及其存取方法 |
KR102147359B1 (ko) * | 2012-06-29 | 2020-08-24 | 삼성전자 주식회사 | 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치 |
US9189389B2 (en) * | 2013-03-11 | 2015-11-17 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
US9170943B2 (en) | 2013-08-29 | 2015-10-27 | Globalfoundries U.S. 2 Llc | Selectively enabling write caching in a storage system based on performance metrics |
WO2015083225A1 (ja) * | 2013-12-02 | 2015-06-11 | 富士通株式会社 | 情報処理装置、ストレージ、及びアクセス制御方法 |
KR102161448B1 (ko) | 2014-02-03 | 2020-10-05 | 삼성전자 주식회사 | 멀티 채널 메모리를 포함하는 시스템 및 그 동작 방법 |
KR102506135B1 (ko) | 2015-03-16 | 2023-03-07 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
KR20160112135A (ko) | 2015-03-18 | 2016-09-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9811462B2 (en) | 2015-04-30 | 2017-11-07 | Toshiba Memory Corporation | Memory system executing garbage collection |
KR102417182B1 (ko) | 2015-06-22 | 2022-07-05 | 삼성전자주식회사 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
KR102445662B1 (ko) | 2015-07-01 | 2022-09-22 | 삼성전자주식회사 | 스토리지 장치 |
KR102449192B1 (ko) | 2015-09-10 | 2022-09-29 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
KR102501751B1 (ko) | 2015-09-22 | 2023-02-20 | 삼성전자주식회사 | 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 |
US20170123700A1 (en) | 2015-11-03 | 2017-05-04 | Samsung Electronics Co., Ltd. | Io redirection methods with cost estimation |
US10254998B2 (en) * | 2015-11-03 | 2019-04-09 | Samsung Electronics Co., Ltd. | Coordinated garbage collection of flash devices in a distributed storage system |
KR102013430B1 (ko) * | 2015-12-03 | 2019-08-22 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 |
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6709180B2 (ja) * | 2017-02-28 | 2020-06-10 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6765322B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10606484B2 (en) | 2017-06-23 | 2020-03-31 | Google Llc | NAND flash storage device with NAND buffer |
JP6779838B2 (ja) * | 2017-06-28 | 2020-11-04 | キオクシア株式会社 | メモリシステムおよび制御方法 |
WO2019062231A1 (zh) * | 2017-09-27 | 2019-04-04 | 北京忆恒创源科技有限公司 | 垃圾回收方法及其存储设备 |
KR102504293B1 (ko) | 2017-11-29 | 2023-02-27 | 삼성전자 주식회사 | 패키지 온 패키지 형태의 반도체 패키지 |
US10275352B1 (en) * | 2017-12-28 | 2019-04-30 | Advanced Micro Devices, Inc. | Supporting responses for memory types with non-uniform latencies on same channel |
CN111078137B (zh) * | 2019-11-07 | 2021-07-06 | 深圳市金泰克半导体有限公司 | 清理存储空间的方法 |
JP2020198128A (ja) * | 2020-08-31 | 2020-12-10 | キオクシア株式会社 | メモリシステム |
JP7132291B2 (ja) * | 2020-08-31 | 2022-09-06 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7102482B2 (ja) * | 2020-10-23 | 2022-07-19 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6069827A (en) * | 1995-09-27 | 2000-05-30 | Memory Corporation Plc | Memory system |
CN1930635A (zh) * | 2003-12-30 | 2007-03-14 | 桑迪士克股份有限公司 | 对多个区块进行适应性确定群组以成为多个多区块单元 |
US20080250270A1 (en) * | 2007-03-29 | 2008-10-09 | Bennett Jon C R | Memory management system and method |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08278916A (ja) * | 1994-11-30 | 1996-10-22 | Hitachi Ltd | マルチチャネルメモリシステム、転送情報同期化方法及び信号転送回路 |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US6985992B1 (en) | 2002-10-28 | 2006-01-10 | Sandisk Corporation | Wear-leveling in non-volatile storage systems |
WO2004040586A1 (en) | 2002-10-28 | 2004-05-13 | Sandisk Corporation | Automated wear leveling in non-volatile storage systems |
US20090204872A1 (en) | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
US7409490B2 (en) | 2006-04-15 | 2008-08-05 | Yi-Chun Liu | Method of flash memory management |
JP2007317047A (ja) * | 2006-05-29 | 2007-12-06 | Kwok-Yan Leung | マルチチャンネルのフラッシュメモリにおけるデータアクセス方法 |
US7804718B2 (en) | 2007-03-07 | 2010-09-28 | Mosaid Technologies Incorporated | Partial block erase architecture for flash memory |
CN100547566C (zh) * | 2007-06-28 | 2009-10-07 | 忆正存储技术(深圳)有限公司 | 基于多通道闪存设备逻辑条带的控制方法 |
TWI366828B (en) | 2007-09-27 | 2012-06-21 | Phison Electronics Corp | Wear leveling method and controller using the same |
US8762620B2 (en) | 2007-12-27 | 2014-06-24 | Sandisk Enterprise Ip Llc | Multiprocessor storage controller |
US8566508B2 (en) * | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
-
2009
- 2009-12-15 US US12/637,897 patent/US8285946B2/en active Active
-
2010
- 2010-12-14 EP EP10809086.1A patent/EP2513798B1/en active Active
- 2010-12-14 CN CN201080057092.7A patent/CN102713866B/zh active Active
- 2010-12-14 JP JP2012543970A patent/JP5613260B2/ja active Active
- 2010-12-14 WO PCT/IB2010/055802 patent/WO2011073902A1/en active Application Filing
-
2012
- 2012-08-01 US US13/563,947 patent/US8725957B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6069827A (en) * | 1995-09-27 | 2000-05-30 | Memory Corporation Plc | Memory system |
CN1930635A (zh) * | 2003-12-30 | 2007-03-14 | 桑迪士克股份有限公司 | 对多个区块进行适应性确定群组以成为多个多区块单元 |
US20080250270A1 (en) * | 2007-03-29 | 2008-10-09 | Bennett Jon C R | Memory management system and method |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN106528438B (zh) * | 2016-10-08 | 2019-08-13 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN108475230A (zh) * | 2016-11-11 | 2018-08-31 | 华为技术有限公司 | 一种存储系统和系统垃圾回收方法 |
CN111742291A (zh) * | 2018-02-07 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 具有用户空间闪存转换层的用户空间存储i/o栈的方法和系统 |
CN111742291B (zh) * | 2018-02-07 | 2024-04-05 | 阿里巴巴集团控股有限公司 | 具有用户空间闪存转换层的用户空间存储i/o栈的方法和系统 |
CN114072774A (zh) * | 2019-07-01 | 2022-02-18 | 国际商业机器公司 | 数据存储系统中的块模式切换 |
CN110515859A (zh) * | 2019-07-09 | 2019-11-29 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN110515859B (zh) * | 2019-07-09 | 2021-07-20 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2513798B1 (en) | 2019-10-23 |
CN102713866B (zh) | 2015-09-30 |
EP2513798A1 (en) | 2012-10-24 |
JP5613260B2 (ja) | 2014-10-22 |
JP2013513881A (ja) | 2013-04-22 |
WO2011073902A1 (en) | 2011-06-23 |
US20110145475A1 (en) | 2011-06-16 |
US8285946B2 (en) | 2012-10-09 |
US20120297128A1 (en) | 2012-11-22 |
US8725957B2 (en) | 2014-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102713866B (zh) | 减少基于闪存的存储系统中的存取争用 | |
JP7366795B2 (ja) | メモリシステムおよび制御方法 | |
US8171239B2 (en) | Storage management method and system using the same | |
US9336133B2 (en) | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory | |
US9223693B2 (en) | Memory system having an unequal number of memory die on different control channels | |
US9734911B2 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US9734050B2 (en) | Method and system for managing background operations in a multi-layer memory | |
US9465731B2 (en) | Multi-layer non-volatile memory system having multiple partitions in a layer | |
US8873284B2 (en) | Method and system for program scheduling in a multi-layer memory | |
US9348746B2 (en) | Method and system for managing block reclaim operations in a multi-layer memory | |
TWI421877B (zh) | 平衡主機寫入作業和快取清除之方法和系統 | |
EP3176688B1 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
KR101269366B1 (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
US10089234B2 (en) | Disk cache allocation | |
US9582433B2 (en) | Disk array flushing method and disk array flushing apparatus | |
US20120102242A1 (en) | Controlling data destaging within a multi-tiered storage system | |
KR102347841B1 (ko) | 메모리제어장치 및 메모리제어장치의 동작 방법 | |
CN105630403A (zh) | 文件存储系统及其文件存储控制方法与装置 | |
KR20190003369A (ko) | 저장 디바이스의 서비스 품질 향상 | |
JP6730344B2 (ja) | キャッシュ装置およびキャッシュ装置の制御方法 | |
KR100962186B1 (ko) | 초저전력 스토리지 시스템 및 그의 데이터 관리방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |