KR20220075945A - 메모리 시스템 및 그것의 동작 방법 - Google Patents

메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20220075945A
KR20220075945A KR1020200164592A KR20200164592A KR20220075945A KR 20220075945 A KR20220075945 A KR 20220075945A KR 1020200164592 A KR1020200164592 A KR 1020200164592A KR 20200164592 A KR20200164592 A KR 20200164592A KR 20220075945 A KR20220075945 A KR 20220075945A
Authority
KR
South Korea
Prior art keywords
update table
update
entries
segments
memory
Prior art date
Application number
KR1020200164592A
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 KR1020200164592A priority Critical patent/KR20220075945A/ko
Priority to US17/315,942 priority patent/US11379362B2/en
Priority to CN202110693637.3A priority patent/CN114579474A/zh
Publication of KR20220075945A publication Critical patent/KR20220075945A/ko

Links

Images

Classifications

    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

메모리 시스템의 동작 방법은 메모리 시스템의 동작 방법은 이전 맵 관리 동작이 완료된 이후부터 생성된 P2L 엔트리들에 근거하여 맵 관리 동작이 트리거된 것으로 결정하되, 상기 P2L 엔트리들은 저장 매체의 메모리 영역의 물리 어드레스들에 대응하는, 단계; 상기 저장 매체의 라이트 동작이 완료되었는지와 무관하게, 상기 P2L 엔트리들에 근거하여 상기 메모리 영역에 대응하는 프리 업데이트 테이블을 생성하되, 상기 프리 업데이트 테이블은 모든 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 포함하고, 각 프리 업데이트 상태는 대응하는 L2P 세그먼트가 상기 P2L 엔트리들에 포함된 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타내는, 단계; 상기 라이트 동작이 완료된 뒤 상기 P2L 엔트리들에 근거하여 L2P 엔트리들을 업데이트하는 단계; 및 상기 L2P 엔트리들을 업데이트한 뒤, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하는 단계를 포함한다.

Description

메모리 시스템 및 그것의 동작 방법{MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것으로, 더욱 상세하게는 비휘발성 메모리 장치를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템은 호스트 장치의 라이트 요청에 응답하여, 호스트 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템은 호스트 장치의 리드 요청에 응답하여, 저장된 데이터를 호스트 장치로 제공하도록 구성될 수 있다. 호스트 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 메모리 시스템은 호스트 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 호스트 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는 맵 관리 동작을 효율적으로 수행하는 메모리 시스템 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 메모리 시스템의 동작 방법은 이전 맵 관리 동작이 완료된 이후부터 생성된 P2L 엔트리들에 근거하여 맵 관리 동작이 트리거된 것으로 결정하되, 상기 P2L 엔트리들은 저장 매체의 메모리 영역의 물리 어드레스들에 대응하는, 단계; 상기 저장 매체의 라이트 동작이 완료되었는지와 무관하게, 상기 P2L 엔트리들에 근거하여 상기 메모리 영역에 대응하는 프리 업데이트 테이블을 생성하되, 상기 프리 업데이트 테이블은 모든 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 포함하고, 각 프리 업데이트 상태는 대응하는 L2P 세그먼트가 상기 P2L 엔트리들에 포함된 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타내는, 단계; 상기 라이트 동작이 완료된 뒤 상기 P2L 엔트리들에 근거하여 L2P 엔트리들을 업데이트하는 단계; 및 상기 L2P 엔트리들을 업데이트한 뒤, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템의 동작 방법은 저장 매체의 메모리 영역의 물리 어드레스들에 각각 대응하는 P2L 엔트리들을 생성하되, 상기 P2L 엔트리들은 상기 물리 어드레스들에 각각 맵핑된 논리 어드레스들을 포함하는, 단계; 맵 관리 동작이 트리거될 때, 상기 저장 매체가 라이트 동작을 수행하는 동안, 모든 L2P 세그먼트들 중에서 상기 논리 어드레스들에 각각 대응하는 L2P 엔트리들을 포함하는 제1 L2P 세그먼트들에 대응하는 프리 업데이트 상태들을 제1 상태로 셋팅하고 상기 모든 L2P 세그먼트들 중에서 상기 제1 L2P 세그먼트들을 제외한 제2 L2P 세그먼트들에 대응하는 프리 업데이트 상태들을 제2 상태로 셋팅함으로써, 프리 업데이트 테이블을 생성하는, 단계; 및 상기 라이트 동작이 완료된 뒤, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 맵 관리 동작이 트리거될 때, 이전 맵 관리 동작이 완료된 이후부터 생성된 P2L 엔트리들에 근거하여 L2P 엔트리들을 업데이트하도록 구성되되, 상기 P2L 엔트리들은 저장 매체의 메모리 영역의 물리 어드레스들에 각각 맵핑된 논리 어드레스들을 포함하고, 상기 L2P 엔트리들은 상기 논리 어드레스들에 각각 맵핑된 상기 물리 어드레스들을 포함하는, L2P 업데이트부; 상기 L2P 엔트리들이 업데이트되기 전에, 모든 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 포함하는 프리 업데이트 테이블을 생성하도록 구성되되, 상기 프리 업데이트 상태들 중 상기 업데이트될 L2P 엔트리들을 포함하는 L2P 세그먼트들에 대응하는 프리 업데이트 상태들은 제1 상태로 셋팅되는, 프리 업데이트 테이블 생성부; 및 상기 L2P 엔트리들이 업데이트된 뒤에, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하도록 구성된 원본 업데이트 테이블 생성부를 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템 및 그것의 동작 방법은 맵 관리 동작을 효율적으로 수행할 수 있다.
도1은 본 발명의 실시 예에 따른 메모리 시스템을 도시한 블록도,
도2는 본 발명의 실시 예에 따른 메모리의 예시적인 할당을 도시하는 도면,
도3은 본 발명의 실시 예에 따른 L2P 테이블을 도시하는 도면,
도4는 본 발명의 실시 예에 따른 메모리 영역의 P2L 테이블을 도시하는 도면,
도5는 본 발명의 실시 예에 따른 L2P 업데이트 동작을 설명하기 위한 도면,
도6은 본 발명의 실시 예에 따른 업데이트 테이블을 설명하기 위한 도면,
도7은 본 발명의 실시 예에 따라 업데이트 테이블을 참조하여 가비지 컬렉션 동작이 수행되는 방법을 설명하기 위한 도면,
도8은 본 발명의 실시 예에 따라 프리 업데이트 테이블 생성 동작과 원본 업데이트 테이블 생성 동작을 설명하기 위한 도면,
도9a 및 도9b는 본 발명의 실시 예에 따라 맵 관리 동작이 수행되는 방법을 설명하기 위한 도면들,
도 10은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도 12는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 네트워크 시스템을 예시적으로 도시하는 도면,
도 14는 본 발명의 실시 예에 따른 메모리 시스템에 포함된 비휘발성 메모리 장치를 예시적으로 도시하는 블럭도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 '및/또는'이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, '연결되는/결합되는'이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 '포함한다' 또는 '포함하는'으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 메모리 시스템(10)을 도시한 블록도이다.
메모리 시스템(10)은 외부의 호스트 장치의 라이트 요청에 응답하여, 호스트 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템(10)은 호스트 장치의 리드 요청에 응답하여, 저장된 데이터를 호스트 장치로 제공하도록 구성될 수 있다.
메모리 시스템(10)은 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(Solid State Drive)를 포함할 수 있다.
메모리 시스템(10)은 컨트롤러(100) 및 저장 매체(200)를 포함할 수 있다.
컨트롤러(100)는 메모리 시스템(10)의 제반 동작을 제어할 수 있다. 컨트롤러(100)는 호스트 장치의 지시에 따라 포그라운드 동작을 수행하기 위해 저장 매체(200)를 제어할 수 있다. 포그라운드 동작은 호스트 장치의 지시, 즉, 라이트 요청 및 리드 요청에 따라 저장 매체(200)에 데이터를 라이트하고 저장 매체(200)로부터 데이터를 리드하는 동작을 포함할 수 있다.
또한, 컨트롤러(100)는 호스트 장치와 독립적으로 내부적으로 필요한 백그라운드 동작을 수행하기 위해서 저장 매체(200)를 제어할 수 있다. 백그라운드 동작은 저장 매체(200)에 대한 웨어 레벨링 동작, 가비지 컬렉션 동작, 소거 동작, 리드 리클레임 동작, 및 리프레시 동작 중 적어도 하나를 포함할 수 있다. 백그라운드 동작은 포그라운드 동작처럼 저장 매체(200)에 데이터를 라이트하고 저장 매체(200)로부터 데이터를 리드하는 동작을 포함할 수 있다.
컨트롤러(100)는 라이트부(110), 맵 관리자(120), 및 메모리(130)를 포함할 수 있다. 라이트부(110) 및 맵 관리자(120)는 소프트웨어, 하드웨어, 또는 펌웨어로 구성되거나 이들의 조합으로 구성될 수 있다.
라이트부(110)는 호스트 장치의 라이트 요청에 응답하여, 저장 매체(200)가 타겟 메모리 영역의 타겟 메모리 유닛에 대해 라이트 동작을 수행하도록 제어할 수 있다. 예를 들어, 라이트부(110)는 저장 매체(200)로 타겟 메모리 유닛의 물리 어드레스를 포함하는 라이트 커맨드를 전송할 수 있다.
라이트부(110)는 저장 매체(200)의 라이트 동작을 제어하고 타겟 메모리 유닛의 물리 어드레스에 대응하는 P2L(physical-to-logical) 엔트리를 메모리(130)에 생성할 수 있다. 타겟 메모리 유닛에 저장된 데이터의 P2L 엔트리는 타겟 메모리 유닛의 물리 어드레스에 맵핑된 논리 어드레스, 즉, 타겟 메모리 유닛에 저장된 데이터의 논리 어드레스를 포함할 수 있다.
맵 관리자(120)는 호스트 장치로부터 전송된 데이터에 대응하는 논리 어드레스들과 저장 매체(200)의 물리 어드레스들 사이의 맵핑 관계를 나타내는 맵 데이터를 전반적으로 관리할 수 있다. 맵 데이터는 상술한 P2L 엔트리 뿐만 아니라 각 논리 어드레스에 대응하는 L2P(logical-to-physical) 엔트리를 포함할 수 있다. L2P 엔트리는 대응하는 논리 어드레스에 맵핑된 물리 어드레스, 즉, 해당 논리 어드레스의 데이터를 저장하는 메모리 유닛의 물리 어드레스를 포함할 수 있다. 후술될 바와 같이, L2P 엔트리는 복수의 논리 어드레스들에 대한 L2P 세그먼트 단위로 관리될 수 있다.
맵 관리자(120)는 타겟 메모리 영역에 대해 생성된 복수의 P2L 엔트리들을 처리하기 위해 후술될 맵 관리 동작을 수행할 수 있다. 이때, 맵 관리 동작을 통해 처리되는 복수의 P2L 엔트리들은 이전 맵 관리 동작이 완료된 이후부터 맵 관리 동작이 트리거될 때까지 생성된 것일 수 있다. 맵 관리자(120)는 맵 관리 동작을 수행할 때마다 타겟 메모리 영역에 대한 새로운 P2L 엔트리들을 처리할 수 있다.
맵 관리자(120)는 트리거 감지부(121), L2P 업데이트부(122), 프리 업데이트 테이블 생성부(123), 및 원본 업데이트 테이블 생성부(124)를 포함할 수 있다.
트리거 감지부(121)는 맵 관리 동작이 트리거되었는지를 판단할 수 있다. 맵 관리 동작은, 예를 들어, 메모리(130)에서 P2L 엔트리가 저장되는 P2L 메모리 부분이 가득 찰 때 트리거될 수 있다. 실시 예에 따라, 맵 관리 동작은, P2L 메모리 부분에 소정 개수의 P2L 엔트리들이 생성될 때 트리거될 수 있다. 실시 예에 따라, 맵 관리 동작은, 저장 매체(200)에서 데이터가 저장되고 있는 중인 타겟 메모리 영역이 가득 찰 때 트리거될 수 있다. 실시 예에 따라, 맵 관리 동작은, 이전 맵 관리 동작이 수행된 때로부터 소정 시간이 경과할 때 트리거될 수 있다. 트리거 조건에 따라, 타겟 메모리 영역이 데이터로 채워지는 동안 맵 관리 동작은 복수회 수행될 수 있다.
맵 관리 동작이 수행될 때, 프리 업데이트 테이블 생성부(123)의 프리 업데이트 테이블 생성 동작, L2P 업데이트부(122)의 L2P 업데이트 동작, 및 원본 업데이트 테이블 생성부(124)의 원본 업데이트 테이블 생성 동작이 순서대로 수행될 수 있다.
L2P 업데이트 동작을 먼저 설명하면, L2P 업데이트부(122)는 P2L 엔트리에 근거하여 L2P 엔트리를 최신 상태로 업데이트하기 위한 L2P 업데이트 동작을 수행할 수 있다. 즉, 호스트 장치가 데이터를 업데이트할 때 업데이트된 데이터는 동일한 논리 어드레스에 그대로 대응하더라도 새로운 물리 어드레스의 메모리 유닛에 저장되므로, L2P 업데이트부(122)는 L2P 엔트리에 새로운 물리 어드레스를 반영하기 위해서 L2P 업데이트 동작을 수행할 수 있다.
한편, 맵 관리 동작이 트리거될 때 저장 매체(200)가 라이트 동작을 아직 수행 중이라면, L2P 업데이트부(122)는 맵 데이터 불일치 등으로 인한 에러를 방지하기 위해서 저장 매체(200)의 라이트 동작이 완전히 완료된 뒤(즉, 라이트 동작이 성공한 뒤)에 L2P 업데이트 동작을 수행할 수 있다. 뿐만 아니라, L2P 업데이트 동작은 후술될 바와 같이 저장 매체(200)로부터 L2P 세그먼트를 리드하는 동작을 포함하므로, 저장 매체(200)가 라이트 동작과 같은 어떤 내부 동작을 수행 중이라면 그와 동시에 수행하기 어려울 수 있다.
L2P 업데이트 동작이 수행된 뒤, 원본 업데이트 테이블 생성부(124)는 타겟 메모리 영역에 대응하는 원본 업데이트 테이블을 생성하기 위해 원본 업데이트 테이블 생성 동작을 수행할 수 있다. 원본 업데이트 테이블은 타겟 메모리 영역에 데이터가 저장됨으로써 업데이트된 L2P 세그먼트들을 나타낼 수 있다. 타겟 메모리 영역이 데이터로 채워지는 동안 맵 관리 동작이 복수회 수행될 때마다 원본 업데이트 테이블 생성부(124)는 타겟 메모리 영역의 원본 업데이트 테이블을 계속 업데이트할 수 있다. 타겟 메모리 영역이 데이터로 가득 찬 뒤 마지막으로 생성된 업데이트 테이블은 후술될 바와 같이 타겟 메모리 영역이 가비지 컬렉션 동작의 빅팀으로 선택될 때 참조될 수 있다.
이때, 맵 관리 동작이 트리거되면 제일 먼저 프리 업데이트 테이블 생성부(123)가 타겟 메모리 영역의 프리 업데이트 테이블을 생성할 수 있다. 원본 업데이트 테이블 생성부(124)는 프리 업데이트 테이블과 이전 맵 관리 동작에서 생성된 원본 업데이트 테이블을 병합하여, 새로운 원본 업데이트 테이블을 생성할 수 있다.
이제 프리 업데이트 테이블 생성 동작을 설명하면, 맵 관리 동작이 트리거되면 제일 먼저 프리 업데이트 테이블 생성부(123)가 P2L 엔트리들에 근거하여 타겟 메모리 영역에 대응하는 프리 업데이트 테이블을 생성할 수 있다. 프리 업데이트 테이블은 이전 맵 관리 동작이 완료된 이후부터 타겟 메모리 영역에 데이터가 저장됨으로써 업데이트될 L2P 엔트리들을 포함하는 L2P 세그먼트들을 나타낼 수 있다. 다른 말로 하면, 프리 업데이트 테이블은 후속하는 L2P 업데이트 동작에서 업데이트될 L2P 엔트리들을 포함하는 L2P 세그먼트들을 나타낼 수 있다.
결국, 타겟 메모리 영역에 대해, 이전 맵 관리 동작에서 생성된 원본 업데이트 테이블은 이전 맵 관리 동작이 트리거될 때까지 타겟 메모리 영역에 저장된 데이터에 의해 어떤 L2P 세그먼트들이 업데이트되었는지를 나타내고, 프리 업데이트 테이블은 이전 맵 관리 동작이 완료된 이후부터 현재 맵 관리 동작이 트리거될 때까지 타겟 메모리 영역에 저장된 데이터에 의해 어떤 L2P 세그먼트들이 업데이트되었는지를 나타내므로, 원본 업데이트 테이블과 프리 업데이트 테이블이 병합된 새로운 원본 업데이트 테이블은 현재 맵 관리 동작이 트리거될 때까지 타겟 메모리 영역에 저장된 데이터에 의해 어떤 L2P 세그먼트들이 업데이트되었는지를 나타낼 수 있다.
만일 타겟 메모리 영역에 대응하는 프리 업데이트 테이블이 생성되었을 때 이전에 생성된 원본 업데이트 테이블이 존재하지 않는다면, 프리 업데이트 테이블이 타겟 메모리 영역에 대응하는 최초 원본 업데이트 테이블이 될 수 있다.
본 발명에서, 프리 업데이트 테이블 생성 동작은 저장 매체(200)의 라이트 동작과 오버랩될 수 있다. 구체적으로, 맵 관리 동작이 트리거될 때 저장 매체(200)가 매우 큰 데이터를 저장하는 중이라면 라이트 동작은 매우 긴 시간 동안 수행될 수 있다. 이때, 프리 업데이트 테이블 생성부(123)는 저장 매체(200)의 라이트 동작의 완료를 기다리지 않고 저장 매체(200)가 라이트 동작을 수행하는 동안 프리 업데이트 테이블 생성 동작을 수행할 수 있다. 즉, 본 발명의 프리 업데이트 테이블 생성 동작은 저장 매체(200)의 라이트 동작의 성공/실패 여부에 무관하므로, 저장 매체(200)의 라이트 동작과 오버랩될 수 있다.
다시 말해, L2P 업데이트 동작은 저장 매체(200)의 라이트 동작이 완료된 뒤 수행되어야 하지만, 프리 업데이트 테이블 생성 동작은 저장 매체(200)의 라이트 동작의 완료와 무관하게 수행될 수 있다. 또한 후술될 바와 같이 업데이트 테이블을 생성하기 위해서는 복수의 P2L 엔트리들을 긴 시간 동안 일일이 확인해야 하는 과정이 필요한데, 해당 확인 과정은 프리 업데이트 테이블 생성 동작에서 처리될 수 있다. 따라서, 저장 매체(200)의 라이트 동작의 대기 시간을 효과적으로 활용함으로써 맵 관리 동작의 전체 수행 시간이 효과적으로 단축될 수 있다.
메모리(130)는 동작 메모리로서 소프트웨어 프로그램 및 각종 동작 데이터를 저장할 수 있다. 메모리는 휘발성 메모리 장치를 포함할 수 있다. 휘발성 메모리 장치는 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory) 등을 포함할 수 있다.
도2는 본 발명의 실시 예에 따른 메모리(130)의 예시적인 할당을 도시하는 도면이다.
도2를 참조하면, 메모리(130)는 L2P 메모리 부분(L2PM), P2L 메모리 부분(P2LM), 프리 업데이트 테이블 메모리 부분(PREM), 원본 업데이트 테이블 메모리 부분(ORGM)을 포함할 수 있다.
L2P 메모리 부분(L2PM)은 L2P 엔트리들을 저장하기 위해 사용될 수 있다. P2L 메모리 부분(P2LM)은 P2L 엔트리들을 저장하기 위해 사용될 수 있다. 프리 업데이트 테이블 메모리 부분(PREM)은 프리 업데이트 테이블을 저장하기 위해 사용될 수 있다. 원본 업데이트 테이블 메모리 부분(ORGM)은 원본 업데이트 테이블을 저장하기 위해 사용될 수 있다.
상술한 메모리 부분들(L2PM, P2LM, PREM, ORGM)은 하나의 메모리 장치 또는 복수의 별개의 메모리 장치들에 위치할 수 있다.
다시 도1을 참조하면, 저장 매체(200)는 복수의 메모리 영역들(MR0~MRn)을 포함할 수 있다. 각 메모리 영역은 저장 매체(200)에서 소거 동작이 수행되는 단위일 수 있다. 다른 말로 하면, 각 메모리 영역에 저장된 데이터는 모두 함께 소거될 수 있다. 예를 들어, 각 메모리 영역은 단일의 비휘발성 메모리 장치에 포함된 메모리 블록일 수 있다. 다른 예로서, 각 메모리 영역은 복수의 비휘발성 메모리 장치들에 각각 포함되고 병렬 액세스될 수 있는 메모리 블록들의 집합일 수 있다. 각 메모리 영역은, 예를 들어, 슈퍼 블록일 수 있다.
각 메모리 영역은 연속적인 물리 어드레스들에 각각 대응하는 복수의 메모리 유닛들을 포함할 수 있다. 각 메모리 유닛은 저장 매체(200)에서 라이트 동작 또는 리드 동작이 수행되는 단위일 수 있다. 컨트롤러(100)는 물리 어드레스의 순서대로 메모리 유닛들에 데이터를 저장할 수 있다. 각 메모리 유닛은, 예를 들어, 페이지일 수 있다.
저장 매체(200)는 하나 이상의 비휘발성 메모리 장치들을 포함할 수 있다. 비휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
도3은 본 발명의 실시 예에 따른 L2P 테이블(L2PT)을 도시하는 도면이다.
도3을 참조하면, L2P 테이블(L2PT)은 논리 어드레스들(LA0~LAi)에 각각 대응하는 복수의 L2P 엔트리들을 포함할 수 있다. 각 L2P 엔트리는 데이터의 논리 어드레스와 해당 데이터가 저장된 메모리 유닛의 물리 어드레스 간의 맵핑 정보를 나타낼 수 있다. 예를 들어, L2P 테이블(L2PT)은 연속적인 논리 어드레스들(LA0~LAi)을 인덱스로 사용하고, 논리 어드레스들(LA0~LAi)에 각각 맵핑된 물리 어드레스들(PA)을 포함할 수 있다. 논리 어드레스들(LA0~LAi)은 호스트 장치로부터 전송된 데이터에 대응하는 어드레스들일 수 있다. 논리 어드레스들(LA0~LAi)은 호스트 장치가 메모리 시스템(10)을 액세스하기 위해 사용하는 어드레스들일 수 있다.
한편, 메모리(130)의 용량이 매우 작을 때 또는 메모리의 효율적인 사용을 위해서, 전체 L2P 테이블(L2PT)은 저장 매체(200)에 유지되고, L2P 테이블(L2PT)의 일부만 메모리(130)에서 참조될 수 있다. 이때, 컨트롤러(100)는 L2P 테이블(L2PT)을 소정의 세그먼트 단위로 로딩할 수 있다. 즉, 컨트롤러(100)는 L2P 엔트리를 업데이트하고자 할 때, 해당 L2P 엔트리를 포함하는 L2P 세그먼트 전체를 메모리(130)로 리드할 수 있다.
예를 들어, 컨트롤러(100)는 논리 어드레스들(LA0~LAi)을 100개씩 연속적으로 분할하여 L2P 세그먼트들(SG0~SGj)로 구분할 수 있다. 예를 들어, 논리 어드레스(LA0)부터 논리 어드레스(LA99)까지는 L2P 세그먼트(SG0)를 구성하고, 논리 어드레스(LA100)부터 논리 어드레스(LA199)까지는 L2P 세그먼트(SG1)를 구성할 수 있다.
L2P 세그먼트는 인덱스인 연속적인 논리 어드레스들을 통해 참조되므로, L2P 세그먼트를 참조하면 특정 논리 어드레스가 어떤 물리 어드레스에 맵핑되어 있는지를 용이하게 확인할 수 있다.
도4는 본 발명의 실시 예에 따른 메모리 영역(MR0)의 P2L 테이블(P2LT_MR0)을 도시하는 도면이다.
도4를 참조하면, 메모리 영역(MR0)의 P2L 테이블(P2LT_MR0)은 물리 어드레스들(PA0~PAk)에 각각 대응하는 복수의 P2L 엔트리들을 포함할 수 있다. 각 P2L 엔트리는 대응하는 물리 어드레스와 해당 물리 어드레스의 메모리 유닛에 저장된 데이터의 논리 어드레스 간의 맵핑 정보를 나타낼 수 있다. 예를 들어, P2L 테이블(P2LT_MR0)은 메모리 영역(MR0)에 포함된 메모리 유닛들의 연속적인 물리 어드레스들(PA0~PAk)을 인덱스로 사용하고, 연속적인 물리 어드레스들(PA0~PAk)에 맵핑된 논리 어드레스들(LA)을 포함할 수 있다.
P2L 테이블(P2LT_MR0)은 인덱스인 연속적인 물리 어드레스들(PA0~PAk)을 통해 참조되므로, P2L 테이블(P2LT_MR0)을 참조하면 특정 물리 어드레스가 어떤 논리 어드레스에 맵핑되어 있는지를 용이하게 확인할 수 있다. 따라서, 저장 매체(200)의 라이트 동작이 수행되는 동안 물리 어드레스에 대응하는 P2L 엔트리가 일단 먼저 생성되고, 도5를 참조하여 설명될 바와 같이 P2L 엔트리에 근거하여 L2P 엔트리가 업데이트될 수 있다.
도5는 본 발명의 실시 예에 따른 L2P 업데이트 동작을 설명하기 위한 도면이다.
도5를 참조하면, L2P 업데이트부(122)는 L2P 업데이트 동작을 통해 P2L 엔트리들에 근거하여 L2P 엔트리들을 업데이트할 수 있다.
구체적으로, 메모리(130)의 P2L 메모리 부분(P2LM)은 타겟 메모리 영역(MR0)의 물리 어드레스들(PA0, PA1)에 대응하는 P2L 엔트리들을 저장할 수 있다. 물리 어드레스들(PA0, PA1)에 대응하는 P2L 엔트리들은 이전 맵 관리 동작이 완료된 이후부터 현재 맵 관리 동작이 트리거될 때까지 생성된 것일 수 있다.
L2P 업데이트부(122)는 우선 물리 어드레스(PA0)에 대응하는 P2L 엔트리를 참조하여 논리 어드레스(LA50)를 식별하고, 논리 어드레스(LA50)에 대응하는 L2P 엔트리를 포함하는 L2P 세그먼트(SG0)를 저장 매체(200)로부터 메모리(130)의 L2P 메모리 부분(L2PM)으로 리드하고, L2P 세그먼트(SG0)에서 논리 어드레스(LA50)에 물리 어드레스(PA0)가 맵핑되도록 논리 어드레스(LA50)에 대응하는 L2P 엔트리를 업데이트할 수 있다. 유사하게, L2P 업데이트부(122)는 물리 어드레스(PA1)에 대응하는 P2L 엔트리를 참조하여 논리 어드레스(LA230)를 식별하고, 논리 어드레스(LA230)에 대응하는 L2P 엔트리를 포함하는 L2P 세그먼트(SG2)를 저장 매체(200)로부터 메모리(130)의 L2P 메모리 부분(L2PM)으로 리드하고, L2P 세그먼트(SG2)에서 논리 어드레스(LA230)에 물리 어드레스(PA1)가 맵핑되도록 논리 어드레스(LA230)에 대응하는 L2P 엔트리를 업데이트할 수 있다. L2P 업데이트부(122)는 업데이트된 L2P 세그먼트들(SG0, SG2)을 저장 매체(200)에 다시 저장할 수 있다.
실시 예에 따라, 메모리(130)의 P2L 메모리 부분(P2LM)이 가득 찰 때, 맵 관리 동작이 트리거될 수 있다. 즉, 맵 관리 동작에서 L2P 엔트리들이 최신 정보를 반영하도록 업데이트되면 P2L 엔트리들은 더 이상 필요하지 않고, P2L 메모리 부분(P2LM)은 새로운 P2L 엔트리들을 저장하도록 사용될 수 있다.
또한 P2L 메모리 부분(P2LM)의 용량이 작을 때, P2L 메모리 부분(P2LM)은 도3에 도시된 것과 같은 타겟 메모리 영역(MR0)의 전체 P2L 테이블(P2LT_MR0)을 저장하지 못하고, 물리 어드레스들(PA0, PA1)에 대한 부분 P2L 테이블(PP2LT1_MR0)을 저장함으로써 가득 찰 수 있다. 이 경우 부분 P2L 테이블(PP2LT1_MR0)에 근거하여 L2P 업데이트 동작이 수행된 후엔, P2L 메모리 부분(P2LM)은 타겟 메모리 영역(MR0)의 그 다음 물리 어드레스(PA2)에 대응하는 P2L 엔트리부터 저장하게 될 것이다.
한편, 맵 관리 동작이 트리거될 때 저장 매체(200)가 물리 어드레스(PA1)에 대한 라이트 동작을 수행 중이라면, L2P 업데이트 동작은 맵 불일치 등으로 인한 에러를 방지하기 위해서 저장 매체(200)의 라이트 동작이 완전히 완료된 뒤 수행될 수 있다. 다시 말해, L2P 업데이트부(122)는 저장 매체(200)로부터 라이트 동작의 성공을 보고받은 뒤에야 부분 P2L 테이블(PP2LT1_MR0)에 근거한 L2P 업데이트 동작을 수행할 수 있다. 만일, 물리 어드레스(PA1)에 대한 라이트 동작의 실패를 보고받은 때는 라이트부(110)는 저장 매체(200)가 다른 물리 어드레스에 대해 라이트 동작을 재수행하도록 제어할 수 있다. L2P 업데이트부(122)는 맵 관리 동작이 트리거된 뒤라도 저장 매체(200)의 라이트 동작이 성공할 때까지 L2P 업데이트 동작을 수행하지 않을 수 있다.
도6은 본 발명의 실시 예에 따른 업데이트 테이블(UT_MR0)을 설명하기 위한 도면이다.
도6을 참조하면, 메모리 영역(MR0)의 업데이트 테이블(UT_MR0)이 도시된다. 업데이트 테이블(UT_MR0)은 저장 매체(200)에 저장된 모든 L2P 세그먼트들(SG0~SGj)에 각각 대응하는 업데이트 상태들을 포함할 수 있다. 각 업데이트 상태는 대응하는 L2P 세그먼트가 메모리 영역(MR0)에 저장되어 있는 데이터의 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타낼 수 있다. 다른 말로 하면, 각 업데이트 상태는 대응하는 L2P 세그먼트가 메모리 영역(MR0)에 저장된 데이터로 인해 업데이트된 적이 있는지 여부를 나타낼 수 있다.
업데이트 테이블(UT_MR0)은, 이러한 예시로 제한되는 것은 아니나, 모든 L2P 세그먼트들(SG0~SGj)의 개수만큼의 비트들로 구성되는 비트맵일 수 있다. 예를 들어, L2P 세그먼트(SG0)에 대응하는 업데이트 상태가 제1 상태 또는 셋 상태, 즉, "1"인 것은, L2P 세그먼트(SG0)가 메모리 영역(MR0)에 저장된 어떤 데이터의 논리 어드레스에 대응하는 L2P 엔트리를 포함한다는 것을 의미할 수 있다. 마찬가지로 업데이트 상태가 셋 상태인 L2P 세그먼트(SG2)도 메모리 영역(MR0)에 저장된 어떤 데이터의 논리 어드레스에 대응하는 L2P 엔트리를 포함한다는 것을 의미할 수 있다. 이러한 상태는 도5에 도시된 바와 같이 L2P 세그먼트들(SG0, SG2)이 업데이트된 결과에 대응한다.
그리고 예를 들어, L2P 세그먼트(SG1)에 대응하는 업데이트 상태가 제2 상태 또는 클리어 상태, 즉, "0"인 것은, L2P 세그먼트(SG1)가 메모리 영역(MR0)에 저장된 어떤 데이터의 논리 어드레스에 대응하는 L2P 엔트리도 포함하지 않는다는 것을 의미할 수 있다.
업데이트 테이블(UT_MR0)은 메모리 영역(MR0)이 데이터로 가득 찬 뒤 최종적으로 완성될 수 있다. 최종 업데이트 테이블(UT_MR0)을 참조하면, 모든 L2P 세그먼트들(SG0~SGj) 중에서 어떤 L2P 세그먼트들이 메모리 영역(MR0)에 저장된 데이터의 L2P 엔트리들을 포함하는지를 알 수 있다.
저장 매체(200)의 메모리 영역들(MR0~MRn) 중에서 호스트 장치의 데이터가 저장된 메모리 영역들 각각은 대응하는 업데이트 테이블(UT_MR0)과 동일한 형식의 업데이트 테이블을 가질 수 있다.
도7은 본 발명의 실시 예에 따라 업데이트 테이블(UT_MR0)을 참조하여 가비지 컬렉션 동작이 수행되는 방법을 설명하기 위한 도면이다.
도7을 참조하면, 메모리 영역(MR0)이 데이터로 가득 찬 뒤 가비지 컬렉션 동작의 빅팀으로 선택될 때, 메모리 영역(MR0)에 저장된 데이터 중에서 유효 데이터는 가비지 컬렉션 동작을 통해 다른 메모리 영역으로 이동될 수 있다. 따라서, 메모리 영역(MR0)에 저장된 데이터가 유효 데이터인지 또는 무효 데이터인지를 먼저 결정해야 하고, 메모리 영역(MR0)의 업데이트 테이블(UT_MR0)은 이러한 유효 데이터 결정을 위해 사용될 수 있다. 구체적으로, 업데이트 테이블(UT_MR0)을 참조하여 업데이트 상태가 셋 상태인 L2P 세그먼트들을 식별하고, 식별된 L2P 세그먼트들을 저장 매체(200)로부터 리드하고, 식별된 L2P 세그먼트들에 포함된 L2P 엔트리들에서 메모리 영역(MR0)의 물리 어드레스들을 확인함으로써 메모리 영역(MR0)에 저장된 유효 데이터를 식별할 수 있다.
보다 구체적으로, 컨트롤러(100)는 업데이트 테이블(UT_MR0)을 참조하면, L2P 세그먼트(SG0)의 업데이트 상태는 셋 상태이므로, L2P 세그먼트(SG0)는 메모리 영역(MR0)에 저장된 데이터의 논리 어드레스에 대응하는 L2P 엔트리를 포함한다는 것을 알 수 있다.
따라서, 컨트롤러(100)는 L2P 세그먼트(SG0)를 메모리(130)의 L2P 메모리 부분(L2PM)으로 리드하고, L2P 세그먼트(SG0)의 L2P 엔트리들을 참조하여 메모리 영역(MR0)의 물리 어드레스들을 식별할 수 있다. 예를 들어, 논리 어드레스(LA50)에 대응하는 L2P 엔트리는 논리 어드레스(LA50)에 맵핑된 메모리 영역(MR0)의 물리 어드레스(PA0)를 포함하므로, 컨트롤러(100)는 물리 어드레스(PA0)의 메모리 유닛에 저장된 데이터는 유효 데이터라고 판단할 수 있다.
즉, 메모리 영역(MR0)이 가비지 컬렉션 동작의 빅팀으로 선택될 때 메모리 영역(MR0)에 저장된 데이터의 모든 논리 어드레스들에 대응하는 L2P 엔트리들을 참조해야 할 것이다. 이 때 업데이트 테이블(UT_MR0)을 참조하면, 어떤 L2P 세그먼트들이 필요한 L2P 엔트리들을 포함하는지를 쉽게 알 수 있다. 따라서, 업데이트 테이블(UT_MR0)을 참조하면, 모든 L2P 세그먼트들(SG0~SGj)을 검색할 필요가 없으므로, 가비지 컬렉션 동작의 성능이 향상될 수 있다.
도8은 본 발명의 실시 예에 따라 프리 업데이트 테이블 생성 동작과 원본 업데이트 테이블 생성 동작을 설명하기 위한 도면이다. 한편, 상술한 바와 같이 프리 업데이트 테이블 생성 동작 및 원본 업데이트 테이블 생성 동작 사이에는 L2P 업데이트 동작이 수행되어야 하지만, 쉬운 이해를 위해 도8에서는 L2P 업데이트 동작이 수행되는 과정은 생략된다.
도8을 참조하면, 시점(T1)에서, 트리거 감지부(121)는 맵 관리 동작이 트리거된 것으로 결정할 수 있다. 실시 예에 따라, 맵 관리 동작이 트리거될 때, 메모리(130)의 프리 업데이트 테이블 메모리 부분(PREM) 및 원본 업데이트 테이블 메모리 부분(ORGM)은 "0"들을 저장하도록 초기화될 수 있다.
시점(T1)에서, 타겟 메모리 영역(MR0)의 부분 P2L 테이블(PP2LT1_MR0)이 메모리(130)의 P2L 메모리 부분(P2LM)에 존재할 수 있다. 부분 P2L 테이블(PP2LT1_MR0)은 물리 어드레스들(PA0, PA1)에 대응하는 P2L 엔트리들을 포함할 수 있다. 부분 P2L 테이블(PP2LT1_MR0)은 이전 맵 관리 동작이 완료된 이후부터 생성된 것일 수 있다.
단계(S11)에서 프리 업데이트 테이블 생성부(123)는 부분 P2L 테이블(PP2LT1_MR0)에 근거하여 프리 업데이트 테이블(PREUT1_MR0)을 메모리(130)의 프리 업데이트 테이블 메모리 부분(PREM)에 생성할 수 있다. 프리 업데이트 테이블(PREUT1_MR0)은 모든 L2P 세그먼트들(SG0~SGj)에 각각 대응하는 프리 업데이트 상태들을 포함하고, 각 프리 업데이트 상태는 대응하는 L2P 세그먼트가 부분 P2L 테이블(PP2LT1_MR0)의 P2L 엔트리들에 포함된 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타낼 수 있다. 구체적으로, 각 프리 업데이트 상태는 대응하는 L2P 세그먼트가 부분 P2L 테이블(PP2LT1_MR0)의 P2L 엔트리들에 포함된 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함할 때 제1 상태로 셋팅되고, 대응하는 L2P 세그먼트가 부분 P2L 테이블(PP2LT1_MR0)의 P2L 엔트리들에 포함된 논리 어드레스에 대응하는 어떤 L2P 엔트리도 포함하지 않을 때 제2 상태로 셋팅될 수 있다. 프리 업데이트 테이블(PREUT1_MR0)은 최종 업데이트 테이블(예를 들어, 도7의 UT_MR0)과 동일한 형태 및 크기로 생성될 수 있고, 예를 들어, 모든 L2P 세그먼트들(SG0~SGj)의 개수만큼의 비트들로 구성되는 비트맵일 수 있다.
예를 들어, 물리 어드레스(PA0)에 대응하는 P2L 엔트리가 논리 어드레스(LA50)를 포함할 때, 논리 어드레스(LA50)에 대응하는 L2P 엔트리는 L2P 세그먼트(SG0)에 포함되므로, 프리 업데이트 테이블 생성부(123)는 L2P 세그먼트(SG0)에 대응하는 프리 업데이트 상태를 셋 상태, 즉, "1"로 셋팅할 수 있다. 또한, 물리 어드레스(PA1)에 대응하는 P2L 엔트리가 논리 어드레스(LA230)를 포함할 때, 논리 어드레스(LA230)에 대응하는 L2P 엔트리는 L2P 세그먼트(SG2)에 포함되므로, 프리 업데이트 테이블 생성부(123)는 L2P 세그먼트(SG2)에 대응하는 프리 업데이트 상태를 셋 상태, 즉, "1"로 셋팅할 수 있다. 그리고, 프리 업데이트 테이블 생성부(123)는 모든 L2P 세그먼트들(SG0~SGj) 중에서 L2P 세그먼트들(SG0, SG2)을 제외한 나머지 L2P 세그먼트들에 대응하는 프리 업데이트 상태들을 클리어 상태, 즉, "0"으로 셋팅할 수 있다.
단계(S12)에서, 원본 업데이트 테이블 생성부(124)는 프리 업데이트 테이블(PREUT1_MR0)을 타겟 메모리 영역(MR0)에 대응하는 원본 업데이트 테이블(ORGUT1_MR0)로서 저장 매체(200)에 저장할 수 있다. 즉, 타겟 메모리 영역(MR0)에 대해서 프리 업데이트 테이블(PREUT1_MR0)이 최초로 생성된 것일 때, 프리 업데이트 테이블(PREUT1_MR0)은 타겟 메모리 영역(MR0)에 대응하는 최초의 원본 업데이트 테이블이 될 수 있다. 프리 업데이트 테이블(PREUT1_MR0)은 메모리(130)의 프리 업데이트 테이블 메모리 부분(PREM)으로부터 저장 매체(200)로 곧바로 이동될 수 있다. 이로써 첫번째 맵 관리 동작은 종료될 수 있다.
시점(T2)에서, 트리거 감지부(121)는 맵 관리 동작이 트리거된 것으로 결정할 수 있다.
시점(T2)에서, 타겟 메모리 영역(MR0)의 부분 P2L 테이블(PP2LT2_MR0)이 메모리(130)의 P2L 메모리 부분(P2LM)에 존재할 수 있다. 부분 P2L 테이블(PP2LT2_MR0)은 부분 P2L 테이블(PP2LT1_MR0)에 후속하여 생성된 것일 수 있다. 부분 P2L 테이블(PP2LT2_MR0)은 물리 어드레스들(PA2, PA3)에 대응하는 P2L 엔트리들을 포함할 수 있다. 부분 P2L 테이블(PP2LT2_MR0)은 이전 맵 관리 동작이 완료된 이후, 예를 들어, 단계(S12) 이후부터 생성된 것일 수 있다.
단계(S21)에서 프리 업데이트 테이블 생성부(123)는 단계(S11)와 유사하게 부분 P2L 테이블(PP2LT2_MR0)에 근거하여 프리 업데이트 테이블(PREUT2_MR0)을 메모리(130)의 프리 업데이트 테이블 메모리 부분(PREM)에 생성할 수 있다. 프리 업데이트 테이블(PREUT2_MR0)의 각 프리 업데이트 상태는 대응하는 L2P 세그먼트가 부분 P2L 테이블(PP2LT2_MR0)의 P2L 엔트리들에 포함된 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타낼 수 있다.
단계(S22)에서, 원본 업데이트 테이블 생성부(124)는 저장 매체(200)로부터 이전 맵 관리 동작에서 생성된 원본 업데이트 테이블(ORGUT1_MR0)을 리드할 수 있다. 원본 업데이트 테이블(ORGUT1_MR0)은 메모리(130)의 원본 업데이트 테이블 메모리 부분(ORGM)으로 리드될 수 있다.
단계(S23)에서, 원본 업데이트 테이블 생성부(124)는 프리 업데이트 테이블(PREUT2_MR0)과 원본 업데이트 테이블(ORGUT1_MR0)을 병합하여 새로운 원본 업데이트 테이블(ORGUT2_MR0)을 생성할 수 있다. 프리 업데이트 테이블 생성부(123)는 프리 업데이트 테이블(PREUT2_MR0)과 원본 업데이트 테이블(ORGUT1_MR0)에 대해 비트와이즈 오어 연산을 수행함으로써 새로운 원본 업데이트 테이블(ORGUT2_MR0)을 생성할 수 있다. 새로운 원본 업데이트 테이블(ORGUT2_MR0)은 원본 업데이트 테이블 메모리 부분(ORGM)에 저장될 수 있다.
결국, 타겟 메모리 영역(MR0)에 대해, 이전 맵 관리 동작에서 생성된 원본 업데이트 테이블(ORGUT1_MR0)은 이전 맵 관리 동작이 트리거될 때까지 타겟 메모리 영역(MR0)에 저장된 데이터에 의해 어떤 L2P 세그먼트들이 업데이트되었는지를 나타내고, 프리 업데이트 테이블(PREUT2_MR0)은 이전 맵 관리 동작이 완료된 이후부터 현재 맵 관리 동작이 트리거될 때까지 타겟 메모리 영역(MR0)에 저장된 데이터에 의해 어떤 L2P 세그먼트들이 업데이트되었는지를 나타내므로, 원본 업데이트 테이블(ORGUT1_MR0)과 프리 업데이트 테이블(PREUT2_MR0)이 병합된 새로운 원본 업데이트 테이블(ORGUT2_MR0)은 현재 맵 관리 동작이 트리거될 때까지 타겟 메모리 영역(MR0)에 저장된 데이터에 의해 어떤 L2P 세그먼트들이 업데이트되었는지를 나타낼 수 있다.
단계(S24)에서, 원본 업데이트 테이블 생성부(124)는 새로운 원본 업데이트 테이블(ORGUT2_MR0)을 저장 매체(200)에 저장할 수 있다. 즉, 새로운 원본 업데이트 테이블(ORGUT2_MR0)은 원본 업데이트 테이블 메모리 부분(ORGM)으로부터 저장 매체(200)로 이동될 수 있다. 이로써 두번째 맵 관리 동작은 종료될 수 있다.
이후, 타겟 메모리 영역(MR0)에 대해 부분 P2L 테이블(PP2LT2_MR0)에 후속하는 새로운 부분 P2L 테이블이 생성되면, 프리 업데이트 테이블 생성부(123) 및 원본 업데이트 테이블 생성부(124)는 단계들(S21~S24)과 유사하게 반복할 수 있다. 타겟 메모리 영역(MR0)에 대한 최종 업데이트 테이블(예를 들어, 도7의 UT_MR0)은, 타겟 메모리 영역(MR0)의 마지막 물리 어드레스(예를 들어, 도4의 PAk)에 대응하는 P2L 엔트리가 생성되고 마지막 P2L 엔트리에 근거하여 단계들(S1~S4)이 유사하게 반복된 뒤 생성될 것이다.
실시 예에 따라, 단계(S12)에서 프리 업데이트 테이블(PREUT1_MR0)은 메모리(130)의 프리 업데이트 테이블 메모리 부분(PREM)으로부터 원본 업데이트 테이블 메모리 부분(ORGM)으로 이동하고 원본 업데이트 테이블 메모리 부분(ORGM)으로부터 저장 매체(200)로 이동될 수 있다. 이때, 원본 업데이트 테이블 생성부(124)는 프리 업데이트 테이블(PREUT1_MR0)과 원본 업데이트 테이블 메모리 부분(ORGM)에 저장되어 있는 초기 값들, 즉, "0"들에 대해 비트와이즈 오어 연산을 수행하고, 연산 결과, 즉, 프리 업데이트 테이블(PREUT1_MR0)을 그대로 원본 업데이트 테이블 메모리 부분(ORGM)에 저장할 수 있다.
상술한 바와 같이, 본 발명에서 단계(S21)의 프리 업데이트 테이블 생성 동작과 단계들(S22~S24)의 원본 업데이트 테이블 생성 동작을 분리한 이유는, 단계(S21)의 프리 업데이트 테이블 생성 동작을 저장 매체(200)의 라이트 동작의 완료와 무관하게 수행하기 위함이다. 예를 들어, 맵 관리 동작이 트리거될 때 저장 매체(200)가 예를 들어 물리 어드레스(PA3)에 대해 라이트 동작을 수행하는 중이더라도, L2P 업데이트 동작은 저장 매체(200)의 라이트 동작이 완전히 완료된 뒤 수행되어야 하지만, 단계(S21)의 프리 업데이트 테이블 생성 동작은 라이트 동작의 완료를 기다리지 않고 라이트 동작과 병렬적으로 수행되더라도 무방할 수 있다. 즉, 부분 P2L 테이블(PP2LT2_MR0)은 물리 어드레스(PA3)에 대한 라이트 동작의 결과와 무관하게 이미 생성되어 있기 때문에, 부분 P2L 테이블(PP2LT2_MR0)에 근거한 단계(S21)의 프리 업데이트 테이블 생성 동작은 저장 매체(200)의 라이트 동작의 결과에 영향을 받지 않을 수 있다.
또한, 단계(S21)의 프리 업데이트 테이블 생성 동작은 부분 P2L 테이블(PP2LT2_MR0)에 포함된 P2L 엔트리들을 일일이 확인해야 하므로 단순하게 비트와이즈 오어 연산을 수행하는 단계(S23)보다 상대적으로 오랜 시간이 걸릴 수 있다. 본 발명에 따르면 오랜 시간이 걸리는 단계(S21)의 프리 업데이트 테이블 생성 동작을 저장 매체(200)의 라이트 동작이 수행되는 동안 미리 수행함으로써 전체 맵 관리 동작이 빠르게 완료될 수 있다.
도9a 및 도9b는 본 발명의 실시 예에 따라 맵 관리 동작이 수행되는 방법을 설명하기 위한 도면들이다.
도9a는 타겟 메모리 영역에 대해 맵 관리 동작이 최초로 트리거된 경우를 도시한다. 이 경우, 맵 관리 동작이 트리거된 시점에, 타겟 메모리 영역에 대해 이전에 생성된 원본 업데이트 테이블은 존재하지 않을 수 있다.
단계(S101)부터 단계(S108)까지는 순차적으로 진행될 수 있다. 다만 단계(S109)는 단계(S103)와 병렬적으로 수행될 수 있다.
단계(S101)에서, 라이트부(110)는 저장 매체(200)가 타겟 메모리 영역의 타겟 메모리 유닛에 대해 라이트 동작을 수행하도록 제어할 수 있다. 예를 들어, 라이트부(110)는 저장 매체(200)로 타겟 메모리 유닛에 대한 라이트 커맨드를 전송할 수 있다. 그리고 라이트부(110)는 타겟 메모리 유닛의 물리 어드레스에 대응하는 P2L 엔트리를 생성할 수 있다.
단계(S109)에서, 저장 매체(200)는 라이트부(110)의 제어에 따라 타겟 메모리 영역의 타겟 메모리 유닛에 대해 라이트 동작을 수행할 수 있다.
단계(S102)에서, 트리거 감지부(121)는 맵 관리 동작이 트리거된 것으로 결정할 수 있다. 맵 관리 동작이 트리거된 것이 아니라면 이하 단계들(S103~S106)의 맵 관리 동작은 수행되지 않을 수 있다.
단계(S103)에서, 프리 업데이트 테이블 생성부(123)는 저장 매체(200)가 라이트 동작을 수행하는 동안 타겟 메모리 영역의 부분 P2L 테이블에 근거하여 타겟 메모리 영역에 대응하는 프리 업데이트 테이블을 생성할 수 있다. 예를 들어, 프리 업데이트 테이블 생성부(123)는 도7의 단계(S11)처럼 동작할 수 있다.
단계(S104)에서, 저장 매체(200)는 컨트롤러(100)로 라이트 동작의 성공을 보고할 수 있다.
단계(S105)에서, L2P 업데이트부(122)는 타겟 메모리 영역의 부분 P2L 테이블에 근거하여 L2P 업데이트 동작을 수행할 수 있다. 예를 들어, L2P 업데이트부(122)는 도5를 참조하여 설명한 바와 같이 동작할 수 있다.
단계(S106)에서, 타겟 메모리 영역에 대해 이전에 생성된 원본 업데이트 테이블이 존재하지 않으므로, 원본 업데이트 테이블 생성부(124)는 프리 업데이트 테이블을 타겟 메모리 영역의 원본 업데이트 테이블로서 저장 매체(200)에 저장할 수 있다. 예를 들어, 원본 업데이트 테이블 생성부(124)는 도7의 단계(S12)처럼 동작할 수 있다.
도9b는 도9a의 경우 이후에 타겟 메모리 영역에 대해 맵 관리 동작이 수행되는 경우를 도시한다. 이 경우, 맵 관리 동작이 트리거된 시점에, 타겟 메모리 영역에 대해 이전 맵 관리 동작에서 생성된 원본 업데이트 테이블이 저장 매체(200)에 존재할 수 있다.
도9b를 참조하면 단계(S201~S205, S209)들은 도9a의 단계(S101~S105, S109)들과 동일할 수 있다.
단계(S206)에서, 원본 업데이트 테이블 생성부(124)는 저장 매체(200)로부터 타겟 메모리 영역에 대응하는 원본 업데이트 테이블을 리드할 수 있다. 예를 들어, 원본 업데이트 테이블 생성부(124)는 도7의 단계(S22)처럼 동작할 수 있다.
단계(S207)에서, 원본 업데이트 테이블 생성부(124)는 단계(S203)에서 생성된 프리 업데이트 테이블과 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성할 수 있다. 예를 들어, 원본 업데이트 테이블 생성부(124)는 도7의 단계(S23)처럼 동작할 수 있다.
단계(S208)에서, 원본 업데이트 테이블 생성부(124)는 새로운 원본 업데이트 테이블을 저장 매체(200)에 저장할 수 있다. 예를 들어, 원본 업데이트 테이블 생성부(124)는 도7의 단계(S24)처럼 동작할 수 있다.
한편, 실시 예에 따라, P2L 메모리 부분(P2LM)은 복수의 타겟 메모리 영역들의 부분 P2L 테이블들을 저장할 수도 있다. 예를 들어, 라이트부(110)는 서로 다른 종류의 데이터를 서로 다른 메모리 영역들에 저장하기 위해서 또는 다양한 이유들로, 저장 매체(200)에서 복수의 타겟 메모리 영역들을 동시에 사용할 수 있다. 이 경우, 데이터가 저장되고 있는 중인 복수의 타겟 메모리 영역들에 각각 대응하는 부분 P2L 테이블들이 P2L 메모리 부분(P2LM)에 생성될 수 있다. 따라서, 맵 관리자(120)는 맵 관리 동작이 트리거될 때, 복수의 타겟 메모리 영역들 각각에 대해 대응하는 부분 P2L 테이블에 근거하여 맵 관리 동작을 수행할 수 있다. 특히 프리 업데이트 테이블 생성부(123)는 맵 관리 동작이 트리거될 때 저장 매체(200)가 어떤 타겟 메모리 영역에 대해 라이트 동작을 수행 중이더라도, 복수의 타겟 메모리 영역들 각각에 대응하는 프리 업데이트 테이블을 생성할 수 있다.
도 10은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 10을 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100)와 솔리드 스테이트 드라이브(solid state drive)(1200)(이하, SSD라 칭함)를 포함할 수 있다.
SSD(1200)는 컨트롤러(1210), 버퍼 메모리 장치(1220), 비휘발성 메모리 장치들(1231~123n), 전원 공급기(1240), 신호 커넥터(1250) 및 전원 커넥터(1260)를 포함할 수 있다.
컨트롤러(1210)는 SSD(1200)의 제반 동작을 제어할 수 있다.
컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 랜덤 액세스 메모리(1213), 에러 정정 코드(ECC) 유닛(1214) 및 메모리 인터페이스 유닛(1215)을 포함할 수 있다.
호스트 인터페이스 유닛(1211)은 신호 커넥터(1250)를 통해서 호스트 장치(1100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등을 포함할 수 있다. 호스트 인터페이스 유닛(1211)은, 호스트 장치(1100)의 프로토콜에 따라서, 호스트 장치(1100)와 SSD(1200)를 인터페이싱할 수 있다. 예를 들면, 호스트 인터페이스 유닛(1211)은, 시큐어 디지털(secure digital), USB(universal serial bus), MMC(multi-media card), eMMC(embedded MMC), PCMCIA(personal computer memory card international association), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Expresss), UFS(universal flash storage)와 같은 표준 인터페이스 프로토콜들 중 어느 하나를 통해서 호스트 장치(1100)와 통신할 수 있다.
컨트롤 유닛(1212)은 호스트 장치(1100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(1212)은 SSD(1200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 백그라운드 기능 블럭들의 동작을 제어할 수 있다. 랜덤 액세스 메모리(1213)는 이러한 펌웨어 또는 소프트웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
컨트롤 유닛(1212)은 도1의 라이트부(110) 및 맵 관리자(120)를 포함할 수 있다. 랜덤 액세스 메모리(1213)는 도1의 메모리(130)를 포함할 수 있다.
에러 정정 코드(ECC) 유닛(1214)은 비휘발성 메모리 장치들(1231~123n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 비휘발성 메모리 장치들(1231~123n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(1214)은 패리티 데이터에 근거하여 비휘발성 메모리 장치들(1231~123n)로부터 독출된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 에러 정정 코드(ECC) 유닛(1214)은 검출된 에러를 정정할 수 있다.
메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)과 데이터를 주고받을 수 있다. 예를 들면, 메모리 인터페이스 유닛(1215)은 버퍼 메모리 장치(1220)에 저장된 데이터를 비휘발성 메모리 장치들(1231~123n)로 제공하거나, 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 버퍼 메모리 장치(1220)로 제공할 수 있다.
버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(1220)에 임시 저장된 데이터는 컨트롤러(1210)의 제어에 따라 호스트 장치(1100) 또는 비휘발성 메모리 장치들(1231~123n)로 전송될 수 있다.
비휘발성 메모리 장치들(1231~123n)은 SSD(1200)의 저장 매체로 사용될 수 있다. 비휘발성 메모리 장치들(1231~123n) 각각은 복수의 채널들(CH1~CHn)을 통해 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 비휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 비휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(1240)는 전원 커넥터(1260)를 통해 입력된 전원(PWR)을 SSD(1200) 백그라운드에 제공할 수 있다. 전원 공급기(1240)는 보조 전원 공급기(1241)를 포함할 수 있다. 보조 전원 공급기(1241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(1200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(1241)는 대용량 캐패시터들(capacitors)을 포함할 수 있다.
신호 커넥터(1250)는 호스트 장치(1100)와 SSD(1200)의 인터페이스 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
전원 커넥터(1260)는 호스트 장치(1100)의 전원 공급 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 11을 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 메모리 시스템(2200)을 포함할 수 있다.
호스트 장치(2100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(2100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
호스트 장치(2100)는 소켓(socket), 슬롯(slot) 또는 커넥터(connector)와 같은 접속 터미널(2110)을 포함할 수 있다. 메모리 시스템(2200)은 접속 터미널(2110)에 마운트(mount)될 수 있다.
메모리 시스템(2200)은 인쇄 회로 기판과 같은 기판 형태로 구성될 수 있다. 메모리 시스템(2200)은 메모리 모듈 또는 메모리 카드로 불릴 수 있다. 메모리 시스템(2200)은 컨트롤러(2210), 버퍼 메모리 장치(2220), 비휘발성 메모리 장치(2231~2232), PMIC(power management integrated circuit)(2240) 및 접속 터미널(2250)을 포함할 수 있다.
컨트롤러(2210)는 메모리 시스템(2200)의 제반 동작을 제어할 수 있다. 컨트롤러(2210)는 도 10에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 비휘발성 메모리 장치들(2231~2232)로 전송될 수 있다.
비휘발성 메모리 장치들(2231~2232)은 메모리 시스템(2200)의 저장 매체로 사용될 수 있다.
PMIC(2240)는 접속 터미널(2250)을 통해 입력된 전원을 메모리 시스템(2200) 백그라운드에 제공할 수 있다. PMIC(2240)는, 컨트롤러(2210)의 제어에 따라서, 메모리 시스템(2200)의 전원을 관리할 수 있다.
접속 터미널(2250)은 호스트 장치의 접속 터미널(2110)에 연결될 수 있다. 접속 터미널(2250)을 통해서, 호스트 장치(2100)와 메모리 시스템(2200) 간에 커맨드, 어드레스, 데이터 등과 같은 신호와, 전원이 전달될 수 있다. 접속 터미널(2250)은 호스트 장치(2100)와 메모리 시스템(2200)의 인터페이스 방식에 따라 다양한 형태로 구성될 수 있다. 접속 터미널(2250)은 메모리 시스템(2200)의 어느 한 변에 배치될 수 있다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 12를 참조하면, 데이터 처리 시스템(3000)은 호스트 장치(3100)와 메모리 시스템(3200)을 포함할 수 있다.
호스트 장치(3100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(3100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
메모리 시스템(3200)은 표면 실장형 패키지 형태로 구성될 수 있다. 메모리 시스템(3200)은 솔더 볼(solder ball)(3250)을 통해서 호스트 장치(3100)에 마운트될 수 있다. 메모리 시스템(3200)은 컨트롤러(3210), 버퍼 메모리 장치(3220) 및 비휘발성 메모리 장치(3230)를 포함할 수 있다.
컨트롤러(3210)는 메모리 시스템(3200)의 제반 동작을 제어할 수 있다. 컨트롤러(3210)는 도 10에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(3220)는 비휘발성 메모리 장치(3230)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(3220)는 비휘발성 메모리 장치들(3230)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(3220)에 임시 저장된 데이터는 컨트롤러(3210)의 제어에 따라 호스트 장치(3100) 또는 비휘발성 메모리 장치(3230)로 전송될 수 있다.
비휘발성 메모리 장치(3230)는 메모리 시스템(3200)의 저장 매체로 사용될 수 있다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 네트워크 시스템을 예시적으로 도시하는 도면이다. 도 13을 참조하면, 네트워크 시스템(4000)은 네트워크(4500)를 통해서 연결된 서버 시스템(4300) 및 복수의 클라이언트 시스템들(4410~4430)을 포함할 수 있다.
서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로 데이터를 제공할 수 있다.
서버 시스템(4300)은 호스트 장치(4100) 및 메모리 시스템(4200)을 포함할 수 있다. 메모리 시스템(4200)은 도 1의 메모리 시스템(100), 도 10의 SSD(1200), 도 11의 메모리 시스템(2200), 도 12의 메모리 시스템(3200)으로 구성될 수 있다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템에 포함된 비휘발성 메모리 장치를 예시적으로 도시하는 블럭도이다. 도 14를 참조하면, 비휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 행 디코더(320), 데이터 읽기/쓰기 블럭(330), 열 디코더(340), 전압 발생기(350) 및 제어 로직(360)을 포함할 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL1~WLm)과 비트 라인들(BL1~BLn)이 서로 교차된 영역에 배열된 메모리 셀(MC)들을 포함할 수 있다.
행 디코더(320)는 워드 라인들(WL1~WLm)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 행 디코더(320)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 행 디코더(320)는 외부 장치(도시되지 않음)로부터 제공된 어드레스를 디코딩할 수 있다. 행 디코더(320)는 디코딩 결과에 근거하여 워드 라인들(WL1~WLm)을 선택하고, 구동할 수 있다. 예시적으로, 행 디코더(320)는 전압 발생기(350)로부터 제공된 워드 라인 전압을 워드 라인들(WL1~WLm)에 제공할 수 있다.
데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn) 각각에 대응하는 읽기/쓰기 회로들(RW1~RWn)을 포함할 수 있다. 데이터 읽기/쓰기 블럭(330)은 제어 로직(360)의 제어에 따라 동작할 수 있다. 데이터 읽기/쓰기 블럭(330)은 동작 모드에 따라서 쓰기 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들면, 데이터 읽기/쓰기 블럭(330)은 쓰기 동작 시 외부 장치로부터 제공된 데이터를 메모리 셀 어레이(310)에 저장하는 쓰기 드라이버로서 동작할 수 있다. 다른 예로서, 데이터 읽기/쓰기 블럭(330)은 읽기 동작 시 메모리 셀 어레이(310)로부터 데이터를 독출하는 감지 증폭기로서 동작할 수 있다.
열 디코더(340)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 열 디코더(340)는 외부 장치로부터 제공된 어드레스를 디코딩할 수 있다. 열 디코더(340)는 디코딩 결과에 근거하여 비트 라인들(BL1~BLn) 각각에 대응하는 데이터 읽기/쓰기 블럭(330)의 읽기/쓰기 회로들(RW1~RWn)과 데이터 입출력 라인(또는 데이터 입출력 버퍼)을 연결할 수 있다.
전압 발생기(350)는 비휘발성 메모리 장치(300)의 백그라운드 동작에 사용되는 전압을 생성할 수 있다. 전압 발생기(350)에 의해서 생성된 전압들은 메모리 셀 어레이(310)의 메모리 셀들에 인가될 수 있다. 예를 들면, 프로그램 동작 시 생성된 프로그램 전압은 프로그램 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다. 다른 예로서, 소거 동작 시 생성된 소거 전압은 소거 동작이 수행될 메모리 셀들의 웰-영역에 인가될 수 있다. 다른 예로서, 읽기 동작 시 생성된 읽기 전압은 읽기 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다.
제어 로직(360)은 외부 장치로부터 제공된 제어 신호에 근거하여 비휘발성 메모리 장치(300)의 제반 동작을 제어할 수 있다. 예를 들면, 제어 로직(360)은 비휘발성 메모리 장치(300)의 읽기, 쓰기, 소거 동작을 제어할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 메모리 시스템
100: 컨트롤러
110: 라이트부
120: 맵 관리자
121: 트리거 감지부
122: L2P 업데이트부
123: 프리 업데이트 테이블 생성부
124: 원본 업데이트 테이블 생성부
130: 메모리
200: 저장 매체
MR0~MRn: 메모리 영역들

Claims (20)

  1. 이전 맵 관리 동작이 완료된 이후부터 생성된 P2L 엔트리들에 근거하여 맵 관리 동작이 트리거된 것으로 결정하되, 상기 P2L 엔트리들은 저장 매체의 메모리 영역의 물리 어드레스들에 대응하는, 단계;
    상기 저장 매체의 라이트 동작이 완료되었는지와 무관하게, 상기 P2L 엔트리들에 근거하여 상기 메모리 영역에 대응하는 프리 업데이트 테이블을 생성하되, 상기 프리 업데이트 테이블은 모든 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 포함하고, 각 프리 업데이트 상태는 대응하는 L2P 세그먼트가 상기 P2L 엔트리들에 포함된 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타내는, 단계;
    상기 라이트 동작이 완료된 뒤 상기 P2L 엔트리들에 근거하여 L2P 엔트리들을 업데이트하는 단계; 및
    상기 L2P 엔트리들을 업데이트한 뒤, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하는 단계를 포함하는 메모리 시스템의 동작 방법.
  2. 제1항에 있어서,
    상기 각 프리 업데이트 상태는 상기 대응하는 L2P 세그먼트가 상기 P2L 엔트리들에 포함된 상기 적어도 하나의 논리 어드레스에 대응하는 상기 L2P 엔트리를 포함할 때 제1 상태로 셋팅되고, 상기 대응하는 L2P 세그먼트가 상기 P2L 엔트리들에 포함된 상기 적어도 하나의 논리 어드레스에 대응하는 상기 L2P 엔트리를 포함하지 않을 때 제2 상태로 셋팅되는 메모리 시스템의 동작 방법.
  3. 제1항에 있어서,
    상기 프리 업데이트 테이블을 생성하는 단계는,
    상기 P2L 엔트리들을 참조하여 상기 물리 어드레스들에 각각 맵핑된 논리 어드레스들을 식별하는 단계;
    상기 식별된 논리 어드레스들에 각각 대응하는 L2P 엔트리들을 각각 포함하는 L2P 세그먼트들을 식별하는 단계;
    상기 식별된 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 제1 상태로 셋팅하는 단계; 및
    상기 모든 L2P 세그먼트들 중 상기 식별된 L2P 세그먼트들을 제외한 나머지 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 제2 상태로 셋팅하는 단계를 포함하는 메모리 시스템의 동작 방법.
  4. 제1항에 있어서,
    상기 새로운 원본 업데이트 테이블은 상기 모든 L2P 세그먼트들에 각각 대응하는 업데이트 상태들을 포함하고,
    각 업데이트 상태는 대응하는 L2P 세그먼트가 상기 메모리 영역에 저장되어 있는 데이터의 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타내는 메모리 시스템의 동작 방법.
  5. 제1항에 있어서,
    상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블 각각은 동일한 크기의 비트맵이고,
    상기 비트맵은 상기 모든 L2P 세그먼트들의 개수만큼의 비트들로 구성되는 메모리 시스템의 동작 방법.
  6. 제1항에 있어서,
    상기 새로운 원본 업데이트 테이블을 생성하는 단계는,
    상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블에 대해 비트와이즈 오어 연산을 수행함으로써 상기 새로운 원본 업데이트 테이블을 생성하는 단계를 포함하는 메모리 시스템의 동작 방법.
  7. 제1항에 있어서,
    상기 메모리 영역이 가비지 컬렉션 동작의 빅팀으로 선택될 때, 상기 메모리 영역에 대응하는 최종 업데이트 테이블을 상기 저장 매체로부터 리드하는 단계;
    상기 최종 업데이트 테이블을 참조하여 업데이트 상태가 제1 상태인 L2P 세그먼트들을 식별하는 단계;
    상기 식별된 L2P 세그먼트들을 상기 저장 매체로부터 리드하는 단계; 및
    상기 식별된 L2P 세그먼트들에 포함된 L2P 엔트리들에서 상기 메모리 영역의 물리 어드레스들을 확인함으로써 상기 메모리 영역에 저장된 유효 데이터를 식별하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  8. 제1항에 있어서,
    상기 L2P 엔트리들을 업데이트하는 단계는,
    상기 P2L 엔트리들 중 제1 물리 어드레스에 대응하는 제1 P2L 엔트리에 포함된 제1 논리 어드레스를 식별하는 단계;
    상기 제1 논리 어드레스에 대응하는 제1 L2P 엔트리를 포함하는 제1 L2P 세그먼트를 상기 저장 매체로부터 리드하는 단계;
    상기 제1 L2P 엔트리가 상기 제1 물리 어드레스를 포함하도록 상기 제1 L2P 세그먼트에서 상게 제1 L2P 엔트리를 업데이트하는 단계; 및
    상기 제1 L2P 세그먼트를 상기 저장 매체에 저장하는 단계를 포함하는 메모리 시스템의 동작 방법.
  9. 저장 매체의 메모리 영역의 물리 어드레스들에 각각 대응하는 P2L 엔트리들을 생성하되, 상기 P2L 엔트리들은 상기 물리 어드레스들에 각각 맵핑된 논리 어드레스들을 포함하는, 단계;
    맵 관리 동작이 트리거될 때, 상기 저장 매체가 라이트 동작을 수행하는 동안, 모든 L2P 세그먼트들 중에서 상기 논리 어드레스들에 각각 대응하는 L2P 엔트리들을 포함하는 제1 L2P 세그먼트들에 대응하는 프리 업데이트 상태들을 제1 상태로 셋팅하고 상기 모든 L2P 세그먼트들 중에서 상기 제1 L2P 세그먼트들을 제외한 제2 L2P 세그먼트들에 대응하는 프리 업데이트 상태들을 제2 상태로 셋팅함으로써, 프리 업데이트 테이블을 생성하는, 단계; 및
    상기 라이트 동작이 완료된 뒤, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하는 단계를 포함하는 메모리 시스템의 동작 방법.
  10. 제9항에 있어서,
    상기 라이트 동작이 완료된 뒤 상기 P2L 엔트리들에 근거하여 상기 L2P 엔트리들을 업데이트하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  11. 제9항에 있어서,
    상기 새로운 원본 업데이트 테이블은 상기 모든 L2P 세그먼트들에 각각 대응하는 업데이트 상태들을 포함하고,
    각 업데이트 상태는 대응하는 L2P 세그먼트가 상기 메모리 영역에 저장되어 있는 데이터의 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타내는 메모리 시스템의 동작 방법.
  12. 제9항에 있어서,
    상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블 각각은 동일한 크기의 비트맵이고,
    상기 비트맵은 상기 모든 L2P 세그먼트들의 개수만큼의 비트들로 구성되는 메모리 시스템의 동작 방법.
  13. 제9항에 있어서,
    상기 새로운 원본 업데이트 테이블을 생성하는 단계는,
    상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블에 대해 비트와이즈 오어 연산을 수행함으로써 상기 새로운 원본 업데이트 테이블을 생성하는 단계를 포함하는 메모리 시스템의 동작 방법.
  14. 맵 관리 동작이 트리거될 때, 이전 맵 관리 동작이 완료된 이후부터 생성된 P2L 엔트리들에 근거하여 L2P 엔트리들을 업데이트하도록 구성되되, 상기 P2L 엔트리들은 저장 매체의 메모리 영역의 물리 어드레스들에 각각 맵핑된 논리 어드레스들을 포함하고, 상기 L2P 엔트리들은 상기 논리 어드레스들에 각각 맵핑된 상기 물리 어드레스들을 포함하는, L2P 업데이트부;
    상기 L2P 엔트리들이 업데이트되기 전에, 모든 L2P 세그먼트들에 각각 대응하는 프리 업데이트 상태들을 포함하는 프리 업데이트 테이블을 생성하도록 구성되되, 상기 프리 업데이트 상태들 중 상기 업데이트될 L2P 엔트리들을 포함하는 L2P 세그먼트들에 대응하는 프리 업데이트 상태들은 제1 상태로 셋팅되는, 프리 업데이트 테이블 생성부; 및
    상기 L2P 엔트리들이 업데이트된 뒤에, 상기 메모리 영역에 대응하는 원본 업데이트 테이블이 존재할 때 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블을 병합하여 새로운 원본 업데이트 테이블을 생성하고, 상기 원본 업데이트 테이블이 존재하지 않을 때 상기 프리 업데이트 테이블을 상기 새로운 원본 업데이트 테이블로 생성하도록 구성된 원본 업데이트 테이블 생성부를 포함하는 메모리 시스템.
  15. 제14항에 있어서,
    상기 L2P 업데이트부는 상기 맵 관리 동작이 트리거 될 때, 상기 저장 매체가 수행 중인 라이트 동작이 완료된 뒤 상기 L2P 엔트리들을 업데이트하는 메모리 시스템.
  16. 제14항에 있어서,
    상기 프리 업데이트 테이블 생성부는 상기 맵 관리 동작이 트리거 될 때, 상기 저장 매체가 수행 중인 라이트 동작의 완료와 무관하게 상기 프리 업데이트 테이블을 생성하는 메모리 시스템.
  17. 제14항에 있어서,
    상기 프리 업데이트 테이블 생성부는, 상기 모든 L2P 세그먼트들 중에서 상기 L2P 세그먼트들을 제외한 나머지 L2P 세그먼트들에 대응하는 프리 업데이트 상태들을 제2 상태로 셋팅하는 메모리 시스템.
  18. 제14항에 있어서,
    상기 새로운 원본 업데이트 테이블은 상기 모든 L2P 세그먼트들에 각각 대응하는 업데이트 상태들을 포함하고,
    각 업데이트 상태는 대응하는 L2P 세그먼트가 상기 메모리 영역에 저장되어 있는 데이터의 적어도 하나의 논리 어드레스에 대응하는 L2P 엔트리를 포함하는지 여부를 나타내는 메모리 시스템.
  19. 제14항에 있어서,
    상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블 각각은 동일한 크기의 비트맵이고,
    상기 비트맵은 상기 모든 L2P 세그먼트들의 개수만큼의 비트들로 구성되는 메모리 시스템.
  20. 제14항에 있어서,
    상기 원본 업데이트 테이블 생성부는, 상기 프리 업데이트 테이블과 상기 원본 업데이트 테이블에 대해 비트와이즈 오어 연산을 수행함으로써 상기 새로운 원본 업데이트 테이블을 생성하는 메모리 시스템.
KR1020200164592A 2020-11-30 2020-11-30 메모리 시스템 및 그것의 동작 방법 KR20220075945A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200164592A KR20220075945A (ko) 2020-11-30 2020-11-30 메모리 시스템 및 그것의 동작 방법
US17/315,942 US11379362B2 (en) 2020-11-30 2021-05-10 Memory system and operating method thereof
CN202110693637.3A CN114579474A (zh) 2020-11-30 2021-06-22 存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200164592A KR20220075945A (ko) 2020-11-30 2020-11-30 메모리 시스템 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220075945A true KR20220075945A (ko) 2022-06-08

Family

ID=81752690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200164592A KR20220075945A (ko) 2020-11-30 2020-11-30 메모리 시스템 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US11379362B2 (ko)
KR (1) KR20220075945A (ko)
CN (1) CN114579474A (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6882993B1 (en) * 2002-01-28 2005-04-19 Oracle International Corporation Incremental refresh of materialized views with joins and aggregates after arbitrary DML operations to multiple tables
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US8489817B2 (en) * 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
KR101533744B1 (ko) 2008-10-16 2015-07-10 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
US10019320B2 (en) * 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10296219B2 (en) * 2015-05-28 2019-05-21 Vmware, Inc. Data deduplication in a block-based storage system
KR20200077276A (ko) * 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11119912B2 (en) * 2019-03-25 2021-09-14 International Business Machines Corporation Ordering data updates for improving garbage collection being performed while performing the set of data updates

Also Published As

Publication number Publication date
US11379362B2 (en) 2022-07-05
US20220171706A1 (en) 2022-06-02
CN114579474A (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
US11243709B2 (en) Data storage apparatus and operating method thereof
US11487669B2 (en) Memory system for storing data of log-structured merge tree structure and data processing system including the same
KR20180051272A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20180130229A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11704048B2 (en) Electronic device
US20220138096A1 (en) Memory system
US20230273748A1 (en) Memory system, operating method thereof and computing system
CN114764396A (zh) 数据存储装置及其操作方法
US20230289059A1 (en) Memory system and operating method thereof
US11720276B2 (en) Memory system and controller for managing write status
KR102545229B1 (ko) 메모리 시스템 및 그것의 동작 방법
US11379362B2 (en) Memory system and operating method thereof
KR20210079894A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210048349A (ko) 메모리 시스템
US11954351B2 (en) Memory system, operating method thereof, and data processing system for processing duplicate data
US11954347B2 (en) Memory system and operating method thereof
US20220043710A1 (en) Data storage apparatus and operating method thereof
KR20230001257A (ko) 메모리 시스템
KR20210093610A (ko) 비휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템