KR20220073017A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents
데이터 저장 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20220073017A KR20220073017A KR1020200160677A KR20200160677A KR20220073017A KR 20220073017 A KR20220073017 A KR 20220073017A KR 1020200160677 A KR1020200160677 A KR 1020200160677A KR 20200160677 A KR20200160677 A KR 20200160677A KR 20220073017 A KR20220073017 A KR 20220073017A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- caching
- memory device
- bit value
- data block
- Prior art date
Links
Images
Classifications
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- 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/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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0656—Data buffering arrangements
-
- 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
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- 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
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명의 실시 예에 따른 데이터 저장 장치는 데이터들을 데이터 블록 단위로 구분한 복수의 데이터 블록으로 구성된 제1 메모리 장치; 제1 메모리 장치로부터 캐싱되는 데이터들을 저장하는 제2 메모리 장치; 및 캐싱이 요구되는 제1 데이터 블록 및 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹 단위로 제1 메모리 장치에 저장된 데이터들을 제2 메모리 장치에 캐싱하도록 제어하는 컨트롤러를 포함할 수 있다.
Description
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
호스트 장치는 데이터 저장 장치에 저장된 데이터를 읽거나 데이터 저장 장치에 데이터를 저장하기 위하여 데이터 저장 장치에 접근할 수 있다.
호스트 장치로부터 리드 커맨드가 전송되는 경우, 상기 리드 커맨드에 대응되는 데이터를 신속하게 회신하기 위해, 데이터 저장 장치에 저장된 데이터 중 일부를 원래 저장되어 있던 제1 메모리로부터 미리 독출하여 액세스 속도가 상대적으로 빠른 제2 메모리에 저장하는 캐싱 방식을 적용하고 있는 실정이다.
현재, 빅 데이터, AI, 5G, IoT 등을 이용한 서비스가 증가함에 따라, 기존에 비해 상대적으로 큰 단위의 시퀀셜 리드/라이트가 요구되는 워크로드가 점점 증가하고 있는 추세이다.
이러한 환경에서 호스트 장치로 보다 빠른 데이터를 회신하기 위해 상술한 제2 메모리에 캐싱하는 방식을 적용하는데, 이때, 제2 메모리로 캐싱하는 데이터의 크기가 고정된 크기의 블록 단위로 이루어지고 있어, 한 번에 동작하는 데이터들의 연속성을 유지하지 못하고 있는 실정이다.
이에, 호스트 장치와 데이터 저장 장치 간의 데이터 처리 속도를 향상시켜 호스트 장치로 신속한 데이터 피드백 성능을 제공할 수 있는 방안이 요구되고 있다.
본 발명의 실시 예는 데이터 데이터 처리 성능이 향상된 데이터 저장 장치 및 그것의 동작 방법을 제공하고자 한다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 데이터들을 데이터 블록 단위로 구분한 복수의 데이터 블록으로 구성된 제1 메모리 장치; 상기 제1 메모리 장치로부터 캐싱되는 데이터들을 저장하는 제2 메모리 장치; 및 캐싱이 요구되는 제1 데이터 블록 및 상기 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹 단위로 상기 제1 메모리 장치에 저장된 데이터들을 상기 제2 메모리 장치에 캐싱하도록 제어하는 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 제1 메모리 장치 내 복수의 데이터 블록 각각의 라이트 카운트를 체크하는 단계; 상기 복수의 데이터 블록 개수와 동일한 크기의 비트맵에 상기 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정하는 단계; 상기 제1 비트값을 이용하여 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹을 복수 개 형성하는 단계; 및 상기 복수 개의 캐싱 그룹 중 캐싱이 요구되는 제1 데이터 블록 및 상기 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함하는 캐싱 그룹 단위로 상기 제1 메모리 장치에 저장된 데이터들을 제2 메모리 장치로 캐싱하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 데이터 저장 장치는, 데이터들을 데이터 블록 단위로 구분하여 저장하는 제1 메모리 장치; 상기 제1 메모리 장치로부터 캐싱되는 데이터들을 저장하는 제2 메모리 장치; 및 상기 제1 메모리 장치 내 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 체크 결과 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록들을 포함하여 복수의 캐싱 그룹으로 형성하며, 형성된 상기 복수의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 캐싱 할 캐싱 그룹을 선택하고, 선택된 상기 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치에 캐싱하도록 제어하는 컨트롤러를 포함하고, 상기 복수의 캐싱 그룹 각각의 크기는 단일 데이터 블록의 크기 보다 크거나 동일할 수 있다.
본 실시 예들에 따르면, 접근성이 용이한 메모리 장치로 캐싱 그룹 단위의 데이터들을 캐싱하기 때문에, 데이터들의 캐싱 처리 능력을 향상시킬 수 있다는 효과를 기대할 수 있다.
또한, 본 실시예들은 호스트의 요청에 따라 캐싱 그룹 단위의 데이터를 회신하기 때문에, 한 번에 처리해야 워크로드에서 데이터의 연속성을 보장할 수 있다는 효과를 기대할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 컨트롤러의 구성을 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 제2 메모리 장치의 구성을 나타낸 도면이다.
도 4a, 도 4b 및 도 5는 본 발명의 실시 예에 따른 캐싱 그룹을 생성하는 방법을 설명하기 위한 예시도이다.
도 6은 본 발명의 실시 예에 따른 캐싱 방식을 설명하기 위한 예시도이다.
도 7은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법의 일 예를 설명하기 위한 흐름도이다.
도 8은 본 발명의 실시예에 따른 데이터 저장 장치의 동작 방법의 다른 예를 설명하기 위한 흐름도이다.
도 9는 본 발명의 일 실시예에 의한 스토리지 시스템의 구성도이다.
도 10 및 도 11은 본 발명의 실시예들에 따른 데이터 처리 시스템의 구성도이다.
도 12는 본 발명의 일 실시예에 의한 데이터 저장 장치를 포함하는 네트워크 시스템의 구성도이다.
도 13은 본 발명의 일 실시 예에 따른 데이터 저장 장치에 포함된 비휘발성 메모리 장치의 구성도이다.
도 2는 본 발명의 실시 예에 따른 컨트롤러의 구성을 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 제2 메모리 장치의 구성을 나타낸 도면이다.
도 4a, 도 4b 및 도 5는 본 발명의 실시 예에 따른 캐싱 그룹을 생성하는 방법을 설명하기 위한 예시도이다.
도 6은 본 발명의 실시 예에 따른 캐싱 방식을 설명하기 위한 예시도이다.
도 7은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법의 일 예를 설명하기 위한 흐름도이다.
도 8은 본 발명의 실시예에 따른 데이터 저장 장치의 동작 방법의 다른 예를 설명하기 위한 흐름도이다.
도 9는 본 발명의 일 실시예에 의한 스토리지 시스템의 구성도이다.
도 10 및 도 11은 본 발명의 실시예들에 따른 데이터 처리 시스템의 구성도이다.
도 12는 본 발명의 일 실시예에 의한 데이터 저장 장치를 포함하는 네트워크 시스템의 구성도이다.
도 13은 본 발명의 일 실시 예에 따른 데이터 저장 장치에 포함된 비휘발성 메모리 장치의 구성도이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타낸 도면이고, 도 2는 본 발명의 실시 예에 따른 컨트롤러의 구성을 나타낸 도면이다.
도 1을 참고하면, 데이터 저장 장치(100)는 제1 메모리 장치(110), 제2 메모리 장치(130) 및 컨트롤러(150)를 포함할 수 있다.
제1 메모리 장치(110)는 데이터들을 데이터 블록 단위로 구분하여 저장할 수 있다.
구체적으로, 제1 메모리 장치(110)는 데이터들을 데이터 블록 단위로 구분한 복수의 데이터 블록으로 구성될 수 있다. 이때, 데이터 블록은 제2 메모리 장치(130)로 데이터들을 캐싱할 수 있는 최소 캐싱 단위를 의미할 수 있다. 본 실시 예에서는 기존에 고정된 단일 데이터 블록 단위로 캐싱을 수행하는 것이 아닌 라이트 카운트에 따라 적어도 하나 이상의 데이터 블록을 포함하도록 캐싱 그룹 단위로 캐싱 처리할 수 있으며, 이에 대한 상세 설명은 후술하기로 한다.
제1 메모리 장치(110)는 후술하는 제2 메모리 장치(130)와 같이, 복수의 랭크(rank)를 포함할 수 있다. 이때, 복수의 랭크 각각은 내부에 데이터들을 구분하여 저장하는 복수의 뱅크(bank)를 포함할 수 있다. 이러한 구조는 제2 메모리 장치(130)의 구조와 동일하며, 상세 설명은 후술하기로 한다.
제1 메모리 장치(110)는 SCM(storage class memory)으로 구현될 수 있으며, 이에 한정되지 않는다. 제1 메모리 장치(110)는 플래시 메모리(flash memory)처럼 비휘발성의 특성을 가지면서 SDRAM(synchronous dynamic random access memory)처럼 고속을 지원하는 저장매체일 수 있다.
제1 메모리 장치(110)는 제2 메모리 장치(130)에 비해 액세스 대기 시간이 길 수 있다. 이에, 본 실시예에서는 제1 메모리 장치(110)에 저장된 데이터 중 일부를 제2 메모리 장치(130)에 캐싱하여 호스트 장치로부터의 리드 커맨드에 대한 데이터 회신을 빠르게 처리할 수 있도록 할 수 있다.
도 3은 본 발명의 실시 예에 따른 제2 메모리 장치의 구성을 나타낸 도면이다.
제2 메모리 장치(130)는 제1 메모리 장치(110)로부터 캐싱되는 데이터들을 저장할 수 있다.
본 실시예에서, 제2 메모리 장치(130)는 호스트 장치로부터 리드 커맨드를 수신하는 경우, 해당 데이터들이 존재하는지 여부를 파악하기 위해 제1 메모리 장치(110) 보다 우선적으로 접근하는 메모리 장치일 수 있다.
도 3을 참고하면, 제2 메모리 장치(130)는 복수의 랭크(rank)(131a, 131b, …)를 포함할 수 있다. 이때, 복수의 랭크(131a, 131b, …) 각각은 내부에 데이터들을 구분하여 저장하는 복수의 뱅크(bank)(131a-1, 131a-2, 131a-3, 131a-4, …)를 포함할 수 있다. 이러한 제2 메모리 장치(130)의 구조는 제1 메모리 장치(110)에도 역시 동일 적용될 수 있다.
이에, 제1 및 제2 메모리 장치(130)의 물리주소는 랭크(rank)(131a, 131b, …), 뱅크(bank)(131a-1, 131a-2, 131a-3, 131a-4, …), 로우(row) 및 컬럼(column)을 포함할 수 있다. 이때, 로우는 뱅크(131a-1, 131a-2, 131a-3, 131a-4, …) 내 로우 정보를 의미하고, 컬럼은 뱅크(131a-1, 131a-2, 131a-3, 131a-4, …) 내 컬럼 정보를 의미할 수 있다.
예를 들어, 제1 및 제2 메모리 장치(130)의 물리주소는 rank(2):bank(3):row(16):col(11)로 (01)(001)(1110001100110100)(01101111101)와 같은 형태일 수 있다. 즉, 복수의 랭크 중 2번째 랭크 내 3번째 뱅크 내 16로우 및 11컬럼이 물리주소일 수 있는 것이다.
제2 메모리 장치(130)는 DRAM(dynamic random access memory)으로 구현될 수 있으며, 이에 한정되지 않는다.
제2 메모리 장치(130)는 제1 메모리 장치(110)에 비해 액세스 대기 시간이 짧을 수 있다. 또한, 제2 메모리 장치(130)는 제1 메모리 장치(110)에 비해 컨트롤러(150)와의 물리적 거리도 짧아 상대적으로 접근성이 양호할 수 있다.
컨트롤러(150)는 제1 메모리 장치(110)에 저장된 데이터들을 데이터 블록 단위로 구분하고, 구분된 적어도 하나 이상의 데이터 블록을 포함하여 복수의 캐싱 그룹으로 형성하며, 형성된 상기 복수의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 선택된 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치(130)에 캐싱하도록 제어할 수 있다.
기존에는 제1 메모리 장치(110)로의 데이터 라이트가 발생할 때마다, 컨트롤러(150)가 라이트된 데이터를 제2 메모리 장치(130)로 캐싱하기 때문에, 제2 메모리 장치(130)에 자주 사용되지 않아도 불필요하게 저장되는 데이터가 다수 존재할 수 있다. 본 실시예는 제1 메모리 장치(110)의 데이터를 제2 메모리 장치(130)로 캐싱할 때, 라이트 카운트가 높은 순서로 캐싱 대상을 선정하기 때문에 제2 메모리 장치(130)가 상대적으로 자주 사용되는 데이터(예를 들어, 핫 데이터)를 저장할 수 있을 수 있다. 이에, 제2 메모리 장치(130)에 저장된 데이터들의 리드 적중률(Hit ratio)이 향상될 수 있다는 효과를 기대할 수 있는 것이다.
상기 복수의 캐싱 그룹 각각의 크기는 단일 데이터 블록의 크기 보다 크거나 동일할 수 있다. 이때, 단일 데이터 블록은 최소 캐싱 단위를 의미하는 것으로서, 기존에는 한 번에 캐싱되는 단위가 단일 데이터 블록이었기 때문에 상대적으로 데이터의 캐싱 속도 및 데이터의 연속성을 보장할 수 없었다. 본 실시예는 적어도 하나 이상의 데이터 블록을 포함하여 캐싱 그룹을 형성하고, 캐싱 그룹 단위로 제2 메모리 장치(130)로의 캐싱을 수행하기 때문에, 캐싱 속도 향상 및 데이터의 연속성을 보장할 수 있다는 효과를 기대할 수 있다.
도 2를 참조하면, 일 실시예에 의한 컨트롤러(150)는 프로세서(151), 호스트 인터페이스(153), 메모리(155), 메모리 컨트롤러(157) 및 캐싱 처리부(159)를 포함할 수 있다.
프로세서(151)는 호스트 장치(미도시)의 요청에 응답하는 연산을 수행하기 위해 사용되는 명령어들을 포함할 수 있다.
상술한 제2 메모리 장치(130)는 DRAM과 같은 메모리 회로 및 메모리 회로에 저장된 데이터에 대한 액세스를 처리하기 위한 제어 회로들을 포함할 수 있다. 제2 메모리 장치(130)는 논리적 및 물리적으로 프로세서(151)와 상대적으로 가깝게 위치하여 상대적으로 빠른 속도로 동작할 수 있다.
프로세서(151)는 호스트 장치로부터 리드 커맨드를 수신하면, 리드 커맨드에 포함된 논리주소를 이용하여 맵핑 테이블을 검색하고, 검색 결과 상기 논리주소에 매칭되는 제2 메모리 장치(130)의 물리주소의 유무에 따라 캐싱 여부를 파악할 수 있다. 이때, 맵핑 테이블은 캐싱 그룹 내 데이터들을 제2 메모리 장치(130)에 캐싱한 후, 캐싱된 데이터들에 대한 논리주소, 제1 메모리 장치(110)의 물리주소 및 제2 메모리 장치(130)의 물리주소를 매칭하여 생성된 것일 수 있다. 상기 맵핑 테이블은 제2 메모리 장치(130)에 저장될 수 있다.
맵핑 테이블에 논리주소에 매칭되는 제2 메모리 장치(130)의 물리주소가 존재하는 경우, 프로세서(151)는 제2 메모리 장치(130)로부터 제2 메모리 장치(130)의 물리주소에 해당하는 데이터들을 획득하여 획득한 데이터들을 호스트 장치로 회신할 수 있다.
이때, 프로세서(151)는 데이터들을 호스트 장치로 회신할 때, 캐싱 그룹 단위로 회신할 수 있다. 본 실시예에서 개시하는 캐싱 그룹 크기는 단일 데이터 블록의 크기 보다 동일하거나 크기 때문에, 호스트 장치에서 한 번에 동작해야 하는 워크로드에 해당하는 데이터들의 연속성을 보장할 수 있다는 효과를 기대할 수 있다.
프로세서(151)는 제2 메모리 장치(130)의 메모리 잔여 공간이 기준치 이하인 경우, 제2 메모리 장치(130)에 저장된 데이터들을 이빅션(eviction)할 수 있다. 프로세서(151)는 이빅션된 데이터들의 크기와 동일한 크기의 제1 메모리 장치(110) 내 캐싱 그룹의 데이터들을 제2 메모리 장치(130)로 캐싱하도록 제1 메모리 장치(110)를 제어할 수 있다.
이때, 프로세서(151)는 제1 메모리 장치(110)의 캐싱 방식에 따라 제2 메모리 장치(130)로부터 이빅션된 데이터들을 제1 메모리 장치(110)에 재 저장하거나, 또는 저장하지 않을 수 있다. 예를 들어, 제1 메모리 장치(110)가 제2 메모리 장치(130)로 데이터들을 캐싱한 후, 해당 데이터들이 제1 메모리 장치(110)에 저장되어 있지 않은 경우, 제2 메모리 장치(130)로부터 이빅션된 데이터들을 제1 메모리 장치(110)에 재 저장될 수 있다. 이와 반대로, 제1 메모리 장치(110)가 제2 메모리 장치(130)로 데이터들을 캐싱한 후, 해당 데이터들이 제1 메모리 장치(110)에 그대로 저장되어 있는 경우, 제2 메모리 장치(130)로부터 이빅션된 데이터들을 제1 메모리 장치(110)에 재 저장되지 않을 수 있다.
호스트 인터페이스(153)는 프로세서(151)의 제어에 따라 호스트 장치로부터 커맨드 및 클럭 신호를 수신하고 데이터의 입출력을 제어하기 위한 통신 채널을 제공할 수 있다. 특히, 호스트 인터페이스(153)는 호스트 장치와 데이터 저장 장치(100) 간의 물리적 연결을 제공할 수 있다. 그리고 호스트 장치의 버스 포맷에 대응하여 데이터 저장 장치(100)와의 인터페이싱을 제공할 수 있다. 호스트 장치의 버스 포맷은 시큐어 디지털(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 Express), UFS(universal flash storage)와 같은 표준 인터페이스 프로토콜들 중 적어도 어느 하나를 포함할 수 있다.
메모리(155)는 컨트롤러(150)의 동작에 필요한 프로그램 코드, 예를 들어 펌웨어 또는 소프트웨어가 저장되고, 프로그램 코드들이 이용하는 코드 데이터 등이 저장될 수 있는 ROM 및 컨트롤러(150)의 동작에 필요한 데이터 또는 컨트롤러(150)에 의해 생성된 데이터를 저장할 수 있는 메인 메모리로서의 RAM을 포함할 수 있다.
메모리 컨트롤러(157)는 컨트롤러(150)와 제1 및 제2 메모리 장치(110, 130) 간의 신호 송수신을 위한 통신 채널을 제공할 수 있다. 도시하지 않았지만, 메모리 컨트롤러(157)는 제1 메모리 장치(110)와의 통신 채널과 제2 메모리 장치(130)와의 통신 채널을 별도로 구분하여 제공할 수 있다.
메모리 컨트롤러(157)는 프로세서(151)의 제어에 따라 호스트 장치의 입력 데이터를 제1 메모리 장치(110)에 기입할 수 있다. 그리고 제1 메모리 장치(110)로부터 독출되는 데이터를 호스트 장치로 제공할 수 있다.
일 예로, 캐싱 처리부(159)는 캐싱이 요구되는 제1 데이터 블록 및 상기 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹 단위로 제1 메모리 장치(110)에 저장된 데이터들을 상기 제2 메모리 장치(130)로 캐싱하도록 제어할 수 있다. 이때, 제1 데이터 블록은 제1 메모리 장치(110) 내 저장된 데이터 블록으로 제2 메모리 장치(130)로 캐싱할 데이터 블록을 의미하는 것이다.
캐싱 처리부(159)는 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 복수의 데이터 블록의 개수와 동일한 크기의 비트맵에 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정하며, 비트맵의 제1 비트값들의 간격으로 캐싱 그룹의 크기를 결정할 수 있다.
캐싱 처리부(159)는 제1 비트값을 기초로 복수 개의 캐싱 그룹을 형성할 수 있다.
캐싱 처리부(159)는 복수 개의 캐싱 그룹 중 캐싱이 요구되는 제1 데이터 블록이 포함된 캐싱 그룹 내 데이터들을 제2 메모리 장치(130)로 캐싱할 수 있다.
상기 복수 개의 캐싱 그룹 각각의 크기는 단일 데이터 블록의 크기 보다 크거나 동일할 수 있다. 캐싱 처리부(159)는 제1 메모리 장치(110) 내 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 체크된 복수의 데이터 블록에서 제2 데이터 블록의 라이트 카운트가 상기 제2 데이터 블록의 직전 블록인 제3 데이터 블록의 라이트 카운트와 상이하면 제1 비트 값으로 변경하고, 제1 비트 값에 대응되는 데이터 블록을 시작으로 연속된 동일 라이트 카운트의 데이터 블록들을 포함하여 캐싱 그룹을 형성할 수 있다. 이때, 제1 비트 값은 미리 설정된 특정 비트 값을 의미하는 것으로서, 제1 비트값이 해당 캐싱 그룹의 첫 번째 데이터 블록을 표시하는 구분자 역할을 수행할 수 있다. 즉, 제1 비트 값이 캐싱 그룹들 간에 경계를 구분하기 위한 기준일 수 있다는 것이다. 예를 들어, 비트 맵이 1000100이고, 제1 비트 값이 1인 경우, 제1 비트 값 단위는 1000과 100일 수 있는 것이다. 즉, 비트맵 1000100에서, 1000과 100의 2개의 제1 비트 값 단위로 구분될 수 있는 것이다.
캐싱 처리부(159)는 복수 개의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 캐싱이 요구되는 제1 데이터 블록이 포함된 캐싱 그룹으로 선택하고, 선택된 캐싱 그룹 내 데이터들을 제2 메모리 장치(130)에 캐싱하도록 제어할 수 있다.
다른 예로, 캐싱 처리부(159)는 제1 메모리 장치(110) 내 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 체크 결과 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록들을 포함하여 복수의 캐싱 그룹으로 형성하며, 형성된 상기 복수의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 캐싱 할 캐싱 그룹을 선택하고, 선택된 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치(130)에 캐싱하도록 제어할 수 있다. 이때, 복수의 캐싱 그룹 각각의 크기는 단일 데이터 블록의 크기 보다 크거나 동일할 수 있다.
캐싱 처리부(159)는 복수의 데이터 블록의 개수와 동일한 크기의 비트맵에 상기 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정하며, 상기 제1 비트값을 이용하여 적어도 하나 이상의 데이터 블록을 포함한 상기 복수의 캐싱 그룹을 형성할 수 있다.
도 4a, 도 4b 및 도 5는 본 발명의 실시 예에 따른 캐싱 그룹을 생성하는 방법을 설명하기 위한 예시도이다.
도 4a를 참고하면, 캐싱 처리부(159)는 복수의 데이터 블록에서 첫 번째 데이터 블록에 대응되는 비트 값을 1로 하고, 두 번째 데이터 블록부터 마지막 데이터 블록까지에 대응되는 비트 값을 0으로 하여 최초 비트맵을 설정할 수 있다. 예를 들어, 데이터 블록이 0 내지 19로 20개인 경우, 최초 비트맵은 10000000000000000000일 수 있는 것이다.
도 4a 및 도 4b에서 도시하는 바와 같이, 비트맵은 복수의 데이터 블록 각각에 대응되게 형성될 수 있다.
캐싱 처리부(159)는 후술하는 비트 값을 변경할 때, 최초 비트맵을 기초로 복수의 데이터 블록 각각에 대한 비트 값을 변경할 수 있다.
도 4b를 참고하면, 캐싱 처리부(159)는 데이터 블록 0의 라이트 카운트 1, 데이터 블록 1의 라이트 카운트 1, 데이터 블록 2의 라이트 카운트 1, 데이터 블록 3의 라이트 카운트 1, 데이터 블록 4의 라이트 카운트 2, 데이터 블록 5의 라이트 카운트 2, 데이터 블록 6의 라이트 카운트 2, 데이터 블록 7의 라이트 카운트 3, 데이터 블록 8의 라이트 카운트 3, 데이터 블록 9의 라이트 카운트 3, 데이터 블록 10의 라이트 카운트 4, 데이터 블록 11의 라이트 카운트 4, 데이터 블록 12의 라이트 카운트 4, 데이터 블록 13의 라이트 카운트 4, 데이터 블록 14의 라이트 카운트 3, 데이터 블록 15의 라이트 카운트 3, 데이터 블록 16의 라이트 카운트 0, 데이터 블록 17의 라이트 카운트 0, 데이터 블록 18의 라이트 카운트 0 및 데이터 블록 19의 라이트 카운트 0으로 파악할 수 있다.
도 4b를 참고하면, 캐싱 처리부(159)는 데이터 블록 0 내지 19에서 현재 데이터 블록인 제2 데이터 블록의 라이트 카운트가 직전 데이터 블록인 제3 데이터 블록의 카운트와 상이한 경우, 비트 값을 변경할 수 있다. 이때, 데이터 블록에 대응되는 최초 비트맵을 이용하여 비트 값을 변경할 수 있다. 예를 들어, 데이터 블록 0(도 4b의 block No. 0)은 최초 비트 값이 1이고 직전 데이터 블록이 없기 때문에, 최초 비트 값 1을 유지할 수 있다. 다음, 데이터 블록 1은 라이트 카운트가 1로 직전 데이터 블록의 라이트 카운트 1과 동일하여, 최초 비트 값인 0을 그대로 유지할 수 있다. 데이터 블록 4는 라이트 카운트가 2로 직전 데이터 블록인 데이터 블록 3의 라이트 카운트 1과 상이하기 때문에, 최초 비트 값인 0을 1로 변경할 수 있다. 이러한 방식으로 복수의 데이터 블록 전체에 대한 비트 값을 설정할 수 있다.
도 4b를 참고하면, 캐싱 처리부(159)는 복수의 데이터 블록 0 내지 19에서 특정 비트 값(제1 비트값) 단위로 연속된 데이터 블록인 데이터 블록 0 내지 3, 데이터 블록 4 내지 6, 데이터 블록 7 내지 9, 데이터 블록 10 내지 13, 데이터 블록 14 내지 15 및 데이터 블록 16 내지 19를 각각의 캐싱 그룹으로 형성할 수 있다. 이때, 특정 비트 값은 1일 수 있다. 즉, 캐싱 처리부(159)는 비트 값 1을 시작 기준으로 하여 연속된 데이터 블록들을 포함하여 캐싱 그룹으로 형성할 수 있다.
캐싱 처리부(159)는 제2 메모리 장치(130)로 캐싱을 수행하기 전에 캐싱 그룹을 형성할 수 있다. 즉, 복수의 데이터 블록 각각에 대한 라이트 카운트는 계속 변경될 수 있기 때문에, 캐싱 처리부(159)는 캐싱을 수행하기 전에 캐싱 그룹을 형성하여 최신 라이트 카운트가 반영된 상태의 데이터 블록에 대해 캐싱 그룹을 형성하는 것이다.
상술한 과정에 따라 캐싱 그룹이 형성되기 때문에, 본 실시예에서는 복수의 캐싱 그룹 각각의 크기가 동일한 라이트 카운트의 연속된 데이터 블록의 개수에 따라 결정될 수 있다. 본 실시예에서 캐싱 그룹은 동일 라이트 카운트의 연속된 데이터 블록으로 이루어지기 때문에, 호스트 장치에서 한 번에 동작해야 하는 시퀀셜 데이터들이 포함된 상태일 수 있다. 이에, 호스트 장치에서 리드 카운트에 대한 회신으로 캐싱 그룹 단위의 데이터들을 수신하여 데이터의 연속성을 보장받을 수 있다는 효과를 기대할 수 있다.
캐싱 처리부(159)는 복수의 캐싱 그룹 각각에 대해 라이트 카운트, 캐싱 그룹별 크기 및 캐싱 그룹별 시작 블록 정보 중 적어도 하나 이상을 포함하여 캐싱 그룹 정보 리스트를 생성 및 관리할 수 있다.
도 5를 참고하면, 캐싱 그룹 정보 리스트는 캐싱 그룹별 크기에 대응되는 시작 블록 번호를 매칭하여 생성할 수 있으며, 이에 한정되지 않는다. 도 5에서 캐싱 그룹별 크기는 N-1로 나타낸 것으로서, 이에 한정되지 않는다. 예를 들어, 캐싱 그룹의 크기가 1인 캐싱 그룹은 존재하지 않고, 캐싱 그룹의 크기가 2인 캐싱 그룹의 시작 블록의 번호는 14, 캐싱 그룹의 크기가 3인 캐싱 그룹의 시작 블록의 번호는 4와 7, 캐싱 그룹의 크기가 4인 캐싱 그룹의 시작 블록의 번호는 10과 16일 수 있는 것이다.
도시하지 않았지만, 캐싱 그룹 정보 리스트 내 각각의 캐싱 그룹은 라이트 카운트를 매칭하여 저장할 수 있음은 당연하다 할 것이다.
상술한 캐싱 그룹 정보 리스트는 제1 메모리 장치(110)로부터 제2 메모리 장치(130)로 캐싱할 캐싱 그룹을 선정할 때 활용하여, 캐싱 처리를 신속하게 수행하도록 할 수 있다.
도 6은 본 발명의 실시 예에 따른 캐싱 방식을 설명하기 위한 예시도이다.
캐싱 처리부(159)는 복수의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 캐싱할 캐싱 그룹을 선택할 수 있다. 도 6을 참고하면, 라이트 카운트가 높은 데이터 블록들은 타 데이터 블록들에 비해 상대적으로 핫(hot) 상태이고, 이러한 상태의 데이터 블록들을 포함하는 캐싱 그룹이 제2 메모리 장치(130)로 캐싱될 수 있는 것이다.
캐싱 처리부(159)는 캐싱 그룹 내 데이터들을 제2 메모리 장치(130)에 캐싱한 후, 캐싱된 데이터들에 대한 논리주소, 제1 메모리 장치(110)의 물리주소 및 제2 메모리 장치(130)의 물리주소를 매칭하여 맵핑 테이블을 생성할 수 있다.
이때, 맵핑 테이블은 제2 메모리 장치(130)에 저장되어, 호스트 장치로부터 요청되는 리드 커맨드 등을 처리할 때 활용될 수 있다.
상술한 제1 및 제2 메모리 장치(130)의 물리주소는 랭크(rank)(131a, 131b, …), 뱅크(bank)(131a-1, 131a-2, 131a-3, 131a-4, …), 로우(row) 및 컬럼(column)를 포함할 수 있다. 예를 들어, 제1 및 제2 메모리 장치(130)의 물리주소는 rank(2):bank(3):row(16):col(11)로 (01)(001)(1110001100110100)(01101111101)와 같은 형태일 수 있다.
캐싱 처리부(159)는 제2 메모리 장치(130) 내 데이터의 이빅션(eviction)으로 인해 프로세서(151)로부터 전송되는 캐싱 요청을 수신하면, 이빅션된 데이터들의 크기와 동일한 크기의 제1 메모리 장치(110) 내 캐싱 그룹을 선정하여 제2 메모리 장치(130)로 캐싱할 수 있다. 이때, 프로세서(151)로부터 전송된 캐싱 요청은 이빅션된 데이터들의 크기를 포함할 수 있다.
도 7은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법의 일 예를 설명하기 위한 흐름도이다.
먼저, 데이터 저장 장치(100)는 제1 메모리 장치(110) 내 복수의 데이터 블록 각각의 라이트 카운트를 체크할 수 있다(S101).
이때, 데이터 블록에 대한 라이트 카운트 체크는 제1 메모리 장치(110)에 데이터 라이트가 발생할 때마다 수행할 수 있다.
다음, 데이터 저장 장치(100)는 복수의 데이터 블록 개수와 동일한 크기의 비트맵에 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정할 수 있다(S103).
단계 S103에서, 데이터 저장 장치(100)는 복수의 데이터 블록에서 첫 번째 데이터 블록에 대응되는 비트 값을 1로 하고, 두 번째 데이터 블록부터 마지막 데이터 블록까지에 대응되는 비트 값을 0으로 하여 최초 비트맵을 설정할 수 있다.
데이터 저장 장치(100)는 후술하는 제2 데이터 블록에 대한 비트 값을 변경할 때, 최초 비트맵을 기초로 복수의 데이터 블록 각각에 대한 비트 값을 변경할 수 있다.
데이터 저장 장치(100)는 복수의 데이터 블록에서 제2 데이터 블록의 라이트 카운트가 제2 데이터 블록의 직전 블록인 제3 데이터 블록의 라이트 카운트와 동일한지 여부를 확인할 수 있다. 확인결과 동일하지 않은 경우, 데이터 저장 장치(100)는 제2 데이터 블록에 대응되는 비트값을 제1 비트 값으로 변경할 수 있다. 상기 제2 데이터 블록의 비트 값을 변경할 때, 데이터 저장 장치(100)는 상기 최초 비트맵을 기초로 복수의 데이터 블록에서 제2 데이터 블록에 대한 비트 값을 변경할 수 있다.
다음, 데이터 저장 장치(100)는 상기 제1 비트값을 이용하여 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹을 복수 개 형성할 수 있다(S105). 이때, 복수 개의 캐싱 그룹을 형성하는 것은 제2 메모리 장치(150)로 데이터를 캐싱하기 전에 수행할 수 있다. 이에 따라, 캐싱 그룹이 데이터 블록별 최신 데이터 카운트가 반영된 상태로 형성될 수 있는 것이다.
데이터 저장 장치(100)는 라이트 카운트 체크 결과를 기초로 라이트 카운트가 동일한 연속된 데이터 블록들을 포함하여 캐싱 그룹으로 형성할 수 있다.
구체적으로, 데이터 저장 장치(100)는 복수의 데이터 블록에서 제1 비트값에 대응되는 데이터 블록을 시작으로 연속된 동일 라이트 카운트의 데이터 블록들을 포함하여 캐싱 그룹을 형성할 수 있다.
다음, 데이터 저장 장치(100)는 복수 개의 캐싱 그룹 중 캐싱이 요구되는 제1 데이터 블록 및 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함하는 캐싱 그룹 단위로 제1 메모리 장치(110)에 저장된 데이터들을 제2 메모리 장치(130)로 캐싱할 수 있다(S107, S109).
구체적으로, 데이터 저장 장치(100)는 복수의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 상기 캐싱이 요구되는 제1 데이터 블록이 포함된 캐싱할 캐싱 그룹으로 결정할 수 있다(S107).
도 5에서 도시하는 바와 같이, 데이터 저장 장치(100)는 복수의 캐싱 그룹 각각에 대해 라이트 카운트, 캐싱 그룹별 크기 및 캐싱 그룹별 시작 블록 정보 중 적어도 하나 이상을 포함하여 캐싱 그룹 정보 리스트를 생성하여 관리할 수 있다.
다음, 데이터 저장 장치(100)는 결정된 캐싱 그룹 내 데이터들을 제2 메모리 장치(130)로 캐싱할 수 있다(S109).
도시하지 않았지만, 데이터 저장 장치(100)는 제2 메모리 장치(130)로 데이터들을 캐싱한 후, 캐싱된 데이터들에 대한 논리주소, 제1 메모리 장치(110)의 물리주소 및 제2 메모리 장치(130)의 물리주소를 매칭하여 맵핑 테이블을 생성할 수 있다.
한편, 도시하지 않았지만, 데이터 저장 장치(100)는 제2 메모리 장치(130)의 메모리 잔여 공간이 기준치 이하인 경우, 제2 메모리 장치(130)에 저장된 데이터들을 이빅션(eviction)할 수 있다. 데이터 저장 장치(100)는 이빅션된 데이터들의 크기와 동일한 크기의 제1 메모리 장치(110) 내 캐싱 그룹을 제2 메모리 장치(130)로 캐싱할 수 있다.
도 8은 본 발명의 실시예에 따른 데이터 저장 장치의 동작 방법의 다른 예를 설명하기 위한 흐름도이다.
이하에서 개시하는 데이터 저장 장치의 동작 방법은 도 7의 제2 메모리 장치로 데이터들을 캐싱한 후에 이루어지는 것을 예로 들어 설명하기로 한다.
데이터 저장 장치(100)는 호스트 장치로부터 리드 커맨드를 수신하면(S201), 리드 커맨드에 포함된 논리주소를 이용하여 맵핑 테이블을 검색할 수 있다(S203).
이때, 맵핑 테이블은 캐싱 그룹 내 데이터들을 제2 메모리 장치(130)에 캐싱한 후, 캐싱된 데이터들에 대한 논리주소, 제1 메모리 장치(110)의 물리주소 및 제2 메모리 장치(130)의 물리주소를 매칭하여 생성된 것일 수 있다.
데이터 저장 장치(100)는 검색 결과 상기 논리주소에 매칭되는 제2 메모리 장치의 물리주소의 유무에 따라 캐싱 여부를 파악할 수 있다.
구체적으로, 데이터 저장 장치(100)는 검색 결과 상기 논리주소에 매칭되는 제2 메모리 장치의 물리주소가 있는지 여부를 확인할 수 있다(S205).
확인 결과, 맵핑 테이블에 상기 논리주소에 매칭되는 제2 메모리 장치(130)의 물리주소가 존재하는 경우, 데이터 저장 장치(100)는 제2 메모리 장치(130)로부터 제2 메모리 장치(130)의 물리주소에 해당하는 데이터들을 획득할 수 있다(S207).
다음, 데이터 저장 장치(100)는 획득한 데이터들을 호스트 장치로 회신할 수 있다(S209). 이때, 호스트 장치로 회신되는 데이터들은 캐싱 그룹 단위일 수 있다. 즉, 데이터 저장 장치(100) 복수의 데이터 블록을 포함하여 이루어진 캐싱 그룹 단위로 데이터들을 호스트 장치로 전송한다는 것이다.
한편, 단계 S205의 확인 결과, 맵핑 테이블에 논리주소에 매칭되는 제2 메모리 장치(130)의 물리주소가 존재하지 않는 경우, 데이터 저장 장치(100)는 맵핑 테이블을 참고하여, 논리주소에 매칭되는 제1 메모리 장치(110)의 물리주소를 파악하고, 이를 기초로 제1 메모리 장치(110)로부터 해당하는 데이터들을 획득할 수 있다(S211). 다음, 데이터 저장 장치(100)는 획득된 데이터들을 호스트 장치로 회신하는 단계 S209를 수행할 수 있다.
도 9는 일 실시예에 의한 스토리지 시스템의 구성도이다.
도 9를 참조하면, 스토리지 시스템(1000)은 호스트 장치(1100)와 데이터 저장 장치(1200)를 포함할 수 있다. 일 실시예에서, 데이터 저장 장치(1200)는 솔리드 스테이트 드라이브(solid state drive)(SSD)로 구성될 수 있다.
데이터 저장 장치(1200)는 컨트롤러(1210), 비휘발성 메모리 장치들(1220-0 ~ 1220-n), 버퍼 메모리 장치(1230), 전원 공급기(1240), 신호 커넥터(1101) 및 전원 커넥터(1103)를 포함할 수 있다.
컨트롤러(1210)는 데이터 저장 장치(1200)의 제반 동작을 제어할 수 있다. 컨트롤러(1210)는 호스트 인터페이스 유닛, 컨트롤 유닛, 동작 메모리로서의 랜덤 액세스 메모리, 에러 정정 코드(ECC) 유닛 및 메모리 인터페이스 유닛을 포함할 수 있다. 예를 들어, 컨트롤러(1210)는 도 1 내지 도 3에 도시한 컨트롤러(150)로 구성될 수 있다.
호스트 장치(1100)와 데이터 저장 장치(1200)는 신호 커넥터(1101)를 통해 신호를 송수신할 수 있다. 여기에서, 신호란 명령어, 어드레스, 데이터를 포함할 수 있다.
컨트롤러(1210)는 호스트 장치(1100)로부터 입력된 신호를 분석하고 처리할 수 있다. 컨트롤러(1210)는 데이터 저장 장치(1200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 백그라운드 기능 블럭들의 동작을 제어할 수 있다
버퍼 메모리 장치(1230)는 비휘발성 메모리 장치들(1220-0 ~ 1220-n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(1230)는 비휘발성 메모리 장치들(1220-0 ~ 1220-n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(1230)에 임시 저장된 데이터는 컨트롤러(1210)의 제어에 따라 호스트 장치(1100) 또는 비휘발성 메모리 장치들(1220-0 ~ 1220-n)로 전송될 수 있다.
비휘발성 메모리 장치들(1220-0 ~ 1220-n)은 데이터 저장 장치(1200)의 저장 매체로 사용될 수 있다. 비휘발성 메모리 장치들(1220-0 ~ 1220-n) 각각은 복수의 채널들(CH0~CHn)을 통해 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 비휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 비휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(1240)는 전원 커넥터(1103)를 통해 입력된 전원을 데이터 저장 장치(1200)의 컨트롤러(1210), 비휘발성 메모리 장치들(1220-0 ~ 1220-n) 및 버퍼 메모리(1230)에 제공할 수 있다. 전원 공급기(1240)는 보조 전원 공급기(1241)를 포함할 수 있다. 보조 전원 공급기(1241)는 서든 파워 오프(sudden power off)가 발생되는 경우, 데이터 저장 장치(1200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(1241)는 대용량 캐패시터들(capacitors)을 포함할 수 있으나 이에 한정되는 것은 아니다.
신호 커넥터(1101)는 호스트 장치(1100)와 데이터 저장 장치(1200)의 인터페이스 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있음은 자명하다.
전원 커넥터(1103)는 호스트 장치(1100)의 전원 공급 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있음은 물론이다.
도 10 및 도 11은 실시예들에 따른 데이터 처리 시스템의 구성도이다.
도 10을 참조하면, 데이터 처리 시스템(3000)은 호스트 장치(3100)와 메모리 시스템(3200)을 포함할 수 있다.
호스트 장치(3100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(3100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
호스트 장치(3100)는 소켓(socket), 슬롯(slot) 또는 커넥터(connector)와 같은 접속 터미널(3110)을 포함할 수 있다. 메모리 시스템(3200)은 접속 터미널(3110)에 마운트(mount)될 수 있다.
메모리 시스템(3200)은 인쇄 회로 기판과 같은 기판 형태로 구성될 수 있다. 메모리 시스템(3200)은 메모리 모듈 또는 메모리 카드로 불릴 수 있다. 메모리 시스템(3200)은 컨트롤러(3210), 버퍼 메모리 장치(3220), 비휘발성 메모리 장치(3231~3232), PMIC(power management integrated circuit)(3240) 및 접속 터미널(3250)을 포함할 수 있다.
컨트롤러(3210)는 메모리 시스템(3200)의 제반 동작을 제어할 수 있다.
컨트롤러(3210)는 도 1 내지 도 3에 도시한 컨트롤러(150)와 실질적으로 동일하게 구성될 수 있다.
버퍼 메모리 장치(3220)는 비휘발성 메모리 장치들(3231~3232)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(3220)는 비휘발성 메모리 장치들(3231~3232)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(3220)에 임시 저장된 데이터는 컨트롤러(3210)의 제어에 따라 호스트 장치(3100) 또는 비휘발성 메모리 장치들(3231~3232)로 전송될 수 있다.
비휘발성 메모리 장치들(3231~3232)은 메모리 시스템(3200)의 저장 매체로 사용될 수 있다.
PMIC(3240)는 접속 터미널(3250)을 통해 입력된 전원을 메모리 시스템(3200) 백그라운드에 제공할 수 있다. PMIC(3240)는, 컨트롤러(3210)의 제어에 따라서, 메모리 시스템(3200)의 전원을 관리할 수 있다.
접속 터미널(3250)은 호스트 장치의 접속 터미널(3110)에 연결될 수 있다. 접속 터미널(3250)을 통해서, 호스트 장치(3100)와 메모리 시스템(3200) 간에 커맨드, 어드레스, 데이터 등과 같은 신호와, 전원이 전달될 수 있다. 접속 터미널(3250)은 호스트 장치(3100)와 메모리 시스템(3200)의 인터페이스 방식에 따라 다양한 형태로 구성될 수 있다. 접속 터미널(3250)은 메모리 시스템(3200)의 어느 한 변에 배치될 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다.
도 11을 참조하면, 데이터 처리 시스템(4000)은 호스트 장치(4100)와 메모리 시스템(4200)을 포함할 수 있다.
호스트 장치(4100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(4100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
메모리 시스템(4200)은 표면 실장형 패키지 형태로 구성될 수 있다. 메모리 시스템(4200)은 솔더 볼(solder ball)(4250)을 통해서 호스트 장치(4100)에 마운트될 수 있다. 메모리 시스템(4200)은 컨트롤러(4210), 버퍼 메모리 장치(4220) 및 비휘발성 메모리 장치(4230)를 포함할 수 있다.
컨트롤러(4210)는 메모리 시스템(4200)의 제반 동작을 제어할 수 있다.
버퍼 메모리 장치(4220)는 비휘발성 메모리 장치(4230)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(4220)는 비휘발성 메모리 장치들(4230)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(4220)에 임시 저장된 데이터는 컨트롤러(4210)의 제어에 따라 호스트 장치(4100) 또는 비휘발성 메모리 장치(4230)로 전송될 수 있다.
비휘발성 메모리 장치(4230)는 메모리 시스템(4200)의 저장 매체로 사용될 수 있다.
도 12는 일 실시예에 의한 데이터 저장 장치를 포함하는 네트워크 시스템의 구성도이다.
도 12를 참조하면, 네트워크 시스템(5000)은 네트워크(5500)를 통해서 연결된 서버 시스템(5300) 및 복수의 클라이언트 시스템들(5410~5430)을 포함할 수 있다.
서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)로 데이터를 제공할 수 있다.
서버 시스템(5300)은 호스트 장치(5100) 및 메모리 시스템(5200)을 포함할 수 있다. 메모리 시스템(5200)은 도 1의 데이터 저장 장치(100), 도 9의 데이터 저장 장치(1200), 도 10의 메모리 시스템(3200), 도 11의 메모리 시스템(4200)으로 구성될 수 있다.
도 13은 일 실시 예에 따른 데이터 저장 장치에 포함된 비휘발성 메모리 장치의 구성도이다.
도 13을 참조하면, 비휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 행 디코더(320), 데이터 읽기/쓰기 블럭(330), 열 디코더(340), 전압 발생기(350) 및 제어 로직(360)을 포함할 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL1~WLm)과 비트 라인들(BL1~BLn)이 서로 교차된 영역에 배열된 메모리 셀(MC)들을 포함할 수 있다.
메모리 셀 어레이(310)는 3차원 메모리 어레이를 포함할 수 있다. 3차원 메모리 어레이는 반도체 기판의 평판면에 대해 수직의 방향성을 가지며, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀의 수직 상부에 위치하는 낸드(NAND) 스트링을 포함하는 구조를 의미한다. 하지만 3차원 메모리 어레이의 구조가 이에 한정되는 것은 아니며 수직의 방향성뿐 아니라 수평의 방향성을 가지고 고집적도로 형성된 메모리 어레이 구조라면 선택적으로 적용 가능함은 자명하다.
행 디코더(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)의 읽기, 쓰기, 소거 동작을 제어할 수 있다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 데이터 저장 장치
110: 제1 메모리 장치
130: 제2 메모리 장치 150: 컨트롤러
151: 프로세서 159: 캐싱 처리부
130: 제2 메모리 장치 150: 컨트롤러
151: 프로세서 159: 캐싱 처리부
Claims (21)
- 데이터들을 데이터 블록 단위로 구분한 복수의 데이터 블록으로 구성된 제1 메모리 장치;
상기 제1 메모리 장치로부터 캐싱되는 데이터들을 저장하는 제2 메모리 장치; 및
캐싱이 요구되는 제1 데이터 블록 및 상기 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹 단위로 상기 제1 메모리 장치에 저장된 데이터들을 상기 제2 메모리 장치로 캐싱하도록 제어하는 컨트롤러,
를 포함하는 데이터 저장 장치. - 제1항에 있어서,
상기 컨트롤러는,
상기 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 상기 복수의 데이터 블록의 개수와 동일한 크기의 비트맵에 상기 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정하며, 상기 비트맵의 상기 제1 비트값들의 간격으로 상기 캐싱 그룹의 크기를 결정하는 데이터 저장 장치. - 제2항에 있어서,
상기 컨트롤러는,
상기 제1 메모리 장치 내 상기 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 체크된 상기 복수의 데이터 블록에서 제2 데이터 블록의 라이트 카운트가 상기 제2 데이터 블록의 직전 블록인 제3 데이터 블록의 라이트 카운트와 상이하면 상기 제1 비트 값으로 변경하고, 상기 제1 비트 값에 대응되는 데이터 블록을 시작으로 연속된 동일 라이트 카운트의 데이터 블록들을 포함하여 상기 캐싱 그룹을 형성하는 데이터 저장 장치. - 제3항에 있어서,
상기 컨트롤러는,
상기 복수의 데이터 블록에서 첫 번째 데이터 블록에 대응되는 비트 값을 1로 하고, 두 번째 데이터 블록부터 마지막 데이터 블록까지에 대응되는 비트 값을 0으로 하여 최초 비트맵을 설정하며,
상기 비트 값을 변경할 때, 상기 최초 비트맵을 기초로 상기 복수의 데이터 블록 각각에 대한 비트 값을 변경하는 데이터 저장 장치. - 제2항에 있어서,
상기 컨트롤러는,
상기 제1 비트값을 기초로 복수 개의 캐싱 그룹을 형성하고, 형성된 상기 복수 개의 캐싱 그룹 중 상기 캐싱이 요구되는 제1 데이터 블록이 포함된 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치로 캐싱하는 데이터 저장 장치. - 제5항에 있어서,
상기 컨트롤러는,
상기 복수 개의 캐싱 그룹 각각에 대해 라이트 카운트, 캐싱 그룹별 크기 및 캐싱 그룹별 시작 블록 정보 중 적어도 하나 이상을 포함하여 캐싱 그룹 정보 리스트를 생성 및 관리하는 데이터 저장 장치. - 제2항에 있어서,
상기 컨트롤러는,
상기 제1 비트값을 기초로 복수 개의 캐싱 그룹을 형성하고, 상기 복수 개의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 상기 캐싱이 요구되는 제1 데이터 블록이 포함된 캐싱 그룹으로 선택하고, 선택된 상기 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치에 캐싱하도록 제어하는 데이터 저장 장치. - 제1항에 있어서,
상기 컨트롤러는,
상기 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치에 캐싱한 후, 캐싱된 상기 데이터들에 대한 논리주소, 상기 제1 메모리 장치의 물리주소 및 상기 제2 메모리 장치의 물리주소를 매칭하여 맵핑 테이블을 생성하는 데이터 저장 장치. - 제8항에 있어서,
상기 컨트롤러는,
호스트 장치로부터 리드 커맨드를 수신하면, 상기 리드 커맨드에 포함된 논리주소를 이용하여 상기 맵핑 테이블을 검색하고, 검색 결과 상기 논리주소에 매칭되는 제2 메모리 장치의 물리주소의 유무에 따라 캐싱 여부를 파악하는 데이터 저장 장치. - 제9항에 있어서,
상기 맵핑 테이블에 상기 논리주소에 매칭되는 상기 제2 메모리 장치의 물리주소가 존재하는 경우,
상기 컨트롤러는,
상기 제2 메모리 장치로부터 상기 제2 메모리 장치의 물리주소에 해당하는 데이터들을 획득하여 획득한 데이터들을 상기 호스트 장치로 회신하되, 상기 캐싱 그룹 단위로 상기 데이터들을 회신하는 데이터 저장 장치. - 제1항에 있어서,
상기 컨트롤러는,
상기 제2 메모리 장치의 메모리 잔여 공간이 기준치 이하인 경우, 상기 제2 메모리 장치에 저장된 데이터들을 이빅션(eviction)하고, 이빅션된 상기 데이터들의 크기와 동일한 크기의 상기 제1 메모리 장치 내 캐싱 그룹의 데이터들을 상기 제2 메모리 장치로 캐싱하는 데이터 저장 장치. - 제1 메모리 장치 내 복수의 데이터 블록 각각의 라이트 카운트를 체크하는 단계;
상기 복수의 데이터 블록 개수와 동일한 크기의 비트맵에 상기 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정하는 단계;
상기 제1 비트값을 이용하여 적어도 하나 이상의 데이터 블록을 포함한 캐싱 그룹을 복수 개 형성하는 단계; 및
상기 복수 개의 캐싱 그룹 중 캐싱이 요구되는 제1 데이터 블록 및 상기 제1 데이터 블록과 동일한 라이트 카운트를 갖는 적어도 하나 이상의 데이터 블록을 포함하는 캐싱 그룹 단위로 상기 제1 메모리 장치에 저장된 데이터들을 제2 메모리 장치로 캐싱하는 단계,
를 포함하는 데이터 저장 장치의 동작 방법. - 제12항에 있어서,
상기 제1 비트값으로 설정하는 단계는,
상기 복수의 데이터 블록에서 제2 데이터 블록의 라이트 카운트가 상기 제2 데이터 블록의 직전 블록인 제3 데이터 블록의 라이트 카운트와 동일한지 여부를 확인하는 단계; 및
확인결과 동일하지 않은 경우, 상기 제3 데이터 블록에 대응되는 비트값을 상기 제1 비트 값으로 변경하는 단계를 포함하고,
상기 복수 개의 캐싱 그룹을 형성할 때, 상기 복수의 데이터 블록에서 상기 제1 비트값에 대응되는 데이터 블록을 시작으로 연속된 동일 라이트 카운트의 데이터 블록들을 포함하여 상기 캐싱 그룹을 형성하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 제1 비트값으로 설정하는 단계는,
상기 복수의 데이터 블록에서 첫 번째 데이터 블록에 대응되는 비트 값을 1로 하고, 두 번째 데이터 블록부터 마지막 데이터 블록까지에 대응되는 비트 값을 0으로 하여 최초 비트맵을 설정하는 단계를 더 포함하고,
상기 제2 데이터 블록의 비트 값을 변경할 때, 상기 최초 비트맵을 기초로 상기 복수의 데이터 블록 각각에서 상기 제2 데이터 블록에 대한 비트 값을 변경하는 데이터 저장 장치의 동작 방법. - 제12항에 있어서,
상기 복수 개의 캐싱 그룹을 형성하는 단계 이후, 상기 제2 메모리 장치로 캐싱하는 단계 이전에,
상기 복수 개의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 상기 캐싱이 요구되는 제1 데이터 블록이 포함된 캐싱할 캐싱 그룹으로 결정하는 단계,
를 더 포함하는 데이터 저장 장치의 동작 방법. - 제12항에 있어서,
상기 복수 개의 캐싱 그룹을 형성하는 단계 이후에,
상기 복수 개의 캐싱 그룹 각각에 대해 라이트 카운트, 캐싱 그룹별 크기 및 캐싱 그룹별 시작 블록 정보 중 적어도 하나 이상을 포함하여 캐싱 그룹 정보 리스트를 생성 및 관리하는 단계,
를 더 포함하는 데이터 저장 장치의 동작 방법. - 제12항에 있어서,
상기 캐싱 그룹을 제2 메모리 장치로 캐싱하는 단계 이후에,
캐싱된 상기 데이터들에 대한 논리주소, 상기 제1 메모리 장치의 물리주소 및 상기 제2 메모리 장치의 물리주소를 매칭하여 맵핑 테이블을 생성하는 단계,
를 더 포함하는 데이터 저장 장치의 동작 방법. - 제17항에 있어서,
상기 캐싱 그룹을 제2 메모리 장치로 캐싱하는 단계 이후에,
호스트 장치로부터 리드 커맨드를 수신하면, 상기 리드 커맨드에 포함된 논리주소를 이용하여 상기 맵핑 테이블을 검색하는 단계;
검색 결과 상기 논리주소에 매칭되는 상기 제2 메모리 장치의 물리주소의 유무에 따라 캐싱 여부를 파악하는 단계;
상기 맵핑 테이블에 상기 논리주소에 매칭되는 상기 제2 메모리 장치의 물리주소가 존재하는 경우, 상기 제2 메모리 장치로부터 상기 제2 메모리 장치의 물리주소에 해당하는 데이터들을 획득하는 단계; 및
획득한 데이터들을 상기 호스트 장치로 회신하는 단계를 포함하고,
상기 호스트 장치로 회신되는 데이터들은 상기 캐싱 그룹 단위인 데이터 저장 장치의 동작 방법. - 제12항에 있어서,
상기 캐싱 그룹을 제2 메모리 장치로 캐싱하는 단계 이후에,
상기 제2 메모리 장치의 메모리 잔여 공간이 기준치 이하인 경우, 상기 제2 메모리 장치에 저장된 데이터들을 이빅션(eviction)하는 단계; 및
이빅션된 상기 데이터들의 크기와 동일한 크기의 상기 제1 메모리 장치 내 캐싱 그룹의 데이터들을 상기 제2 메모리 장치로 캐싱하는 단계,
를 더 포함하는 데이터 저장 장치의 동작 방법. - 데이터들을 데이터 블록 단위로 구분하여 저장하는 제1 메모리 장치;
상기 제1 메모리 장치로부터 캐싱되는 데이터들을 저장하는 제2 메모리 장치; 및
상기 제1 메모리 장치 내 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 체크 결과 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록들을 포함하여 복수의 캐싱 그룹으로 형성하며, 형성된 상기 복수의 캐싱 그룹 중 라이트 카운트가 높은 순서를 기준으로 캐싱 할 캐싱 그룹을 선택하고, 선택된 상기 캐싱 그룹 내 데이터들을 상기 제2 메모리 장치에 캐싱하도록 제어하는 컨트롤러를 포함하고,
상기 복수의 캐싱 그룹 각각의 크기는 단일 데이터 블록의 크기 보다 크거나 동일한 데이터 저장 장치. - 제20항에 있어서,
상기 컨트롤러는,
상기 제1 메모리 장치 내 상기 복수의 데이터 블록 각각의 라이트 카운트를 체크하고, 상기 복수의 데이터 블록의 개수와 동일한 크기의 비트맵에 상기 라이트 카운트가 동일한 연속된 적어도 하나 이상의 데이터 블록의 시작위치 각각에 대응되는 비트값을 제1 비트값으로 설정하며, 상기 제1 비트값을 이용하여 적어도 하나 이상의 데이터 블록을 포함한 상기 복수의 캐싱 그룹을 형성하는 데이터 저장 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200160677A KR20220073017A (ko) | 2020-11-26 | 2020-11-26 | 데이터 저장 장치 및 그것의 동작 방법 |
US17/196,909 US11544198B2 (en) | 2020-11-26 | 2021-03-09 | Data storage device employing caching groups defined by write counts of data blocks and operating method thereof |
CN202110373220.9A CN114546249B (zh) | 2020-11-26 | 2021-04-07 | 数据存储装置及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200160677A KR20220073017A (ko) | 2020-11-26 | 2020-11-26 | 데이터 저장 장치 및 그것의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220073017A true KR20220073017A (ko) | 2022-06-03 |
Family
ID=81657086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200160677A KR20220073017A (ko) | 2020-11-26 | 2020-11-26 | 데이터 저장 장치 및 그것의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11544198B2 (ko) |
KR (1) | KR20220073017A (ko) |
CN (1) | CN114546249B (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI835221B (zh) * | 2022-07-26 | 2024-03-11 | 旺宏電子股份有限公司 | 記憶體裝置及其操作方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004287636A (ja) * | 2003-03-20 | 2004-10-14 | Hitachi Printing Solutions Ltd | 不揮発性メモリのデータバックアップ方式 |
US9213628B2 (en) * | 2010-07-14 | 2015-12-15 | Nimble Storage, Inc. | Methods and systems for reducing churn in flash-based cache |
WO2012116369A2 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
JP2013073644A (ja) * | 2011-09-27 | 2013-04-22 | Of Networks:Kk | バッファメモリ装置及び通信装置 |
CN102789427B (zh) * | 2012-07-17 | 2015-11-25 | 威盛电子股份有限公司 | 数据储存装置与其操作方法 |
US9355022B2 (en) * | 2012-12-07 | 2016-05-31 | Sandisk Technologies Inc. | Systems and methods for intelligent flash management |
EP2972888B1 (en) * | 2013-03-14 | 2019-02-06 | Micron Technology, INC. | Memory systems and methods including training,data organizing,and/or shadowing |
KR20150037364A (ko) | 2013-09-30 | 2015-04-08 | 삼성전자주식회사 | 캐시 마이그레이션 관리 방법 및 이를 적용한 호스트 시스템 |
CN104506619B (zh) * | 2014-12-22 | 2018-06-05 | 华为技术有限公司 | 一种数据备份、恢复方法及其装置、服务器 |
US10037149B2 (en) * | 2016-06-17 | 2018-07-31 | Seagate Technology Llc | Read cache management |
KR20180134119A (ko) | 2017-06-08 | 2018-12-18 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템 및 그 동작 방법 |
KR102535104B1 (ko) * | 2018-03-19 | 2023-05-23 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11126573B1 (en) * | 2020-07-29 | 2021-09-21 | Nxp Usa, Inc. | Systems and methods for managing variable size load units |
-
2020
- 2020-11-26 KR KR1020200160677A patent/KR20220073017A/ko unknown
-
2021
- 2021-03-09 US US17/196,909 patent/US11544198B2/en active Active
- 2021-04-07 CN CN202110373220.9A patent/CN114546249B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US11544198B2 (en) | 2023-01-03 |
CN114546249A (zh) | 2022-05-27 |
CN114546249B (zh) | 2024-04-02 |
US20220164292A1 (en) | 2022-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083545B (zh) | 数据存储装置及其操作方法 | |
KR102592803B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20200218653A1 (en) | Controller, data storage device, and operating method thereof | |
KR20200022641A (ko) | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 | |
KR20190102781A (ko) | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 | |
CN110390988B (zh) | 数据存储装置、防止读取干扰的操作方法及存储*** | |
CN112445421A (zh) | 数据存储装置及其操作方法 | |
US20220138096A1 (en) | Memory system | |
US20190057049A1 (en) | Memory system and operating method thereof | |
CN111177031A (zh) | 数据存储装置及操作方法和具有数据存储装置的存储*** | |
KR20200113480A (ko) | 데이터 저장 장치 및 동작 방법 | |
US20230031745A1 (en) | Memory system and controller of memory system | |
US20210357329A1 (en) | Memory system | |
US20210191626A1 (en) | Data processing system | |
KR20190121461A (ko) | 전자 장치 | |
CN114546249B (zh) | 数据存储装置及其操作方法 | |
KR20210056628A (ko) | 메모리 시스템 | |
US20190227940A1 (en) | Memory system and operating method thereof | |
KR20200121068A (ko) | 데이터 저장 장치 및 이의 동작 방법, 이를 위한 컨트롤러 | |
US11243718B2 (en) | Data storage apparatus and operation method i'hereof | |
US11366736B2 (en) | Memory system using SRAM with flag information to identify unmapped addresses | |
KR20210156061A (ko) | 저장 장치 및 그 동작 방법 | |
KR20210028405A (ko) | 서치 회로 및 컨트롤러 | |
KR20190102998A (ko) | 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법 | |
US11422892B2 (en) | Data storage apparatus and operating method thereof |