KR102290372B1 - Opportunity window hints for background operations in ssd - Google Patents

Opportunity window hints for background operations in ssd Download PDF

Info

Publication number
KR102290372B1
KR102290372B1 KR1020180023959A KR20180023959A KR102290372B1 KR 102290372 B1 KR102290372 B1 KR 102290372B1 KR 1020180023959 A KR1020180023959 A KR 1020180023959A KR 20180023959 A KR20180023959 A KR 20180023959A KR 102290372 B1 KR102290372 B1 KR 102290372B1
Authority
KR
South Korea
Prior art keywords
host
opportunity
window
average
ssd
Prior art date
Application number
KR1020180023959A
Other languages
Korean (ko)
Other versions
KR20180115614A (en
Inventor
람다스 카차르
김종민
기양석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180115614A publication Critical patent/KR20180115614A/en
Application granted granted Critical
Publication of KR102290372B1 publication Critical patent/KR102290372B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (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)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계, 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계, 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계, 평균 속도를 임계 값과 비교하는 단계, 기회 윈도우의 열림을 나타내는 평균 속도가 임계 값 아래로 떨어짐을 감지하는 단계, 기회 윈도우에 대한 힌트들을 제공하는 단계, 및 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함한다.The present invention includes the steps of receiving a plurality of host commands from a host to access a storage medium of a solid-state drive (SSD), monitoring the raw speed to execute the plurality of host commands, calculating the average velocity by taking the average, comparing the average velocity to a threshold, detecting that the average velocity indicative of the opening of the opportunity window falls below the threshold, providing hints about the opportunity window; and determining whether to perform pending or impending background operations during the opportunity window.

Description

SSD의 백그라운드 동작들을 위한 기회 윈도우 힌트들{OPPORTUNITY WINDOW HINTS FOR BACKGROUND OPERATIONS IN SSD}OPPORTUNITY WINDOW HINTS FOR BACKGROUND OPERATIONS IN SSD

본 개시는 일반적으로 SSD(solid-state drive)들에 관련되며, 좀 더 구체적으로, SSD에서 백그라운드(background) 동작을 수행하기 위해 기회 윈도우 힌트(opportunity window hint)들을 제공하기 위한 시스템 및 방법에 관한 것이다.This disclosure relates generally to solid-state drives (SSDs), and more particularly, to a system and method for providing opportunity window hints to perform a background operation in an SSD. will be.

SSD들은 플래시 매체와 같은 저장 매체에 호스트/사용자 데이터를 저장한다. 플래시 매체는 신중하게 관리되어야 하는 특정한 읽기/쓰기 및 내구성 특징들이 있다. SSD 컨트롤러는 SSD의 플래시 미디어를 관리하여 신뢰성 있는, 고성능의, 및 비용 효율적인 데이터 스토리지를 제공한다. SSD 컨트롤러는, 라이프 사이클을 연장하고 SSD의 신뢰성 있는 동작을 제공하기 위해, 다양한 내부 백그라운드 동작들을 수행해야 한다. 이러한 내부 백그라운드 동작들의 예시들로서 재활용, 가비지 컬렉션, FTL(Flash Translation Layer)를 위한 데이터 구조 업데이트들, 다양한 통계 및 로그 업데이트들, 및 캐시 오프로드들이 있다.SSDs store host/user data in a storage medium such as a flash medium. Flash media have specific read/write and endurance characteristics that must be carefully managed. The SSD controller manages the flash media of the SSD to provide reliable, high-performance, and cost-effective data storage. The SSD controller needs to perform various internal background operations in order to extend the life cycle and provide reliable operation of the SSD. Examples of such internal background operations are recycling, garbage collection, data structure updates for the Flash Translation Layer (FTL), various statistics and log updates, and cache offloads.

이러한 백그라운드 동작들은 플래시 채널 대역폭 및 SSD 컨트롤러의 리소스들의 상당한 부분을 차지할 수 있다. 가비지 컬렉션 및 재활용과 같은 몇몇의 백그라운드 동작들은 매우 복잡하여 잠재적으로 호스트 읽기/쓰기 동작들에 심각한 지장(interruption)을 야기한다. 호스트에 의해 관찰되는 대역폭 및 대기시간은 SSD의 내부 백그라운드 동작들 때문에 크게 변동할 수 있다.These background operations can take up a significant portion of the flash channel bandwidth and resources of the SSD controller. Some background operations, such as garbage collection and recycling, are very complex, potentially causing severe interruption of host read/write operations. The bandwidth and latency observed by the host can fluctuate significantly due to internal background operations of the SSD.

이러한 백그라운드 동작들은 플래시 채널 대역폭 및 SSD 컨트롤러의 리소스들의 상당한 부분을 차지할 수 있다. 가비지 컬렉션 및 재활용과 같은 몇몇의 백그라운드 동작들은 매우 복잡하여 호스트 읽기/쓰기 동작들에 심각한 인터럽션(interruption)들을 잠재적으로 야기한다. 호스트에 의해 관찰되는 대역폭 및 대기시간은 SSD의 내부 백그라운드 동작들 때문에 크게 변동할 수 있다.These background operations can take up a significant portion of the flash channel bandwidth and resources of the SSD controller. Some background operations, such as garbage collection and recycling, are very complex, potentially causing severe interruptions to host read/write operations. The bandwidth and latency observed by the host can fluctuate significantly due to internal background operations of the SSD.

일 실시 예에 따르면, 방법은: SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계; 평균 속도를 임계 값과 비교하는 단계; 평균 속도가 임계 값 아래로 떨어져, 기회 윈도우의 열림을 나타내는 것을 감지하는 단계; 기회 윈도우에 대한 힌트들을 제공하는 단계; 및 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함한다.According to an embodiment, a method includes: receiving a plurality of host commands from a host to access a storage medium of a solid-state drive (SSD); monitoring the raw speed to execute a plurality of host commands; calculating an average velocity by taking the average of the raw velocity over a unit of time; comparing the average speed to a threshold; detecting that the average velocity falls below the threshold, indicating an opening of a window of opportunity; providing hints for an opportunity window; and determining whether to perform pending or impending background operations during the opportunity window.

다른 실시 예에 따르면, SSD(Solid-State Drive)는: 플래시 매체; 및 호스트 인터페이스 레이어, 플래시 변환 레이어, 및 플래시 인터페이스 레이어를 포함하는 컨트롤러를 포함한다. 호스트 인터페이스 레이어는: SSD의 저장 매체에 접근하기 위해, 호스트로부터 복수의 호스트 명령을 수신하고; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하고; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하고; 평균 속도를 임계 값과 비교하고; 평균 속도가 임계 값 아래로 떨어져 기회 윈도우의 열림을 나타내는 것을 감지하고; 및 기회 윈도우에 대한 힌트들을 플래시 변환 레이어로 제공하도록 구성된다. 플래시 변환 레이어는 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하도록 구성된다. 플래시 인터페이스 레이어는 복수의 호스트 명령에 따라 플래시 매체로 또는 플래시 매체로부터의 데이터 전송을 수행하도록 구성된다.According to another embodiment, a solid-state drive (SSD) includes: a flash medium; and a controller including a host interface layer, a flash translation layer, and a flash interface layer. The host interface layer is configured to: receive a plurality of host commands from the host to access the storage medium of the SSD; monitor raw speed to execute a plurality of host commands; calculate the average velocity by taking the average of the raw velocity over time units; compare the average speed to a threshold; detecting that the average velocity falls below the threshold, indicating the opening of a window of opportunity; and provide hints for the opportunity window to the flash transformation layer. The flash transformation layer is configured to determine whether to perform pending or impending background operations during the opportunity window. The flash interface layer is configured to perform data transfer to or from the flash medium according to a plurality of host commands.

이벤트들의 구현 및 조합의 다양한 신규의 상세사항들을 포함하는, 상술된 및 다른 바람직한 특징들이 첨부된 도면들을 참조하여 더 구체적으로 설명되고, 청구항들에서 지시될 것이다. 본 명세서에서 설명되는 특정 시스템들 및 방법들이 도시되지만 이에 한정되지 않는 방법으로 표시된다. 해당 기술의 당업자에 의해 이해될 것과 같이, 본 명세서에 설명된 원리들 및 특징들은 본 개시의 범위를 벗어나지 않는 다양하고 수많은 실시 예들에서 적용될 수 있다.BRIEF DESCRIPTION OF THE DRAWINGS The above and other preferred features, including various novel details of implementation and combination of events, will be more particularly described with reference to the appended drawings and pointed out in the claims. Certain systems and methods described herein are presented by way of illustration, but not limitation. As will be understood by one of ordinary skill in the art, the principles and features described herein may be applied in various and numerous embodiments without departing from the scope of the present disclosure.

본 개시는 SSD(Solid-State Drive)의 백그라운드 동작들을 수행하기 위한 최적의 시간 윈도우들을 감지 및 수행하기 위한 시스템 및 방법을 제공한다. SSD 컨트롤러는, 인터럽션을 최소화하고 호스트에서 시작된 I/O 동작들과의 잠재적인 충돌을 피하기 위해, 최적의 시간 윈도우들에서 재활용, 가비지 컬렉션, 플래시 변환 레이어(Flash Translation Layer, FTL)를 위한 데이터 구조 업데이트들, 다양한 통계 및 로그 업데이트들, 및 캐시 오프로드들과 같은 SSD의 내부 백그라운드 동작들을 수행할 수 있다.The present disclosure provides a system and method for detecting and performing optimal time windows for performing background operations of a solid-state drive (SSD). The SSD controller provides data for recycling, garbage collection, and Flash Translation Layer (FTL) in optimal time windows to minimize interruption and avoid potential conflicts with host-initiated I/O operations. It can perform internal background operations of the SSD such as structure updates, various statistics and log updates, and cache offloads.

도 1은, 일 실시 예에 따른, 예시적인 SSD(Solid-State Drive)의 블록도를 보여준다;
도 2는 일 실시 예에 따른, 평균 호스트 읽기 속도를 연산하기 위한 예시적인 프로세스의 흐름도 이다;
도 3은 기회 윈도우의 예시를 보여준다;
도 4는 백그라운드 동작들을 수행하기 위한 기회 윈도우들을 보여주기 위한 데이터베이스 어플리케이션의 사용 사례 예시를 보여준다; 및
도 5는 일 실시 예에 따른, 평균 호스트 읽기 속도에 기초하여 백그라운드 동작들을 수행하기 위한 예시적인 프로세스의 흐름도 이다.
1 shows a block diagram of an exemplary solid-state drive (SSD), according to an embodiment;
2 is a flow diagram of an exemplary process for calculating an average host read speed, according to one embodiment;
3 shows an example of an opportunity window;
4 shows an example use case of a database application to show windows of opportunity for performing background operations; and
5 is a flow diagram of an example process for performing background operations based on an average host read speed, according to one embodiment.

본 명세서에서 개시된 특징들 및 교시들 각각은 SSD에서 백그라운드 동작들을 수행하기 위한 을 제공하기 위한 다른 특징들 및 교시들과 함께 또는 분리되어 사용될 수 있다. 이러한 추가적인 특징들 및 교시들이 분리되거나 결합되어 이용되는 대표적인 예들은 첨부된 도면들을 참조하여 상세히 설명된다. 이러한 상세한 설명은 단지 본 교시들의 측면들을 실시하기 위한 기술 분야에서 상세한 지식을 가진 자를 교시하기 위한 것이고, 청구항들의 범위를 제한하지 않는다. 그러므로, 상세한 설명에 상술된 특징들의 조합들은 넓은 의미에서 교시를 실시할 필요가 없을 수도 있고, 대신에 본 교시들 특히 대표적인 실시 예들을 설명하기 위해 단지 교시된다.Each of the features and teachings disclosed herein may be used in conjunction with or separately from other features and teachings to provide for performing background operations in an SSD. Representative examples in which these additional features and teachings are used separately or in combination are described in detail with reference to the accompanying drawings. This detailed description is only intended to teach one skilled in the art for practicing aspects of the present teachings, and does not limit the scope of the claims. Therefore, combinations of features recited in the Detailed Description may not need to practice the teachings in a broad sense, but are instead taught merely for the purpose of illustrating the present teachings, particularly representative embodiments.

아래의 설명에서, 설명의 목적으로만 특정 명칭이 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 이러한 특정 세부 사항들이 본 발명의 사상을 실시하기 위해 필요하지 않는 것은 당업자에게 명백할 것이다.In the following description, for purposes of explanation only, specific designations are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that these specific details are not required to practice the spirit of the present invention.

상세한 설명의 몇몇 부분들은 알고리즘 및 컴퓨터 메모리 내 데이터 비트들에 대한 동작들의 심볼 표현의 측면에서 제공된다. 이들 알고리즘 설명들 및 표현들은 다른 분야의 당업자들에게 작업의 실체를 효과적으로 전달하기 위해, 데이터 처리 분야의 당업자들에 의해 사용된다. 여기에서 알고리즘은 일반적으로 소망하는 결과에 이르는 단계들에 대한 일관성 있는 순서일 수 있다. 단계들은 물리적 양의 물리적 조작이 필요한 것들이다. 일반적으로, 필수적이진 않지만, 이러한 양들은 저장, 전달, 결합, 비교, 그리고 다르게 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 특징들, 용어들, 숫자들 등으로 지칭하는 것이 주로 공통적인 사용의 이유로 때때로 편리하게 입증되었다.Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits in computer memory. These algorithmic descriptions and representations are used by those skilled in the data processing arts to effectively convey the substance of their work to those skilled in the art. Here the algorithm can generally be a consistent sequence of steps leading to a desired result. Steps are those requiring physical manipulation of physical quantities. Generally, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, features, terms, numbers, and the like.

그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 단지 이러한 양에 적용되는 편리한 라벨이라는 것을 명심해야 한다. 구체적으로는 아래의 설명으로부터 명백한 바와 같이, 설명에서, 이러한 “처리”, “컴퓨팅”, “계산”, “결정”, “표시” 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템 또는 컴퓨터 레지스터 및 메모리들 내에서 물리적(전기적) 양으로서 나타나는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 스토리지, 전송 또는 표시 장치들 내에서 물리적 양으로서 나타나는 유사한 다른 데이터로 조작 및 변형하는 유사한 전자 컴퓨팅 장치의 활동 및 과정을 나타내는 것으로 이해된다. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Specifically, as will be apparent from the description below, in the description, discussions using terms such as “processing”, “computing”, “compute”, “determining”, “indicating” and the like refer to computer systems or computer registers and memories. Activities and processes of similar electronic computing devices that manipulate and transform data represented as physical (electrical) quantities within computer system memories or registers or other similar data represented as physical quantities within computer system memories or registers or other information storage, transmission or display devices. is understood to represent

또한, 대표적인 예들에 대한 다양한 특징들 그리고 종속항들은 본 발명의 교시에 대한 유용한 추가적인 실시 예들을 제공하기 위해 명시적이지 않은 그리고 열거되지 않은 방식으로 결합될 수 있다. 또한 모든 값의 범위 또는 독립체들의 그룹들의 암시들은 모든 가능한 중간 값 또는 당해 발명을 제한하는 목적뿐만 아니라 본래의 개시 목적을 위한 중간 독립체들을 개시하는 것이 주목된다. 또한, 명시적 기준 및 도면에 도시된 구성 요소들의 형상은 본 명세서에서 실시되는 방식을 이해할 수 있도록 설계되지만, 치수 및 실시 예에 나타난 형상에 한정되지 않는 것을 유의한다.In addition, various features of the representative examples and dependent claims may be combined in non-explicit and non-listed ways to provide useful additional embodiments of the teachings of the present invention. It is also noted that all implied values of ranges or groups of entities disclose all possible intermediate values or intermediate entities for the purpose of limiting the invention as well as the original disclosure purposes. In addition, it should be noted that the shapes of the components shown in the explicit reference and drawings are designed to be understood in the manner implemented in the present specification, but are not limited to the dimensions and shapes shown in the embodiments.

본 개시는 SSD(Solid-State Drive)의 백그라운드 동작들을 수행하기 위한 최적의 시간 윈도우들을 감지 및 제공하기 위한 시스템 및 방법을 제공한다. SSD 컨트롤러는, 인터럽션을 최소화하고 호스트에서 시작된 I/O 동작들과의 잠재적인 충돌을 피하기 위해, 최적의 시간 윈도우들에서 재활용, 가비지 컬렉션, 플래시 변환 레이어(Flash Translation Layer, FTL)를 위한 데이터 구조 업데이트들, 다양한 통계 및 로그 업데이트들, 및 캐시 오프로드들과 같은 SSD의 내부 백그라운드 동작들을 수행할 수 있다.The present disclosure provides a system and method for detecting and providing optimal time windows for performing background operations of a solid-state drive (SSD). The SSD controller provides data for recycling, garbage collection, and Flash Translation Layer (FTL) in optimal time windows to minimize interruption and avoid potential conflicts with host-initiated I/O operations. It can perform internal background operations of the SSD such as structure updates, various statistics and log updates, and cache offloads.

일 실시 예데 따르면, SSD의 호스트 인터페이스 레이어는 호스트 I/O 동작들의 속도를 모니터하고, SSD의 플래시 변환 레이어에 최적의 시간 윈도우들이 이용 가능하다는 것을 나타내는 힌트를 제공한다. 최적의 시간 윈도우들은 또한 기회 윈도우들이라고도 지칭된다. FTL은, 호스트에서 시작된 I/O 동작들에 대한 영향을 줄이거나 피하는, 최적의 시간 윈도우들에서 보류중인 또는 임박한 백그라운드 동작들의 몇몇 또는 전부를 실행할지 여부를 결정할 수 있다. 호스트 인터페이스 레이어는 임의의 구체적인 플래시 변환 알고리즘을 제안하지 않고, 단지 기존의 FTL 알고리즘에 기초하여, 백그라운드 동작들을 수행하는 때에 대한 힌트들을 FTL로 제공할 수 있다.According to one embodiment, the host interface layer of the SSD monitors the speed of host I/O operations and provides a hint to the flash translation layer of the SSD indicating that optimal time windows are available. Optimal time windows are also referred to as opportunity windows. The FTL may determine whether to execute some or all of the pending or impending background operations in optimal time windows, reducing or avoiding impact on host-initiated I/O operations. The host interface layer does not propose any specific flash conversion algorithm, only based on the existing FTL algorithm, may provide hints on when to perform background operations to the 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)을 경유하여 접근 할 수 있다.1 shows a block diagram of an exemplary solid-state drive (SSD), according to an embodiment. The SSD 120 includes a flash medium 150 and an SSD controller 121 . According to an embodiment, the SSD 120 is a Non-Volatile Memory express (NVMe) memory including a non-volatile storage medium attached via a Peripheral Component Interconnect express (PCIe) bus. In another embodiment, the SSD 120 is a memory compatible with the NVMe over Fabrics (NVMe-oF) standard. In this case, the SSD 120 may be accessed via underlying fabrics such as Ethernet, Fiber Channel, and InfiniBand.

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)로 실제 데이터 전송을 수행한다.The SSD controller 121 includes a host interface layer 122 , a flash translation layer (FTL) 123 , and a flash translation layer 124 . The host interface layer 122 provides a host interface between the host 110 and the SSD controller 121 . The FTL 123 converts Logical Block Addresses (LBAs) to Physical Block Addresses (PBAs) using a mapping table, and the requested host I/ To perform O commands, the physical block of the flash match 150 is accessed as indicated in the mapping table. Examples of host I/O commands include, but are not limited to, read, write, read/modify/write (RMW), and delete commands. Flash interface layer 124 performs the actual data transfer to or from flash medium 150 according to host I/O commands and FTL mappings.

일 실시 예에 따르면, 호스트 인터페이스 레이어(122)는 호스트 읽기 동작들의 속도를 추적할 수 있다. 예를 들어, 호스트 인터페이스 레이어(122)는, 미리 결정된 기간(예로서, 1마이크로초, 1밀리초, 1초) 동안 호스트 읽기 동작들의 평균을 취함으로써 호스트 읽기 속도를 계산한다. 호스트 읽기 속도는 또한 본 명세서에서 호스트 읽기 대역폭으로 지칭된다. 호스트 인터페이스 레이어(122)는 주기적으로 임계 값(즉, 호스트 읽기 속도 임계 값)에 대한 호스트 읽기 속도를 확인한다. 호스트 읽기 속도 임계 값은 호스트(110)로부터 수신되는 명령을 통해 프로그램될 수 있다. 호스트 읽기 속도가 호스트 읽기 속도 임계 값 아래로 떨어질 때, 호스트 인터페이스 레이어(122)는 백그라운드 동작 기회 윈도우가 열려 있다고 간주한다. 호스트 읽기 속도가 호스트 읽기 속도 임계 값을 초과하면, 호스트 인터페이스 레이어(122)는 백그라운드 동작 기회 윈도우가 닫힌 것으로 간주한다.According to an embodiment, the host interface layer 122 may track the speed of host read operations. For example, the host interface layer 122 calculates the host read rate by averaging the host read operations over a predetermined period of time (eg, 1 microsecond, 1 millisecond, 1 second). Host read speed is also referred to herein as host read bandwidth. The host interface layer 122 periodically checks the host read speed against a threshold (ie, the host read speed threshold). The host read speed threshold may be programmed through a command received from the host 110 . When the host read rate falls below the host read rate threshold, the host interface layer 122 considers that the background operation opportunity window is open. If the host read rate exceeds the host read rate threshold, the host interface layer 122 considers that the background operation opportunity window is closed.

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)에 업데이트하고 주기적으로 저장한다.The FTL 123 may initiate and perform house-keeping background operations during the opportunity window. For example, the FTL 123 may update the FTL mapping and perform a background operation for storing the updated FTL mapping table in the flash medium 150 . As host commands are executed, the FTL mapping table is continuously changed as new write data is written to new physical locations of the flash medium 150 . The FTL mapping table may change due to background operations such as offloading the write cache, recycling and garbage collection of flash media, and LBA trim commands from the host. The FTL 123 needs to periodically store changes in the FTL mapping table to the flash medium 150 in a background operation. In addition to FTL mapping, FTL 123 updates and periodically stores other FTL statistics tables, such as program/erase (P/E) counts per block and various logs, to flash medium 150 .

백그라운드 동작들 기회 윈도우 동안, FTL(123)은 기회 윈도우가 열려있는 한 백그라운드 동작들의 모두 또는 몇몇을 수행할 수 있다. 기회 윈도우가 닫힐 때, FTL(123)은 후속 호스트 I/O 성능에 주는 영향을 최소화 하기 위해, 활성 백그라운드 동작들을 중단하거나 축소시킬 수 있다.Background Operations During an opportunity window, the FTL 123 may perform all or some of the background operations as long as the opportunity window is open. When the opportunity window is closed, the FTL 123 may suspend or reduce active background operations to minimize the impact on subsequent host I/O performance.

일 실시 예에 따르면, FTL(123)은 기회 윈도우 동안 보류 중이거나 임박한 백그라운드 동작들 중 특정 백그라운드 동작들을 수행하도록 선택할 수 있다. 어플리케이션, 임계 값, 및 워크로드의 특성들에 따라서, 기회 윈도우들은 주기적으로 이용 가능하지 않거나 획득하기 어려울 수 있다. 이 경우, FTL(123)은 호스트 인터페이스 레이어(122)로부터 수신되는 기회 윈도우 힌트들과 관계 없이, 특정한 보류중인 또는 임박한 백그라운드 동작들을 수행할 수 있다. 일 실시 예에서, SSD 컨트롤러(121)는, 현재 임계 값이 너무 높게 설정되어 기회 윈도우들의 충분한 가능성 또는 기간을 가질 수 없다고 판별할 수 있다. 이 경우, SSD 컨트롤러(121)는 호스트에 의해 설정된 임계 값들의 미리 결정된 설정으로부터의 임계 값을 사용할 수 있다. 특정 백그라운드 동작들은 지연될 수 있지만, 무기한으로 지연될 수 없고, SSD(120)의 요구된 신뢰성 및 내구성을 달성하면서 전반적인 호스트 I/O 성능에 영향을 주지 않기 위해, 특정 시간 기간 내에 수행되어야 한다. 이 경우, 기회 윈도우는 호스트 I/O 동작들이 적게 수행될 때 백그라운드 동작들을 수행하기 위한 잠재적인 기회를 나타내는 시간 윈도우만을 나타낼 수 있지만, 그 동작들이 이러한 윈도우 동안 발생해야 하는 것을 요구하지 않는다. 그러므로, 기회 윈도우들 내에 선택적으로 수행되는 백그라운드 동작들은 호스트 동작들과의 충돌(conflict 또는 collision)을 줄이거나 피하고, 호스트 I/O 성능에 끼치는 영향을 최소화 할 수 있다.According to an embodiment, the FTL 123 may select to perform specific background operations among pending or imminent background operations during the opportunity window. Depending on the nature of the application, threshold, and workload, windows of opportunity may not be available or difficult to obtain periodically. In this case, the FTL 123 may perform certain pending or imminent background operations regardless of opportunity window hints received from the host interface layer 122 . In an embodiment, the SSD controller 121 may determine that the current threshold is set too high to have a sufficient probability or duration of opportunity windows. In this case, the SSD controller 121 may use a threshold value from a predetermined setting of threshold values set by the host. Certain background operations may be delayed, but not indefinitely, and must be performed within a certain period of time to achieve the required reliability and durability of SSD 120 while not impacting overall host I/O performance. In this case, the window of opportunity may only represent a window of time that represents a potential opportunity to perform background operations when less host I/O operations are being performed, but does not require the operations to occur during this window. Therefore, background operations selectively performed within the opportunity windows can reduce or avoid conflict or collision with host operations and minimize the impact on host I/O performance.

비록 호스트 읽기 속도가 기회 윈도우 감지에 주로 사용되지만, SSD 컨트롤러(121)는 기회 윈도우를 감지하기 위해 호스트 동작들의 상이한 속도를 추적할 수 있다. 예를 들어, SSD 컨트롤러(121)는 호스트 쓰기 동작들의 속도를 추적하고, 호스트 읽기 속도로와 유사한 방식의 호스트 쓰기 속도에 기초하여 기회 윈도우를 감지할 수 있다. 호스트 쓰기 속도에 기초하여 기회 윈도우를 감지하기 위해 사용되는 임계 값은, 호스트 읽기 속도에 기초하여 기회 윈도우를 감지하기 위해 사용되는 임계 값과 상이할 수 있다. 몇몇의 실시 예들에서, SSD 컨트롤러(121)는 호스트 읽기 속도 및 호스트 쓰기 속도 양자의 균형을 맞추기 위해 기회 윈도우를 감지하기 위한 호스트 읽기 속도 및 호스트 쓰기 속도 모두를 추적할 수 있다. 이 경우, 전반적인 호스트 I/O 성능에 대한 호스트 읽기 및 쓰기 동작들 각각의 기여도를 설명하기 위한 합산된 호스트 읽기/쓰기 속도를 계산할 때 가중 계수(weighting factor)가 적용될 수 있다. 몇몇의 실시 예들에서, 호스트 읽기 속도는 호스트 읽기 집중 어플리케이션에 사용될 수 있고, 호스트 쓰기 속도는 호스트 쓰기 집중 어플리케이션에 사용될 수 있다.Although the host read speed is mainly used for opportunity window detection, the SSD controller 121 may track different speeds of host operations to detect the opportunity window. For example, the SSD controller 121 may track the speed of host write operations and detect an opportunity window based on the host write speed in a manner similar to the host read speed. The threshold used to detect the window of opportunity based on the host write speed may be different from the threshold used to detect the window of opportunity based on the host read speed. In some embodiments, the SSD controller 121 may track both the host read speed and the host write speed to detect an opportunity window to balance both the host read speed and the host write speed. In this case, a weighting factor may be applied when calculating the summed host read/write speed for explaining the contribution of each of the host read and write operations to the overall host I/O performance. In some embodiments, the host read rate may be used for a host read intensive application, and the host write rate may be used for a host write intensive application.

일 실시 예에 따르면, 호스트 인터페이스 레이어(122)는 호스트 동작들의 다수의 속도들을 추적할 수 있다. 예를 들어, 호스트 인터페이스 레이어(122)는 호스트 읽기 동작들의 속도 및 호스트 쓰기 동작들의 속도 모두를 추적할 수 있다. 호스트 인터페이스 레이어(122)는 속도 임계 값들의 세트(예로서, 호스트 읽기 속도 임계 값 및 호스트 쓰기 속도 임계값)에 대한 호스트 동작들의 다수의 속도들을 주기적으로 확인할 수 있다. 속도 임계 값들은 호스트(110)로부터 수신된 명령을 통해 프로그램 될 수 있다. 속도들 각각이 대응하는 속도 임계 값 아래로 떨어질 때, 호스트 인터페이스 레이어(122)는 기회 윈도우가 열린 것으로 간주한다. 일 실시 예에 따르면, 호스트 동작들의 다수의 속도들이 서로 독립적으로 확인될 수 있다. 이는 몇몇의 백그라운드 동작들을 수행하기 위해 요구되는 리소스들이 다른 백그라운드 동작들을 수행하기 위해 요구되는 리소스들과 상이할 수 있기 때문이다. 이 경우, 특정 백그라운드 동작들을 위한 기회 윈도우는 다른 백그라운드 동작들을 위한 기회 윈도우가 닫히는 동안 열릴 수 있다. 다른 실시 예에 따르면, 기회 윈도우가 열렸는지 또는 닫혔는지 여부를 판별하기 위해, 대응하는 속도 임계 값들에 대해 다수의 속도들이 동시에 확인된다.According to one embodiment, the host interface layer 122 may track multiple rates of host operations. For example, the host interface layer 122 may track both the rate of host read operations and the rate of host write operations. The host interface layer 122 may periodically check multiple rates of host operations for a set of rate thresholds (eg, a host read rate threshold and a host write rate threshold). The speed thresholds may be programmed through a command received from the host 110 . When each of the speeds falls below the corresponding speed threshold, the host interface layer 122 considers an opportunity window open. According to an embodiment, multiple speeds of host operations may be checked independently of each other. This is because the resources required to perform some background operations may be different from the resources required to perform other background operations. In this case, the opportunity window for specific background operations may be opened while the opportunity window for other background operations is closed. According to another embodiment, multiple velocities are simultaneously checked against corresponding velocity thresholds to determine whether the opportunity window is open or closed.

호스트 인터페이스 레이어(122)는 호스트 명령 페칭(fetching)을 수행하고, 호스트 명령들의 실행을 시작하고, 호스트 명령들과 관련되는 데이터를 전송하고, 최종적으로 호스트 명령들이 성공적으로 수행되었는지 를 나타내기 위해 완료 항목들을 호스트(110)에 게시한다. 이러한 일반적인 작업들에 더해, 호스트 인터페이스 레이어(122)는 각각의 호스트 명령들이 완료된 때, 호스트 읽기/쓰기 속도를 모니터 할 수 있다. 호스트 인터페이스 레이어(122)는, 시간 단위 동안 호스트(110)로부터 전송된 또는 호스트(110)로 전송된 데이터의 크기(예로서, 바이트들, 더블워드(dword)들 또는 논리 블록들)을 축적할 수 있다. 시간 단위 해상도의 몇몇의 예시들은 1 마이크로초, 1미리초, 및 1초 이다. 데이터 전송을 축적하기 위한 시간 단위는 호스트 명령을 통해 호스트(110)에 의해 프로그램 될 수 있다. 모든 시간 단위에 대해, 호스트 인터페이스 레이어(122)는, 축적된 데이터의 크기에 기초하여 원시 호스트 읽기/쓰기 속도를 계속해서 추적한다. 원시 호스트 읽기/쓰기 속도를 계산할 때, 호스트 인터페이스 레이어(122)는 평활화 함수(예로서, 저역 통과 필터)를 적용할 수 있다. 원시 호스트 읽기/쓰기 속도에 기초하여, 호스트 인터페이스 레이어(122)는 프로그램 가능한 가중치를 원시 호스트 읽기/쓰기 속도에 적용함으로써 평균 호스트 읽기/쓰기 속도를 계산한다. 원시 호스트 읽기/쓰기 속도 및 계산된 평균 호스트 읽기/쓰기 속도는 기회 윈도우들을 감지하기 위해 및/또는 나중에 참조하기 위해 저장될 수 있다. 원시 호스트 읽기/쓰기 속도는 급격하게 변동 할 수 있고, 호스트 인터페이스 레이어(122)는 첨예도(sharpness)를 매끄럽게 하고 평균 호스트 읽기/쓰기 속도를 계산하기 위해 원시 호스트 읽기/쓰기 속도의 평균을 낼 수 있다. 평균 함수의 가중치는 호스트(110)상에서 실행되는 어플리케이션에 기초하여, 시스템 소프트웨어 및/또는 호스트 드라이버에 의해 프로그램 되고 미세 조정될 수 있다.The host interface layer 122 performs host command fetching, initiates execution of host commands, transmits data related to the host commands, and finally completes to indicate whether the host commands were successfully executed. Post items to host 110 . In addition to these general tasks, the host interface layer 122 may monitor the host read/write speed as each host command is completed. The host interface layer 122 may accumulate a size (eg, bytes, doublewords, or logical blocks) of data transmitted from or to the host 110 during a unit of time. can Some examples of time unit resolution are 1 microsecond, 1 millisecond, and 1 second. The time unit for accumulating data transmission may be programmed by the host 110 through a host command. For every unit of time, the host interface layer 122 keeps track of the raw host read/write speed based on the size of the accumulated data. When calculating the raw host read/write speed, the host interface layer 122 may apply a smoothing function (eg, a low-pass filter). Based on the raw host read/write speed, the host interface layer 122 calculates an average host read/write speed by applying a programmable weight to the raw host read/write speed. The raw host read/write speed and the calculated average host read/write speed may be stored for detecting opportunity windows and/or for future reference. The raw host read/write speed can fluctuate rapidly, and the host interface layer 122 can average the raw host read/write speed to smooth out the sharpness and calculate the average host read/write speed. there is. The weight of the average function may be programmed and fine-tuned by system software and/or host driver based on the application running on the host 110 .

이하는 일 실시 예에 따른, 원시 호스트 읽기/쓰기 속도를 연산하고 평균 호스트 읽기/쓰기 속도를 계산하기 위한 의사 코드(pseudo code) 이다.The following is pseudo code for calculating a raw host read/write speed and an average host read/write speed, according to an embodiment.

For every host command { // compute raw rateFor every host command { // compute raw rate

Fetch host command;Fetch host command;

Initiate host command execution;Initiate host command execution;

Perform any data transfers needed;Perform any data transfers needed;

Post appropriate completion entry to the host;Post appropriate completion entry to the host;

If host command is read/write operation {If host command is read/write operation {

accumulated_read/write_size = accumulated_read/write_size + currentread/write command size;accumulated_read/write_size = accumulated_read/write_size + currentread/write command size;

}}

}}

For every time trigger { // compute average rateFor every time trigger { // compute average rate

avgavg _read/write_rate (new) = WEIGHT * accumulated_read/write_size + (1 - WEGHT) * avg_read/write_rate (old);_read/write_rate (new) = WEIGHT * accumulated_read/write_size + (1 - WEGHT) * avg_read/write_rate (old);

accumulated_read/write_size = 0; // reset itaccumulated_read/write_size = 0; // reset it

}}

각각의 호스트 읽기/쓰기 명령에 대해, 호스트 인터페이스 레이어(122)는 실행된 호스트 명령들에 대응하는 축적된 데이터 크기를 계산한다. 축적된 읽기/쓰기 크기 값은 어큐뮬레이터(accumulator)에 저장된다.For each host read/write command, the host interface layer 122 calculates an accumulated data size corresponding to the executed host commands. The accumulated read/write size values are stored in an accumulator.

모든 시간 트리거(예로서, 1 마이크로초)에 대해, 호스트 인터페이스 레이어(122)는 평균 가중치 파라미터(WEIGTH)에 기초하여 평균 호스트 읽기/쓰기 속도를 계산한다. 평균 가중치 파라미터(WEIGTH)는 프로그램으로 0과 1사이에 설정된다. 평균 가중치 파라미터(WEIGTH)는 원시 호스트 읽기 속도에 대해 수행될 평탄화 정도를 결정하는 데 사용된다. 예를 들어, 가중치 파라미터(WEIGTH) “1”은 평탄화가 없음을 나타내는 반면 가중치 파라미터(WEIGTH) “0”은 평균이 0으로 고정(clamp) 됨을 나타낸다. 평균 호스트 읽기/쓰기 속도를 계산한 뒤에, 호스트 인터페이트(122)는 후속 시간 단위에서 새로운 평균 호스트 읽기/쓰기 속도를 계산하기 위해, 어큐뮬레이터의 축적된 읽기/쓰기 크기를 리셋 한다. 호스트 인터페이스 레이어(122)는 프로세스를 반복하고, 계속해서 호스트 읽기/쓰기 속도의 값들을 계산, 모니터, 및 저장할 수 있다. 호스트 인터페이스 레이어(122)는 주기적으로 호스트 읽기/쓰기 속도의 값들을 하나 이상의 임계 값들과 비교하고, 백그라운드 동작들을 수행하기 위한 기회 윈도우들과 관련된 힌트들을 FTL(123)에 제공한다.For every time trigger (eg, 1 microsecond), the host interface layer 122 calculates the average host read/write speed based on the average weight parameter (WEIGTH). The average weight parameter (WEIGTH) is programmatically set between 0 and 1. The average weight parameter (WEIGTH) is used to determine the degree of flattening to be performed for the raw host read rate. For example, a weight parameter (WEIGTH) of “1” indicates no flattening, while a weight parameter of WEIGTH of “0” indicates that the average is clamped to zero. After calculating the average host read/write speed, the host interface 122 resets the accumulated read/write size of the accumulator to calculate a new average host read/write speed at a subsequent time unit. The host interface layer 122 may repeat the process and continuously calculate, monitor, and store values of the host read/write speed. The host interface layer 122 periodically compares the values of the host read/write speed with one or more threshold values, and provides hints related to windows of opportunity for performing background operations to the FTL 123 .

도 2는 일 실시 예에 따른, 평균 호스트 읽기 속도를 연산하기 위한 예시적인 프로세스의 흐름도 이다. 유사한 흐름도가 호스트 쓰기 속도 또는 결합된 호스트 읽기/쓰기 속도에 적용 가능하다는 점에 유의하라.2 is a flow diagram of an exemplary process for calculating an average host read speed, according to one embodiment. Note that a similar flow diagram is applicable for host write rates or combined host read/write rates.

호스트는 SSD로 I/O 명령들을 발행한다(201). SSD의 SSD 컨트롤러의 호스트 인터페이스 레이어는 명령 패칭을 수행하고(202), 수신된 호스트 I/O 명령들의 실행을 시작한다(203). SSD 컨트롤러의 플래시 변환 레이어(FTL) 및 플래시 인터페이스 레이어는 호스트 I/O 명령들 각각을 실행하기 위해 데이터 전송들을 수행하고(204), 호스트 인터페이스 레이어는 최종적으로 호스트에 완료 입력을 게시한다. 각각의 실행된 호스트 명령에 대해, 호스트 인터페이스 레이어는 실행된 호스트 명령이 호스트 읽기 명령인지 확인하고(206), 호스트 읽기 데이터 크기를 업데이트 한다(207). 다른 호스트 명령들에 대해, 평균 호스트 읽기 속도를 계산하기 위한 단계(206) 및 단계(207)는 생략된다. 각각의 실행된 호스트 명령에 대해, 호스트 인터페이스 레이어는 실행된 호스트 명령이 호스트 읽기 명령인지를 확인하고(206), 호스트 읽기 데이터 크기를 업데이트 한다(207). 다른 호스트 명령들에 대해, 평균 호스트 읽기 속도를 계산하기 위한 단계(206) 및 단계(207)는 생략된다.The host issues I/O commands to the SSD (201). The host interface layer of the SSD controller of the SSD performs command fetching ( 202 ) and starts executing the received host I/O commands ( 203 ). The flash translation layer (FTL) and flash interface layer of the SSD controller perform data transfers 204 to execute each of the host I/O commands, and the host interface layer finally posts a completion input to the host. For each executed host command, the host interface layer checks whether the executed host command is a host read command (206), and updates the host read data size (207). For other host commands, steps 206 and 207 for calculating the average host read rate are omitted. For each executed host command, the host interface layer checks whether the executed host command is a host read command (206), and updates the host read data size (207). For other host commands, steps 206 and 207 for calculating the average host read rate are omitted.

호스트 인터페이스 레이어는 타이머를 실행하기도 한다(211). 모든 시간 트리거(예로서, 1 마이크로초)에 대해, 호스트 인터페이스 레이어는 호스트 읽기 속도(212)를 계산 및 업데이트 하고(212), 후속 시간 단위에 대응하는 새로운 호스트 읽기/쓰기 속도를 계산하기 위해 호스트 읽기 크기를 리셋한다(213).The host interface layer also executes a timer (211). For every time trigger (eg, 1 microsecond), the host interface layer computes and updates the host read rate 212 , and computes a new host read/write rate corresponding to the subsequent unit of time. The read size is reset (213).

쓰기 캐시 오프로딩(offloading)은 FTL(123)에 의해 수행되는 내부 백그라운드 동작들의 다른 예시 이다. 쓰기 캐시는 온 칩(on-chip) 버퍼들, 외부 메모리, 또는 심지어 더 빠른 플래시 유형 매체에 존재할 수 있다. FTL(123)은 쓰기 캐시를 주 플래시 매체(150)에 주기적으로 전송한다. I/O 동작들이 집중적으로 수행되는 피크 타임 윈도우 동안 FTL(123)이 쓰기 캐시 오프로드 동작을 수행할 때, 호스트 I/O 동작들의 성능은 나쁜 영향을 받을수 있다.Write cache offloading is another example of internal background operations performed by the FTL 123 . The write cache may reside in on-chip buffers, external memory, or even faster flash-type media. The FTL 123 periodically sends a write cache to the primary flash medium 150 . When the FTL 123 performs a write cache offload operation during a peak time window in which I/O operations are intensively performed, the performance of host I/O operations may be adversely affected.

FTL(123)은 플래시 블록들/페이지들의 재활용 및 가비지 컬렉션을 주기적으로 수행해야 할 필요도 있다. 플래시 매체(150)의 플래시 블록들은 소거되고 프리 블록들의 풀에 추가될 필요가 있다. 가비지 컬렉션을 위해 선택된 몇몇의 플래시 블록들은 블록들이 소거되기 전에 다른 플래시 블록(들)로 이동되어야 하는 몇몇의 유효 데이터를 포함할 수 있다. 이러한 재활용 및 가비지 컬렉션 동작들은 플래시 대역폭을 크게 차지할 수 있으므로, 호스트 I/O 동작들이 재활용 및 가비지 컬렉션 동작들과 충돌(conflict or collide) 하는 경우 호스트 I/O 성능에 악영향을 줄 수 있다.The FTL 123 may also need to periodically perform recycling and garbage collection of flash blocks/pages. Flash blocks of flash medium 150 need to be erased and added to the pool of free blocks. Some flash blocks selected for garbage collection may contain some valid data that must be moved to another flash block(s) before the blocks are erased. Since these recycling and garbage collection operations may occupy a large amount of flash bandwidth, host I/O performance may be adversely affected when host I/O operations conflict or collide with recycling and garbage collection operations.

일 실시 예에 따르면, 호스트 인터페이스 레이어(122)는 평균 호스트 읽기/쓰기 속도를 모니터하고, 평균 호스트 읽기/쓰기 속도를 프로그램 가능한 임계 값과 비교할 수 있다. 평균 읽기/쓰기 속도가 설정된 임계 값 밑으로 떨어질 때, 호스트 인터페이스 레이어(122)는 백그라운드 동작 기회 윈도우가 열린 것으로 간주한다. 호스트 인터페이스 레이어(122)는 백그라운드 동작들을 수행하기 위한 힌트로서, FTL(123)로 기회 윈도우를 제공한다. 기회 윈도우를 사용하여, FTL(123)는 백그라운드 동작들의 실제 실행을 결정한다. 기회 윈도우 동안 스케줄된 백그라운드 동작들은 호스트 I/O 성능에 최소한으로 영향을 줄 것이다.According to an embodiment, the host interface layer 122 may monitor the average host read/write speed and compare the average host read/write speed with a programmable threshold value. When the average read/write speed falls below a set threshold, the host interface layer 122 considers the background operation opportunity window to be open. The host interface layer 122 provides an opportunity window to the FTL 123 as a hint for performing background operations. Using the opportunity window, the FTL 123 determines the actual execution of background operations. Background operations scheduled during the opportunity window will have minimal impact on host I/O performance.

일 실시 예에 따르면, FTL(123)은 호스트 인터페이스 레이어(122)로부터 수신된 기회 윈도우 힌트들을 무시하고, 다양한 이유들로 기회 윈도우 동안 특정한 백그라운드 동작들을 수행하지 않을 수 있다. 예를 들어, 몇몇의 임박한 백그라운드 동작들은 기회 윈도우에 대한 힌트들과는 관계없이, 특정한 이벤트 후에 또는 특정 시간 윈도우 동안 수행될 필요가 있을 수 있다. 그러한 기회 윈도우 힌트가 수신될 때, FTL(123)은 모든 또는 일부의 대기중인 또는 임박한 백그라운드 동작들이 수행될 수 있는지를 확인할 수 있다. 호스트 읽기/쓰기 속도가 임계 값을 초과할 때, 호스트 인터페이스 레이어(122)는 FTL(123)에 기회 윈도우가 닫혔음을 나타낸다. 기회 윈도우가 닫힌 후, FTL(123)은 기회 윈도우에서 시작된 내부 백그라운드 동작들을 중지하거나 축소시킬 수 있다.According to an embodiment, the FTL 123 may ignore the opportunity window hints received from the host interface layer 122 and may not perform specific background operations during the opportunity window for various reasons. For example, some impending background operations may need to be performed after a certain event or during a certain time window, regardless of hints to the opportunity window. When such an opportunity window hint is received, the FTL 123 may verify that all or some pending or impending background operations can be performed. When the host read/write speed exceeds the threshold, the host interface layer 122 indicates to the FTL 123 that the window of opportunity is closed. After the opportunity window is closed, the FTL 123 may stop or reduce internal background operations started in the opportunity window.

도 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는 다양한 학습 알고리즘을 채용하여, 호스트 읽기/쓰기 속도를 계산하기 위한 파라미터들을 조정하고 속도 임계 값들을 미세 조정 할 수 있다.3 shows an example of an opportunity window. The raw host read rate fluctuates with a high frequency, and the host interface layer averages the fluctuating raw host read rate to calculate the average host read rate. In this example, opportunity windows open between 24 and 49 microseconds and between 64 and 83 microseconds when the average host read speed is below a threshold of 32 MBps. Referring to FIG. 1 , the threshold used to detect an opportunity window is programmable and may be set by the host 110 . Host 110 may apply different threshold values based on the application and characteristics of flash medium 150 and host I/O operations. According to an embodiment, the host 110 may program various parameters to calculate the host read/write speed. Examples of host programmable parameters include, but are not limited to, opportunity window thresholds and read/write average function weights. The host 110 may program these parameters by using values stored in a designated space in registers of the SSD or by transmitting NVMe-based Set Feature/Get Feature commands or vendor-specific commands to the SSD. In some embodiments, the SSD may employ various learning algorithms to adjust parameters for calculating host read/write speed and fine-tune speed thresholds.

도 4는 백그라운드 동작들을 수행하기 위한 기회 윈도우들을 보여주기 위한 데이터베이스 어플리케이션의 사용 사례 예시를 보여준다. 본 예시에서 사용된 작업 부하는 Twitter 사용 사례에 대한 RocksDB 데이터베이스 어플리케이션에 맞추어 졌다. 본 예시에서, I/O 크기는 4KB이고, 작업 부하는 읽기들 및 임의 쓰기들이고, 데이터베이스 블록 캐시는 20GB 이고, 16개의 I/O 쓰레드들이 사용된다.4 shows an example use case of a database application to show windows of opportunity for performing background operations. The workload used in this example was tailored to the RocksDB database application for the Twitter use case. In this example, the I/O size is 4 KB, the workload is reads and random writes, the database block cache is 20 GB, and 16 I/O threads are used.

도 4에서 보이는 호스트 읽기 속도의 기록은 기회 윈도우가 주기적으로 이용 가능함을 나타낸다. 백그라운드 동작들을 수행하기 위한 힌트들로서 기회 윈도우들을 사용하여, SSD 컨트롤러는 호스트 I/O 동작들 및 내부 백그라운드 동작들 사이의 충돌을 줄일 수 있다.The record of the host read rate shown in Figure 4 indicates that the window of opportunity is periodically available. By using opportunity windows as hints to perform background operations, the SSD controller can reduce conflicts between host I/O operations and internal background operations.

이하는 호스트 인터페이스 레이어에 의해 제공되는 기회 윈도우 힌트들을 사용하기 위한 FTL에 대한 의사 코드 이다Below is the pseudocode for the FTL to use the opportunity window hints provided by the host interface layer.

For every time trigger { // check average host read rateFor every time trigger { // check average host read rate

If (avg_read_rate < THRESHOLD) { // window opensIf (avg_read_rate < THRESHOLD) { // window opens

"Background Ops Window" = OPEN;"Background Ops Window" = OPEN;

Perform any pending or imminent background operations;Perform any pending or imminent background operations;

} }

Else if (avg_read_rate > THRESHOLD) { // window closesElse if (avg_read_rate > THRESHOLD) { // window closes

"Background Ops Window" = CLOSE;"Background Ops Window" = CLOSE;

Halt or scale-down active background operations;Halt or scale-down active background operations;

}}

}}

도 5는 일 실시 예에 따른, 평균 호스트 읽기 속도에 기초하여 백그라운드 동작들을 수행하기 위한 예시적인 프로세스의 흐름도 이다. 유사한 흐름도가 호스트 쓰기 속도 또는 결합된 호스트 읽기/쓰기 속도를 계산하기 위해 적용 가능하다는 것에 유의하라.5 is a flow diagram of an example process for performing background operations based on an average host read speed, according to one embodiment. Note that a similar flow diagram is applicable for calculating host write rates or combined host read/write rates.

호스트 인터페이스 레이어는 호스트 읽기 속도를 계속해서 추적하고, 호스트 읽기 속도를 프로그램 가능한 임계 값과 비교한다(501). 호스트 읽기 속도가 임계 값 보다 작은 경우(502), 호스트 인터페이스 레이어는 백그라운드 동작들을 수행하기 위한 기회 윈도우가 열린 것으로 판별한다. 이 경우, FTL은 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행한다(503). 호스트 읽기 속도가 임계 값 보다 큰 경우(502), 호스트 인터페이스 레이어는 백그라운드 동작들을 수행하기 위한 기회 윈도우가 닫힌 것으로 판별한다. 이 경우, FTL은 호스트 I/O 동작들을 수행하기 위한 플래시 채널 대역폭을 확보하기 위해 활성 백그라운드 동작들을 중단하거나 축소시킨다(504).The host interface layer continuously tracks the host read speed and compares the host read speed with a programmable threshold (501). If the host read speed is less than the threshold value ( 502 ), the host interface layer determines that an opportunity window for performing background operations is open. In this case, the FTL performs (503) pending or impending background operations during the opportunity window. When the host read speed is greater than the threshold value ( 502 ), the host interface layer determines that the opportunity window for performing background operations is closed. In this case, the FTL stops or reduces active background operations ( 504 ) to free up flash channel bandwidth for performing host I/O operations.

소거 코드(Erasure Code; EC)는, 데이터가 조각들로 분해되고, 중복(redundant) 데이터 조각들로 확장 및 암호화되고, 상이한 위치들 또는 상이한 저장 매체의 세트 상에 저장된, 데이터 보호의 방법이다. 소거 코딩은 상이한 위치들 또는 상이한 저장 매체에 저장된 중복 데이터를 사용하여 디스크 저장 프로세스의 어느 시점에서 손상된 데이터의 재구성을 가능하게 한다. 소거 코드들은 데이터 재구성에 필요한 시간 및 오버헤드를 감소시키는 능력에 있어서 전통적인 RAID에 대해 이점을 갖는다. 소거 코딩의 문제점은 증가된 I/O 대기 시간으로 변환될 수 있어 더 CPU 집중적(CPU-intensive)일 수 있다는 것이다.Erasure Code (EC) is a method of data protection in which data is decomposed into pieces, expanded and encrypted into redundant data pieces, and stored in different locations or on different sets of storage media. Erasure coding enables reconstruction of corrupted data at some point in the disk storage process using redundant data stored in different locations or on different storage media. Erasing codes have advantages over traditional RAID in their ability to reduce the time and overhead required for data reconstruction. The problem with erasure coding is that it can translate to increased I/O latency, making it more CPU-intensive.

일 실시 에에 따르면, 기회 윈도우들을 제공하기 위한 본 시스템 및 방법은 SSD들 그룹의 소거 코딩으로 확장될 수 있다. 임의의 주어진 시점에서, SSD들 그룹 사이의 N개의 SSD들(N은 소거 코딩 스킴에 의존한다)은 오프라인일 수 있고, 데이터는 소거 코드에 의해 여전히 복원될 수 있다. 특정 SSD에서 기회 윈도우가 이용 가능할 때, SSD는 소거 코딩 그룹 내에서 동작하지 않거나 증가된 대기 시간에 의해 방해받는 SSD들이 N개 또는 그 이하인지 (자체 계산으로) 확인할 수 있다. SSD들이 N개 보다 적게 있는 경우, SSD는 백그라운드 동작들을 안전하게 시작할 수 있다. 기회 윈도우 예측이 정확하지 않더라도, 소거 코딩을 사용하여 영향을 받지 않는 나머지 드라이브들로부터 데이터가 구성될 수 있기 때문에, 소거 코딩 그룹은 여전히 지연 없이 동작을 제어 할 수 있다.According to one embodiment, the present system and method for providing windows of opportunity may be extended to erasure coding of a group of SSDs. At any given point in time, the N SSDs (N depending on the erasure coding scheme) between the group of SSDs may be offline, and the data may still be restored by the erase code. When a window of opportunity is available on a particular SSD, the SSD can check (by its own calculation) whether there are N or fewer SSDs that are not operating within the erasure coding group or are hampered by increased latency. If there are fewer than N SSDs, the SSD can safely initiate background operations. Even if the opportunity window prediction is not accurate, the erasure coding group can still control operation without delay, because data can be constructed from the remaining drives that are not affected using erasure coding.

일 실시 예에 따르면, 방법은: SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계; 평균 속도를 임계 값과 비교하는 단계; 기회 윈도우의 열림을 나타내는, 평균 속도가 임계 값 아래로 떨어지는 것을 감지하는 단계; 기회 윈도우에 대한 힌트들을 제공하는 단계; 및 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하는 단계를 포함한다.According to an embodiment, a method includes: receiving a plurality of host commands from a host to access a storage medium of a solid-state drive (SSD); monitoring the raw speed to execute a plurality of host commands; calculating an average velocity by taking the average of the raw velocity over a unit of time; comparing the average speed to a threshold; detecting that the average velocity falls below a threshold, indicating the opening of a window of opportunity; providing hints for an opportunity window; and determining whether to perform pending or impending background operations during the opportunity window.

방법은: 복수의 호스트 명령 중 호스트 명령을 시작하는 단계; 복수의 호스트 명령 각각에 대한 완료 입력을 게시하는 단계; 및 각각의 호스트 명령을 실행한 후, 평균 속도를 업데이트 하는 단계를 더 포함할 수 있다.The method includes: initiating a host command of a plurality of host commands; posting a completion input for each of the plurality of host commands; and updating the average speed after executing each host command.

원시 속도는 원시 호스트 읽기 속도이고, 평균 속도는 평균 호스트 읽기 속도일 수 있다.The raw rate may be a raw host read rate, and the average rate may be an average host read rate.

원시 속도는 원시 호스트 쓰기 속도이고, 평균 속도는 평균 호스트 쓰기 속도일 수 있다. The raw speed may be a raw host write speed, and the average speed may be an average host write speed.

방법은: 시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하는 단계; 복수의 평균 속도를 임계 값들의 세트와 비교하는 단계; 제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어지는 것을 감지 하는 단계; 제 2 기회 윈도우의 열림을 나타내는 제 2 평균 속도가 제 2 임계 값 아래로 떨어지는 것을 감지하는 단계; 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하는 단계; 제 1 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할 지 여부를 결정하는 단계; 및 제 2 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할 지 여부를 결정하는 단계를 더 포함할 수 있다.The method includes: calculating a plurality of average velocities by averaging the plurality of raw velocities over a unit of time; comparing the plurality of average speeds to a set of threshold values; detecting that a first average velocity falls below a first threshold, indicating the opening of a first window of opportunity; detecting that a second average velocity indicative of the opening of a second window of opportunity falls below a second threshold; providing hints for first and second windows of opportunity; determining whether to perform a first subset of pending or impending background operations during a first window of opportunity; and determining whether to perform a second subset of pending or impending background operations during the second window of opportunity.

SSD의 호스트 인터페이스 레이어는, 기회 윈도우가 SSD의 플래시 변환 레이어(Flash Translation Layer; FTL)에 이용 가능함을 나타내는 힌트들을 제공할 수 있다. The SSD's host interface layer may provide hints indicating that a window of opportunity is available to the SSD's Flash Translation Layer (FTL).

백그라운드 동작들은, 플래시 매체로의 FTL 맵핑 테이블을 업데이트, 블록당 프로그램/소거(Program/Erase; P/E) 카운트들 및 다양한 로그들을 플래시 매체에 저장, 쓰기 캐시 오프로딩, 및 플래시 블록들/페이지들을 재활용 중 하나 이상, 및 가비지 컬렉션을 포함할 수 있다.Background operations include updating the FTL mapping table to flash media, storing per-block Program/Erase (P/E) counts and various logs to flash media, offloading write cache, and flash blocks/pages. They may include one or more of recycling, and garbage collection.

평균 속도는 가중치 파라미터로 계산될 수 있다.The average speed can be calculated as a weighting parameter.

임계 값은, 호스트 상에서 실행되는 어플리케이션, SSD의 유형, 및 복수의 호스트 명령의 특성들중 하나 이상에 기초하여 결정될 수 있다.The threshold value may be determined based on one or more of an application running on the host, a type of SSD, and characteristics of the plurality of host commands.

방법은: 기회 윈도우의 닫힘을 나타내는, 평균 속도가 임계 값을 초과하는 것을 감지하는 단계; 및 활성 백그라운드 동작들을 중단 또는 축소시키는 단계를 더 포함할 수 있다.The method includes: detecting that the average velocity exceeds a threshold value, indicating the closing of the opportunity window; and stopping or reducing active background operations.

방법은: 호스트로부터 수신되는 명령들을 사용하여 평균 속도를 계산하기 위해, 하나 이상의 파라미터들을 프로그램하는 단계를 더 포함할 수 있다.The method may further include: programming one or more parameters to calculate an average speed using instructions received from the host.

다른 일 실시 예에 따르면, SSD(Solid-State Drive)는: 플래시 매체; 및 호스트 인터페이스 레이어, 플래시 변환 레이어, 및 플래시 인터페이스 레이어를 포함하는 컨트롤러를 포함한다. 호스트 인터페이스 레이어는: SSD의 저장 매체에 접근하기 위해, 호스트로부터 복수의 호스트 명령을 수신하고; 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하고; 시간 단위 동안 원시 속도의 평균을 취함으로써 평균 속도를 계산하고; 평균 속도를 임계 값과 비교하고; 기회 윈도우의 열림을 나타내는 평균 속도가 임계 값 아래로 떨어지는 것을 감지하고; 및 기회 윈도우에 대한 힌트들을 플래시 변환 레이어로 제공하도록 구성된다. 플래시 변환 레이어는 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하도록 구성된다. 플래시 인터페이스 레이어는 복수의 호스트 명령에 따라 플래시 매체로 또는 플래시 매체로부터의 데이터 전송을 수행하도록 구성된다.According to another embodiment, a solid-state drive (SSD) includes: a flash medium; and a controller including a host interface layer, a flash translation layer, and a flash interface layer. The host interface layer is configured to: receive a plurality of host commands from the host to access the storage medium of the SSD; monitor raw speed to execute a plurality of host commands; calculate the average velocity by taking the average of the raw velocity over time units; compare the average speed to a threshold; detecting that the average velocity indicative of the opening of the window of opportunity falls below a threshold; and provide hints for the opportunity window to the flash transformation layer. The flash transformation layer is configured to determine whether to perform pending or impending background operations during the opportunity window. The flash interface layer is configured to perform data transfer to or from the flash medium according to a plurality of host commands.

호스트 인터페이스 레이어는: 복수의 호스트 명령 중 호스트 명령을 시작하고; 복수의 호스트 명령 각각에 대해 완료 입력을 게시하고; 및 각각의 호스트 명령을 실행한 후, 평균 속도를 업데이트 하도록 구성될 수 있다.The host interface layer is configured to: initiate a host command from among the plurality of host commands; post a completion input for each of the plurality of host commands; and updating the average speed after executing each host command.

원시 속도는 원시 호스트 읽기 속도 이고, 평균 속도는 평균 호스트 읽기 속도일 수 있다.The raw rate may be a raw host read rate, and the average rate may be an average host read rate.

원시 속도는 원시 호스트 쓰기 속도이고, 평균 속도는 평균 호스트 쓰기 속도일 수 있다.The raw speed may be a raw host write speed, and the average speed may be an average host write speed.

호스트 인터페이스 레이어는: 시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하고; 복수의 평균 속도를 임계 값들의 세트와 비교하고; 제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어지는 것을 감지하고; 제 2 기회 윈도우의 열림을 나타내는, 제 2 평균 속도가 제 2 임계 값 아래로 떨어지는 것을 감지하고; 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하고; 제 1 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할 지 여부를 결정하고; 및 제 2 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할 지 여부를 결정하도록 구성될 수 있다.The host interface layer: calculates the plurality of average velocities by averaging the plurality of raw velocities over a unit of time; compare the plurality of average velocities to a set of threshold values; detecting that a first average velocity, indicating opening of a first window of opportunity, falls below a first threshold value; detecting that a second average speed, indicating opening of a second window of opportunity, falls below a second threshold; provide hints for first and second windows of opportunity; determine whether to perform a first subset of pending or impending background operations during a first window of opportunity; and determine whether to perform a second subset of pending or impending background operations during the second window of opportunity.

백그라운드 동작들은 플래시 매체로의 FTL 맵핑 테이블을 업데이트, 블록당 프로그램/소거(Program/Erase; P/E) 카운트들 및 다양한 로그들을 플래시 매체에 저장, 쓰기 캐시 오프로딩, 및 플래시 블록들/페이지들을 재활용 중 하나 이상, 및 가비지 컬렉션을 포함할 수 있다.Background operations update the FTL mapping table to flash media, store per-block Program/Erase (P/E) counts and various logs to flash media, offload write cache, and store flash blocks/pages. one or more of recycling, and garbage collection.

평균 속도는 가중치 파라미터로 계산될 수 있다.The average speed can be calculated as a weighting parameter.

임계 값은, 호스트 상에서 실행되는 어플리케이션, SSD의 유형, 및 복수의 호스트 명령의 특성들 중 하나이상에 기초하여 결정될 수 있다.The threshold value may be determined based on one or more of an application running on the host, a type of SSD, and characteristics of the plurality of host commands.

호스트 인터페이스 레이어는, 기회 윈도우의 닫힘을 나타내는, 평균 속도가 임계 값을 초과하하는 것을 감지하도록 구성될 수 있다. 플래시 변환 레이어는 활성 백그라운드 동작들을 중단 또는 축소시키도록 구성될 수 있다.The host interface layer may be configured to detect that the average speed exceeds a threshold value, indicating the closing of the opportunity window. The flash transform layer may be configured to suspend or reduce active background operations.

호스트로부터 수신되는 명령들을 사용하여 평균 속도를 계산하기 위한 하나 이상의 파라미터들이 프로그램될 수 있다.One or more parameters may be programmed to calculate the average speed using commands received from the host.

SSD는, NVMe-oF(Non-Volatile Memory express over Fabrics) 기준의 NVMe(Non-Volatile Memory express) 기준과 호환될 수 있다.The SSD may be compatible with the Non-Volatile Memory express (NVMe) standard of the NVMe-oF (Non-Volatile Memory express over Fabrics) standard.

이상의 실시 예들은, SSD에서 백그라운드 동작들을 수행하기 위한 기회 윈도우 힌트들을 제공하기 위한 시스템 및 방법 실행의 다양한 실시 예들을 도시하기 위해 본 명세서 상에서 설명 되었다. 개시된 실시 예들로부터의 다양한 변형들 및 이탈들이 해당 기술의 통상의 기술자에게 발생할 것이다. 본 발명의 범위 내로 의도된 대상은 다음의 청구항들에서 설명된다.The above embodiments have been described herein to illustrate various embodiments of a system and method implementation for providing opportunity window hints for performing background operations in an SSD. Various modifications and departures from the disclosed embodiments will occur to those skilled in the art. Subject matter intended to be within the scope of the invention is set forth in the following claims.

Claims (10)

SSD(Solid-State Drive)의 저장 매체에 접근하기 위해 호스트로부터 복수의 호스트 명령을 수신하는 단계;
상기 호스트 및 상기 SSD 사이에 전송되는 데이터의 양에 기반하여 상기 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하는 단계;
호스트-프로그램 가능한 가중치를 사용하여 시간 단위 동안 상기 원시 속도의 평균을 취함으로써 평균 속도를 계산하는 단계;
상기 평균 속도를 임계 값과 비교하는 단계;
기회 윈도우의 열림을 나타내는, 상기 평균 속도가 상기 임계 값 아래로 떨어짐을 감지하는 단계;
상기 기회 윈도우에 대한 힌트들을 제공하는 단계; 및
상기 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할지 여부를 결정하는 단계를 포함하되,
시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하는 단계;
상기 복수의 평균 속도를 임계 값들의 세트와 비교하는 단계;
제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어짐을 감지하는 단계;
제 2 기회 윈도우의 열림을 나타내는, 제 2 평균 속도가 제 2 임계 값 아래로 떨어짐을 감지하는 단계;
상기 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하는 단계;
상기 제 1 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할지 여부를 결정하는 단계; 및
상기 제 2 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할지 여부를 결정하는 단계를 더 포함하는 방법.
Receiving a plurality of host commands from a host to access a storage medium of a solid-state drive (SSD);
monitoring a raw speed to execute the plurality of host commands based on the amount of data transferred between the host and the SSD;
calculating an average velocity by averaging the raw velocity over a unit of time using host-programmable weights;
comparing the average speed to a threshold value;
detecting that the average velocity falls below the threshold, indicating an opening of a window of opportunity;
providing hints for the opportunity window; and
determining whether to perform pending or impending background operations during the window of opportunity;
calculating a plurality of average velocities by averaging the plurality of raw velocities over a unit of time;
comparing the plurality of average velocities to a set of threshold values;
detecting that a first average speed has fallen below a first threshold, indicating the opening of a first window of opportunity;
detecting that a second average speed has fallen below a second threshold, indicating the opening of a second window of opportunity;
providing hints for the first and second windows of opportunity;
determining whether to perform the first subset of pending or impending background operations during the first window of opportunity; and
and determining whether to perform the second subset of pending or impending background operations during the second window of opportunity.
제 1 항에 있어서,
상기 복수의 호스트 명령 중 호스트 명령을 시작하는 단계;
상기 복수의 호스트 명령 각각에 대한 완료 입력을 게시하는 단계; 및
각각의 호스트 명령을 실행한 후, 상기 평균 속도를 업데이트하는 단계를 더 포함하는 방법.
The method of claim 1,
initiating a host command among the plurality of host commands;
posting a completion input for each of the plurality of host commands; and
after executing each host command, updating the average rate.
제 1 항에 있어서,
상기 호스트는 상기 호스트-프로그램 가능한 가중치를 프로그램하기 위해 SSD로 호스트 명령을 전송하는 방법.
The method of claim 1,
wherein the host sends a host command to the SSD to program the host-programmable weight.
제 1 항에 있어서,
상기 SSD의 호스트 인터페이스 레이어는, 상기 기회 윈도우가 상기 SSD의 플래시 변환 레이어(Flash Translation Layer; FTL)에 이용 가능함을 나타내는 상기 힌트들을 제공하는 방법.
The method of claim 1,
the host interface layer of the SSD provides the hints indicating that the window of opportunity is available to a Flash Translation Layer (FTL) of the SSD.
제 1 항에 있어서,
상기 임계 값은, 상기 호스트 상에서 실행되는 어플리케이션, 상기 SSD의 유형, 및 상기 복수의 호스트 명령의 특성들 중 하나 이상에 기초하여 결정되는 방법.
The method of claim 1,
The threshold value is determined based on one or more of an application running on the host, a type of the SSD, and characteristics of the plurality of host commands.
제 1 항에 있어서,
상기 기회 윈도우의 닫힘을 나타내는, 상기 평균 속도가 상기 임계 값을 초과함을 감지하는 단계; 및
활성 백그라운드 동작들을 중단 또는 축소시키는 단계를 더 포함하는 방법.
The method of claim 1,
detecting that the average velocity exceeds the threshold value, indicating the closing of the opportunity window; and
The method further comprising the step of suspending or curtailing active background operations.
플래시 매체; 및
호스트 인터페이스 레이어, 플래시 변환 레이어, 및 플래시 인터페이스 레이어를 포함하는 컨트롤러를 포함하되,
상기 호스트 인터페이스 레이어는:
SSD의 저장 매체에 접근하기 위해, 호스트로부터 복수의 호스트 명령을 수신하고;
상기 호스트 및 상기 SSD 사이에 전송되는 데이터의 양에 기반하여 상기 복수의 호스트 명령을 수행하기 위해 원시 속도를 모니터 하고;
호스트-프로그램 가능한 가중치를 사용하여 시간 단위 동안 상기 원시 속도의 평균을 취함으로써 평균 속도를 계산하고;
상기 평균 속도를 임계 값과 비교하고;
기회 윈도우의 열림을 나타내는, 상기 평균 속도가 상기 임계 값 아래로 떨어짐을 감지하고; 및
상기 기회 윈도우에 대한 힌트들을 상기 플래시 변환 레이어로 제공하도록 구성되고,
상기 플래시 변환 레이어는 상기 기회 윈도우 동안 대기 중인 또는 임박한 백그라운드 동작들을 수행할 지 여부를 결정하도록 구성되고,
상기 플래시 인터페이스 레이어는, 상기 복수의 호스트 명령에 따라 상기 플래시 매체로 또는 상기 플래시 매체로부터의 데이터 전송을 수행하도록 구성되되,
상기 호스트 인터페이스 레이어는:
시간 단위 동안 복수의 원시 속도의 평균을 취함으로써 복수의 평균 속도를 계산하고;
상기 복수의 평균 속도를 임계 값들의 세트와 비교하고;
제 1 기회 윈도우의 열림을 나타내는, 제 1 평균 속도가 제 1 임계 값 아래로 떨어짐을 감지하고;
제 2 기회 윈도우의 열림을 나타내는, 제 2 평균 속도가 제 2 임계 값 아래로 떨어짐을 감지하고;
상기 제 1 및 제 2 기회 윈도우들에 대한 힌트들을 제공하고;
상기 제 1 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 1 하위 세트를 수행할지 여부를 결정하고; 및
상기 제 2 기회 윈도우 동안 상기 대기 중인 또는 임박한 백그라운드 동작들의 제 2 하위 세트를 수행할지 여부를 결정하도록 구성되는 SSD.
flash media; and
a controller comprising a host interface layer, a flash translation layer, and a flash interface layer;
The host interface layer is:
Receive a plurality of host commands from the host to access the storage medium of the SSD;
monitor a raw speed to perform the plurality of host commands based on the amount of data transferred between the host and the SSD;
compute an average velocity by averaging the raw velocity over a unit of time using host-programmable weights;
compare the average speed to a threshold;
detect that the average velocity falls below the threshold, indicating an opening of a window of opportunity; and
and provide hints for the opportunity window to the flash transformation layer;
the flash transformation layer is configured to determine whether to perform pending or impending background operations during the opportunity window;
wherein the flash interface layer is configured to perform data transfer to or from the flash medium according to the plurality of host commands;
The host interface layer is:
calculate the plurality of average velocities by averaging the plurality of raw velocities over a unit of time;
compare the plurality of average velocities to a set of threshold values;
detect that a first average velocity, indicating opening of a first window of opportunity, falls below a first threshold;
detect that a second average velocity, indicating opening of a second window of opportunity, falls below a second threshold;
provide hints for the first and second opportunity windows;
determine whether to perform the first subset of pending or impending background operations during the first window of opportunity; and
and determine whether to perform the second subset of pending or impending background operations during the second window of opportunity.
제 7 항에 있어서,
상기 호스트 인터페이스 레이어는:
상기 복수의 호스트 명령 중 호스트 명령을 시작하고;
상기 복수의 호스트 명령 각각에 대해 완료 입력을 게시하고; 및
각각의 호스트 명령을 실행한 후, 상기 평균 속도를 업데이트하도록 구성되는 SSD.
8. The method of claim 7,
The host interface layer is:
initiating a host command of the plurality of host commands;
post a completion input for each of the plurality of host commands; and
SSD configured to update the average speed after executing each host command.
제 7 항에 있어서,
상기 호스트는 상기 호스트-프로그램 가능한 가중치를 프로그램하기 위해 SSD로 호스트 명령을 전송하는 SSD.
8. The method of claim 7,
wherein the host sends a host command to the SSD to program the host-programmable weight.
제 7 항에 있어서,
상기 호스트 인터페이스 레이어는, 상기 기회 윈도우의 닫힘을 나타내는, 상기 평균 속도가 상기 임계 값을 초과함을 감지하도록 구성되고, 상기 플래시 변환 레이어는 활성 백그라운드 동작들을 중단 또는 축소시키도록 구성되는 SSD.
8. The method of claim 7,
the host interface layer is configured to detect that the average speed, indicating the closing of the opportunity window, exceeds the threshold value, and the flash translation layer is configured to suspend or reduce active background operations.
KR1020180023959A 2017-04-13 2018-02-27 Opportunity window hints for background operations in ssd KR102290372B1 (en)

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 US10353628B2 (en) 2017-04-13 2017-06-15 Opportunity window hints for background operations in SSD
US15/624,430 2017-06-15

Publications (2)

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

Family

ID=63790651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180023959A KR102290372B1 (en) 2017-04-13 2018-02-27 Opportunity window hints for background operations in ssd

Country Status (3)

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

Families Citing this family (10)

* 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 (en) * 2019-05-13 2023-02-10 湖南国科微电子股份有限公司 Nonvolatile storage medium data processing method and nonvolatile storage medium
KR20210001414A (en) 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 Memory system, memory controller and operation thereof
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
CN110764714B (en) * 2019-11-06 2021-07-27 深圳大普微电子科技有限公司 Data processing method, device and equipment and readable storage medium
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 (en) * 2021-06-09 2022-12-16 에스케이하이닉스 주식회사 Controller and operation method thereof
US11907573B2 (en) * 2021-06-21 2024-02-20 Western Digital Technologies, Inc. Performing background operations during host read in solid state memory device

Citations (3)

* 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

Family Cites Families (10)

* 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
KR102326945B1 (en) * 2014-03-14 2021-11-16 삼성전자 주식회사 Task Migration Method and Apparatus
US9383926B2 (en) 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
CN106201347B (en) * 2016-07-04 2019-07-26 联想(北京)有限公司 Information processing method and solid state hard disk

Patent Citations (3)

* 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

Also Published As

Publication number Publication date
CN108733579B (en) 2023-08-04
US10353628B2 (en) 2019-07-16
CN108733579A (en) 2018-11-02
US20180300084A1 (en) 2018-10-18
KR20180115614A (en) 2018-10-23

Similar Documents

Publication Publication Date Title
KR102290372B1 (en) Opportunity window hints for background operations in ssd
US9569118B2 (en) Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US10824352B2 (en) Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
US10101931B1 (en) Mitigating read errors following programming in a multi-level non-volatile memory
US9785575B2 (en) Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
US9588702B2 (en) Adapting erase cycle parameters to promote endurance of a memory
US9262321B2 (en) Adjustment of destage rate based on read and write response time requirements
US20160026402A1 (en) System and method for providing consistent, reliable, and predictable performance in a storage device
US20090132770A1 (en) Data Cache Architecture and Cache Algorithm Used Therein
US20170097773A1 (en) Expanding effective storage capacity of a data storage system while providing support for address mapping recovery
US10691343B2 (en) Reducing concurrency of garbage collection operations
US10268420B2 (en) System and method for consistent performance in a storage device
US11176035B2 (en) Data storage devices and data processing methods
US10101938B2 (en) Data storage system selectively employing multiple data compression techniques
CN112083873B (en) Method and device for intelligently identifying unreliable blocks of nonvolatile storage medium
US11775389B2 (en) Deferred error-correction parity calculations
US8838905B2 (en) Periodic destages from inside and outside diameters of disks to improve read response time via traversal of a spatial ordering of tracks
WO2021026036A1 (en) Read disturb scan consolidation
US11182087B2 (en) Modifying write performance to prolong life of a physical memory device
KR20220033976A (en) Enhanced read-ahead capability for storage devices
WO2024145166A1 (en) Systems, methods, and media for controlling background wear leveling in solid-state drives
TW202414231A (en) Systems, methods, and media for recovering worker shares from read prioritization
CN115793956A (en) Control method of storage device, and computer-readable storage medium

Legal Events

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