KR20240114205A - 멀티 네임스페이스를 지원하는 스토리지 장치 및 그것의 동작 방법 - Google Patents
멀티 네임스페이스를 지원하는 스토리지 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20240114205A KR20240114205A KR1020230006344A KR20230006344A KR20240114205A KR 20240114205 A KR20240114205 A KR 20240114205A KR 1020230006344 A KR1020230006344 A KR 1020230006344A KR 20230006344 A KR20230006344 A KR 20230006344A KR 20240114205 A KR20240114205 A KR 20240114205A
- Authority
- KR
- South Korea
- Prior art keywords
- namespace
- logical address
- mapping information
- address space
- cache
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 14
- 238000013507 mapping Methods 0.000 claims abstract description 144
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000013467 fragmentation Methods 0.000 claims description 64
- 238000006062 fragmentation reaction Methods 0.000 claims description 64
- 238000012217 deletion Methods 0.000 claims description 30
- 230000037430 deletion Effects 0.000 claims description 30
- 230000006870 function Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 26
- 239000002699 waste material Substances 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910052732 germanium Inorganic materials 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- 229910052738 indium Inorganic materials 0.000 description 1
- APFVFJFRJDLVQX-UHFFFAOYSA-N indium atom Chemical compound [In] APFVFJFRJDLVQX-UHFFFAOYSA-N 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 스토리지 장치에 대한 것이다. 본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 및 상기 불휘발성 메모리에 저장된 데이터를 복수의 네임스페이스들을 통해 관리하는 컨트롤러를 포함하며, 상기 복수의 네임스페이스들은, 제1 논리 주소 공간에 할당된 제1 네임스페이스, 및 상기 제1 논리 주소 공간과 연속적인 제2 논리 주소 공간에 할당된 제2 네임스페이스를 포함하고, 상기 컨트롤러는, 상기 제1 네임스페이스에 대한 삭제 요청에 응답하여, 상기 제1 논리 주소 공간에서 상기 제1 네임스페이스를 삭제하고, 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 상기 제2 네임스페이스에 대한 맵핑 정보를 카피하고, 상기 제2 네임스페이스에 대한 맵핑 정보를 캐시로 로드한다. 본 발명에 따른 스토리지 장치는 저장 효율성을 향상시킬 수 있으면서도 호스트의 요청에 빠르게 응답할 수 있는 멀티 네임스페이스 기능을 지원할 수 있다.
Description
본 발명은 스토리지 장치에 대한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
불휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 SSD 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 최근에는, 하나의 물리적 장치로부터 복수의 논리적 장치를 제공할 수 있는 네임스페이스 기능을 지원하는 스토리지 장치에 대한 연구가 진행되고 있다. 특히, 저장 효율성을 향상시키면서도, 호스트의 요청에 원활하게 서비스할 수 있는 네임스페이스 기능이 요구되고 있다.
본 발명의 목적은 저장 효율성을 향상시킬 수 있으면서도 호스트의 요청에 빠르게 응답할 수 있는 멀티 네임스페이스 기능을 지원하는 스토리지 장치를 제공하는데 있다.
본 발명의 실시 예에 따른 멀티 네임스페이스를 관리하는 스토리지 장치의 동작 방법은, 삭제 요청된 제1 네임스페이스에 대한 맵핑 정보를 제1 논리 주소 공간으로부터 삭제하는 단계; 상기 제1 논리 주소 공간에 연속하는 제2 논리 주소 공간에 대응하는 제2 네임스페이스에 대한 맵핑 정보를 캐시로 로드하는 단계; 상기 제2 네임스페이스에 대한 맵핑 정보를 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피하는 단계; 상기 제2 네임스페이스에 대한 맵핑 정보를 상기 제2 논리 주소 공간으로부터 삭제하는 단계; 및 상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료되기 전에 상기 제2 네임스페이스에 대한 접근 요청이 있는 경우, 상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 요청된 쓰기 또는 읽기 동작을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리; 및 상기 불휘발성 메모리에 저장된 데이터를 멀티 네임스페이스를 통해 관리하는 컨트롤러를 포함하며, 상기 컨트롤러는 네임스페이스 각각의 논리 주소와 물리 주소 사이의 맵핑 정보를 관리하는 메타 매니저; 상기 네임스페이스 각각에 대한 맵핑 정보를 저장하는 메모리; 및 복수의 네임스페이스들 중 삭제 요청된 제1 네임스페이스와 연속하는 논리 주소 공간을 갖는 제2 네임스페이스에 대한 맵핑 정보를 상기 메모리로부터 로드하여 저장하는 캐시를 포함하고, 단편화 동작 수행 중에 상기 제2 네임스페이스에 대한 접근 요청이 수신되는 경우, 상기 메타 매니저는 상기 캐시에 저장된 상기 제2 네임스페이스에 대한 맵핑 정보에 기초하여 쓰기 또는 읽기 동작을 수행한다.
본 발명의 실시 예에 따른 스토리지 시스템은 적어도 하나의 호스트; 및 상기 적어도 하나의 호스트의 네임스페이스 생성 요청에 응답하여, 복수의 네임스페이스들을 동적으로 생성하는 스토리지지 장치를 포함하며, 상기 스토리지 장치는, 불휘발성 메모리; 및 상기 불휘발성 메모리에 저장된 데이터를 상기 복수의 네임스페이스들을 통해 관리하는 컨트롤러를 포함하며, 상기 복수의 네임스페이스들은, 제1 논리 주소 공간에 할당된 제1 네임스페이스; 및 상기 제1 논리 주소 공간과 연속적인 제2 논리 주소 공간에 할당된 제2 네임스페이스를 포함하고, 상기 컨트롤러는, 상기 제1 네임스페이스에 대한 삭제 요청에 응답하여, 상기 제1 논리 주소 공간에서 상기 제1 네임스페이스를 삭제하고, 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 상기 제2 네임스페이스에 대한 맵핑 정보를 카피하고, 상기 제2 네임스페이스에 대한 맵핑 정보를 캐시로 로드한다.
본 발명에 따른 스토리지 장치는 저장 효율성을 향상시킬 수 있으면서도 호스트의 요청에 빠르게 응답할 수 있는 멀티 네임스페이스 기능을 지원할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 스토리지 시스템(1000)을 보여주는 블록도이다.
도 2는 도 1의 스토리지 장치(1100)의 멀티 네임스페이스 기능을 설명하기 위한 도면이다.
도 3은 도 1의 컨트롤러(1110)의 일 예를 보여주는 블록도이다.
도 4는 네임스페이스(NS) 생성 요청에 응답하여 스토리지 장치(1100)가 논리 주소 공간을 할당하는 동작을 설명하기 위한 순서도이다.
도 5는 스토리지 장치(1100)가 논리 주소 공간을 할당하는 일 예를 보여주는 도면이다.
도 6은 삭제 요청된 네임스페이스(NS)의 상태에 따른 스토리지 장치(1100)의 동작 방법의 차이를 설명하기 위한 순서도이다.
도 7은 삭제 요청된 네임스페이스(NS)가 마지막 네임스페이스(NS)인 경우의 스토리지 장치(1100)의 동작의 일 예를 보여주는 도면이다.
도 8은 네임스페이스의 삭제 요청에 따른 스토리지 장치(1100)의 단편화 동작을 설명하기 위한 순서도이다.
도 9는 스토리지 장치(100)의 단편화 동작의 일 예를 보여주는 도면이다.
도 10a 내지 도 10c는 단편화 동작을 지원하지 않는 경우의 네임스페이스(NS)의 생성 및 삭제 동작의 일 예를 보여주는 도면들이다.
도 11a 내지 도 11d는 단편화 동작을 지원하는 도 1의 스토리지 장치(1100)의 네임스페이스(NS)의 생성 및 삭제 동작의 일 예를 보여주는 도면들이다.
도 12는 본 발명의 실시 예에 따른 도 1의 스토리지 장치(1100)의 읽기 동작을 설명하기 위한 순서도이다.
도 13은 캐시(1112)에 로드된 맵핑 정보를 이용하여 읽기 동작을 수행하는 일 예를 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 도 1의 스토리지 장치(1100)의 쓰기 동작을 설명하기 위한 순서도이다.
도 15는 캐시(1112)에 로드된 맵핑 정보를 이용하여 쓰기 동작을 수행하는 일 예를 보여주는 도면이다.
도 16은 단편화 동작 완료 후에 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)의 맵핑 정보를 업데이트하는 일 예를 보여주는 도면이다.
도 2는 도 1의 스토리지 장치(1100)의 멀티 네임스페이스 기능을 설명하기 위한 도면이다.
도 3은 도 1의 컨트롤러(1110)의 일 예를 보여주는 블록도이다.
도 4는 네임스페이스(NS) 생성 요청에 응답하여 스토리지 장치(1100)가 논리 주소 공간을 할당하는 동작을 설명하기 위한 순서도이다.
도 5는 스토리지 장치(1100)가 논리 주소 공간을 할당하는 일 예를 보여주는 도면이다.
도 6은 삭제 요청된 네임스페이스(NS)의 상태에 따른 스토리지 장치(1100)의 동작 방법의 차이를 설명하기 위한 순서도이다.
도 7은 삭제 요청된 네임스페이스(NS)가 마지막 네임스페이스(NS)인 경우의 스토리지 장치(1100)의 동작의 일 예를 보여주는 도면이다.
도 8은 네임스페이스의 삭제 요청에 따른 스토리지 장치(1100)의 단편화 동작을 설명하기 위한 순서도이다.
도 9는 스토리지 장치(100)의 단편화 동작의 일 예를 보여주는 도면이다.
도 10a 내지 도 10c는 단편화 동작을 지원하지 않는 경우의 네임스페이스(NS)의 생성 및 삭제 동작의 일 예를 보여주는 도면들이다.
도 11a 내지 도 11d는 단편화 동작을 지원하는 도 1의 스토리지 장치(1100)의 네임스페이스(NS)의 생성 및 삭제 동작의 일 예를 보여주는 도면들이다.
도 12는 본 발명의 실시 예에 따른 도 1의 스토리지 장치(1100)의 읽기 동작을 설명하기 위한 순서도이다.
도 13은 캐시(1112)에 로드된 맵핑 정보를 이용하여 읽기 동작을 수행하는 일 예를 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 도 1의 스토리지 장치(1100)의 쓰기 동작을 설명하기 위한 순서도이다.
도 15는 캐시(1112)에 로드된 맵핑 정보를 이용하여 쓰기 동작을 수행하는 일 예를 보여주는 도면이다.
도 16은 단편화 동작 완료 후에 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)의 맵핑 정보를 업데이트하는 일 예를 보여주는 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 일 실시 예에 따른 스토리지 시스템(1000)을 보여주는 블록도이다.
본 발명의 실시 예에 따른 스토리지 장치(1100)는 네임스페이스(namespace) 기능을 지원할 수 있다. 여기서, '네임스페이스'는 논리 주소들로 포맷될 수 있는 불휘발성 메모리의 양(quantity)으로 정의할 수 있다. 예를 들어, 호스트(1200) 관점에서, 사이즈 n의 네임스페이스는 0에서 (n-1)까지의 LBA(Logical Block Address)를 갖는 논리 블록들의 집합(collection)일 수 있다. 다른 예로, 스토리지 장치(1200) 관점에서, 사이즈 n의 네임스페이스는 0에서 (n-1)까지의 LPN(Logical Page Number)를 갖는 논리 페이지들의 집합일 수 있다.
'네임스페이스 기능'은 하나의 물리적 장치로부터 복수의 논리적 장치들을 제공하는 기능을 나타낼 수 있다. 예를 들어, 네임스페이스 기능은 스토리지 장치(1100)를 복수의 네임스페이스들로 나누고, 각 네임스페이스 별로 고유한 LBA 또는 LPN 등의 논리 주소를 할당하는 기법일 수 있다. 스토리지 장치(1100)는 멀티 네임스페이스를 관리할 수 있고, 이에 따라 멀티 네임스페이스 기능을 지원한다고 말할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치(1100)는 복수의 네임스페이스들이 서로 연속적인 논리 주소 공간을 갖도록 관리할 수 있다. 이에 따라, 파편화(fragmentation)가 발생하지 않아, 저장 공간이 낭비없이 효율적으로 사용될 수 있다.
또한, 네임스페이스의 삭제 요청 시에, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 삭제 요청된 네임스페이스의 논리 주소 공간에 재배치될 네임스페이스를 선택하고, 선택된 네임스페이스의 맵핑 정보(mapping information)를 캐시(1112, cache)로 로드(load)할 수 있다. 예를 들어, 삭제 요청된 네임스페이스의 다음 네임스페이스가 선택되어 삭제 요청된 네임스페이스의 논리 주소 공간에 재배치될 수 있으며, 이때 선택된 네임스페이스의 맵핑 정보는 캐시로 로드될 수 있다. 따라서, 선택된 네임스페이스의 재배치 중에 호스트(1200)로부터 선택된 네임스페이스에 대한 읽기 요청 또는 쓰기 요청이 수신되는 경우에도, 스토리지 장치(1100)는 캐시(1112)에 저장된 선택된 네임스페이스의 맵핑 정보를 이용하여 빠르게 응답할 수 있다.
도 1을 참조하여 좀 더 자세히 설명하면, 스토리지 시스템(1000)은 스토리지 장치(1100) 및 호스트(1200)를 포함할 수 있다.
스토리지 시스템(1000)은, 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(networkattached 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), 웨어러블 기기 등일 수 있다.
호스트(1200)는 다양한 인터페이스를 통하여 스토리지 장치(1100)와 통신할 수 있다. 예를 들어, 호스트(1200)는 스토리지 장치(1100)에 읽기 요청 또는 쓰기 요청을 전달할 수 있다. 또한, 호스트(1200)는 네임스페이스 생성 요청 및 삭제 요청과 같은 네임스페이스 관리 커맨드 등을 스토리지 장치(1100)에 달할 수 있다. 일 실시예에 있어서, 호스트(1200)는 어플리케이션 프로세서(Application Processor, AP)일 수 있다. 일 실시예에서, 호스트(1200)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수도 있다.
스토리지 장치(1100)는 전자 장치에 내장되는(embedded) 내부(internal) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일 실시예에 있어서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장(external) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
스토리지 장치(1100)는 컨트롤러(1110) 및 불휘발성 메모리(1120)를 포함할 수 있다.
컨트롤러(1110)는 호스트(1200)로부터의 읽기 요청 및/또는 쓰기 요청에 응답하여 불휘발성 메모리(1120)에 저장된 데이터를 독출하거나, 또는 불휘발성 메모리(1120)에 데이터를 기입할 수 있다. 컨트롤러(1110)는 메타 매니저(1111), 캐시(1112), 메모리(1113) 및 맵퍼(1114)를 포함할 수 있다.
메타 매니저(1111)는 맵퍼(1114)를 이용하여 네임스페이스의 동적인 생성(create) 동작 및 삭제(delete) 동작을 관리할 수 있다. 구체적으로, 메타 매니저(1111)는 복수의 네임스페이스들이 연속적인 논리 주소 공간을 갖도록, 네임스페이스의 생성 동작 및 삭제 동작 시에 맵퍼(1114)의 맵핑 정보를 업데이트할 수 있다.
일 실시 예에 있어서, 호스트(1200)로부터의 네임스페이스 생성 요청에 응답하여, 메타 매니저(1111)는 네임스페이스를 동적으로 생성할 수 있다. 이때, 새로 생성될 네임스페이스의 논리 주소 공간이 이전에 생성된 네임스페이스의 논리 주소 공간과 연속적으로 되도록, 메타 매니저(1111)는 새로 생성될 네임스페이스에 논리 주소 공간을 할당할 수 있다. 메타 매니저(1111)는 생성된 네임스페이스의 논리 주소 공간과 물리 주소 공간에 대한 맵핑 정보를 맵퍼(1114)에 업데이트할 수 있다.
일 실시 예에 있어서, 호스트(1200)로부터의 네임스페이스 삭제 요청에 응답하여, 메타 매니저(1111)는 네임스페이스를 동적으로 삭제할 수 있다. 이때, 메타 매니저(1111)는 삭제 동작 이후에 남아있는 네임스페이스들이 서로 연속적인 논리 주소 공간들을 갖도록 단편화(defragmentation) 동작을 수행할 수 있다. 여기서, 단편화 동작은 삭제된 네임스페이스의 비어 있는 논리 주소 공간에 선택된 네임스페이스의 맵핑 정보를 카피하는 동작을 지칭할 수 있다.
예를 들어, 메타 매니저(1111)는 삭제된 네임스페이스와 연속적인 논리 주소 공간을 갖는 네임스페이스를 단편화 동작이 수행될 네임스페이스로 선택할 수 있다. 즉, 삭제된 네임스페이스가 n번째 네임스페이스인 경우, 단편화 동작이 수행될 네임스페이스로 n+1번째 네임스페이스가 선택될 수 있다. 메타 매니저(1111)는 선택된 네임스페이스의 맵핑 정보를 삭제된 네임스페이스의 빈 논리 주소 공간으로 옮길 수 있다.
또한, 네임스페이스의 삭제 요청 시에, 본 발명의 실시 예에 따른 메타 매니저(1111)는 단편화 동작이 수행될 네임스페이스의 맵핑 정보를 캐시(1112)로 로드할 수 있다. 예를 들어, 단편화 동작이 수행되기 전에, 단편화 동작이 수행될 네임스페이스의 맵핑 정보는 소정 단위로 캐시(1112)로 로드될 수 있다. 이 경우, 캐시(1112)에 로드된 맵핑 정보는 단편화 동작이 완료될 때까지 유지될 수 있다. 따라서, 호스트(1200)로부터 단편화 동작이 수행 중인 네임스페이스에 대한 읽기 요청 또는 쓰기 요청이 수신되는 경우에도, 컨트롤러(1110)는 캐시(1112)에 저장된 맵핑 정보를 참조하여 호스트(1200)의 요청에 빠르게 응답할 수 있다.
캐시(1112)는 단편화 동작이 수행될 네임스페이스의 맵핑 정보를 맵퍼(1114)로부터 로드하고, 이를 저장할 수 있다. 캐시(1112)에 저장된 맵핑 정보는 단편화 동작이 완료될 때까지 유지될 수 있다. 예를 들어, 단편화 동작이 진행 중인 네임스페이스에 대한 접근 요청이 수신되는 경우, 컨트롤러(1110)는 맵퍼(1114)에 저장된 맵핑 정보가 아닌 캐시(1112)에 저장된 맵핑 정보가 이용하여, 상기 접근 요청을 처리할 수 있다.
캐시(1112)는, 예를 들어, 불휘발성 메모리(1120)를 구성하는 메모리보다 입출력 속도가 빠른 SRAM 또는 DRAM으로 구현될 수 있다. 다만, 이는 예시적인 것이며, 캐시(1112)는 불휘발성 메모리로 구현되거나, 또는 이종의 메모리들로 구현될 수도 있다.
한편, 도 1에서는 캐시(1112)가 메타 매니저(1111) 내에 포함되는 것으로 도시되어 있다. 다만, 이는 예시적인 것이며, 본 발명은 이에 한정되지 않는다. 실시 예에 따라, 캐시(1112)는 메타 매니저(1111)와 독립적인 메모리로 구현될 수 있다. 또는, 실시 예에 따라, 메모리(1113)의 일부가 캐시(1112)로 사용될 수도 있다.
메모리(1113)는 동작 메모리 또는 버퍼 메모리로 사용될 수 있다. 또한, 실시 예에 따라, 메모리(1113)는 캐시로도 사용될 수 있다. 예를 들어, 메모리(1113)는 DRAM으로 구현될 수 있다. 다만, 이는 예시적인 것이며, 메모리(1113)는 DRAM 또는 SRAM과 같은 휘발성 메모리는 물론, PRAM 또는 플래시 메모리와 같은 불휘발성 메모리로도 구현될 수도 있다.
메모리(1113)에는 맵퍼(1114)가 로딩될 수 있다. 맵퍼(1114)는 네임스페이스들의 논리 주소 공간과 물리 주소 공간에 대한 맵핑 정보를 포함할 수 있다. 예를 들어, 맵퍼(1114)는 논리 주소를 물리 주소로 변환하는 L2P 테이블을 통하여, 네임스페이스들의 맵핑 정보를 관리할 수 있다.
불휘발성 메모리(1120)는 메모리 셀 어레이(MCA)를 포함할 수 있고, 메모리 셀 어레이(MCA)는 사용자 데이터를 저장하기 위한 스토리지 영역(1121) 및 메타 데이터를 저장하기 위한 메타 영역(1122)을 포함할 수 있다.
일 실시 예에 있어서, 메모리 셀 어레이(MCA)는 복수의 플래시 메모리 셀들을 포함할 수 있고, 예를 들어, 복수의 플래시 메모리 셀들은 낸드(NAND) 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 메모리 셀들은 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
일 실시예에서, 메타 영역(1122)은 논리 주소와 물리 주소의 사이의 맵핑 정보가 저장된 맵퍼(1114)를 저장할 수 있다. 예를 들어, 스토리지 장치(1100)에 전원이 인가되면, 불휘발성 메모리(1120)에 저장된 맵퍼(1114)는 컨트롤러(1110)의 메모리(1110에 로딩될 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 복수의 네임스페이스들이 서로 연속적인 논리 주소 공간을 갖도록 네임스페이스들을 관리할 수 있을 뿐만 아니라, 단편화 동작이 수행될 네임스페이스의 맵핑 정보를 별도의 캐시(1112)로 로드할 수 있다. 따라서, 스토리지 장치(1100)는 저장 공간을 효율적으로 사용할 수 있을 뿐만 아니라, 단편화 동작 중에도 호스트(1200)로부터 수신된 읽기 또는 쓰기 요청을 빠르게 처리할 수 있다.
도 2는 도 1의 스토리지 장치(1100)의 멀티 네임스페이스 기능을 설명하기 위한 도면이다. 설명의 편의상, 도 2에서는, 물리적 장치로 하나의 불휘발성 메모리(1120)가 제공되고, 논리적 장치로 세 개의 네임스페이스들이 생성된다고 가정된다.
도 2를 참조하면, 스토리지 장치(1100)에 세 개의 네임스페이스들(NS1~NS3)이 생성될 수 있다. 네임스페이스들(NS1~NS3)의 논리 주소 공간과 물리 주소 공간은 1:1로 맵핑될 수 있다. 따라서, 네임스페이스들(NS1 내지 NS3)이 제공하는 전체 논리 주소 공간은 비휘발성 메모리(NVM)의 물리 주소 공간보다 작거나 같을 수 있다. 또한, 세 개의 네임스페이스들(NS1 내지 NS3)은 하나의 맵퍼(1114)를 공유할 수 있다.
좀 더 자세히 설명하면, 제1 네임스페이스(NS1)에는 전체 논리 주소 공간 중 일부 주소 공간(예를 들어, LBA0~LBA7)을 할당하고, 제2 네임스페이스(NS2)에는 전체 논리 주소 공간 중, 제1 네임스페이스(NS1)에 할당된 주소 공간에 연속하는 일부 주소 공간(예를 들어, LBA8~LBA11)을 할당하며, 제3 네임스페이스(NS3)에는 전체 논리 주소 공간 중, 제2 네임스페이스(NS2)에 할당된 주소 공간에 연속하는 일부 주소 공간(예를 들어, LBA12~LBA15)을 할당할 수 있다.
여기서, LBA(Logical Block Address)는 호스트(1200) 관점에서 관리하는 논리 주소의 단위일 수 있다. 다만, 이는 예시적인 것이며, 호스트(1200)는 블록 단위 이외의 단위로 논리 주소 공간을 할당할 수도 있다. 예를 들어, 호스트(1200)는 페이지(page) 단위로 논리 주소 공간을 할당할 수도 있다.
맵퍼(1114)는 네임스페이스들(NS1~NS3)의 논리 주소 공간을 물리 주소 공간에 매칭시킬 수 있다. 예를 들어, 맵퍼(1114)는 1:1로 네임스페이스들(NS1~NS3)의 논리 주소 공간을 불휘발성 메모리(1120)의 물리 주소 공간에 매칭시킬 수 있다.
일 실시 예에 있어서, 불휘발성 메모리(1120)는 SSD일 수 있으며, 불휘발성 메모리(1120)의 물리 주소 공간은 페이지 단위로 관리될 수 있다. 이 경우, 맵퍼(1114)는 블록 단위의 논리 주소를 페이지 단위의 논리 주소로 변환하고, 페이지 단위의 논리 주소 공간과 페이지 단위의 물리 주소 공간을 1:1로 매칭시킬 수 있다. 다만, 이는 예시적인 것이며, 맵퍼(1114)는 블록 단위로 논리 주소 공간과 물리 주소 공간을 매칭시킬 수 있으며, 또는 블록 단위와 페이지 단위를 모두 사용하여 논리 주소 공간과 물리 주소 공간을 매칭시킬 수도 있다.
본 명세서에서는, 설명의 편의상, 블록 단위와 페이지 단위는 서로 일치한다고 가정될 것이다. 즉, 호스트 관점(1200)에서의 LBA와 스토리지 장치(1200) 관점에서의 LPN(Logical Page Number)의 단위는 서로 일치한다고 가정될 것이다. 다만, 이는 예시적인 것이며, 실시 예에 따라, 블록 단위가 페이지 단위보다 클 수 있으며, 또는 작을 수도 있다.
도 2에 도시된 바와 같이, 제1 내지 제3 네임스페이스들(NS1~NS3)의 논리 주소 공간들은 서로 연속하도록 할당되어 있다. 따라서, 논리 주소 공간에서의 파편화가 발생하지 않으며, 이에 따라 맵퍼(1114)에서 관리하는 맵핑 테이블의 크기는 논리 주소 공간들이 서로 연속하지 않는 경우에 비해서 상대적으로 작을 수 있다. 따라서, 맵퍼(1114)를 로딩하기 위하여 필요한 메모리(1113)의 저장 공간이 상대적으로 작을 수 있고, 결과적으로 저장 공간의 낭비가 방지될 수 있다.
도 3은 도 1의 컨트롤러(1110)의 일 예를 보여주는 블록도이다. 도 3을 참조하면, 컨트롤러(1110)는 메타 매니저(1111), 메모리(1113), 프로세서(1115), ROM(1116), 호스트 인터페이스(1117) 및 불휘발성 메모리 인터페이스(1118)를 포함할 수 있고, 이들은 버스(1119)를 통해 서로 통신할 수 있다.
메타 매니저(1111)는 별도의 하드웨어 IP로 구현될 수 있다. 예를 들어, 메타 매니저(1111)는 적어도 하나의 프로세서를 포함하도록 구현될 수 있으며, 내부에 캐시(1112)를 추가적으로 포함하도록 구현될 수 있다. 다만, 이는 예시적인 것이며, 메타 매니저(1111)는 소프트웨어 또는 펌웨어로 구현될 수도 있다. 이 경우, 소프트웨어 또는 펌웨어로 구현된 메타 매니저(1111)는 메모리(1113)에 로딩되어 동작할 수 있다.
본 발명의 일 실시 예에 있어서, 메타 매니저(1111)는 복수의 네임스페이스들이 연속적인 논리 주소 공간을 갖도록, 네임스페이스의 생성 동작 및 삭제 동작을 관리할 수 있다. 특히, 네임스페이스의 삭제 동작 시에, 메타 매니저(1111)는 단편화 동작이 수행될 네임스페이스의 맵핑 정보를 맵퍼(1114)로부터 캐시(1112)로 로드할 수 있다.
메모리(1113)는 프로세서(1115)의 제어에 따라 동작하며, 동작 메모리 또는 버퍼 메모리 등으로 사용될 수 있다. 다만, 이는 예시적인 것이며, 메모리(1113)는 캐시 메모리로 사용될 수도 있다. 이 경우, 단편화 동작이 수행될 네임스페이스의 맵핑 정보를 메모리(1113)로 로드될 수 있다.
메모리(1113)는 맵퍼(1114)를 저장할 수 있다. 예를 들어, 스토리지 장치(1100)에 전원이 인가되면, 불휘발성 메모리(1120)의 메타 영역(1122)에 저장된 맵퍼(1114)가 메모리(1113)에 로드될 수 있다. 맵퍼(1114)는, 예를 들어, 네임스페이스들의 논리 주소 공간과 물리 주소 공간에 대한 맵핑 정보를 포함할 수 있다.
프로세서(1115)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(1110)의 전반적인 동작을 제어할 수 있다.
ROM(1116)은 스토리지 장치(1100)의 초기 부팅에 필요한 코드(code) 데이터를 저장할 수 있다.
호스트 인터페이스(1117)는 호스트(1200)와 컨트롤러(1100) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC(MultiMediaCard), 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) 등에 따른 인터페이스를 제공할 수 있다.
불휘발성 메모리 인터페이스(115)는 컨트롤러(110a)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다.
도 4 및 도 5는 네임스페이스(NS) 생성 요청에 따른 도 1의 스토리지 장치(1100)의 동작을 설명하기 위한 도면들이다. 구체적으로, 도 4는 네임스페이스(NS) 생성 요청에 응답하여 스토리지 장치(1100)가 논리 주소 공간을 할당하는 동작을 설명하기 위한 순서도이다. 도 5는 스토리지 장치(1100)가 논리 주소 공간을 할당하는 일 예를 보여주는 도면이다.
설명의 편의상, 이하에서는 세 개의 네임스페이스들이 생성된다고 가정된다. 또한, 페이지 단위로 논리 주소 공간이 할당된다고 가정된다.
도 4를 참조하면, S110 단계에서, 제1 네임스페이스(NS1)의 생성 요청에 응답하여, 스토리지 장치(1100)는 제1 논리 주소 공간을 제1 네임스페이스(NS1)에 할당할 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 제1 네임스페이스(NS1)의 사이즈는 '8'일 수 있다. 이 경우, 논리 주소 공간(10)에서, LPN0에서 LPN7까지의 제1 논리 주소 공간(11)이 제1 네임스페이스(NS1)에 할당될 수 있다.
S120 단계에서, 제2 네임스페이스(NS2)의 생성 요청에 응답하여, 스토리지 장치(1100)는 제2 논리 주소 공간을 제2 네임스페이스(NS2)에 할당할 수 있다. 이때, 제2 논리 주소 공간은 제1 논리 주소 공간과 서로 연속적일 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 제2 네임스페이스(NS2)의 사이즈는 '4'일 수 있다. 이 경우, 논리 주소 공간(10)에서, LPN8에서 LPN11까지의 제2 논리 주소 공간(12)이 제2 네임스페이스(NS2)에 할당될 수 있다.
S130 단계에서, 제3 네임스페이스(NS3)의 생성 요청에 응답하여, 스토리지 장치(1100)는 제3 논리 주소 공간을 제3 네임스페이스(NS3)에 할당할 수 있다. 이때, 제3 논리 주소 공간은 제2 논리 주소 공간과 서로 연속적일 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 제3 네임스페이스(NS3)의 사이즈는 '4'일 수 있다. 이 경우, 논리 주소 공간(10)에서, LPN12에서 LPN15까지의 제3 논리 주소 공간(13)이 제3 네임스페이스(NS3)에 할당될 수 있다.
이와 같은 방식으로, 스토리지 장치(1100)는 새로 생성될 네임스페이스의 논리 주소 공간이 이전에 생성된 네임스페이스의 논리 주소 공간과 연속적으로 되도록, 새로 생성될 네임스페이스에 논리 주소 공간을 할당할 수 있다.
도 6 및 도 7은 네임스페이스(NS) 삭제 요청에 따른 도 1의 스토리지 장치(1100)의 동작을 설명하기 위한 도면들이다. 구체적으로, 도 6은 삭제 요청된 네임스페이스(NS)의 상태에 따른 스토리지 장치(1100)의 동작 방법의 차이를 설명하기 위한 순서도이다. 도 7은 삭제 요청된 네임스페이스(NS)가 마지막 네임스페이스(NS)인 경우의 스토리지 장치(1100)의 동작의 일 예를 보여주는 도면이다.
설명의 편의상, 이하에서는 세 개의 네임스페이스들(NS1~NS3)이 생성된 상태에서 제3 네임스페이스(NS3)에 대한 삭제 요청이 수신된다고 가정된다. 또한, 도 4 및 도 5와 마찬가지로, 페이지 단위로 논리 주소 공간이 할당된다고 가정된다.
도 6을 참조하면, S210 단계에서, 대상 네임스페이스(target NS)에 대한 삭제 요청이 수신될 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 논리 주소 공간(20) 상에서, 제3 네임스페이스(NS3)에 대한 삭제 요청이 수신될 수 있다.
S220 단계에서, 스토리지 장치(1100)는 대상 네임스페이스의 다음 네임스페이스가 존재하는지 여부를 판단할 수 있다. 다시 말하면, 스토리지 장치(1100)는 대상 네임스페이스가 논리 주소 공간 상에서의 마지막 주소 공간에 배치되었는지 여부를 판단할 수 있다.
다음 네임스페이스가 존재하지 않는 경우, S230 단계가 수행될 수 있다. S230 단계에서, 스토리지 장치(1100)는 대상 네임스페이스를 논리 주소 공간에서 삭제할 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 삭제 요청된 제3 네임스페이스(NS3)가 논리 주소 공간(20)에서 마지막 주소 공간에 배치된 경우, 제3 네임스페이스(NS3)가 논리 주소 공간(20)에서 삭제될 수 있다. 이 경우, 남아 있는 네임스페이스들(NS1, NS2)의 논리 주소 공간들은 서로 연속적일 수 있다.
한편, 다음 네임스페이스가 존재하는 경우, S240 단계가 수행될 수 있다. S240 단계에서, 스토리지 장치(1100)는 단편화 동작을 수행할 수 있다. 이는 이하의 도 8 및 도 9에서, 좀 더 자세히 설명될 것이다.
도 8 및 도 9는 네임스페이스의 삭제 요청에 따른 도 1의 스토리지 장치(1100)의 동작을 설명하기 위한 도면들이다. 구체적으로, 도 8은 네임스페이스의 삭제 요청에 따른 스토리지 장치(1100)의 단편화 동작을 설명하기 위한 순서도이다. 도 9는 스토리지 장치(100)의 단편화 동작의 일 예를 보여주는 도면이다.
설명의 편의상, 이하에서는 세 개의 네임스페이스들(NS1~NS3)이 생성된 상태에서 제2 네임스페이스(NS2)에 대한 삭제 요청이 수신된다고 가정된다. 또한, 도 4 및 도 5와 마찬가지로, 페이지 단위로 논리 주소 공간이 할당된다고 가정된다.
먼저, 도 8을 참조하면, S241 단계에서, 제2 네임스페이스(NS2)에 대한 삭제 요청에 응답하여, 스토리지 장치(1100)는 제2 논리 주소 공간으로부터 제2 네임스페이스(NS2)를 삭제할 수 있다.
예를 들어, 도 9에 도시된 바와 같이, 제2 네임스페이스(NS2)가 논리 주소 공간(30) 상의 제2 논리 주소 공간(32)에서 삭제될 수 있다. 이에 따라, 남아 있는 제1 네임스페이스(NS1)의 제1 논리 주소 공간(31)과 제3 네임스페이스(NS3)의 제3 논리 주소 공간(33)은 서로 연속적이지 않을 수 있다.
S242 단계에서, 스토리지 장치(1100)는 제3 네임스페이스(NS3)의 맵핑 정보를 캐시(1112)로 로드할 수 있다.
예를 들어, 도 9에 도시된 바와 같이, 제3 네임스페이스(NS3)의 맵핑 정보가 소정 단위로 캐시(1112)에 로드 될 수 있다. 따라서, 단편화 동작 수행 중에 호스트(1200)로부터 제3 네임스페이스(NS3)에 대한 읽기 요청 또는 쓰기 요청이 수신되는 경우에도, 스토리지 장치(1100)는 캐시(1112)에 로드된 맵핑 정보를 참조하여 호스트(1200)의 요청에 빠르게 응답할 수 있다.
일 실시 예에 있어서, 맵핑 정보의 로드는 페이지 단위로 수행될 수 있다. 다만, 이는 예시적인 것이며, 맵핑 정보가 로드되는 단위는 블록(block), 워드라인(word line), 캐시 라인(cache line) 등과 같이 실시 예에 따라 다양하게 조정될 수 있다.
S243 단계에서, 스토리지 장치(1100)는 제3 네임스페이스(NS3)의 맵핑 정보를 제2 논리 주소 공간으로 카피할 수 있다.
예를 들어, 도 9에 도시된 바와 같이, 제3 네임스페이스(NS3)의 맵핑 정보가 소정 단위로 비어 있는 제2 논리 주소 공간(32)으로 카피될 수 있다. 이때, 맵핑 정보가 제2 논리 주소 공간(32)으로 카피되는 단위는, 맵핑 정보가 캐시(1112)로 로드되는 단위와 동일할 수 있다. 다만, 이는 예시적인 것이며, 맵핑 정보가 제2 논리 주소 공간(32)으로 카피되는 단위와, 맵핑 정보가 캐시(1112)로 로드되는 단위는 서로 다를 수 있다.
실시 예에 따라, 제3 네임스페이스(NS3)의 맵핑 정보 중 일부 영역이 캐시(1112)로 로드되고, 이후 해당 일부 영역이 제2 논리 주소 공간(32)으로 카피될 수 있다. 이러한 로드 및 카피 동작은 제3 네임스페이스(NS3)의 맵핑 정보가 모두 로드 및 카피될 때까지 반복될 수 있다.
또한, 실시 예에 따라, 제3 네임스페이스(NS3)의 맵핑 정보가 캐시(1112)로 모두 로드되고 난 이후에, 제3 네임스페이스(NS3)의 맵핑 정보가 제2 논리 주소 공간(32)으로 카피될 수 있다.
또한, 실시 예에 따라, 제3 네임스페이스(NS3)의 맵핑 정보의 캐시(1112)로의 로드 동작 및 제2 논리 주소 공간(32)으로의 카피 동작은 동시에 수행될 수도 있다.
S244 단계에서, 제3 네임스페이스(NS3)의 맵핑 정보가 제2 논리 주소 공간으로 카피 완료된 이후, 스토리지 장치(1100)는 제3 네임스페이스(NS3)의 맵핑 정보를 제3 논리 주소 공간으로부터 언맵(unmap) 할 수 있다. 또한, 스토리지 장치(1100)는 캐시(1112)에 저장된 제3 네임스페이스(NS3)의 맵핑 정보를 더 이상 유지하지 않을 수 있다.
예를 들어, 도 9에 도시된 바와 같이, 제3 네임스페이스(NS3)의 맵핑 정보가 제2 논리 주소 공간(32)으로 카피 완료되면, 제1 네임스페이스(NS1)가 할당된 논리 주소 공간(31)과 제3 네임스페이스(NS3)가 할당된 논리 주소 공간(32)은 서로 연속적일 수 있다. 따라서, 이후에 설명될 도 10과 같은 파편화가 발생하지 않아서, 저장 공간이 효율적으로 사용될 수 있다.
또한, 제3 네임스페이스(NS3)의 맵핑 정보의 제2 논리 주소 공간(32)으로의 카피가 완료되었기 때문에, 스토리지 장치(1100)는 캐시(1112)에 저장된 제3 네임스페이스(NS3)의 맵핑 정보를 더 이상 유지하지 않고 삭제할 수 있다. 이에 따라, 캐시(1112)의 저장 공간 역시 낭비 없이 사용될 수 있다.
이상에서 살펴본 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 단편화 동작을 지원할 뿐만 아니라, 단편화 동작 중에 맵핑 정보를 캐시(1112)에 저장할 수 있다. 이에 따라, 저장 공간이 효율적으로 사용될 수 있을 뿐만 아니라, 단편화 동작 중에도 수신된 읽기 또는 쓰기 요청도 빠르게 처리될 수 있다.
도 10 및 도 11은 본 발명의 실시 예에 따른 단편화 동작을 좀 더 자세히 설명하기 위한 도면들이다. 구체적으로, 도 10a 내지 도 10c는 단편화 동작을 지원하지 않는 경우의 네임스페이스(NS)의 생성 및 삭제 동작의 일 예를 보여주는 도면들이다. 도 11a 내지 도 11d는 단편화 동작을 지원하는 도 1의 스토리지 장치(1100)의 네임스페이스(NS)의 생성 및 삭제 동작의 일 예를 보여주는 도면들이다.
설명의 편의상, 이하에서는, 도 9와 유사하게, 세 개의 네임스페이스들(NS1~NS3)이 생성된 상태에서 제2 네임스페이스(NS2)에 대한 삭제 요청이 수신된다고 가정된다. 또한, 이후 제4 네임스페이스(NS4)에 대한 생성 요청이 수신된다고 가정된다. 더불어, 도 5 및 도 9와 마찬가지로, 페이지 단위로 논리 주소 공간이 할당된다고 가정된다. 제1 내지 제4 네임스페이스들(NS1~NS4)의 사이즈는 각각 8, 4, 4, 6이라고 가정된다.
먼저, 도 10a를 참조하면, 단편화 동작을 지원하지 않는 스토리지 장치의 경우, 각각의 네임스페이스(NS)는 세그먼트(SEG) 단위로 관리된다. 예를 들어, 각 세그먼트(SEG)는 4개의 LPN에 대응하도록 설정될 수 있다. 이 경우, 제1 네임스페이스(NS1)는 두 개의 세그먼트들(SEG0, SEG1)에 대응하고, 제2 및 제3 네임스페이스(NS2, NS3)는 각각 하나의 세그먼트(SEG2, SEG3)에 대응할 수 있다. 스토리지 장치는 SEG 테이블을 통하여, 각 네임스페이스(NS)와 세그먼트(SEG)의 맵핑 정보를 관리한다.
또한, 스토리지 장치는 각 네임스페이스(NS)에 대응하는 논리 주소(Logical Address, LA)와 물리 주소(Physical Address, PA) 사이의 맵핑 정보를 L2D2P 테이블을 통하여 관리할 수 있다. 이때, 논리 주소(LA)는 각 네임스페이스(NS) 내에서만 연속적이고, 전체 논리 주소 공간에서는 연속적이지 않다. 따라서, 논리 주소(LA)를 전체 논리 주소 공간에서 연속적인 주소로 변환하는 것이 필요하며, 이에 따라 L2D2P 테이블은 디바이스 논리 주소(DLA)를 추가로 구비한다.
결과적으로, 스토리지 장치는 SEG 테이블 및 L2D2P 테이블을 구비하고, SEG 테이블은 네임스페이스(NS)와 세그먼트(SEG) 사이의 맵핑 정보를 관리하고, L2D2P 테이블은 세그먼트(SEG), 논리 주소(LA), 디바이스 논리 주소(DLA) 및 물리 주소(PA) 사이의 맵핑 정보를 관리한다. 이에 따라, 맵핑 정보를 저장하기 위하여 필요한 메모리의 공간이 상대적으로 클 수 있다.
도 10b를 참조하면, 제2 네임스페이스(NS2)에 대한 삭제 요청이 수신된다. 이 경우, SEG 테이블에서, 제2 네임스페이스(NS2)와 제2 세그먼트(SEG2)의 맵핑 정보가 삭제될 것이다. L2D2P 테이블에서는, 제2 세그먼트(SEG2) 및 논리 주소(LA)에 대한 맵핑 정보가 삭제될 것이다.
일반적인 스토리지 장치는 단편화 동작을 지원하지 않기 때문에, 남아 있는 제1 네임스페이스(NS1)에 할당된 논리 주소 공간(예를 들어, DLPN0~DLNP7)과 제3 네임스페이스(NS3)에 할당된 논리 주소 공간(예를 들어, DLPN12~DLPN15)는 서로 연속적이지 않다. 즉, 남이 있는 네임스페이스들(NS1, NS3)의 논리 주소 공간 사이에 파편화가 발생한다.
도 10c를 참조하면, 제4 네임스페이스(NS4)에 대한 생성 요청이 수신된다. 이 경우, 제4 네임스페이스(NS4)의 사이즈가 6이기 때문에, 제4 네임스페이스(NS4)에는 2개의 세그먼트(SEG2, SEG4)가 할당될 것이다. 각 세그먼트(SEG)의 사이즈가 4이기 때문에, 결과적으로 SEG 테이블로 관리되는 논리 주소 공간 상에서 낭비가 발생한다.
또한, L2D2P 테이블에서 제2 네임스페이스(NS2)의 삭제로 비어 있는 논리 주소 공간의 크기가 새롭게 생성될 제4 네임스페이스(NS4)의 크기보다 작기 때문에, 제4 네임스페이스(NS4)에 대응하는 세그먼트들(SEG2, SEG4)은 논리 주소 공간 상에서 서로 분리될 수 있다.
예를 들어, 도 10c에 도시된 바와 같이, 제4 네임스페이스(NS4)에 대응하는 세그먼트들(SEG2, SEG4) 중 제2 세그먼트(SEG2)는 제1 세그먼트(SEG1)와 제3 세그먼트(SEG3) 사이의 논리 주소 공간(즉, DLPN8~DLPN11)에 할당되고, 제4 세그먼트(SEG4)는 제3 세그먼트(SEG3) 다음의 논리 주소 공간(즉, DLPN16~DLNP19)에 할당될 수 있다. 이 경우, DLPN18 및 DLPN19에 해당하는 논리 주소 공간이 낭비될 뿐만 아니라, 해당 논리 주소 공간에 대응하는 페이지들(PAGE18, PAGE19) 역시 사용되지 않아서 물리 주소 공간의 낭비 역시 초래될 수 있다.
이와 달리, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 단편화 동작을 지원하기 때문에, 이러한 논리 주소 공간의 낭비 및 물리 주소 공간의 낭비가 최소화될 수 있다. 또한, 단편화 동작이 수행될 네임스페이스(NS)의 맵핑 정보를 별도의 캐시(1112)로 로드하기 때문에, 단편화 동작 중에도 호스트(1200)로부터 수신된 요청을 빠르게 처리할 수 있다.
좀 더 자세히 설명하면, 도 11a를 참조하면, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 오프셋 테이블(offset table) 및 L2P 테이블(L2P table)을 통해 논리 주소 공간과 물리 주소 공간 사이의 맵핑 정보를 관리할 수 있다. 예를 들어, 맵퍼(1114)는 오프셋 테이블 및 L2P 테이블을 포함할 수 있다.
오프셋 테이블은 각 네임스페이스(NS)의 사이즈 및 시작 오프셋(start offset)에 대한 정보를 포함할 수 있다. 예를 들어, 제1 내지 제3 네임스페이스(NS1~NS3)의 크기는 각각 '8', '4', '4'이며, 이 경우 제1 내지 제3 네임스페이스(NS1~NS3)가 할당된 논리 주소 공간들의 시작 오프셋은 각각 '0', '8', '12'일 수 있다.
L2P 테이블은 논리 주소(LA)와 물리 주소(PA) 사이의 맵핑 정보를 포함할 수 있다. 예를 들어, L2P 테이블에서 관리하는 논리 주소(LA)는 글로벌 논리 주소(GLA)일 수 있으며, 글로벌 논리 주소(GLA)는 스토리지 장치(1100) 내에서 연속적일 수 있다. 예를 들어, 제1 네임스페이스(NS1)에는 GLPN0 내지 GLPN7의 제1 논리 주소 공간이 할당되고, 제2 네임스페이스(NS2)에는 GLPN8 내지 GLPN11의 제2 논리 주소 공간이 할당되며, 제3 네임스페이스(NS3)에는 GLPN12 내지 GLPN15의 제3 논리 주소 공간이 할당될 수 있다.
도 11b를 참조하면, 제2 네임스페이스(NS2)에 대한 삭제 요청이 수신될 수 있다. 이 경우, 오프셋 테이블 및 L2P에서, 제2 네임스페이스(NS2)에 대한 맵핑 정보가 삭제될 것이다. 또한, 도시되지는 않았으나, 삭제된 제2 네임스페이스(NS2)에 대응하는 물리 주소 공간(즉, PAGE8~PAGE11)에 저장된 데이터는 무효 데이터(invalid data)로서 별도로 관리될 수 있다. 또는, 실시 예에 따라, 삭제된 제2 네임스페이스(NS2)에 대응하는 물리 주소 공간(즉, PAGE8~PAGE11)에 대한 소거 동작(erase operation)이 수행될 수 있다.
도 11c를 참조하면, 단편화 동작이 수행될 제3 네임스페이스(NS3)에 대한 맵핑 정보가 캐시(1112)로 로드될 수 있다. 캐시(1112)로 로드된 맵핑 정보는 단편화 동작 중에 호스트(1200)로부터 수신된 요청을 처리하는데 사용될 수 있다.
또한, 제3 네임스페이스(NS3)에 대한 맵핑 정보는 비어 있는 제2 논리 주소 공간(즉, GLPN8~GLPN11)으로 카피 될 수 있다. 예를 들어, 제3 네임스페이스(NS3)의 제3 논리 주소 공간(GLPN12~GLPN15)에 저장된 맵핑 정보가, 비어 있는 제2 논리 주소 공간(즉, GLPN8~GLPN11)에 순차적으로 카피 될 수 있다.
도 11d를 참조하면, 제3 네임스페이스(NS3)에 대한 맵핑 정보가 제2 논리 주소 공간(즉, GLPN8~GLPN11)으로 카피 완료된 상태가 도시되어 있다. 이 경우, L2P 테이블에서, 제1 네임스페이스(NS1)의 논리 주소 공간(즉, GLPN0~GLPN7)과 제3 네임스페이스(NS2)의 논리 주소 공간(GLPN8~GLPN11)은 서로 연속적일 수 있다. 카피 동작이 완료된 이후, 제3 네임스페이스(NS3)는 기존의 제3 논리 주소 공간(즉, GLPN12~GLPN15)으로부터 언맵(unmap) 될 수 있다.
또한, 오프셋 테이블에서, 제1 네임스페이스(NS1)와 제2 네임스페이스(NS2)에 대한 맵핑 정보도 서로 연속적으로 되도록 업데이트될 수 있다. 예를 들어, 제3 네임스페이스(NS3)의 시작 오프셋이, '12'에서 '8'로 변경될 수 있다.
도 11e를 참조하면, 제4 네임스페이스(NS4)에 대한 생성 요청이 수신될 수 있다. 이 경우, 제4 네임스페이스(NS4)에는 제3 네임스페이스(NS3)의 논리 주소 공간(GLPN8~GLPN11)과 연속적인 논리 주소 공간이 할당될 수 있다. 예를 들어, 제4 네임스페이스(NS4)의 사이즈가 '6'인 경우, 사이즈 '6'에 해당하는 논리 주소 공간(즉, GLPN12~GLPN17)이 제4 네임스페이스(NS4)에 할당될 수 있다. 결과적으로, 네임스페이스들(NS1~NS3) 사이의 논리 주소 공간의 연속성이 계속해서 유지될 수 있다.
도 10 및 도 11에서 설명된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 단편화 동작을 지원할 수 있다. 이 경우, 스토리지 장치(1100)에서 관리하는 오프셋 테이블 및 L2P 테이블은 도 10의 스토리지 장치에서 관리하는 SEG 테이블 및 L2D2P 테이블보다 단순하며, 이에 따라 관리하는 맵핑 정보의 양이 줄어들 수 있다.
더불어, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 각 네임스페이스(NS)의 사이즈 및 오프셋 정보만으로 데이터가 저장된 페이지의 물리 주소(PA)를 확인할 수 있기 때문에, 도 10의 스토리지 장치에 비하여 빠르게 요청된 페이지에 접근할 수 있다.
도 12는 본 발명의 실시 예에 따른 도 1의 스토리지 장치(1100)의 읽기 동작을 설명하기 위한 순서도이다.
S310 단계에서, 호스트(1200)로부터 소정 네임스페이스(NS)에 대한 읽기 요청이 수신될 수 있다.
S320 단계에서, 읽기 요청된 네임스페이스(NS)에 대한 단편화 동작이 진행 중인지 여부가 판단될 수 있다.
읽기 요청된 네임스페이스(NS)에 대한 단편화 동작이 진행 중이지 않은 경우, S330 단계가 수행될 수 있다. S330 단계에서, 스토리지 장차(1100)는 맵퍼(1114)에 저장된 맵핑 정보를 사용하여 읽기 동작을 수행할 수 있다.
읽기 요청된 네임스페이스(NS)에 대한 단편화 동작이 진행 중인 경우, S340 단계가 수행될 수 있다. S340 단계에서, 스토리지 장차(1100)는 캐시(1112)에 로드된 맵핑 정보를 사용하여 읽기 동작을 수행할 수 있다.
도 13은 캐시(1112)에 로드된 맵핑 정보를 이용하여 읽기 동작을 수행하는 일 예를 보여주는 도면이다. 설명의 편의상, 도 13에서는, 단편화 동작이 진행 중인 제3 네임스페이스(NS3)에 대한 읽기 요청이 수신된다고 가정된다. 또한, 도 11c와 마찬가지로, 제3 네임스페이스(NS3)의 사이즈는 4이고, 시작 오프셋은 12라고 가정된다.
도 13을 참조하면, 호스트(1200)로부터 제3 네임스페이스(NS3)에 대한 읽기 요청이 수신될 수 있다. 이때, 읽기 요청된 데이터에 대응하는 오프셋은 '13'일 수 있다.
이 경우, 제3 네임스페이스(NS3)에 대한 단편화 동작이 진행 중이기 때문에, 스토리지 장치(1100)는 캐시(1112)에 저장된 맵핑 정보를 참조할 수 있다. 읽기 요청된 데이터에 대응하는 오프셋이 '13'이므로, 스토리지 장치(1100)는 GLPN13에 대응하는 제13 페이지(PAGE13)에 저장된 데이터를 독출하고, 독출된 데이터를 호스트(1200)로 전송할 수 있다.
이상에서 설명된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 단편화 동작 중에 수신된 읽기 요청을 캐시(1112)에 저장된 맵핑 정보를 이용하여 빠르게 처리할 수 있다.
도 14는 본 발명의 실시 예에 따른 도 1의 스토리지 장치(1100)의 쓰기 동작을 설명하기 위한 순서도이다.
S410 단계에서, 호스트(1200)로부터 소정 네임스페이스(NS)에 대한 쓰기 요청이 수신될 수 있다.
S420 단계에서, 쓰기 요청된 네임스페이스(NS)에 대한 단편화 동작이 진행 중인지 여부가 판단될 수 있다.
쓰기 요청된 네임스페이스(NS)에 대한 단편화 동작이 진행 중이지 않은 경우, S430 단계가 수행될 수 있다. S430 단계에서, 스토리지 장차(1100)는 맵퍼(1114)에 저장된 맵핑 정보를 사용하여 쓰기 동작을 수행할 수 있다.
쓰기 요청된 네임스페이스(NS)에 대한 단편화 동작이 진행 중인 경우, S440 단계가 수행될 수 있다.
S440 단계에서, 스토리지 장치(1100)는 캐시(1112)에 로드된 맵핑 정보를 사용하여 쓰기 동작을 수행할 수 있다. 이후 단편화 동작이 완료되면, S450 단계에서, 스토리지 장치(1100)는 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)의 맵핑 정보를 업데이트 할 수 있다.
도 15는 캐시(1112)에 로드된 맵핑 정보를 이용하여 쓰기 동작을 수행하는 일 예를 보여주는 도면이다. 도 16은 단편화 동작 완료 후에 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)의 맵핑 정보를 업데이트하는 일 예를 보여주는 도면이다. 설명의 편의상, 도 15 및 도 16에서는, 단편화 동작이 진행 중인 제3 네임스페이스(NS3)에 대한 쓰기 요청이 수신된다고 가정된다. 또한, 도 11c와 마찬가지로, 단편화 동작이 진행 중인 제3 네임스페이스(NS3)의 사이즈는 '4'이고, 시작 오프셋은 '12'라고 가정된다.
먼저, 도 15를 참조하면, 호스트(1200)로부터 제3 네임스페이스(NS3)에 대한 쓰기 요청이 수신될 수 있다. 예를 들어, 쓰기 요청된 데이터에 대응하는 오프셋은 '13'일 수 있다.
이 경우, 제3 네임스페이스(NS3)에 대한 단편화 동작이 진행 중이기 때문에, 스토리지 장치(1100)는 캐시(1112)에 저장된 맵핑 정보를 참조할 수 있다. 쓰기 요청된 데이터에 대응하는 오프셋이 '13'이므로, 스토리지 장치(1100)는 GLPN13에 접근할 수 있다.
GLPN13에 맵핑된 PPN13에 기존에 저장된 데이터가 존재하므로, 스토리지 장치(1100)는 PPN13에 대응하는 페이지(PAGE13)에 기 저장된 데이터를 무효화(invalid)할 수 있다. 예를 들어, 스토리지 장치(1100)는 PPN13의 쓰기 상태 정보(WSI)를 '무효(invalid)'로 마킹할 수 있다.
또한, 스토리지 장치(1100)는 쓰기 요청된 데이터를 비어 있는 페이지 중 어느 하나에 저장하고, 맵핑 정보를 업데이트할 수 있다. 예를 들어, 스토리지 장치(1100)는 쓰기 요청된 데이터를 제18 페이지(PAGE18)에 저장하고, GLPN13에 대응하는 물리 주소(PA)를 PPN18로 업데이트할 수 있다. 이 경우, 스토리지 장치(1100)는 PPN18에 대한 쓰기 상태 정보(WSI)를 '유효(valid)'로 마킹할 수 있다.
도 16을 참조하면, 단편화 동작이 완료된 이후, 스토리지 장치(1100)는 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)에 저장된 L2P 테이블을 업데이트 할 수 있다.
예를 들어, 제3 네임스페이스(NS3)의 논리 주소 공간 중 두번째 논리 주소 공간의 맵핑 정보가 'PPN13'에서 'PPN18'로 변경되었기 때문에, 스토리지 장치(1100)는 L2P 테이블에서 해당하는 맵핑 정보를 업데이트할 수 있다. 즉, 스토리지 장치(1100)는 L2P 테이블에서 오프셋 '9'에 해당하는 논리 주소 공간의 맵핑 정보를 'PPN13'에서 'PPN18'로 업데이트할 수 있다.
한편, 앞선 설명에서는, 캐시(1112)에서 무효화된 종래의 물리 주소(즉, PPN13) 및 새로운 물리 주소(즉, PPN18)을 모두 관리하는 것으로 예시적으로 설명되었다. 다만, 이는 예시적인 것이며, 본 발명은 이에 한정되지 않는다. 실시 예에 따라, 캐시(1112)에서는 종래의 물리 주소(즉, PPN13)에 대한 정보는 따로 관리하지 않고, 새로운 물리 주소(즉, PPN18)만을 관리할 수 있다. 예를 들어, GLPN13 및 이에 대응하는 PPN18에 대한 쓰기 상태 정보는 '더티 비트(dirty bit)'로 마스킹(masking)될 수 있다. 이 경우, 맵 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)에 저장된 L2P 테이블을 업데이트하는 과정에서, 스토리지 장치(1100)는 무효화된 종래의 물리 주소(즉, PPN13)를 확인하고, 이를 무효화할 수도 있다.
이상에서 설명된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1100)는 단편화 동작 중에 수신된 쓰기 요청을 캐시(1112)에 저장된 맵핑 정보를 이용하여 빠르게 처리할 수 있다. 또한, 단편화 동작 수행 후에는, 캐시(1112)에 저장된 맵핑 정보를 이용하여 맵퍼(1114)의 맵핑 정보를 업데이트함으로써, 캐시(1112)에 저장된 맵핑 정보를 더 이상 유지하지 않고 삭제할 수 있다.
상술한 실시 예들 이외에도, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들도 본 발명에 포함될 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술한 실시 예들에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
1000: 스토리지 시스템
1100: 스토리지 장치
1110: 컨트롤러
1111: 메타 매니저
1112: 캐시
1113: 메모리
1114: 맵퍼
1120: 불휘발성 메모리
1121: 스토리지 영역
1122: 메타 영역
1200: 호스트
1100: 스토리지 장치
1110: 컨트롤러
1111: 메타 매니저
1112: 캐시
1113: 메모리
1114: 맵퍼
1120: 불휘발성 메모리
1121: 스토리지 영역
1122: 메타 영역
1200: 호스트
Claims (20)
- 멀티 네임스페이스를 관리하는 스토리지 장치의 동작 방법에 있어서,
삭제 요청된 제1 네임스페이스에 대한 맵핑 정보를 제1 논리 주소 공간으로부터 삭제하는 단계;
상기 제1 논리 주소 공간에 연속하는 제2 논리 주소 공간에 대응하는 제2 네임스페이스에 대한 맵핑 정보를 캐시로 로드하는 단계;
상기 제2 네임스페이스에 대한 맵핑 정보를 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피하는 단계;
상기 제2 네임스페이스에 대한 맵핑 정보를 상기 제2 논리 주소 공간으로부터 삭제하는 단계; 및
상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료되기 전에 상기 제2 네임스페이스에 대한 접근 요청이 있는 경우, 상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 요청된 쓰기 또는 읽기 동작을 수행하는 단계를 포함하는, 스토리지 장치의 동작 방법. - 제1 항에 있어서,
상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 요청된 쓰기 또는 읽기 동작을 수행하는 단계는,
상기 제2 네임스페이스에 대한 쓰기 요청 및 쓰기 데이터를 수신하는 단계;
상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료되었는지 확인하는 단계; 및
상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료되지 않은 경우에, 상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 상기 쓰기 데이터를 불휘발성 메모리에 기입하는 단계를 포함하는, 스토리지 장치의 동작 방법. - 제2 항에 있어서,
상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 요청된 쓰기 또는 읽기 동작을 수행하는 단계는,
상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보와 상기 쓰기 데이터의 논리 주소가 일치하는 경우, 상기 캐시에 저장된 상기 쓰기 데이터에 대응하는 물리 주소를 무효화하는 단계; 및
상기 쓰기 데이터가 기입된 상기 불휘발성 메모리의 물리 주소를 상기 쓰기 데이터의 논리 주소에 재-맵핑하는 단계를 더 포함하는, 스토리지 장치의 동작 방법. - 제3 항에 있어서,
상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료된 후에, 상기 캐시에 저장된 재-맵핑된 상기 쓰기 데이터의 맵핑 정보를 이용하여 상기 제1 논리 주소 공간에 저장된 상기 제2 네임스페이스에 대한 맵핑 정보를 업데이트하는, 스토리지 장치의 동작 방법. - 제2 항에 있어서,
상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 요청된 쓰기 또는 읽기 동작을 수행하는 단계는,
상기 제2 네임스페이스에 대한 읽기 요청을 수신하는 단계;
상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료되었는지 확인하는 단계; 및
상기 제2 네임스페이스에 대한 맵핑 정보가 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 카피 완료되지 않은 경우에, 상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보를 참조하여 상기 읽기 요청에 대응하는 읽기 동작을 수행하는 단계를 포함하는, 스토리지 장치의 동작 방법 - 불휘발성 메모리; 및
상기 불휘발성 메모리에 저장된 데이터를 멀티 네임스페이스를 통해 관리하는 컨트롤러를 포함하며,
상기 컨트롤러는
네임스페이스 각각의 논리 주소와 물리 주소 사이의 맵핑 정보를 관리하는 메타 매니저;
상기 네임스페이스 각각에 대한 맵핑 정보를 저장하는 메모리; 및
복수의 네임스페이스들 중 삭제 요청된 제1 네임스페이스와 연속하는 논리 주소 공간을 갖는 제2 네임스페이스에 대한 맵핑 정보를 상기 메모리로부터 로드하여 저장하는 캐시를 포함하고,
단편화 동작 수행 중에 상기 제2 네임스페이스에 대한 접근 요청이 수신되는 경우, 상기 메타 매니저는 상기 캐시에 저장된 상기 제2 네임스페이스에 대한 맵핑 정보에 기초하여 쓰기 또는 읽기 동작을 수행하는, 스토리지 장치. - 제6 항에 있어서,
상기 제1 네임스페이스는 제1 논리 주소 공간에 할당되고,
상기 제2 네임스페이스는 상기 제1 논리 주소 공간과 연속적인 제2 논리 주소 공간에 할당되며,
상기 제1 네임스페이스에 대한 삭제 요청 시에, 상기 메타 매니저는 상기 제1 네임스페이스에 대한 맵핑 정보를 상기 제1 논리 주소 공간으로부터 삭제하고, 상기 제2 네임스페이스에 대한 맵핑 정보를 상기 캐시로 로드하는, 스토리지 장치. - 제7 항에 있어서,
상기 메타 매니저는 상기 제2 네임스페이스에 대한 맵핑 정보를 상기 캐시로 로드하고, 이후 상기 제2 네임스페이스에 대한 맵핑 정보를 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 이동시키는, 스토리지 장치. - 제6 항에 있어서,
상기 단편화 동작 수행 중에 상기 제2 네임스페이스에 대한 쓰기 요청이 수신되는 경우, 상기 메타 매니저는 상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보에 기초하여 쓰기 동작을 수행하는, 스토리지 장치. - 제9 항에 있어서,
상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보와 상기 쓰기 요청된 쓰기 데이터의 논리 주소가 일치하는 경우, 상기 메타 매니저는 상기 캐시에서 상기 쓰기 데이터에 대응하는 물리 주소를 무효화하는, 스토리지 장치. - 제10 항에 있어서,
상기 메타 매니저는 상기 캐시에서 상기 쓰기 데이터가 기입된 상기 불휘발성 메모리의 물리 주소를 상기 쓰기 데이터의 논리 주소로 재-맵핑하는, 스토리지 장치. - 제11 항에 있어서,
상기 단편화 동작이 완료된 이후, 상기 메타 매니저는 상기 캐시에 저장된 재-맵핑된 상기 쓰기 데이터의 맵핑 정보를 이용하여 상기 메모리에 저장된 맵핑 정보를 업데이트 하는, 스토리지 장치. - 제12 항에 있어서,
상기 메모리에 저장된 맵핑 정보가 업데이트된 이후, 상기 메타 매니저는 상기 캐시에 저장된 맵핑 정보를 삭제하는, 스토리지 장치. - 제6 항에 있어서,
상기 단편화 동작 수행 중에 상기 제2 네임스페이스에 대한 읽기 요청이 수신되는 경우, 상기 메타 매니저는 상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보에 기초하여 읽기 동작을 수행하는, 스토리지 장치. - 제6 항에 있어서,
상기 메타 매니저는 네임스페이스 각각의 사이즈 및 오프셋에 기초하여 맵핑 정보를 관리하는, 스토리지 장치. - 제6 항에 있어서,
상기 맵퍼는 복수의 네임스페이스들의 논리 주소를 물리 주소로 변환하는 L2P 테이블을 포함하는, 스토리지 장치. - 제16 항에 있어서,
상기 L2P 테이블에서 관리되는 논리 주소들은 서로 연속적인 주소를 갖는, 스토리지 장치. - 적어도 하나의 호스트; 및
상기 적어도 하나의 호스트의 네임스페이스 생성 요청에 응답하여, 복수의 네임스페이스들을 동적으로 생성하는 스토리지지 장치를 포함하며,
상기 스토리지 장치는,
불휘발성 메모리; 및
상기 불휘발성 메모리에 저장된 데이터를 상기 복수의 네임스페이스들을 통해 관리하는 컨트롤러를 포함하며,
상기 복수의 네임스페이스들은,
제1 논리 주소 공간에 할당된 제1 네임스페이스; 및
상기 제1 논리 주소 공간과 연속적인 제2 논리 주소 공간에 할당된 제2 네임스페이스를 포함하고,
상기 컨트롤러는, 상기 제1 네임스페이스에 대한 삭제 요청에 응답하여, 상기 제1 논리 주소 공간에서 상기 제1 네임스페이스를 삭제하고, 상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 상기 제2 네임스페이스에 대한 맵핑 정보를 카피하고, 상기 제2 네임스페이스에 대한 맵핑 정보를 캐시로 로드하는, 스토리지 시스템. - 제18 항에 있어서,
상기 제2 논리 주소 공간으로부터 상기 제1 논리 주소 공간으로 상기 제2 네임스페이스에 대한 맵핑 정보를 카피하는 동작의 동작 수행 중에 상기 제2 네임스페이스에 대한 접근 요청이 수신되는 경우, 상기 컨트롤러는 상기 캐시에 저장된 상기 제2 네임스페이스에 대한 맵핑 정보에 기초하여 쓰기 또는 읽기 동작을 수행하는, 스토리지 시스템. - 제19 항에 있어서,
상기 캐시에 로드된 상기 제2 네임스페이스에 대한 맵핑 정보와 쓰기 요청된 쓰기 데이터의 논리 주소가 일치하는 경우, 상기 컨트롤러는 상기 캐시에서 상기 쓰기 데이터에 대응하는 물리 주소를 무효화하고, 상기 쓰기 데이터가 기입될 상기 불휘발성 메모리의 물리 주소를 상기 쓰기 데이터의 논리 주소로 재-맵핑하는, 스토리지 시스템.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230006344A KR20240114205A (ko) | 2023-01-16 | 2023-01-16 | 멀티 네임스페이스를 지원하는 스토리지 장치 및 그것의 동작 방법 |
US18/531,155 US20240241835A1 (en) | 2023-01-16 | 2023-12-06 | Storage device supporting multi-namespace and method of operating the same |
EP23220502.1A EP4400977A1 (en) | 2023-01-16 | 2023-12-28 | Storage device supporting multi-namespace and method of operating the same |
CN202410054653.1A CN118349164A (zh) | 2023-01-16 | 2024-01-12 | 支持多命名空间的存储装置及运行其的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230006344A KR20240114205A (ko) | 2023-01-16 | 2023-01-16 | 멀티 네임스페이스를 지원하는 스토리지 장치 및 그것의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240114205A true KR20240114205A (ko) | 2024-07-23 |
Family
ID=89426631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230006344A KR20240114205A (ko) | 2023-01-16 | 2023-01-16 | 멀티 네임스페이스를 지원하는 스토리지 장치 및 그것의 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240241835A1 (ko) |
EP (1) | EP4400977A1 (ko) |
KR (1) | KR20240114205A (ko) |
CN (1) | CN118349164A (ko) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10095413B2 (en) * | 2016-01-28 | 2018-10-09 | Toshiba Memory Corporation | Memory system with address translation between a logical address and a physical address |
KR20180047402A (ko) * | 2016-10-31 | 2018-05-10 | 삼성전자주식회사 | 멀티 네임스페이스를 관리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
KR20200032404A (ko) * | 2018-09-18 | 2020-03-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 |
-
2023
- 2023-01-16 KR KR1020230006344A patent/KR20240114205A/ko unknown
- 2023-12-06 US US18/531,155 patent/US20240241835A1/en active Pending
- 2023-12-28 EP EP23220502.1A patent/EP4400977A1/en active Pending
-
2024
- 2024-01-12 CN CN202410054653.1A patent/CN118349164A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN118349164A (zh) | 2024-07-16 |
US20240241835A1 (en) | 2024-07-18 |
EP4400977A1 (en) | 2024-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324834B2 (en) | Storage device managing multi-namespace and method of operating the storage device | |
US11640353B2 (en) | Memory system, data storage device, user device and data management method thereof | |
US10649657B2 (en) | Log-based storage for different data types in non-volatile memory | |
CN109240938B (zh) | 存储系统以及控制非易失性存储器的控制方法 | |
US10789162B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9244619B2 (en) | Method of managing data storage device and data storage device | |
US9645739B2 (en) | Host-managed non-volatile memory | |
US11687262B2 (en) | Memory system and method of operating the same | |
KR102695719B1 (ko) | 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
US20190265910A1 (en) | Memory system | |
KR20200031924A (ko) | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치 | |
US20200334147A1 (en) | Data access in data storage device including storage class memory | |
KR20240114205A (ko) | 멀티 네임스페이스를 지원하는 스토리지 장치 및 그것의 동작 방법 | |
CN113934647A (zh) | 用于存储器子系统的命名空间管理 | |
US11657000B2 (en) | Controller and memory system including the same | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same |