KR20240053298A - 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법 - Google Patents

호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법 Download PDF

Info

Publication number
KR20240053298A
KR20240053298A KR1020220133233A KR20220133233A KR20240053298A KR 20240053298 A KR20240053298 A KR 20240053298A KR 1020220133233 A KR1020220133233 A KR 1020220133233A KR 20220133233 A KR20220133233 A KR 20220133233A KR 20240053298 A KR20240053298 A KR 20240053298A
Authority
KR
South Korea
Prior art keywords
block
map data
memory
host
blocks
Prior art date
Application number
KR1020220133233A
Other languages
English (en)
Inventor
김정우
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020220133233A priority Critical patent/KR20240053298A/ko
Priority to US18/104,295 priority patent/US20240126462A1/en
Publication of KR20240053298A publication Critical patent/KR20240053298A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 기술은 복수의 메모리 블록을 포함하는 메모리 장치 및 가비지 콜렉션 수행을 위해, 상기 복수의 메모리 블록 중에서 선택한 상기 복수의 희생블록 중에서 외부장치에 저장된 맵데이터와 관련된 제1희생블록이 포함된 경우, 상기 제1희생블록에 저장된 하나 이상의 유효데이터를 프리블록인 임시대상블록에 저장하고, 상기 제1희생블록을 소거 처리하여 제1대상블록으로 설정한 후, 상기 임시대상블록에 저장된 하나 이상의 유효데이터 중에서 상기 외부장치에 저장된 맵 데이터에 대응하는 제1유효데이터를 상기 제1대상블록으로 옮기되, 상기 제1희생블록에 저장되어 있었던 동일한 위치로 복사하여 저장하는 컨트롤러를 포함하는 메모리 시스템을 제공한다.

Description

호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법{APPARATUS AND METHOD FOR MANAGING MAP DATA BETWEEN A HOST AND A MEMORY SYSTEM}
본 발명은 데이터 처리 시스템에 관한 것으로서, 구체적으로 호스트와 메모리시스템에서 맵 데이터를 관리하는 장치 및 방법에 관한 것이다.
메모리 시스템은 컴퓨터와, 스마트폰, 태블릿 등의 모바일 단말, 또는 각종 전자 기기와 같은 호스트의 요청을 기초로 데이터를 저장하는 장치이다. 메모리 시스템은 메모리(e.g. 휘발성 메모리/비휘발성 메모리)를 제어하기 위한 컨트롤러를 더 포함할 수 있으며, 이러한 컨트롤러는 호스트로부터 커맨드(Command)를 입력 받아, 입력 받은 커맨드에 기초하여 메모리 시스템에 포함된 메모리장치에 데이터를 리드(Read), 라이트(Write), 또는 소거(Erase) 하기 위한 동작들을 실행하거나 제어할 수 있다. 한편, 메모리 시스템의 리드 레이턴시를 줄이기 위해, 호스트가 메모리 시스템에 논리 어드레스와 물리 어드레스 매핑 정보, 즉 맵 데이터를 리드 커맨드와 함께 제공하는 호스트 퍼포먼스 부스터(Host Performance Booster, HPB)기술이 사용되고 있다. 메모리 시스템의 내부동작(Background Operation)으로 인해서 맵 데이터가 변경되며, 변경된 맵 데이터는 호스트에 전달되어 저장될 수 있다.
본 발명의 일 실시예는 호스트에 저장된 맵 데이터의 업데이터를 최소화하기 위해, 호스트와 메모리시스템에서 맵 데이터를 관리하는 장치 및 방법을 제공할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시 예들은 메모리 장치, 메모리 시스템, 혹은 메모리 시스템에 포함되는 컨트롤러, 혹은 메모리 시스템을 포함하는 데이터 처리 장치를 제공할 수 있다.
본 발명의 일 실시 예에 따른 메모리 시스템은 복수의 메모리 블록을 포함하는 메모리 장치; 및 가비지 콜렉션 수행을 위해, 상기 복수의 메모리 블록 중에서 선택한 상기 복수의 희생블록 중에서 외부장치에 저장된 맵데이터와 관련된 제1희생블록이 포함된 경우, 상기 제1희생블록에 저장된 하나 이상의 유효데이터를 프리블록인 임시대상블록에 저장하고, 상기 제1희생블록을 소거 처리하여 제1대상블록으로 설정한 후, 상기 임시대상블록에 저장된 하나 이상의 유효데이터 중에서 상기 외부장치에 저장된 맵 데이터에 대응하는 제1유효데이터를 상기 제1대상블록으로 옮기되, 상기 제1희생블록에 저장되어 있었던 동일한 위치로 복사하여 저장하는 컨트롤러를 포함할 수 있다.
본 발명의 양태들은 본 발명의 바람직한 실시예들 중 일부에 불과하며, 본원 발명의 기술적 특징들이 반영된 다양한 실시예들이 당해 기술분야의 통상적인 지식을 가진 자에 의해 이하 상술할 본 발명의 상세한 설명을 기반으로 도출되고 이해될 수 있다.
본 발명에 따른 장치에 대한 효과에 대해 설명하면 다음과 같다.
본 발명의 일 실시 예에 따른 메모리 시스템은 HPB(Host Performance Booster) 동작을 지원하기 위해 할당된 외부 장치의 자원(resource)에 대한 업데이터를 최소화 할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 설명한다.
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 시스템을 설명한다.
도 3은 본 발명의 다른 실시예에 따른 메모리 시스템을 설명한다.
도 4는 도 1~3에서 설명한 컨트롤러의 내부 계층을 설명한다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 시스템에서 호스트와 메모리 시스템의 읽기 동작을 설명한다.
도 6은 호스트와 메모리 시스템의 맵 데이터의 동기화 방식을 설명하기 위한 도면이다.
도 7a 내지 도 7f는 본 발명의 실시예에 따른 메모리 시스템의 데이터 처리 동작을 설명하기 위한 도면이다.
도 8항은 본 발명의 실시예에 있어서 메모리 시스템의 동작방법을 설명하기 위한 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 설명한다. 도 1에서 설명하는 데이터 처리 시스템은 호스트(102)에 포함된 호스트 메모리(106)를 메모리 시스템(110)에서 사용하는 맵 데이터를 임시 저장할 수 있는 장치로 사용하는 예를 설명한다.
도 1을 참조하면, 호스트(102)는 호스트 프로세서(104), 호스트 메모리(106) 및 호스트 컨트롤러 인터페이스(108)를 포함할 수 있다. 메모리 시스템(110)은 컨트롤러(130) 및 메모리 장치(150)를 포함할 수 있다. 도 1에서 설명하는 컨트롤러(130) 및 메모리 장치(150)는 도 2 내지 도 4에서 설명하는 컨트롤러(130) 및 메모리 장치(150)와 유사할 수 있다. 그리고, 도 1에서 설명하는 컨트롤러(130) 내 논리 블록(160)은 도 2에서 설명하는 플래시 변환 계층(FTL)에 대응할 수 있다. 하지만, 실시예에 따라, 컨트롤러(130) 내 논리 블록(160)은 플래시 변환 계층(FTL)에서 설명하지 않은 역할과 기능을 더 수행할 수 있다.
호스트(102)는 호스트(102)와 연동하는 메모리 시스템(110)에 비하여 고성능의 호스트 프로세서(104) 및 대용량의 호스트 메모리(106)를 포함할 수 있다. 호스트(102) 내 호스트 프로세서(104) 및 호스트 메모리(106)는 메모리 시스템(110)과 달리 공간적 제약이 적고, 필요에 따라 호스트 프로세서(104) 및 호스트 메모리(106)의 하드웨어적인 업그레이드(upgrade)가 가능한 장점이 있다. 따라서, 메모리 시스템(110)이 동작 효율성을 높이기 위해, 호스트(102)가 가지는 자원(resource)을 활용할 수 있다.
메모리 시스템(110)이 저장할 수 있는 데이터의 양이 증가하면서, 메모리 시스템(110)에 저장되는 데이터에 대응하는 맵 데이터의 양도 증가한다. 메모리 시스템(110) 내 컨트롤러(130)가 맵 데이터를 로딩(loading)할 수 있는 메모리(144)의 공간은 제한적이므로, 맵 데이터의 양이 증가는 컨트롤러(130)의 동작에 부담을 준다. 예를 들어, 컨트롤러(130)가 맵 데이터를 위해 할당할 수 있는 메모리(144) 내 공간의 제약으로 인해, 맵 데이터의 전부가 아닌 일부를 로딩(loading)할 수 있다. 만약 호스트(102)가 액세스하고자 하는 위치가 일부 로딩된 맵 데이터에 포함되지 않은 경우, 컨트롤러(130)는 로딩(loading)한 맵 데이터의 일부가 갱신되었다면 메모리 장치(150)에 다시 저장해야 하고, 호스트(102)가 액세스하고자 하는 위치에 대응하는 맵 데이터를 메모리 장치(150)로부터 읽어야 한다. 이러한 동작들은 컨트롤러(130)가 호스트(102)가 요구하는 읽기 혹은 쓰기 동작을 수행하기 위해 필요적으로 수행될 수 있으며, 메모리 시스템(110)의 동작 성능을 저하시킬 수 있다.
실시예에 따라, 컨트롤러(130)가 사용할 수 있는 메모리(144)에 비하여, 호스트(102)가 포함하는 호스트 메모리(106)의 저장 공간은 수십배에서 수천배 클 수 있다. 따라서, 메모리 시스템(110)은 컨트롤러(130)가 사용하는 맵 데이터(166)를 호스트(102) 내 호스트 메모리(106)에 전달하여, 호스트(102) 내 호스트 메모리(106)가 메모리 시스템(110)이 수행하는 주소변환과정을 위한 캐시(cache) 메모리로 사용되도록 할 수 있다. 이 경우, 호스트(102)는 메모리 시스템(110)에 명령과 함께 논리 주소를 전달하지 않고, 호스트 메모리(106)에 저장된 맵 데이터(166)를 바탕으로 논리 주소를 물리 주소로 변환한 후 명령과 함께 물리 주소를 메모리 시스템(110)에 전달할 수 있다. 메모리 시스템(110)은 논리 주소를 물리 주소로 변환하는 과정을 생략할 수 있고, 전달되는 물리 주소를 바탕으로 메모리 장치(150)에 액세스할 수 있다. 이 경우, 전술했던 컨트롤러(130)가 메모리(144)를 사용하면서 발생하는 동작 부담을 해소할 수 있어, 메모리 시스템(110)의 동작 효율성이 매우 높아질 수 있다. 이와 관련하여 도 5를 통해 호스트와 메모리 시스템의 읽기 동작을 구체적으로 설명하기로 한다.
한편, 메모리 시스템(110)이 맵 데이터(166)를 호스트(102)에 전송하더라도, 메모리 시스템(110)이 맵 데이터(166)에 기준이 되는 정보의 관리(즉, 맵 데이터의 갱신, 삭제, 생성 등)를 수행할 수 있다. 메모리 시스템(110) 내 컨트롤러(130)는 메모리 장치(150)의 동작 상태에 따라 가비지 콜렉션, 웨어 레벨링 등의 내부 동작(Background Operation)을 수행할 수 있고, 호스트(102)에서 전달된 데이터를 메모리 장치(150) 내 저장하는 물리적 위치(물리 주소)를 결정할 수 있기 때문에, 메모리 장치(150) 내 데이터의 물리적인 주소는 변경될 수 있다. 따라서, 맵 데이터(166)의 기준이 되는 정보(source)의 관리는 메모리 시스템(110)이 맡을 수 있다. 그리고, 메모리 시스템(110)은 맵 데이터의 변경으로 인해, 호스트(102) 내 호스트 메모리(106)에 저장된 맵데이터(166)도 갱신해야한다고 판단할 경우, 호스트와 동기화해야하는 추가적인 동작을 수행해야한다. 이와 관련하여, 도 6을 통해 메모리 시스템이 호스트 내 호스트 메모리에 저장된 맵데이터도 갱신해야한다고 판단한 경우 업데이트 하는 동작을 구체적으로 설명하기로 한다.
이와 같이, 호스트(102)와 메모리 시스템(110)의 동기화 과정을 최소화하기 위해서는 호스트 메모리(106)에 저장된 맵데이터(166)를 변경시키지 않으면 된다. 그러기 위해서, 내부 동작, 즉, 가비지 콜렉션 동작 수행 시, 호스트 메모리(106)에 저장된 맵데이터(166)에 대응하는 데이터를 가비지 콜렉션 동작을 수행하기 이전에 저장되어 있었던 주소로 다시 저장하면 해결할 수 있다.
도 2는 본 발명의 다른 실시예에 따른 데이터 처리 시스템을 설명한다.
도 2를 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다. 예를 들면, 호스트(102)와 메모리 시스템(110)은 데이터 버스(data bus), 호스트 케이블(host cable) 등과 같은 데이터 전달 수단을 통해 연결되어, 데이터를 송수신할 수 있다.
메모리 시스템(110)은 메모리 장치(150)와 컨트롤러(130)를 포함할 수 있다. 메모리 시스템(110) 내 메모리 장치(150)와 컨트롤러(130)는 물리적으로 구분되는 구성요소일 수 있다. 메모리 장치(150)와 컨트롤러(130)는 적어도 하나의 데이터 패스(data path)로 연결될 수 있다. 예를 들면, 데이터 패스는 채널(channel) 및/또는 웨이(way) 등으로 구성될 수 있다.
실시예에 따라, 메모리 장치(150)와 컨트롤러(130)는 기능적으로 구분되는 구성요소일 수 있다. 또한, 실시예에 따라, 메모리 장치(150)와 컨트롤러(130)는 하나의 반도체 장치 칩(chip) 혹은 복수의 반도체 장치 칩(chip)을 통해 구현될 수 있다. 실시예에 따라, 높은 집적도가 요구되는 메모리 시스템(110)의 경우, 메모리 장치(150)와 컨트롤러(130)는 하나의 반도체 장치 칩(chip)으로 구성될 수도 있다.
메모리 장치(150)는 복수의 메모리 블록(152, 154, 156)을 포함할 수 있다. 메모리 블록(152, 154, 156)은 삭제 동작을 통해 함께 데이터가 제거되는 비휘발성 메모리 셀들의 그룹으로 이해할 수 있다. 도시되지 않았지만, 메모리 블록(152, 154, 156)은 프로그램 동작 시 함께 데이터가 저장되거나 리드 동작 시 데이터를 함께 출력하는 비휘발성 메모리 셀들의 그룹인 페이지(page)를 포함할 수 있다. 예를 들면, 하나의 메모리 블록(152, 154, 156)에는 복수의 페이지가 포함될 수 있다.
도시되지 않았지만, 메모리 장치(150)는 복수의 메모리 플레인(plane) 혹은 복수의 메모리 다이(die)를 포함할 수 있다. 실시예에 따라, 메모리 플레인은 적어도 하나의 메모리 블록(152, 154, 156)을 포함할 수 있으며, 복수의 비휘발성 메모리 셀로 구성된 어레이를 제어할 수 있는 구동 회로 및 복수의 비휘발성 메모리 셀로 입력 혹은 복수의 비휘발성 메모리 셀로부터 출력되는 데이터를 임시 저장할 수 있는 버퍼를 포함하는 논리적 혹은 물리적인 파티션(partition)으로 이해할 수 있다.
또한, 실시예에 따라, 메모리 다이(200, 도1 참조)는 적어도 하나의 메모리 플레인을 포함할 수 있으며, 물리적으로 구분될 수 있는 기판 상에 구현되는 구성 요소의 집합으로 이해될 수 있다. 각 메모리 다이(200)는 컨트롤러(130)와 데이터 패스를 통해 연결될 수 있으며, 컨트롤러(130)와 데이터, 신호 등을 주고받기 위한 인터페이스를 포함할 수 있다.
실시예에 따라, 메모리 장치(150)는 적어도 하나의 메모리 블록(152, 154, 156), 적어도 하나의 메모리 플레인, 혹은 적어도 하나의 메모리 다이를 포함할 수 있다. 도 2에서 설명한 메모리 장치(150)는 메모리 시스템(110)의 동작 성능에 대응하여 내부 구성이 달라질 수 있다. 본 발명의 일 실시예는 도 2에서 설명한 내부 구성에 한정되지 않을 수 있다.
도 2를 참조하면, 메모리 장치(150)는 메모리 블록(152, 154, 156)에 적어도 하나의 전압을 공급할 수 있는 전압 공급 회로(170)를 포함할 수 있다. 전압 공급 회로(170)는 읽기 전압(Vrd), 프로그램 전압(Vprog), 패스 전압(Vpass) 혹은 삭제 전압(Vers)을 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 공급할 수 있다. 예를 들어, 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 저장된 데이터를 읽기 위한 리드 동작 중, 전압 공급 회로(170)는 선택된 비휘발성 메모리 셀에 읽기 전압(Vrd)을 공급할 수 있다. 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 데이터를 저장하기 위한 프로그램 동작 중, 전압 공급 회로(170)는 선택된 비휘발성 메모리 셀에 프로그램 전압(Vprog)을 공급할 수 있다. 또한, 선택된 비휘발성 메모리 셀에 리드 동작 혹은 프로그램 동작 중, 전압 공급 회로(170)는 선택되지 않은 비휘발성 메모리 셀에 패스 전압(Vpass)을 공급할 수 있다. 메모리 블록(152, 154, 156)에 포함된 비휘발성 메모리 셀에 저장된 데이터를 삭제하기 위한 삭제 동작 중, 전압 공급 회로(170)는 메모리 블록(152, 154, 156)에 삭제 전압(Vers)을 공급할 수 있다.
메모리 장치(150)는 메모리 블록(152, 154, 156)에 공급하는 다양한 전압에 대한 정보를 저장할 수 있다. 예를 들어, 메모리 블록(152, 154, 156) 내 비휘발성 메모리 셀이 멀티 비트의 데이터를 저장할 수 있는 경우, 멀티 비트의 데이터를 식별하기 위한 읽기 전압(Vrd)의 레벨은 다양할 수 있다. 메모리 장치(150)는 멀티 비트의 데이터에 대응하는 복수의 읽기 전압(Vrd)의 레벨을 포함하는 전압 테이블을 포함할 수 있다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 비휴대용 전자 장치들을 포함할 수 있다. 예를 들어, 호스트(102)는 컴퓨팅 장치 혹은 유무선 전자 장치들을 포함할 수 있다.
또한, 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system)를 포함하며, 운영 시스템은, 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 호스트(102)는 복수의 운영 시스템들을 포함할 수 있으며, 또한 사용자 요청(user request)에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행한다. 호스트(102)는 사용자 요청에 해당하는 복수의 커맨드들을 메모리 시스템(110)으로 전송하며, 메모리 시스템(110)에서는 복수의 커맨드들에 해당하는 동작들(즉, 사용자 요청에 상응하는 동작들)을 수행할 수 있다. 예를 들면, 호스트(102)의 운영 시스템은 도 1에서 설명한 파일 시스템을 포함할 수 있다. 실시예에 따라, 호스트(102)는 복수의 운영 시스템을 사용하고 복수의 파일 시스템을 사용할 수 있다.
메모리 시스템(110) 내 컨트롤러(130)는 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어할 수 있다. 예를 들면, 컨트롤러(130)는 읽기 동작을 수행하여 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공할 수 있고, 쓰기 동작(프로그램 동작)을 수행하여 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 데이터 입출력 동작을 수행하기 위해, 컨트롤러(130)는 리드, 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다. 전압 공급 회로(170)는 컨트롤러(130)가 메모리 장치(150)에 전송한 명령 혹은 요청에 따라 대상 전압을 메모리 그룹(330) 혹은 메모리 블록(152, 154, 156)에 전달할 수 있다.
실시예에 따라, 컨트롤러(130)는 호스트 인터페이스(132), 프로세서(134), 에러 정정부(138), 파워 관리 유닛(Power Management Unit, PMU)(140), 메모리 인터페이스(142), 및 메모리(144)를 포함할 수 있다. 도 2에서 설명한 컨트롤러(130)에 포함된 구성 요소들은 메모리 시스템(110)의 구현 형태, 동작 성능 등에 따라 달라질 수 있다. 예를 들면, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 컨트롤러(130)의 내부에 포함되는 구성 요소들은 메모리 시스템(110)의 구현 형태에 따라 추가되거나 제거될 수 있다.
호스트(102)와 메모리 시스템(110)은 약속된 규격에 대응하여 신호, 데이터 등을 송수신하기 위한 컨트롤러 혹은 인터페이스를 포함할 수 있다. 예를 들면, 메모리 시스템(110) 내 호스트 인터페이스(132)는 호스트(102)에 신호, 데이터 등을 송신하거나 호스트(102)로부터 전달되는 신호, 데이터 등을 수신할 수 있는 장치를 포함할 수 있다.
컨트롤러(130)에 포함된 호스트 인터페이스(132)는 호스트(102)로부터 전달되는 신호, 커맨드(command) 또는 데이터를 수신할 수 있다. 즉, 호스트(102)와 메모리 시스템(110)은 서로 약속된 규격을 통해 데이터를 송수신할 수 있다. 데이터를 송수신하기 위한 약속된 규격의 예로서 USB(Universal Serial Bus), MMC(Multi-Media Card), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), PCIE(Peripheral Component Interconnect Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜이 있다. 실시예에 따라, 호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
NVMe(Non-volatile memory express)는 비휘발성 메모리 시스템(110)을 탑재한 서버, 컴퓨팅 장치 등의 호스트(102)의 성능 향상과 설계 유연성을 높일 수 있도록 만든 PCIe(Peripheral Component Interconnect Express, PCI Express) 인터페이스 기반의 프로토콜을 가리킬 수 있다. 여기서, PCIe는 컴퓨팅 장치와 같은 호스트(102)와 컴퓨팅 장치와 연결되는 주변 장치와 같은 메모리 시스템(110)을 연결하기 위한 슬롯(slot) 혹은 특정 케이블을 이용하여, 복수의 핀(예, 18개, 32개, 49개, 82개 등)과 적어도 하나의 배선(예, x1, x4, x8, x16 등)을 통해 배선 당 초당 수백 MB이상(예, 250 MB/s, 500 MB/s, 984.6250 MB/s, 1969 MB/s 등)의 대역폭을 가질 수 있다. 이를 통해, PCIe는 초당 수십~수백 Gbit의 대역폭을 구현할 수 있다. NVMe는 하드 디스크보다 더 빠른 속도로 동작하는 SSD와 같은 비휘발성 메모리 시스템(110)의 속도를 지원할 수 있다.
실시예에 따라, 호스트(102)와 메모리 시스템(110)은 범용 직렬 버스(Universal Serial Bus, USB)를 통해 연결될 수 있다. 범용 직렬 버스(USB)는 키보드, 마우스, 조이스틱, 프린터, 스캐너, 저장 장치, 모뎀, 화상 회의 카메라 등과 같은 주변 장치에 대한 경제적인 표준 연결을 보장하는 확장성이 뛰어난 핫 플러그형 플러그 앤 플레이 직렬 인터페이스를 포함할 수 있다. 호스트(102)에 포함된 하나의 송수신 장치에 메모리 시스템(110)과 같은 복수의 주변 장치를 연결할 수 있다.
도 2를 참조하면, 컨트롤러(130) 내 에러 정정부(error correction circuitry, 138)는 메모리 장치(150)에서 처리되는 데이터의 에러 비트를 정정할 수 있다. 실시예에 따라, 에러 정정부(138)는 ECC 인코더와 ECC 디코더를 포함할 수 있다. 여기서, ECC 인코더(ECC encoder)는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 인코딩(error correction encoding)하여, 패리티(parity) 비트가 부가된 데이터를 생성할 수 있다. 패리티 비트가 부가된 데이터는 메모리 장치(150)에 저장될 수 있다. ECC 디코더(ECC decoder)는, 메모리 장치(150)에 저장된 데이터를 리드할 경우, 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. ECC 유닛(138)은 메모리 장치(150)로부터 리드한 데이터를 에러 정정 디코딩(error correction decoding)한 후, 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호, 예컨대 에러 정정 성공(success)/실패(fail) 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. ECC 유닛(138)은 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패 신호를 출력할 수 있다.
실시예에 따라, 에러 정정부(138)는 LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, 에러 정정부(138)는 데이터에 포함된 오류를 정정하기 위한 프로그램, 회로, 모듈, 시스템, 또는 장치를 포함할 수 있다.
PMU(140)는 메모리 시스템(110)에 외부에서 인가되는 전원(예, 컨트롤러(130)에 공급되는 전압)을 추적 감시하고, 외부에서 공급되는 전압 레벨이 불안정한 경우, 메모리 시스템(110)이 긴급하게 현재 상태를 백업할 수 있도록 트리거 신호를 생성할 수 있다. 실시예에 따라, PMU(140)는 긴급 상황에서 사용될 수 있는 전력을 축적할 수 있는 예비 전원 장치(Auxiliary Power Supply)를 포함할 수 있다.
메모리 인터페이스(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 신호, 데이터를 송수신할 수 있다. 메모리 장치(150)가 플래시 메모리(예, NAND 플래시 메모리)일 경우, 메모리 인터페이스(142)는 NAND 플래시 컨트롤러(NAND Flash Controller, NFC)를 포함할 수 있다. 프로세서(134)의 제어에 따라, 메모리 인터페이스(142)는 메모리 장치(150)의 동작을 제어하기 위한 신호를 생성할 수 있고, 메모리 장치(150)에서 출력된 데이터를 수신하거나, 메모리 장치(150)에 저장될 데이터를 송신할 수 있다. 실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 지원하며, 메모리 장치(150)와 데이터를 주고받는 영역으로 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 위해 Open NAND Flash Interface(ONFi), 토글(toggle) 모드 등을 지원할 수 있다. 예를 들면, ONFi는 8-비트 혹은 16-비트의 단위 데이터에 대한 양방향(bidirectional) 송수신을 지원할 수 있는 신호선을 포함하는 데이터 경로(예, 채널, 웨이 등)를 사용할 수 있다. 컨트롤러(130)와 메모리 장치(150) 사이의 데이터 통신은 비동기식 SDR(Asynchronous Single Data Rate), 동기식 DDR(Synchronous Double Data Rate) 및 토글 DDR(Toggle Double Data Rate) 중 적어도 하나에 대한 인터페이스(interface)를 지원하는 장치를 통해 수행될 수 있다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리(working memory)로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위해 필요한 데이터 혹은 구동 중 발생한 데이터를 저장할 수 있다. 예를 들어, 메모리(144)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)로부터 제공된 읽기 데이터를 호스트(102)로 제공하기 전 임시 저장할 수 있다. 또한, 컨트롤러(130)는 호스트(102)로부터 제공된 쓰기 데이터를 메모리 장치(150)에 저장하기 전, 메모리(144)에 임시 저장할 수 있다. 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 메모리 시스템(110) 내 컨트롤러(130)와 메모리 장치(150) 사이에 전달되거나 발생하는 데이터는 메모리(144)에 저장될 수 있다. 읽기 데이터 또는 쓰기 데이터뿐만 아니라, 메모리(144)는 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 읽기 등의 동작을 수행하기 위해 필요한 정보(예, 맵 데이터, 읽기 명령, 프로그램 명령 등)를 저장할 수 있다. 메모리(144)는 명령 큐(command queue), 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 읽기 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
실시예에 따라, 메모리(144)는 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 2에서 도시한 바와 같이, 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 이때 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력 되는 외부 휘발성 메모리로 구현될 수도 있다.
프로세서(134)는 컨트롤러(130)의 동작을 제어할 수 있다. 호스트(102)로부터의 라이트 요청 또는 읽기 요청에 응답하여, 프로세서(134)는 메모리 장치(150)에 대한 프로그램 동작 또는 읽기 동작을 수행할 수 있다. 프로세서(134)는, 컨트롤러(130)의 데이터 입출력 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동할 수 있다. 실시예에 따라, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다. 또한, 실시예에 따라, 프로세서(134)는 서로 구별되는 연산 처리 영역인 코어(core)가 두 개 이상이 집적된 회로인 멀티 코어(multi-core) 프로세서로 구현될 수도 있다.
컨트롤러(130) 내 프로세서(134)는 호스트(102)로부터 입력된 커맨드에 대응하는 동작을 수행할 수도 있고, 호스트(102)와 같은 외부 장치에서 입력되는 커맨드와 무관하게 메모리 시스템(110)이 독립적으로 동작을 수행할 수도 있다. 메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)과 관련하여, 메모리 시스템(110)은 가비지 콜렉션(Garbage Collection, GC), 웨어 레벨링(Wear Leveling, WL), 배드 블록을 확인하여 처리하는 배드 블록 관리(bad block management) 등을 위한 동작들을 수행할 수도 있다. 실시예에 따라, 도 1에서 설명한 호스트와 메모리 시스템의 동기화를 최소하기위한 동작은 가비지 콜렉션과 함께 수행될 수 있다.
메모리 장치(150)가 비휘발성 메모리 셀을 포함하는 복수의 다이(dies) 혹은 복수의 칩(chips)으로 구성된 경우, 컨트롤러(130)는 메모리 시스템(110)의 성능 향상을 위해 호스트(102)에서 전달된 요청 혹은 명령들을 메모리 장치(150) 내 복수의 다이(dies) 혹은 복수의 칩(chips)에 나누어 동시에 처리할 수 있다. 컨트롤러(130) 내 메모리 인터페이스(142)은 메모리 장치(150) 내 복수의 다이(dies) 혹은 복수의 칩(chips)과 적어도 하나의 채널(channel)과 적어도 하나의 웨이(way)를 통해 연결될 수 있다. 컨트롤러(130)가 비휘발성 메모리 셀로 구성되는 복수의 페이지에 대응하는 요청 혹은 명령을 처리하기 위해 데이터를 각 채널 혹은 각 웨이를 통해 분산하여 저장할 경우, 해당 요청 혹은 명령에 대한 동작이 동시에 혹은 병렬로 수행될 수 있다. 이러한 처리 방식 혹은 방법을 인터리빙(interleaving) 방식으로 이해할 수 있다. 실시예에 따라, 메모리 시스템(110)은 메모리 다이(die) 혹은 메모리 플레인(plane) 단위로 인터리빙 방식을 수행하여 데이터 입출력 성능을 향상시킬 수 있다.
실시예에 따라, 컨트롤러(130)는 메모리 장치(150)에 포함된 복수의 메모리 다이들과 연결된 복수의 채널들 또는 웨이들의 상태를 확인할 수 있다. 예컨대, 채널들 또는 웨이들의 상태는 비지(busy) 상태, 레디(ready) 상태, 액티브(active) 상태, 아이들(idle) 상태, 정상(normal) 상태, 비정상(abnormal) 상태 등으로 구분할 수 있다. 또한, 컨트롤러(130)는 메모리 장치(150) 내 복수의 메모리 다이 혹은 복수의 메모리 플레인의 동작 상태를 확인하고, 복수의 데이터 입출력 동작을 스케줄링하여 데이터 입출력 성능을 개선할 수 있다.
메모리 시스템(110) 내 메모리 장치(150)는 복수의 메모리 블록(152, 154, 156)을 포함할 수 있다. 복수의 메모리 블록(152, 154, 156) 각각은 복수의 비휘발성 메모리 셀을 포함한다. 도시되지 않았지만, 실시예에 따라, 복수의 메모리 블록(152, 154, 156) 각각은 3차원(dimension) 입체 스택(stack) 구조를 가질 수 있다.
메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)은, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 구분될 수 있다. 메모리 장치(150)에 포함된 메모리 블록은 하나의 메모리 셀에 1 비트 데이터를 저장하는 비휘발성 메모리 셀들로 구현된 복수의 페이지들을 포함하는 SLC(Single Level Cell, SLC) 메모리 블록, 하나의 메모리 셀에 2 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 더블 레벨 셀(Double Level Cell, DLC), 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 트리플 레벨 셀(Triple Level Cell, TLC), 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 쿼드러플 레벨 셀(Quadruple Level Cell, QLC), 또는 하나의 메모리 셀에 5 비트 또는 그 이상의 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 다중 레벨 셀(multiple level cell) 등을 포함할 수 있다.
실시예에 따라, 컨트롤러(130)는 메모리 시스템(150)에 포함된 멀티 레벨 셀(MLC) 메모리 블록을 하나의 메모리 셀에 1 비트 데이터를 저장하는 SLC 메모리 블록과 같이 운용할 수 있다. 예를 들어, 멀티 레벨 셀(MLC) 메모리 블록의 일부에서 다른 블록에 비하여 더 빠를 수 있는 데이터 입출력 속도를 활용하여, 컨트롤러(130)는 멀티 레벨 셀(MLC) 메모리 블록의 일부를 SLC 메모리 블록으로 운용함으로써 데이터를 임시로 저장하기 위한 버퍼(buffer)로 사용할 수도 있다.
또한, 실시예에 따라, 컨트롤러(130)는 메모리 시스템(150)에 포함된 멀티 레벨 셀(MLC) 메모리 블록에 삭제 동작 없이 복수 번 데이터를 프로그램할 수 있다. 일반적으로, 비휘발성 메모리 셀은 덮어 쓰기(overwrite)를 지원하지 않는 특징을 가지고 있다. 하지만, 멀티 레벨 셀(MLC) 메모리 블록이 멀티 비트 데이터를 저장할 수 있는 특징을 이용하여, 컨트롤러(130)는 비휘발성 메모리 셀에 1비트 데이터를 복수 번 프로그램할 수도 있다. 이를 위해, 컨트롤러(130)는 비휘발성 메모리 셀에 데이터를 프로그램한 횟수를 별도의 동작 정보로 저장할 수 있고, 동일한 비휘발성 메모리 셀에 다시 프로그램하기 전 비휘발성 메모리 셀의 문턱 전압의 레벨을 균일하게 하기 위한 균일화(uniformity) 동작을 수행할 수도 있다.
실시예에 따라, 메모리 장치(150)는 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND 혹은 NOR 플래시 메모리(flash memory), 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 또는 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리 장치로 구현될 수 있다.
도 3은 본 발명의 다른 실시예에 따른 메모리 시스템을 설명한다.
도 3을 참조하면, 호스트(102) 및 메모리 장치(150)와 연동하는 컨트롤러(130)는 호스트 인터페이스(132), 플래시 변환 계층(FTL, 240), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다. 도 3에서 설명하는 플래시 변환 계층(Flash Translation Layer (FTL), 240)의 하나의 실시예로서, 플래시 변환 계층(FTL, 240)은 메모리 시스템(110)의 동작 성능에 따라 다양한 형태로 구현될 수 있다.
호스트 인터페이스(132)은 호스트(102)로부터 전달되는 명령, 데이터 등을 주고받기 위한 것이다. 예를 들어, 호스트 인터페이스 유닛(132)은 호스트(102)로부터 전달되는 명령, 데이터 등을 순차적으로 저장한 뒤, 저장된 순서에 따라 출력할 수 있는 명령큐(56), 명령큐(56)로부터 전달되는 명령, 데이터 등을 분류하거나 처리 순서를 조정할 수 있는 버퍼관리자(52), 및 버퍼관리자(52)로부터 전달된 명령, 데이터 등의 처리를 위한 이벤트를 순차적으로 전달하기 위한 이벤트큐(54)를 포함할 수 있다.
호스트(102)로부터 명령, 데이터는 동일한 특성의 복수개가 연속적으로 전달될 수도 있고, 서로 다른 특성의 명령, 데이터가 뒤 섞여 전달될 수도 있다. 예를 들어, 데이터를 읽기 위한 명령어가 복수 개 전달되거나, 읽기 및 프로그램 명령이 교번적으로 전달될 수도 있다. 호스트 인터페이스(132)은 호스트(102)로부터 전달된 명령, 데이터 등을 명령큐(56)에 먼저 순차적으로 저장한다. 이후, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라 컨트롤러(130)가 어떠한 동작을 수행할 지를 예측할 수 있으며, 이를 근거로 명령, 데이터 등의 처리 순서나 우선 순위를 결정할 수도 있다. 또한, 호스트(102)로부터 전달된 명령, 데이터 등의 특성에 따라, 호스트 인터페이스(132) 내 버퍼관리자(52)는 명령, 데이터 등을 메모리(144)에 저장할 지, 플래시 변환 계층(FTL, 240)으로 전달할 지도 결정할 수도 있다. 이벤트큐(54)는 호스트(102)로부터 전달된 명령, 데이터 등에 따라 메모리 시스템 혹은 컨트롤러(130)가 내부적으로 수행, 처리해야 하는 이벤트를 버퍼관리자(52)로부터 수신한 후, 수신된 순서대로 플래시 변환 계층(FTL, 240)에 전달할 수 있다.
실시예에 따라, 플래시 변환 계층(FTL, 240)은 이벤트규(54)로부터 수신된 이벤트를 관리하기 위한 호스트 요구 관리자(Host Request Manager(HRM), 46), 맵 데이터를 관리하는 맵데이터 관리자(Map Manger(MM), 44), 가비지 콜렉션 또는 웨어 레벨링을 수행하기 위한 상태 관리자(42), 메모리 장치 내 블록에 명령을 수행하기 위한 블록 관리자(48)를 포함할 수 있다. 도 3에서 도시되지 않았지만, 실시예에 따라, 도 2에서 설명한 ECC 유닛(138)은 플래시 변환 계층(FTL, 240)에 포함될 수 있다. 실시예에 따라, ECC 유닛(138)은 컨트롤러(130) 내 별도의 모듈, 회로, 또는 펌웨어 등으로 구현될 수도 있다.
호스트 요구 관리자(HRM, 46)는 맵데이터 관리자(MM, 44) 및 블록 관리자(48)를 사용하여 호스트 인터페이스(132)으로부터 수신된 읽기 및 프로그램 명령, 이벤트에 따른 요청을 처리할 수 있다. 호스트 요구 관리자(HRM, 46)는 전달된 요청의 논리 주소에 해당하는 물리 주소를 파악하기 위해 맵데이터 관리자(MM, 44)에 조회 요청을 보내고, 맵데이터 관리자(MM, 44)는 주소 변환(address translation)을 수행할 수 있다. 호스트 요구 관리자(HRM, 46)는 물리 주소에 대해 메모리 인터페이스 유닛(142)에 플래시 읽기 요청을 전송하여 읽기 요청을 처리할 수 있다. 한편, 호스트 요구 관리자(HRM, 46)는 먼저 블록 관리자(48)에 프로그램 요청을 전송함으로써 미기록된(데이터가 없는) 메모리 장치의 특정 페이지에 데이터를 프로그램한 다음, 맵데이터 관리자(MM, 44)에 프로그램 요청에 대한 맵 갱신(update) 요청을 전송함으로써 논리-물리 주소의 매핑 정보에 프로그램한 데이터에 대한 내용을 업데이트할 수 있다.
여기서, 블록 관리자(48)는 호스트 요구 관리자(HRM, 46), 맵데이터 관리자(MM, 44), 및 상태 관리자(42)가 요청한 프로그램 요청을 메모리 장치(150)를 위한 프로그램 요청으로 변환하여 메모리 장치(150) 내 블록을 관리할 수 있다. 메모리 시스템(110, 도 2 참조)의 프로그램 혹은 쓰기 성능을 극대화하기 위해 블록 관리자(48)는 프로그램 요청을 수집하고 다중 평면 및 원샷 프로그램 작동에 대한 플래시 프로그램 요청을 메모리 인터페이스(142)으로 보낼 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리(예, 인터리빙 동작)를 최대화하기 위해 여러 가지 뛰어난 플래시 프로그램 요청을 메모리 인터페이스(142)으로 전송할 수도 있다.
한편, 블록 관리자(48)는 유효 페이지 수에 따라 플래시 블록을 관리하고 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택 및 지우고, 쓰레기(garbage) 수집이 필요한 경우 가장 적게 유효한 페이지를 포함하고 있는 블록을 선택할 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 수집을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 삭제할 수 있다. 블록 관리자(48)가 상태 관리자(42)에게 삭제될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지의 유효 유무를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 각 유효한 페이지에 대해 블록 관리자(48)에 프로그램 요청을 전송하고, 프로그램 작업이 완료되면 맵 관리자(44)의 갱신을 통해 매핑 테이블이 업데이트될 수 있다.
맵 관리자(44)는 논리-물리 매핑 테이블을 관리하고, 호스트 요구 관리자(HRM, 46) 및 상태 관리자(42)에 의해 생성된 조회, 업데이트 등의 요청을 처리할 수 있다. 맵 관리자(44)는 전체 매핑 테이블을 플래시 메모리에 저장하고, 메모리 소자(144) 용량에 따라 매핑 항목을 캐시할 수도 있다. 조회 및 업데이트 요청을 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스(142)에 읽기 요청을 전송하여 메모리 장치(150)에 저장된 매핑 테이블을 로드(load)할 수 있다. 맵 관리자(44)의 더티 캐시 블록 수가 특정 임계 값을 초과하면 블록 관리자(48)에 프로그램 요청을 보내서 깨끗한 캐시 블록을 만들고 더티 맵 테이블이 메모리 장치(150)에 저장될 수 있다.
한편, 가비지 콜렉션이 수행되는 경우, 상태 관리자(42)가 유효한 페이지를 복사하는 동안 호스트 요구 관리자(HRM, 46)는 페이지의 동일한 논리 주소에 대한 데이터의 최신 버전을 프로그래밍하고 업데이트 요청을 동시에 발행할 수 있다. 유효한 페이지의 복사가 정상적으로 완료되지 않은 상태에서 상태 관리자(42)가 맵 업데이트를 요청하면 맵 관리자(44)는 매핑 테이블 업데이트를 수행하지 않을 수도 있다. 맵 관리자(44)는 최신 맵 테이블이 여전히 이전 실제 주소를 가리키는 경우에만 맵 업데이트를 수행하여 정확성을 보장할 수 있다.
도 4는 도 1~3에서 설명한 컨트롤러의 내부 계층을 설명한다.
도 4를 참조하면, 컨트롤러(130) 내 플래시 변환 계층(Flash Translation Layer (FTL), 240)은 크게 어드레스 변환 계층(Address Translation Layer, ATL), 가상 플래시 계층(Virtual Flash Layer, VFL) 및 플래시 인터페이스 계층(Flash Interface Layer, FIL)으로 구분될 수 있다.
예를 들면, 어드레스 변환 계층(ATL)은 파일 시스템으로부터 전송된 논리 어드레스(LA)을 논리 페이지 어드레스(Logical Page Address)로 변환할 수 있다. 어드레스 변환 계층(ATL)은 논리 어드레스 공간의 어드레스 변환 과정을 수행한다. 즉, 어드레스 변환 계층(ATL)은 호스트에서 전송된 논리 어드레스(LA)에 대하여 플래시 메모리(144)의 논리 페이지 어드레스(LPA)가 맵핑되는 맵핑 정보에 의거하여 어드레스 변환 과정을 수행한다. 이러한 논리 대 논리 어드레스 맵핑 정보(Logical to Logical Address mapping information: 이하 'L2L'이라고 함)들은 메모리 장치(150) 내 맵 데이터를 저장하는 영역에 저장될 수 있다.
가상 플래시 계층(VFL)은 어드레스 변환 계층(ATL)로부터 변환된 논리 페이지 어드레스(LPA)을 가상 페이지 어드레스(Virtual Page Address, VPA)로 변환할 수 있다. 여기서 가상 페이지 어드레스(VPA)는 가상의 플래시 메모리의 물리적 어드레스에 대응할 수 있다. 즉, 가상 페이지 어드레스(VPA)는 도 2에서 설명한 메모리 장치(150) 내 메모리 블록(152, 154, 156)에 대응할 수 있다. 이때, 메모리 장치(150) 내 메모리 블록(152, 154, 156) 중 배드 블록이 있다면 제외될 수 있다. 또한, 가상 플래시 계층(VFL)은 메모리 장치(150)에 저장된 논리 대 가상 어드레스 맵핑 정보(L2V) 및 유저 데이터를 저장하기 위한 데이터 영역 내 맵핑 정보를 복원하기 위한 스캔 영역으로부터 스캔된 정보(Scanned Information)을 이용하여 논리 대 가상 어드레스 맵핑 정보(L2V)을 복원할 수 있는 복원 알고리즘(Recovering Algorithm)은 포함할 수 있다. 가상 플래시 계층(VFL)은 이러한 복원 알고리즘을 통하여 복원된 논리 대 가상 어드레스 맵핑 정보(L2V)을 이용하여 가상 어드레스 공간의 어드레스 변환 과정을 수행할 수 있다.
플래시 인터페이스 계층(FIL)는 가상 플래시 계층(VFL)의 가상 페이지 어드레스(Virtual Page Address)을 메모리 장치(150)의 물리적 페이지 어드레스(Physical Page Address)로 변환한다. 플래시 인터페이스 계층(FIL)은 메모리 장치(150)와의 인터페이싱 동작을 수행하는 위한 로우 레벨 동작을 수행한다. 예를 들어, 메모리 장치(150)의 하드웨어를 제어하기 위한 로우 레벨 드라이버, 메모리 장치(150)로부터 전달된 데이터의 에러를 정정하기 위한 에러 정정코드(Error Correction Code, ECC) 및 베드 블록 관리 모듈(Bad Block Management, BBM) 등의 동작을 수행하는 모듈 혹은 회로들이 플래시 인터페이스 계층(FIL)에 포함될 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 시스템에서 호스트와 메모리 시스템의 읽기 동작을 설명한다. 도 1 내지 도 5를 참조하여, 호스트(102) 내 호스트 메모리(106)에 맵 데이터(166)가 저장된 경우, 호스트(102)가 메모리 시스템(110) 내 데이터를 읽는 동작을 설명한다.
호스트(102)와 메모리 시스템(110)에 전원이 공급되고, 호스트(102)와 메모리 시스템(110)이 연동할 수 있다. 호스트(102)와 메모리 시스템(110)이 연동하면, 메모리 장치(150)에 저장된 맵 데이터(L2P MAP)가 호스트 메모리(106)로 전송될 수 있다.
호스트(102) 내 호스트 프로세서(104)에 의해 읽기 명령이 발생하면, 읽기 명령은 호스트 컨트롤러 인터페이스(108)에 전달된다. 호스트 컨트롤러 인터페이스(108)는 읽기 명령을 수신한 후, 호스트 메모리(106)에 읽기 명령에 대응하는 논리 주소(Logical Address)를 전달한다. 호스트 메모리(106) 내 저장된 맵 데이터(L2P MAP)를 바탕으로, 호스트 컨트롤러 인터페이스(108)는 논리 주소(Logical Address)에 대응하는 물리 주소(Physical Address)를 인지할 수 있다.
호스트 컨트롤러 인터페이스(108)는 물리 주소(Physical Address)와 함께 읽기 명령(Read CMD)을 메모리 시스템(110) 내 컨트롤러(130)에 전달한다. 컨트롤러(130)는 수신된 읽기 명령과 물리 주소를 바탕으로, 메모리 장치(150)를 액세스할 수 있다. 메모리 장치(150) 내 물리 주소에 대응하는 위치에 저장된 데이터는 호스트 메모리(106)로 전달될 수 있다.
비휘발성 메모리 장치를 포함하는 메모리 장치(150)에서 데이터를 읽는 과정은 다른 비휘발성 메모리인 호스트 메모리(106) 등에서 데이터를 읽는 과정에 비해 많은 시간이 소요될 수 있다. 전술한 읽기 과정에는 컨트롤러(130)가 호스트(102)로부터 논리 주소를 수신하여 대응하는 물리 주소를 찾는 과정이 생략될 수 있다. 특히, 컨트롤러(130)가 물리 주소를 찾아내는 과정에서 메모리 장치(150)를 액세스하여 맵 데이터를 읽어내는 동작이 사라질 수 있다. 이를 통해, 호스트(102)가 메모리 시스템(110)에 저장된 데이터를 읽어 내는 과정이 더욱 빨라질 수 있다. 이와 같은 동작을 호스트 퍼포먼스 부스터(HPB: Host Performance Booster)동작이라고 할 수 있다.
도 6은 호스트와 메모리 시스템의 맵 데이터의 동기화 방식을 설명하기 위한 도면이다.
도 6을 설명하기 이전에, 컨트롤러(130)는 내부동작을 수행할 수 있다. 내부 동작은 가비지 콜렉션 동작, 리드 리클레임 동작 및 웨어 레벨링 동작 등을 포함할 수 있다. 본 발명의 일실시예에서는 가비지 콜렉션 동작을 일례로 하여 설명하기로 한다. 컨트롤러(130)는 가비지 콜렉션을 수행할 때마다, 가비지 콜렉션 동작이 수행된 하나 이상의 블록에 저장된 유효데이터에 대응하는 맵 데이터를 업데이트 할 수 있다. 즉, 컨트롤러(130)는 가비지 콜렉션 동작에 의해 하나 이상의 논리적 주소에 대응하는 물리적 주소가 변경됨으로써 최신 물리적 주소로 맵데이터를 업데이트할 수 있다. 그리고 컨트롤러(130)는 맵데이터(166)를 관리하는 과정에서, 호스트(102)에 전달한 맵 데이터(166)를 수정 및 업데이트할 필요가 있다고 판단되면, 메모리 시스템(100)은 호스트(102)에 맵 데이터의 갱신을 요청할 수 있다.
도 6을 참조하면, 컨트롤러(130)는 호스트(102)로부터 쓰기 동작, 리드 동작 또는 삭제 동작을 수행하기 위한 커맨드를 전달받는다(A). 컨트롤러(130)는 커맨드에 대한 응답메시지에 업데이트 된 맵 데이터의 엔트리 정보를 포함하여 호스트(102)에 전송한다(B). 즉, 컨트롤러(130)는 호스트(102)에게 업데이트 되어야 하는 맵 데이터를 알려주기 위해 커맨드에 대한 응답메시지에 포함시켜 전송할 수 있다. 호스트(102)는 컨트롤러(130)로부터 전달받은 응답메시지를 확인한 후, 업데이트 되어야하는 해당 맵 데이터를 요청하는 맵데이터요청커맨드를 컨트롤러(130)에 전달한다(C). 컨트롤러(130)는 호스트(102)로부터 전달받은 맵데이터요청커맨드에 대응하여 업데이트된 맵 데이터를 호스트(102)에 전달한다(D). 호스트(102)는 컨트롤러(130)로부터 전달받은 업데이트된 맵 데이터에 기초하여 호스트메모리(106)에 저장된 맵 데이터를 최신 버전으로 업데이트 할 수 있다(E).
한편, 컨트롤러(130)의 내부동작으로 인해 맵 데이터가 변경될 때마다, 변경된 맵데이터가 호스트 메모리(106)에도 저장되어 있을 경우, 상기와 같은 방식으로 호스트(102)는 컨트롤러(130)로부터 변경된 맵 데이터를 전달받아 호스트 메모리(106)에 저장된 맵 데이터를 업데이트 시켜줘야하는 추가 동작을 수행해야한다. 본 발명에 있어서, 컨트롤러의 가비지 콜렉션에 의해 맵데이터 변경에 따른 호스트 메모리(106)에 저장된 맵데이터(166)의 업데이트 동작을 최소화하기 하기 위해, 컨트롤러에서 가비지 콜렉션 수행 시 호스트 메모리(106)의 맵 데이터와 관련된 희생블록이 선택된 경우, 희생블록에 저장되어 있는 복수의 유효 페이지에 저장되어 있는 유효 데이터를 프리블록으로 옮긴다. 그리고 이레이즈 동작을 통해 희생블록을 프리블록으로 설정한 후, 유효 데이터들 중에서 호스트 메모리(106)에 저장된 맵데이터와 관련된 유효 데이터를 가비지 콜렉션을 수행하기 이전 주소로 다시 이동시킨다. 이와 같은 동작을 수행하였을 때, 컨트롤러(130)는 가비지 콜렉션 동작에 의해 맵 데이터 변경에 따른 변경된 맵 데이터를 호스트(102)에 전달하고, 호스트(102)는 호스트 메모리(106) 내 맵 데이터를 전달받은 최신 맵 데이터로 업데이트시키는 추가 동작이 필요 없게 된다. 즉, 호스트 메모리(106)에 저장된 맵 데이터(166)는 컨트롤러(130)의 가비지 콜렉션 동작에 의해 변경된 맵 데이터로 변경되지 않고 유지될 수 있으며, 호스트(102)와 메모리 시스템(110)의 동기화 동작을 최소화시킬 수 있다. 이와 관련하여, 도 7a 내지 도 7f를 통해 구체적으로 설명하기로 한다.
도 7a 내지 도 7f는 본 발명의 실시예에 따른 메모리 시스템의 데이터 처리 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7f을 참조하면, 메모리 장치는(150)는 복수의 다이(미도시)를 포함할 수 있다. 복수의 다이(미도시) 각각은 복수의 메모리 블록을 포함할 수 있다. 일례로, 복수의 메모리블록은 제0메모리블록(BLK0), 메모리블록(BLK1), 제2메모리블록(BLK2), 제3메모리블록(BLK3), 제4메모리블록(BLK4) 및 제5메모리블록(BLK5)를 포함할 수 있다. 본 발명의 실시예에서는 설명의 편의를 위해 복수의 다이 중 어느 하나의 다이에 포함된 복수의 블록만을 표시하여 설명하기로 하며, 본 발명의 범위가 이에 한정되는 것은 아니다. 복수의 메모리 블록(BLK0 내지 BLK5)은 프리블록, 오픈 또는 액티브 블록 및 소스블록으로 구분될 수 있다. 여기에서, 프리블록은 데이터가 저장되어 있지 않은 블록을 나타내고, 오픈 블록은 데이터가 저장되어 있는 블록으로서 데이터를 라이트할 수 있는 페이지가 남아 있는 블록을 나타내고, 소스블록은 데이터가 저장되어 있는 블록으로서 데이터를 라이트할 수 있는 페이지가 소진된 블록을 나타낸다. 즉, 소스블록에는 라이트할 수 있는 빈 페이지가 없다는 것을 의미한다. 이를 기반으로 가비지 콜렉션관리모듈(135) 및 맵데이터관리모듈(137)의 프로세스에 대해 설명하기로 한다.
도 7a 내지 도 7f를 참조하면, 가비지 콜렉션관리모듈(135)은 가비지 콜렉션수행여부판단부(135a) 및 가비지 콜렉션부(135b)를 포함할 수 있다. 그리고, 가비지 콜렉션부(135b)는 희생블록관리부(135b-1), 제1마이그레이션부(135b-2), 프리블록설정부(135b-3) 및 제2마이그레이션부(135b-4)를 포함할 수 있다.
먼저 도 7a를 참조하면, 가비지 콜렉션수행여부판단부(135a)는 일정 주기마다 프리블록개수(Free Block Count, FBC)를 기반으로 가비지 콜렉션수행여부를 판단한다. 즉, 가비지 콜렉션수행여부판단부(135a)는 프리블록개수(FBC)가 소정의 제1임계값(TH1) 미만인지 확인하여 가비지 콜렉션 수행 여부를 판단할 수 있다. 소정의 제1임계값(TH1)은 컨트롤러(130)가 하나 이상의 프리블록을 확보해야 할 시점을 판단하기 위한 최소프리블록개수이다. 소정의 제1임계값(TH1)은 미리 정해진 값일 수 있으며, 메모리 시스템(110)의 동작 조건에 따라 최소프리블록개수는 가변될 수 있다. 가비지 콜렉션수행여부판단부(135a)는 프리블록개수(FBC)가 제1임계값(TH1) 이상이라고 판단한 경우(FBC>=TH1), 가비지 콜렉션을 수행하지 않으며, 일정주기마다 다시 프리블록개수(FBC)를 기반으로 가비지 콜렉션수행여부를 판단한다. 반면, 가비지 콜렉션수행여부판단부(135a)는 프리블록개수(FBC)가 제1임계값(TH1) 미만이라고 판단한 경우, 가비지 콜렉션 동작을 수행하기 위한 이벤트가 발생하였기에 가비지 콜렉션 수행 모드로 진입한다. 이와 같이, 가비지 콜렉션 이벤트가 발생한 경우, 가비지 콜렉션 수행부(135b)를 통해 가비지 콜렉션을 수행할 수 있다. 일례로, 최소프리블록개수가 '3'개로 설정되었을 경우, 메모리 장치(150) 내에 포함된 복수의 메모리 블록(BLK0~BLK5) 중에서 프리블록개수는 2개이기 때문에, 가비지 콜렉션 수행 모드로 진입하여 가비지 콜렉션을 수행할 수 있다.
도 7b를 참조하면, 희생블록관리부(135b-1)는 가비지 콜렉션을 수행하기 위해 복수의 소스블록 중에 희생블록을 선택할 수 있다. 구체적으로, 희생블록관리부(135b-1)는 복수의 메모리 블록에 포함된 복수의 소스블록 중에서 유효페이지개수가 소정의 제2임계값(TH2) 이하인 소스블록을 희생블록으로 선택할 수 있다. 즉, 희생블록관리부(135b-1)는 복수의 소스블록 중에서 무효한 페이지 개수가 제2임계값(TH2) 초과인 소스블록을 가비지 콜렉션 처리를 위한 희생블록으로 선택할 수 있다. 일례로, 제2임계값(TH2)이 '3'개인 경우라고 했을 때, 각 소스 블록의 유효 페이지 개수가 3개 이하인 유효페이지 개수를 갖는 소스블록을 희생블록으로 선택할 수 있다. 확인 결과, '3개' 이하인 유효페이지 개수를 갖는 소스블록은 제0 메모리 블록, 제1메모리 블록 및 제3메모리 블록을 포함할 수 있다. 따라서, 제0메모리 블록, 제1메모리 블록 및 제3메모리 블록이 희생블록으로 선택될 수 있다. 이하 설명의 편의를 위해, 제0 메모리 블록, 제1메모리 블록 및 제3메모리 블록을 제0희생블록, 제1희생블록 및 제3희생블록으로 표기하기로 한다.
그리고, 희생블록관리부(135b-1)는 선택된 희생블록 중에서 호스트 메모리(106) 내 맵데이터(166)와 관련된 희생블록이 존재하는지 확인할 수 있다. 구체적으로, 희생블록관리부(135b-1)는 호스트맵데이터관련블록리스트(160)에 선택된 희생블록이 포함되어 있는지 확인하여 호스트 메모리(106) 내 맵데이터(166)와 관련된 희생블록이 존재하는지 확인할 수 있다. 호스트 맵데이터 관련블록리스트(160)는 호스트 메모리(106) 내 맵데이터(166)와 관련된 하나 이상의 메모리 블록 정보를 포함할 수 있다. 일례로, 호스트 맵데이터 관련블록리스트(160)는 제0메모리 블록, 제1메모리 블록, 제8메모리 블록 및 제9메모리 블록 정보를 포함할 수 있다. 상기 호스트 메모리(106) 내 맵데이터(166)와 관련된 희생블록이 존재하는지 확인하는 이유는 호스트 메모리(106) 내 맵데이터(166)와 관련된 희생블록에 저장된 유효데이터 중에서 호스트 메모리(106) 내 맵데이터(166)와 관련된 유효데이터를 임시대상블록으로 옮긴 후, 가비지 콜렉션을 수행하기 이전에 저장되어 있었던 위치로 다시 옮기기 위해서이다. 일례로, 희생블록관리부(135b-1)는 제0희생블록, 제1희생블록 및 제3희생블록에 대한 정보가 호스트맵데이터관련블록리스트(160)에 포함되어 있는지 확인한다. 확인 결과, 호스트맵데이터관련블록리스트(160)에 제0희생블록 및 제1희생블록에 대한 정보가 포함되어 있음을 알 수 있다. 따라서, 제0희생블록 및 제1희생블록은 호스트 메모리 내 맵데이터와 관련된 메모리 블록임을 알 수 있다.
한편, 희생블록관리부(135b-1)는 복수의 희생블록이 호스트 메모리(106) 내 맵 데이터(166)와 관련이 없을 경우, 제1마이그레이션부를 통해 희생블록에 저장된 유효데이터를 프리블록으로 복사한다.
도 7c를 참조하면, 제1마이그레이션부(135b-2)는 호스트 메모리(106) 내 맵데이터와 관련된 희생블록에 저장된 하나 이상의 유효 데이터를 임시대상블록의 프리페이지로 임시로 옮겨 저장할 수 있다. 임시대상블록은 복수의 프리블록 중 어느 하나를 선택하여 설정될 수 있다. 일례로, 제1마이그레이션부(135b-2)는 프리블록인 제2메모리블록 및 제4메모리 블록 중에서 제2메모리 블록을 임시대상블록으로 선택한 후, 제0희생블록 및 제1희생블록에 저장된 복수의 유효데이터를 임시대상블록으로 임시로 옮겨 저장할 수 있다. 즉, 제0희생블록의 제0페이지에 저장된 유효데이터 및 제1희생블록의 제2페이지, 제4페이지 및 제5페이지에 저장된 유효데이터를 임시대상블록으로 설정된 제2메모리블록(BLK2)으로 임시로 이동시켜 저장할 수 있다.
그리고, 제1마이그레이션부(135b-2)는 맵 데이터 관리 모듈(137)에게 호스트 메모리(106)내 맵데이터(166)와 관련된 희생 블록에 저장되어 있었던 복수의 유효 데이터 각각에 대응하는 제1맵데이터 및 이에 대응하여 임시대상블록으로 마이그레이션된 유효 데이터의 제2맵데이터를 메모리(144) 내 유효데이터관리리스트(170)에 업데이트하라고 요청할 수 있다.
맵 데이터 관리 모듈(137)은 제1마이그레이션부(135b-2)로부터 유효데이터관리리스트 업데이트 요청을 전달받으면, 유효데이터관리리스트(170)에 호스트 메모리(106) 내 맵 데이터(166)와 관련된 희생블록에 저장된 유효 데이터의 맵 데이터를 제1맵데이터에 저장하고, 제1맵 데이터에 대응하여 임시대상블록에 저장된 유효 데이터의 맵데이터, 즉, 제1맵데이터에 대응하는 유효데이터가 상기 임시대상블록으로 옮겨져 저장된 주소를 나타내는 맵데이터를 제2맵데이터에 저장한다.
이와 같이, 유효 데이터 관리 리스트(170)에 제1맵데이터와 제2맵데이터를 저장하는 이유는, 호스트 메모리(106) 내 맵데이터(166)와 관련된 유효데이터들은 가비지 콜렉션을 수행하기 이전 주소로 다시 마이그레이션 시켜 호스트 메모리(106) 내 맵데이터를 업데이트 시키지 않기 위해서이다. 일례로, 맵 데이터 관리 모듈(137)은 메모리(144) 내 유효데이터관리리스트(170)에 희생블록의 유효데이터와 관련된 맵데이터인 논리주소와 물리주소(블록: 페이지,이하 생략)과 이에 대응하여 변경된 유효데이터의 주소를 나타내는 임시대상블록의 유효데이터와 관련된 맵데이터인 논리주소와 물리주소를 저장할 수 있다. 물리주소와 함께 논리주소를 저장하는 이유는, 유효데이터에 대응하는 맵데이터가 호스트 메모리 내 맵데이터에 저장되어 있는지 확인하기 위해서이다. 일례로, 유효데이터관리리스트(170)를 살펴보면, 제0인덱스의 제1맵데이터에는, 논리주소(LBA) 0과 물리주소(PBA) 0:0(Block:Page)을 저장하고, 이에 대응하여 제2맵데이터에는 논리주소0과 물리주소 2:0를 저장할 수 있다. 제1인덱스의 제1맵데이터에는, 논리주소(LBA) 1과 물리주소(PBA) 1:2(Block:Page)을 저장하고, 이에 대응하여 제2맵데이터에는 논리주소1과 물리주소 2:1을 저장할 수 있다. 제2인덱스의 제1맵데이터에는, 논리주소(LBA) 2와 물리주소(PBA) 1:4(Block:Page)를 저장하고, 이에 대응하여 제2맵데이터에는 논리주소2와 물리주소 2:2를 저장할 수 있다. 제3인덱스의 제1맵데이터에는, 논리주소(LBA) 10과 물리주소(PBA) 1:5(Block:Page)를 저장하고, 이에 대응하여 제2맵데이터에는 논리주소 10과 물리주소 2:3을 저장할 수 있다.
도 7d를 참조하면, 프리블록설정부(135b-3)는 복수의 희생블록 중에서 임시대상블록으로 이동한 유효데이터가 포함된 희생블록에 대해 제1소거 처리한 후 해당 희생블록을 프리블록으로 설정할 수 있다. 일례로, 프리블록설정부(135b-3)는 제0희생블록 및 제1희생블록에 포함된 모든 페이지를 소거 처리한 후, 제0프리블록 및 제1프리블록으로 설정할 수 있다.
도 7e를 참조하면, 제2마이그레이션부(135b-4)는 임시대상블록에 저장된 복수의 유효 데이터 중에서 호스트 메모리(106) 내 맵 데이터(166)와 관련된 유효데이터를 가비지 콜렉션을 수행하기 이전에 저장되었던 주소에 대응하는 블록을 대상블록으로 설정하여 제2마이그레이션 시킨다. 즉, 제2마이그레이션부(135b-4)는 임시대상블록에 저장된 복수의 유효 데이터 중에서 호스트 메모리(106) 내 맵 데이터(166)와 관련된 유효데이터를 확인하기 위해, 유효데이터관리리스트(170)에 저장한 복수의 제1맵데이터 중에서 호스트 메모리(106) 내 맵 데이터(166)에 포함되어 있는 제1맵데이터를 확인한 후, 해당 제1맵데이터에 대응하는 제2맵데이터를 확인한다. 확인된 제2맵데이터에 저장된 유효데이터를 제2맵데이터에 대응하는 제1맵데이터로 이동시켜 저장할 수 있다. 이때, 제1맵데이터에 포함된 메모리 블록이 대상블록으로 설정된다. 일례로, 유효데이터관리리스트(170)에 포함된 복수의 제1맵데이터 중에서 제0인덱스, 제1인덱스, 제2인덱스의 제1맵데이터가 호스트 메모리 내 맵데이터에 포함되어 있을 경우, 이에 대응하는 제2맵데이터에 저장된 유효데이터를 가비지 콜렉션을 수행하기 이전에 저장되어 있었던, 즉 임시대상블록으로 옮기기 이전 주소인 제1맵데이터를 참조하여 해당 블록으로 다시 이동하여 저장할 수 있다.
그리고, 제2마이그레이션부(135b-4)는 호스트 메모리 내 맵 데이터(166)와 관련없는 희생블록에 저장된 유효데이터 및 임시대상블록에 저장된 복수의 유효데이터 중에서 호스트 메모리 내 맵 데이터와 관련없는 유효데이터를 대상블록에 남아 있는 프리페이지로 이동하여 저장할 수 있다. 이때, 대상블록이 복수개일 경우, 메모리 블록 번호 순서에 따라 정해질 수 있다. 일례로, 호스트 메모리 내 맵 데이터(166)와 관련없는 희생블록인 제3희생블록에 저장된 유효데이터들과 임시대상블록에서 제3유효페이지에 저장된 유효데이터를 제0대상블록으로 이동하여 저장할 수 있다.
도 7e를 참조하면, 프리블록설정부(135b-3)는 임시대상블록 및 호스트 메모리 내 맵 데이터(166)와 관련없는 희생블록에 대해 제2소거 처리하여 프리블록으로 설정할 수 있다. 일례로, 프리블록설정부(135b-3)는 임시대상블록인 제2메모리블록 및 제3희생블록에 포함된 모든 페이지를 소거 처리한 후, 제2프리블록 및 제3프리블록으로 설정할 수 있다.
이와 같이 동작할 경우, 호스트 메모리 내 맵데이터(166)와 관련없는 유효데이터의 맵데이터만 업데이트 시키면 되기 때문에 호스트 메모리 내 맵데이터를 변경하지 않을 수 있어 호스트와의 동기화를 최소화시킬 수 있다.
도 8항은 본 발명의 실시예에 있어서 메모리 시스템의 동작방법을 설명하기 위한 도면이다.
S801단계에 있어서, 컨트롤러(130)는 가비지 콜렉션을 수행하기 위해, 복수의 메모리 블록 중에서 복수의 희생 블록을 선택할 수 있다. 즉, 컨트롤러는 복수의 메모리 블록에 포함된 복수의 소스블록 중에서 유효페이지개수가 소정의 임계값 이하인 소스블록을 희생블록으로 선택하여 가비지 콜렉션을 수행할 수 있다.
S803단계에 있어서, 컨트롤러(130)는 복수의 희생블록 중에서 호스트 메모리(106)에 저장된 맵데이터(166)와 관련된 하나 이상의 제1희생블록에 포함된 하나 이상의 유효 데이터를 임시대상블록으로 옮겨 저장할 수 있다. 즉, 컨트롤러(130)는 호스트 메모리(106)에 저장된 맵데이터와 관련된 하나 이상의 메모리 정보를 포함하는 호스트맵데이터관련블록리스트를 참조하여 복수의 희생블록 중에서 호스트 메모리(106)에 저장된 맵데이터와 대응하는 제1희생블록을 확인할 수 있다. 확인 결과, 복수의 희생 블록 중에서 호스트맵데이터관련블록리스트의 메모리 블록 정보에 대응하는 제1희생블록이 존재하는 경우, 제1희생블록에 저장된 하나 이상의 유효데이터를 임시대상블록으로 옮겨 저장할 수 있다.
반면에, 복수의 희생 블록 중에서 호스트맵데이터관련블록리스트의 메모리 블록 정보에 대응하는 제1희생블록이 존재하지 않는 경우, 컨트롤러(130)는 복수의 프리블록 중에서 어느 하나의 프리 블록을 선택한 후, 선택된 프리블록을 대상블록으로 설정하여 복수의 희생블록에 저장된 하나 이상의 유효데이터를 대상블록으로 복사하여 저장한다. 그리고, 컨트롤러(130)는 유효데이터의 변경된 맵데이터를 업데이트한다.
S805단계에 있어서, 컨트롤러(130)는 메모리에 포함된 유효데이터관리리스트에 제1희생블록에 저장된 하나 이상의 유효 데이터 각각에 대응하는 제1맵데이터 및 제1맵데이터에 대응하는 유효데이터가 임시대상블록으로 옮겨져 저장된 주소를 나타내는 제2맵데이터를 업데이트할 수 있다.
S807단계에 있어서, 컨트롤러(130)는 하나 이상의 제1희생블록에 대해 소거처리하여 대상블록으로 설정할 수 있다.
S809단계에 있어서, 컨트롤러는(130) 임시대상블록에 저장된 유효데이터 중에서 호스트메모리(106)에 저장된 맵데이터(166)와 관련된 제1유효데이터를 제1맵데이터를 참조하여 대상블록으로 옮겨 저장할 수 있다. 즉, 컨트롤러(130)는 유효데이터관리리스트에 저장된 하나 이상의 제1맵데이터 중에서 호스트 메모리(106)에 저장된 맵데이터(166)와 대응하는 제1맵데이터를 확인한다. 그리고 컨트롤러(130)는 확인된 제1맵데이터에 대응하는 제2맵데이터에 저장된 제1유효데이터를 대상블록으로 옮기되, 제1유효데이터에 대응하는 제1맵데이터가 가리키는 주소로 옮겨 저장할 수 있다. 이와 같이, 수행할 경우, 호스트 메모리(106)에 저장된 맵데이터(166)에 대해 업데이트를 수행하지 않을 수 있어 호스트와 메모리 시스템의 동기화를 최소화시킬 수 있다.
S811단계에 있어서, 컨트롤러(130)는 임시대상블록에 저장된 복수의 유효데이터 중에서 제1유효데이터를 제외한 나머지 유효데이터인 제2유효데이터 및 복수의 희생블록 중에서 제1희생블록을 제외한 나머지 희생블록에 저장된 유효데이터를 대상블록의 나머지 페이지로 옮겨 저장할 수 있다.
S813단계에 있어서, 컨트롤러(130)는 대상블록에 저장된 복수의 유효데이터들 중에서 상기 호스트에 저장된 맵데이터와 관련없는 유효데이터에 대응하는 맵데이터만 업데이트 할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 복수의 메모리 블록을 포함하는 메모리 장치; 및
    가비지 콜렉션 수행을 위해, 상기 복수의 메모리 블록 중에서 선택한 상기 복수의 희생블록 중에서 외부장치에 저장된 맵데이터와 관련된 제1희생블록이 포함된 경우, 상기 제1희생블록에 저장된 하나 이상의 유효데이터를 프리블록인 임시대상블록에 저장하고, 상기 제1희생블록을 소거 처리하여 제1대상블록으로 설정한 후, 상기 임시대상블록에 저장된 하나 이상의 유효데이터 중에서 상기 외부장치에 저장된 맵 데이터에 대응하는 제1유효데이터를 상기 제1대상블록으로 옮기되, 상기 제1희생블록에 저장되어 있었던 동일한 위치로 복사하여 저장하는 컨트롤러
    를 포함하는 메모리 시스템
  2. 제1항에 있어서,
    상기 컨트롤러는,
    호스트맵데이터관련블록리스트를 통해 상기 복수의 희생 블록 중에서 외부장치에 저장된 맵데이터와 관련된 제1희생블록을 확인하는 메모리 시스템.
  3. 제2항에 있어서,
    상기 호스트맵데이터관련블록리스트는
    상기 외부장치에 저장된 맵데이터와 관련된 하나 이상의 메모리 블록 정보를 포함하는 메모리 시스템.
  4. 제2항에 있어서,
    상기 컨트롤러는
    상기 복수의 희생블록 중에서 상기 외부장치에 저장된 맵 데이터와 관련있는 제1희생블록이 없을 경우, 상기 복수의 프리블록 중에서 어느 하나의 프리 블록을 선택한 후, 선택된 프리블록을 제2대상블록으로 설정하여, 상기 복수의 희생블록에 저장된 하나 이상의 유효데이터를 상기 제2대상블록으로 복사하여 저장하는 메모리 시스템.
  5. 제 1항에 있어서,
    상기 컨트롤러는
    상기 제1희생블록에 저장된 복수의 유효 데이터 각각에 대응하는 맵데이터를 나타내는 제1맵데이터 및 상기 제1맵데이터에 대응하는 유효데이터가 상기 임시대상블록으로 옮겨져 저장된 주소를 나타내는 제2맵데이터를 유효데이터관리리스트에 저장하고 관리하는 메모리 시스템.
  6. 제1항에 있어서,
    상기 컨트롤러는
    상기 제1희생블록에 대해 제1소거 처리하여 프리블록으로 설정한 후, 상기 프리블록을 상기 임시대상블록 및 상기 제1희생블록을 제외한 나머지 희생블록에 저장된 유효데이터를 저장할 수 있는 상기 제1대상블록으로 설정하는 메모리 시스템.
  7. 제5항에 있어서,
    상기 컨트롤러는
    상기 하나 이상의 제1맵데이터 중에서 상기 외부장치에 저장된 맵데이터에 포함된 제1맵데이터의 유효데이터를 상기 제1맵데이터에 대응하는 제1대상블록의 프리페이지로 옮겨 저장하는 메모리 시스템.
  8. 제7항에 있어서,
    상기 컨트롤러는
    상기 외부장치에 저장된 맵데이터에 포함된 제1맵데이터의 유효데이터를 상기 제1맵데이터에 대응하는 제1대상블록의 프리페이지로 옮긴 후에, 상기 제1맵데이터 중에서 상기 외부장치에 저장된 맵데이터에 포함되지 않은 제1맵데이터의 유효데이터 및 상기 복수의 희생블록 중에서 제1희생블록을 제외한 나머지 희생블록에 저장된 유효데이터들을 상기 제1대상블록에서 남아있는 프리페이지에 저장하는 메모리 시스템.
  9. 제 1항에 있어서,
    상기 컨트롤러는
    상기 임시대상블록 및 상기 복수의 희생 블록 중 상기 제1희생블록을 제외한 나머지 희생블록에 대해 제2소거 처리하여 프리블록으로 설정하는 메모리 시스템.
  10. 제 1항에 있어서,
    상기 컨트롤러는
    상기 제1대상블록에 저장된 복수의 유효데이터들 중에서 상기 외부장치에 저장된 맵데이터와 관련없는 유효데이터에 대응하는 맵데이터만 업데이트시키는 메모리 시스템.
  11. 제2항에 있어서,
    상기 컨트롤러는
    상기 복수의 희생블록 중에서 상기 외부장치에 저장된 맵 데이터와 관련있는 제1희생블록이 없을 경우, 상기 복수의 프리블록 중에서 어느 하나의 프리 블록을 선택한 후, 선택된 프리블록을 제2대상블록으로 설정하여, 상기 복수의 희생블록에 저장된 하나 이상의 유효데이터를 상기 제2대상블록으로 복사하여 저장한 후 상기 제2대상블록에 저장된 유효데이터의 맵데이터를 업데이트하는 메모리 시스템.
  12. 제1항에 있어서,
    상기 컨트롤러는
    상기 복수의 메모리 블록에 포함된 복수의 소스블록 중에서 유효페이지개수가 소정의 임계값 이하인 소스블록을 복수의 희생블록으로 선택하는 메모리 시스템.
  13. 복수의 메모리 블록 중에서 복수의 희생블록을 선택하는 단계;
    상기 복수의 희생블록 중에서 호스트에 저장된 맵데이터와 관련된 하나 이상의 제1희생블록에 저장된 하나 이상의 유효데이터를 임시대상블록으로 옮기는 단계;
    상기 제1희생블록에 포함된 하나 이상의 유효데이터를 상기 임시대상블록으로 옮긴 후에, 상기 제1희생블록에 대해 소거 처리하여 대상블록으로 설정하는 단계;
    상기 임시대상블록에 저장된 하나 이상의 유효데이터 중에서 상기 호스트에 저장된 맵데이터와 관련된 제1유효데이터를 확인하여, 상기 제1유효데이터에 대응하여 상기 제1유효데이터가 상기 임시대상블록으로 옮기기 전에 저장되어 있었던 이전 맵데이터를 확인하는 단계; 및
    상기 제1유효데이터를 상기 이전 맵데이터가 가리키는 상기 대상 블록의 프리페이지로 옮겨 저장하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  14. 제13항에 있어서,
    상기 복수의 메모리 블록 중에서 복수의 희생블록을 선택하는 단계에 있어서,
    상기 복수의 메모리 블록에 포함된 복수의 소스블록 중에서 유효페이지개수가 소정의 임계값 이하인 소스블록을 희생블록으로 선택하는 메모리 시스템.
  15. 제13항에 있어서,
    상기 복수의 희생블록 중에서 호스트에 저장된 맵데이터와 관련된 하나 이상의 제1희생블록에 저장된 하나 이상의 유효데이터를 임시대상블록으로 옮기는 단계에 있어서,
    호스트맵데이터관련블록리스트에 포함된 호스트에 저장된 맵데이터와 관련된 하나 이상의 메모리 블록 정보를 이용하여 상기 선택된 복수의 희생블록과 대응하는 메모리 블록 정보가 포함되어 있는지 확인하는 단계; 및
    확인 결과, 상기 복수의 희생 블록 중에서 호스트맵데이터관련블록리스트에 포함된 메모리 블록 정보와 대응하는 제1희생블록이 존재하는 경우, 상기 제1희생블록에 저장된 하나 이상의 유효데이터를 상기 임시대상블록으로 옮기는 단계
    를 포함하는 메모리 시스템 동작 방법.
  16. 제15항에 있어서,
    상기 호스트맵데이터관련블록리스트에 포함된 호스트에 저장된 맵데이터와 관련된 하나 이상의 메모리 블록 정보를 이용하여 상기 선택된 복수의 희생블록과 대응하는 메모리 블록 정보가 포함되어 있는지 확인하는 단계에 있어서,
    확인 결과, 상기 복수의 희생 블록 중에서 호스트맵데이터관련블록리스트에 포함된 메모리 블록 정보와 대응하는 제1희생블록이 존재하지 않는 경우, 상기 복수의 프리블록 중에서 어느 하나의 프리 블록을 선택한 후, 선택된 프리블록을 대상블록으로 설정하여, 상기 복수의 희생블록에 저장된 하나 이상의 유효데이터를 상기 대상블록으로 복사하여 저장한 후, 상기 유효데이터의 변경된 맵데이터를 업데이트하는 메모리 시스템의 동작 방법.
  17. 제15항에 있어서,
    상기 제1희생블록에 포함된 하나 이상의 유효데이터를 상기 임시대상블록으로 옮긴 이후에,
    상기 제1희생블록에 포함된 하나 이상의 유효데이터를 상기 임시대상블록으로 옮긴 후에,상기 제1희생블록에 저장된 복수의 유효 데이터 각각에 대응하는 맵데이터를 나타내는 제1맵데이터 및 상기 제1맵데이터에 대응하는 유효데이터가 상기 임시대상블록으로 옮겨져 저장된 주소를 나타내는 제2맵데이터를 유효데이터관리리스트에 저장하는 메모리 시스템 동작 방법.
  18. 제17항에 있어서,
    상기 임시대상블록에 저장된 하나 이상의 유효데이터 중에서 상기 호스트에 저장된 맵데이터와 관련된 제1유효데이터를 확인하는 단계에 있어서,
    상기 유효데이터관리리스트에 저장된 하나 이상의 제1맵데이터 중에서 상기 호스트에 저장된 맵데이터와 대응하는 제1맵데이터를 확인한 후 제1맵데이터에 대응하는 제2맵데이터를 통해 제1유효데이터를 확인하는 메모리 시스템의 동작 방법.
  19. 제13항에 있어서,
    상기 임시대상블록에 저장된 하나 이상의 유효 데이터 중에서 상기 호스트에 저장된 맵데이터와 관련없는 제2유효데이터 및 상기 복수의 희생블록 중 제1희생블록을 제외한 나머지 희생블록에 포함된 하나 이상의 유효데이터는 상기 대상블록에서 상기 제1유효데이터를 저장하고 남아있는 프리페이지에 저장하는 메모리시스템의 동작 방법.
  20. 제19항에 있어서,
    상기 대상블록에서 상기 호스트에 저장된 맵데이터와 관련되지 않은 유효데이터들에 대응하는 맵데이터만 업데이트하는 메모리 시스템의 동작 방법.
KR1020220133233A 2022-10-17 2022-10-17 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법 KR20240053298A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220133233A KR20240053298A (ko) 2022-10-17 2022-10-17 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법
US18/104,295 US20240126462A1 (en) 2022-10-17 2023-02-01 Apparatus and method for managing map data between host and memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220133233A KR20240053298A (ko) 2022-10-17 2022-10-17 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20240053298A true KR20240053298A (ko) 2024-04-24

Family

ID=90626316

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220133233A KR20240053298A (ko) 2022-10-17 2022-10-17 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법

Country Status (2)

Country Link
US (1) US20240126462A1 (ko)
KR (1) KR20240053298A (ko)

Also Published As

Publication number Publication date
US20240126462A1 (en) 2024-04-18

Similar Documents

Publication Publication Date Title
US10817418B2 (en) Apparatus and method for checking valid data in memory system
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
US20210279180A1 (en) Apparatus and method for controlling map data in a memory system
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20200016074A (ko) 데이터 처리 시스템 및 그의 동작 방법
CN113495852A (zh) 控制存储器系统中的映射数据的设备和方法
US11507501B2 (en) Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
KR20200016076A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11704281B2 (en) Journaling apparatus and method in a non-volatile memory system
US20210365183A1 (en) Apparatus and method for increasing operation efficiency in data processing system
KR20230147950A (ko) 시스템 내 전원 손실 데이터 보호를 위한 장치 및 방법
US11941289B2 (en) Apparatus and method for checking an error of a non-volatile memory device in a memory system
KR20230035811A (ko) 데이터 처리 시스템 내 공유된 메모리 공간을 제어하기 위한 장치 및 방법
KR20230056901A (ko) 메모리 장치에 데이터를 프로그램하는 장치 및 방법
KR20210114718A (ko) 리드 동작을 수행하는 메모리 시스템 및 메모리 시스템의 동작방법
KR20220032826A (ko) 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법
KR20240053298A (ko) 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법
US11893269B2 (en) Apparatus and method for improving read performance in a system
US11854657B2 (en) Memory device and memory system supporting interleaving operation and operation method thereof
US11775426B2 (en) Apparatus and method for securing a free memory block in a memory system
US20240118809A1 (en) Apparatus and method for sharing data between a host and a memory system
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
KR20240008046A (ko) 비휘발성 메모리 장치의 프로그램 상태에 대응하여 데이터를 읽는 장치 및 방법
KR20230072886A (ko) 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법