KR102259249B1 - Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법 - Google Patents

Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법 Download PDF

Info

Publication number
KR102259249B1
KR102259249B1 KR1020170100535A KR20170100535A KR102259249B1 KR 102259249 B1 KR102259249 B1 KR 102259249B1 KR 1020170100535 A KR1020170100535 A KR 1020170100535A KR 20170100535 A KR20170100535 A KR 20170100535A KR 102259249 B1 KR102259249 B1 KR 102259249B1
Authority
KR
South Korea
Prior art keywords
solid state
storage device
latency
read
latency threshold
Prior art date
Application number
KR1020170100535A
Other languages
English (en)
Other versions
KR20180037098A (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 KR20180037098A publication Critical patent/KR20180037098A/ko
Application granted granted Critical
Publication of KR102259249B1 publication Critical patent/KR102259249B1/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
    • 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
    • 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/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

스토리지 시스템은 솔리드 스테이트 드라이브들의 롱 레이턴시 영향을 완화시킨다. 상기 시스템은 호스트 및 복수의 솔리드 스테이트 드라이브들을 포함한다. 상기 호스트는 각 솔리드 스테이트 드라이브에 레이턴시 드레솔드를 설정한다. 각 솔리드 스테이트 드라이브는 실행 시간이 레이턴시 드레솔드를 초과할 때 독출 명령을 중지할 수 있고, 호스트는 동일한 독출 명령을 다른 솔리드 스테이트 드라이브로 전송한다.

Description

SSD 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법{METHOD FOR READ LATENCY BOUND IN SSD STORAGE SYSTEMS}
본 발명에 따른 하나 이상의 양상들은 독출 레이턴시(read latency)에 관한 것으로, 좀 더 구체적으로는, 솔리드 스테이트 드라이브들(solid state drives)을 포함하는 스토리지 시스템에서 독출 레이턴시를 제어하기 위한 시스템 및 방법에 관한 것이다.
솔리드 스테이트 드라이브에서 독출 명령을 실행하는 프로세스는 실행 시간을 변화시키는 것을 요구할 수 있는 동작들을 포함할 수 있고, 독출 동작들의 작은 부분은 "롱 레이턴시 테일(long latency tail)"이라고 불리는 독출 레이턴시 분포의 긴 대역 아래에 놓일 수 있다. 그 결과, 독출 명령의 실행은 때때로 독출 명령이 시작된 호스트 애플리케이션의 성능을 손상시키기에 충분히 길 수 있다.
따라서, 솔리드 스테이트 드라이브들에서 변화하는 독출 명령 실행 시간의 영향을 경감시키기 위한 시스템 및 방법이 필요하다.
따라서 본 발명은 사용자 데이터에 대해 빠르고 신뢰성있는 액세스를 제공할 수 있는 스토리지 시스템을 제공하는데 있다.
본 개시의 실시예는 솔리드 스테이트 드라이브들에서 롱 레이턴시 테일의 영향을 완화하도록 구성된 스토리지 시스템을 제공한다. 시스템은 호스트 및 복수의 솔리드 스테이트 드라이브들을 포함한다. 상기 호스트는 각 솔리드 스테이트 드라이브에 레이턴시 드레솔드를 설정한다. 각 솔리드 스테이트 드라이브는 실행 시간이 레이턴시 드레솔드를 초과할 때 독출 명령을 중지할 수 있고, 호스트는 동일한 독출 명령을 다른 솔리드 스테이트 드라이브로 전송한다.
본 발명의 실시예에 따르면, 복수의 스토리지 장치들을 포함하는 스토리지 풀로부터 호스트에 의해서 데이터를 독출하는 방법은: 상기 복수의 스토리지 장치들 중 제1 스토리지 장치에 의해서 독출 명령을 수신하는 단계, 및 상기 독출 명령에 레이턴시 드레솔드가 설정되어 있을 때: 상기 제1 스토리지 장치에 의해서, 상기 독출 명령을 수신하면 타이머를 시작하는 단계, 상기 제1 스토리지 장치에 의해서, 상기 제1 스토리지 장치 내 독출 동작을 초기화하는 단계, 상기 독출 명령이 완료되면, 상기 타이머에 따라서, 레이턴시 드레솔드 미만의 시간 간격이 경과한 경우, 상기 제1 스토리지 장치에 의해서, 상기 독출 동작의 결과들을 포함하는 명령 완료 엔트리를 리턴하는 단계, 및 상기 독출 명령이 완료되지 않으면, 상기 타이머에 따라서, 상기 레이턴시 드레솔드 이상의 시간 간격이 경과한 경우: 상기 제1 스토리지 장치에 의해서, 상기 독출 동작을 중지하는 단계 및 상기 제1 스토리지 장치에 의해서, 상기 레이턴시 드레솔드가 초과되었음을 나타내는 명령 완료 엔트리를 리턴하는 단계를 포함한다.
일 실시예에서, 상기 방법은, 상기 호스트에 의해서, 상기 레이턴시 드레솔드 비트가 설정된 상기 독출 명령을 상기 제1 스토리지 장치로 전송하는 단계, 및 상기 제1 스토리지 장치에 의해서 상기 독출 명령이 중지될 때, 상기 독출 명령을 상기 복수의 스토리지 장치들 중 제2 스토리지 장치로 전송하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제2 스토리지 장치에 의해서 상기 독출 동작이 중지될 때, 상기 레이턴시 드레솔드가 설정된 상기 독출 명령을 상기 복수의 스토리지 장치들 중 제3 스토리지 장치로 전송하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 상기 제3 스토리지 장치에 의해서 상기 독출 동작이 중지될 때, 상기 레이턴시 드레솔드 비트가 설정되지 않은 독출 명령을 상기 제1 스토리지 장치, 상기 제2 스토리지 장치 및 상기 제3 스토리지 장치 중 하나의 스토리지 장치로 전송하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 호스트에 의해서, 상기 제1 스토리지 장치가 레이턴시 드레솔드 특성을 지원하는 지의 여부를 판별하기 위해 질의하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제1 스토리지 장치가 상기 레이턴시 드레솔드 특성을 지원할 때 상기 제1 스토리지 장치로 상기 레이턴시 드레솔드를 전송하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제1 스토리지 장치가 상기 레이턴시 드레솔드 특성을 지원할 때 복수의 스토리지 영역들 각각에 대응하는 복수의 레이턴시 드레솔드들을 상기 제1 스토리지 장치로 전송하는 단계를 더 포함한다.
일 실시예에서, 상기 독출 명령은 상기 복수의 스토리지 영역들 중 하나의 스토리지 영역 내의 어드레스들의 범위를 특정하고, 그리고 상기 레이턴시 드레솔드는 상기 스토리지 영역에 대응하는 레이턴시 드레솔드이다.
일 실시예에서, 상기 복수의 스토리지 영역들 각각은 논리 블록 어드레스들 또는 네임스페이스에 의해서 정의된다.
일 실시예에서, 상기 스토리지 장치는 솔리드 스테이트 드라이브이다.
일 실시예에서, 상기 방법은 상기 제1 스토리지 장치에 의해서, 상기 제1 스토리지 장치의 성능을 나타내는 통계적 데이터를 발생하기 위한 자동-셀프-특성화하는 단계, 및 공급 업체 특정 로그 페이지들에서 상기 통계 데이터를 상기 호스트에 이용 가능하게 하는 단계를 더 포함하고, 상기 자동-셀프-특성화 단계는 동작 동안 독출 레이턴시들을 모니터링 및 기록하는 것을 포함한다.
본 발명의 일 실시예에 따르면, 솔리드 스테이트 드라이브는, 솔리드 스테이트 드라이브 제어 회로, 및 하나 이상의 플래시 메모리 다이들을 포함하는 플래시 메모리를 포함한다. 상기 솔리드 스테이트 드라이브 제어 회로는, 독출 명령을 수신하고, 상기 독출 명령 내 레이턴시 드레솔드 비트가 설정되어 있는 경우, 상기 독출 명령이 수신되면 타이머를 시작하고, 상기 솔리드 스테이트 드라이브 내 독출 동작을 초기화하고, 상기 독출 동작이 완료되면, 상기 타이머에 따라서, 레이턴시 드레솔드 미만의 시간 간격이 경과한 경우: 상기 독출 동작의 결과를 포함하는 명령 완료 엔트리를 리턴하고, 그리고 상기 독출 동작이 완료되지 않으면, 상기 타이머에 따라서, 레이턴시 드레솔드 이상의 시간 간격이 경과한 경우: 상기 독출 동작을 중단하고, 그리고 상기 레이턴시 드레솔드가 초과되었음을 나타내는 명령 완료 엔트리를 리턴한다.
일 실시예에서, 상기 솔리드 스테이트 제어 회로는, 상기 솔리드 스토리지 장치가 레이턴시 드레솔드 특성을 지원하는 지의 여부를 판별하기 위한 질의가 수신될 때 상기 솔리드 스테이트 드라이브가 상기 레이턴시 드레솔드 특성을 나타내는 응답을 리턴하는 것을 더 포함한다.
일 실시예에서, 상기 솔리드 스테이트 제어 회로는, 상기 독출 명령 내 상기 레이턴시 드레솔드 비트가 설정되지 않았을 때 상기 솔리드 스테이트 드라이브 내 독출 명령을 실행하고, 상기 독출 동작의 결과들을 포함하는 명령 완료 엔트리를 리턴한다.
일 실시예에서, 상기 솔리드 스테이트 제어 회로는, 레이턴시 드레솔드를 설정하는 명령이 수신될 때 상기 레이턴시 드레솔드를 저장한다.
일 실시예에서, 상기 솔리드 스테이트 제어 회로는, 복수의 스토리지 영역들에 각각 대응하는 복수의 레이턴시 드레솔드들을 포함하고, 상기 복수의 레이턴시 드레솔드들을 저장한다.
일 실시예에서, 상기 솔리드 스테이트 제어 회로는, 상기 독출 명령이 상기 복수의 스토리지 영역들 중 스토리지 영역 내 어드레스들의 범위를 특정할 때, 대응하는 스토리지 영역의 레이턴시 드레솔드에 근거해서 시간 간격이 상기 레이턴시 드레솔드와 같은 지의 여부를 판별하는 것을 더 포함한다.
본 발명의 실시예에 따른 시스템은, 호스트 및 복수의 솔리드 스테이트 드라이브들을 포함한다. 상기 호스트는, 상기 복수의 솔리드 스테이트 드라이브들 중 제1 솔리드 스테이트 드라이브로 레이턴시 드레솔드 비트가 설정된 상기 레이턴시 드레솔드 비트를 포함하는 독출 명령을 전송하고, 상기 제1 솔리드 스테이트 드라이브는 상기 독출 명령을 수신하고, 상기 독출 명령이 수신될 때 타이머를 시작하고, 상기 솔리드 스테이트 드라이브 내 독출 동작을 초기화한다. 상기 독출 동작이 완료되면, 상기 타이머에 따라서, 레이턴시 드레솔드 미만의 시간 간격이 경과했을 때: 상기 독출 동작의 결과들을 포함하는 명령 완료 엔트리를 리턴하고, 그리고 상기 독출 동작이 완료되지 않으면, 상기 타이머에 따라서, 레이턴시 드레솔드 이상의 시간 간격이 경과했을 때: 상기 독출 동작을 중단하고, 그리고 상기 레이턴시 드레솔드가 초과되었음을 나타내는 명령 완료 엔트리를 리턴한다.
일 실시예에서, 상기 호스트는 상기 독출 동작이 상기 제1 솔리드 스테이트 드라이브에 의해서 중단되었을 때, 상기 레이턴시 드레솔드 비트가 설정된 독출 명령을 상기 복수의 솔리드 스테이트 드라이브들 중 제2 솔리드 스테이트 드라이브로 전송한다.
일 실시예에서, 상기 호스트는 상기 독출 동작이 상기 제2 솔리드 스테이트 드라이브에 의해서 중단되었을 때, 상기 레이턴시 드레솔드 비트가 설정된 독출 명령을 상기 복수의 솔리드 스테이트 드라이브들 중 제3 솔리드 스테이트 드라이브로 전송한다.
일 실시예에서, 상기 호스트는 상기 독출 동작이 상기 제3 솔리드 스테이트 드라이브에 의해서 중단되었을 때, 상기 레이턴시 드레솔드 비트가 설정되지 않은 독출 명령을 제1 솔리드 스테이트 드라이브, 제2 솔리드 스테이트 드라이브 및 제3 솔리드 스테이트 드라이브 중 하나의 스토리지 장치로 전송한다.
본 발명의 스토리지 시스템은 솔리드 스테이트 드라이브들의 롱 레이턴시 영향을 완화시킬 수 있다.
본 발명의 특징들은 상세한 설명, 청구 범위 및 첨부 도면들을 참조하여 이해되고 이해될 것이다.
도 1은 본 발명의 실시예에 따른 정보 기술 시스템의 블록도이다.
도 2는 본 발명의 실시예에 따른 솔리드 스테이트 드라이브의 블록도이다.
도 3a는 본 발명의 실시예에 따른 독출 레이턴시의 그래프이다.
도 3b는 본 발명의 실시예에 따른 독출 레이턴시의 백분위 그래프이다.
도 4a는 본 발명의 실시예에 따른 서버 및 솔리드 스테이트 드라이브의 블록도이다.
도 4b는 본 발명의 실시예에 따른 독출 명령에 응답하는 방법의 플로우차트이다.
도 5는 본 발명의 실시예에 따른 데이터 독출 방법의 플로우차트이다.
도 6은 본 발명의 실시예에 따른 독출 성능 통계를 나타내는 테이블이다.
도 7은 본 발명의 실시예에 따른 독출 성능 통계를 나타내는 테이블이다.
도 8은 본 발명의 실시예에 따른 독출 성능 통계를 나타내는 테이블이다.
도 9는 본 발명의 실시예에 따른 독출 성능 통계를 나타내는 테이블이다.
첨부된 도면과 관련하여 후술되는 상세한 설명은 본 발명에 따라 제공되는 솔리드 스테이트 드라이브 스토리지 시스템들에서 독출 레이턴시 바운드 방법의 예시적인 실시예들의 설명으로서 의도되며, 본 발명이 구성되거나 이용될 수 있는 단지 형태들일 뿐이다. 설명은 예시된 실시예들과 관련된 본 발명의 특징들을 설명한다. 그러나, 본 발명의 사상 및 범위 내에 포함되는 것으로 의도된 다른 실시예에 의해 동일하거나 등가의 기능들 및 구조들이 달성될 수 있음을 이해해야 한다. 본 명세서의 다른 곳에서 언급된 바와 같이, 유사한 인출 번호들은 동일한 엘리먼트들 또는 특징들을 나타내기 위한 것이다.
데이터 스토리지는 현대 정보 기술 기반 구조(information technology infrastructure)의 필수적이고 중요한 부분이다. 다양한 애플리케이션들은 방대한 양의 데이터를 생성 및 처리하여 최종 사용자에게 의미있는 서비스들을 제공한다. 이러한 많은 애플리케이션들은 중요한 임무일 수 있으며 매우 빠르고 안정적으로 데이터에 액세스해야 한다. 낮은 대기 시간(low latency), 안정성(reliability) 및 고가용성(high availability) 외에도 많은 애플리케이션들은 데이터에 액세스하기 위해 매우 결정론적(deterministic)이거나 예측 가능한(predictable) 대기 시간들에 의존한다. 데이터 스토리지 시스템들과 관련된 복잡성들로 인해 결정론적이고 예측 가능한 데이터 액세스 대기 시간들을 제공하는 것은 도전적일 수 있다.
도 1은 본 발명의 실시예에 따른 데이터 스토리지 시스템을 갖는 정보 기술 기반 구조를 도시한다. 일련의 애플리케이션 서버들(application servers, 또는 "앱 서버들(app servers)")는 최종 사용자 애플리케이션들을 실행한다. 스토리지 서버들(115)은 애플리케이션 서버들(105)에 데이터 저장 서비스들을 관리하고 제공한다. 애플리케이션 서버들(105)은 다양한 애플리케이션들을 실행하는 사용자들에 대한 프론트-엔드 인터페이스(front-end interface)이고, 관련 데이터를 액세스하여 사용자 서비스를 제공한다. 스토리지 서버들(115)은 로드 밸런서(load balancer, 110)에 의해 애플리케이션 서버들(105)에 접속될 수 있다. 스토리지 서버들(115)은 성능, 신뢰성, 백업 등과 같은 데이터 스토리지의 다양한 양상들을 관리할 수 있다. 스토리지 서버들(115)은, 예를 들어, 솔리드 스테이트 드라이브들(SSDs, 120), 하드 디스크 드라이브들(hard disk drives, HDDs) 및 테이프 드라이브들(테이프들 포함)을 포함하는 스토리지 드라이브들(또는 "저장 장치들")의 어레이를 유지한다. 스토리지 드라이브들의 어레이는 "스토리지 풀(storage pool) "이라고 불리울 수 있다. 스토리지 서버 (115)가 사용자 데이터의 특정 블록에 대한 요청을 받으면, 데이터가 어디에 위치하는 지를 판별하고, 적절한 스토리지 드라이브 또는 드라이브들로부터 데이터를 독출하고, 데이터를 애플리케이션 서버들(105)로 제공한다.
리던던시(redundancy) 목적들을 위해, 사용자 데이터의 다수의 복사본들이 유지될 수 있다. 예를 들어, 다양한 에러들로 인한 데이터 손실을 방지하기 위해 동일한 데이터의 2 개 또는 3 개의 복사본들을 유지할 수 있다. 만일 독출 명령이 스토리지 드라이브(예를 들어, 솔리드 스테이트 드라이브(120))상에서 실패하면, 스토리지 서버(115)는 데이터의 제2 또는 제3 복사본으로부터 데이터를 패치(fetch)하려고 시도하고, 데이터 리던던시의 원하는 레벨로 되돌리기 위해 데이터 복원 메커니즘을 개시한다.
도 2에 도시된 바와 같이, 각각의 솔리드 스테이트 드라이브(120)는 복수의 플래시 다이들(flash dies, 200)을 포함할(예를 들어, 구성될) 수 있는 NAND 플래시 매체(flash media)에 데이터를 저장할 수 있다. 다양한 타입의 플래시 매체들 예를 들어, 단일 레벨 셀(single level cell, SLC), 멀티 레벨 셀(multi-level cell, MLC) 또는 트리플-레벨 셀(triple-level cell, TLC) 플래시 매체가 사용될 수 있으며, 매체는 상이한 제조 공정들을 사용하여 제조될 수 있다. 결과적으로 플래시 매체의 성능 특성들이 크게 달라질 수 있다. 솔리드 스테이트 드라이브 컨트롤러(또는 "솔리드 스테이트 드라이브 제어 회로(solid state drive control circuit)")(205)는 플래시 매체를 관리하고 솔리드 스테이트 드라이브(120)가 구비된 호스트(또는 "스토리지 서버(storage server)" 또는 "스토리지 서버 호스트(storage server host)")에 데이터에 대한 액세스를 제공한다. 솔리드 스테이트 드라이브 컨트롤러(205)는 프로세싱 회로(이하 더 상세하게 설명됨)일 수 있다. 솔리드 스테이트 드라이브 컨트롤러(205)는 커넥터 및 예를 들어, 호스트 및 스토리지 장치에 의해 통상적으로 사용되는 프로토콜을 통해 저장 명령들 및 응답들을 교환하는 호스트 인터페이스(210)를 포함할 수 있다. 커넥터 및 프로토콜은 예를 들어, PCIe(Peripheral Component Interconnect Express), 이더넷(Ethernet)을 통한 RDMA(remote direct memory access), SATA(Serial Advanced Technology Attachment), 파이버 채널(Fibre Channel), SAS(Serial Attached SCSI), 비휘발성 메모리 익스프레스(Non Volatile Memory Express, NVMe), 또는 이더넷 또는 USB(Universal Serial Bus)와 같은 보다 더 범용 인터페이스에 따를 수 있다.
호스트 인터페이스(210)는 스토리지 서버 호스트가 솔리드 스테이트 드라이브(120)와 통신하는데 사용된다. 데이터 독출 및 데이터 기입 명령들과 같은 입출력(IO) 명령들은 물론 다양한 매체 관리 명령들(예를 들어, Identify, Get Log 등)은 호스트 인터페이스(210)를 통해 호스트에 의해 솔리드 스테이트 드라이브(120)로 전송될 수 있다. 동일한 인터페이스는 솔리드 스테이트 드라이브(120)가 스토리지 서버 호스트 시스템 메모리로/로부터 데이터 전송을 수행하는데 사용될 수 있다. 플래시 변환 계층(flash translation layer, FTL)(215)은 (i) 스토리지 서버에 의해 사용되는 논리 어드레스들과 (ii) 플래시 매체 상의 데이터의 물리적 위치들 간의 매핑을 제공할 수 있다. 플래시 변환 계층(215)은 또한 가비지 콜렉션(garbage collection, GC), 웨어 레벨링(wear leveling), 불안한 셧다운들(unsafe shutdowns)로부터의 복구 등과 같은 다양한 백그라운드 동작들을 수행한다. 결과적으로 호스트 IO 명령들은 백그라운드 동작들과 공존할 수 있으며 이러한 두 가지 타입의 플래시 미디어 액세스는 플래시 미디어 리소스들(flash media resources)을 위해 서로 경쟁할 수 있다. 이는 스토리지 서버 호스트에서 발생되는 성능 레벨들(예를 들어, 독출 레이턴시 변동들)의 변동들을 야기할 수 있다. 플래시 변환 계층(215)은 내부 데이터 구조들을 칩 상에 또는 예를 들어, 칩 외부의 DRAM(dynamic random access memory)(220)에 저장할 수 있고, 이들 데이터 구조들에 대한 액세스는 독출 레이턴시 변동들의 원인이 될 수 있는 자체 성능 변동들을 가질 수 있다.
플래시 인터페이스(225)는 플래시 매체(즉, 플래시 다이들(200) 상에) 상에서 데이터 독출 및 기입 동작들을 수행한다. 플래시 매체는 이러한 동작들을 수행하기 위해 ONFI(Open NAND Flash Interface) 및 토글(Toggle)과 같은 프로토콜들을 포함한다. 또한 플래시 매체는 데이터 독출 및 기록 동작이 어떻게 수행되는지에 관한 특정 매체 특정 규칙들(certain media specific rules) 및 타이밍 파라미터들을 포함한다. 또한 플래시 인터페이스(225)는 플래시 미디어의 성능, 전력 소비 및 다른 동작 특성을 최대화(예를 들어, 개선)하도록 노력할 수 있으며, 예를 들어 데이터 인코딩 및 에러 정정을 수행하여 데이터 신뢰성을 보장함으로써 매체 에러들에 대비하여 보호할 수 있다. 본 명세서에 사용된 바와 같이, "독출 명령(read command)"은 데이터를 요구하면서 호스트에 의해 스토리지 장치로 보내지는 명령이다; 이에 응답하여 "독출 동작(read operation)"은 예를 들어, 플래시 메모리 매체로부터 데이터를 페치(fetch)하는 것을 포함할 수 있는 스토리지 장치에 의해 내부적으로 수행되는 동작이다.
상술한 바와 같이, 스토리지 서버들은 사용자 데이터에 대해 빠르고 신뢰성있는 액세스를 제공하도록 설계된다. 스토리지 성능은 처리량(throughput) 및 레이턴시(latency) 면에서 볼 수 있다. 데이터 액세스의 레이턴시는 데이터 요청에서 실제 데이터 가용성(availability)까지 걸리는 시간이다. 도 3a는 플래시 매체의 다양한 예들에 대한 독출 레이턴시의 통계적 분포를 로그 스케일(logarithmic scale)로 도시하고, 도 3b는 대응 백분위(예를 들어, 누적) 데이터를 도시한다. 사용자 데이터를 애플리케이션 서버들에 다시 제공하기 위해, 스토리지 서브시스템 내 스토리지 서버, 솔리드 스테이트 드라이브 컨트롤러들 및 기타 컴포넌트들에 의해 여러 기능들을 수행하는 것이 필요하다. 상술한 바와 같이, 이들 기능들은 가변적인 시간을 취할 수 있고, 따라서 전체 데이터 독출 레이턴시는 광범위하게 변할 수 있다. 예를 들어, 독출 레이턴시는 솔리드 스테이트 드라이브 스토리지 시스템들에서 수 마이크로 초에서 수 밀리 초 범위일 수 있다. 레이턴시에 민감한 일부 애플리케이션들의 경우 광범위한 독출 레이턴시가 허용되지 않을 수 있고, 그러한 애플리케이션들은 독출 레이턴시에 대한 결정론적(deterministic) 상계(upper bound)에 의존할 수 있다.
솔리드 스테이트 드라이브들의 경우, 레이턴시에 민감한 애플리케이션들에 적합한 비교적 짧은 시간(예를 들어, 100us) 내에 독출 동작들의 다수(예를 들어, 95%)가 완료될 수 있으나, 독출 명령들의 나머지는 완료되는데 예를 들어, 수 밀리 초와 같이, 상당히 더 오래 걸릴 수 있다. 이 성능 특성은 롱 레이턴시 테일(long latency tail)이라고 할 수 있다. 예를 들어, 도 3b의 백분위 그래프를 참조하면, 100 마이크로 초(us)에서 99 % 레이턴시 백분위 수는 독출 명령들의 99 %가 100us 내에서 완료될 것으로 예상될 수 있음을 나타낸다. 독출 명령들의 나머지 1%는 롱 레이턴시 테일에 포함될 것으로, 즉, 완료되는데 100us 이상 수 밀리 초까지 걸릴 것으로 예상될 수 있다.
일부 실시예들에서, 솔리드 스테이트 드라이브는 독출 명령이 완료되는데 걸리는 시간을 모니터링하고 기록한다. 솔리드 스테이트 드라이브는 드레솔드(threshold) 시간 또는 "레이턴시 드레솔드(latency threshold)"보다 오래 걸리면 독출 동작을 중단할 수 있다. 이러한 동작을 "레이턴시 드레솔드 특성(latency threshold feature)"이라고 한다. 그런 다음 스토리지 서버는 다른 솔리드 스테이트 드라이브로 독출 명령을 보낼 수 있다. 만일 레이턴시 드레솔드 내의 두 번째 시도에서 독출 명령이 성공적으로 완료되면, 독출 명령이 실행되는데 걸린 총 시간은 기껏해야 최대 레이턴시 드레솔드의 두 배이다. 또한, 제1 또는 제2 독출 시도가 레이턴시 드레솔드 내에서 완료될 가능성은, 이하에서 더 상세히 설명되는 바와 같이, 상당히 높을 수 있다. 이와 같이, 본 발명의 실시예들은 독출 명령이 설정된 시간, 예를 들어, 설정된 레이턴시 드레솔드의 2배 또는 3배 내에서 실행될 확률을 보장하는 시스템 및 방법을 제공한다.
솔리드 스테이트 드라이브는 그것이 레이턴시 드레솔드 특성을 지원하는지 여부를 표시하기 위해 식별 데이터 구조(Identify data structure)를 사용할 수 있다. 예를 들어, 4096 바이트의 식별 데이터 구조는 NVMe(NVM Express)표준, Revision 1.2a (nvmexpress.org에서 사용 가능한 "NVMe 표준" 및 본 명세서에 참조로 통합되어 있음)의 섹션 5.11에 정의되어 있다. NVMe 식별 데이터 구조는 공급 업체(예를 들어, 솔리드 스테이트 드라이브의 공급 업체)를 식별하기 위한 필드(field) 및 지정되거나(reserved) 또는 비 사용된(unused) 추가 필드들을 포함하여, 솔리드 스테이트 드라이브가 레이턴시 드레솔드 특성을 지원하는 지의 여부에 대한 표시를 포함하는 것으로 공급 업체에서 정의할 수 있다. 따라서, 호스트는 솔리드 스테이트 드라이브가 레이턴시 드레솔드 특성을 지원하는지 여부를 이들 필드들의 조합으로부터 추론할 수 있다.
만일 솔리드 스테이트 드라이브가 레이턴시 드레솔드 특성을 지원하면, 스토리지 서버에서 동작하는 시스템 소프트웨어는 레이턴시 드레솔드를 갖는 솔리드 스테이트 드라이브를 구성할 수 있다. 이러한 레이턴스 드레솔드는 솔리드 스테이트 드라이브의 특성들에 기초할 수 있고, 따라서 그 드레솔드 내에서 완료될 것으로 예상되는 독출 명령들의 백분율에 대응한다. 예를 들어, 시스템에 사용된 솔리드 스테이트 드라이브가 100us 레이턴시에서 99%의 레이턴시 백분위를 제공한다면, 솔리드 스테이트 드라이브는 수신하고 실행하는 독출 명령들의 99%에 대해 100us의 최대 독출 레이턴시를 나타낼 것으로 예상될 수 있다. 또한 솔리드 스테이트 드라이브는 수신하고 실행하는 독출 명령들의 1%에 대해 100us 이상(잠재적으로 수 밀리 초까지)의 독출 레이턴시를 나타낼 것으로 예상된다.
시스템 소프트웨어는 솔리드 스테이트 드라이브에 대한 데이터 시트들로부터 솔리드 스테이트 드라이브의 레이턴시 백분위 데이터를 소유할 수 있거나, 또는 시스템 소프트웨어는 솔리드 스테이트 드라이브에 대한 테스트를 수행하여 이 정보를 얻을 수 있다. 일부 실시예들에서, 솔리드 스테이트 드라이브는 독출 명령 처리를 모니터링하고 레이턴시들을 기록하여 레이턴시 분포 및 레이턴시 백분위 데이터를 생성한다. 즉, 솔리드 스테이트 드라이브는 정상 동작 중에 자동-셀프 특성화(auto-self-characterize)할 수 있다. 이러한 셀프-특성화의 결과들(즉, 독출 레이턴시 분포 및 백분위 데이터)을 공급 업체 특정 로그 페이지들을 통해 시스템 소프트웨어에서 사용할 수 있다.
도 4a를 참조하면, 리셋 후에, 시스템 소프트웨어(405)는 솔리드 스테이트 드라이브들(120)이 레이턴시 드레솔드 특성을 지원 하는지를 체크하기 위해 시스템 내 모든 솔리드 스테이트 드라이브들(120)에 질의할 수 있다(예를 들어, 각각으로부터 식별 데이터 구조를 요청함). 만일 솔리드 스테이트 드라이브들(120)이 이 특성을 지원하면, 시스템 소프트웨어는 각각의 솔리드 스테이트 드라이브(120)에 대한 레이턴시 드레솔드를 구성한다. 그 다음, 각각의 독출 명령에 대해, 본 명세서에서 "레이턴시 드레솔드 비트(latency threshold bit)"로 지칭되는 독출 명령 내 비트를 세팅함으로써 레이턴시 드레솔드 한계가 적용되어야 하는지 여부를 나타낸다. 독출 명령의 예비 비트는 이 용도로 사용할 수 있다. 예컨대, NVMe 독출 명령에서, 명령(Dword 0)의 비트 10에서 비트 13까지는(예들 들어, 비트 10, 비트 11, 비트 12 및 비트 13) 사용되지 않으며, 이 4 개의 비트들 중 하나는 레이턴시 드레솔드 비트로 사용될 수 있다. 어떤 경우에는, 이하 상세히 설명되는 바와 같이, 예를 들어, 데이터 복구 에러 핸들링을 위해 레이턴시 드레솔드 비트를 설정하지 않는 것이 바람직할 수 있다.
도 4b를 참조하면, 동작(410)에서 솔리드 스테이드 드라이브 컨트롤러에 의해서 독출 명령이 수신되면, 동작(415)에서 레이턴시 드레솔드 비트가 그 명령 내 설정되어 있는 지의 여부가 체크된다. 만일 독출 명령이 레이턴시 드레솔드에 대해 인에이블되면(즉, 레이턴시 드레솔드 비트가 설정되면), 동작(420)에서 솔리드 스테이드 드라이브 컨트롤러는 명령에 대해 생성된 명령 실행 콘텍스트 내의 명령에 대한 레이턴시 타이머를 시작한다. 이러한 레이턴시 타이머는 하드웨어 또는 펌웨어로 구현될 수 있다. 동작(425)에서 솔리드 스테이드 드라이브 컨트롤러는 타이머를 주기적으로 업데이트하고, 동작(430)에서 액티브 독출 명령들 각각에 대한 레이턴시 타이머를 체크한다. 동작(430)에서 솔리드 스테이트 드라이브 컨트롤러가, 독출 명령이 레이턴시 드레솔드를 초과하는 시간을 취한 것으로 판별하면, 동작(435)에서 솔리드 스테이트 드라이브(120)는 독출 명령을 내부적으로 중단하고, 동작(440)에서 호스트로 반환된 명령 완료 큐 엔트리(command completion queue entry)(또는 명령 완료 엔트리(command completion entry))에서 "레이턴시 드레솔드 초과(latency threshold exceeded)"로 불리는 에러 상태 코드(error status code)를 호스트로 반환한다. 반대로, 명령이 중단되지 않으면, 동작(445)에서 독출 명령 실행은 시작하고, 예컨대, 동작(450)의 논리 주소 변환, 동작(455)의 플래시 매체로부터의 데이터 페치(fetch), 동작(460)의 임의의 에러 정정 수행, 동작(465)의 호스트로 데이터 전송 및 동작(470)의 정상적인 명령 완료 엔트리 포스팅을 포함하는 동작들(450-470)에서 성공적으로 완료된다. 레이턴시 드레솔드가 초과되었기 때문에 독출 명령이 중지되었음을 나타내는데 사용되는 명령 완료 상태 값은 임의의 다른 적절한 미사용된 값, 예를 들어 57h (즉, 0x57 또는 16 진수 57)일 수 있다.
도 5는 일 실시예에서 스토리지 서버의 동작들에 대한 플로우차트를 도시한다. 스토리지 서버는 동작(505)에서 초기에 솔리드 스테이트 드라이브들 각각의 레이턴시 드레솔드를 설정할 수 있다. 그런 다음, 스토리지 서버는 동작(510)에서, 레이턴시 드레솔드 비트가 설정된 독출 명령을 발생시킬 수 있다. 동작(515)에서 시스템 소프트웨어가, 명령 완료 엔트리 내의 에러 상태 코드를 초과하는 레이턴시 드레솔드와 마주치면, 동작(520)에서 레이턴시 드레솔드 비트가 설정된 동일한 독출 명령을 다른 솔리드 스테이트 드라이브 내 제2 스토리지로 보낸다. 두 번째 독출 시도가 성공적으로 완료되면, 첫 번째 실패한 시도와 두 번째 성공한 시도를 포함하여 독출 명령 실행에 대한 총 레이턴시는 솔리드 스테이트 드라이브들 각각의 두 레이턴시 드레솔드들의 합보다 작거나 같을 수 있다. 예를 들어, 두 레이턴시 드레솔드들이 100us인 경우, 독출 명령 실행에 대한 총 레이턴시는 200us 미만이 될 수 있고, 롱 레이턴시 테일을 갖는 솔리드 스테이트 드라이브에 대한 최악의 레이턴시보다 현저히 적을 수 있다. 독출 명령들의 99 %가 레이턴시 드레솔드 내에서 성공적으로 완료되면, 첫 번째 시도 및 두 번째 시도에서 모두 실패하는 것은 극히 일부에 지나지 않는다(예를 들어, 2 개의 솔리드 스테이트 드라이브들의 레이턴시들이 상관 관계가 없는 경우 0.01 %).
다른 실시예에서, 동작(430)에서, 솔리드 스테이트 드라이브 컨트롤러가, 독출 명령이 레이턴시 드레솔드를 초과하는 시간이 걸리는 것으로 판별하면, 솔리드 스테이트 드라이브(120)는 에러 상태 코드를 리턴하나 내부적으로 독출 명령을 중지하지 않고, 대신 독출 명령을 완료하는 것을 계속 시도한다. 그 다음 호스트는 다른 솔리드 스테이트 드라이브 내 제2 저장 복사본에 독출 명령을 전송하고, 먼저 독출 명령을 완료하는 솔리드 스테이트 드라이브가 리턴한 데이터를 사용한다.
에러 상태 코드를 초과하는 레이턴시 드레솔드를 사용하여, 시스템 소프트웨어는 레이턴시 드레솔드를 초과하는 솔리드 스테이트 드라이브로 인한 실패 원인을 알 수 있다. 그런 다음 독출이 성공할 때까지 또는 시스템 내 모든 데이터 복사본들이 모두 소모될 때까지 동일한 절차를 반복할 수 있다. 각각의 독출 시도마다, 독출 성공 확률은 기하 급수적으로 증가하고 대기 시간은 선형적으로 증가한다. 스토리지 시스템은 예를 들어, 최대한으로 잡아서 3 개의 데이터 복사본들을 가질 수 있고, 그러한 시스템에서 세 번째 시도 후에 절차가 중단될 수 있다. 예를 들어, 도 5의 동작(525)에서, 시스템 소프트웨어가 명령 완료 엔트리 내의 에러 상태 코드를 초과하는 레이턴시 드레솔드와 마주치면, 동작(530)에서, 레이턴시 드레솔드 비트가 설정된 동일한 독출 명령을 다른 솔리드 스테이트 드라이브 내 제3 저장 복사본으로 보낸다. 만일 (동작(535)에서 시스템 소프트웨어에 의한 판별 결과), 마지막 시도에서도 독출이 실패하면, 동작(540)에서 에러 예외(error exception)로서 취급될 수 있고 저장 서버 호스트는 데이터 복구 에러 처리 절차를 시작할 수 있다.
이 상황에서, 데이터를 검색하는데 예외적으로 긴 시간이 걸렸지만, 데이터가 여전히 복사본들 중 적어도 하나에 존재한다는 것이 시스템 소프트웨어에 알려져 있다. 이어서, 동작(545)에서, 시스템 소프트웨어는 레이턴시 제한이 없는(즉, 레이턴시 드레솔드 비트가 설정되지 않은) 독출 요청을 포스팅하여, 솔리드 스테이트 드라이브가 독출 명령이 완료되는데 필요한 만큼의 시간을 가질 수 있게 할 수 있고, 동작(550)에서, 종래의 독출 흐름들에서와 같이, 임의의 후속 에러가 처리된다. 솔리드 스테이트 드라이브들의 적절한 선택(예를 들어, 적합한 독출 레이턴시 성능을 갖는 솔리드 스테이트 드라이브들 선택에 의해서), 레이턴시 드레솔드의 적절한 선택 및 충분한 수의 데이터 복사본들의 스토리지에 의해서 이러한 데이터 복구 에러 이벤트들의 비율이 작아질 수 있다. 일부 실시예들에서, 스토리지 풀(storage pool)은 여러 스토리지 드라이버를 포함하는 (예를 들어, 복수의 하드 디스크 드라이브들 및 복수의 솔리드 스테이트 드라이브들을 포함함) 하이브리드 스토리지 풀이고, 스토리지 시스템의 독출 레이턴시 통계는 스토리지 풀 내 드라이버들의 레이턴시 특성들을 반영할 수 있다. 다른 실시예에서, 패리티 기반 측정이 데이터를 재구성하는데 사용된다.
도 6 내지 도 9의 테이블들은 본 발명의 실시예들에 따른 독출 레이턴시 분포 예들을 보여준다. 레이턴시 백분위 수는 100us에서 99 %인 것으로 가정한다. 시스템은 세 개의 데이터 복사본들을 포함하는 것으로 가정한다. 도 6의 테이블은 가정된 시스템 구성에 대해, 독출들의 99.9999%가 300us의 독출 레이턴시 상한(upper bound)을 가질 것으로 예상될 수 있고, 독출 명령들의 0.0001%에 대해서만 오류 처리 예외(error handling exception)가 적용될 것으로 예상될 수 있다는 것을 보여준다.
스토리지 서버 시스템이 초당 100만번의 입출력 동작들(input output operations, IOPs)을 수행할 수 있다고 가정하면, 대응하는 테이블은 도 7에 도시된다. 이 테이블에 도시된 바와 같이, 백만 개의 명령들 중에서 하나의 독출 명령이 에러 예외를 받을 것으로 예상될 수 있다. 즉 초당 백만 번의 독출 동작들로 작동되는 시스템에 대해 초당 하나의 독출 명령이 에러 예외로 된다.
한편, 레이턴시 드레솔드 특성이 사용되지 않으면, 정상 독출 처리로, 시스템은 도 8의 테이블에 도시된 레이턴시 분포를 가질 것으로 기대될 수 있다. 솔리드 스테이트 드라이브로 전송된 독출 명령들의 99%는 100us보다 작거나 같은 레이턴시를 가질 것으로 예상되지만, 독출 명령들의 1%의 롱 테일 은 수 밀리 초(또는 "N 밀리 초")까지 연장될 수 있다.
초당 백만 번의 독출 동작들을 실행하는 시스템의 예에 있어서, 990,000 개의 명령들이 100us 레이턴시 시간 이내에 완료될 것으로 예상될 수 있지만, 10,000 개의 독출 명령들은 수 밀리 초까지의 길고 예측할 수 없는 레이턴시를 경험할 수 있다.
솔리드 스테이트 드라이브는 여러 개의 상이한 레이턴시 드레솔드들을 포함할 수 있다. 레이턴시 드레솔드는 예를 들어, 전역적으로(globally)(즉, 단일 레이턴시 드레솔드가 전체 솔리드 스테이트 드라이브에 적용될 수 있음), 논리 블록 어드레스(logical block address, LBA) 범위 마다 또는 네임스페이스(namespace) 마다 지정될 수 있다. NVMe 표준 섹션 1.6.17에서 정의된 바와 같이, 네임스페이스는 논리적 블록들로 포맷될 수 있는 비-휘발성 메모리의 양이다. 포맷될 때, 크기 n의 네임스페이스는 0에서 (n-1)까지의 논리적 블록 주소들을 갖는 논리적 블록들(logical blocks)의 모음이다. 예를 들어, 예약은 솔리드 스테이트 드라이브(예컨대, NVMe 표준의 섹션 6.1에 지정된 명령 사용) 내 네임스페이스(예를 들어, 애플리케이션에 의해서)에서 획득될 수 있고, 프로세스에서 레이턴시 드레솔드는 네임스페이스에 할당될 수 있다. 이러한 레이턴시 드레솔드는 (i) 대부분의 독출 동작들에 대한 낮은 독출 레이턴시 달성 및 (ii) 데이터 복구 에러들 방지의 상대적인 중요도 및 애플리케이션 프로그램에 맞게 조정될 수 있다. 레이턴시 드레솔드들은 예를 들어, 셋 특성들 명령(Set Features)(NVMe 표준의 섹션 14에 문서화되어 있음) 또는 데이터셋 관리 명령(Dataset Management)(NVMe 표준의 섹션 6.7에 문서화되어 있음)을 사용하여 호스트에 의해 솔리드 스테이트 드라이브에 설정될 수 있다.
앞서 설명된 내용을 감안하여 일부 실시예들에서, 호스트 및 복수의 솔리드 스테이트 드라이브들을 포함하는 스토리지 시스템은 각 솔리드 스테이트 드라이브에 레이턴시 드레솔드를 설정함으로써 롱 레이턴시 테일의 영향을 완화시킬 수 있다. 실행 시간이 레이턴시 드레솔드를 초과할 때 각 솔리드 스테이트 드라이브는 임의의 독출 명령을 중단할 수 있으며, 호스트는 동일한 독출 명령을 다른 솔리드 스테이트 드라이브로 전송할 수 있다. 이러한 방식으로, 솔리드 스테이트 드라이브에서 예외적으로 긴 실행 시간의 효과는 예외적으로 오랜 시간으로 명령의 완료를 지연시키는 대신 다른 솔리드 스테이트 드라이브로 명령을 전송하는 것일 수 있다.
"프로세싱 회로(processing circuit)"라는 용어는 데이터 또는 디지털 신호들을 처리하기 위해 채용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미하는 것으로 본 명세서에서 사용된다. 프로세싱 회로 하드웨어는 예를 들어, 주문형 집적 회로들(application specific integrated circuits, ASICs), 범용 또는 특수 목적 중앙 처리 장치들(general purpose or special purpose central processing units, CPUs), 디지털 신호 프로세서들(digital signal processors, DSPs), 그래픽 처리 장치들(graphics processing units, GPUs) 및 필드 프로그래머블 게이트 어레이들(field programmable gate arrays, FPGAs)과 같은 프로그램 가능한 논리 장치들을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이 프로세싱 회로에서, 각각의 기능은 그 기능을 수행하기 위해 구성된 즉, 배선된(hard-wired) 하드웨어 또는 비-일시적 저장 매체에 저장된 명령들을 실행하도록 구성된 CPU와 같은 범용 하드웨어에 의해 수행된다. 프로세싱 회로는 단일 인쇄 배선 기판(single printed wiring board, PWB) 상에 제조되거나 또는 다수의 상호 접속된 단일 인쇄 배선 기판들(PWBs) 상에 분산될 수 있다. 프로세싱 회로는 다른 프로세싱 회로들을 포함할 수 있다. 예를 들어, 처리 회로는 다른 처리 회로들, 예를 들면 PWB 상에 상호 접속 된 2 개의 처리 회로들, FPGA 및 CPU를 포함할 수 있다.
"제1", "제2", "제3"등의 용어는 본 명세서에서 다양한 엘리먼트들, 구성 요소들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 사용될 수 있지만, 이들 엘리먼트들, 구성 요소들, 영역들, 층들 및/또는 섹션들은 이들 용어들에 의해 제한되어서는 안 된다. 이들 용어는 하나의 엘리먼트, 구성 요소, 영역, 층 및/또는 섹션을 다른 엘리먼트, 구성 요소, 영역, 층 및/또는 섹션과 구별하기 위해 사용된다. 따라서, 이하에서 설명되는 제1 엘리먼트, 구성 요소, 영역, 층 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고 제2 엘리먼트, 구성 요소, 영역, 계층 또는 섹션으로 지칭 될 수 있다.
"아래에", "아래쪽의", "하부", "낮은", "위에" "상부" 등과 같은 공간적으로 상대적인 용어들은 설명의 편의를 위해, 도면들에 도시된 방위들에 추가하여, 하나의 요소 또는 특징과 도면에 도시된 다른 요소(들) 또는 특징(들)과의 관계를 설명하기 위해 공간적으로 관련된 용어가 사용될 수 있다. 예를 들어, 도면의 장치가 뒤집힌다면, 다른 엘리먼트들 또는 특징들에 대해 "아래에" 또는 "아래쪽의" 또는 "하부"로 기술된 엘리먼트들은 "다른 엘리먼트들 또는 특징들에 대해 "위"로 향하게 될 것이다. 따라서, "아래" 및 "아래쪽의"의 예시적인 용어들은 위와 아래의 방향 모두를 포함 할 수 있다. 장치는 다른 방향으로 향할 수 있고 (예를 들어, 90도 또는 다른 방향들로 회전될 수 있음), 본 명세서에서 사용된 공간적으로 상대적인 기술 용어는 그에 따라 해석되어야 한다. 또한, 하나의 엘리먼트 또는 층이 2 개의 엘리먼트들 또는 층들의 "사이에"있다고 언급될 때, 2 개의 엘리먼트들 또는 층들 사이의 유일한 구성 요소 또는 층, 또는 하나 이상의 개재하는 구성 요소들 또는 층들이 존재할 수도 있다.
본 명세서에서 사용된 용어는 특정 실시예들 만을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서 사용된 용어 "실질적으로", "약" 및 유사한 용어들은 근사의 용어로서 사용 된 것이지 정도(degree)의 용어로서 사용된 것은 아니며, 측정된 값 또는 계산된 값의 고유한 편차를 설명하기 위한 것으로 당업자에 의해 인식된다. 본 명세서에 사용 된 바와 같이, "주요 성분"이란 용어는 조성물의 적어도 반 중량을 구성하는 성분을 의미하고, "주요 부분"은 복수의 항목에 적용될 때, 항목의 적어도 절반을 의미한다.
본 명세서에서 사용된 단수 형태는 문맥 상 다르게 지시하지 않는 한 복수 형태를 포함하고자 한다. 본 명세서에서 사용되는 "포함하는" 및 "구비하는"이라는 용어는 명시된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 엘리먼트의 요소의 존재를 특정하는 것으로 하나 이상의 다른 특징들, 정수들, 단계들, 동작, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않음을 이해할 것이다. 않는다. 본 명세서에 사용된 바와 같이, "및/또는"이라는 용어는 하나 이상의 관련 열거된 항목의 임의 및 모든 조합을 포함한다. "적어도 하나"와 같은 표현이 엘리먼트들의 목록 앞에 있을 때 엘리먼트들 전체 목록을 수정하고 목록의 개별 엘리먼트들을 수정하지 않는다. 또한, 본 발명의 개념의 실시예를 설명할 때 "할 수 있다"를 사용하는 것은 "본 발명의 하나 이상의 실시예들"를 의미한다. 또한, "예"라는 용어는 예시(example) 또는 실례(illustration)을 의미한다. 본 명세서에 사용된 바와 같이, 용어들 "사용", "사용하는" 및 "사용된"은 각각 "활용", "활용하는" 및 "활용된"과 동의어로 간주 될 수 있다.
엘리먼트 또는 층이 다른 엘리먼트 또는 층의 "위에", "연결된", "결합된" 또는 "인접한"으로 언급될 때, 하나 이상의 개재 요소 또는 층이 존재할 수 있다. 대조적으로, 하나의 요소 또는 층이 다른 요소 또는 층에 "직접적으로", "직접적으로 연결된", "직접 결합된"또는 "바로 인접한"으로 언급 될 때, 개재하는 요소 또는 층이 존재하지 않는다.
본 명세서에 열거된 임의의 수치 범위는 열거된 범위 내에 포함되는 동일한 수치 정밀도의 모든 하위 범위를 포함하도록 의도된다. 예를 들어, "1.0 내지 10.0"의 범위에는, 지정된 최소값 1.0과 최대값 10.0의 사이의 모든 부분 범위가 포함된다. 즉, 최소값은 1.0보다 크거나 같고, 최대값은 10.0보다 작거나 같다. 본 명세서에 인용된 최대 수치 제한은 여기에 포함되는 더 낮은 모든 수치 제한을 포함하도록 의도되며, 본 명세서에 인용 된 임의의 최소 수치 제한은 여기에 포함되는 모든 더 높은 수치 제한을 포함하고자 한다.
비록 솔리드 스테이트 드라이브 스토리지 시스템 내 독출 레이턴시 바운드(bound)를 위한 방법의 예시적인 실시예들이 본 명세서에 구체적으로 기술되고 예시되었지만, 많은 변형들 및 변경들이 당업자에게 명백 할 것이다. 따라서, 본 발명의 원리에 따라 구성된 솔리드 스테이트 드라이브 스토리지 시스템들의 독출 레이턴시 바운드에 대한 방법은 본 명세서에 구체적으로 설명된 것 이외에 구현 될 수 있음을 이해해야 한다. 본 발명은 또한 다음의 특허청구범위 및 그 등가물들에서 정의된다.
105: 앱 서버
100: 로드 밸런서
115: 스토리지 서버
120: SSD
200: 플래시 다이
205: 솔리드 스테이트 드라이브 컨트롤러
210: 호스트 인터페이스
215: FTL
220: DRAM
225: 플래시 인터페이스

Claims (10)

  1. 복수의 스토리지 장치들을 포함하는 스토리지 풀로부터 호스트에 의해서 데이터를 독출하는 방법에 있어서:
    복수의 스토리지 영역들 각각에 대응하는 복수의 레이턴시 드레솔드들을 상기 복수의 스토리지 장치들의 제1 스토리지 장치에 전송하는 단계;
    상기 제1 스토리지 장치에 의해서 독출 명령을 수신하는 단계; 및
    상기 독출 명령에 레이턴시 드레솔드 비트가 설정되어 있을 때:
    상기 제1 스토리지 장치에 의해서, 상기 독출 명령을 수신하면 타이머를 시작하는 단계;
    상기 제1 스토리지 장치에 의해서, 상기 제1 스토리지 장치 내 독출 동작을 개시하는 단계;
    상기 타이머에 따라서, 레이턴시 드레솔드 미만의 시간 간격이 경과한 때 상기 독출 동작이 완료되는 경우:
    상기 제1 스토리지 장치에 의해서, 상기 독출 동작의 결과들을 포함하는 명령 완료 엔트리를 리턴하는 단계; 및
    상기 타이머에 따라서, 상기 레이턴시 드레솔드 이상의 시간 간격이 경과한 때 상기 독출 동작이 완료되지 않는 경우:
    상기 제1 스토리지 장치에 의해서, 상기 독출 동작을 중지하는 단계; 및
    상기 제1 스토리지 장치에 의해서, 상기 레이턴시 드레솔드가 초과되었음을 나타내는 명령 완료 엔트리를 리턴하는 단계를 포함하는 것을 특징으로 하는 데이터 독출 방법.
  2. 제 1 항에 있어서,
    상기 호스트에 의해서, 상기 레이턴시 드레솔드 비트가 설정된 상기 독출 명령을 상기 제1 스토리지 장치로 전송하는 단계; 및
    상기 제1 스토리지 장치에 의해서 상기 독출 명령이 중지될 때, 상기 독출 명령을 상기 복수의 스토리지 장치들 중 제2 스토리지 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 독출 방법.
  3. 제 2 항에 있어서,
    상기 제2 스토리지 장치에 의해서 상기 독출 동작이 중지될 때, 상기 레이턴시 드레솔드가 설정된 상기 독출 명령을 상기 복수의 스토리지 장치들 중 제3 스토리지 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 독출 방법.
  4. 제 3 항에 있어서,
    상기 제3 스토리지 장치에 의해서 상기 독출 동작이 중지될 때, 상기 레이턴시 드레솔드 비트가 설정되지 않은 독출 명령을 상기 제1 스토리지 장치, 상기 제2 스토리지 장치 및 상기 제3 스토리지 장치 중 하나의 스토리지 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 독출 방법.
  5. 제 1 항에 있어서,
    상기 호스트에 의해서, 상기 제1 스토리지 장치가 레이턴시 드레솔드 특성을 지원하는 지의 여부를 판별하기 위해 질의하는 단계를 더 포함하는 것을 특징으로 하는 데이터 독출 방법.
  6. 제 5 항에 있어서,
    상기 제1 스토리지 장치가 상기 레이턴시 드레솔드 특성을 지원할 때 상기 제1 스토리지 장치로 상기 레이턴시 드레솔드를 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 독출 방법.
  7. 제 1 항에 있어서,
    상기 독출 명령은 상기 복수의 스토리지 영역들 중 하나의 스토리지 영역 내의 어드레스들의 범위를 특정하고; 그리고
    상기 레이턴시 드레솔드는 상기 스토리지 영역에 대응하는 레이턴시 드레솔드인 것을 특징으로 하는 데이터 독출 방법.
  8. 제 1 항에 있어서,
    상기 제1 스토리지 장치는 솔리드 스테이트 드라이브인 데이터 독출 방법.
  9. 솔리드 스테이트 드라이브 제어 회로; 및
    하나 이상의 플래시 메모리 다이들을 포함하는 플래시 메모리를 포함하고,
    상기 솔리드 스테이트 드라이브 제어 회로는,
    솔리드 스테이트 드라이브에서 복수의 각각의 스토리지의 영역들에 대응하는 복수의 레이턴시 드레솔드들이 포함된 명령을 수신하고,
    상기 복수의 레이턴시 드레솔드들을 저장하고,
    호스트로부터 독출 명령을 수신하고,
    상기 독출 명령 내 레이턴시 드레솔드 비트가 설정되어 있는 경우,
    상기 독출 명령이 수신되면 타이머를 시작하고,
    상기 솔리드 스테이트 드라이브 내 독출 동작을 개시하고,
    상기 타이머에 따라서, 레이턴시 드레솔드 미만의 시간 간격이 경과한 때 상기 독출 동작이 완료되는 경우:
    상기 독출 동작의 결과를 포함하는 명령 완료 엔트리를 리턴하고; 그리고
    상기 타이머에 따라서, 레이턴시 드레솔드 이상의 시간 간격이 경과한 때 상기 독출 동작이 완료되지 않는 경우:
    상기 독출 동작을 중단하고; 그리고
    상기 레이턴시 드레솔드가 초과되었음을 나타내는 명령 완료 엔트리를 리턴하는 것을 특징으로 하는 솔리드 스테이트 드라이브.
  10. 제 9 항에 있어서,
    상기 솔리드 스테이트 드라이브 제어 회로는,
    상기 솔리드 스테이트 드라이브가 레이턴시 드레솔드 특성을 지원하는 지에 관한 질의를 수신할 때,
    상기 솔리드 스테이트 드라이브가 상기 레이턴시 드레솔드 특성을 지지하는 것을 나타내는 응답을 리턴하도록 구성되는 것을 특징으로 하는 솔리드 스테이트 드라이브.
KR1020170100535A 2016-10-03 2017-08-08 Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법 KR102259249B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662403624P 2016-10-03 2016-10-03
US62/403,624 2016-10-03
US15/360,869 US10146444B2 (en) 2016-10-03 2016-11-23 Method for read latency bound in SSD storage systems
US15/360,869 2016-11-23

Publications (2)

Publication Number Publication Date
KR20180037098A KR20180037098A (ko) 2018-04-11
KR102259249B1 true KR102259249B1 (ko) 2021-06-01

Family

ID=61758134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170100535A KR102259249B1 (ko) 2016-10-03 2017-08-08 Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법

Country Status (2)

Country Link
US (3) US10146444B2 (ko)
KR (1) KR102259249B1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146444B2 (en) * 2016-10-03 2018-12-04 Samsung Electronics Co., Ltd. Method for read latency bound in SSD storage systems
US11392317B2 (en) * 2017-05-31 2022-07-19 Fmad Engineering Kabushiki Gaisha High speed data packet flow processing
US10990326B2 (en) 2017-05-31 2021-04-27 Fmad Engineering Kabushiki Gaisha High-speed replay of captured data packets
US11036438B2 (en) 2017-05-31 2021-06-15 Fmad Engineering Kabushiki Gaisha Efficient storage architecture for high speed packet capture
US11128740B2 (en) 2017-05-31 2021-09-21 Fmad Engineering Kabushiki Gaisha High-speed data packet generator
US10423358B1 (en) 2017-05-31 2019-09-24 FMAD Engineering GK High-speed data packet capture and storage with playback capabilities
US11520696B2 (en) 2018-06-28 2022-12-06 Seagate Technology Llc Segregating map data among different die sets in a non-volatile memory
US10872015B2 (en) 2018-06-29 2020-12-22 Seagate Technology Llc Data storage system with strategic contention avoidance
US10747662B2 (en) 2018-06-29 2020-08-18 Seagate Technology Llc Staggered garbage collection unit (GCU) allocation across dies
US10776289B2 (en) 2018-09-21 2020-09-15 Microsoft Technology Licensing, Llc I/O completion polling for low latency storage device
US10740258B2 (en) * 2018-10-23 2020-08-11 Microsoft Technology Licensing, Llc Timer-based I/O completion polling for low latency storage device
US10929025B2 (en) 2019-06-25 2021-02-23 Seagate Technology Llc Data storage system with I/O determinism latency optimization
US11249800B2 (en) * 2019-10-28 2022-02-15 EMC IP Holding Company, LLC System and method for dynamic CPU multitasking
US11243804B2 (en) * 2019-11-19 2022-02-08 Micron Technology, Inc. Time to live for memory access by processors
US11199995B2 (en) 2019-11-19 2021-12-14 Micron Technology, Inc. Time to live for load commands
US11194643B1 (en) * 2020-06-03 2021-12-07 Micron Technology, Inc. Access operation status signaling for memory systems
EP3926452A1 (en) * 2020-06-19 2021-12-22 NXP USA, Inc. Norflash sharing
US11681466B2 (en) 2020-06-30 2023-06-20 Western Digital Technologies, Inc. Proactive storage operation management
US11915047B2 (en) 2020-06-30 2024-02-27 Western Digital Technologies, Inc. Managing storage device compute operations
US20220066681A1 (en) * 2020-08-27 2022-03-03 Micron Technology, Inc. Bubble break register in semiconductor device
US11537298B2 (en) * 2020-12-01 2022-12-27 Micron Technology, Inc. Memory systems and devices including examples of accessing memory and generating access codes using an authenticated stream cipher
US11899829B2 (en) 2020-12-01 2024-02-13 Micron Technology, Inc. Memory systems and devices including examples of generating access codes for memory regions using authentication logic
US20230350598A1 (en) * 2022-04-28 2023-11-02 Micron Technology, Inc. Performance monitoring for a memory system
US11972148B2 (en) * 2022-06-14 2024-04-30 Western Digital Technologies, Inc. Proactive storage operation management using thermal states
KR20240057106A (ko) * 2022-10-24 2024-05-02 삼성전자주식회사 연산 스토리지 장치 및 그 구동 방법, 호스트 장치의 구동 방법

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040156315A1 (en) 2003-02-08 2004-08-12 Walls Jeffrey Joel Apparatus and method for transmitting data to a network based on retransmission requests
WO2008126218A1 (ja) 2007-03-28 2008-10-23 Fujitsu Limited 情報処理装置、時間計測方法、および時間計測プログラム
US20130311424A1 (en) 2011-01-31 2013-11-21 Telefonaktiebolaget Lm Ericsson (Publ) Distributed database
US20140330919A1 (en) 2003-03-05 2014-11-06 Websense, Inc. Asynchronous mechanism and message pool
JP2015052923A (ja) 2013-09-06 2015-03-19 株式会社東芝 回路および調停設定結果格納方法
US20150134607A1 (en) 2013-11-14 2015-05-14 Vmware, Inc. Intelligent data propagation using performance monitoring
US20150161388A1 (en) 2013-07-18 2015-06-11 Empire Technology Development Llc Memory attack detection
US20150227465A1 (en) 2012-04-09 2015-08-13 Netapp Inc. Data storage within hybrid storage aggregate
US20150302937A1 (en) 2014-04-21 2015-10-22 Advanced Micro Devices, Inc. Methods and systems for mitigating memory drift

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304955B1 (en) 1998-12-30 2001-10-16 Intel Corporation Method and apparatus for performing latency based hazard detection
US6807623B2 (en) * 2000-07-27 2004-10-19 Matsushita Electric Industrial Co., Ltd. Data processing control system, controller, data processing control method, program, and medium
US7106367B2 (en) 2002-05-13 2006-09-12 Micron Technology, Inc. Integrated CMOS imager and microcontroller
KR101074423B1 (ko) * 2004-05-29 2011-10-17 삼성전자주식회사 메모리 카드의 처리 상황을 판별할 수 있는 메모리 카드시스템 및 그것의 판별 방법
US7593263B2 (en) 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US20080168226A1 (en) * 2007-01-05 2008-07-10 Accusys. Inc. Correction method for reading data of disk array system
US8984352B2 (en) * 2010-04-14 2015-03-17 Hitachi, Ltd. Storage control apparatus and control method of storage control apparatus
US20120239556A1 (en) 2010-10-20 2012-09-20 Magruder Andrew M Latency payment settlement apparatuses, methods and systems
US8255618B1 (en) 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
US9479279B2 (en) 2012-06-13 2016-10-25 Lattice Semiconductor Corporation Multiple protocol tunneling using time division operations
US9032177B2 (en) 2012-12-04 2015-05-12 HGST Netherlands B.V. Host read command return reordering based on time estimation of flash read command completion
US9535860B2 (en) 2013-01-17 2017-01-03 Intel Corporation Arbitrating memory accesses via a shared memory fabric
KR102074329B1 (ko) * 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
KR20150104858A (ko) 2014-03-06 2015-09-16 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
US10146293B2 (en) 2014-09-22 2018-12-04 Western Digital Technologies, Inc. Performance-aware power capping control of data storage devices
US9569118B2 (en) * 2014-12-30 2017-02-14 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US10146444B2 (en) * 2016-10-03 2018-12-04 Samsung Electronics Co., Ltd. Method for read latency bound in SSD storage systems

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040156315A1 (en) 2003-02-08 2004-08-12 Walls Jeffrey Joel Apparatus and method for transmitting data to a network based on retransmission requests
US20140330919A1 (en) 2003-03-05 2014-11-06 Websense, Inc. Asynchronous mechanism and message pool
WO2008126218A1 (ja) 2007-03-28 2008-10-23 Fujitsu Limited 情報処理装置、時間計測方法、および時間計測プログラム
US20130311424A1 (en) 2011-01-31 2013-11-21 Telefonaktiebolaget Lm Ericsson (Publ) Distributed database
US20150227465A1 (en) 2012-04-09 2015-08-13 Netapp Inc. Data storage within hybrid storage aggregate
US20150161388A1 (en) 2013-07-18 2015-06-11 Empire Technology Development Llc Memory attack detection
JP2015052923A (ja) 2013-09-06 2015-03-19 株式会社東芝 回路および調停設定結果格納方法
US20150134607A1 (en) 2013-11-14 2015-05-14 Vmware, Inc. Intelligent data propagation using performance monitoring
US20150302937A1 (en) 2014-04-21 2015-10-22 Advanced Micro Devices, Inc. Methods and systems for mitigating memory drift

Also Published As

Publication number Publication date
US20180095675A1 (en) 2018-04-05
US11262915B2 (en) 2022-03-01
US20190026031A1 (en) 2019-01-24
US20200278796A1 (en) 2020-09-03
US10146444B2 (en) 2018-12-04
US10732849B2 (en) 2020-08-04
KR20180037098A (ko) 2018-04-11

Similar Documents

Publication Publication Date Title
KR102259249B1 (ko) Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법
US11501843B2 (en) Storage device that uses a host memory buffer and a memory management method including the same
US20180039441A1 (en) Storage control device, storage system, and method of controlling a storage system
TWI684864B (zh) 管理輸入輸出可虛擬化儲存裝置中之功能級重置
US20230350595A1 (en) Data Migration Method, Host, and Solid State Disk
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
GB2533688A (en) Resource allocation and deallocation for power management in devices
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
KR20210112548A (ko) 메모리 시스템 내 맵 정보를 제어하는 장치 및 방법
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
KR20220048569A (ko) 메모리 시스템에서 저장 공간을 제어하는 장치 및 방법
CN112597078A (zh) 数据处理系统、存储器系统和用于操作存储器系统的方法
US10168936B2 (en) Memory system power management
KR102381233B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US7418367B2 (en) System and method for testing a cell
US20210191626A1 (en) Data processing system
US11126379B2 (en) Memory system
KR20230035811A (ko) 데이터 처리 시스템 내 공유된 메모리 공간을 제어하기 위한 장치 및 방법
KR20220032826A (ko) 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
KR20220032816A (ko) 메모리 시스템에서 데이터 통신을 보정하는 장치 및 방법
US11914519B2 (en) Affinity-based cache operation for a persistent storage device
US11893269B2 (en) Apparatus and method for improving read performance in a system
US20220011939A1 (en) Technologies for memory mirroring across an interconnect
US10867644B2 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant