CN101782872A - 使用固态盘的缓存系统和方法 - Google Patents
使用固态盘的缓存系统和方法 Download PDFInfo
- Publication number
- CN101782872A CN101782872A CN201010004034A CN201010004034A CN101782872A CN 101782872 A CN101782872 A CN 101782872A CN 201010004034 A CN201010004034 A CN 201010004034A CN 201010004034 A CN201010004034 A CN 201010004034A CN 101782872 A CN101782872 A CN 101782872A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- data
- subclass
- module
- physical location
- 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
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
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了使用固态盘的缓存系统和方法。一种包括控制模块、位置描述模块和页面失效模块的系统。所述控制模块配置成将从主机接收到的数据写入存储介质,从所述存储介质读数据,以及将来自所述主机和所述存储介质中的至少一个的数据缓存到闪存中。所述位置描述模块配置成将有效和无效状态之一映射到所述闪存中的数据子集的物理位置。所述页面失效模块配置成从所述主机和所述控制模块之一接收命令,该命令包括对应所述子集的地址以及将所述物理位置的状态设置为无效状态的指令。所述页面失效模块还配置成响应所述命令,将所述物理位置的状态设置为无效状态。
Description
与相关申请的交叉引用
本申请要求于2009年1月16日提交的美国临时申请第61/145,369号的权益。上述申请的全部内容通过引用而并入此处。
技术领域
本公开涉及缓存系统,以及更特别地涉及使用闪存的缓存系统。
背景技术
此处提供的背景描述的目的在于一般地提出本公开的环境。目前命名发明人的工作,在此背景部分描述的工作的程度上,以及所描述的方面可能不像提交时的现有技术一样获得承认,当现有技术与本公开对立时,本公开不明确也不暗示承认。
现在参考图1,主机系统102可通过缓存系统106与存储设备104通信。主机系统102可包括计算机系统,比如个人计算机、消费类电子设备等。存储设备104可包括硬盘驱动器(HDD)。
缓存系统106可作为存储主机系统102从存储设备104频繁存取的数据的临时存储区域。主机系统102可比从存储设备104更快地从缓存系统106存取数据。因此,当主机系统102重复存取存储在缓存系统106中的数据时,缓存系统106可减少存取时间。然而,当主机系统102要求的数据没有存储在缓存系统106中时,缓存系统106可不减少存取时间。
缓存系统106包括控制模块108和缓存存储器110。控制模块108从/向缓存存储器110和存储设备104读/写数据。主机系统102通过控制模块108向存储设备104请求数据。控制模块108从缓存存储器110和存储设备104之一检索所请求的数据并将所请求的数据发送给主机系统102。
控制模块108确定所请求的数据是否存储在缓存存储器110中。当控制模块108确定缓存存储器110包括所请求的数据时,控制模块108可从缓存存储器110检索所请求的数据。
当缓存存储器110没有包括所请求的数据时,控制模块108可从存储设备104检索所请求的数据。当缓存存储器110没有包括所请求的数据时,控制模块108可将从存储设备104检索到的数据存储在缓存存储器110中。
控制模块108可比从存储设备104更快地从缓存存储器110中检索所请求的数据。例如,当缓存存储器110是动态随机存取存储器(DRAM)并且存储设备104是HDD时,控制模块108可比HDD更快地访问DRAM。因此,对主机系统102,缓存系统106可起到减小数据检索时间的作用。
主机系统102可命令写入缓存存储器110和存储设备104中的至少一个。控制模块108可响应写命令而将数据写入缓存存储器110,随后将数据写入存储设备104。因此,当主机系统102命令写入存储设备104时,缓存系统106可作为缓冲器。控制模块108也可以响应于写命令并行地将数据都写入存储设备104和缓存存储器110。因此,缓存系统106可将写入存储设备104的数据缓存到缓存存储器110中。
发明内容
系统包括控制模块、位置描述模块和页面失效模块。所述控制模块配置成将从主机系统接收到的数据写入存储介质,从所述存储介质读取数据,以及将来自所述主机系统和所述存储介质中的至少一个的数据缓存到闪存中。所述位置描述模块配置成将有效状态和无效状态之一映射到所述闪存中的数据子集的物理位置。所述页面失效模块配置成接收命令,所述命令包括对应于所述子集的地址和将所述子集的物理位置的状态设置为无效状态的指令。所述页面失效模块还配置成响应于所述命令而将所述子集的物理位置的状态设置为所述无效状态。所述命令接收自所述主机系统和所述控制模块之一。
在其他特征中,所述存储介质包括磁性存储介质和光存储介质之一。
在其他特征中,所述闪存包括NAND闪存。
在其他特征中,所述系统还包括位置映射模块,所述位置映射模块配置成将所述子集的物理位置映射到逻辑地址。所述逻辑地址对应于所述存储介质上的物理位置。
在其他特征中,所述位置映射模块包括使所述子集的物理位置与所述逻辑地址相关的映射。当所述页面失效模块将所述子集的物理位置的状态设置为所述无效状态时,所述位置映射模块更新所述映射以指示没有数据存储在所述逻辑地址处。
在其他特征中,所述系统还包括碎片整理模块,所述碎片整理模块配置成对包括所述子集的所述闪存的块进行碎片整理。所述页面失效模块响应于所述命令而将所述子集的物理位置的所述状态设置为所述无效状态。
在又一些其他特征中,一种方法包括:将从主机系统接收到的数据写入存储介质,从所述存储介质读取数据,以及将来自所述主机系统和所述存储介质中的至少一个的数据缓存到闪存中。所述方法还包括:将有效状态和无效状态之一映射到所述闪存中的数据的子集的物理位置。所述方法还包括:接收命令,所述命令包括对应于所述子集的地址和将所述子集的物理位置的状态设置为所述无效状态的指令。此外,所述方法包括:响应于所述命令而将所述子集的物理位置的所述状态设置为所述无效状态。所述命令接收自所述主机系统和控制模块之一。
在其他特征中,所述方法包括:从磁性存储介质和光存储介质之一读取数据。
在其他特征中,所述方法包括:将数据从所述主机系统和所述存储介质中的至少一个缓存到NAND闪存中。
在其他特征中,所述方法包括:将所述子集的物理位置映射到对应于所述存储介质上的物理位置的逻辑地址。
在其他特征中,所述方法包括:当将所述子集的物理位置的所述状态设置为所述无效状态时,更新映射以指示没有数据存储在所述逻辑地址处。
在其他特征中,所述方法包括:对包括所述子集的所述闪存的块进行碎片整理,以及响应于所述命令而将所述子集的物理位置的所述状态设置为所述无效状态。
在又一些其他特征中,上述系统和方法由一个或多个处理器执行的计算机程序实现。所述计算机程序可存在于计算机可读介质上,比如但不限于存储器、非易失性数据存储器和/或其它合适的有形存储介质。
根据详细描述、权利要求以及附图,本公开的适用性的更多方面将变得明显。详细描述和特定例子仅是用于说明的目的,而不是用来限制本公开的范围。
附图说明
从详细描述以及附图,本公开将被更全面地理解,其中:
图1是缓存系统的功能框图;
图2是闪存系统的功能框图;
图3是包括闪存(flash)管理模块的闪存系统的功能框图;
图4是闪存的块和页面布置的图示;
图5A是闪存的逻辑块地址(LBA)到物理位置映射的图示;
图5B是闪存的物理位置描述表的图示;
图6是根据本公开的闪存缓存系统的功能框图;
图7是根据本公开的包括页面失效模块的闪存缓存系统的功能框图;
图8是缓存地址表的图;以及
图9示出了根据本公开的用于使闪存的物理位置失效的方法。
具体实施方式
下面的详述在性质上仅是示范性的,且绝不是为了限制本公开、其应用或用途。为了清楚,图中将使用相同的标号来标识相同的元件。如此处所使用的,词组“A、B和C中的至少一个”将被使用非排他性的逻辑或(OR)而被解释为表述逻辑(A或B或C)。应当理解,方法中的步骤可以以不同顺序执行而不改变本公开的原理。
如此处所使用的,术语模块可以指,部分的或者包括专用集成电路(ASIC)、电子电路、处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组),来执行一个或多个软件或固件程序、组合逻辑电路和/或其他提供所描述功能的合适的组件。
现在参考图2,主机系统102可通过接口101与闪存系统202通信。主机系统102可包括计算机、多媒体设备、移动计算设备等。例如,接口101可包括高级技术附接(ATA)接口、串行ATA(SATA)接口等。
闪存系统202包括闪存管理模块206、存储器208和闪存210。主机系统102通过闪存管理模块206从/向闪存210读/写数据。主机系统102可使用逻辑块寻址(LBA)方案与闪存管理模块206通信。LBA方案中指定的地址可被称为“逻辑地址”。此外,主机系统102可在逻辑地址上、从闪存210请求数据。例如,逻辑地址可记为LBA 1、LBA 2等。
闪存210可包括多个闪存芯片211。闪存210可包括与非(NAND)闪存和或非(NOR)闪存中的至少一种。闪存管理模块206从/向闪存210读/写数据。此外,闪存管理模块206在闪存210上执行其他操作。其他操作可包括擦除闪存210的某些部分和对闪存210进行碎片整理(defragment)。
当擦除闪存210和当整理闪存210的碎片时,闪存管理模块206可将数据从闪存210存储到存储器208中。闪存管理模块206可将数据缓冲在存储器208中。例如,闪存管理模块206可在存储器208中缓冲要被写入闪存210中的数据。闪存管理模块206也可在存储器208中缓冲从闪存210读取的数据,该数据随后被转移到主机系统102中。
现在参考图3,闪存管理模块206包括闪存控制模块302、读/写(R/W)模块304、擦除模块306、位置映射模块308、位置描述模块310和碎片整理模块312。
闪存控制模块302向/从主机系统102发送/接收数据。闪存控制模块302指示读/写(R/W)模块304从/向闪存210读/写数据。闪存控制模块302指示擦除模块306从闪存210擦除数据。闪存控制模块302指示位置映射模块308将逻辑地址映射到闪存210中的数据的物理位置。闪存控制模块302指示位置描述模块310映射闪存210中的数据的有效性。闪存控制模块302通过碎片整理模块312执行闪存210上的碎片整理操作。
现在参考图4,示出了闪存210的块和页面布置的示范性图示。闪存210包括n个擦除块(下文简称“块”)。每个块包括m个页面。仅举例,块的大小可以为256KB到512KB以及页面大小可以为4KB。因此,块可包括64-128个页面。
擦除模块306以块为单位从闪存210中擦除数据。例如,当从闪存210中擦除数据时,擦除模块306擦除一个或多个块。
读/写模块304以页面为单位从/向闪存210读/写数据。因此,当从/向闪存210读/写数据时,读/写模块304从/向一个或多个页面读/写数据。读/写模块304可在页面擦除后向该页面写数据。当页面包括先前写入的数据时,直到擦除模块306擦除页面后,读/写模块304才能向该页面写数据。
在擦除模块306擦除块后,读/写模块304可最初顺序地向块中的页面写入。例如,在块1被擦除后,读/写模块304可自块1的页面1开始向闪存210写数据,并且向每个连续页面写数据,直到块1的页面m。
读/写模块304可不向块中包括数据的页面之前的块中页面写数据。例如,当块的页面20中已写入数据时,读/写模块304可不向块内的页面1-19写入。然而,读/写模块304可在擦除模块306擦除包括页面1-19的块之后,写入页面1-19。
回到参考图3,位置映射模块308包括LBA到物理位置映射(下文简称“位置映射”)。位置映射可将逻辑地址与闪存210中的物理位置相关联。例如,位置映射将逻辑地址与闪存210的块编号和页面编号相关联。
当读/写模块304向闪存210写数据时,位置映射模块308更新位置映射。闪存控制模块302可接收向先前已被写入的逻辑地址写数据的命令。也就是说,闪存控制模块302可接收向同一逻辑地址写入的多个命令。由于在没有首先擦除已写入数据时,读/写模块304不能覆写已被写入的物理位置处的数据,读/写模块304向新的物理位置写数据。位置映射模块308更新位置映射以包括对应逻辑地址的新的物理位置。
为更明确地描述向闪存210写数据的过程,向逻辑地址K写新数据可执行如下。闪存控制模块302接收主机系统102的向LBA K写数据的命令。闪存控制模块302指示读/写模块304向闪存210中的物理位置X写数据。例如,X可以是闪存控制器210中的下一个可用的物理位置。之后读/写模块304写入物理位置X。之后位置映射模块308更新位置映射以使LBA K与物理位置X相关联。因此,当闪存控制模块302从主机系统102接收从LBA K读取的要求时,闪存控制模块302通过读/写模块304从闪存210的物理位置X处读取。
现在参考图5A,示出了位置映射的一个实施方式。位置映射将LBA1与(块3,页面20)的物理位置相关联。位置映射将LBA 2与“无数据”相关联。例如,“无数据”可指示主机系统102尚未向LBA 2写数据和/或LBA 2不包括数据。
回到参考图3,位置描述模块310包括物理位置描述表(下文简称“描述表”)。描述表指示了物理位置处的数据的状态。数据的状态可以是有效状态和无效状态之一。也就是说,描述表指示了写在闪存210的物理位置处的数据是有效还是无效。可以以页面为单位指示数据有效/无效。
最初写入对应一逻辑地址的(即,擦除之后的)页面的数据可以在描述表中被指示为有效。当新的数据写入对应同一个逻辑地址的新的物理位置时,位置描述模块310更新该描述表,以指示新的物理位置有效以及旧的物理位置无效。
在对同一个逻辑地址的连续写入之后更新描述表可执行如下。读/写模块304对应逻辑地址向物理位置写数据。该物理位置处的数据在描述表中可最初被设置为有效。随后,当读/写模块304对应同一个逻辑地址在新的物理位置处写新的数据时,新的物理位置处的数据在描述表中被设置为有效。之后,先前物理位置处的数据被设置为无效。
现在参考图5B,示出了描述表的一个实施方式。描述表指示物理位置(块1,页面1)处的数据无效。也就是说,描述表将无效状态映射到物理位置(块1,页面1)。描述表指示物理位置(块3,页面20)处的数据有效。也就是说,描述表将有效状态映射到物理位置(块3,页面20)处。
回到参考图3,由于读/写模块304不能覆写先前已写的页面,读/写模块304可能用完物理位置而无法在闪存210中写数据。闪存管理模块206整理闪存210的碎片以释放闪存210中的物理位置以进行写入。闪存管理模块206可基于闪存210的块内的无效页面的编号释放物理位置。
闪存管理模块206整理闪存210的碎片以释放至少一个块。碎片整理模块312可基于每个块内的一定数量的无效页面选择进行碎片整理的块组。因此,碎片整理模块312可选择共同包括大于或等于一个块的一定数量的无效页面(比如m个页面)的块组。例如,当块包括m个页面时,碎片整理模块312选择共同包括m个或更多个无效页面的块组。
闪存210的碎片整理可包括如下操作。碎片整理模块312基于每个块中的一定数量的无效页面选择块组进行碎片整理。例如,碎片整理模块312选择具有最多无效页面的块以形成块组。闪存控制模块302通过读/写模块304从闪存210中所选择的块组读取有效页面。闪存控制模块302从块组向存储器208写有效页面。在读/写模块304向存储器208写有效页面后,擦除模块306擦除该块组。
读/写模块304将有效页面写入闪存210中的已擦除的块组。例如,读/写模块304可顺序地将有效页面写入闪存210。由于块组中的无效页面的数目大于m,闪存210在碎片整理操作后可包括一个或多个已完全擦除的块。位置映射模块308在碎片整理操作后更新位置映射。位置描述模块310在碎片整理操作后更新描述表。
用于执行碎片整理操作的时间和资源可取决于闪存210中的无效页而的数目。通常,碎片整理过程涉及在闪存210和存储器208之间转移较多的有效页面,这需要比转移较少有效页面的时间和资源更多。因此,闪存210中的每个块的更多的无效页面可导致使用更少时间和资源的更优化的碎片整理操作。
也就是说,闪存210中的更多无效页面可导致如下的碎片整理操作,其包括较少地搜索包括最多无效页面,以及在闪存210和存储器208之间的更少的数据转移。在某些情况下,单个的块可包括所有无效页面,允许擦除该块而无任何数据转移。在某些情况下,例如,当有两个块每个块包括m/2个无效页面时,碎片整理操作可通过只对两个块进行碎片整理释放单个块。
闪存210的碎片整理可以是影响作为缓存存储器的闪存210的性能的存储器密集处理。也就是说,碎片整理使用资源对闪存210中的数据重新排序,而不提高主机系统102接收所请求的数据的速度。
根据本公开的闪存缓存系统使闪存210的页面失效,以减少用于执行碎片整理操作的时间和资源。闪存缓存系统可因此减小用于执行碎片整理操作的时间和资源的总量。
现在参考图6,在闪存缓存系统600中实现闪存系统202。闪存缓存系统600包括硬盘驱动组件(HDA)601和硬盘驱动器控制系统602。HDA 601包括磁介质603,例如,一个或多个存储数据的磁盘,以及读/写设备604。尽管闪存缓存系统600包括作为存储设备的HDA 601,但是,可用其它存储设备代替HDA 601。例如,可用光存储设备代替HDA 601。
布置在致动器臂605上的读/写设备604在磁介质603上读数据和写数据。HDA601包括使磁介质603旋转的主轴马达606和驱动致动器臂605的音圈马达(VCM)607。
硬盘驱动器控制系统602包括前置放大器608。前置放大器608在读操作中放大由读/写设备604产生的信号,并在写操作中向读/写设备604提供信号。硬盘驱动器控制系统602还包括读/写(R/W)通道模块609、硬磁盘控制器(HDC)模块610、缓冲器611、闪存系统202和主轴/VCM驱动模块614。
R/W通道模块609处理从前置放大器608接收到的数据以及向前置放大器608传送的数据。HDC模块610控制HDA 601的部件并通过接口101与主机系统102通信。
HDC模块610可从HDA 601、R/W通道模块609、缓冲器611、闪存系统202、主轴/VCM驱动模块614和/或接口101接收数据。HDC模块610可对数据进行处理,包括编码、解码、滤波和/或格式化数据。处理后的数据可向HDA601、R/W通道模块609、缓冲器611、闪存系统202、主轴/VCM驱动模块614和/或接口101输出。
HDC模块610可使用缓冲器611和/或闪存系统202来存储与闪存缓存系统600的控制和操作有关的数据。缓冲器611可包括动态随机存储器(DRAM)、同步动态随机存储器(SDRAM)等。主轴/VCM驱动模块614控制主轴马达606和VCM 607。硬盘驱动器控制系统602包括供电电源616,其向闪存缓存系统600的组件供电。
HDC模块610从/向闪存210和HDA 601读/写数据。主机系统102可通过HDC模块610向HDA 601请求数据。例如,主机系统102可使用逻辑块寻址方案向HDA 601请求数据。HDC模块610可从闪存210和HDA601之一接收所请求的数据,并向主机系统102发送所请求的数据。
由于闪存缓存系统600在闪存210中缓存数据,因此闪存缓存系统600的闪存210可被称为缓存存储器。例如,闪存缓存系统600可在闪存210中缓存从HDA 601读取的数据,或缓存写入HDA 601的数据。
现在参考图7,功能框图示出HDC模块610、闪存管理模块206、主机系统102和HDA 601之间的交互。HDC模块610包括缓存控制模块702、内容确定模块704和页面失效模块706。缓存控制模块702根据缓存操作控制主机系统102、闪存210和HDA 601之间的数据传输。缓存控制模块702通过闪存控制模块302控制到/来自闪存210的数据传输。内容确定模块704确定什么逻辑地址被存储在闪存210中。页面失效模块706可例如根据缓存操作在描述表中将闪存210的物理位置的状态设置为无效的。
内容确定模块704确定闪存210是否包括主机系统102请求的在逻辑地址处的数据。当闪存210包括请求的在逻辑地址处的数据时,缓存控制模块702可从闪存210取回所请求的数据。
在一些实现方式中,内容确定模块704包括缓存地址表,其包括存储在闪存210中的逻辑地址。缓存地址表使存储在闪存210中的逻辑地址与闪存210的物理位置(例如,块偏移)相关。
在一些实现方式中,内容确定模块704可使用缓存地址表来确定闪存210中与逻辑地址相对应的物理位置。在其它实现方式中,内容确定模块704可根据在图5A和5B中示出的位置映射和描述图来确定逻辑地址是否存储在闪存210中,且逻辑地址存储在闪存210中的什么地方。因此,缓存地址表可结合或代替位置映射和描述图使用,以确定逻辑地址存储在闪存的什么地方。当新的信息被写到闪存210和从闪存210擦除时,内容确定模块704更新缓存地址表以反映存储在闪存210中的数据。
现在参考图8,示例性缓存地址表使逻辑地址与闪存210中的缓存的数据的位置相关。缓存块偏移列可指示闪存210中的数据的物理位置。例如,该表指示逻辑地址LBA 10位于缓存块偏移32的物理位置处。
回来参考图7,当闪存210不包括所请求的数据时,缓存控制模块702从HDA 601取回所请求的数据。当闪存不包括所请求的数据时,缓存控制模块702可将从HDA 601取回的数据存储在闪存210中。当从HDA601取回的数据存储在闪存210中时,位置映射模块308更新位置映射,位置描述模块310更新描述表,而内容确定模块704更新缓存地址表。
换句话说,当缓存控制模块702可将数据从HDA 601传输到主机系统102时,缓存控制模块702可将数据写到闪存210。因此,当缓存控制模块702接收对来自闪存210不包括的逻辑地址的数据的请求时,缓存控制模块702可将来自HDA 601的数据“缓存数据”在闪存210中。在一些实现方式中,缓存控制模块702除了缓存附近逻辑地址的数据以外,还缓存来自闪存210不包括的逻辑地址的数据。
闪存缓存系统600可比HDA 601更快地从闪存210取回所请求的数据。例如,当闪存210包括NAND闪存时,NAND闪存在随机读取期间可比HDA 601被更快地存取。因此,当主机系统102从HDA 601请求数据时,闪存缓存系统600起作用来减少主机系统102的数据取回时间。
主机系统102可命令到闪存210和HDA 601中的至少一个的写入。缓存控制模块702在接收写入命令时可将数据写到HDA 601并将数据存储在闪存210中。因此,闪存缓存系统600缓存被写到HDA 601的数据。缓存控制模块702可将数据写到闪存210并接着在以后的时间将数据写到HDA601。因此,当主机系统102命令到HDA 601的写入时,闪存缓存系统600可充当缓冲器。
缓存控制模块702根据各种缓存操作将数据写到闪存210。页面失效模块706根据各种缓存操作在描述表中将闪存的物理位置的状态设置为无效的。换句话说,页面失效模块706根据缓存操作使闪存210的物理位置无效。页面失效模块706使描述表中的物理位置无效,以减少用于执行碎片整理操作的时间和资源。
在一些实现方式中,页面失效模块706根据来自主机系统102的命令使描述表中的物理位置无效。例如,主机系统102可通过缓存控制模块702命令页面失效模块706使描述表中的物理位置无效。该命令可包括与要无效的数据相对应的地址(例如,LBA)和使数据无效的指令。页面失效模块706向应于该命令使数据无效。主机系统102可根据在主机系统102执行的缓存操作来命令页面失效模块706使描述表中的物理位置无效。
页面失效模块706以下列方式使相应于逻辑地址的物理位置无效。页面失效模块706根据位置映射确定相应的逻辑地址的物理位置。页面失效模块706接着在描述表中将物理位置的状态设置为无效的。位置映射模块308接着以“无数据”标记位置映射中的相应的逻辑地址。
页面失效模块706使位置描述表中的页无效,以便增加包括在闪存210中的无效页面的数量。因此,页面失效模块706通过增加闪存210中无效页面的数量而减少了在碎片整理操作期间使用的资源的量。
通常,缓存操作是包括确定哪些数据将存储在闪存210中以及哪些数据将从闪存210中擦除的操作。因为数据以块的单位被擦除且数据可按页面的单位被写入,当缓存控制模块702根据缓存操作确定了页面应从闪存210移除时,缓存控制模块702可以不擦除页面。替代地,缓存控制模块702命令页面失效模块706使页面失效,以便失效的页面可以后在碎片整理操作期间被擦除。
下文描述了各种缓存操作。缓存控制模块702可执行先进先出(FIFO)缓存操作,其中缓存控制模块702用较新的数据代替闪存210中最旧的数据。例如,缓存控制模块702可命令页面失效模块706使闪存210中最旧的数据无效。缓存控制模块702可接着擦除失效的数据以在闪存210中为较新的数据腾出空间。
缓存控制模块702可执行最近最少使用的(LRU)缓存操作,其中缓存控制模块702丢弃最近最少使用的来自闪存210的数据。例如,缓存控制模块702可命令页面失效模块706使最近最少使用的来自闪存210的数据失效,所以最近最少使用的数据可被从闪存210中擦除。
缓存控制模块702可执行最不经常使用的(LFU)缓存操作,其中缓存控制模块702丢弃最不经常使用的来自闪存210的数据。例如,缓存控制模块702可命令页面失效模块706使最不经常使用的来自闪存210的数据失效,所以最不经常使用的数据可被从闪存210中擦除。
当HDC模块610执行缓存操作中之一以便使数据失效并将数据写入闪存210中时,位置映射模块308、位置描述模块310和内容确定模块704相应地更新相应的表。虽然上面描述了FIFO、LRU和LFU缓存操作,但是缓存控制模块702可执行其它缓存操作,以确定使哪些物理位置无效。
在一些情况下,闪存210可能耗尽了数据将被写入的物理位置。当没有要写入的更多可用页面或可用页面的数量小于阈值量时,缓存控制模块702可确定闪存210是满的。缓存控制模块702可接着指示页面失效模块706使闪存210的物理位置失效。
现在参考图9,用于使闪存的物理位置失效的方法在900开始。在900,R/W模块304将数据写到闪存210。在902,位置映射模块308根据被写到闪存210的数据来更新位置映射。在904,位置描述模块310根据被写到闪存210的数据来更新描述表。在906,缓存控制模块702根据缓存操作确定是否使数据无效。如果在906的结果为假,则该方法重复906。如果在906的结果为真,则该方法在908继续进行。在908,缓存控制模块702命令页面失效模块706使数据无效。在910,页面失效模块706确定要无效的数据的物理位置(例如,根据位置映射)。在912,页面失效模块706在描述表中将数据的状态设置为无效的,以使数据无效。在914,位置映射模块308更新位置映射以指示物理位置包括“无数据”。
本公开的广泛教导可按各种形式实现。因此,虽然本公开包括特定的例子,但本公开的真实范围不应被如此限制,因为当研究附图、说明书和下列权利要求时,其它更改将变得明显。
Claims (16)
1.一种系统,其包括:
控制模块,其配置成将从主机系统接收到的数据写入存储介质,从所述存储介质读取数据,以及将数据从所述主机系统和所述存储介质中的至少一个缓存到闪存中;
位置描述模块,其配置成将有效状态和无效状态之一映射到所述闪存中的数据的子集的物理位置;以及
页面失效模块,其配置成:
接收命令,所述命令包括对应于所述子集的地址和将所述子集的物理位置的状态设置为所述无效状态的指令;以及
响应于所述命令来将所述子集的所述物理位置的所述状态设置为所述无效状态,其中所述命令接收自所述主机系统和所述控制模块之一。
2.如权利要求1所述的系统,其中所述存储介质包括磁性存储介质和光存储介质之一。
3.如权利要求1所述的系统,其中所述闪存包括NAND闪存。
4.如权利要求1所述的系统,其中所述子集的所述物理位置对应于所述闪存的块和页面。
5.如权利要求1所述的系统,还包括位置映射模块,所述位置映射模块配置成将所述子集的所述物理位置映射到逻辑地址,其中所述逻辑地址对应于所述存储介质上的物理位置。
6.如权利要求5所述的系统,其中所述位置映射模块包括使所述子集的所述物理位置与所述逻辑地址相关的映射,且其中当所述页面失效模块将所述子集的所述物理位置的所述状态设置为所述无效状态时,所述位置映射模块更新所述映射以指示没有数据存储在所述逻辑地址处。
7.如权利要求1所述的系统,还包括碎片整理模块,所述碎片整理模块被配置为对包括所述子集的所述闪存的块进行碎片整理,其中所述页面失效模块响应于所述命令而将所述子集的所述物理位置的所述状态设置为所述无效状态。
8.如权利要求7所述的系统,其中所述子集是第一子集,其中所述块包括数据的第二子集和数据的第三子集,其中对应于所述第二子集和所述第三子集的物理位置各自具有所述有效状态,且其中所述碎片整理模块在对所述块进行碎片整理时擦除所述第一子集并将所述第二子集和所述第三子集写到新的物理位置。
9.如权利要求1所述的系统,其中当从所述主机系统接收所述命令时,所述地址是逻辑块地址。
10.如权利要求1所述的系统,其中所述控制模块是硬盘控制模块,且所述存储介质是硬盘驱动器。
11.一种方法,包括:
将从主机系统接收到的数据写入存储介质;
从所述存储介质中读取数据;
将来自所述主机系统和所述存储介质中的至少一个的数据缓存到闪存中;
将有效状态和无效状态之一映射到所述闪存中的数据的子集的物理位置;
接收命令,所述命令包括对应于所述子集的地址和将所述子集的所述物理位置的状态设置为所述无效状态的指令;以及
响应于所述命令而将所述子集的所述物理位置的所述状态设置为所述无效状态,其中所述命令从所述主机系统和控制模块之一接收。
12.如权利要求11所述的方法,其中所述存储介质包括磁性存储介质和光存储介质之一。
13.如权利要求11所述的方法,其中所述闪存包括NAND闪存。
14.如权利要求11所述的方法,还包括:将所述子集的所述物理位置映射到逻辑地址,其中所述逻辑地址对应于所述存储介质上的物理位置。
15.如权利要求14所述的方法,还包括:当将所述子集的所述物理位置的所述状态设置为所述无效状态时,更新一映射以指示没有数据存储在所述逻辑地址处,其中所述映射使所述子集的所述物理位置与所述逻辑地址相关。
16.如权利要求11所述的方法,还包括:
对包括所述子集的所述闪存的块进行碎片整理;以及
响应于所述命令来将所述子集的所述物理位置的所述状态设置为所述无效状态。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14536909P | 2009-01-16 | 2009-01-16 | |
US61/145,369 | 2009-01-16 | ||
US12/685,909 | 2010-01-12 | ||
US12/685,909 US20100185806A1 (en) | 2009-01-16 | 2010-01-12 | Caching systems and methods using a solid state disk |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101782872A true CN101782872A (zh) | 2010-07-21 |
Family
ID=42337855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010004034A Pending CN101782872A (zh) | 2009-01-16 | 2010-01-18 | 使用固态盘的缓存系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100185806A1 (zh) |
CN (1) | CN101782872A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102870100A (zh) * | 2012-06-30 | 2013-01-09 | 华为技术有限公司 | 数据缓存装置、数据存储系统及方法 |
CN103324581A (zh) * | 2012-03-23 | 2013-09-25 | 群联电子股份有限公司 | 编程存储单元与数据读取方法、存储器控制器与储存装置 |
CN103543955A (zh) * | 2013-08-05 | 2014-01-29 | 记忆科技(深圳)有限公司 | 利用固态硬盘作为设备读缓存的方法、系统及固态硬盘 |
CN103677670A (zh) * | 2013-12-11 | 2014-03-26 | 华为技术有限公司 | 读数据的方法及装置 |
CN103744611A (zh) * | 2013-12-17 | 2014-04-23 | 记忆科技(深圳)有限公司 | 基于固态硬盘为缓存的计算机系统及缓存加速方法 |
CN106873905A (zh) * | 2016-12-30 | 2017-06-20 | 北京联想核芯科技有限公司 | 数据存储的方法、装置及固态硬盘 |
CN106936914A (zh) * | 2017-03-16 | 2017-07-07 | 宿州学院 | 一种基于节点位移和lfu记录的缓存更新方法及网络 |
CN108304139A (zh) * | 2017-01-11 | 2018-07-20 | 中兴通讯股份有限公司 | 一种在固态盘阵列中实现空间释放的方法及装置 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806144B2 (en) | 2009-05-12 | 2014-08-12 | Stec, Inc. | Flash storage device with read cache |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
KR101638061B1 (ko) * | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
KR20110046243A (ko) * | 2009-10-27 | 2011-05-04 | 삼성전자주식회사 | 사용자 장치 및 그것의 맵핑 데이터 관리 방법 |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8782336B2 (en) * | 2010-05-11 | 2014-07-15 | Marvell World Trade Ltd. | Hybrid storage system with control module embedded solid-state memory |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) * | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
TWI457755B (zh) * | 2011-08-22 | 2014-10-21 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與儲存裝置 |
KR20140099737A (ko) | 2013-02-04 | 2014-08-13 | 삼성전자주식회사 | 존-기반 조각모음 방법 및 그것을 이용한 유저 장치 |
US9436606B2 (en) * | 2014-01-02 | 2016-09-06 | Qualcomm Incorporated | System and method to defragment a memory |
US10318423B2 (en) * | 2016-12-14 | 2019-06-11 | Macronix International Co., Ltd. | Methods and systems for managing physical information of memory units in a memory device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006350430A (ja) * | 2005-06-13 | 2006-12-28 | Tdk Corp | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
CN101169751A (zh) * | 2006-10-25 | 2008-04-30 | 三星电子株式会社 | 具有闪存设备的系统及其数据恢复方法 |
US20080263305A1 (en) * | 2007-04-19 | 2008-10-23 | Microsoft Corporation | Remove-on-delete technologies for solid state drive optimization |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732238A (en) * | 1996-06-12 | 1998-03-24 | Storage Computer Corporation | Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system |
US6978357B1 (en) * | 1998-07-24 | 2005-12-20 | Intel Corporation | Method and apparatus for performing cache segment flush and cache segment invalidation operations |
US6405295B1 (en) * | 1999-09-07 | 2002-06-11 | Oki Electric Industry, Co., Ltd. | Data storage apparatus for efficient utilization of limited cycle memory material |
US6725342B1 (en) * | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
KR100365725B1 (ko) * | 2000-12-27 | 2002-12-26 | 한국전자통신연구원 | 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법 |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
CN100456265C (zh) * | 2004-12-14 | 2009-01-28 | 国际商业机器公司 | 移动计算机系统以及操作移动计算机系统的方法 |
KR100876084B1 (ko) * | 2007-02-13 | 2008-12-26 | 삼성전자주식회사 | 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템 |
KR100771519B1 (ko) * | 2006-10-23 | 2007-10-30 | 삼성전자주식회사 | 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법 |
US7689762B2 (en) * | 2007-05-03 | 2010-03-30 | Atmel Corporation | Storage device wear leveling |
US8239611B2 (en) * | 2007-12-28 | 2012-08-07 | Spansion Llc | Relocating data in a memory device |
-
2010
- 2010-01-12 US US12/685,909 patent/US20100185806A1/en not_active Abandoned
- 2010-01-18 CN CN201010004034A patent/CN101782872A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006350430A (ja) * | 2005-06-13 | 2006-12-28 | Tdk Corp | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
CN101169751A (zh) * | 2006-10-25 | 2008-04-30 | 三星电子株式会社 | 具有闪存设备的系统及其数据恢复方法 |
US20080263305A1 (en) * | 2007-04-19 | 2008-10-23 | Microsoft Corporation | Remove-on-delete technologies for solid state drive optimization |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324581A (zh) * | 2012-03-23 | 2013-09-25 | 群联电子股份有限公司 | 编程存储单元与数据读取方法、存储器控制器与储存装置 |
CN103324581B (zh) * | 2012-03-23 | 2016-02-10 | 群联电子股份有限公司 | 编程存储单元与数据读取方法、存储器控制器与储存装置 |
CN102870100A (zh) * | 2012-06-30 | 2013-01-09 | 华为技术有限公司 | 数据缓存装置、数据存储系统及方法 |
CN103543955A (zh) * | 2013-08-05 | 2014-01-29 | 记忆科技(深圳)有限公司 | 利用固态硬盘作为设备读缓存的方法、系统及固态硬盘 |
CN103677670A (zh) * | 2013-12-11 | 2014-03-26 | 华为技术有限公司 | 读数据的方法及装置 |
CN103744611A (zh) * | 2013-12-17 | 2014-04-23 | 记忆科技(深圳)有限公司 | 基于固态硬盘为缓存的计算机系统及缓存加速方法 |
CN106873905A (zh) * | 2016-12-30 | 2017-06-20 | 北京联想核芯科技有限公司 | 数据存储的方法、装置及固态硬盘 |
CN106873905B (zh) * | 2016-12-30 | 2019-11-12 | 深圳忆联信息系统有限公司 | 数据存储的方法、装置及固态硬盘 |
CN108304139A (zh) * | 2017-01-11 | 2018-07-20 | 中兴通讯股份有限公司 | 一种在固态盘阵列中实现空间释放的方法及装置 |
CN108304139B (zh) * | 2017-01-11 | 2023-02-21 | 中兴通讯股份有限公司 | 一种在固态盘阵列中实现空间释放的方法及装置 |
CN106936914A (zh) * | 2017-03-16 | 2017-07-07 | 宿州学院 | 一种基于节点位移和lfu记录的缓存更新方法及网络 |
CN106936914B (zh) * | 2017-03-16 | 2020-06-19 | 宿州学院 | 一种基于节点位移和lfu记录的缓存更新方法及网络 |
Also Published As
Publication number | Publication date |
---|---|
US20100185806A1 (en) | 2010-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101782872A (zh) | 使用固态盘的缓存系统和方法 | |
EP3673377B1 (en) | Logical to physical mapping | |
KR102149817B1 (ko) | 메모리 어드레싱 | |
CN107111551B (zh) | 用于高速缓存经压缩的数据背景的装置、系统和方法 | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
CN103038748B (zh) | 用于精确预测存储器存取的基于区域的技术 | |
US8683142B2 (en) | Technique and apparatus for identifying cache segments for caching data to be written to main memory | |
US20140237164A1 (en) | Hybrid drive that implements a deferred trim list | |
KR20200035311A (ko) | 캐시 라인 데이터 | |
US20070005904A1 (en) | Read ahead method for data retrieval and computer system | |
US20180089088A1 (en) | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache | |
KR20090032821A (ko) | 하드디스크 드라이브의 선반입 방법, 이에 적합한 기록매체 그리고 이에 적합한 장치 | |
US8112589B2 (en) | System for caching data from a main memory with a plurality of cache states | |
CN103543955A (zh) | 利用固态硬盘作为设备读缓存的方法、系统及固态硬盘 | |
US20100088466A1 (en) | Storage device, storage control device, and control method | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
JP2014170523A (ja) | データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 | |
US9798470B2 (en) | Memory system for storing and processing translation information | |
US11836092B2 (en) | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table | |
JP2010191672A (ja) | データ記憶システム | |
CN2603974Y (zh) | 磁盘高速缓存装置 | |
EP4328755A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages | |
CN117806570B (zh) | 在线内存扩展方法、装置、设备及存储介质 | |
No12 et al. | Fully Harnessing the Performance Potential of DRAM-less Mobile Flash Storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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: 20100721 |