KR102401596B1 - 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스 - Google Patents

비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스 Download PDF

Info

Publication number
KR102401596B1
KR102401596B1 KR1020160077483A KR20160077483A KR102401596B1 KR 102401596 B1 KR102401596 B1 KR 102401596B1 KR 1020160077483 A KR1020160077483 A KR 1020160077483A KR 20160077483 A KR20160077483 A KR 20160077483A KR 102401596 B1 KR102401596 B1 KR 102401596B1
Authority
KR
South Korea
Prior art keywords
data
file
statistics
update
volatile memory
Prior art date
Application number
KR1020160077483A
Other languages
English (en)
Other versions
KR20170008153A (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 KR20170008153A publication Critical patent/KR20170008153A/ko
Application granted granted Critical
Publication of KR102401596B1 publication Critical patent/KR102401596B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

컴퓨터 장치가 비휘발성 메모리 장치내의 데이터 속성 기반 데이터 배치를 활용가능 하도록 하는 인터페이스가 개시된다. 인터페이스는, 상기 컴퓨터 장치의 운영체제 레벨에서 소프트웨어 구성요소를 실행하는 것을 포함하고, 상기 소프트웨어 구성요소는 상기 비휘발성 메모리 장치로의 데이터 항목 변경들의 갱신 통계를 감시하며, 상기 갱신 통계는 상기 데이터 항목들의 적어도 일부에 대한 하나 이상의 갱신 빈도들, 각 파일 종류에 대한 누적된 갱신 및 삭제 빈도들, 및 상기 데이터 항목의 출처를 포함한다. 상기 인터페이스는 상기 소프트웨어 구성요소에 의해, 데이터베이스 내에서 상기 데이터 항목들 및 데이터 항목 종류들에 대한 상기 갱신 통계를 저장하는 것을 포함한다. 또한 상기 인터페이스는 상기 데이터 항목들에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 차단하고, 상기 데이터베이스 내의 현재 갱신 통계에 근거하여 상기 데이터 항목들의 각각에 대해 데이터 속성 식별자를 자동으로 할당하는 것을 포함하며, 상기 데이터 항목들과 할당된 데이터 속성 식별자들은 메모리 채널을 통해 스토리지용 상기 비휘발성 메모리 장치로 전송된다.

Description

비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스{A HEURISTIC INTERFACE FOR ENABLING A COMPUTER DEVICE TO UTILIZE DATA PROPERTY-BASED DATA PLACEMENT INSIDE A NONVOLATILE MEMORY DEVICE}
본 발명은 비휘발성 메모리 장치 내에서 데이터 속성 기반 데이터 배치를 활용하는 컴퓨터 장치 및 그 컴퓨터 장치를 구동하는 인터페이스 방법에 관한 것이다.
플래시 메모리 기반 솔리드 스테이트 드라이브(SSD)는 소비자 컴퓨터 및 기업 서버 모두에 널리 사용되어 왔다.
낸드(NAND) 및 노어 (NOR) 논리 게이트의 이름을 따서 명명되는 두 가지의 주종 플래시 메모리가 있다. NAND 형 플래시 메모리의 블록들 내로 데이터가 라이트되고 블록들로부터 데이터가 리드될 수 있다. 블록들의 각각은 복수의 페이지들을 포함한다.
SSDs 내에서의 NAND 플래시 스토리지 셀들은 아주 독특한 속성을 가지므로, SSD의 일반 사용은 매우 비효율적이다. 예를 들면, NAND 플래시 메모리는 일시에 무작위로 바이트 또는 워드 단위로 리드되거나 프로그램될 수 있지만, 소거의 경우 일시에 블록단위로만 수행될 수 있다. 단일 NAND 플래시 페이지를 재쓰기(rewrite)하기 위해서는 전체 소거 블록(전체 소거블록은 많은 플래시 페이지들을 포함)이 우선 소거되어야만 한다.
NAND 플래시 기반 스토리지 장치들(예를 들면 SSDs)은 제자리(in-place) 갱신(updating)을 허용하지 않으므로, 이후의 라이트를 위한 메모리 공간을 준비하기 위해 가비지 컬렉션(garbage collection)동작이 가용 프리 블록 카운트가 임계치에 도달할 때 수행된다. 가비지 컬렉션은 한 소거 블록에서 유효 데이터를 리드하는 것과 다른 블록에 상기 유효 데이터를 라이트하는 것을 포함한다. 한편, 가비지 컬렉션 동안 무효 (invalid)데이터는 새 블록으로 전달되지 않는다. NAND 소거 블록을 지우는 데에는 상대적으로 많은 양의 시간이 걸리며, 각 소거 블록은 제한된 횟수의 소거 사이클들(약 3,000회 내지 10,000회)을 가진다. 따라서, 가비지 컬렉션 오버헤드는 높은 데이터 I/O 레이턴시 및 낮은 I/O 퍼포먼스을 초래하는, 기술 분류 중에서 가장 큰 속도 제한들 중의 하나이다.
따라서, 핫(hot)/콜드(cold) 데이터를 차별적으로 취급하지 않고 그 데이터들을 함께 저장하는 운영 체제 및 어플리케이션은 차별적으로 취급하는 경우에 비해 시간이 지남에 따른 퍼포먼스 열화를 겪을 수 있다. 또한 더 많은 소거 사이클들이 필요함에 따라 SSD의 수명은 더욱 짧아지며, 이는 NAND 셀들을 더 빨리 열화 되게끔 한다.
SSD 벤더들(vendors) 및 스토리지 기술 위원회는 이 문제들을 극복하기 위해 이른 바 "멀티 스트림(multi-stream) SSD"이라 불려지는 신규 SSD 및 표준을 강구했다. 그러한 강구는 스트림 (streams) 이라 불려지는 다른 수명을 가지고 데이터를 분리적으로 저장하는 인터페이스들을 운영 체제 및 어플리케이션들에 제공하는 것이다. 스트림은 데이터 라이트가 서로 관련되어 있거나 유사한 수명을 가질 때를 나타내는 호스트 힌트이다. 즉, 개별적 데이터 라이트의 그룹은 스트림 집합이고 각 스트림에는 OS나 어플리케이션에 의해 스트림 ID가 주어진다. 예를 들어, "핫"데이터는 고유한 스트림 ID로 할당될 수 있고 그 스트림 ID에 대한 데이터는 SSD내의 동일 소거 블록에 라이트될 수 있다. 소거 블록 내의 데이터가 유사한 수명을 가지거나 서로 관련되어 있기 때문에, 데이터가 호스트 시스템에 의해 삭제될 때 전체 소거 블록이 자유롭게 된다는 큰 기회가 있다. 그렇게 함으로써, 전체 대상 블록이 유효(소거할 필요 없음) 또는 무효(소거할 수 있지만 라이트할 필요는 없음)로 될 수 있어 가비지 컬렉션 오버헤드가 현저히 줄어든다. 따라서 장치 내구성 및 퍼포먼스는 증가한다.
그렇지만, 이 새로운 인터페이스를 활용하기 위해서는 어플리케이션들(소스 코드를 포함) 및 운영체제 내의 많은 변화들이 요구된다. 전형적인 컴퓨터는 설치 및 운용되는 수십 내지 수백의 소프트웨어 어플리케이션을 가질 수 있으며, 보다 효율적으로 SSDs를 사용하기 위해 모든 어플리케이션들에 대해 특히 레거시(legacy) 및 폐 소스(closed-source) 어플리케이션들에 대해 그러한 변화들을 적용하는 것은 아주 어렵다. 또한, 멀티 스트림 SSD가 운영 체제 및 어플리케이션들에 의한 사용에만 단지 호환성이 있다는 점에서 멀티 스트림 SSD는 그 응용성이 한정된다.
스토리지 장치에서 개선된 데이터 속성 기반 데이터 배치가 필요해지며, 특히 컴퓨터 장치가 데이터 속성 기반 데이터 배치(예를 들면 멀티 스트림) SSD를 활용 가능하게 하는 자율적 프로세스가 요구된다.
본 발명이 해결하고자 하는 기술적 과제는, 비휘발성 메모리 장치 내에서 데이터 속성 기반 데이터 배치를 활용하는 컴퓨터 장치 및 그 컴퓨터 장치를 구동하는 인터페이스 방법을 제공함에 있다.
예시적 실시 예들은 컴퓨터 장치가 비휘발성 메모리 장치 내의 데이터 속성 기반 데이터 배치를 활용하도록 하는 인터페이스를 제공하는 방법 및 장치를 제공한다. 예시적 실시 예의 인터페이스는 상기 컴퓨터 장치의 운영체제 레벨에서 소프트웨어 구성요소를 실행하는 것을 포함하고, 상기 소프트웨어 구성요소는 상기 비휘발성 메모리 장치로의 데이터 항목 변경들의 갱신 통계를 감시하며, 상기 갱신 통계는 상기 데이터 항목들의 적어도 일부에 대한 하나 이상의 갱신 빈도들, 각 파일 종류에 대한 누적된 갱신 및 삭제 빈도들, 및 상기 데이터 항목의 출처를 포함한다. 상기 인터페이스는 상기 소프트웨어 구성요소에 의해, 데이터베이스 내의 상기 데이터 항목들 및 데이터 항목 종류들에 대한 상기 갱신 통계를 저장하는 것을 포함한다. 또한 상기 인터페이스는 상기 데이터 항목들에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 차단하고, 상기 데이터베이스 내의 현재 갱신 통계에 근거하여 상기 데이터 항목들의 각각에 대해 데이터 속성 식별자를 자동으로 할당하는 것을 포함하며, 상기 데이터 항목들과 할당된 데이터 속성 식별자들은 메모리 채널을 통해 스토리지용 상기 비휘발성 메모리 장치로 전송된다.
예시적 실시 예들은 컴퓨터 장치를 더 제공한다. 컴퓨터 장치는 메모리와 운영 체제를 포함한다. 컴퓨터 장치는 상기 메모리에 연결된 프로세서를 포함하고, 상기 프로세서는 상기 운영 체제 내에 제공된 소프트웨어 구성요소를 실행한다. 상기 소프트웨어 구성요소는, 비휘발성 메모리 장치로의 데이터 항목 변경들의 갱신 통계를 감시하도록 구성되고, 상기 갱신 통계는 상기 데이터 항목들의 적어도 일부에 대한 하나 이상의 갱신 빈도들, 각 파일 종류에 대한 누적된 갱신 및 삭제 빈도들, 및 상기 데이터 항목의 출처를 포함한다. 상기 소프트웨어 구성요소는, 데이터베이스 내의 상기 데이터 항목들 및 데이터 항목 종류들에 대한 상기 갱신 통계를 저장하도록 구성된다. 상기 소프트웨어 구성요소는, 상기 데이터 항목들에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 차단하고, 상기 데이터베이스 내의 현재 갱신 통계에 근거하여 상기 데이터 항목들의 각각에 대해 데이터 속성 식별자를 자동으로 할당하도록 구성되어, 상기 데이터 항목들과 할당된 데이터 속성 식별자들이 메모리 채널을 통해 스토리지용 상기 비휘발성 메모리 장치로 전송되도록 한다. 따라서, 상기 컴퓨터 장치가 비휘발성 메모리 장치 에서 데이터 속성 기반 데이터 배치를 활용하는 것이 가능하게 된다.
예시적 실시 예들은 또한, 컴퓨터 장치가 비휘발성 메모리 장치내의 데이터 속성 기반 데이터 배치를 활용하도록 하는 인터페이스를 제공하는 프로그램 명령들을 포함하는 비 일시적 컴퓨터 리드가능 스토리지 매체상에 저장된 실행가능 소프트웨어 제조물을 제공한다. 상기 프로그램 명령들은, 상기 컴퓨터 장치의 운영체제 레벨에서 소프트웨어 구성요소를 실행하는 것을 포함하고, 상기 소프트웨어 구성요소는 상기 비휘발성 메모리 장치로의 데이터 항목 변경들의 갱신 통계를 감시하며, 상기 갱신 통계는 상기 데이터 항목들의 적어도 일부에 대한 하나 이상의 갱신 빈도들, 각 파일 종류에 대한 누적된 갱신 및 삭제 빈도들, 및 상기 데이터 항목의 출처를 포함한다. 상기 프로그램 명령들은, 상기 소프트웨어 구성요소에 의해, 데이터베이스 내의 상기 데이터 항목들 및 데이터 항목 종류들에 대한 상기 갱신 통계를 저장한다. 상기 프로그램 명령들은, 상기 데이터 항목들에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 차단하고, 상기 데이터베이스 내의 현재 갱신 통계에 근거하여 상기 데이터 항목들의 각각에 대해 데이터 속성 식별자를 자동으로 할당하여, 상기 데이터 항목들과 할당된 데이터 속성 식별자들이 메모리 채널을 통해 스토리지용 상기 비휘발성 메모리 장치로 전송되도록 한다.
본 발명의 실시 예에 따르면, 비휘발성 메모리 장치 내에서 데이터 속성 기반 데이터 배치를 활용하는 컴퓨터 장치 및 그 컴퓨터 장치를 구동하는 인터페이스 방법이 구현된다.
도 1은 경험적 인터페이스에 의해 제공된 비휘발성 메모리 장치 내의 데이터 속성기반 데이터 배치를 위한 시스템의 예시적 실시 예를 도시한 블록도이다.
도 2는 본 발명의 일 실시 예에 따라 경험적 인터페이스를 제공하는 호스트 시스템 상에 수행되는 프로세스를 도시하는 플로우챠트이며, 상기 경험적 인터페이스는 상기 컴퓨터 장치가 비휘발성 메모리 장치 내에서 데이터 속성 기반 데이터 배치를 활용 가능케 한다.
도 3은 다양한 종류의 컴퓨팅 장치들 내에서 구현된 예시적 실시예 들의 경험적 인터페이스를 도시하는 도면이며, 컴퓨터 장치들은 데이터 속성 기반 데이터 배치를 갖는 SSD와 호환가능 하게 된다.
도 4는 본 발명의 실시 예에 따라 비휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 데이터 속성 기반 데이터 배치를 위한 프로세스를 도시하는 플로우챠트이다.
도 5는 데이터 베이스 어플리케이션에 의해 수행되는 스토리지 동작들과 관련하여 경험적 인터페이스의 동작의 예시를 보여주는 블록도이며, 상기 데이터 베이스 어플리케이션은 다른 수명들 및 다른 속성들을 갖는 데이터를 저장한다.
본 발명의 실시 예들에 대해 참조가 상세히 만들어질 것이며, 예시들은 첨부 도면들 내에 도시되며, 유사 참조 부호들은 전반적으로 유사 요소들을 전반적으로 칭한다. 실시 예들은 도면들을 참조하면서 본 발명의 사상을 설명하기 위해 이하에서 기술된다.
본 발명의 이점 및 특징들과 그 것을 달성하는 방법들은 이하의 실시 예들의 상세한 설명과 첨부 도면들을 참조로 보다 잘 이해될 수 있을 것이다. 본 발명의 사상은 그러나 많은 다른 형태로 구현될 수 있으며 여기에 언급된 실시 예들에 한정되지 않는다. 차라리 이들 실시 예들은 본 개시가 본 분야의 통상의 기술자에게 본 발명의 사상을 철저히 완전히 그리고 전체적으로 전달할 수 있도록 하기 위해 제공된다. 본 발명의 사상은 첨부된 청구항들에 의해서만 한정될 것이다. 도면들에서 레이어들의 두께나 영역은 명료성을 위해 과장될 수 있다.
본 발명을 설명하는 문맥에서, 용어 "하나(a) "한(an)" 및 "그(the)" 및 유사한 참도(referents)의 사용은 문맥에서 명확히 모순되게 표현되지 않는 한 단수 및 복수 모두를 커버하는 것으로 해석되어야 한다. 용어들 "포함(comprising)", "가짐(having)", "포함(including)", 및 "보유(containing)"는 달리 기재되지 않는 한, 오픈 종결(open-ended) 용어들(예를 들어 포함하지만 그에 한정되지 않는다는 의미)로서 해석된다.
여기에 사용된 것으로서, 용어 "알고리즘"또는 "모듈"은 소프트웨어나 하드웨어 구성요소에 제한되지 않는다. 하드웨어 구성요소에는 특정한 타스크들을 수행하는 field programmable gate array (FPGA) 또는 application specific integrated circuit (ASIC)이 포함될 수 있다. 알고리즘 또는 모듈은 어드레스가능 스토리지 매체 내에 상주하도록 적절히 구성될 수 있고 하나 이상의 프로세서들을 실행하기 위해 적절히 구성될 수 있다. 따라서, 알고리즘 또는 모듈은 예시적 방법으로, 구성요소들을 포함할 수 있다. 상기 구성요소들은 소프트웨어 구성요소들(software components), 객체 지향 소프트웨어 구성 요소들(object-oriented software components), 클래스 구성요소들 및 타스크 구성요소들(class components and task components), 프로세스들(processes), 기능들(functions), 속성들(attributes), 프로시져들(procedures), 서브루틴들(subroutines), 프로그램 코드의 세그먼트들(segments of program code), 드라이버들(drivers), 펌웨어들(firmware), 마이크로코드(microcode), 회로들(circuitry), 데이터(data), 데이터 베이스들(databases), 데이터 구조들(data structures), 테이블들(tables), 어레이들(arrays), 및 변수들(variables)을 포함할 수 있다. 구성요소들에 대해 제공된 기능 및 구성요소들 또는 모듈들은 더 작은 구성요소들 또는 모듈들로 결합될 수 있거나 부가적인 구성요소들 및 구성요소들 또는 모듈들로 더 분리될 수 있다.
달리 정의되지 않는 한, 여기에 사용되는 모든 기술적 및 과학적 용어들은 본 발명이 속하는 본 분야의 통상의 지식을 가진 자에 의해 통상적으로 이해되는 것과 같은 의미를 가진다. 어느 및 모든 예들의 사용, 또는 여기에 제공된 예시적인 용어들은 본 발명을 더 명확히 하기 위한 의도로 사용된 것이며, 달리 특정되지 않는 한 본 발명의 범위를 제한하는 것은 아니다. 더욱이, 달리 정의되지 않는 한 일반적으로 사용되는 사전들 내에 정의된 모든 용어들은 지나치게 엄격히 해석되지 않을 수 있다.
일 양상에서, 예시적 실시 예들은 경험적 및 자율적 인터페이스 (heuristic and autonomous interface)를 제공한다. 자율적 인터페이스는 컴퓨터 시스템들이 SSDs와 같은 스토리지 장치들 내의 데이터 속성 기반 데이터 배치 (data property-based data placement) 방법(예를 들어 멀티 스트리밍)을 활용하는 것을 가능케 한다. 상기 스토리지 장치는 어플리케이션들에 대한 변경을 요구하지 않는 장치이다.
도 1은 경험적 인터페이스에 의해 제공된 비휘발성 메모리 장치 내의 데이터 속성기반 데이터 배치를 위한 시스템의 예시적 실시 예를 도시한 블록도이다. 여기에 개시된 예시적 실시 예들은 가비지 컬렉션을 요구하는 임의의 비휘발성 메모리 장치에 적용될 수 있으며, 비휘발성 메모리 장치가 SSD를 포함하는 경우의 실시 예들과 관련하여 설명될 것이다.
시스템은 채널 (14)을 통해 SSD (12)에 연결된 호스트 시스템(10)을 포함한다. 잘 알려진 바로서, SSD는 데이터를 저장하기 위한 움직임 파트를 가지지 않으므로 그 데이터를 유지하기 위한 지속적인 파워를 요구하지 않는다. 본 발명의 개시와 관련한 호스트 시스템 (10)의 구성 요소들은 프로세서 (16)를 포함한다. 프로세서 (16)는 OS (20) 및 파일 시스템 (21)을 포함하는 메모리 (18)로부터 컴퓨터 명령들을 실행한다. 호스트 시스템 (10)은 채널 (14)과 인터페이싱하는 메모리 컨트롤러와 같은 다른 구성 요소들 (미도시)을 포함할 수 있다. 호스트 시스템 (10) 과 SSD (12)는 채널 (14)을 통해 커맨드 및 데이터 항목(items, 28)을 통신한다. 일 실시 예에서, 호스트 시스템(10)은 임의의 종류의 OS를 운용하는 전형적인 컴퓨터 혹은 서버일 수 있다. OS들 종류의 예는 싱글 및 멀티 유저, 분산 (distributed), 템플릿 (templated), 내장 (embedded), 실시간, 및 라이브러리를 포함할 수 있다. 다른 실시 예에서, 시스템은 장치 컨트롤러와 같은 단독 구성 요소일 수 있다. 단독 구성 요소의 OS는 라이트웨이트 (lightweight) OS(또는 그 일부)나 심지어 펌웨어를 포함하는 경우일 수 있다.
SSD (12)는 호스트 시스템 (10)으로부터 데이터를 저장하기 위해 스토리지 컨트롤러 (22) 및 비휘발성 메모리 (NVM) 어레이 (24)를 포함한다. 스토리지 컨트롤러 (22)는 NVM 어레이 (24)에 저장된 데이터를 관리하고, 통신 프로토콜을 통해 채널 (14)을 경유하여 호스트 시스템(10)과 통신한다. NVM 어레이 (24)는 임의의 종류의 불휘발성 랜덤 억세스 메모리 (NVRAM)을 포함할 수 있다. 임의의 종류의 불휘발성 랜덤 억세스 메모리는 플래시 메모리, 강유전체 RAM (F-RAM), 자기저항성 RAM (MRAM), 상변화 메모리 (PCM), 밀리피드(millipede) 메모리 등을 포함할 수 있다. SSD (12) 및 채널 (14) 모두는 듀얼 채널 아키텍쳐 등과 같은 멀티 채널 메모리 아키텍쳐를 지원할 수 있으며, 싱글, 더블, 또는 쿼드 레이트 데이터 전달을 또한 지원할 수 있다.
예시적인 실시 예에 따라, SSD (12)내의 가비지 컬렉션 오버헤드를 줄이기 위해 실시 예들은 SSD(12) 내에서 개선된 데이터 속성 기반 데이터 배치를 제공한다. 이 것은 경험적 인터페이스 (26)를 제공함에 의해 달성된다. 경험적 인터페이스 (26)는 어플리케이션들 및 하드웨어 구성요소들 모두가 SSD (12)내에 다른 수명들을 가지는 데이터 항목들을 분리적으로 저장 가능하게 한다. 또한, 몇몇 실시 예에서 경험적 인터페이스 (26)의 사용은 호스트 시스템 (10)상에 운영되는 사용자 어플리케이션들에 대해 변화를 요구하지 않는다.
일 실시 예에서, 경험적 인터페이스 (26)는 운영 체제 레벨에서 설치되는 적어도 하나의 소프트웨어 구성요소를 포함한다. 소프트웨어 구성요소는 파일들과 같은 모든 데이터 항목들 (28)의 사용 및 갱신 통계치를 지속적으로 모니터링하고 저장한다. 초기 웜업 혹은 트레이닝 구간 후에, 호스트 시스템 (10)에 의해 데이터 항목들 (28)에 대해 수행되는 임의의 생성/라이트/갱신 동작은 현재 사용 및 갱신 통계 치에 따라 동적 데이터 속성 식별자 (30)에 할당된다. 일 실시 예에서, 데이터 속성 식별자 (30)의 실질적 할당은 OS (20)의 파일 시스템 (21)내의 소프트웨어 훅 (hooks)에 의해 수행될 수 있다.
도 2는 본 발명의 일 실시 예에 따라 경험적 인터페이스를 제공하는 호스트 시스템 상에 수행되는 프로세스를 도시하는 플로우챠트이며, 상기 경험적 인터페이스는 상기 컴퓨터 장치가 비휘발성 메모리 장치 내에서 데이터 속성 기반 데이터 배치를 활용 가능케 한다. 상기 프로세스는 상기 컴퓨터 장치 내의 운영체제 레벨에서 소프트웨어 구성요소 (예를 들어 경험적 인터페이스)를 실행하는 것을 포함할 수 있다. 상기 소프트웨어 구성요소는 상기 비휘발성 메모리 장치로의 데이터 항목 (예를 들어, 파일) 변경사항들 (modifications)의 갱신 통계 (update statistics)를 모니터한다. 상기 갱신 통계는 상기 데이터 항목들의 적어도 일부에 대한 하나 이상의 갱신 빈도들 (update frequencies), 각 파일 종류 별로 (specific to) 누적된 갱신 및 삭제 빈도들, 및 상기 데이터 파일의 출처(origin)를 포함한다 (단계 200).
상기 소프트웨어 구성요소는 데이터베이스 내에 상기 데이터 항목들 및 데이터 항목 종류들에 대한 상기 갱신 통계를 저장한다 (단계 202). 일 실시 예에서, 상기 갱신 통계는 상기 호스트 시스템 메모리 (18)와 상기 SSD (12) 모두에 저장될 수 있다.
상기 소프트웨어 구성요소는 상기 데이터 항목들에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 전부 혹은 대부분 차단한다. 그리고, 상기 소프트웨어 구성요소는 상기 데이터베이스 내의 현재 갱신 통계에 근거하여 상기 데이터 항목들의 각각에 대해 데이터 속성 식별자를 자동으로 할당하여, 상기 데이터 항목들과 할당된 데이터 속성 식별자들이 메모리 채널을 통해 스토리지용 상기 비휘발성 메모리 장치로 전송되도록 한다 (단계 204). 일 실시 예에서, 데이터 속성 식별자는 태그(tag)로서 작용하고, 데이터 속성 식별자가 무엇인지를 나타내는 어떤 정보를 실질적으로 전송할 필요는 없다.
일 실시 예에 따라, 상기 경험적 인터페이스 (26)는 데이터 유사성 (similarity) 를 나타내는 하나 이상의 데이터 속성들에 근거하여 상기 데이터 항목들 (28)의 각각에 대해 상기 데이터 속성 식별자들 (30)을 할당 혹은 관련시키기 위해 현재 갱신 통계를 사용한다. 상기 하나 이상의 데이터 속성들은 데이터 수명, 데이터 종류, 데이터 사이즈, 및 물리적 데이터 소스일 수 있다. 추가적 실시 예에서, 논리 블록 어드레스(LBA) 범위들도 또한 데이터 유사성을 나타내는 데이터 속성으로서 이용될 수 있다. 예를 들어, LBA 억세스 패턴은 유사성의 식별자가 될 수 있고 데이터의 그룹핑을 요구할 수 있다. 이러한 방법으로 동일 혹은 유사 데이터 속성들을 가지는 데이터 항목들 (28)은 동일 데이터 속성 식별자 값으로 할당된다.
경험적 인터페이스 (26)가 운영체제 레벨에서 제공되므로, 어플리케이션들이 예시적 실시 예의 데이터 속성 기반 데이터 배치 프로세스와 호환성을 가지도록 하기 위하여, 현재 어플리케이션들에 대한 변화가 요구되지 않는다. 따라서, 경험적 인터페이스 (26)는 어플리케이션들 및 운영체제를 너머 전형적인 멀티 스트리밍 (conventional multi-streaming)의 사용을 확장하기 위해, 프로세서 및 운영체제를 가지는 어떤 종류의 컴퓨팅 장치에서도 구현될 수 있다.
도 3은 다양한 종류의 컴퓨팅 장치들 (300A-300D)내에서 구현된 예시적 실시예 들의 경험적 인터페이스를 도시하는 도면이며, 컴퓨터 장치들은 데이터 속성 기반 데이터 배치 (예를 들어, 멀티 스트리밍)를 갖는 SSD (12)와 호환가능 하게 된다. 컴퓨팅 장치들 (300A 및 300B)은 각기 경험적 인터페이스들 (26A 및 26B)이 운영체제들 (20A 및 20B)내에 제공되어 있는 PC, 서버, 또는 스토리지 서브시스템 (subsystem)과 같은 호스트 장치를 나타낼 수 있다. 경험적 인터페이스 (26A)는 어플리케이션(304A)에 의해 수행되는 데이터 항목 동작들을 차단하고, 현재의 갱신 통계에 근거하여 상기 어플리케이션(304A)으로부터의 데이터 항목들 각각에 대해 데이터 속성 식별자들 (30A)를 자동으로 할당한다.
유사하게, 경험적 인터페이스 (26B)는 상기 OS (20B)의 블록 계층 (23B)에 의해 수행되는 데이터 항목 동작들을 차단(intercept)하고, 현재의 갱신 통계에 근거하여 상기 블록 계층 (23B)에 의해 동작되는 데이터 항목들 각각에 대해 데이터 속성 식별자 (30B)를 자동으로 할당한다.
컴퓨팅 장치들 (300C 및 300D)은 각기 경험적 인터페이스들 (26C 및 26D)이 하드웨어 장치 컨트롤러들 (306C 및 306D)내에 제공되어 있으며, 스위치, 라우터, RAID 시스템, 또는 호스트 버스 어댑터(HBA) 시스템과 같은 하드웨어 장치를 나타낼 수 있다. 경험적 인터페이스 (26C)는 상기 장치 컨트롤러 (306C)에 의해 수행되는 데이터 항목 동작들을 차단 (intercept)하고, 현재의 갱신 통계에 근거하여 상기 장치 컨트롤러 (306C)로부터의 데이터 항목들 각각에 대해 데이터 속성 식별자 (30C)를 자동으로 할당한다. 유사하게, 경험적 인터페이스 (26D)는 상기 장치 컨트롤러 (306D)에 의해 수행되는 데이터 항목 동작들을 차단하고, 현재의 갱신 통계에 근거하여 상기 장치 컨트롤러 (306D)로부터의 데이터 항목들 각각에 대해 데이터 속성 식별자 (30D)를 자동으로 할당한다.
도 4는 본 발명의 실시 예에 따라 비휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 데이터 속성 기반 데이터 배치를 위한 프로세스를 도시하는 플로우챠트이다. 도 3 및 도 4를 참조하면, 상기 프로세스는 채널을 통해 적어도 하나의 운영체제 혹은 실행 어플리케이션 (예를 들어 OS: 20B 어플리케이션: 304A)으로부터 저장될 데이터 항목들의 제1 시리즈 (first series)를 수신하는 것을 포함할 수 있다. 데이터 항목들은 각기 제1 데이터 속성 식별자를 포함한다. 제1 데이터 속성 식별자는 데이터 유사성을 나타내는 하나 이상의 데이터 속성에 근거한 데이터 항목들에 관련되어 있다. 하나 이상의 데이터 속성은 데이터 수명, 데이터 종류, 데이터 사이즈, 및 물리적인 데이터 소스를 포함할 수 있다 (단계 400).
일 실시 예에서, 데이터 종류는 원래 어플리케이션 외부의 속성들을 포함할 수 있다. 추가적 실시 예에서, 하나 이상의 데이터 속성들은 또한 논리 블록 어드레스 (LBA)범위들을 포함할 수 있다. 여기에 열거된 데이터 속성은 고려될 수 있는 데이터 속성들의 종류들 만에 한정되는 것이 아님을 이해하여야 한다. 예를 들어, 지금은 알려져 있지 않지만 일부 다른 데이터 속성이 장래에 데이터 유사성을 판단하는데 사용될 수 있을 것이다. 일 실시 예에서, 운영체제나 어플리케이션으로부터 수신된 데이터 항목들은 경험적 인터페이스(26) 이외에 다른 프로세스에 의한 데이터 항목들과 관련된 데이터 속성 식별자들을 포함할 수 있다.
스토리지 컨트롤러는 채널을 통해 하드웨어 장치 컨트롤러 (예를 들어 컨트롤러들 306C 및 306D)로부터 저장될 데이터 항목들의 다른 시리즈를 수신한다. 데이터 항목들은 각기 제2 데이터 속성 식별자를 포함한다. 제2 데이터 속성 식별자는 데이터 유사성을 나타내는 하나 이상의 데이터 속성에 근거한 데이터 항목들에 관련되어 있다. 하나 이상의 데이터 속성은 데이터 수명, 데이터 종류, 데이터 사이즈, 및 물리적인 데이터 소스를 포함할 수 있다 (단계 402).
스토리지 컨트롤러는 데이터 속성 식별자들을 리드하고 메모리 장치의 어느 블록들이 대응되는 데이터 항목들을 저장하는 지를 식별한다. 따라서 동일 데이터 속성 식별자들을 가지는 데이터 항목들이 동일 블록 내에 저장되고 (단계 404), 그리고, 스토리지 컨트롤러는 데이터 항목들을 식별된 블록들로 저장한다 (단계 406).
예를 들어, 도 3에 대해, SSD (12)의 스토리지 컨트롤러 (22)는 각기 데이터 속성 ID (30A 및 30B)가 할당되어 있는 컴퓨팅 장치들 (300A 및 300B)로부터 데이터 항목들을 수신한다. 스토리지 컨트롤러 (22)는 그런 다음 동일 소거 블록/블록들 (308A)내에서 데이터 속성 ID (30A)와 관련된 데이터 항목들을 저장하고, 그리고, 동일 소거 블록/블록들 (308B)내에서 데이터 속성 ID (30B)와 관련된 데이터 항목들을 저장한다. 유사하게, SSD (12)의 스토리지 컨트롤러 (22)는 각기 데이터 속성 ID (30C 및 30D)가 할당되어 있는 컴퓨팅 장치들 (300C 및 300D)의 장치 컨트롤러들(306C 및 306D)로부터 데이터 항목들을 수신한다. 스토리지 컨트롤러 (22)는 그런 다음 동일 소거 블록/블록들 (308C)내에서 데이터 속성 ID (30C)와 관련된 데이터 항목들을 저장하고, 동일 소거 블록/블록들 (308D)내에서 데이터 속성 ID (30D)와 관련된 데이터 항목을 저장한다.
예시적 실시 예들의 경험적 인터페이스 (26)에 따라, 데이터 속성 ID (30)는 저장을 위해 임의의 입력 장치로부터 출력된 데이터 항목들 (28)에 대해 할당될 수 있다. 예를 들어 경험적 인터페이스 (26)가 예를 들어 1초에 한번과 같이 주기적으로 이미지를 취하는 디지털 보안 카메라 내에 구현된 경우라고 가정하자. 경험적 인터페이스 (26)는 이미지들의 캡쳐 레이트(capture rate), 이미지 파일 사이즈, 및 이미지들의 출처(예를 들어 장치 ID 및/또는 GPS 위치) 등과 같은, 데이터 유사를 나타내는 데이터 속성들에 근거하여 각 이미지 파일에 대해 데이터 속성 ID (30)를 할당할 수 있다. 그러한 데이터 속성들은 전형적인 멀티 스트리밍에 의해 사용되는 메타데이터(metadata)처럼 특별한 어플리케이션이나 파일 시스템과 관련될 필요가 없음을 주목하여야 한다.
도 5는 경험적 인터페이스 더 구체적으로 식별자 할당 프로세스의 일 예를 더욱 상세히 도시하는 블록도이다. 도 1 및 도 3과 유사하게, 경험적 인터페이스 (26)는 호스트 시스템 (10)의 운영체제 (20) 레벨에서 제공된다. 경험적 인터페이스 (26)는 어플리케이션 (300), 파일 시스템 (21), 및 블록 계층 (23)과 장치 드라이버들의 동작을 감시한다. 경험적 인터페이스 (26)는 데이터 유사성을 나타내는 갱신 통계 내의 데이터 속성에 기반하여 데이터 항목들에 대해 데이터 속성 식별자들 (30)을 할당한다. SSD (12)는 데이터 속성 식별자들 (30)을 리드하고 SSD (12)의 어느 블록들이 대응되는 데이터 항목들을 저장하는데 사용되었는 지를 인식하여, 동일 데이터 속성 식별자들 (30)을 가지는 데이터 항목들이 동일 블록 내에 저장되도록 한다.
몇몇 예시적 실시 예들에 따라, 경험적 인터페이스 (26)는 두 개의 소프트웨어 구성요소들을 포함한다. 즉, 운영체제 (20)내에 설치된 통계 데몬 (stats demon: 600)과 파일 시스템 레벨에서 시스템 콜 훅 (system call hooks)으로서 구현된 맵 훅 (602)이다. 통계 데몬 (600)은 SSD (12)에 대한 데이터 항목 변경 사항들(확장된 점선 박스로 나타낸 바와 같이)을 포함하는 적어도 하나의 경험/통계적 데이터 베이스 (604)를 관리하고 유지하기 위해 백그라운드 (background)내에서 연속적으로 운영될 수 있다. 맵 훅 (602)는 모든 갱신 동작들을 차단하고, 데이터베이스 (604)내의 현재 통계에 따라 파일 갱신 동작들 (610)의 각각에 대해 데이터 속성 ID (30)를 자동으로 할당할 수 있다.
일 실시 예에서, 경험적 데이터베이스 (604)내에 저장된 통계들은 두 종류들 즉 파일이름 기반 통계 및 피일 종류 기반 통계를 포함할 수 있다. 파일이름 기반 통계는 각 데이터 파일에 대한 갱신 빈도(리라이트, 갱신, 삭제, 축약(truncate) 동작들을 포함)를 기록할 수 있다. 파일 종류 기반 통계는 특정한 파일 종류들에 대한 누적된 갱신 및 삭제 빈도들을 저장할 수 있다. 일 실시 예에서, 통계 셋트들은 모두 각 파일 갱신에 의해 갱신되고 메모리 (18)와 SSD (12) 모두에 저장될 수 있다.
일 실시 예에서, 경험적 데이터베이스 (604)는 각기 테이블을 사용하여 두 종류의 통계들을 저장할 수 있다. 여기에서 테이블들은 파일이름 기반 통계 테이블 (606) 및 파일 종류 기반 통계 테이블 (608)로서 칭해진다. 일 실시 예에서, 테이블들은 해시 테이블들 (hash tables)로서 구현될 수 있다. 파일이름 기반 통계 테이블 (606)내의 각 엔트리는 파일 이름이 될 수 있는 키(key), 및 전체 수명 동안 파일에 대한 전체 갱신 수(리라이트, 갱신, 축약을 포함)를 포함할 수 있는 값을 포함할 수 있다. 새 파일의 생성에 응답하여, 통계 데몬 (600)은 파일이름 기반 통계 테이블 (606)에 대해 새 엔트리를 생성할 수 있다. 삭제된 파일에 응답하여, 통계 데몬 (600)은 파일이름 기반 통계 테이블 (606) 내에 대응하는 엔트리를 삭제할 수 있다.
파일 종류 기반 통계 테이블 (608)내의 각 엔트리는 파일 종류(mp3, mpg, xls 등)일 수 있는 키, 및 이러한 종류의 파일들에 행하여진 모든 갱신들(리라이트, 갱신, 축약, 및 삭제를 포함)을 이러한 종류의 파일들 개수로 나눈 값을 포함할 수 있다. 새 종류의 생성에 응답하여, 통계 데몬 (600)은 파일종류 기반 통계 테이블 (608) 내에 새 엔트리를 생성할 수 있다. 그리고, 통계 데몬 (600)은 엔트리가 추가된 후에 어떤 엔트리도 삭제하지 않을 수 있다.
통계 데몬 (600)은 또한 운영체제 부트업(boot up) 후, SSD (12)에서 메모리 (18)로 상기 두 해시 테이블들을 로딩할 책임이 있고, 영구 저장을 위해 SSD (12)로 상기 테이블들을 주기적으로 플러시(flush)한다. 두 해시 테이블들은 SSD (12)내에 일반 데이터 파일들로서 저장될 수 있다.
새롭게 설치된 운영체제에 대해, 경험적 인터페이스 (26)는 데이터 속성 식별자들 (30)을 효과적으로 할당하기 위한 충분한 통계를 수집하기 위해 컨피겨러블 웜 업 구간 (configurable warm-up period)을 요구할 수 있다.
맵 훅(602)은 어플리케이션들 (300) 및 OS (20)에 의해 모든 파일들에 대해 행해진 모든 파일 갱신 동작들 (생성/라이트/갱신/삭제) (610)을 차단하기 위해, 운영체제 레벨에서 시스템 콜 훅으로서 구현될 수 있다. 윈도우, 리눅스 등과 같은 대부분의 운영체제들은 시스템 프로그래밍 목적을 위해 파일 시스템 훅을 제공한다.
파일 갱신 동작들 (610)의 차단에 응답하여, 맵 훅 (602)은 관련된 정보를 통계 데몬 (600)으로 보내기 위해 경험적 데이터 베이스 갱신 동작 (612)에 의해 수행될 수 있다. 맵 훅 (602)은 그런 다음 경험적 데이터베이스 (604)를 리드하는 블록 (614)을 통하여 데이터 속성 ID 계산을 수행한다. 맵 훅(602)는 현재 통계에 따라 실질적 파일 라이트 (actual file writes)를 위해 데이터 속성 식별자(30)를 계산하고 라인 (616)을 통해 할당한다. 파일 생성 혹은 프레시 (fresh) 파일 라이트는 파일의 종류 및 현재 파일 종류 통계에 따라 데이터 속성 IDs (30)로 할당될 수 있다. 한편, 파일 데이터 갱신들은 갱신 빈도 및 현재 갱신 빈도 통계에 따라 데이터 속성 IDs (30)로 할당될 수 있다. 마침내, 맵 훅 (602)은 실제 파일 라이트를 블록 (618)을 통해 하부 (underlying) 파일 시스템 (21)으로 전송한다.
맵 훅 (602)는 데이터 속성 IDs을 계산하고 할당하기 위해 두 통계 해시 테이블들 (606 및 608)에 기반하는 알고리즘을 사용할 수 있다. 이하는 간략화된 예시적 구현이다. 해시 테이블 룩업 및 계산 오버헤드는 아주 최소화될 수 있고, SSD 리드/라이트 쓰루풋(throughput)에는 영향이 없게 된다. 추가 정보가 이들 통계 해시 테이블들 (606 및 608)에 추가될 수 있고, 보다 복잡한 스트림 ID 계산 알고리즘이 사용될 수 있다.
일 실시 예에서, 예시적 간략화 데이터 속성 ID 계산 알고리즘은 아래와 같이 나타날 수 있다.
1.Intercept file creation: add a new entry in the filename-based statistics table; if it's a new type of file, add a new entry in the filetype-based statistics table too.
2.Intercept file read: do nothing.
3.Intercept file delete: delete the file's entry in the filename-based statistics table.
4.Intercept fresh file write:
*If past warm-up period, calculate stream ID as below; otherwise, assign lowest stream ID available.
*Data property ID = floor ( (Write_Frequency_This_FileType / Max_Write_Frequency_in_FileType_HashTable)x Number_of_Available_Streams_in_NVM_Device)
*Assign stream ID to actual file write and forward it to file system and SSD.
5.Intercept file update:
*Update the filename-based statistics table by increasing the update times in this file's entry.
*Update the filetype-based statistics table by increasing the accumulated write frequency in this file type's entry.
*If past warm-up period, calculate data property ID as below; otherwise, assign lowest data property ID available.
*Data property ID = floor ( (Total_Writes_This_File / Max_Writes_in_FileName_HashTable)x
Number_of_Available_Streams_in_NVM_Device)
데이터 속성 ID 계산의 예시로서, 이하를 가정한다. 사용자는 foo.jpg (JPG 파일 종류)로 명명된 포토 파일을 편집하기 위해 포토 앱을 편집하는 중이고, 사용자의 컴퓨터의 SSD는 4개의 데이터 속성 IDs 및 스트림 IDs을 취급하도록 구성되어 있다고 하자. 사용자가 포토를 SSD (12)에 저장할 때, 맵 훅 (602)은 파일 세이브 요청을 차단하고 파일 타입을 결정하고, 그 특별한 파일의 갱신 빈도 및 JPEG 파일 종류에 대한 갱신 빈도를 경험적 데이터베이스 (604)내에 갱신한다.
맵 훅(602)는 또한 JPEG 파일 종류에 대한 라이트 빈도 (예를 들어 일일당) 뿐만 아니라 모든 파일 종류에 걸쳐 최대 라이트 빈도에 대한 현재 통계를 서치한다. 이 실시 예에서, JPEG 파일 종류가 일일당 라이트 빈도 10을 가지고 ".meta"파일 종류가 일일당 라이트 빈도 100을 가진다고 가정하면, 여기서, 라이트 빈도 100은 모든 파일 종류들에 걸쳐 가장 높은 혹은 최대 라이트 빈도 이다. 맵 훅 (602)은 그런 다음 다음의 식을 이용하여 파일 세이브 동작에 대하여 할당될 데이터 속성 ID를 할당할 수 있다.
Data property ID = floor ( (Write_Frequency_This_FileType / Max_Write_Frequency_in_FileType_HashTable)x Number_of_Available_Streams_in_NVM_Device)
Data property ID = floor ((10 / 100 ) * 4 ) +1 = 1
1의 데이터 속성 ID는 파일 데이터와 함께 파일 시스템 (21) 및 블록 계층 (23)을 통해, 0으로 할당된 데이터 속성 ID를 갖는 다른 데이터를 저장하는 블록을 위해, 저장용 SSD(12)로 전송된다.
대안적 실시 예에서, 경험적 인터페이스 (즉 통계 데몬 600 및 맵 훅 602)(26)와 경험적 데이터베이스 (604) 내의 갱신 통계에 근거한 데이터 속성 IDs의 할당은, OS 블록 스토리지 계층 (23) 혹은 심지어 SSD (12)의 내부에서 구현될 수 있다. 두 경우들에 대해, 통계 데몬 (604)은 각 스토리지 블록에 대해 갱신 통계를 저장하기 위해 룩업 테이블을 유지하는 것만이 필요하고, 맵 훅 (602)은 룩업 테이블 내에 저장된 갱신 빈도들에 따라 각 블록 갱신에 대해 데이터 속성 IDs을 계산하고 할당한다. OS 블록 스토리지 계층 (23) 내부에서의 구현의 경우에 맵 훅 (602)는 파일 시스템 (21) 대신에 OS 블록 스토리지 계층 (23) 내에서 구현될 수 있고, 통계 데몬 (604)은 운영체제의 일부인 커널 모드 데몬일 수 있다. 통계 테이블들 (606 및 608)은 메모리와 SSD (12)내의 특정 파티션 모두에 저장될 수 있다. 데이터 속성 기반 SSD (12)의 내부 구현되는 경우에 통계 테이블들 (606 및 608)은 스토리지 공간을 절약하기 위해 NAND 플래시 메모리 스페어 영역 내에 저장될 수 있고, 통계 테이블들 (606 및 608)의 인 메모리 (in-memory) 부분은 저장되고 현재 SSD FTL 맵핑 테이블들과 합쳐질 수 있다.
일 실시 예에서, 경험적 인터페이스 (26)는 소프트웨어 구성요소로서 구현될 수 있다. 다른 실시 예에서, 경험적 인터페이스 (26)는 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다. 비록 통계 데몬 (600)과 맵 훅 (602)이 분리적인 구성 요소들로서 나타나 있지만, 각각의 기능은 더 작거나 큰 수의 모듈들/구성요소들로 결합될 수 있다. 예를 들어, 다른 실시 예에서, 상태 데몬 (600) 및 맵 훅 (602)은 하나의 집적된 구성요소로서 구현될 수 있다.
일 실시 예의 경험적 인터페이스 (26)는 클라이언트에서 기업에 이르기 까지 스토리지 시장의 광범위에 걸쳐 적용될 수 있다. 상기 인터페이스 (26)는 싱글 스탠드어론 머시인(single standalone machine)을 위한 디스크에 적용될 수 있다. 상기 머시인은 데스크탑 (desktop), 랩탑 (laptop), 워크스테이션 (workstation), 서버 (server) 및 기타 등등일 수 있다. 상기 인터페이스 (26)는 스토리지 어레이(storage array), 소프트웨어 정의 스토리지 (software-define storage: SDS), 응용 특정 스토리지 (application-specific storage), 가상 머시인 (virtual machine :VM), 가상 데스크탑 인프라스트럭쳐 (virtual desktop infrastructure :VDI), 컨텐트 분배 망 (content distribution network :CDN), 및 기타 등등에 적용될 수 있다.
일 실시 예에서, 예를 들면, SSD (12)의 NVM 어레이 (24)는 복수의 플래시 메모리들과 같은 복수의 비휘발성 메모리 칩들로 형성될 수 있다. 다른 예로서, NVM 어레이 (24)는 플래시 메모리 칩들 대신에 다른 종류의 비휘발성 메모리 칩들로 형성될 수 있다. 다른 종류의 비휘발성 메모리 칩들은 예를 들어 PRAM, FRAM, MRAM, 또는 기타 메모리일 수 있다. 대안적으로 어레이 (24)는 DRAM 이나 SRAM 등과 같은 휘발성 메모리들로 형성될 수 있고, 두 종류 이상의 메모리들이 혼합된 경우인 하이브리드 형태를 가질 수 있다.
컴퓨터 시스템들이 데이터 배치 방법을 활용 가능케 하는 경험적 자율적 인터페이스를 위한 방법 및 시스템이 개시되었다. 본 발명은 보여지는 실시 예들에 따라 설명되었으나, 실시 예들에 대한 변경이 있을 수 있다. 본 발명의 사상과 범위 이내에서 다양한 변경들이 존재할 수 있다. 예를 들면, 예시적 실시 예가 하드웨어, 소프트웨어, 프로그램 명령들을 포함하는 컴퓨터 판독가능 매체, 또는 그들의 조합을 이용하여 구현될 수 있다. 본 발명에 따라 기록된 소프트웨어는 메모리, 하드 디스크와 같은 컴퓨터 판독가능 매체의 일부 형식으로 저장되거나 CD/DVD-ROM의 일부 형식으로 저장될 수 있다. 소프트웨어는 프로세서에 의해 실행될 수 있다. 따라서, 많은 변경이 첨부된 청구항들의 사상과 범위를 벗어남이 없이 본 분야의 통상의 기술을 가진 자에 의해 만들어질 수 있을 것이다.

Claims (20)

  1. 컴퓨터 장치가 비휘발성 메모리 장치내의 데이터 속성 기반 데이터 배치를 활용하는 것을 가능하게 하기 위한 인터페이스를 제공하는 방법에 있어서:
    상기 컴퓨터 장치의 운영체제 레벨에서 상기 비휘발성 메모리 장치로의 데이터 항목 변경들의 갱신 통계를 감시하는 소프트웨어 구성요소를 실행하는 단계;
    상기 소프트웨어 구성요소에 의해, 데이터베이스 내에서 상기 데이터 항목 및 데이터 항목 종류에 대한 상기 갱신 통계를 저장하는 단계; 및
    상기 데이터 항목에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 차단하고, 상기 데이터베이스 내의 현재 갱신 통계에 기반하여 상기 데이터 항목에 대하여 데이터 속성 식별자를 자동으로 할당하는 단계를 포함하되,
    상기 갱신 통계는 상기 데이터 항목의 적어도 일부에 대한 하나 이상의 갱신 빈도, 특정한 파일 종류의 파일들에 대한 누적된 갱신 및 삭제 발생 비율, 및 상기 데이터 항목의 출처를 포함하고,
    상기 소프트웨어 구성요소는 데이터 종류, 데이터 사이즈, 논리 블록 어드레스(LBA) 범위, LBA 억세스 패턴, 및 물리 데이터 소스 중 적어도 하나를 포함하는 데이터 유사성을 나타내는 하나 이상의 데이터 속성에 기반하여 상기 데이터 속성 식별자를 상기 데이터 항목으로 할당하고,
    상기 데이터 항목과 상기 할당된 데이터 속성 식별자들은 메모리 채널을 통하여 스토리지용 상기 비휘발성 메모리 장치로 전송되는 방법.
  2. 제1항에 있어서,
    상기 소프트웨어 구성요소는 상기 컴퓨터 장치의 장치 컨트롤러 내에서 실행되는 방법.
  3. 제1항에 있어서,
    상기 소프트웨어 구성요소는:
    상기 컴퓨터 장치의 운영 체제에 설치된 데몬; 및
    파일 시스템 레벨에서 구현된 시스템 콜 훅을 포함하는 방법.
  4. 제3항에 있어서,
    상기 데몬은 상기 비휘발성 메모리 장치에 대한 상기 데이터 항목 변경들의 적어도 하나의 데이터베이스를 관리 및 유지하기 위하여 백그라운드에서 연속적으로 동작하는 방법.
  5. 제4항에 있어서,
    상기 데이터 항목은 파일들을 포함하고,
    상기 적어도 하나의 데이터베이스 내에 저장된 상기 통계는 파일 이름 기반 통계 및 파일 종류 기반 통계를 포함하고,
    상기 파일 이름 기반 통계는 상기 데이터 항목에 대한 재쓰기, 갱신, 삭제, 및 축약 동작들을 포함하는 갱신 빈도들을 기록하며,
    상기 파일 종류 기반 통계는 특정 파일 종류들에 대한 누적된 갱신 및 삭제 빈도들을 기록하는 방법.
  6. 제5항에 있어서,
    상기 파일 이름 기반 통계 및 상기 파일 종류 기반 통계의 적어도 일부는 상기 컴퓨터 장치의 메모리 및 상기 비휘발성 메모리 상에 모두 저장되는 방법.
  7. 제6항에 있어서,
    상기 파일 이름 기반 통계 테이블과 상기 파일 종류 기반 통계 테이블은 해시 테이블들로서 구현되는 방법.
  8. 제7항에 있어서,
    상기 파일 이름 기반 통계 테이블내의 각 엔트리는 키 및 값(value)을 포함하고,
    상기 값은 상기 파일의 수명 동안 상기 파일에 대한 전체 갱신 수를 포함하는 방법.
  9. 제8항에 있어서,
    신규 파일의 생성에 응답하여, 상기 데몬은 상기 파일 이름 기반 통계 테이블 내에서 신규 엔트리를 생성하고,
    상기 파일이 삭제됨에 응답하여, 상기 데몬은 상기 파일 이름 기반 테이블 내에서 대응되는 엔트리를 삭제하는 방법.
  10. 제7항에 있어서,
    상기 파일 종류 기반 통계 테이블 내의 각 엔트리는 키 및 값(value)을 포함하고,
    상기 값은 상기 파일 종류의 파일들의 수에 의하여 분할된 상기 종류의 파일들에 대하여 만들어진 모든 전체 갱신들을 포함하는 방법.
  11. 제10항에 있어서,
    신규 종류의 생성에 응답하여, 상기 데몬은 상기 파일 종류 기반 통계 테이블 내에서 신규 엔트리를 생성하고,
    상기 데몬은 상기 엔트리가 추가된 후 어떠한 엔트리도 삭제하지 않는 방법.
  12. 제6항에 있어서,
    상기 데몬은 운용 체제의 부트 업 후, 상기 파일 이름 기반 통계 테이블과 상기 파일 종류 기반 통계 테이블을 상기 컴퓨터 장치의 메모리로 로드하고, 영구 저장을 위해 상기 테이블들을 상기 비휘발성 메모리로 주기적으로 플러쉬하는 방법.
  13. 제6항에 있어서,
    상기 통계는 상기 적어도 하나의 데이터 베이스 내에 저장되고,
    상기 시스템 콜 훅은:
    파일 갱신 동작들의 차단에 응답하여, 관련된 정보를 상기 데몬으로 송신하기 위하여 데이터 베이스 갱신 동작을 수행하고,
    상기 데이터 베이스를 읽고 현재 통계에 따라 실제의 파일 쓰기들에 대하여 상기 데이터 속성 식별자를 계산 및 할당하는 데이터 속성 식별자 계산을 수행하고,
    상기 실제의 파일 쓰기들을 상기 파일 시스템으로 전송하도록 구성되고,
    파일 생성이나 프레시(fresh) 파일 쓰기들은 상기 파일의 종류와 현재 파일 종류 통계에 따라 데이터 속성 식별자들로 할당되고,
    파일 데이터 갱신은 그 갱신 빈도와 현재 갱신 빈도 통계에 따라 데이터 속성 식별자로서 할당되는 방법.
  14. 제13항에 있어서,
    상기 비휘발성 메모리 장치는 최대의 수의 스트림들을 처리하도록 구성되고,
    상기 프레시 파일 쓰기들에 응답하는 상기 데이터 속성 식별자 계산은 최저 정수로 내림된 수량과 동일한 데이터 속성 식별자를 할당하는 것을 포함하고,
    상기 수량은 상기 파일 종류에 대한 쓰기 빈도를 상기 현재 파일 종류 통계의 최대 쓰기 빈도로 나눈 값에 상기 비휘발성 메모리 장치에서 사용 가능한 스트림들의 수를 곱한 값이고,
    상기 사용 가능한 스트림들의 수는 상기 최대의 수의 스트림들의 수에서 현재 스트림들의 수를 뺀 값인 방법.
  15. 제13항에 있어서,
    상기 비휘발성 메모리 장치는 최대의 수의 스트림들을 처리하도록 구성되고,
    파일 갱신에 응답하는 상기 데이터 속성 식별자 계산은 최저 정수로 내림된 수량과 동일한 데이터 속성 식별자를 할당하는 것을 포함하고,
    상기 수량은 상기 파일에 대한 총 쓰기들의 수를 상기 현재 파일 종류 통계에 대한 최대 쓰기들의 수로 나눈 값에 상기 비휘발성 메모리 장치에서 사용 가능한 스트림들의 수를 곱한 값이고,
    상기 사용 가능한 스트림들의 수는 상기 최대의 수의 스트림들의 수에서 현재 스트림들의 수를 뺀 값인 방법.
  16. 제3항에 있어서,
    상기 시스템 콜 훅은 모든 파일 갱신 동작들을 차단하고, 상기 데이터 베이스 내의 현재 통계에 따라 상기 파일 갱신 동작들 각각에 대하여 동적 속성 식별자들을 자동으로 할당하는 방법.
  17. 제1항에 있어서,
    새로이 설치된 운영 체제에 응답하여, 상기 데이터 속성 식별자들을 효율적으로 할당하기 위한 충분한 통계를 수집하기 위한 컨피겨러블 웜-업(configurable warm-up) 구간을 가지기 위해 상기 소프트웨어 구성요소를 요구하는 단계를 더 포함하는 방법.
  18. 제1항에 있어서,
    상기 비휘발성 메모리 장치는 상기 데이터 항목을 저장하기 위한 적어도 하나의 위치를 선택하기 위하여 상기 할당된 데이터 속성 식별자들을 활용하는 방법.
  19. 메모리;
    운영 체제; 및
    상기 메모리에 연결된 프로세서를 포함하되,
    상기 프로세서는 상기 운영 체제 내에 제공된 소프트웨어 구성요소를 실행하고,
    상기 소프트웨어 구성요소는:
    비휘발성 메모리 장치로의 데이터 항목 변경들의 갱신 통계를 감시하고,
    데이터베이스 내에서 상기 데이터 항목 및 데이터 항목 종류들에 대한 상기 갱신 통계를 저장하고,
    상기 데이터 항목들에 대하여 어플리케이션들에 의해 수행되는 생성, 쓰기, 및 갱신을 포함하는 모든 동작들을 차단하고, 상기 데이터베이스 내의 현재 갱신 통계에 근거하여 상기 데이터 항목에 대하여 데이터 속성 식별자를 자동으로 할당하도록 구성되고,
    상기 갱신 통계는 상기 데이터 항목들의 적어도 일부에 대한 하나 이상의 갱신 빈도, 특정한 파일 종류의 파일들에 대한 누적된 갱신 및 삭제 발생 비율, 및 상기 데이터 항목의 출처를 포함하고,
    상기 소프트웨어 구성요소는 데이터 종류, 데이터 사이즈, 논리 블록 어드레스(LBA) 범위, LBA 억세스 패턴, 및 물리 데이터 소스 중 적어도 하나를 포함하는 데이터 유사성을 나타내는 하나 이상의 데이터 속성에 기반하여 상기 데이터 속성 식별자를 상기 데이터 항목으로 할당하고,
    상기 데이터 항목들과 할당된 데이터 속성 식별자들은 메모리 채널을 통해 스토리지용 상기 비휘발성 메모리 장치로 전송되는 컴퓨터 장치.
  20. 제19항에 있어서,
    상기 소프트웨어 구성요소는 상기 컴퓨터 장치의 장치 컨트롤러 내에서 실행되는 컴퓨터 장치.


KR1020160077483A 2015-07-13 2016-06-21 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스 KR102401596B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562192045P 2015-07-13 2015-07-13
US62/192,045 2015-07-13
US201562245100P 2015-10-22 2015-10-22
US62/245,100 2015-10-22
US15/090,799 US10509770B2 (en) 2015-07-13 2016-04-05 Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US15/090,799 2016-04-05

Publications (2)

Publication Number Publication Date
KR20170008153A KR20170008153A (ko) 2017-01-23
KR102401596B1 true KR102401596B1 (ko) 2022-05-24

Family

ID=56092840

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160077483A KR102401596B1 (ko) 2015-07-13 2016-06-21 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스

Country Status (5)

Country Link
US (3) US10509770B2 (ko)
EP (1) EP3118745B1 (ko)
JP (1) JP2017021805A (ko)
KR (1) KR102401596B1 (ko)
CN (1) CN106354745B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509770B2 (en) 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US11461010B2 (en) * 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US20170220295A1 (en) * 2016-02-02 2017-08-03 Intel Corporation Technologies for reducing duplication of stored data
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
US10740294B2 (en) * 2017-01-12 2020-08-11 Pure Storage, Inc. Garbage collection of data blocks in a storage system with direct-mapped storage devices
KR102340094B1 (ko) * 2017-03-31 2021-12-17 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
CN107168654B (zh) * 2017-05-26 2019-08-13 华中科技大学 一种基于数据对象热度的异构内存分配方法及系统
US10878859B2 (en) 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands
US10572159B1 (en) 2018-03-22 2020-02-25 Amazon Technologies, Inc. Smart data storage tiers for data object transitioning
US11803325B2 (en) * 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
US10802757B2 (en) * 2018-07-30 2020-10-13 EMC IP Holding Company LLC Automated management of write streams for multi-tenant storage
KR20200053965A (ko) * 2018-11-09 2020-05-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200065489A (ko) 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 데이터 처리 시스템 내 자원 사용에 대응하여 데이터 패스를 동적 할당하는 방법 및 장치
US11231873B2 (en) * 2018-12-07 2022-01-25 Intel Corporation Apparatus and method for assigning velocities to write data
US11954328B2 (en) * 2019-07-25 2024-04-09 Sony Interactive Entertainment Inc. Storage management device, storage management method, and program
CN112347166B (zh) * 2019-08-09 2023-01-31 烽火通信科技股份有限公司 一种提高接口表查找效率的方法及系统
CN112650691B (zh) * 2019-10-10 2024-05-24 戴尔产品有限公司 基于改变频率的分层数据存储和垃圾回收系统
KR20210156190A (ko) 2020-06-17 2021-12-24 삼성전자주식회사 스토리지 장치 지원 실시간 가상 머신 마이그레이션
KR20220060397A (ko) * 2020-11-04 2022-05-11 삼성전자주식회사 전자 장치 및 이를 이용한 스토리지 관리 방법
CN112434117B (zh) * 2020-11-05 2021-07-30 广州和辰信息科技有限公司 一种基于Vue的WebGIS的可视化配置方法和系统
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
US20230054002A1 (en) * 2021-08-18 2023-02-23 Samsung Electronics Co., Ltd. Lifecycle-aware persistent storage
US11947772B2 (en) 2021-09-07 2024-04-02 Samsung Electronics Co., Ltd. Electronic device for displaying source information of file and operation method of same

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120191900A1 (en) 2009-07-17 2012-07-26 Atsushi Kunimatsu Memory management device
WO2012170751A2 (en) 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use
WO2015005634A1 (ko) 2013-07-08 2015-01-15 주식회사 윌러스표준기술연구소 메모리 시스템 및 이의 제어 방법

Family Cites Families (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5381856A (en) 1976-12-24 1978-07-19 Toyoda Mach Works Ltd Fluid bearing equipment
JPS5723812A (en) 1980-07-19 1982-02-08 Yamatake Honeywell Co Ltd Displacement-to-electricity transducer
GB2089165B (en) 1980-10-30 1985-10-09 Canon Kk Character and image processing
US4827411A (en) 1987-06-15 1989-05-02 International Business Machines Corporation Method of maintaining a topology database
JP2600376B2 (ja) * 1989-05-18 1997-04-16 日本電気株式会社 メモリ制御装置
US6607081B2 (en) 1996-11-15 2003-08-19 Diebold, Incorporated Automated transaction machine system
JPH10162098A (ja) 1996-12-02 1998-06-19 Nec Corp 文書電子化装置及び文書電子化方法
US6282663B1 (en) 1997-01-22 2001-08-28 Intel Corporation Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor
JP4197547B2 (ja) * 1998-05-13 2008-12-17 株式会社東芝 データ記憶装置およびデータ管理方法
KR100296049B1 (ko) 1999-03-19 2001-07-28 윤종용 단문메시지서비스를 통한 디지털 휴대용 단말기의 사용자 정보 송수신장치 및 그 방법
US6484235B1 (en) 1999-05-03 2002-11-19 3Ware, Inc. Methods and systems for dynamically distributing disk array data accesses
US6438555B1 (en) 1999-11-02 2002-08-20 Nortel Networks Limited Method and apparatus for accessing an ordered array structure
US7103357B2 (en) 1999-11-05 2006-09-05 Lightsurf Technologies, Inc. Media spooler system and methodology providing efficient transmission of media content from wireless devices
CA2420422C (en) 2000-08-31 2009-10-06 Ontrack Data International, Inc. System and method for data management
US6704467B2 (en) 2000-12-21 2004-03-09 Canon Kabushiki Kaisha Image editing with block selection
EP1229721A3 (en) 2001-01-31 2004-09-29 Fuji Photo Film Co., Ltd. Information displaying method and menu service method and system
US7346519B2 (en) 2001-04-10 2008-03-18 Metropolitan Regional Information Systems, Inc Method and system for MRIS platinum database
US7266843B2 (en) 2001-12-26 2007-09-04 Mcafee, Inc. Malware scanning to create clean storage locations
JP4308555B2 (ja) 2003-03-10 2009-08-05 パナソニック株式会社 受信装置および情報閲覧方法
US20070050777A1 (en) 2003-06-09 2007-03-01 Hutchinson Thomas W Duration of alerts and scanning of large data stores
US9342662B2 (en) 2003-09-16 2016-05-17 Media Rights Technologies, Inc. Method and system for controlling video media
US7346613B2 (en) 2004-01-26 2008-03-18 Microsoft Corporation System and method for a unified and blended search
US8171479B2 (en) * 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US7574409B2 (en) 2004-11-04 2009-08-11 Vericept Corporation Method, apparatus, and system for clustering and classification
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
JP2006309348A (ja) 2005-04-26 2006-11-09 Sharp Corp 送信装置、受信装置、送信方法、受信方法、送信プログラム、受信プログラムおよびコンピュータ読み取り可能な記録媒体
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US7844445B2 (en) 2005-10-12 2010-11-30 Storage Appliance Corporation Automatic connection to an online service provider from a backup system
ATE478485T1 (de) 2005-10-21 2010-09-15 Nielsen Media Res Inc Audiometer in einem tragbaren mp3 media-player headset.
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
JP4686358B2 (ja) * 2005-12-26 2011-05-25 ジヤトコ株式会社 フラッシュメモリを備えた制御装置
US7870128B2 (en) 2006-07-28 2011-01-11 Diskeeper Corporation Assigning data for storage based on speed with which data may be retrieved
US8112813B1 (en) 2006-09-29 2012-02-07 Amazon Technologies, Inc. Interactive image-based document for secured data access
JP4390795B2 (ja) * 2006-10-25 2009-12-24 パイオニア株式会社 ナビゲーションシステム
JP4283315B2 (ja) 2007-02-01 2009-06-24 シャープ株式会社 画像履歴保管方法、画像履歴保管システム及び画像履歴保管プログラム並びに記録媒体
US20080250190A1 (en) 2007-04-03 2008-10-09 Brian Johnson Portable memory device operating system and method of using same
KR101433859B1 (ko) 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
IL187037A0 (en) 2007-10-30 2008-02-09 Sandisk Il Ltd Fast update for hierarchical integrity schemes
JP5268447B2 (ja) 2008-06-26 2013-08-21 キヤノン株式会社 医療用撮影装置
US8140485B2 (en) 2008-07-31 2012-03-20 International Business Machines Corporation Data recovery using a minimum number of recovery streams
CN101673245B (zh) 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
US20100146538A1 (en) 2008-12-09 2010-06-10 Electronics And Telecommunications Research Institute Method and apparatus for transmitting/receiving broadcasting program id
US8312217B2 (en) 2008-12-30 2012-11-13 Rasilient Systems, Inc. Methods and systems for storing data blocks of multi-streams and multi-user applications
US8627039B2 (en) 2009-04-10 2014-01-07 International Business Machines Corporation Effective memory clustering to minimize page fault and optimize memory utilization
US20100288828A1 (en) 2009-05-14 2010-11-18 Aisaku Pradhan Accessible user interface for electronic devices
JP2011186562A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法
US8838877B2 (en) 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
US8296496B2 (en) 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
US20110106780A1 (en) 2009-11-05 2011-05-05 European Space Agency Method and apparatus for accessing data in a data store
TW201117605A (en) 2009-11-13 2011-05-16 Primax Electronics Ltd Image capture device
US9021185B2 (en) 2009-11-23 2015-04-28 Amir Ban Memory controller and methods for enhancing write performance of a flash device
US8495250B2 (en) 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
WO2011090500A1 (en) 2010-01-19 2011-07-28 Rether Networks Inc. Random write optimization techniques for flash disks
JP2011175615A (ja) 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
US8830300B2 (en) 2010-03-11 2014-09-09 Dolby Laboratories Licensing Corporation Multiscalar stereo video format conversion
JP2011209973A (ja) 2010-03-30 2011-10-20 Hitachi Ltd ディスクアレイ構成プログラム、計算機、計算機システム
US8812436B2 (en) 2010-05-04 2014-08-19 Symantec Corporation Schedule based data lifecycle management
JP5593254B2 (ja) 2010-05-12 2014-09-17 パナソニック株式会社 半導体メモリ装置及び半導体メモリシステム
US8615703B2 (en) 2010-06-04 2013-12-24 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
JP2012019383A (ja) 2010-07-08 2012-01-26 Panasonic Corp 記録制御装置、半導体記録装置および記録システム
JP2012020544A (ja) 2010-07-16 2012-02-02 Sekisui Chem Co Ltd 射出発泡成形品
US20120042134A1 (en) 2010-08-11 2012-02-16 Hank Risan Method and system for circumventing usage protection applicable to electronic media
US8601217B2 (en) * 2010-08-31 2013-12-03 Oracle International Corporation Method and system for inserting cache blocks
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
WO2012051600A2 (en) * 2010-10-15 2012-04-19 Kyquang Son File system-aware solid-state storage management system
US20130279395A1 (en) 2010-11-08 2013-10-24 Sharp Kabushiki Kaisha Mobile communication system, mobile station device, base station device, sgsn, ggsn, mme, mbms gw and mobile communication method
JP5679773B2 (ja) 2010-11-08 2015-03-04 シャープ株式会社 移動通信システム、移動局装置、基地局装置、mme、mbms gw及び移動通信方法
US8356153B2 (en) 2010-11-19 2013-01-15 International Business Machines Corporation Adaptive wear leveling via monitoring the properties of memory reference stream
CN103221927A (zh) 2010-11-24 2013-07-24 索尼爱立信移动通讯有限公司 用于电子设备的可动态配置的嵌入式闪存
US8868618B2 (en) 2010-12-14 2014-10-21 Microsoft Corporation Usage-optimized tables
US20120158827A1 (en) 2010-12-21 2012-06-21 Verizon Patent And Licensing Inc. Active server system monitor
JP5452735B2 (ja) 2011-01-31 2014-03-26 三菱電機株式会社 メモリコントローラ及びメモリアクセス方法
JP2012170751A (ja) 2011-02-23 2012-09-10 Olympus Medical Systems Corp 画像表示装置、方法、及びプログラム、並びにカプセル型内視鏡システム
US8738882B2 (en) 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US8983911B2 (en) * 2011-06-20 2015-03-17 Microsoft Technology Licensing, Llc Storage media abstraction for uniform data storage
KR101954215B1 (ko) 2011-07-12 2019-06-07 삼성전자주식회사 비휘발성 저장 장치의 이용 방법 및 장치
US9288226B2 (en) 2011-07-14 2016-03-15 AVG Netherlands B.V. Detection of rogue software applications
US8732831B2 (en) 2011-07-14 2014-05-20 AVG Netherlands B.V. Detection of rogue software applications
US10089017B2 (en) 2011-07-20 2018-10-02 Futurewei Technologies, Inc. Method and apparatus for SSD storage access
US8892728B2 (en) 2011-07-21 2014-11-18 Hewlett-Packard Development Company, L.P. Automatic zone-based management of a data center
US20130024483A1 (en) 2011-07-21 2013-01-24 Alcatel-Lucent Canada, Inc. Distribution of data within a database
EP2557497A1 (en) * 2011-08-08 2013-02-13 Advanced Digital Broadcast S.A. Method for improving booting of a computing device
US20130050743A1 (en) 2011-08-31 2013-02-28 Forrest Lane Steely System and Method of Print Job Retrieval from the Cloud
JP2013084176A (ja) 2011-10-12 2013-05-09 Sony Corp 情報処理装置、情報処理方法およびコンピュータプログラム
WO2013063474A1 (en) 2011-10-28 2013-05-02 Scargo, Inc. Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware
US20130111336A1 (en) 2011-11-01 2013-05-02 Griffin Dorman Platform and application independent system and method for networked file access and editing
JP5963009B2 (ja) 2011-12-08 2016-08-03 パナソニックIpマネジメント株式会社 デジタル標本作製装置、デジタル標本作製方法およびデジタル標本作製サーバ
US10203881B2 (en) 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
US8996450B1 (en) 2011-12-31 2015-03-31 Teradata Us, Inc. System and method for allocating resources in a mixed SSD and HDD storage environment
US20130183951A1 (en) 2012-01-12 2013-07-18 Shih-Wei Chien Dynamic mobile application classification
US20140074899A1 (en) 2012-02-28 2014-03-13 Ben Zion Halevy Methods and system for efficient lifecycle management of storage controller
JP5723812B2 (ja) 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US20130290601A1 (en) 2012-04-26 2013-10-31 Lsi Corporation Linux i/o scheduler for solid-state drives
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US20130300590A1 (en) 2012-05-14 2013-11-14 Paul Henry Dietz Audio Feedback
US8799829B2 (en) 2012-09-28 2014-08-05 Interactive Memories, Inc. Methods and systems for background uploading of media files for improved user experience in production of media-based products
US9158770B1 (en) 2012-10-09 2015-10-13 Robert Beadles Memorytag hybrid multidimensional bar text code
JP2016505953A (ja) 2012-12-10 2016-02-25 ヴィディテック エージー ルールベースのデータ処理システムと方法
US9395924B2 (en) * 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
KR20140112303A (ko) 2013-03-13 2014-09-23 삼성전자주식회사 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
US9715445B2 (en) 2013-03-14 2017-07-25 Sandisk Technologies Llc File differentiation based on data block identification
US9042181B2 (en) 2013-03-15 2015-05-26 SanDisk Technologies, Inc. Periodic erase operation for a non-volatile medium
US20170039372A1 (en) 2013-03-15 2017-02-09 Electro Industries/Gauge Tech Devices, systems and methods for upgrading firmware in intelligent electronic devices
KR102023351B1 (ko) * 2013-03-19 2019-11-04 삼성전자 주식회사 저장 장치 내 할당 촉진을 위한 데이터 분석 방법 및 장치
EP2800013B1 (en) 2013-04-30 2015-09-09 Systemite AB Integration database framework
US9213633B2 (en) 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification
JP6248412B2 (ja) 2013-05-13 2017-12-20 ソニー株式会社 撮像装置、撮像方法、プログラム
CN103324703A (zh) 2013-06-14 2013-09-25 西安工程大学 基于工作流引擎和知识引擎双驱动的知识推送方法
JP6099496B2 (ja) 2013-06-24 2017-03-22 Kddi株式会社 管理装置及びプログラム
US20150026257A1 (en) 2013-07-16 2015-01-22 Dropbox, Inc. Music box
US20160170873A1 (en) 2013-07-18 2016-06-16 Hitachi, Ltd. Information processing device
CN105612503B (zh) 2013-08-09 2018-10-23 桑迪士克科技有限责任公司 持久性数据结构
KR20150023151A (ko) 2013-08-23 2015-03-05 삼성전자주식회사 전자 장치 및 이의 어플리케이션 실행 방법
KR102074329B1 (ko) 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
CN105556486B (zh) 2013-09-24 2018-10-09 华为技术有限公司 用于自动管理计算单元中动态分配的内存的方法和系统
CN105593859B (zh) 2013-09-26 2019-07-12 西门子保健有限责任公司 用于管理和处理医学机构的数据的方法和系统
KR102203131B1 (ko) 2013-10-16 2021-01-14 삼성전자주식회사 파일 관리 방법 및 그 전자 장치
JP6038763B2 (ja) 2013-11-22 2016-12-07 京セラドキュメントソリューションズ株式会社 画像形成装置
US9330305B2 (en) 2013-12-29 2016-05-03 Google Technology Holdings LLC Method and device for detecting a seating position in a vehicle
US10747880B2 (en) 2013-12-30 2020-08-18 University Of Louisiana At Lafayette System and method for identifying and comparing code by semantic abstractions
US20150188960A1 (en) 2013-12-31 2015-07-02 Mohammad Taj Alhaidar System and method for online media content sharing
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
CN104111898A (zh) * 2014-05-26 2014-10-22 中国能源建设集团广东省电力设计研究院 基于多维数据相似性的混合存储系统及数据管理方法
US10289939B2 (en) 2014-07-21 2019-05-14 Yulong Computer Telecommunication Scientific (Shenzhen) Co., Ltd. Image classification method and image classification apparatus
US9619214B2 (en) 2014-08-13 2017-04-11 International Business Machines Corporation Compiler optimizations for vector instructions
US9405928B2 (en) 2014-09-17 2016-08-02 Commvault Systems, Inc. Deriving encryption rules based on file content
TWI554089B (zh) 2014-09-29 2016-10-11 緯創資通股份有限公司 影音分享方法與系統
US9892041B1 (en) 2014-09-30 2018-02-13 Veritas Technologies Llc Cache consistency optimization
CN104391569A (zh) 2014-10-15 2015-03-04 东南大学 基于认知与情绪状态多模态感知的脑机接口系统
WO2016063254A1 (en) 2014-10-23 2016-04-28 Pageproof.Com Limited Encrypted collaboration system and method
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10409526B2 (en) 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
CN104572491B (zh) * 2014-12-30 2017-10-17 华为技术有限公司 一种基于固态硬盘的读缓存管理方法及装置
TWI541669B (zh) 2015-01-05 2016-07-11 Rangecloud Information Technology Co Ltd Detection systems and methods for static detection applications, and computer program products
US9998434B2 (en) 2015-01-26 2018-06-12 Listat Ltd. Secure dynamic communication network and protocol
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
US10509770B2 (en) 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US9977623B2 (en) 2015-10-15 2018-05-22 Sandisk Technologies Llc Detection of a sequential command stream
US20170123666A1 (en) 2015-10-30 2017-05-04 Sandisk Technologies Inc. System and method for managing maintenance scheduling in a non-volatile memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120191900A1 (en) 2009-07-17 2012-07-26 Atsushi Kunimatsu Memory management device
WO2012170751A2 (en) 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use
WO2015005634A1 (ko) 2013-07-08 2015-01-15 주식회사 윌러스표준기술연구소 메모리 시스템 및 이의 제어 방법

Also Published As

Publication number Publication date
US20170017663A1 (en) 2017-01-19
US10509770B2 (en) 2019-12-17
JP2017021805A (ja) 2017-01-26
CN106354745A (zh) 2017-01-25
US11249951B2 (en) 2022-02-15
US11989160B2 (en) 2024-05-21
EP3118745A1 (en) 2017-01-18
KR20170008153A (ko) 2017-01-23
US20220171740A1 (en) 2022-06-02
CN106354745B (zh) 2021-09-03
EP3118745B1 (en) 2020-09-16
US20200073856A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
KR102401596B1 (ko) 비휘발성 장치에서 데이터 속성 기반 데이터 배치를 활용하기 위해 컴퓨터를 구동하는 경험적 인터페이스
KR102541458B1 (ko) 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치
TWI710900B (zh) 儲存裝置及方法
US9946642B2 (en) Distributed multimode storage management
JP6414852B2 (ja) メモリシステムおよび制御方法
JP6414853B2 (ja) メモリシステムおよび制御方法
TWI702495B (zh) 對使用者資料執行選擇性下伏暴露映射之設備、方法以及多模式儲存裝置
US11263149B2 (en) Cache management of logical-physical translation metadata
US20190356474A1 (en) Layout-independent cryptographic stamp of a distributed dataset
CN106708423B (zh) 多模存储管理系统
US20230019966A1 (en) Storage Design For Host Controlled Logically Addressed Flexible Data Layout
JP6666405B2 (ja) メモリシステムおよび制御方法
US20180293015A1 (en) OPTIMIZED MANAGEMENT OF FILE SYSTEM METADATA WITHIN SOLID STATE STORAGE DEVICES (SSDs)
JP2019160347A (ja) メモリシステムおよび制御方法
JP2019016386A (ja) メモリシステムおよび制御方法

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