KR20180086120A - 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 - Google Patents

테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 Download PDF

Info

Publication number
KR20180086120A
KR20180086120A KR1020170148214A KR20170148214A KR20180086120A KR 20180086120 A KR20180086120 A KR 20180086120A KR 1020170148214 A KR1020170148214 A KR 1020170148214A KR 20170148214 A KR20170148214 A KR 20170148214A KR 20180086120 A KR20180086120 A KR 20180086120A
Authority
KR
South Korea
Prior art keywords
garbage collection
ssd
threshold
latency
write command
Prior art date
Application number
KR1020170148214A
Other languages
English (en)
Other versions
KR102538126B1 (ko
Inventor
김종민
홍종 정
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180086120A publication Critical patent/KR20180086120A/ko
Application granted granted Critical
Publication of KR102538126B1 publication Critical patent/KR102538126B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

솔리드 스테이트 드라이브(SSD: Solid State Drive)가 게시된다. 솔리드 스테이트 드라이브(SSD)는 데이터를 저장하기 위해 호스트 및 플래시 메모리로부터 쓰기 명령을 수신하기 위한 호스트 인터페이스 로직을 포함할 수 있다. 솔리드 스테이트 드라이브(SSD)는 또한 SSD 컨트롤러를 포함할 수 있으며, SSD 컨트롤러는 적시(just-in-time) 임계치 및 테일 레이턴시 임계치 및 플래시 변환 계층을 저장하기 위한 스토리지를 포함할 수 있다. 플래시 변환 계층은 솔리드 스테이트 드라이브(SSD) 상의 자유 페이지 수가 적시(just-in-time) 임계치보다 작으면 적시(just-in-time) 가비지 컬렉션 정책을 호출할 수 있고, 자유 페이지들의 수가 상기 테일 레이턴시 임계치보다 작을 때에는 테일 레이턴시 인식 가비지 컬렉션 정책(tail latency-aware garbage collection strategy)을 호출할 수 있다. 테일 레이턴시 인식 가비지 컬렉션 정책은 쓰기 명령과 가비지 컬렉션 명령과 쌍을 이루도록 결합된다.

Description

테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘{TAIL LATENCY AWARE FOREGROUND GARBAGE COLLECTION ALGORITHM}
본 발명은 솔리드 스테이트 드라이브(SSDs)에 관한 것으로, 좀더 구체적으로는 솔리드 스테이트 드라이브(SSD)의 향상되는 테일 레이턴시에 관한 것이다.
이상적인 컴퓨터 시스템에서 개별 쿼리를 처리하는데 동일한 시간이 걸리지만, 현실 세계는 좀처럼 그렇게 완벽하지는 않다. 쿼리 수와 레이턴시, 즉 쿼리를 완료하는 데 필요한 시간을 비교하는 그래프로 도시하면, 그래프에는 상대적으로 짧은 시간 내에 응답한 쿼리가 표시되지만 다른 쿼리들은 상대적으로 오랜 시간이 걸리는 것으로 나타난다. 그래프의 끝에 있는 이러한 데이터 포인트는 그래프의 모양에 관계없이 존재하는 경향이 있다. 상대적으로 오랜 시간이 걸리는 쿼리의 수가 그래프의 맨 끝에 있고, 일반적으로 '0'을 향해 감소될때, 높은 레이턴시로 이러한 쿼리에 응답하는 데 필요한 시간을 종종 "테일 레이턴시"라고 칭한다.
컴퓨터 시스템에서 테일 레이턴시를 경험하게 되는 이유는 많이 있다. 예를 들면, 필요한 데이터가 일반적으로 고속 캐시에 캐시되지만 일부 데이터는 (상대적으로) 느린 장기 스토리지(longer term storage, 예를 들면, 하드 디스크 드라이브)에 저장되는 경우, 장기 스토리지에 저장된 데이터를 필요로 하는 쿼리는 종종 고속 캐시에 저장된 데이터 요청보다 느리다. 테일 레이턴시의 또 다른 이유는 데이터를 장기 스토리지에 쓰는 것일 수 있다. 데이터를 읽는 것보다 데이터를 쓰는데 시간이 오래 걸릴 수 있다: 예를 들어, 데이터에서 1 바이트만 변경하는 경우에도 솔리드 스테이트 드라이브(SSD)에 데이터를 쓸때 전체 블록이 쓰여져야 한다. 백그라운드 작업은 쿼리 완료에 필요한 시간을 지연시킬 수도 있다. 예를 들면, 솔리드 스테이트 드라이브(SSD)는 가비지 컬렉션 작업을 수행하여 지울 수 있는 블록을 식별한다(일부 데이터는 다른 블록에 프로그래밍해야 할 수도 있다). 쿼리가 도착할 때 가비지 컬렉션 작업이 진행 중이면, 쿼리가 만족되기 전에 가비지 컬렉션 작업이 완료될 때까지 쿼리가 대기해야 할 수 있다. 가비지 컬렉션으로 인한 지연은 쿼리의 테일 레이턴시에 영향을 미칠 수 있다.
다른 통계들과 마찬가지로, 테일 레이턴시는 전체 성능의 백분율로 측정 될 수 있다. 예를 들어 "5% 테일 레이턴시"이라는 용어는 전체 레이턴시가 가장 큰 쿼리의 5%를 의미할 수 있지만, "1% 레이턴시"는 전체 레이턴시가 가장 큰 쿼리의 1%를 나타낼 수 있다.
최신 컴퓨터 데이터베이스 시스템에서, 시스템의 1% 테일 레이턴시는 중요한 문제이다. 1% 테일 레이턴시는 최악의 경우 서비스 품질을 결정할 수 있다. BigTable, HBase, LevelDB, MongoDB, SQLite4, RocksDB, Wired Tiger, Cassandra와 같은 최신 데이터베이스는 데이터를 관리하기 위해 LSM(Log Structured Merge) 트리를 사용한다. 일반적으로 LSM 트리는 좋은 성능을 보여 주지만, LSM 트리의 테일 레이턴시는 1%로 빈약하다. 데이터베이스 캐시의 응답 시간은 우수할 수 있지만 솔리드 스테이트 드라이브(SSD)에 기록할 데이터의 크기가 크기 때문에, 솔리드 스테이트 드라이브(SSD)의 응답 시간이 나빠질 수 있으며, TRIM 지원에 관계없이 가비지 컬렉션을 사용하는 스토리지의 응답 시간이 최악의 성능을 낼 수 있다. 가비지 컬렉션은 1% 테일 레이턴시의 주요 원인이며, 솔리드 스테이트 드라이브(SSD)는 가비지 컬렉션의 수행을 피할 수 없다. 또한, 데이터베이스에서 LSM 트리를 사용하는 경우, 특히 이 데이터베이스 플러시 작업이 가비지 컬렉션과 동시에 작동하는 경우 때때로 대용량 데이터베이스 플러시가 발생하여 1% 테일 레이턴시를 트리거할 수 있다.
솔리드 스테이트 드라이브(SSD)의 테일 레이턴시를 개선할 수 있는 방법이 절실한 실정이다.
본 발명의 목적은 가비지 컬렉션에 소요되는 지연을 줄일 수 있는 솔리드 스이트 드라이브(SSD)를 제공하는데 있다.
본 발명의 실시 예에 따른 솔리드 스테이트 드라이브는, 솔리드 스테이트 드라이브(SSD)에서 호스트로부터의 쓰기 명령을 수신하는 호스트 인터페이스 로직, 데이터를 저장하는 플래시 메모리, 그리고 상기 플래시 메모리에 대한 데이터의 읽기 및 쓰기를 관리하는 SSD 컨트롤러를 포함하되, 상기 SSD 컨트롤러는 적시(just-in-time) 임계치와 테일 레이턴시 임계치를 저장하기 위한 스토리지 및 플래시 변환 계층을 포함하고, 상기 플래시 변환 계층은: 자유 페이지들의 수가 상기 적시(just-in-time) 임계치보다 작은 경우에 호출되는 적시(just-in-time) 가비지 컬렉션 정책, 그리고 자유 페이지들의 수가 상기 테일 레이턴시 임계치보다 작을 때 호출되는 테일 레이턴시 인식 가비지 컬렉션 정책(tail latency-aware garbage collection strategy)을 포함하고, 상기 테일 레이턴시 임계치는 상기 적시 임계치보다 크고, 상기 테일 레이턴시 인식 가비지 컬렉션 정책은 가비지 컬렉션 명령과 쓰기 명령을 짝을 이루도록 조합하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 방법은, 솔리드 스테이트 드라이브(SSD)에서 쓰기 명령을 수신하는 단계, 상기 솔리드 스테이트 드라이브 상의 자유 페이지들의 수를 결정하는 단계, 상기 솔리드 스테이트 드라이브의 자유 페이지 수가 적시(just-in-time) 임계치보다 적으면, 적시(just-in-time) 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계, 상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 레이턴시 임계치보다 적으면, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계, 그리고 상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 대기 임계치보다 크거나 같으면 가비지 컬렉션을 수행하지 않고, 상기 솔리드 스테이트 드라이브에 대한 쓰기 명령을 수행하는 단계, 상기 테일 레이턴시 임계치는 상기 적시(just-in-time) 임계치보다 크고, 상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 읽기 명령과 가비지 컬렉션 명령의 쌍을 이룬다.
본 발명의 실시 예에 따른 비일회성 명령을 저장하는 실체적 저장 매체를 포함하는 물품은, 상기 실체적 저장 매체는 기계에 의해 실행될 때, 솔리드 스테이트 드라이브(SSD)에서 쓰기 명령을 수신하는 단계, 상기 솔리드 스테이트 드라이브(SSD) 상의 자유 페이지들의 수를 결정하는 단계, 상기 솔리드 스테이트 드라이브의 자유 페이지 수가 적시(just-in-time) 임계치보다 적으면, 적시(just-in-time) 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계, 상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 레이턴시 임계치보다 적으면, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계, 그리고 상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 대기 임계치보다 크거나 같으면 가비지 컬렉션을 수행하지 않고, 상기 솔리드 스테이트 드라이브에 대한 쓰기 명령을 수행하는 단계, 상기 테일 레이턴시 임계치는 상기 적시(just-in-time) 임계치보다 크고, 상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 읽기 명령과 가비지 컬렉션 명령의 쌍을 이루는 결과를 제공한다.
상술한 특징에 따른 본 발명에 따르면, 데이터의 관리 과정에서 발생하는 지연을 줄여 높은 접근 속도와 신뢰성을 제공하는 솔리드 스테이트 드라이브(SSD)를 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 갖는 머신을 도시한다.
도 2는 도 1의 머신의 추가적인 상세를 도시한다.
도 3은 도 1의 SSD를 구체적으로 보여준다.
도 4는 본 발명의 다른 실시 예에 따라 대체 데이터를 사용하는 도 3의 결정 테이블을 보여준다.
도 5는 도 3의 플래시 변환 계층을 구체적으로 보여준다.
도 6a 및 도 6b는 적시(just-in-time) 가비지 컬렉션 정책 또는 도 5의 테일 레이턴시 인식 가비지 컬렉션 정책을 호출할지를 결정하는 도 5의 비교기를 보여준다.
도 7은 도 5의 결정 테이블에서의 사용을 위해, 다양한 기록 및 가비지 컬렉션 동작에 필요한 시간을 결정하는 도 5의 타이머를 도시한다.
도 8은 도 7의 결정 테이블에서 사용하기 위해 타깃 레이턴시를 대략 요구하는 기록 명령 및 가비지 수집 명령의 쌍을 도시한다. 5.
도 9a 내지도 9b는 본 발명의 실시 예에 따른 쓰기 명령에 응답하는 도 5의 적시(just-in-time) 가비지 컬렉션 정책 또는 테일 레이턴시 임계치 정책을 수행할지를 결정하기 위해 도 3의 플래시 변환 계층에 대한 예시적인 절차의 흐름도를 도시한다.
도 10은 본 발명의 실시 예에 따른 도 5의 적시(just-in-time) 가비지 컬렉션 정책을 사용하기 위한 예시적인 절차의 흐름도를 보여준다.
도 11은 본 발명의 실시 예에 따른 도 5의 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하기 위한 예시적인 절차의 흐름도를 보여준다.
도 12는 본 발명의 실시 예에 따른 도 5의 결정 테이블을 채우기 위한 도 3의 플래시 변환 계층에 대한 예시적인 절차의 흐름도를 보여준다.
도 13은 본 발명의 실시 예에 따른 도 3의 테일 레이턴시 인식 임계치와 도 8의 타깃 레이턴시를 결정하기 위한 예의 흐름도를 보여준다.
본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
여기에서 제1, 제2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제1 모듈은 제2 모듈로 명명될 수 있다. 마찬가지로, 제2 모듈은 제1 모듈로 명명될 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 그리고/또는 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 그리고/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.
BigTable, HBase, LevelDB, MongoDB, SQLite4, RocksDB, Wired Tiger 및 Cassandra와 같은 최신 데이터베이스는 데이터를 관리하기 위해 종종 LSM (Log Structured Merge) 트리를 사용한다. LSM 트리는 데이터베이스 캐시와 저장 장치 사이의 실제 입출력(I/O) 수를 줄이는데 매우 효율적이다. 이러한 데이터베이스 응용 프로그램은 작은 입출력(I/O) 요청으로 데이터의 획득/이동을 수행하지만 대부분의 입출력(I/O) 요청은 데이터베이스 캐시에 의해 수행된다. 데이터베이스가 백엔드 스토리지에 데이터를 저장해야 하는 경우, 정적 정렬 테이블(SST)을 기반으로 데이터 세트를 변환한다. 예를 들어, RocksDB는 6 계층의 정적 정렬 테이블(SST)을 지원하며 정적 정렬 테이블(SST)의 각 계층은 관련된 크기를 가진다. 응용 프로그램의 대부분의 입출력(I/O) 요청은 데이터베이스(DB) 캐시에 적중되어 데이터베이스 응용 프로그램은 매우 빠른 응답 시간을 가진다.
반면에 데이터베이스 응용 프로그램에는 약점이 있다. 즉, 정적 정렬 테이블(SST) 쓰기 및 관련 압축 오버 헤드의 큰 크기 때문에 발생하는 1%의 테일 레이턴시이다. LSM 트리 기반 데이터베이스에서 발생할 수 있는 최악의 시나리오를 상상해 보자. 응용 프로그램이 어딘가에 (8-바이트)를 쓴다고 가정하자. 아쉽게도 8-바이트 쓰기에는 정적 정렬 테이블(SST)의 업데이트가 필요하며, 업데이트에는 1GB SST6 교체가 필요하다. 또한, 솔리드 스테이트 드라이브(SSD) 또는 혼합 저장 HDD와 같은 가비지 컬렉션이 필요한 다른 스토리지 장치는 데이터 저장을 위한 불충분한 자유 페이지(과도한 프로비저닝을 포함)를 가진다고 가정하자. 따라서, 포어그라운드 가비지 컬렉션(이하, FGC)이 트리거되고 SSD 펌웨어가 1GB 상당의 블록에서 가비지 컬렉션을 시작한다. 가비지 컬렉션 작업이 완료된 후 응용 프로그램은 정적 정렬 테이블(SST)를 솔리드 스테이트 드라이브(SSD)에 쓸 수 있다. 따라서, 8-바이트의 데이터를 쓰려면 매우 느린 가비지 컬렉션 프로세스를 포함하여 1GB의 데이터가 스토리지로 이동해야 한다.
테일 레이턴시 문제는 엔터프라이즈 SSD에서 가비지 컬렉션을 트리거하는 추가 임계점을 유지함으로써 해결할 수 있다. FGC가 트리거되면, 쓰기 작업은 블록의 청소 후에 수행해야 한다. 요청의 크기가 커질수록 청소할 블록의 총 수가 증가한다. 테일 레이턴시를 5% 증가시키면, 테일 레이턴시 1%의 영향을 줄여 균형잡힌 FGC 체계를 만들 수 있다. 이 체계를 사용하면 데이터베이스 서비스 공급자가 레거시 SSD보다 안정적인 응답 시간을 지원할 수 있다. FGC는 부가적인 임계점에 의해 레거시 FGC보다 먼저 트리거될 수 있으며, 이 FGC 동안 제거될 블록의 수는 기록 요청 사이즈와 동일하지 않고, 맵핑 테이블에 따라 변할 수 있고, 알고리즘은 FGC에 균형잡힌 입출력(I/O) 레이턴시를 제공할 수 있다.
쓰기의 핵심 오버헤드는 소거 시간이다. 하나의 블록을 지우는 데 필요한 시간은 하나의 블록을 쓰는데 소요되는 시간보다 훨씬 길다. 목표는 FGC가 시작될 때 레이턴시를 공정하게 조정하는 것이다. 두 번째 임계치를 추가하여 FGC를 트리거하고 주어진 쓰기를 위해 얼마나 많은 블록을 지워야 하는지 결정하는 표를 작성함으로써, 평균 레이턴시는 모든 쓰기 사이즈와 비슷해질 수 있다. LSM 트리는 적은 수의 입출력(I/O) 크기를 포함하므로 LSM 트리와 함께 이러한 체계는 특히 유용하지만, 이 체계는 데이터베이스 구조 또는 무제한 쓰기 사이즈를 갖는 다른 응용 프로그램과 함께 사용될 수 있다.
예를 들어, 128 MB 쓰기 명령을 수행하는 데 필요한 시간이 "α blocks Erase"+ "β MB Write"로 표시 될 수 있다고 가정하자. 특정 SSD에서 소거 작업을 수행하는데 필요한 시간에 따라, 이 128MB 쓰기 레이턴시는 예를 들어 66MB 쓰기 명령 및 33MB 소거 명령, 6MB 쓰기 명령 및 66MB 소거 명령, 그리고 1 MB의 쓰기 명령과 99MB 소거 명령을 위한 시간과 유사할 수 있다. 표 1과 같이 결정 테이블이 생성될 수 있다.
쓰기 사이즈 소거 사이즈
128 MB 0 MB
66 MB 33 MB
6 MB 66 MB
1 MB 99 MB
이제, 쓰기 명령이 SSD에 수신되면, 결정 테이블을 참조될 수 있다. 쓰기 명령이 128MB 이상의 데이터를 쓰기 위한 것일 경우, 어떠한 블록도 소거되지 않는다. 쓰기 명령이 66MB 이상의 데이터(128MB 미만)를 쓰기 위한 것일 경우, 33MB의 데이터가 지워질 수 있다. 쓰기 명령이 6MB 이상의 데이터(66MB 미만)를 쓰기 위한 것일 경우, 66MB의 데이터가 지워질 수 있으며, 나머지 경우도 이러한 방식으로 소거될 수 있다.
쓰기 명령을 가비지 컬렉션 명령과 쌍으로 사용하면, 쌍의 전체 레이턴시는 대략 128MB 쓰기 명령을 수행하는 데 필요한 레이턴시이다. 여러 쓰기 명령에 소거 동작을 분산시킴으로써 최악의 FGC 이벤트 발생 가능성을 줄이고, 전반적인 성능을 향상시킨다. 이 예는 128MB의 데이터 쓰기와 동일한 쓰기 레이턴시를 보장하기 위한 시도이지만, 다른 타깃 레이턴시가 사용될 수 있다.
도 1은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 갖는 머신을 도시한다. 도 1에는 머신(105)이 도시되어 있다. 머신(105)은 데스크탑 또는 랩탑 컴퓨터, 서버(독립형 서버 또는 랙 서버), 또는 본 발명의 개념의 실시 예로부터 이익을 얻을 수 있는 임의의 다른 장치를 포함하는 임의의 원하는 머신일 수 있다. 머신(105)은 또한 특수화된 휴대용 컴퓨팅 장치, 테블릿 컴퓨터, 스마트폰 및 다른 컴퓨팅 장치를 포함할 수 있다. 머신(105)은 임의의 바람직한 애플리케이션을 실행할 수 있다: 데이터베이스 애플리케이션이 좋은 예이지만, 본 발명의 개념의 실시 예는 임의의 원하는 애플리케이션으로 확장될 수 있다.
머신(105)은 그 특정 형태에 관계없이, 프로세서(110), 메모리(115) 및 SSD(120)를 포함할 수 있다. 프로세서(110)는 예를 들면, Intel Xeon, Celeron, Itanium 또는 Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등과 같은 임의의 다양한 프로세서일 수 있다. 도 1은 단일 프로세서를 도시하고 있지만, 머신(105)은 임의의 수의 프로세서를 포함할 수 있다. 메모리 (115)는 플래시 메모리, SRAM(Static Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 NVRAM(Non-Volatile Random Access Memory)과 같은 자기 저항 랜덤 액세스 메모리(MRAM) 등을 포함하지만, 일반적으로는 DRAM이다. 메모리(115)는 또한 상이한 메모리 타입들의 임의의 원하는 조합일 수 있다.
SSD(120)는 임의의 다양한 SSD일 수 있고(심지어 플래시 메모리를 사용하지 않은 것도 것조차도), 가비지 컬렉션을 수행하는 다른 유형의 저장 장치를 포함하도록 확장될 수 있다.
도 2는 도 1의 머신의 추가적인 상세를 도시한다. 도 2를 참조하면, 일반적으로, 머신(105)은 머신(105)의 컴포넌트의 동작을 조정하는데 사용될 수 있는 메모리 컨트롤러(205) 및 클록(210)을 포함하는 하나 이상의 프로세서(110)를 포함한다. 프로세서(110)는 예를 들어, RAM (random access memory), ROM (read-only memory) 또는 다른 상태 보존 매체와 같은 메모리(115)를 포함할 수 있다. 프로세서(110)는, 예를 들면, 이더넷 커넥터나 무선 커넥터와 같은 네트워크 커넥터(215)와 저장 장치(120)에 연결될 수 있다. 프로세서(110)는 또한 다른 컴포넌트들 중에서 입력/출력 엔진(230)을 사용하여 관리되는 사용자 인터페이스(225) 및 입력/출력 인터페이스 포트에 연결되는 버스(220)에 연결될 수 있다.
도 3은 도 1의 SSD(120)를 구체적으로 보여준다. 도 3에 도시된 바와 같이, SSD(120)는 다양한 채널들(320-1 내지 320-4)로 조직화될 수 있는 호스트 인터페이스 로직(305), SSD 컨트롤러(310) 및 다양한 플래시 메모리 칩들(315-1 내지 315-8)을 포함할 수 있다. 호스트 인터페이스 로직(305)은 도 1의 SSD(120)와 머신(105) 간의 통신을 관리할 수 있다. SSD 컨트롤러(310)는 플래시 메모리 칩(315-1 내지 315-8) 상에서 가비지 컬렉션 동작과 함께 읽기 및 쓰기 동작을 관리할 수 있다. SSD 컨트롤러(310)는 이러한 관리의 일부를 수행하기 위한 플래시 변환 계층(FTL, 325)을 포함할 수 있다. 플래시 변환 계층(325)은 후술하는 도 5에서 보다 상세히 도시될 것이다.
SSD 컨트롤러(310)는 또한 저장 장치(330)를 포함할 수 있다. 저장 장치(330)는 결정 테이블(335), 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345)를 저장할 수 있다. 후술하는 도 5에 도시된 바와 같이, 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345)는 각각 적시(just-in-time) 가비지 컬렉션 정책(just-in-time garbage collection strategy) 및 테일 레이턴시 인식 가비지 컬렉션 정책(tail latency-aware garbage collection strategy)을 트리거하는데 사용되는 임계치를 나타낸다. 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345)는 임의의 원하는 값, 예를 들면, 도 1의 SSD(120)에 의해 제공된 총 페이지 수의 각각 1% 및 5%가 주어질 수 있다(모두 오버프로비저닝을 고려하거나 무시함). 전형적으로, 적시 임계치(340)는 테일 레이턴시 인식 임계치(345)보다 낮다: 즉, 테일 레이턴시 인식 가비지 컬렉션 정책은 적시(just-in-time) 가비지 컬렉션 정책보다 먼저 호출될 수 있다.
결정 테이블(345)은 쓰기 명령 사이즈(355-1 내지 355-3) 및 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)의 쌍(350-1 내지 350-3)을 저장할 수 있다. 명령 사이즈의 각 쌍(350-1 내지 350-3)에 필요한 전체 시간(또는 레이턴시)은 거의 동일하다. 즉, 각 쌍(350-1 내지 350-3)에서 지정된 사이즈의 쓰기 명령 및 가비지 컬렉션 명령을 수행하는 데 필요한 시간은 대략적으로 동일하다.
한편, 도 3은 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)와 함께 쓰기 명령 사이즈(355-1 내지 355-3)를 쌍으로 하는 쌍들(350-1 내지 350-3)을 도시하고, 가비지 컬렉션을 수행하는데 요구되는 시간의 대부분은 블록들을 소거하는데 소비된다: 타깃 블록에 남아있는 유효 데이터를 다른 페이지에 프로그래밍하는 데 필요한 시간은 가변적이며 (상대적으로) 짧다. 따라서, 결정 테이블(335)은 쓰기 명령 사이즈(355-1 내지 355-3)를 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)와 페어링 하기보다는, 쓰기 명령 (355-1 내지 355-3)을 소거 명령 사이즈와 페어링할 수 있다. 따라서 "가비지 컬렉션 명령"에 대한 참조는 단지 소거 명령도 포함하기 위한 것이다.
이상적인 세계는 각 쌍(350-1 내지 350-3)이 정확히 동일한 양의 시간을 가지지만, 현실 세계는 그다지 정확하지 않으며, 각 쌍(350-1 내지 350-3)이 어느 정도의 타깃 이제, 쓰기 명령이 SSD에 수신되면, 결정 테이블을 참조될 수 있다. 쓰기 명령이 128MB 이상의 데이터를 쓰기 위한 것일 경우, 어떠한 블록도 소거되지 않는다. 쓰기 명령이 66MB 이상의 데이터(128MB 미만)를 쓰기 위한 것일 경우, 33MB의 데이터가 지워질 수 있다. 쓰기 명령이 6MB 이상의 데이터(66MB 미만)를 쓰기 위한 것일 경우, 66MB의 데이터가 지워질 수 있으며, 나머지 경우도 이러한 방식으로 소거될 수 있다.
쓰기 명령을 가비지 컬렉션 명령과 쌍으로 사용하면, 쌍의 전체 레이턴시는 대략 128MB 쓰기 명령을 수행하는 데 필요한 레이턴시이다. 여러 쓰기 명령에 소거 동작을 분산시킴으로써 최악의 FGC 이벤트 발생 가능성을 줄이고, 전반적인 성능을 향상시킨다. 이 예는 128MB의 데이터 쓰기와 동일한 쓰기 레이턴시를 보장하기 위한 시도이지만, 다른 타깃 레이턴시가 사용될 수 있다.
도 1은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 갖는 머신을 도시한다. 도 1에는 머신(105)이 도시되어 있다. 머신(105)은 데스크탑 또는 랩탑 컴퓨터, 서버(독립형 서버 또는 랙 서버), 또는 본 발명의 개념의 실시 예로부터 이익을 얻을 수 있는 임의의 다른 장치를 포함하는 임의의 원하는 머신일 수 있다. 머신(105)은 또한 특수화된 휴대용 컴퓨팅 장치, 테블릿 컴퓨터, 스마트폰 및 다른 컴퓨팅 장치를 포함할 수 있다. 머신(105)은 임의의 원하는 애플리케이션을 실행할 수 있다: 데이터베이스 애플리케이션이 좋은 예이지만, 본 발명의 개념의 실시 예는 임의의 원하는 애플리케이션으로 확장될 수 있다.
머신(105)은 그 특정 형태에 관계없이, 프로세서(110), 메모리(115) 및 SSD(120)를 포함할 수 있다. 프로세서(110)는 예를 들면, Intel Xeon, Celeron, Itanium 또는 Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등과 같은 임의의 다양한 프로세서일 수 있다. 도 1은 단일 프로세서를 도시하고 있지만, 머신(105)은 임의의 수의 프로세서를 포함할 수 있다. 메모리 (115)는 플래시 메모리, SRAM(Static Random Access Memory), Persistent Random Access Memory, FRAM(Ferroelectric Random Access Memory) 또는 자기 저항 랜덤 액세스 메모리(MRAM) 등과 같은 NVRAM(Non-Volatile Random Access Memory) 을 포함하지만, 일반적으로는 DRAM이다. 메모리(115)는 또한 상이한 메모리 타입들의 임의의 원하는 조합일 수 있다.
SSD(120)는 임의의 다양한 SSD일 수 있고(심지어 플래시 메모리를 사용하지 않을 때에도), 가비지 컬렉션을 수행하는 다른 유형의 저장 장치를 포함하도록 확장될 수 있다.
도 2는 도 1의 머신의 추가적인 상세를 도시한다. 도 2를 참조하면, 일반적으로, 머신(105)은 머신(105)의 컴포넌트의 동작을 조정하는데 사용될 수 있는 메모리 컨트롤러(205) 및 클록(210)을 포함하는 하나 이상의 프로세서(110)를 포함한다. 프로세서(110)는 예를 들어, RAM (random access memory), ROM (read-only memory) 또는 다른 상태 보존 매체를 포함하는 메모리(115)에 연결될 수 있다. 프로세서(110)는, 예를 들면, 이더넷 커넥터나 무선 커넥터와 같은 네트워크 커넥터(215)와 저장 장치(120)에 연결될 수 있다. 프로세서(110)는 또한 다른 컴포넌트들 중에서 입력/출력 엔진(230)을 사용하여 관리되는 사용자 인터페이스(225) 및 입력/출력 인터페이스 포트가 부착되는 버스(220)에 연결될 수 있다.
도 3은 도 1의 SSD(120)를 구체적으로 보여준다. 도 3에 도시된 바와 같이, SSD(120)는 다양한 채널들(320-1 내지 320-4)로 조직화될 수 있는 호스트 인터페이스 로직(305), SSD 컨트롤러(310) 및 다양한 플래시 메모리 칩들(315-1 내지 315-8)을 포함할 수 있다. 호스트 인터페이스 로직(305)은 도 1의 SSD(120)와 머신(105) 간의 통신을 관리할 수 있다. SSD 컨트롤러(310)는 플래시 메모리 칩(315-1 내지 315-8) 상에서 가비지 컬렉션 동작과 함께 읽기 및 쓰기 동작을 관리할 수 있다. SSD 컨트롤러(310)는 이러한 관리의 일부를 수행하기 위한 플래시 변환 계층(FTL, 325)을 포함할 수 있다. 플래시 변환 계층(325)은 후술하는 도 5에서 보다 상세히 도시될 것이다.
SSD 컨트롤러(310)는 또한 저장 장치(330)를 포함할 수 있다. 저장 장치(330)는 결정 테이블(335), 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345)를 저장할 수 있다. 도 5를 참조하여 아래에서 설명되는 바와 같이, 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345)는 각각 적시(just-in-time) 가비지 컬렉션 정책(just-in-time garbage collection strategy) 및 테일 레이턴시 인식 가비지 컬렉션 정책(tail latency-aware garbage collection strategy)을 트리거하는데 사용되는 임계치를 나타낸다. 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345)에 임의의 원하는 값이 주어질 수 있다, 예를 들면, 도 1의 SSD(120)에 의해 제공된 총 페이지 수의 각각 1% 및 5%가 비워져 있다(오버프로비저닝을 고려하거나 무시함). 전형적으로, 적시 임계치(340)는 테일 레이턴시 인식 임계치(345)보다 낮다: 즉, 테일 레이턴시 인식 가비지 컬렉션 정책은 적시(just-in-time) 가비지 컬렉션 정책보다 먼저 호출될 수 있다.
결정 테이블(335)은 쓰기 명령 사이즈(355-1 내지 355-3) 및 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)의 쌍(350-1 내지 350-3)을 저장할 수 있다. 명령 사이즈의 각 쌍(350-1 내지 350-3)에 필요한 전체 시간(또는 레이턴시)은 거의 동일하다. 즉, 각 쌍(350-1 내지 350-3)에서 지정된 사이즈의 쓰기 명령 및 가비지 컬렉션 명령을 수행하는 데 필요한 시간은 대략적으로 동일하다.
한편, 도 3은 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)와 함께 쓰기 명령 사이즈(355-1 내지 355-3)를 쌍으로 하는 쌍들(350-1 내지 350-3)을 도시하고 있지만, 가비지 컬렉션을 수행하는데 요구되는 시간의 대부분은 블록들을 소거하는데 소비된다: 타깃 블록에 남아있는 유효 데이터를 다른 페이지에 프로그래밍하는 데 필요한 시간은 가변적이며 (상대적으로) 짧다. 따라서, 결정 테이블(335)은 쓰기 명령 사이즈(355-1 내지 355-3)를 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)와 페어링 하기보다는, 쓰기 명령 (355-1 내지 355-3)을 소거 명령 사이즈와 페어링할 수 있다. 따라서 "가비지 컬렉션 명령"에 대한 참조는 단지 소거 명령도 포함하기 위한 것이다.
이상적인 세계는 각 쌍(350-1 내지 350-3)이 정확히 동일한 양의 시간을 가지지만, 현실 세계는 그다지 정확하지 않으며, 각 쌍(350-1 내지 350-3)이 어느 정도의 타깃 레이턴시 델타(범위) 내에 있으면 충분하다. 즉, 각 쌍(350-1 내지 350-3)은 대략 타깃 레이턴시를 취한다. 또한, 도 3은 3개의 쌍(350-1 내지 350-3)을 포함하는 것으로 결정 테이블(335)을 도시하지만, 본 발명의 개념의 실시 예는 결정 테이블(335)에서 임의의 수의 쌍을 지원할 수 있다. 도 3은 SSD 컨트롤러(310)의 일부로서 저장 장치(330)를 보여 주지만, 저장 장치(330)는 쉽게 플래시 변환 계층(325)의 일부가 될 수 있다.
한편, 도 3은 4개의 채널(320-1 내지 320-4)로 조직화된 8 개의 플래시 메모리 칩(315-1 내지 315-8)을 포함하는 SSD(120)를 도시하지만, 본 발명의 실시 예는 임의의 수의 채널로 조직된 임의의 수의 플래시 메모리 칩을 지원할 수 있다.
결정 테이블(335)이 쓰기 명령 및 가비지 컬렉션 명령의 사이즈를 사용하는 것으로 도시되어 있지만, 본 발명의 개념은 가비지 컬렉션을 수행할 블록의 수를 추정하는 다른 방법을 지원할 수 있다. 도 4는 본 발명의 다른 실시 예에 따라 대체 데이터를 사용하는 도 3의 결정 테이블(335)을 보여준다. 도 4에서, 쓰기 사이즈를 저장하는 대신에, 결정 테이블(335)은 쌍(405-1 내지 405-3)을 도시하고, 각 쌍은 기록 카운트 (410-1 내지 410-3) 및 가비지 컬렉션 카운트(415-1 내지 415-3)를 포함한다. 기록 카운트들(410-1 내지 410-3)은 특정 요청된 명령을 완료하기 위해 수행될 복수의 쓰기 명령을 명시한다. 예를 들어, 도 5를 참조하여 아래에서 설명되는 바와 같이, 운영 체제는 입력/출력(I/O) 명령들이 완료되기까지 시스템이 너무 오랫동안 대기하는 것을 피하기 위해 단일 쓰기 명령에 기록될 데이터의 양을 제한할 수 있다. 따라서, 애플리케이션으로부터의 단일 쓰기 요청은 임의의 수의 쓰기 명령이 도 1의 SSD(120)로 전송되도록 할 수 있다.
쓰기 명령의 수 또는 가비지 컬렉션의 수를 명령 수행에 필요한 시간과 연관시키는 정확한 공식은 존재하지 않을 수 있지만, 일반적으로 더 많은 명령이 수행될수록 명령을 수행하는 데 필요한 시간이 길어진다. 따라서 일반적으로 명령 수(쓰기 명령 또는 가비지 컬렉션 명령)와 해당 명령을 수행하는 데 필요한 시간을 연관시킬 수 있다.
예를 들어, 쓰기 명령(운영 체제 또는 파일 시스템에서 받은)이 최대 크기 (예 : 128MB)보다 크지 않으며 특정 쓰기 명령의 레이턴시가 최대 레이턴시(예를 들어, 10ms)보다 크지 않음을 알면, 주어진 수의 쓰기 명령들을 완료하는데 요구되는 시간의 상한은 쓰기 명령들의 수와 임의의 개별 쓰기 명령에 대한 최대 레이턴시의 곱으로서 계산될 수 있다. 쓰기 명령의 수를 완료하는데 요구되는 이러한 시간 추정은 지나치게 보수적일 수 있지만, 이러한 추정은 비이성적이지 않다(지나치게 보수적인 추정은 도 1의 SSD(120)가 추정보다 빠르게 쓰기 명령을 완료할 수 있음을 의미한다).
유사하게, 가비지 컬렉션 카운트들(415-1 내지 415-3)은 시간과 상관관계가 있을 수 있다. 즉, 특정 블록 수에서 가비지 컬렉션을 수행하는 데 필요한 시간은 소거되는 블록 수와 개략적으로 선형이다. 가비지 컬렉션은 또한 가비지 컬렉션을 대상으로 하는 블록에서의 유효 데이터를 프로그래밍하는 것을 포함할 수 있다. 프로그래밍 소요 시간은 프로그래밍할 데이터의 양에 따라 달라진다. 그러나 가비지 컬렉션을 대상으로 하는 블록에서의 유효 데이터를 프로그래밍하는 데 필요한 시간은 블록을 소거하는데 필요한 시간에 비해 적다.
한편, 도 3 및 도 4는 명령 사이즈 또는 명령의 수를 사용하는 결정 테이블(335)을 도시하지만, 원하는 방식으로 결정 테이블(335)에서 이들 옵션을 혼합하는 것도 가능하다. 예를 들어, 결정 테이블(335)은 쓰기 명령 사이즈 및 복수의 가비지 컬렉션 명령을 포함하는 쌍을 포함할 수 있다. 이 설명의 목적을 위해, "명령 정보"라는 용어는 위에서 사용될때 수행될 명령의 수 또는 명령의 크기를 의미하며, 쓰기 명령이나 가비지 컬렉션에 적용될 수 있다. 본 발명의 실시 예에서는 결정 테이블(335)에 대한 모든 가능한 변형을 포함하도록 의도된다.
도 5는 도 3의 플래시 변환 계층(325)을 구체적으로 보여준다. 도 5에서, 적시(just-in-time) 가비지 컬렉션 정책(505)은 포어그라운드 가비지 컬렉션 정책 (505), 테일 레이턴시 인식 가비지 컬렉션 정책(510), 타이머(515) 및 비교기(520)를 포함할 수 있다. 적시(just-in-time) 가비지 수집 전략(505)은 도 1의 SSD(120) 상의 자유 페이지의 수가 적시 임계치(340)로 표현되는 크리티클 레벨에 도달할 때, 포어그라운드 가비지 컬렉션이 수행되는 방법을 명시할 수 있다. 도 1의 SSD(120) 상의 자유 페이지의 수가 증가할 때 수행된다. 적시 임계치(340)에게 임의의 원하는 값이 주어질 수 있다: 예를 들어, 도 1의 SSD(120)에 의해 제공되는 페이지의 총 수의 1%가 비어있다(오버프로비저닝을 고려하거나 무시함).
테일 레이턴시 인식 가비지 컬렉션 정책(510)은 도 1의 SSD(120) 상의 자유 페이지의 수가 적시 임계치(340)만큼 낮지 않은 테일 레이턴시 인지 임계치(345)에 의해 표현되는 더 낮은 레벨로 떨어질때 포어그라운드 가비지 컬렉션이 수행되는 방법을 명시할 수 있다. 테일 레이턴시 인식 임계치(345)에 임의의 원하는 값이 주어질 수 있다: 예를 들어, 도 1의 SSD(120)에 의해 제공되는 페이지의 충수의 5%가 비어있다(오버프로비저닝을 고려하거나 무시함). 이상적으로, 테일 레이턴시 인식 임계치(345)에 대한보다 낮은 값이 선택 될 수 있지만, 테일 레이턴시 인식 임계치(345)에 대한 선택된 값은 적시(just-in-time) 가비지 컬렉션 정책(505)이 전혀 필요하지 않을 정도로 높다. 적시(just-in-time) 가비지 컬렉션 정책 (505) 및 테일 레이턴시 인식 가비지 컬렉션 정책(510)을 선택하여 구현하는 로직은 플래시 변환 계층(325) 내의 펌웨어로 구현될 수 있다.
타이머(515)는 도 7 및 도 8을 참조하여 설명되는 바와 같이, 도 1의 SSD(120)가 쓰기 및 가비지 컬렉션 동작을 완료하는데 걸리는 시간을 측정하는데 사용될 수 있다. 타이머(515)의 결과는 결정 테이블(335)을 채우기 위해 사용될 수 있다.
최종적으로, 특정 가비지 컬렉션 정책이 호출되어야 하는지를 판별하기 위해 비교기(520)가 사용될 수 있다. 예를 들어, 비교기 (520)는 도 1의 SSD(120) 상의 자유 페이지들의 수와 임계치들(340 및 345)을 비교할 수 있고, 이 비교의 결과를 사용하여 어느 가비지 컬렉션 정책(505 또는 510)이 호출되어야 하는지를 판별할 수 있다. 비교기 (520)는 도 6a 내지 도 6b를 참조하여 추가적으로 설명될 것이다.
도 6a 및 도 6b는 적시(just-in-time) 가비지 컬렉션 정책(505) 또는 도 5의 테일 레이턴시 인식 가비지 컬렉션 정책(510)을 호출할지를 판별하는 도 5의 비교기(520)를 보여준다. 도 6a에서, 비교기(520)는 테일 레이턴시 인식 임계치(345)와 자유 페이지들(605)의 수를 비교한다. 자유 페이지들(605)의 수는 도 1의 SSD(120)에서 현재 이용 가능한 자유 페이지의 수일 수 있다. 만일, 자유 페이지(605)의 수가 테일 레이턴시 인식 임계치(345)보다 적으면(대안적으로, 적거나 같으면), 테일 레이턴시 인식 가비지 컬렉션 정책(510)이 호출될 수 있다. 테일 레이턴시 인식 가비지 컬렉션 정책(510)은 현재 쓰기 명령을 수행하는데 필요하지 않더라도 일부 가비지 컬렉션 동작을 수행하는 것을 포함할 수 있기 때문에, 이러한 가비지 컬렉션 명령은 도 1의 SSD(120)에서1% 테일 레이턴시 상황의 발생을 피하게 할 수 있다.
도 6b에서, 자유 페이지들(605)의 수와 적시 임계치(340)를 비교하는 비교기(520)가 도시되어 있다. 자유 페이지들(605)의 수가 적시 임계치(340)보다 적다면(대안적으로, 적거나 같으면), 적시(just-in-time) 가비지 컬렉션 정책(505)이 호출될 수 있다.
테일 레이턴시 인식 가비지 컬렉션 정책(510)이 사용될 때, 1% 테일 레이턴시 문제를 피할 수 있기 때문에, 테일 레이턴시 인식 가비지 컬렉션 정책(510)은 적시(just-in-time) 가비지 컬렉션 정책(505) 이전에 호출되어야 한다. 테일 레이턴시 인식 임계치(345)는 적시 임계치(340)보다 더 높은 수 이어야 한다.
아직 해결되지 않은 한 가지 질문은 도 3의 결정 테이블(335)이 어떻게 구축되는지에 대한 것이다. 특정 쓰기 또는 가비지 컬렉션 명령이 얼마나 오래 걸릴지를 판별하는데 사용할 수 있는 간단한 수학식이 있으면 좋겠지만, 이것이 항상 가능한 것은 아니다. 예를 들어, 두 개의 인접한 블록을 쓰는데 필요한 시간은 한 블록을 쓰는데 필요한 시간보다 대략적으로 50 % 더 길다. 또한, 블록을 소거하는데 필요한 시간도 반드시 소거할 블록의 수의 함수로 표현할 수 있는 것은 아니다. (물론 SSD의 특정 모델이 그런 간단한 방정식이 사용되도록 허용하면, 주어진 쓰기 명령과 페어링하기 위해 소거할 블록 수를 결정하는 것은 간단한 프로세스가 된다. 하지만, 일반적으로 그런 수학식을 결정하는 것은 가능하지 않을 수 있다.)
따라서, 도 3의 결정 테이블(335)은 사용할 수 있는 방정식에 의존하지 않는 방식으로 채워져야 한다. 도 3의 결정 테이블(335)을 채우기 위해, 도 7에 도시된 바와 같이 도 5의 타이머(515)가 사용될 수 있다. 도 1의 SSD(120)의 시작 시에, 도 1의 SSD(120)는 쓰기 명령 사이즈(355-1 내지 355-3) 및 가비지 컬렉션 명령과 같은 다양한 사이즈(자체 또는 실제 트래픽의 모니터링)의 쓰기 명령을 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)와 같은 다양한 수의 블록들에 수행할 수 있다. 타이머(515)는 이들 명령어 각각에 걸리는 시간을 측정하여 시간(605-1 내지 605-3) (쓰기 명령 (355-1 내지 355-3)에 요구되는 시간) 및 시간(610-1 내지 610-3) (가비지 컬렉션 명령들(360-1 내지 360-3)에 요구되는 시간)을 제출할 수 있다. 다음으로, 도 8에 도시된 바와 같이, 타깃 레이턴시(805)가 결정될 수 있고, 각 쌍이 대략 타깃 레이턴시(805, 일부 델타(범위)에서)가 소요되도록 쓰기 명령 사이즈(355-1 내지 355-3)는 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)와 짝을 이룰 수 있다.
물론 질문 자체가 또 다른 질문(타깃 레이턴시는 어떻게 결정되는가)을 제기할 수 있다. 타깃 레이턴시(805)(그리고 도 3의 테일 레이턴시 인식 임계치(335))는 미리 임의의 원하는 값으로 고정될 수 있다. 예를 들면, 도 3의 테일 레이턴시 인식 임계치(335)는 도 1의 SSD(120) 상의 데이터가 쓰여질 수 있는 페이지 수의 5 %로 설정될 수 있으며, 타깃 레이턴시(805)는 128 MB 쓰기 명령의 레이턴시(도 1의 SSD(120)의 시간 길이에 관계없이)에 설정될 수 있다. 다른 옵션은 고객(예를 들어, 해당 서버의 관리 사용자)이 도 3의 타깃 레이턴시(805) 및 테일 레이턴시 인식 임계치(335)에 대한 값을 구성하도록 허용하는 것이다. (실제로, 도 3의 타깃 레이턴시(805) 및 테일 레이턴시 인식 임계치(335)에 대한 원래의 값이 일부 자동 또는 반자동 기술을 사용하여 선택된다고 하더라도, 도 1의 SSD(120)의 사용은 도 1의 SSD(120)는 이러한 값의 조정을 통해 이익을 얻을 수 있음을 암시한다. 관리 사용자에게 이 값을 수정하는 몇 가지 방법을 제공하면 유용할 것이다.)
그러나 실제로는, 도 1의 SSD(120)에 의해 지원되는 애플리케이션과 도 1의 SSD(120)의 워크로드는 도 1의 SSD(120)의 성능에 영향을 줄 수 있으며, 그런 이유로, 도 1의 SSD(120)는 언제 또는 얼마나 자주 1% 테일 레이턴시 상황에 직면하는가에 따라 성능에 영향을 받게 된다. 예를 들면, 대규모 데이터베이스 시스템은 백그라운드 서버, 포어 그라운드 서버, 로드 서버, 데이터 서버 등 다양한 기능을 수행하는 서버를 포함하는 경우가 많다. 일반적으로 이러한 서버들 각각은 서로 다른 워크로드를 가지고 있다. 이러한 서버의 모든 SSD가 동일한 타깃 레이턴시와 임계치를 사용하도록 구성된 경우, 전체 시스템 작업은 차선책이 될 수 있다. 우수한 구성은 SSD의 워크로드에 적절한 다른 타깃 레이턴시와 다른 임계치로 구성된 각 SSD를 가질 수 있다. 따라서, SSD의 예상된 워크로드를 아는 것은 도 3의 타깃 레이턴시(805) 및 테일 레이턴시 인식 임계치(335)에 대한(적어도 디폴트의) 선택에 영향을 줄 수 있다.
도 1의 SSD(120)의 워크로드가 결정되기 위해서는 여러 가지 방식이 존재한다. 예를 들어, 고객이 도 1의 SSD(120)를 설치할 때, 도 1의 SSD(120)는 고객이 리스트(또는 적어도 가장 가까운 일치)로부터 도 1의 SSD(120)에 대한 예상 워크로드를 선택하게 할 수 있다. 고객의 선택된 워크로드에 기초하여, 도 1의 SSD(120)의 임의 위치(예를 들어, 330의 저장 장치(330)로부터)로부터 도 1의 SSD(120)는 도 3의 타깃 레이턴시(805) 및 테일 레이턴시 인식 임계치(335)에 대한 적절한 디폴트 값을 액세스할 수 있다. 상이한 워크로드들에 대한 이들 디폴트 값들은 임의의 원하는 방식으로 결정되어 도 1의 SSD(120)에 저장될 수 있다. 예를 들어 유사한 워크로드를 가진 다른 SSD의 작업을 분석하여 SSD의 평균 타깃 레이턴시와 사용된 평균 테일 레이턴시 인식 임계치를 결정할 수 있다. 이 평균은 향후 SSD의 기본 값으로 사용될 수 있다(최신 데이터를 기반으로 업데이트하는). 이 개념은 도 3의 결정 테이블(335)에 대한 디폴트 값들로 확장될 수도 있다. 다양한 크기의 쓰기 명령 및 가비지 컬렉션 명령을 수행하는데 필요한 평균 시간이 결정되어 원하는 타깃 레이턴시를 달성하기 위해 쓰기 명령 및 가비지 컬렉션 명령을 쌍으로 사용할 수 있다. (도 3의 결정 테이블(335)에 디폴트 쌍을 할당하기 위해 평균 쓰기 및 가비지 컬렉션 시간을 이용하는 단점은 평균 쓰기 및 가비지 컬렉션 시간이 반드시 도 1의 SSD(120) 상의 쓰기 및 가비지 컬렉션에 요구되는 시간을 나타내지 않는다는 것이다.)
다른 접근법은 고객이 도 1의 SSD(120) 상에 부과될 워크로드에 관한 정보를 SSD (또는 SSD 벤더)에게 제공하도록 하는 것이다. 그러면 SSD 또는 SSD 벤더는 도 3의 결정 테이블(335)을 미리 채우거나, 도 1의 SSD(120)에 전원이 처음 제공될 때 도 3의 결정 테이블(335)을 자동으로 채우는 스크립트를 제공 할 수 있다.
도 3의 결정 테이블(335)이 유용한 것으로 판단되면, 도 3의 결정 테이블(335) 은 임의의 주어진 사이즈의 쓰기 명령에 대해, 쓰기 명령어를 커버하는 도 3의 결정 테이블(335) 쌍이 타깃 레이턴시(805)에 근접하는 전체 레이턴시를 생성하도록 충분한 쓰기 및 가비지 컬렉션 명령 사이즈 쌍을 포함할 필요가 있다. 본 발명의 일 실시 예에서, 쓰기 명령들은 사이즈 범위들로 그룹화되고 그 범위 내의 임의의 사이즈를 포함하는 쓰기 명령이 그 쌍에 의해 커버되는 것으로 간주된다. 예를 들어, 상술한 표 1에서 명령은 0-1MB, 1-6MB, 6-66MB 및 66-128MB를 포함하는 사이즈 범위들로 그룹화된다.
쓰기 명령이 상대적으로 작은 수의 이산 사이즈로 전송되는 시스템의 경우, 도 3의 결정 테이블(335)이 잘 동작하도록 구성하기 위해 쓰기 사이즈의 범위를 사용한다. 예를 들어, 로그 구조화 머지(log structured merge: 이하, LSM) 트리는 제한된 수의 쓰기 사이즈를 사용하는 도 1의 SSD(120)에 데이터를 기입하는 정적 청크 테이블(Static Sorted Table: SST)에 의해 관리되는 데이터 청크내의 도 1의 SSD(120)에 데이터를 기입한다. 그러나 서로 다른 사이즈의 쓰기 명령이 이 방법으로 함께 그룹화되면 시스템은 테일 레이턴시를 인식하는 가비지 컬렉션을 최상의 결과로 사용하지 못할 수 있다. 예를 들어, 위의 표 1에서 6MB의 데이터를 쓰는 명령은 66MB를 쓰는 명령과 동일한 가비지 컬렉션 명령과 쌍을 이룬다. 따라서, 본 발명의 개념의 다른 실시 예에서, 도 3의 결정 테이블(335)은 많은 이산 쓰기 사이즈의 쌍을 포함할 수 있다.
너무 많은 상이한 기록 사이즈가 사용되면, 도 3의 결정 테이블(335)에 너무 많은 쌍이 포함될 필요가 있을 수도 있다. 그러나 실용적인 관점에서 볼 때, 운영 체제는 단일 쓰기 명령에 기록된 데이터의 양을 제한할 수 있다. 예를 들어, 사우스브릿지 칩(입출력 명령을 담당)을 포함한 머신에서 입출력(I/O) 명령이 인터럽트되지 않을 수 있다. 과도한 사이즈의 쓰기 명령이 도 1의 SSD(120)로 전송되면, 도 1의 머신(105)은 자신이 쓰기 명령이 완료될 때까지 불합리하게 기다리는 것을 발견할 수 있다. 따라서 리눅스(Linux) 커널과 같은 많은 운영 체제는 쓰기 명령을 최대 사이즈(예 : 128MB)로 제한할 수 있다. 128 MB보다 큰 데이터가 기록될 필요가 있다면, 운영 체제는 데이터를 128 MB보다 크지 않은 청크로 분할할 수 있어, 도 1의 머신(105)에서 입출력(I/O)이 많이 수행되고 있는 가장 긴 시간은 128MB 쓰기 명령을 수행하는 데 필요한 시간의 양이라는 것을 보장하게 할 수 있다. 만일, 도 3의 결정 테이블(335)이 128 엔트리를 포함하면, MB 단위로 측정 한 각 가능한 쓰기 사이즈에 대해 다른 쌍을 지원할 수 있는 충분한 공간이 있을 수 있다(물론 동일한 수의 블록이 여러 다른 쓰기 사이즈로 지워지면 해당 쓰기 사이즈는 범위로 그룹화될 수 있다.)
도 9a 내지도 9b는 본 발명의 실시 예에 따른 쓰기 명령을 수신하고 도 5의 적시(just-in-time) 가비지 컬렉션 정책(505) 또는 테일 레이턴시 임계치 정책(510)을 수행할지를 판별하기 위한 도 3의 플래시 변환 계층(325)에 대한 예시적인 절차의 흐름도를 도시한다. 도 9a에서, 블록(905)에서, 도 1의 SSD(120)는 머신(105)으로부터 쓰기 명령을 수신할 수 있다. 블록(910)에서, 도 3의 플래시 변환 계층(325)은 도 6의 자유 페이지(605)의 수를 결정할 수 있다.
블록(915, 도 9b)에서, 도 5의 비교기(520)는 도 6의 자유 페이지들(605)의 수와 도 3의 적시 임계치(340)를 비교한다. 만일, 도 6의 자유 페이지들(605)의 수가 도 3의 적시 임계치(340)보다 작으면(또는 잠재적으로 동일하면), 블록(920)에서 도 3의 플래시 변환 계층(325)은 도 5의 적시 가비지 컬렉션 정책(505)을 사용하여 가비지 컬렉션을 수행하며, 이후, 블록(925)에서, 도 1의 SSD(120)는 수신된 쓰기 명령을 수행할 수 있다.
블록(915)에서, 도 6의 자유 페이지(605)의 수가 도 3의 적시 임계치(340)보다 크면(또는 잠재적으로 동일하면), 블록(930)에서 도 5의 비교기(520)는 도 6의 자유 페이지(605)의 수를 도 3의 테일 레이턴시 인식 임계치(345)와 비교한다. 만일, 도 6의 자유 페이지(605)의 수가 도 3의 테일 레이턴시 인식 임계치(345)보다 작으면(또는 잠재적으로 동일하면), 블록(935)에서 도 3의 플래시 변환 계층(325)은 도 5의 테일 레이턴시 인식 가비지 컬렉션 정책(510)을 사용하여 가비지 컬렉션을 수행하며, 이후 블록(925)에서 도 1의 SSD(120)는 수신된 쓰기 명령을 수행할 것이다.
마지막으로, 도 6의 자유 페이지(605)의 수가 도 3의 적시 임계치(340) 및 테일 레이턴시 인식 임계치(345) 모두를 초과하면, 도 1의 SSD(120)는 블록 (925)에서 수신된 쓰기 명령을 수행하기 위해 직접 진행할 수 있다.
도 10은 본 발명의 실시 예에 따른 도 5의 적시 가비지 컬렉션 정책(505)을 사용하기 위한 예시적인 절차의 흐름도를 보여준다. 도 10에서, 블록(1005)에서, 도 3의 플래시 변환 계층(325)은 수신된 쓰기 명령을 수행하기에 충분한 페이지를 자유롭게 하기 위해 소거되어야 하는 블록의 수를 알아낼 수 있다. 그 다음, 블록(1010)에서, 도 3의 플래시 변환 계층(325)은 필요한 수의 블록들에 대해 가비지 컬렉션을 수행할 수 있고, 이후, 도 1의 SSD(120)는 블록(925)에서 쓰기 명령을 수행할 수 있다(블록(925) 이후로 점선으로 도시된 라인은 적시 가비지 컬렉션을 수행하기 위한 기술 파트는 아님)
도 11은 본 발명의 실시 예에 따른 도 5의 테일 레이턴시 인식 가비지 컬렉션 정책(510)을 사용하기 위한 예시적인 절차를 보여주는 흐름도이다. 도 11의 블록(1105)에서, 도 3의 플래시 변환 계층(325)은 도 3의 결정 테이블(335)에 액세스할 수 있다. 블록(1110)에서, 도 3의 수신된 쓰기 명령의 사이즈(355-1 내지 355-3)에 기초하여, 도 3의 플래시 변환 계층(325)은 도 3의 결정 테이블(335)로부터 수행할 도 3의 적절한 가비지 컬렉션 명령 사이즈(360-1 내지 360-3)를 결정할 수 있다. 블록(1115)에서, 도 3의 플래시 변환 계층(325)은 도 3의 결정 테이블(335)로부터 결정된 바와 같이, 가비지 컬렉션을 위한 적절한 수의 블록을 선택할 수 있다. 블록(1120)에서, 도 3의 플래시 변환 계층(325)은 소거될 블록 내의 임의의 유효한 데이터를 임시 저장 장치(예를 들어, 도 3의 SSD 컨트롤러(310) 내의 DRAM으로)에 복사할 수 있다. 블록(1125)에서, 타깃 블록들은 소거될 수 있다. 블록(1130)에서, 타깃 블록들에 존재하는 유효 데이터는 도 1의 SSD(120)의 다른 자유 페이지들로 프로그램될 수 있고, 이후 블록(925)에서, 도 1의 SSD(120)는 수신된 쓰기 명령을 실행할 수 있다(블록(925)이 기술적으로 적시 가비지 컬렉션을 수행하는 일부가 아니기 때문에 점선으로 도시됨).
본 발명에 따른 일부 실시 예에서, 쓰기 명령을 수행하기 전에 유효한 데이터를 프로그래밍하기보다, 프로그래밍 동작이 지연될 수 있다. 예를 들어, 2016년 4월 19일자로 출원된 미국 특허 출원 제15/133,205호는 2016년 1월 25일자로 출원 된 미국 가출원 제62 / 286,926호의 효익을 주장하며, 이 두 특허 출원 모두 참조문헌으로 인용되며 도 1의 SSD(120)의 성능을 향상시키기 위해 프로그래밍 동작을 연기하는 것을 포함하는 동적 가비지 컬렉션 프로그램/소거 정책이 어떻게 사용될 수 있는지를 설명한다. 본 발명의 개념의 이러한 실시 예에서, 유효 데이터를 프로그래밍하는 것은 블록(1130)에서가 아니라 블록(1135)에서 발생한다. 점선(1140 및 1145)은 구현된 본 발명의 실시 예에 근거하여 블록(1130 및 1135) 중 어느 블록을 수행하고 건너 뛸지를 나타낸다.
도 12는 본 발명의 실시 예에 따른 도 3의 결정 테이블(335)을 채우기 위한 도 3의 플래시 변환 계층(325)의 예시적인 절차를 보여주는 흐름도이다. 도 3의 결정 테이블(335)을 채울 수 있다. 도 12의 블록(1205)에서, 도 3의 플래시 변환 계층(325)은 도 3의 테일 레이턴시 인식 임계치(345)를 결정할 수 있다. 블록 (1210)에서, 도 3의 플래시 변환 계층(325)은 도 3의 테일 레이턴시 인식 임계치(345)에 기초할 수 있는 도 8의 타깃 레이턴시(805)를 결정할 수 있다. (전술한 바와 같이, 타깃 레이턴시(805)는 도 3의 테일 레이턴시 인식 임계치(345) 이외의 정보에 의존할 수 있다). 블록(1215)에서, 도 3의 플래시 변환 계층(325)은 다양한 사이즈의 쓰기 명령을 수행하거나 관찰하여 이들 쓰기 명령을 수행하는데 필요한 시간을 결정할 수 있다.
블록(1220)에서, 도 3의 플래시 변환 계층(325)은 가비지 컬렉션 명령을 수행하는 데 필요한 시간을 결정하기 위해 다양한 블록 수들에 대해 가비지 컬렉션 명령을 수행할 수 있다. (가능한 모든 블록의 수를 테스트할 필요는 없다는 것을 유의해야 한다: 일단 도 8의 타깃 레이턴시(805)를 초과하는 시간을 요구하는 충분히 큰 수의 블록들이 테스트되었으면, 쓰기 명령과 임의의 큰 가비지 컬렉션 명령에 대한 전체 시간이 도 8의 타깃 레이턴시(805)를 모두 초과함으로 큰 수의 블록들을 동반하는 가비지 컬렉션 명령은 타이밍될 필요가 없다). 블록(1225)에서, 도 3의 플래시 변환 계층(325)은 각 쌍을 수행하는데 필요한 시간이 대략적으로 도 8의 타깃 레이턴시(805)가 되도록 쓰기 명령과 가비지 컬렉션 명령의 쌍을 만들 수 있다. 마지막으로, 블록(1230)에서, 도 3의 플래시 변환 계층(325)은 블록(1225)에서 생성된 쌍들로 도 3의 결정 테이블(335)을 채울 수 있다.
도 13은 본 발명의 실시 예에 따른 도 3의 테일 레이턴시 인식 임계치(345)와 도 8의 타깃 레이턴시(805)를 결정하기 위한 예의 흐름도를 보여준다. 도 13의 블록(1305)에서, 도 1의 SSD(120)는 사용자가 도 3의 테일 레이턴시 인식 임계치(345)와 도 8의 타깃 레이턴시(805)를 제공하게 할 수 있다. 대안으로, 블록(1310)에서 도 1의 SSD(120)는 SSD(120)의 예상 워크로드를 머신(105)의 관리 사용자에게 프롬프트할 수 있고, 이후, 블록(1315)에서, 도 3의 플래시 변환 계층(325)은 도 3의 테일 레이턴시 인식 임계치(345)와 도 8의 타깃 레이턴시 (805)에 대한 적절한 초기값을 결정할 수 있다.
한편, 도 13은 도 1의 SSD(120)가 도 1의 SSD(120)의 예상 작업 로드를 관리 사용자에게 프롬프트하는 것을 표현하고 있지만, 본 발명의 다른 실시 예들에서 이 정보를 다른 방식으로 도달하게 할 수 있다. 예를 들면, 고객은 도 1의 SSD(120)를 주문할 때, 도 1의 SSD(120)의 예상 워크로드를 벤더에 알릴 수 있고, 벤더는 도 8의 타깃 레이턴시(805)와 도 3의 테일 레이턴시 인식 임계치(345)에 대한 값들을 미리 프로그래밍함으로써, 또는 도 1의 SSD(120)를 프로그램할 수 있는 스크립트를 준비함으로써, 그러한 특정 워크로드를 수행할 수 있는 도 1의 SSD(120)를 준비할 수 있다.
도 9a 내지 도 13에서, 본 발명의 개념의 일부 실시 예가 도시된다. 그러나 당업자는 블록의 순서를 변경하거나, 블록을 생략하거나, 또는 도면에 도시되지 않은 링크를 포함함으로써, 본 발명의 개념의 다른 실시 예도 가능하다는 것을 인식할 것이다. 흐름도의 이러한 모든 변형은 명시적으로 기술되었든 아니든 간에 본 발명의 개념의 실시 예인 것으로 간주된다.
다음의 설명은 본 발명의 개념의 특정 양상이 구현될 수 있는 적절한 기계 또는 기계들에 대한 간략하고 일반적인 설명을 제공하기 위한 것이다. 머신은 키보드, 마우스 등과 같은 종래의 입력 디바이스로부터 의 입력뿐만 아니라 다른 머신으로부터 수신된 지시들, 가상현실 (VR) 환경과의 상호 작용, 생체 인식(biometric)과 같은 입력들에 의해 적어도 부분적으로 제어될 수 있다. 본 명세서에 사용된 바와 같이, "기계"라는 용어는 단일 기계, 가상 기계, 또는 함께 동작하는 통신적으로 결합된 기계, 가상 기계 또는 장치의 시스템을 광범위하게 포함하는 것으로 의도된다. 예시적인 머신은 퍼스널 컴퓨터, 워크 스테이션, 서버, 휴대용 컴퓨터, 핸드 헬드 디바이스, 전화, 테블릿 등과 같은 컴퓨팅 디바이스뿐만 아니라 자동차, 기차, 택시 등과 같은 사설 또는 대중교통과 같은 운송 디바이스를 포함한다.
머신은 프로그램 가능 또는 비프로그래밍 가능 로직 디바이스 또는 어레이, ASIC(Application Specific Integrated Circuits), 임베디드 컴퓨터, 스마트 카드 등과 같은 내장형 컨트롤러를 포함할 수 있다. 머신 또는 머신들은 네트워크 인터페이스, 모뎀 또는 다른 통신 커플링과 같은 하나 이상의 원격 머신에 대한 하나 이상의 연결을 활용할 수 있다. 머신은 인트라넷, 인터넷, 로컬 영역 네트워크, 광역 네트워크 등과 같은 물리적 그리고/또는 논리적 네트워크에 의해 상호 접속될 수 있다. 당업자라면 네트워크 통신이 무선 주파수(RF), 위성, 마이크로 웨이브, IEEE (Institute of Electrical and Electronics Engineers) 802.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함한 다양한 유선 및/또는 무선 근거리 또는 장거리 통신 사업자 그리고 프로토콜을 사용할 수 있음을 잘 이해할 것이다.
본 발명의 실시 예가 머신에 의해 액세스될때, 머신이 태스크를 수행하거나 추상적인 데이터 타입이나 저레벨 하드웨어 컨텍스트를 정의하는 기능, 절차, 데이터 구조, 애플리케이션 프로그램 등을 포함하는 관련 데이터를 참조하거나 연관하여 기술될 수 있다. 관련 데이터는 예를 들어, RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 하드 드라이브, 플로피 디스크, 광학 디스크, 테이프, 플래시 메모리, 메모리 스틱, 디지털 비디오 디스크, 생물학적 저장 장치 등을 포함하는 다른 저장 장치 및 이들과 연관된 저장 매체에 저장될 수 있다. 관련 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경을 통해 패킷, 직렬 데이터, 병렬 데이터, 전파 신호 등의 형태로 전달될 수 있으며, 압축 또는 암호화된 포맷으로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있으며, 머신 액세스를 위해 로컬 그리고/또는 원격으로 저장될 수 있다.
본 발명의 실시 예는 하나 이상의 프로세서에 의해 실행 가능한 명령을 포함하는 유형의 비일시적 머신 판독 가능 매체를 포함할 수 있으며, 상술한 명령은 본 명세서에서 설명된 바와 같은 발명 개념의 요소를 수행하기 위한 명령을 포함한다.
설명된 실시 예를 참조하여 본 발명의 개념의 원리를 설명하고 예시하였지만, 도시된 실시 예는 이러한 원리를 벗어나지 않고 배열 및 세부 사항을 수정할 수 있으며 임의의 원하는 방식으로 결합될 수 있음을 잘 이해할 것이다. 또한, 상술한 설명은 특정 실시 예에 초점을 맞추었지만, 다른 구성도 고려된다. 특히, "발명의 실시 예에 따른"등과 같은 표현이 본 명세서에서 사용되더라도, 이러한 문구는 일반적으로 실시 예 가능성을 참조하는 것으로 의도되며, 본 발명의 개념을 특정 실시 예 구성으로 제한하려는 것은 아니다. 본 명세서에 사용된 바와 같이, 이들 용어는 다른 실시 예와 조합 가능한 동일한 또는 상이한 실시 예를 나타낼 수 있다.
상술한 예시적인 실시 예는 본 발명의 개념을 제한하는 것으로 해석되어서는 안된다. 비록 몇몇 실시 예가 설명되었지만, 당업자는 본 개시의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고도 이들 실시 예에 많은 수정이 가능하다는 것을 용이하게 이해할 것이다. 따라서, 이러한 모든 수정은 청구항에 정의된 본 발명의 개념의 범위 내에 포함되는 것으로 의도된다.
본 발명의 개념의 실시 예는 제한없이 다음의 진술들로 확장될 수 있다:
진술1 .
본 발명의 개념의 실시 예는:
솔리드 스테이트 드라이브(SSD)에서 호스트로부터의 쓰기 명령을 수신하는 호스트 인터페이스 로직;
데이터를 저장하는 플래시 메모리; 그리고
상기 플래시 메모리에 대한 데이터의 읽기 및 쓰기를 관리하는 SSD 컨트롤러를 포함하되, 상기 SSD 컨트롤러는 적시(just-in-time) 임계치와 테일 레이턴시 임계치를 저장하기 위한 스토리지 및 플래시 변환 계층을 포함하고,
상기 플래시 변환 계층은:
자유 페이지들의 수가 상기 적시(just-in-time) 임계치보다 작은 경우에 호출되는 적시(just-in-time) 가비지 컬렉션 정책; 그리고
자유 페이지들의 수가 상기 테일 레이턴시 임계치보다 작을 때 호출되는 테일 레이턴시 인식 가비지 컬렉션 정책(tail latency-aware garbage collection strategy)을 포함하고,
상기 테일 레이턴시 임계치는 상기 적시 임계치보다 크고,
상기 테일 레이턴시 인식 가비지 컬렉션 정책은 가비지 컬렉션 명령과 쓰기 명령을 짝을 이루도록 조합하는 것을 특징으로 하는 솔리드 스테이트 드라이브(SSD)를 포함한다.
진술2: 본 발명의 개념의 실시 예는 진술1에 따른 SSD를 포함하는데, 여기서 적시(Just-In-Time) 가비지 컬렉션 정책은 SSD상의 자유 페이지의 수를 쓰기 명령을 충족하기에 충분한 수로 증가시키기에 충분한 블록에 대해 가비지 컬렉션을 수행한다.
진술 3: 본 발명의 개념의 실시 예는 진술 1에 따른 SSD를 포함하며, 테일 레이턴시 인식 가비지 컬렉션 정책은 쓰기 명령과 가비지 컬렉션 명령 모두를 수행할 수 있으며, 여기서 쓰기 명령과 가비지 컬렉션 명령 모두를 수행하는데 필요한 시간은 대략 타깃 레이턴시이다.
진술4: 본 발명의 개념의 실시 예는 진술3에 따른 SSD를 포함하며, 상기 플래시 변환 계층은 결정 테이블을 더 포함하고, 상기 결정 테이블은 복수의 쌍을 포함하며, 상기 복수의 쌍들 각각은 복수의 쓰기 명령 정보 및 상기 복수의 쌍들에서 각각의 쌍을 수행하는데 필요한 제 2 시간은 대략 상기 타깃 레이턴시인 복수의 가비지 컬렉션 명령 정보를 포함한다.
진술5: 본 발명의 개념의 실시 예는 진술4에 따른 SSD를 포함하며,
상기 쓰기 명령 정보는 쓰기 명령 사이즈 및 쓰기 명령 수를 포함하는 세트로부터 추출되고; 그리고
상기 가비지 컬렉션 명령 정보는 가비지 컬렉션 명령 사이즈 및 가비지 컬렉션 명령의 수를 포함하는 세트로부터 추출된다.
진술6: 본 발명의 개념의 실시 예는 진술 4에 따른 SSD를 포함하며, 상기 테일 레이턴시 인식 가비지 컬렉션 정책은 쓰기 명령 정보에 응답하여 상기 결정 테이블로부터 가비지 컬렉션 명령 정보를 액세스할 수 있다.
진술7: 본 발명의 개념의 실시 예는 진술 4에 따른 SSD를 포함하며, 타깃 레이턴시가 사용자에 의한 구성이 가능하다.
진술8: 본 발명의 개념의 실시 예는 진술 4에 따른 SSD를 포함하며, 복수의 가비지 컬렉션 명령 정보가 복수 쌍의 각각의 쌍을 수행하는 데 필요한 제 2 시간이 대략 타깃 레이턴시가 되도록 선택된다.
진술9: 본 발명의 개념의 실시 예는 진술 4에 따른 SSD를 포함하며, 상기 복수의 가비지 컬렉션 명령 정보는 테일 레이턴시 임계치에 응답하여 선택된다.
진술10: 본 발명의 개념의 실시 예는 진술 4에 따른 SSD를 포함하며,
상기 플래시 변환 계층은 복수의 쓰기 명령 정보 각각을 기록하는데 필요한 복수의 제 1 시간 및 복수의 가비지 컬렉션 정보 각각을 가비지 컬렉션하는데 필요한 복수의 제 2 시간을 결정하기 위한 타이머를 더 포함하며; 그리고
상기 결정 테이블은 상기 복수의 제 1 시간 및 상기 복수의 제 2 시간에 응답하여 쓰기 명령 정보 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 채워질 수 있다.
진술11: 본 발명의 개념의 실시 예는 진술 10에 따른 SSD를 포함하며, 상기 결정 테이블은 복수의 제 1 시간 및 제 2 시간에 응답하여 상기 복수 쌍의 쓰기 명령 정보 및 가비지 컬렉션 명령 정보와, 상기 타깃 레이턴시 및 테일 레이턴시 임계치 중 적어도 하나로 채워질 수 있다.
진술12: 본 발명의 개념의 실시 예는 진술 1에 따른 SSD를 포함하며, 여기서 테일 레이턴시 임계치는 사용자에 의해 구성 가능하다.
진술13: 본 발명의 개념의 실시 예는 진술 1에 따른 SSD를 포함하며, SSD에 부과될 워크로드에 응답하여 상기 테일 레이턴시 임계치가 설정된다.
진술14: 본 발명의 개념의 실시 예는 진술 1에 따른 SSD를 포함하며,
상기 SSD상의 자유 페이지들의 수가 상기 쓰기 명령을 완료하기에 충분히 크더라도 상기 테일 레이턴시 인식 가비지 컬렉션 정책이 호출될 수 있다.
진술15: 본 발명의 개념의 실시 예는 진술 1에 따른 SSD를 포함하며,
상기 가비지 컬렉션 명령의 프로그램 동작은 쓰기 명령을 완료할 때까지 연기될 수 있다.
진술16: 본 발명의 개념의 실시 예에 따른 방법은:
솔리드 스테이트 드라이브(SSD)에서 쓰기 명령을 수신하는 단계;
상기 솔리드 스테이트 드라이브 상의 자유 페이지들의 수를 결정하는 단계;
상기 솔리드 스테이트 드라이브의 자유 페이지 수가 적시(just-in-time) 임계치보다 적으면, 적시(just-in-time) 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계;
상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 레이턴시 임계치보다 적으면, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계; 그리고
상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 대기 임계치보다 크거나 같으면 가비지 컬렉션을 수행하지 않고,
상기 솔리드 스테이트 드라이브에 대한 쓰기 명령을 수행하는 단계,
상기 테일 레이턴시 임계치는 상기 적시(just-in-time) 임계치보다 크고,
상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 읽기 명령과 가비지 컬렉션 명령의 쌍을 이루는 것을 특징으로 한다.
진술17: 본 발명의 실시 예에 따른 진술 16에 따른 방법은, 적시 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는, 상기 쓰기 명령을 충족시키기에 충분한 수의 SSD상의 자유 페이지들의 수를 증가시키기 위해 가비지 컬렉션을 수행하는 단계를 포함한다.
진술18: 본 발명의 실시 예에 따른 진술 16에 따른 방법은, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는 쓰기 명령 및 가비지 컬렉션 명령 모두를 수행하는 단계를 포함하며, 상기 쓰기 명령과 상기 가비지 컬렉션 명령을 수행하는데 필요한 시간은 대략 타깃 레이턴시이다.
진술19: 본 발명의 실시 예에 따른 진술 18에 따른 방법에 있어서, 상기 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는 상기 쓰기 명령에 응답하여 결정 테이블로부터 페어링된 가비지 컬렉션 명령에 액세스하는 단계를 더 포함한다.
진술20: 본 발명의 실시 예는 진술 18에 따른 방법을 포함하며, 상기 결정 테이블은 복수의 쌍을 포함하고, 상기 복수의 쌍 각각은 복수의 쓰기 명령 정보 및 복수의 가비지 컬렉션 명령 정보를 포함하며, 복수의 쌍에서 각각의 쌍을 수행하는데 요구되는 제 2 시간은 대략 타깃 레이턴시이다.
진술21: 본 발명의 개념의 실시 예는 진술 20에 따른 방법을 포함하며,
상기 쓰기 명령 정보는 쓰기 명령 사이즈 및 쓰기 명령 수를 포함하는 세트로부터 추출되고; 그리고
상기 가비지 컬렉션 명령 정보는 가비지 컬렉션 명령 사이즈 및 가비지 컬렉션 명령의 수를 포함하는 세트로부터 추출된다.
진술22: 본 발명의 개념의 실시 예는 진술 20에 따른 방법을 포함하며,
복수의 제 1 시간 및 복수의 제 2 시간에 응답하여 쓰기 명령 정보쌍 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 상기 결정 테이블을 채우는 단계를 더 포함한다.
진술23: 본 발명의 개념의 실시 예는 진술 22에 따른 방법을 포함하며,
상기 복수의 쓰기 명령 사이즈 각각을 수행하는 데 필요한 상기 복수의 제 1 시간을 결정하기 위해 복수의 쓰기 명령 사이즈를 기록하는 단계; 그리고
상기 복수의 가비지 컬렉션 명령 사이즈 각각을 수행하는 데 필요한 상기 복수의 제 2 시간을 결정하기 위해 복수의 가비지 컬렉션 명령 사이즈를 가비지 컬렉션하는 단계를 더 포함한다.
진술24: 본 발명의 개념의 실시 예는 진술 22에 따른 방법을 포함하며,
상기 복수의 쓰기 명령들의 각각을 수행하는데 요구되는 상기 복수의 제 1 시간들을 결정하기 위해 복수의 쓰기 명령들의 개수를 기록하는 단계; 그리고
상기 복수의 가비지 컬렉션 명령들의 각각을 수행하는데 요구되는 상기 복수의 제 2 시간들을 결정하기 위해 복수의 가비지 컬렉션 명령들의 개수를 가비지 컬렉션하는 단계를 더 포함한다.
진술25: 본 발명의 개념의 실시 예는 진술 22에 따른 방법을 포함하며,
복수의 제 1 시간 및 복수의 제 2 시간에 응답하여 쓰기 명령 정보 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 결정 테이블을 채우는 단계는, 상기 복수의 제 1 시간 및 상기 복수의 제 2 시간 및 타깃 레이턴시 및 상기 테일 레이턴시 임계치 중 적어도 하나에 응답하여 상기 쓰기 명령 정보 쌍 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 결정 테이블을 채우는 단계를 더 포함한다.
진술26: 본 발명의 개념의 실시 예는 진술 25에 따른 방법을 포함하며, 상기 타깃 레이턴시 및 상기 테일 레이턴시 임계치를 결정하는 단계를 더 포함한다.
진술27: 본 발명의 개념의 실시 예는 진술 26에 따른 방법을 포함하며, 타깃 레이턴시 및 테일 레이턴시 임계치를 결정하는 단계는, 상기 타깃 레이턴시 및 테일 레이턴시 임계치를 사용자에게 프롬프트하는 단계를 포함한다.
진술28: 본 발명의 개념의 실시 예는 진술 26에 따른 방법을 포함하며, 타깃 레이턴시 목표 지연 시간 및 테일 레이턴시 임계치를 결정하는 단계는,
사용자에게 상기 SSD에 대한 워크로드를 프롬프트하는 단계; 그리고
상기 SSD에 대한 워크로드에 응답하여 상기 타깃 레이턴시 및 상기 테일 레이턴시 임계치를 결정하는 단계를 더 포함한다.
진술29: 본 발명의 개념의 실시 예는 진술 22에 따른 방법을 포함하며,
복수의 제 1 시간 및 복수의 제 2 시간에 응답하여 쓰기 명령 정보 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 상기 결정 테이블을 채우는 단계는, SSD의 기동시 상기 복수의 제 1 시간 및 상기 복수의 제 2 시간에 응답하여 상기 쓰기 명령 정보 및 상기 가비지 컬렉션 명령 정보의 복수의 쌍들로 상기 결정 테이블을 채우는 단계를 포함한다.
진술30: 본 발명의 개념의 실시 예는 진술 18에 따른 방법을 포함하며
상기 쓰기 명령 및 가비지 컬렉션 명령 모두를 수행하는 단계는, 상기 쓰기 명령을 완료한 후까지 상기 가비지 컬렉션 명령의 프로그램 동작을 연기하는 단계를 포함한다.
진술31: 본 발명의 개념의 실시 예는 진술 18에 따른 방법을 포함하며, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는, 자유 페이지의 수가 쓰기 명령을 완료하기에 충분히 크더라도 테일 레이턴시 인식 가비지 컬렉션 전략을 사용하여 가비지 컬렉션을 수행하는 단계를 포함한다.
진술32: 본 발명의 실시 예는 비일회성 명령을 저장하는 실체적 저장 매체를 포함하는 물품을 포함하며: 상기 실체적 저장 매체는 기계에 의해 실행될 때,
솔리드 스테이트 드라이브(SSD)에서 쓰기 명령을 수신하는 단계;
상기 솔리드 스테이트 드라이브(SSD) 상의 자유 페이지들의 수를 결정하는 단계;
상기 솔리드 스테이트 드라이브의 자유 페이지 수가 적시(just-in-time) 임계치보다 적으면, 적시(just-in-time) 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계;
상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 레이턴시 임계치보다 적으면, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계; 그리고
상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 대기 임계치보다 크거나 같으면 가비지 컬렉션을 수행하지 않고,
상기 솔리드 스테이트 드라이브에 대한 쓰기 명령을 수행하는 단계,
상기 테일 레이턴시 임계치는 상기 적시(just-in-time) 임계치보다 크고,
상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 읽기 명령과 가비지 컬렉션 명령의 쌍을 이루게 한다.
진술33: 본 발명의 개념의 실시 예에 따른 진술 32에 따른 물품을 포함하며, 적시 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는, 상기 SSD상의 자유 페이지의 수를 쓰기 명령을 충족하기에 충분한 수로 증가시키기 위해 충분한 블록 상에서 가비지 컬렉션을 수행하는 단계를 포함한다.
진술34: 본 발명의 개념의 실시 예에 따른 진술 32에 따른 물품을 포함하며, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는, 상기 쓰기 명령 및 가비지 컬렉션 명령 모두를 수행하는 단계를 포함하며, 상기 쓰기 명령과 가비지 컬렉션 명령은 대략 타깃 레이턴시에 대응한다.
진술35: 본 발명의 개념의 실시 예에 따른 진술 34에 따른 물품을 포함하며, 상기 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는, 상기 쓰기 명령에 응답하여 상기 결정 테이블로부터 상기 가비지 컬렉션 명령 쌍을 액세스하는 단계를 더 포함한다.
진술36: 본 발명의 개념의 실시 예에 따른 진술 35에 따른 물품을 포함하며, 결정 테이블은 복수의 쌍을 포함하고, 복수의 쌍 각각은 복수의 쓰기 명령 사이즈 및 복수의 가비지 컬렉션 명령 사이즈를 포함하며, 복수의 쌍에서 각각의 쌍을 수행하는데 요구되는 제 2 시간은 대략 타깃 레이턴시이다.
진술37: 본 발명의 개념의 실시 예에 따른 진술 36에 따른 물품을 포함하며,
상기 쓰기 명령 정보는 쓰기 명령 사이즈 및 쓰기 명령 수를 포함하는 세트로부터 추출되고; 그리고
상기 가비지 컬렉션 명령 정보는 가비지 컬렉션 명령 사이즈 및 가비지 컬렉션 명령의 수를 포함하는 세트로부터 추출된다.
진술38: 본 발명의 개념의 실시 예에 따른 진술 36에 따른 물품을 포함하며, 상기 유형의 저장 매체는 머신에 의해 실행될 때, 복수의 제 1 시간 및 복수의 제 2 시간에 응답하여 상기 기록 명령 정보쌍 및 상기 가비지 수집 명령 정보의 복수의 쌍으로 상기 결정 테이블을 채우게 하는 추가의 비일시적인 명령을 저장한다.
진술39: 본 발명의 개념의 실시 예에 따른 진술 38에 따른 물품을 포함하며, 상기 유형의 저장 매체는 머신에 의해 실행될 때,
상기 복수의 쓰기 명령 사이즈 각각을 수행하는 데 필요한 상기 복수의 제 1 시간을 결정하기 위해 복수의 쓰기 명령 사이즈를 기록하고; 그리고
상기 복수의 가비지 컬렉션 명령 사이즈 각각을 수행하는 데 필요한 상기 복수의 제 2 시간을 결정하기 위해 복수의 가비지 컬렉션 명령 사이즈를 가비지 컬렉션하게 하는 추가의 비일시적인 명령을 저장을 저장한다.
진술40: 본 발명의 개념의 실시 예에 따른 진술 38에 따른 물품을 포함하며, 상기 유형의 저장 매체는 상기 머신에 의해 실행될 때,
상기 복수의 쓰기 명령들의 각각을 수행하는데 요구되는 상기 복수의 제 1 시간들을 결정하기 위해 복수의 쓰기 명령들의 개수를 기록하고; 그리고
상기 복수의 가비지 컬렉션 명령들의 각각을 수행하는데 요구되는 상기 복수의 제 2 시간들을 결정하기 위해 복수의 가비지 컬렉션 명령들의 개수를 가비지 컬렉션하게 하는 추가의 비일시적인 명령을 저장을 저장한다.
진술41: 본 발명의 개념의 실시 예에 따른 진술 38에 따른 물품을 포함하며, 복수의 제 1 시간 및 복수의 제 2 시간에 응답하여 쓰기 명령 정보 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 결정 테이블을 채우는 단계는,
상기 복수의 제 1 시간 및 상기 복수의 제 2 시간 및 타깃 레이턴시 및 상기 테일 레이턴시 임계치 중 적어도 하나에 응답하여 상기 결정 테이블을 상기 복수의 쓰기 명령 정보 쌍 및 가비지 컬렉션 명령 정보로 채운다.
진술42: 본 발명의 개념의 실시 예에 따른 진술 41에 따른 물품을 포함하며,
상기 유형의 저장 매체는 상기 머신에 의해 실행될 때 상기 타깃 레이턴시 및 상기 테일 레이턴시 임계치를 결정하게 하는 추가의 비일시적인 명령을 저장한다.
진술43: 본 발명의 개념의 실시 예에 따른 진술 42에 따른 물품을 포함하며,
상기 타깃 레이턴시 및 테일 레이턴시 임계치를 결정하는 단계는 타깃 레이턴시 및 테일 레이턴시 임계치에 대해 사용자에게 프롬프트하는 단계를 포함한다.
진술44: 본 발명의 개념의 실시 예에 따른 진술 42에 따른 물품을 포함하며,
상기 타깃 레이턴시 및 테일 레이턴시 임계치를 결정하는 단계는,
사용자에게 상기 SSD에 대한 워크로드를 프롬프트하는 단계; 그리고
상기 SSD에 대한 워크로드에 응답하여 상기 타깃 레이턴시 및 테일 레이턴시 임계치를 결정하는 단계를 더 포함한다.
진술45: 본 발명의 개념의 실시 예는 진수 38에 따른 물품을 포함하며, 상기 복수의 제 1 시간 및 복수의 제 2 시간에 응답하여 쓰기 명령 정보 및 가비지 컬렉션 명령 정보의 복수의 쌍으로 결정 테이블을 채우는 단계는, 상기 SSD의 기동시 상기 복수의 제 1 시간 및 상기 복수의 제 2 시간에 응답하여 쓰기 명령 정보 및 가비지 컬렉션 명령 정보의 복수의 쌍들로 결정 테이블을 채우는 단계를 포함한다.
진술46: 본 발명의 개념의 실시 예는 진수 34에 따른 물품을 포함하며,
상기 쓰기 명령 및 가비지 컬렉션 명령 모두를 수행하는 단계는, 상기 쓰기 명령을 완료한 후에 상기 가비지 컬렉션 명령의 프로그램 동작을 연기하는 단계를 포함한다.
진술47: 본 발명의 개념의 실시 예는 진수 32에 따른 물품을 포함하며,
상기 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계는, 상기 쓰기 명령을 완료할 만큼 충분히 큰 자유 페이지의 수가 존재하더라도 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계를 포함한다.
결론적으로, 본 명세서에 기술된 실시 예에 대한 다양한 변경의 관점에서, 이 상세한 설명 및 첨부된 자료는 단지 예시적인 것으로 의도되며, 본 발명의 개념의 범위를 제한하는 것으로 간주되어서는 안된다. 그러므로, 본 발명의 개념으로서 청구되는 것은 이하의 청구 범위 및 그 균등물의 범위 및 사상 내에 있을 수 있는 모든 변형이다.

Claims (10)

  1. 솔리드 스테이트 드라이브(SSD)에서 호스트로부터의 쓰기 명령을 수신하는 호스트 인터페이스 로직;
    데이터를 저장하는 플래시 메모리; 그리고
    상기 플래시 메모리에 대한 데이터의 읽기 및 쓰기를 관리하는 SSD 컨트롤러를 포함하되, 상기 SSD 컨트롤러는 적시(just-in-time) 임계치와 테일 레이턴시 임계치를 저장하기 위한 스토리지 및 플래시 변환 계층을 포함하고,
    상기 플래시 변환 계층은:
    자유 페이지들의 수가 상기 적시(just-in-time) 임계치보다 작은 경우에 호출되는 적시(just-in-time) 가비지 컬렉션 정책; 그리고
    자유 페이지들의 수가 상기 테일 레이턴시 임계치보다 작을 때 호출되는 테일 레이턴시 인식 가비지 컬렉션 정책(tail latency-aware garbage collection strategy)을 포함하고,
    상기 테일 레이턴시 임계치는 상기 적시 임계치보다 크고,
    상기 테일 레이턴시 인식 가비지 컬렉션 정책은 가비지 컬렉션 명령과 쓰기 명령을 짝을 이루도록 하는 것을 특징으로 하는 솔리드 스테이트 드라이브.
  2. 제 1 항에 있어서,
    상기 테일 레이턴시 인식 가비지 컬렉션 정책은, 상기 쓰기 명령 및 상기 가비지 컬렉션 명령 모두를 수행할 수 있으며, 상기 쓰기 명령 및 상기 가비지 컬렉션 명령 모두를 수행하는데 필요한 시간은 대략적으로 타깃 레이턴시인 솔리드 스테이트 드라이브.
  3. 제 2 항에 있어서,
    상기 플래시 변환 계층은 결정 테이블을 더 포함하고, 상기 결정 테이블은 각각 복수의 쓰기 명령 정보 및 복수의 가비지 컬렉션 명령 정보를 포함하는 복수의 쌍들을 포함하고, 상기 복수의 쌍들 각각을 수행하는데 요구되는 제 2 시간은 대략 상기 타깃 레이턴시인 것을 특징으로 하는 솔리드 스테이트 드라이브.
  4. 제 3 항에 있어서,
    상기 쓰기 명령 정보는 쓰기 명령 사이즈 및 쓰기 명령 수를 포함하는 세트로부터 추출되고; 그리고
    상기 가비지 컬렉션 명령 정보는 가비지 컬렉션 명령 사이즈 및 가비지 컬렉션 명령의 수를 포함하는 세트로부터 추출되는 솔리드 스테이트 드라이브.
  5. 제 3 항에 있어서,
    상기 복수의 가비지 컬렉션 명령 정보는 상기 복수의 쌍에서 각각의 쌍을 수행하는데 필요한 상기 제 2 시간이 대략 상기 타깃 레이턴시가 되도록 선택되는 솔리드 스테이트 드라이브.
  6. 제 3 항에 있어서,
    상기 플래시 변환 계층은 상기 복수의 쓰기 명령 정보 각각을 쓰는데 데 필요한 복수의 제 1 시간과, 상기 복수의 가비지 컬렉션 정보 각각을 가비지 컬렉션하는데 필요한 복수의 제 2 시간을 결정하기 위한 타이머를 더 포함하며; 그리고
    상기 결정 테이블은 상기 복수의 제 1 시간 및 상기 복수의 제 2 시간에 응답하여 상기 쓰기 명령 정보 및 상기 가비지 컬렉션 명령 정보의 복수의 쌍들로 채워지는 솔리드 스테이트 드라이브.
  7. 제 6 항에 있어서,
    상기 결정 테이블은, 상기 복수의 제 1 시간 및 상기 복수의 제 2 시간, 그리고 상기 타깃 레이턴시 및 테일 레이턴시 임계치중 어느 하나에 응답하는 상기 복수의 쌍의 상기 쓰기 명령 정보 및 상기 가비지 컬렉션 명령 정보로 채워지는 솔리드 스테이트 드라이브.
  8. 제 1 항에 있어서,
    상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 솔리드 스테이트 드라이브 상의 자유 페이지들의 수가 상기 쓰기 명령을 완료하기에 충분히 크더라도 호출되는 솔리드 스테이트 드라이브.
  9. 솔리드 스테이트 드라이브(SSD)에서 쓰기 명령을 수신하는 단계;
    상기 솔리드 스테이트 드라이브 상의 자유 페이지들의 수를 결정하는 단계;
    상기 솔리드 스테이트 드라이브의 자유 페이지 수가 적시(just-in-time) 임계치보다 적으면, 적시(just-in-time) 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계;
    상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 레이턴시 임계치보다 적으면, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계; 그리고
    상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 대기 임계치보다 크거나 같으면 가비지 컬렉션을 수행하지 않고,
    상기 솔리드 스테이트 드라이브에 대한 쓰기 명령을 수행하는 단계,
    상기 테일 레이턴시 임계치는 상기 적시(just-in-time) 임계치보다 크고,
    상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 읽기 명령과 가비지 컬렉션 명령의 쌍을 이루는 방법.
  10. 비일회성 명령을 저장하는 실체적 저장 매체를 포함하는 물품에 있어서: 상기 실체적 저장 매체는 기계에 의해 실행될 때,
    솔리드 스테이트 드라이브(SSD)에서 쓰기 명령을 수신하는 단계;
    상기 솔리드 스테이트 드라이브(SSD) 상의 자유 페이지들의 수를 결정하는 단계;
    상기 솔리드 스테이트 드라이브의 자유 페이지 수가 적시(just-in-time) 임계치보다 적으면, 적시(just-in-time) 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계;
    상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 레이턴시 임계치보다 적으면, 테일 레이턴시 인식 가비지 컬렉션 정책을 사용하여 가비지 컬렉션을 수행하는 단계; 그리고
    상기 솔리드 스테이트 드라이브의 자유 페이지 수가 테일 대기 임계치보다 크거나 같으면 가비지 컬렉션을 수행하지 않고,
    상기 솔리드 스테이트 드라이브에 대해 쓰기 명령을 수행하는 단계,
    상기 테일 레이턴시 임계치는 상기 적시(just-in-time) 임계치보다 크고,
    상기 테일 레이턴시 인식 가비지 컬렉션 정책은 상기 쓰기 명령과 가비지 컬렉션 명령의 쌍을 이루는 물품.
KR1020170148214A 2017-01-20 2017-11-08 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 KR102538126B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762448957P 2017-01-20 2017-01-20
US62/448,957 2017-01-20
US15/461,467 2017-03-16
US15/461,467 US10261897B2 (en) 2017-01-20 2017-03-16 Tail latency aware foreground garbage collection algorithm

Publications (2)

Publication Number Publication Date
KR20180086120A true KR20180086120A (ko) 2018-07-30
KR102538126B1 KR102538126B1 (ko) 2023-05-30

Family

ID=62906956

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170148214A KR102538126B1 (ko) 2017-01-20 2017-11-08 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘

Country Status (3)

Country Link
US (1) US10261897B2 (ko)
KR (1) KR102538126B1 (ko)
CN (1) CN108334284B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037056B2 (en) 2017-11-21 2021-06-15 Distech Controls Inc. Computing device and method for inferring a predicted number of data chunks writable on a flash memory before wear out
US10956048B2 (en) * 2017-11-21 2021-03-23 Distech Controls Inc. Computing device and method for inferring a predicted number of physical blocks erased from a flash memory
US10642764B1 (en) * 2019-03-01 2020-05-05 Western Digital Technologies, Inc. Data transfer command latency of a host device
KR102304130B1 (ko) * 2019-06-07 2021-09-23 성균관대학교산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
US11899576B2 (en) * 2019-06-11 2024-02-13 Micron Technology, Inc. Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system
US11907564B2 (en) 2021-08-03 2024-02-20 Yadro International Ltd. Method of and system for initiating garbage collection requests
CN114968836A (zh) * 2022-04-19 2022-08-30 华为技术有限公司 垃圾回收的方法及电子设备
KR20240062319A (ko) * 2022-10-31 2024-05-09 삼성전자주식회사 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160070593A1 (en) * 2014-09-10 2016-03-10 Oracle International Corporation Coordinated Garbage Collection in Distributed Systems
US20180039425A1 (en) * 2016-08-02 2018-02-08 Alibaba Group Holding Limited Method and apparatus for improved flash memory storage latency and robustness

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3426385B2 (ja) 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
US5815434A (en) 1995-09-29 1998-09-29 Intel Corporation Multiple writes per a single erase for a nonvolatile memory
IL123688A (en) 1995-09-29 2000-12-06 Intel Corp Multiple-writes per a single erase for a nonvolatile memory
US20070094445A1 (en) 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
KR100970537B1 (ko) 2008-11-20 2010-07-16 서울시립대학교 산학협력단 Ssd 관리 장치 및 방법
US8463826B2 (en) * 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
JP2011128826A (ja) 2009-12-17 2011-06-30 Hitachi Ulsi Systems Co Ltd 記憶装置と半導体不揮発性メモリの記憶方法
CN103608866B (zh) 2013-03-15 2018-09-11 华为技术有限公司 用于闪存存储器的数据擦除方法及装置
CN104298606A (zh) * 2013-07-17 2015-01-21 光宝科技股份有限公司 固态存储装置中垃圾搜集动作的控制方法
CN103365788B (zh) * 2013-08-06 2016-01-13 山东大学 实时闪存转换层使用的自适应局部垃圾回收方法
US9223716B2 (en) 2013-10-04 2015-12-29 The Penn State Research Foundation Obstruction-aware cache management
KR20150121560A (ko) 2014-04-21 2015-10-29 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법
US9846650B2 (en) 2015-03-09 2017-12-19 Samsung Electronics Co., Ltd. Tail response time reduction method for SSD
US9559968B2 (en) 2015-03-23 2017-01-31 Cisco Technology, Inc. Technique for achieving low latency in data center network environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160070593A1 (en) * 2014-09-10 2016-03-10 Oracle International Corporation Coordinated Garbage Collection in Distributed Systems
US20180039425A1 (en) * 2016-08-02 2018-02-08 Alibaba Group Holding Limited Method and apparatus for improved flash memory storage latency and robustness

Also Published As

Publication number Publication date
KR102538126B1 (ko) 2023-05-30
US10261897B2 (en) 2019-04-16
CN108334284A (zh) 2018-07-27
CN108334284B (zh) 2023-07-11
US20180210825A1 (en) 2018-07-26

Similar Documents

Publication Publication Date Title
US11481144B1 (en) Techniques for directed data migration
KR102538126B1 (ko) 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘
US10346081B2 (en) Handling data block migration to efficiently utilize higher performance tiers in a multi-tier storage environment
US10140050B2 (en) Providing access information to a storage controller to determine a storage tier for storing data
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
US8478731B1 (en) Managing compression in data storage systems
US9582222B2 (en) Pre-cache similarity-based delta compression for use in a data storage system
US10671309B1 (en) Predicting usage for automated storage tiering
US11263149B2 (en) Cache management of logical-physical translation metadata
US11210231B2 (en) Cache management using a bucket-partitioned hash table
US9176881B2 (en) Computer system and storage control method
US10684947B2 (en) Increasing high performance data storage utilization by reducing write operations
US11204870B2 (en) Techniques for determining and using caching scores for cached data
US20170115922A1 (en) Tiered storage system, storage controller, and method for deduplication and storage tiering
US10997080B1 (en) Method and system for address table cache management based on correlation metric of first logical address and second logical address, wherein the correlation metric is incremented and decremented based on receive order of the first logical address and the second logical address
US9183127B2 (en) Sequential block allocation in a memory
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
US11093134B2 (en) Storage device, management method, and program in tiered storage system
US11630779B2 (en) Hybrid storage device with three-level memory mapping
US11494303B1 (en) Data storage system with adaptive, memory-efficient cache flushing structure
US20240111429A1 (en) Techniques for collecting and utilizing activity metrics
KR20240006450A (ko) 스토리지 장치에서 리클레임 유닛 형성 및 선택을 위한시스템들, 방법들 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant