KR20160128903A - 메모리 채널 트래픽 감소를 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치 - Google Patents

메모리 채널 트래픽 감소를 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치 Download PDF

Info

Publication number
KR20160128903A
KR20160128903A KR1020160005197A KR20160005197A KR20160128903A KR 20160128903 A KR20160128903 A KR 20160128903A KR 1020160005197 A KR1020160005197 A KR 1020160005197A KR 20160005197 A KR20160005197 A KR 20160005197A KR 20160128903 A KR20160128903 A KR 20160128903A
Authority
KR
South Korea
Prior art keywords
memory
page data
location information
source
error location
Prior art date
Application number
KR1020160005197A
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 삼성전자주식회사
Publication of KR20160128903A publication Critical patent/KR20160128903A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/1044Adding 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
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • 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/1014Compression, i.e. RAID systems with parity using compression techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

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)
  • Read Only Memory (AREA)

Abstract

본 발명은 스토리지 장치 내의 장치 컨트롤러와 NAND 장치 사이에 접속된 메모리 채널에서의 트래픽을 감소시키기 위한 스토리지 장치에 관한 것으로, 메모리 채널을 통해 소스 메모리 블록들로부터 수신된 페이지 데이터에 대한 에러 위치 정보를 획득하기 위한 에러 정정 프로세서와, 상기 획득된 에러 위치 정보를 압축하고, 상기 수신된 페이지 데이터를 동반하지 않고 상기 압축된 에러 위치 정보를 상기 메모리 채널을 통해 타겟 메모리 블록으로 출력하기 위한 압축 프로세서를 포함는 메모리 장치 컨트롤러를 개시한다.

Description

메모리 채널 트래픽 감소를 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치{STORAGE DEVICE CONTROLLER FOR REDUCING MEMORY CHANNEL TRAFFIC AND STORAGE DEVICE INCLUDING THE SAME}
본 발명의 개념에 따른 실시 예는 스토리지 장치에 관한 것으로, 스토리지 장치 내의 메모리 채널에서 트래픽을 감소시키기 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치에 관한 것이다.
종래의 SSD(solid state device)에서, 데이터는 메모리 블록에 포함된 페이지들에 저장된다. 각 페이지는 한정된 크기를 가지며 오직 비어 있을 때만 데이터가 라이트될 수 있다. 따라서, 이미 데이터가 저장되어 있는 페이지에 새로운 데이터를 라이트하기 위해서는 먼저 페이지가 이레이즈되어야 한다. 한편, 데이터는 페이지 단위로 라이트되고, 블록 단위로 이레이즈된다.
SSD 내부에서, SSD 컨트롤러는 플래시 변환 계층(flash translation layer(FTL))을 이용하여 NAND 플래시와 호스트 사이에서 통신을 조율한다. FTL를 활용하여, SSD 컨트롤러는 논리 블록 주소 지정(logical block addressing(LBA))이라 불리는 논리-물리 매핑 시스템을 구현할 수 있다. FTL과 LBA를 사용함으로써, 실제 데이터가 저장된 물리적 주소와 호스트에 의해 요청된 논리적 주소가 서로 일치할 필요는 없다.
따라서, 호스트가 특정 페이지에 라이트 요청을 할 때, 상기 특정 페이지를 포함하는 메모리 블록을 이레이즈하고 상기 특정 페이지에 새로운 데이터를 오버라이트(overwrite)하는 대신에, SSD는 새로운 데이터를 이용 가능한 다른 페이지에 라이트하고, 종전 데이터가 저장된 페이지를 유효하지 않은 페이지로 표시한다.
SSD가 데이터로 가득 차 있을 때, SSD는 추가적인 데이터를 저장하기에 앞서 가비지 컬렉션(garbage collection)으로 불리는 작동을 수행한다. 가비지 컬렉션 작동이 수행되는 동안에, SSD는 여유 메모리 공간을 확보하기 위해 유효 데이터를 통합하고(consolidate), 메모리 블록들을 이레이즈한다.
가비지 컨렉션 작동은 카피-백(copy-back) 작동을 포함할 수 있다. 카피-백 작동은 페이지 데이터를 소스(source) 페이지로부터 타겟(target) 페이지로 카피하는 페이지 데이터 카피 작동이다.
종래의 SSD는 카피-백 작동을 동반하는 가비지 컬렉션 작동이 수행되는 동안에 상대적으로 많은 양의 버스 트래픽을 야기한다.
본 발명이 이루고자 하는 기술적 과제는 스토리지 장치 내의 장치 컨트롤러와 NAND 장치 사이에 접속된 메모리 채널에서의 트래픽을 감소시키기 위한 메모리 장치 컨트롤러와 스토리지 장치를 제공하는데 있다.
본 발명의 실시 예들에 따른 메모리 디바이스 컨트롤러는, 메모리 채널을 통해 소스 메모리 블록들로부터 수신된 페이지 데이터에 대한 에러 위치 정보를 획득하기 위한 에러 정정 프로세서와, 상기 획득된 에러 위치 정보를 압축하고, 상기 수신된 페이지 데이터를 동반하지 않고 상기 압축된 에러 위치 정보를 상기 메모리 채널을 통해 타겟 메모리 블록으로 출력하기 위한 압축 프로세서를 포함할 수 있다.
상기 압축 프로세서는 상기 타겟 메모리 블록으로 상기 압축된 에러 위치 정보만을 출력할 수 있다.
상기 에러 정정 프로세서는 상기 수신된 페이지 데이터에 대한 상기 에러 위치 정보를 획득하기 위해 상기 수신된 페이지 데이터에 대한 에러 정정 코딩을 수행하고, 상기 에러 위치 정보는 상기 수신된 페이지 데이터에 포함된 에러들의 위치들을 포함할 수 있다.
상기 소스 메모리 블록과 상기 타겟 메모리 블록은 상기 메모리 채널과 접속된 동일한 불휘발성 메모리 장치에 위치할 수 있다.
상기 수신된 페이지 데이터는 가비지 컬렉션 작동 동안에 상기 소스 메모리 블록으로부터 리드된 유효 페이지 데이터일 수 있다.
상기 수신된 페이지 데이터는 온-칩 버퍼 프로그램(on-chip buffered program) 데이터이고, 상기 압축된 에러 위치 정보는 상기 타겟 메모리 블록으로 출력되기 이전에 버퍼될 수 있다.
본 발명의 실시 예들에 따른 스토리지 장치는, 소스 메모리 블록을 포함하고, 메모리 채널과 접속되는 소스 불휘발성 메모리 장치와, 상기 메모리 채널을 통해 상기 소스 불휘발성 메모리 장치와 통신하는 메모리 장치 컨트롤러를 포함하고,상기 메모리 장치 컨트롤러는, 상기 메모리 채널을 통해 소스 메모리 블록들로부터 수신된 페이지 데이터에 대한 에러 위치 정보를 획득하기 위한 에러 정정 프로세서와, 상기 획득된 에러 위치 정보를 압축하고, 상기 수신된 페이지 데이터 없이 상기 압축된 에러 위치 정보를 상기 메모리 채널을 통해 타겟 메모리 블록으로 출력하기 위한 압축 프로세서를 포함할 수 있다.
상기 페이지 데이터는 가비지 컬렉션 작동 동안에 상기 소스 메모리 블록으로부터 리드된 유효 페이지 데이터일 수 있다.
상기 페이지 데이터는 온-칩 버퍼드 프로그램(on-chip buffered program) 데이터이고, 상기 압축된 에러 위치 정보는 상기 타겟 메모리 블록으로 출력되기 이전에 버퍼될 수 있다.
본 발명의 실시 예들에 따른 스토리지 장치는, 복수의 메모리 블록들과 페이지 버퍼를 포함하고, 메모리 채널에 접속되는 불휘발성 메모리 장치를 포함하고, 상기 불휘발성 메모리 장치는, 소스 메모리 블록으로부터 리드된 페이지 데이터를 버퍼하고, 상기 메모리 채널을 통해 상기 메모리 장치 컨트롤러로부터 상기 페이지 데이터에 대한 수신 없이 에러 위치 정보를 수신하고, 상기 수신에 응답하여 상기 버퍼된 페이지 데이터에 포함된 에러를 정정하고, 상기 에러 정정된 페이지 데이터를 상기 불휘발성 메모리 장치의 상기 복수의 메모리 블록들 중에서 타겟 메모리 블록에 라이트할 수 있다.
본 발명의 실시 예들에 따른 스토리지 장치는 장치 컨트롤러와 NAND 장치 사이의 채널에서 트래픽을 감소시킴으로써, 스토리지의 성능을 향상시키는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 개략적으로 나타낸 블록도이다.
도 2a는 도 1에 도시된 스토리지 장치의 일부를 보다 구체적으로 나타낸 블록도이다.
도 2b는 도 2a에 도시된 NAND 장치를 보다 구체적으로 나타낸 블록도이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록에 대한 가비지 컬렉션 작동 방법을 나타내는 플로우 차트이다.
도 4는 도 1에 도시된 스토리지 장치의 실시 예를 보다 구체적으로 나타낸 블록도이다.
도 5는 본 발명의 실시 예들에 따른 OBP 작동 방법을 나타내는 플로우 차트이다.
도 6은 본 발명의 실시 예들에 따른 스토리지 장치에 포함된 메모리 카드 시스템을 나타내는 블록도이다.
도 7은 본 발명의 실시 예들에 따른 스토리지 장치가 구현될 수 있는 UFS 시스템을 나타내는 블록도이다.
도 8은 본 발명의 실시 예들에 따른 메모리 장치를 포함하는 전자 장치를 나타내는 블록도이다.
도 9는 본 발명의 실시 예들에 따른 스토리지 시스템을 포함하는 컴퓨팅 시스템을 개략적으로 나타낸 블록도이다.
도 10은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 휴대 단말기를 개략적으로 나타낸 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하의 설명에서, 예시적인 실시 예들은 특정 태스크(task)를 수행하거나 특정 추상 데이터 유형을 구현하고, 루틴(routines), 프로그램, 객체들, 컴포넌트, 데이터 구조 등을 포함하는 프로그램 모듈들 또는 기능적인 프로세스들로 구현될 수 있는 작동들의 역할 및 상징적 표현(예컨대, 플로우 차트, 플로우 다이어그램, 데이터 플로우 다이어그램, 구조 다이어그램, 블록 다이어그램 등)을 참조하여 설명될 것이고, 기존의 전자 시스템들(예컨대, 불휘발성 메모리, 범용 플래시 메모리(universal flash memories), 범용 플래시 메모리 컨트롤러, 불휘발성 메모리 및 메모리 컨트롤러, 스토리지 시스템, 디지털 카메라, PDA(personal digital assistants), 스마트폰, 테블릿 PC, 랩탑 컴퓨터 등)에서 기존의 하드웨어를 이용하여 구현될 수 있다. 이러한 기존의 하드웨어는 하나 이상의 CPU(central processing unit), 디지털 신호 프로세서(digital signal processor), ASIC(application-specific-integrated-circuit), FPGA(field programmable gate arrays), 및 컴퓨터 등을 포함할 수 있다.
또한, 실시 예들에 따라, 호스트들, 스토리지 장치들, 장치 컨트롤러들, 인터페이스들(호스트 및/또는 장치), 에러 정정 코딩(error correction coding(ECC)) 회로들 및/또는 프로세서들, 압축 프로세서들 등은 하드웨어, 펌웨어, 소프트웨어를 실행하는 하드웨어, 또는 이들의 조합을 포함할 수 있다. 상기 하드웨어는 임의의 다른 공지된 기능들뿐 만 아니라 본 명세서에서 설명된 기능을 수행하기 위한 특수 목적 장치로 구현된 하나 이상의 CPU, SOC 장치, DSP, ASIC, FPGA, 및 컴퓨터 등을 포함할 수 있다. 어떠한 경우에 있어서, 하나 이상의 CPU, SOC 장치, DSP, ASIC, 및 FPGA는 일반적으로 프로세싱 회로, 프로세서, 및/또는 마이크로프로세서로서 불릴 수 있다.
비록 플로우 차트는 순차적인 프로세스로서 동작들을 설명하더라도, 여러 동작들이 병렬로 또는 동시에 병렬로 수행될 수 있다. 또한, 동작의 순서는 재배열될 수 있다. 프로세스는 그 동작들이 완료될 때 종료될 수 있으나, 또한 도면에 포함되지 않은 추가 단계를 가질 수 있다. 프로세스는 방법, 함수, 절차, 서브 루틴(subroutine), 서브 프로그램(subprogram) 등에 대응될 수 있다. 프로세스가 함수에 대응하는 경우, 그것의 종료는 호출 함수 또는 메인 함수에 대한 함수의 리턴(return)에 대응할 수 있다.
본 명세서에 개시된 바와 같이, "저장 매체", "컴퓨터 판독 가능 저장 매체", 또는 "비일시적 컴퓨터 판독 가능 저장 매체"는 ROM(read only memory), RAM(random access memory), MRAM(magnetic RAM), 코어 메모리(core memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리(flash memory) 장치 및/또는 정보를 저장하기 위한 다른 유형의 기계 판독 매체를 포함하는 데이터를 저장하기 위한 하나 이상의 장치를 나타낼 수 있다. "컴퓨터 판독 가능 매체"는 휴대용 또는 고정용 저장 장치들, 광학 저장 장치들, 및 명령(들) 및/또는 데이터를 저장, 포함, 운반할 수 있는 다른 다양한 매체들을 포함할 수 있다.
또한, 예시적인 실시 예들은 하드웨어, 소프트웨어, 펌웨어(firmware), 미들웨어(middleware), 마이크로 코드(microcode), 하드웨어 기술 언어들(hardware description languages), 또는 이들의 임의 조합에 의해 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로 코드에서 구현될 때, 필요한 태스크를 수행하기 위한 프로그램 코드 또는 코드 세그먼트(code segment)들은 컴퓨터로 판독 가능한 기억 매체와 같은 기계 또는 컴퓨터 판독 가능 매체에 저장될 수 있다. 소프트웨어에서 구현될 때, 프로세서(들), 프로세서 회로(들) 또는 프로세싱 유닛(들)은 필요한 태스크들을 수행하도록 프로그램될 수 있고, 이에 따라 특수 목적 프로세서 또는 컴퓨터로 변환될 수 있다.
코드 세그먼트는 절차, 함수, 서브 프로그램, 프로그램, 루틴, 서브 루틴, 모듈, 소프트웨어 패키지, 클래스(class), 또는 명령, 데이터 구조 또는 프로그램 명령문의 임의의 조합을 나타낼 수 있다. 코드 세그먼트는 정보, 데이터, 인수(arguments), 파라미터 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 결합될 수 있다. 정보, 인수, 파라미터, 데이터 등은 메모리 공유(memory sharing), 메시지 통과(message passing), 토큰 통과(token passing), 네트워크 전송 등을 포함하는 임의의 적절한 수단을 통해 통과, 전달, 및 전송될 수 있다.
데이터가 불휘발성 메모리(예컨대, 플래시 기반의 SSD, 플래시 메모리 등)에 라이트될 때, 프리 메모리 블록들은 호스트로부터 수신된 데이터를 저장하는데 이용될 수 있다. 추가 데이터를 저장하기 앞서 메모리 공간을 확보하기 위해, SSD는 가비지 컬렉션이라 불리는 작동을 수행할 수 있다. 가비지 컬렉션 작동 동안에, SSD는 여유 메모리 공간을 확보하기 위해 유효 데이터를 통합하고, 메모리 블록들을 이레이즈한다.
가비지 컬렉션 작동은 카피-백 작동들을 포함한다. 카피-백 작동은 페이지 데이터가 소스 페이지로부터 타겟 페이지로 카피되는 페이지 데이터 카피 작동이다. 그러나 종래의 SSD 구성과 가비지 컬렉션 프로세스들은 버스들과 메모리 채널들 상에서 상대적으로 많은 양의 트래픽(traffic)을 야기시킨다.
본 발명의 실시 예들은 가비지 컬렉션 또는 온-칩 버퍼 프로그래밍(on-chip buffered programming(OBP)) 작동 동안에 메모리 채널 상의 트래픽 양을 감소시킬 수 있는 방법, 장치, 및 비일시적 컴퓨터 판독 가능 저장 매체를 제공한다.
본 발명의 실시 예들은, 페이지 데이터가 소스 NAND 장치로부터 장치 컨트롤러로 출력되는 동시에(또는 병렬적으로) 상기 소스 NAND 장치와 같은 채널에 접속되어 있는 타겟 NAND 장치의 버퍼로 로드되는, 보다 효율적인 가비지 컬렉션 프로세스들을 제공한다. 장치 컨트롤러는 리드된 페이지 데이터에서 에러들을 디코드(decode)하여 에러들의 위치를 획득하고, 이후 상기 리드된 페이지 데이터에서 확인된 에러들에 대한 에러들의 위치를 타겟 NAND 장치로 전송한다. 종래의 가비지 컬렉션 프로세스들과 달리, 장치 컨트롤러는 에러들의 위치와 함께 상기 리드된 페이지 데이터를 타겟 NAND 장치로 전송하지 않는다. 상기 리드된 페이지 데이터는 타겟 NAND 장치로 전송되지 않기 때문에, 메모리 채널 상의 트래픽은 종래 기술에 비해 상대적으로 감소될 수 있다. 상기 에러들의 위치에 대한 수신에 응답하여, 타겟 NAND 장치는 상기 버퍼링된 페이지 데이터에서 에러들을 정정하고, 이후 타겟 NAND 장치의 메모리 블록에 상기 페이지 데이터를 라이트한다.
또한, 본 발명의 실시 예들은 보다 효율적인 가비지 컬렉션 작동을 수행하는 스토리지 장치와, 프로세서가 보다 효율적인 가비지 컬렉션 프로세스를 수행하도록 하는 컴퓨터 실행 가능한 명령들을 저장하는 컴퓨터 판독 가능 저장 매체를 제공한다.
본 발명의 실시 예들에 따라, NAND 장치와 장치 컨트롤러 사이의 통신을 지원하기 위해 추가적인 명령이 사용될 수 있다.
알고리즘이 슈퍼-블록 상에서 수행되기 때문에, FTL을 위한 더 이상의 변경은 요구되지 않는다. 상기 슈퍼 블록은 블록들의 그룹으로써, 상기 블록들 각각은 메모리 시스템에 포함된 서로 다른 NAND 장치(또는 다른 메모리)로부터 선택된다.
본 발명의 실시 예들은 증가되는 라이트 에러들로 인해 종래 불휘발성 메모리에서 사용되지 않는 카피-백을 위한 리드 명령을 사용할 수 있다.
본 발명의 실시 예들은 보다 효율적인 OBP 작동과, 보다 효율적인 OBP 작동을 수행하는 스토리지 장치, 및 프로세서가 보다 효율적인 OBP 작동을 수행하도록 하는 컴퓨터 실행 가능한 명령들을 저장하는 비-일시적인 컴퓨터 판독 가능한 저장 매체를 제공한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 개략적으로 나타낸 블록도이다. 도 1을 참조하면, 스토리지 시스템(storage system; 1000)은 호스트 (1100)와 스토리지 장치(storage device; 1200)를 포함한다. 호스트(1100)는 호스트 인터페이스(1101), 호스트 컨트롤러(1130), 및 버퍼 메모리(1140)를 포함한다. 스토리지 장치(1200)는 장치 인터페이스(1201), 불휘발성 메모리(1210), 장치 컨트롤러(1230)(또는 메모리 컨트롤러), 및 버퍼 메모리(1240)를 포함한다.
스토리지 장치(1200)와 호스트(1100)는 인터페이스(1101과 1201)를 통해 서로 접속된다. 호스트 인터페이스(1101)와 장치 인터페이스(1201)는 UFS(universal flash storage) 인터페이스, SATA(serial advanced technology attachment) 인터페이스, SCSI(small computer small interface), SAS(serial attached SCSI), USB (universal serial bus) 인터페이스 등과 같은 표준 인터페이스일 수 있다.
호스트 인터페이스(1101)와 장치 인터페이스(1201)는 데이터 및/또는 신호들을 서로 주고받기 위한 데이터 라인(DIN과 DOUT)과 파워(power)를 제공하기 위한 파워 라인(PWR)에 의해 서로 접속된다. 호스트 인터페이스(1101)는 파워 라인(PWR)을 통해 장치 인터페이스(1201)로 파워를 제공한다.
호스트 컨트롤러(1130)는 스토리지 장치(1200)로부터 데이터를 수신하고, 스토리지 장치(1200)로 명령들(예컨대, 리드 명령 및/또는 라이트 명령) 및/또는 데이터를 전송한다.
호스트 컨트롤러(1130)는 애플리케이션(1110)과 장치 드라이버(1120)를 포함한다. 애플리케이션(1110) 및/또는 장치 드라이버(1120)는 하드웨어, 소프트웨어, 및/또는 펌웨어로 구현될 수 있다.
애플리케이션(1110)은 호스트 컨트롤러(1130)에 의해 호스트(1100)에서 실행되는 하나 또는 2 이상의 애플리케이션 프로그램을 의미할 수 있다.
장치 드라이버(1120)는, 운영 체제들과 다른 호스트 프로그램들이 하드웨어에 대한 정확한 지식 없이도 하드웨어의 기능들을 이용할 수 있도록, 하드웨어 장치들에 대하여 소프트웨어 인터페이스를 제공함으로써 호스트(1100)에 부착된 장치들을 작동시키거나 제어한다.
버퍼 메모리(1140)는 호스트(1100)의 메인 메모리 및/또는 캐시 메모리로 사용될 수 있다. 예컨대, 버퍼 메모리(1140)는 SRAM(synchronous random access memory) 및/또는 DRAM(dynamic random access memory)일 수 있다. 버퍼 메모리 (1140)는 애플리케이션(1110) 및/또는 장치 드라이버(1120)와 같은 소프트웨어를 구동하기 위한 구동 메모리로 사용될 수 있다.
계속하여, 도 1을 참조하면, 상술한 바와 같이, 스토리지 장치(1200)는 불휘발성 메모리(1210), 장치 컨트롤러(1230), 및 버퍼 메모리(1240)를 포함한다. 불휘발성 메모리(1210)는 메모리 장치를 의미할 수 있고, 장치 컨트롤러(1230)는 메모리 컨트롤러를 의미할 수 있다.
스토리지 장치(1200)는 불휘발성 메모리 기반의 데이터 스토리지 장치일 수 있다. 예컨대, 스토리지 장치(1200)는 SSD(solid state drive), 플래시 메모리 (flash memory), MRAM(magnetic random access memory), PRAM(phase change RAM), FeRAM(ferroelectric RAM) 일 수 있다.
불휘발성 메모리(1210)는 2차원 또는 3차원 메모리 셀 어레이로 구현될 수 있다. 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic)이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착(directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
장치 컨트롤러(1230)는 불휘발성 메모리(1210)의 전반적인 작동을 제어한다. 예컨대, 장치 컨트롤러(1230)는 라이트(write) 작동, 리드(read) 작동, 이레이즈 (erase) 작동, 유지 관리(maintenance) 작동(예컨대, 가비지 컬렉션(garbage collection) 등), 인코딩/디코딩, 및 에러 정정을 제어할 수 있다. 장치 컨트롤러 (1230)는 어드레스 및/또는 데이터 버스를 통해 데이터, 어드레스 정보 및/또는 에러 위치 정보를 불휘발성 메모리(1210) 및/또는 버퍼 메모리(1240)와 교환한다.
버퍼 메모리(1240)는 불휘발성 메모리(1210)에 저장된 데이터 및/또는 불휘발성 메모리(1210)로부터 리드된 데이터를 임시로 저장한다. 버퍼 메모리는 휘발성 및/또는 불휘발성 메모리(예컨대, SRAM 및/또는 DRAM)로 구현될 수 있다.
장치 컨트롤러(1230), 버퍼 메모리(1240), 및 불휘발성 메모리(1210)에 대한 보다 상세한 설명은 도 2a부터 도 5를 참조하여 후술된다.
도 2a는 도 1에 도시된 스토리지 장치의 일부를 보다 구체적으로 나타낸 블록도이고, 도 2b는 도 2a에 도시된 NAND 장치를 보다 구체적으로 나타낸 블록도이다. 비록 도 2b에서 도시되지 않았지만, NAND 장치(204)는 NAND 장치(202)와 동일하거나 실질적으로 동일할 수 있다.
도 2a를 참조하면, 장치 컨트롤러(1230)는 에러 정정 코딩(error correction coding(ECC)) 회로(200 와 압축 프로세서(201)를 포함한다. ECC 회로(200)는 프로세서로 대체될 수 있다. ECC 회로(200)와 압축 프로세서(201)는 작동 가능하게 서로 연결된다. 실시 예들에 따라, ECC 회로(200)와 압축 프로세서(201)는 장치 컨트롤러(1230)에서 하나의 메인 프로세서로 구현될 수 있다. 또한, 실시 예들에 따라, ECC 회로(200)와 압축 프로세서(201)는 장치 컨트롤러(1230)에서 각각 독립된 프로세서로 구현될 수 있다.
불휘발성 메모리(1210)는 복수의 NAND 장치들(또는 불휘발성 메모리 장치들)의 세트들을 포함할 수 있다. 각각의 NAND 장치는 하나 또는 2 이상의 NAND 칩들 또는 NAND 다이들을 포함할 수 있다.
각각의 NAND 장치들의 세트는 복수의 NAND 채널들(Channel-1, Channel-2, …, Channel-8) 중에서 어느 하나와 접속된다. NAND 채널은 메모리 채널이라 불릴 수 있다. 비록 도 2a에서는 3개의 NAND 장치들의 세트들과 3개의 NAND 채널들을 도시하고 있으나, NAND 장치들의 세트들과 NAND 채널들의 개수는 도 2a에 도시된 개수에 한정되는 것은 아니다.
도 2b를 참조하면, NAND 장치(202)는 메모리 셀 어레이(2020), 페이지 버퍼 (2022), 및 메모리 블록 버퍼(2024)를 포함한다. 메모리 셀 어레이(2020)는 복수의 메모리 블록들(Block#0, Block#1, …, Block#i, …, Block#n-1, 및 Block#n)을 포함한다. 메모리 블록들(Block#0 내지 Block#n) 각각은 복수의 메모리 셀들을 포함한다. 데이터는 각각의 메모리 블록들(Block#0 내지 Block#n)에 포함된 페이지들에 저장되고, 각각의 메모리 블록들(Block#0 내지 Block#n)은 복수의 페이지 데이터를 저장할 수 있다.
메모리 블록 버퍼(2024)는 장치 컨트롤러(1230)로부터 수신된 블록 데이터를 버퍼한다. 메모리 블록 버퍼(2024)는 페이지 버퍼(2022)로 순차적으로 페이지 데이터를 출력한다. 페이지 버퍼(2022)는 페이지 데이터를 프로그램하기 위해 메모리 블록들(Block#0 내지 Block#n) 중 어느 하나로 상기 페이지 데이터를 출력한다.
메모리 블록 버퍼(2024)는 NAND 장치(202)의 메모리 블록들(Block#0 내지 Block#n)에 블록 데이터가 완전히 저장될 때까지 블록 데이터를 저장한다.
페이지 데이터가 메모리 셀 어레이(2020)의 메모리 블록으로부터 리드될 때, 상기 페이지 데이터는 임시로 페이지 버퍼(2022)에서 버퍼되고, 그 이후에 예컨대, 장치 컨트롤러(1230)로 출력될 수 있다. 비록 도 2b에서는 메모리 블록 버퍼(2024)가 NAND 장치(202)에 포함된 것으로 도시하고 있으나, 메모리 블록 버퍼(2024)는 장치 컨트롤러(1230)에 포함되거나 장치 컨트롤러(1230)와 NAND 장치(202) 사이에서 별개로 구현될 수 있다.
본 발명의 실시 예에 따른 가비지 컬렉션 작동 동안에 장치 컨트롤러(1230)와 불휘발성 메모리(1210)의 작동에 대한 상세한 설명은 도 3을 참조하여 후술된다.
NAND 장치(202)의 메모리 블록들(Block#0 내지 Block#n) 중에서 제i메모리 블록에 포함된 유효 페이지 데이터가 동일한 NAND 채널(Channel-2)에 연결된 NAND 장치(204)의 제j메모리 블록으로 카피(copy)되는 경우를 가정하여 설명한다. 이때, NAND 장치(202)는 소스(source) NAND 장치로 불릴 수 있고, NAND 장치(204)는 타겟 (target) NAND 장치로 불릴 수 있다. 또한 제i메모리 블록은 제i소스 메모리 블록이라 불릴 수 있고, 제j메모리 블록은 제j타겟 메모리 블록이라 불릴 수 있다.
실시 예들에 따라, 타겟 메모리 블록이 상기 페이지 데이터의 카피에 앞서 이레이즈될 필요가 있다면, 잘 알려진 적절한 알고리즘을 이용하여 이레이즈 작동이 독립적으로 수행될 수 있다. 비록 본 발명의 실시 예들은 도 2a와 도 2b에서 도시된 NAND 장치들(202와 204)에 대하여 설명하고 있으나, 그와 동일 또는 실질적으로 동일한 작동들이 각각의 NAND 장치에서 수행될 수 있다.
실시 예들에 따라, 제j타겟 메모리 블록은 제i소스 메모리 블록과 같은 NAND 장치(202)에 위치할 수 있다. 이 경우, 제i소스 메모리 블록으로부터 리드된 페이지 데이터는 장치 컨트롤러(1230)로부터 에러 위치가 수신될 때까지 내부 페이지 버퍼(미도시)에 저장될 수 있다. 이후 상기 페이지 데이터는 제j타겟 메모리 블록에 라이트될 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 블록에 대한 가비지 컬렉션 작동 방법을 나타내는 플로우 차트이다. 도 3에 도시된 방법은 도 2a와 도 2b에 도시된 장치 컨트롤러(1230)와 불휘발성 메모리(1210)를 참조하여 설명될 것이다.
도 3을 참조하면, 장치 컨트롤러(1230)는 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 유효 페이지 데이터를 리드한다(S320A). 예컨대, 장치 컨트롤러 (1230)는 소스 NAND 장치(202)에 대한 칩 인에이블(CE) 신호가 인에이블 되어 있는 동안 소스 NAND 장치(202)로 리드 명령을 인가함으로써, 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 상기 유효 페이지 데이터를 리드한다.
소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 유효 페이지 데이터가 리드됨과 동시에(또는 병렬적으로), 불휘발성 메모리(1210)는 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 타겟 NAND 장치(204)로 페이지 데이터를 카피하기 위한 카피-백(copy-back) 작동을 개시한다(S320B). 이에 따라, 불휘발성 메모리 (1210)는 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 타겟 NAND 장치 (204)의 버퍼(예컨대, 도 2b에 도시된 페이지 버퍼 또는 메모리 블록 버퍼)로 상기 유효 페이지 데이터를 카피한다.
소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 리드된 유효 페이지 데이터는 단계 S328에서 압축된 에러 위치 정보가 수신될 때까지 타겟 NAND 장치(204)의 버퍼에서 머물게 된다. 이에 대한 상세 설명은 후술될 것이다.
장치 컨트롤러 신호들은 같은 채널을 공유하는 NAND 장치들 사이에서 공유되기 때문에, 유효 페이지 데이터가 장치 컨트롤러(1230)에 의해 리드되는 동안, 그와 동시에(또는 병렬적으로) 제i소스 메모리 블록으로부터 타겟 NAND 장치(204)로 상기 유효 페이지 데이터를 카피하기 위해 추가적인 NAND 명령이 사용될 수 있다.
소스 NAND 장치(202)에 대한 CE 신호가 인에이블 되어 있는 동안, 종래의 리드 명령은 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 장치 컨트롤러(1230)로 유효 페이지 데이터를 리드하기 위해 사용될 수 있다. 제i소스 메모리 블록으로부터 타겟 NAND 장치(204)로 상기 유효 페이지 데이터를 동시에 카피하기 위해, 타겟 NAND 장치(204)에 대한 CE 신호는 인에이블 되고, 종래의 라이트 명령과 다른 라이트 명령이 타겟 NAND 장치(204)로 인가될 수 있다. 이러한 라이트 명령은 "GC 라이트 명령" 이라고 불릴 수 있고, 신호 세트 8110h 를 가질 수 있다.
GC 라이트 명령은, 데이터가 WEb 신호 대신 REb 신호에 응답하여 프로그래밍을 위해 로드되는 점에서 종래의 라이트 명령과 다를 수 있다. 그리고, 소스 NAND 장치(202)로부터 유효 페이지 데이터를 수신한 후, 타겟 NAND 장치(204)는 상기 유효 페이지 데이터를 타겟 NAND 장치(204)에 프로그래밍하기 전에 장치 컨트롤러(1230)로부터 에러 위치 정보를 포함하는 추가적인 전송을 기다린다. 타겟 NAND 장치(204)에서 상기 유효 페이지 데이터의 프로그래밍은 WEb 플래그의 설정에 응답하여 시작될 수 있다.
계속하여, 도 3을 참조하면, 장치 컨트롤러(1230)에 의해 소스 NAND 장치 (202)로부터 유효 페이지 데이터가 수신되면, ECC 회로(200)는 상기 유효 페이지 데이터를 디코딩하고, 상기 유효 페이지 데이터 내의 에러들과 상기 에러들의 위치를 확인하기 위해 상기 유효 페이지 데이터에 대한 ECC 작동을 수행한다. ECC 회로 (200)는 소스 NAND 장치(202)로부터 수신된 유효 페이지 데이터에 대한 ECC 작동을 수행할 수 있다. 본 명세서에서 상기 에러들의 위치는 에러 위치 정보로 불릴 수 있고, 유효 페이지 데이터에서 에러 비트들의 위치를 의미할 수 있다. ECC 회로 (200)는 상기 유효 페이지 데이터에 관한 상기 에러 위치 정보를 압축 프로세서 (201)로 출력한다.
단계 S324에서, 압축 프로세서(201)는 ECC 회로(200)로부터 수신된 에러 위치 정보를 압축하고, 압축된 에러 위치 정보를 생성한다. 압축 프로세서(201)는 잘 알려진 임의의 방법을 이용하여 상기 에러 위치 정보를 압축할 수 있다. 예컨대, 압축 프로세서(201)는 Tunstall 코딩, Huffman 코딩, 또는 적절한 다른 압축 알고리즘을 이용하여 상기 에러 위치 정보를 압축할 수 있다.
단계 S326에서, 장치 컨트롤러(1230)는 NAND 채널(Channel-2)을 경유하여 타겟 NAND 장치(204)로 압축된 에러 위치 정보를 전송한다. 장치 컨트롤러(1230)는 소스 NAND 장치(202)로부터 타겟 NAND 장치(204)로 상기 유효 페이지 데이터를 전송하지 않는다. 즉, 장치 컨트롤러(1230)는, 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 리드된 유효 페이지 데이터 내의 에러 위치들을 타겟 NAND 장치(204)로 알리기 위해, 상기 유효 페이지 데이터를 동반하지 않고 압축된 에러 위치 정보만을 타겟 NAND 장치(204)로 전송한다.
단계 S328에서, 불휘발성 메모리(1210)는 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 리드된 유효 페이지 데이터 내의 에러 위치들을 획득하기 위해 장치 컨트롤러(1230)로부터 압축된 에러 위치 정보를 수신하고 압축을 해제한다. 불휘발성 메모리(1210)는 임의의 잘 알려진 방법을 이용하여 압축된 에러 위치 정보에 대한 압축을 해제할 수 있다.
단계 S330에서, 불휘발성 메모리(1210)는 단계 S328에서 획득된 에러 위치들에 기초하여, 타겟 NAND 장치(204)의 버퍼에 머물고 있는 유효 페이지 데이터에 포함된 에러들을 정정한다. 예컨대, 불휘발성 메모리(1210)는 단계 S328에서 획득된 에러 위치들에서 상기 버퍼 내의 유효 페이지 데이터의 데이터 비트들을 플립하거나 인버트한다. 불휘발성 메모리(1210)는 임의의 잘 알려진 방법을 이용하여 단계 S328에서 획득된 에러 위치들에서 유효 페이지 데이터의 비트들을 조절할 수 있다.
타겟 NAND 장치(204)의 버퍼에서 유효 페이지 데이터에 포함된 에러들을 정정한 후, 불휘발성 메모리(1210)는 소스 NAND 장치(202)의 제i소스 메모리 블록으로부터 타겟 NAND 장치(204)의 제j메모리 블록으로 에러 정정된 유효 페이지 데이터를 라이트한다(S332). 상술한 바와 같이, 타겟 NAND 장치(204)에서 에러 정정된 유효 페이지 데이터의 프로그래밍은 장치 컨트롤러(1230)에 의해 WEb 플래그의 설정에 응답하여 개시될 수 있다.
도 3과 관련하여 상술된 작동들은 반복적으로 수행될 수 있고, 도 3에 도시된 실시 예에 관하여 상술된 작동들의 개별 반복들은 중첩될 수 있다. 예컨대, 단계 S322에서의 에러 정정된 페이지 데이터의 라이트와 함께, 장치 컨트롤러(1230)는 NAND 장치의 다른 메모리 블록으로부터 페이지 데이터를 리드할 수 있고(S320A), 카피-백 작동을 개시할 수 있다(S320B). 이러한 프로세스는 다른 NAND 장치에 대해 반복될 수 있다.
도 4는 도 1에 도시된 스토리지 장치의 실시 예를 보다 구체적으로 나타낸 블록도이다. 도 4는 도 2a와 유사하지만 장치 컨트롤러(1230)와 접속된 버퍼 메모리(1240)를 추가로 도시하고 있다. 또한, 도 4에 도시된 실시 예에서 NAND 장치들은, NAND 채널(Channel-2)과 결합된 NAND 장치들의 셋트가 온-칩 버퍼 프로그래밍 (on-chip buffered programming(OBP)) 작동 동안에 OBP 페이지 데이터를 버퍼하고 저장하는 NAND 장치(402)를 포함하는 것을 제외하면, 도 2a에 도시된 NAND 장치들과 동일하거나 실질적으로 동일하다. 도 4에 도시된 실시 예의 작동은 도 5를 참조하여 상세히 설명될 것이다.
도 5는 본 발명의 실시 예들에 따른 OBP 작동 방법을 나타내는 플로우 차트이다. 도 5에 도시된 OBP 작동은 도 4에 도시된 스토리지 장치의 일부를 참조하여 설명될 것이다.
도 4와 도 5를 참조하면, 장치 컨트롤러(1230)는 NAND 장치(402)로부터 OBP 페이지 데이터를 리드한다(S520). 예컨대, 장치 컨트롤러(1230)는 NAND 장치(402)에서 페이지 버퍼로부터 OBP 페이지 데이터를 리드한다.
장치 컨트롤러(1230)가 NAND 장치(402)로부터 OBP 페이지 데이터를 수신하면, ECC 회로(200)는 수신된 OBP 페이지 데이터에 포함된 에러들과 상기 에러들의 위치를 확인하기 위해 수신된 OBP 페이지 데이터에 대한 ECC 작동을 수행한다.
ECC 회로(200)는 도 3의 단계 S322에서 설명된 방법과 동일하거나 실질적으로 동일한 방법으로 수신된 OBP 페이지 데이터에 대한 ECC 작동을 수행할 수 있다. 도 3의 실시 예에서 설명된 것과 마찬가지로, OBP 페이지 데이터에 포함된 에러들의 위치들은 에러 위치 정보로 불릴 수 있고, OBP 페이지 데이터에 포함된 에러 비트들의 위치를 의미할 수 있다. ECC 회로(200)는 OBP 페이지 데이터에 대한 에러 위치 정보를 압축 프로세서(201)로 출력한다.
압축 프로세서(201)은 압축된 에러 위치 정보를 생성하기 위해 ECC 회로(200)로부터 수신된 에러 위치 정보를 압축한다. 압축 프로세서(201)는 도 3의 단계 S324에서 설명된 방법과 동일 또는 유사한 방법으로 에러 위치 정보를 압축할 수 있다.
계속하여 도 4와 도 5를 참조하면, 장치 컨트롤러(1230)는 압축된 에러 위치 정보를 버퍼 메모리(1240)로 출력한다. 이 경우, 장치 컨트롤러(1230)는 NAND 장치(402)로부터 버퍼 메모리(1240)로 OBP 페이지 데이터를 출력하지 않는다. 장치 컨트롤러(1230)는 단지 압축된 에러 위치 정보만을 버퍼 메모리(1240)로 출력한다. 따라서, OBP 프로그램 작동 동안 요구되는 버퍼 메모리의 용량은 종래의 OBP 작동에 비해 상대적으로 감소될 수 있다.
압축된 에러 위치 정보를 버퍼링한 후에 버퍼 메모리(1240)는 압축된 에러 위치 정보를 불휘발성 메모리(1210)로 출력한다(S528). 이 경우, 버퍼 메모리(1240)는 단지 압축된 에러 위치 정보만을 불휘발성 메모리(1210)로 출력한다. 예컨대, 버퍼 메모리(1240)는 장치 컨트롤러(1230)와 불휘발성 메모리(1210) 중 하나로부터 수신된 리드 요청에 응답하여 상기 압축된 에러 위치 정보를 불휘발성 메모리(1210)로 출력한다. 예컨대, 압축된 에러 위치들은 상기 압축된 에러 위치들과 관련된 페이지의 라이트-백(write-back)과 함께 버퍼 메모리(1240)로부터 출력될 수 있다.
불휘발성 메모리(1210)는 압축된 에러 위치 정보를 장치 컨트롤러(1230)로부터 수신하고, NAND 장치(402)의 페이지 버퍼에 저장된 OBP 페이지 데이터 내의 에러들의 위치를 획득하기 위해 상기 압축된 에러 위치 정보를 압축 해제한다(S530). 도 3의 단계 S328에서와 마찬가지로, 불휘발성 메모리(1210)는 임의의 잘 알려진 방법으로 상기 압축된 에러 위치 정보를 압축 해제할 수 있다.
불휘발성 메모리(1210)는 단계 S530에서 획득된 에러 위치들에 기초하여 페이지 버퍼에 저장된 OBP 페이지 데이터 내의 에러들을 정정할 수 있다(S532). 예컨대, 불휘발성 메모리(1210)는 단계 S530에서 획득된 에러 위치들에서 OBP 페이지 데이터의 데이터 비트들을 플립하거나 인버트할 수 있다. 불휘발성 메모리(1210)는 임의의 잘 알려진 방법을 이용하여 압축된 에러 위치 정보에서 확인된 유효 페이지 데이터의 비트들을 조절할 수 있다.
페이지 버퍼에 저장된 OBP 페이지 데이터에 대한 에러들을 정정한 후, 정정된 OBP 페이지 데이터는 NAND 장치(402)의 메모리 블록으로 라이트되거나 프로그램됨으로써, OBP 프로그램 작동은 완료된다(S534).
도 6은 본 발명의 실시 예들에 따른 스토리지 장치에 포함된 메모리 카드 시스템을 나타내는 블록도이다.
도 6을 참조하면, 메모리 카드 시스템(1600)은 호스트(1620)와 메모리 카드(1640)를 포함한다. 호스트(1620)는 호스트 컨트롤러(1624), 호스트 인터페이스(1626), 및 DRAM(1622)을 포함한다.
호스트(1620)는 메모리 카드(1640)에 데이터를 라이트하거나 메모리 카드(1640)로부터 데이터를 리드한다. 호스트 컨트롤러(1624)는 명령(CMD)(예컨대, 라이트 명령), 호스트(1620)의 클럭 생성기(미도시)로부터 생성된 클럭 신호(CLK), 및 데이터(DAT)를 호스트 인터페이스(1626)를 통해 메모리 카드(1640)로 전송한다. DRAM(1622)은 호스트(1620)의 메인 메모리일 수 있다.
메모리 카드(1640)는 카드 인터페이스(1642), 카드 컨트롤러(1644), 및 플래시 메모리(1646)를 포함한다. 카드 컨트롤러(1644)는 카드 인터페이스(1642)를 통해 입력된 명령에 응답하여 플래시 메모리(1646)에 데이터를 저장한다. 데이터는 카드 컨트롤러(1644)의 클럭 생성기(미도시)로부터 생성된 클럭 신호(CLK)와 함께 동기화 되어 저장될 수 있다.
플래시 메모리(1646)는 호스트(1620)로부터 전송된 데이터를 저장한다. 플래시 메모리(1646)는 보다 효율적인 가비지 컬렉션 작동들 및/또는 OBP 작동들을 수행하기 위한 도 2a 내지 도 5의 실시 예들에 따라 작동할 수 있다.
카드 컨트롤러(1644)는 도 2a 내지 도 5에서 설명된 장치 컨트롤러(1230)를 포함하거나 그와 같은 장치 컨트롤러(1230)로써 구현될 수 있다. 이에 따라, 메모리 카드(1644)는 보다 효율적인 가비지 컬렉션 작동들 및/또는 OBP 작동들을 수행하기 위한 본 발명의 실시 예들에 따라 작동할 수 있다.
도 7은 본 발명의 실시 예들에 따른 스토리지 장치가 구현될 수 있는 UFS 시스템을 나타내는 블록도이다.
도 7을 참조하면, UFS 시스템(2000)은 UFS 호스트(2100)와 UFS 장치(2200)를 포함한다. UFS 호스트(2100)는 호스트 컨트롤러(2120), 호스트 인터페이스(2130), 및 DRAM(2110)을 포함한다.
UFS 호스트(2100)는 UFS 장치(2200)에 데이터를 라이트하거나 UFS 장치(2200)로부터 데이터를 리드한다. DRAM(2110)은 UFS 호스트(2100)의 메인 메모리일 수 있다. UFS 호스트(2100)는 호스트 인터페이스(2130)와 장치 인터페이스(2210)를 통해 UFS 장치(2200)와 통신할 수 있다.
UFS 장치(2200)는 장치 인터페이스(2210), 장치 컨트롤러(2220), 및 플래시 메모리(2230)를 포함한다. 장치 컨트롤러(2220)는 장치 인터페이스(2210)를 통해 입력된 명령에 응답하여 플래시 메모리(2230)에 데이터를 저장한다. 플래시 메모리(2230)은 UFS 호스트(2100)로부터 전송된 데이터를 저장한다.
UFS 장치(2200)는 보다 효율적인 가비지 컬렉션 작동들 및/또는 OBP 작동들을 수행하기 위한 본 발명의 실시 예들에 따라 작동할 수 있다.
도 8은 본 발명의 실시 예들에 따른 메모리 장치를 포함하는 전자 장치를 나타내는 블록도이다. 여기서 전자 장치는 PC(personal computer), 또는 노트북 컴퓨터, 휴대 전화(cellular phone), PDA(personal digital assistant), 카메라 등과 같은 휴대용 전자 장치일 수 있다.
도 8을 참조하면, 전자 장치(8000)는 메모리 장치(8120), 파워 공급 장치(8080), 보조 파워 공급 장치(8100), CPU(8020), DRAM(8040), 및 사용자 인터페이스(8060)를 포함한다.
메모리 장치(8120)는 플래시 메모리(8124)와 장치 컨트롤러(8122)를 포함한다. 메모리 장치(8120)는 전자 장치(8000)에 내장될 수 있다.
메모리 장치(8120)는 보다 효율적인 가비지 컬렉션 작동들 및/또는 OBP 작동들을 수행하기 위한 본 발명의 실시 예들에 따라 작동할 수 있다.
도 9는 본 발명의 실시 예들에 따른 스토리지 시스템을 포함하는 컴퓨팅 시스템을 개략적으로 나타낸 블록도이다.
도 9를 참조하면, 컴퓨팅 시스템(9000)은 네트워크 어댑터(9020), CPU(9022), 대용량 저장 장치(9024), RAM(9026), ROM(9028), 및 사용자 인터페이스(9030)를 포함한다. 컴퓨팅 시스템(9000)의 구성들은 시스템 버스(9032)에 의해 접속된다.
네트워크 어댑터(9020)는 컴퓨팅 시스템(9000)과 외부 네트워크(9200) 사이에서 인터페이스를 제공한다. CPU(9022)는 RAM(9026) 상에 있는 작동 시스템과 애플리케이션 프로그램 구동을 위한 전반적인 작동을 제어한다.
대용량 저장 장치(9024)는 컴퓨팅 시스템(9000)을 위해 필요한 데이터를 저장한다. 예컨대, 대용량 저장 장치(9024)는 컴퓨팅 시스템(9000)을 구동하기 위한 작동 시스템, 애플리케이션 프로그램, 다양한 프로그램 모듈들, 프로그램 데이터, 사용자 데이터 등을 저장할 수 있다.
RAM(9026)은 컴퓨팅 시스템(9000)의 작동 메모리로써 사용된다. 부팅되는 동안, 대용량 저장 장치(9024)로부터 리드된 작동 시스템, 애플리케이션 프로그램, 다양한 프로그램 모듈, 및 프로그램들과 다양한 프로그램 모듈들을 구동하기 위해 필요한 프로그램 데이터는 RAM(9026)으로 로드될 수 있다.
ROM(9028)은 바이오스(basic input/output system(BIBO))를 저장한다. 상기 바이오스는 부팅되는 동안 작동 시스템이 구동되기 전에 활성화된다. 컴퓨팅 시스템(9000)과 사용자 사이의 정보 교환은 사용자 인터페이스(9030)을 통해 이루어질 수 있다.
컴퓨팅 시스템(9000)은 배터리, 모뎀 등을 더 포함할 수 있다. 또한, 비록 도 9에 도시되지 않았지만, 컴퓨팅 시스템(9000)은 애플리케이션 칩셋, 카메라 이미지 프로세서(camera image processor(CIS)), 모바일 DRAM 등을 더 포함할 수 있다.
대용량 저장 장치(9024)는 보다 효율적인 가비지 컬렉션 작동들 및/또는 OBP 작동들을 수행하기 위한 본 발명의 실시 예들에 따라 작동할 수 있다.
실시 예들에 따라, 대용량 저장 장치(9024)는 SSD(solid state drive), MMC(multimedia card), SD(secure digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), ID 카드, PCMCIA 카드, 칩 카드(chip card), USB 카드, 스마트 카드, 컴팩트 플래시(compact flash(CF)) 카드 등으로 구현될 수 있다.
도 10은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 휴대 단말기를 개략적으로 나타낸 블록도이다.
도 10을 참조하면, 휴대 단말기(3000)는 이미지 처리 회로(3100), 무선 송수신 회로(3200), 오디오 처리 회로(3300), 이미지 파일 생성 회로(3400), 불휘발성 메모리 장치(3500), 사용자 인터페이스(3600), 및 컨트롤러(3700)를 포함한다.
이미지 처리 회로(3100)는 렌즈(3110), 이미지 센서(3120), 이미지 프로세서(3130), 및 디스플레이 유닛(3140)을 포함한다. 무선 송수신 회로(3200)는 안테나(3210), 송수신기(3220), 및 모뎀(3230)을 포함한다. 오디오 처리 회로(3300)는 오디오 프로세서(3310), 마이크로폰(3320), 및 스피커(3330)를 포함한다.
불휘발성 메모리 장치(3500)는 보다 효율적인 가비지 컬렉션 작동들 및/또는 OBP 작동들을 수행하기 위한 실시 예들에 따라 작동할 수 있다. 도 10에 도시된 불휘발성 메모리 장치(3500)는 메모리 시스템, 메모리 카드, SSD, 및 eMMC 중에서 어느 하나일 수 있다.
본 발명의 실시 예들에 따른 불휘발성 메모리 장치들 및/또는 메모리 컨트롤러들은 다양한 패키지 방식, 예컨대, PoP(package on package), BGAs(ball grid arrays), CSPs(Chip scale packages), PLCC(plastic leaded chip carrier), PDIP(plastic dual in-line package), COB(chip on board), CERDIP(ceramic eual in-line package), MQFP(plastic metric quad flat pack), TQFP(thin quad flatpack), SOIC(small outline), SSOP(shrink small outline package), TSOP(thin small outline), SIP(system in package), MCP(multi chip package), WFP(wafer-level fabricated package), 또는 WSP(wafer-level processed stack package) 방식에 따라 패키지될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
200 : 에러 정정 코딩 회로
201 : 압축 프로세서
202 : (소스) NAND 장치
204 : (타겟) NAND 장치
1000 : 스토리지 시스템
1100 : 호스트
1101 : 호스트 인터페이스
1130 : 호스트 컨트롤러
1140 : 버퍼 메모리
1200 : 스토리지 장치
1201 : 장치 인터페이스
1210 : 불휘발성 메모리
1230 : 장치 컨트롤러
1240 : 버퍼 메모리

Claims (10)

  1. 메모리 채널을 통해 소스 메모리 블록들로부터 수신된 페이지 데이터에 대한 에러 위치 정보를 획득하기 위한 에러 정정 프로세서; 및
    상기 획득된 에러 위치 정보를 압축하고, 상기 수신된 페이지 데이터를 동반하지 않고 상기 압축된 에러 위치 정보를 상기 메모리 채널을 통해 타겟 메모리 블록으로 출력하기 위한 압축 프로세서를 포함하는 메모리 장치 컨트롤러.
  2. 제1항에 있어서,
    상기 압축 프로세서는 상기 타겟 메모리 블록으로 상기 압축된 에러 위치 정보만을 출력하는 메모리 장치 컨트롤러.
  3. 제1항에 있어서,
    상기 에러 정정 프로세서는 상기 수신된 페이지 데이터에 대한 상기 에러 위치 정보를 획득하기 위해 상기 수신된 페이지 데이터에 대한 에러 정정 코딩을 수행하고,
    상기 에러 위치 정보는 상기 수신된 페이지 데이터에 포함된 에러들의 위치들을 포함하는 메모리 장치 컨트롤러.
  4. 제1항에 있어서,
    상기 소스 메모리 블록과 상기 타겟 메모리 블록은 상기 메모리 채널과 접속된 동일한 불휘발성 메모리 장치에 위치하는 메모리 장치 컨트롤러.
  5. 제1항에 있어서,
    상기 수신된 페이지 데이터는 가비지 컬렉션 작동 동안에 상기 소스 메모리 블록으로부터 리드된 유효 페이지 데이터인 메모리 장치 컨트롤러.
  6. 제1항에 있어서,
    상기 수신된 페이지 데이터는 온-칩 버퍼 프로그램(on-chip buffered program) 데이터이고, 상기 압축된 에러 위치 정보는 상기 타겟 메모리 블록으로 출력되기 이전에 버퍼되는 메모리 장치 컨트롤러.
  7. 소스 메모리 블록을 포함하고, 메모리 채널과 접속되는 소스 불휘발성 메모리 장치; 및
    상기 메모리 채널을 통해 상기 소스 불휘발성 메모리 장치와 통신하는 메모리 장치 컨트롤러를 포함하고,
    상기 메모리 장치 컨트롤러는,
    상기 메모리 채널을 통해 소스 메모리 블록들로부터 수신된 페이지 데이터에 대한 에러 위치 정보를 획득하기 위한 에러 정정 프로세서; 및
    상기 획득된 에러 위치 정보를 압축하고, 상기 수신된 페이지 데이터 없이 상기 압축된 에러 위치 정보를 상기 메모리 채널을 통해 타겟 메모리 블록으로 출력하기 위한 압축 프로세서를 포함하는 스토리지 장치.
  8. 제7항에 있어서,
    상기 페이지 데이터는 가비지 컬렉션 작동 동안에 상기 소스 메모리 블록으로부터 리드된 유효 페이지 데이터인 스토리지 장치.
  9. 제7항에 있어서,
    상기 페이지 데이터는 온-칩 버퍼드 프로그램(on-chip buffered program) 데이터이고, 상기 압축된 에러 위치 정보는 상기 타겟 메모리 블록으로 출력되기 이전에 버퍼되는 스토리지 장치.
  10. 복수의 메모리 블록들과 페이지 버퍼를 포함하고, 메모리 채널에 접속되는 불휘발성 메모리 장치를 포함하고,
    상기 불휘발성 메모리 장치는,
    소스 메모리 블록으로부터 리드된 페이지 데이터를 버퍼하고,
    상기 메모리 채널을 통해 상기 메모리 장치 컨트롤러로부터 상기 페이지 데이터에 대한 수신 없이 에러 위치 정보를 수신하고, 상기 수신에 응답하여 상기 버퍼된 페이지 데이터에 포함된 에러를 정정하고,
    상기 에러 정정된 페이지 데이터를 상기 불휘발성 메모리 장치의 상기 복수의 메모리 블록들 중에서 타겟 메모리 블록에 라이트하는 스토리지 장치.
KR1020160005197A 2015-04-29 2016-01-15 메모리 채널 트래픽 감소를 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치 KR20160128903A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/699,810 2015-04-29
US14/699,810 US20160321135A1 (en) 2015-04-29 2015-04-29 Memory systems having reduced memory channel traffic and methods for operating the same

Publications (1)

Publication Number Publication Date
KR20160128903A true KR20160128903A (ko) 2016-11-08

Family

ID=57204930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160005197A KR20160128903A (ko) 2015-04-29 2016-01-15 메모리 채널 트래픽 감소를 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치

Country Status (2)

Country Link
US (1) US20160321135A1 (ko)
KR (1) KR20160128903A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020051520A1 (en) * 2018-09-06 2020-03-12 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268543B2 (en) * 2017-01-27 2019-04-23 Hewlett Packard Enterprise Development Lp Online volume repair
US10866858B2 (en) * 2019-04-16 2020-12-15 Samsung Electronics Co., Ltd. Memory systems having reduced memory channel traffic and methods for operating the same
US11921649B1 (en) * 2019-09-12 2024-03-05 Kioxia Corporation Multiple parallel mode flash channels with serial link
US11322218B2 (en) * 2020-06-08 2022-05-03 Micron Technology, Inc. Error control for memory device

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020051520A1 (en) * 2018-09-06 2020-03-12 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US11567817B2 (en) 2018-09-06 2023-01-31 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11675714B2 (en) 2018-09-06 2023-06-13 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller

Also Published As

Publication number Publication date
US20160321135A1 (en) 2016-11-03

Similar Documents

Publication Publication Date Title
US10430083B2 (en) Memory scheduling method for changing command order and method of operating memory system
KR20160128903A (ko) 메모리 채널 트래픽 감소를 위한 메모리 장치 컨트롤러와 이를 포함하는 스토리지 장치
JP6045567B2 (ja) 不揮発性記憶のための可変オーバープロビジョニング
US9396107B2 (en) Memory system having memory controller with cache memory and NVRAM and method of operating same
KR102565895B1 (ko) 메모리 시스템 및 그것의 동작 방법
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
CN111863076B (zh) 具有减少的存储器通道流量的存储器系统及其操作方法
KR20150138713A (ko) 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
US20160350025A1 (en) Data storage device
US9164804B2 (en) Virtual memory module
US20190347197A1 (en) Memory system and operating method thereof
US9589888B2 (en) Storage devices, flash memories, and methods of operating storage devices
US10754785B2 (en) Checkpointing for DRAM-less SSD
CN106445749B (zh) 使用独立磁盘冗余阵列的动态自动调谐的最大延迟的减小
US20180373629A1 (en) Memory system and operating method thereof
KR102563760B1 (ko) 인터페이스 유닛 및 그것의 동작방법
KR102322740B1 (ko) 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법
KR20180114649A (ko) 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 그리고 멀티 프로세서 시스템
KR20200037584A (ko) 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 데이터베이스 시스템
KR20210041158A (ko) 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
WO2013147923A1 (en) Solid state drive management in power loss recovery
US11922062B2 (en) Controller and operating method thereof
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
JP2018160156A (ja) メモリシステム
US20110296131A1 (en) Nonvolatile memory system and the operation method thereof