CN105159699B - 主机看到的设备固件更新效果的管理 - Google Patents
主机看到的设备固件更新效果的管理 Download PDFInfo
- Publication number
- CN105159699B CN105159699B CN201510419234.4A CN201510419234A CN105159699B CN 105159699 B CN105159699 B CN 105159699B CN 201510419234 A CN201510419234 A CN 201510419234A CN 105159699 B CN105159699 B CN 105159699B
- Authority
- CN
- China
- Prior art keywords
- firmware
- revision identifier
- command type
- computing host
- host
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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/22—Microcontrol or microprogram arrangements
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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
- G06F9/445—Program loading or initiating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及主机看到的设备固件更新效果的管理。比如在OS会遇到不可恢复的错误和崩溃而没有可见性延迟的背景下,例如经由显示固件更新的效果的至少一部分的可见性,计算主机看到的设备固件更新效果的管理使得能够在设备固件更新过程中在主机上继续运行OS。例如,设备(例如,SSD)与运行未修改版Windows的计算主机耦接。设备上的固件比如通过被启动来更新/激活。信息的否则会变得对OS来说立即可见的一部分的可见性(在激活更新固件时)被延迟直至设备电力循环为止。如果该部分包括例如固件修订标识符,则延迟的可见性能够在固件更新/激活过程中继续运行OS而不重新启动OS。
Description
分案申请的相关信息
本申请是国际申请日为2012年6月6日、国际申请号为PCT/US2012/041088、发明名称为“主机看到的设备固件更新效果的管理”的PCT申请进入中国国家阶段申请号为201280031049.2的发明专利申请的分案申请。
相关申请的交叉引用
在所附的申请书数据页、请求书和传送信(视情况,如果有的话)中列出了对该申请的优先权权益要求。在即时申请的类型所允许的范围内,在提出本发明时,为了所有目的,本申请通过引用并入在做出本发明时与本即时申请的共同拥有的下列申请:
于2011年6月7日提交的美国临时申请(案号为SF至11至12,序列号为61/494,262),第一署名发明人为Ross John STENFORT,且题为“MANAGEMENT OF DEVICE FIRMWAREUPDATE EFFECTS AS SEEN BY A HOST”。
技术领域
存储技术的进步对于提供性能、效率和使用实用性的提高是必要的。
背景技术
除非被明确认定为被公开或众所周知,否则为了上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公开为已知的或者是现有技术的一部分。为了所有目的,包括专利、专利申请和出版物的本文中所引用的所有参考文献(如有的话)通过引用被整体并入,而无论是否指定并入。
发明内容
本发明可以以多种方式实现为例如过程、制品、装置、系统、物质组分和计算机可读介质(比如计算机可读存储介质(例如,光学和/或磁性大容量存储设备中的介质(比如磁盘),或具有比如闪存存储器的非易失性存储器的集成电路)或通过光学或电子通信链路发送程序指令的计算机网络。具体实施方式提供了能实现在上文认定的领域中的成本的改善、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分的理解的绪论。该绪论包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施方式。如在结论中更详细讨论,本发明涵盖所公布的权利要求的范围内的所有可能修改和变更。
附图说明
图1A示出了包括提供主机看到的设备固件更新效果的管理的固态磁盘(SSD)控制器的SSD的实施方式的所选细节。
图1B示出了包括图1A的SSD的系统的一个实施方式的所选细节。
图1C示出了包括图1A的SSD的系统的另一个实施方式的所选细节。
图2示出了主机看到的设备固件更新效果的管理的一个实施方式的所选细节的流程图。
图3示出了主机看到的设备固件更新效果的管理的另一个实施方式的所选细节的流程图。
附图中的附图标记列表
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是示例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可应用于独立的实施方式组;如本文所使用的,这些标签并不明确地意指传送质量或任何形式的偏爱或偏见,而只是为了方便在独立组之间区分。所公开的过程的一些操作顺序在本发明的范围内是可变的。无论在什么位置多个实施方式用于描述过程、方法和/或程序指令特征的变化,其他实施方式均被设想为根据预定的或动态确定的标准执行分别对应于多个实施方式的多个操作模式中的一个的静态和/或动态选择。许多具体细节列于以下描述中,以提供对本发明的透彻理解。为示例的目的而提供细节,且本发明可根据未列出一些或所有细节的权利要求来实践。为了清晰起见,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要模糊。
绪论
该绪论仅包括以便于更迅速理解具体实施方式;本发明不限于在绪论中提出的概念(包括明确的示例,如有的话),因为任何绪论的段落均是整个主题的缩略,且不意味着是详尽或限制的描述。例如,以下绪论仅对某些实施方式提供由空间和组织限定的概述信息。有许多其他实施方式,包括最终将针对其描绘权利要求的那些实施方式,在整个说明书的其余部分中讨论。
缩略语
本文中定义的各种速记缩写(例如,首字母缩写词)中的至少一些是指本文所使用的某些元件。
比如在OS会遇到不可恢复的错误和崩溃而没有可见性延迟的背景下,例如经由显示固件更新的效果的至少一部分的可见性,计算主机看到的设备固件更新效果的管理使得能够在设备固件更新过程中在主机上继续运行OS。例如,设备(例如,SATA兼容SSD)与运行未修改版Windows的计算主机耦接。设备上的固件比如通过被启动和/或通过使得可访问以执行固件的一个或多个库和或/表来更新/激活。信息的否则会变得对OS来说立即可见的一部分的可见性(在激活更新固件时)被延迟直至设备电力循环为止。如果该部分包括例如固件修订标识符,则延迟的可见性能够在固件更新/激活过程中继续运行OS而不重新启动OS。
设备的固件被更新,并且固件更新的一个或多个效果被如计算主机所看到的任选进行管理,比如经由延迟对在主机上运行且访问该设备的OS的更新的效果的至少一部分的可见性。继续延迟直至发生结束可见性延迟的特定事件。特定事件的示例为:设备被电力循环(例如,移除电力,然后再施加电力),设备的所有或任意部分从一种电力模式转换至另一种电力模式(例如,退出休眠模式或PHY电力管理模式),设备接收供应商特定命令,设备接收特定参数和/或代码作为固件更新的一部分,并且重置使设备与主机耦接的链路。(例如,经由对设备的命令可通过主机访问的)设备的模式信息任选可选择地确定前述哪些示例事件对应于结束可见性延迟的事件。
例如,设备是具有控制器的SATA兼容SSD,该控制器具有更新的固件。更新的提供固件修订标识符的这部分的可见性被延迟直至SSD电力循环。因此,在设备电力循环之前,对于OS来说,在更新(至少相对于固件修订标识符)之前SSD似乎利用固件进行操作。如果OS是某些版本的Windows(例如,95、98、ME、NT、XP、2000、Server、Vista和7)中的一个,则在某些实施方式和/或使用场景下,延迟更新固件修订标识符的可见性可防止OS遇到让OS在不进行重新启动和/或电力循环的情况下不能继续运行(例如,用户应用程序)的不可恢复的错误。固件修订标识符对OS来说是可见的,例如响应于返回设备的VPD数据的SATA‘(识别(IDENTIFY))’命令,或可替代地响应于SCSI/SAS读取VPD命令。例如,在SATA的背景下,固件修订标识符包括在识别设备数据字中。再如,在SCSI的背景下,固件修订标识符包括在设备组成VPD页面中,比如包括在产品修订级别条目中。
延迟固件更新的至少一部分的可见性例如对应于延迟身份和/或识别信息的一个或多个变化的可见性。设备(例如,存储设备)的固件被更新且被激活(例如,经由启动更新固件的存储设备的控制器),并在固件更新之前将经引用以将身份和/或识别信息返回计算主机(例如,运行OS比如Windows的计算机)的身份/识别数据结构的所有或任意部分保存在与固件对应的状态下。控制器将值保留在保存状态下的所保存的身份/识别数据结构中直至结束延迟可见性的事件由控制器检测(或者其通知提供给控制器)。在此事件之后,控制器启动更新固件但不再保存身份/识别数据结构,而是根据更新固件重新构建身份/识别数据结构。
身份和/或识别信息包括识别在固件、产品、产品线和其特定实例的版本之间改变的信息、操作参数和其他信息的所有或任意部分的任意组合。识别信息的示例是固件修订标识符、固件修订号、以及特定SSD或采用该SSD的产品的识别。识别信息的额外示例是特定实例特有的参考(例如,序列号)、特定类型的实例特有的参考(例如,修订标识符/级别或产品ID)、以及特定制造商/公司特有的参考(例如,供应商ID)。操作参数的示例包括进行SSP的一个或多个参数,比如在COMINIT/COMRESET命令、固件更新、链路重置、PHY电力管理模式转换和/或电力循环过程中未另外保存的SSP参数。
身份/识别数据结构经由几项技术的一个或任意组合进行保存。对于第一示例性技术,控制器例如经由在启动期间直至结束延迟可见性的事件防止修改分配给数据结构的存储位置,或可替代地经由只针对与结束延迟可见性的事件相关联的启动允许修改存储位置来保护身份/识别数据结构免受修改。任选地,将已经存储在身份/识别数据结构中的信息存储在例如与供应商特定数据结构(比如VPD区域中的一个或多个供应商特定字段)对应的其他数据结构中。
对于第二示例性技术,在下载、激活和/或启动新固件之前,结合主机上的驱动程序操作的控制器将信息从身份/识别数据结构提供至驱动程序。作为下载、激活和/或启动(在不发生结束延迟可见性的事件的情况下)新固件的一部分,驱动程序将事先提供的身份/识别数据结构信息提供给控制器,并且该控制器用所提供的信息来填充分配给身份/识别数据结构的存储位置。
对于第三示例性技术,主机上的驱动程序将信息提供给设备以便设备用此来填充身份/识别数据结构。驱动程序在固件更新之后且在设备响应于来自主机的取决于填充的身份/识别数据结构的任意命令之前提供信息。例如,信息对应于进行SSP的一个或多个参数。
任选地,结合任意前述技术,设备经启用以向主机提供另外仅是为了在结束延迟可见性的事件之后在身份/识别数据结构中变得可见的信息。作为具体示例,存储设备的固件在主机的指导下进行更新,并保存固件修订标识符。因此,相对于由在主机上执行的OS(例如,一个版本的Windows)感知的识别帧,固件修订标识符在固件更新过程中保持不变,从而防止OS由于新固件修订标识符在没有重新启动和/或电力循环的情况下变得可见而导致的不可恢复的错误(例如,“崩溃”)。在固件更新之后,在主机上执行的代理程序(例如,应用程序或驱动程序)进行检查以确定存储设备上的固件是否是最新版本。代理程序将特定命令(例如,读取供应商特定身份/识别信息,该读取不同于可返回识别帧的读取)发送至存储设备,并且作为响应,该存储设备提供新固件修订标识符。代理程序然后对新固件修订标识符与最新固件修订标识符进行比较以确定存储设备是否具有最新固件。
响应于代理程序所发送的以确定该设备正在运行哪个固件版本的特定命令,在固件启动时,例如从更新有与在固件启动时的固件版本对应的固件修订标识符(无论固件是“新的”还是“旧的”,并且无论启动是否与结束延迟可见性的事件相关联)的“阴影”VPD区域提供新固件修订标识符。可替代地,在固件启动时,从写入有与启动版本的固件对应的固件修订标识符的“日志”提供新固件修订标识符。
任选地,将先前固件版本标识符存储在阴影VPD区域中。进一步任选地,设备中的模式信息(例如,该设备通过主机经由命令可访问的)可选地确定阴影VPD区域是否关于结束延迟可见性的事件来更新。例如,模式信息设置为防止关于电力循环对阴影VPD区域进行更新,从而使固件修订标识符在系统中保持不变,这个变化在该系统中另外会导致错误。阴影VPD区域任选可经由SMART日志和/或供应商特定机制比如供应商特定命令访问。
虽然前述特定实例是针对固件修订标识符的,但是其他实施方式也以类似的方式处理进行SSP的参数,以及保存的身份/识别信息,且更一般地对OS进行延迟可见性处理的固件更新的任意部分。
任选地,单独地或与任意前述技术结合地,设备经启用以存储并随后向主机提供最新固件更新和/或一个或多个先前固件更新的结果。存储和提供例如允许“回滚”至一个或多个先前版本的固件,以根据一个或多个先前版本的固件的执行来访问身份/识别信息,或以根据当前版本的固件(比如固件标识符和/或进行SSP的另外进行延迟可见性的一个或多个参数)的执行来访问身份/识别信息。
固件更新的示例是当设备使用的固件的所有或任意部分(比如通过利用设备的处理器执行固件)用新固件替换时,该设备利用新固件起作用(比如通过启动,然后执行新固件,和/或通过可用于执行固件的一个或多个库和/或表)。该替换任选包括例如(重写)写入分配给剩余固件的非易失性(例如闪存)(例如用于存储固件)。
在某些实施方式中,访问NVM中不同大小量子的压缩数据在某些使用场景下具有提高的存储效率。例如,SSD控制器从计算主机接收(未压缩)数据(例如,与磁盘写入命令相关),压缩该数据,并将压缩后的数据存储到闪存中。响应于来自计算主机的后续请求(例如,与磁盘读取命令相关),SSD控制器从闪存中读取压缩数据,对压缩数据进行解压,并向计算主机提供未压缩数据。根据不同大小量子将压缩数据存储在闪存中,量子大小由于压缩算法、操作模式和各种数据的压缩效率等而变化。SSD控制器通过查阅所包括的映射表对数据进行部分解压以确定报头存储在闪存中的位置。SSD控制器解析从闪存获得的报头以确定适当的(压缩)数据存储在闪存中的位置。SSD控制器对来自闪存的适当的数据进行解压以产生未压缩数据并将其提供给计算主机。在即时应用中,解压(及其变型)与减压(及其变型)同义。
在各种实施方式中,SSD控制器包括与计算主机交互(interfacing)的主机接口、与NVM比如闪存交互的接口以及用于控制接口并进行(和/或控制进行的各方面)压缩和解压,以及较低级纠错、较高级纠错及利用独立硅元件的动态较高级冗余模式管理的电路。
根据各种实施方式,某些主机接口与USB接口标准、CF接口标准、MMC接口标准、SD接口标准、记忆棒接口标准、xD图片卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准中的一个或多个兼容。根据各种实施方式,计算主机是计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上电脑、笔记本电脑、上网本电脑、PDA、媒体播放器、媒体记录器、数码相机、蜂窝手机、无绳电话手机和电子游戏机中的所有或任意部分。在某些实施方式中,接口主机(比如SAS/SATA桥接器)作为计算主机和/或作为计算主机的桥接器进行操作。
根据各种实施方式,某些SSD与由磁性和/或光学非易失性存储器(比如,HDD、CD驱动器及DVD驱动器)所使用的形状因数、电接口和/或协议兼容。在各种实施方式中,SSD使用零个以上的奇偶码、零个以上的RS码、零个以上的BCH码、零个以上的维特比或其他格子码及零个以上的LDPC码。
示例性实施方式
在结束具体实施方式的绪论时,接下来是示例性实施方式的集合,包括明确列举为“EC”(示例性组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些示例并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些示例性实施方式,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
EC1)一种方法,包括:
(a)根据与当前选择识别信息相关联的当前固件来操作设备,(a)的操作包括将当前选择识别信息返回与设备通信的计算主机;
(b)在(a)之后,在设备中,接收与新选择识别信息相关联的新固件,新选择识别信息具有与当前选择识别信息的各元素对应的一个或多个元素,新选择识别信息的元素的至少一个的值不同于当前选择识别信息的对应元素;
(c)在(b)之后,根据新固件来操作设备,(c)的操作包括将当前选择识别信息返回计算主机;以及
(d)在(b)之后并响应于结束延迟新选择识别信息的可见性的事件,根据新固件来操作设备,(d)的操作包括将新选择识别信息返回计算主机。
EC2)如EC1所述的方法,其中三个返回的行为分别响应于串行高级技术附件(SATA)识别命令类型的相应实例。
EC3)如EC1所述的方法,其中三个返回的行为分别响应于小型计算机系统接口(SCSI)读取重要产品数据(VPD)命令类型的相应实例。
EC4)如EC1所述的方法,其中三个返回的行为分别响应于来自计算主机的一个或多个命令类型的特定命令类型的相应实例,特定命令类型使得如果(c)中的返回返回新选择识别信息,则在计算主机上执行的操作系统(OS)会遇到不可恢复的错误。
EC5)如EC4所述的方法,其中OS包括一个版本的Windows OS。
EC6)如EC4所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC7)如EC4所述的方法,其中特定命令类型包括小型计算机系统接口(SCSI)读取重要产品数据(VPD)命令类型。
EC8)如EC4所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC9)如EC1所述的方法,其中:
新固件是第一新固件并且新选择识别信息是第一新选择识别信息;且进一步包括:
(e)在(c)之后,接收与第二新选择识别信息相关联的第二新固件;以及
(f)在(e)之后,根据第二新固件来操作设备,(f)的操作包括将当前选择识别信息返回计算主机。
EC10)如EC9所述的方法,其中四个返回的行为分别响应于来自计算主机的一个或多个命令类型的特定命令类型的相应实例,特定命令类型使得如果(f)中的返回返回新选择识别信息,则在计算主机上执行的操作系统(OS)会遇到不可恢复的错误。
EC11)如EC10所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC12)如EC10所述的方法,其中特定命令类型包括小型计算机系统接口(SCSI)读取重要产品数据(VPD)命令类型。
EC13)如EC10所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC14)如EC1所述的方法,其中当前识别信息是结合当前其他识别信息的当前选择识别信息,并且(a)的返回返回结合当前其他识别信息的当前选择识别信息。
EC15)如EC1所述的方法,其中新识别信息是结合新的其他识别信息的新选择识别信息,并且(c)的返回经由返回结合新的其他识别信息的新选择识别信息来返回当前选择识别信息。
EC16)如EC1所述的方法,
其中当前识别信息是结合当前其他识别信息的当前选择识别信息,并且(a)的返回返回结合当前其他识别信息的当前选择识别信息;并且
其中新识别信息是结合新的其他识别信息的新选择识别信息,新识别信息具有与当前识别信息的各元素对应的一个或多个元素,新的其他识别信息具有与当前其他识别信息的各元素对应的一个或多个元素,并且(c)的返回经由返回结合当前其他识别信息的新选择识别信息来返回当前选择识别信息。
EC17)如EC1所述的方法,进一步包括:
执行和/或下载当前固件的至少一部分以在当前固件与当前选择识别信息之间形成关联;以及
执行和/或下载新固件的至少一部分以在新固件与新选择识别信息之间形成关联。
EC18)如EC1所述的方法,其中结束延迟新选择识别信息的可见性的事件包括以下各项中的任意一项或多项:
设备电力循环;
设备的所有或任意部分从一种电力模式转换至另一种电力模式;
设备接收供应商特定命令;
设备接收特定参数和/或代码作为固件更新的一部分,并且
将设备耦接至主机的链路被重置。
EC19)如EC1所述的方法,其中:
当前选择识别信息是当前固件修订标识符;
新选择识别信息是新固件修订标识符;并且
三个返回的行为分别响应于串行高级技术附件(SATA)识别命令的实例。
EC20)如EC1所述的方法,其中:
当前选择识别信息是当前固件修订标识符;
新选择识别信息是新固件修订标识符;并且
三个返回的行为分别响应于读取重要产品数据(VPD)命令的实例。
EC21)如EC20所述的方法,其中读取包括小型计算机系统接(SCSI)读取。
EC22)如EC20所述的方法,其中读取包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取。
EC23)如EC1所述的方法,其中:
当前选择识别信息是协议兼容水平;并且
新选择识别信息是协议兼容水平。
EC24)如EC1所述的方法,进一步包括操作计算主机以从设备接收当前选择识别信息和/或向设备提供所接收的当前选择识别信息。
EC25)如EC1所述的方法,进一步包括将当前选择识别信息的至少一部分存储在一个或多个非易失性存储器中。
EC26)如EC25所述的方法,其中SSD控制器包括与存储接口标准兼容的存储接口,并且计算主机与设备之间的通信经由存储接口进行。
EC27)如EC1所述的方法,其中选择识别信息包括固件修订标识符。
EC28)如EC1所述的方法,其中选择识别信息包括进行软件设置保存(SSP)的一个或多个参数。
EC29)如EC1所述的方法,其中接收包括保存当前选择识别信息直至结束延迟新选择识别信息的可见性的事件。
EC30)如EC1所述的方法,其中接收包括保护当前选择识别信息免受修改直至结束延迟新选择识别信息的可见性的事件。
EC31)如EC1所述的方法,进一步包括:响应于结束延迟新选择识别信息的可见性的事件,解除当前选择识别信息免受修改的保护。
EC32)如EC1所述的方法,其中接收包括向计算主机提供当前选择识别信息并从计算主机中恢复当前选择识别信息。
EC33)如EC1所述的方法,其中接收包括激活新固件。
EC34)如EC1所述的方法,其中设备包括存储设备。
EC35)如EC1所述的方法,其中设备包括控制器,并且三个操作的行为以及接收的行为至少部分由控制器进行。
EC36)如EC1所述的方法,其中计算主机与设备之间的通信经由与存储接口标准兼容的存储接口进行。
EC37)如EC1所述的方法,其中设备包括固态磁盘(SSD)。
EC38)如EC37所述的方法,其中SSD包括SSD控制器,并且三个操作的行为以及接收的行为至少部分由SSD控制器进行。
EC39)如EC38所述的方法,其中SSD控制器包括非易失性存储器接口,被存储部分的存储至少部分经由非易失性存储器接口进行。
EC40)如EC38所述的方法,其中SSD控制器包括一个或多个非易失性存储器。
EC41)如EC40所述的方法,其中SSD控制器包括与非易失性存储器交互的非易失性存储器接口。
EC42)一种方法,包括:
在设备中从计算主机接收第一固件;
在设备中从计算主机接收第二固件,第二固件的接收在第一固件的接收之后;
在执行第二固件的同时,响应于来自计算主机的特定命令类型,为计算主机提供对第一固件和第二固件的任意组合的访问。
EC43)如EC42所述的方法,其中访问包括将识别信息返回在计算主机上执行的操作系统(OS),识别信息包括通过执行第一固件而确定的一些信息以及通过执行第二固件而确定的一些信息,通过执行第一固件而确定的信息使得如果相反返回通过执行第二固件而确定的对应信息,则OS会遇到不可恢复的错误。
EC44)如EC43所述的方法,其中OS包括一个版本的Windows OS。
EC45)如EC44所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型或小型计算机系统接口(SCSI)读取重要产品数据(VPD)命令类型。
EC46)如EC42所述的方法,其中访问包括将识别信息返回在计算主机上执行的操作系统(OS),识别信息包括通过执行第一固件而确定的一些信息以及通过执行第二固件而确定的一些信息,特定命令类型包括串行高级技术附件(SATA)识别命令类型或小型计算机系统接口(SCSI)读取重要产品数据(VPD)命令类型。
EC47)如EC46所述的方法,其中通过执行第一固件而确定的信息使得如果相反返回通过执行第二固件而确定的对应信息,则OS会遇到不可恢复的错误。
EC48)如EC47所述的方法,其中OS包括一个版本的Windows OS。
EC49)如EC42所述的方法,其中提供访问包括使设备根据所访问的固件启动。
EC50)如EC42所述的方法,其中提供访问包括读取和/或写入所访问的固件的固件图像的所有或任意部分。
EC51)如EC42所述的方法,其中提供访问包括读取和/或写入执行所访问的固件的所有或任意部分的一个或多个结果的所有或任意部分。
EC52)如EC51所述的方法,其中结果包括重要产品数据(VPD)的所有或任意部分的图像。
EC53)如EC51所述的方法,其中结果包括固件修订标识符。
EC54)如EC51所述的方法,其中结果包括进行软件设置保存(SSP)的一个或多个参数。
EC55)如EC42所述的方法,其中提供访问包括管理一个或多个非易失性存储器中的一个或多个数据结构。
EC56)一种方法,包括:
在设备中从计算主机接收第一固件,第一固件与第一固件识别信息相关联;
在设备中从计算主机接收第二固件,第二固件的接收在第一固件的接收之后,第二固件与第二固件识别信息相关联;以及
通过设备将第一固件识别信息返回计算主机,该返回响应于来自计算主机的特定命令类型且是设备执行第二固件的同时并且在发生特定事件之前。
EC57)如EC56所述的方法,其中返回第一固件识别信息使在计算主机上执行的操作系统(OS)能够在不重新启动的情况下在执行第一固件的整个设备中且在执行第二固件直至特定事件期间继续执行。
EC58)如EC57所述的方法,其中OS包括一个版本的Windows OS。
EC59)如EC57所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC60)如EC57所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC61)如EC56所述的方法,其中返回第一固件识别信息使在计算主机上执行的操作系统(OS)能够在不检测错误的情况下响应于返回固件修订标识符的值在执行第一固件的整个设备中且在执行第二固件直至特定事件期间的变化继续执行。
EC62)如EC61所述的方法,其中OS包括一个版本的Windows OS。
EC63)如EC61所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC64)如EC61所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC65)如EC56所述的方法,其中设备包括固态磁盘(SSD),并且该SSD包括控制器,该控制器经启用以管理SSD的一个或多个非易失性存储器以存储第一固件、第一固件识别信息、第二固件和第二固件识别信息的所有或任意组合的所有或任意部分。
EC66)如EC56所述的方法,其中特定事件包括以下各项中的任意一项或多项:
设备电力循环;
设备的所有或任意部分从一种电力模式转换至另一种电力模式;
设备接收供应商特定命令;
设备接收特定参数和/或代码作为固件更新的一部分,并且
将设备耦接至主机的链路被重置。
EC67)如EC56所述的方法,其中:
第一固件识别信息包括第一固件修订标识符,并且
第二固件识别信息包括第二固件修订标识符。
EC68)如EC56所述的方法,其中:
第一固件识别信息包括第一协议兼容水平标识符,并且
第二固件识别信息包括第二协议兼容水平标识符。
EC69)如EC56所述的方法,其中:
第一固件识别信息包括与进行软件设置保存(SSP)的一个或多个参数对应的第一套值,并且
第二固件识别信息包括与参数对应的第二套值。
EC70)一种方法,包括:
在设备中从计算主机接收第一固件,第一固件与第一固件识别信息相关联;
在设备中从计算主机接收第二固件,第二固件的接收在第一固件的接收之后,第二固件与第二固件识别信息相关联;以及
通过设备将第一固件识别信息返回计算主机,该返回响应于来自计算主机的第一命令类型且是设备执行第二固件的同时;以及
通过设备将第二固件识别信息返回计算主机,该返回响应于来自计算主机的第二命令类型且是设备执行第二固件的同时。
EC71)如EC70所述的方法,其中:
第一命令类型是读取身份命令类型;并且
第二命令类型是供应商特定命令类型。
EC72)如EC71所述的方法,其中供应商特定命令类型包括供应商特定固件识别信息读取命令类型。
EC73)如EC71所述的方法,其中读取身份命令类型包括串行高级技术附件(SATA)识别命令类型。
EC74)如EC71所述的方法,其中读取身份命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC75)如EC71所述的方法,其中读取身份命令类型包括在进行处理时使得返回第二固件识别信息而不是第一固件识别信息,在计算主机上执行的操作系统(OS)遇到不可恢复的错误的命令类型。
EC76)如EC75所述的方法,其中OS包括一个版本的Windows OS。
EC77)如EC70所述的方法,其中返回第一固件识别信息使在计算主机上执行的操作系统(OS)能够在不重新启动的情况下在执行第一固件和执行第二固件的整个设备中继续执行。
EC78)如EC77所述的方法,其中OS包括一个版本的Windows OS。
EC79)如EC77所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC80)如EC77所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC81)如EC70所述的方法,其中返回第一固件识别信息使在计算主机上执行的操作系统(OS)能够在不检测错误的情况下响应于返回固件修订标识符的值在执行第一固件和执行第二固件的整个设备中的变化继续执行。
EC82)如EC81所述的方法,其中OS包括一个版本的Windows OS。
EC83)如EC81所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC84)如EC81所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC85)如EC70所述的方法,其中设备包括固态磁盘(SSD),并且该SSD包括控制器,该控制器经启用以管理SSD的一个或多个非易失性存储器以存储第一固件、第一固件识别信息、第二固件和第二固件识别信息的所有或任意组合的所有或任意部分。
EC86)如EC70所述的方法,其中:
第一固件识别信息包括第一固件修订标识符,并且
第二固件识别信息包括第二固件修订标识符。
EC87)如EC70所述的方法,其中:
第一固件识别信息包括第一协议兼容水平标识符,并且
第二固件识别信息包括第二协议兼容水平标识符。
EC88)如EC70所述的方法,其中:
第一固件识别信息包括与进行软件设置保存(SSP)的一个或多个参数对应的第一套值,并且
第二固件识别信息包括与参数对应的第二套值。
EC89)一种方法,包括:
(a)根据与当前固件修订标识符相关联的当前固件来操作存储设备控制器,(a)的操作包括将当前固件修订标识符返回与包括存储设备控制器的存储设备通信的计算主机;
(b)在(a)之后,至少部分经由存储设备控制器接收与新固件修订标识符相关联的新固件,该新固件修订标识符不同于当前固件修订标识符;
(c)在(b)之后,根据新固件来操作存储设备控制器,(c)的操作包括将当前固件修订标识符返回计算主机;
(d)在(b)之后并响应于电力循环,根据新固件来操作存储设备控制器,(d)的操作包括将新固件修订标识符返回计算主机;
(f)其中存储设备包括经启用以存储新固件的至少一部分的非易失性存储器(NVM);并且
(g)其中三个返回的行为分别响应于来自计算主机的多个命令类型的特定命令类型的相应实例,特定命令类型使得如果(c)的返回返回新固件修订标识符,则在计算主机上执行的操作系统(OS)会遇到不可恢复的错误。
EC90)如EC89所述的方法,其中NVM包括闪存。
EC91)如EC89所述的方法,其中存储设备包括固态磁盘(SSD),该SSD包括NVM。
EC92)如EC91所述的方法,其中NVM包括闪存。
EC93)如EC89所述的方法,其中存储设备包括硬盘驱动器(HDD),该HDD包括NVM。
EC94)如EC89所述的方法,其中OS包括一个版本的Windows OS。
EC95)如EC89所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC96)如EC89所述的方法,其中特定命令类型包括小型计算机系统接口(SCSI)读取重要产品数据(VPD)命令类型。
EC97)如EC89所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC98)如EC89所述的方法,其中接收包括保存当前固件修订标识符直至电力循环。
EC99)如EC89所述的方法,其中接收包括保护当前固件修订标识符免受修改直至电力循环。
EC100)如EC89所述的方法,其中接收包括向计算主机提供当前固件修订标识符并从计算主机中恢复当前固件修订标识符。
EC101)一种方法,包括:
在经启用以与计算主机耦接的存储设备中,管理存储设备的非易失性存储器(NVM)以存储第一固件、第一固件修订标识符、第二固件、以及第二固件修订标识符;
在存储设备中,从计算主机接收第一固件,第一固件与第一固件修订标识符相关联;
在存储设备中,从计算主机接收第二固件,第二固件的接收在第一固件的接收之后,第二固件与第二固件修订标识符相关联;
通过存储设备将第一固件修订标识符返回计算主机,该返回响应于来自计算主机的特定命令类型且是存储设备执行第二固件的同时并且在发生特定事件之前,并且
其中返回第一固件修订标识符使在计算主机上执行的操作系统(OS)能够在不检测错误的情况下响应于返回固件修订标识符的值在执行第一固件的整个设备中且在执行第二固件直至特定事件期间的变化继续执行。
EC102)如EC101所述的方法,其中NVM包括闪存。
EC103)如EC101所述的方法,其中存储设备包括固态磁盘(SSD),该SSD包括NVM。
EC104)如EC103所述的方法,其中NVM包括闪存。
EC105)如EC101所述的方法,其中存储设备包括硬盘驱动器(HDD),该HDD包括NVM。
EC106)如EC101所述的方法,其中特定事件是存储设备的电力循环。
EC107)如EC101所述的方法,进一步包括在执行第二固件的同时并在发生特定事件之后,响应于来自计算主机的特定命令类型,将第二固件修订标识符返回计算主机。
EC108)如EC101所述的方法,其中OS包括一个版本的Windows OS。
EC109)如EC101所述的方法,其中特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC110)如EC101所述的方法,其中特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC111)一种方法,包括:
管理存储设备的非易失性存储器(NVM)以存储第一固件、第一固件修订标识符、第二固件、以及第二固件修订标识符,存储设备经启用以与计算主机耦接;
在存储设备中,从计算主机接收第一固件,第一固件与第一固件修订标识符相关联;
在存储设备中,从计算主机接收第二固件,第二固件的接收在第一固件的接收之后,第二固件与第二固件修订标识符相关联;
通过存储设备将第一固件修订标识符返回计算主机,返回第一固件修订标识符响应于来自计算主机的第一命令类型且是存储设备执行第二固件的同时;
通过存储设备将第二固件修订标识符返回计算主机,返回第一固件修订标识符响应于来自计算主机的第二命令类型且是存储设备执行第二固件的同时;
其中第一命令类型是读取身份命令类型;并且
其中第二命令类型是供应商特定命令类型。
EC112)如EC111所述的方法,其中NVM包括闪存。
EC113)如EC111所述的方法,其中存储设备包括固态磁盘(SSD),该SSD包括NVM。
EC114)如EC113所述的方法,其中NVM包括闪存。
EC115)如EC111所述的方法,其中存储设备包括硬盘驱动器(HDD),该HDD包括NVM。
EC116)如EC111所述的方法,其中供应商特定命令类型包括供应商特定固件识别信息读取命令类型。
EC117)如EC111所述的方法,其中读取身份命令类型包括串行高级技术附件(SATA)识别命令类型。
EC118)如EC111所述的方法,其中读取身份命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
EC119)如EC111所述的方法,其中读取身份命令类型包括在进行处理时使得返回第二固件修订标识符而不是第一固件修订标识符,在计算主机上执行的操作系统(OS)遇到不可恢复的错误的命令类型。
EC120)如EC119所述的方法,其中OS包括一个版本的Windows OS。
EC121)一种系统,包括:
(a)构件,用于根据多个固件图像中的所选固件图像执行,固件图像的每一个具有对应标识符,其中固件图像包括各电流且新固件图像具有各对应的当前标识符和新标识符;
(b)构件,用于利用所选固件图像(其是当前固件图像)来利用用于执行的构件并在这样做的同时,响应于来自计算主机的多个命令类型的特定命令类型的第一实例,返回当前标识符;
(c)构件,其在(b)的构件之后操作,用于接收具有新标识符的新固件图像;
(d)构件,其在(c)的构件之后操作,用于利用所选固件图像(其是新固件图像)来利用用于执行的构件并在这样做的同时,响应于特定命令类型的第二实例,返回当前标识符;
(e)构件,其在(b)的构件之后操作且响应于电力循环,用于利用所选固件图像(其是新固件图像)来利用用于执行的构件并在这样做的同时,响应于特定命令类型的第三实例,返回新标识符;
经启用以存储新固件的至少一部分的闪存,并且
其中特定命令类型使得:
(i)当第一各标识符响应于特定命令类型的第一相应实例返回至计算主机时,
(ii)当第二各标识符响应于特定命令类型的第二相应实例返回至计算主机时,并且
(iii)在返回的第一各标识符与返回的第二各标识符之间不发生电力循环的情况下,
在计算主机上执行的操作系统(OS)响应于第二各标识符的返回而遇到不可恢复的错误。
EC122)如EC121所述的系统,其中,系统包括固态磁盘(SSD)的所有或任意部分。
EC123)如EC121所述的系统,其中,OS包括一个版本的Windows OS且特定命令类型包括串行高级技术附件(SATA)识别命令类型。
EC124)如EC121所述的系统,其中,OS包括一个版本的Windows OS且特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取重要产品数据(VPD)命令类型。
具有或参照SSD控制器的任意前述EC,其中SSD控制器在单个集成电路(IC)中实现。
具有或参照SSD控制器和一个或多个非易失性存储器的任意前述EC,其中SSD控制器和非易失性存储器包括在SSD中。
具有或参照一个或多个非易失性存储器的任意前述EC,其中非易失性存储器中的至少一个包括一个或多个闪存。
具有或参照SSD控制器和计算主机的任意前述EC,其中SSD控制器包括与存储接口标准兼容且经启用以与计算主机耦接的存储接口。
具有或参照SSD控制器的任意前述EC,其中SSD控制器包括非易失性存储器接口。
具有或参照非易失性存储器接口的任意前述EC,其中非易失性存储器接口包括闪存接口。
具有或参照SSD控制器的任意前述EC,其中SSD控制器包括闪存接口。
具有或参照一个或多个闪存的任意前述EC,其中闪存中的至少一个包括以下各项中的一项或多项:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
具有或参照一个或多个闪存的任意前述EC,其中闪存中的至少一个包括以下各项中的一项或多项:
单阶存储单元(SLC)闪存技术存储单元,以及
多阶存储单元(MLC)闪存技术存储单元。
具有或参照闪存接口的任意前述EC,其中闪存接口与以下各项中的一项或多项兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
同步接口,以及
异步接口。
具有或参照存储接口标准的任意前述EC,其中存储接口标准包括以下各项中的一项或多项:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接的小型计算机系统接口(SAS)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
具有或参照计算主机的任意前述EC,其中计算主机包括以下各项中的一项或多项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
个人数字助理(PDA),
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
可设想另外的EC,包括装置、系统、方法、构件加功能、以及计算机可读介质类似物和/或前述EC的所有或任意部分的变化。
系统
图1A示出了包括提供管理主机看到的设备固件更新效果的SSD控制器100的SSD101的实施方式的所选细节。SSD控制器用于管理比如经由NVM元件(例如,闪存)实现的非易失性存储。SSD控制器100经由一个或多个外部接口110与主机(未示出)通信耦接。根据各种实施方式,外部接口110是以下各项中的一项或多项:SATA接口;SAS接口;PCIe接口;光纤通道接口;外部接口(比如10千兆以太网);任意前述接口的非标准版本;定制接口;或用于将存储和/或通信和/或计算设备互连的任何其他类型的接口。例如,在某些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100进一步经由一个或多个设备接口190与包括一个或多个存储设备(比如,闪存设备192的一个或多个实例)的NVM199通信耦接。根据各种实施方式,设备接口190是用于连接至存储设备的以下各项中的一项或多项:异步接口;同步接口;DDR同步接口;ONFI兼容接口(比如,ONFI2.2or 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具有以下各项中的一个或多个:用于临时存储数据的存储器137;用于控制至和/或自缓冲器131的数据的移动的DMA133;用于提供较高级错误校正和/或冗余功能的ECC至X135;和其他数据移动和/或操控功能。较高级冗余功能的示例为一种RAID类能力(例如,RASIE),其中冗余在闪存设备(例如闪存设备192的多个闪存设备)级和/或闪存芯片(比如闪存芯片194)级上而非在磁盘级上。
根据各种实施方式,揭示以下各项中的一个或多个:ECC161任选地和/或可选地处理在缓冲器131和设备接口190之间发送的一些或所有数据;以及ECC161任选地和/或可选地处理存储在缓冲器131内的数据。在某些实施方式中,ECC161用于提供较低级错误校正和/或诸如根据一个或多个ECC计算的冗余功能。在某些实施方式中,ECC161实现以下各项中的一个或多个:CRC码;汉明码;RS码;BCH码;LDPC码;维特比码;格子码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或纠正码;以及上述的任意组合。在某些实施方式中,ECC161包括一个或多个解码器(比如LDPC解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例。设备接口逻辑191经启用以根据闪存设备192的协议将数据发送到或从闪存设备192发送数据。设备接口逻辑191包括调度193,从而经由设备接口190可选地顺序控制闪存设备192的实例。例如,在某些实施方式中,调度193经启用以排队对于闪存设备192的实例的操作,并且当单独的闪存设备192(或闪存芯片194)的实例可用时,可选地将操作发送至个体闪存设备192(或闪存芯片194)的实例。
映射141在用于外部接口110上的数据寻址与用于设备接口190上的数据寻址之间转换,使用表143将外部数据地址映射至NVM199中的位置。例如,在某些实施方式中,映射141经由由表143提供的映射将用于外部接口110上的LBA转换成瞄准一个或多个闪存芯片192的区块和/或页地址。对于自驱动制造或解分配未曾被写入的LBA,该映射指向缺省值以传回是否读取LBA。例如,在处理解分配命令时,修改该映射以使得对应于解分配LBA的条目指向缺省值中的一个。在各种实施方式中,存在各种缺省值,其各自具有对应指针。多个缺省值使得能够读取某些解分配LBA(比如在第一范围中)作为一个缺省值,同时读取其他解分配LBA(比如在第二范围中)作为另一个缺省值。在各种实施方式中,缺省值由闪存、硬件、固件、命令和/或基元引数和/或参数、可编程寄存器或其各种组合定义。
在某些实施方式中,回收站151执行垃圾收集。例如,在某些实施方式中,闪存设备192的实例包含在可重写入之前必须擦除的区块。回收站151经启用以例如,通过扫描映射141保持的映射来确定闪存设备192的实例的哪些部分正在有效使用中(例如,被分配而非被解分配),然后通过对闪存设备192的实例的未使用(例如,解分配)的部分进行擦除而使其可用于写入。在进一步实施方式中,回收站151经启用以移动存储在闪存设备192的实例内的数据,以使闪存设备192的实例的较大连续部分可用于写入。
CPU171控制SSD控制器100的各个部分。CPU171包括CPU内核172。根据各种实施方式,CPU内核172为一个或多个单核或多核处理器。在某些实施方式中,CPU内核172中的各个处理器内核是多线程的。CPU内核172包括指令和/或数据缓存器和/或存储器。例如,指令存储器包括能使CPU内核执行软件(有时称为固件)以控制SSD控制器100的指令。在某些实施方式中,CPU内核172执行的一些或所有固件存储在闪存设备192上(例如作为如图1B和图1C中所示的NVM199的固件106)。
在各种实施方式中,CPU171进一步包括:在经由外部接口110接收的命令在处理中时跟踪和控制该命令的命令管理173;控制缓冲器131的分配和使用的缓冲器管理175;控制映射141的转译管理177;控制数据寻址的一致性并避免比如外部数据访问和回收数据访问之间冲突的一致性管理179;控制设备接口逻辑191的设备管理181;控制身份信息的修改和通信的身份管理182;以及任选其他管理单元。根据各种实施方式,CPU171执行的任何或所有管理功能是由硬件、软件(比如在CPU内核172或经由外部接口110连接的主机上执行的固件)或其任何组合进行控制和/或管理的。
在某些实施方式中,CPU171经启用以执行其他管理任务,例如,以下各项中的一个或多个:收集和/或报告性能统计;实现SMART;控制电力排序、控制和/或监测和/或调整电力消耗;对电力故障做出响应;控制和/或监测和/或调整时钟速率;以及其他管理任务。
各种实施方式包括与SSD控制器100类似并且比如经由主机接口111和/或外部接口110适配与各种计算主机的操作兼容的计算主机闪存控制器。各种计算主机包括以下各项中的一个或其任何组合:计算机、工作站计算机、服务器计算机、存储服务器、PC、膝上电脑、笔记本电脑、上网本电脑、PDA、媒体播放器、媒体记录器、数码相机、蜂窝手机、无绳电话手机和电子游戏机。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任意部分在单个IC、多芯片IC的单芯片、多芯片IC的多个芯片或多个IC上实现。例如,缓冲器131与SSD控制器100的其他元件在同一芯片上实现。再如,缓冲器131与SSD控制器100的其他元件在不同的芯片上实现。
图1B示出了包括图1A的SSD的系统的一个实施方式的所选细节。SSD101包括经由设备接口190与NVM199耦接的SSD控制器100。SSD经由外部接口110与主机102耦接。在某些实施方式中,SSD101(或其变型)对应于与作为主机102操作的发起器耦接的SAS驱动器或SATA驱动器。
主机102经启用以执行OS105,OS包括和/或经启用以借助与SSD交互的驱动程序(未示出)操作。Windows的各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux的各种版本(例如,Red Hat、Debian及Ubuntu)及MacOS的各种版本(例如,8、9及X)是OS105的示例。
在某些实施方式中,NVM199的一个或多个部分用于固件存储106和/或选择ID信息存储107。固件存储包括一个或多个固件图像(或其部分)。例如,固件图像具有(例如)通过SSD控制器100的CPU内核172执行的软件的一个或多个图像。再如,固件图像具有(例如)在软件执行期间由CPU内核参考的常数、参数值及NVM设备信息的一个或多个图像。例如,固件的一个或多个图像对应于(例如)当前固件图像及零个以上的先前(相对于固件更新)固件图像。
选择ID信息存储107包括与SSD101、SSD控制器100的任意一个或多个相关联的身份/识别信息的所有或任意部分、由CPU内核当前执行的(或在下一电力循环之后要执行的)的软件、和体现SSD的特定产品的所有或任意部分的一个或多个图像。一个或多个身份/识别信息图像例如对应于当前固件图像执行的结果和固件图像执行的零个或多个先前结果。
在各种实施方式中,选择ID信息存储107包括固件版本标识符的所有或任意部分和/或进行SSP的状态和/或参数的所有或任意部分。更一般地,选择ID信息存储包括本文其他地方所描述的身份和/或识别信息的所有或任意部分的一个或多个版本。这些版本对应于固件的相应版本和/或固件的启动。
图1C示出了包括图1A的SSD的系统的另一个实施方式的所选细节。如图1B所示,SSD101包括经由设备接口190与NVM199耦接的SSD控制器100。SSD经由外部接口110与主机102耦接,外部接口110又与中间控制器103耦接,然后经由中间接口104与主机102耦接。在各种实施方式中,SSD控制器100经由其他控制器,比如RAID控制器的一个或多个中间级与主机耦接。在某些实施方式中,SSD101(或其变型)对应于SAS驱动器或SATA驱动器,且中间控制器103对应于扩展器,该扩展器又与发起器耦接,或可替代地,中间控制器103对应于桥接器,该桥接器经由扩展器间接与发起器耦接。
在各种实施方式中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起实现为非易失性存储组件,比如USB存储组件、CF存储组件、MMC存储组件、SD存储组件、记忆棒存储组件和xD图片卡存储组件。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能在主机(例如,图1C的主机102)中实现,控制器要与该主机耦接。在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动程序软件和/或SSD控制固件)或其任意组合来实现。例如,ECC单元(比如,类似于图1A的ECC161和/或ECC至X135)的功能或与该ECC单元相关联的功能经由软件在主机上实现且部分经由固件和硬件的组合在SSD控制器中实现。再如,回收站单元(比如类似于图1A的回收站151)的功能或与该回收站单元相关联的功能部分地经由软件在主机上实现且部分地经由硬件在计算主机闪存控制器中实现。
操作
图2示出了管理主机看到的设备固件更新效果的一个实施方式的所选细节的流程图200。该图的实施方式的操作的示例性系统上下文包括与主机耦接的设备,其中OS在主机上运行。该设备响应于来自主机的命令且经启用以检测并响应于结束延迟可见性的事件(例如,电力循环)。设备根据固件(比如执行固件的控制器)进行操作。设备还根据可经由固件(比如经由修改其一部分的控制器)可读取且可写入的选择身份/识别信息进行操作。选择身份/识别信息(也称为“ID信息”)是本文其他地方描述的一个或多个子集的身份和/或识别信息,该子集根据实施方式、使用场景和/或设备的操作模式变化。该图中所示的流程提供延迟固件更新效果的至少一部分的可见性,由此允许管理主机看到的设备固件更新效果。
ID信息包括一个或多个元素(例如,参数、值和/或字段)。当设备经由固件启动和/或至少部分经由固件执行所选功能时,参考(例如,读取、写入或读取和写入)该ID信息。特定版本的固件具有与特定版本的ID信息的对应关系。例如,在启动特定版本的固件期间,特定版本的固件填充ID信息的一个或多个元素,因此所填充的ID信息对应于特定版本的固件。再如,在执行特定版本的固件的特定功能的同时,写入ID信息的一个或多个元素,由此在特定版本的固件与所写入ID信息之间产生对应关系。
具体地,如该图所示,流程开始于设备根据“旧”版本的固件和根据与旧固件对应的“旧”ID信息进行操作(操作(旧)固件(旧)ID信息,201)。在流程停留在201中时,当设备响应于来自主机的取决于ID信息的选择命令时,该设备参考所填充的符合旧ID信息的ID信息。例如,如果设备是SATA兼容SSD,则响应于SATA识别命令,该设备返回从旧ID信息确定的VPD,该VPD例如包括固件修订标识符和/或进行SSP的参数。
外部代理程序(例如,用户或固件版本检查工具)确定比如经由下载并激活/启动新固件来对设备进行固件更新。固件更新开始于主机向设备发出命令以更新/下载固件(下载命令,201D),并且作为响应,设备任选结合主机获取新固件(下载(新)固件,202)。然后,设备改变内部状态和/或功能以防止修改所填充的ID信息直至电力循环(保护选择ID信息,203)。
固件更新继续使主机向设备发出命令以利用新固件进行操作(激活命令,203A),并且作为响应,设备激活新固件(激活(新)固件,204)并利用新固件启动(设备启动,205)。在启动之后所填充的ID信息符合旧ID信息(对应于旧固件),因为已经保护所填充的ID信息免受修改(203)。在启动之后,该设备根据新版本的固件和根据与旧固件对应的旧ID信息进行操作(操作(新)固件(旧)ID信息,206)。在流程停留在201中时,当设备响应于来自主机的取决于ID信息的选择命令时,该设备参考所填充的符合旧ID信息的ID信息,如在201中时一样。
因此,当设备响应于选择命令(其取决于ID信息)时,设备参考所填充的符合旧ID信息的ID信息,由此延迟固件更新效果的至少一部分的可见性。实际上,对于选择命令,在固件更新前后参考相同的ID信息。
例如,如果设备是SATA兼容SSD,则响应于SATA识别命令,设备有效地参考旧ID信息,从旧ID信息确定固件修订标识符(所确定的与旧固件对应的固件修订标识符),并返回包括旧固件修订标识符的VPD。因此,在固件更新前后提供相同的固件修订标识符。在固件更新前后提供相同的固件修订标识符使在主机上运行的某些版本的Windows OS继续在固件更新过程中运行,而不重新启动OS,比如在以下情况下,如果在更新前后提供的固件修订标识符不同,则该OS会遇到不可恢复的错误和“崩溃”。
再如,如果设备是SATA兼容SSD,则响应于SATA识别命令,设备有效地参考旧ID信息,从旧ID信息确定进行SSP的参数(所确定的与旧固件对应的进行SSP的参数),并返回包括进行SSP的旧参数的VPD。因此,在固件更新前后提供进行SSP的相同参数。
流程直到允许用与新固件对应的信息填充ID信息的电力循环才完整。电力循环与循环设备和主机的电力对应,因此主机上的OS被作为电力循环的一部分而重新启动(注意,OS尚未针对与201至206相关联的任意处理专门重新启动)。因此,当存在电力循环时,该流程继续进行,并且响应于电力被移除并重新施加(电力循环,206P),设备改变内部状态和/或功能以允许修改所填充的ID信息(解除选择ID信息的保护,207)。设备然后利用新固件启动(设备启动,208)。在启动之后所填充的ID信息是新ID信息(对应于新固件),因为所填充的ID信息经启用以进行修改(207)。在启动之后,该设备根据新版本的固件和根据与新固件对应的新ID信息进行操作(操作(新)固件(新)ID信息,209)。在流程停留在209中时,当设备响应于来自主机的取决于ID信息的选择命令时,该设备参考所填充的符合新ID信息的ID信息。该流程现在是完整的,并且结束延迟固件更新效果的至少一部分的可见性。
从概念上讲,209中的操作等效于201中的操作(该操作根据彼此对应的固件和ID信息)。因此,任选进行另一个固件更新,好像209就是201一样,等等。
在某些实施方式和/或使用场景下,在结束延迟可见性的事件跟随第一固件更新之前,下载第二固件更新。延迟固件更新效果的至少一部分的可见性在第二固件更新过程中被延长。从概念上讲,在下载第二固件更新的过程中进一步保存ID信息直至电力循环。
更具体地,在相对于图2描述的实施方式中,考虑设备已经收到第一固件更新(第一新固件),但尚未电力循环,因此如与206中一样进行操作。主机然后向设备发出命令以更新/下载(第二新)固件,并且作为响应,设备获得(第二新)固件,如与202中一样。设备然后改变内部状态和/或功能以防止修改所填充的ID信息直至电力循环,如与203中一样。所保护的填充ID信息与下载第一固件更新之前的填充ID信息相同。在激活并启动之后,设备根据第二新固件并根据旧ID信息(在第一固件更新之前其对应于旧固件)进行操作,类似于206中的操作。在某些使用场景下,一个或多个额外的固件更新发生在电力循环之前,每一个经处理使得在相应固件更新过程中保存填充ID信息。
在某些实施方式和/或使用场景下,以与该图中描述的顺序不同的顺序组合和/或进行一个或多个操作202至205。例如,202和203经组合使得下载固件的命令被设备解释以包括防止修改填充ID信息直至电力循环以及更新/下载固件。再如,响应于下载固件的命令,在202之前进行203。在某些实施方式中,204在203之后,而不接收利用新固件操作的命令。可设想其他变化。
图3示出了管理主机看到的设备固件更新效果的另一个实施方式的所选细节的流程图300。图3的实施方式在某些方面类似于图2进行操作。图2的实施方式的操作的示例性系统上下文适用于图3的实施方式。该图中所示的流程提供延迟固件更新效果的至少一部分的可见性,由此允许管理主机看到的设备固件更新效果。
如该图所示,流程开始于设备根据“旧”版本的固件和根据与旧固件对应的“旧”ID信息进行操作(操作(旧)固件(旧)ID信息,301)。在流程停留在301中时,操作类似于图2的201,使得当设备响应于来自主机的取决于ID信息的选择命令时,该设备参考所填充的符合旧ID信息的ID信息。
进一步类似于图2,外部代理程序确定对设备进行固件更新。然而,不同于图2的实施方式,在图3的实施方式中,固件更新开始于主机向设备发出命令以将ID信息从设备提供给主机(读取ID命令,301R)。作为响应,设备向主机发送填充ID信息(提供选择ID信息,302)。固件更新继续执行主机向设备发出命令以更新/下载固件(下载命令,302D),并且作为响应,设备任选结合主机获取新固件(下载(新)固件,303)。
固件更新继续使主机向设备发出命令以利用新固件进行操作(激活命令,303A)。作为响应,设备激活新固件(激活(新)固件,304)并利用新固件启动(设备启动,305)。然而,在设备利用新固件开始充分操作之前,主机向设备发送命令以从主机接收ID信息(写入ID命令,305W)。作为响应,设备从主机接收ID信息并将收到的ID信息保存为填充ID信息(接收选择ID信息,306)。主机提供在306中使用的ID信息,这与设备在302中所提供的相同,因此,填充ID信息符合旧ID信息。设备然后根据新固件和旧ID信息开始充分操作(操作(新)固件(旧)ID信息,307)。在流程停留在307中时,当设备响应于来自主机的取决于ID信息的选择命令时,该设备参考所填充的符合旧ID信息的ID信息,如在301中时一样。
因此,如图2所示,当设备响应于选择命令(其取决于ID信息)时,设备有效地参考旧ID信息,由此延迟固件更新效果的至少一部分的可见性并在固件更新前后有效地参考相同的ID信息。例如,在固件更新前后提供相同的固件修订标识符,从而使在主机上运行的某些版本的WindowsOS继续在固件更新过程中运行,而不重新启动OS,比如在以下情况下,如果在更新前后提供的固件修订标识符不同,则该OS会遇到不可恢复的错误和“崩溃”。再如,在固件更新前后提供进行SSP的相同参数。
如图2所示,流程直到允许用与新固件对应的信息填充ID信息的电力循环才完整。电力循环与循环设备和主机的电力对应,因此主机上的OS被作为电力循环的一部分而重新启动(注意,OS尚未针对与301至307相关联的任意处理专门重新启动)。因此,当存在电力循环时,该流程继续进行,并且响应于电力被移除并重新施加(电力循环,307P),设备消除由306写入的填充ID信息的任何影响(丢弃选择ID信息,308)。设备然后利用新固件启动(设备启动,309)。在启动之后所填充的ID信息是新ID信息(对应于新固件),因为不存在来自主机的写入ID命令来提供旧ID信息,并且在启动期间填充ID信息写入有新ID信息。在启动之后,该设备根据新版本的固件和根据与新固件对应的新ID信息进行操作(操作(新)固件(新)ID信息,310)。在流程停留在310中时,当设备响应于来自主机的取决于ID信息的选择命令时,该设备参考所填充的符合新ID信息的ID信息。该流程现在是完整的,并且结束延迟固件更新效果的至少一部分的可见性。
从概念上讲,310中的操作等效于301中的操作(该操作根据彼此对应的固件和ID信息)。因此,任选进行另一个固件更新,好像310就是301一样,等等。
如图2所示,在与图3有关的某些实施方式和/或使用场景下,在结束延迟可见性的事件遵循第一固件更新之前,下载第二固件更新。延迟固件更新效果的至少一部分的可见性在第二固件更新过程中被延长。从概念上讲,在第二固件更新之后用旧ID信息重新填充ID信息。
更具体地,在相对于图3描述的实施方式中,考虑设备已经收到第一固件更新(第一新固件),但尚未电力循环,因此如与307中一样进行操作。主机然后通过向设备发出命令以提供填充ID信息来开始(第二新)固件更新,如与302中一样,并且作为响应,设备也这样做。固件更新继续下载(第二新)固件、激活和启动。然而,在设备利用(第二新)固件开始充分操作之前,主机向设备发送命令以接收ID信息(如与305W中一样)。主机提供供使用的ID信息,这与设备早些时候响应于从主机至所提供的填充ID信息的命令所提供的相同。设备写入所提供的ID信息作为填充ID信息,因此填充ID信息符合旧ID信息。设备然后根据第二新固件和旧ID信息(在第一固件更新之前其对应于旧固件)开始充分操作,类似于307中的操作。在某些使用场景下,一个或多个额外的固件更新发生在电力循环之前,每一个经处理使得在相应固件更新之后用旧ID信息重新填充该填充ID信息。
在从概念上讲是图3所示的实施方式的变型的实施方式中,ID信息例如对应于进行SSP的一个或多个参数。在设备利用新固件充分操作之前,并且在不从设备读取填充ID信息的情况下,主机明确为设备提供ID信息。作为响应,设备将所提供的ID信息写入为填充ID信息。更具体地,在相对于图3描述的实施方式中,认为设备如与301中一样操作。流程响应于主机向设备提供下载命令直接从301进入303。流程然后沿304、305和306进行。相对于306,因为302已被省略,主机提供与从设备提供给主机的ID信息无关的ID信息。
在相对于图2和图3描述的前述实施方式中,结束延迟可见性的事件为设备电力循环(例如,图2的206P和图3的307P)。可设想其他实施方式,比如其中事件是设备的所有或任意部分的任意一个或多个从一种电力模式转换至另一种电力模式(例如,退出休眠模式或PHY电力管理模式),设备接收供应商特定命令,设备接收特定参数和/或代码作为固件更新的一部分,并且重置链路使设备与主机耦接。
在某些实施方式和/或使用场景下,以与该图中描述的顺序不同的顺序组合和/或进行一个或多个操作302至306。例如,302和303以与所描述的顺序不同的顺序组合和/或执行使得下载固件的命令被设备解释以包括向主机发送填充ID信息以及更新/下载固件的设备,并且不使用将填充ID信息从设备提供给主机的命令。再如,304与305组合,例如,设备响应于利用新固件进行操作的命令进行启动(没有明确激活)。在某些实施方式和/或使用场景下,省略308,并且309经由例如重写先前存储的ID信息来填充ID信息。可设想其他变化。
在与图2和/或图3有关的各种实施方式中,设备任选地(例如,根据一个或多个模式位、供应商特定命令、SSD控制器检测的固件事件、或其任意组合)响应于电力循环来进行固件下载、激活和/或启动中的任意一种或多种。例如,根据接收第一供应商特定命令,设备利用当前执行的固件启动,而不激活并启动目前尚未执行的新下载的固件。进一步地,根据接收第二供应商特定命令,设备利用新下载的固件启动。
在与图2和/或图3有关的各种实施方式中,在固件更新之后且在电力循环之前,设备经启用以选择性地向主机提供新ID信息(例如,与新固件对应的ID信息)。来自主机的取决于ID信息的选择命令包括两组命令。第一组选择命令由设备根据填充ID信息进行处理,因此在固件更新之后且在电力循环之前,第一组命令接收符合旧ID信息的ID信息。第一组选择命令对应于来自主机的命令,使得如果设备要对新ID信息作出响应,则在某些使用场景下,该OS会遇到不可恢复的错误,比如作为响应接收识别帧的命令。第二组选择命令由设备根据与当前执行固件对应的ID信息进行处理,无论在固件更新之后是否发生电力循环。例如,在206中(图2)或307中(图3)操作的同时,响应于第二组的命令,设备向主机提供新ID信息(对应于新固件)。例如,无论电力循环是否发生在下载新固件与启动之间,比如在设备利用新固件启动时从写入有新ID信息的阴影VPD区域和/或日志提供新ID信息,。
在与图2和/或图3有关的各种实施方式中,经由一个或多个模式启用(禁用)延迟固件更新效果的至少一部分的可见性。例如,在“延迟”模式下,第一模式启用实施方式的操作根据图2而定。在“非延迟”模式下,第一模式启用实施方式的操作根据图2而定,除了不存在防止修改填充ID信息的情况之外(例如,跳过203,流程响应于利用新固件操作的命令从202进入204)。206中的操作然后符合新固件以及与该新固件对应的填充ID信息。再如,在“延迟”模式下,第二模式启用实施方式的操作根据图3而定。在“非延迟”模式下,第二模式启用实施方式的操作根据图3而定,除了不存在来自主机的接收ID信息的命令之外(例如,跳过306,流程从305进入307),从而留下通过启动写入的填充ID信息。307中的操作然后符合新固件以及与该新固件对应的填充ID信息。
在与图2和/或图3有关的各种实施方式中,存储最新固件更新和/或一个或多个先前固件更新的结果(例如,通过启动/执行更新固件产生的固件图像和/或ID信息)。存储先前固件更新结果允许通过例如从先前固件图像启动来在固件更新范围外“回滚”。存储先前固件更新结果使设备能够响应于(供应商特定)主机命令以提供先前ID信息(例如,与先前固件更新有关)。存储最新固件更新结果使设备能够响应于(供应商特定)主机命令以提供另外进行延迟可见性处理的ID信息。
相对于图2和图3的设备和主机的示例分别为图1B和图1C的SSD101和主机102。相对于图2和图3的固件存储的示例为图1B和图1C的固件存储106。相对于图2和图3的ID信息的所有或任意部分的存储的示例为图1B和图1C的选择ID信息存储107的所有或任意部分。“旧”固件的示例包括工厂安装的固件、OEM安装的固件、以及用户安装的固件(例如,来自先前下载)。
在各种实施方式中,例如利用一个或多个状态机来实现图2和图3描述的操作和/或功能的所有或任意部分。状态机的示例性实现包括硬件(例如,逻辑门和/或电路、专用状态机电路或硬连线控制电路)、软件(例如,固件或微码)或硬件和软件的组合。在某些实施方式中,状态机中的一个或多个至少部分经由进行更新的固件来实现。在各种实施方式中,状态机中的一个或多个部分经由图1A的SSD控制器100、部分经由CPU内核172执行的固件和/或部分经由存储在图1B和图1C的固件存储106中的固件来实现。
在各种实施方式中,图2和图3描述的操作和/或功能的所有或任意部分例如通过图1A的身份管理182或根据图1A的身份管理182来实现。在某些实施方式中,电力移除和施加(比如相对于图2的206P和图3的307P)经由设备的控制器的电路中包括的上电复位电路(例如,图1A的SSD控制器100中包括的电路)来确定。
在各种实施方式中,相对于图2和/或图3中描述的ID信息进行的一个或多个操作(例如,保护、解除保护、提供、接收、读取或写入)包括访问固件存储106的所有或任意部分。例如,在某些实施方式中,图2的203和207包括写入固件存储106的至少一部分(比如设置并清除指示保护ID信息免受修改的标志)。再如,在某些实施方式中,图3的302和306分别包括读取并写入固件存储106的至少一部分。
在各种实施方式中,HBA将主机的元件(例如,一个或多个处理器和一个或多个存储器)耦接至设备,例如存储设备比如SATA驱动器。将HBA耦接至处理器和/或存储器至少部分经由一个或多个设备通信接口、总线和/或信道(比如PCIe接口)进行。一些处理器执行与设备通信的OS和/或驱动软件。在某些实施方式中,主机的元件与HBA之间的传输与AHCI兼容,并且T13兼容ATA命令通过HBA传递至设备的SSD的SATA或PCIe接口。在其他实施方式中,主机的元件与HBA之间的传输与快速NVM兼容,并且具有至少一些属性的类似于T13兼容ATA命令的命令通过HBA传递至设备的SSD的PCIe接口。在某些实施方式中,HBA包括在主机中,而在其他实施方式中,HBA包括在设备中。在某些实施方式中,省略HBA,并且设备耦接至(没有明确的HBA)一个或多个设备通信接口、总线和/或信道(比如PCIe接口)。
例如,在图1B的背景下,主机102包括允许在主机上运行的软件(例如,OS105和/或相关联的驱动程序)与SSD101(具有主机接口111中包括的SATA兼容主机接口)之间进行通信的HBA。通信包括将命令从软件传递至SSD。传送命令经由AHCI进行,并将T13兼容ATA命令提供给SSD的SATA接口。因此,图2的201D和203A以及图3的301R、302D、303A和305W经由AHCI传送进行传输。
再如,在图1C的背景下,主机102包括允许与中间控制器103通信的芯片组,并且中间接口104和外部接口110是PCIe兼容的(例如,SSD101具有主机接口111中包括的PCIe接口)。芯片组和中间控制器103允许在主机的OS和/或驱动软件与SSD101之间进行通信,包括传递命令。传送命令经由快速NVM进行,并将具有至少一些属性的类似于T13兼容ATA命令的命令提供给SSD的PCIe接口。因此,图2的201D和203A以及图3的301R、302D、303A和305W经由快速NVM传送进行传输。
描述了各种实施方式,比如与计算主机耦接的存储设备的实施方式,其中存储设备经启用以管理计算主机看到的固件更新效果。适用于存储设备和计算主机的技术通常适用于与主机耦接的设备的各种实施方式,其中该设备经启用以管理主机看到的固件更新效果。以SSD作为示例性存储设备描述了各种实施方式。适用于基于SSD的存储设备的技术同样适用于基于HDD的存储设备,以及基于其他非易失性存储技术的存储设备的各种实施方式。
示例性实现技术
在某些实施方式中,由例如具有闪存的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)兼容。一个或多个程序指令、语言语句或二进制指令任选存储在一个或多个计算机可读存储介质元件上。在各种实施方式中,一些、所有或各个部分的程序指令实现为一种或多种功能、例程、子例程、线内例程、过程、宏或其部分。
结论
在该说明书中作出的某些选择仅仅是便于制备文本和附图,除非有相反的指示,否则这些选择本身不应解释为表达所述实施方式的结构或操作相关的额外信息。选择的示例包括:用于数字编号的设计的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如,插图编号或数字标志符)的特定组织或分配。
词语“包括(includes)”或“包括(including)”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不指传达物理包含物,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是示例性的,而不是限制性的。
应理解,构造、布置和使用的许多变化可能与说明书一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速率和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是示例性的,且不应被解释为限制所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变化。同样地,除非特别说明与此相反,否则指定的值范围、使用的最高值和最低值或其他特定的规范(比如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述那些实施方式,期望跟踪实现技术的改进和变化,且不应被解释为限制。
可采用本技术已知的功能等效的技术,而不是用于实现各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某些方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形状因数和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议或通信链路;以及当根据特定应用的独特工程和商业限制实现在本文中描述的概念时预期的其他变化。
已通过超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或特征,且无需改变剩余元件之间的基本合作。因此,应理解大部分公开的细节不需要实现所描述的实施方式的各个方面。在剩余元件可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计的所有这些变化是在由所描述的实施方式传达的教学上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的实用性,且并不仅限于所描述的实施方式的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (20)
1.一种存储设备,包括:
非易失性存储器;
用于耦接至计算主机的构件;
用于管理所述非易失性存储器以存储第一固件、第一固件修订标识符、第二固件、以及第二固件修订标识符的构件;
用于从所述计算主机接收所述第一固件的构件,所述第一固件与所述第一固件修订标识符相关联;
用于从所述计算主机接收所述第二固件的构件,该用于接收所述第二固件的构件能够在用于接收所述第一固件的构件之后操作,所述第二固件与所述第二固件修订标识符相关联;
用于向所述计算主机发送和从所述计算主机接收所述第一固件的所述第一固件修订标识符的构件,该用于发送和接收的构件对来自所述计算主机的特定命令类型进行响应并且能够在所述设备正在执行所述第二固件时且在发生特定事件之前操作从而确保在此期间返回所述计算主机的是所述第一固件修订标识符,并且
其中,所述第一固件修订标识符的返回使在计算主机上执行的操作系统(OS)能够在所述设备执行所述第一固件的整个过程中且在执行所述第二固件直至所述特定事件期间,响应于返回固件修订标识符的值无变化,继续执行而不检测到错误。
2.根据权利要求1所述的设备,其中,所述特定事件是所述设备的电力循环。
3.根据权利要求1所述的设备,进一步包括用于将所述第二固件修订标识符返回所述计算主机的构件,该用于返回所述第二固件修订标识符的构件能够在所述设备正在执行所述第二固件时且在发生所述特定事件之后操作,并对来自所述计算主机的所述特定命令类型进行响应。
4.根据权利要求1所述的设备,其中,所述OS包括Windows OS的版本。
5.根据权利要求1所述的设备,其中,所述特定命令类型包括串行高级技术附件(SATA)识别命令类型。
6.根据权利要求1所述的设备,其中,所述特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取的重要产品数据(VPD)命令类型。
7.一种存储设备,包括:
非易失性存储器;
用于管理所述非易失性存储器以存储第一固件、第一固件修订标识符、第二固件、以及第二固件修订标识符的构件,所述设备能够与计算主机耦接;
用于从所述计算主机接收所述第一固件的构件,所述第一固件与所述第一固件修订标识符相关联;
用于从所述计算主机接收所述第二固件的构件,该用于接收所述第二固件的构件能够在用于接收所述第一固件的构件之后操作,所述第二固件与所述第二固件修订标识符相关联;
用于向所述计算主机发送和从所述计算主机接收所述第一固件的所述第一固件修订标识符的构件,该用于发送和接收的构件对来自所述计算主机的第一命令类型进行响应并且能够在所述设备正在执行所述第二固件时且在发生特定事件之前操作从而确保在此期间返回所述计算主机的是所述第一固件修订标识符;
用于将所述第二固件修订标识符返回所述计算主机的构件,该用于返回所述第二固件修订标识符的构件对来自所述计算主机的第二命令类型进行响应并且能够在所述设备正在执行所述第二固件时操作;
其中,所述第一命令类型是读取身份命令类型;并且
其中,所述第二命令类型是供应商特定命令类型。
8.根据权利要求7所述的设备,其中,所述供应商特定命令类型包括供应商特定固件识别信息读取命令类型。
9.根据权利要求7所述的设备,其中,所述读取身份命令类型包括串行高级技术附件(SATA)识别命令类型。
10.根据权利要求7所述的设备,其中,所述读取身份命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取的重要产品数据(VPD)命令类型。
11.根据权利要求7所述的设备,其中,所述读取身份命令类型包括在被处理使得返回所述第二固件修订标识符而不是所述第一固件修订标识符时,在计算主机上执行的操作系统(OS)遇到不可恢复的错误的命令类型。
12.根据权利要求11所述的设备,其中,所述OS包括Windows OS的版本。
13.一种存储设备,包括:
第一构件,用于根据与当前固件修订标识符相关联的当前固件来操作所述存储设备,所述第一构件包括用于将所述当前固件修订标识符返回与所述存储设备通信的计算主机的第二构件;
第三构件,能够在所述第一构件之后操作,用于接收与不同于所述当前固件修订标识符的新固件修订标识符相关联的新固件;
第四构件,能够在所述第三构件之后操作,用于根据所述新固件来操作所述存储设备,所述第四构件包括用于将所述当前固件修订标识符返回所述计算主机的第五构件;
第六构件,能够在所述第三构件之后操作且响应于电力循环,用于根据所述新固件来操作所述存储设备,所述第六构件包括用于将所述新固件修订标识符返回所述计算主机的第七构件;
用于向所述计算主机发送和从所述计算主机接收所述当前固件的所述当前固件修订标识符的构件,该用于发送和接收的构件对来自所述计算主机的特定命令类型进行响应并且能够在所述设备正在执行所述新固件时且在发生特定事件之前操作从而确保在此期间返回所述计算主机的是所述当前固件修订标识符;
非易失性存储器,能够存储所述新固件的至少一部分,并且
其中,以上三个用于返回的构件各自对来自所述计算主机的多个命令类型中的特定的一个的相应实例进行响应,所述特定命令类型使得:
(a)当第一相应固件修订标识符响应于第一所述相应实例返回至所述计算主机时,
(b)当第二相应固件修订标识符响应于第二所述相应实例返回至所述计算主机时,并且
(c)在返回所述第一相应固件修订标识符与返回所述第二相应固件修订标识符之间不发生电力循环的情况下,
则在所述计算主机上执行的操作系统(OS)响应于所述第二相应固件修订标识符的返回而遇到不可恢复的错误。
14.根据权利要求13所述的设备,其中,所述OS包括Windows OS的版本。
15.根据权利要求13所述的设备,其中,所述特定命令类型包括串行高级技术附件(SATA)识别命令类型。
16.根据权利要求13所述的设备,其中,所述特定命令类型包括小型计算机系统接口(SCSI)读取的重要产品数据(VPD)命令类型。
17.根据权利要求13所述的设备,其中,特定命令类型包括串行连接的小型计算机系统接口(串行SCSI)(SAS)读取的重要产品数据(VPD)命令类型。
18.根据权利要求13所述的设备,其中,用于接收的构件包括用于保存所述当前固件修订标识符直至所述电力循环的构件。
19.根据权利要求13所述的设备,其中,用于接收的构件包括用于保护所述当前固件修订标识符免受修改直至所述电力循环的构件。
20.根据权利要求13所述的设备,其中,用于接收的构件包括用于向所述计算主机提供所述当前固件修订标识符的构件以及用于从所述计算主机恢复所述当前固件修订标识符的构件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161494262P | 2011-06-07 | 2011-06-07 | |
US61/494,262 | 2011-06-07 | ||
CN201280031049.2A CN103620567A (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280031049.2A Division CN103620567A (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159699A CN105159699A (zh) | 2015-12-16 |
CN105159699B true CN105159699B (zh) | 2022-01-25 |
Family
ID=47296715
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510419234.4A Active CN105159699B (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
CN201280031049.2A Pending CN103620567A (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
CN201610879541.5A Active CN106990977B (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280031049.2A Pending CN103620567A (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
CN201610879541.5A Active CN106990977B (zh) | 2011-06-07 | 2012-06-06 | 主机看到的设备固件更新效果的管理 |
Country Status (6)
Country | Link |
---|---|
US (3) | US9223563B2 (zh) |
EP (1) | EP2718828A4 (zh) |
JP (1) | JP6082389B2 (zh) |
KR (2) | KR101524096B1 (zh) |
CN (3) | CN105159699B (zh) |
WO (1) | WO2012170521A2 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667716A (zh) | 2009-12-18 | 2012-09-12 | 惠普发展公司,有限责任合伙企业 | 使用固件更新应用程序更新部件的固件的方法及装置 |
CN105159699B (zh) | 2011-06-07 | 2022-01-25 | Lsi公司 | 主机看到的设备固件更新效果的管理 |
US8972973B2 (en) | 2012-06-27 | 2015-03-03 | Microsoft Technology Licensing, Llc | Firmware update discovery and distribution |
US9235404B2 (en) | 2012-06-27 | 2016-01-12 | Microsoft Technology Licensing, Llc | Firmware update system |
TW201441932A (zh) * | 2013-04-19 | 2014-11-01 | Nuvoton Technology Corp | 處理裝置與系統程式更新方法 |
JP2015102889A (ja) | 2013-11-21 | 2015-06-04 | レノボ・シンガポール・プライベート・リミテッド | ファームウェアの更新方法、電子機器、コンピュータおよびコンピュータ・プログラム |
JP6281413B2 (ja) * | 2014-05-28 | 2018-02-21 | 富士通株式会社 | ファームウェア更新装置、ストレージ制御装置およびプログラム |
US9626179B2 (en) | 2014-07-21 | 2017-04-18 | Sandisk Technologies Llc | Method and system for using a ROM patch |
US9395975B2 (en) * | 2014-07-21 | 2016-07-19 | Sandisk Technologies Llc | Method and system for generating a ROM patch |
US10430092B1 (en) * | 2014-07-28 | 2019-10-01 | Rambus Inc. | Memory controller systems with nonvolatile memory for storing operating parameters |
JP6484965B2 (ja) * | 2014-09-03 | 2019-03-20 | 富士通株式会社 | ストレージ装置、ファームウェアの更新方法、およびファームウェアの更新プログラム |
KR102261815B1 (ko) | 2014-10-30 | 2021-06-07 | 삼성전자주식회사 | 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
US9459857B2 (en) * | 2015-01-21 | 2016-10-04 | HGST Netherlands B.V. | Managing wear of system areas of storage devices |
KR102400384B1 (ko) * | 2015-06-26 | 2022-05-23 | 삼성전자 주식회사 | 외장 메모리를 구비하는 전자장치 및 그 동작 방법 |
CN111488048B (zh) * | 2016-02-14 | 2023-05-16 | 华为技术有限公司 | 一种电源管理方法以及系统 |
US9913081B1 (en) * | 2016-10-13 | 2018-03-06 | GM Global Technology Operations LLC | Method and device for communicating with a vehicle system module while conserving power by using two different short range wireless communication (SRWC) protocols |
DE102017205274A1 (de) * | 2017-03-29 | 2018-10-04 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Aktualisieren eines Programmes |
US10747437B2 (en) * | 2017-05-02 | 2020-08-18 | Quanta Computer Inc. | SAS hard disk drive update via management controller |
US20190044809A1 (en) * | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
US10642693B2 (en) | 2017-09-06 | 2020-05-05 | Western Digital Technologies, Inc. | System and method for switching firmware |
US10754580B2 (en) | 2017-10-23 | 2020-08-25 | Micron Technology, Inc. | Virtual partition management in a memory device |
US10642603B2 (en) | 2018-01-16 | 2020-05-05 | Nutanix, Inc. | Scheduling upgrades in distributed computing systems |
US11099831B2 (en) * | 2018-02-08 | 2021-08-24 | Micron Technology, Inc. | Firmware update in a storage backed memory system |
CN108415862B (zh) * | 2018-03-05 | 2021-06-01 | 青岛海信宽带多媒体技术有限公司 | 光模块的通道保存方法、装置及光模块 |
US10838754B2 (en) | 2018-04-27 | 2020-11-17 | Nutanix, Inc. | Virtualized systems having hardware interface services for controlling hardware |
US20200004522A1 (en) * | 2018-06-27 | 2020-01-02 | Hewlett Packard Enterprise Development Lp | Selective download of a portion of a firmware bundle |
DE102018214451A1 (de) * | 2018-08-27 | 2020-02-27 | Robert Bosch Gmbh | Verfahren zum Betreiben einer Recheneinrichtung |
US10635345B2 (en) | 2018-08-31 | 2020-04-28 | Micron Technology, Inc. | Live firmware activation in a memory system |
US10838711B2 (en) | 2018-09-20 | 2020-11-17 | Mellanox Technologies Tlv Ltd. | In-service software/firmware update |
WO2020131073A1 (en) * | 2018-12-20 | 2020-06-25 | Hewlett-Packard Development Company, L.P. | Conditional firmware images |
CN110704334B (zh) * | 2019-09-25 | 2021-10-15 | 苏州浪潮智能科技有限公司 | 一种重要产品数据管理的方法、系统及设备 |
CN111079124B (zh) * | 2019-12-21 | 2023-02-10 | 广州小鹏汽车科技有限公司 | 安全芯片激活方法、装置、终端设备及服务器 |
US11650743B2 (en) * | 2020-02-03 | 2023-05-16 | Dell Products L.P. | Updating storage drive firmware |
CN113495743A (zh) * | 2020-03-19 | 2021-10-12 | 瑞昱半导体股份有限公司 | 储存电路以及运作方法 |
KR20220033311A (ko) | 2020-09-09 | 2022-03-16 | 삼성전자주식회사 | 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 |
US11741232B2 (en) | 2021-02-01 | 2023-08-29 | Mellanox Technologies, Ltd. | Secure in-service firmware update |
US11750522B2 (en) * | 2021-04-19 | 2023-09-05 | Avago Technologies International Sales Pte. Limited | System and method for reducing congestion in a network |
US11709667B2 (en) | 2021-06-14 | 2023-07-25 | EMC IP Holding Company LLC | Non-disruptive firmware upgrade of symmetric hardware accelerator systems |
US11513787B1 (en) * | 2021-06-14 | 2022-11-29 | EMC IP Holding Company LLC | Non-disruptive firmware upgrade of asymmetric hardware accelerator systems |
US11922170B2 (en) | 2021-06-28 | 2024-03-05 | Samsung Electronics Co., Ltd. | Systems and method for bootup activation of firmware images |
US11899945B2 (en) * | 2021-10-03 | 2024-02-13 | Silicon Motion, Inc. | Method and apparatus for performing communications specification version control of memory device in predetermined communications architecture with aid of compatibility management, and associated computer-readable medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1438568A (zh) * | 2002-01-25 | 2003-08-27 | 佳能株式会社 | 打印系统及控制其用户界面的方法 |
CN101046749A (zh) * | 2006-03-31 | 2007-10-03 | 联想(北京)有限公司 | 一种芯片固件升级方法 |
US20080040713A1 (en) * | 2004-05-31 | 2008-02-14 | Stmicroelectronics Pvt. Ltd | Method for remotely upgrading the firmware of a target device using wireless technology |
Family Cites Families (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432927A (en) * | 1992-06-17 | 1995-07-11 | Eaton Corporation | Fail-safe EEPROM based rewritable boot system |
JP3437083B2 (ja) * | 1998-02-23 | 2003-08-18 | 富士通株式会社 | 入出力制御装置およびそのファームウェア更新方法 |
US6237091B1 (en) * | 1998-10-29 | 2001-05-22 | Hewlett-Packard Company | Method of updating firmware without affecting initialization information |
JP2001216167A (ja) * | 2000-02-04 | 2001-08-10 | Minolta Co Ltd | 本体と周辺装置からなるシステム |
JP2001331327A (ja) * | 2000-05-24 | 2001-11-30 | Matsushita Electric Ind Co Ltd | 電子機器 |
US7065769B1 (en) | 2000-06-30 | 2006-06-20 | Intel Corporation | Method for automatically installing and updating drivers |
JP2002244874A (ja) * | 2001-02-15 | 2002-08-30 | Toshiba Corp | 情報処理装置およびファームウェア更新方法 |
GB0116568D0 (en) * | 2001-07-06 | 2001-08-29 | Ncipher Corp Ltd | Firmware validation |
US7320126B2 (en) * | 2001-11-06 | 2008-01-15 | Sandisk Corporation | Implementation of in system programming to update firmware on memory cards |
JP4189570B2 (ja) * | 2001-12-28 | 2008-12-03 | コニカミノルタビジネステクノロジーズ株式会社 | 画像処理装置、ファームウェアの送信方法、及び画像処理装置の管理システム |
TW591524B (en) * | 2002-03-13 | 2004-06-11 | Insyde Software Corp | Updating method of keyboard controller in notebook computer |
US20040083469A1 (en) * | 2002-10-23 | 2004-04-29 | Ping-Sheng Chen | Method for updating firmware of optical disk system |
US20040236932A1 (en) * | 2003-05-20 | 2004-11-25 | Zhahong Zhang | Apparatus and method for firmware upgrade in microprocessor-based processing units |
US7222339B2 (en) * | 2003-06-13 | 2007-05-22 | Intel Corporation | Method for distributed update of firmware across a clustered platform infrastructure |
US20050028172A1 (en) * | 2003-07-30 | 2005-02-03 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for installing software |
US7865907B2 (en) | 2003-09-25 | 2011-01-04 | Fisher-Rosemount Systems, Inc. | Method and apparatus for providing automatic software updates |
TWI229818B (en) * | 2003-12-15 | 2005-03-21 | Wistron Corp | Method and device for updating firmware |
KR100987628B1 (ko) * | 2004-02-07 | 2010-10-13 | 엘지전자 주식회사 | 엠비디드 컨트롤러의 펌웨어 갱신방법 및 갱신용 펌웨어저장매체 |
US7904895B1 (en) * | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
US7334117B2 (en) * | 2004-08-04 | 2008-02-19 | National Instruments Corporation | Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device |
KR100594305B1 (ko) * | 2004-12-17 | 2006-06-30 | 삼성전자주식회사 | 시리얼 ata 인터페이스를 이용하여 광학 디스크드라이버의 프로그램 코드를 업데이트하는 장치 및 그 방법 |
US7603562B2 (en) * | 2005-02-02 | 2009-10-13 | Insyde Software Corporation | System and method for reducing memory requirements of firmware |
JP4679943B2 (ja) * | 2005-03-23 | 2011-05-11 | ヒタチグローバルストレージテクノロジーズネザーランドビーブイ | データ記憶装置及びその不揮発性メモリ内データ書き換え処理方法 |
US7748031B2 (en) * | 2005-07-08 | 2010-06-29 | Sandisk Corporation | Mass storage device with automated credentials loading |
JP2007025933A (ja) * | 2005-07-14 | 2007-02-01 | Hitachi Ltd | ストレージシステム及びそのファームウェア自動更新方法 |
US20070288986A1 (en) * | 2006-06-13 | 2007-12-13 | Candelore Brant L | Method and system for downloading content to a target device |
KR100775431B1 (ko) * | 2006-02-20 | 2007-11-12 | 삼성전자주식회사 | 임베디드 시스템 및 임베디드 시스템의 펌웨어 업데이트방법 |
US8707290B2 (en) * | 2006-02-22 | 2014-04-22 | Dell Products L.P. | Firmware update in an information handling system employing redundant management modules |
US8707297B2 (en) * | 2006-07-26 | 2014-04-22 | Dell Products L.P. | Apparatus and methods for updating firmware |
KR100801014B1 (ko) * | 2006-08-21 | 2008-02-04 | 삼성전자주식회사 | Dos 부트 프로그램을 내장한 디스크를 구비하는 하드 디스크 드라이브와 그를 포함하는 컴퓨터 시스템, 상기 하드 디스크 드라이브의 펌웨어 다운로드 방법 및 그를 포함하는 기록 매체 |
US8010959B2 (en) * | 2006-11-29 | 2011-08-30 | Sony Ericsson Mobile Communications Ab | System and method for updating device drivers |
US8046776B1 (en) * | 2006-11-30 | 2011-10-25 | Marvell International Ltd. | Method and apparatus for transferring firmware between an operating system device in a host |
KR100800589B1 (ko) * | 2006-12-20 | 2008-02-04 | 엘지전자 주식회사 | 정보 처리 장치 및 그 운용방법 |
US8776037B2 (en) * | 2007-01-04 | 2014-07-08 | International Business Machines Corporation | Apparatus and method to update multiple devices disposed in a computing system |
CN101291231A (zh) * | 2007-04-17 | 2008-10-22 | 鸿富锦精密工业(深圳)有限公司 | 网络设备及其重启方法 |
KR20090023863A (ko) * | 2007-09-03 | 2009-03-06 | 엘지이노텍 주식회사 | 펌웨어 업데이트 시스템 및 방법 |
JP2009116772A (ja) * | 2007-11-09 | 2009-05-28 | Hitachi-Lg Data Storage Inc | 光ディスク装置、および、そのファームウェア更新方法 |
KR20090060774A (ko) * | 2007-12-10 | 2009-06-15 | 한국전자통신연구원 | 임베디드 시스템의 펌웨어 및 데이터 미러링 장치 및 방법 |
US8201161B2 (en) * | 2008-01-07 | 2012-06-12 | Lenovo (Singapore) Pte. Ltd. | System and method to update device driver or firmware using a hypervisor environment without system shutdown |
US7975084B1 (en) * | 2008-02-06 | 2011-07-05 | American Megatrends, Inc. | Configuring a host computer using a service processor |
US20090254898A1 (en) * | 2008-04-08 | 2009-10-08 | Microsoft Corporation | Converting a device from one system to another |
US8122298B2 (en) * | 2008-06-12 | 2012-02-21 | Lsi Corporation | Methods and systems for capturing error information in a SATA communication system |
US8250246B2 (en) * | 2008-07-09 | 2012-08-21 | Finisar Corporation | Loading and executing firmware module without resetting operation |
US8694989B1 (en) * | 2008-07-17 | 2014-04-08 | Apple Inc. | Virtual installation environment |
US8332839B2 (en) * | 2008-08-15 | 2012-12-11 | Lsi Corporation | Method and system for modifying firmware image settings within data storage device controllers |
JP5102918B2 (ja) * | 2008-09-02 | 2012-12-19 | 株式会社日立製作所 | ストレージ装置及びファームウェア更新指示方法 |
US20100064048A1 (en) * | 2008-09-05 | 2010-03-11 | Hoggan Stuart A | Firmware/software validation |
US8566571B2 (en) * | 2008-12-12 | 2013-10-22 | Novell, Inc. | Pre-boot securing of operating system (OS) for endpoint evaluation |
US8856776B2 (en) * | 2009-02-05 | 2014-10-07 | International Business Machines Corporation | Updating firmware without disrupting service |
JP5342302B2 (ja) * | 2009-03-30 | 2013-11-13 | 株式会社日立ソリューションズ | ファームウェア更新システム、ファームウェア配信サーバ、及びプログラム |
JP5478986B2 (ja) * | 2009-08-21 | 2014-04-23 | 株式会社日立ソリューションズ | 情報機器及びプログラム |
US9565207B1 (en) * | 2009-09-04 | 2017-02-07 | Amazon Technologies, Inc. | Firmware updates from an external channel |
US8214653B1 (en) * | 2009-09-04 | 2012-07-03 | Amazon Technologies, Inc. | Secured firmware updates |
US8971538B1 (en) * | 2009-09-08 | 2015-03-03 | Amazon Technologies, Inc. | Firmware validation from an external channel |
US8381264B1 (en) * | 2009-09-10 | 2013-02-19 | Amazon Technologies, Inc. | Managing hardware reboot and reset in shared environments |
US8589302B2 (en) * | 2009-11-30 | 2013-11-19 | Intel Corporation | Automated modular and secure boot firmware update |
US20120110562A1 (en) * | 2010-10-27 | 2012-05-03 | David Heinrich | Synchronized firmware update |
US9146726B2 (en) * | 2010-12-16 | 2015-09-29 | Netapp, Inc. | System and method for firmware update for network connected storage subsystem components |
CN105159699B (zh) | 2011-06-07 | 2022-01-25 | Lsi公司 | 主机看到的设备固件更新效果的管理 |
US8966466B2 (en) * | 2012-04-04 | 2015-02-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System for performing firmware updates on a number of drives in an array with minimum interruption to drive I/O operations |
CN102855151B (zh) * | 2012-08-21 | 2016-06-08 | 武汉电信器件有限公司 | 不打断业务的光模块固件在应用升级方法 |
CN104903853B (zh) * | 2013-01-15 | 2018-09-04 | 慧与发展有限责任合伙企业 | 动态固件更新 |
US9355674B2 (en) * | 2013-07-19 | 2016-05-31 | Seagate Technology Llc | Data storage device and system having adaptive brownout detection |
-
2012
- 2012-06-06 CN CN201510419234.4A patent/CN105159699B/zh active Active
- 2012-06-06 KR KR1020147018185A patent/KR101524096B1/ko active IP Right Grant
- 2012-06-06 WO PCT/US2012/041088 patent/WO2012170521A2/en active Application Filing
- 2012-06-06 JP JP2014514587A patent/JP6082389B2/ja not_active Expired - Fee Related
- 2012-06-06 CN CN201280031049.2A patent/CN103620567A/zh active Pending
- 2012-06-06 KR KR1020137034919A patent/KR101466560B1/ko active IP Right Grant
- 2012-06-06 EP EP12796844.4A patent/EP2718828A4/en not_active Withdrawn
- 2012-06-06 CN CN201610879541.5A patent/CN106990977B/zh active Active
- 2012-06-06 US US14/119,375 patent/US9223563B2/en active Active
-
2015
- 2015-12-09 US US14/964,139 patent/US9766878B2/en active Active
-
2017
- 2017-08-25 US US15/686,221 patent/US10365920B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1438568A (zh) * | 2002-01-25 | 2003-08-27 | 佳能株式会社 | 打印系统及控制其用户界面的方法 |
US20080040713A1 (en) * | 2004-05-31 | 2008-02-14 | Stmicroelectronics Pvt. Ltd | Method for remotely upgrading the firmware of a target device using wireless technology |
CN101046749A (zh) * | 2006-03-31 | 2007-10-03 | 联想(北京)有限公司 | 一种芯片固件升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106990977B (zh) | 2023-09-15 |
US9223563B2 (en) | 2015-12-29 |
KR101466560B1 (ko) | 2014-11-28 |
US20180004504A1 (en) | 2018-01-04 |
US20160085541A1 (en) | 2016-03-24 |
CN103620567A (zh) | 2014-03-05 |
KR20140092413A (ko) | 2014-07-23 |
KR20140010999A (ko) | 2014-01-27 |
WO2012170521A2 (en) | 2012-12-13 |
US20140189673A1 (en) | 2014-07-03 |
EP2718828A2 (en) | 2014-04-16 |
JP2014519662A (ja) | 2014-08-14 |
CN105159699A (zh) | 2015-12-16 |
WO2012170521A3 (en) | 2013-02-21 |
US10365920B2 (en) | 2019-07-30 |
US9766878B2 (en) | 2017-09-19 |
CN106990977A (zh) | 2017-07-28 |
JP6082389B2 (ja) | 2017-02-15 |
EP2718828A4 (en) | 2014-11-05 |
KR101524096B1 (ko) | 2015-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159699B (zh) | 主机看到的设备固件更新效果的管理 | |
US10936251B2 (en) | I/O device and computing host interoperation | |
US9461904B2 (en) | Selective enablement of operating modes or features via host transfer rate detection | |
TWI512452B (zh) | 資料儲存系統 | |
JP5638686B2 (ja) | 記憶装置システムの論理ブロックアドレス割り当て解除管理およびデータハードニング | |
KR102155191B1 (ko) | 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 | |
KR101467941B1 (ko) | 비휘발성 저장부에 대한 가변 오버프로비저닝 | |
US20120093318A1 (en) | Encryption Key Destruction For Secure Data Erasure | |
US9396104B1 (en) | Accessing compressed data of varying-sized quanta in non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |