CN115705906A - 具有数据校验电路的数据存储设备 - Google Patents

具有数据校验电路的数据存储设备 Download PDF

Info

Publication number
CN115705906A
CN115705906A CN202210567827.5A CN202210567827A CN115705906A CN 115705906 A CN115705906 A CN 115705906A CN 202210567827 A CN202210567827 A CN 202210567827A CN 115705906 A CN115705906 A CN 115705906A
Authority
CN
China
Prior art keywords
bytes
data
memory
transferred
memory access
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
Application number
CN202210567827.5A
Other languages
English (en)
Inventor
D·林恩
A·桑戈伊
K·佩里亚南
J·G·哈恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN115705906A publication Critical patent/CN115705906A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry

Abstract

本发明公开一种数据存储设备,该数据存储设备包括:非易失性存储器设备,该非易失性存储器设备包括具有多个存储器裸片的存储器块;以及耦接到该存储器设备的控制器。接收存储器访问命令并且执行基于该接收的命令的存储器访问操作。确定在该存储器访问操作期间传送的字节的数目,并且分析该确定字节的数目以确定该传送的字节的数目是否等于预定数目。如果该传送的字节的数目不等于该预定数目,则设置传送状态故障位。

Description

具有数据校验电路的数据存储设备
技术领域
本专利申请整体涉及数据存储设备,并且更具体地涉及具有数据校验电路的数据存储设备。
背景技术
存储器设备通常包含各种数据检查算法和/或电路,以确保从存储器读取或向存储器写入的数据准确。然而,在一些情况下,读取或写入操作可能向/从其中数据未能包括预期数目的字节的存储器设备传送数据,从而可能导致存储器设备的故障。例如,控制器和/或存储器读取/写入电路可能缺失时钟脉冲,从而导致数据被移位偏移一个或多个字节(在本文中称为“字节移位”)。通常,这些移位/缺失的字节未被存储器控制器或读取/写入电路检测出,并且因此可能形成无法由存储器设备处置的故障。例如,字节移位/缺失故障可能需要用户将电力循环到存储器设备,或在一些情况下可能导致存储器设备的完全故障。
发明内容
错误检测和校正电路通常不检测或减轻字节移位的影响(例如,针对给定操作的不正确数目的传送字节)。通过检测在给定操作(例如读取或写入操作)中已经传送不正确数目的字节,使用数据校验电路的存储器设备可以执行各种动作以防止由正传送的不正确数目的字节所导致的故障。此外,通过使用该数据校验电路确定已经发生字节移位,可以向存储器控制器、用户等提供一个或多个状态位或其他指示。通过检测以及减轻字节移位事件,可以改善读取和写入性能以及通用存储器设备性能和使用寿命。
本公开的一个实施方案包括数据存储设备,该数据存储设备包括非易失性存储器设备,该非易失性存储器设备包括控制器和存储器块。该存储器块包括多个存储器裸片和数据校验电路。该数据校验电路被配置为接收来自该控制器的存储器访问指令,并且基于该存储器访问指令执行存储器访问操作。该数据校验电路被进一步配置为确定在该存储器访问操作期间传送的字节的数目,确定该字节的数目是否等于预定字节的数目,并且响应于确定该字节的该数目不等于该预定字节的数目,设置指示该字节的该数目不等于该预定字节的数目的传送状态故障位。
本公开的另一个实施方案包括由具有耦接到非易失性存储器设备的控制器的数据存储设备执行的方法。该方法包括从外部设备接收存储器访问命令并且基于该存储器访问命令执行存储器访问操作。该方法还包括确定在该存储器访问操作期间是否传送一定数目的字节并且确定该字节的该数目是否等于预定字节的数目。响应于确定该字节的该数目不等于该预定字节的数目,设置指示该字节的该数目不等于该预定字节的数目的传送状态故障位。
本公开的另一个实施方案包括一种装置,该装置包括用于从控制器接收存储器访问命令的装置,以及用于基于该存储器访问命令执行存储器访问操作的装置。该装置进一步包括用于确定在该存储器访问操作期间传送的字节的数目的装置,以及用于确定该字节的该数目是否等于预定字节的数目的装置。该装置进一步包括用于响应于确定该字节的该数目不等于该预定字节的数目而设置传送状态位的装置,该传送状态位指示该字节的该数目不等于该预定字节的数目。
本公开的各种方面提供具有数据校验电路的数据存储设备。本公开可以各种形式体现,包括由软件、固件或它们的组合控制的硬件或电路。上述发明内容仅旨在给出本公开的各个方面的一般构想,而不以任何方式限制本公开的范围。
附图说明
图1是根据一些实施方案的包括数据存储设备的系统的一个示例的框图。
图2是根据一些实施方案的示出在读取操作期间的字节移位减轻过程的流程图。
图3是根据一些实施方案的示出在写入操作期间的字节移位减轻过程的流程图。
具体实施方式
在以下描述中,阐述了许多细节,诸如数据存储设备配置、控制器操作等,以便提供对本公开的一个或多个方面的理解。对本领域的技术人员将显而易见的是,这些具体细节仅仅是示例性的并且不旨在限制本申请的范围。具体地讲,与控制器相关联的功能可由硬件(例如,模拟或数字电路)、硬件和软件的组合(例如,由处理器或控制电路执行的存储在非暂态计算机可读介质中的程序代码或固件)或任何其他合适的装置来执行。以下描述仅旨在给出本公开的各个方面的一般构想,而不以任何方式限制本公开的范围。此外,对于本领域的技术人员将显而易见的是,尽管本公开涉及NAND闪存,但本文讨论的概念适用于其他类型的固态存储器,诸如NOR、PCM(“相变存储器”)、ReRAM、MRAM、DRAM等。
图1是根据本公开的一些实施方案的包括字节移位检测和减轻功能的系统100的一个示例的框图。在图1的示例中,系统100包括与主机设备108通信的数据存储设备102。数据存储设备102包括耦接到控制器106的存储器设备104(例如,非易失性存储器)。
在图1中示出了由控制器106提供的结构和功能特征部的一个示例。然而,控制器106不限于由图1中的控制器106提供的结构和功能特征部。控制器106可包括图1中未示出的更少或附加的结构和功能特征部。
数据存储设备102和主机设备108可通过诸如总线或无线连接等连接(例如,通信路径110)操作地耦接。在一些示例中,数据存储设备102可嵌入在主机设备108内。另选地,在其他示例中,数据存储设备102可从主机设备108移除(即,“可移除地”耦接到主机设备108)。例如,数据存储设备102可根据可移除通用串行总线(USB)配置可移除地耦接到主机设备108。在一些具体实施中,数据存储设备102可包括或对应于固态驱动器(SSD),该SSD可用作嵌入式存储驱动器(例如,移动嵌入式存储驱动器)、企业存储驱动器(ESD)、客户端存储设备、云存储驱动器、或其他合适的存储驱动器。
数据存储设备102可被配置为使用通信路径110(诸如有线通信路径和/或无线通信路径)耦接到主机设备108。例如,数据存储设备102可包括接口120(例如,主机接口),该接口使得能够使用数据存储设备102和主机设备108之间的通信路径110进行通信,诸如当接口120通信地耦接到主机设备108时。
主机设备108可包括处理器和存储器。存储器可被配置为存储数据和/或可由处理器执行的指令。存储器可以是单个存储器,或者可包括一个或多个存储器,诸如一个或多个非易失性存储器、一个或多个易失性存储器或它们的组合。主机设备108可向数据存储设备102发出一个或多个命令,诸如擦除数据存储设备102的存储器设备104处的数据、从该存储器设备读取数据或者向该存储器设备写入数据的一个或多个请求。例如,主机设备108可被配置为提供要存储在存储器设备104处的数据(诸如用户数据132)或者请求要从存储器设备104读取的数据。主机设备108可包括移动智能电话、音乐播放器、视频播放器、游戏控制台、电子书阅读器、个人数字助理(PDA)、计算机(诸如膝上型计算机或笔记本计算机)、它们的任何组合或其他合适的电子设备。
主机设备108使用存储器接口通信,该存储器接口实现从存储器设备104的读取以及对存储器设备104的写入。在一些示例中,主机设备108可按照行业规范(诸如通用闪存存储(UFS)主机控制器接口规范)操作。在其他示例中,主机设备108可按照一个或多个其他规范(诸如安全数字(SD)主机控制器规范或其他合适的行业规范)操作。主机设备108还可根据任何其他合适的通信协议与存储器设备104通信。
数据存储设备102的存储器设备104可包括非易失性存储器(例如,NAND、NOR、BiCS系列存储器或其他合适的存储器)。在一些示例中,存储器设备104可以是任何类型的闪存存储器。例如,存储器设备104可以是二维(2D)存储器或三维(3D)闪存存储器。存储器设备104可包括一个或多个存储器裸片103。该一个或多个存储器裸片103中的每个存储器裸片可包括一个或多个存储器块112(例如,一个或多个擦除块)。每个存储器块112可包括一组或多组存储元件,诸如一组代表性存储元件107A-107N。该组存储元件107A-107N可被配置作为字线。该组存储元件107A-107N可包括多个存储元件(例如,在本文中称为“串”或“阵列”的存储器单元),诸如分别为代表性存储元件109A和109N。
存储器设备104可以包括支持电路,诸如读取/写入电路140、读取数据校验电路、写入数据校验电路144和错误校正电路146。尽管被描绘为单个部件,但读取/写入电路140可被分成存储器设备104的单独部件,诸如读取电路和写入电路。读取/写入电路140可在存储器设备104的一个或多个存储器裸片103外部。另选地,一个或多个单独存储器裸片103可包括对应的读取/写入电路140,该读取/写入电路可操作以独立于任何其他存储器裸片处的任何其他读取和/或写入操作而从单独存储器裸片内的存储元件读取和/或写入其中。例如,读取/写入电路140可以被配置为执行各种读取/写入操作,诸如对易失性存储器的初始写入、阵列提交功能以及给定应用程序所需的其他功能。存储器设备104可以进一步包括一个或多个锁存器(例如,包括锁存器113、115和117的一组锁存器111)。
读取数据校验电路142和写入数据校验电路144被示出为单独电路,但是在一些实施方案中,它们可以组合到单个数据校验电路中。在其他示例中,读取数据校验电路142和写入数据校验电路144并入读取/写入电路140内。在其他示例中,读取数据校验电路142和写入校验电路144可以并入控制器106内。读取数据校验电路142和写入数据校验电路144可以被配置为执行一个或多个数据校验操作以确保与读取和/或写入操作相关联的数据有效,即包括预期数目的字节。下面更详细地描述这些校验操作。错误校正电路146被配置为执行一个或多个错误校正操作,诸如循环冗余检查(“CRC”),以验证由读取/写入电路140处理的数据的内容。
控制器106使用总线105、接口(例如,接口电路)、另一个结构或它们的组合来耦接到存储器设备104(例如,一个或多个存储器裸片103)。例如,总线105可包括多个不同的信道以使得控制器106能够与一个或多个存储器裸片103中的每个存储器裸片通信,该通信和与其他存储器裸片103的通信并行并且独立于与该其他存储器103的通信。
控制器106被配置为从主机设备108接收数据和指令并且向主机设备108发送数据。例如,控制器106可使用接口120向主机设备108发送数据,并且控制器106可使用接口120从主机设备108接收数据。控制器106被配置为将数据和命令(例如,存储器操作136,其可以是存储器设备104的存储器块的循环操作)发送到存储器设备104并且从存储器设备104接收数据。例如,控制器106被配置为发送数据和程序或写入命令以致使存储器设备104将数据存储到存储器设备104的指定地址。写入命令可规定存储器设备104的待存储数据的部分的物理地址(例如,存储器设备104的字线的物理地址),以及待写入的数据的大小(例如,2k、4k等)。
控制器106被配置为向存储器设备104发送读取命令以访问来自存储器设备104的指定地址的数据。读取命令可规定存储器设备104的区的物理地址(例如,存储器设备104的字线的物理地址),以及待读取的数据的大小(例如,2k、4k等)。控制器106还可被配置为向存储器设备104发送数据和命令,该数据和命令与后台扫描操作、垃圾收集操作和/或损耗均衡操作或其他合适的存储器操作相关联。
控制器106可包括处理器124、存储器126和其他相关联的电路。存储器126可被配置为存储数据和/或可由处理器124执行的指令。存储器126可以包括数据传送错误应用程序130以及其他应用程序、程序。数据传送错误应用程序130可以是可由处理器124执行的硬件电路或指令。虽然示出为存储在存储器126中,但是在一些示例中,数据传送错误应用程序130可以被配置作为存储器设备104内的电路。
数据传送错误应用程序130可以被配置为执行一个或多个数据传送错误操作。例如,数据传送错误应用程序130可以存储数据传送错误以供稍后查看。然后稍后可以由一个或多个用户或监控控制器访问所存储的传送错误以进行进一步分析。
现在转向图2,根据一些实施方案示出了示出在读取操作期间的字节移位减轻过程200的流程图。在一个实施方案中,字节移位减轻过程200由读取数据校验电路142执行。在一些实施方案中,字节移位减轻过程200由读取数据校验电路142结合读取/写入电路140执行。在仍其他实施方案中,读取/写入电路140可以执行字节移位减轻过程200。
在框202处,在存储器104处接收读取请求。在一个示例中,读取请求可以从控制器106传输到存储器104。如上所述,控制器106可以从主机设备108接收读取请求。在框204处,执行读取操作。在一个实施方案中,读取操作从存储器104读取所请求的数据。在一个实施方案中,读取/写入电路140促进读取请求并且访问存储器裸片103内的数据。在一些实施方案中,从存储器裸片103读取数据,并且将数据读取到锁存器111中,该数据然后可以由控制器106读取。
在框206处,做出关于读取操作是否已经停止的确定。在一些实施方案中,当已经访问(例如,读取)与读取操作相关联的多个字节时,读取操作停止。在一些实施方案中,访问与读取操作相关联的读取持续时间定时器以确定读取操作是否已经停止或应该已经停止。例如,一旦读取持续时间定时器已经到期,则认为读取操作停止。在一个实施方案中,读取持续时间定时器在读取/写入电路140内。在一个实施方案中,读取持续时间定时器是与给定读取命令相关联的时间值。例如,时间值可以基于读取请求中所请求的数据的大小。时间值可以是对给定数据存储设备102执行给定读取操作所需的时间。此外,可以将附加的延迟(诸如10%)添加到时间值以允许执行相关联的读取操作的延迟。另外,还考虑了给定应用所需的超过10%或小于10%的时间延迟值。在一个实施方案中,时间值可以具有从10纳秒到50纳秒的值。然而,还考虑了小于10纳秒和大于50纳秒的值。在一些实施方案中,时间延迟值取决于存储器设备的类型。在一个实施方案中,诸如控制器106的设备将请求读取操作停止一段时间(例如读取持续时间计时器),使得可以如下所述校验数据计数。在仍另外的示例中,一旦读取完成,可以设置一个或多个读取完成位。例如,读取/写入电路140可以在读取操作停止时设置读取完成位。
响应于确定读取操作尚未停止,在框204处继续读取操作。响应于确定读取操作已经停止,在框208处对读取数据的数量进行计数。在一个实施方案中,确定和/或计数与读取操作相关联的字节的数目。在一个实施方案中,读取数据校验电路142确定读取数据的数量。然而,在其他示例中,读取/写入电路140确定传送的读取数据的数量。所请求的读取操作所期望的数据的数量可以基于读取请求。例如,读取请求可以请求4096个字节的数据(例如,4k数据读取)。其他数据读取大小,诸如1k、2k、8k等也可以与读取请求相关联。
在框210处,做出关于传送的数据是否等于预定数据数量的确定。在一个实施方案中,读取数据校验电路142执行校验。然而,在其他实施方案中,读取/写入电路140执行校验。确定数据等于预定数据数量,其中传送的数据的数量等于预定数据数量。例如,如上所述,4k数据读取具有预期(例如,预定)的等于4096的字节的数目。因此,在确定在读取操作期间传送4096字节的情况下,确定传送的数据等于预定值。然而,在确定在读取操作期间已经传送4095字节的情况下,确定传送的数据不等于预定值。在一些示例中,预定字节的数目可以特定于给定的数据存储设备102。例如,虽然4k传送通常包括4096字节数据,但某些数据存储设备和相关联协议可能包括更多数据,以说明给定应用程序所需的错误校正位、地址位和/或其他信息。因此,数据存储设备102可以具有预定字节的数目的限定值。
响应于确定传送的数据等于预定值,在块212处完成读取操作。响应于确定传送的数据不等于预定值,在框214处设置传送故障位。传送故障位可以存储在数据传送错误应用程序130中。然而,在其他实施方案中,传送故障位可以存储在读取/写入电路140和/或读取数据校验电路142中。
在框216处,将附加的数据添加到传送的数据以确保传送的数据的量等于预定值。例如,在4k读取请求的传送的数据仅等于4095字节的情况下,可以将附加的1字节追加到传送的数据以确保传送的数据包括预定数目的字节。可以根据需要将超过1个字节追加到传送的数据,以确保传送的数据包括预定数目的字节。在一个实施方案中,读取数据校验电路142将所需的附加的数据添加到传送的数据。在其他实施方案中,读取/写入电路140将所需的附加的数据添加到传送的数据。在一个实施方案中,所追加的数据可以始终相同,例如逻辑1或逻辑0。然而,在其他示例中,所追加的数据可以是随机的,诸如基于大气噪声生成的数据。在一个示例中,时钟信号可以被切换成等于所需数目的缺失字节,从而允许随机数据填充传送的数据中的剩余字节。无论追加什么数据,在框214处的传送故障位的设置确保数据被理解为无效。一旦将附加的数据添加到传送的数据,就在框212处完成读取操作。
通过将缺失的数据追加到传送的数据,使传送的数据包括预定数据值(例如,允许数目的字节)。如上所述,字节移位(例如,非允许数据字节值)可以导致数据存储设备(诸如数据存储设备102)的故障或“冲击”。在一些情况下,数据存储设备102可以通过电源再循环来重置,但在其他情况下,数据存储设备102或其部分可能是不可修复的。字节移位可以导致一个或多个所请求的命令未能完成,因为从未接收到正确数目的字节。这可以导致一个或多个监视例程指示故障,从而使数据存储设备102出错。
通常,字节移位在数据存储设备中并非普遍发生;然而,如上所述,字节移位的发生可能导致显著的,并且在一些情况下不可逆地对数据存储设备造成损坏。由于字线中的铜迹线的劣化、硅矩阵中的击穿、数据存储设备102内的电压不稳定性、数据存储设备的老化、α粒子劣化等,随着装置老化可发生字节移位。此外,控制器与一个或多个存储器之间的定时问题可能导致缺失时钟脉冲,而缺失时钟脉冲可能导致字节移位。
现在转向图3,根据一些实施方案示出了示出在写入操作期间的字节偏移校验过程300的流程图。在一个实施方案中,字节移位校验过程300由写入数据校验电路144执行。在一些实施方案中,字节移位校验由写入数据校验电路144结合读取/写入电路140执行。仍在其他实施方案中,读取/写入电路140可以执行字节移位校验过程200。
在框302处,在存储器104处接收写入请求。在一个示例中,写入请求可以从控制器106传输到存储器104。控制器106可以从主机设备108接收写入请求,如上所述。在框304处,向存储器的易失性部分(诸如易失性锁存器111)写入所请求的数据。在一个实施方案中,读取/写入电路140促进写入请求并将数据传送到易失性锁存器111。
在框306处,将接收的数据(例如,接收的字节)的数量与预定值进行比较。例如,在写入请求是4k写入请求的情况下,预定值可以是4096字节。对于2k写入请求,预定值可以是2048字节。对于所有大小的写入请求,将存在预定值。在一个实施方案中,与写入操作相关联的接收的数据的数量由写入数据校验电路144确定和/或计数。然而,在其他示例中,读取/写入电路140确定接收的数据的数量。如上所述,所请求的写入操作期望的数据的数量可以基于写入请求。例如,写入请求可以请求4096位数据(例如,4k数据读取)。其他数据写入大小,诸如1k、2k、8k等也可以与写入请求相关联。在一些示例中,预定数目的字节可以特定于给定的数据存储设备102。例如,虽然4k传送通常包括4096字节数据,但某些数据存储设备和相关联协议可能包括更多数据,以说明给定应用程序所需的错误校正位、地址位和/或其他信息。因此,数据存储设备102可以具有预定数据存储字节的限定值。
在框308处,做出关于接收的数据是否等于预定数据数量的确定。在一个实施方案中,写入数据校验电路144执行校验。然而,在其他实施方案中,读取/写入电路140执行校验。确定接收的数据等于预定数据数量,其中接收的数据的数量等于预定数据数量。例如,如上所述,4k数据写入具有等于4096的预期字节的数目。因此,在确定在写入操作期间接收到4096个字节的情况下,随着接收的字节的数目等于预定字节的数目,可允许数据传送。然而,在写入操作期间确定已接收到4095个字节的情况下,由于接收的字节的数目不等于预定字节的数目,因此不允许数据传送。响应于确定数据传送不允许,在框310处设置传送故障位。传送故障位可以存储在数据传送错误应用程序130中。然而,在其他实施方案中,传送故障位可以存储在读取/写入电路140和/或写入数据校验电路144中。在设置传送故障位时,在块312处启动程序提交延迟。
在写入期间设置传送故障位允许数据存储设备102和因此控制器106理解发生传送问题,从而允许在进行尝试读取数据之前执行调试和/或错误管理,这可能导致正访问的数据损坏或由于不正确数据而导致的数据存储设备102的故障。因此,通过向数据存储设备102提供传送故障位状态,可以减少或消除后续读取操作期间的潜在故障。此外,传送故障位允许附加的调试以防止未来传送错误。例如,一个或多个阵列(例如,存储元件107A-107N)和/或存储器裸片103可以响应于如上所述的数据传送错误而被弃用。在一些情况下,可以结合传送错误位状态使用附加的信息,诸如给定存储元件107A-107N和/或存储器裸片103的读取/写入周期数目,以确定是否应弃用相关联存储元件107A-107N和/或存储器裸片103。另外,在数据存储设备102是企业系统的一部分的情况下,可以向系统管理员和/或企业控制器提供与传送故障位状态相关联的信息。这是对先前数据存储设备的改善,其仅指示当字节位移错误发生时数据被损坏,而不提供指示由于字节移位错误而导致错误的任何信息或状态数据。
响应于确定数据传送是允许值(即不等于预定值),在框312处启动程序提交延迟。程序提交延迟是向易失性存储器(诸如锁存器111)写入与写入命令相关联的数据与将数据提交到一个或多个阵列(例如字线)(诸如存储元件107A-107N)之间的延迟。在一些实施方案中,提交延迟可以是限定的时间段(例如,10纳秒)。然而,在其他示例中,提交延迟可以大于10纳秒或小于10纳秒。在其他示例中,提交延迟可以基于写入请求的大小,使得写入请求越大,程序提交延迟越大。在一些示例中,可能不存在提交延迟。
在程序提交延迟完成时,在块314发出提交操作命令。在一个实施方案中,提交操作命令由读取/写入电路140发出。在其他实施方案中,数据存储设备102的一个或多个其他部件(诸如控制器106)发出提交操作命令。提交操作命令指示读取/写入电路140向一个或多个静态阵列(诸如存储元件107A-107N和/或109A-109N)写入接收的数据。在发出提交操作命令时,在框316做出关于是否已设置传送故障位的确定。在一个实施方案中,读取/写入电路140确定是否设置传送故障位。在其他实施方案中,读取数据校验电路142和写入数据校验电路144中的一者或多者确定是否设置传送故障位。在其他实施方案中,数据存储设备102的一个或多个其他部件,诸如写入数据校验电路144、错误校正电路146和/或控制器106确定是否已设置传送故障位。
响应于确定已设置传送故障位,在框318处将操作状态设置为故障。在一个实施方案中,操作状态可以被设置为在数据传送错误应用程序130内故障。在其他实施方案中,操作状态可以被设置为在错误校正电路146内故障。除了将操作状态设置为故障之外,附加的数据还可被存储并且与操作故障相关联。例如,可以提供示出基于接收的字节并非允许值而设置传送故障位的指示。其他信息,诸如写入请求大小、缺失字节信息、写入地址、设备温度和/或给定存储元件107A-107N的读取/写入操作数目也可以与操作故障状态一起存储。
响应于确定未设置传送故障位,在框320处执行提交操作(例如,将接收的数据写入到一个或多个静态阵列中)。在框322处,读取/写入电路140确定提交操作是否成功。响应于确定提交操作不成功,在框318处将操作状态设置为故障。响应于确定提交操作成功,在框324处,将操作报告为成功。在一个示例中,读取/写入电路140可以将成功操作报告给一个或多个部件,诸如数据传送错误应用程序130、写入数据校验电路144和/或控制器106。
对于本文所述的过程、系统、方法、启发法等,应当理解,尽管此类过程的步骤等已被描述为根据某个有序序列进行,但此类过程可用以除本文所述顺序之外的顺序执行的所述步骤来实践。还应当理解,可同时执行某些步骤,可添加其他步骤,或者可省略本文所述的某些步骤。换句话讲,本文对过程的描述是为了示出某些具体实施的目的而提供的,并且绝不应理解为限制权利要求。
因此,应当理解,以上描述旨在为示例性的而非限制性的。在阅读以上描述时,除所提供的示例之外的许多实施方案和应用将是显而易见的。不应当参考以上描述来确定范围,而是应当参考所附权利要求书连同此类权利要求书有权使用的等同物的完整范围来确定范围。预期和打算的是,本文所讨论的技术将发生未来开发,并且所公开的系统和方法将被结合到此类未来实施方案中。总之,应当理解,本申请能够进行修改和变化。
权利要求书中使用的所有术语旨在被赋予熟知本文所述技术的人员所理解的其最广泛的合理构造和其普通含义,除非在本文中作出明确的相反指示。具体地讲,使用单数冠词诸如“一个”、“该”、“所述”等应被理解为叙述所指示的元素中的一者或多者,除非权利要求叙述相反的明确限制。
提供说明书摘要以允许读者快速确定技术公开的性质。应当理解所提交的内容不用来解释或限制权利要求书的范围或含义。此外,在前述具体实施方式中,可以看出,出于简化本公开的目的,在各种实施方案中将各种特征分组在一起。本公开的该方法不应解释为反映这样的意图:要求保护的实施方案需要比每个权利要求中明确叙述的更多的特征。相反,如以下附权利要求书反映,发明主题在于少于单个公开的实施方案的所有特征。因此,以下附权利要求书据此并入具体实施方式中,其中每个权利要求独立地作为单独要求保护的主题。

Claims (20)

1.一种数据存储设备,所述数据存储设备包括:
非易失性存储器设备,所述非易失性存储器设备包括控制器;
存储器块,所述存储器块包括多个存储器裸片;和
数据校验电路,所述数据校验电路被配置为:
从所述控制器接收存储器访问命令,
基于所述存储器访问命令执行存储器访问操作,
确定在所述存储器访问操作期间传送的字节的数目,
确定所传送的字节的数目是否等于预定字节的数目,以及
响应于确定所传送的字节的数目不等于所述预定字节的数目,设置指示所传送的字节的数目不等于所述预定字节的数目的传送状态故障位。
2.根据权利要求1所述的数据存储设备,其中所述存储器访问操作是读取操作。
3.根据权利要求2所述的数据存储设备,其中所述数据校验电路被进一步配置为:
响应于确定所传送的字节的数目不等于所述预定字节的数目,将第二数目的附加的字节追加到所传送的字节,其中所述第二附加的字节的数目等于所述预定字节的数目与所传送的字节的数目之间的差。
4.根据权利要求1所述的数据存储设备,其中所述存储器访问操作是写入操作。
5.根据权利要求4所述的数据存储设备,其中所述数据校验电路被进一步配置为:
发出提交操作命令以向所述存储器裸片中的一个或多个存储器裸片内的阵列写入所传送的字节,
确定是否设置所述传送状态故障位,以及
基于确定设置所述传送状态故障位来生成所述写入操作中的故障的指示。
6.根据权利要求5所述的数据存储设备,其中所述存储器块被进一步配置为将所述故障指示传输到所述控制器。
7.根据权利要求1所述的数据存储设备,其中所述预定字节的数目基于与所述存储器访问命令相关联的数据大小。
8.根据权利要求1所述的数据存储设备,其中所述数据校验电路是所述存储器块的一部分。
9.一种由具有耦接到非易失性存储器设备的控制器的数据存储设备执行的方法,所述方法包括:
从外部设备接收存储器访问命令;
基于所述存储器访问命令执行存储器访问操作;
确定在所述存储器访问操作期间传送到所述存储器设备的字节的数目;
确定所传送的字节的数目是否等于预定字节的数目;以及
响应于确定所传送的字节的数目不等于所述预定字节的数目,设置指示所传送的字节的数目不等于所述预定字节的数目的传送状态故障位。
10.据权利要求9所述的方法,其中所述存储器访问操作是读取操作。
11.根据权利要求10所述的方法,所述方法还包括:
响应于确定所传送的字节的数目不等于所述预定字节的数目,将一定数目的附加的字节追加到所传送的字节,其中所述附加的字节的数目等于所述预定字节的数目与所传送的字节的数目之间的差。
12.根据权利要求9所述的方法,其中所述存储器访问操作是写入操作。
13.根据权利要求12所述的方法,所述方法还包括:
发出提交操作命令以向一个或多个存储器裸片内的阵列写入所述字节;
确定是否设置所述传送状态故障位;以及
基于确定设置所述传送状态故障位来生成所述写入操作中的故障的指示。
14.根据权利要求13所述的方法,所述方法进一步包括将所述指示存储在所述控制器的存储器中。
15.根据权利要求14所述的方法,其中所述预定字节的数目基于与所述存储器访问命令相关联的数据大小。
16.一种装置,所述装置包括:
用于从控制器接收存储器访问命令的装置;
用于基于所述存储器访问命令执行存储器访问操作的装置;
用于确定在所述存储器访问操作期间传送的字节的数目的装置;
用于确定所传送的字节的数目是否等于预定字节的数目的装置;和
用于响应于确定所传送的字节的数目不等于所述预定字节的数目而设置指示所传送的字节的数目不等于所述预定字节的数目的传送状态故障位的装置。
17.根据权利要求16所述的装置,其中所述存储器访问操作是读取操作。
18.根据权利要求17所述的装置,所述装置还包括用于响应于确定所传送的字节的数目不等于所述预定字节的数目而将第二数目的附加的字节追加到所传送的字节的装置,其中所述第二附加的字节的数目等于所述预定字节的数目与所传送的字节的数目之间的差。
19.根据权利要求16所述的装置,其中所述存储器访问操作是写入操作,所述装置还包括:
用于发出提交操作命令以向一个或多个存储器裸片内的阵列写入所述传送的字节的装置;
用于确定是否设置所述传送状态故障位的装置;
用于基于确定设置所述传送状态故障位来生成所述写入操作中的故障的指示的装置。
20.根据权利要求19所述的装置,其中所述预定字节的数目基于与所述存储器访问命令相关联的数据大小。
CN202210567827.5A 2021-08-06 2022-05-24 具有数据校验电路的数据存储设备 Pending CN115705906A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/396,199 2021-08-06
US17/396,199 US11836035B2 (en) 2021-08-06 2021-08-06 Data storage device with data verification circuitry

Publications (1)

Publication Number Publication Date
CN115705906A true CN115705906A (zh) 2023-02-17

Family

ID=85152333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210567827.5A Pending CN115705906A (zh) 2021-08-06 2022-05-24 具有数据校验电路的数据存储设备

Country Status (4)

Country Link
US (1) US11836035B2 (zh)
JP (1) JP7400015B2 (zh)
KR (1) KR20230022103A (zh)
CN (1) CN115705906A (zh)

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7210008B2 (en) 2003-12-18 2007-04-24 Intel Corporation Memory controller for padding and stripping data in response to read and write commands
CN1957326B (zh) 2004-05-27 2010-07-28 Nxp股份有限公司 指令对齐的微处理器和方法
KR100632952B1 (ko) * 2004-09-30 2006-10-11 삼성전자주식회사 정전으로 인한 프로그램 페일의 유무를 판별할 수 있는방법 및 장치
KR100630710B1 (ko) * 2004-11-04 2006-10-02 삼성전자주식회사 다수개의 페일 비트를 검출할 수 있는 반도체 메모리의페일 비트 검출 장치
US7376815B2 (en) 2005-02-25 2008-05-20 Qualcomm Incorporated Methods and apparatus to insure correct predecode
US7827024B2 (en) * 2007-05-09 2010-11-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US7676622B2 (en) 2007-06-07 2010-03-09 International Business Machines Corporation System and method for improved bus communication
US8296430B2 (en) * 2007-06-18 2012-10-23 International Business Machines Corporation Administering an epoch initiated for remote memory access
US20130246650A1 (en) * 2012-03-13 2013-09-19 Hitachi, Ltd. Computer system and frame transfer bandwidth optimization method
US20140115278A1 (en) 2012-10-23 2014-04-24 Analog Devices, Inc. Memory architecture
CN105191182B (zh) * 2014-02-27 2017-07-28 索尔思光电(成都)有限公司 借助追踪操作参数变化的光收发器状态监控,存储和报告
CN105988726B (zh) 2014-10-31 2019-06-11 株式会社东芝 存储装置及用于利用电源无效信号的方法
US9423972B2 (en) * 2014-11-17 2016-08-23 Freescale Semiconductor, Inc. Error recovery in a data processing system which implements partial writes
JP6482322B2 (ja) 2014-12-29 2019-03-13 東芝メモリ株式会社 メモリ装置及びプログラム
US10503586B2 (en) 2017-04-26 2019-12-10 Sandisk Technologies Llc Dynamic read based on read statistics
US11570003B2 (en) * 2017-10-04 2023-01-31 Jintai Ding Quantumproof blockchain
JP6612392B1 (ja) * 2018-06-08 2019-11-27 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US11429419B2 (en) * 2018-08-03 2022-08-30 Nvidia Corporation Secure access of virtual machine memory suitable for AI assisted automotive applications
US10866763B2 (en) 2018-10-30 2020-12-15 Western Digital Technologies, Inc. Dynamic read based on read statistics

Also Published As

Publication number Publication date
US11836035B2 (en) 2023-12-05
JP7400015B2 (ja) 2023-12-18
US20230039071A1 (en) 2023-02-09
JP2023024272A (ja) 2023-02-16
KR20230022103A (ko) 2023-02-14

Similar Documents

Publication Publication Date Title
JP5792380B2 (ja) データ完全性を与えるための装置および方法
KR101536853B1 (ko) 데이터 무결성을 제공하기 위한 방법 및 장치
EP2811392B1 (en) Method and device for reducing read delay
US8904244B2 (en) Heuristic approach for faster consistency check in a redundant storage system
US20130185612A1 (en) Flash memory system and read method of flash memory system
US11157357B2 (en) Operation methods of memory system and host, and computing system
KR102571747B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US8738994B2 (en) Memory controller, memory system, and operating method
US10606696B2 (en) Internally-generated data storage in spare memory locations
CN113778822B (zh) 纠错能力测试方法、装置、可读存储介质及电子设备
US11521701B2 (en) Memory controller with read error handling
US20130304970A1 (en) Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US20150248322A1 (en) Memory controller and memory system
CN103218271B (zh) 一种数据纠错方法及装置
WO2008027759A1 (en) Allowable bit errors per sector in memory devices
CN112612639A (zh) 操作存储器系统的方法、操作主机的方法和计算系统
CN110083305B (zh) 存储器系统及其操作方法
CN110299181B (zh) 非易失性存储器装置、其操作方法及数据存储装置
CN111221681A (zh) 一种存储器的修复方法及装置
US11836035B2 (en) Data storage device with data verification circuitry
CN116483614A (zh) 用于计算快速链路(cxl)装置中的存储器系统的循环冗余校验(crc)重试
CN116340049A (zh) 存储器系统及操作存储器系统的方法
CN115934406A (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