CN109582493A - 用于减少非易失性存储器系统中的静默数据错误的方法和装置 - Google Patents
用于减少非易失性存储器系统中的静默数据错误的方法和装置 Download PDFInfo
- Publication number
- CN109582493A CN109582493A CN201810997735.4A CN201810997735A CN109582493A CN 109582493 A CN109582493 A CN 109582493A CN 201810997735 A CN201810997735 A CN 201810997735A CN 109582493 A CN109582493 A CN 109582493A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory cell
- read
- 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.)
- Pending
Links
Classifications
-
- 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
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- 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
Abstract
在一个实施例中,一种装置包括存储器阵列,该存储器阵列包括多个相变存储器(PCM)单元;以及控制器,其用于确定独立于来自主机设备的读取命令读取由多个PCM单元存储的数据;并且响应于确定独立于来自主机设备的读取命令读取由多个PCM单元存储的数据,对多个PCM单元执行虚拟读取操作,并对多个PCM单元执行附加读取操作。
Description
技术领域
本公开内容总体上涉及计算机开发领域,并且更具体地,涉及用于存储器的读取操作。
背景技术
存储设备可以包括非易失性存储器,例如多栈三维(3D)交叉点存储器单元。在读取操作期间施加到存储器单元的分界电压(VDM)可以允许基于存储器单元的阈值电压来确定存储器单元的状态(例如,存储器单元存储逻辑0值还是1值)。
附图说明
图1示出了根据某些实施例的计算机系统的组件的框图。
图2示出了根据某些实施例的存储器分区。
图3示出了根据某些实施例的存储器阵列。
图4示出了描绘根据某些实施例的存储器单元阈值电压分布和分界电压的图。
图5示出了根据某些实施例的用于发出设备发起的读取命令的存储设备控制器118。
图6示出了根据某些实施例的用于利用虚拟读取操作执行设备发起的读取命令的示例流程。
在各种附图中,相似的附图标记和名称表明相似元件。
具体实施方式
尽管附图描绘了特定的计算机系统,但是各种实施例的概念可适用于任意合适的计算机系统。可以使用本公开内容的教导的系统的示例包括桌上型计算机系统、服务器计算机系统、存储系统、手持设备、平板电脑、其它薄笔记本、片上系统(SOC)设备以及嵌入式应用。手持设备的一些示例包括蜂窝电话、数码相机、媒体播放器、个人数字助理(PDA)以及手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、SOC、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机、或者可以执行以下教导的功能和操作的任意其它系统。本公开内容的各种实施例可以用于任意合适的计算环境,诸如个人计算设备、服务器、大型机、云计算服务提供商基础设施、数据中心、通信服务提供商基础设施(例如,演进分组核中的一个或多个部分)或包括一个或多个计算设备的其它环境。
图1示出了根据某些实施例的计算机系统100的组件的框图。系统100包括耦合到外部输入/输出(I/O)控制器104的中央处理单元(CPU)102、存储设备106以及系统存储器设备107。在操作期间,可以在存储设备106或系统存储器设备107与CPU 102之间传输数据。在各种实施例中,涉及存储设备106或系统存储器设备107的特定存储器存取操作(例如,读取和写入操作)可以由操作系统和/或由处理器108执行的其它软件应用发出。在各种实施例中,存储设备106可以包括存储设备控制器118和一个或多个存储器芯片116,每个存储器芯片116包括任意合适数量的存储器分区122。
在各种实施例中,存储器分区可包括3D交叉点存储器阵列。在一些实施例中,3D交叉点存储器阵列可以包括无晶体管(即,至少关于存储器的数据存储元件)可堆叠交叉点架构,在该无晶体管可堆叠交叉点架构中存储器单元位于布置在网格中的行地址线和列地址线的交叉点处。
在读取操作期间,有时称为分界电压(VDM)的差分偏压可以施加在存储器单元的端子上,并且存储器单元的状态可以基于存储器单元对施加的偏压的反应来感测。例如,存储器单元可以进入导通ON状态(逻辑1)或保持弱导通OFF状态(逻辑0)。存储器单元从被感测为逻辑1转变为被感测为逻辑0的施加电压可以被称为存储器单元的阈值电压。因此,作为示例,当VDM高于存储器单元的阈值电压时,存储器单元可以被感测为存储逻辑1,并且当VDM低于存储器单元的阈值电压时,存储器单元可以被感知为存储逻辑0。
在各种情况下,诸如3D交叉点存储器阵列之类的非易失性存储器的存储器单元的阈值电压可以自上次存取存储器单元(例如,经由读取或写入操作)根据时间向上漂移。阈值电压的漂移可能导致指示错误读取位的发生率的原始位错误率(RBER)的增加。例如,当单元的阈值电压漂移到VDM以上时,单元可能被错误地读取为逻辑0而非逻辑1。在各种实施例中,当存储设备106的错误校正逻辑(例如,错误校正码(ECC)引擎)检测到错误时,错误校正逻辑可以尝试校正错误。如果错误的数量超过错误校正逻辑的校正容量,则错误校正逻辑可能无法准确地校正数据(例如,通过反转正确读取的位和/或未能校正错误读取的位)。如果错误校正的读取数据然后被写回到存储器单元中(例如,作为数据刷新操作的部分),则错误可能永久地被写入数据中。这种错误可以称为静默数据损坏(SDC)错误。
本公开内容的各种实施例通过利用响应于读取命令而执行虚拟读取操作以将单元的阈值电压漂移重置回其适当的电平(例如,回到被写入之后单元所具有的阈值电压)的能力,来减少或消除在由存储设备106发起的读取命令(例如,为了刷新数据而发起的读取命令)的执行期间发生的SDC错误。各种实施例可以响应于由存储设备106发起的读取命令来执行虚拟读取操作,丢弃读取的数据,并然后执行附加的读取操作。因为通过虚拟读取操作校正了阈值电压漂移,所以第二读取操作引起数据具有低得多的RBER(通常在错误校正逻辑的错误校正能力内),允许避免静默数据损坏错误。
因此,本公开内容的各种实施例可以利用由ECC引擎错误校正码字引起的静默数据损坏错误的概率性质。在任意两次连续读取中两次错误校正的概率低到可以忽略不计。当ECC引擎的校正能力相对于由阈值电压漂移引起的错误量有限时,本文描述的各种实施例可以特别有用,并且可以允许具有芯片面积和功耗减小的更简单的ECC引擎。
CPU 102包括处理器108,例如微处理器、嵌入式处理器、DSP、网络处理器、手持处理器、应用处理器、协处理器、SOC或用于执行代码(即软件指令)的其它设备。在描绘的实施例中,处理器108包括两个处理元件(在描绘的实施例中为核114A和114B),其可包括不对称处理元件或对称处理元件。然而,处理器100可以包括任意数量的可以是对称或非对称的处理元件。CPU 102在本文中可称为主机计算设备(尽管主机计算设备可以是可操作用于向存储设备106发出存储器存取命令的任意合适的计算设备)。
在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持诸如执行状态或架构状态之类的处理器的状态的任意其它元件。换言之,在一个实施例中,处理元件指的是能够独立地与诸如软件线程、操作系统、应用或其它代码之类的代码相关联的任意硬件。物理处理器(或处理器插槽)典型地指的是集成电路,该集成电路可能包括任意数量的诸如核或硬件线程之类的其它处理元件。
核114(例如,114A或114B)可以指的是位于能够维持独立架构状态的集成电路上的逻辑,其中,每个独立维持的架构状态与至少一些专用的执行资源相关联。硬件线程可以指的是位于能够维持独立架构状态的集成电路上的任意逻辑,其中,独立维持的架构状态共享对执行资源的存取。如可见的,当某些资源被共享并且其它资源专用于架构状态时,硬件线程与核的命名法之间的界线重叠。而经常,核和硬件线程由操作系统视为单独的逻辑处理器,在该逻辑处理器中操作系统能够单独地调度每个逻辑处理器上的操作。
在各种实施例中,处理元件还可以包括一个或多个算术逻辑单元(ALU)、浮点单元(FPU)、高速缓存、指令流水线、中断处理硬件、寄存器或其它硬件,以便于处理元件的操作。
I/O控制器110是集成的I/O控制器,其包括用于在CPU 102与I/O设备之间传送数据的逻辑,该逻辑可以指的是能够将数据传送到电子系统(例如,CPU 102)和/或从电子系统接收数据的任意合适的逻辑。例如,I/O设备可以包括音频/视频(A/V)设备控制器,例如图形加速器或音频控制器;数据存储设备控制器,例如闪存设备、磁存储盘或光存储盘控制器;无线收发器;网络处理器;网络接口控制器;或用于另一输入设备的控制器,例如监视器、打印机、鼠标、键盘或扫描仪;或其它合适的设备。在特定实施例中,I/O设备可以包括通过I/O控制器110耦合到CPU 102的存储设备106的存储设备控制器118。
I/O设备可以使用任意合适的信令协议与CPU 102的I/O控制器110通信,该信令协议例如为外围组件互连(PCI)、快速PCI(PCIe)、通用串行总线(USB)、串行附接SCSI(SAS)、串行ATA(SATA)、光纤通道(FC)、IEEE 802.3、IEEE 802.11或其它当前或未来的信令协议。在特定实施例中,I/O控制器110和底层I/O设备可以根据逻辑设备接口规范来传送数据和命令,诸如快速非易失性存储器(NVMe)(例如,如由www.nvmexpress.org/specifications/处可用的规范中的一个或多个所描述的)或高级主机控制器接口(AHCI)(例如,如一个或多个AHCI规范所描述的,例如串行ATA AHCI:规范,修订版1.3.1,见http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-rev1-3-1.html)。在各种实施例中,耦合到I/O控制器的I/O设备可以位于芯片外(即,与CPU 102不在相同的芯片上),或者可以集成在与CPU 102相同的芯片上。
CPU存储器控制器112是集成存储器控制器,其包括用于控制去到和来自一个或多个系统存储器设备107的数据流的逻辑。CPU存储器控制器112可以包括可操作用于从系统存储器设备107读取、写入系统存储器设备107或从系统存储器设备107请求其它操作的逻辑。在各种实施例中,CPU存储器控制器112可以从核114和/或I/O控制器110接收写入请求,并且可以将这些请求中指定的数据提供给系统存储器设备107以用于在其中存储。CPU存储器控制器112还可以从系统存储器设备107读取数据并将读取的数据提供给I/O控制器110或核114。在操作期间,CPU存储器控制器112可以发出包括系统存储器设备107的一个或多个地址的命令,以便从存储器读取数据或向存储器写入数据(或执行其它操作)。在一些实施例中,CPU存储器控制器112可以在与CPU 102相同的芯片上实现,而在其它实施例中,CPU存储器控制器112可以在与CPU 102不同的芯片上实现。I/O控制器110可以执行关于一个或多个存储设备106类似的操作。
CPU 102还可以通过外部I/O控制器104耦合到一个或多个其它I/O设备。在特定实施例中,外部I/O控制器104可以将存储设备106耦合到CPU 102。外部I/O控制器104可以包括用于管理一个或多个CPU 102与I/O设备之间的数据流的逻辑。在特定实施例中,外部I/O控制器104与CPU 102一起位于主板上。外部I/O控制器104可以使用点对点或其它接口与CPU 102的组件交换信息。
系统存储器设备107可以存储任意合适的数据,例如由处理器108用来提供计算机系统100的功能的数据。例如,与被执行的程序相关联的数据或由核114存取的文件可以存储在系统存储器设备107中。因此,系统存储器设备107可以包括系统存储器,其存储由核114执行或以其它方式使用的数据和/或指令序列。在各种实施例中,系统存储器设备107可以存储即使在移除系统存储器设备107的电源之后也维持数据状态的持久数据(例如,用户的文件或指令序列)。系统存储器设备107可以专用于特定CPU 102或者与计算机系统100的其它设备(例如,一个或多个其它处理器或其它设备)共享。
在各种实施例中,系统存储器设备107可以包括存储器,其包括任意数量的存储器分区、存储器设备控制器以及其它支持逻辑(未示出)。存储器模块可以包括非易失性存储器和/或易失性存储器。
非易失性存储器是不需要电源来维持由介质存储的数据状态的存储介质。在各种实施例中,非易失性存储器可以是字节或块可寻址的。非易失性存储器的非限制性示例可以包括以下中的任意一个或组合:固态存储器(例如平面或三维(3D)NAND闪存或NOR闪存)、3D交叉点存储器、相变存储器(例如,存储单元中的使用硫属化物玻璃相变材料的存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)、奥氏存储器、反铁电存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、忆阻器、单级或多级相变存储器(PCM)、自旋霍尔效应磁性RAM(SHE-MRAM)以及自旋矩传输磁性RAM(STTRAM)、电阻式存储器、并入忆阻器技术的磁阻随机存取存储器(MRAM)存储器、包括金属氧化物基极、氧空位基极的电阻式存储器以及导电桥随机存取存储器(CB-RAM)、基于自旋电子磁结存储器的设备、基于磁隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道传输)的设备、基于晶闸管(thiristor)的存储器设备、或以上中的任意项的组合、或其它存储器。
易失性存储器是需要电源来维持由介质存储的数据状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器模块中使用的一个特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在一些实施例中,作为易失性存储器的存储器107的任意部分可以符合JEDEC标准,包括但不限于双倍数据速率(DDR)标准(例如DDR3、4和5)、或低功率DDR4(LPDDR4)以及新兴标准。
存储设备106可以存储任意合适的数据,例如由处理器108用来提供计算机系统100的功能的数据。例如,与执行的程序相关联的数据或由核114A和114B存取的文件可以存储在存储设备106中。在各种实施例中,存储设备106可以存储即使在移除存储设备106的电源之后也维持数据状态的持久数据(例如,用户的文件或软件应用代码)。存储设备106可以专用于CPU 102或与计算机系统100的其它设备(例如,另一CPU或其它设备)共享。
在描绘的实施例中,存储设备106包括存储设备控制器118和四个存储器芯片116,每个存储器芯片116包括可操作用于存储数据的四个存储器分区122,然而,存储设备可包括任意合适数量的存储器芯片,每个存储器芯片具有任意合适数量的存储器分区。存储器分区122包括可操作用于存储数据的多个存储器单元。存储器分区122的单元可以以任意合适的方式布置,例如以行(例如,字线)和列(例如,位线)、三维结构、扇区或其它方式布置。在各种实施例中,可以将单元逻辑地分组为存储体、块、子块、字线、页、帧、字节、切片或其它合适的组。在各种实施例中,存储器分区122可包括上面列出的易失性或非易失性存储器或其它合适的存储器中的任意项。在特定实施例中,每个存储器分区122包括一个或多个3D交叉点存储器阵列。结合以下附图将更详细地描述3D交叉点阵列。
在各种实施例中,存储设备106可以包括固态驱动器;存储器卡;通用串行总线(USB)驱动器;非易失性双列直插式存储器模块(NVDIMM);集成在诸如智能电话、相机或媒体播放器之类的设备中的存储装置;或其它合适的大容量存储设备。
在特定实施例中,一个或多个存储器芯片116体现在半导体封装中。在各种实施例中,半导体封装可包括壳体,壳体包括一个或多个半导体芯片(也称为管芯)。封装还可以包括用于连接到外部电路的接触引脚或引线。在各种实施例中,存储器芯片可包括一个或多个存储器分区122。
因此,在一些实施例中,存储设备106可以包括封装,封装包括多个芯片,每个芯片包括一个或多个存储器分区122。然而,存储设备106可以包括一个或多个存储器分区的任意合适的物理布置和任意合适的物理布置中的相关联逻辑。例如,存储器分区122可以体现在一个或多个不同的物理介质中,例如电路板、半导体封装、半导体芯片、磁盘驱动器、其它介质或其任意组合。
存储设备106可以包括用于使用任意合适的通信协议与CPU存储器控制器112或I/O控制器110通信的任意合适的接口,该通信协议例如为基于DDR的协议、PCI、PCIe、USB、SAS、SATA、FC、系统管理总线(SMBus)或其它合适的协议。存储设备106还可以包括用于根据任意合适的逻辑设备接口规范来与CPU存储器控制器112或I/O控制器110通信的通信接口,所述合适的逻辑设备接口规范诸如NVMe、AHCI或其它合适规范。在特定实施例中,存储设备106可以包括多个通信接口,每个通信接口使用单独协议与CPU存储器控制器112和/或I/O控制器110进行通信。
存储设备控制器118可以包括如下逻辑,所述逻辑用于从CPU 102接收请求(例如,经由CPU存储器控制器112或I/O控制器110),使得关于存储器芯片116执行请求,并向CPU102提供与请求相关联的数据(例如,经由CPU存储器控制器112或I/O控制器110)。控制器118还可以可操作用于经由错误校正码(ECC引擎)检测和/或校正在存储器操作期间遇到的错误。在实施例中,控制器118还例如经由耗损均衡引擎跟踪特定单元(或单元的逻辑分组)已被写入的次数,以便执行损耗均衡,检测何时单元接近估计的单元可能可靠地被写入的次数,和/或基于单元已被写入的次数来调整读取操作。在执行耗损均衡时,存储设备控制器118可以在存储器芯片116的单元当中均匀地散开写入操作,以试图均衡由每个单元执行的操作(例如,写入操作)的数量。在各种实施例中,控制器118还可以监视存储设备106的各种特性,例如温度或电压,并向CPU 102报告相关联的统计数据。存储设备控制器118可以在与存储器芯片116相同的电路板或设备上实现,或者在不同的电路板或设备上实现。例如,在一些环境中,存储设备控制器118可以是集中式存储控制器,其管理用于计算机系统100的多个不同存储设备106的存储器操作。
在各种实施例中,存储设备106还包括程序控制逻辑124,其可操作用于控制在向存储器芯片116写入数据或从存储器芯片116读取数据时执行的编程序列。在各种实施例中,程序控制逻辑124可以提供在对数据的编程和/或读取(或执行与读取或编程操作相关联的其它操作)期间施加到存储器单元的各种电压(或指示应该提供哪些电压的信息),执行错误校正,并执行其它合适的功能。
在各种实施例中,程序控制逻辑124可以集成在与存储设备控制器118相同的芯片上或者集成在不同的芯片上。在描绘的实施例中,程序控制逻辑124被示为存储设备控制器118的部分,但是在各种实施例中,程序控制逻辑124的全部或部分可以与存储设备控制器118分离并且通信地耦合到存储设备控制器118。例如,本文中描述的程序控制逻辑124的全部或部分可以位于存储器芯片116上。在各种实施例中,本文对“控制器”的引用可以指代任意合适的控制逻辑,例如存储设备控制器118、芯片控制器126或分区控制器。在一些实施例中,对控制器的引用可以考虑分布在多个组件上的逻辑,例如存储设备控制器118、芯片控制器126和/或分区控制器的逻辑。
在各种实施例中,存储设备控制器118可以从主机设备(例如,CPU 102)接收命令,确定针对命令的目标存储器芯片,并将命令传送到目标存储器芯片的芯片控制器126。在一些实施例中,存储设备控制器118可以在将命令发送到芯片控制器126之前修改命令。
在各种实施例中,存储设备控制器118可以向存储器芯片116发送命令以执行主机发起的读取操作以及设备发起的读取操作。可以响应于从耦合到存储设备106的主机(例如CPU 102)接收到读取命令来执行主机发起的读取操作。设备发起的读取操作可以是如下的读取操作,其响应于由存储设备106生成的设备发起的读取命令,独立于从主机接收读取命令而执行。在各种实施例中,存储设备控制器118可以是生成设备发起的读取命令的组件。存储设备106可以出于任意合适的原因发起设备发起的读取命令。例如,在存储设备通电时,存储设备106可以发起多个读取和写回命令以重新初始化存储设备106的数据(例如,以解决在存储设备106或其部分被断电或长时间闲置时已发生的任意漂移)。
芯片控制器126可以从存储设备控制器118接收命令并确定针对命令的目标存储器分区122。然后,芯片控制器126可以将命令发送到确定的存储器分区122的控制器。在各种实施例中,芯片控制器126可以在将命令发送到分区122的控制器之前修改命令。
在一些实施例中,系统100的元件中的全部或一些驻留在(或耦合到)相同的电路板(例如,主板)上。在各种实施例中,可存在元件之间的任意合适的分区。例如,CPU 102中描绘的元件可以位于单个管芯(即,芯片上)或封装上,或者CPU 102的元件中的任意元件可以位于芯片外或封装外。类似地,存储设备106中描绘的元件可以位于单个芯片上或多个芯片上。在各种实施例中,存储设备106和计算主机(例如,CPU 102)可以位于相同的电路板上或相同的设备上,并且在其它实施例中,存储设备106和计算主机可以位于不同的电路板或设备上。
系统100的组件可以以任意合适的方式耦合在一起。例如,总线可以将组件中的任意组件耦合在一起。总线可以包括任意已知的互连,例如多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议架构、差分总线以及Gunning收发器逻辑(GTL)总线。在各种实施例中,集成的I/O子系统包括系统100的各种组件之间的点对点多路复用逻辑,组件例如为核114、一个或多个CPU存储器控制器112、I/O控制器110、集成的I/O设备、直接存储器存取(DMA)逻辑(未示出)等。在各种实施例中,计算机系统100的组件可以通过包括任意数量的中间网络节点的一个或多个网络耦合在一起,中间网络节点例如为路由器、交换机或其它计算设备。例如,计算主机(例如,CPU 102)和存储设备106可以通过网络通信地耦合。
尽管未描绘,但系统100可使用电池和/或电源插座连接器以及相关联的系统来接收电力,使用显示器来输出由CPU 102提供的数据,或使用网络接口允许CPU 102通过网络进行通信。在各种实施例中,电池、电源插座连接器、显示器和/或网络接口可通信地耦合到CPU 102。可以使用其它电源,例如可再生能源(例如,太阳能或基于运动的电力)。
图2示出了根据某些实施例的示例存储器分区122。在一个实施例中,存储器分区122可以包括3D交叉点存储器,其可以包括相变存储器或其它合适的存储器类型。在特定实施例中,相变存储器可以将硫属化物材料用于存储器元件。存储器元件是实际存储信息的存储器单元的单元。在操作中,相变存储器可以通过改变存储器元件在非晶相与晶相之间的相位来存储关于存储器元件的信息。存储器元件的材料(例如,硫属化物材料)可以呈现晶相或非晶相,表现出低导电率或高导电率。通常,非晶相具有低导电率(高阻抗)并且与重置状态(逻辑0)相关联,并且晶相具有高导电率(低阻抗)并且与设置状态(逻辑1)相关联。存储器元件可以包括在存储器单元207(例如,相变存储器单元)中,该存储器单元207还包括选择器,即耦合到存储器元件的选择设备。选择设备被配置为便于将多个存储器元件组合成阵列。
在一些实施例中,3D交叉点存储器阵列206可以包括无晶体管(即,至少关于存储器的数据存储元件)可堆叠交叉点架构,在该无晶体管可堆叠交叉点架构中存储器单元207位于布置在网格中的行地址线和列地址线的交叉处。分别称为字线(WL)和位线(BL)的行地址线215和列地址线217在网格的形成中交叉,并且每个存储器单元207耦合在WL与BL之间,在WL和BL交叉(即交叉点)处。在交叉点处,WL和BL可以位于不同的垂直平面处,使得WL越过BL但是在物理上不接触BL。如上所述,该架构可以是可堆叠的,使得字线可以越过位于字线下方的位线和位于字线上方的另一位线。应当注意,行和列是用于提供交叉点存储器中WL和BL的布置的定性描述的便利性术语。在各种实施例中,3D交叉点存储器阵列的单元可以是可单独寻址的。在一些实施例中,位存储可以基于3D交叉点存储器单元的体电阻的变化。在各种实施例中,3D交叉点存储器可以包括由英特尔公司和/或MICRON TECHNOLOGY公司制造的3D XPoint存储器的特性中的任意特性。
在编程操作(即,写入操作)期间,可以通过向WL施加第一偏置电压和向BL施加第二偏置电压来改变存储器元件的相位,使得产生可以使电流在存储器元件中流动的跨存储器单元的差分偏置电压。差分偏置电压可以跨存储器单元维持第一时间段,该第一时间段足以使存储器元件“快速恢复”,并且然后维持第二时间段以将存储器元件从非晶态转变为晶态或从晶态到非晶态(例如,经由施加由电流产生的热量)。快速恢复是复合存储器元件的属性,其导致电导率的突然变化以及跨存储器元件的电压中的相关联的突然变化。
在读取操作中,经由向WL施加第一偏置电压和向在目标存储器单元处交叉一段时间间隔的BL施加第二偏置电压来选择目标存储器单元。所得到的跨存储器元件的差分偏置电压(分界读取电压(VDM))被配置为大于存储器元件的最大设置电压并且小于存储器元件的最小重置电压。在特定实施例中,单元处的WL(V(WL))的电压可以下降并且单元处的BL的电压(即,V(BL))可以上拉,使得V(BL)-V(WL)等于3D交叉点单元上的总偏压(即VDM)。
响应于VDM的施加,取决于存储器元件是处于晶态(置位)还是非晶态(重置),目标存储器元件可以或可以不快速恢复。耦合到存储器元件的感测电路被配置为在感测时间间隔中检测是否存在快速恢复。然后可以将存在快速恢复解释为逻辑1,并且将不存在快速恢复解释为逻辑0。
存储器单元从被感测为逻辑1(例如,由于存储器单元快速恢复)转变为被感测为逻辑0(例如,由于存储器单元没有快速恢复)的差分偏压可以被称为阈值电压(有时称为快速恢复电压)。因此,当VDM高于存储器单元的阈值电压时,存储器单元可被感测为存储逻辑1,并且当VDM低于存储器单元的阈值电压时,存储器单元可被感测为存储逻辑0。
在一些实施例中,诸如读取脉冲的VDM之类的施加的偏压可以足够高以仅打开处于晶态的3D交叉点单元,其可以具有比处于非晶态的3D交叉点单元更低的阈值电压。在一些实施例中,可以通过负调节节点和/或正调节节点来提供VDM。例如,3D交叉点单元的位线电极可以是正调节节点,并且耦合到单元的字线电极可以提供针对VDM的偏置。
在图2的实施例中,存储器分区122包括存储器分区控制器210、字线控制逻辑214、位线控制逻辑216以及存储器阵列206。主机设备(例如,CPU 102)可以向存储器分区122提供包括存储器地址和/或相关联数据的读取和/或写入命令(例如,经由存储设备控制器118和芯片控制器126),并且可以从存储器分区122接收读取数据(例如,经由芯片控制器126和存储设备控制器118)。类似地,存储设备控制器118可以向存储器分区122提供包括存储器地址的主机发起的读取或写入命令或设备发起的读取或写入命令(例如,经由芯片控制器126)。存储器分区控制器210(结合字线控制逻辑214和位线控制逻辑216)被配置为执行存储器存取操作,例如,读取一个或多个目标存储器单元和/或写入一个或多个目标存储器单元。
存储器阵列206对应于3D交叉点存储器的至少部分(例如,该部分可包括相变存储器单元或其它合适的存储器单元),并且包括多个字线215、多个位线217以及多个存储器单元,例如,存储单元207。每个存储器单元在字线(“WL”)和位线(“BL”)的交叉点处耦合在WL与BL之间。每个存储器单元包括被配置为存储信息的存储器元件,并且可以包括耦合到存储器元件的存储器单元选择设备(即,选择器)。选择设备可以包括奥氏阈值开关、二极管、双极结晶体管、场效应晶体管等。存储器阵列206可以被配置为存储二进制数据并且可以被写入(即,编程)或从中读取。
存储器分区控制器210可以管理与芯片控制器126和/或存储设备控制器118的通信。在特定实施例中,存储器分区控制器210可分析从另一控制器接收到的一个或多个信号以确定经由总线发送的命令是否将由存储器分区122消耗。例如,控制器210可以分析命令的地址和/或使能信号线上的值以确定该命令是否应用于存储器分区122。控制器210可以被配置为识别与接收到的存储器地址相关联的一个或多个目标WL和/或BL(该存储器地址可以是与标识存储器分区122的存储器分区地址分离的地址,但是在一些实施例中,命令的地址字段的部分可以标识存储器分区,而地址字段的另一部分可以标识一个或多个WL和/或BL)。存储器分区控制器210可以被配置为至少部分地基于包括在接收到的命令中的WL和/或BL标识符来管理WL控制逻辑214和BL控制逻辑216的操作。
WL控制逻辑214包括WL开关电路220和感测电路222。WL控制逻辑214被配置为从存储器分区控制器210接收目标WL地址,并选择一个或多个WL以用于读取和/或写入操作。例如,WL控制逻辑214可以被配置为通过将WL选择偏置电压耦合到目标WL来选择目标WL。WL控制逻辑214可以被配置为通过将目标WL从WL选择偏置电压去耦合和/或通过将WL取消选择偏置电压耦合到WL来取消选择WL。WL控制逻辑214可以耦合到包括在存储器阵列206中的多个WL 215。每个WL可以耦合到与多个BL 217对应的多个存储器单元。WL开关电路220可以包括多个开关,每个开关被配置为将相应的WL(例如WL 215A)耦合(或去耦合)到WL选择偏置电压以选择相应的WL 215A。例如,开关电路220可以包括多个晶体管。
BL控制逻辑216包括BL开关电路224。在一些实施例中,BL控制逻辑216还可以包括感测电路,例如感测电路222。BL控制逻辑216被配置为选择一个或多个BL以用于读取和/或写入操作。BL控制逻辑216可以被配置为通过将BL选择偏置电压耦合到目标BL来选择目标BL。BL控制逻辑216可以被配置为通过将目标BL从BL选择偏置电压去耦合和/或通过将BL取消选择偏置电压耦合到BL来取消选择BL。BL开关电路224类似于WL开关电路220,除了BL开关电路224被配置为将BL选择偏置电压耦合到目标BL。
感测电路222被配置为例如在读取操作期间检测一个或多个感测的存储器单元207的状态(例如,经由在感测间隔期间存在或不存在快速恢复事件)。感测电路222被配置为向例如存储器分区控制器210提供与读取操作的结果有关的逻辑电平输出。例如,如果施加的VDM高于存储器单元的阈值电压,则可以输出对应于逻辑1的逻辑电平,或者如果施加的VDM低于存储器单元的阈值电压,则可以输出对应于逻辑0的逻辑电平。在特定实施例中,如果检测到快速恢复则可以输出逻辑1,并且如果未检测到快速恢复则可以输出逻辑0。
作为示例,响应于来自存储器分区控制器210的信号,WL控制逻辑214和BL控制逻辑216可以被配置为通过将WL 215A耦合到WL选择偏置电压和将BL 217A耦合到BL选择偏置电压来选择一个或多个目标存储器单元(例如,存储器单元207)以用于读取操作。然后,感测电路222中的一个或两个可以被配置为监视WL 215A和/或BL 217A的感测间隔,以便确定存储器单元217A的状态(例如,以确定是否发生快速恢复事件)。例如,如果感测电路222检测到快速恢复事件,则存储器单元207A可以处于置位状态,但是如果感测电路222未在感测间隔中检测到快速恢复事件,则存储器单元207A可以处于重置状态。
因此,WL控制逻辑214和/或BL控制逻辑216可以被配置为选择目标存储器单元以用于读取操作,发起读取操作,在感测间隔中感测所选择的存储器单元(例如,针对快速恢复事件),并且将感测的结果提供给例如存储器分区控制器210。
在特定实施例中,感测电路222可包括字线负载,所述字线负载连接到字线电极,以用于将字线电极上的电流转换为作为感测电路的电压比较器(即感测放大器)的第一输入的电压。等效字线负载可以连接到参考电流,以提供作为电压比较器的第二输入的电压。当在阵列中选择特定的字线和位线时,字线电极上的字线负载可以将所选择的位线上的电流转换为电压。在一些实施例中,可以通过分别为所有其它未选择的字线和减少或最小化泄漏的位线选择偏压来减轻电流的泄漏分量。可以通过允许足够的时间使电容分量耗散来减轻电流的电容分量。转换为电压比较器的第一输入的电流可以与目标存储器单元的电流相对应。可以选择参考电流,使得目标存储器单元的电流低于目标存储器单元的快速恢复之前的参考电流并且高于目标存储器单元的快速恢复之后的参考电流。以这种方式,电压比较器的输出可以指示目标存储器单元的状态。锁存器可以耦合到电压比较器的输出以存储读取操作的输出。
图3示出了根据某些实施例的存储器阵列206。在各种实施例中,存储器阵列206的多个存储器单元207可以被划分为诸如切片302之类的逻辑组(并且存储器阵列206可以包括多个切片)。在描绘的实施例中,切片302包括耦合到相同WL 215B的多个存储器单元207,但切片302可包括任意合适的存储器单元布置。
在特定实施例中,切片可包括有效载荷部分304和元数据部分306。有效载荷部分304的存储器单元可以存储由主机(例如,CPU 102)写入存储设备106的数据。例如,主机可以发送写入命令,该写入命令指定要在特定逻辑地址处写入存储设备106的有效载荷数据。写入命令的有效载荷可以存储在一个或多个切片302的有效载荷部分304中(在各种实施例中,有效载荷部分304可以足够大以保持来自主机的多个写入命令的有效载荷数据)。在各种实施例中,切片的有效负载部分的大小可具有任意合适的大小,例如1千位(KiB)、2KiB、4KiB、8KiB或其它合适的大小。
切片302的元数据部分306的存储器单元可以存储与存储在切片302的有效载荷部分304或切片本身中的有效载荷数据相关联的元数据。元数据部分306可以存储与有效载荷数据或切片相关联的任意合适的元数据。例如,元数据部分306可以例如由存储设备控制器118存储在错误检测和错误校正期间使用的奇偶校验位和/或循环冗余校验(CRC)位。在替代实施例中,可以在存储设备106上以任意合适的级别执行错误检测和/或校正,例如通过芯片控制器126或分区控制器210。
图4示出了描绘根据某些实施例的存储器单元阈值电压分布402(即,402A-C)和分界电压VDM1、VDM2以及VDM3的图400。横轴描绘了阵列的存储器单元的阈值电压,而纵轴描绘了位计数(即存储器单元的数量)。因此,分布402的每个点表示具有特定阈值电压的多个单元。曲线图400假设阵列的一半位处于置位状态(即,具有低于对应VDM的阈值电压)并且一半位处于重置状态(即,具有高于对应VDM的阈值电压)。
分布402A表示基线分布,其可以对应于特定时间点(例如,紧接在对存储器单元执行的写入或读取操作之后的时间)的阈值电压分布。分布402B可以表示在经过第一时间量之后而没有经由读取或写入操作来对单元存取的情况下单元的阈值电压的分布。分布402C可以表示在没有对单元存取的情况下经过附加时间之后的分布。随着在没有对单元存取情况下的时间量增加,单元的阈值电压的分布向右移动。
描绘的VDM表示可在读取操作期间施加的一系列VDM值。在读取操作期间,可以施加VDM1并且可以感测单元。如果感测操作不成功(例如,因为检测到太多错误),则可以升高VDM(到VDM2)并且可以重复感测操作。在读取操作期间可以施加任意数量的VDM。在各种实施例中,如果施加最后的VDM(在描绘的实施例中为VDM3)并且感测操作仍然不成功,则可以执行替代的错误校正操作或者可以确定读取操作不成功。
由于漂移引起的阈值电压的移动可能导致读取错误,这是因为当施加VDM中的一个或多个时,处于置位状态的单元(在图的左侧示出)可能被错误地感测为处于重置状态。读取错误的数量可能会随着自上次存取以来经过的时间增加而增加。因此,当将VDM1与分布402C进行比较时,错误的数量极高,但在分布402B处也仍然显著。当单元达到分布402C时,即使最高的VDM3仍然低于存储单元的大部分的阈值电压,因此增加了错误率(以及错误校正率)。
在本公开内容的各种实施例中,当执行设备发起的读取命令时,在附加读取操作之前首先执行虚拟读取操作。只要VDM高于单元的阈值电压,虚拟读取操作就可以重置阈值电压的漂移。例如,在对具有例如分布402B或分布402C的一组单元执行虚拟读取操作之后,单元的分布可以移回到402A。丢弃在虚拟读取操作期间读取的数据,并且执行附加的读取操作以获得目标数据。结合图6更详细地描述设备发起的读取命令的流程。
图5示出了根据某些实施例的用于发出设备发起的读取命令的存储设备控制器118。在描绘的实施例中,控制器118包括地址转换引擎120和程序控制逻辑124。程序控制逻辑124包括ECC引擎502、CRC引擎504、设备发起的读取逻辑506以及主机发起的读取逻辑508。在各种实施例中,可以在设备发起的读取逻辑506与主机发起的读取逻辑508之间共享逻辑,以利用相应组件的功能。
ECC引擎502包括用于检测和校正从存储设备106的各种分区122读取的数据中的错误的逻辑。在各种实施例中,当存储设备控制器118从主机设备(例如,CPU 102)接收要写入存储设备的数据时,ECC引擎502(或存储设备控制器118的其它合适逻辑)可以将奇偶校验位添加到要写入的数据。然后将这些奇偶校验位与数据一起写入分区122的存储器阵列206中(例如,可以将奇偶校验位写入切片302的元数据部分306,同时将数据写入切片302的有效载荷部分304。
在各种实施例中,当从存储器阵列206读取有效载荷数据时,可以将数据和奇偶校验位提供给ECC引擎502。ECC引擎502可以校验奇偶校验位以确定数据中是否存在错误。如果ECC引擎认为数据不可校正(例如,错误的数量高于阈值),则可以重新发出读取命令,可以尝试替代的错误校正方案,可以认为读取不成功,或者可以执行其它合适的动作。如果ECC认为错误是可校正的,则ECC引擎可以尝试校正错误(例如,通过基于奇偶校验位来操纵读取数据)。在某些情况下,ECC引擎可以认为错误是可校正的,但可能会错误地校正读取数据。当随后将这样的数据写回到存储器单元时,可以锁定错误(并且当主机发起对数据的读取时可能随后使CRC校验失败)。
CRC引擎504可以执行任意合适的数据验证操作。在各种实施例中,当主机发送针对有效载荷数据的写入请求时,写入请求可以包括与有效载荷数据一起被写入存储器单元的CRC位。替代地,CRC引擎504可以基于CRC算法从数据生成CRC位,并且这些CRC位可以与数据一起写入。在各种实施例中,当执行主机发起的读取时,读取与有效载荷数据相关联的CRC位并将其与有效载荷数据一起返回到存储设备控制器118。如上所述,可以将有效载荷数据传递到ECC引擎502以进行错误校正,并且然后可以将结果传递给CRC引擎504。CRC引擎可以基于CRC算法处理数据,并确定结果是否同与数据相关联的CRC位匹配。如果结果匹配,则将数据返回给主机。如果结果不匹配,则可以重试读取,可以向主机报告错误,或者可以执行其它合适的动作。在各种实施例中,CRC引擎504不用于设备发起的读取命令(例如,与CRC校验相关联的开销可能禁止这种读取),因此可能未检测到针对这种读取的来自ECC引擎502的错误结果(至少直到主机稍后请求数据并且读取数据未通过CRC校验)。
设备发起的读取逻辑506可以控制设备发起的读取命令的流程。例如,主机发起的读取逻辑508可以确定何时发出一个或多个设备发起的读取命令,并且可以管理多个设备发起的读取命令的序列。可以在任意合适的时间发出设备发起的读取命令。例如,设备发起的读取逻辑506可以监视一个或多个存储器芯片116或其分区(或所有存储器芯片116的聚合的RBER)的RBER,并且如果RBER越过阈值,则设备发起的读取逻辑506可以跨存储设备116(或其部分)发起刷新操作,这可以包括读取存储器单元并将读取值写回到存储器单元。例如,刷新操作可以包括发出读取命令,获得数据,以及发出写入命令以写回所获得的数据。在一些实施例中,可以基于重试阈值来发起刷新操作(例如,当特定百分比的主机发起的读取命令触发重新读取时,可以触发存储设备106的刷新)。在特定实施例中,当驱动器通电时,设备发起的读取逻辑506可以对多个存储器位置进行采样并确定针对采样数据的重读速率。如果重读速率足够高,则设备发起的读取逻辑506可以触发对存储设备106的至少部分的刷新。在各种实施例中,设备发起的读取逻辑506可以周期性地使得在存储设备106上执行刷新操作以确保维持较低的RBER。
在各种实施例中,设备发起的读取逻辑506还可以传送有效载荷数据以及被读取到ECC引擎502以进行错误检测和校正的奇偶校验位。设备发起的读取逻辑506还可以通过向目标存储器芯片发出读取命令并忽略读取数据来实现虚拟读取操作(然后可以针对相同位置发出附加读取命令以获得数据)。在替代的实施例中,设备发起的读取逻辑506可以通过向目标存储器芯片发出读取命令以及将要执行虚拟读取的指示来实现虚拟读取操作并且存储器芯片可以执行虚拟读取和丢弃结果(目标存储器芯片然后可以自发地执行附加的读取,或者设备发起的读取逻辑506可以使得附加的读取命令被发送到目标存储器芯片,并且读取的数据可以被返回到设备发起的读取逻辑506)。
主机发起的读取逻辑508可以确定何时已经接收到一个或多个主机发起的读取命令,并且可以将对应的读取命令发送到目标存储器芯片116。主机发起的读取逻辑508还可以接收返回的读取数据,并将有效载荷数据以及奇偶校验位传送到ECC引擎502,以进行错误检测和校正。主机发起的读取逻辑508还可以将ECC引擎502的输出以及相关联的CRC位传递到CRC引擎504,以确定读取数据的有效性。如果主机发起的读取未通过错误校正或CRC,则主机发起的读取逻辑508还可以重新发出读取命令。
图6示出了根据某些实施例的用于利用虚拟读取操作执行设备发起的读取命令的示例流程。在602处,例如由存储设备控制器118检测读取命令。在604处,确定读取命令是由主机还是存储设备106发起的。响应于确定读取命令是由设备发起的,开始读取操作。
在606处,感测数据。例如,可以将分界电压施加到多个存储器单元,并且可以感测存储器单元的响应以确定存储器单元的阈值电压是高于还是低于分界电压。在608处,确定对读取数据的ECC操作是通过还是失败。例如,可以将感测的数据提供给存储设备控制器118的ECC引擎502。ECC引擎可以例如基于感测的奇偶校验位以及该数据来检测感测的数据中的错误。基于检测到的错误,ECC引擎可以确定其是否可以校正数据。如果ECC引擎确定其不能校正数据,则流程移动到610,在610中确定施加的VDM是否是要施加的最后的VDM。如果确定VDM不是最后的VDM,则在612处可以向上调整VDM,并且可以在606处再次感测数据。
如果确定VDM是要施加的最后的VDM,则在614处可以执行替代数据校正方案,例如基于异或的恢复方案。在各种实施例中,来自任意数量的切片(或其它数据分组)的数据可彼此异或,并且结果可存储在存储器芯片116中(例如,在切片302中)。如果切片的数据被破坏,则存储的异或结果可以与来自剩余切片的数据异或,以恢复被破坏的切片的数据。如果替代数据校正方案成功,则在616处将数据写回到切片。然后通过将VDM调整回其原始值并在流程中返回606以感测数据来执行第二读取操作(任意时候执行附加读取操作,读取操作可以通过重置VDM并感测数据来开始)。在各种实施例中,存储设备控制器118可以向目标存储器分区发出附加读取命令以发起第二读取操作。
在608处,如果确定ECC通过,则在620处确定ECC是否在第一读取操作期间通过(其中读取操作可包括在一个或多个VDM处感测数据)。如果确定这是第一读取操作,则在622处丢弃读取数据(即,因为该读取操作构成虚拟读取操作)。丢弃数据是因为即使ECC通过,ECC引擎502也可能对数据执行错误校正。在各种实施例中,可以不明确地丢弃数据,但是数据可以未使用并且可以允许在后续读取操作期间被覆盖。然后流程返回到606,在606中开始附加读取操作。在各种实施例中,存储设备控制器118可以向目标存储器分区发出附加读取命令以发起第二读取操作。在第二读取操作期间,当在608处ECC通过时,在620处确定这不是第一读取,并且在624处认为读取成功。然后可以以任意合适的目的使用读取数据。例如,作为数据刷新操作的部分,可以将读取数据重写到该读取数据被读取的位置。
在604处,如果确定读取是由主机发起的,则流程移动到626,在626中施加VDM并且感测数据。在628处如果ECC操作未通过,则在630处确定施加的VDM是否是要施加的最终VDM。如果VDM不是最终的VDM,则可以在632处向上调整VDM,并且可以在626处再次感测数据。如果在630处确定VDM是要施加的最后的VDM,则流程可以移动到634,在634中执行基于异或的恢复操作。如果基于异或的恢复操作成功,则在636处将数据写回到感测位置,并且通过将流程返回到626来在638处执行附加的读取操作。在各种实施例中,存储设备控制器118可以向目标存储器分区发出附加读取命令以发起第二读取操作。
如果在628处ECC操作通过,则ECC引擎502的输出可以被传递到CRC引擎504,并且在640处确定CRC是否通过。如果CRC未通过(指示ECC引擎502产生了错误结果),则流程移动至638,在638中执行附加读取操作。在640处如果CRC通过,则在642处认为读取成功,并且可以将读取数据返回到主机。
在各种实施例中,可以修改流程。例如,不是在针对设备发起的读取请求的第一(即,虚拟)读取操作期间通过多个VDM迭代,直到ECC通过,而是可以施加单个VDM(例如,VDM3)或足以重置目标存储器单元上的漂移的其它电压(在有或没有实际感测操作的情况下)。然后可以发起正常读取操作以获得目标数据。
图6中描述的流程仅表示可能在特定实施例中发生的操作。在其它实施例中,可以由系统100的组件执行附加操作。本公开内容的各种实施例考虑了用于实现本文描述的功能的任意合适的信令机制。在适当的情况下,可以重复、组合、修改或删除图6中所示的操作中的一些。另外,在不脱离特定实施例的范围的情况下,可以以任意合适的顺序执行操作。
设计也可以经历从创建到仿真到制造的各种阶段。表示设计的数据可以以多种方式来表示设计。首先,如可用于仿真的,可以使用硬件描述语言(HDL)或另一功能性描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在一些阶段达到表示各种设备在硬件模型中的物理放置的数据等级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以为指示在用于产生集成电路的掩膜的不同掩膜层上各种特征存在或不存在的数据。在一些实施方式中,这样的数据可以以诸如图形数据系统II(GDS II)、开放式艺术品系统交换标准(OASIS)或类似格式之类的数据库文件格式存储。
在一些实施方式中,基于软件的硬件模型、以及HDL和其它功能描述语言对象可以包括寄存器传送语言(RTL)文件以及其它示例。这样的对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型),针对描述的硬件的属性来解析HDL对象,并根据对象确定物理电路和/或片上布局。设计工具的输出可用于制造物理设备。例如,设计工具可以根据HDL对象确定各种硬件和/或固件元件的配置,例如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑以及为了实现HDL对象中建模的系统而实现的其它属性。设计工具可以包括用于确定拓扑以及片上系统(SoC)和其它硬件设备的结构配置的工具。在某些实例中,HDL对象可以用作开发可由制造设备使用来制造描述的硬件的模型和设计文件的基础。实际上,可以提供HDL对象本身作为制造系统软件的输入以产生描述的硬件。
在设计的任意表示中,数据可以存储在任意形式的机器可读介质中。存储器或磁或光存储装置(例如,盘)可以为用于存储信息的机器可读介质,所述信息经由被调制的或另外生成以发送信息的光波或电波而发送。当发送了表明或携带代码或设计的电载波时,执行电信号的复制、缓冲、或重传,制作新的副本。因此,通信提供商或网络提供商可以在有形、机器可读介质上(至少临时地)存储体现本公开内容的实施例的技术的制品,例如被编码成载波的信息。
本文中使用的模块是指硬件、软件、和/或固件的任意组合。例如,模块包括诸如微控制器之类的硬件,其与用于存储适用于由该微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用是指硬件,其具体地被配置为识别和/或执行要在非暂时性介质上保持的代码。此外,在另一实施例中,模块的使用是指包括代码的非暂时性介质,该代码具体地适用于由微控制器执行以执行预先确定的操作。并且如可以推断的,在又一实施例中,术语模块(在本示例中)可以指代微控制器和非暂时性介质的组合。通常,被示出为分离的模块边界一般不同并且可能重叠。例如,第一模块和第二模块可以共享硬件、软件、固件、或其组合,而潜在地保留一些独立硬件、软件、或固件。在一个实施例中,术语逻辑的使用包括硬件(例如,晶体管、寄存器)、或其它硬件(例如,可编程逻辑器件)。
逻辑可以用于实现各种组件的功能中的任意功能,各种组件例如CPU 102、外部I/O控制器104、处理器108、核114A和114B、I/O控制器110、CPU存储器控制器112、存储设备106、系统存储器设备107、存储器芯片116、存储设备控制器118、地址转换引擎120、存储器分区122、程序控制逻辑124、芯片控制器126、存储器阵列206、存储器分区控制器210、字线控制逻辑214、位线控制逻辑216、ECC引擎502、CRC引擎504、设备发起的读取逻辑506、主机发起的读取逻辑508、或本文描述的其它实体或组件、或这些组件中的任意组件的子组件。“逻辑”可以指用于执行一个或多个功能的硬件、固件、软件和/或每个的组合。在各种实施例中,逻辑可包括微处理器或可操作用于执行软件指令的其它处理元件,诸如专用集成电路(ASIC)之类的离散逻辑,诸如现场可编程门阵列(FPGA)之类的编程逻辑器件,包含指令的存储设备,逻辑设备的组合(例如,如将在印刷电路板上找到的),或其它合适的硬件和/或软件。逻辑可以包括一个或多个门或其它电路组件。在一些实施例中,逻辑还可以完全体现为软件。软件可以体现为软件包、代码、指令、指令集和/或记录在非暂时性计算机可读存储介质上的数据。固件可以体现为代码、指令或者指令集和/或存储设备中的硬编码(例如,非易失性)的数据。
在一个实施例中,短语“用于”或“被配置为”的使用是指布置、装配、制造、提供销售、导入和/或设计装置、硬件、逻辑、或元件以执行特定的或确定的任务。在该示例中,不运行的装置或其元件仍然“被配置为”执行特定的任务,如果其被设计、耦合、和/或互连以执行所述特定的任务。如纯示例性示例,逻辑门可以在操作期间提供0或1。但是“被配置为”向时钟提供使能信号的逻辑门并不包括可以提供1或0的每个潜在的逻辑门。相反,该逻辑门为以一些方式耦合的一个逻辑门,在所述一些方式中,在操作期间1或0输出用于使能时钟。再一次注意,术语“被配置为”的使用并不要求操作,但是相反专注于装置、硬件、和/或元件的潜在状态,其中在潜在状态中,装置、硬件和/或元件被设计为当该装置、硬件、和/或元件在运行时执行特定任务。
此外,在一个实施例中,短语“能够/用于”和/或“可操作用于”的使用是指以能够以指定方式使用装置、逻辑、硬件和/或元件的方式设计的一些装置、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中,使用、能够或可操作的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件不运行,但是被设计成能够以指定方式使用装置的方式。
如本文中使用的,值包括数字、状态、逻辑状态、或二进制逻辑状态的任意已知表示。通常,逻辑电平、逻辑值、或逻辑的值的使用还被称为1和0,其仅表示二进制逻辑状态。例如,1指代高逻辑电平,而0指代低逻辑电平。在一个实施例中,存储单元(例如,晶体管或闪存单元)能够保持单个逻辑值或多个逻辑值。然而,还没使用计算机系统中的值的其它表示。例如,十进制数十还可以表示为二进制值1010和十六进制字母A。因此,值包括能够被保持在计算机系统中的信息的任意表示。
另外,可以由值或值的部分来表示状态。例如,第一值(例如,逻辑1)可以表示默认或初始状态,而第二值(例如,逻辑0)可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别是指默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而更新的值潜在地包括低逻辑值,即设置。应当注意值的任意组合可以用于表示任意数量的状态。
可以经由存储在机器可访问、机器可读、计算机可存取、或计算机可读介质上的可由处理元件执行的指令或代码,实现上文阐述的方法、硬件、软件、固件或代码集的实施例。非暂时性机器可访问/可读介质包括提供(即,存储和/或发送)以由机器(例如,计算机、或电子系统)可读形式的信息的任意机构。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储设备;电存储设备;光存储设备;声存储设备;用于保持从暂时性(传播的)信号(例如,载波、红外信号、数字信号)接收到的信息的其它形式的存储设备;等等,其区别于可以从其接收信息的非暂时性介质。
用于对逻辑进行编程以执行本公开内容的实施例的指令可以存储在系统中的存储器(例如,DRAM、高速缓存、闪速存储器或其它存储装置)内。此外,指令可以经由网络或通过其它计算机可读介质来分发。因此,机器可读介质可以包括用于存储或发送以机器(例如,计算机)可读形式的信息的任意机构,但不限于软盘、光盘、光盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息中使用的有形、机器可读存储装置。由此,计算机可读介质包括适用于存储或发送以机器(例如,计算机)可读形式的电子指令或信息的任意类型的有形机器可读介质。
在至少一个实施例中,一种装置包括存储器阵列,该存储器阵列包括多个相变存储器(PCM)单元;以及控制器,其用于确定独立于来自主机设备的读取命令读取由多个PCM单元存储的数据;并且对确定独立于来自主机设备的读取命令而读取由多个PCM单元存储的数据做出响应,对多个PCM单元执行虚拟读取操作,并对多个PCM单元执行附加读取操作。
在实施例中,控制器用于丢弃在虚拟读取操作期间读取的数据。在实施例中,控制器用于在确定数据已通过错误校正操作之后丢弃通过虚拟读取操作读取的数据。在实施例中,控制器用于将通过附加读取操作读取的数据写入多个PCM单元。在实施例中,执行虚拟读取操作包括感测多个PCM单元并对从多个PCM单元感测的数据执行错误校正。在实施例中,控制器用于对响应于从主机设备接收到的读取命令而读取的数据执行错误校正和循环冗余校验;并且对响应于确定读取由多个PCM单元存储的数据而读取的数据执行错误校正但不执行循环冗余校验。在实施例中,控制器用于在虚拟读取操作期间将多个分界电压施加到多个PCM单元。在实施例中,存储器阵列包括三维交叉点存储器阵列。在实施例中,控制器用于响应于检测到装置已通电,确定独立于来自主机设备的读取命令而读取由多个PCM单元存储的数据。在实施例中,控制器用于响应于检测到多个读取操作的原始位错误率已超过阈值,确定独立于来自主机设备的读取命令而读取由多个PCM单元存储的数据。在实施例中,执行虚拟读取操作包括执行基于异或的数据恢复操作。在实施例中,一种装置还包括通信地耦合到处理器的电池,通信地耦合到处理器的显示器,或通信地耦合到处理器的网络接口。
在至少一个实施例中,一种方法包括确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据;并且响应于确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据:对多个存储器单元执行虚拟读取操作;并且对多个存储器单元执行附加读取操作。
在实施例中,方法还包括丢弃在虚拟读取操作期间读取的数据。在实施例中,方法还包括在确定数据已通过错误校正操作之后丢弃通过虚拟读取操作读取的数据。在实施例中,方法还包括将通过附加读取操作读取的数据写入多个存储器单元。在实施例中,方法还包括在执行虚拟读取操作期间,感测多个存储器单元并对从多个存储器单元感测的数据执行错误校正。在实施例中,方法还包括:对响应于从主机设备接收到的读取命令而读取的数据执行错误校正和循环冗余校验;并且对响应于确定读取由多个存储器单元存储的数据而读取的数据执行错误校正但不执行循环冗余校验。在实施例中,方法还包括在虚拟读取操作期间将多个分界电压施加到多个存储器单元。在实施例中,存储器阵列包括三维交叉点存储器阵列。在实施例中,方法还包括:响应于检测到装置已通电,确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据。在实施例中,方法还包括响应于检测到多个读取操作的原始位错误率已越过阈值,确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据。在实施例中,执行虚拟读取操作包括执行基于异或的数据恢复操作。
在至少一个实施例中,一种包括存储其上的指令的非暂时性机器可读存储介质,该指令在由机器执行时使机器确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据;并且响应于确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据,对多个存储器单元执行虚拟读取操作;并且对多个存储器单元执行附加读取操作。
在实施例中,指令在被执行时使机器丢弃在虚拟读取操作期间读取的数据。在实施例中,指令在被执行时使机器将通过附加读取操作读取的数据写入多个存储器单元。在实施例中,执行虚拟读取操作包括感测多个存储器单元并对从多个存储器单元感测的数据执行错误校正。
在至少一个实施例中,一种系统包括用于确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据的模块;用于响应于确定独立于来自主机设备的读取命令而读取由多个存储器单元存储的数据,对多个存储器单元执行虚拟读取操作,并且对多个存储器单元执行附加读取操作的模块。
在实施例中,系统还包括用于丢弃在虚拟读取操作期间读取的数据的模块。在实施例中,系统还包括用于将通过附加读取操作读取的数据写入多个存储器单元的模块。在实施例中,系统还包括用于在执行虚拟操作期间感测多个存储器单元并对从多个存储器单元感测的数据执行错误校正的模块。
在至少一个实施例中,一种系统包括控制器,用于确定独立于来自主机设备的读取命令而读取由多个存储器单元的阵列存储的数据;并且响应于确定独立于来自主机设备的读取命令而读取由多个存储器单元的阵列存储的数据,对多个存储器单元执行虚拟读取操作;并且对多个存储器单元执行附加读取操作。
在实施例中,系统还包括存储器单元的阵列。在实施例中,该系统还包括主机设备的中央处理单元,中央处理单元用于向控制器发送读取命令。在实施例中,系统还包括通信地耦合到中央处理单元的电池,通信地耦合到中央处理单元的显示器,或通信地耦合到中央处理单元的网络接口。
本说明书中通篇提到的“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构、或特性被包括在本公开内容的至少一个实施例中。因此,贯穿于本说明书中各处的短语“在一个实施例中”或“在实施例中”的出现并不一定都指代相同的实施例。此外,在一个或多个实施例中,所述特定的特征、结构或特性可以以任意合适的方式被结合起来。
在前述说明书中,已经参照具体的示例性实施例给出了详细描述。然而,显而易见的是,可以对其进行各种修改和改变而不偏离在所附权利要求中所阐述的本公开内容的较宽泛精神和范围。由此,本说明书和附图被认为是说明性的意义而非限制性的意义。此外,实施例和其它示例性语言的前述使用并不一定指代相同的实施例或相同的示例,而是可以指代不同和独特的实施例,以及潜在地指代相同的实施例。
Claims (25)
1.一种装置,其包括:
包括多个存储器单元的存储器阵列;以及
控制器,其用于:
确定独立于来自主机设备的读取命令来读取由所述多个存储器单元存储的数据;并且
对确定独立于来自主机设备的读取命令来读取由所述多个存储器单元存储的数据做出响应:
对所述多个存储器单元执行虚拟读取操作;并且
对所述多个存储器单元执行附加读取操作。
2.根据权利要求1所述的装置,所述控制器用于丢弃在所述虚拟读取操作期间读取的数据。
3.根据权利要求1-2中任意一项所述的装置,所述控制器用于在确定所述数据已通过错误校正操作之后丢弃通过所述虚拟读取操作读取的数据。
4.根据权利要求1-3中任意一项所述的装置,所述控制器用于将通过所述附加读取操作读取的数据写入所述多个存储器单元。
5.根据权利要求1-4中任意一项所述的装置,其中,执行所述虚拟读取操作包括感测所述多个存储器单元并且对从所述多个存储器单元感测的数据执行错误校正。
6.根据权利要求1-5中任意一项所述的装置,所述控制器用于:
对响应于从所述主机设备接收到的读取命令而读取的数据执行错误校正和循环冗余校验;并且
对响应于确定读取由所述多个存储器单元存储的数据而读取的数据执行错误校正但不执行循环冗余校验。
7.根据权利要求1-6中任意一项所述的装置,所述控制器用于在所述虚拟读取操作期间将多个分界电压施加到所述多个存储器单元。
8.根据权利要求1-7中任意一项所述的装置,所述存储器阵列包括三维交叉点存储器阵列。
9.根据权利要求1-8中任意一项所述的装置,所述控制器用于响应于检测到所述装置已通电而确定独立于来自主机设备的读取命令来读取由所述多个存储器单元存储的数据。
10.根据权利要求1-9中任意一项所述的装置,所述控制器用于响应于检测到多个读取操作的原始位错误率已越过阈值而确定独立于来自主机设备的读取命令来读取由所述多个存储器单元存储的数据。
11.根据权利要求1-10中任意一项所述的装置,其中,执行所述虚拟读取操作包括执行基于异或的数据恢复操作。
12.根据权利要求1-11中任意一项所述的装置,还包括通信地耦合到处理器的电池,通信地耦合到所述处理器的显示器,或通信地耦合到所述处理器的网络接口。
13.一种方法,包括:
确定独立于来自主机设备的读取命令来读取由多个存储器单元存储的数据;并且
响应于确定独立于来自主机设备的读取命令来确定由所述多个存储器单元存储的数据:
对所述多个存储器单元执行虚拟读取操作;并且
对所述多个存储器单元执行附加读取操作。
14.根据权利要求13所述的方法,还包括丢弃在所述虚拟读取操作期间读取的数据。
15.根据权利要求13-14中任意一项所述的方法,还包括在确定所述数据已通过错误校正操作之后丢弃通过所述虚拟读取操作读取的数据。
16.根据权利要求13-15中任意一项所述的方法,还包括将通过所述附加读取操作读取的数据写入所述多个存储器单元。
17.根据权利要求13-16中任意一项所述的方法,还包括在执行所述虚拟读取操作期间,感测所述多个存储器单元并且对从所述多个存储器单元感测的数据执行错误校正。
18.根据权利要求13-17中任意一项所述的方法,还包括:
对响应于从所述主机设备接收到的读取命令而读取的数据执行错误校正和循环冗余校验;并且
对响应于确定读取由所述多个存储器单元存储的数据而读取的数据执行错误校正但不执行循环冗余校验。
19.根据权利要求13-18中任意一项所述的方法,还包括在所述虚拟读取操作期间将多个分界电压施加到所述多个存储器单元。
20.根据权利要求13-19中任意一项所述的方法,所述存储器阵列包括三维交叉点存储器阵列。
21.根据权利要求13-20中任意一项所述的方法,还包括响应于检测到所述装置已通电而确定独立于来自主机设备的读取命令来读取由所述多个存储器单元存储的数据。
22.根据权利要求13-21中任意一项所述的方法,还包括响应于检测到多个读取操作的原始位错误率已越过阈值而确定独立于来自主机设备的读取命令来读取由所述多个存储器单元存储的数据。
23.根据权利要求13-22中任意一项所述的方法,其中,执行所述虚拟读取操作包括执行基于异或的数据恢复操作。
24.一种包括用于执行根据权利要求13-23中任意一项所述的方法的模块的系统。
25.根据权利要求24所述的系统,其中,所述模块包括机器可读代码,所述机器可读代码在被执行时,使得机器执行根据权利要求13-23中任意一项所述的方法的一个或多个步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/721,394 | 2017-09-29 | ||
US15/721,394 US10331345B2 (en) | 2017-09-29 | 2017-09-29 | Method and apparatus for reducing silent data errors in non-volatile memory systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109582493A true CN109582493A (zh) | 2019-04-05 |
Family
ID=65727877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810997735.4A Pending CN109582493A (zh) | 2017-09-29 | 2018-08-29 | 用于减少非易失性存储器系统中的静默数据错误的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10331345B2 (zh) |
CN (1) | CN109582493A (zh) |
DE (1) | DE102018214010A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111798913A (zh) * | 2019-04-09 | 2020-10-20 | 爱思开海力士有限公司 | 存储器系统、存储器控制器及其操作方法 |
CN112395123A (zh) * | 2019-08-19 | 2021-02-23 | 美光科技公司 | 在存储器中记录致命错误的装置和方法 |
WO2021048658A1 (en) * | 2019-09-11 | 2021-03-18 | International Business Machines Corporation | Link speed recovery in a data storage system |
CN114840455A (zh) * | 2021-02-02 | 2022-08-02 | 辉达公司 | 存储器接口上的数据加扰技术 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10707197B1 (en) | 2018-12-13 | 2020-07-07 | Micron Technology, Inc. | 3D stacked integrated circuits having functional blocks configured to provide redundancy sites |
KR20200113867A (ko) * | 2019-03-26 | 2020-10-07 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11404131B2 (en) * | 2019-07-12 | 2022-08-02 | Micron Technology, Inc. | Decision for executing full-memory refresh during memory sub-system power-on stage |
KR20210123884A (ko) * | 2020-04-06 | 2021-10-14 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11195575B1 (en) | 2020-06-25 | 2021-12-07 | Intel Corporation | Memory array with shorting structure on a dummy array thereof, and method of providing same |
JP7392180B2 (ja) | 2021-03-29 | 2023-12-05 | 長江存儲科技有限責任公司 | メモリデバイスおよびその非同期マルチプレーン独立読み出し動作 |
CN117079690A (zh) | 2021-03-29 | 2023-11-17 | 长江存储科技有限责任公司 | 存储器器件及其异步多面独立读取操作 |
US11947839B2 (en) * | 2021-05-10 | 2024-04-02 | Samsung Electronics Co., Ltd. | Storage device, system, and method for customizable metadata |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7936610B1 (en) * | 2009-08-03 | 2011-05-03 | Micron Technology, Inc. | Selective refresh of single bit memory cells |
US20130336047A1 (en) * | 2012-04-24 | 2013-12-19 | Being Advanced Memory Corporation | Cell Refresh in Phase Change Memory |
KR101939234B1 (ko) * | 2012-07-23 | 2019-01-16 | 삼성전자 주식회사 | 메모리 장치, 메모리 시스템 및 상기 메모리 장치의 독출 전압의 제어 방법 |
KR102120823B1 (ko) * | 2013-08-14 | 2020-06-09 | 삼성전자주식회사 | 비휘발성 메모리 장치의 독출 시퀀스 제어 방법 및 이를 수행하는 메모리 시스템 |
JP2015195070A (ja) * | 2014-03-31 | 2015-11-05 | 株式会社東芝 | 不揮発性半導体記憶装置 |
KR102233074B1 (ko) * | 2014-10-08 | 2021-03-30 | 삼성전자주식회사 | 저장 장치 및 그것의 신뢰성 검증 방법 |
US9704581B2 (en) * | 2014-12-27 | 2017-07-11 | Intel Corporation | Voltage ramping detection |
US10262743B2 (en) * | 2016-10-25 | 2019-04-16 | Sandisk Technologies Llc | Command sequence for first read solution for memory |
KR20180052152A (ko) * | 2016-11-09 | 2018-05-18 | 에스케이하이닉스 주식회사 | 메모리 셀들을 리프레시하는 방법 및 메모리 시스템 |
-
2017
- 2017-09-29 US US15/721,394 patent/US10331345B2/en active Active
-
2018
- 2018-08-20 DE DE102018214010.3A patent/DE102018214010A1/de active Pending
- 2018-08-29 CN CN201810997735.4A patent/CN109582493A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111798913A (zh) * | 2019-04-09 | 2020-10-20 | 爱思开海力士有限公司 | 存储器系统、存储器控制器及其操作方法 |
CN112395123A (zh) * | 2019-08-19 | 2021-02-23 | 美光科技公司 | 在存储器中记录致命错误的装置和方法 |
US11698826B2 (en) | 2019-08-19 | 2023-07-11 | Micron Technology, Inc. | Fatal error logging in a memory device |
CN112395123B (zh) * | 2019-08-19 | 2023-08-25 | 美光科技公司 | 在存储器中记录致命错误的装置和方法 |
WO2021048658A1 (en) * | 2019-09-11 | 2021-03-18 | International Business Machines Corporation | Link speed recovery in a data storage system |
GB2603315A (en) * | 2019-09-11 | 2022-08-03 | Ibm | Link speed recovery in a data storage system |
GB2603315B (en) * | 2019-09-11 | 2023-02-22 | Ibm | Link speed recovery in a data storage system |
CN114840455A (zh) * | 2021-02-02 | 2022-08-02 | 辉达公司 | 存储器接口上的数据加扰技术 |
Also Published As
Publication number | Publication date |
---|---|
US20190102088A1 (en) | 2019-04-04 |
DE102018214010A1 (de) | 2019-04-04 |
US10331345B2 (en) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582493A (zh) | 用于减少非易失性存储器系统中的静默数据错误的方法和装置 | |
US10438659B2 (en) | Method and apparatus for multi-level setback read for three dimensional crosspoint memory | |
US11200961B1 (en) | Apparatus, system and method to log memory commands and associated addresses of a memory array | |
US10777271B2 (en) | Method and apparatus for adjusting demarcation voltages based on cycle count metrics | |
US10186325B2 (en) | Method and apparatus for shielded read to reduce parasitic capacitive coupling | |
CN110447009A (zh) | 用于自适应命令获取聚合的系统和方法 | |
KR20170070920A (ko) | 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법 | |
US10725933B2 (en) | Method and apparatus for redirecting memory access commands sent to unusable memory partitions | |
CN110073323A (zh) | 使用控制器存储器缓冲区进行推测性执行命令的系统和方法 | |
CN113921063A (zh) | 热区标签和热区离群值检测 | |
CN108121680A (zh) | 存储装置、电子系统以及操作电子装置的方法 | |
CN112148525A (zh) | 实现更快且经过调节的装置初始化时间 | |
CN113448497A (zh) | 子块的动态分配 | |
CN109643574A (zh) | 用于在完成数据加载操作之前启动预读取操作的方法和设备 | |
US20230064007A1 (en) | Encoding additional states in a three-dimensional crosspoint memory architecture | |
US20220180930A1 (en) | Binary to ternary convertor for multilevel memory | |
US11195575B1 (en) | Memory array with shorting structure on a dummy array thereof, and method of providing same | |
US11276465B1 (en) | Device, system and method to float a decoder for deselected address lines in a three-dimensional crosspoint memory architecture | |
US11139027B1 (en) | Apparatus, system and method to reduce a read voltage across a memory cell and improve read sense margin | |
US20230267988A1 (en) | Apparatus, method and system to reduce memory window latency and read disturb in a memory device for memory operations | |
US20230289099A1 (en) | Apparatus, method and system to implement a dual vdm scheme on a three-dimensional memory architecture | |
US20220180905A1 (en) | Apparatus, system and method to sense a logic state of a memory cell in a three-dimensional memory device | |
US20230178148A1 (en) | Read algorithms for three-dimensional crosspoint memory architectures | |
US11900998B2 (en) | Bipolar decoder for crosspoint memory | |
US11379359B2 (en) | Selecting data transfer units associated with a data stream for garbage collection |
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 |