KR20210016203A - 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법 - Google Patents
스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법 Download PDFInfo
- Publication number
- KR20210016203A KR20210016203A KR1020190094235A KR20190094235A KR20210016203A KR 20210016203 A KR20210016203 A KR 20210016203A KR 1020190094235 A KR1020190094235 A KR 1020190094235A KR 20190094235 A KR20190094235 A KR 20190094235A KR 20210016203 A KR20210016203 A KR 20210016203A
- Authority
- KR
- South Korea
- Prior art keywords
- throttling
- performance
- level
- storage device
- interface channel
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/22—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
- G06F13/225—Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/4013—Management of data rate on the bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명에 따른 외부 호스트 장치와 인터페이스 채널을 통해 통신하도록 구성된 스토리지 장치의 동작 방법은 외부 호스트 장치로부터 복수의 쓰로틀링 레벨들 중 제1 쓰로틀링 레벨에 대한 정보를 수신하는 단계, 복수의 쓰로틀링 레벨들 및 복수의 쓰로틀링 성능들 사이의 관계를 포함하는 쓰로틀링 PDT(predefined table)을 기반으로, 인터페이스 채널이 복수의 쓰로틀링 성능들 중 제1 쓰로틀링 레벨에 대응하는 제1 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계, 제1 쓰로틀링 성능을 갖는 인터페이스 채널을 통해 외부 호스트 장치로부터의 제1 입출력(I/O; input/output) 요청을 수신하는 단계, 및 제1 쓰로틀링 성능을 갖는 인터페이스 채널을 통해 제1 I/O 요청에 대응하는 제1 동작을 처리하는 단계를 포함한다.
Description
본 발명은 반도체 메모리에 관한 것으로 더욱 상세하게는 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
플래시 메모리는 컴퓨팅 시스템의 대용량 저장 매체로서 널리 사용된다. 플래시 메모리의 물리적 특성(예를 들어, 소거 후 쓰기)으로 인하여, 플래시 메모리를 기반으로 하는 대용량 저장 매체를 관리하기 위한 다양한 관리 동작들이 저장 매체 내부에서 수행된다. 이러한 관리 동작들로 인하여, 플래시 메모리를 기반으로 하는 대용량 저장 매체들의 성능이 달라질 수 있다.
본 발명의 목적은 복수의 쓰로틀링 레벨들 중 호스트의 요청에 따른 쓰로틀링 레벨을 기반으로 쓰로틀링 동작을 수행함으로써, 향상된 성능을 제공할 수 있는 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 외부 호스트 장치와 인터페이스 채널을 통해 통신하도록 구성된 스토리지 장치의 동작 방법은 상기 외부 호스트 장치로부터 복수의 쓰로틀링 레벨들 중 제1 쓰로틀링 레벨에 대한 정보를 수신하는 단계, 상기 복수의 쓰로틀링 레벨들 및 복수의 쓰로틀링 성능들 사이의 관계를 포함하는 쓰로틀링 PDT(predefined table)을 기반으로, 상기 인터페이스 채널이 상기 복수의 쓰로틀링 성능들 중 상기 제1 쓰로틀링 레벨에 대응하는 제1 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계, 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 외부 호스트 장치로부터의 제1 입출력(I/O; input/output) 요청을 수신하는 단계, 및 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제1 I/O 요청에 대응하는 제1 동작을 처리하는 단계를 포함한다.
본 발명의 실시 예에 따른 외부 호스트 장치와 인터페이스 채널을 통해 통신하도록 구성된 스토리지 장치의 동작 방법은 상기 외부 호스트 장치로부터 외부 쓰로틀링 레벨에 대한 정보를 수신하는 단계, 상기 스토리지 장치의 복수의 상태들 및 복수의 내부 쓰로틀링 레벨들 사이의 관계를 포함하는 내부 정책을 기반으로, 상기 복수의 내부 쓰로틀링 레벨들 중 상기 스토리지 장치의 현재 상태에 대응하는 내부 쓰로틀링 레벨을 결정하는 단계, 상기 외부 쓰로틀링 레벨 및 상기 내부 쓰로틀링 레벨을 기반으로 최종 쓰로틀링 레벨을 결정하는 단계, 복수의 쓰로틀링 레벨들 및 복수의 쓰로틀링 성능들 사이의 관계를 포함하는 쓰로틀링 PDT(predefined table)을 기반으로, 상기 인터페이스 채널이 상기 복수의 쓰로틀링 성능들 중 상기 최종 쓰로틀링 레벨에 대응하는 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계, 상기 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 외부 호스트 장치로부터의 입출력(I/O; input/output) 요청을 수신하는 단계, 및 상기 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 I/O 요청에 대응하는 동작을 처리하는 단계를 포함한다.
호스트 장치 및 인터페이스 채널을 통해 상기 호스트 장치와 통신하는 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법은 상기 호스트 장치에 의해, 제1 우선도를 갖는 제1 애플리케이션을 실행하는 단계, 상기 호스트 장치에 의해, 쓰로틀링 PDT(PreDefined Table)을 기반으로, 상기 제1 우선도에 대응하는 제1 쓰로틀링 레벨을 선택하는 단계, 상기 호스트 장치에 의해, 상기 제1 쓰로틀링 레벨에 대한 정보를 상기 스토리지 장치로 전송하는 단계, 상기 스토리지 장치에 의해, 상기 쓰로틀링 PDT를 기반으로, 상기 인터페이스 채널이 상기 제1 쓰로틀링 레벨에 대응하는 제1 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계, 상기 호스트 장치에 의해, 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제1 애플리케이션에 의해 발행된 제1 입출력(I/O; input/outpu) 요청을 상기 스토리지 장치로 전송하는 단계, 및 상기 스토리지 장치에 의해, 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해, 상기 제1 I/O 요청에 대응하는 제1 동작을 처리하는 단계를 포함한다.
본 발명의 실시 예들에 따르면, 스토리지 장치는 호스트의 명시적인 요청에 따라, 복수의 쓰로틀링 레벨들에 따른 적응적 쓰로틀링 동작 또는 동적 쓰로틀링 동작을 수행할 수 있다. 스토리지 장치는 호스트에게 최적화된 성능을 제공할 수 있으며, 이에 따라 향상된 성능을 갖는 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 예시적으로 보여주는 블록도이다.
도 3은 도 1의 스토리지 장치의 컨트롤러를 좀 더 상세하게 보여주는 블록도이다.
도 4는 도 1의 스토리지 장치의 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 5a 및 도 5b는 복수의 쓰로틀링 레벨들 각각에 대한 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 6은 도 1의 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 7a 내지 도 7d는 도 6의 순서도에 따른 동작을 설명하기 위한 도면들이다.
도 8은 도 1의 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 9는 도 8의 순서도에 따른 동작을 설명하기 위한 블록도이다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 11은 도 10의 내부 정책을 설명하기 위한 도면이다.
도 12는 도 10의 스토리지 장치의 동작을 예시적으로 보여주는 순서도이다.
도 13a 내지 도 13c는 도 10의 스토리지 장치의 내부 정책에 따른 내부 쓰로틀링 레벨을 선택하는 동작들을 설명하기 위한 도면들이다.
도 14는 본 발명에 따른 스토리지 시스템이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 15는 본 발명에 따른 스토리지 시스템이 적용된 SSD 시스템을 예시적으로 보여주는 블록도이다.
도 16은 본 발명에 따른 스토리지 시스템에 적용된 사용자 인터페이스를 예시적으로 보여주는 도면이다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 예시적으로 보여주는 블록도이다.
도 3은 도 1의 스토리지 장치의 컨트롤러를 좀 더 상세하게 보여주는 블록도이다.
도 4는 도 1의 스토리지 장치의 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 5a 및 도 5b는 복수의 쓰로틀링 레벨들 각각에 대한 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 6은 도 1의 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 7a 내지 도 7d는 도 6의 순서도에 따른 동작을 설명하기 위한 도면들이다.
도 8은 도 1의 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 9는 도 8의 순서도에 따른 동작을 설명하기 위한 블록도이다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 11은 도 10의 내부 정책을 설명하기 위한 도면이다.
도 12는 도 10의 스토리지 장치의 동작을 예시적으로 보여주는 순서도이다.
도 13a 내지 도 13c는 도 10의 스토리지 장치의 내부 정책에 따른 내부 쓰로틀링 레벨을 선택하는 동작들을 설명하기 위한 도면들이다.
도 14는 본 발명에 따른 스토리지 시스템이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 15는 본 발명에 따른 스토리지 시스템이 적용된 SSD 시스템을 예시적으로 보여주는 블록도이다.
도 16은 본 발명에 따른 스토리지 시스템에 적용된 사용자 인터페이스를 예시적으로 보여주는 도면이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서 사용되는 "부/유닛(unit)," "모듈(module)" 등과 같은 용어들은 본문에서 설명되는 다양한 기능들을 수행하도록 구성된 하드웨어, 소프트웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 시스템(1000)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC, 스마트폰 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
호스트(1100)는 스토리지 시스템(1000)의 제반 동작을 제어하도록 구성될 수 있다. 스토리지 장치(1200)는 스토리지 시스템(1000)의 대용량 저장 매체로서 사용될 수 있다. 예시적인 실시 예에서, 스토리지 장치(1200)는 호스트(1100)에 장착된 솔리드 스테이트 드라이브(SSD; solid state drive)일 수 있다. 또는 스토리지 장치(1200)는 호스트(1100)에 집적된 내장형 메모리 카드 또는 탈부착 가능한 메모리 카드일 수 있다.
스토리지 장치(1200)는 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함할 수 있다. 컨트롤러(1210)는 호스트(1100)로부터의 요청에 응답하여, 불휘발성 메모리 장치(1220)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(1220)에 저장된 데이터를 호스트(1100)로 전송할 수 있다.
불휘발성 메모리 장치(1220)는 컨트롤러(1210)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 컨트롤러(1210)로 전달할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(1220)는 낸드 플래시 메모리 장치일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
예시적인 실시 예에서, 호스트(1100) 및 스토리지 장치(1200)는 인터페이스 채널(IF)을 통해 서로 데이터를 주고 받을 수 있다. 예를 들어, 호스트(1100)는 인터페이스 채널(IF)을 통해 스토리지 장치(1200)로 데이터를 전송하거나 또는 스토리지 장치(1200)로부터 데이터를 수신할 수 있다. 예시적인 실시 예에서, 인터페이스 채널(IF)을 통한 데이터의 송수신 속도(또는 단위 시간 당 송수신되는 데이터의 크기)는 스토리지 장치(1200)의 성능 지표로 사용될 수 있다.
이하에서, 설명의 편의를 위하여, 스토리지 장치(1200)의 성능의 용어가 사용된다. 다르게 정의되지 않는 한, 스토리지 장치(1200)의 성능은 스토리지 장치(1200) 및 호스트(1100) 사이에서 전송되는 단위 시간당 데이터 양, 또는 데이터 전송 속도 등을 의미할 수 있다. 스토리지 장치(1200)의 성능은 랜덤 읽기, 랜덤 쓰기, 순차 쓰기, 또는 순차 읽기 등과 같은 다양한 지표들을 사용하여 표현될 수 있다.
예시적인 실시 예에서, 특정 상황에서, 스토리지 장치(1200)의 성능은 일정하게 유지되지 않을 수 있다. 예를 들어, 불휘발성 메모리 장치(1220)의 물리적인 특성 또는 다양한 환경 변수(예를 들어, 버퍼 메모리의 크기, 불휘발성 메모리 장치 내의 가용 메모리 용량 등)에 따라, 동일한 쓰기 요청에 대한 동작이 완료되는 시간이 상이할 수 있다. 이러한 시간 차이는 스토리지 장치(1200)의 성능 변동(performance fluctuation)을 유발할 수 있다. 즉, 스토리지 장치(1200)에서는, 다양한 환경 변수에 따라, 성능 변동(performance fluctuation)이 발생할 수 있다.
스토리지 장치(1200)는 균일한 성능을 제공하기 위하여, 쓰로틀링(throttling) 동작을 수행할 수 있다. 쓰로틀링 동작은 스토리지 장치(1200) 내부의 다양한 동작 파라미터들을 조절함으로써, 스토리지 장치(1200)의 성능을 균일하게 유지하는 동작을 가리킨다. 예시적인 실시 예에서, 다양한 파라미터들은 버퍼 메모리, 커맨드 큐, 호스트 인터페이스 등과 같이, 스토리지 장치(1200)의 성능(즉, 인터페이스 채널(I/O)을 통해 송수신되는 I/O 속도)과 관련된 구성 요소들에 대한 파라미터들을 가리킬 수 있다. 스토리지 장치(1200)는 상술된 바와 같은 다양한 파라미터들을 제어함으로써, 균일한 성능을 제공하기 위한 쓰로틀링 동작을 수행할 수 있다.
예시적인 실시 예에서, 종래의 스토리지 장치는 미리 정해진 조건에 따라 쓰로틀링 동작을 수행하기 때문에, 호스트(1100)에서 구현되는 다양한 기능에 대한 최적의 성능을 제공하지 못한다.
본 발명의 실시 예에 따른 스토리지 장치(1200)는 복수의 쓰로틀링 레벨들 중 호스트(1100)로부터의 요청에 대응하는 쓰로틀링 레벨을 기반으로 쓰로틀링 동작을 수행할 수 있다. 이 경우, 스토리지 장치(1200)는 호스트(1100)의 요청에 최적화된 성능을 제공할 수 있다. 또는, 스토리지 장치(1200)는 복수의 쓰로틀링 레벨들 중 어느 하나를 기반으로 쓰로틀링 동작을 수행하기 때문에, 다양한 조건들에 대하여 최적화된 성능 변동을 제공할 수 있다.
예를 들어, 호스트(1100)는 스토리지 관리 모듈(1101)을 포함할 수 있다. 스토리지 관리 모듈(1101)은 스토리지 장치(1200)의 성능을 관리 또는 제어하도록 구성될 수 있다. 예시적인 실시 예에서, 스토리지 관리 모듈(1101)은 스토리지 장치(1200)의 제조업체에서 제공된 소프트웨어 형태의 프로그램 또는 장치 드라이버일 수 있다. 스토리지 관리 모듈(1101)은 호스트(1100)의 프로세서에 의해 구동될 수 있다.
스토리지 관리 모듈(1101)은, 호스트(1100)의 특정 동작 조건에서, 컨트롤러(1210)로부터 쓰로틀링 PDT(1211)(Throttling PreDefined Table)을 수신할 수 있다. 예시적인 실시 예에서, 호스트(1100)의 특정 동작 조건은 초기화 동작, 특정 애플리케이션 실행, 또는 쓰로틀링 요구 발생 등과 같은 다양한 조건들을 포함할 수 있다. 쓰로틀링 PDT(1211)는 복수의 쓰로틀링 레벨들 각각에 대한 성능 변동 수준(performance fluctuation level) 및 타겟 성능(target performance)에 대한 정보를 포함할 수 있다.
스토리지 관리 모듈(1101)은 쓰로틀링 PDT(1211)를 기반으로, 복수의 쓰로틀링 레벨들 중 현재 요구되는 최적의 성능과 대응되는 쓰로틀링 레벨을 선택할 수 있다. 스토리지 관리 모듈(1101)은 선택된 쓰로틀링 레벨에 대한 정보를 스토리지 장치(1200)로 전송할 수 있다.
스토리지 장치(1200)의 컨트롤러(1210)는 쓰로틀링 관리자(1212)를 더 포함할 수 있다. 쓰로틀링 관리자(1212)는 호스트(1100)의 스토리지 관리 모듈(1101)로부터 수신된 쓰로틀링 레벨을 기반으로 스토리지 장치(1200)의 다양한 동작 파라미터들을 설정할 수 있다. 이후에, 스토리지 장치(1200)는 설정된 동작 파라미터들을 기반으로 호스트(1100)와 인터페이스 채널(IF)을 통해 통신할 수 있다. 이 경우, 스토리지 장치(1200)는 호스트(1100)의 스토리지 관리 모듈(1101)에 의해 결정된 쓰로틀링 레벨과 대응되는 성능을 지원할 수 있을 것이다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1200)는 복수의 쓰로틀링 레벨들 중 호스트(1100)의 요청에 대응하는 쓰로틀링 레벨을 기반으로, 호스트(1100)와 통신할 수 있다. 따라서, 향상된 성능 및 향상된 신뢰성을 갖는 스토리지 장치(1200)가 제공된다. 본 발명의 실시 예에 따른 호스트(1100) 및 스토리지 장치(1200)의 동작 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 스토리지 시스템의 소프트웨어 계층을 예시적으로 보여주는 블록도이다. 도 2의 블록도가 스토리지 시스템(1000)의 소프트웨어 계층을 보여주나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 2에 도시된 다양한 구성 요소들 중 일부 또는 전부는 소프트웨어, 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
도 1 및 도 2를 참조하면, 스토리지 시스템(1000)의 소프트웨어 계층은 스토리지 관리 모듈(1101), 애플리케이션(1110), 파일 시스템(1120), 장치 드라이버(1130), 및 플래시 변환 계층(1201)을 포함할 수 있다. 예시적인 실시 예에서, 스토리지 관리 모듈(1101), 애플리케이션(1110), 파일 시스템(1120), 및 장치 드라이버(1230)는 호스트(1100)에 포함되거나 또는 호스트(1100)에 포함된 다른 구성 요소들(예를 들어, 프로세서(Processor) 등)에 의해 실행될 수 있다.
애플리케이션(1110)은 호스트(1100) 상에서 실행되는 다양한 응용 프로그램들을 포함할 수 있다. 파일 시스템(1120)은 애플리케이션(1110)에서 사용되는 파일 또는 데이터를 조직화하는 역할을 수행할 수 있다. 예를 들어, 파일 시스템(1120)은 스토리지 장치(1200)의 저장 공간을 논리적 어드레스로 관리할 수 있다. 예시적인 실시 예에서, 파일 시스템(1120)은 호스트(1100) 상에서 구동되는 운영 체제(Operating System)에 따라 다른 형태를 가질 수 있다. 예를 들어, 파일 시스템(1120)은 FAT(File Allocation Table), FAT32, NTFS(NT File System), HFS(Hierarchical File System), JSF2(Journaled File System2), XFS, ODS-5(On-Disk Structure-5), UDF, ZFS, UFS(Unix File System), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, 또는 WinFS 등과 같은 다양한 파일 시스템들 중 어느 하나를 포함할 수 있다.
장치 드라이버(1230)는 파일 시스템(1120)에서 관리되는 정보를 스토리지 장치(1200)에서 인식 가능한 정보로 변환하는 역할을 수행할 수 있다.
스토리지 관리 모듈(1101)은 애플리케이션(1110), 파일 시스템(1120), 및 장치 드라이버(1130)에서의 정보를 관리하도록 구성될 수 있다. 예를 들어, 스토리지 관리 모듈(1101)은 호스트(1100) 상에서 실행되는 애플리케이션(1110)에 대한 속성 정보를 관리할 수 있다. 스토리지 관리 모듈(1101)은 스토리지 장치(1200)의 다양한 조건(예를 들어, 저장 용량, 오버프로비져닝 용량 등)에 따라 파일 시스템(1120)에서 관리되는 논리적 어드레스를 관리할 수 있다. 스토리지 관리 모듈(1101)은 호스트(1100) 및 스토리지 장치(1200) 사이의 인터페이스 채널(IF)의 타입에 따라, 장치 드라이버(1130)를 관리하도록 구성될 수 있다.
플래시 변환 계층(1201)은 스토리지 장치(1200)의 컨트롤러(1210) 상에서 구동될 수 있다. 플래시 변환 계층(1201)은 호스트(1100)의 파일 시스템(1120)에 의해 관리되는 논리적 어드레스를 불휘발성 메모리 장치(1220)의 물리적 어드레스와 맵핑시키고, 맵핑 정보를 관리하도록 구성될 수 있다. 플래시 변환 계층(1201)은 불휘발성 메모리 장치(1220)의 다양한 관리 동작들(예를 들어, 가비지 콜렉션, 웨어 레벨링, 배드 블록 교체, 영역 관리, 맵핑 테이블 관리 등)을 수행하도록 구성될 수 있다.
도 3은 도 1의 스토리지 장치의 컨트롤러를 좀 더 상세하게 보여주는 블록도이다. 이하에서, 본 발명의 실시 예들을 용이하게 설명하기 위하여, 쓰로틀링 레벨(throttling level), 스토리지 장치(1200)의 쓰로틀링 성능(throttling performance), 또는 변동 수준(fluctuation level) 등과 같은 용어들이 사용된다. 쓰로틀링 레벨은 스토리지 장치(1200)에서 지원되는 쓰로틀링 동작에 대한 수준을 가리킬 수 있다. 스토리지 장치(1200)의 쓰로틀링 성능은 대응하는 쓰로틀링 레벨에 대한, 스토리지 장치(1200)와 호스트(1100) 사이의 I/O에 대한 평균 속도 또는 최저 속도를 의미할 수 있다. 변동 수준은 대응하는 쓰로틀링 레벨에 대한, 스토리지 장치(1200)와 호스트(1100) 사이의 I/O에서의 최대치 성능 및 최소치 성능의 차이를 의미할 수 있다.
예시적인 실시 예에서, 쓰로틀링 레벨이 높을수록 쓰로틀링의 강도가 강한 것으로 가정한다. 쓰로틀링 강도가 강한 것은, 스토리지 장치(1200)의 쓰로틀링 성능 및 변동 수준이 감소하는 것을 의미한다. 즉, 쓰로틀링 강도가 상대적으로 약할수록, 스토리지 장치(1200)의 성능은 상대적으로 향상될 수 있으며, 쓰로틀링 강도가 상대적으로 강할수록 스토리지 장치(1200)는 상대적으로 균일한 또는 안정적인 성능을 제공할 수 있다.
이하에서, 다르게 정의되지 않는 한, 상술된 용어들은 앞서 설명된 개념으로 이해될 것이다. 그러나, 상술된 용어들은 단순히 본 발명의 실시 예들을 용이하게 설명하기 위한 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1 및 도 3을 참조하면, 스토리지 장치(1200)의 컨트롤러(1210)는 쓰로틀링 PDT(1211), 쓰로틀링 관리자(1212), 프로세서(1213), 램(1214), 관리 모듈(1215), 호스트 인터페이스 회로(1216), 및 불휘발성 메모리 인터페이스 회로(1217)를 포함할 수 있다.
쓰로틀링 PDT(1211)는 복수의 쓰로틀링 레벨들 각각에 대한 쓰로틀링 성능 및 변동 수준에 대한 정보를 포함할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1200)는 복수의 쓰로틀링 레벨들 중 어느 하나를 기반으로 쓰로틀링 동작을 수행할 수 있다. 좀 더 상세한 예로서, 스토리지 장치(1200)가 제1 쓰로틀링 레벨을 기반으로 쓰로틀링 동작을 수행하는 경우, 스토리지 장치(1200)의 성능(또는 I/O 속도)는 제1 쓰로틀링 성능일 수 있고, 성능 변동 수준은 제1 변동 수준일 수 있다. 스토리지 장치(1200)가 제2 쓰로틀링 레벨을 기반으로 쓰로틀링 동작을 수행하는 경우, 스토리지 장치(1200)의 성능(또는 I/O 속도)는 제2 쓰로틀링 성능일 수 있고, 성능 변동 수준은 제2 변동 수준일 수 있다.
상술된 실시 예에서, 제2 쓰로틀링 레벨이 제1 쓰로틀링 레벨보다 높은 수준인 경우, 제2 쓰로틀링 성능은 제1 쓰로틀링 성능보다 낮을 수 있으나, 제2 변동 수준은 제1 변동 수준보다 작을 수 있다. 즉, 쓰로틀링 레벨이 높아질수록 스토리지 장치(1200)의 성능 또는 평균 성능은 낮아질 수 있으나, 성능에 대한 변동 수준은 감소될 수 있다. 다시 말해서, 쓰로틀링 레벨이 높아질수록, 스토리지 장치(1200)의 성능은 더욱 안정적으로 또는 더욱 균일하게 유지될 수 있다.
쓰로틀링 관리자(1212)는 스토리지 장치(1200)의 쓰로틀링 동작을 제어하도록 구성될 수 있다. 예를 들어, 쓰로틀링 관리자(1212)는 호스트(1100)로부터 선택된 쓰로틀링 레벨에 대한 정보를 수신할 수 있다. 쓰로틀링 관리자(1212)는 선택된 쓰로틀링 레벨에 대응하는 쓰로틀링 동작이 수행되도록, 스토리지 장치(1200)의 다양한 동작 파라미터들을 제어할 수 있다.
프로세서(1213)는 컨트롤러(1210)의 제반 동작을 제어할 수 있다. RAM(1214)은 컨트롤러(1210)의 동작 메모리, 버퍼 메모리, 또는 캐시 메모리로서 사용될 수 있다. RAM(1214)은 컨트롤러(1210)가 동작하는데 요구되는 다양한 정보를 저장하거나 또는 관리할 수 있다. 예시적인 실시 예에서, 쓰로틀링 PDT(1211) 및 쓰로틀링 관리자(1212)는 소프트웨어 형태로 구현될 수 있으며, 소프트웨어 형태로 구현된 쓰로틀링 PDT(1211) 및 쓰로틀링 관리자(1212)는 RAM(1214)에 저장될 수 있다. RAM(1214)에 저장된 쓰로틀링 PDT(1211) 및 쓰로틀링 관리자(1212)는 프로세서(1213)에 의해 구동되거나, 실행되거나, 또는 관리될 수 있다.
관리 모듈(1215)은 스토리지 장치(1200)가 동작하는데 요구되는 다양한 관리 동작을 수행하도록 구성될 수 있다. 예를 들어, 관리 모듈(1215)은 앞서 설명된 바와 같은 플래시 변환 계층(1201)을 포함할 수 있다. 관리 모듈(1215)은 스토리지 장치(1200)가 효율적으로 사용될 수 있도록, 가비지 콜렉션, 배드 블록 교체, 웨어 레벨링, 맵핑 테이블 관리 등과 같은 다양한 관리 동작을 수행할 수 있다.
컨트롤러(1210)는 호스트 인터페이스 회로(1216)를 통해 호스트(1100)와 통신할 수 있다. 예시적인 실시 예에서, 호스트 인터페이스 회로(1216)는 인터페이스 채널(IF)에 대응하는 통신 방식을 기반으로 구현될 수 있다. 예를 들어, 호스트 인터페이스 회로(1216)는 SATA(Serial ATA) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express) 인터페이스, UFS(Universal Flash Storage) 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다. 예시적인 실시 예에서, 쓰로틀링 동작이 수행될 경우, 쓰로틀링 성능 또는 변동 수준을 만족시키기 위하여, 호스트 인터페이스 회로(1216)의 다양한 동작 파라미터들이 제어될 수 있다. 즉, 다양한 동작 파라미터는 호스트 인터페이스 회로(1216)의 동작을 제어하는 정보를 포함할 수 있다.
컨트롤러(1210)는 불휘발성 메모리 인터페이스 회로(1217)를 통해 불휘발성 메모리 장치(1220)와 통신할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 인터페이스 회로(1217)는 낸드 인터페이스를 기반으로 구현될 수 있다. 불휘발성 메모리 인터페이스 회로(1217)는 불휘발성 메모리 장치(1220)와 커맨드(CMD), 어드레스(ADDR), 데이터(DATA), 또는 제어 신호(CTRL)를 주고 받을 수 있다.
도 4는 도 1의 스토리지 장치의 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다. 도 4의 실시 예에서, 불휘발성 메모리 장치(1220)가 낸드 플래시 메모리 장치인 것으로 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1, 도 3, 및 도 4를 참조하면, 불휘발성 메모리 장치(1220)는 메모리 셀 어레이(1221), 어드레스 디코더(1222), 제어 로직 및 전압 발생 회로(123), 페이지 버퍼(1224), 및 입출력 회로(1225)를 포함할 수 있다. 메모리 셀 어레이(1221)는 복수의 메모리 블록들을 포함할 수 있다. 복수의 메모리 블록들 각각은 복수의 셀 스트링들을 포함할 수 있고, 복수의 셀 스트링들 각각은 비트 라인 및 공통 소스 라인 사이에 직렬 연결된 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들 각각은 스트링 선택 라인(SSL), 워드라인(WL), 및 접지 선택 라인(GSL)과 연결될 수 있다.
어드레스 디코더(1222)는 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(1221)와 연결될 수 있다. 어드레스 디코더(1222)는 컨트롤러(1210)로부터 어드레스(ADDR)를 수신할 수 있다. 어드레스 디코더(1222)는 어드레스(ADDR)를 디코딩하고, 디코딩된 결과를 기반으로 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)의 전압을 제어할 수 있다.
페이지 버퍼(1223)는 비트라인들(BL)을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 페이지 버퍼(1223)는 메모리 셀 어레이(121)로부터 읽은 데이터를 임시 저장하거나 또는 메모리 셀 어레이(1221)에 저장될 데이터를 임시 저장하도록 구성될 수 있다.
입출력 회로(1224)는 컨트롤러(1210)로부터 수신된 데이터(DATA)를 데이터 라인(DL)을 통해 페이지 버퍼(1223)로 제공하거나 또는 데이터 라인(DL)을 통해 수신된 데이터(DATA)를 메모리 컨트롤러(1210)로 제공할 수 있다. 예시적인 실시 예에서, 입출력 회로(1224)는 데이터 스트로브 신호(DQS)(미도시)에 동기하여, 메모리 컨트롤러(1210)와 데이터(DATA)를 주고 받을 수 있다.
제어 로직 및 전압 발생 회로(1225)는 불휘발성 메모리 장치(1220)의 제반 동작을 제어할 수 있다. 예를 들어, 제어 로직 회로(1225)는 컨트롤러(1210)로부터의 커맨드(CMD) 또는 제어 신호(CTRL)를 기반으로 불휘발성 메모리 장치(1220)가 다양한 동작(예를 들어, 프로그램 동작, 읽기 동작, 소거 동작 등)을 수행하도록 불휘발성 메모리 장치(1220)의 각 구성 요소들을 제어할 수 있다.
도 5a 및 도 5b는 복수의 쓰로틀링 레벨들 각각에 대한 스토리지 장치의 동작을 설명하기 위한 도면들이다. 도 5a를 참조하여, 도 1의 쓰로틀링 PDT(1211)가 설명되고, 도 5b를 참조하여, 쓰로틀링 레벨에 따른 스토리지 장치(1200)의 동작이 설명된다. 도 5b의 가로축은 시간을 가리키고, 세로축은 스토리지 장치(1200)의 I/O 속도를 가리킨다. 도면의 간결성을 위하여, 도 5b의 실시 예에서, 복수의 쓰로틀링 레벨들(THLV_0~THLV_n) 중 일부 쓰로틀링 레벨들(THLV_0~THLV_3)에 대한 성능 그래프가 도시되나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1, 도 3, 도 5a, 및 도 5b를 참조하면, 컨트롤러(1210)의 쓰로틀링 PDT(1211)는 도 5a에 도시된 바와 같은 정보를 포함할 수 있다. 예를 들어, 쓰로틀링 PDT(1211)는 복수의 쓰로틀링 레벨들(THLV_0~THLV_n) 각각에 대한, 변동 수준들(FL_0~FL_n) 및 쓰로틀링 성능들(Perf_0~Perf_n)에 대한 정보를 포함할 수 있다.
좀 더 상세한 예로서, 도 5b에 도시된 바와 같이, 스토리지 장치(1200)는 제0 시점(t0)으로부터 제1 시점(t1)까지의 구간 동안, 제0 쓰로틀링 레벨(THLV_0)을 기반으로 쓰로틀링 동작을 수행할 수 있다. 이 경우, 스토리지 장치(1200)의 성능(즉, 평균 성능)은 제0 쓰로틀링 성능(Perf_0)일 수 있고, 변동 수준은 제0 변동 수준(FL_0)일 수 있다. 예시적인 실시 예에서, 제0 쓰로틀링 레벨(THLV_0)은 쓰로틀링 동작이 수행되지 않는 경우(즉, throttling off)를 가리킬 수 있다. 예시적인 실시 예에서, 쓰로틀링 동작이 수행되지 않는 경우, 인터페이스 채널(IF)은 노멀 성능을 가질 수 있다. 예시적인 실시 예에서, 노멀 성능을 갖는 인터페이스 채널(IF)의 평균 성능은 쓰로틀링 동작이 수행된 이후의 인터페이스 채널(IF)의 평균 성능보다 높을 수 있고, 노멀 성능을 갖는 인터페이스 채널(IF)의 변동 수준은 쓰로틀링 동작이 수행된 이후의 인터페이스 채널(IF)의 변동 수준보다 클 수 있다.
이 후에, 제1 시점(t1)에서, 호스트(1100)의 요청에 의해 쓰로틀링 레벨이 제2 쓰로틀링 레벨(LV2)로 변경될 수 있고, 스토리지 장치(1200)는 제2 쓰로틀링 레벨(THLV_2)을 기반으로 쓰로틀링 동작을 수행할 수 있다. 이 경우, 스토리지 장치(1200)의 성능(즉, 평균 성능)은 제1 쓰로틀링 성능(Perf_1)일 수 있고, 변동 수준은 제1 변동 수준(FL_1)일 수 있다.
이 후에, 제2 시점(t2)에서, 호스트(1100)의 요청에 의해 쓰로틀링 레벨이 제2 쓰로틀링 레벨(LV2)로 변경될 수 있고, 스토리지 장치(1200)는 제2 쓰로틀링 레벨(THLV_2)을 기반으로 쓰로틀링 동작을 수행할 수 있다. 이 경우, 스토리지 장치(1200)의 성능(즉, 평균 성능)은 제2 쓰로틀링 성능(Perf_2)일 수 있고, 변동 수준은 제2 변동 수준(FL_2)일 수 있다.
이 후에, 제3 시점(t3)에서, 호스트(1100)의 요청에 의해 쓰로틀링 레벨이 제3 쓰로틀링 레벨(LV3)로 변경될 수 있고, 스토리지 장치(1200)는 제3 쓰로틀링 레벨(THLV_3)을 기반으로, 제3 시점(t3)으로부터 제4 시점(t4)까지의 구간 동안, 쓰로틀링 동작을 수행할 수 있다. 이 경우, 스토리지 장치(1200)의 성능(즉, 평균 성능)은 쓰로틀링 제2 성능(Perf_3)일 수 있다. 예시적인 실시 예에서, 제3 쓰로틀링 레벨(THLV_3)은 스토리지 장치(1200)의 성능이 균일하게 유지되도록 하는 레벨을 가리킬 수 있으며, 이 경우, 변동 수준은 "0"일 수 있다.
예시적인 실시 예에서, 제1 쓰로틀링 레벨(THL_1)은 제0 쓰로틀링 레벨(THLV_0)보다 높을 수 있고, 제2 쓰로틀링 레벨(THL_2)은 제1 쓰로틀링 레벨(THLV_1)보다 높을 수 있고, 제3 쓰로틀링 레벨(THL_3)은 제2 쓰로틀링 레벨(THLV_2)보다 높을 수 있다. 이 경우, 도 5b에 도시된 바와 같이, 제1 변동 수준(FL_1)은 제0 변동 수준(FL_0)보다 작고, 제2 변동 수준(FL_2)은 제1 변동 수준(FL_1)보다 작을 수 있다. 또는, 제1 쓰로틀링 성능(Perf_1)은 제0 쓰로틀링 성능(Perf_0)보다 낮고, 제2 쓰로틀링 성능(Perf_2)은 제1 쓰로틀링 성능(Perf_1)보다 낮고, 제3 쓰로틀링 성능(Perf_3)은 제2 쓰로틀링 성능(Perf_2)보다 낮을 수 있다. 즉, 쓰로틀링 레벨이 증가할수록, 쓰로틀링 성능 및 변동 수준이 감소됨으로써, 스토리지 장치(1200)의 성능이 균일해 질 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(1200)는, 호스트(1100)의 요청에 따라, 복수의 쓰로틀링 레벨들(THLV_0~THLV_n)을 기반으로 쓰로틀링 동작을 수행할 수 있다. 따라서, 호스트(1100)의 다양한 기능에 대한 최적의 성능(예를 들어, 최대 성능 우선, 일관성 우선 등)을 제공할 수 있기 때문에, 향상된 성능을 갖는 스토리지 장치(1200)가 제공된다.
도 6은 도 1의 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다. 도 1, 도 5a, 도 5b, 및 도 6을 참조하면, S110 단계에서, 호스트(1100)는 쓰로틀링이 요구되는지 판별할 수 있다. 예를 들어, 호스트(1100)는 복수의 애플리케이션들 각각에 대한 우선도(priority)를 관리할 수 있다. 스토리지 장치(1200)가 쓰로틀링 동작을 수행하지 않는 상황에서, 호스트(1100)가 우선도가 성능 일관성과 관련된 제1 애플리케이션을 실행할 수 있다. 이 경우, 제1 애플리케이션이 성능 일관성과 관련되거나 또는 성능 일관성을 필요로 하기 때문에, 호스트(1100)는 쓰로틀링 동작이 요구됨을 인지할 수 있다. 예시적인 실시 예에서, 성능 일관성이 요구되는 경우, 상대적으로 높은 수준의 쓰로틀링 레벨을 기반으로 하는 쓰로틀링 동작이 요구될 수 있다.
S120 단계에서, 호스트(1100)는 스토리지 장치(1200)로 쓰로틀링 PDT(1211)를 요청할 수 있다. S130 단계에서, 스토리지 장치(1200)는 쓰로틀링 PDT(1211)에 대한 정보를 연산할 수 있다. 예를 들어, 도 5a를 참조하여 설명된 바와 같은 쓰로틀링 PDT(1211)는 스토리지 장치(1200)의 컨트롤러(1210)의 램(1215)에 저장될 수 있다. 컨트롤러(1210)는 램(1215)에 저장된 쓰로틀링 PDT(1211) 전부 또는 일부를 읽을 수 있다.
예시적인 실시 예에서, 쓰로틀링 PDT(1211)는 스토리지 장치(1200)의 제조 과정 또는 초기화 과정에서, 미리 결정될 수 있다. 또는 쓰로틀링 PDT(1211)는 특정 조건 하에서, 스토리지 장치(1200)의 구동 중에, 갱신되거나 또는 재구성될 수 있다. 예를 들어, 컨트롤러(1210)는 스토리지 장치(1200)의 성능을 주기적으로 모니터링하고, 모니터링된 성능을 기반으로 쓰로틀링 PDT(1211)를 선택적으로 갱신할 수 있다.
S140 단계에서, 스토리지 장치(1200)는 쓰로틀링 PDT(1211)에 대한 정보를 호스트(1100)로 전송할 수 있다. S150 단계에서, 호스트(1100)는 쓰로틀링 PDT(1211)를 기반으로, 복수의 쓰로틀링 레벨들(THLV_1~THLV_n) 중 하나를 선택할 수 있다.
예를 들어, 성능 일관성과 관련된 우선도를 갖는 제1 애플리케이션이 실행된 경우, 호스트(1100)는 쓰로틀링 PDT(1211)에 포함된 복수의 쓰로틀링 레벨들(THLV_1~THLV_n) 중 가장 높은 수준 또는 상대적으로 높은 수준의 쓰로틀링 레벨을 선택할 수 있다. 또는 최대 성능과 관련된 우선도를 갖는 다른 애플리케이션이 실행된 경우, 호스트(1100)는 쓰로틀링 PDT(1211)에 포함된 복수의 쓰로틀링 레벨들(THLV_1~THLV_n) 중 가장 낮은 수준의 쓰로틀링 레벨을 선택할 수 있다. 또는, 특정 성능 이상 그리고 특정 변동 수준 이하의 조건들과 관련된 우선도를 갖는 쓰로틀링 동작이 요구되는 경우, 호스트(1100)는 쓰로틀링 PDT(1211)에 포함된 복수의 쓰로틀링 레벨들(THLV_1~THLV_n) 중 상술된 조건들에 부합하는 쓰로틀링 레벨을 선택할 수 있다.
S160 단계에서, 호스트(1100)는 선택 쓰로틀링 레벨(THLV_s)에 대한 정보를 스토리지 장치(1200)로 전송할 수 있다. S170 단계에서, 스토리지 장치(1200)는 선택 쓰로틀링 레벨(THLV_s)을 기반으로 스토리지 장치(1200)의 동작 파라미터들을 설정할 수 있다. 예를 들어, 스토리지 장치(1200)는 선택된 쓰로틀링 레벨(THLV_s)을 기반으로, 버퍼 해제 시점, 응답 전송 시점, 데이터 전송 폭, 커맨드 큐 등과 같이 스토리지 장치(1200)의 성능과 관련된 구성 요소들의 다양한 동작 파라미터들 또는 호스트 인터페이스 회로(1216)의 다양한 동작 파라미터들을 설정 또는 재설정할 수 있다. 예시적인 실시 예에서, 스토리지 장치(1200)가 동작 파라미터들을 설정함으로써, 스토리지 장치(1200)의 성능, 다시 말해서, 인터페이스 채널(IF)은 선택 쓰로틀링 레벨(THLV_s)에 대응하는 쓰로틀링 성능을 가질 수 있다.
S180 단계에서, 호스트(1100) 및 스토리지 장치(1200)는 설정된 동작 파라미터들을 기반으로 I/O 동작을 수행할 수 있다. 예를 들어, 호스트(1100)는 스토리지 장치(1200)에 데이터를 저장하기 위하여 데이터를 스토리지 장치(1200)로 전송하거나, 또는 스토리지 장치(1200)에 저장된 데이터를 스토리지 장치(1200)로부터 수신할 수 있다. 이 때, 스토리지 장치(1200)의 동작 파라미터들은 호스트(1100)로부터의 선택 쓰로틀링 레벨(THLV_s)에 따라 설정되었으므로, 스토리지 장치(1200)는 선택된 쓰로틀링 레벨(THLV_s)에 따른 성능 및 변동 수준을 제공할 수 있다. 따라서, 스토리지 장치(1200)는 호스트(1100)의 요구에 따른 최적의 성능을 제공할 수 있다.
도 7a 내지 도 7d는 도 6의 순서도에 따른 동작을 설명하기 위한 도면들이다. 이하에서, 설명의 편의를 위하여, 호스트(1100)는 구동되는 애플리케이션의 우선도에 따라 스토리지 장치(1200)에 대한 쓰로틀링 레벨을 선택하는 것으로 가정한다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트(1100)는 애플리케이션의 우선도 이외에 다른 다양한 환경 변수들을 기반으로 스토리지 장치(1200)에 대한 쓰로틀링 레벨을 선택할 수 있다.
설명의 편의를 위하여, 도 7a 내지 도 7d의 실시 예들을 설명하는데 불필요한 구성 요소들은 각 도면에서 생략되며, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
도 7a 내지 도 7d를 참조하면, 스토리지 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다. 호스트(1100)는 스토리지 관리 모듈(1101)을 포함할 수 있고, 스토리지 장치(1200)는 쓰로틀링 PDT(1211) 및 쓰로틀링 관리자(1212)를 포함할 수 있다. 호스트(1100), 스토리지 관리 모듈(1101), 스토리지 장치(1200), 쓰로틀링 PDT(1211), 및 쓰로틀링 관리자(1212)는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 7a에 도시된 바와 같이, 호스트(1100)는 제1 내지 제3 애플리케이션들(APP1~APP3)을 실행할 수 있다. 제1 내지 제3 애플리케이션들(APP1~APP3)은 각각 제1 내지 제3 I/O들(I/O_1~I/O_3)을 발생시킬 수 있다.
호스트(1100)는 제1 내지 제3 애플리케이션들(APP1~APP3) 각각에 대한 우선도(PR; priority)를 관리할 수 있다. 예를 들어, 제1 애플리케이션(APP1)의 우선도는 성능(Perf.)일 수 있다. 즉, 제1 애플리케이션(APP1)으로부터 발생된 제1 I/O(I/O_1)는 스토리지 장치(1200)와의 통신에서, 높은 성능 또는 높은 평균 성능을 필요로 할 수 있다. 제2 애플리케이션(APP2)의 우선도는 레이턴시(Latency)일 수 있다. 즉, 제2 애플리케이션(APP2)으로부터 발생된 제2 I/O(I/O_2)는 스토리지 장치(1200)와의 통신에서, 낮은 레이턴시를 필요로 할 수 있다. 제3 애플리케이션(APP3)의 우선도는 성능 일관성(Cons.)일 수 있다. 즉, 제3 애플리케이션(APP3)으로부터 발생된 제3 I/O(I/O_3)는 스토리지 장치(1200)와의 통신에서, 균일한 수준의 성능을 필요로 할 수 있다. 상술된 제1 내지 제3 애플리케이션들(APP1~APP3) 각각의 우선도는 호스트(1100)에 의해 관리될 수 있다.
예시적인 실시 예에서, 비록 도면에 도시되지는 않았으나, 호스트(1100)는 제1 내지 제3 애플리케이션들(APP1~APP3) 각각의 우선도를 관리하도록 구성된 우선도 관리 모듈을 더 포함할 수 있다. 우선도 관리 모듈은 호스트(1100) 상에서 실행되는 복수의 애플리케이션들 각각에 대한 우선도를 관리할 수 있다. 우선도 관리 모듈은 사용자의 요청에 따라 복수의 애플리케이션들 각각에 대한 우선도를 관리하거나 또는 변경할 수 있다. 또는 우선도 관리 모듈은 복수의 애플리케이션들 각각의 실행 방식 또는 실행 환경을 학습하고, 학습 결과를 기반으로 복수의 애플리케이션들 각각에 대한 우선도를 관리하거나 또는 변경할 수 있다.
다음으로, 도 7b에 도시된 바와 같이, 호스트(1100) 상에서, 제1 애플리케이션(APP1)이 실행될 수 있다[1]. 스토리지 관리 모듈(1101)은 호스트(1100) 상에서, 제1 애플리케이션(APP1)이 실행된 것에 응답하여, 스토리지 관리 모듈(1101)은 스토리지 장치(1200)로 쓰로틀링 PDT(1211)를 요청(RQ PDT)할 수 있다[2]. 스토리지 장치 (1200)는 쓰로틀링 PDT(1211)에 대한 요청(RQ PDT)에 응답하여, 쓰로틀링 PDT(1211)에 대한 정보를 호스트(1100)의 스토리지 관리 모듈(1101)로 제공할 수 있다[3]. 예시적인 실시 예에서, 스토리지 관리 모듈(1101)이 쓰로틀링 PDT(1211)에 대한 정보를 포함한 경우, 도 7b의 실시 예에 따른 동작은 생략될 수 있다.
다음으로, 도 7c에 도시된 바와 같이, 스토리지 관리 모듈(1101)은 쓰로틀링 PDT(1211)를 기반으로, 제1 애플리케이션(APP1)의 우선도(PR)에 대응하는 쓰로틀링 레벨(THLV_s)을 선택할 수 있다[4]. 예를 들어, 제1 애플리케이션(APP1)의 우선도(PR1)는 성능(Pref.)과 관련될 수 있다. 이 경우, 도 5a 및 도 5b를 참조하여 설명된 바와 같이, 평균 성능이 가장 높은 제0 쓰로틀링 레벨(THLV_0)이 선택 쓰로틀링 레벨(THLV_s)로서 선택될 수 있다.
스토리지 관리 모듈(1101)은 선택 쓰로틀링 레벨(THLV_s)에 대한 정보를 스토리지 장치(1200)로 전송할 수 있다[5]. 스토리지 장치(1200)의 쓰로틀링 관리자(1212)는 선택 쓰로틀링 레벨(THLV_s)을 기반으로 스토리지 장치(1200)의 동작 파라미터들을 설정할 수 있다[6]. 예를 들어, 쓰로틀링 관리자(1212)는 선택 쓰로틀링 레벨(THLV_s)에 대응하는 평균 성능 및 성능에 대한 변동 수준이 만족되도록 스토리지 장치(1200)의 동작 파라미터들을 설정 또는 재설정할 수 있다.
이후에, 호스트(1100) 및 스토리지 장치(1200)는 제1 애플리케이션(APP1)에 의해 발생된 제1 I/O(I/O_1)에 대한 동작을 수행할 수 있다[7]. 이 경우, 스토리지 장치(1200)는 호스트(1100)에 의한 선택 쓰로틀링 레벨(THLV_s)을 기반으로 동작 파라미터를 설정한 상태이므로, 제1 애플리케이션(APP1)의 우선도(PR)에 적합한 변동 수준 또는 쓰로틀링 성능을 제공 또는 지원할 수 있다.
도 7d에 도시된 바와 같이, 제1 애플리케이션(APP1)이 실행하는 도중에, 또는 제1 애플리케이션(APP1)이 종료된 이후에, 제3 애플리케이션(APP3)이 실행될 수 있다[8]. 제3 애플리케이션(APP3)이 실행된 것에 응답하여, 스토리지 관리 모듈(1101)은 선택 쓰로틀링 레벨(THLV_s)을 변경할 수 있다. 예를 들어, 제3 애플리케이션(APP3)의 우선도(PR)는 성능 일관성(Cons.)과 관련될 수 있다. 이 경우, 상대적으로 높은 수준의 쓰로틀링 레벨(예를 들어, 도 5b의 제3 쓰로틀링 레벨(THLV_3))이 요구될 수 있다. 이에 따라, 스토리지 관리 모듈(1101)은 상대적으로 높은 수준의 쓰로틀링 레벨을 선택 쓰로틀링 레벨(THLV_s)로서 선택할 수 있다.
스토리지 관리 모듈(1101)은 변경된 선택 쓰로틀링 레벨(THLV_s)에 대한 정보를 스토리지 장치(1200)로 전송하고[10], 스토리지 장치(1200)의 쓰로틀링 관리자(1212)는 변경된 선택 쓰로틀링 레벨(THLV_s)을 기반으로 동작 파라미터들을 설정 또는 재설정할 수 있다[11]. 이후에, 호스트(1100) 및 스토리지 장치(1200)는 제3 애플리케이션(APP3)에 의해 발생된 제3 I/O(I/O_3)를 처리할 수 있다.
도 7d에 도시된 실시 예에서, 제3 애플리케이션(APP3)이 실행되더라도, 스토리지 관리 모듈(1101)은 스토리지 장치(1200)로 쓰로틀링 PDT(1211)를 요청하지 않을 수 있다. 이는 도 7b를 참조하여 설명된 바와 같이, 스토리지 관리 모듈(1101)이 쓰로틀링 PDT(1211)에 대한 정보를 이미 갖고 있기 때문이다. 또는, 스토리지 관리 모듈(1101)이 쓰로틀링 PDT(1211)를 이미 갖고 있더라도, 쓰로틀링 PDT(1211)가 개신될 수 있기 때문에, 스토리지 장치(1200)로 쓰로틀링 PDT(1211)를 요청할 수 있다. 쓰로틀링 PDT(1211)의 송수신 방식은 호스트(1100) 및 스토리지 장치(1200) 사이의 미리 정해진 정책에 의해 결정될 수 있다.
예시적인 실시 예에서, 제1 내지 제3 애플리케이션들(APP1~APP3)에 의해 발생된 제1 내지 제3 I/O들(I/O_1~I/O_3) 및 쓰로틀링 레벨을 설정하는데 요구되는 정보들을 송수신하는 것(예를 들어, 쓰로틀링 PDT(1211)를 요청하거나, 쓰로틀링 PDT(1211)를 수신하거나, 또는 선택 쓰로틀링 레벨(THLV_s)에 대한 정보를 전송하는 것)은 호스트(1100) 및 스토리지 장치(1200) 사이의 인터페이스 채널(IF)의 인-밴드(in-band) 또는 메인 채널을 통해, 호스트(1100) 및 스토리지 장치(1200) 사이에서, 통신될 수 있다.
또는 제1 내지 제3 애플리케이션들(APP1~APP3)에 의해 발생된 제1 내지 제3 I/O들(I/O_1~I/O_3)은 인터페이스 채널(IF)의 인-밴드 또는 메인 채널을 통해 통신되고, 쓰로틀링 레벨을 설정하는데 요구되는 정보들을 송수신하는 것은 인터페이스 채널(IF)의 사이드-밴드 또는 서브 채널, 또는 인터페이스 채널(IF)과 구분되는 별도의 보조 인터페이스를 통해 수행될 수 있다.
도 7a 내지 도 7d의 실시 예들에서, 호스트(1100)가 애플리케이션들(APP1~APP3)의 우선도(PR)를 관리하는 것으로 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 호스트(1100)는 스토리지 장치(1200)로부터의 쓰로틀링 PDT(1211)를 기반으로 복수의 애플리케이션들 각각에 대한 쓰로틀링 레벨을 지정하여 관리할 수 있다. 이 경우, 호스트(1100)의 스토리지 관리 모듈(1101)은 실행되거나 또는 I/O를 발생시킨 애플리케이션에 대응하는 쓰로틀링 레벨을 직접 확인할 수 있다.
도 8은 도 1의 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다. 도 9는 도 8의 순서도에 따른 동작을 설명하기 위한 블록도이다. 도면의 간결성 및 설명의 편의를 위하여, 도 8 및 도 9의 실시 예들을 설명하는데 불필요한 구성 요소들은 도면에서 생략되며, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다.
설명의 편의를 위하여, 스토리지 관리 모듈(1101)은 쓰로틀링 PDT(1211)에 대한 정보를 이미 포함하는 것으로 가정한다. 예를 들어, 스토리지 관리 모듈(1101)은, 스토리지 시스템(1000)의 초기화 동작에서, 쓰로틀링 PDT(1211)를 스토리지 장치(1200)로부터 수신할 수 있다. 또는 스토리지 관리 모듈(1101)은 주기적 또는 비주기적(예를 들어, 특정 조건에서의 요청)으로, 스토리지 장치(1200)로 쓰로틀링 PDT(1211)를 요청하고, 스토리지 장치(1200)로부터 쓰로틀링 PDT(1211)에 대한 정보를 수신하거나 또는 갱신할 수 있다.
도 1, 도 8, 및 도 9를 참조하면, S210 단계에서, 호스트(1100)는 제1 I/O가 발생했는지 판별할 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 호스트(1100)는 제1 및 제2 애플리케이션들(APP1, APP2)을 실행할 수 있다. 제1 및 제2 애플리케이션들(APP1, APP2)은 각각 제1 및 제2 I/O들(I/O_1, I/O_2)을 발생시킬 수 있다. 호스트(1100)는 제1 애플리케이션(APP1)으로부터 제1 I/O(I/O_1)가 발생했음을 인지할 수 있다. 제1 I/O(I/O_1)가 발생하지 않은 경우, 호스트(1100)는 별도의 동작을 수행하지 않을 수 있다.
제1 I/O(I/O_1)가 발생한 경우, S211 단계에서, 호스트(1100)는 선택 쓰로틀링 레벨(THLV_s)을 제1 쓰로틀링 레벨(THLV1)로 결정할 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 제1 애플리케이션(APP1)의 우선도(PR)는 성능(Pref.)과 관련될 수 있다. 이 경우, 앞서 설명된 바와 유사하게, 제1 애플리케이션(APP1)으로부터 발생된 제1 I/O(I/O_1)는 호스트(1100) 및 스토리지 장치(1200)와의 통신에서, 높은 성능 또는 높은 평균 성능을 필요로 할 수 있다. 이에 따라, 호스트(1100)의 스토리지 관리 모듈(1101)은 제1 I/O(I/O_1)에 대하여, 상대적으로 낮은 제1 쓰로틀링 레벨(THLV1)을 선택 쓰로틀링 레벨(THLV_s)로 결정할 수 있다.
S212 단계에서, 호스트(1100)는 제1 I/O 요청을 스토리지 장치(1200)로 전송할 수 있다. 이 때, 제1 I/O 요청은 선택 쓰로틀링 레벨(THLV_s)로 결정된 제1 쓰로틀링 레벨(THLV1)에 대한 정보를 포함할 수 있다. 예를 들어, 제1 쓰로틀링 레벨(THLV_s)에 대한 정보는 제1 I/O 요청의 특정 필드에 포함될 수 있고, 제1 쓰로틀링 레벨(THLV1)에 대한 정보가 포함된 제1 I/O 요청은 인터페이스 채널(IF)을 통해 스토리지 장치(1200)로 제공될 수 있다. 예시적인 실시 예에서, 제1 쓰로틀링 레벨(THLV1)에 대한 정보를 제1 I/O요청에 포함시키는 동작은 스토리지 관리 모듈(1101)의 요청에 따라 장치 드라이버(1130)(도 2 참조)에 의해 수행될 수 있다.
S213 단계에서, 스토리지 장치(1200)는 제1 쓰로틀링 레벨(THLV1)을 기반으로 스토리지 장치(1200)의 동작 파라미터들을 설정할 수 있다. S213 단계에서, 호스트(1100) 및 스토리지 장치(1200)는 제1 I/O 요청에 대한 동작을 수행할 수 있다. 이 경우, 호스트(1100) 및 스토리지 장치(1200)는 제1 쓰로틀링 레벨(THLV1)에 대한 변동 수준 및 쓰로틀링 성능에 따라 제1 I/O 요청에 대한 동작을 수행할 것이다.
이후에, S220 단계에서, 호스트(1100)는 제2 I/O(I/O_2)가 발생했는지 판별할 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 호스트(1100) 상에서 구동되는 제2 애플리케이션(APP2)에 의해 제2 I/O(I/O_2)가 발생할 수 있다. 호스트(1100)의 스토리지 관리 모듈(1101)은 제2 애플리케이션(APP2)에 의해 제2 I/O(I/O_2)가 발생했음을 인지할 수 있다. 제2 I/O(I/O_2)가 발생하지 않은 경우, 호스트(1100)는 별도의 동작을 수행하지 않을 수 있다.
S221 단계에서, 호스트(1100)는 제2 쓰로틀링 레벨(THLV2)을 선택 쓰로틀링 레벨(THLV_s)로서 선택할 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 제2 애플리케이션(APP2)의 우선도(PR)는 성능 일관성(Cons.)과 관련될 수 있다. 이 경우, 제2 애플리케이션(APP2)에 의해 발생된 제2 I/O(I/O_2)는 균일한 성능으로 처리되는 것을 필요로 할 수 있다. 호스트(1100)는 제2 I/O(I/O_2)에 대한 선택 쓰로틀링 레벨(THLV_s)로서 제2 쓰로틀링 레벨(THLV2)을 선택할 수 있다.
예시적인 실시 예에서, 제2 쓰로틀링 레벨(THLV2)은 앞서 설명된 제1 쓰로틀링 레벨(THLV1)보다 높은 수준을 가질 것이다. 즉, 제2 쓰로틀링 레벨(THLV2)에 기반된 쓰로틀링 동작은 제1 쓰로틀링 레벨(THLV1)에 기반된 쓰로틀링 동작보다 안정된 또는 균일한 성능을 제공할 것이다.
호스트(1100) 및 스토리지 장치(1200)는 S222 단계 내지 S224 단계의 동작들을 수행할 수 있다. S222 단계 내지 S224 단계의 동작들은 선택 쓰로틀링 레벨이 제2 쓰로틀링 레벨(THLV2)이라는 점만 제외하면, S212 단계 내지 S214 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 시스템(1000)의 호스트(1100)는 발생된 I/O 각각에 대한 선택 쓰로틀링 레벨을 결정할 수 있고, 선택 쓰로틀링 레벨에 대한 정보를 I/O 요청과 함께 스토리지 장치(1200)로 제공할 수 있다. 스토리지 장치(1200)는 호스트(1100)로부터 제공된 선택 쓰로틀링 레벨을 기반으로 I/O를 처리할 수 있다. 따라서, 복수의 I/O들 각각에 대하여 최적의 성능이 제공될 수 있다.
비록 도 8 및 도 9의 실시 예들에서, 호스트(1100)가 복수의 I/O들 각각에 대한 선택 쓰로틀링 레벨을 선택하는 구성이 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 호스트(1100)는 복수의 I/O들 각각을 스트림 식별자로 구분하고, 스토리지 장치(1200)는 복수의 I/O들 각각에 대한 스트림 식별자를 기반으로 서로 다른 쓰로틀링 레벨에 기반된 쓰로틀링 동작을 수행할 수 있다.
도 10은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 10을 참조하면, 스토리지 시스템(2000)은 호스트(2100) 및 스토리지 장치(2200)를 포함할 수 있다. 호스트(2100) 및 스토리지 장치(2200)는 인터페이스 채널(IF)을 통해 통신할 수 있다. 호스트(2100)는 스토리지 관리 모듈(2101)을 포함할 수 있다. 스토리지 장치(2200)는 컨트롤러(2210) 및 불휘발성 메모리 장치(2220)를 포함할 수 있다. 컨트롤러(2210)는 쓰로틀링 PDT(2211), 쓰로틀링 관리자(2212), 및 내부 정책(2217)을 포함할 수 있다. 호스트(2100), 스토리지 관리 모듈(2101), 스토리지 장치(2200), 컨트롤러(2210), 불휘발성 메모리 장치(2220), 쓰로틀링 PDT(2211), 및 쓰로틀링 관리자(2212)는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 10의 컨트롤러(2210)는 내부 정책(2217)을 더 포함할 수 있다. 내부 정책(2217)은 스토리지 장치(2200) 내부에서 수행되는 다양한 동작 패턴들에 따른 쓰로틀링 레벨의 정보를 포함할 수 있다. 예시적인 실시 예에 내부 정책(2217)은 컨트롤러(2210)에 포함된 램(도 2 참조) 또는 별도의 저장 회로에 저장될 수 있다.
예를 들어, 도 1 내지 도 9를 참조하여 설명된 실시 예들에서, 스토리지 장치의 쓰로틀링 레벨은 호스트에 의해 결정될 수 있다. 반면에, 도 10의 스토리지 장치(2200)는 호스트(2100)로부터 제공된 선택 쓰로틀링 레벨 및 내부 정책(2217)에 의해 결정된 내부 쓰로틀링 레벨을 기반으로 최종 쓰로틀링 레벨을 결정할 수 있다. 예시적인 실시 예에서, 최종 쓰로틀링 레벨은 호스트(2100)에 의해 결정된 선택 쓰로틀링 레벨과 동일할 수 있다. 또는 최종 쓰로틀링 레벨은, 특정 조건에 따라, 호스트(2100)에 의해 결정된 선택 쓰로틀링 레벨과 다를 수 있다. 도 10의 스토리지 장치의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 11은 도 10의 내부 정책을 설명하기 위한 도면이다. 도 10 및 도 11을 참조하면, 내부 정책(2217)은 도 11에 도시된 바와 같은 테이블을 포함할 수 있다. 내부 정책(2217)은 복수의 쓰로틀링 레벨들(THLV_0~THLV_3) 각각에 대한 상태 정보(State)의 관계를 포함할 수 있다.
쓰로틀링 관리자(2212)는 내부 정책(2217)을 기반으로 내부 쓰로틀링 레벨을 선택할 수 있다. 예를 들어, 스토리지 장치(2200)의 상태가 제0 상태(ST_0)인 경우, 쓰로틀링 관리자(2212)는 내부 쓰로틀링 레벨로서 제0 쓰로틀링 레벨(THLV_0)을 선택할 수 있다. 제0 상태(ST_0)는 스토리지 장치(2200)에서 수행 중이거나 또는 계류 중인 동작들이 모두 쓰기 동작(WR)인 상태를 가리킬 수 있다. 예시적인 실시 예에서, 스토리지 장치(2200)에서 수행 중이거나 또는 계류 중인 동작들은 컨트롤러(2210) 및 불휘발성 메모리 장치(2220) 사이의 동작들을 가리킬 수 있다.
스토리지 장치(2200)의 상태가 제1 상태(ST_1)인 경우, 쓰로틀링 관리자(2212)는 내부 쓰로틀링 레벨로서 제1 쓰로틀링 레벨(THLV_1)을 선택할 수 있다. 제1 상태(ST_1)는 스토리지 장치(2200)에서 수행 중이거나 또는 계류 중인 동작들 중 일부(예를 들어, 50%)가 쓰기 동작(WR)인 상태를 가리킬 수 있다.
스토리지 장치(2200)의 상태가 제2 상태(ST_2)인 경우, 쓰로틀링 관리자(2212)는 내부 쓰로틀링 레벨로서 제0 쓰로틀링 레벨(THLV_2)을 선택할 수 있다. 제2 상태(ST_2)는 스토리지 장치(2200)에서 수행 중이거나 또는 계류 중인 동작들 중 일부(예를 들어, 10%)가 쓰기 동작(WR)인 상태를 가리킬 수 있다.
스토리지 장치(2200)의 상태가 제3 상태(ST_3)인 경우, 쓰로틀링 관리자(2212)는 내부 쓰로틀링 레벨로서 제0 쓰로틀링 레벨(THLV_3)을 선택할 수 있다. 제3 상태(ST_3)는 스토리지 장치(2200)에서 수행 중이거나 또는 계류 중인 동작들이 모두 쓰기 동작(WR)인 아닌 상태 또는 모두 읽기 동작(RD)인 상태를 가리킬 수 있다.
상술된 바와 같이, 스토리지 장치(2200)의 컨트롤러(2210)의 쓰로틀링 관리자(2212)는 내부 정책(2217)을 기반으로, 스토리지 장치(2200)의 상태에 따라 내부 쓰로틀링 레벨을 결정할 수 있다. 상술된 내부 정책(2217)은 본 발명의 실시 예를 설명하기 위한 단순한 예시이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 내부 정책에 포함된 상태 정보는 커맨드 비율뿐만 아니라, 다른 다양한 인자들(예를 들어, 커맨드 큐 깊이, WAF(Write Amplification Factor), 데이터 섹터 크기, 온도 정보와 같은 다양한 정보 중 하나 또는 그 이상의 조합으로 구성될 수 있다.
도 12는 도 10의 스토리지 장치의 동작을 예시적으로 보여주는 순서도이다. 도면의 간결성 및 설명의 편의를 위하여, 호스트(2100)(예를 들어, 스토리지 관리 모듈(2101))에 의해 선택 쓰로틀링 레벨을 결정하는 동작은 도 12에서 생략된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 호스트(2100)는 도 1 내지 도 9를 참조하여 설명된 동작 방법에 따라, 스토리지 장치(2200)에 대한 선택 쓰로틀링 레벨을 선택하고, 선택 쓰로틀링 레벨에 대한 정보를 스토리지 장치(2200)로 전송할 수 있다.
이하에서, 본 발명의 실시 예를 명확하게 설명하기 위하여, 호스트(2100)로부터 수신된 선택 쓰로틀링 레벨은 외부 쓰로틀링 레벨(THLV_ext)이라 칭하고, 내부 정책(2217)을 기반으로 결정된 쓰로틀링 레벨은 내부 쓰로틀링 레벨(THLV_int)이라 칭한다. 또한, 외부 쓰로틀링 레벨(THLV_ext) 및 내부 쓰로틀링 레벨(THLV_int)을 기반으로 결정된 쓰로틀링 레벨은 최종 쓰로틀링 레벨(THLV_fin)이라 칭한다. 스토리지 장치(2200)의 쓰로틀링 관리자(2212)는 최종 쓰로틀링 레벨(THLV_fin)을 기반으로 쓰로틀링 동작을 수행할 수 있다.
도 10 내지 도 12를 참조하면, S310 단계에서, 스토리지 장치(2100)는 호스트(2100)로부터 외부 쓰로틀링 레벨(THLV_ext)에 대한 정보를 수신할 수 있다. S310 단계의 동작은 도 1 내지 도 9를 참조하여 설명된 호스트(1100)에 의한, 선택 쓰로틀링 레벨(THLV_s)의 선택 및 이에 대한 정보 전송과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S320 단계에서, 스토리지 장치(2200)는 내부 정책(2217)을 기반으로, 내부 쓰로틀링 레벨(THLV_int)을 결정할 수 있다. 예를 들어, 도 11을 참조하여 설명된 바와 같이, 스토리지 장치(2200)의 쓰로틀링 관리자(2212)는 내부 정책(2217) 및 스토리지 장치(2200)의 상태를 기반으로, 내부 쓰로틀링 레벨(THLV_int)을 결정할 수 있다.
S330 단계에서, 스토리지 장치(2200)는 외부 쓰로틀링 레벨(THLV_ext) 및 내부 쓰로틀링 레벨(THLV_int)을 비교할 수 있다. 외부 쓰로틀링 레벨(THLV_ext) 및 내부 쓰로틀링 레벨(THLV_int)이 서로 동일한 경우, S340 단계에서, 스토리지 장치(2200)는 외부 쓰로틀링 레벨(THLV_ext) 또는 내부 쓰로틀링 레벨(THLV_int)을 최종 쓰로틀링 레벨(THLV_fin)로 결정할 수 있다.
외부 쓰로틀링 레벨(THLV_ext) 및 내부 쓰로틀링 레벨(THLV_int)이 서로 동일하지 않은 경우, S350 단계에서, 스토리지 장치(2200)는 미리 정해진 조건을 기반으로 최종 쓰로틀링 레벨(THLV_fin)을 결정할 수 있다. 예를 들어, 쓰로틀링 관리자(2212)는 외부 쓰로틀링 레벨(THLV_ext)에 대한 지표들이 내부 쓰로틀링 레벨(THLV_int)에 대한 지표들을 만족하는지 판별할 수 있다.
좀 더 상세한 예로서, 외부 쓰로틀링 레벨(THLV_ext)이 내부 쓰로틀링 레벨(THLV_int)보다 높은 수준일 수 있다. 즉, 호스트(2100)는 쓰로틀링 성능보다 성능의 일관성을 좀 더 우선시할 수 있다. 이 때, 내부 쓰로틀링 레벨(THLV_int)에 대한 변동 수준이 외부 쓰로틀링 레벨(THLV_ext)에 대한 변동 수준을 만족하고, 내부 쓰로틀링 레벨(THLV_int)에 대한 쓰로틀링 성능이 외부 쓰로틀링 레벨(THLV_ext)에 대한 쓰로틀링 성능보다 높은 경우, 쓰로틀링 관리자(2212)는 내부 쓰로틀링 레벨(THLV_int)을 최종 쓰로틀링 레벨(THLV_fin)로 결정할 수 있다. 또는 내부 쓰로틀링 레벨(THLV_int)에 대한 변동 수준이 외부 쓰로틀링 레벨(THLV_ext)에 대한 변동 수준을 만족하지 않는 경우, 쓰로틀링 관리자(2212)는 외부 쓰로틀링 레벨(THLV_ext)을 최종 쓰로틀링 레벨(THLV_fin)로 결정할 수 있다. 즉, 쓰로틀링 관리자(2212)는 호스트(2100)에 의해 선택된 외부 쓰로틀링 레벨(THLV_ext)의 특정 조건을 만족하는 방향으로 최종 쓰로틀링 레벨(THLV_fin)을 선택할 수 있다.
그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 본 발명의 실시 예에 따른 스토리지 장치(2200)는 다양한 방식들 또는 다양한 조건들을 통해 최종 쓰로틀링 레벨(THLV_fin)을 결정할 수 있다. 일 예로서, 호스트(2100)는 외부 쓰로틀링 레벨(THLV_ext) 및 우선도에 관한 정보를 스토리지 장치(2200)로 제공할 수 있고, 스토리지 장치(2200)는 외부 쓰로틀링 레벨(THLV_ext)의 지표들 중 우선도와 관련된 지표들이 우선적으로 만족되도록 최종 쓰로틀링 레벨(THLV_fin)을 결정할 수 있다.
이후에, 스토리지 장치(2200)는 S360 단계 및 S370 단계의 동작들을 수행할 수 있다. S360 단계 및 S370 단계의 동작들은 최종 쓰로틀링 레벨(THLV_fin)을 사용한다는 점을 제외하면, 도 6의 S170 단계 및 S180 단계의 동작들, 또는 도 8의 S213 단계 및 S214 단계의 동작들, 또는 도 8의 S223 단계 및 S224 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 13a 내지 도 13c는 도 10의 스토리지 장치의 내부 정책에 따른 내부 쓰로틀링 레벨을 선택하는 동작들을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 스토리지 장치(2200)의 내부 정책에 따른 내부 쓰로틀링 레벨을 선택하는 동작들을 설명하는데 불필요한 구성 요소들은 도면에서 생략되며, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 13c의 가로축은 불휘발성 메모리 장치(2220)의 프로그램/소거 사이클 횟수(P/E Cycle)를 가리킨다.
먼저, 도 10 및 도 13a를 참조하면, 스토리지 장치(2200)의 컨트롤러(2210)는 쓰로틀링 관리자(2212), 내부 정책(2217), 및 커맨드 큐(CQ; CMD queue)를 포함할 수 있다. 커맨드 큐(CQ)는 스토리지 장치(2200)에서 수행될 커맨드들 또는 계류 중인 커맨드들에 대한 정보를 포함할 수 있다.
쓰로틀링 관리자(2212)는 내부 정책(2217) 및 커맨드 큐(CQ)를 기반으로 내부 쓰로틀링 레벨(THLV_int)을 선택할 수 있다. 예를 들어, 커맨드 큐(CQ)는 제 1내지 제6 커맨드들(CMD1~CMD6)에 대한 타입 및 우선순위 정보를 포함할 수 있다. 쓰로틀링 관리자(2212)는 커맨드 큐(CQ)를 기반으로 스토리지 장치(2200)의 상태를 결정할 수 있다.
좀 더 상세한 예로서, 쓰로틀링 관리자(2212)는 커맨드 큐(CQ)에 포함된 복수의 커맨드들(CMD1~CMD6) 중 쓰기 커맨드의 개수 또는 비율를 기반으로 스토리지 장치(2200)의 상태를 결정할 수 있다. 또는 쓰로틀링 관리자(2212)는 복수의 커맨드들(CMD1~CMD6) 중 특정 우선 순위를 갖는 커맨드들을 선별하고, 선별된 커맨드들 중 쓰기 커맨드의 개수를 기반으로 스토리지 장치(2200)의 상태를 결정할 수 있다. 또는 쓰로틀링 관리자(2212)는 커맨드 큐(CQ)의 큐 깊이(Queue Depth)를 기반으로 스토리지 장치(2200)의 상태를 결정할 수 있다.
상술된 예들은 본 발명의 기술적 사상을 용이하게 설명하기 위한 예시들이며 본 발명의 범위가 이에 한정되는 것은 아니며, 쓰로틀링 관리자(2212)는 커맨드 큐(CQ)의 다양한 정보를 기반으로 스토리지 장치(2200)의 상태를 결정할 수 있다. 이후에, 쓰로틀링 관리자(2212)는 외부 쓰로틀링 레벨(THLV_ext) 및 내부 쓰로틀링 레벨(THLV_int)을 기반으로 최종 쓰로틀링 레벨(THLV_fin)을 결정할 수 있다.
다음으로, 도 10 및 도 13b를 참조하면, 스토리지 장치(2200)의 컨트롤러(2210)는 쓰로틀링 관리자(2212), 내부 정책(2217), 및 관리 모듈(2215)을 포함할 수 있다. 도 3을 참조하여 설명된 바와 같이, 관리 모듈(2215)은 스토리지 장치(2200)를 효율적으로 사용하기 위한 다양한 관리 동작들(예를 들어, 가비지 콜렉션(GC), 웨어 레벨링, 배드 블록 교체 등)을 수행할 수 있다.
예시적인 실시 예에서, 관리 모듈(2215)에 의해 관리 동작이 수행되는 경우, 불휘발성 메모리 장치(2220)에 대한 동작들이 수행되기 때문에, 스토리지 장치(2200)의 성능이 저하되거나 또는 변동 수준이 증가할 수 있다. 예를 들어, 관리 모듈(2215)이 가비지 콜렉션(GC)을 수행하는 경우, 불휘발성 메모리 장치(2220)에 대한 읽기 동작 및 쓰기 동작이 반복 수행될 것이다. 이 경우, 호스트(2100) 측에서 인식되는 스토리지 장치(2200)의 성능이 저하되거나 또는 변동 수준이 증가할 수 있다. 변동 수준을 감소시키기 위하여, 쓰로틀링 모듈(2212)은 상대적으로 높은 수준의 쓰로틀링 레벨을 내부 쓰로틀링 레벨(THLV_int)로 선택할 수 있다.
즉, 쓰로틀링 관리자(2212)는 관리 모듈(2215)에서 수행되는 다양한 관리 동작들을 기반으로 스토리지 장치(2200)의 상태를 결정하고, 결정된 상태를 기반으로 내부 쓰로틀링 레벨(THLV_int)을 선택할 수 있다. 쓰로틀링 관리자(2212)는 외부 쓰로틀링 레벨(THLV_ext) 및 내부 쓰로틀링 레벨(THLV_int)을 기반으로 최종 쓰로틀링 레벨(THLV_fin)을 결정할 수 있다.
다음으로, 도 10 및 도 13c를 참조하면, 스토리지 장치(2200)의 불휘발성 메모리 장치(2220)는 프로그램/소거 사이클 횟수(P/E Cycle)에 기반된 수명을 가질 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(2220)의 프로그램/소거 사이클 횟수(P/E Cycle)가 증가할수록, 다양한 내부 동작들이 반복적으로 수행될 수 있다. 이로 인하여, 스토리지 장치(2200)의 평균 성능이 저하되거나 또는 변동 수준이 증가할 수 있다. 이 경우, 스토리지 장치(2200)는 외부 쓰로틀링 레벨(THLV_ext)을 불휘발성 메모리 장치(2220)의 프로그램/소거 사이클 횟수(P/E Cycle)에 따라 가변시킬 수 있다.
예를 들어, 호스트(2100)로부터 제공되는 외부 쓰로틀링 레벨(THLV_ext)은 제0 내지 제3 외부 쓰로틀링 레벨들(THLV0_ext~THLV3_ext) 중 어느 하나인 것으로 가정한다. 이 때, 제3 외부 쓰로틀링 레벨(THLV3_ext)은 제2 외부 쓰로틀링 레벨(THLV2_ext)보다 높은 수준을 갖고, 제2 외부 쓰로틀링 레벨(THLV2_ext)은 제1 외부 쓰로틀링 레벨(THLV1_ext)보다 높은 수준을 갖고, 제1 외부 쓰로틀링 레벨(THLV1_ext)은 제0 외부 쓰로틀링 레벨(THLV1_ext)보다 높은 수준을 가질 수 있다.
앞서 설명된 바와 같이, 불휘발성 메모리 장치(2220)의 프로그램/소거 사이클 횟수(P/E Cycle)가 증가할수록, 스토리지 장치(2200)의 변동 수준이 증가할 수 있다. 이 경우, 프로그램/소거 사이클 횟수(P/E Cycle)에 따라 증가한 변동 수준을 보상하기 위하여, 외부 쓰로틀링 레벨(THLV_ext)보다 높은 수준의 쓰로틀링 레벨이 적용될 필요가 있다.
예시적인 실시 예에서, 스토리지 장치(2200)의 초기 사용 구간(즉, P/E0~P/E1)에서, 제3 외부 쓰로틀링 레벨(THLV3_ext)은 제3 쓰로틀링 레벨(THLV3)로 결정되고, 제2 외부 쓰로틀링 레벨(THLV2_ext)은 제2 쓰로틀링 레벨(THLV2)로 결정되고, 제1 외부 쓰로틀링 레벨(THLV1_ext)은 제1 쓰로틀링 레벨(THLV1)로 결정되고, 제0 외부 쓰로틀링 레벨(THLV0_ext)은 제0 쓰로틀링 레벨(THLV0)로 결정될 수 있다.
이후에 프로그램/소거 사이클 횟수(P/E Cycle)가 증가한 다음 구간(즉, P/E1~P/E2)에서, 제3 외부 쓰로틀링 레벨(THLV3_ext)은 제3+a 쓰로틀링 레벨(THLV3+a)로 결정되고, 제2 외부 쓰로틀링 레벨(THLV2_ext)은 제3 쓰로틀링 레벨(THLV3)로 결정되고, 제1 외부 쓰로틀링 레벨(THLV1_ext)은 제2 쓰로틀링 레벨(THLV2)로 결정되고, 제0 외부 쓰로틀링 레벨(THLV0_ext)은 제1 쓰로틀링 레벨(THLV1)로 결정될 수 있다. 예시적인 실시 예에서, 제3+a 쓰로틀링 레벨(THLV3+a)은 제3 쓰로틀링 레벨(THLV3)보다 높은 수준을 가질 수 있다.
이후의 구간들(P/E2~P/E3, P/E3~EOL)에서, 복수의 외부 쓰로틀링 레벨들(THLV3_ext~THLV0_ext)은 복수의 쓰로틀링 레벨들(THLV3+c, THLV3+b, THLV3+a, THLV3, THLV2 등)로 각각 결정될 수 있다. 즉, 동일한 외부 쓰로틀링 레벨에 대하여, 프로그램/소거 사이클 횟수(P/E)가 증가함에 따라, 더욱 높은 수준의 쓰로틀링 레벨이 결정될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치는 복수의 쓰로틀링 레벨들에 기반된 쓰로틀링 동작을 지원할 수 있다. 따라서, 호스트의 명시적 요청에 따라 쓰로틀링 레벨이 선택되고, 스토리지 장치는 선택된 쓰로틀링 레벨에 따라 호스트로 최적의 성능을 제공할 수 있다.
도 14는 본 발명에 따른 스토리지 시스템이 적용된 전자 장치를 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 전자 장치(3000)는 터치 패널(3100), 터치 구동 회로(3102), 디스플레이 패널(3200), 디스플레이 구동 회로(3202), 시스템 메모리(3400), 스토리지 장치(3500), 이미지 처리기(3600), 통신 블록(3700), 오디오 처리기(3800), 및 메인 프로세서(3900)를 포함할 수 있다. 예시적인 실시 예에서, 전자 장치(2000)는 이동식 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 디지털 카메라, 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치 중 하나일 수 있다.
터치 구동 회로(3102)는 터치 패널(3100)을 제어하도록 구성될 수 있다. 터치 패널(3100)은 터치 구동 회로(3102)의 제어에 따라 사용자로부터의 터치 입력을 감지하도록 구성될 수 있다. 디스플레이 구동 회로(3202)는 디스플레이 패널(3200)을 제어하도록 구성될 수 있다. 디스플레이 패널(3200)은 디스플레이 구동 회로(3202)의 제어에 따라 영상 정보를 표시하도록 구성될 수 있다.
시스템 메모리(3400)는 전자 장치(3000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 시스템 메모리(3400)는 메인 프로세서(3900)에 의해 처리된 또는 처리될 데이터를 임시로 저장할 수 있다. 예로서, 시스템 메모리(3400)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(3500)는 전원 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 스토리지 장치(3500)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 다양한 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 예로서, 스토리지 장치(3500)는 전자 장치(3000)의 내장 메모리 및/또는 착탈식 메모리를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 장치(3500)는 도 1 내지 도 13c를 참조하여 설명된 스토리지 장치(1200, 2200)이거나 또는 도 1 내지 도 13c를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
이미지 처리기(3600)는 렌즈(3610)를 통해 광을 수신할 수 있다. 이미지 처리기(3600)에 포함되는 이미지 장치(3620) 및 이미지 신호 처리기(3630)는 수신된 광에 기초하여, 외부 객체에 관한 이미지 정보를 생성할 수 있다.
통신 블록(3700)은 안테나(3710)를 통해 외부 장치/시스템과 신호를 교환할 수 있다. 통신 블록(3700)의 송수신기(3720) 및 MODEM(Modulator/Demodulator, 2730)은 LTE(Long Term Evolution), WiMax(Worldwide Interoperability for Microwave Access), GSM(Global System for Mobile communication), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), Wi-Fi(Wireless Fidelity), RFID(Radio Frequency Identification) 등과 같은 다양한 무선 통신 규약 중 적어도 하나에 따라, 외부 장치/시스템과 교환되는 신호를 처리할 수 있다.
오디오 처리기(3800)는 오디오 신호 처리기(3810)를 이용하여 오디오 신호를 처리할 수 있다. 오디오 처리기(3800)는 마이크(3820)를 통해 오디오 입력을 수신하거나, 스피커(3830)를 통해 오디오 출력을 제공할 수 있다.
메인 프로세서(3900)는 전자 장치(3000)의 전반적인 동작들을 제어할 수 있다. 메인 프로세서(3900)는 전자 장치(3000)의 구성 요소들의 동작들을 제어/관리할 수 있다. 메인 프로세서(3900)는 전자 장치(3000)를 동작시키기 위해 다양한 연산을 처리할 수 있다. 예시적인 실시 예에서, 도 12의 구성 요소들 중 일부는 시스템-온-칩(System-on-Chip) 형태로 구현되어, 전자 장치(3000)의 애플리케이션 프로세서(AP; application processor)로서 제공될 수 있다. 예시적인 실시 예에서, 메인 프로세서(3900)는 도 1 내지 도 13c를 참조하여 설명된 호스트(1100, 2100)이거나 또는 도 1 내지 도 13c를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
도 15는 본 발명에 따른 스토리지 시스템이 적용된 SSD 시스템을 예시적으로 보여주는 블록도이다. 도 15를 참조하면, SSD 시스템(4000)은 호스트(4100) 및 스토리지 장치(4200)를 포함한다. 예시적인 실시 예에서, 호스트(4100) 및 스토리지 장치(4200)는 도 1 내지 도 13c를 참조하여 설명된 호스트(1100, 2100) 및 스토리지 장치(1200, 2200)이거나 또는 도 1 내지 도 13c를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
스토리지 장치(1200)는 신호 커넥터(4201)를 통해 호스트(4100)와 신호(SIG)를 주고 받고, 전원 커넥터(4202)를 통해 전원(PWR)을 입력 받는다. 스토리지 장치(4200)는 SSD(Solid State Drive) 컨트롤러(1210), 복수의 불휘발성 메모리들(4221~422n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함한다.
SSD 컨트롤러(4210)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 불휘발성 메모리들(4221~422n)을 제어할 수 있다. 복수의 불휘발성 메모리들(4221~422n)은 SSD 컨트롤러(4210)의 제어에 따라 동작할 수 있다. 보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원을 제공할 수 있다.
버퍼 메모리(4240)는 스토리지 장치(4200)의 버퍼 메모리로서 사용될 수 있다. 예시적인 실시 예에서, 스토리지 장치(4200)는 버퍼 메모리와 관련된 동작 파라미터들을 제어함으로써, 앞서 설명된 쓰로틀링 동작을 수행할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 16은 본 발명에 따른 스토리지 시스템에 적용된 사용자 인터페이스를 예시적으로 보여주는 도면이다. 도 16을 참조하면, 스토리지 시스템(5000)의 사용자 인터페이스(UI)는 적응적 쓰로틀링 제어 박스를 표시할 수 있다. 적응적 쓰로틀링 제어 박스는 사용자 특정(User Specific)에 따라, 다양한 애플리케이션에 대한 우선도를 설정하도록 구성될 수 있다. 예를 들어, 사용자는 사용자 인터페이스(UI)의 적응적 쓰로틀링 제어 박스에서, 제1 애플리케이션(APP1)에 대한 우선도를 성능 우선(Pref.)으로 설정할 수 있다. 이 때, 제1 애플리케이션(APP1)이 실행된 경우, 스토리지 관리 모듈(5101)은 사용자에 의해 선택된 우선도(즉, Pref.)에 대응하는 쓰로틀링 레벨을 결정하고, 결정된 쓰로틀링 레벨(THLV)을 스토리지 장치(5200)로 제공할 수 있다. 스토리지 장치(5200)는 앞서 설명된 다양한 실시 예들 중 하나 또는 적어도 둘 이상의 조합을 기반으로 적응적 쓰로틀링 동작을 수행할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
Claims (20)
- 외부 호스트 장치와 인터페이스 채널을 통해 통신하도록 구성된 스토리지 장치의 동작 방법에 있어서,
상기 외부 호스트 장치로부터 복수의 쓰로틀링 레벨들 중 제1 쓰로틀링 레벨에 대한 정보를 수신하는 단계;
상기 복수의 쓰로틀링 레벨들 및 복수의 쓰로틀링 성능들 사이의 관계를 포함하는 쓰로틀링 PDT(predefined table)을 기반으로, 상기 인터페이스 채널이 상기 복수의 쓰로틀링 성능들 중 상기 제1 쓰로틀링 레벨에 대응하는 제1 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계;
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 외부 호스트 장치로부터의 제1 입출력(I/O; input/output) 요청을 수신하는 단계; 및
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제1 I/O 요청에 대응하는 제1 동작을 처리하는 단계를 포함하는 동작 방법. - 제 1 항에 있어서,
상기 외부 호스트 장치로부터 상기 쓰로틀링 PDT에 대한 요청을 수신하는 단계; 및
상기 요청에 응답하여, 상기 쓰로틀링 PDT를 상기 외부 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법. - 제 1 항에 있어서,
상기 외부 호스트 장치로부터 상기 복수의 쓰로틀링 레벨들 중 제2 쓰로틀링 레벨에 대한 정보를 수신하는 단계;
상기 쓰로틀링 PDT를 기반으로, 상기 인터페이스 채널이 상기 복수의 쓰로틀링 성능들 중 상기 제2 쓰로틀링 레벨에 대응하는 제2 쓰로틀링 성능을 갖도록 상기 적어도 하나의 동작 파라미터를 재설정하는 단계;
상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 외부 호스트 장치로부터 제2 I/O 요청을 수신하는 단계; 및
상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제2 I/O 요청에 대응하는 제2 동작을 처리하는 단계를 더 포함하는 동작 방법. - 제 3 항에 있어서,
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 평균 성능 및 제1 최저 성능은 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제2 평균 성능 및 제2 최저 성능과 각각 다른 동작 방법. - 제 3 항에 있어서,
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 최대 성능 및 제1 최저 성능의 차이인 제1 변동 수준(fluctuation level)은 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제2 최대 성능 및 제2 최저 성능 사이의 차이인 제2 변동 수준과 다른 동작 방법. - 제 3 항에 있어서,
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 최대 성능 및 제1 최저 성능의 차이인 제1 변동 수준(fluctuation level)은 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제2 최대 성능 및 제2 최저 성능 사이의 차이인 제2 변동 수준보다 크고,
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 평균 성능 및 상기 제1 최저 성능은 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제2 평균 성능 및 상기 제2 최저 성능보다 각각 높은 동작 방법. - 제 1 항에 있어서,
상기 제1 쓰로틀링 성능은 상기 인터페이스 채널을 통한 랜덤 읽기 속도, 랜덤 쓰기 속도, 순차 읽기 속도, 또는 순차 쓰기 속도 중 적어도 하나와 관련된 동작 방법. - 제 1 항에 있어서,
상기 스토리지 장치는 상기 외부 호스트 장치와 상기 인터페이스 채널을 통해 통신하도록 구성된 호스트 인터페이스 회로를 포함하고,
상기 적어도 하나의 동작 파라미터는 상기 호스트 인터페이스 회로의 동작을 제어하는 정보를 포함하는 동작 방법. - 제 1 항에 있어서,
상기 외부 호스트 장치로부터 상기 제1 쓰로틀링 레벨에 대한 정보를 수신하기 전에, 노멀 성능을 갖는 상기 인터페이스 채널을 통해 상기 외부 호스트 장치로부터 제0 I/O 요청을 수신하고, 상기 인터페이스 채널을 통해 상기 제0 I/O 요청에 대응하는 제0 동작을 처리하는 단계를 더 포함하고,
상기 노멀 성능을 갖는 상기 인터페이스 채널의 제0 평균 성능은 상기 제1 쓰로틀링 성능을 갖는 제1 평균 성능보다 높고,
상기 노멀 성능을 갖는 상기 인터페이스 채널의 제0 최대 성능 및 제0 최저 성능의 차이인 제0 변동 수준은 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 최대 성능 및 제1 최저 성능의 차이인 제1 변동 수준보다 큰 동작 방법. - 외부 호스트 장치와 인터페이스 채널을 통해 통신하도록 구성된 스토리지 장치의 동작 방법에 있어서,
상기 외부 호스트 장치로부터 외부 쓰로틀링 레벨에 대한 정보를 수신하는 단계;
상기 스토리지 장치의 복수의 상태들 및 복수의 내부 쓰로틀링 레벨들 사이의 관계를 포함하는 내부 정책을 기반으로, 상기 복수의 내부 쓰로틀링 레벨들 중 상기 스토리지 장치의 현재 상태에 대응하는 내부 쓰로틀링 레벨을 결정하는 단계;
상기 외부 쓰로틀링 레벨 및 상기 내부 쓰로틀링 레벨을 기반으로 최종 쓰로틀링 레벨을 결정하는 단계;
복수의 쓰로틀링 레벨들 및 복수의 쓰로틀링 성능들 사이의 관계를 포함하는 쓰로틀링 PDT(predefined table)을 기반으로, 상기 인터페이스 채널이 상기 복수의 쓰로틀링 성능들 중 상기 최종 쓰로틀링 레벨에 대응하는 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계;
상기 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 외부 호스트 장치로부터의 제1 입출력(I/O; input/output) 요청을 수신하는 단계; 및
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제1 I/O 요청에 대응하는 제1 동작을 처리하는 단계를 포함하는 동작 방법. - 제 10 항에 있어서,
상기 스토리지 장치의 상기 현재 상태는, 커맨드 큐에 계류 중인 복수의 커맨드들을 기반으로 결정되는 동작 방법. - 제 10 항에 있어서,
상기 스토리지 장치는 복수의 관리 동작들을 수행하도록 구성된 관리 모듈을 포함하고,
상기 스토리지 장치의 상기 현재 상태는, 상기 복수의 관리 동작들 중 상기 관리 모듈에서 현재 수행 중인 관리 동작을 기반으로 결정되는 동작 방법. - 제 10 항에 있어서,
상기 최종 쓰로틀링 레벨을 결정하는 단계는:
상기 외부 쓰로틀링 레벨 및 상기 내부 쓰로틀링 레벨을 비교하는 단계; 및
상기 외부 쓰로틀링 레벨 및 상기 내부 쓰로틀링 레벨이 동일한 경우, 상기 외부 쓰로틀링 레벨 또는 상기 내부 쓰로틀링 레벨을 상기 최종 쓰로틀링 레벨로서 결정하고, 상기 외부 쓰로틀링 레벨 및 상기 내부 쓰로틀링 레벨이 다른 경우, 상기 외부 쓰로틀링 레벨, 상기 내부 쓰로틀링 레벨, 및 다른 쓰로트링 레벨 중 어느 하나를 상기 최종 쓰로틀링 레벨로 결정하는 단계를 포함하는 동작 방법. - 제 10 항에 있어서,
상기 쓰로틀링 성능은 상기 인터페이스 채널을 통한 랜덤 읽기 속도, 랜덤 쓰기 속도, 순차 읽기 속도, 또는 순차 쓰기 속도 중 적어도 하나와 관련된 동작 방법. - 제 10 항에 있어서,
상기 외부 호스트 장치로부터 상기 쓰로틀링 PDT에 대한 요청을 수신하는 단계; 및
상기 요청에 응답하여, 상기 쓰로틀링 PDT를 상기 외부 호스트 장치로 전송하는 단계를 더 포함하는 동작 방법. - 제 10 항에 있어서,
상기 스토리지 장치는 상기 외부 호스트 장치와 상기 인터페이스 채널을 통해 통신하도록 구성된 호스트 인터페이스 회로를 포함하고,
상기 적어도 하나의 동작 파라미터는 상기 호스트 인터페이스 회로의 동작을 제어하는 정보를 포함하는 동작 방법. - 호스트 장치 및 인터페이스 채널을 통해 상기 호스트 장치와 통신하는 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법에 있어서,
상기 호스트 장치에 의해, 제1 우선도를 갖는 제1 애플리케이션을 실행하는 단계;
상기 호스트 장치에 의해, 쓰로틀링 PDT(PreDefined Table)을 기반으로, 상기 제1 우선도에 대응하는 제1 쓰로틀링 레벨을 선택하는 단계;
상기 호스트 장치에 의해, 상기 제1 쓰로틀링 레벨에 대한 정보를 상기 스토리지 장치로 전송하는 단계;
상기 스토리지 장치에 의해, 상기 쓰로틀링 PDT를 기반으로, 상기 인터페이스 채널이 상기 제1 쓰로틀링 레벨에 대응하는 제1 쓰로틀링 성능을 갖도록 적어도 하나의 동작 파라미터를 설정하는 단계;
상기 호스트 장치에 의해, 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제1 애플리케이션에 의해 발행된 제1 입출력(I/O; input/outpu) 요청을 상기 스토리지 장치로 전송하는 단계; 및
상기 스토리지 장치에 의해, 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해, 상기 제1 I/O 요청에 대응하는 제1 동작을 처리하는 단계를 포함하는 동작 방법. - 제 17 항에 있어서,
상기 호스트 장치에 의해, 제2 우선도를 갖는 제2 애플리케이션을 실행하는 단계;
상기 호스트 장치에 의해, 상기 쓰로틀링 PDT를 기반으로, 상기 제2 우선도에 대응하는 제2 쓰로틀링 레벨을 선택하는 단계;
상기 호스트 장치에 의해, 상기 제2 쓰로틀링 레벨에 대한 정보를 상기 스토리지 장치로 전송하는 단계;
상기 스토리지 장치에 의해, 상기 쓰로틀링 PDT를 기반으로, 상기 인터페이스 채널이 상기 제2 쓰로틀링 레벨에 대응하는 제2 쓰로틀링 성능을 갖도록, 상기 적어도 하나의 동작 파라미터를 재설정하는 단계;
상기 호스트 장치에 의해, 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해 상기 제2 애플리케이션에 의해 발행된 제2 I/O 요청을 상기 스토리지 장치로 전송하는 단계; 및
상기 스토리지 장치에 의해, 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널을 통해, 상기 I/O 요청에 대응하는 제2 동작을 처리하는 단계를 포함하는 동작 방법. - 제 18 항에 있어서,
상기 제1 우선도는 성능과 관련되고, 상기 제2 우선도는 성능 일관성과 관련되고,
상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제2 최대 성능 및 제2 최소 성능의 차이인 제2 변동 수준은 상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 최대 성능 및 제1 최소 성능의 차이인 제1 변동 수준보다 작고,
상기 제1 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제1 평균 성능은 상기 제2 쓰로틀링 성능을 갖는 상기 인터페이스 채널의 제2 평균 성능보다 높은 동작 방법. - 제 17 항에 있어서,
상기 스토리지 장치는 상기 외부 호스트 장치와 상기 인터페이스 채널을 통해 통신하도록 구성된 호스트 인터페이스 회로를 포함하고,
상기 적어도 하나의 동작 파라미터는 상기 호스트 인터페이스 회로의 동작을 제어하는 정보를 포함하는 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190094235A KR20210016203A (ko) | 2019-08-02 | 2019-08-02 | 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법 |
US16/943,000 US11474735B2 (en) | 2019-08-02 | 2020-07-30 | Operation method of storage device, and operation method of storage system including host device and storage device |
CN202010757922.2A CN112306400A (zh) | 2019-08-02 | 2020-07-31 | 存储装置的操作方法和存储系统的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190094235A KR20210016203A (ko) | 2019-08-02 | 2019-08-02 | 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210016203A true KR20210016203A (ko) | 2021-02-15 |
Family
ID=74258670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190094235A KR20210016203A (ko) | 2019-08-02 | 2019-08-02 | 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11474735B2 (ko) |
KR (1) | KR20210016203A (ko) |
CN (1) | CN112306400A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240103708A (ko) * | 2022-12-27 | 2024-07-04 | 삼성전자주식회사 | 스토리지 시스템, 스토리지 장치 및 그 동작 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7137019B2 (en) | 2003-04-30 | 2006-11-14 | International Business Machines Corporation | Adaptive throttling system for data processing systems |
US8850153B2 (en) | 2011-09-30 | 2014-09-30 | International Business Machines Corporation | Enabling throttling on average write throughput for solid state storage devices |
JP2013156929A (ja) * | 2012-01-31 | 2013-08-15 | Toshiba Corp | 記憶装置とその制御方法 |
US9436628B2 (en) | 2014-05-30 | 2016-09-06 | Apple Inc. | Thermal mitigation using selective I/O throttling |
US9760392B1 (en) | 2015-08-31 | 2017-09-12 | Veritas Technologies Llc | Adaptive throttling in hybrid storage environments |
US10055144B1 (en) * | 2016-03-30 | 2018-08-21 | Amazon Technologies, Inc. | Configurable storage drive |
US10025522B2 (en) | 2016-04-15 | 2018-07-17 | Sandisk Technologies Llc | Memory interface command queue throttling |
US10007311B2 (en) | 2016-08-15 | 2018-06-26 | Sandisk Technologies Llc | Adaptive temperature and memory parameter throttling |
KR102462385B1 (ko) | 2017-07-17 | 2022-11-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10528506B2 (en) * | 2017-10-18 | 2020-01-07 | Western Digital Technologies, Inc. | Uniform performance monitor for a data storage device and method of operation |
US11789512B2 (en) * | 2019-01-08 | 2023-10-17 | International Business Machines Corporation | Increased data storage throttling during power failure |
-
2019
- 2019-08-02 KR KR1020190094235A patent/KR20210016203A/ko active Search and Examination
-
2020
- 2020-07-30 US US16/943,000 patent/US11474735B2/en active Active
- 2020-07-31 CN CN202010757922.2A patent/CN112306400A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN112306400A (zh) | 2021-02-02 |
US20210034280A1 (en) | 2021-02-04 |
US11474735B2 (en) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086537B2 (en) | Method and system to perform urgency level garbage collection based on write history of memory blocks | |
KR102291803B1 (ko) | 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법 | |
KR102580820B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102094393B1 (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
KR102649131B1 (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
US10324661B2 (en) | Storage device and operating method thereof | |
KR20210016184A (ko) | 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 | |
KR20210051921A (ko) | 메모리 시스템 및 그것의 동작방법 | |
US20200057581A1 (en) | Memory system and operating method thereof | |
KR102653373B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
CN112684976A (zh) | 用于执行迁移操作的存储器系统及其操作方法 | |
KR20210144249A (ko) | 저장 장치 및 이의 동작 방법 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN115390747A (zh) | 存储设备及其操作方法 | |
US11175852B2 (en) | Storage device and operation method thereof | |
KR20210016203A (ko) | 스토리지 장치의 동작 방법, 및 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법 | |
US11907586B2 (en) | Storage device configured to support multi-streams and operation method thereof | |
KR20210039185A (ko) | 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치 | |
KR20210156061A (ko) | 저장 장치 및 그 동작 방법 | |
US11656996B2 (en) | Controller for managing order information of data, operation method thereof, and memory system including the same | |
US11657000B2 (en) | Controller and memory system including the same | |
KR102484073B1 (ko) | 스토리지 시스템 | |
CN113946277B (zh) | 主机效能加速模式的数据读取方法及装置 | |
US11586382B2 (en) | Memory system and data processing system for distributedly storing input data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |