CN110770690B - 用于切换固件的系统和方法 - Google Patents

用于切换固件的系统和方法 Download PDF

Info

Publication number
CN110770690B
CN110770690B CN201880040948.6A CN201880040948A CN110770690B CN 110770690 B CN110770690 B CN 110770690B CN 201880040948 A CN201880040948 A CN 201880040948A CN 110770690 B CN110770690 B CN 110770690B
Authority
CN
China
Prior art keywords
firmware
debug
module
storage
switch
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
Application number
CN201880040948.6A
Other languages
English (en)
Other versions
CN110770690A (zh
Inventor
B.坎特
J.G.哈恩
I.古塞夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN110770690A publication Critical patent/CN110770690A/zh
Application granted granted Critical
Publication of CN110770690B publication Critical patent/CN110770690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种用于由存储控制器自主地切换固件的系统和方法。所述系统和所述方法包括由所述存储控制器的切换器模块基于调试条件的参数的值来确定是否满足所述调试条件。所述调试条件指示包括便于主机设备与所述存储系统的非易失性存储装置之间的通信的所述存储控制器的所述存储系统内的问题。所述系统和所述方法还包括由所述切换器模块基于所述切换器模块确定已经满足所述调试条件来将所述存储系统的操作从主固件切换到次固件。从所述主固件到所述次固件的所述切换自动地进行而不需要来自所述主机设备的切换请求。

Description

用于切换固件的系统和方法
相关申请的交叉引用
本申请要求2017年9月6日提交的美国申请15/696,913的优先权,该申请的全部内容以引用方式并入。
背景技术
提供以下描述以帮助读者进行理解。所提供的信息或所引用的参考文献都不被认为是现有技术。
非易失性存储设备用于范围为从简单的消耗性电子器件到复杂的基于企业的计算系统的多种应用中。至少一些非易失性存储设备被配置为经由存储控制器与主机设备通信。存储控制器执行固件级代码以操作、管理和以其他方式控制非易失性存储设备以便于主机设备与非易失性存储设备之间的通信。非易失性存储器express(NVMe)标准是概述经由存储控制器在主机设备与非易失性存储设备之间的通信协议的接口的示例。NVMe标准的特征中的一个允许在非易失性存储设备上同时地安装多个固件版本。然而,存储控制器在管理和操作多个固件版本方面是受限的。
发明内容
根据本公开的一些方面,公开了方法。该方法包括由存储控制器的切换器模块基于调试条件的参数的值来确定是否满足该调试条件。调试条件指示包括便于主机设备与存储系统的非易失性存储装置之间的通信的存储控制器的存储系统内的问题。该方法还包括由切换器模块基于切换器模块确定已经满足调试条件来将存储系统的操作从主固件切换到次固件。从主固件到次固件的切换自动地进行而不需要来自主机设备的切换请求。
根据本公开的一些其他方面,公开了存储控制器。该存储控制器包括多个固件插槽,其中该多个固件插槽中的第一插槽中安装有主固件,并且该多个固件插槽中的第二插槽中安装有次固件。该存储控制器还包括切换器模块,该切换器模块被配置为基于满足一个或多个条件来在主固件与次固件之间自动地切换。切换器模块在主固件与次固件之间进行切换而不需要来自与存储控制器通信的主机设备的切换请求。
根据本公开的又一些方面,公开了存储系统。该存储系统包括主机设备、非易失性存储装置和存储控制器。存储控制器被配置为便于主机设备与非易失性存储装置之间的通信。另外,存储控制器包括切换器模块,该切换器模块被配置为基于满足一个或多个条件来在主固件与次固件之间自动地切换。切换器模块在主固件与次固件之间进行切换而不需要来自主机设备的切换请求。
前述发明内容仅是例示性的,并不旨在以任何方式进行限制。除了上述例示性方面、实施方案和特征之外,通过参照以下附图和具体实施方式,另外的方面、实施方案和特征将变得显而易见。
附图说明
图1是根据本公开的一些实施方案的存储系统的示例性框图。
图2是根据本公开的一些实施方案的在存储系统内使用的存储设备基础结构模块的示例性框图。
图3是根据本公开的一些实施方案的概述用于从主固件切换到次固件的操作的示例性流程图。
图4是根据本公开的一些其他实施方案的概述用于从主固件切换到次固件的操作的示例性流程图。
图5是根据本公开的一些实施方案的概述用于从次固件切换到主固件的操作的示例性流程图。
结合附图,从以下描述和所附权利要求书中,本公开的前述和其他特征将变得显而易见。应当理解,这些附图仅描绘了根据本公开的若干实施方案,并且因此不应被认为是对其范围的限制,将通过使用附图以附加的特异性和详细度来描述本公开。
具体实施方式
在以下具体实施方式中,参照构成其一部分的附图。在附图中,除非上下文另外指出,否则类似符号通常标识类似部件。在具体实施方式、附图和权利要求书中描述的例示性实施方案不意味着是限制性的。在不脱离此处呈现的主题的精神或范围的情况下,可以利用其他实施方案,并且可以进行其他改变。应当容易地理解,可以以各种各样不同配置来布置、替换、组合和设计如在本文中大体描述的以及在附图中示出的本公开的各方面,所有这些都作为本公开的一部分来明确地进行构想和制造。
本公开涉及的是存储系统,该存储系统具有存储控制器,该存储控制器用于便于主机设备与非易失性存储装置之间的通信。存储控制器被配置有多个固件插槽,这些固件插槽被配置为运行一种或多种不同类型的固件。例如,在一些实施方案中,多个固件插槽中的一个可以被配置为用于主固件,并且多个固件插槽中的另一个可以被配置为用于次固件。本公开提供了这样的系统和方法,其中存储控制器在主固件与次固件之间自主地切换而不需要来自主机设备的切换请求。
主固件是针对性能和功率优化的一般固件,并且通常期望在存储系统的正常操作期间运行。主固件未配置有调试功能性,并且因此不适合于识别存储系统内的故障。次固件是被配置为执行主固件被配置为执行的操作的全部或其中几个的调试固件。另外地,次固件被配置有调试功能性,以用于收集详细信息并便于诊断存储系统内的问题、毛病或故障。调试固件也可以被配置为在诊断之后修复问题、毛病或故障。调试固件并未针对性能和功率优化,并且因此与主固件相比不太优选。
因此,尽管期望将主固件用于正确地操作的存储系统,但是在期望调试功能性以诊断存储系统内的故障的情况下,就要使用次固件。一般来讲,为了使用次固件,就要在存储系统内进行从主固件到次固件的固件切换。常规地,从主固件到次固件的切换是手动地进行的。例如,在常规方法中,存储设备供应商向存储系统的客户提供次固件,并且客户将次固件手动地安装在非易失性存储装置上。手动安装还要求在存储系统内进行附加改变,诸如更改固件可执行映像、重鉴主固件映像等。在安装次固件后,常规机制还要求客户经由主机设备向存储控制器发送切换请求以在主固件与次固件之间进行切换。另外,当不需要调试功能性时,常规方法要求客户经由主机设备发送另一个切换请求以便于切换回主固件。因此,用于在常规功能性与调试功能性之间进行更新或切换的常规方法要求直接客户参与,是耗时、低效的,并且要求手动地更新固件。
相比之下,本公开提供了一种系统和方法,其中主固件和次固件同时地安装在非易失性存储装置上,并且存储控制器在主固件与次固件之间自主地切换而既不需要任何客户参与也不需要来自主机设备的任何切换请求。具体地,存储控制器包括切换器模块,该切换器模块基于满足某些条件来在主固件与次固件之间自动地切换,如下文更详细地描述。
现在参照图1,示出了根据本公开的一些实施方案的存储系统100的示例性框图。存储系统100包括经由物理接口113与主机设备110通信的存储设备105。存储设备105可以是包括非易失性存储装置115和存储控制器120的固态驱动器(“SSD”)。在其他实施方案中,可以使用其他类型的存储设备。主机设备110可以是被配置为与存储设备105和在本文中未示出的其他部件通信的计算设备。另外,图1中仅示出了存储系统100的一些部件。在其他实施方案中,在本公开的范围内也设想和考虑了部件诸如易失性存储装置、各种接口和一般出现在存储系统中的部件。
主机设备110经由存储控制器120与非易失性存储装置115通信和交互。例如,主机设备110可以发送要存储或写入到非易失性存储装置115中的数据。主机设备110还可以从非易失性存储装置115检索或读取数据。为了与非易失性存储装置115通信,主机设备110可以向存储控制器120发送命令,该存储控制器然后服务于来自非易失性存储装置的那些命令。例如,对于读取操作,主机设备110可以向存储控制器120发送读取命令,并且存储控制器可以通过从非易失性存储装置115读取数据并将数据返回到主机设备110来服务于该读取命令。类似地,对于写入操作,主机设备110可以将写入命令和要写入的数据发送到存储控制器120。存储控制器120可以将数据写入到非易失性存储装置115并然后向主机设备通知数据已经被写入。类似地,主机设备110可以向存储控制器120发送其他命令以在非易失性存储装置115上执行各种操作。
非易失性存储装置115包括具有被配置为存储一个或多个数据位的一个或多个存储器单元的一个或多个存储阵列。非易失性存储装置115可以以多种方式配置。例如,在一些实施方案中,非易失性存储装置115可以被配置为闪存存储装置或其他类型的固态驱动器(“SSD”)存储装置。在其他实施方案中,非易失性存储装置115可以是其他类型的数据存储设备。此外,当被配置为闪存存储装置时,非易失性存储装置115可以是NAND、NOR或另一种类型的闪存存储装置。另外地,非易失性存储装置115内的存储器单元中的每个可以被配置为用于存储多个数据位的多级单元(“MLC”)、用于存储单个数据位的单级单元(“SLC”)或其组合。在本文公开的范围内,设想并考虑了执行本文所述的功能通常需要和/或期望的非易失性存储装置115的其他特征和/或配置。
非易失性存储装置115可以包括内部文件系统125,该内部文件系统可以被配置为配置数据和固件资源的数据库。在一些实施方案中,内部文件系统125可以是闪存文件系统。在其他实施方案中,在内部文件系统125内可以使用其他类型的文件系统。另外,尽管未示出,但是非易失性存储装置115可以包括其他部件,诸如行和列解码器、感测模块、数据锁存器、I/O电路、电池、高速缓存存储器、其他片上电路等,以执行和控制非易失性存储装置的各种操作。在一些实施方案中,一个或多个这种部件可以是存储控制器120的一部分。另外地,尽管已经示出了非易失性存储装置115与存储控制器120分离,但是在一些实施方案中,非易失性存储装置和存储控制器可以一起集成到单个设备(例如,单个芯片或管芯、带有多个管芯的封装等)。
如上文所指出的那样,存储控制器120管理非易失性存储装置115的操作并便于主机设备110与非易失性存储装置之间的通信。因此,存储控制器120包括主机接口130、数据路径135、闪存转换层140和非易失性存储接口145。主机接口130可以是便于主机设备110经由数据路径135与存储控制器120的通信的接口或部件。主机接口可以基于多种主机控制器接口,诸如高级主机控制器接口、通用主机控制器接口、开放式主机控制器接口、非易失性存储器Express(NVMe)控制器接口等。存储控制器120的数据路径135可以包括多种总线、处理单元和其他电路以从主机设备110接收信息/向该主机设备发送信息、处理信息、以及向非易失性存储装置115发送信息/从该非易失性存储装置接收信息。
存储控制器120的闪存转换层140被配置为将从主机设备110接收的逻辑地址映射到非易失性存储装置115的物理地址。非易失性存储接口145被配置为便于存储控制器120与非易失性存储装置115的通信。类似于主机接口130,非易失性存储接口145也可以按照期望或需要以多种方式配置以执行本文描述的功能。
存储控制器120还包括实现存储控制器的各种功能的存储设备基础结构模块150。存储设备基础结构模块150可以被配置为通过运行固件级代码或指令来控制存储控制器120的操作。如下文所讨论的那样,存储设备基础结构模块150也可以被配置为在主固件与次固件之间自主地切换而不需要来自主机设备110的切换请求。以下图2中更详细地描述了存储设备基础结构模块150。
应当理解,这里仅示出了存储控制器120的某些部件。然而,在其他实施方案中,可以在认为执行本文描述的各种功能必需或期望的情况下在存储控制器内提供附加的、更少的或不同的部件。
转到图2,示出了根据本公开的一些实施方案的存储设备基础结构模块200的示例性框图。存储设备基础结构模块200包括多个固件插槽205、切换器模块210、定时器模块215、当前状态日志220、调试日志225和计数器230。应当理解,本文仅示出了存储设备基础结构模块200的某些部件。在其他实施方案中,可以提供执行本文描述的功能可能需要或期望的其他部件。
多个固件插槽205被配置为保持控制、监视、操纵和/或以其他方式管理存储控制器120、非易失性存储装置115的操作以及便于主机设备110与非易失性存储装置之间的通信的各种类型的固件。在一些实施方案中,并且如图所示,多个固件插槽205可以包括七个插槽。在其他实施方案中,可以使用多于或少于七个的多个固件插槽205。另外地,在一些实施方案中,多个固件插槽205中的每个可以被配置为存储控制器120上的逻辑分区,尽管在其他实施方案中,可以以其他方式配置多个固件插槽中的一个或多个。
由于具有多个固件插槽205,可以将多种类型和/或版本的固件同时地安装在非易失性存储装置115上。在一些实施方案中,多个固件插槽205中的每个可以被配置为保持固件的一个实例。一般来讲,固件被定义为安装在非易失性存储装置(例如,非易失性存储装置115或存储控制器内或与其相关联的专用固件非易失性存储装置)上并由存储控制器执行的软件程序或指令集。
另外,多个固件插槽205中的每个被配置为保持特定类型的固件。存储在多个固件插槽205中的每个内的固件可以是基本输入/输出系统固件、诊断固件、调试固件或存储系统100的操作所需要或期望的任何其他类型的固件。在一些实施方案中,多个固件插槽205中的一个可以保持主固件,并且多个固件插槽中的另一个可以保持次固件。次固件可以是具有调试功能性的调试固件,而主固件可以是除调试固件之外的任何固件。另外,多个固件插槽205中的每个可以被特别地指定用于保持特定类型的固件。因此,主固件只能保持在指定用于保持主固件的插槽中。类似地,次固件可以仅保持在指定用于保持次固件的那些插槽中。
另外地,多个固件插槽205中的每个可以具有与其相关联的标识号和标识类型,该标识号将数字与该特定插槽相关联,该标识类型将固件类型与该特定插槽相关联。因此,根据识别号和标识类型,可以唯一地识别多个固件插槽205中的每个并将它们与其他插槽区分开,并且可以知道与该插槽相关联的固件的类型。标识号和标识类型可能是主机设备110已知的。
另外,一次仅使用一种类型的固件。然而,通过在非易失性存储装置115上同时地安装多个固件并通过具有在不同类型的固件之间进行切换的能力,可以选择适合于特定类型的操作的固件。常规地,调试类型的固件并不总是存储在多个固件插槽205中的任一个内。相反,当期望调试功能性(例如,以识别存储系统100中的故障)时,将调试固件手动地安装在多个固件插槽205中的一个中,该插槽指定用于保持调试固件并然后在不再需要调试功能性时卸载。相比之下,本公开提供了一种机制,通过该机制,调试固件可以一直保持在多个固件插槽205中的一个内,并且存储控制器120可以在需要时在主固件(例如,非调试固件)与次固件(例如,调试固件)之间自动地切换。例如,在一些实施方案中,主固件可以一直保持在多个固件插槽205中的插槽235内,而次固件可以一直保持在该多个固件插槽中的插槽240内。
仍然参照图2,切换器模块210基于满足一个或多个条件来便于主固件与次固件之间的切换。例如,切换器模块210可以被配置为基于满足一个或多个调试条件来从主固件切换到次固件。切换器模块210还可以被配置为基于满足一个或多个回切条件来从次固件切换到主固件。两种类型的切换条件将在下面更详细地说明。
另外,切换器模块210可以被配置为软件部件、硬件部件或软件和硬件部件的组合。另外地,在一些实施方案中,并且如图所示,可以使用切换器模块210的单个实例便于主固件与次固件之间的切换。在其他实施方案中,可以使用切换器模块210的多个实例,其中每个切换器模块被分配为在多个固件插槽205的子集的固件之间进行切换。
切换器模块210可以包括条件检测模块245,该条件检测模块被配置为检测调试条件和回切条件。在一些实施方案中,条件检测模块245可以包括一个或多个条件模块250,其中每个条件模块被配置为检测和评估一个或多个调试条件和/或一个或多个回切条件。因此,在一些实施方案中,切换器模块210的一个实例可以被配置为监视多个调试条件和多个回切条件。在其他实施方案中,切换器模块210的每个实例可以被配置为监视单个或一小组调试条件和/或单个或一小组回切条件。
另外,调试条件和回切条件可以从一个实施方案到另一个实施方案变化。例如,在一些实施方案中,调试条件可以是链路错误调试条件。如本文所使用,“链路”是指主机设备110与存储设备105之间的物理接口113。“链路错误”可能因主机设备110与存储设备105之间的物理接口113中的信号连接不良(例如,失败连接)而发生。计数器230可以跟踪在存储系统100内发生的所有链路错误。切换器模块210可以被配置为通过监视计数器230来监视链路错误。链路错误调试条件可以与链路错误阈值相关联,使得当计数器230指示已经符合链路错误阈值时(例如,由于计数器所记录的链路错误的数量达到或超过链路错误阈值),切换器模块210可以确定已经满足链路错误调试条件。另外,可以由条件模块255监视链路错误调试条件,该条件模块可以被配置为监视计数器230。在符合或超过与链路错误调试条件相关联的链路错误阈值时,条件模块255可以引出标志或使用另一种机制来向条件检测模块245和/或切换器模块210指示已经满足链路错误调试条件。
切换器模块210可以被配置为要监视的另一个调试条件可以包括温度调试条件。例如,条件检测模块245中的条件模块260可以被配置为用于温度调试条件。具体地,条件模块260可以包括一个或多个温度传感器或与其相关联,该一个或多个温度传感器被配置为测量存储系统100内的一个或多个部件的温度。如果一个或多个温度传感器基于所测量的温度超过与温度调试条件相关联的温度阈值来确定与环境温度不关联的温度的异常出现、温度的显著变化等,那么条件模块260可以确定已经满足温度调试条件。类似于条件模块255,条件模块260可以被配置为引出标志或经由另一种机制指示已经检测到温度调试条件。
条件检测模块245可以被配置为要监视的某些调试条件可能是性能相关的。例如,条件检测模块245可以被配置为检测延迟和/或吞吐量问题。如果延迟、吞吐量或其他性能相关参数超过性能阈值,那么条件检测模块245可以确定已经满足调试条件。可以指定一个或多个条件模块250来监视此类性能相关调试条件。作为示例,存储控制器120可以正在运行顺序读取工作负荷(例如,执行来自主机设备110的读取命令以从非易失性存储装置115读取数据)。条件模块250的指定实例可以检测到对于来自主机设备110的读取命令的类似速率,从非易失性存储装置115读取的速率已经下降了超过性能阈值中指定的速率。在这种情况下,指定条件模块可以确定已经满足性能调试条件,并且可以标志调试条件。
在一些实施方案中,调试条件可以涉及错误校正、错误发生率、以及可指示或预测主机设备110、非易失性存储装置115、存储控制器120以及与其相关联的任何部件内的问题或故障的任何其他条件。应当理解,上面讨论的调试条件仅是一个示例。在其他实施方案中,切换器模块210可以监视附加的、更少的或不同的调试条件。
调试条件导致切换器模块210从主固件切换到次固件,如下文所讨论的那样。相比之下,回切条件导致切换器模块210从次固件切换回主固件。回切条件也可以从一个实施方案到另一个实施方案变化。在一些实施方案中,回切条件可以对应于调试条件。例如,如果调试条件是基于链路错误符合或超过链路错误阈值而满足的链路错误调试条件,那么对应回切条件可以是链路错误回切条件。链路错误回切条件可以与另一个链路错误阈值相关联,该链路错误阈值可以与调试条件的链路错误阈值相同或不同,并且可以标识何时从次固件切换回主固件。
在一些实施方案中,回切条件可以与调试条件不关联。例如,在一些实施方案中,不管调试条件如何,回切条件可以是基于时间的,使得切换器模块210在已经经过一定时间段之后从次固件切换回主固件。在又一些实施方案中,可以使用相关联的和不关联的回切条件的组合。
为了监视调试和回切条件,条件检测模块245可以被配置为查询当前状态日志220和计数器230。具体地,调试条件和回切条件中的每个可以具有与其相关联的一个或多个参数。例如,链路错误调试条件可以具有与其相关联的链路错误参数。温度调试条件可以具有与其相关联的温度参数等。这些参数可以指示存储系统100的操作的当前状态并可以用于识别存储系统内的任何问题或毛病。另外,与这种参数相关的数据通常由存储控制器120收集在当前状态日志220和计数器230中。当前状态日志220和计数器230因此提供存储系统100的当前状态。基于当前状态日志220和计数器230中的参数的值,切换器模块210可以确定是否已经满足调试条件和回切条件。
例如,在一些实施方案中,当前状态日志220可以包括提供与存储系统100的一个或多个部件有关的各种温度相关信息的温度日志。因此,对于具有温度参数的温度调试条件,切换器模块210可以访问并查询当前状态日志220内的温度日志以识别是否已经满足温度调试条件。类似地,当前状态日志220可以包括与性能参数(例如,延迟、吞吐量等)相关的信息和/或可由切换器模块210监视的存储系统100内的任何其他几个参数。
类似地,可以由切换器模块210使用计数器230来识别调试条件和回切条件。例如,如上文所讨论的那样,在一些实施方案中,切换器模块210可以使用计数器230来识别链路错误调试条件。在其他实施方案中,切换器模块210也可以使用计数器230来识别其他类型的调试条件。计数器230可以监视例如来自主机设备110的命令的总数、由存储控制器服务的主机命令的数量、已经从非易失性存储装置115读取或写入该非易失性存储装置中的字节的数量等。因此,计数器230可以被配置为跟踪各种参数,并且切换器模块210可以被配置为利用来自计数器的信息来识别已经满足的调试条件和回切条件。
应当理解,当前状态日志220和计数器230仅是切换器模块210可用来监视各种调试条件和回切条件的信息源的一个示例。在其他实施方案中,切换器模块210可以使用来自主机设备110、非易失性存储装置115和存储控制器120的附加或其他信息片段以识别调试条件和回切条件。在一些实施方案中,切换器模块210可以被配置为直接地监视主机设备110、非易失性存储装置115和存储控制器120的某些部件。因此,切换器模块210可以被配置为要监视的调试条件和回切条件可以变化,并且切换器模块可以用来监视那些条件的源也可以在各个实施方案之间变化。
另外,如上文所指出的那样,切换器模块210可以被配置为软件、硬件或硬件和软件的组合。在一些实施方案中,切换器模块210的配置可以取决于期望被监视的调试条件和回切条件。某些条件可能适于软件配置,而其他条件可能更适于硬件配置。例如,温度相关条件可能适于硬件和软件配置两者。在硬件配置中,可以使用温度传感器。在软件配置中,可以使用来自当前状态日志220的温度信息。性能相关条件(诸如延迟和吞吐量)可能更适合于基于软件的配置。因此,基于要监视的调试条件和回切条件,可以以软件、硬件或两者的组合来配置切换器模块210。
另外,切换器模块210可以被配置为持续地或周期性地监视各种调试条件和回切条件。在一些实施方案中,切换器模块210可以被配置为持续地监视一些调试条件和一些回切条件,而可以周期性地监视其他调试条件和回切条件。为了进行定期监视,切换器模块210可以使用定时器模块215。定时器模块215可以被配置有预确定的时间阈值,使得当符合时间阈值时(例如,已经经过时间阈值中设定的时间),切换器模块210针对要周期性地监视的调试条件和回切条件的参数运行检查。然后重置定时器模块并针对时间阈值再次运行。另外,对于周期性地监视的调试条件和回切条件,切换器模块210可以被配置为以变化的时间阈值监视每个条件或条件子集。因此,基于期望被监视的调试条件和回切条件以及监视频率,可以配置切换器模块210和定时器模块215。尽管示出了定时器模块215与切换器模块210分离,但是在一些实施方案中,定时器模块可以是切换器模块的一部分和/或与切换器模块集成。
仍然参照图2,如果切换器模块210确定已经满足指示问题或故障的一个或多个调试条件,那么切换器模块可以导致固件切换。同样,如果切换器模块210确定已经满足回切条件,那么切换器模块可以再次切换。在任一情况下,切换器模块210都可以以两种方式中的一种来便于切换。例如,在一些实施方案中,切换器模块可以使用控制器故障状态(“CFS”)位265来引出主机事件(例如,标志或中断位)以向主机设备110指示切换器模块正在切换固件。启用CFS位265基本上会使主机设备110重置存储设备105并特别是存储控制器120。在重置存储控制器120后,存储控制器可以停止当前在执行的固件的执行并开始另一个固件的执行。
便于固件切换的另一种机制是通过使用处理暂停(“PP”)位270。类似于CFS位265,PP位270引出主机事件(例如,标志或中断位)以向主机设备110指示切换器模块正在切换固件。PP位270不使主机设备110重置存储设备105。相反,PP位270使存储设备105并特别是存储控制器120离线短时间段,在此期间切换器模块210停止当前在运行的固件的执行并开始另一个固件的执行。关于CFS位265和PP位270的附加细节将参照以下图3至图4进行讨论。
因此,切换器模块210监视指示存储系统100内的问题或故障的多种条件,并且在主固件与次固件之间自主地切换而不需要来自主机设备110的任何输入。
转到图3,示出了根据本公开的一些实施方案的概述用于使用CFS位265从主固件切换到次固件的操作的过程300的示例性流程图。取决于特定实施方案,过程300可以包括附加的、更少的或不同的操作。在操作305处开始之后,切换器模块210监视可指示存储系统100内的问题或故障的一个或多个调试条件。如上文所指出的那样,在一些实施方案中,切换器模块210可以周期性地监视调试条件。因此,在操作310处,切换器模块210确定是否已经符合定时器模块215内的时间阈值。例如,如果时间阈值为一分钟,那么当定时器模块215指示已经过去一分钟时,切换器模块210检查与在监视的调试条件相关联的参数的值的任何更新。在已经符合时间阈值之后,定时器模块215重置并且时间阈值重启。
另外,在一些实施方案中,可以针对每个调试条件使用不同的时间阈值。例如,切换器模块210可以被配置为每隔X秒(或分秒)检查调试条件A并每隔Y秒(或分秒)检查调试条件B。因此,在一些实施方案中,对于切换器模块210在监视的每个调试条件,可以执行操作310。在一些实施方案中,在操作310处,可以使用除时间之外的触发器(例如,存储系统100内的严重警告事件)。在其中切换器模块210持续地监视调试条件的实施方案中,对于持续地监视的调试条件,可以跳过操作310。因此,在操作310处,如果符合触发器(例如,如果已经符合定时器阈值),那么切换器模块210前进到操作315。另一方面,如果在操作310处不符合触发器,那么过程300停留在操作310处,直到符合触发器为止。
在操作315处,切换器模块210评估与在监视的调试条件相关联的参数。具体地,切换器模块210检查自上次检查以来与在监视的调试条件相关联的参数的值的任何更新或改变。如上文所讨论的那样,切换器模块210可以查询当前状态日志220、计数器230、以及存储系统100内的任何其他源,以识别参数的更新或改变。因此,对于在操作310处符合触发器的每个调试条件,切换器模块210检查参数的更新。
基于在操作315处收集的信息,切换器模块210在操作320处判断是否从主固件切换到次固件。如上文所讨论的那样,切换器模块210在监视的每个调试条件具有与其相关联的阈值。在操作320处,切换器模块210可以将在操作315处获得的参数的值与阈值进行比较。如果比较指示参数的值等于或大于温度阈值(或在一些情况下小于阈值),那么切换器模块可以确定已经满足调试条件以及确定在存储系统100内存在正在发生或即将发生的问题。
在一些实施方案中,切换器模块210可以被配置为使得满足调试条件的每个实例都不引起固件切换。例如,对于温度调试条件,切换器模块210可以被编程为仅在操作315处获得的温度值超过温度阈值达特定时间量的情况下才能便于固件切换。具体地,如果例如切换器模块210已经被配置为每一分钟监视温度相关条件,并且还被配置为如果温度值持续地超过温度阈值达五分钟,那么切换固件,切换器模块仅在温度值超过温度阈值达五个持续的周期之后才能切换固件。
因此,切换器模块210可以被配置有用于监视调试条件的多种标准。如果在操作320处切换器模块210确定尚不符合关于切换固件的标准,那么切换器模块继续以主固件进行操作,如在操作325处所指示的那样。过程300在操作330处结束,其中切换器模块210继续监视调试条件,如在操作310至320处所指示的那样。另一方面,如果在操作320处,切换器模块210确定已经符合关于切换固件的标准,那么在操作335处,切换器模块开始从主固切换到次固件的过程。
为了切换固件,在操作335处,切换器模块210使用CFS位265引出主机事件。引出主机事件可能涉及引出或设定标志位或中断位。引出主机事件请求主机设备110重置存储控制器120。在接收到主机事件后,主机设备110重置存储控制器120。在一些实施方案中,“重置”可意味着使存储控制器120的操作停止短时间量并在已经经过短时间量之后重启存储控制器。
由于重置存储控制器120,在从主机设备110传输到存储控制器的过程中的任何运行中命令被丢弃或丢失,从而要求主机设备在重置之后重新提交那些命令。在重置发生之前,可以服务于并完成已经传输到存储控制器120的任何命令。在一些实施方案中,存储控制器120可以被配置为在重置之前也处理运行中命令以避免丢失那些命令。例如,如果主机设备110已经向存储控制器120发送一个或多个读取命令以从非易失性存储装置115读取数据,那么当存储控制器重置时尚未到达存储控制器120的那些读取命令中的任一个被丢失或丢弃,从而要求主机设备在固件切换之后重新提交那些丢失的命令。如果那些读取命令已经到达存储控制器120,那么存储控制器可以在重置之前服务于并完成处理那些读取命令。另外,当存储控制器120重置时,可以阻止主机设备110向存储控制器发送任何新命令。在引出主机事件并使主机设备110重置存储控制器120时,切换器模块210便于在操作340处进行固件切换。
具体地,为了便于在操作340处从主固件到次固件的切换,切换器模块停止主固件的执行并开始次固件的执行。由于次固件已经安装到存储控制器120的多个固件插槽205中,因此切换器模块从主固件自主地切换到次固件而既不需要来自用户的任何手动干预也不需要来自主机设备110的切换请求。在完成切换后,在操作335处重置存储控制器的重置操作完成,并且在操作345处重启存储控制器120。由于在操作345处重启存储控制器120,主机设备110可以在操作335处重新提交在重置非易失性存储装置期间丢失的命令,以及提交新命令。另外,禁用在操作320处设定的标志或中断位。
另外,除了提供主固件的正常功能性之外,次固件还提供调试功能性,该调试功能性收集有关导致切换的调试条件的详细信息并将该信息存储在调试日志225(参见图2)内。主机设备110、存储控制器120和非易失性存储装置115使用次固件来继续其操作,如在操作350处所指出的那样,并且过程300在操作330处结束,其中切换器模块210继续监视便于切换的调试条件。
现在转到图4,示出了根据本公开的一些实施方案的概述用于过程400的操作的示例性流程图。过程400概述用于使用PP位270从主固件切换到次固件的操作。取决于特定实施方案,过程400可以包括附加的、更少的或不同的操作。过程400在某种程度上类似于上述过程300。因此,在操作405处开始之后,切换器模块210在操作410处确定是否已经符合时间阈值。操作410类似于上述操作310。因此,如果定时器模块215指示已经符合时间阈值,那么在操作415处,切换器模块评估与在监视的调试条件相关联的参数。如果定时器模块215指示尚不符合时间阈值,那么过程400保持在操作410处,直到已经符合时间阈值。
在操作415处,切换器模块210检查该切换器模块在监视的调试条件的参数的更新。操作415类似于操作315。在操作420处,切换器模块210确定是否需要固件切换。同样,切换器模块210可以将在操作415处获得的参数的值与在调试条件内编程的一个或多个阈值和其他标准进行比较。如果切换器模块210确定不满足用于固件切换的条件,那么在操作425处,继续使用主固件,并且过程400在操作430处结束。
如果在操作420处,切换器模块210判断已经符合用于进行固件切换的条件,那么在操作435处,切换器模块开始切换过程。在操作435处,切换器模块引出主机事件。具体地,切换器模块210使用PP位270来设定或引出标志或中断位,该标志或中断位在短时间段内停止来自主机设备110的任何新命令的处理。当使用PP位270便于切换时,存储控制器120可以继续处理来自主机设备110的任何现有命令。PP位270还向主机设备110通知(例如,使用异步事件)非易失性存储装置115的处理已经暂停或停止短时间段。然而,与关于其中来自主机设备110的运行中命令丢失的操作335的上述CFS切换机制相比,PP切换机制不会导致来自主机设备的运行中命令丢失。
而是,可以使运行中命令在存储控制器120内排队,直到完成固件切换。主机设备110还可以继续向存储控制器发送新命令以访问非易失性存储装置115。可以使新命令与来自主机设备110的其他命令一起排队。因此,PP切换机制除在进行固件切换的时间段内的可能的延迟响应时间之外不会导致主机设备110的操作的任何中断。切换器模块210可以基于引起固件切换的特定调试条件和/或由导致切换的条件导致的问题或毛病的严重性来判断是使用CFS机制还是PP机制。
在操作440处,在经由PP位270引出PP标志或中断位时,切换器模块210停止主固件的执行并开始次固件的执行。同样,切换器模块210便于从主固件到次固件的切换而不需要来自主机设备110的任何切换请求或来自客户的任何干预。因此,切换器模块210自主地切换固件。在完成切换后,切换器模块210在操作445处向主机设备110通知(例如,使用异步事件)已经切换固件。可以禁用在操作435处引出的PP标志或中断位,并且次固件从主固件停止的地方继续。因此,在操作450处,次固件服务于在操作435处排队的来自主机设备110的所有挂起命令。除了提供主固件的正常功能性之外,次固件还提供调试功能性,该调试功能性收集有关导致切换的条件的详细信息并将该信息存储在调试日志225(参见图2)内。在一些实施方案中,次固件可能建议和/或解决调试条件中指示的导致切换的问题。过程400在操作430处结束。
现在参照图5,示出了根据本公开的一些实施方案的概述用于从次固件切换回主固件的过程500的示例性流程图。取决于特定实施方案,过程500可以包括附加的、更少的或不同的操作。过程500在操作505处开始,其中次固件在执行中。由于次固件没有针对性能和功率优化,因此,希望一旦已经将调试数据收集在调试日志225中和/或已经纠正导致切换的问题,就将固件切换回主固件。如上文所讨论的那样,主固件针对功率和性能优化,并且因此比次固件更可取。应当理解,次固件切换到的主固件可以是与在过程300或400处切换到次固件的相同固件,或主固件可以是不同主固件。
在操作510处,切换器模块210确定是否已经符合用于从次固件切换到主固件的回切条件。例如,切换器模块210可以被配置为在已经经过预确定的时间段之后切换回主固件。可以基于次固件通常花费多长时间来收集调试数据和/或解决问题来对预确定的时间段进行编程。在其他实施方案中,切换器模块210可以被配置为在次固件已经将所收集的调试数据发送给供应商或其他实体以解决问题之后切换回主固件。在又其他实施方案中,可以使用附加或其他回切条件。
如果切换器模块210确定可能尚未进行从次到主固件切换,那么过程500前进到操作515,其中继续次固件的执行,并且过程在操作520处结束,其中切换器模块继续监视回切条件。另一方面,如果在操作510处,切换器模块210确定已经满足用于切换回主固件的回切条件,那么在操作525处,切换器模块在操作525处引出主机事件。主机事件可以是中断、标志或其他通知位。另外,可以使用CFS位265或PP位270引出主机事件。同样,如果使用CFS位265,那么切换器模块210使主机设备110重置存储控制器120,并且来自主机设备的命令中的一些可能丢失。如果使用PP位270,那么切换器模块210可以使来自主机设备110的命令的处理暂停短时间段,并且来自主机设备110的未立即服务于的任何命令都要排队(但不丢失)。
在一些实施方案中,切换器模块210可以使用与切换器模块在从主固件切换到次固件时使用的相同的切换机制(例如,CFS或PP)。在其他实施方案中,切换器模块210可以使用与用于从主固件切换到次固件的不同的机制。在操作530处引出主机事件时,切换器模块210停止次固件的执行并开始主固件的执行。在完成切换后,切换器模块210在操作535处向主机设备110通知切换,并且在操作540处,主固件在次固件停止的地方继续。过程500在操作520处结束。因此,切换器模块还便于从次固件到主固件的切换而不需要来自主机设备110的任何切换请求或来自客户的任何干预。
因此,本公开提供了用于从一个固件切换到另一个固件而既不需要任何用户干预也不需要来自主机设备110的任何特定请求的系统和方法。切换器模块210监视指示存储系统100内的问题或故障的一个或多个条件,并且当满足一个或多个条件中的至少一个时自主地触发固件切换。有利地,在不使主机设备发送对切换固件的请求的情况下由切换器模块对固件的自主切换是快速的、自动的,允许将调试功能性与常规固件同时地安装在存储控制器120上,并且引起高效地、方便地诊断存储系统内的问题或毛病。因此,切换器模块210可能导致存储系统100中的问题在问题实际上发生并严重地影响存储系统的操作之前被识别出。
出于描述本公开的创新方面目的,以下描述针对的是某些实施方式。然而,本领域的普通技术人员将容易地认识到,本文的教导内容可以以多种不同方式应用。
本文描述的主题有时说明不同部件包含在不同其他部件内或与不同其他部件连接。应当理解,这样描绘的架构只是示例性的,而事实上可以实现能够实现相同功能性的许多其他架构。在概念上,有效地“关联”用以实现相同功能性的部件的任何布置,使得实现期望功能性。因此,本文组合以实现特定功能性的任何两个部件可以被视为彼此“相关联”,使得实现期望功能性,而无论架构或中间部件如何。同样,任何两个如此关联的部件也可以被视为彼此“可操作地连接”或“可操作地耦合”以实现期望功能性,并且能够如此关联的任何两个部件也可以被视为彼此“能可操作地耦合”以实现期望功能性。能可操作地耦合的具体示例包括但不限于物理上可配合和/或物理上交互的部件,和/或无线地可交互和/或无线地交互的部件,和/或逻辑上交互和/或逻辑上可交互的部件。
关于在本文中基本上任何多数和/或单数术语的使用,本领域的技术人员可以从多数转换为单数和/或从单数转换为多数,以适合于上下文和/或应用。为了清楚起见,本文可以明确地阐述各种单数/复数置换。
如本领域的技术人员将理解,一般来讲,在本文中并尤其是在所附权利要求书(例如,所附权利要求书的正文)中使用的术语大体旨在作为“开放性”术语(例如,术语“包含”应当被解释为“包含但不限于”,术语“具有”应当被解释为“至少具有”,术语“包括”应当被解释为“包括但不限于”等)。本领域的技术人员还将理解,如果旨在介绍特定数量的介绍的权利要求陈述物,那么在权利要求中将明确地陈述这种意图,并且在没有这种陈述物的情况下,不存在这种意图。例如,为了帮助进行理解,以下所附权利要求书可以包含介绍性短语“至少一个”和“一个或多个”的使用以介绍权利要求陈述物。然而,此类短语的使用不应当被解释为暗示通过不定冠词“一个”或“一种”介绍一个权利要求陈述物将包含这种介绍的权利要求陈述物的任何特定权利要求限制于仅包含一个这种陈述物的发明,即使当同一个权利要求包括介绍性短语“一个或多个”或“至少一个”以及不定冠词诸如“一个”或“一种”时也是如此(例如,“一个”或“一种”通常应当被解释为意味着“至少一个”或“一个或多个”);对于用来介绍权利要求陈述物的定冠词的使用,情况也是如此。另外,即使明确地陈述特定数量的介绍的权利要求陈述物,本领域的技术人员将认识到这种陈述物也通常应当被解释为意味着至少所陈述的数量(例如,没有其他修饰语的“两个陈述物”的直白陈述通常意味着至少两个陈述物,或两个或更多个陈述物)。此外,在使用类似于“A、B和C中的至少一个,等等”的惯例的那些实例中,一般来讲,这种构造在本领域的技术人员理解该惯例的意义上是既定的(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、共同地具有A和B、共同地具有A和C、共同地具有B和C和/或共同地具有A、B和C等的系统)。在使用类似于“A、B或C中的至少一个,等等”的惯例的那些实例中,一般来讲,这种构造在本领域的技术人员理解该惯例的意义上是既定的(例如,“具有A、B或C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、共同地具有A和B、共同地具有A和C、共同地具有B和C和/或共同地具有A、B和C等的系统)。本领域内的技术人员还将理解,实际上,无论是说明书、权利要求书还是附图中,呈现两个或更多个替代术语的任何转折词语和/或短语都应当被理解为设想了包括术语中的一个、术语中的任一个或两个术语的可能性。例如,短语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。另外,除非另有说明,否则词语“近似”、“约”、“大约”、“基本上”等的使用是意味着±10%。
已经出于例示和描述目的呈现例示性实施方案的前述说明。相对于所公开的精确形式,并不旨在是详尽的或进行限制,并且按照上述教导内容,修改和变化是可能的,或可以从所公开的实施方案的实践中获取。本发明的范围旨在由所附权利要求书和其等同物限定。

Claims (20)

1.一种操作存储控制器的方法,包括:
由所述存储控制器的切换器模块基于调试条件的参数的值来确定是否满足所述调试条件,其中所述调试条件指示包括便于主机设备与存储系统的非易失性存储装置之间的通信的所述存储控制器的所述存储系统内的问题;
由所述切换器模块基于所述切换器模块确定已经满足所述调试条件来将所述存储系统的操作从针对性能和功率中的至少一个进行优化的主固件切换到次固件,其中:
从所述主固件到所述次固件的所述切换自动地发生而不需要来自所述主机设备的切换请求;以及
所述次固件是被配置为解决所述调试条件的调试固件;
当从所述次固件操作时,收集有关所述调试条件的信息;以及
随后切换回所述主固件。
2.根据权利要求1所述的方法,还包括:
在确定已经满足所述调试条件时由所述切换器模块引出主机事件,其中使用其中所述主机设备重置所述存储控制器的控制器故障状态位引出所述主机事件。
3.根据权利要求1所述的方法,还包括:
在确定已经满足所述调试条件时由所述切换器模块引出主机事件,其中使用其中所述切换器模块将主机命令的处理暂停预确定的时间段的处理暂停位引出所述主机事件。
4.根据权利要求1所述的方法,还包括:
由所述切换器模块评估从所述次固件切换回所述主固件的一个或多个回切条件,所述回切条件包括解决所述调试条件、发送有关所述调试条件的所述信息以及经过足以解决所述调试条件或收集所述信息的预确定的时间段中的至少一个;
由所述切换器模块引出基于满足所述一个或多个回切条件中的至少一个来从所述次固件切换回所述主固件的主机事件;
停止由所述切换器模块进行的所述次固件的执行;以及
开始由所述切换器模块进行的所述主固件的执行。
5.根据权利要求4所述的方法,其中通过由所述切换器模块设定控制器故障状态位或处理暂停位来引出所述主机事件。
6.根据权利要求4所述的方法,还包括向所述主机设备通知从所述次固件到所述主固件的所述切换。
7.根据权利要求4所述的方法,其中从所述次固件到所述主固件的所述切换自动地发生而所述存储控制器未接收到来自所述主机设备的所述切换请求。
8.根据权利要求1所述的方法,还包括:
由所述切换器模块将所述参数的所述值与与所述调试条件相关联的一个或多个预确定的阈值进行比较;以及
由所述切换器模块基于所述值满足或超过所述一个或多个预确定的阈值来确定已经满足所述调试条件。
9.根据权利要求1所述的方法,还包括基于预确定的时间阈值来周期性地检查所述调试条件的所述参数的更新。
10.根据权利要求9所述的方法,还包括由所述切换器模块访问所述存储系统内的当前状态日志和计数器中的至少一个以检查所述调试条件的所述参数的更新。
11.一种存储控制器,包括:
多个固件插槽,其中所述多个固件插槽中的第一插槽中安装有主固件,并且所述多个固件插槽中的第二插槽中安装有次固件,所述次固件是被配置为诊断包括所述存储控制器、与所述存储控制器通信的主机设备、和非易失性存储装置的存储系统内的一个或多个问题的调试固件;和
切换器模块,所述切换器模块被配置为:
基于满足一个或多个调试条件来自动从所述主固件切换到所述次固件,以使得所述次固件能够收集调试信息;
从所述主固件切换到所述次固件而不需要来自所述主机设备的切换请求;以及
通过引出使所述切换器模块将主机命令的处理暂停预确定的时间段的处理暂停位来从所述主固件切换到所述次固件。
12.根据权利要求11所述的存储控制器,其中所述调试条件包括以下中的至少一个:与主机的链路中的链路错误的数量、温度条件、延迟问题、吞吐量问题和错误率。
13.根据权利要求11所述的存储控制器,还包括定时器模块,所述定时器模块与所述切换器模块可操作地相关联,其中所述定时器模块被配置有时间阈值,并且其中所述切换器模块被配置为基于符合或超过所述时间阈值来评估是否满足所述一个或多个条件。
14.根据权利要求11所述的存储控制器,其中:
所述一个或多个调试条件指示所述存储控制器、所述主机设备和经由所述存储控制器与所述主机设备通信的非易失性存储装置中的至少一个内的一个或多个问题,所述次固件包括与所述一个或多个问题相关的调试功能性;
所述切换器模块被配置为将与所述调试条件相关联的参数与一个或多个阈值进行比较以识别是否满足所述调试条件;并且
所述切换器模块被配置为基于满足所述调试条件来从所述主固件切换到所述次固件以启用所述调试功能性。
15.根据权利要求11所述的存储控制器,其中:
所述切换器模块还被配置为基于满足指示所述一个或多个问题的诊断的一个或多个回切条件来从所述次固件切换到所述主固件;以及
所述切换器模块被配置为从所述次固件切换到所述主固件而不需要来自所述主机设备的切换请求。
16.根据权利要求11所述的存储控制器,其中所述非易失性存储装置是闪存存储装置。
17.根据权利要求11所述的存储控制器,其中:
所述主固件针对性能和功率中的至少一个进行优化;以及
所述次固件被配置为解决所述调试条件。
18.一种存储系统,包括:
主机设备;
非易失性存储装置;和
存储控制器,所述存储控制器被配置为便于所述主机设备与所述非易失性存储装置之间的通信,其中:
所述存储控制器包括用于基于满足一个或多个调试条件来在针对性能和功率中的至少一个进行优化的主固件和次固件之间自动切换的装置;
所述次固件是调试固件,其包括针对解决所述一个或多个调试条件的调试功能性;以及
用于自动切换的所述装置被配置为在所述主固件与所述次固件之间进行自动切换而不需要来自所述主机设备的切换请求。
19.根据权利要求18所述的存储系统,其中用于自动切换的所述装置还被配置为基于满足一个或多个回切条件来从所述次固件自动地切换回所述主固件。
20.根据权利要求18所述的存储系统,其中所述非易失性存储装置是闪存存储装置。
CN201880040948.6A 2017-09-06 2018-06-05 用于切换固件的系统和方法 Active CN110770690B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/696,913 US10642693B2 (en) 2017-09-06 2017-09-06 System and method for switching firmware
US15/696,913 2017-09-06
PCT/US2018/035975 WO2019050581A1 (en) 2017-09-06 2018-06-05 SYSTEM AND METHOD FOR SWITCHING A MICROLOGICIAL

Publications (2)

Publication Number Publication Date
CN110770690A CN110770690A (zh) 2020-02-07
CN110770690B true CN110770690B (zh) 2024-01-23

Family

ID=62846233

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880040948.6A Active CN110770690B (zh) 2017-09-06 2018-06-05 用于切换固件的系统和方法

Country Status (4)

Country Link
US (1) US10642693B2 (zh)
CN (1) CN110770690B (zh)
DE (1) DE112018003165T5 (zh)
WO (1) WO2019050581A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182232B2 (en) * 2019-11-18 2021-11-23 Microsoft Technology Licensing, Llc Detecting and recovering from fatal storage errors
CN113467796A (zh) * 2020-03-30 2021-10-01 技嘉科技股份有限公司 固态硬盘以及启动方法
TWI722852B (zh) * 2020-03-30 2021-03-21 技嘉科技股份有限公司 固態硬碟以及啟動方法
US11836502B2 (en) * 2021-06-14 2023-12-05 Dell Products L.P. Multi-boot system and method for a baseboard management controller (BMC)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104680059A (zh) * 2013-12-03 2015-06-03 北京中电华大电子设计有限责任公司 一种保护芯片固件程序的仿真器及方法
CN106575271A (zh) * 2014-06-23 2017-04-19 谷歌公司 管理存储设备

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0437927A (ja) * 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
US5399919A (en) * 1993-02-25 1995-03-21 Texas Instruments Incorporated Apparatus for detecting switch actuation
US5832492A (en) * 1995-09-05 1998-11-03 Compaq Computer Corporation Method of scheduling interrupts to the linked lists of transfer descriptors scheduled at intervals on a serial bus
JP4444397B2 (ja) * 1999-06-25 2010-03-31 富士通マイクロエレクトロニクス株式会社 トポロジの構築方法
US6675258B1 (en) * 2000-06-30 2004-01-06 Lsi Logic Corporation Methods and apparatus for seamless firmware update and propagation in a dual raid controller system
JP2002244874A (ja) * 2001-02-15 2002-08-30 Toshiba Corp 情報処理装置およびファームウェア更新方法
US6754895B1 (en) * 2001-04-26 2004-06-22 Palm Source, Inc. Method and system for automatic firmware updates in a portable hand-held device
US6711520B2 (en) * 2001-07-12 2004-03-23 Seagate Technology Llc Remote execution of diagnostic firmware in a block data storage device
US6694281B2 (en) * 2001-07-12 2004-02-17 Seagate Technology Llc Real time signal analysis of a remote block data storage device
US6789048B2 (en) * 2002-04-04 2004-09-07 International Business Machines Corporation Method, apparatus, and computer program product for deconfiguring a processor
US7080245B2 (en) * 2002-05-23 2006-07-18 Hewlett-Packard Development Company, L.P. Method and system of switching between two or more images of firmware on a host device
TWI221959B (en) * 2002-10-25 2004-10-11 Via Tech Inc Method and computer system using a debug system to boot up
US7076631B2 (en) * 2003-04-14 2006-07-11 Adtran, Inc. Mechanism for on-the-fly handling of unaligned memory accesses
US20040216003A1 (en) * 2003-04-28 2004-10-28 International Business Machines Corporation Mechanism for FRU fault isolation in distributed nodal environment
US7171653B2 (en) * 2003-06-03 2007-01-30 Hewlett-Packard Development Company, L.P. Systems and methods for providing communication between a debugger and a hardware simulator
US7302690B2 (en) * 2003-07-31 2007-11-27 International Business Machines Corporation Method and apparatus for transparently sharing an exception vector between firmware and an operating system
US20050132351A1 (en) * 2003-12-12 2005-06-16 Randall Roderick K. Updating electronic device software employing rollback
JP2005242555A (ja) * 2004-02-25 2005-09-08 Hitachi Ltd 記憶制御システム及び記憶制御システムが有するディスク型記憶装置にファームウェアを搭載する方法
US7809836B2 (en) * 2004-04-07 2010-10-05 Intel Corporation System and method for automating bios firmware image recovery using a non-host processor and platform policy to select a donor system
CA2487096A1 (en) * 2004-10-18 2006-04-18 Veris Industries, Llc Prioritized interrupt for waveform measurement
JP2006127252A (ja) * 2004-10-29 2006-05-18 Fujitsu Component Ltd 切替機、切替方法及びプログラム
US20060184840A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Using timebase register for system checkstop in clock running environment in a distributed nodal environment
JP2006227681A (ja) * 2005-02-15 2006-08-31 Matsushita Electric Ind Co Ltd デバッグ装置、デバッグ方法およびプログラム
US7426633B2 (en) * 2005-05-12 2008-09-16 Hewlett-Packard Development Company, L.P. System and method for reflashing disk drive firmware
US7617391B2 (en) * 2005-12-15 2009-11-10 Lsi Logic Corporation Method and apparatus for dynamically selecting one of multiple firmware images for booting an I/O controller
US20080046710A1 (en) * 2006-08-17 2008-02-21 Steven Maddocks Switching firmware images in storage systems
JP2008084291A (ja) * 2006-08-28 2008-04-10 Fujitsu Ltd 記憶装置、制御方法及び制御装置
US20080320110A1 (en) * 2007-06-25 2008-12-25 Sharp Laboratories Of America, Inc. Firmware rollback and configuration restoration for electronic devices
US7764188B2 (en) * 2007-11-29 2010-07-27 Caterpillar Inc System and method for maintaining machine operation
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
JP4530059B2 (ja) * 2008-02-18 2010-08-25 日本電気株式会社 ディスクアレイ装置、ファームウェア交換方法およびファームウェア交換プログラム
JP4635061B2 (ja) 2008-02-27 2011-02-16 株式会社東芝 半導体記憶装置の評価方法
US7870430B2 (en) * 2008-02-29 2011-01-11 Freescale Semiconductor, Inc. Method and apparatus for sharing debug resources
US8250246B2 (en) * 2008-07-09 2012-08-21 Finisar Corporation Loading and executing firmware module without resetting operation
US8136108B2 (en) * 2008-09-03 2012-03-13 Computime, Ltd Updating firmware with multiple processors
US8132057B2 (en) * 2009-08-07 2012-03-06 International Business Machines Corporation Automated transition to a recovery kernel via firmware-assisted-dump flows providing automated operating system diagnosis and repair
US9189385B2 (en) 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8756381B2 (en) * 2011-06-01 2014-06-17 Hitachi, Ltd. Storage subsystem and load distribution method for executing data processing using normal resources even if an abnormality occurs in part of the data processing resources that intermediate data processing between a host computer and a storage device
WO2012170521A2 (en) 2011-06-07 2012-12-13 Lsi Corporation Management of device firmware update effects as seen by a host
CN104063258B (zh) 2013-03-21 2017-05-03 国际商业机器公司 用于调试过程中的代码动态切换的方法和系统
US20140344960A1 (en) 2013-05-17 2014-11-20 Lsi Corporation Selective control of on-chip debug circuitry of embedded processors
US8943226B1 (en) 2013-11-22 2015-01-27 Lsi Corporation Interface for heterogeneous PCI-e storage devices
US9703636B2 (en) * 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US10474618B2 (en) 2014-09-04 2019-11-12 Western Digital Technologies, Inc. Debug data saving in host memory on PCIE solid state drive
KR102229024B1 (ko) 2014-12-03 2021-03-17 삼성전자주식회사 스스로 에러를 검출하고 로그를 저장할 수 있는 데이터 저장 장치와 이를 포함하는 시스템
US9836386B2 (en) * 2014-12-18 2017-12-05 Red Hat Israel, Ltd. Automatic switch to debugging mode
US9625984B2 (en) * 2015-03-27 2017-04-18 Intel Corporation Technologies for managing power during an activation cycle
US9430358B1 (en) * 2015-06-23 2016-08-30 Ca, Inc. Debugging using program state definitions
CN106293979B (zh) * 2015-06-25 2019-11-15 伊姆西公司 检测进程无响应的方法和装置
WO2017072664A1 (en) * 2015-10-27 2017-05-04 Marvell World Trade Ltd. System and method for establishing a trusted diagnosis/debugging agent over a closed commodity device
US10572390B2 (en) * 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104680059A (zh) * 2013-12-03 2015-06-03 北京中电华大电子设计有限责任公司 一种保护芯片固件程序的仿真器及方法
CN106575271A (zh) * 2014-06-23 2017-04-19 谷歌公司 管理存储设备

Also Published As

Publication number Publication date
US20190073268A1 (en) 2019-03-07
US10642693B2 (en) 2020-05-05
WO2019050581A1 (en) 2019-03-14
CN110770690A (zh) 2020-02-07
DE112018003165T5 (de) 2020-02-27

Similar Documents

Publication Publication Date Title
CN110770690B (zh) 用于切换固件的系统和方法
US9389956B2 (en) Implementing ECC control for enhanced endurance and data retention of flash memories
US9170897B2 (en) Apparatus, system, and method for managing solid-state storage reliability
US7496694B2 (en) Circuit, systems and methods for monitoring storage controller status
CN106326061B (zh) 高速缓存数据处理方法及设备
US10921871B2 (en) BAS/HVAC control device automatic failure recovery
US20080072030A1 (en) Computer System and Method for Updating Program Code
US10338844B2 (en) Storage control apparatus, control method, and non-transitory computer-readable storage medium
US20140201578A1 (en) Multi-tier watchdog timer
US10296417B2 (en) Reducing uncorrectable errors based on a history of correctable errors
TWI759719B (zh) 快閃記憶體控制器及用於快閃記憶體控制器的方法
JP5910444B2 (ja) 情報処理装置、起動プログラム、および起動方法
CN112667462B (zh) 一种服务器的双闪存运行监测的系统、方法及介质
US20110087824A1 (en) Flash memory accessing apparatus and method thereof
US20140143597A1 (en) Computer system and operating method thereof
US11073893B2 (en) System and method capable of remotely controlling electronic apparatus
US10847245B2 (en) Failure indicator predictor (FIP)
JP2010204851A (ja) 記憶装置及び情報処理装置
CN114341811A (zh) 存储器子系统中的存储器子系统控制器的重置和重放
DE112014001736B4 (de) Ein Primärspeichermodul mit Aufzeichnung des Nutzungsverlaufs und Anwendungsmöglichkeiten des Primärspeichermoduls bei einem Computersystem
US11579673B2 (en) Systems and methods for storing FSM state data for a power control system
JP5627414B2 (ja) 動作ログ収集システム及びプログラム
JP7275922B2 (ja) 情報処理装置、異常検出方法及びプログラム
CN111367706A (zh) 一种多余度计算机的通道控制权切换方法及装置
JPWO2014112039A1 (ja) 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant