KR102229013B1 - Automatic stream detection and assignment algorithm - Google Patents

Automatic stream detection and assignment algorithm Download PDF

Info

Publication number
KR102229013B1
KR102229013B1 KR1020170091654A KR20170091654A KR102229013B1 KR 102229013 B1 KR102229013 B1 KR 102229013B1 KR 1020170091654 A KR1020170091654 A KR 1020170091654A KR 20170091654 A KR20170091654 A KR 20170091654A KR 102229013 B1 KR102229013 B1 KR 102229013B1
Authority
KR
South Korea
Prior art keywords
identifier
chunk
stream
chunk identifier
logic
Prior art date
Application number
KR1020170091654A
Other languages
Korean (ko)
Other versions
KR20180026327A (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/344,422 external-priority patent/US10282324B2/en
Priority claimed from US15/499,877 external-priority patent/US10656838B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180026327A publication Critical patent/KR20180026327A/en
Application granted granted Critical
Publication of KR102229013B1 publication Critical patent/KR102229013B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)

Abstract

솔리드 스테이트 드라이브가 기재된다. 솔리드 스테이트 드라이브는 데이터를 저장하는 플래시 메모리를 포함하고 복수의 장치 스트림들을 지원할 수 있다. 솔리드 스테이트 드라이브 제어기는 플래시 메모리에 데이터를 읽거나 쓸 수 있고, 그리고 제출 대기열 및 청크-스트림 사상기를 저장할 수 있다. 플래시 변환 계층은 쓰기 명령을 수신하는 수신기, 논리 블록 주소를 청크 식별자에 사상하는 논리 블록 주소 사상기, 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직, 쓰기 명령에 스트림 식별자를 추가하는 스트림 식별자 추가기, 청크 식별자를 제출 대기열에 배치하는 줄세움기, 그리고 청크 식별자가 제출 대기열로부터 제거된 후에 청크-스트림 사상기를 갱신하는 배경 로직을 포함할 수 있다.Solid state drive is listed. The solid state drive includes a flash memory to store data and can support multiple device streams. The solid state drive controller can read or write data to flash memory, and can store submission queues and chunk-stream mappers. The flash conversion layer includes a receiver that receives a write command, a logical block address mapper that maps a logical block address to a chunk identifier, a stream selection logic that selects a stream identifier based on the chunk identifier, and a stream identifier that adds a stream identifier to the write command. It may include an adder, a liner to place the chunk identifier in the submission queue, and background logic to update the chunk-stream mapper after the chunk identifier has been removed from the submission queue.

Figure R1020170091654
Figure R1020170091654

Description

자동 스트림 검출 및 할당 알고리즘{AUTOMATIC STREAM DETECTION AND ASSIGNMENT ALGORITHM}Automatic stream detection and allocation algorithm {AUTOMATIC STREAM DETECTION AND ASSIGNMENT ALGORITHM}

본 발명의 기술적 사상들은 솔리드 스테이트 드라이브들(SSDs, Solid State Drives)에 관한 것으로, 더 상세하게는 다중-스트림 솔리드 스테이트 드라이브들에서 스트림들을 관리하는 것에 관한 것이다.Technical concepts of the present invention relate to solid state drives (SSDs), and more particularly, to managing streams in multi-stream solid state drives.

다중-스트리밍 솔리드 스테이트 드라이브들(SSDs, Solid State Drives)은 입력 데이터의 스마트 배치를 허용하여, 내부적인 가비지 컬렉션(GC)의 영향을 최소화하고 쓰기 증폭을 줄인다. 다중-스트리밍은 단순한 태그(스트림 식별자)를 호스로부터 솔리드 스테이트 드라이브로 전송되는 쓰기 명령들의 각각에 추가함으로써 달성된다. 이 태그에 기반하여, 솔리드 스테이트 드라이브는 데이터를 공통 블록들로 묶을 수 있다.Multi-streaming solid state drives (SSDs) allow smart placement of input data, minimizing the impact of internal garbage collection (GC) and reducing write amplification. Multi-streaming is achieved by adding a simple tag (stream identifier) to each of the write commands sent from the hose to the solid state drive. Based on this tag, the solid state drive can group data into common blocks.

그러나 다중-스트리밍 장치들을 이용하기 위하여, 소프트웨어 소스들(sources)이 데이터 수명과 같은 유사한 속성들(properties)을 갖는 데이터에 공통 스트림들을 할당할 수 있도록, 응용들은 솔리드 스테이트 드라이브가 다중-스트리밍을 지원함을 알아야 한다. 소프트웨어 다중-스트림-인식을 만드는 것은 소프트웨어를 수정하는 것을 필요로 한다. 그러나 임의의 소프트웨어를 수정하는 것은 해당 소프트웨어의 동작의 의도하지 않은 변화를 만들어내는 위험 부담을 수반한다. 시장에 수많은 상이한 소프트웨어 제품들이 주어짐에 따라, 다중-스트리밍을 지원하도록 소수의 이러한 소프트웨어 제품들이 수정될 것이라 예상하는 것도 기껏해야 가능성이 희박한 제안인 것으로 보인다.However, in order to use multi-streaming devices, applications support solid state drive multi-streaming so that software sources can allocate common streams to data with similar properties such as data lifetime. You should know. Making software multi-stream-aware requires modification of the software. However, modifying any software carries the risk of making unintended changes to the behavior of that software. Given the numerous different software products on the market, expecting that a handful of these software products will be modified to support multi-streaming seems to be a unlikely proposal at best.

수정을 필요로하는 소프트웨어 없이 다중-스트리밍을 지원하는 방법에 대한 요구가 존재한다.There is a need for a way to support multi-streaming without software requiring modifications.

본 발명의 목적은 청크의 액세스 특성을 반영하여 스트림 식별자를 할당하고 관리하는 자동 스트림 검출 및 할당 알고리즘을 제공하는 데에 있다.An object of the present invention is to provide an automatic stream detection and allocation algorithm that allocates and manages a stream identifier by reflecting the access characteristics of a chunk.

본 발명의 기술적 사상의 실시 예는 솔리드 스테이트 드라이브(SSD, solid state drive)를 포함한다. 상기 솔리드 스테이트 드라이브는 데이터를 저장하는 플래시 메모리; 상기 솔리드 스테이트 드라이브에서 복수의 장치 스트림들에 대한 지원; 제출 대기열 및 청크-스트림 사상기를 위한 저장소를 포함하고, 복수의 쓰기 명령들에 응답하여 상기 플래시 메모리에 대한 데이터 쓰기를 관리하는 솔리드 스테이트 제어기; 그리고 플래시 변환 계층을 포함한다. 상기 플래시 변환 계층은 논리 블록 주소(LBA, logical block address)를 포함하는 쓰기 명령을 수신하는 수신기; 상기 논리 블록 주소를 청크 식별자(ID, identifier)에 사상하는 논리 블록 주소 사상기; 상기 청크-스트림 사상기를 이용하여 상기 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직; 상기 스트림 식별자를 상기 쓰기 명령에 추가하는 스트림 식별자 추가기; 상기 청크 식별자를 상기 제출 대기열에 배치하는 줄세움기; 그리고 상기 청크 식별자를 상기 제출 대기열로부터 제고하고 그리고 상기 청크-스트림 사상기를 갱신하는 배경 로직을 포함한다.An embodiment of the inventive concept includes a solid state drive (SSD). The solid state drive may include a flash memory for storing data; Support for a plurality of device streams in the solid state drive; A solid state controller including storage for a submission queue and a chunk-stream mapper, and managing writing data to the flash memory in response to a plurality of write commands; And it includes a flash conversion layer. The flash translation layer includes: a receiver for receiving a write command including a logical block address (LBA); A logical block address mapper for mapping the logical block address to a chunk identifier (ID); Stream selection logic for selecting a stream identifier based on the chunk identifier using the chunk-stream mapper; A stream identifier adder for adding the stream identifier to the write command; A line-up device for placing the chunk identifier in the submission queue; And background logic to lift the chunk identifier from the submission queue and update the chunk-stream mapper.

본 발명의 기술적 사상의 실시 예는 컴퓨팅 시스템에서 사용되기 위한 드라이버를 포함하고, 상기 드라이버는 논리 블록 주소(LBA, logical block address)를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 쓰기 명령을 수신하는 수신기; 상기 논리 블록 주고를 청크 식별자(ID, identifier)에 사상하는 논리 블록 주소 사상기; 호스트 컴퓨터 시스템의 메모리에 저장된 청크-스트림 사상기를 이용하여 상기 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직; 상기 스트림 식별자를 상기 쓰기 명령에 추가하는 스트림 식별자 추가기; 상기 청크 식별자를 상기 메모리에 저장된 제출 대기열에 배치하는 줄세움기; 그리고 상기 제출 대기열로부터 상기 청크 식별자를 제거하고 그리고 상기 청크-스트림 사상기를 갱신하는 배경 로직을 포함한다.An embodiment of the inventive concept includes a driver for use in a computing system, wherein the driver is a write command for a solid state drive (SSD) including a logical block address (LBA). A receiver for receiving; A logical block address mapper for mapping the logical block exchange to a chunk identifier (ID); Stream selection logic for selecting a stream identifier based on the chunk identifier using a chunk-stream mapper stored in a memory of the host computer system; A stream identifier adder for adding the stream identifier to the write command; A line-up device for placing the chunk identifier in a submission queue stored in the memory; And background logic to remove the chunk identifier from the submission queue and update the chunk-stream mapper.

본 발명의 기술적 사상의 실시 예는 방법을 포함한다. 상기 방법은 소프트웨어 소스으로부터 쓰기 명령을 수신하는 단계; 상기 쓰기 명령에서 논리 블록 주소(LBA, logical block address)를 판단하는 단계; 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에서 청크에 대한 청크 식별자(ID, identifier)를 식별하는 단계; 상기 청크 식별자에 관련된 스트림 식별자에 접근하는 단계; 상기 스트림 식별자를 상기 쓰기 명령에 할당하는 단계; 상기 할당된 스트림 식별자를 이용하여 상기 솔리드 스테이트 드라이브에서 상기 쓰기 명령을 처리하는 단계; 그리고 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계를 포함한다.An embodiment of the technical idea of the present invention includes a method. The method includes receiving a write command from a software source; Determining a logical block address (LBA) in the write command; Identifying a chunk identifier (ID) for a chunk in a solid state drive (SSD) including the logical block address; Accessing a stream identifier associated with the chunk identifier; Allocating the stream identifier to the write command; Processing the write command in the solid state drive using the allocated stream identifier; And performing a background update of the stream identifier associated with the chunk identifier.

본 발명에 따르면, 순차, 빈도 및 최신을 고려하여 스트림 식별자가 할당된다. 또한, 본 발명에 따르면 액세스 카운트 및 만료 시간을 고려하여 청크에 할당된 스트림 식별자가 조절된다. 따라서, 청크의 액세스 특성을 반영하여 스트림 식별자를 할당하고 관리하는 자동 스트림 검출 및 할당 알고리즘이 제공된다.According to the present invention, a stream identifier is assigned in consideration of the sequence, frequency and latest. Further, according to the present invention, the stream identifier allocated to the chunk is adjusted in consideration of the access count and the expiration time. Accordingly, an automatic stream detection and allocation algorithm that allocates and manages a stream identifier by reflecting the access characteristics of a chunk is provided.

도 1은 본 발명의 기술적 사상의 실시 예에 따른 솔리드 스테이트 드라이브를 갖는 기계를 보여준다.
도 2는 도 1의 기계의 추가적인 상세들을 보여준다.
도 3은 도 1의 솔리드 스테이트 드라이브의 상세들을 보여준다.
도 4는 도 3의 플래시 변환 계층의 상세들을 보여준다.
도 5는 청크 식별자들과 사상되고 이후에 도 1의 솔리드 스테이트 드라이브용 스트림 식별자들과 사상되는 다양한 명령들의 논리 블록 주소들을 보여준다.
도 6은 도 5의 스트림 식별자들을 포함하도록 수정되고 그리고 도 1의 솔리드 스테이트 드라이브로 전송되는 도 5의 다양한 명령들을 보여준다.
도 7은 도 5의 논리 블록 주소들을 도 5의 청크 식별자들과 사상하는 산술 논리부를 보여준다.
도 8은 본 발명의 기술적 사상의 제1 실시 예에 따른, 청크 식별자들을 스트림 식별자들에 사상하는 데에 사용되는 순차, 빈도, 최신 표를 보여준다.
도 9는 본 발명의 기술적 사상의 제1 실시 예에 따른, 도 3의 플래시 변환 계층 및 도 4의 배경 로직의 추가적인 상세들을 보여준다.
도 10은 도 9의 순차 로직의 상세들을 보여준다.
도 11은 도 9의 최신 로직을 이용하여 최신 가중을 계산하는 것을 보여준다.
도 12는 도 9의 액세스 카운트 조절기에서 도 11의 최신 가중을 이용하여 액세스 카운트를 조절하는 것을 보여준다.
도 13은 도 9의 스트림 식별자 조절기를 이용하여 도 12의 조절된 액세스 카운트로부터 스트림 식별자를 계산하는 것을 보여준다.
도 14는 본 발명의 기술적 사상의 제2 실시 예에 따른, 청크 식별자들을 스트림 식별자들과 사상하는 데에 사용될 수 있는 노드를 보여준다.
도 15는 본 발명의 기술적 사상의 제2 실시 예에 따른, 도 4의 배경 로직의 상세들을 보여준다.
도 16은 도 15의 대기열에서 청크 식별자들의 승격 및 격하를 보여준다.
도 17은 도 15의 승격 로직의 상세들을 보여준다.
도 18은 본 발명의 기술적 사상의 제2 실시 예에 따른, 조절된 액세스 카운트로부터 스트림 식별자를 계산하는 것을 보여준다.
도 19는 도 17의 청크 만료 로직의 상세들을 보여준다.
도 20은 도 15의 격하 로직의 상세들을 보여준다.
도 21a 및 도 21b는 본 발명의 기술적 사상의 실시 예에 따른, 도 5의 쓰기 명령에 대한 스트림 식별자를 판단하기 위한 예시적인 절차의 순서도를 보여준다.
도 22는 본 발명의 기술적 사상의 실시 예에 따른, 도 5의 논리 블록 주소들을 도 5의 청크 식별자들과 사상하는 논리 블록 주소 사상기에 대한 예시적인 절차의 순서도를 보여준다.
도 23a 및 도 23b는 본 발명의 기술적 사상의 제1 실시 예에 따른, 순차 로직을 이용하여 청크에 대한 스트림 식별자를 갱신하기 위한 예시적인 절차의 순서도를 보여준다.
도 24는 본 발명의 기술적 사상의 제1 실시 예에 따른, 도 8의 SFR 표의 배경 갱신을 수행하기 위한 예시적인 절차의 순서도를 보여준다.
도 25a 내지 도 25c는 본 발명의 기술적 사상의 제2 실시 예에 따른, 도 14의 노드의 배경 갱신을 수행하기 위한 예시적인 절차의 순서도를 보여준다.
1 shows a machine having a solid state drive according to an embodiment of the inventive concept.
FIG. 2 shows additional details of the machine of FIG. 1.
3 shows details of the solid state drive of FIG. 1.
4 shows details of the flash transformation layer of FIG. 3.
FIG. 5 shows the logical block addresses of various instructions mapped with chunk identifiers and later mapped with the stream identifiers for the solid state drive of FIG. 1.
6 shows the various commands of FIG. 5 modified to include the stream identifiers of FIG. 5 and transmitted to the solid state drive of FIG. 1.
FIG. 7 shows an arithmetic logic unit that maps the logical block addresses of FIG. 5 with the chunk identifiers of FIG. 5.
8 shows a sequence, frequency, and latest table used to map chunk identifiers to stream identifiers according to a first embodiment of the technical idea of the present invention.
9 shows additional details of the flash transformation layer of FIG. 3 and the background logic of FIG. 4 according to a first embodiment of the inventive concept.
10 shows details of the sequential logic of FIG. 9.
Figure 11 shows the calculation of the latest weighting using the latest logic of FIG. 9.
FIG. 12 shows that the access count adjuster of FIG. 9 adjusts the access count using the latest weighting of FIG. 11.
FIG. 13 shows the calculation of a stream identifier from the adjusted access count of FIG. 12 using the stream identifier adjuster of FIG. 9.
14 shows a node that can be used to map chunk identifiers with stream identifiers according to a second embodiment of the inventive concept.
15 shows details of the background logic of FIG. 4 according to a second embodiment of the inventive concept.
16 shows promotion and demotion of chunk identifiers in the queue of FIG. 15.
17 shows details of the promotion logic of FIG. 15.
18 is a view illustrating calculating a stream identifier from an adjusted access count according to a second embodiment of the inventive concept.
19 shows details of the chunk expiration logic of FIG. 17.
20 shows details of the downgrade logic of FIG. 15.
21A and 21B are flowcharts of exemplary procedures for determining a stream identifier for a write command of FIG. 5 according to an embodiment of the inventive concept.
22 is a flowchart of an exemplary procedure for a logical block address mapper for mapping logical block addresses of FIG. 5 with chunk identifiers of FIG. 5 according to an embodiment of the inventive concept.
23A and 23B are flowcharts of an exemplary procedure for updating a stream identifier for a chunk using sequential logic according to a first embodiment of the inventive concept.
FIG. 24 is a flowchart of an exemplary procedure for performing a background update of the SFR table of FIG. 8 according to a first embodiment of the inventive concept.
25A to 25C are flowcharts of exemplary procedures for performing a background update of a node of FIG. 14 according to a second embodiment of the inventive concept.

본 발명의 실시 예들이 첨부된 도면들을 참조하여 설명된다. 다음의 상세한 설명에서, 본 발명의 철저한 이해를 위해 많은 구체적인 상세들이 제시된다. 그러나 본 발명은 이러한 구체적인 상세들 없이도 이 분야에 통상적인 기술을 가진 자들에 의해 실시될 수 있음이 이해될 것이다. 다시 말하면, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들을 불필요하게 모호하게 하지 않도록 설명되지 않는다.Embodiments of the present invention will be described with reference to the accompanying drawings. In the detailed description that follows, many specific details are set forth for a thorough understanding of the invention. However, it will be understood that the present invention may be practiced by those skilled in the art without these specific details. In other words, well-known methods, procedures, components, circuits, and networks have not been described so as not to unnecessarily obscure the embodiments.

제1, 제2 등의 용어들이 다양한 구성 요소들을 설명하기 위하여 사용되지만, 구성 요소들은 이 용어들에 의해 한정되지 않음이 이해될 것이다. 이러한 용어들은 구성 요소들을 서로 구분하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상으로부터 괴리되지 않으면서, 제1 모듈은 제2 모듈로 명명될 수 있으며, 마찬가지로 제1 모듈은 제2 모듈로 명명될 수 있다.Although terms such as first and second are used to describe various constituent elements, it will be understood that constituent elements are not limited by these terms. These terms are only used to distinguish components from each other. For example, without deviating from the technical idea of the present invention, a first module may be referred to as a second module, and similarly, a first module may be referred to as a second module.

본 발명의 기술적 사상의 설명에서 사용되는 용어들은 구체적인 실시 예들을 설명하기 위한 것이며, 본 발명의 기술적 사상을 제한하는 것을 의도하지 않는다. 여기에서 사용되는 "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 아이템들 중 어느 것 또는 모든 가용한 조합을 참조함이 이해될 것이다. "포함한다" 그리고/또는 "포함하는"의 용어들은 언급된 특성들, 정수들, 단계들, 동작들, 그리고/또는 구성 요소들의 존재를 설명하며, 하나 또는 그보다 많은 특성들, 정수들, 단계들, 동작들, 구성 요소들, 그리고/또는 이들의 조합들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 스케일에 맞게 도시되지는 않는다.Terms used in the description of the technical idea of the present invention are for describing specific embodiments, and are not intended to limit the technical idea of the present invention. It will be understood that the term "and/or" as used herein refers to any or all possible combinations of one or more related items. The terms "comprising" and/or "comprising" describe the presence of the recited features, integers, steps, actions, and/or components, and one or more of the features, integers, and steps. Does not exclude the presence or addition of elements, actions, components, and/or combinations thereof. Components and characteristics of the drawings are not drawn to scale.

응용 계층과 독립적으로 자동 스트림 검출 및 할당을 수행하기 위한 장치 및 방법이 제안된다. 스트림 할당은 실시간 작업량(workload) 검출에 기반하고, 응용(들)에 독립적일 수 있다. 스트림 할당은 다중-스트림 에서 이용 가능한 솔리드 스테이트 드라이브들(SSDs, Solid State Drives)에 적용될 수 있다.]An apparatus and method for performing automatic stream detection and allocation independently of an application layer are proposed. Stream allocation is based on real-time workload detection and can be independent of application(s). Stream allocation can be applied to solid state drives (SSDs) available in multi-streams.]

스트림 할당 프로토콜의 구현은 몇 가지 장점들을 갖는다. 첫째로, 응용들은 전혀 수정될 필요가 없다. 그러나 그들 자신의 스트림 우선순위를 할당하는 응용들이 이 시도에서 고려된다. 예를 들어, 스트림 할당 프로토콜은 응용-할당 스트림 우선순위에 전적으로 따른다. 또는, 스트림 할당 프로토콜은 임의의 필요한 가중치들을 이용하여, 응용-할당 스트림 우선순위 및 계산된 스트림 할당을 조합하는 가중 합을 수행할 수 있다. 둘째로, 다중-스트림 에서 이용 가능한 장치들을 사용하지 않는 임의의 응용은 자동 스트림 검출 및 할당을 이용할 수 있다. 셋째로, 응용들은 하드웨어로부터 스트림-연관 정보를 알 필요가 없다. 넷째로, 스트림 할당 프로토콜은 각 다중-스트림-활성 솔리드 스테이트 드라이브를 별도로 관리하여, 응용들이 다중 솔리드 스테이트 드라이브들을 사용할 수 있게 하고, 그리고 다중-스트림-활성 및 비-다중-스트림-활성 솔리드 스테이트 드라이브들을 혼합하는 것도 할 수 있게 한다. 다섯째로, 스트림 할당은 쓰기 명령의 시작 주소(혹은 파일 오프셋, 스트림 할당 프로토콜이 파일 시스템 계층에서 구현된다면)가 식별될 수 있으면, 파일 시스템에서, 블록 계층에서, 장치 드라이버에서, 솔리드 스테이트 드라이브 내부에서(예를 들어, 플래시 변환 계층에서) 등과 같은 시스템의 임의의 필요한 계층에서 수행될 수 있다.Implementation of the stream allocation protocol has several advantages. First, the applications do not need to be modified at all. However, applications that assign their own stream priorities are considered in this attempt. For example, the stream allocation protocol is entirely dependent on application-allocation stream priority. Alternatively, the stream allocation protocol may perform a weighted sum combining the application-allocation stream priority and the calculated stream allocation using any necessary weights. Second, any application that does not use devices available in multi-stream can use automatic stream detection and allocation. Third, applications do not need to know the stream-associated information from the hardware. Fourth, the stream allocation protocol manages each multi-stream-active solid state drive separately, allowing applications to use multiple solid state drives, and multi-stream-active and non-multi-stream-active solid state drives. It also makes it possible to mix them. Fifth, stream allocation is done in the file system, in the block layer, in the device driver, inside the solid state drive, if the start address of the write command (or file offset, if the stream allocation protocol is implemented in the file system layer) can be identified. It can be performed in any required layer of the system, such as (eg, in the flash conversion layer).

솔리드 스테이트 드라이브들의 전체 주소 공간은 다수의 고정 사이즈 청크들(chunks)로 분할될 수 있다. 이 청크 사이즈는 임의의 필요한 사이즈일 수 있으며, 예를 들어, 512-바이트 섹터의 배수일 수 있다. 요청의 시작 논리 블록 주소(LBA)는 논리 블록 주소를 청크 당 섹터들의 수로 나눔으로써, 더 일반적으로는 청크 사이즈로 나눔으로써, 청크 식별자(ID)로 변환될 수 있다.The total address space of solid state drives can be divided into a number of fixed size chunks. This chunk size can be any desired size, for example a multiple of 512-byte sectors. The starting logical block address (LBA) of the request can be converted to a chunk identifier (ID) by dividing the logical block address by the number of sectors per chunk, more generally by the chunk size.

본 발명의 기술적 사상의 제1 실시 예에서, 순차, 빈도, 그리고 최신(SFR)(Sequential, Frequency, Recency) 접근이 스트림 할당을 판단하는 데에 사용될 수 있다.In the first embodiment of the technical idea of the present invention, sequential, frequency, and sequential, frequency, and recency (SFR) approaches may be used to determine stream allocation.

● 순차: 새로운 요청의 시작 논리 블록 주소가 이전 요청들의 끝 논리 블록 주소에 인접하면(즉, 쓰기 명령들이 순차 쓰기들과 연관되면), 제2 쓰기 명령은 이전 쓰기 명령과 동일한 스트림 식별자에 할당될 수 있다. 이 접근은 순차 요청들의 그룹이 짧은 기간 내에 발행(issue)되면 유사한 수명을 갖는 것으로 추정한다. 쓰기 명령들이 서로 다른 소스들(응용들, 파일 시스템들, 가상 기계들, 등)에 의해 실행(issue)될 수 있고, 혼합될 수 있으므로, 솔리드 스테이트 드라이브의 관점으로부터 쓰기 명령들은 엄격한 순차 패턴을 따르지 않을 수 있다. 이 가능성을 처리하기 위해, 순차는 윈도(사이즈는 가변될 수 있음) 내의 이전 명령들의 개수와 연관되어 판단될 수 있다. 예를 들어, 4의 윈도 사이즈는 입력되는 요청이 이전 네 요청들 중 어느 것과 순차적인지 판단할 것이다.● Sequential: If the starting logical block address of the new request is adjacent to the ending logical block address of the previous requests (i.e., if write commands are associated with sequential writes), then the second write command will be assigned the same stream identifier as the previous write command. I can. This approach assumes that a group of sequential requests will have a similar lifetime if issued within a short period of time. Since write commands can be issued by different sources (applications, file systems, virtual machines, etc.) and can be mixed, write commands from a solid state drive's point of view do not follow a strict sequential pattern. May not. To handle this possibility, the sequence can be determined in association with the number of previous instructions in the window (the size can vary). For example, a window size of 4 will determine whether the incoming request is sequential with which of the previous four requests.

● 빈도: 빈도는 시작 논리 블록 주소가 액세스되는 횟수들을 가리킨다. 빈도는 액세스 카운트들로 측정될 수 있다. 청크가 액세스(쓰기)될 때마다, 해당 청크에 대한 액세스 카운트는 1만큼 증가된다. 더 높은 액세스 카운트들은 해당 청크에 대한 더 짧은 수명을 가리킨다. 따라서 빈도는 데이터 청크의 온도를 반영한다.● Frequency: The frequency refers to the number of times the starting logical block address is accessed. The frequency can be measured in access counts. Each time a chunk is accessed (written), the access count for that chunk is incremented by one. Higher access counts indicate a shorter lifetime for that chunk. Thus, the frequency reflects the temperature of the data chunk.

● 최신: 최신은 데이터 청크들의 잠정 구역성(temporal locality)을 가리킨다. 예를 들어, 하나의 청크는 특정한 기간 동안에 더 빈번하게 액세스되고 높은 액세스 카운트를 누적하지만, 이후에 사용되지 않을 수 있다. 이 상황에서, 해당 청크를 장기간 핫 스트림에 유지할 필요가 없다. 청크는 가장 최근 기간내에 빈번하게 엑세스 되어야만 핫(hot)으로 간주된다. 본 발명의 기술적 사상의 일 실시 예에서, 쇠퇴 기간은 모든 청크들에 대해 미리 정의될 수 있다. 청크가 마지막 N 쇠퇴 기간들 내에 액세스되지 않으면, 액세스 카운트는 2N으로 나뉠 수 있다.• Latest: Latest refers to the temporary locality of data chunks. For example, one chunk is accessed more frequently during a certain period of time and accumulates a high access count, but may not be used afterward. In this situation, there is no need to keep the chunk in the hot stream for a long period of time. Chunks are considered hot only if they are accessed frequently within the most recent period. In an embodiment of the inventive concept, the decay period may be predefined for all chunks. If the chunk is not accessed within the last N decay periods, the access count can be divided by 2N.

청크에 대한 스트림 식별자는 빈도 및 최신(그리고 적용 가능하면, 순차) 모두에 의해 판단될 수 있다. 청크가 빈번하게 액세스될 때에 빈도는 청크를 더 뜨거운 스트림으로 승격(promote)하고, 반면에 청크가 마지막 쇠퇴 기간 동안 사용되지 않으면 최신은 해당 청크를 더 차가운 스트림으로 격하(demote)한다. 본 발명의 기술적 사상의 일 실시 예에서, 액세스 카운트를 스트림 식별자로 변환하는 데에 로그 스케일(log scale)이 사용될 수 있으며, 이는 장치 스트림들의 수가 액세스 카운트들에 대한 값들의 범위보다 훨씬 작은 사실을 반영할 수 있다. 따라서, 예를 들어:The stream identifier for the chunk can be determined by both frequency and latest (and sequential, if applicable). When chunks are accessed frequently, the frequency promotes the chunk to a hotter stream, while the latest demotes that chunk to a cooler stream if the chunk is not used during the last decay period. In an embodiment of the inventive concept, a log scale may be used to convert the access count into a stream identifier, which indicates that the number of device streams is much smaller than the range of values for the access counts. Can be reflected. So, for example:

최신 가중 = 2(( 현재 시간 - 마지막 액세스 시간) / (쇠퇴 기간), Latest weight = 2 (( current time -last access time) / (decay period),

스트림 식별자 = log(액세스 카운트 / 최신 가중)Stream identifier = log (access count / latest weight)

청크에 대한 스트림 식별자의 갱신은 배경 작업들로서 실행되어 입력/출력(I/O) 성능에 대한 영향을 최소화할 수 있다.The update of the stream identifier for the chunk can be performed as background tasks to minimize the impact on input/output (I/O) performance.

본 발명의 기술적 사상의 제2 실시 예에서, 다중-대기열(multi-queue) 접근이 사용될 수 있다. 각 장치 스트림에 대해, 대기열이 정의될 수 있다. 다중 장치 스트림들이 존재하므로, 다중 대기열들이 존재할 수 있다. 다중-대기열 알고리즘은 두 개의 서로 다른 기능적 모듈들로 분할될 수 있다. 하나의 모듈은 각 청크를 더 낮은 대기열로부터 더 높은 대기열로 승격하는 것을 처리하고, 다른 모듈은 덜 사용하거나 또는 사용하지 않는 청크들의 더 높은 대기열로부터 더 낮은 대기열로의 격하를 처리한다. 청크의 액세스 카운트가 높을수록 청크는 더 뜨거운 것으로 여겨지고, 따라서 해당 청크는 더 높은 대기열에 배치된다. 승격 및 격하 모두는 배경 작업들로 실행되어, I/O 성능에의 영향을 최소화할 수 있다.In the second embodiment of the inventive concept, a multi-queue approach may be used. For each device stream, a queue can be defined. Since there are multiple device streams, multiple queues may exist. The multi-queue algorithm can be divided into two different functional modules. One module handles the promotion of each chunk from a lower queue to a higher queue, and the other module handles the demotion of less used or unused chunks from a higher queue to a lower queue. The higher the access count of a chunk, the hotter the chunk is considered to be, so that chunk is placed in a higher queue. Both promotion and demotion can be performed as background tasks, minimizing the impact on I/O performance.

청크가 처음 액세스될 때, 청크는 스트림 0 (제일 낮은 스트림)에 할당되고, 대응하는 대기열에 배치된다. 그렇지 않으면, 청크는 현재 대기열로부터 제거되고, 청크의 액세스 카운트가 갱신되고, 그리고 청크는 새로운 대기열(잠재적으로)에 배치된다. 액세스 카운트에 기반하여 적절한 대기열을 판단하는 임의의 시도가 사용될 수 있다. 예를 들어, 액세스 카운트의 로그(log)가 새로운 스트림 식별자(대응하는 대기열을 식별하는)로 계산될 수 있다. 승격 모듈은 또한 (액세스 카운트에 기반하여) 청크가 현재 가장 뜨거운 청크인지 확인 할 수 있다. 청크가 현재 가장 뜨거운 청크이면, 장치 수명은 이 청크의 액세스들 사이의 간격에 기반하여 설정될 수 있다. 끝으로, 승격 로직은 장치 수명 및 청크의 마지막 액세스 시간에 기반하여 청크의 만료 시간을 판단할 수 있다.When a chunk is first accessed, it is assigned to stream 0 (lowest stream) and placed in the corresponding queue. Otherwise, the chunk is removed from the current queue, the access count of the chunk is updated, and the chunk is placed in a new queue (potentially). Any attempt can be used to determine an appropriate queue based on the access count. For example, the log of the access count can be calculated with the new stream identifier (identifying the corresponding queue). The promote module can also check if the chunk is currently the hottest chunk (based on the access count). If the chunk is currently the hottest chunk, the device lifetime can be set based on the interval between accesses of this chunk. Finally, the promotion logic can determine the expiration time of the chunk based on the device lifetime and the last access time of the chunk.

청크를 격하하기 위해, 격하 모듈은 청크들이 대기열의 맨앞(head)에 도달하는지 검사할 수 있다. 청크가 아직 만료 시간을 지나지 않았으면, 청크는 홀로 남겨질 수 있다. 그렇지 않으면, 청크는 현재 대기열로부터 제거되고, 새로운 만료 시간을 할당받고, 더 낮은 대기열로 격하(즉, 더 낮은 스트림 식별자를 할당받음)될 수 있다.To demote a chunk, the demote module can check if the chunks reach the head of the queue. If the chunk has not yet passed its expiration time, the chunk can be left alone. Otherwise, the chunk may be removed from the current queue, assigned a new expiration time, and demoted to a lower queue (ie, assigned a lower stream identifier).

추가적으로, 격하되는 청크가 가장 뜨거운 청크였으면, 해당 청크는 (만료 시간으로 판단됨에 따라) 잠시 액세스되지 않았다(. 따라서, 해당 청크는 더 이상 뜨겁지 않고, 해당 대기열로부터의 다른 하나의 청크가 가장 뜨거운 청크로 선택될 수 있다(장치 수명에 대한 적절한 파생 결과를 갖고). 새롭게 선택된 가장 뜨거운 청크는 해당 대기열에서 다음 청크일 수 있고, 또는 해당 대기열에 진입한 마지막 청크일 수 있다.Additionally, if the chunk being degraded was the hottest chunk, that chunk was not accessed for a while (as judged by the expiration time) (so that chunk is no longer hot, and another chunk from that queue is the hottest chunk). Can be selected (with an appropriate derivation of the device lifetime), the newly selected hottest chunk may be the next chunk in that queue, or the last chunk that entered that queue.

도 1은 본 발명의 기술적 사상의 실시 예에 따른 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 갖는 기계를 보여준다. 도 1에서, 기계(105)가 도시된다. 기계(105)는 제한 없이 데스크탑 또는 랩탑 컴퓨터, 서버(스탠드얼론 서버 또는 랙 서버), 또는 본 발명의 기술적 사상의 실시 예로부터 이익을 얻을 수 있는 임의의 다른 장치를 포함하는 임의의 필요한 기계일 수 있다. 기계(105)는 또한 전문화된 포터블 컴퓨터 장치들, 태블릿 컴퓨터들, 스마트폰들, 그리고 다른 컴퓨팅 장치들을 포함할 수 있다. 기계(105)는 임의의 필요한 응용들을 실행할 수 있다. 데이터베이스 응용들은 좋은 예일 수 있다. 그러나 본 발명의 기술적 사상의 실시 예들은 임의의 필요한 응용으로 확장될 수 있다.1 shows a machine having a solid state drive (SSD) according to an embodiment of the inventive concept. In FIG. 1, a machine 105 is shown. Machine 105 may be any necessary machine including, without limitation, a desktop or laptop computer, a server (standalone server or rack server), or any other device that may benefit from embodiments of the inventive concept. have. Machine 105 may also include specialized portable computer devices, tablet computers, smartphones, and other computing devices. Machine 105 can execute any necessary applications. Database applications can be good examples. However, embodiments of the technical idea of the present invention can be extended to any necessary application.

특정한 형태에 관계없이, 기계(105)는 프로세서(110), 메모리(115), 그리고 솔리드 스테이트 드라이브(SSD)(120)를 포함할 수 있다. 프로세서(110)는 임의의 다양한 프로세서, 예를 들어 인텔 제온(Intel Xeon), 이터니움(Itanium), 또는 아톰(Atom) 프로세서, AMD 옵테론(Opteron) 프로세서, ARM 프로세서 등일 수 있다. 도 1은 단일 프로세서를 보여주지만, 기계(105)는 임의의 수의 프로세서들을 포함할 수 있다. 메모리(115)는 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM, Static Random Access Memory), 지속성 랜덤 액세스 메모리(Persistent Random Access Memory), 강유전체 랜덤 액세스 메모리(FRAM, Ferroelectric Random Access Memory), 또는 자기저항 랜덤 액세스 메모리(MRAM, Magnetoresistive Random Access Memory) 등과 같은 불휘발성 랜덤 액세스 메모리(NVRAM, Non-Volatile Random Access Memory)와 같은 임의의 다양한 메모리일 수 있으며, 통상적으로 DRAM 이다. 메모리(115)는 또한 서로 다른 메모리 타입들의 임의의 필요한 조합일 수 있다. 메모리(115)는 또한 기계(105)의 일부인 메모리 제어기(125)에 의해 제어될 수 있다.Regardless of the particular form, the machine 105 may include a processor 110, a memory 115, and a solid state drive (SSD) 120. The processor 110 may be any of a variety of processors, for example, an Intel Xeon, Itanium, or Atom processor, an AMD Opteron processor, an ARM processor, and the like. 1 shows a single processor, machine 105 may include any number of processors. The memory 115 may be a flash memory, a static random access memory (SRAM), a persistent random access memory, a ferroelectric random access memory (FRAM), or a magnetoresistive random access memory. Memory (MRAM, Magnetoresistive Random Access Memory), such as non-volatile random access memory (NVRAM, Non-Volatile Random Access Memory) can be any of a variety of memory, such as, typically DRAM. Memory 115 may also be any desired combination of different memory types. The memory 115 may also be controlled by a memory controller 125 that is part of the machine 105.

솔리드 스테이트 드라이브(120)는 임의의 다양한 솔리드 스테이트 드라이브일 수 있으며, 가비지 컬렉션을 수행하는(플래시 메모리를 이용하지 않을 때라도) 다른 타입들의 저장소를 포함하도록 확장될 수 있다. 솔리드 스테이트 드라이브(120)는 메모리(115) 내에 존재하는 장치 드라이버(130)에 의해 제어될 수 있다.Solid state drive 120 may be any of a variety of solid state drives and may be expanded to include other types of storage that perform garbage collection (even when not using flash memory). The solid state drive 120 may be controlled by the device driver 130 present in the memory 115.

도 2는 도 1의 기계(105)의 추가적인 상세들을 보여준다. 도 2를 참조하면, 통상적으로, 기계(105)는 메모리 제어기(125) 및 클럭(205)을 포함하고, 그리고 기계(105)의 구성 요소들의 동작들을 조정하는 데에 사용되는 하나 또는 그보다 많은 프로세서들(110)을 포함한다. 프로세서들(110)은 또한 예시적으로 랜덤 액세스 메모리(RAM), 읽기-전용 메모리(ROM, read-only memory), 또는 다른 상태 저장 매체를 포함할 수 있는 메모리(115)와 결합될 수 있다. 프로세서들(110)은 또한 솔리드 스테이트 드라이브들(120), 그리고 예를 들어 이더넷 커넥터 또는 무선 커넥터일 수 있는 네트워크 커넥터(210)와 결합될 수 있다. 프로세서들(110)은 또한 다른 구성 요소들 중에서 사용자 인터페이스(220)에 부착될 수 있고 그리고 입력/출력 엔진(225)을 이용하여 관리될 수 있는 입력/출력 인터페이스 포트들에 부착될 수 있는 버스(215)에 연결될 수 있다.2 shows additional details of the machine 105 of FIG. 1. 2, typically, machine 105 includes a memory controller 125 and a clock 205, and one or more processors used to coordinate the operations of the components of machine 105. Includes 110. Processors 110 may also be coupled with memory 115, which may include, for example, random access memory (RAM), read-only memory (ROM), or other state storage medium. Processors 110 may also be coupled with solid state drives 120 and a network connector 210, which may be, for example, an Ethernet connector or a wireless connector. The processors 110 can also be attached to the user interface 220, among other components, and a bus that can be attached to input/output interface ports that can be managed using the input/output engine 225. 215).

도 3은 도 1의 솔리드 스테이트 드라이브(120)의 상세들을 보여준다. 도 3에서, 솔리드 스테이트 드라이브(120)는 호스트 인터페이스 로직(305), 솔리드 스테이트 드라이브 제어기(310), 그리고 다양한 채널들(320-1~320-4)로 조직화되는 다양한 플래시 메모리 칩들(315-1~315-8)을 포함할 수 있다. 호스트 인터페이스 로직(305)은 솔리드 스테이트 드라이브(120) 및 도 1의 기계(105) 사이의 통신들을 관리할 수 있다. 솔리드 스테이트 드라이브 제어기(310)는 플래시 메모리 칩들(315-1~315-8)에서 가비지 컬렉션 동작들과 함께 읽기 및 쓰기 동작들을 관리할 수 있다. 솔리드 스테이트 드라이브 제어기(310)는 이 관리 중 일부를 수행하는 플래시 변환 계층(325)을 포함할 수 있다. 스트림들에 쓰기 명령들을 할당하는 데에 책임이 있는 솔리드 스테이트 드라이브(120)를 갖는 본 발명의 기술적 사상의 실시 예들에서, 솔리드 스테이트 드라이브 제어기(310)는 스트림 할당을 지원하는 저장소(330)를 포함할 수 있다. 저장소(330)는 제출 대기열(submission queue) 및 청크-스트림 사상기(340)를 포함할 수 있다. 제출 대기열(335)은 다양한 쓰기 명령들에 의해 영향을 받는 청크들에 대한 정보를 저장하는 데에 사용될 수 있다. 쓰기 명령들이 수신됨에 따라, 그러한 쓰기 명령들과 연관된 청크들(또는 이보다는 이러한 청크들의 식별자들(IDs)이 제출 대기열(335)에 배치될 수 있다. 이후에, (전면 동작들에 대한 영향을 줄이기 위해) 배경 프로세스 의 일부로서, 청크들은 제출 대기열(335)로부터 제거되고, 그리고 이러한 청크들에 대한 스트림 할당이 갱신될 수 있다. 청크-스트림 사상기(340)는 어떤 스트림들이 다양한 청크들에 현재 할당되어 있는지에 대한 정보를 저장할 수 있다. 이 정보는 제출 대기열(335)에서 청크 식별자들의 결과로서(또는 제출 대기열(335)에서 청크 식별자들의 부족의 결과로서)(사용되지 않는 청크들은 비사용의 결과로서 더 낮은 우선순위 스트림들에 할당될 수 있다) 갱신될 수 있다. 청크들의 개념은 아래에서 도 5 및 도 7을 참조하여 더 논의된다.3 shows details of the solid state drive 120 of FIG. 1. In FIG. 3, the solid state drive 120 includes a host interface logic 305, a solid state drive controller 310, and various flash memory chips 315-1 organized into various channels 320-1 to 320-4. ~315-8). Host interface logic 305 may manage communications between solid state drive 120 and machine 105 of FIG. 1. The solid state drive controller 310 may manage read and write operations along with garbage collection operations in the flash memory chips 315-1 to 315-8. The solid state drive controller 310 may include a flash translation layer 325 that performs some of this management. In embodiments of the inventive concept having a solid state drive 120 responsible for assigning write commands to streams, the solid state drive controller 310 includes a storage 330 that supports stream allocation. can do. Repository 330 may include a submission queue and a chunk-stream mapper 340. The submission queue 335 may be used to store information about chunks affected by various write commands. As write commands are received, chunks (or rather identifiers (IDs) of these chunks) associated with those write commands may be placed in the submission queue 335. Thereafter, (affects front operations) To reduce), as part of the background process, chunks are removed from the submission queue 335, and the stream assignment for these chunks can be updated. The chunk-stream mapper 340 allows some streams to be assigned to various chunks. It is possible to store information about whether it is currently allocated, as a result of chunk identifiers in the submission queue 335 (or as a result of a lack of chunk identifiers in the submission queue 335) (unused chunks are unused). May be assigned to lower priority streams as a result of the) The concept of chunks is further discussed with reference to Figs. 5 and 7 below.

도 3에서 솔리드 스테이트 드라이브(120)가 네 개의 채널들(320-1~320-4)로 조직화된 여덟 개의 플래시 메모리 칩들(315-1~315-8)을 포함하는 것으로 도시되지만, 본 발명의 기술적 사상의 실시 예들은 임의의 수의 채널들로 조직화된 임의의 수의 플래시 메모리 칩들을 지원할 수 있다.In FIG. 3, the solid state drive 120 is shown to include eight flash memory chips 315-1 to 315-8 organized into four channels 320-1 to 320-4. Embodiments of the technical idea may support any number of flash memory chips organized into any number of channels.

도 4는 도 3의 플래시 변환 계층(325)의 상세들을 보여준다. 도 4에서, 플래시 변환 계층(325)은 수신기(405), 논리 블록 주소(LBA, Logical Block Address) 사상기(410), 스트림 선택 로직(415), 스트림 식별자 추가기(420), 송신기(425), 줄세움기(queuer)(430), 그리고 배경 로직(435)을 포함하는 것으로 도시된다. 수신기(405)는 운영 체제들, 응용들, 파일 시스템들, 원격 기계들, 그리고 다른 이러한 소스들과 같은 다양한 소프트웨어 소스들로부터 쓰기 명령들을 수신할 수 있다. 주어진 쓰기 명령에 대해, 논리 블록 주소 사상기(410)는 쓰기 명령에서 사용되는 논리 블록 주소를 도 1의 솔리드 스테이트 드라이브(120)의 특정한 청크에 사상할 수 있다. 스트림 선택 로직(415)은 이후에 해당 청크에 적합한 스트림을 선택할 수 있다. 스트림 선택 로직(415)은 도 3의 청크-스트림 사상기(340)를 이용하여 이 스트림 선택을 달성할 수 있고, 도 3의 청크-스트림 사상기(340)를 검색하여 선택된 청크에 대응하는 엔트리(entry)를 찾는 로직을 포함할 수 있다. 그렇지 않으면, 스트림 선택 로직(415)은, 예를 들어 청크에 대한 액세스 카운트로부터 스트림 식별자를 계산함으로써(아래에서 도 13을 참조하여 설명되는 것과 유사하게) 또는 라운드 로빈 접근에서 스트림들을 할당함으로써(쓰기 명령들을 모든 장치 스트림들에 걸쳐 균등하게 배분하는) 다른 접근들을 사용할 수 있다. 스트림 식별자 추가기(420)는 데이터를 쓰기 명령에 기입하는 로직을 이용하여, 선택된 스트림 식별자를 쓰기 명령에 추가할 수 있다. 스트림 식별자가 쓰기 명령에 부착되면, 송신기(425)는 쓰기 명령을(부착된 스트림 식별자와 함께) 실행을 위해 도 1의 솔리드 스테이트 드라이브(120)를 향해 전송할 수 있다.4 shows details of the flash transform layer 325 of FIG. 3. In FIG. 4, the flash conversion layer 325 includes a receiver 405, a logical block address (LBA) mapper 410, a stream selection logic 415, a stream identifier adder 420, and a transmitter 425. ), a queue 430, and background logic 435. Receiver 405 may receive write commands from various software sources such as operating systems, applications, file systems, remote machines, and other such sources. For a given write command, the logical block address mapper 410 may map the logical block address used in the write command to a specific chunk of the solid state drive 120 of FIG. 1. The stream selection logic 415 may later select a stream suitable for the corresponding chunk. The stream selection logic 415 can achieve this stream selection using the chunk-stream mapper 340 of FIG. 3, and searches for the chunk-stream mapper 340 of FIG. 3 to obtain an entry corresponding to the selected chunk. You can include logic to find (entry). Otherwise, the stream selection logic 415 may, for example, calculate the stream identifier from the access count for the chunk (similar to that described with reference to Figure 13 below) or by allocating streams in a round robin access (write Other approaches can be used, distributing instructions evenly across all device streams. The stream identifier adder 420 may add the selected stream identifier to the write command by using logic for writing data to the write command. When the stream identifier is attached to the write command, the transmitter 425 may transmit the write command (along with the attached stream identifier) to the solid state drive 120 of FIG. 1 for execution.

줄세움기(430)는 쓰기 명령에 대해 식별된 청크 식별자를 갖고, 그리고 청크 식별자를 도 3의 제출 대기열(335)에 추가할 수 있다. 줄세움기(430)는 청크 식별자를 도 3의 제출 대기열(335)에 추가하는 로직을 사용할 수 있다. 예를 들어, 줄세움기(430)는 도 3의 제출 대기열(335)의 꼬리(tail)에 대한 포인터(pointer)를 포함하고, 청크 식별자를 도 3의 제출 대기열(335)의 꼬리에 기입할 수 있다. 이후에, 도 3의 제출 대기열(335)의 꼬리에 대한 포인터는 도 3의 제출 대기열(335)의 다음 슬롯을 가리키도록 갱신될 수 있다. 결국, 청크 식별자는 도 3의 제출 대기열(335)로부터 해제될 것이고, 이후에 배경 로직(435)은 해제된 청크 식별자에서 동작할 수 있다. 배경 로직(435)은 아래에서 도 9 및 도 15를 참조하여 더 논의된다.The line up 430 may have the chunk identifier identified for the write command, and add the chunk identifier to the submission queue 335 of FIG. 3. The line up 430 may use logic to add the chunk identifier to the submission queue 335 of FIG. 3. For example, the line up 430 includes a pointer to the tail of the submission queue 335 of FIG. 3, and writes the chunk identifier to the tail of the submission queue 335 of FIG. I can. Thereafter, the pointer to the tail of the submission queue 335 of FIG. 3 may be updated to point to the next slot of the submission queue 335 of FIG. 3. Eventually, the chunk identifier will be released from the submission queue 335 of FIG. 3, after which background logic 435 may operate on the released chunk identifier. Background logic 435 is further discussed with reference to FIGS. 9 and 15 below.

배경 로직(435)은 임의의 원하는 방법으로 구현될 수 있다. 예를 들어, 배경 로직(435)은 청크가 액세스될 때마다 스트림 식별자를 증가시키는 것과 같이 단순하게 동작할 수 있다(이는 청크 식별자들 및 스트림 식별자들을 저장하는 데이터 구조에서 검색을 수행하는 로직 및 이 방법에 위치한 스트림 식별자를 증가시키는 증가기(Incrementer)에 불과한 것들을 포함한다). 그러나 이러한 단순한 구현은 결국 모든 청크가 가장 높은 번호가 붙은 스트림을 사용하고 더 낮은 번호가 붙은 스트림들은 사용되지 않음을 의미한다. 더 연관된 구현들은 청크가 많이 사용되지 않는지를 고려하고 부합하도록 청크의 스트림 우선순위를 낮출 수 있다. 이 결과를 달성하기 위해 배경 로직(435)을 서로 다른 방법들로 구현하는 본 발명의 기술적 사상의 두개의 실시 예들이 도 8 내지 도 13과 도 14 내지 도 20을 참조하여 아래에 설명된다.Background logic 435 can be implemented in any desired way. For example, the background logic 435 may operate as simple as incrementing the stream identifier each time the chunk is accessed (this is the logic that performs a search in the data structure storing chunk identifiers and stream identifiers, and Including nothing more than an incrementer that increments the stream identifier located in the method). However, this simple implementation eventually means that all chunks will use the highest numbered stream and the lower numbered streams will not be used. More relevant implementations can consider if the chunk is not heavily used and lower the stream priority of the chunk to match. Two embodiments of the technical idea of the present invention implementing the background logic 435 in different ways to achieve this result will be described below with reference to FIGS. 8 to 13 and FIGS. 14 to 20.

배경 로직(435)은 배경에서 동작(이에 따른 이름)하는 것으로 설명되지만, 배경에서 스트림 할당 갱신들을 수행하는 것은 도 1의 솔리드 스테이트 드라이브(120)에 대한 읽기들 및 쓰기들에 대한 영향을 최소화하는 데 편리하다. 스트림 할당들이 도 1의 솔리드 스테이트 드라이브(120)의 성능에 영향을 주지 않고 갱신될 수 있으면, 배경 로직(435)이 전면(foreground)에서 동작하지 못할 이유가 없다. 예를 들어, 도 1의 솔리드 스테이트 드라이브(120)가 프로세서를 포함하면(즉, 도 1의 솔리드 스테이트 드라이브(120)는 저장소-내 연산(ISC, In-Storage Computing)을 제안하면), 도 1의 솔리드 스테이트 드라이브(120) 내의 이 프로세서는 잠재적으로 도 1의 솔리드 스테이트 드라이브(120)의 읽기 및 쓰기 성능에 영향을 주지 않고 실시간으로 스트림 할당들을 갱신하는데 사용될 수 있다. 이러한 상황에서, 배경 로직(435)은 청크 식별자를 도 3의 제출 대기열(335)에 배치하거나 또는 배경 로직(435)이 전면 동작들에 영향을 주지 않고 동작할 수 있을 때를 기다릴 필요 없이, 즉시 동작하여 스트림 할당 갱신을 수행할 수 있다.Background logic 435 is described as operating in the background (and hence its name), but performing stream allocation updates in the background minimizes the impact on reads and writes to the solid state drive 120 of FIG. It is convenient to use. If the stream assignments can be updated without affecting the performance of the solid state drive 120 of FIG. 1, there is no reason for the background logic 435 to fail to operate in the foreground. For example, if the solid state drive 120 of FIG. 1 includes a processor (that is, if the solid state drive 120 of FIG. 1 proposes In-Storage Computing (ISC)), FIG. 1 This processor in the solid state drive 120 of FIG. 1 could potentially be used to update stream assignments in real time without affecting the read and write performance of the solid state drive 120 of FIG. 1. In this situation, the background logic 435 is immediately without having to place the chunk identifier in the submission queue 335 of FIG. 3 or wait when the background logic 435 can operate without affecting the foreground operations. By operating, the stream allocation update can be performed.

도 4에서, 플래시 변환 계층(325)은 스트림 할당 및 스트림 식별자 갱신을 수행하는 데에 책임이 있는 것으로 도시된다. 그러나 본 발명의 기술적 사상에 따른 다른 실시 예들에서, 도 4에 도시된 구성 요소들 중 하나 또는 그보다 많은 것들은 소프트웨어로 구현되고, 예를 들어 도 1의 메모리 제어기(125), 도 1의 장치 드라이버(130)의 일부로 포함되거나, 또는 쓰기 요청들을 가로채고(intercept) 쓰기 명령들을 발행하기 전에 스트림들을 조합할 수 있는 라이브러리 루틴들(library routines)로 구현되거나, 또는 도 1의 솔리드 스테이트 드라이브(120) 내의 또는 기계(105) 내의 다른 곳의 별도의 특수 목적 하드웨어로 구현될 수 있다. 도 4 내지 도 20을 동반하는 설명이 플래시 변환 계층(325) 내의 구현에 초점을 맞추더라도, 이 논의의 목적을 위해, 도 4의 구성 요소들에 의해 수행되는 스트림 할당에 대한 참조는 어떤 특정한 위치에서의 구현을 포함하기 위한것이다.In Fig. 4, the flash translation layer 325 is shown as responsible for performing stream allocation and stream identifier update. However, in other embodiments according to the technical idea of the present invention, one or more of the components shown in FIG. 4 are implemented in software, for example, the memory controller 125 of FIG. 1 and the device driver of FIG. 1 ( 130), or implemented as library routines that can intercept write requests and assemble streams before issuing write commands, or Alternatively, it may be implemented as a separate special purpose hardware elsewhere in the machine 105. Although the description accompanying FIGS. 4-20 focuses on the implementation within the flash transformation layer 325, for the purposes of this discussion, reference to the stream allocation performed by the components of FIG. It is intended to contain an implementation of

도 4에서 논리 블록 주소 사상기(410) 및 스트림 선택 로직(415)이 별개의 구성 요소들로 도시되지만, 논리적으로, 이러한 구성 요소들의 구조는 단일 구성 요소로 결합될 수 있다. 더 일반적으로, 본 발명의 기술적 사상의 실시 예들은 도 4 내지 도 6, 도 9 내지 도 13, 그리고 도 15 내지 도 20에서 별개의 것으로 도시되고 설명되는 어떤 구성 요소들을 단일의 구성 요소들로 결합할 수 있다.In FIG. 4, the logical block address mapper 410 and the stream selection logic 415 are shown as separate components, but logically, the structures of these components may be combined into a single component. More generally, embodiments of the technical idea of the present invention combine certain components shown and described as being separate in FIGS. 4 to 6, 9 to 13, and 15 to 20 into a single component. can do.

도 5는 청크 식별자들(IDs)과 사상되고 이후에 도 1의 솔리드 스테이트 드라이브용 스트림 식별자들과 사상되는 다양한 명령들의 논리 블록 주소들(LBAs)을 보여준다. 본 발명의 기술적 사상의 실시 예들은 임의의 수의 쓰기 명령들을 지원할 수 있지만, 도 5에서는, 쓰기 명령들(505-1, 505-2, 505-3)이 도시된다. 또한, 도 5에서 쓰기 명령들만이 도시되지만, 본 발명의 기술적 사상의 실시 예들은 또한 읽기 명령들에도 적용될 수 있다. 쓰기 명령들(505-1~505-3)은 논리 블록 주소들(510-1~510-3)을 포함할 수 있으며, 이는 쓰기 명령들(505-1~505-3)의 시작 논리 블록 주소들을 명시할 수 있다.FIG. 5 shows logical block addresses (LBAs) of various instructions mapped to chunk identifiers (IDs) and later mapped to stream identifiers for a solid state drive of FIG. 1. Embodiments of the inventive concept may support any number of write commands, but in FIG. 5, write commands 505-1, 505-2, and 505-3 are illustrated. In addition, although only write commands are shown in FIG. 5, embodiments of the inventive concept may also be applied to read commands. The write commands 505-1 to 505-3 may include logical block addresses 510-1 to 510-3, which are the starting logical block addresses of the write commands 505-1 to 505-3. Can be specified.

논리 블록 주소 사상기(410)는 쓰기 명령들(505-1~505-3)로부터 논리 블록 주소들(510-1~510-3)을 액세스할 수 있다. 논리 블록 주소들(510-1~510-3)이 쓰기 명령들(505-1~505-3)로부터 읽혀지면, 논리 블록 주소 사상기(410)는 대응하는 청크 식별자들(515-1~515-3)을 판단할 수 있다. 청크들은 솔리드 스테이트 드라이브(120)의 논리적 부분 분할들로 여겨질 수 있다(그러나 블록들 또는 페이지들과 같은, 솔리드 스테이트 드라이브(120)의 다른 논리적 부분 분할들로 청크들을 정렬할 필요 없는). 청크들의 수는 임의의 원하는 방법으로, 예를 들어 원하는 사이즈의 청크를 선택하고 그리고 솔리드 스테이트 드라이브(120)의 사이즈를 청크 사이즈로 나눔으로써, 또는 도 4의 배경 로직(435)에 의해 수행될 너무 많은 프로세싱을 필요로 하지 않는 적절한 유용성을 제공하는 것으로 입증된 수를 선택함으로써(그리고 솔리드 스테이트 드라이브(120)를 다수의 청크들로 나눔으로써) 결정될 수 있다. 사이즈의 균일성이 논리 블록 주소 사상기(410)의 동작들을 단순화할 수 있지만, 청크들은 동일한 사이즈를 가질 필요는 없다. 따라서, 예를 들어, 하나의 청크는 솔리드 스테이트 드라이브(120)에서 128KB의 데이터를 포함할 수 있고, 반면 다른 청크는 솔리드 스테이트 드라이브(120)에서 512KB의 데이터를 포함할 수 있다. 논리 블록 주소로부터 청크를 판단하는 것은 시프트(shift) 동작들을 이용하여 수행되므로, 2의 거듭제곱들인 청크 사이즈들이 특별히 유리하다. 그러나 본 발명의 기술적 사상의 실시 예들은 임의의 필요한 사이즈의 청크들을 지원할 수 있다.The logical block address mapper 410 may access the logical block addresses 510-1 to 510-3 from the write commands 505-1 to 505-3. When the logical block addresses 510-1 to 510-3 are read from the write commands 505-1 to 505-3, the logical block address mapper 410 is assigned to the corresponding chunk identifiers 515-1 to 515 -3) can be judged. Chunks may be considered as logical subdivisions of solid state drive 120 (but it is not necessary to arrange the chunks into other logical subdivisions of solid state drive 120, such as blocks or pages). The number of chunks is too much to be done in any desired way, for example by selecting a chunk of the desired size and dividing the size of the solid state drive 120 by the chunk size, or by the background logic 435 of FIG. 4. It can be determined by choosing a number that has proven to provide adequate usefulness that does not require much processing (and by dividing the solid state drive 120 into multiple chunks). Although the uniformity of size can simplify the operations of the logical block address mapper 410, the chunks need not have the same size. Thus, for example, one chunk may contain 128 KB of data in the solid state drive 120, while another chunk may contain 512 KB of data in the solid state drive 120. Since determining a chunk from a logical block address is performed using shift operations, chunk sizes that are powers of two are particularly advantageous. However, embodiments of the inventive concept may support chunks of any required size.

논리 블록 주소 사상기(410)는 수많은 방법들로 청크 식별자들(515-1~515-3)을 판단할 수 있다. 예를 들어, 논리 블록 주소 사상기(410)는 산술 논리부(ALU, arithmetic logic unit)(520)를 포함하여 논리 블록 주소들(510-1~510-3)로부터 청크 식별자들(515-1~515-3)을 수학적으로 연산할 수 있다. 또는, 논리 블록 주소 사상기(410)는 논리 블록 주소들(510-1~510-3)로부터 다양한 비트들을 가려내어 청크 식별자들(515-1~515-3)을 남기는 주소 마스크(525)를 포함할 수 있다.The logical block address mapper 410 may determine the chunk identifiers 515-1 to 515-3 in a number of ways. For example, the logical block address mapper 410 includes an arithmetic logic unit (ALU) 520 and the chunk identifiers 515-1 from the logical block addresses 510-1 to 510-3. ~515-3) can be calculated mathematically. Alternatively, the logical block address mapper 410 extracts various bits from the logical block addresses 510-1 to 510-3 to provide an address mask 525 that leaves the chunk identifiers 515-1 to 515-3. Can include.

청크 식별자들(515-1~515-3)이 판단되면, 스트림 선택 로직(415)은 해당 청크에서 사용될 스트림을 결정할 수 있다. 스트림 선택 로직(415)은 청크 식별자들(515-1~515-3)을 이용하여 청크-스트림 사상기(340)로부터 대응하는 스트림 식별자들(530-1~530-3)을 판단할 수 있다.When the chunk identifiers 515-1 to 515-3 are determined, the stream selection logic 415 may determine a stream to be used in the corresponding chunk. The stream selection logic 415 may determine corresponding stream identifiers 530-1 to 530-3 from the chunk-stream mapper 340 using the chunk identifiers 515-1 to 515-3. .

도 6은 도 5의 스트림 식별자들(530-1, 530-2)을 포함하도록 수정되고 그리고 도 1의 솔리드 스테이트 드라이브(120)로 전송되는 도 5의 명령들(505-1~505-2)을 보여준다(공간의 이유로, 도 6은 도 5로부터 세 개의 쓰기명령들 중 두 개 및 연관된 데이터만을 보여준다. 그러나 도 6은 도 5와 동일한 방법으로 일반화한다.). 도 6에서, 스트림 식별자 추가기(420)는 스트림 식별자들(530-1, 530-2)을 쓰기 명령들(505-1, 505-2)에 기입할 수 있다. 이런 방법으로, 도 1의 솔리드 스테이트 드라이브(120)는 쓰기 명령들(505-1, 505-2)을 처리할 때 어느 장치 스트림을 사용할지 알 수 있다. 송신기(425)는 수정된 쓰기 명령들(505-1, 505-2)을 도 1의 솔리드 스테이트 드라이브(120)로 전송할 수 있다.6 is the commands 505-1 to 505-2 of FIG. 5 modified to include the stream identifiers 530-1 and 530-2 of FIG. 5 and transmitted to the solid state drive 120 of FIG. 1 (For space reasons, FIG. 6 shows only two of the three write commands from FIG. 5 and associated data. However, FIG. 6 is generalized in the same manner as in FIG. 5). In FIG. 6, the stream identifier adder 420 may write the stream identifiers 530-1 and 530-2 to the write commands 505-1 and 505-2. In this way, the solid state drive 120 of FIG. 1 can know which device stream to use when processing the write commands 505-1 and 505-2. The transmitter 425 may transmit the modified write commands 505-1 and 505-2 to the solid state drive 120 of FIG. 1.

도 5 및 도 6에 도시되지 않은 것은 도 4의 줄세움기(430)의 동작이다. 도 5의 청크 식별자들(515-1~515-3)이 판단되면, 도 4의 줄세움기(430)는 도 4의 배경 로직(435)의 나중의 처리를 위해 도 5의 청크 식별자들(515-1~515-3)을 도 3의 제출 대기열(335)에 줄세울 수 있다. 도 4의 줄세움기(430)는 도 5의 청크 식별자들(515-1~515-3)이 판단된 후 언제든지 도 5의 청크 식별자들(515-1~515-3)을 줄세울 수 있다. 예를 들어, 도 4의 줄세움기(430)는 도 5의 청크 식별자들(515-1~515-3)이 도 4의 논리 블록 주소 사상기(410)에 의해 판단된 후에, 수정된 쓰기 명령들(505-1~505-3)이 송신기(425)에 의해 도 1의 솔리드 스테이트 드라이브(120)로 전송된 후에, 또는 이들 사이의 어떤 때에도 도 5의 청크 식별자들(515-1~515-3)을 줄세울 수 있다.Not shown in FIGS. 5 and 6 is the operation of the line erecting device 430 of FIG. 4. When the chunk identifiers 515-1 to 515-3 of FIG. 5 are determined, the line up 430 of FIG. 4 is performed by the chunk identifiers of FIG. 5 for later processing of the background logic 435 of FIG. 515-1 to 515-3) may be lined up in the submission queue 335 of FIG. 3. The line up 430 of FIG. 4 may line up the chunk identifiers 515-1 to 515-3 of FIG. 5 at any time after the chunk identifiers 515-1 to 515-3 of FIG. 5 are determined. . For example, after the chunk identifiers 515-1 to 515-3 of FIG. 5 are determined by the logical block address mapper 410 of FIG. Chunk identifiers 515-1 to 515 of FIG. 5 after instructions 505-1 to 505-3 have been transmitted by transmitter 425 to solid state drive 120 of FIG. 1, or at any time in between. -3) can be lined up.

도 7은 도 5의 논리 블록 주소(510-1)를 도 5의 청크 식별자(515-1)와 사상하는 도 5의 산술 논리부(ALU)(520)를 보여준다. 도 7에서, 산술 논리부(520)는 논리 블록 주소(510-1) 및 청크 사이즈(705)를 수신할 수 있다. 논리 블록 주소(510-1)를 청크 사이즈(705)로 나눔으로써(그리고 계산의 임의의 소수부를 버림으로써), 청크 식별자(515-1)가 계산될 수 있다.FIG. 7 shows the arithmetic logic unit (ALU) 520 of FIG. 5 that maps the logical block address 510-1 of FIG. 5 to the chunk identifier 515-1 of FIG. 5. In FIG. 7, the arithmetic logic unit 520 may receive a logical block address 510-1 and a chunk size 705. By dividing the logical block address 510-1 by the chunk size 705 (and discarding any fractional part of the calculation), the chunk identifier 515-1 can be calculated.

도 4를 참조하여 위에서 설명된 바와 같이, 도 4의 배경 로직(435)은 다양한 방법들로 구현될 수 있다. 도 8 내지 도 13은 본 발명의 기술적 사상의 일 실시 예를 설명하고, 그리고 도 14 내지 도 20은 본 발명의 기술적 사상의 다른 실시 예를 설명한다. 본 발명의 기술적 사상의 이러한 실시 예들은 상호 배타적인 것으로 의도되지 않으며, 본 발명의 기술적 사상의 두 실시 예들의 조합이 가능하다. 또한, 여기에 명시적으로 설명되든 그렇지 않든, 본 발명의 기술적 사상의 다른 실시 예들 또한 가능하다.As described above with reference to FIG. 4, the background logic 435 of FIG. 4 can be implemented in a variety of ways. 8 to 13 illustrate an embodiment of the technical idea of the present invention, and FIGS. 14 to 20 describe another embodiment of the technical idea of the present invention. These embodiments of the technical idea of the present invention are not intended to be mutually exclusive, and a combination of the two embodiments of the technical idea of the present invention is possible. In addition, whether explicitly described herein or not, other embodiments of the technical idea of the present invention are also possible.

도 4의 배경 로직(435)을 위한 본 발명의 기술적 사상의 제1 실시 예에서, 도 3의 청크-스트림 사상기(340)는 순차, 빈도, 최신(Sequential, Frequency, Recency)(SFR) 표를 포함할 수 있다. "순차, 빈도, 최신"은 청크에 할당될 스트림 식별자가 판단되고 갱신되는 방법을 가리킨다. "순차"는 하나의 쓰기명령이 다른 하나의 쓰기명령에 순차적인 상황을 가리킨다. 즉, 제2 쓰기 명령이 이전 쓰기 명령 후에 다음 논리 블록 주소에 데이터를 기입한다. 두 쓰기 명령들이 순차적이면, 두 명령들 모두가 동일한 스트림 식별자에 할당되어야 함이 이치에 맞다.In the first embodiment of the technical idea of the present invention for the background logic 435 of FIG. 4, the chunk-stream mapper 340 of FIG. 3 is a sequential, frequency, and latest (Sequential, Frequency, Recency) (SFR) table. It may include. "Sequence, frequency, latest" refers to how the stream identifier to be assigned to the chunk is determined and updated. "Sequential" refers to a situation in which one write command is sequential with another write command. That is, the second write command writes data to the next logical block address after the previous write command. If the two write commands are sequential, it makes sense that both commands must be assigned to the same stream identifier.

아래에서 도 10을 참조하여 설명되는 바와 같이, 쓰기 명령들은 많은 상이한 소프트웨어 소스들로부터 발행되므로, 이 문맥의 "순차"는 완전히 문언적으로 읽혀지지 않아야 한다. 단일 소프트웨어 소스(예를 들어, 데이터 베이스 응용)으로부터의 두 "순차" 쓰기 명령들이 다른 일부 소프트웨어 소스(예를 들어, 파일 시스템)으로부터의 쓰기 명령에 의해 분리되는 일이 발생하면, 끼어드는 쓰기 명령은 데이터 베이스 응용으로부터의 두 쓰기 명령들의 순차를 배제해서는 안된다. 실제로, 끼어드는 쓰기 명령들이 순차를 방해하는 것을 금지하는 것을 회피하는 방법이 여기에 제공된다.As described below with reference to FIG. 10, write commands are issued from many different software sources, so the "sequence" in this context should not be read completely literally. Interrupting write commands when two "sequential" write commands from a single software source (eg, a database application) are separated by a write command from some other software source (eg, a file system). Should not rule out the sequence of two write commands from the database application. Indeed, a way to avoid preventing intervening write commands from interfering with the sequence is provided here.

"빈도"는 청크가 얼마나 자주 액세스 되는지를 가리킨다. 청크가 더 자주 액세스 될수록, 청크는 더 뜨거운 것으로 여겨진다(온도는 우선순위와 유사한 것으로 작용한다. 청크의 온도가 더 높을수록, 우선순위가 더 높아져야한다). 따라서, 청크가 더 자주 액세스될수록, 더 높은 스트림 우선순위가 할당되어야 한다."Frequency" refers to how often the chunk is accessed. The more frequently a chunk is accessed, the hotter the chunk is considered hotter (the temperature acts like a priority. The higher the temperature of the chunk, the higher the priority should be). Thus, the more frequently a chunk is accessed, the higher the stream priority should be assigned.

"최신"은 청크가 마지막으로 액세스 된 후 얼마나 오래되었는지를 가리킨다. "최신"은 "빈도"에 대한 균형으로 작용한다. 청크가 마지막으로 액세스 된 후 기간이 더 길수록, 청크는 더 차가운 것으로 여겨진다. 따라서, 청크는 더 낮은 우선순위가 할당되어야 한다. 따라서, "빈도"가 청크의 연관된 스트림을 증가시키는 반면, "최신"은 청크의 연관된 스트림을 감소시킨다. "순차", "빈도", 그리고 "최신"은 아래에서 도 10 내지 도 13을 참조하여 더 기술된다."Latest" refers to how old the chunk has been since it was last accessed. "Latest" acts as a balance for "frequency". The longer the period after the chunk was last accessed, the cooler the chunk is considered. Therefore, chunks should be assigned a lower priority. Thus, "frequency" increases the associated stream of a chunk, while "latest" decreases the associated stream of a chunk. "Sequential", "frequency", and "latest" are further described below with reference to FIGS. 10 to 13.

도 8에 도시된 본 발명의 기술적 사상의 실시 예로 옮아가면, 도 8은 본 발명의 기술적 사상의 실시 예에 따른 도 5의 청크 식별자들(515-1~515-3)을 도 5의 스트림 식별자들(530-1~530-3)에 사상하는 데에 사용될 수 있는 예시적인 SFR 표를 보여준다. 도 8에서, SFR 표(805)는 다양한 데이터를 저장할 수 있다. 예를 들어, SFR 표(805)는 다양한 청크 식별자들(515-1~515-4) 및 각 청크 식별자(515-1~515-4)에 대한 SFR 대응 스트림 식별자들(530-1~530-4)을 저장할 수 있다.Moving to an embodiment of the technical idea of the present invention shown in FIG. 8, FIG. 8 shows the chunk identifiers 515-1 to 515-3 of FIG. 5 according to an embodiment of the technical idea of the present invention. It shows an exemplary SFR table that can be used to map to s 530-1 to 530-3. In FIG. 8, the SFR table 805 may store various data. For example, the SFR table 805 includes various chunk identifiers 515-1 to 515-4 and SFR corresponding stream identifiers 530-1 to 530- for each chunk identifier 515-1 to 515-4. 4) can be saved.

스트림 식별자들(530-1~530-4)에 더하여, SFR 표(805)는 추가적인 데이터를 저장할 수 있다. 예를 들어, 각 청크 식별자(515-1~515-4)에 대해, SFR 표(805)는 청크에 대한 현재(즉, 가장 최신) 액세스 시간(810-1~810-4)을 저장할 수 있다. 현재 액세스 시간(810-1~810-4)은 임의의 타입(예를 들어, 읽기들 또는 쓰기들)의 청크의 마지막 액세스 또는 단지 가장 최신의 쓰기 명령의 시간일 수 있다. SFR 표(805)는 또한 청크가 이전에 액세스 된 시간을 나타내는 이전 액세스 시간(815-1~815-4)을 저장할 수 있다. 끝으로, SFR 표(805)는 청크의 액세스들의 횟수를 나타내는 액세스 카운트들(820-1~820-4)을 저장할 수 있다. 위에서 설명된 바와 같이, 액세스 카운트들(820-1~820-4)은 청크의 액세스들(읽기들 및 쓰기들 모두) 의 전체 횟수 또는 단지 청크의 쓰기 액세스들의 전체 횟수를 나타낼 수 있다.In addition to the stream identifiers 530-1 to 530-4, the SFR table 805 may store additional data. For example, for each chunk identifier 515-1 to 515-4, the SFR table 805 may store the current (ie, the most recent) access time 810-1 to 810-4 for the chunk. . The current access times 810-1-810-4 may be the time of the last access of a chunk of any type (eg, reads or writes) or only the most recent write command. The SFR table 805 may also store a previous access time 815-1 through 815-4 indicating a time when the chunk was previously accessed. Finally, the SFR table 805 may store access counts 820-1 to 820-4 indicating the number of accesses in the chunk. As described above, the access counts 820-1 to 820-4 may represent the total number of accesses (both reads and writes) of the chunk or only the total number of write accesses of the chunk.

도 8이 본 발명의 기술적 사상의 하나의 가능한 실시 예를 보여주지만, 본 발명의 기술적 사상의 다른 실시 예들은 도 8에 도시된 것보다 많거나 또는 적은 데이터를 저장할 수 있다. 도한, 테이블이외의 데이터 구조들은 정보를 저장하는 데에 사용될 수 있다. 본 발명의 기술적 사상의 실시 예들은 이러한 모든 변화들을 포함하는 것으로 의도된다.Although FIG. 8 shows one possible embodiment of the technical idea of the present invention, other embodiments of the technical idea of the present invention may store more or less data than that shown in FIG. 8. Also, data structures other than tables can be used to store information. Embodiments of the technical idea of the present invention are intended to include all these changes.

도 9는 본 발명의 기술적 사상의 제1 실시 예에 따른 도 3의 플래시 변환 계층(325) 및 도 4의 배경 로직(435)의 추가적인 상세들을 보여준다. 도 9에서, 플래시 변환 계층(325)은 또한 순차 로직(905)을 포함할 수 있다. 순차 로직(905)은 이전 쓰기 명령과 동일한 스트림 할당을 사용하기 위하여 도 5의 쓰기 명령(505-1)이 일부 이전 쓰기 명령과 순차적인지 판단할 수 있다. 순차 로직(905)은 아래에서 도 10을 참조하여 더 논의된다.9 shows additional details of the flash conversion layer 325 of FIG. 3 and the background logic 435 of FIG. 4 according to the first embodiment of the inventive concept. In FIG. 9, the flash transform layer 325 may also include sequential logic 905. The sequential logic 905 may determine whether the write command 505-1 of FIG. 5 is sequential with some previous write commands in order to use the same stream allocation as the previous write command. Sequential logic 905 is further discussed with reference to FIG. 10 below.

배경 로직(435)은 최신 로직(910), 액세스 카운트 조절기(915), 그리고 스트림 식별자 조절기(920)를 포함할 수 있다. 최신 로직(910)은 청크에 대한 최신 가중(recency weight)을 계산할 수 있다. 액세스 카운트 조절기(915)는 최신 가중에 기반하여 스트림에 대한 액세스 카운트를 조절할 수 있다. 그리고 스트림 식별자 조절기(920)는 조절된 액세스 카운트에 기반하여 청크에 대해 사용할 새로운 스트림 식별자를 계산할 수 있다. 최신 로직(910), 액세스 카운트 조절기(915), 그리고 스트림 식별자 조절기(920)는 산술 계산들을 수행하므로 모두 하나의(또는 그보다 많은) 별도의 또는 공유된 산술 논리부들을 이용하여 구현될 수 있다. 그렇지 않으면, 최신 로직(910), 액세스 카운트 조절기(915), 그리고 스트림 식별자 조절기(920)는 단지 여기에 기술된 특정 함수만을 계산하고 그 외의 것을 계산하지 않도록 설계된 특수 목적 하드웨어를 이용하여 구현될 수 있다.Background logic 435 may include state-of-the-art logic 910, access count adjuster 915, and stream identifier adjuster 920. The latest logic 910 may calculate the latest recency weight for the chunk. The access count adjuster 915 may adjust the access count for the stream based on the latest weighting. Further, the stream identifier adjuster 920 may calculate a new stream identifier to be used for the chunk based on the adjusted access count. The state-of-the-art logic 910, the access count adjuster 915, and the stream identifier adjuster 920 perform arithmetic calculations, so they can all be implemented using one (or more) separate or shared arithmetic logic units. Otherwise, state-of-the-art logic 910, access count adjuster 915, and stream identifier adjuster 920 can be implemented using special purpose hardware designed to compute only the specific functions described here and not compute anything else. have.

도 10은 도 9의 순차 로직(905)의 상세들을 보여준다. 도 10에서, 순차 로직(905)은 저장소(1005) 및 비교기(1010)을 포함하는 것으로 도시된다. 현실적인 목표들을 위해, 저장소(1005)는 순차 로직(905) 내의 별도의 저장소이기보다는, 도 3의 저장소(330)의 일부일 수 있다. 저장소(1005)는 최신 쓰기 명령들의 세트에 대한 정보인 윈도(1015)를 저장할 수 있으며, 쓰기 명령어들 각각은 자신에게 할달된 스트림 식별자를 가질수 있다. 예를 들어, 도 10은 엔트리들(1020-1~1020-8)을 보여주며, 이들중 엔트리들(1020-1~1020-4)은 윈도(1015) 내에 존재한다. 엔트리들(1020-1~1020-8)은 대기열(1025)에서 관리될 수 있다. 대기열(1025)은 필요한 임의의 형태, 예를 들어 두 예시적인 구현들을 지명하면, 대기열(1025)의 맨앞에 대한 포인터를 갖는 어레이 또는 연결리스트의 형태를 취할 수 있다. 엔트리(1020-1~1020-8)들 각각은 이전 쓰기 명령에 대한 끝 논리 블록 주소(1030) 및 스트림 식별자(1035)를 포함할 수 있다. 윈도(1015)는 얼마나 많은 최신 엔트리들이 윈도(1015)에 포함되는지를 명시하는 윈도 사이즈(1040)를 포함할 수 있다. 도 10에서, 윈도 사이즈(1040)는 네 엔트리들을 포함하는 것으로 도시되나, 본 발명의 기술적 사상의 실시 예들은 윈도(1015)에서 많은 엔트리들을 지원할 수 있다. 윈도 사이즈(1040)는, 예를 들어 도 1의 프로세서의 코어들의 수 또는 쓰기 명령들을 발행할 수 있는 도 1의 프로세서(110)에서 실행되는 소프트웨어 소스들(운영 체제, 파일 시스템, 응용들 등)의 수를 포함하는 여러 인자들에 의존할 수 있다. 본 발명의 기술적 사상의 실시 예들은 다른 인자들에도 기반하여 판단되는 윈도 사이즈들을 지원할 수 있다. 또한, 윈도 사이즈(1040)는 정적으로 설정되거나 또는 도 1의 기계(105) 내의 조건들이 변화함에 따라 동적으로 변경될 수 있다.10 shows details of the sequential logic 905 of FIG. 9. In FIG. 10, sequential logic 905 is shown as including storage 1005 and comparator 1010. For practical goals, storage 1005 may be part of storage 330 of FIG. 3, rather than a separate storage within sequential logic 905. The storage 1005 may store a window 1015, which is information on a set of latest write commands, and each of the write commands may have a stream identifier assigned to it. For example, FIG. 10 shows entries 1010-1 to 1020-8, of which entries 1010-1 to 1020-4 exist in the window 1015. Entries 1010-1-1020-8 may be managed in the queue 1025. Queue 1025 may take any form required, for example, in the form of an array or linked list with a pointer to the front of the queue 1025, naming the two exemplary implementations. Each of the entries 1010-1 to 1020-8 may include an end logical block address 1030 and a stream identifier 1035 for a previous write command. Window 1015 may include a window size 1040 that specifies how many recent entries are included in window 1015. In FIG. 10, the window size 1040 is shown to include four entries, but embodiments of the inventive concept may support many entries in the window 1015. The window size 1040 is, for example, the number of cores of the processor of FIG. 1 or software sources (operating system, file system, applications, etc.) executed on the processor 110 of FIG. 1 that can issue write instructions. It can depend on several factors including the number of. Embodiments of the inventive concept may support window sizes determined based on other factors as well. Further, the window size 1040 may be set statically or may be dynamically changed as conditions in the machine 105 of FIG. 1 change.

도 5의 새로운 쓰기 명령(505-1)이 수신되면, 비교기(1010)는 도 5의 논리 블록 주소(510-1)를 윈도(1015)의 엔트리들(1020-1~1020-4)의 끝 논리 블록 주소들(1030)과 비교할 수 있다. 도 5의 논리 블록 주소(510-1)가 이전 쓰기 명령의 끝 논리 블록 주소(1030) 후의 다음 주소이면, 도 5의 논리 블록 주소(510-1)는 이전 쓰기 명령의 끝 논리 블록 주소(1030)에 순차적인 것으로 여겨질 수 있다. 그렇지 않으면, 이전 쓰기 명령의 끝 논리 블록 주소(1030)와 도 5의 논리 블록 주소(510-1) 사이에 사용될 수 있는 유효한 논리 블록 주소가 없으면, 도 5의 논리 블록 주소(510-1)는 이전 쓰기 명령의 끝 논리 블록 주소(1030)에 순차적인 것으로 여겨질 수 있다(데이터가 기입될 수 있었던 가능한 끼어드는 주소들이 없으면, 끝 논리 주소(1030)는 문언적으로 이전 쓰기 명령에 의해 기입되는 마지막 주소일 필요는 없음에 주의하여야 한다). 도 5의 논리 블록 주소(510-1)가 윈도(1015)의 임의의 엔트리(1020-1~1020-4)의 끝 논리 블록 주소(1030)에 순차적이면, 엔트리(1020-1~1020-4)의 스트림 식별자(1035)가 도 5의 쓰기 명령(505-1)에 대해 사용된다.When the new write command 505-1 of FIG. 5 is received, the comparator 1010 transfers the logical block address 510-1 of FIG. 5 to the end of the entries 1020-1 to 1020-4 of the window 1015. It can be compared with the logical block addresses 1030. If the logical block address 510-1 of FIG. 5 is the next address after the last logical block address 1030 of the previous write command, the logical block address 510-1 of FIG. 5 is the last logical block address 1030 of the previous write command. ) Can be considered sequential. Otherwise, if there is no valid logical block address that can be used between the last logical block address 1030 of the previous write command and the logical block address 510-1 of FIG. 5, the logical block address 510-1 of FIG. 5 is The end logical block address 1030 of the previous write command may be regarded as sequential (if there are no possible intervening addresses where data could be written, the end logical address 1030 is literally written by the previous write command. It should be noted that it does not have to be the last address). If the logical block address 510-1 of FIG. 5 is sequential to the end logical block address 1030 of any entry 1020-1-1020-4 of the window 1015, the entries 1010-1-1020-4 A stream identifier 1035 of) is used for the write command 505-1 of FIG. 5.

순차 논리 블록 주소들을 식별하는 것은 순차가 발생한 때를 판단하는 하나의 방법이지만, 본 발명의 기술적 사상의 실시 예들은 순차를 검출하는 다른 구현들을 지원할 수 있다. 예를 들어, 순차 로직(905)은 언제 논리 블록 주소들이 반복되는 패턴으로 특정한 소프트웨어 소스에 대해 액세스되는 지를 검출하기 위해 패턴 정합기(pattern matcher)를 사용할 수 있다.Identifying the sequential logical block addresses is one method of determining when the sequence has occurred, but embodiments of the inventive concept may support other implementations for detecting the sequence. For example, sequential logic 905 may use a pattern matcher to detect when logical block addresses are accessed for a particular software source in a repeating pattern.

도 5의 논리 블록 주소(510-1)가 윈도(1015) 내의 임의의 엔트리(1020-1~1020-4)의 끝 논리 블록 주소(1030)에 순차적인지 아닌지에 관계없이, 윈도(1015) 내의 가장 오래된 엔트리는 "배출되고(ejected)", 도 5의 쓰기 명령(505-1)이 윈도(1015)에 추가될 수 있다. 예를 들어, 엔트리(1020-1)가 윈도(1015)에서 가장 최신의 쓰기 명령에 대한 엔트리이고, 엔트리(1020-4)가 윈도(1015)에서 가장 오래된 엔트리인 것으로 가정한다. 엔트리(1020-4)는 윈도(1015)로부터 제거되고, 도 5의 논리 블록 주소(510-1) 및 스트림 식별자(530-1)가 윈도(1015)에 새로운 엔트리로서 추가될 수 있다. 윈도(1015)는 임의의 필요한 방법으로 구현될 수 있다. 예를 들어, 윈도(1015)는 가장 오래된 엔트리에 대한 포인터를 갖는 순환 목록(circular list)(어레이와 같은)을 포함할 수 있다. 새로운 엔트리가 윈도(1015)에 추가될 때, 포인터에 의해 지정되는 가장 오래된 엔트리는 새로운 엔트리에 의해 덮어쓰기 되고, 포인터는 윈도(1015)에서 다음으로 가장 오래된 엔트리를 가리키도록 조절될 수 있다. 본 발명의 기술적 사상의 실시 예들은 윈도(1015)에 대한 정보를 저장하는 임의의 필요한 구조를 지원할 수 있다. 순환 목록은 이러한 가능한 데이터 구조의 하나에 불과하다.Regardless of whether or not the logical block address 510-1 of FIG. 5 is sequential to the end logical block address 1030 of any of the entries 1010-1 to 1020-4 in the window 1015, The oldest entry is "ejected", and the write command 505-1 of FIG. 5 can be added to the window 1015. For example, it is assumed that the entry 1020-1 is the entry for the most recent write command in the window 1015 and the entry 1020-4 is the oldest entry in the window 1015. The entry 1020-4 is removed from the window 1015, and the logical block address 510-1 and the stream identifier 530-1 of FIG. 5 may be added to the window 1015 as new entries. The window 1015 can be implemented in any required way. For example, window 1015 may contain a circular list (such as an array) with pointers to the oldest entries. When a new entry is added to window 1015, the oldest entry specified by the pointer is overwritten by the new entry, and the pointer can be adjusted to point to the next oldest entry in window 1015. Embodiments of the inventive concept may support any necessary structure for storing information about the window 1015. The circular list is just one of these possible data structures.

도 11은 도 9의 최신 로직을 이용한 최신 가중을 계산하는 것을 보여준다. 도 11을 참조하면, 최신 로직(910)은 최신 가중(1105)을 계산하는 것으로 도시된다. 도 11에 도시된 공식은 청크에 대한 현재 액세스 시간(810-1)(즉 가장 최신의) 및 이전 액세스 시간(815-1) 사이의 차이가 쇠퇴 기간(1110)으로 나눠진 것의 거듭제곱을 한 2로서 최신 가중(1105)을 계산한다. 쇠퇴 기간(1110)은 청크가 얼마나 빨리 더 낮은 우선순위 스트림들로 격하되는지를 제어하는 조절 가능한 변수를 나타낸다. 쇠퇴 기간(1110)은 도 1의 기계(105)가 시작할 때에 초기값으로 할당되고, 원하는 대로 조절될 수 있다(시스템 관리자에 의해 수동으로 또는 시스템 업무부하에 따라 자동적으로). 청크들이 너무 빠르게 승격되거나(이는 대부분의 청크들이 동일한 높은 우선순위 스트림을 사용하는 것을 유발한다) 또는 너무 느리게 승격되는 것을(이는 대부분의 청크들이 동일한 낮은 우선순위 스트림을 사용하는 것을 유발한다) 방지하는 것이 바람직하다. 바꿔 말하면, 청크들이 매우 일정한 방법으로 스트림들에 할당되게 하는 것이 바람직하다. 어떠한 개별 스트림도 너무 심하게 또는 너무 가볍게 사용되지 않아야 한다. 쇠퇴 기간(1110)은 이러한 목표를 달성하는 스트림 승격 및 격하를 관리하는 방법을 나타낸다.FIG. 11 shows the calculation of the latest weighting using the latest logic of FIG. 9. Referring to FIG. 11, the latest logic 910 is shown to calculate the latest weight 1105. The formula shown in Figure 11 is the difference between the current access time 810-1 (i.e., the most recent) and the previous access time 815-1 for the chunk, divided by the decay period 1110 to the power of 2 Calculate the latest weight (1105) as The decay period 1110 represents an adjustable variable that controls how quickly a chunk is degraded to lower priority streams. The decline period 1110 is assigned an initial value when the machine 105 of FIG. 1 starts, and can be adjusted as desired (manually by the system administrator or automatically depending on the system workload). Preventing chunks from being promoted too quickly (which causes most of the chunks to use the same high priority stream) or being promoted too slowly (which causes most of the chunks to use the same low priority stream). It is desirable. In other words, it is desirable to have the chunks allocated to the streams in a very uniform way. No individual stream should be used too hard or too lightly. The decline period 1110 represents how to manage stream promotion and demotion to achieve this goal.

최신 가중(1105)은 각 청크에 대해 달라질 수 있음에 유의하여야 한다. 반면, 쇠퇴 기간(1110)은 최신 가중(1105)에 대한 모든 계산들에 걸쳐 일정하여야 한다(그러나 이는 쇠퇴 기간(1110)이 시간에 따라 변화하지 않음을 의미하지 않는다).It should be noted that the latest weight 1105 may be different for each chunk. On the other hand, the decay period 1110 should be constant across all calculations for the latest weight 1105 (but this does not mean that the decay period 1110 does not change over time).

도 12는 도 9의 액세스 카운트 조절기(915)에서 도 11의 최신 가중(1105)을 이용하여 액세스 카운트를 조절하는 것을 보여준다. 도 12에서, 액세스 카운트 조절기(915)는 조절된 액세스 카운트(1205)를 계산하는 것으로 도시된다. 조절된 액세스 카운트(1205)는 액세스 카운트(820-1)보다 하나 많은 것이 최신 가중(1105)에 의해 나눠지는 것으로 계산될 수 있다. 조절된 액세스 카운트(1205)는 액세스 카운트(820-1)의 위치, 예를 들어 도 8의 SFR 표(805)에 다시 저장될 수 있다.FIG. 12 shows that the access count adjuster 915 of FIG. 9 adjusts the access count using the latest weighting 1105 of FIG. 11. In FIG. 12, the access count adjuster 915 is shown calculating the adjusted access count 1205. The adjusted access count 1205 may be calculated as one more than the access count 820-1 divided by the latest weight 1105. The adjusted access count 1205 may be stored back in the location of the access count 820-1, for example in the SFR table 805 of FIG. 8.

도 13은 도 9의 스트림 식별자 조절기(920)를 이용하여 도 12의 조절된 액세스 카운트(1205)로부터 스트림 식별자를 계산하는 것을 보여준다. 도 13에서, 스트림 식별자 조절기(920)는 스트림 식별자(530-1)를 계산하는 것으로 도시된다. 스트림 식별자(530-1)는 조절된 액세스 카운트(1205)의 로그(log)로 계산되고, 스트림 식별자(530-1)의 위치, 예를 들어 도 8의 SFR 표(805)에 다시 저장될 수 있다. 컴퓨터들에 대해 사용될 때에 수학적 용어 "로그"는 통상적으로 log2 또는 log10를 의미하지만, 임의의 원하는 기반(base)을 사용하는 로그 함수가 선택될 수 있다. 로그 함수에 대해 선택된 기수는 본 발명의 기술적 사상의 실시 예들이 청크들이 너무 빠르게 또는 너무 느리게 승격되는 것(그리고 그에 따른 하나 또는 그보다 많은 장치 스트림들의 과도한 사용 및 다른 장치 스트림들의 저조한 사용)을 회피하는 또 다른 방법(mechanism)을 제공한다. 스트림 식별자 조절기(920)는 또한 얼마나 큰 조절된 액세스 카운트(1205)가 획득되는지에 의존하여 하나보다 많은 로그 함수를 사용할 수 있다. 예를 들어, 조절된 액세스 카운트(1205)가 일부 문턱보다 낮으면, 스트림 식별자 조절기(920)는 log2를 이용하여 스트림 식별자(530-1)를 계산할 수 있다. 조절된 액세스 카운트(1205)가 해당 문턱보다 크면, 스트림 식별자 조절기(920)는 log10을 이용하여 스트림 식별자(530-1)를 계산할 수 있다.FIG. 13 shows that the stream identifier controller 920 of FIG. 9 is used to calculate the stream identifier from the adjusted access count 1205 of FIG. 12. In FIG. 13, the stream identifier adjuster 920 is shown to calculate the stream identifier 530-1. The stream identifier 530-1 is calculated as a log of the adjusted access count 1205, and may be stored again in the location of the stream identifier 530-1, for example, the SFR table 805 of FIG. have. The mathematical term “log” when used for computers typically means log 2 or log 10 , but a log function using any desired base may be chosen. The radix selected for the logarithmic function is that embodiments of the technical idea of the present invention avoid chunks being promoted too quickly or too slowly (and thus excessive use of one or more device streams and poor use of other device streams). It provides another mechanism. Stream identifier adjuster 920 may also use more than one log function depending on how large an adjusted access count 1205 is obtained. For example, if the adjusted access count 1205 is lower than some threshold, the stream identifier adjuster 920 may calculate the stream identifier 530-1 using log 2. If the adjusted access count 1205 is greater than the corresponding threshold, the stream identifier adjuster 920 may calculate the stream identifier 530-1 using log 10.

도 11 내지 도 13에 대한 두서너 언급들을 할 필요가 있다. 첫째로, 도 11 내지 도 13은 도 11의 최신 가중(1105), 도 12의 조절된 액세스 카운트(1205), 그리고 스트림 식별자(530-1)를 연산하기 위한 구체적인 계산들을 보여준다. 그러나 본 발명의 기술적 사상의 실시 예들은 임의의 원하는 방법으로 이들을(또는 다른 값들) 계산하는 것을 지원할 수 있다. 궁극적인 목표가 도 8의 스트림 식별자(530-1)를 도 8의 청크(515-1)에 대해 적절하게 조절할 수 있는것이므로, 이러한 결과를 달성하는 어떤 원하는 시도도 사용될 수 있다. 도 11 내지 도 13은 단지 이러한 하나의 시도를 보여준다.It is worth making a couple of references to FIGS. 11 to 13. First, FIGS. 11 to 13 show specific calculations for calculating the latest weight 1105 of FIG. 11, the adjusted access count 1205 of FIG. 12, and the stream identifier 530-1. However, embodiments of the inventive concept may support calculating them (or other values) in any desired method. Since the ultimate goal is to be able to properly adjust the stream identifier 530-1 of Fig. 8 for the chunk 515-1 of Fig. 8, any desired attempt to achieve this result can be used. Figures 11-13 only show one such attempt.

둘째로, 도 11 내지 도 13에서, 액세스 시간들(도 11의 현재 액세스 시간(810-1) 및 이전 액세스 시간(815-1)과 같은)은 특정한 클럭 보다는 발행된 요청들의 수에 기반하여 판단될 수 있다. 예를 들어, 도 5의 쓰기 명령들(505-1~505-3)은 연속하여 발행되는 것으로 가정된다. 도 5의 쓰기 명령(505-1)은 네 번째 쓰기 명령일 수 있고, 도 5의 쓰기 명령(505-2)은 다섯 번째 쓰기 명령일 수 있고, 그리고 도 5의 쓰기 명령(505-3)은 여섯 번째 쓰기 명령일 수 있다. 이 예에서, 다양한 쓰기 명령들에 대한 "액세스 시간들"은 각각 "4", "5", 그리고 "6"일 수 있다.Second, in FIGS. 11 to 13, the access times (such as the current access time 810-1 and the previous access time 815-1 in FIG. 11) are determined based on the number of issued requests rather than a specific clock. Can be. For example, it is assumed that the write commands 505-1 to 505-3 of FIG. 5 are issued continuously. The write command 505-1 of FIG. 5 may be a fourth write command, the write command 505-2 of FIG. 5 may be a fifth write command, and the write command 505-3 of FIG. 5 is It could be the sixth write command. In this example, the "access times" for the various write commands may be "4", "5", and "6", respectively.

액세스 시간들을 판단하는 이 선택은, 모든 소프트웨어 소스들이 시간의 일부 시간 간격(1초, 1분, 또는 1시간과 같은) 동안 대해 쓰기 명령들의 전송을 중지하면 청크들이 상당한 시간 동안 기술적으로 액세스되지 않아도 청크들의 "온도"는 변화하지 않는 결과를 갖는다. 따라서, 청크가 상당한 시간 동안 액세스되지 않았더라도, 그 상당한 시간 동안 다른 청크가 액세스되지 않으면 해당 청크의 "온도"는 변화하지 않는다. 현실적인 관점으로부터, 모든 소프트웨어 소스들이 동일한 시간에 쓰기 명령을 전송하는 것을 중지할 것 같지는 않다. 그러나 그것이 발생하면, 본 발명의 기술적 사상의 실시 예들은 이 상황을 처리하는 것이 가능하다. 또한, 본 발명의 기술적 사상의 실시 예들은 명령 수들 대신에 클럭 시간을 사용하는 것을 지원할 수 있으며, 이는 소프트웨어 소스들이 쓰기 명령들을 발행하지 않더라도 청크들을 냉각하는 것을 초래한다.This choice of judging access times means that if all software sources stop sending write commands for some time interval (such as 1 second, 1 minute, or 1 hour) of time, the chunks are not technically accessed for a significant amount of time. The "temperature" of the chunks has an unchanging result. Thus, even if a chunk has not been accessed for a significant amount of time, the "temperature" of that chunk does not change if another chunk is not accessed for that significant time. From a practical point of view, it is unlikely that all software sources will stop sending write commands at the same time. However, when it occurs, embodiments of the technical idea of the present invention can handle this situation. In addition, embodiments of the inventive concept may support the use of clock time instead of instruction numbers, which results in cooling of chunks even if software sources do not issue write instructions.

도 8 내지 도 13과 반대로, 도 14 내지 도 20은 본 발명의 기술적 사상의 다른 실시 예를 보여준다. 도 8 내지 도 13에 도시된 본 발명의 기술적 사상의 실시 예들과 같이, 도 14 내지 도 20은 도 5의 청크 식별자들(515-1~515-3)을 도 5의 스트림 식별자들(530-1~530-3)에 사상하는 데이터 구조 및 도 4의 배경 로직(435)의 구현을 포함할 수 있다.Contrary to FIGS. 8 to 13, FIGS. 14 to 20 show another embodiment of the technical idea of the present invention. Like embodiments of the inventive concept illustrated in FIGS. 8 to 13, FIGS. 14 to 20 illustrate the chunk identifiers 515-1 to 515-3 of FIG. 5 and the stream identifiers 530-of FIG. 5. 1 to 530-3) and the background logic 435 of FIG. 4 may be implemented.

도 14는 본 발명의 기술적 사상의 제2 실시 예에 따른, 도 5의 청크 식별자들(515-1~515-3)을 도 5의 스트림 식별자들(530-1~530-3)에 사상하는 데에 사용되는 노드를 보여준다. 도 14에서, 노드들(1405-1~1405-3)이 도시되며, 노드(1405-1)가 상세히 도시된다. 노드들(1405-1~1405-3)은 어레이, 연결 리스트, 그리고 다른 데이터 구조들과 같은 임의의 원하는 방법으로 저장될 수 있다. 도 1의 솔리드 스테이트 드라이브(120)에서 각 청크에 대해 하나의 노드가 있을 수 있다.14 illustrates mapping of chunk identifiers 515-1 to 515-3 of FIG. 5 to stream identifiers 530-1 to 530-3 of FIG. 5 according to a second embodiment of the technical idea of the present invention. Shows the node used to do it. In FIG. 14, nodes 1405-1 to 1405-3 are shown, and node 1405-1 is shown in detail. Nodes 1405-1 to 1405-3 can be stored in any desired manner, such as arrays, linked lists, and other data structures. In the solid state drive 120 of FIG. 1, there may be one node for each chunk.

노드(1405-1)는 청크 식별자(515-1), 스트림 식별자(530-1), 액세스 카운트(820-1), 그리고 만료 시간(1410)을 포함하는 다양한 데이터를 포함할 수 있다. 청크 식별자(515-1), 스트림 식별자(530-1), 그리고 액세스 카운트(820-1)는 본 발명의 기술적 사상의 제1 실시 예의 그러한 요소들과 유사한 데이터를 저장한다. 만료 시간(1410)은 쓰기 명령들에 의한 액세스들의 부족으로 청크가 만료된 것으로 여겨질 시간을 나타낸다. 본 발명의 기술적 사상의 제1 실시 예와 같이, "시간"은 클럭의 측정보다는 모든 쓰기 명령들의 순서에서 특정한 쓰기 명령들의 수로 측정될 수 있다.The node 1405-1 may include various data including a chunk identifier 515-1, a stream identifier 530-1, an access count 820-1, and an expiration time 1410. The chunk identifier 515-1, the stream identifier 530-1, and the access count 820-1 store data similar to those elements of the first embodiment of the inventive concept. The expiration time 1410 represents the time at which the chunk will be considered expired due to lack of accesses by write commands. As in the first embodiment of the inventive concept, "time" may be measured as the number of specific write commands in the order of all write commands rather than measuring the clock.

도 15는 본 발명의 기술적 사상의 제2 실시 예에 따른, 도 4의 배경 로직(435)의 상세들을 보여준다. 도 15에서, 배경 로직(435)은 승격 로직(1505), 제2 줄세움기(1510), 대기열들(1520-1~1520-3)을 위한 저장소(1515), 그리고 격하 로직(1525)을 포함한다. 승격 로직(1505)은 적절한 때에 청크를 더 높은 우선순위 스트림으로 승격할 수 있다. 제2 줄세움기(1510)(동작이 유사하더라도, 도 4의 줄세움기(430)로부터 구별하기 위해 명명된)는 도 5의 청크 식별자들(515-1~515-3)을 대기열들(1520-1~1520-3)에 배치할 수 있다. 제2 줄세움기(1510)는 도 4의 줄세움기(430)와 유사한 구조를 가질 수 있다. 도 10의 저장소(1005)와 같이, 저장소(1515)는 배경 로직(435) 내의 별도의 저장소이기보다는 실질적으로 도 3의 저장소(330)의 일부일 수 있다. 본 발명의 기술적 사상의 실시 예들은 임의의 수의 대기열들을 지원할 수 있다. 세 대기열들(1520-1~1520-3)은 예시에 불과하다. 또한, 도 5의 각 스트림 식별자(530-1~530-3)에 대해 하나의 대기열이 존재할 수 있다. 즉, 대기열들(1520-1~1520-3)의 수와 도 3의 청크 식별자들(515-1~515-3)의 수가 동일한 것은 우연의 일치이다. 도 5의 청크 식별자들(515-1~515-3)이 대기열들(1520-1~1520-3)의 맨앞에 도달하면, 격하 로직(1525)은 도 5의 청크 식별자들(515-1~51503(을 격하할지를 판단할 수 있다.15 shows details of the background logic 435 of FIG. 4 according to a second embodiment of the inventive concept. In FIG. 15, background logic 435 includes promotion logic 1505, second line up 1510, storage 1515 for queues 1521-1520-3, and down logic 1525. Includes. Promotion logic 1505 may promote the chunk to a higher priority stream when appropriate. The second line up device 1510 (named to distinguish it from the line up device 430 of FIG. 4, even though the operation is similar) queues the chunk identifiers 515-1 to 515-3 of FIG. 5 ( 1520-1~1520-3). The second line up device 1510 may have a structure similar to the line up device 430 of FIG. 4. Like storage 1005 of FIG. 10, storage 1515 may be substantially part of storage 330 of FIG. 3 rather than a separate storage within background logic 435. Embodiments of the inventive concept may support any number of queues. The three queues 1520-1 to 1520-3 are only examples. In addition, one queue may exist for each of the stream identifiers 530-1 to 530-3 of FIG. 5. That is, it is a coincidence that the number of queues 150-1 to 1520-3 and the number of chunk identifiers 515-1 to 515-3 of FIG. 3 are the same. When the chunk identifiers 515-1 to 515-3 of FIG. 5 reach the front of the queues 150-1 to 1520-3, the degrading logic 1525 is performed by the chunk identifiers 515-1 to 5 of FIG. 51503 (It can be judged whether to downgrade.

도 16은 도 15의 대기열들(1520-1~1520-3)에서 청크 식별자들의 승격 및 격하를 보여준다. 도 16에서, 도 3의 청크 식별자들(515-1~515-3)은 문자들(a~d)을 이용하여 표현된다. 대기열들(1520-1~1520-3)의 명명되지 않은 엔트리들은 도 16에 도시된 예에서 사용되지 않으며, 이 예에서 별도로 사용되지 않으면 임의의 청크 식별자를 저장할 수 있다.16 shows promotion and demotion of chunk identifiers in the queues 1520-1 to 1520-3 of FIG. 15. In FIG. 16, the chunk identifiers 515-1 to 515-3 of FIG. 3 are expressed using characters a to d. Unnamed entries of the queues 1520-1 to 1520-3 are not used in the example shown in FIG. 16, and if not used separately in this example, an arbitrary chunk identifier may be stored.

첫째로, 도 16에서, 제출 대기열(335)의 맨앞 (1605)에 청크 식별자(a)를 갖는 제출 대기열(335)이 도시된다. 청크 식별자(a)는 이전에 액세스되지 않은 청크를 식별할 수 있다. 따라서, 청크 식별자(a)가 제출 대기열(335)로부터 제거된 후, 점선 화살표(1610)로 도시된 바와 같이, 청크 식별자(a)는 "가장 차가운" 스트림에 대한 대기열(1520-1)의 꼬리에 추가될 수 있다.First, in FIG. 16, a submission queue 335 with a chunk identifier (a) at the forefront 1605 of the submission queue 335 is shown. The chunk identifier (a) may identify a chunk that has not been accessed previously. Thus, after the chunk identifier (a) is removed from the submission queue (335), as shown by the dashed arrow (1610), the chunk identifier (a) is the tail of the queue (1520-1) for the "coolest" stream. Can be added to.

둘째로, 도 16에서, 제출 대기열(335)은 청크 식별자(b)를 포함할 수 있다(청크 식별자(a)가 처리된 후에 제출 대기열(335)의 맨앞으 (1605)로 이동될 수 있는). 청크 식별자(b)에 대해 도 14의 액세스 카운트(820-1)를 증가한 결과로서, 청크 식별자(b)는 "더 뜨거운" 스트림으로 승격될 수 있다. 점선 화살표(1615)로 도시된 바와 같이, 청크 식별자(b)가 제출 대기열(335)로부터 제거된 후에, 청크 식별자(b)는 대기열(1520-1)의 엔트리(1620)로부터 대기열(1520-2)의 꼬리로 이동될 수 있다.Secondly, in FIG. 16, the submission queue 335 may include a chunk identifier b (which may be moved to the front of the submission queue 335 after the chunk identifier a is processed (1605)). . As a result of increasing the access count 820-1 of FIG. 14 with respect to the chunk identifier (b), the chunk identifier (b) can be promoted to a "hotter" stream. As shown by the dotted arrow 1615, after the chunk identifier b is removed from the submission queue 335, the chunk identifier b is transferred from the entry 1620 of the queue 1520-1 to the queue 1520-2 ) Can be moved to the tail.

셋째로, 도 5의 격하 로직(1525)은 대기열들(1520-1~1520-3)의 맨앞(1625-1~1625-3)을 교대로 점검할 수 있다. 예를 들어, 도 15의 격하 로직(1525)은 대기열(1520-3)의 맨앞 (1625-3)의 청크 식별자(c)를 점검할 수 있다. 청크 식별자(c)가 격하될 예정이면, 청크 식별자(c)는 대기열(1520-3)의 맨앞으로부터 대기열(1520-2)(다음 "가장 뜨거운" 스트림에 대한 대기열)의 꼬리로 이동된다. 청크 식별자(c)가 격하된 결과로, 도 17을 참조하여 아래에서 기술되는 바와 같이, 대기열(1520-3)의 청크 식별자(d)가 가장 뜨거운 청크가 될 수 있다.Third, the downgrade logic 1525 of FIG. 5 may alternately check the fronts 1625-1 to 1625-3 of the queues 150-1 to 1520-3. For example, the downgrade logic 1525 of FIG. 15 may check the chunk identifier c of the front 1625-3 of the queue 1520-3. If the chunk identifier c is going to be degraded, the chunk identifier c is moved from the front of the queue 1520-3 to the tail of the queue 1520-2 (the queue for the next "hottest" stream). As a result of the chunk identifier (c) being degraded, as described below with reference to FIG. 17, the chunk identifier (d) of the queue 1520-3 may be the hottest chunk.

도 17은 도 15의 승격 로직(1505)의 상세들을 보여준다. 도 17에서, 승격 로직(1505)은 증가기(1705), 스트림 식별자 조절기(1710), 청크 만료 로직(1715), 그리고 가장 뜨거운 청크 로직(1720)을 포함할 수 있다. 증가기(1705)는 도 14의 액세스 카운트(820-1)를 증가하여 조절된 액세스 카운트를 생산할 수 있다. 스트림 식별자 조절기(1710)는 도 18에 도시된 바와 같이 조절된 액세스 카운트로부터 도 5의 스트림 식별자(530-1)를 계산할 수 있다. 스트림 식별자 조절기(1710)는 도 9의 스트림 식별자 조절기(920)와 구조적으로 유사할 수 있다.17 shows details of the promotion logic 1505 of FIG. 15. In FIG. 17, the promotion logic 1505 may include an increaser 1705, a stream identifier adjuster 1710, a chunk expiration logic 1715, and a hottest chunk logic 1720. The increaser 1705 may increase the access count 820-1 of FIG. 14 to produce an adjusted access count. The stream identifier adjuster 1710 may calculate the stream identifier 530-1 of FIG. 5 from the adjusted access count as illustrated in FIG. 18. The stream identifier adjuster 1710 may be structurally similar to the stream identifier adjuster 920 of FIG. 9.

도 17로 돌아가면, 청크 만료 로직(1715)은 청크에 대한 만료 시간을 판단할 수 있다. 청크에 대한 만료 시간은 청크 식별자에 대한 현재 액세스 시간 더하기 장치 수명으로 판단될 수 있다. 장치 수명은 다음에서 논의되는 어느 청크가 가장 뜨거운 청크인지에 의존하는 시간의 간격이다. 도 19는 수식으로서 이를 보여준다. 만료 시간(1410)은 액세스 카운트(820-1)(위에서 논의된 바와 같이, 도 5의 청크 식별자(515-1)에 대한 현재 액세스 시간) 및 장치 수명(1905)의 합이다.Returning to FIG. 17, the chunk expiration logic 1715 may determine an expiration time for the chunk. The expiration time for the chunk may be determined as the current access time for the chunk identifier plus the device lifetime. Device lifetime is an interval of time depending on which chunk is the hottest chunk, discussed below. 19 shows this as an equation. The expiration time 1410 is the sum of the access count 820-1 (the current access time for the chunk identifier 515-1 of FIG. 5, as discussed above) and the device lifetime 1905.

끝으로, 다시 도 17을 참조하면, 가장 뜨거운 청크 로직(1720)은 도 5의 청크 식별자(515-1)가 지금 가장 뜨거운 청크를 나타내는지를 판단할 수 있다. 가장 뜨거운 청크는 가장 높은 스트림 우선순위를 갖는 청크 식별자로 정의될 수 있다. 가장 높은 스트림 우선순위를 갖는 다수의 청크 식별자들이 있으면, 임의의 선택 알고리즘이 사용되어 가장 뜨거운 스트림 우선순위를 갖는 특정한 청크 식별자가 가장 뜨거운 청크로 선택될 수 있다. 예를 들어, 가장 뜨거운 스트림 우선순위를 나타내는 대기열의 맨앞의 청크 식별자가 가장 뜨거운 청크로 선택될 수 있다. 또는, 가장 최신의 액세스(즉 가장 높은 현재 액세스 시간)를 갖는 청크 식별자가 가장 뜨거운 청크로 선택될 수 있다. 또는, 가장 뜨거운 스트림 우선순위를 나타내는 대기열의 꼬리의 청크 식별자가 가장 뜨거운 청크로 선택될 수 있다. 도 5의 청크 식별자(515-1)가 가장 뜨거운 청크이면, 도 19의 장치 수명(1905)은 도 5의 청크 식별자(515-1)의 현재 액세스 시간 및 도 5의 청크 식별자(515-1)의 이전 액세스 시간 사이의 차이로 계산된다. 도 19의 장치 수명(1905)은 특정한 청크의 두 쓰기 명령들 사이에서 예측되는 최대 간격을 나타낼 수 있으며, 가장 뜨거운 청크에 대한 가장 최신의 두 쓰기 명령들 사이의 간격에 기반하여 정의될 수 있다. 도 19의 장치 수명(1905)은 도 14의 청크 식별자(515-1)가 격하될 때에 영향을 줄 수 있는 도 14의 만료 시간(1410)을 판단하는 데에 사용될 수 있다.Finally, referring again to FIG. 17, the hottest chunk logic 1720 may determine whether the chunk identifier 515-1 of FIG. 5 represents the currently hottest chunk. The hottest chunk may be defined as a chunk identifier having the highest stream priority. If there are multiple chunk identifiers having the highest stream priority, a random selection algorithm is used so that a specific chunk identifier having the hottest stream priority can be selected as the hottest chunk. For example, the first chunk identifier of the queue indicating the hottest stream priority may be selected as the hottest chunk. Alternatively, the chunk identifier having the most recent access (ie, the highest current access time) may be selected as the hottest chunk. Alternatively, the chunk identifier of the tail of the queue indicating the hottest stream priority may be selected as the hottest chunk. If the chunk identifier 515-1 of FIG. 5 is the hottest chunk, the device lifetime 1905 of FIG. 19 is the current access time of the chunk identifier 515-1 of FIG. 5 and the chunk identifier 515-1 of FIG. 5 Is calculated as the difference between the previous access times. The device lifetime 1905 of FIG. 19 may represent a predicted maximum interval between two write commands of a specific chunk, and may be defined based on the interval between the two most recent write commands for the hottest chunk. The device lifetime 1905 of FIG. 19 may be used to determine the expiration time 1410 of FIG. 14 that may have an effect when the chunk identifier 515-1 of FIG. 14 is degraded.

도 20은 도 15의 격하 로직(1525)의 상세들을 보여준다. 도 20에서, 격하 로직(1525)은 비교기(2005) 및 감소기(2010)를 포함하는 것으로 도시된다. 비교기(2005)는 현재 시간(다시금, 클럭 시간보다는 가장 최신의 쓰기 요청의 수일 수 있는)을 도 14의 만료 시간(1410)과 비교할 수 있다. 현재 시간이 도 14의 만료 시간(1410)을 지났으면, 해당 청크는 쓰기 명령들 없이 도 19의 장치 수명(1905)으로 측정될 수 있는 시간 간격 동안 방치되었으므로 이전보다 더 식은 것으로 여겨질 수 있다. 바꿔 말하면, 도 19의 장치 수명(1905)이 임의의 주어진 청크에 대한 쓰기들 사이의 예측되는 쓰기 명령들의 수를 나타내면, 도 14의 청크 식별자(515-1)의 가장 최신의 액세스 시간에 도 19의 장치 수명(1905)을 더한 것으로 계산되는 도 14의 만료 시간(1410)은 도 14의 청크 식별자(515-1)가 기입되고 그리고 냉각된 것으로 여겨지지 않는 마지막 시간을 나타낼 수 있다. 도 14의 만료 시간(1410)이 지나면, 도 14의 청크 식별자(515-1)는 다소 냉각되었고 격하될 수 있다. 이 경우에, 감소기(2010)는 도 5의 청크 식별자(515-1)의 감소된 "온도"에 대응하도록 도 5의 스트림 식별자(530-1)를 줄여 도 5의 청크 식별자(515-1)의 우선순위를 줄일 수 있다.20 shows details of the downgrade logic 1525 of FIG. 15. In FIG. 20, the degrading logic 1525 is shown as including a comparator 2005 and a reducer 2010. The comparator 2005 may compare the current time (again, which may be the number of the most recent write requests rather than the clock time) with the expiration time 1410 of FIG. 14. If the current time has passed the expiration time 1410 of FIG. 14, the chunk may be considered cooler than before because it has been left for a time interval that can be measured by the device lifetime 1905 of FIG. 19 without write commands. In other words, if the device lifetime 1905 of FIG. 19 represents the number of predicted write instructions between writes for any given chunk, then at the most recent access time of the chunk identifier 515-1 of FIG. The expiration time 1410 of FIG. 14, calculated as adding the device lifetime 1905 of FIG. 14, may represent the last time that the chunk identifier 515-1 of FIG. 14 was written and is not considered cooled. After the expiration time 1410 of FIG. 14 has elapsed, the chunk identifier 515-1 of FIG. 14 has cooled down somewhat and may be degraded. In this case, the reducer 2010 reduces the stream identifier 530-1 of FIG. 5 to correspond to the reduced "temperature" of the chunk identifier 515-1 of FIG. 5 to reduce the chunk identifier 515-1 of FIG. ) Priority can be reduced.

도 14의 만료 시간(1410)이 지나지 않았으면, 도 14의 청크 식별자(515-1)는 아직 냉각되지 않았고, 도 14의 청크 식별자(515-1)는 대기열의 맨앞에 남겨질 수 있다. 이는 해당 대기열의 다른 청크 식별자들이 격하되지 않을 것을 의미하지 않음에 주의하여야 한다. 청크들이 액세스 된 순서로 청크 식별자들이 대기열들에 배치되므로, 도 14의 청크 식별자(515-1)는 가장 오래전에 액세스 된(해당 대기열의 청크 식별자들 중의) 청크 식별자이고, 따라서 처음으로 만료될 청크 식별자일 것이다. 도 14의 청크 식별자(515-1)가 다시 액세스 되면(따라서 "뜨겁게" 남겨지면), 도 14의 청크 식별자(515-1)는 대기열의 꼬리로 이동되고, 다른 청크 식별자가 해당 대기열의 맨앞에 남겨지며 따라서 잠재적으로 격하의 대상이 된다.If the expiration time 1410 of FIG. 14 has not passed, the chunk identifier 515-1 of FIG. 14 has not yet been cooled, and the chunk identifier 515-1 of FIG. 14 may be left at the front of the queue. It should be noted that this does not mean that other chunk identifiers in the queue will not be degraded. Since the chunk identifiers are placed in the queues in the order in which the chunks are accessed, the chunk identifier 515-1 of FIG. 14 is the chunk identifier that was accessed the oldest (among the chunk identifiers of the queue), and thus the first chunk to expire. It will be an identifier. When the chunk identifier 515-1 of FIG. 14 is accessed again (and thus remains "hot"), the chunk identifier 515-1 of FIG. 14 is moved to the tail of the queue, and another chunk identifier is at the front of the queue. It is left behind and is therefore potentially degraded.

도 21a 및 도 21b는 본 발명의 기술적 사상의 실시 예에 따른, 도 5의 쓰기 명령(505-1)에 대해 도 5의 스트림 식별자(530-1)를 판단하기 위한 예시적인 절차의 순서도를 보여준다. 도 21a에서, 블록(2105)에서, 도 4의 수신기(405)는 소프트웨어 소스로부터 쓰기 명령(505-1)을 수신할 수 있다. 블록(2110)에서, 도 5의 논리 블록 주소(510-1)가 도 5의 쓰기 명령(505-1)으로부터 읽힐 수 있다. 블록(2115)에서, 도 4의 논리 블록 주소 사상기(410)는 도 5의 논리 블록 주소(510-1)를 도 5의 청크 식별자(515-1)에 사상할 수 있다. 위에서 기술된 바와 같이, 도 5의 논리 블록 주소 사상기(410)는 원하는 임의의 방법으로, 예를 들어 도 5의 논리 블록 주소(510-1)로부터 특정한 비트들을 걸러냄으로써 또는 도 5의 논리 블록 주소(510-1)를 도 7의 청크 사이즈(705)로 나눔으로써 도 5의 청크 식별자(515-1)를 판단할 수 있다. 블록(2120)에서, 도 5의 스트림 선택 로직(415)은 도 5의 청크 식별자(515-1)에 대해 사용될 스트림 식별자(530-1)를 선택할 수 있다. 위에서 기술된 바와 같이, 도 5의 스트림 선택 로직(415)은 임의의 필요한 방법으로, 예를 들어 도 3의 청크-스트림 사상기(340)로부터 도 5의 스트림 식별자(530-1)를 검색함으로써, 도 8의 액세스 카운트(820-1)로부터 도 5의 스트림 식별자(530-1)를 계산함으로써, 라운드 로빈 방식으로 장치 스트림들을 할당함으로써, 또는 임의의 다른 필요한 시도로 동작할 수 있다. 블록(2125)에서, 도 4의 스트림 식별자 추가기(420)는 도 5의 스트림 식별자(530-1)를 도 5의 쓰기 명령(505-1)에 추가할 수 있다. 끝으로, 블록(2130)에서, 도 5의 쓰기 명령(505-1)은 도 5의 쓰기 명령(505-1)을 도 1의 솔리드 스테이트 드라이브(120)로 전송하는 도 4의 송신기(425)를 포함할 수 있는 도 1의 솔리드 스테이트 드라이브(120)에 의해 처리되어 지정된 쓰기 동작을 수행할 수 있다.21A and 21B are flowcharts of exemplary procedures for determining the stream identifier 530-1 of FIG. 5 with respect to the write command 505-1 of FIG. 5 according to an embodiment of the inventive concept. . In FIG. 21A, at block 2105, the receiver 405 of FIG. 4 may receive a write command 505-1 from a software source. At block 2110, the logical block address 510-1 of FIG. 5 may be read from the write command 505-1 of FIG. 5. In block 2115, the logical block address mapper 410 of FIG. 4 may map the logical block address 510-1 of FIG. 5 to the chunk identifier 515-1 of FIG. 5. As described above, the logical block address mapper 410 of FIG. 5 can be configured in any desired manner, for example, by filtering specific bits from the logical block address 510-1 of FIG. The chunk identifier 515-1 of FIG. 5 may be determined by dividing the address 510-1 by the chunk size 705 of FIG. 7. At block 2120, the stream selection logic 415 of FIG. 5 may select the stream identifier 530-1 to be used for the chunk identifier 515-1 of FIG. 5. As described above, the stream selection logic 415 of FIG. 5 may be performed in any necessary manner, e.g., by retrieving the stream identifier 530-1 of FIG. 5 from the chunk-stream mapper 340 of FIG. , By calculating the stream identifier 530-1 of FIG. 5 from the access count 820-1 of FIG. 8, allocating device streams in a round robin manner, or in any other necessary attempt. In block 2125, the stream identifier adder 420 of FIG. 4 may add the stream identifier 530-1 of FIG. 5 to the write command 505-1 of FIG. 5. Finally, at block 2130, the write command 505-1 of FIG. 5 is the transmitter 425 of FIG. 4 that transmits the write command 505-1 of FIG. 5 to the solid state drive 120 of FIG. It is processed by the solid state drive 120 of FIG. 1, which may include, to perform a designated write operation.

이때, 도 5의 쓰기 명령(505-1)은 완전히 처리된다. 그러나 도 5의 청크 식별자(515-1)에 할당된 도 5의 스트림 식별자(530-1)를 갱신하는 것과 같은 다른 처리는 여전히 수행된다. 블록(2135)(도 21a)에서, 도 4의 줄세움기(430)는 추가 처리를 위해 도 5의 청크 식별자(515-1)를 도 3의 제출 대기열(335)에 추가할 수 있다. 블록(2140)에서, 도 5의 청크 식별자(515-1)가 도 3의 제출 대기열(335)의 맨앞에 도달할 때, 도 5의 청크 식별자(515-1)는 도 3의 제출 대기열(335)로부터 제거될 수 있다. 끝으로, 블록(2145)에서, 도 4의 배경 로직(435)은 도 5의 청크 식별자(515-1)에 대한 도 5의 스트림 식별자(530-1)를 갱신할 수 있다. 도 5의 청크 식별자(515-1)에 대한 도 5의 스트림 식별자(530-1)를 갱신하는 도 4의 배경 로직(435)을 위한 다양한 시도들은 도 24 및 도 25a 내지 도 25c를 참조하여 아래에서 설명된다.At this time, the write command 505-1 of FIG. 5 is completely processed. However, other processing such as updating the stream identifier 530-1 of FIG. 5 assigned to the chunk identifier 515-1 of FIG. 5 is still performed. At block 2135 (FIG. 21A), the line up 430 of FIG. 4 may add the chunk identifier 515-1 of FIG. 5 to the submission queue 335 of FIG. 3 for further processing. At block 2140, when the chunk identifier 515-1 of FIG. 5 reaches the front of the submit queue 335 of FIG. 3, the chunk identifier 515-1 of FIG. ) Can be removed from. Finally, at block 2145, the background logic 435 of FIG. 4 may update the stream identifier 530-1 of FIG. 5 with respect to the chunk identifier 515-1 of FIG. 5. Various attempts for the background logic 435 of FIG. 4 to update the stream identifier 530-1 of FIG. 5 to the chunk identifier 515-1 of FIG. 5 are described below with reference to FIGS. 24 and 25A-25C. It is described in.

도 22는 본 발명의 기술적 사상의 실시 예에 따른, 도 5의 논리 블록 주소(510-1)를 도 5의 청크 식별자(515-1)에 사상하는 도 4의 논리 블록 주소 사상기(410)를 위한 예시적인 절차의 순서도를 보여준다. 도 22에서, 블록(2205)에서, 도 4의 논리 블록 주소 사상기(410)는 도 5의 주소 마스크(525)를 사용하여 도 1의 논리 블록 주소(510-1)로부터 비트들을 걸러내고 도 5의 청크 식별자(515-1)를 남길 수 있다. 그렇지 않으면, 블록(2210)에서, 도 4의 논리 블록 주소 사상기(410)는 도 5의 논리 블록 주소(510-1)를 도 7의 청크 사이즈(705)로 나누어 도 5의 청크 식별자(515-1)를 판단할 수 있다.22 is a logical block address mapper 410 of FIG. 4 that maps the logical block address 510-1 of FIG. 5 to the chunk identifier 515-1 of FIG. 5 according to an embodiment of the inventive concept. Shows a flow chart of an exemplary procedure for. In FIG. 22, at block 2205, the logical block address mapper 410 of FIG. 4 filters bits from the logical block address 510-1 of FIG. 1 using the address mask 525 of FIG. The chunk identifier 515-1 of 5 may be left. Otherwise, at block 2210, the logical block address mapper 410 of FIG. 4 divides the logical block address 510-1 of FIG. 5 by the chunk size 705 of FIG. 7 and the chunk identifier 515 of FIG. -1) can be judged.

도 23a 및 도 23b는 본 발명의 기술적 사상의 제1 실시 예에 따른, 순차 로직을 이용하여 도 5의 청크 식별자(515-1)에 대한 도 5의 스트림 식별자(530-1)를 판단하기 위한 예시적인 절차의 순서도를 보여준다. 도 23a에서, 블록(2305)에서, 도 4의 스트림 선택 로직(415)은 쓰기 명령들(505-1~505-3)에서 순차 논리 블록 주소들에 대한 테스트 중인지 결정할 수 있다. 예를 들어, 다중-대기열 시도를 사용하는 본 발명의 기술적 사상의 실시 예들에서, 도 4의 스트림 선택 로직(415)은 도 5의 쓰기 명령(505-1)이 이전 쓰기 명령들에 순차적인지 고려하지 않을 것이다. 도 4의 스트림 선택 로직(415)이 순차 쓰기 명령들에 대해 테스트중이 아니면, 블록(2315)에서, 도 4의 스트림 선택 로직(415)은 예를 들어, 도 3의 청크-스트림 사상기(340)로부터 도 5의 스트림 식별자(530-1)를 엑세스 함으로써 도 5의 청크 식별자(515-1)와 현재 연관된 도 5의 스트림 식별자(530-1)를 판단할 수 있다. 도 4의 스트림 선택 로직(415)이 도 5의 스트림 식별자(530-1)를 어떻게 판단하는지의 세부 내용은 도 3의 청크-스트림 사상기(340)가 어떻게 구현되는지에 의존할 수 있다. 청크-스트림 사상기(340)가 도 8의 SFR 표(805)를 포함하면, 도 4의 스트림 선택 로직(415)은 테이블 검색을 수행할 수 있다. 청크-스트림 사상기(340)가 도 14의 노드들(1405-1~1405-3)을 포함하면, 도 4의 스트림 선택 로직(415)은 도 5의 스트림 식별자(530-1)를 판단하기 전에 노드들을 검색하여 도 5의 청크 식별자(515-1)를 찾아야만 할 것이다. 23A and 23B are for determining the stream identifier 530-1 of FIG. 5 with respect to the chunk identifier 515-1 of FIG. 5 using sequential logic according to the first embodiment of the technical idea of the present invention. A flowchart of an exemplary procedure is shown. In FIG. 23A, at block 2305, the stream selection logic 415 of FIG. 4 may determine whether the write commands 505-1 to 505-3 are being tested for sequential logical block addresses. For example, in embodiments of the inventive concept using a multi-queue attempt, the stream selection logic 415 of FIG. 4 considers whether the write command 505-1 of FIG. 5 is sequential to the previous write commands. I won't. If the stream selection logic 415 of FIG. 4 is not testing for sequential write instructions, then at block 2315, the stream selection logic 415 of FIG. By accessing the stream identifier 530-1 of FIG. 5 from 340, it is possible to determine the stream identifier 530-1 of FIG. 5 that is currently associated with the chunk identifier 515-1 of FIG. 5. Details of how the stream selection logic 415 of FIG. 4 determines the stream identifier 530-1 of FIG. 5 may depend on how the chunk-stream mapper 340 of FIG. 3 is implemented. If the chunk-stream mapper 340 includes the SFR table 805 of FIG. 8, the stream selection logic 415 of FIG. 4 may perform a table search. When the chunk-stream mapper 340 includes the nodes 1405-1 to 1405-3 of FIG. 14, the stream selection logic 415 of FIG. 4 determines the stream identifier 530-1 of FIG. Before, it will be necessary to search for nodes to find the chunk identifier 515-1 of FIG. 5.

반면, 도 4의 스트림 선택 로직(415)이 순차 쓰기 명령들에 대해 테스트 중이면, 블록(2315)에서, 도 4의 스트림 선택 로직(415)은 도 10의 엔트리들(1020-1~1020-8)의 도 10의 윈도(1015)를 식별할 수 있다. 블록(2320)에서, 도 4의 스트림 선택 로직(415)은 도 5의 논리 블록 주소(510-1)가 도 10의 윈도(1015) 내의 도 10의 임의의 엔트리(1020-1~1020-8)에 대한 도 10의 끝 논리 블록 주소(1030)에 순차적인지 판단할 수 있다. 도 5의 논리 블록 주소(515-1)가 도 10의 윈도(1015) 내의 도 10의 임의의 엔트리(1020-1~1020-8)에 대한 도 10의 끝 논리 블록 주소(1030)에 순차적이지 않으면, 블록(2310)에서 도 4의 스트림 선택 로직(415)은 도 5의 청크 식별자(515-1)에 현재 연관된 도 5의 스트림 식별자(530-1)를 위에서 기술된 것과 같이 판단할 수 있다.On the other hand, if the stream selection logic 415 of FIG. 4 is testing for sequential write commands, at block 2315, the stream selection logic 415 of FIG. The window 1015 of FIG. 10 of 8) can be identified. At block 2320, the stream selection logic 415 of FIG. 4 indicates that the logical block address 510-1 of FIG. 5 is assigned to any of the entries 1021-1020-8 of FIG. 10 in window 1015 of FIG. It may be determined whether it is sequential to the last logical block address 1030 of FIG. 10 for ). The logical block address 515-1 of FIG. 5 is sequential to the last logical block address 1030 of FIG. 10 for any of the entries 1020-1 to 1020-8 of FIG. 10 in the window 1015 of FIG. Otherwise, in block 2310, the stream selection logic 415 of FIG. 4 may determine the stream identifier 530-1 of FIG. 5 currently associated with the chunk identifier 515-1 of FIG. 5 as described above. .

도 4의 스트림 선택 로직(415)이 순차 쓰기 명령들에 대한 테스트 중이고 그리고 도 5의 논리 블록 주소(510-1)가 도 10의 윈도(1015) 내의 도 10의 임의의 엔트리(1020-1~1020-8)에 순차적이면, 블록(2325)(도 23b)에서 도 4의 스트림 선택 로직(415)은 이전 쓰기 명령에 할당된 도 5의 스트림 식별자(530-1)를 판단할 수 있다. 블록(2125)에서(도 21a 및 도 21b의 일부이고, 따라서 설명의 목적들로 도 23b에서 점선들로 도시된), 이전 쓰기 명령에 할당된 도 5의 스트림 식별자(530-1)는 도 5의 쓰기 명령(505-1)에 할당될 수 있다. 블록(2330)에서, 도 4의 스트림 선택 로직(415)은 도 10의 윈도(1015) 내의 가장 오래된 엔트리인 도 10의 엔트리(1020-1~1020-8)를 식별할 수 있다. 끝으로, 블록(2335)에서, 도 4의 스트림 선택 로직(415)은 도 5의 윈도(1015) 내의 가장 오래된 엔트리를 제거하고, 도 5의 쓰기 명령(505-1)에 대응하는 새로운 엔트리를 추가할 수 있다. 도 4의 스트림 선택 로직(415)이 이 삭제 및 추가를 어떻게 수행하는지의 기법은 도 10의 윈도(1015)에 사용된 구조에 의존한다. 도 10의 윈도(1015)가 도 10의 엔트리들(1020-1~1020-8)의 어레이 또는 연결 리스트를 저장하면, 삭제 및 추가는 가장 오래된 엔트리를 새 값으로 덮어쓰고 그리고 포인터를 어레이 또는 연결 리스트의 맨앞으로 갱신하는 것과 같은 것을 포함할 수 있다. 반면, 도 10의 윈도(1015)에 대해 다른 구조를 사용하면, 삭제 및 추가는 가장 오래된 엔트리에 대한 메모리 객체를 삭제 및 할당 해제하고 그리고 도 5의 쓰기 명령(505-1)에 대한 새로운 메모리 객체를 할당하는 것을 포함할 수 있다.The stream selection logic 415 of FIG. 4 is being tested for sequential write commands, and the logical block address 510-1 of FIG. 5 is an arbitrary entry 1010-1-of FIG. 10 in the window 1015 of FIG. 1020-8), in block 2325 (FIG. 23B), the stream selection logic 415 of FIG. 4 may determine the stream identifier 530-1 of FIG. 5 assigned to the previous write command. At block 2125 (which is part of FIGS. 21A and 21B, and thus shown by dotted lines in FIG. 23B for explanatory purposes), the stream identifier 530-1 of FIG. 5 assigned to the previous write command is shown in FIG. May be assigned to the write command 505-1 of. At block 2330, the stream selection logic 415 of FIG. 4 may identify entries 1010-1-1020-8 of FIG. 10, which are the oldest entries in window 1015 of FIG. 10. Finally, at block 2335, the stream selection logic 415 of FIG. 4 removes the oldest entry in the window 1015 of FIG. 5 and creates a new entry corresponding to the write command 505-1 of FIG. Can be added. The technique of how the stream selection logic 415 of FIG. 4 performs this deletion and addition depends on the structure used in the window 1015 of FIG. 10. If the window 1015 of FIG. 10 stores the array or linked list of the entries 1010-1 to 1020-8 of FIG. 10, the deletion and addition overwrite the oldest entry with a new value, and the array or concatenation of the pointer. This can include things like updating to the beginning of the list. On the other hand, if a different structure is used for the window 1015 of FIG. 10, the deletion and addition delete and deallocate the memory object for the oldest entry, and the new memory object for the write command 505-1 of FIG. May include allocating.

도 24는 본 발명의 기술적 사상의 제1 실시 예에 따른, 도 8의 SFR 표(805)의 배경 갱신을 수행하기 위한 예시적인 절차의 순서도를 보여준다. 도 24에서, 블록(2405)에서, 도 9의 액세스 카운트 조절기(915)는 도 8의 액세스 카운트(820-1)를 (예를 들어, 산술 논리부의 증가기를 이용하여)증가 할 수 있다. 블록(2410)에서, 도 9의 최신 로직(910)은 도 11의 최신 가중(1105)을 (예를 들어, 산술 논리부를 이용하여)계산할 수 있다. 블록(2415)에서, 도 9의 액세스 카운트 조절기(915)는 도 8의 액세스 카운트(820-1)(블록(2405)에서 증가된)를 (예를 들어, 산술 논리부를 이용하여) 도 11의 최신 가중(1105)으로 나눌 수 있다. 끝으로, 블록(2420)에서, 도 9의 스트림 식별자 조절기(920)는 도 5의 청크 식별자(515-1)와 연관시킬 새로운 스트림 식별자를 결정할 수 있다. 예를 들어, 도 9의 스트림 식별자 조절기(920)는 산술 논리부를 이용하여 도 12의 조절된 액세스 카운트(1205)의 로그를 계산할 수 있다.24 is a flowchart of an exemplary procedure for performing a background update of the SFR table 805 of FIG. 8 according to the first embodiment of the inventive concept. In FIG. 24, at block 2405, the access count adjuster 915 of FIG. 9 may increment the access count 820-1 of FIG. 8 (eg, using an incrementer of arithmetic logic). At block 2410, the latest logic 910 of FIG. 9 may calculate the latest weight 1105 of FIG. 11 (eg, using arithmetic logic). At block 2415, the access count adjuster 915 of FIG. 9 is the access count 820-1 of FIG. 8 (incremented at block 2405) of FIG. 11 (e.g., using arithmetic logic). It can be divided by the latest weight (1105). Finally, at block 2420, the stream identifier adjuster 920 of FIG. 9 may determine a new stream identifier to be associated with the chunk identifier 515-1 of FIG. 5. For example, the stream identifier adjuster 920 of FIG. 9 may calculate the log of the adjusted access count 1205 of FIG. 12 using an arithmetic logic unit.

도 24a 내지 도 25c는 본 발명의 기술적 사상의 제2 실시 예에 따른, 도 14의 노드(1405-1)의 배경 갱신을 수행하기 위한 예시적인 절차의 순서도를 보여준다. 도 25a에서, 블록(2505)에서, 도 17의 증가기(1705)는 도 14의 액세스 카운트(820-1)를 증가할 수 있다. 블록(2510)에서, 도 17의 청크 만료 로직(1715)은 도 14의 청크 식별자(515-1)에 대한 도 14의 만료 시간(1410)을 판단할 수 있다. 블록(2515)에서, 도 17의 스트림 식별자 조절기(1710)는 도 14의 청크 식별자(515-1)에 대한 도 14의 스트림 식별자(530-1)를 판단할 수 있다. 도 17의 스트림 식별자 조절기(1710)는, 예를 들어 도 14의 노드(1405-1)로부터 도 14의 스트림 식별자(530-1)를 액세스함으로써 도 14의 스트림 식별자(530-1)를 판단할 수 있다. 블록(2520)에서, 도 15의 제2 줄세움기(1510)는 도 14의 스트림 식별자(530-1)에 대응하는 도 15의 대기열들(1520-1~1520-3) 중 하나에 도 14의 청크 식별자(515-1)를 배치할 수 있다.24A to 25C are flowcharts of exemplary procedures for performing background update of node 1405-1 of FIG. 14 according to a second embodiment of the inventive concept. In FIG. 25A, at block 2505, the increaser 1705 of FIG. 17 may increment the access count 820-1 of FIG. 14. At block 2510, the chunk expiration logic 1715 of FIG. 17 may determine the expiration time 1410 of FIG. 14 for the chunk identifier 515-1 of FIG. 14. At block 2515, the stream identifier adjuster 1710 of FIG. 17 may determine the stream identifier 530-1 of FIG. 14 with respect to the chunk identifier 515-1 of FIG. 14. The stream identifier controller 1710 of FIG. 17 may determine the stream identifier 530-1 of FIG. 14 by accessing the stream identifier 530-1 of FIG. 14 from the node 1405-1 of FIG. 14, for example. I can. In block 2520, the second line up 1510 of FIG. 15 is assigned to one of the queues 1520-1 to 1520-3 of FIG. 15 corresponding to the stream identifier 530-1 of FIG. 14. The chunk identifier 515-1 of may be placed.

블록(2525)(도 25b)에서, 도 17의 가장 뜨거운 청크 로직(1720)은 도 14의 청크 식별자(515-1)에 대한 도 14의 액세스 카운트(820-1)를 가장 뜨거운 청크에 대한 액세스 카운트와 비교할 수 있다. 도 14의 청크 식별자(515-1)에 대한 도 14의 액세스 카운트(820-1)가 가장 뜨거운 청크에 대한 액세스 카운트보다 크면, 도 14의 청크 식별자(515-1)는 지금 가장 뜨거운 청크이다. 따라서, 블록(2530)에서, 도 17의 가장 뜨거운 청크 로직(1720)은 도 14의 청크 식별자(515-1)가 새로운 가장 뜨거운 청크인것을 밝히고, 블록(2535)에서 도 17의 가장 뜨거운 청크 로직(1720)은 도 19의 장치 수명(1905)을 도 14의 청크 식별자(515-1)의 가장 최신의 두 액세스들 사이의 시간의 차이로 판단할 수 있다.In block 2525 (FIG. 25B), the hottest chunk logic 1720 of FIG. 17 uses the access count 820-1 of FIG. 14 for the chunk identifier 515-1 of FIG. 14 to access the hottest chunk. It can be compared to the count. If the access count 820-1 of FIG. 14 for the chunk identifier 515-1 of FIG. 14 is greater than the access count for the hottest chunk, the chunk identifier 515-1 of FIG. 14 is now the hottest chunk. Thus, at block 2530, the hottest chunk logic 1720 of FIG. 17 reveals that the chunk identifier 515-1 of FIG. 14 is the new hottest chunk, and at block 2535, the hottest chunk logic of FIG. 17 1720 may determine the device lifetime 1905 of FIG. 19 as a time difference between the two most recent accesses of the chunk identifier 515-1 of FIG. 14.

도 14의 청크 식별자(515-1)가 가장 뜨거운 청크인지에 관계없이, 블록(2540)에서, 도 20의 비교기(2005)는 도 14의 청크 식별자(515-1)가 도 15의 대기열들(1520-1~1520-3) 중 하나의 맨앞에 있을 때, 도 14의 만료 시간(1410)이 지났는지 판단할 수 있다. 그렇지 않으면, 도 4의 배경 로직(435)은 도 14의 청크 식별자(515-1)에 대한 도 14의 만료 시간(1410)이 지날 때까지 대기하고(그동안에 다른 것들을 하고) 블록(2540)에서 다시 점검할 수 있다. 이때, 블록(2545)에서, 도 15의 격하 로직(1525)은 도 14의 청크 식별자(515-1)를 도 15의 대기열들(1520-1~1520-3)로부터 제거할 수 있다. 이후에, 블록(2550)에서, 도 20의 감소기(2010)는 도 14의 스트림 식별자(530-1)를 줄일 수 있다.Regardless of whether the chunk identifier 515-1 of FIG. 14 is the hottest chunk, at block 2540, the comparator 2005 of FIG. 20 indicates that the chunk identifier 515-1 of FIG. 1520-1 to 1520-3), it may be determined whether the expiration time 1410 of FIG. 14 has passed. Otherwise, background logic 435 of FIG. 4 waits until expiration time 1410 of FIG. 14 for chunk identifier 515-1 of FIG. 14 has passed (doing other things in the meantime) and at block 2540. You can check again. At this time, in block 2545, the degrading logic 1525 of FIG. 15 may remove the chunk identifier 515-1 of FIG. 14 from the queues 150-1 to 1520-3 of FIG. 15. Thereafter, at block 2550, the reducer 2010 of FIG. 20 may reduce the stream identifier 530-1 of FIG. 14.

블록(2555)(도 25c)에서, 도 15의 제2 줄세움기(1510)는 도 14의 청크 식별자(515-1)를 새로운 스트림 식별자에 대응하는 도 15의 대기열들(1520-1~1520-3) 중 다른 하나에 배치할 수 있다. 블록(2560)에서, 도 15의 격하 로직(1525)은 도 14의 청크 식별자(515-1)가 가장 뜨거운 청크였는지 판단할 수 있다. 그렇다면, 블록(2565)에서 도 15의 격하 로직(1525)은 다른 하나의 청크 식별자를 새로운 가장 뜨거운 청크로 선택할 수 있다. 예를 들어, 대기열의 맨앞 또는 맨뒤에 있는 청크 식별자와 같은 도 14의 스트림 식별자(530-1)에 할당된 다른 하나의 청크가 선택될 수 있다(블록(2560)에서 감소하기 전에). 도 15의 격하 로직(1525)은 또한, 이전과 같이, 선택된 새로운 가장 뜨거운 청크에 기반하여 도 19의 장치 수명(1905)을 계산할 수 있다.In block 2555 (FIG. 25C), the second line up 1510 of FIG. 15 replaces the chunk identifier 515-1 of FIG. 14 with the queues 1521-1 to 1520 of FIG. 15 corresponding to the new stream identifier. It can be placed in the other of -3). At block 2560, the downgrade logic 1525 of FIG. 15 may determine whether the chunk identifier 515-1 of FIG. 14 was the hottest chunk. If so, at block 2565, the downgrade logic 1525 of FIG. 15 may select the other chunk identifier as the new hottest chunk. For example, another chunk assigned to stream identifier 530-1 of FIG. 14, such as a chunk identifier at the front or end of the queue, may be selected (before decrementing at block 2560). The downgrade logic 1525 of FIG. 15 may also, as before, calculate the device lifetime 1905 of FIG. 19 based on the selected new hottest chunk.

도 21a 내지 도 25c에서, 본 발명의 기술적 사상의 일부 실시 예들이 도시된다. 그러나 이 분야에 숙련된 자는 블록들의 순서를 바꿈으로써, 블록들을 생략함으로써, 또는 도면들에 도시되지 않은 연결들을 포함시킴으로써 본 발명의 기술적 사상의 다른 실시 예들 또한 가능함을 인식할 것이다. 순서도들의 이러한 모든 변경들은 명시적으로 기술되었든 아니든 본 발명의 기술적 사상의 실시 예들인 것으로 여겨진다.21A to 25C, some embodiments of the technical idea of the present invention are shown. However, those skilled in the art will recognize that other embodiments of the technical idea of the present invention are also possible by changing the order of blocks, omitting blocks, or including connections not shown in the drawings. All of these changes in the flow charts, whether explicitly described or not, are considered to be embodiments of the technical idea of the present invention.

이하의 설명은 본 발명의 기술적 사상이 구현된 적절한 기계 또는 기계들의 간결하고 일반적인 설명을 제공하고자 한다. 기계 또는 기계들은 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력뿐 아니라 또 다른 기계로부터 수신되는 지시들, 가상현실(VR, virtual reality) 환경과의 상호 작용, 생체 피드백 또는 다른 입력 신호에 의해 적어도 일부 제어될 수 있다. 여기에서 사용된 바와 같이, "기계"라는 용어는 단일 기계, 가상 기계, 또는 통신할 수 있게 결합된 기계들, 가상 기계들 또는 함께 동작하는 장치들의 시스템을 넓게 포함할 수 있다. 예시적인 기계는 개인용 컴퓨터, 워크스테이션, 서버, 포터블 컴퓨터, 핸드헬드 장치, 전화기, 태블릿 등과 같은 컴퓨팅 장치들뿐 아니라 개인 또는 공용 수송(예를 들어, 자동차, 기차, 택시 등)과 같은 수송 장치들을 포함할 수 있다.The following description is intended to provide a concise and general description of a suitable machine or machines in which the technical idea of the present invention is implemented. Machines or machines are not only input from conventional input devices such as a keyboard, mouse, etc., but also instructions received from another machine, interaction with a virtual reality (VR) environment, biofeedback, or other input signals. At least some can be controlled. As used herein, the term “machine” may broadly encompass a single machine, a virtual machine, or a system of communicatively coupled machines, virtual machines, or devices operating together. Exemplary machines include computing devices such as personal computers, workstations, servers, portable computers, handheld devices, telephones, tablets, etc., as well as transport devices such as personal or public transport (e.g., cars, trains, taxis, etc.) Can include.

기계 또는 기계들은 프로그램 가능한 또는 프로그램 가능하지 않는 로직 장치들 또는 어레이들, ASIC (Application Specific Integrated Circuits), 임베디드 컴퓨터, 스마트카드 등과 같은 임베디드 제어기들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀 또는 다른 통신 연결과 같은 하나 또는 그보다 많은 원격 기계들로의 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN (local area network), WAN (wide area network) 등과 같은 물리적 또는 논리적 네트워크를 통해 서로 연결될 수 있다. 이 분야에 숙련된 자들은 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, IEEE 802.11, 블루투스®, 광, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 또는 무선 단거리 또는 장거리 캐리어들 및 프로토콜들을 활용함이 이해될 것이다.The machine or machines may include programmable or non-programmable logic devices or arrays, application specific integrated circuits (ASICs), embedded controllers such as embedded computers, smart cards, and the like. The machine or machines may utilize one or more connections to one or more remote machines, such as a network interface, modem, or other communication connection. Machines can be connected to each other through physical or logical networks such as intranet, Internet, local area network (LAN), wide area network (WAN), and so on. For those skilled in the field, network communications utilize a variety of wired or wireless short-range or long-range carriers and protocols, including radio frequency (RF), satellite, microwave, IEEE 802.11, Bluetooth®, optical, infrared, cable, laser, etc. It will be understood.

본 발명의 실시 예들은 기계에 의해 액세스 된 때에 기계가 작업을 수행하거나 또는 추상적인 데이터 타입들 또는 저 레벨 하드웨어 콘텍스트를 정의하도록 하는 함수들, 절차들, 데이터 구조들, 응용 프로그램 등을 포함하는 연관된 데이터를 참조하여 설명될 수 있다. 연관된 데이터는 RAM, ROM 등과 같은 휘발성 또는 불휘발성 메모리 또는 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생체 스토리지 등을 포함하는 다른 저장 장치들 및 연관된 저장 매체에 저장될 수 있다. 연관된 데이터는 물리적 또는 논리적 네트워크를 포함하는 전송 환경을 걸쳐 패킷, 직렬 데이터, 병렬 데이터, 전송 신호 등의 형태로 전달될 수 있으며, 압축된 또는 암호화된 형식으로 사용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스를 위해 지역적으로 또는 원격으로 저장될 수 있다.Embodiments of the present invention are associated with functions, procedures, data structures, application programs, etc. that allow the machine to perform tasks or define abstract data types or low-level hardware contexts when accessed by the machine. It can be described with reference to data. Associated data may be stored in volatile or nonvolatile memory such as RAM, ROM, etc. or other storage devices including hard drives, floppy disks, optical storage, tapes, flash memory, memory sticks, digital video disks, biometric storage, etc., and associated storage media. Can be saved. The associated data may be transmitted in the form of packets, serial data, parallel data, transmission signals, etc. over a transmission environment including a physical or logical network, and may be used in a compressed or encrypted form. Associated data can be used in a distributed environment and stored locally or remotely for machine access.

본 발명의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행될 수 있는 명령들을 포함하는 실재하는 비임시적인 기계판독가능한 매체를 포함할 수 있다. 명령들은 여기에 설명되는 바와 같이 본 발명의 요소들을 수행하게 하는 명령들을 포함할 수 있다.Embodiments of the present invention may include a real, non-transitory, machine-readable medium containing instructions that can be executed by one or more processors. Instructions may include instructions that cause elements of the invention to be performed as described herein.

본 발명의 기술적 사상이 실시 예들을 참조하여 설명되었지만, 도시된 실시 예들은 배치 및 상세 측면에서 본 발명의 기술적 사상으로부터 멀어지지 않으면서 수정될 수 있고 원하는 방법으로 조합될 수 있다. 앞선 설명들이 특정 실시 예들에 집중하였지만, 다른 구성 또한 고려될 수 있다. 특히, "본 발명의 실시 예에 따른" 또는 이와 유사한 표현이 사용되지만, 이러한 문구들은 가능한 일반적인 실시 예를 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성으로 한정하려는 것은 아니다. 여기에 사용되는 바와 같이, 이러한 용어들은 동일한 또는 다른 실시 예들로 조합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.Although the technical idea of the present invention has been described with reference to the embodiments, the illustrated embodiments can be modified and combined in a desired manner without departing from the technical idea of the present invention in terms of arrangement and detail. Although the foregoing descriptions have focused on specific embodiments, other configurations may also be considered. In particular, although the expression "according to an embodiment of the present invention" or a similar expression is used, these phrases refer to possible general embodiments, and are not intended to limit the technical idea of the present invention to the configuration of a specific embodiment. As used herein, these terms may refer to the same or different embodiments, which may be combined into the same or different embodiments.

앞서 설명된 실시 예들은 본 발명의 기술적 사상을 제한하지 않는다. 몇몇 실시 예들이 설명되었지만, 이 분야에 숙련된 자들은 이러한 실시 예들이 본 발명의 신규한 기술적 사상 및 장점으로부터 멀어지지 않으면서 다양하게 수정될 수 있음이 이해될 것이다. 따라서, 이러한 모든 수정들은 청구항들 에 정의된 바와 같이 본 발명의 기술적 사상범위에 포함된다.The above-described embodiments do not limit the technical idea of the present invention. Although some embodiments have been described, those skilled in the art will understand that these embodiments may be variously modified without departing from the novel technical spirit and advantages of the present invention. Accordingly, all such modifications are included in the technical spirit scope of the present invention as defined in the claims.

본 발명의 실시 예들은 아래의 문구들에로 확장될 수 있으며, 한정되지 않는다.Embodiments of the present invention may be extended to the following phrases, but are not limited thereto.

제1 문구로서, 본 발명의 기술적 사상의 실시 예는 솔리드 스테이트 드라이브(SSD, solid state drive)를 포함한다. 상기 솔리드 스테이트 드라이브는 데이터를 저장하는 플래시 메모리; 상기 솔리드 스테이트 드라이브에서 복수의 장치 스트림들에 대한 지원; 제출 대기열 및 청크-스트림 사상기를 위한 저장소를 포함하고, 복수의 쓰기 명령들에 응답하여 상기 플래시 메모리에 대한 데이터 쓰기를 관리하는 솔리드 스테이트 제어기; 그리고 플래시 변환 계층을 포함한다. 상기 플래시 변환 계층은 논리 블록 주소(LBA, logical block address)를 포함하는 쓰기 명령을 수신하는 수신기; 상기 논리 블록 주소를 청크 식별자(ID, identifier)에 사상하는 논리 블록 주소 사상기; 상기 청크-스트림 사상기를 이용하여 상기 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직; 상기 스트림 식별자를 상기 쓰기 명령에 추가하는 스트림 식별자 추가기; 상기 청크 식별자를 상기 제출 대기열에 배치하는 줄세움기; 그리고 상기 청크 식별자를 상기 제출 대기열로부터 제고하고 그리고 상기 청크-스트림 사상기를 갱신하는 배경 로직을 포함한다.As a first phrase, an embodiment of the technical idea of the present invention includes a solid state drive (SSD). The solid state drive may include a flash memory for storing data; Support for a plurality of device streams in the solid state drive; A solid state controller including storage for a submission queue and a chunk-stream mapper, and managing writing data to the flash memory in response to a plurality of write commands; And it includes a flash conversion layer. The flash translation layer includes: a receiver for receiving a write command including a logical block address (LBA); A logical block address mapper for mapping the logical block address to a chunk identifier (ID); Stream selection logic for selecting a stream identifier based on the chunk identifier using the chunk-stream mapper; A stream identifier adder for adding the stream identifier to the write command; A line-up device for placing the chunk identifier in the submission queue; And background logic to lift the chunk identifier from the submission queue and update the chunk-stream mapper.

제2 문구로서, 본 발명의 기술적 사상의 실시 예는 제1 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 쓰기 명령을 상기 스트림 식별자와 함께 상기 솔리드 스테이트 드라이브로 전송하는 송신기를 더 포함한다.As a second phrase, an embodiment of the technical idea of the present invention includes a solid state drive according to the first phrase, and further includes a transmitter that transmits the write command to the solid state drive together with the stream identifier.

제3 문구로서, 본 발명의 기술적 사상의 실시 예는 제1 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 논리 블록 주소 사상기는 상기 논리 블록 주소의 일부를 가려 상기 청크 식별자를 판단하는 주소 마스크를 포함한다.As a third phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the first phrase, and the logical block address mapper includes an address mask for determining the chunk identifier by covering a part of the logical block address. do.

제4 문구로서, 본 발명의 기술적 사상의 실시 예는 제1 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 논리 블록 주소 사상기는 상기 논리 블록 주소를 청크 사이즈로 나누어 상기 청크 식별자를 확인하는 산술 논리부(ALU, arithmetic logic unit)을 포함한다.As a fourth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the first phrase, and the logical block address mapper divides the logical block address by a chunk size and identifies the chunk identifier. (ALU, arithmetic logic unit) is included.

제5 문구로서, 본 발명의 기술적 사상의 실시 예는 제1 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 청크-스트림 사상기는 순차, 빈도, 최신(SFR, Sequential, Frequency, Recency) 표를 포함하고, 상기 SFR 표는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함한다.As a fifth phrase, an embodiment of the technical idea of the present invention includes a solid state drive according to the first phrase, and the chunk-stream mapper includes a sequential, frequency, and latest (SFR, Sequential, Frequency, Recency) table, , The SFR table includes the chunk identifier and the stream identifier for the chunk identifier.

제6 문구로서, 본 발명의 기술적 사상의 실시 예는 제5 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 배경 로직은 상기 논리 블록 주소가 이전 쓰기 명령의 제2 논리 블록 주소에 순차적이면 이전 스트림을 선택하는 순차 로직을 포함한다.As a sixth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the fifth phrase, and the background logic returns a previous stream if the logical block address is sequential to the second logical block address of the previous write command. Includes sequential logic to select.

제7 문구로서, 본 발명의 기술적 사상의 실시 예는 제6 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 이전 쓰기 명령은 윈도 사이즈를 갖는 상기 쓰기 명령에 선행하는 윈도 내에 있다.As a seventh phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the sixth phrase, and the previous write command is in a window preceding the write command having a window size.

제8 문구로서, 본 발명의 기술적 사상의 실시 예는 제7 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 윈도 사이즈는 호스트 컴퓨터 시스템의 프로세서의 코어들의 수 그리고 상기 호스트 컴퓨터 시스템의 상기 프로세서에서 실행되는 소프트웨어 소스들의 수 중 적어도 하나에 응답하여 결정된다.As an eighth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the seventh phrase, and the window size is the number of cores of the processor of the host computer system and the number of cores executed by the processor of the host computer system. It is determined in response to at least one of the number of software sources.

제9 문구로서, 본 발명의 기술적 사상의 실시 예는 제7 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 솔리드 스테이트 드라이브 제어기는 상기 이전 쓰기 명령을 포함하는 이전 쓰기 명령들의 대기열을 위한 저장소를 더 포함하고, 상기 대기열은 상기 이전 쓰기 명령들 각각에 대해 끝 논리 주소 및 대응하는 스트림 식별자를 포함한다.As a ninth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the seventh phrase, and the solid state drive controller further includes a storage for a queue of previous write commands including the previous write command. And, the queue includes an end logical address and a corresponding stream identifier for each of the previous write commands.

제10 문구로서, 본 발명의 기술적 사상의 실시 예는 제5 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 배경 로직은 상기 청크 식별자에 대한 현재 엑세스 시간, 상기 청크 식별자에 대한 이전 액세스 시간, 그리고 쇠퇴 기간에 기반하여 최신 가중을 계산하는 최신 로직; 상기 최신 가중에 기반하여 상기 청크 식별자에 대한 액세스 카운트를 조절하여 조절된 액세스 카운트를 생산하는 액세스 카운트 조절기; 그리고 상기 청크 식별자에 대한 상기 조절된 액세스 카운트에 기반하여 상기 스트림 식별자를 조절하는 스트림 식별자 조절기를 포함한다.As a tenth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the fifth phrase, and the background logic includes a current access time for the chunk identifier, a previous access time for the chunk identifier, and a decline. The latest logic to calculate the latest weight based on the period; An access count adjuster for producing an adjusted access count by adjusting an access count for the chunk identifier based on the latest weight; And a stream identifier adjuster for adjusting the stream identifier based on the adjusted access count for the chunk identifier.

제11 문구로서, 본 발명의 기술적 사상의 실시 예는 제10 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 SFR 표는 상기 청크 식별자에 대한 상기 현재 액세스 시간, 상기 청크 식별자에 대한 상기 이전 액세스 시간, 그리고 상기 청크 식별자에 대한 상기 액세스 카운트를 더 포함한다.As an eleventh phrase, an embodiment of the technical idea of the present invention includes a solid state drive according to the tenth phrase, and the SFR table includes the current access time for the chunk identifier, the previous access time for the chunk identifier, And further includes the access count for the chunk identifier.

제12 문구로서, 본 발명의 기술적 사상의 실시 예는 제10 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 최신 로직은 상기 최신 가중을 2의 (상기 청크 식별자에 대한 상기 현재 액세스 시간과 상기 청크 식별자에 대한 상기 이전 액세스 시간의 차이를 상기 쇠퇴 기간으로 나눈 것) 승으로 계산한다.As a twelfth phrase, an embodiment of the technical idea of the present invention includes a solid state drive according to the tenth phrase, and the latest logic determines the latest weight of 2 (the current access time for the chunk identifier and the chunk identifier). Dividing the difference between the previous access time with respect to the decay period) to the power.

제13 문구로서, 본 발명의 기술적 사상의 실시 예는 제10 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 액세스 카운트 조절기는 상기 청크 식별자에 대한 상기 조절된 액세스 카운트를 (상기 청크 식별자에 대한 상기 액세스 카운트에 1을 더한 것)을 상기 최신 가중으로 나눈 것으로 계산한다.As a thirteenth phrase, an embodiment of the technical idea of the present invention includes a solid state drive according to the tenth phrase, and the access count adjuster calculates the adjusted access count for the chunk identifier (the access count for the chunk identifier). Count plus 1) divided by the latest weight above.

제14 문구로서, 본 발명의 기술적 사상의 실시 예는 제10 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 스트림 식별자 조절기는 상기 스트림 식별자를 상기 청크 식별자에 대한 상기 조절된 액세스 카운트의 로그로 계산한다.As a fourteenth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the tenth phrase, and the stream identifier controller calculates the stream identifier as a log of the adjusted access count for the chunk identifier. .

제15 문구로서, 본 발명의 기술적 사상의 실시 예는 제 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 청크-스트림 사상기는 노드 엔트리를 포함하고, 상기 노드 엔트리는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함한다.As a fifteenth phrase, an embodiment of the technical idea of the present invention includes a solid state drive according to the first phrase, the chunk-stream mapper includes a node entry, and the node entry includes the chunk identifier and the chunk identifier. Includes the stream identifier.

제16 문구로서, 본 발명의 기술적 사상의 실시 예는 제15 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 배경 로직은 상기 청크 식별자에 기반하여 상기 스트림 식별자를 승격할 때를 판단하는 승격 로직; 상기 청크 식별자에 대한 상기 스트림 식별자에 응답하여, 복수의 스트림 식별자들에 대응하는 복수의 대기열들의 첫 번째에 상기 청크 식별자를 배치하는 제2 줄세움기; 그리고 상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하는 격하 로직을 포함한다.As a sixteenth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the fifteenth phrase, and the background logic includes: a promotion logic for determining when to promote the stream identifier based on the chunk identifier; A second stringer for disposing the chunk identifier at the first of a plurality of queues corresponding to a plurality of stream identifiers in response to the stream identifier for the chunk identifier; And a degrading logic for determining when to degrade the stream identifier based on the chunk identifier.

제17 문구로서, 본 발명의 기술적 사상의 실시 예는 제16 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 승격 로직은 상기 청크 식별자에 대한 액세스 카운트를 증가하는 증가기; 그리고 상기 청크 식별자에 대한 상기 액세스 카운트에 응답하여 상기 스트림 식별자를 판단하는 스트림 식별자 조절기를 포함한다.As a seventeenth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the sixteenth phrase, and the promotion logic includes: an increaser for increasing an access count for the chunk identifier; And a stream identifier adjuster for determining the stream identifier in response to the access count for the chunk identifier.

제18 문구로서, 본 발명의 기술적 사상의 실시 예는 제17 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 스트림 식별자 조절기는 상기 스트림 식별자에 대한 상기 액세스 카운트의 로그로 상기 스트림 식별자를 판단하도록 동작한다.As the eighteenth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the seventeenth phrase, and the stream identifier adjuster operates to determine the stream identifier based on a log of the access count for the stream identifier. .

제19 문구로서, 본 발명의 기술적 사상의 실시 예는 제17 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 승격 로직은 상기 청크 식별자에 대한 만료 시간을 연산하는 청크 만료 로직을 더 포함한다.As a nineteenth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the seventeenth phrase, and the promotion logic further includes a chunk expiration logic for calculating an expiration time for the chunk identifier.

제20 문구로서, 본 발명의 기술적 사상의 실시 예는 제19 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 청크 만료 로직은 상기 청크 식별자에 대한 상기 만료 시간을 상기 청크 식별자에 대한 상기 액세스 카운트와 장치 수명의 합으로 연산하도록 동작한다.As the twentieth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the nineteenth phrase, and the chunk expiration logic determines the expiration time for the chunk identifier and the access count for the chunk identifier and the device. Operates to calculate as the sum of the lifetimes.

제21 문구로서, 본 발명의 기술적 사상의 실시 예는 제20 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 장치 수명은 가장 뜨거운 청크에 대한 마지막 액세스 시간과 상기 가장 뜨거운 청크에 대한 이전 액세스 시간 사이의 차이이다.As a 21st phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the 20th phrase, and the device lifetime is between a last access time for the hottest chunk and a previous access time for the hottest chunk. It's the difference.

제22 문구로서, 본 발명의 기술적 사상의 실시 예는 제21 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 승격 로직은 상기 청크 식별자에 대한 상기 액세스 카운트가 상기 가장 뜨거운 청크에 대한 이전 액세스 카운트보다 클 때 상기 청크 식별자를 상기 가장 뜨거운 청크로 식별하는 가장 뜨거운 청크 로직을 더 포함한다.As the 22nd phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the 21st phrase, and in the promotion logic, the access count for the chunk identifier is greater than the previous access count for the hottest chunk. In this case, a hottest chunk logic for identifying the chunk identifier as the hottest chunk is further included.

제23 문구로서, 본 발명의 기술적 사상의 실시 예는 제21 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 노드 엔트리는 상기 청크 식별자에 대한 상기 액세스 카운트 및 상기 청크 식별자에 대한 상기 만료 시간을 더 포함한다.As a twenty-third phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the twenty-first phrase, and the node entry further includes the access count for the chunk identifier and the expiration time for the chunk identifier. do.

제24 문구로서, 본 발명의 기술적 사상의 실시 예는 제16 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 격하 로직은 상기 청크 식별자에 대한 만료 시간이 지났는지 판단하는 비교기; 그리고 상기 청크 식별자에 대한 상기 만료 시간이 지났으면, 상기 스트림 식별자를 줄이는 감소기를 포함하고, 상기 제2 줄세움기는 상기 청크 식별자에 대한 상기 감소된 스트림 식별자에 응답하여, 상기 복수의 스트림 식별자들에 대응하는 상기 복수의 대기열들 중 두 번째에 상기 청크 식별자를 배치하도록 동작한다.As a twenty-fourth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the sixteenth phrase, and the degrading logic comprises: a comparator for determining whether an expiration time for the chunk identifier has passed; And a reducer for reducing the stream identifier if the expiration time for the chunk identifier has elapsed, and the second line up unit responds to the reduced stream identifier for the chunk identifier, and the plurality of stream identifiers It operates to place the chunk identifier in a second of the corresponding plurality of queues.

제25 문구로서, 본 발명의 기술적 사상의 실시 예는 제24 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 격하 로직은 상기 청크 식별자가 상기 복수의 대기열들의 맨 앞에 있을 때에 상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하도록 동작한다.As the twenty-fifth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the twenty-fourth phrase, and the degrading logic is based on the chunk identifier when the chunk identifier is at the front of the plurality of queues. It operates to determine when the stream identifier is degraded.

제26 문구로서, 본 발명의 기술적 사상의 실시 예는 제24 문구에 따른 솔리드 스테이트 드라이브를 포함하고, 상기 격하 로직은 상기 청크 식별자가 사익 복수의 대기열들의 상기 첫 번째의 맨 앞에 있을 때 상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하도록 동작한다.As the twenty-sixth phrase, an embodiment of the technical idea of the present invention includes the solid state drive according to the twenty-fourth phrase, and the degrading logic is the chunk identifier when the chunk identifier is at the front of the first of a plurality of queues. It operates to determine when the stream identifier is degraded based on.

제27 문구로서, 본 발명의 기술적 사상의 실시 예는 컴퓨팅 시스템에서 사용되기 위한 드라이버를 포함하고, 상기 드라이버는 논리 블록 주소(LBA, logical block address)를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 쓰기 명령을 수신하는 수신기; 상기 논리 블록 주고를 청크 식별자(ID, identifier)에 사상하는 논리 블록 주소 사상기; 호스트 컴퓨터 시스템의 메모리에 저장된 청크-스트림 사상기를 이용하여 상기 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직; 상기 스트림 식별자를 상기 쓰기 명령에 추가하는 스트림 식별자 추가기; 상기 청크 식별자를 상기 메모리에 저장된 제출 대기열에 배치하는 줄세움기; 그리고 상기 제출 대기열로부터 상기 청크 식별자를 제거하고 그리고 상기 청크-스트림 사상기를 갱신하는 배경 로직을 포함한다.As the 27th phrase, an embodiment of the technical idea of the present invention includes a driver for use in a computing system, and the driver includes a solid state drive (SSD) including a logical block address (LBA). A receiver for receiving a write command for ); A logical block address mapper for mapping the logical block exchange to a chunk identifier (ID); Stream selection logic for selecting a stream identifier based on the chunk identifier using a chunk-stream mapper stored in a memory of the host computer system; A stream identifier adder for adding the stream identifier to the write command; A line-up device for placing the chunk identifier in a submission queue stored in the memory; And background logic to remove the chunk identifier from the submission queue and update the chunk-stream mapper.

제28 문구로서, 본 발명의 기술적 사상의 실시 예는 제27 문구에 따른 드라이버를 포함하고, 상기 쓰기 명령을 상기 스트림 식별자를 사용하는 상기 솔리드 스테이트 드라이브로 전송하는 송신기를 더 포함한다.As a twenty-eighth phrase, an embodiment of the technical idea of the present invention includes a driver according to the twenty-seventh phrase, and further includes a transmitter that transmits the write command to the solid state drive using the stream identifier.

제29 문구로서, 본 발명의 기술적 사상의 실시 예는 제27 문구에 따른 드라이버를 포함하고, 상기 논리 블록 주소 사상기는 상기 논리 블록 주소의 일부를 가려 상기 청크 식별자를 판단하는 주소 마스크를 포함한다.As the 29th phrase, an embodiment of the technical idea of the present invention includes the driver according to the 27th phrase, and the logical block address mapper includes an address mask for determining the chunk identifier by covering a part of the logical block address.

제30 문구로서, 본 발명의 기술적 사상의 실시 예는 제27 문구에 따른 드라이버를 포함하고, 상기 논리 블록 주소 사상기는 상기 논리 블록 주소를 청크 사이즈로 나누어 상기 청크를 식별 하는 산술 논리부(ALU, arithmetic logic unit)을 포함한다.As a thirtieth phrase, an embodiment of the technical idea of the present invention includes the driver according to the twenty-seventh phrase, and the logical block address mapper divides the logical block address by a chunk size and identifies the chunk. arithmetic logic unit).

제31 문구로서, 본 발명의 기술적 사상의 실시 예는 제27 문구에 따른 드라이버를 포함하고, 상기 청크-스트림 사상기는 순차, 빈도, 최신(SFR, Sequential, Frequency, Recency) 표를 포함하고, 상기 SFR 표는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함한다.As the 31st phrase, an embodiment of the technical idea of the present invention includes the driver according to the 27th phrase, and the chunk-stream mapper includes a sequential, frequency, and latest (SFR, Sequential, Frequency, Recency) table, and the The SFR table includes the chunk identifier and the stream identifier for the chunk identifier.

제32 문구로서, 본 발명의 기술적 사상의 실시 예는 제31 문구에 따른 드라이버를 포함하고, 상기 배경 로직은 상기 논리 블록 주소가 이전 쓰기 명령의 제2 논리 블록 주소에 순차적이면 이전 스트림을 선택하는 순차 로직을 포함한다.As the 32nd phrase, an embodiment of the technical idea of the present invention includes the driver according to the 31st phrase, and the background logic selects a previous stream if the logical block address is sequential to the second logical block address of the previous write command. Includes sequential logic.

제33 문구로서, 본 발명의 기술적 사상의 실시 예는 제32 문구에 따른 드라이버를 포함하고, 상기 이전 쓰기 명령은 윈도 사이즈를 갖는 상기 쓰기 명령에 선행하는 윈도 내에 있다.As a 33rd phrase, an embodiment of the technical idea of the present invention includes the driver according to the 32nd phrase, and the previous write command is in a window preceding the write command having a window size.

제34 문구로서, 본 발명의 기술적 사상의 실시 예는 제32 문구에 따른 드라이버를 포함하고, 상기 윈도 사이즈는 상기 호스트 컴퓨터 시스템의 프로세서의 코어들의 수 그리고 상기 호스트 컴퓨터 시스템의 상기 프로세서에서 실행되는 소프트웨어 소스들의 수 중 적어도 하나에 응답하여 판단된다.As phrase 34, an embodiment of the technical idea of the present invention includes a driver according to phrase 32, wherein the window size is the number of cores of the processor of the host computer system and software executed by the processor of the host computer system. It is determined in response to at least one of the number of sources.

제35 문구로서, 본 발명의 기술적 사상의 실시 예는 제31 문구에 따른 드라이버를 포함하고, 상기 배경 로직은 상기 청크 식별자에 대한 현재 엑세스 시간, 상기 청크 식별자에 대한 이전 액세스 시간, 그리고 쇠퇴 기간에 기반하여 최신 가중을 계산하는 최신 로직; 상기 최신 가중에 기반하여 상기 청크 식별자에 대한 액세스 카운트를 조절하여 조절된 액세스 카운트를 생산하는 액세스 카운트 조절기; 그리고 상기 청크 식별자에 대한 상기 조절된 액세스 카운트에 기반하여 상기 스트림 식별자를 조절하는 스트림 식별자 조절기를 포함한다.As a thirty-fifth phrase, an embodiment of the technical idea of the present invention includes the driver according to the thirty-first phrase, and the background logic includes a current access time for the chunk identifier, a previous access time for the chunk identifier, and a decline period. The latest logic to calculate the latest weight based on; An access count adjuster for producing an adjusted access count by adjusting an access count for the chunk identifier based on the latest weight; And a stream identifier adjuster for adjusting the stream identifier based on the adjusted access count for the chunk identifier.

제36 문구로서, 본 발명의 기술적 사상의 실시 예는 제35 문구에 따른 드라이버를 포함하고, 상기 SFR 표는 상기 청크 식별자에 대한 상기 현재 액세스 시간, 상기 청크 식별자에 대한 상기 이전 액세스 시간, 그리고 상기 청크 식별자에 대한 상기 액세스 카운트를 더 포함한다.As phrase 36, an embodiment of the technical idea of the present invention includes a driver according to phrase 35, and the SFR table includes the current access time for the chunk identifier, the previous access time for the chunk identifier, and the The access count for the chunk identifier is further included.

제37 문구로서, 본 발명의 기술적 사상의 실시 예는 제35 문구에 따른 드라이버를 포함하고, 상기 최신 로직은 상기 최신 가중을 2의 (상기 청크 식별자에 대한 상기 현재 액세스 시간과 상기 청크 식별자에 대한 상기 이전 액세스 시간의 차이를 상기 쇠퇴 기간으로 나눈 것) 승으로 계산한다.As the 37th phrase, an embodiment of the technical idea of the present invention includes the driver according to the 35th phrase, and the latest logic calculates the latest weight of 2 (the current access time for the chunk identifier and the current access time for the chunk identifier). The difference between the previous access times is divided by the decay period).

제38 문구로서, 본 발명의 기술적 사상의 실시 예는 제35 문구에 따른 드라이버를 포함하고, 상기 액세스 카운트 조절기는 상기 청크 식별자에 대한 상기 조절된 액세스 카운트를 (상기 청크 식별자에 대한 상기 액세스 카운트에 1을 더한 것)을 상기 최신 가중으로 나눈 것으로 계산한다.As the 38th phrase, an embodiment of the technical idea of the present invention includes the driver according to the 35th phrase, and the access count adjuster calculates the adjusted access count for the chunk identifier (to the access count for the chunk identifier). 1) divided by the latest weight above.

제39 문구로서, 본 발명의 기술적 사상의 실시 예는 제35 문구에 따른 드라이버를 포함하고, 상기 스트림 식별자 조절기는 상기 스트림 식별자를 상기 청크 식별자에 대한 상기 조절된 액세스 카운트의 로그로 계산한다.As phrase 39, an embodiment of the technical idea of the present invention includes the driver according to phrase 35, and the stream identifier controller calculates the stream identifier as a log of the adjusted access count for the chunk identifier.

제40 문구로서, 본 발명의 기술적 사상의 실시 예는 제27 문구에 따른 드라이버를 포함하고, 상기 청크-스트림 사상기는 노드 엔트리를 포함하고, 상기 노드 엔트리는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함한다.As phrase 40, an embodiment of the technical idea of the present invention includes the driver according to the 27th phrase, the chunk-stream mapper includes a node entry, and the node entry includes the chunk identifier and the chunk identifier. Contains the stream identifier.

제41 문구로서, 본 발명의 기술적 사상의 실시 예는 제40 문구에 따른 드라이버를 포함하고, 상기 배경 로직은 상기 청크 식별자에 기반하여 상기 스트림 식별자를 승격할 때를 판단하는 승격 로직; 상기 청크 식별자에 대한 상기 스트림 식별자에 응답하여, 복수의 스트림 식별자들에 대응하는 복수의 대기열들의 첫 번째에 상기 청크 식별자를 배치하는 제2 줄세움기; 그리고 상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하는 격하 로직을 포함한다.As phrase 41, an embodiment of the technical idea of the present invention includes a driver according to phrase 40, wherein the background logic includes: a promotion logic for determining when to promote the stream identifier based on the chunk identifier; A second stringer for disposing the chunk identifier at the first of a plurality of queues corresponding to a plurality of stream identifiers in response to the stream identifier for the chunk identifier; And a degrading logic for determining when to degrade the stream identifier based on the chunk identifier.

제42 문구로서, 본 발명의 기술적 사상의 실시 예는 제41 문구에 따른 드라이버를 포함하고, 상기 승격 로직은 상기 청크 식별자에 대한 액세스 카운트를 증가하는 증가기; 그리고 상기 청크 식별자에 대한 상기 액세스 카운트에 응답하여 상기 스트림 식별자를 판단하는 스트림 식별자 조절기를 포함한다.As the 42nd phrase, an embodiment of the technical idea of the present invention includes the driver according to the 41st phrase, and the promotion logic includes: an increaser for increasing an access count for the chunk identifier; And a stream identifier adjuster for determining the stream identifier in response to the access count for the chunk identifier.

제43 문구로서, 본 발명의 기술적 사상의 실시 예는 제42 문구에 따른 드라이버를 포함하고, 상기 스트림 식별자 조절기는 상기 스트림 식별자에 대한 상기 액세스 카운트의 로그로 상기 스트림 식별자를 판단하도록 동작한다.As phrase 43, an embodiment of the technical idea of the present invention includes the driver according to phrase 42, and the stream identifier adjuster operates to determine the stream identifier based on a log of the access count for the stream identifier.

제44 문구로서, 본 발명의 기술적 사상의 실시 예는 제42 문구에 따른 드라이버를 포함하고, 상기 승격 로직은 상기 청크 식별자에 대한 만료 시간을 연산하는 청크 만료 로직을 더 포함한다.As phrase 44, an embodiment of the technical idea of the present invention includes the driver according to phrase 42, and the promotion logic further includes chunk expiration logic for calculating an expiration time for the chunk identifier.

제45 문구로서, 본 발명의 기술적 사상의 실시 예는 제44 문구에 따른 드라이버를 포함하고, 상기 청크 만료 로직은 상기 청크 식별자에 대한 상기 만료 시간을 상기 청크 식별자에 대한 상기 액세스 카운트와 장치 수명의 합으로 연산하도록 동작한다.As phrase 45, an embodiment of the technical idea of the present invention includes the driver according to phrase 44, and the chunk expiration logic determines the expiration time for the chunk identifier between the access count for the chunk identifier and the device lifetime. It operates to operate as a sum.

제46 문구로서, 본 발명의 기술적 사상의 실시 예는 제44 문구에 따른 드라이버를 포함하고, 상기 장치 수명은 가장 뜨거운 청크에 대한 마지막 액세스 시간과 상기 가장 뜨거운 청크에 대한 이전 액세스 시간 사이의 차이이다.As clause 46, an embodiment of the technical idea of the present invention includes the driver according to clause 44, and the device lifetime is a difference between a last access time for the hottest chunk and a previous access time for the hottest chunk. .

제47 문구로서, 본 발명의 기술적 사상의 실시 예는 제46 문구에 따른 드라이버를 포함하고, 상기 승격 로직은 상기 청크 식별자에 대한 상기 액세스 카운트가 상기 가장 뜨거운 청크에 대한 이전 액세스 카운트보다 클 때 상기 청크 식별자를 상기 가장 뜨거운 청크로 식별하는 가장 뜨거운 청크 로직을 더 포함한다.As the 47th phrase, an embodiment of the technical idea of the present invention includes the driver according to the 46th phrase, and the promotion logic is configured when the access count for the chunk identifier is greater than the previous access count for the hottest chunk. It further includes hottest chunk logic for identifying the chunk identifier as the hottest chunk.

제48 문구로서, 본 발명의 기술적 사상의 실시 예는 제46 문구에 따른 드라이버를 포함하고, 상기 노드 엔트리는 상기 청크 식별자에 대한 상기 액세스 카운트 및 상기 청크 식별자에 대한 상기 만료 시간을 더 포함한다.As phrase 48, an embodiment of the technical idea of the present invention includes the driver according to phrase 46, and the node entry further includes the access count for the chunk identifier and the expiration time for the chunk identifier.

제49 문구로서, 본 발명의 기술적 사상의 실시 예는 제41 문구에 따른 드라이버를 포함하고, 상기 격하 로직은 상기 청크 식별자에 대한 만료 시간이 지났는지 판단하는 비교기; 그리고 상기 청크 식별자에 대한 상기 만료 시간이 지났으면, 상기 스트림 식별자를 줄이는 감소기를 포함하고, 상기 제2 줄세움기는 상기 청크 식별자에 대한 상기 감소된 스트림 식별자에 응답하여, 상기 복수의 스트림 식별자들에 대응하는 상기 복수의 대기열들 중 두 번째에 상기 청크 식별자를 배치하도록 동작한다.As phrase 49, an embodiment of the technical idea of the present invention includes a driver according to phrase 41, and the degrading logic includes: a comparator for determining whether an expiration time for the chunk identifier has passed; And a reducer for reducing the stream identifier if the expiration time for the chunk identifier has elapsed, and the second line up unit responds to the reduced stream identifier for the chunk identifier, and the plurality of stream identifiers It operates to place the chunk identifier in a second of the corresponding plurality of queues.

제50 문구로서, 본 발명의 기술적 사상의 실시 예는 제49 문구에 따른 드라이버를 포함하고, 상기 격하 로직은 상기 청크 식별자가 상기 복수의 대기열들의 맨 앞에 있을 때에 상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하도록 동작한다.As phrase 50, an embodiment of the technical idea of the present invention includes the driver according to phrase 49, and the degrading logic is based on the chunk identifier when the chunk identifier is at the front of the plurality of queues. It operates to determine when to downgrade.

제51 문구로서, 본 발명의 기술적 사상의 실시 예는 제49 문구에 따른 드라이버를 포함하고, 상기 격하 로직은 상기 청크 식별자가 사익 복수의 대기열들의 상기 첫 번째의 맨 앞에 있을 때 상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하도록 동작한다.As phrase 51, an embodiment of the technical idea of the present invention includes the driver according to phrase 49, and the demotion logic is based on the chunk identifier when the chunk identifier is at the front of the first of a plurality of queues. Thus, it is operated to determine when the stream identifier is degraded.

제52 문구로서, 본 발명의 기술적 사상의 실시 예는 방법을 포함한다. 상기 방법은 소프트웨어 소스로부터 쓰기 명령을 수신하는 단계; 상기 쓰기 명령에서 논리 블록 주소(LBA, logical block address)를 판단하는 단계; 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에서 청크에 대한 청크 식별자(ID, identifier)를 식별하는 단계; 상기 청크 식별자에 관련된 스트림 식별자에 접근하는 단계; 상기 스트림 식별자를 상기 쓰기 명령에 할당하는 단계; 상기 할당된 스트림 식별자를 이용하여 상기 솔리드 스테이트 드라이브에서 상기 쓰기 명령을 처리하는 단계; 그리고 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계를 포함한다.As phrase 52, an embodiment of the technical idea of the present invention includes a method. The method includes receiving a write command from a software source; Determining a logical block address (LBA) in the write command; Identifying a chunk identifier (ID) for a chunk in a solid state drive (SSD) including the logical block address; Accessing a stream identifier associated with the chunk identifier; Allocating the stream identifier to the write command; Processing the write command in the solid state drive using the allocated stream identifier; And performing a background update of the stream identifier associated with the chunk identifier.

제53 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 방법은 호스트 컴퓨터 시스템의 파일 시스템 계층, 블록 계층, 또는 장치 드라이버 계층 중 하나에서 구현된다.As phrase 53, an embodiment of the technical idea of the present invention includes the method of phrase 52, which is implemented in one of a file system layer, a block layer, or a device driver layer of the host computer system.

제54 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 방법은 상기 솔리드 스테이트 드라이브의 플래시 변환 계층에서 구현된다.As phrase 54, an embodiment of the technical idea of the present invention includes the method of phrase 52, which is implemented in the flash conversion layer of the solid state drive.

제55 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브에서 청크에 대한 청크 식별자를 식별하는 단계는 상기 논리 블록 주소에서 주소 마스크를 이용하여 상기 청크 식별자를 식별하는 단계를 포함한다.As phrase 55, an embodiment of the technical idea of the present invention includes the method of phrase 52, wherein the step of identifying a chunk identifier for a chunk in the solid state drive including the logical block address includes an address from the logical block address. And identifying the chunk identifier using a mask.

제56 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브에서 청크에 대한 청크 식별자를 식별하는 단계는 상기 논리 블록 주소를 상기 청크의 섹터들의 수로 나누는 단계를 포함한다.As phrase 56, an embodiment of the technical idea of the present invention includes the method of phrase 52, wherein the step of identifying a chunk identifier for a chunk in the solid state drive including the logical block address includes the logical block address. Dividing by the number of sectors in the chunk.

제57 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 스트림 식별자를 상기 쓰기 명령에 할당하는 단계는 상기 스트림 식별자를 상기 쓰기 명령에 태그로서 추가하는 단계를 포함한다.As phrase 57, an embodiment of the technical idea of the present invention includes the method of phrase 52, and the step of allocating the stream identifier to the write command includes adding the stream identifier to the write command as a tag. do.

제58 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 논리 블록 주소가 제2 쓰기 명령의 제2 논리 블록 주소에 순차적인지 판단하는 단계; 그리고 상기 논리 블록 주소가 상기 제2 쓰기 명령의 상기 제2 논리 블록 주소에 순차적이면, 상기 제2 쓰기 명령에 할당된 상기 제2 스트림 식별자를 판단하는 단계; 그리고 상기 쓰기 명령에 상기 제2 스트림 식별자를 할당하는 단계를 더 포함한다.As phrase 58, an embodiment of the technical idea of the present invention includes the method of phrase 52, comprising the steps of: determining whether the logical block address is sequential to a second logical block address of a second write command; And determining the second stream identifier assigned to the second write command if the logical block address is sequential to the second logical block address of the second write command. And allocating the second stream identifier to the write command.

제59 문구로서, 본 발명의 기술적 사상의 실시 예는 제58 문구의 방법을 포함하고, 상기 제2 쓰기 명령은 상기 쓰기 명령에 선행하는 윈도 내에 있다.As the 59th phrase, an embodiment of the technical idea of the present invention includes the method of the 58th phrase, and the second write command is in a window preceding the write command.

제60 문구로서, 본 발명의 기술적 사상의 실시 예는 제59 문구의 방법을 포함하고, 상기 윈도를 식별하는 단계를 더 포함한다.As phrase 60, an embodiment of the technical idea of the present invention includes the method of phrase 59, and further includes identifying the window.

제61 문구로서, 본 발명의 기술적 사상의 실시 예는 제60 문구의 방법을 포함하고, 상기 윈도를 식별하는 단계는 상기 솔리드 스테이트 드라이브를 포함하는 호스트 컴퓨터 시스템의 프로세서의 코어들의 수 및 상기 솔리드 스테이트 드라이브를 포함하는 상기 호스트 컴퓨터 시스템의 상기 프로세서에서 실행되는 소프트웨어 소스들의 수 중 적어도 하나에 응답하여 상기 윈도에 대한 윈도 사이즈를 식별하는 단계를 포함한다.As phrase 61, an embodiment of the technical idea of the present invention includes the method of phrase 60, and the step of identifying the window includes the number of cores of the processor of the host computer system including the solid state drive and the solid state. Identifying a window size for the window in response to at least one of the number of software sources executing on the processor of the host computer system including a drive.

제62 문구로서, 본 발명의 기술적 사상의 실시 예는 제59 문구의 방법을 포함하고, 상기 윈도에서 가장 오래된 쓰기 명령을 식별하는 단계; 그리고 상기 윈도에서 상기 가장 오래된 쓰기 명령을 상기 쓰기 명령으로 치환하는 단계를 더 포함한다.As the 62nd phrase, an embodiment of the technical idea of the present invention includes the method of the 59th phrase, including the steps of identifying the oldest writing command in the window; And replacing the oldest write command in the window with the write command.

제63 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 청크 식별자를 제출 대기열에 추가하는 단계; 그리고 상기 청크 식별자가 상기 제출 대기열의 맨 앞에 있을 때 상기 청크 식별자를 상기 제출 대기열로부터 제거하는 단계를 포함한다.As phrase 63, an embodiment of the technical idea of the present invention includes the method of phrase 52, wherein the performing background update of the stream identifier associated with the chunk identifier includes: adding the chunk identifier to a submission queue; And removing the chunk identifier from the submission queue when the chunk identifier is at the forefront of the submission queue.

제64 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 청크 식별자에 대한 액세스 카운트를 증가하는 단계; 상기 청크 식별자에 대한 현재 액세스 시간 및 이전 액세스 시간에 응답하여 상기 청크 식별자에 대한 최신 가중을 계산하는 단계; 상기 최신 가중에 응답하여 상기 청크 식별자에 대한 상기 액세스 카운트를 갱신하는 단계; 그리고 상기 갱신된 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계를 포함한다.As phrase 64, an embodiment of the technical idea of the present invention includes the method of phrase 52, wherein performing background update of the stream identifier associated with the chunk identifier includes increasing an access count for the chunk identifier. ; Calculating a latest weight for the chunk identifier in response to a current access time and a previous access time for the chunk identifier; Updating the access count for the chunk identifier in response to the latest weighting; And determining the stream identifier for the chunk identifier in response to the updated access count.

제65 문구로서, 본 발명의 기술적 사상의 실시 예는 제64 문구의 방법을 포함하고, 상기 청크 식별자에 대한 현재 액세스 시간 및 이전 액세스 시간에 응답하여 상기 청크 식별자에 대한 최신 가중을 계산하는 단계는 상기 최신 가중을 2의 (상기 청크 식별자에 대한 상기 현재 액세스 시간 및 상기 이전 액세스 시간 사이의 차이를 쇠퇴 기간으로 나눈 것) 승으로 계산하는 단계를 포함한다.As phrase 65, an embodiment of the technical idea of the present invention includes the method of phrase 64, and calculating the latest weight for the chunk identifier in response to a current access time and a previous access time for the chunk identifier And calculating the latest weight as the power of 2 (dividing the difference between the current access time and the previous access time for the chunk identifier by a decay period).

제66 문구로서, 본 발명의 기술적 사상의 실시 예는 제65 문구의 방법을 포함하고, 상기 최신 가중에 응답하여 상기 청크 식별자에 대한 상기 액세스 카운트를 갱신하는 단계는 상기 액세스 카운트를 상기 최신 가중으로 나누는 단계를 포함한다.As phrase 66, an embodiment of the technical idea of the present invention includes the method of phrase 65, wherein the updating of the access count for the chunk identifier in response to the latest weighting comprises changing the access count to the latest weighting. Includes the step of dividing.

제67 문구로서, 본 발명의 기술적 사상의 실시 예는 제64 문구의 방법을 포함하고, 상기 갱신된 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계는 상기 청크 식별자에 대한 상기 스트림 식별자를 상기 생산된 액세스 카운트의 로그로 계산하는 단계를 포함한다.As phrase 67, an embodiment of the technical idea of the present invention includes the method of phrase 64, and determining the stream identifier for the chunk identifier in response to the updated access count comprises: And calculating the stream identifier as a log of the produced access count.

제68 문구로서, 본 발명의 기술적 사상의 실시 예는 제52 문구의 방법을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 청크 식별자를 복수의 대기열들 중의 하나인 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계; 그리고 상기 청크 식별자가 상기 대기열의 맨 앞에 도달할 때 상기 청크 식별자를 격하할 지 판단하는 단계를 포함한다.As phrase 68, an embodiment of the technical idea of the present invention includes the method of phrase 52, and in the step of performing a background update of the stream identifier associated with the chunk identifier, the chunk identifier is one of a plurality of queues. Placing in a queue corresponding to the stream identifier; And determining whether to degrade the chunk identifier when the chunk identifier reaches the front of the queue.

제69 문구로서, 본 발명의 기술적 사상의 실시 예는 제68 문구의 방법을 포함하고, 상기 청크 식별자를 복수의 대기열들 중에서 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계는 상기 청크 식별자에 대한 액세스 카운트를 증가하는 단계; 그리고 상기 청크 식별자에 대한 상기 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계를 포함한다.As phrase 69, an embodiment of the technical idea of the present invention includes the method of phrase 68, and the step of arranging the chunk identifier in a queue corresponding to the stream identifier among a plurality of queues includes access to the chunk identifier. Increasing the count; And determining the stream identifier for the chunk identifier in response to the access count for the chunk identifier.

제70 문구로서, 본 발명의 기술적 사상의 실시 예는 제69 문구의 방법을 포함하고, 상기 청크 식별자에 대한 상기 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계는 상기 청크 식별자에 대한 상기 스트림 식별자를 상기 청크 식별자에 대한 상기 액세스 카운트의 로그로 계산하는 단계를 포함한다.As phrase 70, an embodiment of the technical idea of the present invention includes the method of phrase 69, wherein determining the stream identifier for the chunk identifier in response to the access count for the chunk identifier comprises the chunk identifier And calculating the stream identifier for the as a log of the access count for the chunk identifier.

제71 문구로서, 본 발명의 기술적 사상의 실시 예는 제69 문구의 방법을 포함하고, 상기 청크 식별자를 복수의 대기열들 중에서 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계는 상기 청크 식별자에 대한 상기 액세스 카운트가 가장 뜨거운 청크에 대한 제2 액세스 카운트를 초과하면 상기 청크 식별자를 새로운 가장 뜨거운 청크로 식별하는 단계를 더 포함한다.As the 71st phrase, an embodiment of the technical idea of the present invention includes the method of the 69th phrase, and the step of arranging the chunk identifier in a queue corresponding to the stream identifier among a plurality of queues includes the And if the access count exceeds the second access count for the hottest chunk, identifying the chunk identifier as a new hottest chunk.

제72 문구로서, 본 발명의 기술적 사상의 실시 예는 제71 문구의 방법을 포함하고, 상기 청크 식별자를 새로운 가장 뜨거운 청크로 식별하는 단계는 장치 수명을 상기 청크 식별자에 대한 현재 액세스 시간 및 상기 청크 식별자에 대한 이전 액세스 시간 사이의 차이로 계산하는 단계를 포함한다.As phrase 72, an embodiment of the technical idea of the present invention includes the method of phrase 71, wherein the step of identifying the chunk identifier as a new hottest chunk includes determining a device lifetime as a current access time for the chunk identifier and the chunk. And calculating the difference between the previous access times for the identifier.

제73 문구로서, 본 발명의 기술적 사상의 실시 예는 제68 문구의 방법을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 액세스 카운트 및 장치 수명에 응답하여 상기 청크 식별자에 대한 만료 시간을 판단하는 단계를 포함하고, 그리고 상기 청크 식별자가 상기 대기열의 맨 앞에 도달할 때 상기 청크 식별자를 격하할지 판단하는 단계는 상기 청크 식별자에 대한 상기 만료 시간이 지났으면: 상기 스트림 식별자에 대응하는 상기 대기열로부터 상기 청크 식별자를 제거하는 단계; 상기 스트림 식별자를 감소하는 단계; 그리고 상기 청크 식별자를 상기 감소된 스트림 식별자에 대응하는 제2 대기열에 배치하는 단계를 포함한다.As phrase 73, an embodiment of the technical idea of the present invention includes the method of phrase 68, wherein the performing background update of the stream identifier associated with the chunk identifier comprises the chunk identifier in response to the access count and the device lifetime. Determining an expiration time for the identifier, and determining whether to degrade the chunk identifier when the chunk identifier reaches the front of the queue, if the expiration time for the chunk identifier has passed: the stream Removing the chunk identifier from the queue corresponding to the identifier; Reducing the stream identifier; And placing the chunk identifier in a second queue corresponding to the reduced stream identifier.

제74 문구로서, 본 발명의 기술적 사상의 실시 예는 제73 문구의 방법을 포함하고, 상기 액세스 카운트 및 장치 수명에 응답하여 상기 청크 식별자에 대한 만료 시간을 판단하는 단계는 상기 장치 수명을 가장 뜨거운 청크에 대한 마지막 액세스 시간 및 상기 가장 뜨거운 청크에 대한 이전 액세스 시간 사이의 차이로 계산하는 단계를 포함한다.As phrase 74, an embodiment of the technical idea of the present invention includes the method of phrase 73, and determining an expiration time for the chunk identifier in response to the access count and the device lifetime is the hottest device lifetime. And calculating the difference between the last access time for the chunk and the previous access time for the hottest chunk.

제75 문구로서, 본 발명의 기술적 사상의 실시 예는 제73 문구의 방법을 포함하고, 상기 청크 식별자가 상기 대기열의 맨 앞에 도달할 때 상기 청크 식별자를 격하할지 판단하는 단계는 상기 청크 식별자에 대한 상기 만료 시간이 지났으면 그리고 상기 청크 식별자가 가장 뜨거운 청크이면 상기 스트림 식별자에 대응하는 상기 대기열의 제2 청크 식별자를 새로운 가장 뜨거운 청크로 선택하는 단계를 더 포함한다.As phrase 75, an embodiment of the technical idea of the present invention includes the method of phrase 73, wherein when the chunk identifier reaches the front of the queue, determining whether to downgrade the chunk identifier includes: If the expiration time has passed and if the chunk identifier is the hottest chunk, selecting a second chunk identifier of the queue corresponding to the stream identifier as a new hottest chunk.

제76 문구로서, 본 발명의 기술적 사상의 실시 예는 비-임시(non-transitory) 저장 매체를 포함하는 물품을 포함한다. 상기 비-임시 저장 매체는 그것에 저장된 명령들을 포함하고, 상기 명령들이 기계에 의해 실행될 때: 소프트웨어 소스로부터 쓰기 명령을 수신하는 단계; 상기 쓰기 명령에서 논리 블록 주소(LBA, logical block address)를 판단하는 단계; 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에서 청크에 대한 청크 식별자(ID, identifier)를 식별하는 단계; 상기 청크 식별자에 관련된 스트림 식별자에 접근하는 단계; 상기 스트림 식별자를 상기 쓰기 명령에 할당하는 단계; 상기 할당된 스트림 식별자를 이용하여 상기 솔리드 스테이트 드라이브에서 상기 쓰기 명령을 처리하는 단계; 그리고 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계를 유발한다.As phrase 76, an embodiment of the technical idea of the present invention includes an article including a non-transitory storage medium. The non-transitory storage medium includes instructions stored thereon, and when the instructions are executed by a machine: receiving a write instruction from a software source; Determining a logical block address (LBA) in the write command; Identifying a chunk identifier (ID) for a chunk in a solid state drive (SSD) including the logical block address; Accessing a stream identifier associated with the chunk identifier; Allocating the stream identifier to the write command; Processing the write command in the solid state drive using the allocated stream identifier; In addition, a step of performing a background update of the stream identifier associated with the chunk identifier is triggered.

제77 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 방법은 호스트 컴퓨터 시스템의 파일 시스템 계층, 블록 계층, 또는 장치 드라이버 계층 중 하나에서 구현된다.As phrase 77, an embodiment of the technical idea of the present invention includes the article of phrase 76, and the method is implemented in one of a file system layer, a block layer, or a device driver layer of the host computer system.

제78 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 방법은 상기 솔리드 스테이트 드라이브의 플래시 변환 계층에서 구현된다.As clause 78, an embodiment of the technical idea of the present invention includes the article of clause 76, and the method is implemented in the flash conversion layer of the solid state drive.

제79 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브에서 청크에 대한 청크 식별자를 식별하는 단계는 상기 논리 블록 주소에서 주소 마스크를 이용하여 상기 청크 식별자를 식별하는 단계를 포함한다.As phrase 79, an embodiment of the technical idea of the present invention includes the article of phrase 76, and the step of identifying a chunk identifier for a chunk in the solid state drive including the logical block address includes an address from the logical block address. And identifying the chunk identifier using a mask.

제80 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브에서 청크에 대한 청크 식별자를 식별하는 단계는 상기 논리 블록 주소를 상기 청크의 섹터들의 수로 나누는 단계를 포함한다.As phrase 80, an embodiment of the technical idea of the present invention includes the article of phrase 76, and the step of identifying a chunk identifier for a chunk in the solid state drive including the logical block address includes the logical block address. Dividing by the number of sectors in the chunk.

제81 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 스트림 식별자를 상기 쓰기 명령에 할당하는 단계는 상기 스트림 식별자를 상기 쓰기 명령에 태그로서 추가하는 단계를 포함한다.As the 81st phrase, an embodiment of the technical idea of the present invention includes the article of the 76th phrase, and the step of allocating the stream identifier to the write command includes adding the stream identifier to the write command as a tag. do.

제82 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 논리 블록 주소가 제2 쓰기 명령의 제2 논리 블록 주소에 순차적인지 판단하는 단계; 그리고 상기 논리 블록 주소가 상기 제2 쓰기 명령의 상기 제2 논리 블록 주소에 순차적이면, 상기 제2 쓰기 명령에 할당된 상기 제2 스트림 식별자를 판단하는 단계; 그리고 상기 쓰기 명령에 상기 제2 스트림 식별자를 할당하는 단계를 더 포함한다.As phrase 82, an embodiment of the technical idea of the present invention includes the article of phrase 76, and determining whether the logical block address is sequential to a second logical block address of a second write command; And determining the second stream identifier assigned to the second write command if the logical block address is sequential to the second logical block address of the second write command. And allocating the second stream identifier to the write command.

제83 문구로서, 본 발명의 기술적 사상의 실시 예는 제82 문구의 물품을 포함하고, 상기 제2 쓰기 명령은 상기 쓰기 명령에 선행하는 윈도 내에 있다.As the 83rd phrase, an embodiment of the technical idea of the present invention includes the article of the 82nd phrase, and the second write command is in a window preceding the write command.

제84 문구로서, 본 발명의 기술적 사상의 실시 예는 제83 문구의 물품을 포함하고, 상기 비-임시 저장 매체는 상기 기계에 의해 실행될 때: 상기 윈도를 식별하는 단계를 유발하는 명령들을 더 포함한다.As phrase 84, an embodiment of the technical idea of the present invention includes the article of phrase 83, and when the non-transitory storage medium is executed by the machine: further includes instructions for causing the step of identifying the window. do.

제85 문구로서, 본 발명의 기술적 사상의 실시 예는 제84 문구의 물품을 포함하고, 상기 윈도를 식별하는 단계는 상기 솔리드 스테이트 드라이브를 포함하는 호스트 컴퓨터 시스템의 프로세서의 코어들의 수 및 상기 솔리드 스테이트 드라이브를 포함하는 상기 호스트 컴퓨터 시스템의 상기 프로세서에서 실행되는 소프트웨어 소스들의 수 중 적어도 하나에 응답하여 상기 윈도에 대한 윈도 사이즈를 식별하는 단계를 포함한다.As phrase 85, an embodiment of the technical idea of the present invention includes the article of clause 84, and the step of identifying the window includes the number of cores of the processor of the host computer system including the solid state drive and the solid state. Identifying a window size for the window in response to at least one of the number of software sources executing on the processor of the host computer system including a drive.

제86 문구로서, 본 발명의 기술적 사상의 실시 예는 제83 문구의 물품을 포함하고, 상기 비-임시 저장 매체는 상기 기계에 의해 실행될 때: 상기 윈도에서 가장 오래된 쓰기 명령을 식별하는 단계; 그리고 상기 윈도에서 상기 가장 오래된 쓰기 명령을 상기 쓰기 명령으로 치환하는 단계를 유발하는 명령들을 더 포함한다.As the 86th phrase, an embodiment of the technical idea of the present invention includes the article of the 83rd phrase, and when the non-temporary storage medium is executed by the machine: identifying the oldest write command in the window; And instructions for causing the step of replacing the oldest write command with the write command in the window.

제87 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 청크 식별자를 제출 대기열에 추가하는 단계; 그리고 상기 청크 식별자가 상기 제출 대기열의 머리에 있을 때 상기 청크 식별자를 상기 제출 대기열로부터 제거하는 단계를 포함한다.As the 87th phrase, an embodiment of the technical idea of the present invention includes the article of the 76th phrase, and the performing background update of the stream identifier associated with the chunk identifier includes: adding the chunk identifier to a submission queue; And removing the chunk identifier from the submission queue when the chunk identifier is at the head of the submission queue.

제88 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 청크 식별자에 대한 액세스 카운트를 증가하는 단계; 상기 청크 식별자에 대한 현재 액세스 시간 및 이전 액세스 시간에 응답하여 상기 청크 식별자에 대한 최신 가중을 계산하는 단계; 상기 최신 가중에 응답하여 상기 청크 식별자에 대한 상기 액세스 카운트를 갱신하는 단계; 그리고 상기 갱신된 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계를 포함한다.As phrase 88, an embodiment of the technical idea of the present invention includes the article of phrase 76, and performing background update of the stream identifier associated with the chunk identifier includes increasing an access count for the chunk identifier. ; Calculating a latest weight for the chunk identifier in response to a current access time and a previous access time for the chunk identifier; Updating the access count for the chunk identifier in response to the latest weighting; And determining the stream identifier for the chunk identifier in response to the updated access count.

제89 문구로서, 본 발명의 기술적 사상의 실시 예는 제88 문구의 물품을 포함하고, 상기 청크 식별자에 대한 현재 액세스 시간 및 이전 액세스 시간에 응답하여 상기 청크 식별자에 대한 최신 가중을 계산하는 단계는 상기 최신 가중을 2의 (상기 청크 식별자에 대한 상기 현재 액세스 시간 및 상기 이전 액세스 시간 사이의 차이를 쇠퇴 기간으로 나눈 것) 승으로 계산하는 단계를 포함한다.As phrase 89, an embodiment of the technical idea of the present invention includes the article of phrase 88, and calculating the latest weight for the chunk identifier in response to a current access time and a previous access time for the chunk identifier And calculating the latest weight as the power of 2 (dividing the difference between the current access time and the previous access time for the chunk identifier by a decay period).

제90 문구로서, 본 발명의 기술적 사상의 실시 예는 제89 문구의 물품을 포함하고, 상기 최신 가중에 응답하여 상기 청크 식별자에 대한 상기 액세스 카운트를 갱신하는 단계는 상기 액세스 카운트를 상기 최신 가중으로 나누는 단계를 포함한다.As the 90th phrase, an embodiment of the technical idea of the present invention includes the article of the 89th phrase, and in response to the latest weighting, updating the access count for the chunk identifier may include changing the access count to the latest weighting. Includes the step of dividing.

제91 문구로서, 본 발명의 기술적 사상의 실시 예는 제88 문구의 물품을 포함하고, 상기 갱신된 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계는 상기 청크 식별자에 대한 상기 스트림 식별자를 상기 생산된 액세스 카운트의 로그로 계산하는 단계를 포함한다.As phrase 91, an embodiment of the technical idea of the present invention includes the article of phrase 88, and determining the stream identifier for the chunk identifier in response to the updated access count comprises: And calculating the stream identifier as a log of the produced access count.

제92 문구로서, 본 발명의 기술적 사상의 실시 예는 제76 문구의 물품을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 청크 식별자를 복수의 대기열들 중에서 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계; 그리고 상기 청크 식별자가 상기 대기열의 머리에 도달할 때 상기 청크 식별자를 격하할 지 판단하는 단계를 포함한다.As phrase 92, an embodiment of the technical idea of the present invention includes the article of phrase 76, and the performing background update of the stream identifier associated with the chunk identifier includes the chunk identifier from among a plurality of queues. Placing in a queue corresponding to the identifier; And determining whether to downgrade the chunk identifier when the chunk identifier reaches the head of the queue.

제93 문구로서, 본 발명의 기술적 사상의 실시 예는 제92 문구의 물품을 포함하고, 상기 청크 식별자를 복수의 대기열들 중에서 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계는 상기 청크 식별자에 대한 액세스 카운트를 증가하는 단계; 그리고 상기 청크 식별자에 대한 상기 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계를 포함한다.As phrase 93, an embodiment of the technical idea of the present invention includes the article of phrase 92, and the step of arranging the chunk identifier in a queue corresponding to the stream identifier among a plurality of queues includes access to the chunk identifier. Increasing the count; And determining the stream identifier for the chunk identifier in response to the access count for the chunk identifier.

제94 문구로서, 본 발명의 기술적 사상의 실시 예는 제93 문구의 물품을 포함하고, 상기 청크 식별자에 대한 상기 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계는 상기 청크 식별자에 대한 상기 스트림 식별자를 상기 청크 식별자에 대한 상기 액세스 카운트의 로그로 계산하는 단계를 포함한다.As the 94th phrase, an embodiment of the technical idea of the present invention includes the article of the 93rd phrase, and determining the stream identifier for the chunk identifier in response to the access count for the chunk identifier comprises the chunk identifier And calculating the stream identifier for the as a log of the access count for the chunk identifier.

제95 문구로서, 본 발명의 기술적 사상의 실시 예는 제93 문구의 물품을 포함하고, 상기 청크 식별자를 복수의 대기열들 중에서 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계는 상기 청크 식별자에 대한 상기 액세스 카운트가 가장 뜨거운 청크에 대한 제2 액세스 카운트를 초과하면 상기 청크 식별자를 새로운 가장 뜨거운 청크로 식별하는 단계를 더 포함한다.As the 95th phrase, an embodiment of the technical idea of the present invention includes the article of the 93rd phrase, and the step of arranging the chunk identifier in a queue corresponding to the stream identifier among a plurality of queues includes the And if the access count exceeds the second access count for the hottest chunk, identifying the chunk identifier as a new hottest chunk.

제96 문구로서, 본 발명의 기술적 사상의 실시 예는 제95 문구의 물품을 포함하고, 상기 청크 식별자를 새로운 가장 뜨거운 청크로 식별하는 단계는 장치 수명을 상기 청크 식별자에 대한 현재 액세스 시간 및 상기 청크 식별자에 대한 이전 액세스 시간 사이의 차이로 계산하는 단계를 포함한다.As phrase 96, an embodiment of the technical idea of the present invention includes the article of phrase 95, and the step of identifying the chunk identifier as a new hottest chunk includes determining a device lifetime as a current access time for the chunk identifier and the chunk. And calculating the difference between the previous access times for the identifier.

제97 문구로서, 본 발명의 기술적 사상의 실시 예는 제92 문구의 물품을 포함하고, 상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 상기 액세스 카운트 및 장치 수명에 응답하여 상기 청크 식별자에 대한 만료 시간을 판단하는 단계를 포함하고, 그리고 상기 청크 식별자가 상기 대기열의 맨 앞에 도달할 때 상기 청크 식별자를 격하할지 판단하는 단계는 상기 청크 식별자에 대한 상기 만료 시간이 지났으면: 상기 스트림 식별자에 대응하는 상기 대기열로부터 상기 청크 식별자를 제거하는 단계; 상기 스트림 식별자를 감소하는 단계; 그리고 상기 청크 식별자를 상기 감소된 스트림 식별자에 대응하는 제2 대기열에 배치하는 단계를 포함한다.As phrase 97, an embodiment of the technical idea of the present invention includes the article of phrase 92, and the performing background update of the stream identifier associated with the chunk identifier comprises the chunk identifier in response to the access count and the device lifetime. Determining an expiration time for the identifier, and determining whether to degrade the chunk identifier when the chunk identifier reaches the front of the queue, if the expiration time for the chunk identifier has passed: the stream Removing the chunk identifier from the queue corresponding to the identifier; Reducing the stream identifier; And placing the chunk identifier in a second queue corresponding to the reduced stream identifier.

제98 문구로서, 본 발명의 기술적 사상의 실시 예는 제97 문구의 물품을 포함하고, 상기 액세스 카운트 및 장치 수명에 응답하여 상기 청크 식별자에 대한 만료 시간을 판단하는 단계는 상기 장치 수명을 가장 뜨거운 청크에 대한 마지막 액세스 시간 및 상기 가장 뜨거운 청크에 대한 이전 액세스 시간 사이의 차이로 계산하는 단계를 포함한다.As phrase 98, an embodiment of the technical idea of the present invention includes the article of phrase 97, and determining an expiration time for the chunk identifier in response to the access count and the device lifetime is the hottest device lifetime. And calculating the difference between the last access time for the chunk and the previous access time for the hottest chunk.

제99 문구로서, 본 발명의 기술적 사상의 실시 예는 제97 문구의 물품을 포함하고, 상기 청크 식별자가 상기 대기열의 머리에 도달할 때 상기 청크 식별자를 격하할지 판단하는 단계는 상기 청크 식별자에 대한 상기 만료 시간이 지났으면 그리고 상기 청크 식별자가 가장 뜨거운 청크이면 상기 스트림 식별자에 대응하는 상기 대기열의 제2 청크 식별자를 새로운 가장 뜨거운 청크로 선택하는 단계를 더 포함한다.As the 99th phrase, an embodiment of the technical idea of the present invention includes the article of the 97th phrase, and when the chunk identifier reaches the head of the queue, determining whether to downgrade the chunk identifier includes: If the expiration time has passed and if the chunk identifier is the hottest chunk, selecting a second chunk identifier of the queue corresponding to the stream identifier as a new hottest chunk.

결과적으로, 설명된 실시 예들에 대한 넓고 다양한 순열의 관점에서, 상세한 설명 및 첨부된 소재들은 예시적인 것에 불과하며, 본 발명의 기술적 사상의 범위를 한정하지 않는다. 따라서, 첨부된 청구 범위와 같이, 이러한 모든 변경들을 후술되는 청구항들의 기술적 사상의 범위 및 그것에 등가적인 것에 속한다.As a result, in view of a wide and various permutations of the described embodiments, the detailed description and the accompanying materials are merely exemplary, and do not limit the scope of the technical idea of the present invention. Accordingly, as in the appended claims, all such changes belong to the scope of the technical spirit of the claims to be described below and equivalent thereto.

105: 기계 110: 프로세서
115: 메모리 120: 솔리드 스테이트 드라이브
205: 클럭 210: 네트워크 커넥터
215: 버스 220: 사용자 인터페이스
225: 입력/출력 엔진 305: 호스트 인터페이스 로직
310: 솔리드 스테이트 드라이브 제어기 315-1~315-8: 플래시 칩들
320-1~320-4: 채널들 325: 플래시 변환 계층
330: 스토리지 335: 제출 대기열
340: 청크-스트림 사상기 405: 수신기
410: 논리 블록 주소 사상기 415: 스트림 선택 로직
420: 스트림 식별자 추가기 425: 송신기
430: 줄세움기 435: 배경 로직
905: 순차 로직 910: 최신 로직
915: 액세스 카운트 조절기 920: 스트림 식별자 조절기
1005: 스토리지 1010: 비교기
105: machine 110: processor
115: memory 120: solid state drive
205: clock 210: network connector
215: bus 220: user interface
225: input/output engine 305: host interface logic
310: solid state drive controller 315-1~315-8: flash chips
320-1 to 320-4: channels 325: flash conversion layer
330: storage 335: submission queue
340: chunk-stream mapper 405: receiver
410: logical block address mapper 415: stream selection logic
420: stream identifier adder 425: transmitter
430: line up 435: background logic
905: sequential logic 910: modern logic
915: access count adjuster 920: stream identifier adjuster
1005: storage 1010: comparator

Claims (20)

솔리드 스테이트 드라이브(SSD, solid state drive)에 있어서:
데이터를 저장하는 플래시 메모리;
상기 솔리드 스테이트 드라이브에서 복수의 장치 스트림들에 대한 지원 수단;
제출 대기열 및 청크-스트림 사상기(mapper)를 위한 저장소를 포함하고, 복수의 쓰기 명령들에 응답하여 상기 플래시 메모리에 대한 데이터 쓰기를 관리하는 솔리드 스테이트 제어기; 그리고
플래시 변환 계층을 포함하고, 상기 플래시 변환 계층은:
논리 블록 주소(LBA, logical block address)를 포함하는 쓰기 명령을 수신하는 수신기;
상기 논리 블록 주소를 청크 식별자(ID, identifier)에 사상(mapping)하는 논리 블록 주소 사상기;
상기 청크-스트림 사상기를 이용하여 상기 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직;
상기 스트림 식별자를 상기 쓰기 명령에 추가하는 스트림 식별자 추가기(adder);
상기 청크 식별자를 상기 제출 대기열에 배치하는 줄세움기(queuer); 그리고
상기 청크 식별자를 상기 제출 대기열로부터 제거하고 그리고 상기 청크-스트림 사상기를 갱신하는 배경 로직을 포함하는 솔리드 스테이트 드라이브.
For solid state drives (SSDs):
A flash memory for storing data;
Support means for a plurality of device streams in the solid state drive;
A solid state controller that includes storage for a submission queue and a chunk-stream mapper, and manages writing data to the flash memory in response to a plurality of write commands; And
A flash transform layer, wherein the flash transform layer is:
A receiver for receiving a write command including a logical block address (LBA);
A logical block address mapper for mapping the logical block address to a chunk identifier (ID);
Stream selection logic for selecting a stream identifier based on the chunk identifier using the chunk-stream mapper;
A stream identifier adder for adding the stream identifier to the write command;
A queue for placing the chunk identifier in the submission queue; And
Solid state drive comprising background logic to remove the chunk identifier from the submission queue and update the chunk-stream mapper.
제1항에 있어서,
상기 청크-스트림 사상기는 순차, 빈도, 최신(SFR, Sequential, Frequency, Recency) 표를 포함하고, 상기 SFR 표는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함하는 솔리드 스테이트 드라이브.
The method of claim 1,
The chunk-stream mapper includes a sequential, frequency, and latest (SFR, Sequential, Frequency, Recency) table, and the SFR table includes the chunk identifier and the stream identifier for the chunk identifier.
제2항에 있어서,
상기 배경 로직은 상기 논리 블록 주소가 이전 쓰기 명령의 제2 논리 블록 주소에 순차적이면 이전 스트림을 선택하는 순차 로직을 포함하는 솔리드 스테이트 드라이브.
The method of claim 2,
The background logic includes sequential logic for selecting a previous stream if the logical block address is sequential to a second logical block address of a previous write command.
제2항에 있어서,
상기 배경 로직은:
상기 청크 식별자에 대한 현재 엑세스 시간, 상기 청크 식별자에 대한 이전 액세스 시간, 그리고 쇠퇴 기간에 기반하여 최신 가중을 계산하는 최신 로직;
상기 최신 가중에 기반하여 상기 청크 식별자에 대한 액세스 카운트를 조절하여 조절된 액세스 카운트를 생산하는 액세스 카운트 조절기; 그리고
상기 청크 식별자에 대한 상기 조절된 액세스 카운트에 기반하여 상기 스트림 식별자를 조절하는 스트림 식별자 조절기를 포함하는 솔리드 스테이트 드라이브.
The method of claim 2,
The background logic is:
Latest logic for calculating a latest weight based on a current access time for the chunk identifier, a previous access time for the chunk identifier, and a decay period;
An access count adjuster for producing an adjusted access count by adjusting an access count for the chunk identifier based on the latest weight; And
And a stream identifier adjuster for adjusting the stream identifier based on the adjusted access count for the chunk identifier.
제1항에 있어서,
상기 청크-스트림 사상기는 노드 엔트리를 포함하고, 상기 노드 엔트리는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함하는 솔리드 스테이트 드라이브.
The method of claim 1,
The chunk-stream mapper comprises a node entry, the node entry comprising the chunk identifier and the stream identifier for the chunk identifier.
제5항에 있어서,
상기 배경 로직은:
상기 청크 식별자에 기반하여 상기 스트림 식별자를 승격할 때를 판단하는 승격 로직;
상기 청크 식별자에 대한 상기 스트림 식별자에 응답하여, 복수의 스트림 식별자들에 대응하는 복수의 대기열들의 첫 번째에 상기 청크 식별자를 배치하는 제2 줄세움기; 그리고
상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하는 격하 로직을 포함하는 솔리드 스테이트 드라이브.
The method of claim 5,
The background logic is:
Promotion logic for determining when to promote the stream identifier based on the chunk identifier;
A second stringer for disposing the chunk identifier at first of a plurality of queues corresponding to a plurality of stream identifiers in response to the stream identifier for the chunk identifier; And
And a degrading logic for determining when to degrade the stream identifier based on the chunk identifier.
제6항에 있어서,
상기 격하 로직은:
상기 청크 식별자에 대한 만료 시간이 지났는지 판단하는 비교기; 그리고
상기 청크 식별자에 대한 상기 만료 시간이 지났으면, 상기 스트림 식별자를 줄이는 감소기를 포함하고,
상기 제2 줄세움기는 상기 청크 식별자에 대한 상기 감소된 스트림 식별자에 응답하여, 상기 복수의 스트림 식별자들에 대응하는 상기 복수의 대기열들 중 두 번째에 상기 청크 식별자를 배치하도록 동작하는 솔리드 스테이트 드라이브.
The method of claim 6,
The degrading logic is:
A comparator for determining whether an expiration time for the chunk identifier has passed; And
If the expiration time for the chunk identifier has passed, a reducer for reducing the stream identifier,
The second stringer is operative to place the chunk identifier in a second of the plurality of queues corresponding to the plurality of stream identifiers in response to the reduced stream identifier for the chunk identifier.
기계에 의해 실행된 때에 다음을 유발하는 명령들을 저장하는 비일시적인 저장 매체에 있어서, 상기 다음은:
논리 블록 주소(LBA, logical block address)를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에 대한 쓰기 명령을 수신하는 수신기;
상기 논리 블록 주소를 청크 식별자(ID, identifier)에 사상하는 논리 블록 주소 사상기;
호스트 컴퓨터 시스템의 메모리에 저장된 청크-스트림 사상기를 이용하여 상기 청크 식별자에 기반하여 스트림 식별자를 선택하는 스트림 선택 로직;
상기 스트림 식별자를 상기 쓰기 명령에 추가하는 스트림 식별자 추가기;
상기 청크 식별자를 상기 메모리에 저장된 제출 대기열에 배치하는 줄세움기; 그리고
상기 제출 대기열로부터 상기 청크 식별자를 제거하고 그리고 상기 청크-스트림 사상기를 갱신하는 배경 로직을 포함하는 비일시적인 저장 매체.
A non-transitory storage medium storing instructions that, when executed by a machine, cause:
A receiver for receiving a write command for a solid state drive (SSD) including a logical block address (LBA);
A logical block address mapper for mapping the logical block address to a chunk identifier (ID);
Stream selection logic for selecting a stream identifier based on the chunk identifier using a chunk-stream mapper stored in a memory of the host computer system;
A stream identifier adder for adding the stream identifier to the write command;
A line-up device for placing the chunk identifier in a submission queue stored in the memory; And
A non-transitory storage medium comprising background logic to remove the chunk identifier from the submission queue and update the chunk-stream mapper.
제8항에 있어서,
상기 청크-스트림 사상기는 순차, 빈도, 최신(SFR, Sequential, Frequency, Recency) 표를 포함하고, 상기 SFR 표는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함하는 비일시적인 저장 매체.
The method of claim 8,
The chunk-stream mapper includes a sequential, frequency, and latest (SFR, Sequential, Frequency, Recency) table, and the SFR table includes the chunk identifier and the stream identifier for the chunk identifier.
제9항에 있어서,
상기 배경 로직은 상기 논리 블록 주소가 이전 쓰기 명령의 제2 논리 블록 주소에 순차적이면 이전 스트림을 선택하는 순차 로직을 포함하는 비일시적인 저장 매체.
The method of claim 9,
The background logic includes sequential logic for selecting a previous stream if the logical block address is sequential to a second logical block address of a previous write command.
제9항에 있어서,
상기 배경 로직은:
상기 청크 식별자에 대한 현재 엑세스 시간, 상기 청크 식별자에 대한 이전 액세스 시간, 그리고 쇠퇴 기간에 기반하여 최신 가중을 계산하는 최신 로직;
상기 최신 가중에 기반하여 상기 청크 식별자에 대한 액세스 카운트를 조절하여 조절된 액세스 카운트를 생산하는 액세스 카운트 조절기; 그리고
상기 청크 식별자에 대한 상기 조절된 액세스 카운트에 기반하여 상기 스트림 식별자를 조절하는 스트림 식별자 조절기를 포함하는 비일시적인 저장 매체.
The method of claim 9,
The background logic is:
Latest logic for calculating a latest weight based on a current access time for the chunk identifier, a previous access time for the chunk identifier, and a decay period;
An access count adjuster for producing an adjusted access count by adjusting an access count for the chunk identifier based on the latest weight; And
And a stream identifier adjuster for adjusting the stream identifier based on the adjusted access count for the chunk identifier.
제8항에 있어서,
상기 청크-스트림 사상기는 노드 엔트리를 포함하고, 상기 노드 엔트리는 상기 청크 식별자 및 상기 청크 식별자에 대한 상기 스트림 식별자를 포함하는 비일시적인 저장 매체.
The method of claim 8,
The chunk-stream mapper includes a node entry, and the node entry includes the chunk identifier and the stream identifier for the chunk identifier.
제12항에 있어서,
상기 배경 로직은:
상기 청크 식별자에 기반하여 상기 스트림 식별자를 승격할 때를 판단하는 승격 로직;
상기 청크 식별자에 대한 상기 스트림 식별자에 응답하여, 복수의 스트림 식별자들에 대응하는 복수의 대기열들의 첫 번째에 상기 청크 식별자를 배치하는 제2 줄세움기; 그리고
상기 청크 식별자에 기반하여 상기 스트림 식별자를 격하할 때를 판단하는 격하 로직을 포함하는 비일시적인 저장 매체.
The method of claim 12,
The background logic is:
Promotion logic for determining when to promote the stream identifier based on the chunk identifier;
A second stringer for disposing the chunk identifier at first of a plurality of queues corresponding to a plurality of stream identifiers in response to the stream identifier for the chunk identifier; And
A non-transitory storage medium comprising a demotion logic for determining when to degrade the stream identifier based on the chunk identifier.
제13항에 있어서,
상기 격하 로직은:
상기 청크 식별자에 대한 만료 시간이 지났는지 판단하는 비교기; 그리고
상기 청크 식별자에 대한 상기 만료 시간이 지났으면, 상기 스트림 식별자를 줄이는 감소기를 포함하고,
상기 제2 줄세움기는 상기 청크 식별자에 대한 상기 감소된 스트림 식별자에 응답하여, 상기 복수의 스트림 식별자들에 대응하는 상기 복수의 대기열들 중 두 번째에 상기 청크 식별자를 배치하도록 동작하는 비일시적인 저장 매체.
The method of claim 13,
The degrading logic is:
A comparator for determining whether an expiration time for the chunk identifier has passed; And
If the expiration time for the chunk identifier has passed, a reducer for reducing the stream identifier,
The second line-up device is a non-transitory storage medium operable to place the chunk identifier in a second of the plurality of queues corresponding to the plurality of stream identifiers in response to the reduced stream identifier for the chunk identifier. .
소프트웨어 소스로부터 쓰기 명령을 수신하는 단계;
상기 쓰기 명령에서 논리 블록 주소(LBA, logical block address)를 판단하는 단계;
상기 논리 블록 주소를 포함하는 솔리드 스테이트 드라이브(SSD, solid state drive)에서 청크에 대한 청크 식별자(ID, identifier)를 식별하는 단계;
상기 청크 식별자와 관련된 스트림 식별자에 접근하는 단계;
상기 스트림 식별자를 상기 쓰기 명령에 할당하는 단계;
상기 할당된 스트림 식별자를 이용하여 상기 솔리드 스테이트 드라이브에서 상기 쓰기 명령을 처리하는 단계; 그리고
상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계를 포함하는 방법.
Receiving a write command from a software source;
Determining a logical block address (LBA) in the write command;
Identifying a chunk identifier (ID) for a chunk in a solid state drive (SSD) including the logical block address;
Accessing a stream identifier associated with the chunk identifier;
Allocating the stream identifier to the write command;
Processing the write command in the solid state drive using the allocated stream identifier; And
And performing a background update of the stream identifier associated with the chunk identifier.
제15항에 있어서,
상기 논리 블록 주소가 제2 쓰기 명령의 제2 논리 블록 주소에 순차적인지 판단하는 단계; 그리고
상기 논리 블록 주소가 상기 제2 쓰기 명령의 상기 제2 논리 블록 주소에 순차적이면:
상기 제2 쓰기 명령에 할당된 제2 스트림 식별자를 판단하는 단계; 그리고
상기 쓰기 명령에 상기 제2 스트림 식별자를 할당하는 단계를 더 포함하는 방법.
The method of claim 15,
Determining whether the logical block address is sequential to a second logical block address of a second write command; And
If the logical block address is sequential to the second logical block address of the second write command:
Determining a second stream identifier assigned to the second write command; And
Allocating the second stream identifier to the write command.
제15항에 있어서,
상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는:
상기 청크 식별자를 제출 대기열에 추가하는 단계; 그리고
상기 청크 식별자가 상기 제출 대기열의 맨 앞에 있을 때 상기 청크 식별자를 상기 제출 대기열로부터 제거하는 단계를 포함하는 방법.
The method of claim 15,
Performing a background update of the stream identifier associated with the chunk identifier comprises:
Adding the chunk identifier to a submission queue; And
Removing the chunk identifier from the submission queue when the chunk identifier is at the forefront of the submission queue.
제15항에 있어서,
상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는:
상기 청크 식별자에 대한 액세스 카운트를 증가하는 단계;
상기 청크 식별자에 대한 현재 액세스 시간 및 이전 액세스 시간에 응답하여 상기 청크 식별자에 대한 최신 가중을 계산하는 단계;
상기 최신 가중에 응답하여 상기 청크 식별자에 대한 상기 액세스 카운트를 갱신하는 단계; 그리고
상기 갱신된 액세스 카운트에 응답하여 상기 청크 식별자에 대한 상기 스트림 식별자를 판단하는 단계를 포함하는 방법.
The method of claim 15,
Performing a background update of the stream identifier associated with the chunk identifier comprises:
Increasing an access count for the chunk identifier;
Calculating a latest weight for the chunk identifier in response to a current access time and a previous access time for the chunk identifier;
Updating the access count for the chunk identifier in response to the latest weighting; And
Determining the stream identifier for the chunk identifier in response to the updated access count.
제15항에 있어서,
상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는:
상기 청크 식별자를 복수의 대기열들 중의 하나인 상기 스트림 식별자에 대응하는 대기열에 배치하는 단계; 그리고
상기 청크 식별자가 상기 대기열의 맨 앞에 도달할 때 상기 청크 식별자를 격하할지 판단하는 단계를 포함하는 방법.
The method of claim 15,
Performing a background update of the stream identifier associated with the chunk identifier comprises:
Placing the chunk identifier in a queue corresponding to the stream identifier, which is one of a plurality of queues; And
Determining whether to degrade the chunk identifier when the chunk identifier reaches the front of the queue.
제19항에 있어서,
상기 청크 식별자와 연관된 상기 스트림 식별자의 배경 갱신을 수행하는 단계는 액세스 카운트 및 장치 수명에 응답하여 상기 청크 식별자에 대한 만료 시간을 판단하는 단계를 포함하고; 그리고
상기 청크 식별자가 상기 대기열의 맨 앞에 도달할 때 상기 청크 식별자를 격하할지 판단하는 단계는 상기 청크 식별자에 대한 상기 만료 시간이 지났으면:
상기 스트림 식별자에 대응하는 상기 대기열로부터 상기 청크 식별자를 제거하는 단계;
상기 스트림 식별자를 감소하는 단계; 그리고
상기 청크 식별자를 상기 감소된 스트림 식별자에 대응하는 제2 대기열에 배치하는 단계를 포함하는 방법.
The method of claim 19,
Performing background update of the stream identifier associated with the chunk identifier includes determining an expiration time for the chunk identifier in response to an access count and a device lifetime; And
The step of determining whether to degrade the chunk identifier when the chunk identifier reaches the front of the queue is if the expiration time for the chunk identifier has passed:
Removing the chunk identifier from the queue corresponding to the stream identifier;
Reducing the stream identifier; And
Placing the chunk identifier in a second queue corresponding to the reduced stream identifier.
KR1020170091654A 2016-09-02 2017-07-19 Automatic stream detection and assignment algorithm KR102229013B1 (en)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US201662383302P 2016-09-02 2016-09-02
US62/383,302 2016-09-02
US15/344,422 US10282324B2 (en) 2015-07-13 2016-11-04 Smart I/O stream detection based on multiple attributes
US15/344,422 2016-11-04
US201762458566P 2017-02-13 2017-02-13
US62/458,566 2017-02-13
US201762471350P 2017-03-14 2017-03-14
US62/471,350 2017-03-14
US15/499,877 2017-04-27
US15/499,877 US10656838B2 (en) 2015-07-13 2017-04-27 Automatic stream detection and assignment algorithm

Publications (2)

Publication Number Publication Date
KR20180026327A KR20180026327A (en) 2018-03-12
KR102229013B1 true KR102229013B1 (en) 2021-03-17

Family

ID=61531626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170091654A KR102229013B1 (en) 2016-09-02 2017-07-19 Automatic stream detection and assignment algorithm

Country Status (4)

Country Link
JP (1) JP6775475B2 (en)
KR (1) KR102229013B1 (en)
CN (1) CN107797763B (en)
TW (1) TWI714800B (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
CN108563585A (en) * 2018-03-27 2018-09-21 深圳忆联信息系统有限公司 A method of it reducing SSD and writes amplification
KR102656172B1 (en) 2018-03-28 2024-04-12 삼성전자주식회사 Storage device for mapping virtual streams and physical streams and method thereof
US10963394B2 (en) * 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
CN109032505A (en) * 2018-06-26 2018-12-18 深圳忆联信息系统有限公司 Data read-write method, device, computer equipment and storage medium with timeliness
US10623329B2 (en) * 2018-06-27 2020-04-14 Juniper Networks, Inc. Queuing system to predict packet lifetime in a computing device
TWI715248B (en) 2019-07-10 2021-01-01 慧榮科技股份有限公司 Apparatus and method and computer program product for executing host input-output commands
KR20220049329A (en) 2020-10-14 2022-04-21 삼성전자주식회사 Storage controller, storage device, and operation method of storage device

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (en) 2005-02-24 2006-09-07 Fujitsu Ltd Method for increasing speed of garbage collection
US20120072662A1 (en) 2010-09-21 2012-03-22 Lsi Corporation Analyzing sub-lun granularity for dynamic storage tiering
JP2013539148A (en) 2010-10-08 2013-10-17 クアルコム,インコーポレイテッド Memory controller, system, and method for applying page management policy based on stream transaction information
US20140082261A1 (en) 2011-10-05 2014-03-20 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
US20150169449A1 (en) 2013-03-04 2015-06-18 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US20160179386A1 (en) 2014-12-17 2016-06-23 Violin Memory, Inc. Adaptive garbage collection
US20160266792A1 (en) 2015-03-12 2016-09-15 Kabushiki Kaisha Toshiba Memory system and information processing system
US20170344470A1 (en) 2016-05-25 2017-11-30 Samsung Electronics Co., Ltd. Range based stream detection for flash memory device
US20180074700A1 (en) 2016-09-12 2018-03-15 Toshiba Memory Corporation Automatic detection of multiple streams

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175615A (en) * 2010-01-27 2011-09-08 Toshiba Corp Host device and memory device
WO2012039216A1 (en) * 2010-09-24 2012-03-29 日本電気株式会社 Information processing device, method therefor and program therefor
US8966201B2 (en) * 2010-12-10 2015-02-24 Sandisk Technologies Inc. Method and system for hijacking writes to a non-volatile memory
US9176864B2 (en) * 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
JP5723812B2 (en) * 2012-03-16 2015-05-27 株式会社 日立産業制御ソリューションズ File server, data input / output method, I / O hook module program, and I / O proxy daemon program
JP5586718B2 (en) * 2012-06-19 2014-09-10 株式会社東芝 CONTROL PROGRAM, HOST DEVICE CONTROL METHOD, INFORMATION PROCESSING DEVICE, AND HOST DEVICE
US9335950B2 (en) * 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US9851909B2 (en) * 2014-09-18 2017-12-26 Samsung Electronics Co., Ltd. Intelligent data placement
KR102214028B1 (en) * 2014-09-22 2021-02-09 삼성전자주식회사 Application processor including reconfigurable scaler and device including the same
US9519429B2 (en) * 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
CN104461393B (en) * 2014-12-09 2017-05-17 华中科技大学 Mixed mapping method of flash memory
CN104809075B (en) * 2015-04-20 2017-09-12 电子科技大学 A kind of solid state record device and method for accessing real-time parallel processing

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235960A (en) 2005-02-24 2006-09-07 Fujitsu Ltd Method for increasing speed of garbage collection
US20120072662A1 (en) 2010-09-21 2012-03-22 Lsi Corporation Analyzing sub-lun granularity for dynamic storage tiering
JP2013539148A (en) 2010-10-08 2013-10-17 クアルコム,インコーポレイテッド Memory controller, system, and method for applying page management policy based on stream transaction information
US20140082261A1 (en) 2011-10-05 2014-03-20 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
US20150169449A1 (en) 2013-03-04 2015-06-18 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US20160179386A1 (en) 2014-12-17 2016-06-23 Violin Memory, Inc. Adaptive garbage collection
US20160266792A1 (en) 2015-03-12 2016-09-15 Kabushiki Kaisha Toshiba Memory system and information processing system
US20170344470A1 (en) 2016-05-25 2017-11-30 Samsung Electronics Co., Ltd. Range based stream detection for flash memory device
US20180074700A1 (en) 2016-09-12 2018-03-15 Toshiba Memory Corporation Automatic detection of multiple streams

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
N. Megiddl et al., "ARC: A Self-Tunning, Low Overhead Replacement Cache", The 2nd USENIX Conference on File and Storage Technologies, pp. 115-130, Mar. 31 2003.

Also Published As

Publication number Publication date
TW201812591A (en) 2018-04-01
CN107797763B (en) 2022-05-10
TWI714800B (en) 2021-01-01
JP6775475B2 (en) 2020-10-28
CN107797763A (en) 2018-03-13
KR20180026327A (en) 2018-03-12
JP2018037088A (en) 2018-03-08

Similar Documents

Publication Publication Date Title
KR102229013B1 (en) Automatic stream detection and assignment algorithm
US11392297B2 (en) Automatic stream detection and assignment algorithm
US11354230B2 (en) Allocation of distributed data structures
EP2478441B1 (en) Read and write aware cache
EP3367251B1 (en) Storage system and solid state hard disk
US9489137B2 (en) Dynamic storage tiering based on performance SLAs
TWI627536B (en) System and method for a shared cache with adaptive partitioning
US11048411B2 (en) Method of consolidating data streams for multi-stream enabled SSDs
JP6613375B2 (en) Profiling cache replacement
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
US20140089608A1 (en) Power savings via dynamic page type selection
US10397362B1 (en) Combined cache-overflow memory structure
US8443149B2 (en) Evicting data from a cache via a batch file
US9612975B2 (en) Page cache device and method for efficient mapping
JP6106028B2 (en) Server and cache control method
EP3115904B1 (en) Method for managing a distributed cache
US11593268B2 (en) Method, electronic device and computer program product for managing cache
CN111506604A (en) Method, apparatus and computer program product for accessing data
CN104899159B (en) The mapping treatment method and device of the address cache memory Cache
JP6194875B2 (en) Cache device, cache system, cache method, and cache program
EP2704023A2 (en) Data transfer apparatus, data transfer method, and data transfer program
CN116107926B (en) Cache replacement policy management method, device, equipment, medium and program product
US20220066935A1 (en) Memory cache for disaggregated memory

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