CN102279712A - 一种适用于互联网存储***的存储控制方法、***和装置 - Google Patents
一种适用于互联网存储***的存储控制方法、***和装置 Download PDFInfo
- Publication number
- CN102279712A CN102279712A CN2011102289544A CN201110228954A CN102279712A CN 102279712 A CN102279712 A CN 102279712A CN 2011102289544 A CN2011102289544 A CN 2011102289544A CN 201110228954 A CN201110228954 A CN 201110228954A CN 102279712 A CN102279712 A CN 102279712A
- Authority
- CN
- China
- Prior art keywords
- data
- memory controller
- block
- data block
- request
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7202—Allocation control and policies
-
- 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种适用于互联网存储***的存储控制方法、***和装置,其中方法包括:CPU在空闲时向存储控制器发送擦除请求指示存储控制器擦除过时的数据块;所述存储控制器接收到擦除请求后,擦除所述存储控制器所负责存储空间中过时的数据块;当所述存储控制器接收到写请求后,根据地址映射表将数据写入对应的数据块。通过本发明针对网络存储***没有随机写的特性,通过在CPU空闲的时候启动擦除过时数据块的操作,无需预留存储空间作为buffer,降低了设计复杂度和硬件成本。
Description
【技术领域】
本发明涉及计算机技术领域,特别涉及一种适用于互联网存储***的存储控制方法、***和装置。
【背景技术】
随着半导体介质存储装置的广泛使用,出现了各种各样的存储设备以及多种存储介质,例如固态硬盘(SSD,Solid State Disk)、闪存(flash)卡。现有的SSD和flash卡都是面向通用的存储模型设计的,需要考虑随机读、随机写、顺序读和顺序写这四种读写模式,并且每种读写模式都要保证一定的性能。在flash设备中,读写的基本单元是页(page),擦除的基本单元是块(block),一个block一般包括64或者128个page。在写一个page之前,必须擦除整个block。
而互联网存储***中只有随机读、顺序读和顺序写这三种读写模式,并没有随机写。通常,随机写会带来非常复杂的问题,例如均衡磨损(wearleveling)策略,为了降低写放大和降低合并(merge)操作对性能的影响,现有的存储控制方法都要预留7%到25%的存储空间做缓存(buffer),如果有随机写或更新写,则将数据先写入该buffer,等到该buffer快满时,执行merge操作,将数据拷入目的地址的存储空间,再把buffer中过时的内容删掉供后续的数据写入。显然,如果直接将现有的存储控制方法直接用于互联网存储***,则这些必然会增加设计复杂度和硬件成本。
【发明内容】
本发明提供了一种适用于互联网存储***的存储控制方法、***和装置,以便于降低设计复杂度和硬件成本。
具体技术方案如下:
一种适用于互联网存储***的存储控制方法,该方法包括:
CPU在空闲时向存储控制器发送擦除请求指示存储控制器擦除过时的数据块;
所述存储控制器接收到擦除请求后,擦除所述存储控制器所负责存储空间中过时的数据块;
当所述存储控制器接收到写请求后,根据地址映射表将数据写入对应的数据块。
优选地,该方法还包括:所述存储控制器记录各数据块的擦除次数;
所述根据地址映射表将数据写入对应的数据块具体包括:所述存储控制器识别所述存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,将数据写入所述目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为所述目标块的物理地址。
或者,该方法还包括:
所述存储控制器记录各数据块的擦除次数;
所述存储控制器在空闲时将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中所述第二阈值大于第一阈值。
具体地,所述CPU在空闲时向存储控制器发送擦除请求包括:
所述CPU中的上层软件将擦除请求分发至线程,再经由软件驱动层发送给各存储通道共用的存储控制器;或者,
CPU中的上层软件将擦除请求分发至线程,再经由软件驱动层发送给各线程所负责存储通道的存储控制器,其中每一个存储通道分别对应一个存储控制器。
其中,所述过时的数据块包括:超过数据块有效时间的数据块、CPU中的上层软件确定出的无用的数据所在的数据块、临时数据所在的数据块。
更进一步地,该方法还包括:所述存储控制器接收到读请求后,根据地址映射表确定读请求的目的逻辑地址所映射的物理地址,并从确定的物理地址读取数据。
另外,该方法还包括:
中断控制器在每一个存储控制器执行完数据处理后,分别向所述CPU发起中断;或者,
中断控制器在所有存储控制器执行完数据处理的操作后,统一向所述CPU发起中断。
优选地,当需要写入的数据占用多个数据块时,从所述存储控制器所负责存储空间的多个plane中分别识别出各plane中擦除次数最小的空闲块作为目标块。
优选地,该方法还包括:所述存储控制器选取不超过预设个数的空闲块标识为保留区;
所述存储控制器在识别所述目标块时,从所负责存储空间中标识为保留区的数据块中选择擦除次数最小的数据块作为目标块;
所述目标块被写入数据后,取消该目标块的保留区标识;
有未标识为保留区的数据块被擦除数据,且被标识为保留区的数据块没有达到所述预设个数,则将被擦除数据的数据块标识为保留区。
一种适用于互联网存储***的存储控制***,该存储控制***包括:CPU和存储控制器;
所述CPU,用于在空闲时向存储控制器发送擦除请求指示存储控制器擦除过时的数据块;
所述存储控制器,用于接收到擦除请求后,擦除所述存储控制器所负责存储空间中过时的数据块;接收到写请求后,根据地址映射表将数据写入对应的数据块。
优选地,所述存储控制器还用于记录各数据块的擦除次数,接收到所述写请求后,识别所述存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,将数据写入所述目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为所述目标块的物理地址。
或者,所述存储控制器还用于记录各数据块的擦除次数,在空闲时将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中所述第二阈值大于第一阈值。
具体地,所述CPU包括:上层软件、一个以上的线程和软件驱动层;
所述上层软件将擦除请求分发至所述线程,再经由所述软件驱动层发送给各存储通道共用的存储控制器;或者,
所述上层软件将擦除请求分发至所述线程,再经由所述软件驱动层发送给各线程所负责存储通道的存储控制器,其中每一个存储通道分别对应一个存储控制器。
其中,所述过时的数据块包括:超过数据块有效时间的数据块、CPU中的上层软件确定出的无用的数据所在的数据块、临时数据所在的数据块。
所述存储控制器,还用于接收到读请求后,根据地址映射表确定读请求的目的逻辑地址所映射的物理地址,并从确定的物理地址读取数据。
另外,该***还包括:中断控制器,用于在每一个存储控制器执行完数据处理后,分别向所述CPU发起中断;或者,在所有存储控制器执行完数据处理的操作后,统一向所述CPU发起中断。
优选地,当需要写入的数据占用多个数据块时,所述存储控制器从所负责存储空间的多个plane中分别识别出各plane中擦除次数最小的空闲块作为目标块。
优选地,所述存储控制器,还用于选取不超过预设个数的空闲块标识为保留区,在识别所述目标块时,从所负责存储空间中标识为保留区的数据块中选择擦除次数最小的数据块作为目标块;所述目标块被写入数据后,取消该目标块的保留区标识;有未标识为保留区的数据块被擦除数据,且被标识为保留区的数据块没有达到所述预设个数,则将被擦除数据的数据块标识为保留区。
一种存储控制器,该存储控制器包括:存储器文件RF、闪存翻译层FTL、先入先出存储器FIFO以及闪存控制模块;
所述RF,用于记录接收到的访问请求;
所述FTL与所述RF、所述FIFO以及缓存处理数据的DRAM连接,用于进行地址管理,所述地址管理包括:维护所在存储通道中逻辑地址到物理地址的地址映射表,完成所述RF所记录访问请求的逻辑地址到物理地址的映射;还用于记录各数据块的擦除次数,当所述访问请求为写请求时,识别所述存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为所述目标块的物理地址;
所述闪存控制模块,与所述FTL通过所述FIFO连接,用于根据所述FTL的地址映射结果,按照所述访问请求进行数据处理。
更进一步地,所述RF还用于保存数据处理的状态信息;
所述闪存控制模块,还用于在数据处理后,将处理状态通过所述FIFO传回所述FTL,由所述FTL将所述处理状态写入所述RF。
优选地,所述FTL,还用于在确定需要写入的数据占用多个数据块时,从所述存储控制器所负责存储空间的多个plane中分别识别出各plane中擦除次数最小的空闲块作为目标块。
优选地,选取不超过预设个数的空闲块标识为保留区;
所述FTL在识别所述目标块时,从所负责存储空间中标识为保留区的数据块中选择擦除次数最小的数据块作为目标块;还用于在所述目标块被写入数据后,取消该目标块的保留区标识;有未标识为保留区的数据块被擦除数据,且被标识为保留区的数据块没有达到所述预设个数,则将被擦除数据的数据块标识为保留区。
一种存储控制器,该存储控制器包括:存储器文件RF、闪存翻译层FTL、先入先出存储器FIFO以及闪存控制模块;
所述RF,用于记录接收到的访问请求;
所述FTL与所述RF、所述FIFO以及缓存处理数据的DRAM连接,用于进行地址管理,所述地址管理包括:维护所在存储通道中逻辑地址到物理地址的地址映射表,完成所述RF所记录访问请求的逻辑地址到物理地址的映射;还用于记录各数据块的擦除次数,在空闲时触发所述闪存控制模块将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中所述第二阈值大于第一阈值;
所述闪存控制模块,与所述FTL通过所述FIFO连接,用于根据所述FTL的地址映射结果,按照所述访问请求进行数据处理。
更进一步地,所述RF还用于保存数据处理的状态信息;
所述闪存控制模块,还用于在数据处理后,将处理状态通过所述FIFO传回所述FTL,由所述FTL将所述处理状态写入所述RF。
由以上技术方案可以看出,本发明针对互联网存储***的特点,在CPU空闲时,存储控制器执行过时数据块的擦除。通过这种方式能够在写数据之前为写数据准备好数据块,无需额外预留7%到25%的存储空间做buffer,实现更加简单,从而降低了设计复杂度和硬件成本。
【附图说明】
图1为本发明实施例所适用的一种***架构图;
图2为本发明实施例所适用的另一种***架构图;
图3为本发明实施例提供的适用于互联网存储***的存储控制方法流程图;
图4为本发明实施例提供的存储控制器的结构示意图;
图5为本发明实施例提供的多个plane之间实现数据并发的示意图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明所提供的方法可以适用于图1或者图2所示的***,在图1中多个存储通道(在后续描述中简称通道)的数据处理由一个存储控制器负责,该存储控制器同时负责多个通道之间的并发和数据分布。在图2中每一个通道的数据由不同的存储控制器负责,各存储控制器负责其所在通道的存储空间的数据分布,通道之间的并发则由CPU中的软件驱动层控制,且各线程负责其中一个或多个通道。通常一个通道的存储空间包含一个或一组flash芯片。本发明实施例中涉及的数据处理包括:读数据、写数据或擦除数据等。并且,在上述图1和图2所示的***中,不再为各通道的存储空间设置额外的buffer。
基于上述任意一种架构,本发明所提供的适用于互联网存储***的存储控制方法可以如图3所示,包括以下步骤:
步骤301:CPU在空闲时向存储控制器发送擦除请求指示存储控制器擦除过时的数据块。
由于在本发明实施例中不再为存储空间设置额外的buffer,因此在本发明实施例中,不再像现有技术一样在buffer快满时触发数据擦除,而是在CPU空闲时就出发数据擦除的操作,向存储控制器发送擦除请求。
另外,CPU中的上层软件将擦除请求分发至线程,再经由软件驱动层发送给各存储通道共用的存储控制器(图1中所示情况)或者发送给线程所负责存储通道的存储控制器(图2中所示情况)。
上层软件在发送擦除请求时,会确定存储空间中过时的数据块,将这些过时的数据块作为擦除对象并在擦除请求中指示。其中过时的数据块可以包括但不限于:超过数据块有效时间的数据块、上层软件确定出的无用的数据所在的数据块、临时数据所在的数据块等。
步骤302:存储控制器接收到擦除请求后,擦除其所负责存储空间中过时的数据块。
存储控制器按照擦除请求的指示,擦除对应的数据块,该指示通常可以为擦除对象的地址。
步骤303:存储控制器接收到写请求后,根据地址映射表将数据写入对应的数据块。
存储控制器中维护有其所负责通道的地址映射表,包含逻辑地址和物理地址的映射关系。
为了使用wear leveling策略,在步骤302中对各数据块的擦除次数进行记录,在本发明实施例中,可以采用动态wear leveling策略,也可以采用静态wear leveling策略,下面对这两种策略进行详细描述。
动态wear leveling策略:
当存储控制器接收到写请求时,识别其所负责存储空间中擦除次数最小的空闲块作为目标块,将数据写入目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为该目标块的物理地址。
在本步骤中,采用了一种巧妙且简单的写入方式,保证了wear leveling策略,即并不按照写请求的目的逻辑地址所映射的物理地址写入对应的目标块,而是选择存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,写入该目标块后,对地址映射表进行改写,即将地址映射表中写请求的目的逻辑地址所映射的物理地址修改为该目标块的物理地址。这样能够保证每次写入数据时,写入的都是擦除次数最小的空闲块,尽可能地将写入操作平均分配至各存储空间,从而最大程度地保证了wear leveling策略。
静态wear leveling策略:
存储控制器在空闲时将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中第二阈值大于第一阈值。
在存储空间中往往存在一些数据一经写入就长时间不再更改,其所在数据块的擦除次数很小,且不能够被做其它使用,为了进行wear leveling,可以将擦除次数很小的数据块与擦除次数很大的数据块进行内容交换,这样,擦除次数很小的数据块就有机会继续被使用。在内容进行交换之后,需要相应地更新地址映射表,保证数据能够被正确读取。
上述存储控制***对于读数据的处理而言,存储控制器执行的操作可以与现有技术相同。更进一步地,存储控制器在完成上述擦除数据、写数据或者读数据之后,向CPU发起中断的方式可以是:中断控制器在每一个存储控制器执行完数据处理的操作后,分别向CPU发起中断;或者,中断控制器在所有存储控制器执行完数据处理的操作后,统一向CPU发起中断,从而减少中断次数,降低中断开销。
以图2所示架构为例,分别对读数据、写数据和擦除数据的过程进行描述,假设存在N个线程,N个通道,及图2中的M=N,每个线程分别负责一个通道,且在写数据的过程中采用动态wear leveling策略。
CPU的上层软件将读数据的任务分成N个子任务,分别发送给N个线程,此处以分成N个子任务为例,也可以分成其他个数的子任务,分发给对应个数的线程。各线程分别发送读请求,软件驱动层将各线程的读请求分别发送给各线程所负责通道的存储控制器;各存储控制器将读请求的目的逻辑地址映射为物理地址后,从flash芯片中的该物理地址读数据;待所有存储控制器完成读数据的操作后,中断控制器向CPU发送中断。
CPU的上层软件将写数据的任务分成N个子任务,分别发送给N个线程,此处以分成N个子任务为例,也可以分成其他个数的子任务,分发给对应个数的线程。各线程分别发送写请求,软件驱动层将各线程的写请求分别发送给各线程所负责通道的存储控制器;各存储控制器接收到写请求后,从flash芯片中确定擦除次数最小的空闲块作为目标块,将数据写入目标块,并修改该通道的地址映射表中写请求的目的逻辑地址所映射的物理地址为该目标块的物理地址;待所有存储控制器完成写数据的操作后,中断控制器向CPU发送中断。
CPU的上层软件将擦除数据的任务分成N个子任务,分别发送给N个线程,此处以分成N个子任务为例,也可以分成其他个数的子任务,分发给对应个数的线程。各线程分别发送擦除请求,软件驱动层将各线程的擦除请求分别发送给各线程所负责通道的存储控制器;各存储控制器根据擦除请求对flash芯片中对应的数据块擦除数据,并记录数据块的擦除次数;待所有存储控制器完成擦除数据的操作后,中断控制器向CPU发送中断。
上述软件驱动层在将线程发送的访问请求发送给对应通道时,可以根据线程与通道的绑定关系,将访问请求发送给线程所绑定的通道;也可以在线程发送访问请求时,在访问请求中携带通道号,软件驱动层根据访问请求中携带的通道号,将访问请求发送给对应的通道。
下面对上述存储控制器的结构进行介绍,如图4所示,该存储控制器可以包括:存储器文件(RF,Register File)、闪存翻译层(FTL,Flash TranslationLayer)、先入先出存储器(FIFO)和闪存控制模块。
RF用于记录接收到的访问请求,包括访问请求的源地址和目的地址、访问类型、数据长度等,还可以保存数据处理的状态信息和异常信息等。其中,访问请求可以是读请求、写请求或擦除请求等。
FTL与RF、DRAM以及FIFO连接,用于进行地址管理,该地址管理包括:维护逻辑地址到物理地址的地址映射表,完成访问请求对应的逻辑地址到物理地址的映射。
上述地址管理还可以包括:flash芯片的坏块管理,这部分与现有技术相同,不再赘述。
闪存控制模块用于根据FTL进行地址映射结果,对flash芯片进行数据处理。
上述FIFO的作用是作时钟隔离,因为FTL和DRAM运行在较高的时钟域,而闪存控制模块运行在较低的时钟域。
为了使用wear leveling策略,在本发明实施例中,如果访问请求为擦除请求,FTL还用于记录数据块的擦除次数。
采用动态wear leveling策略时,如果访问请求为写请求,FTL会识别所负责存储空间中擦除次数最小的空闲块作为目标块,将地址映射表中写请求的目的逻辑地址所映射的物理地址修改为该目标块的物理地址。上述的空闲块为没有数据的数据块。
上述FTL识别所负责存储空间中擦除次数最小的空闲块,通过改写地址映射表的方式让闪存控制模块将数据写入该擦除次数最小的空闲块,从而保证均衡磨损(wear leveling)。
具体地,如果接收到的访问请求为读数据,则RF记录该访问请求,FTL根据该访问请求进行地址映射,闪存控制模块根据地址映射的结果,从相应的flash芯片中读取数据,将读取的数据经由FIFO传给FTL,FTL将数据送入DRAM,再经由总线控制模块传给CPU的驱动及读写管理装置。并且,闪存控制模块在处理完成后,会将处理状态通过FIFO传回FTL,由FTL将处理状态写入RF。
如果接收到的访问请求为擦除数据,则RF记录该访问请求,FTL根据该访问请求进行地址映射,闪存控制模块根据地址映射的结果,从相应的flash芯片中擦除数据,并将处理状态通过FIFO传回FTL,由FTL将处理状态写入RF。另外,FTL会记录各数据块擦除的次数。
如果接收到的访问请求为写数据,则数据经总线控制模块传到DRAM,RF记录该访问请求,FTL识别对应flash芯片中擦除次数最小的空闲块作为目标块,将地址映射表中写请求的目的逻辑地址所映射的物理地址修改为目标块的物理地址,并将数据从DRAM通过FIFO传给闪存控制模块,闪存控制模块,根据地址映射的结果将数据写入目标块,并在完成写数据后,将处理状态通过FIFO传回FTL,由FTL将处理状态写入RF。
上述FTL在地址映射方面可以采用块级别(block level)的方式,即地址的最小单位为块级别,这种方式需要的映射表较小。由于一个通道中可能存在多个flash芯片,每个flash芯片中存在多个硅片(die),每个die中存在多个区域(plane),闪存控制模块可以在通道中多个plane之间实现数据并发,如图5所示。举个例子,一个写数据的大小如果是8MB,那么可以写到4个block中,本发明实施例中逻辑地址由LB0、LB1、LB2和LB3组成,可以从4个不同的plane中选出4个block写入数据,即选择die0中plane0的block0以及plane1的block1,die1中plane0的block0以及plane1的block1,然后将4个block的物理地址更新到地址映射表中。
由于在写数据的过程中需要对擦除最小的空闲块进行识别,这就需要有一个遍历各数据块是否为空闲的过程,如果通道的存储空间较大,则对存储控制器中FTL的性能压力也较大。较优地,在本发明中可以选取不超过预设个数的空闲块标识为保留区,该预设个数可以根据需要进行设置,例如设置为占存储空间0.5%的数据块。在选择目标块进行数据写入时,存储控制器的FTL从标识为保留区的空闲块中选择擦除次数最小的数据块,一旦数据块被写入数据,则取消该数据块的保留区标识;有未标识为保留区的数据块被擦除数据,如果保留区的数据块没有达到预设个数,则将该被擦除数据的数据块标识为保留区。通过这种方式,FTL仅需要遍历被标识为保留区的数据块,从保留区中识别出擦除次数最小的空闲块作为目标块,显然提高了存储控制器中FTL的识别效率,也降低了对FTL的性能压力。
采用静态wear leveling时,FTL还会记录各数据块的擦除次数,在空闲时触发闪存控制模块将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中第二阈值大于第一阈值。
需要说明的是,本发明所提供的方法不仅适用于现有的网络存储设备,同样适用于其它不包括随机写而是顺序写的存储设备。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (24)
1.一种适用于互联网存储***的存储控制方法,其特征在于,该方法包括:
CPU在空闲时向存储控制器发送擦除请求指示存储控制器擦除过时的数据块;
所述存储控制器接收到擦除请求后,擦除所述存储控制器所负责存储空间中过时的数据块;
当所述存储控制器接收到写请求后,根据地址映射表将数据写入对应的数据块。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:所述存储控制器记录各数据块的擦除次数;
所述根据地址映射表将数据写入对应的数据块具体包括:所述存储控制器识别所述存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,将数据写入所述目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为所述目标块的物理地址。
3.根据权利要求1所述的方法,其特征在于,该方法还包括:
所述存储控制器记录各数据块的擦除次数;
所述存储控制器在空闲时将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中所述第二阈值大于第一阈值。
4.根据权利要求1所述的方法,其特征在于,所述CPU在空闲时向存储控制器发送擦除请求包括:
所述CPU中的上层软件将擦除请求分发至线程,再经由软件驱动层发送给各存储通道共用的存储控制器;或者,
CPU中的上层软件将擦除请求分发至线程,再经由软件驱动层发送给各线程所负责存储通道的存储控制器,其中每一个存储通道分别对应一个存储控制器。
5.根据权利要求1所述的方法,其特征在于,所述过时的数据块包括:超过数据块有效时间的数据块、CPU中的上层软件确定出的无用的数据所在的数据块、临时数据所在的数据块。
6.根据权利要求1所述的方法,其特征在于,该方法还包括:所述存储控制器接收到读请求后,根据地址映射表确定读请求的目的逻辑地址所映射的物理地址,并从确定的物理地址读取数据。
7.根据权利要求1至6任一权项所述的方法,其特征在于,该方法还包括:
中断控制器在每一个存储控制器执行完数据处理后,分别向所述CPU发起中断;或者,
中断控制器在所有存储控制器执行完数据处理的操作后,统一向所述CPU发起中断。
8.根据权利要求2所述的方法,其特征在于,当需要写入的数据占用多个数据块时,从所述存储控制器所负责存储空间的多个plane中分别识别出各plane中擦除次数最小的空闲块作为目标块。
9.根据权利要求2所述的方法,其特征在于,该方法还包括:所述存储控制器选取不超过预设个数的空闲块标识为保留区;
所述存储控制器在识别所述目标块时,从所负责存储空间中标识为保留区的数据块中选择擦除次数最小的数据块作为目标块;
所述目标块被写入数据后,取消该目标块的保留区标识;
有未标识为保留区的数据块被擦除数据,且被标识为保留区的数据块没有达到所述预设个数,则将被擦除数据的数据块标识为保留区。
10.一种适用于互联网存储***的存储控制***,其特征在于,该存储控制***包括:CPU和存储控制器;
所述CPU,用于在空闲时向存储控制器发送擦除请求指示存储控制器擦除过时的数据块;
所述存储控制器,用于接收到擦除请求后,擦除所述存储控制器所负责存储空间中过时的数据块;接收到写请求后,根据地址映射表将数据写入对应的数据块。
11.根据权利要求10所述的存储控制***,其特征在于,所述存储控制器还用于记录各数据块的擦除次数,接收到所述写请求后,识别所述存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,将数据写入所述目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为所述目标块的物理地址。
12.根据权利要求10所述的存储控制***,其特征在于,所述存储控制器还用于记录各数据块的擦除次数,在空闲时将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中所述第二阈值大于第一阈值。
13.根据权利要求10所述的存储控制***,其特征在于,所述CPU包括:上层软件、一个以上的线程和软件驱动层;
所述上层软件将擦除请求分发至所述线程,再经由所述软件驱动层发送给各存储通道共用的存储控制器;或者,
所述上层软件将擦除请求分发至所述线程,再经由所述软件驱动层发送给各线程所负责存储通道的存储控制器,其中每一个存储通道分别对应一个存储控制器。
14.根据权利要求10所述的存储控制***,其特征在于,所述过时的数据块包括:超过数据块有效时间的数据块、CPU中的上层软件确定出的无用的数据所在的数据块、临时数据所在的数据块。
15.根据权利要求10所述的存储控制***,其特征在于,所述存储控制器,还用于接收到读请求后,根据地址映射表确定读请求的目的逻辑地址所映射的物理地址,并从确定的物理地址读取数据。
16.根据权利要求10至15任一权项所述的存储控制***,其特征在于,该***还包括:中断控制器,用于在每一个存储控制器执行完数据处理后,分别向所述CPU发起中断;或者,在所有存储控制器执行完数据处理的操作后,统一向所述CPU发起中断。
17.根据权利要求11所述的存储控制***,其特征在于,当需要写入的数据占用多个数据块时,所述存储控制器从所负责存储空间的多个plane中分别识别出各plane中擦除次数最小的空闲块作为目标块。
18.根据权利要求11所述的存储控制***,其特征在于,所述存储控制器,还用于选取不超过预设个数的空闲块标识为保留区,在识别所述目标块时,从所负责存储空间中标识为保留区的数据块中选择擦除次数最小的数据块作为目标块;所述目标块被写入数据后,取消该目标块的保留区标识;有未标识为保留区的数据块被擦除数据,且被标识为保留区的数据块没有达到所述预设个数,则将被擦除数据的数据块标识为保留区。
19.一种存储控制器,其特征在于,该存储控制器包括:存储器文件RF、闪存翻译层FTL、先入先出存储器FIFO以及闪存控制模块;
所述RF,用于记录接收到的访问请求;
所述FTL与所述RF、所述FIFO以及缓存处理数据的DRAM连接,用于进行地址管理,所述地址管理包括:维护所在存储通道中逻辑地址到物理地址的地址映射表,完成所述RF所记录访问请求的逻辑地址到物理地址的映射;还用于记录各数据块的擦除次数,当所述访问请求为写请求时,识别所述存储控制器所负责存储空间中擦除次数最小的空闲块作为目标块,并修改地址映射表中写请求的目的逻辑地址所映射的物理地址为所述目标块的物理地址;
所述闪存控制模块,与所述FTL通过所述FIFO连接,用于根据所述FTL的地址映射结果,按照所述访问请求进行数据处理。
20.根据权利要求19所述的存储控制器,其特征在于,所述RF还用于保存数据处理的状态信息;
所述闪存控制模块,还用于在数据处理后,将处理状态通过所述FIFO传回所述FTL,由所述FTL将所述处理状态写入所述RF。
21.根据权利要求19所述的存储控制器,其特征在于,所述FTL,还用于在确定需要写入的数据占用多个数据块时,从所述存储控制器所负责存储空间的多个plane中分别识别出各plane中擦除次数最小的空闲块作为目标块。
22.根据权利要求19所述的存储控制器,其特征在于,选取不超过预设个数的空闲块标识为保留区;
所述FTL在识别所述目标块时,从所负责存储空间中标识为保留区的数据块中选择擦除次数最小的数据块作为目标块;还用于在所述目标块被写入数据后,取消该目标块的保留区标识;有未标识为保留区的数据块被擦除数据,且被标识为保留区的数据块没有达到所述预设个数,则将被擦除数据的数据块标识为保留区。
23.一种存储控制器,其特征在于,该存储控制器包括:存储器文件RF、闪存翻译层FTL、先入先出存储器FIFO以及闪存控制模块;
所述RF,用于记录接收到的访问请求;
所述FTL与所述RF、所述FIFO以及缓存处理数据的DRAM连接,用于进行地址管理,所述地址管理包括:维护所在存储通道中逻辑地址到物理地址的地址映射表,完成所述RF所记录访问请求的逻辑地址到物理地址的映射;还用于记录各数据块的擦除次数,在空闲时触发所述闪存控制模块将擦除次数小于设定第一阈值的数据块与擦除大于设定第二阈值的数据块进行内容交换,并将地址映射表中交换的数据块的物理地址进行交换;其中所述第二阈值大于第一阈值;
所述闪存控制模块,与所述FTL通过所述FIFO连接,用于根据所述FTL的地址映射结果,按照所述访问请求进行数据处理。
24.根据权利要求23所述的存储控制器,其特征在于,所述RF还用于保存数据处理的状态信息;
所述闪存控制模块,还用于在数据处理后,将处理状态通过所述FIFO传回所述FTL,由所述FTL将所述处理状态写入所述RF。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102289544A CN102279712A (zh) | 2011-08-10 | 2011-08-10 | 一种适用于互联网存储***的存储控制方法、***和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102289544A CN102279712A (zh) | 2011-08-10 | 2011-08-10 | 一种适用于互联网存储***的存储控制方法、***和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102279712A true CN102279712A (zh) | 2011-12-14 |
Family
ID=45105186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102289544A Pending CN102279712A (zh) | 2011-08-10 | 2011-08-10 | 一种适用于互联网存储***的存储控制方法、***和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102279712A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424991A (zh) * | 2013-08-30 | 2015-03-18 | 北京兆易创新科技股份有限公司 | 一种串行接口nand闪存单元 |
CN104778127A (zh) * | 2015-03-25 | 2015-07-15 | 合肥格易集成电路有限公司 | 一种nand flash写数据的方法和装置 |
CN105849688A (zh) * | 2014-12-01 | 2016-08-10 | 华为技术有限公司 | 数据写入的方法、装置、设备和存储*** |
CN107329902A (zh) * | 2013-07-25 | 2017-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN107544915A (zh) * | 2016-06-27 | 2018-01-05 | 爱思开海力士有限公司 | 存储***及其地址映射方法和访问方法 |
CN108109224A (zh) * | 2016-11-24 | 2018-06-01 | 陕西航空电气有限责任公司 | 一种适用于航空电源***控制器的数据记录模块 |
CN108959117A (zh) * | 2018-06-22 | 2018-12-07 | 深圳忆联信息***有限公司 | H2d写操作加速方法、装置、计算机设备及存储介质 |
CN109391604A (zh) * | 2017-08-14 | 2019-02-26 | 深圳市中兴微电子技术有限公司 | 一种管理数据输入输出协议的桥接装置及管理*** |
CN109725848A (zh) * | 2017-10-30 | 2019-05-07 | 东芝存储器株式会社 | 计算机***及储存装置的控制方法 |
CN109947370A (zh) * | 2014-05-30 | 2019-06-28 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
CN110968527A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存 |
CN111177034A (zh) * | 2019-12-27 | 2020-05-19 | 鸿秦(北京)科技有限公司 | 一种固态硬盘的自适应ftl算法 |
CN113204554A (zh) * | 2021-05-11 | 2021-08-03 | 深圳市杉岩数据技术有限公司 | 一种对象存储***实现稀疏写的方法、装置及电子设备 |
WO2022143295A1 (zh) * | 2021-01-04 | 2022-07-07 | 展讯通信(上海)有限公司 | 固件升级方法和相关设备 |
CN114860632A (zh) * | 2021-02-04 | 2022-08-05 | 慧荣科技股份有限公司 | 存储器控制器以及伺服器 |
CN117708000A (zh) * | 2024-02-05 | 2024-03-15 | 成都佰维存储科技有限公司 | 数据的随机写入方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512348A (zh) * | 2002-11-05 | 2004-07-14 | 松下电器产业株式会社 | 用于存储器管理的设备和方法 |
US7363421B2 (en) * | 2005-01-13 | 2008-04-22 | Stmicroelectronics S.R.L. | Optimizing write/erase operations in memory devices |
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、***及方法 |
CN101389096A (zh) * | 2007-09-13 | 2009-03-18 | 深圳华为通信技术有限公司 | 擦除终端数据的方法及终端设备 |
US20100115178A1 (en) * | 2008-10-30 | 2010-05-06 | Dell Products L.P. | System and Method for Hierarchical Wear Leveling in Storage Devices |
US20100268865A1 (en) * | 2009-04-20 | 2010-10-21 | Arunprasad Ramiya Mothilal | Static Wear Leveling |
CN102081576A (zh) * | 2011-03-01 | 2011-06-01 | 华中科技大学 | 一种闪存的磨损平衡方法 |
US20110138100A1 (en) * | 2009-12-07 | 2011-06-09 | Alan Sinclair | Method and system for concurrent background and foreground operations in a non-volatile memory array |
-
2011
- 2011-08-10 CN CN2011102289544A patent/CN102279712A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512348A (zh) * | 2002-11-05 | 2004-07-14 | 松下电器产业株式会社 | 用于存储器管理的设备和方法 |
US7363421B2 (en) * | 2005-01-13 | 2008-04-22 | Stmicroelectronics S.R.L. | Optimizing write/erase operations in memory devices |
CN101389096A (zh) * | 2007-09-13 | 2009-03-18 | 深圳华为通信技术有限公司 | 擦除终端数据的方法及终端设备 |
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、***及方法 |
US20100115178A1 (en) * | 2008-10-30 | 2010-05-06 | Dell Products L.P. | System and Method for Hierarchical Wear Leveling in Storage Devices |
US20100268865A1 (en) * | 2009-04-20 | 2010-10-21 | Arunprasad Ramiya Mothilal | Static Wear Leveling |
US20110138100A1 (en) * | 2009-12-07 | 2011-06-09 | Alan Sinclair | Method and system for concurrent background and foreground operations in a non-volatile memory array |
CN102081576A (zh) * | 2011-03-01 | 2011-06-01 | 华中科技大学 | 一种闪存的磨损平衡方法 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329902B (zh) * | 2013-07-25 | 2020-12-22 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN107329902A (zh) * | 2013-07-25 | 2017-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN104424991A (zh) * | 2013-08-30 | 2015-03-18 | 北京兆易创新科技股份有限公司 | 一种串行接口nand闪存单元 |
CN109947370A (zh) * | 2014-05-30 | 2019-06-28 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
CN105849688A (zh) * | 2014-12-01 | 2016-08-10 | 华为技术有限公司 | 数据写入的方法、装置、设备和存储*** |
CN105849688B (zh) * | 2014-12-01 | 2019-10-22 | 华为技术有限公司 | 数据写入的方法、装置、设备和存储*** |
CN104778127B (zh) * | 2015-03-25 | 2018-04-13 | 合肥格易集成电路有限公司 | 一种nand flash写数据的方法和装置 |
CN104778127A (zh) * | 2015-03-25 | 2015-07-15 | 合肥格易集成电路有限公司 | 一种nand flash写数据的方法和装置 |
CN107544915B (zh) * | 2016-06-27 | 2021-03-16 | 爱思开海力士有限公司 | 存储***及其地址映射方法和访问方法 |
CN107544915A (zh) * | 2016-06-27 | 2018-01-05 | 爱思开海力士有限公司 | 存储***及其地址映射方法和访问方法 |
CN108109224A (zh) * | 2016-11-24 | 2018-06-01 | 陕西航空电气有限责任公司 | 一种适用于航空电源***控制器的数据记录模块 |
CN109391604A (zh) * | 2017-08-14 | 2019-02-26 | 深圳市中兴微电子技术有限公司 | 一种管理数据输入输出协议的桥接装置及管理*** |
CN109725848A (zh) * | 2017-10-30 | 2019-05-07 | 东芝存储器株式会社 | 计算机***及储存装置的控制方法 |
CN108959117A (zh) * | 2018-06-22 | 2018-12-07 | 深圳忆联信息***有限公司 | H2d写操作加速方法、装置、计算机设备及存储介质 |
CN110968527A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存 |
CN110968527B (zh) * | 2018-09-30 | 2024-05-28 | 北京忆恒创源科技股份有限公司 | Ftl提供的缓存 |
CN111177034A (zh) * | 2019-12-27 | 2020-05-19 | 鸿秦(北京)科技有限公司 | 一种固态硬盘的自适应ftl算法 |
WO2022143295A1 (zh) * | 2021-01-04 | 2022-07-07 | 展讯通信(上海)有限公司 | 固件升级方法和相关设备 |
CN114860632A (zh) * | 2021-02-04 | 2022-08-05 | 慧荣科技股份有限公司 | 存储器控制器以及伺服器 |
CN114860632B (zh) * | 2021-02-04 | 2023-08-29 | 慧荣科技股份有限公司 | 存储器控制器以及伺服器 |
CN113204554A (zh) * | 2021-05-11 | 2021-08-03 | 深圳市杉岩数据技术有限公司 | 一种对象存储***实现稀疏写的方法、装置及电子设备 |
CN117708000A (zh) * | 2024-02-05 | 2024-03-15 | 成都佰维存储科技有限公司 | 数据的随机写入方法、装置、电子设备及存储介质 |
CN117708000B (zh) * | 2024-02-05 | 2024-05-07 | 成都佰维存储科技有限公司 | 数据的随机写入方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102279712A (zh) | 一种适用于互联网存储***的存储控制方法、***和装置 | |
US9021178B2 (en) | High performance path for command processing | |
CN109144887B (zh) | 存储器***及控制非易失性存储器的控制方法 | |
US8452911B2 (en) | Synchronized maintenance operations in a multi-bank storage system | |
US11487666B2 (en) | Timed data transfer between a host system and a memory sub-system | |
US9405485B2 (en) | Method and apparatus for writing data to a flash memory | |
US20210133096A1 (en) | Memory system and operating method thereof | |
CN109697027B (zh) | 包括共享存储器区域和专用存储器区域的数据存储设备 | |
CN113924545B (zh) | 基于存储器子***中的媒体单元的可用性的预测性数据传输 | |
JP2009528609A (ja) | 不揮発性メモリの読み出し待ち時間を減少させる方法及びデバイス | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
US20110072195A1 (en) | Method for managing a memory device having multiple channels and multiple ways, and associated memory device and controller thereof | |
US11429314B2 (en) | Storage device, storage system and operating method thereof | |
US20230244394A1 (en) | Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive | |
CN104021094B (zh) | 数据储存装置与快闪存储器控制方法 | |
CN112783424B (zh) | 存储装置及其控制方法 | |
US11150825B2 (en) | Adaptive spare block usage in solid state drives | |
CN110531928B (zh) | DRAM-Less固态硬盘的数据随机写入方法、装置及DRAM-Less固态硬盘 | |
TWI529730B (zh) | 資料儲存裝置與快閃記憶體控制方法 | |
CN109697017A (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
US20120198186A1 (en) | Memory device and memory system | |
CN107797756A (zh) | 固态硬盘***的优先写入方法以及使用该方法的装置 | |
US11899947B2 (en) | Storage device, storage system, and operating method thereof capable of dynamically allocating write blocks to a stream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20111214 |