KR102387935B1 - 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 - Google Patents
공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 Download PDFInfo
- Publication number
- KR102387935B1 KR102387935B1 KR1020170137357A KR20170137357A KR102387935B1 KR 102387935 B1 KR102387935 B1 KR 102387935B1 KR 1020170137357 A KR1020170137357 A KR 1020170137357A KR 20170137357 A KR20170137357 A KR 20170137357A KR 102387935 B1 KR102387935 B1 KR 102387935B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- common memory
- stream classification
- memory area
- stored
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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
- G06F13/1673—Details of memory controller using buffers
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치에 관한 것이다. 상기 데이터 저장 장치는, 외부로부터 제1 및 제2 데이터를 제공받아 저장하는 버퍼(buffer), 버퍼에 저장된 제1 및 제2 데이터를 저장하는 비휘발성 메모리(non-volatile Memory), 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되, 제1 데이터는 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 제2 데이터는 제2 데이터의 특성을 식별하고 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고, 컨트롤러는, 버퍼에 저장된 제1 및 제2 데이터를 비휘발성 메모리의 공용 메모리 영역에 저장한 후, 공용 메모리 영역에 저장된 제1 데이터를 공용 메모리 영역과 다른 비휘발성 메모리 내의 전용 메모리 영역에 마이그레이션(migration)한다.
Description
본 발명은 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치, 예를 들어, NAND 기반 드라이브들은 고성능 및 저전력 소비로 인해 그 수요가 점점 증가하고 있는 추세이다. NAND 기반 드라이브들의 특성상 오버 라이트(overwrite)가 불가능하기 때문에, 사용자 데이터를 새로운 저장 블록들에 복사하고, 유효하지 않은 데이터 저장 블록들을 소거하는 등 가비지 콜렉션(garbage collection)을 사용할 수 있다.
그러나, 가비지 콜렉션은 NAND 기반 드라이브의 읽기 및 쓰기 성능을 모두 감소시킬 수 있다. 데이터 쓰기 요청들이 매체에 여러 개의 내부 SSD 쓰기들을 야기할 수 있기 때문에, 가비지 콜렉션은 쓰기 증폭(write amplification)을 증가 시킬 수 있다. 쓰기 증폭은, 예를 들어 유효 데이터가 소거될 미디어 블록으로부터 먼저 읽혀지고 나서, 새로운 호스트 데이터를 저장하기 위한 쓰기를 동반하는 다른 미디어 저장 블록에 다시 쓰기(rewrite) 되는 경우에 발생할 수 있다.
호스트에서, 관련되거나 유사한 데이터들을 동일한 스트림 분류 번호로 분류할 수 있다. 동일한 스트림 분류 번호의 데이터를 동일 소거 블록 또는 동일 드라이브에 저장함으로써, 가비지 콜렉션이 제거되거나 감소될 수 있다.
그러나, 다양한 스트림 분류 번호들을 포함하는 데이터들을 각각의 블록으로 따로 저장한다면, 데이터들을 각각의 블록으로 분배하여 저장하기 때문에 따로 전력이 소모될 수 있고, 시간적 손실이 발생할 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, 버퍼에 저장된 데이터를 비휘발성 메모리에 저장할 때, 데이터에 포함된 스트림 분류 번호를 구분하지 않고 데이터들을 공용 메모리 영역에 저장함으로써, 각각의 스트림 분류 번호들을 포함하는 데이터만 저장되는 메모리 블록을 할당하고 각각의 메모리 블록으로 분배하여 저장하는데 소요되는 소비 전력을 감소시키고, 가비지 콜렉션에 의해 발생하는 쓰기 증폭 계수를 감소시키는 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 버퍼에 저장된 데이터를 비휘발성 메모리에 저장할 때, 버퍼에 저장된 데이터의 스트림 분류 번호를 기초로, 데이터들을 공용 메모리 영역 또는 전용 메모리 영역 중 하나로 분배하여 저장함으로써, 소비 전력을 감소시키고, 가비지 콜렉션에 의해 발생하는 쓰기 증폭 계수를 감소시키는 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 외부로부터 제1 및 제2 데이터를 제공받아 저장하는 버퍼(buffer), 버퍼에 저장된 제1 및 제2 데이터를 저장하는 비휘발성 메모리(non-volatile Memory), 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되, 제1 데이터는 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 제2 데이터는 제2 데이터의 특성을 식별하고 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고, 컨트롤러는, 버퍼에 저장된 제1 및 제2 데이터를 비휘발성 메모리의 공용 메모리 영역에 저장한 후, 공용 메모리 영역에 저장된 제1 데이터를 공용 메모리 영역과 다른 비휘발성 메모리 내의 전용 메모리 영역에 마이그레이션(migration)한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 외부로부터 제1 내지 제3 데이터를 제공받아 저장하는 버퍼(buffer), 버퍼에 저장된 제1 내지 제3 데이터를 저장하는 비휘발성 메모리(non-volatile Memory), 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되, 제1 데이터는 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 제2 데이터는 제2 데이터의 특성을 식별하고 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고, 제3 데이터는 제3 데이터의 특성을 식별하고 제1 및 제2 스트림 분류 번호와 다른 제3 스트림 분류 번호를 포함하고, 컨트롤러는, 버퍼에, 미리 정한 저장 빈도 이하로 저장된 제1 및 제2 스트림 분류 번호를 포함하는, 제1 및 제2 데이터를 비휘발성 메모리의 공용 메모리 영역에 저장하고, 버퍼에, 미리 정한 저장 빈도를 초과하여 저장된 제3 스트림 분류 번호를 포함하는, 제3 데이터를 공용 메모리 영역과 다른 비휘발성 메모리 내의 전용 메모리 영역에 저장한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 외부로부터 제1 내지 제3 데이터를 제공받아 저장하는 버퍼(buffer), 버퍼에 저장된 제1 내지 제3 데이터를 저장하는 비휘발성 메모리(non-volatile Memory), 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되, 제1 데이터는 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 제2 데이터는 제2 데이터의 특성을 식별하고 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고, 제3 데이터는 제3 데이터의 특성을 식별하고 제1 및 제2 스트림 분류 번호와 다른 제3 스트림 분류 번호를 포함하고, 비휘발성 메모리는 제1 및 제2 데이터가 저장되는 공용 메모리 영역 및 공용 메모리 영역과 다른, 비휘발성 메모리 내의 전용 메모리 영역에 포함된, 제3 데이터만 저장되는 전용 메모리 블록을 포함한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 데이터 처리 시스템을 설명하기 위한 블럭도이다.
도 2는 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러를 설명하기 위한 예시적인 블록도이다.
도 3은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 도면이다.
도 4는 몇몇 실시예에 따른 데이터 저장 장치의 동작 과정을 설명하기 위한 예시적인 순서도이다.
도 5는 몇몇 실시예에 따른 호스트(200)로부터 수신되는 데이터를 설명하기 위한 예시적인 도면이다.
도 6a 및 도 6b는 몇몇 실시예에 따른, 데이터 저장 장치의 공용 메모리 블록 중 마이그레이션이 수행될 블록을 결정하는 과정을 설명하기 위한 예시적인 도면이다.
도 7은 몇몇 실시예에 따른 데이터 저장 장치의 공용 메모리 영역에 저장된 데이터를 전용 메모리 영역으로 마이그레이션하는 과정을 설명하기 위한 예시적인 순서도이다.
도 8a 및 도 8b는 몇몇 실시예에 따른 데이터 저장 장치의 공용 메모리 영역의 마이그레이션을 설명하기 위한 예시적인 도면이다.
도 9는 다른 몇몇 실시예에 따른 데이터 저장 장치의 동작 과정을 설명하기 위한 예시적인 순서도이다.
도 10은 몇몇 실시예에 따른 전용 스트림 분류 번호를 결정하는 방법을 설명하기 위한 예시적인 순서도이다.
도 11은 몇몇 실시예에 따른 전용 스트림 분류 번호를 결정하고, 스트림 분류 번호의 종류에 따라, 데이터를 비휘발성 메모리의 서로 다른 영역에 분배하여 저장하는 방법을 설명하기 위한 예시적인 도면이다.
도 12a 및 도 12b는 몇몇 실시예에 따른 데이터를 공용 메모리 블록에 저장하는 방법에 대해 설명하기 위한 예시적인 도면이다.
도 2는 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러를 설명하기 위한 예시적인 블록도이다.
도 3은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 도면이다.
도 4는 몇몇 실시예에 따른 데이터 저장 장치의 동작 과정을 설명하기 위한 예시적인 순서도이다.
도 5는 몇몇 실시예에 따른 호스트(200)로부터 수신되는 데이터를 설명하기 위한 예시적인 도면이다.
도 6a 및 도 6b는 몇몇 실시예에 따른, 데이터 저장 장치의 공용 메모리 블록 중 마이그레이션이 수행될 블록을 결정하는 과정을 설명하기 위한 예시적인 도면이다.
도 7은 몇몇 실시예에 따른 데이터 저장 장치의 공용 메모리 영역에 저장된 데이터를 전용 메모리 영역으로 마이그레이션하는 과정을 설명하기 위한 예시적인 순서도이다.
도 8a 및 도 8b는 몇몇 실시예에 따른 데이터 저장 장치의 공용 메모리 영역의 마이그레이션을 설명하기 위한 예시적인 도면이다.
도 9는 다른 몇몇 실시예에 따른 데이터 저장 장치의 동작 과정을 설명하기 위한 예시적인 순서도이다.
도 10은 몇몇 실시예에 따른 전용 스트림 분류 번호를 결정하는 방법을 설명하기 위한 예시적인 순서도이다.
도 11은 몇몇 실시예에 따른 전용 스트림 분류 번호를 결정하고, 스트림 분류 번호의 종류에 따라, 데이터를 비휘발성 메모리의 서로 다른 영역에 분배하여 저장하는 방법을 설명하기 위한 예시적인 도면이다.
도 12a 및 도 12b는 몇몇 실시예에 따른 데이터를 공용 메모리 블록에 저장하는 방법에 대해 설명하기 위한 예시적인 도면이다.
본 명세서에서 숫자를 이용해 각 구성요소를 구분할 수 있다(예를 들어, '제1' 및 '제2'). 이러한 소자나 구성요소들은 이러한 용어에 의해 제한되지 않는다. 이러한 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 예를 들어, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있다. 또한, 이하에서 언급되는 제1 소자나 구성요소가 단지 하나의 소자를 의미하는 것은 아니다. 예를 들어, 제1 소자나 구성요소는 복수개의 소자나 구성요소로 이루어질 수 있다.
도 1은 몇몇 실시예에 따른 데이터 처리 시스템을 설명하기 위한 블럭도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예에 따른 데이터 처리 시스템은 저장 장치(Storage Device, 100), 호스트(Host, 200)를 포함한다. 여기에서, 각각의 구성은 별개의 칩이나 모듈이나 장치로 구성될 수 있고, 하나의 장치 내에 포함될 수도 있다. 예를 들어, 저장 장치(100)는 별개의 호스트(200)에 연결되어 사용될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 저장 장치(100)와 호스트(200)는 하나의 장치에 집적될 수 있다.
호스트(200)는 애플리케이션이나 파일 시스템을 이용하여 저장 장치(100)로 읽기 또는 쓰기 등의 요청을 한다. 예를 들어, 호스트(200)는 저장 장치(100)에 쓰기 동작을 수행할 것을 지시하는 명령(command)을 전달할 수 있다. 저장 장치(100)는 커맨드에 포함된 요청(예를 들어, 쓰기 명령에 대한 응답(response)을 호스트(200)에 전달할 수 있다.
호스트(200)는 저장 장치(100)로 데이터를 전달할 수 있다. 데이터는 저장될 데이터의 특성을 식별하는 스트림 분류 번호에 대한 정보를 포함할 수 있다. 호스트(200)는 다이렉티브(directive) 기능을 포함할 수 있다. 다이렉티브 기능은 호스트(200)에서 데이터의 유형 및 종류 등에 따라 스트림 분류 번호를 미리 결정하여, 저장 장치(100)로 전달하는 기능일 수 있다. 다시 말해서, 호스트(200)로부터 수신되는 데이터에는 해당 데이터와 이의 스트림 분류 번호가 포함되어 있다. 즉, 저장 장치(100)에서 따로 스트림 분류 번호를 분류할 필요가 없다.
동일한 스트림 분류 번호를 갖는 데이터는 서로 연관되거나 유사한 수명을 가질 수 있다. 예를 들어, 반복적으로 빈번하게 업데이트되는 데이터는 동일한 스트림 분류 번호를 가질 수 있다. 또한, 예를 들어, 유사한 유형의 데이터는 동일한 스트림 분류 번호를 가질 수 있다. 유사한 유형의 데이터는 수명이 유사한 것으로 가정할 수 있으므로, 동일한 스트림 분류 번호를 갖는 데이터들은 서로 유사한 수명을 가질 수 있다.
저장 장치(100)는 호스트(200)로부터의 요청에 따라 내부 동작(예를 들면, 읽기 또는 쓰기 등)을 제어할 수 있다.
저장 장치(100)는 인터페이스(Interface, 110), 컨트롤러(Controller, 120), 버퍼(Buffer, 130), 및 비휘발성 메모리(Non-volatile memory, 140)를 포함할 수 있다.
인터페이스(110)는 호스트(200) 및 컨트롤러(120) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, 인터페이스(110)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, NVMe(Non-Volatile Memory express) 프로토콜, 그리고 쿼리 응답(Query Request) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(200)와 통신하도록 구성될 수 있다. 또한, 인터페이스(110)는 적어도 하나의 프로세서(processor)를 포함할 수 있다. 인터페이스(110)에 포함된 프로세서는 마이크로 프로세서(micro-processor)일 수 있으나, 이에 제한되지는 않는다.
컨트롤러(120)는 인터페이스(110), 버퍼(130), 및 비휘발성 메모리(140)를 제어할 수 있다. 컨트롤러(120)는 인터페이스(110)를 통하여 호스트(200)와 비휘발성 메모리(140) 및 호스트(200)와 버퍼(130) 사이의 명령어 및 데이터 교환을 수행할 수 있다. 또한, 데이터 저장 장치(100)의 일련의 동작은, 컨트롤러(120)에 의해 수행될 수 있다. 또한, 컨트롤러(120)는 적어도 하나의 프로세서(processor)를 포함할 수 있다. 컨트롤러(120)에 포함된 프로세서는 마이크로 프로세서(micro-processor)일 수 있으나, 이에 제한되지는 않는다. 구체적 설명을 위해, 도 2를 참조하여 설명한다.
도 2는 몇몇 실시예에 따른 데이터 저장 장치의 컨트롤러를 설명하기 위한 예시적인 블록도이다.
도 2를 참조하면, 컨트롤러(120)는 얼로케이터(allocator, 122)를 포함할 수 있다. 얼로케이터(122)는 호스트(200)로부터 수신한 데이터의 스트림 분류 번호를 기초로, 제1 스트림 분류 번호를 포함하는 제1 데이터와 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하는 제2 데이터를 저장할 수 있는 공용 메모리 영역(도 3의 142)에 저장할 지, 제1 및 제2 스트림 분류 번호와 다른 제3 스트림 분류 번호를 포함하는 제3 데이터만 저장할 수 있는 전용 메모리 영역(도 3의 144)에 포함된 전용 메모리 블록에 저장할 지 결정할 수 있다. 자세한 설명은 후술한다.
얼로케이터(122)는 펌웨어(Firmware: F/W)로 구현될 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 얼로케이터(122)는 소프트웨어(software), 하드웨어(hardware), 또는 이들의 조합으로 구현될 수 있다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 적절한 방식으로, 얼로케이터(122)를 구현할 수 있을 것이다.
다시 도 1을 참조하면, 버퍼(130)는 호스트(200)로부터 수신한 데이터를 임시로 저장할 수 있다. 버퍼(130)는 고속의 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 예를 들어, 버퍼(130)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 또는 플래시 메모리(Flash Memory)의 SLC(Single Level Cell) 영역일 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
비휘발성 메모리(140)는 버퍼(130)에 임시로 저장된 데이터를 저장할 수 있다. 예를 들어, 비휘발성 메모리(140)는 낸드 플래시(NAND flash)를 포함하는 플래시 메모리일 수 있다. 상기 플래시 메모리는 SLC(Single Level Cell) 및 MLC(Multi Level Cell) 영역을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 비휘발성 메모리(140)는 PC 카드(PCMCIA: personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS), 임베디드 멀티미디어 카드(eMMC), 낸드 플래시 메모리(NAND Flash Memory), 노어 플래시 메모리(NOR Flash Memory), 브이 낸드 플래시 메모리(V-NAND Flash Memory) 등을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다. 구체적인 설명을 위해 도 3을 참조한다.
도 3은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 도면이다.
도 3을 참조하면, 비휘발성 메모리(140)는 복수개의 메모리 블록(Block1~BlockN)을 포함할 수 있다. 비휘발성 메모리(140)는 공용 메모리 영역(Block1~BlockK, 142)과 전용 메모리 영역(BlockK+1~BlockN, 144)을 포함할 수 있다.
공용 메모리 영역(142)은 복수개의 공용 메모리 블록(Block1~BlockK)이 포함될 수 있다. 공용 메모리 영역(142)은 다양한 스트림 분류 번호를 포함하는 데이터가 저장될 수 있다. 예를 들어, 버퍼(130)에 저장된 복수개의 데이터는 각각의 데이터에 포함된 스트림 분류 번호의 종류에 관계 없이 공용 메모리 영역(142)에 저장될 수 있다.
전용 메모리 영역(144)은 각각의 전용 메모리 블록(BlockK+1~BlockN)에 할당된 스트림 분류 번호를 포함하는 데이터만 저장될 수 있다. 예를 들어, 제1 전용 메모리 블록(BlockK+1)에는 제1 스트림 분류 번호가 포함된 데이터만 저장될 수 있고, 제2 전용 메모리 블록(BlockK+2)에는 제2 스트림 분류 번호가 포함된 데이터만 저장될 수 있다. 즉, 전용 메모리 영역(144)에 포함된 전용 메모리 블록(BlockK+1~BlockN) 각각은 단 하나의 스트림 분류 번호에 대해서만 저장될 수 있다. 예를 들어, 제1 및 제2 데이터 각각은 제1 스트림 분류 번호를 포함하고, 제3 데이터는 제2 스트림 분류 번호를 포함한다고 가정하면, 제1 및 제2 데이터는 제1 전용 메모리 블록(BlockK+1)에 저장될 수 있고, 제3 데이터는 제2 전용 메모리 블록(BlockK+2)에 저장될 수 있다.
복수개의 메모리 블록(Block1~BlockN)은 각각 복수개의 페이지(Page1~PageM)를 포함할 수 있다. 페이지는 데이터를 쓰기 위한 최소 단위일 수 있다. 다시 말해, 저장 장치(100)의 쓰기 동작의 최소 단위가 페이지일 수 있다.
다시 도 1을 참조하면, 저장 장치(100)는 인터페이스(110) 컨트롤러(120), 버퍼(130), 및 비휘발성 메모리(140)가 서로 데이터 통신을 하는데 이용될 수 있는 데이터 버스(150)를 포함할 수 있다. 데이터 버스(150)는 데이터들이 이동되는 통로(path)에 해당하며, 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다.
도 4는 몇몇 실시예에 따른 데이터 저장 장치의 동작 과정을 설명하기 위한 예시적인 순서도이다.
도 4를 참조하면, 호스트(200)로부터 데이터를 수신한다. 데이터는 해당 데이터의 특성을 식별하는 스트림 분류 번호를 포함할 수 있다(S400). 구체적인 설명을 위해, 도 5를 참조한다.
도 5는 몇몇 실시예에 따른 호스트(200)로부터 수신되는 데이터를 설명하기 위한 예시적인 도면이다.
도 5를 참조하면, 호스트(200)로부터 수신되는 데이터(500, 510)는 데이터(500) 및 데이터(500)의 특성을 식별하는 스트림 분류 번호(510)를 포함할 수 있다. 본 명세서에서, 데이터(500)의 특성을 식별하는 스트림 분류 번호(510)는, 데이터(500)의 종류, 데이터(500)의 유형, 및/또는 데이터(500)의 업데이트 빈도 등 다양한 인자에 의해 결정될 수 있다. 예를 들어, 제1 데이터(Data#1)의 특성을 식별하는 스트림 분류 번호는 스트림 분류 번호1(Stream1)일 수 있다. 제2 데이터(Data#2)의 특성을 식별하는 스트림 분류 번호는 스트림 분류 번호4(Steam4)일 수 있다. 제3 데이터(Data#3)의 특성을 식별하는 스트림 분류 번호는 스트림 분류 번호3(Stream3)일 수 있다. 제4 데이터(Data#4)의 특성을 식별하는 스트림 분류 번호는 스트림 분류 번호1(Stream1)일 수 있다. 여기에서, 스트림 분류 번호1을 포함하는 제1 데이터(Data#1) 및 제4 데이터(Data#4)는 서로 동일하거나 유사한 수명을 가질 수 있다. 다만, 도 5에 도시된 제1 내지 제4 데이터(Data#1~Data#4) 및 스트림 분류 번호1(Stream1), 스트림 분류 번호3(Stream3), 스트림 분류 번호4(Stream4)는 설명을 용이하게 하기 위해 임의적으로 선택한 용어이며, 본 발명이 이에 제한되지는 않는다. 예를 들어, 스트림 분류 번호는 Hot, Warm, 및 Cold 페이지로 구분될 수 있다.
또한, 도면에 도시하지는 않았지만, 호스트(200)로부터 수신한 데이터는 데이터(500), 및 데이터(500)의 특성을 식별하는 스트림 분류 번호(510) 외에도 어드레스 정보 및/또는 오류 정정 패리티(ECC parity)를 포함할 수 있다.
다시 도 4를 참조하면, 버퍼(130)에 데이터를 임시로 저장한다(S410).
이어서, 버퍼(130)에 저장된 데이터를 공용 메모리 영역(142)에 저장한다(S430).
다양한 상황에 따라, 버퍼(130)에 저장된 데이터를 공용 메모리 영역(142)에 저장할 수 있다. 예를 들어, 호스트(200)로부터 플러쉬(flush) 명령이 입력되면, 버퍼(130)에 저장된 데이터를 공용 메모리 영역(142)에 저장할 수 있다. 또한, 예를 들어, 버퍼(130)에 더 이상 저장될 공간이 없는 경우, 버퍼(130)에 저장된 데이터를 공용 메모리 영역(142)에 저장할 수 있다. 또한, 예를 들어, 특정 주기로 버퍼(130)에 저장된 데이터를 공용 메모리 영역(142)에 저장할 수 있다.
이어서, 공용 메모리 영역(142)에 저장된 데이터를 마이그레이션(migration)되어야 하는지 여부를 판단한다(S430). 예를 들어, 공용 메모리 영역(142)에 더 이상 저장할 공간이 없는 경우, 공용 메모리 영역(142)에 저장된 데이터를 마이그레이션을 할 수 있다. 또는, 예를 들어, 특정 주기 별로 공용 메모리 영역(142)에 저장된 데이터를 마이그레이션을 할 수 있다.
만약, 공용 메모리 영역(142)에 저장된 데이터의 마이그레이션이 필요 없는 경우, 다시 위 과정을 반복한다(S400~S420).
만약, 공용 메모리 영역(142)에 저장된 데이터의 마이그레이션을 하는 경우, 마이그레이션이 수행될 공용 메모리 영역(142)에 포함된 공용 메모리 블록을 결정한다(S440). 구체적인 설명을 위해, 도 6a 및 도 6b를 참조하여 설명한다.
도 6a 및 도 6b는 몇몇 실시예에 따른, 데이터 저장 장치의 공용 메모리 블록 중 마이그레이션이 수행될 블록을 결정하는 과정을 설명하기 위한 예시적인 도면이다.
도 6a를 참조하면, 데이터 저장 장치(100)의 공용 메모리 영역(142)은 복수개의 공용 메모리 블록(Block1, Block2)을 포함할 수 있다. 비록 도 6a에는 공용 메모리 영역(142)이 두개의 공용 메모리 블록(Block1, Block2)만 포함하는 것으로 도시하였으나, 이는 설명의 편의를 위한 것이며, 본 발명이 이에 제한되지 않는다.
또한, 도 6a에서, 제1 및 제2 공용 메모리 블록(Block1, Block2)에 스트림 분류 번호만 저장되어 있는 것으로 도시하였으나, 이는 설명의 편의를 위한 것일 뿐이다. 전술한 바와 같이, 제1 및 제2 공용 메모리 블록(Block1, Block2)에는 데이터 및 데이터와 관련된 스트림 분류 번호가 함께 저장되어 있을 수 있고, 어드레스 정보 및 에러 정정 패리티도 함께 저장되어 있을 수 있다.
공용 메모리 영역(142)에 포함된 제1 및 제2 공용 메모리 블록(Block1, Block2) 중 마이그레이션이 수행될 블록은, 제1 및 제2 공용 메모리 블록(Block1, Block2)에 각각 저장된 스트림 분류 번호의 종류가 적은 공용 메모리 블록으로 결정될 수 있다.
예를 들어, 공용 메모리 영역(142)의 제1 공용 메모리 블록(Block1)은 스트림 분류 번호1 내지 스트림 분류 번호8(Stream1~Stream8)가 저장되어 있을 수 있다. 다시 말해서, 제1 공용 메모리 블록(Block1)은 8개의 종류의 스트림 분류 번호가 저장되어 있을 수 있다. 공용 메모리 영역(142)의 제2 메모리 블록(Block2)은 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3)가 저장되어 있을 수 있다. 다시 말해서, 제2 공용 메모리 블록(Block2)은 3개의 종류의 스트림 분류 번호가 저장되어 있을 수 있다.
따라서, 제1 공용 메모리 블록(Block1)과 제2 공용 메모리 블록(Block2) 중 마이그레이션이 수행될 블록으로 제2 공용 메모리 블록(Block2)을 선택할 수 있다.
복수개의 공용 메모리 블록 중 저장된 스트림 분류 번호의 종류의 개수가 가장 적은 블록을 마이그레이션이 수행될 블록으로 선택하면, 쓰기 증폭 계수(WAF: Write Amplification Factor)를 최소화할 수 있고, 소비 전력을 낮출 수 있다.
도 6b를 참조하면, 데이터 저장 장치(100)의 공용 메모리 영역(142)은 복수개의 공용 메모리 블록을 포함할 수 있다. 설명의 편의를 위해 도 6a의 설명 내용과 중복되는 설명은 생략하거나, 간단히 설명한다.
공용 메모리 영역(142)에 포함된 복수개의 공용 메모리 블록 중 마이그레이션이 수행될 블록은, 각각의 복수의 공용 메모리 블록에 저장된 데이터 중 유효 데이터(Valid Data)의 개수가 가장 적은 블록으로 결정될 수 있다.
예를 들어, 도 6b에 도시된 유효 데이터(Valid Data)의 넓이와 무효 데이터(Invalid Data)의 넓이는 각각 제1 및 제2 공용 메모리 블록(Block1, Block2)에 저장된 데이터 중 유효 데이터(Valid Data)와 무효 데이터(Invalid Data)가 차지하는 비율을 의미할 수 있다. 예를 들어, 제1 공용 메모리 블록(Block1)의 유효 데이터(Valid Data)의 개수는 제1 공용 메모리 블록(Block1)의 무효 데이터(Invalid Data)의 개수보다 많을 수 있다. 또한, 제2 공용 메모리 블록(Block2)의 유효 데이터(Valid Data) 개수는 제2 공용 메모리 블록(Block2)의 무효 데이터(Invalid Data)의 개수보다 적을 수 있다. 뿐만 아니라, 제1 공용 메모리 블록(Block1)과 제2 공용 메모리 블록(Block2)의 크기가 동일하다면, 제1 블록(Block1)의 유효 데이터(Valid Data)의 개수는 제2 공용 메모리 블록(Block2)의 유효 데이터(Valid Data)의 개수보다 많을 수 있다.
따라서, 제1 공용 메모리 블록(Block1)과 제2 공용 메모리 블록(Block2) 중 마이그레이션될 블록으로 제2 공용 메모리 블록(Block2)을 선택할 수 있다. 또한, 마이그레이션은 제2 공용 메모리 블록(Block2)에 저장된 유효 데이터(Valid Data)에 대해서만 수행될 수 있다.
복수개의 공용 메모리 블록 중 저장된 스트림 분류 번호의 종류의 개수가 가장 적은 블록을 마이그레이션이 수행될 블록으로 선택하면, 쓰기 증폭 계수(WAF: Write Amplification Factor)를 최소화할 수 있고, 소비 전력을 낮출 수 있다.
비록 도 6a 및 도 6b에서는, 공용 메모리 영역(142)의 복수개의 공용 메모리 블록 중 하나의 블록을 마이그레이션될 블록으로 결정하는 것으로 설명하였으나, 본 발명이 이에 제한되지는 않는다. 예를 들어, 공용 메모리 영역(142)에 마이그레이션이 필요하면, 공용 메모리 영역(142)의 복수개의 공용 메모리 블록 중 일부를 마이그레이션될 블록으로 결정할 수 있다. 예를 들어, 공용 메모리 영역(142)에 마이그레이션이 필요하면, 공용 메모리 영역(142)의 복수개의 블록 중 전부를 마이그레이션될 블록으로 결정할 수 있다.
또한, 몇몇 실시예에서, 마이그레이션은 백그라운드 동작(background operation)으로 수행될 수 있다. 다시 말해서, 마이그레이션은 호스트(200)로부터 수신되는 명령(command)이 없어도, 컨트롤러(120)가 마이그레이션이 필요하다고 판단하는 경우, 마이그레이션을 수행할 수 있다. 예를 들어, 마이그레이션은 호스트(200)로부터 수신되는 명령(command)이 없을 때, 즉 저장 장치(100)가 아이들(idle) 상태일 때 수행될 수 있으나, 이에 제한되지는 않는다.
다시 도 4를 참조하면, 공용 메모리 영역(142) 중 마이그레이션이 수행될 공용 메모리 블록이 결정되면, 해당 공용 메모리 블록에 저장된 데이터를 전용 메모리 영역(144)로 마이그레이션한다(S450). 예를 들어, 공용 메모리 영역(142)에 저장된 데이터의 마이그레이션은 저장 장치(100)의 컨트롤러(120)가 수행할 수 있으나, 이에 제한되지는 않는다. 마이그레이션에 대한 구체적인 설명을 위해 도 7을 참조하여 설명한다.
도 7은 몇몇 실시예에 따른 데이터 저장 장치의 공용 메모리 영역에 저장된 데이터를 전용 메모리 영역으로 마이그레이션하는 과정을 설명하기 위한 예시적인 순서도이다.
도 7을 참조하면, 마이그레이션할 데이터를 결정한다(S451).
마이그레이션할 데이터가 저장될, 전용 메모리 영역(144)의 전용 메모리 블록이 존재하는지 판별한다(S452).
마이그레이션할 데이터가 저장될 전용 메모리 블록이 존재하는 경우, 마이그레이션할 데이터를 각각의 전용 메모리 블록에 저장한다(S454).
마이그레이션할 데이터가 저장될 전용 메모리 블록이 존재하지 않는 경우, 마이그레이션할 데이터를 저장할 각각의 전용 메모리 블록을 할당하고, 마이그레이션할 데이터를 각각의 전용 메모리 블록에 저장한다(S453, S454).
마이그레이션이 완료된 공용 메모리 블록을 이레이즈(erase)한다(S455). 마이그레이션에 관한 예시적인 설명을 위해 도 8a 및 도 8b를 참조하여 설명한다.
도 8a 및 도 8b는 몇몇 실시예에 따른 데이터 저장 장치의 공용 메모리 영역의 마이그레이션을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해 앞서 설명한 내용과 중복되는 설명은 생략하거나 간단히 설명한다.
도 8a를 참조하면, 데이터 저장 장치(100)의 비휘발성 메모리(140)는 공용 메모리 영역(142) 및 전용 메모리 영역(144)을 포함할 수 있다. 전술한 바와 같이, 공용 메모리 영역(142)은 스트림 분류 번호의 종류에 관계 없이 임시로 데이터가 저장되는 블록일 수 있다. 전용 메모리 영역(144)은 하나의 스트림 분류 번호에 대한 데이터만 저장되는 블록일 수 있다.
도 8a를 참조하면, 공용 메모리 영역(142)에 포함된 제2 공용 메모리 블록(Block2)이 마이그레이션이 수행될 블록으로 결정된다. 또한, 제2 공용 메모리 블록(Block2)에 저장된 데이터들은 각각 스트림 분류 번호1(Stream1), 스트림 분류 번호2(Stream2), 또는 스트림 분류 번호3(Stream3)을 포함할 수 있다. 비록 도면에는 도시하지 않았지만, 공용 메모리 영역(142)에는 비할당된 공용 메모리 블록이 존재할 수 있다.
전용 메모리 영역(144)은 복수개의 전용 메모리 블록을 포함할 수 있다. 전용 메모리 영역(144)은 비할당된 전용 메모리 블록(Unallocated1~)을 포함할 수 있다.
제2 공용 메모리 블록(Block2)에서 각각 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3)를 포함하는 제1 내지 제3 데이터(Data#1~Data#3)는 각각 제1 내지 제3 전용 메모리 블록(Stream Block1~Stream Block3)에 저장될 수 있다. 비록 도 8a에는, 제1 내지 제3 데이터(Data#1~Data#3)만 각각 제1 내지 제3 전용 메모리 블록(Stream Block1~Stream Block3)에 저장되는 것으로 도시하였지만, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 제1 내지 제3 전용 메모리 블록(Stream Block1~Stream Block3)에는 제1 내지 제3 데이터(Data#1~Data#3) 외에도 각각 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3), 어드레스 정보, 및/또는 에러 정정 패리티가 저장될 수 있다.
도 8b를 참조하면 공용 메모리 영역(142)에서, 제2 공용 메모리 블록(Block2)이 마이그레이션이 수행될 블록으로 결정된다. 또한, 제2 공용 메모리 블록(Block2)에 저장된 스트림 분류 번호들 중 일부 스트림 분류 번호, 즉, 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3)에 대해 마이그레이션 하도록 결정한다. 예를 들어, 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3)는 제2 공용 메모리 블록(Block2)에 저장된 스트림 분류 번호들 중, 스트림 분류 번호의 개수가 많은 순서대로일 수 있다. 예를 들어, 제2 공용 메모리 블록(Block2)에 포함된 복수의 스트림 분류 번호 중 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3)는 제2 공용 메모리 블록(Block2)에서 스트림 분류 번호의 개수가 가장 많은 3개의 스트림 분류 번호일 수 있다. 비록 도 8b에서, 제2 공용 메모리 블록(Block2)의 스트림 분류 번호 중 일부로서 3개의 스트림 분류 번호, 스트림 분류 번호1 내지 스트림 분류 번호3(Stream1~Stream3)를 선택하였으나, 본 발명이 스트림 분류 번호의 개수에 제한되는 것은 아니다. 예를 들어, 마이그레이션이 수행될 스트림 분류 번호는 제2 공용 메모리 블록(Block2)의 상위 8개의 스트림 분류 번호일 수 있다.
비록, 마이그레이션할 데이터를 결정할 때, 버퍼(130)에 저장된 스트림 분류 번호의 개수에 기초하여, 데이터를 결정하였지만 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 제2 공용 메모리 블록(Block2)에서 마이그레이션할 데이터를 결정할 때, 이미 전용 메모리 블록이 할당되어 있는 스트림 분류 번호들을 포함하는 데이터들에 대해서 마이그레이션할 수 있다. 마이그레이션할 데이터를 결정하는 것은, 본 발명의 기술분야에서 통상의 지식을 가진 자가 적절한 방법으로 선택할 수 있을 것이다.
또한, 비록 도면에서는 하나의 공용 메모리 블록만 마이그레이션 하는 것을 설명하였으나, 이는 설명의 편의를 위한 것이며, 본 발명이 이에 제한되지 않는다.
몇몇 실시예에서, 버퍼(130)에 저장된 데이터를 비휘발성 메모리(140)에 저장할 때, 데이터가 포함하는 스트림 분류 번호에 따라 데이터가 저장될 블록을 각각 할당하고 분배할 필요가 없이, 각각의 데이터에 포함된 스트림 분류 번호에 관계 없이, 데이터를 공용 메모리 영역(142)에 저장함으로써, 데이터 저장 장치(100)가 소비하는 소비 전력과 쓰기 증폭 계수를 감소시킬 수 있다.
도 9는 다른 몇몇 실시예에 따른 데이터 저장 장치의 동작 과정을 설명하기 위한 예시적인 순서도이다. 설명의 편의를 위해 앞서 설명한 내용과 중복되는 설명은 생략하거나 간단히 설명한다.
도 9를 참조하면, 호스트(200)로부터 스트림 분류 번호가 포함된 데이터를 수신하여 버퍼에 저장한다(S900, S910).
전용 스트림 분류 번호를 결정하고, 전용 메모리 블록(도 11, 610)을 할당한다(S920). 전용 메모리 블록(도 11, 610)은 전용 메모리 영역(144)에 포함될 수 있다. 몇몇 실시예에서, 버퍼(130)에 저장된 데이터를 비휘발성 메모리(140)에 저장할 때, 전용 스트림 분류 번호를 포함하는 데이터는 공용 메모리 영역(142)이 아니라, 전용 메모리 영역(144)에 저장될 수 있다. 전용 스트림 분류 번호를 결정하는 방법에 대한 구체적인 설명을 위해 도 10을 참조하여 설명한다.
도 10은 몇몇 실시예에 따른 전용 스트림 분류 번호를 결정하는 방법을 설명하기 위한 예시적인 순서도이다.
도 10을 참조하면, 버퍼(130)에 저장된 스트림 분류 번호의 저장 빈도를 파악한다(S921).
버퍼(130)에 저장된 스트림 분류 번호의 저장 빈도가 미리 정한 빈도를 초과하는지 여부를 판별한다(S922).
버퍼(130)에 저장된 스트림 분류 번호의 저장 빈도가 미리 정한 빈도를 초과하면, 즉, 호스트(200)로부터 수신되는 스트림 분류 번호가 미리 정한 빈도보다 더 자주 수신되면, 해당 스트림 분류 번호는 전용 스트림 분류 번호로 결정된다(S923).
버퍼(130)에 저장된 스트림 분류 번호의 저장 빈도가 미리 정한 빈도 이하이면, 해당 스트림 분류 번호는 공용 스트림 분류 번호로 결정된다(S923). 공용 스트림 분류 번호는 도 1 내지 도 8b를 이용해 설명한 스트림 분류 번호와 동일하거나 유사할 수 있다.
전용 스트림 분류 번호가 결정되고, 전용 메모리 블록(도 11, 610)이 할당되어 있지 않은 경우, 컨트롤러(120)는 전용 메모리 영역(144)에 전용 메모리 블록(도 11, 610)을 할당할 수 있다.
다시 도 9를 참조하면, 버퍼(130)에 저장된 스트림 분류 번호가 전용 스트림 분류 번호인지 여부를 판단한다(S930).
버퍼(130)에 저장된 스트림 분류 번호가 전용 스트림 분류 번호면, 전용 스트림 분류 번호를 포함하는 데이터는 전용 메모리 영역(도 11, 610)에 저장한다(S940).
버퍼(130)에 저장된 스트림 분류 번호가 전용 스트림 분류 번호가 아니면(공용 스트림 분류 번호이면), 공용 스트림 분류 번호를 포함하는 데이터를 공용 메모리 영역(142)에 저장하고, 필요에 따라 마이그레이션한다(S950, S960). 상기 마이그레이션은 앞서 설명한 마이그레이션과 동일한 과정을 거칠 수 있다.
즉, 버퍼(130)에 저장된 데이터를 비휘발성 메모리(140)에 플러쉬할 때, 각각의 데이터가 포함하는 스트림 분류 번호가 전용 스트림 분류 번호인지 공용 스트림 분류 번호인지 여부를 기초로, 비휘발성 메모리(140)의 공용 메모리 영역(142)에 저장하거나, 전용 메모리 영역(144)에 저장할 수 있다. 설명의 이해를 돕기 위해, 도 11을 참조하여 설명한다.
도 11은 몇몇 실시예에 따른 전용 스트림 분류 번호를 결정하고, 스트림 분류 번호의 종류에 따라, 데이터를 비휘발성 메모리의 서로 다른 영역에 분배하여 저장하는 방법을 설명하기 위한 예시적인 도면이다.
도 11을 참조하면, 호스트(200)로부터 수신된, 각각의 스트림 분류 번호를 포함하는 데이터는 임시로 버퍼(130)에 저장될 수 있다. 컨트롤러(120)에 포함된 얼로케이터(122)는 버퍼(130)에 저장된 데이터의 스트림 분류 번호를 기초로, 각각의 데이터를 공용 메모리 영역(142)에 저장할 지, 전용 메모리 영역(144)에 포함된 전용 메모리 블록(610)에 저장할 지 결정할 수 있다.
예를 들어, 설명의 편의를 위해 미리 정한 빈도수를 0.5로 가정하여 설명한다. 버퍼(130)에 저장된 데이터는 스트림 분류 번호를 포함할 수 있다. 버퍼(130)에 저장된 스트림 분류 번호1(Stream1)은 7개, 스트림 분류 번호2(Stream2)는 2개, 스트림 분류 번호3(Stream3)은 1개, 스트림 분류 번호4(stream4)는 1개, 스트림 분류 번호5(Stream5)는 1개일 수 있다. 즉, 스트림 분류 번호1(stream1)의 빈도는 7/12, 스트림 분류 번호2(Stream2)의 빈도는 1/6, 스트림 분류 번호3 내지 스트림 분류 번호5(Stream3~Stream5)의 빈도는 1/12일 수 있다.
따라서, 버퍼(130)에 저장된 스트림 분류 번호1(Stream1)의 저장 빈도가 0.5를 초과하므로, 스트림 분류 번호1(Stream1)은 전용 스트림 분류 번호로 결정될 수 있다. 이에 따라, 스트림 분류 번호1(Stream1)을 포함하는 데이터만 저장되는, 스트림 분류 번호1(Stream1)에 대한 전용 메모리 블록(610)이 전용 메모리 영역(144)에 할당될 수 있다. 스트림 분류 번호2 내지 스트림 분류 번호5(Stream2~Stream5)는 빈도수가 0.5를 초과하지 않으므로 공용 스트림 분류 번호로 결정될 수 있다. 스트림 분류 번호2 내지 스트림 분류 번호5(Stream2~Stream5)는 공용 메모리 영역(142)에 저장될 수 있다.
예를 들어, 호스트(200)로부터 플러쉬(flush) 명령이 수신되면, 컨트롤러(120)는 버퍼(130)에 저장된 데이터를 비휘발성 메모리(140)로 전송할 수 있다. 이때, 제2 및 제3 데이터(Data#2, Data#3), 제5 및 제6 데이터(Data#5, Data#6), 및 제9 데이터(Data#9)는 공용 메모리 영역(142)에 저장될 수 있다. 또한, 제1 데이터(Data#1), 제4 데이터(Data#4), 제7 및 제8 데이터(Data#7, Data#8), 및 제10 내지 제12 데이터(Data#10, Data#11, Data#12)는 스트림 분류 번호1(Stream1)에 대한 전용 메모리 블록(610)에 저장될 수 있다.
도 12a 및 도 12b는 몇몇 실시예에 따른 데이터를 공용 메모리 블록에 저장하는 방법에 대해 설명하기 위한 예시적인 도면이다.
도 12a를 참조하면, 만약 호스트(200)로부터 수신되는 데이터가 페이지 단위인 경우, 또는 버퍼(130)에 저장된 데이터가 페이지 단위인 경우, 공용 메모리 영역(142)에 포함된 공용 메모리 블록(Block1~BlockK) 중에서, 블록이 할당되어 있고 저장될 공간이 있는 블록(Block1)에 순차적으로 저장할 수 있다. 만약, 할당되어 있는 공용 메모리 블록이 없는 경우, 새로 블록을 할당하여 데이터를 저장할 수 있다. 만약, 공용 메모리 블록에 저장될 공간이 없는 경우, 앞서 언급한 바와 같이 마이그레이션 후, 마이그레이션을 수행한 공용 메모리 블록을 이레이즈하여, 이레이즈된 공용 메모리 블록에 저장할 수 있다.
도 12b를 참조하면, 만약 호스트(200)로부터 수신되는 데이터가 블록 단위인 경우, 또는 버퍼(130)에 저장된 데이터가 블록 단위인 경우, 공용 메모리 영역(142)에 할당되지 않은 블록(Block2)을 새로 할당하여, 데이터를 저장할 수 있다. 만약, 공용 메모리 블록에 저장될 공간이 없는 경우, 앞서 언급한 바와 같이 마이그레이션 후, 마이그레이션을 수행한 공용 메모리 블록을 이레이즈하여, 이레이즈된 공용 메모리 블록에 저장할 수 있다.
다시 말해서, 페이지 단위의 데이터는 순차적으로 저장하고, 블록 단위의 데이터는 새로 블록을 할당하여 블록 단위의 데이터를 한번에 저장할 수 있다.
비록 도면에는 도시되지 않았지만, 본 발명에 따른 데이터 저장 장치(100)는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 데이터 저장 장치(100)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
200: 호스트 100: 저장 장치
110: 인터페이스 120: 컨트롤러
122: 얼로케이터 130: 버퍼
140: 비휘발성 메모리 150: 데이터 버스
142: 공용 메모리 영역 144: 전용 메모리 영역
610: 전용 스트림 분류 번호에 대한 전용 메모리 블록
110: 인터페이스 120: 컨트롤러
122: 얼로케이터 130: 버퍼
140: 비휘발성 메모리 150: 데이터 버스
142: 공용 메모리 영역 144: 전용 메모리 영역
610: 전용 스트림 분류 번호에 대한 전용 메모리 블록
Claims (10)
- 외부로부터 제1 및 제2 데이터를 제공받아 저장하는 버퍼(buffer);
상기 버퍼에 저장된 제1 및 제2 데이터를 저장하는 비휘발성 메모리(non-volatile Memory); 및
상기 버퍼 및 상기 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되,
상기 제1 데이터는 상기 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 상기 제2 데이터는 상기 제2 데이터의 특성을 식별하고 상기 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고,
상기 컨트롤러는,
상기 버퍼에 저장된 제1 및 제2 데이터를 상기 비휘발성 메모리의 공용 메모리 영역에 저장한 후, 상기 공용 메모리 영역에 저장된 상기 제1 데이터를 상기 공용 메모리 영역과 다른 상기 비휘발성 메모리 내의 전용 메모리 영역에 마이그레이션(migration)하되,
상기 공용 메모리 영역은 복수의 공용 메모리 블록들을 포함하며, 상기 복수의 공용 메모리 블록들 중 적어도 하나는 상기 제1 데이터와 상기 제2 데이터를 포함하며,
상기 공용 메모리 영역은 스트림 분류 번호에 상관없이 메모리 데이터들을 저장하며,
상기 전용 메모리 영역은 복수의 전용 메모리 블록들을 포함하며, 상기 복수의 전용 메모리 블록들 각각은 상기 공용 메모리 영역으로부터 수신받은 상기 메모리 데이터들 중 동일한 스트림 분류 번호를 포함하는 하나 이상의 데이터를 저장하는 데이터 저장 장치. - 제 1항에 있어서,
상기 버퍼는 제3 데이터를 더 제공받고,
상기 제3 데이터는 상기 제3 데이터의 특성을 식별하고 상기 제1 및 제2 스트림 분류 번호와 다른 제3 스트림 분류 번호를 포함하고,
상기 컨트롤러는,
상기 버퍼에 저장된 제1 내지 제3 데이터를 모두 상기 비휘발성 메모리의 공용 메모리 영역에 저장하는 데이터 저장 장치. - 제 1항에 있어서,
상기 공용 메모리 영역은 제1 및 제2 공용 메모리 블록을 포함하고,
상기 컨트롤러는,
상기 제1 및 제2 공용 메모리 블록에 저장된 데이터의 패턴을 기초로, 상기 제1 및 제2 공용 메모리 블록 중 하나 이상의 공용 메모리 블록을 선택하고,
상기 선택된 공용 메모리 블록에 저장된 제1 데이터를 상기 전용 메모리 영역에 마이그레이션하는 데이터 저장 장치. - 제 3항에 있어서,
상기 컨트롤러는,
상기 제1 및 제2 공용 메모리 블록 중 저장된 유효(valid) 데이터의 개수가 적은 공용 메모리 블록을 선택하는 데이터 저장 장치. - 제 3항에 있어서,
상기 컨트롤러는,
상기 제1 및 제2 공용 메모리 블록 중 저장된 스트림 분류 번호의 종류가 적은 공용 메모리 블록을 선택하는 데이터 저장 장치. - 제 1항에 있어서,
상기 공용 메모리 영역은 제1 및 제2 공용 메모리 블록을 포함하고,
상기 제1 공용 메모리 블록은 활성화되고, 상기 제2 공용 메모리 블록은 비활성화된 경우,
상기 컨트롤러는, 상기 제1 및 제2 데이터를 상기 공용 메모리 영역에 저장할 때,
상기 제1 및 제2 데이터의 크기가 페이지 단위이면, 상기 제1 공용 메모리 블록에 상기 제1 및 제2 데이터를 저장하고,
상기 제1 및 제2 데이터의 크기가 블록 단위이면, 상기 제2 공용 메모리 블록을 활성화하여 상기 제1 및 제2 데이터를 저장하는 데이터 저장 장치. - 외부로부터 제1 내지 제3 데이터를 제공받아 저장하는 버퍼(buffer);
상기 버퍼에 저장된 제1 내지 제3 데이터를 저장하는 비휘발성 메모리(non-volatile Memory); 및
상기 버퍼 및 상기 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되,
상기 제1 데이터는 상기 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 상기 제2 데이터는 상기 제2 데이터의 특성을 식별하고 상기 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고, 상기 제3 데이터는 상기 제3 데이터의 특성을 식별하고 상기 제1 및 제2 스트림 분류 번호와 다른 제3 스트림 분류 번호를 포함하고,
상기 컨트롤러는,
상기 버퍼에, 미리 정한 저장 빈도 이하로 저장된 상기 제1 및 제2 스트림 분류 번호를 포함하는, 상기 제1 및 제2 데이터를 상기 비휘발성 메모리의 공용 메모리 영역에 저장하되, 상기 공용 메모리 영역은 복수의 공용 메모리 블록들을 포함하며, 상기 복수의 공용 메모리 블록들 중 적어도 하나는 상기 제1 데이터 내지 상기 제3 데이터를 포함하고,
상기 버퍼에, 미리 정한 저장 빈도를 초과하여 저장된 상기 제3 스트림 분류 번호를 포함하는, 상기 제3 데이터를 상기 공용 메모리 영역과 다른 상기 비휘발성 메모리 내의 전용 메모리 영역에 저장하되,
상기 공용 메모리 영역은 스트림 분류 번호에 상관없이 메모리 데이터들을 저장하며,
상기 전용 메모리 영역은 복수의 전용 메모리 블록들을 포함하며, 상기 복수의 전용 메모리 블록들 각각은 상기 공용 메모리 영역으로부터 수신받은 상기 메모리 데이터들 중 동일한 스트림 분류 번호를 포함하는 하나 이상의 데이터를 저장하는 데이터 저장 장치. - 제 7항에 있어서,
상기 컨트롤러는,
상기 공용 메모리 영역에 저장된 상기 제1 데이터를 상기 전용 메모리 영역에 마이그레이션(migration)하는 데이터 저장 장치. - 외부로부터 제1 내지 제3 데이터를 제공받아 저장하는 버퍼(buffer);
상기 버퍼에 저장된 제1 내지 제3 데이터를 저장하는 비휘발성 메모리(non-volatile Memory); 및
상기 버퍼 및 상기 비휘발성 메모리를 제어하는 컨트롤러(controller)를 포함하되,
상기 제1 데이터는 상기 제1 데이터의 특성을 식별하는 제1 스트림 분류 번호를 포함하고, 상기 제2 데이터는 상기 제2 데이터의 특성을 식별하고 상기 제1 스트림 분류 번호와 다른 제2 스트림 분류 번호를 포함하고, 상기 제3 데이터는 상기 제3 데이터의 특성을 식별하고 상기 제1 및 제2 스트림 분류 번호와 다른 제3 스트림 분류 번호를 포함하고,
상기 비휘발성 메모리는 상기 제1 및 제2 데이터가 저장되는 공용 메모리 영역 및 상기 공용 메모리 영역과 다른, 상기 비휘발성 메모리 내의 전용 메모리 영역에 포함된, 상기 제3 데이터만 저장되는 전용 메모리 블록을 포함하되,
상기 공용 메모리 영역은 복수의 공용 메모리 블록들을 포함하며, 상기 복수의 공용 메모리 블록들 중 적어도 하나는 상기 제1 데이터 내지 상기 제3 데이터를 포함하되, 상기 공용 메모리 영역은 스트림 분류 번호에 상관없이 메모리 데이터들을 저장하는 데이터 저장 장치. - 제 9항에 있어서,
상기 컨트롤러는,
상기 공용 메모리 블록에 저장할 공간이 없는 경우, 상기 제1 데이터를, 상기 비휘발성 메모리 내의 전용 메모리 영역에 포함된, 상기 제1 데이터만 저장되는 전용 메모리 블록에 마이그레이션하는 데이터 저장 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170137357A KR102387935B1 (ko) | 2017-10-23 | 2017-10-23 | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 |
US15/984,611 US10782909B2 (en) | 2017-10-23 | 2018-05-21 | Data storage device including shared memory area and dedicated memory area |
CN201811183956.4A CN109697027B (zh) | 2017-10-23 | 2018-10-11 | 包括共享存储器区域和专用存储器区域的数据存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170137357A KR102387935B1 (ko) | 2017-10-23 | 2017-10-23 | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190044873A KR20190044873A (ko) | 2019-05-02 |
KR102387935B1 true KR102387935B1 (ko) | 2022-04-15 |
Family
ID=66169988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170137357A KR102387935B1 (ko) | 2017-10-23 | 2017-10-23 | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10782909B2 (ko) |
KR (1) | KR102387935B1 (ko) |
CN (1) | CN109697027B (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11468068B2 (en) * | 2018-12-28 | 2022-10-11 | Verizon Patent And Licensing Inc. | Method and system for concurrent generation of data sketches |
US11468086B2 (en) | 2018-12-28 | 2022-10-11 | Verizon Patent And Licensing Inc. | Method and system for concurrent generation of data sketches |
US10824569B2 (en) * | 2019-01-18 | 2020-11-03 | Arm Limited | Data processing systems |
US10802750B2 (en) * | 2019-02-28 | 2020-10-13 | Silicon Motion Inc. | Universal flash storage memory module, controller and electronic device with advanced turbo write buffer and method for operating the memory module |
US10990316B2 (en) * | 2019-06-28 | 2021-04-27 | Western Digital Technologies, Inc. | Log-based storage for different data types in non-volatile memory |
US20210056476A1 (en) * | 2019-08-21 | 2021-02-25 | Oath Inc. | Method and system for secure data sharing |
EP4038507A4 (en) | 2019-10-04 | 2022-10-19 | Visa International Service Association | PROCEDURE FOR LAYERED DATA STORAGE IN TENANT-ENABLED CACHE SYSTEMS |
KR20210158043A (ko) * | 2020-06-23 | 2021-12-30 | 삼성전자주식회사 | 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024609A1 (en) | 2011-05-17 | 2013-01-24 | Sergey Anatolievich Gorobets | Tracking and Handling of Super-Hot Data in Non-Volatile Memory Systems |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5572645A (en) | 1994-03-01 | 1996-11-05 | International Business Machines Corporation | Buffer management policy for an on-demand video server |
US20030163618A1 (en) | 2002-02-27 | 2003-08-28 | Vishal Anand | Shared queue for multiple input-streams |
JP2005020609A (ja) | 2003-06-27 | 2005-01-20 | Matsushita Electric Ind Co Ltd | データ入出力制御装置、データ入出力制御方法、データ入出力制御プログラム及び記録媒体 |
KR100601043B1 (ko) | 2003-11-13 | 2006-07-14 | 한국전자통신연구원 | 패킷을 스케줄링하는 라우터 및 그 방법 |
JP2006285809A (ja) | 2005-04-04 | 2006-10-19 | Hitachi Ltd | ストリーミング向け性能保証を行うストレージ装置 |
CN101690136A (zh) * | 2007-06-26 | 2010-03-31 | 汤姆逊许可证公司 | 实时协议流迁移 |
WO2011104741A1 (en) * | 2010-02-23 | 2011-09-01 | Hitachi, Ltd. | Management system for storage system and method for managing storage system |
US8971345B1 (en) * | 2010-03-22 | 2015-03-03 | Riverbed Technology, Inc. | Method and apparatus for scheduling a heterogeneous communication flow |
US8738572B2 (en) | 2011-05-24 | 2014-05-27 | Red Lambda, Inc. | System and method for storing data streams in a distributed environment |
WO2012161659A1 (en) | 2011-05-24 | 2012-11-29 | Agency For Science, Technology And Research | A memory storage device, and a related zone-based block management and mapping method |
CN103024823A (zh) * | 2011-09-20 | 2013-04-03 | 中兴通讯股份有限公司 | 一种流迁移的实现方法、终端和分组数据网络网关 |
EP2764440B1 (en) * | 2011-10-07 | 2021-02-17 | Hitachi, Ltd. | Storage system |
US8601347B1 (en) * | 2012-06-21 | 2013-12-03 | Hitachi, Ltd. | Flash memory device and storage control method |
CN102789427B (zh) * | 2012-07-17 | 2015-11-25 | 威盛电子股份有限公司 | 数据储存装置与其操作方法 |
CN102831088A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据迁移方法和装置 |
US9477506B2 (en) * | 2013-02-12 | 2016-10-25 | Futurewei Technologies, Inc. | Dynamic virtual machines migration over information centric networks |
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
US9785499B2 (en) * | 2014-02-12 | 2017-10-10 | Seagate Technology Llc | Hot-read data aggregation and code selection |
JP6365085B2 (ja) * | 2014-08-04 | 2018-08-01 | 富士通株式会社 | データ移行方法及びデータ移行装置 |
US9632927B2 (en) | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
US20160283124A1 (en) | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
KR102381343B1 (ko) | 2015-07-27 | 2022-03-31 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
KR102401600B1 (ko) | 2015-08-31 | 2022-05-25 | 삼성전자주식회사 | 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치 |
US9842000B2 (en) * | 2015-09-18 | 2017-12-12 | Salesforce.Com, Inc. | Managing processing of long tail task sequences in a stream processing framework |
US9880780B2 (en) * | 2015-11-30 | 2018-01-30 | Samsung Electronics Co., Ltd. | Enhanced multi-stream operations |
JP6414852B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US9921956B2 (en) * | 2016-07-20 | 2018-03-20 | Sandisk Technologies Llc | System and method for tracking block level mapping overhead in a non-volatile memory |
-
2017
- 2017-10-23 KR KR1020170137357A patent/KR102387935B1/ko active IP Right Grant
-
2018
- 2018-05-21 US US15/984,611 patent/US10782909B2/en active Active
- 2018-10-11 CN CN201811183956.4A patent/CN109697027B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024609A1 (en) | 2011-05-17 | 2013-01-24 | Sergey Anatolievich Gorobets | Tracking and Handling of Super-Hot Data in Non-Volatile Memory Systems |
Also Published As
Publication number | Publication date |
---|---|
US20190121567A1 (en) | 2019-04-25 |
US10782909B2 (en) | 2020-09-22 |
CN109697027B (zh) | 2024-02-02 |
KR20190044873A (ko) | 2019-05-02 |
CN109697027A (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102387935B1 (ko) | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 | |
US10592117B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10209894B2 (en) | Memory system and method for controlling nonvolatile memory | |
KR100923990B1 (ko) | 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템 | |
KR101861170B1 (ko) | 마이그레이션 관리자를 포함하는 메모리 시스템 | |
US20160062885A1 (en) | Garbage collection method for nonvolatile memory device | |
KR102688570B1 (ko) | 메모리 시스템 및 이의 동작 방법 | |
EP3511814B1 (en) | Storage device storing data in order based on barrier command | |
US20100030948A1 (en) | Solid state storage system with data attribute wear leveling and method of controlling the solid state storage system | |
US10203899B2 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
KR20150138528A (ko) | 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법 | |
KR20130057306A (ko) | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 | |
KR20140026933A (ko) | 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법 | |
KR20170071085A (ko) | 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 | |
KR20130032155A (ko) | 데이터 저장 장치 및 그것의 데이터 관리 방법 | |
KR101374065B1 (ko) | 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치 | |
KR20120081351A (ko) | Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법 | |
KR102079939B1 (ko) | 데이터 저장 장치 및 그것의 명령어 스케줄링 방법 | |
KR20200133716A (ko) | 저장 캐시 관리 | |
WO2019000982A1 (zh) | 一种存储系统、固态硬盘和数据存储方法 | |
US20240330175A1 (en) | Storage device for classifying data based on stream class number, storage system, and operating method thereof | |
US10353641B2 (en) | Storage system and method of managing volumes thereof based on received correlation information of the volumes | |
US20160132251A1 (en) | Operating method of storage device and data writing method for writing data into storage device | |
TWI786288B (zh) | 儲存裝置、儲存裝置的控制方法及記錄媒體 | |
TW201624491A (zh) | 資訊處理裝置及非暫態電腦可讀取記錄媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |