KR20180048251A - 다중-스트림 스킴에서 희생 스트림 선택 알고리즘들 - Google Patents

다중-스트림 스킴에서 희생 스트림 선택 알고리즘들 Download PDF

Info

Publication number
KR20180048251A
KR20180048251A KR1020170058201A KR20170058201A KR20180048251A KR 20180048251 A KR20180048251 A KR 20180048251A KR 1020170058201 A KR1020170058201 A KR 1020170058201A KR 20170058201 A KR20170058201 A KR 20170058201A KR 20180048251 A KR20180048251 A KR 20180048251A
Authority
KR
South Korea
Prior art keywords
stream
streams
sacrificial
data
host
Prior art date
Application number
KR1020170058201A
Other languages
English (en)
Other versions
KR102218737B1 (ko
Inventor
최창호
쯔엉 응우엔
웬타오 우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180048251A publication Critical patent/KR20180048251A/ko
Application granted granted Critical
Publication of KR102218737B1 publication Critical patent/KR102218737B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

방법은 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하는 단계, 스트림 속성을 저장소에 저장하는 단계, 그리고 스트림 속성에 기반하여 복수의 스트림들 중에서 희생 스트림을 선택하는 단계를 포함한다. 스트림 속성은 타임 스탬프, 갱신 빈도, 그리고 복수의 스트림들의 각각에 기입되는 데이터의 양의 하나 또는 그보다 많은 것일 수 있다.

Description

다중-스트림 스킴에서 희생 스트림 선택 알고리즘들{VICTIM STREAM SELECTION ALGORITHMS IN THE MULTI-STREAM SCHEME}
본 기재는 일반적으로 불휘발성 메모리에 관한 것으로, 더 상세하게는 복수의 스트림들 중에서 희생 스트림을 선택하여 불휘발성 메모리를 액세스하기 위한 시스템 및 방법에 관한 것이다.
다중-스트림 스토리지 장치는 다수의 스트림들에서 데이터를 처리하는 것이 가능하다. 예를 들어, 다중-스트림 스토리지 장치에 대한 데이터 액세스는 다수의 스트림들에서 분리될 수 있으며, 각 스트림의 데이터는 함께 기입될 수 있다. 논리적으로 연관된 또는 유사한 수명 그리고/또는 갱신 빈도를 갖는 데이터는 함께 그룹화되어, 다중-스트림 스토리지 장치의 효율을 향상할 수 있다.
솔리드-스테이트 드라이브(SSD)의 성능 및 내구도를 향상하기 위하여, 다양한 다중-스트림 스킴들(schemes)이 개발되어 왔고 채용되어 왔다. 동시에 이용될 수 있는 스트림들의 개수는 CPU 및 메모리와 같은 SSD 내에서 가용한 제한된 자원들로 인해 제한된다. 호스트(또는 서버)가 지원될 수 있는 개수의 스트림들보다 더 많은 스트림들을 사용하기를 원할 때, 호스트는 열린 스트림을 닫고 새로운 스트림을 열 수 있다. 또는, 필요에 따라 SSD는 스스로 열린 스트림을 암암리에 닫고, 새로운 스트림을 열고, 그리고 새로운 스트림에서 호스트에 의한 데이터 액세스 요청을 지원할 수 있다. 스트림을 닫는 호스트의 커맨드에 응답하여 또는 SSD가 스트림을 암암리에 닫을 필요가 있을 때, SSD는 열린 스트림들 중에서 닫힐 희생 스트림을 판단하여야만 한다.
본 발명의 목적은 복수의 스트림들 중에서 닫을 희생 스트림을 효과적으로 선택하는 방법 및 시스템을 제공하는 데에 있다.
일 실시 예에 따르면, 방법은 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하는 단계, 스트림 속성을 저장소에 저장하는 단계, 그리고 스트림 속성에 기반하여 복수의 스트림들 중에서 희생 스트림을 선택하는 단계를 포함한다. 스트림 속성은 타임 스탬프, 갱신 빈도, 그리고 복수의 스트림들의 각각에 기입되는 데이터의 양의 하나 또는 그보다 많은 것일 수 있다.
또 다른 실시 예에 따르면, 메모리 시스템은 호스트, 불휘발성 메모리, 호스트 및 불휘발성 메모리 사이에서 상호 작용(interface)하도록 구성되는 다중-스트림 인터페이스, 그리고 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하고, 스트림 속성을 저장소에 저장하고, 그리고 스트림 속성에 기반하여 복수의 스트림들 중에서 희생 스트림을 선택하도록 구성되는 희생-스트림 선택 로직을 포함한다.
사건들(events)의 구현 및 조합의 다양한 신규한 상세들을 포함하는 위의 설명 및 다른 선호되는 특성들이 이제 첨부된 도면들을 참조하여 더 상세하게 설명되고 그리고 청구항들에서 언급될 것이다. 여기에서 설명되는 특정한 시스템들 및 방법들은 단지 설명의 방법으로 보여지며 한정들로 보여지지 않음이 이해될 것이다. 이 분야에 숙련된 자들에게 이해될 바와 같이, 여기에서 설명되는 원리들 및 특성들은 본 공개의 범위로부터 벗어나지 않으면서 다양하고 많은 실시 예들에서 채용될 수 있다.
본 발명에 따르면, 스트림들의 속성들에 기반하여 닫을 희생 스트림이 선택된다. 따라서, 닫을 희생 스트림을 효과적으로 선택하는 방법 및 시스템이 제공된다.
본 명세서의 일부로 포함되는 첨부된 도면들은 현재 선호되는 실시 예를 보여주며, 위에서 주어진 일반적인 설명과 아래에 주어진 선호되는 실시 예의 상세한 설명과 함께 여기에 기재된 원리들을 설명 및 지도하는 것을 제공한다.
도 1은 일 실시 예에 따른 호스트 및 불휘발성 메모리 사이의 예시적인 다중-스트림 인터페이스를 보여준다.
도 2는 일 실시 예에 따른 데이터 배치의 예를 보여준다.
도 3은 일 실시 예에 따른 예시적인 다중-스트림 시스템의 계층화된 구조를 보여준다.
도 4a는 일 실시 예에 따른 타임 스탬프를 포함하는 스트림 속성들의 예시적인 표이다.
도 4b는 일 실시 예에 따른 갱신 빈도를 포함하는 스트림 속성들의 예시적인 표이다.
도 4c는 일 실시 예에 따른 스트림에 기입되는 데이터의 양을 포함하는 스트림 속성들의 예시적인 표이다.
도면들은 필연적으로 비율에 따른 것이 아니며, 유사한 구조들 또는 함수들의 요소들은 도면들에 걸쳐 설명의 목적들을 위하여 유사한 참조 번호들로 나타내어진다. 도면들은 단지 여기에 기재된 다양한 실시 예들의 설명을 용이하게 하는 것으로 의도된다. 도면들은 여기에 기재된 사상들의 모든 측면을 설명하지 않으며, 청구항들의 범위를 한정하지 않는다.
여기에 기재된 특성들 및 사상들의 각각은 개별적으로 또는 다른 특성들 및 사상들과 함께 활용되어, 복수의 스트림들 중에서 희생 스트림을 선택하여 불휘발성 메모리를 액세스하기 위한 시스템 및 방법을 제공할 수 있다. 이러한 추가적인 특성을 및 사상들의 많은 부분을 활용하는 대표적인 예들은, 개별적으로 그리고 조합되어, 첨부된 도면들을 참조하여 더 상세하게 설명된다. 상세한 설명은 본 사상들의 측면들을 실시하기 위한 추가적인 상세들을 이 분야에 숙련된 자에게 가르치기 위해서만 의도되며, 청구항들의 범위를 한정하는 것으로 의도되지 않는다. 따라서, 상세한 설명에서 아래에 기재된 특성들의 조합들은 가장 넓은 의미에서 사상들을 실시하기 위해 필수적이지 않을 수 있으며, 대신 본 사상들의 특별히 대표적인 예들을 지도하는 것에 불과하다.
아래의 설명에서, 설명의 목적들만을 위하여, 특정한 명명법(nomenclature)이 제시되어 본 기재의 철저한 이해를 제공한다. 그러나, 이러한 구체적인 상세들은 본 기재의 사상들을 실시하기 위해 필요하지 않음이 이 분야에 숙련된 자에게 명백하다.
여기의 상세한 설명들의 일부분은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작들의 알고리즘들 및 기호적 표현들(symbolic representations)의 관점으로 제시된다. 이러한 알고리즘적 설명들 및 표현들은 이 분야에 숙련된 자들이 그들의 작업의 핵심을 이 분야에 숙련된 다른 자들에게 효과적으로 전달하기 위해 사용된다. 여기에서, 알고리즘은 일반적으로 필요한 결과로 이끄는 일관성 있는 단계들의 시퀀스로 잉태된다. 단계들은 물리적 수량들의 물리적 처리들을 필요로 하는 것들이다. 보통, 필연적이지는 않지만, 이러한 수량들은 저장되고, 전송되고, 조합되고, 비교되고, 그리고 그렇지 않으면 처리될 수 있는 전기적 또는 자기적 신호들의 형태를 갖는다. 주로 통상적인 사용의 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 참조하는 것이 편리함이 때때로 증명되어 왔다.
그러나, 이들 및 유사한 용어들 모두가 적절한 물리적 수량들과 연관되어야 하고 이러한 수량들에 적용되는 편리한 표시들에 불과함이 유의되어야 한다. 아래의 설명으로부터 명백한 바와 같이, 특별히 다르게 기술되지 않으면, "처리하는(processing)", "연산하는(컴퓨팅, computing)", "계산하는(calculating)", 판단하는(determining)", "표시하는(displaying)" 또는 이와 유사한 것과 같은 용어들을 활용하는 설명들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 수량들로 나타내어지는 데이터를 컴퓨터 시스템의 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 전송 또는 표시 장치들 내의 물리적 수량들로 유사하게 나타내어지는 다른 데이터로 처리 및 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 활동 및 절차들을 참조함이 설명의 전체에 걸쳐 이해된다.
여기에 제공되는 알고리즘들은 어느 특정한 컴퓨터 또는 다른 장치와 본질적으로 연관되지 않는다. 다양한 범용 시스템들, 컴퓨터 서버들, 또는 개인용 컴퓨터들이 여기의 사상에 따른 프로그램들을 갖고 사용될 수 있거나, 또는 필요한 방법 단계들을 수행하기 위한 더 특별한 장치를 구성하는 것이 편리함이 입증될 수 있다. 이러한 여러가지 시스템들을 위해 필요한 구조는 아래의 설명으로부터 나타날 것이다. 다양한 프로그램 언어들이 여기에 기술된 바와 같이 본 공개의 사상을 구현하기 위해 사용될 수 있다.
또한, 대표적인 예들 및 의존적인 청구항들의 다양한 특성들은 본 사상들의 추가적인 유용한 실시 예들을 제공하기 위해 구체적으로 그리고 명시적으로 열거되지 않은 방법들로 조합될 수 있다. 모든 값 범위들 또는 엔티티들(entities)의 그룹들의 표시들은 청구된 주제들을 한정하는 목적뿐 아니라 최초 공개의 목적으로 모든 가능한 중간 값 또는 중간 엔티티를 나타내는 것 또한 명확히 유의되어야 한다. 도면들에 보여진 구성 요소들의 차원들 및 형태들은 본 사상이 어떻게 실시되는지 이해하는 것을 돕도록 설계되었으며, 예들에서 보여지는 차원들 및 형태들을 제한하는 것으로 의도되지 않는 것 또한 명확히 유의되어야 한다.
본 공개는 불휘발성 메모리를 구동하기 위한 복수의 스트림들 중에서 후보 희생 스트림을 선택하기 위한 스킴을 포함하는 다중-스트림 스킴을 설명한다. 일 실시 예에서, 본 다중-스트림은 다양한 속성들(attributes) 및 선택 기준에 기반하여 복수의 열린 스트림들 중에서 하나 또는 그보다 많은 후보 희생 스트림들을 선택할 수 있다. 희생 스트림을 선택하기 위해 사용되는 속성들의 예들은 가장 오래된 스트림, 가장 적은 빈도로 사용되는 스트림, 그리고 가장 많이 채워진 스트림을 포함하며, 한정되지 않는다. 희생 스트림 선택 기준은 사용자 설정에 기반하여 선택될 수 있다.
본 다중-스트림 스킴은, 명백하게(명시적으로) 하나 또는 그보다 많은 스트림들을 닫고 그리고 하나 또는 그보다 많은 새 스트림들을 열므로써, 불휘발성 메모리가 지원할 수 있는 것보다 더 많은 수의 스트림들을 호스트 및 불휘발성 메모리가 지원하는 것을 허용한다. 일부 실시 예들에서, 본 다중-스트림 스킴은 불휘발성 메모리의 동작 상태들 또는 사용자 선호에 의존하여 불휘발성 메모리에서 스트림들에 대한 유연한 개수를 지원할 수 있다.
본 다중-스트림 스킴은 불휘발성 메모리의 레이턴시(latency) 일관성을 유지하면서 향상된 내구도 및 성능을 제공할 수 있다. 본 다중-스트림 스킴은 호스트가 각 쓰기 동작을 스트림과 연관하는 것을 허용한다. 스트림과 연관된 모든 데이터는 동일한 시간에 또는 대략 동일한 시간에 무효화, 예를 들어 갱신(updated), 트림(trimmed), 언맵(unmapped), 그리고 할당 해제(deallocated)될 것으로 예측된다. 호스트에 의해 요청되는 로그 데이터, 메타 데이터, 데이터베이스 데이터, 그리고 멀티미디어 데이터와 같은 다양한 데이터는 응용(application) 데이터 특성들(characteristics)에 기반하여 불휘발성 메모리의 메모리 블록들에서 정렬될 수 있다. 응용 데이터 특성들의 예는 갱신 빈도이다.
도 1은 일 실시 예에 따른 호스트 및 불휘발성 메모리 사이의 예시적인 다중-스트림 인터페이스를 보여준다. 호스트(101)는 다중-스트림 인터페이스(131)를 통해 불휘발성 메모리(151)와 결합된다. 다중-스트림 인터페이스(131)는 호스트(101) 내에서 또는 불휘발성 메모리(151) 내에서 로직으로 또는 설정에 의존하여 외부 로직으로 구현될 수 있다. 다중-스트림 인터페이스(131)는 호스트(101)가 불휘발성 메모리(151)에 기입될 데이터의 특성들에 대한 정보를 제공하는 것을 허용한다.
호스트(101)는 커널 또는 응용(105)을 포함한다. 일 실시 예에서, 커널/응용(105)은 데이터 갱신 빈도에 대한 정보를 다중-스트림 인터페이스(131)를 통해 불휘발성 메모리(151)에 제공할 수 있다. 커널/응용(105)은 데이터를 각 스트림들로 그룹화하고, 그리고 스트림들의 각각에 대한 갱신 빈도를 제공할 수 있다. 본 예에서, 데이터(2)는 메타 데이터이고, 데이터(1), 데이터(3), 데이터(4) 및 데이터(5)는 사용자 데이터이고, 데이터(10) 및 데이터(13)는 임시 데이터이다. 각 데이터는 스트림 식별자(ID) 번호와 연관되고, 스트림 ID에 기반하여 열린 스트림의 하나에서 불휘발성 메모리(151)로 스트림된다(streamed). 일 실시 예에서, 동일한 또는 유사한 특성들을 갖는 데이터는 동일한 스트림 ID를 갖고 스트림된다.
불휘발성 메모리(151)는 플래시 변환 계층(FTL)(152) 및 복수의 메모리 블록들(156a, 156b, 156c)을 포함하는 낸드(NAND) 플래시 메모리(155)를 포함한다. 본 예는 하나의 낸드 플래시 메모리(155) 및 세 메모리 블록들(156a, 156b, 156c)을 보여주지만, 불휘발성 메모리(151)는 임의의 타임의 그리고 임의의 개수의 플래시 메모리들을 포함할 수 있고, 각 플래시 메모리는 임의의 개수의 메모리 블록들을 포함할 수 있음에 유의하여야 한다.
다중-스트림 인터페이스(131)는 호스트(101)를 위한 정보 경로를 제공하여, 호스트(101)가 불휘발성 메모리(151)에 기입될 데이터의 정보를 제공하게 허용할 수 있다. 호스트(101)로부터 수신되는 정보를 갖고, 불휘발성 메모리(151)는 데이터의 특성들에 기반하여 스트림들을 할당할 수 있고, 그리고 스트림들을 이용하여 데이터를 불휘발성 메모리(151)의 적절한 메모리 블록들(156)에 효과적으로 배치할 수 있다. 예를 들어, 불휘발성 메모리(151)는 데이터의 수명에 기반하여 불휘발성 메모리(151)의 메모리 블록들(156)에 데이터를 저장할 수 있다.
불휘발성 메모리(151)의 하드웨어 및 시스템 자원들이 제한되므로, 특정한 시간에 동시에 제한된 수의 스트림들이 지원될 수 있다. 호스트(101)는 필요에 따라 열기 및 닫기 스트림 커맨드들로 제한된 수의 지원되는 스트림들을 활용할 수 있다. 예를 들어, 불휘발성 메모리(151)는 N 스트림들을 지원할 수 있고, 호스트(101)는 특정한 때에 N개 까지의 스트림들을 이용하여 SSD를 액세스할 수 있다. 불휘발성 메모리(151)가 낸드 플래시 메모리(155)를 포함하는 본 예에서, N 스트림들이 불휘발성 메모리(151)에서 읽기, 프로그램 및 소거 동작들을 수행하는 데에 사용될 수 있다. 호스트(101)가 추가적인 M (M은 N과 같거나 그보다 작음) 스트림들을 사용할 것을 판단하면, 호스트(101)는 N개의 열린 스트림들 중에서 동일한 개수의 스트림들(M 스트림들)을 명백하게 닫을 수 있다. 이 경우에, 호스트(101)는 희생 스트림 선택 로직을 채용하고 그리고 스트림 ID들에 기반하여 N개의 열린 스트림들 중에서 닫을 M개의 희생 스트림들을 명시적으로 선택할 수 있다. 희생 스트림들은 다양한 속성들(attributes), 예를 들어 여기에서 더 논의되는 것과 같이 타임 스탬프(time stamp), 갱신 빈도, 그리고 스트림들 각각에 대한 데이터 기입의 양에 기반하여 선택될 수 있다.
또 다른 실시 예에 따르면, 희생 스트림은 호스트(101)의 암시적 요청에 기반하여 불휘발성 메모리(151)에 의해 선택될 수 있다. 이 경우에, 호스트(101)는 닫을 스트림들을 구체적으로 지시하지 않고, 특정한 개수의 스트림들을 닫는 요청을 불휘발성 메모리에 전송할 수 있다. 그렇지 않으면, 호스트(101)는 불휘발성 메모리의 능력을 넘어 새로운 스트림을 열 것을 요청할 수 있고, 이에 따라 불휘발성 메모리에게 현존 스트림을 닫을 것을 암시적으로 요청할 수 있다. 불휘발성 메모리(151)는 희생 스트림 선택 로직을 포함하고, 그리고 닫을 희생 스트림을 내부적으로 선택할 수 있다.
일 실시 예에 따르면, 불휘발성 메모리(151)는 스트림들을 이용하여 데이터를 사상(map)하고, 동일한 또는 유사한 갱신 빈도를 갖는 데이터를 동일한 메모리 블록(156)에 배치할 수 있다. 예를 들어, 사용자 데이터, 메타 데이터, 그리고 임시 데이터는 상이한 갱신 빈도들을 가질 수 있다. 호스트(101)는 사용자 데이터, 메타 데이터, 그리고 임시 데이터를 상이한 스트림 ID들을 갖는 각각의 열린 스트림들에서 불휘발성 메모리(151)로 스트림(stream)되게 할 수 있다. 예를 들어, 데이터(1) 및 데이터(3)는 사용자 데이터이고, 이들은 스트림 ID(1)를 이용하여 메모리 블록(156a)에 배치될 수 있다. 데이터(2), 데이터(7) 및 데이터(9)는 메타 데이터이고, 이들은 스트림 ID(2)를 이용하여 메모리 블록(156b)에 배치된다. 데이터(10), 데이터(12) 및 데이터(13)는 임시 데이터이고, 이들은 스트림 ID(3)를 이용하여 메모리 블록(156c)에 배치된다.
일 실시 예에 따르면, 호스트(101) 그리고/또는 불휘발성 메모리(151)는 희생 스트림을 선택할 때에 다양한 문턱들을 활용할 수 있다. 이러한 문턱들의 예들은 타임 스탬프 문턱, 빈도 문턱, 그리고 사용 문턱을 포함하며, 한정되지 않는다. 불휘발성 메모리(151)는 시스템 레이턴시를 줄이기 위하여 임의의 스트림을 닫기 전 마지막 순간에 하나 또는 그보다 많은 문턱들에 기반하여 희생 스트림을 선택할 수 있다. 예를 들어, 불휘발성 메모리(151)는 닫기 위한 희생 스트림 선택을 위해 타임 스탬프의 문턱(예를 들어, 4)을 설정할 수 있다. 이 경우에, 문턱보다 낮은 타임 스탬프(예를 들어, 3)를 갖는 스트림들은 유휴 시간 동안 배경 동작들을 통해 암시적으로 닫힐 수 있다. 문턱에 기반한 희생 스트림들의 닫기는 특히 낮은 큐 깊이의 경우들에서 성능을 향상할 수 있다.
도 2는 일 실시 예에 따른 데이터 배치의 예를 보여준다. 호스트에서 실행되는 커널 또는 응용은 불휘발성 메모리에 기입할 데이터를 갖는다. 종래의 데이터 배치 스킴(201)에 따르면, 요청된 데이터는 스트림 없이 불휘발성 메모리에 기입된다. 따라서, 요청된 데이터는 데이터 큐(200)에 배치된 순서로 불휘발성 메모리에 기입된다. 따라서, 상이한 특성들(characteristics)의 데이터가 동일한 메모리 블록들에 기입될 수 있다. 예를 들어, 메모리 블록(0)에 기입되는 데이터(1, 20)는 무효화된 데이터이고, 메모리 블록(0)에 기입된 데이터(100)는 멀티미디어 데이터이고, 그리고 메모리 블록(0)에 기입된 데이터(21)는 사용자 데이터일 수 있다.
본 다중-스트림 데이터 배치 스킴(202)에 따르면, 요청된 데이터는 데이터 큐(200)에 배치되고, 그리고 데이터 특성들에 기반하여 다수의 스트림들에 배치된다. 유사한 데이터(예를 들어, 갱신 빈도)는 유사한 블록들에 저장되고, 상이한 데이터는 상이한 블록들에 저장된다. 일부 메모리 블록들은 동일한 데이터 특성들의 균일한 데이터를 포함하고, 다른 메모리 블록들은 둘 또는 그보다 많은 상이한 데이터 특성들을 갖는 데이터를 포함할 수 있다. 예를 들어, 무효화된 데이터는 메모리 블록(0)에 기입되고, 사용자 데이터(21, 22, 20)는 메모리 블록(1)에 기입되고, 멀티미디어 데이터(100)는 메모리 블록(2)에 기입되고, 그리고 사용자 데이터(1)는 메모리 블록(3)에 기입될 수 있다. 메모리 블록(1)은 무효화된 데이터(20)를 포함한다. 사용자 데이터(21, 22, 20)가 갱신, 트림, 언맵, 또는 할당 해제될 때, 메모리 블록(1)은 무효화된 데이터(20)와 함께 플러시될 수 있다.
도 3은 일 실시 예에 따른 예시적은 다중-스트림 시스템의 계층화된 구조를 보여준다. 호스트(또는 서버)(301)는 복수의 데이터 액세스 요청들을 다수의 스트림들을 통해 불휘발성 메모리로 발행한다. 호스트 또는 불휘발성 메모리는 높은 장치 스트림 계층(302) 및 낮은 장치 스트림 계층(303)을 포함하는 이중 배열 스트림 계층을 갖는다. 호스트(301)에 의해 발행된 스트림들 중 일부는 하나의 스트림으로 병합될 수 있다. 높은 장치 스트림 계층(302)은 스트림 속성들을 수집한다. 스트림 속성들의 예들은 타임 스탬프, 주어진 시간 기간 내의 갱신 빈도, 그리고 스트림에 기입되는 데이터의 양을 포함하며, 한정되지 않는다.
수집된 스트림 속성들은 저장소(310)에 저장된다. 저장소(310)에 저장된 수집된 스트림 속성들은 호스트(301)에, 불휘발성 메모리에, 또는 외부에 구현될 수 있는 희생 스트림 선택 로직으로 전달될 수 있다. 희생 스트림 선택 로직은 하나 또는 그보다 많은 희생 스트림들을 선택할 때에 스트림 속성들을 참조한다. 높은 장치 스트림 계층(302)은 호스트(301)로부터 수신된 스트림들을 병합하고 장치 레벨 스트림들을 생성할 수 있다. 호스트(301)에 의해 발행된 스트림들의 일부는 병합을 수행하지 않고 대응하는 장치 스트림들로 직접 변환될 수 있다. 일 실시 예에서, 불휘발성 메모리의 스트림 자원 풀(320)에서 스트림 자원들은 m 그룹들로 분할되며, m은 불휘발성 메모리에 대해 최대 허용 가능한 스트림들의 개수이다. 장치 레벨 스트림들은 낮은 장치 스트림 계층(303)에 의해 스트림 자원 풀(320)에서 불휘발성 메모리의 스트림 자원들(예를 들어, CPU 및 메모리)에 할당될 수 있다.
본 희생 스트림 선택 로직은 다양한 방법들로 복수의 스트림들 중에서 하나 또는 그보다 많은 희생 스트림들을 선택할 수 있다. 후술되는 예들의 각각에서, 단지 하나의 스트림 속성이 저장소(310)에 기록된다. 그러나, 하나보다 많은 스트림 속성들이 저장소(310)에 기록될 수 있고, 스트림 속성들의 조합이 희생 스트림을 선택할 때에 고려될 수 있음이 이해될 것이다. 이 경우에, 각 스트림 속성은 우선 순위를 갖고, 상이한 가중 인자들에 주어질 수 있다. 희생 스트림을 선택할 때에, 더 높은 우선 순위 스트림 속성은 더 무거운 가중치에 주어질 수 있다.
도 4a는 일 실시 예에 따른 타임 스탬프를 포함하는 스트림 속성들의 예시적인 표이다. 이 실시 예에서, 각 스트림에 대한 타임 스탬프는 스트림이 액세스될 때마다 저장소(예를 들어, 도 3의 저장소(310))에 기록된다. 호스트 또는 불휘발성 메모리가 스트림을 닫을 필요가 있을 때, 가장 오래된 타임 스탬프를 갖는 스트림이 닫을 희생 스트림으로 선택될 것이다. 본 예에서, 스트림(1) 내지 스트림(5)이 현재 열려 사용중이고, 하나의 스트림이 닫힐 필요가 있다. 스트림(4)은 3의 가장 오래된 타임 스탬프를 갖는다. 이 경우에, 타임 스탬프가 더 작을수록, 해당 스트림은 더 오래된 것이다. 따라서, 스트림(4)이 희생 스트림으로 선택된다. 타임 스탬프의 단위는 임의의 시간 단위, 예를 들어 하루의 시간일 수 있다. 본 예에서, 도 4a에 보여지는 시간 단위들은 단지 예시적인 것이며, 단위 없음(unit-less) 또는 정규화된 시간 단위일 수 있다.
도 4b는 일 실시 예에 따른 갱신 빈도를 포함하는 스트림 속성들의 예시적인 표이다. 이 실시 예에서, 주어진 시간 기간 동안 각 스트림의 갱신 빈도가 저장소에 기록될 수 있다. 호스트 또는 불휘발성 메모리가 스트림을 닫을 필요가 있을 때, 가장 덜 빈번하게 사용된 스트림이 닫힐 것으로 선택된다. 본 예에서, 다섯 개의 스트림들(스트림(1) 내지 스트림(5))이 현재 열려 사용되고 있으며, 하나의 스트림이 닫힐 필요가 있다. 주어진 시간 기간 동안 다섯 번 사용된 스트림(2)이 가장 덜 빈번하게 사용된 스트림이다. 따라서, 스트림(2)이 희생 스트림으로 선택된다. 갱신 빈도가 기록되는 시간 기간은 임의의 시간 단위, 예를 들어 분들, 시간들 또는 일들(days)일 수 있다.
도 4c는 일 실시 예에 따른 스트림에 기입되는 데이터의 양을 포함하는 스트림 속성들의 예시적인 표이다. 이 실시 예에서, 각 스트림에 기입되는 데이터의 양이 저장소에 기록된다. 호스트 또는 불휘발성 메모리가 스트림을 닫을 필요가 있을 때, 가장 많이 채워진 스트림이 닫힐 것으로 선택된다. 본 예에서, 다섯 스트림들(스트림(1) 내지 스트림(5))이 현재 열려 사용되며, 하나의 스트림이 닫힐 필요가 있다. 본 예에서, 소거 블록 사이즈는 96MB이다. 95.5MB 데이터로 채워진 스트림(4)이 가장 많이 채워진 스트림이다. 따라서, 스트림(4)이 희생 스트림으로 선택된다. 각 스트림에 기입되는 데이터의 양이 기록되는 데이터 단위는 임의의 데이터 단위, 예를 들어 킬로바이트(KB) 및 메가바이트(MB) 등일 수 있다.
또 다른 실시 예에 따르면, 호스트 또는 불휘발성 메모리는 가장 적게 채워진 스트림을 희생 스트림으로 선택할 수 있다. 이 경우, 가장 적게 채워진 스트림은 사용된 그리고 사용되지 않은 공간들 사이에 최대 차이를 갖는 스트림이다. 거의 균등한 사용된 그리고 사용되지 않은 공간들을 갖는 스트림이 희생 스트림으로서 배제될 수 있다.
일 실시 예에 따르면, 방법은 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하는 단계, 스트림 속성을 저장소에 저장하는 단계, 그리고 스트림 속성에 기반하여 복수의 스트림들 중에서 희생 스트림을 선택하는 단계를 포함한다. 스트림 속성은 타임 스탬프, 갱신 빈도, 그리고 복수의 스트림들의 각각에 기입되는 데이터의 양의 하나 또는 그보다 많은 것일 수 있다.
스트림 속성은 타임 스탬프일 수 있고, 희생 스트림은 복수의 스트림들 중에서 가장 오래된 타임 스탬프를 갖질 수 있다.
스트림 속성은 갱신 빈도일 수 있고, 희생 스트림은 복수의 스트림들 중에서 가장 덜 빈번하게 사용될 수 있다.
스트림 속성은 대응하는 스트림에 기입된 데이터의 양일 수 있고, 희생 스트림은 가장 많은 용량의 데이터로 채워진 가장 많이 채워질 수 있다.
스트림 속성은 대응하는 스트림에 기입된 데이터의 양일 수 있고, 희생 스트림은 가장 적은 양의 데이터로 채워진 가장 적게 채워질 수 있다.
호스트는 스트림 식별자에 기반하여 희생 스트림을 명시적으로 선택할 수 있고, 호스트는 다중-스트림 인터페이스를 통해 스트림 식별자에 의해 식별된 희생 스트림을 닫을 것을 불휘발성 메모리에 명령할 수 있다.
호스트는 불휘발성 메모리에 새로운 스트림을 열 것을 명령할 수 있고, 불휘발성 메모리는 복수의 스트림들 중에서 희생 스트림을 암암리에 닫고 그리고 새로운 스트림을 열 수 있다.
또 다른 실시 예에 따르면, 메모리 시스템은 호스트, 불휘발성 메모리, 호스트 및 불휘발성 메모리 사이에서 상호 작용(interface)하도록 구성되는 다중-스트림 인터페이스, 그리고 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하고, 스트림 속성을 저장소에 저장하고, 그리고 스트림 속성에 기반하여 복수의 스트림들 중에서 희생 스트림을 선택하도록 구성되는 희생-스트림 선택 로직을 포함한다.
스트림 속성은 타임 스탬프일 수 있고, 희생 스트림은 복수의 스트림들 중에서 가장 오래된 타임 스탬프를 갖질 수 있다.
스트림 속성은 갱신 빈도일 수 있고, 희생 스트림은 복수의 스트림들 중에서 가장 덜 빈번하게 사용될 수 있다.
스트림 속성은 대응하는 스트림에 기입된 데이터의 양일 수 있고, 희생 스트림은 가장 많은 용량의 데이터로 채워진 가장 많이 채워질 수 있다.
스트림 속성은 대응하는 스트림에 기입된 데이터의 양일 수 있고, 희생 스트림은 가장 적은 양의 데이터로 채워진 가장 적게 채워질 수 있다.
호스트는 스트림 식별자에 기반하여 희생 스트림을 명시적으로 선택할 수 있고, 호스트는 다중-스트림 인터페이스를 통해 스트림 식별자에 의해 식별된 희생 스트림을 닫을 것을 불휘발성 메모리에 명령할 수 있다.
호스트는 희생 스트림 선택 로직을 포함할 수 있다.
호스트는 불휘발성 메모리에 새로운 스트림을 열 것을 명령할 수 있고, 불휘발성 메모리는 복수의 스트림들 중에서 희생 스트림을 암암리에 닫고 그리고 새로운 스트림을 열 수 있다.
불휘발성 메모리는 희생 스트림 선택 로직을 포함할 수 있다.
희생 스트림 선택 로직은 호스트 또는 불휘발성 메모리의 외부일 수 있다.
위의 예시적인 실시 예들은 복수의 스트림들 중에서 희생 스트림을 선택하여 불휘발성 메모리를 액세스하기 위한 시스템 및 방법을 제공하기 위한 시스템 및 방법을 구현하는 다양한 실시 예들을 설명하기 위하여 위에서 설명되었다. 공개된 예시적인 실시 예들로부터의 다양한 수정들 및 변경들이 이 분야에 통상적인 기술을 갖는 자들에게 일어날 것이다. 본 발명의 범위 내로 의도된 주제는 후술되는 청구항들에서 정의된다.
101; 호스트
105; 커널/응용
131; 다중-스트림 인터페이스
151; 불휘발성 메모리
152; 플래시 변환 계층
156a, 156b, 156c; 메모리 블록들

Claims (10)

  1. 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하는 단계;
    상기 스트림 속성을 저장소에 저장하는 단계; 그리고
    상기 스트림 속성에 기반하여 상기 복수의 스트림들 중에서 희생 스트림을 선택하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 스트림 속성은 타임 스탬프이고, 상기 희생 스트림은 상기 복수의 스트림들 중에서 가장 오래된 타임 스탬프를 갖는 방법.
  3. 제1항에 있어서,
    상기 스트림 속성은 갱신 빈도이고, 상기 희생 스트림은 상기 복수의 스트림들 중에서 가장 덜 빈번하게 사용된 스트림인 방법.
  4. 제1항에 있어서,
    상기 스트림 속성은 대응하는 스트림에 기입된 데이터의 양이고, 상기 희생 스트림은 가장 많은 용량의 데이터로 채워진 가장 많이 채워진 스트림인 방법.
  5. 제1항에 있어서,
    상기 스트림 속성은 대응하는 스트림에 기입된 데이터의 양이고, 상기 희생 스트림은 가장 적은 양의 데이터로 채워진 가장 적게 채워진 스트림인 방법.
  6. 제1항에 있어서,
    호스트는 스트림 식별자에 기반하여 상기 희생 스트림을 명시적으로 선택하고, 상기 호스트는 다중-스트림 인터페이스를 통해 상기 스트림 식별자에 의해 식별된 상기 희생 스트림을 닫을 것을 상기 불휘발성 메모리에 명령하는 방법.
  7. 제1항에 있어서,
    호스트는 상기 불휘발성 메모리에 새로운 스트림을 열 것을 명령하고, 상기 불휘발성 메모리는 상기 복수의 스트림들 중에서 상기 희생 스트림을 암암리에 닫고 그리고 상기 새로운 스트림을 여는 방법.
  8. 호스트;
    불휘발성 메모리;
    상기 호스트 및 상기 불휘발성 메모리 사이에서 상호 작용(interface)하도록 구성되는 다중-스트림 인터페이스; 그리고
    상기 불휘발성 메모리에 대한 복수의 스트림들의 각각과 연관된 스트림 속성을 수집하고; 상기 스트림 속성을 저장소에 저장하고; 그리고 상기 스트림 속성에 기반하여 상기 복수의 스트림들 중에서 희생 스트림을 선택하도록 구성되는 희생-스트림 선택 로직을 포함하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 호스트는 스트림 식별자에 기반하여 상기 희생 스트림을 명시적으로 선택하고, 상기 호스트는 다중-스트림 인터페이스를 통해 상기 스트림 식별자에 의해 식별된 상기 희생 스트림을 닫을 것을 상기 불휘발성 메모리에 명령하는 메모리 시스템.
  10. 제8항에 있어서,
    상기 호스트는 불휘발성 메모리에 새로운 스트림을 열 것을 명령하고, 상기 불휘발성 메모리는 상기 복수의 스트림들 중에서 상기 희생 스트림을 암암리에 닫고 그리고 상기 새로운 스트림을 여는 메모리 시스템.
KR1020170058201A 2016-11-02 2017-05-10 다중-스트림 스킴에서 희생 스트림 선택 알고리즘들 KR102218737B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662416563P 2016-11-02 2016-11-02
US62/416,563 2016-11-02
US15/400,750 US10108345B2 (en) 2016-11-02 2017-01-06 Victim stream selection algorithms in the multi-stream scheme
US15/400,750 2017-01-06

Publications (2)

Publication Number Publication Date
KR20180048251A true KR20180048251A (ko) 2018-05-10
KR102218737B1 KR102218737B1 (ko) 2021-02-23

Family

ID=62021437

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170058201A KR102218737B1 (ko) 2016-11-02 2017-05-10 다중-스트림 스킴에서 희생 스트림 선택 알고리즘들

Country Status (2)

Country Link
US (1) US10108345B2 (ko)
KR (1) KR102218737B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448877A (zh) * 2020-03-26 2021-09-28 伊姆西Ip控股有限责任公司 用于数据存储的方法、设备和计算机程序

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11341063A (ja) * 1998-05-29 1999-12-10 Digital Vision Laboratories:Kk ストリーム通信システム及びストリーム転送制御方法
KR20050024483A (ko) * 2005-01-31 2005-03-10 엘지전자 주식회사 멀티채널 스트림 기록장치 및 방법과, 그에 따른 기록매체
JP2007110395A (ja) * 2005-10-13 2007-04-26 Sharp Corp ストリームデータ転送装置、ストリームデータ転送方法、及びそれらに用いるプログラム及び記録媒体
JP2010278729A (ja) * 2009-05-28 2010-12-09 Mitsubishi Electric Corp 映像送信装置、映像受信装置及び映像配信システム
US20110173397A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Programmable stream prefetch with resource optimization
KR20150028610A (ko) * 2013-09-06 2015-03-16 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
KR20150129316A (ko) * 2013-03-14 2015-11-19 퀄컴 인코포레이티드 명령 프로세싱 회로들에서의 리던던트 동기화 베리어들의 제거 및 관련 프로세서 시스템들, 방법들 및 컴퓨터-판독가능 매체
US20160036704A1 (en) * 2013-04-16 2016-02-04 Huawei Technologies Co., Ltd. Method for Adjusting Media Stream Transmission Bandwidth and Related Apparatus
KR20160073375A (ko) * 2013-10-15 2016-06-24 나그라비젼 에스에이 휴대용 장치로부터의 스트림 선택의 멀티캐스트

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257814B1 (en) * 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
JP4379471B2 (ja) 2006-12-29 2009-12-09 ソニー株式会社 再生装置および再生制御方法
JP2008293578A (ja) 2007-05-24 2008-12-04 Hitachi Ltd ストリームデータ制御モジュール
JP2011175615A (ja) 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
WO2012027605A2 (en) 2010-08-27 2012-03-01 Intel Corporation Intelligent remote control system
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US8522292B2 (en) 2011-06-15 2013-08-27 Microsoft Corporation Streaming media bandwidth reduction
US9154834B2 (en) 2012-11-06 2015-10-06 Broadcom Corporation Fast switching of synchronized media using time-stamp management
US9184998B2 (en) 2013-03-14 2015-11-10 Qualcomm Incorporated Distributed path update in hybrid networks
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
JP2016170583A (ja) 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US9880780B2 (en) * 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
US10592171B2 (en) * 2016-03-16 2020-03-17 Samsung Electronics Co., Ltd. Multi-stream SSD QoS management

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11341063A (ja) * 1998-05-29 1999-12-10 Digital Vision Laboratories:Kk ストリーム通信システム及びストリーム転送制御方法
KR20050024483A (ko) * 2005-01-31 2005-03-10 엘지전자 주식회사 멀티채널 스트림 기록장치 및 방법과, 그에 따른 기록매체
JP2007110395A (ja) * 2005-10-13 2007-04-26 Sharp Corp ストリームデータ転送装置、ストリームデータ転送方法、及びそれらに用いるプログラム及び記録媒体
JP2010278729A (ja) * 2009-05-28 2010-12-09 Mitsubishi Electric Corp 映像送信装置、映像受信装置及び映像配信システム
US20110173397A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Programmable stream prefetch with resource optimization
US8347039B2 (en) * 2010-01-08 2013-01-01 International Business Machines Corporation Programmable stream prefetch with resource optimization
KR20150129316A (ko) * 2013-03-14 2015-11-19 퀄컴 인코포레이티드 명령 프로세싱 회로들에서의 리던던트 동기화 베리어들의 제거 및 관련 프로세서 시스템들, 방법들 및 컴퓨터-판독가능 매체
US20160036704A1 (en) * 2013-04-16 2016-02-04 Huawei Technologies Co., Ltd. Method for Adjusting Media Stream Transmission Bandwidth and Related Apparatus
KR20150028610A (ko) * 2013-09-06 2015-03-16 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
KR20160073375A (ko) * 2013-10-15 2016-06-24 나그라비젼 에스에이 휴대용 장치로부터의 스트림 선택의 멀티캐스트

Also Published As

Publication number Publication date
KR102218737B1 (ko) 2021-02-23
US10108345B2 (en) 2018-10-23
US20180121090A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
US9946642B2 (en) Distributed multimode storage management
US9940028B2 (en) Multimode storage device
CN106874211B (zh) 存储器系统及非易失性存储器的控制方法
CN106708424B (zh) 对用户数据执行选择性底层暴露映射的设备和方法
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
US9990304B2 (en) Multimode storage management system
US9792227B2 (en) Heterogeneous unified memory
US9652384B2 (en) Apparatus, system and method for caching compressed data
US7676626B2 (en) Non-volatile memory system storing data in single-level cell or multi-level cell according to data characteristics
US20200409856A1 (en) Method and system for address table eviction management
US9367444B2 (en) Non-volatile memory device, control method for information processing device, and information processing device
US11263149B2 (en) Cache management of logical-physical translation metadata
US20110252215A1 (en) Computer memory with dynamic cell density
US20120311000A1 (en) Pre-organization of Data
JP2018537770A (ja) プロファイリングキャッシュ置換
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
Yong et al. Design and implementation of virtual stream management for NAND flash-based storage
KR102218737B1 (ko) 다중-스트림 스킴에서 희생 스트림 선택 알고리즘들
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
CN105573675B (zh) 缓存管理装置中基于训练机制的用户习惯获取方法及装置
CN110968520B (zh) 基于统一缓存架构的多流存储设备
Lim et al. DStream: Dynamic memory resizing for multi-streamed SSDs
US9703485B2 (en) Storage management in hybrid drives
KR101609304B1 (ko) 멀티칩 플래시 저장장치 및 그 방법
US20210011859A1 (en) Method and computer program product and apparatus for controlling data access of a flash memory device

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant