KR20170010273A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents
데이터 저장 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20170010273A KR20170010273A KR1020150101792A KR20150101792A KR20170010273A KR 20170010273 A KR20170010273 A KR 20170010273A KR 1020150101792 A KR1020150101792 A KR 1020150101792A KR 20150101792 A KR20150101792 A KR 20150101792A KR 20170010273 A KR20170010273 A KR 20170010273A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- chunk
- parity
- sectors
- encoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
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)
- Computer Security & Cryptography (AREA)
Abstract
데이터 저장 장치는 복수의 청크 영역들을 포함하는 페이지를 포함하고, 상기 청크 영역들 각각에 대해 부분 라이트 동작을 독립적으로 수행하도록 구성된 불휘발성 메모리 장치 및 메모리를 포함하고, 상기 청크 영역들에 부분적으로 저장될 데이터 청크를 인코딩함으로써 패리티 데이터를 생성하고, 상기 패리티 데이터를 중간 패리티 데이터로서 상기 메모리에 보관하도록 구성된 컨트롤러를 포함한다.
Description
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 데이터를 인코딩하는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는 부분 라이트 동작을 통해 불연속적으로 저장될 데이터 청크들을 인코딩 단위로서 함께 인코딩할 수 있는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 청크 영역들을 포함하는 페이지를 포함하고, 상기 청크 영역들 각각에 대해 부분 라이트 동작을 독립적으로 수행하도록 구성된 불휘발성 메모리 장치 및 메모리를 포함하고, 상기 청크 영역들에 부분적으로 저장될 데이터 청크를 인코딩함으로써 패리티 데이터를 생성하고, 상기 패리티 데이터를 중간 패리티 데이터로서 상기 메모리에 보관하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 불휘발성 메모리 장치의 페이지에 포함된 복수의 청크 영역들에 부분적으로 저장될 데이터 청크를 인코딩함으로써 패리티 데이터를 생성하는 단계 및 상기 패리티 데이터를 중간 패리티 데이터로서 메모리에 보관하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 청크 영역들을 포함하는 페이지를 포함하고, 상기 청크 영역들 각각에 대해 부분 라이트 동작을 독립적으로 수행하도록 구성된 불휘발성 메모리 장치 및 메모리를 포함하고, 상기 청크 영역들에 부분적으로 저장될 데이터 세그먼트를 프리 인코딩함으로써 데이터 청크를 생성하고, 상기 데이터 청크를 마스터 인코딩함으로써 패리티 데이터를 생성하고, 상기 패리티 데이터를 중간 패리티 데이터로서 상기 메모리에 보관하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치 및 그것의 동작 방법은 부분 라이트 동작을 통해 불연속적으로 저장될 데이터 청크들을 인코딩 단위로서 함께 인코딩할 수 있다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치의 블록도,
도2는 도1의 불휘발성 메모리 장치에 포함된 예시적인 페이지,
도3은 도1의 인코더의 실시 예를 도시한 블록도,
도4는 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도5는 도1의 인코더의 실시 예를 도시한 블록도,
도6은 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도7은 도1의 인코더의 실시 예를 도시한 블록도,
도8은 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도9는 도1의 인코더의 실시 예를 도시한 블록도,
도10은 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도11은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도,
도12는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 도시하는 블록도,
도13은 본 발명의 실시 예에 따른 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
도2는 도1의 불휘발성 메모리 장치에 포함된 예시적인 페이지,
도3은 도1의 인코더의 실시 예를 도시한 블록도,
도4는 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도5는 도1의 인코더의 실시 예를 도시한 블록도,
도6은 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도7은 도1의 인코더의 실시 예를 도시한 블록도,
도8은 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도9는 도1의 인코더의 실시 예를 도시한 블록도,
도10은 도1의 데이터 저장 장치의 동작 방법을 설명하기 위한 도면,
도11은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도,
도12는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 도시하는 블록도,
도13은 본 발명의 실시 예에 따른 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치(100)의 블록도이다.
데이터 저장 장치(100)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD 등으로 구성될 수 있다.
데이터 저장 장치(100)는 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함할 수 있다.
컨트롤러(110)는 프로세서(111), 메모리(112) 및 ECC부(113)를 포함할 수 있다.
프로세서(111)는 데이터 저장 장치(100)의 제반 동작을 제어할 수 있다. 프로세서(111)는 외부 장치(미도시)로부터 전송된 라이트 요청에 응답하여 불휘발성 메모리 장치(120)에 데이터를 저장하고, 외부 장치로부터 전송된 리드 요청에 응답하여 불휘발성 메모리 장치(120)에 저장된 데이터를 리드하여 외부 장치로 출력할 수 있다. 프로세서(111)는 데이터 저장 장치(100)를 제어하기 위한 펌웨어를 메모리(112) 상에서 구동할 수 있다.
메모리(112)는 프로세서(111)에 의해 구동되는 펌웨어 및 컨트롤러(110)의 동작에 필요한 각종 데이터를 저장할 수 있다. 예를 들어, 메모리(112)는 ECC부(113)에서 생성된 중간 패리티 데이터를 저장할 수 있다. 또한, 메모리(112)는 외부 장치 및 불휘발성 메모리 장치(120) 간에 전송되는 데이터를 임시 저장할 수 있다.
ECC부(113)는 인코더(114) 및 디코더(115)를 포함할 수 있다.
인코더(114)는 불휘발성 메모리 장치(120)에 저장될 데이터를 인코딩함으로써, 데이터에 대한 패리티 데이터를 생성할 수 있다.
디코더(115)는 불휘발성 메모리 장치(120)로부터 리드된 데이터를 해당 데이터에 대한 패리티 데이터를 사용하여 디코딩함으로써, 리드된 데이터에 포함된 에러를 검출하고 검출된 에러를 정정할 수 있다.
불휘발성 메모리 장치(120)는 전원이 인가되지 않더라도 저장된 데이터를 유지할 수 있다. 불휘발성 메모리 장치(120)는 낸드 플래시 또는 노어 플래시와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
불휘발성 메모리 장치(120)는 컨트롤러(110)의 제어에 따라, 컨트롤러(110)로부터 전송된 데이터를 저장하기 위해 라이트 동작을 수행하고, 저장된 데이터를 리드하여 컨트롤러(110)로 전송하기 위해 리드 동작을 수행할 수 있다. 불휘발성 메모리 장치(120)는 복수의 메모리 블록들(BK0~BKn)에 데이터를 저장할 수 있다. 복수의 메모리 블록들(BK0~BKn) 각각은 복수의 페이지들(PG0~PGm)을 포함할 수 있다.
메모리 블록들(BK0~BKn) 중 적어도 하나, 예를 들어, 메모리 블록(BK0)은 버퍼로서 사용될 수 있다. 즉, 컨트롤러(110)는 외부 장치로부터 라이트 요청된 데이터를 메모리 블록(BK0)에 일단 저장하고, 예를 들어, 아이들(idle) 타임에 메모리 블록(BK0)에 저장된 데이터를 버퍼로 사용되지 않는 데이터 블록들(BK1~BKn)으로 이동시킬 수 있다. 버퍼로 사용되는 메모리 블록(BK0)은 라이트/리드 속도가 빠른 SLC(Single Level Cell)로 구성될 수 있고, 버퍼로 사용되지 않는 메모리 블록들(BK1~BKn)은 SLC보다 라이트/리드 속도는 느리지만 더 큰 저장 용량을 지원할 수 있는 MLC(Multi Level Cell)/TLC(Triple Level Cell)로 구성될 수 있다. 그러나, 실시 예에 따라, 메모리 블록들(BK0~BKn)의 구성은 이에 제한되지 않는다.
실시 예에 따라, 데이터 저장 장치(100)는 복수의 불휘발성 메모리 장치들을 포함할 수 있다. 데이터 저장 장치(100)가 복수의 불휘발성 메모리 장치들을 포함할 때, 컨트롤러(110)는 복수의 불휘발성 메모리 장치들 각각을 제어함으로써 복수의 불휘발성 메모리 장치들에 데이터를 저장할 수 있다.
도2는 도1의 불휘발성 메모리 장치(120)에 포함된 예시적인 페이지(PG)이다.
페이지(PG)는 청크 영역들(121, 122) 및 스패어 영역(123)을 포함할 수 있다. 청크 영역들(121, 122)은 데이터 청크들(DC0, DC1)이 저장되는 영역이고, 스패어 영역(123)은 데이터 청크들(DC0, DC1)에 관한 정보를 포함하는 메타 데이터, 예를 들어, 패리티 데이터(FP)가 저장되는 영역일 수 있다. 데이터 청크는 청크 영역들(121, 122) 각각에 저장되는 데이터의 단위일 수 있다.
도2는 페이지(PG)가 2개의 청크 영역들(121, 122)을 포함하는 것으로 도시하지만, 실시 예에 따라 페이지(PG)에 포함되는 청크 영역들의 개수는 이에 제한되지 않는다. 실시 예에 따라, 일정한 크기의 페이지에 포함되는 청크 영역들의 개수가 증가할 때, 하나의 청크 영역에 저장되는 데이터 청크의 크기는 축소될 수 있다.
다시 도1을 참조하면, 불휘발성 메모리 장치(120)는 "부분 라이트 동작"을 통해 청크 영역들(121, 122) 각각에 대해 라이트 동작을 독립적으로 수행할 수 있다. 즉, 불휘발성 메모리 장치(120)는 부분 라이트 동작을 통해 데이터를 청크 영역들(121, 122) 마다 데이터 청크 단위로 저장할 수 있다. 불휘발성 메모리 장치(120)는 스패어 영역(123)에 대해서도 부분 라이트 동작을 독립적으로 수행할 수 있다.
버퍼로 사용되는 메모리 블록(BK0)의 페이지들(PG0~PGm)의 구성은 도2에 도시된 페이지(PG)의 구성과 실질적으로 동일할 수 있다. 즉, 불휘발성 메모리 장치(120)는 부분 라이트 동작을 통해 메모리 블록(BK0)의 페이지들(PG0~PGm)에 데이터 청크들을 저장할 수 있다. 따라서, 컨트롤러(110)는 메모리 블록(BK0)을 버퍼로서 보다 효율적으로 사용할 수 있다.
인코더(114)는 하나의 페이지(PG)의 청크 영역들(121, 122)에 각각 저장될 데이터 청크들(DC0, DC1)을 함께 인코딩함으로써 최종 패리티 데이터(FP)를 생성할 수 있다. "함께" 인코딩한다는 것은 데이터 청크들(DC0, DC1)이 하나의 인코딩 단위로서 인코딩됨을 의미할 수 있다.
본 발명의 실시 예에 따르면, 컨트롤러(110)는 페이지(PG)에 부분 라이트 동작을 통해 불연속적으로 저장되는 데이터 청크들(DC0, DC1)을 함께 인코딩하기 위해서, 최종 패리티 데이터(FP)가 생성될 때까지 데이터 청크들(DC0, DC1)을 메모리(112)에 계속 유지할 필요가 없다.
도3은 도1의 인코더(114)의 실시 예(114A)를 도시한 블록도이다.
인코더(114A)는 데이터 청크(DC)를 인코딩할 수 있다. 인코딩된 데이터 청크(DC)는 부분 라이트 동작을 통해 불휘발성 메모리 장치(120)의 페이지에 부분적으로 저장될 수 있다. 데이터 청크(DC)가 인코딩 단위의 마지막 데이터 청크인 경우, 즉, 데이터 청크(DC)와 함께 인코딩될 데이터 청크가 더 이상 없는 경우, 데이터 청크(DC)가 인코딩됨으로써 생성된 패리티 데이터는 최종 패리티 데이터(FP)로서 불휘발성 메모리 장치(120)에 저장될 수 있다. 데이터 청크(DC)가 인코딩 단위의 마지막 데이터 청크가 아닌 경우, 데이터 청크(DC)가 인코딩됨으로써 생성된 패리티 데이터는 중간 패리티 데이터(IP)로서 메모리(112)에 보관될 수 있다.
중간 패리티 데이터(IP)는 후속 데이터 청크(DC)가 인코더(114A)로 전송될 때, 메모리(112)로부터 인코더(114A)로 로드될 수 있다. 인코더(114A)는 중간 패리티 데이터(IP)를 사용하여 후속 데이터 청크(DC)를 인코딩할 수 있다.
즉, 이전 데이터 청크를 인코딩함으로써 생성되었던 중간 패리티 데이터(IP)가 인코더(114A)로 로드되면, 인코더(114A)는 이전 데이터 청크를 인코딩한 직후와 같은 상태가 될 수 있다. 따라서, 인코더(114A)가 중간 패리티 데이터(IP)를 사용하여 후속 데이터 청크를 인코딩하면, 이전 데이터 청크와 후속 데이터 청크를 연속적으로 인코딩했을 때와 동일한 패리티 데이터를 생성할 수 있다. 인코더(114A)는 메모리(112)에 보관된 중간 패리티 데이터(IP)를 사용함으로써 불연속적으로 전송된 이전 데이터 청크와 후속 데이터 청크를 하나의 인코딩 단위로서 함께 인코딩할 수 있다.
도4는 도1의 데이터 저장 장치(100)의 동작 방법을 설명하기 위한 도면이다. 도4를 참조하면, 도3의 인코더(114A)가 페이지(PG)의 청크 영역들(121, 122)에 부분 라이트 동작을 통해 저장될 데이터 청크들(DC0, DC1)을 인코딩 단위로서 함께 인코딩하고, 최종 패리티 데이터(FP)를 생성하는 방법을 도시한다.
인코더(114A)는 청크 영역(121)에 저장될 데이터 청크(DC0)를 메모리(112)로부터 수신할 수 있다. 인코더(114A)는 데이터 청크(DC0)를 인코딩함으로써, 중간 패리티 데이터(IP)를 생성할 수 있다.
인코딩된 데이터 청크(DC0)는 청크 영역(121)에 곧바로 저장될 수 있다. 데이터 청크(DC0)와 함께 인코딩될 데이터 청크(DC1)가 인코더(114A)에 입력될 때까지, 중간 패리티 데이터(IP)는 메모리(112)에 보관될 수 있다.
이어서, 인코더(114A)는 청크 영역(122)에 저장될 데이터 청크(DC1)를 메모리(112)로부터 수신할 수 있다. 인코더(114A)는 메모리(112)로부터 로드된 중간 패리티 데이터(IP)를 사용하여 데이터 청크(DC1)를 인코딩함으로써, 데이터 청크들(DC0, DC1)에 대한 최종 패리티 데이터(FP)를 생성할 수 있다.
인코딩된 데이터 청크(DC1)는 청크 영역(122)에 저장될 수 있다. 데이터 청크들(DC0, DC1)과 함께 인코딩될 데이터 청크가 더 이상 없으므로, 최종 패리티 데이터(FP)는 스패어 영역(123)에 저장될 수 있다. 실시 예에 따라, 데이터 청크(DC1)와 최종 패리티 데이터(FP)는 부분 라이트 동작을 통해 청크 영역(122)과 스패어 영역(123)에 동시에 저장될 수 있다.
본 발명의 실시 예에 따르면, 컨트롤러(110)는 페이지(PG)에 불연속적으로 저장되는 데이터 청크들(DC0, DC1)을 함께 인코딩하기 위해서 최종 패리티 데이터(FP)가 생성될 때까지 데이터 청크들(DC0, DC1)을 메모리(112)에 유지할 필요가 없다. 컨트롤러(110)는 데이터 청크를 획득할 때마다 즉시 인코딩하여 중간 패리티 데이터를 생성하고, 인코딩된 데이터 청크를 불휘발성 메모리 장치(120)에 저장하고 중간 패리티 데이터 만을 메모리(112)에 보관할 수 있다.
도5는 도1의 인코더(114)의 실시 예(114B)를 도시한 블록도이다.
인코더(114B)는 에러 정정 능력의 향상을 위해서 인코딩 단위의 데이터 청크들을 데이터 섹터 단위로 조합하여 인코딩할 수 있다.
구체적으로, 인코더(114B)는 데이터 청크(DC)를 데이터 섹터들(DS0, DS1)로 분할하고, 데이터 섹터들(DS0, DS1)을 섹터 그룹들로 분류하고, 섹터 그룹들 별로 인코딩함으로써 패리티 섹터들을 생성할 수 있다. 인코딩된 데이터 섹터들(DS0, DS1)은 불휘발성 메모리 장치(120)에 부분 라이트 동작을 통해 저장될 수 있다. 데이터 청크(DC)가 인코딩 단위의 마지막 데이터 청크인 경우, 생성된 패리티 섹터들은 최종 패리티 섹터들(FS0, FS1)로서 불휘발성 메모리 장치(120)에 저장될 수 있다. 데이터 청크(DC)가 인코딩 단위의 마지막 데이터 청크가 아닌 경우, 생성된 패리티 섹터들은 중간 패리티 섹터들(IS0, IS1)로서 메모리(112)에 보관될 수 있다.
중간 패리티 섹터들(IS0, IS1)은 후속 데이터 청크(DC)가 인코더(114B)로 전송될 때, 메모리(112)로부터 인코더(114B)로 로드될 수 있다. 인코더(114B)는 중간 패리티 섹터들(IS0, IS1)을 각각 사용하여, 후속 데이터 청크(DC)로부터 분할되고 섹터 그룹들로 분류된 데이터 섹터들(DS0, DS1)을 각각 인코딩할 수 있다.
섹터 그룹은 함께 인코딩되는 데이터 섹터들을 의미할 수 있다. 도5는, 예를 들어, 데이터 청크(DC) 마다 하위 데이터 섹터(FS0)와 상위 데이터 섹터(FS1)를 별개의 섹터 그룹들로 분류하는 방법을 도시한다. 그러나, 실시 예에 따라, 데이터 섹터들을 섹터 그룹들로 분류하는 방법은 이에 제한되지 않는다.
인코더(114B)는 서브 인코더들(114B_0, 114B_1)을 포함할 수 있다.
서브 인코더(114B_0)는 데이터 섹터(DS0)를 인코딩하고, 패리티 섹터를 생성할 수 있다. 생성된 패리티 섹터는 중간 패리티 섹터(IS0)로서 메모리(112)에 보관되거나 최종 패리티 섹터(FS0)로서 불휘발성 메모리 장치(120)에 저장될 수 있다.
서브 인코더(114B_1)는 데이터 섹터(DS1)를 인코딩하고, 패리티 섹터를 생성할 수 있다. 생성된 패리티 섹터는 중간 패리티 섹터(IS1)로서 메모리(112)에 보관되거나 최종 패리티 섹터(FS1)로서 불휘발성 메모리 장치(120)에 저장될 수 있다.
도5는 인코더(114B)가 데이터 청크를 2개의 데이터 섹터들(DS0, DS1)로 분할하고, 2개의 데이터 섹터들(DS0, DS1)을 각각 인코딩하기 위한 2개의 서브 인코더들(114B_0, 114B_1)을 포함하는 것으로 도시하나, 본 발명의 실시 예는 이에 제한되지 않는다. 실시 예에 따라, 인코더(114B)에 포함되는 서브 인코더들의 개수는 데이터 청크로부터 분할되는 데이터 섹터들의 개수와 동일하거나 다를 수 있다. 실시 예에 따라, 인코더(114B)는 하나의 서브 인코더 만을 포함할 수 있고, 하나의 서브 인코더는 데이터 청크로부터 분할되는 데이터 섹터들을 순차적으로 인코딩함으로써 섹터 그룹들 별로 패리티 섹터들을 순차적으로 생성할 수 있다.
도6은 도1의 데이터 저장 장치(100)의 동작 방법을 설명하기 위한 도면이다. 도6을 참조하면, 도5의 인코더(114B)가 페이지(PG)의 청크 영역들(121, 122) 부분 라이트 동작을 통해 저장될 데이터 청크들(DC0, DC1)을 데이터 섹터 단위로 조합하여 인코딩함으로써 최종 패리티 데이터(FP)를 생성하는 방법을 도시한다.
인코더(114B)는 청크 영역(121)에 저장될 데이터 청크(DC0)를 메모리(112)로부터 수신할 수 있다. 인코더(114B)는 데이터 청크(DC0)를 데이터 섹터들(DS00, DS01)로 분할하고, 데이터 섹터들(DS00, DS01)을 제1 및 제2 섹터 그룹들(G0, G1)로 분류할 수 있다. 인코더(114B)는 데이터 섹터들(DS00, DS01)을 각각 인코딩함으로써, 제1 및 제2 섹터 그룹들(G0, G1) 별로 중간 패리티 섹터들(IS0, IS1)을 생성할 수 있다.
인코딩된 데이터 섹터들(DS00, DS01)은 청크 영역(121)에 곧바로 저장될 수 있다. 데이터 청크(DC0)와 함께 인코딩될 데이터 청크(DC1)가 인코더(114B)에 입력될 때까지, 중간 패리티 섹터들(IS0, IS1)은 메모리(112)에 보관될 수 있다.
이어서, 인코더(114B)는 청크 영역(122)에 저장될 데이터 청크(DC1)를 메모리(112)로부터 수신할 수 있다. 인코더(114B)는 데이터 청크(DC1)를 데이터 섹터들(DS10, DS11)로 분할하고, 데이터 섹터들(DS10, DS11)을 제1 및 제2 섹터 그룹들(G0, G1)로 분류할 수 있다. 인코더(114B)는 메모리(112)로부터 로드된 중간 패리티 섹터들(IS0, IS1)을 사용하여 데이터 섹터들(DS10, DS11)을 각각 인코딩함으로써, 제1 및 제2 섹터 그룹들(G0, G1) 별로 최종 패리티 섹터들(FS0, FS1)을 생성할 수 있다.
인코딩된 데이터 섹터들(DS10, DS11)은 청크 영역(122)에 저장될 수 있다. 데이터 청크들(DC0, DC1)과 함께 인코딩될 데이터 청크가 더 이상 없으므로, 최종 패리티 섹터들(FS0, FS1)은 최종 패리티 데이터(FP)로서 스패어 영역(123)에 저장될 수 있다.
도7은 도1의 인코더(114)의 실시 예(114C)를 도시한 블록도이다.
인코더(114C)는 프리 인코더(114C_0) 및 마스터 인코더(114C_1)를 포함할 수 있다.
프리 인코더(114C_0)는 데이터 세그먼트(SG)를 인코딩함으로써 프리 패리티 데이터(PP)를 생성하고, 데이터 세그먼트(SG) 및 프리 패리티 데이터(PP)에 근거하여 데이터 청크(DC)를 생성할 수 있다.
마스터 인코더(114C_1)는 데이터 청크(DC)를 인코딩하여 패리티 데이터를 생성할 수 있다. 패리티 데이터는 중간 패리티 데이터(IP) 또는 최종 패리티 데이터(FP)로서 출력될 수 있다. 마스터 인코더(114C_1)는 도3의 인코더(114A)와 실질적으로 동일하게 구성되고 동작할 수 있다. 따라서, 상세한 설명은 생략될 것이다.
실시 예에 따라, 프리 인코더(114C_0)와 마스터 인코더(114C_1)는 서로 다른 ECC 알고리즘에 따라 인코딩 동작을 수행할 수 있다. 프리 인코더(114C_0)는, 예를 들어, TPC(Turbo-Product Code) 알고리즘에 따라 데이터 세그먼트(SG)를 인코딩할 수 있다. 마스터 인코더(114C_1)는, 예를 들어, BCH(Bose-Chaudhri-Hocquenghem) 코드 알고리즘에 따라 데이터 청크(DC)를 인코딩할 수 있다. 그러나, 본 발명의 실시 예는 이에 제한되지 않는다.
실시 예에 따라, 인코더(114C)는 하나의 페이지에 포함된 복수의 청크 영역들에 각각 대응하는 복수의 프리 인코더들을 포함할 수 있다. 이러한 경우, 복수의 프리 인코더들 각각은 대응하는 청크 영역에 저장될 데이터 청크를 생성할 수 있다. 컨트롤러(110)가 하나의 페이지에 데이터를 한번에 저장할 때, 복수의 프리 인코더들 각각은 대응하는 청크 영역에 저장될 데이터 청크를 동시에 생성할 수 있다.
도8은 도1의 데이터 저장 장치(100)의 동작 방법을 설명하기 위한 도면이다. 도8을 참조하면, 도7의 인코더(114C)가 페이지(PG)의 청크 영역들(121, 122)에 부분 라이트 동작을 통해 저장될 데이터 세그먼트들(SG0, SG1)을 각각 프리 인코딩하고, 프리 인코딩을 통해 생성된 데이터 청크들(DC0, DC1)을 인코딩 단위로서 함께 인코딩함으로써, 최종 패리티 데이터(FP)를 생성하는 방법을 도시한다.
프리 인코더(114C_0)는 청크 영역(121)에 저장될 데이터 세그먼트(SG0)를 메모리(112)로부터 수신할 수 있다. 프리 인코더(114C_0)는 데이터 세그먼트(SG0)를 프리 인코딩하여 프리 패리티 데이터(PP0)를 생성하고, 데이터 세그먼트(SG0) 및 프리 패리티 데이터(PP0)에 근거하여 데이터 청크(DC0)를 생성할 수 있다. 예를 들어, 프리 인코더(114C_0)는 데이터 세그먼트(SG0)에 프리 패리티 데이터(PP0)를 부가함으로써 데이터 청크(DC0)를 생성할 수 있다.
마스터 인코더(114C_1)는 데이터 청크(DC0)를 프리 인코더(114C_0)로부터 수신할 수 있다. 마스터 인코더(114C_1)는 데이터 청크(DC0)를 마스터 인코딩함으로써 중간 패리티 데이터(IP)를 생성할 수 있다.
마스터 인코딩된 데이터 청크(DC0)는 청크 영역(121)에 곧바로 저장될 수 있다. 데이터 청크(DC0)와 함께 마스터 인코딩될 데이터 청크(DC1)가 프리 인코더(114C_0)에 의해 생성될 때까지, 중간 패리티 데이터(IP)는 메모리(112)에 보관될 수 있다.
이어서, 프리 인코더(114C_0)는 청크 영역(122)에 저장될 데이터 세그먼트(SG1)를 메모리(112)로부터 수신할 수 있다. 프리 인코더(114C_0)는 데이터 세그먼트(SG1)를 프리 인코딩하여 프리 패리티 데이터(PP1)를 생성하고, 데이터 세그먼트(SG1) 및 프리 패리티 데이터(PP1)에 근거하여 데이터 청크(DC1)를 생성할 수 있다. 예를 들어, 프리 인코더(114C_0)는 데이터 세그먼트(SG1)에 프리 패리티 데이터(PP1)를 부가함으로써 데이터 청크(DC1)를 생성할 수 있다.
마스터 인코더(114C_1)는 데이터 청크(DC1)를 프리 인코더(114C_0)로부터 수신할 수 있다. 마스터 인코더(114C_1)는 데이터 청크(DC1)를 마스터 인코딩함으로써, 최종 패리티 데이터(FP)를 생성할 수 있다.
마스터 인코딩된 데이터 청크(DC1)는 청크 영역(122)에 저장될 수 있다. 데이터 청크들(DC0, DC1)과 함께 마스터 인코딩될 데이터 청크가 더 이상 없으므로, 최종 패리티 데이터(FP)는 스패어 영역(123)에 저장될 수 있다.
도9는 도1의 (114)의 실시 예(114D)를 도시한 블록도이다.
인코더(114D)는 프리 인코더(114D_0) 및 마스터 인코더(114D_1)를 포함할 수 있다.
프리 인코더(114D_0)는 도7의 프리 인코더(114C_0)와 실질적으로 동일하게 구성되고 동작할 수 있다. 마스터 인코더(114D_1)는 서브 인코더들(114D_10, 114D_11)을 포함할 수 있다. 서브 인코더들(114D_10, 114D_11)은 도5의 서브 인코더들(114B_0, 114B_1)과 실질적으로 동일하게 구성되고 동작할 수 있다. 따라서, 상세한 설명은 생략될 것이다.
도10은 도1의 데이터 저장 장치(100)의 동작 방법을 설명하기 위한 도면이다. 도10을 참조하면, 도9의 인코더(114D)가 페이지(PG)의 청크 영역들(121, 122)에 부분 라이트 동작을 통해 저장될 데이터 세그먼트들(SG0, SG1)을 각각 프리 인코딩하고, 프리 인코딩을 통해 생성된 데이터 청크들(DC0, DC1)을 데이터 섹터 단위로 조합하여 인코딩함으로써 최종 패리티 데이터(FP)를 생성하는 방법을 도시한다.
프리 인코더(114D_0)는 청크 영역(121)에 저장될 데이터 세그먼트(SG0)를 메모리(112)로부터 수신할 수 있다. 프리 인코더(114D_0)는 데이터 세그먼트(SG0)를 프리 인코딩하여 프리 패리티 데이터(PP0)를 생성하고, 데이터 세그먼트(SG0) 및 프리 패리티 데이터(PP0)에 근거하여 데이터 청크(DC0)를 생성할 수 있다.
마스터 인코더(114D_1)는 데이터 청크(DC0)를 데이터 섹터들(DS00, DS01)로 분할하고, 데이터 섹터들(DS00, DS01)을 제1 및 제2 섹터 그룹들(G0, G1)로 분류할 수 있다. 마스터 인코더(114D_1)는 데이터 섹터들(DS00, DS01)을 각각 마스터 인코딩함으로써, 제1 및 제2 섹터 그룹들(G0, G1) 별로 중간 패리티 섹터들(IS0, IS1)을 생성할 수 있다.
마스터 인코딩된 데이터 섹터들(DS00, DS01)은 청크 영역(121)에 곧바로 저장될 수 있다. 데이터 청크(DC0)와 함께 마스터 인코딩될 데이터 청크(DC1)가 프리 인코더(114D_0)에 의해 생성될 때까지, 중간 패리티 섹터들(IS0, IS1)은 메모리(112)에 보관될 수 있다.
이어서, 프리 인코더(114D_0)는 청크 영역(122)에 저장될 데이터 세그먼트(SG1)를 메모리(112)로부터 수신할 수 있다. 프리 인코더(114D_0)는 데이터 세그먼트(SG1)를 프리 인코딩하여 프리 패리티 데이터(PP1)를 생성하고, 데이터 세그먼트(SG1) 및 프리 패리티 데이터(PP1)에 근거하여 데이터 청크(DC1)를 생성할 수 있다.
마스터 인코더(114D_1)는 데이터 청크(DC1)를 데이터 섹터들(DS10, DS11)로 분할하고, 데이터 섹터들(DS10, DS11)을 제1 및 제2 섹터 그룹들(G0, G1)로 분류할 수 있다. 마스터 인코더(114D_1)는 메모리(112)로부터 로드된 중간 패리티 섹터들(IS0, IS1)을 사용하여 데이터 섹터들(DS10, DS11)을 각각 마스터 인코딩함으로써, 제1 및 제2 섹터 그룹들(G0, G1) 별로 최종 패리티 섹터들(FS0, FS1)을 생성할 수 있다.
마스터 인코딩된 데이터 섹터들(DS10, DS11)은 청크 영역(122)에 저장될 수 있다. 데이터 청크들(DC0, DC1)과 함께 마스터 인코딩될 데이터 청크가 더 이상 없으므로, 최종 패리티 섹터들(FS0, FS1)은 최종 패리티 데이터(FP)로서 스패어 영역(123)에 저장될 수 있다.
도11은 본 발명의 실시 예에 따른 데이터 저장 장치(100)의 동작 방법을 설명하기 위한 순서도이다.
S110 단계에서, 컨트롤러(110)는 불휘발성 메모리 장치(120)의 페이지에 포함된 복수의 청크 영역들에 부분적으로 저장될 데이터 세그먼트를 프리 인코딩함으로써 데이터 청크를 생성할 수 있다. 실시 예에 따라, S110 단계는 생략될 수 있고, 컨트롤러(110)는 페이지에 포함된 복수의 청크 영역들에 부분적으로 저장될 데이터 청크를 외부 장치로부터 수신할 수 있다.
S120 단계에서, 컨트롤러(110)는 데이터 청크가 마스터 인코딩 단위의 최초 데이터 청크인지를 판단할 수 있다. 데이터 청크가 마스터 인코딩 단위의 최초 데이터 청크인 것으로 판단되는 경우, 절차는 130 단계로 진행될 수 있다. 데이터 청크가 마스터 인코딩 단위의 최초 데이터 청크가 아닌 것으로 판단되는 경우, 절차는 140 단계로 진행될 수 있다.
S130 단계에서, 컨트롤러(110)는 데이터 청크를 마스터 인코딩함으로써 패리티 데이터를 생성할 수 있다. 실시 예에 따라, 컨트롤러(110)는 데이터 청크를 복수의 데이터 섹터들로 분할하고, 분할된 데이터 섹터들을 섹터 그룹들로 분류하고, 섹터 그룹들 별로 마스터 인코딩을 각각 수행함으로써 패리티 섹터들을 패리티 데이터로서 생성할 수 있다.
S140 단계에서, 컨트롤러(110)는 메모리(112)에 보관된 중간 패리티 데이터를 사용하여 데이터 청크를 인코딩함으로써, 최신의 패리티 데이터를 생성할 수 있다. 실시 예에 따라, 컨트롤러(110)는 메모리(112)에 보관된 패리티 섹터들을 사용하여, 섹터 그룹들 별로 마스터 인코딩을 각각 수행함으로써 최신의 패리티 섹터들을 패리티 데이터로서 생성할 수 있다.
S150 단계에서, 컨트롤러(110)는 데이터 청크가 마스터 인코딩 단위의 마지막 데이터 청크인지를 판단할 수 있다. 데이터 청크가 마스터 인코딩 단위의 마지막 데이터 청크인 것으로 판단되는 경우, 절차는 160 단계로 진행될 수 있다. 데이터 청크가 마스터 인코딩 단위의 마지막 데이터 청크가 아닌 것으로 판단되는 경우, 절차는 170 단계로 진행될 수 있다.
S160 단계에서, 컨트롤러(110)는 마스터 인코딩된 데이터 청크를 불휘발성 메모리 장치(120)의 청크 영역에 저장하고, 최신의 패리티 데이터를 최종 패리티 데이터로서 불휘발성 메모리 장치(120)의 스패어 영역에 저장할 수 있다.
S170 단계에서, 컨트롤러(110)는 마스터 인코딩된 데이터 청크를 불휘발성 메모리 장치(120)의 청크 영역에 저장하고, 최신의 패리티 데이터를 중간 패리티 데이터로서 메모리(112)에 저장할 수 있다.
도12는 본 발명의 실시 예에 따른 SSD(1000)를 도시하는 블록도이다.
SSD(1000)는 SSD 컨트롤러(1100)와 저장 매체(1200)를 포함할 수 있다.
SSD 컨트롤러(1100)는 호스트 장치(1500)와 저장 매체(1200) 사이의 데이터 교환을 제어할 수 있다. SSD 컨트롤러(1100)는 프로세서(1110), 램(1120), 롬(1130), ECC부(1140), 호스트 인터페이스부(1150) 및 스토리지 인터페이스부(1160)를 포함할 수 있다.
프로세서(1110)는 SSD 컨트롤러(1100)의 제반 동작을 제어할 수 있다. 프로세서(1110)는 호스트 장치(1500)의 요청에 따라 저장 매체(1200)에 데이터를 저장하고, 저장 매체(1200)로부터 저장된 데이터를 리드할 수 있다. 프로세서(1110)는 저장 매체(1200)를 효율적으로 관리하기 위해서, 머지 동작 및 웨어 레벨링 동작 등과 같은 SSD(1000)의 내부 동작을 제어할 수 있다.
또한, 프로세서(1110)는 도1에 도시된 프로세서(111)과 실질적으로 유사하게 동작할 수 있다. 프로세서(1110)는 저장 매체(1200)에 불연속적으로 저장되는 데이터 청크들이 인코딩 단위로서 함께 인코딩되도록 제어할 수 있다. 데이터 청크들 각각은 저장 매체(1200)에 포함된 하나의 페이지에 부분적으로 저장될 데이터들일 수 있다.
램(1120)은 프로세서(1110)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 램(1120)은 호스트 인터페이스부(1150)로부터 전송된 데이터를 저장 매체(1200)에 전달하기 전에 임시 저장할 수 있고. 저장 매체(1200)로부터 전송된 데이터를 호스트 장치(1500)로 전달하기 전에 임시 저장할 수 있다. 램(1120)은 도1에 도시된 메모리(112)와 같이, 저장 매체(1200)에 저장될 데이터 청크에 대해 생성된 중간 패리티 데이터를 보관할 수 있다.
롬(1130)은 프로세서(1110)에 의해 리드되는 프로그램 코드를 저장할 수 있다. 프로그램 코드는 프로세서(1110)가 SSD 컨트롤러(1100)의 내부 유닛들을 제어하기 위해서 프로세서(1110)에 의해 처리되는 명령들을 포함할 수 있다.
ECC부(1140)는 저장 매체(1200)에 저장될 데이터를 인코딩하고, 저장 매체(1200)로부터 리드된 데이터를 디코딩할 수 있다. ECC부(1140)는 ECC 알고리즘에 따라 데이터에 발생된 에러를 검출하고 정정할 수 있다. ECC부(1140)는 도1에 도시된 인코더(114)와 같이, 램(1120)으로부터 로드된 중간 패리티 데이터를 사용하여, 불연속적으로 전송되는 복수의 데이터 청크들을 인코딩 단위로서 함께 인코딩할 수 있다.
호스트 인터페이스부(1150)는 호스트 장치(1500)와 요청 및 데이터 등을 교환할 수 있다.
스토리지 인터페이스부(1160)는 저장 매체(1200)로 제어 신호 및 데이터를 전송할 수 있다. 스토리지 인터페이스부(1160)는 저장 매체(1200)로부터 데이터를 전송받을 수 있다. 스토리지 인터페이스부(1160)는 저장 매체(1200)와 복수의 채널들(CH0~CHn)을 통해 연결될 수 있다.
저장 매체(1200)는 복수의 불휘발성 메모리 장치들(NVM0~NVMn)을 포함할 수 있다. 복수의 불휘발성 메모리 장치들(NVM0~NVMn) 각각은 SSD 컨트롤러(1100)의 제어에 따라 라이트 동작 및 리드 동작을 수행할 수 있다. 복수의 불휘발성 메모리 장치들(NVM0~NVMn) 각각은 도1에 도시된 불휘발성 메모리 장치(120)와 같이, 페이지에 포함된 청크 영역들 각각에 대해 부분 라이트 동작을 독립적으로 수행할 수 있다.
도13은 본 발명의 실시 예에 따른 데이터 저장 장치(100)가 적용된 데이터 처리 시스템(2000)을 도시하는 블록도이다.
데이터 처리 시스템(2000)은 컴퓨터, 랩탑, 넷북, 스마트폰, 디지털 TV, 디지털 카메라, 네비게이션 등을 포함할 수 있다. 데이터 처리 시스템(2000)은 메인 프로세서(2100), 메인 메모리 장치(2200), 기억 장치(2300) 및 입출력 장치(2400)를 포함할 수 있다. 데이터 처리 시스템(2000)의 내부 유닛들은 시스템 버스(2500)를 통해서 데이터 및 제어 신호 등을 주고받을 수 있다.
메인 프로세서(2100)는 데이터 처리 시스템(2000)의 제반 동작을 제어할 수 있다. 메인 프로세서(2100)는, 예를 들어, 마이크로프로세서와 같은 중앙 처리 장치일 수 있다. 메인 프로세서(2100)는 운영 체제, 애플리케이션 및 장치 드라이버 등의 소프트웨어들을 메인 메모리 장치(2200) 상에서 수행할 수 있다.
메인 메모리 장치(2200)는 메인 프로세서(2100)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 메인 메모리 장치(2200)는 기억 장치(2300) 및 입출력 장치(2400)로 전송될 데이터를 임시 저장할 수 있다.
기억 장치(2300)는 메모리 컨트롤러(2310) 및 저장 매체(2320)를 포함할 수 있다. 메모리 컨트롤러(2310)는 도1의 컨트롤러(110)와 실질적으로 유사하게 구성될 수 있다. 메모리 컨트롤러(2310)는 저장 매체(2320)에 불연속적으로 저장될 복수의 데이터 청크들을 인코딩 단위로서 함께 인코딩할 수 있다.
입출력 장치(2400)는 사용자로부터 데이터 처리 시스템(2000)을 제어하기 위한 명령을 입력받거나 처리된 결과를 사용자에게 제공하는 등 사용자와 정보를 교환할 수 있는 키보드, 스캐너, 터치스크린 및 마우스 등을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(2000)은 LAN(Local Area Network), WAN(Wide Area Network) 및 무선 네트워크 등의 네트워크(2600)를 통해 적어도 하나의 서버(2700)와 통신할 수 있다. 데이터 처리 시스템(2000)은 네트워크(2600)에 접속하기 위해서 네트워크 인터페이스부(미도시)를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 데이터 저장 장치
110: 컨트롤러
111: 프로세서
112: 메모리
113: ECC부
114: 인코더
115: 디코더
120: 불휘발성 메모리 장치
BK0~BKn: 메모리 블록들
PG0~PGm: 페이지들
110: 컨트롤러
111: 프로세서
112: 메모리
113: ECC부
114: 인코더
115: 디코더
120: 불휘발성 메모리 장치
BK0~BKn: 메모리 블록들
PG0~PGm: 페이지들
Claims (20)
- 복수의 청크 영역들을 포함하는 페이지를 포함하고, 상기 청크 영역들 각각에 대해 부분 라이트 동작을 독립적으로 수행하도록 구성된 불휘발성 메모리 장치; 및
메모리를 포함하고, 상기 청크 영역들에 부분적으로 저장될 데이터 청크를 인코딩함으로써 패리티 데이터를 생성하고, 상기 패리티 데이터를 중간 패리티 데이터로서 상기 메모리에 보관하도록 구성된 컨트롤러를 포함하는 데이터 저장 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 중간 패리티 데이터를 사용하여 상기 청크 영역들에 부분적으로 저장될 후속 데이터 청크를 인코딩함으로써, 최신의 패리티 데이터를 생성하는 데이터 저장 장치. - 제2항에 있어서,
상기 컨트롤러는, 상기 후속 데이터 청크가 인코딩 단위의 마지막 데이터 청크인 경우, 상기 최신의 패리티 데이터를 최종 패리티 데이터로서 상기 불휘발성 메모리 장치에 저장하는 데이터 저장 장치. - 제2항에 있어서,
상기 컨트롤러는, 상기 후속 데이터 청크가 인코딩 단위의 마지막 데이터 청크가 아닌 경우, 상기 최신의 패리티 데이터를 상기 중간 패리티 데이터로서 상기 메모리에 보관하는 데이터 저장 장치. - 제1항에 있어서,
상기 불휘발성 메모리 장치는 인코딩된 데이터 청크를 상기 부분 라이트 동작을 통해 상기 청크 영역들에 부분적으로 저장하는 데이터 저장 장치. - 제1항에 있어서,
상기 컨트롤러는, 상기 데이터 청크를 제1 데이터 섹터들로 분할하고, 상기 제1 데이터 섹터들을 섹터 그룹들로 분류하고, 상기 제1 데이터 섹터들을 각각 인코딩함으로써 상기 섹터 그룹들 별로 패리티 섹터들을 생성하고, 상기 패리티 섹터들을 상기 중간 패리티 데이터로서 상기 메모리에 보관하는 데이터 저장 장치. - 제6항에 있어서,
상기 컨트롤러는, 상기 청크 영역들에 부분적으로 저장될 후속 데이터 청크를 제2 데이터 섹터들로 분할하고, 상기 제2 데이터 섹터들을 상기 섹터 그룹들로 분류하고, 상기 중간 패리티 섹터들을 사용하여 상기 제2 데이터 섹터들을 각각 인코딩함으로써 상기 섹터 그룹들 별로 최신의 패리티 섹터들을 생성하는 데이터 저장 장치. - 불휘발성 메모리 장치의 페이지에 포함된 복수의 청크 영역들에 부분적으로 저장될 데이터 청크를 인코딩함으로써 패리티 데이터를 생성하는 단계; 및
상기 패리티 데이터를 중간 패리티 데이터로서 메모리에 보관하는 단계를 포함하는 데이터 저장 장치의 동작 방법. - 제8항에 있어서,
상기 중간 패리티 데이터를 사용하여 상기 청크 영역들에 부분적으로 저장될 후속 데이터 청크를 인코딩함으로써, 최신의 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제9항에 있어서,
상기 후속 데이터 청크가 인코딩 단위의 마지막 데이터 청크인 경우, 상기 최신의 패리티 데이터를 최종 패리티 데이터로서 상기 불휘발성 메모리 장치에 저장하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제9항에 있어서,
상기 후속 데이터 청크가 인코딩 단위의 마지막 데이터 청크가 아닌 경우, 상기 최신의 패리티 데이터를 상기 중간 패리티 데이터로서 상기 메모리에 보관하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제8항에 있어서,
인코딩된 데이터 청크를 부분 라이트 동작을 통해 상기 청크 영역들에 부분적으로 저장하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제8항에 있어서,
상기 패리티 데이터를 생성하는 단계는,
상기 데이터 청크를 제1 데이터 섹터들로 분할하는 단계;
상기 제1 데이터 섹터들을 섹터 그룹들로 분류하는 단계; 및
상기 제1 데이터 섹터들을 각각 인코딩함으로써, 상기 섹터 그룹들 별로 패리티 섹터들을 상기 패리티 데이터로서 생성하는 단계를 포함하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 청크 영역들에 부분적으로 저장될 후속 데이터 청크를 제2 데이터 섹터들로 분할하는 단계;
상기 제2 데이터 섹터들을 상기 섹터 그룹들로 분류하는 단계; 및
상기 패리티 섹터들을 사용하여 상기 제2 데이터 섹터들을 각각 인코딩함으로써, 상기 섹터 그룹들 별로 최신의 패리티 섹터들을 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 복수의 청크 영역들을 포함하는 페이지를 포함하고, 상기 청크 영역들 각각에 대해 부분 라이트 동작을 독립적으로 수행하도록 구성된 불휘발성 메모리 장치; 및
메모리를 포함하고, 상기 청크 영역들에 부분적으로 저장될 데이터 세그먼트를 프리 인코딩함으로써 데이터 청크를 생성하고, 상기 데이터 청크를 마스터 인코딩함으로써 패리티 데이터를 생성하고, 상기 패리티 데이터를 중간 패리티 데이터로서 상기 메모리에 보관하도록 구성된 컨트롤러를 포함하는 데이터 저장 장치. - 제15항에 있어서,
상기 컨트롤러는, 상기 청크 영역들에 부분적으로 저장될 후속 데이터 세그먼트를 프리 인코딩함으로써 후속 데이터 청크를 생성하고, 상기 중간 패리티 데이터를 사용하여 상기 후속 데이터 청크를 마스터 인코딩함으로써 최신의 패리티 데이터를 생성하는 데이터 저장 장치. - 제16항에 있어서,
상기 컨트롤러는, 상기 후속 데이터 청크가 마스터 인코딩 단위의 마지막 데이터 청크인 경우, 상기 최신의 패리티 데이터를 최종 패리티 데이터로서 상기 불휘발성 메모리 장치에 저장하는 데이터 저장 장치. - 제16항에 있어서,
상기 컨트롤러는, 상기 후속 데이터 청크가 마스터 인코딩 단위의 마지막 데이터 청크가 아닌 경우, 상기 최신의 패리티 데이터를 상기 중간 패리티 데이터로서 상기 메모리에 보관하는 데이터 저장 장치. - 제15항에 있어서,
상기 불휘발성 메모리 장치는 마스터 인코딩된 데이터 청크를 상기 부분 라이트 동작을 통해 상기 청크 영역들에 부분적으로 저장하는 데이터 저장 장치. - 제15항에 있어서,
상기 컨트롤러는 서로 다른 ECC 알고리즘들에 따라 프리 인코딩 및 마스터 인코딩을 수행하는 데이터 저장 장치.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020150101792A KR20170010273A (ko) | 2015-07-17 | 2015-07-17 | 데이터 저장 장치 및 그것의 동작 방법 |
| US14/957,291 US20170017417A1 (en) | 2015-07-17 | 2015-12-02 | Data storage device and operating method thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020150101792A KR20170010273A (ko) | 2015-07-17 | 2015-07-17 | 데이터 저장 장치 및 그것의 동작 방법 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20170010273A true KR20170010273A (ko) | 2017-01-26 |
Family
ID=57775036
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020150101792A Withdrawn KR20170010273A (ko) | 2015-07-17 | 2015-07-17 | 데이터 저장 장치 및 그것의 동작 방법 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20170017417A1 (ko) |
| KR (1) | KR20170010273A (ko) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20190125150A (ko) * | 2018-04-27 | 2019-11-06 | 한양대학교 산학협력단 | 오류 정정 기능을 구비한 플래시 메모리 저장 장치 및 그 구동 방법 |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102721225B1 (ko) * | 2016-10-12 | 2024-10-24 | 삼성전자주식회사 | Raid 방식으로 데이터를 저장하는 스토리지 장치 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2913917B2 (ja) * | 1991-08-20 | 1999-06-28 | 株式会社日立製作所 | 記憶装置および記憶装置システム |
| US6725392B1 (en) * | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
| US7831768B2 (en) * | 2006-11-03 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Method and apparatus for writing data to a disk array |
| US7900118B2 (en) * | 2007-02-12 | 2011-03-01 | Phison Electronics Corp. | Flash memory system and method for controlling the same |
| US9891989B2 (en) * | 2013-10-11 | 2018-02-13 | Hitachi, Ltd. | Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory |
| KR20150061258A (ko) * | 2013-11-27 | 2015-06-04 | 한국전자통신연구원 | 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치 |
| US9400713B2 (en) * | 2014-10-02 | 2016-07-26 | Sandisk Technologies Llc | System and method for pre-encoding of data for direct write to multi-level cell memory |
-
2015
- 2015-07-17 KR KR1020150101792A patent/KR20170010273A/ko not_active Withdrawn
- 2015-12-02 US US14/957,291 patent/US20170017417A1/en not_active Abandoned
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20190125150A (ko) * | 2018-04-27 | 2019-11-06 | 한양대학교 산학협력단 | 오류 정정 기능을 구비한 플래시 메모리 저장 장치 및 그 구동 방법 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20170017417A1 (en) | 2017-01-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11354187B2 (en) | Physical page, logical page, and codeword correspondence | |
| JP6606039B2 (ja) | メモリシステムおよび制御方法 | |
| CN111326199B (zh) | 用于存储器设备的多态编程 | |
| US20200042223A1 (en) | System and method for facilitating a high-density storage device with improved performance and endurance | |
| US9817749B2 (en) | Apparatus and method of offloading processing from a data storage device to a host device | |
| KR102372825B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| US8862967B2 (en) | Statistical distribution based variable-bit error correction coding | |
| US10102066B2 (en) | Data processing device and operating method thereof | |
| US9940193B2 (en) | Chunk definition for partial-page read | |
| US11184033B2 (en) | Data storage device | |
| KR20130049464A (ko) | 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치 | |
| KR20170068681A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| KR20220072398A (ko) | 메모리 장치 및 메모리 시스템 | |
| KR20210121654A (ko) | 메모리 시스템의 데이터 에러를 복구하는 장치 및 방법 | |
| US10133764B2 (en) | Reduction of write amplification in object store | |
| KR20170093370A (ko) | 데이터 저장 장치 | |
| KR20170101367A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| KR20190019728A (ko) | 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치 | |
| KR20170010273A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| KR20170083386A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
| US12585585B2 (en) | Memory device control method and associated apparatus for efficient decoding in using syndrome weight | |
| KR20190030294A (ko) | 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치 | |
| KR20190030923A (ko) | 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20150717 |
|
| PG1501 | Laying open of application | ||
| PC1203 | Withdrawal of no request for examination |