KR20100041313A - 데이터 저장 방법, 데이터 저장 장치 및 그 시스템 - Google Patents

데이터 저장 방법, 데이터 저장 장치 및 그 시스템 Download PDF

Info

Publication number
KR20100041313A
KR20100041313A KR1020080100438A KR20080100438A KR20100041313A KR 20100041313 A KR20100041313 A KR 20100041313A KR 1020080100438 A KR1020080100438 A KR 1020080100438A KR 20080100438 A KR20080100438 A KR 20080100438A KR 20100041313 A KR20100041313 A KR 20100041313A
Authority
KR
South Korea
Prior art keywords
block
controller
access command
nonvolatile memory
hard disk
Prior art date
Application number
KR1020080100438A
Other languages
English (en)
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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020080100438A priority Critical patent/KR20100041313A/ko
Priority to US12/577,946 priority patent/US20100095149A1/en
Publication of KR20100041313A publication Critical patent/KR20100041313A/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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/068Hybrid storage device

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 방법, 데이터 저장 장치 및 그 시스템이 개시된다. 본 발명의 실시예에 따른 데이터 저장 방법은, 하드 디스크 드라이브와 불휘발성 메모리를 포함하는 데이터 저장 장치에서, 불휘발성 메모리에 액세스하기 위한 액세스 명령을 수신하고 해석하여 상기 해석 결과에 기초하여 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브로 전송한다. 본 발명에 따르면, 불휘발성 메모리에 결함이 발생하였거나 발생이 우려되는 경우에 이를 하드 디스크 드라이브에 대체 저장함으로써, 불휘발성 메모리의 결함으로 인한 데이터의 손실을 방지하고 불휘발성 메모리의 일부분의 결함으로 제품 전체를 사용하지 못하는 문제를 해결할 수 있어, 저장 장치에 대한 신뢰성을 증가시킬 수 있다.
데이터, 결함, 불휘발성, 하이브리드, 하드 디스크 드라이브

Description

데이터 저장 방법, 데이터 저장 장치 및 그 시스템{Data storage method, data storage device and system thereof}
본 발명의 실시예는 데이터 저장 방법, 데이터 저장 장치 및 그 시스템에 관한 것으로서, 보다 상세하게는 불휘발성 메모리의 특정 메모리 블록을 액세스하기 위한 액세스 명령을 수신하여 이를 해석하고, 해석된 결과에 기초하여 상기 액세스 명령에 포함된 데이터를 하드 디스크 드라이브로 전송하여 저장하도록 하는 데이터 저장 방법, 데이터 저장 장치 및 그 시스템에 관한 것이다.
인터넷 네트워크 등의 광범위한 보급으로 인해 데이터의 처리량이 급격하게 증가하고 있어, 상기 데이터에 액세스하는 속도를 향상시키는 연구가 계속 진행되고 있다.
일반적인 하드 디스크 드라이브는 부팅 시간이 길다는 등의 단점이 있어, 최근에는 통상의 하드 디스크 드라이브에 불휘발성 메모리를 추가적으로 구비한 하이브리드 하드 디스크 드라이브(hybrid hard disk drive, H-HDD)가 개발되어 상용화되고 있다.
상기 하이브리드 하드 디스크 드라이브는 일반적인 하드 디스크 드라이브에 비해 운영체제의 부팅 시간을 단축시킬 수 있다. 즉, 운영체제가 부팅하기 위해 필요한 파일들을 불휘발성 메모리에 복사시켜 두었다가 부팅시에 이를 사용함으로써 부팅 시간을 단축시킬 수 있다.
통상의 하드 디스크 드라이브는 파워 리셋시에 스핀들 모터를 규정된 속도까지 회전시키기 위한 시간이 필요하지만, 하이브리드 하드 디스크 드라이브를 사용하는 호스트는 운영 체제가 부팅하기 위해 필요한 파일들을 상기 불휘발성 메모리로부터 읽어들일 수 있기 때문에 그만큼 부팅시간을 단축시킬 수 있다.
하지만, 상기 불휘발성 메모리의 일부 또는 전체 영역에 결함이 발생한 경우에는 데이터 저장 장치 전체를 사용하지 못하는 경우가 발생할 수 있다.
또한, 상기 불휘발성 메모리는 라이트, 리드, 또는 이레이즈 동작을 반복하면 시간이 흐를수록 데이터 보존 능력이 상실되어, 데이터에 대한 신뢰성이 떨어진다는 문제점이 있다.
따라서, 결함이 발생하거나 결함이 발생할 우려가 있는 메모리 블록에 대해서는 더 이상 사용되지 않도록 조치를 취할 것이 요구된다.
본 발명은 상기의 문제점을 해결하고 안출된 것으로서, 본 발명의 목적은 불휘발성 메모리에 결함이 발생시 데이터를 안전하게 저장할 수 있는 방법, 장치, 및 시스템을 제공하는 것이다.
또한, 불휘발성 메모리에서 발생하는 결함을 하드 디스크 드라이브의 특정 영역으로 대체하여 데이터의 신뢰성 및 수명을 연장할 수 있는 방법, 장치, 및 시스템을 제공하는 것이다.
상기의 과제를 해결하기 위한 데이터 저장 방법은, 컨트롤러가 불휘발성 메모리의 특정 메모리 블록을 액세스하기 위한 액세스 명령을 수신하는 단계; 및 상기 컨트롤러가 수신된 상기 액세스 명령을 해석하고, 해석 결과에 기초하여 상기 액세스 명령에 포함된 데이터를 하드 디스크 드라이브로 전송하는 단계를 포함한다.
상기 컨트롤러가 수신된 상기 액세스 명령을 해석하는 단계는, 상기 컨트롤러가 상기 액세스 명령에 포함된 액세스 어드레스를 수신하는 단계; 및 상기 컨트롤러가 수신된 상기 액세스 어드레스와 결함테이블에 기록된 메모리 블록의 어드레스를 비교하는 단계를 포함한다.
상기 데이터를 상기 하드 디스크 드라이브로 전송하는 단계는, 상기 수신된 액세스 어드레스와 상기 결함테이블에 기록된 메모리 블록의 어드레스를 비교한 결 과에 기초하여, 상기 데이터를 상기 특정 메모리 블록에 상응하는 상기 하드 디스크 드라이브의 특정 영역에 저장하기 위해 상기 하드 디스크 드라이브로 전송한다.
상기 데이터 저장 방법은, 상기 불휘발성 메모리를 구성하는 각 블록의 결함 발생 유무를 판단하는 단계; 및 상기 판단 결과에 기초하여, 결함이 발생한 블록을 상기 하드 디스크 드라이브의 특정 블록으로 대체하고, 상기 결함이 발생한 블록 및 상기 결함이 발생한 블록이 대체된 블록의 정보를 상기 결함테이블에 기록하는 단계를 더 포함한다.
상기 각 블록의 결함 발생 유무를 판단하는 단계는, 상기 불휘발성 메모리를 구성하는 각 블록의 라이트 회수, 또는 이레이즈 횟수 중 적어도 하나를 계수하는 단계; 및 상기 계수 결과가 기설정된 임계값을 초과하면 해당 블록에 결함이 발생한 것으로 판단하는 단계를 포함한다.
상기 각 블록의 결함 발생 유무를 판단하는 단계는, 상기 불휘발성 메모리를 구성하는 각 블록의 에러 수정 코드(error correction code)값을 확인하는 단계; 및 상기 확인 결과 상기 에러 수정 코드값에 이상이 발견되면, 상기 에러 수정 코드값의 이상이 발견된 블록에 결함이 발생한 것으로 판단하는 단계를 포함한다.
상기의 과제를 해결하기 위한 데이터 저장 장치는, 불휘발성 메모리; 상기 불휘발성 메모리의 결함 블록을 대체하는 대체 블록을 포함하는 하드 디스크 드라이브; 및 상기 불휘발성 메모리의 특정 메모리 블록을 액세스하기 위한 액세스 명령을 수신하고, 수신된 상기 액세스 명령을 해석하여, 해석 결과에 기초해서 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브의 대체 블록으로 전송 하도록 제어하는 컨트롤러를 포함한다.
상기 데이터 저장 장치는, 상기 결함 블록의 정보 및 상기 대체 블록의 정보가 기록되는 결함테이블을 더 포함한다.
상기 컨트롤러는, 상기 액세스 명령에 포함된 액세스 어드레스와 상기 결함테이블에 기록된 결함 블록의 어드레스를 비교하고, 비교한 결과에 기초하여 상기 액세스 명령에 포함된 데이터를 상기 결함 블록으로 전송하는 대신에 상기 하드 디스크 드라이브의 대체 블록으로 전송하여 상기 데이터가 상기 대체 블록에 저장되도록 제어한다.
상기 컨트롤러는, 상기 불휘발성 메모리를 구성하는 각 블록의 결함 발생 유무를 판단한다.
상기 컨트롤러는, 상기 불휘발성 메모리를 구성하는 상기 각 블록의 라이트 횟수, 또는 이레이즈 횟수 중 적어도 하나를 계수하고, 계수 결과에 기초하여 상기 각 블록의 결함 발생 유무를 판단한다.
상기 컨트롤러는, 상기 불휘발성 메모리를 구성하는 상기 각 블록의 에러 수정 코드(error correction code)값을 확인하고, 상기 에러 수정 코드값의 계산 결과에 기초하여 상기 각 블록의 결함 발생 유무를 판단한다.
상기의 과제를 해결하기 위한 데이터 저장 시스템은, 메인프로세서; 및 상기 메인프로세서로부터 출력된 액세스 명령을 수신하는 데이터 저장 장치를 포함하고,상기 데이터 저장 장치는, 불휘발성 메모리; 상기 불휘발성 메모리의 결함 블록을 대체하는 대체 블록을 포함하는 하드 디스크 드라이브; 및 상기 액세스 명령을 수 신하고, 수신된 상기 액세스 명령을 해석하여, 해석 결과에 기초해서 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브의 대체 블록으로 전송하도록 제어하는 컨트롤러를 포함한다.
상기 컨트롤러는, 상기 액세스 명령에 포함된 액세스 어드레스와 결함이 발생한 블록의 어드레스를 비교하고, 비교 결과에 기초하여 상기 데이터를 상기 대체 블록으로 전송하도록 제어한다.
본 발명의 실시예에 따른 데이터 저장 기술은, 불휘발성 메모리의 결함으로 인한 데이터의 손실을 방지할 수 있는 효과가 있다.
또한, 본 발명의 실시예에 따른 데이터 저장 기술은, 불휘발성 메모리에서 발생하는 결함을 하드 디스크 드라이브에 대체함으로써, 저장 장치에 저장되는 데이터의 신뢰성을 향상시킬 수 있는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조해야만 한다.
이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 이해하고 실시할 수 있도록 본 발명의 바람직한 실시예를 상세하게 설명하도록 한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시예에 따른 데이터 저장 장치(100) 및 이를 포함하는 시스템(10)의 구성을 나타내는 블록도이다.
본 발명의 실시예에 다른 데이터 저장 장치(100)는, 불휘발성 메모리(Non-Volatile Memory(NVM), 110); 상기 불휘발성 메모리(110)의 결함 블록을 대체하는 대체 블록을 포함하는 하드 디스크 드라이브(hard disk drive(HDD), 120); 및 상기 불휘발성 메모리(110)의 특정 메모리 블록을 액세스하기 위한 액세스 명령을 수신하고, 수신된 상기 액세스 명령을 해석하여, 해석 결과에 기초해서 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브(120)의 대체 블록으로 전송하도록 제어하는 컨트롤러(130)를 포함한다.
본 명세서에서 상기 결함(defect)이란, 불휘발성 메모리(110)의 임의의 블록에서 라이트 또는 리드를 수행하는 경우에 라이트의 내용과 리드의 내용이 서로 상이하거나 또는 라이트 에러 또는 리드 에러가 발생하는 것으로 정의한다.
또한, 상기 결함이란 물리적 결함으로 인하여 상기 임의의 블록에 데이터를 저장할 수 없는 경우를 포함한다.
또한, 상기 액세스(access)는 리드(read) 동작, 라이트(write) 동작, 이레즈(erase) 동작, 또는 프로그램(program) 동작을 모두 포함한다.
상기 데이터 저장 장치(100)는, 상기 불휘발성 메모리(110) 및 상기 하드 디스크 드라이브(120)가 포함된 장치로서 구현되며, 예컨대 하이브리드 하드 디스크 드라이브(hybrid hard disk drive)를 예시할 수 있다.
상기 불휘발성 메모리(110)는 전원이 공급되지 않아도 저장된 데이터를 계속 유지하는 메모리를 모두 포함하는 것으로서, 예컨대 ROM(read only memory), PROM(programmable read only memory), EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), 플래시 메모리(flash memory), FRAM(ferroelectrics random access memory), MRAM(magnetic random access memory), PRAM(phase change random access memory), NRAM(nano random access memory), SONOS(silicon-oxide-nitride-oxide-silicon), 및 레이스 트랙 메모리(racetrack memory) 중 어느 하나일 수 있다.
상기 불휘발성 메모리(110) 및 상기 하드 디스크 드라이브(120)는 하나의 인터페이스를 통해 호스트(host)와 연결되어 있고, 따라서 내부적으로는 분리된 메모리 영역으로 구현되지만 외부적으로는 하나의 메모리 장치로서 동작하는 것처럼 보인다.
상술한 바와 같이, 불휘발성 메모리(110)에 결함이 발생하면 데이터가 손실될 우려가 있거나 또는 제품 전체, 예컨대 상기 데이터 저장 장치(100)를 사용하지 못하는 경우가 발생할 수 있기 때문에, 본 발명의 실시예에 따른 데이터 저장 방법에서는 불휘발성 메모리(110)의 결함 블록을 상기 하드 디스크 드라이브(120)의 특정 영역으로 대체함으로써 데이터의 신뢰성을 증가시킨다.
따라서, 상기 하드 디스크 드라이브(120)는 상기 불휘발성 메모리(110)에서 발생한 결함 블록을 대체하기 위한 대체 영역(121)을 포함할 수 있다. 상기 대체 영역(121)은 하나 이상의 대체 블록, 예컨대 섹터를 포함한다.
본 명세서에서는 데이터의 리드(read) 또는 라이트(write) 단위를 블 록(block) 단위로 수행하는 것으로 예시하였으며, 상기 블록은 적어도 하나의 메모모리 셀(memory cell)을 포함한다.
또한, 상기 데이터 저장 장치(100)는 상기 불휘발성 메모리(110) 중 결함이 발생한 블록의 정보 및 상기 결함이 발생한 블록이 대체된 블록의 정보가 기록되는 결함테이블(defect table)을 더 포함한다.
상기 결함테이블은 상기 불휘발성 메모리(110), 상기 하드 디스크 드라이브(120), 또는 상기 컨트롤러(130) 내부 중 어느 하나에 저장될 수 있으며, 실시예에 따라 상기 데이터 저장 장치가 구동될 때에 랜덤 액세스 메모리(RAM, 140)에 복사하여 저장할 수도 있다.
도 1에서는 설명의 편의를 위해서, 상기 랜덤 액세스 메모리(140)가 상기 컨트롤러(130)와 분리된 것으로 도시하였지만, 실시예에 따라 상기 랜덤 액세스 메모리(140)가 상기 컨트롤러(130)의 내부에 구현될 수도 있다.
상기 컨트롤러(130)는 버스(bus)를 통해서 메인프로세서(main processor, 200)로부터 액세스 명령(access command)을 수신한다. 상기 액세스 명령은 액세스 어드레스(access address)를 포함하며, 상기 불휘발성 메모리(110) 또는 상기 하드 디스크 드라이브(120)에 라이트 또는 프로그램을 하기 위해 액세스하는 경우에는 소정의 데이터를 더 포함할 수 있다.
또한, 상기 컨트롤러(130)가 수신한 액세스 명령은 상기 불휘발성 메모리(110)의 특정 메모리 블록을 액세스하기 위한 것이거나 또는 상기 하드 디스크 드라이브(120)의 특정 메모리 블록을 액세스하기 위한 것이다.
상기 컨트롤러(130)가 수신한 액세스 명령이 상기 하드 디스크 드라이브(120)의 특정 메모리 블록을 액세스하기 위한 것이면, 상기 컨트롤러(130)는 해당 블록에 액세스하도록 제어한다.
상기 컨트롤러(130)가 수신한 액세스 명령이 상기 불휘발성 메모리(110)의 특정 메모리 블록을 액세스하기 위한 것이면, 본 발명의 실시예에 따른 방법이 적용될 수 있다.
구체적으로, 상기 메인프로세서(200)로부터 상기 불휘발성 메모리(110)의 특정 메모리 블록을 액세스하기 위한 액세스 명령이 수신되면, 상기 컨트롤러(130)는 수신된 상기 액세스 명령을 해석한다.
예컨대, 상기 액세스 명령에 포함된 액세스 어드레스를 수신하여, 수신된 상기 액세스 어드레스와 상기 결함테이블에 기록된 결함 블록의 어드레스를 비교한다.
비교 결과, 상기 수신된 액세스 어드레스와 상기 결함테이블에 기록된 결함 블록의 어드레스가 일치하면, 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브(120)의 특정 영역에 저장하기 위해 상기 하드 디스크 드라이브(120)로 전송한다. 상기 특정 영역은 상기 하드 디스크 드라이브(120)의 적어도 일부일 수 있으며, 예컨대 상기 대체 영역(121)일 수 있다.
따라서, 결함이 발생한 메모리 블록에 저장될 수 있는 데이터를 상기 컨트롤러(130)의 제어에 의해서, 결함이 발생하지 않은 상기 하드 디스크 드라이브(120)의 특정 영역(예컨대, 상기 대체 영역(121) 등)에 저장함으로써, 데이터의 신뢰도 를 향상시킬 수 있다.
또한, 본 발명의 실시예에 있어서, 플래시 메모리를 구성하는 각 블록의 상태에 따라 상기 결함테이블이 업데이트될 수 있다.
즉, 상기 컨트롤러(130)는 상기 불휘발성 메모리(110)를 구성하는 각 블록의 결함 발생 유무를 판단하여, 결함이 발생한 블록을 상기 하드 디스크 드라이브(120)의 특정 영역으로 대체(예컨대, 상기 대체 영역으로 포인터를 지정)함으로써, 데이터의 손실을 미리 방지할 수 있다.
상기 불휘발성 메모리(110)를 구성하는 각 블록이 결함이 발생한 것인지의 여부를 판단하는 기준은 실시예에 따라 상이할 수 있다.
예컨대, 본 발명의 실시예에 따르면, 상기 불휘발성 메모리(110)를 구성하는 각 블록의 라이트 횟수, 또는 이레이즈 횟수에 기초하여 상기 각 블록의 결함 유무를 판단할 수 있다.
통상적으로, 상기 불휘발성 메모리(110)는 사용 횟수에 일정한 한계점이 있으며, 이러한 한계점은 메모리의 제조사, 제조 환경 등에 따라 상이할 수 있다. 또한, 상기 불휘발성 메모리(100)의 사용 횟수가 증가할수록 기록 또는 독출시에 데이터 에러가 급격하게 증가한다.
예컨대, 실시예에 따라 소정의 메모리 장치의 이레이즈 제한 횟수가 1,000,000번으로 설정되어 있을 수 있다. 그러면, 상기 컨트롤러(130)는 상기 불휘발성 메모리(110)를 구성하는 각 블록의 이레이즈 횟수를 계수하여, 상기 제한 횟수인 1,000,000번을 초과하면 해당 블록을 결함이 발생한 블록으로 판단할 수 있 다.
다음으로, 결함이 발생한 블록의 정보 및 상기 결함이 발생한 블록이 대체된 대체 블록의 정보를 상기 결함테이블에 기록한다. 상기 정보는 어드레스 정보 등을 포함할 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 상기 컨트롤러(130)는 상기 불휘발성 메모리(110)를 구성하는 각 블록의 에러 수정 코드(error correction code, ECC)값에 기초하여 결함이 발생하였는지 여부를 판단할 수 있다.
구체적으로, 메모리의 블록은 데이터의 속성에 의해 결정되는 고유값인 에러 수정 코드(ECC)값이 저장되고, 상기 에러 수정 코드(ECC)값은 블록에 저장된 데이터가 소정의 연산 동작을 거침으로써 얻어질 수 있다.
따라서, 상기 블록에 저장된 데이터에 속성이 변경되거나 결함이 발생하면, 상기 에러 수정 코드값의 계산 결과에 이상이 발생한다. 따라서, 상기 컨트롤러(130)는 각 블록의 에러 수정 코드값을 이용한 계산 결과에 이상이 발생하는 경우에 해당 블록을 결함이 있는 블록으로 판단한다.
다음으로, 상기 컨트롤러(130)는 결함이 발생한 블록의 정보 및 상기 결함이 발생한 블록이 대체된 대체 블록의 정보를 상기 결함테이블에 기록한다. 상기 정보는 어드레스 정보 등을 포함할 수 있다.
또한, 실시예에 따라 상기 에러 수정 코드값을 대신하여, 에러 검출 코드(error detection code, EDC)값을 이용할 수도 있다.
또한, 본 발명의 실시예에 따른 데이터 저장 시스템(10)은, 메인프로세 서(200); 및 상기 메인프로세서(200)로부터 액세스 명령을 수신하는 데이터 저장 장치(100)를 포함하고, 상기 데이터 저장 장치(100)는, 불휘발성 메모리(110); 상기 불휘발성 메모리(110)의 결함 블록을 대체하는 대체 블록을 포함하는 하드 디스크 드라이브(120); 및 상기 액세스 명령을 수신하고, 수신된 상기 액세스 명령을 해석하여, 해석 결과에 기초해서 상기 액세스 명령에 포함된 데이터를 상기 불휘발성 메모리(110) 대신에 상기 하드 디스크 드라이브(120)의 대체 블록으로 전송하도록 제어하는 컨트롤러(130)를 포함한다. 상기 하드 디스크 드라이브(120)는 자기 저장 장치의 일 예이다.
상기 데이터 저장 시스템(10)은 본 발명의 실시예에 따른 데이터 저장 장치(100)를 포함하는 임의의 시스템을 모두 포함하고, 예컨대 하드 디스크 레코더(HDD recorder), 휴대 전화(cellular phone) 등의 개인단말기(terminal), 컴퓨터(PC, 노트북 등), 네비게이터 장치(navigator), 가정자동화시스템(home automation), 음악재생기(mp3플레이어 등), 캠코더(camcorder), 영상재생기(DVIX 플레이어 등), 스토리지 서버(storage server), 또는 PMP(portable multimedia player) 등을 예시할 수 있다.
도 2는 본 발명의 실시예에 따른 데이터 저장 방법의 과정을 설명하기 위한 순서도이다.
도 1 및 도 2를 참고하여, 본 발명의 실시예에 따른 데이터 저장 방법을 설명하도록 한다. 컨트롤러(130)는 메인프로세서(200)로부터 액세스 명령을 수신한다(S205). 상기 액세스 명령은 액세스 어드레스 또는 데이터 중 적어도 하나를 포 함할 수 있다.
다음으로, 상기 컨트롤러(130)는 상기 액세스 명령이 불휘발성 메모리(110)를 액세스하기 위한 것인지, 하드 디스크 드라이브(120)를 액세스하기 위한 것인지를 판단한다(S210).
판단 결과, 하드 디스크 드라이브(120)를 액세스하기 위한 액세스 명령인 경우에는, 상기 액세스 명령에 포함된 액세스 어드레스에 대응하는 블록 영역을 액세스하도록 제어한다(S215).
판단 결과, 불휘발성 메모리(110)를 액세스하기 위한 액세스 명령인 경우에는, 상기 액세스 명령에 포함된 액세스 어드레스를 수신한다(S220).
다음으로, 상기 컨트롤러(130)는 수신된 액세스 어드레스와 상기 결함테이블에 기록된 메모리 블록들의 어드레스들을 비교하여 일치하는 어드레스가 존재하는 지를 판단한다(S225).
판단 결과, 일치하는 어드레스가 존재하지 않으면, 메인프로세서(200)가 액세스하고자 하는 해당 블록은 결함이 발생하지 않은 것이므로, 컨트롤러(130)는 상기 해당 블록에 데이터를 저장하도록 액세스한다(S230).
그러나, 판단 결과, 일치하는 어드레스가 존재하면, 해당 블록은 결함이 발생한 것이므로, 컨트롤러(130)는 결함 블록에 데이터를 저장하지 않고 상기 하드 디스크 드라이브(120)에 포함된 특정 영역(예컨대, 대체 영역(121) 등)에 저장하도록 제어한다(S235).
또한, 상술한 과정은 데이터의 리드(read) 동작에도 동일하게 적용될 수 있 다. 호스트로부터 불휘발성 메모리(110)의 특정 영역을 리드하기 위한 리드 명령이 수신되면, 상기 컨트롤러(130)는 상기 리드 명령에 대응하는 리드 어드레스를 상기 결함테이블에 기록된 메모리 블록들의 어드레스와 비교한다.
비교 결과 일치하는 어드레스가 존재하지 않는 경우에, 상기 컨트롤러(130)는 상기 리드 어드레스에 해당하는 영역으로부터 직접 데이터를 리드한다.
비교 결과 일치하는 어드레스가 존재하는 경우에, 리드하고자 하는 데이터는 상술한 데이터 저장 과정을 통해서 이미 상기 하드 디스크 드라이브(120)에 포함된 특정 영역(예컨대, 대체 영역(121) 등)에 기저장되어 있으므로, 상기 대체 영역으로부터 해당 데이터를 리드한다.
도 3a 및 도 3b는 본 발명의 실시예에 따라, 결함테이블을 생성하는 과정을 설명하기 위한 순서도이다.
도 3a는 본 발명의 실시예에 따라 블록의 결함 발생 유무를 판단하는 방법을 설명하기 위한 순서도이다.
도 1 및 도 3a를 참고하여 설명하면, 컨트롤러(130)는 불휘발성 메모리(110)를 구성하는 각 블록의 라이트 횟수, 또는 이레이즈 횟수 중 적어도 하나를 계수한다(S305). 상기 컨트롤러(130)는 주기적으로 상기 횟수 들을 계수할 수 있으며, 라이트 동작, 또는 이레이즈 동작이 발생할 때마다 상기 동작의 횟수들을 계수할 수 있다.
다음으로, 상기 컨트롤러(130)는 상기 계수 결과가 기설정된 임계값을 초과하는지를 판단한다(S310).
판단 결과, 계수 결과가 기설정된 임계값을 초과하면, 컨트롤러(130)는 해당 블록에 결함이 발생한 것으로 판단하고(S315), 결함이 발생한 블록을 대체하는 대체 블록을 상기 하드 디스크 드라이브(120)의 특정 영역(예컨대, 대체 영역(121) 등)에 지정한다(S320). 다음으로, 컨트롤러(130)는 결함이 발생한 블록의 정보 및 대체 블록의 정보를 결함테이블에 기록한다(S325).
도 3b는 본 발명의 다른 실시예에 따라 블록의 결함 발생 유무를 판단하는 방법을 설명하기 위한 순서도이다.
도 1 및 도 3b를 참고하여 설명하면, 컨트롤러(130)는 불휘발성 메모리(110)를 구성하는 각 블록의 에러 수정 코드(ECC)값을 확인한다(S405). 다음으로, 컨트롤러(130)는 에러 수정 코드를 이용한 계산 결과에 기초하여 결함이 발생하였는지를 판단한다(S410).
판단 결과, 상기 에러 수정 코드값을 이용한 계산 결과에 이상이 발생하면, 컨트롤러(130)는 해당 블록에 결함이 있는 것으로 판단하고(S415), 결함이 발생한 블록을 대체하는 대체 블록을 상기 하드 디스크 드라이브(120)의 특정 영역(예컨대, 대체 영역(121) 등)에 지정한다(S420). 다음으로, 컨트롤러(130)는 결함이 발생한 블록의 정보 및 대체 블록의 정보를 결함테이블에 기록한다(S425).
상술한 바와 같이, 본 발명의 실시예에 따른 방법, 장치, 또는 시스템 등으로 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필연적으로 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독이 가능한 매체에 저장될 수 있으며 또는 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다. 프로세서 판독이 가능한 매체는 정보를 저장 또는 전송할 수 있는 어떠한 매체도 포함한다. 프로세서 판독이 가능한 매체의 예로는 전자 회로, 반도체 메모리 소자, ROM, 플래시 메모리, EROM, 플로피 디스크, 광 디스크, 하드 디스크, 광섬유 매체, 무선 주파수(RF) 망 등이 있다. 컴퓨터 데이터 신호는 전자 망 채널, 광 섬유, 공기 전자계, RF 망 등과 같은 전송 매체 위로 전파될 수 있는 어떠한 신호도 포함한다.
본 발명은 도면에 도시된 일 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 것을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 데이터 저장 장치 및 이를 포함하는 시스템의 구성을 나타내는 블록도.
도 2는 본 발명의 실시예에 따른 데이터 저장 방법의 과정을 설명하기 위한 순서도.
도 3a 및 도 3b는 본 발명의 실시예에 따라, 결함테이블을 생성하는 과정을 설명하기 위한 순서도.

