CN111352580A - 存储装置及其操作方法 - Google Patents
存储装置及其操作方法 Download PDFInfo
- Publication number
- CN111352580A CN111352580A CN201910932658.9A CN201910932658A CN111352580A CN 111352580 A CN111352580 A CN 111352580A CN 201910932658 A CN201910932658 A CN 201910932658A CN 111352580 A CN111352580 A CN 111352580A
- Authority
- CN
- China
- Prior art keywords
- firmware
- backup
- default
- stored
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
- 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
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
本发明涉及一种存储装置,该存储装置包括:半导体存储器装置,包括多个存储块;以及控制器,控制半导体存储器装置,其中半导体存储器装置将作为默认固件的原始固件以及作为多段备份固件的一个或多个原始固件的副本存储在多个存储块中的第一存储块中,并且其中控制器包括:固件加载电路,当默认固件有效时加载默认固件,并且当默认固件无效时加载多段备份固件中的一段;以及固件更新电路,将默认固件从原始固件的先前更新版本更新为原始固件的当前更新版本。
Description
相关申请的交叉引用
本申请要求于2018年12月20日向韩国国家知识产权局提交的申请号为10-2018-0165840的韩国专利申请的优先权,其全部内容通过引用整体并入本文。
技术领域
各个实施例总体涉及一种存储装置及其操作方法。
背景技术
存储装置基于诸如计算机和智能电话的主机的请求来存储数据。存储装置可以是包括以下的各种类型中的任意一种:诸如硬盘驱动器(HDD)的将数据存储在磁盘中的装置以及诸如固态驱动器(SDD)、UFS(通用闪存)装置或eMMC(嵌入式MMC)装置的将数据存储在非易失性存储器中的装置。
存储装置可以包括作为硬件安装在存储装置中的SoC(片上系统)和固件(FW),以根据主机的请求对非易失性存储器执行读取和写入操作。固件可以作为软件存储在存储装置的存储器中,并且存储装置在启动时加载固件。可以通过主机或外部装置的请求来更新固件。
发明内容
各个实施例涉及一种即使在存储装置中存储的某个固件中已发生错误的情况下也能正常操作的存储装置及其操作方法。
在实施例中,一种存储装置可以包括:半导体存储器装置,包括多个存储块;以及控制器,被配置为控制半导体存储器装置,其中半导体存储器装置将作为默认固件的原始固件以及作为多段备份固件的一个或多个原始固件的副本存储在多个存储块中的第一存储块中,并且其中控制器包括:固件加载电路,被配置为在默认固件有效时加载默认固件,并在默认固件无效时加载多段备份固件中的一段;以及固件更新电路,被配置为将默认固件从原始固件的先前更新版本更新为原始固件的当前更新版本。
在实施例中,一种操作存储装置的方法,该存储装置包括半导体存储器装置和控制器,该半导体存储器装置包括多个存储块,该控制器控制半导体存储器装置,该方法可以包括:将作为默认固件的原始固件以及作为多段备份固件的一个或多个原始固件的副本存储在半导体存储器装置中的第一存储块中;加载默认固件或多段备份固件中的一段;以及将默认固件从原始固件的先前更新版本更新为原始固件的当前更新版本,其中加载默认固件或多段备份固件中的一段包括在默认固件有效时加载默认固件并且在默认固件无效时加载多段备份固件中的一段。
根据本公开的实施例,提供了一种即使在存储装置中存储的某个固件中已发生错误的情况下也能正常操作的存储装置及其操作方法。
附图说明
图1是示出根据本公开的实施例的存储装置的配置的示图。
图2是示出诸如图1的半导体存储器装置的结构的示图。
图3是示出存储在诸如图1的半导体存储器装置的第一存储块中的多段固件的示图。
图4是示出根据本公开的实施例的将原始固件更新为版本A、版本B、版本C和版本D的进程的示图。
图5是示出根据本公开的实施例的在固件更新之后加载存储在第一存储块中的至少一段固件的操作的示图。
图6是示出根据本公开的实施例的在固件更新之后加载存储在第一存储块中的所有固件已经失败的操作的示图。
图7是示出根据本公开的实施例的基于从主机发送的第一命令选择待加载的固件的操作的示图。
图8是图示根据本公开的实施例的随机地选择第一存储块的操作的示图。
图9是示出根据本公开的实施例的存储装置的操作的流程图。
图10是示出根据本公开的实施例的在存储在第一存储块中的所有固件之中确定待加载的固件的操作的流程图。
图11是示出根据本公开的实施例的更新多段固件的操作的流程图。
图12是示出根据本公开的实施例的根据固件的加载是否成功来将存储的多段固件从一个存储块复制到另一个存储块的操作的流程图。
图13是示出根据本公开的实施例的基于从主机接收的命令来加载固件的操作的流程图。
图14是示出根据本公开的实施例的在多个存储块之中选择第一存储块的操作的流程图。
具体实施方式
在本公开中,在结合附图阅读以下实施例之后,优点、用于实现它们的特征和方法将变得更加明显。然而,本发明可以以不同的形式实施,因此不应该被解释为限于本文所阐述的实施例。相反,提供这些实施例是为了详细描述本公开至本公开所属领域的技术人员可以实践本发明的程度。
应当理解的是,本发明不限于附图中所示的细节,并且附图不一定按比例绘制,并且在某些情况下,可能夸大了比例以便更清楚地描绘本公开的某些特征。在整个附图和说明书中,相同的附图标记表示相同的元件。
虽然在本文中使用了特定术语,但是应该理解的是,这样的术语仅用于描述特定实施例的目的;这样的术语不旨在限制本发明的范围。
提供具体的结构和功能描述以描述本公开的实施例。然而,如上所述,本公开的实施例可以以各种形式实现,因此本发明不限于本文所描述的具体细节或实施例。因此,本发明包括所公开的实施例的所有变化、修改和等同方案,只要它们落入权利要求的范围内。
如本文所使用的,短语“和/或”包括一个或多个相关所列项目的任意和全部组合。诸如“第一”和“第二”的术语可用于标识各种组件,但那些组件不应受这些术语的限制。这些术语仅用于将一个组件与具有相同或相似名称的其他组件区分开。例如,在不脱离基于本公开的概念的范围的情况下,在一个实例中的第一组件可以在另一个实例中被称为第二组件。
应当理解的是,当一个元件被称为“连接”或“联接”到另一个元件时,它可直接连接或联接到另一个元件,或者也可存在一个或多个中间元件。相反,当一个元件被称为“直接连接”或“直接联接”到另一个元件时,则不存在中间元件。描述组件之间关系的其他表示,即“在……之间”和“直接在……之间”或“与……相邻”和“直接与……相邻”应以类似的方式解释。
除非上下文另有说明,否则单数表达包括复数表达,反之亦然。在本说明书中,应该理解的是,诸如“包括”或“具有”的术语仅旨在表示存在特征、数字、步骤、操作、组件、部件或其组合,并且不旨在排除存在或将要添加一个或多个其他特征、数字、步骤、操作、组件、部件或其组合的可能性。
除非不同地定义,否则本文所使用的包括技术术语或科学术语的所有术语具有与本公开所属领域的技术人员通常理解的术语相同的含义。普通字典定义的术语应当在相关技术的背景下解释,并且不应当以理想或过于正式的方式解释,除非它们在本说明书中明确地如此定义。
可以省略对本文所并入的公知的功能和结构的详细描述,以避免模糊本公开的主题。这旨在使本公开的主题更清楚。
此外,在描述本公开的组件时,可以使用如第一、第二、A、B、(a)和(b)的术语。这些仅用于将一个组件与另一组件区分开,而不是暗示或建议这些组件的实质、顺序或序列。如果一个组件被描述为“连接”、“联接”或“链接”到另一组件,这可表示这些组件不仅直接“连接”、“联接”或“链接”,而且还可表示通过第三个组件而间接“连接”、“联接”或“链接”。
下面参照附图详细描述各个实施例,以详细说明本公开至本领域技术人员可以容易地实施本公开的技术构思的程度。在整个说明书中,对“实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
图1是示出根据本公开的实施例的存储装置的配置的示图。
参照图1,存储装置100可包括半导体存储器装置110和控制器120,其中半导体存储器装置也被称为存储器装置。
半导体存储器装置110可以存储数据。半导体存储器装置110响应于控制器120的控制而操作。半导体存储器装置110可以包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。下面参照图2描述半导体存储器装置110的详细结构。
在实施例中,半导体存储器装置110可以是DDR SDRAM(双倍数据速率同步动态随机存取存储器)、LPDDR4(低功率双倍数据速率4)SDRAM、GDDR(图形双倍数据速率)SDRAM、LPDDR(低功耗DDR)、RDRAM(Rambus动态随机存取存储器)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器、电阻式随机存取存储器(RRAM)、相变存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移力矩随机存取存储器(STT-RAM)。
在实施例中,半导体存储器装置110可以实现为三维阵列结构。本公开不仅可以应用于其中电荷存储层由导电浮栅(FG)构成的闪速存储器装置,而且还可以应用于其中电荷存储层由介电层构成的电荷撷取闪存(CTF)。
半导体存储器装置110被配置为从控制器120接收命令和地址,并且访问存储器单元阵列中的由地址选择的区域。换言之,半导体存储器装置110可以对由地址选择的区域执行与命令相对应的操作。
例如,半导体存储器装置110可执行编程操作、读取操作和擦除操作。在编程操作中,半导体存储器装置110可以将数据编程到由地址选择的区域。在读取操作中,半导体存储器装置110可以从由地址选择的区域读取数据。在擦除操作中,半导体存储器装置110可以擦除由地址选择的区域中存储的数据。
半导体存储器装置110可以在其中包括多个存储块,例如N个存储块(N是自然数),该N个存储块可被分别指定为BLK1、BLK2、……、BLK(N)。半导体存储器装置110可以将固件存储在多个存储块BLK1、BLK2、……、BLK(N)之中的至少一个存储块中。
当半导体存储器装置110的存储固件的存储块被称为第一存储块时,默认固件和至少一段备份固件可以存储在第一存储块中。
默认固件是指在启动时首先加载的固件。可以将原始固件以及原始固件的最近更新版本指定为默认固件。当默认固件被确定为无效时,可以加载每段备份固件而不是默认固件。可以将原始固件的一个或多个副本和原始固件的先前更新版本指定为各段备份固件。加载固件是指通过将存储在半导体存储器装置110中的全部或部分固件复制到存储器(例如,SRAM或DRAM)来准备待被执行的固件。
因为可以存储在一个存储块中的数据大小大于一段固件的大小,所以至少一段固件可以存储在一个存储块中。因此,默认固件和至少一段备份固件可以存储在一个存储块中,而不是存储在不同的存储块中。在这种情况下,当由于在默认固件中发生错误而访问备份固件时,不需要尝试访问不同的存储块,这可以减少开销。
控制器120可以根据主机50的请求来控制半导体存储器装置110的操作,或者在不存在主机50的请求时控制半导体存储器装置110的操作。例如,控制器120可以控制对半导体存储器装置110的写入操作、读取操作、擦除操作和后台操作。例如,后台操作可以是垃圾收集(GC)操作、损耗均衡(WL)操作、坏块管理(BBM)操作等。
控制器120可以包括主机接口121、处理器122、闪存接口123、错误校正电路124、固件加载电路125、固件更新电路126和总线127。
主机接口121提供用于与主机50通信的接口。
闪存接口123提供用于与半导体存储器装置110通信的接口。
错误校正电路124可以对待存储在半导体存储器装置110中的数据执行错误校正。错误校正电路124可以验证存储在半导体存储器装置110中的多段固件的错误。
固件加载电路125加载存储在半导体存储器装置110中的默认固件或一段备份固件。详细地,固件加载电路125首先确定存储在半导体存储器装置110中的第一存储块中的默认固件是否有效。如果默认固件有效,则固件加载电路125加载默认固件。如果默认固件无效,则固件加载电路125加载存储在第一存储块中的多段备份固件中的一段。固件加载电路125可以由在启动时最初执行的ROM装置来实现。
固件更新电路126可以利用原始固件的更新版本来更新存储在半导体存储器装置110中的第一存储块中的原始固件。可以将原始固件及原始固件的最近更新版本指定为默认固件,并且可以将原始固件的先前版本和原始固件的副本指定为多段备份固件。在固件更新后,原始固件的最近更新版本可作为默认固件运行。
原始固件的更新版本是彼此不同的版本,并且原始固件的副本与原始固件相同。
固件更新电路126可以通过各种方法下载原始固件的更新版本。例如,固件更新电路126可以从主机50下载原始固件的更新版本,或者可以通过外部装置(例如,夹具(jig))下载存储在半导体存储器装置110中的特定区域中的原始固件的更新版本。
总线127可以被配置为在控制器120的组件之间提供通道。
处理器122可以控制控制器120的一般操作,并且可以执行逻辑计算。处理器122可以通过主机接口121与主机50通信,并且可以通过闪存接口123与半导体存储器装置110通信。处理器122可以检测存储在半导体存储器装置110中的数据的错误,并且如果必要,可以通过错误校正电路124校正错误。
处理器122可以执行闪存转换层(FTL)的功能。处理器122可以通过闪存转换层FTL将由主机50提供的逻辑块地址(LBA)转换为物理块地址(PBA)。闪存转换层(FTL)可以接收逻辑块地址(LBA)并且通过使用映射表来将逻辑块地址(LBA)转换为物理块地址(PBA)。根据映射单元,存在闪存转换层的各种地址映射方法。代表性的地址映射方法包括页面映射方法、块映射方法和混合映射方法。
处理器122被配置为使从主机50接收的数据随机化。例如,处理器122可以通过使用随机化种子来使从主机50接收的数据随机化。将随机化的数据作为待存储的数据提供到半导体存储器装置110并且编程在存储器单元阵列中。
处理器122被配置为在读取操作中使从半导体存储器装置110接收的数据去随机化。例如,处理器122可以通过使用去随机化种子来使从半导体存储器装置110接收的数据去随机化。可以将去随机化的数据输出到主机50。
处理器122可以控制控制器120的一般操作,并且可以执行由固件加载电路125加载的默认固件或备份固件以执行逻辑计算。
图2是图1的半导体存储器装置110的结构的示图。
参照图2,半导体存储器装置110可以包括电压发生器111、地址解码器112、存储器单元阵列113、控制逻辑114、数据读取/写入电路115和数据输入/输出电路116。
存储器单元阵列113包括通过行线RL联接到地址解码器112的多个存储块。该多个存储块通过位线BL[1:m]联接到数据读取/写入电路115。
如上参照图1所述,半导体存储器装置110可以将多段固件存储在多个存储块中的至少一个存储块中。当半导体存储器装置110的存储多段固件的存储块被称为第一存储块时,默认固件和至少一段备份固件可以存储在第一存储块中。
多个存储块中的每一个包括多个存储器单元。在多个存储器单元之中,联接到相同字线的存储器单元被定义为一个页面。也就是说,存储器单元阵列113可以由多个页面构成。
在实施例中,包括在存储器单元阵列113中的多个存储块中的每一个可以包括多个虚设单元。至少一个虚设单元可以串联联接在漏极选择晶体管和存储器单元之间以及串联联接在源极选择晶体管和存储器单元之间。
包括在存储器单元阵列113中的每个存储器单元可以由存储一个数据位的单层单元(SLC)、存储两个数据位的多层单元(MLC)、存储三个数据位的三层单元(TLC)或存储四个数据位的四层单元(QLC)配置。
地址解码器112通过行线RL联接到存储器单元阵列113。行线RL可以包括漏极选择线、字线、源极选择线和公共源极线。在实施例中,字线可包括普通字线和虚设字线。在实施例中,行线RL可进一步包括管道选择线。
地址解码器112被配置为响应于控制逻辑114的控制而操作。地址解码器112从控制逻辑114接收地址ADDR。
地址解码器112被配置为对所接收的地址ADDR中的块地址进行解码。地址解码器112根据所解码的块地址来选择存储块之中的至少一个存储块。地址解码器112被配置为对所接收的地址ADDR中的行地址进行解码。地址解码器112可以根据所解码的行地址,将从电压发生器111提供的电压施加到至少一个字线WL,从而可以在所选择的存储块中选择至少一个字线。
在编程操作中,地址解码器112可以将编程电压施加到所选择的字线,并且可以将电平低于编程电压的通过电压施加到未选择的字线。在编程验证操作中,地址解码器112可将验证电压施加到所选择的字线,并且可以将高于验证电压的验证通过电压施加到未选择的字线。
在读取操作中,地址解码器112可以将读取电压施加到所选择的字线,并且可以将高于读取电压的通过电压施加到未选择的字线。
在实施例中,基于存储块来执行半导体存储器装置110的擦除操作。在擦除操作中,输入到半导体存储器装置110的地址ADDR包括块地址。地址解码器112可以对块地址进行解码,并且可以根据所解码的块地址选择一个存储块。在擦除操作中,地址解码器112可以将接地电压施加到与所选择的存储块联接的字线。
在实施例中,地址解码器112可以被配置为对所接收的地址ADDR中的列地址进行解码。所解码的列地址(DCA)可被传送到读取/写入电路115。例如,地址解码器112可包括诸如行解码器、列解码器和地址缓冲器的组件。
电压发生器111被配置为通过使用提供给半导体存储器装置110的外部电源电压来生成多个电压。电压发生器111响应于控制逻辑114的控制而操作。
作为实施例,电压发生器111可以通过调节外部电源电压来生成内部电源电压。将在电压发生器111中生成的内部电源电压用作半导体存储器装置110的操作电压。
在实施例中,电压发生器111可以通过使用外部电源电压或内部电源电压来生成多个电压。电压发生器111可以被配置为生成半导体存储器装置110中所需的各种电压。例如,电压发生器111可生成多个编程电压、多个通过电压、多个选择读取电压和多个未选择读取电压。
例如,电压发生器111可以包括接收内部电源电压的多个泵浦电容器,并且可以通过响应于控制逻辑114的控制选择性地激活多个泵浦电容器来生成多个电压。
多个生成的电压可以由地址解码器112提供给存储器单元阵列113。
数据读取/写入电路115可以包括第一至第m页面缓冲器,该第一至第m页面缓冲器分别通过第一至第m位线BL[1:m]而联接到存储器单元阵列113。第一至第m页面缓冲器响应于控制逻辑114的控制而操作。
第一至第m页面缓冲器与数据输入/输出电路116执行数据通信。在编程中,第一至第m页面缓冲器通过数据输入/输出电路116接收待存储的数据DATA。
在编程操作中,当将编程脉冲施加至所选择的字线时,第一至第m页面缓冲器可以将待存储的数据DATA,即通过数据输入/输出电路116接收的数据DATA,通过位线BL而传送到所选择的存储器单元。根据所传送的数据DATA来对所选择的页面中的存储器单元进行编程。与被施加编程许可电压(例如,接地电压)的位线联接的存储器单元可以具有增加的阈值电压。与被施加编程禁止电压(例如,电源电压)的位线联接的存储器单元的阈值电压可被保持。在编程验证操作中,第一至第m页面缓冲器通过位线BL从所选择的存储器单元读取页面数据。
在读取操作中,数据读取/写入电路115通过位线BL从所选择的页面中的存储器单元读取数据DATA,并且将所读取的数据DATA输出到数据输入/输出电路116。
在擦除操作中,数据读取/写入电路115可使位线BL浮置(float)。在实施例中,数据读取/写入电路115可包括列选择电路。
数据输入/输出电路116通过数据线联接到第一至第m页面缓冲器。数据输入/输出电路116响应于控制逻辑114的控制而操作。
数据输入/输出电路116可以包括接收待输入的数据的多个输入/输出缓冲器(未示出)。在编程操作中,数据输入/输出电路116从外部控制器(未示出)接收待存储的数据DATA。在读取操作中,数据输入/输出电路116将从包括在数据读取/写入电路115中的第一至第m页面缓冲器传送的数据输出到外部控制器。
控制逻辑114可联接到地址解码器112、电压发生器111、数据读取/写入电路115以及数据输入/输出电路116。控制逻辑114可被配置为控制半导体存储器装置110的一般操作。控制逻辑114可响应于从外部装置传送的命令CMD而操作。
图3是示出存储在图1的半导体存储器装置110的第一存储块中的多段固件的示例的示图。
参照图3,当最初将原始固件和原始固件的多个副本存储在半导体存储器装置110的第一存储块中时,作为默认固件的原始固件和作为多段备份固件的多个原始固件的副本均可以存储在第一存储块中。
通常,因为固件的大小(例如,1MB)小于存储块的大小,所以默认固件和多段备份固件可以存储在相同的存储块中,而不是存储在不同的存储块中。
存储在第一存储块中的多段备份固件的数量在不同的应用或系统配置中可以不同。多段备份固件的数量不是固定的,并且随后可能根据固件更新的数量而变化。
作为默认固件的原始固件和作为多段备份固件的原始固件的多个原始固件的副本可以以各种方法存储在第一存储块中。
例如,默认固件可以存储在起始页面索引为T的区域中,其中T是0或更大的整数。存储备份固件的每个区域的起始页面索引可以通过将第一偏移X(X是自然数)的倍数与存储默认固件的区域的起始页面索引T相加来获得。
存储一段固件的区域的起始页面索引为A是指从索引为A的页面开始存储相应固件。也就是说,将相应固件存储在页面A、A+1、A+2、……中。
因此,如果在上述示例中T=0,则存储默认固件的区域的起始页面可以是第一存储块的页面0,并且可以从第一存储块的页面0开始存储默认固件。可以从索引为X的倍数的页面开始存储每段备份固件。
如果在上述示例中T=2,则存储默认固件的区域的起始页面可以是第一存储块的页面2,并且可以从第一存储块的页面2开始存储默认固件。可以从索引为(2+I*X)的页面开始存储每段备份固件,其中I是自然数。
参照图3,从第一存储块的页面0开始存储默认固件,并且在多段备份固件之中,从第一存储块的页面X开始存储备份固件#1,从第一存储块的页面2X开始存储备份固件#2,从第一存储块的页面3X开始存储备份固件#3。换言之,每段备份固件的起始页面索引为X的倍数,并且多段备份固件的起始页面索引之间的偏移是X。
然而,存储先前多段固件的最后页面与存储下一多段固件的起始页面之间的大小可以彼此不同。例如,在图3中,存储默认固件的最后页面与存储备份固件#1的起始页面之间的间隔Y可以与存储备份固件#1的最后页面和存储备份固件#2的起始页面之间的间隔Z不同。这是因为尽管存储各段固件的区域的起始页面索引之间的间隔是固定的,但是各段固件的大小彼此不同。
存储先前固件的最后页面的地址和存储下一固件的起始页面的地址可以彼此相邻。例如,在图3中,可以在第一存储块的、从页面0至页面X-1的区域中存储默认固件,并且可以在起始页面是页面X的区域中存储备份固件#1。
下面描述控制器120的固件加载电路125选择待加载的一段固件的方案的示例。
首先,在默认固件有效的情况下,固件加载电路125可以加载默认固件,而不管备份固件的状态如何。即,选择具有最高优先级的默认固件。
作为用于确定固件是否有效的方法的示例,固件加载电路125可以检验相应固件的校验和,或者检查在从半导体存储器装置110读取固件的过程中是否出现UECC(不可校正的错误校正码)或页面读取错误。
如果在读取默认固件的过程中出现UECC(不可校正的错误校正码)或主机50的页面读取错误,则固件加载电路125可以确定默认固件无效。在这种情况下,固件加载电路125可以加载存储在第一存储块中的多段备份固件中的一段,而不是加载默认固件。
如果存储在起始页面索引为T+(I*X)的区域中的一段备份固件无效,则固件加载电路125可以加载多段备份固件之中的、存储在起始页面索引为T+((I+1)*X)的区域中的另一段备份固件。此处,T为0,I为1并且X是自然数。
例如,在图3中,在默认固件无效的情况下,基于存储每段备份固件的区域的起始页面索引,相对于存储默认固件的区域的起始页面索引0,固件加载电路125加载存储在起始页面索引为0+((0+1)*X)=X的区域中的备份固件#1。
在备份固件#1也无效的情况下,基于存储备份固件#1的区域的起始页面索引X,固件加载电路125加载存储在起始页面索引为0+((1+1)*X)=2X的区域中的备份固件#2。
在备份固件#2也无效的情况下,基于存储备份固件#2的区域的起始页面索引2X,固件加载电路125加载存储在起始页面索引为0+((2+1)*X)=3X的区域中的备份固件#3。
固件加载电路125可以重复上述进程,直到识别出有效固件。
图4是示出将原始固件(版本A)更新为版本B、版本C和版本D的进程的示图。可以由上面参照图1描述的固件更新电路126来执行这种固件更新。
在图4中,(a)示出了最初存储在第一存储块中的原始固件的所有版本与A相同的情况。也就是说,默认固件的所有版本和多段备份固件最初与A相同。
控制器120的固件更新电路126可以利用原始固件的更新版本B来更新第一存储块中的被存储为默认固件的原始固件。
固件更新电路126可以将原始固件的更新版本B重写到存储原始固件(即,默认固件)的区域(起始页面索引为0的区域)。在本公开中,将目标数据重写到区域的操作是指首先擦除已经存储在该区域中的牺牲数据,然后将目标数据存储在该区域中。根据本发明的实施例,基于存储块来执行擦除数据的操作。因此,当原始固件的更新版本被重写到存储原始固件的第一存储块时,首先擦除第一存储块,然后存储原始固件的更新版本。以如下方式执行本领域公知的固件更新:将更新固件存储在与存储现有固件的区域分开的区域中,并且改变指示在启动时待被驱动的固件的信息。然而,在本公开的实施例中,由于更新固件被重写到存储现有固件的区域,因此不需要改变指示在启动时待被驱动的固件的信息。
然而,如上所述,如果原始固件的更新版本B被重写到存储原始固件的区域,则可能导致无法确保现有原始固件的原始版本A的问题。因此,为了确保现有原始固件,将现有原始固件的原始版本A重写到存储与现有原始固件的原始版本A最邻近的原始固件的副本(即,一段备份固件)的区域(起始页面索引为X的区域),使得可以确保现有原始固件。也就是说,在擦除第一存储块之后,紧邻存储原始固件的更新版本B的区域存储原始固件(版本A)。然后,紧邻存储原始固件的原始版本A的区域存储多段备份固件(即,多个原始固件的副本)。
在图4中,(b)示出了默认固件从版本A更新到版本B的情况,版本B是原始固件的更新。参照图4的(b),更新版本B被重写到图4的(a)中的存储原始固件的区域,并且图4的(a)中的现有原始固件的原始版本A被存储在已经存储备份固件的、起始页面索引为X的区域中。
在图4中,(c)示出了默认固件从版本B更新到版本C的情况,版本C是原始固件的另一更新版本。更新版本C被重写到在图4的(b)中的存储版本B的区域(起始页面索引为0的区域),并且原始固件的先前更新版本B被重写到在图4的(b)中的存储原始固件(版本A)的区域(起始页面索引为X的区域)。
在图4中,(d)示出了将默认固件从原始固件的更新版本C更新为原始固件的更新版本D的情况。更新版本D被重写到图4的(c)中的存储更新版本C的区域(起始页面索引为0的区域),原始固件的先前更新版本C被重写到图4的(c)中的存储原始固件的先前更新版本B的区域(起始页面索引为X的区域),并且原始固件的先前更新版本B被重写到图4的(c)中的存储原始固件的原始版本A的区域(起始页面索引为2X的区域)。
因此,通常,固件更新电路126可以将存储在起始页面索引为T+(J*X)的区域中的每段固件重写到起始页面索引为T+((J+1)*X)的区域(T和J中的每一个为0或更大的整数)。
通过重复上述进程,在存储在第一存储块中的原始固件的各种更新版本之中,原始固件的最近更新版本被作为默认固件而存储在起始页面索引为0的区域中。将原始固件的其余更新版本和原始固件的副本按照更新时间的顺序、作为多段备份固件分别从起始页面索引X、2X、3X、……开始存储。
因此,如果原始固件的最近更新版本,即默认固件无效,则可以加载原始固件的先前更新版本或刚好在原始固件的最近更新版本之前更新的一段备份固件。因此,可以通过按照更新历史的倒序搜索多段固件来加载有效固件。换言之,在图4的(d)中,可以按照更新版本D、更新版本C、更新版本B和原始固件(版本A)的顺序进行搜索,该顺序为更新历史的倒序。
因为第一存储块不仅存储原始固件的最近更新版本,而且还存储原始固件的所有更新版本,所以可以通过第一存储块检查到所有固件更新和固件更新历史。
如果利用原始固件的更新版本来更新默认固件,并且该更新版本由于人为错误等或者在第一存储块的特定页面中出现问题而具有错误,则在启动过程期间,存储装置100可能由于未能加载默认固件而发生故障或者进入卡住状态。另外,可能发生由于存储装置100中的问题或主机50中的问题而需要恢复到原始固件的特定更新版本的情况。
在这方面,如果以上面参照图4描述的方式存储多段固件,则存储装置100可以容易地加载有效固件,并且可以防止在启动过程期间由于加载固件失败而导致的故障或进入卡住状态。
另一方面,在固件加载电路125未能加载默认固件(即,原始固件或原始固件的最近更新版本)并且加载多段备份固件中的一段(即,原始固件的先前更新版本和原始固件的副本)时,固件更新电路126可以再次将所加载的一段备份固件重写到存储默认固件的区域,或者可以下载原始固件的新更新版本并且利用该原始固件的新更新版本来更新已发生错误的默认固件。
图3和图4的实施例涉及将多段固件存储在半导体存储器装置110的第一存储块中的情况。结合图5和图6,描述了存在作为第一存储块的备份存储块的第二存储块的情况。
当正在执行存储在第一存储块中的原始固件的固件更新时,对存储装置100的供电可能被中断,因此可能在完成固件更新之前终止了固件更新。例如,如果在擦除第一存储块以进行更新之后并且在将原始固件的更新版本写入到第一存储块之前,供电被中断并且尝试从第一存储块读取数据或固件,则读取尝试失败,因为第一存储块中没有数据或固件。
在这种情况下,为了正常启动存储装置100,有必要将存储在第一存储块中的默认固件或固件版本恢复到最近固件更新之前的状态。为此,存储装置100可以使用作为第一存储块的备份存储块的第二存储块。
图5是示出根据本公开的实施例的在固件更新之后加载存储在第一存储块中的多段固件中的至少一段的情况下的操作的示图。
在图5中,(a)示出了在对默认固件执行从原始固件的更新版本D到原始固件的更新版本E的固件更新之前,存储在第一存储块和第二存储块中的作为默认固件的原始固件的更新版本(即,更新版本D)以及作为备份固件的多段备份固件(即,更新版本C、B和A)。观察图5的(a),可以看到存储在第一存储块和第二存储块中的原始固件的更新版本都是相同的。
如果将默认固件从更新版本D更新为更新版本E,则改变存储在第一存储块中的多段固件。观察图5的(b),在第一存储块的情况下,作为固件更新的结果,默认固件被更新为更新版本E,而在第二存储块的情况下,尽管固件更新,默认固件也没有被更新并且仍然保留为更新版本D。
在成功加载存储在第一存储块中的更新默认固件之后,更新存储在第二存储块中的固件。即,根据在完成固件更新之后,从主机50输入重置命令或者发生断电和通电时,如果在启动时成功加载更新版本E,则随后将存储在第一存储块中的多段固件被复制到第二存储块。也就是说,执行固件更新的时间与将存储在第一存储块中的多段固件复制到第二存储块的时间不同。
在图5中,(c)示出了在复制完成之后存储在第一存储块和第二存储块中的多段固件。观察图5的(c),可以看到存储在第一存储块中的多段固件被复制到第二存储块,并且第一存储块和第二存储块的配置彼此相同。
图6是示出根据本公开的实施例的在固件更新之后加载存储在第一存储块中的所有固件已经失败的情况下的操作的示图。
如上所述,在由于突然断电(SPO)等而中断固件更新的情况下,在第一存储块中存储的多段固件中可能发生错误。具体地,在使用如图3和图4所示的在固件更新时,对原始固件的先前更新版本重写原始固件的当前更新版本的方案的情况下,如果在重写存储在第一存储块中的多段固件时中断固件更新,则随后可能无法加载存储在第一存储块中的所有固件。
在这种情况下,可以加载存储在第二存储块中的多段固件中的一段,并且如果加载固件成功,则通过随后将存储在第二存储块中的多段固件复制到第一存储块,第一存储块可以恢复到固件更新之前的状态。
在图6中,(a)示出了在执行固件更新之前存储在第一存储块和第二存储块中的多段固件。观察图6的(a),可以看到存储在第一存储块中的多段固件的配置和存储在第二存储块中的多段固件的配置彼此全部相同。
在图6中,(b)示出了当在默认固件从更新版本D到更新版本E的固件更新期间发生SPO时,存储在第一存储块和第二存储块中的多段固件。由于断电,在第一存储块中存储的所有固件中可能发生错误(例如,检测到UECC或已擦除数据),因此不可能加载存储在第一存储块中的多段固件。
在这种情况下,固件加载电路125可以加载存储在第二存储块中的默认固件,而不是加载存储在第一存储块中的多段固件。选择第二存储块中的待加载的固件的方案可以与选择第一存储块中的待加载的固件的方案相同。
在图6中,(c)示出了当在成功加载存储在第二存储块中的固件之后,将存储在第二存储块中的多段固件复制到第一存储块时的第一存储块和第二存储块中存储的多段固件。观察图6的(c),可以看到第一存储块被恢复到与如图6(a)所示的相同状态。
因此,在图5和图6的实施例中,第二存储块可以被配置为第一存储块的镜像块。
图3至图6是在基于将多段固件存储在第一存储块中的状态来加载所选择的固件的背景下描述的。然而,可以加载第一存储块中的默认固件和备份固件之中的、从外部源具体指示的原始固件的特定版本。
例如,主机50可以明确地指示存储在第一存储块中的原始固件的各种版本之中的、用于特定用途(例如,调试或恢复)的原始固件的特定版本,使得通过所指示的固件来执行启动。
图7是示出根据本公开的实施例的基于从主机50发送的第一命令选择待加载的固件的操作的示图。
参照图7,主机50可以向控制器120发送指示待加载的固件的第一命令。
当控制器120从主机50接收到第一命令时,控制器120的固件加载电路125可以加载第一存储块中的由第一命令指示的固件。固件加载电路125可以直接从主机50接收第一命令,或者可以通过主机接口121接收第一命令。
由第一命令指示的固件可以是存储在第一存储块中的多段备份固件中的一段。例如,第一命令可以命令使用多段备份固件中的备份固件#2来执行启动。
例如,由第一命令指示的备份固件可以是专用于调试的固件或专用于恢复的固件。也就是说,为了使得主机50执行调试操作或恢复操作,固件加载电路125可以在多段备份固件中,选择专用于调试或恢复的一段备份固件,并且可以加载所选择的一段备份固件。
又例如,在执行N次固件更新的情况下,由第一命令指示的一段备份固件可以是第一至第(N-1)更新备份固件中的一段。固件加载电路125可以在先前使用的多段备份固件之中,加载特定版本的一段备份固件。
图3至图7是在第一存储块存储待在启动时使用的固件的的背景下进行描述的。然而,多个存储块中的任意一个可以被选择并且用于该目的。
图8是图示根据本公开的实施例的随机地选择第一存储块的操作的示图。
参照图8,固件加载电路125可以在启动时随机地选择半导体存储器装置110中的多个存储块之中的、预定的两个存储块BLK A和BLK B中的一个作为第一存储块。
以这种方式,通过在每次启动时随机地选择第一存储块,访问负载被分散在所有存储块之间。因此,可以防止访问特定存储块的频率突然增加并且因此相应存储块快速崩溃的问题。
用于随机地选择第一存储块的种子信息可以是,例如被测量为系统的RTC(实时时钟)或刻度(tick)值的时间信息。
图9是示出根据本公开的实施例的存储装置的操作的流程图。该操作可以由上述存储装置执行。
参照图9,存储装置100的半导体存储器装置110可以在其中包括多个存储块,并且可以在多个存储块中的第一存储块中存储默认固件以及一段或多段备份固件(S910)。最初,如参照图4(a)所述,原始固件可以是默认固件,并且原始固件的副本可以是多段备份固件。
包括在存储装置100的控制器120中的固件加载电路125可以加载存储在第一存储块中的默认固件和多段备份固件中的一段(S920)。
在这方面,如果默认固件有效,则固件加载电路125可以加载默认固件,并且如果默认固件无效,则可以加载多段备份固件中的一段。如上面参照图3所述,可以通过将第一偏移X的倍数与存储默认固件的区域的起始页面索引T相加来获得存储每段备份固件的区域的起始页面索引,其中T是0或更大的整数并且X是自然数。并且固件更新电路126可以利用原始固件的更新版本来更新默认固件(S930)。
参照图10详细描述固件加载电路125在第一存储块中存储的默认固件和多段备份固件之中选择待加载的固件的方法。
图10是示出根据本公开的实施例的在第一存储块中存储的多段固件之中确定待加载的固件的操作的流程图。该操作可以由先前描述的固件加载电路125执行。
参照图10,固件加载电路125确定在半导体存储器装置110的第一存储块中存储的多段固件之中的默认固件是否有效(S1010)。
如前所述,可以通过检验固件的校验和或者检查是否已出现UECC或页面读取错误来确定固件是否有效。
假设默认固件存储在第一存储块中的起始页面索引为T的区域中,其中T是0或更大的整数。例如,在图3中,T=0,并且默认固件存储在起始页面索引为0的区域中。
在默认固件有效的情况下(S1010-是),固件加载电路125立即加载默认固件,而不管备份固件是否有效(S1020)。
相反,在默认固件无效的情况下(S1010-否),固件加载电路125在多段备份固件之中选择待加载的固件。在这方面,最初设置I=1(S1030),并且固件加载电路125在多段备份固件之中选择存储在起始页面索引为T+(I*X)的区域中的一段备份固件(S1040)。
例如,在图3的情况下,如果I=1,由于存储在起始页面索引为T+(I*X)=X的区域中的一段备份固件是备份固件#1,所以固件加载电路125选择备份固件#1。
固件加载电路125确定所选择的一段备份固件是否有效(S1050)。在所选择的一段备份固件有效的情况下(S1050-是),固件加载电路125加载所选择的一段备份固件(S1060)。
相反,在所选择的一段备份固件无效的情况下(S1050-否),将I的值增加1(S1070),并且重复步骤S1040。例如,在图3的情况下,如果备份固件#1也无效,则I=1+1=2,选择存储在起始页面索引为T+(I*X)=2X的区域中的备份固件#2。如果备份固件#2也无效,则I=2+1=3,选择存储在起始页面索引为T+(I*X)=3X的区域中的备份固件#3。
图11是示出根据本公开的实施例的更新原始固件的操作的流程图。该操作可以由先前描述的固件更新电路126执行。
参照图11,固件更新电路126将存储在起始页面索引为T+(J*X)的区域中的每段固件重写到起始页面索引为T+((J+1)*X)的区域,其中T和J中的每一个为0或更大的整数,并且X是自然数(S1110)。
例如,参照图4的(a)和(b),存储在起始页面索引为0的区域中的原始固件(版本A)被重写到起始页面索引为0+((0+1)*X)=X的区域。
再例如,参照图4的(c)和(d),存储在起始页面索引为0的区域中的原始固件的更新版本C被重写到存储原始固件的更新版本B的区域(起始页面索引为X的区域),并且存储在起始页面索引为X的区域中的原始固件的更新版本B被重写到存储原始固件(版本A)的区域(起始页面索引为2X的区域)。
进一步,固件更新电路126可以将原始固件的当前更新版本重写到存储默认固件的区域(S1120)。
例如,参照图4的(a)和(b),原始固件的更新版本B被重写到存储默认固件的区域(起始页面索引为0的区域)。
图12是示出根据本公开的实施例的根据固件的加载是否成功,来在第一存储块和第二存储块之间复制所存储的多段固件的操作的流程图。该操作可以由先前描述的固件加载电路125执行。
参照图12,固件加载电路125加载存储在第一存储块中的默认固件和多段备份固件中的一段(S1210)。作为选择待加载的固件的方法,可以使用上面参照图10描述的方法。
此后,固件加载电路125确定固件的加载是否成功(S1220)。在固件的加载成功的情况下(S1220-是),为了备份存储在第一存储块中的默认固件和备份固件,固件加载电路125可以将存储在第一存储块中的默认固件和备份固件复制到第二存储块(S1230)。
相反,在固件的加载失败的情况下(S1220-否),这表示存储在第一存储块中的默认固件和备份固件中存在错误,固件加载电路125可以加载在作为备份存储块的第二存储块中存储的默认固件和多段备份固件中的一段,然后可以将第一存储块恢复到先前状态。
详细地,固件加载电路125可以在启动时加载在作为备份存储块的第二存储块中存储的默认固件和多段备份固件中的一段(S1240)。作为选择待加载的固件的方法,可以使用上面参照图10描述的方法。
此后,如果加载了存储在第二存储块中的所选择的固件,则为了恢复第一存储块,固件加载电路125可以将存储在第二存储块中的默认固件和备份固件复制到第一存储块(S1250)。
图13是示出根据本公开的实施例的基于从主机接收的命令来加载固件的操作的流程图。该操作可以由先前描述的控制器120执行。
首先,存储装置100的控制器120从主机50接收第一命令(S1310)。第一命令包括具体指示存储在存储装置100的半导体存储器装置110的第一存储块中的多段备份固件之中的、作为待加载的目标的备份固件的信息。
此后,存储装置100的控制器120中的固件加载电路125加载由第一命令指示的备份固件(S1320)。如上参照图7所述,由第一命令指示的备份固件可以是专用于调试的固件或专用于恢复的固件。
图14是示出根据本公开的实施例的在多个存储块之中选择第一存储块的操作的流程图。该操作可以由先前描述的固件加载电路125执行。
首先,固件加载电路125随机地选择半导体存储器装置110中的多个存储块中的两个存储块之中的一个作为第一存储块(S1410)。可以预先确定该两个存储块,其中从该两个存储块中选择一个。如上参照图8所述,用于随机地选择第一存储块的种子信息可以是,例如被测量为系统的RTC(实时时钟)或刻度值的时间信息。
固件加载电路125可以加载存储在所选择的第一存储块中的默认固件或一段备份固件(S1420)。(例如,默认固件或一段备份固件可以在存储装置的制造过程中由外部装置(工具)存储。)作为选择待加载的固件的方法,可以使用上面参照图10描述的方法。
本领域技术人员将理解的是,在不脱离本公开的精神和必要特征的情况下,可以改变或以其他布置方式来实施上述技术配置。因此,应该理解,上述实施例是说明性的而非限制性的。本发明的范围由所附权利要求而不是前面的描述限定,并且落入权利要求及其等同方案的范围内的所有改变或修改都包含在本发明中。
在本公开的上述实施例中,可以选择性地执行或省略一些步骤。而且,这些步骤不一定需要按照所描述的顺序执行,并且它们可以以改变的顺序执行。
本领域技术人员将从本公开理解的是,在不脱离本公开的更宽的实质和范围的情况下,可以对本公开进行各种修改和改变。因此,本发明不仅包括所公开的实施例,还包括落入权利要求及其等同方案的范围内的所有变化和修改。
Claims (19)
1.一种存储装置,包括:
半导体存储器装置,包括多个存储块;以及
控制器,控制所述半导体存储器装置,
其中所述半导体存储器装置将作为默认固件的原始固件以及作为多段备份固件的一个或多个所述原始固件的副本存储在所述多个存储块中的第一存储块中,以及
其中控制器包括:
固件加载电路,当所述默认固件有效时加载所述默认固件,并且当所述默认固件无效时加载所述多段备份固件中的一段;以及
固件更新电路,将所述默认固件从所述原始固件的先前更新版本更新为所述原始固件的当前更新版本。
2.根据权利要求1所述的存储装置,
其中通过将第一偏移X的倍数与存储所述默认固件的区域的起始页面索引T相加而获得存储每段备份固件的区域的起始页面索引,并且
其中T是0或更大的整数,X是自然数。
3.根据权利要求2所述的存储装置,
其中当存储在起始页面索引为T+(I*X)的区域中的一段备份固件无效时,所述固件加载电路加载存储在起始页面索引为T+((I+1)*X)的区域中的另一段备份固件,并且
其中I是1或更大的整数。
4.根据权利要求2所述的存储装置,
其中所述固件更新电路将存储在起始页面索引为T+(J*X)的区域中的固件重写到起始页面索引为T+((J+1)*X)的区域,并且将所述原始固件的当前更新版本重写到存储所述默认固件的区域,并且
其中J是0或更大的整数。
5.根据权利要求4所述的存储装置,其中当加载存储在所述第一存储块中的所述默认固件或一段备份固件成功时,所述固件加载电路将存储在所述第一存储块中的所述默认固件和所述多段备份固件复制到所述半导体存储器装置的第二存储块。
6.根据权利要求5所述的存储装置,其中当加载存储在所述第一存储块中的所述默认固件或所述一段备份固件失败时,所述固件加载电路加载存储在所述第二存储块中的一段固件,并且将存储在所述第二存储块中的多段固件复制到所述第一存储块。
7.根据权利要求1所述的存储装置,其中在从主机接收到第一命令的情况下,所述固件加载电路加载所述多段备份固件之中的、由所述第一命令指示的一段备份固件。
8.根据权利要求7所述的存储装置,其中由所述第一命令指示的备份固件专用于调试或恢复。
9.根据权利要求1所述的存储装置,其中从所述多个存储块之中的预定的两个存储块中随机地选择所述第一存储块。
10.一种操作存储装置的方法,所述存储装置包括半导体存储器装置和控制器,所述半导体存储器装置包括多个存储块,所述控制器控制所述半导体存储器装置,所述方法包括:
将作为默认固件的原始固件以及作为多段备份固件的一个或多个所述原始固件的副本存储在所述半导体存储器装置中的第一存储块中;
加载所述默认固件或所述多段备份固件中的一段;以及
将所述默认固件从所述原始固件的先前更新版本更新为所述原始固件的当前更新版本,
其中加载所述默认固件或所述多段备份固件中的一段包括:当所述默认固件有效时加载所述默认固件并且当所述默认固件无效时加载所述多段备份固件中的一段。
11.根据权利要求10所述的方法,
其中通过将第一偏移X的倍数与存储所述默认固件的区域的起始页面索引T相加而获得存储每段备份固件的区域的起始页面索引,并且
其中T是0或更大的整数,X是自然数。
12.根据权利要求11所述的方法,
其中加载所述默认固件或所述多段备份固件中的一段包括:当存储在起始页面索引为T+(I*X)的区域中的一段备份固件无效时,加载存储在起始页面索引为T+((I+1)*X)的区域中的另一段备份固件,并且
其中I是1或更大的整数。
13.根据权利要求11所述的方法,
其中将存储在起始页面索引为T+(J*X)的区域中的每段固件重写到起始页面索引为T+((J+1)*X)的区域,
其中将所述原始固件的当前更新版本重写到存储所述默认固件的区域,并且
其中J是0或更大的整数。
14.根据权利要求13所述的方法,其中当所述加载成功时,所述加载进一步包括:将存储在所述第一存储块中的所述默认固件和所述多段备份固件复制到所述半导体存储器装置的第二存储块。
15.根据权利要求14所述的方法,其中当所述加载失败时,所述加载进一步包括:加载存储在所述第二存储块中的一段或多段固件中的一段,并且将存储在所述第二存储块中的多段固件复制到所述第一存储块。
16.根据权利要求10所述的方法,进一步包括:在从主机接收到第一命令的情况下,加载所述多段备份固件之中的、由所述第一命令指示的一段备份固件。
17.根据权利要求16所述的方法,其中由所述第一命令指示的备份固件专用于调试或恢复。
18.根据权利要求10所述的方法,其中从所述多个存储块之中的预定的两个存储块中随机地选择所述第一存储块。
19.一种存储装置,包括:
存储器装置,包括:
第一存储块,顺序地将作为默认固件的原始固件以及作为多段备份固件的多个所述原始固件的副本存储在所述第一存储块中的多个存储区域中;以及
第二存储块,为所述第一存储块的镜像块;以及
控制器,控制所述存储器装置:
更新存储在所述第一存储块中的固件,使得所述原始固件的当前更新版本、所述原始固件的一个或多个先前更新版本、所述原始固件以及一个或多个所述原始固件的副本被顺序地存储到所述存储区域中,所述当前更新版本变成所述默认固件并且其他固件变成所述多段备份固件;
在当前待加载的任何一段固件被确定为无效时,从所述第一存储块和所述第二存储块顺序地将所述默认固件和所述备份固件加载到所述控制器;
当从所述第一存储块加载了被确定为有效的任何一段固件时,将存储在所述第一存储块中的固件复制到所述第二存储块;并且
当从所述第二存储块加载了被确定为有效的任何一段固件时,将存储在所述第二存储块中的固件复制到所述第一存储块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0165840 | 2018-12-20 | ||
KR1020180165840A KR20200076886A (ko) | 2018-12-20 | 2018-12-20 | 저장 장치 및 그 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352580A true CN111352580A (zh) | 2020-06-30 |
CN111352580B CN111352580B (zh) | 2023-07-21 |
Family
ID=71098488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910932658.9A Active CN111352580B (zh) | 2018-12-20 | 2019-09-29 | 存储装置及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10990378B2 (zh) |
KR (1) | KR20200076886A (zh) |
CN (1) | CN111352580B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200089939A (ko) * | 2019-01-18 | 2020-07-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그 동작 방법 |
US11314866B2 (en) * | 2019-11-25 | 2022-04-26 | Dell Products L.P. | System and method for runtime firmware verification, recovery, and repair in an information handling system |
CN111913883A (zh) * | 2020-07-28 | 2020-11-10 | 惠科股份有限公司 | 显示面板、代码的读取方法和计算机可读存储介质 |
TWI805946B (zh) * | 2020-09-29 | 2023-06-21 | 瑞昱半導體股份有限公司 | 內嵌式系統及控制非揮發性記憶體之方法 |
US20220197746A1 (en) * | 2020-12-18 | 2022-06-23 | Advanced Micro Devices, Inc. | Combination bios with a/b recovery |
CN113377793A (zh) * | 2021-06-18 | 2021-09-10 | 西门子(中国)有限公司 | 非易失性存储器的数据块的更新方法及更新装置 |
CN115495275B (zh) * | 2022-11-16 | 2023-03-24 | 合肥康芯威存储技术有限公司 | 一种存储系统及其控制方法 |
CN117170696B (zh) * | 2023-11-02 | 2024-03-12 | 佛山市钒音科技有限公司 | 一种空调器的ota升级方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103340A1 (en) * | 2002-11-21 | 2004-05-27 | Texas Instruments Incorporated | Upgrading of firmware with tolerance to failures |
CN1585926A (zh) * | 2001-09-17 | 2005-02-23 | 索马网络公司 | 软件更新方法、设备和系统 |
US20080209196A1 (en) * | 2007-02-23 | 2008-08-28 | Hernandez Carol B | Method to Enable Firmware to Boot a System from an ISCSI Device |
CN102081534A (zh) * | 2009-11-30 | 2011-06-01 | 英特尔公司 | 自动模块化且安全的引导固件更新 |
US20110131403A1 (en) * | 2008-08-01 | 2011-06-02 | Hewlett-Packard Developement Company, Lp | Verifying firmware |
CN104536848A (zh) * | 2014-12-22 | 2015-04-22 | 小米科技有限责任公司 | 固件恢复方法、装置和终端 |
CN106339508A (zh) * | 2016-10-25 | 2017-01-18 | 电子科技大学 | 一种基于分页的web缓存方法 |
US20170115884A1 (en) * | 2015-10-26 | 2017-04-27 | SanDisk Technologies, Inc. | Data Folding in 3D Nonvolatile Memory |
US20170220404A1 (en) * | 2016-02-01 | 2017-08-03 | Electro Industries/Gauge Tech | Devices, systems and methods for validating and upgrading firmware in intelligent electronic devices |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6789157B1 (en) * | 2000-06-30 | 2004-09-07 | Intel Corporation | Plug-in equipped updateable firmware |
KR100889781B1 (ko) * | 2007-04-30 | 2009-03-20 | 삼성전자주식회사 | 멀티-비트 데이터를 저장하는 메모리 시스템, 그것의프로그램 방법, 그것을 포함한 컴퓨팅 시스템 |
US8825920B2 (en) * | 2010-01-20 | 2014-09-02 | Spansion Llc | Field upgradable firmware for electronic devices |
CN102455950A (zh) * | 2010-10-28 | 2012-05-16 | 鸿富锦精密工业(深圳)有限公司 | 基板管理控制器的韧体恢复系统及方法 |
KR20120050062A (ko) | 2010-11-10 | 2012-05-18 | 주식회사 히타치엘지 데이터 스토리지 코리아 | 솔리드 스테이트 드라이브의 펌웨어 구동 방법 |
KR101461319B1 (ko) | 2013-05-28 | 2014-11-12 | 주식회사 이노피아테크 | 셋탑박스의 펌웨어 업그레이드 방법 및 펌웨어 업그레이드 장치 |
JP6065115B2 (ja) * | 2013-07-02 | 2017-01-25 | 富士通株式会社 | マシン提供方法,マシン提供システム,およびマシン提供プログラム |
US10242197B2 (en) * | 2016-09-23 | 2019-03-26 | Intel Corporation | Methods and apparatus to use a security coprocessor for firmware protection |
US10318736B2 (en) * | 2016-10-31 | 2019-06-11 | Hewlett Packard Enterprise Development Lp | Validating operating firmware of a periperhal device |
US11106796B2 (en) * | 2018-11-07 | 2021-08-31 | Dell Products L.P. | Staging memory for accessory firmware update |
-
2018
- 2018-12-20 KR KR1020180165840A patent/KR20200076886A/ko active Search and Examination
-
2019
- 2019-08-09 US US16/537,034 patent/US10990378B2/en active Active
- 2019-09-29 CN CN201910932658.9A patent/CN111352580B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585926A (zh) * | 2001-09-17 | 2005-02-23 | 索马网络公司 | 软件更新方法、设备和系统 |
US20040103340A1 (en) * | 2002-11-21 | 2004-05-27 | Texas Instruments Incorporated | Upgrading of firmware with tolerance to failures |
US20080209196A1 (en) * | 2007-02-23 | 2008-08-28 | Hernandez Carol B | Method to Enable Firmware to Boot a System from an ISCSI Device |
US20110131403A1 (en) * | 2008-08-01 | 2011-06-02 | Hewlett-Packard Developement Company, Lp | Verifying firmware |
CN102081534A (zh) * | 2009-11-30 | 2011-06-01 | 英特尔公司 | 自动模块化且安全的引导固件更新 |
CN104536848A (zh) * | 2014-12-22 | 2015-04-22 | 小米科技有限责任公司 | 固件恢复方法、装置和终端 |
US20170115884A1 (en) * | 2015-10-26 | 2017-04-27 | SanDisk Technologies, Inc. | Data Folding in 3D Nonvolatile Memory |
US20170220404A1 (en) * | 2016-02-01 | 2017-08-03 | Electro Industries/Gauge Tech | Devices, systems and methods for validating and upgrading firmware in intelligent electronic devices |
CN106339508A (zh) * | 2016-10-25 | 2017-01-18 | 电子科技大学 | 一种基于分页的web缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
US10990378B2 (en) | 2021-04-27 |
KR20200076886A (ko) | 2020-06-30 |
CN111352580B (zh) | 2023-07-21 |
US20200201617A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352580B (zh) | 存储装置及其操作方法 | |
US9747170B2 (en) | Non-volatile multi-level cell memory system and method of performing adaptive data back-up in the system | |
US9159441B2 (en) | Method of operating memory device assuring reliability and memory system | |
CN109284202B (zh) | 控制器及其操作方法 | |
CN112860178A (zh) | 存储器装置、存储器控制器、存储器系统及存储器系统的操作方法 | |
CN114067870A (zh) | 存储器系统、存储器装置以及用于操作存储器装置的方法 | |
CN110910941A (zh) | 存储器系统及其操作方法 | |
US11113202B2 (en) | Operating method forcing the second operation to fail using a scatter-gather buffer and memory system thereof | |
CN113010095A (zh) | 存储器系统、存储器控制器及其操作方法 | |
CN112052116A (zh) | 存储器系统、存储器控制器和元信息存储装置 | |
CN113936721A (zh) | 存储器系统、存储器装置和操作存储器装置的方法 | |
CN108986864B (zh) | 控制器和存储器系统以及存储器系统的操作方法 | |
CN115952115A (zh) | 基于融合链表控制同步操作的存储器控制器及其操作方法 | |
CN114530173A (zh) | 存储器系统及其操作方法 | |
CN114253465A (zh) | 存储器系统及其操作方法 | |
CN114255789A (zh) | 存储器系统及其操作方法 | |
CN112748870A (zh) | 存储器系统、存储器控制器及操作存储器控制器的方法 | |
US11704050B2 (en) | Memory system for determining a memory area in which a journal is stored according to a number of free memory blocks | |
US11960359B2 (en) | Memory system, memory controller and operating method of memory system | |
US11087858B1 (en) | In-place refresh operation in flash memory | |
US11500771B2 (en) | Memory system, memory controller, and method of operating memory system | |
CN115292216A (zh) | 存储器系统及存储器系统的操作方法 | |
KR20220150180A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
CN112783426A (zh) | 存储器系统、存储器控制器和操作存储器控制器的方法 | |
CN115437968A (zh) | 存储器系统及存储器系统的操作方法 |
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 |