KR101609510B1 - 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치 - Google Patents

에러를 검출하고 수정하는 컴퓨팅 방법 및 장치 Download PDF

Info

Publication number
KR101609510B1
KR101609510B1 KR1020150050745A KR20150050745A KR101609510B1 KR 101609510 B1 KR101609510 B1 KR 101609510B1 KR 1020150050745 A KR1020150050745 A KR 1020150050745A KR 20150050745 A KR20150050745 A KR 20150050745A KR 101609510 B1 KR101609510 B1 KR 101609510B1
Authority
KR
South Korea
Prior art keywords
error
page area
data
code
detected
Prior art date
Application number
KR1020150050745A
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 KR1020150050745A priority Critical patent/KR101609510B1/ko
Application granted granted Critical
Publication of KR101609510B1 publication Critical patent/KR101609510B1/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/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/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/061Improving I/O performance
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Abstract

본 발명은 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 에러를 검출하고 수정하는 컴퓨팅 장치에 있어서, 호스트로부터 데이터 읽기명령을 수신하는 단계, 제1페이지 영역의 데이터를 읽는 단계, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하는 단계, 제1페이지 영역에서 에러가 검출되지 않으면, 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하는 단계, 제2코드를 이용하여 에러가 검출되면, 패리티를 이용하여 에러를 수정하는 단계를 포함한다.

Description

에러를 검출하고 수정하는 컴퓨팅 방법 및 장치{COMPUTING METHOD AND APPARATUS FOR CORRECTING AND DETECTING OF ERROR}
본 발명은 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치에 관한 것이다.
오늘날 SSD와 같은 보조기억장치를 사용하는 컴퓨터 장치가 급격하게 증가하며 사용 영역 또한 서버 가상화 시스템까지 확대되고 있다.
대한민국 등록특허공보 제10-1209920호(2012.12.03)는 SSD 메모리 디스크 유닛 세트를 포함하는 SSD 메모리 시스템을 제공한다. 특히, 각각의 SSD 메모리 디스크 유닛은 일반적으로 (다른 컴포넌트들 사이에서), 호스트 인터페이스 유닛; 호스트 인터페이스 유닛에 결합되며 SSD 메모리 디스크 유닛의 SAS 프로토콜을 컨트롤하는 직렬 접속 소형 컴퓨터 시스템 인터페이스(SAS) 프로토콜 컨트롤러; 호스트 인터페이스 유닛에 결합되며 SSD 메모리 디스크 유닛에의 액세스를 컨트롤하는 직접 메모리 액세스(DMA: Direct Memory Access) 컨트롤러; DMA 컨트롤러에 결합되며 SSD 메모리 디스크 유닛에 저장되는 데이터를 버퍼링하는 데이터 버퍼를 포함한다. 그러나, 최근에는 SSD와 같은 보조기억장치의 메모리의 용량은 증가했지만, 신뢰성이 크게 하락하는 문제점이 있었다.
본 발명이 이루고자 하는 기술적인 과제는 효율적으로 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 에러를 검출하고 수정하는 컴퓨팅 장치에 있어서, 호스트로부터 데이터 읽기명령을 수신하는 단계, 제1페이지 영역의 데이터를 읽는 단계, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하는 단계, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하는 단계, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 단계를 포함한다.
본 발명의 일 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 상기 제1코드를 이용하여 상기 에러의 수정이 가능하지 않으면, 상기 패리티를 이용하여 상기 에러를 수정하는 단계를 더 포함한다.
본 발명의 일 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 상기 제1코드를 이용하여 상기 에러의 수정 후이거나, 상기 패리티를 이용하여 상기 에러의 수정 후에 제2페이지 영역에 수정 데이터를 쓰는 단계를 더 포함한다.
본 발명의 일 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 상기 제1페이지 영역에서 상기 제2코드를 이용하여 상기 에러가 검출되는지 확인하여, 상기 에러가 검출되지 않으면, 상기 호스트로 상기 데이터를 전송하는 단계를 더 포함한다.
상기 제1코드는 ECC이고, 상기 제2코드는 CRC인 것을 특징으로 한다.
본 발명의 다른 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 에러를 검출하고 수정하는 컴퓨팅 장치에 있어서, 호스트로부터 데이터 읽기명령을 수신하는 단계, 제1페이지 영역의 데이터를 읽는 단계, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하는 단계, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하는 단계, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 단계, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하는 단계, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 단계를 포함한다.
본 발명의 다른 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이 아니면, 상기 호스트에 상기 수정 데이터를 전송하는 단계를 더 포함한다.
상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 단계는, 쓰기/지우기 횟수, 데이터가 쓰여진 후 지난 시간, 에러율, 오류 비트수 중 적어도 하나 이상을 고려하여 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 것을 특징으로 한다.
상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 단계는, 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 상기 수정 데이터를 전송하고, 상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법은 에러를 검출하고 수정하는 컴퓨팅 장치에 있어서, 호스트로부터 데이터 읽기명령을 수신하는 단계, 제1페이지 영역의 데이터를 읽는 단계, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하는 단계, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하는 단계, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 단계, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하는 단계, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 단계, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이 아니면, 상기 호스트에 상기 수정 데이터를 전송하는 단계를 포함하되, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 단계는, 쓰기/지우기 횟수, 데이터가 쓰여진 후 지난 시간, 에러율, 오류 비트수 중 적어도 하나 이상을 고려하여 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 것을 특징으로 한다.
상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 단계는, 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 상기 수정 데이터를 전송하고, 상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 것을 특징으로 한다.
본 발명의 일 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 장치는 페이지 영역과 패리티 영역을 포함하는 적어도 하나 이상의 칩, 호스트로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하고, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 것을 제어하는 제어부를 포함한다.
본 발명의 다른 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 장치는 페이지 영역과 패리티 영역을 포함하는 적어도 하나 이상의 칩, 호스트로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하고, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 것을 제어하는 제어부를 포함한다.
상기 페이지 영역과 패리티 영역은 상기 제1코드를 포함하고, 상기 제어부는 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 상기 수정 데이터를 전송하고, 상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 제2페이지 영역에 상기 수정 데이터를 쓰도록 제어하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 장치는 페이지 영역과 패리티 영역을 포함하는 적어도 하나 이상의 칩, 호스트로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하고, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰고, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이 아니면, 상기 호스트에 상기 수정 데이터를 전송하도록 제어하는 제어부를 포함하되, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단은, 쓰기/지우기 횟수, 데이터가 쓰여진 후 지난 시간, 에러율, 오류 비트수 중 적어도 하나 이상을 고려하여 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 특징으로 한다.
본 발명의 실시예에 따른 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치에 의하면 다음과 같은 효과가 있다.
첫째, 본 발명은 SSD와 같은 보조기억장치의 에러를 효과적으로 검출하고 수정함으로써, SSD의 신뢰성을 향상시킬 수 있다.
둘째, 본 발명은 SSD와 같은 보조기억장치의 쓰기/지우기 횟수를 감소시켜, 더 오랫동안 사용할 수 있다.
셋째, 본 발명은 리텐션 오류를 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 2는 본 발명의 다른 실시예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 에러를 검출하고 수정하는 과정을 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하는 과정을 설명하기 위한 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 컴퓨팅 장치에서 에러를 검출하고 수정하는 과정을 설명하기 위한 흐름도이다.
도 6은 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치에서 에러를 검출하고 수정하는 과정을 설명하기 위한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
또한, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 이외의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다.
본 발명에서 본 발명에서 솔리드 스테이트 드라이브(Solid State Drive, 이하, “SSD”라 한다.)는 반도체를 이용하여 데이터를 저장하는 장치를 의미한다. 솔리트 스테이트 디스크(Solid State Disk)동일한 의미이다.
또한, 본 발명은 SSD를 위주로 설명하나, 본 발명이 다양한 보조기억장치에 적용 가능하다.
이하, 본 발명을 보다 구체적으로 설명하기 위하여 본 발명에 따른 실시예들을 첨부 도면을 참조하면서 보다 상세하게 설명하고자 한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치는 호스트(1)와 SSD(2)를 포함한다.
호스트(1)는 사용자 등의 명령에 따라 SSD(2)에 데이터 읽기, 쓰기 등을 요청하는 부분이다. 예를 들어, 호스트(1)는 SSD(2)에 데이터 읽기명령, 쓰기명령을 전송한다.
SSD(2)는 데이터를 저장하는 부분이다. SSD(2)는 제어부(10)와 임의의 데이터를 저장하는 적어도 하나 이상의 칩을 포함한다.
예를 들어, 하나의 칩(100, 110, 120, 130)은 적어도 하나 이상의 블록 영역(105)을 포함하고, 블록 영역(105)은 3개의 페이지 영역(1000)과 1개의 패리티 영역(1300)을 포함한다.
컴퓨팅 장치가 SSD(2)에 데이터를 쓸 때에는 페이지 단위로 쓸 수 있고, 데이터를 지울 때에는 블록 단위로 지울 수 있다.
페이지 영역(1000)은 데이터를 페이지 단위로 저장할 수 있으며, 데이터를 저장하는 데이터 영역(1001)과 메타데이터, 에러 수정 코드인 ECC(Error Correction Code, 이하, “ECC”라 한다.) 등을 저장하는 스페어 영역(1002)을 포함한다. 여기서, 스페어 영역(1002)은 OBB(Out-of-Band) 영역으로도 명명할 수 있다.
본 발명에서 ECC는 제1코드와 동일한 의미로 사용된다.
패리티 영역(1300)은 패리티(Parity) 데이터를 저장하는 패리티 데이터 영역(1301)과 패리티의 메타데이터, 에러 수정 코드인 ECC 등을 저장하는 패리티 스페어 영역(1302)을 포함한다.
패리티 데이터는 데이터의 에러를 수정할 수 있는 정보를 포함한다.
ECC는 데이터의 에러를 검출하고, 수정할 수 있는 정보를 포함한다. 예를 들어, ECC는 데이터의 에러 수정은 n비트(예를 들어, 24bit)가 가능하면, 데이터의 에러를 검출할 때에는 2n비트(예를 들어, 48bit)까지 가능하게 설정할 수 있다.
또한, SSD(2)가 데이터를 쓸 때의 순서는 다양한 형태가 가능하다. 예를 들어, 제어부(10)는 먼저 칩0(100)의 페이지 영역(1000)에 데이터를 쓰고, 이후에는 칩1(110)의 페이지 영역(1000)에 데이터를 쓰고, 이후에 칩2(120)의 페이지 영역(1000)에 데이터를 쓰고, 칩3(130)의 패리티 영역(1300)에 칩0(100), 칩1(110), 칩2(120)에 쓴 데이터의 패리티 데이터를 쓸 수 있다.
다른 실시예로, 칩0(100)의 하나의 블록 영역(105)에서 순서대로 데이터를 쓰고, 패리티 데이터를 칩0(100)의 블록 영역(105)에 쓸 수도 있다.
제어부(10)는 SSD(2)의 데이터 쓰기, 읽기, 지우기 등을 제어하는 부분이다. 제어부(10)는 호스트(1)의 명령에 따라 데이터를 읽고, 호스트(1)에 데이터를 전송하는 것을 제어한다.
또한, 제어부(10)는 데이터에 에러가 발생하면 에러를 검출하고 에러를 수정하는 것을 제어한다. 이때, 제어부(10)는 에러를 검출할 때에는 ECC를 이용하고, 에러를 수정할 때에는 ECC를 이용하거나 패리티 데이터를 이용할 수 있다.
예를 들어, 제어부(10)는 패리티 데이터를 이용하여 XOR연산을 수행하여 데이터를 수정할 수 있고, 수정 데이터를 호스트(1)에 전송하는 것을 제어한다.
제어부(10)는 호스트(1)로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓰는 것을 제어한다.
제어부(10)는 호스트(1)로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하고, 제1코드를 이용하여 에러의 수정이 가능하지 않으면, 패리티를 이용하여 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 상기 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓰는 것을 제어한다.
제어부(10)는 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 제1코드를 이용하여 에러 수정 후, 호스트(1)에 수정 데이터를 전송하고, 쓰기/지우기 횟수가 특정 값 미만이 아니거나, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이 아니면, 제1코드를 이용하여 에러 수정 후, 제2페이지 영역에 수정 데이터를 쓰도록 제어한다.
제어부(10)는 호스트(1)로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하고, 제1코드를 이용하여 에러의 수정이 가능하지 않으면, 패리티를 이용하여 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓰고, 제2페이지 영역에 수정 데이터를 쓸 것이 아니면, 호스트(1)에 수정 데이터를 전송하는 것을 제어한다.
도 2는 본 발명의 다른 실시예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치는 호스트(3)와 SSD(4)를 포함한다.
호스트(3)는 사용자 등의 명령에 따라 SSD(4)에 데이터 읽기, 쓰기 등을 요청하는 부분이다. 예를 들어, 호스트(3)는 SSD(4)에 데이터 읽기명령, 쓰기명령을 전송한다.
SSD(4)는 데이터를 저장하는 부분이다. SSD(4)는 제어부(20)와 임의의 데이터를 저장하는 적어도 하나 이상의 칩을 포함한다.
예를 들어, 하나의 칩(200, 210, 220, 230)은 적어도 하나 이상의 블록 영역(205)을 포함하고, 블록 영역(205)은 3개의 페이지 영역(2000)과 1개의 패리티 영역(2300)을 포함한다.
컴퓨팅 장치가 SSD(4)에 데이터를 쓸 때에는 페이지 단위로 쓸 수 있고, 데이터를 지울 때에는 블록 단위로 지울 수 있다.
페이지 영역(2000)은 데이터를 페이지 단위로 저장할 수 있으며, 데이터를 저장하는 데이터 영역과 메타데이터, 해쉬 코드(Hash Code) 또는 해쉬 함수(Hash Function)의 일 예인 CRC(Cyclical Redundancy Check, 이하, “CRC”라 한다.), 에러 수정 코드인 ECC(Error Correction Code, 이하, “ECC”라 한다.) 등을 저장하는 스페어 영역을 포함한다.
본 발명에서 ECC는 제1코드와 동일한 의미로 사용되고, CRC는 제2코드와 동일한 의미로 사용된다.
패리티 영역(2300)은 패리티(Parity) 데이터를 저장하는 패리티 데이터 영역(2301)과 패리티의 메타데이터, 해쉬 코드(Hash Code) 또는 해쉬 함수(Hash Function)의 일 예인 CRC, 에러 수정 코드인 ECC 등을 저장하는 페리티 스페어 영역(2302)을 포함한다.
패리티 데이터는 데이터의 에러를 수정할 수 있는 정보를 포함한다.
ECC는 데이터의 에러를 검출하고, 수정할 수 있는 정보를 포함한다. 예를 들어, ECC는 데이터의 에러 수정은 n비트(예를 들어, 24bit)가 가능하면, 데이터의 에러를 검출할 때에는 2n비트(예를 들어, 48bit)까지 가능하게 설정할 수 있다.
CRC는 데이터의 에러를 검출할 수 있는 정보를 포함한다. 예를 들어, CRC는 ECC에서 데이터의 에러를 검출할 수 없는 2n비트(예를 들어, 48bit) 이상의 에러를 검출할 수 잇도록 설정할 수 있다.
또한, SSD(4)가 데이터를 쓸 때의 순서는 다양한 형태가 가능하다. 예를 들어, 제어부(20)는 먼저 칩0(200)의 페이지 영역(2000)에 데이터를 쓰고, 이후에는 칩1(210)의 페이지 영역(2000)에 데이터를 쓰고, 이후에 칩2(220)의 페이지 영역(2000)에 데이터를 쓰고, 칩3의 패리티 영역(2300)에 칩0(200), 칩1(210), 칩2(220)에 쓴 데이터의 패리티 데이터를 쓸 수 있다.
다른 실시예로, 칩0(200)의 하나의 블록 영역에서 순서대로 데이터를 쓰고, 패리티 데이터를 칩0(200)의 블록 영역에 쓸 수도 있다.
제어부(20)는 SSD(4)의 데이터 쓰기, 읽기, 지우기 등을 제어하는 부분이다. 제어부(20)는 호스트(3)의 명령에 따라 데이터를 읽고, 호스트(3)에 데이터를 전송하는 것을 제어한다.
또한, 제어부(20)는 데이터에 에러가 발생하면 에러를 검출하고 에러를 수정하는 것을 제어한다. 이때, 제어부(20)는 에러를 검출할 때에는 ECC, CRC를 이용하고, 에러를 수정할 때에는 ECC를 이용하거나 패리티 데이터를 이용할 수 있다.
예를 들어, 제어부(20)는 패리티 데이터를 이용하여 XOR연산을 수행하여 데이터를 수정할 수 있고, 수정 데이터를 호스트(3)에 전송하는 것을 제어한다.
제어부(20)는 호스트(3)로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하고, 제1페이지 영역에서 에러가 검출되지 않으면, 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 제2코드를 이용하여 에러가 검출되면, 패리티를 이용하여 에러를 수정하는 것을 제어한다.
제어부(20)는 호스트(3)로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하고, 제1페이지 영역에서 에러가 검출되지 않으면, 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 제2코드를 이용하여 에러가 검출되면, 패리티를 이용하여 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓰는 것을 제어한다.
제어부(20)는 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 제1코드를 이용하여 에러 수정 후, 호스트(3)에 수정 데이터를 전송하고, 쓰기/지우기 횟수가 특정 값 미만이 아니거나, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이 아니면, 제1코드를 이용하여 에러 수정 후, 제2페이지 영역에 수정 데이터를 쓰도록 제어한다.
제어부(20)는 호스트(3)로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정하고, 제1페이지 영역에서 에러가 검출되지 않으면, 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 제2코드를 이용하여 에러가 검출되면, 패리티를 이용하여 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓰고, 제2페이지 영역에 수정 데이터를 쓸 것이 아니면, 호스트(3)에 수정 데이터를 전송하도록 제어한다.
도 3은 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 에러를 검출하고 수정하는 과정을 설명하기 위한 흐름도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 SSD(2, 4)의 제어부(10, 20)는 호스트(1, 3)로부터 데이터 읽기명령을 수신한다(S301).
제어부(10, 20)는 제1페이지 영역의 데이터를 읽는다(S303).
제어부(10, 20)는 제1페이지 영역에서 에러가 검출되는지 확인한다(S305).
제어부(10, 20)는 제1페이지 영역에서 에러가 검출되는지 확인하여, 제1페이지 영역에서 에러가 검출되면, 제1코드를 이용하여 에러의 수정이 가능한지 확인한다(S307). 여기서, 제1코즈드는 ECC가 가능하다.
제어부(10, 20)는 제1페이지 영역에서 에러가 검출되는지 확인하여, 제1페이지 영역에서 에러가 검출되지 않으면, 호스트(1, 3)에 데이터를 전송한다(S309).
제어부(10, 20)는 제1코드를 이용하여 에러의 수정이 가능한지 확인하여, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정한다(S311).
제어부(10, 20)는 제1코드를 이용하여 에러의 수정이 가능한지 확인하여, 제1코드를 이용하여 에러의 수정이 가능하지 않으면, 패리티를 이용하여 에러 수정이 가능한지 확인한다(S313).
제어부(10, 20)는 패리티를 이용하여 에러 수정이 가능한지 확인하여, 패리티를 이용하여 에러 수정이 가능하면, 패리티를 이용하여 에러를 수정한다(S315).
제어부(10, 20)는 패리티를 이용하여 에러 수정이 가능한지 확인하여, 패리티를 이용하여 에러 수정이 가능하지 않으면, 호스트(1, 3)에 에러 정보를 전송한다(S317).
제어부(10, 20)는 제2페이지 영역에 수정 데이터를 쓸 것인지 판단한다(S319). 여기서, 제어부(10, 20)는 쓰기/지우기 횟수(P/E cycle), 데이터가 쓰여진 후 지난 시간, 에러율, 오류 비트수 중 적어도 하나 이상을 고려하여 제2페이지 영역에 수정 데이터를 쓸 것인지 판단할 수 있다. 이 과정에 대한 실시예의 상세한 설명은 이하 도 4를 참조하여 설명하기로 한다.
제어부(10, 20)는 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하여, 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓴다(S321).
제어부(10, 20)는 호스트(1, 3)에 수정 데이터를 전송한다(S323).
제어부(10, 20)는 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하여, 제2페이지 영역에 수정 데이터를 쓸 것이 아니면, 호스트(1, 3)에 수정 데이터를 전송한다(S323).
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하는 과정을 설명하기 위한 흐름도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 SSD(2, 4)의 제어부(10, 20)는 제1페이지 영역의 쓰기/지우기 횟수와 데이터가 쓰여진 후 지난 시간을 확인한다(S401).
제어부(10, 20)는 쓰기/지우기 횟수가 특정 값인 k미만이고, 데이터가 쓰여진 후 지난 시간인 특정 시간 t미만인지 확인한다(S403). 예를 들어, k는 1500 ~ 2500에서 설정 가능하고, t는 50일 ~ 100일에서 설정 가능하다.
제어부(10, 20)는 쓰기/지우기 횟수가 특정 값인 k미만이고, 데이터가 쓰여진 후 지난 시간인 특정 시간 t미만이면, 제1코드를 이용하여 에러 수정 후, 호스트(1, 3)에 수정 데이터를 전송한다(S405).
제어부(10, 20)는 쓰기/지우기 횟수가 특정 값인 k미만이 아니거나, 데이터가 쓰여진 후 지난 시간이 특정 시간 t미만이 아니면, 제1코드를 이용하여 에러 수정 후, 제2페이지 영역에 수정 데이터를 쓴다(S407).
제어부(10, 20)는 호스트(1, 3)에 수정 데이터를 전송한다(S409).
도 5는 본 발명의 다른 실시예에 따른 컴퓨팅 장치에서 에러를 검출하고 수정하는 과정을 설명하기 위한 흐름도이다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 SSD(2, 4)의 제어부(10, 20)는 호스트(1, 3)로부터 데이터 읽기명령을 수신한다(S501).
제어부(10, 20)는 제1페이지 영역의 데이터를 읽는다(S503).
제어부(10, 20)는 제1페이지 영역에서 제1코드를 이용하여 에러가 검출되는지 확인한다(S505). 여기서, 제1코드는 ECC가 가능하다.
제어부(10, 20)는 제1페이지 영역에서 제1코드를 이용하여 에러가 검출되는지 확인하여, 제1페이지 영역에서 에러가 검출되면, 제1코드를 이용하여 에러의 수정이 가능한지 확인한다(S507).
제어부(10, 20)는 제1페이지 영역에서 제1코드를 이용하여 에러가 검출되는지 확인하여, 제1페이지 영역에서 에러가 검출되지 않으면, 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인한다(S509). 여기서, 제2코드는 CRC가 가능하다.
제어부(10, 20)는 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하여, 에러가 검출되면, 패리티를 이용하여 에러를 수정한다(S511).
제어부(10, 20)는 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하여, 에러가 검출되지 않으면, 호스트(1, 3)로 데이터를 전송한다(S513).
제어부(10, 20)는 제1코드를 이용하여 에러의 수정이 가능한지 확인하여, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정한다(S515).
제어부(10, 20)는 제1코드를 이용하여 에러의 수정이 가능한지 확인하여, 제1코드를 이용하여 에러의 수정이 가능하지 않으면, 패리티를 이용하여 에러를 수정한다(S511).
제어부(10, 20)는 제1코드를 이용하여 에러의 수정 후이거나, 패리티를 이용하여 에러의 수정 후에 제2페이지 영역에 수정 데이터를 쓴다(S517).
제어부(10, 20)는 호스트(1, 3)에 수정 데이터를 전송한다(S519).
도 6은 본 발명의 또 다른 실시예에 따른 컴퓨팅 장치에서 에러를 검출하고 수정하는 과정을 설명하기 위한 흐름도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 장치에서 SSD(2, 4)의 제어부(10, 20)는 호스트(1, 3)로부터 데이터 읽기명령을 수신한다(S601).
제어부(10, 20)는 제1페이지 영역의 데이터를 읽는다(S603).
제어부(10, 20)는 제1페이지 영역에서 제1코드를 이용하여 에러가 검출되는지 확인한다(S605). 여기서, 제1코드는 ECC가 가능하다.
제어부(10, 20)는 제1페이지 영역에서 제1코드를 이용하여 에러가 검출되는지 확인하여, 제1페이지 영역에서 에러가 검출되면, 제1코드를 이용하여 에러의 수정이 가능한지 확인한다(S607).
제어부(10, 20)는 제1페이지 영역에서 제1코드를 이용하여 에러가 검출되는지 확인하여, 제1페이지 영역에서 에러가 검출되지 않으면, 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인한다(S609). 여기서, 제2코드는 CRC가 가능하다.
제어부(10, 20)는 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하여, 에러가 검출되면, 패리티를 이용하여 에러를 수정한다(S611).
제어부(10, 20)는 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하여, 에러가 검출되지 않으면, 호스트(1, 3)로 데이터를 전송한다(S613).
제어부(10, 20)는 제1코드를 이용하여 에러의 수정이 가능한지 확인하여, 제1코드를 이용하여 에러의 수정이 가능하면, 제1코드를 이용하여 에러를 수정한다(S615).
제어부(10, 20)는 제2페이지 영역에 수정 데이터를 쓸 것인지 판단한다(S617). 여기서, 제어부(10, 20)는 쓰기/지우기 횟수(P/E cycle), 데이터가 쓰여진 후 지난 시간, 에러율, 오류 비트수 중 적어도 하나 이상을 고려하여 제2페이지 영역에 수정 데이터를 쓸 것인지 판단할 수 있다. 이 과정에 대한 실시예의 상세한 설명은 이상의 도 4를 참조하여 설명하였는바, 상세한 설명은 생략한다.
제어부(10, 20)는 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하여, 제2페이지 영역에 수정 데이터를 쓸 것이면, 제2페이지 영역에 수정 데이터를 쓴다(S619).
제어부(10, 20)는 호스트(1, 3)에 수정 데이터를 전송한다(S621).
제어부(10, 20)는 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하여, 제2페이지 영역에 수정 데이터를 쓸 것이 아니면, 호스트(1, 3)에 수정 데이터를 전송한다(S621).
본 발명의 실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 기록매체에 기록될 수 있다. 컴퓨터 판독 가능 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램(프로그램 명령)은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 기술의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic media), CDROM, DVD와 같은 광기록 매체(Optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(Magneto-optical media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명을 도면에 도시한 실시예를 참고하여 설명하였으나, 이는 발명을 설명하기 위한 것일 뿐이며, 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자라면 발명의 상세한 설명으로부터 다양한 변형 또는 균등한 실시예가 가능하다는 것을 이해할 수 있을 것이다. 따라서 본 발명의 진정한 권리범위는 특허청구범위의 기술적 사상에 의해 결정되어야 한다.
1, 3: 호스트
2, 4: SSD
10, 20: 제어부
100, 200: 칩0
110, 210: 칩1
120, 220: 칩2
130, 230: 칩3
105, 205: 블록 영역
1000, 2000: 페이지 영역
1001, 2001: 데이터 영역
1002, 2002: 스페어 영역
1300, 2300: 패리티 영역
1201, 2301: 패리티 데이터 영역
1302, 2302: 패리티 스페어 영역

Claims (16)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 에러를 검출하고 수정하는 컴퓨팅 장치에 있어서,
    호스트로부터 데이터 읽기명령을 수신하는 단계,
    제1페이지 영역의 데이터를 읽는 단계,
    상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하는 단계,
    상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하는 단계,
    상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 단계,
    제2페이지 영역에 수정 데이터를 쓸 것인지 판단하는 단계,
    상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 단계를 포함하되,
    상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 단계는,
    쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 상기 수정 데이터를 전송하고,
    상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 것을 특징으로 하는 에러를 검출하고 수정하는 컴퓨팅 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 에러를 검출하고 수정하는 컴퓨팅 장치에 있어서,
    호스트로부터 데이터 읽기명령을 수신하는 단계,
    제1페이지 영역의 데이터를 읽는 단계,
    상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하는 단계,
    상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하는 단계,
    상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 단계,
    제2페이지 영역에 수정 데이터를 쓸 것인지 판단하는 단계,
    상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 단계,
    상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이 아니면, 상기 호스트에 상기 수정 데이터를 전송하는 단계를 포함하되,
    상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 단계는,
    쓰기/지우기 횟수, 데이터가 쓰여진 후 지난 시간, 에러율, 오류 비트수 중 적어도 하나 이상을 고려하여 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것인지 판단하는 것을 특징으로 하며,
    쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 상기 수정 데이터를 전송하고,
    상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 것을 특징으로 하는 에러를 검출하고 수정하는 컴퓨팅 방법.
  11. 삭제
  12. 페이지 영역과 패리티 영역을 포함하는 적어도 하나 이상의 칩,
    호스트로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하고, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하는 것을 제어하는 제어부를 포함하되,
    상기 페이지 영역과 패리티 영역은 상기 제1코드를 포함하고,
    상기 제어부는 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 수정 데이터를 전송하고, 상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 제2페이지 영역에 상기 수정 데이터를 쓰도록 제어하는 것을 특징으로 하는 에러를 검출하고 수정하는 컴퓨팅 장치.
  13. 페이지 영역과 패리티 영역을 포함하는 적어도 하나 이상의 칩,
    호스트로부터 데이터 읽기명령을 수신하고, 제1페이지 영역의 데이터를 읽고, 상기 제1페이지 영역에서 에러가 검출되고, 제1코드를 이용하여 상기 에러의 수정이 가능하면, 상기 제1코드를 이용하여 상기 에러를 수정하고, 상기 제1페이지 영역에서 상기 에러가 검출되지 않으면, 상기 제1페이지 영역에서 제2코드를 이용하여 에러가 검출되는지 확인하고, 상기 제2코드를 이용하여 상기 에러가 검출되면, 패리티를 이용하여 상기 에러를 수정하고, 제2페이지 영역에 수정 데이터를 쓸 것인지 판단하고, 상기 제2페이지 영역에 상기 수정 데이터를 쓸 것이면, 상기 제2페이지 영역에 상기 수정 데이터를 쓰는 것을 제어하는 제어부를 포함하되,
    상기 페이지 영역과 패리티 영역은 상기 제1코드를 포함하고,
    상기 제어부는 쓰기/지우기 횟수가 특정 값 미만이고, 데이터가 쓰여진 후 지난 시간이 특정 시간 미만이면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 호스트에 상기 수정 데이터를 전송하고, 상기 쓰기/지우기 횟수가 상기 특정 값 미만이 아니거나, 상기 데이터가 쓰여진 후 지난 시간이 상기 특정 시간 미만이 아니면, 상기 제1코드를 이용하여 상기 에러 수정 후, 상기 제2페이지 영역에 상기 수정 데이터를 쓰도록 제어하는 것을 특징으로 하는 에러를 검출하고 수정하는 컴퓨팅 장치.
  14. 삭제
  15. 삭제
  16. 제6항 또는 제10항 중 어느 한 항의 에러를 검출하고 수정하는 컴퓨팅 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록매체.

KR1020150050745A 2015-04-10 2015-04-10 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치 KR101609510B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150050745A KR101609510B1 (ko) 2015-04-10 2015-04-10 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150050745A KR101609510B1 (ko) 2015-04-10 2015-04-10 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101609510B1 true KR101609510B1 (ko) 2016-04-06

Family

ID=55790740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150050745A KR101609510B1 (ko) 2015-04-10 2015-04-10 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101609510B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190139752A (ko) * 2018-06-08 2019-12-18 삼성전자주식회사 저대역 데이터 리페어를 보조하는 시스템, 장치, 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100681429B1 (ko) * 2005-10-24 2007-02-15 삼성전자주식회사 반도체 메모리 장치 및 그것의 비트 에러 검출 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100681429B1 (ko) * 2005-10-24 2007-02-15 삼성전자주식회사 반도체 메모리 장치 및 그것의 비트 에러 검출 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190139752A (ko) * 2018-06-08 2019-12-18 삼성전자주식회사 저대역 데이터 리페어를 보조하는 시스템, 장치, 및 방법
KR102434917B1 (ko) 2018-06-08 2022-08-22 삼성전자주식회사 저대역 데이터 리페어를 보조하는 시스템, 장치, 및 방법
US11449387B2 (en) 2018-06-08 2022-09-20 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair
US11940875B2 (en) 2018-06-08 2024-03-26 Samsung Electronics Co., Ltd. System, device and method for storage device assisted low-bandwidth data repair

Similar Documents

Publication Publication Date Title
US10423508B2 (en) Method and system for a high-priority read based on an in-place suspend/resume write
US10114578B2 (en) Solid state disk and data moving method
US9552290B2 (en) Partial R-block recycling
US20130191705A1 (en) Semiconductor storage device
US20160086639A1 (en) Apparatus power control
US20150161034A1 (en) Recording dwell time in a non-volatile memory system
US20160116968A1 (en) Method and System for Throttling Power Consumption
US20160313921A1 (en) Memory device that controls timing of receiving write data from a host
US9390003B2 (en) Retirement of physical memory based on dwell time
US8848478B2 (en) Power consumption control
US20170132074A1 (en) Systems and methods for copying data in non-volatile memory
US11775389B2 (en) Deferred error-correction parity calculations
KR20140020634A (ko) 반도체 메모리 장치 및 그의 동작 방법
US20140297949A1 (en) Disk array device
US20140068378A1 (en) Semiconductor storage device and memory controller
TW202004505A (zh) 用於在突然斷電時降低功率消耗之資料儲存方法和資料儲存設備
US20100058145A1 (en) Storage device and method of controlling storage device
US8418029B2 (en) Storage control device and storage control method
US11263142B1 (en) Servicing memory high priority read requests
KR101609510B1 (ko) 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치
KR101609509B1 (ko) 에러를 검출하고 수정하는 컴퓨팅 방법 및 장치
KR20190060429A (ko) 메모리 시스템 및 이의 동작 방법
CN104598169A (zh) 用于flash存储器的高可靠性数据读取方法
KR102281966B1 (ko) 데이터 스토리지 장치 및 그 동작 방법
US10014983B2 (en) System, receiving device, and method

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee