CN105745628A - 一种将数据写入闪存装置的方法、闪存装置和存储系统 - Google Patents
一种将数据写入闪存装置的方法、闪存装置和存储系统 Download PDFInfo
- Publication number
- CN105745628A CN105745628A CN201480044289.5A CN201480044289A CN105745628A CN 105745628 A CN105745628 A CN 105745628A CN 201480044289 A CN201480044289 A CN 201480044289A CN 105745628 A CN105745628 A CN 105745628A
- Authority
- CN
- China
- Prior art keywords
- block
- data
- write
- master controller
- size
- 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
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颗粒为存储介质的闪存装置可能是固态硬盘(Sol id State Device , SSD), 又名固态驱动器 ( Sol id State 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是预先设定的 blocko
在第二方面的第二种可能的实现方式中,所述第二 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的数据写 入所述第二 b l ock o
在第四方面的第一种可能的实现方式中,所述第二 block是预先设定的 blocko
在第四方面的第二种可能的实现方式中,所述第二 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颗粒为存储 介质的存储装置, 可以包括固态硬盘 (Sol id State Device , SSD ) , 又名固 态驱动器 (Sol id 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以及通信接口(Communicat ion Interface) 228 ο 处理器 218、 内存 230以及通信接口 228通过通信总线 226 完成相互间的通信。
通信接口 228, 用于与控制器 11或存储介质 221通信。
内存 230用于缓存从控制器 11接收的数据或从存储介质 221读取的数 据。内存 230可以是 RAM、R0M、闪存(Flash memory )或固态硬盘(Sol id State Di sk, SSD) 等各种可以存储数据的非短暂性的 (non-transitory) 机器可 读介质, 在此不做限定。 举例来说, 当接收到控制器 11发送的写数据请求
时,可以将所述写数据请求保存在内存 230中,由处理器 218对其进行处理。 另外, 在某些应用场景下, 内存 230也可以置于主控制器 220的外部。
处理器 218可能是一个中央处理器 CPU, 或者是特定集成电路 ASIC (Appl ication Spec ific Integrated Circuit ) , 或者是被配置成实施本发 明实施例的一个或多个集成电路。 在本发明实施例中, 处理器 218可以用于 接收来自主机的写数据请求或者读数据请求、处理所述写数据请求或者读数 据请求、将所述写数据请求或者读数据请求发送给存储介质 221以及其他操 作。
处理器 218中还可以包括缓存(图中未示出), 用于存储各种程序指令。 例如, 缓存中可以包括闪存转换层 (Flash Translation Layer , FTL)。 处 理器 218可以通过 FTL进行坏页统计等操作, 并且将坏页统计的结果保存在 其配置信息中。 或者, 处理器 218也可以通过其他软件模块来实现类似的功 能, 因此, 凡是功能与 FTL类似, 可以进行坏页统计等操作, 并且将坏页统 计的结果保存在其配置信息中的软件模块都在本发明实施例的保护范围之 内。
另外, 内存 230和处理器 218中的缓存可以合设或者分开设置, 本发明 实施例对此不做限定。
请参考图 3, 图 3是本发明实施例存储介质 221的结构示意图。 本实施 例中,存储介质 221是指 Flash颗粒,可以是单层单元(全称: Single Layer Cel l , 简称: SLC ) , 也可以是多层单元 (全称: Mult i-Layer Cel l , 简称: 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随机选择一个空白的 b lock, 而这个空白的 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。 另外, 本发明实施例也可以在一个通道内多个并发单元之间实现多个 1/0 请求的并发处理, 此时每个并发单元中只存在一个已写入数据并未被写满 的 block。
歩骤 S 105 : 主控制器 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是空白的 blocko 然而, 第一 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)、 只读存储器 (R0M)、 可擦除可编程只读存储器 (EPR0M或者快闪 存储器)、 光纤、 便携式只读存储器 (CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代 码, 使得处理器能够执行在流程图中每个歩骤、 或各歩骤的组合中规定的
功能动作; 生成实施在框图的每一块、 或各块的组合中规定的功能动作的 装置。
计算机可读程序代码可以完全在用户的计算机上执行、 部分在用户的 计算机上执行、 作为单独的软件包、 部分在用户的计算机上并且部分在远 程计算机上, 或者完全在远程计算机或者服务器上执行。 也应该注意, 在 某些替代实施方案中, 在流程图中各歩骤、 或框图中各块所注明的功能可 能不按图中注明的顺序发生。 例如, 依赖于所涉及的功能, 接连示出的两 个歩骤、 或两个块实际上可能被大致同时执行, 或者这些块有时候可能被 以相反顺序执行。
本领域普通技术人员可以意识到, 结合本文中所公开的实施例描述的 各示例的单元及算法歩骤, 能够以电子硬件、 或者计算机软件和电子硬件 的结合来实现。 这些功能究竟以硬件还是软件方式来执行, 取决于技术方 案的特定应用和设计约束条件。 专业技术人员可以对每个特定的应用来使 用不同方法来实现所描述的功能, 但是这种实现不应认为超出本发明的范 围。
以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局 限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可 轻易想到变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明 的保护范围应所述以权利要求的保护范围为准。
Claims (16)
- 权利 要 求1、 一种闪存装置, 其特征在于, 所述闪存装置包括主控制器和闪存芯 片, 所述闪存芯片包含多个块 block;所述主控制器,用于接收第一目标数据,当所述多个 block中第一 block 的有效容量小于所述第一目标数据的大小时,将所述第一目标数据划分为所 述第一目标数据的第一部分数据和所述第一目标数据的第二部分数据, 其 中,所述第一目标数据的第一部分数据的大小为所述第一 block的有效容量, 所述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去 所述第一目标数据的第一部分数据的大小;从所述多个 block中确定第二 block, 所述第二 block是已写入数据并 未被写满的 block;将所述第一目标数据的第一部分数据写入所述第一 block, 并且将所述 第一目标数据的第二部分数据写入所述第二 block。
- 2、 根据权利要求 1所述的闪存装置, 其特征在于, 所述第二 block是 预先设定的 block。
- 3、 根据权利要求 1所述的闪存装置, 其特征在于, 所述第二 block具 有数据标记, 所述数据标记用于标识已写入数据并未被写满的 block;所述主控制器具体用于根据所述数据标记从所述多个 block中确定所述 第二 block。
- 4、 根据权利要求 3所述的闪存装置, 其特征在于,所述主控制器, 还用于接收第二目标数据, 当所述多个 block中第三 block的有效容量小于所述第二目标数据的大小时, 将所述第二目标数据划 分为所述第二目标数据的第一部分数据和所述第二目标数据的第二部分数 据, 其中, 所述第二目标数据的第一部分数据的大小为所述第三 block的有 效容量,所述第二目标数据的第二部分数据的大小为所述第二目标数据的大 小减去所述第二目标数据的第一部分数据的大小; 将所述第二目标数据的第一部分数据写入所述第三 block, 并且将所述 第二目标数据的第二部分数据写入所述第二 block;为所述第二 block增加所述数据标记。
- 5、 一种闪存装置, 其特征在于, 所述闪存装置包括主控制器和闪存芯 片, 所述闪存芯片包含多个块 block;所述主控制器, 用于接收第一目标数据, 将所述第一目标数据写入所述 多个 block中的第一 block;当所述第一 block被写满时,获得所述第一目标数据中尚未写入所述第 一 block的数据, 其中所述第一 block的有效容量小于所述第一目标数据的 大小;从所述多个 block中确定第二 block, 所述第二 block是已写入数据并 未被写满的 block;将所述第一目标数据中尚未写入所述第一 block的数据写入所述第二 block。
- 6、 根据权利要求 5所述的闪存装置, 其特征在于, 所述第二 block是 预先设定的 block。
- 7、 根据权利要求 5所述的闪存装置, 其特征在于, 所述第二 block具 有数据标记, 所述数据标记用于标识已写入数据并未被写满的 block; 所述主控制器具体用于根据所述数据标记从所述多个 block中确定所述 第二 block。
- 8、 根据权利要求 7所述的闪存装置, 其特征在于,所述主控制器, 还用于接收第二目标数据, 将所述第二目标数据写入所 述多个 block中的第三 block;当所述第三 block被写满时,获得所述第二目标数据中尚未写入所述第 三 block的数据, 其中所述第三 block的有效容量小于所述第二目标数据的 大小; 将所述第二目标数据中尚未写入所述第三 block的数据写入所述第二 block;为所述第二 block增加所述数据标记。9、 一种将数据写入闪存装置的方法, 其特征在于, 所述闪存装置包括 主控制器和闪存芯片, 所述闪存芯片包含多个块 block, 所述方法包括: 所述主控制器接收第一目标数据, 当所述多个 block中的第一 block的 有效容量小于所述第一目标数据的大小时,将所述第一目标数据划分为所述 第一目标数据的第一部分数据和所述第一目标数据的第二部分数据, 其中, 所述第一目标数据的第一部分数据的大小为所述第一 block的有效容量,所 述第一目标数据的第二部分数据的大小为所述第一目标数据的大小减去所 述第一目标数据的第一部分数据的大小;所述主控制器从所述多个 block中确定第二 block, 所述第二 block是 已写入数据并未被写满的 block;所述主控制器将所述第一目标数据的第一部分数据写入所述第一block, 并且将所述第一目标数据的第二部分数据写入所述第二 block。
- 10、 根据权利要求 9所述的方法, 其特征在于, 所述第二 block是预先 设定的 block。
- 11、 根据权利要求 9所述的方法, 其特征在于, 所述第二 block具有数 据标记, 所述数据标记用于标识已写入数据并未被写满的 block;所述主控制器从所述多个 block中确定第二 block包括:所述主控制器 根据所述数据标记从所述多个 block中确定所述第二 block。
- 12、 根据权利要求 11所述的方法, 其特征在于, 还包括:所述主控制器接收第二目标数据, 当所述多个 block中的第三 block的 有效容量小于所述第二目标数据的大小时,将所述第二目标数据划分为第二 目标数据的第一部分数据和第二目标数据的第二部分数据, 其中, 所述第二 目标数据的第一部分数据的大小为所述第三 block的有效容量,所述第二目 标数据的第二部分数据的大小为所述第二目标数据的大小减去所述第二目 标数据的第一部分数据的大小;所述主控制器将所述第二目标数据的第一部分数据写入所述第三 block, 并且将所述第二目标数据的第二部分数据写入所述第二 block; 所述主控制器为所述第二 block增加所述数据标记。13、 一种将数据写入闪存装置的方法, 其特征在于, 所述闪存装置包括 主控制器和闪存芯片, 所述闪存芯片包含多个块 block, 所述方法包括: 所述主控制器接收第一目标数据, 将所述第一目标数据写入所述多个 block中的第一 block;当所述第一 block被写满时,所述主控制器获得所述第一目标数据中尚 未写入所述第一 block的数据,其中所述第一 block的有效容量小于所述第 一目标数据的大小;所述主控制器从所述多个 block中确定第二 block, 所述第二 block是 已写入数据并未被写满的 block;所述主控制器将所述第一目标数据中尚未写入所述第一 block的数据写 入所述第二 blocko
- 14、 根据权利要求 13所述的方法, 其特征在于, 所述第二 block是预 先设定的 block。
- 15、 根据权利要求 13所述的方法, 其特征在于, 所述第二 block包含 数据标记, 所述数据标记用于标识已写入数据并未被写满的 block;所述主控制器从所述多个 block中确定第二 block包括:所述主控制器 根据所述数据标记从所述多个 block中确定所述第二 block。
- 16、 根据权利要求 15所述的方法, 其特征在于, 所述方法还包括: 所述主控制器接收第二目标数据, 将所述第二目标数据写入所述多个 block中的第三 block;当所述第三 block被写满时,所述主控制器获得所述第二目标数据中尚 未写入所述第三 block的数据,其中所述第三 block的有效容量小于所述第 二目标数据的大小;所述主控制器将所述第二目标数据中尚未写入所述第三 block的数据写 入所述第二 block;所述主控制器为所述第二 block增加所述数据标记。
- 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 true CN105745628A (zh) | 2016-07-06 |
CN105745628B 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) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109154917A (zh) * | 2016-12-29 | 2019-01-04 | 华为技术有限公司 | 存储系统和固态硬盘 |
CN109189337A (zh) * | 2018-08-21 | 2019-01-11 | 浪潮电子信息产业股份有限公司 | 一种选择数据块的方法、装置、设备及可读存储介质 |
TWI679535B (zh) * | 2017-09-22 | 2019-12-11 | 慧榮科技股份有限公司 | 快閃記憶體的資料內部搬移方法以及使用該方法的裝置 |
US10782910B2 (en) | 2017-09-22 | 2020-09-22 | Silicon Motion, Inc. | Methods for internal data movements of a flash memory device and apparatuses using the same |
CN113296681A (zh) * | 2020-02-24 | 2021-08-24 | 合肥杰发科技有限公司 | 存储空间的管理方法、终端及具有存储功能的装置 |
CN116719485A (zh) * | 2023-08-09 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069215B (zh) * | 2019-03-27 | 2022-11-04 | 浙江宇视科技有限公司 | 一种基于块存储的动态调整存储单元的方法及装置 |
US12105973B2 (en) * | 2020-03-25 | 2024-10-01 | Samsung Electronics Co., Ltd. | Dynamic quantization in storage devices using machine learning |
US12026393B2 (en) | 2020-12-17 | 2024-07-02 | Electronics And Telecommunications Research Institute | Apparatus and method for selecting storage location based on data usage |
CN114546296B (zh) * | 2022-04-25 | 2022-07-01 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的全闪存系统和地址映射方法 |
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 | ルネサスエレクトロニクス株式会社 | 記憶装置及び情報処理端末 |
WO2008013228A1 (fr) * | 2006-07-26 | 2008-01-31 | Panasonic Corporation | Contrôleur de mémoire, dispositif de stockage non-volatile, dispositif d'accès et système de stockage non-volatile |
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 JP JP2016528320A patent/JP6130971B2/ja active Active
- 2014-06-27 EP EP14877558.8A patent/EP3196767B1/en active Active
- 2014-06-27 KR KR1020157020619A patent/KR101730151B1/ko active IP Right Grant
- 2014-06-27 WO PCT/CN2014/080998 patent/WO2015196470A1/zh active Application Filing
- 2014-06-27 CN CN201480044289.5A patent/CN105745628B/zh active Active
- 2014-06-27 CA CA2896369A patent/CA2896369C/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 | 深圳市腾讯计算机系统有限公司 | 分布式数据存储方法及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109154917A (zh) * | 2016-12-29 | 2019-01-04 | 华为技术有限公司 | 存储系统和固态硬盘 |
US10768857B2 (en) | 2016-12-29 | 2020-09-08 | Huawei Technologies Co., Ltd. | Storage system having a controller that selects a die of a solid state disk to store data |
CN109154917B (zh) * | 2016-12-29 | 2020-09-29 | 华为技术有限公司 | 存储系统和固态硬盘 |
TWI679535B (zh) * | 2017-09-22 | 2019-12-11 | 慧榮科技股份有限公司 | 快閃記憶體的資料內部搬移方法以及使用該方法的裝置 |
US10782910B2 (en) | 2017-09-22 | 2020-09-22 | Silicon Motion, Inc. | Methods for internal data movements of a flash memory device and apparatuses using the same |
TWI726475B (zh) * | 2017-09-22 | 2021-05-01 | 慧榮科技股份有限公司 | 快閃記憶體的資料內部搬移方法以及使用該方法的裝置 |
CN109189337A (zh) * | 2018-08-21 | 2019-01-11 | 浪潮电子信息产业股份有限公司 | 一种选择数据块的方法、装置、设备及可读存储介质 |
CN113296681A (zh) * | 2020-02-24 | 2021-08-24 | 合肥杰发科技有限公司 | 存储空间的管理方法、终端及具有存储功能的装置 |
CN116719485A (zh) * | 2023-08-09 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
CN116719485B (zh) * | 2023-08-09 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 基于fpga的数据读写方法及读写单元与fpga |
Also Published As
Publication number | Publication date |
---|---|
EP3196767B1 (en) | 2020-08-05 |
EP3196767A1 (en) | 2017-07-26 |
WO2015196470A1 (zh) | 2015-12-30 |
JP2016524770A (ja) | 2016-08-18 |
KR101730151B1 (ko) | 2017-04-25 |
KR20160016744A (ko) | 2016-02-15 |
JP6130971B2 (ja) | 2017-05-17 |
US10203899B2 (en) | 2019-02-12 |
CA2896369A1 (en) | 2015-12-27 |
EP3196767A4 (en) | 2017-08-16 |
US20160110107A1 (en) | 2016-04-21 |
CN105745628B (zh) | 2017-09-05 |
CA2896369C (en) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105745628A (zh) | 一种将数据写入闪存装置的方法、闪存装置和存储系统 | |
CA2938242C (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
CN105830166A (zh) | 一种控制器、闪存装置和将数据写入闪存装置的方法 | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
US20170371585A1 (en) | System and method for multi-stream data write | |
KR102050732B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 | |
US20080120456A1 (en) | Method for flash memory data management | |
KR102430198B1 (ko) | 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법 | |
US20240143219A1 (en) | Software-hardware combination method for internal mapping address query of zoned namespace | |
KR20130034450A (ko) | 저장 장치 및 그 구동 방법 | |
CN110119245B (zh) | 用于操作nand闪存物理空间以扩展存储器容量的方法和系统 | |
KR101626218B1 (ko) | 블록 기반의 페이지 매핑 방법 | |
CN107924350B (zh) | 电子设备及其数据压缩方法 | |
EP3296878B1 (en) | Electronic device and page merging method therefor | |
CN114610654A (zh) | 一种固态存储设备以及向其写入数据的方法 | |
US9361040B1 (en) | Systems and methods for data storage management | |
CN116010113B (zh) | 用于管理智能卡内存的方法及智能卡 | |
CN108073362B (zh) | 一种延长PairBlock使用寿命的方法及装置 | |
KR101691286B1 (ko) | 입출력 정보 공유 방법, 상기 방법을 수행하는 저장 장치 및 호스트 장치 | |
KR20160015793A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN108038064A (zh) | 一种PairBlock擦除出错的处理方法及装置 | |
KR20160015784A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
JP2016009457A (ja) | メモリシステム、メモリ周辺回路およびメモリ制御方法 |
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 |