CN114694728A - NVMe SSD的断电持续时间确定 - Google Patents
NVMe SSD的断电持续时间确定 Download PDFInfo
- Publication number
- CN114694728A CN114694728A CN202111624062.6A CN202111624062A CN114694728A CN 114694728 A CN114694728 A CN 114694728A CN 202111624062 A CN202111624062 A CN 202111624062A CN 114694728 A CN114694728 A CN 114694728A
- Authority
- CN
- China
- Prior art keywords
- power
- controller
- timestamp
- ssd
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 73
- 239000007787 solid Substances 0.000 claims description 19
- 230000001186 cumulative effect Effects 0.000 claims description 3
- 238000013403 standard screening design Methods 0.000 description 164
- 230000008569 process Effects 0.000 description 50
- 230000014759 maintenance of location Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- NGVDGCNFYWLIFO-UHFFFAOYSA-N pyridoxal 5'-phosphate Chemical compound CC1=NC=C(COP(O)(O)=O)C(C=O)=C1O NGVDGCNFYWLIFO-UHFFFAOYSA-N 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 102100030289 Chronophin Human genes 0.000 description 1
- 101150062722 PDXP gene Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/4401—Bootstrapping
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
Abstract
本公开大体上涉及NVMe SSD的断电持续时间确定。一种SSD包含控制器,所述控制器具有其中存储断电时间戳的第一非易失性存储器和可由主机存取的硬件寄存器。所述SSD还包含耦合到所述控制器的第二非易失性存储器,所述第二非易失性存储器存储用于所述SSD的至少一个启动模式的指令。在对所述控制器进行加电时且在所述控制器执行用于所述SSD的至少一个启动模式的所述指令之前,所述控制器在所述硬件寄存器中从所述主机接收通电时间戳,并基于所述通电时间戳和所存储断电时间戳确定所述SSD的启动模式。
Description
技术领域
本发明大体上涉及用于确定固态硬盘(“SSD”)的断电持续时间的系统和方法。
背景技术
耦合到快闪存储器的SSD和其它装置将数据和指令作为电荷存储在快闪存储器内。随时间推移,如果SSD保持空闲状态,则电荷会泄漏掉,从而将错误引入到所存储的数据和指令,且在一些情况下,会使经译码数据和指令无法解码。如果SSD尝试基于快闪存储器中存储的包含太多错误的代码而加电,则SSD加电可能会失败且SSD可能会变得不可用。
当SSD驱动器未被定期或立即使用,例如驱动器作为替换或备份驱动器保持在数据中心中时,这尤其成问题。如果驱动器持续延长的时间周期断电,则NAND将不处于活动状态,且驱动器的数据保持可能会受损。如果驱动器已断电太长时间,则在启动驱动器时从存储器读取数据可能会存在故障。驱动器可能无法处理写入到NAND的指令或元数据,且驱动器将变得无效且不可用。
虽然SSD可能包含额外指令以使得装置能够如同第一次通电一般启动到出厂模式,但装置无法在启动之前确定是否将需要出厂启动模式。
因此,需要开发用于SSD在启动SSD之前确定断电持续时间的机制。
发明内容
在一方面中,一种SSD包含控制器,所述控制器具有存储断电时间戳的第一非易失性存储器和可由主机存取的硬件寄存器。所述SSD还包含耦合到所述控制器的第二非易失性存储器,所述第二非易失性存储器存储用于所述SSD的至少一个启动模式的指令。在对所述控制器进行加电时且在所述控制器执行用于所述SSD的至少一个启动模式的所述指令之前,所述控制器在所述硬件寄存器中从所述主机接收通电时间戳,并基于所述通电时间戳和所存储断电时间戳确定所述SSD的启动模式。
在另一方面中,一种确定SSD的启动模式的方法包含:在对控制器进行加电时,在控制器的硬件寄存器处从主机接收通电时间戳;以及从耦合到所述控制器的第一非易失性存储器检索断电时间戳。所述方法还包含比较通电时间戳与断电时间戳以确定差量时间,以及基于差量时间与阈值的比较确定SSD的启动模式。
附图说明
在结合附图考虑以下详细描述时,前述和其它目标和优势将是显而易见的,在所有附图中相同参考标号是指相同部件,且在附图中:
图1示出支持确定SSD的断电持续时间的固态硬盘(“SSD”)存储器装置系统的框图;
图2示出SSD的常规启动过程的流程图;
图3示出利用SSD的所确定断电持续时间的启动过程的流程图;
图4示出确定SSD的断电持续时间以用于确定SSD的启动模式的过程的框图;
图5示出在执行用于SSD的启动模式的指令之前,在SSD处从主机接收通电时间戳的过程的框图;
图6示出用于基于断电持续时间确定SSD的启动模式的决策图;以及
图7示出确定SSD的启动模式的方法的流程图。
具体实施方式
耦合到快闪存储器的SSD或其它装置可使用存储于非易失性存储器中的微码或指令启动,接着其可使用存储于快闪存储器中的代码和元数据(例如,逻辑到物理映射表)启动。当装置已从非易失性存储器启动且接着进行到使用来自快闪存储器的代码和/或数据启动时,如果快闪存储器包含不可恢复的错误(例如,因为快闪存储器已断开且休眠过长周期),则SSD可能无法正确地执行指令且变得不可用。使SSD控制器能够在初始化控制器时且在使用快闪存储器中的代码和/或数据执行启动指令之前确定断电持续时间允许SSD控制器确定不可恢复的错误是否有可能已引入到快闪存储的启动模式指令,使得SSD必须从存储在非易失性控制器存储器中的出厂指令启动。SSD接着可基于断电持续时间而选择是照常从闪存启动还是如同第一次通电一般恢复到出厂启动,以免驱动器变得不可用。
图1示出支持确定SSD的断电持续时间的SSD存储器装置系统100的框图。SSD存储器装置系统100包含主机102和SSD 104。SSD 104具有包含只读存储器(ROM)107和寄存器108的控制器106。控制器106通过连接114耦合到非易失性存储器110,且通过连接115耦合到快闪存储器111。主机102通过总线112以通信方式耦合到SSD 104的控制器106。
寄存器108可为硬件寄存器,其并不需要软件配置或系统固件。在SSD 104已启动或存取快闪存储器111之前,一旦将电力施加到SSD 104,主机102就可将寄存器108作为主机102可向其写入时间戳的有效寄存器。因为寄存器108为基础级硬件寄存器,所以SSD控制器106可在启动时存取时间戳。SSD控制器106可为非易失性存储器高速(NVMe)控制器106,且控制器芯片中的NVMe核心依赖于硬件寄存器和微码来运行和解释命令。主机102能够在电力刚施加到SSD 104的情况下将通电时间戳写入到寄存器108。
控制器106存取来自寄存器108的通电时间戳,和在SSD 104先前断电时存储在非易失性存储器110中的断电时间戳。控制器106通过计算寄存器108中由主机102供应的通电时间戳与存储在非易失性存储器110中的断电时间戳之间的差来确定断电持续时间。基于所计算断电持续时间,控制器106确定SSD 104的适当启动模式。用于启动控制器芯片和SSD104的微码和固件接着可从非易失性存储器110(例如,串行NOR ROM或NOR快闪存储器)、其它非易失性存储器或例如寄存器108的硬件寄存器中的存储装置加载到控制器106中。非易失性存储器110或经硬译码微码和固件不会遭受NAND快闪存储器常见的数据保持问题,例如随时间推移的电荷泄漏。图3和4中详述从主机102接收通电时间戳并确定SSD 104的启动模式的过程。
图2示出SSD的常规启动过程的流程图200。所述过程在步骤202处对SSD控制器进行加电时开始。SSD控制器接着在步骤204处执行芯片上只读存储器(“ROM”)中的引导程序代码。在步骤206处,引导程序代码尝试加载存储在外部非易失性存储器中的初始代码。如果引导程序代码未能加载初始代码(步骤208),则执行停止且SSD未能正确地启动。
在步骤210处,执行来自外部非易失性存储器的代码,且在步骤212处,非易失性存储器检查是否设置出厂模式。如果设置出厂模式(是),则过程跳转到步骤222,其中SSD控制器执行包含对NAND闪存的测试的出厂模式设置。如果并不设置出厂模式(否),则过程继续到步骤214,其中非易失性存储器代码尝试加载存储于快闪存储器中的其它代码和元数据。如果非易失性存储器代码在此处失败(步骤216),则正常执行停止且SSD未能正确地启动。如果非易失性存储器代码成功加载存储于快闪存储器中的其它代码和元数据,则过程继续到步骤218,其中SSD控制器执行来自外部快闪存储器的代码和元数据,从而实现SSD正常操作的成功启动(步骤220)。
图3示出利用SSD的所确定断电持续时间的启动过程的流程图300。所述过程在步骤302处对SSD控制器进行加电时开始。在步骤304处,主机将时间戳写入到SSD控制器寄存器。在步骤306处,SSD控制器执行内部ROM中的引导程序代码。在步骤308处,引导程序代码尝试加载存储在外部非易失性存储器中的初始代码。如果引导程序代码未能加载代码,则SSD未能适当地启动(步骤310)。如果引导程序代码成功加载初始代码,则过程继续到步骤312且SSD控制器执行从外部非易失性存储器加载的代码。在步骤314处,非易失性存储器检查是否设置出厂模式。如果设置出厂模式,则过程跳转到步骤320,且SSD控制器执行包含对NAND闪存的测试的出厂模式设置,且过程继续到步骤322,实现SSD正常操作的成功启动。
如果并不设置出厂模式,则在步骤316处,SSD控制器基于步骤304中由主机写入的时间戳和在控制器中存储的断电时间戳,确定自从最后一次断电以来的时间。在步骤318处,控制器确定自从最后一次断电以来的时间是否大于限值或阈值。阈值可为预定的,或可为基于SSD的操作参数(包含但不限于NAND快闪存储器111的类型、NAND快闪存储器111已经历的编程/擦除循环的数目、NAND快闪存储器111先前操作的温度条件和当前温度)而计算的值。如果自从最后一次断电以来的时间大于阈值,则过程跳转到步骤320且SSD控制器执行包含对NAND闪存的测试的出厂模式设置,且过程继续到步骤322,实现SSD正常操作的成功启动。如果自从最后一次断电以来的时间不大于限值(即,小于或等于限值),则在步骤324处,非易失性存储器代码尝试加载外部NAND快闪存储器中的代码和/或元数据。在步骤326处,SSD控制器执行从外部NAND快闪存储器加载的代码和元数据,且在步骤322处成功地启动,使得SSD正常操作。
与常规启动过程相比,图3说明使用来自主机的当前时间戳来确定自从SSD最后一次断电以来的时间(步骤316)。如果在步骤318处所述时间超出限值,则执行跳转到出厂模式设置,这将包含对NAND闪存的测试以确保其可被适当地读取和写入。此使用时间戳来确定SSD的断电持续时间优化了芯片内部的存储器利用。芯片上存储器可能很昂贵,但它是不变的,且一旦制造出芯片就无法更改。这对于如用于检查外部所存储代码是否合法且尚未被攻击或以其它方式篡改的安全功能的代码功能来说是一个优势。外部串行NOR非易失性存储器的使用补充了内部存储器且降低了内部或芯片上存储器所需的成本。串行NOR非易失性存储器可被重新编程且改变以升级存储于其中的代码,或使得可针对不同产品提供不同版本的代码。为了降低NOR的成本,NOR中的代码在将执行传送到存储于快闪存储器中的代码之前执行最少所需功能。然而,如果SSD已断电太长时间,则快闪存储器可能会出现故障,因为超出针对快闪存储器所指定的保持周期会使得当读取闪存以检索代码和/或元数据进行启动过程时发生不可恢复的错误。在存取快闪存储器之前利用时间戳来确定是否已超出保持周期降低了SSD在启动过程期间发生故障的风险。
图4示出确定SSD的断电持续时间以用于确定SSD的启动模式的过程400的框图。SSD可为图1的SSD。SSD存储器装置系统400包含主机402(例如图1的主机102)和SSD 404(例如图1的SSD 104)。SSD 404具有包含芯片上ROM 407(例如图1的ROM 107)和寄存器408(例如图1的寄存器108)的控制器406(例如图1的控制器106)。控制器406耦合到非易失性存储器410(例如图1的非易失性存储器110)。主机402以通信方式耦合到SSD 404的控制器406。SSD 404还可包含快闪存储器以及其它组件,但为了清楚起见图4省略了这些组件。
在步骤1处,作为在由主机402初始化时初始设置控制器406的部分,主机402将当前时间戳写入到寄存器408中。此时间戳为反映初始化控制器以进行通电的时间的通电时间戳。通电时间戳可呈自从UTC 1971年1月1日午夜起已经过的毫秒数的形式。此步骤由从主机402到控制器406的箭头420说明。初始化控制器以开始执行命令可包含一序列动作,包含基于系统配置设置寄存器、向主机指示先前重置已完成、配置例如管理队列的队列以及配置控制器设置。作为初始化过程期间控制器406的设置配置的部分,主机402将通电时间戳写入到寄存器408中。在步骤2处,主机402接着通过在控制器配置寄存器的启用位(“EN位”)中写入1来启用控制器。此步骤由从主机到控制器的箭头422说明。
在步骤3处,控制器406检索SSD 404的非易失性存储器410中保存的断电时间戳。断电时间戳是在SSD 404断电之前保存的。步骤3由从控制器406到非易失性存储器410的箭头424说明。在步骤4处,控制器406计算所检索断电时间戳与由主机402写入到寄存器408中的通电时间戳之间的差或差量。所检索断电时间戳与通电时间戳之间的差为SSD 404的断电持续时间,或SSD 404已掉电的时长。基于所计算断电持续时间和设置的阈值或限值(其可根据NAND快闪存储器111的类型、NAND快闪存储器111已经历的编程/擦除循环的数目、NAND快闪存储器111先前操作的温度条件和当前温度而变化),控制器406执行由箭头426所说明的启动过程的必要操作。
如将关于图6和7进一步描述,控制器406通过计算断电持续时间、将持续时间与设置的阈值相比较且基于所述比较确定如何继续进行控制器的初始化来确定SSD 404的适当启动模式。如果所计算断电持续时间满足阈值,则控制器406继续进行出厂重置启动模式,且如果所计算断电持续时间未能满足阈值,则控制器406照常初始化控制器406和SSD 404,包含存取快闪存储器中的启动指令。
确切地说,如果所计算断电持续时间满足或超出SSD 404的离线数据保持时间,则控制器406可选择不尝试从NAND(未示出)检索SSD 404的先前状态,这是因为存在不可恢复的错误会使得SSD 404变得不可用的风险。替代地,控制器406可选择使用出厂启动模式来启动SSD 404,如同第一次通电一般。SSD 404的离线数据保持时间由控制器406通过加载存储于非易失性存储器中的值而确定,所述值可为默认预定值或基于SSD的操作参数(包含但不限于NAND快闪存储器111的类型、NAND快闪存储器111已经历的编程/擦除循环的数目、NAND快闪存储器111先前操作的温度条件和当前温度)的值。所述值在控制器406中被编程为与断电持续时间进行比较的阈值。SSD 404的离线数据保持时间可约为数周、数月或数年。在一些实施方案中,SSD 404的离线数据保持时间为三个月。在一些实施方案中,SSD404的离线数据保持时间取决于温度。
知道SSD 404的准确断电持续时间允许控制器406准确地确定SSD 404是否应以安全模式启动。如果SSD 404的长存储时间周期超出SSD 404的离线数据保持时间,则快闪存储器中的电荷泄漏会使得驱动器的正常启动模式所需的在快闪存储器中的指令产生不可恢复的错误,从而使得SSD 404无法正常启动。
在一些实施方案中,可在控制器406内预定和设置额外阈值以供控制器406与断电持续时间进行比较来确定SSD 404启动的其它方面,例如错误校正过程或是否刷新部分写入的块。这些阈值可比SSD 404的离线数据保持时间阈值短得多,约为数小时、数天或数周。
控制器406还可使用SSD 404的所计算断电持续时间来确定用于在存取快闪存储器时遇到的读取错误的错误校正方法或调试方法。关于最近电力循环和断电持续时间的信息使得控制器406能够基于与阈值相比较的断电持续时间来预测可能在SSD 404中发生的问题。控制器406可接着基于自从SSD 404最后一次断电以来经过的时间选择适当错误校正方法来调试预期问题。
另外,可供控制器406使用的断电持续时间信息可允许控制器406确定到快闪存储器的块的适当写入模式。快闪存储器是顺序地写入到页的,且有必要填充每一块而非留下部分写入的块,使得所写入页的数目不是完整的块。在每一电力循环期间,SSD 404通过将数据从部分写入的块移动到新块且将部分写入的块再循环而在启动时间刷新任何开放或部分填充的块,以便避免可靠性问题。在由主机传信的正常关机程序中,将不会部分地填充块。然而,在例如电力故障的意外掉电情况中,在关机时可部分地填充快闪存储器的块。如果SSD 404持续相当长的时间周期掉电,则部分写入的块中的数据可变得不可靠且必须被移动到下一块,并且写入应以下一块继续。然而,如果断电持续时间足够短,则不必要对块进行刷新,且控制器406可允许继续写入到同一部分填充的块,因为电力循环之间的时间延迟不足以使写入到部分填充的块的数据不可靠。控制器406将所计算断电持续时间与基于块在断电期间可处于经擦除状态的持续时间设置的阈值进行比较来确定是否需要刷新,或写入是否可以部分填充的块继续。这样做改进了SSD 404的就绪时间,因为不需要对开放块进行刷新,且避免了不必要的NAND耗损。在此类情况中,控制器406还可使用断电持续时间来确定适当的错误校正方法以校正部分写入的块中的错误。由控制器出于此目的使用断电持续时间信息需要准确的断电时间戳。
当控制器406完成执行启动过程操作时,控制器406设置主机402可存取的状态位,以传信控制器406准备好从主机402接收例如存储命令的命令。确切地说,控制器406在控制器状态寄存器(未示出)中设置RDY状态位。RDY状态位指示准备好接受NVMe I/O命令,但控制器406可能够在设置状态位之前接受NVMe管理命令。主机402等待来自控制器406的此信号,所述信号表示控制器406已完成初始化且准备好从主机402接收和处理例如NVMe I/O命令的命令。
在由从主机402到控制器406的箭头428说明的步骤5处,主机402将I/O命令传输到控制器406。此时,主机402还可将NVMe命令时间戳作为“设置特征时间戳”命令的部分提供到SSD 404。在大多数情况下,因为NVMe“设置特征时间戳”命令是在执行用于启动SSD 404的指令之后从主机402到达,所以无法依赖于NVMe“设置特征时间戳”命令来供应通电时间戳,控制器406将根据所述通电时间戳作出选择SSD 404的启动模式的决策。
在一些实施方案中,控制器406可包含用于两阶段启动过程的指令,其最初使用存储在SPI闪存中的启动代码以使得控制器406能够从主机接收NVMe“设置特征时间戳”命令,且基于所接收时间戳确定断电持续时间并开始执行从非易失性存储器存取的主启动代码。在此情况下,并不将“设置特征时间戳”命令作为I/O命令加以接收,这将需要在控制器406中设置提交队列和完成队列以处理命令,且控制器406可在从快闪存储器存取启动指令之前存取时间戳。
在由从控制器406到非易失性存储器410的箭头430说明的步骤6处,控制器406在非易失性存储器中记录断电时间戳。在一些实施方案中,紧接在控制器406断电的时刻之前将断电时间戳保存在非易失性存储器410中。在一些实施方案中,控制器406周期性地更新非易失性存储器410中的断电时间戳。例如,控制器406可每小时、每24小时、每周或每月或以任何其它合适周期更新断电时间戳。为了周期性地更新时间戳,控制器406在内部跟踪SSD 404已通电的时间,且将在步骤1中从主机接收的时间戳添加到所述时间以获得当前时间。
对于具有在意外断电之后供应备用电力的断电保护(PLP)电容器的SSD,如果意外断电,则作为PLP关机过程的部分,控制器406使用残余电容器电力更新断电时间戳。在其它实施方案中,对于不具有PLPP电容器的SSD,当意外断电时,控制器406并不更新断电时间戳,且依赖于在时间戳的周期性更新期间保存到非易失性存储器410的最后断电时间戳。
虽然图4说明控制器406将断电时间戳保存在非易失性存储器410中,但可将断电时间戳保存在SSD 404的另一持久性非易失性存储器中。例如,可在ROM 407、外部NOR ROM、控制器寄存器或断电时间戳寄存器中更新断电时间戳。断电时间戳可保存到控制器406的可由控制器406在驱动器的完全启动之前存取的任何持久性存储器。NOR ROM包含无法保存在NAND中的启动代码和元数据。NOR中的信息足以使驱动器通电且存取快闪存储器,或允许驱动器如同刚出厂安装一般启动。通常,NOR ROM为控制器406自身的单独外部存储器,其可用于更新固件。在一些实施方案中,控制器406周期性地更新断电时间戳且还在SSD 404关机时更新断电时间戳。
在另一实施方案中,时间戳保存在控制器406的寄存器中,例如微码可存取的PCIe/NVMe控制器寄存器。不论微码和固件是如何加载的,主机都可在施加电力时存取经硬译码寄存器。主机402可将SSD 404作为有效NVMe或PCIe装置,且主机可在已启动NOR代码或引导程序ROM代码之前存取寄存器。在一些实施方案中,与通电时间戳分开保存断电时间戳。在一些实施方案中,断电时间戳与通电时间戳一起保存在寄存器408中。
在一些实施方案中,控制器406在SSD 404的非易失性存储器410和/或寄存器408中维持通电和断电时间戳的历史。控制器406可使用历史来确定SSD 404的累积断电持续时间以用于确定适当启动方法或例如错误校正过程的其它SSD过程。在一些实施方案中,控制器406将通电和断电时间戳的历史保存为通电和断电时间戳的完整历史,和/或保存为断电持续时间的完整历史。在一些实施方案中,将历史保存为通电和断电时间戳或断电持续时间的子集,例如,最后10个时间戳或持续时间。在一些实施方案中,控制器406将历史保存为用于确定SSD 404的通电模式或其它过程的累积断电时间。通过存储和考虑累积断电时间,控制器406可确定多个短断电周期总起来说是否等同于需要刷新部分写入的块或实施特定错误校正或调试策略的较长断电持续时间。
为了在NVMe装置中实施关于图4所描述的过程,将对控制器寄存器集合下的时间戳寄存器408的支持添加到NVMe规范。应用层处的NVMe驱动器将需要执行用当前主机系统时间写入时间戳寄存器408的存储器写入事务,且SSD控制器406将需要在跨越电力循环和重置命令持久的存储器中随时间流逝而更新时间戳。这通过将断电时间戳保存到SSD 404的非易失性存储器410中来实现,如上文所描述。
尽管图1、3和4描述在SSD的上下文中确定断电持续时间,但计算断电持续时间以用于确定适当启动模式或其它过程可用于使用快闪存储器存储正常启动过程必需的数据的多种装置中。例如,接收通电时间戳、检索所保存断电时间戳以及从这些时间戳确定断电持续时间的方法将适用于通常使用PCIe高速总线的装置,所述总线依赖于在正常启动过程期间所需的存储在NAND中的数据,所述总线例如网络接口控制器(NIC),例如以太网NIC。如果以太网NIC在掉电太长时间之后尝试读取NAND,则以太网NIC可能在尝试读取NAND时遇到不可恢复的错误。以太网NIC、PCIe装置或在正常启动过程期间依赖于NAND快闪存储器的任何其它类似装置可受益于并入上文在图1、3和4中所描述的方法,以从其控制装置接收通电时间且存储断电时间来进行此启动模式确定。
图5示出在由SSD执行启动模式指令之前,在装置504处从主机接收通电时间戳的过程的框图500。框图500包含主机502和装置504。主机可为图1的主机102、图4的主机402,或控制使用快闪存储器来存储正常启动过程必需的数据的装置的任何装置。装置504可为图1的SSD 104、图4的SSD 404,或使用快闪存储器来存储正常启动过程必需的数据的任何装置,例如以太网NIC或PCIe装置。主机502和装置504以通信方式耦合。
主机502对装置504执行PCIe基地址寄存器(BAR)配置532以通过读取和写入其BAR寄存器而开始配置装置504。在配置寄存器之后的装置枚举期间,主机502对存储器映射的装置寄存器执行存储器读取和存储器写入。主机502接着将存储器写入当前时间戳命令534传输到装置504,以将当前时间作为通电时间写入到时间戳寄存器(即,新寄存器,如本申请中所公开)。主机502通过将存储器写入CC.EN=1命令536传输到装置504以将启用位设置为1来继续初始化装置504,从而开始初始化和启动过程。装置504初始化以使用时间戳来确定断电持续时间并视需要将其用于驱动器初始化来继续540。装置504使用当前时间戳信息以及来自装置504的最后一次断电的所保存时间戳的信息确定装置在通电之前的断电时间,并基于断电持续时间确定适当启动模式。关于图4描述此过程。最后,主机502对装置504执行存储器读取538以确定装置504是否被初始化且准备好从主机502接收命令。主机502执行对CSTS.RDY=1的存储器读取,以确定装置504是否已将就绪位设置为1,所述设置指示用于启动的指令的初始化和执行已完成且装置504准备好从主机502接收I/O命令。
图6示出用于基于断电持续时间确定SSD的启动模式的决策图600。所述过程在步骤602处例如将电力供应到SSD的控制器时开始。在步骤604处,控制器将来自主机的通电时间戳接收到控制器的寄存器中。在步骤606处,控制器检索在控制器最后一次掉电时存储在非易失性存储器中的断电时间戳。在步骤608处,控制器基于由主机供应的通电时间戳和存储于存储器中的断电时间戳确定SSD的断电持续时间。在步骤610处,控制器确定断电持续时间是否满足第一阈值。第一阈值为预定值或由控制器计算并更新且设置在非易失性存储器中的值。可在ROM或非易失性存储器中预定和存储默认初始值,此后可基于SSD的操作条件参数计算更新值,所述参数包含但不限于SSD中的NAND快闪存储器的类型、NAND快闪存储器已经历的编程/擦除循环的数目、NAND快闪存储器先前在通电时操作的温度条件、当前温度等等。在一些实施方案中,除了将通电时间戳写入到SSD之外,主机还可向额外寄存器写入温度分布,例如在SSD断电时发生的最大/最小/平均环境温度,以便SSD可更好地估计或计算SSD中的NAND快闪存储器的保持时间。第一阈值可为SSD的NAND快闪存储器111的离线数据保持时间。
如果控制器在步骤610处确定断电持续时间确实满足第一阈值(是)且断电持续时间长于离线数据保持时间,使得很可能发生不可恢复的错误,则过程继续到步骤612,且控制器使用存储于例如NOR ROM的非易失性存储器中的微码和指令执行用于出厂启动模式的指令。出厂启动模式指令如同第一次通电一般启动控制器和SSD。如果控制器因为断电持续时间等于或小于离线数据保持时间而确定断电持续时间在步骤610处确定断电持续时间不满足第一阈值(否),则过程继续到步骤614,其中控制器确定断电持续时间是否满足第二阈值。第二阈值可为SSD存储器中的块可在断电期间处于经擦除状态的持续时间。
如果控制器在步骤614处确定断电持续时间未能满足第二阈值(否),使得断电持续时间短于或等于SSD存储器中的块在断电期间可处于擦除状态的最大持续时间,则控制器继续到步骤616,并且基于存储于快闪存储器中的指令执行正常启动过程,且继续写入到部分写入的块而无需进行刷新。如果控制器在步骤614处确定断电持续时间满足第二阈值(是)且断电持续时间长于块在断电期间可处于经擦除状态的持续时间,则控制器继续到步骤616,并且控制器基于存储于快闪存储器中的指令执行正常启动过程,且通过将写入到部分写入的块的数据写入到新块且擦除旧块来执行对所述块的刷新。控制器接着继续写入到新块。使控制器在开始驱动器的启动过程之前具有确定SSD的断电持续时间的信息使得控制器能够作出忽略快闪存储器读取错误并以出厂模式启动的决策,或能够采用某种错误校正方法照常从快闪存储器启动。此外,所述信息使得控制器能够作出关于在成功执行启动模式指令之后利用的过程的额外决策,例如是否刷新部分写入的块。
图7示出确定SSD的启动模式的方法700的流程图。在步骤702处,在对控制器(例如图1的控制器106或来自图4的控制器406)进行加电时,控制器在控制器的硬件寄存器处从主机接收通电时间戳。主机在控制器初始化过程期间且在控制器已完全启动或存取快闪存储器之前将时间戳写入到硬件寄存器。在步骤704处,控制器从耦合到控制器的第一非易失性存储器检索断电时间戳。断电时间戳是由控制器先前在SSD的最后一次断电之前保存到非易失性存储器中。
在步骤706处,控制器比较通电时间戳和断电时间戳以确定差量时间。SSD将从主机接收到的通电时间戳减去从第一非易失性存储器检索的断电时间戳以确定差量时间。差量时间为SSD的断电持续时间。在步骤708处,控制器基于差量时间与阈值的比较来确定SSD的启动模式。在一些实施方案中,阈值可为预设默认阈值,或其可为由SSD控制器计算且基于SSD的操作条件而更新的阈值,所述阈值指示SSD的离线数据保持时间。阈值可约为数天、数周、数月或数年。在一些实施方案中,阈值为三个月。在一些实施方案中,阈值取决于温度。在一些实施方案中,阈值取决于SSD的NAND快闪存储器已经历的编程/擦除循环的数目。
如果差量时间满足阈值,则控制器继续进行出厂重置启动模式,且如果所计算差量时间未能满足阈值,则控制器照常初始化控制器和SSD,包含存取快闪存储器中的启动指令和元数据。如果所计算差量时间满足或超出SSD的预设离线数据保持时间,则控制器选择不尝试从NAND检索SSD的先前状态,这是因为存在不可恢复的错误会使得SSD变得不可用的较高风险。替代地,控制器如同SSD第一次通电一般使用出厂启动模式启动SSD。
通过使得SSD的控制器能够确定断电持续时间,可避免在长断电周期之后进行启动时驱动器发生故障。SSD能够基于断电持续时间与设置的阈值的比较来作出启动模式决策,以确定是否使用存储在快闪存储器中的指令正常启动,或在断电持续时间太长且很可能发生不可恢复的错误时,确定是否以出厂模式启动。向控制器提供断电持续时间进一步允许控制器作出关于是刷新部分写入的块还是继续写入的确定,这可改进SSD的就绪时间且减少NAND的不必要耗损。此外,提供关于断电持续时间的信息可用于使用快闪存储器来存储启动模式指令的数种装置,例如以太网控制器和其它PCIe装置。提供允许计算断电持续时间的信息改进了此类装置的效率和寿命。
所属领域的技术人员将清楚本发明的各个方面的其它目标、优势和实施例,且它们在本描述内容和附图的范围内。例如但不限于,结构或功能元件可根据本发明重新布置。类似地,根据本发明的原理可应用于即使本文中没有具体地详细描述但仍在本发明的范围内的其它实例。
Claims (20)
1.一种固态硬盘,其包括:
控制器,其包括:
第一非易失性存储器,其被配置成存储断电时间戳;以及
硬件寄存器,主机能存取所述硬件寄存器;以及
第二非易失性存储器,其耦合到所述控制器,所述第二非易失性存储器被配置成存储用于所述固态硬盘的至少一个启动模式的指令;
其中在对所述控制器进行加电时且在所述控制器执行用于所述固态硬盘的至少一个启动模式的所述指令之前,所述控制器被配置成在所述硬件寄存器中从所述主机接收通电时间戳,并基于所述通电时间戳和所存储断电时间戳确定所述固态硬盘的启动模式。
2.根据权利要求1所述的固态硬盘,其中所述控制器被配置成在设置所述主机能存取的状态位之前从所述主机接收所述通电时间戳,所述状态位指示准备好从所述主机接收存储命令。
3.根据权利要求2所述的固态硬盘,其中所述控制器被配置成通过确定所述通电时间戳与所述所存储断电时间戳之间的差量时间,且将所述差量时间与阈值进行比较来确定所述启动模式。
4.根据权利要求3所述的固态硬盘,其中
如果所述差量时间大于所述阈值,则所述控制器被配置成进入出厂启动模式,且
如果所述差量时间小于或等于所述阈值,则所述控制器被配置成通过存取所述第二非易失性存储器而进入正常启动模式。
5.根据权利要求1所述的固态硬盘,其中所述第一非易失性存储器被配置成存储断电和通电时间戳的历史。
6.根据权利要求5所述的固态硬盘,其中所述控制器被配置成基于断电和通电时间戳的所述历史确定累积断电持续时间。
7.根据权利要求1所述的固态硬盘,其中所述控制器被配置成基于所述通电时间戳和所述所存储断电时间戳确定错误校正模式。
8.根据权利要求1所述的固态硬盘,其中所述控制器被配置成基于所述通电时间戳和所述所存储断电时间戳确定是否刷新存储器的一或多个块。
9.根据权利要求1所述的固态硬盘,其中在关机时,所述控制器被配置成将断电时间戳存储到所述第一非易失性存储器中。
10.根据权利要求1所述的固态硬盘,其中所述硬件寄存器为PCIe硬件寄存器。
11.根据权利要求1所述的固态硬盘,其中所述控制器被配置成周期性地更新所述第一非易失性存储器中的当前时间戳。
12.根据权利要求1所述的固态硬盘,其中从所述主机接收到的所述通电时间戳是作为具有当前主机系统时间戳的存储器写入命令加以接收。
13.一种确定固态硬盘的启动模式的方法,所述方法包括:
在对控制器进行加电时,在控制器的硬件寄存器处从主机接收通电时间戳;
从耦合到所述控制器的第一非易失性存储器检索断电时间戳;
比较所述通电时间戳与所述断电时间戳以确定差量时间;以及
基于所述差量时间与阈值的比较而确定所述固态硬盘的启动模式。
14.根据权利要求13所述的方法,其进一步包括:
如果所述差量时间大于所述阈值,则进入出厂启动模式;且
如果所述差量时间小于或等于所述阈值,则通过存取以通信方式耦合到所述控制器的第二非易失性存储器中的启动指令而进入正常启动模式。
15.根据权利要求13所述的方法,其中接收所述通电时间戳进一步包括在设置所述主机能存取的状态位之前从所述主机接收所述通电时间戳,所述状态位指示准备好从所述主机接收存储命令。
16.根据权利要求13所述的方法,其进一步包括基于所述差量时间与所述阈值的所述比较而确定错误校正模式。
17.根据权利要求13所述的方法,其进一步包括基于所述通电时间戳和所存储断电时间戳确定是否刷新所述第二非易失性存储器的一或多个块。
18.根据权利要求13所述的方法,其进一步包括周期性地更新存储于所述第一非易失性存储器中的当前时间戳。
19.根据权利要求13所述的方法,其进一步包括将通电和断电时间戳的历史存储在所述第一非易失性存储器中。
20.根据权利要求13所述的方法,其进一步包括在掉电时将断电时间戳存储在所述第一非易失性存储器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/137,754 | 2020-12-30 | ||
US17/137,754 US11422825B2 (en) | 2020-12-30 | 2020-12-30 | Determination of power-off duration of NVMe SSD |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114694728A true CN114694728A (zh) | 2022-07-01 |
Family
ID=82119872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111624062.6A Pending CN114694728A (zh) | 2020-12-30 | 2021-12-28 | NVMe SSD的断电持续时间确定 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11422825B2 (zh) |
CN (1) | CN114694728A (zh) |
TW (1) | TW202242608A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11094357B2 (en) * | 2019-05-07 | 2021-08-17 | Micron Technology, Inc. | Memory devices with user-defined tagging mechanism |
US11422825B2 (en) * | 2020-12-30 | 2022-08-23 | Kioxia Corporation | Determination of power-off duration of NVMe SSD |
US11762771B2 (en) * | 2021-04-27 | 2023-09-19 | Micron Technology, Inc. | Advanced power off notification for managed memory |
US11670394B2 (en) * | 2021-08-18 | 2023-06-06 | Nxp B.V. | Temperature exposure detection based on memory cell retention error rate |
US11868632B2 (en) * | 2021-12-30 | 2024-01-09 | Micron Technology, Inc. | Power control for boot-up of memory systems |
US11681478B1 (en) * | 2022-03-09 | 2023-06-20 | Toshiba Tec Kabushiki Kaisha | Image forming device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727473B2 (en) * | 2008-09-30 | 2017-08-08 | Intel Corporation | Methods to communicate a timestamp to a storage system |
US8645773B2 (en) * | 2011-06-30 | 2014-02-04 | Seagate Technology Llc | Estimating temporal degradation of non-volatile solid-state memory |
US9280419B2 (en) * | 2013-12-16 | 2016-03-08 | International Business Machines Corporation | Dynamic adjustment of data protection schemes in flash storage systems based on temperature, power off duration and flash age |
US20170062023A1 (en) * | 2015-08-26 | 2017-03-02 | Intel Corporation | Systems and methods to rejuvenate nonvolatile memory using timestamps |
US10379747B2 (en) * | 2015-12-21 | 2019-08-13 | Western Digital Technologies, Inc. | Automated latency monitoring |
US10650885B2 (en) * | 2017-03-07 | 2020-05-12 | Alibaba Group Holding Limited | Extending flash storage lifespan and data quality with data retention protection |
US11099760B2 (en) * | 2017-12-14 | 2021-08-24 | Intel Corporation | Background data refresh using a system timestamp in storage devices |
KR20200129467A (ko) * | 2019-05-08 | 2020-11-18 | 삼성전자주식회사 | 스토리지 컨트롤러 및 이를 포함하는 스토리지 장치 |
US20200210207A1 (en) * | 2020-03-06 | 2020-07-02 | Intel Corporation | Negotiated power-up for ssd data refresh |
US11422825B2 (en) * | 2020-12-30 | 2022-08-23 | Kioxia Corporation | Determination of power-off duration of NVMe SSD |
-
2020
- 2020-12-30 US US17/137,754 patent/US11422825B2/en active Active
-
2021
- 2021-12-23 TW TW110148439A patent/TW202242608A/zh unknown
- 2021-12-28 CN CN202111624062.6A patent/CN114694728A/zh active Pending
-
2022
- 2022-08-03 US US17/880,519 patent/US11853769B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11422825B2 (en) | 2022-08-23 |
US20220206821A1 (en) | 2022-06-30 |
US20230016285A1 (en) | 2023-01-19 |
TW202242608A (zh) | 2022-11-01 |
US11853769B2 (en) | 2023-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422825B2 (en) | Determination of power-off duration of NVMe SSD | |
KR101375992B1 (ko) | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 | |
US7197613B2 (en) | Nonvolatile memory | |
CN102298545B (zh) | 一种系统启动引导处理方法及装置 | |
TWI404054B (zh) | 處理微碼程式更新錯誤的裝置及其方法 | |
US20080215954A1 (en) | Bit error repair method and information processing apparatus | |
US20020129195A1 (en) | Microcomputer with built-in programmable nonvolatile memory | |
CN107239411B (zh) | 一种车载控制器内存管理方法及系统 | |
CN102024502B (zh) | 闪存器件测试方法、装置及板卡和网络设备 | |
CN106503542B (zh) | 设备参数防改写方法、设备和空调器 | |
US20060288154A1 (en) | Data clearing methods and computer systems utilizing the same | |
US11461516B2 (en) | Development system and productization method for data storage device | |
CN114356653A (zh) | 一种工控防火墙掉电保护方法及装置 | |
CN113626091A (zh) | 固态硬盘的启动优化方法、装置、计算机设备及存储介质 | |
CN111435305B (zh) | 存储装置、控制器及操作存储装置的方法 | |
JP2003122644A (ja) | 計算機及びその記憶装置 | |
CN117785071B (zh) | 一种存储器及其性能优化方法 | |
CN111831474A (zh) | 计算机开机启动侦测系统及方法 | |
CN114237377B (zh) | 一种显示面板的电源管理集成芯片的控制方法和系统 | |
US20220374223A1 (en) | Server and updating method for mac address | |
CN113986261A (zh) | 一种数据刷写的方法、相关装置、设备以及可读存储介质 | |
JP2022040856A (ja) | メモリ制御装置及びメモリ制御方法 | |
CN116484327A (zh) | 存储器的操作系统程序写保护方法、装置及电子设备 | |
CN117908936A (zh) | 一种提高fpga加载速度和可靠性的软件在线升级方法 | |
CN115599449A (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 |