KR20180115614A - Ssd의 백그라운드 동작들을 위한 기회 윈도우 힌트들 - Google Patents

Ssd의 백그라운드 동작들을 위한 기회 윈도우 힌트들 Download PDF

Info

Publication number
KR20180115614A
KR20180115614A KR1020180023959A KR20180023959A KR20180115614A KR 20180115614 A KR20180115614 A KR 20180115614A KR 1020180023959 A KR1020180023959 A KR 1020180023959A KR 20180023959 A KR20180023959 A KR 20180023959A KR 20180115614 A KR20180115614 A KR 20180115614A
Authority
KR
South Korea
Prior art keywords
host
average
opportunity window
threshold
ssd
Prior art date
Application number
KR1020180023959A
Other languages
English (en)
Other versions
KR102290372B1 (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 KR20180115614A publication Critical patent/KR20180115614A/ko
Application granted granted Critical
Publication of KR102290372B1 publication Critical patent/KR102290372B1/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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은, SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계, 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계, 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계, 평균 속도를 임계 값과 비교하는 단계, 기회 윈도우의 열림을 나타내는 평균 속도가 임계 값 아래로 떨어짐을 감지하는 단계, 기회 윈도우에 대한 힌트들을 제공하는 단계, 및 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함한다.

Description

SSD의 백그라운드 동작들을 위한 기회 윈도우 힌트들{OPPORTUNITY WINDOW HINTS FOR BACKGROUND OPERATIONS IN SSD}
본 개시는 일반적으로 SSD(solid-state drive)들에 관련되며, 좀 더 구체적으로, SSD에서 백그라운드(background) 동작을 수행하기 위해 기회 윈도우 힌트(opportunity window hint)들을 제공하기 위한 시스템 및 방법에 관한 것이다.
SSD들은 플래시 매체와 같은 저장 매체에 호스트/사용자 데이터를 저장한다. 플래시 매체는 신중하게 관리되어야 하는 특정한 읽기/쓰기 및 내구성 특징들이 있다. SSD 컨트롤러는 SSD의 플래시 미디어를 관리하여 신뢰성 있는, 고성능의, 및 비용 효율적인 데이터 스토리지를 제공한다. SSD 컨트롤러는, 라이프 사이클을 연장하고 SSD의 신뢰성 있는 동작을 제공하기 위해, 다양한 내부 백그라운드 동작들을 수행해야 한다. 이러한 내부 백그라운드 동작들의 예시들로서 재활용, 가비지 컬렉션, FTL(Flash Translation Layer)를 위한 데이터 구조 업데이트들, 다양한 통계 및 로그 업데이트들, 및 캐시 오프로드들이 있다.
이러한 백그라운드 동작들은 플래시 채널 대역폭 및 SSD 컨트롤러의 리소스들의 상당한 부분을 차지할 수 있다. 가비지 컬렉션 및 재활용과 같은 몇몇의 백그라운드 동작들은 매우 복잡하여 잠재적으로 호스트 읽기/쓰기 동작들에 심각한 지장(interruption)을 야기한다. 호스트에 의해 관찰되는 대역폭 및 대기시간은 SSD의 내부 백그라운드 동작들 때문에 크게 변동할 수 있다.
이러한 백그라운드 동작들은 플래시 채널 대역폭 및 SSD 컨트롤러의 리소스들의 상당한 부분을 차지할 수 있다. 가비지 컬렉션 및 재활용과 같은 몇몇의 백그라운드 동작들은 매우 복잡하여 호스트 읽기/쓰기 동작들에 심각한 인터럽션(interruption)들을 잠재적으로 야기한다. 호스트에 의해 관찰되는 대역폭 및 대기시간은 SSD의 내부 백그라운드 동작들 때문에 크게 변동할 수 있다.
일 실시 예에 따르면, 방법은: SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계; 평균 속도를 임계 값과 비교하는 단계; 평균 속도가 임계 값 아래로 떨어져, 기회 윈도우의 열림을 나타내는 것을 감지하는 단계; 기회 윈도우에 대한 힌트들을 제공하는 단계; 및 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함한다.
다른 실시 예에 따르면, SSD(Solid-State Drive)는: 플래시 매체; 및 호스트 인터페이스 레이어, 플래시 변환 레이어, 및 플래시 인터페이스 레이어를 포함하는 컨트롤러를 포함한다. 호스트 인터페이스 레이어는: SSD의 저장 매체에 접근하기 위해, 호스트로부터 복수의 호스트 명령을 수신하고; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하고; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하고; 평균 속도를 임계 값과 비교하고; 평균 속도가 임계 값 아래로 떨어져 기회 윈도우의 열림을 나타내는 것을 감지하고; 및 기회 윈도우에 대한 힌트들을 플래시 변환 레이어로 제공하도록 구성된다. 플래시 변환 레이어는 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하도록 구성된다. 플래시 인터페이스 레이어는 복수의 호스트 명령에 따라 플래시 매체로 또는 플래시 매체로부터의 데이터 전송을 수행하도록 구성된다.
이벤트들의 구현 및 조합의 다양한 신규의 상세사항들을 포함하는, 상술된 및 다른 바람직한 특징들이 첨부된 도면들을 참조하여 더 구체적으로 설명되고, 청구항들에서 지시될 것이다. 본 명세서에서 설명되는 특정 시스템들 및 방법들이 도시되지만 이에 한정되지 않는 방법으로 표시된다. 해당 기술의 당업자에 의해 이해될 것과 같이, 본 명세서에 설명된 원리들 및 특징들은 본 개시의 범위를 벗어나지 않는 다양하고 수많은 실시 예들에서 적용될 수 있다.
본 개시는 SSD(Solid-State Drive)의 백그라운드 동작들을 수행하기 위한 최적의 시간 윈도우들을 감지 및 수행하기 위한 시스템 및 방법을 제공한다. SSD 컨트롤러는, 인터럽션을 최소화하고 호스트에서 시작된 I/O 동작들과의 잠재적인 충돌을 피하기 위해, 최적의 시간 윈도우들에서 재활용, 가비지 컬렉션, 플래시 변환 레이어(Flash Translation Layer, FTL)를 위한 데이터 구조 업데이트들, 다양한 통계 및 로그 업데이트들, 및 캐시 오프로드들과 같은 SSD의 내부 백그라운드 동작들을 수행할 수 있다.
도 1은, 일 실시 예에 따른, 예시적인 SSD(Solid-State Drive)의 블록도를 보여준다;
도 2는 일 실시 예에 따른, 평균 호스트 읽기 속도를 연산하기 위한 예시적인 프로세스의 흐름도 이다;
도 3은 기회 윈도우의 예시를 보여준다;
도 4는 백그라운드 동작들을 수행하기 위한 기회 윈도우들을 보여주기 위한 데이터베이스 어플리케이션의 사용 사례 예시를 보여준다; 및
도 5는 일 실시 예에 따른, 평균 호스트 읽기 속도에 기초하여 백그라운드 동작들을 수행하기 위한 예시적인 프로세스의 흐름도 이다.
본 명세서에서 개시된 특징들 및 교시들 각각은 SSD에서 백그라운드 동작들을 수행하기 위한 을 제공하기 위한 다른 특징들 및 교시들과 함께 또는 분리되어 사용될 수 있다. 이러한 추가적인 특징들 및 교시들이 분리되거나 결합되어 이용되는 대표적인 예들은 첨부된 도면들을 참조하여 상세히 설명된다. 이러한 상세한 설명은 단지 본 교시들의 측면들을 실시하기 위한 기술 분야에서 상세한 지식을 가진 자를 교시하기 위한 것이고, 청구항들의 범위를 제한하지 않는다. 그러므로, 상세한 설명에 상술된 특징들의 조합들은 넓은 의미에서 교시를 실시할 필요가 없을 수도 있고, 대신에 본 교시들 특히 대표적인 실시 예들을 설명하기 위해 단지 교시된다.
아래의 설명에서, 설명의 목적으로만 특정 명칭이 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 이러한 특정 세부 사항들이 본 발명의 사상을 실시하기 위해 필요하지 않는 것은 당업자에게 명백할 것이다.
상세한 설명의 몇몇 부분들은 알고리즘 및 컴퓨터 메모리 내 데이터 비트들에 대한 동작들의 심볼 표현의 측면에서 제공된다. 이들 알고리즘 설명들 및 표현들은 다른 분야의 당업자들에게 작업의 실체를 효과적으로 전달하기 위해, 데이터 처리 분야의 당업자들에 의해 사용된다. 여기에서 알고리즘은 일반적으로 소망하는 결과에 이르는 단계들에 대한 일관성 있는 순서일 수 있다. 단계들은 물리적 양의 물리적 조작이 필요한 것들이다. 일반적으로, 필수적이진 않지만, 이러한 양들은 저장, 전달, 결합, 비교, 그리고 다르게 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 특징들, 용어들, 숫자들 등으로 지칭하는 것이 주로 공통적인 사용의 이유로 때때로 편리하게 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 단지 이러한 양에 적용되는 편리한 라벨이라는 것을 명심해야 한다. 구체적으로는 아래의 설명으로부터 명백한 바와 같이, 설명에서, 이러한 “처리”, “컴퓨팅”, “계산”, “결정”, “표시” 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템 또는 컴퓨터 레지스터 및 메모리들 내에서 물리적(전기적) 양으로서 나타나는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 스토리지, 전송 또는 표시 장치들 내에서 물리적 양으로서 나타나는 유사한 다른 데이터로 조작 및 변형하는 유사한 전자 컴퓨팅 장치의 활동 및 과정을 나타내는 것으로 이해된다.
또한, 대표적인 예들에 대한 다양한 특징들 그리고 종속항들은 본 발명의 교시에 대한 유용한 추가적인 실시 예들을 제공하기 위해 명시적이지 않은 그리고 열거되지 않은 방식으로 결합될 수 있다. 또한 모든 값의 범위 또는 독립체들의 그룹들의 암시들은 모든 가능한 중간 값 또는 당해 발명을 제한하는 목적뿐만 아니라 본래의 개시 목적을 위한 중간 독립체들을 개시하는 것이 주목된다. 또한, 명시적 기준 및 도면에 도시된 구성 요소들의 형상은 본 명세서에서 실시되는 방식을 이해할 수 있도록 설계되지만, 치수 및 실시 예에 나타난 형상에 한정되지 않는 것을 유의한다.
본 개시는 SSD(Solid-State Drive)의 백그라운드 동작들을 수행하기 위한 최적의 시간 윈도우들을 감지 및 제공하기 위한 시스템 및 방법을 제공한다. SSD 컨트롤러는, 인터럽션을 최소화하고 호스트에서 시작된 I/O 동작들과의 잠재적인 충돌을 피하기 위해, 최적의 시간 윈도우들에서 재활용, 가비지 컬렉션, 플래시 변환 레이어(Flash Translation Layer, FTL)를 위한 데이터 구조 업데이트들, 다양한 통계 및 로그 업데이트들, 및 캐시 오프로드들과 같은 SSD의 내부 백그라운드 동작들을 수행할 수 있다.
일 실시 예데 따르면, SSD의 호스트 인터페이스 레이어는 호스트 I/O 동작들의 속도를 모니터하고, SSD의 플래시 변환 레이어에 최적의 시간 윈도우들이 이용 가능하다는 것을 나타내는 힌트를 제공한다. 최적의 시간 윈도우들은 또한 기회 윈도우들이라고도 지칭된다. FTL은, 호스트에서 시작된 I/O 동작들에 대한 영향을 줄이거나 피하는, 최적의 시간 윈도우들에서 보류중인 또는 임박한 백그라운드 동작들의 몇몇 또는 전부를 실행할지 여부를 결정할 수 있다. 호스트 인터페이스 레이어는 임의의 구체적인 플래시 변환 알고리즘을 제안하지 않고, 단지 기존의 FTL 알고리즘에 기초하여, 백그라운드 동작들을 수행하는 때에 대한 힌트들을 FTL로 제공할 수 있다.
도 1은 일 실시 예에 따른, 예시적인 SSD(Solid-State Drive)의 블록도를 보여준다. SSD(120)는 플래시 매체(150) 및 SSD 컨트롤러(121)를 포함한다. 일 실시 예에 따르면, SSD(120)는 PCIe(Peripheral Component Interconnect express) 버스를 경유하여 부착된 비휘발성 저장 매체를 포함하는 NVMe(Non-Volatile Memory express) 메로리 이다. 다른 실시 예에서, SSD(120)는 NVMe-oF(NVMe over Fabrics) 기준과 호환 가능한 메모리 이다. 이 경우에, SSD(120)는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(InfiniBand)와 같은 기본 구조들(underlying fabrics)을 경유하여 접근 할 수 있다.
SSD 컨트롤러(121)는 호스트 인터페이스 레이어(122), 플래시 변환 레이어(FTL; 123), 및 플래시 변환 레이어(124)를 포함한다. 호스트 인터페이스 레이어(122)는 호스트(110)와 SSD 컨트롤러(121) 사이에 호스트 인터페이스를 제공한다. FTL (123)은, 맵핑 테이블을 사용하여 논리 블록 주소들(Logical Block Addresses; LBAs)을 물리 블록 주소들(PBAs)로 변환하고, 플래시 매체(150)의 물리 블록들에 대해 요청된 호스트 I/O 명령들을 수행하기 위해, 맵핑 테이블에 지시된 대로 플래시 매치(150)의 물리 블록에 접근한다. 호스트 I/O 명령들의 예시들은, 읽기, 쓰기, 읽기/수정/쓰기(RMW), 및 삭제 명령들을 포함하나, 이에 한정되지 않는다. 플래시 인터페이스 레이어(124)는, 호스트 I/O 명령들 및 FTL 맵핑들에 따라 플래시 매체(150)로부터 또는 플래시 매체(150)로 실제 데이터 전송을 수행한다.
일 실시 예에 따르면, 호스트 인터페이스 레이어(122)는 호스트 읽기 동작들의 속도를 추적할 수 있다. 예를 들어, 호스트 인터페이스 레이어(122)는, 미리 결정된 기간(예로서, 1마이크로초, 1밀리초, 1초) 동안 호스트 읽기 동작들의 평균을 취함으로써 호스트 읽기 속도를 계산한다. 호스트 읽기 속도는 또한 본 명세서에서 호스트 읽기 대역폭으로 지칭된다. 호스트 인터페이스 레이어(122)는 주기적으로 임계 값(즉, 호스트 읽기 속도 임계 값)에 대한 호스트 읽기 속도를 확인한다. 호스트 읽기 속도 임계 값은 호스트(110)로부터 수신되는 명령을 통해 프로그램될 수 있다. 호스트 읽기 속도가 호스트 읽기 속도 임계 값 아래로 떨어질 때, 호스트 인터페이스 레이어(122)는 백그라운드 동작 기회 윈도우가 열려 있다고 간주한다. 호스트 읽기 속도가 호스트 읽기 속도 임계 값을 초과하면, 호스트 인터페이스 레이어(122)는 백그라운드 동작 기회 윈도우가 닫힌 것으로 간주한다.
FTL(123)은 기회 윈도우 동안 하우스 키핑(house-keeping) 백그라운드 동작들을 시작하고 수행할 수 있다. 예를 들어, FTL(123)은 FTL 맵핑을 업데이트 하고 업데이트된 FTL 맵핑 테이블을 플래시 매체(150)에 저장하기 위한 백그라운드 동작을 수행할 수 있다. 호스트 명령들이 실행됨에 따라, FTL 맵핑 테이블은, 플래시 매체(150)의 새로운 물리 위치들로 새로운 쓰기 데이터가 써지면서 계속 변경된다. FTL 맵핑 테이블은, 쓰기 캐시를 오프로드, 플래시 매체의 재활용 및 가비지 컬렉션, 호스트로부터의 LBA Trim 명령들과 같은 백그라운드 동작들로 인해 변경 될 수도 있다. FTL(123)은 백그라운드 동작에서 FTL 맵핑 테이블의 변경들을 플래시 매체(150)에 주기적으로 저장할 필요가 있다. FTL 맵핑에 더하여, FTL(123)은 블록당 프로그램/소거(P/E) 카운트들 및 다양한 로그들과 같은 다른 FTL 통계 테이블들을 플래시 매체(150)에 업데이트하고 주기적으로 저장한다.
백그라운드 동작들 기회 윈도우 동안, FTL(123)은 기회 윈도우가 열려있는 한 백그라운드 동작들의 모두 또는 몇몇을 수행할 수 있다. 기회 윈도우가 닫힐 때, FTL(123)은 후속 호스트 I/O 성능에 주는 영향을 최소화 하기 위해, 활성 백그라운드 동작들을 중단하거나 축소시킬 수 있다.
일 실시 예에 따르면, FTL(123)은 기회 윈도우 동안 보류 중이거나 임박한 백그라운드 동작들 중 특정 백그라운드 동작들을 수행하도록 선택할 수 있다. 어플리케이션, 임계 값, 및 워크로드의 특성들에 따라서, 기회 윈도우들은 주기적으로 이용 가능하지 않거나 획득하기 어려울 수 있다. 이 경우, FTL(123)은 호스트 인터페이스 레이어(122)로부터 수신되는 기회 윈도우 힌트들과 관계 없이, 특정한 보류중인 또는 임박한 백그라운드 동작들을 수행할 수 있다. 일 실시 예에서, SSD 컨트롤러(121)는, 현재 임계 값이 너무 높게 설정되어 기회 윈도우들의 충분한 가능성 또는 기간을 가질 수 없다고 판별할 수 있다. 이 경우, SSD 컨트롤러(121)는 호스트에 의해 설정된 임계 값들의 미리 결정된 설정으로부터의 임계 값을 사용할 수 있다. 특정 백그라운드 동작들은 지연될 수 있지만, 무기한으로 지연될 수 없고, SSD(120)의 요구된 신뢰성 및 내구성을 달성하면서 전반적인 호스트 I/O 성능에 영향을 주지 않기 위해, 특정 시간 기간 내에 수행되어야 한다. 이 경우, 기회 윈도우는 호스트 I/O 동작들이 적게 수행될 때 백그라운드 동작들을 수행하기 위한 잠재적인 기회를 나타내는 시간 윈도우만을 나타낼 수 있지만, 그 동작들이 이러한 윈도우 동안 발생해야 하는 것을 요구하지 않는다. 그러므로, 기회 윈도우들 내에 선택적으로 수행되는 백그라운드 동작들은 호스트 동작들과의 충돌(conflict 또는 collision)을 줄이거나 피하고, 호스트 I/O 성능에 끼치는 영향을 최소화 할 수 있다.
비록 호스트 읽기 속도가 기회 윈도우 감지에 주로 사용되지만, SSD 컨트롤러(121)는 기회 윈도우를 감지하기 위해 호스트 동작들의 상이한 속도를 추적할 수 있다. 예를 들어, SSD 컨트롤러(121)는 호스트 쓰기 동작들의 속도를 추적하고, 호스트 읽기 속도로와 유사한 방식의 호스트 쓰기 속도에 기초하여 기회 윈도우를 감지할 수 있다. 호스트 쓰기 속도에 기초하여 기회 윈도우를 감지하기 위해 사용되는 임계 값은, 호스트 읽기 속도에 기초하여 기회 윈도우를 감지하기 위해 사용되는 임계 값과 상이할 수 있다. 몇몇의 실시 예들에서, SSD 컨트롤러(121)는 호스트 읽기 속도 및 호스트 쓰기 속도 양자의 균형을 맞추기 위해 기회 윈도우를 감지하기 위한 호스트 읽기 속도 및 호스트 쓰기 속도 모두를 추적할 수 있다. 이 경우, 전반적인 호스트 I/O 성능에 대한 호스트 읽기 및 쓰기 동작들 각각의 기여도를 설명하기 위한 합산된 호스트 읽기/쓰기 속도를 계산할 때 가중 계수(weighting factor)가 적용될 수 있다. 몇몇의 실시 예들에서, 호스트 읽기 속도는 호스트 읽기 집중 어플리케이션에 사용될 수 있고, 호스트 쓰기 속도는 호스트 쓰기 집중 어플리케이션에 사용될 수 있다.
일 실시 예에 따르면, 호스트 인터페이스 레이어(122)는 호스트 동작들의 다수의 속도들을 추적할 수 있다. 예를 들어, 호스트 인터페이스 레이어(122)는 호스트 읽기 동작들의 속도 및 호스트 쓰기 동작들의 속도 모두를 추적할 수 있다. 호스트 인터페이스 레이어(122)는 속도 임계 값들의 세트(예로서, 호스트 읽기 속도 임계 값 및 호스트 쓰기 속도 임계값)에 대한 호스트 동작들의 다수의 속도들을 주기적으로 확인할 수 있다. 속도 임계 값들은 호스트(110)로부터 수신된 명령을 통해 프로그램 될 수 있다. 속도들 각각이 대응하는 속도 임계 값 아래로 떨어질 때, 호스트 인터페이스 레이어(122)는 기회 윈도우가 열린 것으로 간주한다. 일 실시 예에 따르면, 호스트 동작들의 다수의 속도들이 서로 독립적으로 확인될 수 있다. 이는 몇몇의 백그라운드 동작들을 수행하기 위해 요구되는 리소스들이 다른 백그라운드 동작들을 수행하기 위해 요구되는 리소스들과 상이할 수 있기 때문이다. 이 경우, 특정 백그라운드 동작들을 위한 기회 윈도우는 다른 백그라운드 동작들을 위한 기회 윈도우가 닫히는 동안 열릴 수 있다. 다른 실시 예에 따르면, 기회 윈도우가 열렸는지 또는 닫혔는지 여부를 판별하기 위해, 대응하는 속도 임계 값들에 대해 다수의 속도들이 동시에 확인된다.
호스트 인터페이스 레이어(122)는 호스트 명령 페칭(fetching)을 수행하고, 호스트 명령들의 실행을 시작하고, 호스트 명령들과 관련되는 데이터를 전송하고, 최종적으로 호스트 명령들이 성공적으로 수행되었는지 를 나타내기 위해 완료 항목들을 호스트(110)에 게시한다. 이러한 일반적인 작업들에 더해, 호스트 인터페이스 레이어(122)는 각각의 호스트 명령들이 완료된 때, 호스트 읽기/쓰기 속도를 모니터 할 수 있다. 호스트 인터페이스 레이어(122)는, 시간 단위 동안 호스트(110)로부터 전송된 또는 호스트(110)로 전송된 데이터의 크기(예로서, 바이트들, 더블워드(dword)들 또는 논리 블록들)을 축적할 수 있다. 시간 단위 해상도의 몇몇의 예시들은 1 마이크로초, 1미리초, 및 1초 이다. 데이터 전송을 축적하기 위한 시간 단위는 호스트 명령을 통해 호스트(110)에 의해 프로그램 될 수 있다. 모든 시간 단위에 대해, 호스트 인터페이스 레이어(122)는, 축적된 데이터의 크기에 기초하여 원시 호스트 읽기/쓰기 속도를 계속해서 추적한다. 원시 호스트 읽기/쓰기 속도를 계산할 때, 호스트 인터페이스 레이어(122)는 평활화 함수(예로서, 저역 통과 필터)를 적용할 수 있다. 원시 호스트 읽기/쓰기 속도에 기초하여, 호스트 인터페이스 레이어(122)는 프로그램 가능한 가중치를 원시 호스트 읽기/쓰기 속도에 적용함으로써 평균 호스트 읽기/쓰기 속도를 계산한다. 원시 호스트 읽기/쓰기 속도 및 계산된 평균 호스트 읽기/쓰기 속도는 기회 윈도우들을 감지하기 위해 및/또는 나중에 참조하기 위해 저장될 수 있다. 원시 호스트 읽기/쓰기 속도는 급격하게 변동 할 수 있고, 호스트 인터페이스 레이어(122)는 첨예도(sharpness)를 매끄럽게 하고 평균 호스트 읽기/쓰기 속도를 계산하기 위해 원시 호스트 읽기/쓰기 속도의 평균을 낼 수 있다. 평균 함수의 가중치는 호스트(110)상에서 실행되는 어플리케이션에 기초하여, 시스템 소프트웨어 및/또는 호스트 드라이버에 의해 프로그램 되고 미세 조정될 수 있다.
이하는 일 실시 예에 따른, 원시 호스트 읽기/쓰기 속도를 연산하고 평균 호스트 읽기/쓰기 속도를 계산하기 위한 의사 코드(pseudo code) 이다.
For every host command { // compute raw rate
Fetch host command;
Initiate host command execution;
Perform any data transfers needed;
Post appropriate completion entry to the host;
If host command is read/write operation {
accumulated_read/write_size = accumulated_read/write_size + currentread/write command size;
}
}
For every time trigger { // compute average rate
avg _read/write_rate (new) = WEIGHT * accumulated_read/write_size + (1 - WEGHT) * avg_read/write_rate (old);
accumulated_read/write_size = 0; // reset it
}
각각의 호스트 읽기/쓰기 명령에 대해, 호스트 인터페이스 레이어(122)는 실행된 호스트 명령들에 대응하는 축적된 데이터 크기를 계산한다. 축적된 읽기/쓰기 크기 값은 어큐뮬레이터(accumulator)에 저장된다.
모든 시간 트리거(예로서, 1 마이크로초)에 대해, 호스트 인터페이스 레이어(122)는 평균 가중치 파라미터(WEIGTH)에 기초하여 평균 호스트 읽기/쓰기 속도를 계산한다. 평균 가중치 파라미터(WEIGTH)는 프로그램으로 0과 1사이에 설정된다. 평균 가중치 파라미터(WEIGTH)는 원시 호스트 읽기 속도에 대해 수행될 평탄화 정도를 결정하는 데 사용된다. 예를 들어, 가중치 파라미터(WEIGTH) “1”은 평탄화가 없음을 나타내는 반면 가중치 파라미터(WEIGTH) “0”은 평균이 0으로 고정(clamp) 됨을 나타낸다. 평균 호스트 읽기/쓰기 속도를 계산한 뒤에, 호스트 인터페이트(122)는 후속 시간 단위에서 새로운 평균 호스트 읽기/쓰기 속도를 계산하기 위해, 어큐뮬레이터의 축적된 읽기/쓰기 크기를 리셋 한다. 호스트 인터페이스 레이어(122)는 프로세스를 반복하고, 계속해서 호스트 읽기/쓰기 속도의 값들을 계산, 모니터, 및 저장할 수 있다. 호스트 인터페이스 레이어(122)는 주기적으로 호스트 읽기/쓰기 속도의 값들을 하나 이상의 임계 값들과 비교하고, 백그라운드 동작들을 수행하기 위한 기회 윈도우들과 관련된 힌트들을 FTL(123)에 제공한다.
도 2는 일 실시 예에 따른, 평균 호스트 읽기 속도를 연산하기 위한 예시적인 프로세스의 흐름도 이다. 유사한 흐름도가 호스트 쓰기 속도 또는 결합된 호스트 읽기/쓰기 속도에 적용 가능하다는 점에 유의하라.
호스트는 SSD로 I/O 명령들을 발행한다(201). SSD의 SSD 컨트롤러의 호스트 인터페이스 레이어는 명령 패칭을 수행하고(202), 수신된 호스트 I/O 명령들의 실행을 시작한다(203). SSD 컨트롤러의 플래시 변환 레이어(FTL) 및 플래시 인터페이스 레이어는 호스트 I/O 명령들 각각을 실행하기 위해 데이터 전송들을 수행하고(204), 호스트 인터페이스 레이어는 최종적으로 호스트에 완료 입력을 게시한다. 각각의 실행된 호스트 명령에 대해, 호스트 인터페이스 레이어는 실행된 호스트 명령이 호스트 읽기 명령인지 확인하고(206), 호스트 읽기 데이터 크기를 업데이트 한다(207). 다른 호스트 명령들에 대해, 평균 호스트 읽기 속도를 계산하기 위한 단계(206) 및 단계(207)는 생략된다. 각각의 실행된 호스트 명령에 대해, 호스트 인터페이스 레이어는 실행된 호스트 명령이 호스트 읽기 명령인지를 확인하고(206), 호스트 읽기 데이터 크기를 업데이트 한다(207). 다른 호스트 명령들에 대해, 평균 호스트 읽기 속도를 계산하기 위한 단계(206) 및 단계(207)는 생략된다.
호스트 인터페이스 레이어는 타이머를 실행하기도 한다(211). 모든 시간 트리거(예로서, 1 마이크로초)에 대해, 호스트 인터페이스 레이어는 호스트 읽기 속도(212)를 계산 및 업데이트 하고(212), 후속 시간 단위에 대응하는 새로운 호스트 읽기/쓰기 속도를 계산하기 위해 호스트 읽기 크기를 리셋한다(213).
쓰기 캐시 오프로딩(offloading)은 FTL(123)에 의해 수행되는 내부 백그라운드 동작들의 다른 예시 이다. 쓰기 캐시는 온 칩(on-chip) 버퍼들, 외부 메모리, 또는 심지어 더 빠른 플래시 유형 매체에 존재할 수 있다. FTL(123)은 쓰기 캐시를 주 플래시 매체(150)에 주기적으로 전송한다. I/O 동작들이 집중적으로 수행되는 피크 타임 윈도우 동안 FTL(123)이 쓰기 캐시 오프로드 동작을 수행할 때, 호스트 I/O 동작들의 성능은 나쁜 영향을 받을수 있다.
FTL(123)은 플래시 블록들/페이지들의 재활용 및 가비지 컬렉션을 주기적으로 수행해야 할 필요도 있다. 플래시 매체(150)의 플래시 블록들은 소거되고 프리 블록들의 풀에 추가될 필요가 있다. 가비지 컬렉션을 위해 선택된 몇몇의 플래시 블록들은 블록들이 소거되기 전에 다른 플래시 블록(들)로 이동되어야 하는 몇몇의 유효 데이터를 포함할 수 있다. 이러한 재활용 및 가비지 컬렉션 동작들은 플래시 대역폭을 크게 차지할 수 있으므로, 호스트 I/O 동작들이 재활용 및 가비지 컬렉션 동작들과 충돌(conflict or collide) 하는 경우 호스트 I/O 성능에 악영향을 줄 수 있다.
일 실시 예에 따르면, 호스트 인터페이스 레이어(122)는 평균 호스트 읽기/쓰기 속도를 모니터하고, 평균 호스트 읽기/쓰기 속도를 프로그램 가능한 임계 값과 비교할 수 있다. 평균 읽기/쓰기 속도가 설정된 임계 값 밑으로 떨어질 때, 호스트 인터페이스 레이어(122)는 백그라운드 동작 기회 윈도우가 열린 것으로 간주한다. 호스트 인터페이스 레이어(122)는 백그라운드 동작들을 수행하기 위한 힌트로서, FTL(123)로 기회 윈도우를 제공한다. 기회 윈도우를 사용하여, FTL(123)는 백그라운드 동작들의 실제 실행을 결정한다. 기회 윈도우 동안 스케줄된 백그라운드 동작들은 호스트 I/O 성능에 최소한으로 영향을 줄 것이다.
일 실시 예에 따르면, FTL(123)은 호스트 인터페이스 레이어(122)로부터 수신된 기회 윈도우 힌트들을 무시하고, 다양한 이유들로 기회 윈도우 동안 특정한 백그라운드 동작들을 수행하지 않을 수 있다. 예를 들어, 몇몇의 임박한 백그라운드 동작들은 기회 윈도우에 대한 힌트들과는 관계없이, 특정한 이벤트 후에 또는 특정 시간 윈도우 동안 수행될 필요가 있을 수 있다. 그러한 기회 윈도우 힌트가 수신될 때, FTL(123)은 모든 또는 일부의 대기중인 또는 임박한 백그라운드 동작들이 수행될 수 있는지를 확인할 수 있다. 호스트 읽기/쓰기 속도가 임계 값을 초과할 때, 호스트 인터페이스 레이어(122)는 FTL(123)에 기회 윈도우가 닫혔음을 나타낸다. 기회 윈도우가 닫힌 후, FTL(123)은 기회 윈도우에서 시작된 내부 백그라운드 동작들을 중지하거나 축소시킬 수 있다.
도 3은 기회 윈도우의 예시를 보여준다. 원시 호스트 읽기 속도는 높은 주파수로 변동하고, 호스트 인터페이스 레이어는 평균 호스트 읽기 속도를 계산하기 위해 변동하는 원시 호스트 읽기 속도의 평균을 낸다. 본 예시에서, 기회 윈도우들은 평균 호스트 읽기 속도가 32 MBps의 임계 값 보다 낮을 때, 24 및 49 마이크로초 사이 및 64 및 83 마이크로초 사이에서 열린다. 도 1을 참조하면, 기회 윈도우를 감지하는 데 사용되는 임계 값은 프로그램 가능하고 호스트(110)에 의해 설정될 수 있다. 호스트(110)는 어플리케이션, 및 플래시 매체(150) 및 호스트 I/O 동작들의 특성들에 기초하여 상이한 임계 값들을 적용할 수 있다. 일 실시 예에 따르면, 호스트(110)는 호스트 읽기/쓰기 속도를 계산하기 위해 다양한 파라미터들을 프로그램 할 수 있다. 호스트 프로그램 가능한 파라미터들의 예시들은 기회 윈도우 임계 값 및 읽기/쓰기 평균 함수 가중치들을 포함하지만, 이에 한정되지 않는다. 호스트(110)는, SSD의 레지스터들 내의 지정된 공간에 저장된 값들을 사용하거나 NVMe 기준의 Set Feature/Get Feature 명령들 또는 vendor-specific 명령들을 SSD로 전송하여 이러한 파라미터들을 프로그램 할 수 있다. 몇몇의 실시 예들에서, SSD는 다양한 학습 알고리즘을 채용하여, 호스트 읽기/쓰기 속도를 계산하기 위한 파라미터들을 조정하고 속도 임계 값들을 미세 조정 할 수 있다.
도 4는 백그라운드 동작들을 수행하기 위한 기회 윈도우들을 보여주기 위한 데이터베이스 어플리케이션의 사용 사례 예시를 보여준다. 본 예시에서 사용된 작업 부하는 Twitter 사용 사례에 대한 RocksDB 데이터베이스 어플리케이션에 맞추어 졌다. 본 예시에서, I/O 크기는 4KB이고, 작업 부하는 읽기들 및 임의 쓰기들이고, 데이터베이스 블록 캐시는 20GB 이고, 16개의 I/O 쓰레드들이 사용된다.
도 4에서 보이는 호스트 읽기 속도의 기록은 기회 윈도우가 주기적으로 이용 가능함을 나타낸다. 백그라운드 동작들을 수행하기 위한 힌트들로서 기회 윈도우들을 사용하여, SSD 컨트롤러는 호스트 I/O 동작들 및 내부 백그라운드 동작들 사이의 충돌을 줄일 수 있다.
이하는 호스트 인터페이스 레이어에 의해 제공되는 기회 윈도우 힌트들을 사용하기 위한 FTL에 대한 의사 코드 이다
For every time trigger { // check average host read rate
If (avg_read_rate < THRESHOLD) { // window opens
"Background Ops Window" = OPEN;
Perform any pending or imminent background operations;
}
Else if (avg_read_rate > THRESHOLD) { // window closes
"Background Ops Window" = CLOSE;
Halt or scale-down active background operations;
}
}
도 5는 일 실시 예에 따른, 평균 호스트 읽기 속도에 기초하여 백그라운드 동작들을 수행하기 위한 예시적인 프로세스의 흐름도 이다. 유사한 흐름도가 호스트 쓰기 속도 또는 결합된 호스트 읽기/쓰기 속도를 계산하기 위해 적용 가능하다는 것에 유의하라.
호스트 인터페이스 레이어는 호스트 읽기 속도를 계속해서 추적하고, 호스트 읽기 속도를 프로그램 가능한 임계 값과 비교한다(501). 호스트 읽기 속도가 임계 값 보다 작은 경우(502), 호스트 인터페이스 레이어는 백그라운드 동작들을 수행하기 위한 기회 윈도우가 열린 것으로 판별한다. 이 경우, FTL은 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행한다(503). 호스트 읽기 속도가 임계 값 보다 큰 경우(502), 호스트 인터페이스 레이어는 백그라운드 동작들을 수행하기 위한 기회 윈도우가 닫힌 것으로 판별한다. 이 경우, FTL은 호스트 I/O 동작들을 수행하기 위한 플래시 채널 대역폭을 확보하기 위해 활성 백그라운드 동작들을 중단하거나 축소시킨다(504).
소거 코드(Erasure Code; EC)는, 데이터가 조각들로 분해되고, 중복(redundant) 데이터 조각들로 확장 및 암호화되고, 상이한 위치들 또는 상이한 저장 매체의 세트 상에 저장된, 데이터 보호의 방법이다. 소거 코딩은 상이한 위치들 또는 상이한 저장 매체에 저장된 중복 데이터를 사용하여 디스크 저장 프로세스의 어느 시점에서 손상된 데이터의 재구성을 가능하게 한다. 소거 코드들은 데이터 재구성에 필요한 시간 및 오버헤드를 감소시키는 능력에 있어서 전통적인 RAID에 대해 이점을 갖는다. 소거 코딩의 문제점은 증가된 I/O 대기 시간으로 변환될 수 있어 더 CPU 집중적(CPU-intensive)일 수 있다는 것이다.
일 실시 에에 따르면, 기회 윈도우들을 제공하기 위한 본 시스템 및 방법은 SSD들 그룹의 소거 코딩으로 확장될 수 있다. 임의의 주어진 시점에서, SSD들 그룹 사이의 N개의 SSD들(N은 소거 코딩 스킴에 의존한다)은 오프라인일 수 있고, 데이터는 소거 코드에 의해 여전히 복원될 수 있다. 특정 SSD에서 기회 윈도우가 이용 가능할 때, SSD는 소거 코딩 그룹 내에서 동작하지 않거나 증가된 대기 시간에 의해 방해받는 SSD들이 N개 또는 그 이하인지 (자체 계산으로) 확인할 수 있다. SSD들이 N개 보다 적게 있는 경우, SSD는 백그라운드 동작들을 안전하게 시작할 수 있다. 기회 윈도우 예측이 정확하지 않더라도, 소거 코딩을 사용하여 영향을 받지 않는 나머지 드라이브들로부터 데이터가 구성될 수 있기 때문에, 소거 코딩 그룹은 여전히 지연 없이 동작을 제어 할 수 있다.
일 실시 예에 따르면, 방법은: SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계; 평균 속도를 임계 값과 비교하는 단계; 기회 윈도우의 열림을 나타내는, 평균 속도가 임계 값 아래로 떨어지는 것을 감지하는 단계; 기회 윈도우에 대한 힌트들을 제공하는 단계; 및 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함한다.
방법은: 복수의 호스트 명령 중 호스트 명령을 시작하는 단계; 복수의 호스트 명령 각각에 대한 완료 입력을 게시하는 단계; 및 각각의 호스트 명령을 실행한 후, 평균 속도를 업데이트 하는 단계를 더 포함할 수 있다.
원시 속도는 원시 호스트 읽기 속도이고, 평균 속도는 평균 호스트 읽기 속도일 수 있다.
원시 속도는 원시 호스트 쓰기 속도이고, 평균 속도는 평균 호스트 쓰기 속도일 수 있다.
방법은: 시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하는 단계; 복수의 평균 속도를 임계 값들의 세트와 비교하는 단계; 제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어지는 것을 감지 하는 단계; 제 2 기회 윈도우의 열림을 나타내는 제 2 평균 속도가 제 2 임계 값 아래로 떨어지는 것을 감지하는 단계; 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하는 단계; 제 1 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할 지 여부를 결정하는 단계; 및 제 2 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할 지 여부를 결정하는 단계를 더 포함할 수 있다.
SSD의 호스트 인터페이스 레이어는, 기회 윈도우가 SSD의 플래시 변환 레이어(Flash Translation Layer; FTL)에 이용 가능함을 나타내는 힌트들을 제공할 수 있다.
백그라운드 동작들은, 플래시 매체로의 FTL 맵핑 테이블을 업데이트, 블록당 프로그램/소거(Program/Erase; P/E) 카운트들 및 다양한 로그들을 플래시 매체에 저장, 쓰기 캐시 오프로딩, 및 플래시 블록들/페이지들을 재활용 중 하나 이상, 및 가비지 컬렉션을 포함할 수 있다.
평균 속도는 가중치 파라미터로 계산될 수 있다.
임계 값은, 호스트 상에서 실행되는 어플리케이션, SSD의 유형, 및 복수의 호스트 명령의 특성들중 하나 이상에 기초하여 결정될 수 있다.
방법은: 기회 윈도우의 닫힘을 나타내는, 평균 속도가 임계 값을 초과하는 것을 감지하는 단계; 및 활성 백그라운드 동작들을 중단 또는 축소시키는 단계를 더 포함할 수 있다.
방법은: 호스트로부터 수신되는 명령들을 사용하여 평균 속도를 계산하기 위해, 하나 이상의 파라미터들을 프로그램하는 단계를 더 포함할 수 있다.
다른 일 실시 예에 따르면, SSD(Solid-State Drive)는: 플래시 매체; 및 호스트 인터페이스 레이어, 플래시 변환 레이어, 및 플래시 인터페이스 레이어를 포함하는 컨트롤러를 포함한다. 호스트 인터페이스 레이어는: SSD의 저장 매체에 접근하기 위해, 호스트로부터 복수의 호스트 명령을 수신하고; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하고; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하고; 평균 속도를 임계 값과 비교하고; 기회 윈도우의 열림을 나타내는 평균 속도가 임계 값 아래로 떨어지는 것을 감지하고; 및 기회 윈도우에 대한 힌트들을 플래시 변환 레이어로 제공하도록 구성된다. 플래시 변환 레이어는 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하도록 구성된다. 플래시 인터페이스 레이어는 복수의 호스트 명령에 따라 플래시 매체로 또는 플래시 매체로부터의 데이터 전송을 수행하도록 구성된다.
호스트 인터페이스 레이어는: 복수의 호스트 명령 중 호스트 명령을 시작하고; 복수의 호스트 명령 각각에 대해 완료 입력을 게시하고; 및 각각의 호스트 명령을 실행한 후, 평균 속도를 업데이트 하도록 구성될 수 있다.
원시 속도는 원시 호스트 읽기 속도 이고, 평균 속도는 평균 호스트 읽기 속도일 수 있다.
원시 속도는 원시 호스트 쓰기 속도이고, 평균 속도는 평균 호스트 쓰기 속도일 수 있다.
호스트 인터페이스 레이어는: 시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하고; 복수의 평균 속도를 임계 값들의 세트와 비교하고; 제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어지는 것을 감지하고; 제 2 기회 윈도우의 열림을 나타내는, 제 2 평균 속도가 제 2 임계 값 아래로 떨어지는 것을 감지하고; 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하고; 제 1 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할 지 여부를 결정하고; 및 제 2 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할 지 여부를 결정하도록 구성될 수 있다.
백그라운드 동작들은 플래시 매체로의 FTL 맵핑 테이블을 업데이트, 블록당 프로그램/소거(Program/Erase; P/E) 카운트들 및 다양한 로그들을 플래시 매체에 저장, 쓰기 캐시 오프로딩, 및 플래시 블록들/페이지들을 재활용 중 하나 이상, 및 가비지 컬렉션을 포함할 수 있다.
평균 속도는 가중치 파라미터로 계산될 수 있다.
임계 값은, 호스트 상에서 실행되는 어플리케이션, SSD의 유형, 및 복수의 호스트 명령의 특성들 중 하나이상에 기초하여 결정될 수 있다.
호스트 인터페이스 레이어는, 기회 윈도우의 닫힘을 나타내는, 평균 속도가 임계 값을 초과하하는 것을 감지하도록 구성될 수 있다. 플래시 변환 레이어는 활성 백그라운드 동작들을 중단 또는 축소시키도록 구성될 수 있다.
호스트로부터 수신되는 명령들을 사용하여 평균 속도를 계산하기 위한 하나 이상의 파라미터들이 프로그램될 수 있다.
SSD는, NVMe-oF(Non-Volatile Memory express over Fabrics) 기준의 NVMe(Non-Volatile Memory express) 기준과 호환될 수 있다.
이상의 실시 예들은, SSD에서 백그라운드 동작들을 수행하기 위한 기회 윈도우 힌트들을 제공하기 위한 시스템 및 방법 실행의 다양한 실시 예들을 도시하기 위해 본 명세서 상에서 설명 되었다. 개시된 실시 예들로부터의 다양한 변형들 및 이탈들이 해당 기술의 통상의 기술자에게 발생할 것이다. 본 발명의 범위 내로 의도된 대상은 다음의 청구항들에서 설명된다.

Claims (10)

  1. SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계;
    상기 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계;
    시간 단위 동안 상기 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계;
    상기 평균 속도를 임계 값과 비교하는 단계;
    기회 윈도우의 열림을 나타내는, 상기 평균 속도가 상기 임계 값 아래로 떨어짐을 감지하는 단계;
    상기 기회 윈도우에 대한 힌트들을 제공하는 단계; 및
    상기 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 복수의 호스트 명령 중 호스트 명령을 시작하는 단계;
    상기 복수의 호스트 명령 각각에 대한 완료 입력을 게시하는 단계; 및
    각각의 호스트 명령을 실행한 후, 상기 평균 속도를 업데이트 하는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하는 단계;
    상기 복수의 평균 속도를 임계 값들의 세트와 비교하는 단계;
    제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어짐을 감지 하는 단계;
    제 2 기회 윈도우의 열림을 나타내는, 제 2 평균 속도가 제 2 임계 값 아래로 떨어짐을 감지하는 단계;
    상기 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하는 단계;
    상기 제 1 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할 지 여부를 결정하는 단계; 및
    상기 제 2 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할 지 여부를 결정하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 SSD의 호스트 인터페이스 레이어는, 상기 기회 윈도우가 상기 SSD의 플래시 변환 레이어(Flash Translation Layer; FTL)에 이용 가능함을 나타내는 상기 힌트들을 제공하는 방법.
  5. 제 1 항에 있어서,
    상기 임계 값은, 상기 호스트 상에서 실행되는 어플리케이션, 상기 SSD의 유형, 및 상기 복수의 호스트 명령의 특성들 중 하나 이상에 기초하여 결정되는 방법.
  6. 제 1 항에 있어서,
    상기 기회 윈도우의 닫힘을 나타내는, 상기 평균 속도가 상기 임계 값을 초과함을 감지하는 단계; 및
    활성 백그라운드 동작들을 중단 또는 축소시키는 단계를 더 포함하는 방법.
  7. 플래시 매체; 및
    호스트 인터페이스 레이어, 플래시 변환 레이어, 및 플래시 인터페이스 레이어를 포함하는 컨트롤러를 포함하되,
    상기 호스트 인터페이스 레이어는:
    SSD의 저장 매체에 접근하기 위해, 호스트로부터 복수의 호스트 명령을 수신하고;
    상기 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하고;
    시간 단위 동안 상기 원시 속도의 평균을 취함으로써 평균 속도를 계산하고;
    상기 평균 속도를 임계 값과 비교하고;
    기회 윈도우의 열림을 나타내는, 상기 평균 속도가 상기 임계 값 아래로 떨어짐을 감지하고; 및
    상기 기회 윈도우에 대한 힌트들을 상기 플래시 변환 레이어로 제공하도록 구성되고,
    상기 플래시 변환 레이어는 상기 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하도록 구성되고,
    상기 플래시 인터페이스 레이어는, 상기 복수의 호스트 명령에 따라 상기 플래시 매체로 또는 상기 플래시 매체로부터의 데이터 전송을 수행하도록 구성되는 SSD.
  8. 제 7 항에 있어서,
    상기 호스트 인터페이스 레이어는:
    상기 복수의 호스트 명령 중 호스트 명령을 시작하고;
    상기 복수의 호스트 명령 각각에 대해 완료 입력을 게시하고; 및
    각각의 호스트 명령을 실행한 후, 상기 평균 속도를 업데이트 하도록 구성되는 SSD.
  9. 제 7 항에 있어서,
    상기 호스트 인터페이스 레이어는:
    시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하고;
    상기 복수의 평균 속도를 임계 값들의 세트와 비교하고;
    제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어짐을 감지하고;
    제 2 기회 윈도우의 열림을 나타내는, 제 2 평균 속도가 제 2 임계 값 아래로 떨어짐을 감지하고;
    상기 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하고;
    상기 제 1 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할 지 여부를 결정하고; 및
    상기 제 2 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할 지 여부를 결정하도록 구성되는 SSD.
  10. 제 7 항에 있어서,
    상기 호스트 인터페이스 레이어는, 상기 기회 윈도우의 닫힘을 나타내는, 상기 평균 속도가 상기 임계 값을 초과함을 감지하도록 구성되고, 상기 플래시 변환 레이어는 활성 백그라운드 동작들을 중단 또는 축소시키도록 구성되는 SSD.
KR1020180023959A 2017-04-13 2018-02-27 Ssd의 백그라운드 동작들을 위한 기회 윈도우 힌트들 KR102290372B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762485296P 2017-04-13 2017-04-13
US62/485,296 2017-04-13
US15/624,430 2017-06-15
US15/624,430 US10353628B2 (en) 2017-04-13 2017-06-15 Opportunity window hints for background operations in SSD

Publications (2)

Publication Number Publication Date
KR20180115614A true KR20180115614A (ko) 2018-10-23
KR102290372B1 KR102290372B1 (ko) 2021-08-17

Family

ID=63790651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180023959A KR102290372B1 (ko) 2017-04-13 2018-02-27 Ssd의 백그라운드 동작들을 위한 기회 윈도우 힌트들

Country Status (3)

Country Link
US (1) US10353628B2 (ko)
KR (1) KR102290372B1 (ko)
CN (1) CN108733579B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11144225B2 (en) 2019-06-28 2021-10-12 SK Hynix Inc. Memory system, memory controller, and operation method thereof utilizing at least first and second operational modes

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11314635B1 (en) * 2017-12-12 2022-04-26 Amazon Technologies, Inc. Tracking persistent memory usage
US10628081B2 (en) * 2018-03-09 2020-04-21 Toshiba Memory Corporation Managing internal command queues in solid state storage drives
US11068168B2 (en) * 2018-07-17 2021-07-20 Micron Technology, Inc. Managing storage performance consistency with feedback control
CN110119250B (zh) * 2019-05-13 2023-02-10 湖南国科微电子股份有限公司 非易失性存储介质数据处理方法及非易失性存储介质
US11385928B2 (en) * 2019-08-02 2022-07-12 EMC IP Holding Company, LLC System and method for priority orchestration and scheduling of different background operations
US11681464B2 (en) * 2020-06-08 2023-06-20 Western Digital Technologies, Inc. Predicting host access rates for variable bit rate data streams using a data storage controller
KR20220165980A (ko) * 2021-06-09 2022-12-16 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US11907573B2 (en) * 2021-06-21 2024-02-20 Western Digital Technologies, Inc. Performing background operations during host read in solid state memory device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100262766A1 (en) * 2009-04-08 2010-10-14 Google Inc. Garbage collection for failure prediction and repartitioning
US20140310494A1 (en) * 2013-04-12 2014-10-16 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US20150032939A1 (en) * 2013-07-25 2015-01-29 International Business Machines Corporation Semiconductor memory garbage collection
KR20150107448A (ko) * 2014-03-14 2015-09-23 삼성전자주식회사 태스크 마이그레이션 방법 및 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582417B2 (en) 2007-08-30 2017-02-28 Virident Systems, Llc Memory apparatus and methods thereof for preventing read errors on weak pages in a non-volatile memory system
US8626986B2 (en) 2010-06-30 2014-01-07 Sandisk Technologies Inc. Pre-emptive garbage collection of memory blocks
WO2012109078A2 (en) 2011-02-08 2012-08-16 Lsi Corporation Selective enablement of operating modes or features via host transfer rate detection
US8762798B2 (en) 2011-11-16 2014-06-24 Stec, Inc. Dynamic LDPC code rate solution
US9075712B2 (en) 2011-11-30 2015-07-07 International Business Machines Corporation Scheduling requests in a solid state memory device
US9329991B2 (en) 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US8982499B1 (en) * 2013-08-23 2015-03-17 Kabushiki Kaisha Toshiba Timing of power state change in a disk drive based on disk access history
US9383926B2 (en) 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
CN106201347B (zh) * 2016-07-04 2019-07-26 联想(北京)有限公司 信息处理方法及固态硬盘

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100262766A1 (en) * 2009-04-08 2010-10-14 Google Inc. Garbage collection for failure prediction and repartitioning
US20140310494A1 (en) * 2013-04-12 2014-10-16 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US20150032939A1 (en) * 2013-07-25 2015-01-29 International Business Machines Corporation Semiconductor memory garbage collection
KR20150107448A (ko) * 2014-03-14 2015-09-23 삼성전자주식회사 태스크 마이그레이션 방법 및 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11144225B2 (en) 2019-06-28 2021-10-12 SK Hynix Inc. Memory system, memory controller, and operation method thereof utilizing at least first and second operational modes
US11500562B2 (en) 2019-06-28 2022-11-15 SK Hynix Inc. Memory system, memory controller, and operation method thereof utilizing at least first and second operational modes

Also Published As

Publication number Publication date
US20180300084A1 (en) 2018-10-18
KR102290372B1 (ko) 2021-08-17
CN108733579A (zh) 2018-11-02
US10353628B2 (en) 2019-07-16
CN108733579B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
KR102290372B1 (ko) Ssd의 백그라운드 동작들을 위한 기회 윈도우 힌트들
CN110389909B (zh) 使用深度神经网络优化固态驱动器的性能的系统和方法
US9569118B2 (en) Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
CN110908926B (zh) 数据储存装置及逻辑至物理地址映射表的写入方法
US9262321B2 (en) Adjustment of destage rate based on read and write response time requirements
US9785575B2 (en) Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
JP2017123177A (ja) ガベージデータを収集するための方法及び記憶装置
US9053038B2 (en) Method and apparatus for efficient read cache operation
US10691343B2 (en) Reducing concurrency of garbage collection operations
US11188256B2 (en) Enhanced read-ahead capability for storage devices
US10268420B2 (en) System and method for consistent performance in a storage device
US8819343B2 (en) Periodic destages from inside and outside diameters of disks to improve read response times
US11176035B2 (en) Data storage devices and data processing methods
CN106910528A (zh) 一种固态硬盘数据巡检的优化方法及装置
CN103984506A (zh) 闪存存储设备数据写的方法和系统
CN112083873A (zh) 智能识别非易失存储介质不可靠块的方法与装置
CN109375868B (zh) 一种数据存储方法、调度装置、系统、设备及存储介质
KR102692838B1 (ko) 저장 디바이스들에 대한 강화된 선판독 능력
US11734184B2 (en) Effective avoidance of line cache misses
WO2024145166A1 (en) Systems, methods, and media for controlling background wear leveling in solid-state drives
CN103677757A (zh) 一种能够感知存储设备带宽的程序并行度控制方法

Legal Events

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