KR102175884B1 - 에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러 - Google Patents

에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러 Download PDF

Info

Publication number
KR102175884B1
KR102175884B1 KR1020190119680A KR20190119680A KR102175884B1 KR 102175884 B1 KR102175884 B1 KR 102175884B1 KR 1020190119680 A KR1020190119680 A KR 1020190119680A KR 20190119680 A KR20190119680 A KR 20190119680A KR 102175884 B1 KR102175884 B1 KR 102175884B1
Authority
KR
South Korea
Prior art keywords
data
controller
cache
memory
storage device
Prior art date
Application number
KR1020190119680A
Other languages
English (en)
Other versions
KR20200038857A (ko
Inventor
체-밍 구오
옌-팅 예
Original Assignee
실리콘 모션 인코포레이티드
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
Priority claimed from TW108116832A external-priority patent/TWI684988B/zh
Application filed by 실리콘 모션 인코포레이티드 filed Critical 실리콘 모션 인코포레이티드
Publication of KR20200038857A publication Critical patent/KR20200038857A/ko
Application granted granted Critical
Publication of KR102175884B1 publication Critical patent/KR102175884B1/ko

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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • 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
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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/0793Remedial or corrective actions
    • 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/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
    • G06F11/1056Updating check bits on partial write, i.e. read/modify/write
    • 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/1068Adding 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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
    • 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/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
    • 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
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System (AREA)

Abstract

본 발명은 에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러를 제공한다. 상기 에러 핸들링 방법은 에러 핸들링 프로그램을 ECC 보호 기능을 가진 버퍼 메모리에 업로드하는 단계; 적어도 하나의 에러에 따라, 현재 절차의 실행을 중단하고, 인터럽트 서비스를 활성화시키는 단계; 상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하는 단계; 전송 인터페이스 회로를 비활성화시키는 단계; 적어도 하나의 하드웨어 엔진 및 비휘발성 메모리 소자를 리셋하는 단계; 상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 비휘발성 메모리 소자에 프로그래밍하여, 데이터 복구를 진행하는 단계; 및 워치도그 모듈과 상기 전송 인터페이스 회로를 활성화시켜 호스트 디바이스와 재링크하여, 소프트 리셋을 완료하여, 상기 데이터 저장장치가 다시 정상적으로 동작하도록 하는 단계를 포함한다.

Description

에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러{ERROR HANDLING METHOD, ASSOCIATED DATA STORAGE DEVICE AND CONTROLLER THEREOF}
본 발명은 플래시 메모리(Flash memory)의 액세스(access)에 관한 것으로, 특히 에러 핸들링(error handling) 방법 및 관련된 데이터 저장장치 및 그 컨트롤러에 관한 것이다.
플래시 메모리는 각종 휴대용 또는 비휴대용 데이터 저장장치[예를 들면 SD/MMC, CF, MS, XD 또는 UFS 표준에 부합하는 메모리 카드; 또 예를 들면 SSD(solid state disk); 또 예를 들면 UFS 또는 EMMC 규격에 부합하는 내장형(embedded) 저장장치]에 광범위하게 응용될 수 있다. 통용되는 NAND형 플래시 메모리의 경우, 초기에는 SLC (single level cell), MLC(multiple level cell) 등 유형의 플래시 메모리가 존재했다. 메모리 기술은 끊임없이 발전했으므로, 최신의 데이터 저장장치 제품은 TLC(triple level cell) 플래시 메모리, 심지어는 QLC(quadruple level cell) 플래시 메모리를 이용할 수 있다. 데이터 저장장치의 플래시 메모리에 대한 액세스 제어가 관련 규범에 부합할 수 있도록 보장하기 위해, 플래시 메모리의 컨트롤러는 일반적으로 관리 매커니즘을 일부 구비하여 그 내부 동작을 적절하게 관리하도록 한다.
관련 기술에 따르면, 이러한 관리 매커니즘을 구비한 데이터 저장장치는 여전히 문제점이 있다. 예를 들면, 반도체 공정의 소자 밀도가 높아질수록, 소프트 에러의 발생율도 더욱 높아진다. 소프트 에러가 발생하면, 종종 비트 플립(Bit flip)의 에러가 수반된다. 이러한 상황이 더욱 악화되는 것을 방지하기 위해 관련 기술에서는 제안을 일부 제출하였다. 이러한 제안 중 어떤 제안이 채용되든 상관없이, 에러 비트의 수가 어떤 에러 정정 매커니즘이 정정할 수 있는 범위를 초과할 경우, 종래의 아키텍처에서는 전형적으로 데이터 저장장치가 시스템 정지(system halt) 상태로 진입하도록 제어함으로써, 예상치 못한 다양한 에러가 추가로 발생하는 것을 방지한다. 그러나, 종래의 아키텍처의 이러한 제어로 인해 전체 데이터 저장장치는 계속 작동할 수 없으며, 또한 사용자 데이터 손실(data loss)을 크게 증가시키는 위험이 있다. 따라서, 부작용이 없거나 또는 부작용을 일으킬 가능성이 없는 상태에서 믿을 만한 관리 매커니즘을 구비한 데이터 저장장치를 실현할 수 있는 새로운 방법 및 관련 아키텍처가 필요하다.
본 발명의 목적은 상기 문제점을 해결하기 위하여, 에러 핸들링(error handling) 방법 및 관련된 데이터 저장장치 및 그 컨트롤러를 제공하는 것이다.
본 발명의 또 다른 목적은 부작용이 없거나 또는 부작용이 발생할 가능성이 없는 상태에서 믿을 만한 관리 매커니즘을 데이터 저장장치에 부여하는 에러 핸들링 방법 및 관련된 데이터 저장장치 및 그 컨트롤러를 제공하는 것이다.
본 발명의 적어도 하나의 실시예는 에러 핸들링 방법을 제공하며, 상기 에러 핸들링 방법은 데이터 저장장치에 응용되며, 상기 데이터 저장장치는 비휘발성 메모리(non-volatile memory, NV memory) 및 상기 비휘발성 메모리의 액세스를 제어하는 메모리 컨트롤러를 포함하며, 상기 비휘발성 메모리는 적어도 하나의 비휘발성 메모리 소자(NV memory element)를 포함하고, 상기 적어도 하나의 비휘발성 메모리 소자는 복수의 블록을 포함한다. 상기 에러 핸들링 방법은 에러 핸들링 프로그램을 상기 메모리 컨트롤러에 위치하는 에러 정정 코드(Error Correction Code, ECC) 보호 기능을 가진 버퍼 메모리에 업로드하는 단계; 적어도 하나의 에러에 따라, 현재 절차의 실행을 중단하고, 인터럽트 서비스를 활성화시키는 단계; 상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하는 단계; 상기 메모리 컨트롤러에 위치하고, 호스트 디바이스(host device)에 대해 통신을 진행하는 전송 인터페이스 회로를 비활성화(disable)시키는 단계; 적어도 하나의 하드웨어 엔진 및 상기 적어도 하나의 비휘발성 메모리 소자를 리셋하는 단계; 상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그래밍하여 데이터 복구를 진행하는 단계; 및 상기 메모리 컨트롤러 중의 워치도그(Watchdog) 모듈을 활성화시키고, 상기 전송 인터페이스 회로를 활성화시켜 상기 호스트 디바이스와 재링크하여, 소프트 리셋을 완료하여, 데이터 저장장치가 다시 정상적으로 동작하도록 하는 단계를 포함할 수 있다.
본 발명의 적어도 하나의 실시예는 데이터 저장장치를 제공하며, 상기 데이터 저장장치는 비휘발성 메모리 및 컨트롤러를 포함하며, 상기 비휘발성 메모리는 데이터를 저장하고, 상기 비휘발성 메모리는 적어도 하나의 비휘발성 메모리 소자를 포함하며, 상기 적어도 하나의 비휘발성 메모리 소자는 복수의 블록을 포함하고, 상기 컨트롤러는 상기 비휘발성 메모리에 연결되어, 상기 데이터 저장장치의 동작을 제어한다. 상기 컨트롤러는 데이터를 일시적으로 저장하는 버퍼 메모리; 특정 통신 표준에 부합하며 상기 특정 통신 표준에 따라 통신을 진행하는 전송 인터페이스 회로; 및 호스트 디바이스(host device)로부터의 복수의 호스트 명령에 따라 상기 컨트롤러를 제어하여, 상기 호스트 디바이스가 상기 컨트롤러를 통해 상기 비휘발성 메모리에 액세스하도록 허용할 수 있는 처리 회로를 포함할 수 있다. 예를 들면, 상기 컨트롤러는 에러 핸들링 프로그램을 에러 정정 코드(ECC) 보호 기능을 가진 상기 버퍼 메모리에 업로드하며; 적어도 하나의 에러에 따라, 상기 컨트롤러는 현재 절차의 실행을 중단하고, 인터럽트 서비스를 활성화시키며; 상기 컨트롤러는 상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하며; 상기 컨트롤러는 전송 인터페이스 회로를 비활성화시키고, 상기 전송 인터페이스 회로는 호스트 디바이스에 대해 통신을 진행하며; 상기 컨트롤러는 적어도 하나의 하드웨어 엔진 및 상기 적어도 하나의 비휘발성 메모리 소자를 리셋하며; 상기 컨트롤러는 상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그래밍하여 데이터 복구를 진행하며; 상기 컨트롤러는 상기 메모리 컨트롤러 중의 워치도그 모듈을 활성화시키고, 상기 전송 인터페이스 회로를 활성화시켜 상기 호스트 디바이스와 재링크하여, 소프트 리셋을 완료하여, 데이터 저장장치가 다시 정상적으로 동작하도록 한다.
본 발명의 적어도 하나의 실시예는 데이터 저장장치의 컨트롤러를 제공하며, 상기 데이터 저장장치는 상기 컨트롤러와 비휘발성 메모리를 포함하고, 상기 비휘발성 메모리는 적어도 하나의 비휘발성 메모리 소자를 포함하며, 상기 적어도 하나의 비휘발성 메모리 소자는 복수의 블록을 포함한다. 상기 컨트롤러는 데이터를 일시적으로 저장하는 버퍼 메모리; 특정 통신 표준에 부합하며 상기 특정 통신 표준에 따라 통신을 진행하는 전송 인터페이스 회로; 및 호스트 디바이스(host device)로부터의 복수의 호스트 명령에 따라 상기 컨트롤러를 제어하여, 상기 호스트 디바이스가 상기 컨트롤러를 통해 상기 비휘발성 메모리에 액세스하도록 허용할 수 있는 처리 회로를 포함할 수 있다. 예를 들면, 상기 컨트롤러는 에러 핸들링 프로그램을 에러 정정 코드(ECC) 보호 기능을 가진 상기 버퍼 메모리에 업로드하며; 적어도 하나의 에러에 따라, 상기 컨트롤러는 현재 절차의 실행을 중단하고, 인터럽트 서비스를 활성화시키며; 상기 컨트롤러는 상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하며; 상기 컨트롤러는 전송 인터페이스 회로를 비활성화시키고, 상기 전송 인터페이스 회로는 호스트 디바이스에 대해 통신을 진행하며; 상기 컨트롤러는 적어도 하나의 하드웨어 엔진 및 상기 적어도 하나의 비휘발성 메모리 소자를 리셋하며; 상기 컨트롤러는 상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그래밍하여 데이터 복구를 진행하며; 상기 컨트롤러는 상기 메모리 컨트롤러 중의 워치도그 모듈을 활성화시키고, 상기 전송 인터페이스 회로를 활성화시켜 상기 호스트 디바이스와 재링크하여, 소프트 리셋을 완료하여, 데이터 저장장치가 다시 정상적으로 동작하도록 한다.
본 발명의 장점 중 하나는, 신중히 설계된 관리 매커니즘을 통해, 본 발명은 상기 컨트롤러의 동작을 적절히 제어할 수 있으며, 특히, 소프트 에러(soft error)가 발생할 경우, 예를 들어 데이터 저장장치가 간섭(예를 들면, 방사선, 노이즈 등)을 받을 경우, 데이터 저장장치가 자가복구할 수 있도록 한다. 소프트 에러가 발생할 경우, 데이터 저장장치가 자가복구할 수 있으므로, 본 발명은 소프트 에러율(Soft Error Rate, SER)을 줄일 수 있으며, 또한 사용자 데이터 손실로 인한 위험을 최소화할 수 있다. 또한, 본 발명의 실시예에 따라 실시하면 추가 비용이 많이 증가되지 않는다. 따라서, 관련 기술 문제를 해결할 수 있으며, 또한 전체적 비용이 크게 증가하지 않는다. 종래의 아키텍처와 비교하면, 본 발명은 부작용이 없거나 또는 부작용을 일으킬 가능성이 없는 상황에서 데이터 저장장치의 최적화 효과에 도달할 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 저장장치와 호스트 디바이스를 나타낸 개략도이다.
도 2은 본 발명의 일실시예에 따른 캐시 할당(cache allocation) 방안을 나타낸다.
도 3은 본 발명의 일실시예에 따른 에러 핸들링 방법을 나타낸 흐름도이다.
도 4는 본 발명이 일실시예에 따른 도 1에 도시한 메모리 컨트롤러가 소프트 에러의 발생 여부를 어떻게 판단하는지를 나타낸 실시 세부 사항이다.
도 5는 본 발명의 일실시예에 따른 도 3에 도시한 에러 핸들링 방법에서의 캐시 재정렬을 나타낸다.
도 1을 참조하면, 도 1은 본 발명의 제1 실시예에 따른 데이터 저장장치(100)와 호스트 디바이스(host device)(50)를 나타낸 개략도이다. 예를 들면, 데이터 저장장치(100)는 SSD(Solid State Drive)일 수 있다. 그밖에, 호스트 디바이스(50)의 예로서 다기능 휴대 전화(multifunctional mobile phone), 태블릿 및 데스크톱 및 랩톱 컴퓨터와 같은 퍼스널 컴퓨터를 포함할 수 있다(단, 이에 한정되지 않는다). 본 실시예에 따르면, 데이터 저장장치(100)는 메모리 컨트롤러(100)와 같은 컨트롤러를 포함할 수 있으며, 또한 비휘발성 메모리(non-volatile memory, NV memory)(120)를 더 포함할 수 있으며, 상기 컨트롤러는 비휘발성 메모리(120)에 대한 액세스에 사용되며, 휘발성 메모리(120)는 데이터의 저장에 사용된다.
비휘발성 메모리(120)는 복수의 비휘발성 메모리 소자(NV memory element)(122-1, 122-2, … 및 122-N)를 포함할 수 있으며, 여기서 부호 「N」은 1보다 큰 정수를 의미한다. 예를 들면 비휘발성 메모리(120)는 플래시 메모리(Flash memory)일 수 있으며, 비휘발성 메모리 소자(122-1, 122-2, …. 및 122-N)는 각각 복수의 플래시 메모리 칩(Flash memory chip, 플래시 칩으로 약칭할 수 있음) 또는 복수의 플래시 메모리 다이(Flash memory die, 플래쉬 다이로 약칭할 수 있음)일 수 있으나, 본 발명은 이에 한정되지 않는다. 그밖에, 데이터 저장장치(100)는 데이터 버퍼링을 진행하도록 휘발성 메모리 소자(130)를 더 포함할 수 있으며, 휘발성 메모리 소자(130)는 바람직하게는 동적 램(Dynamic Random Access Memory, DRAM으로 약칭)이다. 메모리 컨트롤러(110)의 제어하에서, 데이터 저장장치(100)는 데이터 버퍼링 공간으로서 휘발성 메모리 소자(130)의 저장 공간의 적어도 일부분(예를 들면 일부 또는 전체)을 이용하여, 데이터를 일시적으로 저장할 수 있다(예를 들면 비휘발성 메모리(120)에 액세스하는 동안). 그밖에, 휘발성 메모리 소자(130)는 선택적인 소자이다.
메모리 컨트롤러(110)는 마이크로프로세서(112), ROM(Read Only Memory)(112M)과 같은 메모리, 제어 로직 회로(114), 버퍼 메모리(116), 및 전송 인터페이스 회로(118)를 포함할 수 있으며, 이러한 소자들은 버스를 통해 서로 연결될 수 있다. 버퍼 메모리(116)는 바람직하게는 SRAM(Static Random Access Memory)이다. 예를 들자면, 메모리 컨트롤러(110)는 제1층 캐시로서 SRAM과 같은 버퍼 메모리를 이용할 수 있으며, 제2층 캐시로서 DRAM과 같은 휘발성 메모리 소자(130)를 이용할 수 있다. DRAM의 데이터 저장량은 버퍼 메모리(116)의 데이터 저장량보다 큰 것이 바람직하며, 버퍼 메모리(116)에 의해 버퍼링 처리되는 데이터는 DRAM 또는 비휘발성 메모리(120)로부터의 데이터일 수 있다.
본 실시예의 ROM(112M)은 코드(112C)의 저장에 사용되며, 마이크로 프로세서(112)는 비휘발성 메모리(120)의 액세스를 제어하도록 코드(112C)를 실행한다. 참고로, 코드(112C)도 버퍼 메모리(116) 또는 임의 형태의 메모리 내에 저장해야 한다. 그밖에, 제어 로직 회로(114)는 데이터 보호 및/또는 에러 정정을 진행하도록 적어도 하나의 에러 정정 코드(Error Correction Code, ECC로 약칭) 회로(미도시)를 포함하며, 전송 인터페이스 회로(118)는 특정 통신 표준(예를 들면, SATA(Serial Advanced Technology Attachment) 표준, PCIE(Peripheral Component Interconnect Express) 표준 또는 NVME(Non-Volatile Memory Express) 표준)에 부합하고, 상기 특정 통신 표준에 따라 통신을 진행하며, 특히 상기 특정 통신 표준에 따라 호스트 디바이스(50)에 대해 통신을 진행할 수 있다.
본 실시예에서, 호스트 디바이스(50)는 복수의 호스트 명령(Host Command)을 데이터 저장장치(100)로 전송할 수 있으며, 메모리 컨트롤러(110)는 호스트 명령에 따라 비휘발성 메모리(120)에 액세스(예를 들면 데이터 읽기 또는 쓰기)하고, 상기 데이터는 호스트 디바이스(50)로부터의 사용자 데이터인 것이 바람직하다. 호스트 명령은 논리 블록 주소(Logical Block Address)와 같은 논리 주소를 포함한다. 메모리 컨트롤러(110)는 호스트 명령을 수신하여 호스트 명령을 각각 메모리 동작 명령(동작 명령으로 약칭)으로 변환하여, 동작 명령으로 비휘발성 메모리(120)를 제어하여 비휘발성 메모리(120) 중의 특정 실체 주소의 페이지(page)에 대해 읽기, 쓰기(Write)/프로그램(Program)화 한다. 메모리 컨트롤러(110)는 데이터의 논리 주소와 실체 주소의 맵핑 관계를 논리 대 실체 주소 맵핑 테이블(Logical-to-Physical Address Mapping Table, 「L2P맵핑 테이블」이라고 약칭)에 기록하고, 실체 주소는 채널(Channel) 넘버, LUN(Logical Unit Number), 플레인 넘버, 블록 넘버, 페이지 넘버 및 오프셋(Offset)으로 구성될 수 있다. 일부 실시예에서, 실체 주소의 실시는 변경될 수 있다. 예를 들면, 실체 주소는 채널 넘버, LUN, 플레인 넘버, 블록 넘버, 페이지 넘버 및/또는 오프셋을 포함할 수 있다.
L2P맵핑 테이블은 비휘발성 메모리(120) 중의 시스템 블록에 저장될 수 있고, 또한 복수의 그룹 맵핑 테이블로 분할될 수 있으며, 시스템 블록은 암호화된 블록이고 SLC 모드로 데이터의 프로그래밍을 진행하는 것이 바람직하다. 메모리 컨트롤러(110)는 버퍼 메모리(116)의 용량 크기에 따라 상기 복수의 그룹 맵핑 테이블 중 일부 또는 전체 그룹 맵핑 테이블을 비휘발성 메모리(120)로부터 버퍼 메모리(116)에 로드하여, 빨리 참조할 수 있도록 하나, 본 발명은 이에 한정되지 않는다. 사용자 데이터를 업데이트할 때, 메모리 컨트롤러(110)는 사용자 데이터의 최신 맵핑 관계에 따라 그룹 맵핑 테이블을 업데이트할 수 있다. 상기 복수의 그룹 맵핑 테이블 중의 임의의 그룹 맵핑 테이블의 크기는 비휘발성 메모리 소자(122-n)의 한 페이지의 크기와 같은 것이 바람직하며, 예를 들면 16KB(kilobytes; 킬로바이트)이다. 여기서 부호「n」은 [1, N] 구간 중의 임의의 정수를 의미할 수 있으나, 본 발명은 이에 한정되지 않는다. 상기 임의의 그룹 맵핑 테이블의 크기는 페이지의 크기보다 작을 수 있으며, 예를 들면 4KB 또는 1KB이다. 물론, 상기 임의의 그룹 맵핑 테이블의 크기는 복수의 비휘발성 메모리 소자(122)의 한 페이지의 크기와 같을 수도 있으며, 예를 들어 N=4인 경우, 4개의 비휘발성 메모리 소자(122)의 한 페이지의 크기인 64KB이며, 이들 4개의 비휘발성 메모리 소자(122)의 페이지는 슈퍼 페이지(Super Page)라고 불릴 수도 있다.
그밖에, 메모리 컨트롤러(110)가 비휘발성 메모리(120)에 대해 프로그래밍 동작을 진행하는 최소 단위는 한 페이지일 수 있으며, 메모리 컨트롤러(110)가 비휘발성 메모리(120)에 대해 소거(Erase) 동작을 진행하는 최소 단위는 한 블록일 수 있다. 비휘발성 메모리 소자(122-n)의 복수의 블록 중 각 블록은 복수의 페이지를 포함한다.
쓰기 캐시(Write Cache) 모드에서, 호스트 디바이스(50)는 쓰기 명령을 발송하여 사용자 데이터(데이터로 약칭)를 비휘발성 메모리(120)에 기입하도록 메모리 컨트롤러(110)에 요청할 수 있다. 메모리 컨트롤러(110)는 호스트 디바이스(50)로부터 상기 데이터를 수신 또는 다운로드하고, 버퍼 메모리(116)를 이용하여 상기 데이터를 버퍼링하며, 휘발성 메모리소자(130)를 이용하여 상기 데이터를 캐싱하고, 이어서, 쓰기 명령 실행 완료 메시지를 호스트 디바이스(50)로 직접 회신한다. 이후, 쓰기 조건이 만족되면, 예를 들어 누적된 데이터 길이가 페이지 길이 또는 슈퍼 페이지 길이 이상이면, 메모리 컨트롤러(110)는 다시 캐싱된 데이터를 비휘발성 메모리(120)의 데이터에 기입된다.
메모리 컨트롤러(110)의 마이크로프로세서(112)는 데이터 캐시의 캐시 할당(cache allocation)을 진행하고, 또한 할당 동작 및/또는 관련 동작에 따라 데이터 캐시의 캐시 헤드(cache head)(H)와 캐시 테일(cache tail)(T)의 주소를 업데이트하며, 도 2에 도시한 바와 같이, 캐시 헤드(H)와 캐시 테일(T)는 데이터 캐시의 캐시 할당 파라미터로 간주할 수 있다. 도 2의 하반부에 도시된 가로축은 캐시 범위를 의미한다. 휘발성 메모리 소자(130)를 상기 데이터 캐시의 예로 하면, 캐시 범위는 캐시 주소의 범위에 대응된다. 캐시 주소 범위에 대해, 메모리 컨트롤러(110)(예를 들면 마이크로 프로세서(112))는 예를 들어 휘발성 메모리 소자(130)의 캐시 공간을 4KB를 단위로 할당(allocate)하고, 예를 들어 휘발성 메모리 소자(130)의 캐시 공간을 소정의 순서(예를 들면 왼쪽에서 오른쪽)에 따라 할당하며, 캐시 주소 범위 중 임의의 2개의 주소 값은, 왼쪽 주소 값이 오른쪽 주소 값보다 작으나, 본 발명은 이에 한정되지 않는다.
마이크로프로세서(112)는 순환(cyclic) 방식으로 휘발성 메모리 소자(130)의 캐시 공간을 사용하므로, 캐시 주소 범위는 순환 주소 범위로 간주할 수 있으며, 또한 캐시 주소 범위에 대응되는 캐시 범위는 순환 범위로 간주할 수 있다. 마이크로프로세서(112)가 4KB의 데이터를 캐싱할 경우, 마이크로프로세서(112)는 기본 증가량(예를 들면 1)으로 캐시 헤드(H)의 주소를 이동시켜, 캐시 헤드(H)의 이동 전 및 이동 후 사이의 캐시 공간에 4KB 캐시 데이터를 저장할 수 있도록 한다.
마이크로프로세서(112)는 휘발성 메모리 소자(130)의 4KB데이터에 FIFO(First-In First-Out) 버퍼가 할당되면, 상기 4KB 데이터는 비휘발성 메모리(120)에 기입된다. FIFO 버퍼 할당이 완료되면, 마이크로프로세서(112)는 기본 증가량(예1)으로 캐시 테일(T)를 이동시켜(좌측에서 우측으로), 캐시 테일(T)을 다음에 비휘발성 메모리(120)에 기입되는 4KB 데이터에 대응하도록 업데이트한다. 요약하자면, 캐시 헤드(H)와 캐시 테일(T) 사이의 범위는 캐싱된 데이터(캐시 데이터라고 약칭)이며, 나머지 캐시 공간은 비어 있거나 또는 무효 데이터가 저장되며, 마이크로프로세서(112)는 데이터를 빈 캐시 공간에 기입할 수 있다.
일부 실시예에 따르면, 상기 적어도 하나의 ECC 회로는 복수의 ECC 엔진과 같은 복수의 ECC 회로를 포함할 수 있다. 복수의 ECC 회로는 각각 복수의 절차(Procedure)에 따라 데이터의 패리티 코드(Parity Code)를 생성하고 및/또는 패리티 코드에 따라 데이터에 대해 에러 정정을 진행한다. 특히, 복수의 ECC 회로는 병행 동작할 수 있으므로, 메모리 컨트롤러(110)(예를 들면 마이크로프로세서(112))는 복수의 ECC 회로에 복수의 절차를 지정할 수 있으나, 본 발명은 이에 한정되지 않는다.
일부 실시예에서, 버퍼 메모리(116)는 중요 정보를 저장할 수 있으며, 중요 정보의 예로서 호스트 디바이스(50)로부터의 사용자 데이터, 특정 코드의 명령(instruction) 및 데이터 등을 포함할 수 있다(단, 이에 한정되지 않는다).
도 3은 본 발명의 일실시예에 따른 에러 핸들링 방법을 나타낸 흐름도이며, 이 에러 핸들링 방법은 데이터 저장장치(100)에 응용될 수 있고, 데이터 저장장치(100)의 메모리 컨트롤러(110)에 의해 실행되며, 또한 데이터 저장장치(100)의 동작 과정에서 발생되는 소프트 에러에 대해 에러 핸들링을 진행할 수 있다. 본 발명의 에러 핸들링 방법은 데이터 저장장치(100)가 에러를 복구할 수 있도록 하고, 소프트 리셋을 실행하여, 데이터 저장장치(100)가 빠르게 정상 모드로 복귀하여 동작하도록 할 수 있다.
본 발명의 에러 핸들링 방법은 크게 3개의 단계로 나눌 수 있으며, 단계(S10)~단계(S18)은 본 발명의 에러 핸들링 방법의 초기 단계로 총칭할 수 있으며, 단계(S20)~단계(S30)은 본 발명의 에러 핸들링 방법의 데이터 복구(recovery) 단계로 총칭할 수 있으며, 단계(S40)~단계(S44)는 본 발명의 에러 핸들링 방법의 시스템 복구 단계로 총칭할 수 있으며, 각 단계의 설명은 아래와 같다.
단계(S10)에서, 메모리 컨트롤러(110)는 에러 핸들링 프로그램을 버퍼 메모리(116)에 업로드하고, 버퍼 메모리(116)는 EEC 보호 기능, 특히 패리티 코드에 따라 에러 정정을 진행하는 기능을 구비하는 것이 바람직하다. 예를 들면, 버퍼 메모리(116)는 에러 핸들링 프로그램을 보호하도록 스스로 패리티 코드를 생성하거나, 또는 ECC회로가 에러 핸들링 프로그램에 대해 패리티 코드를 생성하고, 메모리 컨트롤러(110)가 에러 핸들링 프로그램 및 패리티 코드를 함께 버퍼 메모리(116)에 업로드할 수 있다. 버퍼 메모리(116)는 ECC 보호 기능을 구비하므로, 에러 핸들링 프로그램을 효과적으로 보호할 수 있다.
단계(S11)에서, 메모리 컨트롤러(110)는 소프트 에러 발생 여부를 판단하며, 소프트 에러가 발생한 경우, 단계(S12)를 실행하고, 에러가 발생하지 않은 경우 단계(S11)을 반복적으로 실행한다. 소프트 에러는 하드웨어 또는 펌웨어(Firmware)의 실행으로 인해 생성되는 에러를 포함한다. 이후, 종래의 시스템 재부팅(Reboot) 방식으로 에러 핸들링을 진행하는 것이 아니라, 에러 핸들링 프로그램으로 에러 핸들링을 진행한다. 메모리 컨트롤러(110)는 내장된 에러 검출 회로를 사용하여 소프트 에러 발생 여부를 판단하는 것이 바람직하며, 메모리 컨트롤러(110)가 복수의 코어(Cores)를 갖는 경우, 상기 복수의 코어 중의 하나가 소프트 에러 발생 여부를 판단하는데 이용될 수 있다.
도 4는 본 발명의 일실시예에 따른 메모리 컨트롤러(110)가 소프트 에러의 발생 여부를 어떻게 판단하는지를 나타낸 실시 세부 사항이며, 예를 들면, 마이크로프로세서(112)의 하드웨어 아키텍처는 ARC(Argonaut RISC Core) 아키텍처와 같은 RISC(Reduced Instruction Set Computing) 아키텍처를 이용하여 실시될 수 있으며, 또한 ICCM(Instruction Close Coupled Memory) 및 DCCM(Data Close Coupled Memory)이 내장될 수 있으나, 본 발명은 이에 한정되지 않는다. 마이크로 프로세서(112)는 SATA 컨트롤러(예를 들면 STAT 컨트롤러 엔진)를 통해 SATA PHY 회로의 동작을 제어할 수 있으며, 또한 로직 회로(114) 중의 플래시 컨트롤러(예를 들면 플래시 컨트롤러 엔진)를 통해 로직 회로(114) 중의 관련 회로를 제어한다(예를 들면, 비휘발성 메모리(120)의 입력출력 인터페이스 회로, 상기 적어도 하나의 ECC 회로 등을 인터페이싱한다). 소프트 에러는 예를 들어 하기 원인들을 포함한다.
(A) 호스트 명령 1초 타임아웃(Host command 1 second timeout), 이는 아래 조건들을 포함할 수 있음;
(1) 타임아웃 조건#1: DRAM 또는 ARC DCCM 변수(Variable) 에러로 인한 펌웨어 정지(Firmware Halt);
(2) 타임아웃 조건#2: 하드웨어 시스템, SATA 컨트롤러 엔진 또는 플래시 컨트롤러 엔진의 이상 정지(abnormal halt); 및
(3) 타임아웃 조건#3: ICCM 코드 주소 맵핑(Address Mapping) 에러, ICCM코드 주소 맵핑 에러 및 ICCM 코드 명령(예외) 에러도 ICCM 코드 에러에 속함;
(B) ICCM 코드 명령(예외) 에러(ICCM code instruction (exception) error), 예를 들면 ICCM 코드 명령 에러, ICCM 코드 명령 예외 에러 및/또는 ICCM 코드 예외 에러; 및
(C) 정정 불가능한 ECC 에러(Uncorrectable ECC error, UECC에러), 예를 들면 SRAM의 UECC 에러 또는 DRAM의 ECC 에러이며, 이는 SRAM 또는 DRAM에 저장된 데이터가 대응하는 패리티 코드에 따라 에러 정정을 진행할 수 없어, UECC 에러가 발생함을 의미한다.
단계(S12)에서, 메모리 컨트롤러(110)는 현재 절차의 실행을 중단시키고 인터럽트 서비스를 활성화시킨다. 상기 다양한 소프트 에러 중 임의의 소프트 에러가 발생했음을 감지하면, 마이크로프로세서(112)는 현재 절차의 실행 주소를 기록하고, 현재 진행 중인 절차를 중단하고, 실행 주소로부터 대응하는 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)으로 이동함으로써, 인터럽트 서비스를 활성화시키고, 하나 이상의 소프트 에러는 하나의 ISR에 대응될 수 있다. 예를 들면, 인터럽트 핸들러와 같은 ISR은 하드웨어 아키텍처로부터의 인터럽트 요청에 의해 호출(Invoke)될 수 있으며, 인터럽트 요청을 마이크로프로세서(112)로 전달하여, 현재 진행 중인 절차를 중단시킨다.
단계(S14)에서, 메모리 컨트롤러(110)는 버퍼 메모리(116)의 에러 핸들링 프로그램을 실행시킨다. 메모리 컨트롤러(110)는 상기 현재 절차의 실행 주소로부터 에러 핸들링 프로그램의 초기 위치로 점프(Jump)함으로써 에러 핸들링 프로그램을 실행시킨다.
단계(S16)에서, 메모리 컨트롤러(110)는 전송 인터페이스 회로(118), 특히 SATA PHY 회로를 비활성화시키고, SATA 컨트롤러와 SATA PHY 회로는 전송 인터페이스 회로(118)에 위치한다. 본 실시예에 따르면, 메모리 컨트롤러(110)는 전송 인터페이스 회로(118)를 비활성화시켜 호스트 디바이스(50)에 대한 데이터의 수신 및 전송(데이터, 명령 및 ACK(Acknowledgement) 정보의 수신 및 전송을 포함함)을 정지시켜, 에러의 수가 증가하지 않도록 한다.
단계(S18)에서, 메모리 컨트롤러(110)는 적어도 하나의 하드웨어 엔진(예를 들면 하나 이상의 하드웨어 엔진) 및 플래시 메모리 소자(예를 들면 플래시 웨이퍼 또는 플래시 다이)와 같은 비휘발성 메모리 소자(122)를 리셋한다. 메모리 컨트롤러(110)는 ECC 엔진, SATA 컨트롤러 엔진 및/또는 플래시 컨트롤러 엔진을 리셋하여 상기 적어도 하나의 하드웨어 엔진을 리셋할 수 있으며, 또한 비휘발성 메모리 소자(122)를 리셋할 수 있다. 그러면, 하드웨어 엔진 및 비휘발성 메모리 소자(122)는 정상 상태를 회복할 수 있고, 하드웨어 엔진의 지속적인 오작동으로 인해 데이터가 복구될 수 없는 것도 방지할 수 있다. 그밖에, 상기 적어도 하나의 하드웨어 엔진은 소프트 에러가 발생하는 하드웨어 엔진을 포함할 수 있다. 메모리 컨트롤러(110)가 소프트 에러의 근원을 판단할 수 있으면, 예를 들어 소프트 에러의 근원이 SATA 컨트롤러 엔진의 이상 정지이면, SATA 컨트롤러 엔진만을 리셋할 수 있다.
이어서, 메모리 컨트롤러(110)는 데이터 저장장치(100) 중의 캐시 데이터(예를 들면 DRAM과 같은 휘발성 메모리 소자(130))에 대해 도 5에 도시한 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 비휘발성 메모리 소자(122)에 프로그래밍하여, 데이터 복구를 진행할 수 있으나, 본 발명은 이에 한정되지 않는다.
단계(S20)에서, 메모리 컨트롤러(110)는 휘발성 메모리 소자(130)의 캐시 데이터를 재할당(reallocate)한다. 캐시 데이터의 손실을 막기 위해, 메모리 컨트롤러(110)는 휘발성 메모리 소자(130)의 캐시 데이터를 FIFO 버퍼에 재할당하여, 캐시 데이터를 플래시 메모리 소자와 같은 비휘발성 메모리 소자(122)에 기입하도록 준비한다. 단계(S20)의 효율을 향상시키기 위해, 메모리 컨트롤러(110)는 캐시 테일(T)의 주소를 기준으로, 휘발성 메모리 소자(130) 중의 한 페이지의 캐시 데이터(예를 들면 기본 증가량이 1과 같은 캐시 테일(T) 좌측의 4KB 캐시 데이터)만, 또는 휘발성 메모리 소자(130) 중의 한 슈퍼 페이지의 캐시 데이터(예를 들면 기본 증가량이 4와 같은 캐시 테일(T) 좌측의 16KB캐시 데이터이)만, 또는 휘발성 메모리 소자(130)의 한 슈퍼 스트링(Super String)의 캐시 데이터(예를 들면 기본 증가량이 12와 같은 캐시 테일(T) 좌측의 48KB 캐시 데이터)만 FIFO버퍼에 재할당할 수 있다. 따라서, 단계(S20)에서 재할당한 범위(도 5에서 “재할당 범위”로 표시, 캐시 테일(T)의 옆에 있음)의 크기가 얼마든 상관없이, 메모리 컨트롤러(110)는 재할당된 캐시 데이터(예를 들면 4KB, 16KB 또는 48KB 캐시 데이터)를 FIFO 버퍼에 준비하여, 4KB, 16KB 또는 48KB 캐시 데이터를 플래시 메모리 소자와 같은 비휘발성 메모리 소자(122)에 기입하도록 한다.
단계(22)에서, 메모리 컨트롤러(110)는 트리거된 쓰기 명령의 존재 여부를 판단하며, 존재하면 단계(S24)를 진행하고, 그렇지 않으면 단계(S26)을 진행한다. 호스트 명령 중의 쓰기 명령이 트리거되면, 휘발성 메모리 소자(130)는 적당한 캐시 공간을 할당하여 호스트 디바이스(50)로부터의 데이터를 버퍼링하도록 한다. 예를 들면, 상기 트리거된 쓰기 명령은 호스트 디바이스(50)로부터 수신한 적어도 하나의 쓰기 명령을 의미할 수 있다. 상기 적어도 하나의 쓰기 명령이 트리거된 후, 휘발성 메모리 소자(130)는 적당한 캐시 공간을 할당하여 호스트 디바이스(50)로부터 수신한 데이터를 버퍼링하도록 예상되나, 상술한 일부 단계로 인해 이러한 예상된 할당 동작을 진행하지 않을 수 있다. 이 경우, 단계(24)로 진입하여 이러한 예상된 할당 동작이 진행되도록 보장한다.
단계(24)에서, 메모리 컨트롤러(110)는 트리거된 쓰기 명령에 따라 예를 들면, 캐시 헤드(H)의 최초 위치로부터 휘발성 메모리 소자(130)의 캐시 공간을 할당한다. 쓰기 명령이 트리거되면, 메모리 컨트롤러(110)는 캐시 헤드(H)를 오른쪽으로 이동시키고, 캐시 헤드(H)의 오른쪽 이동량이 트리거된 쓰기 명령의 수 또는 데이터량과 부합되록 한다. 예를 들면, 3개의 트리거된 쓰기 명령에 대응하는 3건의 데이터는 총 12KB 기입될 것으로 예상되는 데이터일 수 있다. 이 경우, 마이크로프로세서(112)는 휘발성 메모리 소자(130)에 12KB 크기의 일부 캐시 공간에 할당할 수 있으며, 캐시 헤드(H)는 기본 증가량(예를 들면 1)만큼 오른쪽으로 3번((12 KB / 4 KB) = 3) 이동되어, 캐시 헤드(H)의 주소가 업데이트되도록 한다. 또 예를 들자면, 2개의 트리거된 쓰기 명령에 대응하는 2건의 데이터는 총 32KB 기입될 것으로 예상되는 데이터일 수 있다. 이 경우, 마이크로프로세서(112)는 휘발성 메모리 소자(130)에 32KB 크기의 일부 캐시 공간을 할당할 수 있으며, 캐시 헤드(H)는 기본 증가량(예를 들면 4)만큼 오른쪽으로 2번((32 KB / 16 KB) = 2) 이동되어, 캐시 헤드(H)의 주소가 업데이트되도록 한다.
단계(S26)에서, 메모리 컨트롤러(110)는 DRAM과 같은 휘발성 메모리 소자(130)로의 데이터 미진입 여부를 판단하며, 미진입이면 단계(S28)을 실행하고, 그렇지 않으면, 단계(S30)을 실행한다. 단계(S16)에서 SATA PHY 회로가 비활성화되었으므로, SATA PHY 회로의 데이터 전송은 중지되었다. 따라서, 쓰기 명령이 트리거되었을 수 있으나, 쓰기 명령의 일부 데이터는 아직 휘발성 메모리 소자(130)에 버퍼링되지 않았으므로, 캐시 헤드(H)를 적절하게 보정하여, 캐시 헤드(H)가 유효한 캐시 데이터를 가리키도록 해야 한다.
단계(28)에서, 메모리 컨트롤러(110)는 휘발성 메모리 소자(130)의 캐시 공간을 재 동기화(re-synchronize)한다. 예를 들면, 캐시 헤드(H)를 회귀시켜 상기 유효한 캐시 데이터(예를 들면 버퍼링된 마지막 데이터)를 가리키도록 한다. 메모리 컨트롤러(110)는 SATA PHY 회로의 포스트백에 의해 트리거된 쓰리 명령에 대응되는 데이터 전송량을 알 수 있고, 이러한 데이터 전송량이 바로 캐시 데이터의 데이터량이며, 메모리 컨트롤러(110)는 이러한 데이터량에 따라 캐시 헤드(H)의 이동량을 보정하고, 특히 이러한 데이터량에 따라 캐시 헤드(H)의 재동기화 동작에서의 보정량(좌측 이동량)을 결정한다. 예를 들면, 캐시 헤드(H)는 원래 기본 증가량만큼 3번 오른쪽으로 이동하지만, 캐시 데이터의 데이터량은 2이며, 차이값은 1이므로, 메모리 컨트롤러(110)는 캐시 헤드(H)를 하나의 기본 증가량만큼 왼쪽으로 이동시킨다.
단계(30)에서, 메모리 컨트롤러(110)는 캐시 데이터(특히, 상기 재정렬된 캐시 데이터)를 비휘발성 메모리 소자(122)로 프로그래밍하고, 캐시 데이터는 SLC 모드로 비휘발성 메모리 소자(122)의 플러싱 블록(Flushing Block)에 프로그래밍되는 것이 바람직하다. 플러싱 블록은 비휘발성 메모리 소자(122) 중의 스페어 블록으로부터 선택되고, 비상시 데이터 쓰기에 주로 사용된다. 메모리 컨트롤러(110)는 플러싱 블록(능동 블록과 유사)을 선택하고, 페이지, 슈퍼 페이지 또는 슈퍼 스트링을 단위로 하며, 캐시 데이터를 플러싱 블록에 프로그래밍한다. 메모리 컨트롤러(110)는 한 페이지보다 큰 소정의 프로그래밍 단위로, 캐시 데이터를 플러싱 블록에 프로그래밍할 수 있다. 상기 소정의 프로그래밍 단위, 예를 들어 슈퍼페이지 또는 슈퍼 스트링을 단위로 하여 플러싱 블록에 프로그램밍할 경우, 프로그래밍 후의 나머지 캐시 데이터가 슈퍼 페이지 또는 슈퍼 스트링에 기입될 수 없으면(예를 들어 나머지 캐시 데이터의 데이터 길이가 상기 소정의 프로그래밍 단위보다 작으면), 메모리 컨트롤러(110)는 나머지 캐시 데이터를 더미 데이터와 결합시켜, 결합 후의 데이터 길이가 상기 소정의 프로그래밍 단위(예를 들면 슈퍼 페이지 또는 슈퍼 스트링)와 같도록 한 다음, 나머지 캐시 데이터와 더미 데이터를 플러싱 블록의 슈퍼 페이지 또는 슈퍼 스트링에 프로그래밍한다. 캐시 데이터가 순서에 따라 플러싱 블록에 프로그래밍되면, 캐시 헤드(H)의 주소는 변하지 않고, 캐시 테일(T)의 주소가 점점 오른쪽으로 이동하며, 모든 캐시 데이터가 모두 플러싱 블록에 프로그래밍되면, 캐시 헤드(H)의 주소는 캐시 테일(T)의 주소와 같게 된다. 단계(S30)의 실행을 완료하면, 캐시 데이터는 모두 비휘발성 메모리 소자(122)에 저장된다.
단계(S40)에서, 메모리 컨트롤러(110)는 에러 로그(Error Log)를 저장하고, 특히 소프트 에러가 발생해서부터의 일련의 이벤트에 관한 정보를 상기 에러 로그에 기록하고, 에러 로그는 비휘발성 메모리(120)의 시스템 블록에 저장될 수 있다.
단계(S42)에서, 메모리 컨트롤러(110)는 메모리 컨트롤러(110) 중의 워치도그(Watchdog) 모듈을 활성화시킨다. 예를 들자면, 워치도그 모듈은 메모리 컨트롤러(110) 중의 워치도그 회로에 위치할 수 있으며, 워치도그 회로는 워치도그 타이머를 포함할 수 있으며, 마이크로프로세서(112)는 워치도그 타이머를 활성화시켜 소프트 리셋(Soft Reset)을 진행할 수 있으며, 소프트 리셋은 소프트웨어 방식으로 시스템 리셋을 진행하며, 예를 들면 시스템 실행 파일(또는 In-System Programming File)을 재실행하거나 또는 시스템 레지스터의 값을 제거하여, 시스템 리셋의 목적을 달성하나, 본 발명은 이에 한정되지 않는다.
단계(S44)에서, 메모리 컨트롤러(110)는 전송 인터페이스 회로(118)를 활성화시켜 호스트 디바이스(50)와 재링크한다. 전송 인터페이스 회로(118)가 다시 활성화되므로, 마이크로프로세서(112)는 전송 인터페이스 회로(118)를 통해 호스트 디바이스(50)와 재링크하여 상호 작용할 수 있다. 단계(S42) 및 단계(S44)의 동작을 통해, 메모리 컨트롤러(110)(예를 들어 마이크로프로세서(112))는 소프트 리셋을 완료하여 데이터 저장장치(100)가 다시 정상적으로 동작하도록 할 수 있다.
종합하면, 데이터 저장장치(100)의 동작에 에러가 발생하면, 본 발명의 에러 핸들링 방법을 실행함으로써, 데이터 저장장치(100)는 시스템이 멈추는 상황을 방지할 수 있을 뿐만 아니라, 캐시 데이터를 신속하게 비휘발성 메모리(120)에 저장하여, 캐시 데이터의 손실을 방지하고, 또한 소프트 리셋 방식을 통해, 데이터 저장장치(100)가 다시 정상적으로 동작하도록 하여, 본 발명의 목적을 달성한다. 또한, 본 발명의 에러 핸들링 방법은 시스템 로그를 저장하여 시스템 에러 감지 근거할 수 있다.
이상은 본 발명의 바람직한 실시예일뿐이며, 본 발명의 특허출원범위에 따른 균등한 변화 및 보정은 모두 본 발명의 범위에 포함되어야 한다.
50: 호스트 디바이스
100: 데이터 저장장치
110: 메모리 컨트롤러
112: 마이크로프로세서
112C: 코드
112M: ROM
114: 제어 로직 회로
116: 버퍼 메모리
118: 전송 인터페이스 회로
120: 비휘발성 메모리
122, 122-1, 122-2, …, 122-N: 비휘발성 메모리 소자
130: 휘발성 메모리 소자
H: 캐시 헤드
T: 캐시 테일
S10, S11, S12, S14, S16, S18,
S20, S22, S24, S26, S28, S30,
S40, S42, S44: 단계

Claims (20)

  1. 데이터 저장장치에 응용되는 에러 핸들링 방법으로서,
    상기 데이터 저장장치는 비휘발성 메모리(non-volatile memory, NV memory) 및 상기 비휘발성 메모리의 액세스를 제어하는 메모리 컨트롤러를 포함하며, 상기 비휘발성 메모리는 적어도 하나의 비휘발성 메모리 소자를 포함하고, 상기 적어도 하나의 비휘발성 메모리 소자는 복수의 블록을 포함하고,
    에러 핸들링 프로그램을 상기 메모리 컨트롤러에 위치하는 에러 정정 코드(Error Correction Code, ECC) 보호 기능을 가진 버퍼 메모리에 업로드(upload)하는 단계;
    적어도 하나의 에러에 따라, 현재 절차의 실행을 중단하고, 인터럽트 서비스를 활성화시키는 단계;
    상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하는 단계;
    상기 메모리 컨트롤러에 위치하고, 호스트 디바이스(host device)에 대해 통신을 진행하는 전송 인터페이스 회로를 비활성화(disable)시키는 단계;
    적어도 하나의 하드웨어 엔진 및 적어도 하나의 비휘발성 메모리 소자를 리셋하는 단계;
    상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그래밍하여, 데이터 복구를 진행하는 단계; 및
    상기 메모리 컨트롤러 중의 워치도그(Watchdog) 모듈을 활성화시키고, 상기 전송 인터페이스 회로를 활성화시켜 상기 호스트 디바이스와 재링크하여, 소프트 리셋(soft reset)을 완성하여, 상기 데이터 저장장치가 다시 정상적으로 동작하도록 하는 단계
    를 포함하는 에러 핸들링 방법.
  2. 제1항에 있어서,
    적어도 하나의 에러가 따라, 현재 절차의 실행을 중단하고, 인터럽트 서비스를 활성화시키는 단계는,
    다양한 소프트 에러(soft error) 중의 임의의 소프트 에러의 발생에 따라, 상기 현재 절차의 실행을 중단하고 상기 인터럽트 서비스를 활성화시키는 단계를 더 포함하고, 상기 적어도 하나의 에러는 상기 임의의 소프트 에러를 포함하는, 에러 핸들링 방법.
  3. 제1항에 있어서,
    상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하는 단계는,
    상기 현재 절차의 실행 주소로부터 에러 핸들링 프로그램의 초기 위치로 점프(jump)함으로써 상기 에러 핸들링 프로그램을 실행시키는 단계를 더 포함하는, 에러 핸들링 방법.
  4. 제1항에 있어서,
    상기 전송 인터페이스 회로를 비활성화시키는 단계는,
    상기 전송 인터페이스 회로를 비활성화시켜 상기 호스트 디바이스에 대한 데이터 수신 및 전송을 정지시키는 단계를 더 포함하는, 에러 핸들링 방법.
  5. 제1항에 있어서,
    상기 데이터 저장장치는 DRAM(Dynamic Random Access Memory)을 더 포함하고, 상기 데이터 캐시는 상기 DRAM에 위치하는, 에러 핸들링 방법.
  6. 제1항에 있어서,
    상기 데이터 저장장치 중의 상기 데이터 캐시에 대해 상기 캐시 재정렬을 진행하는 단계는,
    재할당 범위에서, 캐싱된 캐시 데이터를 재할당(reallocate)하는 단계를 더 포함하고, 상기 재할당 범위는 상기 데이터 캐시의 캐시 테일의 옆에 있는, 에러 핸들링 방법.
  7. 제6항에 있어서,
    상기 데이터 저장장치 중의 상기 데이터 캐시에 대해 상기 캐시 재정렬을 진행하는 단계는,
    적어도 하나의 트리거된 쓰기 명령(triggered write command)의 존재 여부를 판단하는 단계; 및
    상기 적어도 하나의 트리거된 쓰기 명령이 존재함에 따라, 트리거된 쓰기 명령에 의거하여 상기 데이터 캐시의 캐시 공간을 할당(allocate)하는 단계를 더 포함하는, 에러 핸들링 방법.
  8. 제6항에 있어서,
    상기 데이터 저장장치 중의 상기 데이터 캐시에 대해 상기 캐시 재정렬을 진행하는 단계는,
    아직 상기 캐시 데이터에 버퍼링되지 않은 어떤 트리거된 쓰기 명령(triggered write command)의 데이터가 있는지 판단하는 단계; 및
    상기 아직 상기 데이터 캐시에 버퍼링되지 않은 어떤 트리거된 쓰기 명령의 데이터가 있음에 따라, 상기 데이터 캐시의 캐시 공간을 재동기화(re-synchronize)하는 단계를 더 포함하는, 에러 핸들링 방법.
  9. 제1항에 있어서,
    상기 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그램밍하는 단계는,
    상기 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자 중의 하나 이상의 플러싱 블록(Flushing Block)에 프로그래밍하는 단계를 더 포함하고, 상기 하나 이상의 플러싱 블록은 상기 적어도 하나의 비휘발성 메모리 소자 중의 스페어 블록으로부터 선택되는, 에러 핸들링 방법.
  10. 제9항에 있어서,
    상기 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자 중의 상기 하나 이상의 플러싱 블록에 프로그래밍하는 단계는,
    한 페이지보다 큰 소정의 프로그래밍 단위로, 상기 재정렬된 캐시 데이터를 상기 적어도 하나 이상의 플러싱 블록에 프로그래밍하는 단계; 및
    프로그래밍 후의 나머지 캐시 데이터에의 데이터 길이가 상기 소정의 프로그래밍 단위보다 작음에 따라, 상기 나머지 캐시 데이터를 더미 데이터(Dummy Data)와 결합시켜, 결합 후의 데이터 길이가 상기 소정의 프로그래밍 단위와 같도록 한 다음, 상기 나머지 캐시 데이터와 상기 더미 데이터를 상기 하나 이상의 플러싱 블록에 프로그래밍하는 단계를 더 포함하는, 에러 핸들링 방법.
  11. 데이터 저장장치로서,
    비휘발성 메모리(non-volatile memory, NV memory) 및 컨트롤러를 포함하며,
    상기 비휘발성 메모리는 데이터를 저장하고, 상기 비휘발성 메모리는 적어도 하나의 비휘발성 메모리 소자(NV memory element)를 포함하며, 상기 적어도 하나의 비휘발성 메모리 소자는 복수의 블록을 포함하고;
    상기 컨트롤러는 상기 비휘발성 메모리에 연결되어, 상기 데이터 저장장치의 동작을 제어하고,
    상기 컨트롤러는,
    데이터를 일시적으로 저장하는 버퍼 메모리;
    특정 통신 표준에 부합하며 상기 특정 통신 표준에 따라 통신을 진행하는 전송 인터페이스 회로; 및
    호스트 디바이스(host device)로부터의 복수의 호스트 명령(host command)에 따라 상기 컨트롤러를 제어하여, 상기 호스트 디바이스가 상기 컨트롤러를 통해 비휘발성 메모리에 액세스(access)하도록 허용하는 처리 회로
    를 포함하고,
    상기 컨트롤러는 에러 핸들링 프로그램을 에러 정정 코드(Error Correction Code, ECC) 보호 기능을 가진 상기 버퍼 메모리에 업로드(upload)하며,
    적어도 하나의 에러에 따라, 상기 컨트롤러는 현재 절차의 실행을 중단하고 인터럽트 서비스를 활성화시키며,
    상기 컨트롤러는 상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하며,
    상기 컨트롤러는, 상기 호스트 디바이스에 대해 통신을 진행하는 상기 전송 인터페이스 회로를 비활성화(disable)시키고,
    상기 컨트롤러는 적어도 하나의 하드웨어 엔진 및 상기 적어도 하나의 비휘발성 메모리 소자를 리셋하며,
    상기 컨트롤러는 상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그래밍하여, 데이터 복구를 진행하며,
    상기 컨트롤러는 상기 컨트롤러 중의 워치도그(Watchdog) 모듈을 활성화시키고, 상기 전송 인터페이스 회로를 활성화시켜 상기 호스트 디바이스와 재링크하여, 소프트 리셋(soft reset)을 완료하여, 상기 데이터 저장장치가 다시 정상적으로 동작하도록 하는,
    데이터 저장장치.
  12. 제11항에 있어서,
    다양한 소프트 에러(soft error) 중의 임의의 소프트 에러의 발생에 따라, 상기 컨트롤러는 상기 현재 절차의 실행을 중단하고 상기 인터럽트 서비스를 활성화시키며, 상기 적어도 하나의 에러는 상기 임의의 소프트 에러를 포함하는, 데이터 저장장치.
  13. 제11항에 있어서,
    상기 컨트롤러는 상기 현재 절차의 실행 주소로부터 상기 에러 핸들링 프로그램의 초기 위치로 점프(jump)함으로써 상기 에러 핸들링 프로그램을 실행하는, 데이터 저장장치.
  14. 제11항에 있어서,
    상기 컨트롤러는 상기 전송 인터페이스 회로를 비활성화시켜 상기 호스트 디바이스에 대한 데이터 수신 및 전송을 정지시키는, 데이터 저장장치.
  15. 제11항에 있어서,
    상기 데이터 저장장치는 DRAM(Dynamic Random Access Memory)을 더 포함하고, 상기 데이터 캐시는 상기 DRAM에 위치하는, 데이터 저장장치.
  16. 데이터 저장장치의 컨트롤러에 있어서,
    상기 데이터 저장장치는 상기 컨트롤러와 비휘발성 메모리(non-volatile memory, NV memory)를 포함하고, 상기 비휘발성 메모리는 적어도 하나의 비휘발성 메모리 소자(NV memory element)를 포함하며, 상기 적어도 하나의 비휘발성 메모리 소자는 복수의 블록을 포함하고,
    상기 컨트롤러는,
    데이터를 일시적으로 저장하는 버퍼 메모리;
    특정 통신 표준에 부합하며 상기 특정 통신 표준에 따라 통신을 진행하는 전송 인터페이스 회로; 및
    호스트 디바이스(host device)로부터의 복수의 호스트 명령(host command)에 따라 상기 컨트롤러를 제어하여, 상기 호스트 디바이스가 상기 컨트롤러를 통해 상기 비휘발성 메모리에 액세스(access)하도록 허용하는 처리 회로를 포함하고,
    상기 컨트롤러는 에러 핸들링 프로그램을 에러 정정 코드(Error Correction Code, ECC) 보호 기능을 가진 상기 버퍼 메모리에 업로드(upload)하며,
    적어도 하나의 에러에 따라, 상기 컨트롤러는 현재 절차의 실행을 중단하고 인터럽트 서비스를 활성화시키며,
    상기 컨트롤러는 상기 버퍼 메모리의 상기 에러 핸들링 프로그램을 실행하며,
    상기 컨트롤러는, 상기 호스트 디바이스에 대해 통신을 진행하는 상기 전송 인터페이스 회로를 비활성화(disable)시키고,
    상기 컨트롤러는 적어도 하나의 하드웨어 엔진 및 상기 적어도 하나의 비휘발성 메모리 소자를 리셋하며,
    상기 컨트롤러는 상기 데이터 저장장치 중의 데이터 캐시에 대해 캐시 재정렬을 진행하고, 재정렬된 캐시 데이터를 상기 적어도 하나의 비휘발성 메모리 소자에 프로그래밍하여, 데이터 복구를 진행하며,
    상기 컨트롤러는 상기 컨트롤러 중의 워치도그(Watchdog) 모듈을 활성화시키고, 상기 전송 인터페이스 회로를 활성화시켜 상기 호스트 디바이스와 재링크하여, 소프트 리셋(soft reset)을 완료하여, 상기 데이터 저장장치가 다시 정상적으로 동작하도록 하는,
    데이터 저장장치의 컨트롤러.
  17. 제16항에 있어서,
    다양한 소프트 에러(soft error) 중의 임의의 소프트 에러의 발생에 따라, 상기 컨트롤러는 상기 현재 절차의 실행을 중단하고, 상기 인터럽트 서비스를 활성화시키며, 상기 적어도 하나의 에러는 상기 임의의 소프트 에러를 포함하는, 데이터 저장장치의 컨트롤러.
  18. 제16항에 있어서,
    상기 컨트롤러는 상기 현재 절차의 실행 주소로부터 상기 에러 핸들링 프로그램의 초기 위치로 점프하여 상기 에러 핸들링 프로그램을 실행하는, 데이터 저장장치의 컨트롤러.
  19. 제16항에 있어서,
    상기 컨트롤러는 상기 전송 인터페이스 회로를 비활성화시켜 상기 호스트 디바이스에 대한 데이터 수신 및 전송을 정지시키는, 데이터 저장장치의 컨트롤러.
  20. 제16항에 있어서,
    상기 데이터 저장장치는 DRAM(Dynamic Random Access Memory)을 더 포함하며, 상기 데이터 캐시는 상기 DRAM에 위치하는, 데이터 저장장치의 컨트롤러.
KR1020190119680A 2018-10-03 2019-09-27 에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러 KR102175884B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862740439P 2018-10-03 2018-10-03
US62/740,439 2018-10-03
TW108116832 2019-05-16
TW108116832A TWI684988B (zh) 2018-10-03 2019-05-16 錯誤處置方法以及資料儲存裝置及其控制器

Publications (2)

Publication Number Publication Date
KR20200038857A KR20200038857A (ko) 2020-04-14
KR102175884B1 true KR102175884B1 (ko) 2020-11-09

Family

ID=68136183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190119680A KR102175884B1 (ko) 2018-10-03 2019-09-27 에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러

Country Status (5)

Country Link
US (1) US10884856B2 (ko)
EP (1) EP3647951B1 (ko)
JP (1) JP6811819B2 (ko)
KR (1) KR102175884B1 (ko)
CN (1) CN110990175B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220074079A (ko) 2020-11-27 2022-06-03 삼성전자주식회사 스토리지 컨트롤러 및 스토리지 컨트롤러의 에러 복구 방법
US11714563B2 (en) * 2021-02-10 2023-08-01 Micron Technology, Inc. Volatile register to detect power loss
CN112835536B (zh) * 2021-03-10 2023-08-29 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
WO2023075086A1 (ko) * 2021-10-25 2023-05-04 삼성전자 주식회사 캐시 손상을 관리하는 장치 및 그 동작 방법
WO2024043267A1 (ja) * 2022-08-25 2024-02-29 日東電工株式会社 データ処理装置および生体センサ
CN115410641B (zh) * 2022-11-02 2023-03-14 合肥康芯威存储技术有限公司 一种存储系统及其测试方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182847A (ja) 2013-03-18 2014-09-29 Toshiba Corp エラー訂正方法、エラー訂正装置、および情報記憶装置。

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69027491T2 (de) 1989-08-01 1997-02-06 Digital Equipment Corp Verfahren zur Softwarefehlerbehandlung
JPH0799512B2 (ja) 1992-11-18 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラム可能な外部記憶制御装置
US6762733B2 (en) 1993-06-24 2004-07-13 Nintendo Co. Ltd. Electronic entertainment and communication system
US6332181B1 (en) 1998-05-04 2001-12-18 International Business Machines Corporation Recovery mechanism for L1 data cache parity errors
US6802039B1 (en) 2000-06-30 2004-10-05 Intel Corporation Using hardware or firmware for cache tag and data ECC soft error correction
US6804794B1 (en) 2001-02-28 2004-10-12 Emc Corporation Error condition handling
KR100439507B1 (ko) 2002-03-18 2004-07-09 삼성전기주식회사 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법
US7003620B2 (en) 2002-11-26 2006-02-21 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US7096407B2 (en) 2003-02-18 2006-08-22 Hewlett-Packard Development Company, L.P. Technique for implementing chipkill in a memory system
JP2006107045A (ja) 2004-10-04 2006-04-20 Hitachi Ltd ストレージ装置
EP1912121B1 (en) * 2006-09-13 2009-08-12 STMicroelectronics S.r.l. NAND flash memory device with ECC protected reserved area for non volatile storage of redundancy data
CN101206599B (zh) * 2006-12-19 2011-04-06 深圳市顶星数码网络技术有限公司 计算机主板设备诊断和隔离方法
JP2009230414A (ja) 2008-03-21 2009-10-08 Toshiba Corp 複数の不揮発性メモリデバイスを有する記憶装置
US8245105B2 (en) 2008-07-01 2012-08-14 International Business Machines Corporation Cascade interconnect memory system with enhanced reliability
US9063836B2 (en) 2010-07-26 2015-06-23 Intel Corporation Methods and apparatus to protect segments of memory
US9690642B2 (en) 2012-12-18 2017-06-27 Western Digital Technologies, Inc. Salvaging event trace information in power loss interruption scenarios
US8959420B1 (en) * 2012-12-19 2015-02-17 Datadirect Networks, Inc. Data storage system and method for data migration between high-performance computing architectures and data storage devices using memory controller with embedded XOR capability
US9262270B2 (en) 2012-12-28 2016-02-16 Intel Corporation Live error recovery
US10042750B2 (en) 2013-03-15 2018-08-07 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor
JP6218652B2 (ja) 2014-03-12 2017-10-25 三菱電機株式会社 計算機、障害処理方法及びプログラム
US9971647B2 (en) * 2014-07-31 2018-05-15 Winbond Electronics Corporation Apparatus and method for programming ECC-enabled NAND flash memory
US9715428B1 (en) * 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
US9984768B2 (en) * 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
US9563373B2 (en) * 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US20160118132A1 (en) * 2014-10-27 2016-04-28 Sandisk Enterprise Ip Llc Low Impact Read Disturb Handling
US10592122B2 (en) 2015-03-31 2020-03-17 Sandisk Technologies Llc Inherent adaptive trimming
US20170177276A1 (en) 2015-12-21 2017-06-22 Ocz Storage Solutions, Inc. Dual buffer solid state drive
KR102527992B1 (ko) 2016-03-14 2023-05-03 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US20180025777A1 (en) * 2016-07-19 2018-01-25 Sandisk Technologies Llc High-reliability memory read technique
US10534709B2 (en) 2016-08-31 2020-01-14 Sandisk Technologies Llc Flush command consolidation
TWI602188B (zh) * 2017-01-03 2017-10-11 慧榮科技股份有限公司 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182847A (ja) 2013-03-18 2014-09-29 Toshiba Corp エラー訂正方法、エラー訂正装置、および情報記憶装置。

Also Published As

Publication number Publication date
US20200110662A1 (en) 2020-04-09
CN110990175A (zh) 2020-04-10
JP6811819B2 (ja) 2021-01-13
JP2020057384A (ja) 2020-04-09
EP3647951A1 (en) 2020-05-06
CN110990175B (zh) 2023-03-14
KR20200038857A (ko) 2020-04-14
US10884856B2 (en) 2021-01-05
EP3647951B1 (en) 2021-06-30

Similar Documents

Publication Publication Date Title
KR102175884B1 (ko) 에러 핸들링 방법 및 데이터 저장장치 및 그 컨트롤러
US11868618B2 (en) Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
KR101856506B1 (ko) 데이터 저장 장치 및 그것의 데이터 쓰기 방법
EP2438521B1 (en) Object oriented memory in solid state devices
KR101497826B1 (ko) 적응형 압축 비율을 사용하는 플러시 명령들의 빠른 실행
US8555000B2 (en) Data storage device and data storing method thereof
JP5364807B2 (ja) メモリコントローラ及び不揮発性記憶装置
KR101581859B1 (ko) 메모리 시스템 및 그것의 플래시 변환 계층의 데이터 관리 방법
EP3070715A1 (en) Solid state disk and data movement method
US10990325B2 (en) Write control method, associated data storage device and controller thereof
US20130346829A1 (en) Flash memory device and storage control method
TWI684988B (zh) 錯誤處置方法以及資料儲存裝置及其控制器
US10635596B2 (en) Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes
US20170300381A1 (en) Memory controller and data control method
KR20240053298A (ko) 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant