CN103942114A - Nvm地址、跨度及长度映射/转换的存储地址空间 - Google Patents
Nvm地址、跨度及长度映射/转换的存储地址空间 Download PDFInfo
- Publication number
- CN103942114A CN103942114A CN201410031027.7A CN201410031027A CN103942114A CN 103942114 A CN103942114 A CN 103942114A CN 201410031027 A CN201410031027 A CN 201410031027A CN 103942114 A CN103942114 A CN 103942114A
- Authority
- CN
- China
- Prior art keywords
- data
- reading unit
- space
- length
- address
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Abstract
本发明涉及NVM地址、跨度及长度映射/转换的存储地址空间。NVM地址、跨度及长度映射/转换的存储地址空间由包括映射功能的固态存储系统的控制器执行以将来自主机的逻辑块地址转换为NVM的最小读取单元的地址。映射功能提供与逻辑块地址对应的跨度和长度信息。跨度信息指定读取数个最小连续读取单元以向主机提供数据(与逻辑块地址对应)。长度信息指定最小连续读取单元中有多少与提供给主机的数据有关。转换的地址和长度信息可用于提高NVM的不再需要的(例如,释放的)部分的回收,且可用于促进从故障和/或服务意外中断中恢复。
Description
相关申请的交叉引用
在所附的申请书数据表、请求书和传送信(如适用,如果有的话)中列出了对该申请的优先权权益要求。在即时申请的类型所允许的范围内,在提出本发明时,为了所有目的,本申请通过引用并入所有由即时申请的所有者共同拥有的下列申请:
于2010年3月22日提交的美国临时申请(案号为SF-10-02,序列号为61/316,373),第一署名发明人为Radoslav DANILAK,且题为“ACCESSING COMPRESSED DATA OF VARYING-SIZED QUANTA INNON-VOLATILE MEMORY”;
于2010年12月1日提交的美国临时申请(案号为SF-10-10,序列号为61/418,846),第一署名发明人为Jeremy Isaac Nathaniel WERNER,且题为“DYNAMIC HIGHER-LEVEL REDUNDANCY MODEMANAGEMENT WITH INDEPENDENT SILICON ELEMENTS”;
于2011年10月5日提交的美国临时申请(案号为SF-10-10,序列号为61/543,707),第一署名发明人为Earl T.COHEN,且题为“SELF-JOURNALING AND HIERARCHICAL CONSISTENCY FORNON-VOLATILE STORAGE”;以及
于2013年1月22日提交的美国临时申请(案号为SF-10-12,序列号为61/755,169),第一署名发明人为Earl T.COHEN,且题为“STORAGEADDRESS SPACE TO NVM ADDRESS,SPAN,AND LENGTHMAPPING/CONVERTING”。
技术领域
本发明涉及NVM地址、跨度及长度映射/转换的存储地址空间。
背景技术
领域:闪存存储技术的进步对于提供性能、效率和使用实用性的提高是必要的。
现有技术:除非被明确认定为被公开或众所周知,否则为了上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公开为已知的或者是现有技术的一部分。为了所有目的,通过引用将本文中所引用的所有参考文献(如有的话)(包括专利、专利申请和出版物)整体并入,而无论是否被具体并入。
发明内容
本发明可以以多种方式实现,这些方式例如过程、制品、装置、系统、物质组分和计算机可读介质(比如计算机可读存储介质(例如,光学和/或磁性大容量存储设备中的介质(比如磁盘),或具有比如闪存存储器的非易失性存储器的集成电路)或计算机网络,其中,通过光学或电子通信链路发送程序指令。具体实施方式提供了能实现在上文认定的领域中的成本的改善、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施例的论述。具体实施方式包括用于促进对具体实施方式的其余部分的理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施例。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
附图说明
图1A示出了包括使用比如在地址映射功能的表条目中编码位置和长度相关信息的各种技术,以及管理非易失性存储(比如闪存)的电路来实现非易失性存储器(NVM)地址、跨度及长度映射/转换的存储地址空间的SSD控制器的固态磁盘/驱动器(SSD)的实施例的所选细节。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各种实施例的所选细节。
图2示出了映射逻辑块地址(LBA)的逻辑页面号(LPN)部分的实施例的所选细节。
图3示出了以读取单元地址访问非易失性存储器(NVM)以产生被组织为各个读取单元的读取数据(共同具有以读取单元量测量的长度)的实施例的所选细节。
图4A示出了读取单元的一个实施例的所选细节。
图4B示出了读取单元的另一实施例的所选细节。
图5示出了具有大量字段的报头的实施例的所选细节。
图6示出了多个NVM设备的区块、页面和读取单元的实施例的所选细节。
图7示出了经由具有第一级映射(FLM)和一个或多个第二级映射(SLM)页面的两级映射将LBA映射到NVM中所存储的逻辑块(LB)的实施例的所选细节。
图8是示出数据长度和跨度以及解码编码长度信息以获得数据长度和跨度的值的示例的概念图。
附图中的附图标记列表
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施例的详细描述。将结合实施例来描述本发明。本文的实施例应被理解为仅是示例性的,本发明不明确限于本文的任何或所有实施例或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可应用于独立的实施例组;如本文所使用的,这些标签并不明确地意指传送质量或任何形式的偏爱或偏见,而只是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施例用于描述过程、方法和/或程序指令特征的变化,其他实施例均被设想为根据预定的或动态确定的标准执行分别对应于多个实施例的多个操作模式中的一个的静态和/或动态选择。许多具体细节列于以下描述中,以提供对本发明的透彻理解。为示例的目的而提供细节,且本发明可根据未列出一些或所有细节的权利要求来实践。为了清晰起见,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要模糊。
介绍
仅包括该介绍,以便于更迅速理解具体实施方式;本发明不限于在介绍中提出的概念(包括明确的示例,如有的话),因为任何介绍的段落均是整个主题的缩略图,且不意味着是详尽或限制的描述。例如,以下介绍仅对某些实施例提供由空间和组织限定的概述信息。有许多其他实施例,包括最终将针对其描绘权利要求的那些实施例,在整个说明书的其余部分中讨论。
缩略语
本文中所限定的各种速记缩写(例如,首字母缩写词)中的至少一些是指本文所使用的某些元件。
缩略语 | 描述 |
AHCI | 高级主机控制器接口 |
API | 应用程序接口 |
ATA | 高级技术附件(AT附件) |
BCH | 博斯-乔赫里-霍克文黑姆码 |
CD | 光盘 |
CF | 紧凑式闪存 |
CMOS | 互补型金属氧化物半导体 |
CPU | 中央处理器 |
CRC | 循环冗余校验 |
DAS | 直接附接存储 |
DDR | 双倍数据速率 |
DMA | 直接存储器访问 |
DNA | 直接NAND访问 |
DRAM | 动态随机存取存储器 |
DVD | 数字多用途光盘/数字视频光盘 |
DVR | 数字视频录像机 |
ECC | 错误校正码 |
eMMC | 嵌入式多媒体卡 |
eSATA | 外部串行高级技术附件 |
GPS | 全球定位系统 |
HDD | 硬盘驱动器 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子装置 |
JPEG | 联合图像专家组 |
LAN | 局域网 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LPN | 逻辑页面号 |
MLC | 多级存储单元 |
MMC | 多媒体卡 |
MPEG | 运动图像专家组 |
NAS | 网络附接存储 |
NCQ | 本机命令排队 |
NVM | 非易失性存储器 |
ONA | 优化NAND访问 |
ONFI | 开放NAND闪存接口 |
OS | 操作系统 |
PC | 个人计算机 |
PCIe | 快速外围组件互连(快速PCI) |
PDA | 个人数字助理 |
PHY | 物理接口 |
POS | 销售点 |
RAID | 廉价/独立磁盘冗余阵列 |
RASIE | 硅独立元件冗余阵列 |
RS | 里德-所罗门 |
SAN | 存储附接网络 |
SAS | 串行连接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术附件(串行ATA) |
SCSI | 小型计算机系统接口 |
SD | 安全数字 |
SDR | 单倍数据速率 |
SLC | 单级存储单元 |
SMART | 自监测分析和报告技术 |
SRAM | 静态随机存取存储器 |
SSD | 固态磁盘/驱动器 |
UFS | 统一闪存存储器 |
USB | 通用串行总线 |
VF | 虚拟函数 |
WAN | 广域网 |
NVM地址、跨度及长度映射/转换的存储地址空间由包括映射功能的固态存储系统的控制器执行以将来自主机的逻辑块地址转换为NVM的最小读取单元的地址。映射功能提供与逻辑块地址对应的跨度和长度信息。跨度信息指定读取数个最小连续读取单元以向主机提供数据(与逻辑块地址对应)。长度信息指定最小连续读取单元中有多少与提供给主机的数据有关。转换的地址和长度信息可用于提高NVM的不再需要的(例如,释放的)部分的回收,且可用于促进从故障和/或服务意外中断中恢复。在各种实施例中,映射功能经由一个或多个映射实现。
根据各种实施例,映射是以下各项中的一个或多个:一级映射、二级映射、多级映射、直接映射、相关映射和使主机协议的LBA与NVM中的物理存储地址相关联的任何其他方式。例如,在某些实施例中,二级映射包括使LBA的第一函数与多个二级映射页面中的一个的NVM中的各地址相关联的一级映射,并且二级映射中的每一个使LBA的第二函数与对应于LBA的数据的NVM中的各地址相关联。在进一步的实施例中,LBA的第一函数和LBA的第二函数的示例为将LBA除以等于每个二级映射页面中所包括的数个条目的整数时获得的商数和余数。多个二级映射页面统称为二级映射。在本文中,引用映射的一个或多个条目指的是任意类型映射的一个或多个条目,包括一级映射、二级映射的一级、二级映射的二级、多级映射的任意级或具有条目的任何其他类型的映射。
根据各种实施例,二级映射(或多级映射的较低级)的映射页面的每一个包括以下各项中的一项或多项:与其他映射页面相同数量的条目、与至少一部分其他映射页面不同数量的条目、与其他映射页面相同粒度(granularity,间隔尺寸)的条目、与其他映射页面不同粒度的条目、全部为相同粒度的条目、为多种粒度的条目、指定映射页面的格式和/或布局的各报头;并具有表示映射页面的条目的任何其他格式、布局或组织。例如,第一二级映射页面的规格为每条目4KB的粒度,第二二级映射页面的规格为每条目8KB的粒度并且只具有第一二级映射页面的条目的二分之一。
在进一步的实施例中,较高级映射的条目包括对应的较低级映射页面的格式和/或布局信息。例如,一级映射中的每个条目包括相关联的二级映射页面中的条目的粒度规格。
在某些实施例中,映射包括多个条目,每个条目使一个或多个LBA与信息相关联,该信息选择性地包括存储有LBA数据的NVM中的各自的位置。例如,LBA指定512B扇区,并且映射中的每个条目与LBA的对齐的八扇区(4KB)区域相关联。
根据各种实施例,映射的条目的信息包括以下各项中的一个或多个:NVM中的位置;NVM中读取单元的地址;要读取以获得NVM中所存储的相关联LBA的数据的读取单元的数量;NVM中所存储的相关联LBA的数据的大小,该大小的粒度任选地和/或可选地大于一个字节;相关联LBA的数据不存在于NVM中的指示,比如由于相关联LBA的数据被修整;相关联LBA的数据的属性;以及相关联LBA的数据的任何其他元数据、属性或性质。
在某些实施例中,NVM中的地址被分组为多个区域以减少表示其中一个地址所需的位数。例如,如果I/O设备的LBA被分成64个区域,并且NVM被分成64个区域,每个LBA区域对应一个,则与特定LBA相关联的映射条目需要6个以下的地址位,因为NVM中的其中一个区域能够由特定LBA的区域确定。根据各种实施例,LBA的区域和NVM的区域之间的关联是以下各项中的一个或多个:相等;直接关联,比如1对1数值函数;查表;动态映射;以及使两组数字相关联的任何其他方法。
在各种实施例中,NVM中的位置包括多个读取单元中的一个的地址,以及读取单元中的长度和/或跨度。长度是NVM中所存储的多个数据项中的一个特定数据项的大小,特定数据项与包括长度的映射的条目相关联。根据各种实施例,长度具有以下各项中的一项或多项的粒度:一字节、一个以上的字节、一个读取单元、指定的一小部分读取单元、根据其中一个数据项的最大允许压缩率的粒度以及用于跟踪存储使用量的任何其他粒度。跨度是整数个读取单元,存储有特定数据项,例如,特定数据项经由访问数个读取单元来访问。在进一步的实施例和/或使用场景下,在读取单元跨度中的第一读取单元和/或读取单元跨度中的最后读取单元任选地和/或可选择地存储多个数据项的一部分或所有数据项。在某些实施例和/或使用场景下,存储长度和/或跨度,比如通过将跨度(在上下文中有时称为大小,对长度和/或跨度进行编码)存储为相对于长度的偏移量来进行编码。在某些实施例和/或使用场景下,未使用的长度和/或跨度编码对额外信息(比如相关联数据项是否存在于NVM中的指示)进行编码。
编码NVM中作为地址和长度相关信息的位置使NVM中所存储的数据的大小改变。在某些实施例中,长度被存储为定点数<X.Y>,其中X是整数部分,Y是小数部分。在进一步的实施例中,长度被存储为元组<X.Y,S>,其中X.Y是表示长度的定点数,S是“跨度指示”,且跨度被编码为X+S。根据各种实施例,S是表示0或1的1位数;S是表示-1,0或1的2位数;S是有符号或无符号的N位数;以及S是偏移预定量存储的有符号或无符号数。
示例性实施例
在结束对具体实施方式的介绍时,接下来是示例性实施例的集合,包括明确列举为“EC”(示例性组合)的至少一些实施例,根据本文所述的概念提供对各种实施例类型的额外描述;这些示例并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些示例性实施例,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
EC1)一种方法,包括:
将存储地址空间中的多个页面的每一个第一映射至可从非易失性存储器读取的多个最小量可校正数据中的一个的相应地址;
将页面的每一个第二映射至指定可从非易失性存储器读取的整数个最小量可校正数据的相应跨度;
将页面的每一个第三映射至粒度(间隔尺寸)比可从非易失性存储器读取的最小量可校正数据更细(小)的单元的相应长度;
至少部分基于特定页面的相应地址和相应跨度来读取存储在非易失性存储器中并与页面中的特定页面相关联的数据;
响应于写入与特定页面相关联的数据,至少部分基于特定页面的相应长度来更新非易失性存储器的空间使用信息;并且
其中,可从由特定页面的相应地址和相应跨度指定的非易失性存储器读取的最小量可校正数据的一个或多个同时存储与特定页面相关联的数据以及与页面中的至少一个其他页面相关联的至少一些数据。
EC2)如EC1所述的方法,
进一步包括访问映射表的多个条目中的特定条目,所述映射表使页面的每一个与映射表条目的相应映射表条目相关联,所述特定页面与特定映射表条目相关联;并且
其中,所述访问包括特定页面的第一映射,特定页面的第二映射,以及特定页面的第三映射。
EC3)如EC2所述的方法,其中,特定映射条目包括相应跨度、相应地址以及相应长度。
EC4)如EC1所述的方法,其中,单位的粒度(间隔尺寸)比单个字节的单位粗(大)。
EC5)如EC1所述的方法,
其中,非易失性存储器包括多个单独可写的非易失性存储器页面;并且
其中,单独可写的非易失性存储器页面的每一个包括可从非易失性存储器读取的最小量可校正数据中的至少一些。
EC6)如EC1所述的方法,其中,读取所述数据包括解析存储在可从由特定页面的相应地址和相应跨度指定的非易失性存储器读取的最小量可校正数据的一个或多个中的报头,所述报头包括可从由特定页面的相应地址和相应跨度指定的非易失性存储器读取的最小量可校正数据的一个或多个内存储在非易失性存储器中并与特定页面相关联的数据的偏移量。
EC7)如EC1所述的方法,进一步包括:响应于写入与特定页面相关联的数据,根据与特定页面相关联的数据的长度来更新特定页面的相应长度。
EC8)如EC7所述的方法,其中,写入与特定页面相关联的数据包括减小与特定页面相关联的数据的尺寸(size,大小),特定页面的相应长度根据与特定页面相关联的数据的减小尺寸(大小)的长度。
EC9)如EC8所述的方法,其中所述减小包括压缩。
EC10)如EC8所述的方法,进一步包括:响应于写入与特定页面相关联的数据,根据可从非易失性存储器读取的数个最小量可校正数据来更新特定页面的相应跨度以访问检索与特定页面相关联的减小数据。
EC11)如EC1所述的方法,进一步包括:响应于写入与特定页面相关联的数据,根据可从非易失性存储器读取的数个最小量可校正数据来更新特定页面的相应跨度以访问检索与特定页面相关联的数据。
EC12)如EC1所述的方法,其中与页面中的第一页面相关联的数据的尺寸(大小)不同于与页面中的第二页面相关联的数据的尺寸(大小)。
EC13)如EC1所述的方法,其中页面中的第一页面的相应长度不同于页面中的第二页面的相应长度。
EC14)如EC1所述的方法,其中页面中的第一页面的相应跨度不同于页面中的第二页面的相应跨度。
EC15)如EC1所述的方法,其中页面中的第一页面的相应地址等于与页面中的第二页面相关联的数据的相应地址。
EC16)一种方法,包括:
将存储地址空间中的多个页面的每一个第一映射至多个读取配量中的一个的相应地址,读取配量的每一个是可从非易失性存储器读取的最小量可校正数据;
将页面的每一个第二映射至指定整数个读取配量的相应跨度;
将页面的每一个第三映射至粒度(间隔尺寸)比最小可校正读取配量的任意一个更细(小)的单元的相应长度;
至少部分基于特定页面的相应地址和相应跨度来读取存储在非易失性存储器中并与页面中的特定页面相关联的数据;
响应于写入与特定页面相关联的数据,至少部分基于特定页面的相应长度来更新非易失性存储器的空间使用信息;并且
其中,特定页面的相应地址和相应跨度指定通过读取数据访问的读取配量中的特定读取配量,并且特定读取配量中的至少一个包含与特定页面相关联的至少一些数据以及与页面的另一个相关联的至少一些数据。
EC17)一种方法,包括:
至少部分基于存储空间地址中的多个页面中的特定页面的页面地址来确定一个或多个非易失性存储器的多个读取单元中的一个的读取单元地址;
至少部分基于页面地址来确定指定整数个读取单元的跨度;
至少部分基于页面地址来确定粒度(间隔尺寸)比读取单元更细(小)的单元的长度;
至少部分基于读取单元地址和跨度来读取与特定页面相关联的数据,所述读取包括访问整数N个读取单元,并且其中N至少部分基于跨度;
响应于写入数据,至少部分基于长度来更新非易失性存储器的空间使用信息;
其中,读取单元的每一个是可从非易失性存储器读取的可校正数据的最小配量;并且
其中,整数N个读取单元的至少一个包含与特定页面相关联的至少一些数据以及与页面的至少另一个相关联的至少一些数据。
EC18)如EC17所述的方法,其中N等于跨度。
EC19)如EC17所述的方法,其中:
确定读取单元地址包括将页面的每一个映射到读取单元的每一个的相应读取单元地址,所述读取单元地址是特定页面被映射到的相应读取单元地址;
确定跨度包括将页面的每一个映射到指定相应整数个读取单元的相应跨度,所述跨度是特定页面被映射到的相应跨度;并且
确定长度包括将页面的每一个映射到粒度(间隔尺寸)比读取单元更细(小)的单元的长度,所述长度是特定页面被映射到的相应长度。
EC20)如EC19所述的方法,
进一步包括访问映射表的多个条目中的特定条目,所述映射表使页面的每一个与映射表条目的相应映射表条目相关联,所述特定页面与特定映射表条目相关联;并且
其中,所述访问包括将特定页面映射至读取单元地址,将特定页面映射至跨度,将特定页面映射至长度。
EC21)如EC20所述的方法,其中,特定映射条目包括相应跨度、相应地址以及相应长度。
EC22)如EC17所述的方法,其中,长度单位的粒度(间隔尺寸)比单个字节的单位粗(大)。
EC23)如EC17所述的方法,
其中,非易失性存储器包括多个单独可写非的易失性存储器页面;并且
其中,单独可写的非易失性存储器页面的每一个包括多个读取单元。
EC24)如EC17所述的方法,其中,读取数据包括解析包括在所访问的读取单元中的报头,所述报头包括识别与特定页面相关联的数据的偏移量。
EC25)如EC17所述的方法,进一步包括:响应于写入数据,根据与特定页面相关联的数据的长度来更新长度。
EC26)如EC25所述的方法,其中,写入数据包括减小与特定页面相关联的数据的尺寸(大小),特定页面的相应长度根据与特定页面相关联的数据的减小尺寸(大小)的长度。
EC27)如EC26所述的方法,其中所述减小包括压缩。
EC28)如EC26所述的方法,进一步包括:响应于写入数据,根据数个读取单元来更新特定页面的相应跨度以访问检索与特定页面相关联的减小数据。
EC29)如EC17所述的方法,进一步包括:响应于写入数据,根据数个读取单元来更新特定页面的相应跨度以访问检索与特定页面相关联的数据。
EC30)如EC17所述的方法,其中与页面中的第一页面相关联的数据的尺寸(大小)不同于与页面中的第二页面相关联的数据的尺寸(大小)。
EC31)如EC17所述的方法,其中,长度不同于除特定页面之外的页面中的一个的长度。
EC32)如EC17所述的方法,其中,跨度不同于除特定跨度之外的页面中的一个的跨度。
EC33)如EC17所述的方法,其中,读取单元地址等于除特定页面之外的页面中的一个的读取单元地址。
EC34)如EC33所述的方法,其中,长度等于除特定页面之外的页面中的一个的长度。
EC35)如EC34所述的方法,其中,跨度等于除特定页面之外的页面中的一个的跨度。
EC36)一种系统,包括:
经启用以接收主机存储空间地址,并将主机地址转换为NVM的读取单元地址,以及编码长度信息的映射模块;以及
经启用以使用读取单元地址,以及编码长度信息以恢复NVM的未使用空间,并保持NVM的空闲和/或已用空间的计数的回收模块。
EC37)如EC36所述的系统,进一步包括用于解码编码长度信息以获得长度和跨度的装置,所述长度具有以预定数量的字节为单位表示的值,所述跨度具有以预定数量的读取单元为单位表示的值。
EC38)如EC37所述的系统,其中,读取单元的每一个为指定数量的字节。
EC39)如EC37所述的系统,其中,预定数量的字节等于固定长度读取单元中的字节数,长度具有以读取单元为单位表示的数值。
EC40)如EC37所述的系统,其中,跨度用比长度的粒度(间隔尺寸)粗(大)的粒度(间隔尺寸)表示。
EC41)如EC37所述的系统,进一步包括经启用以使用读取单元地址和跨度来调度对NVM的数个连续读取单元的访问的调度模块,数量等于跨度,跨度指定大于或等于由长度指定的数个字节的数个字节。
EC42)如EC36所述的系统,其中,映射模块进一步包括单级映射。
EC43)如EC37所述的系统,其中,映射模块进一步包括双级映射。
EC44)如EC43所述的系统,其中,双级映射包括第一级映射和第二级映射,并且进一步地其中第二级映射定位在第二级映射页面中,第二级映射页面具有预定整数个映射页面条目。
EC45)如EC44所述的系统,进一步包括经启用以提供可用于选择第一级映射页面和第二级映射页面以及映射页面条目的整数除法器。
EC46)如EC45所述的系统,其中整数除法器经启用以将主机存储空间地址除以第二级映射页面中的整数个条目,并进一步经启用以产生整数商数和整数余数,整数商数经启用以选择第一级映射条目,第一级映射条目的一部分经启用以选择第二级映射页面,整数余数经启用以选择所选第二级映射页面内的条目,所选第二级映射页面内的条目经启用以选择NVM的数个连续读取单元,数量等于跨度。
EC47)如EC36所述的系统,其中映射模块进一步包括至少第三级映射。
EC48)如EC37所述的系统,其中长度被编码为具有整数部分和小数部分的定点数,比如<X.Y>。
EC49)如EC48所述的系统,其中长度和跨度被编码为编码长度信息的第一和第二子字段,一个子字段包括定点长度,<X.Y>,另一个子字段包括跨度偏移量S。
EC50)如EC49所述的系统,其中跨度具有等于长度的整数部分和跨度偏移量的值之和的值,使得跨度等于X+S。
EC51)如EC49所述的系统,其中跨度具有等于长度的整数部分(整数1)和跨度偏移量的值之和的值,使得跨度等于X+1+S。
EC52)如EC49所述的系统,其中跨度具有等于长度的整数部分(整数2)和跨度偏移量的值之和的值,使得跨度等于X+2+S。
EC53)如EC49所述的系统,其中跨度偏移量具有选自集合{-1,0,1}的整数值。
EC54)如EC49所述的系统,其中跨度偏移量具有选自集合{0,1}的整数值。
EC55)如EC49所述的系统,其中跨度偏移量具有选自集合{0,1,2}的整数值。
EC56)如EC37所述的系统,其中跨度在编码长度信息中用读取单元的正整数表示,长度用长度偏移量表示。
EC57)如EC56所述的系统,其中长度偏移量用具有整数部分和小数部分的定点非负实数表示,比如<M.N>。
EC58)如EC56所述的系统,其中长度的值通过从跨度中减去长度偏移量而获得,使得长度等于(跨度-M.N)。
EC59)如EC36所述的系统,其中映射模块和回收模块被实现为使用NVM,比如闪存的SSD的一部分。
EC60)如EC59所述的系统,其中映射模块和回收模块被实现为包括SSD控制器的单个集成电路的一部分。
EC61)如EC60所述的系统,其中SSD控制器用于控制使用NVM,比如闪存的固态磁盘。
EC62)如EC61所述的系统,其中闪存由多个管芯组成。
EC63)如EC59所述的系统,进一步包括用于使SSD与计算主机交接的装置。
EC64)如EC63所述的系统,其中用于使SSD与计算主机交接的装置与存储接口标准兼容。
EC65)如EC59所述的系统,进一步包括用于与闪存交接的装置。
EC66)如EC65所述的系统,其中,用于与闪存交接的装置包括闪存接口。
EC67)如EC59所述的系统,进一步包括:
用于使SSD与计算主机交接的装置;以及
用于与闪存交接的装置。
EC68)如EC67所述的系统,其中,装置集体在单个集成电路(IC)中实现。
EC69)如EC67所述的系统,其中,装置包括在固态磁盘(SSD)中。
EC70)如EC67所述的系统,进一步包括计算主机的所有或任意部分。
EC71)一种系统,包括:
经启用以使逻辑页面地址与NVM的多个读取单元中的一个的地址,以及编码长度信息相关联的映射表;以及
经启用以使用读取单元地址,以及编码长度信息来确定回收NVM的特定区块的回收站。
EC72)如EC71所述的系统,进一步包括用于解码编码长度信息以获得长度和跨度的装置,所述长度具有以预定数量的字节为单位表示的值,所述跨度具有以预定数量的读取单元为单位表示的值。
EC73)如EC72所述的系统,其中,读取单元的每一个为指定数量的字节。
EC74)如EC72所述的系统,其中,预定数量的字节等于固定长度读取单元中的字节数,长度具有以读取单元为单位表示的数值。
EC75)如EC72所述的系统,其中,长度是非整数个读取单元,并用比单个读取单元更细(小)的粒度(间隔尺寸)表示。
EC76)如EC72所述的系统,其中,跨度用比长度的粒度(间隔尺寸)粗(大)的粒度(间隔尺寸)表示。
EC77)如EC72所述的系统,进一步包括经启用以使用读取单元地址和跨度来访问连续个读取单元的调度器,开始于位于读取单元地址的NVM中的读取单元,并针对等于跨度的总数继续进行。
EC78)如EC71所述的系统,其中,映射表进一步包括单级映射。
EC79)如EC72所述的系统,其中,映射表进一步包括双级映射。
EC80)如EC79所述的系统,其中双级映射包括第一级映射和第二级映射,并且进一步地其中第二级映射定位在第二级映射页面中,第二级映射页面具有预定整数个映射页面条目。
EC81)如EC80所述的系统,进一步包括经启用以提供可用于选择第一级映射页面和第二级映射页面以及映射页面条目的整数除法器。
EC82)如EC81所述的系统,其中,整数除法器经启用以将逻辑页面地址除以第二级映射页面中的整数个条目,并进一步经启用以产生整数商数和整数余数,整数商数经启用以选择第一级映射条目,第一级映射条目的一部分经启用以选择第二级映射页面,整数余数经启用以选择所选第二级映射页面内的条目,所选第二级映射页面内的条目经启用以选择NVM的数个连续读取单元,数量等于跨度。
EC83)如EC71所述的系统,其中,映射表进一步包括至少第三级映射。
EC84)如EC72所述的系统,其中,长度被编码为具有整数部分和小数部分的定点数,比如<X.Y>。
EC85)如EC84所述的系统,其中,长度和跨度被编码为包括定点长度表示的元组<X.Y>,以及跨度偏移量S。
EC86)如EC85所述的系统,其中,长度和跨度被编码为编码长度信息的第一和第二子字段,一个子字段包括定点长度,<X.Y>,另一个子字段包括跨度偏移量S。
EC87)如EC86所述的系统,其中,跨度具有等于长度的整数部分和跨度偏移量的值之和的值,使得跨度等于X+S。
EC88)如EC86所述的系统,其中,跨度具有等于长度的整数部分(整数1)和跨度偏移量的值之和的值,使得跨度等于X+1+S。
EC89)如EC86所述的系统,其中,跨度具有等于长度的整数部分(整数2)和跨度偏移量的值之和的值,使得跨度等于X+2+S。
EC90)如EC86所述的系统,其中,跨度偏移量具有选自集合{-1,0,1}的整数值。
EC91)如EC86所述的系统,其中,跨度偏移量具有选自集合{0,1}的整数值。
EC92)如EC86所述的系统,其中,跨度偏移量具有选自集合{0,1,2}的整数值。
EC93)如EC72所述的系统,其中,跨度在编码长度信息中用读取单元的正整数表示,长度用长度偏移量表示。
EC94)如EC93所述的系统,其中,长度偏移量用具有整数部分和小数部分的定点非负实数表示,比如<M.N>。
EC95)如EC93所述的系统,其中,长度的值通过从跨度中减去长度偏移量而获得,使得长度等于(跨度-M.N)。
EC96)如EC71所述的系统,其中,映射模块和回收模块被实现为使用NVM,比如闪存的SSD的一部分。
EC97)如EC71所述的系统,其中,映射模块和回收模块被实现为包括SSD控制器的单个集成电路的一部分。
EC98)如EC97所述的系统,其中,SSD控制器用于控制使用NVM,比如闪存的固态磁盘。
EC99)如EC98所述的系统,其中,闪存由多个管芯组成。
EC100)如EC96所述的系统,进一步包括用于使SSD与计算主机交接的装置。
EC101)如EC100所述的系统,其中,用于使SSD与计算主机交接的装置与存储接口标准兼容。
EC102)如EC96所述的系统,进一步包括用于与闪存交接的装置。
EC103)如EC102所述的系统,其中,用于与闪存交接的装置包括闪存接口。
EC104)如EC96所述的系统,进一步包括:
用于使SSD与计算主机交接的装置;以及
用于与闪存交接的装置。
EC105)如EC104所述的系统,其中,装置集体在单个集成电路(IC)中实现。
EC106)如EC104所述的系统,其中装置包括在固态磁盘(SSD)中。
EC107)如EC104所述的系统,进一步包括计算主机的所有或任意部分。
EC108)一种方法,包括:
至少部分基于主机存储空间地址来确定以转移量粒度(间隔尺寸)为单位描述转移量值并以空间量粒度(间隔尺寸)为单位描述空间量值的元素,
至少部分基于所述元素来确定转移量值和空间量值;
至少部分基于转移量值从非易失性存储器(NVM)读取与主机存储空间地址对应的数据;
至少部分基于空间量值来跟踪NVM的空间使用信息;并且
其中转移量粒度(间隔尺寸)比空间量粒度(间隔尺寸)粗(大)。
EC109)如EC108所述的方法,其中,元素的确定至少部分经由映射模块进行,所述映射模块经启用以至少部分基于主机存储空间地址来提供元素以及NVM中的数据的起始地址。
EC110)如EC109所述的方法,其中,数据的读取从在起始地址开始的NVM读取数据。
EC111)如EC109所述的方法,其中,起始地址具有与可从NVM读取的可纠错数据的最小配量对应的粒度(间隔尺寸)。
EC112)如EC111所述的方法,其中,可从NVM读取的可纠错数据的最小配量对应于原始数据部分和保护原始数据部分的校验位部分。
EC113)如EC108所述的方法,其中,转移量值表示可从NVM读取的可纠错数据的最小配量的整数倍。
EC114)如EC113所述的方法,其中,可从NVM读取的可纠错数据的最小配量对应于原始数据部分和与原始数据部分相关联的低级纠错码位。
EC115)如EC113所述的方法,其中,元素的第一子元素包括转移量值,元素的第二子元素包括空间量值。
EC116)如EC113所述的方法,其中,元素的第一子元素包括指示转移量值的整数,元素的第二子元素包括指示小于可从NVM读取的可纠错数据的最小配量的数据量的小数,整数和小数结合对应于空间量值。
EC117)如EC108所述的方法,进一步包括至少部分基于空间量值来管理回收NVM的相应部分。
EC118)如EC117所述的方法,进一步包括至少部分基于空间量值来确定相应部分中的特定部分的已用空间的量。
EC119)如EC118所述的方法,进一步包括至少部分基于已用空间的量来确定相应部分中的特定部分的已用空间的量。
EC120)如EC108所述的方法,进一步包括转换数据的至少一部分并响应于来自主机的指定主机存储空间地址的读取请求将转换结果的至少一部分返回主机。
EC121)如EC120所述的方法,其中,转换包括解压。
EC122)如EC120所述的方法,其中,转换包括解密。
EC123)一种非临时性有形计算机可读介质,其中存储有当由处理元件执行时使处理元件执行包括以下各项的操作的一套指令:
至少部分基于主机存储空间地址来确定以转移量粒度(间隔尺寸)为单位描述转移量值并以空间量粒度(间隔尺寸)为单位描述空间量值的元素,
至少部分基于所述元素来确定转移量值和空间量值;
至少部分基于转移量值从非易失性存储器(NVM)读取与主机存储空间地址对应的数据;
至少部分基于空间量值来跟踪NVM的空间使用信息;并且
其中转移量粒度(间隔尺寸)比空间量粒度(间隔尺寸)粗(大)。
EC124)如EC123所述的非临时性有形计算机可读介质,其中,元素的确定至少部分经由映射模块进行,所述映射模块经启用以至少部分基于主机存储空间地址来提供元素以及NVM中的数据的起始地址。
EC125)如EC124所述的非临时性有形计算机可读介质,其中,数据的读取从在起始地址开始的NVM读取数据。
EC126)如EC124所述的非临时性有形计算机可读介质,其中,起始地址具有与可从NVM读取的可纠错数据的最小配量对应的粒度(间隔尺寸)。
EC127)如EC126所述的非临时性有形计算机可读介质,其中,可从NVM读取的可纠错数据的最小配量对应于原始数据部分和保护原始数据部分的校验位部分。
EC128)如EC123所述的非临时性有形计算机可读介质,其中,转移量值表示可从NVM读取的可纠错数据的最小配量的整数倍。
EC129)如EC128所述的非临时性有形计算机可读介质,其中,可从NVM读取的可纠错数据的最小配量对应于原始数据部分和与原始数据部分相关联的低级纠错码位。
EC130)如EC128所述的非临时性有形计算机可读介质,其中,元素的第一子元素包括转移量值,元素的第二子元素包括空间量值。
EC131)如EC128所述的非临时性有形计算机可读介质,其中,元素的第一子元素包括指示转移量值的整数,元素的第二子元素包括指示小于可从NVM读取的可纠错数据的最小配量的数据量的小数,整数和小数结合对应于空间量值。
EC132)如EC123所述的非临时性有形计算机可读介质,进一步包括至少部分基于空间量值来管理回收NVM的相应部分。
EC133)如EC132所述的非临时性有形计算机可读介质,进一步包括至少部分基于空间量值来确定相应部分中的特定部分的已用空间的量。
EC134)如EC132所述的非临时性有形计算机可读介质,进一步包括至少部分基于已用空间的量来确定相应部分中的特定部分的已用空间的量。
EC135)如EC123所述的非临时性有形计算机可读介质,进一步包括转换数据的至少一部分并响应于来自主机的指定主机存储空间地址的读取请求将转换结果的至少一部分返回主机。
EC136)如EC135所述的非临时性有形计算机可读介质,其中,转换包括解压。
EC137)如EC135所述的非临时性有形计算机可读介质,其中,转换包括解密。
EC138)如EC123所述的非临时性有形计算机可读介质,其中,操作进一步包括对使请求与计算主机交接进行管理。
EC139)如EC138所述的非临时性有形计算机可读介质,其中,使请求与计算主机交接与存储接口标准兼容。
EC140)如EC123所述的非临时性有形计算机可读介质,其中,存储包括与闪存交接。
EC141)如EC140所述的非临时性有形计算机可读介质,其中,与闪存交接包括闪存接口。
EC142)如EC123所述的非临时性有形计算机可读介质,其中,操作进一步包括:
对至少部分经由管理计算主机接口逻辑电路使请求与计算主机交接进行管理;并且
其中,存储至少部分经由经启用以与闪存交接的闪存接口逻辑电路进行。
EC143)如EC142所述的非临时性有形计算机可读介质,其中,计算主机接口逻辑电路和闪存接口逻辑电路集体在单个集成电路(IC)中实现。
EC144)如EC142所述的非临时性有形计算机可读介质,其中,计算主机接口逻辑电路和闪存接口逻辑电路包括在固态磁盘(SSD)中。
EC145)如EC123所述的非临时性有形计算机可读介质,其中,操作进一步包括对操作计算主机的所有或任意部分进行管理。
EC146)如EC123所述的非临时性有形计算机可读介质,其中,操作进一步包括对操作闪存中的至少一个进行管理。
EC147)具有或参照存储接口标准的任意前述EC,其中,存储接口标准包括以下各项中的一项或多项:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
嵌入式MMC(eMMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接小型计算机系统接口(SAS)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
EC148)具有或参照闪存接口的任意前述EC,其中闪存接口与以下各项中的一项或多项兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
DDR2同步接口,
同步接口,以及
异步接口。
EC149)具有或参照计算主机的任意前述EC,其中计算主机包括以下各项中的一项或多项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器具,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
平板设备或电脑,
超极本电脑,
电子阅读设备(电子阅读器),
个人数字助理(PDA),
导航系统,
(手持式)全球定位系统(GPS)设备,
汽车控制系统,
汽车媒体控制系统或计算机,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
电视机,
媒体记录器,
数字视频录像机(DVR),
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
EC150)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一项或多项:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC151)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一项或多项:
单级存储单元(SLC)闪存技术存储单元,以及
多级存储单元(MLC)闪存技术存储单元。
EC152)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一项或多项:
基于多晶硅技术的电荷存储单元,以及
基于氮化硅技术的电荷存储单元。
EC153)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一项或多项:
基于二维技术的闪存技术,以及
基于三维技术的闪存技术。
系统
在某些实施例中,I/O设备(比如SSD)包括SSD控制器。SSD控制器充当SSD的主机接口和NVM之间的桥接器,并执行经由SSD的主机接口从计算主机发送的主机协议的命令。至少一些命令指示SSD利用从和向计算主机发送的数据分别写入并读取NVM。在进一步的实施例中,使SSD控制器能够利用映射在主机协议的LBA和NVM中的物理存储地址之间转换。在进一步的实施例中,映射的至少一部分用于I/O设备的专用存储器(对计算主机是不可见的)。例如,计算主机不可访问的LBA的一部分被I/O设备用来管理对日志、统计或其他专用数据的访问。
在某些实施例中,访问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码、零或零以上维特比或其他格子码及零或零以上LDPC码。
图1A示出了包括使用比如在地址映射功能(例如,图1A的映射141)的表条目中编码位置和长度相关信息的各种技术以及管理非易失性存储(比如闪存)的电路来实现非易失性存储器(NVM)地址、跨度及长度映射/转换的存储地址空间的SSD控制器的SSD的实施例的所选细节。SSD控制器用于管理比如经由NVM元件(例如,闪存)实现的非易失性存储。SSD控制器100经由一个或多个外部接口110与主机(未示出)通信式耦接。根据各种实施例,外部接口110是以下各项中的一项或多项:SATA接口;SAS接口;PCIe接口;光纤通道接口;外部接口(比如10千兆以太网);任意前述接口的非标准版本;定制接口;或用于将存储和/或通信和/或计算设备互连的任何其他类型的接口。例如,在某些实施例中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100进一步经由一个或多个设备接口190与包括一个或多个存储设备(比如,闪存设备192的一个或多个)的NVM199通信式耦接。根据各种实施例,设备接口190是以下各项中的一项或多项:异步接口;同步接口;单倍数据速率(SDR)接口;双倍数据速率(DDR)接口;DRAM兼容DDR或DDR2同步接口;ONFI兼容接口(比如,ONFI2.2或ONFI3.0兼容接口);切换模式兼容闪存接口;任意前述接口的非标准版本;定制接口;或用于连接至存储设备的任何其他类型的接口。
在某些实施例中,每一个闪存设备192具有一个或多个单独的闪存管芯194。根据闪存设备192的特定闪存设备的类型,特定闪存设备192中的多个闪存管芯194任选地和/或选择性地并行访问。闪存设备192只表示经启用以与SSD控制器100通信式耦接的一种类型的存储设备。在各种实施例中,任何类型的存储设备都是可使用的,比如SLC NAND闪存、MLC NAND闪存、NOR闪存、使用基于多晶硅或氮化硅技术的电荷存储单元的闪存、基于二维或三维技术的闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁性存储器、相变存储器、赛道存储器、ReRAM或任何其他类型的存储器设备或存储介质。
根据各种实施例,设备接口190被组织为:一条或多条总线,其中每条总线具有闪存设备192的一个或多个;一个或多个总线组,其中每条总线具有闪存设备192的一个或多个,其中组中的总线通常被并行访问;或闪存设备192的一个或多个到设备接口190上的任何其他组织。
继续图1A,SSD控制器100具有一个或多个模块,比如主机接口111、数据处理模块121、缓冲器131、映射模块141、回收站(recycler,再循环器)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;用于控制至和/或自缓冲器131的数据的移动的DMA133;用于提供较高级错误校正和/或冗余功能的ECC-X135;和其他数据移动和/或操控功能。较高级冗余功能的示例为一种RAID类能力(例如,RASIE),其中冗余在闪存设备(例如闪存设备192的多个闪存设备)级和/或闪存管芯(比如闪存管芯194)级上而非在磁盘级上。
根据各种实施例,揭示以下各项中的一个或多个:ECC161任选地和/或选择性地处理在缓冲器131和设备接口190之间发送的一些或所有数据;以及ECC161任选地和/或选择性地处理存储在缓冲器131内的数据。在某些实施例中,ECC161用于提供较低级错误校正和/或诸如根据一个或多个ECC计算的冗余功能。在某些实施例中,ECC161实现以下各项中的一个或多个:CRC码;汉明码;RS码;BCH码;LDPC码;维特比码;格子码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或纠正码;以及上述的任意组合。在某些实施例中,ECC161包括一个或多个解码器(比如LDPC解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例。设备接口逻辑191经启用以根据闪存设备192的协议将数据发送到或从闪存设备192发送数据。设备接口逻辑191包括调度193,从而经由设备接口190可选地顺序控制闪存设备192的实例。例如,在某些实施例中,调度193经启用以排队对于闪存设备192的实例的操作,并且当单独的闪存设备192(或闪存管芯194)的实例可用时,选择性地将操作发送至单独的闪存设备192(或闪存管芯194)的实例。
映射141在用于外部接口110上的数据寻址与用于设备接口190上的数据寻址之间转换,使用表143将外部数据地址映射至NVM199中的位置。例如,在某些实施例中,映射141经由由表143提供的映射将用于外部接口110上的LBA转换成目标为一个或多个闪存芯片192的区块和/或页地址。对于自驱动制造或去分配未曾被写入的LBA,该映射指向缺省值以传回是否读取这些LBA。例如,在处理去分配命令时,修改该映射以使得对应于去分配LBA的条目指向缺省值中的一个。在各种实施例中,存在各种缺省值,其各自具有对应指针。多个缺省值使得能够读取某些去分配LBA(比如在第一范围中)作为一个缺省值,同时读取其他去分配LBA(比如在第二范围中)作为另一个缺省值。在各种实施例中,缺省值由闪存、硬件、固件、命令和/或基元引数和/或参数、可编程寄存器或其各种组合定义。
在某些实施例中,映射141使用表143从而在外部接口110上使用的地址和设备接口190上使用的数据寻址之间执行和/或查询转换。根据各种实施例,表143为以下各项中的一个或多个:一级映射;二级映射;多级映射;映射缓存;压缩映射;一个地址空间至另一个地址空间的任何类型映射;以及上述的任意组合。根据各种实施例,表143包括以下各项中的一个或多个:静态随机存取存储器;动态随机存取存储器;非易失性存储器;NVM(比如闪存);缓存存储器;片上存储器;片外存储器;和上述的任意组合。
在某些实施例中,回收站151执行垃圾收集。例如,在某些实施例中,闪存设备192的实例包含在可重写入之前必须擦除的区块。回收站151经启用以例如通过扫描映射141保持的映射来确定闪存设备192的实例的哪些部分正在有效使用中(例如,经分配而非经去分配),并且使闪存设备192的实例的未使用(例如,去分配)部分通过对其进行擦除而可用于写入。在进一步的实施例中,回收站151经启用以移动存储在闪存设备192的实例内的数据,以使闪存设备192的实例的较大连续部分可用于写入。
在某些实施例中,闪存设备192的实例可选地和/或动态地经配置、管理和/或使用以具有用于存储不同类型和/或性质的数据的一个或多个带(band,频带)。这些带的数目、布置、大小和类型可动态地改变。例如,将来自计算主机的数据写入热(活动)带,而将来自回收站151的数据写入冷(较少活动)带中。在某些使用场景下,如果计算主机写入长的顺序流,则热带的大小增加,而如果计算主机随机写入或较少写入,则冷带的大小增加。
CPU171控制SSD控制器100的各个部分。CPU171包括CPU核172。根据各种实施例,CPU核172为一个或多个单核或多核处理器。在某些实施例中,CPU核172中的各个处理器内核是多线程的。CPU核172包括指令和/或数据缓存器和/或存储器。例如,指令存储器包括能使CPU核执行软件(有时称为固件)以控制SSD控制器100的指令。在某些实施例中,CPU核172执行的一些或所有固件存储在闪存设备192上(如图所示,例如为1B中的NVM199的固件106)。
在各种实施例中,CPU171进一步包括:在经由外部接口110接收的命令处于进程的同时来跟踪和控制该命令的命令管理173;控制缓冲器131的分配和使用的缓冲器管理175;控制映射141的转换管理177;控制数据寻址的一致性并避免比如外部数据访问和回收数据访问之间冲突的一致性管理179;控制设备接口逻辑191的设备管理181;控制身份信息的修改和通信的身份管理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、切换器/光纤/中间控制器103和/或卡存储器中的一个或多个包括在物理可识别的模块、卡或可插入元件(例如,I/O卡116)上。在某些实施例中,SSD101(或其变型)对应于与作为主机102操作的起始器耦接的SAS驱动器或SATA驱动器。
主机102经启用以执行主机软件115的各个元件,比如OS105、驱动程序107、应用程序109和多设备管理软件114的各种组合。虚线箭头107D表示主机软件←→I/O设备通信,例如,经由驱动程序107、驱动程序107及应用程序109(经由驱动程序107或直接作为VF)从SSD101的实例中的一个或多个发送至OS105中的一个或多个及从OS105的一个或多个接收至SSD101的实例中的一个或多个的数据。
OS105包括和/或经启用以借助与SSD交互的驱动程序(概念上由驱动程序107示出)操作。Windows的各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux的各种版本(例如,Red Hat、Debian及Ubuntu)及MacOS的各种版本(例如,8、9及X)是OS105的示例。在各种实施例中,驱动程序是借助标准接口和/或协议比如SATA、AHCI或NVM Express)操作的标准和/或通用驱动程序(有时称为“紧缩套装”或“预安装”),或者任选定制和/或供应商特定以启用SSD101所特定的命令的使用。某些驱动器和/或驱动程序具有穿过模式以启用应用级程序,比如经由最佳化NAND访问(有时称为ONA)或直接NAND访问(有时称为DNA)技术的应用程序,以将命令直接传递至SSD101,使得定制应用程序能够甚至借助通用驱动程序使用SSD101所特定的命令。ONA技术包括以下各项中的一个或多个:非标准修饰符(提示)的使用;供应商特定命令的使用;非标准统计比如根据可压缩性的实际NVM使用的通信;以及其他技术。DNA技术包括以下各项中的一个或多个:提供对NVM的未经映射读取、写入和/或擦除存储的非标准命令或供应商特定命令的使用,比如通过绕过I/O设备原本将进行的数据的格式化来提供对NVM的更直接访问的非标准或供应商特定命令的使用;以及其他技术。驱动程序的示例是不具有ONA或DNA支持的驱动程序、ONA启用的驱动程序、DNA启用的驱动程序及ONA/DNA启用的驱动程序。驱动程序的进一步示例是供应商提供、供应商开发和/或供应商增强驱动程序及客户端提供、客户端开发和/或客户端增强驱动程序。
应用级程序的示例是不具有ONA或DNA支持的应用程序、ONA启用的应用程序、DNA启用的应用程序及ONA/DNA启用的应用程序。虚线箭头109D表示应用程序←→I/O设备通信(例如,经由驱动程序绕过或经由用于应用程序的VF绕过),例如,ONA启用的应用程序及与SSD通信(比如不具有使用OS作为媒介物的应用程序)的ONA启用的驱动程序。虚线箭头109V表示应用程序←→I/O设备通信(例如,经由用于应用程序的VF绕过),例如DNA启用的应用程序和与SSD通信(比如不具有使用OS或驱动程序作为媒介物的应用程序)的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表示一个或多个局域和/或广域网,比如服务器场中的网络、耦接服务器场的网络、城域网和互联网中的任意一个或多个。
在各种实施例中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起实现为非易失性存储组件,比如USB存储组件、CF存储组件、MMC存储组件、eMMC存储组件、Thunderbolt存储组件、UFS存储组件、SD存储组件、记忆棒存储组件和xD图片卡存储组件。
在各种实施例中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能在主机(例如,图1B的主机102)中实现,控制器要与该主机耦接。在各种实施例中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动程序软件或SSD控制固件)或其任意组合来实现。例如,ECC单元(比如,类似于图1A的ECC161和/或ECC-X135)的功能或与该ECC单元相关联的功能经由软件在主机上实现且部分经由固件和硬件的组合在SSD控制器中实现。再如,回收站单元(比如类似于图1A的回收站151)的功能或与该回收站单元相关联的功能部分地经由软件在主机上实现且部分地经由硬件在计算主机闪存控制器中实现。
映射操作
图2示出了映射LBA的LPN部分的实施例的所选细节。在某些实施例中,读取单元是最细粒度的NVM(该NVM可独立读取),比如NVM的页面的一部分。在进一步的实施例中,读取单元对应于(较低级)错误校正码的校验位(有时称为冗余)和由校验位保护的所有数据。例如,图1A的ECC161经由校验码(比如经由LDPC码)来实现错误校正,并且读取单元对应于实现除由LDPC编码位保护的数据位之外的LDPC码的编码位。
在某些实施例中,映射141比如经由表143(如图1A所示)将LBA211的LPN213部分映射成LPN的映射信息221。LPN的映射信息(比如LPN的映射信息221)有时被称为映射条目。所说的映射141使LPN与对应映射条目相关联。在各种实施例中,映射经由一个或多个相关查找,经由一个或多个非相关查找,和/或经由一个或多个其他技术。
在某些实施例中,SSD控制器100为潜在和/或有效使用中的每个LPN维护一个映射条目。
在某些实施例中,LPN的映射信息221包括各个读取单元地址223和读取单元的长度225。在某些实施例中,存储长度和/或跨度,比如通过将长度存储为相对于跨度的偏移量而例如在读取单元的长度225的所有或任意部分中进行编码。在进一步的实施例中,第一LPN与第一映射条目相关联,第二LPN(不用于第一LPN,但涉及大小与由第一LPN涉及的逻辑页面的大小相同的逻辑页面)与第二映射条目相关联,并且第一映射条目的读取单元中的各个长度不同于第二映射条目的读取单元中的各个长度。
在各种实施例中,在同一时间点,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN)与第二映射条目相关联,并且第一映射条目的各个读取单元地址与第二映射条目的各个读取单元地址相同。在进一步的实施例中,与第一LPN相关联的数据和与第二LPN相关联的数据都存储在NVM199中的同一设备的同一物理页面中。
根据各种实施例,读取单元地址223与以下各项中的一个或多个相关联:NVM中的开始地址;NVM中的结束地址;任意前述的偏移量;以及用于识别与LPN213相关联的NVM的一部分的任何其他技术。
图3示出了以读取单元地址访问NVM以产生被组织为各个读取单元的读取数据(共同具有以读取单元的量测量的长度)的实施例的所选细节。根据各种实施例,第一读取单元313是以下各项中的一个或多个:在NVM的地址空间中具有最低地址的读取数据311中的读取单元之一;读取单元的固定读取单元;读取单元的任意读取单元;读取单元的可变读取单元;以及通过任何其他技术选择的读取单元之一。在各种实施例中,通过读取不超过由单位单元的长度225指定的数量的读取单元来启用SSD控制器100以访问NVM199并产生读取数据311。
图4A示出了读取单元(比如图3的读取单元313或315)作为读取单元401A的一个实施例的所选细节。在各种实施例和/或使用场景下,报头1441A至报头N419A是连续的,并且由每个报头识别的各个数据区域(比如经由各个偏移量)继最后一个报头之后是连续的。数据区域集体形成数据字节421A。按位置顺序存储数据区域,并且该位置顺序匹配存储报头的位置顺序。例如,鉴于第一报头,在读取单元开始时,第二报头和第三报头连续紧接着第一报头。第一数据区域(通过第一报头中的第一偏移量识别的)连续紧接着第三报头。第二数据区域(通过第二报头中的第二偏移量识别的)连续紧接着第一报头。类似地,第三数据区域(通过第三报头识别的)连续紧接着第二数据区域。
图4B示出了读取单元(比如图3的读取单元313或315)作为读取单元401B的另一实施例的所选细节。在各种实施例和/或使用场景下,报头标记(HM)410B是指示以下连续的报头(报头1411B、报头2412B、…、报头N419B)的数量的任选初始字段(比如1字节字段)。数据区域(数据字节421B、数据字节422B、…、数据字节429B)分别由报头(报头1411B、报头2412B、…、报头N419B)识别并按位置顺序存储,该位置顺序与存储报头的位置顺序相反。报头开始于读取单元的初端,而对应数据区域开始于读取单元的末端。在某些实施例中,数据区域中的数据字节(例如,数据字节421B、数据字节422B、…、数据字节429B)按递增顺序(匹配位置顺序的字节顺序)排列,而在其他实施例中,数据字节沿相反顺序(相对于位置反向的字节顺序)排列。在某些实施例中,报头标记在读取单元中使用,其中报头和数据字节按同一位置顺序存储(例如,如图4A所示)。
在某些实施例中,任选填充字节413A(或413B)符合与特定LPN相关联的数据的粒度。例如,在某些实施例中,如果数据字节421A(或集体为数据字节421B、数据字节422B、…、数据字节429B)具有少于固定量的剩余空间,比如8字节,在存储与除了报头1411A至报头N419A(或报头1411B、报头2412B、…、报头N419B)的最后一个报头之后的所有报头相关联的数据之后,与最后报头相关联的LPN的数据开始于后续读取单元。在进一步的实施例中,最后报头中的特定偏移值(例如,所有偏移值)指示与最后报头相关联的LPN的数据开始于后续读取单元。
图5示出了具有大量字段的报头(比如,图4A的报头1411A至报头N419A或图4B的报头1411B至报头419B中的任意一个)的实施例的所选细节。在某些实施例中,报头为固定长度(例如,每个报头的长度为相同数量的字节)。报头501包括字段类型511、最后指示符513、标志515、LPN517、长度519和偏移量521。类型字段识别数据字节的类别。例如,类型字段指示数据字节的类别为主机数据(例如,逻辑页面数据)或系统数据(例如映射信息或检查点信息)中的一个。最后字段指示报头是数据字节之前的最后报头。在具有报头标记的某些实施例中,任选省略最后字段。LPN字段是报头与其相关联的LPN。LPN字段启用报头解析以通过(例如)搜索报头中LPN字段与特定LPN匹配的报头来确定与特定LPN相关联的报头中的特定报头。长度字段是数据字节的字节长度(例如,数据有多少字节在与报头501相关联的数据字节421A中)。在某些实施例中,偏移字段中的偏移量根据特定粒度(例如,8字节粒度)进行取整。
在各种实施例中,与特定LPN相关联的一部分或所有信息存储在与特定LPN相关联的映射条目、与特定LPN相关联的报头或这两者中。例如,在某些实施例中,长度519的一些或所有存储在映射条目中,而不是报头中。
图6示出了在逻辑片段和/或区段中管理的多个NVM器件(例如,一个或多个闪存管芯和/或闪存芯片)的区块、页面及读取单元的实施例的所选细节。管理功能包括读取、回收、擦除、编程/写入的任意一个或多个,以及其他管理功能。逻辑片段和/或区段有时被称为R-区块。该图示出了具有66个闪存管芯的实施例。明确示出了其中三个闪存管芯(闪存管芯610.65、610.1及610.0)并且隐含地示出了63个闪存管芯(610.64、…、610.2)。
每一闪存管芯(比如闪存管芯610.65、…、610.1及610.0的任一个)提供被组织为区块(比如,闪存管芯610.65的区块610.65BB、…、610.65B1及610.65B0;闪存管芯610.0的区块610.0BB、…、610.0B1及610.0B0;等等)的存储器。这些区块又包括页面(比如,区块610.65B0的页面610.65PP、…、610.65P1及610.65P0;区块610.0B0的页面610.0PP、…、610.0P1及610.0P0;等等)。这些区块又包括读取单元(比如,页面610.65P0的读取单元610.65RR、…、610.65R1及610.65R0;页面610.0P0的读取单元610.0RR、…、610.0R1及610.0R0;等等)。
在某些实施例中,每一闪存管芯包括整数个区块(例如N个区块)且区块为最小擦除量。在某些实施例中,每一区块包括整数个页面且页面为最小写入量。根据各种实施例,揭示以下情形中的一个或多个:读取单元为最小读取及错误校正量;每一页面包括整数个读取单元;两个或更多个页面的相关联组包括整数个读取单元;且读取单元任选地和/或选择性地跨越页面边界。
在各种实施例中,各种NVM管理功能(例如,读取、回收、擦除和/或编程/写入)在R-区块的单元中执行。R-区块被举例为闪存的所有管芯上的逻辑片段或区段。例如,在具有R闪存管芯的闪存中,每个闪存管芯具有N个区块,每个R-区块是总共N个R-区块中的来自一起取出的每个闪存管芯的第i区块。再如,在具有R闪存管芯的闪存中,每个具有N个区块,每个R-区块是总共N/2个R-区块中的来自每个闪存管芯的第i和第(i+l)区块。对于又一示例,在具有多个双平面设备的闪存中,每个R-区块是来自每个双平面设备的第i偶数区块和第i奇数区块。
在成对或以其他相关联组将区块视为形成R-区块的部分的各种实施例中,也将来自区块的相关联组的每一区块的相应页面视为至少用于写入的单元,从而形成更大的多区块页面。例如,继续上述双平面示例,将偶数区块的特定区块的第一页面及奇数区块的相关联区块的第一页面视为用于写入的单元,且任选地和/或选择性地视为用于读取的单元。类似地,将特定偶数区块的第二页面及相关联奇数区块的第二页面视为一单元。根据各种实施例,如本文中使用的NVM的页面指代以下各项中的一个或多个:NVM的单一页面;NVM的多区块页面;任选地和/或选择性地视为用于读取的一个或多个单独页面的用于写入的NVM的多区块页面;及NVM的页面的任何其他组或关联。
该图示出了多个说明性R-区块,明确示出了其中三个(660.0、660.1及660.R)。每个说明性R-区块是来自一起取出的每个闪存管芯的第i区块。例如,R-区块660.0是来自闪存管芯610.65的区块610.65B0、来自闪存管芯610.64的区块0(未明确示出)等,直到闪存管芯610.1的区块610.1B0、以及闪存管芯610.0的区块610.0B0。由于每个闪存管芯存在N个区块,因此存在总计N个R-区块(R-区块660.R、…、R-区块660.1及R-区块660.0)。
R-区块的另一示例为来自一起取出的闪存管芯中的每一个的第i及第(i+1)区块(例如,来自闪存管芯610.65的区块610.65B0及610.65B1、来自闪存管芯610.64的区块0及1(未明确示出)等,直到来自闪存管芯610.1的区块610.1B0及610.1B1、以及来自闪存管芯610.0的区块610.0B0及610.0B1)。如果每一闪存管芯中存在N个区块,则因此存在N/2个R-区块。R-区块的另一示例为来自多个双平面设备中的每一个的第i偶数及奇数区块。预期作为R-区块以用于管理的闪存管芯区块的其他配置,包括在虚拟区块地址与物理区块地址之间映射以确保R-区块具有来自每一管芯的一个区块,即使一些区块不可操作也如此。在各种实施例中,每一闪存管芯中的N个区块中的一些用作备用,使得在虚拟区块地址与物理区块地址之间的映射具有备用(以其他方式未使用)区块以替代R-区块中的区块中的有缺陷区块。
在各种实施例中,闪存管芯中信息的读取和/或写入根据一个顺序(比如,“读取单元优先”顺序或“页面优先”顺序)来执行。图中所示的读取单元的读取单元优先顺序的示例以读取单元610.0R0开始,其后接着为610.1R0、…、610.65R0、610.0R1、610.1R1、…、610.65R1等,以610.65RR结束。图中所示的读取单元的页面优先顺序的示例以读取单元610.0R0开始,其后接着为610.0R1、…、610.0RR、610.1R0、610.1R1、…、610.1RR、…、610.65R0、610.65R1等,以610.65RR结束。
在各种实施例中,R-区块内的数据的写入和/或条带化顺序为跨越所有设备(例如,最低至最高编号设备,如条带化方向600概念性地建议)的页面(例如,最低至最高)优先,接着下一最高页面(跨越所有设备),等等,继续直至R-区块的最后页面。具体针对R-区块660.0,示例性顺序以页面610.0P0(闪存管芯610.0的第一区块中的第一页面)开始,其后接着为页面610.1P0(闪存管芯610.1的第一区块中的第一页面),等等,继续至页面610.65P0(闪存管芯610.65的第一区块中的第一页面,以及R-区块660.0的最后区块)。该示例性顺序以页面610.0P1(闪存管芯610.0的第一区块中的第二页面)继续,其后接着为页面610.1P1(闪存管芯610.1的第一区块中的第二页面),等等,继续至页面610.65P1(闪存管芯610.65的第一区块中的第二页面)。该示例以相同顺序继续。该示例性顺序以页面610.0PP(闪存管芯610.0的第一区块中的最后页面)完成,其后接着为页面610.1PP(闪存管芯610.1的第一区块中的最后页面),等等,以页面610.65PP结束(闪存管芯610.65的第一区块中的最后页面,以及R-区块660.0的最后区块中的最后页面)。
在各种实施例中,闪存管芯610.65、…、610.1及610.0对应于图1A的一个或多个单独闪存管芯194的各个。在某些实施例中,闪存管芯610.65、…、610.1及610.0为小于NVM199的全部的部分。例如,在各种实施例中,跨越多个闪存管芯组而独立地使数据条带化,其中可独立访问闪存管芯组中的每一个。
图7示出了经由具有FLM和一个或多个SLM页面的二级映射将LBA映射到NVM中所存储的LB的实施例的所选细节,以作为LBA至NVM位置映射700。二级映射经由与一个或多个第二级元件(从概念上讲被示为单个元件SLM页面720)耦接的第一级元件(FLM710)来实现。FLM包括多个条目(SLM页面/长度710.1、…、SLM页面/长度710.M)。FLM的每个条目指向SLM页面(比如SLM页面720)中的一个。SLM页面包括多个条目(LB页面/长度720.1、…、LB页面/长度720.N)。SLM页面的每个条目指向数据开始的NVM中的位置(例如,至少存储用于LBA的主机写入数据的初端的读取单元)。除法器(整数除法器722)例如从可编程硬件寄存器接收参数(SLM条目/SLM页面(CSR)723)以除以输入LBA,从而确定要选择哪个FLM条目以及要选择哪个SLM条目(其在所选FLM条目指向的SLM页面内)。除法器与FLM和SLM页面耦接。
在各种实施例中,该图说明了图1A的映射141和/或表143的所选细节或与其有关的所选细节。例如,在某些实施例中,映射141和/或表143实现映射信息的一个或多个缓存,比如FLM的一个或多个条目和/或SLM的一个或多个条目。FLM和/或SLM的整个图像保持在NVM(例如,图1A的NVM199)中,例如当缓存取代先前缓存的FLM和/或SLM条目时更新。在某些实施例中,FLM和/或SLM整个图像经由滚动或往复式球检查点来实现,每个检查点是各自整个映射图像的一部分。
在操作中,将LBA721呈现给整数除法器722。除法器将LBA除以如SLM条目/SLM页面(CSR)723提供的每个SLM页面的SLM条目数量,从而得到商数(FLM索引722Q)和余数(SLM页面索引722R)。商数用于选择FLM条目中的一个,并读取所选FLM条目的页面字段(SLM指针710S)。页面字段用于选择SLM页面中的一个(例如,SLM页面720),并且余数用于(例如,作为偏移量)选择所选SLM页面的条目。所选SLM页面条目的页面字段用于选择NVM(比如特定读取单元)中的特定位置,在该特定位置存储有与所呈现的LBA对应的LB的至少开始(LB指针720L)。在各种实施例中,LB指针包括NVM的读取单元的地址(例如,图2的读取单元地址223)。在某些实施例中,各SLM条目的每一个包括编码例如与各SLM条目的各LB的数据相关联的长度和/或跨度的字段。例如,该跨度描述要访问多少(连续)读取单元才获得所有信息(未校正数据及相关联纠错校验位)以确定各LB的(纠错)数据。继续该示例,该长度描述所读取的(例如,在读取单元中,比如由图2的读取单元225的长度所示)信息中有多少对应于各LB的数据。在某些实施例中,各FLM条目的每一个包括编码例如与读取由FLM条目的页面字段指定的各SLM页面整体相关联的长度和/或跨度。例如,该跨度描述要访问多少(连续)读取单元才获得所有信息(未校正数据及相关联纠错校验位)以确定各SLM页面的(纠错)数据。继续该示例,该长度描述所读取的(例如,在读取单元中,比如由图2的读取单元225的长度所示)信息中有多少对应于各SLM页面的数据。
在各种实施例中,商数被用作访问缓存器(比如SLM页面的全相关缓存器)的密钥。如果缓存器中存在特定SLM页面命中,则在不访问NVM的情况下在缓存器中找到特定SLM页面的最新副本。在某些实施例和/或使用场景下,对多个SLM页面提供快速访问使得对NVM的随机访问进行更有效的处理和/或使得对NVM的多个独立流的连续数据访问进行更有效的处理(例如,对LBA的第一区域的第一流的连续数据访问穿插对LBA的第二区域的第二流的连续数据访问)。
读取单元长度相关信息编码
用于将主机逻辑块地址映射到NVM逻辑页面地址的数据结构包括用于控制在SSD控制器100与NVM199之间传输的数据的连续读取单元的数量的数据长度相关信息,例如,图2的读取单元225的长度。如上文针对图2-5和图7所述,映射结构将主机存储地址转换为指定NVM读取单元的地址的NVM逻辑页面号(LPN)。读取单元的非报头数据的第一字节的位置在每个读取单元的开始部分由报头信息指定(图4A,图4B)。在某些实施例和/或使用场景下,提供例如供NVM空间再造(R-区块回收)使用的相对更精确的长度信息提高了性能和/或效率。在各种实施例中,相对更精确的长度信息通过指定相对更精确的数据大小和连续读取单元的数量的映射条目来提供以传输确保获得所有数据。图8中示出了与各种实施例相关的所选细节,概念图示出了数据长度和跨度的实例,以及解码所编码的长度信息以获得数据长度和跨度的值。
图8的上部分从概念上讲与图2类似(相同参考符号对应于相同元件)。然而,图8所示的实施例包括代替或补充读取单元225的长度的编码长度信息822。图8的中间部分示出了长度/跨度解码830,将编码长度信息822转换为长度数834A和跨度数832A。在某些实施例和/或使用场景下,图2的读取单元225的长度是跨度数832A的实施例。
图8的底部示出了包括数据图像854的一系列七个连续读取单元(RU852且还被示为数据850)。短语“数据图像”指的是感兴趣的特定数据字节,如图8所示,在某些使用场景下,这些数据字节与读取单元边界对齐,而在其他使用场景下,与读取单元边界不对齐。图8的底部分别示出了术语,“长度”和“跨度”的示例,作为长度834和跨度832。“跨度”数指的是在SSD控制器100与NVM199之间转移的数个连续读取单元作为概念组(RU852)。转移的读取单元包含感兴趣的数据字节,例如,数据图像。另一方面,长度数指的是转移的读取单元内包含的数据图像854的大小。在某些条件下,如图8所示,数据图像的大小小于包含数据图像的连续读取单元的大小。关于要转移多少读取单元的信息,例如转移跨度,被图1A的设备接口逻辑191的调度模块193用来启动和控制数据传输。关于数据图像854大小的信息,例如图像数据的长度,例如被图1A的回收站151用来记录回收R-区块时的可用和已用NVM空间。
在各种实施例中,读取单元具有固定大小,例如512字节或2048字节。在其他实施例中,NVM包括一个或多个区域,且每个区域中的读取单元具有各自的固定大小,但区域中的第一区域中的读取单元的各自的固定大小不同于区域中的第二区域中的读取单元的各自的固定大小。对于固定大小的读取单元,长度和跨度根据一定数量的读取单元表示,例如,长度=6.1个读取单元,且跨度=7个读取单元,如图8所示。例如,跨度被表示为正整数个读取单元(例如,7个连续RU852),长度被表示为非负实数个读取单元(例如,数据图像854的长度的大约6.1个读取单元)。
在某些条件下,数据图像(例如,数据图像854)与读取单元边界完全不对齐(例如,读取单元的第一和最后字节),但在开始边界的读取单元之后开始并在结束边界的读取单元之前结束。在某些实施例和/或使用场景下,非对齐数据图像彼此靠近定位(例如,一个的一端在另一个的开始部分附接),从而通过最小化浪费的NVM空间使数据能够更紧密地封装在NVM中。非对齐会导致需要识别数据图像的第一字节(或者,在某些实施例中等效地,最后字节)的确切位置。图4A,图4B和图5示出了读取单元开始部分的报头的用途以精确指示数据图像开始于读取单元的哪个位置,并示出可能存在单个读取单元内的多个数据图像。
将前述概念的四个示例纳入考虑。对于示例的每一个,NVM的读取单元具有512B的固定长度。在示例一中,第一4KB区域的大小被压缩为400B(400字节)。400B可存储在单个读取单元(具有剩余空间)内。存储数据(数据图像)被称为具有1个读取单元的跨度,因为400B全部包含在单个读取单元中(例如,对单个读取单元进行读取以读取存储数据)。存储数据具有约0.8个读取单元的长度。
在示例二中,4KB区域是不可压缩的,并且存储在8个连续读取单元内。存储数据占据8个连续读取单元的全部或部分(对应于8个读取单元的跨度,例如,对8个连续读取单元进行读取以读取存储数据)。存储数据具有4KB的长度,当表示为数个读取单元时,该长度等同于约7.8个读取单元。在示例三中,2KB区域的大小被压缩为1KB,存储在2个连续读取单元内(对应于2个读取单元的跨度,例如,对2个连续读取单元进行读取以读取存储数据),并具有约2.0个读取单元的长度。最后,在示例四中,1KB区域是不可压缩的,并存储在3个连续读取单元内,例如,存储数据开始通过第一读取单元,延伸一直穿过第二读取单元,并在第三读取单元内结束。数据完全包含在3个连续读取单元内(对应于3个读取单元的跨度,例如,对3个连续读取单元进行读取以读取存储数据),并具有刚好小于2.0个读取单元的长度。
在某些实施例中,长度和跨度全部作为独立数字在编码长度信息822内进行编码,且在各种其他实施例中,这是更有效的和/或长度测量更加精确以使用几个位来编码长度并使用极少的位来编码跨度偏移量。实际的跨度数(例如,转移的连续读取单元的数量)然后通过以各种预定方式组合更精确的长度数与跨度偏移量得出。
在各种实施例和/或使用场景下,长度被编码为具有格式<X.Y>的定点实数,其中X表示整数个读取单元,且Y表示小数个读取单元。长度的前述表示启用允许压缩数据更准确地解释R-区块回收的粒度。在某些实施例中,位数k,用于编码小数部分Y,经选择允许2^k个压缩逻辑块在单个读取单元内适用,而在其他实施例中,小数部分Y的位数经选择允许2^(k-1)个压缩逻辑块在单个读取单元内适用。在具体示例中,四个位用于表示X部分,另外的四个位用于Y部分。
在某些实施例中,用符号S表示的跨度偏移量以编码长度信息822的一位子字段的形式进行编码。因此,S具有选自{0,1}的值。为了确定实际跨度数(例如,要转移的连续读取单元的数量),偏移量S的值与X+1的值相加,其中X是长度数<X.Y>的整数部分。由于长度数和跨度数的整数部分可在一和二之间变化,因此由此得出的跨度数有时会导致额外的读取单元转移。将以下示例纳入考虑。在第一示例中,长度为6.1个读取单元(数据图像854,图8)。跨度数为X+1+S=6+1+S=7个读取单元。然后S具有零的值。在第二示例中,长度为7.0个读取单元(未示出),且跨度数为X+1+S。然后,即使S=0,也可转移一个额外的读取单元。在第三示例中,长度为5.1个读取单元,且数据图像开始于第一读取单元的一端附近并结束于最终读取单元的开始部分附近。跨度数为X+1+S=5+1+S=7个读取单元。因此,跨度偏移量S的值为一。对于使用一个位的跨度偏移量的实施例,有时在转移另外的读取单元和使用更少位来表示偏移量之间做出权衡,从而允许另外的位被用于长度表示。
在其他实施例中,跨度偏移量S用编码长度信息822的2位子字段表示,并具有选自{0,1,2}的值。跨度数的值通过将X的值与跨度偏移量的值相加而得到,由此得出X等于跨度且S=0的情况,以及X为2小于跨度且S=2的情况。
在其他实施例中,跨度偏移量S用编码长度信息822的2位子字段表示,并具有选自{-1,0,1}的值。跨度数的值通过将X+1的值与跨度偏移量的值相加而得到。当X的值为二小于跨度的值时(如在上述的一个示例中一样),启动S=1会导致正确数量的读取单元被转移,且当X的值等于跨度的值时(如在上述的另一个示例中一样),启动S=(-1)会导致正确数量的读取单元被转移。
在某些实施例中,跨度数的值通过将X+2的值与跨度偏移量的值相加而得到。因此,根据跨度偏移量的编码,一些组合会导致最小数量的读取单元被转移,并且另一些组合会导致一个额外的读取单元被转移。
在其他实施例和/或使用场景下,编码的跨度是正整数个读取单元,而编码的长度是<N.M>形式的读取单元的定点偏移量,从跨度的值减去N.M得到数据图像的读取单元的长度值。因此,长度=(跨度-N.M)个读取单元。
<X.Y>格式的小数Y部分的粒度根据具体实施例和/或使用场景变化。在不浪费NVM空间的某些实施例中,粒度可设置为低至一个字节。在减少存储空间以提高地址操作效率的某些实施例中,Y的粒度是一部分读取单元,例如,二分之一读取单元,或小于二分之一读取单元,比如四分之一读取单元。
在某些实施例中,比如在不是所有读取单元的大小都相同的实施例中,在读取单元中测量跨度,在固定大小的单元(比如标称大小的读取单元)中测量长度。例如,长度被表示为具有64B小数粒度的数个2KB单元,跨度是包含数据图像的数个读取单元。读取单元的每一个的大小根据例如ECC要求变化。在某些场景下,以固定大小为单位保持固定长度提高了使用空间计数的准确度。以读取单元为单位保持跨度能够传输来自NVM最小数量的数据以检索特定数据图像。
描述了长度,或可选地长度偏移量,以定点数的形式进行编码的实施例。设想长度,或可选地长度偏移量,以浮点数的形式进行编码或任意其他编码的实施例。
压缩数据的长度编码
在某些实施例和/或使用场景下,存储在NVM(例如,图1A的NVM199)中的压缩数据启用改进的(较低的)写入放大。由于压缩数据小于对应的未压缩数据,因此跟踪数据的位置并跟踪空闲空间的量会导致压缩数据更小。
基于扇区的系统,比如SATA固态磁盘(例如,图1A的SSD101),以固定大小为单位,例如以扇区为单位写入数据。在各种实施例中,示例性扇区大小是512,520和528字节,或者其他大小。在某些实施例中,SATA SSD存储有多个连续扇区,比如八个连续扇区,作为一个单位,例如,逻辑页面(Lpage),以降低跟踪SSD中扇区位置的开销。例如,经由SSD的读取-修改-写入执行写入Lpage子集,比如一个扇区(并且在某些操作环境下性能比没有先前读取的写入要低)。选择适当的Lpage大小在数个小于逻辑页面大小的写入(数据写入的性能)与系统复杂性和映射操作的性能之间做出权衡。(较小的Lpage提供较少的读取-修改-写入,但增加了映射的大小和映射活动的量。)
某些SSD具有固定大小的映射—一组扇区被视为Lpage,并将Lpage映射至(例如,经由图1A的映射141)由SSD控制的NVM(例如,NVM199,图1A)中的相同大小(忽略ECC和系统开销)的存储量。
某些SSD比如经由无损压缩提供Lpage数据的压缩,由此可变地减小Lpage的大小。映射到(例如,经由图1A的映射141)NVM的可变大小的区域会导致可变大小减小。在某些实施例中,映射在字节粒度上使得尽管Lpage的大小可变也不会浪费空间。在其他实施例中,映射在其他粒度上(例如,读取单元的四分之一或二分之一)。
指定NVM中的精确位置需要相对较大的地址(由于NVM的相对较大的大小)。因此,将可变大小的Lpage映射到NVM中的细粒度(不浪费空间)将需要相对更大的映射(其中,例如每个条目必须存储完整的NVM字节地址;未示出)。增加映射的大小会产生额外开销,原因是在某些实施例中该映射过度提供的次数比数据要多,因此将增加映射的大小的成本与过度提供的量相乘。例如,在某些实现中,映射过度提供了300%(映射所需存储的4倍)。
在某些实施例中,NVM被作为单元,比如读取单元(例如,图6的读取单元610.0R0,610.0R1,610.0RR,610.1R0,610.1R1,610.1RR,610.65R0,610.65R1及610.65RR)实现和/或操作。在某些实施例中,读取单元是可通过纠错(例如,较低级比如ECC)读取的最细粒度的NVM。在各种实施例中,读取单元的用户(非ECC)部分是以下各项中的一项或多项:512字节的大小,1KB的大小,2KB的大小,任意其他大小,以及可变大小。在某些实施例中,读取单元的大小(未示出)基于包含读取单元的NVM的区块的磨损或误码率记录等因数可变。
通过将额外信息存储在读取单元中,比如读取单元中开始的每个Lpage的报头,减小映射的大小(图4A,图4B和图5)。尽管额外信息使用整个NVM存储的数据部分来存储报头(与存储额外NVM地址信息的映射部分相对),读取/写入映射的效率使得在某些实施例中映射的大小是优选的(映射141,以及图1A的表143)。
通过将零个或多个报头存储在每个读取单元中(图4A和图4B),指示在读取单元(如果有的话)中开始的Lpage并且Lpage的第一字节所在的位置(图4B和图5),使映射能够通过NVM中的读取单元地址而不是字节地址涉及Lpage,并减小映射的大小。由于必须读取(要校正的)整个读取单元,因此读取单元中的所有报头都可用,且报头能够提供在读取单元中开始的各个Lpage所在的位置有关的字节粒度(或其他粒度)信息(例如,针对图4A,图4B和图5所示)。
在各种实施例中,要针对Lpage读取的数个读取单元存储在映射中(而不是例如存储在包含Lpage开始部分的读取单元中的报头中),从而例如能够并行启动Lpage的所有读取。在某些实施例中,映射针对每个Lpage存储:包含Lpage开始部分的读取单元地址;以及要读取的数个读取单元,比如数个顺序读取单元,例如跨度(图8的跨度832A)。
在某些使用情况下,当写入Lpage时,从先前R-区块总共的使用空间减去先前R-区块位置中消耗Lpage的空间,并且Lpage的新内容所使用的空间被添加到Lpage的新内容写入至此的新R-区块总共的使用空间(一般参见图6)。减去和添加使用Lpage的先前长度和Lpage的新长度。在某些实施例中,映射还存储Lpage长度信息(例如,图8的编码长度信息822)。
根据各种实施例,R-区块中总的可用空间是以下各项中的一项或多项:所有R-区块的常数;大部分R-区块的常数但某些R-区块不同;以及随着R-区块变化。例如,在第一实施例中,不良区块使用(良好区块)物理区块映射替换。在第一实施例中,R-区块的大小恒定不变。在第二示例性实施例中,R-区块中的不良区块按照寻址序列跳过,并且R-区块的大小不同。在第三示例性实施例中,码率基于区块/区域的磨损、错误记录,以及区块/区域的误码率等因数在每个区块(或在SSD的每个区域中,对于一定粒度的区域)变化。改变码率改变了每个读取单元的用户数据的量,并因此改变每个R-区块的总大小。
在数据基于扇区且不被压缩的某些实施例和/或使用场景下,已用空间的计数以扇区为单位累积。在数据基于Lpage且不被压缩的某些实施例和/或使用场景下,已用空间的计数以Lpage为单位(比如八个扇区为单位)累积。在存储压缩Lpage的某些实施例和/或使用场景下,空间跟踪的基于Lpage或扇区的粒度在R-区块中的已用空间时会导致相对较多的不准确之处。在某些情况下,不准确之处会对性能产生相对较大的影响,原因是垃圾收集不能确定R-区块的实际使用,且不能选择最优或相对更优的用于回收的R-区块。
额外实现/实施例信息
在各种实施例中,如图2-8所示的操作和/或功能的所有或任意部分例如由一个或多个状态机实现。状态机的示例性实现包括硬件(例如,逻辑门和/或电路、专用状态机电路或硬连线控制电路)、软件(例如,固件或微码)或硬件和软件的组合。在某些实施例中,状态机中的一个或多个至少部分经由固件、驱动程序和/或应用程序来实现。在某些实施例中,状态机中的一个或多个部分经由图1A的SSD控制器100、部分经由CPU内核172执行的固件、部分经由图1B的固件106、部分经由驱动程序107和/或部分经由应用程序109来实现。
在各种实施例中,由图2-8所示的操作和/或功能的所有或任意部分例如在一致性管理179、转换管理177和/或图1A的映射141中的任意一个或多个的控制下和/或根据其中任意一个或多个经由硬件、软件和/或固件技术的任意组合来实现。
示例性实现技术
在某些实施例中,例如使用比如在地址映射功能(例如图1A的映射141)的表条目中编码长度相关信息的各种技术来实现NVM地址、跨度及长度映射/转换的存储地址空间的,计算主机闪存控制器,和/或SSD控制器(比如图1A的SSD控制器100)执行的操作的所有或任意部分,和提供上述操作中的所有或部分的处理器、微处理器、片上系统、专用集成电路、硬件加速器或其他电路的部分的组合由与计算机系统进行的处理兼容的规范来指定。该规范符合各种描述,例如,硬件描述语言、电路描述、网表描述、掩码描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE变体比如PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其描述。在各种实施例中,处理包括解释、编译、模拟和合成的任何组合以生成、验证或指定适于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施例,每个集成电路可根据多种技术来设计和/或制造。该技术包括可编程技术(例如,场或掩码可编程门阵列集成电路)、半定制技术(比如整体或部分基于单元的集成电路)和全定制技术(比如基本上专用的集成电路)及其任意组合,或与集成电路的设计和/或制造兼容的其他任何技术。
在某些实施例中,通过执行和/或解释一个或多个程序指令,通过解释和/或编译一个或多个源和/或脚本语言语句,或通过执行通过编译、转换和/或解释以编程和/或脚本语言语句表达的信息生成的二进制指令来进行所有或部分如计算机可读介质所述的操作的各种组合,该计算机可读介质存储有一组指令。语句与任何标准的编程或脚本语言(例如,C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一个或多个程序指令、语言语句或二进制指令任选存储在一个或多个计算机可读存储介质元件上。在各种实施例中,一些、所有或各个部分的程序指令实现为一种或多种功能、例程、子例程、线内例程、过程、宏或其部分。
结论
在该说明书中作出的某些选择仅仅是便于制备文本和附图,除非有相反的指示,否则这些选择本身不应解释为表达所述实施例的结构或操作相关的额外信息。选择的示例包括:用于数字编号的设计的特定组织或分配以及用于识别和引用实施例的特征和元件的元件标识符(例如,插图编号或数字标志符)的特定组织或分配。
词语“包括(includes)”或“包括(including)”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不指传达物理包含物,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施例,但本发明不限于所提供的细节。有许多本发明的实施例。所公开的实施例是示例性的,而不是限制性的。
应理解,构造、布置和使用的许多变化可能与说明书一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速率和所使用的技术的类型根据每个组件块中的各种实施例而可变。给于互连和逻辑的名称仅是示例性的,且不应被解释为限制所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施例可变化。同样地,除非特别说明与此相反,否则指定的值范围、使用的最高值和最低值或其他特定的规范(比如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述那些实施例,期望跟踪实现技术的改进和变化,且不应被解释为限制。
可采用本技术已知的功能等效的技术,而不是用于实现各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施例中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某些方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施例的功能。各种实施例中的具体变化包括但不限于:划分的差异;不同的形状因数和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议或通信链路;以及当根据特定应用的独特工程和商业限制实现在本文中描述的概念时预期的其他变化。
已通过超越需要用于所描述的实施例的很多方面的最小实现的细节和环境背景描述了实施例。本领域普通技术人员将认识到,一些实施例省略了公开的组件或特征,且无需改变剩余元件之间的基本合作。因此,应理解大部分公开的细节不需要实现所描述的实施例的各个方面。在剩余元件可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计的所有这些变化是在由所描述的实施例传达的教义上的非实质性变化。还应理解,本文中描述的实施例对其他的计算和网络应用具有广泛的实用性,且并不仅限于所描述的实施例的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (20)
1.一种方法,包括:
至少部分基于存储空间地址中的多个页面中的特定页面的页面地址来确定一个或多个非易失性存储器的多个读取单元中的一个的读取单元地址;
至少部分基于所述页面地址来确定指定整数个所述读取单元的跨度;
至少部分基于所述页面地址来确定间隔尺寸比所述读取单元更小的单元的长度;
至少部分基于所述读取单元地址和所述跨度来读取与特定页面相关联的数据,所述读取包括访问整数N个所述读取单元,并且其中,N至少部分基于所述跨度;
响应于写入所述数据,至少部分基于所述长度来更新所述非易失性存储器的空间使用信息;
其中,所述读取单元的每一个是可从所述非易失性存储器读取的最小量的可校正数据;并且
其中,所述整数N个所述读取单元的至少一个包括与所述特定页面相关联的至少一些所述数据以及与所述页面的至少另一个相关联的至少一些数据。
2.根据权利要求1所述的方法,其中,
确定所述读取单元地址包括将所述页面的每一个映射到所述读取单元的相应一个的相应读取单元地址,所述读取单元地址是所述特定页面被映射到的所述相应读取单元地址;
确定所述跨度包括将所述页面的每一个映射到指定相应整数个所述读取单元的相应跨度,所述跨度是所述特定页面被映射到的所述相应跨度;以及
确定所述长度包括将所述页面的每一个映射到间隔尺寸比所述读取单元更小的单元的相应长度,所述长度是所述特定页面被映射到的所述相应长度。
3.根据权利要求2所述的方法,
进一步包括访问映射表的多个条目中的特定条目,所述映射表使每个所述页面与所述映射表的条目中的相应一个相关联,所述特定页面与特定映射表条目相关联;并且
其中,所述访问包括将所述特定页面映射到所述读取单元地址,将所述特定页面映射到所述跨度以及将所述特定页面映射到所述长度,并且特定映射条目包括所述相应跨度、所述相应地址以及所述相应长度。
4.根据权利要求1所述的方法,
其中,所述非易失性存储器包括多个单独可写的非易失性存储页面;并且
其中,所述单独可写的非易失性存储页面中的每一个包括多个所述读取单元。
5.根据权利要求1所述的方法,其中,读取所述数据包括解析所访问的读取单元中包括的报头,所述报头包括识别与所述特定页面相关联的所述数据的偏移量。
6.根据权利要求1所述的方法,进一步包括:响应于写入所述数据,根据与所述特定页面相关联的所述数据的长度来更新所述长度。
7.根据权利要求6所述的方法,其中,写入所述数据包括减小与所述特定页面相关联的所述数据的大小,并且所述特定页面的所述相应长度根据与所述特定页面相关联的所述数据的减小大小的长度。
8.根据权利要求7所述的方法,其中,所述减小包括压缩。
9.根据权利要求1所述的方法,进一步包括,响应于写入所述数据,根据要访问以检索与所述特定页面相关联的所述数据的所述读取单元的数量来更新所述特定页面的所述相应跨度。
10.根据权利要求1所述的方法,其中,所述特定页面是第一页面,所述长度是第一长度,以及所述第一长度不同于与所述页面中的第二个相关联的第二长度。
11.一种方法,包括:
至少部分基于主机存储空间地址来确定以转移量间隔尺寸为单位描述转移量值并且以空间量间隔尺寸为单位描述空间量值的元素;
至少部分基于所述元素来确定所述转移量值和所述空间量值;
至少部分基于所述转移量值从非易失性存储器读取与所述主机存储空间地址对应的数据;
至少部分基于所述空间量值来跟踪所述非易失性存储器的空间使用信息;并且
其中,所述转移量间隔尺寸大于所述空间量间隔尺寸。
12.根据权利要求11所述的方法,其中,所述转移量值表示可从所述非易失性存储器读取的可纠错数据的最小量的整数倍。
13.根据权利要求12所述的方法,其中,可从所述非易失性存储器读取的可纠错数据的所述最小量对应于原始数据部分和与所述原始数据部分相关联的低级纠错码位。
14.根据权利要求11所述的方法,进一步包括转换所述数据的至少一部分并且响应于来自所述主机的指定所述主机存储空间地址的读取请求,将所述转换的结果的至少一部分返回至所述主机。
15.根据权利要求14所述的方法,其中,所述转换包括解压缩和解密中的至少一个。
16.一种非临时性有形计算机可读介质,其中存储有当被处理元件执行时使所述处理元件执行包括以下各项的操作的一组指令:
至少部分基于主机存储空间地址来确定以转移量间隔尺寸为单位描述转移量值并且以空间量间隔尺寸为单位描述空间量值的元素;
至少部分基于所述元素来确定所述转移量值和所述空间量值;
至少部分基于所述转移量值从非易失性存储器读取与所述主机存储空间地址对应的数据;
至少部分基于所述空间量值来跟踪所述非易失性存储器的空间使用信息;并且
其中,所述转移量间隔尺寸大于所述空间量间隔尺寸。
17.根据权利要求16所述的非临时性有形计算机可读介质,其中,所述转移量值表示可从所述非易失性存储器读取的可纠错数据的最小量的整数倍。
18.根据权利要求17所述的非临时性有形计算机可读介质,其中,可从所述非易失性存储器读取的可纠错数据的所述最小量对应于原始数据部分和与所述原始数据部分相关联的低级纠错码位。
19.根据权利要求17所述的非临时性有形计算机可读介质,其中,所述元素的第一子元素包括所述转移量值,以及所述元素的第二子元素包括所述空间量值。
20.根据权利要求17所述的非临时性有形计算机可读介质,其中,所述元素的第一子元素包括指示所述转移量值的整数,以及所述元素的第二子元素包括指示小于可从所述非易失性存储器读取的可纠错数据的最小量的数据量的小数,所述整数和所述小数相结合对应于所述空间量值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361755169P | 2013-01-22 | 2013-01-22 | |
US61/755,169 | 2013-01-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942114A true CN103942114A (zh) | 2014-07-23 |
CN103942114B CN103942114B (zh) | 2018-08-10 |
Family
ID=49958324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410031027.7A Active CN103942114B (zh) | 2013-01-22 | 2014-01-22 | Nvm地址、跨度及长度映射/转换的存储地址空间 |
Country Status (6)
Country | Link |
---|---|
US (4) | US9582431B2 (zh) |
EP (1) | EP2757480A1 (zh) |
JP (1) | JP6265746B2 (zh) |
KR (1) | KR102230227B1 (zh) |
CN (1) | CN103942114B (zh) |
TW (1) | TWI534617B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201350A (zh) * | 2016-07-07 | 2016-12-07 | 华为技术有限公司 | 存储数据的方法、存储器和计算机系统 |
TWI567544B (zh) * | 2015-07-14 | 2017-01-21 | 上海寶存信息科技有限公司 | 於控制邏輯錯誤時重新配置存儲控制器的方法以及使用該方法的裝置 |
WO2017140262A1 (zh) * | 2016-02-18 | 2017-08-24 | 华为技术有限公司 | 数据更新技术 |
CN107479938A (zh) * | 2017-09-27 | 2017-12-15 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN107743617A (zh) * | 2015-06-10 | 2018-02-27 | 美光科技公司 | 存储器中的带区映射 |
CN107852177A (zh) * | 2015-07-01 | 2018-03-27 | 赛灵思公司 | 可变码率的固态硬盘 |
CN108255741A (zh) * | 2017-12-19 | 2018-07-06 | 深圳忆联信息系统有限公司 | 一种固态硬盘原子写入的方法及固态硬盘 |
US10089196B2 (en) | 2015-07-14 | 2018-10-02 | Shannon Systems Ltd. | Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same |
CN109634517A (zh) * | 2017-10-06 | 2019-04-16 | 慧荣科技股份有限公司 | 进行存取管理的方法、记忆装置、电子装置和其控制器 |
CN109918373A (zh) * | 2019-02-02 | 2019-06-21 | 上海达梦数据库有限公司 | 数据存储方法、装置、服务器和存储介质 |
CN110232938A (zh) * | 2018-03-06 | 2019-09-13 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN110765033A (zh) * | 2019-10-31 | 2020-02-07 | 四川效率源信息安全技术股份有限公司 | 一种ahci模式下访问硬盘的方法 |
CN111352854A (zh) * | 2018-12-20 | 2020-06-30 | 爱思开海力士有限公司 | 存储装置、控制器及操作存储装置的方法 |
CN111435289A (zh) * | 2019-01-15 | 2020-07-21 | 爱思开海力士有限公司 | 映射数据访问性能提高的存储器控制器及其操作方法 |
CN111767005A (zh) * | 2019-04-01 | 2020-10-13 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN112052192A (zh) * | 2020-09-15 | 2020-12-08 | 东莞市高标软件科技有限公司 | 电动车故障记录、读取方法及装置 |
WO2021129354A1 (zh) * | 2019-12-23 | 2021-07-01 | 华为技术有限公司 | 存储系统中管理数据索引的方法和装置 |
CN113300720A (zh) * | 2021-05-25 | 2021-08-24 | 天津大学 | 长dna序列存储的插入删节分段识别方法 |
CN115079957A (zh) * | 2022-07-20 | 2022-09-20 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US8713379B2 (en) * | 2011-02-08 | 2014-04-29 | Diablo Technologies Inc. | System and method of interfacing co-processors and input/output devices via a main memory system |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
TWI506430B (zh) * | 2013-03-20 | 2015-11-01 | Phison Electronics Corp | 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置 |
CN104956348B (zh) * | 2013-04-02 | 2018-04-20 | 慧与发展有限责任合伙企业 | Sata发起方寻址和存储设备分片 |
US9092321B2 (en) * | 2013-07-24 | 2015-07-28 | NXGN Data, Inc. | System and method for performing efficient searches and queries in a storage node |
US9927998B2 (en) * | 2014-02-05 | 2018-03-27 | Tidal Systems, Inc. | Flash memory compression |
US9286209B2 (en) * | 2014-04-21 | 2016-03-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array |
US9766972B2 (en) * | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9552289B1 (en) | 2014-11-25 | 2017-01-24 | Seagate Technology Llc | Bitwise addressing of entries in a forward lookup table |
WO2016097808A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
JP6209689B2 (ja) | 2014-12-14 | 2017-10-04 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
WO2016097810A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon mode |
US10838852B2 (en) | 2015-04-17 | 2020-11-17 | Samsung Electronics Co., Ltd. | System and method to extend NVME queues to user space |
US11036533B2 (en) | 2015-04-17 | 2021-06-15 | Samsung Electronics Co., Ltd. | Mechanism to dynamically allocate physical storage device resources in virtualized environments |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
US11829349B2 (en) | 2015-05-11 | 2023-11-28 | Oracle International Corporation | Direct-connect functionality in a distributed database grid |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US10459846B2 (en) * | 2015-09-10 | 2019-10-29 | Toshiba Memory Corporation | Memory system which uses a host memory |
US10095622B2 (en) * | 2015-12-29 | 2018-10-09 | Intel Corporation | System, method, and apparatuses for remote monitoring |
CN107924405B (zh) * | 2016-01-29 | 2022-03-08 | 慧与发展有限责任合伙企业 | 用于存储数据的系统和方法、以及计算机可读介质 |
CN106201778B (zh) * | 2016-06-30 | 2019-06-25 | 联想(北京)有限公司 | 信息处理方法及存储设备 |
US20180039422A1 (en) * | 2016-08-05 | 2018-02-08 | Alibaba Group Holding Limited | Solid state storage capacity management systems and methods |
KR102611638B1 (ko) * | 2016-09-27 | 2023-12-08 | 삼성전자주식회사 | 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템 |
US10574270B1 (en) * | 2016-11-09 | 2020-02-25 | Seagate Technology Llc | Sector management in drives having multiple modulation coding |
KR20180055297A (ko) | 2016-11-16 | 2018-05-25 | 삼성전자주식회사 | 언맵 리드를 수행하는 메모리 장치 및 메모리 시스템 |
CN108459898B (zh) * | 2017-02-20 | 2022-01-14 | 阿里巴巴集团控股有限公司 | 一种资源回收方法及装置 |
JP2018160059A (ja) | 2017-03-22 | 2018-10-11 | 東芝メモリ株式会社 | メモリコントローラ |
US10585749B2 (en) | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
US10719446B2 (en) * | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
CN108304846B (zh) * | 2017-09-11 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 图像识别方法、装置及存储介质 |
JP7074453B2 (ja) | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7074454B2 (ja) | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | 計算機システムおよび制御方法 |
CN111512290B (zh) * | 2017-12-27 | 2023-09-22 | 华为技术有限公司 | 文件页表管理技术 |
CN108549525B (zh) * | 2018-04-04 | 2022-07-15 | 北京蓝杞数据科技有限公司天津分公司 | 数据存储和访问方法、装置、电子设备及存储介质 |
US10474361B1 (en) * | 2018-05-02 | 2019-11-12 | Seagate Technology Llc | Consolidating non-volatile memory across multiple storage devices for front end processing |
CN110515761B (zh) | 2018-05-22 | 2022-06-03 | 杭州海康威视数字技术股份有限公司 | 一种数据获取方法及装置 |
US10922178B2 (en) * | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
KR102659832B1 (ko) * | 2019-03-05 | 2024-04-22 | 삼성전자주식회사 | 데이터 저장 장치 및 시스템 |
CN111831297B (zh) * | 2019-04-17 | 2021-10-26 | 中兴通讯股份有限公司 | 零差分升级方法及装置 |
US10783978B1 (en) * | 2019-08-27 | 2020-09-22 | Micron Technology, Inc. | Read voltage-assisted manufacturing tests of memory sub-system |
CN111176583B (zh) | 2019-12-31 | 2021-03-30 | 北京百度网讯科技有限公司 | 一种数据写入方法、装置和电子设备 |
JP7395388B2 (ja) | 2020-03-06 | 2023-12-11 | キオクシア株式会社 | メモリシステム及びその制御方法 |
CN111427805B (zh) * | 2020-03-19 | 2023-04-07 | 电子科技大学 | 一种基于页模式操作的存储器快速访问方法 |
CN115605851A (zh) * | 2020-04-22 | 2023-01-13 | 美光科技公司(Us) | 用于读取操作的映射描述符 |
US11573914B2 (en) * | 2021-03-19 | 2023-02-07 | Sandisk Technologies Llc | Nonconsecutive mapping scheme for data path circuitry in a storage device |
CN113064555A (zh) * | 2021-04-21 | 2021-07-02 | 山东英信计算机技术有限公司 | 一种bios的数据存储方法、装置、设备及存储介质 |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
CN113590503B (zh) * | 2021-07-23 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 |
CN113590502B (zh) * | 2021-07-23 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统 |
TWI821965B (zh) * | 2021-09-29 | 2023-11-11 | 慧榮科技股份有限公司 | 編碼歷程資訊的存取方法及電腦程式產品及裝置 |
US11860775B2 (en) | 2021-09-29 | 2024-01-02 | Silicon Motion, Inc. | Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware |
US11972150B2 (en) | 2021-09-29 | 2024-04-30 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware |
CN113590051B (zh) * | 2021-09-29 | 2022-03-18 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
US11803441B2 (en) | 2021-09-30 | 2023-10-31 | International Business Machines Corporation | Calibrated decoders for implementations of quantum codes |
CN114415966B (zh) * | 2022-01-25 | 2022-08-12 | 武汉麓谷科技有限公司 | 一种kv ssd存储引擎的构建方法 |
US11853554B2 (en) | 2022-04-05 | 2023-12-26 | Western Digital Technologies, Inc. | Aligned and unaligned data deallocation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090164704A1 (en) * | 2007-12-21 | 2009-06-25 | Spansion Llc | High performance flash channel interface |
US20100293439A1 (en) * | 2009-05-18 | 2010-11-18 | David Flynn | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
CN101930404A (zh) * | 2010-08-27 | 2010-12-29 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
US20110296133A1 (en) * | 2010-05-13 | 2011-12-01 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
WO2012075200A2 (en) * | 2010-12-01 | 2012-06-07 | Sandforce, Inc. | Dynamic higher-level redundancy mode management with independent silicon elements |
WO2012099937A2 (en) * | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
US20120290798A1 (en) * | 2011-05-10 | 2012-11-15 | Huang Chengkuo | Data Compression and Compacting for Memory Devices |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003280979A (ja) | 2002-03-20 | 2003-10-03 | Toshiba Corp | 情報記憶装置 |
US8112574B2 (en) * | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
US7877539B2 (en) * | 2005-02-16 | 2011-01-25 | Sandisk Corporation | Direct data file storage in flash memories |
KR100706242B1 (ko) | 2005-02-07 | 2007-04-11 | 삼성전자주식회사 | 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법 |
US8151082B2 (en) * | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
EP1939751A1 (en) * | 2006-12-22 | 2008-07-02 | Telefonaktiebolaget LM Ericsson (publ) | Storing compressed data |
US7774525B2 (en) * | 2007-03-13 | 2010-08-10 | Dell Products L.P. | Zoned initialization of a solid state drive |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8364929B2 (en) | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8745353B2 (en) * | 2009-10-23 | 2014-06-03 | Seagate Technology Llc | Block boundary resolution for mismatched logical and physical block sizes |
US9582431B2 (en) * | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
-
2014
- 2014-01-17 US US14/158,380 patent/US9582431B2/en active Active
- 2014-01-20 EP EP14151726.8A patent/EP2757480A1/en not_active Withdrawn
- 2014-01-21 KR KR1020140007202A patent/KR102230227B1/ko active IP Right Grant
- 2014-01-21 TW TW103102153A patent/TWI534617B/zh not_active IP Right Cessation
- 2014-01-21 JP JP2014008181A patent/JP6265746B2/ja not_active Expired - Fee Related
- 2014-01-22 CN CN201410031027.7A patent/CN103942114B/zh active Active
-
2017
- 2017-01-18 US US15/409,127 patent/US9971547B2/en active Active
-
2018
- 2018-04-06 US US15/946,891 patent/US10740011B2/en active Active
-
2020
- 2020-07-08 US US16/923,655 patent/US11449252B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090164704A1 (en) * | 2007-12-21 | 2009-06-25 | Spansion Llc | High performance flash channel interface |
US20100293439A1 (en) * | 2009-05-18 | 2010-11-18 | David Flynn | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
US20110296133A1 (en) * | 2010-05-13 | 2011-12-01 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
CN101930404A (zh) * | 2010-08-27 | 2010-12-29 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
WO2012075200A2 (en) * | 2010-12-01 | 2012-06-07 | Sandforce, Inc. | Dynamic higher-level redundancy mode management with independent silicon elements |
WO2012075200A3 (en) * | 2010-12-01 | 2012-08-16 | Lsi Corporation | Dynamic higher-level redundancy mode management with independent silicon elements |
WO2012099937A2 (en) * | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
US20120290798A1 (en) * | 2011-05-10 | 2012-11-15 | Huang Chengkuo | Data Compression and Compacting for Memory Devices |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107743617A (zh) * | 2015-06-10 | 2018-02-27 | 美光科技公司 | 存储器中的带区映射 |
CN107743617B (zh) * | 2015-06-10 | 2019-06-04 | 美光科技公司 | 存储器中的带区映射 |
CN107852177A (zh) * | 2015-07-01 | 2018-03-27 | 赛灵思公司 | 可变码率的固态硬盘 |
CN107852177B (zh) * | 2015-07-01 | 2021-01-01 | 赛灵思公司 | 可变码率的固态硬盘 |
TWI567544B (zh) * | 2015-07-14 | 2017-01-21 | 上海寶存信息科技有限公司 | 於控制邏輯錯誤時重新配置存儲控制器的方法以及使用該方法的裝置 |
US10089196B2 (en) | 2015-07-14 | 2018-10-02 | Shannon Systems Ltd. | Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same |
WO2017140262A1 (zh) * | 2016-02-18 | 2017-08-24 | 华为技术有限公司 | 数据更新技术 |
US10725662B2 (en) | 2016-02-18 | 2020-07-28 | Huawei Technologies Co., Ltd. | Data updating technology |
US11698728B2 (en) | 2016-02-18 | 2023-07-11 | Huawei Technologies Co., Ltd. | Data updating technology |
US11422703B2 (en) | 2016-02-18 | 2022-08-23 | Huawei Technologies Co., Ltd. | Data updating technology |
CN106201350B (zh) * | 2016-07-07 | 2019-10-18 | 华为技术有限公司 | 存储数据的方法、存储器和计算机系统 |
CN106201350A (zh) * | 2016-07-07 | 2016-12-07 | 华为技术有限公司 | 存储数据的方法、存储器和计算机系统 |
CN107479938A (zh) * | 2017-09-27 | 2017-12-15 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN107479938B (zh) * | 2017-09-27 | 2024-03-29 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN109634517A (zh) * | 2017-10-06 | 2019-04-16 | 慧荣科技股份有限公司 | 进行存取管理的方法、记忆装置、电子装置和其控制器 |
CN109634517B (zh) * | 2017-10-06 | 2022-08-23 | 慧荣科技股份有限公司 | 进行存取管理的方法、记忆装置、电子装置和其控制器 |
US11449435B2 (en) | 2017-10-06 | 2022-09-20 | Silicon Motion, Inc. | Method for performing access management in a memory device, associated memory device and controller thereof, and associated electronic device |
US11741016B2 (en) | 2017-10-06 | 2023-08-29 | Silicon Motion, Inc. | Method for performing access management in a memory device, associated memory device and controller thereof, and associated electronic device |
US11550730B2 (en) | 2017-10-06 | 2023-01-10 | Silicon Motion, Inc. | Method for performing access management in a memory device, associated memory device and controller thereof, and associated electronic device |
CN108255741A (zh) * | 2017-12-19 | 2018-07-06 | 深圳忆联信息系统有限公司 | 一种固态硬盘原子写入的方法及固态硬盘 |
CN110232938A (zh) * | 2018-03-06 | 2019-09-13 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN111352854A (zh) * | 2018-12-20 | 2020-06-30 | 爱思开海力士有限公司 | 存储装置、控制器及操作存储装置的方法 |
CN111352854B (zh) * | 2018-12-20 | 2023-09-01 | 爱思开海力士有限公司 | 存储装置、控制器及操作存储装置的方法 |
CN111435289A (zh) * | 2019-01-15 | 2020-07-21 | 爱思开海力士有限公司 | 映射数据访问性能提高的存储器控制器及其操作方法 |
CN109918373A (zh) * | 2019-02-02 | 2019-06-21 | 上海达梦数据库有限公司 | 数据存储方法、装置、服务器和存储介质 |
CN111767005A (zh) * | 2019-04-01 | 2020-10-13 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN111767005B (zh) * | 2019-04-01 | 2023-12-08 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN110765033A (zh) * | 2019-10-31 | 2020-02-07 | 四川效率源信息安全技术股份有限公司 | 一种ahci模式下访问硬盘的方法 |
CN110765033B (zh) * | 2019-10-31 | 2023-03-10 | 四川效率源信息安全技术股份有限公司 | 一种ahci模式下访问硬盘的方法 |
WO2021129354A1 (zh) * | 2019-12-23 | 2021-07-01 | 华为技术有限公司 | 存储系统中管理数据索引的方法和装置 |
CN112052192A (zh) * | 2020-09-15 | 2020-12-08 | 东莞市高标软件科技有限公司 | 电动车故障记录、读取方法及装置 |
CN112052192B (zh) * | 2020-09-15 | 2024-04-05 | 广东高标智能科技股份有限公司 | 电动车故障记录、读取方法及装置 |
CN113300720A (zh) * | 2021-05-25 | 2021-08-24 | 天津大学 | 长dna序列存储的插入删节分段识别方法 |
CN115079957A (zh) * | 2022-07-20 | 2022-09-20 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2757480A1 (en) | 2014-07-23 |
US20180232179A1 (en) | 2018-08-16 |
US11449252B2 (en) | 2022-09-20 |
JP6265746B2 (ja) | 2018-01-24 |
US20140208062A1 (en) | 2014-07-24 |
KR20140094467A (ko) | 2014-07-30 |
TWI534617B (zh) | 2016-05-21 |
US20200333969A1 (en) | 2020-10-22 |
US10740011B2 (en) | 2020-08-11 |
US9582431B2 (en) | 2017-02-28 |
KR102230227B1 (ko) | 2021-03-18 |
CN103942114B (zh) | 2018-08-10 |
US9971547B2 (en) | 2018-05-15 |
JP2014142931A (ja) | 2014-08-07 |
TW201443640A (zh) | 2014-11-16 |
US20170123733A1 (en) | 2017-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942114B (zh) | Nvm地址、跨度及长度映射/转换的存储地址空间 | |
JP6387231B2 (ja) | 不揮発性メモリへの書き込みの管理および領域選択 | |
CN103858116B (zh) | I/o设备及计算主机互操作 | |
CN103415844B (zh) | 用于高级冗余信息计算的系统和方法 | |
CN103902403B (zh) | 经由冗余阵列的非易失性存储器编程故障恢复 | |
CN103620563B (zh) | 用于非易失性存储器的可变超量配置 | |
CN103348330A (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
CN103392207A (zh) | 非易失性存储的自身日志记录和层级一致性 | |
TWI531902B (zh) | 矽獨立元件之部分冗餘陣列 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160301 Address after: California, USA Applicant after: Seagate Technology LLC Address before: California, USA Applicant before: LSI Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |