CN105745628B - 一种将数据写入闪存装置的方法、闪存装置和存储系统 - Google Patents
一种将数据写入闪存装置的方法、闪存装置和存储系统 Download PDFInfo
- Publication number
- CN105745628B CN105745628B CN201480044289.5A CN201480044289A CN105745628B CN 105745628 B CN105745628 B CN 105745628B CN 201480044289 A CN201480044289 A CN 201480044289A CN 105745628 B CN105745628 B CN 105745628B
- Authority
- CN
- China
- Prior art keywords
- data
- piece
- block
- write
- master controller
- 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.)
- Active
Links
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
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)
- Memory System (AREA)
Abstract
一种将数据写入闪存装置的方法、闪存装置和存储系统。当所述多个block中第一block的有效容量小于第一目标数据的大小时,主控制器将所述第一目标数据划分为第一部分数据和第二部分数据,其中,所述第一部分数据的大小为所述第一block的有效容量,所述第二部分数据的大小为所述第一目标数据的大小减去所述第一部分数据的大小;从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;将所述第一部分数据写入所述第一block,并且将所述第二部分数据写入所述第二block。可以提高块的利用率,节省SSD的存储空间。
Description
技术领域
本发明实施例涉及存储技术领域,特别是一种将数据写入闪存装置的方法、闪存装置和存储系统。
背景技术
Flash Memory(闪存)装置是一种非易失性存储器,其存储介质是Flash颗粒,具有断电后数据不消失的特点,因此,被广泛的作为外部和内部存储器使用。以Flash颗粒为存储介质的闪存装置可能是固态硬盘(Solid State Device,SSD),又名固态驱动器(SolidState Drive,SSD),还可能是其他存储器。
一个SSD通常由多个闪存芯片组成,每个闪存芯片包含若干个块(block),其中,每个block又包含多个页(page)。在某些情况下,block中可能会出现发生损坏的页(又称坏页),当SSD在将数据写入一个包含坏页的block时,如果包含坏页的block不足以存储该数据,往往会寻找一个新的block来存储该数据溢出的部分。因此,SSD中就会出现大量写入部分数据但又未写满的block,这样就会降低block的空间利用率,造成SSD存储空间的浪费。
发明内容
本发明实施例中提供的一种将数据写入闪存装置的方法、闪存装置和存储系统,能够提高block的空间利用率,节省SSD的存储空间。
第一方面,本发明实施例提供了一种闪存装置,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块block;
所述主控制器,用于接收第一目标数据,当所述多个block中第一block的有效容量小于所述第一目标数据的大小时,将所述第一目标数据划分为所述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据,其中,所述第一目标数据的第一部分数据的大小为所述第一block的有效容量,所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所述第一目标数据的第一部分数据的大小;
从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;
将所述第一目标数据的第一部分数据写入所述第一block,并且将所述第一目标数据的第二部分数据写入所述第二block。
在第一方面的第一种可能的实现方式中,所述第二block是预先设定的block。
在第一方面的第二种可能的实现方式中,所述第二block具有数据标记,所述数据标记用于标识已写入数据并未被写满的block;
所述主控制器具体用于根据所述数据标记从所述多个block中确定所述第二block。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述主控制器,还用于接收第二目标数据,当所述多个block中第三block的有效容量小于所述第二目标数据的大小时,将所述第二目标数据划分为所述第二目标数据的第一部分数据和所述第二目标数据的第二部分数据,其中,所述第二目标数据的第一部分数据的大小为所述第三block的有效容量,所述第二目标数据的第二部分数据的大小为所述第二目标数据的大小减去所述第二目标数据的第一部分数据的大小;
将所述第二目标数据的第一部分数据写入所述第三block,并且将所述第二目标数据的第二部分数据写入所述第二block;
为所述第二block增加所述数据标记。
第二方面,本发明实施例提供了一种闪存装置,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块block;
所述主控制器,用于接收第一目标数据,
将所述第一目标数据写入所述多个block中的第一block;
当所述第一block被写满时,获得所述第一目标数据中尚未写入所述第一block的数据,其中所述第一block的有效容量小于所述第一目标数据的大小;
从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;
将所述第一目标数据中尚未写入所述第一block的数据写入所述第二block。
在第二方面的第一种可能的实现方式中,所述第二block是预先设定的block。
在第二方面的第二种可能的实现方式中,所述第二block具有数据标记,所述数据标记用于标识已写入数据并未被写满的block;
所述主控制器具体用于根据所述数据标记从所述多个block中确定所述第二block。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述主控制器,还用于接收第二目标数据将所述第二目标数据写入所述多个block中的第三block;
当所述第三block被写满时,获得所述第二目标数据中尚未写入所述第三block的数据,其中所述第三block的有效容量小于所述第二目标数据的大小;
将所述第二目标数据中尚未写入所述第三block的数据写入所述第二block:
为所述第二block增加所述数据标记。
第三方面,本发明实施例提供了一种将数据写入闪存装置的方法,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块block,所述方法包括:
所述主控制器接收第一目标数据,当所述多个block中的第一block的有效容量小于所述第一目标数据的大小时,将所述第一目标数据划分为所述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据,其中,所述第一目标数据的第一部分数据的大小为所述第一block的有效容量,所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所述第一目标数据的第一部分数据的大小;
所述主控制器从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;
所述主控制器将所述第一目标数据的第一部分数据写入所述第一block,并且将所述第一目标数据的第二部分数据写入所述第二block。
在第三方面的第一种可能的实现方式中,所述第二block是预先设定的block。
在第三方面的第二种可能的实现方式中,所述第二block具有数据标记,所述数据标记用于标识已写入数据并未被写满的block;
所述主控制器从所述多个block中确定第二block包括:所述主控制器根据所述数据标记从所述多个block中确定所述第二block。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,还包括:
所述主控制器接收第二目标数据,当所述多个block中的第三block的有效容量小于所述第二目标数据的大小时,将所述第二目标数据划分为第二目标数据的第一部分数据和第二目标数据的第二部分数据,其中,所述第二目标数据的第一部分数据的大小为所述第三block的有效容量,所述第二目标数据的第二部分数据的大小为所述第二目标数据的大小减去所述第二目标数据的第一部分数据的大小;
所述主控制器将所述第二目标数据的第一部分数据写入所述第三block,并且将所述第二目标数据的第二部分数据写入所述第二block;
所述主控制器为所述第二block增加所述数据标记。
第四方面,本发明实施例提供了一种将数据写入闪存装置的方法,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块block,所述方法包括:
所述主控制器接收第一目标数据,将所述第一目标数据写入所述多个block中的第一block;
当所述第一block被写满时,所述主控制器获得所述第一目标数据中尚未写入所述第一block的数据,其中所述第一block的有效容量小于所述第一目标数据的大小;
所述主控制器从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;
所述主控制器将所述第一目标数据中尚未写入所述第一block的数据写入所述第二block。
在第四方面的第一种可能的实现方式中,所述第二block是预先设定的block。
在第四方面的第二种可能的实现方式中,所述第二block包含数据标记,所述数据标记用于标识已写入数据并未被写满的block;
所述主控制器从所述多个block中确定第二block包括:所述主控制器根据所述数据标记从所述多个block中确定所述第二block。
结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,还包括:所述主控制器接收第二目标数据,将所述第二目标数据写入所述多个block中的第三block;
当所述第三block被写满时,所述主控制器获得所述第二目标数据中尚未写入所述第三block的数据,其中所述第三block的有效容量小于所述第二目标数据的大小;
所述主控制器将所述第二目标数据中尚未写入所述第三block的数据写入所述第二block;
所述主控制器为所述第二block增加所述数据标记。
第五方面,本发明实施例提供了一种存储系统,所述存储系统包括第一方面或第一方面的第一种至第三种任意一种可能的实现方式的闪存装置和控制器;其中,所述控制器用于向所述闪存装置发送第一目标数据。
第六方面,本发明实施例提供了一种存储系统,所述存储系统包括第二方面或第二方面的第一种至第三种任意一种可能实现方式的闪存装置和控制器;其中,所述控制器用于向所述闪存装置发送第一目标数据。
本发明实施例提供了一种将数据写入闪存装置的方法、闪存装置和存储系统。在本发明实施例中,当所述多个block中第一block的有效容量小于第一目标数据的大小时,闪存装置的主控制器将所述第一目标数据划分为所述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据,其中,所述第一目标数据的第一部分数据的大小为所述第一block的有效容量,所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所述第一目标数据的第一部分数据的大小;从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;将所述第一目标数据的第一部分数据写入所述第一block,并且将所述第一目标数据的第二部分数据写入所述第二block。由于第二block是已写入数据并未被写满的block,因此按照本发明实施例的实施方式,可以将第一目标数据中大于第一block的有效容量的部分集中存储到第二block,而不会选择新的block来存储这部分数据,由此提高了块的利用率,节省了SSD的存储空间。
另外,本发明实施例提供了另一种将数据写入闪存装置的方法、闪存装置和存储系统。在本发明实施例中,主控制器接收第一目标数据,将所述第一目标数据写入多个block中的第一block;当所述第一block被写满时,所述主控制器获得所述第一目标数据中尚未写入所述第一block的数据,其中所述第一block的有效容量小于所述第一目标数据的大小;所述主控制器从所述多个block中确定第二block,所述第二block是已写入数据并未被写满的block;所述主控制器将所述第一目标数据中尚未写入所述第一block的数据写入所述第二block。在本实施例中,主控制器可以获得第一目标数据中尚未写入所述第一block的数据,将其写入第二block,并且第二block是已写入数据并未被写满的block,因此按照本发明实施例的实施方式,可以将第一目标数据中大于第一block的有效容量的部分集中存储到第二block,而不会选择新的block来存储这部分数据,由此提高了块的利用率,节省了SSD的存储空间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的存储系统的组成图;
图2是本发明实施例提供的闪存装置的主控制器的结构示意图;
图3是本发明实施例提供的闪存装置的存储介质的结构示意图;
图4是是本发明实施例提供的一种将数据写入闪存装置的流程示意图;
图5是是本发明实施例提供的一种将数据写入闪存装置的场景示意图;
图6是是本发明实施例提供的另一种将数据写入闪存装置的场景示意图;
图7是是本发明实施例提供的另一种将数据写入闪存装置的流程示意图。
具体实施方式
本发明实施例提出了一种将数据写入闪存装置的方法、闪存装置和存储系统,能够提高block的空间利用率。
图1描绘了本发明实施例提供的存储系统的组成图,图1所示的存储系统包括控制器11和闪存装置22。其中,闪存装置22是以Flash颗粒为存储介质的存储装置,可以包括固态硬盘(Solid State Device,SSD),又名固态驱动器(Solid State Drive,SSD),还可能包括其他存储器。本实施例中,闪存装置22以SSD为例说明。
图1仅是示例性说明,并不限定具体的组网方式,如:级联树形组网、环状组网都可以。只要控制器11和闪存装置22之间能够相互通信。
控制器11可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。在控制器内部,安装有操作系统以及其他应用程序。控制器11可以向闪存装置22发送输入输出(I/O)请求。例如,向闪存装置22发送写数据请求,使得闪存装置22将写数据请求中携带的待写入数据写入存储介质中。需要说明的是,在本发明实施例中I/O请求可以是写数据请求或者读数据请求。
闪存装置22包括主控制器220和存储介质221。
主控制器220用于接收并执行来自控制器11的I/O请求。存储介质221作为存储介质用于存储数据。
请参考图2,图2是本发明实施例闪存装置22的主控制器220的结构示意图。如图2所示,主控制器220主要包括处理器(processor)218、内存(cache)230、通信总线(简称总线)226以及通信接口(Communication Interface)228。处理器218、内存230以及通信接口228通过通信总线226完成相互间的通信。
通信接口228,用于与控制器11或存储介质221通信。
内存230用于缓存从控制器11接收的数据或从存储介质221读取的数据。内存230可以是RAM、ROM、闪存(Flash memory)或固态硬盘(Solid State Disk,SSD)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定。举例来说,当接收到控制器11发送的写数据请求时,可以将所述写数据请求保存在内存230中,由处理器218对其进行处理。另外,在某些应用场景下,内存230也可以置于主控制器220的外部。
处理器218可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。在本发明实施例中,处理器218可以用于接收来自主机的写数据请求或者读数据请求、处理所述写数据请求或者读数据请求、将所述写数据请求或者读数据请求发送给存储介质221以及其他操作。
处理器218中还可以包括缓存(图中未示出),用于存储各种程序指令。例如,缓存中可以包括闪存转换层(Flash Translation Layer,FTL)。处理器218可以通过FTL进行坏页统计等操作,并且将坏页统计的结果保存在其配置信息中。或者,处理器218也可以通过其他软件模块来实现类似的功能,因此,凡是功能与FTL类似,可以进行坏页统计等操作,并且将坏页统计的结果保存在其配置信息中的软件模块都在本发明实施例的保护范围之内。
另外,内存230和处理器218中的缓存可以合设或者分开设置,本发明实施例对此不做限定。
请参考图3,图3是本发明实施例存储介质221的结构示意图。本实施例中,存储介质221是指Flash颗粒,可以是单层单元(全称:Single Layer Cell,简称:SLC),也可以是多层单元(全称:Multi-Layer Cell,简称:MLC),还可以是其他存储单元。
存储介质221通常由若干个闪存(Flash)芯片组成。在SSD内部利用通道(channel)将若干个闪存芯片连接起来。各个通道之间可以实现写数据请求的并发处理。以图3所示的4个通道为例,如果主控制器220收到控制器11发送的4个写数据请求,可以由4个通道分别执行一个写数据请求,由此提高处理写数据请求的效率。
每个闪存芯片包括若干个块(block),SSD进行的擦除操作就是以block为单位来执行的。本领域技术人员可知,由于闪存颗粒的擦除特性,保存在block中的数据不会像普通机械硬盘那样直接被修改。当需要对某个block中的数据进行修改时,SSD主控制器220会找到一个新的block将修改后的数据写入该新的block,那么,原来的block中的数据则变为无效数据。待SSD进行垃圾回收时,这些无效数据将会被擦除。例如,当SSD需要进行垃圾回收时,可以先将一个block中的有效数据搬移到另一个新的block中去,然后再将原来的block中存储的所有数据(包括有效数据和无效数据)擦除掉。当一个block被擦除干净后,就成为一个空白的block。在本发明实施例中,block中的有效数据是指block中保存的没有被修改过的数据,这部分数据可能会被读取;block中的无效数据是指block中保存的已经被修改过的数据,这部分数据不可能会被读取。
其中,每个block可以包含若干个页(page)。在某些情况下,block中的page可能会发生损坏,发生损坏的页在本发明实施例中被称作坏页。当block中出现坏页时,该block所能保存数据的实际的容量就比未包含坏页的block所能保存数据的容量小。在本发明实施例中,将block所能保存数据的实际的容量称作有效容量。例如,一个block的标准容量是1M,每个page的大小为4KB,当该block中出现1个坏页时,该block的有效容量即为1M减去4KB。在本发明实施例中,block的标准容量是指不包含坏页的空白的block的容量,空白的block是指被擦除干净,不包含有效数据,也不包含无效数据的block。block的有效容量等于block的标准容量减去坏页的容量,其中坏页的容量等于每个坏页的尺寸与坏页个数的乘积。
在本发明实施例中,block的标准容量可以预先保存在控制器11中,用于控制器11向闪存装置22发送与标准容量相同大小的目标数据。每个block的标准容量均是2的N次方(M),其中,N为正整数。每个block的标准容量可以相同也可以不同。当block的标准容量不同时,N的取值可以不同,此时,控制器11向闪存装置22发送的目标数据的大小等于最大的block的标准容量。
另外,在本发明实施例中,SSD在执行写数据请求时,也是以page为单位来写数据的。举例来说,接收控制器11向主控制器220发送一个写数据请求,其中,所述写数据请求携带有一段逻辑块地址(Logical Block Address,LBA)和目标数据,所述LBA是控制器11所能访问的地址。当主控制器220接收到所述写数据请求时,可以按照预定策略将所述目标数据写入某个block中,写入的多个page的地址就是实际存储所述目标数据的地址,又称物理地址。SSD可以建立并保存所述一段LBA与多个page的地址之间的对应关系,所述一段LBA与多个page的地址之间的对应关系是由FTL管理的。当后续控制器11向主控制器220发送读数据请求,要求读取所述目标数据时,所述读数据请求中携带所述LBA,此时,主控制器220可以根据所述LBA、以及所述LBA与物理地址之间的对应关系读取出所述目标数据,并返回给控制器11。
下面介绍本发明实施例将数据写入闪存装置的流程,本发明实施例中的数据写入闪存装置的方法可以在图2以及图3所示的闪存装置中实施,如图4所示,包括:
步骤S101:主控制器220接收第一目标数据。
其中,所述第一目标数据可以是控制器11发送给主控制器220的。另外所述第一目标数据可以是一个写数据请求中携带的数据,也可以是多个写数据请求中携带的数据,其大小与block的标准容量相同。所述block的标准容量可以是预先保存在控制器11中的。
具体的,执行步骤S101的可以是处理器218,处理器218通过通信接口228接收控制器11发送的第一目标数据之后,可以将其写入内存230中。
步骤S102:主控制器220将所述第一目标数据写入多个block中的第一block。
其中,一种可选的实现方式是,处理器218随机选择一个空白的block,而这个空白的block恰好是包含坏页的block,由于第一block包含坏页,其有效容量就小于其标准容量,具体的,第一block的有效容量等于标准容量减去第一block包含的坏页的容量。
具体的,处理器218在执行步骤S102之前可以不统计所述第一block的坏页信息,直接执行写入数据的操作。可以理解的是,处理器218在执行写入数据的操作之前也可以事先统计出第一block的坏页信息。
然而,所述第一目标数据不能完全写入所述第一block,因为所述第一目标数据的大小为所述第一block的标准容量,当第一block包含坏页时,其有效容量就会小于其标准容量。
为了描述方便,可参考图5所示的示例,图5是将数据写入第一block和第二block的场景示意图。
如图5所示,第一目标数据被写入第一block,所述第一block包含坏页。
步骤S103:当所述第一block被写满时,主控制器220获得所述第一目标数据中尚未写入所述第一block的数据。
具体的,执行步骤S104的是处理器218。
所述第一目标数据中尚未写入所述第一block的数据的大小为所述第一block中坏页的容量。由于第一目标数据的大小大于所述第一block的有效容量,因此,当第一block被写满时,尚有一部分数据没能写入所述第一block,该部分数据大小为所述第一block中坏页的容量。为了描述方便,在后面的步骤中将这部分没能写入所述第一block的数据称为溢出数据。
如图5所示,当第一目标数据写入第一block时,第一block被写满,图5所示的第一block中的阴影部分即写入的第一目标数据。
步骤S104:主控制器220确定第二block,所述第二block是已写入数据并未被写满的block。
具体的,执行步骤S104的是处理器218。
第二block可以是闪存装置22在初始化时设置的专门用于存储溢出数据的block;或者,第二block可以具有数据标记,所述数据标记用于标识已写入数据并未被写满的block。所述数据标记可以是第二block的一个属性,该属性的取值可以是数值、字母、字符串等。本发明实施例并不对所述数据标记的形式做任何限定,只要其作用是标识已写入数据并未被写满的block的标记都在本发明实施例的保护范围以内。由此,主控制器220可以根据所述数据标记确定第二block。其中,所述数据标记可以是闪存装置22在执行之前的写数据请求发生数据溢出的情况时,将溢出的数据存储到某个block后,给所述block增加的标记。增加所述数据标记之后所述block就作为第二block专门用于存储溢出数据的block。每次闪存装置22执行写数据操作时,如果发生数据溢出的情况,将溢出的数据写入第二block中。可以理解的是,当第二block被写满时,闪存装置22可以从多个block中选择一个新的block作为第二block继续存储溢出的数据。如图5所示,第二block中已保存有数据(图5中所示的原有的数据),另外,第二block可能包含坏页,也可能不包含坏页。
需要说明的是,本实施例是以SSD中一个通道为例进行举例说明的,对于SSD的一个通道而言,只存在一个已写入数据并未被写满的block。当SSD具有多个通道时,每个通道都有一个已写入数据并未被写满的block。另外,本发明实施例也可以在一个通道内多个并发单元之间实现多个I/O请求的并发处理,此时每个并发单元中只存在一个已写入数据并未被写满的block。
步骤S105:主控制器220将所述第一目标数据中尚未写入所述第一block的数据写入所述第二block。
具体的,执行步骤S105的是处理器218。
如图5所示,第一目标数据的剩余数据被写入第二block中。
本发明实施例中,主控制器220接收第一目标数据,从多个block中选择第一block,由于第一block的有效容量小于所述第一目标数据的大小,因此第一block没有足够的容量保存完整的第一目标数据,当所述第一block被写满时,主控制器220获得所述第一目标数据中尚未写入所述第一block的数据,将其写入第二block,其中,第二block是已写入数据并未被写满的block。由于第一目标数据溢出的部分被写入已写入数据并未被写满的block,避免了重新查找新的空白的block来存储溢出的数据,从而提高了block的利用率。
为了进一步说明本发明实施例的技术效果,在上述实施例中,在步骤S101之前,主控制器220还可以接收控制器11发送的第二目标数据,所述第二目标数据的大小与block的标准容量相同。主控制器220将所述第二目标数据写入多个block中的第三block,与第一block类似,第三block是空白的且包含坏页的block,因此第三block的有效容量小于第二目标数据的大小。当所述第三block被写满时,主控制器220获得所述第二目标数据中尚未写入所述第三block的数据,将所述第二目标数据中尚未写入所述第三block的数据写入第二block。并且,主控制器220在将所述第二目标数据中尚未写入所述第三block的数据写入第二block之后可以为所述第二block增加数据标记,所述数据标记用于标识所述第二block是已写入数据并未被写满的block。因此,当后续主控制器220接收到其他目标数据,写入空白的block发生溢出的情况时,都可以将溢出的数据写入所述第二block,从而最大限度地提高了SSD中block的利用率。
另外,在图4所示的实施例中,一种优选的实施方式是:步骤S104可以在步骤S101-步骤S103之后执行。换而言之,在这种实施方式中,主控制器220首先需要将第一目标数据写入第一block(空白且包含坏页的block),获得所述第一目标数据中尚未写入第一block的数据之后,再确定第二block(已写入数据并未被写满的block)。这种实施方式带来的好处是,能够保证一段连续的LBA对应的数据最大限度地存储在一个block中。
为了说明上述实施方式的技术效果,这里以图6来对比解释。图6是另一种将数据写入闪存装置22的实施例的场景示意图,如图6所示:
当闪存装置22接收第一目标数据时,首先确定第二block,并且将第一目标数据写入第二block,由于第二block已保存有数据(在图6中被称为原有的数据),第一目标数据在写入第二block时,可以接着原有的数据往下写,直至填满第二block。由于第二block已保存有数据,并且可能还包含有坏页,所以第一目标数据不能被完整地写入第二block。当第二block被写满时,可以获得第一目标数据尚未写入第二block的数据,其中第一目标数据尚未写入第二block的数据的大小为:第二block中原有的数据的大小与第二block包含的坏页的容量之和。然后,可以从多个block选择一个空白的block(本发明实施例中的第一block),将第一目标数据尚未写入第二block的数据写入第一block。
由前面的描述以及图6可知,第一目标数据被分别保存在第一block和第二block,但是与图5所示的实施方式不同的是,在图6所示的实施方式中,无论是第一block还是第二block,其保存的数据都没有图5中的第一block保存的数据多。
并且,根据前面的描述可知,当SSD将目标数据写入block之后,写入的block中多个page的地址就是实际存储所述目标数据的地址,又称物理地址。当目标数据最大限度地存储在一个block中时,其物理地址的连续程度也最高,当对所述block进行垃圾回收时,产生的碎片最少。
下面介绍本发明实施例将数据写入闪存装置的另一个方法流程,该方法可以在图2以及图3所示的闪存装置中实施,如图7所示,包括:
步骤S201:与图4所示的实施例中的步骤S101相同,请参见步骤S101的描述。
步骤S202:当所述多个block中的第一block的有效容量小于所述第一目标数据的大小时,主控制器220将所述第一目标数据划分为所述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据,其中,所述第一目标数据的第一部分数据的大小为所述第一block的有效容量,所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所述第一目标数据的第一部分数据的大小。
当主控制器220接收第一目标数据时,为了存储该第一目标数据,可以从SSD中的多个block中选择第一block,其中,第一block是空白的block。然而,第一block可能是包含坏页的block,当第一block包含坏页时,其有效容量就小于第一目标数据的大小,因为第一目标数据的大小等于block的标准容量。
具体的,对于SSD中包含的多个block,处理器218可以通过FTL统计并记录各个block的坏页信息,这里的坏页信息是指block中是否含有坏页,以及包含坏页的个数或者容量等信息。
可选的,处理器218可以将统计出的各个block的坏页信息保存在FTL的配置信息中。当接收到控制器11发送的第一目标数据时,处理器218根据FTL中保存的坏页信息选择一个空白的block。需要说明的是,处理器218在选择空白的block时,可以根据FTL中保存的坏页信息优先选择一个不包含坏页的空白的block,此时,处理器218可以直接将接收到的第一目标数据写入所述不包含坏页的空白的block中。
然而,本发明实施例重点讨论的是处理器218在选择空白的block时,选择到一个包含坏页的空白的block。其原因可能是不包含坏页的空白的block已经被用完了,也可能是处理器218随机选择到了一个包含坏页的空白的block,或者其他原因。对此,本发明实施例不做详细讨论。
另外,在本发明实施例中,处理器218可以优先选择坏页较少的空白的block。
当第一block的有效容量小于所述第一目标数据的大小时,处理器218可以根据第一block的坏页信息将所述第一目标数据划分为第一部分数据和第二部分数据。
当坏页信息是所述第一block包含的坏页的个数时,所述第一block包含的坏页的容量为所述坏页的个数乘以每个坏页的尺寸,那么所述第一block的有效容量为所述block的标准容量减去所述坏页的容量,从而获得第一部分数据的大小。此外,坏页信息还可以是所述第一block包含的坏页的容量,也可以是所述第一block的有效容量,或者其他可以用于获得所述第一block的有效容量的信息。
另外,若所述第一目标数据是控制器11发送给主控制器220的一个写数据请求中携带的,那么所述将所述第一目标数据划分为第一部分数据和第二部分数据具体可以是,将所述写数据请求拆分成两个写数据请求,其中,拆分后的每个写数据请求中分别携带第一部分数据或者第二部分数据。若所述第一目标数据是控制器11发送给主控制器220的多个写数据请求中携带的,那么所述将所述第一目标数据划分为第一部分数据和第二部分数据具体可以是,将所述多个写数据请求划分为两部分写数据请求,其中,第一部分写数据请求携带的数据为第一部分数据,第二部分写数据请求携带的数据为第二部分数据。
步骤S203:主控制器220从多个block中确定第二block,所述第二block是已写入数据并未被写满的block。
具体的,执行步骤S203的是处理器218。
第二block可以是闪存装置22在初始化时设置的专门用于存储溢出数据的block;或者,第二block可以具有数据标记,所述数据标记用于标识已写入数据并未被写满的block。由此,主控制器220可以根据所述数据标记确定第二block。其中,所述数据标记可以是闪存装置22在执行之前的写数据请求发生数据溢出的情况时,将溢出的数据存储到某个block后,给所述block增加的标记。增加所述数据标记之后所述block就作为第二block专门用于存储溢出数据的block。每次闪存装置22执行写数据操作时,如果发生数据溢出的情况,将溢出的数据写入第二block中。可以理解的是,当第二block被写满时,闪存装置22可以多个block中选择一个新的block作为第二block继续存储溢出的数据。
需要说明的是,本实施例是以SSD中一个通道为例进行举例说明的,对于SSD的一个通道而言,只存在一个已写入数据并未被写满的block。当SSD具有多个通道时,每个通道都有一个已写入数据并未被写满的block。
步骤S204:主控制器220将所述第一目标数据的第一部分数据写入所述第一block,并且将所述第一目标数据的第二部分数据写入所述第二block。
可选的,处理器218可以并行地将两部分数据分别写入两个block,也可以先将第一部分数据写入所述第一block,再将第二部分数据写入所述第二block,或者先将第二部分数据写入所述第二block,再将第一部分数据写入所述第一block,在此不做限定。
与图4所示的实施例不同之处在于,在图6所示的实施例中主控制器220在将第一目标数据写入第一block和第二block之前需要将第一目标数据划分为第一部分数据和第二部分数据,其中第一部分数据的大小与第一block的有效容量相同,第二部分数据的大小和第一block的坏页的容量相同,划分完成之后主控制器220再将两部分数据分别写入两个block。由于第一目标数据溢出的部分被写入已写入数据并未被写满的block,因此按照这种实现方式,也可以提高block的利用率。
同样的,与图4所示的实施例类似,在步骤S201之前,主控制器220还可以接收控制器11发送的第二目标数据,所述第二目标数据的大小与block的标准容量相同。当多个block中的第三block是空白的且包含坏页的block时,第三block的有效容量小于第二目标数据的大小。主控制器220可以将第二目标数据划分为第一部分数据和第二部分数据,其中,第一部分数据的大小与第三block的有效容量相同,第二部分数据的大小为第二目标数据的大小减去第一部分数据的大小。并且,主控制器220还需要从多个block中选择一个block用于存储第二部分数据,将所述第二部分数据写入所述选择出的block之后可以为所述block增加数据标记,所述数据标记用于标识所述block是已写入数据并未被写满的block。也就是是前面描述的第二block。因此,当后续主控制器220接收到其他目标数据,写入空白的block发生溢出的情况时,都可以将溢出的数据写入所述第二block,从而最大限度地提高了SSD中block的利用率。另外,需要说明的是,当本实施例中的第二block被写满时,可以选择一个新的block作为第二block,用于保存目标数据溢出的部分。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (18)
1.一种闪存装置,其特征在于,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块;
所述主控制器,用于接收第一目标数据,当所述多个块中第一块的有效容量小于所述第一目标数据的大小时,将所述第一目标数据划分为所述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据,其中,所述第一目标数据的第一部分数据的大小为所述第一块的有效容量,所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所述第一目标数据的第一部分数据的大小;
从所述多个块中确定第二块,所述第二块是已写入数据并未被写满的块;
将所述第一目标数据的第一部分数据写入所述第一块,并且将所述第一目标数据的第二部分数据写入所述第二块。
2.根据权利要求1所述的闪存装置,其特征在于,所述第二块是预先设定的块。
3.根据权利要求1所述的闪存装置,其特征在于,所述第二块具有数据标记,所述数据标记用于标识已写入数据并未被写满的块;
所述主控制器具体用于根据所述数据标记从所述多个块中确定所述第二块。
4.根据权利要求3所述的闪存装置,其特征在于,
所述主控制器,还用于接收第二目标数据,当所述多个块中第三块的有效容量小于所述第二目标数据的大小时,将所述第二目标数据划分为所述第二目标数据的第一部分数据和所述第二目标数据的第二部分数据,其中,所述第二目标数据的第一部分数据的大小为所述第三块的有效容量,所述第二目标数据的第二部分数据的大小为所述第二目标数据的大小减去所述第二目标数据的第一部分数据的大小;
将所述第二目标数据的第一部分数据写入所述第三块,并且将所述第二目标数据的第二部分数据写入所述第二块;
为所述第二块增加所述数据标记。
5.一种闪存装置,其特征在于,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块;
所述主控制器,用于接收第一目标数据,将所述第一目标数据写入所述多个块中的第一块;
当所述第一块被写满时,获得所述第一目标数据中尚未写入所述第一块的数据,其中所述第一块的有效容量小于所述第一目标数据的大小;
从所述多个块中确定第二块,所述第二块是已写入数据并未被写满的块;
将所述第一目标数据中尚未写入所述第一块的数据写入所述第二块。
6.根据权利要求5所述的闪存装置,其特征在于,所述第二块是预先设定的块。
7.根据权利要求5所述的闪存装置,其特征在于,所述第二块具有数据标记,所述数据标记用于标识已写入数据并未被写满的块;
所述主控制器具体用于根据所述数据标记从所述多个块中确定所述第二块。
8.根据权利要求7所述的闪存装置,其特征在于,
所述主控制器,还用于接收第二目标数据,将所述第二目标数据写入所述多个块中的第三块;
当所述第三块被写满时,获得所述第二目标数据中尚未写入所述第三块的数据,其中所述第三块的有效容量小于所述第二目标数据的大小;
将所述第二目标数据中尚未写入所述第三块的数据写入所述第二块;
为所述第二块增加所述数据标记。
9.一种将数据写入闪存装置的方法,其特征在于,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块,所述方法包括:
所述主控制器接收第一目标数据,当所述多个块中的第一块的有效容量小于所述第一目标数据的大小时,将所述第一目标数据划分为所述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据,其中,所述第一目标数据的第一部分数据的大小为所述第一块的有效容量,所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所述第一目标数据的第一部分数据的大小;
所述主控制器从所述多个块中确定第二块,所述第二块是已写入数据并未被写满的块;
所述主控制器将所述第一目标数据的第一部分数据写入所述第一块,并且将所述第一目标数据的第二部分数据写入所述第二块。
10.根据权利要求9所述的方法,其特征在于,所述第二块是预先设定的块。
11.根据权利要求9所述的方法,其特征在于,所述第二块具有数据标记,所述数据标记用于标识已写入数据并未被写满的块;
所述主控制器从所述多个块中确定第二块包括:所述主控制器根据所述数据标记从所述多个块中确定所述第二块。
12.根据权利要求11所述的方法,其特征在于,还包括:
所述主控制器接收第二目标数据,当所述多个块中的第三块的有效容量小于所述第二目标数据的大小时,将所述第二目标数据划分为第二目标数据的第一部分数据和第二目标数据的第二部分数据,其中,所述第二目标数据的第一部分数据的大小为所述第三块的有效容量,所述第二目标数据的第二部分数据的大小为所述第二目标数据的大小减去所述第二目标数据的第一部分数据的大小;
所述主控制器将所述第二目标数据的第一部分数据写入所述第三块,并且将所述第二目标数据的第二部分数据写入所述第二块;
所述主控制器为所述第二块增加所述数据标记。
13.一种将数据写入闪存装置的方法,其特征在于,所述闪存装置包括主控制器和闪存芯片,所述闪存芯片包含多个块,所述方法包括:
所述主控制器接收第一目标数据,将所述第一目标数据写入所述多个块中的第一块;
当所述第一块被写满时,所述主控制器获得所述第一目标数据中尚未写入所述第一块的数据,其中所述第一块的有效容量小于所述第一目标数据的大小;
所述主控制器从所述多个块中确定第二块,所述第二块是已写入数据并未被写满的块;
所述主控制器将所述第一目标数据中尚未写入所述第一块的数据写入所述第二块。
14.根据权利要求13所述的方法,其特征在于,所述第二块是预先设定的块。
15.根据权利要求13所述的方法,其特征在于,所述第二块包含数据标记,所述数据标记用于标识已写入数据并未被写满的块;
所述主控制器从所述多个块中确定第二块包括:所述主控制器根据所述数据标记从所述多个块中确定所述第二块。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
所述主控制器接收第二目标数据,将所述第二目标数据写入所述多个块中的第三块;
当所述第三块被写满时,所述主控制器获得所述第二目标数据中尚未写入所述第三块的数据,其中所述第三块的有效容量小于所述第二目标数据的大小;
所述主控制器将所述第二目标数据中尚未写入所述第三块的数据写入所述第二块;
所述主控制器为所述第二块增加所述数据标记。
17.一种存储系统,其特征在于,所述存储系统包括如权利要求1-4任一所述的闪存装置和控制器;其中,所述控制器用于向所述闪存装置发送第一目标数据。
18.一种存储系统,其特征在于,所述存储系统包括如权利要求5-8任一所述的闪存装置和控制器;其中,所述控制器用于向所述闪存装置发送第一目标数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/080998 WO2015196470A1 (zh) | 2014-06-27 | 2014-06-27 | 一种将数据写入闪存装置的方法、闪存装置和存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105745628A CN105745628A (zh) | 2016-07-06 |
CN105745628B true CN105745628B (zh) | 2017-09-05 |
Family
ID=54936527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480044289.5A Active CN105745628B (zh) | 2014-06-27 | 2014-06-27 | 一种将数据写入闪存装置的方法、闪存装置和存储系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10203899B2 (zh) |
EP (1) | EP3196767B1 (zh) |
JP (1) | JP6130971B2 (zh) |
KR (1) | KR101730151B1 (zh) |
CN (1) | CN105745628B (zh) |
CA (1) | CA2896369C (zh) |
WO (1) | WO2015196470A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018119901A1 (zh) | 2016-12-29 | 2018-07-05 | 华为技术有限公司 | 存储系统和固态硬盘 |
CN114546293A (zh) | 2017-09-22 | 2022-05-27 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
TWI726475B (zh) * | 2017-09-22 | 2021-05-01 | 慧榮科技股份有限公司 | 快閃記憶體的資料內部搬移方法以及使用該方法的裝置 |
CN109189337B (zh) * | 2018-08-21 | 2021-12-17 | 浪潮电子信息产业股份有限公司 | 一种选择数据块的方法、装置、设备及可读存储介质 |
CN110069215B (zh) * | 2019-03-27 | 2022-11-04 | 浙江宇视科技有限公司 | 一种基于块存储的动态调整存储单元的方法及装置 |
CN113296681A (zh) * | 2020-02-24 | 2021-08-24 | 合肥杰发科技有限公司 | 存储空间的管理方法、终端及具有存储功能的装置 |
CN114546296B (zh) * | 2022-04-25 | 2022-07-01 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的全闪存系统和地址映射方法 |
CN116719485B (zh) * | 2023-08-09 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383690A (zh) * | 2012-05-04 | 2013-11-06 | 深圳市腾讯计算机系统有限公司 | 分布式数据存储方法及系统 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09319645A (ja) * | 1996-05-24 | 1997-12-12 | Nec Corp | 不揮発性半導体記憶装置 |
JP4856400B2 (ja) * | 2005-07-06 | 2012-01-18 | ルネサスエレクトロニクス株式会社 | 記憶装置及び情報処理端末 |
US20100017557A1 (en) * | 2006-07-26 | 2010-01-21 | Panasonic Corporation | Memory controller, nonvolatile memory device,access device, and nonvolatile memory system |
KR100849221B1 (ko) * | 2006-10-19 | 2008-07-31 | 삼성전자주식회사 | 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치 |
TW200837551A (en) * | 2007-03-02 | 2008-09-16 | A Data Technology Co Ltd | Storage device capable of cooperating to adjust reliability, method for establishing and input data thereof |
CN101271429A (zh) * | 2007-03-23 | 2008-09-24 | 华为技术有限公司 | 一种数据存储方法及装置 |
US7962683B2 (en) * | 2007-08-15 | 2011-06-14 | Silicon Motion, Inc. | Flash memory, and method for operating a flash memory |
CN101464834B (zh) * | 2007-12-19 | 2011-01-26 | 群联电子股份有限公司 | 闪存数据写入方法及使用此方法的控制器 |
US20090259806A1 (en) * | 2008-04-15 | 2009-10-15 | Adtron, Inc. | Flash management using bad page tracking and high defect flash memory |
CN101320594B (zh) | 2008-05-21 | 2012-02-29 | 深圳市硅格半导体有限公司 | 一种闪存芯片的物理操作方法 |
TWI390548B (zh) | 2008-07-03 | 2013-03-21 | Silicon Motion Inc | 資料儲存方法及其儲存裝置 |
US8438325B2 (en) * | 2008-10-09 | 2013-05-07 | Cadence Design Systems, Inc. | Method and apparatus for improving small write performance in a non-volatile memory |
CN101727293B (zh) | 2008-10-23 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种固态硬盘ssd存储的设置方法、装置和系统 |
US20100146239A1 (en) * | 2008-12-08 | 2010-06-10 | Infinite Memories Ltd. | Continuous address space in non-volatile-memories (nvm) using efficient embedded management of array deficiencies |
US20100235605A1 (en) * | 2009-02-13 | 2010-09-16 | Nir Perry | Enhancement of storage life expectancy by bad block management |
JP2011123830A (ja) * | 2009-12-14 | 2011-06-23 | Toshiba Corp | データ書き込み装置及びデータ書き込み方法 |
TWI413897B (zh) * | 2010-01-20 | 2013-11-01 | Silicon Motion Inc | 快閃記憶體之資料存取方法以及快閃記憶體裝置 |
JP5319723B2 (ja) * | 2011-03-24 | 2013-10-16 | 株式会社東芝 | メモリシステムおよびプログラム |
JP2013068993A (ja) * | 2011-09-20 | 2013-04-18 | Toshiba Corp | メモリコントローラ |
JP5547154B2 (ja) * | 2011-09-21 | 2014-07-09 | 株式会社東芝 | メモリ・デバイス |
CN102622306B (zh) | 2012-02-21 | 2014-11-26 | 中颖电子股份有限公司 | 存储装置的坏块管理方法 |
TWI605458B (zh) | 2012-04-25 | 2017-11-11 | Sony Corp | Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods |
JP6219560B2 (ja) * | 2012-09-21 | 2017-10-25 | 株式会社フィックスターズ | 情報処理装置、情報処理方法、およびプログラム |
CN103106125B (zh) | 2013-01-04 | 2016-09-28 | 国网山东省电力公司胶州市供电公司 | 基于存储块修复的闪存存储方法 |
-
2014
- 2014-06-27 KR KR1020157020619A patent/KR101730151B1/ko active IP Right Grant
- 2014-06-27 CN CN201480044289.5A patent/CN105745628B/zh active Active
- 2014-06-27 WO PCT/CN2014/080998 patent/WO2015196470A1/zh active Application Filing
- 2014-06-27 CA CA2896369A patent/CA2896369C/en active Active
- 2014-06-27 JP JP2016528320A patent/JP6130971B2/ja active Active
- 2014-06-27 EP EP14877558.8A patent/EP3196767B1/en active Active
-
2015
- 2015-12-22 US US14/979,000 patent/US10203899B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383690A (zh) * | 2012-05-04 | 2013-11-06 | 深圳市腾讯计算机系统有限公司 | 分布式数据存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20160016744A (ko) | 2016-02-15 |
EP3196767A4 (en) | 2017-08-16 |
CN105745628A (zh) | 2016-07-06 |
US10203899B2 (en) | 2019-02-12 |
WO2015196470A1 (zh) | 2015-12-30 |
KR101730151B1 (ko) | 2017-04-25 |
JP6130971B2 (ja) | 2017-05-17 |
US20160110107A1 (en) | 2016-04-21 |
EP3196767A1 (en) | 2017-07-26 |
CA2896369C (en) | 2017-08-15 |
JP2016524770A (ja) | 2016-08-18 |
EP3196767B1 (en) | 2020-08-05 |
CA2896369A1 (en) | 2015-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105745628B (zh) | 一种将数据写入闪存装置的方法、闪存装置和存储系统 | |
CN105830166B (zh) | 一种控制器、闪存装置和将数据写入闪存装置的方法 | |
CN104808951B (zh) | 进行存储控制的方法和设备 | |
US9645924B2 (en) | Garbage collection scaling | |
CN107273042B (zh) | 重复删除dram系统算法架构的存储器模块及方法 | |
CN104484283B (zh) | 一种降低固态硬盘写放大的方法 | |
RU2661280C2 (ru) | Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
US8650379B2 (en) | Data processing method for nonvolatile memory system | |
CN102201259A (zh) | 非易失性存储器的平均抹写方法 | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
CN108139902A (zh) | 用于提供混合模式来访问ssd驱动器的方法和装置 | |
US11010079B2 (en) | Concept for storing file system metadata within solid-stage storage devices | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
WO2012170848A1 (en) | Dual flash translation layer | |
CN107102819A (zh) | 向固态硬盘写入数据的方法及设备 | |
KR102430198B1 (ko) | 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법 | |
CN109144886A (zh) | 数据储存装置 | |
CN104102458A (zh) | 多核cpu的负载均衡方法、多核cpu及固态硬盘 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
JP2007220107A (ja) | 不揮発性メモリのマッピング情報管理装置及び方法 | |
KR101626218B1 (ko) | 블록 기반의 페이지 매핑 방법 | |
US20130138910A1 (en) | Information Processing Apparatus and Write Control Method | |
CN108228103A (zh) | 一种ssd硬盘的数据处理方法和装置 | |
CN104408126A (zh) | 一种数据库的持久化写入方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |