KR20170008152A - 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치 - Google Patents
불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치Info
- Publication number
- KR20170008152A KR20170008152A KR1020160076697A KR20160076697A KR20170008152A KR 20170008152 A KR20170008152 A KR 20170008152A KR 1020160076697 A KR1020160076697 A KR 1020160076697A KR 20160076697 A KR20160076697 A KR 20160076697A KR 20170008152 A KR20170008152 A KR 20170008152A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- workflow
- data items
- hardware device
- running application
- 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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/0653—Monitoring storage devices or 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/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
-
- 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/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
Abstract
실시 예들은 불휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 불휘발성 메모리 장치 내부의 데이터 특성 기반 데이터 배치를 위해 설명된다. 본 발명의 실시 예는, 실행 중인 응용 및 컴퓨터 장치에 연결된 하드웨어 장치 중 적어도 하나를 검출하는 소프트웨어 구성 요소를 컴퓨터 장치에서 실행하는 단계, 실행 중인 응용 및 하드웨어 장치 중 적어도 하나를 검출하는 것에 응답하여, 소프트웨어 구성 요소가 작업 흐름 저장소를 검색하여 실행 중인 응용 및 하드웨어 장치 중 적어도 하나와 연관된 미리 정해진 작업 흐름을 찾는 단계, 소프트웨어 구성 요소가 실행 중인 응용 및 하드웨어 장치 중 적어도 하나의 활동을 미리 정해진 작업 흐름과 비교하는 단계, 그리고 데이터 아이템들 및 할당된 데이터 특성 식별자들이 채널을 통해 불휘발성 메모리 장치에 전송되어 저장되도록 실행 중인 응용 또는 하드웨어 장치에 의해 사용되는 데이터 아이템들에 데이터 특성 식별자들을 자동으로 할당하도록 미리 정해진 작업 흐름을 이용하는 단계를 포함한다. 미리 정해진 작업 흐름은 미리 정해진 데이터 특성 식별자들을 실행 중인 응용 또는 하드웨어 장치에 의해 불휘발성 메모리에 기입되는 데이터 아이템들의 상이한 타입들과 연관한다. 불휘발성 메모리 장치는 데이터 특성 식별자들을 읽고, 그리고 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 데이터 아이템을 저장할 불휘발성 메모리 장치의 블록을 식별한다.
Description
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 컴퓨터 장치가 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용할 수 있게 하는 인터페이스를 제공하는 방법, 불휘발성 메모리 장치 내에서의 데이터 특성 기반 데이터 배치를 위한 방법, 그리고 불휘발성 메모리 장치에 관한 것이다.
플래시 메모리 기반의 솔리드 스테이트 드라이브(SSD)는 소비자 컴퓨터들 및 기업 서버들 모두에서 널리 사용되어 왔다. 플래시 메모리는 낸드(NAND) 및 노어(NOR) 논리 게이트들을 본따 명명된 두 가지 타입을 갖는다. NAND 타입 플래시 메모리는 블록들에서 기입되고 읽혀지며, 각 블록은 복수의 페이지들을 포함한다.
SSD의 NAND 플래시 스토리지 셀들은 매우 고유한 특성들 가지므로, SSD의 통상적인 사용은 매우 비효율적이다. 예를 들어, 한 번에 하나의 페이지에 대해 읽기 및 프로그램이 수행될 수 있지만, NAND 플래시 메모리는 한 번에 하나의 블록에서 소거를 수행할 수 있다. 하나의 NAND 플래시 페이지를 재기입하기 위해, 복수의 플래시 페이지들을 포함하는 전체 소거 블록이 먼저 소거되어야 한다.
SSD와 같은 NAND 플래시 기반 스토리지 장치들은 제자리(in-placing) 갱신을 허용하지 않으므로, 가용한 자유 블록 카운트가 특정한 문턱에 도달할 때에 후속 쓰기들을 위한 공간을 확보하기 위하여 가비지 컬렉션 동작이 수행된다. 가비지 컬렉션은 목표 소거 블록으로부터 유효 데이터를 읽고 유효 데이터를 다른 블록에 기입하는 것을 포함하며, 무효 데이터는 새로운 블록으로 전송되지 않는다. NAND 소거 블록을 소거하는 것은 상대적으로 많은 시간을 필요로하며, 각 소거 블록은 3천번 내지 1만번 사이의 제한된 소거 횟수를 갖는다. 따라서, 가비지 컬렉션 오버헤드는 이 기술 분야에서 가장 큰 속도 제약 중 하나이며, 높은 데이터 입출력 레이턴시 및 낮은 입출력 성능을 유발한다.
따라서, 핫 데이터 및 콜드 데이터를 다르게 취급하지 않으며 함께 저장하는 운영 체제(OS) 및 응용들은, 핫 데이터 및 콜드 데이터를 다르게 취급하는 운영 체제 및 응용들과 비교하여, 시간의 흐름에 따라 성능이 열화되고, 더 많은 소거 횟수가 필요함에 따라 NAND 셀들이 더 빨리 마모되므로 SSD 수명이 단축된다.
SSD 제조사들 및 스토리지 기술 위원회들은 다중 스트림이라 불리는 새로운 SSD 및 표준을 제안하였으며, 이에 따르면 호스트는 데이터를 스트림이라 불리는 클래스로 그룹화할 수 있다. 각 스트림은 SSD에 의해 독립적으로 저장(또는 세이브)된다. 스트림들의 데이터는 이론상 어떠한 이유로든 그룹될 수 있다. 이러한 이유 중 하나는 가비지 컬렉션 이슈를 줄이기 위하여 유사한 수명을 갖는 데이터를 함께 저장하는 것을 목적으로 한다.
그러나, 이러한 새로운 인터페이스를 활용하기 위하여, 응용들(소스 코드를 포함) 및 운영 체제 내에서 많은 변화가 필요하다. 통상적인 컴퓨터는 수십 또는 수백개의 설치되고 실행되는 소프트웨어 응용들을 가질 수 있으므로, SSD를 더 효율적으로 활용하기 위하여 모든 응용들 특히 레거시 및 비공개 소스 응용들이 이러한 변화를 채택하도록 하는 것은 매우 어렵다. 또한, 다중 스트림 SSD는 현재 다중 스트림 SSD를 사용할 줄 하는 운영 체제 및 응용들에 의해서만 사용될 수 있다는 제한된 적용성을 갖는다.
현재 필요한 것은 스토리지 장치의 향상된 데이터 특성 기반 데이터 배치이며, 더 상세하게는 컴퓨터 장치가 데이터 특성 기반 데이터 배치(예를 들어, 다중 스트림) SSD를 활용할 수 있게 하는 자동 프로세스이다.
본 발명의 목적은 기존의 장치들 또는 응용들에서 데이터 특성 기반 데이터 배치를 활용할 수 있게 하는 장치 및 방법을 제공하는 데에 있다.
본 발명은 컴퓨터 장치가 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용하게 하는 인터페이스를 제공하는 방법에 관한 것이다. 본 발명의 방법은, 실행 중인 응용 및 상기 컴퓨터 장치에 연결된 하드웨어 장치 중 적어도 하나를 검출하는 소프트웨어 구성 요소를 상기 컴퓨터 장치에서 실행하는 단계, 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나를 검출하는 것에 응답하여, 상기 소프트웨어 구성 요소가 작업 흐름 저장소를 검색하여 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나와 연관된 미리 정해진 작업 흐름을 찾는 단계, 상기 소프트웨어 구성 요소가 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 단계, 그리고 데이터 아이템들 및 할당된 데이터 특성 식별자들이 채널을 통해 상기 불휘발성 메모리 장치에 전송되어 저장되도록 상기 실행 중인 응용 또는 상기 하드웨어 장치에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하도록 상기 미리 정해진 작업 흐름을 이용하는 단계를 포함한다. 상기 미리 정해진 작업 흐름은 미리 정해진 데이터 특성 식별자들을 상기 실행 중인 응용 또는 상기 하드웨어 장치에 의해 상기 불휘발성 메모리에 기입되는 상기 데이터 아이템들의 상이한 타입들과 연관한다. 상기 불휘발성 메모리 장치는 상기 데이터 특성 식별자들을 읽고, 그리고 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 데이터 아이템을 저장할 상기 불휘발성 메모리 장치의 블록을 식별한다.
본 발명은 시스템에 관한 것이다. 본 발명의 시스템은 불휘발성 메모리 장치, 그리고 상기 불휘발성 메모리 장치에 연결된 컴퓨터 장치를 포함한다. 상기 컴퓨터 장치는 상기 컴퓨터 장치가 상기 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용하게 하는 인터페이스로 기능하는 소프트웨어 구성 요소를 실행한다. 상기 소프트웨어 구성 요소는, 실행 중인 응용 및 상기 컴퓨터 장치에 연결된 하드웨어 장치 중 적어도 하나를 검출하는 단계, 상기 실행 중인 응용 및 상기 하드웨어 장치 중 하나를 검출하는 것에 응답하여, 작업 흐름 저장소를 검색하여 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나와 연관된 미리 정해진 작업 흐름을 찾는 단계, 상기 소프트웨어 구성 요소가 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 단계, 그리고 데이터 아이템들 및 할당된 데이터 특성 식별자들이 채널을 통해 상기 불휘발성 메모리 장치에 전송되어 저장되도록 상기 응용 또는 상기 하드웨어 장치에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하도록 상기 미리 정해진 작업 흐름을 이용하는 단계를 수행하도록 구성된다. 상기 미리 정해진 작업 흐름은 상기 실행 중인 응용 또는 상기 하드웨어 장치에 의해 상기 불휘발성 메모리 장치에 기입되는 데이터 아이템들의 상이한 타입들에 미리 정해진 데이터 특성 식별자들을 연관한다. 상기 불휘발성 메모리 장치는 상기 데이터 특성 식별자들을 읽고, 그리고 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 데이터 아이템을 저장할 상기 불휘발성 메모리 장치의 블록을 식별한다.
본 발명은 불휘발성 메모리 장치에 관한 것이다. 본 발명의 불휘발성 메모리 장치는, 메모리 어레이, 그리고 상기 메모리 어레이 및 채널에 연결되는 스토리지 컨트롤러를 포함한다. 상기 스토리지 컨트롤러는, 운영 체제 및 실행 중인 응용 중 적어도 하나로부터 상기 메모리 채널을 통해 저장될 제1 시리즈의 데이터 아이템들을 수신하고, 상기 제1 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들에 기반하여 상기 제1 시리즈의 데이터 아이템들과 연관되는 제1 데이터 특성 식별자를 포함하고, 하드웨어 장치 컨트롤러로부터 상기 메모리 채널을 통해 저장될 제2 시리즈의 데이터 아이템들을 수신하고, 상기 제2 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들에 기반하여 상기 제2 시리즈의 데이터 아이템들과 연관되는 제2 데이터 특성 식별자를 포함하고, 상기 제1 및 제2 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 제1 및 제2 시리즈의 데이터 아이템들을 저장할 블록들을 식별하고, 그리고 상기 제1 및 제2 시리즈의 데이터 아이템들을 상기 식별된 블록들에 저장하도록 구성된다.
본 발명은 불휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 상기 불휘발성 메모리 장치 내부의 데이터 특성 기반 데이터 배치를 위한 방법에 관한 것이다. 본 발명의 방법은, 운영 체제 및 실행 중인 응용 중 적어도 하나로부터 메모리 채널을 통해 저장될 제1 시리즈의 데이터 아이템들을 수신하는 단계, 상기 제1 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 아이템들에 기반하여 연관되는 제1 데이터 특성 식별자를 포함하고, 하드웨어 장치 컨트롤러로부터 상기 메모리 채널을 통해 저장될 제2 시리즈의 데이터 아이템들을 수신하는 단계, 상기 제2 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 아이템들에 기반하여 연관되는 제2 데이터 특성 식별자를 포함하고, 상기 제1 및 제2 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자를 갖는 데이터 아이템들이 동일한 블록에 저장되도록 상기 제1 및 제2 시리즈의 데이터 아이템들을 저장할 상기 불휘발성 메모리 장치의 블록들을 식별하는 단계, 그리고 상기 제1 및 제2 시리즈의 데이터 아이템들을 상기 식별된 블록들에 저장하는 단계를 포함한다.
본 발명은 컴퓨터 장치가 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용하게 하는 인터페이스를 제공하는 방법에 관한 것이다. 본 발명의 방법은, 상기 컴퓨터 장치에서 소프트웨어 구성 요소를 실행하는 단계, 상기 소프트웨어 구성 요소가 상기 소프트웨어 구성 요소와 연관된 미리 정해진 작업 흐름을 찾도록 작업 흐름 저장소에 요청하는 단계, 상기 미리 정해진 작업 흐름은 상기 불휘발성 메모리 장치에 기입될 데이터 아이템들의 상이한 특성들에 미리 정해진 데이터 특성 식별자들을 연관하고, 상기 소프트웨어 구성 요소의 동작 동안에, 상기 소프트웨어 구성 요소에 의해 사용되는 데이터 아이템들과 연관되는 하나 또는 그보다 많은 데이터 특성 식별자들을 위해 상기 미리 정해진 작업 흐름에 하나 또는 그보다 많은 요청들을 전송하는 단계, 그리고 상기 소프트웨어 구성 요소가 상기 하나 또는 그보다 많은 데이터 특성 식별자들을 상기 미리 정해진 작업 흐름으로부터 수신하는 것에 응답하여, 상기 소프트웨어 구성 요소에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하고 그리고 상기 데이터 아이템들 및 상기 할당된 데이터 특성 식별자들을 저장을 위해 상기 불휘발성 메모리 장치에 전송하는 단계를 포함한다. 상기 불휘발성 메모리 장치는 상기 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 데이터 아이템들이 저장될 상기 불휘발성 메모리 장치의 블록들을 식별한다.
본 발명에 따르면, 기존의 장치, 응용 또는 운영 체제를 일부 수정함으로써 데이터 특성 기반 데이터 배치가 활용될 수 있다. 따라서, 기존의 장치, 응응 또는 운영 체제의 데이터 관리 효율성이 향상된다.
본 발명의 특성 및 활용이 후술되는 실시 예들의 설명 및 첨부된 도면들을 참조하여 더 명백하게 이해될 것이다.
도 1은 작업 흐름 모니터 인터페이스에 의해 제공되는 불휘발성 메모리 장치의 데이터 특성 기반 데이터 배치를 위한 시스템의 실시 예를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따라 컴퓨터 장치가 불휘발성 메모리 장치 내의 데이터 특성 기반 데이터 배치를 활용할 수 있게 하기 위한 작업 흐름 모니터 인터페이스를 제공하기 위한 호스트 시스템에서 수행되는 프로세스를 보여주는 순서도이다.
도 3은 데이터 특성 기반 데이터 배치를 구비한 SSD와 호환되는 다양한 컴퓨팅 장치들로 구현된 실시 예들의 작업 흐름 모니터 인터페이스를 보여주는 다이어그램이다.
도 4는 본 발명의 실시 예에 따라 불휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 데이터 특성 기반 데이터 배치를 위한 프로세스를 보여주는 순서도이다.
도 5는 상이한 수명들 및 상이한 특성들을 갖는 데이터를 저장하는 데이터 베이스 응용에 의해 수행되는 스토리지 동작들에 대한 작업 흐름 모니터 인터페이스의 동작의 예를 보여주는 블록도이다.
도 6은 작업 흐름 모니터 인터페이스를 더 상세하게 보여주는 블록도이다.
도 7은 데이터 식별자 할당 방법의 다른 예를 보여주는 블록도이다.
도 1은 작업 흐름 모니터 인터페이스에 의해 제공되는 불휘발성 메모리 장치의 데이터 특성 기반 데이터 배치를 위한 시스템의 실시 예를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따라 컴퓨터 장치가 불휘발성 메모리 장치 내의 데이터 특성 기반 데이터 배치를 활용할 수 있게 하기 위한 작업 흐름 모니터 인터페이스를 제공하기 위한 호스트 시스템에서 수행되는 프로세스를 보여주는 순서도이다.
도 3은 데이터 특성 기반 데이터 배치를 구비한 SSD와 호환되는 다양한 컴퓨팅 장치들로 구현된 실시 예들의 작업 흐름 모니터 인터페이스를 보여주는 다이어그램이다.
도 4는 본 발명의 실시 예에 따라 불휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 데이터 특성 기반 데이터 배치를 위한 프로세스를 보여주는 순서도이다.
도 5는 상이한 수명들 및 상이한 특성들을 갖는 데이터를 저장하는 데이터 베이스 응용에 의해 수행되는 스토리지 동작들에 대한 작업 흐름 모니터 인터페이스의 동작의 예를 보여주는 블록도이다.
도 6은 작업 흐름 모니터 인터페이스를 더 상세하게 보여주는 블록도이다.
도 7은 데이터 식별자 할당 방법의 다른 예를 보여주는 블록도이다.
첨부된 도면들을 참조하여 본 발명의 기술적 사상의 실시 예들이 상세하게 설명된다. 유사한 참조 번호들은 유사한 구성 요소들을 참조할 수 있다.
본 발명의 장점들 및 특징들, 그리고 그것을 달성하는 방법들은 상세한 설명 및 첨부된 도면들을 참조하여 더 용이하게 이해될 수 있다. 그러나, 본 발명의 기술적 사상은 다양한 다른 형태들로 구현될 수 있으며, 여기에 개시되는 실시 예들로 한정되지 않는 것으로 이해되어야 한다. 실시 예들은 이하의 기재가 철저하고 완전하며, 본 발명의 기술적 사상을 이 분야에 통상적인 기술을 가진 자들에게 전달할 수 있도록 제공되는 것에 불과하며, 본 발명의 기술적 사상은 첨부된 청구범위에 의해서만 정의된다. 도면들에서, 계층들 및 영역들의 두께는 명확성을 위해 강조될 수 있다.
별도로 언급되지 않으면, "포함하다", "구비하다", "갖는다"의 용어들은 개방적인 용어들(즉, 한정되지 않는)것으로 이해되어야 한다.
여기에 사용되는 "알고리즘" 또는 "모둘"의 용어는 특정한 작업들을 수행하는 FPGA (field programmable gate array) 또는 ASIC (an application specific integrated circuit)와 같은 소프트웨어 또는 하드웨어 구성 요소일 수 있으며, 한정되지 않는다. 알고리즘 또는 모듈은 어드레스로 식별 가능한 스토리지 매체에 거주하도록 구성될 수 있으며, 하나 또는 그보다 많은 프로세스들을 실행하도록 구성될 수 있다. 따라서, 알고리즘 또는 모듈은, 예시적으로, 소프트웨어 구성 요소, 객체 지향 소프트웨어 구성 요소, 클래스 구성 요소, 그리고 작업 구성 요소와 가은 구성 요소(component), 프로세스들, 기능들, 속성들(attributes), 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 펌웨어, 마이크로코드, 회로망, 데이터, 데이터베이스, 데이터 구조, 테이블들, 어레이들, 그리고 변수들을 포함할 수 있다. 구성 요소들 및 구성 요소들 또는 모듈들에 제공되는 기능들은 더 적은 구성 요소들 또는 모듈들로 결합되거나, 또는 추가적은 구성 요소들 및 구성 요소들 또는 모듈들로 더 분리될 수 있다.
별도로 정의되지 않으면, 여기에서 사용되는 모든 기술적 과학적 용어들은 이 발명이 속하는 분야에서 통상적인 기술을 가진 자들에 의해 공통적으로 이해되는 것과 동일한 의미를 갖는다. 어느 또는 모든 예들 또는 예시적인 용어들의 사용은 본 발명을 더 명확하제 조명하기 위해 의도된 것이며, 별도로 명시되지 않는 한 본 발명의 범위를 한정하는 용도로 사용되지 않는다. 또한, 별도로 정의되지 않으면, 일반적으로 사용되는 사전들에서 정의된 모든 용어들은 과도하게 해석되지 않아야 한다.
예시적으로, 본 발명의 실시 예들은, 응용들 및 장치들이 다중 스트리밍을 활용하도록 프로그램되지 않더라도, 컴퓨터 장치가 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치(예를 들어, 다중 스트리밍)을 활용하는 것을 가능하게 하기 위한 인터페이스를 제공한다. 구체적으로, 본 발명의 실시 예들은, 컴퓨터 장치의 활동을 모니터하고 그리고 실행중인 응용들 또는 연결된 장치들의 작업 흐름의 지식을 이용하여 미리 정해진 데이터 특성 식별자들을 불휘발성 메모리 장치에 세이브(또는 기입)되는 데이터 아이템들에 할당하는 응용 모델 기반 스트림 식별자 프로세스를 제공한다. 다중 스트리밍과 동일하게, 수신자 메모리 장치는 동일한 데이터 특성 식별자를 갖는 모든 데이터가 동시에(거의 동시에) 무효화될 것으로 가정하고, 이러한 데이터를 공통 소거 블록들에 배치(또는 기입)할 수 있다.
도 1은 작업 흐름 모니터 인터페이스에 의해 제공되는 불휘발성 메모리 장치의 데이터 특성 기반 데이터 배치를 위한 실시 예를 보여주는 블록도이다. 여기에 설명되는 실시 예들은 가비지 컬렉션을 필요로 하는 어느 불휘발성 메모리 장치에도 적용될 수 있으며, 불휘발성 메모리 장치가 솔리드 스테이트 드라이브(SSD)를 포함하는 실시 예를 참조하여 설명된다.
시스템은 채널(14)을 통해 SSD (12)에 결합된 호스트 시스템(10)을 포함한다. 여기에서 사용되는 것과 같이, 채널은 불휘발성 메모리 장치(예를 들어, SSD)를 컴퓨터 또는 SSD를 사용하는 다른 하드웨어에 연결하는 임의의 물리 인터페이스를 나타낼 수 있다. 인터페이스는 SATA, SCSI, PCIe, USB, iSCSI, FC, 이더넷 등과 같은 유선 인터페이스, 그리고 WiFi와 같은 무선 인터페이스를 포함할 수 있다. 잘 알려진 바와 같이, SSD는 데이터를 저장하는 이동식 부품을 갖지 않으며, 데이터를 유지하는 데에 일정한 전력을 필요로 하지 않는다. 본 발명과 연관된 호스트 시스템(10)의 구성 요소들은, 운영 체제(OS, 20) 및 파일 시스템(21)을 포함하는 메모리(18)로부터의 컴퓨터 명령들을 실행하는 프로세서(16)를 포함한다. 호스트 시스템(10)은 채널(14)과 인터페이싱하기 위한 메모리 컨트롤러와 같은 미도시된 다른 구성 요소들을 더 포함할 수 있다. 호스트 시스템(10) 및 SSD (12)는 채널(14)을 통해 커맨드들 및 데이터 아이템들(28)을 통신할 수 있다. 예시적으로, 호스트 시스템(10)은 임의의 타임의 운영 체제를 실행하는 통상적인 컴퓨터 또는 서버일 수 있다. 운영 체제의 타입들은 단일 및 다중 사용자, 분산, 템플릿(templated), 임베디드, 실시간 및 라이브러리를 포함할 수 있다. 다른 예로서, 호스트 시스템(10)은 장치 제어기와 같은 스탠드얼론 구성 요소일 수 있으며, 이 경우에 운영 체제는 경량 운영 체제(또는 그들의 일부) 또는 펌웨어일 수 있다.
SSD (12)는 스토리지 컨트롤러(22) 및 호스트 시스템(10)으로부터의 데이터를 저장하는 불휘발성 메모리 어레이(24)를 포함한다. 스토리지 컨트롤러(22)는 불휘발성 메모리 어레이(24)에 저장된 데이터를 관리하고, 통신 프로토콜을 통해 채널(14)을 거쳐 호스트 시스템(10)과 통신한다. 불휘발성 메모리 어레이(24)는 플래시 메모리, 강유전체 랜덤 액세스 메모리(F-RAM), 자기저항 랜덤 액세스 메모리(MRAM), 상 변화 메모리(PCM), 노래기(millipede) 메모리 등과 같은 불휘발성 랜덤 액세스 메모리(NVRAM)를 포함할 수 있다. SSD (12) 및 채널(14) 모두는 듀얼 채널 구조와 같은 다중 채널 메모리 구조를 지원하며, 단일, 2배속 또는 4배속 데이터 전송을 지원할 수 있다.
본 발명의 실시 예들에 따르면, SSD (12)에서 가비지 컬렉션 오버헤드를 감소시키기 위하여, SSD (120)에 향상된 데이터 특성 기반 데이터 배치가 제공된다. 이는, 응용들 및 하드웨어 구성 요소들 모두가 상이한 수명들을 갖는 데이터 아이템들을 SSD (12)에 개별적으로 저장하는 것을 가능하게 하는 작업 흐름 모니터 인터페이스(26)를 제공함으로써 달성된다. 또한, 작업 흐름 모니터 인터페이스(26)의 사용은 호스트 시스템(10)에서 실행되는 사용자 응용들의 변화를 요구하지 않는다.
예시적으로, 작업 흐름 모니터 인터페이스(26)는 프로세서(16)에 의해 실행되며 호스트 시스템(10)이 응용들 또는 연결된 하드웨어 장치들을 실행하는 것을 지속적으로 모니터하는 적어도 하나의 소프트웨어 구성 요소를 포함한다. 작업 흐름 모니터 인터페이스(26)는 응용들 및 연결된 장치들에 대한 미리 정해진 작업 흐름 패턴들의 지식을 구비하며, 이러한 작업 흐름 패턴에 기반하여 응용들 및 연결된 장치들에 의해 기입되는 데이터 아이템들에 데이터 특성 식별자들(예를 들어, 스트림 ID)을 할당한다.
본 발명의 실시 예들의 일 측면에 따르면, 작업 흐름 모니터 인터페이스(26)는 다양한 응용들 및 장치들에 대한 알려진 작업 흐름들의 라이브러리로 작용하는 작업 흐름 저장소(27)를 포함할 수 있다. 작업 흐름 저장소(27) 내의 작업 흐름들 각각은 작업 흐름의 다양한 단계들 동안에 주어진 특성 식별자(예를 들어, 스트림 식별자)를 갖고 생성되는 하나 또는 그보다 많은 스트림들(즉, 하나 또는 그보다 많은 개별 데이터 쓰기들)을 포함할 수 있다. 예시적으로, 작업 흐름 저장소(27)는 작업 흐름 모니터 인터페이스(26)로부터 개별적으로 분리된 구성 요소일 수 있다. 그러나, 다른 예로서, 작업 흐름 저장소(27)는 작업 흐름 모니터 인터페이스(26)와 집적될 수 있다. 예시적으로, 데이터 특성 식별자(30)의 실제 할당은 운영 체제(20)의 파일 시스템(21) 내의 소프트웨어 후크(hook)에 의해 수행될 수 있다.
도 2는 본 발명의 실시 예에 따라 컴퓨터 장치가 불휘발성 메모리 장치 내의 데이터 특성 기반 데이터 배치를 활용할 수 있게 하기 위한 작업 흐름 모니터 인터페이스를 제공하기 위한 호스트 시스템에서 수행되는 프로세스를 보여주는 순서도이다. 프로세스는 실행 중인 응용 및 컴퓨팅 장치와 연결중인 하드웨어 장치 중 적어도 하나를 검출하는 소프트웨어 구성 요소(예를 들어, 작업 흐름 모니터 인터페이스(26))를 컴퓨팅 장치(10)에서 실행하는 것(200)을 포함할 수 있다. 예시적으로, 실행 중인 응용들을 검출하는 것은 프로세스들 또는 쓰레드들을 검출하는 것을 포함할 수 있다. 하드웨어 장치 연결의 예는 호스트 장치(10)에 연결되고 통신하는 카메라를 포함할 수 있다.
예시적으로, 실행 중인 응용 또는 하드웨어 장치를 검출하는 것은 전체적으로 소프트웨어 구성 요소가 데이터 특성 기반 데이터 배치를 제공(예를 들어, 응용 또는 하드웨어 장치가 다중 스트리밍 능력에 호환되게 설계되지 않더라도 다중 스트리밍 능력을 제공)하는 새로운 데이터 배치 클라이언트를 검출하는 것으로 보여질 수 있다.
실행 중인 응용 또는 연결 중인 하드웨어 장치 연결을 검출하는 것에 응답하여, 소프트웨어 구성 요소는 작업 흐름 저장소(27)를 검색하여 실행 중인 응용 또는 하드웨어 장치와 연관된 미리 정해진 작업 흐름을 찾을 수 있다. 미리 정해진 작업 흐름은 실행 중인 응용 또는 하드웨어 장치에 의해 불휘발성 메모리 장치에 기입되는 상이한 타입의 데이터 아이템들에 데이터 특성 식별자들을 연관시킬 수 있다(202).
예시적으로, 작업 흐름 저장소(27)는 작업 흐름 모니터 인터페이스(26)와 집적되거나 또는 개별 구성 요소로 구현될 수 있다. 예시적으로, 작업 흐름 저장소(27)는 컴퓨팅 장치(10) 내부에 위치할 수 있으며, 다른 예로서, 작업 흐름 저장소(27)는 컴퓨팅 장치(10)로부터 떨어져 위치할 수 있다. 어느 경우에든, 실시 예로서, 작업 흐름 모니터 인터페이스(26)는 새로운 응용들 및 하드웨어 장치들을 수용하기 위하여 작업 흐름 저장소(27)의 새로운 또는 갱신 작업 흐름들을 수신할 수 있다.
소프트웨어 구성 요소는 실행 중인 응용 또는 하드웨어 장치의 활동들을 미리 정해진 작업 흐름과 비교할 수 있다(204). 예시적으로, 활동들을 비교하는 것은, 응용 또는 하드웨어 장치에 의해 수행되는 하나 또는 그보다 많은 현재 프로세스들 또는 스텝들을 조사(examine)하고, 현재 프로세스들 또는 스텝들을 미리 정해진 작업 흐름 내의 프로세스들 또는 스텝들의 유사한 시퀀스와 맞추는(match) 것을 포함할 수 있다. 상술된 바와 같이, 작업 흐름은 작업 흐름의 다양한 단계들 동안 프로세스들 또는 스텝들의 시퀀스 동안에 수행되는 하나 또는 그보다 많은 개별 데이터 쓰기들을 주어진 데이터 특성 식별자와 연관시킨다.
소프트웨어 구성 요소는 미리 정해진 작업 흐름을 이용하여, 데이터 특성 식별자들을 실행 중인 응용 또는 하드웨어 장치에 의해 사용되는 데이터 아이템들에 자동으로 할당하며, 데이터 아이템들 및 할당된 데이터 특성 식별자들은 저장을 위해 불휘발성 메모리 어레이(24)로 전송된다(206).
본 발명의 일 실시 예에 따르면, 작업 흐름 모니터 인터페이스(26)는 작업 흐름 저장소(27)를 이용하여, 데이터 수명, 데이터 타입, 데이터 사이즈 및 물리적 또는 논리적 데이터 소스와 같은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들에 기반하여, 데이터 아이템들(28) 각각에 데이터 특성 식별자들(30)을 할당 또는 연관시킬 수 있다. 이러한 방법으로, 동일한 또는 유사한 데이터 특성들을 갖는 데이터 아이템들(28)은 동일한 데이터 특성 식별자 값을 할당받을 수 있다.
실시 예로서 작업 흐름 모니터 인터페이스(26)가 운영 체제 레벨에서 제공되므로, 현존하는 응용들에서 본 발명의 실시 예에 따른 데이터 특성 기반 데이터 배치 프로세스에 부합하기 위하여 어떠한 변화도 요구되지 않는다. 따라서, 작업 흐름 모니터 인터페이스(26)는 프로세서 및 운영 체제를 구비한 어떤 타입의 컴퓨팅 장치에도 구현될 수 있으며, 기존 다중 스트림의 사용을 응용들 및 운영 체제들 너머로 확장할 수 있다.
도 3은 데이터 특성 기반 데이터 배치(예를 들어, 다중 스트리밍)를 구비한 SSD (12)와 호환되는 다양한 컴퓨팅 장치들(300A~300D)로 구현된 실시 예들의 작업 흐름 모니터 인터페이스를 보여주는 다이어그램이다. 컴퓨팅 장치들(300A, 300B)은, 각각 작업 흐름 모니터 인터페이스들(26A, 26B)이 운영 체제들(20A, 20B)에 제공되거나 또는 옵션으로 스탠드얼론 응용으로 제공되는 퍼스널 컴퓨터 또는 서버 또는 스토리지 하부시스템들과 같은 호스트 장치들을 나타낼 수 있다. 작업 흐름 모니터 인터페이스(26A)는 응용(304A)에 의해 수행되는 데이터 아이템 동작을 모니터하고, 작업 흐름 저장소로부터의 일치하는 작업 흐름에 기반하여 응용(304A)으로부터의 데이터 아이템들 각각에 데이터 특성 식별자들(30A)을 자동으로 할당할 수 있다. 마찬가지로, 작업 흐름 모니터 인터페이스(26B)는 운영 체제(20B)의 블록 레이어(23B)에 의해 수행되는 데이터 아이템 동작들을 모니터하고, 작업 흐름 저장소로부터의 일치하는 작업 흐름에 기반하여 블록 레이어(23B)에 의해 수행되는 데이터 아이템들 각각에 데이터 특성 식별자들(30B)을 자동으로 할당할 수 있다.
컴퓨팅 장치들(300C, 300D)은 불휘발성 메모리 장치를 활용하는 임의의 하드웨어 장치를 나타내며, 카메라, 마이크, 온도계, GPS, 시계, 센서, 스위치, 라우터, RAID 시스템, 또는 호스트 버스 어댑터(HBA) 시스템을 포함할 수 있다. 일부 타입의 하드웨어 장치들에서, 작업 흐름 모니터 인터페이스(26C)는 하드웨어 장치 제어기(306C) 내에 제공될 수 있다. 작업 흐름 모니터 인터페이스(26C)는 알려진 작업 흐름에 기반하여 장치 제어기(306C)로부터의 데이터 아이템 동작들(예를 들어, 쓰기)에 데이터 특성 식별자들(30C)을 자동으로 할당할 수 있다. 카메라와 같은 다른 타입의 하드웨어 장치들(300D)에서, 작업 흐름 모니터 인터페이스(26D)는 운영 체제의 일부로 구현되거나 또는 프로세서에서 별도의 응용으로 구동될 수 있다. 작업 흐름 모니터 인터페이스(26D)는 프로세서(306D)에 의해 수행되는 데이터 아이템 동작들을 모니터하고, 알려진 작업 흐름 또는 작업 흐름 저장소로부터의 일치하는 작업 흐름에 기반하여 프로세서(306D)로부터의 데이터 아이템들 각각에 데이터 특성 식별자들(30D)를 자동으로 할당할 수 있다.
도 4는 본 발명의 실시 예에 따라 불휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 데이터 특성 기반 데이터 배치를 위한 프로세스를 보여주는 순서도이다. 도 3 및 도 4를 참조하면, 프로세스는 운영 체제 또는 실행 중인 응용(예를 들어, 운영 체제(20B 또는 응용들(304A)) 중 적어도 하나로부터 저장될 데이터 아이템들의 제1 시리즈를 채널을 통해 수신하는 것을 포함할 수 있다. 데이터 아이템들 각각은, 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들(데이터 수명, 데이터 타입, 데이터 사이즈, 논리 블록 어드레스(LBA) 범위, LBA 액세스 패턴, 그리고 물리 데이터 소스를 포함)에 기반하여 데이터 아이템들과 연관된 제1 데이터 특성 식별자를 포함할 수 있다(400). 데이터 수명, 데이터 타입, 데이터 사이즈, 논리 블록 어드레스(LBA) 범위, LBA 액세스 패턴, 그리고 물리 데이터 소스와 같은 다양한 데이터 특성들은, 여기에 나열되지 않은 다른 특성들 또는 현재 알려지지 않은 다른 특성들을 포함하여 액세스 유사도에 대해 고려될 수 있다.
예시적으로, 데이터 타입은 원 응용을 넘어선 특성을 포함할 수 있다. 예시적으로, 운영 체제 또는 응용으로부터 수신되는 데이터 아이템들은, 작업 흐름 모니터 인터페이스(26)에 더하여 다른 프로세스에 의해 데이터 아이템들과 연관된 데이터 특성 식별자들을 포함할 수 있다.
스토리지 컨트롤러(22)는 하드웨어 장치(예를 들어, 제어기(306C) 또는 프로세서(306D))로부터 저장될 데이터 아이템들의 다른 시리즈를 채널을 통해 수신할 수 있다. 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들에 기반하여 데이터 아이템들과 연관된 제2 데이터 특성 식별자를 포함할 수 있다(402).
스토리지 컨트롤러(22)는 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 블록들의 동일한 세트에 저장되도록 대응하는 데이터 아이템들이 저장될 메모리 장치의 블록들을 식별하고(404), 그리고 데이터 아이템들을 식별된 블록들에 저장할 수 있다(406).
예를 들어, 도 3에서, SSD (12)의 스토리지 컨트롤러(22)는 데이터 특성 식별자들(30A, 30B)에 각각 할당된 컴퓨팅 장치들(300A, 300B)로부터 데이터 아이템들을 수신할 수 있다. 이후에, 스토리지 컨트롤러(22)는 데이터 특성 식별자(30A)와 연관된 데이터 아이템들을 동일한 소거 블록(308A) 내에 저장하고, 데이터 특성 식별자들(30B)과 연관된 데이터 아이템들을 동일한 소거 블록(308B) 내에 저장할 수 있다. 마찬가지로, SSD (12)의 스토리지 컨트롤러(22)는 데이터 특성 식별자들(30C, 30D)에 각각 할당된 컴퓨팅 장치들(300C, 300D)의 장치 제어기들(306C, 306D)로부터 데이터 아이템들을 수신한다. 이후에, 스토리지 컨트롤러(22)는 데이터 특성 식별자(30C)와 연관된 데이터 아이템들을 동일한 소거 블록(308C)에 저장하고, 데이터 특성 식별자(30D)와 연관된 데이터 아이템들을 동일한 소거 블록(308D)에 저장한다. 예시적으로, 데이터 식별자들이 소스들 사이에 실제적 유사도가 있음을 가리키면, 소거 블록들(308C, 308B)은 상호 배타적일 필요는 없다.
본 발명의 실시 예의 작업 흐름 모니터 인터페이스(26)에 따르면, 데이터 특성 식별자(30)는 저장소에 대한 임의의 타입의 입력 장치로부터 출력되는 데이터 아이템들(28)에 할당될 수 있다. 예를 들어, 작업 흐름 모니터 인터페이스(26)는 이미지를 주기적으로(예를 들어, 매 초마다 한 번씩) 이미지를 획득하는 디지털 보안 카메라 내에 구현되는 것으로 가정한다. 작업 흐름 모니터 인터페이스(26)는 데이터 유사도를 가리키는 데이터 특성들, 예를 들어 이미지의 캡처율, 이미지 파일 사이즈, 그리고 이미지의 근원(예를 들어, 장치 식별자 또는 GPS 위치)와 같은 데이터 특성들에 기반하여 각 이미지 파일에 데이터 특성 식별자(30)를 할당할 수 있다. 이러한 데이터 특성들은 통상적인 다중 스트리밍에 의해 사용되는 메타 데이터와 같이 구체적인 응용 또는 파일 시스템과 연관될 필요는 없다.
도 5는 상이한 수명들 및 상이한 특성들을 갖는 데이터를 저장하는 데이터 베이스 응용에 의해 수행되는 스토리지 동작들에 대한 작업 흐름 모니터 인터페이스(26)의 동작의 예를 보여주는 블록도이다. 예시적으로, 데이터 베이스는 고속 저장을 위한 임베디드형 끊김없는 키-값 저장인 RocksDB일 수 있다. RocksDB는 다수의 CPU 코어들의 장점을 이용하고 그리고 SSD와 같이 입출력 부하에 대해 고속 저장의 효율적인 사용에 최적화된 LevelDB의 갈래일 수 있다. 동작 시에, 키-값 쌍들의 소팅(sorting)된 세트를 갖는 데이터 파일(예를 들어, SST 파일)이 제1 레벨 파일로 순차적으로 기입된다. 쓰기 동작 시에, 파일들을 수정하는 대신에, 일정 시간 동안 변경들이 메모리에서 수집된다. 이후에, 변경들이 제2 레벨 파일로 기입된다. 더 많은 변경들에 대해, 또 다른 레벨이 추가될 수 있다.
작업 흐름 모니터 인터페이스(26)가 RocksDB가 시작함을 검출한 때에, 작업 흐름 모니터 인터페이스(26)는 RocksDB 응용과 연관된 RocksDB 작업 흐름(27')을 획득 및 이용하여 차별적인 데이터 특성 식별자들을 RocksDB에 의해 취급되는 데이터에 할당할 수 있다. RocksDB 작업 흐름(27')은 LSM 트리 작업 흐름과 같은 트리 작업 흐름을 포함할 수 있다. RocksDB는 LSM 트리 작업 흐름의 구현의 일 예이며, 다른 예들은 BigTable, Apache HBase, LevelDB, WiredTiger, Apache Cassandra, Riak, SQLite4 및 Cockroachdb를 포함할 수 있다.
데이터 베이스(500) 및 작업 흐름 모니터 인터페이스(26) 및 RocksDB 작업 흐름(27')이 호스트 시스템의 메모리(18) 내에 도시되어 있다. 데이터 베이스(500)는 메모리(18) 내에 저장된 메모리 테이블(502, Memtable)을 사용할 수 있다. SSD (12) 내에서, 데이터 베이스(500)는 이전 쓰기 로그(504) 및 상이한 레벨들(예를 들어, 레벨 0, 레벨 1, 레벨 m)에 저장되는 다양한 SST 파일들(506)(예를 들어, SST 파일 1, SST 파일 2, SST 파일 n)을 사용할 수 있다.
데이터 베이스(500)가 쓰기 동작(510)을 수행할 때, 데이터 베이스(500)는 데이터를 메모리 테이블(502)에 구조체로 저장할 수 있다. 또한, 데이터 베이스(500)는 쓰기를 이전 쓰기 로그(504)에 추가할 수 있다. 이전 쓰기 로그(504)는 모든 쓰기를 수신하며, 전원이 차단된 후에도 영구적으로 보존될 수 있다. 작업 흐름 모니터 인터페이스(26)는 쓰기 동작(510)을 모니터하고, RocksDB 작업 흐름(27')에 기반하여 데이터 특성 ID#1을 로그 파일들에 할당할 수 있다.
메모리 테이블(502)은 메모리 테이블(502)의 내용물이 설정(또는 변경) 가능한 문턱에 도달할 때까지 쓰기들을 저장한다. 문턱에 도달한 때에, 플러시 동작(512)이 수행되어 쓰기들이 SSD (12) 내의 SST 파일(506)에 기입된다. 이전 쓰기 로그(504) 내의 데이터는 메모리 테이블(502) 내의 대응하는 데이터가 SST 파일(506)로 플러시된 후에 제거될 수 있다. SST 파일(506)은 통상적으로 메모리 테이블(502)이 플러시된 후에는 다시 기입되지 않는다. 작업 흐름 모니터 인터페이스(26)는 플러시 동작(512)을 모니터하고, RocksDB 작업 흐름(27')에 기반하여 데이터 특성 ID#2를 SST 파일(506)의 레벨0에 할당할 수 있다.
삽입 또는 갱신이 발생함에 따라, 행들을 겹쳐쓰는 대신에, 데이터 베이스(500)는 삽입된 또는 갱신된 데이터의 새로운 타임스탬프가 찍힌 버젼을 또 다른 SST 파일(506)에 기입할 수 있다. 데이터 베이스(500)는 컴팩션을 이용하여 SSD (12)의 SST 파일들(506)의 축적을 관리할 수 있다. 레벨 0에 저장된 데이터가 데이터 문턱에 도달하면, 데이터 베이스(500)는 갱신 동안에 생성되는 삭제된 데이터, 열들 및 행들을 제거하고 그리고 SST 파일들의 레벨 0의 유효한 데이터를 레벨 1에 저장되는 새로운 SST 파일들로 통합함으로써 데이터 베이스 파일을 압축하도록 컴팩션 동작(514)을 수행할 수 있다. 데이터 베이스(500)는 예전의 다중 SST 파일들 대신에 새로운 통합된 SST 파일들을 사용하며, 따라서 읽기 요청들이 컴팩션 이전보다 더 효율적으로 처리된다. 예전의 SST 파일들은 해당 파일들을 사용하는 진행 중인 읽기들이 종료되자마자 삭제된다. 작업 흐름 모니터 인터페이스(26)는 컴팩션 동작(514)을 모니터하고, RocksDB 작업 흐름(27')에 기반하여 레벨 1 SST 파일들(506)에 데이터 특성 ID#3을 할당할 수 있다.
레벨 1에 저장된 데이터가 데이터 문턱에 도달하면, 데이터 베이스(500)는 사용되지 않는 데이터를 제거하고 레벨 1 SST 파일들의 유효 데이터를 레벨 2에 저장되는 새로운 SST 파일들로 통합하는 컴팩션 동작(516)을 수행할 수 있다. 작업 흐름 모니터 인터페이스(26)는 컴팩션 동작(516)을 모니터하고, RocksDB 작업 흐름(27')에 기반하여 레벨 2 SST 파일들(506)에 데이터 특성 ID#4를 할당할 수 있다. 본 발명의 실시 예들에 따르면, 하나의 응용은 단일 타입의 파일에 대해 다중 스트림들을 가질 수 있다.
본 발명의 실시 예들에 따르면, 데이터 특성 식별자들은 예측된 수명 그룹들(이 예에서, SST 레벨들)에 기반하여 데이터에 할당되며, 해당 데이터는 예측된 수명들에 기반하여 SSD에 저장될 수 있다. 데이터가 언제 무효화 또는 삭제될 지 알려지지 않지만, 작업 흐름 모니터 인터페이스(26)는 동일한 데이터 특성 식별자들을 갖는 데이터가 동시 또는 거의 동시에 무효화될 것으로 간주한다.
도 6은 작업 흐름 모니터 인터페이스의 데이터 식별자 할당 방법들을 더 상세하게 보여주는 블록도이다. 도 1 및 도 3과 마찬가지로, 작업 흐름 모니터 인터페이스(26)는 호스트 시스템(10)의 운영 체제(20) 레벨에 제공되는 것으로 도시된다. 작업 흐름 모니터 인터페이스(26)는 응용들(300), 파일 시스템(21), 블록 계층 및 장치 드라이버들(23), 그리고 연결된 장치들(302)의 동작들을 모니터하고, 데이터 특성 식별자들(30)을 대응하는 작업 흐름(27')에 기반하여 데이터 아이템들에 할당할 수 있다. SSD (12)는 데이터 특성 식별자들(30)을 읽고, 동일한 데이터 특성 식별자들(30)을 갖는 데이터 아이템들이 동일한 블록에 저장되도록 대응하는 데이터 아이템들을 저장하는 데에 사용되는 SSD (12)의 블록들을 식별할 수 있다.
본 발명의 실시 예들에 따르면, 작업 흐름 모니터 인터페이스(26)는 배경으로 지속적으로 실행되어 응용들(300) 및 연결된 장치들(302)의 시작을 모니터할 수 있다. 예시적으로, 작업 흐름 모니터 인터페이스(26)는 SSD (12)에 대한 데이터 아이템 수정들의 데이터 베이스(미도시)를 유지할 수 있다. 작업 흐름 모니터 인터페이스(26)는 응용들 또는 장치에 의해 수행되는 파일 갱신 동작들을 모니터하고, 작업 흐름(27')에 따라 파일 갱신 동작들 각각에 데이터 특성 식별자(30)를 자동으로 할당할 수 있다.
작업 흐름 모니터 인터페이스(26)는 파일 시스템에서 시스템 호출 후크들(hooks)을 활용하는 구성 요소를 포함하며, 응용들(300), 운영 체제(20) 또는 연결된 장치(302)에 의해 파일들에 행해지는 파일 갱신 동작들(생성, 쓰기, 갱신, 삭제 등)을 모니터할 수 있다. 윈도우즈 및 리눅스와 같은 대부분의 운영 체제들은 시스템 프로그램 목적을 위한 파일 시스템 후크들을 제공한다. 작업 흐름 모니터 인터페이스(26)는 작업 흐름(27')에서 파일 갱신 동작(또는 일련의 갱신 동작들)을 참조하여 해당 동작에 할당된 미리 정해진 데이터 특성 식별자를 찾을 수 있다.
작업 흐름 모니터 인터페이스(26)는 미리 정해진 데이터 특성 식별자(30)를 갱신 동작에 할당할 수 있다. 예시적으로, 작업 흐름(27')은 파일의 타입 또는 데이터의 다른 특성에 따라, 파일 생성 또는 새로운 파일 쓰기 데이터 특성 식별자들(30)을 할당할 수 있다. 끝으로, 작업 흐름 모니터 인터페이스(26)는 실제 파일 쓰기를 기저의 파일 시스템(21)에 전달할 수 있다.
데이터 특성 식별자 할당의 예로서, 사용자가 사진 응용을 편집하여 "foo.jpg"라 명명된 JPEG 파일 타입의 사진 파일을 편집중이고, 그리고 사용자의 컴퓨터의 SSD (12)는 네 개의 데이터 특성 식별자들 또는 스트림 식별자들을 처리하도록 구성된 경우가 가정된다. 사용자가 사진을 SSD (12)에 저장할 때, 작업 흐름 모니터 인터페이스(26)는 사진 응용과 연관된 작업 흐름(27')에서 파일 저장 요청을 모니터 및 참조한다. 작업 흐름(27')은 네 가지 데이터 특성 식별자들 중 저장 요청에 할당될 데이터 특성 식별자(예를 들어, 1)를 식별할 수 있다.
작업 흐름 모니터 인터페이스(26)는 작업 흐름(27')에서 특정된 1의 데이터 특성 식별자를 할당한다. 데이터 특성 식별자는 파일 데이터와 함께 파일 시스템(21) 및 블록 계층(23)을 통해 SSD (12)로 전송되며, 1의 데이터 특성 식별자가 할당된 다른 데이터와 함께 블록에 저장된다.
다른 예로서, 작업 흐름 모니터 인터페이스(26) 및 작업 흐름 저장소(27')는 운영 체제의 블록 계층(23) 또는 SSD (12) 내부에 구현될 수 있다.
도 7은 데이터 식별자 할당 방법의 다른 예를 보여주는 블록도이다.데이터 특성 식별자들을 할당하는 별도의 작업 흐름 모니터 인터페이스(26, 도 6)를 제공하는 대신, 도 7의 실시 예는 알려진 작업 흐름들 및 데이터 배치 설정들을 저장하는 작업 흐름 저장소(27)가 응용들(300), 운영 체제(20)의 다양한 계층들(예를 들어, 파일 시스템(21), 블록 계층(25) 및 장치 드라이버(29) 및 연결된 장치(302)에 실장된 소프트웨어와 같은 소프트웨어 구성 요소를 실행하는 것을 직접적으로 평가 가능하게 할 수 있다. 작업 흐름 저장소(31)는 소프트웨어 구성 요소에 의해 수행되는 활동 또는 기능 동안에 불휘발성 메모리 장치에 기입되는 데이터 아이템들의 상이한 타입들에 미리 정의된 데이터 특성 식별자들을 연관시키는 하나 또는 그보다 많은 미리 정해진 작업 흐름들(33)을 저장할 수 있다.
다양한 소프트웨어 구성 요소들은 작업 흐름 저장소(31)에 직접 요청하여 어떠한 데이터 특성 식별자(30)를 사용할 지 획득할 수 있다. 따라서, 예를 들어, 소프트웨어 구성 요소는 작업 흐름 저장소(31)에 대해 자기 자신을 식별하고, 다양한 기능들을 위해 사용할 데이터 특성 식별자들을 획득하고, 그리고 데이터 특성 식별자들을 데이터 아이템들에 할당할 수 있다.
기존의 구성 요소의 동작들을 모니터하고 데이터 특성 식별자들을 자동으로 인가하는 작업 흐름 모니터의 실시 예와 반대로, 도 7의 실시 예는 작업 흐름 저장소(31)와의 요청 및 응답 메커니즘에 의존하며, 기존의 구성 요소들이 다중 스트리밍 능력을 부가할 수 있다. 작업 흐름 모니터의 실시 예는 기존의 소프트웨어 구성 요소들에서 매우 적은 재프로그램을 필요로 하지만, 작업 흐름 모니터 소프트웨어를 생성 및 실행하는 데에 추가적인 작업을 필요로 한다. 도 7의 실시 예는 기존의 소프트웨어 구성 요소에서 일부 재프로그램을 필요로 하지만, 작업 흐름 모니터를 생성, 실행 및 유지할 필요가 없다.
본 실시 예의 구체적인 예에서, 소프트웨어 구성 요소는 작업 흐름 저장소(31)에 요청하여 소프트웨어 구성 요소와 연관된 미리 정해진 작업 흐름(33)을 찾는다. 예시적으로, 요청은 소프트웨어 구성 요소의 식별자를 포함할 수 있다. 작업 흐름 저장소(31)로부터의 응답은 소프트웨어 구성 요소에 할당된 작업 흐름(33)의 정체(identity)를 포함할 수 있다.
동작 중에, 소프트웨어 구성 요소는 하나 또는 그보다 많은 요청들을 식별된 작업 흐름(33)으로 전송하여 하나 또는 그보다 많은 데이터 특성 식별자들을 획득하고 소프트웨어 구성 요소에 의해 사용되는 데이터 아이템들에 연관시킬 수 있다. 예시적으로, 요청은 소프트웨어 구성 요소에 의해 수행되는 현재 동작 및 수행되는 현재 동작의 하나 또는 그보다 많은 특성들(예를 들어, 데이터 타입)을 포함할 수 있다. 예시적으로, 소프트웨어 구성 요소는 소프트웨어 구성 요소의 식별자(예를 들어, 이름 또는 식별자 형태)를 이용하여 작업 흐름 저장소(31)에 소프트웨어 구성 요소의 식별을 요청하고, 다음으로 소프트웨어 구성 요소와 연관된 데이터 특성 식별자들을 식별된 작업 흐름(33)에 요청할 수 있다. 다른 예로서, 소프트웨어 구성 요소는 소프트웨어 구성 요소의 정체(또는 식별자) 및 데이터 특성 식별자들의 요청을 포함하는 단일 요청을 할 수 있다.
응용으로서 이름 또는 식별자를 사용하여 작업 흐름 저장소(31)에 요청하기 보다는, 소프트웨어 구성 요소가 운영 체제를 포함하는 예에서 운영 체제의 각 레벨은 하나 또는 그보다 많은 데이터 특성 식별자들을 획득하기 위하여 대응하는 운영 체제 레벨과 연관된 작업 흐름 저장소(31)로의 입력을 제공할 수 있다. 예를 들어, 파일 시스템 레벨에서, 운영 체제는 데이터 특성 식별자들을 요청할 때에 파일 타입, 사이트 등을 이용할 수 있다. 블록 레벨에서, 운영 체제는 LBA 범위 등을 이용할 수 있다. 예시적으로, 운영 체제는 부착된 장치들로부터의 장치 식별자들을 이용하여 작업 흐름 저장소(31)로부터 데이터 특성 식별자들을 획득할 수 있다.
소프트웨어 구성 요소로부터의 요청에 응답하여, 작업 흐름(33)은 해당 동작 및 데이터 아이템의 타입에 대해 작업 흐름(33)에서 특정된 하나 또는 그보다 많은 데이터 특성 식별자들을 소프트웨어 구성 요소에 반환할 수 있다.
작업 흐름(33)으로부터 데이터 특성 식별자들을 수신함에 따라, 소프트웨어 구성 요소는 데이터 특성 식별자를 소프트웨어 구성 요소에 의해 사용되는 데이터 아이템들에 자동으로 할당하고, 데이터 아이템들 및 할당된 데이터 특성 식별자들을 불휘발성 메모리 장치(예를 들어, SSD (12))에 저장을 위해 전송할 수 있다.
SSD (12)는 데이터 특성 식별자들(30)을 읽고, 동일한 데이터 특성 식별자들(30)을 가진 데이터 아이템들이 동일 블록에 저장되도록, 대응하는 데이터 아이템들을 저장하는 데에 사용될 SSD (12)의 블록을 식별할 수 있다.
데이터 특성 식별자 할당의 예로서, 사용자가 사진 응용을 편집하여 "foo.jpg"라 명명된 JPEG 파일 타입의 사진 파일을 편집중이고, 그리고 사용자의 컴퓨터의 SSD (12)는 네 개의 데이터 특성 식별자들 또는 스트림 식별자들을 처리하도록 구성된 경우가 가정된다. 사용자가 사진을 SSD (12)에 저장할 때, 사진 응용은 파일 저장 동작에 할당될 데이터 특성 식별자를 위해 사진 응용과 연관된 작업 흐름(33)에 요청을 전달할 수 있다. 작업 흐름(33)은 네 가지 데이터 특성 식별자들 저장 요청에 할당될 데이터 특성 식별자(예를 들어, 1)를 특정할 수 있다.
사진 응용은 작업 흐름(33)에서 특정된 1의 데이터 특성 식별자를 할당한다. 데이터 특성 식별자는 파일 데이터와 함께 파일 시스템(21) 및 블록 계층(23)을 통해 SSD (12)로 전송되며, 1의 데이터 특성 식별자가 할당된 다른 데이터를 저장하는 블록에 저장된다.
다른 예로서, 작업 흐름 저장소(31)는 데이터 베이스 응용으로 구현될 수 있다.
예시적으로, 작업 흐름 모니터 인터페이스(26)는 소프트웨어 구성 요소로 구현될 수 있다. 다른 예로서, 작업 흐름 모니터 인터페이스(26)는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다. 작업 흐름 모니터 인터페이스(26)가 단일 구성 요소로 도시되어 있지만, 작업 흐름 모니터 인터페이스(26)의 기능은 더 많은 수의 모듈들 또는 구성 요소들을 이용하여 구현될 수 있다.
본 발명의 실시 예들에 따른 작업 흐름 모니터 인터페이스(26)는 클라이언트로부터 기업까지, 단일 스탠드얼론 기계(데스크톱, 랩톱, 워크스테이션, 서버 등)의 디스크, 스토리지 어레이, 소프트웨어 정의 스토리지(SDS), 응용 특정 스토리지, 가상 기계(VM), 가상 데스크톱 인프라스트럭쳐(VDI), 콘텐츠 분산 네트워크(CDN) 등과 같은 폭넓은 저장 시장에 적용될 수 있다.
예시적으로, SSD (12)의 NVM 어레이(24)는 복수의 플래시 메모리들과 같은 복수의 불휘발성 메모리 칩들로 형성될 수 있다. 다른 예로서, NVM 어레이(24)는 플래시 메모리 칩들 대신에 상이한 타입의 불휘발성 메모리 칩들(예를 들어, PRAM, FRAM, MRAM 등)로 형성될 수 있다. 다른 예로서, NVM 어레이(24)는 DRAM 또는 SRAM과 같은 휘발성 메모리들로 형성될 수 있으며, 둘 또는 그보다 많은 타입의 메모리들이 혼합된 하이브리드 타입을 가질 수 있다.
스토리지 장치의 데이터 특성 기반 데이터 배치를 위한 방법들 및 시스템들, 그리고 컴퓨터 시스템이 데이터 배치 방법을 활용할 수 있게 하는 작업 흐름 모니터 인터페이스가 설명되었다. 본 발명은 도시된 실시 예들에 따라 설명되었으며, 실시 예들에 다양한 변경들이 가능하고, 이러한 변경은 본 발명의 기술적 사상의 범위에 속한다. 예를 들어, 예시적인 실시 예들은 하드웨어, 소프트웨어, 프로그램 명령들을 저장하는 컴퓨터로 독출 가능한 매체 또는 이들의 조합으로 구현될 수 있다. 본 발명에 따라 기입된 소프트웨어는 메모리, 하드 디스크, 또는 CD/DVD-ROM과 같은 컴퓨터로 독출 가능한 매체의 형태로 저장될 수 있으며, 프로세서에 의해 실행될 수 있다. 따라서, 다양한 변경들이 이 분야에 통상적인 기술을 가진 자에 의해 첨부된 청구 범위의 기술적 사상으로부터 괴리되지 않은 범위에서 수행될 수 있다.
10; 호스트 시스템
12; 솔리드 스테이트 드라이브
14; 채널
16; 프로세서
18; 메모리
20; 운영체제
21; 파일 시스템
22; 스토리지 컨트롤러
24; 불휘발성 메모리 어레이
26; 작업 흐름 모니터 인터페이스
27; 작업 흐름 저장소
28; 데이터 아이템
29' 데이터 특성 식별자
12; 솔리드 스테이트 드라이브
14; 채널
16; 프로세서
18; 메모리
20; 운영체제
21; 파일 시스템
22; 스토리지 컨트롤러
24; 불휘발성 메모리 어레이
26; 작업 흐름 모니터 인터페이스
27; 작업 흐름 저장소
28; 데이터 아이템
29' 데이터 특성 식별자
Claims (20)
- 컴퓨터 장치가 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용하게 하는 인터페이스를 제공하는 방법에 있어서:
실행 중인 응용 및 상기 컴퓨터 장치에 연결된 하드웨어 장치 중 적어도 하나를 검출하는 소프트웨어 구성 요소를 상기 컴퓨터 장치에서 실행하는 단계;
상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나를 검출하는 것에 응답하여, 상기 소프트웨어 구성 요소가 작업 흐름 저장소를 검색하여 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나와 연관된 미리 정해진 작업 흐름을 찾는 단계;
상기 소프트웨어 구성 요소가 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 단계; 그리고
데이터 아이템들 및 할당된 데이터 특성 식별자들이 채널을 통해 상기 불휘발성 메모리 장치에 전송되어 저장되도록 상기 실행 중인 응용 또는 상기 하드웨어 장치에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하도록 상기 미리 정해진 작업 흐름을 이용하는 단계를 포함하고,
상기 미리 정해진 작업 흐름은 미리 정해진 데이터 특성 식별자들을 상기 실행 중인 응용 또는 상기 하드웨어 장치에 의해 상기 불휘발성 메모리에 기입되는 상기 데이터 아이템들의 상이한 타입들과 연관시키고,
상기 불휘발성 메모리 장치는 상기 데이터 특성 식별자들을 읽고, 그리고 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 데이터 아이템을 저장할 상기 불휘발성 메모리 장치의 블록을 식별하는 방법. - 제1 항에 있어서,
상기 하드웨어 장치는 카메라, 마이크, 온도계, GPS, 시계, 센서, 스위치, 라우터, RAID 시스템, 또는 호스트 버스 어댑터(HBA) 시스템 중 적어도 하나를 포함하는 방법. - 제1 항에 있어서,
상기 실행 중인 응용 및 하드웨어 장치 중 적어도 하나를 검출하는 것은 새로운 데이터 배치 클라이언트를 검출하는 것을 포함하고, 상기 소프트웨어 구성 요소는 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나가 해당 기능을 갖도록 설계되지 않았더라도 데이터 특성 기반 데이터 배치를 제공하는 방법. - 제1 항에 있어서,
상기 소프트웨어 구성 요소는 상기 컴퓨터 장치가 상기 불휘발성 메모리 장치의 데이터 특성 기반 데이터 배치를 활용하게 하는 작업 흐름 모니터 인터페이스를 포함하는 방법. - 제4 항에 있어서,
상기 작업 흐름 모니터 인터페이스가 상기 작업 흐름 저장소에 대한 새로운 갱신 작업 흐름들을 수신하여 새로운 응용들 및 하드웨어 장치들을 수용하는 단계를 더 포함하는 방법. - 제5 항에 있어서,
상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 것은, 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나에 의해 수행되는 하나 또는 그보다 많은 현재 프로세스들 또는 단계들을 평가하고 그리고 상기 현재 프로세스들 또는 단계들을 상기 미리 정해진 작업 흐름 내의 유사한 일련의 프로세스들 또는 단계들과 비교하는 것에 의해 수행되는 방법. - 불휘발성 메모리 장치; 그리고
상기 불휘발성 메모리 장치에 연결된 컴퓨터 장치를 포함하고,
상기 컴퓨터 장치는 상기 컴퓨터 장치가 상기 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용하게 하는 인터페이스로 기능하는 소프트웨어 구성 요소를 실행하고,
상기 소프트웨어 구성 요소는,
실행 중인 응용 및 상기 컴퓨터 장치에 연결된 하드웨어 장치 중 적어도 하나를 검출하는 단계;
상기 실행 중인 응용 및 상기 하드웨어 장치 중 하나를 검출하는 것에 응답하여, 작업 흐름 저장소를 검색하여 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나와 연관된 미리 정해진 작업 흐름을 찾는 단계;
상기 소프트웨어 구성 요소가 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 단계; 그리고
데이터 아이템들 및 할당된 데이터 특성 식별자들이 채널을 통해 상기 불휘발성 메모리 장치에 전송되어 저장되도록 상기 응용 또는 상기 하드웨어 장치에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하도록 상기 미리 정해진 작업 흐름을 이용하는 단계를 수행하도록 구성되고,
상기 미리 정해진 작업 흐름은 상기 실행 중인 응용 또는 상기 하드웨어 장치에 의해 상기 불휘발성 메모리 장치에 기입되는 데이터 아이템들의 상이한 타입들에 미리 정해진 데이터 특성 식별자들을 연관하고,
상기 불휘발성 메모리 장치는 상기 데이터 특성 식별자들을 읽고, 그리고 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 데이터 아이템을 저장할 상기 불휘발성 메모리 장치의 블록을 식별하는 시스템. - 제7 항에 있어서,
상기 하드웨어 장치는 카메라, 마이크, 온도계, GPS, 시계, 센서, 스위치, 라우터, RAID 시스템, 또는 호스트 버스 어댑터(HBA) 시스템 중 적어도 하나를 포함하는 시스템. - 제7 항에 있어서,
상기 실행 중인 응용 및 하드웨어 장치 중 적어도 하나를 검출하는 것은 새로운 데이터 배치 클라이언트를 검출하는 것을 포함하고, 상기 소프트웨어 구성 요소는 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나가 해당 기능을 갖도록 설계되지 않았더라도 데이터 특성 기반 데이터 배치를 제공하는 시스템. - 제7 항에 있어서,
상기 소프트웨어 구성 요소는 상기 컴퓨터 장치가 상기 불휘발성 메모리 장치의 데이터 특성 기반 데이터 배치를 활용하게 하는 작업 흐름 모니터 인터페이스를 포함하는 시스템 - 제10 항에 있어서,
상기 작업 흐름 모니터 인터페이스가 상기 작업 흐름 저장소에 대한 새로운 갱신 작업 흐름들을 수신하여 새로운 응용들 및 하드웨어 장치들을 수용하는 단계를 더 포함하는 시스템. - 제11 항에 있어서,
상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 것은, 상기 실행 중인 응용 및 상기 하드웨어 장치 중 적어도 하나에 의해 수행되는 하나 또는 그보다 많은 현재 프로세스들 또는 단계들을 평가하고 그리고 상기 현재 프로세스들 또는 단계들을 상기 미리 정해진 작업 흐름 내의 유사한 일련의 프로세스들 또는 단계들과 비교하는 것에 의해 수행되는 시스템. - 메모리 어레이; 그리고
상기 메모리 어레이 및 채널에 연결되는 스토리지 컨트롤러를 포함하고,
상기 스토리지 컨트롤러는,
운영 체제 및 실행 중인 응용 중 적어도 하나로부터 상기 메모리 채널을 통해 저장될 제1 시리즈의 데이터 아이템들을 수신하고;
상기 제1 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들에 기반하여 상기 제1 시리즈의 데이터 아이템들과 연관되는 제1 데이터 특성 식별자를 포함하고,
하드웨어 장치 컨트롤러로부터 상기 메모리 채널을 통해 저장될 제2 시리즈의 데이터 아이템들을 수신하고;
상기 제2 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 특성들에 기반하여 상기 제2 시리즈의 데이터 아이템들과 연관되는 제2 데이터 특성 식별자를 포함하고,
상기 제1 및 제2 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 제1 및 제2 시리즈의 데이터 아이템들을 저장할 블록들을 식별하고; 그리고
상기 제1 및 제2 시리즈의 데이터 아이템들을 상기 식별된 블록들에 저장하도록 구성되는 불휘발성 메모리 장치. - 제13 항에 있어서,
상기 하드웨어 장치 컨트롤러는 카메라, 마이크, 온도계, GPS, 시계, 센서, 스위치, 라우터, RAID 시스템, 또는 호스트 버스 어댑터(HBA) 시스템 중 적어도 하나를 포함하는 불휘발성 메모리 장치. - 제13 항에 있어서,
상기 운영 체제 및 상기 실행 중인 응용 중 적어도 하나 또는 상기 하드웨어 장치 컨트롤러는 컴퓨터 장치의 일부인 불휘발성 메모리 장치. - 제13 항에 있어서,
상기 컴퓨터 장치는 상기 컴퓨터 장치가 상기 불휘발성 메모리 장치의 데이터 특성 기반 데이터 배치를 활용하게 하는 작업 흐름 모니터 인터페이스를 포함하는 불휘발성 메모리 장치. - 제16 항에 있어서,
상기 작업 흐름 모니터 인터페이스는 상기 컴퓨터 장치에서 운영 체제 레벨에서 실행되고,
상기 작업 흐름 모니터 인터페이스는,
상기 실행 중인 응용 및 상기 컴퓨터 장치에 연결된 상기 하드웨어 장치 제어기 중 적어도 하나를 검출하는 단계;
상기 실행 중인 응용 및 상기 하드웨어 장치 컨트롤러 중 적어도 하나를 검출하는 것에 응답하여, 작업 흐름 저장소를 검색하여 상기 실행 중인 응용 및 상기 하드웨어 장치 컨트롤러 중 적어도 하나와 연관된 미리 정해진 작업 흐름을 찾는 단계;
상기 실행 중인 응용 및 상기 하드웨어 장치 컨트롤러 중 적어도 하나의 활동을 상기 미리 정해진 작업 흐름과 비교하는 단계; 그리고
데이터 아이템들 및 할당된 데이터 특성 식별자들이 채널을 통해 상기 불휘발성 메모리 장치에 전송되어 저장되도록 상기 실행 중인 응용 또는 상기 하드웨어 장치 컨트롤러에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하도록 상기 미리 정해진 작업 흐름을 이용하는 단계를 수행하도록 구성되고,
상기 미리 정해진 작업 흐름은 미리 정해진 데이터 특성 식별자들을 상기 실행 중인 응용 또는 상기 하드웨어 장치 컨트롤러에 의해 상기 불휘발성 메모리에 기입되는 상기 데이터 아이템들의 상이한 타입들과 연관하는 불휘발성 메모리 장치. - 불휘발성 메모리 장치의 스토리지 컨트롤러에 의해 수행되는 상기 불휘발성 메모리 장치 내부의 데이터 특성 기반 데이터 배치를 위한 방법에 있어서:
운영 체제 및 실행 중인 응용 중 적어도 하나로부터 메모리 채널을 통해 저장될 제1 시리즈의 데이터 아이템들을 수신하는 단계;
상기 제1 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 아이템들에 기반하여 연관되는 제1 데이터 특성 식별자를 포함하고,
하드웨어 장치 컨트롤러로부터 상기 메모리 채널을 통해 저장될 제2 시리즈의 데이터 아이템들을 수신하는 단계;
상기 제2 시리즈의 데이터 아이템들 각각은 데이터 유사도를 가리키는 하나 또는 그보다 많은 데이터 아이템들에 기반하여 연관되는 제2 데이터 특성 식별자를 포함하고,
상기 제1 및 제2 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자를 갖는 데이터 아이템들이 동일한 블록에 저장되도록 상기 제1 및 제2 시리즈의 데이터 아이템들을 저장할 상기 불휘발성 메모리 장치의 블록들을 식별하는 단계; 그리고
상기 제1 및 제2 시리즈의 데이터 아이템들을 상기 식별된 블록들에 저장하는 단계를 포함하는 방법. - 제18 항에 있어서,
상기 하드웨어 장치 컨트롤러는 카메라, 마이크, 온도계, GPS, 시계, 센서, 스위치, 라우터, RAID 시스템, 또는 호스트 버스 어댑터(HBA) 시스템 중 적어도 하나를 포함하는 방법. - 컴퓨터 장치가 불휘발성 메모리 장치 내에서 데이터 특성 기반 데이터 배치를 활용하게 하는 인터페이스를 제공하는 방법에 있어서:
상기 컴퓨터 장치에서 소프트웨어 구성 요소를 실행하는 단계;
상기 소프트웨어 구성 요소가 상기 소프트웨어 구성 요소와 연관된 미리 정해진 작업 흐름을 찾도록 작업 흐름 저장소에 요청하는 단계;
상기 미리 정해진 작업 흐름은 상기 불휘발성 메모리 장치에 기입될 데이터 아이템들의 상이한 특성들에 미리 정해진 데이터 특성 식별자들을 연관하고,
상기 소프트웨어 구성 요소의 동작 동안에, 상기 소프트웨어 구성 요소에 의해 사용되는 데이터 아이템들과 연관되는 하나 또는 그보다 많은 데이터 특성 식별자들을 위해 상기 미리 정해진 작업 흐름에 하나 또는 그보다 많은 요청들을 전송하는 단계; 그리고
상기 소프트웨어 구성 요소가 상기 하나 또는 그보다 많은 데이터 특성 식별자들을 상기 미리 정해진 작업 흐름으로부터 수신하는 것에 응답하여, 상기 소프트웨어 구성 요소에 의해 사용되는 상기 데이터 아이템들에 상기 데이터 특성 식별자들을 자동으로 할당하고 그리고 상기 데이터 아이템들 및 상기 할당된 데이터 특성 식별자들을 저장을 위해 상기 불휘발성 메모리 장치에 전송하는 단계를 포함하고,
상기 불휘발성 메모리 장치는 상기 데이터 특성 식별자들을 읽고, 동일한 데이터 특성 식별자들을 갖는 데이터 아이템들이 동일한 블록에 저장되도록, 상기 데이터 아이템들이 저장될 상기 불휘발성 메모리 장치의 블록들을 식별하는 방법.
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/144,588 | 2016-05-02 | ||
US15/144,588 US11461010B2 (en) | 2015-07-13 | 2016-05-02 | Data property-based data placement in a nonvolatile memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170008152A true KR20170008152A (ko) | 2017-01-23 |
KR102541458B1 KR102541458B1 (ko) | 2023-06-08 |
Family
ID=57775001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160076697A KR102541458B1 (ko) | 2015-07-13 | 2016-06-20 | 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11461010B2 (ko) |
JP (1) | JP6971542B2 (ko) |
KR (1) | KR102541458B1 (ko) |
CN (1) | CN106354425B (ko) |
TW (1) | TWI710949B (ko) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190119080A (ko) * | 2017-02-09 | 2019-10-21 | 마이크론 테크놀로지, 인크. | 다중-스트림 저장 장치를 위한 스트림 선택 |
US10811103B2 (en) | 2017-11-30 | 2020-10-20 | SK Hynix Inc. | Memory controller, memory system, and method of operating memory system |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
KR20210058118A (ko) * | 2019-11-13 | 2021-05-24 | 인하대학교 산학협력단 | CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치 |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
KR20210135776A (ko) * | 2020-05-06 | 2021-11-16 | 인하대학교 산학협력단 | 엣지 컴퓨팅을 위해 데이터중복제거 기술이 적용된 casedb(키 벨류 저장장치) |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6403164B2 (ja) * | 2015-09-11 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
US9880780B2 (en) * | 2015-11-30 | 2018-01-30 | Samsung Electronics Co., Ltd. | Enhanced multi-stream operations |
US9898202B2 (en) | 2015-11-30 | 2018-02-20 | Samsung Electronics Co., Ltd. | Enhanced multi-streaming though statistical analysis |
US20170220295A1 (en) * | 2016-02-02 | 2017-08-03 | Intel Corporation | Technologies for reducing duplication of stored data |
CN106250064B (zh) * | 2016-08-19 | 2020-05-12 | 深圳大普微电子科技有限公司 | 固态硬盘控制装置和基于学习的固态硬盘数据存取方法 |
US10482111B2 (en) * | 2016-12-12 | 2019-11-19 | Vmware, Inc. | Custom property cluster definition for a graphic user interface |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10756953B1 (en) * | 2017-03-31 | 2020-08-25 | Veritas Technologies Llc | Method and system of seamlessly reconfiguring a data center after a failure |
US10387160B2 (en) | 2017-04-01 | 2019-08-20 | Intel Corporation | Shared local memory tiling mechanism |
KR102398181B1 (ko) | 2017-07-03 | 2022-05-17 | 삼성전자주식회사 | 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치 |
WO2019038859A1 (ja) * | 2017-08-23 | 2019-02-28 | 株式会社日立製作所 | 不揮発メモリデバイスを有するストレージシステム |
CN109947592B (zh) * | 2017-12-20 | 2022-11-18 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、装置以及相关设备 |
US10878859B2 (en) | 2017-12-20 | 2020-12-29 | Micron Technology, Inc. | Utilizing write stream attributes in storage write commands |
US11803325B2 (en) | 2018-03-27 | 2023-10-31 | Micron Technology, Inc. | Specifying media type in write commands |
US11182101B2 (en) * | 2018-12-03 | 2021-11-23 | Western Digital Technologies, Inc. | Storage system and method for stream management in a multi-host virtualized storage system |
KR20200123898A (ko) | 2019-04-22 | 2020-11-02 | 삼성전자주식회사 | 상이한 동작 모드들에서 동작하는 뱅크들을 포함하는 불휘발성 메모리 장치, 메모리 컨트롤러의 동작 방법, 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 저장 장치 |
US11194516B2 (en) | 2019-10-08 | 2021-12-07 | Micron Technology, Inc. | Media type selection |
CN113051241B (zh) * | 2019-12-27 | 2023-08-15 | 中国移动通信集团湖南有限公司 | 数据库持久化的方法、装置及设备 |
US11366602B2 (en) | 2020-06-23 | 2022-06-21 | Western Digital Technologies, Inc. | Data storage device with burn-after-read mode |
US11954345B2 (en) * | 2021-12-03 | 2024-04-09 | Samsung Electronics Co., Ltd. | Two-level indexing for key-value persistent storage device |
US11694722B1 (en) | 2022-02-15 | 2023-07-04 | Western Digital Technologies, Inc. | Data timestamp and read counter for magnetic recording devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010018004A (ja) * | 2008-07-14 | 2010-01-28 | Canon Inc | ワークフロー実行装置及びワークフロー実行方法 |
KR20140033099A (ko) * | 2011-06-09 | 2014-03-17 | 마이크로소프트 코포레이션 | 용도에 따른 플래시 기반 저장소 상의 데이터 배치의 관리 기법 |
Family Cites Families (203)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5381856A (en) | 1976-12-24 | 1978-07-19 | Toyoda Mach Works Ltd | Fluid bearing equipment |
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 |
US5930497A (en) | 1997-12-11 | 1999-07-27 | International Business Machines Corporation | Method and means for generation of realistic access patterns in storage subsystem benchmarking and other tests |
JP4197547B2 (ja) | 1998-05-13 | 2008-12-17 | 株式会社東芝 | データ記憶装置およびデータ管理方法 |
KR100296049B1 (ko) * | 1999-03-19 | 2001-07-28 | 윤종용 | 단문메시지서비스를 통한 디지털 휴대용 단말기의 사용자 정보 송수신장치 및 그 방법 |
US6591339B1 (en) | 1999-05-03 | 2003-07-08 | 3Ware, Inc. | Methods and systems for selecting block sizes for use with disk arrays |
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 |
EP1314290B1 (en) * | 2000-08-31 | 2006-09-27 | 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 |
US7240347B1 (en) | 2001-10-02 | 2007-07-03 | Juniper Networks, Inc. | Systems and methods for preserving the order of data |
US7173929B1 (en) | 2001-12-10 | 2007-02-06 | Incipient, Inc. | Fast path for performing data operations |
US7266843B2 (en) * | 2001-12-26 | 2007-09-04 | Mcafee, Inc. | Malware scanning to create clean storage locations |
US6996676B2 (en) | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
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 |
US7328317B2 (en) | 2004-10-21 | 2008-02-05 | International Business Machines Corporation | Memory controller and method for optimized read/modify/write performance |
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 | 送信装置、受信装置、送信方法、受信方法、送信プログラム、受信プログラムおよびコンピュータ読み取り可能な記録媒体 |
JP4815887B2 (ja) | 2005-06-17 | 2011-11-16 | 日産自動車株式会社 | 情報処理装置及び情報処理用表示装置 |
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 |
CN101322344B (zh) * | 2005-10-21 | 2013-01-02 | 尼尔逊媒介研究股份有限公司 | 用于计量便携式媒体播放器的方法和装置 |
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 | ジヤトコ株式会社 | フラッシュメモリを備えた制御装置 |
US7930508B2 (en) | 2006-03-07 | 2011-04-19 | Apple Inc. | File systems for data processing systems |
US7870128B2 (en) | 2006-07-28 | 2011-01-11 | Diskeeper Corporation | Assigning data for storage based on speed with which data may be retrieved |
US7774392B2 (en) | 2006-09-15 | 2010-08-10 | Sandisk Corporation | Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order |
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 | パイオニア株式会社 | ナビゲーションシステム |
US8560760B2 (en) | 2007-01-31 | 2013-10-15 | Microsoft Corporation | Extending flash drive lifespan |
JP4283315B2 (ja) * | 2007-02-01 | 2009-06-24 | シャープ株式会社 | 画像履歴保管方法、画像履歴保管システム及び画像履歴保管プログラム並びに記録媒体 |
US7962638B2 (en) | 2007-03-26 | 2011-06-14 | International Business Machines Corporation | Data stream filters and plug-ins for storage managers |
US20080250190A1 (en) * | 2007-04-03 | 2008-10-09 | Brian Johnson | Portable memory device operating system and method of using same |
US7853759B2 (en) * | 2007-04-23 | 2010-12-14 | Microsoft Corporation | Hints model for optimization of storage devices connected to host and write optimization schema for storage devices |
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 |
US8706950B2 (en) | 2008-03-01 | 2014-04-22 | Kabushiki Kaisha Toshiba | Memory system |
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 |
US8837287B2 (en) | 2009-04-14 | 2014-09-16 | Alcatel Lucent | Application-specific management of high-bandwidth transfers |
US20100288828A1 (en) * | 2009-05-14 | 2010-11-18 | Aisaku Pradhan | Accessible user interface for electronic devices |
KR20120068765A (ko) | 2009-07-17 | 2012-06-27 | 가부시끼가이샤 도시바 | 메모리 관리 장치 |
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 |
CN102576333B (zh) | 2009-10-05 | 2016-01-13 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
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 |
US8880784B2 (en) | 2010-01-19 | 2014-11-04 | 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 |
US9563397B1 (en) | 2010-05-05 | 2017-02-07 | Western Digital Technologies, Inc. | Disk drive using non-volatile cache when garbage collecting log structured writes |
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 | 射出発泡成形品 |
WO2012020544A1 (ja) | 2010-08-11 | 2012-02-16 | 日本電気株式会社 | データ処理システム、データ処理方法、およびプログラム |
US20120042134A1 (en) * | 2010-08-11 | 2012-02-16 | Hank Risan | Method and system for circumventing usage protection applicable to electronic media |
US20120047330A1 (en) | 2010-08-18 | 2012-02-23 | Nec Laboratories America, Inc. | I/o efficiency of persistent caches in a storage system |
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 | 半導体装置 |
US8341350B2 (en) | 2010-09-21 | 2012-12-25 | Lsi Corporation | Analyzing sub-LUN granularity for dynamic storage tiering |
WO2012051600A2 (en) * | 2010-10-15 | 2012-04-19 | Kyquang Son | File system-aware solid-state storage management system |
JP5679773B2 (ja) | 2010-11-08 | 2015-03-04 | シャープ株式会社 | 移動通信システム、移動局装置、基地局装置、mme、mbms gw及び移動通信方法 |
WO2012063813A1 (ja) | 2010-11-08 | 2012-05-18 | シャープ株式会社 | 移動通信システム、移動局装置、基地局装置、sgsn、ggsn、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 |
EP2643761A1 (en) | 2010-11-24 | 2013-10-02 | Sony Ericsson Mobile Communications AB | Dynamically configurable embedded flash memory for electronic devices |
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 |
CN103354926B (zh) | 2011-01-31 | 2016-04-06 | 三菱电机株式会社 | 存储器控制器 |
JP2012170751A (ja) | 2011-02-23 | 2012-09-10 | Olympus Medical Systems Corp | 画像表示装置、方法、及びプログラム、並びにカプセル型内視鏡システム |
US9176864B2 (en) | 2011-05-17 | 2015-11-03 | SanDisk Technologies, Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
US9015311B2 (en) | 2011-05-24 | 2015-04-21 | Citrix Systems, Inc. | Systems and methods for analyzing network metrics |
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 |
US20130013889A1 (en) | 2011-07-06 | 2013-01-10 | Jaikumar Devaraj | Memory management unit using stream identifiers |
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 | 情報処理装置、情報処理方法およびコンピュータプログラム |
US9223978B2 (en) * | 2011-10-28 | 2015-12-29 | Confer Technologies, 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 |
US9201804B1 (en) | 2012-02-06 | 2015-12-01 | Google Inc. | Dynamically adapting the configuration of a multi-queue cache based on access patterns |
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代行デーモンプログラム |
US8825724B2 (en) | 2012-03-29 | 2014-09-02 | Lsi Corporation | File system hinting |
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 |
US9003150B2 (en) | 2012-04-26 | 2015-04-07 | Hitachi, Ltd. | Tiered storage system configured to implement data relocation without degrading response performance and method |
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 |
WO2013171792A1 (en) | 2012-05-16 | 2013-11-21 | Hitachi, Ltd. | Storage control apparatus and storage control method |
US20130326169A1 (en) | 2012-05-31 | 2013-12-05 | Amir Shaharabany | Method and Storage Device for Detection of Streaming Data Based on Logged Read/Write Transactions |
US8856484B2 (en) | 2012-08-14 | 2014-10-07 | Infinidat Ltd. | Mass storage system and methods of controlling resources thereof |
US9244868B2 (en) | 2012-09-21 | 2016-01-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Leased lock in active-active high availability DAS systems |
CN103677654B (zh) | 2012-09-24 | 2018-03-23 | 联想(北京)有限公司 | 一种存储数据的方法及电子设备 |
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 |
TWI459202B (zh) | 2012-12-05 | 2014-11-01 | Phison Electronics Corp | 資料處理方法、記憶體控制器與記憶體儲存裝置 |
AU2013359762B2 (en) * | 2012-12-10 | 2016-02-18 | Viditeck Ag | Rules based data processing system and method |
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 | 삼성전자주식회사 | 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템 |
US9436634B2 (en) | 2013-03-14 | 2016-09-06 | Seagate Technology Llc | Enhanced queue management |
US9715445B2 (en) * | 2013-03-14 | 2017-07-25 | Sandisk Technologies Llc | File differentiation based on data block identification |
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
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 | 삼성전자 주식회사 | 저장 장치 내 할당 촉진을 위한 데이터 분석 방법 및 장치 |
US20140304469A1 (en) | 2013-04-05 | 2014-10-09 | Hewlett-Packard Development Company, L. P. | Data storage |
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株式会社 | 管理装置及びプログラム |
US9984089B2 (en) | 2013-06-28 | 2018-05-29 | Vmware, Inc. | Techniques for implementing hybrid flash/HDD-based virtual disk files |
US20160196076A1 (en) * | 2013-07-08 | 2016-07-07 | Wilus Institute Of Standards And Technology Inc. | Memory system and method for controlling same |
US20150026257A1 (en) * | 2013-07-16 | 2015-01-22 | Dropbox, Inc. | Music box |
JP5969130B2 (ja) | 2013-07-18 | 2016-08-17 | 株式会社日立製作所 | 情報処理装置 |
WO2015020811A1 (en) | 2013-08-09 | 2015-02-12 | Fusion-Io, Inc. | Persistent data structures |
KR20150023151A (ko) | 2013-08-23 | 2015-03-05 | 삼성전자주식회사 | 전자 장치 및 이의 어플리케이션 실행 방법 |
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
EP3036637A4 (en) * | 2013-09-24 | 2016-08-24 | Huawei Tech Co Ltd | METHOD AND SYSTEM FOR AUTOMATICALLY MANAGING DYNAMICALLY ASSIGNED MEMORY IN A COMPUTER UNIT |
WO2015048140A1 (en) | 2013-09-24 | 2015-04-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for storage collision management |
CN105593859B (zh) * | 2013-09-26 | 2019-07-12 | 西门子保健有限责任公司 | 用于管理和处理医学机构的数据的方法和系统 |
KR102203131B1 (ko) * | 2013-10-16 | 2021-01-14 | 삼성전자주식회사 | 파일 관리 방법 및 그 전자 장치 |
JP6038763B2 (ja) * | 2013-11-22 | 2016-12-07 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
US9344525B2 (en) | 2013-11-25 | 2016-05-17 | Violin Memory Inc. | Method and apparatus for data migration |
JP2015111334A (ja) | 2013-12-06 | 2015-06-18 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
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 |
CN103777905B (zh) | 2014-02-14 | 2017-04-12 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
KR101544309B1 (ko) | 2014-02-26 | 2015-08-12 | 한양대학교 산학협력단 | 스트림 기반의 비휘발성 메모리 제어 방법 및 장치 |
US9354872B2 (en) | 2014-04-24 | 2016-05-31 | Xitore, Inc. | Apparatus, system, and method for non-volatile data storage and retrieval |
US9378152B2 (en) | 2014-05-09 | 2016-06-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for I/O processing using out-of-band hinting to block driver or storage controller |
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 |
US9495102B2 (en) | 2014-07-31 | 2016-11-15 | Samsung Electronics Co., Ltd. | Input/output (I/O) interceptor that re-orders a plurality of write I/O into combined with I/O with intelligent flush control logic |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9619214B2 (en) * | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
US9274720B1 (en) | 2014-09-15 | 2016-03-01 | E8 Storage Systems Ltd. | Distributed RAID over shared multi-queued storage devices |
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 | 东南大学 | 基于认知与情绪状态多模态感知的脑机接口系统 |
US10515227B2 (en) * | 2014-10-23 | 2019-12-24 | Pageproof.Com Limited | Encrypted collaboration system and method |
US10198318B2 (en) | 2014-10-27 | 2019-02-05 | Hitachi, Ltd. | Storage apparatus having nonvolatile memory device, and nonvolatile memory device |
US9940242B2 (en) | 2014-11-17 | 2018-04-10 | International Business Machines Corporation | Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
CN104391659A (zh) * | 2014-12-03 | 2015-03-04 | 浪潮集团有限公司 | 一种基于磁盘的实现冷热数据自动分层存储技术 |
US9471229B2 (en) | 2014-12-15 | 2016-10-18 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Scaling performance for raid storage controllers by predictively caching data for host write requests |
US10409526B2 (en) | 2014-12-17 | 2019-09-10 | Violin Systems Llc | Adaptive garbage collection |
US9779021B2 (en) | 2014-12-19 | 2017-10-03 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
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 |
US9760281B2 (en) | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
US10013177B2 (en) | 2015-04-20 | 2018-07-03 | Hewlett Packard Enterprise Development Lp | Low write amplification in 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 |
US10025747B2 (en) | 2015-05-07 | 2018-07-17 | Samsung Electronics Co., Ltd. | I/O channel scrambling/ECC disassociated communication protocol |
US9851926B2 (en) | 2015-06-02 | 2017-12-26 | Quantum Corporation | Log structured block device for hard disk drive |
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 |
US10324832B2 (en) | 2016-05-25 | 2019-06-18 | Samsung Electronics Co., Ltd. | Address based multi-stream storage device access |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
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 |
US10275275B2 (en) | 2015-12-03 | 2019-04-30 | Nvidia Corporation | Managing copy operations in complex processor topologies |
US10289309B2 (en) | 2016-09-12 | 2019-05-14 | Toshiba Memory Corporation | Automatic detection of multiple streams |
-
2016
- 2016-05-02 US US15/144,588 patent/US11461010B2/en active Active
- 2016-06-03 TW TW105117504A patent/TWI710949B/zh active
- 2016-06-20 KR KR1020160076697A patent/KR102541458B1/ko active IP Right Grant
- 2016-07-11 JP JP2016136652A patent/JP6971542B2/ja active Active
- 2016-07-13 CN CN201610548879.2A patent/CN106354425B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010018004A (ja) * | 2008-07-14 | 2010-01-28 | Canon Inc | ワークフロー実行装置及びワークフロー実行方法 |
KR20140033099A (ko) * | 2011-06-09 | 2014-03-17 | 마이크로소프트 코포레이션 | 용도에 따른 플래시 기반 저장소 상의 데이터 배치의 관리 기법 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190119080A (ko) * | 2017-02-09 | 2019-10-21 | 마이크론 테크놀로지, 인크. | 다중-스트림 저장 장치를 위한 스트림 선택 |
US10811103B2 (en) | 2017-11-30 | 2020-10-20 | SK Hynix Inc. | Memory controller, memory system, and method of operating memory system |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
KR20210058118A (ko) * | 2019-11-13 | 2021-05-24 | 인하대학교 산학협력단 | CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치 |
KR20210135776A (ko) * | 2020-05-06 | 2021-11-16 | 인하대학교 산학협력단 | 엣지 컴퓨팅을 위해 데이터중복제거 기술이 적용된 casedb(키 벨류 저장장치) |
Also Published As
Publication number | Publication date |
---|---|
JP6971542B2 (ja) | 2021-11-24 |
KR102541458B1 (ko) | 2023-06-08 |
CN106354425A (zh) | 2017-01-25 |
US20170017411A1 (en) | 2017-01-19 |
JP2017021804A (ja) | 2017-01-26 |
CN106354425B (zh) | 2021-06-29 |
TWI710949B (zh) | 2020-11-21 |
TW201710881A (zh) | 2017-03-16 |
US11461010B2 (en) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102541458B1 (ko) | 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치 | |
US11989160B2 (en) | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device | |
US10374792B1 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
US9519575B2 (en) | Conditional iteration for a non-volatile device | |
CN107003935B (zh) | 用于优化数据库去重的装置、方法和计算机介质 | |
US9092321B2 (en) | System and method for performing efficient searches and queries in a storage node | |
US20220244869A1 (en) | File system storage allocation based on zones of a memory device | |
US9021189B2 (en) | System and method for performing efficient processing of data stored in a storage node | |
US11263149B2 (en) | Cache management of logical-physical translation metadata | |
EP3168737A2 (en) | Distributed multimode storage management | |
US20140351505A1 (en) | Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation | |
US20140351515A1 (en) | Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation | |
US10146684B2 (en) | Distributed data parallel method for reclaiming space | |
KR101579941B1 (ko) | 가상머신 i/o 관리 방법 및 장치 | |
US20130346714A1 (en) | Hardware-Based Accelerator For Managing Copy-On-Write | |
US9524236B1 (en) | Systems and methods for performing memory management based on data access properties | |
US11947419B2 (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
US10671307B2 (en) | Storage system and operating method thereof | |
US20230409530A1 (en) | Grouping data to conserve storage capacity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |