KR20220120277A - 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템 - Google Patents

커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템 Download PDF

Info

Publication number
KR20220120277A
KR20220120277A KR1020210024161A KR20210024161A KR20220120277A KR 20220120277 A KR20220120277 A KR 20220120277A KR 1020210024161 A KR1020210024161 A KR 1020210024161A KR 20210024161 A KR20210024161 A KR 20210024161A KR 20220120277 A KR20220120277 A KR 20220120277A
Authority
KR
South Korea
Prior art keywords
virtual time
command
priority class
queues
host
Prior art date
Application number
KR1020210024161A
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 KR1020210024161A priority Critical patent/KR20220120277A/ko
Priority to US17/403,876 priority patent/US20220269442A1/en
Priority to EP21207632.7A priority patent/EP4047466B1/en
Priority to CN202111635866.6A priority patent/CN114968859A/zh
Publication of KR20220120277A publication Critical patent/KR20220120277A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/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/1668Details of memory controller
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

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)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템이 제공된다. 커맨드 큐잉 방법은, 제1 커맨드의 제1 가상 시간과 제2 커맨드의 제2 가상 시간을 비교하고, 비교 결과를 바탕으로, 제1 가상 시간과 제2 가상 시간 중 기준이 되는 글로벌 가상 시간을 결정하고, 제1 가상 시간과 상기 글로벌 가상 시간의 차이와, 제2 가상 시간과 글로벌 가상 시간의 차이를 이용하여 제1 및 제2 커맨드를 제1 우선 순위 클래스 큐, 제2 우선 순위 클래스 큐 및 제3 우선 순위 클래스 큐 중 어느 하나에 전달하는 것을 포함하되, 제1 내지 제3 우선 순위 클래스 큐 각각은 서로 다른 처리 속도를 갖는다.

Description

커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템{Host-storage system including a command queuing method and a method of adjusting the processing speed of plurality of queues}
본 발명은 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템에 관한 것이다.
NVMe 사양에 따라 명령을 보냄으로써 컨트롤러와 상호 작용할 수 있는 엔티티는, 호스트로 불릴 수 있다. NVMe 또는 NVMHCI(Non-Volatile Memory Host Controller Interface Specification) 사양은 PCIe 버스를 통해 연결된 비 휘발성 저장 매체에 엑세스하기 위한 논리적 장치 인터페이스 사양이다.
NVMe는 엔터프라이즈 및 클라이언트 시스템의 요구를 해결하도록 설계된 확장 가능한 호스트 컨트롤러 인터페이스이다. 복수의 인터페이스들(관리(Admin) 또는 입/출력(I/O) 큐들)은 호스트 및 저장 장치 컨트롤러(NVMe 컨트롤러)간의 데이터 전송을 위해 존재할 수 있다. NVMe 컨트롤러는 호스트로부터 명령을 처리할 수 있는 PCIe 기능과 관련되고 NVMe 사양에 따라, 호스트에 적절한 응답을 보낼 수 있다. 예를 들어, NVMe 하위 시스템은 단일 PCIe 포트 및 다중 이름공간(namespaces)을 포함할 수 있다.
기존에는 사용자, 프로그램 또는 플로우 간의 공정성 충족을 위해 호스트 측의 연산 자원을 사용해 스케줄링을 진행해왔다. 현재 NVMe는 커맨드 큐 사이의 스케줄링 기능을 제공하나 이는 처리 빈도만을 할당하므로 공정성 충족에 그대로 적용하기에는 어려움이 있다. 따라서 호스트 측 연산 자원 사용 감소를 위해, NVMe가 제공하는 스케줄링 기능을 공정성 보장에 활용하기 위한 방안이 고안되어야 할 필요가 있다.
본 발명이 해결하고자 하는 과제는 호스트 코어의 사용률을 감소시킬 수 있는 커맨드 큐잉 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 과제는 호스트 코어의 사용률을 감소시킬 수 있는 복수의 큐의 처리 속도를 조절하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 과제는 호스트 코어의 사용률을 감소시킬 수 있는 호스트-스토리지 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 일 실시예에 따른 커맨드 큐잉 방법은, 제1 커맨드의 제1 가상 시간과 제2 커맨드의 제2 가상 시간을 비교하고, 상기 비교 결과를 바탕으로, 상기 제1 가상 시간과 상기 제2 가상 시간 중 기준이 되는 글로벌 가상 시간을 결정하고, 상기 제1 가상 시간과 상기 글로벌 가상 시간의 차이와, 상기 제2 가상 시간과 상기 글로벌 가상 시간의 차이를 이용하여 상기 제1 및 제2 커맨드를 제1 우선 순위 클래스 큐, 제2 우선 순위 클래스 큐 및 제3 우선순위 클래스 큐 중 어느 하나에 전달하는 것을 포함하되, 상기 제1 내지 제3 우선 순위 클래스 큐 각각은 서로 다른 처리 속도를 갖는다.상기 과제를 해결하기 위한 일 실시예에 따른 복수의 큐의 처리 속도를 조절하는 방법은, 제1 커맨드와 상기 제1 커맨드와 다른 제2 커맨드를 제1 내지 제3 우선 순위 클래스 큐 중 어느 하나로 전달하고, 상기 제1 내지 제3 우선 순위 클래스 큐의 제1 처리 빈도 값을 계산하고, 상기 제1 처리 빈도 값을 기초로 상기 제1 내지 제3 우선 순위 클래스 큐의 처리 속도를 제1 조절하는 것을 포함한다.
상기 과제를 해결하기 위한 일 실시예에 따른 호스트-스토리지 시스템은, 호스트로부터 NVMe(Non-Volatile Memory Express) 인터페이스를 통해 제1 커맨드와 제2 커맨드를 제공받는 호스트 인터페이스, 제1 내지 제3 우선 순위 클래스 큐를 포함하는 입출력 스케쥴러를 포함하되, 상기 WRR 중재기는, 상기 각 우선 순위 클래스 큐에 대해 계산된 처리빈도를 입출력 스케쥴러로부터 수신하고 이를 바탕으로 큐에 전달된 커맨드를 가중 라운드 로빈(Weighted Round Robin) 방식으로 수행한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 호스트-스토리지 시스템을 도시한 블록도이다.
도 2는 몇몇 실시예에 따른 호스트-스토리지 시스템의 동작을 도시한 순서도이다.
도 3 내지 도 8은 몇몇 실시예에 따른 호스트-스토리지 시스템의 동작을 설명하기 위한 도면들이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 호스트-스토리지 시스템을 도시한 블록도이다.
도 1을 참조하면, 호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 (NVM)(220)를 포함할 수 있다. 또한, 본 발명의 예시적인 실시예에 따라, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
호스트 컨트롤러(110)는 입출력 스케쥴러(I/O Scheduler)(111)를 더 포함할 수 있다.
입출력 스케쥴러(111)는 입출력 커맨드를 WRR 중재기(219)에 선택적 또는 동적으로 전달할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 비휘발성 메모리(220)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
몇몇 실시예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 몇몇 실시예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 상기 애플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 상기 애플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 상기 애플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예컨대, 기록 데이터)를 비휘발성 메모리(220)에 저장하거나, 비휘발성 메모리(220)의 데이터(예컨대, 독출 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 코어(Core)(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer; FTL)(214), 패킷 매니저(215), 버퍼 메모리(216), ECC(error correction code)(217) 엔진, AES(advanced encryption standard) 엔진(218) 및 WRR(Weighted Round Robin) 중재기(219)를 더 포함할 수 있다.
스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL)(214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 코어(213)가 플래시 변환 레이어를 실행하는 것에 의해 비휘발성 메모리(220)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command; CMD) 혹은 비휘발성 메모리(220)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(220)로부터 독출된 데이터 등을 포함할 수 있다. 몇몇 실시예에서, 호스트 인터페이스(211)는 NVM-Express / v1.4 / section 4.13.2 - Weighted Round Robin with Urgent Priority Class Arbitration 스펙에 따른 인터페이스를 포함할 수 있다.
메모리 인터페이스(212)는 비휘발성 메모리(220)에 기록될 데이터를 비휘발성 메모리(220)로 송신하거나, 비휘발성 메모리(220)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
코어(213)는 호스트(100)에서 출력된 커맨드(CMD)를 입력 받을 수 있다. 코어(213)는 전달받은 커맨드(CMD)를 입출력 스케줄러(219)에 전달할 수 있다. 코어(213)는 커맨드(CMD)를 입출력 스케줄러(219)의 어떤 우선 순위 클래스 큐(219a 내지 219c)에 전달할지 결정할 수 있다.
플래시 변환 계층(214)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트(100)로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다.
버퍼 메모리(216)는 비휘발성 메모리(220)에 기록될 데이터 혹은 비휘발성 메모리(220)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 비휘발성 메모리(220)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(220) 내에 저장될 수 있다. 비휘발성 메모리(220)로부터의 데이터 독출 시, ECC 엔진(217)은 독출 데이터와 함께 비휘발성 메모리(220)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
WRR 중재기(219)는 제1 우선 순위 클래스 큐(219a), 제2 우선 순위 클래스 큐(219b) 및 제3 우선순위 클래스 큐(219c)를 포함할 수 있다. WRR 중재기(219)는 코어(213)에서 커맨드(CMD)를 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)에 전달받을 수 있다. WRR 중재기(219)는 처리 빈도 값을 기초로 커맨드 또는 큐의 처리 속도를 조절할 수 있다.
제1 우선 순위 클래스 큐(219a)는 큐잉된 커맨드(CMD)가 가장 빠른 속도로 처리되는 큐이고, 제3 우선 순위 클래스 큐(219c)는 큐잉된 커맨드(CMD)가 가장 느린 속도로 처리되는 큐이고, 제2 우선 순위 클래스 큐(219b)는 큐잉된 커맨드(CMD)가 제1 우선 순위 클래스 큐(219a)와 제3 우선순위 클래스 큐(219c)의 중간 속도로 처리되는 큐이다.
도 2는 몇몇 실시예에 따른 호스트-스토리지 시스템의 동작을 도시한 순서도이다.
도 3 내지 도 8은 몇몇 실시예에 따른 호스트-스토리지 시스템의 동작을 설명하기 위한 도면들이다.
도 2를 참조하면, 호스트로부터 입출력 스케쥴러에 커맨드가 제공된다(S100).
구체적으로, 도 1을 참조하면, 호스트 컨트롤러(110)는 입출력 스케쥴러(111)의 동작(operation) 수행을 요청하는 커맨드(CMD)를 제공받을 수 있다. 커맨드(CMD)는 하나의 플로우(Flow)에서의 커맨드일 수 있고, 서로 다른 플로우의 커맨드일 수 있다.
여기서, 동작은 예를 들어, 논리 또는 물리 주소로 어드레싱 되는 비휘발성 메모리(220)의 비휘발성 메모리 셀에 데이터를 입력(input)하는 동작과, 논리 또는 물리 주소로 어드레싱 되는 비휘발성 메모리(220)의 비휘발성 메모리 셀에 저장된 데이터를 출력(output)하는 동작을 포함할 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니며, 비휘발성 메모리(220)에 대한 메모리의 동작의 예는 얼마든지 변형되어 실시될 수 있다.
다음, 입출력 스케쥴러는 제공받은 커맨드를 어떤 우선 순위 클래스 큐에 전달할지 결정한다(S110).
구체적으로, 도 1을 참조하면, 입출력 스케쥴러(111)는, 호스트(100)로부터 제공받은 커맨드(CMD)에 대응하여 비휘발성 메모리(220)에 전송하는 커맨드(CMD)를 생성하는데 필요한 입출력(예를 들어, 커맨드)을 생성할 수 있다. 그리고, 입출력 스케쥴러(111)는 생성된 커맨드들을 WRR 중재기(219)의 어떤 우선 순위 클래스 큐에 전달할지 결정할 수 있다.
다음, 입출력 스케쥴러는 커맨드를 WRR 중재기의 우선 순위 클래스 큐에 전달한다(S120).
구체적으로 도 3 및 도 5를 참조하여, 입출력 스케쥴러(111)가 플로우(flow) 또는 프로그램에서 요청되는 커맨드를 큐잉(queuing)하는 방법에 대해 설명한다. 여기서, 프로그램과 플로우는 동일한 의미이며, 플로우라고 지칭할 수 있다.
입출력 스케쥴러(111)는 제공받은 제1 내지 제4 플로우들(Flow1 내지 Flow4)의 가상 시간(virtual time)을 바탕으로 글로벌 가상 시간(global virtual time; gvt)을 결정할 수 있다. 여기서, 가상 시간(virtual time)이란 플로우(Flow)의 제공받은 입출력 서비스의 총량이 각 플로우의 가중치(weight)로 나누어져 평준화된 값을 의미할 수 있다. 제1 내지 제4 플로우들(Flow1 내지 Flow4)의 각 플로우의 커맨드(CMD)는 가상 시간을 부여 받을 수 있고, 부여 받는 가상 시간은 커맨드(CMD)가 요청되는 시점에 요청한 플로우(Flow1 내지 Flow4)의 가상 시간이 될 수 있다.
그리고, 입출력 스케쥴러(111)는 결정된 글로벌 가상 시간(gvt)을 기초로 각 제1 내지 제4 플로우들(Flow1 내지 Flow4) 및/또는 제1 내지 제4 플로우들(Flow1 내지 Flow4)의 커맨드들(CMD1 내지 CMD4)의 가상 시간(vta 내지 vtd)을 고려하여 각 제1 내지 제4 커맨드들(CMD1 내지 CMD4)이 큐잉될 우선 순위 클래스 큐를 결정할 수 있다. 여기서 하나의 플로우(Flow)의 여러 커맨드(CMD)일 수 있고, 여러 플로우(Flow)의 여러 커맨드(CMD)일 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
몇몇 실시예에서, 글로벌 가상 시간(gvt)은 도 4에 도시된 알고리즘에 의해 정해질 수 있다.
입출력 스케쥴러(111)는 제1 내지 제4 플로우들(Flow1 내지 Flow4) 또는 제1 내지 제4 플로우들(Flow1 내지 Flow4)의 제1 내지 제4의 커맨드들(CMD1 내지 CMD4)의 가상 시간(vta 내지 vtd)과 글로벌 가상 시간(gvt)의 차이가 제1 임계값(tl)보다 큰 경우, 해당 플로우의 커맨드를 제3 우선 순위 클래스 큐(219c)로 전달할 수 있다.
그리고, 입출력 스케쥴러(111)는 제1 내지 제4 플로우들(Flow1 내지 Flow4) 또는 제1 내지 제4 플로우들(Flow1 내지 Flow4)의 제1 내지 제4의 커맨드들(CMD1 내지 CMD4)의 가상 시간(vta~vtd)과 글로벌 가상 시간(gvt)의 차이가 제2 임계값(tm)보다 작은 경우, 해당 커맨드를 제1 우선 순위 클래스 큐(219a)로 전달할 수 있다. 여기서, 제2 임계값(tm)은 제1 임계값(tl)보다 작을 수 있다.
그리고, 입출력 스케쥴러(111)는 제1 내지 제4 플로우들(Flow1 내지 Flow4) 또는 제1 내지 제4 플로우들(Flow1 내지 Flow4)의 제1 내지 제4의 커맨드들(CMD1 내지 CMD4)의 가상 시간(vta 내지 vtd)과 글로벌 가상 시간(gvt)의 차이가 제1 임계값(tl)보다 작고 제2 임계값(tm)보다 큰 경우, 제 해당 커맨드를 제2 우선 순위 클래스 큐(219b)로 전달할 수 있다.
여기서, 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c) 각각은 서로 다른 처리 속도를 가질 수 있다.
도 3, 도 5 및 도 6을 참조하면, 플로우(Flow)의 제1 내지 제4의 커맨드(CMD1 내지 CMD4)가 있다고 가정하자.
제1 내지 제4 커맨드(CMD1 내지 CMD4) 각각은 제1 내지 제4 가상 시간(vta 내지 vtd)을 가질 수 있다.
입출력 스케쥴러(111)는 제1 내지 제4 가상 시간(vta 내지 vtd)를 비교하여, 기준이 되는 글로벌 가상 시간(gvt)을 결정할 수 있다. 여기서, 글로벌 가상 시간(gvt)이란, 제1 내지 제4 가상 시간(vta 내지 vtd)중 작은 가상 시간일 수 있다. 글로벌 가상 시간(gvt)은 제1 가상 시간(vta)일 수 있다.
입출력 스케쥴러(111)는 글로벌 가상 시간(gvt)인 제1 가상 시간(vta)을 기준으로, 제2 내지 제4 가상 시간(vtb 내지 vtd)을 비교하여, 제2 내지 제4 커맨드(CMD2 내지 CMD4)를 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)중 어느 하나에 전달할 수 있다.
도 3 및 도 6을 참조하면, 제1 가상 시간(vta)은 글로벌 가상 시간(gvt)이므로, 입출력 스케쥴러(111)는 제1 커맨드(CMD1)를 제1 우선 순위 클래스 큐(219a)에 전달할 수 있다.
도 3 및 도 6을 참조하면, 제2 가상 시간(vtb)과 글로벌 가상 시간(gvt)을 비교하면, 제2 가상 시간(vtb)에서 글로벌 가상 시간(gvt)을 뺀 값이 제2 임계값(tm)보다 작으므로, 입출력 스케쥴러(111)는 제2 커맨드(CMD2)를 제1 우선 순위 클래스 큐(219a)에 전달할 수 있다.
도 3 및 도 6을 참조하면, 제3 가상 시간(vtc)과 글로벌 가상 시간(gvt)을 비교하면, 제3 가상 시간(vtb)에서 글로벌 가상 시간(gvt)을 뺀 값이 제1 임계값(tl)보다 크므로, 입출력 스케쥴러(111)는 제3 커맨드(CMD3)를 제3 우선 순위 클래스 큐(219c)에 전달할 수 있다.
도 3 및 도 6을 참조하면, 제4 가상 시간(vtd)과 글로벌 가상 시간(gvt)을 비교하면, 제4 가상 시간(vtd)에서 글로벌 가상 시간(gvt)을 뺀 값이 제2 임계값(tm)보다 크고 제1 임계값(tl)보다 작으므로, 입출력 스케쥴러(111)는 제4 커맨드(CMD4)를 제2 우선 순위 클래스 큐(219b)에 전달할 수 있다.
이처럼, 입출력 스케쥴러(111)에서 글로벌 가상 시간(gvt)과 제1 내지 제4 가상 시간(vta 내지 vtd)을 비교하여, 제1 내지 제4 커맨드(CMD1 내지 CMD4)를 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c) 중 어느 하나로 즉시 전달함으로써 호스트 컨트롤러(110)에서 특별한 처리가 필요하지 않아 호스트 코어의 사용량이 감소될 수 있다.
이하, 도 7 및 도 8을 참조하여, 호스트(100)로부터 전달받은 커맨드(CMD)를 입출력 스케쥴러(111)에서 우선 순위 클래스 큐(219a~219c)에 큐잉(queuing)하는 다른 방법을 설명한다.
이하에서는, 도 3 및 도 6을 참조하여 설명한 방법과 차이점을 위주로 설명한다.
도 7 및 도 8을 참조하면, 글로벌 가상 시간(gvt)는 제2 커맨드(CMD2)의 제2 가상 시간(vtb)일 수 있다.
입출력 스케쥴러(111)는 글로벌 가상 시간(gvt)인 제2 가상 시간(vtb)을 기준으로, 제1 내지 제4 가상 시간(vta 내지 vtd)을 비교하여, 제1 내지 제4 커맨드(CMD1 내지 CMD4)를 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)중 어느 하나에 전달할 수 있다.
제1 가상 시간(vta)과 글로벌 가상 시간(gvt)을 비교하면, 제1 가상 시간(vta)에서 글로벌 가상 시간(gvt)을 뺀 값이 제1 임계값(tl)보다 크므로, 입출력 스케쥴러(111)는 제1 커맨드(CMD1)를 제3 우선 순위 클래스 큐(219c)에 전달할 수 있다.
제2 가상 시간(vtb)은 글로벌 가상 시간(gvt)이므로, 입출력 스케쥴러(111)는 제2 커맨드(CMD2)를 제1 우선 순위 클래스 큐(219a)에 전달할 수 있다.
제3 가상 시간(vtc)과 글로벌 가상 시간(gvt)을 비교하면, 제3 가상 시간(vtc)에서 글로벌 가상 시간(gvt)을 뺀 값이 제2 임계값(tm)보다 크고 제1 임계값(tl)보다 작으므로, 입출력 스케쥴러(111)는 제3 커맨드(CMD3)를 제2 우선 순위 클래스 큐(219b)에 전달할 수 있다.
제4 가상 시간(vtd)과 글로벌 가상 시간(gvt)을 비교하면, 제4 가상 시간(vtd)에서 글로벌 가상 시간(gvt)을 뺀 값이 제2 임계값(tm)보다 작으므로, 입출력 스케쥴러(111)는 제4 커맨드(CMD4)를 제1 우선 순위 클래스 큐(219a)에 전달할 수 있다.
다시 도 2를 참조하면, 입출력 스케쥴러는 처리 빈도를 계산한다.(S130). 그리고, 입출력 스케쥴러가 계산된 처리 빈도를 전달한다(S140). 그리고, WRR 중재기가 처리 빈도를 기초로 복수의 큐의 처리 속도를 조절한다(S150).
구체적으로 입출력 스케쥴러(111)로부터 전달받은 처리 빈도를 기초로 WRR 중재기(219)가 복수의 큐의 처리 속도를 조절하는 방법에 관련하여 살펴보기로 한다.
입출력 스케쥴러(111)는 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)의 제1 처리 빈도 값(hn, n은 자연수)을 계산할 수 있다. 그리고, WRR 중재기(219)는 제1 처리 빈도 값(hn)과, 커맨드들의 가상 시간 증가량을 기초로 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)의 처리 속도를 조절할 수 있다.여기서, 제1 처리 빈도 값(hn)은 현재 설정된 제1 우선 순위 클래스 큐(219a)의 처리 속도를제3 우선 순위 클래스 큐(219c)의 처리 속도로 나눈 값일 수 있다.
입출력 스케쥴러(111)는 제1 처리 빈도 값(hn)을 기초로, WRR 중재기(219)의 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)의 제2 처리 빈도 값(hn+1)을 계산할 수 있다. 그리고, WRR 중재기(219)는 제2 처리 빈도 값(hn+1)을 기초로, 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)의 처리 속도를 제2 조절할 수 있다.
여기서, 제2 처리 빈도 값(hn+1)은 제1 커맨드(CMD1)의 가상 시간 증가량(
Figure pat00001
)과 제3 커맨드(CMD3)의 가상 시간 증가량(
Figure pat00002
)의 비에 제1 처리 빈도 값(hn)을 곱한 값을 기초로 계산될 수 있다. 여기서, 제1 커맨드(CMD1)란 가장 큰 가상 시간을 갖는 커맨드를 뜻하며, 제3 커맨드(CMD3)란 가장 작은 가상 시간을 갖는 커맨드를 의미할 수 있다.
이러한, 제2 처리 빈도 값(hn+1)은 아래 수학식 1에 의해 계산될 수 있다.
<수학식 1>
Figure pat00003
여기서,
Figure pat00004
은 제2 처리 빈도 값이고,
Figure pat00005
는 제1 처리 빈도 값이고, 상기
Figure pat00006
는 제1 커맨드의 가상 시간 증가량이고,
Figure pat00007
는 제3 커맨드의 가상 시간 증가량이다.
그런데, 수학식 1에 따라 계산된 제2 처리 빈도 값(hn+1)이 너무 크게 설정되는 경우, 복수의 큐의 처리 속도가 일정하게 조절되지 못할 수 있다.
이 경우, 제2 처리 빈도 값(hn+1)을 계산하는 과정은, 슬로우다운(slowdown) 값(slowdown(f))을 계산하는 과정을 포함할 수 있으며, 계산된 슬로우다운 값(slowdown(f))이 제1 처리 빈도 값(hn+1)이 될 수 있다.
슬로우다운 값(slowdown(f))은 복수의 큐의 최소 처리 속도 조절 비율을 의미할 수 있다. 즉, 제2 처리 빈도 값(hn+1)은 아래의 수학식 2과 같이 슬로우다운 값(slowdown(f))의 최대값일 수 있다.
<수학식 2>
Figure pat00008
이러한, 슬로우다운 값(slowdown(f))은 아래 수학식 3에 의해 계산될 수 있다.
<수학식 3>
Figure pat00009
여기서,
Figure pat00010
는 플로우 f가 제1 우선 순위 클래스 큐에 전달한 모든 커맨드의 총량이고,
Figure pat00011
는 플로우 f가 제2 우선 순위 클래스 큐에 전달한 모든 커맨드의 총량이고,
Figure pat00012
는 플로우 f가 제3 우선 순위 클래스 큐에 전달한 모든 커맨드의 총량이고,
Figure pat00013
는 제1 우선 순위 클래스 큐의 처리 빈도 값이고,
Figure pat00014
는 제2 우선 순위 클래스 큐의 처리 빈도 값이고,
Figure pat00015
는 제3 우선 순위 클래스 큐의 처리 빈도 값이다.
입출력 스케쥴러(111)는 이처럼 제1 내지 제3 우선 순위 클래스 큐(219a 내지 219c)에 대한 처리 빈도를 계산하고, 이를 WRR 중재기(219)에 전달하여 복수의 큐의 처리 속도를 조절함으로써 처리 속도의 공정성을 만족시킬 수 있다.
예를 들면 입출력 스케쥴러(111)는 제2 처리 빈도 값(hn+1)을 제1 우선 순위 클래스 큐(219a)의 처리 빈도로 계산하고, 제2 처리 빈도 값(hn+1)의 제곱근을 제 2 우선 순위 클래스 큐(219b)의 처리 빈도로 계산하고, 자연수 1을 제 3 우선 순위 클래스 큐(219c)의 처리 빈도로 계산하여 WRR 중재기(219)에 전달할 수 있다. 이러한 큐 처리 속도 설정은 반드시 3개의 우선 순위 클래스 큐에 국한되는 것은 아니고, 2개 이상의 우선 순위 클래스 큐에 처리 속도 차이를 조절하는 것을 목표로 어떠한 형태로도 이루어 질 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트 200: 스토리지 장치
211: 호스트 인터페이스 111: 입출력 스케쥴러
219: WRR 중재기 gvt: 글로벌 가상 시간

Claims (10)

  1. 제1 커맨드의 제1 가상 시간과 제2 커맨드의 제2 가상 시간을 비교하고,
    상기 비교 결과를 바탕으로, 상기 제1 가상 시간과 상기 제2 가상 시간 중 기준이 되는 글로벌 가상 시간을 결정하고,
    상기 제1 가상 시간과 상기 글로벌 가상 시간의 차이와, 상기 제2 가상 시간과 상기 글로벌 가상 시간의 차이를 이용하여 상기 제1 및 제2 커맨드를 제1 우선 순위 클래스 큐, 제2 우선 순위 클래스 큐 및 제3 우선순위 클래스 큐 중 어느 하나에 전달하는 것을 포함하되,
    상기 제1 내지 제3 우선 순위 클래스 큐 각각은 서로 다른 처리 속도를 갖는 커맨드 큐잉 방법.
  2. 제1항에 있어서,
    상기 제1 가상 시간과 상기 글로벌 가상 시간의 차이가 제1 임계값보다 큰 경우, 상기 제1 커맨드는 상기 제3 우선 순위 클래스 큐로 전달되고,
    상기 제1 가상 시간과 상기 글로벌 가상 시간의 차이가 상기 제1 임계값보다 작고 제2 임계값보다 작은 경우, 상기 제1 커맨드는 상기 제1 우선 순위 클래스 큐로 전달되는, 커맨드 큐잉 방법.
  3. 제1항에 있어서,
    상기 글로벌 가상 시간은 상기 제1 가상 시간과 상기 제2 가상 시간 중 작은 가상 시간인, 커맨드 큐잉 방법.
  4. 제1 커맨드와 상기 제1 커맨드와 다른 제2 커맨드를 제1 내지 제3 우선 순위 클래스 큐 중 어느 하나로 전달하고,
    상기 제1 내지 제3 우선 순위 클래스 큐의 제1 처리 빈도 값을 계산하고,
    상기 제1 처리 빈도 값을 기초로 상기 제1 내지 제3 우선 순위 클래스 큐의 처리 속도를 제1 조절하는 것을 포함하는 복수의 큐의 처리 속도를 조절하는 방법.
  5. 제4항에 있어서,
    상기 제1 처리 빈도 값은 상기 제1 우선 순위 클래스 큐의 처리 속도를 상기 제3 우선 순위 클래스 큐의 처리 속도로 나눈 값인, 복수의 큐의 처리 속도를 조절하는 방법.
  6. 제5항에 있어서,
    상기 제1 처리 빈도 값과, 상기 제1 커맨드와 상기 제2 커맨드의 가상 시간 증가량을 계산하여, 상기 제1 내지 제3 우선 순위 클래스 큐의 제2 처리 빈도 값을 계산하고,
    상기 제2 처리 빈도 값을 기초로 상기 제1 내지 제3 우선 순위 클래스 큐의 처리 속도를 제2 조절하는 것을 더 포함하는 복수의 큐의 처리 속도를 조절하는 방법.
  7. 제6항에 있어서,
    상기 제2 처리 빈도 값은 상기 제1 커맨드의 가상 시간 증가량과 상기 제3 커맨드의 가상 시간 증가량의 비에 상기 제1 처리 빈도 값을 곱한 값을 기초로 계산되는 복수의 큐의 처리 속도를 조절하는 방법.
  8. 제7항에 있어서,
    상기 제2 처리 빈도 값은 아래 수학식을 이용하여 계산되고,
    Figure pat00016

    상기
    Figure pat00017
    은 제2 처리 빈도 값이고, 상기
    Figure pat00018
    는 제1 처리 빈도 값이고, 상기
    Figure pat00019
    는 제1 커맨드의 가상 시간 증가량이고, 상기
    Figure pat00020
    는 제3 커맨드의 가상 시간 증가량인 복수의 큐의 처리 속도를 조절하는 방법.
  9. 호스트로부터 NVMe(Non-Volatile Memory Express) 인터페이스를 통해 제1 커맨드와 제2 커맨드를 제공받는 호스트 인터페이스;
    제1 내지 제3 우선 순위 클래스 큐를 포함하는WRR 중재기; 및
    상기 제1 및 제2 커맨드를 상기 제1 내지 제3 우선 순위 클래스 큐에 전달하는 입출력 스케쥴러를 포함하되,
    상기 WRR 중재기는,
    상기 각 우선 순위 클래스 큐에 대해 계산된 처리빈도를 상기 입출력 스케쥴러로부터 수신하고 이를 바탕으로 큐에 전달된 커맨드를 가중 라운드 로빈(Weighted Round Robin) 방식으로 수행하는 호스트-스토리지 시스템.
  10. 제9항에 있어서,
    상기 입출력 스케쥴러는,
    상기 제1 가상 시간과 상기 제2 가상 시간 중 기준이 되는 글로벌 가상 시간을 더 결정하고,
    상기 제1 가상 시간과 상기 글로벌 가상 시간의 차이와, 상기 제2 가상 시간과 상기 글로벌 가상 시간의 차이를 이용하여 상기 제1 및 제2 커맨드를 상기 제1 내지 제3 우선 순위 클래스 큐 중 어느 하나에 전달하는 호스트-스토리지 시스템.
KR1020210024161A 2021-02-23 2021-02-23 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템 KR20220120277A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210024161A KR20220120277A (ko) 2021-02-23 2021-02-23 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템
US17/403,876 US20220269442A1 (en) 2021-02-23 2021-08-16 Host-storage system that includes a command queuing method and a method of adjusting the processing speed of multiple queues
EP21207632.7A EP4047466B1 (en) 2021-02-23 2021-11-10 Host-storage system that includes a command queuing method and a method of adjusting the processing speed of multiple queues
CN202111635866.6A CN114968859A (zh) 2021-02-23 2021-12-28 包括命令排队方法和调整多个队列的处理速度的方法的主机存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210024161A KR20220120277A (ko) 2021-02-23 2021-02-23 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템

Publications (1)

Publication Number Publication Date
KR20220120277A true KR20220120277A (ko) 2022-08-30

Family

ID=78695491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210024161A KR20220120277A (ko) 2021-02-23 2021-02-23 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템

Country Status (4)

Country Link
US (1) US20220269442A1 (ko)
EP (1) EP4047466B1 (ko)
KR (1) KR20220120277A (ko)
CN (1) CN114968859A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220374149A1 (en) * 2021-05-21 2022-11-24 Samsung Electronics Co., Ltd. Low latency multiple storage device system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190339905A1 (en) * 2016-03-17 2019-11-07 Hitachi, Ltd. Storage apparatus and information processing method
KR20180114972A (ko) * 2017-04-11 2018-10-22 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
EP4047466A2 (en) 2022-08-24
US20220269442A1 (en) 2022-08-25
EP4047466A3 (en) 2022-09-14
EP4047466B1 (en) 2024-03-13
CN114968859A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
US20230004329A1 (en) Managed fetching and execution of commands from submission queues
CN110674059B (zh) 基于服务质量进行仲裁以优化企业固态驱动器
KR102351668B1 (ko) 저장 장치 및 그것의 동작 방법
US20180275872A1 (en) System and method for dynamic and adaptive interrupt coalescing
US10824553B2 (en) Memory device that controls timing of receiving write data from a host
US9760392B1 (en) Adaptive throttling in hybrid storage environments
US20160210060A1 (en) Dynamic resource allocation within storage devices
US20200057578A1 (en) Nvme controller memory manager
US11041763B2 (en) Adaptive throttling
US11755241B2 (en) Storage system and method for operating storage system based on buffer utilization
US10346052B2 (en) Memory system with priority processing and operating method thereof
TW200907789A (en) Phased garbage collection and house keeping operations in a flash memory system
US20220197563A1 (en) Qos traffic class latency model for just-in-time (jit) schedulers
KR20200057311A (ko) 통신되는 데이터의 양을 동작의 중단 빈도에 따라 스로틀링하는 스토리지 장치
US11847327B2 (en) Centralized power management in memory devices
US11775191B2 (en) Host load based dynamic storage system for configuration for increased performance
KR20220120277A (ko) 커맨드 큐잉 방법 및 복수의 큐의 처리 속도를 조절하는 방법을 포함하는 호스트-스토리지 시스템
WO2020237637A1 (zh) 一种数据读取方法、存储控制器及电子设备
CN107885667B (zh) 降低读命令处理延迟的方法与装置
US11481341B2 (en) System and method for dynamically adjusting priority-based allocation of storage system resources
TW202303378A (zh) 多個固態硬碟(ssd)提交佇列間的公平共享
KR102088944B1 (ko) 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
CN114925003A (zh) 控制nvmetm设备中的i/o q连接
KR20210060253A (ko) 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법
US11868287B2 (en) Just-in-time (JIT) scheduler for memory subsystems