CN103620563A - 用于非易失性存储器的可变超量配置 - Google Patents
用于非易失性存储器的可变超量配置 Download PDFInfo
- Publication number
- CN103620563A CN103620563A CN201280031465.2A CN201280031465A CN103620563A CN 103620563 A CN103620563 A CN 103620563A CN 201280031465 A CN201280031465 A CN 201280031465A CN 103620563 A CN103620563 A CN 103620563A
- Authority
- CN
- China
- Prior art keywords
- data
- host
- host data
- distributes
- main frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into 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/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
-
- 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/0608—Saving storage space on storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/1016—Performance 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/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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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/7206—Reconfiguration of flash memory system
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
动态改变超量配置(OP)可使固态磁盘(SSD)和/或其中闪存的寿命、可靠性和/或性能的提高成为可能。耦接到SSD的主机将较新数据写入到SSD。如果较新主机数据比较旧主机数据更加规则,那么SSD上的主机数据熵减少。作为响应,SSD的SSD控制器动态地改变闪存分配,减少主机分配且增加OP分配。如果较新主机数据为更加没有规则,那么SSD控制器动态地增加主机分配且减少OP分配。SSD控制器根据到闪存的主机和系统数据写入的带宽比在主机OP与系统OP之间成比例地动态分配OP分配。
Description
相关申请的交叉引用
在随附申请数据表、请求书或者传送信(可选地而定,若有)中作出本申请优先权权益主张。在本申请类型所允许的范围之内,本申请在所有方面以引用方式合并以下申请,在本发明进行以下申请时的全部内容为本申请所共同拥有:
美国临时申请(案号SF-11-04和序列号61/479,249),2011年4月26日提交,第一发明人姓名Andrew John Tomlin,并且题目为用于非易失性存储器的可变超量配置。
技术领域
需要非易失性存储技术的进步以提高性能、效率和实用性。
背景技术
除非明确指出为公开或者众所周知,否则本文所提到的技术和概念(包括上下文、定义或者比较目的)不应理解为承认所述技术和概念为早先公开已知或者为现有技术一部分。本文引用的所有参考文献(若有),包括专利、专利申请和公开,无论是否专门或全面并入,均不失其完整性地通过引用并入本文。
发明内容
本发明可以许多方式实现,包括实现为方法、产品、装置、系统、物质组合物和诸如计算机可读存储介质这样的计算机可读介质(例如,光学和/或磁性大容量存储设备(诸如磁盘)中介质,或者具有非易失性存储器(诸如闪存)的集成电路)或者计算机网络,其中,程序指令经由光学或者电子通信链路发送。在本说明书中,这些实施例或者本发明可采取的任何其它形式可称为技术。具体实施方式阐述在上述领域中能够提高性能、效率和实用性的本发明一个或者多个实施方式。具体实施方式包括简介,以有利于更迅速理解具体实施方式的其余部分。简介包括根据本文所述概念的系统、方法、产品和计算机可读介质中一个或者多个的实例性实施方式。正如结论中更详细讨论,本发明包括所有可行修改和改变,均在所提出的权利要求的范围内。
附图说明
图1A示出固态磁盘(SSD)的实施方式的经选择的细节,该固态磁盘包括使用可变超量配置(OP)以管理诸如经由非易失性存储(NVM)元件(例如,闪存)实现的非易失性存储器的SSD控制器。
图1B示出包括图1A中SSD的一个或者多个实例的系统的各种实施方式的经选择的细节。
图2示出根据使用可变OP以管理NVM的系统的各种实施方式的包括OP使用的闪存的主机和系统分配的经选择的细节。
图3A和图3B示出与动态改变数据熵有关的动态改变主机和系统OP的各种实施方式的选定细节。
图4示出在用于管理NVM的可变OP情况下OP资源的(重新)分配的实施方式的流程图。
图5示出闪存的管理单元的生命周期的实施方式的流程图。
附图参考标记列表
参考标记 | 元件名称 |
100 | SSD控制器 |
101 | SSD |
102 | 主机 |
103 | (可选)交换机/光纤/中间控制器 |
104 | 中间接口 |
105 | OS |
106 | 固件(FW) |
107 | 驱动器 |
107D | 虚箭头(主机软件←→I/O设备通信) |
109 | 应用程序 |
109D | 虚箭头(应用程序←→经由驱动器的I/O设备通信) |
109V | 虚箭头(应用程序←→经由VF的I/O设备通信) |
参考标记 | 元件名称 |
110 | 外部接口 |
111 | 主机接口 |
112C | (可选)卡存储器 |
113 | 标签跟踪 |
114 | 多设备管理软件 |
115 | 主机软件 |
116 | I/O卡 |
117 | I/O和存储装置/资源 |
118 | 服务器 |
119 | LAN/WAN |
121 | 数据处理 |
123 | 引擎 |
131 | 缓冲 |
133 | DMA |
135 | ECC-X |
137 | 存储器 |
141 | 映射器 |
143 | 表 |
151 | 回收站 |
161 | ECC |
171 | CPU |
172 | CPU内核 |
173 | 命令管理 |
175 | 缓冲器管理 |
177 | 翻译管理 |
179 | 一致性管理 |
180 | 存储器接口 |
181 | 设备管理 |
182 | 标识管理 |
190 | 设备接口 |
191 | 设备接口逻辑 |
192 | 闪存设备 |
193 | 调度 |
194 | 闪存芯片 |
199 | NVM |
参考标记 | 元件名称 |
200 | 闪存 |
201 | 系统分配(配给量) |
202A | 主机分配 |
202C | 主机分配 |
203A | OP分配 |
203C | OP分配 |
204A | 系统OP分配 |
204B | 系统OP分配 |
204C | 系统OP分配 |
205A | 主机OP分配 |
205B | 主机OP分配 |
208 | 系统OP分配差 |
209 | 系统OP分配差 |
210A | 初始分配 |
210B | 相同分配 |
210C | 增加的分配 |
301 | 系统分配 |
301F | 系统分配(固定) |
302G1 | 主机分配 |
302G2 | 主机分配 |
302H1 | 主机分配 |
302H2 | 主机分配 |
302V | 主机分配 |
303G1 | (组合式)OP分配 |
303G2 | (组合式)OP分配 |
303H1 | (组合式)OP分配 |
303H2 | (组合式)OP分配 |
303V1 | 系统OP分配(可变) |
303V2 | 系统OP分配(可变) |
304F | 系统OP分配(固定) |
304G1 | 系统OP分配 |
304G2 | 系统OP分配 |
304H1 | 系统OP分配 |
304H2 | 系统OP分配 |
305G1 | 主机OP分配 |
参考标记 | 元件名称 |
305G2 | 主机OP分配 |
305H1 | 主机OP分配 |
305H2 | 主机OP分配 |
310 | 物理尺寸 |
320 | 数据熵 |
330G | G% |
330H | H% |
400 | 流程图 |
401 | 确定是否(重新)分配情况存在 |
402 | (重新)分配? |
403 | 进行(重新)分配 |
500 | 流程图 |
501 | 自由 |
502 | 自由队列 |
503 | 主机单元 |
504 | 系统单元 |
512 | 队列分配 |
513 | 主机分配 |
514 | 系统分配 |
515 | 循环主机单元 |
516 | 循环系统单元 |
具体实施方式
下文连同示出本发明选定细节的附图一起对于本发明一个或者多个实施方式进行详细说明。本发明结合实施方式进行说明。本文中实施方式应当理解仅为示例性,本发明并不明确限于本文中任何或者全部实施方式,并且本发明包括许多可选实施方式、变形例和等同物。为了避免阐述单调,多种单词标签(包括但不限于:第一、最后、某个、各种、另外、其它、特定、选择、一些和显著)可应用于单独实施方式集合;如本文中使用,所述标签并不明确是指传达质量或者偏好或者偏见的任何形式,而是仅为了方便区分单独集合。所公开方法的一些操作的顺序在本发明范围内可改变。只要多个实施方式用于说明工艺、方法和/或程序指令特征改变,就可仔细考虑根据分别与多个所述多个实施方式对应的多个操作模式之一的预定或者动态确定的标准执行静态和/或动态选择的其它实施方式。许多特定细节在以下说明中阐述以透彻地理解本发明。所述细节为了举例目的而提供,并且本发明可根据权利要求实行,而无需所述细节中一些或者全部。为了清晰起见,在本发明相关技术领域中已知的技术材料并未进行详细说明,使得本发明不造成不必要的混淆。
简介
包括本简介仅为了便于更迅速理解具体实施方式;本发明并不限于简介(若有,包括明确实施例)中提出的概念,任何简介的段落必要地为整个主题的删节并且并不是指详尽性或者限制性说明。例如,以下简介将由空间和组织限制的信息仅提供给某些实施方式。有许多其它实施方式,包括在说明书平衡下最终会绘制、讨论权利要求的实施方式。
缩略语
这里定义的各种速记缩写(例如,首字母缩写词)中至少一些参照本文中使用的某些元件。
缩写 | 说明 |
AHCI | 高级主机控制器接口 |
API | 应用程序接口 |
BCH | 博斯-乔赫里-霍克文黑姆(Bose Chaudhuri Hocquenghem) |
ATA | 高级技术附件(AT附件) |
CD | 光盘 |
CF | 紧凑型闪存(Compact Flash) |
CPU | 中央处理单元 |
CRC | 循环冗余校验 |
DAS | 直接附接存储器 |
DDR | 双数据速率 |
DES | 数据加密标准 |
DMA | 直接存储访问 |
DNA | 直接NAND访问 |
缩写 | 说明 |
DRAM | 动态随机访问存储器 |
DVD | 数字通用/视频盘(Digital Versatile/Video Disk) |
DVR | 数字视频记录器 |
ECC | 误差校验码 |
eMMC | 嵌入式多媒体卡 |
eSATA | 外部串行高级技术附件 |
GPS | 全球定位系统 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子设备 |
LAN | 局域网 |
LB | 逻辑块 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LPN | 逻辑页号 |
MLC | 多级单元 |
MMC | 多媒体卡 |
NAS | 网络附接存储器 |
NCQ | 原生指令排序 |
NVM | 非易失性存储器 |
ONA | 最优NAND访问 |
ONFI | 开放式NAND闪存接口 |
OP | 超量配置 |
OS | 操作系统 |
PC | 个人电脑 |
PCIe | 高速外围部件互连(PCI express) |
PDA | 个人数字助理 |
缩写 | 说明 |
POS | 销售点 |
RAID | 廉价/独立磁盘冗余阵列 |
ReRAM | 电阻式随机访问存储器 |
RS | 里德-所罗门(Reed-Solomon) |
SAN | 存储器附接网络 |
SAS | 串行附接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术附件(串行ATA) |
SCSI | 小型计算机系统接口 |
SD | 安全数字 |
SDR | 单数据速率 |
SLC | 单级单元 |
SMART | 自行监控分析和报告技术 |
SSD | 固态磁盘/驱动 |
UFS | 通用闪存 |
USB | 通用串行总线 |
VF | 虚拟功能 |
WAN | 广域网络 |
从概念上讲,在各种情况下,SSD控制器为NVM提供可变OP,诸如用于SSD数据非易失性存储,使寿命更长、可靠性提高和/或性能改良。从概念上讲,NVM在存储主机数据、存储系统数据与OP使用之间动态分配,并且OP使用分配在主机数据OP与系统数据OP之间动态分配。基于SSD、SSD控制器和/或NVM的操作特性和/或上下文,所述分配为动态可变。
耦接到SSD的主机将较新数据写入到SSD。如果较新主机数据比较旧主机数据更加规则(因此,可更多有效压缩),那么主机数据熵减少。作为响应,SSD的SSD控制器动态地改变NVM(例如,闪存)分配,减少主机分配,同时增加OP分配,并且根据到NVM的系统数据写入与主机数据写入的带宽比在系统OP与主机OP之间成比例地分配OP分配。如果较新主机数据为更加没有规则(因此,不能更有效压缩),那么增加主机分配,OP分配减少,并且根据所述比例在系统OP与主机OP之间分配OP分配。
例如,随着NVM的“自由空间”增加/减少(例如,归因于主机或者系统数据存储空间减少/增加),OP使用分配增加/减少(可选地在调整无用数据收集、回收和/或擦除的延迟之后)。例如,系统数据OP与主机数据OP之间的OP使用分配与动态改变值成比例,动态改变值为由到NVM的主机数据写入的带宽除以到NVM的系统数据写入的带宽。主机数据存储空间至少根据主机数据改变熵(例如,可压缩性和/或对于经由重复数据删除的大小减少的响应)以及使先前存储的主机数据明确去分配(de_allocate,释放)的主机命令改变。
对于第一实例,如果可用于OP的NVM减少(增加)了某个量,那么在系统数据OP与主机数据OP之间保持相同比例的同时,系统数据OP和主机数据OP统一减少(增加)了所述量。对于第二实例,如果系统数据速率与主机数据速率之比改变,那么系统数据OP和主机数据OP根据所述比例改变进行调整。系统数据速率的实例为到NVM的系统数据写入的带宽,并且主机数据速率的实例为(例如,不为系统数据写入的写入)到NVM的主机数据写入的带宽,使得系统数据写入对应于除正在写入主机数据的NVM写入外的所有NVM写入。主机数据写入可选地和/或选择性地包括写入标头,该标头可用于标识主机数据和/或与主机数据对应的ECC信息。作为第三示例,系统数据OP和主机数据OP根据相应数据速率(例如,根据数据速率比线性地)进行分配,诸如当NVM的单元被分配时,或者当进行无用数据收集(例如,以回收部分使用的NVM单元)时。
对于第四实例,第一和第二(或者第三)实例组合,使得可用于OP的NVM改变和系统与主机数据速率比改变导致系统数据OP和主机数据OP分配的对应改变。另外实例包括上述实例中任何一个,其中系统数据OP和/或主机数据OP基于事件动态地重新分配,诸如与NVM的单元分配、NVM一部分的无用数据收集相关联的事件,或者NVM单元可用于从一个使用类型(例如,主机数据)重新分配到另一个使用类型(例如,系统数据)的任何其它事件。
在一些实施方式中,系统和主机使用之间OP资源分配易受相应最小值/最大值和/或粒度影响。例如,系统和/或主机OP分配为最小预定数目单元,与主机分配和/或系统数据速率与主机数据速率之比无关。对于另一个实例,根据预定数目单元,系统和/或主机OP分配是粒度化的(granular)。
在各种实施方式中,NVM(例如,闪存)在多个部分中被管理,称为(闪存)的(被管理)单元,并且本文中也称为“被管理单元”或者“单元”。(闪存)的(被管理)单元实例为闪存的一个或者多个连续和/或非连续部分,诸如闪存的一个或者多个连续/非连续页/块、闪存的一个或者多个R块(本文其它处说明)或者适合于管理操作(诸如分配)的闪存的任何子部分。在一些实施方式中,闪存分配根据闪存管理单元的整数量子而被粒度化。
R块实例为闪存的所有芯片的逻辑切片或者部分。例如,在具有R闪存芯片的闪存中,每个闪存芯片具有N个块,对于总共N个R块,每个R块为结合在一起的来自每个闪存芯片的第i块。对于另一个实例,在具有R闪存芯片的闪存中,每个闪存芯片具有N个块,对于总共N/2个R块,每个R块为来自每个闪存芯片的第i和第(i+1)块。对于又一个实例,在具有多个双面器件的闪存中,每个R块为来自每个双面器件的第i偶数块和第i奇数块。
在一些情况下,当特定大小的主机存储写入导致多次写入(每次写入具有例如特定大小倍数的大小)时,写入扩增(amplification)结果到SSD的闪存。所述多次写入来源于例如在写入(例如,编程)闪存一部分之前擦除该部分、耗损均衡、无用数据收集以及导致系统数据写入的闪存管理操作。示例性的写入扩增计算为代表特定主机写入集合的写入到闪存的数据量(包括,例如完成与主机写入相关联的主机数据写入的系统写入)除以通过该特定主机写入集合写入的数据量。
在一些实施方式和/或使用情况下,写入扩增相对较低,诸如当无用数据收集和/或其它操作已经使闪存的相对较大部分擦除且容易可用于写入(例如,编程)时,对连续地址的相对较长序列的主机写入。在一些实施方式和/或使用情况下,写入扩增相对较高,诸如当闪存的相对较小部分擦除且容易可用于写入时对随机地址的相对较长序列的主机写入。
经由SSD的控制器,SSD的闪存在主机数据存储与系统数据存储之间分配。主机数据与耦接到SSD的主机相关联,并且系统数据与所述控制器相关联。控制器根据闪存的整个自由空间动态地控制所述分配。在一些实施方式和/或使用情况下,经由增加对系统数据的分配(并且减少主机数据分配)来增加系统数据OP使减少写入扩增和提高SSD和/或闪存性能、可靠性和/或寿命成为可能。闪存的整个自由空间为主机数据分配的自由空间和系统数据分配的自由空间。
在各种实施方式中使用动态分配控制,例如其中,主机数据包括各种尺寸的逻辑单元,诸如当主机数据以导致各种尺寸的逻辑单元的某个方式进行压缩、重复数据删除或者变换时。在各种实施方式中使用动态分配控制,例如其中,诸如当主机数据经由重复数据删除可相对高度压缩或者可相对高度紧凑时,主机数据可相对高度简化。
主机数据包括接收自(或者提供给)一个或者多个主机(例如,计算主机)的数据或者从来自(或者到)主机的数据得出的数据(例如,经由压缩、重复数据删除、加密或者任何可逆变换)。主机数据实例包括用户数据和/或文件、应用程序数据和/或文件、驱动器数据和/或文件、操作系统数据、数据结构和/或文件以及由主机经由SSD与主机之间接口提供的其它信息。写入到NVM的主机数据可选地和/或选择性地包括由SSD控制器添加且与主机数据一起写入的元数据,诸如用于标识主机数据和/或与主机数据对应的ECC信息的标头。系统数据包括与控制器、SSD和/或闪存或其任何部分的管理或操作有关的数据。系统数据实例包括LBA至闪存块映射信息和校验点信息以在发生故障时(例如,崩溃或者电源故障)能够恢复正确状态。其它系统数据实例包括对于主机数据不专有但在经由SSD、SSD控制器和/或NVM(例如,闪存)管理存储或者SSD、SSD控制器和/或NVM的管理操作中有用的信息。
在各种情况下,所使用主机数据空间与所使用系统数据空间之比为100:1至500:1。在各种情况下,诸如相对较高数目的随机写入的情况,系统数据写入带宽与主机数据写入带宽之比为2:1至5:1。
本文中其它处,到闪存的主机数据写入带宽有时称为主机数据写入带宽或者可选地主机写入带宽,并且到闪存的系统数据写入带宽有时称为系统数据写入带宽或者系统写入带宽。
在一些实施方式中,访问NVM中不同大小量子的压缩数据在一些使用情况下提高存储效率。例如,SSD控制器从计算主机(例如,与磁盘写入命令有关)接收数据(未压缩),压缩数据,并且将压缩数据存储到闪存中。响应于从计算主机(例如,与磁盘写入命令有关)的后续请求,SSD控制器从闪存读取压缩数据,对于压缩数据进行解压缩,并且将解压缩数据提供给计算主机。压缩数据根据不同大小量子存储于闪存中,由于例如压缩算法、操作模式以及对于各种数据的压缩有效性,量子大小改变。SSD控制器通过咨询所包括的映射表以确定标头存储于闪存中的什么地方来对于数据进行部分解压缩。SSD控制器对于从闪存获得的标头进行解析以确定适当(压缩)数据存储于闪存中的什么地方。SSD控制器对于来自闪存的适当数据进行解压缩以产生解压缩数据,以提供给计算主机。
在各种实施方式中,SSD控制器包括:主机接口,用于与计算主机接口连接;接口,用于与NVM(诸如闪存)接口连接;以及电路,用于控制所述接口并且执行压缩和解压缩(和/或控制所述执行的各个方面),以及较低级别纠错、较高级别纠错和独立硅元件的动态较高级别冗余模式管理。
根据各种实施方式,一些主机接口兼容USB接口标准、CF接口标准、MMC接口标准、eMMC接口标准、雷电(Thunderbolt)接口标准、UFS接口标准、SD接口标准、记忆棒接口标准、xD图像卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准中一个或者多个。根据各种实施方式,计算主机为计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储应用、PC、膝上型计算机、笔记本计算机、上网本计算机、平板设备或计算机、超级本计算机、电子读取设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或一体机设备、POS设备、现金出纳机、媒体播放器、电视机、媒体记录器、DVR、数字相机、蜂窝式手机、无绳电话机和电子游戏机的全部或者任何部分。在一些实施方式中,接口连接主机(诸如SAS/SATA桥接器)作为计算主机和/或作为计算主机桥接器进行操作。
在各种实施方式中,SSD控制器包括一个或者多个处理器。所述处理器执行固件以控制和/或执行SSD控制器的操作。SSD控制器与计算主机进行通信以发送和接收命令和/或状态以及数据。计算主机执行操作系统、驱动器和应用程序中一个或者多个。通过计算主机与SSD控制器的通信可选地和/或选择性地经由驱动器和/或经由应用程序。在第一实例中,到SSD控制器的所有通信为经由驱动器,并且应用程序将较高级别命令提供给驱动器,驱动器将其转译为SSD控制器的专用命令。在第二实例中,驱动器实施迂回模式,并且应用程序能够经由驱动器将特定命令发送到SSD控制器。在第三实例中,PCIe SSD控制器支持一个或者多个虚拟功能(VF),一旦配置,就使应用程序能够与SSD控制器直接通信,绕过驱动器。
根据各种实施方式,一些SSD兼容由磁性和/或光学非易失性存储器(诸如HDD、CD驱动器和DVD驱动器)使用的格式规范、电气接口和/或协议。在各种实施方式中,SSD使用零个或者多个奇偶校验码、零个或者多个RS码、零个或者多个BCH码、零个或者多个维特比(Viterbi)或其它格状码和零个或者多个LDPC码的各种组合。
示例性实施方式
在具体实施方式介绍总结中,下文为示例性实施方式集合,包括至少一些明确枚举为“EC”(实例组合),根据本文所述概念提供各种实施方式类型的另外说明;这些实例并不意味着相互排斥、详尽或者限制;并且本发明并不限于这些示例性实施方式,而是包括所有可行修改和变动,均在已公布权利要求及其等同物的范围内。
EC1)一种系统,包括:
用于将一个或者多个闪存中的所有或多个部分操作为分别专用于主机数据、系统数据、系统超量配置(OP)和主机OP的相应分配的构件;以及
用于响应于一个或者多个事件动态地确定任何一个或者多个所述相应分配的构件。
EC2)根据EC1的系统,其中,所述事件包括所述相应分配中任何一个或者多个的使用量改变。
EC3)根据EC1所述的系统,其中,所述事件包括存储于所述闪存中的信息的压缩、重复数据删除和变换中任何一个或者多个的变更效果确定。
EC4)根据EC3所述的系统,其中,所述变更效果至少部分通过在所述相应分配中特定一个分配中使用的特定空间量来测量。
EC5)根据EC3所述的系统,其中,所述变更效果至少部分通过在所述相应分配中特定一个分配中可用的特定自由空间量来测量。
EC6)根据EC1所述的系统,其中,所述事件包括存储于所述主机数据分配中的信息的压缩和重复数据删除中任何一个或者多个的增加效果的确定。
EC7)根据EC6所述的系统,其中,所述增加效果至少部分通过在所述主机数据分配中使用的空间量的减少来测量。
EC8)根据EC6所述的系统,其中,所述增加效果至少部分通过在所述主机数据分配中可用的自由空间量的增加来测量。
EC9)根据EC6所述的系统,其中,所述用于动态确定的构件响应于所述增加效果的确定动态地减少所述主机数据分配和所述主机OP分配中任何一个或者多个。
EC10)根据EC6所述的系统,其中,所述用于动态确定的构件响应于所述增加效果的确定动态地增加所述系统数据分配和所述系统OP分配中任何一个或者多个。
EC11)根据EC1所述的系统,其中,所述用于操作的构件和所述用于动态确定的构件包括在固态磁盘(SSD)的控制器中,并且所述闪存包括在所述SSD中。
EC12)一种方法,包括:
将固态磁盘(SSD)中的一个或者多个闪存操作为相应的主机数据分配、系统数据分配和组合式超量配置(OP)分配;
将组合式OP分配操作为相应系统和主机OP分配;
动态地确定所述系统OP分配的新值作为系统数据速率与主机数据速率之比的线性函数;
响应于所述新值的改变,动态地变更所述系统OP分配;以及
其中,所述动态确定为响应于事件。
EC13)根据EC12所述的方法,还包括:
从耦接到所述SSD的主机接收数据;
从接收自所述主机的数据确定信息;
根据所述主机数据分配将所述信息存储到所述闪存中。
EC14)根据EC13所述的方法,还包括经由对于从所述主机接收的数据进行压缩来计算所述信息。
EC15)根据EC13所述的方法,还包括经由对于从所述主机接收的数据进行重复数据删除来计算所述信息。
EC16)根据EC12所述的方法,还包括根据所述系统数据分配将主机地址与闪存地址的对应信息存储到所述闪存中。
EC17)根据EC12所述的方法,其中,所述事件至少部分基于用于回收的所述闪存的单元的选择。
EC18)根据EC17所述的方法,其中,所述回收包括以下步骤中的一个或者多个:
无用数据收集;
对无用数据收集的选择;
回收;
对回收的选择;
擦除;以及
对擦除的选择。
EC19)一种系统,包括:
用于将一个或者多个闪存操作为相应的主机数据分配、系统数据分配和组合式超量配置(OP)分配的构件;
用于将组合式OP分配操作为相应系统和主机OP分配的构件;以及
用于响应于一个或者多个事件动态地确定所述系统OP分配的新值的构件。
EC20)根据EC19所述的系统,还包括用于响应于所述新值的改变动态地变更所述系统OP分配的构件。
EC21)根据EC19所述的系统,其中,用于动态确定所述新值的构件根据系统数据速率和主机数据速率的函数来确定所述新值。
EC22)根据EC21所述的系统,其中,用于动态确定所述新值的所述构件根据系统数据速率与主机数据速率之比来确定所述新值。
EC23)根据EC22所述的系统,其中,用于动态确定所述新值的构件将所述新值确定为与系统数据速率除以主机数据速率成比例。
EC24)根据EC21所述的系统,其中,所述构件经由固态磁盘(SSD)的控制器,并且所述闪存包括在所述SSD中。
EC25)根据EC24所述的系统,还包括用于与主机接口连接的构件,并且其中,用于与该主机接口连接的构件包括在所述SSD中,并且所述主机数据分配至少部分用于存储表示经由所述用于与主机接口连接的构件通信的至少一部分数据的信息。
EC26)根据EC25所述的系统,还包括用于经由所通信数据的至少一部分的压缩来确定至少一部分的所述信息的构件。
EC27)根据EC25所述的系统,还包括用于经由所通信数据的至少一部分的重复数据删除来确定至少一部分的所述信息的构件。
EC28)根据EC25所述的系统,还包括用于经由减少至少一部分的所通信数据的熵的可逆变换来确定至少一部分的所述信息的构件。
EC29)根据EC24所述的系统,其中,所述系统数据分配至少部分地被所述控制器用于存储映射数据的至少一部分。
EC30)根据EC24所述的系统,其中,所述系统数据分配至少部分地被所述控制器用于存储校验点数据的至少一部分。
EC31)根据EC21所述的系统,其中,所述系统数据速率至少部分基于以下因素中的一个或者多个:
从固态磁盘(SSD)控制器提供以存储于所述闪存中的系统数据的速率,
写入到所述闪存的系统数据的速率,和
写入到所述闪存的系统数据的带宽。
EC32)根据EC21所述的系统,其中,所述主机数据速率至少部分基于以下因素中的一个或者多个:
从主机提供以存储于所述闪存中的数据的速率,
写入到所述闪存的主机数据的速率,以及
写入到所述闪存的主机数据的带宽。
EC33)根据EC19所述的系统,其中,所述事件包括对以下项中的一个或者多个的发起、完成、请求和/或选择:
所述闪存的单元的分配,
所述闪存的一个或者多个部分的无用数据收集,
所述闪存的一个或者多个部分的回收,以及
所述闪存的一个或者多个部分的擦除。
EC34)根据EC19所述的系统,还包括用于至少部分响应于来自计算主机的请求来通信由存储于所述主机数据分配的至少一部分中的信息表示的主机数据的至少一部分的构件。
EC35)根据EC34所述的系统,还包括将所述请求接口传输至所述计算主机的构件。
EC36)根据EC35所述的系统,其中,用于将所述请求接口传输至所述计算主机的构件兼容于存储接口标准。
EC37)根据EC36所述的系统,其中,所述存储接口标准包括以下标准中的一个或者多个:
通用串行总线(USB)接口标准,
紧凑型闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
嵌入式多媒体卡(eMMC)接口标准,
雷电(Thunderbolt)接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图像卡接口标准,
集成驱动电子设备(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行附接小型计算机系统接口(SAS)接口标准,
光纤信道接口标准,
以太网接口标准,以及
高速外围部件互连(PCIe)接口标准。
EC38)根据EC34所述的系统,还包括所述计算主机的所有或者多个部分。
EC39)根据EC38所述的系统,其中所述计算主机包括以下部件中的一个或者多个:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
存储器附接网络(SAN),
网络附接存储器(NAS)设备,
直接附接存储器(DAS)设备,
存储应用,
个人计算机(PC),
膝上型计算机,
笔记本计算机
上网本计算机,
平板设备或计算机,
超级本计算机,
电子读取设备(电子阅读器),
个人数字助理(PDA),
导航系统,
(手持式)全球定位系统(GPS)设备,
汽车控制系统,
汽车媒体控制系统或计算机,
打印机、复印机或传真机或一体机设备,
销售点POS设备,
现金出纳机,
媒体播放器,
电视机,
媒体记录器,
数字视频记录器(DVR),
数字相机,
蜂窝式手机,
无绳电话机,和
电子游戏机。
EC40)根据EC19所述的系统,还包括用于与所述闪存接口连接的构件。
EC41)根据EC40所述的系统,其中,用于与所述闪存接口连接的所述构件包括闪存接口。
EC42)根据EC41所述的系统,其中,所述闪存接口兼容于以下项中的一个或者多个:
开放NAND闪存接口(ONFI),
触发模式接口,
双倍数据速率(DDR)同步接口,
DDR2同步接口,
同步接口,以及
异步接口。
EC43)根据EC19所述的系统,还包括所述闪存中至少一个。
EC44)根据EC43所述的系统,其中,所述至少一个闪存包括以下项中的一个或者多个:
NAND闪存技术存储单元,和
NOR快闪技术存储单元。
EC45)根据EC43所述的系统,其中,所述至少一个闪存包括以下项中的一个或者多个:
单级单元(SLC)闪存技术存储单元,和
多级单元(MLC)闪存技术存储单元。
EC46)根据EC43所述的系统,其中,所述至少一个闪存包括以下项中的一个或者多个:
基于多晶硅技术的电荷存储单元,和
基于氮化硅技术的电荷存储单元。
EC47)根据EC43所述的系统,其中,所述至少一个闪存包括以下项中的一个或者多个:
基于二维技术的闪存技术,和
基于三维技术的闪存技术。
EC48)根据EC19所述的系统,还包括:
用于从计算主机接口传输请求的构件,所述请求与存储于所述闪存中的信息有关;以及
用于与所述闪存接口连接的构件。
EC49)根据EC48所述的系统,其中,所述构件在单个集成电路(IC)中共同实现。
EC50)根据EC48所述的系统,其中,所述构件包括在固态磁盘(SSD)中。
系统
图1A示出SSD101的实施方式的选定细节,所述SSD101包括SSD控制器,所述SSD控制器使用可变OP来管理非易失性存储器,诸如经由NVM元件(例如,闪存)实现。SSD控制器为用于管理非易失性存储器,诸如经由NVM元件(例如,闪存)实现。SSD控制器100经由一个或者多个外部接口110通信地耦接到主机(未示出)。根据各种实施方式,外部接口110为SATA接口、SAS接口、PCIe接口、光纤信道接口、以太网接口(诸如10Gb以太网)、任何前述接口的非标准版本、定制接口、或者用于互连存储器和/或通信和/或计算设备的任何其它类型接口中的一个或多个。例如,在一些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100还经由一个或者多个设备接口190通信地耦接到NVM199,所述NVM199包括一个或者多个存储设备,诸如闪存设备192中一个或者多个。根据各种实施方式,设备接口190为异步接口、同步接口、单倍数据速率(SDR)接口、双倍数据速率(DDR)接口、DRAM兼容DDR或DDR2同步接口、ONFI兼容接口(诸如ONFI2.2或ONFI3.0兼容接口)、切换模式兼容闪存、任何前述接口的非标准版本、定制接口、或者用于连接到存储设备的任何其它类型接口中的一个或者多个。
在一些实施方式中,每个闪存设备192具有一个或者多个单独闪存芯片194。根据闪存设备192中特定一个的类型,特定闪存设备192中多个闪存芯片194可选地和/或选择性地可并行访问。闪存设备192仅表示能够通信地耦接到SSD控制器100的一种类型的存储设备。在各种实施方式中,可使用任何类型的存储设备,诸如SLC NAND闪存、MLC NONA闪存、NOR闪存、使用基于多晶硅或氮化硅技术的电荷存储单元的闪存、基于二维或三维技术的闪存、只读存储器、静态随机访问存储器、动态随机访问存储器、铁磁存储器、相变存储器、赛道存储器、ReRAM或者任何其它类型存储器设备或存储介质。
根据各种实施方式,设备接口190组织为:一个或者多个总线,每个总线具有一个或者多个闪存设备192;一个或者多个总线群组,每个总线具有一个或者多个闪存设备192,其中,群组中总线大体上并行访问;或者一个或者多个闪存设备192到设备接口190上的任何其它组织。
接续图1A,SSD控制器100具有一个或者多个模块,诸如主机接口111、数据处理121、缓冲器131、映射器141、回收站151、ECC161、设备接口逻辑191和CPU171。图1A所示的特定模块和互连仅代表一个实施方式,并且可以设想所述模块以及未示出另外模块中一些或者全部的多个排列和互连。在第一实例中,在一些实施方式中,有两个以上的主机接口111以提供双端口。在第二实例中,在一些实施方式中,数据处理121和/或ECC161与缓冲器131组合。在第三实例中,在一些实施方式中,主机接口111直接耦接到缓冲器131,并且数据处理121可选地和/或选择性地对于存储于缓冲器131中的数据进行操作。在第四实例中,在一些实施方式中,设备接口逻辑191直接耦接到缓冲器131,并且ECC161可选地和/或选择性地对于存储于缓冲器131中的数据进行操作。
主机接口111经由外部接口110发送和接收命令和/或数据,并且在一些实施方式中,经由标签跟踪113跟踪单独命令的进度。例如,所述命令包括指定待读取地址(诸如LBA)和数据量(诸如LBA量子数,例如扇区)的读取命令;作为响应,SSD控制器提供读取状态和/或读取数据。对于另一个实例,所述命令包括指定待写入地址(诸如LBA)和数据量(诸如LBA量子数,例如扇区)的写入命令;作为响应,SSD提供写入状态和/或请求写入数据并且随后可选地提供写入状态。对于又一个实例,所述命令包括指定不再需要分配的一个或者多个地址(诸如一个或者多个LBA)的去分配命令(例如,修整命令);作为响应,SSD相应地修改映射器并且可选地提供去分配状态。在一些情况下,可兼容ATA的TRIM命令为典型去分配命令。对于又一个实例,所述命令包括超级电容器测量命令或者数据硬化成功查询;作为响应,SSD提供适当状态。在一些实施方式中,主机接口111可兼容SATA协议,并且使用NCQ命令能够具有最高32个挂起命令,每个挂起命令具有表示为从0到31数字的唯一标签。在一些实施方式中,标签跟踪113能够使经由外部接口110接收的命令的外部标签与用于在通过SSD控制器100的处理期间跟踪所述命令的内部标签相关联。
根据各种实施方式,发生以下一个或者多个:数据处理121可选地和/或选择性地处理在缓冲器131与外部接口110之间发送的部分或者全部数据;和数据处理121可选地和/或选择性地处理存储于缓冲器131中的数据。在一些实施方式中,数据处理121使用一个或者多个引擎123来执行以下一个或者多个:格式化;重新格式化;转码;和任何其它数据处理和/或操纵任务。
缓冲器131存储从设备接口190发送到外部接口110/从外部接口110发送到设备接口190的数据。在一些实施方式中,缓冲器131另外存储由SSD控制器100使用的系统数据,诸如部分或者全部映射表,以管理一个或者多个闪存设备192。在各种实施方式中,缓冲器131具有以下项的一个或者多个:存储器137,用于暂时存储数据;DMA133,用于控制数据移动到缓冲器131和/或从缓冲器131的移动;和ECC-X135,用于提供较高级别纠错和/或冗余功能;和其它数据移动和/或操纵功能。较高级别冗余功能实例为类RAID能力,其中,冗余为在闪存设备(例如,闪存设备192中多个闪存设备)级和/或闪存芯片(例如,闪存芯片194)级,而不是在磁盘级。
根据各种实施方式,发生以下一个或者多个:ECC161可选地和/或选择性地处理在缓冲器131与设备接口190之间发送的部分或者全部数据;以及ECC161可选地和/或选择性地处理存储于缓冲器131中的数据。在一些实施方式中,ECC161用于提供较低级别纠错和/或冗余功能,诸如根据一个或者多个ECC技术。在一些实施方式中,ECC161实施以下项的一个或者多个:CRC码;海明码;RS码;BCH码;LDPC码;维特比码;格状码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或校正码;以及前述任何组合。在一些实施方式中,ECC161包括一个或者多个解码器(诸如LDPC解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例。设备接口逻辑191能够根据闪存设备192的协议将数据发送到闪存设备192的实例/从闪存设备192的实例发送数据。设备接口逻辑191包括调度193以经由设备接口190选择性地依次控制闪存设备192的实例。例如,在一些实施方式中,调度193能够使操作队列化到闪存设备192的实例并且当闪存设备192(或者闪存芯片194)的实例中单独实例为可用时,将所述操作选择性地发送到闪存设备192(或者闪存芯片194)的实例中的单独实例。
映射器141在用于外部接口110上数据寻址与用于设备接口190上数据寻址之间转换,使用表143将外部数据地址映射到NVM199中的位置。例如,在一些实施方式中,映射器141经由由表143提供的映射将用于外部接口110上的LBA转换为以一个或者多个闪存芯片194为目标的区块和/或页地址。对于从驱动器制造或者去分配开始从未写入的LBA,如果读取LBA,那么映射指向默认值从而返回。例如,当处理去分配命令时,修改映射器,使得与去分配LBA对应的条目指向默认值之一。在各种实施方式中,有各种默认值,每个默认值具有对应指针。所述多个默认值能够将一些去分配LBA(诸如在第一范围内)读取为一个默认值,同时将其它去分配LBA(诸如在第二范围内)读取为另一个默认值。在各种实施方式中,默认值由闪存、硬件、固件、命令和/或原始参量和/或参数、可编程寄存器或者其各种组合定义。
在一些实施方式中,映射器141使用表143来执行和/或查找用于外部接口110上的地址与用于设备接口190上数据寻址之间的转译。根据各种实施方式,表143为以下项中的一个或者多个:一级映射;二级映射;多级映射;映射缓存;压缩映射;从一个地址空间到另一个地址空间的任何类型映射;和前述任何组合。根据各种实施方式,表143包括以下项中的一个或者多个:静态随机访问存储器;动态随机访问存储器;NVM(诸如闪存);缓存存储器;片上存储器;片外存储器;和前述任何组合。
在一些实施方式中,回收站151执行无用数据收集。例如,在一些实施方式中,闪存设备192的实例包括在区块可重新写入之前必须擦除的区块。回收站151能够确定闪存设备192的实例中哪些部分正在主动使用(例如,被分配而不是去分配),诸如通过扫描由映射器141保持的映射,并且通过擦除闪存设备192的实例中未使用(例如,去分配)部分,使其可用于写入。在更多实施方式中,回收站151能够移动存储于闪存设备192的实例内的数据以使闪存设备192的实例中较大连续部分可用于写入。
在一些实施方式中,闪存设备192的实例选择性地和/或动态地配置、管理和/或使用以使一个或者多个存储带(band)用于存储不同类型和/或属性的数据。存储带的数目、排列、大小和类型可动态改变。例如,来自计算主机的数据写入到热(活跃)存储带中,而来自回收站151的数据写入到冷(较不活跃)存储带中。在一些使用情况中,如果计算主机写入长的连续流,那么热存储带大小增长,而如果计算主机进行随机写入或者几乎不写入,那么冷存储带大小增长。
CPU171控制SSD控制器100的各个部分。CPU171包括CPU内核172。根据各种实施方式,CPU内核172为一个或者多个单核或多核处理器。在一些实施方式中,CPU内核172中单独处理器核为多线程。CPU内核172包括指令和/或数据缓存和/或存储器。例如,指令存储器包括使CPU内核172能够执行程序(例如软件,有时称为固件)的指令,以控制SSD控制器100。在一些实施方式中,由CPU内核172执行的固件中的部分或者全部存储于闪存设备192的实例上(如示,例如,图1B中作为NVM199的固件106)。
在各种实施方式中,CPU171还包括:命令管理173,用于当经由外部接口接收的命令正在进行中时跟踪和控制所述命令;缓冲器管理175,用于控制分配和使用缓冲器131;转译管理177,用于控制映射器141;一致性管理179,用于控制数据寻址一致性并且避免诸如外部数据访问与回收数据访问之间的冲突;设备管理181,用于控制设备接口逻辑191;标识管理182,用于控制标识信息修改和通信;和可选的其它管理单元。根据各种实施方式,由CPU171执行的管理功能中没有、或部分、或者全部通过硬件、通过软件(诸如在CPU内核172上或者在经由外部接口110连接的主机上执行的固件)或者其任何组合来控制和/或管理。
在一些实施方式中,CPU171能够执行其它管理任务,诸如以下项中的一个或者多个:采集和/或报告性能统计;实施SMART;控制电源排序,控制和/或监控和/或调整功耗;对电源故障响应;控制和/或监控和/或调整时钟速率;和其它管理任务。
各种实施方式包括计算主机闪存控制器,所述计算主机闪存控制器与SSD控制器100相似并且兼容与各种计算主机的操作,诸如经由采用主机接口111和/或外部接口110。各种计算主机包括计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储设备、PC、膝上型计算机、笔记本计算机、上网本计算机、平板设备或计算机、超级本计算机、电子读取设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或一体机设备、POS设备、现金出纳机、媒体播放器、电视机、媒体记录器、DVR、数字相机、蜂窝式手机、无绳电话机和电子游戏机中一个或者任何组合。
在各种实施方式中,SSD控制器(或者计算主机闪存控制器)的全部或者任何部分在单个IC、多芯片IC的单芯片、多芯片IC的多个芯片或者多个IC上实施。例如,缓冲器131在与SSD控制器100的其它元件相同的芯片上实施。对于另一个实例,缓冲器131在与SSD控制器100的其它元件不同的芯片上实施。
图1B示出包括图1A中SSD的一个或者多个实例的系统的各种实施方式的选定细节。SSD101包括经由设备接口190耦接到NVM199的SSD控制器100。本图示出各类实施方式:单个SSD直接耦接到主机;多个SSD各自分别经由相应外部接口直接耦接到主机;和一个或者多个SSD经由各种互连元件间接耦接到主机。
作为单个SSD直接耦接到主机的示例性实施方式,SSD101的一个实例经由外部接口110直接耦接到主机102(例如,省略、绕过或者通过交换机/光纤/中间控制器103)。作为多个SSD各自经由相应外部接口直接耦接到主机的示例性实施方式,SSD101的多个实例各自分别经由相应外部接口110实例直接耦接到主机102(例如,省略、绕过或者通过交换机/光纤/中间控制器103)。作为一个或者多个SSD经由各种互连元件间接耦接到主机的示例性实施方式,SSD101的一个或者多个实例各自分别间接耦接到主机102。每个间接耦接为经由耦接到交换机/光纤/中间控制器103的外部接口110以及耦接到主机102的中间接口104的相应实例。
包括交换机/光纤/中间控制器103的实施方式中一些也包括经由存储器接口180耦接且可由SSD访问的卡存储器112C。在各种实施方式中,SSD、交换机/光纤/中间控制器和/或卡存储器中一个或者多个包括在物理可标识模块、卡或可插拔元件(例如,I/O卡116)上。在一些实施方式中,SSD101(或其变体)对应于SAS驱动器或者SATA驱动器,SAS驱动器或者SATA驱动器耦接到作为主机102操作的启动器。
主机102能够执行主机软件115的各种元件,诸如OS105、驱动器107、应用程序109和多设备管理软件114的各种组合。虚线箭头107D代表主机软件←→I/O设备通信,例如:经由驱动器107从OS105、从驱动器107、经由驱动器107或直接作为VF地从应用程序109、或通过以上项的组合发送至SSD101的一个或者多个实例;或者从SSD101的一个或者多个实例,经由驱动器107接收至OS105、接收至驱动器107、经由驱动器107或直接作为VF地接收至应用程序109、或接收至以上项的组合。
操作系统105包括用于与SSD接口连接的驱动器(由驱动器107概念性示出)和/或能够与所述驱动器一起操作。Windows各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista和7)、Linux各种版本(例如,Red Hat、Debian和Ubuntu)和MacOS各种版本(例如,8、9和X)为操作系统105的实例。在各种实施方式中,驱动器为可与标准接口和/或协议(诸如SATA、AHCI或者高速NVM)一起操作的标准和/或通用驱动器(有时称为“紧缩套装(shrink wrapped)”或者“预安装”),或者可选地定制和/或厂商特定以能够使用对于SSD101特定的命令。一些驱动器和/或驱动器具有直通模式以启用应用程序级程序,诸如经由最佳化NAND访问(有时称为ONA)或者直接NAND访问(有时称为DNA)技术的应用程序109,以使命令直接传送到SSD101,使定制应用程序能够甚至与通用驱动器一起使用对于SSD101特定的命令。ONA技术包括以下一个或者多个:非标准修改符(提示符)使用;厂商特定命令使用;非标准统计通信,诸如根据可压缩性的实际NVM使用;和其它技术。DNA技术包括以下一个或者多个:非标准命令或者对于NVM提供未映射读取、写入和/或擦除访问的厂商特定命令的使用;非标准命令或者对于NVM提供更直接访问的厂商特定命令的使用,诸如通过绕过I/O设备将以其它方式完成的数据格式化;和其它技术。驱动器实例为没有ONA或DNA支持的驱动器、具有ONA功能的驱动器、具有DNA功能的驱动器和具有ONA/DNA功能驱动器。更多驱动器实例为厂商提供、厂商开发和/或厂商增强的驱动器以及客户端提供、客户端开发和/或客户端增强的驱动器。
应用程序级程序实例为没有ONA或DNA支持的应用程序、具有ONA功能的应用程序、具有DNA功能的应用程序和具有ONA/DNA功能的应用程序。虚线箭头109D代表应用程序←→I/O设备通信(例如,经由驱动器绕过或者经由用于应用程序的VF绕过),例如,与SSD进行通信的具有ONA功能的应用程序和具有ONA功能的驱动器,诸如应用程序无需使用操作系统作为中介。虚线箭头109V代表应用程序←→I/O设备通信(例如,经由应用程序VF绕过),例如,与SSD进行通信的具有DNA功能的应用程序和具有DNA功能的驱动器,诸如无需应用程序使用操作系统或者驱动器作为中介。
在一些实施方式中,NVM199的一个或者多个部分用于固件存储,例如固件106。固件存储包括一个或者多个固件镜象(或其部分)。例如,固件镜象具有例如由SSD控制器100的CPU内核172执行的固件的一个或者多个镜象。对于另一个实例,固件镜象具有例如在固件执行期间由CPU内核引用的常数、参数值和NVM设备信息的一个或者多个镜象。固件镜象例如对应于当前固件镜象以及零个或者多个先前(相对于固件更新)固件镜象。在各种实施方式中,固件提供通用、标准ONA和/或DNA操作模式。在一些实施方式中,固件操作模式中一个或者多个经由密钥或者可选地由驱动器传送和/或提供的各种软件技术实现(例如,一个或者多个API被“解锁”)。
在缺乏交换机/光纤/中间控制器的一些实施方式中,SSD经由外部接口110直接耦接到主机。在各种实施方式中,SSD控制器100经由一个或者多个中间级其它控制器(诸如RAID控制器)耦接到主机。在一些实施方式中,SSD101(或其变体)对应于SAS驱动器或者SATA驱动器,并且交换机/光纤/中间控制器103对应于扩展器,扩展器反过来耦接到启动器,或可选地,交换机/光纤/中间控制器103对应于桥接器,桥接器经由扩展器间接耦接到启动器。在一些实施方式中,交换机/光纤/中间控制器103包括一个或者多个PCIe交换机和/或光纤。
在各种实施方式中,诸如主机102为计算主机(例如,计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储设备、PC、膝上型计算机、笔记本计算机和/或上网本计算机)的实施方式中一些,计算主机可选地能够与一个或者多个本地和/或远程服务器(例如,可选的服务器118)进行通信(例如,经由可选I/O和存储设备/资源117和可选LAN/WAN119)。例如,所述通信能够本地和/或远程访问、管理和/或使用SSD101元件中任何一个或者多个。在一些实施方式中,所述通信为完全或者部分经由以太网。在一些实施方式中,所述通信为完全或者部分经由光纤信道。在各种实施方式中,LAN/WAN119代表一个或者多个局域网和/或广域网,诸如服务器群中的网络、耦接服务器群的网络、城域网和因特网中任何一个或者多个。
在各种实施方式中,与一个或者多个NVM结合的SSD控制器和/或计算主机闪存控制器实施为非易失性存储组件,诸如USB存储组件、CF存储组件、MMC存储组件、eMMC存储组件、雷电存储组件、UFS存储组件、SD存储组件、记忆棒存储组件和xD图像卡存储组件。
在各种实施方式中,SSD控制器(或者计算主机闪存控制器)的全部或者任何部分或其功能在将与控制器耦接的主机(例如,图1B中主机102)中实施。在各种实施方式中,SSD控制器(或者计算主机闪存控制器)的全部或者任何部分或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动器软件或者SSD控制固件)或者它们任何组合进行实施。例如,ECC单元(诸如,与图1A中ECC161和/或ECC-X135相似)或者与ECC单元相关联的功能部分经由主机上软件实施并且部分经由SSD控制器中固件和硬件的组合实施。对于另一个实例,回收站单元(诸如,与图1A中回收站151相似)或者与回收站单元相关联的功能部分经由主机上软件实施并且部分经由计算主机闪存控制器中硬件实施。
可变超量配置(OP)
图2示出根据使用可变OP来管理NVM的系统的各种实施方式的包括OP使用的闪存200的各种主机和系统分配的选定细节。主机分配用于存储主机数据,诸如从或向耦接到SSD的主机接收/提供的数据,所述SSD使用闪存以进行非易失性存储。系统分配(例如,系统分配201)用于存储系统数据,诸如与SSD控制器、SSD、闪存或它们任何部分的管理或操作有关(例如,在图1A映射器141中的信息的所有或者部分的周期性副本)。
本图示出根据三个分配情况(分别为初始、相同和增加分配210A、210B和210C)使用的闪存200。以最详细的说明,每个分配情况示出三个分配要素:主机、系统和OP。在初始分配210A和相同分配210B中,主机、系统和OP分配分别示出为主机分配202A、系统分配201和OP(系统+主机)分配203A。在增加分配210C中,主机、系统和OP分配分别示出为主机分配202C、系统分配201和OP(系统+主机)分配203C。在进一步详细说明中,根据示出为主机OP分配205A和205B以及系统OP分配204A、204B和204C的主机OP分配与系统OP分配之间分配,各种分配有所不同,如下所述。
在操作中,根据开始状态(例如,初始分配210A),分配开始。响应于事件,代理变更对于不同状态(例如,相同分配210B或者增加分配210C)的分配。各种实施方式为根据各种操作模式。在第一操作模式中,主机分配保持不变且OP(系统+主机)分配保持不变,但是在系统OP分配和主机OP分配之间重新分布。在第二操作模式中,主机分配变更为使对于在系统OP分配与主机OP分配之间重新分布的OP(系统+主机)分配的对应变更成为可能。
在第一操作模式中,在根据初始分配210A已经开始分配之后,分配然后动态变更为相同分配210B。最详细说明,三个分配要素仍然不变。特别是主机、系统和OP分配分别在主机分配202A、系统分配201和OP(系统+主机)分配203A处保持不变。然而,以更详细说明,通过使主机OP分配减少了一定量并且使系统OP分配增加了一定量,OP分配在内部变更。具体地,主机OP分配从主机OP分配205A到主机OP分配205B减少了系统OP分配差(Delta)208的量,并且系统OP分配从系统OP分配204A到系统OP分配204B增加了系统OP分配差208量。
在进一步操作之后,分配然后动态变更为回到初始分配210A,包括主机OP分配为主机OP分配205A且系统OP分配为系统OP分配204A。适用于第一操作模式的其它操作情况包括主机OP与系统OP使用之间的OP分配的任何分配改变(同时保持主机分配和系统分配不变),不受图中所示任何特定分配限制。
在第二操作模式中,在根据初始分配210A已经开始分配之后,分配然后动态变更为增加分配210C。最详细说明,三个分配要素变更为使得主机分配减少了一定量,并且OP分配增加了一定量。更详细说明,主机OP分配仍然不变,并且系统OP分配增加了一定量。具体地,主机分配从主机分配202A到主机分配202C减少了系统OP分配差209量,并且OP分配从OP分配203A到OP分配203C增加了系统OP分配差209量。更详细说明,主机OP分配在主机OP分配205A处仍然不变,并且系统OP分配从系统OP分配204A到系统OP分配204C增加了系统OP分配差209量。
在进一步操作之后,分配然后动态变更为回到初始分配210A,包括主机OP分配为主机OP分配205A且系统OP分配为系统OP分配204A。适用于第二操作模式的其它操作情况包括主机OP与系统OP使用之间任何分配改变(结合增加/减少主机分配),不受图中所示任何特定分配限制。
在第三操作模式(未示出)中,系统分配变更,而不是(和/或除外)变更主机分配以适应OP分配改变(如在第二操作模式中)。因此,系统分配减少/增加使系统OP分配增加/减少成为可能,或可选地,结合系统分配减少/增加的主机分配减少/增加使主机和/或系统OP分配增加/减少成为可能。可以设想其它操作模式,所述其它操作模式为第一操作模式至第三操作模式的任何组合,包括根据各种操作条件和/或特性在第一操作模式至第三操作模式中任何一个之间动态切换的操作模式。
有导致分配状态变更的多个事件以及实现分配状态变更的对应代理。例如,SSD控制器(例如,图1A中SSD控制器100)确定闪存(例如,图1A中NVM199)增加(或者减少)量将用于存储主机数据,诸如归因于经由改变的压缩、重复数据删除或变换的增加(或者减少)使用量。作为响应,SSD控制器增加(或者减少)系统OP分配(例如,诸如图2中从系统OP分配204A到系统OP分配204C)。对于另一个实例,在基于闪存的存储子系统(例如,图1B中SSD101)内的处理器(例如,图1A中CPU171)经由所述存储子系统的存储接口(例如,图1B中外部接口110)接收命令。所述命令(例如,ATA兼容TRIM命令)指定所述存储子系统的特定部分未使用(例如,自由),并且存储于其中的任何数据不再需要。作为响应,处理器减少到主机数据和/或主机OP的闪存的分配并且增加到系统OP的闪存的分配。在各种实施方式中,对于主机数据和/或主机OP的分配减少(并且可选地和/或选择性地对于系统OP的增加)推迟,直至未使用部分已经进行无用数据收集、回收和/或擦除。
对于又一个实例,在SSD控制器(例如,图1A中调度193的所有或者任何部分)内的监视子系统确定系统写入与主机写入的当前带宽比相对于先前比已经变更。作为响应,所述监视子系统请求SSD控制器的分配代理(例如,图1A中回收站151的全部或者任何部分)根据当前比变更系统OP与主机OP之间分配。例如,如果当前比已经增加(减少),那么请求分配代理商增加(减少)系统OP和/或减少(增加)主机OP。在各种实施方式中,增加(减少)为当前比的线性函数、当前比与先前比之比的线性函数、当前比的反向函数、当前比和先前比的反向函数、当前比和/或当前比与先前比之比的非线性函数、它们任何组合或者它们任何(多个)近似。
动态可变超量配置(OP)和数据熵
图3A和图3B示出与动态改变数据熵有关的动态改变主机和系统OP的各种实施方式的选定细节。主机OP和系统OP随着(动态改变)主机分配的一个或者多个主机分配函数以及(动态改变)数据速率(例如,主机数据和系统数据)的一个或者多个数据速率分配函数而动态改变。为了方便说明,主机分配改变示出相对于数据熵为线性。
例如,如果主机分配减少/增加了一定量,那么所述一定量分配到组合式OP/从组合式OP分配,并且根据一个或者多个数据速率的一个或者多个数据速率分配函数,所得组合式OP在主机OP与系统OP之间动态分配。数据速率分配函数实例为线性函数、反向函数、非线性函数或者它们任何组合。数据速率实例为主机数据速率、系统数据速率、到闪存的主机数据写入带宽、到闪存的系统数据写入带宽、到闪存的总写入带宽或者它们任何组合。
如图3A和图3B所示,由于对应主机分配动态改变,(组合式)OP分配动态改变。动态改变(组合式)OP分配然后在系统OP与主机OP之间动态可变分配,例如根据到闪存的系统数据写入带宽与到闪存的主机数据写入带宽之比。因此,对于主机分配的特定分数减少/增加(并且以相同比),系统OP分配根据特定分数增加/减少。在各种实施方式中,所述比可选地缩放和/或偏移包括在主机OP与系统OP之间分配中。在一些实施方式中,分配还根据相应最小值/最大值和/或相应分配量子中一个或者多个。
对于两个图相同的是,横轴表示数据熵320,从左(0%)增加到右(100%)。较低数据熵对应于,例如相对高可压缩、经由重复数据删除的相对高可紧凑和/或相对更加规则的主机数据。较高数据熵对应于例如相对高的不可压缩、相对低复制度(因此不是经由重复数据删除的高可紧凑)和/或相对更加不规则的主机数据。两个特定数据熵值示出为G%330G和H%330H。
在各种实施方式中,数据熵为概念性,例如,未作出数据熵的明确测量。而是,数据熵表示主机数据大小随着改变压缩、重复数据删除或改变用于存储主机数据的闪存量的其它变换如何改变。例如,用于存储主机数据的闪存随着数据熵增加(减少)而增加(减少)。例如,当示出数据熵与主机数据大小之间关系(例如,为主机数据分配)时,数据熵缩放解释为线性、对数、二次方定律、任意可变或者它们任何组合。
纵轴表示物理大小310,从底部(0%)增加到顶部(100%)。沿着纵轴的长度对应于所使用和/或分配为使用的闪存,例如,较短/较长长度对应于用于存储给定类型信息(例如,主机数据或者系统数据)的较少/较多闪存。在一些实施方式中,特定长度对应于闪存中分配给特定使用(例如,主机数据、系统数据或者OP)的多个单元。
相对于数据熵改变的主机分配函数示出为主机分配302V。随着数据熵增加,用于存储对应主机数据的闪存的物理大小(例如,线性)增加,反之亦然。随着数据熵增加(减少)保持固定的不变系统分配函数示出为系统分配301。可以设想实施方式(未示出),其中系统分配根据数据熵改变,诸如随着数据熵(或者与系统数据大小和/或主机数据大小相关联的任何一个或者多个度量)增加(减少)而增加(减少)。
图3A例示与第一比值的线性函数对应的系统OP分配(可变)303V1的第一动态改变分配的两个“操作点”(一个对应于G%330G,另一个对应于H%330H)。图3B例示与第二比值的线性函数对应的系统OP分配(可变)303V2的第二动态改变分配的两个“操作点”(一个对应于G%330G,另一个对应于H%330H)。为了比较,图3A包括系统OP分配(可变)303V2(具有图3B中详细说明的两个操作点)的虚线,图3B包括系统OP分配(可变)303V1(具有图3A中详细说明的两个操作点)的虚线。
在各种实施方式中,所述比为系统速率与主机速率之比。在各种实施方式中,系统和/或主机速率为当前和/或先前数据速率和/或写入带宽的函数。例如,所述比为在一段时间区间内平均化的系统写入数据带宽除以在该段时间内平均化的主机写入数据带宽。对于另一个实例,所述比为在先前时间点处系统数据速率除以在所述先前时间点处主机数据速率。
图3A中,第一操作点(对应于G%330G)为相对于G%数据熵与主机分配302V和系统OP分配(可变)303V1的相交点。第一操作点包括在主机OP分配305G1与系统OP分配304G1之间分配的主机分配302G1和(组合式)OP分配303G1。第二操作点(对应于H%330H)为相对于H%数据熵与主机分配302V和系统OP分配(可变)303V1的相交点。第二操作点包括在主机OP分配305H1与系统OP分配304H1之间分配的主机分配302H1和(组合式)OP分配303H1。
比较第一和第二操作点,随着数据熵从G%增加到H%,用于存储主机数据的闪存从主机分配302G1增加到主机分配302H1。由于更少闪存然后可用于OP使用,作为响应,(组合式)OP分配从(组合式)OP分配303G1减少到(组合式)OP分配303H1,并且主机OP和系统OP的对应分配减少。具体地,主机OP分配305G1减少到主机OP分配305H1,并且系统OP分配304G1减少到系统OP分配304H1。主机OP和系统OP分配减少为根据根据第一比值在主机OP与系统OP之间的OP资源分配,诸如系统写入带宽与主机数据带宽之比。所述分配由系统OP分配(可变)303V1概念性表示,示出为主机分配302V的线性函数。
图3B示出与图3A所示技术相似的技术。第一和第二操作点为相对于G%和H%数据熵与主机分配302V和系统OP分配(可变)303V2的相交点。第一操作点包括在主机OP分配305G2与系统OP分配304G2之间分配的主机分配302G2和(组合式)OP分配303G2。第二操作点包括在主机OP分配305H2与系统OP分配304H2之间分配的主机分配302H2和(组合式)OP分配303H2。
与图3A相似,如图3B所示,数据熵增加(例如,从G%到H%)导致主机分配增加(例如,从主机分配302G2到主机分配302H2),反过来导致(组合式)OP分配减少(例如,从(组合式)OP分配303G2到(组合式)OP分配303H2),所述(组合式)OP分配然后在系统OP分配(例如,从系统OP分配304G2到系统OP分配304H2)与主机OP分配(例如,从主机OP分配305G2到主机OP分配305H2)之间重新分配。系统OP和主机OP分配减少为根据系统OP与主机OP之间根据与图3A相关联的第二比值的OP资源分配。
比较图3A与图3B,系统OP分配(可变)303V1的斜率小于系统OP分配(可变)303V2的斜率,与第一比值小于第二比值对应。考虑所述比为系统数据速率除以主机数据速率的实施方式。在系统数据速率动态改变的使用情况下,当主机数据速率不变时,系统OP分配(可变)303V1对应于比系统OP分配(可变)303V2更低的系统数据速率。因此,随着系统数据速率动态增加(相对于恒定主机数据速率),系统OP分配从系统OP分配304G1增加到系统OP分配304G2(或可选地,从系统OP分配304H1到系统OP分配304H2)。相应地,主机OP分配从主机OP分配305G1减少到主机OP分配305G2(或可,从主机OP分配305H1到主机OP分配305H2)。或可选地,在主机数据速率动态改变的使用情况下,当系统数据速率不变时,前述系统和主机OP分配改变同样发生(系统OP分配(可变)303V1对应于比系统OP分配(可变)303V2更高的主机数据速率)。
(图3A和图3B)的第一和第二操作点以及数据熵从G%增加到H%的以上说明仅为实例。对于另一个实例,在一些使用情况下,数据熵从H%减少到G%,并且闪存分配从根据第二操作点(H%)变更为根据第一操作点(G%),使得闪存到系统OP使用的分配增加。此外,沿着数据熵轴的多个可行操作点可行(未示出),仅由实施细节限制。此外,在一些情况下,基于例如SSD和/或SSD控制器的各种操作特性,操作情况在各种操作情况和对应操作点之间动态切换。
为了比较和参考,图3A和图3B相同地示出系统分配(不变)301F,所述系统分配301F为固定(例如,相对于数据熵不变)。一些实施方式和/或使用情况包括操作模式和/或操作子模式,其中系统OP资源为固定(例如,相对于数据熵不变),如由系统OP分配(不变)304F概念性示出。在一些实施方式中,系统OP分配(不变)304F表示最小系统OP分配的全部或者一部分。
图3A和图3B示出由于主机分配动态改变(即,反过来受到数据熵动态改变影响)的动态改变系统OP(例如,经由主机OP与系统OP之间OP资源的动态分配)的几个实例的多个方面。一些方面相对于单独图概念性表示,一些方面相对于组合两图概念性表示。
相对于单独图3A(或者单独图3B),动态改变系统OP相对于各种主机分配(对应于各种数据熵操作点)之间动态改变概念性表示,而系统数据速率与主机数据速率之比保持不变。考虑在与G%熵对应的主机分配处开始操作,诸如与主机分配302V的相交点,并且系统OP分配函数由系统OP分配(可变)303V1表示。然后通过转换为在与H%熵对应的主机分配处操作继续,同时继续分配和/或根据由系统OP分配(可变)303V1表示的函数分配系统OP资源。然后通过转回为在与G%熵对应的主机分配处操作继续,同时继续分配和/或根据由系统OP分配(可变)303V1表示的函数分配系统OP资源。系统OP从系统OP分配304G1动态变为系统OP分配304H1,然后响应于主机分配改变,回到系统OP分配304G1,所述主机分配改变反过来与数据熵操作点改变有关。
相对于图3A,结合图3B,动态改变系统OP相对于主机OP与系统OP之间基于系统和/或主机数据速率和/或写入带宽差异和/或改变使用的OP资源分配之间动态改变概念性表示,一个或者多个函数用于确定所述分配或者它们任何组合。考虑在如图3A所示G%数据熵和系统OP分配(可变)303V1的情况下开始操作。然后通过转换为在如图3B所示G%数据熵和系统OP分配(可变)303V2的情况下开始操作继续。然后通过转回为在如图3A所示G%数据熵和系统OP分配(可变)303V1的情况下开始操作继续。系统OP从系统OP分配304G1动态变为系统OP分配304G2,然后响应于例如系统数据写入带宽、主机数据写入带宽和/或其比率,回到系统OP分配304G1。
相对于图3A,结合图3B,动态改变系统OP也相对于各种主机分配(对应于各种数据熵操作点)之间动态改变结合主机OP与系统OP之间基于系统和/或主机数据速率和/或写入带宽和/或其比率差异和/或改变使用的OP资源分配之间动态改变概念性表示。考虑在如图3A所示G%数据熵和系统OP分配(可变)303V1的情况下开始操作。然后通过转换为在如图3B所示G%数据熵和系统OP分配(可变)303V2的情况下开始操作继续。然后通过转回为在如图3A所示G%数据熵和系统OP分配(可变)303V1的情况下开始操作继续。系统OP从系统OP分配304G1动态变为系统OP分配304H2,然后响应于例如主机分配(例如,与数据熵有关)、系统数据写入带宽、主机数据写入带宽和/或它们之比,回到系统OP分配304G1。
可以设想其它实施方式,其中,主机OP与系统OP使用之间的OP资源分配为基于如从主机接收的数据模式。例如,如果主机正在对于连续地址执行一系列写入,那么主机与系统OP使用之间的分配使用减少主机数据速率(其为所测量主机数据速率的分数(小于1))来进行计算,使得比在所测量主机数据速率用于分配的情况下更少的主机数据OP被分配。对于另一个实例,如果主机正在随机地址执行一系列写入,那么主机与系统OP使用之间分配使用增加系统数据速率(其为多倍的所测量系统数据速率)来进行计算,使得比在所测量主机数据速率用于分配的情况下更多的系统数据OP进行分配。倍数大于1,但不一定为整数。
可以设想其它实施方式,其中主机OP与系统OP使用之间OP资源分配为基于闪存单元的瞬时使用。例如,如果一组单元用于存储系统(或可主机)数据,那么系统(或可主机)OP分配暂时提高。
由图3A和图3B(以及图2)表示的一些实施方式的一些方面概念性示出。在上述图中,不论是否连续,各种分配表示闪存中所分配的相应总存储量。例如,系统分配201为闪存中多个非连续单元。对于另一个实例,主机分配302G1和(组合式)OP分配303G1各自为闪存中多个非连续单元。
在一些实施方式中(诸如部分由图2、图3A和/或图3B示出),另外闪存(未示出)可用作用于增加OP的资源,或可选地,闪存中一个或者多个部分的故障导致减少OP。在一些实施方式中,闪存预留未示出使用。例如,闪存中一个或者多个闪存芯片的一个或者多个部分预留为更换闪存故障部分。
在一些实施方式中(诸如部分由图2、图3A和/或图3B示出),主机数据和/或系统数据中全部或者任何部分存储于闪存中,而未改变、压缩、重复数据删除、加密、受到任何形式可逆变换或者它们任何组合。在一些实施方式中,除由较低级别和/或较高级别冗余信息保护的信息外,存储于闪存中的信息在一些实施方式中包括较低级别冗余信息(例如,每页ECC)和/或较高级别冗余信息(例如,类RAID冗余信息)。
超量配置(OP)资源单元(重新)分配及生命周期
图4示出在可变OP用于管理NVM的情况下OP资源分配和/或(重新)分配的实施方式的流程图400,诸如在与图2、图3A和图3B中任何一个有关的一个或者多个情况下。通过计算情况是否对应于执行重新分配(确定是否存在(重新)分配条件以及之后是否(重新)分配?402),流程开始。如果情况不存在,那么流程循回以重复计算。如果情况存在,那么根据各种实施方式请求、排序或者立即执行(重新)分配(执行(重新)分配403)。
在各种实施方式中,在各种特定时间点中任何一个或者多个处执行计算分配和/或(重新)分配条件是否存在(例如,确定是否存在(重新)分配条件401和/或是否执行(重新)分配403)。各种特定时间点的实例为当一个或者多个闪存单元被分配或者标记为用于特定使用(例如,用于系统OP或主机OP使用)时。其它实例为当所述单元退出、进入或者被选为进行各种操作(诸如无用数据收集、回收或擦除)时。其它实例为当所述单元进入主机单元状态、系统单元状态或自由队列时或者当所述单元从一个管理状态转换为另一个管理状态时。其它实例为当可用于特定使用(例如,用于系统使用或主机使用)的许多单元达到相应预定和/或编程确定的阈值(例如,高水印或低水印)时。
在由图2、图3A、图3B和图4中任何一个或者多个概念性表示的各种实施方式中,当单元标记为用于特定使用(例如,主机或者系统)时,实施计算分配和/或(重新)分配条件是否存在(例如,确定是否存在(重新)分配条件401)。
在由图2、图3A、图3B和图4中任何一个或者多个概念性表示的各种实施方式中,当将闪存中未使用和/或空单元标记用于特定使用时(例如,将退出无用数据收集的闪存单元标记为用于主机OP使用与系统OP使用,或者将在进入自由队列时的闪存单元标记为用于主机OP使用与系统OP使用),分配变更(例如,分配和/或(重新)分配)实施为目标。例如,在由图4表示的一些实施方式中,重新分配执行为多级处理。目标(重新)分配进行确定且存储,然后当闪存单元退出无用数据收集时,退出的单元标记为可根据所存储(重新)分配使用。
图5示出闪存的管理单元(诸如R块)的生命周期的实施方式的流程图500。闪存的全部或者多个部分被管理为单元集合,并且流程图表示闪存单元管理代理如何管理每个所述单元的状态。从概念上讲,流程图500表示对于每个受管理单元实例化的状态机。为了简便,在以下说明中,对于将与单元相关联的管理状态设置为特定状态(或者指示特定状态的一个或者多个值),诸如“将单元设置为特定状态”或者“将单元标记为处于特定状态”术语被简写。
继续说明,在初始化(例如,响应于上电复位、复位命令接收或者其任何组合)处,闪存单元全部设置为指示所述单元可用于使用的初始状态(自由501)。响应于请求准备用于最终分配的单元,所述单元准备用于分配(例如,至少部分经由无用数据收集、回收和/或擦除)并且被设置为指示立即分配可用性(自由队列502)。在一些实施方式中,立即分配可用性对应于所述单元为处于一个或者多个自由队列中一个的单元,如由分配转换标记概念性表示(队列分配512)。
一旦处于自由队列之一中,单元根据使用被标记为主机使用(主机分配513)或者系统使用(系统分配514)。所述单元然后根据所述标记用于主机使用(主机单元503)或者系统使用(系统单元504)。响应于选择经由回收或者无用数据收集的用于回收的特定单元,所述特定单元被回收并且被设置为指示所述特定单元可用于使用(自由501)。不论单元在选择用于回收之前用于主机使用(回收主机单元515),或者不论单元在选择用于回收之前用于系统使用(回收系统单元516),进行指示可用性的设置。
在一些实施方式中,选择单元用于回收从概念上讲为二级处理。首先,作出待回收单元类型选择,诸如用于存储主机数据(例如,对应于主机单元503)的单元或者用于存储系统数据(例如,对应于系统单元504)的单元。所述选择为基于(动态)可变OP,诸如相对于图2、图3A或图3B所说明。其次,在选定类别的单元至少一部分内,作出回收单元选择。
在一些可选的实施方式中,没有自由队列,并且单元被标记为从可用于使用(自由501)立即转换为可根据使用用作主机单元(主机单元503)或者系统单元(系统单元504),而无需通过中间排队状态(自由队列502)。在一些可选实施方式中,根据用作主机单元或系统单元的单元,有两类队列,并且当单元根据具有主机分类或系统分类的队列被标记为从可用于使用(自由501)立即转换为可用于立即分配时,作出单元是否用作主机单元或系统单元的确定。
在各种实施方式和/或使用情况下,响应于和/或与图5中所示各种转换(或者相对于图5说明的可选实施方式)协同,执行与图2、图3A、图3B和图4中任何一个或者多个有关的各种操作。各种操作包括(动态)分配、(动态)重新分配以及与分配/重新分配有关的计算和确定。
例如,当单元标记为退出自由队列中的一个以用作主机单元时(主机分配513),执行动态改变主机分配,诸如在图2中主机分配202A与主机分配202C之间示出。对于另一个实例,当单元标记为进入具有系统分类的自由队列时,执行主机OP分配与系统OP分配之间OP资源的动态改变分配,诸如在图2中系统OP分配204A与系统OP分配204B之间示出。对于又一个实例,当单元在退出自由队列之一后标记为用于主机使用(主机单元503)或系统使用(系统单元504)时,执行主机OP分配与系统OP分配之间OP资源的动态改变分配,诸如在图3A中系统OP分配304G1与图3B中系统OP分配304G2之间示出。
对于又一个实例,与单元被选择用于回收且被回收的请求(例如,回收主机单元515或回收系统单元516)相一致,执行计算是否重新分配(例如,图4中确定是否存在(重新)分配条件401)。在一些实施方式中,被选择用于回收的单元分类独立于(重新)分配(例如,执行(重新)分配403)的结果,诸如不论重新分配结果,选择主机单元或系统单元。在其它实施方式中,选择用于回收的单元分类至少部分基于(重新)分配(例如,执行(重新)分配403)的结果,诸如当重新分配结果指示较少主机单元将分配给主机OP使用时选择主机单元。
在各种实施方式中,图2、图3A、图3B和图4中一个或者多个元件与图1A中一个或者多个元件对应或者相关。例如,图2中闪存200对应于NVM199。对于另一个实例,图3A和图3B中沿着物理大小310的长度对应于NVM199的存储量。对于又一个实例,相对于图2、图3A、图3B和/或图4说明的分配操作或分配相关操作中一个或者多个由回收站151和CPU171中一个或者多个的一个或者多个部分执行或者在回收站151和CPU171中一个或者多个的一个或者多个部分控制下执行。对于又一个实例,图5状态转换中一个或者多个由映射器141、回收站151和CPU171中一个或者多个的一个或者多个部分执行或者在映射器141、回收站151和CPU171中一个或者多个的一个或者多个部分控制下执行。对于又一个实例,(多个)主机数据速率测量(诸如相对于图2、图3A或图3B所示)经由主机接口111中全部或者多个部分执行。对于另一个实例,(多个)主机和/或系统数据速率测量(诸如相对于图2、图3A或图3B所示)经由设备接口逻辑191和/或调度193中全部或者多个部分执行。
示例性实施技术
在一些实施方式中,由例如利用闪存、计算主机闪存控制器和/或SSD控制器(诸如图1A中SSD控制器100)实现可变OP以管理非易失性存储器的系统的全部或部分、以及处理器、微处理器、片上系统、应用特定集成电路、硬件加速器或者提供上述操作全部或者部分的其它电路的各种组合由与通过计算机系统的处理兼容的规范指定。所述规范根据各种描述,诸如硬件描述语言、电路描述、网表描述、掩码描述或者布局描述。示例性描述包括:Verilog、VHDL、SPICE、SPICE变体(诸如PSpice)、IBIS、LEF、DEF、GDS-II、OASIS或者其它描述。在各种实施方式中,所述处理包括解译、编译、模拟和合成中任何组合,以产生、验证或者指定适合于包括在一个或者多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路可根据多种技术设计和/或制造。所述技术包括可编程技术(诸如现场或者掩膜可编程门阵列集成电路)、半定制技术(诸如完全或者部分基于晶元的集成电路)和全定制技术(诸如基本上指定的集成电路)、它们任何组合或者与集成电路设计和/或制造兼容的任何其它技术。
在一些实施方式中,如由计算机可读介质(一组指令存储于其中)说明的操作全部或者部分的各种组合通过执行和/或解译一个或者多个程序指令、通过解译和/或编译一个或者多个源和/或脚本语言语句或者通过执行二进制指令(通过编译、转译和/或解译在编程和/或脚本语言语句中表达的信息来产生)进行执行。语句兼容任何标准编程或者脚本语言(诸如C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)。程序指令、语言语句或者二进制指令中一个或者多个可选地存储于一个或者多个计算机可读存储介质元件上。在各种实施方式中,程序指令中一些、全部或者各个部分实现为一个或者多个功能、例程、子例程、直插例程、程序、宏或其部分。
结论
某些选择在说明中仅为了便于准备文字和图式而作出,并且除非另有指示,所述选择本质上不应理解为传达与所述实施方式的结构或者操作有关的另外信息。选择实例包括:用于图式编号的标号的特定组织或者指派;和用于标识和引用实施方式的特征和元件的元件标识符(例如,标注或者数字标号)的特定组织或者指派。
单词“包括”或者“包括”特定地旨在理解为说明开放范围逻辑组的抽象概念,并且除非以下单词“在…内”明确指示,否则并不是指传达物理防范。
虽然前述实施方式为了说明和理解清晰已经进行详细说明,但是本发明并不限于所提供的细节。本发明有许多实施方式。所公开实施方式为示例性且并不限制。
应当理解,与说明一致的许多结构、排列和使用改变可行,并且在已发行专利的权利要求范围内。例如,根据各种实施方式,互连和功能单元位宽、时钟速度和所使用技术类型在每个组件方块中可变。给予互连和逻辑的名称仅为示例性,并且不应理解为限制所述概念。根据各种实施方式,流程图和流程图处理、动作和功能元件的顺序和排列可变。此外,除非另有明确指出,所指定值范围、所使用最大值和最小值或者其它特定规范(诸如闪存技术类型;和寄存器和缓冲器中条目或者级数)仅为所述实施方式的值范围、最大值和最小值或者其它特定规范,期望跟踪实施技术改进和改变,并且不应理解为限制。
可采用本领域中已知的功能等同技术,而不是说明为实施各种组件、子系统、操作、功能、例程、子例程、直插例程、程序、宏或其部分的技术。也应当理解,实施方式的许多功能方面可在硬件(例如,基本上专用电路)或者软件中(例如,经由编程控制器或者处理器的某个方式)选择性实现为与更快处理(有利于硬件中先前功能迁移到软件中)和更高集成密度(有利于软件中先前功能迁移到硬件中)的设计约束和技术趋势有关的实施方式功能。各种实施方式中特定改变包括但不限于:分区不同;不同外形规格和配置;不同操作系统和其它系统软件使用;不同接口标准、网络协议或者通信链路使用;和当根据特定应用的唯一工程和业务约束来实施本文所述的概念时期望的其它改变。
实施方式已经进行详细说明,并且环境背景远远超出所述实施方式的许多方面的最小实现所需的环境背景。本领域一般技术人员应当明白,在不改变其余元件之间基本协作的情况下,一些实施方式省略所公开组件或者特征。因此,应当理解,所公开细节中许多并不需要实施所述实施方式的各个方面。在一定程度上,其余元件与现有技术可区分,所省略组件和特征并不限制本文所述的概念。
所有所述设计改变在由所述实施方式传达的教案下基本上无改变。也应当理解,本文所述的实施方式对于其它计算和联网应用具有广泛适用性,并且并不限于所述实施方式的特定应用或者行业。因此,本发明应当理解为包括所有可行修改和改变,均包括在已公开的专利的权利要求范围内。
Claims (20)
1.一种系统,包括:
用于将一个或多个闪存的全部或多个部分操作为分别专用于主机数据、系统数据、系统超量配置(OP)和主机OP的相应分配的构件;
用于响应于一个或多个事件动态地确定任何一个或多个所述相应分配的构件;
其中,所述用于操作的构件和所述用于动态确定的构件包括在固态磁盘(SSD)的控制器中,并且所述闪存包括在所述SSD中;并且
其中,所述事件包括至少部分由于存储于主机数据分配中的主机数据的压缩的改变而导致的所述主机数据分配的使用量的改变。
2.根据权利要求1所述的系统,其中,响应于由于所述主机数据分配的所述使用量的提高的压缩而导致的所述主机数据分配的所述使用量的减少,所述用于动态确定的构件增加系统数据分配和系统OP分配中的一个或多个。
3.根据权利要求1所述的系统,其中,响应于由于所述主机数据分配的所述使用量的提高的压缩而导致的所述主机数据分配的所述使用量的减少,所述用于动态确定的构件增加系统OP分配和主机OP分配中的一个或多个。
4.根据权利要求3所述的系统,其中,至少部分基于到系统数据分配与到所述主机数据分配的写入的相应带宽,所述用于动态确定的构件在所述系统OP分配与所述主机OP分配之间分配。
5.根据权利要求1所述的系统,其中,所述压缩的改变至少部分通过确定所述主机数据分配中未使用的量的改变来确定。
6.根据权利要求1所述的系统,其中,所述主机数据分配的所述使用量的改变至少部分由于所存储的主机数据的重复数据删除而改变。
7.根据权利要求1所述的系统,其中,所述主机数据分配的所述使用量的改变至少部分是由于明确地去分配全部或多个部分的所存储的主机数据的主机命令而导致的。
8.根据权利要求1所述的系统,其中,对任何一个或多个所述相应分配的改变在无用数据收集、回收和擦除中的任何一个或多个之后立即有效。
9.根据权利要求1所述的系统,还包括用于与主机接口连接的构件,所述用于接口连接的构件包括在所述控制器中并且能够从所述主机接收数据。
10.一种方法,包括:
将一个或多个闪存的全部或多个部分操作为分别专用于主机数据、系统数据、系统超量配置(OP)和主机OP的相应分配;
响应于一个或多个事件动态地确定任何一个或多个所述相应分配;
其中,所述操作和所述动态确定通过包括在固态磁盘(SSD)中的控制器执行;并且
其中,所述事件包括至少部分由于存储于主机数据分配中的主机数据的压缩的改变而导致的所述主机数据分配的使用量的改变。
11.根据权利要求10所述的方法,其中,响应于由于所述主机数据分配的所述使用量的提高的压缩而导致的所述主机数据分配的所述使用量的减少,所述动态确定增加系统数据分配和系统OP分配中的一个或多个。
12.根据权利要求10所述的方法,其中,所述动态确定响应于由于所述主机数据分配的所述使用量的提高的压缩而导致的所述主机数据分配的所述使用量的减少,增加系统OP分配和主机OP分配中的一个或多个,并且至少部分基于到系统数据分配和到所述主机数据分配的写入的相应带宽,在所述系统OP分配与所述主机OP分配之间分配。
13.根据权利要求10所述的方法,其中,所述压缩的改变至少部分通过确定所述主机数据分配中未使用的量的改变来确定。
14.根据权利要求10所述的方法,其中,所述主机数据分配的所述使用量的改变至少部分是由于所存储的主机数据的重复数据删除的改变以及使所存储的主机数据中的全部或多个部分明确地去分配的主机命令中的一个或多个导致的。
15.根据权利要求10所述的方法,其中,对任何一个或多个所述相应分配的改变在无用数据收集、回收和擦除中任何一个或多个之后立即有效。
16.一种实体的计算机可读介质,具有存储于其中的一组指令,当由处理元件执行时,该组指令使得所述处理元件执行和/或控制操作,所述操作包括:
将一个或多个闪存的全部或多个部分管理为分别专用于主机数据、系统数据、系统超量配置(OP)和主机OP的相应分配;
响应于一个或多个事件,动态地确定任何一个或多个所述相应分配;
其中,所述实体的计算机可读介质和所述处理元件包括在固态磁盘(SSD)中;并且
其中,所述事件包括至少部分由于存储于所述主机数据分配中的主机数据的压缩的改变而导致的所述主机数据分配的使用量的改变。
17.根据权利要求16所述的有形的计算机可读介质,其中,所述动态确定响应于由于所述主机数据分配的使用量的提高的压缩而导致的所述主机数据分配的所述使用量的减少,增加所述系统OP分配和所述主机OP分配中的一个或多个,并且至少部分基于到所述系统数据分配和到所述主机数据分配的写入的相应带宽在所述系统OP分配与所述主机OP分配之间分配。
18.根据权利要求16所述的实体的计算机可读介质,其中,所述压缩的改变至少部分通过确定所述主机数据分配中未使用的量的改变来确定。
19.根据权利要求16所述的实体的计算机可读介质,其中,所述主机数据分配的使用量的改变至少部分是由于所存储的主机数据的重复数据删除的改变以及使所存储的主机数据中全部或多个部分明确去分配的主机命令中的一个或多个导致的。
20.根据权利要求16所述的实体的计算机可读介质,其中,任何一个或多个所述相应分配的改变在无用数据收集、回收和擦除中任何一个或多个之后立即有效。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161479249P | 2011-04-26 | 2011-04-26 | |
US61/479,249 | 2011-04-26 | ||
PCT/US2012/034601 WO2012148828A2 (en) | 2011-04-26 | 2012-04-22 | Variable over-provisioning for non-volatile storage |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103620563A true CN103620563A (zh) | 2014-03-05 |
CN103620563B CN103620563B (zh) | 2015-04-29 |
Family
ID=47073008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280031465.2A Active CN103620563B (zh) | 2011-04-26 | 2012-04-22 | 用于非易失性存储器的可变超量配置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10241908B2 (zh) |
EP (1) | EP2702491A4 (zh) |
JP (1) | JP6045567B2 (zh) |
KR (2) | KR101467939B1 (zh) |
CN (1) | CN103620563B (zh) |
TW (1) | TWI473011B (zh) |
WO (1) | WO2012148828A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335100A (zh) * | 2015-09-29 | 2016-02-17 | 华为技术有限公司 | 一种数据处理方法、装置及闪存设备 |
CN108806754A (zh) * | 2017-05-03 | 2018-11-13 | 希捷科技有限公司 | 用于管理存储设备中的数据的方法和装置 |
CN109783017A (zh) * | 2015-01-27 | 2019-05-21 | 华为技术有限公司 | 一种存储设备坏块的处理方法、装置及存储设备 |
CN109947370A (zh) * | 2014-05-30 | 2019-06-28 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10240724B2 (en) | 2015-08-17 | 2019-03-26 | Zhejiang Super Lighting Electric Appliance Co., Ltd. | LED filament |
WO2013022915A1 (en) | 2011-08-09 | 2013-02-14 | Lsi Corporation | I/o device and computing host interoperation |
US9218281B2 (en) | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
US9443591B2 (en) | 2013-01-23 | 2016-09-13 | Seagate Technology Llc | Storage device out-of-space handling |
US8799284B2 (en) * | 2012-11-30 | 2014-08-05 | Futurewei Technologies, Inc. | Method for automated scaling of a massive parallel processing (MPP) database |
US9092327B2 (en) | 2012-12-10 | 2015-07-28 | Qualcomm Incorporated | System and method for allocating memory to dissimilar memory devices using quality of service |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
US8959298B2 (en) * | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
US9141532B2 (en) * | 2012-12-26 | 2015-09-22 | Western Digital Technologies, Inc. | Dynamic overprovisioning for data storage systems |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9542306B2 (en) | 2013-03-13 | 2017-01-10 | Seagate Technology Llc | Dynamic storage device provisioning |
US9912474B2 (en) * | 2013-09-27 | 2018-03-06 | Intel Corporation | Performing telemetry, data gathering, and failure isolation using non-volatile memory |
US9454551B2 (en) * | 2014-03-13 | 2016-09-27 | NXGN Data, Inc. | System and method for management of garbage collection operation in a solid state drive |
KR102164617B1 (ko) | 2014-03-24 | 2020-10-12 | 삼성전자주식회사 | 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법 |
CN105094685B (zh) | 2014-04-29 | 2018-02-06 | 国际商业机器公司 | 进行存储控制的方法和设备 |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
KR102275706B1 (ko) * | 2014-06-30 | 2021-07-09 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
TWI540582B (zh) * | 2014-07-10 | 2016-07-01 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US20160041762A1 (en) | 2014-08-08 | 2016-02-11 | Kabushiki Kaisha Toshiba | Memory system, host device and information processing system |
US9417813B2 (en) | 2014-09-02 | 2016-08-16 | International Business Machines Corporation | Tuning overprovisioning based on the used block count |
US9652382B1 (en) * | 2014-09-04 | 2017-05-16 | Sk Hynix Memory Solutions Inc. | Look-ahead garbage collection for NAND flash based storage |
US9632927B2 (en) | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
US9513822B2 (en) * | 2014-09-26 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Unmap storage space |
US10031673B2 (en) | 2014-09-26 | 2018-07-24 | SK Hynix Inc. | Techniques for selecting amounts of over-provisioning |
US10691531B2 (en) | 2014-12-04 | 2020-06-23 | Western Digital Technologies, Inc. | Systems and methods for multi-zone data tiering for endurance extension in solid state drives |
US10067823B2 (en) | 2014-12-04 | 2018-09-04 | Western Digital Technologies, Inc. | Systems and methods for adaptive error corrective code mechanisms |
US10078582B2 (en) | 2014-12-10 | 2018-09-18 | International Business Machines Corporation | Non-volatile memory system having an increased effective number of supported heat levels |
US9779021B2 (en) | 2014-12-19 | 2017-10-03 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
KR101653999B1 (ko) * | 2015-04-02 | 2016-09-09 | 서울시립대학교 산학협력단 | 낸드 플래시 기반의 스토리지 시스템 및 데이터 보존 강화 방법 |
KR102365269B1 (ko) * | 2015-04-13 | 2022-02-22 | 삼성전자주식회사 | 데이터 스토리지 및 그것의 동작 방법 |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
JP6554990B2 (ja) * | 2015-08-11 | 2019-08-07 | 富士通株式会社 | ストレージ制御装置およびストレージ制御プログラム |
US10198061B2 (en) | 2015-09-01 | 2019-02-05 | Toshiba Memory Corporation | Storage and storage system |
US10048876B2 (en) | 2015-09-10 | 2018-08-14 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US10108350B2 (en) | 2015-09-10 | 2018-10-23 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US9886208B2 (en) | 2015-09-25 | 2018-02-06 | International Business Machines Corporation | Adaptive assignment of open logical erase blocks to data streams |
US9946483B2 (en) * | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
US10235198B2 (en) | 2016-02-24 | 2019-03-19 | Samsung Electronics Co., Ltd. | VM-aware FTL design for SR-IOV NVME SSD |
JP6320439B2 (ja) * | 2016-03-10 | 2018-05-09 | 株式会社東芝 | メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法 |
US10156999B2 (en) | 2016-03-28 | 2018-12-18 | Seagate Technology Llc | Dynamic bandwidth reporting for solid-state drives |
US9934151B2 (en) | 2016-06-28 | 2018-04-03 | Dell Products, Lp | System and method for dynamic optimization for burst and sustained performance in solid state drives |
US10162554B2 (en) * | 2016-08-03 | 2018-12-25 | Samsung Electronics Co., Ltd. | System and method for controlling a programmable deduplication ratio for a memory system |
JP6553566B2 (ja) | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2018073038A (ja) | 2016-10-27 | 2018-05-10 | 東芝メモリ株式会社 | メモリシステム |
US10254981B2 (en) * | 2016-12-12 | 2019-04-09 | International Business Machines Corporation | Adaptive health grading for a non-volatile memory |
JP6681512B2 (ja) * | 2017-02-20 | 2020-04-15 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
WO2018167890A1 (ja) * | 2017-03-15 | 2018-09-20 | 株式会社日立製作所 | 計算機システム及び管理方法 |
TWI614674B (zh) * | 2017-09-30 | 2018-02-11 | 威聯通科技股份有限公司 | 自動分層儲存系統及方法 |
US10790419B2 (en) | 2017-12-26 | 2020-09-29 | Jiaxing Super Lighting Electric Appliance Co., Ltd | LED filament and LED light bulb |
CN110058794B (zh) * | 2018-01-19 | 2022-11-01 | 上海宝存信息科技有限公司 | 用于动态执行垃圾回收数据储存装置与操作方法 |
JP6800904B2 (ja) * | 2018-03-20 | 2020-12-16 | 株式会社東芝 | モデル生成装置、情報処理装置、モデル生成方法およびプログラム |
US11068168B2 (en) * | 2018-07-17 | 2021-07-20 | Micron Technology, Inc. | Managing storage performance consistency with feedback control |
US10963172B2 (en) * | 2018-08-09 | 2021-03-30 | Apple Inc. | Systems and methods for providing a back pressure free interconnect |
KR102576373B1 (ko) * | 2018-09-28 | 2023-09-07 | 에스케이하이닉스 주식회사 | 저장 공간을 동적으로 할당하는 제어 장치 및 이를 포함하는 데이터 저장 장치 |
KR20200132495A (ko) * | 2019-05-17 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법 |
US11436138B2 (en) * | 2020-10-21 | 2022-09-06 | EMC IP Holding Company LLC | Adaptive endurance tuning of solid-state storage system |
CN112527194B (zh) * | 2020-12-04 | 2024-02-13 | 北京浪潮数据技术有限公司 | 固态硬盘写放大设定方法、系统、装置及可读存储介质 |
CN112988068B (zh) * | 2021-03-10 | 2023-03-10 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
KR20220128791A (ko) * | 2021-03-15 | 2022-09-22 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 전자 장치 및 그것의 비휘발성 메모리 관리 방법 |
US20220374216A1 (en) * | 2021-05-20 | 2022-11-24 | Lenovo (United States) Inc. | Method of manufacturing information processing apparatus and mobile computer |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
CN117931416A (zh) * | 2022-10-14 | 2024-04-26 | 成都华为技术有限公司 | 资源分配方法、装置、存储介质及程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1670701A (zh) * | 2004-03-17 | 2005-09-21 | 德鑫科技股份有限公司 | 压缩数据存储方法 |
CN1851671A (zh) * | 2005-07-01 | 2006-10-25 | 华为技术有限公司 | 一种节省全局变量内存空间的方法 |
US7159082B1 (en) * | 2005-10-03 | 2007-01-02 | Hewlett-Packard Development Company, L.P. | System and method for throttling memory accesses |
CN101390043A (zh) * | 2005-07-01 | 2009-03-18 | 美国日本电气实验室公司 | 嵌入式系统用的存储器体系结构 |
US20090249022A1 (en) * | 2008-03-27 | 2009-10-01 | Alan Rowe | Method for achieving sequential i/o performance from a random workload |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490260A (en) | 1990-12-14 | 1996-02-06 | Ceram, Inc. | Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size |
JP3212787B2 (ja) * | 1993-12-02 | 2001-09-25 | 日本電気株式会社 | 転送データ管理方式およびホスト・端末間データ転送方式 |
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US8078794B2 (en) | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
GB0123412D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system sectors |
JP4175185B2 (ja) * | 2003-06-06 | 2008-11-05 | 日本電気株式会社 | ネットワーク情報記録装置 |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US20070156998A1 (en) | 2005-12-21 | 2007-07-05 | Gorobets Sergey A | Methods for memory allocation in non-volatile memories with a directly mapped file storage system |
US20070143561A1 (en) | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system |
US7719983B2 (en) * | 2006-01-06 | 2010-05-18 | International Business Machines Corporation | Method for autonomic system management using adaptive allocation of resources |
KR100703807B1 (ko) | 2006-02-17 | 2007-04-09 | 삼성전자주식회사 | 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치 |
JP4855102B2 (ja) | 2006-02-23 | 2012-01-18 | 株式会社日立製作所 | 計算機システム及び管理計算機とストレージシステム並びに記憶領域割当量制御方法 |
US7467278B2 (en) | 2006-05-08 | 2008-12-16 | International Business Machines Corporation | Memory tuning for garbage collection and central processing (CPU) utilization optimization |
KR100818797B1 (ko) * | 2006-10-19 | 2008-04-01 | 삼성전자주식회사 | 메모리 용량 조절 방법과 메모리 용량 조절 장치 |
US8074011B2 (en) | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US7949637B1 (en) | 2007-06-27 | 2011-05-24 | Emc Corporation | Storage management for fine grained tiered storage with thin provisioning |
US7908423B2 (en) | 2007-07-25 | 2011-03-15 | Silicon Motion, Inc. | Memory apparatus, and method of averagely using blocks of a flash memory |
KR101498673B1 (ko) | 2007-08-14 | 2015-03-09 | 삼성전자주식회사 | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 |
US8850154B2 (en) * | 2007-09-11 | 2014-09-30 | 2236008 Ontario Inc. | Processing system having memory partitioning |
KR101464338B1 (ko) | 2007-10-25 | 2014-11-25 | 삼성전자주식회사 | 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템 |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US9183133B2 (en) * | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
KR101401560B1 (ko) | 2007-12-13 | 2014-06-03 | 삼성전자주식회사 | 반도체 메모리 시스템 및 그것의 마모도 관리 방법 |
US8775717B2 (en) | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
CN101632068B (zh) | 2007-12-28 | 2015-01-14 | 株式会社东芝 | 半导体存储装置 |
US8275933B2 (en) | 2008-11-10 | 2012-09-25 | Fusion-10, Inc | Apparatus, system, and method for managing physical regions in a solid-state storage device |
JP4461187B1 (ja) * | 2008-12-24 | 2010-05-12 | 株式会社東芝 | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 |
KR101618634B1 (ko) | 2009-01-07 | 2016-05-09 | 삼성전자주식회사 | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 |
WO2010109674A1 (en) | 2009-03-24 | 2010-09-30 | Hitachi, Ltd. | Storage apparatus and its data control method |
US8447918B2 (en) | 2009-04-08 | 2013-05-21 | Google Inc. | Garbage collection for failure prediction and repartitioning |
US8065469B2 (en) | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
JP5999645B2 (ja) | 2009-09-08 | 2016-10-05 | ロンギチュード エンタープライズ フラッシュ エスエイアールエル | ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 |
US8214580B2 (en) * | 2009-10-23 | 2012-07-03 | International Business Machines Corporation | Solid state drive with adjustable drive life and capacity |
US8285918B2 (en) | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US8677054B1 (en) * | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US9092340B2 (en) | 2009-12-18 | 2015-07-28 | Sandisk Technologies Inc. | Method and system for achieving die parallelism through block interleaving |
US8463984B2 (en) | 2009-12-31 | 2013-06-11 | Seagate Technology Llc | Dynamic data flow management in a multiple cache architecture |
US8327226B2 (en) * | 2010-02-03 | 2012-12-04 | Seagate Technology Llc | Adjustable error correction code length in an electrical storage device |
US8438361B2 (en) | 2010-03-10 | 2013-05-07 | Seagate Technology Llc | Logical block storage in a storage device |
US8458417B2 (en) | 2010-03-10 | 2013-06-04 | Seagate Technology Llc | Garbage collection in a storage device |
US9183134B2 (en) * | 2010-04-22 | 2015-11-10 | Seagate Technology Llc | Data segregation in a storage device |
JP5585235B2 (ja) | 2010-06-21 | 2014-09-10 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、ストレージシステム |
US20120023144A1 (en) | 2010-07-21 | 2012-01-26 | Seagate Technology Llc | Managing Wear in Flash Memory |
US20120059976A1 (en) * | 2010-09-07 | 2012-03-08 | Daniel L. Rosenband | Storage array controller for solid-state storage devices |
CN102023818A (zh) * | 2010-12-06 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种存储设备容量调整方法、装置及存储设备 |
US8838891B2 (en) * | 2012-04-13 | 2014-09-16 | Lsi Corporation | SSD cache expansion using overprovisioned space |
-
2012
- 2012-04-22 KR KR1020147018805A patent/KR101467939B1/ko active IP Right Grant
- 2012-04-22 KR KR1020137031072A patent/KR101467941B1/ko active IP Right Grant
- 2012-04-22 JP JP2014508453A patent/JP6045567B2/ja not_active Expired - Fee Related
- 2012-04-22 EP EP12777647.4A patent/EP2702491A4/en not_active Withdrawn
- 2012-04-22 CN CN201280031465.2A patent/CN103620563B/zh active Active
- 2012-04-22 WO PCT/US2012/034601 patent/WO2012148828A2/en active Application Filing
- 2012-04-22 US US14/112,221 patent/US10241908B2/en active Active
- 2012-04-26 TW TW101114992A patent/TWI473011B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1670701A (zh) * | 2004-03-17 | 2005-09-21 | 德鑫科技股份有限公司 | 压缩数据存储方法 |
CN1851671A (zh) * | 2005-07-01 | 2006-10-25 | 华为技术有限公司 | 一种节省全局变量内存空间的方法 |
CN101390043A (zh) * | 2005-07-01 | 2009-03-18 | 美国日本电气实验室公司 | 嵌入式系统用的存储器体系结构 |
US7159082B1 (en) * | 2005-10-03 | 2007-01-02 | Hewlett-Packard Development Company, L.P. | System and method for throttling memory accesses |
US20090249022A1 (en) * | 2008-03-27 | 2009-10-01 | Alan Rowe | Method for achieving sequential i/o performance from a random workload |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947370A (zh) * | 2014-05-30 | 2019-06-28 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
CN109783017A (zh) * | 2015-01-27 | 2019-05-21 | 华为技术有限公司 | 一种存储设备坏块的处理方法、装置及存储设备 |
CN109783017B (zh) * | 2015-01-27 | 2021-05-18 | 华为技术有限公司 | 一种存储设备坏块的处理方法、装置及存储设备 |
CN105335100A (zh) * | 2015-09-29 | 2016-02-17 | 华为技术有限公司 | 一种数据处理方法、装置及闪存设备 |
WO2017054756A1 (zh) * | 2015-09-29 | 2017-04-06 | 华为技术有限公司 | 一种数据处理方法、装置及闪存设备 |
CN105335100B (zh) * | 2015-09-29 | 2018-09-21 | 华为技术有限公司 | 一种数据处理方法、装置及闪存设备 |
US10552315B2 (en) | 2015-09-29 | 2020-02-04 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and flash device |
US11200160B2 (en) | 2015-09-29 | 2021-12-14 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and flash device |
US11960393B2 (en) | 2015-09-29 | 2024-04-16 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and flash device |
CN108806754A (zh) * | 2017-05-03 | 2018-11-13 | 希捷科技有限公司 | 用于管理存储设备中的数据的方法和装置 |
CN108806754B (zh) * | 2017-05-03 | 2022-04-05 | 希捷科技有限公司 | 用于管理存储设备中的数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2012148828A2 (en) | 2012-11-01 |
KR20130143140A (ko) | 2013-12-30 |
JP6045567B2 (ja) | 2016-12-14 |
WO2012148828A3 (en) | 2013-01-24 |
TW201250580A (en) | 2012-12-16 |
EP2702491A2 (en) | 2014-03-05 |
JP2014513356A (ja) | 2014-05-29 |
KR101467941B1 (ko) | 2014-12-02 |
TWI473011B (zh) | 2015-02-11 |
US20140101379A1 (en) | 2014-04-10 |
KR101467939B1 (ko) | 2014-12-02 |
KR20140094654A (ko) | 2014-07-30 |
US10241908B2 (en) | 2019-03-26 |
CN103620563B (zh) | 2015-04-29 |
EP2702491A4 (en) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103620563B (zh) | 用于非易失性存储器的可变超量配置 | |
JP6387231B2 (ja) | 不揮発性メモリへの書き込みの管理および領域選択 | |
JP5980798B2 (ja) | 独立したシリコン素子の動的な上位レベルの冗長モード管理 | |
CN103858116B (zh) | I/o设备及计算主机互操作 | |
US9851910B2 (en) | Scalable data structures for control and management of non-volatile storage | |
KR101912596B1 (ko) | 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구 | |
JP6265746B2 (ja) | 記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換 | |
KR101564569B1 (ko) | 상위-레벨 리던던시 정보 계산 | |
TWI612524B (zh) | 控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體 | |
JP6185993B2 (ja) | 不揮発性メモリのための混合粒度の上位レベルの冗長 | |
TWI531902B (zh) | 矽獨立元件之部分冗餘陣列 | |
JP6649452B2 (ja) | メモリシステムおよび不揮発性メモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160223 Address after: California, USA Patentee after: Seagate Technology LLC Address before: California, USA Patentee before: LSI Corp. |