CN112433879A - 在存储器系统的操作中处置固件错误的设备和方法 - Google Patents
在存储器系统的操作中处置固件错误的设备和方法 Download PDFInfo
- Publication number
- CN112433879A CN112433879A CN202010501788.XA CN202010501788A CN112433879A CN 112433879 A CN112433879 A CN 112433879A CN 202010501788 A CN202010501788 A CN 202010501788A CN 112433879 A CN112433879 A CN 112433879A
- Authority
- CN
- China
- Prior art keywords
- memory
- firmware
- cores
- checksum
- error
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开涉及一种存储器系统,该存储器系统可以包括:存储器装置,该存储器装置包括存储固件的多个非易失性存储器单元;以及控制器,该控制器被配置为将固件加载到易失性存储器中并且采用多个内核,多个内核中的每个能够基于固件执行操作。可以将多个内核之中的处于待机状态或空闲状态的内核配置为检查加载固件的易失性存储器中是否已经发生错误。
Description
相关申请的交叉引用
本申请要求于2019年8月26日提交的申请号为10-2019-0104320的韩国专利申请的优先权,其全部公开通过引用并入本文。
技术领域
本公开的实施例涉及一种存储器系统,并且更特别地,涉及一种在存储器系统操作时处置固件错误以避免存储器系统的故障的方法和设备。
背景技术
近来,计算环境的范例已经转换为使得可以随时随地访问计算机系统的普适计算。因此,诸如移动电话、数码相机、笔记本电脑等的便携式电子装置的使用正在迅速增加。这种便携式电子装置通常使用或包括存储器系统,即数据存储装置,该存储器系统使用或嵌入至少一个存储器装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,被实现为非易失性半导体存储器装置的数据存储装置的优点在于,由于其不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐久性,并且具有高数据访问速度和低功耗。在具有这种优点的存储器系统的情况下,示例性数据存储装置包括USB(通用串行总线)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
本公开的实施例可以提供一种数据处理系统和操作该数据处理系统的方法,该数据处理系统包括诸如存储器系统和主机的组件和资源,并且能够基于组件的使用和资源的可用性,来动态地分配用于在组件之间进行数据通信的多个数据路径。
根据本公开的实施例,一种设备和方法,该设备和方法可以基于在存储器系统中执行控制器操作的多个内核的操作状态,检查加载到易失性存储器中并且由多个内核执行或使用的固件或其他代码中是否发生错误。如果发现错误,则改变存储器系统的操作状态,通知主机改变后的操作状态,并且响应于从主机输入的重置命令来执行重置操作。主机可以响应于存储器系统的操作状态而传输重置命令。该过程可以避免存储器系统故障或减少存储器系统试图有错误地操作的可能性。
进一步地,本公开的实施例可以提供一种方法或设备,该方法或设备可以减少或避免在存储器系统的操作期间,由于在易失性存储器中发现错误而花费资源所导致的操作延迟的发生,其中易失性存储器支持由多个内核执行的操作。
另外,本公开的实施例可以提供一种方法或设备,该方法或设备可以检测设置在高度集成处理器中的单位单元的高速缓存存储器中的错误,在校正或重置操作中恢复错误,并且减少由于错误而可能发生的故障。该方法或设备可以增强或提高存储器系统的操作稳定性或可靠性。
在实施例中,一种存储器系统可以包括:存储器装置,该存储器装置包括存储固件的多个非易失性存储器单元;以及控制器,该控制器被配置为将固件加载到易失性存储器中并且采用多个内核,每个内核能够基于固件执行操作。可以将处于待机状态或空闲状态的内核配置为检查加载固件的易失性存储器中是否已经发生错误。
作为示例而非限制,该控制器可以被配置为:当发现错误时停止或中止由至少一个内核执行的操作,并且改变操作状态以表示该操作被停止或中止,并且通知主机改变后的操作状态。
控制器可以被配置为:响应于从主机输入的重置命令,将固件从存储器装置重新加载到易失性存储器中。
控制器可以被配置为:分配易失性存储器中的由多个内核单独请求的区域,通过处于待机状态的内核对区域中的一些区域执行部分错误检查,通过处于空闲状态的内核收集部分错误检查的结果以确定易失性存储器中是否发生错误,并且基于是否发生错误来改变操作状态,以通知主机改变后的操作状态。
在多个内核之中,处于待机状态的内核可以被配置为对易失性存储器中存储的固件的一部分执行校验和,并且存储校验和的第一结果。
在多个内核之中,处于空闲状态的内核可以被配置为对固件中的、处于待机状态的内核未执行校验和的一部分执行校验和,并且存储对固件的该部分执行的校验和的第二结果。处于空闲状态的内核可以被配置为将第一结果和第二结果与参考值进行比较以确定是否发生错误。
控制器可以被配置为当存在分配给处于待机状态或空闲状态的内核的、与数据输入/输出操作相关的输入时,停止检查固件是否已经发生错误的操作。
处于待机状态或空闲状态的内核可以被配置为对固件的特定区域执行校验和,并且存储该校验和的结果和指示固件中的已执行校验和的区域的信息。
当存在处于待机状态或空闲状态的多个内核时,这些内核单独地对固件的不同部分执行校验和,以存储校验和的结果。
控制器可以包括错误检查电路,该错误检查电路被配置为监测多个内核的状态,并且响应于在多个内核中检测到的错误而停止由多个内核执行的操作。
在另一实施例中,一种操作存储器系统的方法可以包括:将包括多个非易失性存储器单元的存储器装置中存储的固件加载在易失性存储器中;采用多个内核,每个内核基于易失性存储器中加载的固件执行操作;使用多个内核之中的处于待机状态或空闲状态的内核来检查加载固件的易失性存储器中是否已经发生错误。
作为示例而非限制,该方法可以进一步包括:基于错误来改变操作状态,使得停止该操作;并且通知主机改变后的操作状态。
该方法可以进一步包括:响应于从主机接收到的重置命令,从存储器装置重新加载固件。
该方法可以进一步包括:分配易失性存储器中的由多个内核单独请求的区域;并且基于是否发生错误来改变操作状态,以通知主机改变后的操作状态。该方法可以包括:通过处于待机状态的内核对区域中的一些区域,而非全部区域执行错误检查;并且通过处于空闲状态的内核来估计错误检查的结果,以确定易失性存储器中是否已经发生错误。
该方法可以包括:使用处于待机状态的内核对易失性存储器中存储的固件的一部分执行校验和;并且存储校验和的第一结果。
该方法可以包括:使用处于空闲状态的内核对固件中的、处于待机状态的内核未执行校验和的一部分执行校验和,并且存储对固件的该部分执行的校验和的第二结果;并且使用处于空闲状态的内核,将第一结果和第二结果与参考值进行比较,以确定是否已经发生错误。
该方法可以进一步包括:当存在分配给处于待机状态或空闲状态的内核的、与数据输入/输出操作相关的输入时,停止检查固件是否已经发生错误的操作。
该方法可以进一步包括:使用多个内核之中的处于待机状态或空闲状态的内核,对固件的特定区域执行校验和,并且存储校验和的结果和指示固件中的已执行校验和的区域的位置信息。
该方法可以进一步包括:当存在处于待机状态或空闲状态的内核时,使用内核对固件的不同部分单独地执行校验和,以存储校验和的结果。
在另一实施例中,至少一种非暂时性计算机可读存储介质,被配置为存储指令,当至少一个处理器执行该指令时,使该至少一个处理器执行包括以下的步骤:将包括多个非易失性存储器单元的存储器装置中存储的固件加载到易失性存储器中;采用多个内核,每个内核基于易失性存储器中加载的固件执行操作;使用多个内核之中的处于待机状态或空闲状态的内核检查加载固件的易失性存储器中是否已经发生错误。
在另一实施例中,一种存储器系统可以包括:存储器装置,该存储器装置适于存储固件;存储器;以及多个内核,该多个内核适于基于从存储器装置加载到存储器中的固件来控制存储器装置以执行一个或多个操作。内核中的一些内核可以在它们的空闲状态或待机状态期间分阶段地检测所加载的固件内的缺陷。这些内核可以协作地扫描所加载的固件以发现缺陷。
附图说明
本文参照附图进行描述,其中在所有附图中,相同的附图标记指代相同的部件,并且其中:
图1示出根据本公开实施例的存储器系统;
图2示出根据本公开的另一实施例的包括存储器系统的数据处理系统;
图3示出根据本公开的另一实施例的存储器系统;
图4示出根据本公开的另一实施例的包括在控制器中或与控制器接合的存储器的配置;
图5示出根据本公开的另一实施例的静态随机存取存储器(SRAM);
图6示出根据本公开的另一实施例的用于错误检查的校验和的示例;
图7示出根据本公开的另一实施例的包括在控制器中或与控制器接合的存储器;
图8示出根据本公开的另一实施例的由控制器中的至少一个内核使用或与控制器中的至少一个内核接合的存储器的使用以及错误检查的示例;
图9示出根据本公开的另一实施例的控制器中的内核的操作状态和由内核执行的错误检查;
图10示出根据本公开的另一实施例的用于在存储器系统中进行错误恢复的方法;
图11示出根据本公开的另一实施例的存储器系统的操作方法的第一示例;并且
图12示出根据本公开的另一实施例的存储器系统的操作方法的第二示例。
本公开包括对“一个实施例”或“实施例”的参考。术语“在一个实施例中”或“在实施例中”不一定指相同的实施例。可以按照与本公开一致的任何合适方式来组合特定的特征、结构或特性。
具体实施方式
下面参照附图描述本公开的各个实施例。然而,本公开的元件和特征可以不同地配置或布置以形成其他实施例,其他实施例可以是所公开实施例中的任意一个的变型。
在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如在所附权利要求书中所使用的,这些术语指定存在所陈述的元件,并且不排除存在或添加一个或多个其他元件。权利要求中的术语并不排除该设备包括附加组件(例如,接口单元、电路等)。
在本公开中,各个单元、电路或其他组件可以被描述或要求为“被配置为”执行一个或多个任务。在这样的上下文中,“被配置为”用于通过指示单元/电路/组件包括操作期间执行那个任务或那些任务的结构(例如,电路)来表示结构。这样,即使指定的单元/电路/组件当前不工作(例如,未接通),也可以说该单元/电路/组件被配置为执行该任务。与“被配置为”一起使用的单元/电路/组件包括硬件,例如电路、存储可执行以实施操作的程序指令的存储器等。记载一个单元/电路/组件“被配置为”执行一个或多个任务显然旨在该单元/电路/组件的清楚性。此外,“被配置为”可以包括由软件和/或固件(例如,执行软件的FPGA或通用处理器)操纵以能够执行所讨论的(多个)任务的方式来操作的通用结构(例如,通用电路)。“被配置为”还可包括使制造工艺(例如,半导体制造设施)适应于制造适于实施或执行一个或多个任务的装置(例如,集成电路)。
如本文中所使用的,一些术语用作它们之后的名词的标签,并且不暗示任何类型的顺序(例如,空间的、时间的、逻辑的等)。术语“第一”和“第二”不一定需要暗示必须在第二值之前写入第一值。进一步地,虽然术语“第一”、“第二”、“第三”等可在本文使用以识别各个元件,但是这些元件不受这些术语限制。这些术语用于将一个元件与另外具有相同或相似名称的另一元件区分开。例如,可以将第一电路与第二电路区分开。
进一步地,该术语“基于”用于描述影响确定结果的一个或多个因素。该术语不排除可能影响确定结果的其他因素。也就是说,确定结果可以仅基于那些因素或者至少部分地基于那些因素。考虑措词“基于B确定A”。当在这种情况下,B是影响A的确定结果的因素,但该措词不排除A的确定结果也基于C。在其他情况下,也可以仅基于B来确定A。
下面参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出根据本公开实施例的存储器系统。例如,存储器系统110可以在计算装置或移动装置中实施或者实施为计算装置或移动装置的一部分。存储器系统110可以与主机102(见图2、图3和图9)可操作地接合,以向主机102传送数据条或从主机102接收数据条。
参照图1,存储器系统110可以包括控制器130和存储器装置150。控制器130从存储器装置150接收由主机10请求的数据并且将该数据输出到主机10,或者将从主机10接收的数据存储到存储器装置150中,以便执行从主机10请求的命令操作。存储器装置150包括多个存储块,多个存储块包括多个存储器单元,每个存储器单元能够存储一位或多位数据。例如,存储器装置150的内部配置可以根据存储器装置150的特性、使用存储器系统110的目的、存储器系统110的规格、主机10所需的性能等而改变。
根据实施例,控制器130的物理配置可以包括至少一个处理器、至少一个存储器、至少一个输入/输出端口以及用于在上述组件之间电连接的布线。
通过多个通道和多个通路,控制器130和存储器装置150可以彼此交换元数据和用户数据。例如,用户数据包括待由用户通过主机10存储的数据,并且元数据包括在存储器装置150中存储和管理用户数据所需的系统信息(例如,映射数据)。因为用户数据和元数据的属性彼此不同,所以可以在控制器130中以不同的方式来处理或管理用户数据和元数据。
随着存储器装置150的存储容量增加,状态信息的大小也增加。这种状态信息可以包括系统信息、映射信息和/或诸如在存储器装置150中的管芯、块或页面内读取、编程和擦除数据的操作所必需的操作信息。控制器130难以将所有状态信息存储在存储器114中。因此,可以将系统信息、映射信息以及用于诸如读取、编程和擦除的操作的操作信息以及用户数据存储在存储器装置150中。控制器130可以从存储器装置150中的多个管芯或块中加载诸如在存储器装置150中的页面读取、编程或擦除数据的操作所需的一些信息,然后在相应操作完成之后,将更新后的信息重新存储在存储器装置150中。
尽管在图1中未示出,但是随着能够将数据存储在存储器装置150中的存储器单元的数量增加,存储器装置150可以包括经由多个通道和多个通路而与控制器130联接的多个存储器管芯。控制器130可以根据存储器装置150的内部配置与数据一起传输或接收连接信息。例如,在存储器装置150中包括多个管芯,每个管芯包括多个块的情况下,控制器130与存储器装置150之间存在n个通道和m个通路(其中n或m是大于1的整数)。数据和连接信息可以经由n个通道和m个通路来传送。然而,为了使控制器130从存储器装置150读取数据或将数据写入至存储器装置150,根据存储器装置150的内部结构,可能需要附加控制变量或控制信号。随着存储器装置150中包括更多管芯,执行操作所需的附加信息也变得更多。
可以由存储器装置150中存储的固件来实施或提供控制器130的操作。当向存储器系统110供电时,存储器装置150中存储的固件可以被加载到控制器130中包括的或与控制器130接合的存储器144中。当执行固件时,控制器130可以采用独立地执行内部操作的多个内核192、194、196、198。内核可以接收指令并且执行计算或运算来满足指令。控制器130可以包括多个内核192、194、196、198。每个内核192、194、196、198可以彼此单独地执行操作。或者,多个内核192、194、196、198可以一起工作以对存储器144中的一组共享数据执行并行操作。固件可以包括用于执行针对存储器系统110的数据输入/输出(I/O)操作的内部操作的指令、软件或代码。在存储器系统110的制造过程期间,固件可以存储在存储器装置150中的系统区域中。在用户使用存储器系统110之后,可以根据需要更新固件。
多个内核192、194、196、198可以被理解为控制器130中包括的多个处理器或一个处理器134(见图2)。处理器134可以具有多个内核,例如双核、四核、六核等。为了使存储器系统110智能化或以更快的时间处理大量数据,控制器130可以包括多个处理器。每个内核192、194、196、198可以执行至少一个线程或至少一个任务。线程可以包括可以在每个内核192、194、196、198上执行的单独一组操作。控制器130可以基于固件,通过采用多个内核192、194、196、198来提高存储器系统110的数据输入/输出性能。在图1中,控制器130包括四个内核192、194、196、198,但是根据存储器系统110的使用目的和所需性能,控制器130可以包括两个或八个内核。
存储器144可以是一种易失性存储器。例如,存储器144可以包括静态RAM(SRAM)或动态RAM(DRAM)。存储器144可以临时存储通过固件的操作生成的并且由控制器130控制的数据、信息等。
为了稳定地支持控制器130的操作,可以无缺陷地管理或维持存储器144。或者,即使存在缺陷,也可以将存储器144中的缺陷区域替换为可替换区域。然而,当存储器系统110正在操作时,由于损耗、电磁场等,存储器144可能会发生暂时或永久性故障。例如,在存储器144具有SRAM结构的情况下,在存储器系统110的操作期间可发生位翻转错误。在SRAM通过晶体管的切换而以高速操作的情况下,可能由于电磁场而不能期望地执行晶体管的操作,这导致了位从“0”转换到“1”的位翻转(或位转换),反之亦然。即,单位单元中存储的一条数据从“0”改变为“1”,反之亦然。
如果在存储器144中发生错误,则加载在存储器144中的固件可能变形或扭曲。如果固件发生变形或扭曲,则存储器系统110可能难以正常地执行操作。进一步地,固件的变形或扭曲可能引起问题或后果。例如,难以确定存储器系统110中的操作是被正常地执行还是被异常地执行。当固件中包括错误时,可以改变基于固件执行的操作的执行条件。在条件改变的情况下,控制器130可能不执行本应当执行的操作或者可能执行不需要执行的操作。作为示例而非限制,当可能由于位翻转而改变垃圾收集的条件时,可能不必要地执行了垃圾收集,或者即使没有足够的空闲块,也可能不执行垃圾收集。另外,由于固件中的错误,可能没有执行并且可能省略了特定内部操作。例如,如果临时存储在存储器144中的更新信息或更新数据未被编程在存储器装置150中,则更新信息或更新数据可能消失,从而降低了存储器系统110中的操作的操作安全性和可靠性。因此,存储器系统110中的控制器130需要确认加载在存储器144中的固件是否被正常而无错误地维持或管理。
可以通过控制器130采用的多个内核192、194、196、198来执行对加载在存储器144中的固件的错误检查。当多个内核192、194、196、198在存储器系统110执行数据输入/输出操作时,对加载在存储器144中的固件执行错误检查时,存储器系统110的操作性能(即,数据输入/输出(I/O)性能)可能受到不利影响。因此,当多个内核192、194、196、198处于待机状态或空闲状态时,可以对固件执行错误检查以避免降低操作性能。在本文中,操作状态可以是一种操作模式、在特定时间的一种状态等。例如,待机状态可以指示装置暂时等待输入或响应以执行调度任务的状态,而空闲状态可以指示装置仍处于开机状态但不执行任何任务的状态。待机状态可不同于装置停机的睡眠模式。
当在存储器系统110的空闲状态下执行对固件的错误检查时,可能不会产生影响存储器系统110的数据输入/输出(I/O)操作的开销。然而,因为可能无法预先准确地知道何时从主机102或外部装置输入命令或数据条,所以可以通过存储器系统110来识别当前空闲状态的持续时间是否足够长以检查固件的错误。因此,控制器130采用的多个内核192、194、196、198可以在相应内核的待机状态下,单独地对固件的一部分执行错误检查,并且存储错误检查的结果。
例如,当控制器130采用的第一内核192执行数据输入/输出操作或后台操作的任务时,第一内核192可能处于待机状态,并且等待由第二内核194执行的任务的结果或响应。在第一内核192处于待机状态而不执行任何任务时,第一内核192可以用于对加载在存储器144中的固件执行错误检查。通常,特定内核从另一内核接收结果或响应的等待时间可能不会很长。在等待时间期间,特定内核不执行任何动作或任务,使得在等待时间期间,即处于待机状态期间,特定内核可以对固件的一部分执行校验和,并且存储校验和结果。
校验和是从数字数据块中导出的小型数据,以用于检测可能在数据的传输或存储过程期间已经引入的错误的目的。校验和可用于检测可能在传输或存储过程中已经发生的错误,并且验证数据完整性。校验和过程可以包括以下进程:当传输或存储数据时生成校验和,并且当接收或使用数据时验证校验和。例如,当用于传输数据的第一设备一起传送数据(数据总和=T)和校验和(-T)时,用于接收数据的第二设备可以将数据总和(T)和与该数据一起接收的校验和(-T)相加。如果加法结果中的“1”的补数(complement)为0,则可以确定不存在错误。另外,存储器系统110可以使用作为校验和的一种形式的循环冗余校验(CRC)。
根据存储器系统110的内部配置和性能,固件的大小可以变化。固件可以划分为多个部分,每个部分具有设定大小。处于待机状态的内核可以单独地对固件的不同部分执行校验和。对整个固件执行校验和时,完成校验和所需的时间可能很长。因此,当控制器130通过控制器130采用的多个内核192、194、196、198之中的、处于空闲状态和处于待机状态的内核来对固件的一部分执行校验和时,使用处于空闲状态的内核的控制器130可以减少对整个固件执行校验和所需的时间。当控制器130高效地利用空闲或待机资源来检查加载在存储器144中的固件的错误并且周期性地或不定期地检查固件的错误时,可以提高或增强存储器系统110的操作安全性和可靠性。
如上所述,当控制器130通过使用控制器130采用的多个内核192、194、196、198之中的、处于空闲状态和处于待机状态的内核来对固件的一部分执行校验和时,需要将所加载的固件的每个部分的校验和的结果以及指示每个部分内的已执行校验和的位置的位置数据(例如,在每个部分内的目前为止已检查的偏移信息)存储在单独空间中。在多个内核192、194、196、198之中,处于空闲状态和处于待机状态的内核可以在对固件中的未执行校验和的另一部分执行校验和之前,通过该单独空间中存储的结果和位置数据,来检查所加载的固件内的与该内核相对应的部分内的已执行校验和的位置。在执行校验和之后,可以存储校验和结果。当安装固件时,存储器装置150具有预先存储的校验和参考值。在对整个固件执行校验和之后,多个内核192、194、196、198之中的空闲状态内核可以将整个固件的校验和结果与校验和参考值进行比较,以确定所加载的固件是否存在错误。
在控制器130通过控制器130采用的多个内核192、194、196、198检查错误之后,控制器130可以向主机102通知操作状态以校正错误或防止由于错误而导致的故障。例如,控制器130向主机102通知停止或中止存储器系统110的内部操作以避免故障或异常操作,从而使主机102向存储器系统110发出重置命令。基于控制器的通知,主机102可以发送重置命令,而且确定关于传输到存储器系统110的命令和数据条的操作没有正常实现或完成。然后,在存储器系统110被重置之后,主机102可以将尚未完成的命令和数据再次发送到存储器系统110。通过该过程,即使加载在存储器系统110中的固件中发生错误,也可以避免存储器系统110发生故障。
参照图2,描述了根据本公开的实施例的数据处理系统100。参照图2,数据处理系统100可以包括与存储器系统110接合或联接的主机102。
例如,主机102可以包括诸如移动电话、MP3播放器和膝上型计算机的便携式电子装置或诸如台式计算机、游戏机、电视(TV)和投影仪等的非便携式电子装置。
主机102也包括至少一个操作系统(OS),其通常可以管理和控制在主机102中执行的功能和操作。OS可以提供与存储器系统110接合的主机102与需要并使用存储器系统110的用户之间的互操作性。OS可以支持与用户的请求相对应的功能和操作。作为示例而非限制,根据主机102的移动性,OS可以包括通用操作系统和移动操作系统。根据系统要求或用户环境,可以将通用操作系统分为个人操作系统和企业操作系统。但是企业操作系统可以专门用于确保和支持高性能。移动操作系统可以支持用于移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作系统。对应于用户的请求,主机102可以执行与存储器系统110可操作地接合的多个操作系统。主机102可以将与用户的请求相对应的多个命令传输到存储器系统110中,从而在存储器系统110内执行与命令相对应的操作。
存储器系统110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以将从存储器装置150读取的数据条提供到主机102,并且执行写入操作(或编程操作)以将从主机102输入的数据条存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制和管理用于数据读取、数据编程、数据擦除等的内部操作。
根据实施例,控制器130可以包括主机接口132、处理器134、错误校正电路138、电源管理单元(PMU)140、存储器接口142和存储器144。控制器130中包括的组件可以根据存储器系统110的实施方案、操作性能等而变化。例如,根据主机接口的协议,存储器系统110可以利用可与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑式闪存(CF)卡、智能媒体(SM)卡、记忆棒等。
如本公开中所使用的,术语“电路”可以指以下的任意一种和全部:(a)仅硬件电路实施方案(诸如,仅以模拟和/或数字电路的实施方案);以及(b)电路和软件(和/或固件)的组合,诸如(如适用于):(i)处理器的组合,或者(ii)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器)的部分;以及(c)需要软件或固件进行操作的电路,诸如微处理器或微处理器的一部分,即使软件或固件在物理上不存在。“电路”的这种定义适用于本申请中、包括在任何权利要求中的该术语的所有使用。作为进一步的示例,如在本申请中所使用的,术语“电路”还将覆盖仅处理器(或多个处理器)或处理器的一部分及其(或它们)的附带软件和/或固件的实施方案。例如,如果适用于特定的权利要求元素,术语“电路”还将覆盖用于存储装置的集成电路。
主机102和存储器系统110可以包括控制器或用于在特定协议下传输和接收信号、数据条等的接口。例如,存储器系统110中的主机接口132可以包括能够将信号、数据条等传输到主机102或者接收从主机102输入的信号、数据条等的设备。
控制器130中包括的主机接口132可以接收从主机102输入的信号、命令(或请求)或数据条。也就是说,主机102和存储器系统110可以使用特定协议来交换数据。主机102和存储器系统110支持的用于交换数据的协议或接口的示例包括通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIE)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动工业处理器接口(MIPI)等。根据实施例,主机接口132是一种用于与主机102交换数据的层,并且由被称为主机接口层(HIL)的固件来实施或由被称为主机接口层(HIL)的固件驱动。
可以用作传输和接收数据的接口的电子集成驱动器(IDE)或高级技术附件(ATA)可以使用电缆,该电缆包括并行连接以支持主机102和存储器系统110之间的数据传输和接收的40条布线。当多个存储器系统110连接到单个主机102时,可以通过使用与多个存储器系统110连接的位置或DIP开关,来将多个存储器系统110中的每一个指定为主设备或从设备。设置为主设备的存储器系统110可以用作主存储器装置。IDE(ATA)已经发展为Fast-ATA、ATAPI和增强型IDE(EIDE)。
串行高级技术附件(SATA)是一种与由电子集成驱动器(IDE)使用的并行数据通信接口的各种ATA标准兼容的串行数据通信接口。可以将IDE接口中的40条布线减少为SATA接口中的6条接线。例如,可以将用于IDE的40个并行信号转换为用于SATA的6个串行信号,以从一个装置传输到另一装置。由于SATA的较快数据传输和接收速率以及主机102中的较少资源消耗,SATA已经被广泛用于数据交换。SATA可以支持将多达30个外部装置连接到主机102中包括的单个收发器。另外,SATA可以支持热插拔,该热插拔允许即使在主机102和另一装置之间正在执行数据通信时,也可将外部装置附接至主机102或者将外部装置与主机102分离。因此,即使当主机102通电时,存储器系统110也可以像通用串行总线(USB)支持的装置那样被连接或断开。例如,在具有eSATA端口的主机102中,存储器系统110可以像外部硬盘一样自由地分离。
小型计算机系统接口(SCSI)是一种串行数据通信接口,用于计算机、服务器和/或其他外围装置之间的连接。与诸如IDE和SATA的其他接口相比,SCSI可以提供较高的传输速度。在SCSI中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是可以通过并行数据通信来执行主机102和每个外围装置之间的数据传输和接收。在SCSI中,很容易将诸如存储器系统110的装置与主机102连接或断开。SCSI可以支持将15个其他装置连接到主机102中包括的单个收发器。
串列SCSI(SAS)可以理解为SCSI的串行数据通信版本。在SAS中,不仅主机102和多个外围装置被串联连接,而且主机102和每个外围装置之间的数据传输和接收也可以以串行数据通信方案来执行。SAS可以通过串行电缆,而不是并行电缆,来支持在主机102和外围装置之间的连接,从而可以容易地使用SAS来管理设备并且增强或提高操作可靠性和通信性能。SAS可以支持将八个外部装置连接到主机102中包括的单个收发器。
高速非易失性存储器(NVMe)是一种至少基于高速外围组件互连(PCIe)的接口,并且被设计为增加配备有非易失性存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性。此处,PCIe可以使用插槽或专用电缆来将诸如计算装置的主机102和诸如外围装置的存储器系统110连接。例如,PCIe可以使用多个引脚(例如,18引脚、32引脚、49引脚、82引脚等)和至少一条布线(例如,x1、x4、x8、x16等),以实现每秒数百MB的高速数据通信(例如,250MB/s、500MB/s、984.6250MB/s、1969MB/s等)。根据实施例,PCIe方案可以实现每秒数十到数百千兆位的带宽。使用NVMe的系统可以充分利用诸如SSD的非易失性存储器系统110的操作速度,其中非易失性存储器系统110的操作速度高于硬盘的操作速度。
根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)连接。通用串行总线(USB)是一种可扩展的、可热插拔式即插即用串行接口,并且可在主机102和诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间提供经济高效的标准连接。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
参照图2,错误校正电路138可以校正待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位,该错误校正电路138可以包括错误校正码(ECC)编码器和ECC解码器。此处,ECC编码器可以对待编程在存储器装置150中的数据执行错误校正编码,以生成添加了奇偶校验位的编码数据,并且将该编码数据存储在存储器装置150中。ECC解码器可以检测和校正从存储器装置150读取的数据中包含的错误。换言之,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可以确定错误校正解码是否已经成功并且输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用在ECC编码过程中生成的奇偶校验位,以校正所读取数据中的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138可能不校正错误位,而是可以输出指示错误位不可校正的错误校正失败信号。
根据实施例,错误校正电路138可以基于诸如以下的编码调制执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)以及分组编码调制(BCM)等。错误校正电路138可以包括用于基于上述代码中的至少一种执行错误校正操作的所有电路、模块、系统或装置。
电源管理单元(PMU)140可以控制在控制器130中提供的电力。PMU 140可以监测供应到存储器系统110的电力(例如,提供到控制器130的电压),并且将电力提供到控制器130中包括的组件。当供应到存储器系统110的电力不稳定时,PMU 140不仅可以检测通电或断电,还可以生成触发信号以使存储器系统110能够紧急备份当前状态。根据实施例,PMU 140可以包括能够累积可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作用于处置控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求来控制存储器装置150。当存储器装置150是闪速存储器时,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号,并且可以处理输入到存储器装置150或从存储器装置150输出的数据。例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处置在控制器130和存储器装置150之间交换的命令和数据的接口。根据实施例,存储器接口142可以通过作为与存储器装置150交换数据的组件、被称为闪存接口层(FIL)的固件来实施或由其驱动。
根据实施例,存储器接口142可以支持开放式NAND闪存接口(ONFi)、Toggle模式等,以用于与存储器装置150进行数据输入/输出。例如,ONFi可以使用包括能够支持以8位或16位数据为单位的双向传输和接收的至少一条信号线的数据路径(例如,通道、通路等)。控制器130与存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)和Toggle双倍数据速率(DDR)的至少一个接口来实现。
存储器144可以是存储器系统110或控制器130中的一种工作存储器,同时存储由于存储器系统110和控制器130中的操作而发生或传递的临时数据或事务数据。例如,在响应于来自主机102的请求而将从存储器装置150输出的读取数据条输出到主机102之前,存储器144可以临时存储该读取数据条。另外,在将从主机102输入的写入数据条编程到存储器装置150中之前,控制器130可以将该写入数据条临时存储在存储器144中。当控制器130控制对存储器装置150的诸如数据读取、数据写入、数据编程、数据擦除等的操作时,可以将在存储器系统110的控制器130和存储器装置150之间传输或生成的数据存储在存储器144中。除了读取数据或写入数据之外,存储器144可以存储用于执行在主机102和存储器装置150之间输入或输出数据的操作所需的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。例如,尽管图2示出了存储器144设置在控制器130内,但是实施例不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以由外部易失性存储器来实现,该外部易失性存储器具有在存储器144和控制器130之间传送数据和/或信号的存储器接口。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求来控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以执行固件以控制存储器系统110中的编程操作或读取操作。在本文中,固件可以被称为闪存转换层(FTL)。稍后参照图3详细描述FTL的示例。根据实施例,处理器134可以利用微处理器或中央处理单元(CPU)来实施。
进一步地,根据实施例,可以利用至少一个多核处理器来实施存储器系统110,该至少一个多核处理器诸如图1中示出的第一至第四内核192、194、196、198。多核处理器是一种集成两个或更多个内核的电路或芯片,其中两个或更多个内核被认为是不同的处理区域。例如,当多核处理器中的多个内核独立地驱动或执行多个闪存转换层(FTL)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多核处理器中的不同内核来独立地执行存储器系统110中的数据输入/输出(I/O)操作。
控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。进一步地,存储器系统110可以独立于从诸如主机102的外部装置输入的命令或请求。通常,由控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操作,而由控制器130独立地(例如,不管或者没有从主机102输入的请求或命令)执行的操作可以被认为是后台操作。控制器130可以执行前台操作或后台操作,以关于存储器装置150中的数据进行读取、写入或编程、擦除等。另外,可以将与作为从主机102传输的设置命令的设置参数命令或的设置特征命令相对应的参数设置操作认为是前台操作。作为在没有从主机102传输命令的情况下执行的后台操作时,控制器130可以在存储器装置150中执行垃圾收集(GC)、损耗均衡(WL)、用于识别和处理坏块的坏块管理等。
根据实施例,基本相似的任务或操作可以作为前台操作和后台操作两者执行。例如,如果存储器系统110响应于从主机102输入的请求或命令(例如,手动GC)来执行垃圾收集,则垃圾收集可以被认为是前台操作。然而,当存储器系统110可以独立于主机102而执行垃圾收集(例如,自动GC)时,垃圾收集可以被认为是后台操作。
当存储器装置150包括包含非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以被配置为执行关于从主机102输入的多个请求或命令的并行处理,以提高存储器系统110的性能。例如,所传输的请求或命令可以针对存储器装置150中的多个管芯或多个芯片,并且由存储器装置150中的多个管芯或多个芯片同时处理。控制器130中的存储器接口142可以通过至少一个通道和至少一个通路而连接到存储器装置150中的多个管芯或芯片。当控制器130响应于请求或命令,通过通道或通路来在多个管芯中分布和存储多条数据时,可以同时并行地执行相应的多个操作。这样的处理方法或方案可以被认为是交错方法。交错方法可以提高存储器系统110的数据I/O性能。
作为示例而非限制,控制器130可以识别关于与存储器装置150中包括的多个存储器管芯相关联的通道(或通路)的状态或状况。控制器130可以确定每个通道或每个通路是否处于忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态中的一个状态。控制器对指令(和/或数据)通过哪个通道或通路传递的确定可以与物理块地址相关联,例如指令(和/或数据)被传递到哪个管芯。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述关于存储器装置150的相关特性或属性的块参数或页面参数。描述符是具有特定格式或结构的数据。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定利用哪个通道或通路来交换指令或数据。
参照图2,存储器系统110中的存储器装置150可以包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,每个存储块152、154、156可以包括一起擦除的非易失性存储器单元组。每个存储块152、154、156可以包括多个页面,这些页面是一起读取或编程的非易失性存储器单元组。尽管图2中未示出,但是每个存储块152、154、156可以具有三维堆叠结构,以具有高集成度。进一步地,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块152、154、156。存储器装置150的配置可以根据存储器系统110需要或期望的性能而变化。
根据一个存储器单元中可以存储或表示的位的数量,多个存储块152、154、156中的每一个可以是诸如单层单元(SLC)存储块、多层单元(MLC)存储块等的不同类型的存储块中的任意一种。此处,SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可以具有较高的数据I/O操作性能和较高的耐久性。MLC存储块包括由每个存储多位数据(例如,两位或更多位数据)的存储器单元实施的多个页面。与SLC存储块相比,针对相同空间,MLC存储块可以具有更大的存储容量。在存储容量方面,MLC存储块可以被高度集成。在实施例中,存储器装置150可以利用诸如双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。双层单元(DLC)存储块可以包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可以包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可以包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个能够存储5位数据或更多位数据的存储器单元实施的多个页面的块来实施。
根据实施例,控制器130可以在存储器系统150中,使用多层单元(MLC)存储块作为在一个存储器单元中存储一位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可能比SLC存储块的数据输入/输出速度慢。也就是说,当将MLC存储块用作SLC存储块时,可以减少用于读取或编程操作的裕量。当将多层单元(MLC)存储块用作SLC存储块时,控制器130可以利用多层单元(MLC)存储块的较快的数据输入/输出速度。例如,控制器130可以将MLC存储块用作缓冲器以临时存储数据条,因为该缓冲器可能需要高数据输入/输出速度以提高存储器系统110的性能。
进一步地,根据实施例,控制器130可以将多条数据多次地编程在多层单元(MLC)中,而无需对特定MLC存储块执行擦除操作。通常,非易失性存储器单元具有不支持数据重写的特点。然而,控制器130可以利用多层单元(MLC)可以存储多位数据的特点,以便将多条1位数据多次地编程在MLC中。对于MLC重写操作,当将一条1位数据编程在非易失性存储器单元中时,控制器130可以将编程次数存储为单独的操作信息。根据实施例,可以在将另一条数据重写在相同非易失性存储器单元中之前,执行将非易失性存储器单元的阈值电压均匀均衡的操作。
在本公开的实施例中,存储器装置150被实施为诸如闪速存储器的非易失性存储器,闪速存储器诸如NAND闪速存储器、NOR闪速存储器等。可选地,存储器装置150可以由相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一个来实施。
参照图3,描述了根据本公开的另一实施例的存储器系统中的控制器。控制器130与主机102和存储器装置150进行协作。如图所示,控制器130包括主机接口132、闪存转换层(FTL)240以及先前结合图2示出的主机接口132、存储器接口142和存储器144。
尽管在图3中未示出,但是根据实施例,图2中描述的错误校正电路138可以被包括在闪存转换层(FTL)240中。在另一实施例中,错误校正电路138可以被实施为包括在控制器130中或与控制器130相关联的单独模块、电路、固件等。
主机接口132用于处置从主机102传输的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且以存储顺序将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可以将从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。
多个相同类型的命令,例如所有读取命令或写入命令可以按顺序从主机102传输,或者不同类型的命令可以在被主机102混合或打乱之后被传输到存储器系统110。例如,可以传递用于读取数据的多个命令(读取命令),或者可以将用于读取数据的命令(读取命令)和用于编程/写入数据(写入命令)交替地传输到存储器系统110。进一步地,也可以一起传输相同类型的多条数据,并且可以分开地传输不同类型的多条数据。主机接口132可以将从主机102传输的命令、数据等顺序地存储到命令队列56。之后,主机接口132可以根据已经从主机102输入的命令、数据等的类型来估计或预测控制器130将执行哪种内部操作。主机接口132可以至少基于命令、数据等的类型来确定它们的处理顺序和优先级。根据从主机102传输的命令、数据等的类型,主机接口132中的缓冲器管理器52被配置为确定缓冲器管理器是否应将命令、数据等存储在存储器144中,或者缓冲器管理器是否应将命令、数据等传递到闪存转换层(FTL)240中。事件队列54接收从缓冲器管理器52输入的事件,这些事件将响应于从主机102传输的命令、数据等而由存储器系统110或控制器130内部地执行和处理,以便按照接收的顺序将事件传递到闪存转换层(FTL)单元240中。
根据实施例,图3中描述的闪存转换层(FTL)240可以用作执行数据输入/输出(I/O)操作的多线程方案。可以通过使用多线程的多核处理器来实施多线程FTL,该多核处理器可以采用图1中描述的第一至第四内核192、194、196、198。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理从事件队列54输入的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块执行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以根据从主机接口单元132传递的读取命令和编程命令以及事件,使用映射管理器(MM)44和块管理器48来处置或处理请求。主机请求管理器(HRM)46可以向映射管理器(MM)44发送查询请求,以确定与事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可以将读取请求与物理地址一起发送到存储器接口142,以处理读取请求(处置事件)。另一方面,主机请求管理器(HRM)46可以向块管理器48发送编程请求(写入请求),以将数据编程到存储器装置150中的特定空页面(没有数据),然后可以将与编程请求相对应的映射更新请求传输到映射管理器(MM)44,以对在将逻辑地址和物理地址彼此关联的映射信息中的、与所编程数据有关的项目进行更新。
此处,块管理器48可以将从主机请求管理器(HRM)46、映射数据管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强存储器系统110(参见图2)的编程或写入性能,块管理器48可以收集编程请求并且将用于多平面和单触发编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48向存储器接口142发送若干闪存编程请求,以增强或最大化多通道和多方向闪存控制器的并行处理。
另一方面,块管理器48可以被配置为根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定需要进行垃圾收集时选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据移动到空块,并且擦除包含被移动的有效数据的块,使得块管理器48可以具有足够的空闲块(没有数据的空块)。如果块管理器48将关于待擦除的块的信息提供到状态管理器42,则状态管理器42可以检查待擦除的块中的所有闪存页面以确定每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可以识别在每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面,向块管理器48发送编程请求。当编程操作完成时,可以通过更新映射管理器44来更新映射表。
映射管理器44可以管理逻辑-物理映射表。映射管理器44可以处理由主机请求管理器(HRM)46或状态管理器42生成的诸如查询、更新等的请求。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可以向存储器接口142发送读取请求以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过特定阈值时,可以将编程请求发送到块管理器48,以便生成干净高速缓存块,并且可以将脏映射表存储在存储器装置150中。
另一方面,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可以对相同逻辑地址的页面编程最新版本的数据,并且即时地发出更新请求。当状态管理器42在有效页面的复制尚未完成的状态下请求映射更新时,映射管理器44可能不执行映射表更新。这是因为如果状态管理器42请求更新映射并且稍后才完成有效页面复制,则发出的是具有旧物理信息的映射请求。仅当最新映射表仍然指向旧物理地址时,映射管理器44才可以执行映射更新操作以确保准确性。
图4示出了图1至图3中的控制器130中的存储器。根据实施例,存储器可以被包括在控制器130中。可选地,存储器可以电连接到控制器130。
参照图4,存储器114可以包括多个存储器单元364。多个存储器单元364可通过对应于多个字线WL0至WLx的多个行地址和对应于多个位线BL0至BLx的多个列地址而单独地寻址。因此,可以通过多个字线WL0至WLx和多个位线BL0至BLx来访问多个存储器单元364中存储的多条数据。可以以如图4所示的矩阵形式来概念性示出多个存储器单元364。然而,图4的矩阵的形式是概念性的,并且存储器114中的包括高度集成元件(例如,晶体管)的多个存储器单元364可以具有平面结构或立方结构,并且可以根据实施例对存储器单元的结构进行各种修改。
多个字线WL0至WLx可以由行解码器选择性地启用。行解码器可以将电压供应至与控制器130的操作期间所请求的数据的地址相对应的特定字线。
根据实施例,存储器114可以配置有可以具有不同结构的多个存储器单元364。作为示例而非限制,存储器单元364可以包括静态随机存取存储器(SRAM)存储器单元364a,该SRAM存储器单元364a包括多个晶体管和反相器锁存器。具体地,SRAM存储器单元364a可以包括作为开关的多个晶体管和反相器锁存器,该多个晶体管经由一对位线BLn、/BLn之间的单个字线WLm而导通或断开,并且反相器锁存器形成在多个晶体管之间存储数据条的闭环。
作为另一示例,存储器单元364可以包括动态随机存取存储器(DRAM)存储器单元364b,该DRAM存储器单元364b包括一个晶体管和一个电容器。具体地,DRAM存储器单元364b可以包括用作开关晶体管的晶体管和电容器,该晶体管通过单个字线WLm而导通/断开,以及电容器能够存储与数据条相对应的电荷量。当通过施加到字线WLm的电压使晶体管导通时,电容器中存储的电荷可以流入位线BLn。
图5示出根据本公开实施例的静态随机存取存储器(SRAM)。图5中的SRAM可以是图1至图4中的存储器114的一部分。
参照图5,存储器单元364可以经由一对位线BLn、/BLn而连接到预充电电路362以及写入驱动器366和/或读取驱动器368。尽管在图5中示出了单个存储器单元364,但是多个存储器单元可以连接到该对位线BLn、/BLn。
预充电电路362可以包括作为开关元件的多个晶体管,该多个晶体管通过预充电信号PCn而导通或断开。多个晶体管可以联接到各个位线BLn、/BLn。
根据实施例,写入驱动器366可以包括作为开关元件的多个晶体管和至少一个反相器,该多个晶体管通过写入使能信号EW、/EW而导通或断开,以及至少一个反相器用于传送数据条。图5示出将待由用户输入的数据的反相值(/Dn)传递到写入驱动器366的示例。写入驱动器366可以设计为根据写入驱动器366中的反相器的数量来传送数据的原始值或相反值。
可以通过操作为开关元件的多个晶体管来将存储器单元364中存储的数据传送到一对位线BLn、/BLn,该多个晶体管通过启用字线WLm而导通。分别将存储器单元364中存储的数据的两个相反值传送到位线BLn、/BLn。换言之,存储器单元364中的数据经由位线BLn、/BLn而被传递到读取驱动器368。读取驱动器368可以识别通过位线BLn、/BLn传递的两个相反值之间的差值,以便基于该差值来输出数据Dn。
图6示出根据本公开的另一实施例的用于错误检查的校验和的示例。详细地,图6示出作为校验和的实施例的使用循环冗余校验方法来在存储器系统中检查固件的错误的示例。
参照图6,控制器130可以包括编码器510和解码器520。例如,编码器510可以确定关于固件数据的循环冗余校验(CRC),该固件数据通过将固件划分成每个具有设定大小的多个单元而获得。解码器520可以使用从存储器装置150传送的循环冗余校验(CRC)来检查多个单元的固件数据中是否存在错误。在本文中,循环冗余校验(CRC)是存储装置中通常用于检测原始数据的意外变化的错误检测代码。输入存储器系统的多个单元或块的固件数据基于对它们内容的多项式除法的余数而获得附带的简短校验值。根据实施例,当控制器130包括编码器510时,对于从外部源传输的固件数据,可以确定循环冗余校验(CRC)并且存储在存储器装置150中。在另一实施例中,当控制器130仅包括解码器520(不包括编码器510)时,在制造存储器系统110时将固件数据的循环冗余校验(CRC)存储在存储器装置150中。
编码器510可以分配N个位以用于记录关于固件数据的循环冗余校验(CRC)。例如,可以将可包括固件数据和N位的循环冗余校验(CRC)的数据除以N+1位的除数而获得余数,并且将该余数确定为N位的循环冗余校验(CRC)。控制器130可以将包括固件数据和N位的循环冗余校验(CRC)的数据存储在存储器装置150中。
控制器130可以从存储器装置150加载包括固件数据和N位的循环冗余校验(CRC)的数据。解码器520可以通过使用除数来除以所加载的数据。例如,当通过将所加载的数据除以除数而获得的余数为0时,解码器520可以确定固件数据中不存在错误。另一方面,如果通过将所加载的数据除以除数而获得的余数不为0,则解码器520可以确定固件数据中存在错误。
存储器装置150中存储的固件的大小可以根据存储器系统110的设计、配置、功能等而变化。另外,固件数据的大小也可以根据实施例而变化,该固件数据的大小为由内核通过校验和而执行的错误检查的单元或块。
图7描述了根据本公开的另一实施例的包括在控制器中或与控制器接合的存储器。参照图1至图3,当将存储器装置150中存储的固件加载到存储器144中时,控制器130可以采用多个内核192、194、196、198来执行数据I/O操作和错误检查。
参照图7,当控制器130采用多个内核192、194、196、198时,存储器144可以由多个内核192、194、196、198共享和使用。存储器144可以被划分为每个具有设定大小的存储段MS000至MS215。根据存储器144的存储容量和存储器系统110的内部配置或操作方法,存储段的大小可以不同。在图7中,将从第一存储段MS000到第102存储段MS101的第一区域分配给第一内核192,将从第103存储段MS102到第204存储段MS203的第二区域分配给第二内核194。另外,可以将从第205存储段MS204开始的第三区域分配给第三内核196。第一至第三区域的大小可以彼此相同或不同。第一至第三区域可以顺序地或随机地布置在存储器中。例如,可以响应于在每个操作的开始、结束或重置定时,或者当多个内核192、194、196、198之中的内核请求存储器系统110中的存储器144的空间时生成的内部命令,动态地改变第一至第三区域中的开始和结束位置,诸如第一区域的第一存储段MS000和第102(最后)存储段MS101。
基于固件的多个内核192、194、196、198可以请求执行操作所需的空间,并且存储器144可以为每个内核分配所需的空间。当四个内核处于操作状态时,可以分开且单独地分配每个内核所需的空间。分配给每个内核的区域可以临时存储在操作期间生成、更新或加载的状态信息、参数、用户数据、映射信息等。
根据实施例,当内核192、194、196、198中的任意一个处于待机状态或空闲状态时,可以检查在分配给内核192、194、196、198的每一个的区域中是否发生了错误。如果在分配给内核192、194、196、198中的一个的特定区域中发现错误,则控制器130可以重新调度已经由与该特定区域相对应的内核执行的操作,以避免故障。在这种情况下,控制器130可以将重新调度的操作再次分配给相同内核或者将重新调度的操作分配给处于待机状态或空闲状态的另一内核。
根据实施例,当多个内核192、194、196、198之中的内核处于待机状态时,该内核可以执行校验和,以检查是否已经发生错误并且存储校验和结果。然后,当多个内核192、194、196、198之中的内核处于空闲状态时,该内核可以使用所存储的校验和结果来确定在分配给该内核的区域中是否存在错误。
根据实施例,加载在存储器144中的固件可以由多个内核192、194、196、198共享。可以将固件复制或安装在分配给每个内核192、194、196、198的区域中。另外,根据实施例,可以根据功能特性将固件划分为多个模块。固件中的一些模块可以由内核192、194、196、198中的每一个单独且独立地使用,并且一些模块可以由内核192、194、196、198共享。在这种情况下,可以将共享模块加载到存储器144的共享区域中。可以将非共享模块单独地加载到存储器144内的分配给相应内核的每个区域。
图8示出根据本公开的另一实施例的存储器使用和错误检查的示例,该存储器由控制器中的至少一个内核使用或者与控制器中的至少一个内核接合。具体地,图8示出当控制器130采用单个内核时执行对存储器144的错误检查的示例。
参照图8,假设将存储器144中的第一存储段MS000至第102存储段MS101分配给控制器130采用的单个内核。根据实施例,从第一存储段MS000到第102存储段MS101的区域可以被划分为四个子区域:代码区域、全局变量区域、动态分配区域和局部变量区域。代码区域是存储由内核执行的固件代码的至少一部分的区域。该代码区域也可以称为文本区域。控制器130采用的内核可以执行代码区域中加载的固件代码的一部分。全局变量(或静态变量)区域是存储组成数据的全局变量和静态变量的区域。当控制器采用的内核基于固件开始操作时,可以分配全局变量区域。当控制器130采用的内核不采取进一步动作时,可以释放全局变量区域。另外,局部变量区域是存储与函数调用有关的局部变量和参数的区域。可以基于函数调用而分配全局变量区域,并且可以当函数调用完成时释放全局变量区域。当配置固件时,可以确定局部变量区域的大小。根据实施例,局部变量区域可以具有诸如堆叠结构(stack)的数据结构。动态分配区域可以是在控制器130采用的内核基于固件执行操作时根据需要而分配和释放的空间。
如图8所示,如上所述,控制器130采用的内核可以将存储器144中的分配区域分割为针对各种目的或用途而控制的子区域。根据实施例,加载在代码区域中的固件代码可以是参照图1至图7描述的用于检查错误的校验和的目标。如果不存在错误,则加载在代码区域中的固件代码可不改变,直到更新了新版本的固件代码。因此,可以通过诸如校验和的简单操作来检查存储器144的代码区域中是否存在错误。例如,参照图6,当加载在代码区域中的设置单元的固件数据包括循环冗余校验(CRC)时,可以通过使用相应单元中的循环冗余校验(CRC)来检查加载在存储器144中的该单元的固件是否具有错误。
可以将在控制器130采用的内核执行操作时生成、删除或修改的数据存储在全局变量区域、动态分配区域或局部变量区域中。但是,当全局变量区域、动态分配区域或局部变量区域中存储的数据不固定时,可能难以通过校验和来发现那些区域中是否存在任何错误。
图9示出根据本公开的另一实施例的控制器中的内核的操作状态和由内核执行的错误检查。
参照图9,控制器130采用的内核可以处于运行/忙碌状态、空闲状态和等待/就绪状态中的任何一种状态。在运行/忙碌状态下,控制器130采用的内核执行与对应于从主机102输入的命令的数据输入/输出操作有关的命令,或者在没有主机102的指令的情况下执行后台操作。
等待/就绪状态可以指示控制器130采用的内核正在等待从存储器系统110中的另一内核或另一组件传送的响应或结果。在本文中,等待/就绪状态可以称为待机状态。当特定内核处于等待/就绪或待机状态时,该内核可以保持任务,并且不执行任何新任务。因此,处于等待/就绪状态的内核可以对加载在存储器144中的固件的一部分执行错误检查,并且存储该部分错误检查的结果。即使等待/就绪状态很短暂,对具有较小大小的、仅作为固件的一部分的单元或块执行校验和也不需要大量资源,使得执行这种校验和的开销不会过于繁重。
在空闲状态下,控制器130采用的内核可以不执行任何任务。即使处于空闲状态的内核对固件执行校验和或收集先前执行的校验和的结果,以针对加载在存储器144中的固件检查是否存在错误,通常也不需要大量开销。
如图1所示,当控制器130采用多个内核192、194、196、198时,多个内核192、194、196、198之中的处于等待/就绪状态的内核可以对加载在存储器144中的固件的一部分执行校验和。例如,处于等待/就绪状态的第一内核可以对固件的一部分执行校验和,然后存储校验和结果以及指示固件内的完成校验和的位置(例如,固件的特定部分)的信息。当第一内核进入运行/忙碌状态时,处于等待/就绪状态的另一内核(例如,第二内核)可以参考由第一内核存储的位置来对固件的另一部分执行校验和。另一内核可以对固件的另一部分执行校验和,然后存储校验和结果以及指示固件内的完成校验和的位置的信息。
控制器130采用的内核将保持处于空闲状态多长时间是难以预测的。因此,当在内核处于空闲状态时可能未完成对加载在存储器144中的固件的错误检查时,存储器系统110可能容易出现故障。然而,在本公开的实施例中,可以由多个内核之中的处于待机(等待/就绪)状态的内核对加载在存储器144中的固件的部分执行校验和,来代替对加载在存储器144中的整个固件执行校验和,因此处于空闲状态的内核可以使用较少的所需资源来执行对固件的错误检查。该过程可以提供并且允许对固件的一部分进行错误检查,使得处于空闲状态的内核可以容易地完成对整个固件的错误检查,从而提高或增强存储器系统110的操作稳定性和可靠性。
图10示出根据本公开的另一实施例的在存储器系统中进行错误恢复的方法。具体地,图10示出加载在存储器144中的固件中发生错误并且该错误不能通过控制器130采用的多核190而自恢复的情况。
参照图10,存储器系统110可以包括控制器130和存储器装置150。控制器130和存储器装置150可以通过多个通道和多个通路连接。控制器130可以包括多核190。根据实施例,多核190可以包括参照图1描述的多个内核192、194,196、198。
多核190可以使用存储器144。控制器130可以将存储器144划分为各个区域,并且分配多核190中包括的每个内核所需的空间(可以是一个或多个区域)。多核190可以通过处于待机状态或空闲状态的内核,对加载在存储器144中的固件执行错误检查。多核190中的多个内核可以在处于待机状态或空闲状态时对加载在存储器144中的固件的一部分执行校验和,并且将存储器装置150中存储的校验和参考值与校验和结果进行比较。因此,可以确定加载在存储器144中的固件是否存在错误。
当多核190确定加载在存储器144中的固件是否存在错误时,错误检查电路188基于是否存在错误来改变存储器系统110的操作状态。存储器系统110可以将改变后的操作状态传输到主机102。例如,主机102可以将诸如读取命令、写入命令、状态检查命令等的小型计算机系统接口(SCSI)命令传输到存储器系统110。存储器系统110可以在执行对应于从主机102输入的SCSI命令的操作之后,将响应传输到主机102。如果错误检查电路188确定加载在存储器144中的固件中存在错误,则错误检查电路188可以通知主机102存储器系统110卡住。在实施例中,存储器系统110可以不将响应传输到主机102。例如,针对由存储器系统110接收的读取命令,如果不存在错误,则控制器130中的多核190中的一个可以执行与读取命令相对应的操作,并且将响应于读取命令的数据传输到主机102。然而,当存在错误时,控制器130可以不向主机102传输与读取命令有关的响应和数据条,但是错误检查电路188可以将改变后的操作状态传送给主机102。根据实施例,当存储器系统110没有传输响应于从主机102输入的命令的任何响应时,主机102可以确定存储器系统110处于卡住状态。
当存储器系统110向主机102通知卡住状态或者主机102没有从存储器系统110接收到与所传送的命令相对应的响应时,主机102可以判断存储器系统110存在问题。确定存储器系统110存在问题的主机102可以将重置命令传输到存储器系统110。
响应于从主机102输入的重置命令,控制器130可以被重置。控制器130的存储器144中存储的数据可以被清除到存储器装置150或被删除。控制器130可以将存储器装置150中存储的固件重新加载到存储器144中。如果在重置之前的加载在存储器144中的固件的错误是由诸如位翻转的临时问题而引起的,则可以通过存储器系统110的重置和重新加载操作来恢复固件的错误。
根据实施例,当每当加载在存储器144中的固件发生错误时,就跟踪并记录发生错误的位置时,则错误检查电路188可以检测永久性缺陷并且利用存储器144中的另一区域(例如,冗余区域)来替换该永久性缺陷。在这种情况下,错误检查电路188可以避免将存储器144中的包括永久性缺陷的区域分配用于操作或者分配给内核,从而提高存储器系统110的操作可靠性和安全性。
图11描述了根据本公开的另一实施例的存储器系统的操作方法的第一示例。
参照图11,一种操作存储器系统的方法可以包括:将包括非易失性存储器单元的存储器装置中存储的固件加载到易失性存储器中(S1002);采用多个内核以基于所加载的固件来执行内部操作(S1004);并且使用多个内核之中的处于空闲或待机状态的内核来检查加载在易失性存储器中的固件的错误(S1006)。当内核之中的至少一个内核处于待机状态时,相应的内核可以对加载在易失性存储器中的固件的一部分执行错误检查。当相应的内核处于活动/忙碌状态时,处于待机状态的另一内核可以对固件的另一部分执行错误检查。通过这些进程,存储器系统可以高效地利用空闲或待机资源来检查加载在易失性存储器中的整个固件的错误,并且可以减少此类检查可能对存储器系统的数据输入/输出(I/O)速度和数据输入/输出(I/O)性能造成的不利影响。
尽管未示出,但是该操作存储器系统的方法可以进一步包括:响应于该错误而通知主机停止内部操作。例如,当发现加载在存储器系统的易失性存储器中的固件的错误时,存储器系统可以通知主机该存储器系统卡住。另外,根据实施例,为了使主机可以判断或确定存储器系统处于卡住状态,存储器系统可以阻塞或阻止传输到主机的、与完成的操作相对应的响应。另外,该操作存储器系统的方法可以进一步包括:响应于从主机输入的重置命令,从存储器装置重新加载固件。当由于易失性存储器中的临时事件(例如,位翻转)而引起在加载在易失性存储器中的固件中发现的错误时,该错误可以通过重新加载来恢复。
尽管未示出,但是检查固件是否存在错误的步骤(S1006)可以包括:通过处于待机状态的内核对加载在易失性存储器中的固件的一部分执行校验和,然后存储校验和的第一结果。加载在易失性存储器中的固件的大小可以根据存储器系统的内部配置和操作方法而变化。代替一次性地对整个固件执行校验和,可以将固件划分为多个小单元,并且待机状态内核可以对基于可用操作裕量(例如,处于待机状态的可用时间)而覆盖的固件的一部分执行校验和,并且存储校验和结果。
进一步地,检查固件是否存在错误的步骤(S1006)可以进一步包括:使用处于空闲状态的内核来对加载在易失性存储器中的固件的、尚未通过处于待机状态的内核而被先前检查的另一部分执行校验和。处于空闲状态的内核可以存储校验和的第二结果。空闲状态内核可以将第一结果和第二结果与参考值进行比较,以确定加载在存储器中的固件是否存在错误。当通过处于待机状态的内核对固件的一部分执行校验和时,可以高效地利用资源来对加载在易失性存储器中的整个固件执行错误检查。
另一方面,该操作存储器系统的方法可以进一步包括以下步骤:当与数据输入/输出操作有关的任何输入被传递到处于待机状态或空闲状态并且正在执行错误检查的内核时,停止检查所加载的固件是否存在错误的操作。当在对固件的一部分执行校验和时,内核从待机状态转换为活动/忙碌状态时,停止校验和操作。
根据实施例,该操作存储器系统的方法可以进一步包括:使用处于待机状态和空闲状态的内核,以具有设定大小的单元对固件执行校验和,并且存储校验和结果以及固件的已被执行校验和的位置。由于对较小单元的固件执行校验和,因此可以更容易地利用处于待机状态的内核来对固件执行错误检查。当在多个内核之中存在处于待机状态或空闲状态的多个内核时,可以单独地且分开地对固件的不同部分执行校验和,并且可以存储多个校验和结果。在对固件的多个部分执行校验和之后,可以将固件的多个部分的校验和结果进行收集和汇总,以作为对整个固件的校验和结果。
图12示出根据本公开的另一实施例的存储器系统的操作方法的第二示例。
参照图12,一种操作存储器系统的方法可以包括:将易失性存储器中的、各个内核所请求的区域分配给多个内核(S1012);通过多个内核之中的处于待机状态的内核来对一个或多个所分配的区域执行部分错误检查(S1014);通过多个内核之中的处于空闲状态的内核来收集部分错误检查的结果,以确定易失性存储器中是否存在错误(S1016);基于是否发生错误来改变操作状态,以将改变后的操作状态通知主机(S1018)。可以将易失性存储器中的区域分配给控制器采用的多个内核中的每一个。当相应内核处于待机状态或空闲状态时,多个内核中的每一个可以对易失性存储器中的相应分配区域执行错误检查操作。
可以动态地确定易失性存储器中的分配给每个内核的区域。当处于待机状态或空闲状态时,控制器采用的每个内核可以检查所分配的区域中的错误,并且尝试恢复任何检测到的错误。但是,当发生内核均无法恢复的错误时,控制器可以通知主机存储器系统卡住。
该操作存储器系统的方法可以进一步包括:响应于从主机输入的重置命令来重置存储器系统(S1020)。当主机识别到存储器系统卡住时,主机可以将重置命令传送到存储器系统。存储器系统可以响应于从主机输入的重置命令来重置易失性存储器,并且重新加载在包括非易失性存储器单元的存储器装置中存储的固件。通过重置易失性存储器并且重新运行操作,存储器系统可以恢复先前发生在易失性存储器中的错误或由该错误引起的故障。
根据本公开的实施例,一种数据处理系统、操作该数据处理系统的方法以及控制该数据处理系统中的操作的方法,可以提供一种能够通过检测并恢复支持控制器的操作的易失性存储器中的错误,来验证操作以提高存储器系统的操作可靠性的存储器系统。
在本公开的实施例中,即使在存储器系统中执行数据输入/输出(I/O)操作时,执行在存储器中执行搜索并且恢复错误的操作,存储器系统也可以保持存储器系统的数据输入/输出(I/O)速度和数据输入/输出(I/O)性能,从而提高存储器系统的操作效率。
虽然已经针对具体实施例说明和描述了本发明,但是根据本公开,对于本领域技术人员显而易见的是,在不脱离本公开中所附权利要求中限定的精神和范围的情况下,可以进行各种改变和修改。本发明包括落入权利要求书范围内的所有变型和修改。
Claims (20)
1.一种存储器系统,包括:
存储器装置,所述存储器装置包括存储固件的多个非易失性存储器单元;以及
控制器,所述控制器将所述固件加载到易失性存储器中并且采用多个内核,所述多个内核中的每个能够基于所述固件执行操作,
其中所述多个内核之中的处于待机状态或空闲状态的内核检查加载所述固件的所述易失性存储器中是否已经发生错误。
2.根据权利要求1所述的存储器系统,其中所述控制器进一步:当发现错误时停止或中止所述操作,改变操作状态以指示在所述存储器系统中停止了所述操作,并且通知主机改变后的操作状态。
3.根据权利要求2所述的存储器系统,其中所述控制器进一步:响应于从所述主机输入的重置命令,将所述固件从所述存储器装置重新加载到所述易失性存储器中。
4.根据权利要求1所述的存储器系统,其中所述控制器进一步:分配所述易失性存储器中的由所述多个内核单独请求的区域;通过处于所述待机状态的内核对所述区域中的一些区域执行错误检查;通过处于所述空闲状态的内核收集所述错误检查的结果以确定所述易失性存储器中是否发生错误;基于是否发现错误来改变操作状态,并且通知主机改变后的操作状态。
5.根据权利要求1所述的存储器系统,其中处于所述待机状态的内核进一步对加载在所述易失性存储器中的所述固件的一部分执行校验和,并且存储所述校验和的第一结果。
6.根据权利要求5所述的存储器系统,
其中处于所述空闲状态的内核进一步对所述固件中的、处于所述待机状态的内核未执行所述校验和的一部分执行所述校验和,并且存储对所述固件的所述部分执行的所述校验和的第二结果,并且
其中处于所述空闲状态的内核进一步将所述第一结果和所述第二结果与参考值进行比较以确定是否发现错误。
7.根据权利要求1所述的存储器系统,其中所述控制器进一步:当与数据输入/输出操作相关的输入被分配给处于所述待机状态或所述空闲状态的内核时,停止或中止用于发现错误的任务。
8.根据权利要求1所述的存储器系统,其中处于所述待机状态或所述空闲状态的内核进一步对所述固件的一部分执行校验和,并且存储校验和结果和指示所述固件内的已经执行校验和的部分的位置的信息。
9.根据权利要求1所述的存储器系统,其中当在所述多个内核之中存在处于所述待机状态或所述空闲状态的内核时,所述内核单独地对所述固件的不同部分执行校验和,以存储校验和结果。
10.根据权利要求1所述的存储器系统,其中所述控制器包括错误检查电路,所述错误检查电路监测所述多个内核的状态,并且响应于所述易失性存储器中的、分配给一个或多个内核的区域中发现的错误,停止已经由所述一个或多个内核执行的操作。
11.一种操作存储器系统的方法,包括:
将包括多个非易失性存储器单元的存储器装置中存储的固件加载到易失性存储器中;
采用多个内核,所述多个内核中的每个基于所述易失性存储器中的所述固件执行操作;并且
使用所述多个内核之中的处于待机状态或空闲状态的内核来检查加载所述固件的所述易失性存储器中是否已经发生错误。
12.根据权利要求11所述的方法,进一步包括:
当发现错误时停止或中止所述操作;
改变操作状态以指示在所述存储器系统中停止了所述操作;并且
通知主机改变后的操作状态。
13.根据权利要求12所述的方法,进一步包括:
响应于从所述主机输入的重置命令,将所述固件从所述存储器装置重新加载到所述易失性存储器中。
14.根据权利要求11所述的方法,进一步包括:
分配所述易失性存储器中的由所述多个内核单独请求的区域;并且
基于是否已经发生错误来改变操作状态,以通知主机改变后的操作状态,
其中使用所述内核包括:
通过处于所述待机状态的内核对所述区域中的一些区域执行错误检查;并且
通过处于所述空闲状态的内核收集所述错误检查的结果,以确定是否在所述易失性存储器中发现错误。
15.根据权利要求11所述的方法,其中使用所述内核包括:
使用处于所述待机状态的内核对所述易失性存储器中加载的所述固件的一部分执行校验和;并且
存储所述校验和的第一结果。
16.根据权利要求15所述的方法,其中使用所述内核进一步包括:
使用处于所述空闲状态的内核对所述固件中的、处于所述待机状态的内核未执行所述校验和的一部分执行所述校验和,并且存储对所述固件的所述部分执行的所述校验和的第二结果;并且
使用处于所述空闲状态的内核,将所述第一结果和所述第二结果与参考值进行比较,以确定是否发现错误。
17.根据权利要求11所述的方法,进一步包括:
当与数据输入/输出操作相关的输入被分配给处于所述待机状态或所述空闲状态的内核时,停止或中止用于发现错误的任务。
18.根据权利要求11所述的方法,进一步包括:
使用处于所述待机状态或所述空闲状态的内核对所述固件的特定部分执行校验和,并且存储校验和结果以及指示所述固件内的已经执行所述校验和的位置的信息。
19.根据权利要求11所述的方法,进一步包括:
当在所述多个内核之中存在处于所述待机状态或所述空闲状态的内核时,使用所述内核对所述固件的不同部分单独地执行校验和,以存储校验和结果。
20.至少一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质存储指令,当至少一个处理器执行所述指令时,使所述至少一个处理器执行包括以下的步骤:
将包括多个非易失性存储器单元的存储器装置中存储的固件加载到易失性存储器中;
采用多个内核,所述多个内核中的每个基于所述易失性存储器中的所述固件执行操作;并且
使用所述多个内核之中的处于待机状态或空闲状态的内核来检查加载所述固件的所述易失性存储器中是否已经发生错误。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190104320A KR20210024763A (ko) | 2019-08-26 | 2019-08-26 | 메모리 시스템의 동작 중 펌웨어 오류를 처리하는 방법 및 장치 |
KR10-2019-0104320 | 2019-08-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112433879A true CN112433879A (zh) | 2021-03-02 |
Family
ID=74679818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010501788.XA Withdrawn CN112433879A (zh) | 2019-08-26 | 2020-06-04 | 在存储器系统的操作中处置固件错误的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11409606B2 (zh) |
KR (1) | KR20210024763A (zh) |
CN (1) | CN112433879A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866291B (zh) * | 2019-11-15 | 2023-03-24 | 北京工业大学 | 一种基于双重安全机制的废旧电子产品信息清除方法 |
US11204833B1 (en) * | 2020-06-19 | 2021-12-21 | Western Digital Technologies, Inc. | NVM endurance group controller using shared resource architecture |
CN114446381B (zh) * | 2022-04-07 | 2022-07-15 | 深圳佰维存储科技股份有限公司 | eMMC故障分析方法、装置、可读存储介质及电子设备 |
CN115495275B (zh) * | 2022-11-16 | 2023-03-24 | 合肥康芯威存储技术有限公司 | 一种存储系统及其控制方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5388267A (en) | 1991-05-29 | 1995-02-07 | Dell Usa, L.P. | Method and apparatus for updating and restoring system BIOS functions while maintaining BIOS integrity |
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US8635514B2 (en) | 2011-02-28 | 2014-01-21 | Micron Technology, Inc. | Error control in memory storage systems |
US10198269B2 (en) | 2013-08-28 | 2019-02-05 | Via Technologies, Inc. | Dynamic reconfiguration of multi-core processor |
US10282251B2 (en) * | 2016-09-07 | 2019-05-07 | Sandisk Technologies Llc | System and method for protecting firmware integrity in a multi-processor non-volatile memory system |
-
2019
- 2019-08-26 KR KR1020190104320A patent/KR20210024763A/ko active Search and Examination
-
2020
- 2020-04-01 US US16/837,846 patent/US11409606B2/en active Active
- 2020-06-04 CN CN202010501788.XA patent/CN112433879A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20210064471A1 (en) | 2021-03-04 |
KR20210024763A (ko) | 2021-03-08 |
US11409606B2 (en) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429307B2 (en) | Apparatus and method for performing garbage collection in a memory system | |
US11409606B2 (en) | Apparatus and method for handling a firmware error in operation of a memory system | |
US11474708B2 (en) | Memory system for handling a bad block and operation method thereof | |
CN112445723A (zh) | 用于在存储器系统中的传输映射信息的装置和方法 | |
CN110825319A (zh) | 基于块状态确定可用性的存储器系统及操作方法 | |
CN111755039A (zh) | 在恢复进程期间减少存储器系统中单元干扰的设备及方法 | |
US20210279180A1 (en) | Apparatus and method for controlling map data in a memory system | |
CN112148632A (zh) | 用于改善存储器系统的输入/输出吞吐量的设备和方法 | |
CN110781023A (zh) | 用于在存储器系统中处理数据的设备和方法 | |
US11373709B2 (en) | Memory system for performing a read operation and an operating method thereof | |
CN113495852A (zh) | 控制存储器系统中的映射数据的设备和方法 | |
CN113010098A (zh) | 用于提高存储器系统的输入/输出吞吐量的设备和方法 | |
US11507501B2 (en) | Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system | |
US20220171564A1 (en) | Apparatus and method for maintaining data stored in a memory system | |
US11550502B2 (en) | Apparatus and method for controlling multi-stream program operations performed in a memory block included in a memory system | |
CN114764395A (zh) | 处置存储器系统中存储的数据的设备和方法 | |
CN113553631A (zh) | 用于在存储器系统中保护数据的设备和方法 | |
CN110806983B (zh) | 存储器系统及其操作方法 | |
CN112445424A (zh) | 提高存储器系统的输入/输出吞吐量的设备和方法 | |
US20230153032A1 (en) | Apparatus and method for improving data input/output performance of storage | |
US11941289B2 (en) | Apparatus and method for checking an error of a non-volatile memory device in a memory system | |
US11704281B2 (en) | Journaling apparatus and method in a non-volatile memory system | |
US20220075542A1 (en) | Calibration apparatus and method for data communication in a memory system | |
CN114153372A (zh) | 在存储器系统中控制和存储映射数据的设备和方法 | |
US11775426B2 (en) | Apparatus and method for securing a free memory block in a memory system |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210302 |