CN103597443A - 存储设备固件以及制造软件 - Google Patents
存储设备固件以及制造软件 Download PDFInfo
- Publication number
- CN103597443A CN103597443A CN201280025876.0A CN201280025876A CN103597443A CN 103597443 A CN103597443 A CN 103597443A CN 201280025876 A CN201280025876 A CN 201280025876A CN 103597443 A CN103597443 A CN 103597443A
- Authority
- CN
- China
- Prior art keywords
- ssd
- firmware
- memory device
- order
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/14—Implementation of control logic, e.g. test mode decoders
- G11C29/16—Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/26—Accessing multiple arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0407—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/06—Acceleration testing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
存储设备固件(FW)和制造软件技术包括访问FW图像以及制造软件工具的传送。制造软件工具使FW图像能够下载到I/O设备中并且可以控制作为提供存储能力的存储设备的I/O设备的制造测试。所下载的FW图像的执行使I/O设备的I/O控制器能够经由利用一个或多个所选类型的闪存设备的操作来提供存储能力。所选类型选自I/O控制器能够通过执行FW图像中的适当FW图像利用其操作的多个闪存类型。任选地,制造测试包括测试I/O设备的存储能力。该技术进一步包括SSD制造自测试能力。
Description
相关申请的交叉引用
在所附的申请书数据表、请求书和传送信(如适用,如果有的话)中列出了对该申请的优先权权益要求。在即时申请的类型所允许的范围内,在提出本发明时,为了所有目的,本申请通过引用并入所有由即时申请的所有者共同拥有的下列申请:
于2012年3月30日提交的美国非临时申请(案号为SF-11-21,序列号为13/436,639),第一署名发明人为Karl David SCHUH,且题为“Solid-State Disk Manufacturing Self Test”;以及
于2011年11月14日提交的美国临时申请(案号为SF-11-17,序列号为61/559,201),第一署名发明人为Thad OMURA,且题为“Virtual DriveManufacturing Model”。
技术领域
闪存存储技术及制造的进步对于提供成本的改善、盈利、性能、效率和使用实用性的提高是必要的。
背景技术
除非被明确认定为被公开或众所周知,否则为了上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公开为已知的或者是现有技术的一部分。为了所有目的,本文中所引用的所有参考文献(如有的话)(包括专利、专利申请和出版物),其全部内容通过引用结合于此,而无论是否被具体结合。
发明内容
本发明可以以多种方式实现,这些方式例如过程、制品、装置、系统、物质组分和计算机可读介质(比如计算机可读存储介质(例如,光学和/或磁性大容量存储设备中的介质(比如磁盘),或具有比如闪存存储器的非易失性存储器的集成电路)或计算机网络,其中,通过光学或电子通信链路发送程序指令。具体实施方式提供了能实现在上文认定的领域中的成本的改善、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分的理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施方式。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
附图说明
图1A示出了包括与虚拟驱动器制造模式(VDMM)和SSD制造自测试(MST)兼容使用的SSD控制器的固态磁盘(SSD)的实施方式的所选细节。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各种实施方式的所选细节。
图2示出了映射逻辑块(LBA)的逻辑页面号(LPN)部分的实施方式的所选细节。
图3示出了在读取单元地址访问非易失性存储器(NVM)以产生被组织为各个读取单元的读取数据,集体具有在读取单元配量中测得的长度的实施方式的所选细节。
图4A示出了读取单元的一个实施方式的所选细节。
图4B示出了读取单元的另一实施方式的所选细节。
图5示出了具有大量字段的报头的实施方式的所选细节。
图6示出了虚拟驱动器制造模式的实施方式的所选细节的流程图。
图7A示出了根据虚拟驱动器制造模式的SSD的(批量)制造(或原型构建)的实施方式的所选细节的概念表示。
图7B示出了根据虚拟驱动器制造模式的SSD的(批量)制造(或原型构建)的系统的实施方式的所选细节。
图7C示出了根据虚拟驱动器制造模式的SSD的固件更新的实施方式的所选细节的概念表示。
图7D示出了根据虚拟驱动器制造模式的SSD的固件更新的系统的实施方式的所选细节。
图8示出了经由具有第一级映射(FLM)和一个或多个第二级映射(SLM)页面的二级映射将LBA映射到NVM中所存储的逻辑块(LB)的实施方式的所选细节。
图9A示出了SSD MST流的实施方式的所选细节。
图9B示出了用于对一个或多个SSD进行一种或多种MST的系统的实施方式的所选细节。
图10示出了MST命令以及相关数量的参数对和参数标识符/值对的实施方式的所选细节。
图11示出了MST中可用的各条命令的实施方式的所选细节。
图12示出了MST的示例的所选细节。
图13A至图13D示出了特定使用场景下的写驱动命令的实现的实施方式的所选细节。
图14示出了MST结果日志的实施方式的所选细节。
附图中的附图标记列表
附图标记 | 元件名称 |
100 | SSD控制器 |
101 | SSD |
102 | 主机 |
103 | (任选)交换机/光纤/中间控制器 |
104 | 中间接口 |
105 | OS |
106 | 固件(FW) |
107 | 驱动程序 |
107D | 虚线箭头(主机软件←→I/O设备通信) |
109 | 应用程序 |
109D | 虚线箭头(应用程序←→经由驱动程序的I/O设备通信) |
109V | 虚线箭头(应用程序←→经由VF的I/O设备通信) |
110 | 外部接口 |
111 | 主机接口 |
112C | (任选)卡存储器 |
113 | 标签跟踪 |
114 | 多设备管理软件 |
115 | 主机软件 |
116 | I/O卡 |
117 | I/O&存储设备/资源 |
118 | 服务器 |
119 | LAN/WAN |
121 | 数据处理 |
123 | 引擎 |
125 | 控制RAM |
126 | 扩展数据结构 |
131 | 缓冲器 |
133 | DMA |
135 | ECC-X |
137 | 存储器 |
141 | 映射 |
143 | 表 |
151 | 回收站 |
161 | ECC |
171 | CPU |
172 | CPU内核 |
173 | 命令管理 |
175 | 缓冲器管理 |
177 | 转换管理 |
179 | 一致性管理 |
180 | 存储器接口 |
181 | 设备管理 |
182 | 身份管理 |
190 | 设备接口 |
191 | 设备接口逻辑 |
192 | 闪存设备 |
193 | 调度 |
194 | 闪存芯片 |
199 | NVM |
211 | LBA |
213 | LPN |
215 | 逻辑偏移 |
221 | LPN的映射信息 |
223 | 读取单元地址 |
225 | 读取单元的长度 |
311 | 读取数据 |
313 | 第一读取单元 |
315 | 最后读取单元 |
401A | 读取单元 |
401B | 读取单元 |
410B | 报头标记(HM) |
411A | 报头1 |
411B | 报头1 |
412B | 报头2 |
419A | 报头N |
419B | 报头N |
421A | 数据字节 |
421B | 数据字节 |
422B | 数据字节 |
429B | 数据字节 |
431A | 任选填充字节 |
431B | 任选填充字节 |
501 | 报头 |
511 | 类型 |
513 | 最后指示符 |
515 | 标志 |
517 | LPN |
519 | 长度 |
521 | 偏移量 |
610 | 设计供应商 |
611 | 控制器&固件 |
612 | 参考设计&闪存建议 |
614 | 硬件验证/表征 |
615 | RDT、EVT&DVT |
616 | 制造软件工具 |
617 | 故障分析 |
618 | 所选设计供应商操作(虚线框) |
620 | 制造商 |
623 | 原型制造 |
625 | 批量制造 |
627 | 重做 |
630 | 系统供应商 |
632 | BOM选择、BOM采购及设计批准 |
634 | 系统质量保证 |
635 | 批量制造 |
636 | RMA/检修 |
637 | 故障分析 |
655 | 批量制造 |
701 | 许可文件 |
702 | 加密密钥 |
703 | 分发固件包 |
704 | 系统供应商所需的驱动器设置 |
711 | 包管理器 |
712 | 配置管理器 |
721 | 制造固件包 |
722 | 驱动器配置和设置文件 |
723 | 字段更新固件包 |
730A | 工程 |
730C | 工程 |
740E | 终端用户 |
740F | 工厂 |
750F | 全新SSD |
750L | 固件装载SSD |
750X | (旧)固件装载SSD |
750Y | (新)固件装载SSD |
751 | 制造软件工具(MT) |
753 | SSD更新软件工具(UT) |
754 | 更新密钥 |
760 | 序列号,全球名称(WWN) |
780E | 主机 |
780P | 主机 |
790E.1 | SSD.1 |
790E.N | SSD.N |
790P.1 | SSD.1 |
790P.N | SSD.N |
800 | LBA至NVM定位映射 |
810 | FLM |
810.1 | SLM页面/长度 |
810.2 | SLM页面/长度 |
810.M | SLM页面/长度 |
810S | SLM指针 |
820 | SLM页面 |
820.1 | LB页面/长度 |
820.2 | LB页面/长度 |
820.N | LB页面/长度 |
820L | LB指针 |
821 | LBA |
822 | 整数除法器 |
822Q | FLM索引 |
822R | SLM页面索引 |
823 | SLM条目/SLM页面(CSR) |
910 | 准备MST |
911 | 开始 |
912 | 生成MST命令 |
913 | MST操作的SSD准备就绪 |
914 | 将MST命令写入SMART Log0xF8 |
915 | 激活MST |
916 | 移动SSD |
920 | 运行MST |
921 | 打开SSD的电源 |
922 | 开始MST |
923 | 执行SMART Log0xF8MST命令 |
924 | 指示进程(LED,事件日志,SMART Log0xF9) |
925 | 完成? |
926 | 备用SSD |
927 | 移动SSD |
930 | 结束MST |
931 | 打开SSD的电源 |
932 | 读取结果(事件日志,缺陷,SMART Log0xF9) |
933 | 发送MST_COMPLETE命令 |
934 | 安全擦除,清除SMART |
935 | SATA操作的SSD准备就绪 |
936 | 断开SSD |
980 | 主机/机架 |
981 | MST命令 |
982 | 结果 |
984 | LAN/WAN |
985 | 存储器 |
990.1 | SSD.1 |
990.N | SSD.N |
991 | SMART Log0xF8(MST命令) |
992 | LED(进程指示符) |
993 | Event Log(进程,结果) |
994 | SMART Log0xF9(进程,结果) |
995 | 默认列表 |
996 | 闪存 |
999 | 结束 |
1000 | MST输入 |
1010 | 命令1&参数1 |
1011 | 命令1 |
1012 | 参数对的数量 |
1013 | 参数ID&值对1 |
1014 | 参数ID&值对N |
1020 | 命令2&参数2 |
1080 | 命令N&参数N |
1090 | 符号 |
1100 | MST命令 |
1101 | 写驱动 |
1102 | 擦除驱动 |
1103 | SATA PHY老化 |
1104 | 延时 |
1105 | 应力模式 |
1200 | 示例性MST输入 |
1301-1310 | R-块 |
1400 | MST结果日志 |
1401 | 日志报头 |
1402 | 测试状态 |
1403 | 进程指示符 |
1404 | 统计 |
1405 | 错误 |
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是示例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(比如:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可应用于独立的实施方式组;如本文所使用的,这些标签并不明确地意指传送质量或任何形式的偏爱或偏见,而只是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施方式用于描述过程、系统和/或程序指令特征的变化,其他实施方式均被设想为根据预定的或动态的确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。许多具体细节列于以下描述中,以提供对本发明的透彻理解。为示例的目的而提供细节,且本发明可根据未列出一些或所有细节的权利要求来实践。为了清晰起见,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要模糊。
介绍
包括该介绍仅为了便于更迅速地理解具体实施方式;本发明不限于在介绍中提出的概念(包括明确的示例,如有的话),因为任何介绍的段落均是整个主题的缩节,且不意味着是详尽或限制的描述。例如,以下介绍仅对某些实施方式提供由空间和组织限定的概述信息。有许多其他实施方式,包括最终将针对其描绘权利要求的那些实施方式,在整个说明书的其余部分中讨论。
缩略语
本文中所限定的各种速记缩写(例如,首字母缩写词)中的至少一些是指本文所使用的某些元件。
缩略语 | 描述 |
AES | 高级加密标准 |
API | 应用程序接口 |
AHCI | 高级主机控制器接口 |
ASCII | 美国信息交换标准代码 |
ATA | 高级技术配置(AT配置) |
BCH | 博斯-乔赫里-霍克文黑姆码 |
BOM | 物料清单 |
BIOS | 基本输入/输出系统 |
BIST | 内置自测试 |
CD | 光盘 |
CF | 紧凑式闪存 |
CMOS | 互补金属氧化物半导体 |
CPU | 中央处理器 |
CRC | 循环冗余校验 |
DAS | 直连式存储 |
DDR | 双倍数据速率 |
DES | 数据加密标准 |
DMA | 直接存储器访问 |
DNA | 直接NAND访问 |
DRAM | 动态随机存取存储器 |
DVD | 数字多用途光盘或数字视频光盘 |
DVR | 数字视频录像机 |
DVT | 设计验证测试 |
ECC | 纠错码 |
eMMC | 嵌入式多媒体卡 |
eSATA | 外部串行高技术配置 |
EVT | 环境设计测试 |
FLM | 一级映射 |
FUA | 强迫单位存取 |
GPS | 全球定位系统 |
GUI | 图形用户界面 |
HBA | 主机总线适配器 |
HDD | 硬盘驱动器 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子装置 |
JPEG | 联合图象专家组 |
LAN | 局域网 |
LB | 逻辑块 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LED | 发光二极管 |
LPN | 逻辑页面号 |
LZ | Lempel-Ziv |
MAC | 介质访问控制 |
MLC | 多层单元闪存 |
MPEG | 运动图像专家组 |
MRAM | 磁性随机存取存储器 |
MST | 制造自测试 |
NAS | 网络附加存储 |
NCQ | 本机命令队列 |
NVM | 非易失性存储器 |
OEM | 原始设备制造商 |
ONA | 优化NAND访问 |
ONFI | 开放NAND闪存接口 |
OS | 操作系统 |
PC | 个人计算机 |
PCIe | 快速外围组件互连(快速PCT) |
PDA | 个人数字助理 |
PHY | 物理接口 |
POS | 销售点 |
RAID | 廉价/独立磁盘冗余阵列 |
RDT | 可靠性验证测试 |
ReRAM | 阻变随机存取存储器 |
RMA | 退货授权 |
RS | 里德-所罗门 |
RSA | Rivest,Shamir&Adleman |
SAN | 存储附接网络 |
SAS | 串行连接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术配置(串行ATA) |
SCSI | 小型计算机系统接口 |
SCT | SMART命令传送 |
SD | 安全数字 |
SDR | 单倍数据速率 |
SLC | 单层单元闪存 |
SLM | 二级映射 |
SMART | 自监测分析和报告技术 |
SPB | 安全物理边界 |
SRAM | 静态随机存取存储器 |
SSD | 固态磁盘/驱动器 |
SSP | 软件设置保存 |
UFS | 统一闪存存储器 |
USB | 通用串行总线 |
VF | 虚拟函数 |
VPD | 重要产品数据 |
WAN | 广域网 |
WWN | 全球名称 |
XML | 可扩展标记语言 |
SSD MST能力使SSD制造商可以限定并准备SSD测试,对SSD的生产实例运行测试,并在完成测试之后收集运行结果。制造商在不需要具体了解SSD的内部操作(诸如测试的元件如何被SSD实现)的情况下创建测试,并根据目标生产和/或质量保证要求定制所述测试。如制造商所定义的,测试任选体现以下各项中的一项或多项:测试参数、序列和出口准则。测试另外也是任选预定义的和/或由SSD实现的(例如,利用存储接口协议比如ATA SMART协议激活的)内置测试。
限定和准备测试包括生成测试脚本并将该脚本加载到生产SSD上。运行包括启动生产SSD并且生产SSD自执行所加载的脚本。启动和自执行例如当耦接至加载脚本的主机时,当耦接至机架时不能将脚本加载到SSD中但使其可以向SSD提供电力,当耦接至其他组件时,使其可以提供电力。机架任选降低成本以支持相对大量的生产用SSD的划算并行测试。结果收集包括读取自执行的结果(例如,事件日志和坏块信息)并准备生产SSD供客户使用。准备包括安全擦除生产SSD,清除一些结果(例如,事件日志)以及保持一些结果(例如,坏块信息)完整。
使SSD能够接收测试(例如,经由主机写入SSD的“输入”SMART日志),能够执行测试的命令(例如,经由固件从输入SMART日志读取命令),能够提供结果(例如,经由固件写入至SSD的“输出”SMART日志)。使SSD能够经由硬件、软件和固件中的任意一个或多个来进行接收、执行和提供。命令包括写驱动、擦除驱动、SATA PHY老化、延时和应力模式。命令中的任意一个或多个(有时被称为“基元”)具有零个或多个参数,例如以便指定命令操作。
在一些实施方式和/或使用场景下,SSD MST能力结合SSD虚拟制造模式使用。在某些情况下,SSD MST能力被制造SSD的系统供应商使用(例如,在利用虚拟驱动器制造模式的系统供应商的上下文中)。
虚拟驱动器制造模式使系统供应商能够直接采购所选材料,比如存储器设备,用于制造存储设备。与系统供应商从存储设备供应商采购存储设备(利用所选材料)的技术相比,直接采购消除了所选材料上的边缘标记(例如,边缘重叠)。除存储器设备之外,其他示例性所选材料包括电源、温度传感器、壳体、印刷电路板和无源组件。对于具体示例,所选材料是诸如NVM(例如,闪存设备)的存储器设备,存储设备是SSD。设计供应商,与参考设计,用于具有SSD控制器的参考设计的建议和/或支持闪存设备列表,以及任选制造支持利用SSD控制器构建的存储设备的批量生产的软件一起,实现SSD控制器及相关联固件。设计供应商任选地和/或可选地向系统供应商提供市场营销资料、工程信息、工程样品、制造软件、和/或测试/资格服务以使系统供应商能够根据参考设计利用来自列表的SSD控制器、固件、闪存设备,以及其他材料来直接(或间接)进行SSD批量生产。
在各种实施方式和/或使用场景下,使由设计供应商实现的SSD控制器和/或固件能够利用来自多个闪存供应商的闪存设备进行操作。利用来自多个闪存供应商的闪存设备进行操作经由,例如根据所使用的闪存设备改变接口协议的操作、读、写和/或擦除技术、参数和/或特征而启用。利用来自多个闪存供应商的闪存设备进行操作经由,再如根据各种错误恢复代码管理闪存设备的管理算法而启用。
在各种实施方式和/或使用场景下,由设计供应商实现的SSD控制器和/或固件能够利用各种尺寸配量的主机LB进行操作,从而使SSD产品能够利用诸如企业和/或云使用场景的各种LB规模进行操作,并使SSD产品能够利用诸如工业和/或客户端使用场景的单一LB规模进行操作。在各种实施方式和/或使用场景下,使由设计供应商实现的SSD控制器和/或固件能够实现不同容量的SSD,例如企业、云、工业和/或客户端使用场景。
在某些实施方式中,诸如SSD的I/O设备包括SSD控制器。SSD控制器充当SSD的NVM和主机接口之间的桥接器,并执行经由SSD的主机接口从计算主机发送的主机协议的命令。至少一些命令指示SSD分别向NVM写入从计算主机发送的数据以及从NVM读取向计算主机发送的数据。在进一步实施方式中,使SSD控制器能够利用映射在主机协议的LBA和NVM中的物理存储地址之间转换。在进一步实施方式中,映射的至少一部分用于I/O设备的专用存储器(对计算机用主机是不可见的)。例如,计算机用主机不可访问的LBA的一部分被I/O设备用来管理对日志、统计或其他专用数据的访问。
根据各种实施方式,映射是以下各项中的一个或多个:一级映射、二级映射、多级映射、直接映射、相关映射和使主机协议的LBA与NVM中的物理存储地址相关联的任何其他装置。例如,在某些实施方式中,二级映射包括使LBA的第一函数与多个二级映射页面中的一个的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的数据的任何其他元数据、属性或性质。
在某些实施方式中,NVM中的地址被分组为多个区域以减少表示其中一个地址所需的位数。例如,如果I/O设备的LBA被分成64个区域,并且NVM被分成64个区域,每个LBA区域对应一个,则与特定LBA相关联的映射条目需要6个以下的地址位,因为NVM中的其中一个区域能够由特定LBA的区域确定。根据各种实施方式,LBA的区域和NVM的区域之间的关联是以下各项中的一个或多个:相等、直接关联,比如1对1数值函数、查表、动态映射以及使两组数字相关联的任何其他方法。
在各种实施方式中,NVM中的位置包括多个读取单元中的一个的地址,以及读取单元中的长度和/或跨度。长度是NVM中所存储的多个数据项中的一个特定数据项的大小,特定数据项与包括长度的映射的条目相关联。根据各种实施方式,长度具有以下各项中的一项或多项的粒度:一字节;一个以上的字节;一个读取单元;指定的一小部分读取单元;根据其中一个数据项的最大允许压缩率的粒度以及用于跟踪存储使用量的任何其他粒度。跨度是存储有特定数据项的各部分的诸如整数个读取单元的多个读取单元。在进一步实施方式和/或使用场景下,在读取单元跨度中的第一读取单元和/或读取单元跨度中的最后读取单元任选地和/或可选择地存储多个数据项的一部分或所有数据项。在某些实施方式和/或使用场景下,存储长度和/或跨度,比如通过将长度(在上下文中有时称为大小,对长度和/或跨度进行编码)存储为相对于跨度的偏移量来进行编码。在某些实施方式和/或使用场景下,未使用的长度和/或跨度编码对诸如相关联数据项是否存在于NVM中的指示的额外信息进行编码。
编码NVM中作为地址的位置和长度使NVM中所存储的数据的大小改变。例如,将第一4KB区域压缩为400B大小,完全存储在单个读取单元中(例如,具有一个读取单元的跨度),并具有一个读取单元的长度,而第二4KB区域是不可压缩的,完全存储在一个以上的读取单元中(例如,具有一个以上读取单元的跨度),并具有一个以上读取单元的长度。再如,将第三2KB区域压缩为1KB大小,跨越两个读取单元进行存储(例如,具有两个读取单元的跨度),并具有一个读取单元的长度,而第四1KB区域是不可压缩的,但存储在一个读取单元中(例如,具有一个读取单元的跨度),并具有一个读取单元的长度。在进一步实施方式中,在与LBA的区域相关联的存储的读取单元中具有长度和/或跨度使仅读取所需部分的NVM能够检索LBA的区域的数据。
在某些实施方式中,映射的每个条目包括指定与条目相关联的LBA的区域的属性的信息,有时称为元数据。在进一步实施方式中,比如通过针对区域的多个LBA中的每一个具有单独的元数据规范,至少一部分元数据的粒度比所述区域的粒度细。
在某些实施方式中,存取NVM中不同大小配量的压缩数据在某些使用场景下具有提高的存储效率。例如,SSD控制器从计算主机接收(未压缩)数据(例如,与磁盘写入命令相关),压缩该数据,并将压缩后的数据存储到闪存中。响应于来自计算主机的后续请求(例如,与磁盘读取命令相关),SSD控制器从闪存中读取压缩数据,对压缩数据进行解压,并向计算主机提供未压缩数据。根据不同大小量子将压缩数据存储在闪存中,量子大小由于例如压缩算法、操作模式和各种数据的压缩效率等而变化。SSD控制器通过查阅所包括的映射表对数据进行部分解压以确定报头存储在闪存中的位置。SSD控制器解析从闪存获得的报头以确定适当的(压缩)数据存储在闪存中的位置。SSD控制器对来自闪存的适当的数据进行解压以产生未压缩数据并将其提供给计算主机。在即时应用中,解压(及其变型)与减压(及其变型)同义。
在各种实施方式中,SSD控制器包括与计算主机交互的主机接口、与诸如闪存的NVM交互的接口,以及用于控制接口并进行(和/或控制进行的各方面)压缩和解压以及较低级冗余和/或纠错、较高级冗余和/或纠错及利用独立硅元件的动态较高级冗余模式管理的电路。
根据各种实施方式,某些主机接口与USB接口标准、CF接口标准、MMC接口标准、eMMC接口标准、Thunderbolt接口标准、UFS接口标准、SD接口标准、记忆棒接口标准、xD图片卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准中的一个或多个兼容。根据各种实施方式,计算主机是计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上电脑、笔记本电脑、上网本电脑、平板设备或电脑、超极本电脑、电子阅读设备(比如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或多合一设备、POS设备、现金出纳机、媒体播放器、电视机、媒体记录器、DVR、数码相机、蜂窝手机、无绳电话手机和电子游戏机中的所有或任意部分。在某些实施方式中,接口主机(比如SAS/SATA桥接器)作为计算主机和/或作为计算主机的桥接器进行操作。
在各种实施方式中,SSD控制器包括一个或多个处理器。控制器执行固件以控制和/或进行SSD控制器的操作。SSD控制器与计算主机通信以发送并接收命令和/或状态以及数据。计算主机执行操作系统、驱动程序和应用程序中的一个或多个。计算主机与SSD控制器的通信任选地和/或可选地是经由驱动程序和/或经由应用程序进行的。在第一实例中,与SSD控制器的所有通信是经由驱动程序进行的,并且应用程序向驱动程序提供驱动程序转换为SSD控制器的特定命令的较高级命令。在第二实例中,驱动程序实现旁路模式并且使应用程序能够经由驱动程序向SSD控制器发送特定命令。在第三实例中,PCIe SSD控制器支持一个或多个虚拟函数(VF),从而启用应用程序,一旦配置,就绕过驱动程序而与SSD控制器直接通信。
根据各种实施方式,某些SSD与由磁性和/或光学非易失性存储器(比如,HDD、CD驱动器及DVD驱动器)所使用的形状因数、电接口和/或协议兼容。在各种实施方式中,SSD使用零以上奇偶码、零以上RS码、零以上BCH码、零以上维特比或其他格子码及零以上LDPC码。
示例性实施方式
在结束对具体实施方式的介绍时,接下来是示例性实施方式的集合,包括明确列举为“EC”(实例组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些实例并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些示例性实施方式,而是涵盖所公布的权利要求及其等价物的范围内的所有可能的修改和变更。
EC1)一种系统,包括:
用于提供加密密钥以能够解密来自加密FW存储库的作为一个或多个图像的固件(FW)的装置,所述图像与根据I/O设备参考设计来构建的I/O设备中所包括的I/O设备控制器兼容;
用于提供对经加密的FW存储库的访问的装置;以及
其中,I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件。
EC2)如EC1所述的系统,其中,用于提供加密密钥的装置包括用于使企业能够使用加密密钥来解密作为图像的FW的装置,并且用于提供访问的装置包括用于使企业能够得到经加密的FW存储库的装置。
EC3)一种系统,包括:
用于提供对加密固件(FW)存储库的访问以使能够经由加密密钥解密来自经加密的FW存储库的作为一个或多个图像的FW的装置,所述图像与根据I/O设备参考设计来构建的I/O设备中所包括的I/O设备控制器兼容;
用于提供与FW、I/O设备控制器和I/O设备参考设计兼容的组件列表;以及
其中I/O设备包括选自所述列表的组件。
EC4)如EC3所述的系统,其中用于提供访问的装置使企业能够进行解密。
EC5)一种系统,包括:
用于向代理提供I/O设备参考设计的装置;
用于向代理提供对组件列表的访问的装置;
用于向代理提供以下各项中的一项或多项的装置:
对加密固件(FW)存储库的访问,
能够解密来自经加密的FW存储库的作为一个或多个图像的FW的加密密钥,
I/O设备控制器,所述图像与I/O设备控制器和I/O设备参考设计兼容,以及
能够将图像中的一个下载到I/O设备的原型设计和/或制造实例中的制造软件工具;
其中列表成员的每一个与图像、I/O设备控制器和I/O设备参考设计兼容;以及
其中用于提供的三个装置的结果至少部分使代理能够根据选自列表的组件来生产I/O设备。
EC6)如EC5所述的系统,其中所述代理包括企业。
EC7)一种系统,包括:
用于将与I/O设备控制器兼容的固件(FW)下载到根据I/O设备参考设计来构建的且包括I/O设备控制器的I/O设备中的装置;
用于使FW个性化的装置;
其中I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件;以及
其中FW是利用加密密钥由经加密的FW存储库解密而来的一个或多个图像中的一个。
EC8)一种系统,包括:
用于接收加密密钥的装置;
用于至少部分经由所接收的加密密钥解密来自经加密的FW存储库的作为一个或多个图像的固件(FW)的装置,所述图像与根据I/O设备参考设计来构建的且包括I/O设备控制器的I/O设备兼容;并且
其中I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件。
EC9)如EC1、EC3、EC5、EC7或EC8所述的系统,进一步包括用于使同一个企业实体能够使用I/O设备参考设计、I/O设备控制器、列表、经加密的FW存储库和加密密钥中的装置。
EC10)如EC1、EC3、EC5、EC7或EC8所述的系统,包括用于使同一个企业实体能够使用I/O设备参考设计、I/O设备控制器、列表、加密FW存储库和加密密钥中的任意一个或多个的装置。
EC11)如EC9或EC10所述的系统,其中用于使能够使用的装置的任意或所有部分至少部分经由以下各项中的一项或多项实现:
电子邮件,
一个或多个可扩展标记语言(XML)注释规范和/或基于XML的形式,
一个或多个服务器对服务器交易,
使用互联网的企业对企业自动化系统,
多层互联网商务服务器的任意一层或多层,
一个或多个Web、数据库和/或应用服务器,以及
一个或多个Web、数据库和/或应用程序脚本、程序和/或应用程序。
EC12)如EC1、EC3、EC5、EC7或EC8所述的系统,其中所选组件包括来自多个非易失性存储器设备制造商的非易失性存储器设备。
EC13)如EC12所述的系统,其中I/O设备包括固态磁盘(SSD),I/O设备控制器包括SSD控制器,I/O设备参考设计包括SSD参考设计,非易失性存储器设备包括固态存储器设备,并且非易失性存储器设备制造商包括固态存储器设备制造商。
EC14)一种方法,包括:
提供加密密钥以能够解密来自经加密的FW存储库的作为一个或多个图像的固件(FW),所述图像与根据I/O设备参考设计构建的I/O设备中所包括的I/O设备控制器兼容;并且
其中I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件。
EC15)如EC14所述的方法,其中,提供加密密钥包括使企业能够使用加密密钥来使企业能够解密作为图像的FW。
EC16)一种方法,包括:
提供对经加密的固件(FW)存储库的访问,以能够经由加密密钥解密来自经加密的FW存储库的作为一个或多个图像的FW,所述图像与根据I/O设备参考设计来构建的I/O设备中所包括的I/O设备控制器兼容;并且
其中I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件。
EC17)如EC16所述的方法,其中,提供对经加密的FW的访问包括使企业能够得到经加密的FW以使该企业能够经由加密密钥解密作为图像的FW。
EC18)一种方法,包括:
向代理提供元件,所述元件包括以下各项中的一项或多项:
对经加密的固件(FW)存储库进行访问,
加密密钥,使能够解密来自经加密的FW存储库的作为一个或多个图像的FW,
I/O设备参考设计,
I/O设备控制器,所述图像与I/O设备控制器和I/O设备参考设计兼容,以及
对与图像、I/O设备控制器和I/O设备参考设计兼容的组件列表的访问,
使制造软件工具能够将图像中的一个下载到I/O设备的原型设计和/或制造实例中;以及
其中所提供的元件使代理能够根据选自列表的组件来生产I/O设备。
EC19)如EC18所述的方法,其中所述代理包括企业。
EC20)一种方法,包括:
将与I/O设备控制器兼容的固件(FW)下载到根据I/O设备参考设计来构建的且包括I/O设备控制器的I/O设备中;
其中I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件;并且
其中FW是利用加密密钥由经加密的FW存储库解密而来的一个或多个图像中的一个。
EC21)一种方法,包括:
至少部分利用加密密钥解密来自经加密的FW存储库的作为一个或多个图像的固件(FW),所述图像与根据I/O设备参考设计来构建的且包括I/O设备控制器的I/O设备兼容;并且
其中I/O设备包括选自组件列表的组件,所述列表是与FW、I/O设备控制器和I/O设备参考设计兼容的组件。
EC22)如EC14、EC16、EC18、EC20或EC21所述的方法,其中使I/O设备参考设计、I/O设备控制器、列表、经加密的FW存储库和加密密钥能够被同一个企业实体使用。
EC23)如EC14、EC16、EC18、EC20或EC21所述的方法,其中使I/O设备参考设计、I/O设备控制器、列表、经加密的FW存储库和加密密钥中的任意一个或多个能够被同一个企业实体使用。
EC24)如EC22或EC23所述的方法,其中,使能够使用的任意或所有部分至少部分是经由以下各项中的一项或多项:
电子邮件,
一个或多个可扩展标记语言(XML)注释规范和/或基于XML的形式,
一个或多个服务器对服务器交易,
使用互联网的企业对企业自动化系统,
多层互联网商务服务器的任意一层或多层,
一个或多个Web、数据库和/或应用服务器,以及
一个或多个Web、数据库和/或应用程序脚本、程序和/或应用程序。
EC25)如EC14、EC16、EC18、EC20或EC21所述的方法,其中所选组件包括来自多个非易失性存储器设备制造商的非易失性存储器设备。
EC26)如EC25所述的方法,其中I/O设备包括固态磁盘(SSD),I/O设备控制器包括SSD控制器,I/O设备参考设计包括SSD参考设计,非易失性存储器设备包括固态存储器设备,并且非易失性存储器设备制造商包括固态存储器设备制造商。
EC27)一种方法,包括:
使代理能够得到与I/O设备控制器兼容的固件(FW);
向代理提供I/O设备参考设计;
向代理提供非易失性存储器设备的列表,所述列表包括来自多个非易失性存储器设备制造商的非易失性存储器设备;以及
其中I/O设备控制器连同FW能够经由I/O设备参考设计和列表的任何非易失性存储器设备来实现I/O设备。
EC28)如EC27所述的方法,其中所述代理是企业,并且使FW可得包括将FW授权于企业。
EC29)如EC28所述的方法,进一步包括将I/O设备控制器出售给企业。
EC30)如EC29所述的方法,其中I/O设备包括固态磁盘(SSD),I/O设备控制器包括SSD控制器,I/O设备参考设计包括SSD参考设计,非易失性存储器设备包括固态存储器设备,并且非易失性存储器设备制造商包括固态存储器设备制造商。
EC31)如EC30所述的方法,其中,固态存储器设备包括闪存设备,并且固态存储器设备制造商包括闪存设备制造商。
EC32)如EC31所述的方法,进一步包括企业购买大量选自所述列表的闪存设备中的闪存设备,所述大量足以启用SSD的批量制造。
EC33)如EC32所述的方法,其中,企业是系统供应商,并且出售、授权的行为,以及两个提供的行为由设计供应商进行。
EC34)如EC33所述的方法,其中,系统供应商和设计供应商是不同的公司。
EC35)如EC33所述的方法,其中,系统供应商和设计供应商是同一家公司的多个部分。
EC36)如EC31所述的方法,进一步包括向企业提供一个或多个原型SSD的验证和/或表征结果,所述原型SSD利用SSD控制器和FW的实例根据SSD参考设计来构建。
EC37)如EC31所述的方法,进一步包括向企业提供一个或多个原型SSD的一个或多个可靠性验证测试(RDT)的结果,所述原型SSD利用SSD控制器和FW的实例根据SSD参考设计来构建。
EC38)如EC37所述的方法,其中,企业是系统供应商,并且出售、授权的行为,以及三个提供的行为由设计供应商进行。
EC39)如EC31所述的方法,进一步包括向企业提供一个或多个原型SSD的一个或多个设计验证测试(DVT)的结果,所述原型SSD利用SSD控制器和FW的实例根据SSD参考设计来构建。
EC40)如EC39所述的方法,其中,企业是系统供应商,并且出售、授权的行为,以及三个提供的行为由设计供应商执行。
EC41)如EC31所述的方法,进一步包括提供由企业根据参考设计直接或间接制造的且包括FW和SSD控制器的多个SSD中发生故障的SSD的故障分析。
EC42)如EC41所述的方法,其中,企业是系统供应商,并且出售、授权的行为,以及三个提供的行为由设计供应商执行。
EC43)如EC31所述的方法,其中,企业是第一企业,所述方法进一步包括向第二企业提供制造软件工具,所述制造软件工具能够将FW下载到SSD的制造实例中。
EC44)如EC43所述的方法,其中,第一企业是系统供应商,并且出售、授权的行为,以及三个提供的行为由设计供应商进行。
EC45)如EC43所述的方法,其中,制造软件工具还能够指示SSD的制造实例执行制造自测试和SSD的制造实例的闪存的测试中的一个或多个。
EC46)如EC43所述的方法,其中第一企业和第二企业属于同一家公司。
EC47)如EC43所述的方法,其中第一企业和第二企业属于不同公司。
EC48)如EC25或EC28所述的方法,其中,I/O设备参考设计符合I/O设备控制器、一个或多个非易失性存储器设备、一个或多个电源、一个或多个温度传感器、一个或多个壳体、一个或多个印刷电路板、一个或多个无源组件和FW中的一个或多个。
EC49)如EC26或EC30所述的方法,其中,固态存储器设备包括闪存设备,并且固态存储器设备制造商包括闪存设备制造商。
EC50)如EC49所述的方法,其中:
所述SSD是来自多个类别的SSD的第一特定类别的SSD;
所述SSD控制器连同FW还能够经由SSD参考设计和列表的任意闪存设备来实现至少第二特定类别的SSD;以及
所述类别的SSD包括企业类SSD、云类SSD、工业类SSD和客户端类SSD。
EC51)如EC49所述的方法,其中:
所述SSD是来自多个类别的SSD的第一特定类别的SSD;
所述类别的SSD包括企业类SSD、云类SSD、工业类SSD和客户端类SSD;
所述FW是来自多个类别的FW的第一特定类别的FW;
所述类别的FW包括与企业类SSD相关联的企业类FW、与云类SSD相关联的云类FW、与工业类SSD相关联的工业类FW和与客户端类SSD相关联的客户端类FW;
所述SSD控制器连同来自所述类别的FW的第二特定类别的FW还能够经由SSD参考设计和列表的任意闪存设备来实现至少来自所述类别的SSD的至少第二特定类别的SSD;以及
第二特定类别的SSD是与第二特定类别的FW相关联的所述类别的SSD。
EC52)如EC51所述的方法,其中,至少两个类别的FW具有至少一部分共同的程序、函数和/或操作。
EC53)如EC50或EC51所述的方法,其中,来自闪存设备制造商中的第一闪存设备制造商的闪存设备可用于制造第一特定类别的SSD,并且来自闪存设备制造商中的第二闪存设备制造商的闪存设备可用于制造第二特定类别的SSD。
EC54)如EC50或EC51所述的方法,其中,来自闪存设备制造商中的特定闪存设备制造商的多个类别的闪存设备中的第一类别闪存设备的闪存设备可用于制造第一特定类别的SSD,并且来自多个类别的闪存设备中的第二类别闪存设备的闪存设备可用于制造第二特定类别的SSD。
EC55)如EC49所述的方法,其中,SSD是相对较大容量的SSD,并且SSD控制器连同FW还能够经由SSD参考设计和列表的任意闪存设备来实现相对较小容量的SSD。
EC56)如EC55所述的方法,其中,来自闪存设备制造商中的第一闪存设备制造商的闪存设备可用于制造相对较大容量的SSD,并且来自闪存设备制造商中的第二闪存设备制造商的闪存设备可用于制造相对较小容量的SSD。
EC57)如EC55所述的方法,其中,来自闪存设备制造商中的特定闪存设备制造商的多个类别的闪存设备中的第一类别闪存设备的闪存设备可用于制造相对较大容量的SSD,并且来自多个类别中的第二类别的闪存设备可用于制造相对较小容量的SSD。
EC58)如EC49所述的方法,其中,SSD控制器在单个集成电路(IC)中实现。
EC59)如EC49所述的方法,其中,SSD控制器包括能够与列表的任意闪存设备进行数据通信的闪存接口。
EC60)如EC49所述的方法,其中,SSD控制器包括存储接口,所述存储接口与存储接口标准兼容并还能够经由存储接口耦合至提供存储命令的计算主机。
EC61)如EC60所述的方法,进一步包括操作计算主机以提供存储命令。
EC62)一种方法,包括:
经由与主机耦合的存储设备的存储接口从主机接收一条或多条命令,所述命令由主机指示存储在存储设备的存储空间中,而所述存储空间专门用于存储由存储设备产生的日志信息;
接收响应于事件开始执行命令的指示符;以及
响应于事件执行命令。
EC63)如EC62所述的方法,进一步包括:
向企业提供加密密钥以使企业解密来自加密固件存储库的作为一个或多个图像的固件,所述图像可由处理存储设备中包括的存储设备控制器的元件来执行,所述图像使能够执行命令,所述存储设备根据存储设备参考设计来构建;
向企业提供对经加密的固件存储库的访问;
其中所述命令包括存储设备的制造自测试;以及
其中所述存储设备包括选自组件列表的组件,所述列表是与固件、存储设备控制器和存储设备参考设计兼容的组件。
EC64)如EC62所述的方法,其中:
所述存储设备包括存储设备控制器和存储介质;
将与存储设备控制器兼容的固件授权给企业;
所述存储设备根据提供给企业的候选存储介质设备的列表和参考设计来构建;
所述存储介质由通过企业选自列表的元件组成;
存储设备控制器连同固件能够经由参考设计和列表的任何成员来实现存储设备;
存储设备控制器连同固件能够进行所述执行;以及
所述执行进行存储设备的制造自测试。
EC65)如EC62所述的方法,进一步包括存储由所述执行产生的一个或多个结果。
EC66)如EC62所述的方法,其中,所述指示符来自主机并且经由存储接口。
EC67)如EC62所述的方法,其中,所述存储空间另外专门用于自监测分析和报告技术(SMART)日志。
EC68)如EC67所述的方法,其中,所述SMART日志是第一SMART日志,且所述方法进一步包括将所述执行的一个或多个结果存储在第二SMART日志中。
EC69)如EC62所述的方法,其中,所述事件是包括下一开机事件和立即开始事件的多个事件中的一个。
EC70)如EC62所述的方法,其中,两个接收的行为以及执行的行为至少部分由固态磁盘(SSD)的控制器执行。
EC71)如EC62所述的方法,其中,两个接收的行为以及执行的行为至少部分由存储设备中包括的存储设备控制器实施。
EC72)如EC71所述的方法,其中,存储设备控制器在单个集成电路(IC)中实施。
EC73)一种方法,包括:
经由存储设备的存储接口接收开始执行存储设备的日志存储空间的第一部分中存储的一条或多条命令的指示符;
响应于指示符的接收执行命令;以及
将由执行的所有或任意部分产生的一个或多个结果存储在日志存储空间的第二部分中。
EC74)如EC73所述的方法,其中,指示符由与存储接口耦合的主机提供。
EC75)如EC73所述的方法,其中,日志存储空间是通过经由存储接口接收的SMART日志存储空间读取或写入访问与访问兼容的自监测分析和报告技术(SMART)日志存储空间。
EC76)如EC73所述的方法,其中,接收、执行和存储的行为至少部分由固态磁盘(SSD)的控制器执行。
EC77)一种方法,包括:
在存储设备中,经由存储设备的存储接口从主机接收信息,所述信息包括与执行存储设备的制造自测试的至少一部分兼容的一条或多条命令,所述信息进一步包括打算将命令存储在存储设备的日志存储的第一部分中的指令;
在存储设备中经由存储接口从主机接收指示符,所述指示符是指定何时开始执行日志存储的第一部分中存储的命令的存储设备的信号;
在存储设备中,响应于接收指示符来执行命令;
在存储设备中,存储日志存储的第二部分中的至少一部分执行结果;以及
其中,日志存储是通过经由存储接口接收的SMART日志存储访问命令可访问的自监测分析和报告技术(SMART)日志存储。
EC78)如EC77所述的方法,其中,指示符指示立即开始执行命令并且存储设备在执行期间至少部分与主机耦合。
EC79)如EC77所述的方法,其中,指示符指示在下次开机时开始执行命令,所述执行进一步响应于下次开机,并且存储设备在执行期间至少部分与主机分开。
EC80)如EC62、EC73或EC77所述的方法,其中,命令中的至少一个指示存储设备测试存储设备中包括的使存储设备能够存储经由存储接口接收的数据的存储介质。
EC81)如EC62、EC73或EC77所述的方法,其中,存储设备包括固态磁盘(SSD)并且存储接口包括串行高级技术附件(SATA)接口。
EC82)如EC62、EC73或EC77所述的方法,其中,指示符是供应商特定自监测分析和报告技术(SMART)命令传送(SCT)命令。
EC83)如EC62、EC73或EC77所述的方法,其中,命令包括写入存储命令、擦除存储命令、存储接口老化命令、延时命令、应力模式命令、循环命令和条件命令中的任意一个或多个。
EC84)如EC62、EC73或EC77所述的方法,其中,命令包括一系列一个或多个类型的操作。
EC85)如EC84所述的方法,其中,所述类型的操作中的至少一个指定写入存储设备中包括的存储介质。
EC86)如EC84所述的方法,其中,所述类型的操作中的至少一个指定擦除存储设备中包括的存储介质。
EC87)如EC84所述的方法,其中,所述类型的操作中的至少一个指定验证存储设备中包括的存储介质。
EC88)如EC84所述的方法,其中,所述类型的操作中的一个或多个包括与大小与长度对应的存储设备中包括的存储介质的一部分相关联的地址和长度。
EC89)如EC65、EC73或EC77所述的方法,其中,结果包括测试状态、一个或多个进程指示符、一个或多个统计以及错误信息中的任意一个或多个。
EC90)如EC89所述的方法,其中,测试状态包括未激活、激活、运行、输入结束、中止和错误测试状态中的任意一个或多个。
EC91)如EC89所述的方法,其中,进程指示符中的至少一个包括以下各项中的任意一项或多项:
相对于命令的输入偏移,
命令中的当前命令的指示符,
完成的多条命令的测量,
任意一条或多条命令的完成量的测量,
仍需测试的存储设备的用户数据存储的量的测量,
已经测试的用户数据存储的量的测量,
以及自开始执行之后经过的时间的测量。
EC92)如EC89所述的方法,其中,统计中的至少一个包括存储设备的所有或任意部分的温度、存储设备的用户数据存储的不良部分、用户数据存储的重新映射部分以及存储设备的无错误读取中的一个或多个。
EC93)如EC89所述的方法,其中,错误信息包括可校正和/或不可校正错误、程序错误、擦除错误、位错误计数和/或类型和错误事件中的一个或多个。
EC94)如EC62、EC73或EC77所述的方法,其中,存储设备至少部分经由所包括的一个或多个闪存设备实施大容量存储。
EC95)如EC94所述的方法,其中,存储设备包括能够与闪存设备中的至少一个进行数据通信的闪存接口。
EC96)如EC94所述的方法,其中,存储接口与存储接口标准兼容。
EC97)如EC62、EC74或EC77所述的方法,进一步包括操作主机以提供命令。
EC98)一种存储设备,包括:
固件;
处理元件,能够执行固件的指令;
存储接口,能够从与存储接口耦合的主机接收一条或多条命令以及响应于事件开始执行命令的指示符;
存储空间;以及
其中,利用处理元件执行固件的一个或多个程序使得:
按主机的指示,将命令存储在存储空间的一部分中,而所述存储空间专门用于存储由存储设备产生的日志信息,以及
响应于事件执行命令。
EC99)如EC98所述的存储设备,其中,所述固件、处理元件、存储接口和存储空间包括在固态磁盘(SSD)之内,并且所述存储接口包括串行高级技术配置(SATA)接口。
EC100)如EC98所述的存储设备,其中,所述存储空间包括第一自监测分析和报告技术(SMART)日志和第二SMART日志,第一SMART日志包括一部分,并且所述命令产生一个或多个结果,所述一个或多个结果存储在第二SMART日志中。
EC101)一种存储设备,包括:
具有第一和第二部分的日志存储空间;
固件;
处理元件,能够执行固件的指令;
存储接口,能够从与存储接口耦接的主机接收开始执行所述第一部分中存储的一条或多条命令的指示符;
其中,通过处理元件执行固件的一个或多个程序,使得
响应于接收指示符来执行命令,以及
将由所有或任意部分的所述执行产生的一个或多个结果存储在第二部分中。
EC102)如EC101所述的存储设备,其中,所述固件、处理元件、存储接口和日志存储空间包括在固态磁盘(SSD)内,并且所述存储接口包括串行高级技术配置(SATA)接口。
EC103)如EC101所述的存储设备,其中,所述日志存储空间包括第一和第二自监测分析和报告技术(SMART)日志,第一SMART日志包括第一部分,并且第二SMART日志包括第二部分。
EC104)如EC98或EC101所述的存储设备,其中,所述命令包括写入存储命令、擦除存储命令、存储接口老化命令、延时命令、应力模式命令、循环命令和条件命令中的任意一个或多个。
EC105)如EC98或EC101所述的存储设备,进一步包括存储介质;并且其中所述命令包括一系列一个或多个类型的操作,并且任何一个或多个操作包括指定写入、擦除并验证存储介质中的任何一项或多项。
EC106)一种有形计算机可读介质,其中存储有当由存储设备的处理元件执行时使处理元件执行包括以下各项的操作的一组指令,
管理经由存储设备的存储接口从与存储设备耦接的主机接收一条或多条命令,所述命令由主机指示存储在存储设备的存储空间的一部分中,而所述存储空间专门用于存储由存储设备产生的日志信息;
识别响应于事件开始执行命令的指示符;以及
响应于事件执行命令。
EC107)如EC106所述的有形计算机可读介质,其中,所述存储空间包括第一自监测分析和报告技术(SMART)日志和第二SMART日志,第一SMART日志包括一部分,并且所述命令产生一个或多个结果,所述一个或多个结果存储在第二SMART日志中。
EC108)一种有形计算机可读介质,其中,存储有当由存储设备的处理元件执行时使处理元件执行包括以下各项的操作的一套组指令,
管理经由存储设备的存储接口接收开始执行存储设备的日志存储空间的第一部分中存储的一条或多条命令的指示符;
响应于指示符的接收执行命令;以及
将由执行所述命令的所有或任意部分产生的一个或多个结果存储在日志存储空间的第二部分中。
EC109)如EC108所述的有形计算机可读介质,其中所述日志存储空间包括第一和第二自监测分析和报告技术(SMART)日志,第一SMART日志包括第一部分,并且第二SMART日志包括第二部分。
EC110)如EC106或EC108所述的有形计算机可读介质,其中,所述命令包括写入存储命令、擦除存储命令、存储接口老化命令、延时命令、应力模式命令、循环命令和条件命令中的任意一个或多个。
EC111)如EC106或EC108所述的有形计算机可读介质,其中,所述存储设备包括存储介质,所述命令包括一系列一个或多个类型的操作,并且任何一个或多个操作包括指定写入、擦除并验证存储介质中的任何一项或多项。
EC112)一种系统,包括:
用于经由与主机耦接的存储设备的存储接口从主机接收一条或多条命令的装置,所述命令由主机指示存储在存储设备的存储空间的一部分中,而所述存储空间专门用于存储由存储设备产生的日志信息;
用于接收响应于事件开始执行命令的指示符的装置;以及
用于响应于事件执行命令的装置。
EC113)如EC112所述的系统,其中,用于接收命令的装置、用于接收指示符的装置以及用于执行的装置包括在固态磁盘(SSD)内,并且所述存储接口包括串行高级技术配置(SATA)接口。
EC114)一种系统,包括:
用于通过存储设备并经由存储设备的存储接口接收开始执行存储设备的日志存储空间的第一部分中存储的一条或多条命令的指示符的装置;
用于响应于用于接收的装置执行命令的装置;以及
用于将由用于执行的装置的所有或任意部分产生的一个或多个结果存储在日志存储空间的第二部分中的装置。
EC115)如EC114所述的系统,其中,用于接收的装置、用于执行的装置以及用于存储的装置包括在固态磁盘(SSD)内,并且所述存储接口包括串行高级技术配置(SATA)接口。
EC116)如EC112或EC114所述的系统,其中,所述命令包括写入存储命令、擦除存储命令、存储接口老化命令、延时命令、应力模式命令、循环命令和条件命令中的任意一个或多个。
EC117)如EC112或EC114所述的系统,进一步包括存储介质;并且其中所述命令包括一系列一个或多个类型的操作,并且任何一个或多个操作包括指定写入、擦除并验证存储介质中的任何一项或多项。
EC118)一种方法,包括:
向代理提供I/O设备控制器;
向代理提供与I/O设备控制器兼容的固件(FW);
向代理提供I/O设备参考设计;
向代理提供非易失性存储器设备的列表,所述列表包括来自多个非易失性存储器设备制造商的非易失性存储器设备;以及
其中,I/O设备控制器连同FW能够经由I/O设备参考设计和列表的任何非易失性存储器设备来实施I/O设备。
EC119)如EC118所述的方法,其中:
所述代理包括企业,并且向代理提供I/O设备控制器包括将I/O设备控制器出售给企业;以及
提供FW包括将FW授权给企业。
EC120)如EC119所述的方法,其中,I/O设备包括固态磁盘(SSD),I/O设备控制器包括SSD控制器,I/O设备参考设计包括SSD参考设计,非易失性存储器设备包括闪存设备,并且非易失性存储器设备制造商包括闪存设备制造商。
EC121)如EC119所述的方法,进一步包括企业购买大量选自所述列表的非易失性存储器设备中的非易失性存储器设备,所述大量足以启用I/O设备的批量制造。
EC122)如EC121所述的方法,其中,企业是系统供应商,并且出售、授权的行为,以及两个提供的行为由设计供应商执行。
EC123)如EC122所述的方法,其中,系统供应商和设计供应商是不同的公司。
EC124)如EC123所述的方法,其中,I/O设备是企业类SSD,并且I/O设备控制器连同FW还能够经由I/O设备参考设计和列表的至少一部分非易失性存储器设备来实施客户端类SSD。
EC125)如EC123所述的方法,其中,I/O设备是相对较大容量的SSD,并且I/O设备控制器连同FW还能够实施经由I/O设备参考设计和列表的至少一部分非易失性存储器设备来实现相对较小容量的SSD。
EC126)具有或参照存储接口标准的任意前述EC,其中,存储接口标准包括以下各项中的一项或多项:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
嵌入式MMC(eMMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术配置(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接小型计算机系统接口(SAS)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
EC127)具有或参照闪存接口的任意前述EC,其中,闪存接口与以下各项中的一项或多项兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
DDR2同步接口,
同步接口,以及
异步接口。
EC128)具有或参照计算主机的任意前述EC,其中,计算主机包括以下各项中的一项或多项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器具,
个人计算机(PC),
膝上型电脑,
笔记本电脑,
上网本电脑,
平板设备或电脑,
超极本电脑,
电子阅读设备(电子阅读器),
个人数字助理(PDA),
导航系统,
(手持式)全球定位系统(GPS)设备,
汽车控制系统,
汽车媒体控制系统或计算机,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
电视机,
媒体记录器,
数字视频录像机(DVR),
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
EC129)具有或参照至少一个闪存设备的任意前述EC,其中至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC130)具有或参照至少一个闪存设备的任意前述EC,其中,至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
单层存储单元(SLC)闪存技术存储单元,以及
多层存储单元(MLC)闪存技术存储单元。
EC131)具有或参照至少一个闪存设备的任意前述EC,其中,至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
基于多晶硅技术的电荷存储单元,以及
基于氮化硅技术的电荷存储单元。
EC132)具有或参照至少一个闪存设备的任意前述EC,其中至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
基于二维技术的闪存技术,以及
基于三维技术的闪存技术。
系统
图1A示出了包括与VDMM和SSD MST兼容使用的SSD控制器的SSD的实施方式的所选细节。SSD控制器用于管理比如经由NVM元件(例如,闪存)实施的非易失性存储。SSD控制器100经由一个或多个外部接口110与主机(未示出)通信耦接。根据各种实施方式,外部接口110是以下各项中的一项或多项:SATA接口;SAS接口;PCIe接口;光纤通道接口;以太网接口(诸如10千兆以太网);任意前述接口的非标准版本;定制接口;或用于将存储和/或通信和/或计算设备互连的任何其他类型的接口。例如,在某些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100进一步经由一个或多个设备接口190与包括一个或多个存储设备(比如,闪存设备192的一个或多个实例)的NVM199通信耦接。根据各种实施方式,设备接口190是以下各项中的一项或多项:异步接口;同步接口;单倍数据速率(SDR)接口;双倍数据速率(DDR)接口;DRAM兼容DDR或DDR2同步接口;ONFI兼容接口(比如,ONFI2.2或ONFI3.0兼容接口);切换模式兼容闪存接口;任意前述接口的非标准版本;定制接口;或用于连接至存储设备的任何其他类型的接口。
在某些实施方式中,每一个闪存设备192具有一个或多个个别闪存芯片194。根据闪存设备192的特定闪存设备的类型,特定闪存设备192中的多个闪存芯片194任选地和/或可选地并行访问。闪存设备192只表示能够与SSD控制器100通信耦合的一种类型的存储设备。在各种实施方式中,任何类型的存储设备都是可使用的,比如SLC NAND闪存、MLCNAND闪存、NOR闪存、使用基于多晶硅或氮化硅技术的电荷存储单元的闪存、基于二维或三维技术的闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁性存储器、相变存储器、赛道存储器、ReRAM或任何其他类型的存储器设备或存储介质。
根据各种实施方式,设备接口190被组织为:一条或多条总线,其中每条总线具有闪存设备192的一个或多个实例;一个或多个总线组,其中每条总线具有闪存设备192的一个或多个实例,其中一组中的总线通常被并行访问;或闪存设备192的一个或多个实例至设备接口190的任何其他组织。
继续图1A,SSD控制器100具有一个或多个模块,比如主机接口111、数据处理121、缓冲器131、映射141、回收站151、ECC161、设备接口逻辑191以及CPU171。图1A中所示的具体模块和互连仅仅表示一个实施方式,可以想到一些或所有模块以及未示出的其他模块的多种布置和互连。在第一实例中,在某些实施方式中,存在两个或两个以上主机接口111来提供双通道。在第二实例中,在某些实施方式中,数据处理121和/或ECC161与缓冲器131组合。在第三实例中,在某些实施方式中,主机接口111直接与缓冲器131耦合,并且数据处理121任选地和/或可选地对于存储在缓冲器131中的数据进行操作。在第四实例中,在某些实施方式中,设备接口逻辑191直接与缓冲器131耦接,并且ECC161任选地和/或可选地对于存储在缓冲器131中的数据进行操作。
主机接口111经由外部接口110发送和接收命令和/或数据,并且,在某些实施方式中,经由标签跟踪113来跟踪单独命令的进程。例如,命令包括指定要读取的数据的地址(诸如LBA)和量(诸如LBA配量,例如扇区的数量)的读取命令;作为响应,SSD提供读取状态和/或读取数据。再如,命令包括指定要写入的数据的地址(诸如LBA)和量(诸如LBA配量,例如扇区的数量)的写入命令;作为响应,SSD提供写入状态和/或请求写入数据且随后任选提供写入状态。对于又一实例,命令包括指定不再需要分配的一个或多个地址(诸如一个或多个LBA)的去分配命令(例如,修整命令);作为响应,SSD相应地修改映射且任选提供去分配状态。在某些上下文中,ATA兼容TRIM命令是示例性去分配命令。对于又一实例,命令包括超级电容器测试命令或数据强化成功查询;作为响应,SSD提供适当状态。在某些实施方式中,主机接口111与SATA协议兼容,并且,使用NCQ命令能够具有高达32条待处理命令,每条命令有表示为数字0至31的唯一标签。在某些实施方式中,标签跟踪113能够将经由外部接口110接收的命令的外部标签与用于在SSD控制器100处理过程中跟踪命令的内部标签相关联。
根据各种实施方式,揭示以下各项中的一个或多个:数据处理121任选地和/或可选地处理在缓冲器131与外部接口110之间发送的一些或所有数据;以及数据处理121任选地和/或可选地处理存储在缓冲器131中的数据。在某些实施方式中,数据处理121使用一个或多个引擎123来执行以下各项中的一项或多项:格式化;重新格式化;转码;以及任何其他的数据处理和/或操控任务。
缓冲器131存储自设备接口190发送至外部接口110/自外部接口110发送至设备接口190的数据。在某些实施方式中,缓冲器131另外存储由SSD控制器100使用的系统数据(诸如某些或全部映射表)以管理闪存设备192中的一个或多个实例。在各种实施方式中,缓冲器131具有以下各项中的一个或多个:用于临时存储数据的存储器197;用于控制至和/或自缓冲器131的数据的移动的DMA133;用于提供较高级错误校正和/或冗余功能的ECC-X135;以及其他数据移动和/或操控功能。较高级冗余功能的示例为一种RAID类能力(例如,RASIE),其中,在闪存设备(例如闪存设备192的多个闪存设备)级和/或闪存芯片(比如闪存芯片194)级上而非在磁盘级上具有冗余。
根据各种实施方式,揭示以下各项中的一个或多个:ECC161任选地和/或可选地处理在缓冲器131和设备接口190之间发送的一些或所有数据;以及ECC161任选地和/或可选地处理存储在缓冲器131内的数据。在某些实施方式中,ECC161用于提供较低级错误校正和/或诸如根据一个或多个ECC计算的冗余功能。在某些实施方式中,ECC161实现以下各项中的一个或多个:CRC码;汉明码;RS码;BCH码;LDPC码;维特比码;格子码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或纠正码;以及上述的任意组合。在某些实施方式中,ECC161包括一个或多个解码器(诸如LDPC解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例。设备接口逻辑191能够根据闪存设备192的协议将数据发送到/从闪存设备192发送数据。设备接口逻辑191包括调度193,从而经由设备接口190可选地顺序控制闪存设备192的实例。例如,在某些实施方式中,调度193能够排队对于闪存设备192的实例的操作,并且当单独的闪存设备192(或闪存芯片194)的实例可用时,可选地将操作发送至单独的闪存设备192(或闪存芯片194)的实例。
映射141在用于外部接口110上的数据寻址与用于设备接口190上的数据寻址之间转换,使用表143将外部数据地址映射至NVM199中的位置。例如,在某些实施方式中,映射141经由由表143提供的映射将用于外部接口110上的LBA转换成瞄准一个或多个闪存芯片192的区块和/或页地址。对于自驱动制造或去分配未曾被写入的LBA,该映射指向缺省值以传回是否读取该等LBA。例如,在处理去分配命令时,修改该映射以使得对应于去分配LBA的条目指向缺省值中的一个。在各种实施方式中,存在各种缺省值,其各自具有对应指针。多个缺省值使得能够读取某些去分配LBA(诸如在第一范围中)作为一个缺省值,同时读取其他去分配LBA(诸如在第二范围中)作为另一个缺省值。在各种实施方式中,缺省值由闪存、硬件、固件、命令和/或基元引数和/或参数、可编程寄存器或其各种组合定义。
在某些实施方式中,映射141使用表143执行和/或查询在外部接口110上使用的地址和设备接口190上使用的数据寻址之间转换。根据各种实施方式,表143为以下各项中的一个或多个:一级映射;二级映射;多级映射;映射缓存;压缩映射;一个地址空间至另一个地址空间的任何类型映射;以及上述的任意组合。根据各种实施方式,表143包括以下各项中的一个或多个:静态随机存取存储器;动态随机存取存储器;NVM(比如闪存);缓存存储器;片上存储器;片外存储器;以及上述的任意组合。
在某些实施方式中,回收站151执行垃圾收集。例如,在某些实施方式中,闪存设备192的实例包含在可重写入之前必须擦除的区块。回收站151能够例如,通过扫描映射141保持的映射来确定闪存设备192的实例的哪些部分正在有效使用中(例如,经分配而非经去分配),然后使闪存设备192的实例的未使用(例如,去分配)部分通过对其进行擦除而可用于写入。在进一步实施方式中,回收站151能够移动存储在闪存设备192的实例内的数据,以使闪存设备192的实例的较大连续部分可用于写入。
在某些实施方式中,闪存设备192的实例可选地和/或动态地经配置、管理和/或使用以具有用于存储不同类型和/或性质的数据的一个或多个频带。这些频带的数目、布置、大小和类型可动态地改变。例如,将来自计算主机的数据写入热(作用)频带,而将来自回收站151的数据写入冷(较少作用)频带中。在某些使用场景下,如果计算主机写入长的顺序流,则热频带的大小增加,而如果计算主机随机写入或较少写入,则冷带的大小增加。
CPU171控制SSD控制器100的各个部分。CPU171包括CPU内核172。根据各种实施方式,CPU内核172为一个或多个单核或多核处理器。在某些实施方式中,CPU内核172中的各个处理器内核是多线程的。CPU内核172包括指令和/或数据缓存器和/或存储器。例如,指令存储器包括能使CPU内核执行软件(例如,有时称为固件)以控制SSD控制器100的指令。在某些实施方式中,CPU内核172执行的一些或所有固件存储在闪存设备192上(如图所示,例如,为图1B中的NVM199的固件106)。
在各种实施方式中,CPU171进一步包括:在经由外部接口110接收的命令处于进程的同时跟踪和控制该命令的命令管理173;控制缓冲器131的分配和使用的缓冲器管理175;控制映射141的转换管理177;控制数据寻址的一致性并避免诸如外部数据访问和回收数据访问之间冲突的一致性管理179;控制设备接口逻辑191的设备管理181;控制身份信息的修改和通信的身份管理182;以及任选其他管理单元。根据各种实施方式,CPU171执行的任何或所有管理功能是由硬件、软件(诸如在CPU内核172或经由外部接口110连接的主机上执行的固件)或其任何组合进行控制和/或管理的。
在某些实施方式中,CPU171能够执行其他管理任务,例如,以下各项中的一个或多个:收集和/或报告性能统计;实现SMART;控制电力排序、控制和/或监测和/或调整电力消耗;对电力故障做出响应;控制和/或监测和/或调整时钟速率;以及其他管理任务。
各种实施方式包括与SSD控制器100类似并且与各种计算主机的操作兼容的计算主机闪存控制器,诸如,经由主机接口111和/或外部接口110适配。各种计算主机包括以下各项中的一个或其任何组合:计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上型电脑、笔记本电脑、上网本电脑、平板设备或电脑、超极本电脑、电子阅读设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或多合一设备、POS设备、现金出纳机、媒体播放器、电视机、媒体记录器、DVR、数码相机、蜂窝手机、无绳电话手机和电子游戏机。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任意部分在单个IC、多芯片IC的单芯片、多芯片IC的多个芯片或多个IC上实施。例如,缓冲器131在与SSD控制器100的其他元件相同的芯片上实施。再如,缓冲器131在与SSD控制器100的其他元件不同的芯片上实施。
图1B示出包括图1A的SSD的一个或多个实例的系统的各种实施方式的所选细节。SSD101包括经由设备接口190与NVM199耦接的SSD控制器100。该图示出了各类实施方式:与主机直接耦接的单个SSD,各自经由各个外部接口分别与主机直接耦接的多个SSD,以及经由各个互连元件与主机间接耦接的一个或多个SSD。
作为直接与主机耦接的单个SSD的示例性实施方式,SSD101的一个实例经由外部接口110与主机102直接耦接(例如,省略、绕过或穿过交换机/光纤/中间控制器103)。作为各自经由各个外部接口与主机直接耦接的多个SSD的示例性实施方式,SSD101的多个实例中的每一个经由外部接口110与主机102直接耦接(例如,省略、绕过或穿过交换机/光纤/中间控制器103)。作为经由各个互连元件与主机间接耦接的一个或多个SSD的示例性实施方式,SSD101的一个或多个实例中的每一个分别与主机102间接耦接。每个间接耦接都是经由耦接交换机/光纤/中间控制器103的外部接口110和耦接主机102的中间接口104的各个实例。
包括交换机/光纤/中间控制器103的某些实施方式还包括经由存储器接口180耦接且SSD可访问的卡存储器112C。在各种实施方式中,SSD、交换机/光纤/中间控制器103和/或卡存储器中的一个或多个包括在物理可识别的模块、卡或可插入元件(例如,I/O卡116)上。在某些实施方式中,SSD101(或其变型)对应于与作为主机102操作的起始器耦接的SAS驱动器或SATA驱动器。
主机102能够执行主机软件115的各个元件,诸如OS105、驱动程序107、应用程序109和多设备管理软件114的各种组合。虚线箭头107D表示主机软件←→I/O设备通信,例如,经由驱动程序107及应用程序109(经由驱动程序107或直接作为VF)自SSD101的实例中的一个或多个发送至OS105中的一个或多个及自OS105的一个或多个接收至SSD101的实例中的一个或多个的数据。
OS105包括和/或能够借助与SSD交互的驱动程序(概念上由驱动程序107示出)操作。Windows的各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux的各种版本(例如,Red Hat、Debian及Ubuntu)及MacOS的各种版本(例如,8、9及X)是OS105的实例。在各种实施方式中,驱动程序是借助标准接口和/或协议比如SATA、AHCI或NVM Express)操作的标准和/或通用驱动程序(有时称为“紧缩套装”或“预安装”),或者任选定制和/或供应商特定以启用SSD101所特定的命令的使用。某些驱动器和/或驱动程序具有穿过模式以启用应用级程序,诸如经由最佳化NAND访问(有时称为ONA)或直接NAND访问(有时称为DNA)技术的应用程序,以将命令直接传递至SSD101,使得定制应用程序能够甚至借助通用驱动程序使用SSD101所特定的命令。ONA技术包括以下各项中的一个或多个:非标准修饰符(提示)的使用;供应商特定命令的使用;非标准统计比如根据可压缩性的实际NVM使用的通信;以及其他技术。DNA技术包括以下各项中的一个或多个:提供对NVM的未经映射读取、写入和/或擦除存储的非标准命令或供应商特定命令的使用,比如通过绕过I/O设备原本将进行的数据的格式化来提供对NVM的更直接访问的非标准或供应商特定命令的使用;以及其他技术。驱动程序的实例是不具有ONA或DNA支持的驱动程序、ONA启用的驱动程序、DNA启用的驱动程序及ONA/DNA启用的驱动程序。驱动程序的进一步示例是供应商提供、供应商开发和/或供应商增强驱动程序及客户端提供、客户端开发和/或客户端增强驱动程序。
应用级程序的实例是不具有ONA或DNA支持的应用程序、ONA启用的应用程序、DNA启用的应用程序及ONA/DNA启用的应用程序。虚线箭头109D表示应用程序←→I/O设备通信(例如,经由驱动程序绕过或经由用于应用程序的VF绕过),例如,ONA启用的应用程序及与SSD通信(例如不具有使用OS作为媒介物的应用程序)的ONA启用的驱动程序。虚线箭头109V表示应用程序←→I/O设备通信(例如,经由用于应用程序的VF绕过),例如DNA启用的应用程序和与SSD通信(诸如不具有使用OS或驱动程序作为媒介物的应用程序)的DNA启用的驱动程序。
在某些实施方式中,NVM199的一个或多个部分用于固件存储,例如固件106。固件存储包括一个或多个固件图像(或其部分)。例如,固件图像具有(例如)通过SSD控制器100的CPU内核172执行的固件的一个或多个图像。再如,固件图像具有(例如)在固件执行期间有CPU内核参考的常数、参数值及NVM设备信息的一个或多个图像。固件的图像对应于(例如)当前固件图像及零或零以上先前(相对于固件更新)固件图像。在各种实施方式中,固件提供通用、标准、ONA和/或DNA操作模式。在某些实施方式中,经由任选由驱动程序传递和/或提供的密钥或各种软件技术来启用固件操作模式中的一个或多个(例如,一个或多个API“未经锁定”)。
在缺少交换机/光纤/中间控制器的某些实施方式中,SSD经由外部接口110与主机直接耦接。在各种实施方式中,SSD控制器100经由诸如RAID控制器的其他控制器的一个或多个中间层与主机耦接。在某些实施方式中,SSD101(或其变型)对应于SAS驱动器或SATA驱动器,且交换机/光纤/中间控制器103对应于扩展器,该扩展器又与起始器耦接,或可替代地,交换机/光纤/中间控制器103对应于桥接器,该桥接器经由扩展器与起始器间接耦接。在某些实施方式中,交换机/光纤/中间控制器103包括一个或多个PCIe交换机和/或光纤。
在各种实施方式中,诸如在其中主机102作为计算主机(例如,计算机、工作站计算机、服务器计算器、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上型电脑、笔记本电脑和/或上网本电脑)的某些实施方式中,计算主机任选能够与一个或多个本地和/或远程服务器(例如,任选服务器118)通信(例如,经由任选I/O&存储设备/资源117以及任选LAN/WAN119)。例如,通信启用SSD101元件的任意一个或多个的本地和/或远程访问、管理和/或使用。在某些实施方式中,通信完全地或部分地经由以太网。在某些实施方式中,通信完全地或部分地经由光纤通道。在某些实施方式中,LAN/WAN119表示诸如服务器场中的网络、耦合服务器场的网络的一个或多个局域和/或广域网、城域网和互联网中的任意一个或多个。
在各种实施方式中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起实现为非易失性存储组件,比如USB存储组件、CF存储组件、MMC存储组件、eMMC存储组件、Thunderbolt存储组件、UFS存储组件、SD存储组件、记忆棒存储组件和xD图片卡存储组件。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能在主机(例如,图1B的主机102)中实现,控制器要与该主机耦接。在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动程序软件和/或SSD控制固件)或其任意组合来实现。例如,ECC单元(比如,类似于图1A的ECC161和/或ECC-X135)的功能或与该ECC单元相关联的功能部分经由软件在主机上实施且部分经由固件和硬件的组合在SSD控制器中实施。再如,回收站单元(比如类似于图1A的回收站151)的功能或与该回收站单元相关联的功能部分地经由软件在主机上实施且部分地经由硬件在计算主机闪存控制器中实施。
映射操作
图2示出了映射LBA的LPN部分的实施方式的所选细节。在某些实施方式中,读取单元是可独立读取的最细粒度的NVM,例如NVM的页面的一部分。在进一步实施方式中,读取单元对应于(较低级)纠错码的校验位(有时称为冗余)和由校验位保护的所有数据。例如,图1A的ECC161经由校验码比如经由LDPC码来实施错误校正,并且读取单元对应于实现除由LDPC编码位保护的数据位之外的LDPC码的编码位。
在某些实施方式中,映射141诸如经由表143(如图1A所示)将LBA211的LPN213部分映射到LPN的映射信息221。LPN的映射信息(诸如LPN的映射信息221)有时被称为映射条目。据说映射141使LPN与对应映射条目相关联。在各种实施方式中,映射经由一个或多个相关查找,经由一个或多个非相关查找,和/或经由一个或多个其他技术。
在某些实施方式中,SSD控制器100为潜在和/或活动主动使用中的每个LPN维护一个映射条目。
在某些实施方式中,LPN的映射信息221包括各个读取单元地址223和读取单元的长度225。在某些实施方式中,存储长度和/或跨度,比如通过将长度存储为相对于跨度的偏移量来在读取单元的长度225的所有或任意部分中进行编码。在进一步实施方式中,第一LPN与第一映射条目相关联,第二LPN(不用于第一LPN,但引用大小与由第一LPN引用的逻辑页面的大小相同的逻辑页面)与第二映射条目相关联,并且第一映射条目的读取单元中的各个长度不同于第二映射条目的读取单元中的各个长度。
在各种实施方式中,在同一时间点,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN)与第二映射条目相关联,并且第一映射条目的各个读取单元地址与第二映射条目的各个读取单元地址相同。在进一步实施方式中,与第一LPN相关联的数据和与第二LPN相关联的数据都存储在NVM199中的同一设备的同一物理页面中。
根据各种实施方式,读取单元地址223与以下各项中的一个或多个相关联:NVM中的开始地址;NVM中的结束地址;任意前述的偏移量;以及用于识别与LPN213相关联的NVM的一部分的任何其他技术。
图3示出了在读取单元地址访问NVM以产生被组织为各个读取单元的读取数据,集体具有在读取单元配量中测得的长度的实施方式的所选细节。根据各种实施方式,第一读取单元313是以下各项中的一个或多个:在NVM的地址空间中具有最低地址的读取数据311中的读取单元之一;读取单元的固定读取单元;读取单元的任意读取单元;读取单元的可变读取单元;以及通过任何其他技术选择的读取单元之一。在各种实施方式中,通过读取不超过由单位单元的长度225指定的数量的读取单元SSD控制器100能够访问NVM199并产生读取数据311。
图4A示出了读取单元(诸如图3的读取单元313或315)作为读取单元401A的一个实施方式的所选细节。在各种实施方式和/或使用场景下,报头1441A至报头N419A是连续的,并且由每个报头识别的各个数据区域(诸如经由各个偏移量)继最后一个报头之后是连续的。数据区域集体形成数据字节421A。按位置顺序存储数据区域,并且该位置顺序匹配存储报头的位置顺序。例如,鉴于第一报头,在读取单元开始时,第二报头和第三报头连续紧接着第一报头。第一数据区域(通过第一报头中的第一偏移量识别的)连续紧接着第三报头。第二数据区域(通过第二报头中的第二偏移量识别的)连续紧接着第一数据区域。类似地,第三数据区域(通过第三报头识别的)连续紧接着第二数据区域。
图4B示出了读取单元(诸如图3的读取单元313或315)作为读取单元401B的另一实施方式的所选细节。在各种实施方式和/或使用场景下,报头标记(HM)410B是指示以下连续的报头(报头1411B、报头2412B…报头N419B)的数量的任选初始字段(诸如1字节字段)。数据区域(数据字节421B、数据字节422B…数据字节429B)分别由报头(报头1411B、报头2412B…报头N419B)识别并按位置顺序存储,该位置顺序与存储报头的位置顺序相反。报头开始于读取单元的初端,而对应数据区域开始于读取单元的末端。在某些实施方式中,数据区域中的数据字节(例如,数据字节421B、数据字节422B…数据字节429B)按递增顺序(匹配位置顺序的字节顺序)排列,而在其他实施方式中,数据字节沿相反顺序(相对于位置反向的字节顺序)排列。在某些实施方式中,报头标记在读取单元中使用,其中报头和数据字节按同一位置顺序存储(例如,如图4A所示)。
在某些实施方式中,任选填充字节413A(或413B)符合与特定LPN相关联的数据的粒度。例如,在某些实施方式中,如果数据字节421A(或集体为数据字节421B、数据字节422B…数据字节429B)具有少于固定量的剩余空间,比如8字节,在存储与除了报头1411A至报头N419A(或报头1411B、报头2412B…报头N419B)的最后一个报头之后的所有报头相关联的数据之后,与最后报头相关联的LPN的数据开始于后续读取单元。在进一步实施方式中,最后报头中的特定偏移值(例如,所有偏移值)指示与最后报头相关联的LPN的数据开始于后续读取单元。
图5示出了具有大量字段的报头(诸如,图4A的报头1411A至报头N419A或图4B的报头1411B至报头419B中的任意一个)的实施方式的所选细节。在某些实施方式中,报头为固定长度(例如,每个报头的长度为相同数量的字节)。报头501包括字段类型511、最后指示符513、标志515、LPN517、长度519和偏移量521。类型字段识别数据字节的类别。例如,类型字段指示数据字节的类别为主机数据(例如,逻辑页面数据)或系统数据(例如映射信息或检查点信息)中的一个。最后字段指示报头是数据字节之前的最后报头。在具有报头标记的某些实施方式中,任选省略最后字段。LPN字段是报头与其相关联的LPN。LPN字段使报头解析能够通过(例如)搜索报头中LPN字段与特定LPN匹配的报头来确定与特定LPN相关联的报头中的特定报头。长度字段是数据字节的字节长度(例如,数据有多少字节在与报头501相关联的数据字节421A中)。在某些实施方式中,偏移字段中的偏移量根据特定粒度(例如,8字节粒度)进行取整。
在各种实施方式中,与特定LPN相关联的一部分或所有信息存储在与特定LPN相关联的映射条目、与特定LPN相关联的报头或这两者中。例如,在某些实施方式中,长度519的一些或所有存储在映射条目中,而不是报头中。
非易失性存储器组织与管理的所选方面
在各个实施方式中,实施SSD大容量存储的NVM经由一个或多个闪存芯片实现。每个闪存芯片包括整数个区块(例如,N个区块)并且区块的擦除配量最小。在某些实施方式中,每个区块包括整数个页面并且页面的写入的最小配量。根据各种实施方式,揭示以下各项中的一项或多项:读取单元的读取和错误校正的最小配量;每个页面包括整数个读取单元;相关组的两个或多个页面包括整数个读取单元;并且读取单元任选和/或可选跨越页面边界。
在各种实施方式中,各种NVM管理功能(例如,读取、回收、擦除和/或编程/写入)以R-块为单位执行。R-块被举例说明为例如闪存的各个芯片(例如,所有芯片,不包括完全地或部分地出现故障的芯片的所有芯片,和/或一个或多个所选子集的芯片)上的逻辑片或者段。例如,在具有R闪存芯片的闪存中,每个闪存芯片具有N个区块,每个R-块是总共N个R-块中的来自一起取出的每个闪存芯片的第i区块。继续该示例,如果R闪存芯片之一发生故障,则每个R-块是总共N-1个R-块中的来自除故障闪存芯片之外的每个闪存芯片的第i区块。再如,在具有R闪存芯片的闪存中,每个具有N个区块,每个R-块是总共N/2个R-块中的来自每个闪存芯片的第i和第(i+l)区块。对于又一实例,在具有多个双平面设备的闪存中,每个R-块是来自每个双平面设备的第i偶数区块和第i奇数区块。
虚拟驱动器制造模式
图6示出了诸如虚拟SSD制造模式的虚拟驱动器制造模式的实施方式的所选细节的流程图。示出了如由三个不同的企业实体执行的操作:设计供应商610(例如,集成电路设计公司)、制造商620(例如,承包制造公司)和系统供应商630(例如,OEM)。在各种实施方式中,不同的企业实体是不同的公司,而在其他实施方式中,不同企业实体中的一个或多个是同一公司的一部分。在各种实施方式中,不同企业实体的任意一个或多个是以下各项中的任意一个或多个:公司、合伙企业、独资企业、正式或非正式作为正在经营的企业操作的一个或多个个体以及在没有任何特定企业或组织的会员资格的情况下操作的一个或多个个体。在各种实施方式中,不同企业实体中的任意一个或多个是以下各项中的任意一个或多个:盈利实体、非盈利实体、教育实体和政府实体。
从概念上讲,设计供应商向系统供应商提供SSD控制器和相关联固件,连同利用SSD控制器产生SSD的建议和/或支持的闪存设备(和/或诸如其他设备/组件的其他材料)和选自该列表的一个或多个闪存设备(和/或其他材料)的参考设计和相关列表。然后系统供应商选自材料以至少部分基于SSD控制器从固件、参考设计、列表和/或一个或多个属性(例如,价格、可用性、耐用性和/或性能)制造SSD。所述选择包括从列表中选择一个或多个闪存设备。系统供应商进一步采购材料以制造一个或多个原型的SSD。在各种实施方式中,原型中的不同原型利用所选闪存设备中的不同闪存设备进行构建,比如以能够比较所选的存储器设备。制造商(诸如根据系统供应商的指示起作用的合同制造商)构建原型SSD。设计供应商对原型SSD进行评估并将评估结果的所有或任意部分提供给系统供应商。
系统供应商,至少基于所提供的结果的一部分,直接或经由合同制造商(诸如构建原型SSD的合同制造商),或以这两种方式批量制造SSD。系统供应商采购(或指示采购)批量制造中使用的材料(例如,来自设计供应商的SSD控制器和/或由列表识别并任选来自一个或多个闪存供应商的闪存设备)。系统供应商将批量制造的SSD出售给一个或多个客户(例如,用于企业营业比如服务器,诸如数据中心的云应用,诸如耐震计算机的工业应用,和/或诸如PC的客户端应用)。因此,使系统供应商能够在不对被构建成批量制造的SSD的闪存设备(和/或其他材料)支付保证金,但要向闪存设备(和/或其他材料)自身的供应商支付保证金的情况下出售批量制造的SSD。
在某些实施方式和/或使用场景下,系统供应商执行RMA和/或检修操作,至少相对于与客户的交互,任选全部或部分基于设计供应商向系统供应商提供的培训和/或工件。根据各种实施方式,RMA和/或检修提供由系统供应商、设计供应商或这两者执行的故障分析操作的信息。例如由合同制造商执行批量制造的SSD的所有或任意部分的重做。
示例性系统供应商包括所谓的“云提供商”(例如,谷歌、脸谱和亚马逊),数据中心实施者/用户(例如,银行、制药公司和金融服务公司),以及包括SSD的系统的OEM。其他示例性系统供应商包括一些类型的制造商,比如一些合同制造商和/或一些原始设计制造商。
更具体地,且由图所示,设计供应商实现SSD控制器和固件以便利用SSD控制器(控制器&固件611)执行。设计供应商至少部分基于SSD控制器和固件产生与参考设计(参考设计&闪存建议612)一起使用的建议和/或支持闪存设备的列表和至少一个相关联参考设计。设计供应商利用(例如)SSD控制器、固件、至少一个参考设计和所述列表的一个或多个闪存设备来产生一个或多个SSD的文献和工程/调试样品。文献(例如,市场营销资料和/或工程信息)全部或部分基于样品SSD和列表的闪存设备的评估/表征(例如,价格、性能和/或特征),以及设计供应商内部的设计文件(例如,描述SSD控制器、固件和/或至少一个参考设计的结构文件)中的任意一个或多个。
设计供应商向系统供应商提供文献、一个或多个样品SSD、至少一个参考设计和/或列表(建议和/或支持闪存设备的列表)的所有或任意部分。至少部分基于由设计供应商提供给系统供应商的前述项目,系统供应商选择并采购SSD批量制造所需的材料(或可替代地足够用于原型构建的初始数量的材料)并批准批量制造的SSD的设计(BOM选择、BOM采购和设计批准632)。选择包括从列表的闪存设备中选择一个或多个闪存设备。采购包括采购足够数量的所选闪存设备以便对SSD进行原型构建和/或批量生产。批量制造的SSD符合至少一个参考设计并使用SSD控制器、固件(或任选地和/或可选地为系统供应商定制的固件的一个或多个版本,比如企业版本、云版本、工业版本和/或客户端版本)以及所选闪存设备。在某些实施方式中,将固件(或固件的定制版本)授权给系统供应商以便用于利用SSD控制器制造的SSD中。
随后,系统供应商630指示制造商620构建符合至少一个参考设计且包括SSD控制器、固件和列表的所选闪存设备的一个或多个原型SSD(原型制造623)。原型SSD利用由系统供应商采购的至少一部分材料(例如,SSD控制器和所选闪存设备)来构建。在某些实施方式和/或使用场景下(未示出),系统供应商构建原型SSD。
设计供应商610然后比如经由硬件验证和标准(硬件验证/标准614)和/或可靠性和验证测试(RDT、EVT&DVT615)来评估和/或表征原型SSD。硬件验证和表征任选包括互操作性和/或符合性检查。例如,验证原型SSD是否符合主机接口协议和/或电气信号标准。根据各种实施方式,设计供应商利用固件、为系统供应商定制的固件的一个或多个版本或其任意组合来进行评估和/或表征。设计供应商向系统供应商提供验证/表征的一个或多个结果。系统供应商检查所提供的结果中的至少一部分并确定原型SSD对批量制造来说是否有足够的质量(系统质量保证634)。设计供应商为比如由制造商(批量制造625)和/或系统供应商(批量制造635)执行的批量制造(批量制造655)提供可靠性和验证的一个或多个结果。系统供应商为批量制造(无论是由制造商、系统供应商或者这两者执行)提供系统质量保证的结果。
在某些实施方式中,为了使得能够批量制造批量制造的SSD,设计供应商610提供任选用于批量制造(比如批量制造655,无论是由制造商620执行作为批量制造625还是由系统供应商630执行作为批量制造635)的制造软件工具(制造软件工具616)。在各种实施方式和/或使用场景下,制造软件工具基于来自以下各项中的任意一个或多个的信息:控制器&固件611、参考设计&闪存建议612、固件验证/表征614和RDT、EVT&DVT615,以上各项集体示为所选设计供应商操作618。例如,在某些实施方式中,制造软件工具为在与多个批量制造的SSD耦合且能够基本上全部或部分并行与多个批量制造的SSD中的全部SSD通信或经启用配置所述全部SSD的计算机系统上运行的程序。
根据各种实施方式和/或使用场景,制造软件工具启用和/或执行以下各项中的一项或多项:初始配置批量制造的SSD之一;将固件下载到批量制造的SSD之一;对批量制造的SSD之一执行MST或其他诊断功能;对批量制造的SSD之一执行各个唯一加密密钥的分配;将其他唯一ID分配给批量制造的SSD之一(比如以太网MAC地址);将信息记录在数据库中(比如制造记录和/或制造统计);与设计供应商的服务器的通信(比如经由互联网)作为唯一加密密钥和/或密钥托管的分配的一部分;以及任选地和/或可选地用作批量制造的一部分的其他功能。在某些实施方式中,制造软件工具用于原型构建(比如用于原型制造623)。为了进一步描述请参见本文其他地方的“制造软件工具”。
然后,系统供应商出售批量制造的SSD中的一个或多个。经出售的批量制造SSD的一部分由客户返回,比如由于所察觉到的缺陷、故障、错误、缺点和/或不足。系统供应商从客户接收出售SSD中返回的SSD,并进行进厂检验和/或检修(RAM/检修636)。例如,根据检验和/或检修的结果,提供返回的SSD用于故障分析,比如由设计供应商(故障分析617)和/或系统供应商(故障分析637)执行。在某些情况下,制造商(和/或系统供应商,为具体示出)试图修理、修正和/或修复已经进行了故障分析(重做627)的一部分SSD。然后系统供应商任选出售后经故障分析的SSD(未示出)中成功重做的SSD。在某些实施方式中,设计供应商为系统供应商提供一个或多个软件工具以帮助故障分析和/或确定返回的SSD是否在故障分析之后发送(例如,设计供应商、制造商或系统供应商)。
在各种实施方式和/或使用场景下,设计供应商向系统供应商出售SSD控制器的实例,授权系统供应商使用固件,产生并授权由设计供应商为系统供应商定制的固件使用,或进行其任意组合。
在某些基于许可的实施方式中,至少部分经由设计供应商向系统供应商授权各种能力,比如固件许可、固件打戳和/或固件提取来启用SSD生产(例如,原型或批量)。在基于许可的实施方式的某些实施方式中,设计供应商向系统供应商授权需要使用制造软件工具(比如,制造软件工具616)。在需要使用制造软件工具的基于许可的实施方式的某些实施方式中,进行固件授权、固件打戳和/或固件提取中的一项或多项要求经由制造软件工具。根据各种实施方式,要求使用如由设计供应商610提供的制造软件工具616使设计供应商610能够进行以下各项中的一项或多项:比如通过经由互联网向设计供应商610报告统计和/或其他信息的制造软件工具616监测生产和/或跟踪固件或SSD的其他授权;执行制造SSD的功能比如密钥托管;以及其他监测、跟踪、授权或托管功能。
尽管图中未具体示出,但在某些实施方式和/或使用场景下,示出的操作的一部分向示出的操作的其他部分提供反馈。例如,向控制器&固件611和/或参考设计&闪存建议612反馈硬件验证/表征614和/或RDT、EVT&DVT615的一部分或所有结果。再如,向控制器&固件611,参考设计&闪存建议612以及BOM选择、BOM采购和设计批准632中的任意一个或多个反馈从批量制造625和/或批量制造635获得的信息。对于又一个示例,向控制器&固件611、参考设计&闪存建议612、BOM选择、BOM采购和设计批准632、批量制造625和批量制造635中的任意一个或多个反馈从RAM/检修636、故障分析617、故障分析637和/或重做627中的任意一个或多个获得的数据。
在各种实施方式和/或使用场景下,图6中所示的操作从概念上讲由具有多个系统供应商(以及任选对应的多个制造商)的同一设计供应商复制。因此,设计供应商向多个系统供应商提供虚拟驱动器制造能力。
在各种实施方式和/或使用场景下,由设计供应商实现的SSD控制器和/或固件(控制器&固件611)能够利用来自多个闪存设备供应商的闪存设备进行操作。例如,SSD控制器和/或固件能够利用具有可变读取、写入(程序)和/或擦除技术、参数和/或特征的闪存设备进行操作。继续该实例,SSD控制器包括用来(例如,通过固件和/或各种硬件状态机)跟踪每个闪存芯片、其区块、其页面或其任意部分或子部分上的操作(例如读取、写入和/或擦除)的次数或操作的特征(重试次数、软错误和/或硬错误)的存储器(例如,控制RAM125的扩展数据结构126)。SSD控制器可选地和/或任选地根据所跟踪的操作次数、所跟踪的操作特征和/或SSD控制器正在管理的特定闪存设备的特定特征来改变读取、写入和/或擦除操作。在某些情况下,SSD控制器进行的读取、写入和/或擦除操作的变化使得利用来自多个闪存供应商的各个闪存设备来操作SSD控制器,并且各个闪存设备包括在建议和/或支持闪存设备的列表中。
再如,SSD控制器和/或固件能够根据各种错误恢复代码,比如零以上奇偶码、零以上RS码、零以上BCH码、零以上维特比或其他格子码及零以上LDPC码中的一个或多个来管理闪存设备。继续该示例,SSD控制器和/或固件能够根据第一码率的各种BCH码来管理来自第一闪存供应商的所选闪存设备,以及根据第二码率的各种BCH码来管理来自第二闪存供应商的所选闪存设备。进一步地,SSD控制器和/或固件能够根据各种奇偶码来管理来自第三闪存供应商的第一类别的闪存设备,以及根据各种LDPC码来管理来自第三闪存供应商的第二类别的闪存设备。建议和/或支持闪存设备的列表任选包括来自第一闪存供应商的所选闪存设备、来自第二闪存供应商的所选闪存设备和来自第三闪存供应商的第一和第二类别的闪存设备中的一个或多个。
在各种实施方式和/或使用场景下,SSD控制器和/或固件能够利用各种大小配量,比如512、516、520、524、528、532、536、540、1024、1032、2048、2056、4096、4100、4104、4108、4112、4116、4160、4164、4172、4192、4196、4204、4224、4228、4236和4256字节中的任意一个或多个的主机LB进行操作。利用前述任意LB大小进行操作使得使用针对各种潜在客户的各种SSD产品中的SSD控制器和/或固件。例如,系统供应商向作为服务器(例如,存储服务器)供应商的企业客户,或向作为数据中心供应商的云客户提供能够利用前述LB大小中的任意两个或两个以上进行操作的一个或多个SSD产品,并向作为耐震计算机供应商的工业客户,或向作为PC(例如,膝上型电脑)供应商的客户端客户提供能够利用512字节LB进行操作的一个或多个SSD产品。
在各种实施方式和/或使用场景下,SSD控制器和/或固件能够实现改变容量、使SSD产品能够针对各种潜在客户的SSD。例如,系统供应商向作为服务器(例如,存储服务器)供应商的企业客户,或向作为数据中心供应商的云客户提供相对大容量的SSD,并向作为耐震计算机供应商的工业客户,或向作为PC(例如,膝上型电脑)供应商的客户端客户提供相对小容量的SSD。例如,系统供应商向企业和/或云客户提供两个SSD,SSD中的第一个具有相对较大容量并且能够进行相对较慢的随机存取,第二个具有相对较小容量并且能够进行相对较快的随机存取。在某些实施方式中,SSD控制器和/或固件能够至少部分经由主机LBA二级映射成NVM位置来实现不同容量的SSD。二级映射例如部分经由LBA除以表示每个SLM页面的SLM条目的数量的可编程值来实现,从而得到商数和余数。商数选择FLM条目,余数选择通过所选的FLM条目选择的SLM页面的特别条目(为了进一步描述请参见本文其他地方的“LBA至NVM位置映射”)。
在各种实施方式和/或使用场景下,SSD控制器和/或固件能够实现改变诸如在非扩展温度范围内的可靠操作和在扩展温度范围内的操作的温度能力的SSD,从而使SSD产品能够针对各种温度范围。例如,系统供应商向企业、云和/或客户端客户提供非扩展温度范围SSD,并向工业客户提供扩展温度范围SSD。在某些实施方式中,SSD控制器和/或固件能够至少部分经由利用改变温度能力的非易失性存储器设备进行的兼容操作来实现改变温度能力的SSD。
在各种实施方式和/或使用场景下,SSD控制器和/或固件能够实现改变可靠性、耐用性和/或性能的可预测性的SSD,使得SSD产品能够针对各种可靠性、耐用性和/或性能特征集的可预测性。例如,系统供应商向企业、云和/或工业客户提供相对较高的可靠性和耐用性SSD,并向客户端客户提供相对较低的可靠性和耐用性SSD。再如,系统供应商向云客户提供具有相对更易于预测的性能的SSD,并向企业、工业和/或客户端客户提供具有相对不易预测的性能的SSD。在某些实施方式中,SSD控制器和/或固件能够至少部分经由利用改变可靠性和/或耐用性的非易失性存储器设备进行的操作来实现改变可靠性和/或耐用性的SSD。在某些实施方式中,SSD控制器和/或固件能够至少部分经由在改变可靠性和/或耐用性的模式下操作相同非易失性存储器设备(例如,在SLC模式或MLC模式下操作MLC设备)来实现改变可靠性和/或耐用性的SSD。在某些实施方式中,SSD控制器和/或固件能够至少部分经由改变过度供应的量来实现改变性能的可预测性的SSD(例如,在某些使用场景下,越高的过度供应支持越高的性能可预测性)。
因而,使用除法并改变可编程值启用分配给二级映射的存储的固定大小的存储(比如二级映射的第一级的存储和/或二级映射页面的缓存器的存储),相对较大容量的SSD利用比相对较小容量的SSD相对较大的粒度来进行映射。随着映射的粒度减少,在某些实施方式和/或使用场景下,可用的同时激活的映射条目的数量增加。在某些情况下,随着同时激活的映射条目的数量增加,随机存取的性能和/或有效处理的独立连续流的数量增加。
在各种实施方式和/或使用场景下,由设计供应商实施的SSD控制器(控制器&固件611)等同于图1A的SSD控制器100或是其变型。在各种实施方式和/或使用场景下,由设计供应商实现的固件((控制器&固件611)等同于图1B的固件106或是其变型。在各种实施方式和/或使用场景下,由设计供应商产生的至少一个参考设计(参考设计&闪存建议612)等同于图1A的SSD101或是其变型,例如,如图1B中所示的任意实施方式和/或上下文中所使用的。在各种实施方式和/或使用场景下,由设计供应商(参考设计&闪存建议612)产生的建议和/或支持闪存设备的列表相对于闪存192、闪存芯片194和NVM199中的任意一个或多个,如图1A所示。
图6的前述描述重点在于作为设计供应商相对于系统供应商进行的BOM选择具体建议和/或支持的元件的闪存设备。在各种其他实施方式中,诸如包括电源、温度传感器、壳体、印刷电路板和无源组件的其他设备/组件的各种其他(或额外)材料由设计供应商相对于系统供应商进行的BOM选择具体建议和/或支持。例如,来自第一温度传感器供应商的第一和第二温度传感器由设计供应商建议和/或支持,而来自第二温度传感器供应商的第三温度传感器不由设计供应商建议和支持(例如,由于在固件中缺乏支持)。因而,当选择用于SSD的原型设计或制造的材料时,系统供应商自由选自第一和第二温度传感器,而不是第三温度传感器。
SSD批量制造和原型构建
图7A示出了根据虚拟驱动器制造模式的SSD的(批量)制造(或原型构建)的实施方式的所选细节的概念表示。所示的元件被分组为两个解耦部分,任选使工程设置操作能够与工厂操作分开执行。执行第一部分(工程730A)以设置生产流程,例如每一轮生产流程一次或相同模式SSD的一系列生产流程一次。对每个生产流程执行第二部分(工厂740F),无论是单轮生产流程(诸如,对于原型构建)还是相同模式SSD的一系列生产流程之一(诸如,对于批量制造),以完成每个SSD的制造的各个方面。根据各种实施方式和/或使用场景,被描述成工程730A的元件的所有或任意部分的操作由以下各项中的一个或多个执行:图6的系统供应商630和图6的制造商620。
工程730A的元件包括产生固件图像,有时称为“打戳固件”(制造固件包),用于制造一个或多个SSD。制造固件图像根据许可描述(许可文件701)和分布固件图像(分发固件包703)经由应用程序(包管理器711)来产生。包管理器利用许可文件从分发固件包中提取固件,并执行一个或多个打戳功能(诸如,加密、保护、个性化和/或定制制造固件包),从而产生制造固件包。包管理器任选产生用于如许可文件中所识别的所有或任意可用授权驱动器配置(例如,设计供应商相对于系统供应商已同意提供和/或支持的配置)的驱动器配置模板。在某些实施方式中,包管理器能够经由GUI交互。在各种实施方式和/或使用场景下,许可文件、分发固件包和包管理器中的任意一个或多个由图6的设计供应商610提供。
工程730A的元件还包括产生一个或多个命令行输入和/或文件(驱动器配置和设置文件722)以控制工厂740F的元件所使用的制造软件。驱动器配置和设置文件根据驱动配置和/或参数(系统供应商所需的驱动器设置704)经由应用程序(配置管理器712)产生。配置管理器任选可作为中心存储库进行操作以管理所有SSD设置和/或下载选项。在某些实施方式中,配置管理器能够作为GUI利用驱动器设置和固件下载流选项进行操作。在某些实施方式和/或使用场景下,系统供应商所需的驱动器设置由图6的系统供应商630提供,并且配置管理器由图6的设计供应商610提供。
制造固件包和驱动器配置和设置文件从工程730A传递至工厂740F,以供制造软件工具(MT)751使用。制造工具能够将固件下载到没有固件的SSD中,或可替代地下载到具有待取代/升级的固件的SSD(全新SSD750F)中。由此将全新SSD转化为具有新下载的固件的SSD(固件加载的SSD750L)中。下载的固件基于制造固件包、驱动器配置和唯一标识信息(序列号,全球名称(WWN)760、诊断解锁密钥和/或供应商身份数据)。
在某些实施方式和/或使用场景下,下载固件包括经由(例如)设置唯一序列号和/或唯一WWN来将SSD产品化。在某些实施方式和/或使用场景下,制造软件工具能够提供和/或托管加密密钥,比如公共加密密钥,该加密密钥对SSD来说是独一无二的。在进一步实施方式和/或使用场景下,提供和/或托管包括与通过设计供应商操作的服务器通信。在某些实施方式和/或使用场景下,制造软件工具能够便在执行一个或多个工厂测试之后将SMART属性和/或日志(例如,执行ClearSMART)重设为清洁工厂运输状态。
在某些实施方式中,下载固件包括执行SSD的安全擦除(例如)作为在向客户发放SSD之前的最终操作。在某些实施方式中,制造工作能够指示所下载的固件对固件要下载到其上的SSD执行一个或多个生产测试。生产测试包括SSD的MST和/或SSD的闪存的测试。
“没有固件的SSD”的实例为在下载固件之后(即任选在执行一个或多个后续制造操作之后)作为SSD进行操作的元件的集合。例如,图1B的SSD101(其中尚未下载FW106)是没有固件的SSD的实例。
作为制造特定SSD的特定示例,系统供应商从由设计供应商提供的许可文件以及由设计供应商提供的分发固件包开发特定制造固件包。系统供应商利用来自设计供应商并且例如在运行Linux版本的PC上执行的包管理器应用程序来开发特定制造固件包。系统供应商确定特定SSD的所需驱动器设置(例如,容量、过度供应、可靠性特征和其他产品特定和/或模式特定属性)并将所需的驱动器设置提供给来自设计供应商并且例如在PC上执行的配置管理器应用程序。配置管理器应用程序产生一个或多个特定命令行的特定文件,所述特定命令行是特定于特定SSD和所需驱动器设置的。
继续该实例,制造商利用设计供应商提供的制造工具将没有固件的SSD转化为具有固件的SSD。制造工具将经由特定命令行控制的制造固件包下载到没有固件的SSD中,由此将没有固件的SSD转化为具有固件的SSD。制造工具任选指示具有固件的SSD经由所下载的固件执行MST。特定命令行,例如,指定用于定制固件的每个实例的序列号和/或WWN信息的生成,该固件经下载使得,例如,每个制造的SSD具有唯一WWN和/或唯一序列号。
在各种实施方式中,包管理器711、配置管理器712和制造软件工具(MT)751中的任意一个或多个是图6的制造软件工具616的所有或任意部分或其变型。
图7B示出了根据虚拟驱动器制造模式的SSD的(批量)制造(或原型构建)的系统的实施方式的所选细节。诸如工作站计算机、PC、膝上电脑或笔记本电脑(主机780P)的计算主机与一个或多个SSD(示为SSD.1790P.1...SSD.N790P.N)耦接。计算主机能够执行制造工具应用软件(例如,如主机780P中所示且进一步如图7A中的另一情况所示的制造软件工具(MT)751)。设想具有与单个主机耦接的任意数量的SSD的实施方式,以及具有多个主机的实施方式,每个主机与各组的一个或多个SSD耦接。在具有与单个主机耦接的多个SSD的实施方式中,经由制造软件工具任选地使单个主机能够指示固件下载至完全或部分并行耦合的任意数量的SSD和/或指示对其进行制造测试。
在操作中,主机780P执行制造软件工具(MT)751以将固件下载到SSD.1790P.1...SSD.N790P.N中的任意一个或多个中,由此将没有固件的一个或多个SSD转化为具有固件的一个或多个SSD(如图7A的全新SSD750F、制造软件工具(MT)751和固件加载SSD750L所示)。
在某些实施方式中,制造软件工具经由诸如利用主机(例如,主机780P)上执行的shell程序解释的一系列一个或多个命令行的命令行调用可操作。作为具体示例,命令行调用包括识别制造软件工具(例如,制造软件工具(MT)751)的第一参数、识别对应于准备接受固件的SSD(例如,SSD.1790P.1...SSD.N790P.N中的一个)的特定设备的第二参数、识别驱动器配置文件(例如,图7A的驱动器配置和设置文件722)的第三参数、分别是准备接受固件的SSD的序列号和WWN(例如,图7A的序列号、全球名称(WWN)760)的第四和第五参数。第六(任选)参数指定诊断解锁密钥。在某些实施方式和/或使用场景下,诊断解锁密钥用于防止在使用经由制造软件工具生产的SSD期间对特定命令,例如对特定系统供应商独一无二的诊断命令,的非授权访问。第七(任选)参数指定512B供应商身份数据文件,例如对特定系统供应商独一无二的信息集合。第八(任选)参数指定输出和/或日志文件的名称。在进一步实施方式中,输出和/或日志写入有包括下载结果和/或在SSD上执行的任意MST和/或闪存设备测试结果的状态信息。
图7C示出了根据虚拟驱动器制造模式的SSD,诸如经由比如图7A和/或图7B所示的实施方式生产的SSD的SSD的固件更新的实施方式的所选细节的概念表示。如图7A所示,所示的元件被分组为两个解耦部分,任选使工程设置操作能够与固件更新分开执行。执行第一部分(工程730C),例如,每一轮生产流程的固件发行一次或相同模式SSD的一系列生产流程的固件发行一次,以设置固件更新。对每个固件更新执行第二部分(终端用户740E),无论是一轮生产流程(诸如对于原型固件更新)还是相同模式SSD的一系列生产流程之一(诸如对于终端用户固件更新)。根据各种实施方式和/或使用场景,被描述成工程730C的元件的所有或任意部分的操作由图6的系统供应商630和图6的制造商620中的一个或多个执行。在某些实施方式和/或使用场景下,工程730C的元件由与图7A的工程730A的元件相同的组织执行。
工程730C的元件包括字段更新固件图像(字段更新固件包723),用于对一个或多个SSD进行固件更新。类似于图7A的制造固件包721,字段更新固件图像根据许可文件701和分发固件包703经由包管理器711来产生。包管理器利用许可文件从分发固件包中提取可用于固件更新的固件,并执行一个或多个打戳功能(诸如加密、保护、个性化和/或定制字段更新固件包),从而产生字段更新固件包。例如,包管理器使特定字段更新固件包个性化以便在产生用于生产SSD的对应特定制造固件包时匹配由包管理器执行的所有或任意部分的个性化,所述SSD将具有经由特定字段更新固件包更新的固件。再如,包管理器将散列戳记(例如,作为字段更新固件包的初端的元件的一部分,或作为字段更新固件包的末端的元件的一部分)添加到字段更新固件包,从而使字段更新固件包个性化。戳记包括一种或多种安全措施,以使字段更新固件包能够只在具有带散列戳记的固件的SSD上使用,该散列戳记匹配字段更新固件包的戳记。
将字段更新固件包从工程730C传递至终端用户740E,以供SSD更新软件工具(UT)753使用。SSD更新工具能够经由下载到具有(旧)固件的SSD((旧)固件加载SSD750X)的固件来更新固件。由此将具有旧固件的SSD转化为具有新固件的SSD((新)固件加载SSD750Y)。在某些实施方式和/或使用场景下,固件更新经由一个或多个密钥、供应商标识符、固件覆盖字符串和/或各种安全技术(用加密密钥754表示的)来解锁和/或启用。当产生字段更新固件包时,解锁和/或启用与包管理器执行的打戳功能兼容。因而,防止未经授权的用户执行固件升级,例如将新的/修正的固件下载到先前具有所下载的固件的SSD上。在各种上下文中,终端用户740E表示设计供应商(例如,要求对固件进行工程改变)、系统供应商和/或制造商(例如,要求对固件进行生产相关改变)或系统供应商的客户(例如,对先前由终端用户使用的SSD的字段升级的终端用户)中的任意一个或多个。
在某些实施方式和/或使用场景下,固件更新包括信息和/或操作以将先前产生的SSD(例如,具有先前所下载的固件的SSD)从一个配置和/或一组行为变为另一个配置和/或另一组行为。例如,附件被附加到固件图像以启用经由固件更新修改在生产时固定的行为(例如,由系统供应商所需的驱动器设置704经由图7A的配置管理器712进行的行为)。
图7D示出了根据虚拟驱动器制造模式的SSD的固件更新的系统的实施方式的所选细节。类似于图7B,诸如工作站计算机、PC、膝上型电脑或笔记本电脑(主机780E)的计算主机与一个或多个SSD(示为SSD.1790E.1...SSD.N790E.N)耦接。计算主机能够执行SSD更新工具应用软件(例如,如主机780E中所示且进一步如图7C中的另一情况所示的SSD更新软件工具(UT)753)。如图7B所示,设想具有与单个主机耦接的任意数量的SSD的实施方式,以及具有多个主机的实施方式,每个主机与各组的一个或多个SSD耦接。在具有与单个主机耦接的多个SSD的实施方式中,经由SSD更新软件工具任选地使单个主机能够指示固件更新为(例如,下载到)完全或部分并行耦接的任意数量的SSD。
在操作中,主机780E执行SSD更新软件工具(UT)753以将固件更新为(例如,下载到)SSD.1790E.1...SSD.N790E.N中的任意一个或多个,由此将具有旧固件的一个或多个SSD转化为具有新固件的一个或多个SSD(如图7C的(旧)固件加载SSD750X、SSD更新软件工具(UT)753和(新)固件加载SSD750Y)。
在某些实施方式和/或使用场景下,经由一个或多个密钥、供应商标识符、固件覆盖字符串和/或各种安全技术(加密密钥702)解锁和/或启用由包管理器711执行的一个或多个功能/操作(例如,产生制造固件包721和/或字段更新固件包723)和/或由配置管理器712执行的一个或多个功能/操作(例如,产生驱动器配置和设置文件722)。
在各种实施方式和/或使用场景下,图7B的主机780P和图7D的主机780E中的一个或两个等同于图1B的主机102或是其变型。在各种实施方式和/或使用场景下,图7B的SSD.1790P.1...SSD.N790P.N和图7D的SSD.1790E.1...SSD.N790E.N中的任意一个或多个等同于如图所示,例如图1B所示的SSD101或是其变型。
所选示例性VDMM实施技术
在某些实施方式和/或使用场景下,图6和图7A至图7D的一个或多个元件或其部分全部或部分经由若干计算机辅助和/或计算机相关技术中的一个或多个来执行。例如,元件之间的一个或多个路径可经由电子邮件、XML注释规范和/或基于XML的形式中的任意一个或多个实现,并且服务器对服务器交易,例如图6的BOM选择、BOM采购和设计批准632的参考设计&闪存建议612信息的传递是经由电子邮件和/或多个XML注释规范进行的。再如,一个或多个元件可至少部分经由多层互联网商务服务器的任意一层或多层,一个或多个Web、数据库和/或应用服务器,以及一个或多个Web、数据库和/或应用程序脚本、程序和/或应用程序中的任意一个或多个实现。例如,与图6的控制器&固件611相关的文献可经由网站比如可经由一个或多个Web、数据库和/或应用服务器可用。
对于又一示例,比如基于加密通信、密码和/或其证书和服务器的加密密钥托管技术用于实现某些操作。例如,许可服务器提供加密密钥的加密检验,比如图7A和7C的许可文件701的所有或任意部分。再如,某些元件全部或部分经由使用互联网的一个或多个企业对企业自动化系统来分布。例如,如图7B中使用的制造软件工具(MT)751(和/或如图7D中使用的SSD更新软件工具(UT)753)是经由设计供应商分布给利用互联网的制造商自动化系统。
在各种实施方式和/或使用场景下,图6和图7A至图7D的一个或多个元件或其部分是在各种排列的位置执行的。例如,与图6的设计供应商610、制造商620和系统供应商630相关的所有操作在同一位置执行。再如,与设计供应商610相关的所有操作在第一位置执行,与制造商620相关的所有操作在第二位置执行,并且与系统供应商630相关的所有操作在第三位置执行。对于又一实例,与设计供应商610和系统供应商630相关的某些操作在第一位置执行,与制造商620和系统供应商630相关的某些操作在第二位置执行。再如,与(图7A的)工程730A和工厂740F相关的某些操作在多个位置执行。
LBA至NVM位置映射
图8示出了经由具有FLM和一个或多个SLM页面的二级映射将LBA映射到NVM中所存储的LB的实施方式的所选细节,作为LBA至NVM位置映射800。二级映射经由与一个或多个第二级元件(从概念上讲被示为单个元件SLM页面820)耦接的第一级元件(FLM810)来实施。FLM包括多个条目(SLM页面/长度810.1...SLM页面/长度810.M)。FLM的每个条目指向SLM页面(比如SLM页面820)中的一个。SLM页面包括多个条目(LB页面/长度820.1...LB页面/长度820.N)。SLM页面的每个条目指向数据开始的NVM中的位置(例如,至少存储用于LBA的主机写入数据的初端的读取单元)。除法器(整数除法器822)例如从可编程硬件寄存器接收参数(SLM条目/SLM页面(CSR)823)以除以输入LBA,从而确定要选择哪个FLM条目以及要选择哪个SLM条目(其在所选FLM条目指向的SLM页面内)。除法器与FLM和SLM页面耦合。
在各种实施方式中,该图示图1A的映射141和/或表143的所选细节或与其有关的所选细节。例如,在某些实施方式中,映射141和/或表143实施映射信息的一个或多个缓存,比如FLM的一个或多个条目和/或SLM的一个或多个条目。FLM和/或SLM的整个图像保持在NVM(例如,图1A的NVM199)部分中,例如当缓存取代先前缓存的FLM和/或SLM条目时更新。在某些实施方式中,FLM和/或SLM整个图像经由滚动或往复式球检查点来实现,每个检查点是各自整个映射图像的一部分。
在操作中,将LBA821提供给整数除法器822。除法器将LBA除以如SLM条目/SLM页面(CSR)823提供的每个SLM页面的SLM条目数量,从而得到商数(FLM索引822Q)和余数(SLM页面索引822R)。商数用于选择FLM条目中的一个,并读取所选FLM条目的页面字段(SLM指针810S)。页面字段用于选择SLM页面中的一个(例如,SLM页面820),并且余数用于(例如,作为偏移量)选择所选SLM页面的条目。所选SLM页面条目的页面字段用于选择诸如特定读取单元的NVM中的特定位置,在该特定位置存储有与所呈现的LBA对应的LB的至少初端(LB指针820L)。在各种实施方式中,LB指针包括NVM的读取单元的地址(例如,图2的读取单元地址223)。在某些实施方式中,每个FLM条目包括指示要读取多少读取单元才获得FLM条目的页面字段指定的所有各个SLM页面(例如,图2的读取单元的长度225)的长度字段(例如,编码大小和/或跨度)。
在各种实施方式中,商数被用作访问诸如SLM页面的全相关缓存器的缓存器的密钥。如果缓存器中存在特定SLM页面命中,则在不访问NVM的情况下在缓存器中找到特定SLM页面的最新副本。在某些实施方式和/或使用场景下,对多个SLM页面提供快速访问使得能够更有效地处理对NVM的随机访问和/或访问NVM的多个独立连续数据流(例如,访问LBA的第一区域的第一连续数据流穿插访问LBA的第二区域的第二连续数据流)。
固态磁盘制造自测试
SSD MST流程的示例的概述如下。技术人员将要测试的SSD耦接至主机(例如,通过将SSD插入测试主机计算机)。在技术人员的指示和在主机上执行的一个或多个程序下,SSD(任选结合主机)执行SSD的闪存测试,然后保存增长缺陷列表的开始状态。闪存测试例如为检查与主机的连接线是否起作用。增长缺陷列表的开始状态例如是闪存的不可操作的区块的开始列表。主然后机通过写入具有形成测试的命令的输入日志(例如,SMART日志)来配置MST。命令选自可由SSD执行(例如,经由固件)的多个支持MST命令。从概念上讲,支持MST命令基体对应于API以便与SSD的闪存交互。当主机完成配置之后,主机发送START命令(例如,作为特定SCT命令,比如MST_START)以使SSD置于MST模式下并通过执行来自输入日志的命令来指示SSD开始测试。
在某些使用场景下,START命令指示SSD立即开始测试(同时与主机耦接)。在其他使用场景下,START命令指示SSD立即进入待机模式并延迟开始测试直至下一次SSD通电。在START命令指示进入待机模式的一些使用场景下,在SSD进入待机模式并关机之后,技术人员将SSD与主机分开并将SSD耦接至电源(例如,机架)。然后,技术人员指示电源向SSD施加电力。当SSD通电时,开始测试。
在测试开始之后,技术人员等待SSD(例如,诸如LED的可视化显示器)的指示符以指示完成该测试。可替代地,技术人员定期关闭SSD,将SSD与电源分开,并将SSD耦接至主机,使SSD通电,并经由主机查询SSD以确定测试的状态,比如是否完成测试。
在SSD完成测试之后,SSD进入待机模式。然后,技术人员将SSD耦接至主机(如果SSD尚未耦接至主机)并使SSD通电。主机(例如,在技术人员的指示下和/或响应于SSD的耦合和开机)读取(从SSD)并保存(例如,保存至与主机耦接的存储器)增长缺陷列表的测试和最终状态的结果。然后,主机向SSD发送COMPLETE命令(例如,作为诸如MST_COMPLETE的特定SCT命令)以指示SSD结束MST并制备SSD出售给系统供应商和/或客户。
尽管前文针对一个技术人员进行了描述,但在各种实施方式和/或使用场景下,技术人员比如在一段时间内为一个个体,或者可替代地为多个个体。
在某些实施方式和/或使用场景下,MST指定一个或多个环境参数以控制进行MST的SSD的环境背景。在某些实施方式中,环境参数用于实现例如可适用于SSD的闪存的一个或多个电压斜升。
图9A示出了SSD MST流程的实施方式的所选细节。在各种情况下,由于相对于测试对SSD执行流程,擦除和/或重写事先存储在SSD上的用户数据的所有或任意部分。(SSD MST的上下文中的“用户数据”的示例包括作为主机读取/写入接收或源自其的数据,比如操作系统数据、驱动程序数据和应用程序数据。)主机用于根据流程创建并启动测试。该测试继续在SSD重新启动期间运行直至SSD完成测试或主机通过向SSD发送ABORT命令(例如,作为诸如MST_ABORT的特定SCT命令)指示SSD过早结束测试。在某些实施方式中,不执行SSD的所有闪存,例如,分配和/或指定用于存储用户数据的闪存的区域,任选包括供应分配和/或指定上的任意一个。在某些实施方式中,主机解释测试结果(例如,主机确定测试是通过还是失败)。在各种实施方式中,设计供应商(比如符合虚拟驱动器制造模式)在SSD中提供根据所示的SSD MST流程启用操作的固件。
流程大致列为三部分:创建以运行测试(准备MST910),运行测试(运行MST920),以及在完成测试(结束MST930)之后执行各种完成后操作。流程的准备部分开始(开始911)创建一个或多个MST命令(生成MST命令912),比如经由测试人员起草命令和/或在主机上执行脚本以创建命令。在某些使用场景下(例如,在某些制造使用场景下),测试仅仅是单个写入驱动器(例如SSD)命令。该流程继续准备SSD以便进行MST操作(MST操作的SSD准备就绪913),比如包括从SSD读取增长缺陷列表的开始状态的主机,以及指示SSD以执行安全擦除并清除一个或多个SMART日志的主机。然后,主机配置SSD以便通过将测试的命令存储到SSD的输入SMART日志中(将MST命令写入SMARTLog0xF8914)来执行测试。
流程继续执行主机指示SSD进入MST模式(激活MST915),比如通过向SSD发出MST_START命令。在某些使用场景下,发出的MST_START命令包括指示SSD开始根据下一次SSD通电有关的SMART日志执行测试的命令的功能码。响应于接收MST_START命令,SSD设置MST标志。SSD现在能够执行输入SMART日志中存储的测试,而不需要与主机进一步交互(例如,无需诸如SATA接口的主机接口与主机耦合)。在某些实施方式中,主机调查SSD的输出SMARTLog(例如,SMARTLog0xF9)直至输出SMARTLog中存储的测试状态指示符指示SSD已经进入和/或激活MST模式。响应于主机确定SSD已经进入和/或激活MST模式,主机指示SSD立即进入待机模式,然后关闭SSD。当关闭SSD时,比如通过将SSD从主机重新定位到机架,例如专门进行MST操作的测试人员,SSD与主机分开并与电源耦合(移动SSD916)。
在某些使用场景下,省略解开重新定位(移动SSD916),并且在SSD保持与主机耦接时执行该测试。在某些使用场景下,发出的MST_START命令包括指示SSD立即开始执行命令,而同时保持与主机耦接的功能码。
在发出MST_START命令且随后任选重新定位如与机架耦接的SSD,流程的准备部分(准备MST910)完成且运行部分(运行MST920)开始。该流程继续进行比如经由主机或机架向SSD施加电力(SSD921上的电力)。响应于电力的施加,SSD在MST模式下开始操作(开始MST922),并开始从输入SMART日志取出并执行命令(执行SMARTLog0xF8MST命令923)。当在MST模式下时,SSD禁用数据命令(例如,SATA数据命令)处理。进一步地,当在MST模式下时,SSD响应于识别查询来指示MST模式下的操作(例如,通过在识别字符串的第7个字中示出“T”来响应于SATA识别驱动器查询)。当执行测试的命令时,SSD提供和/或记录进程、状态和/或结果信息(指示进程(LED,事件日志,SMARTlog0xF9)924)。在各种实施方式和/或使用场景下,进程、状态和结果信息中的任意一个或多个包括累加统计。在各种情况下,包括错误数、错误位置和已经被处理的命令的数量。除非指出提早结束测试(例如,通过经由MST_ABORT命令指示SSD中止测试的主机),否则SSD继续取出并执行测试的命令直至满足例如,经由一个或多个输入参数在测试中指定的结束指示(完成?925)。在完成测试之后,SSD指示完成测试(例如,诸如通过停止闪烁而经由LED,经由事件、日志和/或经由SMARTLog0xF9)并且比如经由停止SSD的所有操作的固件进入空闲模式(备用SSD926)。
如果SSD在与主机耦接的同时正在运行测试,则在某些使用场景下,主机读取进程、状态和/或结果信息(诸如输出SMARTLog)以确定完成测试的时间。如果SSD在与主机或机架耦接的同时正在运行测试,则在某些使用场景下,测试人员观察LED以确定完成测试的时间。当测试完成时,如果将SSD从主机移至机架(移动SSD916),比如通过将SSD从机架重新定位到主机的测试人员,SSD被关闭,与机架分开,并耦接至主机(移动SSD927)。
在完成测试并任选重新定位与主机耦接的SSD之后,流程的运行部分(运行MST920)完成并且各种完成操作部分(结束MST930)开始。该流程继续进行比如经由主机向SSD施加电力(如果尚未施加)(打开SSD的电源931)。主机从SSD读取测试的进程、状态和/或结果信息的所有或任意部分(读取结果(事件日志,缺陷,SMARTLog0xF9)932)。在某些实施方式中,结果信息包括增长缺陷列表的最终状态。在主机完成读取进程、状态和/或结果信息之后,主机请求SSD退出MST模式(发送MST_COMPLETE命令933)。然后主机指示SSD在测试之后清除(安全擦除、清除SMART934),比如通过向SSD发送一个或多个擦除和/或SMARTLog命令。然后主机关闭SSD,让SSD保持在一个状态下使得下一次开机时,SSD能够接收并处理数据命令,比如SATA数据命令(SATA操作的SSD准备就绪935)。然后测试人员将SSD与主机分开(断开SSD936)。在分开之后,完成流程的各个完成操作部分(结束MST930),并且整个流程完成(结束999)。SSD现在准备出售给系统供应商和/或客户。
在某些实施方式和/或使用场景下(例如,当SSD在执行测试的同时保持与主机耦接时),通过向SSD发送ABORT命令(例如,经由特定SCT命令),主机指示SSD提早结束测试。作为响应,SSD停止执行测试的命令并进入空闲模式。
在主机指示进入MST模式之后,且在测试完成或中止之前,SSD在关闭和启动循环之后恢复测试。具体地,如果存在关闭,同时SSD处于923、924和925中的任意一个状态下,则下一次SSD通电恢复测试,其中由于断电而暂停执行测试。
在各种实施方式和/或使用场景下,主机将从SSD读取的进程、状态和/或结果信息中的所有或任意部分存档(比如事件日志和增长缺陷列表的最终状态)。在各种实施方式和/或使用场景下,主机将输入日志的所有或任意部分存档(诸如,测试命令的一个或多个)。在各种实施方式和/或使用场景下,主机解释从SSD读取的各种信息元件的所有或任意部分(诸如,经由执行一个或多个脚本,程序和/或分析工具)。
在某些实施方式和/或使用场景下(诸如在生产流程下),为一组SSD,比如形成生产运行的SSD实例集合或来自同一生产线的SSD实例集合,执行一次形成测试的命令的创建(生成MST命令912)。对SSD实例的每一个执行在该图中所示的流程的剩余部分。流程(或其变型)不限于用于生产(例如,制造)。在各种实施方式和/或使用场景下,流程(或其变型)被用作老化、质量保证服务/操作、故障分析和/或RMA/检修操作中的任意一个或多个的一部分。
在各种实施方式和/或使用场景下,特定SCT命令(例如,START、COMPLETE和ABORT)中的一个或多个是供应商特定的。
图9B示出了用于对一个或多个SSD进行一种或多种MST的系统的实施方式的所选细节,例如针对图9A所述。该系统包括与一个或多个SSD(示为SSD.1990.1...SSD.N990.N)耦接的主机/机架980。在某些实施方式和/或使用场景下,所示的主机/机架表示在SSD执行的测试的一段时间内使用的计算主机(例如,以准备、运行和结束MST)。在某些实施方式和/或使用场景下,所示主机/机架表示在SSD执行的MST的开始和结束部分期间使用的计算主机(例如,以准备并结束MST),且表示用于MST中间部分的供电测试机架(例如,以运行MST)。主机/机架能够向SSD提供命令和/或数据,并从SSD接收信息和/或数据。主机/机架能够向SSD提供电力,但不能向SSD提供命令和/或护具。
主机/机架与LAN/WAN984耦接以便支持例如经由互联网与别处的计算和存储资源的通信。主机/机架与存储器985耦接使得保留各种测试以便应用于SSD以及测试应用于SSD的结果。主机/机架从概念上讲包括被示为MST命令981的至少一个SSD测试。主机/机架从概念上讲包括执行至少一个MST的至少一个SSD的结果的至少一个集合,被示为结果982。尽管在主机/机架980中示出,但在各种实施方式和/或使用场景下,MST命令981和/或结果982保留在可经由LAN/WAN984访问的远程资源中,和/或保留在存储器985的所有或任意部分中。
SSD.1990.1包括实施大容量存储的一个或多个NVM,被示为闪存996。SSD.1990.1实施与MST相关的特定能力。在各种实施方式中,特定能力由硬件、软件和固件的任意一个或多个的各种组合实现。特定能力包括SMARTLog0xF8(MST命令)991、LED(进程指示符)992、事件日志(进程,结果)993、SMARTLog0xF9(进程,结果)994和缺陷列表995中的任意一个或多个。尽管被示为单独元件,但在各种实施方式中,一个或多个能力在同一元件中实现。例如,SMARTLog0xF8(MST命令)991和/或SMARTLog0xF9(进程,结果)994在闪存996的一部分中实现,这部分比如是与用于存储与特定LBA相关联的主机数据的闪存的部分分离的部分。再如,事件日志(进程,结果)993在闪存996的一部分中实现。
在各种实施方式中,SMARTLog0xF8(MST命令)991、事件日志(进程,结果)993、SMARTLog0xF9(进程、结果)994和缺陷列表995中的任意一个或多个经由SSD的设备存储器的所有或任意部分实现,SSD设备存储器的一个或多个地址可经由SSD设备存储器空间寻址,该SSD设备存储器空间与与主机LBA相关联的存储器空间分离。SSD设备存储器空间可经由主机经由SSD的主机接口提供的一个或多个命令由主机访问。例如,主机经由SSD的SATA接口向SSD的读/些设备存储器提供命令。
SMARTLog0xF8(MST命令)991为主机/机架980提供的测试的命令提供存储。当执行测试时,SSD.1990.1从SMARTLog0xF8(MST命令)991取出并执行命令。LED(进程指示符)992提供测试是否完成的指示。事件日志(进程,结果)993和SMARTLog0xF9(进程,结果)994为进程指示和测试结果提供存储。SSD.1990.1能够便为主机/机架980提供对事件日志(进程,结果)993和SMARTLog0xF9(进程,结果)994的访问。例如,当测试正在运行时,主机/机架访问事件日志以确定是否完成测试。再如,当完成测试时,主机/机架访问SMARTLog0xF9以获得由SSD.1990.1存储的测试结果,并同时执行测试。缺陷列表995为闪存996的不可操作的或执行情况较差的区块的列表提供存储。SSD.1990.1能够便为主机/机架980提供对缺陷列表995的访问。例如,在完成测试之后,主机/机架访问缺陷列表以将关于SSD的信息进行归档,便于以后进行潜在分析。
尽管未明确示出,但SSD.l990.N包括与SSD.l990.1类似或相同的元件。
在某些情况下,比如由于灾难性SSD故障或无法在MST测试中取得进展,因此MST测试失败。故障源包括固件“恐慌”、输入SMARTLog中的不正确数据以及超过超时值的循环时间。在某些使用场景下,MST测试包括指定指示故障的一个或多个条件的标准(例如,表示为参数)。标准包括多个可校正较低级和/或较高级ECC错误、多个不可校正较低级和/或较高级ECC错误、多个程序错误、多个擦除错误和位错误与无错读取之比。
在各种实施方式中,图9B的某些元件与通过图9A的某些元件描述的操作有关。例如,图9B的主机/机架980执行由主机和/或机架执行的图9A的任意一个或多个操作。图9B的SSD.1990.1...SSD.N990.N中的任意一个或多个表示由SSD执行或相对于SSD执行的图9A的操作对象。类似地,图9B的SSD.1990.1的特定元件与图9A的特定元件相关。例如,图9B的SMARTLog0xF8(MST命令)991是在图9A的将MST命令写入SMART Log0xF8914并执行SMART Log0xF8MST命令923中出现的SMART Log0xF8的实施方式。再如,图9B的LED(进程指示符)992是指示进程(LED,事件日志,SMART Log0xF9)924的LED的实施方式。再如,图9B的事件日志(进程,结果)993是图9A的指示进程(LED、事件日志、SMART日志0xF9)924和读取结果(事件日志,缺陷,SMARTLog0xF9)932的事件日志的实施方式。再如,图9B的SMART Log0xF9(进程,结果)是图9A的指示进程(LED,事件日志,SMART Log0xF9)924和读取结果(事件日志,缺陷,SMART Log0xF9)932的SMART Log0xF9的实施方式。再如,图9B的缺陷列表995是图9A的读取结果(事件日志,缺陷,SMART Log0xF9)932的缺陷的实施方式。
在各种实施方式中,图1A和/或图1B的元件的所有或任意部分是图9A和图9B的元件的所有或任意部分的示例性实施方式。例如,图1A和图1B的SSD101是相对于图9A的操作引用的SSD和图9B的SSD.1990.1...SSD.N990.N中的任意一个或多个的示例性实施方式。再如,图1B的主机102是相对于图9A的操作的主机和/或机架以及图9B的主机/机架980的示例性实施方式。再如,图1A的CPU171是能够执行相对于图9A引用的固件和图9B的元件的处理器的示例性实施方式。再如,图1B的FW106是相对于图9A的操作引用的固件和图9B的元件的示例性实施方式。
在各种实施方式中,通过图9A描述的流程的所有或任意部分是相对于图6和/或图7的上下文描述的SSD的测试(例如,工厂测试和/或MST)的所有或任意部分的示例性实施方式。在各种实施方式和/或使用场景下,通过图9A描述的流程的所有或任意部分(比如由主机进行的操作)经由图6的制造软件工具616来实现。在各种实施方式中,图9B的所有或任意部分是图7B的所有或任意部分的示例性实施方式(例如,主机/机架980是主机780P的示例性实施方式,并且SSD.1990.1...SSD.N990.N是SSD.1790P.1...SSD.N790P.N的示例性实施方式)。
图10示出了MST命令以及相关数量的参数对和参数标识符/值对的实施方式的所选细节。整个MST(例如,MST输入1000)是具有一个或多个命令和结束标记的一系列命令。在各种实施方式中,MST输入1000表示由主机存储在待测试的SSD的输入SMART日志中(例如,如与图9A的将MST命令写入SMART Log0xF8914和/或图9B的SMART Log0xF8(MST命令)991一样)以及由SSD取出并执行(例如,如与图9A的执行SMART Log0xF8MST命令923一样)的命令。
每条命令紧接着编号,指明多少参数对紧接着该编号,并且该编号紧接着零以上参数标识符和值对。最后命令紧接着结束标记。在某些使用场景下,MST包括任选具有一个或多个参数标识符和值对的单条命令。在某些使用场景下,MST包括任意数量的命令,每条命令具有各自的参数信息,并且命令的数量仅受待测试的SSD的输入SMART日志的大小的限制。
如图中具体所示,MST输入1000包括继结束标记(符号1090)之后的N条命令(命令1&参数11010、命令2&参数21020、…命令N&参数N1080)。SSD组织符号作为命令不在存在于MST中(例如,通过固件处理MST输入)的指示符,作为响应,SSD指示完成测试进入空闲模式(例如,如与图9A的备用SSD926一样)。
命令1&参数11010被详细示为具有继指示多少参数对紧随其后(参数对1012的数量)的部分的命令(命令11011),且以参数对结束作为参数标识符值对(参数ID&值对11013…参数ID&值对N1014)。在各种使用场景下,命令1&参数11010仅仅是MST中的命令或者可替代地是MST中的多个命令的第一个。在各种使用场景下,参数对1012的数量为0(省略参数ID&值对11013…参数ID&值对N1014),参数对1012的数量为1(对于命令1&参数11010来说只存在参数ID&值对11013),以此类推。尽管未明确示出,但命令2&参数21020…命令N&参数N1080各自具有指示多少参数对紧接着每条命令的各个部分,以及各个参数标识符/值对。
图11示出了MST中可用的各条命令(例如,经由固件可执行的支持MST命令)的实施方式的所选细节。MST命令1100示出了多条命令的命令码、命令名称和命令描述。MST命令可用作制定MST的命令,比如被示为图10的MST输入1000。由该图描述的命令包括写驱动1101、擦除驱动1102、SATA PHY老化1103、延时1104和应力模式1105。可考虑诸如在MST中执行流程控制的命令(例如,循环和/或分支命令)的其他命令。在图11的上下文中,SSD(如本文其他地方所述)是“drive”的示例。
图12示出了MST的示例的所选细节。示例性MST输入1200示出了集体形成示例性MST的多条命令以及结束标记的命令和相关描述。示例性MST适用于作为由主机存储在待测试的SSD的输入SMART日志中(例如,如与图9A的将MST命令写入SMART Log0xF8914和/或图9B的SMART Log0xF8(MST命令)991一样)以及由SSD取出并执行(例如,如与图9A的执行SMART Log0xF8MST命令923一样)的一系列MST命令。在图12的上下文中,SSD(如本文其他地方所述)是“DRIVE”和“drive”的示例。
图13A至图13D示出了特定使用场景下的写驱动命令(例如,图11的写驱动110)的实现的实施方式的所选细节。从概念上讲,执行写驱动命令的SSD(例如,在MST处理期间)在多个部分比如多个R-块中的SSD的闪存上操作。图13A至图13D示出了SSD的闪存作为多个R-块,并且其中每一个图对应于R-块的各自时间和对应状态。助记“Sys”对应于与系统数据相关联的R-块(例如,一部分或所有映射表)。助记“Usr”对应于与用户数据相关联的R-块(例如,作为主机读取/写入接收的或源自其的数据)。大大的虚线“X”对应于不良的R-块(例如,不可操作、有缺陷和/或特征在于相对较高的错误率)。助记“Pat”对应于经由执行具有特定模式、多个特定模式的所选特定模式和/或计算模式的写驱动命令(例如,通过SSD的固件)而写入的R-块。
从概念上讲,写驱动命令在每次迭代期间在一个或多个R-块上迭代执行步进写入。在图13A至图13D所示的实施方式中,只有与用户数据相关联的R-块才进行写入(例如,保留与系统数据相关联的R-块)。随着写驱动命令的执行,SSD(例如,经由固件)定期收集并记录统计数据,并检查/验证R-块尚未被无意擦除。在某些实施方式中,周期性测量写驱动命令的进度,每个周期对应于至少一次写入与用户数据相关联的所有R-块。当写驱动命令的迭代完成时,SSD(例如,经由固件)检查/验证R-块尚未被无意擦除和/或所有R-块都已正确编程。
图13A示出了SSD的闪存作为初始状态下的R-块1301-1310,由于执行了写驱动命令而对应于任何变化之前的时间。R-块1303、1304、1306-1308和1310分配给用户数据和/或包含用户数据(如Usr助记符所示)。由于写驱动命令尚未改变任何R-块,因此不存在经由执行写驱动命令而写入的R-块。R-区块1301和1302分配给系统数据和/或包含系统数据(如Sys助记符所示)。在所示的实施方式中,写驱动命令只修改与用户数据相关联的R-块,因此R-块1301和1302在执行写驱动命令的整个过程中保持与系统数据相关联且不再针对图13B至图13D做进一步讨论。R-块1305和1309是不良的(如大大的虚线X所示)。在所示的使用场景下,没有发现额外的不良R-块(并且没有以某种方式修复之前不良的R-块)。因此,R-块1305和1309在执行写驱动命令的整个过程中只保持不良R-块并且不再针对图13B至图13D做进一步讨论。
图13B示出了第一迭代状态下的R-块1301-1310,对应于写驱动命令的第一迭代之后的时间。R-块1303和1304现在包含通过写驱动命令的第一迭代写入的各个模式(如Pat助记符所示)。R-块1306-1308和1310尚未通过执行写驱动命令来修改并且保持与用户数据相关联(如Usr助记符所示)。
图13C示出了第二迭代状态下的R-块1301-1310,对应于写驱动命令的第二迭代之后的时间。R-块1306和1307现在包含通过写驱动命令的第二迭代写入的各个模式(如Pat助记符所示)。R-块1303和1304与用户数据相关联(如Usr助记符所示),但已经重写在执行写驱动命令之前存储在其中的任何用户数据(例如,通过写驱动命令的第一迭代)。R-块1308和1310尚未通过执行写驱动命令来修改并且保持与用户数据相关联(如Usr助记符所示)。
图13D示出了最终状态下的R-块1301-1310,对应于写驱动命令完成之后的时间。R-块1308和1310现在包含通过写驱动命令的最终迭代写入的各个模式(如Pat助记符所示)。R-块1303、1304、1306和1307与用户数据相关联(如Usr助记符所示),但已经重写在执行写驱动命令之前存储在其中的任何用户数据(例如,通过写驱动命令的第一或第二迭代)。
在各种实施方式和/或使用场景下,写驱动命令具有零以上参数,如下表所述。要注意的是,表中的所有参数是任选的。
在各种实施方式和/或使用场景下,SATA PHY老化命令具有零以上个参数,如下表所述。要注意的是,表中的所有参数是任选的。
在执行SATA PHY老化命令作为MST测试的一部分时,考虑经由SSD的SATA链路与主机耦接的SSD。由于在执行SATA PHY老化命令时SATA链路链路不可用,因此主机不能向SSD传递ABORT命令以提早结束测试。相反,关闭SSD以提早结束测试。在某些实施方式中,SATA PHY老化命令至少部分通过激活SATA链路的BIST能力,SATA链路的SATAPHY或这两者来实施。
在某些实施方式和/或使用场景下,应力模式命令(例如,应力模式1105)可以构建指定特定闪存访问的MST。在某些情况下,特定闪存访问是特定制造商或系统供应商(例如,图6的制造商620或系统供应商630)专有的访问序列。应力模式命令使制造商或系统供应商能够根据专有序列执行SSD,而不需要实施SSD的固件中的专有序列,由此不需要向设计供应商(例如,图6的设计供应商610)公开专有序列。在某些使用场景下,例如,通过改变一个或多个特定应力模式命令的一个或多个参数,制造商或系统供应商使用一个或多个特定应力模式来确定SSD的闪存的不可操作的块。在各种使用场景下,专有序列改变与闪存的任意一个或多个操作电压相关的一个或多个参数,从而执行闪存的特定单元,闪存的操作频率,闪存的错误检出率、闪存单元的拓扑缺陷以及闪存单元之间的耦合。在某些实施方式中,应力模式命令由SSD的固件实现以包括比如符合如图10所示的命令和参数规范的地址、序列和行为参数中的任意一个或多个。
图14示出了MST结果日志的实施方式的所选细节。MST结果日志1400示出了日志字段和多个日志字段的相关日志字段元素。在各种实施方式中,MST结果日志1400的所有或任意部分表示事件日志和SMART日志的任意一个或多个的所有或任意部分(例如,如图9A的指示进程(LED、事件日志、SMART Log0xF9)924和读取结果(事件日志,缺陷,SMARTLog0xF9)932所引用的,以及如图9B的事件日志(进程,结果)993和SMART日志0xF9(进程,结果)994所举例说明的)。由该图描述的日志字段包括日志报头1401、测试状态1402、进程指示符1403、统计1404和错误1405。
下表列出了MST结果日志的各种实施方式的所选元素。在各种实施方式中,元素中的任意一个或多个是任选的。
下表列出了MST事件日志的各种实施方式的所选元素。在各种实施方式中,元素中的任意一个或多个是任选的。
其他实施方式信息
在各种实施方式中,SSD(诸如,图9B的SSD.1990.1)至少部分经由固件实现对MST命令(诸如,图11的MST命令1100)进行处理。固件包括各种模块,比如用于在用户空间执行(例如,按照相对较低的特权级别)的模块以及用于在核心空间执行(例如,按照相对较高的特权级别)的模块。在某些实施方式中,用户空间模块包括解析和命令执行模块。在某些实施方式中,核心空间模块包括硬件协调模块,比如与回收站(例如,图1A的回收站151)相关。在某些实施方式中,特定于处理MST命令和/或MST模式下的操作的固件的多个部分包括延伸到错误处理和/或报告例程的“触手”,或不与MST模式具体相关的其他路线。
下表列出了实施MST模式的所有或任意部分的固件的所选示例性例程。
下表列出了用户空间和核心空间之间的所选示例性API进入点(进入点由实现MST模式的所有或任意部分的固件来实现)。
示例性实现技术
在某些实施方式中,由I/O设备或其部分,例如适用于与包括一个或多个SSD的I/O设备比如存储I/O设备的VDMM和/或SSD MST一起使用的SSD和/或SSD控制器,例如利用闪存、计算主机闪存控制器和/或SSD控制器(比如图1A的SSD控制器100)执行的操作的所有或任意部分的各种组合,和处理器、微处理器、片上系统、专用集成电路、硬件加速器或提供上述操作中的所有或部分的其他电路的部分由与计算机系统进行的处理兼容的规范来指定。该规范符合各种描述,例如,硬件描述语言、电路描述、网表描述、掩码描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE变体比如PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任何组合以生成、验证或指定适于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路可根据多种技术来设计和/或制造。该技术包括可编程技术(例如,场或掩码可编程门阵列集成电路)、半定制技术(比如整体或部分基于单元的集成电路)和全定制技术(比如基本上专用的集成电路)及其任意组合,或与集成电路的设计和/或制造兼容的其他任何技术。
在某些实施方式中,通过执行和/或解释一个或多个程序指令,通过解释和/或编译一个或多个源和/或脚本语言语句,或通过执行通过编译、转换和/或解释以编程和/或脚本语言语句表达的信息生成的二进制指令来进行所有或部分如计算机可读介质所述的操作的各种组合,该计算机可读介质存储有一组指令。语句与任何标准的编程或脚本语言(例如,C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一个或多个程序指令、语言语句或二进制指令任选存储在一个或多个计算机可读存储介质元件上。在各种实施方式中,一些、所有或各个部分的程序指令实现为一种或多种功能、例程、子例程、线内例程、过程、宏或其部分。
已经利用闪存设备描述了实施方式作为SSD的非易失性存储器的一个示例。许多其他类型的易失性或非易失性存储器设备可适用且可用于在多个这些实施方式中代替或补充闪存设备,并且具有使用多种不同类型的存储器设备的实施方式。进一步地,已经利用SSD描述了实施方式作为诸如一类I/O设备的电子组件。本文描述的技术同样适用于许多不同电子组件,比如其他类型的I/O设备、计算机、网络设备以及其他形式的电子设备。
结论
在该说明书中作出的某些选择仅仅是便于制备文本和附图,除非有相反的指示,否则这些选择本身不应解释为表达所述实施方式的结构或操作相关的额外信息。选择的示例包括:用于数字编号的设计的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如,插图编号或数字标志符)的特定组织或分配。
词语“包括(includes)”或“包括(including)”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不指传达物理包含物,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是示例性的,而不是限制性的。
应理解,构造、布置和使用的许多变化可能与说明书一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速率和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是示例性的,且不应被解释为限制所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变化。同样地,除非特别说明与此相反,否则指定的值范围、使用的最高值和最低值或其他特定的规范(比如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述那些实施方式,期望跟踪实现技术的改进和变化,且不应被解释为限制。
可采用本技术已知的功能等效的技术,而不是用于实现各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某些方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形状因数和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议或通信链路;以及当根据特定应用的独特工程和商业限制实现在本文中描述的概念时预期的其他变化。
已通过超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或特征,且无需改变剩余元件之间的基本合作。因此,应理解大部分公开的细节不需要实现所描述的实施方式的各个方面。在剩余元件可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计的所有这些变化是在由所描述的实施方式传达的教义上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的实用性,且并不仅限于所描述的实施方式的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (44)
1.一种方法,包括:
经由与主机耦接的存储设备的存储接口从所述主机接收一条或多条命令,所述命令由所述主机指示存储在所述存储设备的存储空间中,而所述存储空间另外专用于存储由所述存储设备产生的日志信息;
接收响应于事件开始执行所述命令的指示符;以及
响应于所述事件执行所述命令。
2.根据权利要求1所述的方法,进一步包括:
提供加密密钥以能够解密来自经加密的固件存储库的作为一个或多个图像的固件,所述图像可通过所述存储设备中包括的存储设备控制器的处理元件来执行,所述图像使能够执行所述命令,所述存储设备根据存储设备参考设计来构建;
提供对所述经加密的固件存储库的访问;
其中,所述命令包括所述存储设备的制造自测试;以及
其中,所述存储设备包括选自组件列表的组件,所述列表是与所述固件、所述存储设备控制器和所述存储设备参考设计兼容的组件。
3.根据权利要求1所述的方法,其中,
所述存储设备包括存储设备控制器和存储介质;
所述存储设备根据候选存储介质设备的列表和参考设计来构建;
所述存储介质由选自所述列表的元件组成;
所述存储设备控制器连同固件能够经由所述参考设计和所述列表的任何成员来实施所述存储设备;
所述存储设备控制器连同所述固件能够进行所述执行;以及
所述执行进行所述存储设备的制造自测试。
4.根据权利要求1所述的方法,进一步包括存储由所述执行产生的一个或多个结果。
5.根据权利要求1所述的方法,其中,所述指示符来自所述主机并且经由所述存储接口。
6.根据权利要求1所述的方法,其中,所述存储空间另外专用于自监测分析和报告技术(SMART)日志。
7.根据权利要求6所述的方法,其中,所述SMART日志是第一SMART日志,且进一步包括将所述执行的一个或多个结果存储在第二SMART日志中。
8.根据权利要求1所述的方法,其中,所述事件是包括下一开机事件和立即开始事件的多个事件中的一个。
9.根据权利要求1所述的方法,其中,所述存储设备包括存储介质,所述命令包括一系列一个或多个类型的操作,并且任何一个或多个操作包括指定写入、擦除以及验证所述存储介质中的任何一个或多个。
10.一种存储设备,包括:
具有第一部分和第二部分的日志存储空间;
固件;
能够执行所述固件的指令的处理元件;
存储接口,能够从与所述存储接口耦接的主机接收开始执行所述第一部分中存储的一条或多条命令的指示符;
其中,通过所述处理元件执行所述固件的一个或多个程序能够:
响应于接收所述指示符执行所述命令,以及
将由所有或任意部分的所述执行产生的一个或多个结果存储在所述第二部分中。
11.根据权利要求10所述的存储设备,其中:
所述存储设备包括存储设备控制器和存储介质;
所述存储设备根据候选存储介质设备的列表和参考设计来构建;
所述存储介质由选自所述列表的元件组成;
所述存储设备控制器连同所述固件能够经由所述参考设计和所述列表的任意成员来实施所述存储设备;
所述存储设备控制器连同所述固件能够进行所述执行;以及
所述执行进行所述存储设备的制造自测试。
12.根据权利要求10所述的存储设备,其中,所述固件、所述处理元件、所述存储接口和所述日志存储空间包括在固态磁盘(SSD)内,并且所述存储接口包括串行高级技术配置(SATA)接口。
13.根据权利要求10所述的存储设备,其中,所述日志存储空间包括第一和第二自监测分析和报告技术(SMART)日志,所述第一SMART日志包括所述第一部分,并且所述第二SMART日志包括所述第二部分。
14.根据权利要求10所述的存储设备,其中,所述命令包括写入存储命令、擦除存储命令、存储接口老化命令、延时命令、应力模式命令、循环命令和条件命令中的任意一个或多个。
15.根据权利要求10所述的存储设备,进一步包括存储介质;并且其中所述命令包括一系列一个或多个类型的操作,并且任意一个或多个操作包括指定写入、擦除以及验证所述存储介质中的任意一个或多个。
16.一种有形计算机可读介质,其中存储有当由存储设备的处理元件执行时使所述处理元件执行包括以下各项的操作的一组指令,
管理经由所述存储设备的存储接口从与所述存储设备耦接的主机接收一条或多条命令,所述命令由所述主机指示存储在所述存储设备的存储空间的部分中,而所述存储空间的所述部分另外专用于存储由所述存储设备产生的日志信息;
识别响应于事件开始执行所述命令的指示符;以及
响应于所述事件执行所述命令。
17.根据权利要求16所述的有形计算机可读介质,其中:
所述存储设备包括存储设备控制器和存储介质;
与所述存储设备控制器兼容的固件包括所述一组指令;
所述存储设备根据候选存储介质设备的列表和参考设计来构建;
所述存储介质由选自所述列表的元件组成;
所述存储设备控制器连同所述固件能够经由所述参考设计和所述列表的任意成员来实施所述存储设备;
所述存储设备控制器连同所述固件能够进行所述执行所述命令;以及
所述执行所述命令进行所述存储设备的制造自测试。
18.根据权利要求16所述的有形计算机可读介质,其中,所述存储空间包括第一自监测分析和报告技术(SMART)日志和第二SMART日志,所述第一SMART日志包括所述部分,并且所述执行所述命令产生一个或多个结果,所述一个或多个结果存储在所述第二SMART日志中。
19.根据权利要求16所述的有形计算机可读介质,其中,所述存储设备包括存储介质,所述命令包括一系列一个或多个类型的操作,并且任意一个或多个操作包括指定写入、擦除以及验证所述存储介质中的任意一个或多个。
20.一种系统,包括:
用于通过存储设备并经由所述存储设备的存储接口接收开始执行所述存储设备的日志存储空间的第一部分中存储的一条或多条命令的指示符的装置;
用于响应于所述用于接收的装置执行所述命令的装置;以及
用于将由所述用于执行的装置的所有或任意部分产生的一个或多个结果存储在所述日志存储空间的第二部分中的装置。
21.根据权利要求20所述的系统,进一步包括存储介质;并且其中所述命令包括一系列一个或多个类型的操作,并且任何一个或多个所述操作包括指定写入、擦除以及验证所述存储介质中的任意一个或多个。
22.一种方法,包括:
提供与I/O设备控制器兼容的固件;
提供I/O设备的参考设计;
提供非易失性存储器设备的列表,所述列表包括来自多个非易失性存储器设备制造商的非易失性存储器设备;
提供制造软件工具,所述制造软件工具能够将所述固件下载到所述I/O设备的制造实例中,还能够指示所述I/O设备的所述制造实例进行所述I/O设备的制造自测试和所述I/O设备的所述制造实例的闪存的测试中的一个或多个;以及
其中,所述I/O设备控制器连同所述固件能够经由所述I/O设备参考设计和所述列表的任意所述非易失性存储器设备来实施所述I/O设备。
23.根据权利要求22所述的方法,其中,所述I/O设备包括固态磁盘(SSD),所述I/O设备控制器包括SSD控制器,并且所述参考设计包括SSD参考设计。
24.根据权利要求23所述的方法,其中:
所述SSD是来自多个类别的SSD的第一特定类别的SSD;
所述SSD控制器连同所述固件还能够经由所述SSD参考设计和所述列表的任意所述非易失性存储器设备来实施至少第二特定类别的SSD;以及
所述类别的SSD包括企业类SSD、云类SSD、工业类SSD和客户端类SSD。
25.一种方法,包括:
使能够对多个固件图像进行访问;
传送制造软件工具,所述制造软件工具能够将所述固件图像中的一个或多个下载到I/O设备中,并进一步能够控制所述I/O设备的制造测试;
其中,所述I/O设备是提供存储能力的存储设备,执行下载的所述固件图像使所述I/O设备的I/O控制器能够至少部分经由对一个或多个所选类型的闪存设备的操作来提供所述存储能力;以及
其中,所述所选类型选自所述I/O控制器能够通过执行所述固件图像中的适当的一个或多个固件图像对其进行操作的多个闪存类型。
26.根据权利要求25所述的方法,其中,所述制造测试包括所述存储能力的一个或多个存储能力测试。
27.根据权利要求26所述的方法,其中,所述存储能力测试中的至少一个包括一个或多个所选类型的闪存设备的一个或多个闪存测试。
28.根据权利要求25所述的方法,其中,所述固件图像包括所保护的固件图像,使能够进行访问包括使能够进行经认证的访问。
29.根据权利要求28所述的方法,其中,对至少一些所述固件图像进行加密,并且使能够进行经认证的访问包括提供能够解密加密固件图像的一个或多个部分的一个或多个加密密钥。
30.根据权利要求25所述的方法,其中,所述闪存类型包括具有多个不同存储容量的闪存组件。
31.根据权利要求25所述的方法,其中,所述闪存类型包括通过多个制造工艺制造而成的闪存组件。
32.根据权利要求25所述的方法,其中,所述闪存类型包括具有多个操作参数的闪存组件。
33.一种方法,包括:
请求访问多个固件图像;
操作制造软件工具,所述制造软件工具能够将固件图像中的一个或多个下载到I/O设备中,还能够控制所述I/O设备的制造测试;
其中,所述I/O设备是提供存储能力的存储设备,执行下载的所述固件图像使所述I/O设备的I/O控制器能够至少部分经由对一个或多个所选类型的闪存设备的操作来提供所述存储能力;以及
其中,所述所选类型选自I/O控制器能够通过执行所述固件图像中的适当的一个或多个固件图像对其进行操作的多个闪存类型。
34.根据权利要求33所述的方法,其中,所述制造测试包括所述存储能力的一个或多个存储能力测试。
35.根据权利要求34所述的方法,其中,所述存储能力测试中的至少一个包括一个或多个所选类型的闪存设备的一个或多个闪存测试。
36.根据权利要求33所述的方法,其中,所述请求访问包括请求认证的访问,对所述固件图像中的至少一些进行加密,并且所述请求认证的访问包括提供能够解密加密固件图像的一个或多个部分的一个或多个加密密钥。
37.根据权利要求33所述的方法,其中,所述闪存类型包括具有多个不同存储容量的闪存组件。
38.根据权利要求33所述的方法,其中,所述闪存类型包括通过多个制造工艺制造而成的闪存组件。
39.根据权利要求33所述的方法,其中,所述闪存类型包括具有多个操作参数的闪存组件。
40.一种系统,包括:
经由请求访问可访问的多个固件图像;
制造软件工具,所述制造软件工具适用于被传送,能够将所述固件图像中的一个或多个下载到I/O设备中,还能够控制所述I/O设备的制造测试;
其中,所述I/O设备是提供存储能力的存储设备,执行下载固件图像使所述I/O设备的I/O控制器能够至少部分经由对一个或多个所选类型的闪存设备的操作来提供所述存储能力;以及
其中,所选类型选自所述I/O控制器能够通过执行所述固件图像中的适当的一个或多个固件图像来对其进行操作的多个闪存类型。
41.根据权利要求40所述的系统,其中,所述制造测试包括所述存储能力的一个或多个存储能力测试。
42.根据权利要求41所述的系统,其中,所述存储能力测试中的至少一个包括一个或多个所选类型的闪存设备的一个或多个闪存测试。
43.根据权利要求40所述的系统,其中,所述传送至少部分经由网络。
44.根据权利要求40所述的系统,其中,所述请求访问包括认证访问,所述固件图像中的至少一部分被加密,并且所述认证访问包括提供能够解密所述加密固件图像的一个或多个部分的一个或多个加密密钥。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161559201P | 2011-11-14 | 2011-11-14 | |
US61/559,201 | 2011-11-14 | ||
US13/436,639 US10803970B2 (en) | 2011-11-14 | 2012-03-30 | Solid-state disk manufacturing self test |
US13/436,639 | 2012-03-30 | ||
PCT/US2012/064682 WO2013074455A1 (en) | 2011-11-14 | 2012-11-12 | Storage device firmware and manufacturing software |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103597443A true CN103597443A (zh) | 2014-02-19 |
CN103597443B CN103597443B (zh) | 2018-02-02 |
Family
ID=48281836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280025876.0A Expired - Fee Related CN103597443B (zh) | 2011-11-14 | 2012-11-12 | 存储设备固件以及制造软件 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10803970B2 (zh) |
EP (1) | EP2780798A4 (zh) |
JP (2) | JP2014535120A (zh) |
KR (2) | KR101469596B1 (zh) |
CN (1) | CN103597443B (zh) |
TW (1) | TWI525631B (zh) |
WO (1) | WO2013074455A1 (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511819A (zh) * | 2015-11-27 | 2016-04-20 | 贵州航天风华精密设备有限公司 | 一种基于xml架构的材料定额管理系统 |
CN105843754A (zh) * | 2016-03-23 | 2016-08-10 | 山东超越数控电子有限公司 | 一种固态硬盘的日志信息存储方法 |
CN105975404A (zh) * | 2016-03-22 | 2016-09-28 | 威盛电子股份有限公司 | 非易失性存储器装置及其操作方法 |
CN107241220A (zh) * | 2017-05-26 | 2017-10-10 | 京信通信系统(中国)有限公司 | 产品老化监控自动分析方法和系统 |
CN107274933A (zh) * | 2017-06-14 | 2017-10-20 | 湖南国科微电子股份有限公司 | 一种测试固态硬盘的方法及装置 |
CN108153548A (zh) * | 2016-12-05 | 2018-06-12 | 北京京存技术有限公司 | 一种emmc固件升级方法和装置 |
CN110335635A (zh) * | 2015-09-02 | 2019-10-15 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN110413295A (zh) * | 2019-06-26 | 2019-11-05 | 上海电器科学研究所(集团)有限公司 | 一种嵌入式设备远程固件更新方法 |
CN110556155A (zh) * | 2018-06-04 | 2019-12-10 | 记忆科技(深圳)有限公司 | 无盘启动的ssd产品测试方法、装置及计算机设备 |
CN110610740A (zh) * | 2019-09-29 | 2019-12-24 | 深圳大普微电子科技有限公司 | 一种测试单元、方法、系统及控制器、存储设备 |
CN110931075A (zh) * | 2018-09-19 | 2020-03-27 | 爱思开海力士有限公司 | 可重新配置的模拟系统和测试存储装置的固件的方法 |
CN111044738A (zh) * | 2019-11-08 | 2020-04-21 | 太原理工大学 | 基于蓝光光驱的嵌入式定量检测装置及其检测方法 |
TWI695264B (zh) * | 2019-05-20 | 2020-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
CN111512280A (zh) * | 2018-09-20 | 2020-08-07 | 西部数据技术公司 | 针对操作环境定制一个或多个存储设备的配置 |
CN111819539A (zh) * | 2018-02-08 | 2020-10-23 | 美光科技公司 | 存储备份存储器封装中的固件更新 |
TWI709079B (zh) * | 2019-09-26 | 2020-11-01 | 奕智鏈結科技股份有限公司 | 文件碎形化出版與機密管制系統及其技術 |
CN113724772A (zh) * | 2021-07-12 | 2021-11-30 | 深圳市美信咨询有限公司 | 存储器失效位置查找方法、装置和计算机设备 |
CN113760185A (zh) * | 2017-11-07 | 2021-12-07 | 华为技术有限公司 | 内存块回收方法和装置 |
US11494112B2 (en) | 2020-09-28 | 2022-11-08 | Raymx Microelectronics Corp. | Storage device and accessing method for operation log thereof |
TWI811573B (zh) * | 2020-10-16 | 2023-08-11 | 大陸商合肥沛睿微電子股份有限公司 | 儲存裝置及其運行日誌的存取方法 |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8650471B2 (en) * | 2011-06-28 | 2014-02-11 | Dell Products L.P. | System and method for look-aside parity based raid |
TWI436211B (zh) * | 2011-11-02 | 2014-05-01 | Phison Electronics Corp | 區塊管理方法、記憶體控制器與記憶體儲存裝置 |
US10803970B2 (en) | 2011-11-14 | 2020-10-13 | Seagate Technology Llc | Solid-state disk manufacturing self test |
JP5112566B1 (ja) | 2011-12-16 | 2013-01-09 | 株式会社東芝 | 半導体記憶装置、不揮発性半導体メモリの検査方法、及びプログラム |
JP5740296B2 (ja) | 2011-12-16 | 2015-06-24 | 株式会社東芝 | 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム |
US8914706B2 (en) * | 2011-12-30 | 2014-12-16 | Streamscale, Inc. | Using parity data for concurrent data authentication, correction, compression, and encryption |
US8683296B2 (en) * | 2011-12-30 | 2014-03-25 | Streamscale, Inc. | Accelerated erasure coding system and method |
US10096350B2 (en) * | 2012-03-07 | 2018-10-09 | Medtronic, Inc. | Memory array with flash and random access memory and method therefor, reading data from the flash memory without storing the data in the random access memory |
US9217772B2 (en) * | 2012-07-31 | 2015-12-22 | Infineon Technologies Ag | Systems and methods for characterizing devices |
US20140136152A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Analyzing hardware designs based on component re-use |
US9348774B2 (en) | 2013-01-25 | 2016-05-24 | Seagate Technology Llc | Controller-opaque communication with non-volatile memory devices |
US20140258780A1 (en) * | 2013-03-05 | 2014-09-11 | Micron Technology, Inc. | Memory controllers including test mode engines and methods for repair of memory over busses used during normal operation of the memory |
US9417628B2 (en) * | 2013-03-13 | 2016-08-16 | Western Digital Technologies, Inc. | Production failure analysis system |
US9032264B2 (en) | 2013-03-21 | 2015-05-12 | Kabushiki Kaisha Toshiba | Test method for nonvolatile memory |
KR101547317B1 (ko) * | 2013-09-30 | 2015-08-26 | 주식회사 유니테스트 | 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템 |
US9824004B2 (en) | 2013-10-04 | 2017-11-21 | Micron Technology, Inc. | Methods and apparatuses for requesting ready status information from a memory |
US10275814B2 (en) | 2013-10-11 | 2019-04-30 | Skyworks Solutions, Inc. | Systems and methods for avoiding margin stacking |
CN104598386B (zh) | 2013-10-31 | 2018-03-27 | Lsi公司 | 通过追踪和利用二级映射索引重复利用固态驱动器块 |
US9274900B2 (en) * | 2013-12-03 | 2016-03-01 | Samsung Electronics Co., Ltd. | Method and apparatus for updating firmware |
US9798493B2 (en) | 2013-12-16 | 2017-10-24 | International Business Machines Corporation | Firmware bypass for medium-access commands |
US10108372B2 (en) | 2014-01-27 | 2018-10-23 | Micron Technology, Inc. | Methods and apparatuses for executing a plurality of queued tasks in a memory |
US9454310B2 (en) | 2014-02-14 | 2016-09-27 | Micron Technology, Inc. | Command queuing |
US9595352B2 (en) | 2014-03-17 | 2017-03-14 | Seagate Technology Llc | Manufacturer self-test for solid-state drives |
CN105981485A (zh) * | 2014-03-20 | 2016-09-28 | 英特尔公司 | 用于电子设备的存储卡连接器 |
WO2015147861A1 (en) | 2014-03-28 | 2015-10-01 | Hewlett-Packard Development Company, L.P. | Testing electronic devices |
US9619157B2 (en) * | 2014-04-03 | 2017-04-11 | Analysis Solution Llc | High-speed data storage |
TWI579762B (zh) * | 2014-05-06 | 2017-04-21 | 瑞昱半導體股份有限公司 | 固態硬碟控制電路及相關的固態硬碟裝置與固態硬碟存取系統 |
US9257186B2 (en) * | 2014-05-08 | 2016-02-09 | Sandisk Technologies Inc. | Memory access techniques for a memory having a three-dimensional memory configuration |
US9244764B2 (en) | 2014-05-08 | 2016-01-26 | Sandisk Technologies Inc. | Error correcting code techniques for a memory having a three-dimensional memory configuration |
US9779268B1 (en) * | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
KR102277666B1 (ko) * | 2014-06-30 | 2021-07-15 | 삼성전자 주식회사 | 영상처리장치 및 그 제어방법 |
TWI540861B (zh) * | 2014-08-01 | 2016-07-01 | 友勁科技股份有限公司 | 管理系統與管理方法 |
US9722632B2 (en) | 2014-09-22 | 2017-08-01 | Streamscale, Inc. | Sliding window list decoder for error correcting codes |
US9459857B2 (en) | 2015-01-21 | 2016-10-04 | HGST Netherlands B.V. | Managing wear of system areas of storage devices |
US9691505B2 (en) * | 2015-03-27 | 2017-06-27 | Intel Corporation | Dynamic application of error correction code (ECC) based on error type |
US10162006B2 (en) | 2015-04-16 | 2018-12-25 | Western Digital Technologies, Inc. | Boundary scan testing a storage device via system management bus interface |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
KR102384347B1 (ko) * | 2015-05-26 | 2022-04-07 | 삼성전자주식회사 | 클록 관리 유닛을 포함하는 시스템 온 칩 및 그 동작방법 |
DE102016109387A1 (de) | 2015-05-26 | 2016-12-01 | Samsung Electronics Co., Ltd. | Ein-Chip-System mit Taktverwaltungseinheit und Verfahren zum Betreiben des Ein-Chip-Systems |
US10216418B2 (en) | 2015-06-01 | 2019-02-26 | Samsung Electronics Co., Ltd. | Storage apparatus and method for autonomous space compaction |
US11042328B2 (en) | 2015-06-01 | 2021-06-22 | Samsung Electronics Co., Ltd. | Storage apparatus and method for autonomous space compaction |
KR102267041B1 (ko) | 2015-06-05 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
CN107925034B (zh) | 2015-08-27 | 2020-12-18 | 东丽株式会社 | 电池用隔膜及其制造方法 |
US10283209B2 (en) * | 2015-09-08 | 2019-05-07 | Storart Technology (Shenzhen) Co. Ltd | Method for detecting problem cells of SATA SSD and SATA SSD having self-detecting function looking for problem cells |
CN105607975A (zh) * | 2015-12-16 | 2016-05-25 | 深圳市迪菲特科技股份有限公司 | 一种测试磁盘阵列的方法、装置及系统 |
CN105607988A (zh) * | 2015-12-18 | 2016-05-25 | 浪潮电子信息产业股份有限公司 | 对服务器存储设备io性能进行自动化测试和分析方法 |
US10379747B2 (en) | 2015-12-21 | 2019-08-13 | Western Digital Technologies, Inc. | Automated latency monitoring |
US10545548B2 (en) | 2016-03-07 | 2020-01-28 | Toshiba Memory Corporation | Memory device and host device |
TWI599880B (zh) | 2016-03-22 | 2017-09-21 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
KR102494241B1 (ko) * | 2016-08-18 | 2023-02-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
US10275174B2 (en) * | 2016-08-23 | 2019-04-30 | Samsung Electronics Co., Ltd. | System and method for pre-conditioning a storage device |
CN107918571B (zh) | 2016-10-08 | 2021-04-30 | 上海宝存信息科技有限公司 | 测试储存单元的方法以及使用该方法的装置 |
CN108008914B (zh) * | 2016-10-27 | 2019-09-13 | 华为技术有限公司 | 一种arm设备中磁盘管理的方法、装置和arm设备 |
TWI634424B (zh) * | 2017-05-08 | 2018-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
US10310745B2 (en) | 2017-05-19 | 2019-06-04 | Samsung Electronics Co., Ltd. | Method and apparatus for fine tuning and optimizing NVMe-oF SSDs |
CN108932106B (zh) * | 2017-05-26 | 2021-07-02 | 上海宝存信息科技有限公司 | 固态硬盘访问方法以及使用该方法的装置 |
US10387347B2 (en) * | 2017-08-18 | 2019-08-20 | Quanta Computer Inc. | Method to locate SAS JBOD cable routing |
TWI658363B (zh) * | 2017-10-20 | 2019-05-01 | 慧榮科技股份有限公司 | 儲存裝置以及其介面晶片 |
WO2019094986A1 (en) * | 2017-11-13 | 2019-05-16 | Data I/O Corporation | Device programming system with protocol emulation |
US20190036704A1 (en) * | 2017-12-27 | 2019-01-31 | Intel Corporation | System and method for verification of a secure erase operation on a storage device |
CN110223728A (zh) * | 2018-03-02 | 2019-09-10 | 深圳市时创意电子有限公司 | 固态硬盘的批量自动测试方法与批量自动测试装置 |
US10761773B2 (en) | 2018-04-02 | 2020-09-01 | Micron Technology, Inc. | Resource allocation in memory systems based on operation modes |
US10642519B2 (en) | 2018-04-06 | 2020-05-05 | Western Digital Technologies, Inc. | Intelligent SAS phy connection management |
CN108536450B (zh) * | 2018-06-19 | 2023-04-04 | 北京航星中云科技有限公司 | 一种板载固态盘开卡量产方法和装置 |
CN109240603A (zh) * | 2018-08-10 | 2019-01-18 | 微网云(深圳)技术有限公司 | 全闪存服务器 |
US10991445B2 (en) * | 2018-09-06 | 2021-04-27 | Micron Technology, Inc. | Memory sub-system including an in-package sequencer to perform error correction and memory testing operations |
CN109062808A (zh) * | 2018-09-17 | 2018-12-21 | 浪潮电子信息产业股份有限公司 | 一种ssd开发性能的测试方法、装置及相关设备 |
CN109448779B (zh) * | 2018-11-14 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种Dual Port SSD的SI测试方法、装置 |
US11430536B2 (en) | 2018-12-20 | 2022-08-30 | Advantest Corporation | Software-focused solution for arbitrary all-data odd sector size support |
US10976361B2 (en) | 2018-12-20 | 2021-04-13 | Advantest Corporation | Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes |
WO2020132821A1 (en) * | 2018-12-24 | 2020-07-02 | Intel Corporation | Post code reporting via secure digital memory interface |
US11106519B2 (en) * | 2019-04-03 | 2021-08-31 | Micron Technology, Inc. | Automotive electronic control unit reliability and safety during power standby mode |
CN112289353B (zh) * | 2019-07-25 | 2024-03-12 | 上海磁宇信息科技有限公司 | 一种优化的具有ecc功能的mram系统及其操作方法 |
TWI808229B (zh) * | 2019-07-29 | 2023-07-11 | 宜鼎國際股份有限公司 | 可遠端控制電子設備執行程序的系統及方法 |
US11016755B2 (en) * | 2019-07-31 | 2021-05-25 | Dell Products L.P. | System and method to secure embedded controller flashing process |
JP7341784B2 (ja) | 2019-08-09 | 2023-09-11 | キオクシア株式会社 | ストレージ装置 |
JP7277324B2 (ja) * | 2019-09-18 | 2023-05-18 | 日立Astemo株式会社 | 自動車用電子制御装置 |
CN110968510A (zh) * | 2019-11-28 | 2020-04-07 | 深圳忆联信息系统有限公司 | Ssd自动化在线升级固件测试方法、装置及计算机设备 |
US11210183B2 (en) | 2020-01-14 | 2021-12-28 | Western Digital Technologies, Inc. | Memory health tracking for differentiated data recovery configurations |
CN111639008B (zh) * | 2020-05-29 | 2023-08-25 | 杭州海康威视系统技术有限公司 | 基于双端口ssd的文件系统状态监测方法、装置及电子设备 |
US11502832B2 (en) * | 2020-06-04 | 2022-11-15 | PUFsecurity Corporation | Electronic device capable of protecting confidential data |
US11417410B2 (en) * | 2020-09-16 | 2022-08-16 | Kioxia Corporation | Die-based high and low priority error queues |
TWI773395B (zh) | 2021-06-22 | 2022-08-01 | 慧榮科技股份有限公司 | 記憶體控制器與連結識別方法 |
WO2023277883A1 (en) * | 2021-06-29 | 2023-01-05 | Hewlett-Packard Development Company, L.P. | Production procedure device modifications |
CN113360957B (zh) * | 2021-06-30 | 2022-08-02 | 四川效率源信息安全技术股份有限公司 | 一种主控为sm2246en的固态硬盘的密码提取方法 |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
CN115809071A (zh) * | 2021-09-15 | 2023-03-17 | 北京车和家信息技术有限公司 | 软件升级方法、装置、系统、设备及存储介质 |
JP2023060606A (ja) | 2021-10-18 | 2023-04-28 | キオクシア株式会社 | 半導体集積回路及びメモリシステム |
CN114265549B (zh) * | 2021-11-21 | 2024-06-21 | 山东云海国创云计算装备产业创新中心有限公司 | 一种NVMe命令的处理方法、装置及可读存储介质 |
JP2023136000A (ja) * | 2022-03-16 | 2023-09-29 | キオクシア株式会社 | メモリシステム |
US11953992B2 (en) * | 2022-06-23 | 2024-04-09 | Dell Products L.P. | Device modification analysis framework |
US20240070329A1 (en) * | 2022-08-26 | 2024-02-29 | Hewlett Packard Enterprise Development Lp | Applying trusted backup configuration to a node |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133790A1 (en) * | 2003-01-06 | 2004-07-08 | Hensley John Alan | Protected, hidden emergency boot directory |
US20050149713A1 (en) * | 2003-12-29 | 2005-07-07 | Rothman Michael A. | Pushing capabilities into firmware by an operating system |
US20060182282A1 (en) * | 2005-02-07 | 2006-08-17 | Ali Negahdar | Method for securely distributing configuration information to a device |
US7330967B1 (en) * | 2004-12-03 | 2008-02-12 | Symantec Operating Corporation | System and method for injecting drivers and setup information into pre-created images for image-based provisioning |
US20100058141A1 (en) * | 2008-09-01 | 2010-03-04 | Fujitsu Limited | Storage device and control device |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4319323A (en) * | 1980-04-04 | 1982-03-09 | Digital Equipment Corporation | Communications device for data processing system |
US5150465A (en) * | 1988-11-30 | 1992-09-22 | Compaq Computer Corporation | Mode-selectable integrated disk drive for computer |
US5615335A (en) * | 1994-11-10 | 1997-03-25 | Emc Corporation | Storage system self-test apparatus and method |
US5675800A (en) * | 1994-11-30 | 1997-10-07 | Digital Equipment Corporation | Method and apparatus for remotely booting a computer system |
US5712978A (en) * | 1994-12-30 | 1998-01-27 | Lucent Technologies Inc. | System for control of remote processors |
US6467054B1 (en) * | 1995-03-13 | 2002-10-15 | Compaq Computer Corporation | Self test for storage device |
JP2000090014A (ja) | 1998-09-11 | 2000-03-31 | Nec Corp | 制御ファームウェアによるシステム立ち上げ時のメモリ試験システム及び方法 |
US6591389B1 (en) * | 1999-01-29 | 2003-07-08 | Lucent Technologies Inc. | Testing system for circuit board self-test |
JP2001236797A (ja) | 1999-12-17 | 2001-08-31 | Fujitsu Ltd | 自己試験回路及びそれを内蔵するメモリデバイス |
JP2002109899A (ja) | 2000-07-26 | 2002-04-12 | Mitsubishi Electric Corp | 半導体記憶装置およびそれを備える半導体集積回路装置 |
US6950967B1 (en) * | 2001-09-26 | 2005-09-27 | Maxtor Corporation | Method and apparatus for manufacture test processing a disk drive installed in a computer system |
GB0123422D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved memory controller |
US20030212735A1 (en) * | 2002-05-13 | 2003-11-13 | Nvidia Corporation | Method and apparatus for providing an integrated network of processors |
KR20040023843A (ko) | 2002-09-12 | 2004-03-20 | 삼성전기주식회사 | 메모리의 결함 처리 장치 및 그 방법 |
KR100498498B1 (ko) * | 2003-05-15 | 2005-07-01 | 삼성전자주식회사 | 하드디스크 드라이브의 테스트 방법 및 이에 적합한 기록매체 |
US7493534B2 (en) * | 2003-08-29 | 2009-02-17 | Hewlett-Packard Development Company, L.P. | Memory error ranking |
US7146529B2 (en) * | 2003-09-25 | 2006-12-05 | International Business Machines Corporation | System and method for processor thread acting as a system service processor |
US7730368B2 (en) | 2003-10-31 | 2010-06-01 | Sandisk Il Ltd. | Method, system and computer-readable code for testing of flash memory |
US7376756B2 (en) * | 2003-11-03 | 2008-05-20 | Lsi Corporation | HDD firmware download |
US20060143600A1 (en) | 2004-12-29 | 2006-06-29 | Andrew Cottrell | Secure firmware update |
US20080072068A1 (en) * | 2006-09-19 | 2008-03-20 | Wang Liang-Yun | Methods and apparatuses for securing firmware image download and storage by distribution protection |
JP2008108326A (ja) | 2006-10-24 | 2008-05-08 | Toshiba Corp | 記憶装置およびその自己テスト方法 |
US7730293B2 (en) * | 2006-10-26 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Hard disk drive self-test system and method |
US7840846B2 (en) * | 2006-10-30 | 2010-11-23 | International Business Machines Corporation | Point of sale system boot failure detection |
US9183133B2 (en) | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
JP2010192060A (ja) | 2009-02-20 | 2010-09-02 | Cis Electronica Industria & Comercio Ltda | センサモジュールおよびセンサモジュールの製造方法 |
US8230208B2 (en) | 2009-04-20 | 2012-07-24 | Intel Corporation | Booting an operating system of a system using a read ahead technique |
WO2010128963A1 (en) * | 2009-05-04 | 2010-11-11 | Hewlett-Packard Development Company, L.P. | Storage device erase command having a control field controllable by a requestor device |
US8510569B2 (en) | 2009-12-16 | 2013-08-13 | Intel Corporation | Providing integrity verification and attestation in a hidden execution environment |
US9063816B2 (en) | 2010-02-05 | 2015-06-23 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for updating firmware on a storage device |
US8943329B2 (en) | 2010-03-29 | 2015-01-27 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for sharing an integrity security module in a dual-environment computing device |
US20120036373A1 (en) * | 2010-08-05 | 2012-02-09 | Softlog Systems (2006) Ltd. | Method system and device for secure firmware programming |
KR101982251B1 (ko) | 2011-05-24 | 2019-05-24 | 마벨 월드 트레이드 리미티드 | 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법 |
TWI443513B (zh) * | 2011-08-05 | 2014-07-01 | Phison Electronics Corp | 記憶體儲存裝置、記憶體控制器與資料寫入方法 |
US10803970B2 (en) | 2011-11-14 | 2020-10-13 | Seagate Technology Llc | Solid-state disk manufacturing self test |
-
2012
- 2012-03-30 US US13/436,639 patent/US10803970B2/en active Active
- 2012-11-12 CN CN201280025876.0A patent/CN103597443B/zh not_active Expired - Fee Related
- 2012-11-12 KR KR1020137029152A patent/KR101469596B1/ko not_active IP Right Cessation
- 2012-11-12 KR KR1020147020434A patent/KR101495519B1/ko active IP Right Grant
- 2012-11-12 EP EP12849905.0A patent/EP2780798A4/en not_active Withdrawn
- 2012-11-12 WO PCT/US2012/064682 patent/WO2013074455A1/en active Application Filing
- 2012-11-12 JP JP2014541373A patent/JP2014535120A/ja active Pending
- 2012-11-14 TW TW101142519A patent/TWI525631B/zh not_active IP Right Cessation
-
2017
- 2017-12-08 JP JP2017235859A patent/JP6377237B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133790A1 (en) * | 2003-01-06 | 2004-07-08 | Hensley John Alan | Protected, hidden emergency boot directory |
US20050149713A1 (en) * | 2003-12-29 | 2005-07-07 | Rothman Michael A. | Pushing capabilities into firmware by an operating system |
US7330967B1 (en) * | 2004-12-03 | 2008-02-12 | Symantec Operating Corporation | System and method for injecting drivers and setup information into pre-created images for image-based provisioning |
US20060182282A1 (en) * | 2005-02-07 | 2006-08-17 | Ali Negahdar | Method for securely distributing configuration information to a device |
US20100058141A1 (en) * | 2008-09-01 | 2010-03-04 | Fujitsu Limited | Storage device and control device |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110335635A (zh) * | 2015-09-02 | 2019-10-15 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN110335635B (zh) * | 2015-09-02 | 2021-03-02 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN105511819B (zh) * | 2015-11-27 | 2018-11-02 | 贵州航天风华精密设备有限公司 | 一种基于xml架构的材料定额管理系统 |
CN105511819A (zh) * | 2015-11-27 | 2016-04-20 | 贵州航天风华精密设备有限公司 | 一种基于xml架构的材料定额管理系统 |
CN105975404A (zh) * | 2016-03-22 | 2016-09-28 | 威盛电子股份有限公司 | 非易失性存储器装置及其操作方法 |
CN105975404B (zh) * | 2016-03-22 | 2019-02-01 | 威盛电子股份有限公司 | 非易失性存储器装置及其操作方法 |
CN105843754A (zh) * | 2016-03-23 | 2016-08-10 | 山东超越数控电子有限公司 | 一种固态硬盘的日志信息存储方法 |
CN108153548A (zh) * | 2016-12-05 | 2018-06-12 | 北京京存技术有限公司 | 一种emmc固件升级方法和装置 |
CN107241220A (zh) * | 2017-05-26 | 2017-10-10 | 京信通信系统(中国)有限公司 | 产品老化监控自动分析方法和系统 |
CN107274933A (zh) * | 2017-06-14 | 2017-10-20 | 湖南国科微电子股份有限公司 | 一种测试固态硬盘的方法及装置 |
CN113760185A (zh) * | 2017-11-07 | 2021-12-07 | 华为技术有限公司 | 内存块回收方法和装置 |
CN111819539A (zh) * | 2018-02-08 | 2020-10-23 | 美光科技公司 | 存储备份存储器封装中的固件更新 |
CN110556155A (zh) * | 2018-06-04 | 2019-12-10 | 记忆科技(深圳)有限公司 | 无盘启动的ssd产品测试方法、装置及计算机设备 |
CN110931075A (zh) * | 2018-09-19 | 2020-03-27 | 爱思开海力士有限公司 | 可重新配置的模拟系统和测试存储装置的固件的方法 |
CN110931075B (zh) * | 2018-09-19 | 2023-10-10 | 爱思开海力士有限公司 | 可重新配置的模拟系统和测试存储装置的固件的方法 |
CN111512280B (zh) * | 2018-09-20 | 2023-10-24 | 西部数据技术公司 | 具有针对操作环境定制的配置的存储设备及其系统和方法 |
CN111512280A (zh) * | 2018-09-20 | 2020-08-07 | 西部数据技术公司 | 针对操作环境定制一个或多个存储设备的配置 |
TWI695264B (zh) * | 2019-05-20 | 2020-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
CN110413295A (zh) * | 2019-06-26 | 2019-11-05 | 上海电器科学研究所(集团)有限公司 | 一种嵌入式设备远程固件更新方法 |
TWI709079B (zh) * | 2019-09-26 | 2020-11-01 | 奕智鏈結科技股份有限公司 | 文件碎形化出版與機密管制系統及其技術 |
CN110610740A (zh) * | 2019-09-29 | 2019-12-24 | 深圳大普微电子科技有限公司 | 一种测试单元、方法、系统及控制器、存储设备 |
CN111044738B (zh) * | 2019-11-08 | 2023-06-09 | 太原理工大学 | 基于蓝光光驱的嵌入式定量检测装置及其检测方法 |
CN111044738A (zh) * | 2019-11-08 | 2020-04-21 | 太原理工大学 | 基于蓝光光驱的嵌入式定量检测装置及其检测方法 |
US11494112B2 (en) | 2020-09-28 | 2022-11-08 | Raymx Microelectronics Corp. | Storage device and accessing method for operation log thereof |
TWI811573B (zh) * | 2020-10-16 | 2023-08-11 | 大陸商合肥沛睿微電子股份有限公司 | 儲存裝置及其運行日誌的存取方法 |
CN113724772A (zh) * | 2021-07-12 | 2021-11-30 | 深圳市美信咨询有限公司 | 存储器失效位置查找方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
KR101469596B1 (ko) | 2014-12-08 |
EP2780798A1 (en) | 2014-09-24 |
US20130124932A1 (en) | 2013-05-16 |
EP2780798A4 (en) | 2015-12-09 |
WO2013074455A1 (en) | 2013-05-23 |
US10803970B2 (en) | 2020-10-13 |
KR101495519B1 (ko) | 2015-03-05 |
TWI525631B (zh) | 2016-03-11 |
TW201333964A (zh) | 2013-08-16 |
KR20140097613A (ko) | 2014-08-06 |
JP2014535120A (ja) | 2014-12-25 |
CN103597443B (zh) | 2018-02-02 |
JP6377237B2 (ja) | 2018-08-22 |
KR20130133074A (ko) | 2013-12-05 |
JP2018060575A (ja) | 2018-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103597443B (zh) | 存储设备固件以及制造软件 | |
US20160293274A1 (en) | Storage Device Firmware and Manufacturing Software | |
CN103942010B (zh) | 用于写入非易失性存储器的方法和系统及有形非临时性计算机可读介质 | |
US9760502B2 (en) | Encrypted transport solid-state disk controller | |
CN103858116B (zh) | I/o设备及计算主机互操作 | |
CN103942114B (zh) | Nvm地址、跨度及长度映射/转换的存储地址空间 | |
CN103620563B (zh) | 用于非易失性存储器的可变超量配置 | |
CN103902403B (zh) | 经由冗余阵列的非易失性存储器编程故障恢复 | |
US9467288B2 (en) | Encryption key destruction for secure data erasure | |
JP6336767B2 (ja) | リテンションドリフト履歴ベースの不揮発性メモリ読出し閾値最適化 | |
CN107094370A (zh) | 固态硬盘控制器的0‑1平衡管理 | |
CN103678146A (zh) | 为了非易失性存储器中的耗损均衡测量单元损伤 | |
CN106990977A (zh) | 主机看到的设备固件更新效果的管理 | |
CN103392207A (zh) | 非易失性存储的自身日志记录和层级一致性 | |
CN103348330A (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
CN103415844A (zh) | 高级冗余信息计算 | |
Liu et al. | Research and Implementation of SSD Lifespan Protection Mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160217 Address after: California, USA Applicant after: Seagate Technology LLC Address before: California, USA Applicant before: LSI Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180202 Termination date: 20181112 |