KR20190113479A - 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 - Google Patents
가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20190113479A KR20190113479A KR1020180063730A KR20180063730A KR20190113479A KR 20190113479 A KR20190113479 A KR 20190113479A KR 1020180063730 A KR1020180063730 A KR 1020180063730A KR 20180063730 A KR20180063730 A KR 20180063730A KR 20190113479 A KR20190113479 A KR 20190113479A
- Authority
- KR
- South Korea
- Prior art keywords
- stream
- virtual
- physical
- lifetime
- virtual stream
- Prior art date
Links
- 238000013507 mapping Methods 0.000 title claims description 50
- 238000000034 method Methods 0.000 title claims description 17
- 230000015654 memory Effects 0.000 claims abstract description 95
- 239000000872 buffer Substances 0.000 description 24
- 238000012545 processing Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 230000003936 working memory Effects 0.000 description 6
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Abstract
본 발명의 실시 예에 따른 스토리지 장치는 가상 스트림 ID들을 갖는 쓰기 명령들을 수신하고, 가상 스트림 ID들을 갖는 무시 명령들을 수신하고, 그리고 쓰기 명령들 및 무시 명령들에 기초하여, 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하는 컨트롤러 및 물리 스트림 ID들에 따라 컨트롤러에 의해 접근되는 불휘발성 메모리들을 포함할 수 있고, 컨트롤러는 쓰기 데이터의 수명에 기초하여, 가상 스트림 ID들과 물리 스트림 ID들을 맵핑할 수 있다.
Description
본 발명은 스토리지 장치 및 그것의 동작 방법에 관한 것으로, 좀 더 자세하게는 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법에 관한 것이다.
스토리지 장치는 불휘발성 저장 매체로서, 스토리지 장치에 저장된 데이터는 전원 공급에 관계없이 영구적으로 혹은 반영구적으로 보존될 수 있다. 스토리지 장치는 기계적으로 동작하는 대신에 반도체 메모리와 같이 전기적으로 동작할 수 있다. 반도체 메모리를 포함하는 스토리지 장치(예를 들어, SSD(solid state drive)가 주로 사용되고 있다.
스토리지 장치를 사용하는 호스트는 어플리케이션에 따라 다양한 종류의 데이터를 생성할 수 있다. 호스트는 스토리지 장치의 동작을 개선하기 위해 데이터와 함께 데이터에 관한 정보를 스토리지 장치에 제공할 수 있다. 그러나, 스토리지 장치의 종류, 하드웨어적인 제약 등으로 인하여, 호스트가 제공할 수 있는 데이터에 관한 정보가 제한되는 문제점이 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는, 가상 스트림 ID(identifier)들을 갖는 쓰기 명령들을 수신하고, 상기 가상 스트림 ID들을 갖는 무시 명령들을 수신하고, 그리고 상기 쓰기 명령들 및 상기 무시 명령들에 기초하여, 상기 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하는 컨트롤러, 및 물리 스트림 ID들에 따라 상기 컨트롤러에 의해 접근되는 불휘발성 메모리들을 포함할 수 있고, 상기 컨트롤러는 상기 쓰기 데이터의 상기 수명에 기초하여, 상기 가상 스트림 ID들과 상기 물리 스트림 ID들을 맵핑(mapping)할 수 있다.
본 발명의 다른 실시 예에 따른 스토리지 장치는, 불휘발성 메모리들, 및 제 1 물리 스트림 ID(identifier)와 제 2 물리 스트림 ID에 따라 상기 불휘발성 메모리들을 접근하는 컨트롤러를 포함할 수 있고, 상기 컨트롤러는 가상 스트림 ID들을 갖는 쓰기 명령들을 수신하고, 상기 가상 스트림 ID들을 갖는 무시 명령들을 수신하고, 상기 쓰기 명령들 및 상기 무시 명령들에 기초하여, 상기 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하고, 그리고 상기 쓰기 데이터의 상기 수명과 상기 제 1 물리 스트림 ID가 할당된 제 1 블록 데이터의 수명간의 제 1 차이 및 상기 쓰기 데이터의 상기 수명과 상기 제 2 물리 스트림 ID가 할당된 제 2 블록 데이터의 수명간의 제 2 차이에 기초하여, 상기 쓰기 데이터와 상기 제 1 블록 데이터 및 상기 제 2 블록 데이터 중 하나를 클러스터링(clustering)할 수 있다.
본 발명의 또 다른 실시 예에 따른 스토리지 장치의 동작 방법은 호스트로부터 가상 스트림 ID(identifier)들을 갖는 쓰기 명령들을 수신하는 단계, 상기 호스트로부터 상기 가상 스트림 ID들을 갖는 무시 명령들을 수신하는 단계, 상기 쓰기 명령들과 상기 무시 명령들에 기초하여 상기 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하는 단계, 상기 쓰기 데이터의 상기 수명에 기초하여 상기 가상 스트림 ID들과 물리 스트림 ID들을 맵핑하는 단계, 및 상기 가상 스트림 ID들과 상기 물리 스트림 ID들의 관계를 나타내는 맵핑 테이블에 기초하여, 상기 쓰기 데이터를 상기 물리 스트림 ID들 중 하나에 대응하는 불휘발성 메모리들의 블록들로 프로그램하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는 데이터의 수명에 기초하여 가상 스트림들과 물리 스트림들을 맵핑하고 데이터를 저장할 수 있다. 따라서, 스토리지 장치의 가비지 컬렉션의 효율이 향상될 수 있다. 또한, 스토리지 장치와 통신하는 호스트의 이식성 또는 호환성이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따라, 호스트의 가상 스트림들과 스토리지 장치의 물리 스트림들의 맵핑을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 다른 실시 예에 따라, 호스트의 가상 스트림들과 스토리지 장치의 물리 스트림들의 맵핑을 예시적으로 보여주는 도면이다.
도 4 및 도 5는 본 발명의 실시 예에 따른 가상 스트림 수명 식별부가 쓰기 데이터의 수명을 판별하는 동작을 예시적으로 보여주는 도면들이다.
도 6은 도 1 내지 도 3의 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 7은 도 1 내지 도 3의 스토리지 장치의 구성을 예시적으로 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법을 예시적으로 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따라, 호스트의 가상 스트림들과 스토리지 장치의 물리 스트림들의 맵핑을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 다른 실시 예에 따라, 호스트의 가상 스트림들과 스토리지 장치의 물리 스트림들의 맵핑을 예시적으로 보여주는 도면이다.
도 4 및 도 5는 본 발명의 실시 예에 따른 가상 스트림 수명 식별부가 쓰기 데이터의 수명을 판별하는 동작을 예시적으로 보여주는 도면들이다.
도 6은 도 1 내지 도 3의 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 7은 도 1 내지 도 3의 스토리지 장치의 구성을 예시적으로 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법을 예시적으로 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 장치를 보여주는 블록도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 쉽게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다.
호스트(100)는 데이터를 스토리지 장치(200, 예를 들어, SSD(solid state drive))에 저장하기 위해 스트림에 따라 데이터를 스토리지 장치(200)로 전송할 수 있다. 호스트(100)는 로그 파일, 메타 파일, 미디어 파일 등과 같은 데이터의 유형에 따라 데이터에 스트림 ID(identifier)를 할당할 수 있다. 예를 들어, 파일의 수명에 따라, 로그 파일은 핫 데이터(hot data)로, 메타 파일은 웜 데이터(warm data)로, 그리고 미디어 파일은 콜드 데이터(cold data)로 지칭될 수 있다. 호스트(100)는 데이터의 유형에 따라 상이한 스트림 ID들을 데이터 집합에 할당하고 멀티 스트림 데이터 집합을 스토리지 장치(200)로 전송할 수 있다. 예를 들어, 호스트(100)는 로그 파일에 해당하는 데이터에 스트림 ID #1을 할당할 수 있고 미디어 파일에 해당하는 데이터에 스트림 ID #2를 할당할 수 있다. 호스트(100)는 수명이 짧은 핫 데이터와 수명이 긴 콜드 데이터가 스토리지 장치(200)의 동일한 위치(예를 들면, 메모리 블록들)에 같이 저장되지 않도록, 스트림 ID를 데이터에 할당할 수 있고 스트림에 따라 데이터를 전송할 수 있다.
실시 예에 있어서, 호스트(100)는 스트림 ID를 갖는 쓰기 명령(write command, WCMD)과 스트림 ID를 갖는 무시 명령(discard command, DCMD)을 스토리지 장치(200)로 각각 전송할 수 있다. 쓰기 명령은 데이터를 스토리지 장치(200)에 프로그램하기 위해 호스트(100)에서 스토리지 장치(200)로 전송될 수 있다. 무시 명령은 스토리지 장치(200)에 저장된 데이터가 무효(invalid)로 되었음을 나타내기 위해 호스트(100)에서 스토리지 장치(200)로 전송될 수 있다. 예를 들어, 무시 명령은 트림(trim) 명령으로도 지칭될 수도 있다.
실시 예에 있어서, 호스트(100)는 하드웨어 제약 또는 하드웨어 리소스(resource)로 인해 스토리지 장치(200)가 지원할 수 있는 스트림들(이하, 물리 스트림들(physical streams)로 지칭)의 개수와 관계없이 스트림들(이하, 가상 스트림들(virtual streams)로 지칭)에 따라 멀티 스트림 데이터 세트를 스토리지 장치(200)로 전송할 수 있다. 예를 들어, 호스트(100)는 쓰기 명령 혹은 무시 명령에 할당된 스트림 ID 필드의 크기에 따라 65536(=216)개의 가상 스트림 ID들을 멀티 스트림 데이터 세트에 할당할 수 있다. 호스트(100)가 할당할 수 있는 가상 스트림 ID들의 개수는 스토리지 장치(200)가 지원할 수 있는 물리 스트림 ID들의 개수보다 클 수 있다. 다만, 호스트(100)가 할당할 수 있는 가상 스트림 ID들의 개수는 상술한 예시로 한정되지 않는다. 그리고, 멀티 스트림 데이터 세트는 서로 다른 가상 스트림 ID들에 각각 대응하는 데이터의 복수 형태를 나타내기 위한 용어이고, 멀티 데이터 스트림들 또는 복수의 데이터 스트림들로 지칭될 수 있다.
호스트(100)는 프로세싱 유닛(110), 호스트 메모리(120), 및 인터페이스 회로(130)를 포함할 수 있다. 프로세싱 유닛(110)은 호스트 메모리(120)에 로드된 다양한 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버 등)를 실행할 수 있다. 프로세싱 유닛(110)은 운영 체제(OS) 또는 응용 프로그램들(application programs)을 실행할 수 있다. 프로세싱 유닛(110)은 동종 멀티-코어 프로세서(homogeneous multi-core processor)들 또는 이종 멀티-코어 프로세서(heterogeneous multi-core processor)들을 포함할 수 있다. 예를 들어, 프로세싱 유닛(110)은 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), 및 NPU(neural processing unit) 중 적어도 하나를 포함할 수 있다.
호스트 메모리(120)에는 스토리지 시스템(10)을 구동하기 위한 응용 프로그램, 파일 시스템, 장치 드라이버 등이 로드(load)될 수 있다. 도 1에서 도시된 바에 한정되지 않고, 호스트 메모리(120)에는 스토리지 시스템(10)이 구동되기 위한 다양한 소프트웨어들이 로드될 수 있다. 호스트 메모리(120)에는 프로세싱 유닛(110)에서 처리할 응용 프로그램이나 데이터들이 로드될 수 있다. 예를 들어, 스토리지 장치(200)로 전달될 명령들에 대한 제출 큐 및 완료 큐를 관리하기 위한 입출력 스케줄러(미도시)가 호스트 메모리(120)에 로드될 수 있다.
인터페이스 회로(130)는 호스트(100)와 스토리지 장치(200)간의 물리적인 연결들을 제공할 수 있다. 예를 들어, 인터페이스 회로(130)는 호스트(100)에서 생성되는 다양한 요청들에 대응하는 명령들, 어드레스들, 데이터 세트 등을 스토리지 장치(200)와의 인터페이싱 방식으로 변환한다. 예를 들어, 인터페이스 회로(130)는 USB(universal serial bus), SATA(serial AT attachment), SAS(serial attached SCSI), HSIC(high speed interchip), SCSI(small computer system interface), PCI(peripheral component interconnection), PCIe(PCI express), NVMe(nonvolatile memory express), UFS(universal flash storage), SD(secure digital), MMC(multimedia card), eMMC(embedded MMC) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 스토리지 장치(200)와 통신하도록 구성될 수 있다.
스토리지 장치(200)는 호스트(100)로부터 제공되는 명령들을 처리할 수 있다. 스토리지 장치(200)는 호스트(100)로부터 가상 스트림 ID를 갖는 쓰기 명령, 가상 스트림 ID를 갖는 무시 명령, 및 멀티 스트림 데이터 세트를 수신할 수 있다. 전술한대로, 호스트(100)는 스토리지 장치(200)가 지원할 수 있는 물리 스트림 ID들과 관계없이 가상 스트림 ID들을 데이터 세트에 할당할 수 있다. 스토리지 장치(200)의 물리 스트림 ID들의 개수는 호스트(100)의 가상 스트림 ID들의 개수보다 작을 수 있다. 그럼에도 불구하고, 스토리지 장치(200)는 수명과 같은 데이터의 특성에 기초하여 가상 스트림 ID들과 물리 스트림 ID들을 맵핑(mapping)할 수 있고 맵핑 결과에 기초하여 멀티 스트림 데이터 세트를 저장할 수 있다. 스토리지 장치(200)는 컨트롤러(210), 버퍼 메모리(220), 및 불휘발성 메모리 장치(230)를 포함할 수 있다.
컨트롤러(210)는 가상 스트림 수명 식별부(virtual stream lifetime identifier, 211) 및 가상 스트림 클러스터링 관리부(virtual stream clustering manager, 212)를 포함할 수 있다. 가상 스트림 수명 식별부(211)는 가상 스트림 ID들을 갖는 쓰기 명령들과 가상 스트림 ID들을 갖는 무시 명령들에 기초하여, 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별할 수 있다. 예를 들어, 가상 스트림 수명 식별부(211)는 FPGA(field programmable gate array), ASIC(application specific integrated circuits) 등과 같은 회로로서 구현되거나 프로세서와 프로세서에 의해 수행되는 소프트웨어의 조합으로서 구현될 수 있다.
가상 스트림 클러스터링 관리부(212)는 가상 스트림 수명 식별부(211)에 의해 판별된 쓰기 데이터의 수명에 기초하여, 가상 스트림들과 물리 스트림들을 맵핑할 수 있다. 좀 더 구체적으로, 가상 스트림 클러스터링 관리부(212)는 쓰기 데이터의 수명에 기초하여, 가상 스트림 ID들과 물리 스트림 ID들을 맵핑할 수 있다. 예를 들어, 가상 스트림 클러스터링 관리부(212)는 FPGA, ASIC 등과 같은 회로로서 구현되거나 프로세서와 프로세서에 의해 수행되는 소프트웨어의 조합으로서 구현될 수 있다. 또한, 가상 스트림 수명 식별부(211) 및 가상 스트림 클러스터링 관리부(212)를 포함하는 컨트롤러(210)는 SoC(system on chip)으로서 구현될 수 있다.
버퍼 메모리(220)는 호스트(100)로부터 수신된 데이터 또는 불휘발성 메모리 장치(230)로부터 수신된 데이터를 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(220)는 가상 스트림 수명 식별부(211)에 의해 판별된 쓰기 데이터의 수명이 기록된 타임스탬프(timestamp), 수명을 판별하기 위한 정보, 가상 스트림 ID들과 수명들과의 관계를 나타내는 맵핑 테이블, 가상 스트림 클러스터링 관리부(212)에 의해 생성된 가상 스트림 ID들과 물리 스트림 ID들의 관계를 나타내는 맵핑 테이블, 및 호스트(100)의 논리 어드레스들(logical addresses, 또는 논리 블록 어드레스들(LBAs))과 불휘발성 메모리 장치(230)의 물리 어드레스들의 관계를 나타내는 맵핑 테이블과 같은 메타 데이터를 저장할 수 있다. 버퍼 메모리(220)는 DRAM(dynamic random access memory) 셀, SRAM(static random access memory) 셀 등과 같은 휘발성 메모리 셀을 포함할 수 있다.
불휘발성 메모리 장치(230)는 컨트롤러(210)의 제어에 따라 멀티 스트림 데이터 세트를 저장할 수 있다. 불휘발성 메모리 장치(230)는 물리 스트림 ID들에 따라 컨트롤러(210)에 의해 접근될 수 있다. 불휘발성 메모리 장치(230)는 하나의 물리 스트림 ID가 할당된 데이터와 다른 하나의 물리 스트림 ID가 할당된 데이터를 서로 다른 영역들(예를 들면, 블록들)에 저장할 수 있다.
불휘발성 메모리 장치(230)는 제 1 채널(CH1)을 통해 컨트롤러(210)와 통신하는 불휘발성 메모리들, 제 2 채널(CH2)을 통해 컨트롤러(210)와 통신하는 불휘발성 메모리들, 및 제 3 채널(CH3)을 통해 컨트롤러(210)와 통신하는 제 3 불휘발성 메모리들을 포함할 수 있다. 불휘발성 메모리 장치(230)와 컨트롤러(210)간의 채널들의 개수는 도 1에서 도시된 바에 한정되지 않는다. 불휘발성 메모리들 각각은 낸드 플래시 메모리 셀, 노어 플래시 메모리 셀, RRAM(resistive random access memory) 셀, FRAM(ferroelectric random access memory) 셀, PRAM(phase change random access memory) 셀, TRAM(thyristor random access memory) 셀, MRAM(magnetic random access memory) 셀 등과 같은 불휘발성 메모리 셀을 포함할 수 있다. 이하의 설명에서, 제 1 내지 제 3 불휘발성 메모리들 각각은 낸드 플래시 메모리 셀을 포함하는 것으로 가정한다.
실시 예에 있어서, 호스트(100)는 동일하거나 유사한 특성들을 갖는 하나의 가상 스트림의 데이터를 스토리지 장치(200)로 전송할 수 있다. 호스트(100)는 서로 다른 특성들을 갖는 멀티 가상 스트림들의 멀티 스트림 데이터 세트를 스토리지 장치(200)로 전송할 수 있다. 여기서, 특성들은 데이터의 수명을 포함할 수 있다. 호스트(100)는 스토리지 장치(200)가 지원할 수 있는 물리 스트림 ID들의 개수와 관계없이 가상 스트림 ID들을 데이터 세트에 할당할 수 있다. 컨트롤러(210)는 가상 스트림의 쓰기 데이터의 수명을 판별할 수 있다. 컨트롤러(210)는 수명에 기초하여 물리 스트림들보다 많은 가상 스트림들을 물리 스트림들에 할당할 수 있다. 즉, 컨트롤러(210)는 수명에 기초하여 가상 스트림들과 물리 스트림들을 맵핑할 수 있다.
좀 더 구체적으로, 컨트롤러(210)는 서로 동일하거나 유사한 제 1 수명들을 갖는 제 1 물리 스트림의 제 1 데이터 세트를 불휘발성 메모리 장치(230)의 적어도 하나의 제 1 블록에 저장할 수 있다. 컨트롤러(210)는 서로 동일하거나 유사한 제 2 수명들을 갖는 제 2 물리 스트림의 제 2 데이터 세트를 불휘발성 메모리 장치(230)의 적어도 하나의 제 2 블록에 저장할 수 있다. 여기서, 블록은 불휘발성 메모리 장치(230)의 소거(erase) 단위에 대응하는 메모리 셀들을 포함할 수 있다. 전술한대로, 제 1 수명들은 서로 동일하거나 유사하고 그리고 제 2 수명들은 서로 동일하거나 유사하다. 반면에, 제 1 수명들과 제 2 수명들은 서로 다르다. 제 1 수명들에 따른 시간이 경과하면, 제 1 블록에 저장된 제 1 데이터 세트는 함께 소거될 수 있다. 제 2 수명들에 따른 시간이 경과하면, 제 2 블록에 저장된 제 2 데이터 세트는 함께 소거될 수 있다. 즉, 컨트롤러(210)는 물리 스트림들에 기초하여 수명들이 서로 다른 데이터 세트를 동일한 블록에 저장하지 않을 수 있다.
컨트롤러(210)는 서로 다른 물리 스트림들의 데이터 세트를 서로 다른 블록들에 저장하고 관리할 수 있다. 상술한 컨트롤러(210)의 동작에 의해, 페이지 내 무효 데이터를 소거하고 프리(free) 페이지를 확보하기 위한 가비지 컬렉션(garbage collection)의 효율이 향상될 수 있다. 또한, 컨트롤러(210)는 호스트(100)가 수많은 가상 스트림 ID들을 데이터 세트에 할당함에도 불구하고 동일하거나 유사한 수명들을 갖는 가상 스트림들의 데이터 세트를 동일한 블록에 저장할 수 있다. 호스트(100)가 스토리지 장치(200)의 물리 스트림들의 개수와 관계없이 가상 스트림들의 데이터 세트를 스토리지 장치(200)로 전송할 수 있으므로, 호스트(100)의 이식성(portability) 또는 호환성(compatibility)이 향상될 수 있다.
도 2는 본 발명의 실시 예에 따라, 호스트의 가상 스트림들과 스토리지 장치의 물리 스트림들의 맵핑을 예시적으로 보여주는 도면이다. 호스트(100)는 제 1 내지 제 4 가상 스트림 ID들(VSIDs #1, #2, #3, #4)이 각각 할당된 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)를 스토리지 장치(200)로 전송할 수 있다. 다만, 호스트(100)의 가상 스트림들의 개수는 도 2에서 도시된 것에 한정되지 않는다. 스토리지 장치(200)는 제 1 내지 제 4 가상 스트림들보다 적은 제 1 및 제 2 물리 스트림들을 지원할 수 있다. 다만, 스토리지 장치(200)가 지원하는 물리 스트림들의 개수는 도 2에서 도시된 것에 한정되지 않는다.
호스트(100)는 제 1 내지 제 4 가상 스트림 ID들을 각각 갖는 쓰기 명령들을 스토리지 장치(200)로 전송할 수 있다. 호스트(100)는 제 1 내지 제 4 가상 스트림 ID들을 각각 갖는 무시 명령들을 스토리지 장치(200)로 전송할 수 있다. 호스트(100)는 제 1 내지 제 4 가상 스트림 ID들을 각각 갖는 겹쳐 쓰기(overwrite) 명령들을 스토리지 장치(200)로 전송할 수 있다. 여기서, 겹쳐 쓰기 명령은 이전의 쓰기 명령에 포함된 논리 어드레스 범위를 갖는 쓰기 명령일 수 있다. 즉, 겹쳐 쓰기 명령도 쓰기 명령이다.
호스트(100)로부터 전송되는 상술한 명령들에 따라, 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)의 수명들이 결정될 수 있다. 예를 들어, 제 1 및 제 3 쓰기 데이터(WDATA1, WDATA3)의 수명들은 LT1로 서로 동일할 수 있고 제 2 및 제 4 쓰기 데이터(WDATA2, WDATA4)의 수명들은 LT2로 서로 동일할 수 있다. 도 2에서 도시된 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)의 길이들 각각은 수명을 나타낼 수 있다. 다만, 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)의 수명들은 도 2에서 도시된 것에 한정되지 않는다.
가상 스트림 수명 식별부(211)는 제 1 내지 제 4 가상 스트림들에 대한 쓰기 명령들, 겹쳐 쓰기 명령들, 및 무시 명령들에 기초하여 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)의 수명들을 판별할 수 있다. 예를 들어, 가상 스트림 수명 식별부(211)는 제 1 내지 제 4 가상 스트림 ID들과 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)의 수명들의 관계를 나타내는 맵핑 테이블(VS2LT)을 생성하고 버퍼 메모리(220)에 저장할 수 있다. 물론, 맵핑 테이블(VS2LT)의 크기는 호스트(100)에 의해 생성되는 가상 스트림들의 개수에 따라 변경될 수 있다.
가상 스트림 클러스터링 관리부(212)는 가상 스트림의 수명에 관한 맵핑 테이블(VS2LT)에 기초하여 제 1 내지 제 4 가상 스트림들과 제 1 및 제 2 물리 스트림들을 맵핑할 수 있다. 예를 들어, 가상 스트림 클러스터링 관리부(212)는 가상 스트림 ID들과 물리 스트림 ID들의 관계를 나타내는 맵핑 테이블(VS2PS)을 생성하고 버퍼 메모리(220)에 저장할 수 있다. 또한, 도 2를 참조하면, 맵핑 테이블(VS2PS)은 물리 스트림 ID들과 물리 스트림 ID들이 할당되는 쓰기 데이터의 수명들의 관계를 더 나타낼 수 있다. 물론, 맵핑 테이블(VS2PS)의 크기는 호스트(100)에 의해 생성되는 가상 스트림들의 개수에 따라 변경될 수 있다.
가상 스트림 클러스터링 관리부(212)는 동일한 수명(LT1)을 갖는 제 1 및 제 3 가상 스트림들을 제 1 물리 스트림에 할당할 수 있다. 가상 스트림 클러스터링 관리부(212)는 제 1 및 제 3 가상 스트림 ID들을 제 1 물리 스트림 ID로 맵핑할 수 있다. 가상 스트림 클러스터링 관리부(212)는 제 1 가상 스트림 ID가 할당된 제 1 쓰기 데이터와 제 3 가상 스트림 ID가 할당된 제 3 쓰기 데이터를 클러스터링 또는 그룹핑(grouping)할 수 있다.
유사하게, 가상 스트림 클러스터링 관리부(212)는 동일한 수명(LT2)를 갖는 제 2 및 제 4 가상 스트림들을 제 2 물리 스트림에 할당할 수 있다. 가상 스트림 클러스터링 관리부(212)는 제 2 및 제 4 가상 스트림 ID들을 제 2 물리 스트림 ID로 맵핑할 수 있다. 가상 스트림 클러스터링 관리부(212)는 제 2 가상 스트림 ID가 할당된 제 2 쓰기 데이터와 제 4 가상 스트림 ID가 할당된 제 4 쓰기 데이터를 클러스터링할 수 있다.
컨트롤러(210)는 맵핑 테이블(VS2PS)에 기초하여 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4) 각각을 제 1 및 제 2 물리 스트림 ID들 중 어느 하나에 대응하는 불휘발성 메모리 장치(230)의 블록들로 프로그램할 수 있다. 예를 들어, 컨트롤러(210)는 제 1 및 제 3 쓰기 데이터(WDATA1, WDATA3)를 제 1 물리 스트림 ID에 대응하는 제 1 블록들(BLK1s)로 프로그램할 수 있다. 유사하게, 컨트롤러(210)는 제 2 및 제 3 쓰기 데이터(WDATA2, WDATA4)를 제 2 물리 스트림 ID에 대응하는 제 2 블록들(BLK2s)로 프로그램할 수 있다. 블록들에 프로그램된 쓰기 데이터는 블록 데이터로 지칭될 수 있다.
프로그램 이후에, 컨트롤러(210)는 무시 명령들 또는 겹쳐 쓰기 명령들에 의해 제 1 및 제 3 쓰기 데이터(WDATA1, WDATA3)가 무효화되고 수명(LT1)이 경과하면, 제 1 블록들(BLK1s)을 소거할 수 있다. 유사하게, 컨트롤러(210)는 무시 명령들 또는 겹쳐 쓰기 명령들에 의해 제 2 및 제 4 쓰기 데이터(WDATA2, WDATA4)가 무효화되고 수명(LT2)이 경과하면, 제 2 블록들(BLK2s)을 소거할 수 있다. 호스트(100)의 무시 명령들 또는 겹쳐 쓰기 명령들에 의해 쓰기 데이터가 무효화되면, 무효화된 데이터는 이전 데이터(old data)이므로, 호스트(100)는 더 이상 무효화된 데이터를 컨트롤러(210)에 요청하지 않을 수 있고 컨트롤러(210)는 수명이 경과하면 무효화된 데이터를 소거할 수 있다.
도시된 바와 달리, 제 1 및 제 3 쓰기 데이터(WDATA1, WDATA3)의 수명들은 서로 동일하지는 않지만 서로 유사할 수 있고 그리고 제 2 및 제 4 쓰기 데이터(WDATA2, WDATA4)의 수명들은 서로 동일하지는 않지만 서로 유사할 수 있다. 이러한 경우에도, 제 1 및 제 3 가상 스트림 ID들은 가상 스트림 클러스터링 관리부(212)에 의해 제 1 물리 스트림 ID로 맵핑될 수 있고 그리고 제 2 및 제 4 가상 스트림 ID들은 가상 스트림 클러스터링 관리부(212)에 의해 제 2 물리 스트림 ID로 맵핑될 수 있다.
도 3은 본 발명의 다른 실시 예에 따라, 호스트의 가상 스트림들과 스토리지 장치의 물리 스트림들의 맵핑을 예시적으로 보여주는 도면이다. 도 3은 도 2를 참조하여 설명될 것이다. 도 3에서, 설명의 간략함을 위해, 컨트롤러(210), 가상 스트림 수명 식별부(211), 및 가상 스트림 클러스터링 관리부(212)만 도시되었다.
우선, 도 2에서 전술한대로, 도 2의 제 1 내지 제 4 가상 스트림들과 제 1 및 제 2 물리 스트림들이 맵핑되고 그리고 제 1 내지 제 4 쓰기 데이터(WDATA1~WDATA4)가 제 1 블록들(BLK1s) 및 제 2 블록들(BLK2s)에 저장되거나 프로그램될 수 있다. 그 다음, 도 3에서, 호스트(100)가 제 5 및 제 6 가상 스트림 ID들(VSIDs #5, #6)이 각각 할당된 제 5 및 제 6 쓰기 데이터(WDATA5, WDATA6)를 스토리지 장치(200)로 전송하는 것으로 가정한다. 그리고, 제 5 쓰기 데이터(WDATA5)의 수명은 제 1 및 제 3 쓰기 데이터(WDATA1, WDAT3)의 수명들인 LT1과 유사한 LT3로 가정하고 제 6 쓰기 데이터(WDATA6)의 수명은 제 2 및 제 4 쓰기 데이터(WDATA2, WDAT4)의 수명들인 LT2와 유사한 LT4로 가정한다.
가상 스트림 수명 식별부(211)는 제 5 및 제 6 가상 스트림들에 대한 쓰기 명령들, 겹쳐 쓰기 명령들, 및 무시 명령들에 기초하여 제 5 및 제 6 쓰기 데이터(WDATA5, WDATA6)의 수명들을 더 판별할 수 있다. 예를 들어, 가상 스트림 수명 식별부(211)는 제 5 및 제 6 가상 스트림 ID들과 제 5 및 제 6 쓰기 데이터(WDATA5, WDATA6)의 수명들의 관계를 도 2의 맵핑 테이블(VS2LT)에 더 나타낼 수 있다. 가상 스트림 수명 식별부(211)는 맵핑 테이블(VS2LT)을 업데이트하고 버퍼 메모리(220)에 저장할 수 있다.
가상 스트림 클러스터링 관리부(212)는 제 5 가상 스트림의 수명(LT3)과 제 1 및 제 2 물리 스트림들의 수명들(LT1, LT2) 각각을 비교할 수 있다. 가상 스트림 클러스터링 관리부(212)는 제 5 쓰기 데이터(WDATA5)의 수명(LT3)과 제 1 및 제 2 물리 스트림 ID들 각각이 할당된 블록 데이터의 수명을 비교할 수 있다. 유사하게, 가상 스트림 클러스터링 관리부(212)는 제 6 가상 스트림의 수명(LT4)과 제 1 및 제 2 물리 스트림들의 수명들(LT1, LT2) 각각을 비교할 수 있다. 가상 스트림 클러스터링 관리부(212)는 제 6 쓰기 데이터(WDATA6)의 수명(LT4)과 제 1 및 제 2 물리 스트림 ID들 각각이 할당된 블록 데이터의 수명을 비교할 수 있다.
가상 스트림 클러스터링 관리부(212)는 비교 결과에 기초하여 제 5 및 제 6 가상 스트림들 각각을 제 1 또는 제 2 물리 스트림들에 할당할 수 있다. 가상 스트림 클러스터링 관리부(212)는 비교 결과에 기초하여 제 5 및 제 6 가상 스트림 ID들 각각과 제 1 또는 제 2 물리 스트림 ID들을 맵핑할 수 있다. 만약, 스토리지 장치(200)가 지원하는 물리 스트림들의 개수가 n이면(n은 2 이상의 정수), 가상 스트림 클러스터링 관리부(212)는 비교 결과에 기초하여, 제 5 및 제 6 가상 스트림들 각각을 n개 물리 스트림들 중 어느 하나에 할당할 수 있다. 가상 스트림 클러스터링 관리부(212)는 비교 결과에 기초하여, 제 5 및 제 6 가상 스트림 ID들 각각과 n개 물리 스트림 ID들 중 어느 하나를 맵핑할 수 있다.
가상 스트림 클러스터링 관리부(212)는 제 5 가상 스트림의 제 5 쓰기 데이터(WDATA5)의 수명(LT3)과 제 1 물리 스트림 ID가 할당된 블록 데이터의 수명간의 차이와 제 5 가상 스트림의 제 5 쓰기 데이터(WDATA5)의 수명(LT3)과 제 2 물리 스트림 ID가 할당된 블록 데이터의 수명간의 차이 중 어느 것이 더 작은지를 판별할 수 있다. 여기서, 차이는 절대 값일 수 있다. 블록 데이터의 수명은 물리 스트림 ID에 대응하는 블록들에 저장되거나 프로그램된 데이터 또는 데이터 세트의 수명(들)의 평균일 수 있다. 전술한 가정에 따라, 제 1 물리 스트림 ID가 할당된 블록들에는 제 1 및 제 3 쓰기 데이터(WDATA1, WDATA3)가 프로그램되므로, 제 1 물리 스트림 ID가 할당된 블록들에 프로그램된 데이터 세트의 수명은 LT1이다. 제 2 물리 스트림 ID가 할당된 블록들에는 제 2 및 제 4 쓰기 데이터(WDATA2, WDATA4)가 프로그램되므로, 제 2 물리 스트림 ID가 할당된 블록들에 프로그램된 데이터 세트의 수명은 LT2이다. 수명(LT3)은 수명(LT1)과 유사하고 수명(LT2)과는 다르다. 수명(LT3)과 수명(LT1)간의 차이는 수명(LT3)과 수명(LT2)간의 차이보다 작다.
따라서, 가상 스트림 클러스터링 관리부(212)는 더 작은 수명 차이에 따라 제 5 가상 스트림을 제 2 물리 스트림이 아닌 제 1 물리 스트림에 할당할 수 있고 제 5 가상 스트림 ID와 제 1 물리 스트림 ID를 맵핑할 수 있다. 유사한 방식으로, 가상 스트림 클러스터링 관리부(212)는 더 작은 수명 차이에 따라 제 6 가상 스트림을 제 1 물리 스트림이 아닌 제 2 물리 스트림에 할당할 수 있고 제 6 가상 스트림 ID와 제 2 물리 스트림 ID를 맵핑할 수 있다. 가상 스트림 클러스터링 관리부(212)는 맵핑 테이블(VS2PS)을 업데이트하고 버퍼 메모리(220)에 저장할 수 있다.
가상 스트림 클러스터링 관리부(212)는 상술한 맵핑 이후에, 제 1 가상 스트림 ID가 할당된 제 1 쓰기 데이터, 제 3 가상 스트림 ID가 할당된 제 3 쓰기 데이터, 및 제 5 가상 스트림 ID가 할당된 제 5 쓰기 데이터를 클러스터링할 수 있다. 전술한 가정에 따라, 제 1 쓰기 데이터와 제 3 쓰기 데이터는 제 1 블록들에 프로그램되었으므로 블록 데이터로 지칭될 수도 있다. 유사하게, 가상 스트림 클러스터링 관리부(212)는 상술한 맵핑 이후에, 제 2 가상 스트림 ID가 할당된 제 2 쓰기 데이터, 제 4 가상 스트림 ID가 할당된 제 4 쓰기 데이터, 및 제 6 가상 스트림 ID가 할당된 제 6 쓰기 데이터를 클러스터링할 수 있다. 전술한 가정에 따라, 제 2 쓰기 데이터와 제 4 쓰기 데이터는 제 2 블록들에 프로그램되었으므로 블록 데이터로 지칭될 수 있다. 가상 스트림 클러스터링 관리부(212)는 쓰기 데이터의 수명과 물리 스트림 ID들 각각이 할당된 블록 데이터의 수명간의 차이를 판별하고, 차이에 기초하여 쓰기 데이터와 블록 데이터를 클러스터링할 수 있다.
실시 예에 있어서, 가상 스트림 클러스터링 관리부(212)는 기준 시간(예를 들어, 10분)이 경과할 때마다 맵핑 테이블(VS2PS)을 업데이트할 수 있다. 다른 실시 예에 있어서, 가상 스트림 클러스터링 관리부(212)는 수신된 무시 명령들의 개수가 기준 값을 초과할 때마다 맵핑 테이블(VS2PS)을 업데이트할 수 있다.
실시 예에 있어서, 스토리지 장치(200)가 지원하는 물리 스트림들의 개수가 n일 수 있다(n은 2 이상의 정수). 이 경우, 가상 스트림 클러스터링 관리부(212)는 임의의 가상 스트림의 쓰기 데이터의 수명과 제 1 내지 제 n 물리 스트림 ID들이 할당된 블록 데이터 세트의 수명들간의 차이들 중 어느 것이 가장 작은지를 판별할 수 있다. 가상 스트림 클러스터링 관리부(212)는 최소 차이에 따라 가상 스트림들과 물리 스트림들을 맵핑할 수 있다. 예를 들어, 가상 스트림 클러스터링 관리부(212)는 K-평균 클러스터링 알고리즘(K-means clustering algorithm)에 기초하여 가상 스트림들과 물리 스트림들을 맵핑할 수 있다.
실시 예에 있어서, 제 5 및 제 6 가상 스트림들이 제 1 및 제 2 물리 스트림들에 맵핑된 이후에 가상 스트림 클러스터링 관리부(212)는 새로운 가상 스트림의 쓰기 데이터에 대한 비교 연산을 수행할 수 있다. 이 경우, 가상 스트림 클러스터링 관리부(212)는 제 1 물리 스트림 ID가 할당된 제 1 블록 데이터(즉, 제 1, 제 3, 및 제 5 쓰기 데이터(WDATA1, WDATA3, WDATA5))의 수명들의 평균과 새로운 가상 스트림의 쓰기 데이터의 수명을 비교할 수 있다. 유사하게, 가상 스트림 클러스터링 관리부(212)는 제 2 물리 스트림 ID가 할당된 제 2 블록 데이터(즉, 제 2, 제 4, 및 제 6 쓰기 데이터(WDATA2, WDATA4, WDATA6))의 수명들의 평균과 새로운 가상 스트림의 쓰기 데이터의 수명을 비교할 수 있다. 가상 스트림 클러스터링 관리부(212)는 맵핑 테이블(VS2PS)에서 제 1 물리 스트림 ID가 할당된 제 1 블록 데이터의 수명들의 평균을 제 1 물리 스트림의 수명으로 업데이트할 수 있다. 유사하게, 가상 스트림 클러스터링 관리부(212)는 맵핑 테이블(VS2PS)에서 제 2 물리 스트림 ID가 할당된 제 2 블록 데이터의 수명들의 평균을 제 2 물리 스트림의 수명으로 업데이트할 수 있다.
도 4 및 도 5는 본 발명의 실시 예에 따른 가상 스트림 수명 식별부가 쓰기 데이터의 수명을 판별하는 동작을 예시적으로 보여주는 도면들이다. 도 4 및 도 5는 함께 설명될 것이고, 도 1 내지 도 3을 참조하여 설명될 것이다.
도 4를 참조하면, 컨트롤러(210)는 T1 시점에서 제 1 가상 스트림의 제 1 쓰기 데이터(WDATA1)에 대한 제 1 쓰기 명령(WCMD1)을 수신할 수 있다. 컨트롤러(210)는 T2 시점에서 제 2 가상 스트림의 제 2 쓰기 데이터(WDATA2)에 대한 제 2 쓰기 명령(WCMD2)을 수신할 수 있다. 컨트롤러(210)는 T3 시점에서 제 1 가상 스트림의 제 1 쓰기 데이터(WDATA1)에 대한 제 1 무시 명령(DCMD1)을 수신할 수 있다. 컨트롤러(210)는 T4 시점에서 제 2 가상 스트림의 제 2 쓰기 데이터(WDATA2)에 대한 제 2 겹쳐 쓰기 명령(OWCMD2)을 수신할 수 있다. 여기서, 호스트(100)는 쓰기 명령 및 무시 명령 모두에 가상 스트림 ID가 포함되도록 쓰기 명령 및 무시 명령을 생성할 수 있고 컨트롤러(210)는 이러한 쓰기 명령과 무시 명령을 수신할 수 있다. 컨트롤러(210)는 도 4에서 도시된 것과 달리 제 1 무시 명령(DCMD1)을 수신하고 제 2 쓰기 명령(WCMD2)을 수신할 수도 있다.
실시 예에 있어서, 가상 스트림 수명 식별부(211)는 제 1 무시 명령(DCMD1)이 수신되는 T3 시점과 제 1 쓰기 명령(WCMD1)이 수신되는 T1 시점간의 차이에 기초하여 제 1 쓰기 데이터(WDATA1)의 수명을 판별할 수 있다. 가상 스트림 수명 식별부(211)는 T3 시점과 T1 시점간의 차이를 제 1 쓰기 데이터(WDATA1)의 수명으로 계산할 수 있다.
다른 실시 예에 있어서, 가상 스트림 수명 식별부(211)는 제 1 무시 명령(DCMD1)이 수신되는 T3 시점과 제 1 쓰기 명령(WCMD1)에 따라 제 1 쓰기 데이터(WDATA1)가 불휘발성 메모리 장치(230)로 프로그램되는 T1 시점 이후의 시점간의 차이에 기초하여 제 1 쓰기 데이터(WDATA1)의 수명을 판별할 수 있다. 가상 스트림 수명 식별부(211)는 T3 시점(무효 시점)과 제 1 쓰기 데이터(WDATA1)가 불휘발성 메모리 장치(230)로 프로그램되는 시점간의 차이를 제 1 쓰기 데이터(WDATA1)의 수명으로 계산할 수 있다.
상술한 방식과 유사하게, 가상 스트림 수명 식별부(211)는 제 2 쓰기 데이터(WDATA2)의 수명을 계산할 수 있다. 다만, 가상 스트림 수명 식별부(211)는 무시 명령 대신에 제 2 겹쳐 쓰기 명령(OWCMD2)에 기초하여 제 2 쓰기 데이터(WDATA2)의 수명을 계산할 수 있다. 전술한대로, 제 2 겹쳐 쓰기 명령(OWCMD2)은 T2 시점의 제 2 쓰기 명령(WCMD2)의 논리 어드레스 범위와 겹치는 논리 어드레스 범위를 갖는 쓰기 명령이다.
호스트(100)에 의해 생성되는 쓰기 명령과 무시 명령은 가상 스트림 ID뿐만 아니라 논리 어드레스 범위에 관한 정보(예를 들면, 시작 논리 어드레스, 섹터 카운트(sector count) 등)를 포함할 수 있다. 쓰기 명령과 무시 명령은 가상 스트림 ID에 대한 필드와 논리 어드레스 범위에 대한 필드를 포함할 수 있다.
도 5를 참조하면, 제 1 쓰기 명령(WCMD1)은 제 1 내지 제 5 논리 페이지들(LP1~LP5)을 나타내는 제 1 내지 제 5 논리 어드레스들(LA1~LA5)을 포함할 수 있다. 즉, 제 1 쓰기 데이터(WDATA1)는 제 1 내지 제 5 논리 페이지들(LP1~LP5)로 나뉘어질 수 있고 제 1 내지 제 5 논리 페이지들(LP1~LP5)에 저장될 수 있다. 제 1 무시 명령(DCMD1)은 제 2 내지 제 4 논리 페이지들(LP2~LP4)을 나타내는 제 2 내지 제 4 논리 어드레스들(LA2~LA4)을 포함할 수 있다. 컨트롤러(210)는 제 1 무시 명령(DCMD1)에 기초하여, 논리 어드레스들과 물리 어드레스들의 관계를 나타내는 맵핑 테이블(LA2PA, 미도시)에서 제 2 내지 제 4 논리 어드레스들(LA2~LA4)이 나타내는 제 2 내지 제 4 논리 페이지들(LP2~LP4)이 무효화되었음을 마킹(marking)할 수 있다. 다만, 제 1 쓰기 명령(WCMD1)에 포함된 논리 어드레스의 범위와 제 1 무시 명령(DCMD1)에 포함된 논리 어드레스의 범위는 서로 동일하거나 다를 수 있고, 도 5에서 도시된 것으로 한정되지 않는다.
제 2 쓰기 명령(WCMD2)은 제 6 내지 제 9 논리 페이지들(LP6~LP9)을 나타내는 제 6 내지 제 9 논리 어드레스들(LA6~LA9)을 포함할 수 있다. 즉, 제 2 쓰기 데이터(WDATA2)는 제 6 내지 제 9 논리 페이지들(LP6~LP9)로 나뉘어질 수 있고 제 6 내지 제 9 논리 페이지들(LP6~LP9)에 저장될 수 있다. 제 2 겹쳐 쓰기 명령(OWCMD2)은 제 7 내지 제 9 논리 페이지들(LP7~LP9)을 나타내는 제 7 내지 제 9 논리 어드레스들(LA7~LA9)을 포함할 수 있다. 컨트롤러(210)는 제 2 겹쳐 쓰기 명령(OWCMD2)에 기초하여, 논리 어드레스들과 물리 어드레스들의 관계를 나타내는 맵핑 테이블에서 제 6 내지 제 9 논리 어드레스들(LA6~LA9)이 나타내는 제 6 내지 제 9 논리 페이지들(LP6~LP9)이 무효화되었음을 마킹할 수 있다. 다만, 제 2 쓰기 명령(WCMD2)에 포함된 논리 어드레스의 범위와 제 2 겹쳐 쓰기 명령(OWCMD2)에 포함된 논리 어드레스의 범위는 서로 동일하거나 다를 수 있고, 도 5에서 도시된 것으로 한정되지 않는다.
도 5를 참조하면, 가상 스트림 수명 식별부(211)는 제 1 가상 스트림의 제 1 쓰기 데이터(WDATA1)의 수명이 기록된 제 1 타임스탬프를 생성할 수 있다. 가상 스트림 수명 식별부(211)는 제 2 가상 스트림의 제 2 쓰기 데이터(WDATA2)의 수명이 기록된 제 2 타임스탬프를 생성할 수 있다. 제 1 타임스탬프에는 제 1 무시 명령(DCMD1)에 의해 제 1 쓰기 데이터(WDATA1)가 무효화된 시점과 제 1 쓰기 데이터(WDATA1)가 불휘발성 메모리 장치(230)로 프로그램되는 시점간의 차이가 기록될 수 있다. 제 2 타임스탬프에는 제 2 겹쳐 쓰기 명령(OWCMD2)에 의해 제 2 쓰기 데이터(WDATA2)가 무효화된 시점과 제 2 쓰기 데이터(WDATA2)가 불휘발성 메모리 장치(230)로 프로그램되는 시점간의 차이가 기록될 수 있다.
실시 예에 있어서, 컨트롤러(210)는 제 1 가상 스트림의 제 1 내지 제 5 논리 페이지들(LP1~LP5)을 서로 다른 시간들에서 불휘발성 메모리 장치(230)로 각각 프로그램하지 않고 제 1 내지 제 5 논리 페이지들(LP1~LP5)을 동시에 불휘발성 메모리 장치(230)로 프로그램할 수 있다. 따라서, 가상 스트림 수명 식별부(211)는 제 1 내지 제 5 논리 페이지들(LP1~LP5)이 불휘발성 메모리 장치(230)로 프로그램되는 각각의 시간들을 저장하거나 관리하지 않을 수 있다. 대신에, 가상 스트림 수명 식별부(211)는 제 1 내지 제 5 논리 페이지들(LP1~LP5)이 불휘발성 메모리 장치(230)로 동시에 프로그램되는 어느 한 시점만을 계산하고 관리할 수 있다.
유사하게, 컨트롤러(210)는 제 2 가상 스트림의 제 6 내지 제 9 논리 페이지들(LP6~LP9)을 동시에 불휘발성 메모리 장치(230)로 프로그램할 수 있다. 따라서, 가상 스트림 수명 식별부(211)는 제 6 내지 제 9 논리 페이지들(LP6~LP9)이 불휘발성 메모리 장치(230)로 동시에 프로그램되는 어느 한 시점만을 계산하고 관리할 수 있다. 여기서, 제 1 쓰기 데이터(WDATA1)가 불휘발성 메모리 장치(230)에 프로그램되는 시점과 제 2 쓰기 데이터(WDATA2)가 불휘발성 메모리 장치(230)에 프로그램되는 시점은 서로 동일하거나 다를 수 있다.
만약 가상 스트림 수명 식별부(211)가 논리 페이지들의 각각의 타임스탬프들을 생성하고 관리하는 경우, 타임스탬프들의 테이블의 크기는 논리 어드레스들과 물리 어드레스들의 관계를 나타내는 맵핑 테이블의 크기와 동일할 수 있다. 맵핑 테이블의 크기와 동일한 타임스탬프들의 테이블을 버퍼 메모리(220)에 저장하고 관리하는 것은 비효율적일 수 있다. 컨트롤러(210)는 여러 논리 페이지들을 동시에 불휘발성 메모리 장치(230)로 프로그램할 수 있으므로, 가상 스트림 수명 식별부(211)는 논리 페이지들의 각각의 프로그램 시간들에 기초하여 타임스탬프들을 생성하고 관리할 필요가 없다.
실시 예에 있어서, 가상 스트림 수명 식별부(211)는 타임스탬프들의 테이블의 크기를 줄이기 위해, 동시에 불휘발성 메모리 장치(230)로 프로그램되는 논리 페이지들의 개수에 따라 타임스탬프들의 테이블의 크기를 조정할 수 있고 버퍼 메모리(220)에 저장할 수 있다. 여기서, 동시에 불휘발성 메모리 장치(230)로 프로그램되는 논리 페이지들의 개수는, 예를 들어, 불휘발성 메모리 장치(230)와 컨트롤러(210)를 연결하는 채널들의 개수, 채널들 각각에 연결된 웨이(way)들의 개수, 불휘발성 메모리들 각각의 플레인(plane)들의 개수, 또는 논리 페이지의 크기에 대한 불휘발성 메모리들 각각의 물리 페이지의 크기의 비율에 따라 결정될 수 있다. 채널, 웨이, 플레인, 페이지의 크기 등은 도 7에서 후술한다.
다른 실시 예에 있어서, 가상 스트림 수명 식별부(211)는 제 1 쓰기 데이터(WDATA1)가 저장되는 제 1 내지 제 5 논리 페이지들(LP1~LP5) 중 제 1 무시 명령(DCMD1)에 의해 지정된 제 2 내지 제 4 논리 페이지들(LP2~LP4, 즉, 데드 페이지들(dead pages, 혹은 무효 페이지들))의 무효 시점들과 무효 시점들의 평균을 계산할 수 있다. 데드 페이지들의 무효 시점들의 평균이 가상 스트림의 무효 시점일 수 있다. 가상 스트림 수명 식별부(211)는 제 1 내지 제 5 논리 페이지들(LP1~LP5) 중 데드 페이지들을 제외한 라이브 페이지들(live pages, 즉, 제 1 및 제 5 논리 페이지들(LP1, LP5))의 수명들은 계산하지 않을 수 있다. 상술한 방식에 따라, 가상 스트림 수명 식별부(211)의 연산량이 감소할 수 있다.
유사하게, 가상 스트림 수명 식별부(211)는 제 2 쓰기 데이터(WDATA2)가 저장되는 제 6 내지 제 9 논리 페이지들(LP6~LP9) 중 제 2 겹쳐 쓰기 명령(OWCMD2)에 의해 지정된 제 7 내지 제 9 논리 페이지들의 무효 시점들과 평균을 계산할 수 있다. 정리하면, 가상 스트림 수명 식별부(211)는 쓰기 명령 그리고 무시 명령과 겹쳐 쓰기 명령 중 하나에 모두 포함된 논리 어드레스들의 논리 페이지들에 대한 수명들을 판별할 수 있고 그리고 수명들의 평균을 계산함으로써 쓰기 데이터의 수명을 판별할 수 있다. 가상 스트림 수명 식별부(211)는 무시 명령 또는 겹쳐 쓰기 명령이 수신될 때마다 데드 페이지들에 대한 수명들을 반복적으로 판별할 수 있다.
도 6은 도 1 내지 도 3의 컨트롤러의 구성을 예시적으로 보여주는 블록도이다. 도 6은 도 1 내지 도 3을 참조하여 설명될 것이다. 컨트롤러(210)는 가상 스트림 수명 식별부(211), 가상 스트림 클러스터링 관리부(212), 프로세싱 유닛(213), 호스트 인터페이스 회로(214), 버퍼 메모리 인터페이스 회로(215), 및 플래시 인터페이스 회로(216)를 포함할 수 있다. 가상 스트림 수명 식별부(211) 및 가상 스트림 클러스터링 관리부(212)는 도 1 내지 도 5를 통해 설명되었다.
프로세싱 유닛(213)은 불휘발성 메모리 장치(230)에 대한 읽기 동작 또는 쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스 회로(214) 및 플래시 인터페이스 회로(216)의 레지스터들로 제공할 수 있다. 프로세싱 유닛(213)은 컨트롤러(210)의 다양한 제어 동작을 위해 제공되는 펌웨어(firmware)에 따라 동작할 수 있다. 예를 들어, 프로세싱 유닛(213)은 불휘발성 메모리 장치(230)를 관리하기 위한 가비지 컬렉션이나, 논리 어드레스와 물리 어드레스의 맵핑, 웨어 레벨링(wear leveling) 등을 수행하기 위한 플래시 변환 계층(FTL)을 실행할 수 있다. 실시 예에 있어서, 도 6에서 도시된 바와 달리, 가상 스트림 수명 식별부(211) 및 가상 스트림 클러스터링 관리부(212)는 프로세싱 유닛(213)에 포함될 수도 있다.
호스트 인터페이스 회로(214)는 상술한 통신 방식에 따라 호스트(100)와의 통신을 수행할 수 있다. 예를 들어, 호스트 인터페이스 회로(214)는 NVMe 프로토콜에 따라 동작할 수 있다. 호스트 인터페이스 회로(214)는 가상 스트림 ID를 갖는 쓰기 명령 및 가상 스트림 ID를 갖는 무시 명령을 수신하고 쓰기 명령 및 무시 명령을 가상 스트림 수명 식별부(211)로 제공할 수 있다.
버퍼 메모리 인터페이스 회로(215)는 버퍼 메모리(220)의 읽기 동작과 쓰기 동작을 제어할 수 있다. 예를 들어, 버퍼 메모리 인터페이스 회로(215)는 가상 스트림 수명 식별부(211)에 의해 생성되거나 업데이트된 맵핑 테이블(VS2LT)을 버퍼 메모리(220)로 제공할 수 있다. 버퍼 메모리 인터페이스 회로(215)는 버퍼 메모리(220)에 저장된 맵핑 테이블(VS2LT)을 가상 스트림 수명 식별부(211) 또는 불휘발성 메모리 장치(230)로 제공할 수 있다. 버퍼 메모리 인터페이스 회로(215)는 가상 스트림 클러스터링 관리부(212)에 의해 생성되거나 업데이트된 맵핑 테이블(VS2PS)을 버퍼 메모리(220)로 제공할 수 있다. 버퍼 메모리 인터페이스 회로(215)는 버퍼 메모리(220)에 저장된 맵핑 테이블(VS2PS)을 가상 스트림 클러스터링 관리부(212) 또는 불휘발성 메모리 장치(230)로 제공할 수 있다.
플래시 인터페이스 회로(216)는 불휘발성 메모리 장치(230)와 데이터를 교환할 수 있다. 플래시 인터페이스 회로(216)는 물리 스트림 ID들 각각이 할당된 쓰기 데이터를 불휘발성 메모리 장치(230)로 제공할 수 있다. 전술한대로, 제 1 물리 스트림 ID가 할당된 제 1 쓰기 데이터가 저장되는 불휘발성 메모리 장치(230)의 블록들의 위치와 제 2 물리 스트림 ID가 할당된 제 2 쓰기 데이터가 저장되는 불휘발성 메모리 장치(230)의 블록들의 위치는 서로 다르다. 그리고, 제 1 쓰기 데이터의 수명과 제 2 쓰기 데이터의 수명은 유사하지 않고 서로 다르다.
도 7은 도 1 내지 도 3의 스토리지 장치의 구성을 예시적으로 보여주는 블록도이다. 스토리지 장치(200)는 컨트롤러(210), 버퍼 메모리(220), 및 제 1 내지 제 4 불휘발성 메모리들(231~234)을 포함할 수 있다. 컨트롤러(210) 및 버퍼 메모리(220)는 도 1 내지 도 6을 통해 설명되었다. 제 1 내지 제 4 불휘발성 메모리들(231~234)은 도 1 및 도 2의 불휘발성 메모리 장치(230)에 포함될 수 있다.
컨트롤러(210)는 제 1 및 제 2 채널들(CH1, CH2)을 통해 제 1 내지 제 4 불휘발성 메모리들(231~234)과 통신할 수 있다. 제 1 및 제 2 채널들(CH1, CH2) 각각에는 제 1 및 제 2 웨이들(WAY1, WAY2)이 연결될 수 있다. 제 1 채널(CH1)의 제 1 웨이(WAY1)에는 제 1 불휘발성 메모리(231)가 연결될 수 있다. 동일한 방식으로, 다른 웨이에도 다른 불휘발성 메모리가 연결될 수 있다. 제 1 및 제 2 채널들(CH1, CH2)의 제 1 및 제 2 웨이들(WAY1, WAY2)에 연결되는 제 1 내지 제 4 불휘발성 메모리들(231~234)은 서로 동일할 수 있다. 여기서, 채널들의 개수, 웨이들의 개수, 웨이에 연결된 불휘발성 메모리들의 개수는 도 7에서 도시된 것으로 한정되지 않는다.
제 1 불휘발성 메모리(231)는 메모리 셀 어레이의 제 1 및 제 2 플레인들(Plane1, Plane2)을 포함할 수 있다. 제 1 및 제 2 플레인들(Plane1, Plane2)은 서로 동일할 수 있고 그리고 제 1 및 제 2 플레인들(Plane1, Plane2) 각각은 제 1 내지 제 4 블록들(BLK1~BLK4)을 포함할 수 있다. 제 1 내지 제 4 블록들(BLK1~BLK4)은 서로 동일할 수 있고 그리고 제 1 내지 제 4 블록들(BLK1~BLK4) 각각은 복수의 물리 페이지들을 포함할 수 있다. 복수의 물리 페이지들 각각은 메모리 셀들을 포함할 수 있다. 여기서, 플레인들의 개수, 블록들의 개수, 물리 페이지들의 개수 등은 도 7에서 도시된 것으로 한정되지 않는다.
실시 예에 있어서, 컨트롤러(210)는 프로그램 시간 감소를 위해 멀티 채널들, 멀티 웨이들, 및 멀티 플레인들을 동시에 접근할 수 있다. 컨트롤러(210)는 인터리빙(interleaving) 방식으로 멀티 채널들, 멀티 웨이들, 및 멀티 플레인들을 통해 복수의 물리 페이지들을 동시에 프로그램할 수 있다. 또한, 물리 페이지의 크기는 전술한 논리 페이지의 크기보다 클 수 있다. 따라서, 가상 스트림 수명 식별부(211)는 동시에 프로그램되는 논리 페이지들에 대한 프로그램 시간들을 공유할 수 있고 그리고 동시에 프로그램되는 논리 페이지들의 개수에 따라 타임스탬프들의 테이블의 크기를 조정할 수 있다.
실시 예에 있어서, 메모리 셀 어레이는 3차원 메모리 셀 어레이일 수 있다. 3차원 메모리 셀 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 관련된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀 어레이들의 하나 이상의 물리 레벨들에 모놀리식으로(Monolithically) 형성될 수 있다. 메모리 셀들의 동작에 관련된 회로는 기판 내에 또는 기판 위에 배치될 수 있다. "모놀리식(Monolithical)"이라는 용어는, 3차원 메모리 셀 어레이의 각 레벨의 층들이 3차원 메모리 셀 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
3차원 메모리 셀 어레이는 수직의 방향성을 갖고 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 낸드 스트링들을 포함할 수 있다. 적어도 하나의 메모리 셀은 전하 트랩(charge trap) 층을 포함할 수 있다. 수직 낸드 스트링들 각각은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조로 구성되고 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 셀 어레이가 복수의 레벨로 구성되고, 레벨들 사이에 공유되는 워드 라인들 또는 비트 라인들이 구비되는 것과 같이, 3차원 메모리 셀 어레이에 적합한 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 이 공보들은 본 발명의 참조로서 포함된다.
실시 예에 있어서, 3차원 메모리 셀 어레이의 메모리 셀들 각각은 멀티 비트들(예를 들어, 2비트(MSB(most significant bit), LSB(least significant bit)), 3비트(MSB, CSB(center significant bit), LSB) 등)을 저장할 수 있다. 3차원 메모리 셀 어레이의 경우, 컨트롤러(210)는 멀티 비트들에 각각 대응하는 논리 페이지들(예를 들어, MSB 페이지, CSB 페이지, LSB 페이지 등)을 한꺼번에 프로그램할 수 있다(즉, 원-샷(one-shot) 프로그램). 원-샷 프로그램은 셀-대-셀 프로그램 간섭(cell-to-cell program interference)을 줄일 수 있는 커플링이 자유로운 수직 구조를 갖는 3차원 메모리 셀 어레이에서 수행될 수 있다. 가상 스트림 수명 식별부(211)는 메모리 셀이 저장하는 멀티 비트들의 개수에 따라 타임스탬프들의 테이블의 크기를 더 조정할 수 있다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치의 동작 방법을 예시적으로 보여주는 순서도이다.
S110 단계에서, 호스트(100)는 가상 스트림 ID를 갖는 쓰기 명령을 스토리지 장치(200)로 전송할 수 있다. 호스트(100)는 스토리지 장치(200)가 지원하는 물리 스트림들의 개수와 관계없이 데이터의 유형에 따라 가상 스트림 ID들 각각을 쓰기 데이터에 할당할 수 있다. 물론, 호스트(100)는 S110 단계의 가상 스트림 ID 또는 다른 가상 스트림 ID를 갖는 쓰기 명령을 스토리지 장치(200)로 더 전송할 수 있다.
S120 단계에서, 컨트롤러(210)는 쓰기 명령에 응답하여 쓰기 데이터를 디폴트(default) 물리 스트림 ID에 대응하는 블록들로 프로그램할 수 있다. S120 단계의 프로그램은 전술한 가상 스트림 클러스터링 관리부(212)에 의한 가상 스트림들과 물리 스트림들의 맵핑이 수행되기 전에 수행될 수 있다. S120 단계의 프로그램은 전술한 맵핑 테이블(VS2PS)과 관계없이 수행될 수 있다. 여기서, 디폴트 물리 스트림 ID에 대응하는 블록들은 논리 어드레스들과 물리 어드레스들의 관계를 나타내는 맵핑 테이블에 따라 주기적 혹은 비주기적으로 변경될 수 있다.
S130 단계에서, 호스트(100)는 가상 스트림 ID를 갖는 무시 명령 또는 가상 스트림 ID를 갖는 겹쳐 쓰기 명령을 스토리지 장치(200)로 전송할 수 있다. 호스트(100)는 쓰기 명령에도 가상 스트림 ID를 포함시킬 수 있고 무시 명령에도 가상 스트림 ID를 포함시킬 수 있다. 실시 예에 있어서, 기준 시간 동안 S110 내지 S130 단계들은 반복적으로 수행될 수 있고 S110 내지 S130 단계들의 수행 순서는 도 8에서 도시된 것으로 한정되지 않는다. 전술한대로, 기준 시간은 컨트롤러(210)가 맵핑 테이블(VS2PS)을 업데이트하는 주기일 수 있다.
S140 단계에서, 컨트롤러(210)는 쓰기 명령들과 무시 명령들에 기초하여, 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별할 수 있다. 컨트롤러(210)는 S130 단계에서 무시 명령 또는 겹쳐 쓰기 명령이 수신되는 무효 시점과 S120 단계에서 쓰기 데이터가 디폴트 물리 스트림 ID에 대응하는 블록들에 프로그램되는 프로그램 시점간의 차이를 쓰기 데이터의 수명으로 계산할 수 있다.
실시 예에 있어서, 컨트롤러(210)는 쓰기 데이터가 프로그램되는 논리 페이지들이 프로그램되는 각각의 프로그램 시점들을 계산하지 않는다. 전술한대로, 논리 페이지들은 채널들, 웨이들, 플레인들, 블록들, 논리 페이지의 크기에 대한 물리 페이지의 크기의 비율, 및 3차원 메모리 셀 어레이의 메모리 셀이 저장하는 멀티 비트들의 개수에 따라 동시에 프로그램될 수 있다. 컨트롤러(210)는 동시에 프로그램되는 논리 페이지들이 프로그램되는 어느 하나의 프로그램 시점만을 계산하고 저장할 수 있다. 이후, 컨트롤러(210)는 쓰기 데이터의 수명을 계산할 수 있다.
실시 예에 있어서, 컨트롤러(210)는 무시 명령 또는 겹쳐 쓰기 명령에 포함된 논리 어드레스 범위에 대응하는 논리 페이지들이 무효화되는 무효 시점들의 평균을 계산할 수 있다. 즉, 컨트롤러(210)는 가상 스트림 ID가 할당된 쓰기 데이터의 모든 논리 페이지들 중 무시 명령 또는 겹쳐 쓰기 명령에 의해 지정된 데드 페이지들의 무효 시점들과 평균을 계산할 수 있다. 컨트롤러(210)는 가상 스트림 ID가 할당된 쓰기 데이터의 모든 논리 페이지들 중 데드 페이지들 이외의 라이브 페이지들의 수명들은 계산하지 않을 수 있다.
S150 단계에서, 컨트롤러(210)는 S140 단계에서 계산된 수명, 즉 가상 스트림에 대한 수명과 물리 스트림들에 대한 평균 수명들을 비교할 수 있다. 컨트롤러(210)는 가상 스트림에 대한 수명과 물리 스트림들에 대한 평균 수명들간의 차이들을 계산할 수 있다.
S160 단계에서, 컨트롤러(210)는 S150 단계에서 계산된 차이들 중 최소 차이에 따라 가상 스트림들과 물리 스트림들을 맵핑할 수 있다. 즉, 컨트롤러(210)는 가상 스트림의 수명과 가상 스트림과 맵핑되는 물리 스트림의 수명간의 차이가 최소일 수 있도록, 가상 스트림들과 물리 스트림들을 맵핑할 수 있다. 이를 통해, 가상 스트림 ID들이 할당된 쓰기 데이터 집합에서 동일하거나 유사한 수명을 갖는 쓰기 데이터가 같은 물리 스트림으로 맵핑되거나 할당될 수 있다.
S170 단계에서, 컨트롤러(210)는 S160 단계에서 생성되는 맵핑 테이블(VS2PS)에 기초하여 쓰기 데이터를 물리 스트림 ID에 대응하는 블록들로 프로그램할 수 있다. 컨트롤러(210)는 쓰기 데이터에 대한 가비지 컬렉션을 수행하거나 쓰기 명령에 응답하여 쓰기 데이터를 불휘발성 메모리 장치(230)에 프로그램할 수 있다. 예를 들어, S170 단계는 가비지 컬렉션에 의해 수행되거나 또는 쓰기 데이터가 불휘발성 메모리 장치(230)에 프로그램될 때 수행될 수 있다.
도 9는 본 발명의 실시 예에 따른 스토리지 장치를 포함하는 전자 장치를 보여주는 블록도이다. 전자 장치(1000)는 프로세싱 유닛(1100), 워킹 메모리(1200), 스토리지 장치(1300), 통신 블록(1400), 유저 인터페이스 회로(1500), 및 버스(1600)를 포함할 수 있다. 예로서, 전자 장치(1000)는 개인용 컴퓨터, 워크스테이션(workstation), 노트북, 태블릿, 스마트폰, 모바일 장치 등 중 하나일 수 있다.
프로세싱 유닛(1100)은 전자 장치(1000)의 전반적인 동작들을 제어할 수 있다. 프로세싱 유닛(1100)은 다양한 종류의 산술 연산 및/또는 논리 연산을 수행할 수 있다. 예로서, 프로세싱 유닛(1100)은 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서를 포함할 수 있다.
워킹 메모리(1200)는 프로세싱 유닛(1100)과 데이터를 교환할 수 있다. 워킹 메모리(1200)는 전자 장치(1000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(1200)는 전자 장치(1000)의 버퍼 메모리로서 이용될 수 있다. 예를 들어, 워킹 메모리(1200)는 SRAM, DRAM 등과 같은 휘발성 메모리 시스템을 포함할 수 있다. 워킹 메모리(1200)는 하나 이상의 메모리 모듈 또는 하나 이상의 메모리 패키지를 포함할 수 있다.
스토리지 장치(1300)는 전원 공급에 관계없이 보존을 필요로 하는 데이터를 저장할 수 있다. 예를 들어, 스토리지 장치(1300)는 SSD와 같은 스토리지 매체를 포함할 수 있다.
스토리지 장치(1300)는 도 1 내지 도 9를 참조하여 설명된 본 발명의 실시 예들 중 적어도 하나에 기초하여 구현될 수 있다. 스토리지 장치(1300)는 데이터의 수명에 기초하여 가상 스트림 ID들과 물리 스트림 ID들을 맵핑하는 컨트롤러를 포함할 수 있다. 이를 위해, 스토리지 장치(1300)는 가상 스트림 ID들을 갖는 쓰기 명령들과 가상 스트림 ID들을 갖는 무시 명령들을 수신할 수 있다. 본 발명의 실시 예에 따르면, 스토리지 장치(1300)의 가비지 컬렉션의 성능이 향상될 수 있고, 스토리지 장치(1300)의 수명의 단축이 느려질 수 있다.
통신 블록(1400)은 프로세싱 유닛(1100)의 제어에 따라 전자 장치(1000)의 외부와 통신할 수 있다. 통신 블록(1400)은 유선 통신 규약 및/또는 무선 통신 규약에 따라 전자 장치(1000)의 외부와 통신할 수 있다. 예로서, 통신 블록(1400)은 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, SCSI, PCIe, M-PCIe(mobile PCIe), ATA(advanced technology attachment), PATA(parallel ATA), SATA(serial ATA), SAS, IDE(integrated drive electronics), 파이어와이어(firewire) 등의 다양한 유선 통신 규약 중 적어도 하나에 따라 전자 장치(1000)의 외부와 통신할 수 있다.
유저 인터페이스 회로(1500)는 프로세싱 유닛(1100)의 제어에 따라 사용자와 전자 장치(1000) 사이의 통신을 중계할 수 있다. 예로서, 유저 인터페이스 회로(1500)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등의 입력 인터페이스를 포함할 수 있다. 나아가, 유저 인터페이스 회로(1500)는 LCD(liquid crystal display) 장치, LED(light emitting diode) 표시 장치, OLED(organic LED) 표시 장치, AMOLED(active matrix OLED) 표시 장치, 스피커, 모터 등의 출력 인터페이스를 포함할 수 있다.
버스(1600)는 전자 장치(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 전자 장치(1000)의 구성 요소들은 버스(1600)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB, SCSI, PCIe, ATA, PATA, SATA, SAS, IDE, UFS(universal flash storage) 등과 같은 다양한 규약들 중 하나 이상을 포함할 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
Claims (10)
- 가상 스트림 ID(identifier)들을 갖는 쓰기 명령들을 수신하고, 상기 가상 스트림 ID들을 갖는 무시 명령들을 수신하고, 그리고 상기 쓰기 명령들 및 상기 무시 명령들에 기초하여, 상기 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하는 컨트롤러; 및
물리 스트림 ID들에 따라 상기 컨트롤러에 의해 접근되는 불휘발성 메모리들을 포함하되,
상기 컨트롤러는 상기 쓰기 데이터의 상기 수명에 기초하여, 상기 가상 스트림 ID들과 상기 물리 스트림 ID들을 맵핑(mapping)하는 스토리지 장치. - 제 1 항에 있어서,
상기 가상 스트림 ID들의 개수는 상기 물리 스트림 ID들의 개수보다 큰 스토리지 장치. - 제 1 항에 있어서,
상기 컨트롤러는:
상기 가상 스트림 ID들 중 제 1 가상 스트림 ID를 갖는 제 1 무시 명령 또는 상기 제 1 가상 스트림 ID를 갖는 제 1 겹쳐 쓰기 명령이 수신되는 시점과 상기 제 1 가상 스트림 ID가 할당된 제 1 쓰기 데이터가 상기 불휘발성 메모리들에 프로그램되는 시점간의 차이를 상기 제 1 쓰기 데이터의 제 1 수명으로 계산하는 가상 스트림 수명 식별부; 및
상기 제 1 쓰기 데이터의 상기 제 1 수명과 상기 물리 스트림 ID들 각각이 할당된 블록 데이터의 수명을 비교하고 그리고 비교 결과에 기초하여, 상기 제 1 가상 스트림 ID를 상기 물리 스트림 ID들 중 제 1 물리 스트림 ID로 맵핑하는 가상 스트림 클러스터링(clustering) 관리부를 포함하는 스토리지 장치. - 제 3 항에 있어서,
상기 가상 스트림 수명 식별부는, 상기 가상 스트림 ID들 중 제 2 가상 스트림 ID를 갖는 제 2 무시 명령 또는 상기 제 2 가상 스트림 ID를 갖는 제 2 겹쳐 쓰기 명령이 수신되는 시점과 상기 제 2 가상 스트림 ID가 할당된 제 2 쓰기 데이터가 상기 불휘발성 메모리들에 프로그램되는 시점간의 차이를 상기 제 2 쓰기 데이터의 제 2 수명으로 더 계산하고, 그리고
상기 가상 스트림 클러스터링 관리부는, 상기 제 2 쓰기 데이터의 상기 제 2 수명과 수명과 상기 물리 스트림 ID들 각각이 할당된 상기 블록 데이터의 상기 수명을 비교하고 그리고 비교 결과에 기초하여, 상기 제 2 가상 스트림 ID를 상기 제 1 물리 스트림 ID로 맵핑하거나 또는 상기 제 2 가상 스트림 ID를 상기 물리 스트림 ID들 중 제 2 물리 스트림 ID로 맵핑하는 스토리지 장치. - 제 4 항에 있어서,
상기 가상 스트림 클러스터링 관리부는:
상기 제 2 가상 스트림 ID를 상기 제 1 물리 스트림 ID로 맵핑하고 그리고 상기 제 2 쓰기 데이터, 상기 제 1 쓰기 데이터, 및 상기 제 1 물리 스트림 ID가 할당된 제 1 블록 데이터를 클러스터링하거나, 또는
상기 제 2 가상 스트림 ID를 상기 제 2 물리 스트림 ID로 맵핑하고 그리고 상기 제 2 쓰기 데이터 및 상기 제 2 물리 스트림 ID가 할당된 제 2 블록 데이터를 클러스터링하는 스토리지 장치. - 제 5 항에 있어서,
상기 가상 스트림 클러스터링 관리부는:
상기 제 1 블록 데이터의 수명과 상기 제 2 쓰기 데이터의 상기 제 2 수명간의 차이가 상기 제 2 블록 데이터의 수명과 상기 제 2 쓰기 데이터의 상기 제 2 수명간의 차이보다 작으면, 상기 제 2 가상 스트림 ID를 상기 제 1 물리 스트림 ID로 맵핑하거나, 또는
상기 제 2 블록 데이터의 상기 수명과 상기 제 2 쓰기 데이터의 상기 제 2 수명간의 차이가 상기 제 1 블록 데이터의 상기 수명과 상기 제 2 쓰기 데이터의 상기 제 2 수명간의 차이보다 작으면, 상기 제 2 가상 스트림 ID를 상기 제 2 물리 스트림 ID로 맵핑하는 스토리지 장치. - 제 3 항에 있어서,
상기 가상 스트림 수명 식별부는, 상기 제 1 가상 스트림 ID를 갖는 제 1 쓰기 명령 그리고 상기 제 1 무시 명령과 상기 제 1 겹쳐 쓰기 명령 중 하나에 모두 포함된 논리 어드레스들의 논리 페이지들에 대한 수명들을 판별하고 그리고 상기 논리 페이지들에 대한 상기 수명들의 평균을 계산함으로써 상기 제 1 쓰기 데이터의 상기 제 1 수명을 판별하는 스토리지 장치. - 제 3 항에 있어서,
상기 가상 스트림 클러스터링 관리부는, 기준 시간이 경과할 때마다 상기 제 1 가상 스트림 ID와 상기 제 1 물리 스트림 ID를 맵핑하는 스토리지 장치. - 불휘발성 메모리들; 및
제 1 물리 스트림 ID(identifier)와 제 2 물리 스트림 ID에 따라 상기 불휘발성 메모리들을 접근하는 컨트롤러를 포함하되,
상기 컨트롤러는:
가상 스트림 ID들을 갖는 쓰기 명령들을 수신하고,
상기 가상 스트림 ID들을 갖는 무시 명령들을 수신하고,
상기 쓰기 명령들 및 상기 무시 명령들에 기초하여, 상기 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하고, 그리고
상기 쓰기 데이터의 상기 수명과 상기 제 1 물리 스트림 ID가 할당된 제 1 블록 데이터의 수명간의 제 1 차이 및 상기 쓰기 데이터의 상기 수명과 상기 제 2 물리 스트림 ID가 할당된 제 2 블록 데이터의 수명간의 제 2 차이에 기초하여, 상기 쓰기 데이터와 상기 제 1 블록 데이터 및 상기 제 2 블록 데이터 중 하나를 클러스터링(clustering)하는 스토리지 장치. - 호스트로부터 가상 스트림 ID(identifier)들을 갖는 쓰기 명령들을 수신하는 단계;
상기 호스트로부터 상기 가상 스트림 ID들을 갖는 무시 명령들을 수신하는 단계;
상기 쓰기 명령들과 상기 무시 명령들에 기초하여 상기 가상 스트림 ID들 각각이 할당된 쓰기 데이터의 수명을 판별하는 단계;
상기 쓰기 데이터의 상기 수명에 기초하여 상기 가상 스트림 ID들과 물리 스트림 ID들을 맵핑하는 단계; 및
상기 가상 스트림 ID들과 상기 물리 스트림 ID들의 관계를 나타내는 맵핑 테이블에 기초하여, 상기 쓰기 데이터를 상기 물리 스트림 ID들 중 하나에 대응하는 불휘발성 메모리들의 블록들로 프로그램하는 단계를 포함하는 스토리지 장치의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/243,795 US11544181B2 (en) | 2018-03-28 | 2019-01-09 | Storage device for mapping virtual streams onto physical streams and method thereof |
CN201910237594.0A CN110321297A (zh) | 2018-03-28 | 2019-03-27 | 用于将虚拟流映射到物理流上的存储装置及其操作方法 |
US18/074,116 US20230101305A1 (en) | 2018-03-28 | 2022-12-02 | Storage device for mapping virtual streams onto physical streams and method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862648971P | 2018-03-28 | 2018-03-28 | |
US62/648,971 | 2018-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190113479A true KR20190113479A (ko) | 2019-10-08 |
KR102656172B1 KR102656172B1 (ko) | 2024-04-12 |
Family
ID=68209073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180063730A KR102656172B1 (ko) | 2018-03-28 | 2018-06-01 | 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11544181B2 (ko) |
KR (1) | KR102656172B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567698B2 (en) | 2019-12-31 | 2023-01-31 | Samsung Electronics Co., Ltd. | Storage device configured to support multi-streams and operation method thereof |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907136B2 (en) * | 2020-03-16 | 2024-02-20 | Intel Corporation | Apparatuses, systems, and methods for invalidating expired memory |
US11500587B2 (en) * | 2020-11-20 | 2022-11-15 | Samsung Electronics Co., Ltd. | System and method for in-SSD data processing engine selection based on stream IDs |
JP2022124165A (ja) * | 2021-02-15 | 2022-08-25 | キオクシア株式会社 | メモリシステム |
US11809314B2 (en) * | 2021-11-21 | 2023-11-07 | Silicon Motion, Inc. | Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150118778A (ko) * | 2014-04-15 | 2015-10-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US20160313943A1 (en) * | 2015-04-24 | 2016-10-27 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US20170139710A1 (en) * | 2013-07-15 | 2017-05-18 | Texas Instruments Incorporated | Streaming engine with cache-like stream data storage and lifetime tracking |
US20170242625A1 (en) * | 2016-02-24 | 2017-08-24 | Samsung Electronics Co., Ltd. | Apparatus for ssd performance and endurance improvement |
US20170371585A1 (en) * | 2016-06-22 | 2017-12-28 | Ngd Systems, Inc. | System and method for multi-stream data write |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631449B1 (en) * | 2000-10-05 | 2003-10-07 | Veritas Operating Corporation | Dynamic distributed data system and method |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
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 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
US20130135816A1 (en) | 2011-11-17 | 2013-05-30 | Futurewei Technologies, Inc. | Method and Apparatus for Scalable Low Latency Solid State Drive Interface |
US8825851B2 (en) | 2012-08-17 | 2014-09-02 | Vmware, Inc. | Management of a virtual machine in a storage area network environment |
US8918844B1 (en) * | 2012-09-28 | 2014-12-23 | Emc Corporation | Device presence validation |
US20150237140A1 (en) | 2014-02-14 | 2015-08-20 | Tenoware R&D Limited | Data storage systems and methods |
KR101579941B1 (ko) | 2014-09-03 | 2015-12-23 | 서울대학교 산학협력단 | 가상머신 i/o 관리 방법 및 장치 |
US20160283124A1 (en) | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
US9509612B1 (en) | 2015-06-30 | 2016-11-29 | Emc Corporation | Adaptive performance control of multi-stream data transfer from a source system to a target system |
JP6403164B2 (ja) * | 2015-09-11 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
US9880780B2 (en) | 2015-11-30 | 2018-01-30 | Samsung Electronics Co., Ltd. | Enhanced multi-stream operations |
KR102229013B1 (ko) | 2016-09-02 | 2021-03-17 | 삼성전자주식회사 | 자동 스트림 검출 및 할당 알고리즘 |
US10338841B2 (en) * | 2017-06-27 | 2019-07-02 | Western Digital Technologies, Inc. | Block management for data streams |
US11113205B2 (en) * | 2017-07-31 | 2021-09-07 | Micron Technology, Inc. | Die addressing using a reduced size translation table entry |
US20190205062A1 (en) * | 2018-01-04 | 2019-07-04 | Western Digital Technologies, Inc. | Solid state drive stream allocation and mapping |
US11803325B2 (en) * | 2018-03-27 | 2023-10-31 | Micron Technology, Inc. | Specifying media type in write commands |
-
2018
- 2018-06-01 KR KR1020180063730A patent/KR102656172B1/ko active IP Right Grant
-
2019
- 2019-01-09 US US16/243,795 patent/US11544181B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170139710A1 (en) * | 2013-07-15 | 2017-05-18 | Texas Instruments Incorporated | Streaming engine with cache-like stream data storage and lifetime tracking |
KR20150118778A (ko) * | 2014-04-15 | 2015-10-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US20160313943A1 (en) * | 2015-04-24 | 2016-10-27 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US20170242625A1 (en) * | 2016-02-24 | 2017-08-24 | Samsung Electronics Co., Ltd. | Apparatus for ssd performance and endurance improvement |
US20170371585A1 (en) * | 2016-06-22 | 2017-12-28 | Ngd Systems, Inc. | System and method for multi-stream data write |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567698B2 (en) | 2019-12-31 | 2023-01-31 | Samsung Electronics Co., Ltd. | Storage device configured to support multi-streams and operation method thereof |
US11907586B2 (en) | 2019-12-31 | 2024-02-20 | Samsung Electronics Co., Ltd. | Storage device configured to support multi-streams and operation method thereof |
Also Published As
Publication number | Publication date |
---|---|
US11544181B2 (en) | 2023-01-03 |
US20210232499A1 (en) | 2021-07-29 |
KR102656172B1 (ko) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086537B2 (en) | Method and system to perform urgency level garbage collection based on write history of memory blocks | |
KR102656172B1 (ko) | 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법 | |
CN106294194B (zh) | 数据存储装置和具有该数据存储装置的数据处理系统 | |
US10379948B2 (en) | Redundancy coding stripe based on internal addresses of storage devices | |
US10103158B2 (en) | Memory system and method for controlling nonvolatile memory | |
KR102533072B1 (ko) | 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법 | |
US10411024B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11747989B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
JP2017021805A (ja) | 不揮発性メモリ装置内でデータ属性基盤データ配置を利用可能にするインターフェイス提供方法及びコンピュータ装置 | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
JP7375215B2 (ja) | 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化 | |
US20140013032A1 (en) | Method and apparatus for controlling writing data in storage unit based on nand flash memory | |
KR20140113211A (ko) | 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법 | |
KR20150055882A (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
KR20170099852A (ko) | 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치 | |
KR20200019421A (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
KR20200016074A (ko) | 데이터 처리 시스템 및 그의 동작 방법 | |
US20190146926A1 (en) | Storage device and operating method of storage device | |
KR102653373B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US20230101305A1 (en) | Storage device for mapping virtual streams onto physical streams and method thereof | |
US20140281129A1 (en) | Data tag sharing from host to storage systems | |
KR20200110859A (ko) | 데이터 저장 장치 및 이를 포함하는 컴퓨팅 장치와 그 동작 방법 | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |