CN110764947B - 数据写入方法以及存储控制器 - Google Patents
数据写入方法以及存储控制器 Download PDFInfo
- Publication number
- CN110764947B CN110764947B CN201810841759.0A CN201810841759A CN110764947B CN 110764947 B CN110764947 B CN 110764947B CN 201810841759 A CN201810841759 A CN 201810841759A CN 110764947 B CN110764947 B CN 110764947B
- Authority
- CN
- China
- Prior art keywords
- data
- write
- physical address
- logical
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种数据写入方法以及存储控制器。所述方法包括从主机***接收第一写入指令与对应所述第一写入指令的第一数据,其中所述第一写入指令指示将所述第一数据存储至第一逻辑地址;复制所述第一数据至寄存器,回应所述主机***所述第一写入指令已完成,并且开始执行第一程序化操作以将所述第一数据从所述寄存器程序化至第一物理页面;以及反应于判定所述第一程序化操作失败,根据逻辑转物理地址映射表来从所述寄存器读取所述第一数据,以及强制程序化所述第一数据至第二物理页面。
Description
技术领域
本发明涉及一种数据写入方法,尤其涉及一种适用于配置有可复写式非易失性存储器模块的存储装置的数据写入方法与存储控制器。
背景技术
一般来说,为了避免写入操作失败,存储装置的存储控制器会使用较大的缓冲存储器来存储所欲执行的写入操作的数据,以在写入操作失败时,从缓冲存储器中读取所述写入数据,以重新执行所述写入数据的写入操作。
然而,随着快闪存储器的容量的提升,因应于预防写入操作失败所需的存储在缓冲存储器的写入数据的大小也增加,进而导致了缓冲存储器的空间的需求提高,造成了存储装置的整体成本的增加。
因此,如何不经由使用缓冲存储器以备份写入数据的情况下,仍可复原所发生的失败的写入操作且维持写入操作的正确性与可靠度,是本领域人员研究的课题之一。
发明内容
本发明提供一种数据写入方法,在缓冲存储器不存储写入数据的情况下,可反应于对应所述写入数据的程序化操作的失败而从寄存器中直接读取所述写入数据,以重新执行对应所读取的所述写入数据的程序化操作,进而恢复应已被程序化至可复写式非易失性存储器模块的所述写入数据。
本发明的一实施例提供一种数据写入方法,适用于配置有可复写式非易失性存储器模块的存储装置,其中所述可复写式非易失性存储器模块具有多个物理页面。所述方法包括:从主机***接收第一写入指令与对应所述第一写入指令的第一数据,将所述第一写入指令存储至缓冲存储器中的一指令排列,并且将所述第一数据存储至所述缓冲存储器,其中所述第一写入指令指示将所述第一数据存储至第一逻辑地址;开始执行所述第一写入指令,复制所述第一数据至寄存器,记录第一物理地址至一逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址,回应所述主机***所述第一写入指令已完成,并且开始执行第一程序化操作以将所述第一数据从所述寄存器程序化至所述第一物理页面;以及反应于判定所述第一程序化操作失败,执行对应所述第一数据的第一重新程序化操作,所述第一重新程序化操作包括:根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据;反应于判定从所述寄存器读取所述第一数据,从所述寄存器读取所述第一数据;以及强制程序化所述第一数据至第二物理页面,并且在所述第一数据被程序化至所述第二物理页面后,记录所述第二物理页面的第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址,以完成所述第一重新程序化操作。
本发明的一实施例提供用于控制配置有可复写式非易失性存储器模块的存储装置的一种存储控制器。所述存储控制器包括:连接接口电路、存储器接口控制电路、写入恢复操作电路单元以及处理器。连接接口电路用以耦接至主机***。存储器接口控制电路用以耦接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个物理页面。所述处理器耦接至所述连接接口电路、所述存储器接口控制电路与所述写入恢复操作电路单元,并且用以从主机***接收第一写入指令与对应所述第一写入指令的第一数据,将所述第一写入指令存储至缓冲存储器中的指令排列,并且将所述第一数据存储至所述缓冲存储器,其中所述第一写入指令指示将所述第一数据存储至第一逻辑地址。所述处理器还用以开始执行所述第一写入指令,复制所述第一数据至寄存器,并且记录第一物理地址至逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址,其中所述处理器还用以回应所述主机***所述第一写入指令已完成,并且指示所述存储器接口控制电路开始执行第一程序化操作以将所述第一数据从所述寄存器程序化至所述第一物理页面。此外,反应于判定所述第一程序化操作失败,所述处理器还用以指示所述写入恢复操作电路单元执行对应所述第一数据的一第一重新程序化操作。所述第一重新程序化操作包括:所述写入恢复操作电路单元根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据;反应于判定从所述寄存器读取所述第一数据,所述写入恢复操作电路单元从所述寄存器读取所述第一数据;以及所述写入恢复操作电路单元强制程序化所述第一数据至一第二物理页面,并且在所述第一数据被程序化至所述第二物理页面后,记录所述第二物理页面的一第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址,以完成所述第一重新程序化操作。
基于上述,本发明实施例所提供的数据写入方法以及存储控制器,可反应于判定对应一数据的程序化操作失败,直接从寄存器中读取所述数据,以重新程序化所述数据,进而恢复之前失败的所述程序化操作。如此一来,存储装置的数据写入操作的完整性及可靠度可被提升。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明的一实施例所示出的主机***及存储装置的方块示意图。
图2是根据本发明的一实施例所示出的数据写入方法的流程图。
图3A是根据本发明的一实施例所示出的图2的步骤S251的流程图。
图3B是根据本发明的另一实施例所示出的图2的步骤S251的流程图。
附图标记说明
10:主机***
20:存储装置
110、211:处理器
120:主机存储器
130:数据传输接口电路
210:存储控制器
212:数据管理电路
213:存储器接口控制电路
2131:寄存器
214:错误检查与校正电路
215:写入恢复操作电路单元
2151:写入数据管理电路
2152:强制程序化电路
216:缓冲存储器
217:电源管理电路
220:可复写式非易失性存储器模块
230:连接接口电路
S21、S23、S25、S251、S252、S253、S254:数据写入方法的流程步骤
S2511、S2513、S2514、S2515、S2517:步骤S251的流程步骤
具体实施方式
在本实施例中,存储装置包括可复写式非易失性存储器模块(rewritable non-volatile memory module)与存储装置控制器(也称,存储控制器或存储控制电路)。此外,存储装置是与主机***一起使用,以使主机***可将数据写入至存储装置或从存储装置中读取数据。
图1是根据本发明的一实施例所示出的主机***及存储装置的方块示意图。
请参照图1,主机***(Host System)10包括处理器(Processor)110、主机存储器(Host Memory)120及数据传输接口电路(Data Transfer Interface Circuit)130。在本实施例中,数据传输接口电路130耦接(也称,电性连接)至处理器110与主机存储器120。在另一实施例中,处理器110、主机存储器120与数据传输接口电路130之间利用***总线(System Bus)彼此耦接。
存储装置20包括存储控制器(Storage Controller)210、可复写式非易失性存储器模块(Rewritable Non-Volatile Memory Module)220及连接接口电路(ConnectionInterface Circuit)230。其中,存储控制器210包括处理器211、数据管理电路(DataManagement Circuit)212与存储器接口控制电路(Memory Interface Control Circuit)213。
在本实施例中,主机***10是通过数据传输接口电路130与存储装置20的连接接口电路230耦接至存储装置20来进行数据的存取操作。例如,主机***10可经由数据传输接口电路130将数据存储至存储装置20或从存储装置20中读取数据。
在本实施例中,处理器110、主机存储器120及数据传输接口电路130可设置在主机***10的主机板上。数据传输接口电路130的数目可以是一或多个。通过数据传输接口电路130,主机板可以经由有线或无线方式耦接至存储装置20。存储装置20可例如是U盘、存储卡、固态硬盘(Solid State Drive,SSD)或无线存储器存储装置。无线存储器存储装置可例如是近距离无线通讯(Near Field Communication,NFC)存储器存储装置、无线传真(WiFi)存储器存储装置、蓝牙(Bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,iBeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板也可以通过***总线耦接至全球定位***(Global Positioning System,GPS)模块、网络接口卡、无线传输装置、键盘、屏幕、喇叭等各式I/O装置。
在本实施例中,数据传输接口电路130与连接接口电路230是相容于高速周边零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准的接口电路。并且,数据传输接口电路130与连接接口电路230之间是利用快速非易失性存储器接口标准(Non-Volatile Memory express,NVMe)通讯协定来进行数据的传输。
然而,必须了解的是,本发明不限于此,数据传输接口电路130与连接接口电路230也可以是符合并行高级技术附件(Parallel Advanced Technology Attachment,PATA)标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、串行高级技术附件(Serial Advanced Technology Attachment,SATA)标准、通用串行总线(Universal Serial Bus,USB)标准、SD接口标准、超高速一代(UltraHigh Speed-I,UHS-I)接口标准、超高速二代(Ultra High Speed-II,UHS-II)接口标准、存储棒(Memory Stick,MS)接口标准、多芯片封装(Multi-Chip Package)接口标准、多媒体存储卡(Multi Media Card,MMC)接口标准、eMMC接口标准、通用快闪存储器(UniversalFlash Storage,UFS)接口标准、eMCP接口标准、CF接口标准、整合式驱动电子接口(Integrated Device Electronics,IDE)标准或其他适合的标准。此外,在另一实施例中,连接接口电路230可与存储控制器210封装在一个芯片中,或者连接接口电路230是布设于一包含存储控制器210的芯片外。
在本实施例中,主机存储器120用以暂存处理器110所执行的指令或数据。例如,在本范例实施例中,主机存储器120可以是动态随机存取存储器(Dynamic Random AccessMemory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)等。然而,必须了解的是,本发明不限于此,主机存储器120也可以是其他适合的存储器。
存储控制器210用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令并且根据主机***10的指令在可复写式非易失性存储器模块220中进行数据的写入、读取与抹除等运作。
更详细来说,存储控制器210中的处理器211为具备运算能力的硬件,其用以控制存储控制器210的整体运作。具体来说,处理器211具有多个控制指令,并且在存储装置20运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。
值得一提的是,在本实施例中,处理器110与处理器211例如是中央处理单元(Central Processing Unit,CPU)、微处理器(micro-processor)、或是其他可程序化的处理单元(Microprocessor)、数字信号处理器(Digital Signal Processor,DSP)、可程序化控制器、特殊应用集成电路(Application Specific Integrated Circuits,ASIC)、可程序化逻辑装置(Programmable Logic Device,PLD)或其他类似电路元件,本发明并不限于此。
在一实施例中,存储控制器210还具有只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(boot code),并且当存储控制器210被致能时,处理器211会先执行此开机码来将存储于可复写式非易失性存储器模块220中的控制指令载入至存储控制器210的随机存取存储器中。之后,处理器211会运转此些控制指令以进行数据的写入、读取与抹除等运作。在另一实施例中,处理器211的控制指令也可以程序码型式存储于可复写式非易失性存储器模块220的特定区域,例如,可复写式非易失性存储器模块220中专用于存放***数据的物理存储单元中。
在本实施例中,如上所述,存储控制器210还包括数据管理电路212与存储器接口控制电路213。应注意的是,存储控制器210各部件所执行的操作也可视为存储控制器210所执行的操作。
其中,数据管理电路212耦接至处理器211、存储器接口控制电路213与连接接口电路230。数据管理电路212用以接受处理器211的指示来进行数据的传输。例如,经由连接接口电路230从主机***10(如,主机存储器120)读取数据,并且将所读取的数据经由存储器接口控制电路213写入至可复写式非易失性存储器模块220中(如,根据来自主机***10的写入指令来进行写入操作)。又例如,经由存储器接口控制电路213从可复写式非易失性存储器模块220的一或多个物理单元中读取数据(数据可读取自一或多个物理单元中的一或多个存储单元),并且将所读取的数据经由连接接口电路230写入至主机***10(如,主机存储器120)中(如,根据来自主机***10的读取指令来进行读取操作)。在另一实施例中,数据管理电路212也可整合至处理器211中。
存储器接口控制电路213用以接受处理器211的指示,配合数据管理电路212来进行对于可复写式非易失性存储器模块220的写入(也称,程序化,Programming)操作、读取操作或抹除操作。
举例来说,处理器211可执行写入指令序列,以指示存储器接口控制电路213将数据写入至可复写式非易失性存储器模块220中;处理器211可执行读取指令序列,以指示存储器接口控制电路213从可复写式非易失性存储器模块220的对应读取指令的一或多个物理单元(也称,目标物理单元)中读取数据;处理器211可执行抹除指令序列,以指示存储器接口控制电路213对可复写式非易失性存储器模块220进行抹除操作。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序码或指令码并且用以指示对可复写式非易失性存储器模块220执行相对应的写入、读取及抹除等操作。在一实施例中,处理器211还可以下达其他类型的指令序列给存储器接口控制电路213,以对可复写式非易失性存储器模块220执行相对应的操作。
此外,欲写入至可复写式非易失性存储器模块220的数据会经由存储器接口控制电路213转换为可复写式非易失性存储器模块220所能接受的格式。具体来说,若处理器211要存取可复写式非易失性存储器模块220,处理器211会传送对应的指令序列给存储器接口控制电路213以指示存储器接口控制电路213执行对应的操作。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变预设读取电压组的多个预设读取电压值以进行读取操作,或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的识别码、存储器地址等信息。
应注意的是,在本实施例中,存储器接口控制电路213包括寄存器2131,用以暂存欲写入至可复写式非易失性存储器模块220的数据。具体来说,在欲写入至可复写式非易失性存储器模块220的数据经由存储器接口控制电路213转换为可复写式非易失性存储器模块220所能接受的格式后,所述已转换的数据会被存储至寄存器2131。接着,存储器接口控制电路213会使用对应的程序化电压来将存储在寄存器2131中的已转换的数据程序化至可复写式非易失性存储器模块220。
可复写式非易失性存储器模块220是耦接至存储控制器210(存储器接口控制电路213)并且用以存储主机***10所写入的数据。可复写式非易失性存储器模块220可以是单阶存储单元(Single Level Cell,SLC)NAND型快闪存储器模块(即,一个存储单元中可存储1个比特的快闪存储器模块)、多阶存储单元(Multi Level Cell,MLC)NAND型快闪存储器模块(即,一个存储单元中可存储2个比特的快闪存储器模块)、三阶存储单元(Triple LevelCell,TLC)NAND型快闪存储器模块(即,一个存储单元中可存储3个比特的快闪存储器模块)、四阶存储单元(Quadruple Level Cell,QLC)NAND型快闪存储器模块(即,一个存储单元中可存储4个比特的快闪存储器模块)、三维NAND型快闪存储器模块(3D NAND flashmemory module)或垂直NAND型快闪存储器模块(Vertical NAND flash memory module)等其他快闪存储器模块或其他具有相同特性的存储器模块。可复写式非易失性存储器模块220中的存储单元是以阵列的方式设置。
在本实施例中,可复写式非易失性存储器模块220具有多个字线,其中所述多个字线的每一个字线包括多个存储单元。同一条字线上的多个存储单元会组成一或多个物理程序化单元(物理页面)。此外,多个物理程序化单元可组成一个物理单元(物理区块或物理抹除单元)。
在本实施例中,是以一个物理页面作为写入(程序化)数据的最小单位。物理单元为抹除的最小单位,即,每一物理单元含有最小数目之一并被抹除的存储单元。此外,每个物理页面的地址也可称为物理地址。
应注意的是,在本实施例中,用以记录一物理单元的信息的***数据可利用该物理单元中的一或多个存储单元来记录,或是利用一个***区中用以记录所有***数据的特定物理单元的一或多个存储单元来记录。
此外,必须了解的是,当处理器211对可复写式非易失性存储器模块220中的存储单元(或物理单元)进行分组以执行对应的管理操作时,此些存储单元(或物理单元)是被逻辑地分组,而其实际位置并未更改。
存储控制器210会配置多个逻辑单元给可复写式非易失性存储器模块220。主机***10是通过所配置的逻辑单元来存取存储在多个物理单元中的使用者数据。在此,每一个逻辑单元可以是由一或多个逻辑地址组成。例如,逻辑单元可以是逻辑区块(LogicalBlock)、逻辑页面(Logical Page)或是逻辑扇区(Logical Sector)。一个逻辑单元可以是映射至一或多个物理单元,其中物理单元可以是一或多个物理地址、一或多个物理扇、一或多个物理程序化单元或者一或多个物理抹除单元。在本实施例中,逻辑单元为逻辑区块,并且逻辑子单元为逻辑页面。每一逻辑单元具有多个逻辑子单元。在本实施例中,逻辑子单元的地址也称为逻辑地址。
此外,存储控制器210会建立逻辑转物理地址映射表(Logical To Physicaladdress mapping table)与物理转逻辑地址映射表(Physical To Logical addressmapping table),以记录配置给可复写式非易失性存储器模块220的逻辑地址与物理地址之间的映射关系。换言之,存储控制器210可通过逻辑转物理地址映射表来查找一逻辑地址所映射的物理地址,并且存储控制器210可通过物理转逻辑地址映射表来查找一物理地址所映射的逻辑地址。然而,上述有关逻辑地址与物理地址之间的映射关系的技术概念为本领域技术人员的惯用技术手段,不再赘述于此。在存储控制器的一般运作中,所述逻辑转物理地址映射表与物理转逻辑地址映射表可被维护于缓冲存储器216中。
在本实施例中,错误检查与校正电路214是耦接至处理器211并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当处理器211从主机***10中接收到写入指令时,错误检查与校正电路214会为对应此写入指令的数据产生对应的错误更正码(errorcorrecting code,ECC)和/或错误检查码(error detecting code,EDC),并且处理器211会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性存储器模块220中。之后,当处理器211从可复写式非易失性存储器模块220中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路214会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。此外,在错误检查与校正程序后,若成功解码所读取的数据,错误检查与校正电路214可回传错误比特值给处理器211。
在一实施例中,存储控制器210还包括缓冲存储器216与电源管理电路217。缓冲存储器216是耦接至处理器211并且用以暂存来自于主机***10的数据与指令、来自于可复写式非易失性存储器模块220的数据或其他用以管理存储装置20的***数据,以让处理器211可快速地从缓冲存储器216中存取所述数据、指令或***数据。电源管理电路217是耦接至处理器211并且用以控制存储装置20的电源。
在本实施例中,写入恢复操作电路单元215包括写入数据管理电路2151与强制程序化电路2152。所述写入恢复操作电路单元215用以接收处理器211指示来执行写入指令或重新程序化操作。应注意的是,在一实施例中,上述写入恢复操作电路单元215也可整合至处理器211中,以使处理器211可实行本实施例所提供的数据写入方法。
以下会配合多个附图来详细说明本发明的实施例所提供的数据写入方法的细节,以及对应所述数据写入方法的存储控制器210与写入恢复操作电路单元215的功能。
图2是根据本发明的一实施例所示出的数据写入方法的流程图。请同时参照图1与图2,在步骤S21中,处理器211从主机***10接收第一写入指令与对应所述第一写入指令的第一数据,将所述第一写入指令存储至缓冲存储器216中的指令排列,并且将所述第一数据存储至所述缓冲存储器216,其中所述第一写入指令指示将所述第一数据存储至第一逻辑地址。
具体来说,处理器211可在缓冲存储器216划分一块区域来作为指令排列,所述指令排列用以记录(存储)从主机***10所接收的写入指令与读取指令。此外,指令排列也可记录其他种类的指令。举例来说,每当处理器211从主机***接收一个指令,处理器211会将此指令存储至指令排列。接着,处理器211会根据先进先出(First In First Out)的方式来执行记录在指令排列中的指令。若所接收的是写入指令,处理器211还会将从主机***所接收的对应该写入指令的数据存储至缓冲存储器216中的缓冲区(Buffer)或写入数据缓冲区(Write Data Buffer)。
接着,在步骤S23中,处理器211开始执行所述第一写入指令,复制所述第一数据至寄存器2131,记录第一物理地址至逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址,回应所述主机***10所述第一写入指令已完成,并且开始执行第一程序化操作以将所述第一数据从所述寄存器2131程序化至所述第一物理页面。
具体来说,依据指令排列中所排列的多个指令的顺序,处理器211欲执行第一写入指令。接着,处理器211会从可复写式非易失性存储器模块220的所有可用的物理区块中,选择其中一个物理区块(也称,第一物理区块)作为用以存储第一数据的物理区块,并且开始执行所述第一写入指令,以将第一数据写入至第一物理区块的第一物理页面。所述第一物理页面的地址也称为第一物理地址。
接着,处理器211会从缓冲存储器中读取第一数据,并且复制所述第一数据至寄存器2131。在完成复制所述第一数据至寄存器2131的操作后,处理器211记录第一物理地址至逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址。所述逻辑转物理地址映射表被存储在缓冲存储器216中。在此并不限定逻辑转物理地址映射表的具体格式。但,经由逻辑转物理地址映射表,处理器211可知道存储在可复写式非易失性存储器模块220的第一物理地址的第一数据为主机***所指示的存储在第一逻辑地址的第一数据。
在经由记录逻辑转物理地址映射表以记录第一物理地址与第一逻辑地址的映射关系后,处理器211回应所述主机***10所述第一写入指令已完成。
应注意的是,在一实施例中,在经由记录逻辑转物理地址映射表以记录第一物理地址与第一逻辑地址的映射关系后,因为缓冲存储器的空间需求/管理,存储在所述缓冲存储器216中的所述第一数据与所述指令排列内的所述第一写入指令可能会被删除。在此情况下,第一数据会仅被存储于寄存器2131中,并且尚未被程序化至可复写式非易失性存储器模块220的第一物理地址(第一物理页面)。也就是说,当第一数据被存储至寄存器2131后,第一数据并不一定会被维持在缓冲存储器中(即,缓冲存储器216并不保证存储有第一数据)。基此,若要重新程序化第一数据,处理器211或写入恢复操作电路单元215并不会从缓冲存储器216中来找寻第一数据。
接着,处理器211可指示存储器接口控制电路213开始执行对应所述第一数据的程序化操作(也称,第一程序化操作),以经由施加程序化电压将存储于寄存器2131的第一数据程序化至第一物理页面。
在本实施例中,存储器接口控制电路213可在执行完第一程序化操作后,执行写入检验操作,以利用施加一检验电压来读取第一物理页面,以判断第一程序化操作是否成功或失败(获得一检验结果)。本发明并不限于写入检验操作的细节。存储器接口控制电路213可回传检验结果给处理器211,以让处理器211判断第一程序化操作是否成功或失败。
在一实施例中,若在第一程序化操作的期间发生了异常(如,逾时事件),处理器211也可判定所述第一程序化操作失败。
在步骤S25中,反应于判定所述第一程序化操作失败,处理器211用以指示写入恢复操作电路单元215执行对应所述第一数据的第一重新程序化操作。
详细来说,第一重新程序化操作可包括步骤S251、S252、S253、S254。
在步骤S251中,写入恢复操作电路单元215(或写入数据管理电路2151)根据所述逻辑转物理地址映射表来判断是否从所述寄存器2131读取所述第一数据。也就是说,在第一数据还存储在寄存器2131的情况下,写入恢复操作电路单元215(或写入数据管理电路2151)可根据所述逻辑转物理地址映射表来进一步判断是否需从所述寄存器2131读取所述第一数据。以下会分别通过图3A、图3B来详细说明步骤S251的细节。
图3A是根据本发明的一实施例所示出的图2的步骤S251的流程图。
在步骤S2511中,写入恢复操作电路单元215(或写入数据管理电路2151)根据所述逻辑转物理地址映射表来识别所述第一逻辑地址所映射的第三物理地址。
具体来说,写入恢复操作电路单元215(或写入数据管理电路2151)会读取最新的逻辑转物理地址映射表,并且从所述逻辑转物理地址映射表中查找第一逻辑地址所对应的物理地址(即,第三物理地址)。
如上所述,由于本实施例在执行第一写入指令的期间,会在尚未程序化第一数据之前,就记录对应第一逻辑地址的第一物理地址于逻辑转物理地址映射表中。基此,若逻辑转物理地址映射表中对应第一逻辑地址的物理地址不为之前所记录的第一物理地址,写入恢复操作电路单元215(或写入数据管理电路2151)可判定在逻辑转物理地址映射表中对应第一逻辑地址且不同于第一物理地址的第三物理地址中所存储的数据是对应新的写入指令的新数据(所述新的写入指令也指示将新数据写入至第一逻辑地址)。此时,写入恢复操作电路单元215(或写入数据管理电路2151)便判定不从寄存器2131中读取较旧的第一数据。反之,写入恢复操作电路单元215(或写入数据管理电路2151)会认为没有新的写入指令来写入新数据至第一逻辑地址,并且判定需从寄存器2131中读取较旧的第一数据。
详细来说,在步骤S2513中,写入恢复操作电路单元215(或写入数据管理电路2151)判断所述第三物理地址是否等于所述第一物理地址。其中反应于判定所述第三物理地址等于所述第一物理地址(S2513→是),接续至步骤S2515,写入恢复操作电路单元215(或写入数据管理电路2151)判定从所述寄存器2131读取所述第一数据(即,S251→是)。
反之,反应于判定所述第三物理地址不等于所述第一物理地址(S2513→否),接续至步骤S2517,写入恢复操作电路单元215(或写入数据管理电路2151)判定忽略所述第一数据且不从所述寄存器2131读取所述第一数据(即,S251→否)。
然而,在另一实施例中,反应于判定所述第三物理地址等于所述第一物理地址(S2513→是),写入恢复操作电路单元215(或写入数据管理电路2151)会更根据指令排列来判断是否从所述寄存器2131读取所述第一数据。
图3B是根据本发明的另一实施例所示出的图2的步骤S251的流程图。图3B中的步骤S2511、S2513、S2515、S2517相同于图3A的所述步骤,不赘述于此。以下仅说明图3B与图3A不同的步骤,即,步骤S2514。
在此另一实施例中,反应于判定所述第三物理地址等于所述第一物理地址(S2513→是),接续至步骤S2514,写入恢复操作电路单元215(或写入数据管理电路2151)判断所述指令排列是否存储第二写入指令,其中所述第二写入指令指示将第二数据存储至所述第一逻辑地址。
也就是说,在判定所述第三物理地址等于所述第一物理地址后,写入恢复操作电路单元215(或写入数据管理电路2151)会进一步检查指令排列中是否记录有指示将数据(也称,第二数据)写入至第一逻辑地址(相同于第一写入指令所指示的逻辑地址)的其他写入指令(也称,第二写入指令)。若有(S2514→是),则写入恢复操作电路单元215(或写入数据管理电路2151)会认为不需要重新程序化第一数据(因为,就算重新程序化第一数据,对应的第一逻辑地址也会被新的第二数据所取代),进而接续至步骤S2517,写入恢复操作电路单元215(或写入数据管理电路2151)判定忽略所述第一数据且不从所述寄存器读取所述第一数据(即,S251→否)。如此一来,可避免执行没有效益的第一重新程序化操作。
反之(S2514→否),接续至步骤S2515,写入恢复操作电路单元215(或写入数据管理电路2151)判定从所述寄存器读取所述第一数据(即,S251→是)。
请再回到图2,在执行步骤S251后,反应于判定所述寄存器读取所述第一数据(即,S251→是),接续至步骤S252,写入恢复操作电路单元215(或写入数据管理电路2151)从所述寄存器读取所述第一数据。具体来说,写入恢复操作电路单元215(或写入数据管理电路2151)可利用对应可复写式非易失性存储器模块220的一供应商指令(Vendor command)来从寄存器2131中读取第一数据。所述第一数据可暂存于缓冲存储器216。
接着,在步骤S253中,写入恢复操作电路单元215(或强制程序化电路2152)强制程序化所述第一数据至一第二物理页面,并且在所述第一数据被程序化至所述第二物理页面后,记录所述第二物理页面的一第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址,以完成所述第一重新程序化操作。
应注意的是,在第一重新程序化操作中,于步骤S253中所述的“强制程序化所述第一数据至第二物理页面”(也称,第一强制程序化操作)的操作并不同于步骤S23所述的第一程序化操作。具体来说,差异至少有下面两点。第一点,第一强制程序化操作是将第一数据程序化至第二物理页面,即,不同于第一物理页面的另个物理页面。第二点,强制程序化电路2152会在更新所述逻辑转物理地址映射表的操作(即,上述“记录所述第二物理页面的第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址”的步骤)之前,就先强制将第一数据程序化至第二物理页面。也就是说,在判定第一数据已被程序化至第二物理页面后,才记录所述第二物理页面的第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址。
应注意的是,强制程序化电路2152还可包含一大电容(未示出),其提供一备用电力,此备用电力足以于重新程序化操作中强制程序化一笔数据且更新对应的逻辑转物理地址映射表,以避免在强制程序化所述数据的过程中因发生断电所导致的程序化失败的错误。也就是说,在上述第一强制程序化操作中,就算发生了突然断电事件,第一数据仍然可以被程序化至第二物理页面,并且第二物理地址可被记录至逻辑转物理地址映射表(甚至逻辑转物理地址映射表还可被写入至可复写式非易失性存储器模块220)。
在步骤S254中,写入恢复操作电路单元215(或写入数据管理电路2151)忽略所述第一数据且不从所述寄存器读取所述第一数据,并且完成所述第一重新程序化操作。
应注意的是,在上述另一实施例(对应图3B的实施例)中,反应于判定忽略所述第一数据且不从所述寄存器读取所述第一数据,在所述完成所述第一重新程序化操作的步骤中,写入恢复操作电路单元215(或强制程序化电路2152)更从所述缓冲存储器216复制所述第二数据至所述寄存器2131,并且强制将所述第二数据程序化至所述第二物理页面。此外,在所述第二数据已被程序化至所述第二物理页面后,写入恢复操作电路单元215(或写入数据管理电路2151)记录所述第二物理页面的所述第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址,以完成所述第一重新程序化操作。此时,处理器211也可回应主机***10第二写入指令已完成。换言之,在上述另一实施例中,若发现指令排列存在有对应同样逻辑地址的其他写入指令,写入恢复操作电路单元215还会直接执行对应此其他写入指令的第二数据的强制程序化操作,以确保此其他写入指令的第二数据会被强制程序化至可复写式非易失性存储器模块220。应注意的是,在一实施例中,在强制将所述第二数据程序化至所述第二物理页面后且记录所述第二物理页面的所述第二物理地址至所述逻辑转物理地址映射表之前,写入恢复操作电路单元215(或写入数据管理电路2151)可删除所述缓冲存储器216中的所述第二数据与所述指令排列内的所述第二写入指令。
值得一提的是,在开始执行所述第一重新程序化操作时,所述处理器211会先停止从所述主机***10接收任何写入指令或对应任何写入指令的数据,并且停止执行所述指令排列中的任何写入指令。如此一来,可避免其他写入指令的干扰,并且也可维持缓冲存储器216的可用空间,以暂存欲重新程序化的第一数据。
此外,在完成所述第一重新程序化操作后,所述处理器211会恢复(Resume)从所述主机***10接收所述任何写入指令或对应所述任何写入指令的所述数据,并且恢复所述指令排列中的所述任何写入指令。即,在完成所述第一重新程序化操作后,处理器211会将存储控制器210的整体运作恢复为执行第一重新程序化操作之前的正常模式,来从主机***10接收指令或数据,并且照常地处理指令排列中的指令。此外,在第一重新程序化操作完成后,处理器211也可将最新的维护于缓冲存储器216中的逻辑转物理地址映射表写入至可复写式非易失性存储器模块220。
应注意的是,在开始执行所述第一重新程序化操作后且完成所述第一重新程序化操作之前,若处理器211发现指令排列中有排序在第一写入指令后的第一读取指令(所述第一读取指令排序在第二写入指令之前),其中第一读取指令用以指示读取存储在第一逻辑地址的数据。此时,处理器211可直接从寄存器2131中读取第一数据,并且将第一数据传送给主机***10,以直接完成第一读取指令。
此外,在一实施例中,在步骤S23中的“记录第一物理地址至逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址”的步骤也可在完成第一程序化操作后再执行。
综上所述,本发明实施例所提供的数据写入方法以及存储控制器,可反应于判定对应一数据的程序化操作失败,直接从寄存器中读取所述数据,以重新程序化所述数据,进而恢复之前失败的所述程序化操作。如此一来,存储装置的数据写入操作的完整性及可靠度可被提升。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中技术人员,在不脱离本发明的精神和范围内,当可作些许的更改与润饰,故本发明的保护范围当视权利要求所界定者为准。
Claims (8)
1.一种数据写入方法,适用于配置有可复写式非易失性存储器模块的存储装置,其中所述可复写式非易失性存储器模块具有多个物理页面,所述方法包括:
从主机***接收第一写入指令与对应所述第一写入指令的第一数据,将所述第一写入指令存储至缓冲存储器中的指令排列,并且将所述第一数据存储至所述缓冲存储器,其中所述第一写入指令指示将所述第一数据存储至第一逻辑地址;
开始执行所述第一写入指令,复制所述第一数据至寄存器,记录第一物理地址至逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址,回应所述主机***所述第一写入指令已完成,并且开始执行第一程序化操作以将所述第一数据从所述寄存器程序化至第一物理页面;以及
反应于判定所述第一程序化操作失败,执行对应所述第一数据的第一重新程序化操作,所述第一重新程序化操作包括:
根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据;
反应于判定从所述寄存器读取所述第一数据,从所述寄存器读取所述第一数据;以及
强制程序化所述第一数据至第二物理页面,并且在所述第一数据被程序化至所述第二物理页面后,记录所述第二物理页面的第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址,以完成所述第一重新程序化操作,
其中根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据的步骤包括:
根据所述逻辑转物理地址映射表来识别所述第一逻辑地址所映射的第三物理地址;
反应于所述第三物理地址不等于所述第一物理地址,判定忽略所述第一数据且不从所述寄存器读取所述第一数据,并且完成所述第一重新程序化操作。
2.根据权利要求1所述的数据写入方法,其中所述第一重新程序化操作还包括:
停止从所述主机***接收任何写入指令或对应任何写入指令的数据,并且停止执行所述指令排列中的任何写入指令,
其中在完成所述第一重新程序化操作后,恢复从所述主机***接收所述任何写入指令或对应所述任何写入指令的所述数据,并且恢复所述指令排列中的所述任何写入指令。
3.根据权利要求1所述的数据写入方法,其中根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据的步骤还包括:
反应于所述第三物理地址等于所述第一物理地址,判定从所述寄存器读取所述第一数据。
4.根据权利要求1所述的数据写入方法,其中根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据的步骤还包括:
反应于所述第三物理地址等于所述第一物理地址,判断所述指令排列是否存储第二写入指令,其中所述第二写入指令指示将第二数据存储至所述第一逻辑地址;
反应于判定所述指令排列存储所述第二写入指令,判定忽略所述第一数据且不从所述寄存器读取所述第一数据,并且完成所述第一重新程序化操作;以及
反应于判定所述指令排列没有存储所述第二写入指令,判定从所述寄存器读取所述第一数据。
5.一种存储控制器,用于控制配置有可复写式非易失性存储器模块的存储装置,所述存储控制器包括:
连接接口电路,用以耦接至主机***;
存储器接口控制电路,用以耦接至所述可复写式非易失性存储器模块,其中所述可复写式非易失性存储器模块具有多个物理页面;
写入恢复操作电路单元;以及
处理器,耦接至所述连接接口电路、所述存储器接口控制电路及所述写入恢复操作电路单元,
其中所述处理器用以从主机***接收第一写入指令与对应所述第一写入指令的第一数据,将所述第一写入指令存储至缓冲存储器中的指令排列,并且将所述第一数据存储至所述缓冲存储器,其中所述第一写入指令指示将所述第一数据存储至第一逻辑地址,
其中所述处理器还用以开始执行所述第一写入指令,复制所述第一数据至寄存器,并且记录第一物理地址至逻辑转物理地址映射表以映射所述第一物理地址至所述第一逻辑地址,其中所述处理器还用以回应所述主机***所述第一写入指令已完成,并且指示所述存储器接口控制电路开始执行第一程序化操作以将所述第一数据从所述寄存器程序化至第一物理页面,
其中反应于判定所述第一程序化操作失败,所述处理器还用以指示所述写入恢复操作电路单元执行对应所述第一数据的第一重新程序化操作,所述第一重新程序化操作包括:
所述写入恢复操作电路单元根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据;
反应于判定从所述寄存器读取所述第一数据,所述写入恢复操作电路单元从所述寄存器读取所述第一数据;以及
所述写入恢复操作电路单元强制程序化所述第一数据至第二物理页面,并且在所述第一数据被程序化至所述第二物理页面后,记录所述第二物理页面的第二物理地址至所述逻辑转物理地址映射表以映射所述第二物理地址至所述第一逻辑地址,以完成所述第一重新程序化操作,
其中在上述所述写入恢复操作电路单元根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据的运作中,
所述写入恢复操作电路单元根据所述逻辑转物理地址映射表来识别所述第一逻辑地址所映射的第三物理地址,
其中反应于所述第三物理地址不等于所述第一物理地址,所述写入恢复操作电路单元判定忽略所述第一数据且不从所述寄存器读取所述第一数据,并且完成所述第一重新程序化操作。
6.根据权利要求5所述的存储控制器,其中所述第一重新程序化操作还包括:
所述处理器停止从所述主机***接收任何写入指令或对应任何写入指令的数据,并且停止执行所述指令排列中的任何写入指令,
其中在完成所述第一重新程序化操作后,所述处理器恢复从所述主机***接收所述任何写入指令或对应所述任何写入指令的所述数据,并且恢复所述指令排列中的所述任何写入指令。
7.根据权利要求5所述的存储控制器,其中在上述所述写入恢复操作电路单元根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据的运作中,
反应于所述第三物理地址等于所述第一物理地址,所述写入恢复操作电路单元判定从所述寄存器读取所述第一数据。
8.根据权利要求5所述的存储控制器,其中在上述根据所述逻辑转物理地址映射表来判断是否从所述寄存器读取所述第一数据的运作中,
反应于所述第三物理地址等于所述第一物理地址,所述写入恢复操作电路单元判断所述指令排列是否存储第二写入指令,其中所述第二写入指令指示将第二数据存储至所述第一逻辑地址,
其中反应于判定所述指令排列存储所述第二写入指令,所述写入恢复操作电路单元判定忽略所述第一数据且不从所述寄存器读取所述第一数据,并且完成所述第一重新程序化操作,
其中反应于判定所述指令排列没有存储所述第二写入指令,所述写入恢复操作电路单元判定从所述寄存器读取所述第一数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810841759.0A CN110764947B (zh) | 2018-07-27 | 2018-07-27 | 数据写入方法以及存储控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810841759.0A CN110764947B (zh) | 2018-07-27 | 2018-07-27 | 数据写入方法以及存储控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110764947A CN110764947A (zh) | 2020-02-07 |
CN110764947B true CN110764947B (zh) | 2023-10-20 |
Family
ID=69327680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810841759.0A Active CN110764947B (zh) | 2018-07-27 | 2018-07-27 | 数据写入方法以及存储控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110764947B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312294B (zh) * | 2020-02-27 | 2024-06-18 | 瑞昱半导体股份有限公司 | 电子装置以及通讯方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090198871A1 (en) * | 2008-02-05 | 2009-08-06 | Spansion Llc | Expansion slots for flash memory based memory subsystem |
CN101950175A (zh) * | 2010-10-21 | 2011-01-19 | 广州数控设备有限公司 | 一种基于工业以太网的高速现场总线实现方法 |
CN102346235A (zh) * | 2011-07-11 | 2012-02-08 | 北京北大众志微***科技有限责任公司 | 一种面向硬件设备功能的自动测试***及方法 |
US20130036258A1 (en) * | 2011-08-05 | 2013-02-07 | Phison Electronics Corp. | Memory storage device, memory controller thereof, and method for programming data thereof |
-
2018
- 2018-07-27 CN CN201810841759.0A patent/CN110764947B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090198871A1 (en) * | 2008-02-05 | 2009-08-06 | Spansion Llc | Expansion slots for flash memory based memory subsystem |
CN101950175A (zh) * | 2010-10-21 | 2011-01-19 | 广州数控设备有限公司 | 一种基于工业以太网的高速现场总线实现方法 |
CN102346235A (zh) * | 2011-07-11 | 2012-02-08 | 北京北大众志微***科技有限责任公司 | 一种面向硬件设备功能的自动测试***及方法 |
US20130036258A1 (en) * | 2011-08-05 | 2013-02-07 | Phison Electronics Corp. | Memory storage device, memory controller thereof, and method for programming data thereof |
Also Published As
Publication number | Publication date |
---|---|
CN110764947A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860247B2 (en) | Data writing method and storage controller | |
TWI579696B (zh) | 資料重建方法與系統及其記憶體控制電路單元 | |
TWI551991B (zh) | 記憶體管理方法與系統及其記憶體儲存裝置 | |
US10372619B2 (en) | Data backup method, data recovery method and storage controller | |
US10642731B2 (en) | Memory management method and storage controller | |
TWI591482B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN112925481B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TWI509615B (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
CN107045890B (zh) | 数据保护方法、存储器控制电路单元及存储器存储装置 | |
US10509583B1 (en) | Memory management method and storage controller | |
CN106814968B (zh) | 存储器管理方法与***及其存储器存储装置 | |
US10496549B2 (en) | Memory manage method and storage controller using the same | |
TWI798680B (zh) | 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN112051971B (zh) | 数据整并方法、存储器存储装置及存储器控制电路单元 | |
CN110764947B (zh) | 数据写入方法以及存储控制器 | |
US10635583B2 (en) | Memory management method and storage controller | |
CN110825310B (zh) | 存储器管理方法以及存储控制器 | |
CN110825653B (zh) | 存储器管理方法以及存储控制器 | |
TWI785571B (zh) | 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN113138720B (zh) | 数据存储方法、存储器控制电路单元以及存储器存储装置 | |
US10579306B1 (en) | Memory management method and storage controller | |
CN110162493B (zh) | 存储器管理方法及使用所述方法的储存控制器 | |
CN111610937A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
CN113724773B (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 |