Claims (14)

  1. 컨트롤러가 불휘발성 메모리의 특정 메모리 블록을 액세스하기 위한 액세스 명령을 수신하는 단계; 및
    상기 컨트롤러가 수신된 상기 액세스 명령을 해석하고, 해석 결과에 기초하여 상기 액세스 명령에 포함된 데이터를 하드 디스크 드라이브로 전송하는 단계를 포함하는 데이터 저장 방법.
  2. 제1항에 있어서, 상기 컨트롤러가 수신된 상기 액세스 명령을 해석하는 단계는,
    상기 컨트롤러가 상기 액세스 명령에 포함된 액세스 어드레스를 수신하는 단계; 및
    상기 컨트롤러가 수신된 상기 액세스 어드레스와 결함테이블에 기록된 메모리 블록의 어드레스를 비교하는 단계를 포함하는 데이터 저장 방법.
  3. 제2항에 있어서, 상기 데이터를 상기 하드 디스크 드라이브로 전송하는 단계는,
    상기 수신된 액세스 어드레스와 상기 결함테이블에 기록된 메모리 블록의 어드레스를 비교한 결과에 기초하여, 상기 데이터를 상기 특정 메모리 블록에 상응하는 상기 하드 디스크 드라이브의 특정 영역에 저장하기 위해 상기 하드 디스크 드 라이브로 전송하는 데이터 저장 방법.
  4. 제2항에 있어서, 상기 데이터 저장 방법은,
    상기 불휘발성 메모리를 구성하는 각 블록의 결함 발생 유무를 판단하는 단계; 및
    상기 판단 결과에 기초하여, 결함이 발생한 블록을 상기 하드 디스크 드라이브의 특정 블록으로 대체하고, 상기 결함이 발생한 블록 및 상기 결함이 발생한 블록이 대체된 블록의 정보를 상기 결함테이블에 기록하는 단계를 더 포함하는 데이터 저장 방법.
  5. 제4항에 있어서, 상기 각 블록의 결함 발생 유무를 판단하는 단계는,
    상기 불휘발성 메모리를 구성하는 각 블록의 라이트 회수, 또는 이레이즈 횟수 중 적어도 하나를 계수하는 단계; 및
    상기 계수 결과가 기설정된 임계값을 초과하면 해당 블록에 결함이 발생한 것으로 판단하는 단계를 포함하는 데이터 저장 방법.
  6. 제4항에 있어서, 상기 각 블록의 결함 발생 유무를 판단하는 단계는,
    상기 불휘발성 메모리를 구성하는 각 블록의 에러 수정 코드(error correction code)값을 확인하는 단계; 및
    상기 확인 결과 상기 에러 수정 코드값을 이용한 계산 결과에 이상이 발생하 면, 해당 블록에 결함이 발생한 것으로 판단하는 단계를 포함하는 데이터 저장 방법.
  7. 불휘발성 메모리;
    상기 불휘발성 메모리의 결함 블록을 대체하는 대체 블록을 포함하는 하드 디스크 드라이브; 및
    상기 불휘발성 메모리의 특정 메모리 블록을 액세스하기 위한 액세스 명령을 수신하고, 수신된 상기 액세스 명령을 해석하여, 해석 결과에 기초해서 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브의 대체 블록으로 전송하도록 제어하는 컨트롤러를 포함하는 데이터 저장 장치.
  8. 제7항에 있어서, 상기 데이터 저장 장치는,
    상기 결함 블록의 정보 및 상기 대체 블록의 정보가 기록되는 결함테이블을 더 포함하는 데이터 저장 장치.
  9. 제8항에 있어서, 상기 컨트롤러는,
    상기 액세스 명령에 포함된 액세스 어드레스와 상기 결함테이블에 기록된 결함 블록의 어드레스를 비교하고, 비교한 결과에 기초하여 상기 액세스 명령에 포함된 데이터를 상기 결함 블록으로 전송하는 대신에 상기 하드 디스크 드라이브의 대체 블록으로 전송하여 상기 데이터가 상기 대체 블록에 저장되도록 제어하는 데이 터 저장 장치.
  10. 제7항에 있어서, 상기 컨트롤러는,
    상기 불휘발성 메모리를 구성하는 각 블록의 결함 발생 유무를 판단하는 데이터 저장 장치.
  11. 제10항에 있어서, 상기 컨트롤러는,
    상기 불휘발성 메모리를 구성하는 상기 각 블록의 라이트 횟수, 또는 이레이즈 횟수 중 적어도 하나를 계수하고, 계수 결과에 기초하여 상기 각 블록의 결함 발생 유무를 판단하는 데이터 저장 장치.
  12. 제10항에 있어서, 상기 컨트롤러는,
    상기 불휘발성 메모리를 구성하는 상기 각 블록의 에러 수정 코드(error correction code)값을 확인하고, 상기 에러 수정 코드값을 이용한 계산 결과에 기초하여 상기 각 블록의 결함 발생 유무를 판단하는 데이터 저장 장치.
  13. 메인프로세서; 및
    상기 메인프로세서로부터 출력된 액세스 명령을 수신하는 데이터 저장 장치(100)를 포함하고,
    상기 데이터 저장 장치는,
    불휘발성 메모리;
    상기 불휘발성 메모리의 결함 블록을 대체하는 대체 블록을 포함하는 하드 디스크 드라이브; 및
    상기 액세스 명령을 수신하고, 수신된 상기 액세스 명령을 해석하여, 해석 결과에 기초해서 상기 액세스 명령에 포함된 데이터를 상기 하드 디스크 드라이브의 대체 블록으로 전송하도록 제어하는 컨트롤러를 포함하는 데이터 저장 시스템.
  14. 제13항에 있어서, 상기 컨트롤러는,
    상기 액세스 명령에 포함된 액세스 어드레스와 결함이 발생한 블록의 어드레스를 비교하고, 비교 결과에 기초하여 상기 데이터를 상기 대체 블록으로 전송하도록 제어하는 데이터 저장 시스템.
KR1020080100438A 2008-10-14 2008-10-14 데이터 저장 방법, 데이터 저장 장치 및 그 시스템 KR20100041313A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080100438A KR20100041313A (ko) 2008-10-14 2008-10-14 데이터 저장 방법, 데이터 저장 장치 및 그 시스템
US12/577,946 US20100095149A1 (en) 2008-10-14 2009-10-13 Data storage method and device, and system therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080100438A KR20100041313A (ko) 2008-10-14 2008-10-14 데이터 저장 방법, 데이터 저장 장치 및 그 시스템

Publications (1)

Publication Number Publication Date
KR20100041313A true KR20100041313A (ko) 2010-04-22

Family

ID=42099979

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080100438A KR20100041313A (ko) 2008-10-14 2008-10-14 데이터 저장 방법, 데이터 저장 장치 및 그 시스템

Country Status (2)

Country Link
US (1) US20100095149A1 (ko)
KR (1) KR20100041313A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442833B1 (en) * 2010-07-20 2016-09-13 Qualcomm Incorporated Managing device identity
WO2015114816A1 (ja) * 2014-01-31 2015-08-06 株式会社日立製作所 管理計算機および管理プログラム
US9477548B2 (en) * 2014-08-01 2016-10-25 Freescale Semiconductor, Inc. Error repair location cache
US20170336976A1 (en) * 2014-12-12 2017-11-23 Hewlett Packard Enterprise Development Lp Determining resting times for memory blocks

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1031992B1 (en) * 1989-04-13 2006-06-21 SanDisk Corporation Flash EEPROM system
US5452251A (en) * 1992-12-03 1995-09-19 Fujitsu Limited Semiconductor memory device for selecting and deselecting blocks of word lines
JP3734620B2 (ja) * 1998-06-24 2006-01-11 沖電気工業株式会社 半導体ディスク装置
US6799283B1 (en) * 1998-12-04 2004-09-28 Matsushita Electric Industrial Co., Ltd. Disk array device
JP4073799B2 (ja) * 2003-02-07 2008-04-09 株式会社ルネサステクノロジ メモリシステム
US7009872B2 (en) * 2003-12-22 2006-03-07 Hewlett-Packard Development Company, L.P. MRAM storage device
JP2005339674A (ja) * 2004-05-27 2005-12-08 Hitachi Ltd 半導体記憶装置
JP2006107351A (ja) * 2004-10-08 2006-04-20 Fujitsu Ltd データ移行方法、記憶装置及びプログラム
US9104315B2 (en) * 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US7366825B2 (en) * 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
JP4736593B2 (ja) * 2005-07-25 2011-07-27 ソニー株式会社 データ記憶装置、データ記録方法、記録及び/又は再生システム、並びに、電子機器
JP2007183844A (ja) * 2006-01-10 2007-07-19 Hitachi Global Storage Technologies Netherlands Bv 補助記憶装置および記録再生方法
US7490263B2 (en) * 2006-01-17 2009-02-10 Allen King Apparatus, system, and method for a storage device's enforcing write recovery of erroneous data
JP4852315B2 (ja) * 2006-02-03 2012-01-11 株式会社日立製作所 データ信頼性向上方法及びその方法を用いた情報処理装置
WO2008068747A2 (en) * 2006-12-03 2008-06-12 Anobit Technologies Ltd. Automatic defect management in memory devices
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法

Also Published As

Publication number Publication date
US20100095149A1 (en) 2010-04-15

Similar Documents

Publication Publication Date Title
US8190811B2 (en) Defragmentation of solid state memory
US10007431B2 (en) Storage devices configured to generate linked lists
CN107957959B (zh) 具有文件级安全擦除的存储器系统及其操作方法
TWI423026B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
KR102663661B1 (ko) 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
KR20180080589A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20190106228A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20070168607A1 (en) Storage device using nonvolatile cache memory and control method thereof
US20110047322A1 (en) Methods, systems and devices for increasing data retention on solid-state mass storage devices
JP2010020756A (ja) Eccに基づいてフラッシュメモリのデータページを更新する記憶装置及びその方法
KR20190102781A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US8812772B2 (en) Data merging method for non-volatile memory and controller and storage apparatus using the same
KR20200113992A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
KR20190110243A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
JP2012517068A (ja) メモリ装置、メモリ管理装置、およびメモリ管理方法
KR20100041313A (ko) 데이터 저장 방법, 데이터 저장 장치 및 그 시스템
KR20200087486A (ko) 메모리 시스템에서의 휘발성 메모리 내 오류를 처리하는 방법 및 장치
KR20100105127A (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
US20110087828A1 (en) Method for enhancing performance of accessing a flash memory, and associated memory device and controller thereof
US11449321B2 (en) Controller and method for installing and executing bridge firmware data
US20210149597A1 (en) Controller and operation method thereof
KR20200142698A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210024722A (ko) 수행가능성을 예측하여 내부동작을 수행하는 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
US11663065B2 (en) SCSI command set for error history logging in a memory system and operating method thereof

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid