CN113760779A - 存储器控制器及其操作方法和包括其的存储装置 - Google Patents

存储器控制器及其操作方法和包括其的存储装置 Download PDF

Info

Publication number
CN113760779A
CN113760779A CN202110619884.9A CN202110619884A CN113760779A CN 113760779 A CN113760779 A CN 113760779A CN 202110619884 A CN202110619884 A CN 202110619884A CN 113760779 A CN113760779 A CN 113760779A
Authority
CN
China
Prior art keywords
code
memory
memory controller
code path
paths
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
CN202110619884.9A
Other languages
English (en)
Inventor
金鼎勋
金圣训
羅钟声
曹仙我
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN113760779A publication Critical patent/CN113760779A/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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

提供了一种存储器控制器、操作存储器控制器的方法以及包括存储器控制器的存储装置。该方法包括:对非易失性存储器执行第一操作;将与在执行第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器中;将第一代码路径与同第一操作相关的多个参考代码路径进行比较;以及基于比较的结果来识别第一操作是否被异常执行。

Description

存储器控制器及其操作方法和包括其的存储装置
相关申请的交叉引用
本申请要求于2020年6月5日在韩国知识产权局提交的韩国专利申请No.10-2020-0068603的优先权,其全部内容通过引用合并于此。
技术领域
与示例实施例一致的方法、设备和系统涉及一种半导体装置,更具体地讲,涉及一种存储器控制器、一种操作该存储器控制器的方法和一种包括该存储器控制器的存储装置。
背景技术
近来,包括非易失性存储器(诸如,嵌入式多媒体卡(eMMC)、通用闪存(UFS)、固态驱动器(SSD)、NAND闪存、和存储卡)的存储装置正被广泛使用。设置在存储装置中的存储器控制器可以控制对非易失性存储器的数据写入和读取操作,并且还可以管理非易失性存储器。存储器控制器可以在执行用于控制非易失性存储器的固件时操作,固件可以包括多段代码,并且通过执行多段代码而生成的数据以及固件可以被存储在存储器中。由于工艺小型化和功耗降低,存储器中的随机存储器损坏(诸如,软错误)增加。因此,由于代码无法被存储器控制器正常地执行,存储装置可能被异常操作。
发明内容
示例实施例提供了一种存储器控制器、控制该存储器控制器的方法以及包括该存储器控制器的存储装置,该存储器控制器能够确定对非易失性存储器执行的操作是被正常执行还是被异常执行,并且当确定操作被异常执行时,能够对存储装置或异常执行的操作执行恢复操作。
根据示例实施例的一方面,提供了一种操作被配置为控制非易失性存储器的存储器控制器的方法,所述方法包括:对所述非易失性存储器执行第一操作;将与在执行所述第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器中;将所述第一代码路径与同所述第一操作相关的多个参考代码路径进行比较;以及基于所述比较的结果来识别所述第一操作是否被异常执行。
根据示例实施例的另一方面,提供了一种操作被配置为控制非易失性存储器的存储器控制器的方法,所述方法包括:对所述非易失性存储器执行第一操作;将与在执行所述第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器中;基于所述第一代码路径来执行基于与所述第一操作相关的多个正常参考代码路径生成的公式;以及基于所述公式的输出来识别所述第一操作是否被异常执行。
根据示例实施例的一方面,提供了一种存储装置,包括:非易失性存储器;以及存储器控制器,其被配置为控制所述非易失性存储器,其中,所述存储器控制器包括:历史缓冲器,其被配置为存储分别与对所述非易失性存储器执行的多个操作相对应的多个代码路径;以及处理器,其被配置为实施异常操作确定器,所述异常操作确定器被配置为基于所述代码路径来识别所述操作被正常执行还是被异常执行。
附图说明
根据下面结合附图对示例实施例的详细描述,将更清楚地理解上述和其它方面、特征和优点,在附图中:
图1是示出根据示例实施例的存储系统的框图;
图2A和图2B是示出其中多段代码和元数据被存储在图1的存储器中的示例的图;
图3是示出存储在图1的历史缓冲器中的代码路径的示例的图;
图4是示出根据示例实施例的存储器控制器的操作的流程图;
图5A是示出根据示例实施例的存储器控制器的框图,并且图5B是示出图5A的代码路径字典的实施示例的图;
图6是根据示例实施例的由存储器控制器执行的方法的流程图;
图7A和图7B是示出根据示例实施例的由存储器控制器执行的确定第一代码路径是否与至少一个第一参考代码路径匹配的方法的示例的图;
图8A和图8B是示出根据示例实施例的存储器控制器的框图;
图9是根据示例实施例的存储器控制器通过其来生成和存储代码路径字典的方法的流程图;
图10是示出根据示例实施例的存储器控制器的框图;
图11是根据示例实施例的操作存储器控制器的方法的流程图;
图12是示出根据示例实施例的存储器控制器的操作的流程图;以及
图13是示出根据示例实施例的SSD的框图。
具体实施方式
图1是示出根据示例实施例的存储系统的框图。
参照图1,存储系统10可以包括存储装置100和主机200,并且存储装置100可以包括存储器控制器110和非易失性存储器(NVM)120。存储器控制器110可以包括异常操作确定器DET、历史缓冲器HB和存储器MEM。
主机200可指能够处理数据的数据处理装置,例如,中央处理单元(CPU)、处理器、微处理器、应用处理器(AP)等。主机200可以执行操作系统(OS)和/或各种应用。例如,主机200可以被实施为AP或片上系统(SoC)。此外,例如,主机200可以被实施为集成电路、母板或数据库服务器,但不限于此。
主机200可以通过各种接口与存储装置100通信。主机200可以向存储装置100发送写入请求或读取请求,并且存储装置100可以响应于写入请求或读取请求而向NVM 120写入数据或从NVM 120读取数据。
NVM 120可以包括多个存储器块BLK,例如,第一存储器块至第z存储器块(z是等于或大于2的整数)。存储器块BLK可以各自包括多个页,并且这些页可以各自包括多个存储器单元。例如,存储器块可以是擦除单位,并且页可以是写入/读取单位。在一些示例实施例中,存储器块BLK可以包括多个存储器芯片、多个管芯或多个平面。在示例实施例中,NVM120可以包括闪存装置,例如NAND闪存装置。然而,示例实施例不限于此,并且NVM 120可以包括诸如电阻RAM(ReRAM)、相变RAM(PRAM)和磁RAM(MRAM)的电阻存储器装置。在下文中,NVM 120将被描述为NAND闪存装置。
存储器块BLK可以包括2维(2D)存储器单元阵列或3维(3D)存储器单元阵列。在示例实施例中,存储器块BLK中的至少一个存储器块可以包括3D存储器单元阵列。3D存储器单元阵列包括被布置在硅衬底上并具有与存储器单元的操作相关的有源区或电路的存储器单元的阵列,并且3D存储器单元阵列单片地形成在衬底上或单片地形成在形成在衬底中的电路的至少一个物理水平高度中。术语“单片”表示构成3D存储器单元阵列的水平高度的层直接堆叠在3D存储器单元阵列的较低水平高度的层上。在示例实施例中,3D存储器单元阵列包括在竖直方向上布置的竖直NAND串,使得至少一个存储器单元在另一存储器单元的顶部上。该至少一个存储器单元可以包括电荷俘获层。
美国专利NO.7,679,133、NO.8,553,466、NO.8,654,587和NO.8,559,235以及美国专利申请公开NO.2011/0233648(其公开内容通过引用并入本文)公开了关于3D存储器单元阵列的适当构造,其中设置了多个水平高度并且在这些水平高度之间共享字线和/或位线。
存储器控制器110可以控制存储装置100的所有操作,将从主机200接收的数据存储在NVM 120中,并且从NVM 120读取数据并将数据提供给主机200。
存储器控制器110可以控制NVM 120。存储器控制器110可以对NVM 120执行各种操作,诸如,写入操作、读取操作和擦除操作。在这种情况下,当存储器控制器110对非易失性存储器执行写入操作、读取操作或擦除操作时,存储器控制器110控制NVM 120执行写入操作、读取操作或擦除操作。例如,当从主机200接收到数据和逻辑地址以及写入请求时,存储器控制器110可以将逻辑地址转换为表示NVM 120中的物理区域的物理地址,并且将物理地址、写入命令和数据提供给NVM 120,从而控制NVM 120存储数据,即,将数据编程到存储器单元阵列。
存储器控制器110可以执行用于管理NVM 120的操作(例如,垃圾收集和损耗均衡),并且还可以执行用于检测和恢复写入到NVM 120的数据的错误的操作(例如,错误检查和校正(ECC)功能)。上述操作可以包括写入操作、读取操作和擦除操作的组合。
异常操作确定器DET可以验证由存储器控制器110执行的操作是否被异常执行。例如,异常操作确定器DET可以确定被执行的操作是异常操作还是正常操作。
可以通过执行包括多段代码(pieces of codes)的固件或软件来执行由存储器控制器110执行的操作,例如,写入操作、读取操作和擦除操作。异常操作确定器DET可基于根据在执行操作时所执行的多段代码而生成的代码路径(即,与被执行的操作相对应的代码路径)来确定操作是异常操作还是正常操作。
存储器MEM可以存储构成操作的多段代码CDS以及在执行操作时生成的数据,例如,元数据MTDT。
代码CDS可以构成写入操作、读取操作和擦除操作中的至少一个。在示例实施例中,各自包括多段代码CDS的多个代码集可以构成写入操作、读取操作和擦除操作中的每一个。
元数据MTDT可以包括用于NVM 120的管理的各种数据,例如,逻辑地址和物理地址之间的映射数据,以及用于存储器块BLK的写入和擦除计数。存储器控制器110可以基于元数据MTDT对NVM 120执行操作,并且当元数据MTDT由于执行操作而改变时,存储器控制器110可以更新存储器MEM中的元数据MTDT。
存储器MEM可以被实施为诸如静态随机存取存储器(SRAM)和动态RAM(DRAM)的易失性存储器,或者诸如电阻RAM(ReRAM)、相变RAM(PRAM)和磁RAM(MRAM)的电阻存储器。
尽管图1示出代码CDS和元数据MTDT被存储在存储器控制器110中包括的一个存储器MEM中,但是示例实施例不限于此。在示例实施例中,存储器MEM可以包括两个或更多个RAM,并且两个或更多个RAM中的至少一个可以设置在存储器控制器110内,并且两个或更多个RAM中的至少另一个可以设置在存储器控制器110外部并且连接到存储器控制器110。代码CDS和元数据MTDT可以分别存储在两个或更多个RAM中。
代码CDS和元数据MTDT可以存储在NVM 120中,并且可以在操作存储装置100时加载到存储器MEM中。例如,当启动存储装置100时,可以将代码CDS中的至少一个以及元数据MTDT的至少一部分加载到存储器MEM。另外,被改变的元数据MTDT可以被周期性地或非周期性地存储在NVM 120中。
可以用SRAM、DRAM和各种其它RAM中的一种来实施历史缓冲器HB,并且历史缓冲器HB可以存储与由存储器控制器110执行的操作相对应的代码路径。存储器控制器110可以执行多个操作,并且历史缓冲器HB可以存储分别对应于这些操作的多个代码路径。
代码路径可以包括与在存储器控制器110执行操作时执行的每段代码相对应的代码地址。代码地址可以指示存储器MEM中存储每段代码的位置。例如,代码地址可以包括存储器MEM的地址。然而,示例实施例不限于此,并且代码地址可以包括设置在存储器控制器110中的硬件功能块的地址或设置在硬件功能块中的寄存器的地址。例如,存储器控制器110可以包括被实施为硬件组件的功能块,诸如,主机接口(图8A中的113)、NVM接口(图8A中的114)、直接存储器存取(DMA)控制器、和错误检查和校正码(ECC)电路,其中,代码地址可以是每个功能块的地址。例如,代码地址可以是存储器控制器110的系统地址。
在示例实施例中,代码路径还可以包括数据地址及其数据值,在执行操作时生成或改变的数据(例如,元数据MTDT)被存储在该数据地址处。数据地址可以是存储器控制器110的系统地址。例如,数据地址可以包括存储器MEM的地址、硬件功能块的地址、或设置在硬件功能块中的寄存器的地址。数据值可以存储在与数据地址相对应的区域(例如,存储器MEM)中。此外,数据值可以存储在与数据地址相对应的硬件功能块或硬件功能块的寄存器中,并且数据值可以在硬件功能块中使用。
图2A和图2B是示出其中多段代码和元数据被存储在图1的存储器中的示例的图。
参照图2A,存储器MEM可以包括多个区域,例如,第一区域AR1和第二区域AR2。代码CDS可以存储在第一区域AR1中,并且元数据MTDT可以存储在第二区域AR2中。第一区域AR1可以包括多个地址(例如,代码地址A100至A999),并且代码CDS(例如,代码CD0至CD999)可以分别存储在与代码地址相对应的位置。这里,地址可以是可以被存储器控制器110的处理器(图8A中的111)所识别的系统地址,例如,存储器MEM的地址。
第二区域AR2可以包括多个地址(例如,数据地址A1000至A4999),并且构成元数据MTDT的多个数据值(例如,数据值DV0至DV4999)可以分别存储在与数据地址相对应的位置。在下文中,指示存储代码的位置的地址将被称为代码地址CA,而指示存储数据的位置的地址将被称为数据地址DA。
参照图2B,存储器MEM可以包括物理上彼此区分的第一存储器MEM1和第二存储器MEM2。代码CDS可以存储在第一存储器MEM1中,并且元数据MTDT可以存储在第二存储器MEM2中。例如,第一存储器MEM1可以是设置在图1中的存储器控制器110中的SRAM,并且第二存储器MEM2可以被实施为连接到存储器控制器110的DRAM。
参照图1,存储器控制器110可以对NVM 120执行第一操作(例如,写入操作、读取操作和擦除操作中的一个),可以参考与构成第一操作的多段第一代码相对应的多个第一代码地址,并且可以将在执行第一操作时所参考的第一代码地址存储在历史缓冲器HB中作为关于第一操作的代码路径。这里,术语“第一”仅用于将特定操作与其它操作区分开来,而不指示执行操作的顺序。
例如,当存储器控制器110执行写入操作时,存储器控制器110中的处理器可以访问存储器MEM并执行构成写入操作的多段写入代码。此时,可以将与多段写入代码相对应的多个写入代码地址存储在处理器中的多个寄存器中,并且处理器可以基于存储在寄存器中的写入代码地址来访问存储器MEM以读出并执行多段写入代码。存储器控制器110可以将被参考用于访问与写入操作相关的多段写入代码的写入代码地址作为代码路径存储在历史缓冲器HB中。在执行写入操作时或在执行写入操作之后,存储器控制器110可以将代码路径存储在历史缓冲器HB中。可以按照写入代码地址被参考的顺序(即,执行代码的顺序)来存储写入代码地址。
图3是示出存储在图1的历史缓冲器中的代码路径的示例的图。
参照图3,分别与写入操作、读取操作和擦除操作相对应的代码路径(例如,写入代码路径CDP_W、读取代码路径CDP_R和擦除代码路径CDP_E)可以存储在历史缓冲器(图1的HB)中。
写入代码路径CDP_W、读取代码路径CDP_R和擦除代码路径CDP_E可以各自包括多个代码地址CA,其中,可以按照在存储器控制器(图1的110)执行相应操作时所参考的顺序来对代码地址CA进行排序。在写入操作或擦除操作的情况下,可以在正在执行写入操作或擦除操作的同时改变元数据。例如,可以更新元数据中包括的一些数据,或者可以将数据添加到元数据。在下文中,被部分更新的元数据或被添加数据的元数据将被称为被改变的元数据。写入代码路径CDP_W和擦除代码路径CDP_E可以各自包括存储被改变的元数据的数据地址DA,并且还可以包括存储在数据地址DA处的数据值DV。如上参照图1所述,代码地址CA和数据地址DA是存储器控制器110的系统地址,并且可以包括存储器MEM的地址、硬件功能块的地址、或者设置在硬件功能块中的寄存器的地址。
例如,写入代码路径CDP_W可以包括在执行写入操作时所参考的多个代码地址CA,例如,A100、A103、A104、...、A201、A202和A203。另外,写入代码路径CDP_W可以包括数据地址DA A1000和数据值DV1',在该数据地址DA A1000处存储在执行与代码地址CA A201相对应的写入代码时生成或改变的数据(例如,元数据),并且写入代码路径CDP_W可以包括数据地址DA A1001和数据值DV2',在该数据地址DA A1001处存储在执行与代码地址CA A202相对应的写入代码时生成或改变的数据。
读取代码路径CDP_R可以包括在执行读取操作时所参考的多个代码地址CA,例如,A310、A311、A312、...A318和A319。
擦除代码路径CDP_E可以包括在执行擦除操作时所参考的多个代码地址CA,例如,A500、A501、A600、...、A700、A701和A702。另外,擦除代码路径CDP_E可以包括数据地址DAA1002和数据值DV3',在该数据地址DA A1002处存储在执行与代码地址CA A702相对应的擦除代码时生成或改变的数据。
每当存储器控制器110执行例如写入操作、读取操作和擦除操作的操作时,与该操作相对应的代码路径可以被存储在历史缓冲器HB中。
参照图1,如上所述,基于存储在历史缓冲器HB中的代码路径,异常操作确定器DET可以确定与该代码路径相对应的操作是否被异常执行。异常操作确定器DET通过基于多个参考代码路径确定代码路径是正常还是异常(即,该代码路径的完整性),来确定与该代码路径相对应的操作是异常操作还是正常操作。当代码路径具有故障时,异常操作确定器DET可以确定相应的操作是异常操作。当代码路径具有完整性时,异常操作确定器DET可以确定相应的操作是正常操作。
参考代码路径是与被确定为是正常执行的操作的操作相对应的代码路径,并且可以保证其完整性。参考代码路径可以具有与上面参照图3描述的写入代码路径CDP_W、读取代码路径CDP_R和擦除代码路径CDP_E基本相同的结构。
在示例实施例中,在存储装置100的制造阶段中,存储器控制器110可以执行诸如写入操作、读取操作和擦除操作的多个操作,可以获得分别与被确定为正常执行的操作的多个操作相对应的多个代码路径,并且代码路径可以被用作多个参考代码路径。
在示例实施例中,异常操作确定器DET可以通过将与确定目标(即,要被确定操作是否被异常执行的操作)相对应的代码路径与参考代码路径进行比较来确定代码路径的完整性。
在示例实施例中,可基于多个参考代码路径来预先生成用于确定代码路径的完整性的确定公式(或确定算法),并且异常操作确定器DET可通过将代码路径应用于确定公式来确定代码路径的完整性。例如,可以通过基于多个参考代码路径的机器学习来生成确定公式。
异常操作确定器DET可以在每次执行操作时基于代码路径确定操作是异常操作还是正常操作,或者在执行多个操作之后,可以基于多个代码路径确定操作是异常操作还是正常操作。例如,异常操作确定器DET可以在执行多个操作中的每一个时验证操作,或在执行操作之后验证操作中的每一个。
在示例实施例中,当等于或大于特定数量的多个代码路径被存储在历史缓冲器HB中(即,历史缓冲器HB的剩余存储容量小于或等于参考容量)时,异常操作确定器DET可以确定存储在历史缓冲器HB中的多个代码路径中的每一个的完整性,从而验证分别与代码路径相对应的多个操作。在示例实施例中,在元数据MTDT需要被存储在NVM120中的时间点处,异常操作确定器DET可以基于存储在历史缓冲器HB中的多个代码路径,来验证直到该时间点所执行的多个操作中的每一个。
由于工艺精化(例如,装置尺寸的减小)和较低的功耗(例如,电压电平的减小),存储器损坏可能发生在存储在存储器MEM或多个寄存器中的数据中,因此操作可能被存储器控制器110异常地执行。例如,存储在寄存器中的代码地址可能被无意地改变,或者存储在存储器MEM中的代码的代码值可能被无意地改变。因此,操作可能由于执行与不需要的代码地址相对应的代码或执行具有被改变的代码值的代码而被异常执行。此外,当操作是写入操作或擦除操作并且通过该操作改变的元数据被存储在存储器MEM中时,指示存储元数据的位置的数据地址可能不正确或者可能存储不正确的数据值。
以这种方式,当重复执行异常操作时,在存储装置100中可能发生致命缺陷。例如,当由于执行异常操作而在元数据中发生缺陷并且NVM 120基于有缺陷的元数据被控制时,在数据被存储在NVM 120中或从NVM 120读取数据时可能发生不可恢复的错误。
因此,为了防止执行异常操作,在执行操作期间或之后,根据示例实施例的存储器控制器110将与操作相对应的代码路径存储在历史缓冲器HB中,并且可以在执行操作之后或在预定时间点处基于代码路径来验证操作是被异常执行还是被正常执行。例如,存储器控制器110可以基于代码路径确定相应的操作是异常操作还是正常操作。当在存储在历史缓冲器HB中的多个代码路径中的至少一个代码路径中存在缺陷时,存储器控制器110可确定与该至少一个代码路径相对应的操作是异常操作,并执行用于该操作或存储装置100的恢复操作,从而防止在存储装置100中发生致命缺陷。
图4是示出根据示例实施例的存储器控制器的操作的流程图。图4的方法可以由图1的存储器控制器110执行,并且以上参照图1至图3给出的描述还可以应用于本示例实施例的操作存储器控制器110的方法。
参照图1和图4,存储器控制器110可以对NVM 120执行第一操作(操作S110)。例如,第一操作可以是写入操作、读取操作和擦除操作中的一个。然而,示例实施例不限于此,并且第一操作可以是由存储器控制器110执行以控制NVM 120的各种操作之一。
存储器控制器110可以将与在执行第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器HB中(操作S120)。例如,当存储器控制器110执行写入操作时,存储器控制器110可以将与在执行写入操作时执行的多段写入代码相对应的写入代码路径存储在历史缓冲器HB中。如上所述,写入代码路径可以包括与写入代码相对应的多个写入代码地址,并且当元数据MTDT改变时,写入代码路径还可以包括存储被改变的元数据MTDT的数据地址和被改变的数据值。
存储器控制器110可以基于第一代码路径来验证第一操作(操作S130)。例如,存储器控制器110可以基于第一代码路径确定第一操作是异常操作还是正常操作。例如,异常操作确定器DET可以基于多个参考代码路径来确定第一代码路径的完整性,从而验证第一操作。
可以预先获得用于多个正常执行的操作的多个代码路径作为多个参考代码路径,并且存储器控制器110可以通过将第一代码路径与参考代码路径进行比较或者通过将第一代码路径作为输入应用于基于代码路径生成的确定公式来确定第一操作是异常操作还是正常操作。
当确定第一操作是异常操作时,存储器控制器110可对存储装置100或第一操作执行恢复操作(操作S140)。在示例实施例中,可以根据来自主机200的请求执行第一操作,并且存储器控制器110可以将指示第一操作被异常执行的响应发送到主机200。主机200可以向存储器控制器110发送对于第一操作的重试请求,并且存储器控制器110可以再次执行第一操作。在示例实施例中,存储器控制器110可以通过执行断电序列来控制存储装置100被重新启动。因此,可以解决软错误,并且存储器控制器110可以正常操作。
图5A是示出根据示例实施例的存储器控制器的框图,并且图5B是示出图5A的代码路径字典的实施示例的图。
参照图5A,存储器控制器110A可以包括异常操作确定器DET、历史缓冲器HB、存储器MEM和代码路径字典DIC。因为异常操作确定器DET、历史缓冲器HB和存储器MEM已经在上面参照图1进行了描述,所以将省略与上面已经给出的那些相同的描述。
代码路径字典DIC可包括多个参考代码路径。参考代码路径可以各自是与在执行被确定为是正常执行的操作的操作(即,正常操作)时执行的多段代码相对应的代码路径。可以在用户使用存储装置(图1中的100)之前预先获得参考代码路径。例如,参考代码路径可以在存储装置100的制造阶段获得,并且包括参考代码路径的代码路径字典DIC可以存储在NVM(图1中的120)中。此后,当存储装置100被启动时,代码路径字典DIC可被加载到存储器控制器110。例如,代码路径字典DIC可被加载到设置在存储器控制器110中的单独的存储区域,或者可被加载到设置在存储器控制器110内部或外部的存储器MEM。
如图5B所示,代码路径字典DIC可包括用于多个操作(例如,写入操作、读取操作和擦除操作)中的每一个的多个参考代码路径。例如,代码路径字典DIC可以包括用于写入操作的第一写入参考代码路径RCDP_W1、第二写入参考代码路径RCDP_W2和第三写入参考代码路径RCDP_W3,用于读取操作的第一读取参考代码路径RCDP_R1、第二读取参考代码路径RCDP_R2和第三读取参考代码路径RCDP_R3,以及用于擦除操作的第一擦除参考代码路径RCDP_E1、第二擦除参考代码路径RCDP_E2和第三擦除参考代码路径RCDP_E3。然而,这是示例,并且代码路径字典DIC可包括更大数量的写入参考代码路径、读取参考代码路径和擦除参考代码路径,其中,数量可以变化。
在示例实施例中,代码路径字典DIC可包括为写入操作和擦除操作设置的数据地址范围和数据值范围。例如,可以基于第一写入参考代码路径RCDP_W1、第二写入参考代码路径RCDP_W2和第三写入参考代码路径RCDP_W3中包括的多个数据地址和多个数据值来确定用于写入操作的数据地址范围和数据值范围。例如,可以通过量化多个数据地址和多个数据值来确定数据地址范围和数据值的范围,并且可以基于第一擦除参考代码路径RCDP_E1、第二擦除参考代码路径RCDP_E2和第三擦除参考代码路径RCDP_E3中包括的多个数据地址和多个数据值来确定用于擦除操作的数据地址范围和数据值范围。
参照图5A,异常操作确定器DET可将存储在历史缓冲器HB中的代码路径与存储在代码路径字典DIC中的多个参考代码路径进行比较,并基于比较结果确定与代码路径相对应的操作是异常操作还是正常操作。在示例实施例中,当存储在历史缓冲器HB中的代码路径与存储在代码路径字典DIC中的多个参考代码路径中的至少一个相同时,异常操作确定器DET可以确定操作是正常操作。异常操作确定器DET可以基于代码路径中包括的代码地址和参考代码路径中的至少一个中包括的代码地址以及代码地址的顺序来确定相同性。此外,当操作是写入操作或擦除操作时,异常操作确定器DET可基于代码路径中包括的数据地址是否在存储(预设)在代码路径字典DIC中的用于写入操作或擦除操作的数据地址范围内以及代码路径中包括的数据值是否在存储(预设)在代码路径字典DIC中的用于写入操作或擦除操作的数据值范围内来确定相同性。当代码路径中包括的代码地址和参考代码路径中的至少一个中包括的代码地址以及代码地址的顺序不相同时,异常操作确定器DET可确定操作是异常操作。此外,关于写入操作或擦除操作,当代码路径中包括的数据地址不在设定的数据地址范围内或者数据值不在设定的数据值范围内时,可以确定与代码路径相对应的操作是异常操作。
图6是根据示例实施例的由存储器控制器执行的方法的流程图。图6中的方法可确定由图5A的存储器控制器110a执行的特定操作是异常操作还是正常操作。
参照图6,存储器控制器110a可以对NVM(图1中的120)执行第一操作(操作S210),并且将与在执行第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器(图1的HB)中(操作S220)。例如,第一操作可以是写入操作、读取操作和擦除操作中的一个。第一代码路径可包括在执行第一操作时执行的多段代码的多个代码地址,并且还可包括存储在执行第一操作时改变的元数据的数据地址和数据值。
存储器控制器110a可将第一代码路径与对应于第一操作的多个第一参考代码路径进行比较(操作S230)。例如,异常操作确定器DET可将第一代码路径与代码路径字典DIC中包括的多个参考代码路径中的与第一操作相关的第一参考代码路径进行比较。异常操作确定器DET可将第一代码路径中包括的多个代码地址及其排序顺序与第一参考代码路径的每一个中包括的多个代码地址及其排序顺序进行比较。当第一操作是写入操作或擦除操作时,异常操作确定器DET可将第一代码路径中包括的数据地址和数据值与第一参考代码路径中包括的数据地址和数据值进行比较。在示例实施例中,代码路径字典DIC可包括用于第一操作的第一数据地址范围和第一数据值范围,并且异常操作确定器DET可确定第一代码路径中包括的数据地址是否在第一数据地址范围内以及第一代码路径中包括的数据值是否在第一数据值范围内。
存储器控制器110a可基于操作S230中的比较的结果来确定第一代码路径是否与参考代码路径中的至少一个参考代码路径匹配(操作S240)。例如,异常操作确定器DET可以确定第一代码路径是否与至少一个第一参考代码路径匹配。例如,异常操作确定器DET可以确定第一代码路径是否相对于参考代码路径中的至少一个参考代码路径具有相同性。当第一代码路径不与第一参考代码路径中的任何一个匹配(或者相对于第一参考代码路径中的任何一个不具有相同性)时,存储器控制器110a可以确定第一代码路径有缺陷并且第一操作是异常操作(操作S250)。当第一代码路径与第一参考代码路径中的至少一个匹配时,存储器控制器110a可以确定第一代码路径具有完整性并且第一操作是正常操作(操作S260)。
图7A和图7B是示出根据示例实施例的由存储器控制器执行的确定第一代码路径是否与至少一个第一参考代码路径匹配的方法的示例的图。
图7A和图7B的方法可以由异常操作确定器(图1中的DET)执行。将作为示例描述将写入代码路径CDP_W与多个写入参考代码路径中的一个写入参考代码路径RCDP_W进行比较的方法。
参照图7A,写入代码路径CDP_W可以包括多个代码地址CA A100至A203、数据地址DA A1000和A1001、以及数据值DV DV3'和DV4'。可以根据执行相应写入代码路径的顺序来对写入代码路径CDP_W的代码地址CA A100至A203进行排序。
写入参考代码路径RCDP_W可以包括多个代码地址CA A100至A203、数据地址DAA1000和A1001、以及数据值DV DV3'和DV4'。
当将写入代码路径CDP_W与写入参考代码路径RCDP_W进行比较时,写入代码路径CDP_W中包括的代码地址CA及其排序顺序与写入参考代码路径RCDP_W中包括的代码地址CA及其排序顺序相同。此外,写入代码路径CDP_W中包括的数据地址DA和数据值DV与写入参考代码路径RCDP_W中包括的数据地址DA和数据值DV相同。因此,可以确定写入代码路径CDP_W与写入参考代码路径RCDP_W匹配。
参照图7B,写入代码路径CDP_W可以包括多个代码地址CA A100至A203、数据地址DA A1000和A2001、以及数据值DV DV3'和DV4'。可以根据执行相应写入代码路径的顺序来对写入代码路径CDP_W的代码地址CA A100至A203进行排序。写入参考代码路径RCDP_W可以包括多个代码地址CA A100至A203、数据地址DA A1000和A1001、以及数据值DV DV1'和DV2'。
当将写入代码路径CDP_W与写入参考代码路径RCDP_W进行比较时,写入代码路径CDP_W中包括的代码地址CA及其排序顺序与写入参考代码路径RCDP_W中包括的代码地址CA及其排序顺序相同。然而,作为写入代码路径CDP_W中包括的数据地址DA中的一个的数据地址DA A2001不同于写入参考代码路径RCDP_W中包括的数据地址DA A1000和A1001。此外,在示例实施例中,当基于写入参考代码路径的数据地址DA确定的数据地址范围(例如,存储在历史缓冲器HB中的数据地址范围)被设定为从A1000至A1999时,写入代码路径CDP_W中包括的数据地址DA A2001未被包括在该数据地址范围中。因此,可以确定写入代码路径CDP_W与写入参考代码路径RCDP_W不匹配。
在示例实施例中,例如,即使当写入代码路径CDP_W中包括的数据地址DA与写入参考代码路径RCDP_W中包括的数据地址DA(例如,A1000和A1001)相同或者在从A1000至A1999的地址范围内时,当写入代码路径CDP_W的数据值DV(例如,DV3'和DV4')不在存储在历史缓冲器HB中的数据值范围内时,也可以确定写入代码路径CDP_W与写入参考代码路径RCDP_W不匹配。
图8A和图8B是示出根据示例实施例的存储器控制器的框图。
参照图1和图8A,存储器控制器110可以包括处理器111、RAM 112、主机接口113和NVM接口114,它们可以通过总线115彼此通信。存储器控制器110还可以包括其它组件,例如,DMA控制器、ECC电路等。
处理器111可以包括中央处理单元或微处理器,并且可以控制存储器控制器110的所有操作。在示例实施例中,处理器111可以被实施为多核处理器,例如,双核处理器或四核处理器。
RAM 112在处理器111的控制下操作,并且可以用作操作存储器、缓冲存储器、高速缓冲存储器等。例如,可以利用诸如DRAM和SRAM的易失性存储器或诸如PRAM、FRAM和ReRAM的非易失性存储器来实施RAM 112。例如,RAM 112可以存储可以由处理器111执行的闪存转换层(FTL)代码。例如,在启动存储装置100时,可以将FTL代码从NVM 120加载到存储器112。
异常操作确定器DET、历史缓冲器HB和元数据MTDT可以被加载到RAM 112。在示例实施例中,代码路径字典DIC可被加载到RAM 112。如参照图5A所述,代码路径字典DIC可包括多个参考代码路径。
异常操作确定器DET可以被实施为固件或软件,并且可以被加载到RAM 112。然而,示例实施例不限于此。在一些示例实施例中,异常操作确定器DET可以被实施为硬件,或者可以被设置在RAM 112外部。在启动存储装置100时,可以将元数据MTDT和代码路径字典DIC从NVM 120加载到存储器112。另外,元数据MTDT可以在存储器控制器110操作时被改变,并且被改变的元数据MTDT可以周期性地或非周期性地存储在NVM 120中。
主机接口113可以提供主机200和存储器控制器110之间的接口。例如,主机接口113可以提供基于以下各项的接口:通用串行总线(USB)、MMC、PCI快速(PCI-E)、AT附接(ATA)、串行AT附接(SATA)、并行AT附接(PATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、增强型小盘接口(ESDI)和集成驱动电子装置(IDE)。
NVM接口114可以提供存储器控制器110和NVM 120之间的接口。例如,可以通过NVM接口114在存储器控制器110和NVM 120之间发送和接收元数据MTDT、写入数据和读取数据。在示例实施例中,NVM接口114的数量可以对应于存储装置100中包括的NVM芯片的数量或者存储器控制器110和NVM 120之间的通道的数量。
参照图1和图8B,存储器控制器110'可以包括处理器111、RAM 112a、主机接口113、NVM接口114和DRAM接口(I/F)116,它们可以通过总线115彼此通信。由于存储器控制器110'对应于图8A的存储器控制器110的修改示例,所以将省略与上面已经给出的描述相同的描述。
根据示例实施例,历史缓冲器HB和元数据MTDT可以被加载到DRAM 130,并且代码路径字典DIC也可以被加载到DRAM 130。DRAM接口116可以提供存储器控制器110'和DRAM130之间的接口。例如,可以通过DRAM接口116在存储器控制器110'和DRAM 130之间发送和接收历史缓冲器HB、元数据MTDT和代码路径字典DIC中包括的一些数据。
图9是根据示例实施例的由存储器控制器执行的生成和存储代码路径字典的方法的流程图。
参照图1和图9,存储器控制器110可以对NVM 120执行多个操作(操作S11)。例如,操作可以各自是写入操作、读取操作和擦除操作之一。然而,示例实施例不限于此,并且操作可以各自是由存储器控制器110执行以控制NVM 120的各种操作中的一种。
存储器控制器110可以获得与操作中的多个正常操作相对应的多个参考代码路径(操作S12)。存储器控制器110可以获得与操作中的被确定为正常执行的操作的多个正常操作相对应的多个代码路径,作为将被用于稍后确定异常操作或正常操作的多个参考代码路径。存储器控制器110可将被参考以访问与正常操作相关的多段代码的多个代码地址作为参考代码路径存储在内部或外部存储区域(例如,历史缓冲器HB)中。因此,可以获得与多个正常操作相对应的多个参考代码路径。在示例实施例中,可以在制造阶段中实验地确定用于操作的多个正常操作,或者可以在执行操作之后基于来自主机200的响应来确定用于操作的多个正常操作。
存储器控制器110可基于所获得的参考代码路径生成代码路径字典(操作S13),并且存储代码路径字典(操作S14)。例如,存储器控制器110可以通过将参考代码路径转换到数据库中来生成代码路径字典,并且将代码路径字典存储在NVM 120中。
在示例实施例中,可以在存储装置100的制造阶段中执行图9的方法,并且在用户使用存储装置100的阶段中,可以将代码路径字典从NVM 120加载到存储器控制器110中的存储区域。
图10是示出根据示例实施例的存储器控制器的框图。
参照图10,存储器控制器110b可以包括异常操作确定器DET、历史缓冲器HB和存储器MEM。由于已经在上面参照图1描述历史缓冲器HB和存储器MEM,因此将省略与上面已经给出的描述相同的描述。
异常操作确定器DET可以包括确定公式FML,并且通过基于确定公式FML确定代码路径的完整性,可以确定与代码路径相对应的操作是异常操作还是正常操作。
可以基于上述参考代码路径来生成确定公式FML。例如,如上参照图9所述,存储器控制器110b可以获得多个参考代码路径,并且可以基于参考代码路径来生成确定公式FML。在示例实施例中,可以通过机器学习来生成确定公式FML,并且可以将与被确定为正常操作的所有操作相对应的多个参考代码路径用作训练数据。
图11是根据示例实施例的操作存储器控制器的方法的流程图。图11示出了图10的存储器控制器110b通过其来确定异常操作或正常操作的方法。
参照图10和图11,存储器控制器110b可以对NVM(图1中的120)执行第一操作(操作S310),并且将与在执行第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器HB中(操作S320)。
异常操作确定器DET可以基于第一代码路径执行确定公式FML(操作S330)。异常操作确定器DET可以通过使用存储在历史缓冲器HB中的第一代码路径作为输入来执行确定公式FML。
异常操作确定器DET可以基于执行确定公式的结果(即,基于确定公式的输出值是真还是假)来确定第一代码路径的完整性。当输出值为真时,异常操作确定器DET可以确定第一代码路径具有完整性。当输出值为假时,异常操作确定器DET可以确定第一代码路径有缺陷。
当异常操作确定器DET的输出值不为真时,即,当输出值为假时,第一代码路径有缺陷,因此,可以确定第一操作是异常操作(操作S350)。
当异常操作确定器DET的输出值为真时,第一代码路径具有完整性,因此,可以确定第一操作是正常操作(操作S360)。
图12是示出根据示例实施例的存储器控制器的操作的流程图。图12的方法可以由图1的存储器控制器110执行,并且以上参照图1至图11给出的描述还可以应用于本示例实施例的操作存储器控制器110的方法。
参照图1和图12,存储器控制器110可以对NVM 120执行多个操作(操作S410)。例如,操作可以各自是写入操作、读取操作和擦除操作之一。然而,示例实施例不限于此,并且操作可以各自是由存储器控制器110执行以控制NVM 120的各种操作中的一种。
存储器控制器110可以将与在执行操作中的每一个时执行的多段代码相对应的多个代码路径存储在历史缓冲器HB中(操作S420)。存储器控制器110可以将在执行操作中的每一个时相应的代码路径存储在历史缓冲器HB中。因此,多个代码路径可以被存储在历史缓冲器HB中。
存储器控制器110可确定操作是否需要验证(操作S430)。例如,存储器控制器110可确定是否有必要验证在操作S410中执行的操作是正常执行还是异常执行。例如,当存储在历史缓冲器HB中的代码路径的数量等于或大于参考量或者历史缓冲器HB的存储容量的剩余容量小于或等于参考容量时,存储器控制器110可以确定需要验证。
在另一示例中,当需要将被改变的元数据存储在NVM 120中时,存储器控制器110可以确定需要验证操作。当不正确地执行操作中的至少一个时,被改变的元数据可能包括不正确的数据值,并且当包括不正确的数据值的被改变的元数据被存储在NVM 120中并且被连续使用时,存储装置100可能发生故障。因此,存储器控制器110可以确定有必要在需要将被改变的元数据存储在NVM 120中的时间点处验证先前执行的多个操作是否已经被正常地执行或被异常地执行。
当确定不需要验证时,存储器控制器110可以根据操作S410继续对NVM 120执行多个操作,并且根据操作S420将与在执行多个操作中的每一个时的多段代码相对应的代码路径存储在历史缓冲器HB中。
当确定需要验证时,存储器控制器110可以基于存储在历史缓冲器HB中的多个代码路径中的每一个来执行针对操作中的每一个的验证,从而确定操作中的每一个是异常操作还是正常操作(操作S440)。
在示例实施例中,如上参照图6所述,异常操作确定器DET可将多个代码路径中的每一个与代码路径字典中包括的多个参考代码路径进行比较,并基于代码路径中的每一个是否与参考代码路径匹配来确定操作中的每一个是异常操作还是正常操作。
在示例实施例中,如上参照图11所述,异常操作确定器DET可通过使用代码路径中的每一个作为输入来执行确定公式,并基于确定公式的输出值来确定操作中的每一个是异常操作还是正常操作。
当确定操作中的至少一个操作是异常操作时,存储器控制器110可以对存储装置100执行恢复操作(操作S450)。在示例实施例中,存储器控制器110可以通过执行断电序列来控制存储装置100被重新启动。在示例实施例中,存储器控制器110可以通知主机200已经执行了异常操作,并且可以响应于来自主机200的重试请求再次执行操作。
当确定操作是正常操作时,存储器控制器110可以擦除存储在历史缓冲器HB中的与操作相对应的多个代码路径。可替代地,存储器控制器110可将被改变的元数据存储在NVM 120中。
图13是示出根据示例实施例的SSD的框图。
参照图13,SSD系统1000包括主机1100和SSD 1200。SSD 1200可以包括SSD控制器1210,缓冲存储器1300,以及多个NVM装置1220、1230和1240。
SSD控制器1210提供主机1100与SSD 1200之间的物理连接。SSD控制器1210根据主机1100的总线格式来提供主机1100与SSD 1200之间的接口连接。主机1100的总线格式可包括通用串行总线(USB)、小型计算机系统接口(SCSI)、PCI快速、ATA、并行ATA(PATA)、串行ATA(SATA)、串行附接SCSI(SAS)等。
SSD控制器1210可以包括异常操作确定器DET、历史缓冲器HB和存储器MEM。在示例实施例中,历史缓冲器HB可以被实施为存储器MEM的一部分。根据以上参照图1至图12描述的示例实施例的存储器控制器100、100a和100b可以用作SSD控制器1210。
SSD控制器1210可以将用于对NVM装置1220、1230和1240执行的第一操作(例如,写入操作、读取操作和擦除操作之一)的第一代码路径存储在历史缓冲器HB中。构成多个操作的多段代码和元数据可被加载到存储器MEM。第一代码路径可以包括构成第一操作的多个代码路径在存储器MEM中的地址。异常操作确定器DET可基于第一代码路径来验证第一操作是否被正常执行,即,第一操作是异常操作还是正常操作。当确定第一操作是异常操作时,SSD控制器1210可以再次执行第一操作或通过执行SSD 1200的断电序列来控制SSD 1200被重新启动。
缓冲存储器1300可以临时存储从主机1100提供的写入数据或者从NVM装置1220、1230和1240读取的数据。在示例实施例中,历史缓冲器HB可以被实施为缓冲存储器1300的一部分,或者可以将多段代码和元数据中的至少一者加载到缓冲存储器1300。例如,代码和元数据可以存储在NVM装置1220、1230和1240中,代码可以被加载到SSD控制器1210中的存储器MEM,并且元数据可以被加载到缓冲存储器1300。
NVM装置1220、1230和1240被提供为用于SSD 1200的存储介质。例如,NVM装置1220、1230和1240可以被提供为具有大存储容量的NAND型闪存。NVM装置1220、1230和1240通过多个通道CH1、CH2、...、和CHn连接到SSD控制器1210。尽管以上在利用NAND闪存来实施NVM装置1220、1230和1240作为存储介质的假设下给出了描述,但是示例实施例不限于此,也可利用其他NVM来实施NVM装置1220、1230和1240。例如,可以利用PRAM、MRAM、ReRAM、FRAM、异或闪存等来实施NVM装置1220、1230和1240,或者NVM装置1220、1230和1240可以包括不同类型的NVM的组合。
尽管已经具体示出和描述了示例实施例,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以对示例实施例进行形式和细节上的各种改变。

Claims (20)

1.一种操作被配置为控制非易失性存储器的存储器控制器的方法,所述方法包括:
对所述非易失性存储器执行第一操作;
将与在执行所述第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器中;
将所述第一代码路径与同所述第一操作相关的多个参考代码路径进行比较;以及
基于所述比较的结果来识别所述第一操作是否被异常执行。
2.根据权利要求1所述的方法,其中,所述第一代码路径包括分别与所述多段代码相对应的多个代码地址,并且所述多个代码地址根据所述多段代码的执行顺序被排序。
3.根据权利要求1所述的方法,其中,所述识别包括:
识别所述第一代码路径与所述多个参考代码路径中的任何一个不匹配;以及
基于所述第一代码路径与所述多个参考代码路径中的任何一个不匹配,识别所述第一操作被异常执行。
4.根据权利要求1所述的方法,还包括:
在执行所述第一操作之前,获得所述多个参考代码路径;以及
存储所述多个参考代码路径。
5.根据权利要求1所述的方法,其中,所述多个参考代码路径包括对应于多个正常操作的多个代码路径。
6.根据权利要求1所述的方法,其中,所述第一代码路径还包括指示存储在执行所述第一操作时生成的数据的位置的数据地址以及数据值。
7.根据权利要求6所述的方法,其中,所述识别包括:
识别所述第一代码路径与所述多个参考代码路径中的至少一个匹配;
识别所述数据地址和所述数据值在基于所述多个参考代码路径确定的数据地址范围和数据值范围内;以及
基于所述第一代码路径与所述多个参考代码路径中的至少一个匹配、所述数据地址在所述数据地址范围内并且所述数据值在所述数据值范围内,识别所述第一操作被正常执行。
8.根据权利要求1所述的方法,还包括:在所述比较之后改变在执行所述第一操作时存储在所述非易失性存储器中的元数据。
9.根据权利要求1所述的方法,还包括:识别所述历史缓冲器的可用存储容量变得小于或等于参考容量,
其中,基于所述可用存储容量被识别为小于或等于所述参考容量来执行所述比较。
10.根据权利要求1所述的方法,其中,所述第一操作包括写入操作、读取操作和擦除操作中的任何一个或任何组合。
11.一种操作被配置为控制非易失性存储器的存储器控制器的方法,所述方法包括:
对所述非易失性存储器执行第一操作;
将与在执行所述第一操作时执行的多段代码相对应的第一代码路径存储在历史缓冲器中;
基于所述第一代码路径来执行基于与所述第一操作相关的多个正常参考代码路径生成的公式;以及
基于所述公式的输出来识别所述第一操作是否被异常执行。
12.根据权利要求11所述的方法,还包括:
在执行所述第一操作之前,获得与多个正常操作相对应的所述多个正常参考代码路径;以及
通过机器学习基于所述多个正常参考代码路径来生成所述公式。
13.根据权利要求11所述的方法,其中,所述识别包括:
基于所述输出为真,识别所述第一操作被正常执行,以及
基于所述输出为假,识别所述第一操作被异常执行。
14.根据权利要求11所述的方法,其中,所述第一代码路径包括分别与所述多段代码相对应的多个代码地址,并且所述多个代码地址根据所述多段代码的执行顺序被排序。
15.根据权利要求11所述的方法,其中,所述第一代码路径还包括数据地址,所述数据地址指示存储在执行所述多段代码中的至少一段代码时生成的数据的位置。
16.一种存储装置,包括:
非易失性存储器;以及
存储器控制器,其被配置为控制所述非易失性存储器,
其中,所述存储器控制器包括:
历史缓冲器,其被配置为存储分别与对所述非易失性存储器执行的多个操作相对应的多个代码路径;以及
处理器,其被配置为实施异常操作确定器,所述异常操作确定器被配置为基于所述多个代码路径来识别所述多个操作被正常执行还是被异常执行。
17.根据权利要求16所述的存储装置,其中,所述多个代码路径中的每一个包括分别与在执行相应操作时执行的多段代码相对应的多个代码地址,并且
其中,根据所述多段代码的执行顺序对所述多个代码地址进行排序。
18.根据权利要求17所述的存储装置,其中,所述多个代码路径中的至少一个还包括存储在执行相应操作时生成或改变的数据的数据地址和与所述数据相对应的数据值,并且
其中,所述数据地址包括存储器地址、设置在所述存储器控制器中的硬件功能块的地址、和设置在所述硬件功能块中的寄存器的地址中的任何一个或任何组合。
19.根据权利要求17所述的存储装置,其中,所述异常操作确定器还被配置为:将所述第一代码路径与预先获得的多个参考代码路径进行比较,并且基于所述多个参考代码路径中的至少一个与所述第一代码路径匹配,识别所述第一操作被正常执行。
20.根据权利要求17所述的存储装置,其中,所述异常操作确定器还被配置为:将所述第一代码路径提供到基于预先获得的多个参考代码路径生成的确定公式,并且根据所述确定公式的输出来识别所述第一操作是被正常执行还是被异常执行。
CN202110619884.9A 2020-06-05 2021-06-03 存储器控制器及其操作方法和包括其的存储装置 Pending CN113760779A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0068603 2020-06-05
KR1020200068603A KR20210151581A (ko) 2020-06-05 2020-06-05 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치

Publications (1)

Publication Number Publication Date
CN113760779A true CN113760779A (zh) 2021-12-07

Family

ID=74666482

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110619884.9A Pending CN113760779A (zh) 2020-06-05 2021-06-03 存储器控制器及其操作方法和包括其的存储装置

Country Status (4)

Country Link
US (1) US11650873B2 (zh)
EP (1) EP3920033A1 (zh)
KR (1) KR20210151581A (zh)
CN (1) CN113760779A (zh)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159116B2 (en) 1999-12-07 2007-01-02 Blue Spike, Inc. Systems, methods and devices for trusted transactions
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
IL171963A0 (en) 2005-11-14 2006-04-10 Nds Ltd Secure read-write storage device
US7797521B2 (en) 2007-04-12 2010-09-14 International Business Machines Corporation Method, system, and computer program product for path-correlated indirect address predictions
US8141163B2 (en) 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8839431B2 (en) 2008-05-12 2014-09-16 Enpulz, L.L.C. Network browser based virus detection
US8484736B2 (en) 2008-06-06 2013-07-09 Sandisk Il Ltd. Storage device having an anti-malware protection
US9087195B2 (en) 2009-07-10 2015-07-21 Kaspersky Lab Zao Systems and methods for detecting obfuscated malware
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US20120185936A1 (en) * 2011-01-19 2012-07-19 General Electric Company Systems and Methods for Detecting Fraud Associated with Systems Application Processing
US9208317B2 (en) 2013-02-17 2015-12-08 Check Point Software Technologies Ltd. Simultaneous screening of untrusted digital files
WO2014203031A1 (en) * 2013-06-18 2014-12-24 Freescale Semiconductor, Inc. Device and method for executing a program, and method for storing a program
US9317357B2 (en) * 2014-03-20 2016-04-19 International Business Machines Corporation Management of microcode errors in a storage operation
US9626531B2 (en) 2014-11-18 2017-04-18 Intel Corporation Secure control of self-encrypting storage devices
US10387238B2 (en) * 2016-09-22 2019-08-20 Rockwell Automation Technologies, Inc. Industrial control program sequence monitoring
US11449380B2 (en) * 2018-06-06 2022-09-20 Arizona Board Of Regents On Behalf Of Arizona State University Method for detecting and recovery from soft errors in a computing device
KR102564774B1 (ko) * 2018-09-18 2023-08-09 에스케이하이닉스 주식회사 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
KR20200065489A (ko) * 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 데이터 처리 시스템 내 자원 사용에 대응하여 데이터 패스를 동적 할당하는 방법 및 장치

Also Published As

Publication number Publication date
US20210382772A1 (en) 2021-12-09
KR20210151581A (ko) 2021-12-14
EP3920033A1 (en) 2021-12-08
US11650873B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
US10847244B2 (en) Storage device including repairable volatile memory and method of operating the same
CN111506516B (zh) 数据存储装置及数据存储装置的操作方法
US10169289B2 (en) Memory system and method for accelerating boot time
US11520694B2 (en) Data storage device and operating method thereof
US11861209B2 (en) Memory system and method of operating the same
CN110825655A (zh) 存储器件、存取数据的方法及管理数据的方法
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
CN113741798A (zh) 数据存储装置及其操作方法
CN113535460A (zh) 数据存储装置及其操作方法
KR20210108712A (ko) 메모리 시스템 및 그것의 동작방법
KR20210099895A (ko) 메모리 시스템 및 그것의 동작방법
US20210397378A1 (en) Storage device and operating method thereof
CN110968473B (zh) 存储器控制器和包括存储器控制器的存储装置
CN112540869A (zh) 存储器控制器、存储装置和存储装置的操作方法
EP3920033A1 (en) Memory controller, method of operating the memory controller, and storage device including memory controller
US11416163B2 (en) Systems and methods for dynamic logical block address distribution between multicores
US20210249080A1 (en) Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder
CN115114178A (zh) 存储器系统及其操作方法
KR20220084662A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN113467708A (zh) 电子装置、数据存储装置及其操作方法
CN112084118A (zh) 数据存储装置及其操作方法
US11646091B2 (en) System for outputting test data from multiple cores and method thereof
US11829228B2 (en) Storage devices of performing metadata management and methods of operating the same
US11954347B2 (en) Memory system and operating method thereof
KR20240064318A (ko) 스토리지 장치 및 이의 동작 방법

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