CN106575250B - 使用nand页缓冲器来改善固态驱动器的传递缓冲器利用的方法与*** - Google Patents
使用nand页缓冲器来改善固态驱动器的传递缓冲器利用的方法与*** Download PDFInfo
- Publication number
- CN106575250B CN106575250B CN201580045823.9A CN201580045823A CN106575250B CN 106575250 B CN106575250 B CN 106575250B CN 201580045823 A CN201580045823 A CN 201580045823A CN 106575250 B CN106575250 B CN 106575250B
- Authority
- CN
- China
- Prior art keywords
- page data
- lower page
- nand
- transfer buffer
- controller
- 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
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/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/1072—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 in multilevel memories
-
- 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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- 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/52—Protection of memory contents; Detection of errors in memory 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/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/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
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- 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/1016—Performance improvement
-
- 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
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile 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/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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]
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5642—Multilevel memory with buffers, latches, registers at input or output
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5643—Multilevel memory comprising cache storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5648—Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
-
- 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
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
从主机接收的页数据(例如,上页数据)被存储在固态驱动器的控制器的传递缓冲器中。从非易失性存储器(例如,NAND存储器)读另一页数据(例如,下页数据),以作为错误被校正的页数据存储在所述传递缓冲器中。所述错误被校正的页数据和所述页数据被写到所述非易失性存储器。在另外的实施例中,控制器将从所述主机接收的页数据(例如,上页数据)加载在一个或更多NAND页缓冲器中。所述控制器从NAND存储器读另一页数据(例如,下页数据)以作为错误被校正的页数据存储在传递缓冲器中。被存储在所述传递缓冲器中的所述错误被校正的页数据被加载到所述一个或更多NAND页缓冲器。
Description
背景技术
固态驱动器(SSD)是一种使用集成电路组装件作为持久存储数据的存储器的数据存储装置。SSD不具有移动的机械组件且这区分了SSD与传统电机械磁盘,诸如,硬盘驱动器(HDD)或软盘,它们含有旋转盘以及可移动的读/写头。与电机械盘相比较,SSD通常更加抗物理冲击、运行静默、具有更低的访问时间、以及更少的等待时间。
许多类型的SSD使用基于NAND的闪速存储器,基于NAND的闪速存储器保留数据不需要功率且其是非易失性存储装置技术类型。NAND闪速存储器发展的重要目标已经是要减少每比特成本并提高最大芯片容量,使得闪速存储器可以与磁存储装置如硬盘进行竞争。
在单级单元(SLC)NAND中,每个单元可存在于两个状态之一中,且每单元存储一个比特的信息。多级单元(MLC)NAND是使用相同数量的晶体管的,每单元使用多个级以允许更多比特被存储的固态闪速存储器。一些MLC NAND每单元具有四个可能状态,所以它们每单元可以存储两个比特的信息。TLC NAND(三级单元NAND)是多级固态NAND类型,其闪速媒体的每单元存储三个比特的信息。在某些情形中,相比较于每单元存储一个或两个比特的信息的NAND闪速存储器,制造带有TLC NAND的更高存储容量SSD可以是合乎期望的。
附图说明
现在参考图,在其中相似的引用编号表示各处对应的部分:
图1示出依照某些实施例的、在其中主机写数据到SSD的计算环境的框图;
图2示出依照某些实施例示出如何将下页数据以及然后将上页数据写到SSD的另一框图;
图3示出一流程图,其示出依照某些实施例的用于写数据到SSD的第一示例操作;
图4示出依照某些实施例示出用来实现图3中所示的第一示例操作的传递缓冲器(transfer buffer)的大小要求的框图;
图5示出一流程图,其示出依照某些实施例的用于写数据到SSD的第二示例操作;
图6示出依照某些实施例示出用来实现图5中所示的第二示例操作的传递缓冲器的大小要求的框图;
图7示出一流程图,其示出依照某些实施例的用于写数据到SSD的第三示例操作;
图8示出一流程图,其示出依照某些实施例的用于写数据到SSD的第四示例操作;以及
图9示出依照某些实施例的计算装置的框图。
具体实施方式
在以下描述中,对形成其一部分且示出若干实施例的附图进行参考。被理解的是,其它实施例可被利用且结构和操作上的改变可被做出。
错放(misplacement)错误是MLC NAND的主要难题。该问题对于TLC NAND尤其更加严重。在TLC NAND中,每单元被编程三个比特的数据。被存储的第一比特被称作为下页数据。被存储的第二比特被称作为上页数据,且被存储的第三比特被称作为附加页(extrapage)数据。因此,在编程了附加页数据之后,TLC可具有8个状态。下页数据、上页数据、以及附加页数据各自可被称作为页数据。
在TLC NAND中,写数据可通过首先写下页数据(通过将下页数据编程到TLC NAND中),且然后写上页数据(通过将上页数据编程到TLC NAND中)来进行。然而,对于写上页数据,在上页数据被编程到TLC NAND中以前必须读已写的下页数据。
在TLC NAND中,在对已写的下页数据进行读时,可存在读错误。由于TLC NAND(或对该状况来说其它的NAND)不具有内部机制用于错误校验和校正(ECC),在读下页数据中的任何错误可导致在将上页数据编程到TLC NAND中时的错放错误。
由于TLC NAND不具有内部机制用于错误校验和校正,某些实施例提供了用于在写上页数据之前,使用固态驱动器的控制器的传递缓冲器来执行已写到TLC NAND的和从TLCNAND被读的下页数据的错误校验和校正的机制,以减少错放错误。由于传递缓冲器是由易失性存储器(诸如静态随机存取存储器(SRAM))类型组成的,故传递缓冲器的存储空间相比较于TLC NAND的存储空间相对地非常小。传递缓冲器可由不同于SRAM的某一其它类型的易失性存储器组成,只要该易失性存储器非常快,并且因此相对昂贵。另外,带有大存储空间的传递缓冲器是难以实现的,因为构造用于带有大存储空间的传递缓冲器的用于防止电力故障(该故障可造成传递缓冲器中的数据丢失)的后备电力机制是昂贵的。因此,传递缓冲器的大小应当相对地小,且另外的实施例通过使用一个或更多NAND页缓冲器来存储上页数据,而下页数据被存储在传递缓冲器中,提供了用于减少固态驱动器的控制器的传递缓冲器的大小的机制。
图1示出依照某些实施例的,在其中主机102写数据到SSD 104的计算环境100的框图。SSD 104可由控制器106和NAND复合体108组成,其中在某些实施例中,NAND复合体108可以是TLC NAND。在其它实施例中,SSD 104可由对某些其它类型的非易失性存储器(诸如NOR存储器或某一其它适合的非易失性存储器)进行控制的控制器组成。可注意到,某些实施例可实现在由非易失性存储器(包含NAND存储器、NOR存储器、或任何其它适合的非易失性存储器)构成的SSD中。在某些实施例中,SSD 104可能够存储若干兆兆字节的数据或更多,且在SSD 104中可发现多个TLC NAND 108,其各存储有若干千兆字节的数据或更多。
在某些实施例中,控制器106可经由专用集成电路(ASIC)来实现。控制器106可具有传递缓冲器110和ECC引擎112。传递缓冲器110可以是SRAM,且ECC引擎112可在电路或固件中被实现。虽然TLC NAND在存储空间上可具有千兆字节的量级,但传递缓冲器110在存储空间上可具有千字节或兆字节的量级。
TLC NAND 108可由多个NAND页缓冲器114和NAND存储器116组成。NAND页缓冲器114在数量上可以是4个左右(或更多),且在存储空间上可具有千字节的量级。例如,在某些实施例中,每个NAND页缓冲器具有64千字节的存储空间。
在某些实施例中,主机102可由任何适合的计算装置,诸如个人计算机、大型机、电话装置、智能电话、存储控制器、刀片计算机、带有存储器的处理器等来组成。在某些实施例中,主机102可通过总线(诸如***组件互连(PCI))、串行高级技术附件(SATA)、串行连接的小型计算机***接口(SAS))或网络,诸如互联网、存储区网络(SAN)、局域网(LAN)等来与SSD 104进行通信。
在某些实施例中,主机102将数据的下和上页发送到SSD 104以用于写到SSD 104的TLC NAND 108。页(下和/或上)被SSD 104的控制器106存储在传递缓冲器110中,且控制器106向主机102传达页已被写到SSD。因而,由主机102进行的写数据到SSD 104是不同步的。由于传递缓冲器经由SRAM来实现,页在几个微秒中被写到传递缓冲器110。然而,写到NAND存储器116花费毫秒量级上的时间,而且是在通知了主机102数据已被写到SSD 104之后的稍后时间时由控制器106来从传递缓冲器110进行执行。通过首先将页存储在快速传递缓冲器110中以及然后将页传递到相对较慢的NAND存储器116来改善SSD 104的性能。
图2示出依照某些实施例的、示出如何将下页数据202以及然后将上页数据204从主机102写到SSD 104的另一框图200。首先,主机102发送下页数据202到SSD 104,且然后在时间间隔210之后发送上页数据204。在某些实施例中,下和上页数据中的每个可以是64千字节,且大约100到1000字节的另外空间可被需要用于错误校正信息。
因此,图2示出了某些实施例,在其中为了写数据到SSD 104,主机102首先发送下页数据202以及然后在时间间隔210之后发送上页数据204。
图3示出一流程图300,其示出依照某些实施例的用于写数据到SSD 104的第一示例操作。图3中所示的操作可由实现在SSD 104中的控制器106来执行。
控制开始于框302,在其中控制器106从主机102将来自主机102的下页数据202接收在控制器106的传递缓冲器110中,且通过对NAND存储器116进行编程来将下页数据202写到NAND存储器116。一旦下页数据202已被写到NAND存储器116,则下页数据可在控制器106的传递缓冲器110中被覆写(overwrite),因为传递缓冲器110中的可用空间量相对小且可用空间需要用来存储由主机102发送的另外页。
在一段时间之后,控制器106从主机102将上页数据204接收(在框304)在控制器106的传递缓冲器110中。除非控制器106从NAND 存储器116读下页数据,上页数据204不能够被编程到NAND存储器116中。因此,控制器106从NAND存储器116读(在框306)下页数据202,并在将下页数据202传过ECC引擎112以在ECC引擎112中检测和校正下页数据202中的任何错误之后,将下页数据202存储在控制器106的传递缓冲器110中。ECC引擎112负责将校正的下页数据202传递到传递缓冲器110。在时间上的该点处,传递缓冲器110既存储了下页数据202也存储了上页数据204。
应当注意到,如果下页数据不具有读错误,则下页数据是正确的。如果下页数据不正确,则下页数据在ECC引擎112中被校正。应当注意到,在该过程期间,下页数据首先传过ECC引擎112,在那里如果存在任何错误,则下页数据得到校正。在那之后,被校正的数据从ECC引擎112被传递到传递缓冲器110。
控制进行到框310,在其中控制器106将被校正的下页数据写到NAND存储器116。控制器106然后通过对NAND存储器116进行编程,将被接收在传递缓冲器110中的上页数据写到(在框312)NAND存储器116。
因此,图3示出了某些实施例,在其中传递缓冲器110被用来存储从NAND存储器116读的用于读错误的校正的下页数据,以便于将上页数据编程到NAND存储器116中。
图4示出依照某些实施例示出用来实现图3中所示的第一示例操作300的传递缓冲器110的大小要求的框图400。
在图4中,能够看到紧接在图3的框306中所示的操作的执行之后(即,在控制器106经由下页数据202的ECC错误校正将下页数据202从NAND存储器116读到传递缓冲器110中之后),下页数据202和上页数据204二者同时被存储在传递缓冲器110中。所以当执行错误校正以减少错放错误的发生率时,在传递缓冲器110中存在对存储空间的更大要求,因为下页数据202和上页数据204二者必须同时被存储在传递缓冲器110中。
图5示出流程图500,其示出依照某些实施例的用于写数据到SSD 104的第二示例操作。图5中所示的操作可由实现在SSD 104中的控制器106来执行。图5中所示的操作减少了传递缓冲器110中所需要的存储空间量(即使在错放错误经由在控制器106中进行的下页数据202的错误校正而被减少时)。
控制开始于框502,在其中控制器106从主机102接收下页数据202,并通过对NAND存储器116进行编程来将下页数据202写到NAND存储器116中。在将下页数据202写到NAND存储器之后,下页数据202在传递缓冲器110中可被其它页覆写。
控制进行到框504,在其中控制器106从主机102将上页数据204接收在控制器106的传递缓冲器110中。控制器106从传递缓冲器110将上页数据204加载(在框506)到一个或更多NAND页缓冲器114。可注意到,到NAND页缓冲器114的上页数据204的加载是非常快的(例如,具有10微秒的量级),因为NAND页缓冲器114是SRAM而不是闪速存储器单元。所需要的用于加载上页数据204的NAND页缓冲器的数量取决于上页数据204的大小和每个NAND页缓冲器的大小。在某些实施例中,每个NAND页缓冲器的大小被设计成在所有程序/读数据穿越NAND页缓冲器时保持(hold)单个页数据。应当注意到,对于在本公开中呈现的实施例,不需要在现有TLC NAND的NAND页缓冲器的大小上做出改变。
控制器106从NAND存储器116读(在框508)下页数据202,且在经由ECC引擎112对下页数据202进行错误检测和校正之后,将下页数据存储在传递缓冲器110中。应当注意到,在数据(例如,上页数据204)被加载到NAND页缓冲器114之一中时,读操作可从NAND存储器116来执行。由于上页数据在此时已经处于所述一个或更多NAND页缓冲器114中,传递缓冲器110中的上页数据204在传递缓冲器110中可被下页数据202或到达的用于存储的其它页所覆写。
由于从NAND存储器116读的下页数据202可能具有错误,控制器106的ECC引擎112确定是否下页数据202是正确的(即,不具有读错误),且如果不正确则对下页数据202进行校正并将下页数据202发送到传递缓冲器110(即,下页数据在ECC引擎112中被校正且然后被校正的下页数据被传递到传递缓冲器110)。
控制进行到框512,在其中控制器106从传递缓冲器110将下页数据202加载到所述一个或更多NAND页缓冲器114中。在框512的操作的执行之后,上页数据204和下页数据202都在所述一个或更多NAND页缓冲器114中。控制器106对上页数据204和下页数据202从NAND页缓冲器114到NAND存储器116中的写进行编程(在框514)。
因此,图5示出某些实施例,在其中相比较于图3中所示的实施例,传递缓冲器110的存储空间要求被减少。虽然在图3中所示的实施例中,传递缓冲器110需要同时存储下页数据202和上页数据204二者,但在图5中所示的实施例中,下页数据202和上页数据204二者不必在同时被存储在传递缓冲器110中。
图6示出依照某些实施例示出用来实现图5中所示的第二示例操作的传递缓冲器110的大小要求的框图600。在图6中,下页数据202和上页数据204的定位被示出在框508中所示的操作的执行的结束处,刚好在下页数据202的错误校正以及下页数据202在传递缓冲器110中的存储之后。可被看到,传递缓冲器110存储下页数据202,而上页数据204被存储在所述一个或更多NAND页缓冲器114中。因此,相比较于图4中所示的实施例,其中下页数据202和上页数据204都被存储在传递缓冲器110中,通过使用NAND页缓冲器114来存储上页数据204,减少了传递缓冲器110的空间要求。
图7示出流程图700,其示出依照某些实施例的用于写数据到SSD 104的第三示例操作。图7中所示的操作可由实现在SSD 104中的控制器106来执行。
控制开始于框702,在其中控制器106从主机102接收下页数据202,并将下页数据写到NAND存储器116(或另一适合的非易失性存储器,诸如NOR存储器)。控制进行到框704,在其中从主机102接收的上页数据204被存储在固态驱动器104的控制器106的传递缓冲器110中。从NAND存储器116读(在框706)下页数据202,以在经由ECC引擎112进行校正之后将其存储在传递缓冲器110中。被校正的下页数据和上页数据被写到(在框712)NAND存储器116。
因此,图7示出了使用控制器106的传递缓冲器110来减少在SSD 104的NAND存储器116中的错放错误的某些实施例。
图8示出流程图800,其示出依照某些实施例的用于写数据到SSD的第四示例操作。图8中所示的操作可由实现在SSD 104中的控制器106来执行。
控制开始于框802,在其中控制器106从主机102接收下页数据202,并将下页数据202写到NAND存储器116(或某一其它适合的非易失性存储器,诸如NOR存储器)。控制进行到框804,在其中控制器106将从主机102接收的上页数据204加载在一个或更多NAND页缓冲器114中。控制器从NAND存储器116读(在框806)下页数据202,以在经由ECC引擎112进行校正之后将其存储在传递缓冲器110中。存储在传递缓冲器110中的被校正的下页数据202被加载(在框810)到所述一个或更多NAND页缓冲器114。控制进行到框812,在其中被校正的下页数据和上页数据从所述一个或更多NAND页缓冲器114被写到NAND存储器116。
因此,图8示出使用控制器106的传递缓冲器110来减少在SSD 104的NAND存储器116中的错放错误,而同时通过在下页数据202被读入传递缓冲器110中以用于错误校正时,将上页数据204存储在NAND页缓冲器114中来减少传递缓冲器110的存储要求的某些实施例。
因此,图1-8示出用于在将从主机接收的上页数据写到NAND存储器中之前,通过执行从NAND存储器读的下页数据的错误校正,来减少在固态驱动器中的错放错误的某些实施例。在某些实施例中,当在固态驱动器的控制器中错误校正正在下页数据上被执行时,通过将上页数据从传递缓冲器移动到一个或更多NAND页缓冲器,传递缓冲器中的存储空间得以保存。
在某些MLC NAND中,在相同的物理单元中存储有两个比特的信息。被存储比特的第一集合被称作为下页数据且被存储比特的第二集合被称作为上页数据。例如,在某些实施例中,4千字节(即,32千比特)的下页数据被存储在32K物理单元中,且随后上页数据被存储在相同的32K物理单元中。
TLC编程是某些类型的MLC编程的超级集合,且在TLC编程中,每单元被编程3个比特的数据。被存储的第一比特被称作为下页数据。被存储的第二比特被称作为上页数据,且被存储的第三比特被称作为附加页数据。因此,在编程了附加页数据之后,TLC可具有8个状态。
图1-8中所描述的实施例可在某些MLC NAND中和在TLC NAND中被实现。虽然图1-8描述了在编程上页时的下页校正,但在TLC NAND中或上或下页可在附加页的编程期间被校正。
因此,在某些实施例中,从主机接收的页数据(例如,上页数据)被存储在固态驱动器的控制器的传递缓冲器中。从NAND存储器读另一页数据(例如,下页数据),以作为错误被校正的页数据存储在传递缓冲器中。错误被校正的页数据(例如,错误被校正的下页数据)和页数据(例如,上页数据)被写到NAND存储器。
在另外的实施例中,控制器将从主机接收的页数据(例如,上页数据)加载在一个或更多NAND页缓冲器中。控制器从NAND存储器读另一页数据(例如,下页数据),以作为错误被校正的页数据存储在传递缓冲器中。被存储在传递缓冲器中的错误被校正的页数据被加载到所述一个或更多NAND页缓冲器。
在某些实施例中,从主机接收的页数据(例如,附加页数据)被存储在固态驱动器的控制器的传递缓冲器中。从NAND存储器读另一页数据(例如,下或上页数据),以作为错误被校正的页数据存储在传递缓冲器中。所述错误被校正的页数据和所述页数据被写到NAND存储器。
在另外的实施例中,控制器将从主机接收的页数据(例如,附加页数据)加载在一个或更多NAND页缓冲器中。控制器从NAND存储器读另一页数据(例如,下或上页数据),以作为错误被校正的页数据存储在传递缓冲器中。被存储在传递缓冲器中的错误被校正的页数据被加载到所述一个或更多NAND页缓冲器。
所描述的操作可被实现为使用标准的编程和/或工程技术来产生软件、固件、硬件、或其的任何组合的计算机程序产品、设备、或方法。所描述的操作可被实现为维持在“计算机可读储存媒体”中的代码,其中处理器可从计算机存储可读媒体来读和执行该代码。计算机可读存储媒体包含至少一个的电子电路、存储材料、无机材料、有机材料、生物材料、外壳、框体、涂层、和硬件。计算机可读存储媒体可包括但不限制于磁存储媒体(例如,硬盘驱动器、软盘、磁带等)、光存储装置(CD-ROM、DVD、光盘等)、易失性和非易失性存储器装置(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪速存储器、固件、可编程逻辑等)、固态装置(SSD)等。实现所描述的操作的代码可进一步在硬件装置(例如,集成电路芯片、可编程门控阵列(PGA)、专用集成电路(ASIC)等)中实现的硬件逻辑中被实现。仍然进一步地,实现所描述的操作的代码可被实现在“传送信号”中,其中传送信号可通过空间或通过传送媒体(诸如光纤、铜导线等)来传播。在其中代码或逻辑被编码的传送信号可进一步包括无线信号、卫星传送、无线电波、红外信号、蓝牙等。嵌入在计算机可读存储媒体上的程序代码可作为传送信号从传送站或计算机被传送到接收站或计算机。计算机可读存储媒体不是单由传送信号来组成的。本领域中的那些技术人员将认识到可对该配置做出许多修改,且制造的物品可包括本领域中已知的适合的信息承载(bearing)媒体。
用于实行某些实施例的方面的操作的计算机程序代码可以以一个或更多编程语言的任何组合来撰写。流程图和框图的框可由计算机程序指令来实现。
图9示出依照某些实施例的对应于控制器106、主机102、或SSD 104的***900的框图。***900可包含在某些实施例中可包含至少处理器904的电路902。***900还可包含存储器906(例如,易失性存储器装置)、以及存储装置908。存储装置908可包含非易失性存储器装置(例如,EEPROM、ROM、PROM、RAM、闪速存储器、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带驱动器等。存储装置908可包括内部存储装置,附属存储装置和/或网络可访问存储装置。***900可包含程序逻辑910,程序逻辑910包含代码912,其可被加载到存储器906中并被处理器904或电路902所执行。在某些实施例中,包含代码912的程序逻辑910可被存储在存储装置908中。在某些其它实施例中,程序逻辑910可在电路902中被实现。因此,尽管图9示出程序逻辑910与其它元件分离,但程序逻辑910可被实现在存储器906中和/或电路902中。
某些实施例可针对用于由人或自动处理集成计算机可读代码将计算指令部署到计算***中的方法,其中代码与计算***相组合能够被实现以执行所描述的实施例的操作。
术语“一实施例”、“实施例(embodiment)”、“实施例(embodiments)”、“该实施例”、“所述实施例”、“一个或更多实施例”、“一些实施例”、以及“一个实施例”意味着“一个或更多(但不是所有)实施例”,除非以其它方式明确规定。
术语“包含(including)”、“包括(comprising)”、“具有(having)”以及其的变型意味着“包含但不限制于”,除非以其它方式明确规定。
项目的被列举列表(listing)并不暗指所述项目中的任何或所有项目是互相排斥的,除非以其它方式明确规定。
术语“一(a或an)”以及“所述(the)”意味着“一个或更多”,除非以其它方式明确规定。
与彼此相通信的装置不需要与彼此持续地通信,除非以其它方式明确规定。另外,与彼此相通信的装置可直接地或通过一个或更多媒介间接地进行通信。
对带有与彼此相通信的若干组件的一实施例的描述并不暗指所有此类组件是被要求的。相反,各种的可选组件被描述以示出广大各种的可能实施例。
进一步地,尽管可以以一种相继的顺序来描述过程步骤、方法步骤、算法等,但此类过程、方法和算法可配置成以交替的顺序来工作。换言之,可被描述的步骤的任何序列或顺序并不必要地指示要求所述步骤以那个顺序来执行。本文中所描述的过程的步骤可以实际的任何顺序来执行。进一步地,一些步骤可同时被执行。
在单个装置或物品在本文中被描述时,将容易显而易见的是,可使用多于一个的装置/物品(无论它们是否进行协作)来替代单个装置/物品。类似地,在多于一个的装置或物品在本文中被描述之处(无论它们是否进行协作),将容易显而易见的是,可使用单个装置/物品来替代所述多于一个的装置或物品,或可使用不同数量的装置/物品而不是装置或程序的被示出的数量。装置的功能和/或特征可备选地由没有明确地被描述为具有此类功能/特征的一个或更多其它装置来实施。因而,其它实施例不需要包含装置本身。
可在图中已被示出的至少某些操作示出了以某个顺序发生的某些事件。在备选的实施例中,某些操作可以以不同的顺序被执行、被修改、或移除。此外,步骤可被添加到以上所描述的逻辑,并仍然符合所描述的实施例。进一步地,本文中描述的操作可相继发生或某些操作可并行地被处理。还进一步地,操作可由单个处理单位或由分布的处理单位来执行。
各种实施例的前面描述已被呈现用于说明和描述的目的。其不旨在是无遗漏的或被限制于所公开的精确形式。依据以上的教导,许多修改和变型是可能的。
示例
以下示例属于进一步实施例。
示例1是一种方法,在其中从主机接收的页数据被存储在固态驱动器的控制器的传递缓冲器中。从非易失性存储器读另一页数据,以作为错误被校正的页数据存储在所述传递缓冲器中。所述错误被校正的页数据和所述页数据被写到所述非易失性存储器。
在示例2中,示例1的所述主题可包含,所述非易失性存储器是NAND存储器,其中所述页数据是上页数据,其中所述另一页数据是下页数据,且其中所述传递缓冲器具有足够的存储容量来同时容纳所述下页数据和所述上页数据二者。
在示例3中,示例2的所述主题可包含,所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据。所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器,且需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
在示例4中,示例2的所述主题可包含,所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述固态驱动器的所述控制器来将所述数据写到所述固态驱动器,其中所述固态驱动器由以下组成:所述控制器,包括所述传递缓冲器以及用于至少校正所述下页数据的错误校验和校正(ECC)引擎;以及三级单元(TLC)NAND,包括所述NAND存储器。
在示例5中,示例2的所述主题可包含,所述控制器中的所述下页数据的所述错误校正是经由在所述控制器中执行的错误校验和校正(ECC)引擎来执行的,以减少所述固态驱动器中的错放错误,其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据后接所述上页数据写到所述NAND存储器而被减少。
在示例6中,示例1的所述主题可包含,所述页数据是附加页数据,其中所述另一页数据是下页数据或上页数据。
示例7是另一种方法,在其中控制器将从主机接收的页数据加载在固态驱动器的一个或更多NAND页缓冲器中。所述控制器从NAND存储器读另一页数据,以作为错误被校正的页数据存储在传递缓冲器中。被存储在所述传递缓冲器中的所述错误被校正的页数据被加载到所述一个或更多NAND页缓冲器。
在示例8中,示例7的所述主题可包含,所述页数据是上页数据,其中所述另一页数据是下页数据。所述错误被校正的下页数据和所述上页数据从所述一个或更多NAND页缓冲器被写到所述NAND存储器中。
在示例9中,示例8的所述主题可包含,所述传递缓冲器的存储容量要求被减少,因为所述传递缓冲器不必在同时容纳所述下页数据和所述上页数据二者。所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据,且所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器。需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
在示例10中,示例8的所述主题可包含,所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述固态驱动器的所述控制器来将所述数据写到所述固态驱动器。所述固态驱动器由以下组成:所述控制器,包括所述传递缓冲器以及用于至少校正所述下页数据的错误校验和校正(ECC)引擎;以及三级单元(TLC)NAND,包括所述NAND存储器和所述一个或更多NAND页缓冲器。
在示例11中,示例8的所述主题可包含,所述控制器中的所述下页数据的所述错误校正是经由在所述控制器中执行的错误校验和校正(ECC)引擎来执行的,其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据和所述上页数据写到所述NAND存储器而被减少。
在示例12中,示例7的所述主题可包含,所述页数据是附加页数据,且其中所述另一页数据是下页数据或上页数据。
示例13是一种设备,其包括:非易失性存储器,以及包括传递缓冲器与错误校验和校正(ECC)引擎的控制器,其中所述控制器控制所述非易失性存储器。所述控制器可操作用来将从主机接收的页数据存储在所述传递缓冲器中、从所述非易失性存储器读另一页数据以作为错误被校正的页数据存储在所述传递缓冲器中、以及将所述错误被校正的页数据和所述页数据写到所述非易失性存储器。
在示例14中,示例13的所述主题可包含,所述非易失性存储器是NAND存储器,其中所述页数据是上页数据,其中所述另一页数据是下页数据,且其中所述传递缓冲器具有足够的存储容量来同时容纳所述下页数据和所述上页数据二者。
在示例15中,示例14的所述主题可包含,所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据。所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器。需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
在示例16中,示例14的所述主题可包含,所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述设备的所述控制器来将所述数据写到所述设备,其中所述NAND存储器对应于三级单元(TLC)NAND。
在示例17中,示例14的所述主题可包含,所述控制器中的所述下页数据的所述错误校正是经由在所述控制器中执行的错误校验和校正(ECC)引擎来执行的,以减少所述设备中的错放错误,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器来读和错误校正所述下页数据、以及随后将所述错误被校正的下页数据后接上页数据写到所述NAND存储器而被减少。
在示例18中,示例13的所述主题可包含,所述页数据是附加页数据,且其中所述另一页数据是下页数据或上页数据。
示例19是一种设备,其包括:NAND复合体,包括一个或更多NAND页缓冲器和NAND存储器;控制器,包括传递缓冲器以及错误校验和校正(ECC)引擎,其中所述控制器控制所述NAND复合体。所述控制器可操作用来将从主机接收的页数据加载在一个或更多NAND页缓冲器中、从所述NAND存储器读另一页数据以作为错误被校正的页数据存储在传递缓冲器中、以及将所述错误被校正的页数据加载到所述一个或更多NAND页缓冲器。
在示例20中,示例19的所述主题可包含,所述页数据是上页数据,且其中所述另一页数据是下页数据,且其中所述控制器进一步可操作用来将所述错误被校正的下页数据和所述上页数据从所述一个或更多NAND页缓冲器写到所述NAND存储器中。
在示例21中,示例20的所述主题可包含,所述传递缓冲器的存储容量要求被减少,因为所述传递缓冲器不必在同时容纳所述下页数据和所述上页数据二者。所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据,且所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器。需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
在示例22中,示例20的所述主题可包含,所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述设备的所述控制器来将所述数据写到所述设备,且其中所述NAND复合体是三级单元(TLC)NAND。
在示例23中,示例20的所述主题可包含,所述控制器中的所述下页数据的所述错误校正是经由在所述控制器中执行的错误校验和校正(ECC)引擎来执行的,其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据和所述上页数据写到所述NAND存储器而被减少。
在示例24中,示例19的所述主题可包含,页数据是附加页数据,其中所述另一页数据是下页数据或上页数据。
在示例25中,示例19的所述主题可包含,所述设备进一步包括NAND装置,所述NAND装置包括:多个NAND页缓冲器,以及由包含所述NAND存储器的多个NAND存储器元件组成的NAND阵列,其中所述NAND装置配置成将到来的页数据存储到所述多个NAND页缓冲器中的NAND页缓冲器,以及然后允许对所述NAND阵列进行读操作,以及然后允许将所读数据进一步传递到所述控制器,而不破坏被存储在所述NAND页缓冲器中的所述到来的页数据。
Claims (29)
1.一种用于固态驱动器的方法,包括:
将下页数据从固态驱动器的控制器的传递缓冲器写到固态驱动器中的非易失性存储器;
在将所述下页数据写到所述非易失性存储器之后,将从主机接收的上页数据存储在所述传递缓冲器中;
在将所述上页数据存储在所述传递缓冲器中之后,从所述非易失性存储器中读所述下页数据以作为错误被校正的下页数据存储在所述传递缓冲器中,其中除了已经存储在所述传递缓冲器中的所述上页数据之外,还将所述错误被校正的下页数据存储在所述传递缓冲器中;
将所述错误被校正的下页数据从存储了所述错误被校正的下页数据和所述上页数据的所述传递缓冲器写到所述非易失性存储器;以及
在将所述错误被校正的下页数据从存储了所述错误被校正的下页数据和所述上页数据的所述传递缓冲器写到所述非易失性存储器之后,将存储在所述传递缓冲器中的所述上页数据写到所述非易失性存储器。
2.如权利要求1所述的方法,其中所述非易失性存储器是NAND存储器,其中所述传递缓冲器具有足够的存储容量来同时容纳所述下页数据和所述上页数据二者。
3.如权利要求2所述的方法,其中:
所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据;
所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器;以及
需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
4.如权利要求2所述的方法,其中所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述固态驱动器的所述控制器来将包括所述上页数据和所述下页数据的数据写到所述固态驱动器,且其中所述固态驱动器由以下组成:
所述控制器,包括所述传递缓冲器以及用于至少校正所述下页数据的错误校验和校正(ECC)引擎;以及
三级单元(TLC)NAND,包括所述NAND存储器。
5.如权利要求2所述的方法,其中所述控制器中的所述下页数据的错误校正是经由在所述控制器中的错误校验和校正(ECC)引擎来执行的,以减少所述固态驱动器中的错放错误,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据后接上页数据写到所述NAND存储器而被减少。
6.一种用于固态驱动器的方法,包括:
由控制器从主机接收下页数据,并将所述下页数据写入固态驱动器的NAND存储器中;
在将所述下页数据写入所述NAND存储器之后,由所述控制器将从所述主机接收的上页数据从所述控制器的传递缓冲器加载在所述固态驱动器的一个或更多NAND页缓冲器中;
在将所述上页数据加载在所述一个或更多NAND页缓冲器之后,从所述NAND存储器读所述下页数据,以作为错误被校正的下页数据存储在所述控制器的所述传递缓冲器中,其中存储所述错误被校正的下页数据的所述传递缓冲器不再具有所述上页数据;以及
在将错误被校正的下页数据存储在所述传递缓冲器中之后,将所述错误被校正的下页数据加载到所述一个或更多NAND页缓冲器;以及
在将所述错误被校正的下页数据加载到所述一个或更多NAND页缓冲器之后,对所述上页数据和所述错误被校正的下页数据从所述一个或更多NAND页缓冲器到所述NAND存储器中的写进行编程。
7.如权利要求6所述的方法,其中所述传递缓冲器的存储容量要求被减少,因为所述传递缓冲器不必在同时来容纳所述下页数据和所述上页数据二者,且其中:
所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据;
所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器;以及
需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
8.如权利要求6所述的方法,其中所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述固态驱动器的所述控制器来将包括所述上页数据和所述下页数据的数据写到所述固态驱动器,且其中所述固态驱动器由以下组成:
所述控制器,包括所述传递缓冲器以及用于至少校正所述下页数据的错误校验和校正(ECC)引擎;以及
三级单元(TLC)NAND,包括所述NAND存储器和所述一个或更多NAND页缓冲器。
9.如权利要求6所述的方法,其中所述控制器中的所述下页数据的错误校正是经由在所述控制器中的错误校验和校正(ECC)引擎来执行的,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据和所述上页数据写到所述NAND存储器而被减少。
10.一种用于存储的设备,包括:
非易失性存储器;以及
控制器,包括传递缓冲器以及错误校验和校正(ECC)引擎,其中所述控制器控制所述非易失性存储器,且其中所述控制器可操作用来:
将下页数据从传递缓冲器写到所述非易失性存储器;
在将所述下页数据写到所述非易失性存储器之后,将从主机接收的上页数据存储在所述传递缓冲器中;
在将所述上页数据存储在所述传递缓冲器中之后,从所述非易失性存储器读所述下页数据以作为错误被校正的下页数据存储在所述传递缓冲器中,其中除了已经存储在所述传递缓冲器中的所述上页数据之外,所述错误被校正的下页数据也存储在所述传递缓冲器中;
将所述错误被校正的下页数据从存储了所述错误被校正的下页数据和所述上页数据的所述传递缓冲器写到所述非易失性存储器;以及
在将所述错误被校正的下页数据从存储了所述错误被校正的下页数据和所述上页数据的所述传递缓冲器写到所述非易失性存储器之后,将存储在所述传递缓冲器中的所述上页数据写到所述非易失性存储器。
11.如权利要求10所述的设备,其中所述非易失性存储器是NAND存储器,且其中所述传递缓冲器具有足够的存储容量来同时容纳所述下页数据和所述上页数据二者。
12.如权利要求11所述的设备,且其中:
所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据;
所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器;以及
需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
13.如权利要求11所述的设备,其中所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述设备的所述控制器来将包括所述上页数据和所述下页数据的数据写到所述设备,且其中所述非易失性存储器对应于三级单元(TLC)NAND。
14.如权利要求11所述的设备,其中所述控制器中的所述下页数据的所述错误校正是经由所述ECC引擎来执行的,以减少所述设备中的错放错误,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器来读和校正所述下页数据、以及随后将所述错误被校正的下页数据后接上页数据写到所述NAND存储器而被减少。
15.一种用于存储的设备,包括:
NAND复合体,包括一个或更多NAND页缓冲器和NAND存储器;以及
控制器,包括传递缓冲器以及错误校验和校正(ECC)引擎,其中所述控制器控制所述NAND复合体,且其中所述控制器可操作用来:
从主机接收下页数据,并将所述下页数据写入所述NAND存储器;
在将所述下页数据写入所述NAND存储器之后,将从所述主机接收的上页数据从所述控制器的传递缓冲器加载在所述NAND复合体的一个或更多NAND页缓冲器中;
在将所述上页数据加载在所述一个或更多NAND页缓冲器之后,从所述NAND存储器中读所述下页数据以作为错误被校正的下页数据存储在所述控制器的所述传递缓冲器中,其中存储所述错误被校正的下页数据的所述传递缓冲器不再具有所述上页数据;以及
在将所述错误被校正的下页数据存储在所述传递缓冲器中之后,将所述错误被校正的下页数据加载到所述一个或更多NAND页缓冲器;以及
在将所述错误被校正的下页数据加载到所述一个或更多NAND页缓冲器之后,对所述上页数据和所述错误被校正的下页数据从所述一个或更多NAND页缓冲器到所述NAND存储器中的写进行编程。
16.如权利要求15所述的设备,其中所述传递缓冲器的存储容量要求被减少,因为所述传递缓冲器不必在同时来容纳所述下页数据和所述上页数据二者,且其中:
所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据;
所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器;以及
需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
17.如权利要求15所述的设备,其中所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述设备的所述控制器来将包括所述上页数据和所述下页数据的数据写到所述设备,且其中所述NAND复合体是三级单元(TLC)NAND。
18.如权利要求15所述的设备,其中所述控制器中的所述下页数据的所述错误校正是经由所述ECC引擎来执行的,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据和所述上页数据写到所述NAND存储器而被减少。
19.一种计算机可读媒体,其上已存储指令,所述指令在被执行时使得处理器执行根据权利要求1-5的任一项的方法。
20.一种计算机可读媒体,其上已存储指令,所述指令在被执行时使得处理器执行根据权利要求6-9的任一项的方法。
21.一种用于固态驱动器的装置,包括:
用于将下页数据从固态驱动器的控制器的传递缓冲器写到固态驱动器中的非易失性存储器的部件;
用于在将所述下页数据写到所述非易失性存储器后,将从主机接收的上页数据存储在所述传递缓冲器中的部件;
用于在将所述上页数据存储在所述传递缓冲器中之后,从所述非易失性存储器中读所述下页数据以作为错误被校正的下页数据存储在所述传递缓冲器中的部件,其中除了已经存储在所述传递缓冲器中的所述上页数据之外,还将所述错误被校正的下页数据存储在所述传递缓冲器中;
用于将所述错误被校正的下页数据从存储了所述错误被校正的下页数据和所述上页数据的所述传递缓冲器写到所述非易失性存储器的部件;以及
用于在将所述错误被校正的下页数据从存储了所述错误被校正的下页数据和所述上页数据的所述传递缓冲器写到所述非易失性存储器之后,将存储在所述传递缓冲器中的所述上页数据写到所述非易失性存储器的部件。
22.如权利要求21所述的装置,其中所述非易失性存储器是NAND存储器,其中所述传递缓冲器具有足够的存储容量来同时容纳所述下页数据和所述上页数据二者。
23.如权利要求22所述的装置,其中:
所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据;
所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器;以及
需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
24.如权利要求22所述的装置,其中所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述固态驱动器的所述控制器来将包括所述上页数据和所述下页数据的数据写到所述固态驱动器,且其中所述固态驱动器由以下组成:
所述控制器,包括所述传递缓冲器以及用于至少校正所述下页数据的错误校验和校正(ECC)引擎;以及
三级单元(TLC)NAND,包括所述NAND存储器。
25.如权利要求22所述的装置,其中所述控制器中的所述下页数据的错误校正是经由在所述控制器中的错误校验和校正(ECC)引擎来执行的,以减少所述固态驱动器中的错放错误,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据后接上页数据写到所述NAND存储器而被减少。
26.一种用于固态驱动器的装置,包括:
用于由控制器从主机接收下页数据,并将所述下页数据写入固态驱动器的NAND存储器中的部件;
用于在将所述下页数据写入所述NAND存储器之后,由所述控制器将从所述主机接收的上页数据从所述控制器的传递缓冲器加载在所述固态驱动器的一个或更多NAND页缓冲器中的部件;
用于在将所述上页数据加载在所述一个或更多NAND页缓冲器之后,从所述NAND存储器读所述下页数据,以作为错误被校正的下页数据存储在所述控制器的所述传递缓冲器中的部件,其中存储所述错误被校正的下页数据的所述传递缓冲器不再具有所述上页数据;以及
用于在将错误被校正的下页数据存储在所述传递缓冲器中之后,将所述错误被校正的下页数据加载到所述一个或更多NAND页缓冲器的部件;以及
用于在将所述错误被校正的下页数据加载到所述一个或更多NAND页缓冲器之后,对所述上页数据和所述错误被校正的下页数据从所述一个或更多NAND页缓冲器到所述NAND存储器中的写进行编程的部件。
27.如权利要求26所述的装置,其中所述传递缓冲器的存储容量要求被减少,因为所述传递缓冲器不必在同时来容纳所述下页数据和所述上页数据二者,且其中:
所述控制器在从所述主机接收所述下页数据之后从所述主机接收所述上页数据;
所接收的下页数据在从所述主机接收所述上页数据之前被写到所述NAND存储器;以及
需要对被写到所述NAND存储器的所述下页数据进行读,以将所述上页数据写到所述NAND存储器。
28.如权利要求26所述的装置,其中所述主机通过首先传送所述下页数据以及然后传送所述上页数据到所述固态驱动器的所述控制器来将包括所述上页数据和所述下页数据的数据写到所述固态驱动器,且其中所述固态驱动器由以下组成:
所述控制器,包括所述传递缓冲器以及用于至少校正所述下页数据的错误校验和校正(ECC)引擎;以及
三级单元(TLC)NAND,包括所述NAND存储器和所述一个或更多NAND页缓冲器。
29.如权利要求26所述的装置,其中所述控制器中的所述下页数据的错误校正是经由在所述控制器中的错误校验和校正(ECC)引擎来执行的,且其中由所述下页数据的读错误所引起的错放错误通过由所述控制器对所述下页数据进行的所述读和所述错误校正、以及随后将所述错误被校正的下页数据和所述上页数据写到所述NAND存储器而被减少。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/499,010 US9529668B2 (en) | 2014-09-26 | 2014-09-26 | Method and system for using NAND page buffers to improve the transfer buffer utilization of a solid state drive |
US14/499010 | 2014-09-26 | ||
PCT/US2015/047029 WO2016048562A1 (en) | 2014-09-26 | 2015-08-26 | Method and system for using nand page buffers to improve the transfer buffer utilization of a solid state drive |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106575250A CN106575250A (zh) | 2017-04-19 |
CN106575250B true CN106575250B (zh) | 2021-06-08 |
Family
ID=55581772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580045823.9A Active CN106575250B (zh) | 2014-09-26 | 2015-08-26 | 使用nand页缓冲器来改善固态驱动器的传递缓冲器利用的方法与*** |
Country Status (6)
Country | Link |
---|---|
US (1) | US9529668B2 (zh) |
KR (1) | KR102282879B1 (zh) |
CN (1) | CN106575250B (zh) |
DE (1) | DE112015003569B4 (zh) |
TW (1) | TWI603191B (zh) |
WO (1) | WO2016048562A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521121B2 (en) | 2016-12-29 | 2019-12-31 | Intel Corporation | Apparatus, system and method for throttling a rate at which commands are accepted in a storage device |
US9811269B1 (en) * | 2016-12-30 | 2017-11-07 | Intel Corporation | Achieving consistent read times in multi-level non-volatile memory |
KR20190135746A (ko) | 2018-05-29 | 2019-12-09 | 삼성전자주식회사 | 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US11061762B2 (en) * | 2019-02-04 | 2021-07-13 | Intel Corporation | Memory programming techniques |
KR20230010765A (ko) * | 2020-08-26 | 2023-01-19 | 양쯔 메모리 테크놀로지스 씨오., 엘티디. | Nand 플래시 메모리 장치에서의 비파괴 모드 캐시 프로그래밍 |
US11704061B2 (en) * | 2021-03-16 | 2023-07-18 | Kioxia Corporation | Page buffer enhancements |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1435758A (zh) * | 2002-01-29 | 2003-08-13 | 松下电器产业株式会社 | 存储装置、数据处理方法以及数据处理程序 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7057939B2 (en) * | 2004-04-23 | 2006-06-06 | Sandisk Corporation | Non-volatile memory and control with improved partial page program capability |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8307241B2 (en) * | 2009-06-16 | 2012-11-06 | Sandisk Technologies Inc. | Data recovery in multi-level cell nonvolatile memory |
JP5592478B2 (ja) * | 2010-03-26 | 2014-09-17 | パナソニック株式会社 | 不揮発性記憶装置及びメモリコントローラ |
CN103262054B (zh) * | 2010-12-13 | 2015-11-25 | 桑迪士克科技股份有限公司 | 用于自动提交存储器的装置、***和方法 |
KR20130084492A (ko) * | 2012-01-17 | 2013-07-25 | 삼성전자주식회사 | 비휘발성 메모리 시스템 |
JP5929485B2 (ja) | 2012-05-08 | 2016-06-08 | ソニー株式会社 | 制御装置、記憶装置、データ書込方法 |
US9460018B2 (en) * | 2012-05-09 | 2016-10-04 | Qualcomm Incorporated | Method and apparatus for tracking extra data permissions in an instruction cache |
US9135106B2 (en) * | 2012-05-22 | 2015-09-15 | Hgst Technologies Santa Ana, Inc. | Read level adjustment using soft information |
US8914696B2 (en) * | 2012-08-29 | 2014-12-16 | Seagate Technology Llc | Flash memory read scrub and channel tracking |
JP2014052978A (ja) * | 2012-09-10 | 2014-03-20 | Toshiba Corp | 不揮発性半導体メモリの制御方法及びメモリシステム |
KR102025263B1 (ko) | 2012-10-05 | 2019-09-25 | 삼성전자주식회사 | 메모리 시스템 및 그것의 읽기 교정 방법 |
US9135112B2 (en) | 2012-12-11 | 2015-09-15 | Seagate Technology Llc | Policy for read operations addressing on-the-fly decoding failure in non-volatile memory |
US8819337B1 (en) * | 2014-04-16 | 2014-08-26 | Sandisk Technologies Inc. | Storage module and method for determining whether to back-up a previously-written lower page of data before writing an upper page of data |
-
2014
- 2014-09-26 US US14/499,010 patent/US9529668B2/en active Active
-
2015
- 2015-08-25 TW TW104127725A patent/TWI603191B/zh active
- 2015-08-26 WO PCT/US2015/047029 patent/WO2016048562A1/en active Application Filing
- 2015-08-26 DE DE112015003569.9T patent/DE112015003569B4/de active Active
- 2015-08-26 CN CN201580045823.9A patent/CN106575250B/zh active Active
- 2015-08-26 KR KR1020177004512A patent/KR102282879B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1435758A (zh) * | 2002-01-29 | 2003-08-13 | 松下电器产业株式会社 | 存储装置、数据处理方法以及数据处理程序 |
Also Published As
Publication number | Publication date |
---|---|
CN106575250A (zh) | 2017-04-19 |
US9529668B2 (en) | 2016-12-27 |
WO2016048562A1 (en) | 2016-03-31 |
TW201626225A (zh) | 2016-07-16 |
TWI603191B (zh) | 2017-10-21 |
US20160092299A1 (en) | 2016-03-31 |
DE112015003569B4 (de) | 2024-04-25 |
KR20170035983A (ko) | 2017-03-31 |
DE112015003569T5 (de) | 2017-06-14 |
KR102282879B1 (ko) | 2021-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575250B (zh) | 使用nand页缓冲器来改善固态驱动器的传递缓冲器利用的方法与*** | |
US10303571B2 (en) | Data recovery in memory devices | |
CN101800071A (zh) | 固态盘设备及其编程失败处理方法 | |
US10599515B2 (en) | Transfer of encoded data stored in non-volatile memory for decoding by a controller of a memory device | |
US10445252B2 (en) | Storage device and operating method performed by the same | |
CN103984506B (zh) | 闪存存储设备数据写的方法和*** | |
CN114761931A (zh) | 有限ram***中的逻辑到物理转译技术 | |
US20130166991A1 (en) | Non-Volatile Semiconductor Memory Device Using Mats with Error Detection and Correction and Methods of Managing the Same | |
US11269708B2 (en) | Real-time trigger to dump an error log | |
CN103713969A (zh) | 提高固态硬盘可靠性方法和装置 | |
US11829232B2 (en) | Real-time trigger to dump an error log | |
CN109426446A (zh) | 存储器***及其操作方法 | |
KR20210028264A (ko) | 호스트 상주 변환 레이어 유효성 검사 | |
US11106530B2 (en) | Parity protection | |
CN112673356B (zh) | 快速非易失性存储装置恢复技术 | |
US11126379B2 (en) | Memory system | |
CN112086121B (zh) | 存储器近接干扰管理 | |
CN108572920B (zh) | 避免读取扰动的数据搬移方法以及使用该方法的装置 | |
US11334431B2 (en) | System and method for data protection in solid-state drives | |
US20240160566A1 (en) | Independent flash translation layer tables for memory | |
CN107632902B (zh) | 用于程序化失败时回复数据的方法、控制器及存储*** | |
CN106648449A (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 |