CN103858116A - I/o设备及计算主机互操作 - Google Patents
I/o设备及计算主机互操作 Download PDFInfo
- Publication number
- CN103858116A CN103858116A CN201280049511.1A CN201280049511A CN103858116A CN 103858116 A CN103858116 A CN 103858116A CN 201280049511 A CN201280049511 A CN 201280049511A CN 103858116 A CN103858116 A CN 103858116A
- Authority
- CN
- China
- Prior art keywords
- data
- order
- standard
- mapping
- equipment
- 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
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
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)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
一种I/O设备与计算主机耦接。在某些实施方式中,设备被启用为使用不与设备直接耦接的计算主机的存储器来存储信息比如设备的映射的影子副本和/或设备的状态。存储映射的影子副本允许设备和计算主机中的一者或两者使用映射的影子副本,以便减少读取延迟。存储状态允许设备保存易失状态,否则所述易失状态在设备进入低功率状态时丢失。在某些实施方式中,设备实现标准命令的一个或多个非标准修改符。非标准修改符修改标准命令的执行,从而提供仅具有标准命令的主机协议中不存在的特征。
Description
相关申请的交叉引用
在所附的申请书数据表、请求书和传送信(如适用,如果有的话)中列出了本申请的优先权要求。在本申请的类型所允许的范围内,该申请通过引用全面并入以下申请,在提交进行本发明时,这些申请全部内容由本申请所共同享有:
于2011年8月9日提交的美国临时申请(案号为SF-11-15,序列号为61/521,739),第一署名发明人为Earl T.COHEN,且题为“I/O DEVICEAND COMPUTING HOST INTEROPERATION”;
于2011年9月6日提交的美国临时申请(案号为SF-11-15A,序列号为61/531,551,第一署名发明人为Earl T.COHEN,且题为“I/O DEVICEAND COMPUTING HOST INTEROPERATION”;以及
于2011年10月5日提交的美国临时申请(案号为SF-11-15B,序列号为61/543,666,第一署名发明人为Earl T.COHEN,且题为“I/O DEVICEAND COMPUTING HOST INTEROPERATION”。
背景技术
领域:计算主机和I/O设备技术的进步对于提供性能、效率和使用实用性的提高是必要的。
相关技术:除非被明确认定为被公开或众所周知,否则为上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前所公知的或者是现有技术的一部分。通过引用将本文中所引用的所有参考文献(如有的话)(包括专利、专利申请和出版物)全面地整体并入,而无论是否被具体并入。
发明内容
本发明可以以多种方式实现,这些方式例如过程、制品、装置、系统、物质组分和计算机可读介质(比如计算机可读存储介质(例如,诸如磁盘这样的光学和/或磁性大容量存储设备中的介质、或诸如闪存这样的具有非易失性存储器的集成电路、或计算机网络),其中,通过光学或电子通信链路发送程序指令。具体实施方式提供了能实现在上文认定的领域中的成本的改善、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施方式的公开。具体实施方式包括用于促进对具体实施方式的其余部分的理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施方式。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
附图说明
图1A示出了包括与被启用为与主机(比如计算主机)互操作的I/O设备(比如I/O存储设备)中的操作兼容的固态磁盘(SSD)控制器的SSD的实施方式的所选细节。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各种实施方式的所选细节。
图2示出了映射逻辑块地址(LBA)的逻辑页号(LPN)部分的实施方式的所选细节。
图3示出了在读取单元地址访问非易失性存储器(NVM)以产生被组织为各个读取单元的读取数据的实施方式的所选细节,这些读取数据集体具有以读取单元为量级测量的长度。
图4A示出了读取单元的一个实施方式的所选细节。
图4B示出了读取单元的另一实施方式的所选细节。
图5示出了具有多个字段的报头的实施方式的所选细节。
图6示出了处理I/O设备处的命令和可选的提示信息的一个实施方式的所选细节的流程图。
图7示出了处理I/O设备处的命令和可选的提示信息的另一实施方式的流程图。
图8示出了处理I/O设备处的命令和可选的提示信息的又一实施方式的流程图。
图9示出了处理I/O设备处的命令和可选提示影子映射信息的实施方式的流程图。
图10示出了保持计算主机处的影子映射信息的实施方式的流程图。
图11示出了计算主机处发出命令和可选影子映射信息的实施方式的流程图。
图12示出了进入并退出I/O设备的睡眠状态的实施方式的流程图。
图13A和图13B总体示出了I/O设备和计算主机互操作的实施方式的流程图。
附图中的附图标记列表
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是示例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可应用于独立的实施方式组;如本文所使用的,这些标签并不明确地意味着传达质量或任何形式的偏爱或偏见,而只是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施方式用于描述过程、方法和/或程序指令特征的变化,其他实施方式均被设想为根据预定的或动态确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。许多具体细节列于以下描述中,以提供对本发明的透彻理解。为示例的目的而提供细节,且本发明可根据未列出一些或所有细节的权利要求来实践。为了清晰起见,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明不会被不必要模糊。
介绍
仅包括该介绍,以便于更迅速理解具体实施方式;本发明不限于在介绍中提出的概念(包括明确的示例,如有的话),因为任何介绍的段落均是整个主题的缩略图,且不意味着是详尽或限制的描述。例如,以下介绍仅对某些实施方式提供由空间和组织限定的概述信息。有许多其他实施方式,包括最终将针对其得出权利要求的那些实施方式,在整个说明书的其余部分中讨论。
缩略语
本文中所限定的各种缩写(例如,首字母缩写词)中的至少一些是指本文所使用的某些元件。
缩略语 | 描述 |
AES | 高级加密标准 |
API | 应用程序接口 |
AHCI | 高级主机控制器接口 |
ASCII | 美国信息交换标准代码 |
ATA | 高级技术附件(AT附件) |
BCH | 博斯-乔赫里-霍克文黑姆码 |
BIOS | 基本输入/输出系统 |
CD | 光盘 |
CF | 紧凑式闪存 |
CMOS | 互补金属氧化物半导体 |
CPU | 中央处理器 |
CRC | 循环冗余校验 |
DDR | 双倍数据速率 |
DES | 数据加密标准 |
DMA | 直接存储器访问 |
DNA | 直接NAND访问 |
DRAM | 动态随机存取存储器 |
DVD | 数字多用途光盘/视频光盘 |
ECC | 错误校正码 |
eSATA | 外部串行高级技术附件 |
FUA | 强制单元访问 |
HBA | 主机总线适配器 |
HDD | 硬盘驱动器 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子装置 |
JPEG | 联合图像专家组 |
LAN | 局域网 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LPN | 逻辑页号 |
LZ | Lempel-Ziv算法 |
MLC | 多级单元(cell) |
MMC | 多媒体卡 |
MPEG | 运动图像专家组 |
MRAM | 磁性随机存取存储器 |
NCQ | 原生命令队列 |
NVM | 非易失性存储器 |
OEM | 原始设备制造商 |
ONA | 优化NAND访问 |
ONFI | 开放NAND闪存接口 |
OS | 操作系统 |
PC | 个人计算机 |
PCIe | 快速外围组件互连(快速PCT) |
PDA | 个人数字助理 |
PHY | 物理接口 |
RAID | 廉价/独立磁盘冗余阵列 |
RS | 里德-索罗蒙码 |
RSA | Rivest,Shamir&Adleman |
SAS | 串行连接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术附件(串行ATA) |
SCSI | 小型计算机系统接口 |
SD | 安全数字 |
SLC | 单级单元 |
SMART | 自监测分析和报告技术 |
SPB | 安全物理边界 |
SRAM | 静态随机存取存储器 |
SSD | 固态磁盘/驱动器 |
SSP | 软件设置保存 |
USB | 通用串行总线 |
VF | 虚拟函数 |
VPD | 重要产品数据 |
WAN | 广域网 |
在某些实施方式中,I/O设备比如固态磁盘(SSD)经由主机接口与主机计算系统(本文中也简称主机)耦接。根据各种实施方式,耦接经由包括PCIe、SATA、SAS、USB、以太网、光纤信道的一个或多个主机接口,或适于耦接两个电子设备的任何其他接口进行。在进一步实施方式中,主机接口包括电信令接口和主机协议。主机协议定义与I/O设备通信的标准命令,包括将数据发送至I/O设备并从I/O设备接收数据的命令。
主机计算系统包括一个或多个处理元件,本文中称为计算主机(或有时简称“主机”)。根据各种实施方式,计算主机执行以下各项中的一项或多项:监控软件,比如操作系统和/或管理程序;在监控软件与I/O设备之间通信的驱动程序;应用程序软件;以及BIOS。在进一步实施方式中,驱动程序的一部分的一些或全部或副本并入BIOS、操作系统、管理程序及应用程序中的一项或多项中。在又进一步实施方式中,应用程序能够通过经由驱动程序在旁通(bypass)模式下发送命令,和/或通过与I/O设备直接通信来更直接地与I/O设备通信。与I/O设备直接通信的应用程序的示例由PCIe I/O设备的虚拟功能(VF)提供。驱动程序与I/O设备的主要功能通信以全局地配置该I/O设备,并且一个或多个应用程序经由相应的虚拟功能与I/O设备直接通信。虚拟功能允许每个应用程序将I/O设备的至少一部分看作应用程序的专用I/O设备。
截至主机协议被标准化时,主机协议的标准命令为I/O设备提供一组特征和功能。某些I/O设备具有在标准主机协议中不支持并因此不可由计算主机使用标准主机协议控制的特征和/或功能。因此,在某些实施方式中,经由包括以下各项中的一项或多项的技术向主机协议添加非标准特征和/或功能:使用预留命令代码;使用供应商特定命令;使用现有命令中的预留字段;使用不被特定I/O设备使用的命令的某些字段中的位,比如未使用地址位;向功能寄存器添加新特征,比如在SATA中通过SET FEATURES命令;通过聚集和/或融合命令;以及本领域已知的其他技术。使用非标准特征和/或功能可选地结合使用能够与I/O设备通信的非标准驱动程序和/或应用程序。
在本文中,标准命令的非标准修改符指的是使用上述的任何技术来扩展标准命令具有标准主机协议中不支持的非标准特征和/或功能。在各种实施方式中,非标准修改符(或其部分)被称为提示(提示),该提示可选地通过(标准)命令使用或提供有(标准)命令。在第一示例中,非标准修改符被编码为主机协议中的命令的一部分,并且仅影响该命令(例如,“一次一个”提示)。在第二示例中,非标准修改符被编码为主机协议中的命令的一部分并对后续命令保持有效(例如,“粘性(sticky)”提示),除非被比如通过后续命令之一上的另一个非标准修改符暂时禁用,或直至其比如通过另一个命令上的另一个非标准修改符而针对所有进一步命令被禁用。在第三示例中,非标准修改符在配置寄存器中通过模式设置命令启用,比如在SATA中通过SET FEATURES命令启用,并保持有效直至比如通过另一个模式设置命令被明显禁用为止。可能存在这些示例的许多组合和变型。
根据各种实施方式,非标准特征和/或功能影响以下各项中的一项或多项:执行命令;命令的效力和/或性能;与命令相关联的数据的加工和处理;多个命令之间的关系;多个命令的数据之间的关系;命令的数据被整理的指示;命令的数据不可校正的指示;命令的数据类型的规定(specification,规范);命令的数据的数据访问类型的规定;多个命令的数据的数据序列顺序的规定;多个命令的数据之间的数据关系的规定;任何其他数据值,数据类型,数据序列,数据关系,数据目的地,或数据属性规定;I/O设备的属性,比如效力和/或性能;以及影响I/O设备的操作的任何其他特征和/或功能,和/或命令和/或数据的处理,和/或数据的存储、检索和/或回收。
在某些实施方式和/或使用场景下,命令包括多个LBA之一,并且映射可选地和/或选择性地使命令的LBA与映射的多个条目之一相关联。映射的每个条目包括I/O设备的NVM中的位置和/或与LBA相关联的数据不存在于NVM中(例如,未从其分配、从其解除分配、从其删除或从其整理)的指示。根据各种实施方式,响应于接收命令,I/O设备执行以下各项中的一项或多项:访问与LBA相关联的映射的条目;将命令的非标准修改符的指示存储在与LBA相关联的映射的条目中;从与LBA相关联的映射的条目中检索先前命令的非标准修改符的指示;以及I/O设备响应于接收命令执行的任何其他操作。存储和/或从映射的条目中检索非标准修改符实现非标准修改符与LBA中的特定LBA相关联和/或在多个命令之间保持持续有效的效果。例如,命令包括指定作为多个数据频带(band)中的固定数据频带的数据目的地的特定非标准修改符。除了将命令的数据存储在指定的固定数据频带中之外,还将特定非标准修改符的指示存储在与命令的LBA相关联的映射的条目中。使得命令的数据能够被后续回收(recycle)以访问与命令的LBA相关联的映射的条目,并且根据特定非标准修改符的指示,使所述回收将数据重新回收至指定的固定数据频带。
指定数据的类型的非标准修改符的示例包括数据的可压缩性的规定(比如不可压缩)、或数据的使用模型的规定(比如数据库日志)。在某些实例中,被识别为特定类型(比如经由规定或已经记录在映射中的事先提供的规定)的数据(例如,通过I/O设备和/或主机识别)可选地和/或选择性地由I/O设备更有效地进行处理。在某些使用场景下,例如,被识别为数据库日志类型的数据可选地和/或选择性地存储在多个数据频带中的数据库日志数据频带中,该数据库日志数据频带被预留给数据库日志类型的数据。在各种实施方式中,数据库日志数据频带的大小是固定的,并且当完整时,数据库日志数据频带中的最旧的数据可选地和/或选择性地被自动选择。
指定数据访问类型的非标准修改符的示例包括读取/写入访问类型的规定、主读取访问类型的规定、主写入访问类型的规定、一次写入(也被称为只读)访问类型的规定、以及瞬态访问类型的规定。在某些示例中,被识别为具有特定访问类型(比如经由规定或已经记录在映射中的事先提供的规定)的数据(例如,通过I/O设备和/或主机识别)可选地和/或选择性地由I/O设备更有效地进行处理。在第一示例中,识别可选地和/或选择性地读取或写入数据的相关频率允许I/O设备有利地以某种方式和/或在某个位置存储数据以更有效地允许写入、访问、读取和/或回收数据。在第二示例中,对由I/O设备识别为一次写入的数据的标准写入访问可选地和/或选择性地被看作错误。
在某些实施方式中,瞬态访问类型的规定允许数据由I/O设备存储,并且进一步可选地和/或选择性地允许I/O设备删除和/或整理(例如,“自动整理”)数据,而没有从计算主机收到命令要这么做。例如,识别存储的特定部分是瞬态的可选地和/或选择性地允许I/O设备整理存储的一部分,而不回收。根据各种实施方式,由计算主机对已经由I/O设备删除或整理的瞬态数据的后续访问返回以下各项中的一项或多项:数据被删除或被整理的指示;错误指示;包含特定模型和/或值的数据;以及数据已经被I/O设备删除或整理的针对计算的任何其他指示。
在各种实施方式中,复位之后瞬态的访问类型的规定允许数据由I/O设备存储,并进一步可选地和/或选择性地允许I/O设备删除和/或整理(例如,自动整理)数据,而不从计算主机接收命令这样做,而只是在后续重启和/或复位I/O设备和/或包括I/O设备的系统之后。例如,某些操作系统数据,比如页文件,和/或某些应用程序数据,比如memcached应用程序的数据,在系统重启和/或复位之后是无效的。在某些实施方式中,复位之后瞬态的访问类型的指示包括计数器,比如二位计数器。全局计数器的值用于初始化复位之后瞬态的访问类型的指示的计数器。全局计数器在重启和/或复位I/O设备和/或系统时递增。当根据复位之后瞬态的访问类型的指示的计数器是否与全局计数器匹配处理用于回收的存储的特定部分时,具有复位之后瞬态访问类型的指示的存储的特定部分(比如I/O设备的NVM的一部分)被选择性地整理。在进一步实施方式中,有多个全局计数器,全局计数器的每一个可选地和/或选择性地独立递增,并且复位之后瞬态的访问类型的指示进一步包括全局计数器的相应一个的规定。除计数器之外的技术,比如位掩码或固定值,在各种实施方式中用于区分回收时存储器的特定部分是否被选择性地整理。
在进一步实施方式中,重启和/或复位的指示是从计算主机提供的信号以指示具有复位之后瞬态的访问类型的指示的存储器的一部分能够在存储器的这部分随后进行处理以回收时被整理。在第一示例中,在具有虚拟机的环境中,从计算主机提供的信号是虚拟机的复位和/或终止的指示。在第二示例中,对于memcached应用程序,从计算主机提供的信号是memcached应用程序的复位和/或终止的指示。在第三示例中,重启和/或复位的指示是I/O设备的虚拟功能的功能级复位。在某些使用场景下,与虚拟功能相关联的I/O设备的NVM的部分,比如特定范围的LBA,要受功能级复位的影响。
指定数据序列顺序的非标准修改符的示例包括连续数据序列顺序的规定,以及原子(atomic)数据序列顺序的规定。在某些实例中,被识别为具有特定数据序列顺序(比如经由规定或已经记录在映射中的事先提供的规定)的数据(例如,通过I/O设备和/或主机识别)可选地和/或选择性地由I/O设备更有效地进行处理。在第一示例中,识别数据属于连续数据序列顺序可选地和/或选择性地允许I/O设备有利地以某种方式和/或在某个位置存储数据以便更有效地允许写入、访问、读取和/或回收数据。在第二示例中,识别数据属于原子数据序列顺序可选地和/或选择性地允许I/O设备有利地将原子数据序列顺序的数据看作一个单元并保证原子数据序列的所有数据被成功写入或没有成功写入任何数据,如计算主机可观察到的。在某些实施方式中,写入原子序列的数据包括写入指示序列的开始和/或结束的元数据,比如记录信息。
指定数据关系的非标准修改符的示例包括数据的多个项目之间的读取和/或写入关联性的规定。在某些实例中,被识别为具有特定数据关系(比如经由规定或已经记录在映射中的事先提供的规定)的数据(例如,通过I/O设备和/或主机识别)可选地和/或选择性地由I/O设备更有效地进行处理。例如,识别数据的两个项目之间的读取数据关系可选地和/或选择性地允许当读取数据的项目的第一个时I/O设备有利地预取(prefetch)数据的项目中的第二个。在某些使用示例和/或场景下,数据的第一项目是文件系统中的文件的标签,并且数据的第二项目是文件的对应范围。根据各种实施方式,数据关系是以下各项中的一项或多项:一对一;一对多;多对一;多对多;不同命令的不同数据关系,比如与写入命令相比读取命令不同;以及数据项目之间的任何其他关系。
指定数据目的地的非标准修改符的示例包括NVM的特定部分的规定(比如特定闪存元件或闪存元件的集合,例如以提供在NVM的元件之间扩展数据)、分级存储层的规定、存储类型的规定及多个数据频带之一的规定。在某些实例中,被识别为具有特定数据目的地(比如经由规定或已经记录在映射中的事先提供的规定)的数据(例如,通过I/O设备和/或主机识别)可选地和/或选择性地由I/O设备更有效地进行处理。在第一示例中,识别数据优先存储在指定类型的存储器中可选地和/或选择性地允许I/O设备有利地将数据存储在不同特征的多个存储器之一中,比如SLC闪存对MLC闪存,比如闪存对MRAM,或比如易失性存储器对NVM。存储器的不同特征包括以下各项中的一项或多项:易失性;性能比如访问时间、延迟和/或带宽;读取、写入或擦除时间;功率;可靠性;寿命;较低级纠错和/或冗余功能;较高级纠错和/或冗余功能;以及其他存储器特征。在第二示例中,识别数据存储在多个数据频带中的指定数据频带中可选地和/或选择性地允许I/O设备有利地将数据存储在指定数据频带中以改善以下各项中的一项或多项:写入速度;回收速度;回收频率;写入放大率;以及数据存储的其他特征。
指定命令关系的非标准修改符的示例包括在命令之中强加优选或所需相对顺序的命令优先级的规定,以及在至少一些类型的命令之间强加界限的命令隔层(barrier)的规定。例如,命令隔层的写入命令隔层类型能通过读取命令但不能通过写入命令,从而允许命令隔层确保所有事先提交的写入命令都在完成写入命令隔层之前完成。
聚合和/或融合命令的示例是被看作一个单元的并且不执行或作为一个整体执行的两个或多个命令的组合。例如,非标准修改符指定融合命令序列的开始、继续或结束。融合命令序列的命令以原子的方式执行,使得除非所有命令都成功完成,否则任何命令都没有效果。融合命令序列的示例是比较-写入序列,其中后续写入命令仅在先前比较命令成功,比如通过比较相同时才有效果。根据各种实施方式,融合命令序列的命令通过以下方式中的一种或多种执行:顺序地;并行地;按照通过主机协议的排序规则确定的顺序;按照命令由I/O设备接收的顺序;以及按任意顺序。
在某些实施方式中,I/O设备,比如SSD,包括SSD控制器。SSD控制器充当SSD的主机接口和NVM之间的桥接器(bridge),并执行经由SSD的主机接口从计算主机发送的主机协议的命令。至少一些命令指示SSD利用自和向计算主机发送的数据分别写入并读取NVM。在进一步实施方式中,使SSD控制器能够利用映射在主机协议的LBA与NVM中的物理存储地址之间转换。在进一步实施方式中,映射的至少一部分用于I/O设备的专用存储器(对计算机用主机是不可见的)。例如,计算主机不可访问的LBA的一部分被I/O设备用来管理对日志、统计或其他专用数据的访问。
根据各种实施方式,映射是以下各项中的一个或多个:一级映射、二级映射、多级映射、直接映射、相关映射和使主机协议的LBA与NVM中的物理存储地址相关联的任何其他构件。例如,在某些实施方式中,二级映射包括使LBA的第一函数(function)与多个二级映射页中的一个的NVM中的相应地址相关联的第一级映射,并且第二级映射页中的每一个使LBA的第二函数与对应于LBA的数据的NVM中的相应地址相关联。在进一步实施方式中,LBA的第一函数和LBA的第二函数的示例为除以每个二级映射页中所包括的固定数量的条目时获得的商数和余数。多个第二级映射页统称为二级映射。在本文中,引用映射的一个或多个条目指的是任意类型映射的一个或多个条目,包括一级映射、二级映射的第一级、二级映射的第二级、多级映射的任意级或具有条目的任何其他类型的映射。
根据各种实施方式,第二级映射(或多级映射的较低级)的映射页的每一个包括以下各项中的一项或多项:与其他映射页相同数量的条目、与至少一部分其他映射页不同数量的条目、与其他映射页具有相同粒度的条目、与其他映射页具有不同粒度的条目、全部具有相同粒度的条目、具有多种粒度的条目、指定映射页的格式和/或布局的相应报头;并具有表示映射页的条目的任何其他格式、布局或组织。例如,第一第二级映射页的规格为每条目4KB的粒度,第二第二级映射页的规格为每条目8KB的粒度并且只具有第一第二级映射页的条目的二分之一。
在进一步实施方式中,较高级映射的条目包括对应的较低级映射页的格式和/或布局信息。例如,第一级映射中的每个条目包括相关联的第二级映射页中的条目的粒度规格。
在某些实施方式中,映射包括多个条目,每个条目使一个或多个LBA与信息相关联,该信息选择性地包括存储有LBA数据的NVM中的相应的位置。例如,LBA指定512B扇区,并且映射中的每个条目与LBA的对齐的八扇区(4KB)区域相关联。
根据各种实施方式,映射的条目的信息包括以下各项中的一个或多个:NVM中的位置;NVM中读取单元的地址;要读取以获得NVM中所存储的相关联LBA的数据的读取单元的数量;NVM中所存储的相关联LBA的数据的大小,该大小的粒度可选地和/或可选地大于一个字节;相关联LBA的数据不存在于NVM中的指示,比如由于相关联LBA的数据被整理;相关联LBA的数据的属性,包括适用于相关联LBA的数据的任何非标准修改符;以及相关联LBA的数据的任何其他元数据、属性或性质。
在某些实施方式中,NVM中的地址被分组为多个区域以减少表示其中一个地址所需的位数。例如,如果I/O设备的LBA被分成64个区域,并且NVM被分成64个区域,每个LBA区域对应一个,则与特定LBA相关联的映射条目需要6个以下的地址位,因为NVM中的其中一个区域能够由特定LBA的区域确定。根据各种实施方式,LBA的区域和NVM的区域之间的关联是以下各项中的一个或多个:相等、直接关联,比如1对1数值函数、查表、动态映射以及使两组数字相关联的任何其他方法。
在各种实施方式中,NVM中的位置包括多个读取单元中的一个的地址,以及读取单元中的长度和/或跨度。长度是NVM中所存储的多个数据项中的一个特定数据项的大小,特定数据项与包括长度的映射的条目相关联。根据各种实施方式,长度具有以下各项中的一项或多项的粒度:一字节、多于一个的字节、一个读取单元、指定的读取单元片段、根据其中一个数据项的最大允许压缩率的粒度以及用于跟踪存储使用率的任何其他粒度。跨度是多个读取单元,比如整数个读取单元,存储有特定数据项的各部分。在进一步实施方式和/或使用场景下,在读取单元跨度中的第一读取单元和/或读取单元跨度中的最后读取单元可选地和/或选择性地存储多个数据项的一部分或所有数据项。在某些实施方式和/或使用场景下,存储长度和/或跨度,比如通过将长度(在上下文中有时称为大小,对长度和/或跨度进行编码)存储为相对于跨度的偏移量来进行编码。在某些实施方式和/或使用场景下,未使用的长度和/或跨度编码对额外信息(比如非标准修改符的指示,或比如相关联数据项是否存在于NVM中的指示)进行编码。
编码NVM中作为地址的位置和长度使NVM中所存储的数据的大小改变。例如,将第一4KB区域压缩为400B大小,完全存储在单个读取单元中,并具有一个读取单元的长度,而第二4KB区域是不可压缩的,跨越一个以上读取单元,并具有一个以上读取单元的长度。在进一步实施方式中,在与LBA的区域相关联的存储的读取单元中具有长度和/或跨度使仅读取所需部分的NVM能够检索LBA的区域的数据。
在某些实施方式中,映射的每个条目包括信息,有时称为元数据,指定与条目相关联的LBA的区域的属性。在进一步实施方式中,比如通过针对区域的多个LBA中的每一个具有单独的元数据规定,至少一部分元数据的粒度比所述区域的粒度细。根据各种实施方式,元数据包括可适用于和/或用于修改和/或控制与该区域相关联的NVM中的数据的写入、访问、读取和/或回收的一个或多个非标准修改符。
作为响应于命令的非标准修改符将元数据存储在映射条目中的一个示例,所扩展的写入命令包括LBA和指定写入命令的数据为瞬态的非标准修改符。将写入命令的数据存储在NVM中,并更新与LBA相关联的映射的特定条目以包括写入命令的数据的NVM中的位置以及与LBA相关联的数据的瞬态规定的指示。后续操作,比如后续命令或内部操作比如回收、访问映射的特定条目,被使得能够确定与LBA相关联的数据的瞬态规定的指示,并且如果与LBA相关联的数据的瞬态规定的指示存在则以不同的方式执行。例如,回收具有与LBA相关联的数据的瞬态规定的指示的LBA在某些实施方式中被使得能够整理与LBA相关联的数据,而不回收与LBA相关联的数据。
在某些实施方式中,I/O设备包括外部存储器,比如DRAM,并且外部存储器与I/O设备的元件直接耦接,比如经由DDR2或DDR3接口。根据各种实施方式,外部存储器用于:存储I/O设备的一些或所有映射;存储I/O设备的多级映射的一个或多个级;缓冲发送至I/O设备的写入数据;存储I/O设备的内部状态;以及I/O设备的任何其他存储器存储。例如,外部存储器用于提供对映射的访问,但是如果外部存储器是易失性的,则将更新选择性地存储到NVM中的映射。在各种实施方式和/或使用场景下,更新可选地、有条件地和/或选择性地立即存储和/或延迟。在进一步实施方式和/或使用场景下,存储所有更新。在其他实施方式和/或使用场景下,不存储一些更新(例如,由于在存储较旧的更新之前,较旧的更新被较新的更新取代,或允许省略一个或多个更新的存储的恢复技术)。根据各种实施方式,外部存储器是以下各项中的一项或多项:是SRAM;是DRAM;是MRAM或其他NVM;具有DDR接口;具有DDR2或DDR3接口;具有任何其他存储器接口;并且是任何其他易失性或非易失性外部存储器设备。
在其他实施方式中,比如具有多级映射的某些实施方式,将较低级的映射连同来自计算主机的数据、比如与I/O设备的LBA相关联的数据存储在I/O设备的NVM中,并且I/O设备可选地和/或选择性地不使用直接耦接的DRAM。执行对较低级的映射的条目的访问,至少在某些时候使用NVM。
在某些实施方式中,将映射的影子副本存储在计算主机的存储器中。在各种实施方式中,I/O设备将信息,比如映射的影子副本或比如内部状态,存储在计算主机的存储器中。根据各种实施方式,计算主机的存储器是以下各项中的一项或多项:计算主机的主存储器,比如与处理器耦接的DRAM存储器;计算主机的系统可访问存储器;计算主机的I/O空间存储器;计算主机的PCIe可寻址存储器;非易失性存储器,比如DRAM存储器或SRAM存储器;NVM,比如闪存或MRAM存储器;可由I/O设备访问且不与I/O设备直接耦接的任何存储器;以及可由I/O设备和计算主机访问的任何存储器。
根据各种实施方式,映射的影子副本包括以下各项中的一项或多项:映射的至少一些条目;映射的所有条目;包括映射的对应条目子集的条目;包括符合映射的对应条目的信息的条目;包括有效指示和/或其他信息的条目,所述有效指示和/或其他信息不存在于映射的条目中;仅与二级映射的第二级的条目对应的条目;仅与多级映射的最低级的条目对应的条目;与映射的页结构对应的页结构,比如与二级映射的第二级页对应的页结构;以及与映射逻辑一致的任何结构。
在进一步实施方式中,映射的影子副本具有以下各项中的一项或多项:与映射的对应条目格式相同的条目;与映射的对应条目格式相似的条目;以及与映射的对应条目格式不同的条目。在第一示例中,以压缩格式将二级映射的第二级页存储在NVM中,并以未压缩格式存储映射的第二级的影子副本。在第二示例中,映射的影子副本的多个部分的每一个具有不存在于映射中的有效指示,所述部分包括映射的影子副本的一个或多个条目。有效指示允许独立初始化和/或更新所述部分。在第三示例中,映射的影子副本的条目的每一个具有不存在于映射中的信息,其指示与条目相关联的LBA的数据存在于一个或多个存储层中的哪些层中。在第四示例中,映射的条目的每一个具有不存在于映射的影子副本中的信息,其指示与条目相关联的LBA的数据的存档状态。在第五示例中,映射的影子副本和/或映射被启用为指示与条目相关联的LBA的数据的存储层。在第六示例中,映射的影子副本和/或映射的每个条目包括可由主机读取和/或写入的一个或多个位。在第七示例中,映射的条目的每一个包括相应长度和相应跨度,并且映射的影子副本的对应条目的每一个包括相应跨度并且不包括相应长度。
在某些实施方式中,在复位事件(比如I/O设备的接通或复位)中,将映射的初始影子副本存储在计算主机的存储器中。根据各种实施方式,映射的初始影子副本是以下各项中的一项或多项:全部无效;映射的副本;多级映射的一个或多个级的副本;映射的至少一部分的副本,比如被识别为最初使用的一部分;以及在与映射一致的任何状态下。在进一步实施方式中,因为引用了LBA,所以映射的影子副本被动态更新。在第一示例中,当首先访问LBA时,从初始状态更新与LBA对应的映射的影子副本中的条目。在第二示例中,当首先访问LBA时,从初始状态更新与LBA对应的映射的影子副本的一部分。继续该示例,所述部分包括映射的影子副本的多个条目,比如与包含与LBA相关联的条目的第二级映射页对应的条目。
在某些实施方式中,由I/O设备接收的一个或多个命令的每一个允许I/O设备更新映射作为执行命令的至少一部分。一个或多个命令在本文中被称为映射更新命令。根据各种实施方式,映射更新命令包括以下各项中的一项或多项:写入命令;整理命令;使映射的至少一部分无效的命令;以及被启用为修改映射的任何其他命令。
在某些实施方式中,映射更新命令、比如写入命令,包括LBA,并使与LBA对应的映射的影子副本中的条目无效。根据各种实施方式,执行以下各项中的一项或多项:当发出映射更新命令时由计算主机执行无效;当接收和/或执行映射更新命令时由I/O设备执行无效;无效包括关闭与LBA对应的映射的影子副本中的条目;并且无效包括关闭映射的影子副本的一部分中的有效指示,所述部分包括映射的影子副本的多个条目,所述映射的影子副本包括与LBA对应的条目。响应于映射更新命令使与映射更新命令的LBA对应的映射的影子副本中的条目无效允许对映射的影子副本中的条目进行后续访问以便确定映射的影子副本中的条目的信息无效。
在某些实施方式和/或使用场景下,由I/O设备接收的写入命令允许写入命令的数据被写入到I/O设备的NVM。I/O设备确定NVM中写入该写入命令的数据的位置并更新与写入命令的LBA相关联的映射中的条目以包括NVM中的位置。在进一步实施方式中,计算主机的存储器中的映射的影子副本也被更新,使得与写入命令的LBA相关联的映射的影子副本中的条目包括NVM中的位置。
在某些实施方式和/或使用场景下,响应于接收整理命令,I/O设备更新与整理命令的LBA相关联的映射中的条目以包括与LBA相关联的数据不存在于NVM中的指示。在进一步实施方式中,计算主机的存储器中的映射的影子副本也被更新,使得与整理命令的LBA相关联的映射的影子副本中的条目包括与LBA相关联的数据不存在于NVM中的指示。
根据各种实施方式,映射的影子副本的更新由以下各项中的一项或多项执行:计算主机,响应于发出某些类型的命令,比如映射更新命令;计算主机,响应于从I/O设备接收更新的信息;计算主机,响应于轮询该I/O设备最近更新并接收带有更新信息的响应;I/O设备,通过访问计算主机的存储器中的映射的影子副本,比如通过访问PCIe地址空间中的映射的影子副本;以及包括计算主机和I/O设备的系统的另一代理程序。更新的信息包括符合映射的一个或多个条目的至少一些内容的信息和/或一个或多个条目的指示,比如与一个或多个条目相关联的各LBA。在各种实施方式中,所更新的信息以任何格式或通过在一个或多个I/O设备与一个或多个计算主机之间传递信息的任何技术来进行传递。在第一示例中,使用SATA主机协议,所更新的信息在可由计算主机读取的记录页中进行传递。在第二示例中,使用基于PCIe的主机协议,比如NVM Express,所更新的信息至少部分由I/O设备传递,该I/O设备将区域写入计算主机的存储器中并告知计算主机中断。
在某些实施方式中,与映射更新命令的LBA相关联的映射中的条目进一步包括指定与LBA相关联且存储在NVM中的数据的长度和/或跨度的信息,因为与LBA相关联且存储在NVM中的数据的长度和/或跨度根据数据的可压缩性改变。在进一步实施方式中,与映射更新命令的LBA相关联的映射的影子副本中的条目可选地和/或选择性地进一步包括与LBA相关联且存储在NVM中的数据的长度和/或跨度。根据各种实施方式,与LBA相关联且存储在NVM中的数据的长度和/或跨度可选地和/或选择性地额外被使得能够编码以下各项中的一项或多项:与LBA相关联的一些和/或所有数据被整理的指示;与LBA相关联的一些和/或所有数据不可校正的指示;以及与LBA相关联的一些和/或所有数据的任何其他特性。
在某些实施方式和/或使用场景下,将与LBA相关联且存储在NVM中的数据的长度存储在与映射更新命令的LBA相关联的映射的影子副本中的条目中允许使用映射的影子副本来提供后续映射更新命令中与LBA相关联且存储在NVM中的数据的长度,比如当重写映射更新命令的LBA的数据时。当通过后续映射更新命令覆盖映射更新命令的LBA的数据时,与LBA相关联且存储在NVM中的数据的长度用于调整包含映射更新命令的LBA的数据的NVM的区域中的已用空间统计。例如,当通过后续映射更新命令覆盖映射更新命令的LBA的数据时,包含映射更新命令的LBA的数据的NVM的区域的已用空间统计递减与LBA相关联且存储在NVM中的数据的长度。
在某些实施方式中,读取请求,比如请求LBA处的数据的读取命令,被启用为访问与LBA对应的映射的影子副本中的条目。根据各种实施方式,执行以下各项中的一项或多项:当发出读取命令时该访问由计算主机执行;当接收和/或执行读取命令时该访问由I/O设备执行;并且该访问包括读取与LBA对应的映射的影子副本中的条目的至少一部分。访问与读取命令的LBA对应的映射的影子副本中的条目根据映射的对应条目提供信息,而无需访问该映射。在映射,比如较低级的多级映射,存储在I/O设备的NVM中的某些实施方式和/或使用场景下,对映射的影子副本的访问具有较短延迟并且有利地改善访问LBA处的数据的延迟。
在某些实施方式中,响应于从I/O设备读取与特定LBA对应的数据的读取请求,计算主机读取映射的影子副本的条目的至少一部分,映射的影子副本的条目与特定LBA对应。计算主机将预映射读取命令发送至I/O设备,该预映射读取命令包括映射的影子副本的条目的信息,比如I/O设备的NVM中的位置。在各种实施方式中,预映射读取命令不提供特定LBA。在进一步实施方式和/或使用场景下,NVM中的位置包括NVM中的相应跨度。
在某些实施方式中,响应于从I/O设备读取与特定LBA对应的数据的读取请求,计算主机被启用为读取映射的影子副本的条目的至少一部分,映射的影子副本的条目与特定LBA对应。如果映射的影子副本的条目无效,比如有效指示所指示的,则计算主机将读取命令发送至I/O设备,该读取命令包括特定LBA。如果映射的影子副本的条目有效,比如有效指示所指示的,则计算主机将预映射读取命令发送至I/O设备,该预映射读取命令包括映射的影子副本的条目的信息,比如I/O设备的NVM中的位置。在各种实施方式中,预映射读取命令不提供特定LBA。在进一步实施方式和/或使用场景下,NVM中的位置包括NVM中的相应跨度。
在某些实施方式中,响应于I/O设备接收包括I/O设备的NVM中的位置的预映射读取命令,I/O设备被启用为访问该位置的NVM以获得读取数据。I/O设备响应于接收预映射读取命令而省略访问映射。读取数据和/或其处理版本响应于预映射读取命令返回。
在某些实施方式中,响应于I/O设备接收从与特定LBA对应的I/O设备读取数据的读取命令,I/O设备被启用为读取映射的影子副本的条目的至少一部分,映射的影子副本的条目与特定LBA对应。I/O设备从映射的影子副本的条目获得与特定LBA的数据对应的NVM中的位置,而无需访问映射。I/O设备访问NVM中的该位置的NVM以获得读取数据。读取数据和/或其处理版本响应于读取命令返回。
在某些实施方式中,响应于接收从与特定LBA对应的I/O设备读取数据的读取命令,I/O设备被启用为读取映射的影子副本的条目的至少一部分,映射的影子副本的条目与特定LBA对应。如果映射的影子副本的条目无效,比如有效指示所指示的,则I/O设备访问映射以确定与特定LBA的数据对应的NVM中的位置。如果映射的影子副本的条目有效,比如有效指示所指示的,则I/O设备从映射的影子副本的条目获得与特定LBA的数据对应的NVM中的位置,而无需访问映射。I/O设备访问NVM中的该位置的NVM以获得读取数据。读取数据和/或处理版本响应于读取命令返回。
在包括上述实施方式的变型的进一步实施方式和/或使用场景下,I/O设备的NVM中的位置可选地和/或选择性地被启用为编码与特定LBA对应的数据是否存在于I/O设备的NVM中的指示。例如,已经被整理的数据或自从I/O设备被格式化后从未写入的数据不存在于I/O设备的NVM中。
在计算主机确定NVM中的位置作为试图从I/O设备读取数据的一部分(比如通过访问映射的影子副本)的变型中,计算主机能够确定,在不将命令发送至I/O设备的情况下,与特定LBA对应的数据不存在于I/O设备的NVM中。根据各种实施方式,执行以下各项中的一项或多项:计算主机将响应返回给读取请求,而不将命令发送至I/O设备;计算主机将命令发送至包括特定LBA的I/O设备;并且计算主机将命令发送至包括从与特定LBA对应的映射的影子副本的条目获得的信息的I/O设备。
在I/O设备确定NVM中的位置作为执行读取命令的一部分(比如通过访问映射的影子副本)的变型中,I/O设备被启用为将响应返回给读取命令(无需访问NVM)以获得读取数据。
在某些实施方式中,当回收NVM的区域时,I/O设备能够使用映射的影子副本。回收能够经由映射的影子副本的条目确定从用于回收NVM的区域读取的数据是否仍然有效,比如通过是映射的影子副本的条目之一中最新的。在各种实施方式中,最新的数据可选地和/或选择性地通过将数据写入NVM中的新位置并更新映射的条目以指定新位置来回收;根据各种实施方式,使映射的影子副本的条目中的对应条目无效或利用新位置进行更新。在进一步实施方式中,如果与数据相关联且从NVM读取的报头包括LBA的至少一部分,并且与LBA的至少一部分相关联的映射的影子副本中的条目包括NVM中的特定位置,则从NVM中的特定位置的NVM读取的数据是最新的。
在某些实施方式中,使无效或更新响应于与回收相关联的写入(例如在写入之后不久)。在其他实施方式中,使无效或更新响应于I/O设备擦除(或选择性地准备擦除)该区域(例如,在发生写入之后任意很长的时间)。在提供数据的自动整理的某些实施方式中,回收包括自动整理,其中最新数据被标记为在映射中进行整理,而不写入到新位置。因为计算主机被启用为接收数据或数据整理的指示,所以在各种实施方式和/或使用场景下,提供最新数据(即使被整理)或可选地提供整理的指示,从而允许使用映射的影子副本,无论回收相关的更新响应于写入还是响应于擦除执行。
例如,I/O设备向计算主机传递已经通过回收更新的第二级映射条目和/或映射部分(比如第二级映射页)的列表的更新。通信经由日志消息、预留LBA空间或适于提供映射信息的任何技术中的任何一个或多个进行。更新可选地和/或选择性地指示映射的影子副本的一个或多个条目的无效,和/或包括映射的影子副本的受影响条目的一个或多个新值。I/O设备通知计算主机所述更新可通过以下各项中的一项或多项获得:命令状态中的预留位、从I/O设备至计算主机的任何一类或多类响应中的预留位、错误报告、终端以及用于在I/O设备与计算主机之间通信的其他技术。在某些使用场景中,擦除由更新的第二级映射条目引用的数据取决于从计算主机接收的更新已经应用(例如应用于映射的影子副本)的确认。
在各种实施方式中,映射的影子副本包括一个或多个错误检测码,比如CRC或校验和。错误检测码的每一个保护包括映射的影子副本的一个或多个条目的各部分。例如,在某些实施方式中,各部分与第二级映射页对应。根据各种实施方式,各部分之一的完整性由以下各项中的一项或多项验证:重新计算并验证与各部分相关联的错误检测码;比较与各部分相关联的错误检测码和根据映射的对应部分计算的错误检测码;以及直接利用映射的对应部分验证各部分。根据各种实施方式,根据以下各项中的一项或多项验证各部分之一的完整性:在I/O设备和/或包括I/O设备的系统的每次复位和/或重启之后;在I/O设备和/或包括I/O设备的系统退出低功率和/或睡眠状态(例如,较低功率操作状态)之后;在指定间隔之后;以及根据指定频率定期地。
在某些实施方式中,I/O设备能够使用计算主机的存储器来保存I/O设备的状态。根据各种实施方式,I/O设备的状态包括以下各项中的一项或多项:映射的影子副本;I/O设备的映射的缓存;I/O设备的多级映射的一个或多个级的缓存;I/O设备的二级映射的第一级;I/O设备的多级映射的上级;I/O设备的易失性状态;I/O设备保持的统计,比如符合NVM的访问和/或行为的统计;当I/O设备进入低功率状态时丢失的I/O设备的内部状态;以及I/O设备的任何其他状态。在各种实施方式中,I/O设备的保存状态的所有或任意部分可选地和/或选择性地当保存时被加密,当恢复时被解密。
在某些实施方式中,在正常模式(例如较高功耗操作状态)下操作的I/O设备能够确定进入低功率和/或睡眠状态(例如,较低功率操作状态),比如响应于接收进入低功率状态的请求或响应于I/O设备不活动的时间并根据I/O设备的配置设置。响应于确定进入低功率状态,I/O设备能够将I/O设备的状态的至少第一部分保存在计算主机的存储器中。I/O设备然后能够进入低功率状态,并且比如通过除去至I/O设备的至少一部分的功率,I/O设备的状态的至少第一部分会丢失。随后,I/O设备能够确定退出低功率状态,比如通过接收退出低功率状态的请求。响应于确定退出低功率状态,I/O设备被启用为退出低功率状态。I/O设备然后被启用为从计算主机的存储器恢复I/O设备的状态的至少第一部分,并且在正常模式下重新操作。根据各种实施方式,低功率状态是以下各项中的一项或多项:备用状态;睡眠状态;休眠状态;空闲状态;以及I/O设备的功率管理协议中的任何状态。
在进一步实施方式中,响应于确定进入低功率状态,I/O设备的状态的至少第二部分保存在I/O设备的NVM中。在进一步实施方式中,响应于确定退出低功率状态,I/O设备被启用为从NVM恢复I/O设备的状态的至少第三部分。例如,在某些使用场景下,I/O设备的状态的至少第一部分包括第一级映射,I/O设备的状态的至少第二部分包括I/O设备的状态的校验点,并且I/O设备的状态的至少第三部分包括I/O设备的处理器的可执行代码。
在各种实施方式中,I/O存储设备被启用为计算一个或多个非标准统计。非标准统计的示例是存储使用率、存储使用百分比、写入放大率及I/O存储设备的非易失性存储器的一个或多个频带(band)的大小和/或使用率。在某些实施方式和/或使用场景下,待写入实现I/O存储设备的存储的至少一部分的NVM的数据的大小在写入NVM之前减小。非标准统计的其他示例是存储使用率和/或至少部分基于大小减小的存储使用百分比和/或基于过去或当前大小减小的未来大小减小的预测。响应于接收请求返回非标准统计值的命令(例如从计算主机),I/O存储设备返回所请求的非标准统计(例如至计算主机)。计算的结果(例如非标准统计中的一个或多个的所有或任意部分)可选地受任意大小减小的影响。大小减小例如经由压缩和/或数据重复删除进行。在某些实施方式和/或使用场景下,非标准统计中的一个或多个(例如,存储使用率,比如NVM的使用率)根据以下各项中的一个或多个改变:大小减小的质量、整理命令(比如从计算主机接收的)的数量和/或大小、所接收的瞬态数据量(比如来自计算主机)以及被整理的瞬态数据量(比如通过I/O存储设备)。在某些实施方式和/或使用场景下,非标准统计(比如频带的使用率)中的一个或多个根据大小减小的质量改变。
在某些实施方式中,访问NVM中不同大小配量的压缩数据在某些使用场景下具有提高的存储效率。例如,SSD控制器从计算主机接收(未压缩)数据(例如,与磁盘写入命令相关),压缩该数据,并将压缩后的数据存储到闪存中。响应于来自计算主机的后续请求(例如,与磁盘读取命令相关),SSD控制器从闪存中读取压缩数据,对压缩数据进行解压,并向计算主机提供未压缩数据。根据不同大小量子将压缩数据存储在闪存中,量子大小由于压缩算法、操作模式和各种数据的压缩效率等而变化。SSD控制器通过查阅所包括的映射表对数据进行部分解压以确定报头存储在闪存中的位置。SSD控制器解析从闪存获得的报头以确定适当的(压缩)数据存储在闪存中的位置。SSD控制器对来自闪存的适当的数据进行解压以产生未压缩数据并将其提供给计算主机。在即时应用中,解压(及其变型)与减压(及其变型)同义。
在各种实施方式中,SSD控制器包括与计算主机交互的主机接口、与NVM比如闪存交互的接口以及用于控制接口并进行(和/或控制进行的各方面)压缩和解压,以及较低级纠错、较高级纠错及利用独立硅元件的动态较高级冗余模式管理的电路。
根据各种实施方式,某些主机接口与USB接口标准、CF接口标准、MMC接口标准、SD接口标准、记忆棒接口标准、xD图片卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准中的一个或多个兼容。根据各种实施方式,计算主机是计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上电脑、笔记本电脑、上网本电脑、PDA、媒体播放器、媒体记录器、数码相机、蜂窝手机、无绳电话手机和电子游戏机中的所有或任意部分。在某些实施方式中,接口主机(比如SAS/SATA桥接器)作为计算主机和/或作为计算主机的桥接器进行操作。
在各种实施方式中,SSD控制器包括一个或多个处理器。处理器执行固件以控制和/或进行SSD控制器的操作。SSD控制器与计算主机通信以发送并接收命令和/或状态以及数据。计算主机执行操作系统、驱动程序和应用程序中的一个或多个。计算主机与SSD控制器的通信可选地和/或可选地是经由驱动程序和/或经由应用程序进行的。在第一示例中,与SSD控制器的所有通信是经由驱动程序进行的,并且应用程序向驱动程序提供驱动程序转换为SSD控制器的特定命令的较高级命令。在第二示例中,驱动程序实现旁通模式并且使应用程序能够经由驱动程序向SSD控制器发送特定命令。在第三示例中,PCIe SSD控制器支持一个或多个虚拟函数(VF),从而启用应用程序,一旦配置,就绕过驱动程序而与SSD控制器直接通信。
根据各种实施方式,某些SSD与由磁性和/或光学非易失性存储器(比如,HDD、CD驱动器及DVD驱动器)所使用的形状因数、电接口和/或协议兼容。在各种实施方式中,SSD使用零以上的奇偶码、零以上的RS码、零以上的BCH码、零以上的维特比或其他格子(trellis)码及零以上LDPC码。
示例性实施方式
在结束对具体实施方式的介绍时,接下来是示例性实施方式的集合,包括明确列举为“EC”(示例性组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些示例并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些示例性实施方式,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
EC1)一种方法,包括:
在I/O设备处接收包括标准命令和非标准修改符的规定的扩展命令;
根据非标准修改符执行标准命令;并且
其中系统级性能由于使用非标准修改符以修改标准命令的执行而提高。
EC2)一种方法,包括:
在I/O设备处接收包括规定的模式设置命令以允许特定非标准修改符;
在I/O设备处接收标准命令;
根据非标准修改符执行标准命令;并且
其中系统级性能由于使用非标准修改符以修改标准命令的执行而提高。
EC3)根据EC1或EC2中任一项所述的方法,进一步包括使非标准修改符与标准命令的数据相关联。
EC4)根据EC3所述的方法,进一步包括:
存储非标准命令修改符的指示以便稍后利用标准命令的数据进行检索。
EC5)根据EC3所述的方法,其中所述存储是非易失性的。
EC6)根据EC4所述的方法,进一步包括:
将非标准修改符的指示存储在映射的多个条目中的特定条目中,所述特定条目通过标准命令的逻辑块地址(LBA)与标准命令的数据相关联。
EC7)根据EC4所述的方法,其中标准命令是写入命令,并且进一步包括:
响应于指定对写入命令的数据的访问的后续读取命令,根据非标准修改符的指示修改后续读取命令的执行。
EC8)根据EC4所述的方法,其中标准命令是第一命令,并且进一步包括:
响应于指定对第一命令的数据的访问的后续命令,根据非标准修改符的指示修改后续命令的执行。
EC9)根据EC8所述的方法,
其中第一命令是写入命令;
其中非标准修改符包括写入命令的数据为只读的指示;并且
其中修改后续命令的执行包括如果后续命令是标准写入命令则返回错误指示。
EC10)根据EC4所述的方法,其中标准命令是写入命令,并且进一步包括:
确定写入命令的数据被回收;
访问非标准修改符的指示;
响应于非标准修改符的指示,整理写入命令的数据;并且
其中写入命令的数据被整理而不被回收。
EC11)根据EC1或EC2中任一项所述的方法,其中标准命令是读取命令。
EC12)根据EC1或EC2中任一项所述的方法,其中标准命令是读取命令或写入命令中的一个。
EC13)根据EC1或EC2中任一项所述的方法,其中标准命令是数据移动命令。
EC14)根据EC1或EC2中任一项所述的方法,其中标准命令是整理命令。
EC15)根据EC14所述的方法,其中非标准修改符可选地确定整理命令是强制的还是可选的。
EC16)根据EC1或EC2中任一项所述的方法,其中非标准修改符至少部分由标准命令的预留字段指定。
EC17)根据EC1或EC2中任一项所述的方法,其中非标准修改符至少部分由标准命令的多个地址位中的至少一些指定。
EC18)根据EC17所述的方法,其中地址位中的至少一些另外未被I/O设备使用。
EC19)根据EC1或EC2中任一项所述的方法,其中非标准修改符是以下各项中的一项或多项:
数据类型的规定;
数据访问类型的规定;
数据序列顺序的规定;
数据关系的规定;
数据目的地的规定;以及
命令关系的规定。
EC20)根据EC19所述的方法,其中数据类型的规定包括压缩性指示。
EC21)根据EC20所述的方法,其中数据类型的规定包括数据类型不可压缩的指示。
EC22)根据EC19所述的方法,其中数据类型的规定包括数据库日志类型指示。
EC23)根据EC19所述的方法,其中数据访问类型的规定包括读取/写入数据访问类型指示、主读数据访问类型指示和主写数据访问类型指示中的两项或多项。
EC24)根据EC19所述的方法,其中数据访问类型的规定包括读取/写入数据访问类型指示、主读数据访问类型指示、主写数据访问类型指示和瞬态数据访问类型指示中的两项或多项。
EC25)根据EC19所述的方法,其中数据访问类型的规定包括瞬态数据访问类型指示。
EC26)根据EC25所述的方法,
其中标准命令是写入命令并且非标准修改符包括瞬态数据访问类型指示,并且进一步包括:
非易失性地存储写入命令的数据;以及
响应于确定由通过写入命令存储的数据是否被回收并根据非标准修改符,整理通过写入命令存储的数据。
EC27)根据EC26所述的方法,进一步包括:
在整理之后响应于通过写入命令存储的数据的读取,返回通过写入命令存储的数据被整理的指示。
EC28)根据EC26所述的方法,进一步包括:
响应于通过写入命令存储的数据的读取,可选地返回通过写入命令存储的数据被整理的指示,或通过写入命令存储的数据。
EC29)根据EC27或EC28中任一项所述的方法,进一步包括:
响应于读取,返回通过写入命令存储的数据被整理的指示作为非数据响应。
EC30)根据EC27或EC28中任一项所述的方法,进一步包括:
响应于读取,返回通过写入命令存储的数据被整理的指示作为返回的数据中的特定模式。
EC31)根据EC19所述的方法,其中数据访问类型的规定包括只读数据访问类型指示。
EC32)根据EC31所述的方法,
其中标准命令是第一写入命令并且非标准修改符包括只读数据访问类型指示,并且进一步包括:
根据第一写入命令的逻辑块地址(LBA)非易失性地存储第一写入命令的数据;并且
响应于试图写入至第一写入命令的LBA的后续写入命令,返回错误指示。
EC33)根据EC19所述的方法,其中数据序列顺序的规定包括原子序列的指示。
EC34)根据EC19所述的方法,其中数据序列顺序的规定包括顺序序列的指示,以及原子序列的指示中的一项或多项。
EC35)根据EC19所述的方法,进一步包括:
使数据关系与标准命令的数据相关联。
EC36)根据EC35所述的方法,进一步包括:
非易失性地存储数据关系和标准命令的数据。
EC37)根据EC36所述的方法,其中标准命令是第一标准命令,并且进一步包括:
随后使数据关系与后续标准命令的数据相关联。
EC38)根据EC37所述的方法,进一步包括:
根据数据关系检索数据。
EC39)根据EC19所述的方法,其中数据目的地的规定指定多个数据频带中的一个。
EC40)根据EC39所述的方法,其中数据频带包括热频带和冷频带。
EC41)根据EC19所述的方法,其中命令关系的规定包括命令优先级。
EC42)根据EC19所述的方法,其中命令关系的规定包括命令排序依赖性。
EC43)根据EC42所述的方法,其中命令排序依赖性是命令隔层。
EC44)根据EC2所述的方法,其中标准命令是两个或多个标准命令序列。
EC45)根据EC2所述的方法,
其中模式设置命令是第一模式设置命令;并且
进一步包括在接收标准命令之后,接收包括规定的第二模式设置命令以禁用非标准修改符。
EC46)一种方法,包括:
在I/O设备处经由外部接口接收命令;
确定命令的类型;
如果命令的类型是读取命令,则访问映射以转换命令的逻辑块地址(LBA)以获得选择性地包括非易失性存储器(NVM)中的位置的转换LBA信息;
如果命令的类型是预映射读取命令,则从预映射读取命令的信息确定NVM中的位置且不使用映射;
返回与NVM中的位置对应的数据;并且
其中预映射读取命令的信息包括转换的LBA信息的至少一部分。
EC47)根据EC46所述的方法,其中转换的LBA信息选择性地包括NVM中的位置或命令的LBA不存在于NVM中的指示。
EC48)根据EC46所述的方法,其中转换的LBA信息选择性地包括NVM的一个或多个读取单元的第一个读取单元的地址和读取单元的长度。
EC49)根据EC48所述的方法,其中一个或多个读取单元的每一个的大小至少为512字节。
EC50)根据EC46所述的方法,进一步包括:
访问映射的影子副本以转换LBA以获得转换的LBA信息的至少一部分;以及
将包括转换的LBA信息的至少一部分的预映射读取命令发送至I/O设备。
EC51)根据EC50所述的方法,其中访问在计算主机处进行。
EC52)根据EC50所述的方法,其中映射的影子副本包括多个条目,并且条目的每一个包括有效性的指示。
EC53)根据EC52所述的方法,
其中LBA是多个逻辑块地址(LBA)中的一个;
其中转换LBA信息是多个转换LBA信息中的一个;并且
其中映射的影子副本的有效条目的每一个使LBA的一个或多个与多个转换LBA信息的各个相关联。
EC54)根据EC53所述的方法,其中映射的影子副本的有效条目的每一个包括多个转换的LBA信息的相应一个的至少一部分。
EC55)根据EC53所述的方法,其中映射的影子副本的有效条目的至少一个选择性地指定与有效条目的至少一个相关联的LBA不存在于NVM中。
EC56)根据EC55所述的方法,其中与有效条目的至少一个相关联的LBA被整理。
EC57)根据EC52所述的方法,
其中NVM中的位置是NVM中的多个位置中的一个;并且
其中映射的影子副本的有效条目的每一个选择性地指定NVM中的相应位置。
EC58)根据EC57所述的方法,其中映射的影子副本的有效条目的每一个选择性地指定与条目相关联的数据不存在于NVM中。
EC59)根据EC52所述的方法,进一步包括:
最初将映射的影子副本的所有条目标记为无效。
EC60)根据EC52所述的方法,进一步包括:
响应于将写入命令发送至I/O设备,将与写入命令的逻辑块地址(LBA)相关联的映射的影子副本的条目标记为无效。
EC61)根据EC60所述的方法,进一步包括:
在I/O设备处经由外部接口接收写入命令;并且在接收写入命令之后,发送与写入命令的LBA对应的影子映射更新。
EC62)根据EC61所述的方法,进一步包括:
根据影子映射更新来更新映射的影子副本;并且
其中所述更新将与写入命令的LBA相关联的映射的影子副本的条目标记为有效。
EC63)根据EC62所述的方法,其中所述更新通过I/O设备进行。
EC64)根据EC50所述的方法,进一步包括:
将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中。
EC65)根据EC64所述的方法,进一步包括:
将映射的影子副本的更新从I/O设备发送至计算主机。
EC66)根据EC64所述的方法,其中计算主机的存储器包括计算主机的主存储器。
EC67)根据EC64所述的方法,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC68)根据EC67所述的方法,其中计算主机的存储器可由在PCIe地址空间中的I/O设备访问。
EC69)根据EC64所述的方法,其中映射非易失性地存储在NVM中。
EC70)根据EC69所述的方法,其中计算主机的存储器包括易失性存储器。
EC71)根据EC46所述的方法,其中映射包括二级映射。
EC72)根据EC71所述的方法,
其中映射包括第一级和第二级;并且
其中映射的影子副本对应于映射的第二级。
EC73)一种方法,包括:
在I/O设备处经由外部接口接收写入命令;
将写入命令的数据写入非易失性存储器(NVM)中的位置;
存储写入命令的逻辑块地址(LBA)与映射中NVM中的位置之间的关联性;以及
将包括根据NVM中的位置的信息的更新发送至映射的影子副本。
EC74)根据EC73所述的方法,其中映射包括二级映射。
EC75)根据EC74所述的方法,
其中映射包括第一级和第二级;并且
其中映射的影子副本对应于映射的第二级。
EC76)根据EC73所述的方法,其中根据NVM中的位置的信息包括NVM的一个或多个读取单元的第一个读取单元的地址和读取单元的长度。
EC77)根据EC73所述的方法,进一步包括:
将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中。
EC78)根据EC77所述的方法,进一步包括:
将映射的影子副本的更新从I/O设备发送至计算主机。
EC79)根据EC77所述的方法,其中计算主机的存储器包括计算主机的主存储器。
EC80)根据EC77所述的方法,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC81)根据EC80所述的方法,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC82)根据EC80所述的方法,进一步包括:
将映射的影子副本的更新从I/O设备发送至计算主机的I/O空间存储器。
EC83)根据EC82所述的方法,其中发送更新包括发送PCIe写入请求。
EC84)根据EC82所述的方法,其中发送更新包括映射的影子副本的读取-修改-写入。
EC85)根据EC82所述的方法,进一步包括:
在I/O设备执行读取命令之前,从映射的影子副本中提取读取命令的逻辑块地址(LBA)的转换。
EC86)根据EC85所述的方法,其中提取通过I/O设备进行。
EC87)根据EC86所述的方法,其中提取包括发送PCIe读取请求。
EC88)根据EC85所述的方法,其中提取通过计算主机进行并且读取命令是预映射读取命令。
EC89)根据EC77所述的方法,其中映射非易失性地存储在NVM中。
EC90)根据EC89所述的方法,其中计算主机的存储器包括易失性存储器。
EC91)一种方法,包括:
初始化I/O设备的映射的影子副本,使得映射的影子副本的多个条目的全部被标记为无效;
从I/O设备接收映射的影子副本的更新;
根据映射的影子副本的更新,将映射的影子副本的条目中的至少一个标记为有效。
EC92)根据EC91所述的方法,其中根据更新标记进一步包括使更新的转换的逻辑块地址(LBA)信息与条目中的至少一个相关联。
EC93)根据EC92所述的方法,其中转换的LBA信息包括I/O设备的非易失性存储器(NVM)中的位置。
EC94)根据EC91所述的方法,其中映射的影子副本的条目的每一个选择性地使I/O设备的至少一个逻辑块地址(LBA)与I/O设备的非易失性存储器(NVM)中的位置相关联。
EC95)根据EC91所述的方法,其中I/O设备的映射包括二级映射。
EC96)根据EC95所述的方法,
其中I/O设备的映射包括第一级和第二级;并且
其中映射的影子副本对应于I/O设备的映射的第二级。
EC97)根据EC91所述的方法,进一步包括:
将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中。
EC98)根据EC97所述的方法,进一步包括:
将映射的影子副本的更新从I/O设备发送至计算主机。
EC99)根据EC97所述的方法,其中计算主机的存储器包括计算主机的主存储器。
EC100)根据EC97所述的方法,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC101)根据EC100所述的方法,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC102)根据EC100所述的方法,进一步包括:
将映射的影子副本的更新从I/O设备发送至计算主机的I/O空间存储器。
EC103)根据EC102所述的方法,其中发送更新包括发送PCIe写入请求。
EC104)根据EC102所述的方法,其中发送更新包括映射的影子副本的读取-修改-写入。
EC105)根据EC102所述的方法,进一步包括:
在I/O设备执行读取命令之前,从映射的影子副本中提取读取命令的逻辑块地址(LBA)的转换。
EC106)根据EC105所述的方法,其中提取通过I/O设备进行。
EC107)根据EC106所述的方法,其中提取包括发送PCIe读取请求。
EC108)根据EC105所述的方法,其中提取通过计算主机进行并且读取命令是预映射读取命令。
EC109)根据EC97所述的方法,其中映射非易失性地存储在I/O设备的非易失性存储器(NVM)中。
EC110)根据EC109所述的方法,其中计算主机的存储器包括易失性存储器。
EC111)一种方法,包括:
确定I/O设备的请求是否是读取请求,所述I/O设备具有映射,所述映射具有多个条目,映射的条目中的至少一些的每一个将I/O设备的各逻辑块地址(LBA)映射到选择性地包括I/O设备的非易失性存储器(NVM)中的位置的各转换LBA信息,并且映射的影子副本具有对应的多个条目;
如果请求是读取请求,则确定与读取请求的LBA相关联的映射的影子副本的条目中的特定条目是否有效;并且
如果特定条目有效,则选择性地将包括根据特定条目的相应的转换的LBA信息的至少一部分的预映射读取命令发送至I/O设备。
EC112)根据EC111所述的方法,
其中映射的影子副本的条目的每一个对应于映射的相应的条目;
其中映射的条目中的至少一些的每一个包括通过各LBA映射至此的相应的转换后的LBA信息;并且
其中与映射的条目中的至少一些的一个对应的映射的影子副本的条目的每一个包括各转换的LBA信息的至少一部分。
EC113)根据EC111所述的方法,其中映射的多个条目是第二级映射。
EC114)根据EC113所述的方法,其中I/O设备进一步具有第一级映射。
EC115)根据EC111所述的方法,其中相应的转换LBA信息的至少一部分选择性地包括NVM中的位置或相应的LBA不存在于NVM中的指示。
EC116)根据EC115所述的方法,其中选择性地发送包括确定根据特定条目的相应转换的LBA信息的至少一部分是否指示读取请求的LBA不存在于NVM中。
EC117)根据EC116所述的方法,其中选择性地发送进一步包括,如果根据特定条目的相应转换LBA信息的至少一部分指示读取请求的LBA存在于NVM中,则仅将预映射读取命令发送至I/O设备。
EC118)根据EC117所述的方法,其中如果读取请求的LBA被整理,则根据特定条目的相应转换的LBA信息的至少一部分指示读取请求的LBA不存在于NVM中。
EC119)根据EC111所述的方法,其中相应的转换的LBA信息的至少一部分选择性地包括NVM的一个或多个读取单元的第一个读取单元的地址和读取单元的长度。
EC120)根据EC119所述的方法,其中一个或多个读取单元的每一个的大小至少为512字节。
EC121)根据EC111所述的方法,进一步包括:
如果特定条目无效,则将包括读取请求的LBA的标准读取命令发送至I/O设备。
EC122)根据EC111所述的方法,进一步包括:
如果请求是写入请求,则将与写入请求相关联的映射的影子副本的条目中的一个标记为无效。
EC123)根据EC111所述的方法,其中映射的影子副本的每个条目包括有效性指示和来自映射的对应条目的至少一些内容的副本。
EC124)根据EC123所述的方法,其中如果特定条目有效,则来自映射中的对应条目的至少一些内容的副本与来自映射的对应条目的至少一些内容相同。
EC125)根据EC123所述的方法,其中映射的影子副本的有效条目是映射的有效条目的子集。
EC126)根据EC125所述的方法,所述子集是真子集。
EC127)根据EC111所述的方法,其中映射的影子副本的条目的每一个无效或包括根据映射的对应条目的信息。
EC128)根据EC111所述的方法,其中I/O设备的映射包括二级映射。
EC129)根据EC128所述的方法,
其中I/O设备的映射包括第一级和第二级;并且
其中映射的影子副本对应于I/O设备的映射的第二级。
EC130)根据EC111所述的方法,其中映射的影子副本的条目的每一个包括有效性的指示。
EC131)根据EC130所述的方法,其中映射的影子副本的有效条目的每一个选择性地使LBA的相应的一个或多个与NVM中的相应位置相关联。
EC132)根据EC131所述的方法,其中映射的影子副本的有效条目的至少一个指定与有效条目的至少一个相关联的相应的LBA的至少一个不存在于NVM中。
EC133)根据EC132所述的方法,其中与有效条目的至少一个相关联的各LBA的至少一个被整理。
EC134)根据EC130所述的方法,其中映射的影子副本的有效条目的每一个选择性地指定NVM中的各位置。
EC135)根据EC130所述的方法,进一步包括:
最初将映射的影子副本的所有条目标记为无效。
EC136)根据EC111所述的方法,进一步包括:
将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中。
EC137)根据EC136所述的方法,进一步包括:
从I/O设备接收映射的影子副本的更新。
EC138)根据EC136所述的方法,其中计算主机的存储器包括计算主机的主存储器。
EC139)根据EC136所述的方法,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC140)根据EC139所述的方法,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC141)根据EC139所述的方法,进一步包括:
将映射的影子副本的更新从I/O设备发送至计算主机的I/O空间存储器。
EC142)根据EC141所述的方法,其中发送更新包括发送PCIe写入请求。
EC143)根据EC141所述的方法,其中发送更新包括映射的影子副本的读取-修改-写入。
EC144)根据EC141所述的方法,进一步包括:
在I/O设备执行特定命令之前,从映射的影子副本中提取特定命令的LBA的转换。
EC145)根据EC144所述的方法,其中提取通过I/O设备进行。
EC146)根据EC145所述的方法,其中提取包括发送PCIe读取请求。
EC147)根据EC144所述的方法,其中提取通过计算主机进行。
EC148)根据EC147所述的方法,其中特定命令是预映射读取命令。
EC149)根据EC136所述的方法,其中映射非易失性地存储在NVM中。
EC150)根据EC149所述的方法,其中计算主机的存储器包括易失性存储器。
EC151)一种方法,包括:
在I/O设备处接收指示以进入低功率状态;
将I/O设备的内部状态保存在计算主机的系统可访问存储器中;
在I/O设备处接收指示以退出低功率状态;以及
从系统可访问存储器恢复I/O设备的内部状态。
EC152)根据EC151所述的方法,其中计算主机的系统可访问存储器包括计算主机的主存储器。
EC153)根据EC151所述的方法,其中计算主机的系统可访问存储器包括计算主机的I/O空间存储器。
EC154)根据EC153所述的方法,其中计算主机的系统可由PCIe地址空间中的I/O设备访问。
EC155)一种系统,包括:
与计算主机耦接的I/O设备;
选择性地使I/O设备的逻辑块地址(LBA)与I/O设备的非易失性存储器(NVM)中的位置相关联的I/O设备的映射;
计算主机的存储器中的映射的影子副本;并且
其中针对I/O设备的至少一些操作被启用为访问映射的影子副本以确定I/O设备的NVM中的位置。
EC156)根据EC155所述的系统,其中至少一些操作不能够访问映射。
EC157)根据EC155所述的系统,
其中映射的影子副本包括多个条目,每一个条目与LBA的相应一个相关联,并且每一个条目包括有效性的指示;并且
其中映射的影子副本的有效条目的至少一个选择性地指定与有效条目的至少一个相关联的各LBA不存在于NVM中。
EC158)根据EC157所述的系统,其中与有效条目的至少一个相关联的LBA被整理。
EC159)根据EC155所述的系统,其中计算主机的存储器包括计算主机的主存储器。
EC160)根据EC155所述的系统,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC161)根据EC160所述的系统,其中计算主机的I/O空间存储器可由PCIe地址空间中的I/O设备访问。
EC162)根据EC161所述的系统,进一步包括:
I/O卡,其包括I/O设备和计算主机的I/O空间存储器。
EC163)根据EC162所述的系统,其中I/O设备是I/O卡上的多个I/O设备中的第一个,计算主机的I/O空间存储器在多个I/O设备之间共享。
EC164)根据EC162所述的系统,其中I/O卡包括计算主机的存储器。
EC165)根据EC162所述的系统,
其中I/O卡包括交换机;并且
其中I/O设备和计算主机的存储器分别与交换机耦接。
EC166)根据EC165所述的系统,
其中I/O设备是多个I/O设备中的第一个;并且
其中I/O设备的每一个与交换机耦接。
EC167)根据EC165所述的系统,其中计算主机的存储器与交换机直接耦接。
EC168)根据EC155所述的系统,其中映射与I/O设备直接耦接。
EC169)根据EC155所述的系统,其中映射存储在NVM中。
EC170)根据EC155所述的系统,其中映射的影子副本不与I/O设备直接耦接。
EC171)根据EC155所述的系统,其中映射包括二级映射。
EC172)根据EC171所述的系统,
其中映射包括第一级和第二级;并且
其中映射的影子副本对应于映射的第二级。
EC173)根据EC155所述的系统,其中映射非易失性地存储在NVM中。
EC174)根据EC173所述的系统,其中计算主机的存储器包括易失性存储器。
EC175)一种系统,包括:
与计算主机耦接的I/O设备;
可由计算主机访问的存储器,所述存储器可由不与I/O设备直接耦接的计算主机访问;并且
其中I/O设备的状态存储在可由计算主机访问的存储器中。
EC176)根据EC175所述的系统,进一步包括:
选择性地使I/O设备的逻辑块地址(LBA)与I/O设备的非易失性存储器(NVM)中的位置相关联的I/O设备的映射;
其中存储在可由计算主机访问的存储器中的I/O设备的状态包括存储在可由计算主机访问的存储器中的映射的影子副本;并且
其中映射非易失性地存储在NVM中。
EC177)根据EC176所述的系统,
其中映射的影子副本包括多个条目,每一个条目与LBA的相应一个相关联,并且每一个条目包括有效性的指示;并且
其中映射的影子副本的有效条目的至少一个选择性地指定与有效条目的至少一个相关联的各LBA不存在于NVM中。
EC178)根据EC175所述的系统,其中可由计算主机访问的存储器包括计算主机的主存储器。
EC179)根据EC175所述的系统,其中可由计算主机访问的存储器包括计算主机的I/O空间存储器。
EC180)根据EC179所述的系统,其中计算主机的I/O空间存储器可由PCIe地址空间中的I/O设备访问。
EC181)根据EC175所述的系统,其中存储在可由计算主机访问的存储器中的I/O设备的状态包括I/O设备的内部状态。
EC182)根据EC181所述的系统,其中I/O设备的内部状态包括当I/O设备进入低功率状态时丢失的状态。
EC183)根据EC182所述的系统,其中,响应于进入低功率状态的请求,I/O设备被启用为存储当I/O设备在可由计算主机访问的存储器中进入低功率状态时丢失的状态。
EC184)根据EC175所述的系统,其中可由计算主机访问的存储器包括易失性存储器。
EC185)一种方法,包括:
接收命令以访问存储器,所述命令指定访问类型并具有一个或多个参数;
确定存储器的位置;并且
其中所述确定包括有条件地引用所包括的数据结构以确定位置,当参数的一个或多个包括位置的规定时,省略所述引用。
EC186)根据EC185所述的方法,其中规定包括以下各项中的一项或多项:
存储器的区域的识别,
存储器的物理地址的识别,
存储器的数据的长度,以及
存储器的数据的跨度。
EC187)根据EC185所述的方法,其中所包括的数据结构包括分别描述与一个或多个逻辑块地址(LBA)相关联的数据位于存储器中的位置的一个或多个条目。
EC188)根据EC187所述的方法,其中每一个条目进一步选择性地描述与相应LBA相关联的一个或多个属性。
EC189)根据EC187所述的方法,其中每一个条目进一步描述与存储器的一个或多个区域相关联的一个或多个属性。
EC190)根据EC185所述的方法,进一步包括在接收之前提供描述对所包括的数据结构的修改的更新。
EC191)根据EC190所述的方法,其中命令由计算主机提供,并且为计算主机提供更新。
EC192)根据EC190所述的方法,其中更新包括位置的规定。
EC193)根据EC192所述的方法,其中命令符合逻辑块地址(LBA)并且所述提供响应于处理至LBA的写入命令。
EC194)根据EC192所述的方法,其中所述提供响应于回收和/或重新定位实现存储器的至少一些的非易失性存储器(NVM)的一个或多个部分。
EC195)根据EC185所述的方法,其中所述接收和所述确定经由I/O存储设备进行。
EC196)根据EC185所述的方法,其中命令由计算主机提供。
EC197)根据EC185所述的方法,其中参数包括标准参照和非标准参数,所述标准参数有标准限定,所述非标准参数不由标准限定,并且所述非标准参数包括具有规定的参数。
EC198)根据EC185所述的方法,其中命令由标准限定并且包括规定的参数不由标准限定。
EC199)根据EC197或EC198所述的方法,其中包括规定的参数包括以下各项中的一项或多项:
预留命令代码,
供应商特定参数,
预留字段,
未使用的字段,以及
功能寄存器中的值。
EC200)根据EC185所述的方法,进一步包括根据访问类型和位置执行存储的访问。
EC201)根据EC200所述的方法,其中访问类型是读取访问类型并且访问是读取访问。
EC202)根据EC201所述的方法,其中参数包括规定。
EC203)根据EC202所述的方法,其中命令是预映射读取命令。
EC204)根据EC185所述的方法,其中位置是第一位置并且进一步包括根据访问类型和第二位置执行存储的访问。
EC205)根据EC204所述的方法,其中访问类型是写入访问类型并且访问是写入访问。
EC206)根据EC205所述的方法,进一步包括提供描述对所包括的数据结构的修改的更新,所述更新包括第二位置的规定。
EC207)根据EC205所述的方法,进一步包括根据规定修订存储的使用率的衡算。
EC208)根据EC185所述的方法,其中命令是整理命令并且访问类型是整理访问类型。
EC209)根据EC208所述的方法,进一步包括提供描述对所包括的数据结构的修改的更新,所述更新包括在接收命令之前映射至位置的逻辑块地址(LBA)的属性的规定。
EC210)根据EC209所述的方法,其中属性指示LBA已经被整理。
EC211)根据EC208所述的方法,进一步包括根据规定修订存储的使用率的衡算。
EC212)一种方法,包括:
接收命令,所述命令是多个命令类型中的一个,所述命令类型包括第一类型和第二类型;
确定命令是哪一个命令类型;
如果命令是第一类型,则执行第一处理,然后执行第二处理;
如果命令是第二类型,则执行第二处理,而无需执行第一处理;
其中如果命令是第一类型,则第二处理使用由第一处理产生的信息,如果命令是第二类型,则其使用由所述命令提供的信息。
EC213)根据EC212所述的方法,其中命令是访问I/O存储设备的存储器。
EC214)根据EC213所述的方法,其中第一处理包括访问所包括的数据结构以产生信息。
EC215)根据EC214所述的方法,其中所包括的数据结构是描述实现存储器的至少一些的非易失性存储器(NVM)的逻辑块地址(LBA)与物理地址之间的映射处理的映射,并且所述信息包括映射之一的至少一部分。
EC216)根据EC215所述的方法,其中第一类型的命令指定LBA中的至少一个。
EC217)根据EC216所述的方法,其中第二类型的命令不指定LBA中的任意一个。
EC218)根据EC214所述的方法,进一步包括在接收之前提供描述对所包括的数据结构的修改的更新。
EC219)根据EC218所述的方法,其中更新包括信息的规定。
EC220)根据EC219所述的方法,其中规定包括以下各项中的一项或多项:
存储器的区域的识别,
存储器的物理地址的识别,
存储器的数据的长度,以及
存储器的数据的跨度。
EC221)根据EC219所述的方法,其中所述提供响应于接收命令类型的写入命令类型。
EC222)根据EC219所述的方法,其中所述提供响应于回收和/或重新定位实现存储的至少一些的非易失性存储器(NVM)的一部分。
EC223)根据EC218所述的方法,其中命令由计算主机提供,并且为计算主机提供更新。
EC224)根据EC213所述的方法,其中所述接收,所述确定,和执行的两个动作经由I/O存储设备进行。
EC225)根据EC213所述的方法,其中命令由计算主机提供.
EC226)根据EC212所述的方法,其中第一类型的命令由标准限定并且第二类型的命令不由标准限定。
EC227)根据EC212所述的方法,其中当命令是第二类型时,经由以下各项中的一项或多项提供信息:
预留命令代码,
供应商特定参数,
预留字段,
未使用的字段,以及
功能寄存器中的值。
EC228)根据EC214所述的方法,其中第一类型包括读取类型并且第二类型包括预映射读取类型。
EC229)根据EC228所述的方法,其中存储器的访问是读取访问,信息包括存储器的位置,并且第二处理包括读取所述位置。
EC230)根据EC214所述的方法,其中第一类型包括第一写入类型,第二类型包括第二写入类型,并且第二写入类型提供信息而第一写入类型不提供。
EC231)根据EC230所述的方法,其中存储器的访问是写入访问,信息包括存储器的第一位置,并且第二处理包括写入存储器的第二位置并根据第一位置修订存储器的使用率的衡算。
EC232)根据EC231所述的方法,进一步包括提供描述对所包括的数据结构的修改的更新,所述更新包括第二位置的规定。
EC233)根据EC214所述的方法,其中第一类型包括第一整理类型,第二类型包括第二整理类型,并且第二整理类型提供信息而第一整理类型不提供。
EC234)根据EC233所述的方法,其中存储器的访问是整理访问,信息包括存储器的位置,并且第二处理包括根据所述位置修订存储器的使用率的衡算。
EC235)根据EC234所述的方法,进一步包括提供描述对所包括的数据结构的修改的更新,所述更新包括在接收命令之前根据所包括的数据结构映射至位置的逻辑块地址(LBA)的属性的规定。
EC236)根据EC235所述的方法,其中属性指示LBA已经被整理。
EC237)一种方法,包括:
从计算主机接收命令,所述命令包括零个或多个标准参数和一个或多个非标准参数;
根据标准参数执行命令;并且
其中所述接收和所述执行经由I/O存储设备进行,所述I/O存储设备被启用为使用非标准参数操作,其比没有利用非标准参数的效率更高。
EC238)根据EC237所述的方法,其中I/O存储设备使存储器与计算主机交互连接。
EC239)根据EC237所述的方法,其中I/O存储设备被启用为使用非标准参数执行命令,其比没有利用非标准参数的效率更高。
EC240)根据EC239所述的方法,进一步包括管理实现I/O存储设备的存储器的至少一部分的非易失性存储器(NVM)。
EC241)根据EC240所述的方法,其中命令是读取命令并且非标准参数中的一个或多个至少部分指定NVM中的物理位置,并且进一步包括读取物理位置。
EC242)根据EC241所述的方法,进一步包括I/O存储设备对所包括的I/O设备映射执行映射更新并向计算主机提供映射更新的至少一些以允许计算主机更新计算主机映射,所述计算主机映射和所述I/O设备映射分别具有描述NVM的逻辑块地址(LBA)与位置之间的映射处理的各条目,非标准参数中的至少一个至少部分经由计算主机映射确定。
EC243)根据EC242所述的方法,其中访问计算主机映射的延迟小于访问I/O设备映射的延迟,并且较高的效率包括较低的延迟。
EC244)根据EC240所述的方法,其中命令是写入命令并且非标准参数中的一个或多个至少部分指定NVM中的第一物理物质,并且进一步包括写入NVM中的第二物理位置并根据第一物理位置修订存储的使用率的衡算。
EC245)根据EC244所述的方法,进一步包括I/O存储设备对所包括的I/O设备映射执行映射更新并向计算主机提供映射更新的至少一些以允许计算主机更新计算主机映射,所述计算主机映射和所述I/O设备映射分别具有描述NVM的逻辑块地址(LBA)与位置之间的映射处理的相应条目,非标准参数中的至少一个至少部分经由计算主机映射确定。
EC246)根据EC245所述的方法,其中访问计算主机映射的延迟小于访问I/O设备映射的延迟,并且较高的效率包括较低的延迟。
EC247)根据EC237所述的方法,其中命令是第一命令,并且I/O存储设备被启用为根据非标准参数执行在第一命令之后接收的第二命令,其比没有利用非标准参数的效率更高。
EC248)根据EC247所述的方法,进一步包括管理实现I/O存储设备的存储器的至少一部分的非易失性存储器(NVM)。
EC249)根据EC248所述的方法,进一步包括I/O存储设备管理具有描述NVM的逻辑块地址(LBA)与位置之间的映射处理的条目的所包括的映射。
EC250)根据EC249所述的方法,其中标准参数中的一个或多个的至少一部分包括特定LBA并进一步包括I/O存储设备将从非标准参数确定的至少一些信息存储在条目中的至少所选条目中,所选条目至少部分由特定LBA选择。
EC251)根据EC250所述的方法,其中第二命令符合特定LBA。
EC252)根据EC250所述的方法,其中信息包括多个数据频带中的特定数据频带的识别,并且进一步包括I/O存储设备回收NVM的特定LBA映射至此的部分以保留在特定数据频带中。
EC253)根据EC248所述的方法,其中非标准参数中的至少一个或多个至少部分指定多个类型的数据中的一个,所述类型的数据包括以下各项中的一项或多项:
可压缩类型的数据,
不可压缩类型的数据,以及
使用模式类型的数据。
EC254)根据EC253所述的方法,其中使用模式类型的数据包括数据库日志类型的数据,并且进一步包括I/O存储设备管理NVM以将与数据库日志类型的数据相关联的数据存储在多个数据频带的数据库日志数据频带中,并且I/O存储设备管理数据库日志数据频带使得当数据库日志频带中的数据量超过阈值时,选择性地删除数据库日志频带的较旧数据。
EC255)根据EC254所述的方法,进一步包括当回收较旧数据时删除较旧数据。
EC256)根据EC248所述的方法,其中非标准参数中的至少一个或多个至少部分指定多个数据访问类型中的一个,所述数据访问类型包括以下各项中的任意两项或多项:
读取/写入数据访问类型,
主读数据访问类型,
主写数据访问类型,以及
瞬态数据访问类型。
EC257)根据EC256所述的方法,其中第二命令是写入命令,并且进一步包括I/O存储设备响应于写入命令写入NVM的特定部分,特定部分至少部分由数据访问类型确定。
EC258)根据EC257所述的方法,其中数据访问类型是读入/写入数据访问类型,并且特定部分尚未经受相对多的编程/擦除循环并且尚未经受相对少的编程/擦除循环。
EC259)根据EC257所述的方法,其中数据访问类型是主读数据访问类型,并且特定部分经受了相对多的编程/擦除循环。
EC260)根据EC257所述的方法,其中数据访问类型是主写数据访问类型,并且特定部分经受了相对少的编程/擦除循环。
EC261)根据EC258、EC259或EC260所述的方法,其中较高的效率包括较高的可靠性。
EC262)根据EC258、EC259或EC260所述的方法,其中较高的效率包括较长的使用期限。
EC263)根据EC256所述的方法,其中标准参数中的一个或多个的至少一部分包括特定LBA并且数据访问类型是瞬态数据访问类型,并且进一步包括I/O存储设备,响应于特定事件,删除存储在与特定LBA对应的NVM中的位置的数据。
EC264)根据EC263所述的方法,其中删除数据包括根据特定LBA以映射的条目更新I/O存储设备的映射以指定与特定LBA对应的数据不存在于NVM中。
EC265)根据EC263所述的方法,其中删除数据包括整理数据。
EC266)根据EC263所述的方法,其中特定事件是以下各项中的一项或多项:
I/O存储设备的NVM管理操作,
I/O存储设备的NVM回收操作,
I/O存储设备的重启,
I/O存储设备的复位,
虚拟I/O存储设备的虚拟机器重启,
虚拟I/O存储设备的虚拟机器复位,
来自计算主机的显式请求,以及
来自memcached应用程序的请求。
EC267)根据EC248所述的方法,其中非标准参数中的至少一个或多个至少部分指定多个数据序列中的一个,所述数据序列顺序包括连续序列顺序和原子序列顺序中的任何两个或多个。
EC268)根据EC248所述的方法,其中非标准参数中的至少一个或多个至少部分指定多个数据关系中的一个,所述数据关系包括数据的多个项目与预取数据关系之间的读取和/或写入关联性中的任意两个或多个。
EC269)根据EC248所述的方法,其中非标准参数中的至少一个或多个至少部分指定多个数据目的地中的一个,所述数据目的地包括以下各项中的任意两项或多项:
NVM的特定部分,
分级存储层,
一种类型的存储器,以及
特定数据频带。
EC270)根据EC269所述的方法,其中存储的类型是以下各项中的任意一项或多项:
单级存储单元(SLC),
多级存储单元(MLC),
磁性随机存取存储器(MRAM),
易失性,以及
非易失性。
EC271)根据EC269所述的方法,其中数据目的地中的一个的规定允许改善以下各项中的一项或多项:
写入速度,
回收速度,
回收频率,以及
写入放大率。
EC272)根据EC248所述的方法,其中非标准参数中的至少一个或多个至少部分指定多个命令处理特征中的一个,所述命令处理特征包括以下各项中的任意两项或多项:
命令优先级,
命令排序,
特定类型的命令的隔层,
特定类型的命令的边界,
命令的集合,
命令的融合,以及
命令的原子操作。
EC273)根据EC239或EC247所述的方法,其中较高的效率包括较高的性能。
EC274)根据EC273所述的方法,其中更高的性能包括以下各项中的一项或多项:
较高的带宽,
较低的延迟,以及
较低的功率。
EC275)根据EC239或EC247所述的方法,其中较高的功率包括较高的可靠性。
EC276)根据EC275所述的方法,其中较高的可靠性包括较低错误率和较长的使用期限中的一个或多个。
EC277)一种方法,包括:
从计算主机接收命令,所述命令请求返回非标准统计值;
将非标准统计值返回计算主机,并且
其中所述接收和所述返回经由被启用为计算非标准统计的I/O存储设备进行。
EC278)根据EC277所述的方法,进一步包括减小待写入至实现I/O存储设备的存储的至少一部分的非易失性存储器(NVM)的数据的大小;并且其中计算至少部分基于所述减小。
EC279)根据EC278所述的方法,其中所述减小包括压缩。
EC280)根据EC278所述的方法,其中所述减小包括数据重复删除。
EC281)根据EC278所述的方法,其中非标准统计符合NVM的使用。
EC282)根据EC281所述的方法,其中NVM的使用根据减小质量改变。
EC283)根据EC281所述的方法,其中NVM的使用根据从计算主机接收的整理命令的数量和/或大小改变。
EC284)根据EC281所述的方法,其中NVM的使用根据从计算主机接收的瞬态数据的量改变。
EC285)根据EC284所述的方法,其中NVM的使用根据由I/O存储设备整理的瞬态数据的量改变。
EC286)根据EC281所述的方法,其中非标准统计符合NVM的使用百分比。
EC287)根据EC281所述的方法,其中非标准统计符合I/O存储设备的写入放大率。
EC288)根据EC278所述的方法,其中非标准统计是NVM的一个或多个频带的大小。
EC289)根据EC278所述的方法,其中非标准统计是NVM的一个或多个频带的使用。
EC290)根据EC289所述的方法,其中NVM的一个或多个频带的使用根据减小质量改变。
EC291)根据EC195、EC213、EC238或EC277所述的方法,其中I/O存储设备包括被启用为执行命令的接收的固态磁盘(SSD)控制器。
EC292)根据EC291所述的方法,其中SSD控制器在单个集成电路(IC)中实现。
EC293)根据EC292所述的方法,其中存储器的至少一部分经由非易失性存储器(NVM)实现。
EC294)根据EC293所述的方法,其中NVM包括一个或多个闪存。
EC295)根据EC293所述的方法,其中NVM的至少一部分包括以下各项中的一项或多项:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC296)根据EC293所述的方法,其中NVM的至少一部分包括以下各项中的一项或多项:
单级存储单元(SLC)闪存技术存储单元,以及
多级存储单元(MLC)闪存技术存储单元。
EC297)根据EC293所述的方法,其中SSD控制器包括被启用为与NVM传递数据的NVM接口,数据的至少一些与命令的至少一些相关联。
EC298)根据EC297所述的方法,其中NVM接口与以下各项中的一项或多项兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
同步接口,以及
异步接口。
EC299)根据EC293所述的方法,其中SSD控制器和NVM包括在SSD中。
EC300)根据EC291所述的方法,其中SSD控制器包括与存储接口标准兼容并被启用为耦接至经由存储接口提供命令的计算主机的存储接口。
EC301)根据EC300所述的方法,进一步包括操作计算主机以提供命令。
EC302)一种方法,包括:
在I/O设备处经由外部接口从计算主机接收命令;
确定命令的类型;
响应于所述类型是读取命令,则访问映射以转换命令的逻辑块地址(LBA)以获得选择性地包括非易失性存储器(NVM)中的位置的转换LBA信息;
响应于所述类型是预映射读取命令,则从预映射读取命令的信息确定NVM中的位置且不使用映射;
返回与位置对应的数据;并且
其中信息包括转换LBA信息的至少一部分。
EC303)根据EC302所述的方法,其中所述位置是第一位置,所述信息是第一信息,并且进一步包括:响应于所述类型是写入命令:
将写入命令的数据写入NVM中的第二位置;
存储写入命令的LBA与映射中的第二位置之间的关联性;
将包括根据第二位置的第二信息的更新发送至映射的影子副本;并且
其中第一信息至少部分从影子副本获得,并且所述影子副本至少部分存储在与计算主机耦接的I/O卡的存储器设备中。
EC304)一种系统,包括:
在I/O设备处用于接收包括标准命令和非标准修改符的规定的扩展命令的构件;
用于根据非标准修改符执行标准命令的构件;并且
其中系统级性能由于使用非标准修改符以修改标准命令的执行而提高。
EC305)一种方法,包括:
在I/O设备处用于接收包括规定的模式设置命令以允许特定非标准修改符的构件;
在I/O设备处用于接收标准命令的构件;
用于根据非标准修改符执行标准命令的构件;并且
其中系统级性能由于使用非标准修改符以修改标准命令的执行而提高。
EC306)根据EC304或EC305中任一项所述的系统,进一步包括用于使非标准修改符与标准命令的数据相关联的构件。
EC307)根据EC306所述的系统,进一步包括:
用于存储非标准命令修改符的指示以便稍后利用标准命令的数据进行检索的构件。
EC308)根据EC307所述的系统,其中所述存储是非易失性的。
EC309)根据EC307所述的系统,进一步包括:
用于将非标准修改符的指示存储在映射的多个条目中的特定条目中的构件,所述特定条目通过标准命令的逻辑块地址(LBA)与标准命令的数据相关联。
EC310)根据EC307所述的系统,其中标准命令是写入命令,并且进一步包括:
构件,用于响应于指定对写入命令的数据的访问的后续读取命令,根据非标准修改符的指示修改后续读取命令的执行。
EC311)根据EC307所述的系统,其中标准命令是第一命令,并且进一步包括:
构件,响应于指定对第一命令的数据的访问的后续命令,根据非标准修改符的指示修改后续命令的执行。
EC312)根据EC311所述的系统,
其中第一命令是写入命令;
其中非标准修改符包括写入命令的数据为只读的指示;并且
其中修改后续命令的执行包括如果后续命令是标准写入命令则返回错误指示。
EC313)根据EC307所述的系统,其中标准命令是写入命令,并且进一步包括:
用于确定写入命令的数据被回收的构件;
用于访问非标准修改符的指示的构件;
用于响应于非标准修改符的指示、整理写入命令的数据的构件;并且
其中写入命令的数据被整理而不被回收。
EC314)根据EC304或EC305中任一项所述的系统,其中标准命令是读取命令。
EC315)根据EC304或EC305中任一项所述的系统,其中标准命令是读取命令或写入命令中的一个。
EC316)根据EC304或EC305中任一项所述的系统,其中标准命令是数据移动命令。
EC317)根据EC304或EC305中任一项所述的系统,其中标准命令是整理命令。
EC318)根据EC317所述的方法,其中非标准修改符可选地确定整理命令是强制的还是可选的。
EC319)根据EC304或EC305中任一项所述的系统,其中非标准修改符至少部分由标准命令的预留字段指定。
EC320)根据EC304或EC305中任一项所述的系统,其中非标准修改符至少部分由标准命令的多个地址位中的至少一些指定。
EC321)根据EC320所述的系统,其中地址位中的至少一些另外未被I/O设备使用。
EC322)根据EC304或EC305中任一项所述的系统,其中非标准修改符是以下各项中的一项或多项:
数据类型的规定;
数据访问类型的规定;
数据序列顺序的规定;
数据关系的规定;
数据目的地的规定;以及
命令关系的规定。
EC323)根据EC322所述的系统,其中数据类型的规定包括压缩性指示。
EC324)根据EC323所述的系统,其中数据类型的规定包括数据类型不可压缩的指示。
EC325)根据EC322所述的系统,其中数据类型的规定包括数据库日志类型指示。
EC326)根据EC322所述的系统,其中数据访问类型的规定包括读取/写入数据访问类型指示、主读数据访问类型指示和主写数据访问类型指示中的两项或多项。
EC327)根据EC322所述的系统,其中数据访问类型的规定包括读取/写入数据访问类型指示、主读数据访问类型指示、主写数据访问类型指示和瞬态数据访问类型指示中的两项或多项。
EC328)根据EC322所述的系统,其中数据访问类型的规定包括瞬态数据访问类型指示。
EC329)根据EC328所述的系统,
其中标准命令是写入命令并且非标准修改符包括瞬态数据访问类型指示,并且进一步包括:
用于非易失性地存储写入命令的数据的构件;以及
用于响应于确定由通过写入命令存储的数据是否被回收并根据非标准修改符、整理通过写入命令存储的数据的构件。
EC330)根据EC329所述的系统,进一步包括:
用于在整理之后响应于通过写入命令存储的数据的读取、返回通过写入命令存储的数据被整理的指示的构件。
EC331)根据EC329所述的系统,进一步包括:
用于响应于通过写入命令存储的数据的读取、可选地返回通过写入命令存储的数据被整理的指示、或通过写入命令存储的数据的构件。
EC332)根据EC330或EC331中任一项所述的系统,进一步包括:
用于响应于读取、返回通过写入命令存储的数据被整理的指示作为非数据响应的构件。
EC333)根据EC330或EC331中任一项所述的系统,进一步包括:
用于响应于读取、返回通过写入命令存储的数据被整理的指示作为返回的数据中的特定模式的构件。
EC334)根据EC322所述的系统,其中数据访问类型的规定包括只读数据访问类型指示。
EC335)根据EC334所述的系统,
其中标准命令是第一写入命令并且非标准修改符包括只读数据访问类型指示,并且进一步包括:
用于根据第一写入命令的逻辑块地址(LBA)非易失性地存储第一写入命令的数据的构件;并且
用于响应于试图写入至第一写入命令的LBA的后续写入命令,返回错误指示的构件。
EC336)根据EC322所述的系统,其中数据序列的规定包括原子序列的指示。
EC337)根据EC322所述的系统,其中数据序列顺序的规定包括连续序列顺序的指示,以及原子序列的指示中的一项或多项。
EC338)根据EC322所述的系统,进一步包括:
用于使数据关系与标准命令的数据相关联的构件。
EC339)根据EC338所述的系统,进一步包括:
用于非易失性地存储数据关系和标准命令的数据的构件。
EC340)根据EC339所述的系统,其中标准命令是第一标准命令,并且进一步包括:
用于随后使数据关系与后续标准命令的数据相关联的构件。
EC341)根据EC340所述的系统,进一步包括:
用于根据数据关系检索数据的构件。
EC342)根据EC322所述的系统,其中数据目的地的规定指定多个数据频带中的一个。
EC343)根据EC342所述的系统,其中数据频带包括热频带和冷频带。
EC344)根据EC322所述的系统,其中命令关系的规定包括命令优先级。
EC345)根据EC322所述的系统,其中命令关系的规定包括命令排序依赖。
EC346)根据EC345所述的系统,其中命令排序依赖是命令隔层。
EC347)根据EC305所述的系统,其中标准命令是两个或多个标准命令序列。
EC348)根据EC305所述的系统,
其中模式设置命令是第一模式设置命令;并且
进一步包括构件,用于在接收标准命令之后,接收包括规定的第二模式设置命令以禁用非标准修改符。
EC349)一种系统,包括:
在I/O设备处用于经由外部接口接收命令的构件;
用于确定命令的类型的构件;
构件,用于如果命令的类型是读取命令,则访问映射以转换命令的逻辑块地址(LBA)以获得选择性地包括非易失性存储器(NVM)中的位置的转换LBA信息;
构件,用于如果命令的类型是预映射读取命令,则从预映射读取命令的信息确定NVM中的位置且不使用映射;
构件,用于返回与NVM中的位置对应的数据;并且
其中预映射读取命令的信息包括转换的LBA信息的至少一部分。
EC350)根据EC349所述的系统,其中转换LBA信息选择性地包括NVM中的位置或命令的LBA不存在于NVM中的指示。
EC351)根据EC349所述的系统,其中转换LBA信息选择性地包括NVM的一个或多个读取单元的第一个读取单元的地址和读取单元的长度。
EC352)根据EC351所述的系统,其中一个或多个读取单元的每一个的大小至少为512字节。
EC353)根据EC349所述的系统,进一步包括:
用于访问映射的影子副本以转换LBA以获得转换LBA信息的至少一部分的构件;以及
用于将包括转换LBA信息的至少一部分的预映射读取命令发送至I/O设备的构件。
EC354)根据EC353所述的系统,其中访问在计算主机处进行。
EC355)根据EC353所述的系统,其中映射的影子副本包括多个条目,并且条目的每一个包括有效性的指示。
EC356)根据EC355所述的系统,
其中LBA是多个逻辑块地址(LBA)中的一个;
其中转换的LBA信息是多个转换的LBA信息中的一个;并且
其中映射的影子副本的有效条目的每一个使LBA的一个或多个与多个转换的LBA信息的相应一个相关联。
EC357)根据EC356所述的系统,其中映射的影子副本的有效条目的每一个包括多个转换LBA信息的相应一个的至少一部分。
EC358)根据EC356所述的系统,其中映射的影子副本的有效条目的至少一个选择性地指定与有效条目的至少一个相关联的LBA不存在于NVM中。
EC359)根据EC358所述的系统,其中与有效条目的至少一个相关联的LBA被整理。
EC360)根据EC355所述的系统,
其中NVM中的位置是NVM中的多个位置中的一个;并且
其中映射的影子副本的有效条目的每一个选择性地指定NVM中的相应位置。
EC361)根据EC360所述的系统,其中映射的影子副本的有效条目的每一个选择性地指定与条目相关联的数据不存在于NVM中。
EC362)根据EC355所述的系统,进一步包括:
用于最初将映射的影子副本的所有条目标记为无效的构件。
EC363)根据EC355所述的系统,进一步包括:
用于响应于将写入命令发送至I/O设备、将与写入命令的逻辑块地址(LBA)相关联的映射的影子副本的条目标记为无效的构件。
EC364)根据EC363所述的系统,进一步包括:
在I/O设备处用于经由外部接口接收写入命令的构件;以及
用于在接收写入命令之后、发送与写入命令的LBA对应的影子映射更新的构件。
EC365)根据EC364所述的系统,进一步包括:
用于根据影子映射更新来更新映射的影子副本的构件;并且
其中用于更新的构件将与写入命令的LBA相关联的映射的影子副本的条目标记为有效。
EC366)根据EC365所述的系统,其中所述更新通过I/O设备进行。
EC367)根据EC353所述的系统,进一步包括:
用于将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中的构件。
EC368)根据EC367所述的系统,进一步包括:
用于将映射的影子副本的更新从I/O设备发送至计算主机的构件。
EC369)根据EC367所述的系统,其中计算主机的存储器包括计算主机的主存储器。
EC370)根据EC367所述的系统,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC371)根据EC370所述的系统,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC372)根据EC367所述的系统,其中映射非易失性地存储在NVM中。
EC373)根据EC372所述的系统,其中计算主机的存储器包括易失性存储器。
EC374)根据EC349所述的系统,其中映射包括二级映射。
EC375)根据EC374所述的系统,
其中映射包括第一级和第二级;并且
其中映射的影子副本对应于映射的第二级。
EC376)一种系统,包括:
在I/O设备处用于经由外部接口接收写入命令的构件;
用于将写入命令的数据写入非易失性存储器(NVM)中的位置的构件;
用于存储写入命令的逻辑块地址(LBA)与映射中NVM中的位置之间的关联性的构件;以及
用于将包括根据NVM中的位置的信息的更新发送至映射的影子副本的构件。
EC377)根据EC376所述的系统,其中映射包括二级映射。
EC378)根据EC377所述的系统,
其中映射包括第一级和第二级;并且
其中映射的影子副本对应于映射的第二级。
EC379)根据EC376所述的系统,其中根据NVM中的位置的信息包括NVM的一个或多个读取单元的第一个读取单元的地址和读取单元的长度。
EC380)根据EC376所述的系统,进一步包括:
用于将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中的构件。
EC381)根据EC380所述的系统,进一步包括:
用于将映射的影子副本的更新从I/O设备发送至计算主机的构件。
EC382)根据EC380所述的系统,其中计算主机的存储器包括计算主机的主存储器。
EC383)根据EC380所述的系统,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC384)根据EC383所述的系统,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC385)根据EC383所述的系统,进一步包括:
用于将映射的影子副本的更新从I/O设备发送至计算主机的I/O空间存储器的构件。
EC386)根据EC385所述的系统,其中用于发送更新的构件包括用于发送PCIe写入请求的构件。
EC387)根据EC385所述的系统,其中用于发送更新的构件包括用于映射的影子副本的读取-修改-写入的构件。
EC388)根据EC385所述的系统,进一步包括:
用于在I/O设备执行读取命令之前,从映射的影子副本中提取读取命令的逻辑块地址(LBA)的转换的构件。
EC389)根据EC388所述的系统,其中提取通过I/O设备进行。
EC390)根据EC389所述的系统,其中用于提取的构件包括用于发送PCIe读取请求的构件。
EC391)根据EC388所述的系统,其中提取通过计算主机进行并且读取命令是预映射读取命令。
EC392)根据EC380所述的系统,其中映射非易失性地存储在NVM中。
EC393)根据EC392所述的系统,其中计算主机的存储器包括易失性存储器。
EC394)一种系统,包括:
用于初始化I/O设备的映射的影子副本,使得映射的影子副本的多个条目的全部被标记为无效的构件;
用于从I/O设备接收映射的影子副本的更新的构件;
用于根据映射的影子副本的更新,将映射的影子副本的条目中的至少一个标记为有效的构件。
EC395)根据EC394所述的系统,其中用于根据更新标记的构件进一步包括用于使更新的转换逻辑块地址(LBA)信息与条目中的至少一个相关联的构件。
EC396)根据EC395所述的系统,其中转换LBA信息包括I/O设备的非易失性存储器(NVM)中的位置。
EC397)根据EC394所述的系统,其中映射的影子副本的条目的每一个选择性地使I/O设备的至少一个逻辑块地址(LBA)与I/O设备的非易失性存储器(NVM)中的位置相关联。
EC398)根据EC394所述的系统,其中I/O设备的映射包括二级映射。
EC399)根据EC398所述的系统,
其中I/O设备的映射包括第一级和第二级;并且
其中映射的影子副本对应于I/O设备的映射的第二级。
EC400)根据EC394所述的系统,进一步包括:
用于将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中的构件。
EC401)根据EC400所述的系统,进一步包括:
用于将映射的影子副本的更新从I/O设备发送至计算主机的构件。
EC402)根据EC400所述的系统,其中计算主机的存储器包括计算主机的主存储器。
EC403)根据EC400所述的系统,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC404)根据EC403所述的系统,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC405)根据EC403所述的系统,进一步包括:
构件,用于将映射的影子副本的更新从I/O设备发送至计算主机的I/O空间存储器。
EC406)根据EC405所述的系统,其中用于发送更新的构件包括用于发送PCIe写入请求的构件。
EC407)根据EC405所述的系统,其中用于发送更新的构件包括用于映射的影子副本的读取-修改-写入的构件。
EC408)根据EC405所述的系统,进一步包括:
用于在I/O设备执行读取命令之前,从映射的影子副本中提取读取命令的逻辑块地址(LBA)的转换的构件。
EC409)根据EC408所述的系统,其中提取通过I/O设备进行。
EC410)根据EC409所述的系统,其中用于提取的构件包括用于发送PCIe读取请求的构件。
EC411)根据EC408所述的系统,其中提取通过计算主机进行并且读取命令是预映射读取命令。
EC412)根据EC400所述的系统,其中映射非易失性地存储在I/O设备的非易失性存储器(NVM)中。
EC413)根据EC412所述的系统,其中计算主机的存储器包括易失性存储器。
EC414)一种系统,包括:
构件,用于确定I/O设备的请求是否是读取请求,所述I/O设备具有映射,所述映射具有多个条目,映射的条目中的至少一些的每一个将I/O设备的各逻辑块地址(LBA)映射到选择性地包括I/O设备的非易失性存储器(NVM)中的位置的相应的转换的LBA信息,并且映射的影子副本具有对应的多个条目;
构件,用于如果请求是读取请求,则确定与读取请求的LBA相关联的映射的影子副本的条目中的特定条目是否有效;以及
构件,用于如果特定条目有效,则选择性地将包括根据特定条目的各转换LBA信息的至少一部分的预映射读取命令发送至I/O设备。
EC415)根据EC414所述的系统,
其中映射的影子副本的条目的每一个对应于映射的相应条目;
其中映射的条目中的至少一些的每一个包括通过各LBA映射至此的相应的转换LBA信息;并且
其中与映射的条目中的至少一些的一个对应的映射的影子副本的条目的每一个包括相应的转换的LBA信息的至少一部分。
EC416)根据EC414所述的系统,其中映射的多个条目是第二级映射。
EC417)根据EC416所述的系统,其中I/O设备进一步具有第一级映射。
EC418)根据EC414所述的系统,其中相应的转换的LBA信息的至少一部分选择性地包括NVM中的位置或各LBA不存在于NVM中的指示。
EC419)根据EC418所述的系统,其中用于选择性地发送的构件包括用于确定根据特定条目的各转换LBA信息的至少一部分是否指示读取请求的LBA不存在于NVM中的构件。
EC420)根据EC419所述的系统,其中用于选择性地发送的构件进一步包括:用于如果根据特定条目的各转换LBA信息的至少一部分指示读取请求的LBA存在于NVM中,则仅将预映射读取命令发送至I/O设备的构件。
EC421)根据EC420所述的系统,其中如果读取请求的LBA被整理,则根据特定条目的各转换LBA信息的至少一部分指示读取命令的LBA不存在于NVM中。
EC422)根据EC414所述的系统,其中各转换LBA信息的至少一部分选择性地包括NVM的一个或多个读取单元的第一个读取单元的地址和读取单元的长度。
EC423)根据EC422所述的系统,其中一个或多个读取单元的每一个的大小至少为512字节。
EC424)根据EC414所述的系统,进一步包括:
用于如果特定条目无效、则将包括读取请求的LBA的标准读取命令发送至I/O设备的构件。
EC425)根据EC414所述的系统,进一步包括:
用于如果请求是写入请求,则将与写入请求相关联的映射的影子副本的条目中的一个标记为无效的构件。
EC426)根据EC414所述的系统,其中映射的影子副本的每个条目包括有效性指示和来自映射的对应条目的至少一些内容的副本。
EC427)根据EC426所述的系统,其中如果特定条目有效,则来自映射中的对应条目的至少一些内容的副本与来自映射的对应条目的至少一些内容相同。
EC428)根据EC426所述的系统,其中映射的影子副本的有效条目是映射的有效条目的子集。
EC429)根据EC428所述的系统,所述子集是真子集。
EC430)根据EC414所述的系统,其中映射的影子副本的条目的每一个无效或包括根据映射的对应条目的信息。
EC431)根据EC414所述的系统,其中I/O设备的映射包括二级映射。
EC432)根据EC431所述的系统,
其中I/O设备的映射包括第一级和第二级;并且
其中映射的影子副本对应于I/O设备的映射的第二级。
EC433)根据EC414所述的系统,其中映射的影子副本的条目的每一个包括有效性的指示。
EC434)根据EC433所述的系统,其中映射的影子副本的有效条目的每一个选择性地使LBA的一个或多个与NVM中的相应位置相关联。
EC435)根据EC434所述的系统,其中映射的影子副本的有效条目的至少一个指定与有效条目的至少一个相关联的相应LBA的至少一个不存在于NVM中。
EC436)根据EC435所述的系统,其中与有效条目的至少一个相关联的各LBA的至少一个被整理。
EC437)根据EC433所述的系统,其中映射的影子副本的有效条目的每一个选择性地指定NVM中的相应位置。
EC438)根据EC433所述的系统,进一步包括:
用于最初将映射的影子副本的所有条目标记为无效的构件。
EC439)根据EC414所述的系统,进一步包括:
用于将映射的影子副本存储在与I/O设备耦接的计算主机的存储器中的构件。
EC440)根据EC439所述的系统,进一步包括:
用于从I/O设备接收映射的影子副本的更新的构件。
EC441)根据EC439所述的系统,其中计算主机的存储器包括计算主机的主存储器。
EC442)根据EC439所述的系统,其中计算主机的存储器包括计算主机的I/O空间存储器。
EC443)根据EC442所述的系统,其中计算主机的存储器可由PCIe地址空间中的I/O设备访问。
EC444)根据EC442所述的系统,进一步包括:
用于将映射的影子副本的更新从I/O设备发送至计算主机的I/O空间存储器的构件。
EC445)根据EC444所述的系统,其中用于发送更新的构件包括用于发送PCIe写入请求的构件。
EC446)根据EC444所述的系统,其中用于发送更新的构件包括用于映射的影子副本的读取-修改-写入的构件。
EC447)根据EC444所述的系统,进一步包括:
用于在I/O设备执行特定命令之前,从映射的影子副本中提取特定命令的LBA的转换的构件。
EC448)根据EC447所述的系统,其中提取通过I/O设备进行。
EC449根据EC448所述的系统,其中用于提取的构件包括用于发送PCIe读取请求的构件。
EC450)根据EC447所述的系统,其中提取通过计算主机进行。
EC451)根据EC450所述的系统,其中特定命令是预映射读取命令。
EC452)根据EC439所述的系统,其中映射非易失性地存储在NVM中。
EC453)根据EC452所述的系统,其中计算主机的存储器包括易失性存储器。
EC454)一种系统,包括:
在I/O设备处用于接收指示以进入低功率状态的构件;
用于将I/O设备的内部状态保存在计算主机的系统可访问存储器中的构件;
用于在I/O设备处接收指示以退出低功率状态的构件;以及
用于从系统可访问存储器恢复I/O设备的内部状态的构件。
EC455)根据EC454所述的系统,其中计算主机的系统可访问存储器包括计算主机的主存储器。
EC456)根据EC454所述的系统,其中计算主机的系统可访问存储器包括计算主机的I/O空间存储器。
EC457)根据EC456所述的系统,其中计算主机的系统可由PCIe地址空间中的I/O设备访问。
EC458)一种系统,包括:
用于接收命令以访问存储器,所述命令指定访问类型并具有一个或多个参数的构件;
用于确定存储的位置的构件;并且
其中用于确定的构件包括用于有条件地引用所包括的数据结构以确定位置的构件,当参数的一个或多个包括位置的规定时,省略所述引用。
EC459)根据EC458所述的系统,其中规定包括以下各项中的一项或多项:
存储器的区域的识别,
存储器的物理地址的识别,
存储器的数据的长度,以及
存储器的数据的跨度。
EC460)根据EC458所述的系统,其中所包括的数据结构包括分别描述与一个或多个逻辑块地址(LBA)相关联的数据位于存储器中的位置的一个或多个条目。
EC461)根据EC460所述的系统,其中每一个条目进一步选择性地描述与各LBA相关联的一个或多个属性。
EC462)根据EC460所述的系统,其中每一个条目进一步描述与存储器的一个或多个区域相关联的一个或多个属性。
EC463)根据EC458所述的系统,进一步包括用于在接收之前提供描述对所包括的数据结构的修改的更新的构件。
EC464)根据EC4630所述的系统,其中命令由计算主机提供,并且为计算主机提供更新。
EC465)根据EC463所述的系统,其中更新包括位置的规定。
EC466)根据EC465所述的系统,其中命令符合逻辑块地址(LBA)并且所述提供响应于处理至LBA的写入命令。
EC467)根据EC465所述的系统,其中用于提供的构件响应于回收和/或重新定位实现存储器的至少一些的非易失性存储器(NVM)的一个或多个部分。
EC468)根据EC458所述的系统,其中所述接收和所述确定经由I/O存储设备进行。
EC469)根据EC458所述的系统,其中命令由计算主机提供。
EC470)根据EC458所述的系统,其中参数包括标准参照和非标准参数,所述标准参数有标准限定,所述非标准参数不由标准限定,并且所述非标准参数包括具有规定的参数。
EC471)根据EC458所述的系统,其中命令由标准限定并且包括规定的参数不由标准限定。
EC472)根据EC470或EC471所述的系统,其中包括规定的参数包括以下各项中的一项或多项:
预留命令代码,
供应商特定参数,
预留字段,
未使用的字段,以及
功能寄存器中的值。
EC473)根据EC458所述的系统,进一步包括用于根据访问类型和位置执行存储的访问的构件。
EC474)根据EC473所述的系统,其中访问类型是读取访问类型并且访问是读取访问。
EC475)根据EC474所述的系统,其中参数包括规定。
EC476)根据EC475所述的系统,其中命令是预映射读取命令。
EC477)根据EC458所述的系统,其中位置是第一位置并且进一步包括用于根据访问类型和第二位置执行存储的访问的构件。
EC478)根据EC477所述的系统,其中访问类型是写入访问类型并且访问是写入访问。
EC479)根据EC478所述的系统,进一步包括用于提供描述对所包括的数据结构的修改的更新的构件,所述更新包括第二位置的规定。
EC480)根据EC478所述的系统,进一步包括用于根据规定修订存储的使用率的衡算的构件。
EC481)根据EC458所述的系统,其中命令是整理命令并且访问类型是整理访问类型。
EC482)根据EC481所述的系统,进一步包括用于提供描述对所包括的数据结构的修改的更新的构件,所述更新包括在接收命令之前映射至位置的逻辑块地址(LBA)的属性的规定。
EC483)根据EC482所述的系统,其中属性指示LBA已经被整理。
EC484)根据EC481所述的系统,进一步包括用于根据规定修订存储的使用率的衡算的构件。
EC485)一种系统,包括:
用于接收命令的构件,所述命令是多个命令类型中的一个,所述命令类型包括第一类型和第二类型;
用于确定命令是哪一个命令类型的构件;
构件,用于如果命令是第一类型,则执行第一处理,然后执行第二处理;
构件,用于如果命令是第二类型,则执行第二处理,而无需执行第一处理;
其中如果命令是第一类型,则第二处理使用由第一处理产生的信息,如果命令是第二类型,则其使用由所述命令提供的信息。
EC486)根据EC485所述的系统,其中命令是访问I/O存储设备的存储器。
EC487)根据EC486所述的系统,其中第一处理包括访问所包括的数据结构以产生信息。
EC488)根据EC487所述的系统,其中所包括的数据结构是描述实现存储的至少一些的非易失性存储器(NVM)的逻辑块地址(LBA)与物理地址之间的映射处理的映射,并且所述信息包括映射之一的至少一部分。
EC489)根据EC488所述的系统,其中第一类型的命令指定LBA中的至少一个。
EC490)根据EC489所述的系统,其中第二类型的命令不指定LBA中的任意一个。
EC491)根据EC487所述的系统,进一步包括用于在接收之前提供描述对所包括的数据结构的修改的更新的构件。
EC492)根据EC491所述的系统,其中更新包括信息的规定。
EC493)根据EC492所述的系统,其中规定包括以下各项中的一项或多项:
存储器的区域的识别,
存储器的物理地址的识别,
存储器的数据的长度,以及
存储器的数据的跨度。
EC494)根据EC492所述的系统,其中用于提供的构件响应于接收命令类型的写入命令类型。
EC495)根据EC492所述的系统,其中用于提供的构件响应于回收和/或重新定位实现存储的至少一些的非易失性存储器(NVM)的一部分。
EC496)根据EC491所述的系统,其中命令由计算主机提供,并且为计算主机提供更新。
EC497)根据EC486所述的系统,其中所述接收、所述确定、和执行的两个动作经由I/O存储设备进行。
EC498)根据EC486所述的系统,其中命令由计算主机提供.
EC499)根据EC485所述的系统,其中第一类型的命令由标准限定并且第二类型的命令不由标准限定。
EC500)根据EC485所述的系统,其中当命令是第二类型时,经由以下各项中的一项或多项提供信息:
预留命令代码,
供应商特定参数,
预留字段,
未使用的字段,以及
功能寄存器中的值。
EC501)根据EC487所述的系统,其中第一类型包括读取类型并且第二类型包括预映射读取类型。
EC502)根据EC501所述的系统,其中存储的访问是读取访问,信息包括存储的位置,并且第二处理包括读取所述位置。
EC503)根据EC487所述的系统,其中第一类型包括第一写入类型,第二类型包括第二写入类型,并且第二写入类型提供信息而第一写入类型不提供。
EC504)根据EC503所述的系统,其中存储的访问是写入访问,信息包括存储的第一位置,并且第二处理包括写入存储的第二位置并根据第一位置修订存储的使用率的衡算。
EC505)根据EC504所述的系统,进一步包括用于提供描述对所包括的数据结构的修改的更新的构件,所述更新包括第二位置的规定。
EC506)根据EC487所述的系统,其中第一类型包括第一整理类型,第二类型包括第二整理类型,并且第二整理类型提供信息而第一整理类型不提供。
EC507)根据EC506所述的系统,其中存储的访问是整理访问,信息包括存储的位置,并且第二处理包括根据所述位置修订存储的使用率的衡算。
EC508)根据EC507所述的系统,进一步包括用于提供描述对所包括的数据结构的修改的更新的构件,所述更新包括在接收命令之前根据所包括的数据结构映射至位置的逻辑块地址(LBA)的属性的规定。
EC509)根据EC508所述的系统,其中属性指示LBA已经被整理。
EC510)一种系统,包括:
用于从计算主机接收命令的构件,所述命令包括零个或多个标准参数和一个或多个非标准参数;
用于根据标准参数执行命令的构件;并且
其中所述接收和所述执行经由I/O存储设备进行,所述I/O存储设备被启用为使用非标准参数操作,其比没有利用非标准参数的效率更高。
EC511)根据EC510所述的系统,其中I/O存储设备使存储器与计算主机交互连接。
EC512)根据EC510所述的系统,其中I/O存储设备被启用为使用非标准参数执行命令,其比没有利用非标准参数的效率更高。
EC513)根据EC512所述的系统,进一步包括用于管理实现I/O存储设备的存储的至少一部分的非易失性存储器(NVM)的构件。
EC514)根据EC513所述的系统,其中命令是读取命令并且非标准参数中的一个或多个至少部分指定NVM中的物理位置,并且进一步包括用于读取物理位置的构件。
EC515)根据EC514所述的系统,进一步包括用于I/O存储设备对所包括的I/O设备映射执行映射更新并向计算主机提供映射更新的至少一些以允许计算主机更新计算主机映射的构件,所述计算主机映射和所述I/O设备映射分别具有描述NVM的逻辑块地址(LBA)与位置之间的映射处理的相应条目,非标准参数中的至少一个至少部分经由计算主机映射确定。
EC516)根据EC515所述的系统,其中访问计算主机映射的延迟小于访问I/O设备映射的延迟,并且较高的效率包括较低的延迟。
EC517)根据EC513所述的系统,其中命令是写入命令并且非标准参数中的一个或多个至少部分指定NVM中的第一物理位置,并且进一步包括写入NVM中的第二物理位置并根据第一物理位置修订存储的使用率的衡算。
EC518)根据EC517所述的系统,进一步包括构件,用于I/O存储设备对所包括的I/O设备映射执行映射更新并向计算主机提供映射更新的至少一些以允许计算主机更新计算主机映射,所述计算主机映射和所述I/O设备映射分别具有描述NVM的逻辑块地址(LBA)与位置之间的映射处理的各条目,非标准参数中的至少一个至少部分经由计算主机映射确定。
EC519)根据EC518所述的系统,其中访问计算主机映射的延迟小于访问I/O设备映射的延迟,并且较高的效率包括较低的延迟。
EC520)根据EC510所述的系统,其中命令是第一命令,并且I/O存储设备被启用为根据非标准参数执行在第一命令之后接收的第二命令,其比没有利用非标准参数的效率更高。
EC521)根据EC520所述的系统,进一步包括用于管理实现I/O存储设备的存储器的至少一部分的非易失性存储器(NVM)的构件。
EC522)根据EC521所述的系统,进一步包括用于I/O存储设备管理具有描述NVM的逻辑块地址(LBA)与位置之间的映射处理的条目的所包括的映射的构件。
EC523)根据EC522所述的系统,其中标准参数中的一个或多个的至少一部分包括特定LBA并进一步包括I/O存储设备将从非标准参数确定的至少一些信息存储在条目中的至少所选条目中,所选条目至少部分由特定LBA选择。
EC524)根据EC523所述的系统,其中第二命令符合特定LBA。
EC525)根据EC523所述的系统,其中信息包括多个数据频带中的特定数据频带的识别,并且进一步包括构件,用于I/O存储设备回收NVM的特定LBA映射至此的部分以保留在特定数据频带中。
EC526)根据EC521所述的系统,其中非标准参数中的至少一个或多个至少部分指定多个类型的数据中的一个,所述类型的数据包括以下各项中的一项或多项:
可压缩类型的数据,
不可压缩类型的数据,以及
使用模式类型的数据。
EC527)根据EC526所述的系统,其中使用模式类型的数据包括数据库日志类型的数据,并且进一步包括构件,用于I/O存储设备管理NVM以将与数据库日志类型的数据相关联的数据存储在多个数据频带的数据库日志数据频带中,以及构件,用于I/O存储设备管理数据库日志数据频带使得当数据库日志频带中的数据量超过阈值时,选择性地删除数据库日志频带的较旧数据。
EC528)根据EC527所述的系统,进一步包括用于当回收较旧数据时删除较旧数据的构件。
EC529)根据EC521所述的系统,其中非标准参数中的至少一个或多个至少部分指定多个数据访问类型中的一个,所述数据访问类型包括以下各项中的任意两项或多项:
读取/写入数据访问类型,
主读数据访问类型,
主写数据访问类型,以及
瞬态数据访问类型。
EC530)根据EC529所述的系统,其中第二命令是写入命令,并且进一步包括用于I/O存储设备响应于写入命令写入NVM的特定部分的构件,特定部分至少部分由数据访问类型确定。
EC531)根据EC530所述的系统,其中数据访问类型是读入/写入数据访问类型,并且特定部分尚未经受相对多的编程/擦除循环并且尚未经受相对少的编程/擦除循环。
EC532)根据EC530所述的系统,其中数据访问类型是主读数据访问类型,并且特定部分经受了相对多的编程/擦除循环。
EC533)根据EC530所述的系统,其中数据访问类型是主写数据访问类型,并且特定部分经受了相对少的编程/擦除循环。
EC534)根据EC531、EC532或E533所述的系统,其中较高的效率包括较高的可靠性。
EC535)根据EC531、EC532或E533所述的系统,其中较高的效率包括较长的使用期限。
EC536)根据EC529所述的系统,其中标准参数中的一个或多个的至少一部分包括特定LBA并且数据访问类型是瞬态数据访问类型,并且进一步包括用于I/O存储设备、响应于特定事件、删除存储在与特定LBA对应的NVM中的位置的数据的构件。
EC537)根据EC536所述的系统,其中用于删除数据的构件包括用于根据特定LBA以映射的条目更新I/O存储设备的映射以指定与特定LBA对应的数据不存在于NVM中的构件。
EC538)根据EC536所述的系统,其中用于删除数据的构件包括用于整理数据的构件。
EC539)根据EC536所述的系统,其中特定事件是以下各项中的一项或多项:
I/O存储设备的NVM管理操作,
I/O存储设备的NVM回收操作,
I/O存储设备的重启,
I/O存储设备的复位,
虚拟I/O存储设备的虚拟机器重启,
虚拟I/O存储设备的虚拟机器复位,
来自计算主机的显式请求,以及
来自memcached应用程序的请求。
EC540)根据EC521所述的系统,其中非标准参数中的至少一个或多个至少部分指定多个数据序列中的一个,所述数据序列顺序包括连续序列顺序和原子序列顺序中的任何两个或多个。
EC541)根据EC521所述的系统,其中非标准参数中的至少一个或多个至少部分指定多个数据关系中的一个,所述数据关系包括数据的多个项目与预取数据关系之间的读取和/或写入关联性中的任意两个或多个。
EC542)根据EC521所述的系统,其中非标准参数中的至少一个或多个至少部分指定多个数据目的地中的一个,所述数据目的地包括以下各项中的任意两项或多项:
NVM的特定部分,
分级存储层,
一种类型的存储器,以及
特定数据频带。
EC543)根据EC542所述的系统,其中存储的类型是以下各项中的任意一项或多项:
单级存储单元(SLC),
多级存储单元(MLC),
磁性随机存取存储器(MRAM),
易失性,以及
非易失性。
EC544)根据EC542所述的系统,其中数据目的地中的一个的规定允许改善以下各项中的一项或多项:
写入速度,
回收速度,
回收频率,以及
写入放大率。
EC545)根据EC521所述的系统,其中非标准参数中的至少一个或多个至少部分指定多个命令处理特征中的一个,所述命令处理特征包括以下各项中的任意两项或多项:
命令优先级,
命令排序,
特定类型的命令的隔层,
特定类型的命令的边界,
命令的集合,
命令的融合,以及
命令的原子操作。
EC546)根据EC512或EC520所述的系统,其中较高的效率包括较高的性能。
EC547)根据EC546所述的系统,其中更高的性能包括以下各项中的一项或多项:
较高的带宽,
较低的延迟,以及
较低的功率。
EC548)根据EC512或EC520所述的系统,其中较高的功率包括较高的可靠性。
EC549)根据EC548所述的系统,其中较高的可靠性包括较低错误率和较长的使用期限中的一个或多个。
EC550)一种系统,包括:
用于从计算主机接收命令的构件,所述命令请求返回非标准统计值;
用于将非标准统计值返回计算主机的构件,并且
其中所述接收和所述返回经由被启用为计算非标准统计的I/O存储设备进行。
EC551)根据EC550所述的系统,进一步包括构件,用于减小待写入至实现I/O存储设备的存储器的至少一部分的非易失性存储器(NVM)的数据的大小;并且其中计算至少部分基于所述减小。
EC552)根据EC551所述的系统,其中用于减小的构件包括用于压缩的构件。
EC553)根据EC551所述的系统,其中用于减小的构件包括用于数据重复删除的构件。
EC554)根据EC551所述的系统,其中非标准统计符合NVM的使用。
EC555)根据EC554所述的系统,其中NVM的使用根据减小质量改变。
EC556)根据EC554所述的系统,其中NVM的使用根据从计算主机接收的整理命令的数量和/或大小改变。
EC557)根据EC554所述的系统,其中NVM的使用根据从计算主机接收的瞬态数据的量改变。
EC558)根据EC557所述的系统,其中NVM的使用根据由I/O存储设备整理的瞬态数据的量改变。
EC559)根据EC554所述的系统,其中非标准统计符合NVM的使用百分比。
EC560)根据EC554所述的系统,其中非标准统计符合I/O存储设备的写入放大率。
EC561)根据EC551所述的系统,其中非标准统计是NVM的一个或多个频带的大小。
EC562)根据EC551所述的系统,其中非标准统计是NVM的一个或多个频带的使用。
EC563)根据EC562所述的系统,其中NVM的一个或多个频带的使用根据减小质量改变。
EC564)根据EC468、EC486、EC511或EC550所述的方法,其中I/O存储设备包括固态磁盘(SSD)控制器,用于接收命令的构件。
EC565)根据EC564所述的系统,其中SSD控制器在单个集成电路(IC)中实现。
EC566)根据EC565所述的系统,其中存储的至少一部分经由非易失性存储器(NVM)实现。
EC567)根据EC566所述的系统,其中NVM包括一个或多个闪存。
EC568)根据EC566所述的系统,其中NVM的至少一部分包括以下各项中的一项或多项:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC569)根据EC566所述的系统,其中NVM的至少一部分包括以下各项中的一项或多项:
单级存储单元(SLC)闪存技术存储单元,以及
多级存储单元(MLC)闪存技术存储单元。
EC570)根据EC566所述的系统,其中SSD控制器包括被启用为与NVM传递数据的NVM接口,数据的至少一些与命令的至少一些相关联。
EC571)根据EC570所述的系统,其中NVM接口与以下各项中的一项或多项兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
同步接口,以及
异步接口。
EC572)根据EC566所述的系统,其中SSD控制器和NVM包括在SSD中。
EC573)根据EC564所述的系统,其中SSD控制器包括与存储接口标准兼容并被启用为耦接至经由存储接口提供命令的计算主机的存储接口。
EC574)根据EC573所述的系统,进一步包括用于操作计算主机以提供命令的构件。
EC575)具有或参照至少存储接口标准的任意前述EC,其中存储接口标准包括以下各项中的一项或多项:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接小型计算机系统接口(SAS)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
EC576)具有或参照至少一个计算主机的任意前述EC,其中计算主机包括以下各项中的一项或多项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
个人数字助理(PDA),
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
系统
图1A示出了包括与被启用为与主机(比如计算主机)互操作的I/O设备(比如I/O存储设备)中的操作兼容的SSD控制器的SSD101的实施方式的所选细节。SSD控制器用于管理比如经由NVM元件(例如,闪存)实现的非易失性存储器。SSD控制器100经由一个或多个外部接口110与主机(未示出)通信耦接。根据各种实施方式,外部接口110是以下各项中的一项或多项:SATA接口;SAS接口;PCIe接口;光纤通道接口;外部接口(比如10千兆以太网);任意前述接口的非标准版本;定制接口;或用于将存储和/或通信和/或计算设备互连的任何其他类型的接口。例如,在某些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100进一步经由一个或多个设备接口190与包括一个或多个存储设备(比如,闪存设备192的一个或多个实例)的NVM199通信耦接。根据各种实施方式,设备接口190是以下各项中的一项或多项:异步接口;同步接口;DDR同步接口;ONFI兼容接口(比如,ONFI2.2orONFI3.0兼容接口);切换模式兼容闪存接口;任意前述接口的非标准版本;定制接口;或用于连接至存储设备的任何其他类型的接口。
在某些实施方式中,每一个闪存设备192具有一个或多个个体闪存芯片194。根据闪存设备192的特定闪存设备的类型,特定闪存设备192中的多个闪存芯片194可选地和/或可选地并行访问。闪存设备192只表示被启用为与SSD控制器100通信耦接的一种类型的存储设备。在各种实施方式中,任何类型的存储设备都是可使用的,比如SLC NAND闪存、MLCNAND闪存、NOR闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁性存储器、相变存储器、赛道存储器或任何其他类型的存储器设备或存储介质。
根据各种实施方式,设备接口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提供读取状态和/或读取数据。再如,命令包括指定NVM199中的位置和读取单元配量中的数据的长度和/或跨度的预映射读取命令。又如,命令包括指定要写入的数据的地址(比如LBA)和量(比如LBA配量,例如扇区的数量)的写入命令;作为响应,SSD提供写入状态和/或请求写入数据且随后可选的提供写入状态。对于又一示例,命令包括指定不再需要分配的一个或多个地址(比如一个或多个LBA)的去分配(de-allocation)命令(例如,整理命令);作为响应,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具有以下各项中的一个或多个:用于临时存储数据的存储器197;用于控制至和/或自缓冲器131的数据的移动的DMA133;用于提供较高级错误校正和/或冗余功能的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发送数据。设备接口逻辑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的实例选择性地和/或动态地经配置、管理和/或使用以具有用于存储不同类型和/或性质的数据的一个或多个频带。该等频带的数目、布置、大小和类型可动态地改变。例如,将来自计算主机的数据写入热(在用)频带,而将来自回收站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适配。各种计算主机包括以下各项中的一个或其任何组合:计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上电脑、笔记本电脑、上网本电脑、PDA、媒体播放器、媒体记录器、数码相机、蜂窝手机、无绳电话手机和电子游戏机。
在各种实施方式中,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及应用程序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)操作的标准和/或通用驱动程序(有时称为“紧缩套装(shrink-wrapped)”或“预安装”),或者可选的定制和/或供应商特定以启用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。固件存储器包括一个或多个固件映像(image)(或其部分)。例如,固件映像具有(例如)通过SSD控制器100的CPU内核172执行的固件的一个或多个映像。再如,固件映像具有(例如)在固件执行期间由CPU内核参考的常数、参数值及NVM设备信息的一个或多个映像。固件的映像对应于(例如)当前固件映像及零或零以上先前(相对于固件更新)固件映像。在各种实施方式中,固件提供通用、标准、ONA和/或DNA操作模式。在某些实施方式中,经由可选的由驱动程序传递和/或提供的密钥或各种软件技术来启用固件操作模式中的一个或多个(例如,一个或多个API“未经锁定”)。
在某些实施方式中,主机102包括影子映射108作为不同的硬件资源,同时在其他实施方式中,影子映射经由主机存储器112H部分或全部实现。影子映射108、主机存储器112H及卡存储器112C的示例是一个或多个易失性和/或NVM元件,比如经由DRAM、SRAM和/或闪存设备实现的。主机存储器的进一步示例是系统存储器、主机主存储器、主机缓存存储器、主机可访问存储器以及I/O设备可访问存储器。
如本文其他地方更详细所述,在各种实施方式中,主机102和/或SSD101的一个或多个实例被启用为访问影子映射108以便保存并检索可用于将LBA转换为以I/O设备NVM的一个或多个部分(比如NVM199的一个或多个实例的元件)为目标的区块和/或页地址的映射信息的全部或任意部分。从概念上讲,影子映射遵循(follow)(例如影射(shadow))映射141的一个或多个实例中的信息。影子映射中的信息经由主机102(例如,结合向SSD发出命令)和SSD101的一个或多个实例(例如,结合处理来自主机的命令)中的一个或多个更新。在某些实施方式和/或使用场景下(比如具有I/O卡116并使用图1B的(可选的)卡存储器112C作为影子映射的存储),一个或多个I/O设备,例如SSD,访问影子映射并且主机不访问。同样如本文其他地方更详细所述,SSD101的一个或多个实例被启用为访问卡存储器112C和/或主机存储器112H以便保存并恢复各SSD实例内部的状态信息,比如在进入和退出睡眠状态时。
在缺少交换机/光纤/中间控制器的某些实施方式中,SSD经由外部接口110直接与主机耦接。在各种实施方式中,SSD控制器100经由其他控制器,比如RAID控制器的一个或多个中间阶层与主机耦接。在某些实施方式中,SSD101(或其变型)对应于SAS驱动器或SATA驱动器,且交换机/光纤/中间控制器103对应于扩展器,该扩展器又与起始器耦接,或可替代地,交换机/光纤/中间控制器103对应于桥接器,该桥接器经由扩展器间接与起始器耦接。在某些实施方式中,交换机/光纤/中间控制器103包括一个或多个PCIe交换机和/或光纤。
在各种实施方式中,比如在其中主机102作为计算主机(例如,计算机、工作站计算机、服务器计算器、存储服务器、PC、膝上电脑、笔记本电脑和/或上网本电脑)的某些实施方式中,计算主机可选的被启用为与一个或多个本地和/或远程服务器(例如,可选的服务器118)通信(例如,经由可选的I/O&存储设备/资源117以及可选的LAN/WAN119)。例如,通信启用SSD101元件的任意一个或多个的本地和/或远程访问、管理和/或使用。在某些实施方式中,通信完全地或部分地经由以太网。在某些实施方式中,通信完全地或部分地经由光纤通道。在某些实施方式中,LAN/WAN119表示一个或多个局域和/或广域网,比如服务器场中的网络、耦接服务器场的网络、城域网和互联网中的任意一个或多个。
在各种实施方式中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起实现为非易失性存储组件,比如USB存储组件、CF存储组件、MMC存储组件、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的数据开始于后续读取单元。在进一步实施方式中,最后报头中的特定偏移值(例如,全部为1(all ones))指示与最后报头相关联的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示出了作为I/O设备命令处理600的处理I/O(例如存储)设备处的命令和可选的提示信息的一个实施方式的所选细节的流程图。在某些实施方式和/或使用场景下,I/O设备命令处理600允许“一次一个”提示处理,其中将具有显著提示模式的特定命令发送至I/O设备,并且I/O设备根据所附的提示处理特定命令。后续命令的处理不受提示的影响(虽然后续命令中的一个或多个可选地具有影响各处理的各所附提示)。
示例性I/O设备是如图1A和图1B中所示的SSD101的示例。该处理开始于不作用的I/O设备,比如无动力、在睡眠模式下,或在复位状态下(I/O设备关机或复位状态601)。当I/O设备变得起作用,比如供电,过渡至操作和/或作用状态,或退出复位时,该处理继续(激活601A)。I/O设备然后准备通过初始化内部数据结构和硬件元件,比如通过存储初始值、恢复事先保存的值和/或创建与作用操作兼容的状态值准备操作(I/O设备初始化611)。
在准备操作之后,I/O设备等待从主机接收命令(接收命令?621和否621N)。在接收命令时(是621Y),I/O设备确定命令提供有提示还是命令使用提示(具有或使用提示的命令?631)。如果是(是631Y),则I/O设备处理具有或使用提示的命令(使用提示处理命令641)。如果不是(否631N),则I/O设备处理没有提示的命令(处理命令(无提示)651)。在处理命令(具有或没有提示)之后,I/O设备可选地和/或选择性地将结果信息返回主机(发送命令状态661)。I/O设备中的处理然后沿环路返回以等待另一个命令(接收命令?621)。
图7示出了作为I/O设备命令处理700的处理I/O(例如存储)设备处的命令和可选的提示信息的另一实施方式的所选细节的流程图。在某些实施方式和/或使用场景下,I/O设备命令处理700允许“粘性”提示处理,其中将进入提示模式的命令发送至I/O设备,之后是在提示模式下处理的一个或多个命令。然后,退出提示模式的命令可选地和/或选择性地被发送至I/O设备,并且如果发送退出提示模式的命令,则在没有提示的情况下处理后续命令。
如与在图6中一样,示例性I/O设备是SSD101的实例,如图1A和图1B所示。同样如与在图6中一样,该处理开始于不作用的I/O设备(I/O设备关机或复位状态701),然后随着I/O设备变得起作用(激活701A)并准备操作(I/O设备初始化711)而继续。
在准备操作之后,I/O设备等待从主机接收命令(接收命令?721和否721N)。在接收命令时(是721Y),I/O设备确定命令是否与提示模式有关(提示模式的命令?731)。如果是(是731Y),则I/O设备进入(或退出,根据命令)提示模式(进入/退出提示模式741)。如果不(否731N),则I/O设备在当前模式下处理命令,而无需进入(或退出)提示模式(在当前模式下处理命令751)。在处理命令之后(是否与提示模式有关),I/O设备可选地和/或选择性地将结果信息返回主机(发送命令状态761)。在某些实施方式和/或使用场景下,比如取决于命令和/或结果信息,I/O设备中的处理然后沿环路返回以等待另一个命令(接收命令?721),或有条件地和/或选择性地(比如取决于命令和/或结果信息),I/O设备然后确定是否退出提示模式(退出提示模式?771)。如果是(是771Y),则I/O设备退出提示模式(退出提示模式781),并且I/O设备中的处理然后沿环路返回以等待另一个命令(接收命令?721)。如果不(否771N),则I/O设备中的处理沿环路返回以等待另一个命令(接收命令?721),而无需退出提示模式。在某些实施方式中,在处理单个命令期间,I/O设备进入提示模式,并且基于单个命令,也执行该命令以执行特定操作(比如读取、写入或整理操作)。例如,对于某些命令,该处理从741流至751,然后至761。
图8示出了作为I/O设备命令处理800的处理I/O(例如存储)设备处的命令和可选的提示信息的又一实施方式的所选细节的流程图。从概念上讲,图8表示由图6和图7表示的在一个或多个实施方式中同时可用的功能。在各种实施方式和/或使用场景下,I/O设备命令处理800允许一次一个和粘性提示处理,其中存在同时可使用的一个或多个提示和/或提示模式。提示和/或提示模式可选地、选择性地和/或有条件地取决于一个活多个因素,比如命令的类型、LBA、数据频带或其他地址、数据和/或命令相关参数或条件。
如与在图6和图7中一样,示例性I/O设备是SSD101的实例,如图1A和图1B所示。同样如与在图6和图7中一样,该处理开始于不作用的I/O设备(I/O设备关机或复位状态801),然后随着I/O设备变得起作用(激活801A)并准备操作(I/O设备初始化811)而继续。
在准备操作之后,I/O设备等待从主机接收命令(接收命令?821和否821N)。在接收命令时(是821Y),I/O设备确定命令显示地提供有提示还是命令显示地使用提示(具有或使用提示?831)。如果是(是831Y),则I/O设备根据当前模式处理具有和/或使用显示提示的命令(在CurrentMode下利用提示处理832)。在各种实施方式中,CurrentMode取决于命令、提供有命令的LBA、数据频带(比如从提供有命令的LBA、映射信息或数据频带与模式之间的其他关系确定的)、其他地址、数据和/或命令相关参数或条件、或一个或多个事先提供的显示和/或隐式提示中的一个或多个。
如果命令未提供有显示提示并且不使用显示提示(否831N),则I/O设备确定命令是否进入特定提示模式(进入提示模式?841)。如果是(是841Y),则I/O设备进入特定提示模式(进入特定提示模式(CurrentMode+=ParticularMode)842)。在具有单个提示模式的实施方式中,进入单个提示模式从概念上讲对应于给当前模式分配与单个提示模式对应的值。在具有两个或多个提示模式的实施方式中,进入特定提示模式从概念上讲对应于给当前模式分配与当前模式连同(例如添加)特定提示模式对应的值。在各种实施方式中,特定提示模式与一个或多个LBA、LBA的一个或多个范围以及一个或多个数据频带中的一个或多个相关联。处理提供有或使用显示提示的命令允许一次一个的提示处理。
如果命令未进入特定提示模式(否841N),则I/O设备确定命令是否退出特定提示模式(退出提示模式?851)。如果是(是851Y),则I/O设备退出特定提示模式(退出特定提示模式(CurrentMode-=DefaultMode)852)。在具有单个提示模式的实施方式中,退出单个提示模式从概念上讲对应于给当前模式分配与不起作用的单个提示模式对应的缺省值。在具有两个或多个提示模式的实施方式中,退出特定提示模式从概念上讲对应于给当前模式分配与当前模式没有(例如扣除)特定提示模式对应的值。在各种实施方式中,特定提示模式与一个或多个LBA、LBA的一个或多个范围以及一个或多个数据频带中的一个或多个相关联。
如果命令不是退出特定提示模式(否851N),则I/O设备确定命令是否退出所有提示模式(退出所有提示模式?861)。如果是(是861Y),则I/O设备退出所有提示模式(退出所有提示模式(CurrentMode=DefaultMode)862)。在具有单个提示模式的实施方式(或具有两个或多个提示模式的实施方式)中,退出所有提示模式从概念上讲对应于给当前模式分配与不起作用的单个提示模式(或所有提示模式)对应的缺省值。
如果命令不是退出所有提示模式(否851N),则在当前模式下处理命令(在CurrentMode下处理(没有提示)872),包括例如基于事先接收的提示进入/退出相关命令的当前模式的任何先前变化,但没有任何额外的提示信息,因为已经确定该命令不提供提示。进入特定提示模式和退出特定提示模式或所有提示模式的命令的处理允许粘性提示处理。
在处理命令之后(利用或使用显示地提供的提示,进入或退出特定提示模式,退出所有提示模式,或仅基于当前模式,对应于832,842,852,862和872),I/O设备可选地和/或选择性地将结果信息返回主机(发送状态881)。在某些实施方式和/或使用场景下,比如取决于命令和/或结果信息,I/O设备中的处理然后沿环路返回以等待另一个命令(接收命令?821),或可选地、有条件地和/或选择性地(比如取决于命令和/或结果信息),I/O设备然后退出一个或多个提示模式(退出提示模式882),并且I/O设备中的处理然后沿环路返回以等待另一个命令(接收命令?821)。
确定831,841,851和861的排序仅仅是说明性的;设想具有其他排序的其他实施方式,以及并行作出一个或多个确定或者可选地和/或可选地评估确定的多个“是”路径的实施方式。例如,在某些实施方式中,特定命令使用影响特定命令以及后续命令的粘性提示。
映射操作
图9示出了作为I/O设备命令处理900的处理I/O(例如存储)设备处的命令和可选的影子映射信息的实施方式的流程图。在某些实施方式和/或使用场景下,I/O设备命令处理900允许I/O设备基于主机提供另外经由特定处理获得的信息省略特定处理(例如,跳过访问映射,比如图1A和图1B的映射141)。主机被启用为经由影子映射提供信息,该影子映射至少部分通过从I/O设备传递的映射更新进行管理。
如与在图6至图8中一样,示例性I/O设备是SSD101的实例,如图1A和图1B所示。同样如与在图6至图8中一样,该处理开始于不作用的I/O设备(I/O设备关机或复位状态901),然后随着I/O设备变得起作用(激活901A)并准备操作(I/O设备初始化911)而继续。
在准备操作之后,I/O设备可选地和/或选择性地将起始映射信息传递至主机(将初始映射传送至主机921)。在某些实施方式和/或使用场景下,I/O设备根据概念性的“按需提取”技术省略传递起始映射信息的所有或任意部分。传递可选地被执行为背景操作。主机将所传递的映射信息保留在影子映射(例如,图1B的影子映射108)中。I/O设备任何等待从主机接收命令(接收命令?931和否931N)。
一旦收到命令(是931Y),I/O设备确定命令是否包括或提供有以I/O设备NVM的特定部分的特定区块和/或页地址(比如图1A的一个或多个闪存芯片194中的区块/页)为目标的位置信息(提供位置?941)。如果不(否941N),则I/O设备确定I/O设备NVM的特定区块和/或页地址和特定部分(确定位置951),比如通过访问映射。然后I/O设备使用所确定的位置处理命令(处理命令961)。如果命令包括或提供有位置信息(是941Y),则省略位置确定,并且I/O设备使用所提供的位置信息处理命令(处理命令961)。
在处理命令之后,I/O设备可选地和/或选择性地将结果信息返回主机(发送命令状态971),可选地包括一个或多个映射更新,例如如果命令是写入命令,则I/O设备将映射更新传递至描述写入命令的LBA与I/O设备NVM的特定部分之间的映射的主机,例如,以特定区块和/或页地址为目标的位置信息。在某些实施方式和/或使用场景下,比如根据命令和/或结果信息,I/O设备中的处理沿环路返回以等待另一个命令(接收命令?931),或有条件地和/或选择性地(比如取决于命令和/或结果信息),I/O设备然后确定是否将映射更新传递至主机(映射更新以发送?981)。如果否(否981N),则I/O设备中的处理沿环路返回以等待另一个命令(接收命令?931)。如果是(是981Y),则I/O设备将一个或多个映射更新传递至主机(将映射更新传送至主机991)。在某些实施方式中,映射更新被作为背景操作传递。在某些实施方式中,映射更新被作为组累积并传送,可选地作为背景操作。I/O设备中的处理然后沿环路返回以等待另一个命令(接收命令?931)。
在某些实施方式和/或使用场景下,I/O设备响应于I/O设备进行的不与初始化或命令直接相关的处理将一个或多个更新传递至主机。例如,当I/O设备回收I/O设备NVM的区域时,I/O设备NVM中的LBA与位置之间存在映射的零个或多个变化。I/O设备将映射变化(如果有的话)传递至主机作为一个或多个映射更新,如与981/991中一样。
在某些实施方式和/或使用场景下(比如具有带卡存储器的I/O卡,例如使用图1B的(可选的)卡存储器112C作为影子映射的存储的I/O卡116的某些实施方式),一个或多个I/O设备使用卡存储器作为影子映射,而无需涉及主机。I/O设备根据映射更新修改影子映射,而不将映射更新传递至主机。
图10示出了作为主机影子映射处理1000的保持计算主机处的影子映射信息的实施方式的流程图。在某些实施方式和/或使用场景下,主机影子映射处理1000允许I/O设备基于主机提供另外经由特定处理获得的信息省略特定处理(例如,跳过访问映射,比如图1A和图1B的映射141)。主机被启用为经由影子映射提供信息,该影子映射至少部分通过从I/O设备传递的映射更新进行管理。
示例性主机是如图1B中所示的主机102。如与在图6至图9中一样,该处理开始于不作用的I/O设备(I/O设备关机或复位状态1001),然后随着I/O设备起作用(激活1001A)而继续。主机然后标记影子映射,比如图1B的影子映射108,因为没有信息(初始化影子映射,因为全部都无效1011)。主机的处理然后等待接收从I/O设备传递的一个或多个映射更新(接收初始映射或更新?1021和否1021N)。在收到映射更新之后(是1021Y),主机根据所接收的映射更新来更新影子映射(更新影子映射1031)。
在各种实施方式中,从I/O设备传递的映射更新是与初始化相关的I/O设备处理的结果(例如,图9的将初始映射传送至主机921)、与写入有关的I/O设备的结果(例如,图9的发送命令状态(可选地利用用于写入的映射更新)971)、映射更新的I/O设备累积的结果(例如,图9的将映射更新传送至主机991)、或其任意组合。在某些实施方式和/或使用场景下,主机可选地和/或选择性地忽略一个或多个映射更新。例如,比如当特定映射更新对应于在主机处理特定映射更新之前由于写入导致主机使其无效的影子映射条目时,主机忽略由于回收活动导致的特定映射更新。
在某些实施方式和/或使用场景下(比如具有I/O卡116并使用图1B的(可选的)卡存储器112C作为影子映射的存储的I/O卡116的某些实施方式),一个或多个I/O设备,例如SSD,使用影子映射,而主机不使用。I/O设备执行如图10中所示的处理的全部或任意部分,例如,I/O设备执行影子映射初始化和更新。
在某些实施方式中,I/O设备独立于主机命令和/或响应于主机命令更新映射,但在主机命令中不引用的LBA处或在通常不更新映射的主机命令(比如读取命令)中的LBA处。在第一示例中,由于回收(例如,垃圾回收),重新定位NVM中的数据并更新映射以反映任何这些重新定位数据的新位置。在第二示例中,响应于读取命令,由于数据具有过量读取(例如,数据更具有读取扰动错误的风险)的确定而重新定位数据。I/O设备可选地和/或选择性地比如经由中断或经由状态信息向主机发信号表明由于独立的I/O设备活动而存在映射的等待更新。根据各种实施方式,由于独立的I/O设备活动导致的映射的等待更新是以下各项中的一项或多项:连同响应于主机命令的映射的其他更新传递至主机;传递至主机作为至主机的独立通信;响应于主机请求独立更新传递至主机,比如通过读取独立更新的日志;通过I/O设备直接写入到影子映射;以及其他技术。在进一步实施方式中,直至NVM的一部分的任何映射更新被传递至主机和/或在影子映射中更新,才擦除NVM的已经被回收和/或重新定位的部分。在某些实施方式和/或使用场景下,延迟擦除直至在影子映射更新允许主机使用影子映射中的先前位置信息(在回收和/或重新定位之前),并由此避免由于否则禁止使用更新条目直至更新条目利用新位置信息更新为止的影子映射的更新条目无效导致的性能惩罚。
图11示出了作为主机命令发出1100的发出计算主机处的命令和可选的映射信息的实施方式的流程图。在某些实施方式和/或使用场景下,主机命令发出1100允许I/O设备基于主机提供另外经由特定处理获得的信息省略特定处理(例如,跳过访问映射,比如图1A和图1B的映射141)。主机被启用为经由访问影子映射提供信息,该影子映射至少部分通过来自主机的修改(以及从I/O设备传递的映射更新)进行管理。
在某些实施方式和/或使用场景下,结合发出写入命令,主机使该写入修改的LBA的影子映射条目无效,因为当处理写入命令时LBA的映射通过I/O设备改变。随后,I/O设备可选地传递与所写入的LBA有关的一个或多个映射更新,并且主机然后根据映射更新修改影子映射。在某些实施方式和/或使用场景下,结合发出整理命令,主机可选地和/或选择性地将整理与其相关的LBA的影子映射条目标记为整理的,因为在处理整理命令时LBA的映射被标记为通过I/O设备整理。I/O设备可选地省略传递与所整理的LBA有关的映射更新,因为主机已经将LBA标记为整理的。在某些实施方式和/或使用场景下,结合发出读取命令,主机可选地和/或选择性地检查在读取访问的LBA的影子映射中是否存在任何有效条目。如果发现条目,则主机利用来自有效条目的位置信息发出预映射读取命令,从而在发出命令时可选地省略LBA。位置信息允许I/O设备省略映射查找,否则执行映射查找以从LBA确定位置信息。如果没有发现有效条目,则主机利用LBA且不用位置信息发出读取命令。I/O设备然后部分通过基于读取LBA执行映射查找以确定位置信息来处理读取命令。
更具体地,示例性主机是如图1B中所示的主机102。如与在图6至图10中一样,该处理开始于不作用的I/O设备(I/O设备关机或复位状态1101),然后随着I/O设备起作用(激活1101A)而继续。主机的处理然后可选地和/或选择性地将所有影子映射条目标记为空并等待命令(命令?1111和否1111N),比如由在主机上执行的软件元件(例如,图1B的OS105、驱动程序107及应用程序109的各种组合)生成的命令。在生成命令之后(是1111Y),则主机确定所生成的命令是哪一个命令,或者可选地是哪种命令类型(解码命令1121)。
如果命令是写入命令,或可选地是写入命令类型(写入1121W),则主机将写入修改的LBA的影子映射条目标记为空(例如使其无效)(将影子映射中的LBA标记为无效1131)并向I/O设备发出写入(发出命令1161)。如果命令是整理命令,或可选地是整理命令类型(整理1121T),则主机将整理相关的LBA的影子映射条目标记为整理的(将影子映射中的LBA标记为整理的1141)并向I/O设备发出整理(发出命令1161)。如果命令是读取命令,或可选地是读取命令类型(读取1121R),则主机检查在读取访问的LBA的影子映射中是否存在任何有效条目(在影子映射中有效的LBA?1151)。如果发现任意有效条目,则主机利用来自有效条目的位置信息向I/O设备发出预映射读取命令,从而在发出命令时可选地省略LBA(发出作为预映射读取的命令(利用来自影子映射的位置)1171)。如果没有发现有效条目(否1151N),则主机利用LBA且不用位置信息发出读取命令(发出命令1161)。如果命令不是写入、整理或读取,或可选地不是写入类型、整理类型或读取类型(其他1121O),则主机向I/O设备发出命令(发出命令1161),可选地包括与命令相关联的任意LBA。
在某些实施方式中,当主机向I/O设备发出命令时(发出命令1161),主机可选地和/或选择性地包括从命令有关的LBA的影子映射的有效条目(如果有的话)获得的信息。例如,如果写入命令的LBA的影子映射中存在有效条目,则当向I/O设备发出写入命令时主机提供来自有效条目的位置和/或长度信息。I/O设备,例如使用位置和/或长度信息来更新所使用的空间簿记(比如UsedSpace[location]-=长度)。在某些实施方式中,当主机发出预映射读取命令时(发出作为预映射读取的命令(利用来自影子映射的位置)1171),主机提供来自应用映射的包括长度和/或跨度信息的位置信息,从而允许I/O设备确定在不访问映射的情况下确定读取多少数据(基于长度和/或跨度)。
主机可选地和/或选择性地基于命令的大小忽略影子映射。长度相对较长的命令,比如参考跨越与各映射条目相关联的LBA的多个单元的数据的命令,在某些实例中具有额外的位置信息(例如,每个LBA单元一个位置信息),从而增加命令的大小。长度相对较长的命令访问I/O设备的顺序映射条目,并把映射访问的成本分摊到多个单元。例如,主机忽略参考大于4KB的数据的读取命令的影子映射。在某些实施方式中,主机可选地和/或可选地将长度相对中间的命令分为多个命令。例如,主机将参考8KB(或16KB)的数据的读取命令分为分别参考4KB的数据的两个(或四个)读取命令。在某些实施方式中,预映射读取命令(或其变型)被启用为指定多个位置信息元素,而在其他实施方式中,预映射读取命令(及其变型)局限于指定单个位置信息元素。在某些实施方式中,访问子部分(例如,I/O设备NVM的4KB部分的一个特定SATA扇区)使用识别特定扇区的额外位置信息。
在某些实施方式和/或使用场景下(比如具有带卡存储器的I/O卡,例如使用图1B的(可选的)卡存储器112C作为影子映射的存储的I/O卡116的某些实施方式),一个或多个I/O设备使用影子映射,而主机不使用。I/O设备可选地和/或选择性地执行如图11中所示的处理的全部或任意部分。例如,当处理写入命令时I/O设备将影子映射中的特定条目标记为无效,当处理整理命令时将其标记为整理的。
低功率操作
图12示出了作为I/O设备睡眠进入/退出1200的进入并退出I/O(例如存储)设备的睡眠状态的实施方式的流程图。在某些实施方式和/或使用场景下,I/O设备睡眠进入/退出1200允许通过以下方式减小功率,允许I/O设备断电或关闭电源,比如通过进入睡眠状态,通过将内部状态的所有或任意部分保存在保存/恢复存储器中,该保存/恢复存储器与I/O设备分开(或选择性地针对该I/O设备进行单独的功率控制)。当I/O设备退出睡眠状态时,内部状态从保存/恢复存储器全部或部分恢复。在某些实施方式和/或使用场景下,从保存/恢复存储器恢复内部状态比从保留在保存/恢复存储器以外中的信息重建内部状态(比如从读取I/O设备的NVM获得的映射信息重建映射信息的缓存)更有效(例如,较低延迟和/或较低功率)。
内部状态的示例是I/O设备的任何易失性状态(比如当I/O设备在睡眠状态下操作时丢失的状态)、映射信息(比如缓存映射信息,例如如图1A和图1B的映射141中保持的,影子映射信息,及多级映射的任意一级或多级),以及由I/O设备保持的统计。保存/恢复存储器的示例是I/O设备可访问且对I/O设备相对本地的存储器(例如(可选的)卡存储器112C)和I/O设备可访问的主机存储器(例如,主机存储器112H,以及影子映射108)。
如与在图6至图9中一样,示例性I/O设备是SSD101的实例,如图1A和图1B所示。同样如与在图6至图9中一样,该处理开始于不作用的I/O设备(I/O设备关机或复位状态1201),然后随着I/O设备变得起作用(激活1201A)并准备操作(I/O设备初始化1211)而继续。
在准备操作之后,I/O设备处于被启用为接收并处理命令并在不充电的情况下执行其他活动的较高功率操作状态(起作用的操作状态1221)。在等待进入较低功率操作状态的请求时(进入睡眠状态?1231和否1231N),I/O设备仍然处于较低功耗操作状态下(起作用的操作状态1221),并执行收到的命令(如果有的话(未示出))。在收到进入较低功率操作状态的请求,比如经由I/O设备的接口接收的显示请求,或响应于静止期由I/O设备生成的隐式请求之后(是1231Y),I/O设备将内部状态的所有或任意部分保存在保存/恢复存储器中(将内部状态保存在保存/恢复存储器中1241)。I/O设备然后进入较低功耗操作状态(睡眠状态1251)。在各种实施方式中,I/O设备以加密的形式,例如通过经由多个加密技术中的任意一个加密,保存内部状态的所有或任意部分。
在等待退出较低功率操作状态的请求时(退出睡眠状态?1261和否1261N),I/O设备仍然处于较低功耗操作状态下(睡眠状态1251)。在收到退出较低功率操作状态的请求之后(是1261Y),I/O设备从保存/恢复存储器恢复保存在保存/恢复存储器中的内部状态的所有或任意部分(从保存/恢复存储器中恢复内部状态1271)。I/O设备然后进入较高功耗操作状态,并且I/O设备中的处理然后沿环路返回(起作用的操作状态1221)。在各种实施方式中,I/O设备从加密形式,例如通过经由多个加密技术中的任意一个解密,恢复内部状态的所有或任意部分。
在各种实施方式中,睡眠状态是关机状态、电源断开状态、功率降低状态、低功率状态、较低功率状态、休眠状态、I/O设备的所有或任意部分关机或断开电源的状态、或I/O设备消耗的功率比完全(例如主动)操作时少的任意操作状态中的任意一项或多项。在各种实施方式中,退出睡眠状态会引起延迟惩罚(和/或功率成本),比如由于经由对NVM的访问重建信息,并经由从保存/恢复存储器读取而恢复信息(而不经由对NVM的访问重建信息)减少延迟惩罚(和/或功率成本)。在各种实施方式中,保存内部状态的所有或任意部分(比如通过与保存/恢复存储器中1241中的保存内部状态相关联的处理)。在某些实施方式中,驱动程序分配主机存储器的一部分以便用作保存/恢复存储器。
组合操作
图13A和图13B分别总体示出了作为I/O设备和计算主机互操作1300A和1300B的I/O(例如存储)设备和计算主机互操作的实施方式的流程图。在本文其他地方,总体描述这两个图,被称为I/O设备和计算主机互操作1300。I/O设备和计算主机互操作1300概念地示出了组合如图6至图12描述的一个或多个功能,比如一次一个和粘性提示、主机提供的位置信息、主机和主机影子映射信息的I/O设备更新及I/O设备内部状态保存和恢复的各种实施方式。
同样在本文其他地方,主机操作1310A和主机操作1310B统称为主机操作1310,并且设备操作1320A和设备操作1320B统称为设备操作1320。主机操作1310描述了由计算主机,比如图1B的主机102执行的操作。设备操作1320描述了由I/O(例如存储)设备,比如图1B的SSD101的实例中的任意一个执行的操作。
处理开始于(如与图6中一样)不作用的I/O设备(I/O设备关机或复位状态1301)。当I/O设备变得起作用时,比如通过通电,过渡至操作和/或作用状态,或退出复位,该处理继续。主机然后(激活1310H)将影子映射的所有条目,比如图1B的影子映射108标记为不具有信息(初始化影子映射,因为全部都无效1311)。I/O设备(激活1301D)准备操作(I/O设备初始化和来自存储器的条件状态恢复1321)。在某些实施方式和/或使用场景下,准备包括可选地和/或有条件地从保存/恢复存储器(例如,图1B的(可选的)卡存储器112C)整体或部分恢复内部状态。在各种实施方式中,I/O设备从加密形式,例如通过经由多个加密技术中的任意一个解密,恢复内部状态的所有或任意部分。在某些实施方式中,主机执行解密的所有或任意部分。
然后,I/O设备可选地和/或选择性地将更新的映射信息(如果有的话)传递至主机(将局部映射(全部或更新)发送至主机1322),(作为至主机1322H)以便主机进一步初始化和/或更新影子映射(初始化/更新影子映射1312)。在某些实例中,在给I/O设备充电之后第一遍通过1322/1312概念地对应于通过发送局部映射(例如,图1B的映射141)的全映像来初始化影子映射,而第二遍通过1322/1312概念地对应于(递增地)更新影子映射,因为通过I/O设备执行命令和/或I/O设备的独立活动,比如回收。在其他实例中,由于LBA被主机引用,因此更新影子映射。在某些实施方式和/或使用场景下,主机可选地和/或选择性地忽略一个或多个映射更新。例如,比如当特定映射更新对应于在主机处理特定映射更新之前由于写入导致主机使其无效的影子映射条目时,主机忽略由于回收活动导致的特定映射更新。
在某些实施方式和/或使用场景下,I/O设备响应于I/O设备进行的不与初始化或命令直接相关的处理将一个或多个更新传递至主机。例如,当I/O设备回收I/O设备NVM的区域时,I/O设备NVM中的LBA与位置之间存在映射的零个或多个变化。I/O设备将映射变化(如果有的话)传递至主机作为一个或多个映射更新,如与1322中一样。
I/O设备中的处理然后根据I/O设备接收进入较低功率操作状态的请求(睡眠1322S)还是命令(命令1322C)执行下去。在收到进入较低功率操作状态的请求之后,I/O设备可选地和/或选择性地将内部状态的所有或任意部分保存在保持/恢复存储器中(接收至存储器的睡眠请求和状态保存1323)。在各种实施方式中,I/O设备以加密形式,例如通过经由多个加密技术中的任意一个加密,保存内部状态的所有或任意部分。在某些实施方式中,主机执行加密的所有或任意部分。I/O设备然后进入较低功率操作状态并返回等待激活(I/O设备关机/睡眠或复位状态1301)。针对以下(接收命令/(提示)(和影子映射信息)1325)描述命令的接收。
在完成初始化影子映射之后,主机可选地利用或使用提示(生成命令(可选的提示)1313)生成(生成1312G)命令,例如经由图1B的OS105、驱动程序107及应用程序109中的任意一个或多个。主机然后可选地和/或选择性地确定命令是否使得存在主机从影子映射提供至I/O设备的有效信息(如果有的话)的实用程序(参考影子映射?1314R)。如果没有(否1314RN),则主机向I/O设备提供命令(可选地利用或使用提示),而无需任何影子映射信息(发送命令/(提示),无影子映射信息1315N)。例如,在某些实施方式中,如果命令是读取,则在某些实例中,存在主机提供位置信息的实用程序,由此允许I/O设备省略确定位置信息并提供延迟减少的读取数据。继续该示例,如果命令是写入,则在某些实例中,存在很少的主机提供位置信息的实用程序或不存在,因为向I/O设备提供位置信息具有很少的性能好处或没有性能好处,因为位置信息对写入处理的性能不太重要。对于另一个示例,在某些实施方式中,如果命令引用单个LBA,则在某些实例中存在主机提供位置信息的实用程序,由此允许I/O设备省略确定位置信息并减少命令的延迟。继续其他示例,如果命令引用多个连续LBA,则在某些实例中,存在很少的主机提供位置信息的实用程序,因为向I/O设备提供位置信息具有很少的性能好处或没有性能好处,由于不管I/O设备是否确定位置信息,命令的平均延迟相对不受影响。
如果存在主机向I/O设备提供有效影子映射信息的实用程序(是1314RY),则主机检查命令有关的LBA的影子映射中是否存在任何有效条目(影子映射有效条目?1314V)。如果没有发现有效条目(否1314VN),则主机向I/O设备发出具有LBA(可选的具有或使用提示)且没有影子映射信息的命令(发送命令/(提示),无影子映射信息1315N)。如果发现任何有效条目(是1314VY),则主机向I/O设备发出具有来自有效条目的影子映射信息的命令,在发出命令是可选的省略LBA(发送命令/(提示)和影子映射信息1315M)。在某些实施方式中,省略1314R,并且针对有效条目非选择性地检查影子映射(例如,处理从1313流至1314V),或可选地从不针对有效条目检查影子映射(例如,处理从1313流至1315N)。
将命令、可选的LBA及可选的提示信息从主机提供给I/O设备(至设备1315D),不管是否来自与1315M还是1315N相关的处理(发送1315S)。在向I/O设备提供命令之后,主机可选地和/或选择性地根据命令和/或其他标准标记与命令相关的LBA的影子映射条目(选择性地修改影子映射信息1316)。主机的处理然后等待来自I/O设备的状态。
一旦收到命令,利用LBA、影子映射(例如,位置)及可选的提示信息(接收命令/(提示)(和影子映射信息)1325)中的零个或多个,I/O设备确定影子映射信息的相关性和存在(影子映射信息?1326)。如果影子映射信息没有针对所接收的命令提供好处(不需要1326U),则I/O设备利用或使用当前模式下的可选的提示信息处理命令(在CurrentMode下处理命令/(提示)1328)。在某些实施方式和/或使用场景下,I/O设备具有主机不可用的信息,并且即使当主机提供来自影子映射的信息时该I/O设备也访问局部映射。例如,影子映射没有完全初始化,并且该设备具有主机缺少的整理信息。对于另一示例,I/O设备确定影子映射信息不完整(例如,某些LBA的信息丢失),比如由于回收和擦除I/O设备NVM的一部分。例如,I/O设备经由预映射读取命令中的位置信息确定已经擦除I/O设备NVM的对应部分,而不使用位置信息,I/O设备访问局部映射以获得位置信息。当前模式可选地和/或选择性地是命令相关的LBA(如果有的话)的功能,进一步可选地和/或选择性地是事先接收的进入/退出特定提示模式的命令的功能。
如果影子映射信息可用于所接收的命令,并且影子映射信息由主机提供(是1326Y),则I/O设备利用或使用当前模式下的可选的提示信息和所提供的影子映射信息处理命令(在CurrentMode下处理命令/(提示)1328)。如果影子映射命令未由主机提供,并且命令的处理取决于映射信息(否1326N),则I/O设备访问本地映射(例如,图1B的映射141)以确定信息,比如执行命令时使用的位置信息(参考局部映射1327)。然后,I/O设备利用或使用当前模式下的可选的提示信息和来自本地映射的映射信息处理命令(在CurrentMode下处理命令/(提示)1328)。
在处理命令之后,I/O设备可选地和/或选择性地将结果信息(至主机1329H)返回主机(发送状态1329)。然后,I/O设备可选地和/或选择性地将更新的映射信息(如果有的话)传递至主机(将局部映射(全部或更新)发送至主机1322),并等待进入较低功率操作状态的请求或命令。等待状态的主机的处理接收状态(接收状态1319),然后等待映射更新(如果有的话),(作为至主机1322H)从I/O设备至影子映射(初始化/更新影子映射1312)。
在某些实施方式和/或使用场景下(比如具有带卡存储器的I/O卡,例如使用图1B的(可选的)卡存储器112C作为影子映射的存储的I/O卡116的某些实施方式),I/O设备使用影子映射,而无需涉及主机。I/O设备初始化影子映射并将影子更新(如果有的话)应用到影子映射。I/O设备可选地和/或选择性地方为影子映射(代替或补充局部映射)以获得位置信息。
在各种实施方式(比如全部或部分通过图6至图13A/B中的一个或多个描述的实施方式)中,各种主机命令导致取决于影子映射条目状态的主机处理,如下表所述。在该表中,当影子映射条目状态有效时,斜体的元素是可选的,比如位置、长度、跨度作为写入命令的命令参数。
对于针对表的示例,考虑读取命令,该读取命令与有效影子映射条目指示LBA未被整理的LBA相关。主机经由具有来自有效影子映射条目的位置的参数的PreMappedRead命令传递来自有效影子映射条目的信息。可选地,主机还传递来自有效影子映射条目的长度和/或跨度信息。向I/O设备提供位置、长度和/或跨度信息减少了I/O设备的处理,因为省略了对否则被执行的局部映射的访问。再如,考虑读取命令,该读取命令与有效影子映射条目指示LBA已经被整理的LBA相关。由于不存在读取的有用数据(因为该数据已经被整理),因此在某些实施方式中,不向I/O设备发送命令(NoOp),由此减少和/或消除I/O设备进行的无用处理。在其他实施方式中,即使影子映射条目指示LBA已经被整理,也向I/O设备发送读取命令(Read(LBA))。向I/O设备发送读取命令允许I/O设备(而不是主机)确定返回数据以便读取整理的LBA。在进一步实施方式中,读取命令提供有来自影子映射条目的长度和/或跨度信息。长度和/或跨度信息编码多个整理类型之一,并且I/O设备确定返回数据以便至少部分基于编码读取。
其他实施方式信息
在前述描述中,命令被描述成从主机发送至(例如,发出)I/O设备(例如,图6的621、图7的721、图8的821、图9的931、图11的1161及图13A/13B的1315S/1325),并且结果被描述成从I/O设备返回主机(例如,图6的661、图7的761、图8的881、图9的971和991、图10的1021及图13A/13B的1329/1319和1322/1312)。在各种实施方式和/或使用场景下、命令经由编程的I/O、DMA、至工作队列的条目、写入一个或多个命令、模式、和/或I/O设备的配置寄存器和/或配置页、从主机“推送”至I/O设备,由I/O设备从主机“拉动”、以及提供从主机至I/O设备传递命令的其他技术发送。在各种实施方式和/或使用场景下,结果经由至主机存储器的I/O设备访问、DMA、至完整队列的条目、来自I/O设备的一个或多个状态寄存器和/或日志页的读取、从I/O设备“推送(push)”至主机、由主机从I/O设备“拉动(pull)”、以及提供从I/O设备至主机传递结果的其他技术发送。在某些实施方式中,将多个结果分组为完整队列并且主机可选地和/或选择性地被告知有关一次一个以上命令的粒度的结果(例如经由中断机制)。在某些实施方式中,所更新的映射信息响应于主机请求映射更新,例如经由主机读取I/O设备的日志页并响应于I/O设备向主机发送一个或多个映射更新由I/O设备提供给主机。
在前文中描述的某些实施方式中,某些粘性提示可选地和/或选择性地记录在一个或多个映射条目中并且可选地记录在一个或多个影子映射条目中(例如,在图7的741和/或781、图8的842、852和/或872及图13A/13B的1328中的任意一个或多个的处理和/或与其相关的处理中)。例如,数据提示的类型被用作粘性提示并记录在提供有提示的LBA的映射条目中并且可选地和/或选择性地提供对应的影子映射更新。根据记录在LBA的映射条目中的数据提示的类型处理对LBA的后续引用。可用作粘性提示的提示的其他示例是数据访问类型提示、数据序列提示、数据关系提示及数据目的地提示。
在各种实施方式中,例如利用一个或多个状态机来实现图6到图13A/13B描述的操作和/或功能的所有或任意部分。状态机的示例性实现包括硬件(例如,逻辑门和/或电路、专用状态机电路或硬连线控制电路)、软件(例如,固件或微码)或硬件和软件的组合。在某些实施方式中,状态机中的一个或多个至少部分经由固件、驱动程序和/或应用程序来实现。在各种实施方式中,状态机中的一个或多个部分经由图1A的SSD控制器100、部分经由CPU内核172执行的固件、部分经由图1B的固件106、部分经由驱动程序107和/或部分通过应用程序109来实现。
在各种实施方式中,图6到图13A/13B描述的操作和/或功能的所有或任意部分例如通过,在命令管理173、转换管理177和或图1A的映射141中的任意一个或多个的控制下,和/或根据其中的任意一个或多个,经由硬件和/或固件技术的任意组合来实现。
在各种实施方式中,HBA将主机的元件(例如,一个或多个处理器和一个或多个存储器)耦接至I/O设备,例如I/O存储设备比如SATA驱动器。将HBA耦接至处理器和/或存储器至少部分经由一个或多个I/O设备通信接口、总线和/或信道(比如PCIe接口)进行。一些处理器执行与I/O设备通信的OS、驱动程序和/或应用程序软件元件。在某些实施方式中,主机的元件与HBA之间的传送与AHCI兼容,并且T13兼容ATA命令通过HBA传递至I/O设备的SSD的SATA或PCIe接口。在其他实施方式中,主机的元件与HBA之间的传送与NVM Express兼容,并且具有至少一些属性的类似于T13兼容ATA命令的命令通过HBA传递至I/O设备的SSD的PCIe接口。在某些实施方式中,HBA包括在主机中,而在其他实施方式中,HBA包括在I/O设备中。在某些实施方式中,省略HBA,并且I/O设备耦接至(没有明确的HBA)一个或多个I/O设备通信接口、总线和/或信道(比如PCIe接口)。
例如,在图1B的上下文中,主机102包括允许在主机上运行的软件(例如,OS105、驱动程序107和/或应用程序109)与SSD101(例如,具有主机接口111中包括的SATA兼容主机接口)之间进行通信的HBA。通信包括将命令从软件传递至SSD。传送命令经由AHCI进行,并将T13兼容ATA命令提供给SSD的SATA接口。因此,比如针对图6-图13A/13B描述的命令和/或结果经由AHCI传送进行传输。
再如,在图1B的上下文中,主机102包括允许与交换机/光纤/中间控制器103通信的芯片组,并且中间接口104和外部接口110是PCIe兼容的(例如,SSD101具有主机接口111中包括的PCIe接口)。芯片组和交换机/光纤/中间控制器103允许在主机的OS、驱动程序和/或应用程序软件与SSD101之间进行通信,包括传递命令。传送命令经由NVM Express进行,并将具有至少一些属性的类似于T13兼容ATA命令的命令提供给SSD的PCIe接口。因此,比如针对图6到图13A/13B描述的命令和/或结果经由NVM Express传送进行传输。
示例性实现技术
在某些实施方式中,由I/O设备或其部分,例如被启用为与主机(比如计算主机)互操作的I/O设备的例如具有闪存的SSD控制器、计算主机闪存控制器和/或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 (32)
1.一种方法,包括:
在I/O设备处从计算主机接收包括规定的命令,所述规定包括多个非标准规定中的至少一个,所述非标准规定包括一个或多个非标准命令修改符;
响应于包括所述非标准命令修改符中的特定非标准命令修改符的规定,根据所述特定非标准命令修改符执行所述命令;并且
其中,所述非标准规定中的至少一个标识多个数据目的地中的特定数据目的地,所述数据目的地包括多个数据频带。
2.一种方法,包括:
在计算主机处,向I/O设备提供命令,所述命令包括规定,所述规定包括多个非标准规定中的至少一个,所述非标准规定包括一个或多个非标准命令修改符;
其中,响应于包括所述非标准命令修改符中的特定非标准命令修改符的规定,所述I/O设备根据所述特定非标准命令修改符执行所述命令;并且
其中,所述非标准规定中的至少一个标识多个数据目的地中的特定数据目的地,所述数据目的地包括多个数据频带。
3.根据权利要求1或2所述的方法,其中,所述数据频带对应于数据库日志数据频带、热数据频带和冷数据频带中的一个或多个。
4.根据权利要求3所述的方法,其中,所述数据库日志数据频带被预留给数据库日志类型数据。
5.根据权利要求4所述的方法,其中,所述数据库日志数据频带中的最旧数据可选地和/或可选地被自动删除。
6.根据权利要求3所述的方法,其中,所述热数据频带至少用于源自所述计算主机的数据。
7.根据权利要求6所述的方法,其中,计算主机包括以下各项中的一项或多项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
个人数字助理(PDA),
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳手持电话,以及
电子游戏机。
8.根据权利要求6所述的方法,其中,响应于所述计算主机写入相对较长的连续流,所述热数据频带的大小增加。
9.根据权利要求3所述的方法,其中,所述冷数据频带至少用于来自回收站的数据。
10.一种方法,包括:
在I/O设备处从计算主机接收包括规定的命令,所述规定包括多个非标准规定中的至少一个,所述非标准规定包括一个或多个非标准命令修改符;
响应于包括所述非标准命令修改符中的特定非标准命令修改符的规定,根据所述特定非标准命令修改符执行所述命令,根据所述特定非标准命令修改符执行所述命令包括存储具有所述命令的数据的非标准命令修改符的指示;以及
访问所述指示以确定整理、而非回收所述数据的所有或任意部分。
11.根据权利要求1、2或10所述的方法,其中,接收包括启用特定非标准修改符的模式设置规定的模式设置命令使得在所述模式设置命令之后接收的标准命令可选地和/或选择性地被根据所述特定非标准修改符处理。
12.根据权利要求1、2或10所述的方法,其中,所述非标准规定中的至少一个指定以下各项中的一项或多项:
数据的类型;
数据访问类型;
数据序列顺序;
数据关系;以及
命令关系。
13.根据权利要求1、2或10所述的方法,其中,所述命令包括至少部分由所述计算主机从与所述计算主机耦接的I/O卡的存储器设备获得的位置信息。
14.一种系统,包括:
I/O设备,其包括用于从计算主机接收命令的构件,所述命令包括规定,所述规定包括多个非标准规定中的至少一个,所述非标准规定包括一个或多个非标准命令修改符;
其中,所述I/O设备进一步包括:用于响应于包括所述非标准命令修改符中的特定非标准命令修改符的规定而根据所述特定非标准命令修改符执行所述命令的构件;并且
其中,所述非标准规定中的至少一个标识多个数据目的地中的特定数据目的地,所述数据目的地包括多个数据频带。
15.一种系统,包括:
计算主机,包括用于向I/O设备提供命令的构件,所述命令包括规定,所述规定包括多个非标准规定中的至少一个,所述非标准规定包括一个或多个非标准命令修改符;
其中,响应于包括所述非标准命令修改符中的特定非标准命令修改符的规定,所述I/O设备根据所述特定非标准命令修改符执行所述命令;并且
其中,所述非标准规定中的至少一个标识多个数据目的地中的特定数据目的地,所述数据目的地包括多个数据频带。
16.根据权利要求14或15所述的系统,其中,所述数据频带对应于数据库日志数据频带、热数据频带和冷数据频带中的一个或多个。
17.根据权利要求16所述的系统,其中,所述数据库日志数据频带被预留给数据库日志类型数据。
18.根据权利要求17所述的系统,其中,所述数据库日志数据频带中的最旧数据可选地和/或选择性地被自动删除。
19.根据权利要求16所述的系统,其中,所述热数据频带至少用于源自所述计算主机的数据。
20.根据权利要求19所述的系统,其中,所述计算主机包括以下各项中的任意一项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
个人数字助理(PDA),
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳手持电话,以及
电子游戏机。
21.根据权利要求19所述的系统,其中,响应于所述计算主机写入相对较长的连续流,所述热数据频带的大小增加。
22.根据权利要求16所述的系统,其中,所述冷数据频带至少用于来自回收站的数据。
23.一种系统,包括:
I/O设备,包括用于从计算主机接收命令的构件,所述命令包括规定,所述规定包括多个非标准规定中的至少一个,所述非标准规定包括一个或多个非标准命令修改符;
其中,所述I/O设备进一步包括:用于响应于包括所述非标准命令修改符中的特定非标准命令修改符的规定而根据所述特定非标准命令修改符执行所述命令的构件,所述用于根据所述特定非标准命令修改符执行所述命令的构件包括用于存储具有所述命令的数据的所述非标准命令修改符的指示的构件;以及
用于访问所述指示以确定整理、而非回收所述数据的所有或任意部分的构件。
24.根据权利要求14、15或23所述的系统,其中,接收包括启用特定非标准修改符的模式设置规定的模式设置命令使得在所述模式设置命令之后接收的标准命令可选地和/或选择性地被根据所述特定非标准修改符处理。
25.根据权利要求14、15或23所述的系统,其中,所述非标准规定中的至少一个指定以下各项中的一项或多项:
数据的类型;
数据访问类型;
数据序列顺序;
数据关系;以及
命令关系。
26.根据权利要求14、15或23所述的系统,其中,所述命令包括至少部分由所述计算主机从与所述计算主机耦接的I/O卡的存储器设备获得的位置信息。
27.一种系统,包括:
用于在I/O设备中经由外部接口从计算主机接收命令的构件;
用于确定所述命令的类型的构件;
用于响应于所述类型是读取命令而访问映射以转换所述命令的逻辑块地址(LBA)以获得选择性地包括非易失性存储器(NVM)中的位置的转换后的LBA信息的构件;
用于响应于所述类型是预映射读取命令而从所述预映射读取命令的信息确定所述非易失性存储器中的位置且不使用所述映射的构件;
用于返回与所述位置对应的数据的构件;并且
其中,所述信息包括所述转换后的LBA信息的至少一部分。
28.根据权利要求27所述的系统,其中,所述位置是第一位置,所述信息是第一信息,并且所述系统进一步包括:
用于响应于所述类型是写入命令而将所述写入命令的数据写入所述非易失性存储器中的第二位置的构件;
用于响应于所述类型是写入命令而存储所述写入命令的LBA与所述映射中的所述第二位置之间的关联性的构件;
用于响应于所述类型是写入命令而将包括根据所述第二位置的第二信息的更新发送至所述映射的影子副本的构件;并且
其中,所述第一信息至少部分从所述影子副本获得,并且所述影子副本至少部分存储在与所述计算主机耦接的I/O卡的存储器设备中。
29.一种系统,包括:
用于在I/O设备处接收指示以进入低功率状态的构件;
用于将所述I/O设备的内部状态保存在计算主机的系统可访问存储器中的构件;
用于在所述I/O设备处接收指示以退出所述低功率状态的构件;以及
用于从所述系统可访问存储器恢复所述I/O设备的内部状态的构件。
30.根据权利要求29所述的系统,其中,所述系统可访问存储器包括与所述计算主机耦接的I/O卡的存储器设备,所述I/O设备的内部状态包括选择性地使所述I/O设备的逻辑块地址(LBA)与所述I/O设备的非易失性存储器(NVM)中的位置相关联的映射的至少一部分的影子副本,并且所述映射非易失性地存储在所述非易失性存储器中。
31.一种系统,包括:
用于在I/O设备处接收包括标准命令和非标准修改符的规定的扩展命令的构件;
用于根据所述非标准修改符执行所述标准命令的构件;并且
其中,系统级性能由于使用所述非标准修改符以修改所述标准命令的执行而提高。
32.根据权利要求31所述的系统,其中,所述扩展命令包括至少部分由计算主机从与所述计算主机耦接的I/O卡的存储器设备获得的位置信息。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161521739P | 2011-08-09 | 2011-08-09 | |
US61/521,739 | 2011-08-09 | ||
US201161531551P | 2011-09-06 | 2011-09-06 | |
US61/531,551 | 2011-09-06 | ||
US201161543666P | 2011-10-05 | 2011-10-05 | |
US61/543,666 | 2011-10-05 | ||
PCT/US2012/049905 WO2013022915A1 (en) | 2011-08-09 | 2012-08-08 | I/o device and computing host interoperation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103858116A true CN103858116A (zh) | 2014-06-11 |
CN103858116B CN103858116B (zh) | 2015-09-02 |
Family
ID=47668897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280049511.1A Active CN103858116B (zh) | 2011-08-09 | 2012-08-08 | I/o设备及计算主机互操作 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9389805B2 (zh) |
EP (1) | EP2742429A4 (zh) |
JP (1) | JP2014522066A (zh) |
KR (2) | KR101438716B1 (zh) |
CN (1) | CN103858116B (zh) |
TW (1) | TWI584125B (zh) |
WO (1) | WO2013022915A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201763A (zh) * | 2015-05-22 | 2016-12-07 | 德克萨斯仪器股份有限公司 | 双模式纠错码/可写入一次存储器编解码器 |
CN106575270A (zh) * | 2014-08-21 | 2017-04-19 | 松下知识产权经营株式会社 | 记录介质、适配器以及信息处理装置 |
CN106708441A (zh) * | 2016-12-29 | 2017-05-24 | 忆正科技(武汉)有限公司 | 一种用于降低固态存储读延迟的操作方法 |
CN107391049A (zh) * | 2017-09-08 | 2017-11-24 | 南宁磁动电子科技有限公司 | 存储连接设备及存储系统 |
CN107479938A (zh) * | 2017-09-27 | 2017-12-15 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN108292196A (zh) * | 2015-12-02 | 2018-07-17 | 净睿存储股份有限公司 | 将数据写入包括第一类型的存储设备和第二类型的存储设备的存储系统 |
CN108604208A (zh) * | 2016-02-05 | 2018-09-28 | 霍尼韦尔国际公司 | 用以促进与不可访问的输入/输出(i/o)设备的处理器通信的中继机制 |
CN109213425A (zh) * | 2017-06-30 | 2019-01-15 | 北京忆恒创源科技有限公司 | 利用分布式缓存在固态存储设备中处理原子命令 |
CN111045594A (zh) * | 2018-10-11 | 2020-04-21 | 西部数据技术公司 | 用以流命令翻译器的分区块命令 |
CN111309647A (zh) * | 2018-12-12 | 2020-06-19 | 爱思开海力士有限公司 | 电子装置 |
CN111813345A (zh) * | 2020-07-17 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种数据传输方法、装置、服务器及可读存储介质 |
TWI730600B (zh) * | 2020-01-21 | 2021-06-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 |
CN113326001A (zh) * | 2021-05-20 | 2021-08-31 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
TWI789650B (zh) * | 2020-11-26 | 2023-01-11 | 神雲科技股份有限公司 | 整合控制管理系統 |
US11762764B1 (en) | 2015-12-02 | 2023-09-19 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
Families Citing this family (134)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
WO2013022915A1 (en) | 2011-08-09 | 2013-02-14 | Lsi Corporation | I/o device and computing host interoperation |
US8738866B2 (en) * | 2012-05-02 | 2014-05-27 | Hitachi, Ltd. | Storage system and control method therefor |
US20140047210A1 (en) * | 2012-08-08 | 2014-02-13 | Lsi Corporation | Trim mechanism using multi-level mapping in a solid-state media |
US9207749B2 (en) * | 2012-08-28 | 2015-12-08 | Intel Corporation | Mechanism for facilitating efficient operations paths for storage devices in computing systems |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9071281B2 (en) * | 2013-03-10 | 2015-06-30 | Intel Corporation | Selective provision of error correction for memory |
US9585008B2 (en) * | 2013-04-19 | 2017-02-28 | Qualcomm Incorporated | Apparatus and methods for signaling out-of-standard capability in wireless communication networks |
US9882984B2 (en) * | 2013-08-02 | 2018-01-30 | International Business Machines Corporation | Cache migration management in a virtualized distributed computing system |
US9891927B2 (en) * | 2013-08-28 | 2018-02-13 | Via Technologies, Inc. | Inter-core communication via uncore RAM |
KR101547317B1 (ko) * | 2013-09-30 | 2015-08-26 | 주식회사 유니테스트 | 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템 |
TWI516921B (zh) * | 2013-10-02 | 2016-01-11 | 群聯電子股份有限公司 | 資料處理方法、記憶體儲存裝置與記憶體控制電路單元 |
US9612773B2 (en) * | 2013-11-21 | 2017-04-04 | Samsung Electronics Co., Ltd. | User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof |
KR102103543B1 (ko) * | 2013-11-28 | 2020-05-29 | 삼성전자 주식회사 | 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템 |
US10013344B2 (en) | 2014-01-14 | 2018-07-03 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Enhanced SSD caching |
US9509769B2 (en) * | 2014-02-28 | 2016-11-29 | Sap Se | Reflecting data modification requests in an offline environment |
US9990298B2 (en) | 2014-05-12 | 2018-06-05 | Western Digital Technologies, Inc | System and method for caching solid state device read request results |
EP3048775B1 (en) * | 2014-05-29 | 2018-03-14 | Huawei Technologies Co. Ltd. | Service processing method, related device and system |
US9652415B2 (en) | 2014-07-09 | 2017-05-16 | Sandisk Technologies Llc | Atomic non-volatile memory data transfer |
TWI540582B (zh) * | 2014-07-10 | 2016-07-01 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US9904621B2 (en) | 2014-07-15 | 2018-02-27 | Sandisk Technologies Llc | Methods and systems for flash buffer sizing |
US9645744B2 (en) | 2014-07-22 | 2017-05-09 | Sandisk Technologies Llc | Suspending and resuming non-volatile memory operations |
KR102249810B1 (ko) * | 2014-07-23 | 2021-05-11 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US20160034185A1 (en) * | 2014-07-30 | 2016-02-04 | Lsi Corporation | Host-based device driver splitting of input/out for redundant array of independent disks systems |
CN104281533B (zh) * | 2014-09-18 | 2018-03-20 | 深圳市中博科创信息技术有限公司 | 一种存储数据的方法及装置 |
US9952978B2 (en) | 2014-10-27 | 2018-04-24 | Sandisk Technologies, Llc | Method for improving mixed random performance in low queue depth workloads |
US9753649B2 (en) | 2014-10-27 | 2017-09-05 | Sandisk Technologies Llc | Tracking intermix of writes and un-map commands across power cycles |
US9558125B2 (en) * | 2014-10-27 | 2017-01-31 | Sandisk Technologies Llc | Processing of un-map commands to enhance performance and endurance of a storage device |
US9824007B2 (en) | 2014-11-21 | 2017-11-21 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US9817752B2 (en) | 2014-11-21 | 2017-11-14 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US10423339B2 (en) * | 2015-02-02 | 2019-09-24 | Western Digital Technologies, Inc. | Logical block address mapping for hard disk drives |
WO2016135618A1 (en) * | 2015-02-26 | 2016-09-01 | Strato Scale Ltd. | Ordering schemes for network and storage i/o requests for minimizing workload idle time and inter-workload interference |
US9647697B2 (en) | 2015-03-16 | 2017-05-09 | Sandisk Technologies Llc | Method and system for determining soft information offsets |
US9772796B2 (en) | 2015-04-09 | 2017-09-26 | Sandisk Technologies Llc | Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address |
US10437747B2 (en) * | 2015-04-10 | 2019-10-08 | Rambus Inc. | Memory appliance couplings and operations |
US9864545B2 (en) | 2015-04-14 | 2018-01-09 | Sandisk Technologies Llc | Open erase block read automation |
US9753653B2 (en) | 2015-04-14 | 2017-09-05 | Sandisk Technologies Llc | High-priority NAND operations management |
US10372529B2 (en) | 2015-04-20 | 2019-08-06 | Sandisk Technologies Llc | Iterative soft information correction and decoding |
US9778878B2 (en) | 2015-04-22 | 2017-10-03 | Sandisk Technologies Llc | Method and system for limiting write command execution |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
US9959206B2 (en) | 2015-05-19 | 2018-05-01 | Toshiba Memory Corporation | Memory system and method of controlling cache memory |
US9870149B2 (en) | 2015-07-08 | 2018-01-16 | Sandisk Technologies Llc | Scheduling operations in non-volatile memory devices using preference values |
US11983138B2 (en) | 2015-07-26 | 2024-05-14 | Samsung Electronics Co., Ltd. | Self-configuring SSD multi-protocol support in host-less environment |
US10127968B2 (en) | 2015-08-03 | 2018-11-13 | Intel Corporation | Method and apparatus for completing pending write requests to volatile memory prior to transitioning to self-refresh mode |
JP6460940B2 (ja) * | 2015-08-06 | 2019-01-30 | 東芝メモリ株式会社 | 記憶装置およびデータ退避方法 |
US9715939B2 (en) | 2015-08-10 | 2017-07-25 | Sandisk Technologies Llc | Low read data storage management |
US10055142B1 (en) * | 2015-10-13 | 2018-08-21 | Maxlinear Asia Singapore Pte Ltd. | Apparatus and method for command processing for a fast block input/output device |
US10108340B2 (en) * | 2015-10-21 | 2018-10-23 | Western Digital Technologies, Inc. | Method and system for a common processing framework for memory device controllers |
US9886196B2 (en) | 2015-10-21 | 2018-02-06 | Western Digital Technologies, Inc. | Method and system for efficient common processing in memory device controllers |
KR101728864B1 (ko) * | 2015-10-30 | 2017-04-20 | (주)에프씨아이 | 플래시 메모리 관리 방법, 장치 및 컴퓨터 프로그램 |
US10228990B2 (en) | 2015-11-12 | 2019-03-12 | Sandisk Technologies Llc | Variable-term error metrics adjustment |
US10126970B2 (en) | 2015-12-11 | 2018-11-13 | Sandisk Technologies Llc | Paired metablocks in non-volatile storage device |
CN105512007B (zh) * | 2015-12-17 | 2018-12-04 | 英业达科技有限公司 | 一种pcie硬盘状态灯的控制方法及系统 |
US9959046B2 (en) * | 2015-12-30 | 2018-05-01 | Samsung Electronics Co., Ltd. | Multi-streaming mechanism to optimize journal based data storage systems on SSD |
US9837146B2 (en) | 2016-01-08 | 2017-12-05 | Sandisk Technologies Llc | Memory system temperature management |
US9875811B2 (en) * | 2016-01-13 | 2018-01-23 | Macronix International Co., Ltd. | Method and device for reading a memory |
TWI621125B (zh) * | 2016-01-26 | 2018-04-11 | 旺宏電子股份有限公司 | 記憶體之讀取方法與裝置 |
US10732856B2 (en) | 2016-03-03 | 2020-08-04 | Sandisk Technologies Llc | Erase health metric to rank memory portions |
JP6444917B2 (ja) | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
KR102514388B1 (ko) | 2016-03-25 | 2023-03-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10156999B2 (en) | 2016-03-28 | 2018-12-18 | Seagate Technology Llc | Dynamic bandwidth reporting for solid-state drives |
US20170285975A1 (en) * | 2016-04-01 | 2017-10-05 | Sanjeev N. Trika | Technologies for managing immutable data on a data storage device |
TWI622923B (zh) * | 2016-05-04 | 2018-05-01 | 群聯電子股份有限公司 | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 |
CN107506135B (zh) * | 2016-06-14 | 2022-05-06 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置及系统 |
JP2017224113A (ja) | 2016-06-14 | 2017-12-21 | 東芝メモリ株式会社 | 記憶装置 |
US11217286B2 (en) | 2016-06-27 | 2022-01-04 | SK Hynix Inc. | Semiconductor memory device with power down operation |
US10147471B2 (en) * | 2016-08-02 | 2018-12-04 | SK Hynix Inc. | Semiconductor devices and semiconductor systems |
US11133042B2 (en) | 2016-06-27 | 2021-09-28 | SK Hynix Inc. | Semiconductor memory system and semiconductor memory device, which can be remotely initialized |
US10181346B2 (en) | 2016-08-02 | 2019-01-15 | SK Hynix Inc. | Semiconductor devices and operations thereof |
KR102592359B1 (ko) | 2016-06-27 | 2023-10-20 | 에스케이하이닉스 주식회사 | 반도체장치 |
US10481830B2 (en) | 2016-07-25 | 2019-11-19 | Sandisk Technologies Llc | Selectively throttling host reads for read disturbs in non-volatile memory system |
US10346041B2 (en) | 2016-09-14 | 2019-07-09 | Samsung Electronics Co., Ltd. | Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host |
US20190109720A1 (en) | 2016-07-26 | 2019-04-11 | Samsung Electronics Co., Ltd. | Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd |
US10372659B2 (en) | 2016-07-26 | 2019-08-06 | Samsung Electronics Co., Ltd. | Multi-mode NMVE over fabrics devices |
US11461258B2 (en) | 2016-09-14 | 2022-10-04 | Samsung Electronics Co., Ltd. | Self-configuring baseboard management controller (BMC) |
US11144496B2 (en) | 2016-07-26 | 2021-10-12 | Samsung Electronics Co., Ltd. | Self-configuring SSD multi-protocol support in host-less environment |
US10210123B2 (en) | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
JP2018120439A (ja) | 2017-01-25 | 2018-08-02 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10579273B2 (en) * | 2017-05-03 | 2020-03-03 | International Business Machines Corporation | Maintaining correct I/O statistics for altered data migrated within a tiered storage environment |
US9905294B1 (en) * | 2017-05-03 | 2018-02-27 | Seagate Technology Llc | Writing logically offset pages of data to N-level memory cells coupled to a common word line |
US10191911B2 (en) * | 2017-05-27 | 2019-01-29 | Plesk International Gmbh | Permanent website hosting on mobile devices |
US10990291B2 (en) * | 2017-06-12 | 2021-04-27 | Dell Products, L.P. | Software assist memory module hardware architecture |
US10275162B2 (en) | 2017-06-23 | 2019-04-30 | Dell Products L.P. | Methods and systems for managing data migration in solid state non-volatile memory |
US10339073B2 (en) * | 2017-06-29 | 2019-07-02 | Keysight Technologies, Inc. | Systems and methods for reducing write latency |
US10908998B2 (en) | 2017-08-08 | 2021-02-02 | Toshiba Memory Corporation | Managing function level reset in an IO virtualization-enabled storage device |
US10446197B2 (en) | 2017-08-31 | 2019-10-15 | Micron Technology, Inc. | Optimized scan interval |
CN109558271B (zh) * | 2017-09-26 | 2023-02-24 | 深圳大心电子科技有限公司 | 数据备份方法、数据恢复方法以及存储控制器 |
US10754580B2 (en) | 2017-10-23 | 2020-08-25 | Micron Technology, Inc. | Virtual partition management in a memory device |
KR102543059B1 (ko) | 2017-11-22 | 2023-06-14 | 삼성전자주식회사 | 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 |
WO2019113729A1 (en) | 2017-12-11 | 2019-06-20 | Micron Technology, Inc. | Scheme to improve efficiency of garbage collection in cached flash translation layer |
KR20190090268A (ko) * | 2018-01-24 | 2019-08-01 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US10365854B1 (en) | 2018-03-19 | 2019-07-30 | Micron Technology, Inc. | Tracking data temperatures of logical block addresses |
KR102583592B1 (ko) * | 2018-03-27 | 2023-10-06 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US10534551B1 (en) * | 2018-06-22 | 2020-01-14 | Micron Technology, Inc. | Managing write operations during a power loss |
US10725941B2 (en) | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US10409511B1 (en) | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
US11115490B2 (en) * | 2018-07-31 | 2021-09-07 | EMC IP Holding Company LLC | Host based read cache for san supporting NVMEF with E2E validation |
US10592144B2 (en) | 2018-08-03 | 2020-03-17 | Western Digital Technologies, Inc. | Storage system fabric with multichannel compute complex |
JP6995723B2 (ja) * | 2018-09-19 | 2022-01-17 | キオクシア株式会社 | メモリシステム、ストレージシステム、および制御方法 |
US11221768B2 (en) | 2018-10-29 | 2022-01-11 | International Business Machines Corporation | Safe shared volume access |
US10922178B2 (en) * | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
KR20200049051A (ko) | 2018-10-31 | 2020-05-08 | 삼성전자주식회사 | 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법 |
KR20200073604A (ko) * | 2018-12-14 | 2020-06-24 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그 동작 방법 |
KR20200076531A (ko) | 2018-12-19 | 2020-06-29 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR20200088709A (ko) | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR20200099882A (ko) | 2019-02-15 | 2020-08-25 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR102659832B1 (ko) * | 2019-03-05 | 2024-04-22 | 삼성전자주식회사 | 데이터 저장 장치 및 시스템 |
US10698844B1 (en) * | 2019-04-19 | 2020-06-30 | EMC IP Holding Company LLC | Intelligent external storage system interface |
US11151063B2 (en) | 2019-04-19 | 2021-10-19 | EMC IP Holding Company LLC | Host system directly connected to internal switching fabric of storage system |
US11500549B2 (en) * | 2019-04-19 | 2022-11-15 | EMC IP Holding Company LLC | Secure host access to storage system resources via storage system interface and internal switching fabric |
US10782906B1 (en) * | 2019-07-17 | 2020-09-22 | Micron Technology, Inc. | Memory subsystem interface to relate data and to retrieve related data |
US11210010B2 (en) * | 2019-07-30 | 2021-12-28 | International Business Machines Corporation | Data migration in a multi-tiered storage system |
US11074182B2 (en) | 2019-08-22 | 2021-07-27 | Micron Technology, Inc. | Three tiered hierarchical memory systems |
US11295806B2 (en) | 2019-08-28 | 2022-04-05 | Micron Technology, Inc. | Large file integrity techniques |
US11210024B2 (en) | 2019-12-16 | 2021-12-28 | International Business Machines Corporation | Optimizing read-modify-write operations to a storage device by writing a copy of the write data to a shadow block |
US11500747B2 (en) * | 2020-01-30 | 2022-11-15 | Dell Products L.P. | Computer initialization debug message display system |
KR20210097353A (ko) * | 2020-01-30 | 2021-08-09 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
TWI760760B (zh) * | 2020-04-13 | 2022-04-11 | 慧榮科技股份有限公司 | 控制閃存裝置存取的電腦程式產品及方法及裝置 |
US20220035663A1 (en) * | 2020-07-31 | 2022-02-03 | EMC IP Holding Company LLC | Techniques for managing cores for storage |
JP2022050018A (ja) | 2020-09-17 | 2022-03-30 | キオクシア株式会社 | 電子装置及び転送方法 |
US11775210B2 (en) * | 2020-10-14 | 2023-10-03 | Western Digital Technologies, Inc. | Storage system and method for device-determined, application-specific dynamic command clustering |
KR20220049215A (ko) * | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 메모리 장치, 호스트 장치 및 이들을 포함하는 메모리 시스템 |
US11468202B2 (en) | 2020-12-15 | 2022-10-11 | Texas Instruments Incorporated | Hardware-based security authentication |
KR20220101349A (ko) | 2021-01-11 | 2022-07-19 | 삼성전자주식회사 | 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 |
CN116897343A (zh) * | 2021-02-16 | 2023-10-17 | 美光科技公司 | 用于管理多种类型的存储器的控制器 |
US11500548B2 (en) * | 2021-03-04 | 2022-11-15 | Micron Technology, Inc. | Memory physical presence security identification |
JP2022137811A (ja) * | 2021-03-09 | 2022-09-22 | キオクシア株式会社 | 情報処理システム、ストレージデバイスおよびホスト |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
JP2023045867A (ja) | 2021-09-22 | 2023-04-03 | キオクシア株式会社 | メモリシステム |
TWI818762B (zh) * | 2022-10-11 | 2023-10-11 | 慧榮科技股份有限公司 | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 |
TWI805505B (zh) * | 2022-10-11 | 2023-06-11 | 慧榮科技股份有限公司 | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306252A (zh) * | 2000-01-18 | 2001-08-01 | 三星电子株式会社 | 计算机控制便携式个人设备的方法及其该设备的操作方法 |
CN101176062A (zh) * | 2005-03-02 | 2008-05-07 | 6002552加拿大有限公司 | 一种经usb装置传输扩展命令的方法和协议 |
CN100504830C (zh) * | 2007-01-08 | 2009-06-24 | 中国信息安全产品测评认证中心 | 一种智能卡和u盘复合设备及其与计算机通信的方法 |
CN101689246A (zh) * | 2007-06-21 | 2010-03-31 | 株式会社东芝 | 存储器装置、电子装置以及主机设备 |
US20110060863A1 (en) * | 2009-09-10 | 2011-03-10 | Kabushiki Kaisha Toshiba | Controller |
WO2011074712A1 (en) * | 2009-12-18 | 2011-06-23 | Kabushiki Kaisha Toshiba | Semiconductor storage device and personal computer |
Family Cites Families (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4942552A (en) * | 1986-11-20 | 1990-07-17 | Allen-Bradley Company, Inc. | Method and apparatus for saving and performing industrial control commands |
US5210660A (en) | 1990-01-17 | 1993-05-11 | International Business Machines Corporation | Sectored servo independent of data architecture |
US5278703A (en) | 1991-06-21 | 1994-01-11 | Digital Equipment Corp. | Embedded servo banded format for magnetic disks for use with a data processing system |
JP3212787B2 (ja) | 1993-12-02 | 2001-09-25 | 日本電気株式会社 | 転送データ管理方式およびホスト・端末間データ転送方式 |
JPH1153235A (ja) | 1997-08-08 | 1999-02-26 | Toshiba Corp | ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム |
US6427198B1 (en) * | 2000-02-15 | 2002-07-30 | International Business Machines Corporation | Method, system, and program for determining system configuration |
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
WO2003019393A1 (en) * | 2001-08-24 | 2003-03-06 | Intel Corporation | A general intput/output architecture, protocol and related methods to implement flow control |
JP2003087348A (ja) * | 2001-09-14 | 2003-03-20 | Matsushita Graphic Communication Systems Inc | 通信制御方法及び通信制御装置並びにadsl通信装置 |
KR100445134B1 (ko) | 2002-01-31 | 2004-08-21 | 삼성전자주식회사 | 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법 |
US7406587B1 (en) * | 2002-07-31 | 2008-07-29 | Silicon Graphics, Inc. | Method and system for renaming registers in a microprocessor |
US6968439B2 (en) | 2002-08-29 | 2005-11-22 | Micron Technology, Inc. | Single segment data object management |
EP1465116A1 (en) * | 2003-03-31 | 2004-10-06 | STMicroelectronics Limited | Computer graphics |
JP4175185B2 (ja) | 2003-06-06 | 2008-11-05 | 日本電気株式会社 | ネットワーク情報記録装置 |
CN1670701A (zh) | 2004-03-17 | 2005-09-21 | 德鑫科技股份有限公司 | 压缩数据存储方法 |
US20060174067A1 (en) | 2005-02-03 | 2006-08-03 | Craig Soules | Method of caching data |
CN101390043A (zh) | 2005-07-01 | 2009-03-18 | 美国日本电气实验室公司 | 嵌入式系统用的存储器体系结构 |
CN100361094C (zh) | 2005-07-01 | 2008-01-09 | 华为技术有限公司 | 一种节省全局变量内存空间的方法 |
US7159082B1 (en) | 2005-10-03 | 2007-01-02 | Hewlett-Packard Development Company, L.P. | System and method for throttling memory accesses |
US7844877B2 (en) | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
US20070168668A1 (en) * | 2005-12-08 | 2007-07-19 | Chang Robert C | Media card with command pass through mechanism |
US7719983B2 (en) | 2006-01-06 | 2010-05-18 | International Business Machines Corporation | Method for autonomic system management using adaptive allocation of resources |
JP4855102B2 (ja) | 2006-02-23 | 2012-01-18 | 株式会社日立製作所 | 計算機システム及び管理計算機とストレージシステム並びに記憶領域割当量制御方法 |
US7613043B2 (en) | 2006-05-15 | 2009-11-03 | Apple Inc. | Shifting reference values to account for voltage sag |
US7639531B2 (en) | 2006-05-15 | 2009-12-29 | Apple Inc. | Dynamic cell bit resolution |
US7594073B2 (en) | 2006-09-29 | 2009-09-22 | Intel Corporation | Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state |
US7721040B2 (en) | 2007-01-18 | 2010-05-18 | Sandisk Il Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
US7596643B2 (en) * | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US8078787B2 (en) | 2007-06-22 | 2011-12-13 | Apple Inc. | Communication between a host device and an accessory via an intermediate device |
US8429358B2 (en) * | 2007-08-14 | 2013-04-23 | Samsung Electronics Co., Ltd. | Method and data storage device for processing commands |
US8473707B2 (en) | 2008-03-27 | 2013-06-25 | Open Invention Network, Llc | Method for achieving sequential I/O performance from a random workload |
US7769919B2 (en) | 2008-05-15 | 2010-08-03 | International Business Machines Corporation | Protecting computer memory from simultaneous direct memory access operations using active and inactive translation tables |
TW201007734A (en) | 2008-08-06 | 2010-02-16 | Genesys Logic Inc | Flash memory control apparatus having signal-converting module |
US7925925B2 (en) | 2008-12-30 | 2011-04-12 | Intel Corporation | Delta checkpoints for a non-volatile memory indirection table |
CN101576834B (zh) | 2009-05-08 | 2012-05-30 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
TWI400707B (zh) | 2009-07-09 | 2013-07-01 | Phison Electronics Corp | 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統 |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8156304B2 (en) * | 2009-12-04 | 2012-04-10 | Oracle International Corporation | Dynamic data storage repartitioning |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
TWI484334B (zh) | 2009-12-24 | 2015-05-11 | Univ Nat Taiwan | 非揮發記憶體的區域式管理方法 |
US8327226B2 (en) | 2010-02-03 | 2012-12-04 | Seagate Technology Llc | Adjustable error correction code length in an electrical storage device |
JP2011203916A (ja) | 2010-03-25 | 2011-10-13 | Toshiba Corp | メモリコントローラ、および半導体記憶装置 |
US8621141B2 (en) | 2010-04-01 | 2013-12-31 | Intel Corporations | Method and system for wear leveling in a solid state drive |
US9183134B2 (en) | 2010-04-22 | 2015-11-10 | Seagate Technology Llc | Data segregation in a storage device |
US8489855B2 (en) | 2010-05-07 | 2013-07-16 | Ocz Technology Group Inc. | NAND flash-based solid state drive and method of operation |
US8966176B2 (en) * | 2010-05-27 | 2015-02-24 | Sandisk Il Ltd. | Memory management storage to a host device |
US8368564B2 (en) | 2010-08-24 | 2013-02-05 | Allen Ku | Wireless keyboard having waterproof mechanism |
CN101930404B (zh) | 2010-08-27 | 2012-11-21 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
US20120059976A1 (en) * | 2010-09-07 | 2012-03-08 | Daniel L. Rosenband | Storage array controller for solid-state storage devices |
US9063663B2 (en) | 2010-09-21 | 2015-06-23 | Hitachi, Ltd. | Semiconductor storage device and data control method thereof |
US8560648B2 (en) | 2010-11-10 | 2013-10-15 | Microsoft Corporation | Location control service |
CN102023818A (zh) | 2010-12-06 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种存储设备容量调整方法、装置及存储设备 |
CN103415844B (zh) | 2011-01-18 | 2016-04-20 | 希捷科技有限公司 | 用于高级冗余信息计算的系统和方法 |
KR101467939B1 (ko) | 2011-04-26 | 2014-12-02 | 엘에스아이 코포레이션 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
US8793429B1 (en) * | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
WO2013022915A1 (en) | 2011-08-09 | 2013-02-14 | Lsi Corporation | I/o device and computing host interoperation |
US8661196B2 (en) | 2011-08-15 | 2014-02-25 | International Business Machines Corporation | Optimizing locations of data accessed by client applications interacting with a storage system |
KR101522848B1 (ko) | 2011-10-05 | 2015-05-26 | 엘에스아이 코포레이션 | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 |
US9037820B2 (en) | 2012-06-29 | 2015-05-19 | Intel Corporation | Optimized context drop for a solid state drive (SSD) |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
-
2012
- 2012-08-08 WO PCT/US2012/049905 patent/WO2013022915A1/en active Application Filing
- 2012-08-08 KR KR1020147006222A patent/KR101438716B1/ko not_active IP Right Cessation
- 2012-08-08 KR KR1020147009043A patent/KR101798036B1/ko active IP Right Grant
- 2012-08-08 EP EP12821517.5A patent/EP2742429A4/en not_active Withdrawn
- 2012-08-08 CN CN201280049511.1A patent/CN103858116B/zh active Active
- 2012-08-08 US US14/237,331 patent/US9389805B2/en active Active
- 2012-08-08 JP JP2014525104A patent/JP2014522066A/ja active Pending
- 2012-08-09 TW TW101128817A patent/TWI584125B/zh not_active IP Right Cessation
-
2013
- 2013-07-05 US US13/936,010 patent/US20130297894A1/en not_active Abandoned
-
2017
- 2017-07-27 US US15/661,079 patent/US10514864B2/en active Active
-
2019
- 2019-11-14 US US16/684,027 patent/US10936251B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306252A (zh) * | 2000-01-18 | 2001-08-01 | 三星电子株式会社 | 计算机控制便携式个人设备的方法及其该设备的操作方法 |
CN101176062A (zh) * | 2005-03-02 | 2008-05-07 | 6002552加拿大有限公司 | 一种经usb装置传输扩展命令的方法和协议 |
CN100504830C (zh) * | 2007-01-08 | 2009-06-24 | 中国信息安全产品测评认证中心 | 一种智能卡和u盘复合设备及其与计算机通信的方法 |
CN101689246A (zh) * | 2007-06-21 | 2010-03-31 | 株式会社东芝 | 存储器装置、电子装置以及主机设备 |
US20110060863A1 (en) * | 2009-09-10 | 2011-03-10 | Kabushiki Kaisha Toshiba | Controller |
WO2011074712A1 (en) * | 2009-12-18 | 2011-06-23 | Kabushiki Kaisha Toshiba | Semiconductor storage device and personal computer |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575270B (zh) * | 2014-08-21 | 2020-01-07 | 松下知识产权经营株式会社 | 记录介质、适配器以及信息处理装置 |
CN106575270A (zh) * | 2014-08-21 | 2017-04-19 | 松下知识产权经营株式会社 | 记录介质、适配器以及信息处理装置 |
US10769086B2 (en) | 2014-08-21 | 2020-09-08 | Panasonic Intellectual Property Management Co., Ltd. | Recording medium, adapter, and information processing apparatus |
CN106201763B (zh) * | 2015-05-22 | 2021-03-05 | 德克萨斯仪器股份有限公司 | 双模式纠错码/可写入一次存储器编解码器 |
CN106201763A (zh) * | 2015-05-22 | 2016-12-07 | 德克萨斯仪器股份有限公司 | 双模式纠错码/可写入一次存储器编解码器 |
US11762764B1 (en) | 2015-12-02 | 2023-09-19 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
CN108292196B (zh) * | 2015-12-02 | 2021-06-29 | 净睿存储股份有限公司 | 数据写入方法、装置和计算机可读存储介质 |
CN108292196A (zh) * | 2015-12-02 | 2018-07-17 | 净睿存储股份有限公司 | 将数据写入包括第一类型的存储设备和第二类型的存储设备的存储系统 |
CN108604208A (zh) * | 2016-02-05 | 2018-09-28 | 霍尼韦尔国际公司 | 用以促进与不可访问的输入/输出(i/o)设备的处理器通信的中继机制 |
CN108604208B (zh) * | 2016-02-05 | 2023-06-30 | 霍尼韦尔国际公司 | 用以促进与不可访问的输入/输出(i/o)设备的处理器通信的中继机制 |
CN106708441B (zh) * | 2016-12-29 | 2019-06-21 | 至誉科技(武汉)有限公司 | 一种用于降低固态存储读延迟的操作方法 |
CN106708441A (zh) * | 2016-12-29 | 2017-05-24 | 忆正科技(武汉)有限公司 | 一种用于降低固态存储读延迟的操作方法 |
CN109213425B (zh) * | 2017-06-30 | 2023-10-31 | 北京忆恒创源科技股份有限公司 | 利用分布式缓存在固态存储设备中处理原子命令 |
CN109213425A (zh) * | 2017-06-30 | 2019-01-15 | 北京忆恒创源科技有限公司 | 利用分布式缓存在固态存储设备中处理原子命令 |
CN107391049A (zh) * | 2017-09-08 | 2017-11-24 | 南宁磁动电子科技有限公司 | 存储连接设备及存储系统 |
CN107391049B (zh) * | 2017-09-08 | 2023-05-26 | 南宁磁动电子科技有限公司 | 存储连接设备及存储系统 |
CN107479938A (zh) * | 2017-09-27 | 2017-12-15 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
CN107479938B (zh) * | 2017-09-27 | 2024-03-29 | 北京忆芯科技有限公司 | 电子设备及其启动方法 |
US11615805B2 (en) | 2018-10-11 | 2023-03-28 | Western Digital Technologies, Inc. | Zoned block command to stream command translator |
CN111045594B (zh) * | 2018-10-11 | 2023-06-20 | 西部数据技术公司 | 分区块命令到流命令翻译器及相关方法 |
CN111045594A (zh) * | 2018-10-11 | 2020-04-21 | 西部数据技术公司 | 用以流命令翻译器的分区块命令 |
CN111309647A (zh) * | 2018-12-12 | 2020-06-19 | 爱思开海力士有限公司 | 电子装置 |
CN111309647B (zh) * | 2018-12-12 | 2023-04-07 | 爱思开海力士有限公司 | 存储装置 |
TWI730600B (zh) * | 2020-01-21 | 2021-06-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 |
CN111813345A (zh) * | 2020-07-17 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种数据传输方法、装置、服务器及可读存储介质 |
TWI789650B (zh) * | 2020-11-26 | 2023-01-11 | 神雲科技股份有限公司 | 整合控制管理系統 |
CN113326001A (zh) * | 2021-05-20 | 2021-08-31 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
Also Published As
Publication number | Publication date |
---|---|
US20140181327A1 (en) | 2014-06-26 |
US10936251B2 (en) | 2021-03-02 |
EP2742429A1 (en) | 2014-06-18 |
TWI584125B (zh) | 2017-05-21 |
US20170322751A1 (en) | 2017-11-09 |
KR20140044933A (ko) | 2014-04-15 |
KR101798036B1 (ko) | 2017-11-15 |
WO2013022915A1 (en) | 2013-02-14 |
TW201314464A (zh) | 2013-04-01 |
US20200081660A1 (en) | 2020-03-12 |
KR101438716B1 (ko) | 2014-09-11 |
JP2014522066A (ja) | 2014-08-28 |
US10514864B2 (en) | 2019-12-24 |
EP2742429A4 (en) | 2015-03-25 |
CN103858116B (zh) | 2015-09-02 |
US9389805B2 (en) | 2016-07-12 |
KR20140061498A (ko) | 2014-05-21 |
US20130297894A1 (en) | 2013-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103858116B (zh) | I/o设备及计算主机互操作 | |
US11449252B2 (en) | Method of writing and reading data in an NVM using Lpage identification headers | |
CN103902403B (zh) | 经由冗余阵列的非易失性存储器编程故障恢复 | |
KR102155191B1 (ko) | 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 | |
KR101562781B1 (ko) | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 | |
CN103620563B (zh) | 用于非易失性存储器的可变超量配置 | |
CN103415844B (zh) | 用于高级冗余信息计算的系统和方法 | |
CN103348330A (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
CN103620567A (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 | ||
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. |