KR20200031924A - 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치 - Google Patents

메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치 Download PDF

Info

Publication number
KR20200031924A
KR20200031924A KR1020180111026A KR20180111026A KR20200031924A KR 20200031924 A KR20200031924 A KR 20200031924A KR 1020180111026 A KR1020180111026 A KR 1020180111026A KR 20180111026 A KR20180111026 A KR 20180111026A KR 20200031924 A KR20200031924 A KR 20200031924A
Authority
KR
South Korea
Prior art keywords
memory
segments
segment
data
mapping table
Prior art date
Application number
KR1020180111026A
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 KR1020180111026A priority Critical patent/KR20200031924A/ko
Priority to US16/506,308 priority patent/US10990536B2/en
Priority to CN201910806885.7A priority patent/CN110908930A/zh
Publication of KR20200031924A publication Critical patent/KR20200031924A/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/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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

Abstract

본 개시는 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 커트롤러를 포함하는 스토리지 장치를 개시한다. 메모리 컨트롤러는, 어드레스 맵핑 테이블, 및 세그먼트 맵핑 테이블을 저장하는 메모리, 및 상기 어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 비휘발성 메모리의 한 페이지에 저장될 페이지 데이터로서 선택하는 관리 모듈을 포함하고, 상기 복수의 세그먼트들 각각은 논리 주소들과 물리 주소들 간의 맵핑 정보를 나타내는 복수의 맵핑 엔트리를 포함하고, 상기 세그먼트 맵핑 테이블은, 상기 비휘발성 메모리 내에서, 상기 복수의 세그먼트들 각각이 저장된 영역들을 나타내는 물리 주소들을 포함한다.

Description

메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치{Memory controller, method of operating the memory controller and storage device comprising memory controller}
본 개시의 기술적 사상은 반도체 장치에 관한 것이며, 더욱 상세하게는, 메모리 컨트롤러, 상기 메모리 컨트롤러의 동작 방법 및 상기 메모리 컨트롤러를 포함하는 스토리지 장치에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), NAND flash storage 및 메모리 카드 등 비휘발성 메모리를 포함하는 스토리지 장치가 널리 사용되고 있다. 비휘발성 메모리는 덮어 쓰기(over write)가 불가능하므로, 논리 주소에 대응하는 데이터가 업데이트되어야 할 경우, 스토리지 장치는 비휘발성 메모리 내에서 종래 데이터가 기입되었던 영역이 아닌, 다른 기입 가능한 영역에 업데이트되는 데이터를 기입하고, 실제 데이터가 기입된 물리 주소와 논리 주소를 포함하는 맵핑 정보를 업데이트할 수 있다. 한편, 맵핑 정보 또한 영구적인 보존을 위해 비휘발성 메모리에 저장될 수 있다.
본 개시의 기술적 사상이 해결하려는 과제는 업데이트된 맵핑 정보를 효율적으로 비휘발성 메모리에 저장할 수 있는 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치를 제공하는 데 있다.
본 개시의 기술적 사상에 따른 메모리 컨트롤러는, 어드레스 맵핑 테이블, 및 세그먼트 맵핑 테이블을 저장하는 메모리, 및 상기 어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 비휘발성 메모리의 한 페이지에 저장될 페이지 데이터로서 선택하는 관리 모듈을 포함하고, 상기 복수의 세그먼트들 각각은 논리 주소들과 물리 주소들 간의 맵핑 정보를 나타내는 복수의 맵핑 엔트리를 포함하고, 상기 세그먼트 맵핑 테이블은, 상기 비휘발성 메모리 내에서, 상기 복수의 세그먼트들 각각이 저장된 영역들을 나타내는 물리 주소들을 포함할 수 있다.
본 개시의 기술적 사상에 따른 메모리 컨트롤러의 동작 방법은, 어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 선택하는 단계, 상기 적어도 두 개의 세그먼트를 하나의 페이지 데이터로서 그룹핑하는 단계, 및 상기 페이지 데이터 및 상기 페이지 데이터가 저장될 영역을 나타내는 물리 주소를 비휘발성 메모리에 제공하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 스토리지 장치는, 비휘발성 메모리, 어드레스 맵핑 테이블, 및 세그먼트 맵핑 테이블을 저장하는 버퍼 메모리 및 상기 어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 상기 비휘발성 메모리의 한 페이지에 저장될 페이지 데이터로서 그룹핑하고, 상기 페이지 데이터를 상기 비휘발성 메모리에 제공하는 메모리 컨트롤러를 포함하고, 상기 복수의 세그먼트들 각각은 논리 주소들과 물리 주소들 간의 맵핑 정보를 나타내는 복수의 맵핑 엔트리를 포함하고, 상기 세그먼트 맵핑 테이블은, 상기 비휘발성 메모리 내에서, 상기 복수의 세그먼트들 각각이 저장된 영역들을 나타내는 물리 주소들을 포함할 수 있다.
본 개시의 기술적 사상에 따른 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 스토리지 장치에 따르면, 어드레스 맵핑 데이터의 맵핑 엔트리들이 비휘발성 메모리에 불필요하게 기입되는 것을 최소화하고, 기입 횟수를 감소시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2a는 본 개시의 예시적 실시예에 따른 어드레스 맵핑 테이블을 나타내는 도면이다.
도 2b는 본 개시의 예시적 실시예에 따른 세그먼트 맵핑 테이블을 나타내는 도면이다.
도 3은 본 개시의 예시적 실시예에 따른 어드레스 맵핑 테이블의 업데이트를 설명하는 도면이다.
도 4a는 본 개시의 예시적 실시예에 따른 업데이트된 세그먼트들의 저장 방법을 나타내고, 도 4b는 본 개시의 예시적 실시예에 따른 세그먼트 맵핑 테이블의 업데이트 방법을 나타내는 도면이다.
도 5a 및 도 5b는 본 개시의 예시적 실시예에 따른 가변적인 데이터 사이즈를 가지는 세그먼트를 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 컨트롤러를 나타내는 블록도이다.
도 7은 본 개시의 예시적 실시에에 따른 컨트롤러(110b)를 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 시스템에서, 맵핑 테이블들의 저장 및 로딩을 설명하는 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 10은 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 설명하는 도면이다.
도 11은 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 12는 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 13a 내지 도 13c는 본 개시의 예시적 실시예에 따라, 세그먼트의 사이즈가 재설정되는 실시예들을 나타내는 도면이다.
도 14는 본 개시의 예시적 실시예에 따른 SSD를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(100)은 컨트롤러(110)(또는 메모리 컨트롤러라고 함) 및 비휘발성 메모리(120)를 포함할 수 있다. 메모리 시스템(100)은 다양한 인터페이스를 통하여 호스트(200)와 통신할 수 있다. 메모리 시스템(100)은 호스트(200)로부터 수신된 읽기/쓰기 커맨드(CMD)에 응답하여 비휘발성 메모리(120)에 데이터(DATA)를 저장하거나, 비휘발성 메모리(120)로부터 데이터(DATA)를 독출할 수 있다.
호스트(200)는 CPU(Central Processing Unit), 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치를 의미할 수 있다. 호스트(200)는 운영 체제(operating system, OS) 및/또는 다양한 응용 프로그램(application)을 수행할 수 있다. 예를 들어, 호스트(200)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다.
데이터(DATA)의 기입 요청 시, 호스트(200)는 쓰기 커맨드(CMD), 데이터(DATA) 및 데이터(DATA)가 저장될 논리 영역을 나타내는 논리 주소(LA)를 메모리 시스템(100)에 전송할 수 있다. 데이터(DATA)의 독출 요청 시, 호스트(200)는 읽기 커맨드(CMD) 및 데이터(DATA)가 독출될 논리 영역을 나타내는 논리 주소(LA)를 메모리 시스템(100)에 전송할 수 있다.
비휘발성 메모리(120)는 메모리 셀 어레이(Memory Cell Array)(MCA)를 포함할 수 있고, 메모리 셀 어레이(MCA)는 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있으며, 메모리 블록(BLK1)은 복수의 페이지들(PG1 내지 PGk)을 포함할 수 있다. 여기서, z와 k는 각각 양의 정수일 수 있고, 실시예에 따라 다양하게 변경될 수 있다. 예를 들어, 메모리 블록은 소거의 단위이고, 페이지는 기입 및 독출의 단위일 수 있다. 일부 실시예들에서, 메모리 셀 어레이(MCA)는 복수의 플레인들(planes), 복수의 다이들(dies), 또는 복수의 칩들(chips)을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(120)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(120)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 장치를 포함할 수 있다. 이하, 본 개시에서 비휘발성 메모리(120)는 NAND 플래쉬 메모리 장치임을 가정하여 설명하기로 한다.
일 실시예에서, 메모리 셀 어레이(MCA)는 3 차원(3D) 메모리 어레이일 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 본 개시의 기술적 사상에 의한 일 실시예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 버티칼 NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
컨트롤러(110)는 호스트(200)로부터의 기입 요청에 응답하여 메모리 셀 어레이(MCA)에 데이터(DATA)를 기입하도록 비휘발성 메모리(120)를 제어 기입하거나, 또는 호스트(200)로부터의 독출 요청에 응답하여 메모리 셀 어레이(MCA)에 저장된 데이터를 독출하도록 비휘발성 메모리(120)를 제어할 수 있다. 컨트롤러(110)는 호스트(200)로부터 수신되는 논리 주소(LA)를 메모리 셀 어레이(MCA) 내의 물리적인 영역을 나타내는 물리 주소(PA)로 변환하고, 변환된 물리 주소(PA)가 나타내는 메모리 셀 어레이(MCA) 내의 한 영역에 데이터(DATA)를 기입하거나, 상기 영역으로부터 데이터(DATA)를 독출할 수 있다. 컨트롤러(110)는 논리 주소(LA)와 물리 주소(PA) 간의 맵핑 정보를 나타내는 어드레스 맵핑 정보(또는 어드레스 맵핑 엔트리라고 함)를 관리할 수 있다.
도 1을 참조하면, 컨트롤러(110)는 어드레스 맵핑 테이블(AMT), 세그먼트 맵핑 테이블(SMT) 및 맵핑 데이터 관리 모듈(MDM)을 포함할 수 있다. 예를 들어, 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)은 컨트롤러(110) 내의 메모리(예를 들어, 도 7의 캐시 메모리(18))에 로딩될 수 있다. 도 1에서, 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)이 컨트롤러(110)에 포함되는 것으로 도시되었으나, 이에 한정되지 않으며, 일부 실시예들에서, 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)은 컨트롤러(110)가 구현된 컨트롤러 칩 외부의 메모리 칩, 예를 들어, DRAM(Dynamic Random Access Memory) 칩에 로딩될 수도 있으며, 또는 비휘발성 메모리 칩에 로딩될 수 있다.
도 2a는 본 개시의 예시적 실시예에 따른 어드레스 맵핑 테이블을 나타내는 도면이다.
도 2a를 참조하면, 어드레스 맵핑 테이블(AMT)은 복수의 세그먼트들(SG0 내지 SGn-1)을 포함할 수 있으며, 세그먼트들 각각은 복수의 맵핑 엔트리(ET0 내지 ET3)를 포함할 수 있다. 도 2a에서, 세그먼트(예컨대, 제2 세그먼트(SG1))는 4 개의 맵핑 엔트리(ET0 내지 ET3)를 포함하는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 세그먼트에 포함되는 맵핑 엔트리들의 개수는 가변될 수 있다.
복수의 세그먼트들(SG0 내지 SGn-1)의 데이터 사이즈는 동일하며, 세그먼트의 데이터 사이즈는 메모리 셀 어레이(MCA)의 기입 단위, 예컨대 페이지의 데이터 사이즈보다 작을 수 있다. 예를 들어, 페이지의 데이터 사이즈가 16KB(kilobyte)라고 가정하면, 세그먼트의 데이터 사이즈는 (16/2N)KB 일 수 있다(N은 양의 정수이며, 2N은 16 이하의 양의 정수). 복수의 세그먼트들(SG0 내지 SGn-1)의 데이터 사이즈는 가변될 수 있다.
복수의 맵핑 엔트리(ET0 내지 ET3) 각각은 논리 주소(LA) 및 상기 논리 주소(LA)에 할당되는 물리 주소(PA)를 포함할 수 있다. 실시예에 있어서, 복수의 맵핑 엔트리(ET0 내지 ET3) 각각은 논리 페이지 번호(LPN) 및 논리 페이지 번호(LPN)에 할당되는 물리 페이지 번호(PPN)를 포함할 수 있다. 예컨대, 제1 맵핑 엔트리(ET0)는 논리 페이지 번호 LPN_a0 및 이에 할당된, 물리 페이지 번호 PPN_a1를 포함할 수 있다. 이와 같이, 논리 페이지 번호에 대하여 물리 페이지 번호를 맵핑하는 기법은 페이지 맵핑 기법으로 지칭될 수 있다.
한편, 비휘발성 메모리(120)는 덮어 쓰기(over write)가 불가능하므로, 논리 주소(LA)에 대응하는 데이터가 업데이트되어야 할 경우, 컨트롤러(110)는 메모리 셀 어레이(MCA) 내에서 이전에 데이터(DATA)가 기입되었던 영역이 아닌, 다른 영역, 예컨대 소거 상태의 유효 영역에 업데이트될 데이터(DATA)를 기입하고, 논리 주소(LA)에 대응하는 물리 주소(PA)를 실제 데이터가 기입된 영역을 나타내는 물리 주소로 업데이트할 수 있다. 즉, 컨트롤러(110)는 맵핑 엔트리를 업데이트할 수 있다.
예를 들어서, 물리 페이지 번호 PPN_a1에 대응하는 메모리 셀 어레이(MCA)의 한 영역에 논리 페이지 번호 LPN_a0에 대한 데이터(DATA)가 저장된 상태에서, 호스트(200)로부터 기입 커맨드(CMD)와 함께, 논리 페이지 번호 PPN_a1 및 비휘발성 메모리(120)에 기입될 데이터(DATA)가 수신되는 경우, 컨트롤러(120)는 데이터(DATA)를 메모리 셀 어레이(MCA)의 유효 페이지에 저장하고, 제1 맵핑 엔트리(ET0)의 물리 주소(PA)를 상기 유효 페이지의 물리 페이지 번호로 업데이트 할 수 있다. 예컨대, 상기 유효 페이지의 물리 페이지 번호가 PPN_a5인 경우, 제1 맵핑 엔트리(ET0)의 물리 주소(PA)는 물리 페이지 번호 PPN_a1에서 물리 페이지 번호 PPN_a5로 변경될 수 있다.
컨트롤러(110)는 어드레스 맵핑 테이블(AMT)의 영속성을 위하여 비휘발성 메모리(120)에 어드레스 맵핑 테이블(AMT)을 저장할 수 있으며, 메모리 시스템(100)의 파워-온 시 비휘발성 메모리(120)에 저장된 어드레스 맵핑 테이블(AMT)을 컨트롤러(110) 내의 메모리(또는 컨트롤러(110) 외부의 DRAM 칩)에 로딩할 수 있다. 컨트롤러(110)는 주기적으로 또는 이벤트의 발생에 응답하여, 어드레스 맵핑 테이블(AMT)의 복수의 세그먼트들(SG0 내지 SGn-1) 중 업데이트된 세그먼트들의 적어도 일부를 비휘발성 메모리(120)에 저장할 수 있다. 이때, 업데이트된 세그먼트는 업데이트된 적어도 하나의 맵핑 엔트리를 포함하는 세그먼트를 의미한다.
도 2b는 본 개시의 예시적 실시예에 따른 세그먼트 맵핑 테이블을 나타내는 도면이다.
도 2b를 참조하면, 세그먼트 맵핑 테이블(SMT)은 어드레스 맵핑 테이블(AMT)의 복수의 세그먼트들(SG0 내지 SGn-1) 각각에 대응하는 물리 주소들(PA)을 포함한다. 물리 주소(PA)는 비휘발성 메모리(120)의 메모리 셀 어레이(MCA) 내에서 세그먼트가 저장된 영역을 나타낸다. 세그먼트 맵핑 테이블(SMT)은 비휘발성 메모리(120)의 메모리 셀 어레이(MCA) 내에서 복수의 세그먼트들(SG0 내지 SGn-1)이 저장된 위치, 즉 세그먼트들의 맵핑 정보를 포함한다.
도 2a를 참조하여 전술한 바와 같이, 세그먼트들의 데이터 사이즈는 페이지의 데이터 사이즈보다 작으며, 메모리 셀 어레이(MCA)의 한 페이지에 복수의 세그먼트들이 저장될 수 있다. 따라서, 세그먼트 맵핑 테이블(SMT)에 포함된 물리 주소(PA)는 물리 페이지 번호 및 오프셋을 포함할 수 있다. 오프셋은 페이지 내에서 세그먼트가 저장된 위치를 나타낸다. 예컨대, 오프셋은 페이지의 첫 번째 바이트로부터 몇 바이트 떨어진 지점에서부터 세그먼트가 저장되는지를 나타낸다.
도 2b에 도시된 바와 같이, 복수의 세그먼트들, 예컨대 네 개의 세그먼트들이 하나의 페이지에 저장될 수 있다. 예를 들어서, 제1 내지 제4 세그먼트(SG0 내지 SGn-1)가 하나의 페이지에 저장될 경우, 제1 내지 제4 세그먼트(SG0 내지 SGn-1)의 물리 페이지 번호는 동일하며, 오프셋이 서로 상이할 수 있다.
도 2a를 참조하여 전술한 바와 같이, 복수의 세그먼트들(SG0 내지 SGn-1) 중 일부 세그먼트가 업데이트될 수 있으며, 업데이트된 세그먼트는 비휘발성 메모리(120)에 저장될 수 있다. 업데이트된 세그먼트가 비휘발성 메모리(120)에 저장될 경우, 세그먼트 맵핑 테이블(SMT)에서, 상기 세그먼트의 물리 주소(PA)가 변경될 수 있다. 예를 들어서, 제2 세그먼트(SG1)가 업데이트되고, 비휘발성 메모리(120)의 메모리 셀 어레이(MCA)에 저장될 경우, 제2 세그먼트(SG1)의 물리 주소(PA)는 물리 페이지 번호 PPN_b0 및 오프셋 OFF_1에서, 업데이트된 데이터가 저장된 물리 페이지 번호 및 오프셋을 나타내는 물리 주소로 변경될 수 있다. 이와 같이, 업데이트된 세그먼트가 비휘발성 메모리(120)에 저장될 때, 상기 세그먼트에 대응하는 물리 주소(PA)가 업데이트될 수 있다.
한편, 컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)의 영속성을 위하여 비휘발성 메모리(120)에 세그먼트 맵핑 테이블(SMT)을 저장할 수 있다. 컨트롤러(110)는 주기적으로 또는 이벤트의 발생에 응답하여, 세그먼트 맵핑 테이블(SMT)을 비휘발성 메모리(120)에 저장할 수 있다. 컨트롤러(110)는 메모리 시스템(100)의 파워-온 시 비휘발성 메모리(120)에 저장된 세그먼트 맵핑 테이블(SMT)을 컨트롤러(110) 내의 메모리(또는 컨트롤러(110) 외부의 DRAM 칩)에 로딩할 수 있다. 컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)의 세그먼트들의 맵핑 정보를 기초로, 비휘발성 메모리(120)로부터 어드레스 맵핑 테이블(AMT)을 로딩할 수 있다.
계속하여 도 1을 참조하면, 맵핑 데이터 관리 모듈(MDM)은 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)을 관리할 수 있다. 맵핑 데이터 관리 모듈(MDM)은 어드레스 맵핑 테이블(AMT)의 복수의 세그먼트들(SG0 내지 SGn-1) 중 업데이트된 세그먼트들을 비휘발성 메모리(120)에 저장할 수 있다. 맵핑 데이터 관리 모듈(MDM)은 복수의 세그먼트들(SG0 내지 SGn-1) 중 업데이트된 적어도 두 개의 세그먼트를 비휘발성 메모리(120)의 한 페이지에 저장될 페이지 데이터로서 선택할 수 있다. 맵핑 데이터 관리 모듈(MDM)은 상기 적어도 두 개의 세그먼트가 저장될 페이지를 나타내는 물리 주소(PA)를 기초로 세그먼트 맵핑 테이블(SMT)을 업데이트할 수 있다. 맵핑 데이터 관리 모듈(MDM)은 선택된 적어도 두 개의 세그먼트 및 저장될 페이지를 나타내는 물리 주소(PA)를 비휘발성 메모리(120)에 제공할 수 있다.
실시예에 있어서, 맵핑 데이터 관리 모듈(MDM)은 펌웨어 또는 소프트웨어로 구현될 수 있고, 컨트롤러(120) 내의 메모리에 로딩될 수 있다. 일 실시예에서, 맵핑 데이터 관리 모듈(MDM)은 FTL의 일부로서 구현될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 맵핑 데이터 관리 모듈(MDM)은 하드웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다.
이와 같이 본 개시의 실시예에 따른 메모리 시스템(100)에서, 컨트롤러(110)는 어드레스 맵핑 테이블(AMT)의 맵핑 엔트리들을 메모리 셀 어레이(MCA)의 기입 단위, 즉 페이지 단위 보다 작은 세그먼트 단위로 그룹핑하여 관리하되, 업데이트된 적어도 두 개의 세그먼트를 하나의 페이지 데이터로서 그룹핑하고, 페이지 데이터를 메모리 셀 어레이(MCA)의 한 페이지에 기입할 수 있다. 컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)을 이용하여, 메모리 셀 어레이(MCA)에서, 어드레스 맵핑 테이블(AMT)에 포함되는 복수의 세그먼트들 각각이 저장된 위치를 나타내는 물리 주소(PA)를 관리하고, 업데이트된 세그먼트가 메모리 셀 어레이(MCA)에 기입되면, 기입된 위치를 나타내는 물리 주소를 기초로, 세그먼트 맵핑 테이블(SMT)을 업데이트할 수 있다.
본 개시의 실시예에 대한 비교 실시예로서, 컨트롤러(110)가 어드레스 맵핑 테이블(AMT)의 맵핑 엔트리들을 페이지 단위로 관리하고, 업데이트된 맵핑 엔트리들을 비휘발성 메모리(120)에 저장하기 위하여, 페이지 단위로 그룹핑된 맵핑 엔트리들을 메모리 셀 어레이(MCA)에 기입할 경우, 업데이트되지 않은 다수의 맵핑 엔트리들이 함께 메모리 셀 어레이(MCA)에 기입될 수 있다. 이에 따라서 불필요한 기입이 발생할 수 있다. 또한, 어드레스 맵핑 테이블(AMT)의 복수의 위치에서 맵핑 엔트리들이 업데이트되는 경우, 다시 말해서 상이한 복수의 페이지에 속하는 맵핑 엔트리들이 업데이트되는 경우, 업데이트된 맵핑 엔트리들이 비휘발성 메모리(120)에 저장되기 위해서는, 복수의 기입 동작이 수행되어야 하는 바, 비휘발성 메모리(120)에 오버헤드가 발생할 수 있다.
그러나, 전술한 바와 같이, 본 개시의 실시예에 따른 메모리 시스템(100)에서, 컨트롤러(110)는 맵핑 엔트리들을 페이지보다 작은 세그먼트 단위로 관리하고, 업데이트된 맵핑 엔트리들을 포함하는 업데이트된 세그먼트들을 페이지 데이터로서 그룹핑하여 메모리 셀 어레이(MCA)에 기입함으로써, 불필요한 기입을 최소화하고, 기입 횟수를 감소시킬 수 있다. 이에 따라서, 비휘발성 메모리(120)의 오버헤드가 감소될 수 있다.
본 개시의 실시예에 따른 메모리 시스템(100)은 전자 장치에 내장(embedded)되거나 또는 전자 장치로 구현될 수 있다. 전자 장치는 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT (Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 메모리 시스템(100)은 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 메모리 시스템(100)은 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 메모리 시스템(100)은 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 메모리 시스템(100)은 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 어드레스 맵핑 테이블의 업데이트를 설명하는 도면이다.
도 3을 참조하면. 어드레스 맵핑 테이블(AMT)은 복수의 세그먼트들(SG0 내지 SGn-1)을 포함할 수 있으며, 세그먼트들 각각은 논리 주소(LA)에 대응하는 물리 주소(PA)를 포함하는 복수의 맵핑 엔트리들을 포함할 수 있다. 예컨대, 세그먼트들 각각은 네 개의 맵핑 엔트리들을 포함할 수 있다.
예를 들어, 제2 세그먼트(SG1)는 제1 내지 제4 맵핑 엔트리들(ET0 내지 ET3)을 포함할 수 있다. 제1 맵핑 엔트리(ET0)는 논리 페이지 번호 LPN_a0 및 이에 대응하는 물리 페이지 번호 PPN_a0를 포함하고, 제2 맵핑 엔트리(ET1)는 논리 페이지 번호 LPN_a1 및 이에 대응하는 물리 페이지 번호 PPN_a2를 포함하고, 제3 맵핑 엔트리(ET2)는 논리 페이지 번호 LPN_a2 및 이에 대응하는 물리 페이지 번호 PPN_a2를 포함하고, 제4 맵핑 엔트리(ET3)는 논리 페이지 번호 LPN_a3 및 이에 대응하는 물리 페이지 번호 PPN_a3를 포함할 수 있다.
호스트(도 1의 200)로부터 기입 커맨드와 함께 데이터가 저장될 논리 주소(LA)가 수신될 수 있으며, 논리 페이지 번호 LPN_a1 및 LPN_a3가 논리 주소(LA)로서 수신될 경우, 논리 페이지 번호 LPN_a1 및 LPN_a3에 대응하는 물리 페이지 번호들이 재할당될 수 있다. 예컨대, 제2 맵핑 엔트리(ET1)의 논리 페이지 번호 LPN_a1 및 제4 엔트리(ET3)의 논리 페이지 번호 LPN_a3에 대하여 각각 물리 페이지 번호 PPN_b1 및 PPN_b2가 할당될 수 있다. 호스트(200)로부터 기입 요청된 데이터는 비휘발성 메모리(도 1의 120)의 메모리 셀 어레이(도 1의 MCA) 내에서, 물리 페이지 번호 PPN_b1 및 PPN_b2에 대응하는 영역에 저장될 수 있다.
한편, 제2 맵핑 엔트리(ET1) 및 제4 맵핑 엔트리(ET3)의 물리 페이지 번호는 PPN_b1 및 PPN_b2로 변경될 수 있다. 다시 말해서, 제2 맵핑 엔트리(ET1) 및 제4 맵핑 엔트리(ET3)가 업데이트될 수 있다. 또한, 제2 세그먼트(SG1)는 업데이트된 맵핑 엔트리들을 포함하는 바, 업데이트된 세그먼트로 판단될 수 있다. 이와 같이, 복수의 세그먼트들(SG0 내지 SGn-1) 중 적어도 하나의 업데이트된 맵핑 엔트리를 포함하는 세그먼트는 업데이트된 세그먼트로 판단될 수 있다.
도 4a는 본 개시의 예시적 실시예에 따른 업데이트된 세그먼트들의 저장 방법을 나타내고, 도 4b는 본 개시의 예시적 실시예에 따른 세그먼트 맵핑 테이블의 업데이트 방법을 나타내는 도면이다.
어드레스 맵핑 테이블(AMT)에 포함되는 복수의 세그먼트들(SG0 내지 SGn-1)의 데이터 사이즈는 페이지의 데이터 사이즈의 1/4이고, 복수의 세그먼트들(SG0 내지 SGn-1) 중 세그먼트 SG1, SG5, SGa 및 SGb가 업데이트된 세그먼트라고 가정한다.
도 1 및 도 4a를 참조하면, 컨트롤러(110)의 맵핑 데이터 관리 모듈(MDM)은 업데이트된 세그먼트들을 페이지 단위로 그룹핑하고, 그룹핑된 세그먼트들을 비휘발성 메모리(120)에 저장할 수 있다. 도시된 바와 같이, 맵핑 데이터 관리 모듈(MDM)은 업데이트된 세그먼트들 SG1, SG5, SGa 및 SGb를 하나의 페이지 데이터로서 그룹핑하고, 그룹핑된 페이지 데이터를 비휘발성 메모리(120)에 제공할 수 있다. 비휘발성 메모리(120)는 수신된 페이지 데이터, 즉 그룹핑된 세그먼트들 SG1, SG5, SGa 및 SGb에 포함되는 데이터를 한 번의 기입 동작을 통해 메모리 셀 어레이(MCA)의 한 페이지에 기입할 수 있다.
도시된 바와는 다른 예로서, 복수의 세그먼트들(SG0 내지 SGn-1)의 데이터 사이즈가 페이지의 데이터 사이즈의 1/2일 경우, 맵핑 데이터 관리 모듈(MDM)은 업데이트된 세그먼트들 SG1 및 SG5 를 하나의 페이지 데이터로서 그룹핑하고, 그룹핑된 페이지 데이터를 비휘발성 메모리(120)에 제공할 수 있다. 또한, 맵핑 데이터 관리 모듈(MDM)은 업데이트된 세그먼트들 SGa 및 SGb를 다른 하나의 페이지 데이터로서 그룹핑하고, 다른 하나의 페이지 데이터를 비휘발성 메모리(120)에 제공할 수 있다. 비휘발성 메모리(120)는 수신된 두 개의 페이지 데이터를 두 번의 기입 동작을 통하여 메모리 셀 어레이(MCA)의 두 페이지에 기입할 수 있다.
한편, 도 4b에 도시된 바와 같이, 세그먼트 맵핑 테이블(SMT)에서, 메모리 셀 어레이(MCA)에 저장된 업데이트된 세그먼트들 SG1, SG5, SGa 및 SGb의 물리 주소(PA)가 업데이트될 수 있다. 업데이트된 세그먼트들 SG1, SG5, SGa 및 SGb은 메모리 셀 어레이(MCA)에서, 동일한 한 페이지에 저장되므로, 세그먼트들 SG1, SG5, SGa 및 SGb에 대응하는 물리 주소(PA)들은 동일한 페이지 번호, 예컨대 PPN_g0를 포함할 수 있다. 또한, 세그먼트들 SG1, SG5, SGa 및 SGb에 대응하는 물리 주소(PA)들은 물리 페이지 번호 PPN_g0에 대응하는 페이지 내에서, 세그먼트들 SG1, SG5, SGa 및 SGb이 저장된 위치를 나타내는 서로 다른 오프셋, 예컨대 OFF_0, OFF_1, OFF_2, 및 OFF_3을 포함할 수 있다.
도 5a 및 도 5b는 본 개시의 예시적 실시예에 따른 가변적인 데이터 사이즈를 가지는 세그먼트를 나타내는 도면이다.
도 5a및 도 5b를 참조하면 세그먼트의 데이터 사이즈는 가변될 수 있다. 예를 들어서, 도 5a에 도시된 바와 같이, 세그먼트(SG)의 데이터 사이즈는 4KB일 수 있다. 페이지의 데이터 사이즈가 16KB일 경우, 업데이트된 세그먼트들이 비휘발성 메모리(도 1의 120)에 저장되기 위해서, 네 개의 세그먼트(SG)들이 한 페이지로 그룹핑될 수 있다. 다른 예로서, 도 5b에 도시된 바와 같이, 세그먼트(SG)의 데이터 사이즈는 2KB일 수 있다. 페이지의 데이터 사이즈가 16KB일 경우, 업데이트된 세그먼트들이 비휘발성 메모리(도 1의 120)에 저장되기 위해서, 여덟 개의 세그먼트(SG)들이 한 페이지로 그룹핑될 수 있다.
실시예에 있어서, 세그먼트(SG)의 데이터 사이즈는 메모리 시스템(도 1의 100)의 파워-온에 따른 셋업 단계에서 설정되될 수 있다. 이 때, 매 셋업 단계에서 세그먼트(SG)의 데이터 사이즈가 가변될 수 있다.
다른 실시예에 있어서, 세그먼트(SG)의 데이터 사이즈는 메모리 시스템(100)의 동작 단계에서 설정될 수 있으며, 메모리 시스템(100)의 동작 과정에서, 세그먼트(SG)의 데이터 사이즈가 가변될 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 컨트롤러를 나타내는 블록도이다.
도 6을 참조하면, 컨트롤러(110a)는 프로세서(11), 워킹 메모리(12), ECC(error correction code) 엔진(13), 호스트 인터페이스(14), DRAM 인터페이스(15) 및 비휘발성 메모리 인터페이스(16)를 포함할 수 있고, 이들은 버스(17)를 통해 서로 통신할 수 있다.
프로세서(11)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110a)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(111\)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드(quad) 코어 프로세서로 구현될 수 있다.
워킹 메모리(12)는 컨트롤러(110a)를 제어하기 위한 펌웨어(Firmware) 및 데이터가 저장될 수 있다. 저장된 펌에워 및 데이터는 프로세서(11)에 의해 구동될 수 잇다. 워킹 메모리(12)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수 있다.
워킹 메모리(12)에는 플래시 변환 계층(Flash Translation Layer; FTL)이 저장될 수 있다. 비휘발성 메모리(도 1의 120)의 기입/독출 동작은 페이지 단위로 수행되고, 수거 동작은 블록 단위로 수행되므로, 비휘발성 메모리(120)의 기입, 독출 및 소거 동작에 대한 관리가 필요하다. FTL은 비휘발성 메모리(120)의 기입, 독출 및 소거 동작을 관리하기 위한 시스템 소프트웨어(또는, 펌웨어)이다. FTL은 워킹 메모리(12)에 로딩되어, 프로세서(11)에 의해서 구동될 수 있다.
예를 들어, FTL은 호스트(도 1의 200)로부터 제공되는 논리 주소와 비휘발성 메모리 장치(120)에서 사용되는 물리 주소를 매치하는 어드레스 맵핑 테이블(AMT)을 관리할 수 있다. FTL은 맵핑 데이터 관리 모듈(도 1의 MDM)을 포함할 수 있으며, 맵핑 데이터 관리 모듈(MDM)은 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)을 관리할 수 있다. 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)은 컨트롤러(110a) 외부의 DRAM(130)에 저장될 수 있다. 그러나, 이에 제한되는 것은 아니며, 실시예에 있어서, 워킹 메모리(12)는 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있으며, 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)은 워킹 메모리(12)에 저장될 수 있다.
ECC 엔진(13)은 비휘발성 메모리(120)에 기입될 데이터에 대하여 오류 정정 인코딩을 수행하고, 비휘발성 메모리(120)로부터 독출된 데이터에 대하여 에러 정정 디코딩을 수행할 수 있다. ECC 엔진(13)은 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있으며 이에 한정되는 것은 아니다. 한편, 어드레스 맵핑 테이블(AMT)의 세그먼트들이 비휘발성 메모리(120)에 저장될 때 ECC 엔진(13)은 세그먼트들에 대하여 오류 정정 인코딩을 수행할 수 있다. 따라서, 세그먼트의 최소 단위는 ECC 단위로 설정될 수 있다.
호스트 인터페이스(14)는 호스트(200)와 컨트롤러(110a) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다.
DRAM 인터페이스(15)는 컨트롤러(110a)와 DRAM(130) 사이의 인터페이스를 제공할 수 있다. DRAM(130)은 DRAM 인터페이스(15)를 통해 호스트(200)로부터 제공되는 기입 데이터 또는 비휘발성 메모리(120)로부터 독출된 데이터를 일시 저장할 수 있다. 호스트(200)의 독출 요청 시에 비휘발성 메모리(120)에 존재하는 데이터가 DRAM(130)에 캐시되어 있는 경우에는, DRAM(130)은 캐시된 데이터를 직접 호스트로 제공하는 캐시 기능을 지원할 수 있다. 이때, 비휘발성 메모리 장치(120)로의 액세스는 발생하지 않는다. 일반적으로, 호스트(200)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 메모리 시스템(100)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(200)의 인터페이스 속도가 월등히 높은 경우, 대용량의 DRAM(130)이 버퍼링 기능을 제공함으로써, 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다. DRAM(130)에는 또한, 비휘발성 메모리(120)로부터 독출된 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)이 저장될 수 있다.
비휘발성 메모리 인터페이스(16)는 컨트롤러(110a)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 호스트(200)로부터 기입 또는 독출 요청된 데이터가 비휘발성 메모리 인터페이스(16)를 통해 컨트롤러(110)와 비휘발성 메모리(120) 사이에서 송수신될 수 있다. 또한, 비휘발성 메모리(120)에 저장된 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)이 비휘발성 메모리 인터페이스(16)를 통해 컨트롤러(110a)와 비휘발성 메모리(120) 사이에서 송수신될 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(16)의 개수는 비휘발성 메모리(120)를 구성하는 비휘발성 메모리 칩의 개수 또는, 컨트롤러(110a)와 비휘발성 메모리(120) 사이의 채널들의 개수에 대응할 수 있다.
도 7은 본 개시의 예시적 실시에에 따른 컨트롤러(110b)를 나타내는 블록도이다.
도 7을 참조하면, 컨트롤러(110b)는 프로세서(11), 워킹 메모리(12), ECC(error correction code) 엔진(13), 호스트 인터페이스(14), 비휘발성 메모리 인터페이스(16) 및 캐시 메모리(18)를 포함할 수 있고, 이들은 버스(17)를 통해 서로 통신할 수 있다.
프로세서(11), 워킹 메모리(12), ECC(error correction code) 엔진(13), 호스트 인터페이스(14), 비휘발성 메모리 인터페이스(16)의 동작은 도 6을 참조하여 설명한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
캐시 메모리(18)는 캐시 기능을 지원할 수 있으며, 레지스터, SRAM, DRAM 등으로 구현될 수 있다. 비휘발성 메모리로 비휘발성 메모리(도 1의 120)에 저장된 데이터의 일부가 캐시 메모리(18)에 임시 저장될 수 있으며, 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)이 저장될 수 있다.
실시예에 있어서, 캐시 메모리(18)의 용량이 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT) 전부를 저장하기에 부족할 경우, 어드레스 맵핑 테이블(AMT)의 적어도 일부(예컨대, 어드레스 맵핑 테이블(AMT)의 복수의 세그먼트들 중 일부 세그먼트), 또는 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT) 각각의 적어도 일부가 캐시 메모리(18)에 저장(캐싱)될 수 있다. 호스트(도1의 200)로부터 제공된 논리 주소가 캐시 메모리(18)에 저장된 세그먼트들에 포함된 매핑 엔트리들에 포함되지 않는 경우, 비휘발성 메모리(120)에 저장된 세그먼트 맵핑 테이블에 포함된 다른 세그먼트들이 비휘발성 메모리(120)로부터 독출되어 캐시 메모리(18)에 저장될 수 있다. 이 때, 캐시 메모리(18)의 용량이 제한적이므로, 캐시 메모리(18)에 기 저장된 세그먼트들 중 일부가 플러싱될 수 있다. 전술한 바와 같이, 업데이트된 세그먼트들은 페이지 단위로 그룹핑되고, 그룹핑된 세그먼트들이 비휘발성 메모리(120)에 저장될 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 시스템에서, 맵핑 테이블들의 저장 및 로딩을 설명하는 도면이다.
도 8을 참조하면, 비휘발성 메모리 장치(120)의 메모리 셀 어레이는 메타 데이터 영역(121) 및 유저 데이터 영역(122)을 포함할 수 있다. 유저 데이터 영역(122)에는 호스트(200)로부터 기입이 요청된 일반 데이터가 저장될 수 있다. 메타 데이터 영역(121)에는 유저 데이터 영역(122)에 저장되는 데이터를 관리하기 위한 메타 데이터가 저장될 수 있다. 예를 들어, 메타 데이터는 논리 주소들과 물리 주소들 간의 맵핑 정보, 각 블록들의 기입 및 소거 횟수, 웨어 레벨링 정보 등을 포함할 수 있다.
실시예에 있어서, 메타 데이터 영역(121)에는 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)이 저장될 수 있다. 메모리 시스템(100)의 파워-온 시, 컨트롤러(110)는 비휘발성 메모리(120)로부터 세그먼트 맵핑 테이블(SMT)을 독출할 수 있다. 컨트롤러(110)는 또한, 비휘발성 메모리(120)로부터 어드레스 맵핑 테이블(AMT)을 독출할 수 있다. 이 때, 컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)에 포함된 세그먼트 맵핑 정보를 기초로 비휘발성 메모리(120)로부터 세그먼트들을 독출함으로써, 어드레스 맵핑 테이블(AMT)을 독출할 수 있다. 독출된 세그먼트 맵핑 테이블(SMT) 및 어드레스 맵핑 테이블(AMT)은 DRAM(130)에 로딩될 수 있다. 그러나, 이에 제한되는 것은 아니며, 실시예에 있어서, 세그먼트 맵핑 테이블(SMT) 및 어드레스 맵핑 테이블(AMT)은 컨트롤러(110) 내의 메모리에 로딩될 수도 있다.
한편, DRAM(130)에 로딩된 어드레스 맵핑 테이블(AMT)에서 적어도 하나의 세그먼트가 업데이트된 경우, 컨트롤러(110)는 적어도 하나의 세그먼트를 비휘발성 메모리(120)의 메타 데이터 영역(121)에 저장할 수 있다. 컨트롤러(110)는 전술한 바와 같이, 업데이트된 적어도 두 개의 세그먼트들을 페이지 단위로 그룹핑하고, 그룹핑된 데이터를 비휘발성 메모리(120)에 제공할 수 있다. 또한, 컨트롤러(110)는 업데이트된 세그먼트 맵핑 테이블(SMT)을 비휘발성 메모리(120)에 저장할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 1및 도 9를 참조하면, 컨트롤러(110)는 어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 적어도 두 개의 세그먼트를 업데이트할 수 있다(S110). 컨트롤러(110)는 호스트(200)로부터의 기입 요청(즉, 기입 커맨드 및 논리 주소)에 따라 데이터를 비휘발성 메모리(120)에 저장할 수 있으며, 논리 주소에 대응하는 맵핑 엔트리를 업데이트함으로써, 상기 맵핑 엔트리를 포함하는 세그먼트를 업데이트할 수 있다. 호스트(200)로부터의 복수의 기입 요청에 따라서, 컨트롤러(110)는 적어도 두 개의 세그먼트를 업데이트할 수 있다.
컨트롤러(110)는 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 선택할 수 있다(S120). 컨트롤러(110)는 상기 적어도 두 개의 세그먼트를 비휘발성 메모리(120)의 한 페이지에 저장될 페이지 데이터로서 선택할 수 있다(S120). 실시예에 있어서, 컨트롤러(110)는 업데이트된 세그먼트들 중 업데이트된 맵핑 엔트리를 상대적으로 많이 포함하는 세그먼트들을 선택할 수 있다. 다른 실시예에 있어서, 컨트롤러(110)는 세그먼트들 각각의 중요도를 판단할 수 있으며, 컨트롤러(110)는 업데이트된 세그먼트들 중 상대적으로 중요도가 높은 세그먼트들을 선택할 수 있다.
컨트롤러(110)는 선택된 적어도 두 개의 세그먼트를 비휘발성 메모리(120)에 저장할 수 있다(S130). 컨트롤러(110)는 선택된 적어도 두 개의 세그먼트를 그룹핑하여 페이지 데이터를 생성하고, 페이지 데이터 및 상기 페이지 데이터가 저장될 위치를 나타내는 물리 주소를 비휘발성 메모리(120)에 제공할 수 있다. 비휘발성 메모리(120)는 물리 주소에 기초하여 페이지 데이터를 메모리 셀 어레이(MCA)에 저장할 수 있다. 적어도 두 개의 세그먼트를 포함하는 상기 페이지 데이터는 메모리 셀 어레이(MCA)의 메타 데이터 영역에 저장될 수 있다.
컨트롤러(110)는 비휘발성 메모리(120)의 메모리 셀 어레이(MCA) 내에서 상기 적어도 두 개의 세그먼트가 저장된 물리 주소를 기초로 세그먼트 맵핑 테이블을 업데이트할 수 있다(S140). 컨트롤러(110)는 어드레스 맵핑 테이블(AMT)에 포함된 복수의 세그먼트들 각각에 대한 물리 주소를 관리할 수 있으며, 상기 세그먼트들이 저장된 물리 페이지 번호 및 오프셋을 기초로, 상기 두 개의 세그먼트들에 대응하는 물리 주소를 업데이트할 수 있다.
이후, 주기적으로 또는 메모리 시스템의 파워-오프 등과 같은 특정 이벤트컨발생 시, 컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)을 비휘발성 메모리(120)에 저장할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 설명하는 도면이다.
도 10을 참조하면, 컨트롤러(110)는 캐시 메모리(18)를 포함할 수 있으며, 캐시 메모리(18)에는 어드레스 맵핑 테이블(AMT)의 일부(AMTa)가 로딩(저장)될 수 있다. 캐시 메모리(18)의 용량은 어드레스 맵핑 테이블(AMT) 전부를 로딩하기에 상대적으로 적을 수 있으며, 이에 따라서, 비휘발성 메모리(120)에 저장된 어드레스 맵핑 테이블(AMT)의 일부(AMTa)가 캐시 메모리(18)에 로딩될 수 있다. 예컨대, 제1 내지 제8 세그먼트들(SG0 내지 SG7)이 캐시 메모리(18)에 로딩될 수 있다. 또한 도시되지 않았으나, 세그먼트 맵핑 테이블(SMT)이 캐시 메모리(18)에 로딩될 수 있다.
제1 내지 제8 세그먼트들(SG0 내지 SG7) 중 제2 세그먼트(SG1), 제7 세그먼트(SG7) 및 제8 세그먼트(SG8)가 업데이트된 상태에서, 다른 세그먼트들이 캐시 메모리(18)에 로딩되어야 할 경우, 업데이트된 세그먼트들 중 일부가 플러싱될 수 있다. 즉, 업데이트된 세그먼트들 중 일부가 비휘발성 메모리(120)에 저장될 수 있다.
맵핑 데이터 관리 모듈(MDM)은 업데이트된 세그먼트들(SG1, SG6 및 SG7) 중 일부를 선택하고, 선택된 세그먼트들을 페이지 데이터로서 그룹핑할 수 있다. 실시예에 있어서, 맵핑 데이터 관리 모듈(MDM)은 상대적으로 업데이트된 맵핑 엔트리들을 많이 포함하는 세그먼트 또는 상대적으로 중요도가 높은 세그먼트들을 선택할 수 있다. 예를 들어서, 맵핑 데이터 관리 모듈(MDM)은 제2 세그먼트(SG1) 및 제8 세그먼트(SG8)를 선택하고, 선택된 제2 세그먼트(SG1) 및 제8 세그먼트(SG8)는 페이지 데이터로서 그룹핑될 수 있다. 제2 세그먼트(SG1) 및 제8 세그먼트(SG8) 메모리 장치(120)로 제공되며, 비휘발성 메모리(120)는 제2 세그먼트(SG1) 및 제8 세그먼트(SG8)를 메타 데이터 영역(121)의 한 페이지에 저장할 수 있다.
한편, 비휘발성 메모리(120)에 저장된 어드레스 맵핑 테이블(AMT)에 포함된 복수의 세그먼트들 중 캐시 메모리(18)에 로딩되지 않은 다른 세그먼트들이 캐시 메모리(18)에 로딩될 수 있다. 예컨대 제9 세그먼트(SG9) 및 제10 세그먼트(SG10)가 캐시 메모리917)에 캐싱될 수 있다. 이에 따라서, 어드레스 맵핑 테이블(AMT)의 다른 일부(AMTb)캐시 메모리(18)에 로딩될 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 나타내는 흐름도이다. 도 11은 메모리 시스템의 파워-온 시 컨트롤러의 동작 방법을 나타낸다.
도 1 및 도 11을 참조하면, 메모리 시스템(100) 및 컨트롤러(110)가 파워-온 될 수 있다(S210). 컨트롤러(110)는 파워-온에 따른 셋업 단계에 진입할 수 있다. 컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)을 로딩할 수 있다(S220). 컨트롤러(110)는 비휘발성 메모리(120)에 저장된 세그먼트 맵핑 테이블(SMT)을 컨트롤러(110) 내의 메모리 또는 컨트롤러(110) 외부에 외치하는 버퍼(예컨대 DRAM)에 로딩할 수 있다.
컨트롤러(110)는 세그먼트 맵핑 테이블(SMT)의 맵핑 정보를 기초로 어드레스 맵핑 테이블(AMT)을 로딩할 수 있다. 세그먼트 맵핑 테이블(SMT)은 어드레스 맵핑 테이블(AMT)에 포함된 세그먼트들 각각의 물리 주소를 포함한다. 따라서, 컨트롤러(110)는 상기 세그먼트 맵핑 테이블(SMT)의 맵핑 정보를 기초로 메모리 셀 어레이(MCA) 내의 세그먼트들 각각이 저장된 영역을 엑세스함으로써, 세그먼트들을 독출할 수 있다. 이에 따라서, 세그먼트 맵핑 테이블(SMT)이 컨트롤러(110) 내의 메모리 또는 컨트롤러(110) 외부에 외치하는 버퍼(예컨대 DRAM)에 로딩될 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 컨트롤러의 동작 방법을 나타내는 흐름도이다. 본 실시예에서 컨트롤러는 메모리 시스템의 동작 과정에서 세그먼트 사이즈를 가변시킬 수 있다.
도 1 및 도 12를 참조하면, 컨트롤러(110)는 세그먼트의 사이즈(데이터 사이즈)를 최소 사이즈로 설정할 수 있다(S310). 실시예에 있어서, 최소 사이즈는 ECC 단위일 수 있으며, 세그먼트는 복수의 맵핑 엔트리를 포함할 수 있다.
컨트롤러(110)는 어드레스 맵핑 테이블(AMT)에 포함된 복수의 세그먼트들 중 업데이트된 세그먼트들의 개수를 판단할 수 있다(S320). 컨트롤러(110)는 메모리 시스템(100)의 동작 과정에서 업데이트된 세그면트들의 개수를 카운트할 수 있다.
컨트롤러(110)는 판단된 개수를 기초로 세그먼트 사이즈를 재설정하고, 세그먼트 맵핑 테이블을 재설정 할 수 있다(S330). 예를 들어서, 호스트(200)가 기입을 요청하는 데이터의 논리 주소(LA)가 특정한 두 개의 세그먼트에 집중될 수 있으며, 이에 따라서, 컨트롤러(110)는 두 개의 세그먼트가 업데이트되었다고 판단할 수 있다. 컨트롤러(110)는 두 개의 세그먼트가 페이지 데이터로서 그룹핑될 수 있도록 세그먼트의 사이즈를 페이지의 1/2로 설정할 수 있다. 최소 사이즈로 설정된 복수의 세그먼트들이 하나의 세그먼트로 재설정될 수 있다. 한편, 세그먼트 맵핑 테이블은 복수의 세그먼트들 각각에 대한 물리 주소들을 포함한다. 복수의 세그먼트들이 하나의 세그먼트로 재설정됨에 따라서, 복수의 세그먼트들 각각에 대한 물리 주소가 병합 처리되어 재설정된 하나의 세그먼트에 대응하는 물리 주소로서 설정될 수 있다.
도 13a 내지 도 13c는 본 개시의 예시적 실시예에 따라, 세그먼트의 사이즈가 재설정되는 실시예들을 나타내는 도면이다.
도 13a 내지 도 13c를 참조하면, 어드레스 맵핑 테이블(AMT)은 복수의 세그먼트들(SG0 내지 SGn-1)을 포함할 수 있으며, 세그먼트의 사이즈는 2KB이고, 기입 단위 즉 페이지의 사이즈는 16KB일 수 있다.
도 13a를 참조하면, 복수의 세그먼트들(SG0 내지 SGn-1) 중 두 개의 세그먼트(SG2 및 SGa)가 업데이트될 수 있다. 컨트롤러(도 1의 110)는 업데이트된 두 개의 세그먼트(SG2 및 SGa)를 비휘발성 메모리(도 1의 120)에 저장할 수 있다. 이 때, 컨트롤러(110)는 세그먼트의 사이즈를 8KB로 재설정할 수 있으며, 복수의 세그먼트들(SG0 내지 SGn-1) 중 네 개의 세그먼트들이 하나의 세그먼트로 재설정될 수 있다. 예컨대 제1 내지 제4 세그먼트(SG0 내지 SG3)이 제1 세그먼트(SG'0)로 재설정될 수 있다. 컨트롤러(110)는 업데이트된 세그먼트(SG2 및 SGa)를 각각 포함하는 재설정된 세그먼트들(SG'0 및 SG'm)을 하나의 페이지 데이터로서 그룹핑하고, 페이지 데이터를 비휘발성 메모리(120)에 저장할 수 있다.
도 13b를 참조하면, 복수의 세그먼트들(SG0 내지 SGn-1) 중 네 개의 세그먼트(SG2, SG7, SGa 및 SGb)가 업데이트될 수 있다. 컨트롤러(도 1의 110)는 업데이트된 네 개의 세그먼트(SG2, SG7, SGa 및 SGb)를 비휘발성 메모리(도 1의 120)에 저장할 수 있다. 이 때, 컨트롤러(110)는 세그먼트의 사이즈를 4KB로 재설정할 수 있으며, 복수의 세그먼트들(SG0 내지 SGn-1) 중 두 개의 세그먼트들이 하나의 세그먼트로 재설정될 수 있다. 예컨대 제1 및 제2 세그먼트(SG0 및 SG1)이 제1 세그먼트(SG'0)로 재설정될 수 있다. 컨트롤러(110)는 업데이트된 세그먼트들(SG2, SG7, SGa 및 SGb)을 각각 포함하는 재설정된 세그먼트들(SG'1, SG'3, SG'r 및 SG't)을 하나의 페이지 데이터로서 그룹핑하고, 페이지 데이터를 비휘발성 메모리(120)에 저장할 수 있다.
도 13c를 참조하면, 복수의 세그먼트들(SG0 내지 SGn-1) 중 일곱 개의 세그먼트(SG2, SG4, SG5, SG7, SGa, SGb 및 SGn-1)가 업데이트될 수 있다. 컨트롤러(도 1의 110)는 업데이트된 일곱 개의 세그먼트(SG2, SG4, SG5, SG7, SGa, SGb 및 SGn-1)를 비휘발성 메모리(도 1의 120)에 저장할 수 있다. 일곱 개의 세그먼트들의 사이즈는 14KB이다. 따라서, 세그먼트 사이즈의 재설정은 요구되지 않는다. 컨트롤러(110)는 일곱 개의 세그먼트(SG2, SG4, SG5, SG7, SGa, SGb 및 SGn-1)를 하나의 페이지 데이터로서 그룹핑하고, 페이지 데이터를 비휘발성 메모리(120)에 저장할 수 있다.
이와 같이, 본 개시의 실시예에 따르면 메모리 시스템(100)의 동작 과정에서, 세그먼트의 사이즈가 가변될 수 있다. 한편, 도 13a 내지 도 13c를 참조하여 전술한 바와 같이, 세그먼트 사이즈가 재설정됨에 따라서, 복수의 세그먼트들 각각에 대한 물리 주소가 병합 처리되어 재설정된 하나의 세그먼트에 대응하는 물리 주소로서 설정될 수 있다. 세그먼트 맵핑 테이블(SMT)은 재설정된 세그먼트들에 대한 물리 주소를 포함하도록 재설정될 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 SSD를 나타내는 블록도이다.
도 14를 참조하면, SSD 시스템(1000)은 호스트(1100) 및 SSD(1200)을 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 및 비휘발성 메모리 장치들(1230)을 포함할 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 비휘발성 메모리 장치들(1230)을 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.
또한, SSD 컨트롤러(1210)는 맵핑 데이터 관리 모듈(MDM)을 포함할 수 있으며, 도 1 내지 도 13을 참조하여 설명한 바와 같이 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)을 관리할 수 있다. SSD 컨트롤러(1210)는 버퍼 메모리(1220)에 로딩된 어드레스 맵핑 테이블(AMT)에 포함된 복수의 세그먼트들 중 업데이트된 세그먼트들을 비휘발성 메모리 장치(1230)에 저장할 때, 업데이트된 적어도 두 개의 세그먼트를 선택하고 선택된 적어도 두 개의 세그먼트를 페이지 데이터로서 그룹핑하고, 페이지 데이터를 비휘발성 메모리 장치(1230)에 물리 주소와 함께 제공할 수 있다. SSD 컨트롤러(1210) 페이지 데이터와 함께 비휘발성 메모리 장치(1230)에 제공된 물리 주소를 기초로 세그먼트 맵핑 테이블(SMT)을 업데이트할 수 있다.
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 기입 데이터 또는 비휘발성 메모리 장치들(1230)로부터 독출된 데이터가 일시 저장된다. 호스트(1100)의 독출 요청 시에 비휘발성 메모리 장치들(1230)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(1220)는 캐시된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
또한, 버퍼 메모리(1220)는 어드레스 맵핑 테이블(AMT) 및 세그먼트 맵핑 테이블(SMT)을 저장할 수 있다.
비휘발성 메모리 장치들(1230)은 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 비휘발성 메모리 장치들(1230)은 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 비휘발성 메모리 장치들(1230)은 복수의 채널을 통해 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 비휘발성 메모리 장치들(1230)이 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 비휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 그리고 저장 매체로서 휘발성 메모리 장치(예를 들면, DRAM)이 포함될 수도 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 어드레스 맵핑 테이블, 및 세그먼트 맵핑 테이블을 저장하는 메모리; 및
    상기 어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 비휘발성 메모리의 한 페이지에 저장될 페이지 데이터로서 선택하는 맵핑 데이터 관리 모듈을 포함하고,
    상기 복수의 세그먼트들 각각은 논리 주소들과 물리 주소들 간의 맵핑 정보를 나타내는 복수의 맵핑 엔트리를 포함하고,
    상기 세그먼트 맵핑 테이블은, 상기 비휘발성 메모리 내에서, 상기 복수의 세그먼트들 각각이 저장된 영역들을 나타내는 물리 주소들을 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  2. 제1 항에 있어서, 상기 맵핑 데이터 관리 모듈은,
    상기 비휘발성 메모리 내에서 상기 적어도 두 개의 세그먼트가 저장될 영역을 나타내는 물리 주소들을 기초로 상기 세그먼트 맵핑 테이블을 업데이트하는 것을 특징으로 하는 메모리 컨트롤러.
  3. 제1 항에 있어서, 상기 맵핑 데이터 관리 모듈은,
    업데이트된 맵핑 엔트리들을 상대적으로 많이 포함하는 세그먼트들을 선택하는 것을 특징으로 하는 메모리 컨트롤러.
  4. 제1 항에 있어서, 상기 세그먼트의 데이터 사이즈는 페이지의 데이터 사이즈보다 작으며, 상기 세그먼트의 데이터 사이즈는 가변되는 것을 특징으로 하는 메모리 컨트롤러.
  5. 제1 항에 있어서,
    상기 비휘발성 메모리는 메타 데이터가 저장되는 메타 데이터 영역 및 호스트로부터 제공되는 데이터가 저장되는 유저 데이터 영역을 포함하고,
    상기 메모리 컨트롤러는, 상기 어드레스 맵핑 테이블 및 상기 세그먼트 맵핑 테이블이 상기 메타 데이터 영역에 저장되도록 상기 비휘발성 메모리를 제어하는 것을 특징으로 하는 메모리 컨트롤러.
  6. 제5 항에 있어서, 상기 메모리 컨트롤러는,
    파워-온 시, 세팅 단계에서 상기 비휘발성 메모리에 저장된 상기 세그먼트 맵핑 테이블을 상기 메모리에 로딩하고, 상기 세그먼트 맵핑 테이블의 맵핑 정보를 기초로 상기 비휘발성 메모리에 저장된 상기 어드레스 맵핑 테이블을 상기 메모리에 로딩하는 것을 특징으로 하는 메모리 컨트롤러.
  7. 제5 항에 있어서, 상기 비휘발성 메모리는 NAND 플래시 메모리 셀들을 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  8. 메모리 컨트롤러의 동작 방법에 있어서,
    어드레스 맵핑 테이블에 포함된 복수의 세그먼트들 중 업데이트된 적어도 두 개의 세그먼트를 선택하는 단계; 및
    상기 적어도 두 개의 세그먼트를 하나의 페이지 데이터로서 그룹핑하는 단계;
    상기 페이지 데이터 및 상기 페이지 데이터가 저장될 영역을 나타내는 물리 주소를 비휘발성 메모리에 제공하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  9. 제8 항에 있어서, 상기 물리 주소를 기초로, 상기 비휘발성 메모리 내에서상기 복수의 세그먼트들 각각이 저장된 위치를 나타내는 맵핑 정보를 포함하는 세그먼트 맵핑 데이터를 업데이트하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  10. 제8 항에 있어서,
    상기 세그먼트는 논리 주소들과 물리 주소들 간의 맵핑 정보를 나타내는 복수의 맵핑 엔트리를 포함하고, 상기 세그먼트의 데이터 사이즈는 상기 비휘발성 메모리의 기입 단위보다 작은 것을 특징으로 하는 메모리 컨트롤러의 동작 방법.
KR1020180111026A 2018-09-17 2018-09-17 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치 KR20200031924A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180111026A KR20200031924A (ko) 2018-09-17 2018-09-17 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치
US16/506,308 US10990536B2 (en) 2018-09-17 2019-07-09 Memory controller, operating method of the memory controller, and storage device including the memory controller
CN201910806885.7A CN110908930A (zh) 2018-09-17 2019-08-29 存储器控制器及其操作方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180111026A KR20200031924A (ko) 2018-09-17 2018-09-17 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20200031924A true KR20200031924A (ko) 2020-03-25

Family

ID=69772507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180111026A KR20200031924A (ko) 2018-09-17 2018-09-17 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치

Country Status (3)

Country Link
US (1) US10990536B2 (ko)
KR (1) KR20200031924A (ko)
CN (1) CN110908930A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269771B2 (en) 2019-07-23 2022-03-08 Samsung Electronics Co., Ltd. Storage device for improving journal replay, operating method thereof, and electronic device including the storage device

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200056533A (ko) * 2018-11-14 2020-05-25 삼성전자주식회사 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치
US11733895B2 (en) 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11748011B2 (en) * 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526504A (en) 1993-12-15 1996-06-11 Silicon Graphics, Inc. Variable page size translation lookaside buffer
US8068365B2 (en) 2008-02-04 2011-11-29 Mosaid Technologies Incorporated Non-volatile memory device having configurable page size
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
US20100306451A1 (en) 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US9170933B2 (en) 2010-06-28 2015-10-27 International Business Machines Corporation Wear-level of cells/pages/sub-pages/blocks of a memory
US8949568B2 (en) 2011-05-24 2015-02-03 Agency For Science, Technology And Research Memory storage device, and a related zone-based block management and mapping method
TWI436212B (zh) * 2011-07-21 2014-05-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US8819375B1 (en) * 2011-11-30 2014-08-26 Western Digital Technologies, Inc. Method for selective defragmentation in a data storage device
US8832382B2 (en) 2011-12-21 2014-09-09 Ati Technologies Ulc Sub page and page memory management apparatus and method
TWI603194B (zh) 2013-12-04 2017-10-21 慧榮科技股份有限公司 資料儲存裝置以及其資料存取方法
CN105808151B (zh) * 2014-12-29 2019-09-27 华为技术有限公司 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
US9507711B1 (en) 2015-05-22 2016-11-29 Sandisk Technologies Llc Hierarchical FTL mapping optimized for workload
US20170024326A1 (en) 2015-07-22 2017-01-26 CNEX-Labs, Inc. Method and Apparatus for Caching Flash Translation Layer (FTL) Table
US11088747B2 (en) * 2016-04-13 2021-08-10 Qualcomm Incorporated System and method for beam management
CN106293521B (zh) 2016-08-02 2019-04-12 华中科技大学 一种映射粒度自适应的闪存转换层管理方法
US10671522B2 (en) 2016-11-07 2020-06-02 Samsung Electronics Co., Ltd. Memory controller and memory system including the same
US10482029B1 (en) * 2017-07-31 2019-11-19 EMC IP Holding Company LLC Distributed shared memory paging
KR20190087217A (ko) * 2018-01-16 2019-07-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190095825A (ko) * 2018-02-07 2019-08-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20200020464A (ko) * 2018-08-17 2020-02-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269771B2 (en) 2019-07-23 2022-03-08 Samsung Electronics Co., Ltd. Storage device for improving journal replay, operating method thereof, and electronic device including the storage device

Also Published As

Publication number Publication date
CN110908930A (zh) 2020-03-24
US20200089618A1 (en) 2020-03-19
US10990536B2 (en) 2021-04-27

Similar Documents

Publication Publication Date Title
CN107957958B (zh) 存储器系统及其操作方法
US10990536B2 (en) Memory controller, operating method of the memory controller, and storage device including the memory controller
US10963175B2 (en) Apparatus and method for searching valid data in memory system
KR20190057887A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102605609B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200019431A (ko) 컨트롤러 및 그것의 동작방법
US11144449B2 (en) Memory system and operation method thereof
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
KR102415875B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US11687262B2 (en) Memory system and method of operating the same
CN111581121B (zh) 用于管理存储器系统中的映射数据的方法和设备
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
CN111078584A (zh) 存储器系统及其操作方法
KR20180114649A (ko) 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 그리고 멀티 프로세서 시스템
KR20200076244A (ko) 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법
CN111290970B (zh) 存储器系统及其操作方法
KR102646252B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN110928806B (zh) 存储器系统及其操作方法
KR20200019430A (ko) 컨트롤러 및 그것의 동작방법
KR20190128284A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN109426448B (zh) 存储器系统及其操作方法
CN113885782A (zh) 存储装置及其操作方法
CN112711377B (zh) 分布式存储系统的存储节点及其操作方法
CN112328516A (zh) 控制器、控制器的操作方法以及包括控制器的存储装置
CN111666232B (zh) 数据处理系统及其操作方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal