KR20170124444A - Smart i/o stream detection based on multiple attributes - Google Patents

Smart i/o stream detection based on multiple attributes Download PDF

Info

Publication number
KR20170124444A
KR20170124444A KR1020170040850A KR20170040850A KR20170124444A KR 20170124444 A KR20170124444 A KR 20170124444A KR 1020170040850 A KR1020170040850 A KR 1020170040850A KR 20170040850 A KR20170040850 A KR 20170040850A KR 20170124444 A KR20170124444 A KR 20170124444A
Authority
KR
South Korea
Prior art keywords
attributes
stream
block addresses
logical block
streams
Prior art date
Application number
KR1020170040850A
Other languages
Korean (ko)
Other versions
KR102179399B1 (en
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
Priority claimed from US15/144,588 external-priority patent/US11461010B2/en
Priority claimed from US15/344,422 external-priority patent/US10282324B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170124444A publication Critical patent/KR20170124444A/en
Application granted granted Critical
Publication of KR102179399B1 publication Critical patent/KR102179399B1/en

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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Abstract

A multi-streaming memory system includes a memory, and a processor coupled to the memory. The processor executing a software component identifies a plurality of attributes corresponding to each of a plurality of streams of data writes and associated with logic block addresses, evaluates a significance coefficient for each of the attributes corresponding to each of the streams, and assigns a stream ID to each of logical block addresses based on all the significance coefficients for the logical block addresses to cluster the two or more logical block addresses. The performance of solid state drives can be improved.

Description

다양한 속성들에 근거한 스마트 입/출력 스트림 검출{SMART I/O STREAM DETECTION BASED ON MULTIPLE ATTRIBUTES}[0001] SMART I / O STREAM DETECTION BASED ON MULTIPLE ATTRIBUTES [0002]

본 발명은 멀티-스트리밍 플래시 드라이브들에서 스트림 할당을 개선하는 방법들 및 매커니즘들에 관한 것이다.The present invention relates to methods and mechanisms for improving stream allocation in multi-streaming flash drives.

솔리드 스테이트 드라이브/솔리드 스테이트 디스크(solid-state drive/solid-state disk, SSD)는 집적 회로(IC) 어셈블리들을 메모리로서 사용하여 데이터를 지속적으로 저장하는 고체 상태 저장 장치이다. SSD 기술은 일반적으로 기존의 블록 입/출력(I/O) 하드 디스크 드라이브들 (HDDs)와 호환되는 전자 인터페이스들을 사용하므로 많은 일반적인 애플리케이션들에서 쉬운 교체를 제공한다.A solid-state drive / solid-state disk (SSD) is a solid-state storage device that uses integrated circuit (IC) assemblies as memory to store data continuously. SSD technology uses electronic interfaces that are generally compatible with existing block input / output (I / O) hard disk drives (HDDs), providing easy replacement in many common applications.

쓰기 증폭(write amplification)은 솔리드 스테이트 드라이브들(SSDs)에 사용되는 NAND 플래시 메모리와 같은 몇몇 형태의 비 휘발성 메모리에 대응하는 문제를 기술한다. 쓰기 증폭은 SSD에서 비 휘발성 메모리에 대해 맡겨진(committed) 쓰기들 횟수와 호스트 컴퓨팅 플랫폼으로부터 오는 쓰기들 횟수의 비율로 설명될 수 있다. 쓰기 증폭은 SSD에 랜덤 기입들(random writes)에 대한 문제를 일으킬 수 있다. 예를 들어, 높은 쓰기 증폭은 SSD에 대한 기입 성능을 감소시킬 수 있고, 비 휘발성 메모리 셀들의 마모를 증가시킬 수 있으며, 그에 따라 메모리 장치의 내구성을 저하시킨다.Write amplification describes a problem corresponding to some form of non-volatile memory such as NAND flash memory used in solid state drives (SSDs). Write amplification can be described as the ratio of the number of writes committed to the non-volatile memory in the SSD to the number of writes from the host computing platform. Write amplification can cause problems with random writes to the SSD. For example, high write amplification can reduce write performance for SSDs and increase wear of non-volatile memory cells, thereby degrading the durability of memory devices.

"멀티-스트림(multi-stream) SSD"로 불리는 개념은 상이한 속성들을 갖는 데이터를 개별적으로 저장하는 인터페이스들을 갖는 애플리케이션들 및 오퍼레이팅 시스템들을 제공한다. 이러한 개별 데이터 저장소들을 "스트림들(streams)"이라고 한다. 스트림들은 서로 다른 데이터 기입들이 언제 서로 연관되거나 비슷한 수명을 갖는지를 나타내는데 사용될 수 있다. 즉, 개별 데이터 쓰기들의 그룹은 집합 스트림의 일부일 수 있으며, 그리고 각 스트림은 오퍼레이팅 시스템 또는 대응하는 애플리케이션에 의해서 할당된 스트림 ID로 식별된다. 따라서, 유사한 특성들 또는 속성들을 갖는 상이한 데이터는 고유한 스트림 ID로 할당되어 그 스트림 ID에 대응하는 데이터가 SSD 내 동일한 블록에 기입될 수 있도록 한다.The concept of a "multi-stream SSD" provides applications and operating systems with interfaces that individually store data with different attributes. These separate data stores are referred to as "streams ". The streams may be used to indicate when different data writes are associated with each other or have a similar lifetime. That is, the group of individual data writes can be part of the aggregate stream, and each stream is identified by the stream ID assigned by the operating system or the corresponding application. Thus, different data having similar characteristics or attributes are assigned with unique stream IDs so that data corresponding to that stream ID can be written to the same block in the SSD.

즉, 멀티-스트리밍 플래시 드라이브들은 서로 관련있는 기입 동작들을 SSDs에 함께 배치함으로써 더 많은 유연성을 가능하게 하며, 이에 따라 쓰기 증폭을 감소 및 SSD들의 성능을 향상 모두를 시킨다. 예를 들어, 멀티-스트리밍 플래시 드라이브들에서 효율적인 스트림 할당은 쓰기 증폭을 감소시키고 SSD들의 수명과 내구성 모두를 향상시킬 수 있다.That is, multi-streaming flash drives allow for greater flexibility by placing interrelated write operations together in SSDs, thereby reducing both write amplification and improving the performance of SSDs. For example, efficient stream allocation in multi-streaming flash drives can reduce write amplification and improve both the life and durability of SSDs.

현재, 스트림 할당은 데이터 기입들을 수행하는 애플리케이션을 수정함으로써 애플리케이션 계층에서 일반적으로 발생하며, 이는 결과적으로 높은 유지 관리 오버헤드(overhead)로 인해 상이한 애플리케이션들의 다수의 인스턴스들(instances)을 갖는 시스템들에 적합하지 않을 수 있다. 또한 다수의 애플리케이션들이 백엔드(backend)에서 다수의 저장 장치들에 의해 지원되는 경우, 관련 오버헤드가 더 증가한다.Currently, stream allocation generally occurs at the application layer by modifying the applications that perform data writes, which results in high maintenance overheads in systems with multiple instances of different applications It may not be appropriate. Also, if multiple applications are supported by multiple storage devices in the backend, the associated overhead is further increased.

또한, 현재의 멀티-스트리밍 시스템들의 대부분에서, 자동 스트림 검출을 위해 단지 소수의 속성들(즉, 특정 엔티티(entity)의 액세스의 빈도 및 시간 지역성(temporal locality) 속성들)이 사용되므로, 스트림들을 검출하기 위한 분석 방법이 제한된다.Also, in most of the current multi-streaming systems, only a few attributes (i.e., the frequency and temporal locality attributes of the access of a particular entity) are used for automatic stream detection, The analytical methods to detect are limited.

따라서 본 발명은 멀티-스트리밍 플래시 드라이브들을 제공하며, 특히 쓰기 증폭을 감소시키고, 솔리드 스테이트 드라이브들(SSDs)의 성능을 향상시키는 것이다.Thus, the present invention provides multi-streaming flash drives, in particular to reduce write amplification and improve the performance of solid state drives (SSDs).

본 발명의 실시예에 따르면, 멀티-스트리밍 메모리 시스템은, 메모리, 및 상기 메모리와 연결되는 프로세서를 포함하고, 소프트웨어 컴포넌트를 실행하는 상기 프로세서는, 로직 블록 어드레스들과 각각 관련되고, 각각이 데이터 기입들의 복수의 스트림들 각각에 대응하는 다수의 속성들을 식별하고, 상기 스트림들 각각에 대한 상기 속성들 각각을 위한 중요도 계수를 평가하고, 그리고 상기 로직 블록 어드레스들 각각 및 상기 할당된 스트림에 대한 모든 중요도 계수들에 기초하여 상기 로직 블록 어드레스들 각각에 스트림 ID를 할당하여 2개 이상의 로직 블록 어드레스들을 클러스터링한다.According to an embodiment of the present invention, a multi-streaming memory system includes a memory and a processor coupled to the memory, the processor executing the software component is associated with each of the logic block addresses, Identifying a plurality of attributes corresponding to each of the plurality of streams of the plurality of streams, evaluating a significance coefficient for each of the attributes for each of the streams, And assigns a stream ID to each of the logic block addresses based on the coefficients to cluster the two or more logic block addresses.

상기 소프트웨어 컴포넌트는 1개 이상의 속성들에 가중 계수를 할당하는 것을 더 포함하고, 상기 소프트웨어 컴포넌트는 상기 할당된 가중 계수에 근거해서 다른 중요도 계수들보다 상기 다수의 속성들에 대응하는 상기 중요도 계수들에 우선권을 부여하여 상기 스트림 ID를 상기 로직 블록 어드레스들에 할당한다.Wherein the software component further comprises assigning a weighting factor to one or more of the attributes, wherein the software component is configured to assign a weighting factor to the importance coefficients corresponding to the plurality of attributes based on the assigned weighting factor And assigns the stream ID to the logical block addresses.

상기 소프트웨어 컴포넌트는 nXm 어드레스들을 포함하는 nXm 특징 매트릭스를 생성하여 상기 로직 블록 어드레스들 각각에 대한 상기 속성들 각각에 대한 상기 중요도 계수를 평가하며, 여기서 n은 상기 속성들의 전체 개수이고, m은 상기 로직 블록 어드레스들의 전체 개수이다.Wherein the software component generates an nXm feature matrix comprising nXm addresses to evaluate the significance factor for each of the attributes for each of the logic block addresses, where n is the total number of attributes, The total number of block addresses.

상기 특징 매트릭스의 어드레스들 각각은 상기 중요도 계수에 대응하고, 상기 로직 블록 어드레스들 중 하나에 대응하는 속성이 중요한 지를 나타내는 단일-비트 이진 값을 포함한다.Each of the addresses of the feature matrix corresponds to the significance coefficient and includes a single-bit binary value indicating whether the attribute corresponding to one of the logic block addresses is significant.

상기 소프트웨어 컴포넌트는 상기 속성에 대응하는 임계값이 충족되는 지의 여부에 근거해서 상기 단일-비트 이진 값의 값을 결정하는 것을 더 포함한다.The software component further comprises determining a value of the single-bit binary value based on whether a threshold corresponding to the attribute is satisfied.

상기 소프트웨어 컴포넌트는 상기 특징 매트릭스의 대응하는 어드레스들에서 일치하는 이진 값들을 갖는 상기 로직 블록 어드레스들 중 하나에 동일한 스트림 ID를 할당한다.The software component assigns the same stream ID to one of the logic block addresses having matching binary values at corresponding addresses of the feature matrix.

상기 소프트웨어 컴포넌트는, 다중 타임스탬프 윈도우들 각각 동안, 상기 스트림들 중 어느 스트림 그룹이 동시 데이터 기입 요청들 발생에 대응하는 지를 판별하여 상기 로직 블록 어드레스들의 각각에 대한 속성들 중 하나로서 일치성 속성에 대한 중요도를 평가한다.The software component determines, during each of the multiple timestamp windows, which stream group of the streams corresponds to the concurrent data write requests occurrence and determines, as one of the attributes for each of the logical block addresses, .

상기 소프트웨어 컴포넌트가 상기 일치성 속성에 대한 중요도 계수를 평가하는 것은, 상기 타임스탬프 윈도우들 각각에 대한 큐 내의 엘리먼트 내 상기 상기 스트림 그룹의 상기 스트림들 각각의 상기 로직 블록 어드레스들을 나타내고, 큐가 채워지는 경우, 각각의 엘리먼트를 다른 모든 엘리먼트들과 비교하고, 그리고 복수의 엘리먼트들 각각에서 각각 표현되는 상기 스트림 그룹의 상기 스트림들의 상기 로직 블록 어드레스들을 식별하는 것을 포함한다.Wherein the software component evaluating a significance coefficient for the conformance attribute indicates the logical block addresses of each of the streams in the stream group in an element in a queue for each of the timestamp windows, Comparing each element to all other elements, and identifying the logical block addresses of the streams of the stream group represented by each of the plurality of elements.

상기 소프트웨어 컴포넌트는 상기 로직 블록 어드레스 요청들 각각에 대한 상기 속성들 각각에 대한 상기 중요도 계수에 근거하여 다음 로직 블록 어드레스 요청들에 스트림 ID를 할당하기 위한 사전을 생성하는 것을 더 포함하고, 그리고 상기 메모리는 상기 사전을 저장한다.The software component further comprises generating a dictionary for assigning a stream ID to the next logical block address requests based on the importance coefficient for each of the attributes for each of the logical block address requests, Stores the dictionary.

본 발명의 다른 실시예에 따르면, 멀티-스트리밍 메모리 장치에서 데이터의 입/출력 스트림에 대응하는 로직 블록 어드레스에 각각 관련된 속성들을 식별하는 방법은, 상기 메모리 장치에 대응하는 입/출력 스트림을 검출하는 단계, 상기 검출 된 입/출력 스트림에 대응하는 상기 로직 블록 어드레스에 대응하는 복수의 속성들을 획득하는 단계, 상기 로직 블록 어드레스에 대한 속성들 각각의 중요도 계수를 나타내는 특징 매트릭스를 생성하는 단계, 및 상기 특징 매트릭스에 근거해서 수신된 데이터를 상이한 스트림들에 클러스터링하는 단계를 포함한다.According to another embodiment of the present invention, a method for identifying attributes associated with a respective logical block address corresponding to an input / output stream of data in a multi-streaming memory device comprises: Output stream; obtaining a plurality of attributes corresponding to the logic block address corresponding to the detected input / output stream; generating a feature matrix representing a significance coefficient of each of the attributes for the logic block address; And clustering the received data to different streams based on the feature matrix.

상기 방법은, 상기 수신된 데이터를 상기 상이한 스트림들에 클러스터링하는 양상들을 평가하기 위해 상기 특징 매트릭스에 근거해서 분석 모델을 생성하는 단계를 더 포함한다.The method further includes generating an analysis model based on the feature matrix to evaluate aspects of clustering the received data to the different streams.

상기 방법은, 각각의 속성의 중요도 레벨에 근거해서 획득된 속성들을 다르게 가중하여 분석 모델에 대한 상대 가중 계수를 도입하는 단계를 더 포함한다.The method further includes introducing a relative weighting factor for the analytical model by weighting the attributes obtained based on the importance level of each attribute differently.

상기 방법은, 룩업(lookup)을 수행함으로써 대응하는 스트림 ID를 그 다음 수신된 스트림에 할당하기 위해 상기 분석 모델에 기초하여 사전을 생성하는 단계를 더 포함한다.The method further includes generating a dictionary based on the analysis model to assign a corresponding stream ID to the next received stream by performing a lookup.

상이한 스트림들에 상기 수신된 데이터를 클러스터링하는 단계는 대응하는 스트림 ID를 상기 로직 블록 어드레스에 할당하는 단계를 포함한다. Clustering the received data in different streams includes assigning a corresponding stream ID to the logical block address.

상기 복수의 속성들은 빈도, 시간적 지역성, 순차성 또는 일치성을 포함한다.The plurality of attributes include frequency, temporal locality, sequentiality, or correspondence.

상기 특징 매트릭스의 각 어드레스는 상기 로직 블록 어드레스에 대응하는 속성에 대응하는 중요 계수를 나타내는 단일-비트를 포함한다.Each address of the feature matrix includes a single-bit that represents a significant coefficient corresponding to an attribute corresponding to the logical block address.

상기 수신된 데이터를 상이한 스트림들에 클러스터링하는 단계는 어느 로직 블록 어드레스들이 상기 수신된 데이터에 대응하는 지를 판별하는 단계를 포함한다.Clustering the received data into different streams includes determining which logic block addresses correspond to the received data.

상기 수신된 데이터를 상이한 스트림들에 클러스터링하는 단계는 복수의 타임스탬프 윈도우들 각각동안 어느 로직 블록 어드레스들이 동시에 액세스되는 지를 판별하는 단계를 포함한다.Clustering the received data into different streams includes determining which logical block addresses are accessed concurrently during each of a plurality of time stamp windows.

본 발명의 다른 실시예에 따르면, 일치성 속성의 중요 계수를 멀티-스트림 메모리 장치 내 데이터의 스트림에 할당하는 방법은, 로직 블록 어드레스들(LBAs)에 각각 대응하는 데이터의 스트림들을 수신하는 단계, 복수의 타임스탬프 윈도우들 각각에 액세스되는 고유한 로직 블록 어드레스들의 수가 임계값보다 작은 지를 판별하는 단계, 타임스탬프 윈도우들에 각각 대응하는 심볼들을 삽입하고, 상기 고유 로직 블록 어드레스들의 수가 상기 임계값보다 작지 않을 때 상기 로직 블록 어드레스들을 큐에 각각 표시하는 단계, 상기 삽입된 심볼들이 상기 큐에 가득 찼는지를 판별하는 단계, 및 상기 큐가 가득 찼을 때 상기 타임스탬프 윈도우들 중 일부들 각각 동안 어느 로직 블록 어드레스들이 동시에 액세스되는 지를 판별하는 단계를 포함한다.According to another embodiment of the present invention, a method of assigning significant coefficients of a matching property to a stream of data in a multi-stream memory device comprises receiving streams of data each corresponding to logical block addresses (LBAs) Determining whether the number of unique logic block addresses that are accessed in each of the plurality of time stamp windows is less than a threshold; inserting symbols each corresponding to timestamp windows; And when the queue is full, displaying each of the logic block addresses in a queue when it is not small, determining if the inserted symbols are full in the queue, and determining which logic block during each of the portions of the timestamp windows when the queue is full. And determining whether the addresses are accessed at the same time.

상기 방법은 상기 타임스탬프 윈도우들 중 일부들 각각 동안 동시에 액세스된 것으로 판별된 로직 블록 어드레스들에 대응하는 상기 스트림들로 동일한 스트림 ID를 할당하는 단계를 더 포함한다.The method further comprises assigning the same stream ID to the streams corresponding to logical block addresses determined to be simultaneously accessed during each of the portions of the timestamp windows.

이와 같은 본 발명에 의하면, 멀티-스트리밍 플래시 드라이브를 제공하되, 특히 쓰기 증폭을 감소시키고, 솔리드 스테이트 드라이브들(SSDs)의 성능을 향상시킬 수 있다.According to the present invention, it is possible to provide a multi-streaming flash drive, in particular, to reduce write amplification and improve the performance of solid state drives (SSDs).

본 발명의 특징은 상세한 설명, 청구 범위 및 첨부 도면들을 참조하여 이해되고 이해될 것이다.
도 1은 본 발명의 일 실시예에 따른 다중 속성들을 고려하기 위한 개선된 멀티-스레드 K-평균 클러스터링을 갖는 스마트 스트림 할당을 위한 분석 모델을 나타낸 블록도이다.
도 2는 본 발명의 일 실시예에 따른 신규한 일치성 속성을 설명하기 위한 샘플링 그래프이다.
도 3은 본 발명의 일 실시예에 따른 일치성 속성 할당 플로우차트이다.
The features of the present invention will be understood and understood with reference to the detailed description, claims and accompanying drawings.
1 is a block diagram illustrating an analytical model for smart stream allocation with improved multi-threaded K-mean clustering for considering multiple attributes in accordance with an embodiment of the present invention.
FIG. 2 is a sampling graph for explaining the novel correspondence property according to an embodiment of the present invention.
3 is a flowchart of conformity property assignment according to an embodiment of the present invention.

본 발명의 개념 및 그 실시 방법들의 특징은 이하의 실시예 및 첨부 도면들의 상세한 설명을 참조하면 보다 쉽게 이해될 수 있다. 이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세히 설명한다. 그러나, 본 발명은 다양한 형태로 구체화될 수 있으며, 여기에 도시된 실시예들에만 한정되는 것으로 해석되어서는 안 된다. 오히려, 이들 실시예들은 본 개시가 완전하고 완벽할 것이고, 당업자에게 본 발명의 양태 및 특징을 충분히 전달할 수 있도록 예로서 제공된다. 따라서, 본 발명의 양상들 및 특징들의 완전한 이해를 위해 당업자에게 불필요한 프로세스들, 요소들, 및 기술들은 설명되지 않을 수 있다. 또 다른 언급이 없는 한, 동일한 도면 부호들은 첨부된 도면 및 상세한 설명 전반에 걸쳐 동일한 구성 요소를 지칭하므로, 그에 대한 설명은 반복되지 않을 것이다. 도면에서, 요소, 층 및 영역의 상대적 크기는 명확성을 위해 과장될 수 있다.Features of the inventive concept and methods of implementation thereof may be more readily understood by reference to the following embodiments and the detailed description of the accompanying drawings. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention may be embodied in various forms and should not be construed as limited to the embodiments shown herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Thus, unnecessary processes, elements, and techniques may not be described to those skilled in the art for a complete understanding of aspects and features of the present invention. Unless otherwise stated, like reference numerals refer to like elements throughout the accompanying drawings and detailed description, and the description thereof will not be repeated. In the drawings, the relative sizes of elements, layers and regions may be exaggerated for clarity.

"제1", "제2", "제3" 등의 용어는 본 명세서에서 다양한 엘리먼트들, 구성 요소들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 사용될 수 있지만, 이들 엘리먼트들, 구성 요소들, 영역들, 층들 및/또는 섹션들은 이들 용어들에 의해 제한되어서는 안 된다. 이들 용어는 하나의 엘리먼트, 구성 요소, 영역, 층 및/또는 섹션을 다른 엘리먼트, 구성 요소, 영역, 층 및/또는 섹션과 구별하기 위해 사용된다. 따라서, 이하에서 설명되는 제1 엘리먼트, 구성 요소, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고 제2 엘리먼트, 구성 요소, 영역, 계층 또는 섹션으로 지칭 될 수 있다.The terms "first", "second", "third" and the like may be used herein to describe various elements, components, regions, layers and / or sections, Elements, regions, layers and / or sections should not be limited by these terms. These terms are used to distinguish one element, element, region, layer and / or section from another element, element, region, layer and / or section. Thus, a first element, component, region, layer or section described below may be referred to as a second element, component, region, layer or section without departing from the spirit and scope of the present invention.

"아래에", "아래쪽의", "하부", "낮은", "위에" "상부" 등과 같은 공간적으로 상대적인 용어들은 설명의 편의를 위해, 도면들에 도시된 방위들에 추가하여, 하나의 요소 또는 특징과 도면에 도시된 다른 요소(들) 또는 특징(들)과의 관계를 설명하기 위해 공간적으로 관련된 용어가 사용될 수 있다. 예를 들어, 도면의 장치가 뒤집힌다면, 다른 엘리먼트들 또는 특징들에 대해 "아래에" 또는 "아래쪽의" 또는 "하부"로 기술된 엘리먼트들은 다른 엘리먼트들 또는 특징들에 대해 "위"로 향하게 될 것이다. 따라서, "아래" 및 "아래쪽의"의 예시적인 용어들은 위와 아래의 방향 모두를 포함할 수 있다. 장치는 다른 방향으로 향할 수 있고 (예를 들어, 90도 또는 다른 방향들로 회전될 수 있음), 본 명세서에서 사용된 공간적으로 상대적인 기술 용어는 그에 따라 해석되어야 한다.Spatially relative terms such as "below "," lower ", "lower "," lower ", "above "," upper ", and the like are used for convenience of illustration, Spatially related terms may be used to describe the relationship between elements or features and other element (s) or feature (s) shown in the drawings. For example, if the device in the figures is inverted, elements described as "below" or "below" or "below" other elements or features may be "up" Will be. Thus, exemplary terms of "below" and "below" may include both upward and downward directions. The device may be oriented in another direction (e.g., rotated 90 degrees or in other directions) and the spatially relative terms used herein should be interpreted accordingly.

엘리먼트, 층, 영역 또는 구성 요소가 다른 엘리먼트, 층, 영역 또는 구성 요소의 "위에", "연결된" 또는 "결합된" 것으로 언급될 때, 이는 다른 구성 요소, 층, 영역 또는 구성 요소에 직접적으로 접속되거나, 연결되거나 또는 결합될 수 있으며, 하나 이상의 개재된 엘리먼트들, 층들, 영역들 또는 구성 요소들이 존재할 수 있다. 또한, 하나의 엘리먼트 또는 층이 2 개의 엘리먼트들 또는 층들의 "사이에" 있다고 언급될 때, 2 개의 엘리먼트들 또는 층들 사이의 유일한 구성 요소 또는 층, 또는 하나 이상의 개재하는 구성 요소들 또는 층들이 존재할 수도 있다.When an element, layer, region or element is referred to as being "above", "connected to", or "coupled to" another element, layer, region or component, Connected, coupled, or coupled, and one or more intervening elements, layers, regions, or components may be present. Also, when an element or layer is referred to as being "between" two elements or layers, there is only one element or layer, or more than one intervening element or layer, between the two elements or layers It is possible.

본 명세서에서 사용된 용어는 특정 실시예들 만을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서 사용된 단수 형태는 문맥 상 다르게 지시하지 않는 한 복수 형태를 포함하고자 한다. 본 명세서에서 사용되는 "포함하는" 및 "구비하는"이라는 용어는 명시된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 엘리먼트의 요소의 존재를 특정하는 것으로 하나 이상의 다른 특징들, 정수들, 단계들, 동작, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않음을 이해할 것이다. 본 명세서에 사용된 바와 같이, "및/또는"이라는 용어는 하나 이상의 관련 열거된 항목의 임의 및 모든 조합을 포함한다. "적어도 하나"와 같은 표현이 엘리먼트들의 목록 앞에 있을 때 엘리먼트들 전체 목록을 수정하고 목록의 개별 엘리먼트들을 수정하지 않는다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms are intended to include the plural forms unless the context clearly dictates otherwise. The terms " comprising "and" comprising "as used herein specify the presence of stated features, integers, steps, operations, elements and / or elements of an element, Steps, operations, elements, components, and / or groups of elements, integers, steps, operations, elements, components, and / or groups thereof. As used herein, the term "and / or" includes any and all combinations of one or more related listed items. When an expression such as "at least one" precedes the list of elements, it modifies the entire list of elements and does not modify individual elements of the list.

본 명세서에서 사용된 용어 "실질적으로", "약" 및 유사한 용어들은 근사의 용어로서 사용된 것이지 정도(degree)의 용어로서 사용된 것은 아니며, 측정된 값 또는 계산된 값의 고유한 편차를 설명하기 위한 것으로 당업자에 의해 인식된다. 또한, 본 발명의 실시예를 설명할 때 "할 수 있다"를 사용하는 것은 "본 발명의 하나 이상의 실시예들"을 의미한다. 본 명세서에서 사용된 바와 같이, 용어들 "사용하다" 및 "사용되는"은 용어들 "활용" 및 "활용되는"과 동의어로 각각 간주될 수 있다. 또한, "예시적인"이라는 용어는 견본 또는 실례(illustration)를 의미한다.As used herein, the terms " substantially ", "about ", and similar terms are used as approximations and not as terms of degree, As will be appreciated by those skilled in the art. Further, the use of "can" when describing an embodiment of the present invention means "one or more embodiments of the present invention ". As used herein, the terms " use "and" used "can each be considered synonymous with the terms" utilized "and" utilized. Also, the word "exemplary " means a sample or an illustration.

특정 실시예가 다르게 구현될 수 있는 경우, 특정한 처리 순서는 기술된 순서와 다르게 수행될 수 있다. 예를 들어, 2 개의 연속적으로 기술된 프로세스들은 실질적으로 동시에 수행되거나 설명된 순서와 반대 순서로 수행될 수 있다.If a particular embodiment can be implemented differently, the specific processing sequence may be performed differently than the sequence described. For example, two consecutively described processes may be performed substantially concurrently or in reverse order as described.

본 명세서에 기술된 본 발명의 실시예에 따른 전자 또는 전기 장치 및/또는 임의의 다른 관련 장치 또는 구성 요소는 임의의 적합한 하드웨어, 펌웨어(예를 들어, 주문형 집적 회로), 소프트웨어 또는 소프트웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이들 장치의 다양한 구성 요소들은 하나의 집적 회로(IC) 칩 상에 또는 개별 IC 칩 상에 형성될 수 있다. 또한, 이들 장치들의 다양한 구성 요소들은 플렉서블 인쇄 회로 필름, 테이프 캐리어 패키지(TCP), 인쇄 회로 기판(PCB) 또는 하나의 기판 상에 구현될 수 있다. 또한, 이들 장치들의 다양한 구성 요소들은 하나 이상의 프로세서들에서 실행되고, 하나 이상의 컴퓨팅 장치들에서 실행되며, 컴퓨터 프로그램 명령들을 실행하고 여기에 설명된 다양한 기능들을 수행하기 위해 다른 시스템 구성 요소들과 상호 작용하는 프로세스 또는 스레드(thread)일 수 있다. 컴퓨터 프로그램 명령들은 예를 들어, 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 사용하여 컴퓨팅 장치에 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령들은 또한 예를 들어, CD-ROM, 플래시 드라이브 등과 같은 다른 비일시적인 컴퓨터 판독 가능 매체에 저장될 수 있다. 또한, 당업자는 본 발명의 예시적인 실시예들의 사상 및 범위를 벗어남 없이, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨팅 장치에 결합되거나 통합될 수 있거나 또는 특정 컴퓨팅 장치의 기능이 하나 이상의 다른 컴퓨팅 장치들을 통해 분산될 수 있음을 잘 이해할 것이다.An electronic or electrical device and / or any other associated device or component in accordance with embodiments of the invention described herein may be implemented in any suitable hardware, firmware (e.g., application specific integrated circuit), software, . ≪ / RTI > For example, the various components of these devices may be formed on one integrated circuit (IC) chip or on a separate IC chip. In addition, the various components of these devices may be implemented on a flexible printed circuit film, a tape carrier package (TCP), a printed circuit board (PCB), or on a single substrate. The various components of these devices may also be implemented within one or more processors, running on one or more computing devices, interacting with other system components to execute computer program instructions and perform the various functions described herein Lt; RTI ID = 0.0 > and / or < / RTI > The computer program instructions are stored in a memory, which may be embodied in a computing device, for example, using standard memory devices such as random access memory (RAM). The computer program instructions may also be stored in other non-volatile computer readable media, such as, for example, CD-ROMs, flash drives, and the like. Those skilled in the art will also appreciate that the functions of the various computing devices may be combined or integrated into a single computing device without departing from the spirit and scope of the exemplary embodiments of the present invention or that the functionality of a particular computing device may be distributed It can be understood that

달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어들(기술 및 과학 용어들 포함)은 본 발명이 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사전에서 사용되는 정의와 같은 용어들은 관련 기술 및/또는 본 명세서와 관련하여 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 이상적이거나 지나치게 형식적인 의미로 해석되지 않아야 한다.Unless defined otherwise, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Also, terms such as definitions generally used in the dictionary should be interpreted as having a meaning consistent with its meaning in the related art and / or in this specification, and should not be construed as an ideal or overly formal meaning.

상술한 바와 같이, 멀티-스트리밍 플래시 드라이브들에서 효율적인 스트림 할당은 쓰기 증폭을 감소시킬 수 있고, SSD들의 수명, 내구성 및 성능을 향상시킬 수 있다. 데이터의 스트림들은 각기 다른 속성으로부터 얻은 이점을 효과적으로 종합함으로써, 그리고 대응하는 스트림 ID를 결정하는데 적합한 속성들을 식별(identifying) 및 획득(capturing)하는 것에 의해 더 효율적으로 할당될 수 있다.As described above, efficient stream allocation in multi-streaming flash drives can reduce write amplification and improve the lifetime, durability and performance of SSDs. Streams of data may be more efficiently allocated by effectively combining the advantages gained from different attributes and by identifying and capturing appropriate attributes to determine the corresponding stream ID.

또한 상술한 바와 같이, 기존의 많은 멀티-스트리밍 시스템들은 자동 스트림 검출의 목적을 위해 특정 엔티티(entity)의 매우 적은 속성들(예를 들어, 액세스들의 빈도 및 시간 지역성)을 고려한다. 현재의 자동 스트림 검출 알고리즘들에 의한 낮은 성능 향상들은 식별된 스트림들의 새로운 속성들이 SSD들의 다중 스트림들에 저장될 데이터의 기대 수명을 반영하는데 적합할 수 있음을 나타낸다.Also, as described above, many existing multi-streaming systems consider very few attributes (e.g., frequency and time locality of accesses) of a particular entity for purposes of automatic stream detection. The low performance improvements by current automatic stream detection algorithms indicate that the new attributes of the identified streams may be suitable to reflect the expected life of data to be stored in multiple streams of SSDs.

따라서, 본 발명의 실시예들은 애플리케이션 계층(예를 들어, 장치 드라이버, 파일 시스템 등) 하에서 I/O 요구들에 대한 스트림 ID 할당을 향상시키고, 그리고 I/O 요청 트래픽을 다중 스트림들로 패킷화하기 위해, 멀티-스트리밍 메모리 장치로 다중 속성들을 획득하고 포함시키는 새로운 모델을 제공한다. 종래의 기술들과 달리, 설명된 실시예들은 스트림 할당을 위해 고려되는 더 많은 수의 속성들을 제공하면서도 다양한 속성들을 결합할 수 있는 확장 가능한 방법을 제공하며, 따라서 설명된 실시예들은 멀티-스트리밍 SSD들의 장점들을 보다 잘 활용할 수 있다. 즉, 설명된 실시예들은 다중 속성들을 고려하면서 개선된 멀티-스레드(multi-threaded) K-평균 클러스터링(K-means clustering)을 갖는 스마트한 스트림 할당을 위한 분석 모델을 개발할 수 있다. 설명된 실시예들은 또한 I/O 트레이스(trace)로부터 다중 속성들을 획득하기 위한 낮은/최소 오버헤드 트레이닝 단계(phase) 기술의 설계를 가능하게 하고, 또한 "일치성(congruency)"으로 불리는 신규 속성을 제공하여, 효율적인 스트림 검출 및 식별에서 일치성의 효과를 설명할 수 있다.Accordingly, embodiments of the invention improve stream ID allocation for I / O requests under an application layer (e.g., device driver, file system, etc.), and packetize I / O request traffic into multiple streams Streaming < / RTI > memory device, a new model for acquiring and including multiple attributes is provided. Unlike the prior art, the described embodiments provide a scalable way to combine the various attributes while providing a greater number of attributes to be considered for stream allocation, and thus the described embodiments are applicable to multi-streaming SSD You can take advantage of the benefits. That is, the described embodiments may develop an analytical model for smart stream allocation with improved multi-threaded K-means clustering while considering multiple attributes. The described embodiments also allow for the design of low / minimum overhead training phase techniques for obtaining multiple attributes from I / O traces and also provide a new attribute called "congruency" To account for the effect of consistency in efficient stream detection and identification.

도 1과 관련하여 이하 설명되는 실시예들은, 빈도(frequency), 시간 지역성(temporal locality), 순차성(sequentiality) 및 신규 속성인 "일치성(congruency)"등과 같은 다중 속성들을 고려할 수 있는 개선된 자동화 스트림 할당을 제공할 수 있다. 일치성은 도 2 및 도 3을 참조하여 상세히 설명된다.The embodiments described below with reference to FIG. 1 provide improved automation that can take into account multiple attributes such as frequency, temporal locality, sequentiality and new attribute "congruency & Stream allocation may be provided. The correspondence will be described in detail with reference to FIG. 2 and FIG.

도 1은 본 발명의 일 실시예에 따라, 다중 속성들을 고려하기 위한 개선된 멀티-스레드 K-평균 클러스터링을 이용한 스마트 스트림 할당을 위한 분석 모델을 나타낸 블록도이다. 비록 본 실시예가 장치 드라이버 계층에 배치되는 것으로 설명되고, 비록 참조되는 관심 엔티티(entity)가 들어오는 데이터에 대응하는 로직 블록 어드레스(logical block address, LBA)이지만, 다른 실시예들에서, 관심 엔티티는 스트림 할당을 위해 설명된 실시예들의 배치 계층에 따라 다를 수 있다. 예를 들어, 관심 엔티티는 파일 시스템 계층에 배치되는 실시예들에 대해서는 파일로 대신 될 수 있다.1 is a block diagram illustrating an analytical model for smart stream allocation using improved multi-threaded K-means clustering for considering multiple attributes, in accordance with an embodiment of the present invention. Although the present embodiment is described as being located at the device driver layer and although the referenced entity is a logical block address (LBA) corresponding to the incoming data, in other embodiments, May vary depending on the placement hierarchy of the embodiments described for allocation. For example, the entity of interest may be replaced with a file for embodiments deployed at the file system layer.

도 1을 참조하면, 이 실시예의 분석 모델은 2 개의 단계들(phases)을 포함하는 것으로 설명되며, 2 개의 단계들은 트레이닝 단계(120) 및 테스트 단계(130)를 포함한다. 트레이닝 단계(120) 내 단계 S101에서, 애플리케이션 플랫폼은 SSD에 대한 검출된 I/O 스트림들에 대응하는 하나 이상의 적절한 속성들을 획득하기 위해 트레이닝 트레이스(trace, 추적)를 수행할 수 있다. 이러한 획득된 속성들은 예를 들어, 빈도, 시간 지역성, 순차성 및/또는 일치성을 포함할 수 있다. 단계 S101동안 트레이닝 트레이스로부터 획득된 이들 속성들은 이하에서 더 상세히 설명될 것이다.Referring to FIG. 1, the analytical model of this embodiment is described as comprising two phases, the two steps including a training step 120 and a testing step 130. In step S101 in the training phase 120, the application platform may perform a training trace to obtain one or more appropriate attributes corresponding to the detected I / O streams for the SSD. These acquired attributes may include, for example, frequency, time locality, sequencing, and / or correspondence. These attributes obtained from the training traces during step < RTI ID = 0.0 > S101 < / RTI >

이후, 단계 S102에서, 획득된 속성들은 특징들(features)을 추출(extract)하기 위해 사용될 수 있으며. 따라서 검출된 I/O 스트림들 각각에 대해 추출된 특징들의 각각을 식별하고, 특징들 각각의 증요성 레벨을 나타내기 위해 사용되는 특징 매트릭스(feature matrix, 140)를 생성할 수 있다.Thereafter, in step S102, the acquired attributes can be used to extract features. Thus, each of the extracted features may be identified for each of the detected I / O streams, and a feature matrix 140 used to indicate the severity level of each of the features may be generated.

특징 매트릭스(140)는 각 추출된 속성의 중요도(예를 들어, 중요도 계수(importance factor))가 로직 블록 어드레스(LBA) 또는 로직 블록 어드레스들(LBAs)의 그룹에 대응할 때 속성의 중요도를 효과적으로 나타낼 수 있다. 따라서, 특징 매트릭스(140)는 nXm 엔트리들을 갖는 nXm 매트릭스로 생각할 수 있다. 여기서, n은 스트림 검출 및 식별을 위해 분석 된 속성들의 총 개수이고, m은 로직 블록 어드레스들(LBAs)의 총 개수이다.The feature matrix 140 effectively represents the importance of an attribute when the importance of each extracted attribute (e.g., an importance factor) corresponds to a group of logical block addresses (LBAs) or logical block addresses (LBAs) . Thus, the feature matrix 140 can be thought of as an nXm matrix with nXm entries. Where n is the total number of attributes analyzed for stream detection and identification and m is the total number of logical block addresses (LBAs).

중요도 계수는 특징 매트릭스(140)의 행들에 저장된 데이터 퀀텀들(data quanta)으로서 리스트될 수 있다. 특징 매트릭스(140)의 각 엔트리는, 그 속성이 특정 로직 블록 어드레스(LBA)에 대해 중요한 것으로 고려되는 지의 여부를 나타내는 단일 이진 비트로 표현될 수 있다. 예를 들어, 특징 매트릭스(140) 내 각 어드레스는 속성이 그 로직 블록 어드레스 (LBA)에 대해 중요함을 것을 나타내는 "1" 또는 속성이 그 로직 블록 어드레스(LBA)에 대해 중요하지 않음을 나타내는 "0"을 포함할 수 있다. 즉, 상대적으로 낮은 오버 헤드를 갖는 다양한 속성들(예를 들어, 빈도, 시간적 지역성, 순차성 및 일치성)을 획득하기 위해, 각 속성은 각 LBA에 대해 단일-이진 비트 값(single-bit binary value)으로 표시될 수 있으나, 각 LBA에 대한 중요도의 수준(예를 들어, 중요도의 변화 정도들)를 나타내기 위해 멀티-비트 값(multiple-bit value)이 사용될 수 있다. LBA 엔트리에 대한 이진 값은, 특징 매트릭스(140)의 속성이 임계값 벡터(threshold vector)의 대응하는 요소보다 작거나 같지 않을 때 0이고, 그렇지 않으면 1이다. 임계값 벡터는 nX1 엔트리들을 갖는 nX1 매트릭스로 생각될 수 있다. 여기서 n은 전체 속성들 수이고, 이 행렬의 각 엔트리는 각 속성의 임계값(threshold)에 대응한다. 개별적인 속성들 각각이 어떻게 획득되는 지는 아래에서 개별적으로 설명된다.The importance coefficients may be listed as data quanta stored in the rows of the feature matrix 140. Each entry in the feature matrix 140 may be represented by a single binary bit indicating whether the attribute is considered significant for a particular logical block address (LBA). For example, each address in the feature matrix 140 may have a value of "1" indicating that the attribute is significant for its logical block address (LBA) or " 0 ". ≪ / RTI > That is, in order to obtain various attributes (e.g., frequency, temporal locality, sequentiality, and correspondence) with relatively low overhead, each attribute has a single-bit binary value ), But a multiple-bit value may be used to indicate the level of importance for each LBA (e.g., degree of change in importance). The binary value for the LBA entry is 0 when the attribute of the feature matrix 140 is less than or equal to the corresponding element of the threshold vector, and 1 otherwise. The threshold vector may be thought of as an nXl matrix with nXl entries. Where n is the total number of attributes, and each entry in this matrix corresponds to a threshold of each attribute. How each of the individual attributes is obtained is described separately below.

특징 매트릭스(140)는 예를 들어, 상이한 로직 블록 어드레스들(LBAs)에 대응하는 데이터 기입들을 상이한 스트림들에 클러스터링(clustering)하기 위해 사용될 수 있다. 따라서, 개선된 멀티-스레드 K-평균(multi-threaded K-means) 방법은 다른 스트림들로의 데이터 기입들을 클러스터링 또는 그룹화하기 위한 클러스터링 모델로서 사용될 수 있고, K-평균은 반복적인 자율 클러스터링 애플리케이션이다. 획득된 속성들 각각은 데이터 클러스터링의 하나의 특징을 구성할 수 있다. 즉, 획득된 속성들의 특징들에 의해 데이터의 다양한 타입들을 식별하는데 사용되는 획득된 속성들 각각은 특징 매트릭스(140)의 하나의 행 또는 하나의 열에 대응할 수 있다.The feature matrix 140 may be used, for example, to cluster data writes corresponding to different logical block addresses (LBAs) to different streams. Thus, an improved multi-threaded K-means method can be used as a clustering model for clustering or grouping data writes to other streams, and the K-means is an iterative autonomous clustering application . Each of the acquired attributes may constitute one feature of data clustering. That is, each of the obtained attributes used to identify the various types of data by the characteristics of the acquired attributes may correspond to one row or one column of the feature matrix 140. [

특징 매트릭스(140)가 생성되면, 단계 S103에서, 상이한 I/O 스트림들을 검출 및 식별하기 위한 분석 모델이 초기화될 수 있다. 초기화 모델은 K-평균 클러스트링을 나타낸다.Once the feature matrix 140 is generated, in step S103, an analysis model for detecting and identifying the different I / O streams may be initialized. The initialization model represents K-mean clustering.

따라서, 단계 S104에서, 초기화된 모델은 평가를 위해 모델(160)을 생성하도록 트레이닝(training)되고, 그 후 단계 S105에서 모델(160)이 평가(evaluate)된다. 모델(160)은 머신-러닝(machine-learning) 또는 셀프-러닝 알고리즘(self-learning algorithm)을 사용하여 효과적인 자체 형태(effectively shape itself) 또는 자체적인 트레이닝을 할 수 있다. 이는 모델 (160)이, 상이한 LBA들을 할당할 스트림 ID들을 결정함에 있어, 어떤 속성들이 다른 속성들보다 더 중요함을 효과적으로 강조하도록 허용할 수 있다.Thus, at step S104, the initialized model is trained to generate the model 160 for evaluation, and then the model 160 is evaluated at step S105. The model 160 may effectively perform its own shape or self-training using a machine-learning or self-learning algorithm. This may allow the model 160 to effectively highlight which attributes are more important than other attributes in determining stream IDs to which to assign different LBAs.

상이한 속성들 각각에 대응하는 상대 가중 계수(relative weight factor)는 기본적으로 단일(unity)일 수 있다. 그러나, 단계 S106에서, 선택적 상대 가중 계수가 모델(160)에 도입될 수 있다. 즉, 획득된 속성들 모두가 초기에 동일하게 가중될 수 있지만, 단계 S106에서, 대응하는 스트림 ID를 결정하고 할당할 때 각 속성의 상대적 중요성을 강조하기 위해, 속성들에 대응하는 상대 가중 계수 매트릭스가 선택적 입력으로서 생성된 모델(160)로 튜닝되어 전달될 수 있다. 예를 들어, 추출된 속성들 중 하나가 추출된 다른 속성들보다 상대적으로 더 높은 중요도 레벨을 갖는다면, 상대 가중 계수를 모델(160)에 도입함으로써 더 높은 가중 계수가 그 속성에 할당될 수 있고, 이는 단계 S105에서(예를 들어, 사용자 또는 시스템이 결정한 사양들을 준수하도록 조정되기 위해), 평가 또는 재평가될 수 있다.The relative weight factor corresponding to each of the different attributes may be essentially unity. However, in step S106, an optional relative weighting factor may be introduced into the model 160. [ That is, all of the acquired attributes may initially equally be weighted, but in step S106, to emphasize the relative importance of each attribute in determining and assigning the corresponding stream ID, a relative weighting factor matrix May be tuned and delivered to the model 160 generated as an optional input. For example, if one of the extracted attributes has a relatively higher importance level than other extracted attributes, a higher weighting factor may be assigned to the attribute by introducing a relative weighting factor into the model 160 , Which may be evaluated or re-evaluated at step S105 (e.g., to be adjusted to comply with user or system-determined specifications).

트레이닝 단계(120)의 종료시에, 단계 S104, 단계 S105, 그리고 선택적으로 단계 S106에서, 상대적으로 적은 수의 반복들(예를 들어, 4회 또는 5회 반복)동안 클러스터링이 수행되면, 단계 S107에서, 대응하는 스트림 ID에 대한 LBA들(예를 들어) 각각의 관계를 표현하기 위한 사전(dictionary, 150)이 형성되어서, 식별된 대응하는 LBA에 근거해서 스트림 ID들은 새로운 데이터에 자동으로 할당될 수 있다. 다른 실시예들에서, 트레이닝 단계(120)는 방법의 초기 단계로서 수행될 수 있고, 그리고/또는 임의의 작업 부하(workload) 변화들을 보상하기 위해서 사전을 조정하기 위해 테스트 단계(130) 동안 주기적으로 수행될 수 있다. 사전(150)은 메모리의 디스크 상에 저장될 수 있고, 사전(150)이 테스트 단계(130)의 실행 시간 동안 사용될 수 있도록 예를 들어, 장치 계층, 블록 계층 또는 애플리케이션 계층에 저장될 수 있다At the end of the training phase 120, if clustering is performed for a relatively small number of iterations (e. G., Four or five iterations) in step S104, step S105 and optionally step S106, , A dictionary 150 is formed to represent each relationship of LBAs (e.g., for the corresponding stream ID) so that stream IDs can be automatically assigned to new data based on the identified corresponding LBA have. In other embodiments, the training step 120 may be performed as an initial step of the method and / or may be performed periodically during the test step 130 to adjust the dictionary to compensate for any workload changes . The dictionary 150 may be stored on a disk in memory and may be stored, for example, in a device layer, a block layer, or an application layer so that the dictionary 150 may be used during the execution time of the test step 130

따라서, 테스트 단계(130) 동안, 단계 S108에서, 새로운 데이터는 실행중인 작업 부하로 메모리에 기입되도록 들어온다. 그 후, 단계 S109에서, 룩업(lookup)은 사전(150)을 사용하여 수행될 수 있다. 즉, 단계 S108에서 새로운 데이터가 들어오면, 단계 S108에서 수신된 새로운 데이터에 대응하는 LBA가 식별될 수 있고, 그리고, 트레이닝 단계(120)동안 생성된 사전(150)의 룩업에 근거하여, 스트림 ID가 새로이 수신된 데이터에 대응하는 LBA에 근거하여 할당됨으로써 이에 따라 관련된 데이터를 그룹화할 수 있다.Thus, during the test step 130, in step S108, the new data comes in to be written into the memory as a running workload. Then, in step S109, a lookup may be performed using the dictionary 150. [ That is, when new data is received in step S108, the LBA corresponding to the new data received in step S108 can be identified, and based on the lookup of the dictionary 150 generated during the training step 120, May be assigned based on the LBA corresponding to the newly received data, thereby grouping the related data accordingly.

그 후, 단계 S110에서, 대응하는 물리적 어드레스가 스트림 ID에 할당 될 수 있다. 즉, 작업 부하를 실행하는 동안, 사전(150)에 대한 빠른 룩업은 어떠한 런타임 계측 오버헤드 없이 오직 스트림 ID 할당에만 필요하다. 따라서, 테스트 단계(130)는 추가 오버헤드 없이 상대적으로 빠르게 수행될 수 있다.Then, in step S110, a corresponding physical address may be assigned to the stream ID. That is, during the execution of the workload, a fast lookup to dictionary 150 is only required for stream ID allocation without any run time measurement overhead. Thus, test step 130 can be performed relatively quickly without additional overhead.

상술한 분석 모델은 임의의 계층(예를 들어, 파일 시스템, 장치 드라이버 등)에 배치될 수 있으므로, 스트림 ID들을 할당하는 프로세스에 애플리케이션들이 수반될 어떤 필요를 없앤다는 점에 유의해야 한다. 또한 각 I/O 동작에 대해 그리고 구현 계층에 따라, 분석 모델은 SSD에 기록되도록 요청되는 로직 블록 번호들 또는 파일들을 알고 있으므로, 셀프-러닝 모델이 그러한 로직 블록 번호들 또는 파일들의 액세스에서 경향들을 찾는 것을 허용한다.It should be noted that the above-described analysis models can be placed in any hierarchy (e.g., file system, device driver, etc.), thus eliminating any need for applications to be involved in the process of assigning stream IDs. Also for each I / O operation and depending on the implementation layer, the analysis model knows the logic block numbers or files requested to be written to the SSD, so that the self- Allows you to search.

상술한 분석 모델은 평가될 수 있는 다수의 전체 속성들에 대해 유연(flexible)하다는 것을 또한 유의해야 한다. 따라서 분석 모델은 임의의 수의 속성들을 고려하여 임의의 수의 스트림 ID들을 결정하기 위해 사용될 수 있다. 따라서, 본 발명은 특정 수의 속성들 또는 특정 수의 스트림들에 제한되지 않는다. 예를 들어, 본 발명의 실시예들은 멀티-스트림 플래시 드라이브들에 의해 지원되는 스트림들의 수가 변경되더라도, 이 분야의 미래 기술들을 지원할 수 있다.It should also be noted that the analytical model described above is flexible for a number of overall attributes that can be evaluated. The analysis model can thus be used to determine any number of stream IDs taking into account any number of attributes. Thus, the present invention is not limited to any particular number of attributes or a specific number of streams. For example, embodiments of the present invention may support future technologies in this field, even if the number of streams supported by multi-stream flash drives is changed.

단계 S101에서의 트레이닝 트레이스에 의해 수행된 바와 같이, 다양한 속성들을 획득하기 위한 방법들의 예들이 아래에서 설명된다.Examples of methods for obtaining various attributes, as performed by the training traces in step S101, are described below.

빈도(frequency)의 속성은 데이터 입력의 결과로서 특정 어드레스가 얼마나 자주 액세스되려고 시도되었는 지에 대응할 수 있다. 빈도의 속성을 획득하기 위해, 임의의 특정 어드레스의 액세스 수가 미리 설정된 임계값(예를 들어 4 번)보다 작은 경우, 그 특정 어드레스에 대응하는 빈도 속성은 중요도를 나타내는 1로서 할당 될 수 있고, 그렇지 않으면 0으로 할당될 수 있다.The nature of the frequency may correspond to how often a particular address is attempted to be accessed as a result of data entry. In order to obtain the attribute of the frequency, when the access number of any specific address is smaller than a predetermined threshold value (for example, 4), the frequency attribute corresponding to the specific address can be assigned as 1 indicating importance, If not, it can be assigned as 0.

시간적 지역성(temporal locality)의 속성은 특정 어드레스가 얼마나 최근에 액세스되려고 시도되었는지에 대응할 수 있다. 시간적 지역성의 속성을 획득하기 위해, 트레이닝 트레이스의 최대 타임스탬프(timestamp)가 결정될 수 있으며, 최대 타임스탬프의 미리 설정된 임계값(예를 들어, 50%의 임계값) 이후에 액세스되는 어드레스들은 시간적 지역성 속성에 1을 할당하여 최근의 것으로 표시될 수 있고, 그렇지 않으면 시간적 속성을 0으로 할당한다.The attribute of temporal locality may correspond to how recently a particular address was attempted to be accessed. To obtain the attributes of temporal locality, the maximum timestamp of the training traces may be determined, and the addresses accessed after a predetermined threshold of the maximum timestamp (e.g., a threshold of 50%) may be temporal locality By assigning 1 to the attribute, it can be displayed as recent, otherwise it assigns the temporal attribute to 0.

순차성(sequentiality)의 속성은 데이터 입력이 순차적인 순서로 특정 어드레스들에 액세스하고자 시도하는 지의 여부에 대응할 수 있다. 순차성의 속성을 획득하기 위해, 새로운 I/O 스트림이 시퀀스 검출기에 의해 수신될 때, 시퀀스 검출기는 주어진 트레이스에서 이전(또는 소정의 미리 정의된 윈도우 크기, 예를 들어, 16) LBA를 검색(look up)할 수 있다. 일치하는 것이 발견되면, 순차성 속성은 1로 할당되고, 그렇지 않으면 0으로 할당 될 수 있다.The attribute of sequentiality may correspond to whether data entry attempts to access particular addresses in a sequential order. When a new I / O stream is received by the sequence detector, the sequence detector searches for a previous (or predefined window size, e.g., 16) LBA in a given trace to obtain the attribute of the sequentiality up. If a match is found, the sequential property is assigned as 1, otherwise it can be assigned as 0.

도 2는 본 발명의 실시예에 따른 신규한 일치성(congruency) 속성을 설명하는 샘플링 그래프이다.2 is a sampling graph illustrating a novel congruency attribute according to an embodiment of the present invention.

본 발명의 실시예들에 의해 도입된 속성인 일치성의 속성은 LBA들과 같은 상이한 관심사의 엔티티들이 규칙적으로 또는 거의 동시에 업데이트될 때에 대응한다. 예를 들어, 특정 그룹의 어드레스들이 자주 또는 거의 항상, 거의 비슷한 시간에 업데이트되는 경우, 그러한 LBA들의 그룹은 서로 일치한다고 말할 수 있다. 일치하는 어드레스들이 동시에 액세스되기 때문에, 메모리 장치의 성능을 향상시키기 위해 그들을 함께 그룹화하는 것이 유용할 수 있다.Attributes of consistency, an attribute introduced by embodiments of the present invention, correspond when entities of different interests, such as LBAs, are updated regularly or nearly simultaneously. For example, if the addresses of a particular group are updated frequently or almost always at about the same time, it can be said that the groups of such LBAs match each other. Since matching addresses are accessed at the same time, it may be useful to group them together to improve the performance of the memory device.

도 2에서, 샘플링 그래프의 x-축은 타임스탬프(예를 들어, 타임스탬프 윈도우 또는 시간 간격)에 대응하고, y-축은 LBA 공간에 대응한다. 본 실시예에서, 일치성은 하나 이상의 다른 LBA들과 일관되게 시간을 맞추는 하나 이상의 LBA들의 품질로서 간주될 수 있다. 따라서, 특정 LBA들 그룹이 거의 동시에 자주 업데이트되는 경우, 그 LBA들 그룹은 서로 일치하는 것으로 말할 수 있다. 따라서, 도 2에 도시된 예에서, LBA2 및 LBA3은 수직 점선들로 표시된 4 개의 타임스탬프 윈도우들/시간 간격들 중 3 개에서 동시에 모두 업데이트되기 때문에 서로 일치한다. 낮은 오버헤드를 갖는 일치성의 속성을 획득하기 위해, 고정 길이 큐가 유지될 수 있는데, 여기서 큐(queue)의 각 엘리먼트(element) 또는 슬롯(slot)은 관측된 시간 간격/타임스탬프 윈도우를 나타낸다.. In Fig. 2, the x-axis of the sampling graph corresponds to a timestamp (e.g., a timestamp window or time interval), and the y-axis corresponds to LBA space. In the present embodiment, consistency can be regarded as the quality of one or more LBAs that coincide in time with one or more other LBAs. Thus, if a group of specific LBAs are updated frequently at about the same time, the groups of LBAs can be said to be in agreement with each other. Thus, in the example shown in FIG. 2, LBA2 and LBA3 coincide with each other because they are all updated simultaneously in three of the four time stamp windows / time intervals indicated by the vertical dotted lines. To obtain an attribute of consistency with low overhead, a fixed-length queue may be maintained where each element or slot of the queue represents the observed time interval / timestamp window. .

더욱 상세하게, 본 발명의 일 실시예의 장치는 특정 시간 간격들 사이에 또는 특정 시간 간격들에서 "스누프(snoop)"할 수 있다. 도 2에 도시된 예에서, 스누프의 사례들(instances)은 수직 점선들로 표시된다. LBA2 및 LBA3은 제1 스누프 시간(210)에서 일치하게 갱신됨을 알 수 있다. 유사하게, 도 2는 LBA2 및 LBA3이 제2 스누프 시간(220) 및 제3 스누프 시간(230)에서 동시에 액세스되는 것을 도시한다. 상이한 스누프 시간들은 LBA2 및 LBA3이 동시에(예를 들어, 일치하는(congruent)) 업데이트되는 경향을 갖고 있다는 것을 나타내기 때문에, LBA2와 LBA3이 유사한 라이프 사이클들을 가질 수 있으므로, LBA2와 LBA3을 단일 스트림으로 함께 그룹화하는 것이 이익일 수 있다.More particularly, the apparatus of an embodiment of the present invention may "snoop" between certain time intervals or at certain time intervals. In the example shown in Figure 2, instances of snoop are represented by vertical dashed lines. LBA2 and LBA3 are updated in the first snoop time 210 in a consistent manner. Similarly, FIG. 2 shows that LBA2 and LBA3 are accessed simultaneously in the second snoop time 220 and the third snoop time 230. FIG. Since LBA2 and LBA3 may have similar life cycles, since different snoop times indicate that LBA2 and LBA3 have a tendency to update simultaneously (e. G., Congruent) It may be beneficial to group them together.

도 3은 본 발명의 일 실시예에 따른 일치성 속성 할당의 플로우차트이다.3 is a flow chart of conformity property assignment according to an embodiment of the present invention.

도 3을 참조하면, 일치성 속성을 획득하는 과정에서 고유한 LBA 어드레스들을 나타내기 위해 예시적인 심볼(symbol)들 [-, x, o, |, +]을 사용하여 일치성 속성을 결정하는 과정의 플로우차트가 도시된다. 큐 (300)는 다수의 엘리먼트들 또는 슬롯들을 포함하고, 큐(300)의 각 엘리먼트는 엘리먼트(단일 타임스탬프 윈도우를 참조하는 큐(300)의 각 엘리먼트)에 대응하는 해당 타임스탬프 윈도우 내에서 액세스되는 모든 고유한 LBA들의 리스트를 유지한다.Referring to FIG. 3, a process of determining a correspondence property using exemplary symbols [-, x, o, |, +] to represent unique LBA addresses in the process of obtaining a correspondence attribute Is shown. The queue 300 includes a number of elements or slots and each element of the queue 300 is accessed within the corresponding timestamp window corresponding to the element (each element of the queue 300 referencing a single timestamp window) Lt; RTI ID = 0.0 > LBAs. ≪ / RTI >

단계 S301에서, 고유한 LBA들의 수가 주어진 임계값(예를 들어, 임계값 "β")보다 작은 지의 여부가 판별된다. 각각의 타임스탬프 윈도우는 해당 타임스탬프 윈도우 내 액세스되는 모든 LBA들에 대응할 것이고, 특정 타임스탬프 윈도우를 큐(300)에 삽입하는 결정은 해당 타임스탬프 윈도우 내 액세스되는 모든 고유한 LBA들의 수에 의존하며, LBA들은 다양한 심볼들로 표현될 수 있다. 예를 들어, 이 실시예에서, 제1 타임스탬프 윈도우(310)에서, "-" LBA가 액세스되었고, 제2 타임스탬프 윈도우(320)에서 "x" LBA 및 "|" LBA가 함께 액세스되었고, 제3 타임스탬프 윈도우(330)에서 "-" LBA, "x" LBA, "|" LBA 및 "+" LBA가 함께 액세스되었고, 제4 타임스탬프 윈도우(340)에서 "-" LBA 및 "o" LBA가 함께 액세스되었다.In step S301, it is determined whether the number of unique LBAs is smaller than a given threshold value (for example, threshold value "beta"). Each timestamp window will correspond to all LBAs accessed in that timestamp window, and the decision to insert a particular timestamp window into the queue 300 depends on the number of all unique LBAs accessed in that timestamp window , LBAs can be represented by various symbols. For example, in this embodiment, in the first timestamp window 310, the "-" LBA has been accessed, the "x" LBA and the "|" in the second timestamp window 320, LBA, "x" LBA, "| ", and" LBA and "+" LBA were accessed together, and in the fourth timestamp window 340 the "-"

논리적으로, 주어진 타임스탬프 윈도우 내 적은 수의 LBA들이 액세스되지만, 그러한 적은 수의 LBA들의 조합이 일치할 때(즉, 그들은 여러 번 액세스되고 또한 복수의 그러한 여러 번에 대해 동시에 액세스된다), 그러한 LBA들을 동일한 스트림으로 그룹화하는 것의 중요성이 적합할 수 있다. 따라서, 일단 트레이스가 달성되면(예를 들어, 도 1에서 설명된 바와 같이), 입력이 분석될 수 있다.Logically, a small number of LBAs in a given timestamp window are accessed, but when such a small number of combinations of LBAs coincide (i.e., they are accessed multiple times and simultaneously accessed for a plurality of such multiple times) The importance of grouping them into the same stream may be appropriate. Thus, once a trace is achieved (e.g., as described in FIG. 1), the input may be analyzed.

단계 S301에서, 타임스탬프 윈도우 내 액세스되는 고유한 LBA들이 소정의 임계값보다 작은 것으로 판단되면, 단계 S302에서, 특정 타임스탬프 윈도우가 큐(300)에 삽입된다. 그러나, 단계 S301에서 타임스탬프 윈도우 내 액세스되는 고유한 LBA들이 주어진 임계값보다 작지 않으면, 단계 S303에서, 프로세스는 다음 타임스탬프 윈도우로 이동한다. 비교적 많은 수의 액세스된 LBA들을 갖는 타임스탬프 윈도우를 무시하는 것이 유리할 수 있는데, 큰 수는 일치성에 대해서 중요도가 더 낮은 것을 나타낼 수 있기 때문이다. 따라서, 상대적으로 많은 수의 어드레스들을 갖는 타임스탬프 윈도우들을 큐(300)로 가져오지 않음으로써, 계산이 보다 빠르게 수행될 수 있고, 도 1에서 설명된 트레이닝 단계(120)가 더 효율적일 수 있다.If it is determined in step S301 that the unique LBAs to be accessed in the timestamp window are smaller than the predetermined threshold value, then in step S302, a specific timestamp window is inserted into the queue 300. [ However, if the unique LBAs accessed in the timestamp window in step S301 are not less than a given threshold, then in step S303 the process moves to the next timestamp window. It may be advantageous to ignore the timestamp window with a relatively large number of accessed LBAs, since a large number may indicate a lower importance for consistency. Thus, by not bringing timestamp windows with a relatively large number of addresses into the queue 300, the computation can be performed faster and the training step 120 described in FIG. 1 can be more efficient.

단계 S304에서, 큐(300)가 가득 찼는지의 여부가 판별된다. 일단 큐(300)의 길이가 채워지면, 단계 S305에서, 일치성 속성에 값을 첨부함으로써 디큐(dequeue)가 트리거(trigger)된다. 큐(300)의 길이는 조정 될 수 있다.In step S304, it is determined whether or not the queue 300 is full. Once the length of the queue 300 is filled, in step S305, a dequeue is triggered by attaching a value to the consistency attribute. The length of the queue 300 can be adjusted.

디큐하는 동안, 각 타임스탬프 윈도우는 모든 다른 타임스탬프 윈도우들과 비교되어 일치하는 엘리먼트들을 식별한다. 큐(300)의 제1 엘리먼트 리스트의 부분 집합 값들이 큐(300)의 다른 엘리먼트 리스트의 부분 집합 값들과 일치하는 것으로 디큐 동작 중에 판별되면, 그 부분 집합들의 값들은 1로 표시된다(예를 들어, 일치(congruent)). 엘리먼트 리스트의 부분 집합의 값들이 임의의 다른 엘리먼트 리스트의 부분 집합의 값들과 일치하지 않으면, 그 엘리먼트에 대응하는 부분 집합의 값들은 0으로 표시된다(예컨대, 불일치(not congruent)). 일치성을 판별하기 위한 부분 집합의 크기의 임계값은 조절될 수 있으며, 예를 들어, 3 개의 값들로 설정 될 수 있고, 단지 2 개의 매칭 값들을 포함하는 매칭 부분 집합들을 갖는 2 개의 상이한 엘리먼트들의 리스트들이 여전히 0(즉, 불일치)으로 표시될 수 있다. 단계 S305에서, 디큐는 FIFO(first in first out) 순서로 동작된다.During the dequeue, each timestamp window is compared to all other timestamp windows to identify matching elements. If the subset values of the first element list of the queue 300 are determined during the dequeue operation to match the subset values of the other element lists of the queue 300, then the values of the subset are indicated as 1 , Congruent). If the values of the subset of the element list do not match the values of the subset of any other element list, then the values of the subset corresponding to that element are denoted as zero (e.g., not congruent). The threshold of the size of the subset to determine correspondence can be adjusted, for example, by setting two values of two different elements having matching sub-sets that can be set to three values, The lists may still be marked as 0 (i.e., inconsistent). In step S305, the dequeue is operated in a FIFO (first in first out) order.

단계 S306에서, 매트릭스(예컨대, 일치성 매트릭스)는 LBA들을 나타내는 심볼들 각각에 단일-비트 이진 값을 할당함으로써 생성된다. "x" LBA 및 "|" LBA는 제2 및 제3 타임스탬프 윈도우들(320, 330)에서 모두 액세스되고 다른 타임스탬프 윈도우에서 액세스되지 않기 때문에 "x" LBA 및 "|" LBA는 모두 일치(congruent)로 판별되고, "1"의 값으로 할당되고, 나머지 LBA들은 불일치(non-congruent)로 판별되고, "0"의 값으로 할당된다.In step S306, the matrix (e.g., the correspondence matrix) is generated by assigning a single-bit binary value to each of the symbols representing the LBAs. "x" LBA and "|" The LBA is accessed in both the second and third timestamp windows 320 and 330 and is not accessed in another timestamp window, so the "x" LBA and the "| The LBAs are all determined as congruent and assigned a value of "1", the remaining LBAs are determined as non-congruent and assigned a value of "0".

또한 다른 실시들에서, 다양한 서브 속성들이 있을 수 있으므로, 단계 S306의 일치성 매트릭스에 다수의 열들이 있을 수 있고, 일치성 매트릭스의 각 행은 상이한 속성들로부터의 데이터를 참조할 수 있다.Also, in other implementations, there may be many sub-attributes, so there may be multiple columns in the consistency matrix of step S306, and each row of the consistency matrix may refer to data from different attributes.

그 후, 일단 단계 S306에서 일치성 매트릭스가 생성되면, 도 2의 트레이닝 단계(120) 동안 생성된 사전(150)은 스트림 ID들을 다양한 데이터의 스트림들에 할당하기 위한 룩업 테이블로 사용된다.Thereafter, once the correspondence matrix is created in step S306, the dictionary 150 generated during the training step 120 of FIG. 2 is used as a look-up table to assign stream IDs to the streams of various data.

따라서 앞서 설명된 본 발명의 실시예들은 임의의 애플리케이션 레벨 변경들의 요구없이 구현될 수 있고, 따라서 다수의 애플리케이션들을 동시에 실행하기 위해 사용되는 임의의 애플리케이션, 작업 부하 또는 플랫폼에 대해 사용될 수 있고, 또한 다수의 속성들의 사용이 가능하게 될 수 있다. 더욱이, 위에서 설명된 적절한 상대 가중 계수들을 사용하여 상이한 속성들이 추가, 제거 또는 심지어 튜닝될 수 있으므로, 높은 품질의 스트림 ID 패킷화를 가능하게 한다.Thus, the embodiments of the present invention described above can be implemented without requiring any application level changes, and thus can be used for any application, workload or platform used to run multiple applications simultaneously, May be enabled. Moreover, different attributes can be added, removed or even tuned using the appropriate relative weighting factors described above, thus enabling high quality stream ID packetization.

또한, 테스트 단계(130)동안, 사전(150) 내의 단일의 하드 룩업(hard lookup)만이 사용되기 때문에, 계측 오버 헤드는 낮게/최소화되고, 따라서 테스트 동안 설명된 실시예들의 프로세스들을 빠르게 만든다. 또한, 실시예들은 다른 상황들(contexts)에 적용될 수 있기 때문에, 중요한 것이 중요하지 않은 것으로부터 분리되고, 설명된 실시예들은 고온, 상온 및 저온 데이터 식별 문제들, 다계층(multi-tiered) 스토리지, 효율적인 캐싱(caching)과 같은 다양한 분야들에 적용될 수 있다.Also, during the test step 130, since only a single hard lookup within the dictionary 150 is used, the metering overhead is low / minimized, thus making the processes of the embodiments described during the test quick. Also, because embodiments can be applied to different contexts, important things are separated from non-critical, and the described embodiments are applicable to high temperature, room temperature and low temperature data identification problems, multi-tiered storage , Efficient caching, and the like.

상술한 내용은 예시적인 실시예들을 설명하기 위한 것이며, 본 발명을 제한하는 것으로 해석되어서는 안 된다. 비록 몇몇 예시적인 실시예들이 설명되었지만, 당업자는 예시적인 실시예들의 신규한 교시들 및 효과들로부터 실질적으로 벗어남 없이 예시적인 실시예들에서 많은 변형들이 가능하다는 것을 용이하게 이해할 것이다. 따라서, 그러한 모든 변형들은 청구항들에 정의된 예시적인 실시예들의 범위 내에 포함되도록 의도된다. 청구항들에서, 기능식 표현(means-plus-function) 용어들은 구조적 등가물뿐만 아니라 등가의 구조를 열거하여 여기에 설명된 구조를 포함하도록 의도되었다. 따라서, 상술한 실시예들은 예시적인 실시예들을 설명하기 위한 것이며, 개시된 특정 실시예들에 한정되는 것으로 해석되어서는 안되며, 첨부된 청구항들의 범위 내에서, 개시된 예시적인 실시예들 및 다른 예시적인 실시예들에 대한 변형들을 포함하는 것으로 이해되어야 한다. 본 발명의 개념은 다음의 청구항들에 의해 정의되고, 청구항들 범위의 균등물들을 포함한다. The foregoing is intended to illustrate exemplary embodiments and should not be construed as limiting the invention. Although several exemplary embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible in the exemplary embodiments without materially departing from the novel teachings and advantages of the exemplary embodiments. Accordingly, all such modifications are intended to be included within the scope of the exemplary embodiments defined in the claims. In the claims, means-plus-function terms are intended to include structural equivalents as well as the structures described herein by listing equivalent structures. Thus, the above-described embodiments are intended to illustrate exemplary embodiments and should not be construed as limited to the specific embodiments disclosed, but are to be accorded the widest scope consistent with the disclosed exemplary embodiments and other exemplary implementations But should be understood to include variations on the examples. The concepts of the present invention are defined by the following claims and include equivalents to the scope of the claims.

140: 특징 매트릭스
150: 사전 160: 모델
140: Feature Matrix
150: Dictionary 160: Model

Claims (10)

멀티-스트리밍 메모리 시스템에 있어서:
메모리; 및
상기 메모리와 연결되는 프로세서를 포함하고,
소프트웨어 컴포넌트를 실행하는 상기 프로세서는,
로직 블록 어드레스들과 각각 관련되고, 각각이 데이터 기입들의 복수의 스트림들 각각에 대응하는 다수의 속성들을 식별하고;
상기 스트림들 각각에 대한 상기 속성들 각각을 위한 중요도 계수를 평가하고; 그리고
상기 로직 블록 어드레스들 각각 및 할당된 스트림에 대한 모든 중요도 계수들에 기초하여 상기 로직 블록 어드레스들 각각에 스트림 ID를 할당하여 2개 이상의 상기 로직 블록 어드레스들을 클러스터링하는 멀티-스트리밍 메모리 시스템.
A multi-streaming memory system comprising:
Memory; And
And a processor coupled to the memory,
The processor, which executes the software component,
Identify a plurality of attributes, each associated with the logic block addresses, each corresponding to each of the plurality of streams of data writes;
Evaluate a significance coefficient for each of the attributes for each of the streams; And
And assigning a stream ID to each of the logic block addresses based on each of the logic block addresses and all importance coefficients for the assigned stream to cluster two or more of the logic block addresses.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트는 1개 이상의 속성들에 가중 계수를 할당하는 것을 더 포함하고,
상기 소프트웨어 컴포넌트는 상기 할당된 가중 계수에 근거해서 다른 중요도 계수들보다 상기 다수의 속성들에 대응하는 상기 중요도 계수들에 우선권을 부여하여 상기 스트림 ID를 상기 로직 블록 어드레스들에 할당하는 멀티-스트리밍 메모리 시스템.
The method according to claim 1,
Wherein the software component further comprises assigning a weighting factor to one or more attributes,
Wherein the software component assigns priority to the significance coefficients corresponding to the plurality of attributes based on the assigned weighting factor and assigns the stream ID to the logical block addresses, system.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트는 nXm 어드레스들을 포함하는 nXm 특징 매트릭스를 생성하여 상기 로직 블록 어드레스들 각각에 대한 상기 속성들 각각에 대한 상기 중요도 계수를 평가하며, 여기서 n은 상기 속성들의 전체 개수이고, m은 상기 로직 블록 어드레스들의 전체 개수인 것을 특징으로 하는 멀티-스트리밍 메모리 시스템.
The method according to claim 1,
Wherein the software component generates an nXm feature matrix comprising nXm addresses to evaluate the significance factor for each of the attributes for each of the logic block addresses, where n is the total number of attributes, And the total number of block addresses.
제 3 항에 있어서,
상기 특징 매트릭스의 어드레스들 각각은 상기 중요도 계수에 대응하고, 상기 로직 블록 어드레스들 중 하나에 대응하는 속성이 중요한 지를 나타내는 단일-비트 이진 값을 포함하는 것을 특징으로 하는 멀티-스트리밍 메모리 시스템.
The method of claim 3,
Wherein each of the addresses of the feature matrix corresponds to the significance coefficient and comprises a single-bit binary value indicating whether an attribute corresponding to one of the logic block addresses is significant.
제 4 항에 있어서,
상기 소프트웨어 컴포넌트는 상기 속성에 대응하는 임계값이 충족되는 지의 여부에 근거해서 상기 단일-비트 이진 값의 값을 결정하는 것을 더 포함하는 멀티-스트리밍 메모리 시스템.
5. The method of claim 4,
Wherein the software component further comprises determining a value of the single-bit binary value based on whether a threshold corresponding to the attribute is satisfied.
제 5 항에 있어서,
상기 소프트웨어 컴포넌트는 상기 특징 매트릭스의 대응하는 어드레스들에서 일치하는 이진 값들을 갖는 상기 로직 블록 어드레스들 중 하나에 동일한 스트림 ID를 할당하는 것을 더 포함하는 멀티-스트리밍 메모리 시스템.
6. The method of claim 5,
Wherein the software component further comprises assigning the same stream ID to one of the logic block addresses having matching binary values at corresponding addresses of the feature matrix.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트는, 다중 타임스탬프 윈도우들 각각 동안, 상기 스트림들 중 어느 스트림 그룹이 동시 데이터 기입 요청들 발생에 대응하는 지를 판별하여 상기 로직 블록 어드레스들의 각각에 대한 속성들 중 하나로서 일치성 속성에 대한 중요도를 평가하는 멀티-스트리밍 메모리 시스템.
The method according to claim 1,
The software component determines, during each of the multiple timestamp windows, which stream group of the streams corresponds to the concurrent data write requests occurrence and determines, as one of the attributes for each of the logical block addresses, A multi-streaming memory system for evaluating the importance of a stream.
제 7 항에 있어서,
상기 소프트웨어 컴포넌트가 상기 일치성 속성에 대한 중요도 계수를 평가하는 것은,
상기 타임스탬프 윈도우들 각각에 대한 큐 내의 엘리먼트 내 상기 상기 스트림 그룹의 상기 스트림들 각각의 상기 로직 블록 어드레스들을 나타내고;
큐가 채워지는 경우, 각각의 엘리먼트를 다른 모든 엘리먼트들과 비교하고; 그리고
복수의 엘리먼트들 각각에서 각각 표현되는 상기 스트림 그룹의 상기 스트림들의 상기 로직 블록 어드레스들을 식별하는 것을 포함하는 멀티-스트리밍 메모리 시스템.
8. The method of claim 7,
Wherein the software component evaluates a significance coefficient for the conformity attribute,
The logical block addresses of each of the streams in the stream group in an element in a queue for each of the timestamp windows;
If the queue is populated, compare each element to all other elements; And
And identifying the logical block addresses of the streams of the stream group represented in each of the plurality of elements.
제 1 항에 있어서,
상기 소프트웨어 컴포넌트는 상기 로직 블록 어드레스 요청들 각각에 대한 상기 속성들 각각에 대한 상기 중요도 계수에 근거하여 다음 로직 블록 어드레스 요청들에 스트림 ID를 할당하기 위한 사전을 생성하는 것을 더 포함하고, 그리고
상기 메모리는 상기 사전을 저장하는 멀티-스트리밍 메모리 시스템.
The method according to claim 1,
The software component further comprises generating a dictionary for assigning a stream ID to the next logical block address requests based on the importance coefficient for each of the attributes for each of the logical block address requests,
Wherein the memory stores the dictionary.
멀티-스트리밍 메모리 장치에서 데이터의 입/출력 스트림에 대응하는 로직 블록 어드레스에 각각 관련된 속성들을 식별하는 방법에 있어서:
상기 메모리 장치에 대응하는 상기 입/출력 스트림을 검출하는 단계;
상기 검출된 입/출력 스트림에 대응하는 상기 로직 블록 어드레스에 대응하는 복수의 속성들을 획득하는 단계;
상기 로직 블록 어드레스에 대한 속성들 각각의 중요도 계수를 나타내는 특징 매트릭스를 생성하는 단계; 및
상기 특징 매트릭스에 근거해서 수신된 데이터를 상이한 스트림들에 클러스터링하는 단계를 포함하는 속성 식별 방법.
CLAIMS What is claimed is: 1. A method for identifying attributes associated with a respective logical block address corresponding to an input / output stream of data in a multi-streaming memory device, the method comprising:
Detecting the input / output stream corresponding to the memory device;
Obtaining a plurality of attributes corresponding to the logical block address corresponding to the detected input / output stream;
Generating a feature matrix representing a significance coefficient of each of the attributes for the logical block address; And
And clustering the received data to different streams based on the feature matrix.
KR1020170040850A 2016-05-02 2017-03-30 Smart i/o stream detection based on multiple attributes KR102179399B1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
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
US201662383302P 2016-09-02 2016-09-02
US62/383,302 2016-09-02
US15/344,422 2016-11-04
US15/344,422 US10282324B2 (en) 2015-07-13 2016-11-04 Smart I/O stream detection based on multiple attributes

Publications (2)

Publication Number Publication Date
KR20170124444A true KR20170124444A (en) 2017-11-10
KR102179399B1 KR102179399B1 (en) 2020-11-16

Family

ID=60386806

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170040850A KR102179399B1 (en) 2016-05-02 2017-03-30 Smart i/o stream detection based on multiple attributes

Country Status (1)

Country Link
KR (1) KR102179399B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116343849A (en) * 2023-05-30 2023-06-27 北京得瑞领新科技有限公司 Method, device, storage medium and equipment for improving SSD hybrid read-write performance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017487A1 (en) * 2004-11-04 2010-01-21 Vericept Corporation Method, apparatus, and system for clustering and classification
US20120131304A1 (en) * 2010-11-19 2012-05-24 International Business Machines Corporation Adaptive Wear Leveling via Monitoring the Properties of Memory Reference Stream
US20120239869A1 (en) * 2010-01-19 2012-09-20 Chiueh Tzi-Cker Random write optimization techniques for flash disks
US20150169449A1 (en) * 2013-03-04 2015-06-18 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017487A1 (en) * 2004-11-04 2010-01-21 Vericept Corporation Method, apparatus, and system for clustering and classification
US20120239869A1 (en) * 2010-01-19 2012-09-20 Chiueh Tzi-Cker Random write optimization techniques for flash disks
US20120131304A1 (en) * 2010-11-19 2012-05-24 International Business Machines Corporation Adaptive Wear Leveling via Monitoring the Properties of Memory Reference Stream
US20150169449A1 (en) * 2013-03-04 2015-06-18 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116343849A (en) * 2023-05-30 2023-06-27 北京得瑞领新科技有限公司 Method, device, storage medium and equipment for improving SSD hybrid read-write performance
CN116343849B (en) * 2023-05-30 2023-08-15 北京得瑞领新科技有限公司 Method, device, storage medium and equipment for improving SSD hybrid read-write performance

Also Published As

Publication number Publication date
KR102179399B1 (en) 2020-11-16

Similar Documents

Publication Publication Date Title
US10824576B2 (en) Smart I/O stream detection based on multiple attributes
KR102165776B1 (en) Adaptive value range profiling to improve system performance
US9197703B2 (en) System and method to maximize server resource utilization and performance of metadata operations
US20200026560A1 (en) Dynamic workload classification for workload-based resource allocation
TWI606338B (en) Fully associative cache memory budgeted by memory access type and operating method thereof
US9268595B2 (en) Scheduling thread execution based on thread affinity
TW201235939A (en) Instruction sequence buffer to store branches having reliably predictable instruction sequences
US9038080B2 (en) Method and system for heterogeneous filtering framework for shared memory data access hazard reports
US8346744B2 (en) Database management method, database management system, and processing program therefor
KR102217946B1 (en) Real-time adjustment of application-specific operating parameters for backwards compatibility
KR20110130488A (en) Tracking deallocated load instructions using a dependence matrix
US10691597B1 (en) Method and system for processing big data
US20110066897A1 (en) Methods and apparatuses for determining permanent memory growth
US9189165B2 (en) Method and apparatus for memory management
US9436608B1 (en) Memory nest efficiency with cache demand generation
US9715411B2 (en) Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system
Jeong et al. REACT: Scalable and high-performance regular expression pattern matching accelerator for in-storage processing
WO2014003707A2 (en) Hardware-based accelerator for managing copy-on-write
US8656133B2 (en) Managing storage extents and the obtaining of storage blocks within the extents
KR102179399B1 (en) Smart i/o stream detection based on multiple attributes
CN106778812B (en) Clustering implementation method and device
US9535713B2 (en) Manipulating rules for adding new devices
Koliopoulos et al. Towards automatic memory tuning for in-memory big data analytics in clusters
US8504764B2 (en) Method and apparatus to manage object-based tiers
US20140379943A1 (en) Measuring performance of storage system

Legal Events

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