KR102401600B1 - 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 - Google Patents
데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 Download PDFInfo
- Publication number
- KR102401600B1 KR102401600B1 KR1020150122912A KR20150122912A KR102401600B1 KR 102401600 B1 KR102401600 B1 KR 102401600B1 KR 1020150122912 A KR1020150122912 A KR 1020150122912A KR 20150122912 A KR20150122912 A KR 20150122912A KR 102401600 B1 KR102401600 B1 KR 102401600B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- stream
- ids
- amount
- request
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
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)
- Computer Networks & Wireless Communication (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 하나 이상의 불휘발성 메모리들 및 메모리 컨트롤러를 포함하는 스토리지 장치를 제공한다. 메모리 컨트롤러는 호스트로부터 제 1 개수의 요청 스트림 아이디들을 각각 갖는 데이터 스트림들을 제공받는다. 메모리 컨트롤러는 제 1 개수의 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 데이터 양에 관한 정보를 참조하여 제 1 개수의 요청 스트림 아이디들을 제 2 개수의 처리 스트림 아이디들로 맵핑하고, 데이터 스트림들 각각의 쓰기 데이터가 제 2 개수의 처리 스트림 아이디들에 따라 불휘발성 메모리들 중 적어도 하나에 저장되도록, 불휘발성 메모리들을 제어한다. 본 발명에 따르면, 쓰기 동작의 성능이 향상되고, 스토리지 장치의 수명의 단축이 느려진다.
Description
본 발명은 스토리지 장치에 관한 것으로, 좀 더 구체적으로는 쓰기 데이터가 복수의 데이터 스트림(Stream)을 통해 전송 및 저장될 수 있게 하는 스토리지 장치의 구성 및 동작에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 스토리지 장치는 전자 장치의 한 예로서, 데이터를 저장할 수 있다. 스토리지 장치는 호스트(Host)로부터 수신된 데이터를 저장하거나, 그것에 저장된 데이터를 호스트의 요청에 응답하여 호스트로 전송할 수 있다. 스토리지 장치의 동작에 따라, 사용자에게 다양한 서비스가 제공될 수 있다.
스토리지 장치는 불휘발성 저장 매체로서, 스토리지 장치에 저장된 데이터는 전원 공급에 관계없이 영구적으로 또는 반영구적으로 보존된다. 근래의 스토리지 장치는 기계적으로 동작하는 매체 대신, 반도체 메모리와 같이 전기적으로 동작하는 매체를 포함하도록 제작된다. 반도체 메모리를 포함하는 스토리지 장치(예컨대, SSD(Solid State Drive))는 빠른 동작 속도 때문에 다양한 분야에서 널리 이용되고 있다.
반도체 메모리를 포함하는 스토리지 장치는 그것에 포함되는 다양한 회로들의 동작에 따라 고유의 기능을 수행한다. 반도체 메모리를 포함하는 스토리지 장치가 널리 이용됨에 따라, 스토리지 장치에 포함되는 회로들의 성능 또는 특성을 향상시키거나 스토리지 장치의 동작을 개선하기 위해 다양한 방법들이 제안되어 왔다.
본 발명은 복수의 데이터 스트림을 통해 쓰기 데이터를 전송 및 저장하도록 구성되는 스토리지 장치를 제공할 수 있다. 본 발명의 실시 예에서, 스토리지 장치는 복수의 데이터 스트림 각각의 데이터 양(Amount)에 기초하여 스트림 아이디(Identifier; ID)들 사이의 맵핑(Mapping) 및 데이터 스트림들의 병합을 관리할 수 있다.
본 발명의 일 실시 예에 따른 스토리지 장치는 하나 이상의 불휘발성 메모리들 및 메모리 컨트롤러를 포함할 수 있다. 메모리 컨트롤러는 호스트로부터 제공된 제 1 개수의 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 쓰기 데이터가 불휘발성 메모리들 중 적어도 하나에 저장되도록, 불휘발성 메모리들을 제어할 수 있다. 메모리 컨트롤러는 쓰기 양 관리기, 스트림 관리기, 및 맵핑 관리기를 포함할 수 있다. 쓰기 양 관리기는 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 데이터 양에 관한 정보를 관리할 수 있다. 스트림 관리기는 데이터 스트림들이 제 2 개수의 처리 스트림 아이디들에 따라 불휘발성 메모리들로 제공되도록, 데이터 양에 관한 정보를 참조하여 제 1 개수의 요청 스트림 아이디들을 제 2 개수의 처리 스트림 아이디들로 맵핑할 수 있다. 맵핑 관리기는 제 1 개수의 요청 스트림 아이디들과 제 2 개수의 처리 스트림 아이디들 사이의 맵핑에 관한 정보를 관리할 수 있다.
본 발명의 일 실시 예에서, 데이터 양에 관한 정보는 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 데이터 크기를 하나 이상의 측정 구간들 동안 누적함으로써 얻어질 수 있다.
본 발명의 일 실시 예에서, 데이터 양은 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각에 대해 측정 구간들에서 데이터 크기들을 합산함으로써 산출될 수 있다.
본 발명의 일 실시 예에서, 데이터 양은 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각에 대해 측정 구간들 중에서 가장 최근의 측정 구간의 데이터 크기에 제 1 가중치를 할당하고 측정 구간들 중에서 가장 최근의 측정 구간을 제외한 나머지 측정 구간들의 데이터 크기들 각각에 제 2 가중치를 할당하여 가중 합산함으로써 산출될 수 있다. 이 실시 예에서, 제 1 가중치는 제 2 가중치보다 클 수 있다.
본 발명의 일 실시 예에서, 쓰기 양 관리기는 갱신 조건이 충족될 경우 데이터 양에 관한 정보를 갱신할 수 있다.
본 발명의 일 실시 예에서, 갱신 조건은 호스트로부터 쓰기 요청이 제공되는 경우, 불휘발성 메모리들에서 새로운 메모리 블록의 할당 또는 무효 메모리 블록의 반환이 발생하는 경우, 호스트로부터 요청 스트림 아이디들을 각각 갖는 데이터 스트림들이 기준 데이터 양만큼 제공된 경우, 및 기준 시간이 경과한 경우 중에서 적어도 하나의 경우에 충족될 수 있다.
본 발명의 일 실시 예에서, 스트림 관리기는 데이터 양에 관한 갱신된 정보를 참조하여 제 1 개수의 요청 스트림 아이디들과 제 2 개수의 처리 스트림 아이디들 사이의 맵핑을 변경할 수 있고, 맵핑 관리기는 변경된 맵핑을 관리할 수 있다.
본 발명의 일 실시 예에서, 불휘발성 메모리들에 포함되는 메모리 블록들 각각은 처리 스트림 아이디들 중 하나에 대응하는 데이터 스트림의 쓰기 데이터를 저장할 수 있다.
본 발명의 다른 실시 예에 따른 스토리지 장치는 하나 이상의 불휘발성 메모리들 및 메모리 컨트롤러를 포함할 수 있다. 메모리 컨트롤러는 호스트로부터 제공된 R개의 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 데이터 양에 기초하여 R개의 요청 스트림 아이디들을 P개의 처리 스트림 아이디들로 맵핑하고, 데이터 스트림들 각각의 쓰기 데이터가 P개의 처리 스트림 아이디들에 따라 불휘발성 메모리들 중 적어도 하나에 저장되도록 불휘발성 메모리들을 제어할 수 있다. R 및 P 각각은 1보다 큰 정수일 수 있다.
본 발명의 다른 실시 예에서, R이 P보다 큰 경우, 메모리 컨트롤러는 요청 스트림 아이디들을 각각 갖는 데이터 스트림들의 일부를 병합할 수 있다.
본 발명의 다른 실시 예에서, R이 P보다 큰 경우, 메모리 컨트롤러의 제어에 따라, 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 중에서 많은 데이터 양을 갖는 순서에 따라 선택된 (P-1)개의 데이터 스트림들은 각각 (P-1)개의 처리 스트림 아이디들을 갖도록 할당되고, 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 중에서 (P-1)개의 데이터 스트림들을 제외한 (R-P+1)개의 데이터 스트림들은 P개의 처리 스트림 아이디들 중에서 (P-1)개의 처리 스트림 아이디들을 제외한 한 개의 스트림 아이디를 갖도록 병합될 수 있다.
본 발명의 다른 실시 예에서, 메모리 컨트롤러는 (P-1)개의 데이터 스트림들을 선택하기 위해 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 데이터 양의 변동을 관리할 수 있다.
본 발명의 다른 실시 예에서, 메모리 컨트롤러는 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 데이터 양의 변동에 기초하여, 한 개의 스트림 아이디를 갖도록 병합되는 (R-P+1)개의 데이터 스트림들을 변경시킬 수 있다.
본 발명의 다른 실시 예에서, 데이터 양의 변동은 호스트로부터 쓰기 요청이 제공되는 경우, 불휘발성 메모리들에서 새로운 메모리 블록의 할당 또는 무효 메모리 블록의 반환이 발생하는 경우, 호스트로부터 요청 스트림 아이디들을 각각 갖는 데이터 스트림들이 기준 데이터 양만큼 제공된 경우, 및 기준 시간이 경과한 경우 중에서 적어도 하나의 경우에 메모리 컨트롤러에 의해 갱신될 수 있다.
본 발명의 다른 실시 예에서, 불휘발성 메모리들에 포함되는 메모리 블록들 각각은 처리 스트림 아이디들 중 하나에 대응하는 데이터 스트림의 쓰기 데이터를 저장할 수 있다.
본 발명의 또 다른 실시 예에 따른 스토리지 장치는 메모리 컨트롤러 및 하나 이상의 불휘발성 메모리들을 포함할 수 있다. 메모리 컨트롤러는 호스트로부터 복수의 데이터 스트림을 제공받을 수 있다. 불휘발성 메모리들은 복수의 데이터 스트림 각각의 쓰기 데이터를 저장할 수 있다. 복수의 데이터 스트림의 개수가 메모리 컨트롤러에 의해 처리되는 스트림들의 개수보다 많은 경우, 메모리 컨트롤러는 복수의 데이터 스트림 각각의 데이터 양에 기초하여 복수의 데이터 스트림의 일부를 하나의 스트림으로 병합할 수 있다.
본 발명의 또 다른 실시 예에서, 하나의 스트림으로 병합되는 데이터 스트림들 각각은 하나의 스트림으로 병합되지 않는 데이터 스트림들 각각보다 적은 데이터 양을 가질 수 있다.
본 발명의 또 다른 실시 예에서, 메모리 컨트롤러는 복수의 데이터 스트림 각각의 데이터 양이 변동하는지 여부를 모니터링할 수 있다.
본 발명의 또 다른 실시 예에서, 메모리 컨트롤러는 복수의 데이터 스트림 중 적어도 하나의 데이터 양의 변동에 응답하여, 하나의 스트림으로 병합되는 데이터 스트림들을 다르게 선택할 수 있다.
본 발명의 실시 예들에서, 불휘발성 메모리들은 낸드 플래시 메모리들을 포함할 수 있다. 나아가, 메모리 컨트롤러 및 불휘발성 메모리들은 SSD 장치 또는 카드 장치에 구현될 수 있다.
본 발명의 실시 예에 따르면, 동일한 스트림 아이디를 갖는 데이터 스트림들의 쓰기 데이터가 동일한 메모리 영역에 함께 저장될 수 있다. 따라서, 쓰기 동작의 성능이 향상되고, 스토리지 장치의 수명의 단축이 느려질 수 있다. 나아가, 스토리지 장치에 의해 처리될 수 있는 데이터 스트림들의 개수보다 많은 데이터 스트림들이 호스트로부터 제공되더라도, 본 발명의 실시 예에 따른 스토리지 장치는 데이터 스트림들을 효율적으로 관리할 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
도 2 내지 도 4는 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림을 보여주는 개념도이다.
도 5는 도 1의 스토리지 장치의 구성 및 동작을 설명하는 개념도이다.
도 6은 본 발명의 실시 예에 따른 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다.
도 7은 본 발명의 실시 예에 따른 복수의 데이터 스트림의 쓰기 데이터의 저장을 보여주는 개념도이다.
도 8은 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림의 데이터 양들이 시간의 흐름에 따라 변동하는(Vary) 경우를 보여주는 개념도이다.
도 9 내지 도 11은 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보 및 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다.
도 12는 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보를 갱신하기 위한 갱신 조건을 설명하기 위한 개념도이다.
도 13은 도 1의 불휘발성 메모리들 중 하나를 보여주는 블록도이다.
도 14는 도 13의 메모리 셀 어레이의 한 메모리 블록을 보여주는 개념도이다.
도 15는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 나타낸 블록도이다.
도 2 내지 도 4는 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림을 보여주는 개념도이다.
도 5는 도 1의 스토리지 장치의 구성 및 동작을 설명하는 개념도이다.
도 6은 본 발명의 실시 예에 따른 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다.
도 7은 본 발명의 실시 예에 따른 복수의 데이터 스트림의 쓰기 데이터의 저장을 보여주는 개념도이다.
도 8은 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림의 데이터 양들이 시간의 흐름에 따라 변동하는(Vary) 경우를 보여주는 개념도이다.
도 9 내지 도 11은 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보 및 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다.
도 12는 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보를 갱신하기 위한 갱신 조건을 설명하기 위한 개념도이다.
도 13은 도 1의 불휘발성 메모리들 중 하나를 보여주는 블록도이다.
도 14는 도 13의 메모리 셀 어레이의 한 메모리 블록을 보여주는 개념도이다.
도 15는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 나타낸 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다.
호스트(1100)는 스토리지 장치(1200)로 커맨드(CMD)를 제공할 수 있다. 호스트(1100)는 스토리지 장치(1200)와 데이터(DAT)를 교환할 수 있다.
예로서, 데이터(DAT)가 쓰기 데이터를 포함하는 경우, 호스트(1100)는 쓰기 커맨드를 포함하는 커맨드(CMD) 및 쓰기 데이터를 포함하는 데이터(DAT)를 스토리지 장치(1200)로 제공할 수 있다. 예로서, 데이터(DAT)가 읽기 데이터를 포함하는 경우, 호스트(1100)는 읽기 커맨드를 포함하는 커맨드(CMD)를 스토리지 장치(1200)로 제공할 수 있고, 읽기 데이터를 포함하는 데이터(DATA)를 스토리지 장치(1200)로부터 제공받을 수 있다. 이에 따라, 스토리지 시스템(1000)은 사용자에게 스토리지 서비스를 제공할 수 있다.
예로서, 호스트(1100)는 하나 이상의 프로세서 코어들을 포함하도록 구현될 수 있다. 예로서, 호스트(1100)는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
스토리지 장치(1200)는 하나 이상의 불휘발성 메모리들(1210) 및 메모리 컨트롤러(1220)를 포함할 수 있다. 불휘발성 메모리들(1210) 각각은 호스트(1100)로부터 제공된 데이터(DAT)를 저장하기 위한 메모리 영역을 포함할 수 있다. 예로서, 불휘발성 메모리들(1210) 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 불휘발성 메모리들(1210) 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있다. 이러한 구성은 도 13 및 도 14를 참조하여 설명될 것이다.
그러나, 위 예는 본 발명을 한정하기 위한 것은 아니다. 불휘발성 메모리들(1210) 각각은 PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리들 중 하나 이상을 포함할 수 있다. 이해를 돕기 위해, 이하의 설명에서 불휘발성 메모리들(1210) 각각이 낸드 플래시 메모리를 포함하는 것으로 가정될 것이나, 불휘발성 메모리들(1210) 각각의 구성은 다양하게 변경 또는 수정될 수 있다.
메모리 컨트롤러(1220)는 스토리지 장치(1200)의 전반적인 동작들을 제어할 수 있다. 메모리 컨트롤러(1220)는 불휘발성 메모리들(1210)을 제어할 수 있다. 메모리 컨트롤러(1220)의 제어에 따라, 불휘발성 메모리들(1210)에 저장된 데이터가 호스트(1100)로 제공되거나, 호스트(1100)로부터 제공된 데이터가 불휘발성 메모리들(1210)에 저장될 수 있다.
일 실시 예에서, 호스트(1100)는 SAS(Serial Attached Small Computer System Interface) 스펙(Specification)에서 정의되는 규약(Protocol)에 따라 메모리 컨트롤러(1220)와 통신할 수 있다. SAS 스펙에 기초한 통신은 복수의 데이터 스트림(Data Stream)을 이용하여 수행될 수 있다. 호스트(1100)는 쓰기 데이터를 포함하는 데이터(DAT)를 복수의 데이터 스트림의 형태로 스토리지 장치(1200)로 제공할 수 있다.
위 실시 예에서, 호스트(1100)는 하나의 데이터 스트림을 통해 동일하거나 유사한 특성을 갖는 데이터를 스토리지 장치(1200)로 제공할 수 있다. 반면, 호스트(1100)는 서로 다른 데이터 스트림들을 통해 서로 다른 특성들을 갖는 여러 데이터를 스토리지 장치(1200)로 제공할 수 있다. 예로서, 시스템 데이터는 사용자 데이터와 별개로 하나의 데이터 스트림을 통해 스토리지 장치(1200)로 전송될 수 있다. 예로서, 동일한 시점에 생성된 여러 데이터는 하나의 데이터 스트림을 통해 스토리지 장치(1200)로 전송될 수 있다. 데이터의 특성은 호스트(1100)의 정책에 따라 다양하게 관리될 수 있다.
스토리지 장치(1200)는 서로 다른 데이터 스트림들을 통해 제공된 여러 데이터를 서로 다른 메모리 영역들(예컨대, 서로 다른 메모리 블록들)에 별개로 저장할 수 있다. 반면, 스토리지 장치(1200)는 하나의 데이터 스트림을 통해 제공된 데이터를 동일한 메모리 영역에 함께 저장할 수 있다.
위 실시 예에 따르면, 동일하거나 유사한 특성을 갖는 데이터가 함께 관리될 수 있다. 따라서, 새로운 메모리 블록의 할당의 효율성이 향상될 수 있고, 결과적으로 쓰기 동작의 성능이 향상될 수 있다. 뿐만 아니라, 무효(Invalid) 데이터의 페이지를 반환(Restore)하고 프리 페이지(Free Page)를 확보하기 위한 가비지 콜렉션(Garbage Collection) 동작의 횟수가 감소할 수 있고, 결과적으로 스토리지 장치(1200)의 수명의 단축이 느려질 수 있다.
위 실시 예에서, 호스트(1100)가 SAS 스펙에서 정의되는 규약에 따라 메모리 컨트롤러(1220)와 통신하는 것으로 설명되었다. 그러나, 본 발명은 위 실시 예에 의해 한정되지 않는다. 호스트(1100)는 복수의 데이터 스트림을 이용하여 쓰기 데이터를 전송하도록 설계된 다른 규약에 기초하여 메모리 컨트롤러(1220)와 통신할 수 있다. 호스트(1100) 및 메모리 컨트롤러(1220)는 서로 통신하기 위해, 복수의 데이터 스트림을 이용하여 쓰기 데이터를 전송하도록 설계된 다양한 규약들 중 하나 이상을 채용할 수 있다.
본 발명의 실시 예에서, 호스트(1100)는 데이터 스트림들 각각에 "요청 스트림 아이디(Requested Stream Identifier; RSID)"를 할당할 수 있다. 요청 스트림 아이디(RSID)는 데이터 스트림들 각각을 식별하기 위해 호스트(1100)에 의해 데이터 스트림들 각각에 할당된 아이디일 수 있다. 예로서, 호스트(1100)는 제 1 요청 스트림 아이디를 갖는 데이터 스트림을 통해 제 1 특성을 갖는 쓰기 데이터를 스토리지 장치(1200)로 전송할 수 있고, 제 2 요청 스트림 아이디를 갖는 데이터 스트림을 통해 제 2 특성을 갖는 쓰기 데이터를 스토리지 장치(1200)로 전송할 수 있다.
메모리 컨트롤러(1220)는 호스트(1100)로부터 요청 스트림 아이디(RSID)를 갖는 데이터 스트림을 제공받을 수 있다. 메모리 컨트롤러(1220)는 데이터 스트림의 요청 스트림 아이디(RSID)를 "처리 스트림 아이디(Processing Stream Identifier; PSID)"로 맵핑(Mapping)할 수 있다. 처리 스트림 아이디(PSID)는 데이터 스트림들 각각의 쓰기 데이터를 서로 다른 메모리 영역에 저장하기 위해 메모리 컨트롤러(1220)에 의해 참조되는 아이디일 수 있다. 예로서, 메모리 컨트롤러(1220)의 제어에 따라, 제 1 처리 스트림 아이디를 갖는 데이터 스트림의 쓰기 데이터는 제 1 메모리 영역들에 저장될 수 있고, 제 2 처리 스트림 아이디를 갖는 데이터 스트림의 쓰기 데이터는 제 2 메모리 영역들에 저장될 수 있다.
본 발명의 실시 예에서, 요청 스트림 아이디(RSID)는 데이터 스트림들 각각의 데이터 양(Data Amount)에 기초하여 처리 스트림 아이디(PSID)로 맵핑될 수 있다. 나아가, 데이터 스트림들 각각의 쓰기 데이터는 요청 스트림 아이디(RSID)가 아닌 처리 스트림 아이디(PSID)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 본 발명의 실시 예에 따른 스트림 아이디들(RSID, PSID) 사이의 맵핑 및 데이터 스트림의 관리가 도 2 내지 도 12를 참조하여 설명될 것이다.
도 2는 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림을 보여주는 개념도이다. 이해를 돕기 위해, 도 1이 도 2와 함께 참조될 것이다.
도 2에서, 하나의 데이터 스트림이 하나의 화살표로서 표현된다. 화살표의 방향은 요청 스트림 아이디(RSID)와 처리 스트림 아이디(PSID) 사이의 맵핑 관계를 나타낸다. 화살표의 두께는 데이터 스트림의 데이터 양을 나타낸다. 화살표의 두께가 두꺼울수록 그 화살표에 대응하는 데이터 스트림의 데이터 양이 더 많음을 의미한다.
여기서, "데이터 양"은 특정 요청 스트림 아이디(RSID)를 갖는 데이터 스트림의 데이터 크기를 하나 이상의 측정 구간들 동안 누적함으로써 얻어지는 값일 수 있다. 예로서, 초당 100메가바이트(MB)의 데이터 크기를 갖는 데이터 스트림이 5초의 측정 구간 동안 전송된 경우, 그 데이터 스트림의 데이터 양은 500MB(=100MB/초×5초)의 값을 가질 수 있다. 측정 구간에 관한 실시 예들 및 누적에 관한 실시 예들은 도 8 내지 도 12를 참조하여 설명될 것이다.
호스트(1100)는 제 1 개수(이하, "R개"로 표현)의 요청 스트림 아이디(RSID)들을 각각 갖는 데이터 스트림들을 스토리지 장치(1200)로 제공할 수 있다. 메모리 컨트롤러(1220)는 최대 제 2 개수(이하, "P개"로 표현)의 데이터 스트림들을 처리할 수 있다. 여기서, R 및 P 각각은 1보다 큰 정수일 수 있다.
메모리 컨트롤러(1220)는 P개를 초과하는 데이터 스트림을 처리하지 못할 수 있다. 스토리지 장치(1200)의 자원은 한정적일 수 있다. 예로서, 버퍼의 용량, 전원 중단(Power Loss)을 안전하게 처리하기 위해 이용되는 보조 전원(예컨대, 커패시터)의 용량, 회로의 면적 등과 같은 자원의 규모는 무한히 증가할 수 없고 한정될 수 있다. 따라서, 메모리 컨트롤러(1220)는 한정된 개수의 데이터 스트림들만을 처리할 수 있다.
이해를 돕기 위한 예로서, 4개의 요청 스트림 아이디들(RSID #1 내지 RSID #4)을 각각 갖는 4개의 데이터 스트림들이 호스트(1100)로부터 스토리지 장치(1200)로 제공되는 것으로 가정된다. 나아가, 메모리 컨트롤러(1220)가 최대 4개의 데이터 스트림들을 처리할 수 있고 이 4개의 데이터 스트림들은 각각 4개의 처리 스트림 아이디들(PSID #1 내지 PSID #4)을 갖는 것으로 가정된다. 그러나, 이 가정들은 본 발명을 한정하기 위한 것이 아니고, 데이터 스트림들의 개수 및 스트림 아이디들(RSID, PSID)의 할당은 다양하게 변경 또는 수정될 수 있다.
도 2에 나타낸 것과 같이, 몇몇 경우, 호스트(1100)는 메모리 컨트롤러(1220)에 의해 처리될 수 있는 개수만큼의 데이터 스트림들을 스토리지 장치(1200)로 제공할 수 있다. 이 경우, 메모리 컨트롤러(1220)에 의해, 4개의 요청 스트림 아이디들(RSID #1 내지 RSID #4)은 각각 4개의 처리 스트림 아이디들(PSID #1 내지 PSID #4)로 맵핑될 수 있다. 메모리 컨트롤러(1220)는 4개의 처리 스트림 아이디들(PSID #1 내지 PSID #4)에 따라 4개의 데이터 스트림들 각각의 쓰기 데이터의 저장을 제어할 수 있다.
호스트(1100)로부터 제공되는 데이터 스트림들의 개수가 메모리 컨트롤러(1220)에 의해 최대로 처리될 수 있는 데이터 스트림들의 개수와 동일한 경우(즉, R=P), 스트림 아이디들(RSID, PSID) 사이의 맵핑 및 쓰기 데이터의 저장은 주목할 만한 이슈를 일으키지 않을 수 있다. 호스트(1100)로부터 제공되는 데이터 스트림들의 개수가 메모리 컨트롤러(1220)에 의해 최대로 처리될 수 있는 데이터 스트림들의 개수보다 적은 경우(즉, R<P)에도, 데이터 스트림들 각각의 쓰기 데이터가 처리 스트림 아이디에 따라 잘 저장될 수 있다. 위 경우들에서, 스토리지 장치(1200)의 한정된 자원이 적절하게 이용될 수 있다.
도 3 및 도 4는 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림을 보여주는 개념도이다. 이해를 돕기 위해, 도 1이 도 3 및 도 4와 함께 참조될 것이다.
도 2에서와 같이, 도 3 및 도 4에서, 하나의 데이터 스트림이 하나의 화살표로서 표현된다. 화살표의 방향은 요청 스트림 아이디(RSID)와 처리 스트림 아이디(PSID) 사이의 맵핑 관계를 나타내고, 화살표의 두께는 데이터 스트림의 데이터 양을 나타낸다.
몇몇 경우, 호스트(1100)는 메모리 컨트롤러(1220)에 의해 처리될 수 있는 개수보다 많은 데이터 스트림들을 스토리지 장치(1200)로 제공할 수 있다(즉, R>P). 예로서, 도 3 및 도 4에 나타낸 것과 같이, 메모리 컨트롤러(1220)는 최대 4개의 데이터 스트림들을 처리할 수 있는 반면, 호스트(1100)는 6개의 요청 스트림 아이디들(RSID #1 내지 RSID #6)을 각각 갖는 6개의 데이터 스트림들을 스토리지 장치(1200)로 제공할 수 있다.
위 경우, 메모리 컨트롤러(1220)는 6개의 요청 스트림 아이디들(RSID #1 내지 RSID #6)을 각각 갖는 6개의 데이터 스트림들의 일부를 병합할 수 있다. 이는 메모리 컨트롤러(1220)가 4개를 초과하는 데이터 스트림을 처리할 수 없기 때문이다. 병합되도록 선택된 데이터 스트림들은 하나의 처리 스트림 아이디(PSID)를 갖는 하나의 데이터 스트림으로 병합될 수 있다.
예로서, 도 3을 참조하면, 제 1 요청 스트림 아이디(RSID #1) 내지 제 3 요청 스트림 아이디(RSID #3)는 각각 제 1 처리 스트림 아이디(PSID #1) 내지 제 3 처리 스트림 아이디(PSID #3)로 맵핑될 수 있다. 제 1 요청 스트림 아이디(RSID #1)를 갖는 데이터 스트림의 쓰기 데이터는 제 1 처리 스트림 아이디(PSID #1)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 제 2 요청 스트림 아이디(RSID #2)를 갖는 데이터 스트림의 쓰기 데이터는 제 2 처리 스트림 아이디(PSID #2)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 제 3 요청 스트림 아이디(RSID #3)를 갖는 데이터 스트림의 쓰기 데이터는 제 3 처리 스트림 아이디(PSID #3)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다.
3개의 처리 스트림 아이디들(PSID #1 내지 PSID #3)이 할당되었기 때문에, 제 4 요청 스트림 아이디(RSID #4) 내지 제 6 요청 스트림 아이디(RSID #6)를 각각 갖는 데이터 스트림들은 하나의 데이터 스트림으로 병합될 수 있다. 병합된 데이터 스트림의 쓰기 데이터는 제 4 처리 스트림 아이디(PSID #4)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다.
그런데, 도 3을 참조하면, 적은 데이터 양을 갖는 데이터 스트림(예컨대, 제 1 요청 스트림 아이디(RSID #1) 또는 제 3 요청 스트림 아이디(RSID #3)를 갖는 데이터 스트림)은 하나의 처리 스트림 아이디(PSID)에 따라 저장될 수 있다. 게다가, 많은 데이터 양을 갖는 데이터 스트림(예컨대, 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림)이 다른 데이터 스트림들과 함께 병합될 수 있다.
도 3의 예와 같은 경우에서, 데이터 스트림들 사이에 로드(Load)가 불균형하게 되고(Unbalanced), 쓰기 동작의 효율성이 떨어질 수 있다. 그리고, 제 4 처리 스트림 아이디(PSID #4)를 갖도록 병합된 데이터 스트림들의 쓰기 데이터에 관하여 가비지 콜렉션 동작이 상대적으로 빈번하게 수행될 수 있는데, 병합된 데이터 스트림이 많은 데이터 양을 갖기 때문에 가비지 콜렉션 동작의 횟수가 증가할 수 있다. 따라서, 스토리지 장치(1200)의 수명의 단축이 빨라질 수 있다.
위 문제들을 해결하기 위해, 본 발명의 실시 예에서, 데이터 스트림들은 데이터 양에 기초하여 관리될 수 있다. 메모리 컨트롤러(1220)는 데이터 스트림들 각각의 데이터 양에 기초하여 스트림 아이디들(RSID, PSID) 사이의 맵핑 및 데이터 스트림들의 병합을 관리할 수 있다.
예로서, 도 4를 참조하면, 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림의 쓰기 데이터는 제 1 처리 스트림 아이디(PSID #1)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 제 2 요청 스트림 아이디(RSID #2)를 갖는 데이터 스트림의 쓰기 데이터는 제 2 처리 스트림 아이디(PSID #2)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 제 4 요청 스트림 아이디(RSID #4)를 갖는 데이터 스트림의 쓰기 데이터는 제 3 처리 스트림 아이디(PSID #3)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 이에 따라, 많은 데이터 양을 갖는 데이터 스트림이 하나의 처리 스트림 아이디(PSID)에 따라 저장될 수 있다.
나아가, 제 1 요청 스트림 아이디(RSID #1), 제 3 요청 스트림 아이디(RSID #3), 및 제 5 요청 스트림 아이디(RSID #5)를 각각 갖는 데이터 스트림들은 하나의 데이터 스트림으로 병합될 수 있다. 병합된 데이터 스트림의 쓰기 데이터는 제 4 처리 스트림 아이디(PSID #4)에 따라 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 이에 따라, 적은 데이터 양을 갖는 데이터 스트림들이 함께 병합될 수 있다.
도 4의 예와 같은 경우, 데이터 스트림들 사이에 로드가 상대적으로 균형있게 되고(Balanced), 쓰기 동작의 효율성이 향상될 수 있다. 나아가, 병합된 데이터 스트림이 적은 데이터 양을 갖기 때문에 가비지 콜렉션 동작의 횟수가 상대적으로 감소할 수 있다. 따라서, 스토리지 장치(1200)의 수명의 단축이 느려질 수 있다.
도 5는 도 1의 스토리지 장치의 구성 및 동작을 설명하는 개념도이다. 도 1의 스토리지 장치(1200)는 하나 이상의 불휘발성 메모리들(1210) 및 메모리 컨트롤러(1220)를 포함할 수 있다. 일 실시 예에서, 메모리 컨트롤러(1220)는 쓰기 양 관리기(1221), 스트림 관리기(1223), 및 맵핑 관리기(1225)를 포함할 수 있다.
쓰기 양 관리기(1221)는 데이터 양 정보(DA)를 관리할 수 있다. 데이터 양 정보(DA)는 요청 스트림 아이디(RSID)들을 각각 갖는 데이터 스트림들 각각의 데이터 양에 관한 정보를 포함할 수 있다. 예로서, 데이터 양 정보(DA)는 요청 스트림 아이디(RSID)와 그 요청 스트림 아이디(RSID)를 갖는 데이터 스트림의 데이터 양 사이의 관계에 관한 정보를 포함할 수 있다.
스트림 관리기(1223)는 R개의 요청 스트림 아이디(RSID)들을 P개의 처리 스트림 아이디(PSID)들로 맵핑할 수 있다. 본 발명의 실시 예에서, 스트림 관리기(1223)는 데이터 양 정보(DA)를 참조하여 스트림 아이디들(RSID, PSID)을 맵핑할 수 있다. 스트림 관리기(1223)는 도 1의 호스트(1100)로부터 제공된 데이터 스트림들을 처리 스트림 아이디(PSID)들에 따라 불휘발성 메모리들(1210)로 제공할 수 있다.
맵핑 관리기(1225)는 스트림 맵핑 정보(SM)를 관리할 수 있다. 스트림 맵핑 정보(SM)는 요청 스트림 아이디(RSID)들과 처리 스트림 아이디(PSID)들 사이의 맵핑에 관한 정보를 포함할 수 있다. 스트림 관리기(1223)는 스트림 맵핑 정보(SM)를 참조하여 요청 스트림 아이디(RSID)들을 처리 스트림 아이디(PSID)들로 맵핑할 수 있다.
데이터 양 정보(DA) 및 스트림 맵핑 정보(SM)는 스토리지 장치(1200)에 포함되는 버퍼 메모리, 메모리 컨트롤러(1220)에 포함되는 캐시 메모리, 및 불휘발성 메모리들(1210) 중 적어도 하나에 저장될 수 있다. 메모리 컨트롤러(1220)는 데이터 스트림들 각각의 데이터 양에 기초하여 데이터 양 정보(DA) 및/또는 스트림 맵핑 정보(SM)를 관리할 수 있다. 나아가, 메모리 컨트롤러(1220)는 데이터 양 정보(DA) 및 스트림 맵핑 정보(SM)를 참조하여 데이터 스트림들을 관리할 수 있다.
예로서, 메모리 컨트롤러(1220)는 호스트(1100)로부터 쓰기 데이터(DAT_W)를 제공받을 수 있다(동작 ① 참조). 쓰기 데이터(DAT_W)는 R개(예컨대, 6개)의 요청 스트림 아이디(RSID)들을 각각 갖는 복수의 데이터 스트림의 형태로 제공될 수 있다.
쓰기 양 관리기(1221)는 데이터 스트림들 각각의 데이터 양에 관한 데이터 양 정보(DA)를 획득할 수 있다(동작 ② 참조). 스트림 관리기(1223)는 데이터 양 정보(DA)를 참조하여 요청 스트림 아이디(RSID)들을 처리 스트림 아이디(PSID)들로 맵핑할 수 있다(동작 ③ 참조). 일단 맵핑 관계가 생성되면, 맵핑 관리기(1225)는 요청 스트림 아이디(RSID)들과 처리 스트림 아이디(PSID)들 사이의 맵핑에 관한 스트림 맵핑 정보(SM)를 획득할 수 있다(동작 ④ 참조).
스트림 관리기(1223)는 스트림 맵핑 정보(SM)를 참조하여 데이터 스트림들을 불휘발성 메모리들(1210)로 제공할 수 있다(동작 ⑤ 참조). 불휘발성 메모리들(1210)은 복수의 메모리 블록(BLK1 내지 BLKz)을 포함할 수 있다. 예로서, 제 1 처리 스트림 아이디(PSID #1)를 갖는 데이터 스트림의 쓰기 데이터(DAT_W)는 제 1 메모리 블록(BLK1) 및 제 2 메모리 블록(BLK2)에 저장될 수 있다. 제 2 처리 스트림 아이디(PSID #2)를 갖는 데이터 스트림의 쓰기 데이터(DAT_W)는 제 3 메모리 블록(BLK3)에 저장될 수 있다. 제 4 처리 스트림 아이디(PSID #4)를 갖는 데이터 스트림의 쓰기 데이터(DAT_W)는 제 z 메모리 블록(BLKz)에 저장될 수 있다. 이를 위해, 예로서, 메모리 컨트롤러(1220)는 처리 스트림 아이디(PSID)와 메모리 블록 사이의 대응에 관한 정보를 관리할 수 있다.
다만, 도 5에 나타낸 데이터 스트림들의 흐름은 본 발명의 이해를 돕기 위한 예로서 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 데이터 스트림들의 전송, 스트림 아이디들(RSID, PSID) 사이의 맵핑, 메모리 블록들의 할당, 및 쓰기 데이터의 저장은 다양하게 변경 또는 수정될 수 있다.
도 6은 본 발명의 실시 예에 따른 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다. 이해를 돕기 위해, 도 1이 도 6과 함께 참조될 것이다.
위에서 설명된 것과 같이, 몇몇 경우, 호스트(1100)는 메모리 컨트롤러(1220)에 의해 처리될 수 있는 P개(예컨대, 4개)보다 많은 R개(예컨대, 6개)의 데이터 스트림들을 스토리지 장치(1200)로 제공할 수 있다. 이 경우, 메모리 컨트롤러(1220)는 6개의 처리 스트림 아이디들(RSID #1 내지 RSID #6)을 각각 갖는 데이터 스트림들 각각의 데이터 양에 기초하여, 데이터 스트림들의 일부를 병합할 수 있다.
일 실시 예에서, 메모리 컨트롤러(1220)는 가장 많은 데이터 양을 갖는 데이터 스트림의 요청 스트림 아이디(즉, 제 6 요청 스트림 아이디(RSID #6))를 제 1 처리 스트림 아이디(PSID #1)로 맵핑할 수 있다(동작 ① 참조). 이에 따라, 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림은 제 1 처리 스트림 아이디(PSID #1)에 따라 불휘발성 메모리들(1210)로 제공될 수 있다.
나아가, 메모리 컨트롤러(1220)는 두 번째로 많은 데이터 양을 갖는 데이터 스트림의 요청 스트림 아이디(즉, 제 2 요청 스트림 아이디(RSID #2)) 및 세 번째로 많은 데이터 양을 갖는 데이터 스트림의 요청 스트림 아이디(즉, 제 4 요청 스트림 아이디(RSID #4))를 각각 제 2 처리 스트림 아이디(PSID #2) 및 제 3 처리 스트림 아이디(PSID #3)로 맵핑할 수 있다(동작들 ② 및 ③ 참조). 이에 따라, 제 2 요청 스트림 아이디(RSID #2)를 갖는 데이터 스트림은 제 2 처리 스트림 아이디(PSID #2)에 따라 불휘발성 메모리들(1210)로 제공될 수 있다. 나아가, 제 4 요청 스트림 아이디(RSID #4)를 갖는 데이터 스트림은 제 3 처리 스트림 아이디(PSID #3)에 따라 불휘발성 메모리들(1210)로 제공될 수 있다.
메모리 컨트롤러(1220)는 제 1 요청 스트림 아이디(RSID #1), 제 3 요청 스트림 아이디(RSID #3), 및 제 5 요청 스트림 아이디(RSID #5)를 제 4 처리 스트림 아이디(PSID #4)로 맵핑할 수 있다. 제 1 요청 스트림 아이디(RSID #1), 제 3 요청 스트림 아이디(RSID #3), 및 제 5 요청 스트림 아이디(RSID #5)를 갖는 나머지 데이터 스트림들이 제 4 처리 스트림 아이디(PSID #4)를 갖는 하나의 데이터 스트림으로 병합될 수 있다. 이에 따라, 제 1 요청 스트림 아이디(RSID #1), 제 3 요청 스트림 아이디(RSID #3), 및 제 5 요청 스트림 아이디(RSID #5)를 갖는 나머지 데이터 스트림들은 제 4 처리 스트림 아이디(PSID #4)에 따라 불휘발성 메모리들(1210)로 제공될 수 있다.
즉, 위 실시 예에서, 요청 스트림 아이디(RSID)들을 각각 갖는 데이터 스트림들 중에서 많은 데이터 양을 갖는 순서에 따라 선택된 (P-1)개의 데이터 스트림들은 각각 (P-1)개의 처리 스트림 아이디(PSID)들을 갖도록 할당될 수 있다. 나아가, (P-1)개의 선택된 데이터 스트림들을 제외한 (R-P+1)개의 데이터 스트림들은 나머지 한 개의 처리 스트림 아이디(PSID)를 갖도록 병합될 수 있다. 하나의 데이터 스트림으로 병합되는 데이터 스트림들 각각은 하나의 데이터 스트림으로 병합되지 않는 데이터 스트림들 각각보다 적은 데이터 양을 가질 수 있다. 본 발명의 실시 예에 따르면, 스트림 아이디들(RSID, PSID) 사이의 맵핑 및 데이터 스트림들의 병합이 데이터 스트림들 각각의 데이터 양에 기초하여 관리될 수 있다.
다만, 도 6을 참조하여 설명된 스트림 아이디들(RSID, PSID) 사이의 맵핑은 본 발명의 이해를 돕기 위해 제공된 예시일 뿐이다. 스트림 아이디들(RSID, PSID) 사이의 맵핑은 데이터 스트림들 사이의 로드를 균형있게 하고 가비지 콜렉션 동작의 횟수를 줄이기 위해 다양하게 변경 또는 수정될 수 있다. 예로서, 제 1 처리 스트림 아이디(PSID #1) 및 제 2 처리 스트림 아이디(PSID #2) 각각은 많은 데이터 양을 갖는 하나의 데이터 스트림의 요청 스트림 아이디(RSID)와 맵핑되고, 제 3 처리 스트림 아이디(PSID #3) 및 제 4 처리 스트림 아이디(PSID #4) 각각에 할당된 데이터 스트림은 적은 데이터 양을 갖는 여러 데이터 스트림을 병합함으로써 얻어질 수 있다. 도 6은 본 발명을 한정하기 위한 것은 아니다.
도 7은 본 발명의 실시 예에 따른 복수의 데이터 스트림의 쓰기 데이터의 저장을 보여주는 개념도이다. 이해를 돕기 위해, 도 1이 도 7과 함께 참조될 것이다.
하나 이상의 불휘발성 메모리들(1210)은 복수의 메모리 블록을 포함할 수 있다. 예로서, 불휘발성 메모리들(1210)은 제 1 메모리 블록들(BLKs1) 내지 제 4 메모리 블록들(BLKs4)을 포함할 수 있다.
본 발명의 실시 예에서, 하나의 처리 스트림 아이디(PSID)를 갖는 데이터 스트림의 쓰기 데이터는 동일한 메모리 영역(예컨대, 동일한 메모리 블록들)에 함께 저장될 수 있다. 반면, 서로 다른 처리 스트림 아이디(PSID)들을 각각 갖는 여러 데이터 스트림의 쓰기 데이터는 서로 다른 메모리 영역들에 별개로 저장될 수 있다. 불휘발성 메모리들(1210)에 포함되는 메모리 블록들 각각은 처리 스트림 아이디(PSID)들 중 하나에 대응하는 데이터 스트림의 쓰기 데이터를 저장할 수 있다.
예로서, 제 1 처리 스트림 아이디(PSID #1)를 갖는 데이터 스트림의 쓰기 데이터는 다른 데이터 스트림들의 쓰기 데이터와 별개로 제 1 메모리 블록들(BLKs1)에 저장될 수 있다. 제 2 처리 스트림 아이디(PSID #2)를 갖는 데이터 스트림의 쓰기 데이터가 제 2 메모리 블록들(BLKs2)에 저장되는 동안, 제 3 처리 스트림 아이디(PSID #3)를 갖는 데이터 스트림의 쓰기 데이터는 제 3 메모리 블록들(BLKs3)에 저장될 수 있다. 제 4 처리 스트림 아이디(PSID #4)를 갖는 데이터 스트림의 쓰기 데이터는 제 4 메모리 블록들(BLKs4)에 함께 저장될 수 있다.
본 발명의 실시 예에 따르면, 동일하거나 유사한 특성을 갖는 데이터가 함께 관리될 수 있다. 따라서, 새로운 메모리 블록의 할당의 효율성이 향상될 수 있고, 쓰기 동작의 성능이 향상될 수 있다. 나아가, 데이터 스트림들 각각의 데이터 양에 기초하여 처리 스트림 아이디(PSID)를 관리함으로써, 데이터 스트림들 사이의 로드가 균형있게 되고 가비지 콜렉션 동작의 횟수가 감소할 수 있다. 결과적으로, 스토리지 장치(1200)의 수명의 단축이 느려질 수 있다.
도 8은 도 1의 스토리지 시스템에서 전송되는 복수의 데이터 스트림의 데이터 양들이 시간의 흐름에 따라 변동하는(Vary) 경우를 보여주는 개념도이다. 도 9는 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보 및 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다. 이해를 돕기 위해, 도 1 및 도 5가 도 8 및 도 9와 함께 참조될 것이다.
도 8에서, 하나의 데이터 스트림이 하나의 화살표로서 표현된다. 다만, 도 8을 참조하면, 화살표의 두께가 균일하지 않다. 이것은 데이터 스트림의 데이터 양이 시간의 흐름에 따라 변동함을 나타낸다.
몇몇 경우, 특정 데이터 스트림의 데이터 양은 일정하지 않고 변동할 수 있다. 예로서, 도 8을 참조하면, 제 1 요청 스트림 아이디(RSID #1)를 갖는 데이터 스트림의 데이터 양은 증가하였고, 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림의 데이터 양은 감소한 것으로 이해될 수 있다.
메모리 컨트롤러(1220)는 데이터 스트림들 각각의 데이터 양의 변동을 관리할 수 있다. 메모리 컨트롤러(1220)는 데이터 스트림들 각각의 데이터 양의 변동에 기초하여, 하나의 데이터 스트림으로 병합되는 데이터 스트림들 및 병합 없이 전송될 데이터 스트림들을 선택할 수 있다. 몇몇 실시 예에서, 데이터 스트림들 각각의 데이터 양이 변동하는 경우, 하나의 데이터 스트림으로 병합되는 데이터 스트림들 및/또는 병합 없이 전송될 데이터 스트림들이 변경될 수 있다.
이를 위해, 메모리 컨트롤러(1220)는 요청 스트림 아이디(RSID)들을 각각 갖는 데이터 스트림들 각각의 데이터 양이 변동하는지 여부를 모니터링할 수 있다. 예로서, 메모리 컨트롤러(1220)의 쓰기 양 관리기(1221)는, 도 9에 나타낸 것과 같이, 하나 이상의 측정 구간들에서 데이터 양 정보(DA)를 관리할 수 있다. 쓰기 양 관리기(1221)는 측정 구간들 각각에 관한 데이터 양을 관리하기 위해, 갱신 조건이 충족될 경우에 데이터 양 정보(DA)를 갱신할 수 있다.
일 실시 예에서, 갱신 조건은 기준 시간이 경과한 경우에 충족될 수 있다. 즉, 쓰기 양 관리기(1221)는 기준 시간의 경과에 응답하여 데이터 양 정보(DA)를 갱신할 수 있다. 갱신된 데이터 양 정보(DA)에 기초하여, 데이터 양의 변동이 파악될 수 있다.
예로서, 도 8 및 도 9를 함께 참조하면, 시각 "t0"로부터 기준 시간이 경과한 후의 시각 "t1"에서, 쓰기 양 관리기(1221)는 시각 "t0"와 시각 "t1" 사이의 측정 구간에서의 데이터 스트림들 각각의 데이터 양에 관한 정보를 획득할 수 있다. 스트림 관리기(1223)는 쓰기 양 관리기(1221)에 의해 획득된 정보를 참조하여 스트림 아이디들(RSID, PSID)을 서로 맵핑할 수 있다. 맵핑 관리기(1225)는 스트림 아이디들(RSID, PSID) 사이의 맵핑에 관한 스트림 맵핑 정보(SM)를 관리할 수 있다. 이에 따라, 시각 "t1" 이후, 데이터 스트림들은 맵핑된 처리 스트림 아이디(PSID)들에 따라 전송 및 저장될 수 있다.
그런데, 시각 "t1" 이후, 데이터 스트림들 각각의 데이터 양이 변동할 수 있다. 데이터 스트림들 각각의 데이터 양이 변동하는 경우, 변동된 데이터 양에 기초하여 스트림 아이디들(RSID, PSID) 사이의 맵핑을 변경하는 것이 효율적일 수 있다.
따라서, 시각 "t1"로부터 기준 시간이 경과한 후의 시각 "t2"에서, 쓰기 양 관리기(1221)는 시각 "t1"와 시각 "t2" 사이의 측정 구간에서의 데이터 스트림들 각각의 데이터 양에 관한 정보를 획득할 수 있다. 스트림 관리기(1223)는 쓰기 양 관리기(1221)에 의해 획득된 정보를 참조하여 스트림 아이디들(RSID, PSID) 사이의 맵핑을 변경할 수 있다. 예로서, 스트림 관리기(1223)는 도 6을 참조하여 설명된 방법을 이용하여 스트림 아이디들(RSID, PSID)을 새로 맵핑할 수 있다. 맵핑 관리기(1225)는 변경된 맵핑을 관리하기 위해 스트림 맵핑 정보(SM)를 갱신할 수 있다. 이에 따라, 시각 "t2" 이후, 데이터 스트림들은 새로 맵핑된 처리 스트림 아이디(PSID)들에 따라 전송 및 저장될 수 있다.
이러한 방식으로, 시각 "t2"로부터 기준 시간이 경과한 후의 시각 "t3"에서, 시각 "t2"와 시각 "t3" 사이의 측정 구간에서의 데이터 스트림들 각각의 데이터 양에 관한 정보가 획득될 수 있다. 나아가, 시각 "t3"로부터 기준 시간이 경과한 후의 시각 "t4"에서, 시각 "t3"와 시각 "t4" 사이의 측정 구간에서의 데이터 스트림들 각각의 데이터 양에 관한 정보가 획득될 수 있다.
예로서, 도 6을 참조하여 설명된 맵핑 방법에 따르면, 시각 "t4" 이후, 제 1 요청 스트림 아이디(RSID #1), 제 3 요청 스트림 아이디(RSID #3), 및 제 5 요청 스트림 아이디(RSID #5)를 갖는 데이터 스트림들 각각은 하나의 처리 스트림 아이디(PSID)에 따라 관리될 수 있다. 한편, 제 2 요청 스트림 아이디(RSID #2), 제 4 요청 스트림 아이디(RSID #4), 및 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림들은 하나의 데이터 스트림으로 병합될 수 있다.
시각 "t1" 이후의 맵핑과 시각 "t4" 이후의 맵핑을 비교하면, 데이터 스트림들 각각의 데이터 양에 기초하여 맵핑 관계가 변경되었음이 이해될 수 있다. 좀 더 구체적으로, 데이터 양이 증가한 데이터 스트림은 하나의 처리 스트림 아이디(PSID)에 따라 전송되도록 새로 맵핑되었고, 데이터 양이 감소한 데이터 스트림은 다른 데이터 스트림들과 함께 하나의 데이터 스트림으로 병합되도록 새로 맵핑되었음이 이해될 수 있다.
여기서, "기준 시간"은 데이터 양의 변동에 기초하여 데이터 스트림들을 효율적으로 관리하기에 적절한 값을 갖도록 선택될 수 있다. 기준 시간은 고정된 값을 갖거나 가변적인 값을 가질 수 있다.
예로서, 기준 시간이 경과할 때마다(즉, 갱신 조건이 충족될 때마다), 쓰기 양 관리기(1221)는 데이터 양 정보(DA)를 갱신할 수 있다. 스트림 관리기(1223)는 갱신된 데이터 양 정보(DA)를 참조하여 스트림 아이디들(RSID, PSID) 사이의 맵핑을 변경할 수 있고, 맵핑 관리기(1225)는 변경된 맵핑을 관리할 수 있다. 메모리 컨트롤러(1220)는 데이터 스트림들 중 적어도 하나의 데이터 양의 변동에 응답하여, 하나의 데이터 스트림으로 병합되는 데이터 스트림들을 다르게 선택할 수 있다. 이에 따라, 데이터 양의 변동에 응답하여 데이터 스트림들이 효율적으로 관리될 수 있다.
특정 측정 구간의 데이터 양에 기초하여 데이터 스트림들을 관리하는 실시 예가 도 9를 참조하여 설명되었다. 다른 실시 예에서, 데이터 스트림들은 둘 이상의 측정 구간들의 데이터 양들에 기초하여 관리될 수 있다. 이러한 실시 예에 따르면, 특정 시점에 초점을 맞추는 대신 데이터 스트림의 거시적인 특성을 고려하여 데이터 스트림들이 관리될 수 있다. 이러한 실시 예는 도 10 및 도 11을 참조하여 설명될 것이다.
도 10은 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보 및 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다.
도 8 및 도 9를 참조하여 설명된 것과 같이, 데이터 스트림들 각각의 데이터 양의 변동은 스트림 아이디들(RSID, PSID)을 서로 맵핑하고 데이터 스트림들을 관리하기 위해 참조될 수 있다. 여기서, 특정 측정 구간에 초점을 맞추는 대신 둘 이상의 측정 구간들의 데이터 양들이 함께 참조되는 경우, 데이터 스트림의 특성이 고려될 수 있다.
실시 예로서, 도 10을 참조하면, 시각 "t4" 이후에 스트림 아이디들(RSID, PSID)을 서로 맵핑하기 위해, 데이터 스트림들 각각의 데이터 양들이 시각 "t0"와 시각 "t4" 사이의 측정 구간들에서 데이터 크기들을 합산함으로써 산출될 수 있다. 합산된 데이터 양들에 기초하여 도 6을 참조하여 설명된 맵핑 방법이 이용되는 경우, 시각 "t4" 이후, 제 1 요청 스트림 아이디(RSID #1), 제 5 요청 스트림 아이디(RSID #5), 및 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림들 각각은 하나의 처리 스트림 아이디(PSID)에 따라 관리될 수 있다. 한편, 제 2 요청 스트림 아이디(RSID #2), 제 3 요청 스트림 아이디(RSID #3), 및 제 4 요청 스트림 아이디(RSID #4)를 갖는 데이터 스트림들은 하나의 데이터 스트림으로 병합될 수 있다.
위 실시 예에 따르면, 전체적으로 많은 데이터 양의 쓰기 데이터를 전송하는 데이터 스트림은 하나의 처리 스트림 아이디(PSID)에 따라 관리될 수 있다, 반면, 전체적으로 적은 데이터 양의 쓰기 데이터를 전송하는 데이터 스트림은 다른 데이터 스트림들과 함께 병합될 수 있다.
도 11은 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보 및 스트림 아이디들 사이의 예시적인 맵핑을 보여주는 개념도이다.
실시 예로서, 도 11을 참조하면, 시각 "t4" 이후에 스트림 아이디들(RSID, PSID)을 서로 맵핑하기 위해, 데이터 스트림들 각각의 데이터 양들이 시각 "t0"와 시각 "t4" 사이의 측정 구간들에서 데이터 크기들을 가중(Weighted) 합산함으로써 산출될 수 있다. 예로서, 가장 최근의 측정 구간(즉, 시각 "t3"와 시각 "t4" 사이의 측정 구간)의 데이터 크기에 제 1 가중치를 할당하고, 가장 최근의 측정 구간을 제외한 나머지 측정 구간들(즉, 시각 "t0"와 시각 "t3" 사이의 측정 구간들)의 데이터 크기들 각각에 제 2 가중치를 할당함으로써, 가중 합산된 데이터 양들이 얻어질 수 있다.
제 1 가중치가 "β"로 표현되고 제 2 가중치가 "α"로 표현되는 경우, 다음 [수학식 1]은 가중 합산을 위해 이용될 수 있다.
위 [수학식 1]에서, "Di ,recent"는 제 i 요청 스트림 아이디를 갖는 데이터 스트림의 가장 최근의 측정 구간의 데이터 양이고, "Di ,other"는 제 i 요청 스트림 아이디를 갖는 데이터 스트림의 나머지 측정 구간들의 데이터 양들의 합을 나타낸다. 나아가, "WDi"는 제 i 요청 스트림 아이디를 갖는 데이터 스트림에 관한 가중 합산된 데이터 양을 나타낸다.
예로서, 위 [수학식 1]에서, 제 1 가중치 "β"가 제 2 가중치 "α"보다 큰 값을 갖는 경우, 가장 최근의 측정 구간의 데이터 양이 나머지 측정 구간들의 데이터 양들보다 많이 고려될 수 있다. 도 11은 시각 "t3"와 시각 "t4" 사이의 측정 구간의 데이터 양에 "1.6"의 제 1 가중치가 할당되고 시각 "t0"와 시각 "t3" 사이의 측정 구간들의 데이터 양들의 합에 "0.4"의 제 2 가중치가 할당된 예시를 보여준다.
가중 합산된 데이터 양들에 기초하여 도 6을 참조하여 설명된 맵핑 방법이 이용되는 경우, 시각 "t4" 이후, 제 1 요청 스트림 아이디(RSID #1), 제 3 요청 스트림 아이디(RSID #3), 및 제 5 요청 스트림 아이디(RSID #5)를 갖는 데이터 스트림들 각각은 하나의 처리 스트림 아이디(PSID)에 따라 관리될 수 있다. 한편, 제 2 요청 스트림 아이디(RSID #2), 제 4 요청 스트림 아이디(RSID #4), 및 제 6 요청 스트림 아이디(RSID #6)를 갖는 데이터 스트림들은 하나의 데이터 스트림으로 병합될 수 있다.
위 실시 예에 따르면, 가장 최근의 측정 구간에서 많은 데이터 양의 쓰기 데이터를 전송한 데이터 스트림은 하나의 처리 스트림 아이디(PSID)에 따라 관리될 수 있다. 반면, 최근의 측정 구간에서 적은 데이터 양의 쓰기 데이터를 전송한 데이터 스트림은 다른 데이터 스트림들과 함께 병합될 수 있다. 이 실시 예에 따르면, 데이터 양의 증가 또는 감소의 경향이 고려될 수 있다.
도 8 내지 도 11을 참조하여 설명된 것과 같이, 데이터 양의 변동은 다양한 방법에 따라 참조될 수 있다. 도 1의 스토리지 장치(1200)는 도 8 내지 도 11을 참조하여 설명된 방법들 중에서 하나의 방법만을 채용할 수 있다. 또는, 스토리지 장치(1200)는 스토리지 장치(1200)의 동작 환경이나 동작 성능, 도 1의 호스트(1100)의 요청 등과 같은 다양한 조건 중 적어도 하나에 따라, 도 8 내지 도 11을 참조하여 설명된 방법들을 가변적으로 이용할 수 있다.
도 12는 도 8의 복수의 데이터 스트림 각각의 데이터 양에 관한 정보를 갱신하기 위한 갱신 조건을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 5가 도 12와 함께 참조될 것이다.
위에서 설명된 것과 같이, 쓰기 양 관리기(1221)는 측정 구간들 각각에 관한 데이터 양을 관리하기 위해, 갱신 조건이 충족될 경우에 데이터 양 정보(DA)를 갱신할 수 있다. 이에 따라, 데이터 양의 변동이 관리될 수 있다. 도 8 내지 도 11을 참조하여 설명된 실시 예들에서, 갱신 조건은 기준 시간이 경과한 경우에 충족됨을 설명하였다.
그러나, 위 실시 예들은 본 발명을 한정하기 위한 것은 아니다. 갱신 조건은 다양하게 변경 또는 수정될 수 있다. 일 실시 예에서, 갱신 조건은 호스트(1100)로부터 스토리지 장치(1200)로 요청 스트림 아이디(RSID)들을 각각 갖는 데이터 스트림들이 기준 데이터 양만큼 제공된 경우에 충족될 수 있다.
도 12를 참조하면, 메모리 컨트롤러(1220)는 시각 "t0"에서부터 데이터 스트림들 전체의 데이터 양을 모니터링할 수 있다. 이후, 시각 "t1"에서, 데이터 스트림들 전체의 데이터 양이 기준 데이터 양(예컨대, 1000MB)에 도달할 수 있다. 데이터 스트림들이 기준 데이터 양만큼 제공된 경우 갱신 조건이 충족될 수 있고, 쓰기 양 관리기(1221)는 갱신 조건의 충족에 응답하여 시각 "t0"와 시각 "t1" 사이의 측정 구간에서의 데이터 스트림들 각각의 데이터 양에 관한 정보를 획득할 수 있다.
유사하게, 쓰기 양 관리기(1221)는 데이터 스트림들이 기준 데이터 양만큼 제공되는 시각 "t1"와 시각 "t2" 사이의 측정 구간에 관하여 데이터 스트림들 각각의 데이터 양에 관한 정보를 획득할 수 있다. 시각 "t2"와 시각 "t3" 사이의 측정 구간, 시각 "t3"와 시각 "t4" 사이의 측정 구간, 및 시각 "t4"와 시각 "t5" 사이의 측정 구간 역시 데이터 스트림들이 기준 데이터 양만큼 제공됨에 따라 형성될 수 있다. 나아가, 쓰기 양 관리기(1221)는 측정 구간들 각각에서의 데이터 스트림들 각각의 데이터 양에 관한 정보를 획득할 수 있다.
측정 구간들 각각에서 데이터 스트림들 각각의 데이터 양에 관한 정보가 획득된 경우, 도 8 내지 도 11을 참조하여 설명된 것과 유사한 방식으로 스트림 아이디들(RSID, PSID)이 서로 맵핑될 수 있다. 예로서, 스트림 아이디들(RSID, PSID) 사이의 맵핑은 측정 구간들 각각의 데이터 양 또는 둘 이상의 측정 구간들의 데이터 양들의 합에 기초하여 관리 및 변경될 수 있다.
위 실시 예에 따르면, 측정 구간들 각각의 길이는 데이터 스트림들의 전송 속도에 의존하여 변경될 수 있다. 예로서, 데이터 스트림들의 전송 속도가 빠른 경우, 측정 구간의 길이는 짧아질 수 있다. 반면, 데이터 스트림들의 전송 속도가 느린 경우, 측정 구간의 길이는 길어질 수 있다.
위 실시 예에서, "기준 데이터 양"은 1000MB로 한정되지 않고, 데이터 양의 변동에 기초하여 데이터 스트림들을 효율적으로 관리하기에 적절한 값을 갖도록 선택될 수 있다. 기준 데이터 양은 고정된 값을 갖거나 가변적인 값을 가질 수 있다.
도 8 내지 도 12를 참조하여 설명된 것과 달리, 갱신 조건은 다양하게 변경 또는 수정될 수 있다. 다른 실시 예에서, 갱신 조건은 호스트(1100)로부터 쓰기 요청이 제공되는 경우에 충족될 수 있다. 이 실시 예에 따르면, 새로운 쓰기 동작이 수행될 때마다, 데이터 양에 관한 정보 및 데이터 양의 변동이 관리 및 갱신될 수 있다. 또 다른 실시 예에서, 갱신 조건은 불휘발성 메모리들(1210)에서 새로운 메모리 블록의 할당 또는 무효 메모리 블록의 반환과 같은 이벤트가 발생하는 경우에 충족될 수 있다. 이 실시 예에 따르면, 불휘발성 메모리들(1210)에서 특정 이벤트가 발생할 때마다, 데이터 양에 관한 정보 및 데이터 양의 변동이 관리 및 갱신될 수 있다.
스토리지 장치(1200)는 도 8 내지 도 12를 참조하여 설명된 갱신 조건들 중에서 하나만을 채용할 수 있다. 또는, 스토리지 장치(1200)는 스토리지 장치(1200)의 동작 환경이나 동작 성능, 호스트(1100)의 요청 등과 같은 다양한 조건 중 적어도 하나에 따라, 도 8 내지 도 12을 참조하여 설명된 갱신 조건들을 가변적으로 이용할 수 있다. 본 발명의 실시 예는 다양하게 변경 또는 수정될 수 있다.
도 1 내지 도 12를 참조하여 설명된 것과 같이, 본 발명의 실시 예에 따른 스토리지 장치(1200)는 복수의 데이터 스트림의 형태로 쓰기 데이터를 제공받을 수 있다. 나아가, 스토리지 장치(1200)는 데이터 양에 기초하여 데이터 스트림들을 관리할 수 있다. 본 발명의 실시 예에 따르면, 쓰기 동작의 성능이 향상될 수 있고, 스토리지 장치(1200)의 수명의 단축이 느려질 수 있다. 게다가, 본 발명의 실시 예에 따르면, 스토리지 장치(1200)의 메모리 컨트롤러(1220)에 의해 처리될 수 있는 개수보다 많은 데이터 스트림들이 제공되더라도, 데이터 스트림들이 데이터 양에 기초하여 효율적으로 관리될 수 있다.
도 13은 도 1의 불휘발성 메모리들 중 하나를 보여주는 블록도이다. 도 1의 하나 이상의 불휘발성 메모리들(1210) 중 적어도 하나는 불휘발성 메모리(1211)를 포함할 수 있다. 불휘발성 메모리(1211)는 메모리 셀 어레이(1211a), 어드레스 디코더(1211b), 제어 로직 및 전압 발생기(1211c), 페이지 버퍼(1211d), 및 입출력 회로(1211e)를 포함할 수 있다.
메모리 셀 어레이(1211a)는 복수의 메모리 블록(BLK1 내지 BLKz)을 포함할 수 있다. 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 셀 스트링을 포함할 수 있다. 셀 스트링들 각각은 복수의 메모리 셀을 포함할 수 있다. 메모리 셀들은 각각 복수의 워드 라인(WL)과 연결될 수 있다. 메모리 셀들 각각은 1비트를 저장하는 단일 레벨 셀(Single Level Cell) 또는 적어도 2비트를 저장하는 멀티 레벨 셀(Multi Level Cell)을 포함할 수 있다.
실시 예로서, 메모리 셀 어레이(1211a)는 3차원 메모리 어레이를 포함할 수 있다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 관련된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀 어레이들의 하나 이상의 물리 레벨들에 모놀리식으로(Monolithically) 형성될 수 있다. 메모리 셀들의 동작에 관련된 회로는 기판 내에 또는 기판 위에 배치될 수 있다. "모놀리식(Monolithical)"이라는 용어는, 3차원 메모리 어레이의 각 레벨의 층들이 3차원 메모리 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 갖고 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함할 수 있다. 적어도 하나의 메모리 셀은 전하 트랩(Charge Trap) 층을 포함할 수 있다. 수직 NAND 스트링들 각각은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조로 구성되고 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨로 구성되고, 레벨들 사이에 공유되는 워드 라인들 또는 비트 라인들이 구비되는 것과 같이, 3차원 메모리 어레이에 적합한 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 이 공보들은 본 발명의 참조로서 포함된다.
메모리 블록들(BLK1 내지 BLKz) 각각은 본 발명의 실시 예에 따라 복수의 데이터 스트림을 저장하기에 적합하도록 구성될 수 있다. 예로서, 메모리 블록들(BLK1 내지 BLKz) 각각은 도 1 내지 도 12를 참조하여 설명된 처리 스트림 아이디(PSID)들 중 하나에 대응하는 데이터 스트림의 쓰기 데이터를 저장할 수 있다. 이에 따라, 동일하거나 유사한 특성을 갖는 데이터가 함께 관리될 수 있다. 따라서, 새로운 메모리 블록의 할당의 효율성이 향상될 수 있고, 쓰기 동작의 성능이 향상될 수 있다. 뿐만 아니라, 무효 데이터의 페이지를 반환하고 프리 페이지를 확보하기 위한 가비지 콜렉션 동작의 횟수가 감소할 수 있고, 스토리지 장치(1200)의 수명의 단축이 느려질 수 있다.
어드레스 디코더(1211b)는 워드 라인들(WL), 스트링 선택 라인들(SSL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(1211a)와 연결될 수 있다. 어드레스 디코더(1211b)는 도 1의 메모리 컨트롤러(1220)로부터 어드레스(ADDR_S')를 수신하고, 수신된 어드레스(ADDR_S')를 디코딩할 수 있다. 어드레스 디코더(1211b)는 디코딩된 어드레스(ADDR_S')에 기초하여 워드 라인들(WL) 중 적어도 하나를 선택하고, 선택된 적어도 하나의 워드 라인을 구동할 수 있다.
제어 로직 및 전압 발생기(1211c)는 메모리 컨트롤러(1220)로부터 커맨드(CMD_S') 및 제어 신호(CTRL)를 수신할 수 있다. 제어 로직 및 전압 발생기(1211c)는 수신된 신호들에 응답하여 어드레스 디코더(1211b), 페이지 버퍼(1211d), 및 입출력 회로(1211e)를 제어할 수 있다. 예로서, 제어 로직 및 전압 발생기(1211c)는 커맨드(CMD_S') 및 제어 신호(CTRL)에 응답하여, 메모리 컨트롤러(1220)로부터 제공된 쓰기 데이터(DATA)가 메모리 셀 어레이(1211a)에 저장되거나 메모리 셀 어레이(1211a)에 저장된 읽기 데이터(DATA)가 읽히도록, 디코더(1211b), 페이지 버퍼(1211d), 및 입출력 회로(1211e)를 제어할 수 있다.
제어 로직 및 전압 발생기(1211c)는 불휘발성 메모리(1211)를 동작시키기 위해 이용되는 여러 전압을 생성할 수 있다. 예로서, 제어 로직 및 전압 발생기(1211c)는 복수의 프로그램 전압, 복수의 패스 전압, 복수의 선택 읽기 전압, 복수의 비선택 읽기 전압, 복수의 소거 전압, 및 복수의 검증 전압을 생성할 수 있다. 제어 로직 및 전압 발생기(1211c)는 생성된 전압들을 어드레스 디코더(1211b)로 제공하거나 메모리 셀 어레이(1211a)의 기판으로 제공할 수 있다.
페이지 버퍼(1211d)는 복수의 비트 라인(BL)을 통해 메모리 셀 어레이(1211a)와 연결될 수 있다. 페이지 버퍼(1211d)는 제어 로직 및 전압 발생기(1211c)의 제어에 따라, 입출력 회로(1211e)로부터 제공된 쓰기 데이터(DATA)가 메모리 셀 어레이(1211a)에 저장되도록 비트 라인들(BL)을 제어할 수 있다. 페이지 버퍼(1211d)는 제어 로직 및 전압 발생기(1211c)의 제어에 따라 메모리 셀 어레이(1211a)에 저장된 읽기 데이터를 읽고, 읽힌 데이터를 입출력 회로(1211e)로 제공할 수 있다. 예로서, 페이지 버퍼(1211d)는 입출력 회로(1211e)로부터 페이지 단위로 데이터를 제공받거나, 메모리 셀 어레이(1211a)로부터 페이지 단위로 데이터를 읽을 수 있다. 실시 예로서, 페이지 버퍼(1211d)는 메모리 셀 어레이(1211a)로부터 읽힌 데이터 또는 입출력 회로(1211e)로부터 제공된 데이터를 임시로 저장하기 위한 데이터 래치들을 포함할 수 있다.
입출력 회로(1211e)는 메모리 컨트롤러(1220)와 같은 외부 장치로부터 쓰기 데이터(DATA)를 제공받고, 제공받은 쓰기 데이터(DATA)를 페이지 버퍼(1211d)로 제공할 수 있다. 또는, 입출력 회로(1211e)는 페이지 버퍼(1211d)로부터 읽기 데이터(DATA)를 제공받고, 제공받은 읽기 데이터(DATA)를 메모리 컨트롤러(1220)와 같은 외부 장치로 제공할 수 있다. 예로서, 입출력 회로(1211e)는 제어 신호(CTRL)와 동기하여 외부 장치와 데이터(DATA)를 교환할 수 있다.
도 14는 도 13의 메모리 셀 어레이의 한 메모리 블록을 보여주는 개념도이다. 도 14를 참조하여, 3차원 구조의 제 1 메모리 블록(BLK1)이 설명된다. 예로서, 도 14는 도 13의 메모리 셀 어레이(1211a)가 낸드 플래시 메모리를 포함하는 경우를 보여준다. 그러나, 본 발명은 도 14에 의해 제한되지 않는다. 다른 메모리 블록들은 제 1 메모리 블록(BLK1)과 유사하게 구성될 수 있다.
제 1 메모리 블록(BLK1)은 복수의 셀 스트링(CS11, CS12, CS21, CS22)을 포함할 수 있다. 셀 스트링들(CS11, CS12, CS21, CS22)은 행 방향(Row Direction) 및 열 방향(Column Direction)을 따라 배치되어, 행들 및 열들을 형성할 수 있다. 예로서, 셀 스트링들(CS11, CS12)은 스트링 선택 라인들(SSL1a, SSL1b)과 연결되어 제 1 행을 형성할 수 있다. 셀 스트링들(CS21, CS22)은 스트링 선택 라인들(SSL2a, SSL2b)과 연결되어 제 2 행을 형성할 수 있다. 나아가, 셀 스트링들(CS11, CS21)은 제 1 비트 라인(BL1)과 연결되어 제 1 열을 형성할 수 있다. 셀 스트링들(CS12, CS22)은 제 2 비트 라인(BL2)과 연결되어 제 2 열을 형성할 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터를 포함할 수 있다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택된 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀(MC1 내지 MC8), 접지 선택된 트랜지스터들(GSTa, GSTb), 및 더미(Dummy) 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 예로서, 셀 스트링들(CS11, CS12, CS21, CS22)에 포함되는 복수의 셀 트랜지스터 각각은 전하 트랩 플래시(Charge Trap Flash) 메모리 셀일 수 있다.
메모리 셀들(MC1 내지 MC8)은 직렬로 연결되고, 행 방향 및 열 방향에 의해 형성되는 평면에 수직인 높이 방향(Height Direction)으로 적층될 수 있다. 스트링 선택된 트랜지스터들(SSTa, SSTb)은 직렬로 연결되고, 직렬 연결된 스트링 선택된 트랜지스터들(SSTa, SSTb)은 메모리 셀들(MC1 내지 MC8) 및 비트 라인(BL) 사이에 제공될 수 있다. 접지 선택된 트랜지스터들(GSTa, GSTb)은 직렬로 연결되고, 직렬 연결된 접지 선택된 트랜지스터들(GSTa, GSTb)은 메모리 셀들(MC1 내지 MC8) 및 공통 소스 라인(CSL) 사이에 제공될 수 있다.
예로서, 메모리 셀들(MC1 내지 MC8) 및 접지 선택된 트랜지스터들(GSTa, GSTb) 사이에 제 1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예로서, 메모리 셀들(MC1 내지 MC8) 및 스트링 선택된 트랜지스터들(SSTa, SSTb) 사이에 제 2 더미 메모리 셀(DMC2)이 제공될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택된 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예로서, 동일한 행의 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 서로 다른 행의 접지 선택된 트랜지스터들은 서로 다른 접지 선택 라인에 연결될 수 있다. 예로서, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결될 수 있고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 2 접지 선택 라인에 연결될 수 있다.
예로서, 도면에 나타내지는 않았으나, 기판(미도시)으로부터 동일한 높이에 놓이는 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 서로 다른 높이에 놓이는 접지 선택된 트랜지스터들은 서로 다른 접지 선택 라인에 연결될 수 있다. 예로서, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결되고, 제 2 접지 선택 트랜지스터들(GSTb)은 제 2 접지 선택 라인에 연결될 수 있다.
기판 또는 접지 선택된 트랜지스터들(GSTa, GSTb)로부터 동일한 높이에 놓이는 메모리 셀들은 동일한 워드 라인에 공통으로 연결되고, 서로 다른 높이에 놓이는 메모리 셀들은 서로 다른 워드 라인에 연결될 수 있다. 예로서, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 내지 제 8 메모리 셀들(MC1 내지 MC8)은 각각 제 1 내지 제 8 워드라인들(WL1 내지 WL8)에 공통으로 연결될 수 있다.
동일한 높이에 놓이는 제 1 스트링 선택된 트랜지스터들(SSTa) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결될 수 있다. 예로서, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결될 수 있다.
유사하게, 동일한 높이에 놓이는 제 2 스트링 선택된 트랜지스터들(SSTb) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결될 수 있다. 예로서, 제 1 행의 셀 스트링들(CS11, CS12)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)과 공통으로 연결될 수 있다.
도면에 나타내지는 않았으나, 동일한 행의 셀 스트링들의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다.
예로서, 동일한 높이에 놓이는 더미 메모리 셀들은 동일한 더미 워드 라인과 연결되고, 서로 다른 높이에 놓이는 더미 메모리 셀들은 서로 다른 더미 워드 라인과 연결될 수 있다. 예로서, 제 1 더미 메모리 셀들(DMC1)은 제 1 더미 워드 라인(DWL1)과 연결되고, 제 2 더미 메모리 셀들(DMC2)은 제 2 더미 워드 라인(DWL2)과 연결될 수 있다.
제 1 메모리 블록(BLK1)에서, 읽기 및 쓰기는 행 단위로 수행될 수 있다. 예로서, 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해 제 1 메모리 블록(BLKa)의 하나의 행이 선택될 수 있다.
예로서, 스트링 선택 라인들(SSL1a, SSL1b)에 턴-온(Turn-on) 전압이 공급되고 스트링 선택 라인들(SSL2a, SSL2b)에 턴-오프(Turn-off) 전압이 공급될 때, 제 1 행의 셀 스트링들(CS11, CS12)이 비트 라인들(BL1, BL2)에 연결될 수 있다. 반면, 스트링 선택 라인들(SSL2a, SSL2b)에 턴-온 전압이 공급되고 스트링 선택 라인들(SSL1a, SSL1B)에 턴-오프 전압이 공급될 때, 제 2 행의 셀 스트링들(CS21, CS22)이 비트 라인들(BL1, BL2)에 연결될 수 있다. 워드 라인을 구동함으로써 구동되는 행의 셀 스트링의 메모리 셀들 중에서, 동일한 높이에 놓인 메모리 셀들이 선택될 수 있다. 선택된 메모리 셀들에서 읽기 및 쓰기 동작이 수행될 수 있다. 선택된 메모리 셀들은 물리 페이지 단위를 형성할 수 있다.
제 1 메모리 블록(BLK1)에서, 소거는 메모리 블록 단위 또는 서브 블록의 단위로 수행될 수 있다. 메모리 블록 단위로 소거가 수행될 때, 제 1 메모리 블록(BLK1)의 모든 메모리 셀들(MC1 내지 MC8)이 하나의 소거 요청에 따라 동시에 소거될 수 있다. 서브 블록의 단위로 수행될 때, 제 1 메모리 블록(BLK1)의 메모리 셀들(MC1 내지 MC8) 중 일부는 하나의 소거 요청에 따라 동시에 소거되고, 나머지 일부는 소거 금지될 수 있다. 소거되는 메모리 셀들에 연결된 워드 라인에 저전압(예를 들어, 접지 전압)이 공급되고, 소거 금지된 메모리 셀들에 연결되는 워드 라인은 플로팅될(Floated) 수 있다.
도 14에 나타낸 제 1 메모리 블록(BLK1)의 구성은 예시적인 것이다. 셀 스트링들의 개수는 증가 또는 감소할 수 있고, 셀 스트링들의 개수에 따라 셀 스트링들에 의해 구성되는 행들 및 열들의 개수가 증가 또는 감소할 수 있다. 나아가, 제 1 메모리 블록(BLK1)의 셀 트랜지스터들(GST, MC, DMC, SST 등)의 개수들은 각각 증가 또는 감소할 수 있고, 셀 트랜지스터들의 개수들에 따라 제 1 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 뿐만 아니라, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들(GSL, WL, DWL, SSL 등)의 개수들이 증가 또는 감소할 수 있다.
도 15는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다. 컴퓨팅 장치(2000)는 중앙 처리 유닛(2100), 워킹 메모리(2200), 스토리지 장치(2300), 통신 블록(2400), 유저 인터페이스(2500), 및 버스(2600)를 포함할 수 있다. 예로서, 컴퓨팅 장치(2000)는 개인용 컴퓨터(Personal Computer), 워크스테이션(Workstation), 노트북, 태블릿 등과 같은 전자 장치들 중 하나일 수 있다.
중앙 처리 유닛(2100)은 컴퓨팅 장치(2000)의 전반적인 동작들을 제어할 수 있다. 중앙 처리 유닛(2100)은 다양한 종류의 산술 연산 및/또는 논리 연산을 수행할 수 있다. 예로서, 중앙 처리 유닛(2100)은 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서를 포함할 수 있다.
워킹 메모리(2200)는 중앙 처리 유닛(2100)과 데이터를 교환할 수 있다. 워킹 메모리(2200)는 컴퓨팅 장치(2000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(2200)는 컴퓨팅 장치(2000)의 버퍼로서 이용될 수 있다. 예로서, 워킹 메모리(2200)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리 시스템을 포함할 수 있다. 워킹 메모리(2200)는 하나 이상의 메모리 모듈 또는 하나 이상의 메모리 패키지를 포함할 수 있다.
스토리지 장치(2300)는 전원 공급에 관계없이 보존을 필요로 하는 데이터를 저장할 수 있다. 예로서, 스토리지 장치(2300)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 예로서, 스토리지 장치(2300)는 SSD(Solid State Drive)와 같은 스토리지 매체를 포함할 수 있다.
스토리지 장치(2300)는 도 1 내지 도 12를 참조하여 설명된 본 발명의 실시 예들 중 적어도 하나에 기초하여 구현될 수 있다. 스토리지 장치(2300)는 하나 이상의 불휘발성 메모리들 및 메모리 컨트롤러를 포함할 수 있다. 예로서, 스토리지 장치(2300)는 복수의 데이터 스트림의 형태로 쓰기 데이터를 제공받을 수 있다. 나아가, 스토리지 장치(2300)는 데이터 양에 기초하여 데이터 스트림들을 관리할 수 있다. 본 발명의 실시 예에 따르면, 쓰기 동작의 성능이 향상될 수 있고, 스토리지 장치(2300)의 수명의 단축이 느려질 수 있다.
통신 블록(2400)은 중앙 처리 유닛(2100)의 제어에 따라 컴퓨팅 장치(2000)의 외부와 통신할 수 있다. 통신 블록(2400)은 유선 통신 규약 및/또는 무선 통신 규약에 따라 컴퓨팅 장치(2000)의 외부와 통신할 수 있다. 예로서, 통신 블록(2400)은 LTE(Long Term Evolution), WiMax(Worldwide Interoperability for Microwave Access), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP(Transfer Control Protocol/Internet Protocol), USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), M-PCIe(Mobile PCIe), ATA(Advanced Technology Attachment), PATA(Parallel ATA), SATA(Serial ATA), SAS, IDE(Integrated Drive Electronics), Firewire 등의 다양한 유선 통신 규약 중 적어도 하나에 따라 컴퓨팅 장치(2000)의 외부와 통신할 수 있다.
유저 인터페이스(2500)는 중앙 처리 유닛(2100)의 제어에 따라 사용자와 컴퓨팅 장치(2000) 사이의 통신을 중계할 수 있다. 예로서, 유저 인터페이스(2500)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등의 입력 인터페이스를 포함할 수 있다. 나아가, 유저 인터페이스(2500)는 LCD(Liquid Crystal Display) 장치, LED(Light Emitting Diode) 표시 장치, OLED(Organic LED) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, 스피커, 모터 등의 출력 인터페이스를 포함할 수 있다.
버스(2600)는 컴퓨팅 장치(2000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(2000)의 구성 요소들은 버스(2600)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB, SCSI, PCIe, ATA, PATA, SATA, SAS, IDE, UFS(Univeral Flash Storage) 등과 같은 다양한 규약들 중 하나 이상을 포함할 수 있다.
도 16은 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 나타낸 블록도이다. 전자 시스템(3000)은 MIPI(Mobile Industry Processor Interface) 연합(Alliance)에 의해 제안된 인터페이스를 이용하거나 지원할 수 있는 데이터 처리 장치로 구현될 수 있다. 예로서, 전자 시스템(3000)은 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블 장치 등과 같은 전자 장치들 중 하나일 수 있다.
전자 시스템(3000)은 어플리케이션 프로세서(3100), 디스플레이(3220), 및 이미지 센서(3230)를 포함할 수 있다. 어플리케이션 프로세서(3100)는 DigRF 마스터(3110), DSI(Display Serial Interface) 호스트(3120), CSI(Camera Serial Interface) 호스트(3130), 물리 계층(3140), 및 영상 신호 처리기(3150)를 포함할 수 있다.
DSI 호스트(3120)는 DSI에 따라 디스플레이(3220)의 DSI 장치(3225)와 통신할 수 있다. 예로서, DSI 호스트(3120)에는 광 시리얼라이저(SER)가 구현될 수 있다. 예로서, DSI 장치(3225)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
CSI 호스트(3130)는 CSI에 따라 이미지 센서(3230)의 CSI 장치(3235)와 통신할 수 있다. 예로서, CSI 호스트(3130)에는 광 디시리얼라이저(DES)가 구현될 수 있다. 예로서, CSI 장치(3235)에는 광 시리얼라이저(SER)가 구현될 수 있다. 영상 신호 처리기(3150)는 메모리(예컨대, 워킹 메모리(3250) 또는 어플리케이션 프로세서(3100)에 내장된 메모리) 및 버스를 통해 CSI 호스트(3130)와 통신할 수 있다.
전자 시스템(3000)은 어플리케이션 프로세서(3100)와 통신하는 RF(Radio Frequency) 칩(3240)을 더 포함할 수 있다. RF 칩(3240)은 물리 계층(3242), DigRF 슬레이브(3244), 및 안테나(3246)를 포함할 수 있다. 예로서, RF 칩(3240)의 물리 계층(3242)과 어플리케이션 프로세서(3100)의 물리 계층(3140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 시스템(3000)은 워킹 메모리(3250) 및 임베디드(Embedded)/카드 스토리지(3255)를 더 포함할 수 있다. 워킹 메모리(3250) 및 임베디드/카드 스토리지(3255)는 어플리케이션 프로세서(3100)로부터 제공받은 데이터를 저장할 수 있다. 나아가, 워킹 메모리(3250) 및 임베디드/카드 스토리지(3255)는 저장된 데이터를 어플리케이션 프로세서(3100)로 제공할 수 있다.
워킹 메모리(3250)는 어플리케이션 프로세서(3100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(3250)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
임베디드/카드 스토리지(3255)는 전원 공급 여부와 관계없이 데이터를 저장할 수 있다. 예로서, 임베디드/카드 스토리지(3255)는 SD(Secure Digital) 카드, eMMC(Embedded Multimedia Card) 카드 등과 같은 장치들 중 하나일 수 있다.
임베디드/카드 스토리지(3255)는 도 1 내지 도 12를 참조하여 설명된 본 발명의 실시 예들 중 적어도 하나에 기초하여 구현될 수 있다. 임베디드/카드 스토리지(3255)는 하나 이상의 불휘발성 메모리들 및 메모리 컨트롤러를 포함할 수 있다. 예로서, 임베디드/카드 스토리지(3255)는 복수의 데이터 스트림의 형태로 쓰기 데이터를 제공받을 수 있다. 나아가, 임베디드/카드 스토리지(3255)는 데이터 양에 기초하여 데이터 스트림들을 관리할 수 있다. 본 발명의 실시 예에 따르면, 쓰기 동작의 성능이 향상될 수 있고, 임베디드/카드 스토리지(3255)의 수명의 단축이 느려질 수 있다.
전자 시스템(3000)은 Wimax(World Interoperability for Microwave Access; 3260), WLAN(Wireless Local Area Network; 3262), UWB(Ultra Wideband; 3264) 등과 같은 통신 모듈을 통해 외부 시스템과 통신할 수 있다. 전자 시스템(3000)은 음성 정보를 처리하기 위한 스피커(3270) 및 마이크(3275)를 더 포함할 수 있다. 나아가, 전자 시스템(3000)은 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(3280)를 더 포함할 수 있다. 전자 시스템(3000)은 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(3290)을 더 포함할 수 있다.
본 발명의 실시 예에 따른 회로들, 칩들, 및 장치들은 다양한 종류의 반도체 패키지를 이용하여 실장될 수 있다. 예로서, 본 발명의 실시 예에 따른 회로들, 칩들, 및 장치들은 PoP(Package on Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-line Package), MQFP(Metric Quad Flat Pack), TQFP(Thin Quad Flat Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등의 패키지를 이용하여 실장될 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 한정하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
1000 : 스토리지 시스템 1100 : 호스트
1200 : 스토리지 장치 1210 : 불휘발성 메모리들
1211 : 불휘발성 메모리 1211a : 메모리 셀 어레이
1211b : 어드레스 디코더
1211c : 제어 로직 및 전압 발생기
1211d : 페이지 버퍼 1211e : 입출력 회로
1220 : 메모리 컨트롤러 1221 : 쓰기 양 관리기
1223 : 스트림 관리기 1225 : 맵핑 관리기
2000 : 컴퓨팅 장치 2100 : 중앙 처리 유닛
2200 : 워킹 메모리 2300 : 스토리지 장치
2400 : 통신 블록 2500 : 유저 인터페이스
2600 : 버스
3000 : 전자 시스템 3100 : 어플리케이션 프로세서
3110 : DigRF 마스터 3120 : DSI 호스트
3130 : CSI 호스트 3140 : 물리 계층
3150 : 영상 신호 처리기
3220 : 디스플레이 3225 : DSI 장치
3230 : 이미지 센서 3235 : CSI 장치
3240 : RF 칩 3242 : 물리 계층
3244 : DigRF 슬레이브 3246 : 안테나
3250 : 워킹 메모리 3255 : 임베디드/카드 스토리지
3260 : Wimax 3262 : WLAN
3264 : UWB 3270 : 스피커
3275 : 마이크 3280 : GPS
3290 : 브릿지 칩
1200 : 스토리지 장치 1210 : 불휘발성 메모리들
1211 : 불휘발성 메모리 1211a : 메모리 셀 어레이
1211b : 어드레스 디코더
1211c : 제어 로직 및 전압 발생기
1211d : 페이지 버퍼 1211e : 입출력 회로
1220 : 메모리 컨트롤러 1221 : 쓰기 양 관리기
1223 : 스트림 관리기 1225 : 맵핑 관리기
2000 : 컴퓨팅 장치 2100 : 중앙 처리 유닛
2200 : 워킹 메모리 2300 : 스토리지 장치
2400 : 통신 블록 2500 : 유저 인터페이스
2600 : 버스
3000 : 전자 시스템 3100 : 어플리케이션 프로세서
3110 : DigRF 마스터 3120 : DSI 호스트
3130 : CSI 호스트 3140 : 물리 계층
3150 : 영상 신호 처리기
3220 : 디스플레이 3225 : DSI 장치
3230 : 이미지 센서 3235 : CSI 장치
3240 : RF 칩 3242 : 물리 계층
3244 : DigRF 슬레이브 3246 : 안테나
3250 : 워킹 메모리 3255 : 임베디드/카드 스토리지
3260 : Wimax 3262 : WLAN
3264 : UWB 3270 : 스피커
3275 : 마이크 3280 : GPS
3290 : 브릿지 칩
Claims (20)
- 하나 이상의 불휘발성 메모리들; 및
호스트로부터 제공된 제 1 개수의 요청 스트림 아이디들을 각각 갖는 데이터 스트림들 각각의 쓰기 데이터가 상기 불휘발성 메모리들 중 적어도 하나에 저장되도록, 상기 불휘발성 메모리들을 제어하도록 구성되는 메모리 컨트롤러를 포함하되,
상기 메모리 컨트롤러는:
상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각의 데이터 양이 변동하는지 여부를 모니터링하고, 상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각의 데이터 양에 관한 정보를 관리하도록 구성되는 쓰기 양 관리기;
상기 데이터 스트림들이 제 2 개수의 처리 스트림 아이디들에 따라 상기 불휘발성 메모리들로 제공되도록, 상기 데이터 양에 관한 상기 정보를 참조하여 상기 제 1 개수의 상기 요청 스트림 아이디들을 상기 제 2 개수의 상기 처리 스트림 아이디들로 맵핑하도록 구성되는 스트림 관리기; 및
상기 제 1 개수의 상기 요청 스트림 아이디들과 상기 제 2 개수의 상기 처리 스트림 아이디들 사이의 맵핑에 관한 정보를 관리하도록 구성되는 맵핑 관리기를 포함하고,
상기 스트림 관리기는, 상기 제1 개수가 상기 제2 개수보다 큰 경우, 상기 데이터 양에 관한 상기 정보를 참조하여 상기 요청 스트림 아이디들 중 제 1 요청 스트림 아이디에 대응하는 제 1 데이터 스트림 및 상기 요청 스트림 아이디들 중 제 2 요청 스트림 아이디에 대응하는 제 2 데이터 스트림을 상기 처리 스트림 아이디들 중 제 1 처리 스트림 아이디에 대응하는 데이터 스트림으로 병합하도록 구성되는 스토리지 장치. - 제 1 항에 있어서,
상기 데이터 양에 관한 상기 정보는 상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각의 데이터 크기를 하나 이상의 측정 구간들 동안 누적함으로써 얻어지는 스토리지 장치. - 제 2 항에 있어서,
상기 데이터 양은 상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각에 대해 상기 측정 구간들에서 데이터 크기들을 합산함으로써 산출되는 스토리지 장치. - 제 2 항에 있어서,
상기 데이터 양은 상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각에 대해 가중치 합산을 이용하여 산출되는 스토리지 장치. - 제 4 항에 있어서,
상기 데이터 양은 상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각에 대해 상기 측정 구간들 중에서 가장 최근의 측정 구간의 데이터 크기에 제 1 가중치를 할당하고 상기 측정 구간들 중에서 상기 가장 최근의 측정 구간을 제외한 나머지 측정 구간들의 데이터 크기들 각각에 제 2 가중치를 할당하여 가중 합산함으로써 산출되고,
상기 제 1 가중치는 상기 제 2 가중치보다 큰 스토리지 장치. - 제 1 항에 있어서,
상기 쓰기 양 관리기는 갱신 조건이 충족될 경우 상기 데이터 양에 관한 상기 정보를 갱신하도록 더 구성되는 스토리지 장치. - 제 6 항에 있어서,
상기 갱신 조건은 상기 호스트로부터 쓰기 요청이 제공되는 경우, 상기 불휘발성 메모리들에서 새로운 메모리 블록의 할당 또는 무효 메모리 블록의 반환이 발생하는 경우, 상기 호스트로부터 상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들이 기준 데이터 양만큼 제공된 경우, 및 기준 시간이 경과한 경우 중에서 적어도 하나의 경우에 충족되는 스토리지 장치. - 제 6 항에 있어서,
상기 스트림 관리기는 상기 데이터 양에 관한 상기 갱신된 정보를 참조하여 상기 제 1 개수의 상기 요청 스트림 아이디들과 상기 제 2 개수의 상기 처리 스트림 아이디들 사이의 상기 맵핑을 변경하도록 더 구성되고,
상기 맵핑 관리기는 상기 변경된 맵핑을 관리하도록 구성되는 스토리지 장치. - 제 1 항에 있어서,
상기 불휘발성 메모리들에 포함되는 메모리 블록들 각각은 상기 처리 스트림 아이디들 중 하나에 대응하는 데이터 스트림의 쓰기 데이터를 저장하도록 구성되는 스토리지 장치. - 복수의 불휘발성 메모리들을 제어하도록 구성된 메모리 컨트롤러의 동작 방법에 있어서,
호스트로부터 대응하는 요청 스트림 아이디들을 각각 갖는 복수의 데이터 스트림들의 쓰기 데이터를 수신하는 단계;
상기 요청 스트림 아이디들을 각각 갖는 상기 데이터 스트림들 각각의 데이터 양이 변동하는지 여부를 모니터링하고, 상기 복수의 데이터 스트림들 중 제 1 요청 스트림 아이디를 갖는 제 1 데이터 스트림과 연관된 제 1 데이터 양을 결정하고, 상기 복수의 데이터 스트림들 중 제 2 요청 스트림 아이디를 갖는 제 2 데이터 스트림과 연관된 제 2 데이터 양을 결정하고, 상기 복수의 데이터 스트림들 중 제 3 요청 스트림 아이디를 갖는 제 3 데이터 스트림과 연관된 제3 데이터 양을 결정하는 단계;
상기 제 2 데이터의 양 및 상기 제 3 데이터의 양에 기초하여, 상기 제 2 데이터 스트림과 제 3 데이터 스트림을 제 2 처리 스트림 아이디를 갖는 병합된 데이터 스트림으로 병합하는 단계; 그리고
상기 병합된 데이터 스트림에 기초하여, 상기 제 1 요청 스트림 아이디는 제 1 처리 스트림 아이디에 맵핑하고, 상기 제 2, 및 제 3 요청 스트림 아이디들 모두를 상기 제 2 처리 스트림 아이디에 맵핑하는 단계를 포함하고,
제 1 및 제 2 처리 스트림 아이디들 각각은 상기 쓰기 데이터를 상기 불휘발성 메모리들에 저장하기 위해 물리 어드레스를 식별하는 방법. - 제 10 항에 있어서,
상기 제 1 데이터 양은 상기 제 2 데이터 양 또는 상기 제 3 데이터 양보다 큰 방법. - 제 10 항에 있어서,
상기 제 1 요청 스트림 아이디, 상기 제 2 요청 스트림 아이디, 상기 제 3 요청 스트림 아이디, 상기 제 1 처리 스트림 아이디, 및 상기 제 2 처리 스트림 아이디는 1보다 큰 정수인 방법. - 제 10 항에 있어서,
요청 스트림 아이디들의 개수가 처리 스트림 아이디들의 개수 보다 큰 경우, 상기 병합을 수행하는 방법. - 제 10 항에 있어서,
상기 제 1, 제 2, 및 제 3 데이터 양을 결정하는 단계는 제 1 측정 구간 동안 상기 제 1, 제 2, 및 제 3 데이터 스트림을 누적하는 단계를 포함하는 방법. - 제 10 항에 있어서,
상기 제 1, 제 2, 및 제 3 데이터 양을 결정하는 단계는 제 1, 및 제 2 측정 구간들 동안 상기 제 1, 제 2, 및 제 3 데이터 양을 합산하는 단계를 포함하는 방법. - 메모리 시스템을 동작 방법에 있어서,
호스트로부터 복수의 데이터 스트림들을 수신하는 단계;
상기 호스트로부터 상기 복수의 데이터 스트림들에 대응하는 복수의 요청 스트림 아이디들을 수신하는 단계;
상기 복수의 요청 스트림 아이디들을 각각 갖는 상기 복수의 데이터 스트림들 각각의 데이터 양이 변동하는지 여부를 모니터링하고, 측정 구간 동안 상기 데이터 스트림들 각각의 데이터 크기를 누적하는 단계;
요청 스트림 아이디들의 제1 개수가 불휘발성 메모리의 물리 어드레스를 식별하는 처리 스트림 아이디들의 제2 개수 보다 큰 경우, 상기 데이터 크기를 참조하여 상기 요청 스트림 아이디들 중 제 1 요청 스트림 아이디에 대응하는 제 1 데이터 스트림 및 상기 요청 스트림 아이디들 중 제 2 요청 스트림 아이디에 대응하는 제 2 데이터 스트림을 상기 처리 스트림 아이디들 중 제 1 처리 스트림 아이디에 대응하는 데이터 스트림으로 병합하는 단계;
상기 요청 스트림 아이디들을 각각의 처리 스트림 아이디들에 매핑하는 단계; 그리고
상기 처리 스트림 아이디에 대응하는 상기 복수의 데이터 스트림들의 쓰기 데이터를 상기 불휘발성 메모리에 저장하는 단계를 포함하고,
병합된 요청 스트림 아이디들과 요청 스트림 아이디들의 제3 개수는 상기 처리 스트림 아이디들의 상기 제2 개수와 동일한 방법. - 제 16 항에 있어서,
측정 구간 동안 상기 요청 스트림 아이디들 각각에 대응하는 데이터 양을 결정하는 단계를 더 포함하는 방법. - 제 17 항에 있어서,
상기 요청 스트림 아이디들의 상기 제1 개수가 상기 처리 스트림 아이디들의 상기 제2 개수보다 큰 경우, 상기 병합은 상기 데이터 양에 기초하는 방법. - 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150122912A KR102401600B1 (ko) | 2015-08-31 | 2015-08-31 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
US15/227,947 US10101947B2 (en) | 2015-08-31 | 2016-08-03 | Storage device configured to manage plural data streams based on data amount |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150122912A KR102401600B1 (ko) | 2015-08-31 | 2015-08-31 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170026926A KR20170026926A (ko) | 2017-03-09 |
KR102401600B1 true KR102401600B1 (ko) | 2022-05-25 |
Family
ID=58104055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150122912A KR102401600B1 (ko) | 2015-08-31 | 2015-08-31 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10101947B2 (ko) |
KR (1) | KR102401600B1 (ko) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102567224B1 (ko) * | 2016-07-25 | 2023-08-16 | 삼성전자주식회사 | 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 |
US10768829B2 (en) | 2017-02-15 | 2020-09-08 | Microsoft Technology Licensing, Llc | Opportunistic use of streams for storing data on a solid state device |
US20180321855A1 (en) | 2017-05-03 | 2018-11-08 | Samsung Electronics Co., Ltd. | Multistreaming in heterogeneous environments |
KR102398181B1 (ko) * | 2017-07-03 | 2022-05-17 | 삼성전자주식회사 | 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치 |
JP2019016320A (ja) * | 2017-07-11 | 2019-01-31 | 富士通株式会社 | ストレージ制御装置およびストレージ制御プログラム |
KR102336666B1 (ko) | 2017-09-15 | 2021-12-07 | 삼성전자 주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
KR102387935B1 (ko) | 2017-10-23 | 2022-04-15 | 삼성전자주식회사 | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 |
US10727965B2 (en) | 2017-11-21 | 2020-07-28 | Western Digital Technologies, Inc. | System and method for time stamp synchronization |
US10719100B2 (en) * | 2017-11-21 | 2020-07-21 | Western Digital Technologies, Inc. | System and method for time stamp synchronization |
US10754549B2 (en) * | 2018-02-15 | 2020-08-25 | Microsoft Technology Licensing, Llc | Append only streams for storing data on a solid state device |
US11507402B2 (en) | 2019-04-15 | 2022-11-22 | Microsoft Technology Licensing, Llc | Virtualized append-only storage device |
KR20200145151A (ko) | 2019-06-20 | 2020-12-30 | 삼성전자주식회사 | 맵핑 정보를 축약하는 플래시 변환 계층 구조를 이용하여 메모리 리소스를 관리하는 데이터 저장 장치 |
US11163482B2 (en) | 2019-06-26 | 2021-11-02 | International Business Machines Corporation | Dynamic performance-class adjustment for storage drives |
US11049570B2 (en) | 2019-06-26 | 2021-06-29 | International Business Machines Corporation | Dynamic writes-per-day adjustment for storage drives |
US11137915B2 (en) | 2019-06-27 | 2021-10-05 | International Business Machines Corporation | Dynamic logical storage capacity adjustment for storage drives |
KR20210094915A (ko) * | 2020-01-22 | 2021-07-30 | 삼성전자주식회사 | 스토리지 컨트롤러, 이를 포함하는 스토리지 장치 및 스토리지 컨트롤러의동작 방법 |
TWI756854B (zh) * | 2020-04-27 | 2022-03-01 | 慧榮科技股份有限公司 | 管理資料儲存的方法及裝置以及電腦程式產品 |
KR20210158043A (ko) | 2020-06-23 | 2021-12-30 | 삼성전자주식회사 | 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법 |
WO2022114900A1 (ko) * | 2020-11-27 | 2022-06-02 | 한국과학기술원 | 다중 명령어 큐 스토리지에서 순서 보장 단위를 정하는 방법 및 장치 |
US20230418827A1 (en) * | 2022-06-28 | 2023-12-28 | Ocient Holdings LLC | Processing multi-column streams during query execution via a database system |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421711B1 (en) * | 1998-06-29 | 2002-07-16 | Emc Corporation | Virtual ports for data transferring of a data storage system |
US6715031B2 (en) * | 2001-12-28 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | System and method for partitioning a storage area network associated data library |
JP2004227098A (ja) | 2003-01-20 | 2004-08-12 | Hitachi Ltd | 記憶デバイス制御装置の制御方法、及び記憶デバイス制御装置 |
US7568075B2 (en) | 2005-09-22 | 2009-07-28 | Hitachi, Ltd. | Apparatus, system and method for making endurance of storage media |
US8069318B2 (en) | 2005-12-01 | 2011-11-29 | Urenschi Assets Limited Liability Company | High performance data rate system for flash devices |
US20080140724A1 (en) * | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
JP2009211192A (ja) | 2008-02-29 | 2009-09-17 | Toshiba Corp | メモリシステム |
US8843691B2 (en) | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8370645B2 (en) * | 2009-03-03 | 2013-02-05 | Micron Technology, Inc. | Protection of security parameters in storage devices |
US8775770B2 (en) * | 2009-04-15 | 2014-07-08 | Blackberry Limited | Keeping file systems or partitions private in a memory device |
KR101691092B1 (ko) | 2010-08-26 | 2016-12-30 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
US8553466B2 (en) | 2010-03-04 | 2013-10-08 | Samsung Electronics Co., Ltd. | Non-volatile memory device, erasing method thereof, and memory system including the same |
US9536970B2 (en) | 2010-03-26 | 2017-01-03 | Samsung Electronics Co., Ltd. | Three-dimensional semiconductor memory devices and methods of fabricating the same |
KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
US9558247B2 (en) | 2010-08-31 | 2017-01-31 | Samsung Electronics Co., Ltd. | Storage device and stream filtering method thereof |
US20120054420A1 (en) | 2010-08-31 | 2012-03-01 | Jeonguk Kang | Storage device and stream filtering method thereof |
US20120324143A1 (en) | 2011-06-15 | 2012-12-20 | Data Design Corporation | Methods and apparatus for data access by a reprogrammable circuit module |
US8898385B2 (en) * | 2011-09-09 | 2014-11-25 | Lsi Corporation | Methods and structure for load balancing of background tasks between storage controllers in a clustered storage environment |
US9405553B2 (en) | 2012-01-30 | 2016-08-02 | International Business Machines Corporation | Processing element management in a streaming data system |
KR102074329B1 (ko) * | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US10169782B2 (en) * | 2014-11-13 | 2019-01-01 | Adobe Systems Incorporated | Targeting ads engaged by a user to related users |
-
2015
- 2015-08-31 KR KR1020150122912A patent/KR102401600B1/ko active IP Right Grant
-
2016
- 2016-08-03 US US15/227,947 patent/US10101947B2/en not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
한국공개특허 제10-2014-0133923호(2014.11.20.) 1부.* |
한국공개특허 제10-2015-0028610호(2015.03.16.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
KR20170026926A (ko) | 2017-03-09 |
US10101947B2 (en) | 2018-10-16 |
US20170060479A1 (en) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102401600B1 (ko) | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 | |
US10497444B2 (en) | Three-dimensional nonvolatile memory and related read method designed to reduce read disturbance | |
US10223011B2 (en) | Storage device including nonvolatile memory device and controller and operating method of the storage device | |
US9898207B2 (en) | Storage device | |
KR102333220B1 (ko) | 불휘발성 메모리 시스템의 동작 방법 | |
KR102285462B1 (ko) | 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템의 동작 방법 | |
KR102128406B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
US10255131B2 (en) | Storage device including nonvolatile memory device | |
KR102274276B1 (ko) | 부분 페이지 메모리 동작 | |
KR102295208B1 (ko) | 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법 | |
CN111752857B (zh) | 存储器控制器及操作存储器控制器的方法 | |
US9837163B2 (en) | Methods for managing operations in nonvolatile memory device | |
KR102517681B1 (ko) | 메모리 시스템 및 그것의 동작방법 | |
KR102140512B1 (ko) | 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법 | |
US10860455B2 (en) | Storage device for generating trace data and method of operating the same | |
KR20170051841A (ko) | 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 동작 방법 | |
KR102578188B1 (ko) | 메모리 컨트롤러 및 이의 동작 방법 | |
KR20130084846A (ko) | 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법 | |
US20200110545A1 (en) | Memory system and operating method thereof | |
KR20120124285A (ko) | 배드 블록 관리를 위한 방법 및 메모리 시스템 | |
CN110888597A (zh) | 存储设备、存储系统以及操作存储设备的方法 | |
KR20170084467A (ko) | 메모리 시스템 및 그 동작 방법 | |
US10162568B2 (en) | Method for searching matching key of storage device and server system including the same | |
KR20200068259A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
KR20200035630A (ko) | 메모리 시스템 및 그것의 동작방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |