KR20120115012A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20120115012A
KR20120115012A KR1020110032909A KR20110032909A KR20120115012A KR 20120115012 A KR20120115012 A KR 20120115012A KR 1020110032909 A KR1020110032909 A KR 1020110032909A KR 20110032909 A KR20110032909 A KR 20110032909A KR 20120115012 A KR20120115012 A KR 20120115012A
Authority
KR
South Korea
Prior art keywords
data
strip
strips
storage medium
error
Prior art date
Application number
KR1020110032909A
Other languages
English (en)
Other versions
KR101778782B1 (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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110032909A priority Critical patent/KR101778782B1/ko
Priority to US13/440,114 priority patent/US8769375B2/en
Publication of KR20120115012A publication Critical patent/KR20120115012A/ko
Application granted granted Critical
Publication of KR101778782B1 publication Critical patent/KR101778782B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1088Scrubbing in RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

저장 매체 및 상기 저장 매체를 제어하는 컨트롤러를 포함하는 데이터 저장 장치의 고장 감내를 위한 동작 방법은, 읽기 요청된 데이터 스트립이 오류 데이터 스트립인 지를 판별하고, 상기 읽기 요청된 데이터 스트립이 상기 오류 데이터 스트립일 때 상기 읽기 요청된 데이터 스트립이 속하는 스트라이프 내의 복수의 데이터 스트립들을 읽어오고, 상기 복수의 데이터 스트립들 중 상기 오류 데이터 스트립을 제외한 나머지 데이터 스트립들을 이용하여 복원된 데이터 스트립을 출력하고, 그리고 상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들을 상기 저장 매체에 기입하는 것을 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
정보화 사회의 도래와 함께 개인이 저장하고 이동해야 할 데이터의 양도 폭발적으로 늘어나고 있다. 이와 같은 정보 저장매체의 수요 증가로 인해, 다양한 종류의 개인용 데이터 저장 장치들이 개발되고 있다.
데이터 저장 장치들 중에서도 하드디스크 드라이브(hard disk drive; HDD)는 높은 기록 밀도, 높은 데이터 전송 속도, 빠른 데이터 접근 시간(access time), 및 낮은 가격 등의 장점으로 인해 널리 사용되고 있다. 하드디스크 드라이브는 플래터(platter)와, 플래터를 구동하기 위한 복잡한 기계적 부품들로 구성된다. 따라서, 조그만 충격과 진동에도 고장이 날 수 있는 문제점이 있다.
최근 들어서는 하드디스크 드라이브를 대신하는 데이터 저장 장치로서 반도체 디스크(Solid State Disk 또는 Solid State Drive, 이하 SSD라 칭함) 장치가 개발되고 있다. SSD는 반도체 메모리를 메인 스토리지로서 채택한 데이터 저장 장치이다. SSD는 하드디스크 드라이브와 달리 플래터(platter)와 플래터를 구동하기 위한 기계적 부품들이 구비되지 않는다. 따라서, SSD는 하드디스크 드라이브에 비해 기계적 구동시간과 지연시간(latency)을 줄일 수 있고, 고속의 읽기/기록 동작을 수행할 수 있다. 그리고 SSD는 지연 시간 및 기계적 마찰로 인한 오류를 줄일 수 있기 때문에, 읽기/기록 동작의 신뢰성을 향상시킬 수 있는 장점이 있다. 또한, 작동시 열과 소음이 거의 발생하기 않고 외부 충격에 강하기 때문에, 기존의 하드디스크 드라이브에 비하여 휴대용 기기에 적합한 데이터 저장 장치로서 높이 평가되고 있다.
본 발명은 신뢰성이 향상된 데이터 저장 장치 및 그것의 동작 방법을 제공한다.
이와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 저장 매체 및 상기 저장 매체를 제어하는 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법은: 읽기 요청된 데이터 스트립이 오류 데이터 스트립인 지를 판별하고, 상기 읽기 요청된 데이터 스트립이 상기 오류 데이터 스트립일 때 상기 읽기 요청된 데이터 스트립이 속하는 스트라이프 내의 복수의 데이터 스트립들을 읽어오고, 상기 복수의 데이터 스트립들 중 상기 오류 데이터 스트립을 제외한 나머지 데이터 스트립들을 이용하여 복원된 데이터 스트립을 출력하고, 그리고 상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들을 상기 저장 매체에 기입하는 것을 포함한다.
본 발명의 다른 특징에 따른 데이터 저장 장치는, 저장 매체와, 버퍼 메모리와, 프로세싱 유닛과, 상기 프로세싱 유닛의 제어에 응답하여 상기 저장 매체의 액세스 동작을 제어하도록 구성된 컨트롤러를 포함한다. 상기 컨트롤러는, 읽기 요청된 데이터 스트립이 오류 데이터 스트립일 때 상기 읽기 요청된 데이터 스트립이 속하는 스트라이프 내의 복수의 데이터 스트립들 중 상기 오류 데이터 스트립을 제외한 나머지 데이터 스트립들을 이용하여 복원된 데이터 스트립을 출력하고, 상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들 중 유효한 데이터 스트립들을 상기 저장 매체에 기입하는 것을 포함한다.
이와 같은 본 발명에 의하면, 스트라이프 내 오류가 있는 데이터 페이지를 패리티 페이지를 이용하여 복원할 수 있다. 더욱이, 복원된 데이터 페이지가 속하는 스트라이프 내 유효한 데이터 페이지들을 새로운 스트라이프로 구성하여 데이터 저장 장치에 저장할 수 있다. 데이터 저장 장치에 오류가 발생하더라도 데이터의 손실을 최소화할 수 있으므로 데이터 저장 장치의 신뢰성이 향상된다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함하는 시스템을 개략적으로 보여주는 블록도이다.
도 2는 본 발명의 예시적인 실시예에 따른 도 1에 도시된 SSD 제어기를 개략적으로 보여주는 블록도이다.
도 3은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 저장 매체를 개략적으로 보여주는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방식에 따른 데이터 흐름을 설명하기 위한 블록도이다.
도 5는 저장 매체로부터 읽혀진 데이터 스트립이 ECC 생성 블록에 의해서 오류 정정이 되지 않을 때 동작 방법을 보여주는 플로우차트이다.
도 6은 호스트 시스템으로부터 읽기 명령이 수신될 때 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 보여주는 플로우차트이다.
도 7은 ECC 생성 유닛에 의해서 오류 정정이 불가능할 때 도 2에 도시된 플래시 메모리 컨트롤러 내 제어 유닛의 복원 프로세스를 보여주는 플로우차트이다.
도 8은 도 2에 도시된 플래시 메모리 제어기의 재배열 프로세스를 예시적으로 보여주는 플로우차트이다.
도 10은 저장 매체로부터 읽혀진 데이터 스트립에 오류가 있는 경우, 도 2에 도시된 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 11은 저장 매체로부터 읽혀진 데이터 스트립이 ECC 생성 블록에 의해서 오류 정정될 수 없을 때 도 2에 도시된 플래시 메모리 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 12는 플래시 메모리 제어기의 도 8에 도시된 재배열 프로세스의 동작을 설명하기 위한 도면이다.
도 13은 도 8에 도시된 플래시 메모리 제어기의 재배열 프로세스 중 복원된 스트립 및 유효한 스트립들을 저장 매체에 저장하는 동작을 설명하기 위한 도면이다.
도 14는 도 2에 도시된 플래시 메모리 컨트롤러의 다른 동작 예를 설명하기 위한 도면이다.
도 15는 호스트 인터페이스를 통해 새로운 데이터 스트립이 도 14에 도시된 버퍼 메모리에 저장될 때 플래시 메모리 컨트롤러의 동작을 예시적으로 설명하기 위한 도면이다.
도 16은 저장 매체에 저장된 패리티 스트립이 ECC 생성 블록에 의해서 오류 정정될 수 없을 때 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 17은 스트라이프 내 두 개의 데이터 스트립들이 ECC 생성 로직에 의해서 오류 정정될 수 없는 경우 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 18은 스트립 그룹 내 데이터 및 패리티 스트립들이 저장 매체로 모두 전송되기 전 호스트 시스템으로부터 읽기 요청이 수신될 때 저장 매체에 저장된 데이터 스트립이 ECC 제어 블록에 의해서 오류 정정될 수 없는 경우 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 19는 저장 매체에 저장된 스트라이프에 크린 스트립이 포함된 경우 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 20은 스크러빙 프로세스 중 무효화된 데이터 스트립이 ECC 생성 유닛에 의해서 오류 정정될 수 없을 때 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 21은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
이하 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함하는 시스템을 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치(1000)는 호스트 시스템(2000)의 요청에 응답하여 동작하며, 호스트 시스템(2000)에 필요한 데이터 정보를 저장하는 데 사용될 것이다. 데이터 저장 장치(1000)는, 예를 들면, 저장 매체로서 불 휘발성 메모리 장치들을 이용한 반도체 드라이브(Solid State Drive: SSD)이다. 하지만, 데이터 저장 장치(1000)가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 데이터 저장 장치(1000)는 하드 디스크 드라이브(HDD)로 구성될 수 있다.
데이터 저장 장치(1000)는 저장 매체(1200)와 SSD 제어기(1400)를 포함한다. 저장 매체(1200)는 SSD 제어기(1400)의 제어에 따라 호스트 시스템(2000)으로부터 전송된 또는 호스트 시스템(2000)으로 전송될 데이터를 저장한다. 호스트 시스템(2000)으로부터 전송되는 데이터는 버퍼 메모리(1420)에 임시 저장된다.
호스트 시스템(2000)으로부터 전송되는 데이터는 버퍼 메모리(1420)에 임시 저장될 것이다. 특히, 본 발명의 예시적인 실시예에 따른 SSD 제어기(1400)는 스트립 그룹들을 구성하도록 버퍼 메모리(1420)에 임시 저장된 데이터의 어드레스 맵핑을 관리할 것이다. 다시 말해서, 호스트 시스템(2000)의 랜덤 또는 순차 쓰기-요청된 데이터가 버퍼 메모리(1420)에 저장되는 경우, SSD 제어기(1400)는 쓰기 요청 타입에 관계없이 스트립 그룹(들)로 구성되도록 버퍼 메모리(1420)에 저장된 데이터와 관련된 어드레스 맵핑을 관리할 것이다.
여기서, 스트립 그룹은 복수의 스트립들(strips)(또는, 복수의 데이터 스트립들)로 구성될 것이다. 하나의 스트립은 저장 매체(1200)를 구성하는 메모리 타입에 따라 다양하게 설정될 수 있다. 예를 들면, 저장 매체(1200)가 플래시 메모리 장치들로 구성되는 경우, 하나의 스트립은 하나 또는 그 보다 많은 페이지들로 구성될 것이다. 예시적인 실시예에 있어서, 하나의 스트립은 하나의 페이지로 구성될 수 있다. 하지만, 하나의 스트립이 하나의 페이지보다 작은 섹터(들) 또는 페이지들의 블록(들)로 구성될 수 있음은 잘 이해될 것이다.
계속해서 도 1을 참조하면, SSD 제어기(1400)는 패리티 생성 블록(1451)과 ECC 생성 블록(1452)을 더 포함한다. 하나 또는 그 보다 많은 스트립 그룹들이 준비되는 경우, SSD 제어기(1400)는 스트립 그룹 단위로 버퍼 메모리(1420)의 데이터를 저장 매체(1200)로 전송한다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, SSD 제어기(1400)의 패리티 생성 블록(1451)은 데이터 스트립들에 대한 배타적 논리합(XOR) 연산을 수행할 것이다. 이는 이후 상세히 설명될 것이다. 데이터 스트립들에 대한 XOR 결과(이는 '패리티 스트립(parity strip)'이라 칭함)는 스트립 그룹에 추가된다. 스트립 그룹에 속한 데이터 스트립들과 추가된 패리티 스트립은 전체-스트라이프-쓰기(full-stripe-write) 단위인 '하나의 스트라이프(stripe)'를 구성할 것이다. 추가된 패리티 스트립은 스트립 그룹의 데이터 스트립들과 함께 저장 매체(1200)에 저장 매체(1200)에 저장될 것이다. 이러한 쓰기 방식을 전체-스트라이프-쓰기 방식이라 칭한다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, SSD 제어기(1400)의 ECC 생성 블록(1452)은 데이터 및 패리티 스트립들 각각에 대한 ECC 정보를 생성하도록 구성된다. 데이터 및 패리티 스트립들 각각에 대한 ECC 정보가 생성됨에 따라, 스트라이프를 구성하는 데이터 및 패리티 스트립들 각각에 ECC 정보가 부가된다.
다른 예에서, 전체-스트라이프-쓰기 대신 스트립 단위로 쓰기가 수행될 수 있다. 즉, 버퍼 메모리(1420)에 새로운 스트립이 저장되면 새로운 스트립은 플래시 메모리 컨트롤러(1450)을 통해 저장 매체(1200)로 전송될 것이다. 이 때 플래시 메모리 컨트롤러(1450)의 ECC 생성 유닛(1452)은 새로운 스트립에 대한 ECC 정보를 생성해서 새로운 스트립에 부가하고, 패리티 생성 유닛(1451)은 패리티 스트립 생성을 위해 새로운 스트립을 저장할 것이다. 패리티 스트립 생성에 관해서는 추후 상세히 설명될 것이다.
도 2는 본 발명의 예시적인 실시예에 따른 도 1에 도시된 SSD 제어기를 개략적으로 보여주는 블록도이다. 도 2에 도시된 바와 같이, 본 발명의 예시적인 실시예에 따른 SSD 제어기(1400)는 호스트 인터페이스(1410)(도면에는, 'HI'로 표기됨), 버퍼 메모리(1420), 마이크로프로세서 또는 CPU와 같은 프로세싱 유닛(1430), 램(1440), 그리고 플래시 메모리 제어기(1450)(도면에는, 'FMC'로 표기됨)를 포함한다.
호스트 인터페이스(1410)는 호스트 시스템(2000)과의 인터페이스를 제공할 것이다. 데이터 저장 장치(1000)와 호스트 시스템(2000)과의 연결은 유선 그리고/또는 무선의 호스트 인터페이스(1410)를 통해 행해질 수 있다. 버퍼 메모리(1420)는 호스트 시스템(2000)으로부터 전송된 데이터 또는 호스트 시스템(2000)으로 전송될 데이터를 임시 저장하는 데 사용된다. 프로세싱 유닛(1430)은 SSD 제어기(1400)의 전반적인 동작을 제어하도록 구성된다. 램(1440)에는, 예를 들면, 데이터 저장 장치(1000)에 전원이 공급될 때 저장 매체(1200)에 저장되는 코드들(예를 들면, 플래시 변환 계층(FTL))이 로드될 것이다. 이에 반해서, 코드 램 대신 상술한 코드들을 저장하기 위한 코드 롬이 사용될 수 있다. 플래시 변환 계층은 어드레스 맵핑 관리, 저장 매체(1200)의 웨어-레벨링(wear-leveling) 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 등을 행하는 데 사용된다.
플래시 메모리 제어기(1450)는 프로세싱 유닛(1430)의 요청에 응답하여 저장 매체(1200)의 액세스를 제어할 것이다. 플래시 메모리 제어기(1450)는 패리티 생성 블록(1451)과 ECC 생성 블록(1452)을 포함할 것이다. 앞서 언급된 바와 같이, 하나 또는 그보다 많은 스트립 그룹들이 어드레스 맵핑을 통해 준비되는 경우, 버퍼 메모리(1420)의 데이터는 스트립 단위 또는 스트립 그룹 단위로 저장 매체(1200)로 전송될 것이다. 데이터 스트립이 저장 매체(1200)로 전송될 때, 패리티 생성 블록(1451)은 데이터 스트립에 대한 XOR 연산을 수행하여 패리티 스트립을 생성할 것이다. 이때 패리티 생성 블록(1451) 내에 저장된 데이터 스트립이 없으면 XOR 연산 없이 데이터 스트립이 패리티 생성 블록(1451)에 저장된다. 만일 패리티 생성 블록(1451) 내에 저장된 데이터 스트립이 있으면 저장된 데이터 스트립과 새롭게 전송될 데이터 스트립이 XOR 연산되고, 그 연산 결과가 패리티 생성 블록(1451) 내에 저장된다. 이와 같은 방법으로 스트립 그룹에 포함된 데이터 스트립들 전체에 대한 XOR 연산이 완료되면 패리티 스트립이 완성된다. 마지막 데이터 스트립이 저장 매체(1200)로 전송된 후 패리티 스트립이 저장 매체(1200)로 전송될 것이다.
스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, 패리티 생성 블록(1451)은 데이터 스트립들에 대한 XOR 연산을 수행하여 패리티 스트립을 생성할 것이다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, ECC 생성 블록(1452)은 각 데이터 스트립 및 패리티 스트립에 대한 ECC 정보를 생성하도록 구성될 것이다. 각 데이터 스트립 및 패리티 스트립에 대한 ECC 정보가 생성됨에 따라, 전체-스트라이프-쓰기 단위인 스트라이프를 구성하는 데이터 및 패리티 스트립들 각각에 ECC 정보가 부가될 것이다.
예시적인 실시예에 있어서, 패리티 생성 블록(1451)과 ECC 생성 블록(1452)이 플래시 메모리 제어기(1450)에 포함되는 예가 설명되었다. 하지만, 패리티 생성 블록(1451)과 ECC 생성 블록(1452)이 플래시 메모리 제어기(1450)의 외부에 위치하도록 구성될 수 있음은 잘 이해될 것이다. 또는, ECC 생성 블록(1452)이 저장 매체(1200)의 각 플래시 메모리 장치에 포함될 수 있음은 잘 이해될 것이다. 패리티 생성 블록(1451)과 ECC 생성 블록(1452)의 배치에 관계없이 패리티 및 ECC 생성 과정이 본 발명의 사상에서 벗어나지 않음은 잘 이해될 것이다.
예시적인 실시예에 있어서, 호스트 인터페이스(1410)는 컴퓨터 버스 표준들, 스토리지 버스 표준들, iFCPPeripheral 버스 표준들, 등 중 하나 또는 그 보다 많은 것들의 조합으로 구성될 수 있다. 컴퓨터 버스 표준들(computer bus standards)은 S-100 bus, Mbus, Smbus, Q-Bus, ISA, Zorro II, Zorro III, CAMAC, FASTBUS, LPC, EISA, VME, VXI, NuBus, TURBOchannel, MCA, Sbus, VLB, PCI, PXI, HP GSC bus, CoreConnect, InfiniBand, UPA, PCI-X, AGP, PCIe, Intel QuickPath Interconnect, Hyper Transport, 등을 포함한다. 스토리지 버스 표준들(Storage bus standards)은 ST-506, ESDI, SMD, Parallel ATA, DMA, SSA, HIPPI, USB MSC, FireWire(1394), Serial ATA, eSATA, SCSI, Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI, SAS, RapidIO, FCIP, 등을 포함한다. iFCPPeripheral 버스 표준들(iFCPPeripheral bus standards)은 Apple Desktop Bus, HIL, MIDI, Multibus, RS-232, DMX512-A, EIA/RS-422, IEEE-1284, UNI/O, 1-Wire, I2C, SPI, EIA/RS-485, USB, Camera Link, External PCIe, Light Peak, Multidrop Bus, 등을 포함한다.
도 3은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 저장 매체를 개략적으로 보여주는 블록도이다.
도 3을 참조하면, 저장 매체(1200)는 복수의 채널들(CH0?CHn-1)을 통해 SSD 제어기(1400)의 플래시 메모리 제어기(1450)와 연결될 것이다. 채널들(CH0?CHn-1) 각각에는 복수의 불 휘발성 메모리 장치들(NVM)이 연결될 것이다. 불 휘발성 메모리 장치(NVM)는, 예를 들면, 플래시 메모리 장치일 것이다. 하지만, 불 휘발성 메모리 장치(NVM)가 플래시 메모리 장치에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 불 휘발성 메모리 장치(NVM)는 상변화 메모리 장치(PRAM), 강유전체 메모리 장치(FeRAM), 자기 저항램 장치(MRAM), 또는 그와 같은 것으로 구성될 수 있다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방식에 따른 데이터 흐름을 설명하기 위한 블록도이다.
도 4를 참조하면, 호스트 시스템(2000)에서 제공되는 데이터는 호스트 인터페이스(1410)를 통해 버퍼 메모리(1420)에 저장될 것이다. 버퍼 메모리(1420)에 저장된 데이터는 호스트 시스템(2000)의 랜덤 또는 순차 쓰기 요청에 따라 제공된 데이터일 것이다. 예를 들면, 호스트 시스템(2000)에서 전송된 데이터를 버퍼 메모리(1420)에 저장하기 위해서 버퍼 메모리(1420)가 (N-1)번 액세스될 것이다. 도 4에 도시된 바와 같이, 버퍼 메모리(1420)에 저장된 데이터는 스트립 그룹들을 구성하도록 모아질 것이다. 앞서 설명된 바와 같이, 데이터를 스트립 그룹들로 모으는 것은 데이터의 이동을 통해 행해지는 것이 아니라 플래시 변환 계층(FTL)의 어드레스 맵핑을 통해 행해질 것이다. 하나의 스트립 그룹에 속한 스트립들(또는, 데이터 스트립들)의 수가 응용처에 따라 다양하게 결정될 수 있음은 잘 이해될 것이다.
일단 하나 또는 그보다 많은 스트립 그룹들이 구성되면, 스트립 그룹의 데이터(또는, 데이터 스트립들)는 프로세싱 유니트(1430)의 제어하에 저장 매체(1200)로 전송될 것이다. 플래시 메모리 제어기(1450)는 프로세싱 유니트(1430)로부터 제공되는 쓰기 명령에 응답하여 데이터 스트립을 저장 매체(1200)로 전송할 것이다. 플래시 메모리 제어기(1450)의 ECC 생성 블록(1452)은 전송되는 데이터 스트립에 대한 ECC 정보를 생성하고, 데이터 스트립에 ECC 정보를 부가할 것이다. 하나의 스트립 그룹에 속한 데이터 스트립들이 저장 매체(1200)로 순차적으로 전송되는 동안, 플래시 메모리 제어기(1450)의 패리티 생성 블록(1451)은 전송되는 데이터 스트립들에 대한 XOR 연산을 수행하여 패리티 스트립을 생성할 것이다. 그렇게 생성된 패리티 스트립은 저장 매체(1200)로 전송될 것이다. 마찬가지로, 패리티 스트립에도 ECC 정보가 부가될 것이다. 저장 매체(1200)에 저장되는 스트라이프는 데이터 스트립들과 패리티 스트립으로 구성될 것이다.
도 5 내지 도 9는 도 2에 도시된 플래시 메모리 컨트롤러의 동작 방법을 보여주는 플로우차트들이고, 도 10 내지 도 20은 플래시 메모리 컨트롤러의 동작 방법을 설명하기 위한 도면들이다. 이하 도 5 내지 도 20를 참조하여 본 발명의 예시적인 실시예에 따른 플래시 메모리 제어기의 동작이 설명된다.
도 5는 저장 매체로부터 읽혀진 데이터 스트립이 ECC 생성 블록에 의해서 오류 정정이 되지 않을 때 동작 방법을 보여주는 플로우차트이고, 도 10은 저장 매체로부터 읽혀진 데이터 스트립에 오류가 있는 경우, 도 2에 도시된 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 5 및 도 10을 참조하면, 호스트 시스템(2000)으로부터 읽기 요청이 수신될 때 프로세싱 유닛(1430)은 플래시 메모리 제어기(1450)로 읽기 명령을 출력한다. 플래시 메모리 제어기(1450)는 읽기 명령에 응답해서 저장 매체(1200)로부터 읽기 요청된 데이터 스트립(P6)을 읽어온다. 읽혀진 데이터 스트립(P6)은 ECC 생성 블록(1452)에서 디코딩된다. 만일 읽혀진 데이터 스트립(P6)에서 검출된 오류가 ECC 생성 블록(1452)에 의해서 정정 가능하다면 오류 정정된 데이터 스트립(P6)은 호스트 인터페이스(1410)를 통해 호스트 시스템(2000)으로 전송될 수 있다.
만일 읽혀진 데이터 스트립(P6)에서 검출된 오류가 ECC 생성 블록(1452)에 의해서 정정될 수 없다면(S100), 플래시 메모리 제어기(1450)는 읽기 요청된 데이터 스트립(P6)을 포함하는 스트라이프(ST1)를 읽어온다(S110). 스트라이프(ST1)는 4 개의 데이터 스트립들(P4, P5, P6, P7)과 패리티 스트립(PS1)을 포함한다.
이하 설명에서 저장 매체(1200)는 복수의 스트라이프들을 저장할 수 있으며, 각각의 스트라이프는 4 개의 데이터 스트립들과 1 개의 패리티 스트립을 포함하는 것으로 가정한다. 하지만, 저장 매체(1200)가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다.
플래시 메모리 제어기(1450)는 오류가 검출된 데이터 스트립(P6)을 복원하기 위하여 읽혀진 스트라이프(ST1) 내 나머지 데이터 스트립들(P4, P5, P7) 및 패리티 스트립(PS1)에 대한 배타적 논리합(XOR) 연산을 수행할 것이다(S120). 데이터 스트립들(P4, P5, P7) 및 패리티 스트립(PS1)에 대한 배타적 논리합(XOR) 연산 결과는 복원 데이터 스트립(P6')으로서 출력된다. 플래시 메모리 제어기(1450)는 스트라이프(ST1) 내 유효한 데이터 스트립들(P4, P5, P7) 및 복원 데이터 스트립(P6')을 버퍼 메모리(1420)에 저장한다.
프로세싱 유닛(1430)은 필요에 따라(예를 들면, 적어도 하나의 스트립 그룹이 어드레스 맵핑을 통해 준비될 때) 쓰기 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. 쓰기 명령이 입력될 때, 플래시 메모리 제어기(1450)는 버퍼 메모리(1420)로부터 제공되는 데이터 스트립들(P4, P5, P6', P7)은 저장 매체(1200)로 전송될 것이다(S130). 이때 패리티 생성 블록(1451)은 데이터 스트립들(P4, P5, P6', P7)을 XOR 연산하여 패리티 스트립(PSk)을 생성한다. ECC 생성 블록(1452)은 전송되는 데이터 스트립들 및 패리티 스트립에 의거하여 ECC 정보를 생성할 것이다.
한편, 복원 데이터 스트립(P6')은 호스트 인터페이스(1410)를 통해 호스트 시스템(2000)으로 전송된다(S140).
상술한 바와 같이, 읽혀진 데이터 스트립이 ECC 생성 블록(1452)에 의해서 오류 정정될 수 없는 경우 읽기 요청된 스트립을 포함하는 스트라이프가 읽혀진다. 읽혀진 스트라이프 내 정상 데이터 스트립들 및 패리티 스트립에 대한 배타적 논리합 연산을 통해 복원 데이터 스트립이 계산된다. 복원 데이터 스트립은 호스트 시스템(2000)으로 전송되고, 복원 데이터 스트립과 스트라이프 내 유효한 데이터 스트립들은 저장 매체(1200)로 재전송된다. 그러므로 저장 매체에 오류가 발생하더라도 데이터의 손실을 최소화할 수 있고, 데이터 저장 장치의 신뢰성이 향상된다
도 6은 호스트 시스템으로부터 읽기 명령이 수신될 때 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 보여주는 플로우차트이다.
도 11은 저장 매체로부터 읽혀진 데이터 스트립이 ECC 생성 블록에 의해서 오류 정정될 수 없을 때 도 2에 도시된 플래시 메모리 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 11을 참조하면, 플래시 메모리 컨트롤러(1450)는 제어 유닛(1453)을 더 포함한다. 제어 유닛(1453)은 플래시 메모리 컨트롤러(1450)의 전반적인 동작을 제어하며, XOR 연산기(1453a) 및 큐(queue, 1453b)를 포함한다. XOR 연산기(1453a)는 입력 데이터들에 대한 배타적 논리합 연산을 수행한다. 큐(1453b)는 선입선출(FIFO) 구조를 갖는 메모리이다.
도 6 및 도 11을 참조하면, 플래시 메모리 제어기(1450)는 독출 명령에 응답해서 읽기 요청된 데이터 스트립을 저장 매체(1200)로부터 읽어온다(S200). 여기서 독출 요청된 데이터 스트립은 'P6'인 것으로 가정한다. 읽혀진 데이터 스트립(P6)은 ECC 생성 블록(1451)에서 디코딩된다. 만일 읽혀진 데이터 스트립(P6)에 오류가 없다면 읽혀진 데이터 스트립(P6)은 도 2에 도시된 호스트 인터페이스(1410)를 통해 호스트 시스템(2000)으로 전송된다(S230). 읽혀진 데이터 스트립(P6)에 오류가 있더라도 ECC 생성 블록(1541)에 의해서 정정 가능하다면 오류 정정된 데이터 스트립(P6)이 도 2에 도시된 호스트 인터페이스(1410)를 통해 호스트 시스템(2000)으로 전송된다(S230).
만일 읽혀진 데이터 스트립(P6)이 ECC 생성 블록(1541)에 의해서 오류 정정이 불가능하다면, 데이터 스트립(P6)을 포함하는 스트라이프(ST1) 내 나머지 데이터 스트립들(P4, P5, P7) 및 패리티 스트립(PS1)을 이용하여 데이터 스트립(P6)을 복원해야 한다. ECC 생성 블록(1451)은 데이터 스트립(P6)에 대한 오류 정정이 불가능함을 나타내는 활성화된 오류 신호(ERR)를 제어 유닛(1453)으로 출력한다.
제어 유닛(1453)은 오류 신호(ERR)가 활성화되면(S210), 복원 프로세스(S220)를 수행한다.
도 7은 ECC 생성 유닛에 의해서 오류 정정이 불가능할 때 도 2에 도시된 플래시 메모리 컨트롤러 내 제어 유닛의 복원 프로세스를 보여주는 플로우차트이다.
도 7 및 도 11을 참조하면, 제어 유닛(1453)은 오류가 있는 데이터 스트립(P6)이 포함된 스트라이프(ST1) 내 모든 스트립들이 모두 독출되도록 제어한다(S300). ECC 생성 블록(1451)은 독출된 데이터 스트립들(P4, P5, P6, P7) 및 패리티 스트립(PS1)을 읽혀진 순서대로 디코딩하면서 오류 정정이 불가능한 경우 오류 신호(ERR)를 활성화한다.
만일 독출된 스트라이프(ST1) 즉, 데이터 스트립들(P4, P5, P6, P7) 및 패리티 스트립(PS1) 중 어느 하나의 스트립에 오류가 있는 경우 XOR 연산기(1453a)를 이용하여 오류 스트립에 대한 복원이 가능하다. 그러나 두 개 또는 그 이상의 스트립들에 오류가 있는 경우 복원이 불가능하다. 이때에는 호스트 시스템(2000)으로부터의 읽기 명령에 대한 응답을 제공할 수 없다. 만일 데이터 스트립들(P4, P5, P6, P7) 및 패리티 스트립(PS1) 중 어느 하나의 스트립에만 오류가 있는 경우(S310), XOR 연산기(1453a)는 ECC 생성 유닛(1451)으로부터 출력되는 데이터 스트립들(P4, P5, P7) 및 패리티 스트립(PS1)에 대한 XOR 연산을 수행한다(S320). 복원된 데이터 스트립(P6')은 수학식 1에 의해서 계산될 수 있다.
[수학식 1]
P6' = P4 XOR P5 XOR P7 XOR PS1
여기서 'XOR'는 배타적 논리합 연산을 의미한다.
제어 유닛(1453)은 XOR 연산기(1453a)로부터의 복원된 데이터 스트립(P6')을 호스트 인터페이스(1410)로 출력한다(S330). 그러므로 ECC 생성 유닛(1452)에 의해서 오류 정정이 될 수 없는 오류를 포함하는 데이터 스트립(P6)에 대한 복원이 가능하다.
한편, 제어 유닛(1453)은 오류 데이터 스트립(P6)에 대한 정보(IP6) 즉, 오류 데이터 스트립(P6)의 어드레스를 큐(153b)에 저장한다(S340).
계속해서 플래시 메모리 제어기(1450)는 복원된 데이터 스트립(P6')을 포함하는 스트라이프(ST1)에 대한 재배열 프로세스를 수행한다(S350). 재배열 프로세스를 호출하기 위하여 플래그 레지스터(미 도시됨)에 소정의 값을 저장할 수 있으며, 다른 예로 트리거링(triggering) 신호를 출력할 수도 있다.
도 8은 도 2에 도시된 플래시 메모리 제어기의 재배열 프로세스를 예시적으로 보여주는 플로우차트이고, 도 12는 플래시 메모리 제어기의 도 8에 도시된 재배열 프로세스의 동작을 설명하기 위한 도면이다.
도 8 및 도 12를 참조하면, 제어 유닛(1453)은 큐(1453b)로부터 오류 데이터 스트립 정보(IP6)를 읽는다(S400). 제어 유닛(1453)에 의해서 오류 데이터 스트립 정보(IP6)가 읽혀지면 큐(1453b)는 비워진다. 제어 유닛(1453) 읽혀진 오류 데이터 스트립 정보(IP6)에 따라서 데이터 스트립(P6)이 포함된 스트라이프(ST1) 내 데이터 스트립들(P4, P5, P6, P7) 및 패리티 스트립(PS1)을 읽는다(S410). ECC 생성 블록(1452)은 독출된 데이터 스트립들(P4, P5, P6, P7) 및 패리티 스트립(PS1)을 읽혀진 순서대로 디코딩하면서 오류 정정이 불가능한 경우 오류 신호(ERR)를 활성화한다.
만일 읽혀진 스트립들 중 두 개 이상의 스트립들이 ECC 생성 블록(1451)에 의해서 오류 정정될 수 없는 경우(S420), 오류 복원 및 재배열이 불가능하다. 이때 제어 유닛(1453)은 복원 불가능 정보를 오류 스트립들 각각의 메타 데이터 영역에 기입한다(S460). 이는 추후 호스트 시스템(2000)에 의해서 읽기 요청될 때 오류가 있는 데이터 스트립임을 알려주기 위함이다. 오류 스트립들 및 스트라이프 내 유효한 데이터 스트립이 저장 매체(1200)에 기입되도록 버퍼 메모리(1420)에 저장된다(S470). 이는 추후 자세히 설명될 것이다.
만일 읽혀진 스트립들 중 데이터 스트립(P6)에 오류가 있는 것으로 판별되면(S420), 제어 유닛(1453)은 XOR 연산기(1453a)가 데이터 스트립들(P4, P5, P7) 및 패리티 스트립(PS1)에 대한 배타적 논리합 연산을 수행하여 복원된 데이터 스트립(P6)을 구한다(S430). ECC 생성 유닛(1452)으로부터 출력되는 스트라이프(ST1) 내 유효한 데이터 스트립들(P4, P5, P7) 및 XOR 연산기(1453a)로부터의 복원된 데이터 스트립(P6')은 저장 매체(1200)로 재프로그램될 수 있도록 버퍼 메모리(1420)에 저장된다(S440).
도 13은 도 8에 도시된 플래시 메모리 제어기의 재배열 프로세스 중 복원된 스트립 및 유효한 스트립들을 저장 매체에 저장하는 동작을 설명하기 위한 도면이다.
도 8 및 도 13을 참조하면, 데이터 스트립들(P4, P5, P6', P7)이 스트립 그룹을 형성하면 SSD 제어기(1400)는 스트립 또는 스트립 그룹 단위로 저장 매체(1200)에 전송할 것이다. 앞서 도 4에서 설명된 바와 같이, 데이터 스트립들이 스트립 그룹 단위로 저장 매체(1200)에 저장되는 경우에, 스트립 그룹에 속한 데이터 스트립들(P4, P5, P6', P7)이 각각 저장 매체(1200)로 전송될 때, 패리티 생성 블록(1451)은 데이터 스트립들에 대한 배타적 논리합(XOR) 연산을 수행할 것이다. 데이터 스트립들에 대한 XOR 결과인 패리티 스트립(PSk)은 스트립 그룹에 추가된다. 스트립 그룹에 속한 데이터 스트립들(P4, P5, P6', P7)과 추가된 패리티 스트립(PSk)은 하나의 스트라이프(STk)를 구성할 것이다. 추가된 패리티 스트립(PSk)은 스트립 그룹의 데이터 스트립들(P4, P5, P6', P7)과 함께 저장 매체(1200)에 저장될 것이다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, ECC 생성 블록(1452)은 데이터 및 패리티 스트립들 각각에 대한 ECC 정보를 생성하도록 구성된다. 데이터 및 패리티 스트립들 각각에 대한 ECC 정보가 생성됨에 따라, 스트라이프를 구성하는 데이터 및 패리티 스트립들 각각에 ECC 정보가 부가된다. 새로운 스트라이프(STk) 내 데이터 및 패리티 스트립들(P4, P5, P6', P7, PSk)이 저장 매체(1200)에 저장된다. 새로운 스트라이프(STk)내 데이터 및 패리티 스트립들(P4, P5, P6', P7, PSk)이 저장 매체(1200)에 저장되기 전에 이전 스트라이프(ST1) 내 데이터 및 패리티 스트립들 각각은 무효화된다.
앞서, 제어 유닛(1453)이 큐(1453b)로부터 오류 데이터 스트립 정보(IP6)를 읽으면, 큐(1453b)의 오류 데이터 스트립 정보(IP6)는 삭제된다. 그러므로 큐(1453b)에는 어떠한 오류 데이터 스트립 정보도 저장되어 있지 않다.
다른 예로, 데이터 스트립들이 스트립 단위로 저장 매체(1200)에 저장되는 경우에, 데이터 스트립(P4)이 먼저 저장 매체(1200)로 전송된다. 패리티 생성 블록(1451)은 데이터 스트립(P4)을 저장할 것이다. ECC 생성 블록(1452)은 데이터 스트립(P4)에 대한 ECC 정보를 생성하고, ECC 정보를 데이터 스트립(P4)에 부가한다. ECC 정보가 부가된 데이터 스트립(P4)은 저장 매체(1200)에 저장될 것이다. 데이터 스트립(P4)은 새로운 스트라이프(STk)에 속한다.
계속해서 데이터 스트립(P5)이 저장 매체(1200)로 전송된다. 패리티 생성 블록(1451)은 데이터 스트립(P5)과 저장된 이전 데이터 스트립(P4)에 대한 배타적 논리합(XOR) 연산을 수행하고, 그 결과를 저장할 것이다. ECC 생성 블록(1452)은 데이터 스트립(P5)에 대한 ECC 정보를 생성하고, ECC 정보를 데이터 스트립(P6)에 부가한다. ECC 정보가 부가된 데이터 스트립(P5)은 저장 매체(1200)에 저장될 것이다.
다음 데이터 스트립(P6')이 저장 매체(1200)로 전송된다. 패리티 생성 블록(1451)은 이전 데이터 스트립들(P4, P5)에 대한 배타적 논리합(XOR) 연산의 결과와 새로운 데이터 스트립(P6')에 대한 배타적 논리합(XOR) 연산을 수행하고, 그 결과를 저장할 것이다. ECC 생성 블록(1452)은 데이터 스트립(P6)에 대한 ECC 정보를 생성하고, ECC 정보를 데이터 스트립(P6)에 부가한다. ECC 정보가 부가된 데이터 스트립(P6)은 저장 매체(1200)에 저장될 것이다.
마지막으로 데이터 스트립(P7)이 저장 매체(1200)로 전송된다. 패리티 생성 블록(1451)은 이전 데이터 스트립들(P4, P5, P6')에 대한 배타적 논리합(XOR) 연산의 결과와 새로운 데이터 스트립(P7)에 대한 배타적 논리합(XOR) 연산을 수행하고, 그 결과를 저장할 것이다. ECC 생성 블록(1452)은 데이터 스트립(P7)에 대한 ECC 정보를 생성하고, ECC 정보를 데이터 스트립(P7)에 부가한다. ECC 정보가 부가된 데이터 스트립(P7)은 저장 매체(1200)에 저장될 것이다. 데이터 스트립들(P4, P5, P6', P7)에 대한 XOR 결과인 패리티 스트립(PSk)은 저장 매체(1200)에 저장될 것이다. 스트립 그룹에 속한 데이터 스트립들(P4, P5, P6', P7)과 추가된 패리티 스트립(PSk)은 하나의 스트라이프(STk)를 구성할 것이다.
다시 도 8을 참조하면, 큐(1453b)가 비어 있으면(S450), 제어 유닛(1453)은 재배열 프로세스를 종료하고, 큐(1453b)에 오류 데이터 스트립 정보가 남아있으면 다시 재배열 프로세스를 반복적으로 수행한다.
이와 같이, 호스트 인터페이스(1410)로부터의 읽기 명령에 응답해서 데이터 스트립을 읽었을 때 ECC 생성 유닛(1452)에 의해서 오류 정정이 불가능한 데이터 스트립이 발견될 수 있다. 이러한 경우, 스트라이프 내 정상적인 데이터 스트립들 및 패리티 스트립에 대한 배타적 논리합 연산을 통해 오류 데이터 스트립에 대한 복원이 가능하다. 만일 스트라이프 내 데이터 스트립들 및 패리티 스트립 중 두 개 이상의 스트립들에 오류가 발생한 경우 복원이 불가능하다. 그러므로 스트라이프 내 어느 하나의 스트립에 오류가 발생한 경우, 스트라이프 내 유효한 데이터 스트립들과 복원된 데이터 스트립을 저장 매체에 재저장함으로써 스트라이프 내 두 개 이상의 스트립들에 오류가 발생하여 복원 실패되는 것을 방지할 수 있다. 데이터 저장 장치는 이와 같은 고장 감내(fault-tolerant) 동작을 수행함으로써 신뢰성이 향상될 수 있다.
SSD 컨트롤러(1400)는 호스트 시스템(2000)으로부터 어떠한 명령도 수신되지 않는 시간이 소정 시간 이상 지속될 때, 저장 매체(1200)를 검사하고 오류가 발생한 경우 오류를 복원하는, 스크러빙(scrubbing) 프로세스를 수행할 수 있다.
앞서 설명된 도 7의 복원 프로세스는 읽기 요청에 따른 동작이므로 블록킹 모드(blocking mode)로 동작한다. 즉, 도 7의 복원 프로세스가 수행되는 동안 플래시 메모리 컨트롤러(1450)는 다른 동작(명령)의 끼어들기를 허용하지 않는다. 도 8의 재배열 프로세스는 비블록킹 모드(non-blocking mode)로 동작한다. 즉, 저장 매체(1200)로 전송될 스트립들을 버퍼 메모리(1420)에 저장한 후 호스트 시스템(2000)으로부터 수신되는 새로운 요청을 처리할 수 있다. 그러므로 호스트 시스템(2000)으로부터의 읽기/쓰기 요청에 대한 병목 현상없이 재배열 프로세스를 수행할 수 있다.
도 9는 도 2에 도시된 플래시 메모리 제어기의 스크러빙 프로세스를 예시적으로 보여주는 플로우차트이다.
도 9를 참조하면, 플래시 메모리 제어기(1450)는 저장 매체(1200)의 검사 위치(i)의 초기값을 설정한다(S500). 플래시 메모리 제어기(1450)는 저장 매체(1200)의 검사 위치(i)가 지정하는 스트라이프 내 데이터 및 패리티 스트립들을 읽어온다(S510). 플래시 메모리 제어기(1450)는 읽혀진 데이터 및 패리티 스트립들 중 ECC 생성 유닛(1452)에 의해서 오류 정정이 불가능한 스트립의 수를 체크한(S520). 만일 ECC 생성 유닛(1452)에 의해서 오류 정정이 불가능한 스트립이 있고, 읽혀진 데이터 및 패리티 스트립들 중 오류 정정이 불가능한 스트립이 1개일 때(S530), 도 7에 도시된 복원 스트립을 수행한다(S540). 만일 ECC 생성 유닛(1452)에 의해서 오류 정정이 불가능한 스트립이 2개 이상이면 복원이 불가능하다.
만일 검사 위치(i)가 저장 매체(1200)의 마지막 스트라이프를 지정하면 스크러빙 프로세스는 종료된다. 만일 검사 위치(i)가 저장 매체(1200)의 마지막 스트라이프를 지정하지 않으면, 다음 스트라이프를 지정하도록 플래시 메모리 제어기(1450)는 검사 위치(i)를 변경하고, 스크러빙 프로세스를 반복적으로 수행한다.
SSD 컨트롤러(1400)는 호스트 시스템(2000)으로부터 어떠한 명령도 수신되지 않는 유휴 시간(idle time) 또는 특정 명령에 따라서 스크러빙 프로세스를 수행할 수 있다. 이와 같은 스크러빙 프로세스에 의해서 데이터 저장 장치(1000)의 신뢰성이 향상될 뿐만 아니라, 호스트 시스템(2000)으로부터 읽기 명령이 수신될 때 복원 프로세스의 수행 빈도를 감소시킬 수 있으므로 데이터 저장 장치(1000)의 응답 속도가 향상될 수 있다.
도 14는 도 2에 도시된 플래시 메모리 컨트롤러의 다른 동작 예를 설명하기 위한 도면이다.
도 14를 참조하면, 호스트 시스템(2000)으로부터 데이터 스트립(P5)에 대한 읽기 요청이 수신되어서 도 6에 도시된 읽기 프로세스가 수행되던 중 또는 도 9에 도시된 스크러빙 프로세스가 수행되던 중 읽혀진 데이터 스트립(P5)이 ECC 생성 로직(1452)에 의해서 오류 정정될 수 없는 것으로 판별된 것으로 가정한다. 이때 플래시 메모리 컨트롤러(1450)는 읽혀진 데이터 스트립(P5)이 포함된 스트라이프(ST1) 내 데이터 및 패리티 스트립들(P4, P5, P6, P7, PS1)을 읽어올 것이다. 패리티 스트립(P6)은 이미 무효화된 스트립이지만 데이터 스트립(P5)의 복원을 위하여 읽혀질 것이다. 제어 유닛(1453)은 유효한 스트립들(P4, P7, PS1) 뿐만 아니라 무효한 스트립(P6)도 XOR 연산기(1453a)에 의해서 배타적 논리합 연산이 수행되도록 제어한다. 데이터 및 패리티 스트립들(P4, P6, P7, PS1)에 대한 배타적 논리합 연산 결과 복원된 데이터 스트립(P5')가 구해진다. 스트라이프(ST1) 내 유효한 데이터 스트립들(P4, P7) 그리고 복원된 데이터 스트립(P5')은 저장 매체(1200)에 재저장될 수 있도록 버퍼 메모리(1420)에 저장된다. 추후 호스트 인터페이스(1410)를 통해 새로운 데이터 스트립이 버퍼 메모리(1420)에 저장되어서 스트립 그룹이 형성되면 스트립 그룹은 저장 매체(1200)로 전송될 것이다.
도 15는 호스트 인터페이스를 통해 새로운 데이터 스트립이 도 14에 도시된 버퍼 메모리에 저장될 때 플래시 메모리 컨트롤러의 동작을 예시적으로 설명하기 위한 도면이다.
도 15를 참조하면, 버퍼 메모리(1420)에 데이터 스트립들(P4, P5', P6)이 저장된 상태에서 호스트 인터페이스(1410)로부터 새로운 데이터 스트립(P27)이 버퍼 메모리(1420)에 저장되면 하나의 스트립 그룹이 구성된다. 데이터 스트립들(P4, P5', P6, P27)이 스트립 그룹을 형성하면 SSD 제어기(1400)는 스트립 그룹 단위로 저장 매체(1200)에 전송할 것이다. 스트립 그룹에 속한 데이터 스트립들(P4, P5', P6, P27)이 각각 저장 매체(1200)로 전송될 때, 패리티 생성 블록(1451)은 데이터 스트립들에 대한 배타적 논리합(XOR) 연산을 수행할 것이다. 데이터 스트립들에 대한 XOR 결과인 패리티 스트립(PSj)은 스트립 그룹에 추가된다. 스트립 그룹에 속한 데이터 스트립들(P4, P5', P6, P27)과 추가된 패리티 스트립(PSj)은 하나의 스트라이프(STj)를 구성할 것이다. 추가된 패리티 스트립(PSj)은 스트립 그룹의 데이터 스트립들(P4, P5', P6, P27)과 함께 저장 매체(1200)에 저장될 것이다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, ECC 생성 블록(1452)은 데이터 및 패리티 스트립들 각각에 대한 ECC 정보를 생성하도록 구성된다. 데이터 및 패리티 스트립들 각각에 대한 ECC 정보가 생성됨에 따라, 스트라이프를 구성하는 데이터 및 패리티 스트립들 각각에 ECC 정보가 부가된다. 새로운 스트라이프(STj)가 저장 매체(1200)에 저장되기 전에 이전 스트라이프(ST1) 내 데이터 및 패리티 스트립들(P4, P5, P6, PS1, P7) 각각은 무효화된다. 오류 데이터 스트립 정보(IP5)는 삭제되고, 큐(1453b)에는 어떠한 오류 데이터 스트립 정보도 없다.
앞서 도 13에서 설명된 바와 같이, 전체-스트라이프-쓰기 방식이 아닌 스트립 단위 쓰기 방식인 경우, 새로운 데이터 스트립(P27)이 버퍼 메모리(1420)에 저장되기 전이라도 쓰기 명령에 의해서 버퍼 메모리(1420)에 데이터 스트립들(P4, P5', P6)이 순차적으로 저장 매체(1200)에 저장될 수 있다. 이 경우, 새로운 데이터 스트립(P27)이 입력된 이후 패리티 생성 유닛(1451)에 의해서 데이터 스트립들(P4, P5', P6, P27)에 대한 패리티 스트립(PSj)이 생성될 수 있다.
도 9에 도시된 스크러빙 프로세스가 수행되던 중 패리티 스트립이 ECC 생성 로직(1452)에 의해서 오류 정정될 수 없는 것으로 판별될 수 있다. 도 16은 저장 매체에 저장된 패리티 스트립이 ECC 생성 블록에 의해서 오류 정정될 수 없을 때 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 16을 참조하면, 읽혀진 패리티 스트립(PS1)이 ECC 생성 로직(1452)에 의해서 오류 정정될 수 없을 때 플래시 메모리 컨트롤러(1450)는 패리티 스트립(PS1)이 포함된 스트라이프(ST1) 내 데이터 유효한 스트립들(P4, P5, P6)을 읽어와서 버퍼 메모리(1420)에 저장한다. 이때 무효한 데이터 스트립(P7)은 읽을 필요가 없다. 추후 호스트 인터페이스(1410)를 통해 새로운 데이터 스트립이 버퍼 메모리(1420)에 저장되어서 스트립 그룹이 형성되면 스트립 그룹은 저장 매체(1200)로 전송될 것이다. 앞서 설명된 바와 같이, 새로운 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, 패리티 스트립은 스트립 그룹에 추가될 것이다.
도 17은 스트라이프 내 두 개의 데이터 스트립들이 ECC 생성 로직에 의해서 오류 정정될 수 없는 경우 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 17을 참조하면, 도 9에 도시된 스크러빙 프로세스가 수행되던 중 두 개의 데이터 스트립들(P4, P6)이 ECC 생성 로직(1452)에 의해서 오류 정정될 수 없는 것으로 판별될 수 있다. 이러한 경우, 유효한 데이터 스트립(P4)에 대한 복원이 불가능하다. 추후 호스트 시스템(2000)으로부터 데이터 스트립(P4)에 대한 읽기 요청이 수신될 때 데이터 스트립(P4)에 오류가 있음을 알려주기 위하여 데이터 스트립(P4)에 메타 데이터를 부가할 수 있다. 제어 유닛(1453)은 메타 데이터 생성 유닛(1453c)을 더 포함한다. 제어 유닛(1453) 내 메타 데이터 생성 유닛(1453c)은 읽혀진 스트라이프(ST1)의 데이터 및 패리티 스트립들 중 2 개 이상의 스트립들이 ECC 생성 유닛(1452)에 의해서 오류 정정될 수 없을 때 오류 데이터 스트립(P4)에 메타 데이터를 부가한다. 이 때 이미 무효화된 데이터 스트립(P6)에 대한 메타 데이터 생성은 불필요하다. 스트라이프(ST1) 내 유효한 데이터 스트립들(P5, P7) 및 메타 데이터가 부가된 데이터 스트립(P4'')은 버퍼 메모리(1420)에 저장된다. 추후 호스트 인터페이스(1410)를 통해 새로운 데이터 스트립이 버퍼 메모리(1420)에 저장되어서 스트립 그룹이 형성되면 스트립 그룹은 저장 매체(1200)로 전송될 것이다.
도 18은 스트립 그룹 내 데이터 및 패리티 스트립들이 저장 매체로 모두 전송되기 전 호스트 시스템으로부터 읽기 요청이 수신될 때 저장 매체에 저장된 데이터 스트립이 ECC 제어 블록에 의해서 오류 정정될 수 없는 경우 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 18을 참조하면, 버퍼 메모리(1420) 내 데이터 스트립들(P21, P22, P23, P24)은 스트립 그룹을 구성한다. 스트립 단위 쓰기 방식인 경우, 데이터 스트립들(P21, P22, P23, P24)은 순차적으로 저장 매체(1200)로 전송될 것이다. 그러나 데이터 스트립들(P21, P22, P23, P24)이 저장 매체(1200)로 모두 전송되기 전 데이터 스트립(P21)에 대한 읽기 요청이 수신될 수 있다. 이는 저장 매체(1200)가 복수의 플래시 메모리 칩들로 구성되고, 각각의 플래시 메모리 칩에 대한 데이터 기입 동작은 개별적으로 수행되기 때문이다. 스트라이프(STk) 내 크린(Clean) 영역이 존재하므로, 데이터 스트립(P21)이 ECC 생성 유닛(1452)에 의해서 오류 정정될 수 없는 경우, 데이터 스트립(P21)은 배타적 논리합 연산(XOR)에 의한 복원이 불가능하다.
이때 SSD 컨트롤러(1400)은 저장 매체(1200)에 저장된 데이터 스트립(P21) 대신 버퍼 메모리(1420)에 저장된 데이터 스트립(P21)이 호스트 인터페이스(1410)를 통해 호스트 시스템(2000)으로 제공되도록 제어한다.
도 19는 저장 매체에 저장된 스트라이프에 크린 스트립이 포함된 경우 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 19를 참조하면, 데이터 기입 동작이 수행되던 중 급작스런 파워 오프(sudden power off)가 발생하면, 스트라이프를 구성하는 데이터 스트립 또는 패리티 스트립 중 일부가 저장 매체(1200)에 정상적으로 저장되지 않을 수 있다. 전원 공급이 재개되면 저장 매체(1200)에 대한 초기화 프로세스가 수행될 수 있다. 이러한 초기화 프로세스 중 클린 스트립이 발견되면, SSD 컨트롤러(1400)는 스트라이프(STk) 내 유효한 데이터 스트립들(P16, P17, P18)을 읽어와서 버퍼 메모리(1420)에 저장한다. 버퍼 메모리(1420)에 저장된 데이터 스트립들(P16, P17, P18)은 스트립 단위 또는 전체-스트라이프-쓰기 단위로 저장 매체(1200)로 전송될 것이다.
도 20은 스크러빙 프로세스 중 무효화된 데이터 스트립이 ECC 생성 유닛에 의해서 오류 정정될 수 없을 때 도 2에 도시된 플래시 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
이미 무효화된 데이터 스트립(P6)은 호스트 시스템(2000)에 의해서 읽기 요청되지 않는다. 그러나 무효화된 데이터 스트립(P6)이 오류 정정될 수 없는 상황에서 스트라이프(ST1) 내 유효한 데이터 스트립들(P5, P7) 중 어느 하나가 오류 정정될 수 없는 경우 배타적 논리합 연산이 불가능하므로 복원될 수 없다. 이러한 읽기 실패를 예방하기 위하여 스크러빙 프로세스에서 무효화된 데이터 스트립들(P4, P6)에 대한 오류 정정 여부를 검사할 필요가 있다.
만일 무효화된 데이터 스트립(P6)이 ECC 생성 유닛(1452)에 의해서 오류 정정될 수 없을 때 스트라이프(ST1) 내 유효한 데이터 스트립들(P5, P7)은 버퍼 메모리(1420)에 저장된다. 추후 호스트 인터페이스(1410)를 통해 새로운 데이터 스트립이 버퍼 메모리(1420)에 저장되어서 스트립 그룹이 형성되면 데이터 스트립들(P5, P7)은 저장 매체(1200)로 전송될 것이다.
도 21은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
도 21을 참조하면, 본 발명의 예시적인 실시예에 따른 컴퓨팅 시스템(3000)은 마이크로프로세서(3100), 사용자 인터페이스(3200), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(4300), SSD 제어기(3400), 그리고 저장 매체(3500)를 포함한다. SSD 제어기(3400)와 저장 매체(3500)는 도 1에 도시된 데이터 저장 장치(예를 들면, 반도체 드라이브)를 구성하며, 그것에 대한 설명은 그러므로 생략될 것이다. 저장 매체(3500)에는 마이크로프로세서(3100)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 SSD 제어기(3400)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(3600)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
예시적인 실시예들을 이용하여 본 발명을 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 따라서, 청구범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.
1000: 데이터 저장 장치 1200: 저장 매체
1400: SSD 제어기 1451: 패리티 생성 유닛
1452: ECC 생성 유닛 1453: 제어 유닛
1420: 버퍼 메모리

Claims (10)

  1. 저장 매체 및 상기 저장 매체를 제어하는 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법에 있어서:
    읽기 요청된 데이터 스트립이 오류 데이터 스트립인 지를 판별하고;
    상기 읽기 요청된 데이터 스트립이 상기 오류 데이터 스트립일 때 상기 읽기 요청된 데이터 스트립이 속하는 스트라이프 내의 복수의 데이터 스트립들을 읽어오고;
    상기 복수의 데이터 스트립들 중 상기 오류 데이터 스트립을 제외한 나머지 데이터 스트립들을 이용하여 복원된 데이터 스트립을 출력하고; 그리고
    상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들을 상기 저장 매체에 기입하는 것을 포함하는 것을 특징으로 하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 오류 데이터 스트립인 지를 판별하는 것은,
    상기 읽기 요청된 데이터 스트립이 ECC(Error Correction Code) 생성 유닛에 의해서 오류 정정이 불가능할 때 상기 오류 데이터 스트립으로 판별하는 것을 포함하는 것을 특징으로 하는 동작 방법.
  3. 제 2 항에 있어서,
    상기 오류 데이터 스트립의 복원은,
    상기 오류 데이터 스트립을 제외한 상기 나머지 데이터 스트립들에 대한 배타적 논리합 연산으로 행해지며,
    상기 나머지 데이터 스트립들은 유효한 및 무효화된 데이터 스트립들을 포함하는 것을 특징으로 하는 동작 방법.
  4. 제 3 항에 있어서,
    상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들을 상기 저장 매체에 기입하는 것은,
    상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들 중 상기 유효한 데이터 스트립을 버퍼 메모리에 저장하는 것을 포함하는 것을 특징으로 하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 스트라이프 내의 상기 복수의 데이터 스트립들 중 적어도 하나는 패리티 스트립인 것을 특징으로 하는 동작 방법.
  6. 제 1 항에 있어서,
    상기 복원된 데이터 스트립을 응답 데이터로 출력하는 것을 더 포함하는 동작 방법.
  7. 제 6 항에 있어서,
    상기 복원된 데이터 스트립을 상기 응답 데이터로 출력한 후 상기 오류 데이터 스트립에 대한 정보를 큐(queue)에 저장하는 것을 더 포함하는 것을 특징으로 하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들을 상기 저장 매체에 기입하는 것은,
    상기 큐로부터 상기 오류 데이터 스트립에 대한 정보를 읽어오고,
    상기 오류 데이터 스트립이 속하는 스트라이프 내의 복수의 데이터 스트립들을 읽어오고;
    상기 복수의 데이터 스트립들 중 상기 오류 데이터 스트립을 제외한 나머지 데이터 스트립들에 대한 배타적 논리합 연산에 의해서 상기 복원된 데이터 스트립을 출력하고;
    상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들 중 유효한 데이터 스트립들을 버퍼 메모리에 저장하고; 그리고
    기입 명령에 응답해서 상기 버퍼 메모리에 저장된 상기 복원된 데이터 스트립 및 상기 유효한 데이터 스트립들을 상기 저장 매체에 기입하는 것을 특징으로 하는 동작 방법.
  9. 저장 매체와;
    버퍼 메모리와;
    프로세싱 유닛과;
    상기 프로세싱 유닛의 제어에 응답하여 상기 저장 매체의 액세스 동작을 제어하도록 구성된 컨트롤러를 포함하되,
    상기 컨트롤러는,
    읽기 요청된 데이터 스트립이 오류 데이터 스트립일 때 상기 읽기 요청된 데이터 스트립이 속하는 스트라이프 내의 복수의 데이터 스트립들 중 상기 오류 데이터 스트립을 제외한 나머지 데이터 스트립들을 이용하여 복원된 데이터 스트립을 출력하고, 상기 복원된 데이터 스트립 및 상기 나머지 데이터 스트립들 중 유효한 데이터 스트립들을 상기 저장 매체에 기입하는 것을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  10. 제 13 항에 있어서,
    상기 스트라이프 내의 상기 복수의 데이터 스트립들 중 적어도 하나는 패리티 스트립이고,
    상기 컨트롤러는,
    상기 오류 데이터 스트립이 상기 패리티 스트립일 때, 상기 스트라이프 내의 상기 패리티 스트립을 제외한 상기 복수의 데이터 스트립들 중 유효한 데이터 스트립들을 버퍼 메모리에 저장하는 것을 포함하는 것을 특징으로 하는 동작 방법.
KR1020110032909A 2011-04-08 2011-04-08 데이터 저장 장치 및 그것의 동작 방법 KR101778782B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110032909A KR101778782B1 (ko) 2011-04-08 2011-04-08 데이터 저장 장치 및 그것의 동작 방법
US13/440,114 US8769375B2 (en) 2011-04-08 2012-04-05 Data storage device related method of operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110032909A KR101778782B1 (ko) 2011-04-08 2011-04-08 데이터 저장 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20120115012A true KR20120115012A (ko) 2012-10-17
KR101778782B1 KR101778782B1 (ko) 2017-09-27

Family

ID=46967069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110032909A KR101778782B1 (ko) 2011-04-08 2011-04-08 데이터 저장 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US8769375B2 (ko)
KR (1) KR101778782B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9335955B2 (en) 2012-07-23 2016-05-10 Samsung Electronics Co., Ltd. Nonvolatile memory device and related data management method
KR20170104073A (ko) * 2016-03-04 2017-09-14 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9047214B1 (en) * 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9524113B2 (en) * 2013-05-24 2016-12-20 Seagate Technology Llc Variable redundancy in a solid state drive
JP2015018451A (ja) * 2013-07-11 2015-01-29 株式会社東芝 メモリコントローラ、記憶装置およびメモリ制御方法
US9262267B2 (en) * 2013-12-02 2016-02-16 Intel Corporation Error correction in solid state drives (SSD)
US9652321B2 (en) * 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
US9990146B2 (en) * 2016-02-03 2018-06-05 Sandisk Technologies Llc Apparatus and method of data sequencing
US10289486B2 (en) * 2017-07-13 2019-05-14 Omnivision Technologies, Inc. Memory with pattern oriented error correction code
US10996888B2 (en) * 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875477A (en) 1995-12-22 1999-02-23 Intel Corporation Method and apparatus for error management in a solid state disk drive using primary and secondary logical sector numbers
US7237156B1 (en) * 2001-08-03 2007-06-26 Netlogic Microsystems, Inc. Content addressable memory with error detection
US7188212B2 (en) * 2004-05-06 2007-03-06 International Business Machines Corporation Method and system for storing data in an array of storage devices with additional and autonomic protection
US7093157B2 (en) * 2004-06-17 2006-08-15 International Business Machines Corporation Method and system for autonomic protection against data strip loss
JP4435705B2 (ja) 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7774322B2 (en) * 2005-05-25 2010-08-10 Microsoft Corporation File transfer error handling
JP4768374B2 (ja) * 2005-09-16 2011-09-07 株式会社東芝 半導体記憶装置
US8032816B2 (en) * 2007-06-01 2011-10-04 International Business Machines Corporation Apparatus and method for distinguishing temporary and permanent errors in memory modules
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
GB2488462B (en) * 2009-12-17 2018-01-17 Ibm Data management in solid state storage systems
TWI497293B (zh) * 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
JP4901968B2 (ja) * 2010-03-01 2012-03-21 株式会社東芝 半導体記憶装置
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9335955B2 (en) 2012-07-23 2016-05-10 Samsung Electronics Co., Ltd. Nonvolatile memory device and related data management method
KR20170104073A (ko) * 2016-03-04 2017-09-14 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법

Also Published As

Publication number Publication date
US8769375B2 (en) 2014-07-01
KR101778782B1 (ko) 2017-09-27
US20120260146A1 (en) 2012-10-11

Similar Documents

Publication Publication Date Title
KR101778782B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11941257B2 (en) Method and apparatus for flexible RAID in SSD
KR101732030B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102102728B1 (ko) 스케일러블 스토리지 보호
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
US8977833B2 (en) Memory system
US8250403B2 (en) Solid state disk device and related data storing and reading methods
US20110296084A1 (en) Data storage apparatus and method of writing data
US20140281167A1 (en) Compressor resources for high density storage units
US8799745B2 (en) Storage control apparatus and error correction method
KR20150067583A (ko) 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
JP2010152551A (ja) 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法
JP2011180831A (ja) 半導体記憶装置
US10817372B2 (en) Systems and methods for ultra fast ECC with parity
CN112612639A (zh) 操作存储器系统的方法、操作主机的方法和计算系统
CN115202568A (zh) 存储系统及其操作方法
US9645745B2 (en) I/O performance in resilient arrays of computer storage devices
CN114730247A (zh) 具有数据的最小写入大小的存储设备
US20140281796A1 (en) Storage control apparatus and storage system
KR20190076589A (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
WO2013023564A1 (en) Method and apparatus for flexible raid in ssd
JP2021009646A (ja) ストレージ制御装置およびストレージ制御プログラム
WO2010150283A2 (en) Disk storage performance using digital memory and data compression
JP2012053571A (ja) 情報処理装置、コントローラカード、および情報処理装置の制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant