KR20210099291A - 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법 - Google Patents

다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20210099291A
KR20210099291A KR1020200012955A KR20200012955A KR20210099291A KR 20210099291 A KR20210099291 A KR 20210099291A KR 1020200012955 A KR1020200012955 A KR 1020200012955A KR 20200012955 A KR20200012955 A KR 20200012955A KR 20210099291 A KR20210099291 A KR 20210099291A
Authority
KR
South Korea
Prior art keywords
command
physical function
transmission queue
information
hosts
Prior art date
Application number
KR1020200012955A
Other languages
English (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 삼성전자주식회사
Priority to KR1020200012955A priority Critical patent/KR20210099291A/ko
Priority to US17/129,185 priority patent/US11409469B2/en
Priority to CN202110129426.7A priority patent/CN113282230A/zh
Priority to EP21155074.4A priority patent/EP3869317A1/en
Publication of KR20210099291A publication Critical patent/KR20210099291A/ko
Priority to US17/852,652 priority patent/US11861238B2/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/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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

본 발명의 실시 예에 따른 제1 및 제2 호스트들과 각각 대응하는 제1 및 제2 물리 기능들을 포함하는 스토리지 장치의 동작 방법은 제1 및 제2 호스트들 각각으로부터 성능 정보를 수신하는 단계, 수신된 성능 정보를 기반으로 제1 물리 기능에 대응하는 제1 가중치 및 제2 물리 기능에 대응하는 제2 가중치를 설정하는 단계, 누적값 테이블을 기반으로, 제1 호스트에 의해 관리되는 제1 및 제2 전송 큐들 및 제2 호스트에 의해 관리되는 제3 및 제4 전송 큐들 중 하나를 선택하는 단계, 선택된 전송 큐로부터의 커맨드를 처리하는 단계, 및 제1 및 제2 가중치들 중 처리된 커맨드와 대응하는 가중치 및 처리된 커맨드의 입출력(I/O; input/output) 정보를 기반으로 누적값 테이블을 갱신하는 단계를 포함한다.

Description

다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법{STORAGE DEVICE CONFIGURED TO SUPPORT MULTI-HOSTS AND OPERATION METHOD THEREOF}
본 발명은 스토리지 장치에 관한 것으로, 좀 더 상세하게는 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
플래시 메모리 기반의 대용량 저장 매체들은 고속 인터페이스를 사용하여 외부 장치와 통신한다. 최근에는, 단일 저장 매체가 복수의 호스트들 또는 복수의 테넌트들(tenants)을 지원하는 다중-호스트 스토리지 시스템이 개발되고 있다. 일반적으로, 복수의 호스트들이 단일 저장 매체를 액세스하는 경우, 단일 저장 매체의 물리적 리소스는 제한적이기 때문에, 복수의 호스트들 각각에 대한 성능이 저하되는 문제점이 발생한다.
본 발명의 목적은 복수의 호스트들 각각에 대하여 최소 성능을 보장함으로써, 전체적인 스토리지 시스템의 성능이 향상된 스토리지 장치 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 제1 및 제2 호스트들과 각각 대응하는 제1 및 제2 물리 기능들을 포함하는 스토리지 장치의 동작 방법은 상기 제1 및 제2 호스트들 각각으로부터 성능 정보를 수신하는 단계, 상기 수신된 성능 정보를 기반으로 상기 제1 물리 기능에 대응하는 제1 가중치 및 상기 제2 물리 기능에 대응하는 제2 가중치를 설정하는 단계, 누적값 테이블을 기반으로, 상기 제1 호스트에 의해 관리되는 제1 및 제2 전송 큐들 및 상기 제2 호스트에 의해 관리되는 제3 및 제4 전송 큐들 중 하나를 선택하는 단계, 상기 선택된 전송 큐로부터의 커맨드를 처리하는 단계, 및 상기 제1 및 제2 가중치들 중 상기 처리된 커맨드와 대응하는 가중치 및 상기 처리된 커맨드의 입출력(I/O; input/output) 정보를 기반으로 상기 누적값 테이블을 갱신하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 및 제1 및 제2 호스트의 제어에 따라 상기 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 상기 제1 호스트의 제1 전송 큐로부터의 제1 커맨드 및 제2 전송 큐로부터의 제2 커맨드를 처리하도록 구성된 제1 NMVe 컨트롤러, 상기 제2 호스트의 제3 전송 큐로부터의 제3 커맨드 및 제4 전송 큐로부터의 제4 커맨드를 처리하도록 구성된 제2 NVMe 컨트롤러, 및 상기 제1 및 제2 호스트들로부터의 성능 정보를 기반으로 상기 제1 및 제2 NVMe 컨트롤러들 각각에 대한 제1 및 제2 가중치들을 설정하고, 상기 제1 및 제2 가중치들 및 이전에 처리됨 커맨드를 기반으로 누적된 정보를 포함하는 누적값 테이블을 기반으로, 상기 제1 내지 제4 전송 큐들 중 하나의 전송 큐를 선택하고, 상기 제1 내지 제4 커맨드들 중 상기 선택된 하나의 전송 큐로부터의 커맨드를 처리하도록 구성된 성능 관리자를 포함한다.
본 발명의 실시 예에 따른 복수의 호스트들과 통신하도록 구성된 스토리지 장치의 동작 방법은 상기 복수의 호스트들로부터 성능 정보를 수신하는 단계, 상기 성능 정보를 기반으로 상기 복수의 호스트들 각각에 대한 가중치를 설정하는 단계, 누적값 테이블을 기반으로, 상기 복수의 호스트들로부터의 커맨드들을 스케줄링을 수행하는 단계, 상기 스케줄링된 커맨드들을 처리하는 단계, 및 상기 처리된 커맨드들의 입출력(I/O; input/output) 정보 및 상기 가중치를 기반으로 상기 누적 값 테이블을 갱신하는 단계를 포함하고, 상기 누적값 테이블은 상기 복수의 호스트들 각각에 대해 이전에 처리된 커맨드의 I/O 정보 및 상기 가중치의 곱이 누적된 누적값들을 포함한다.
본 발명의 실시 예에 따른 제1 호스트와 각각 대응하는 제1 물리 기능을 포함하는 스토리지 장치의 동작 방법은 상기 제1 물리 기능에 대응하는 제1 전송 큐로부터 제1 커맨드를 페치하는 단계, 상기 페치된 제1 커맨드에 대한 동작을 완료하는 단계, 상기 제1 물리 기능과 대응되는 토큰 개수에 대한 정보를 포함하는 토큰 관리 테이블을 기반으로, 상기 제1 물리 기능과 대응되는 토큰이 존재하는지 판별하는 단계, 및 상기 제1 물리 기능과 대응되는 토큰이 존재하는 경우, 상기 입출력 컴플리션을 상기 제1 호스트로 전송하고, 상기 제1 물리 기능과 대응되는 토큰이 존재하지 않는 경우, 상기 입출력 컴플리션을 상기 제1 호스트로 전송하지 않는 단계를 포함한다.
본 발명에 따르면, 스토리지 장치는 복수의 호스트들 각각에 대한 최소 성능을 보장할 수 있다. 또는 스토리지 장치는 복수의 호스트들 각각에 대한 성능을 대응하는 최대 성능을 제한 시킴으로써, 특정 호스트가 스토리지 장치의 물리 리소스를 점유하는 문제점을 방지할 수 있다. 따라서, 향상된 성능을 갖는 스토리지 장치 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3a 내지 도 3c는 도 1의 스토리지 장치의 물리 기능을 설명하기 위한 도면들이다.
도 4는 도 1의 스토리지 장치의 동작을 예시적으로 보여주는 순서도이다.
도 5는 도 2의 누적값 테이블을 예시적으로 보여주는 도면이다.
도 6은 도 4의 순서도의 S30 단계 및 S40 단계의 동작을 좀 더 상세하게 보여주는 순서도이다.
도 7a 내지 도 7c는 도 5 및 도 6의 순서도에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 8은 도 2의 누적값 테이블을 예시적으로 보여주는 도면이다.
도 9는 도 4의 순서도의 S30 단계 및 S40 단계의 동작을 좀 더 상세하게 보여주는 순서도이다.
도 10a 내지 도 10c는 도 9의 순서도에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 11은 도 4의 순서도의 S20 단계, S30 단계, 및 S40 단계의 동작을 상세하게 보여주는 순서도이다.
도 12a 내지 도 12c는 도 11의 순서도에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 19은 본 발명에 따른 스토리지 시스템이 적용된 SSD 시스템을 예시적으로 보여주는 블록도이다.
도 20는 발명에 따른 스토리지 시스템이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 21는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 복수의 호스트들(11~1n) 및 스토리지 장치(100)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 시스템(10)은 개인용 컴퓨터, 랩탑 컴퓨터, 서버, 워크스테이션, 스마트폰, 태블릿 PC 등과 같은 다양한 정보 처리 장치들 중 적어도 하나를 포함할 수 있다.
복수의 호스트들(11~1n) 각각은 스토리지 장치(100)를 액세스하도록 구성될 수 있다. 예시적인 실시 예에서, 복수의 호스트들(11~1n) 각각은 서로 독립적으로 동작하도록 구성된 컴퓨팅 노드일 수 있다. 예시적인 실시 예에서, 복수의 호스트들(11~1n) 각각은 서로 다른 컴퓨팅 노드(또는 컴퓨팅 시스템)에 포함된, 싱글 코어 프로세서 또는 멀티 코어 프로세서일 수 있다. 또는, 복수의 호스트들(11~1n) 중 적어도 일부는 동일한 컴퓨팅 노드(또는 컴퓨팅 시스템)에 포함된 서로 다른 프로세서일 수 있다. 또는 복수의 호스트들(11~1n) 각각은 서로 다른 애플리케이션을 처리하도록 구성된 프로세스들일 수 있다.
스토리지 장치(100)는 복수의 호스트들(11~1n) 각각의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함할 수 있다. 스토리지 컨트롤러(110)는 복수의 호스트들(11~1n) 각각의 제어에 따라, 불휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(120)에 저장된 데이터를 복수의 호스트들(11~1n)로 제공할 수 있다. 예시적인 실시 예에서, 복수의 호스트들(11~1n) 및 스토리지 장치(100)는 PCI-express(Peripheral Component Interconnect express) 인터페이스 또는 PCI-express기반의 NVMe(nonvolatile memory express) 인터페이스를 기반으로 서로 통신할 수 있다. 복수의 호스트들(11~1n) 및 스토리지 장치(100) 사이의 인터페이스 및 이에 따른 구조적 특징은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
예시적인 실시 예에서, 스토리지 장치(100)는 다중-호스트 또는 다중-테넌트(multi-host or multi-tenant)를 지원하도록 구성된 스토리지 장치 또는 단일 스토리지 장치일 수 있다. 스토리지 장치(100)를 독립적으로 액세스하도록 구성된 복수의 호스트들(11~1n) 각각은 각각의 타입 또는 운영방식에 따라 스토리지 장치(100)에 대한 특정 성능을 필요로 할 수 있다. 그러나 스토리지 장치(100)의 물리적 자원(physical resource)의 제약으로 인하여, 특정 조건(예를 들어, 특정 호스트가 스토리지 장치(100)의 물리적 자원을 모두 또는 대부분 점유한 경우)에서, 스토리지 장치(100)는 복수의 호스트들(11~1n) 각각에 대한 특정 성능을 지원하지 못할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치(100)는 복수의 호스트들(11~1n) 각각에 대하여, 최저 성능을 보장할 수 있다. 예를 들어, 스토리지 장치(100)의 스토리지 컨트롤러(110)는 성능 관리자(111)를 포함할 수 있다. 성능 관리자(111)는 복수의 호스트들(11~1n) 각각에 대응하는 물리 기능들 또는 전송 큐들에 대한 가중치를 설정하고, 설정된 가중치 및 처리된 I/O 정보를 기반으로 누적값(AV; aggregated value)을 관리할 수 있다. 성능 관리자(111)는 누적값(AV)을 기반으로 복수의 호스트들(11~1n) 각각으로부터의 커맨드를 스케줄링할 수 있다. 성능 관리자(111)의 동작 및 구성은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 성능 관리자(111), 프로세서(112), SRAM(113), 호스트 인터페이스 회로(114), 및 불휘발성 메모리 인터페이스 회로(115)를 포함할 수 있다.
성능 관리자(111)는 복수의 호스트들(11~1n) 각각에 대한 커맨드를 스케줄링함으로써, 복수의 호스트들(11~1n) 각각에 대한 성능을 관리하도록 구성될 수 있다. 예를 들어, 성능 관리자(111)는 커맨드 스케줄러(111a), 누적값 관리자(111b), 및 가중치 관리자(111c)를 포함할 수 있다.
커맨드 스케줄러(111a)는 복수의 호스트들(11~1n) 각각으로부터의 커맨드들을 스케줄링하도록 구성될 수 있다. 예를 들어, 커맨드 스케줄러(111a)는 누적값 관리자(111b)에 의해 관리되는 누적값 테이블(AVT; aggregated value table)을 기반으로 복수의 호스트들(11~1n)에 대응하는 전송 큐를 선택하고, 선택된 전송 큐로부터의 커맨드를 처리할 수 있다. 예시적인 실시 예에서, 커맨드 스케줄러(111a)는 상대적으로 작은 누적값 또는 가장 작은 누적값에 대응하는 전송 큐 또는 물리 기능을 선택하도록 구성될 수 있다.
누적값 관리자(111b)는 누적값 테이블(AVT)을 관리하도록 구성될 수 있다. 누적값 테이블(AVT)은 복수의 호스트들(11~1n) 각각에 대응하는 물리 기능(PF; physical function) 또는 전송 큐들(SQ; submission queue)에 대한 누적값을 포함할 수 있다. 누적값은 가중치 관리자(111c)에 의해 관리되는 가중치 및 처리된 I/O 정보가 누적된 값을 가리킬 수 있다. 즉, 제1 및 제2 전송 큐들에 대한 가중치가 서로 동일한 경우, 제1 전송 큐에 대한 커맨드가 제2 전송 큐에 대한 커맨드보다 상대적으로 많이 처리된 경우, 제1 전송 큐에 대응하는 누적값이 제2 전송 큐에 대응하는 누적값보다 클 수 있다. 또는, 제1 전송 큐에 대한 커맨드가 제2 전송 큐에 대한 커맨드보다 상대적으로 많이 처리되더라도, 제1 및 제2 전송 큐들에 대응하는 가중치들에 따라, 제1 및 제2 전송 큐들에 대응하는 누적값들의 대소 관계는 서로 바뀔 수 있다.
상술된 바와 같이, 커맨드 스케줄러(111a)가 상대적으로 작은 누적값 또는 가장 작은 누적값에 대응하는 전송 큐 또는 물리 기능을 선택함으로써, 상대적으로 작은 빈도로 서비스된 호스트에 대한 커맨드들이 처리될 수 있다. 이 경우, 복수의 호스트들(11~1n) 전체에 대한 성능이 균일해지거나 또는 복수의 호스트들(11~1n) 각각에 대한 최저 성능이 보장될 수 있다.
가중치 관리자(111c)는 누적값 관리자(111b)에 의해 관리되는 누적값(AV)을 생성하는데 필요한 가중치를 관리하도록 구성될 수 있다. 예를 들어, 스토리지 장치(100)는 초기화 동작에서, 복수의 호스트들(11~1n) 각각으로부터 성능 정보를 수신할 수 있다. 성능 정보는 복수의 호스트들(11~1n) 각각에 대한 최저 성능의 정보를 포함할 수 있다. 가중치 관리자(111c)는 복수의 호스트들(11~1n) 각각에 대한 최저 성능의 정보를 기반으로, 복수의 호스트들(11~1n) 각각에 대응하는 물리 기능(PF) 또는 전송 큐(SQ)에 대한 가중치를 설정할 수 있다. 예시적인 실시 예에서, 하나의 물리 기능(PF) 또는 하나의 전송 큐(SQ)에 대한 가중치는 읽기 동작에 대한 읽기 가중치, 쓰기 동작에 대한 쓰기 가중치, 또는 추가 동작(예를 들어, 가비지 콜렉션 등)에 대한 추가 가중치를 포함할 수 있다. 상술된 성능 관리자(111)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
예시적인 실시 예에서, 상술된 물리 기능(PF; physical function)은 NVMe 인터페이스 표준에 의해 정의된 기능을 제공하도록 구성된 하드웨어 또는 소프트웨어 구성일 수 있다. 또는 물리 기능(PF)은 단일 PCI-express 기능을 지원하도록 구성된 NVMe 컨트롤러일 수 있다. 또는 물리 기능(PF)은, 물리 기능(PF)이 하나 또는 그 이상의 종속적인 가상 기능(Virtual Function)을 지원하도록 구성된 SR-IOV(Single Root I/O Virtualization) 기능을 지원하는 PCI-express 기능일 수 있다. 이하에서, 물리 기능(PF)은 복수의 호스트들(11~1n) 중 적어도 하나에 대응하는 NVMe 컨트롤러인 것으로 가정하나, 본 발명의 범위가 이에 한정되는 것은 아니다. 물리 기능(PF)의 구성은 도 3a 내지 도 3c를 참조하여 더욱 상세하게 설명된다.
프로세서(112)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(112)는 스토리지 컨트롤러(110)에서 실행되는 다양한 애플리케이션(예를 들어, 플래시 변환 계층(FTL; flash translation layer))을 실행할 수 있다. SRAM(113)은 스토리지 컨트롤러(110)의 버퍼 메모리, 동작 메모리, 또는 캐시 메모리로서 사용될 수 있다. 예시적인 실시 예에서, 성능 관리자(111)는 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 구현될 수 있다. 성능 관리자(111)가 소프트웨어 형태로 구현되는 경우, 성능 관리자(111)와 관련된 정보는 SRAM(113)에 저장될 수 있고, SRAM(113)에 저장된 성능 관리자(111)는 프로세서(112)에 의해 실행될 수 있다.
호스트 인터페이스 회로(114)는 미리 정해진 인터페이스를 통해 복수의 호스트들(11~1n)과 통신할 수 있다. 예시적인 실시 예에서, 미리 정해진 인터페이스는 PCI-express(Peripheral Component Interconnect express) 인터페이스, NVMe(nonvolatile memory express) 인터페이스, SATA(Serial ATA) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, UFS(Universal Flash Storage) 인터페이스 등과 같은 다양한 호스트 인터페이스들 중 적어도 하나를 포함할 수 있다. 이하에서, 본 발명의 기술적 사상을 용이하게 설명하기 위하여, 호스트 인터페이스 회로(114)는 NVMe 인터페이스를 기반으로 구현되는 것으로 가정한다. 즉, 호스트 인터페이스 회로(114)는 PCI-express 인터페이스 기반의 물리 계층을 통해 복수의 호스트들(11~1n) 각각과 통신할 수 있고, NVMe 인터페이스 기반의 NVMe 컨트롤러를 통해 복수의 호스트들(11~1n)로부터 수신된 정보를 처리할 수 있다. 예시적인 실시 예에서, NVMe 컨트롤러는 호스트 인터페이스 회로(114)에 포함될 수 있으며, NVMe 컨트롤러는 복수의 호스트들(11~1n)과 대응될 수 있다.
예시적인 실시 예에서, 성능 관리자(111)가 하드웨어 형태로 구현되는 경우, 성능 관리자(111)는 호스트 인터페이스 회로(114)에 포함될 수 있거나, 또는 호스트 인터페이스 회로(114)의 NVMe 컨트롤러에 포함될 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 인터페이스 회로(115)를 통해 불휘발성 메모리 장치(120)와 통신할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 인터페이스 회로(115)는 낸드 인터페이스일 수 있으며, 낸드 인터페이스는 불휘발성 메모리 장치(120)에 포함된 복수의 불휘발성 메모리들에 대한 멀티-웨이/멀티-채널을 지원할 수 있다.
도 3a 내지 도 3c는 도 1의 스토리지 장치의 물리 기능을 설명하기 위한 도면들이다. 이하에서, 도면의 간결성 및 설명의 편의를 위하여, 물리 기능(PF; physical function)의 구성, 구조, 및 기능을 설명하는데 불필요한 구성 요소들은 생략된다.
이하에서, 본 발명의 기술적 사상을 용이하게 설명하기 위하여, 물리 기능(PF)의 용어가 사용된다. 물리 기능(PF)은 복수의 호스트들(11~1n) 각각에 대응하는 NVMe 컨트롤러를 지칭할 수 있다. 또한, 설명의 편의를 위하여, 물리 기능(PF)의 용어가 사용되나, 물리 기능(PF)은 NVMe 컨트롤러의 구성 또는 용어와 교환적으로 사용될 수 있다. NVMe 컨트롤러는 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 구현될 수 있다. 또는, 물리 기능(PF)은 SR-IOV의 기능을 지원하도록 구성된 PCI-express 기능을 가리킬 수 있다. SR-IOV는 하나의 물리 기능이 하나 또는 그 이상의 종속적인 가상 기능을 지원하는 기능을 가리킬 수 있다. 즉, 이하에서, 물리 기능(PF)은 복수의 호스트들(11~1n) 중 적어도 하나와 대응되며, 복수의 호스트들(11~1n) 중 대응하는 호스트에 대한 커맨드, 또는 대응하는 호스트에 의해 관리되는 전송 큐의 커맨드를 처리하도록 구성되는 것으로 이해될 것이다. 이하에서, 설명의 편의를 위하여, 스토리지 장치(100)는 3개의 호스트들(11, 12, 13)과 통신하는 것으로 가정하나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1 내지 도 3c를 참조하면, 제1 내지 제3 호스트들(11~13) 각각은 대응하는 동작을 처리하기 위한 커맨드들(CMD1~CMD3)을 발행할 수 있다. 예를 들어, 제1 호스트(11)는 제1 커맨드(CMD1)를 발행할 수 있고, 발행된 제1 커맨드(CMD1)는 제1 전송 큐(SQ1; submission queue)에 큐잉될 수 있다. 제2 호스트(12)는 제2 커맨드(CMD2)를 발행할 수 있고, 발행된 제2 커맨드(CMD2)는 제2 전송 큐(SQ2)에 큐잉될 수 있다. 제3 호스트(13)는 제3 커맨드(CMD3)를 발행할 수 있고, 발행된 제3 커맨드(CMD3)는 제3 전송 큐(SQ3)에 큐잉될 수 있다.
예시적인 실시 예에서, 제1 내지 제3 호스트들(11~13)이 각각 하나의 전송 큐를 관리하는 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 제1 내지 제3 호스트들(11~13) 각각은 복수의 전송 큐들을 관리할 수 있다. 또는 제1 내지 제3 호스트들(11~13) 각각은 복수의 전송 큐들에 대한 완료(completion)를 수신하도록 구성된 완료 큐(Completion Queue)를 더 관리할 수 있다. 또는, 제1 내지 제3 호스트들(11~13) 각각은 관리 커맨드(administrative command)를 발행하고, 관리 커맨드에 대한 완료(completion)을 수신하도록 구성된 관리 큐(Admin Queue) 및 관리 완료 큐(Admin Completion Queue)를 더 관리할 수 있다. 예시적인 실시 예에서, 상술된 전송 큐, 완료 큐, 관리 큐, 관리 완료 큐 등은 스토리지 장치(100)의 컨트롤러 메모리 버퍼(CMB; controller memory buffer)(예를 들어, 도 2의 SRAM(113) 또는 별도의 버퍼 메모리(미도시))에 포함될 수 있다. 또는 상술된 전송 큐, 완료 큐, 관리 큐, 관리 완료 큐 등은 대응하는 호스트의 호스트 메모리 버퍼(HMB; host memory buffer)에 포함될 수 있다.
스토리지 장치(100)는 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 예시적인 실시 예에서, 스토리지 장치(100)는 PCI-express 인터페이스의 기반의 물리 계층을 통한 인터페이스(예를 들어, NVMe over PCI-express)를 통해 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 또는, 스토리지 장치(100)는 파이버 채널(Fibre Channel), RDMA(remote direct random access memory) 등과 같은 네트워크 기반의 인터페이스(예를 들어, NVMe-oF; NVMe over Fabrics)를 통해 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 이하에서, 본 발명의 실시 예를 명확하게 설명하기 위하여, 스토리지 컨트롤러(110)는 NVMe over PCI-express 인터페이스를 통해 제1 내지 제3 호스트들(11~13)과 통신하는 것으로 가정한다.
스토리지 장치(100)는 다양한 형태의 물리 계층을 통해 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 제1 내지 제3 물리 기능들(PF1~PF3)은 제1 내지 제3 호스트들(11~13)과 각각 대응할 수 있다. 예를 들어, 제1 물리 기능(PF1)은 제1 호스트(11)와 통신할 수 있고, 제1 호스트(11)로부터의 제1 커맨드(CMD1)를 처리하도록 구성된 제1 NVMe 컨트롤러를 가리킬 수 있다. 제2 물리 기능(PF2)은 제2 호스트(12)와 통신할 수 있고, 제2 호스트(12)로부터의 제2 커맨드(CMD2)를 처리하도록 구성된 제2 NVMe 컨트롤러를 가리킬 수 있다. 제3 물리 기능(PF3)은 제3 호스트(13)와 통신할 수 있고, 제3 호스트(13)로부터의 제3 커맨드(CMD3)를 처리하도록 구성된 제3 NVMe 컨트롤러를 가리킬 수 있다.
제1 내지 제3 물리 기능들(PF1~PF3)은 대응하는 호스트로부터의 커맨드를 기반으로 불휘발성 메모리 장치(120)에 대한 동작을 수행할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(120)는 논리적으로 구분된 명칭 공간(NS; namespace)로 관리되거나 또는 물리적 또는 논리적으로 구분된 불휘발성 메모리 셋(NVM set)으로 관리될 수 있다. 제1 내지 제3 물리 기능들(PF1~PF3) 각각은 , 커맨드에 대응하는 동작을 대응하는 명칭 공간 또는 대응하는 NVM 셋에 대하여 수행할 수 있다.
성능 관리자(111)는 제1 내지 제3 물리 기능들(PF1~PF3)의 레벨을 기반으로 제1 내지 제3 물리 기능들(PF1~PF3)의 동작을 제어할 수 있다. 예를 들어, 성능 관리자(111)는 제1 내지 제3 물리 기능들(PF1~PF3)의 레벨을 기반으로 제1 내지 제3 물리 기능들(PF1~PF3) 중 커맨드를 처리할 물리 기능들을 스케줄링할 수 있다.
예시적인 실시 예에서, 도 3a에 도시된 바와 같이, 제1 내지 제3 물리 기능들(PF1~PF3)은 하나의 물리 포트(PT)를 통해 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 즉, 도 3a에 도시된 바와 같이, 스토리지 컨트롤러(110a)는 하나의 물리 포트(PT), 제1 내지 제3 물리 기능들(PF1~PF3), 및 성능 관리자(111)를 포함할 수 있다. 제1 내지 제3 물리 기능들(PF1~PF3)은 하나의 물리 포트(PT)를 통해 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 물리 포트(PT)는 PCI-express 인터페이스를 지원하도록 구성된 물리 계층일 수 있다. 예시적인 실시 예에서, 제1 내지 제3 물리 기능들(PF1~PF3) 각각은 종속적인 가상 기능들을 지원할 수 있다. 예시적인 실시 예에서, 제1 내지 제3 물리 기능들(PF1~PF3) 중 적어도 하나는 종속적인 가상 기능일 수 있다.
또는, 도 3b에 도시된 바와 같이, 제1 내지 제3 물리 기능들(PF1~PF3)은 복수의 물리 포트들(PT1~PT3)을 통해 제1 내지 제3 호스트들(11~13)과 통신할 수 있다. 예를 들어, 도 3a에 도시된 바와 같이, 스토리지 컨트롤러(110b)는 제1 내지 제3 물리 포트들(PT1~PT3), 제1 내지 제3 물리 기능들(PF1~PF3), 및 성능 관리자(111)를 포함할 수 있다. 제1 내지 제3 물리 포드들(PT1~PT3) 각각은 PCI-express 인터페이스를 지원하도록 구성된 독립적인 물리 계층일 수 있다. 제1 물리 기능(PF1)은 제1 물리 포트(PT1)를 통해 제1 호스트(11)와 통신할 수 있고, 제2 물리 기능(PF2)은 제2 물리 포트(PT2)를 통해 제2 호스트(12)와 통신할 수 있고, 제3 물리 기능(PF3)은 제3 물리 포트(PT3)를 통해 제3 호스트(13)와 통신할 수 있다.
예시적인 실시 예에서, 도 3c에 도시된 바와 같이, 제1 내지 제3 호스트들(11~13) 중 적어도 하나의 호스트(예를 들어, 제1 호스트(11))는 적어도 2개의 물리 기능들과 통신할 수 있다. 예를 들어, 도 3c에 도시된 바와 같이, 스토리지 컨트롤러(110c)는 제0 내지 제3 물리 포트들(PT0~PT3), 제0 내지 제3 물리 기능들(PF1~PF3), 및 성능 관리자(111)를 포함할 수 있다. 제1 호스트(11)는 제0 물리 포트(PT0)를 통해 제0 물리 기능(PF0)과 통신할 수 있고, 제1 물리 포트(PT1)를 통해 제1 물리 기능(PF1)과 통신할 수 있다. 즉, 하나의 호스트가 적어도 2개의 물리 기능과 통신할 수 있다.
예시적인 실시 예에서, 상술된 제1 내지 제3 물리 기능들(PF1~PF3)과 대응하는 제1 내지 제3 NVMe 컨트롤러들, 및 물리 포트들(PT, PT0, PT1, PT2, PT3 등)은 호스트 인터페이스 회로(114)에 포함되거나 또는 호스트 인터페이스 회로(114) 상에서 구현될 수 있다.
도 3a 내지 도 3c를 참조하여 설명된 스토리지 장치(100) 및 호스트들(11~13) 사이의 통신 및 물리 기능(PF)의 구성은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 앞서 설명된 바와 같이, 물리 기능(PF)은 복수의 호스트들 각각과 대응되는 NVMe 컨트롤러를 가리킬 수 있으며, 복수의 물리 기능들(PF)은 하나의 물리 포트 또는 개별적인 물리 포트를 통해 대응하는 호스트와 통신하도록 구성될 수 있다. 즉, 이하에서, 하나의 물리 기능(PF)은 하나의 호스트와 대응되는 것으로 이해될 것이다.
도 4는 도 1의 스토리지 장치의 동작을 예시적으로 보여주는 순서도이다. 이하에서, 설명의 편의를 위하여, 하나의 호스트가 2개의 전송 큐들를 관리하는 것으로 설명된다. 예를 들어, 제1 물리 기능(PF1)은 제1 호스트(11)와 대응되고, 제1 호스트(11)는 2개의 전송 큐들(SQ11, SQ12)를 관리하는 것으로 가정한다. 이 경우, 제1 물리 기능(PF1)은 2개의 전송 큐들(SQ11, SQ12)로부터의 커맨드(CMD)를 처리하도록 구성될 수 있다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 하나의 호스트가 복수의 전송 큐들 또는 다른 커맨드 큐들을 더 관리할 수 있으며, 하나의 물리 기능(PF)은 복수의 전송 큐들 각각에 대한 커맨드를 처리하도록 구성될 수 있다.
이하에서, 설명의 편의를 위하여, "물리 기능의 전송 큐(the submission queue of the physical function)"의 용어가 사용된다. 물리 기능의 전송 큐는 물리 기능과 대응되는 호스트에 의해 관리되는 전송 큐를 의미할 수 있다.
이하에서, 설명의 편의를 위하여, 스토리지 장치(100)는 제1 내지 제3 호스트들(11~13)과 통신하고, 제1 내지 제3 호스트들(11~13)은 제1 내지 제3 물리 기능들(PF1~PF3)과 대응되는 것으로 가정한다. 제1 내지 제3 물리 기능들(PF1~PF3)은 도 3a 내지 도 3c를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 상술된 내용은 단순히 본 발명의 실시 예를 용이하게 설명하기 위한 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1, 도 2, 도 3a, 및 도 4를 참조하면, S10 단계에서, 스토리지 장치(100)는 제1 내지 제3 호스트들(11~13) 각각으로부터 성능 정보를 수신할 수 있다. 예를 들어, 제1 내지 제3 호스트들(11~13) 각각은 독립적으로 구동되는 컴퓨팅 노드, 프로세서, 또는 애플리케이션(또는 프로세스)일 수 있다. 이 때, 제1 내지 제3 호스트들(11~13) 각각은 구동되는 방식 또는 구동되는 애플리케이션에 따라 일정 수준의 성능을 요구할 수 있다. 스토리지 장치(100)는 제1 내지 제3 호스트들(11~13) 각각으로부터 성능 요구에 대한 성능 정보를 수신할 수 있다.
예시적인 실시 예에서, 성능 정보는 제1 내지 제3 호스트들(11~13) 각각에 대한 최소 성능 및 최대 성능에 대한 정보를 포함할 수 있다. 최소 성능은 제1 내지 제3 호스트들(11~13) 각각에서 요구되는 최소 성능에 대한 정보를 가리킬 수 있고, 최대 성능은 제1 내지 제3 호스트들(11~13)에서 필요한 최대 성능 또는 제한이 필요한 최대 성능을 가리킬 수 있다. 본 발명의 실시 예에 따른 스토리지 장치(100)는 제1 내지 제3 호스트들(11~13) 각각에 대하여 최소 성능 이상 그리고 최대 성능 이하의 성능을 제공할 수 있다.
예시적인 실시 예에서, 제1 내지 제3 호스트들(11~13) 각각에 대한 성능 정보는 스토리지 장치(100)의 초기화 과정 또는, 최초 통신 과정에서 수신될 수 있다.
S20 단계에서, 스토리지 장치(100)는 성능 정보를 기반으로 가중치 값(WV; weight value)을 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)의 성능 관리자(111)(특히, 가중치 관리자(111c))는 제1 내지 제3 호스트들(11~13) 각각의 성능 정보 또는 성능 정보에 포함된 최저 성능에 대한 정보를 기반으로, 제1 내지 제3 물리 기능들(PF1~PF3) 각각에 대한 가중치 값(WV)을 설정할 수 있다. 일 예로서, 제1 내지 제3 호스트들(11~13) 각각의 최소 성능은 1GB/s, 2GB/s, 및 3GB/s인 경우, 제1 내지 제3 물리 기능들(PF1~PF3) 각각에 대한 가중치 값들(WV)의 비율은 3:2:1일 수 있다. 예시적인 실시 예에서, S20 단계의 동작 통해 설정된 가중치 값들(WV)은 호스트로부터의 커맨드에 의해 수행되는 I/O 정보를 누적하는데 사용되는 가중치이며, 스토리지 장치(100) 내부에서 수행되는 유지 관리 동작에 의한 가중치 값들은 다를 수 있다.
S30 단계에서, 스토리지 장치(100)는 누적값 테이블(AVT)을 기반으로 커맨드를 처리할 수 있다. 예를 들어, 스토리지 컨트롤러(110)의 성능 관리자(111)(특히, 커맨드 스케줄러(111a))는 누적값 테이블(AVT) 가장 작은 누적값을 갖는 물리 기능 또는 전송 큐를 선택할 수 있다. 성능 관리자(111)는 선택된 물리 기능에 대응하는 전송 큐 또는 선택된 전송 큐로부터 커맨드를 페치할 수 있다. 예시적인 실시 예에서, 페치된 커맨드는 스토리지 컨트롤러(110)의 다른 구성 요소(예를 들어, 프로세서(112), 또는 불휘발성 메모리 인터페이스 회로(115))에 의해 처리될 수 있다.
S40 단계에서, 스토리지 장치(100)는 설정된 가중치 및 처리된 커맨드에 대한 I/O 정보를 기반으로 누적값 테이블(AVT)을 갱신할 수 있다. 예를 들어, 성능 관리자(111)(특히, 누적값 테이블 관리자(111b))는 처리된 커맨드에 대응하는 I/O 정보 및 대응하는 가중치 값의 곱을 기반으로, 누적값 테이블(AVT)의 대응하는 엔트리를 갱신할 수 있다. 예시적인 실시 예에서, I/O 정보는 처리된 커맨드에 대응하는 I/O 크기(즉, 입출력되는 데이터의 크기)를 가리킬 수 있다.
누적값 테이블(AVT)을 기반으로 물리 기능(PF) 또는 전송 큐(SQ)를 선택하는 방법 및 누적값 테이블(AVT)을 갱신하는 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100)는 복수의 물리 기능들(PF) 또는 복수의 전송 큐들(SQ) 각각에 대한 누적값을 누적값 테이블(AVT)로서 관리할 수 있다. 스토리지 장치(100)는 누적값 테이블(AVT)을 기반으로 가장 작은 누적값에 대응하는 물리 기능(PF) 또는 전송 큐(SQ)를 선택하고, 선택된 결과를 기반으로 커맨드를 처리하거나 또는 스케줄링할 수 있다. 따라서, 상대적으로 적은 비율(이 때, 비율은 복수의 호스트들 각각의 최저 성능에 대한 정보가 반영된 비율임)로 서비스된 호스트에 대한 커맨드가 우선적으로 처리되기 때문에, 복수의 호스트들 각각에 대해 균일한 성능이 제공되거나 또는 복수의 호스트들 각각에 대한 최저 성능이 보장될 수 있다. 또한, 특정 상황에서, 특정 호스트가 스토리지 장치(100)의 물리적 리소스를 모두 또는 대부분 점유하는 문제점이 방지될 수 있다.
도 5는 도 2의 누적값 테이블을 예시적으로 보여주는 도면이다. 도면의 간결성 및 설명의 편의를 위하여, 누적값 테이블(AVT)의 데이터 구조가 개략적으로 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 도 1, 도 2, 도 3a, 및 도 5를 참조하면, 누적값 테이블(AVTa)은 물리 기능(PF)에 대한 식별자 정보, 전송 큐(SQ)에 대한 식별자 정보, 전송 큐(SQ) 각각에 대한 누적값 정보, 및 복수의 가중치 정보들(예를 들어, 쓰기 가중치, 읽기 가중치, 추가 가중치 등)을 포함할 수 있다.
즉, 스토리지 장치(100)가 제1 내지 제3 호스트들(11~13)과 통신하고, 제1 내지 제3 호스트들(11~13) 각각이 2개의 전송 큐들(SQ11/SQ12, SQ21/SQ22, SQ31/SQ32)을 관리하는 경우, 누적값 테이블(AVTa)은 제1 호스트(11)와 대응되는 제1 물리 기능(PF1)에 대한 정보, 제1 물리 기능(PF1)에 대응하는 2개의 전송 큐들(SQ11, SQ12)에 대한 정보, 2개의 전송 큐들(SQ11, SQ12) 각각에 대한 누적값 정보(AV_SQ11, AV_SQ12), 및 제1 물리 기능(PF1)에 대응하는 가중치 정보(WV_w1, WV_r1, WV_o1)를 포함할 수 있다. 누적값 테이블(AVTa)은 제2 및 제3 물리 기능들(PF2, PF3) 및 제2 및 제3 물리 기능들(PF2, PF3) 각각에 대응하는 정보(SQ21 / SQ22 / AV_SQ21 / AV_SQ22 / WV_w2 / WV_r2 / WV_o2, SQ31 / SQ32 / AV_SQ31 / AV_SQ32 / WV_w3 / WV_r3 / WV_o3)을 더 포함할 수 있고, 이는 앞서 설명된 바와 유사하므로 이에 대한 상세한 설명은 생략된다.
도 6은 도 4의 순서도의 S30 단계 및 S40 단계의 동작을 좀 더 상세하게 보여주는 순서도이다. 도 6의 순서도에 따른 스토리지 장치(100)의 동작 방법은 도 5를 참조하여 설명된 누적값 테이블(AVTa)를 사용하여 수행될 수 있다.
도 1, 도 2, 도 3a, 및 도 5를 참조하면, 도 4의 S30 단계의 동작은 도 6의 S131 단계 내지 S133 단계의 동작들을 포함할 수 있다.
S131 단계에서, 스토리리지 장치(100)는 누적값 테이블(AVT)을 기반으로, 복수의 전송 큐들(SQ) 중 가장 작은 누적값에 대응하는 전송 큐를 선택할 수 있다. 예를 들어, 도 5를 참조하여 설명된 바와 같이, 누적값 테이블(AVTa)은 복수의 전송 큐들(SQ11~SQ32) 각각에 대한 전송 큐 누적값들(AV_SQ11~AV_SQ32)을 포함할 수 있다. 성능 관리자(111)는 복수의 전송 큐 누적값들(AV_SQ11~AV_SQ32) 중 가장 작은 전송 큐 누적값을 검색하고, 가장 작은 값에 대응하는 전송 큐를 선택할 수 있다. 예시적인 실시 예에서, 전송 큐 누적값이 가장 작다는 것은, 대응하는 전송 큐에 대하여 서비스된 비율(이 때, 비율은 대응하는 호스트의 최저 성능에 대한 정보가 반영된 비율임)이 상대적으로 가장 작음을 의미한다. 즉, 가장 작은 전송 큐 누적값에 대응하는 전송 큐가 선택됨으로써, 상대적으로 작은 비율로 서비스된 전송 큐의 커맨드가 우선적으로 처리될 수 있다.
S132 단계에서, 스토리지 장치(100)는 선택된 전송 큐로부터 커맨드를 페치할 수 있다. 예를 들어, 성능 관리자(111)(특히, 커맨드 스케줄러(111a))는 S131 단계를 통해 선택된 전송 큐(SQ)에 포함된 커맨드가 페치되도록 스케줄링 동작을 수행할 수 있다.
S133 단계에서, 스토리지 장치(100)는 페치된 커맨드를 처리할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 페치된 커맨드에 대응하는 동작을 불휘발성 메모리 장치(120)에서 수행할 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(110)는 페치된 커맨드의 전송 큐에 대응하는 불휘발성 메모리 장치(120)의 명칭 공간 또는 불휘발성 메모리 셋(NVM set) 또는 페치된 커맨드와 관련된 물리 기능에 의해 관리되는 명칭 공간 또는 NVM set에서, 대응하는 동작을 수행할 수 있다. 예시적인 실시 예에서, S133 단계의 동작은 스토리지 컨트롤러(110)의 프로세서(112) 또는 불휘발성 메모리 인터페이스 회로(115)에 의해 수행될 수 있다.
도 4의 S40 단계는 도 6의 S141 단계의 동작을 포함할 수 있다.
S141 단계에서, 스토리지 장치(100)는 페치된 커맨드에 대응하는 가중치 및 페치된 커맨드에 대응하는 I/O 정보를 기반으로 누적값 테이블(AVT)에서 전송 큐 누적값(AV_SQ)을 갱신할 수 있다. 예를 들어, 성능 관리자(111)(특히, 누적값 테이블 관리자(111b))는 페치된 커맨드에 대응하는 가중치 및 페치된 커맨드에 대응하는 I/O 정보의 곱을 기반으로 누적값 테이블(AVT)에서 전송 큐 누적값(AV_SQ)을 갱신할 수 있다.
도 7a 내지 도 7c는 도 5 및 도 6의 순서도에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 본 발명에 따른 스토리지 장치(100)의 동작(특히, 커맨드 스케줄링 및 누적값 관리 동작)을 설명하는데 불필요한 구성 요소들은 생략된다.
또한, 설명의 편의를 위하여, 스토리지 장치(100)는 3개의 호스트들과 통신하고, 3개의 호스트들 각각은 2개의 전송 큐들을 관리하고, 3개의 호스트들은 각각 제1 내지 제3 물리 기능들(PF1~PF3)과 대응되는 것으로 가정한다. 즉, 제1 내지 제3 물리 기능들(PF1~PF3)은 각각 전송 큐들(SQ11/SQ12, SQ21/SQ22, SQ31/SQ32)와 대응될 수 있다.
또한, 설명의 편의를 위하여, 각 전송 큐에 큐잉된 커맨드들은 모두 쓰기 커맨드이며, 이에 응답하여, 스토리지 장치(100)는 쓰기 동작을 수행하는 것으로 가정한다. 또한, 3개의 호스트들 각각의 최저 성능의 비율은 2:3:6인 것으로 가정하며, 이 경우, 제1 내지 제3 물리 기능들(PF1~PF3)에 대응하는 쓰기 가중치들은 각각 3, 2, 1일 수 있다. 상술된 내용들 및 수치들은 본 발명의 기술적 사상을 용이하게 설명하기 위한 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1, 도 2, 및 도 7a 내지 도 7c를 참조하면, 도 7a에 도시된 바와 같이, ① 동작에서, 성능 관리자(111)의 커맨드 스케줄러(111a)는 누적값 테이블(AVTa)을 기반으로, 복수의 전송 큐들(SQ11~SQ32) 중 하나를 선택할 수 있다. 예를 들어, 커맨드 스케줄러(111a)는 누적값 테이블(AVTa)의 전송 큐 누적값들(AV_SQ11~AV_SQ32) 중 가장 작은 전송 큐 누적값을 검색하고, 가장 작은 전송 큐 누적값을 갖는 전송 큐를 선택할 수 있다. 도 7a의 실시 예에서는, 제2 물리 기능(PF2)에 대응하는 SQ22의 전송 큐가 선택될 수 있다.
이후에, ② 동작에서, 커맨드 스케줄러(111a)는 선택된 전송 큐(SQ22)로부터 커맨드(CMD22)를 페치할 수 있다. 예시적인 실시 예에서, 페치된 커맨드(CMD22)의 I/O 정보(예를 들어, 쓰기 데이터의 크기)는 "3"인 것으로 가정한다. 이후에, ③ 동작에서, 커맨드 스케줄러(111a)는 페치된 커맨드를 처리할 수 있다. 예시적인 실시 예에서, 페치된 커맨드는 스토리지 컨트롤러(110)의 다른 구성 요소들(예를 들어, 프로세서(112)에 의해 구동되는 FTL, 불휘발성 메모리 인터페이스 회로(115), 또는 다른 다양한 구성 요소들)에 의해 처리될 수 있다. 예시적인 실시 예에서, 페치된 커맨드에 대한 동작은 불휘발성 메모리 장치(120)의 영역들(예를 들어, 명칭 공간 또는 NVM set 등) 중 페치된 커맨드 또는 선택된 전송 큐 또는 선택된 전송 큐와 대응되는 물리 기능과 관련된 영역에서 처리될 수 있다.
이후에, 도 7b에 도시된 바와 같이, ④ 동작에서, 누적값 테이블 관리자(111b)는 I/O 정보 및 가중치를 기반으로 누적값 테이블(AVTa)을 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 페치된 커맨드(CMD22)의 I/O 정보는 "3"일 수 있고, 선택된 전송 큐(SQ22)와 관련된 제2 물리 기능(PF2)에 대한 쓰기 가중치(WW2)는 "2"일 수 있다. 이 경우, 누적값 테이블 관리자(111b)는 처리된 I/O 정보(즉, "3") 및 대응하는 가중치(WW2)(즉, "2")의 곱을 대응하는 전송 큐 누적값(AV_SQ22)(즉, "1")에 누적시킴으로써, 누적값 테이블(AVTa)을 갱신할 있다. 함(즉, AV_SQ22는 "1+(3*2)=7"로 갱신될 수 있다.
즉, 누적값 테이블(AVTa)에 대한 갱신 동작은 현재 전송 큐 누적값에 처리된 I/O 정보(또는 I/O 크기) 및 대응하는 가중치의 곱을 누적시킴으로써 갱신될 수 있다. 상술된 갱신 동작에 의해, 전송 큐에 대한 커맨드가 처리되거나 또는 전송 큐에 대한 서비스가 제공될 때마다, 대응하는 전송 큐 누적값의 크기가 커질 수 있다.
이후에, ⑤ 동작에서, 커맨드 스케줄러(111a)는 갱신된 누적값 테이블(AVTa)에서 가장 작은 전송 큐 누적값을 갖는 전송 큐를 선택할 수 있다. 도 7b의 실시 예에서, 제1 물리 기능(PF1)에 대응하는 SQ12의 전송 큐가 선택될 것이다. 이후에, ⑥ 동작에서, 커맨드 스케줄러(111a)는 선택된 전송 큐(즉, SQ12)로부터 커맨드(CMD12)를 페치할 수 있다. 예시적인 실시 예에서, 페치된 커맨드(CMD12)의 I/O 정보는 "2"인 것으로 가정한다. 이후에, ⑦ 동작에서, 커맨드 스케줄러(111a)는 페치된 커맨드(CMD12)를 처리할 수 있다. 도 7b의 ⑤ 동작, ⑥ 동작, 및 ⑦ 동작은 선택되 전송 큐 및 페치된 커맨드가 다르다는 점을 제외하면, 도 7a를 참조하여 설명된 ① 동작, ② 동작, 및 ③ 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
이후에, 도 7c에 도시된 바와 같이, ⑧ 동작에서, 누적값 테이블 관리자(111b)는 처리된 I/O 정보 및 가중치를 기반으로, 누적값 테이블(AVTa)을 다시 갱신할 수 있다. 예를 들어, 도 7b를 참조하여 설명된 ④ 동작과 유사하게, 누적값 테이블 관리자(111b)는 선택된 전송 큐(SQ12)의 전송 큐 누적값(AV_SQ12)은 처리된 I/O 정보(즉, "2")에 대응하는 가중치(WW1)(즉, 3")의 곱을 현재 누적값(즉, "2")에 누적시킴으로써 갱신될 수 있다. 즉, AV_SQ12는 "2+(2*3)=8"로 갱신될 수 있다.
예시적인 실시 예에서, 상술된 바와 같이, 스토리지 장치(100)는 누적값 테이블(AVTa)에 기반된 전송 큐 선택, 선택된 전송 큐로부터의 커맨드 페치/처리, 및, 처리된 커맨드의 I/O 정보 및 대응하는 가중치에 기반된 누적값 테이블 갱신을 반복 수행함으로써, 복수의 호스트들 각각에 대한 서비스를 제공하거나 또는 복수의 호스트들 각각에 대한 커맨드를 처리할 수 있다.
예시적인 실시 예에서, 상술된 바와 같이, 스토리지 장치(100)는 누적값 테이블을 기반으로 커맨드 스케줄링을 수행하기 때문에, 상대적으로 적은 비율로 서비스된 전송 큐가 다른 전송 큐들보다 우선적으로 수행될 수 있다. 따라서, 스토리지 장치(100)는 복수의 호스트들 각각에 대하여 균일한 성능을 제공하거나 또는 복수의 호스트들 각각에 대한 최저 성능을 보장할 수 있다.
도 8은 도 2의 누적값 테이블을 예시적으로 보여주는 도면이다. 도면의 간결성 및 설명의 편의를 위하여, 누적값 테이블(AVT)의 데이터 구조가 개략적으로 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 또한, 설명의 편의를 위하여, 도 5를 참조하여 설명된 누적값 테이블(AVTa)과의 차이점이 중점적으로 설명된다.
도 3a 및 도 8을 참조하면, 누적값 테이블(AVTb)은 물리 기능(PF)에 대한 식별자 정보, 물리 기능에 대한 누적값 정보, 전송 큐(SQ)에 대한 식별자 정보, 전송 큐(SQ) 각각에 대한 누적값 정보, 및 복수의 가중치 정보들(예를 들어, 쓰기 가중치, 읽기 가중치, 추가 가중치 등)을 포함할 수 있다.
즉, 도 8의 누적값 테이블(AVTb)와 비교하여, 제1 내지 제3 물리 기능들(PF1~PF3) 각각에 대한 물리 기능 누적값들(AV_PF1, AV_PF2, AV_PF3)을 더 포함할 수 있다. 물리 기능 누적값들(AV_PF1, AV_PF2, AV_PF3)은 전송 큐 누적값들(AV_SQ11~AV_SQ32)와 유사한 방식으로 관리 또는 갱신될 수 있다.
예를 들어, 제1 물리 기능에 대한 물리 기능 누적값(AV_PF1)은 제1 물리 기능(PF1)에 대응하는 전송 큐들(SQ11, SQ12)로부터의 커맨드가 처리된 경우, 처리된 커맨드의 I/O 정보 및 대응하는 가중치의 곱을 누적함으로써, 관리 및 갱신될 수 있다. 이는, 앞서 설명된 전송 큐 누적값 갱신 방법과 유사하므로, 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, 하나의 물리 기능 누적값(예를 들어, AV_PF1)은 대응하는 전송 큐 누적값들(예를 들어, AV_SQ11, AV_SQ12)의 합과 같을 수 있다. 또는, 하나의 물리 기능 누적값(예를 들어, AV_PF1)은 대응하는 전송 큐 누적값들(예를 들어, AV_SQ11, AV_SQ12)의 합과 다를 수 있다.
도 9는 도 4의 순서도의 S30 단계 및 S40 단계의 동작을 좀 더 상세하게 보여주는 순서도이다. 설명의 편의를 위하여, 이하에서, 스토리지 장치(100)는 제1 내지 제3 호스트들(11~13)과 통신하고, 제1 내지 제3 호스트들(11~13)은 각각 제1 내지 제3 물리 기능들(PF1~PF3)과 대응되고, 하나의 호스트는 2개의 전송 큐를 관리하는 것으로 가정한다. 이와 관련된 내용은 도 4를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 또한, 상술된 내용은 본 발명의 기술적 사상을 용이하게 설명하기 위한 단순 예시들이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1, 도 2, 도 3a, 도 8, 및 도 9를 참조하면, 도 4의 S30 단계는 도 9의 S231 단계 내지 S234 단계의 동작들을 포함할 수 있다.
S231 단계에서, 스토리지 장치(100)는 누적값 테이블(AVT)을 기반으로 제1 내지 제3 물리 기능들(PF1~PF3) 중 가장 작은 물리 기능 누적값(AV_PF)을 갖는 물리 기능을 선택할 수 있다. 예를 들어, 성능 관리자(111)(특히, 커맨드 스케줄러(111a))는 도 8에 도시된 바와 같은 누적값 테이블(AVTa)의 물리 기능 누적값들(AV_PF1~AV_PF3) 중 가장 작은 물리 기능 누적값을 갖는 물리 기능을 선택할 수 있다.
S232 단계에서, 스토리지 장치(100)는 누적값 테이블(AVT)을 기반으로, 선택된 물리 기능의 전송 큐들 중 가장 작은 전송 큐 누적값을 갖는 전송 큐를 선택할 수 있다. 예를 들어, 성능 관리자(111)(특히 커맨드 스케줄러(111a))는 도 8에 도시된 바와 같은 누적값 테이블(AVTa)을 기반으로, 선택된 물리 기능의 전송 큐들 중 가장 작은 전송 큐 누적값을 갖는 전송 큐를 선택할 수 있다. 좀 더 상세한 예로서, S231 단계의 동작을 통해 선택된 물리 기능이 제2 물리 기능(PF2)인 것으로 가정한다. 이 경우, S232 단계에서, 성능 관리자(111)는 제2 물리 기능(PF2)에 대응하는 전송 큐들(SQ21, SQ2)의 전송 큐 누적값들(AV_SQ21, AV_SQ22) 중 가장 작은 값을 갖는 전송 큐를 선택할 수 있다.
이후에, 스토리지 장치(100)는 S233 단계 및 S234 단계의 동작들을 수행할 수 있으며, S233 단계 및 S234 단계의 동작들은 도 6의 S122 단계 및 S123 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 4의 S40 단계의 동작은 도 9의 S241 단계의 동작을 포함할 수 있다.
S241 단계에서, 스토리지 장치(100)는 페치된 커맨드(또는 처리된 커맨드)에 대응하는 I/O 정보 및 대응하는 가중치를 기반으로, 누적값 테이블(AVTb)의 전송 큐 누적값(AV_SQ) 및 물리 기능 누적값(AV_PF)을 갱신할 수 있다. 예를 들어, 성능 관리자(111)(특히, 누적값 테이블 관리자(111b))는 처리된 커맨드에 대응하는 I/O 정보 및 대응하는 가중치의 곱을 전송 큐 누적값(AV_SQ) 및 물리 기능 누적값(AV_PF) 각각에 누적시킴으로써, 누적값 테이블(AVTb)을 갱신할 수 있다.
도 10a 내지 도 10c는 도 9의 순서도에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 본 발명에 따른 스토리지 장치(100)의 동작(특히, 커맨드 스케줄링 및 누적값 관리 동작)을 설명하는데 불필요한 구성 요소들은 생략된다.
도 10a 내지 도 10c의 물리 기능들(PF1~PF3), 전송 큐들 SQ11/SQ12, SQ21/SQ22, SQ31/SQ32), 및 가중치들(WW1~WW3)은 도 7a 내지 도 7c를 참조하여 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 1, 도 2, 및 도 10a 내지 도 10c를 참조하면, 도 10a에 도시된 바와 같이, ① 동작에서, 커맨드 스케줄러(111a)는 누적값 테이블(AVTb)을 기반으로 물리 기능 누적값들(AV_PF1~AV_PF3) 중 가장 작은 값을 갖는 물리 기능을 선택할 수 있다. 예를 들어, 도 10a에 도시된 실시 예에서, 제1 물리 기능 누적값(AV_PF1)이 "8"로서 가장 작으므로, 제1 물리 기능(PF1)이 선택될 수 있다.
② 동작에서, 커맨드 스케줄러(111a)는 선택된 물리 기능(예를 들어, PF2)의 전송 큐들(예를 들어, SQ11, SQ12) 중 가장 작은 전송 큐 누적값을 갖는 전송 큐를 선택할 수 있다. 도 10a의 실시 예에서, SQ11 및 SQ12 중 SQ12의 전송 큐 누적값(AV_SQ12)이 "2"로서 가장 작으므로, 커맨드 스케줄러(111a)는 SQ12를 선택할 수 있다. 즉, ① 동작 및 ② 동작을 통해, 커맨드 스케줄러(111a)는 제1 물리 기능(PF1)의 전송 큐(SQ12)를 선택할 수 있다. 이는 제1 물리 기능(PF1)에 대응하는 제1 호스트(11)에 대하여 상대적으로 작은 빈도로 커맨드들이 처리되고, 제1 호스트(11)에 대한 전송 큐들 중 SQ12에 대하여 상대적으로 작은 빈도로 커맨드들이 처리되었음을 의미할 수 있다.
이후에, 커맨드 스케줄러(111a)는 ③ 동작 및 ④ 동작을 수행할 수 있다. 도 10a의 ③ 동작 및 ④ 동작은 선택된 전송 큐가 다르다는 점을 제외하면, 앞서 설명된 커맨드 페치 동작(도 7a의 ② 동작) 및 커맨드 처리 동작(도 7a의 ③ 동작)과 유사할 수 있으며, 이에 대한 상세한 설명은 생략된다.
다음으로, 도 10b에 도시된 바와 같이, ⑤ 동작에서, 누적값 테이블 관리자(111b)는 처리된 커맨드(CMD12)의 I/O 정보(예를 들어, 쓰기 데이터의 크기)(예를 들어, "2") 및 대응하는 가중치(WW1)("3")를 기반으로 누적값 테이블(AVTb)을 갱신할 수 있다. 예를 들어, 누적값 테이블 관리자(111b)는 처리된 커맨드(CMD12)의 I/O 정보(예를 들어, 쓰기 데이터의 크기)(예를 들어, "2") 및 대응하는 가중치(WW1)("3")의 곱(즉, "2*3")을 선택된 전송 큐(SQ12)의 전송 큐 누적값(AV_SQ12) 및 선택된 물리 기능(PF1)의 물리 기능 누적값(AV_PF1) 각각에 누적시킬 수 있다. 이 경우, AV_PF1은 "8+(2*3)=14"로 갱신되고, AV_SQ12는 "2+(2*3)=8"로 갱신될 수 있다.
이후에, ⑥ 동작에서, 커맨드 스케줄러(111a)는 갱신된 누적값 테이블(AVTb)을 기반으로, 가장 작은 물리 누적값(AV_PF)을 갖는 물리 기능을 선택할 수 있다. 도 10b의 실시 예에서, ⑤ 동작을 통해 갱신된 누적값 테이블(AVTb)에서, 제3 물리 기능 누적값(AV_PF3)이 "11"로 가장 작기 때문에, 커맨드 스케줄러(111a)는 제3 물리 기능 누적값(AV_PF3)에 대응하는 제3 물리 기능(PF3)을 선택할 수 있다.
이후에, ⑦ 동작에서, 커맨드 스케줄러(111a)는 선택된 제3 물리 기능(PF3)의 전송 큐들(SQ31, SQ32) 중 가장 작은 전송 큐 누적값을 갖는 전송 큐를 선택할 수 있다. 도 10b의 실시 예에서, 제3 물리 기능(PF3)의 전송 큐들(SQ31, SQ32) 중 SQ32의 전송 큐 누적값(AV_SQ32)이 "4"로 가장 작기 때문에, SQ32의 전송 큐가 선택될 수 있다.
이후에, 커맨드 스케줄러(111a)는 ⑧ 동작 및 ⑨ 동작을 수행할 수 있다. 도 10b의 ⑧ 동작 및 ⑨ 동작은 선택된 전송 큐가 다르다는 점을 제외하면, 앞서 설명된 커맨드 페치 동작(도 7a의 ② 동작) 및 커맨드 처리 동작(도 7a의 ③ 동작)과 유사할 수 있으며, 이에 대한 상세한 설명은 생략된다.
이후에, 도 10c에 도시된 바와 같이, ⑩ 동작에서, 누적값 테이블 관리자(111b)는 처리된 커맨드(CMD32)에 대응하는 I/O 정보(예를 들어, 쓰기 데이터의 크기)("5") 및 대응하는 가중치(WW3)("1")를 기반으로 누적값 테이블(AVTb)을 갱신할 수 있다. 예를 들어, 도 10b의 ⑤ 동작과 유사하게, 누적값 테이블 관리자(111b)는 처리된 커맨드(CMD32)에 대응하는 I/O 정보(예를 들어, 쓰기 데이터의 크기)("5") 및 대응하는 가중치(WW3)("1")의 곱을 선택된 물리 기능(PF3)의 물리 기능 누적값(AV_PF3) 및 선택된 전송 큐(SQ32)의 전송 큐 누적값(AV_SQ32) 각각에 누적시킬 수 있다. 이 경우, AV_PF3은 "11+(5*1)=16"으로 갱신되고, AV_SQ32는 "4+(5*1)=9"로 갱신될 것이다.
비록 도면에 도시되지는 않았으나, 커맨드 스케줄러(111a) 및 누적값 테이블 관리자(111b)는 상술된 바와 유사하게 커맨드 스케줄링 및 누적값 테이블 갱신을 수행할 수 있다. 즉, 이후의 동작에서, 물리 기능 누적값(AV_PF)가 "12"인 제2 물리 기능(PF2)이 선택되고, 제2 물리 기능(PF2)의 전송 큐들(SQ21, SQ22) 중 전송 큐 누적값(AV_SQ)이 "1"인 SQ22가 선택될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100)는 물리 기능 단위 및 전송 큐 단위로, 처리된 커맨드의 I/O 정보 대응하는 누적값(예를 들어, 가중치가 반영된 I/O 정보)을 기반으로, 처리될 커맨드를 선택 또는 스케줄링할 수 있다. 따라서, 상대적으로 적은 빈도로 서비스된 물리 기능(또는 호스트) 및 전송 큐에 대한 커맨드가 우선적으로 처리되기 때문에, 복수의 호스트들 각각에 대한 균일한 성능 또는 최저 성능이 보장될 수 있다.
도 11은 도 4의 순서도의 S20 단계, S30 단계, 및 S40 단계의 동작을 상세하게 보여주는 순서도이다. 설명의 편의를 위하여, 이하에서, 스토리지 장치(100)는 제1 내지 제3 호스트들(11~13)과 통신하고, 제1 내지 제3 호스트들(11~13)은 각각 제1 내지 제3 물리 기능들(PF1~PF3)과 대응되고, 하나의 호스트는 2개의 전송 큐를 관리하는 것으로 가정한다. 이와 관련된 내용은 도 4를 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다. 또한, 상술된 내용은 본 발명의 기술적 사상을 용이하게 설명하기 위한 단순 예시들이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1, 도 2, 도 3a, 및 도 11을 참조하면, 도 4의 S20 단계는 도 11의 S321 단계 및 S322 단계의 동작들을 포함할 수 있다.
S321 단계에서, 스토리지 장치(100)는 특정 물리 기능에 대한 가비지 콜렉션이 수행되었는지 또는 요구되는지 판별할 수 있다. 예를 들어, 스토리지 장치(100)는 불휘발성 메모리 장치(120)의 물리적 제약으로 인한 별도의 유지 관리 동작(예를 들어, 가비지 콜렉션, 리드 리클레임 등)을 수행할 수 있다. 상술된 유지 관리 동작은 스토리리 장치(100) 내부에서 처리되는 동작일 수 있다.
상술된 유지 관리 동작의 실행 여부에 따라, 동일한 커맨드에 대한 내부 워크로드가 달라질 수 있다. 예를 들어, 제1 물리 기능(PF1)에 대응하는 가비지 콜렉션이 수행되지 않는 경우, 제1 쓰기 커맨드에 대한 워크로드가 "1"인 것으로 가정한다. 이 때, 제1 물리 기능(PF1)에 대응하는 가비지 콜력센이 수행되는 경우, 동일한 제1 쓰기 커맨드에 대한 워크로드는 "4"로 증가할 수 있다. 예시적인 실시 예에서, 가비지 콜렉션의 실행에 의해 증가되는 워크로드의 크기는 스토리지 장치의 WAF(write amplification factor)에 의해 결정될 수 있다. 즉, 스토리지 장치(100)의 유지 관리 동작의 실행은 복수의 호스트들로 서비스되는 성능에 영향을 줄 수 있다.
특정 물리 기능(PF)에 대하여 가비지 콜렉션(GC)과 같은 유지 관리 동작이 수행되는 경우, S322 단계에서, 스토리지 장치(100)는 특정 물리 기능(PF)에 대응하는 가중치 값들을 갱신할 수 있다. 예를 들어, 성능 관리자(111)(특히, 가중치 관리자(111c)는 유지 관리 동작이 수행되거나 또는 유지 관리 동작이 필요한 물리 기능에 대응하는 가중치 값을 갱신할 수 있다. 예시적인 실시 예에서, 유지 관리 동작이 수행되거나 또는 유지 관리 동작이 필요한 물리 기능에 대응하는 쓰기 가중치 값이 증가될 수 있다.
이후에, 스토리지 장치(100)는 S331 단계 내지 S334 단계의 동작들 및 S341 단계의 동작을 수행할 수 있으며, S331 단계 내지 S334 단계의 동작들 및 S341 단계의 동작은 도 9의 S231 단계 내지 S234 단계의 동작들 및 S241 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
도 12a 내지 도 12c는 도 11의 순서도에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 본 발명에 따른 스토리지 장치(100)의 동작(특히, 커맨드 스케줄링 및 누적값 관리 동작)을 설명하는데 불필요한 구성 요소들은 생략된다. 도 12a 내지 도 12c의 물리 기능들(PF1~PF3), 전송 큐들 SQ11/SQ12, SQ21/SQ22, SQ31/SQ32), 및 가중치들(WW1~WW3)은 도 7a 내지 도 7c를 참조하여 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다. 단, 설명의 편의를 위하여, 도 12a 내지 도 12c의 제1 내지 제3 물리 기능들(PF1~PF3)에 대응하는 제1 내지 제3 쓰기 가중치 값들(WW1~WW3)은 모두 "1"인 것으로 가정한다.
도 1, 도 2, 및 도 12a 내지 도 12c를 참조하면, 도 12a에 도시된 바와 같이, ① 동작에서, 가중치 관리자(111c)는 제1 물리 기능(PF1)에 대한 가비지 콜렉션(GC)이 수행되거나 또는 요구됨을 확인할 수 있다. 예를 들어, 스토리지 장치(100)는 내부 정책에 따라, 불휘발성 메모리 장치(120)의 영역들(예를 들어, 명칭 공간(namespace), NVM set, 또는 물리적 메모리 블록들) 중 제1 물리 기능(PF1)에 대응하는 영역에 대한 가비지 콜렉션(GC)을 수행하거나 또는 필요로 할 수 있다. 이 경우, 가중치 관리자(111c)는 제1 물리 기능(PF1)에 대한 가비지 콜렉션(GC)이 수행되거나 또는 요구됨을 인지할 수 있다.
② 동작에서, 가중치 관리자(111c)는 가비지 콜렉션(GC)이 수행되거나 또는 요구되는 제1 물리 기능(PF1)의 제1 쓰기 가중치(WW1)를 갱신할 수 있다. 예를 들어, 가중치 관리자(111c)는 제1 물리 기능(PF1)에 대응하는 제1 쓰기 가중치(WW1)를 "1"에서 "4"로 갱신할 수 있다. 예시적인 실시 예에서, 제1 쓰기 가중치(WW1)의 갱신 비율은 유지 관리 동작을 수행하는데 요구되는 WAF(write amplification factor)를 기반으로 결정될 수 있다.
이후에, 커맨드 스케줄러(111a)는 ③ 동작, ④ 동작, ⑤ 동작, 및 ⑥ 동작을 수행할 수 있다. 도 12a의 ③ 동작, ④ 동작, ⑤ 동작, 및 ⑥ 동작은 도 10a의 ① 내지 ④ 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
이후에, 도 12b에 도시된 바와 같이, ⑦ 동작에서, 누적값 관리자(111b)는 처리된 커맨드(CMD12)의 I/O 정보(예를 들어, 쓰기 데이터의 크기("2") 및 갱신된 가중치(WW1)(즉, "4")를 기반으로 누적값 테이블(AVTb)을 갱신할 수 있다. 예를 들어, 누적값 관리자(111b)는 처리된 커맨드(CMD12)의 I/O 정보(예를 들어, 쓰기 데이터의 크기("2") 및 갱신된 가중치(WW1)(즉, "4")의 곱을 물리 기능 누적값(AV_PF1) 및 전송 큐 누적값(AV_SQ12) 각각에 누적시킬 수 있다. 이 경우, AV_PF1은 " 8+(2*4)=14"로 갱신되고, AV_SQ12는 "2+(2*4)=10"으로 갱신될 수 있다.
예시적인 실시 예에서, 가비지 콜렉션이 고려되지 않고, 제1 물리 기능(PF1)에 대한 가중치(WW1)가 갱신되지 않는다면, 커맨드 스케줄러(111)는 다음 커맨드 처리에서 제1 물리 기능(PF1)의 SQ12의 전송 큐를 다시 선택할 것이다. 이 경우, 제1 물리 기능(PF1)은 가비지 콜렉션으로 인해 내부 워크로드가 증가한 상태이기 때문에, 다음 커맨드의 처리가 상대적으로 지연될 수 있다.
반면에, 상술된 바와 같이, 가비지 콜렉션이 고려되어, 제1 물리 기능(PF1)에 대한 가중치(WW1)가 갱신된 경우, 커맨드 스케줄러(111)는 다음 커맨드 처리에서, 제3 물리 기능(PF3)의 SQ32의 전송큐를 선택할 수 것이다. 이 경우, 제1 물리 기능(PF1)의 워크로드가 증가되더라도, 제3 물리 기능(PF3)에 대한 커맨드가 처리될 수 있기 때문에, 복수의 호스트들 각각에 대한 성능 편차가 감소되거나 또는 최저 성능이 보장될 수 있다.
예시적인 실시 예에서, 도 12c에 도시된 바와 같이, ⑧ 동작에서, 가중치 관리자(111c)는 제1 물리 기능(PF1)에 대한 가비지 콜렉션(GC)의 완료를 확인할 수 있다. 이 경우, ⑨ 동작에서, 가중치 관리자(111c)는 제1 물리 기능(PF1)에 대응하는 제1 쓰기 가중치(WW1)를 "4"에서 "1"로 재갱신 또는 복원할 수 있다. 즉, 이후의 스토리지 장치(100)의 동작에서, 재갱신된 제1 쓰기 가중치(WW1)를 기반으로 상술된 동작들이 수행될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100)는 복수의 호스트들 각각에 대하여 서비스되는 외부 워크로드 뿐만 아니라, 유지 관리 동작 등으로 인해 발생하는 내부 워크로드를 고려함으로써, 복수의 호스트들 각각에 대해 균일한 성능을 제공하거나 또는 최저 성능을 보장할 수 있다. 이러한 스토리지 장치(100)의 커맨드 스케줄링 또는 중재 동작은 WFQ(weighted fair queueing) 중재(arbitration)이라 불릴 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 스토리지 장치(100)는 복수의 호스트들에 대한 성능 정보(예를 들어, 최저 성능에 대한 정보)를 기반으로 복수의 호스트들, 복수의 물리 기능들, 또는 복수의 전송 큐들에 대한 가중치를 설정하고, 설정된 가중치 및 처리된 I/O 정보를 기반으로 복수의 호스트들, 복수의 물리 기능들, 또는 복수의 전송 큐들 각각에 대한 누적값을 관리할 수 있다. 스토리지 장치(100)는 관리되는 누적값을 기반으로 복수의 호스트들로부터의 커맨드들에 대한 커맨드 스케줄링을 수행할 수 있다. 따라서, 상대적으로 적은 빈도로 서비스된 호스트로부터의 커맨드들이 우선 처리될 수 있다. 이 경우, 복수의 호스트들 각각에 대한 성능이 균일해지거나 또는 복수의 호스트들 각각에 대한 최저 성능이 보장될 수 있다.
예시적인 실시 예에서, 본 발명의 실시 예에 따른 스토리지 장치(100)는 복수의 호스트들 중 적어도 하나 또는 다른 외부 컴퓨팅 노드로부터 명령 또는 제어에 응답하여, 도 1 내지 도 12c를 참조하여 설명된 커맨드 스케줄링을 수행할 수 있다. 즉, 스토리지 장치(100)는 복수의 호스트들의 제어에 따라 커맨드 스케줄링 모드를 변경할 수 있다.
도 13은 본 발명의 실시 예에 따른 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다. 도 14는 도 13의 토큰 관리 테이블을 예시적으로 보여주는 도면이다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 예시적인 실시 예에서, 도 13의 스토리지 컨트롤러(210)는 도 1의 호스트들(11~1n) 및 불휘발성 메모리 장치(120)와 통신하도록 구성될 수 있다.
도 13 및 도 14를 참조하면, 스토리지 컨트롤러(210)는 성능 관리자(211), 프로세서(212), SRAM(213), 호스트 인터페이스 회로(214), 및 불휘발성 메모리 인터페이스 회로(215)를 포함할 수 있다. 프로세서(212), SRAM(213), 호스트 인터페이스 회로(214), 및 불휘발성 메모리 인터페이스 회로(215)는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, 도 1 내지 도 12c를 참조하여 설명된 실시 예에서, 성능 관리자(111)는 복수의 호스트들(11~1n) 각각에 대하여, 최저 성능을 보장하도록 동작할 수 있다. 반면에, 도 13의 성능 관리자(211)는 복수의 호스트들(11~1n) 각각에 대하여, 최고 성능을 제한하도록 구성될 수 있다. 다시 말해서, 도 13의 성능 관리자(211)는 복수의 호스트들(11~1n) 각각에 대한 성능이 미리 정해진 최대 성능을 초과하지 않도록 커맨드를 처리할 수 있다.
예를 들어, 성능 관리자(211)는 커맨드 스케줄러(211a), 컴플리션 관리자(211d), 및 타이머(211e)를 포함할 수 있다. 커맨드 스케줄러(211a)는 복수의 호스트(11~1n)로부터의 커맨드를 스케줄링하도록 구성될 수 있다. 예시적인 실시 예에서, 커맨드 스케줄러(211a)는 도 1 내지 도 12c를 참조하여 설명된 스케줄링 방법(즉, PF 또는 SQ에 대한 누적 값에 기반된 스케줄링 방법 또는 WFQ 스케줄링 방법)을 기반으로 커맨드들을 스케줄링하도록 구성될 수 있다. 커맨드 스케줄러(211a)의 구성 및 동작은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
컴플리션 관리자(211d)는 페치된 커맨드에 대한 동작에 대한 완료를 가리키는 입출력 컴플리션(I/O Completion)을 관리하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 특정 커맨드에 대한 동작을 완료한 이후에, 특정 커맨드에 대응하는 입출력 컴플리션을 대응하는 호스트로 전송할 수 있다. 이 때, 입출력 컴플리션이 대응하는 호스트로 전송되는 타이밍은 컴플리션 관리자(211d)에 의해 관리될 수 있다. 컴플리션 관리자(211d)는, 특정 커맨드에 대한 동작이 완료된 경우, 토큰 관리 테이블(TMT)을 기반으로, 입출력 컴플리션을 대응하는 호스트로 선택적으로 전송할 수 있다.
좀 더 상세한 예로서, 토큰 관리 테이블(TMT)은 도 14에 도시된 바와 같이, 복수의 물리 기능들(PF1, PF2, PF3) 각각에 대한 토큰 단위(token unit)에 대한 정보(TKU1, TKU2, TKU3), 기준 시간(time) 정보(T1, T2, T3), 및 토큰 개수(# of token)에 대한 정보(a, b, c)를 포함할 수 있다. 이 때, 제1 물리 기능(PF1)에 대한 최대 성능이 1000MB/s이고, 제1 물리 기능(PF1)에 대응하는 제1 토큰 단위(TKU1)는 4KB이고, 기준 시간(T1)은 1ms인 것으로 가정한다. 이 경우, 제1 물리 기능(PF1)에 대응하는 토큰의 제1 개수(a)는 "250"개로 설정될 수 있다. 예시적인 실시 예에서, 토큰 단위는 대응하는 물리 기능에서 지원되는 최소 입출력 단위 또는 최소 입출력 단위의 배수를 가리킬 수 있다.
제1 물리 기능(PF1)에 대한 커맨드가 완료된 경우, 컴플리션 관리자(211d)는 토큰 관리 테이블(TMT)에서, 완료된 커맨드에 대응하는 물리 기능의 토큰이 남아 있는지 판별할 수 있다. 남은 토큰이 존재하는 경우, 컴플리션 관리자(211d)는 제1 물리 기능(PF1)과 대응되는 호스트(예를 들어, 11)로 입출력 컴플리션을 전송하고, 전송된 입출력 컴플리션의 크기(예를 들어, 입출력 크기)에 대응하는 토큰 개수를 토큰 관리 테이블(TMT)의 토큰 개수에서 차감할 수 있다. 다시 말해서, 제1 물리 기능(PF1)에 대하여 완료된 커맨드의 입출력 크기가 4KB인 경우, 컴플리션 관리자(211d)는 토큰 관리 테이블(TMT)에서, 제1 물리 기능(PF1)에 대한 토큰 개수를 1개 차감할 수 있다.
남은 토큰이 존재하는 경우 또는 남은 토큰의 개수가 입출력 컴플리션의 크기에 대응하는 개수보다 작은 경우, 컴플리션 관리자(211d)는 입출력 컴플리션을 대응하는 호스트로 전송하지 않을 수 있다. 예를 들어, 토큰 관리 테이블(TMT)에 제1 물리 기능(PF1)에 대하여 남은 토큰이 존재하지 않는 것은 제1 물리 기능(PF1)에 대한 성능이 최대 성능에 도달하거나 또는 근접하였음을 의미할 수 있다. 즉, 남은 토큰이 존재하는 경우 또는 남은 토큰의 개수가 입출력 컴플리션의 크기에 대응하는 개수보다 작은 경우, 컴플리션 관리자(211d)가 입출력 컴플리션을 호스트로 전송하지 않음으로써 제1 물리 기능(PF1)의 성능이 최대 성능을 초과하는 것을 방지할 수 있다. 다시 말해서, 컴플리션 관리자(211d)가 토큰 관리 테이블(TMT)을 기반으로 입출력 컴플리션의 전송 타이밍을 제어함으로써, 복수의 호스트들 각각에 대한 성능을 미리 정해진 최대 성능으로 제한시킬 수 있다.
상술된 바와 마찬가지로, 다른 물리 기능들(PF2, PF3)에 대한 토큰 개수들(b, c)은 물리 기능들(PF2, PF3)의 최대 성능들, 토큰 단위들(TKU2, TKU3), 및 기준 시간들(T2, T3)에 의해 결정될 수 있으며, 컴플리션 관리자(211d)는 토큰 관리 테이블(TMT)을 기반으로 다른 물리 기능들(PF2, PF3) 각각에 대한 최대 성능을 제한할 수 있다.
예시적인 실시 예에서, 입출력 컴플리션을 전송하지 않는 것은 대응하는 호스트로 인터럽트를 전송하지 않는 것을 의미할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 입출력 컴플리션을 대응하는 완료 큐에 기입고, 인터럽트를 대응하는 호스트로 전송할 수 있다. 이 때, 인터럽트는 입출력 컴플리션이 대응하는 완료 큐에 기입되었음을 알리는 신호일 수 있다. 대응하는 호스트는 인터럽트에 응답하여, 완료 큐에 입출력 컴플리션이 기입되었음을 인지하고, 대응하는 동작을 수행할 수 있다. 즉, 스토리지 컨트롤러(210)가 대응하는 호스트로 인터럽트를 전송하지 않는 경우, 호스트는 입출력 컴플리션에 대한 동작을 처리할 수 없을 것이다. 따라서, 스토리지 컨트롤러(210)가 대응하는 호스트로 인터럽트를 전송하지 않음으로써, 대응하는 호스트의 성능이 제한될 수 있다. 다시 말해서, 스토리지 컨트롤러(210)는 대응하는 호스트로 인터럽트를 전송하는 시점을 조절함으로써, 입출력 컴플리션을 전송하는 시점을 제어할 수 있다.
예시적인 실시 예에서, 입출력 컴플리션을 전송하지 않는 것은 대응하는 완료 큐에 입출력 컴플리션을 기입하지 않는 것을 의미할 수 있다. 즉, 스토리지 컨트롤러(210)는 입출력 컴플리션을 대응하는 완료 큐에 기입하는 시점을 제어함으로써, 입출력 컴플리션을 전송하는 시점을 제어할 수 있다.
타이머(211e)는 미리 정해진 시간을 카운팅하도록 구성될 수 있다. 예를 들어, 타이머(211e)는 시스템 클럭 또는 동작 클럭을 카운팅하여, 특정 시점으로부터 경과된 시간 또는 미리 정해진 시간 구간을 카운팅하도록 구성될 수 있다. 예시적인 실시 예에서, 타이머(211e)는 복수의 물리 기능들 각각에 대한 기준 시간(예를 들어, 토큰 관리 테이블(TMT)에 포함된 기준 시간 정보(T1, T2, T3 등))을 카운팅하도록 구성될 수 있다.
예시적인 실시 예에서, 특정 물리 기능(예를 들어, PF1)에 대한 타이머(211e)가 만료된 경우(다시 말해서, 특정 시점으로부터 제1 물리 기능(PF1)에 대한 제1 기준 시간(T1)이 경과한 경우), 컴플리션 관리자(211d)는 토큰 관리 테이블(TMT)에 포함된 제1 물리 기능(PF1)의 토큰 개수(a)를 리필할 수 있다.
상술된 바와 같이, 성능 관리자(211)는 토큰 관리 테이블(TMT)을 기반으로 특정 커맨드에 대한 입출력 컴플리션을 대응하는 호스트로 선택적으로 전송할 수 있다. 이러한 입출력 컴플리션의 전송 타이밍이 조절됨으로써, 대응하는 호스트에 대한 성능이 제한(예를 들어, 최대 성능 이하로 제한)될 수 있다.
도 15는 도 13의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다. 도 15를 참조하여, 스토리지 컨트롤러(210)의 최대 성능 제한 동작이 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 스토리지 컨트롤러(210)는 도 1 내지 도 12c를 참조하여 설명된 바와 같이, 복수의 물리 기능들(PF) 또는 복수의 전송 큐들(SQ) 각각에 대한 누적 값을 기반으로 커맨드를 스케줄링(즉, 복수의 호스트들 각각에 대한 최저 성능을 보장하는 동작 또는 WFQ 스케줄링 방법)을 수행할 수 있다.
도 13 내지 도 15를 참조하면, S410 단계에서, 스토리지 컨트롤러(210)는 커맨드(CMD)를 완료할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 도 1 내지 도 12c를 참조하여 설명된 방법을 기반으로 특정 물리 기능 또는 특정 전송 큐로부터 커맨드를 페치하고, 페치된 커맨드를 처리할 수 있다.
S420 단계에서, 스토리지 컨트롤러(210)는 토큰 관리 테이블(TMT)을 기반으로, 처리된 커맨드에 대응하는 물리 기능(PF)에 대한 남은 토큰의 개수가 "0"보다 큰지 판별할 수 있다. 예시적인 실시 예에서, "0"의 기준 값은 처리된 커맨드의 입출력 크기에 대응하는 개수로 치환될 수 있다.
남은 토큰의 개수가 "0"보다 큰 경우(또는 처리된 커맨드의 입출력 크기에 대응하는 개수보다 큰 경우), 스토리지 컨트롤러(210)는 S450 단계의 동작을 수행할 수 있다.
남은 토큰의 개수가 "0"인 경우(또는 처리된 커맨드의 입출력 크기에 대응하는 개수인 경우), 스토리지 컨트롤러(210)는 처리된 커맨드에 대응하는 물리 기능에 대한 타이머가 만료되었는지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 처리된 커맨드에 대응하는 물리 기능에 대하여, 특정 시점으로부터 기준 시간이 경과하였는지 판별할 수 있다. 타이머가 만료되지 않은 경우, 스토리지 컨트롤러(210)는 S430의 판별 동작을 계속할 수 있다.
타이머가 만료된 경우, S440 단계에서, 스토리지 컨트롤러(210)는 토큰 관리 테이블(TMT)에서, 처리된 커맨드에 대응하는 물리 기능에 대한 토큰의 개수를 리필할 수 있다.
S450 단계에서, 스토리지 컨트롤러(210)는 완료된 커맨드에 대응하는 입출력 컴플리션을 대응하는 호스트로 전송할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 입출력 컴플리션을 완료 큐에 기입하고, 대응하는 호스트로 인터럽트를 전송할 수 있다.
S460 단계에서, 스토리지 컨트롤러(210)는, 토큰 관리 테이블(TMT)에서, 입출력 컴플리션의 입출력 크기만큼의 토큰의 개수를 차감할 수 있다. 예를 들어, 입출력 컴플리션이 제1 물리 기능(PF1)의 커맨드에 대응되고, 16KB의 입출력 크기를 갖는 것으로 가정한다. 이 때, 제1 물리 기능(PF1)에 대한 토큰 단위는 4KB 인 경우, 스토리지 컨트롤러(210)는 토큰 관리 테이블(TMT)에서 "4"개의 토큰(즉, 16KB/4KB=4)을 차감할 수 있다.상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 컨트롤러(210)는 토큰 관리 테이블(TMT)을 통해 복수의 물리 기능들(PF) 각각에 대한 토큰을 관리할 수 있다. 스토리지 컨트롤러(210)는 토큰 관리 테이블(TMT)에 남은 토큰의 개수를 기반으로, 입출력 컴플리션의 전송 타이밍을 제어할 수 있다. 즉, 토큰 관리 테이블(TMT)에서 특정 물리 기능에 대한 토큰이 남지 않은 경우 또는 토큰이 부족한 경우, 스토리지 컨트롤러(210)는 특정 물리 기능에 대한 입출력 컴플리션을 대응하는 호스트로 전송하지 않을 수 있다. 스토리지 컨트롤러(210)는 특정 물리 기능에 대한 타이머가 만료된 이후에, 토큰 관리 테이블(TMT)에서 특정 물리 기능에 대한 토큰을 리필하고, 이후에 입출력 컴플리션의 전송을 재개할 수 있다. 따라서, 특정 물리 기능 또는 특정 호스트에 대한 성능이 미리 정해진 성능을 초과하는 것이 방지(즉, 최대 성능이 제한)될 수 있다.
도 16a 및 도 16b는 도 13의 스토리지 컨트롤러의 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 특정 호스트(예를 들어, 제1 물리 기능(PF1)에 대응하는 호스트)에 대한 성능을 제한하는 동작이 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 스토리지 컨트롤러(210)는 도 16a 및 도 16b를 참조하여 설명된 방법을 기반으로 다른 호스트들 각각에 대한 성능을 제한하도록 구성될 수 있다.
도 13 및 도 16a를 참조하면, ① 동작에서, 커맨드 스케줄러(211a)는 제1 물리 기능(PF1)에 대응하는 전송 큐(SQ11)로부터 커맨드를 페치할 수 있다. 예시적인 실시 예에서, 커맨드 스케줄러(211a)는 도 1 내지 도 12c를 참조하여 설명된 방법(예를 들어, 누적 값을 사용한 최소 성능 보장 방법 또는 WFQ 스케줄링 방법)을 기반으로 전송 큐(SQ11)를 선택하고, 선택된 전송 큐(SQ11)로부터 커맨드(CMD)를 페치할 수 있다. 비록 도면에 도시되지는 않았으나, 도 1 내지 도 12c를 참조하여 설명된 바와 같이, 전송 큐(SQ11)로부터 커맨드(CMD)가 페치됨에 따라, 전송 큐(SQ11) 및 제1 물리 기능(PF1)에 대한 누적값들이 갱신될 수 있다.
② 동작에서, 페치된 커맨드가 처리될 수 있다. ③ 동작에서, 페치된 커맨드에 대한 동작이 완료될 수 있다. ④ 동작에서, 컴플리션 관리자(211d)는, 토큰 관리 테이블(TMT)에서, 페치된 커맨드(CMD)에 대응하는 제1 물리 기능(PF1)의 남은 토큰의 개수를 확인할 수 있다. 도 16a의 실시 예에서, 제1 물리 기능(PF1)에 대하여 남은 토큰의 개수는 "10"개일 수 있다. 이 경우, 남은 토큰이 존재하므로, 컴플리션 관리자(211d)는 제1 물리 기능(PF1)에 대한 남은 토큰의 개수를 입출력 컴플리션의 크기(즉, 처리된 커맨드에 대한 입출력 크기)만큼 차감할 수 있다. 예를 들어, 제1 물리 기능(PF1)에 대한 토큰 단위가 4KB이고, 입출력 컴플리션의 크기가 16KB인 경우, 토큰 관리 테이블(TMT)에서, 제1 물리 기능(PF1)에 대한 토큰의 개수는 "10"개에서 "6"개로 차감될 것이다.
⑤ 동작에서, 컴플리션 관리자(211d)는 입출력 컴플리션을 대응하는 호스트로 전송할 수 있다. 비록 도면의 간결성을 위해, 입출력 컴플리션이 완료 큐(CQ11)에 기입되는 것으로 도 16a에 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 앞서 설명된 바와 같이, 컴플리션 관리자(211d)는 입출력 컴플리션을 완료 큐(CQ11)에 기입하고, 대응하는 호스트로 인터럽트를 전송할 수 있다.
다음으로, 도 16b에 도시된 바와 같이, ⑥ 동작에서, 타이머(211e)가 만료될 수 있다. 예를 들어, 타이머(211e)는 제1 물리 기능(PF1)에 대한 기준 시간(예를 들어, 1ms)을 카운팅하도록 구성될 수 있다. 타이머(211e)가 만료된 것은 특정 시점(예를 들어, 타이머(211e)가 카운팅을 개시한 시점)으로부터 기준 시간(예를 들어, 1ms)이 경과하였음을 의미할 수 있다.
제1 물리 기능(PF1)에 대한 타이머(211e)가 만료된 경우, ⑦ 동작에서, 컴플리션 관리자(211d)는 토큰 관리 테이블(TMT)에서, 제1 물리 기능(PF1)에 대한 토큰 개수를 리필할 수 있다. 예를 들어, 도 16a의 동작을 통해 제1 물리 기능(PF1)에 대한 토큰 개수는 "10"개에서 "6"개로 차감된 상태이다. 컴플리션 관리자(211d)는 토큰 관리 테이블(TMT)에서, 제1 물리 기능(PF1)에 대한 토큰 개수를 "6"개에서 "10"개로 리필할 수 있다. 예시적인 실시 예에서, 리필되는 토큰의 개수는 대응하는 물리 기능의 최대 성능, 토큰 단위, 및 기준 시간을 기반으로 결정될 수 있다.
예시적인 실시 예에서, 대응하는 물리 기능에 대한 토큰이 리필된 이후에, 타이머(211e)는 카운팅 동작을 재개할 수 있다.
도 17은 도 13의 스토리지 컨트롤러의 동작을 설명하기 위한 타이밍도이다. 설명의 편의를 위하여, 스토리지 컨트롤러(210)는 제1 물리 기능(PF1)에 대한 커맨드를 연속적으로 처리하고, 제1 물리 기능(PF1)에 대한 토큰의 개수는 "5"이고, 하나의 커맨드는 하나의 토큰 단위에 대응하는 입출력 크기를 갖는 것으로 가정한다. 즉, 하나의 커맨드의 처리에 대응되는 하나의 입출력 컴플리션은 "1"개의 토큰과 대응될 수 있다.
도 13 및 도 17을 참조하면, 제0 시점(t0)에서, 타이머(211e)는 카운팅을 개시할 수 있다. 제0 시점(t0)에서, 제1 물리 기능(PF1)에 대한 토큰은 "5"개일 수 있다. 제1 시점(t1)에서, 제1 물리 기능(PF1)에 대한 하나의 커맨드가 처리 완료될 수 있다. 이에 응답하여, 스토리지 컨트롤러(210)는 하나의 입출력 컴플리션을 대응하는 호스트로 전송하고, 제1 물리 기능(PF1)에 대한 토큰을 "1"개 차감(즉, 5→할 수 있다. 이 후에, 제2 내지 제5 시점들(t2, t3, t4, t5) 각각에서, 하나의 커맨드가 처리 완료되고, 이에 응답하여, 스토리지 컨트롤러(210)는 입출력 컴플리션들을 대응하는 호스트로 전송하고, 제1 물리 기능(PF1)에 대한 토큰을 "1"개씩 순차적으로 차감(즉, 4→→→→할 수 있다. 즉, 제5 시점(t5)에서, 제1 물리 기능(PF1)에 대해 남은 토큰의 개수는 "0"일 것이다. 즉, 제1 내지 제5 시점들(t1~t5)에서, 제1 물리 기능(PF1)에 대한 토큰들이 모두 소진된 것은, 제1 물리 기능(PF1)에 대한 성능이 최대 성능에 도달하였음을 의미할 수 있다.
제6 시점(t6)에서, 제1 물리 기능(PF1)에 대한 하나의 커맨드가 처리 완료될 수 있다. 이 때, 제6 시점(t6)에서, 제1 물리 기능(PF1)에 대해 남은 토큰의 개수는 "0"개이다. 즉, 제1 내지 제5 시점들(t1~t5)에서, 제1 물리 기능(PF1)에 대한 토큰들이 모두 소진되었으므로, 스토리지 컨트롤러(210)는 제6 시점(t6)에서 처리-완료된 커맨드에 대한 입출력 컴플리션을 호스트로 전송하지 않거나 또는 입출력 컴플리션에 대한 인터럽트를 호스트로 전송하지 않을 수 있다.
이후에, 제0 시점(t0)으로부터 제1 기준 시간(T1)이 경과한 경우(즉, 제1 물리 기능(PF1)에 대한 타이머가 만료된 경우), 스토리지 컨트롤러(210)는 제1 물리 기능(PF1)에 대한 토큰을 리필(즉, 0→할 수 있다. 이 경우, 제1 물리 기능(PF1)에 대한 토큰이 리필된 이후에, 스토리지 컨트롤러(210)는 제6 시점(t6)에서 처리-완료된 커맨드에 대한 입출력 컴플리션을 호스트로 전송할 수 있다. 이에 따라, 제1 물리 기능(PF1)에 대한 토큰의 개수는 1개 차감(즉, 5→될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 컨트롤러(210)는 복수의 물리 기능들 각각에 대한 토큰을 관리함으로써, 복수의 물리 기능들 각각에 대응하는 복수의 호스트들에 대한 성능을 제한(예를 들어, 최대 성능 이하로 제한)시킬 수 있다. 이 경우, 특정 호스트에 의한 스토리지 장치의 리소스 점유를 방지할 수 있으며, 이에 따라, 복수의 호스트들 각각에 대한 성능이 균일하게 또는 고르게 분산될 수 있다.
도 18은 도 4의 성능 정보를 수신하는 구성을 설명하기 위한 도면이다. 도면의 간결성을 위해, 제1 내지 제3 물리 기능들(PF1, PF2, PF3) 각각에 대한 최소 성능 및 최대 성능의 지표들이 도 18에 도시되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 다른 호스트들 또는 다른 물리 기능들에 대한 성능 지표가 사용될 수 있다.
도 1 및 도 18을 참조하면, 복수의 호스트들(11~1n)은 스토리지 장치(100)로 도 18에 도시된 바와 같은 성능 정보 또는 성능 지표를 제공할 수 있다. 예를 들어, 제1 호스트(11)는 제1 물리 기능(PF1)과 대응될 수 있고, 제1 호스트(11)는 제1 물리 기능(PF1)에 대한 최소 성능 및 최대 성능에 대한 정보를 스토리지 장치(100)로 제공할 수 있다. 마찬가지로, 제2 및 제3 호스트들(12, 13) 각각은 제2 및 제3 물리 기능들(PF2, PF3)과 대응될 수 있고, 제2 및 제3 호스트들(12, 13) 각각은 제2 및 제3 물리 기능들(PF2, PF3)에 대한 최소 성능 및 최대 성능에 대한 정보를 스토리지 장치(100)로 제공할 수 있다.
예시적인 실시 예에서, 최소 성능 정보는 복수의 물리 기능들(PF1~PF3)에 대응하는 순차 쓰기 최소 성능(SW_min1~SW_min3), 순차 읽기 최소 성능(SR_min1~SR_min3), 랜덤 쓰기 최소 성능(RW_min1~RW_min3), 및 랜덤 읽기 최소 성능(RR_min1~RR_min3)에 대한 정보를 포함할 수 있다. 최대 성능 정보는 복수의 물리 기능들(PF1~PF3)에 대응하는 순차 쓰기 최대 성능(SW_max1~SW_max3), 순차 읽기 최대 성능(SR_max1~SR_min3), 랜덤 쓰기 최대 성능(RW_max1~RW_max3), 및 랜덤 읽기 최대 성능(RR_max1~RR_max3)에 대한 정보를 포함할 수 있다.
예시적인 실시 예에서, 최소 성능 정보 또는 최대 성능 정보는 Set Features 커맨드 또는 벤더 커맨드(Vendor Commands)를 통해 복수의 호스트들(11~1n) 각각으로부터 스토리지 장치(100)로 제공될 수 있다.
예시적인 실시 예에서, 본 발명의 실시 예에 따른 스토리지 컨트롤러(110 또는 120)는 도 18에 도시된 최소 성능에 대한 정보를 기반으로 도 1 내지 도 12c를 참조하여 설명된 동작 방법(즉, 누적 값을 활용한 커맨드 스케줄링 또는 WFQ 스케줄링)을 수행할 수 있다. 예를 들어, 제1 물리 기능(PF1)에 대응하는 순차 쓰기 최소 성능(SW_min1)이 3000MB/s이고, 제2 물리 기능(PF2)에 대응하는 순차 쓰기 최소 성능(SW_min2)이 1500MB/s이고, 스토리지 장치(100)가 제공하는 최대 성능이 6GB/s인 것으로 가정한다. 이 때, 제1 및 제2 물리 기능들(PF1, PF2)에 대한 가중치(예를 들어, 쓰기 가중치)는 각각 "2" 및 "4" (즉, 2:1의 비율로 설정될 수 있음.)로 설정될 수 있다. 이 경우, 상대적으로 작은 가중치를 갖는 제1 물리 기능(PF1)으로부터 커맨드가 페치되는 빈도가 상대적으로 높아질 수 있다. 따라서, 제1 및 제2 물리 기능들(PF1, PF2) 각각에 대한 최소 성능이 보장될 수 있다.
또는, 본 발명의 실시 예에 따른 스토리지 컨트롤러(110 또는 120)는 도 18에 도시된 최대 성능에 대한 정보를 기반으로 도 13 내지 도 17을 참조하여 설명된 동작 방법(즉, 토큰 관리를 통한 최대 성능 제한 방법)이 수행될 수 있다. 예를 들어, 제1 및 제2 물리 기능들(PF1, PF2)에 대한 기준 시간이 1ms이고, 토큰 단위가 4KB이며, 제1 물리 기능(PF1)의 순차 쓰기 최대 성능(SW_max1)이 4000MB/s이고, 제2 물리 기능(PF1)의 순차 쓰기 최대 성능(SW_max2)이 2000MB/s인 것으로 가정한다. 이 경우, 제1 물리 기능(PF1)에 대한 초기 토큰의 개수는 "1000"개로 설정될 수 있고, 제2 물리 기능(PF2)에 대한 초기 토큰의 개수는 "500"개로 설정될 수 있다. 즉, 제1 및 제2 물리 기능들(PF1, PF2) 각각에 대한 초기 토큰 개수를 서로 다르게 설정함으로써, 각각에 대응하는 최대 성능이 제한될 수 있다.
도 19은 본 발명에 따른 스토리지 시스템이 적용된 SSD 시스템을 예시적으로 보여주는 블록도이다. 도 19을 참조하면, SSD 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함한다. 스토리지 장치(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호(SIG)를 주고받고, 전원 커넥터(1202)를 통해 전원(PWR)을 입력 받을 수 있다. 스토리지 장치(1200)는 SSD(Solid State Drive) 컨트롤러(1210), 복수의 불휘발성 메모리들(1221~122n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함할 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 불휘발성 메모리들(1221~122n)을 제어할 수 있다. 복수의 불휘발성 메모리들(1221~122n)은 SSD 컨트롤러(1210)의 제어에 따라 동작할 수 있다. 보조 전원 장치(1230)는 전원 커넥터(1002)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1230)는 호스트(1100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않을 경우, SSD(1200)의 전원을 제공할 수 있다.
버퍼 메모리(1240)는 스토리지 장치(1200)의 버퍼 메모리로서 사용될 수 있다. 예시적인 실시 예에서, 버퍼 메모리(1240)는 도 1 내지 도 19을 참조하여 설명된 스토리지 장치(100)의 컨트롤러 메모리 버퍼(CMB; controller memory buffer)로서 사용될 수 있다.
예시적인 실시 예에서, 호스트(1100)는 도 1 내지 도 12c를 참조하여 설명된 다중-호스트 또는 다중-테넌트일 수 있고, 스토리지 장치(1200)는 도 1 내지 도 12c를 참조하여 설명된 스토리지 장치(100)이거나 또는 도 1 내지 도 12c를 참조하여 설명된 동작 방법들을 기반으로, 호스트(1100)(또는 다중-호스트)에 대한 커맨드들을 스케줄링할 수 있다.
도 20는 발명에 따른 스토리지 시스템이 적용된 전자 장치를 예시적으로 보여주는 블록도이다. 도 20를 참조하면, 전자 장치(2000)는 메인 프로세서(2100), 터치 패널(2200), 터치 구동 회로(2202), 디스플레이 패널(2300), 디스플레이 구동 회로(2302), 시스템 메모리(2400), 스토리지 장치(2500), 이미지 처리기(2600), 통신 블록(2700), 오디오 처리기(2800), NFC 집적 회로(2900)를 포함할 수 있다. 예시적인 실시 예에서, 전자 장치(2000)는 개인용 컴퓨터, 랩탑 컴퓨터, 서버, 워크스테이션, 이동식 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 디지털 카메라, 스마트폰, 태블릿 컴퓨터, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치 중 하나일 수 있다.
메인 프로세서(2100)는 전자 장치(2000)의 전반적인 동작들을 제어할 수 있다. 메인 프로세서(2100)는 전자 장치(2000)의 구성 요소들의 동작들을 제어/관리할 수 있다. 메인 프로세서(2100)는 전자 장치(2000)를 동작시키기 위해 다양한 연산을 처리할 수 있다.
터치 패널(2200)은 터치 구동 회로(2202)의 제어에 따라 사용자로부터의 터치 입력을 감지하도록 구성될 수 있다. 디스플레이 패널(2300)은 디스플레이 구동 회로(2302)의 제어에 따라 영상 정보를 표시하도록 구성될 수 있다.
시스템 메모리(2400)는 전자 장치(2000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 시스템 메모리(2400)는 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) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(2500)는 전원 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 스토리지 장치(2500)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 다양한 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 예로서, 스토리지 장치(2500)는 전자 장치(2000)의 내장 메모리 및/또는 착탈식 메모리를 포함할 수 있다.
오디오 처리기(2600)는 오디오 신호 처리기(2610)를 이용하여 오디오 신호를 처리할 수 있다. 오디오 처리기(2600)는 마이크(2620)를 통해 오디오 입력을 수신하거나, 스피커(2630)를 통해 오디오 출력을 제공할 수 있다.
통신 블록(2700)은 안테나(2710)를 통해 외부 장치/시스템과 신호를 교환할 수 있다. 통신 블록(2700)의 송수신기(2720) 및 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) 등과 같은 다양한 무선 통신 규약 중 적어도 하나에 따라, 외부 장치/시스템과 교환되는 신호를 처리할 수 있다.
이미지 처리기(2800)는 렌즈(2810)를 통해 광을 수신할 수 있다. 이미지 처리기(2800)에 포함되는 이미지 장치(2820) 및 이미지 신호 처리기(2830)는 수신된 광에 기초하여, 외부 객체에 관한 이미지 정보를 생성할 수 있다.
예시적인 실시 예에서, 스토리지 장치(2500)는 도 1 내지 도 12c를 참조하여 설명된 스토리지 장치(100)일 수 있으며, 다중-호스트 또는 다중-테넌트를 지원할 수 있다. 예를 들어, 스토리지 장치(2500)는, 도 1 내지 도 12c을 참조하여 설명된 동작 방법을 기반으로, 메인 프로세서(2100)에 포함된 복수의 코어들 각각에 대한 성능 요구를 충족시키거나, 또는 메인 프로세서(2100)에서 실행되는 복수의 프로세스들 각각에 대한 성능 요구를 충족시킬 수 있다. 또는, 스토리지 장치(2500)는 통신 블록(2700)을 통해 외부 장치 또는 외부 호스트와 통신할 수 있으며, 도 1 내지 도 12c를 참조하여 설명된 방법을 기반으로 메인 프로세서(2100), 외부 장치, 또는 외부 호스트에 대한 성능 요구를 충족시킬 수 있다.
도 21는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 도 21를 참조하면, 데이터 센터(3000)는 데이터 센터(3000)는 복수의 컴퓨팅 노드들(3100~3400)(또는 서버들)을 포함할 수 있다. 복수의 컴퓨팅 노드들(3100~3400)은 네트워크(NT)를 통해 서로 통신할 수 있다. 예시적인 실시 예에서, 네트워크(NT)는 SAN(storage area network)와 같은 스토리지 전용 네트워크이거나 또는 TCP/IP와 같은 인터넷 네트워크일 수 있다. 예시적인 실시 예에서, 네트워크(NT)는 파이버 채널(Fibre Channel), iSCSI 프로토콜, FCoE, NAS, NVMe-oF 등과 같은 다양한 통신 프로토콜들 중 적어도 하나를 포함할 수 있다.
복수의 컴퓨팅 노드들(3100~3400) 각각은 프로세서들(3110, 3210, 3310, 3410), 메모리들(3120, 3220, 3320, 3420), 스토리지 장치들(3130, 3230, 3330, 3430), 및 인터페이스 회로들(3140, 3240, 3340, 3440)을 각각 포함할 수 있다.
예를 들어, 제1 컴퓨팅 노드(3100)는 제1 프로세서(3110), 제1 메모리(3120), 제1 스토리지 장치(3130), 및 제1 인터페이스 회로(3140)를 포함할 수 있다. 예시적인 실시 예에서, 제1 프로세서(3110)는 싱글 코어 또는 멀티 코어로 구현될 수 있다. 제1 메모리(3120)는 DRAM, SDRAM, SRAM, 3D XPoint 메모리, MRAM, PRAM, FeRAM, ReRAM, 3D X-Point 등과 같은 메모리를 포함할 수 있다. 제1 메모리(3120)는 제1 컴퓨팅 노드(3100)의 시스템 메모리, 동작 메모리, 또는 버퍼 메모리로서 사용될 수 있다. 제1 스토리지 장치(3130)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD) 등과 같은 대용량 저장 매체일 수 있다. 제1 인터페이스 회로(3140)는 네트워크(NT)를 통한 통신 지원하도록 구성된 네트워크 인터페이스 컨트롤러(NIC; network interface controller)일 수 있다.
예시적인 실시 예에서, 제1 컴퓨팅 노드(3100)의 제1 프로세서(3110)는 미리 정해진 메모리 인터페이스를 기반으로 제1 메모리(3120)를 액세스하도록 구성될 수 있다. 또는, 공유 메모리 구조(shared memory architecture)의 실시 예에서, 제1 컴퓨팅 노드(3100)의 제1 프로세서(3110)는 네트워크(NT)를 통해 다른 컴퓨팅 노드들(3200, 3300, 3400)의 메모리들(3220, 3320, 3420)을 액세스하도록 구성될 수 있다. 인터페이스 회로(3140)는 상술된 제1 프로세서(3110)의 공유 메모리(즉, 다른 컴퓨팅 노드들의 메모리들)로의 접근을 제어 또는 지원하도록 구성된 네트워크 스위치(미도시)를 포함할 수 있다.
예시적인 실시 예에서, 제1 컴퓨팅 노드(3100)의 제1 프로세서(3110)는 미리 정해진 스토리지 인터페이스를 기반으로 제1 스토리지 장치(3130)를 액세스하도록 구성될 수 있다. 또는 제1 컴퓨팅 노드(3100)의 제1 프로세서(3110)는 네트워크(NT)를 통해 다른 컴퓨팅 노드들(3200, 3300, 3400)의 스토리지 장치들(3230, 3330, 3430)을 액세스하도록 구성될 수 있다. 인터페이스 회로(3140)는 상술된 제1 프로세서(3110)의 다른 스토리지 장치들로의 접근을 제어 또는 지원하도록 구성된 네트워크 스위치(미도시)를 포함할 수 있다. 예시적인 실시 예에서, 복수의 컴퓨팅 노드들(3100~3140) 각각에 포함된 스토리지 장치들(3130~3430)은 하나의 RAID 볼륨을 구성할 수 있다. 제2 내지 제4 컴퓨팅 노드들(3200~3400)은 상술된 제1 컴퓨팅 노드(3100)와 유사한 동작을 수행할 수 있으며, 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, 데이터 센터(3000)에서, 다양한 애플리케이션들이 실행될 수 있다. 다양한 애플리케이션들은 컴퓨팅 노드들(3100~3400) 사이의 데이터 이동 또는 복사를 위한 명령어를 실행하도록 구성되거나, 또는 컴퓨팅 노드들(3100~3400) 상에 존재하는 다양한 정보들을 조합, 가공, 재생산하기 위한 명령어들을 실행하도록 구성될 수 있다. 예시적인 실시 예에서, 다양한 애플리케이션들은 데이터 센터(3000)에 포함된 복수의 컴퓨팅 노드들(3100~3400) 중 어느 하나에 의해 수행되거나 또는, 다양한 애플리케이션들은 복수의 컴퓨팅 노드들(3100~3400) 사이에서 분산되어 실행될 수 있다.
예시적인 실시 예에서, 데이터 센터(3000)는 고성능 컴퓨팅(HPC; high-performance computing)(예를 들어, 금융, 석유, 재료과학, 기상 예측 등), 기업형 애플리케이션(예를 들어, 스케일 아웃 데이터베이스), 빅 데이터 애플리케이션(예를 들어, NoSQL 데이터베이스, 인-메모리 복제 등)을 위해 사용될 수 있다.
예시적인 실시 예에서, 복수의 컴퓨팅 노드들(3100~3400) 중 적어도 하나는 애플리케이션 서버일 수 있다. 애플리케이션 서버는 데이터 센터(3000)에서 다양한 동작을 수행하도록 구성된 애플리케이션을 실행하도록 구성될 수 있다. 복수의 컴퓨팅 노드들(3100~3400) 중 적어도 하나는 스토리지 서버일 수 있다. 스토리지 서버는 데이터 센터(3000)에서 생성되거나 또는 관리되는 데이터를 저장하도록 구성될 수 있다.
예시적인 실시 예에서, 데이터 센터(3000)에 포함된 복수의 컴퓨팅 노드들(3100~3400) 각각 또는 그것들의 부분들은 동일한 위치에 존재하거나 또는 물리적으로 이격된 위치에 존재할 수 있으며, 무선 통신 또는 유선 통신에 기반된 네트워크(NT)를 통해 서로 통신할 수 있다. 예시적인 실시 예에서, 데이터 센터(3000)에 포함된 복수의 컴퓨팅 노드들(3100~3400)은 서로 동일한 메모리 기술을 기반으로 구현되거나 또는 서로 다른 메모리 기술들을 기반으로 구현될 수 있다.
비록 도면에 도시되지는 않았으나, 데이터 센터(3000)의 복수의 컴퓨팅 노드들(3100~3400) 중 적어도 일부는 네트워크(NT) 또는 다른 통신 인터페이스(미도시)를 통해 외부 클라이언트 노드(미도시)와 통신할 수 있다. 복수의 컴퓨팅 노드들(3100~3400) 중 적어도 일부는 외부 클라이언트 노드의 요청에 따라 자체적으로 요청(예를 들어, 데이터 저장, 데이터 전송 등)을 처리하거나 또는 다른 컴퓨팅 노드에서 요청을 처리할 수 있다.
예시적인 실시 예에서, 데이터 센터(3000)에 포함된 복수의 컴퓨팅 노드들(3100~3400)의 개수, 각 컴퓨팅 노드에 포함된 프로세서의 개수, 메모리 개수, 스토리지 장치의 개수는 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
예시적인 실시 예에서, 복수의 컴퓨팅 노드들(3100~3400) 각각은 도 1 내지 도 12c를 참조하여 설명된 복수의 호스트들일 수 있고, 복수의 컴퓨팅 노드들(3100~3400) 각각에 포함된 스토리지 장치들(3130~3140) 각각은 도 1 내지 도 12c를 참조하여 설명된 다중-호스트 또는 다중-테넌트를 지원하도록 구성된 스토리지 장치일 수 있다. 복수의 컴퓨팅 노드들(3100~3400) 각각에 포함된 스토리지 장치들(3130~3140) 각각은 도 1 내지 도 19을 참조하여 설명된 동작 방법을 기반으로 복수의 컴퓨팅 노드들(3100~3400) 각각에 대한 최소 성능을 보장하고, 최대 성능을 제한하도록 구성될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 제1 및 제2 호스트들과 각각 대응하는 제1 및 제2 물리 기능들을 포함하는 스토리지 장치의 동작 방법에 있어서,
    상기 제1 및 제2 호스트들 각각으로부터 성능 정보를 수신하는 단계;
    상기 수신된 성능 정보를 기반으로 상기 제1 물리 기능에 대응하는 제1 가중치 및 상기 제2 물리 기능에 대응하는 제2 가중치를 설정하는 단계;
    누적값 테이블을 기반으로, 상기 제1 호스트에 의해 관리되는 제1 및 제2 전송 큐들 및 상기 제2 호스트에 의해 관리되는 제3 및 제4 전송 큐들 중 하나를 선택하는 단계;
    상기 선택된 전송 큐로부터의 커맨드를 처리하는 단계; 및
    상기 제1 및 제2 가중치들 중 상기 처리된 커맨드와 대응하는 가중치 및 상기 처리된 커맨드의 입출력(I/O; input/output) 정보를 기반으로 상기 누적값 테이블을 갱신하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 I/O 정보는 상기 처리된 커맨드에 대응하는 데이터의 크기에 대한 정보를 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 누적값 테이블은
    상기 제1 전송 큐로부터의 처리된 적어도 하나의 제1 커맨드의 I/O 정보 및 상기 제1 가중치를 기반으로 누적된 제1 전송 큐 누적값;
    상기 제2 전송 큐로부터의 처리된 적어도 하나의 제2 커맨드의 I/O 정보 및 상기 제1 가중치를 기반으로 누적된 제2 전송 큐 누적값;
    상기 제3 전송 큐로부터의 처리된 적어도 하나의 제3 커맨드의 I/O 정보 및 상기 제2 가중치를 기반으로 누적된 제3 전송 큐 누적값; 및
    상기 제4 전송 큐로부터의 처리된 적어도 하나의 제4 커맨드의 I/O 정보 및 상기 제2 가중치를 기반으로 누적된 제4 전송 큐 누적값을 포함하는 동작 방법.
  4. 제 3 항에 있어서,
    상기 제1 내지 및 제4 전송 큐들 중에서 상기 누적값 테이블을 기반으로 상기 선택된 전송 큐는 상기 제1 내지 제4 전송 큐 누적값들 중 가장 작은 값을 갖는 전송 큐 누적값과 대응되는 동작 방법.
  5. 제 4 항에 있어서,
    상기 대응하는 가중치 및 상기 처리된 커맨드의 상기 I/O 정보의 곱을 상기 선택된 전송 큐에 대응하는 전송 큐 누적값에 누적시킴으로써, 상기 누적값 테이블이 갱신되는 동작 방법.
  6. 제 3 항에 있어서,
    상기 누적값 테이블은:
    상기 제1 물리 기능에 대응하는 상기 제1 호스트로부터의 처리된 적어도 하나의 제5 커맨드의 I/O 정보 및 상기 제1 가중치를 기반으로 누적된 제1 물리 기능 누적값; 및
    상기 제2 물리 기능에 대응하는 상기 제2 호스트로부터의 처리된 적어도 하나의 제6 커맨드의 I/O 정보 및 상기 제2 가중치를 기반으로 누적된 제2 물리 기능 누적값을 더 포함하는 동작 방법.
  7. 제 6 항에 있어서,
    상기 누적값 테이블을 기반으로, 상기 제1 내지 제4 전송 큐들 중 하나를 선택하는 단계는:
    상기 제1 및 제2 물리 기능 누적값들 중 최소 값을 결정하고, 상기 제1 및 제2 물리 기능들 중 상기 결정된 최소 값과 대응되는 물리 기능을 선택하는 단계;
    상기 제1 내지 제4 전송 큐들 중 상기 선택된 물리 기능과 대응되는 전송 큐들을 결정하고, 상기 제1 내지 제4 전송 큐 누적값들 중 상기 결정된 전송 큐들과 대응되는 전송 누적값들을 결정하고, 상기 결정된 전송 큐 누적값들 중 최소 값을 갖는 전송 큐 누적값을 선택하는 단계; 및
    상기 제1 내지 제4 전송 큐들 중 상기 선택된 전송 큐 누적과 대응하는 전송 큐를 상기 하나로서 선택하는 단계를 포함하는 동작 방법.
  8. 제 7 항에 있어서,
    상기 누적값 테이블을 갱신하는 단계는:
    상기 대응하는 가중치 및 상기 처리된 커맨드의 상기 I/O 정보의 곱을 상기 선택된 전송 큐에 대응하는 전송 큐 누적값에 누적시키는 단계; 및
    상기 대응하는 가중치 및 상기 처리된 커맨드의 상기 I/O 정보의 곱을 상기 선택된 물리 기능에 대응하는 물리 기능 누적값에 누적시키는 단계를 포함하는 동작 방법.
  9. 제 1 항에 있어서,
    가비지 콜렉션이 요구되는지 판별하는 단계;
    상기 가비지 콜렉션이 요구되는 경우, 상기 제1 및 제2 물리 기능들 중 상기 가비지 콜렉션이 요구되는 물리 기능을 결정하고, 상기 제1 및 제2 가중치들 중 상기 결정된 물리 기능에 대응하는 가중치를 갱신하는 단계; 및
    상기 갱신된 누적값 테이블을 기반으로, 상기 가비지 콜렉션에 요구되는 물리 기능을 통해 상기 제1 내지 제4 전송 큐들 중 하나로부터의 커맨드가 처리되는 경우, 상기 갱신된 가중치 및 상기 처리된 커맨드의 I/O 정보를 기반으로 상기 갱신된 누적값 테이블을 추가 갱신하는 단계를 더 포함하는 동작 방법.
  10. 제 1 항에 있어서,
    상기 수신된 성능 정보를 기반으로 상기 제1 물리 기능 및 상기 제2 물리 기능 각각에 대한 토큰에 대한 정보를 포함하는 토큰 관리 테이블을 설정하는 단계;
    상기 커맨드를 처리한 이후에, 상기 커맨드에 대응하는 완료 큐에 입출력 컴플리션을 기록하는 단계; 및
    상기 토큰 관리 테이블을 기반으로, 상기 제1 호스트 및 상기 제2 호스트 중 상기 커맨드와 관련된 물리 기능에 대응하는 호스트로 인터럽트를 선택적으로 전송하는 단계를 더 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 토큰 관리 테이블을 기반으로, 상기 제1 호스트 및 상기 제2 호스트 중 상기 커맨드와 관련된 물리 기능에 대응하는 호스트로 인터럽트를 선택적으로 전송하는 단계는:
    상기 제1 물리 기능 및 상기 제2 물리 기능 중 상기 커맨드와 관련된 물리 기능에 대한 토큰의 개수가 기준 값보다 많은 지 판별하는 단계;
    상기 토큰의 개수가 상기 기준 값보다 많은 경우, 상기 커맨드와 관련된 물리 기능에 대응하는 상기 호스트로 상기 인터럽트를 전송하고, 상기 토큰 관리 테이블에서, 상기 제1 물리 기능 및 상기 제2 물리 기능 중 상기 커맨드와 관련된 물리 기능에 대한 토큰의 개수를 상기 입출력 컴플리션의 크기와 대응되는 개수만큼 차감하는 단계를 포함하고,
    상기 토큰의 개수가 상기 기준 값보다 많지 않은 경우, 상기 커맨드와 관련된 물리 기능에 대응하는 상기 호스트로 상기 인터럽트가 전송되지 않는 동작 방법.
  12. 제 11 항에 있어서,
    상기 제1 물리 기능 및 상기 제2 물리 기능 각각에 대한 타이머가 만료된 경우, 상기 토큰 관리 테이블에서 상기 제1 물리 기능 및 상기 제2 물리 기능 각각에 대한 토큰을 리필하는 단계를 더 포함하는 동작 방법.
  13. 제 1 항에 있어서,
    상기 제1 및 제2 물리 기능들 각각은 상기 제1 및 제2 호스트들과 PCI-express 인터페이스 기반의 적어도 하나의 물리 포트를 통해 통신하도록 구성된 NVMe (Nonvolatile memory express) 컨트롤러인 동작 방법.
  14. 불휘발성 메모리 장치; 및
    제1 및 제2 호스트의 제어에 따라 상기 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는:
    상기 제1 호스트의 제1 전송 큐로부터의 제1 커맨드 및 제2 전송 큐로부터의 제2 커맨드를 처리하도록 구성된 제1 NMVe 컨트롤러;
    상기 제2 호스트의 제3 전송 큐로부터의 제3 커맨드 및 제4 전송 큐로부터의 제4 커맨드를 처리하도록 구성된 제2 NVMe 컨트롤러; 및
    상기 제1 및 제2 호스트들로부터의 성능 정보를 기반으로 상기 제1 및 제2 NVMe 컨트롤러들 각각에 대한 제1 및 제2 가중치들을 설정하고, 상기 제1 및 제2 가중치들 및 이전에 처리됨 커맨드를 기반으로 누적된 정보를 포함하는 누적값 테이블을 기반으로, 상기 제1 내지 제4 전송 큐들 중 하나의 전송 큐를 선택하고, 상기 제1 내지 제4 커맨드들 중 상기 선택된 하나의 전송 큐로부터의 커맨드를 처리하도록 구성된 성능 관리자를 포함하는 스토리지 장치.
  15. 제 14 항에 있어서,
    상기 누적값 테이블은:
    상기 제1 전송 큐로부터의 처리된 적어도 하나의 커맨드의 I/O 정보 및 상기 제1 가중치를 기반으로 누적된 제1 전송 큐 누적값;
    상기 제2 전송 큐로부터의 처리된 적어도 하나의 커맨드의 I/O 정보 및 상기 제1 가중치를 기반으로 누적된 제2 전송 큐 누적값;
    상기 제3 전송 큐로부터의 처리된 적어도 하나의 커맨드의 I/O 정보 및 상기 제2 가중치를 기반으로 누적된 제3 전송 큐 누적값; 및
    상기 제4 전송 큐로부터의 처리된 적어도 하나의 커맨드의 I/O 정보 및 상기 제2 가중치를 기반으로 누적된 제4 전송 큐 누적값을 포함하는 스토리지 장치.
  16. 제 15 항에 있어서,
    상기 성능 관리자는 상기 누적값 테이블을 기반으로, 상기 제1 내지 제4 전송 큐 누적값들 중 최소 값을 갖는 전송 큐를 상기 하나의 전송 큐로서 선택하도록 구성되는 스토리지 장치.
  17. 제 15 항에 있어서,
    상기 누적값 테이블은:
    상기 제1 NVMe 컨트롤러를 통해 처리된 적어도 하나의 커맨드의 I/O 정보 및 상기 제1 가중치를 기반으로 누적된 제1 물리 기능 누적값; 및
    상기 제2 NVMe 컨트롤러를 통해 처리된 적어도 하나의 커맨드의 I/O 정보 및 상기 제2 가중치를 기반으로 누적된 제2 물리 기능 누적값을 더 포함하는 스토리지 장치.
  18. 제 17 항에 있어서,
    상기 성능 관리자는:
    상기 누적값 테이블을 기반으로, 상기 제1 및 제2 물리 기능 누적값들 중 최소값을 갖는 물리 기능 누적값을 결정하고, 상기 제1 및 제2 NVMe 컨트롤러들 중 상기 결정된 물리 기능 누적값과 대응되는 NVMe 컨트롤러를 결정하고, 제1 내지 제4 전송 큐들 중 상기 결정된 NVMe 컨트롤러와 대응되는 전송 큐들을 결정하고, 상기 제1 내지 제4 전송 큐 누적값들 중 상기 결정된 전송 큐들에 대응하는 전송 큐 누적값들에서 최소 값을 갖는 전송 큐 누적값을 결정하고, 상기 제1 내지 제4 전송 큐들 중 상기 결정된 전송 큐 누적값과 대응되는 전송 큐를 상기 하나의 전송 큐로서 선택하도록 더 구성되는 스토리지 장치.
  19. 제 15 항에 있어서,
    상기 제1 및 제2 NVMe 컨트롤러들은 PCI-express 인터페이스 기반의 적어도 하나의 물리 포트를 통해 상기 제1 및 제2 호스트들과 각각 통신하도록 구성되는 스토리지 장치.
  20. 복수의 호스트들과 통신하도록 구성된 스토리지 장치의 동작 방법에 있어서,
    상기 복수의 호스트들로부터 성능 정보를 수신하는 단계;
    상기 성능 정보를 기반으로 상기 복수의 호스트들 각각에 대한 가중치를 설정하는 단계;
    누적값 테이블을 기반으로, 상기 복수의 호스트들로부터의 커맨드들을 스케줄링을 수행하는 단계;
    상기 스케줄링된 커맨드들을 처리하는 단계; 및
    상기 처리된 커맨드들의 입출력(I/O; input/output) 정보 및 상기 가중치를 기반으로 상기 누적 값 테이블을 갱신하는 단계를 포함하고,
    상기 누적값 테이블은 상기 복수의 호스트들 각각에 대해 이전에 처리된 커맨드의 I/O 정보 및 상기 가중치의 곱이 누적된 누적값들을 포함하는 동작 방법.

KR1020200012955A 2020-02-04 2020-02-04 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법 KR20210099291A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200012955A KR20210099291A (ko) 2020-02-04 2020-02-04 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법
US17/129,185 US11409469B2 (en) 2020-02-04 2020-12-21 Storage device for supporting multiple hosts and operation method thereof
CN202110129426.7A CN113282230A (zh) 2020-02-04 2021-01-29 支持多个主机的存储设备及其操作方法
EP21155074.4A EP3869317A1 (en) 2020-02-04 2021-02-03 Storage device for supporting multiple hosts and operation method thereof
US17/852,652 US11861238B2 (en) 2020-02-04 2022-06-29 Storage device for supporting multiple hosts and operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200012955A KR20210099291A (ko) 2020-02-04 2020-02-04 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210099291A true KR20210099291A (ko) 2021-08-12

Family

ID=74550581

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200012955A KR20210099291A (ko) 2020-02-04 2020-02-04 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법

Country Status (4)

Country Link
US (2) US11409469B2 (ko)
EP (1) EP3869317A1 (ko)
KR (1) KR20210099291A (ko)
CN (1) CN113282230A (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11461241B2 (en) 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11669255B2 (en) * 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11836133B2 (en) * 2021-07-19 2023-12-05 Samsung Electronics Co., Ltd. In-memory database (IMDB) acceleration through near data processing
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10085287T1 (de) 1999-12-08 2003-03-27 Univ British Columbia Zeitplaner für einen gewichteten fairen Warteschlagenbetrieb
US7317683B2 (en) 2001-11-01 2008-01-08 International Business Machines Corporation Weighted fair queue serving plural output ports
US7221652B1 (en) * 2001-12-14 2007-05-22 Applied Micro Circuits Corporation System and method for tolerating data link faults in communications with a switch fabric
US7414972B2 (en) 2005-01-11 2008-08-19 Alcatel Lucent Jitter controlled WFQ algorithm on network processors and latency constrained hardware
US7813277B2 (en) * 2007-06-29 2010-10-12 Packeteer, Inc. Lockless bandwidth management for multiprocessor networking devices
US8412860B2 (en) * 2009-04-01 2013-04-02 Fusion-Io, Inc. Input/output (I/O) virtualization system
US8601169B1 (en) 2010-11-03 2013-12-03 Pmc-Sierra Us, Inc. Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines
US9436634B2 (en) 2013-03-14 2016-09-06 Seagate Technology Llc Enhanced queue management
US9019826B2 (en) 2013-05-07 2015-04-28 Vmare, Inc. Hierarchical allocation of network bandwidth for quality of service
KR102371916B1 (ko) 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US10866910B2 (en) 2015-09-28 2020-12-15 Sandisk Technologies Llc Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments
US10146585B2 (en) * 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US10635154B2 (en) * 2016-12-19 2020-04-28 Western Digital Technologies, Inc. Intelligent SAS phy power management
CN106873907B (zh) * 2017-01-09 2020-04-21 中国电子科技集团公司第五十二研究所 一种多控制器存储阵列读写负载均衡方法及装置
US10387081B2 (en) 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10466904B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10831403B2 (en) * 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
US10866934B1 (en) * 2017-07-28 2020-12-15 EMC IP Holding Company LLC Token-based data flow control in a clustered storage system
KR20190026231A (ko) * 2017-09-04 2019-03-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102410671B1 (ko) 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
US10719267B2 (en) * 2018-05-30 2020-07-21 Western Digital Technologies, Inc. Partial reset of memory controller
US11029882B2 (en) * 2019-03-29 2021-06-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Secure multiple server access to a non-volatile storage device
US11354147B2 (en) * 2019-05-06 2022-06-07 Micron Technology, Inc. Class of service for multi-function devices

Also Published As

Publication number Publication date
CN113282230A (zh) 2021-08-20
US20220326890A1 (en) 2022-10-13
US20210240393A1 (en) 2021-08-05
US11861238B2 (en) 2024-01-02
US11409469B2 (en) 2022-08-09
EP3869317A1 (en) 2021-08-25

Similar Documents

Publication Publication Date Title
KR20210099291A (ko) 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법
US11221975B2 (en) Management of shared resources in a software-defined storage environment
US11314551B2 (en) Resource allocation and scheduling for batch jobs
US9003414B2 (en) Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution
US10241724B1 (en) Storage area network emulation
CN110851075A (zh) 在固态存储装置的虚拟接口上提供服务质量的装置和方法
EP3869318B1 (en) Storage devices configured to support multiple hosts and operation methods thereof
KR102505855B1 (ko) 가중치 기반 멀티-큐 가능 리소스 공유 방법
JP2021504795A (ja) クラウドサービス移行のための方法、装置、及び電子デバイス
CN111722786A (zh) 基于NVMe设备的存储系统
JP2015520876A (ja) 情報記憶システム及び情報記憶システムの制御方法
US10719245B1 (en) Transactional IO scheduler for storage systems with multiple storage devices
WO2017158799A1 (ja) ストレージ装置および情報処理方法
US11416396B2 (en) Volume tiering in storage systems
JP2023524665A (ja) ネットワーク・スタック・フレームワークにおいてコヒーレントにアタッチされたインターフェースを利用すること
KR20220063756A (ko) 저장 장치 내의 호스트 인터페이스 계층 및 그에 의해 서브미션 큐들로부터의 요청들을 처리하는 방법
US9817583B2 (en) Storage system and method for allocating virtual volumes based on access frequency
WO2017141363A1 (ja) データ処理システム及びデータ処理方法
US10592123B1 (en) Policy driven IO scheduler to improve write IO performance in hybrid storage systems
US11409466B2 (en) Access control in CMB/PMR virtualization environment
US10599340B1 (en) Policy driven IO scheduler to improve read IO performance in hybrid storage systems
US11106361B2 (en) Technologies for lockless, scalable, and adaptive storage quality of service
US10708340B2 (en) Methods and systems for improving efficiency in data transfers
US20230359359A1 (en) Elastic request handling technique for optimizing workload performance
Gu et al. Alleviating Performance Interference Through Intra-Queue I/O Isolation for NVMe-over-Fabrics

Legal Events

Date Code Title Description
A201 Request for examination