KR20200016810A - 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 서비스의 품질을 제공하기 위한 장치 및 방법 - Google Patents

솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 서비스의 품질을 제공하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20200016810A
KR20200016810A KR1020190096063A KR20190096063A KR20200016810A KR 20200016810 A KR20200016810 A KR 20200016810A KR 1020190096063 A KR1020190096063 A KR 1020190096063A KR 20190096063 A KR20190096063 A KR 20190096063A KR 20200016810 A KR20200016810 A KR 20200016810A
Authority
KR
South Korea
Prior art keywords
command
host
storage media
interface
data
Prior art date
Application number
KR1020190096063A
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 마벨 월드 트레이드 리미티드
Publication of KR20200016810A publication Critical patent/KR20200016810A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • 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/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0662Virtualisation aspects
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS (Quality of Service)를 제공하기 위한 양상들을 서술한다. 일부 양상들에서, 스토리지 미디어 스위치는, 솔리드 스테이트 스토리지가 액세스가능한 네임 스페이스와 연관된 가상 인터페이스에 대한 식별자를 포함하는 데이터 액세스를 위한 입력/출력(I/O) 명령을 호스트 디바이스로부터 수신한다. 스위치는 I/O 명령이 네임 스페이스를 통해 액세스할 데이터의 양을 결정한다. 네임 스페이스를 통해 I/O 명령이 액세스할 데이터의 양이 해당 네임 스페이스를 통한 데이터 액세스에 대한 미리정의된 임계값을 초과하는지 여부가 결정된다. 데이터의 양이 미리정의된 임계값을 초과하지 않는다는 결정에 응답하여, I/O 명령은 솔리드 스테이트 스토리지로 해제되어 데이터 액세스를 가능하게한다. 그렇게 함으로써, 스위치는 네임 스페이스의 액세스 파라미터에 기초하여 가상으로 액세스된 솔리드 스테이트 스토리지에 대한 QoS를 제공할 수 있다.

Description

솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통한 서비스 품질 제공을 위한 장치 및 방법{Apparatus and Methods for Providing Quality of Service over a Virtual Interface for Solid-State Storage}
관련 출원에 대한 상호 참조
본 발명은 2018년 8월 7일에 출원된 미국 임시 특허 출원 일련 번호 62/ 715,706 및 2018년 8월 8일에 출원된 미국 임시 특허 출원 일련 번호 62/716,278에 대한 우선권을 주장하고, 그 개시 내용은 그 전문이 본원에 참조로 포함된다.
대규모 소프트웨어 배포들 및 클라우드 서비스들은 종종 단일 테넌트 또는 다중 테넌트 아키텍처를 통해 구현되므로, 공유 리소스들에서 실행되는 일반 시스템들을 통해 확장성, 비용 및 보안 이점을 제공할 수 있다. 일반적으로, 다중 테넌트 시스템에서, 소프트웨어 애플리케이션 및 관련 하드웨어 인프라의 단일 인스턴스는 소프트웨어 애플리케이션, 관련 데이터 소스 및 기본 하드웨어 인프라를 공유하는 다중 테넌트들 또는 클라이언트들에 서비스를 제공할 수 있다. 이와 같이, 데이터 센터 또는 클라우드의 다중 테넌트들은, 데이터 센터 또는 클라우드의 소프트웨어 테넌트들에 의해 사용하기 위해 이러한 리소스들을 노출시키는 하이퍼바이저를 통해 다양한 컴퓨팅 리스스들(예를 들어, 프로세서 및 메모리), 네트워크 리소스들 및 스토리지 리소스들에 동시에 액세스할 수 있다.
그러나, 하이퍼바이저 또는 다른 소프트웨어 계층들을 통한 리소스 액세스는, 제공되는 액세스가 각 테넌트의 상이한 서비스 레벨 요건을 만족시키는 것을 보장하는 방식으로 구현하기가 복잡하고 어려울 수있다. 예를 들어, 일부 기업 레벨 테넌트들은 스토리지 리소스들에 대한 높은 우선 순위 및 높은 대역폭 액세스가 필요할 수 있는 반면, 다른 소비자 레벨 테넌트들은 스토리지 리소스 액세스에 대한 우선 순위, 대역폭 또는 대기 시간에 대한 요구 사항이 매우 완화된다. 스토리지 집계 및 확장(예를 들어, 비 전용 스토리지 디바이스)이 발전함에 따라, 하이퍼바이저는 집계된 스토리지 리소스들에 대한 개별 테넌트 액세스를 격리하거나 우선순위를 지정하는데 어려움이 있을 수 있다. 이러한 경우, 활성 테넌트는 수많은 데이터 액세스 요청들로 집계된 스토리지 리소스들을 포화시킬 수 있으며, 이는 다른 테넌트들이 집계된 스토리지 리소스들에 대한 액세스를 지연시키거나 방지할 수 있다. 따라서, 하이퍼바이저 또는 다른 호스트 소프트웨어는 종종 데이터 센터 또는 클라우드 시스템의 각 테넌트의 서로 다른 서비스 레벨 요구 사항들에 따라 집계된 스토리지 리소스들에 대한 각각의 액세스를 제공할 수 없다.
본 요약은 상세한 설명 및 도면들에서 추가로 서술되는 주제를 소개하기 위해 제공된다. 따라서, 본 요약은 필수적인 피처들을 서술하는 것으로 고려되거나 청구된 주제의 범위를 제한하기 위해 사용되지 않아야한다.
일부 양태들에서, 스토리지 미디어 스위치는, 호스트 인터페이스를 통해 그리고 호스트 디바이스로부터, 식별자와 연관되거나 또는 식별자에 링크된 데이터 액세스를 위한 입력/출력(I/O) 명령을 수신하는 방법을 구현한다. I/O 명령의 식별자는 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임스페이스와 관련된 가상 인터페이스 또는 가상 기능의 식별자이다. I/O 명령에 기초하여, I/O 명령이 네임스페이스를 통해 액세스할 솔리드 스테이지 스토리지의 데이터 양에 대한 결정이 이루어진다. 그런 다음, 방법은, I/O 명령이 액세스할 데이터의 양이 주어진 시간 동안(예를 들어, 시간 당 바이트) 네임스페이스를 통한 데이터 액세스에 대한 미리 정의된 임계 값을 초과하는지를 결정한다. I/O 명령이 액세스할 데이터의 양이 사전 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, 방법은 스토리지 미디어 인터페이스를 통해 I/O 명령을 솔리드 스테이트 스토리지에 해제한다. 그렇게 함으로써, 스토리지 미디어 스위치에 의해 구현되는 방법은 네임스페이스를 통해 이루어진 데이터 액세스를 솔리드 스테이트 스토리지로 관리, 측정 또는 할당하기 위한 QoS(Quality of Service) 기능들을 제공할 수 있다.
다른 양태들에서, 장치는, 하드웨어 기반 프로세서, 장치에서 애플리케이션을 구현하기 위해 프로세서 실행가능 명령어들을 유지하도록 구성된 메모리, 및 애플리케이션이 장치에 동작 가능하게 연결된 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있도록 구성된 호스트 인터페이스를 포함한다. 이 장치는 또한 솔리드 스테이트 스토리지를 위한 스토리지 미디어 인터페이스 및 호스트 인터페이스를 통해 그리고 애플리케이션으로부터 데이터 액세스를 위한 I/O 명령을 수신하도록 구현된 QoS 관리자를 제공하는 스토리지 미디어 스위치를 포함한다. I/O 명령은, 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임스페이스와 연관된 가상 인터페이스(예를 들어, 가상 기능)의 식별자를 갖는다. QoS 관리자는, I/O 명령에 기초하여, I/O 명령이 네임스페이스를 통해 액세스할 솔리드 스테이지 스토리지의 데이터 양을 결정한다. 이후, QoS 관리자는 I/O 명령이 네임스페이스를 통해 액세스할 데이터의 양이 지속 시간 동안 네임 스페이스를 통한 데이터 액세스에 대해 사전 정의된 임계 값을 초과하는지 결정한다. I/O 명령이 액세스할 데이터의 양이 사전 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, QoS 관리자는 스위치의 스토리지 미디어 인터페이스를 통해 I/O 명령을 솔리드 스테이트 스토리지에 해제한다.
또 다른 양태들에서, 솔리드 스테이트 스토리지로의 액세스를 가능하게 하도록 구성된 스토리지 미디어 인터페이스 및 호스트 디바이스와의 통신을 가능하게 하도록 구성된 호스트 인터페이스를 포함하는 SoC(System-on-Chip)가 서술된다. SoC는 또한 하드웨어 기반 프로세서, 및 호스트 인터페이스를 통해 그리고 호스트 디바이스로부터 데이터 액세스를 위한 I/O 명령을 수신하기 위해 QoS 관리자를 구현하는 프로세서 실행 가능 명령어를 저장하도록 구성된 메모리를 포함한다. I/O 명령은 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임스페이스와 연관된 가상 인터페이스(예를 들어 가상 기능)의 식별자를 포함한다. QoS 관리자는 I/O 명령에 기초하여, I/O 명령이 네임스페이스를 통해 액세스할 솔리드 스테이트 스토리지의 데이터 양을 결정하도록 구현된다. QoS 관리자는, I/O 명령이 네임스페이스를 통해 액세스할 데이터의 양이 시간 기간(예를 들어, 시간 간격당 I/O 동작들)에 걸쳐 네임스페이스를 통한 데이터 액세스에 대해 사전 정의된 임계 값을 초과하는지를 결정한다. I/O 명령이 액세스할 데이터의 양이 미리 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, QoS 관리자는 I/O 명령을 솔리드 스테이트 스토리지로 해제한다. 대안적으로, I/O 명령이 액세스할 데이터의 양이 미리 정의된 임계 값을 충족하거나 초과한다는 결정에 응답하여, QoS 관리자는 I/O 명령의 해제를 솔리드 스테이트 스토리지로 지연시킬 수 있다.
하나 이상의 구현들의 세부 사항들은 첨부 도면들 및 다음의 설명에서 서술된다. 다른 피처들 및 장점들은 상세한 설명, 도면들 및 청구 범위로부터 명백할 것이다.
솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS를 제공하는 하나 이상의 구현의 세부 사항은 첨부 도면들 및 아래의 상세한 설명에 기재되어 있다. 도면들에서, 참조 번호의 가장 왼쪽 자리는 참조 번호가 처음 나타나는 도면을 식별한다. 설명 및 도면들에서 상이한 경우들에서 동일한 참조 번호를 사용하는 것은 다음과 같은 요소들을 나타낸다:
도 1은 하나 이상의 양태들에 따른 솔리드 스테이트 스토리지를 위한 가상 인터페이스들이 구현되는 디바이스를 갖는 예시적인 운영 환경을 도시한다.
도 2는 도 1에 도시된 스토리지 미디어 스위치 및 솔리드 스테이트 드라이브들의 예시적인 구성들을 도시한다.
도 3은 하나 이상의 양태들에 따른 호스트 및 다수의 솔리드 스테이트 드라이브들과 관련된 스토리지 미디어 스위치의 예시적인 구성을 도시한다.
도 4는 하나 이상의 양태들에 따른 다양한 스토리지 미디어 스위치 큐들의 예시적인 구성들을 도시한다.
도 5는 하나 이상의 양태들에 따라 QoS를 구현하는데 유용한 QoS 파라미터들의 예시적인 구성을 도시한다.
도 6은 호스트 명령들을 스토리지 미디어의 가상 기능들에 자동으로 매핑하는 예시적인 방법을 도시한다.
도 7a는 스토리지 스위치의 가상 기능을 선택하기 위한 예시적인 방법을 도시한다.
도 7b는 본 발명의 하나 이상의 양태들에 따라 호스트 명령에 응답하기 위한 예시적인 방법을 도시한다.
도 8은 호스트 명령이 스토리지 미디어상의 가상 기능에 매핑될 때 호스트 명령의 어드레스 필드의 조작들을 나타내는 개념도이다.
도 9는 네임 스페이스를 통해 액세스되는 솔리드 스테이트 스토리지에 QoS를 제공하기 위한 예시적인 방법을 도시한다.
도 10은 네임 스페이스에 대한 대역폭 할당량에 기초하여 솔리드 스테이트 스토리지 디바이스에 I/O 명령들을 제출하기 위한 예시적인 방법을 도시한다.
도 11은 솔리드 스테이트 스토리지의 네임 스페이스를 통해 가상 머신에 의한 데이터 액세스를 관리하기 위한 예시적인 방법을 도시한다.
도 12는 솔리드 스테이트 스토리지 미디어를 위한 가상 인터페이스를 통해 QoS 양태들을 구현하기 위한 예시적인 SoC(System-on-Chip) 환경을 도시한다.
도 13은 솔리드 스테이트 스토리지 미디어를 위한 가상 인터페이스를 통해 QoS의 양태들을 구현하도록 구성된 예시적인 스토리지 미디어 스위치 컨트롤러를 도시한다.
스토리지 리소스들에 대한 액세스를 제공하기 위한 종래의 기술들은 종종 레거시 유형들의 스토리지(예를 들어, 회전 또는 광 매체), 스토리지 영역 네트워크, 또는 개별 스토리지 드라이브들을 위해 설계된 인터페이스 표준들에 의존한다. 그러나, 솔리드 스테이트 스토리지 아키텍처들이 발전함에 따라, 이러한 종래 기술들은 종종 솔리드 스테이트 미디어의 집합 또는 가상화된 스토리지 볼륨들로 확장될 때 제한되거나 부족하다. 예를 들어, 이전 세대의 서버들은 서버 클라이언트 소프트웨어와 인터페이스된 하이퍼바이저 또는 다른 소프트웨어 계층을 통해 스토리지 액세스를 제공하여 호스트를 떠나는 각 스토리지 요청의 다양한 파라미터들을 관리한다. 이러한 소프트웨어 층들은 종종 솔리드 스테이트 스토리지가 액세스되거나 어드레스될 수 있는 다운스트림 또는 디바이스 측 솔리드 스테이트 스토리지 미디어 컨트롤러들과 직접 통신할 수 없다. 또한, 이러한 레거시 소프트웨어 계층들은 가상화와 관련하여 어려움이 있을 수 있으며, 이는 솔리드 스테이트 스토리지에 대한 각 테넌트 액세스의 격리 또는 우선 순위 지정을 가능하게 한다. 따라서, 하이퍼바이저들 또는 다른 호스트 소프트웨어 계층들은 종종 각 클라이언트 또는 데이터 센터 또는 클라우드 시스템의 테넌트의 상이한 서비스 레벨 요구 사항들에 따라 스토리지 리소스들에 대한 각각의 액세스를 제공할 수 없다.
본 발명은 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS를 제공하기 위한 장치들 및 기술들을 서술한다. 호스트 소프트웨어가 스토리지 액세스 관리를 시도하는 기존 액세스 기술들과 달리, 서술된 장치들 및 기술들은 가상화된 솔리드 스테이트 스토리지의 대역폭 또는 가상화된 솔리드 스테이트 스토리지에 대한 액세스를 효율적으로 할당하기 위해 스토리지 미디어 스위치를 구현할 수 있다. 일반적으로, 스토리지 미디어 스위치에 의해 관리되는 스토리지로의 총 대역폭의 할당 또는 분배는 서비스 품질(QoS) 또는 스토리지 미디어 스위치에 의해 제공되는 스토리지 액세스의 관리된 성능으로서 제공될 수 있다. 즉, 스토리지 미디어 스위치는 미리 정의된 파라미터들에 기초하여 호스트, 호스트의 가상 머신, 또는 스토리지 미디어 스위치와 연결된 스토리지 네임 스페이스를 통해 소비되는 데이터의 양을 제어할 수 있다. 따라서, 본 명세서에 서술된 양태들은 호스트 또는 시스템 관리자가 그들의 요구되거나 예상되는 서비스 레벨들을 충족시키는 방식으로 클라이언트들 및 테넌트들에게 스토리지 액세스가 제공되도록 보장할 수 있다.
다양한 양태들에서, QoS는 비 휘발성 메모리 표현(NVMe)과 같은 스위치의 PCIe(Peripheral Component Interconnect Express) 인터페이스의 SR-IOV(Single-root-I/O Virtualization) 구현을 통해 스토리지 미디어 스위치에 의해 제공된다. 기본 레벨에서, SR-IOV를 통한 QoS는, 백엔드 솔리드 스테이트 스토리지(예를 들어, NVMe 솔리드 스테이트 드라이브(SSD))를 통해 스토리지 미디어 스위치에 이용 가능한 총 대역폭을 스토리지 미디어 스위치의 가상 기능들로 매핑된 호스트 가상 머신(VM)들에 분배하는 것에 기초할 수 있다.
예시적인 구현에서, 스토리지 미디어 스위치의 컨트롤러는 스위치의 호스트 인터페이스에 연결된 호스트에 단일 가상 디스크(VD)로서 스위치의 스토리지 인터페이스에 연결된 물리적 SSD들을 제공한다. 컨트롤러는 가상 디스크를 동일하거나 상이한 크기의 수평으로 스트리핑된 명명된 공간들과 같이 구성 가능한 수의 네임 스페이스들로 분할할 수 있다. 호스트의 VM과 관련된 각 NVMe 전송 및 완료 큐에는 이러한 네임 스페이스들 또는 가상 디스크 세그먼트들 중 하나에만 액세스할 수 있다. 이를 기초로, 호스트의 각 VM은 가입 정책(예를 들어, 데이터 액세스 파라미터들)에 기초하여 총 대역폭의 특정 부분에 할당될 수 있으며, 이는 스토리지 미디어 스위치의 QoS 관리자에 의해 조정된다.
예로서, 스토리지 미디어 스위치의 명령 분류기의 일부로서 구현되는 QoS 관리자를 고려한다. 스토리지 미디어 스위치의 인바운드 엔진은 페치된 요소들을 명령 분류기에 제출한다. 명령 분류기 또는 QoS 관리자는 미리 정의된 기간(예를 들어, 기간 또는 시간 간격) 동안 네임 스페이스 당 사용되는 대역폭을 지속적으로 추적한다. 명령을 수신하면, 명령 분류기는 명령 처리 동작들을 시작하고 그리고 대상 네임 스페이스의 대역폭 할당량을 초과했는지 또는 주제 명령으로 인해 대역폭 할당량이 초과되는지를 결정한다. 해당 네임 스페이스의 할당량을 초과한 경우, 이 네임 스페이스에 대한 이러한 명령 및 추가 명령은 스테이징 큐에 보관되고, 할당량을 초과하지 않으면, 이러한 명령 및 다른 명령이 네임 스페이스에 해당하는 솔리드 스테이트 디바이스의 제출 큐에 제출된다. 이것은 본 발명에 걸쳐 서술된 스토리지 미디어 스위치가 하나 이상의 양태들에 따라 제공할 수 있는 QoS의 많은 예들 중 하나일 뿐이다.
솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS를 제공하는 다양한 양태들에서, 스토리지 미디어 스위치는 호스트 디바이스로부터 데이터 액세스를 위한 입력/출력(I/O) 명령을 수신한다. 데이터 액세스를 위한 이 I/O 명령은 솔리드 스테이트 스토리지에 액세스할 수 있는 네임 스페이스와 연관된 가상 인터페이스의 식별자와 연관된다. 스토리지 미디어 스위치는 I/O 명령이 네임 스페이스를 통해 액세스할 데이터 양을 결정한다. 그 후, I/O 명령이 네임 스페이스를 통해 액세스할 데이터의 양이 해당 네임 스페이스를 통한 데이터 액세스에 대한 사전 정의된 임계 값을 초과하는지 여부가 결정된다. 데이터의 양이 사전 정의된 임계값을 초과하지 않는다는 결정에 응답하여, I/O 명령은 솔리드 스테이트 스토리지로 해제되어 데이터 액세스를 가능하게 한다. 대안적으로, 데이터의 양이 미리 정의된 임계 값을 만족하거나 초과한다는 결정에 응답하여, 스토리지 미디어 스위치는 다른 타이밍 윈도우가 시작되거나, 인바운드 큐가 비어있는 상태에 도달하거나, 또는 솔리드 스테이트 스토리지의 큐가 비어있는 상태에 도달할 때까지 I/O 명령의 해제를 지연시킨다. 그렇게 함으로써, 스위치는 솔리드 스테이트 스토리지의 네임 스페이스의 액세스 파라미터에 기초하여 가상으로 액세스된 솔리드 스테이트 스토리지에 대한 QoS를 제공할 수 있다.
다음의 논의는 운영 환경, 운영 환경에서 사용될 수 있는 기술, 및 운영 환경의 컴포넌트들이 구현될 수 있는 SoC(System on Chip)를 서술한다. 본 발명의 맥락에서, 단지 예로서 운영 환경이 참조된다.
운영 환경
도 1은 가상 인터페이스를 통한 가상 기능 지원 또는 QoS가 하나 이상의 양태들에 따라 구현될 수 있는 호스트 디바이스들(102)(단순하게 하나의 "호스트 디바이스(102)"로 지칭됨)을 갖는 예시적인 운영 환경(100)을 도시한다. 운영 환경 (100)의 호스트 디바이스(102)는 다양한 형태의 데이터, 파일들, 객체들 또는 정보를 저장 또는 액세스할 수 있다. 호스트 디바이스(102)의 예들은, 컴퓨팅 클러스터 (104)(예를 들어, 클라우드(106)의 컴퓨팅 클러스터), 데이터 센터(110)의 서버(108) 또는 서버 하드웨어, 또는 서버(예를 들어, 독립형)을 포함할 수 있고, 이들 중 일부는 스토리지 네트워크, 스토리지 서비스 또는 클라우드 시스템의 일부로서 구성될 수 있다. 호스트 디바이스들(102)(도시되지 않음)의 다른 예들은, 태블릿 컴퓨터, 셋톱 박스, 데이터 저장 장치, 웨어러블 스마트 디바이스, 텔레비전, 콘텐츠 스트리밍 디바이스, 고화질 멀티미디어 인터페이스(HDMI) 미디어 스틱, 스마트 기기, 홈 오토메이션 컨트롤러, 스마트 서모스탯, IoT(Internet-of-Things) 디바이스, 모바일 인터넷 디바이스(MID), NAS(Network-Attached Storage) 드라이브, 통합 스토리지 시스템, 서버 블레이드, 게임 콘솔, 자동차 엔터테인먼트 디바이스, 자동차 컴퓨팅 시스템, 자동차 제어 모듈(예를 들어, 엔진 또는 파워 트레인 제어 모듈) 등을 포함할 수 있다. 일반적으로, 호스트 디바이스(102)는, 특정 유형의 디바이스의 기능들을 가능하게 하고, 사용자 인터페이스를 제공하며, 네트워크 액세스를 가능하게 하고, 게임 애플리케이션들을 구현하고, 미디어를 재생하고, 네비게이션을 제공하고, 컨텐츠를 편집하고, 데이터 스토리지를 제공하는 것과 같은 임의의 적합한 목적을 위해 데이터를 통신하거나 저장할 수 있다.
호스트 디바이스(102)는 프로세서(114) 및 컴퓨터 판독가능 스토리지 미디어(116)를 포함한다. 프로세서(114)는 호스트 디바이스(102)의 운영 체제 또는 다른 프로그램들의 명령어들 또는 명령들을 실행하기 위해 단일 코어 또는 멀티 코어 중 임의의 적합한 유형 또는 개수의 프로세서들(예를 들어, x86 또는 ARM)로 구현될 수 있다. 컴퓨터 판독가능 매체(116)(CRM(116))는 호스트의 가상 머신들(120)이 실행될 수 있거나 구현될 수 있는 시스템 메모리(118)를 포함한다. 호스트 디바이스(102)의 시스템 메모리(118)는 휘발성 메모리 또는 비휘발성 메모리의 임의의 적합한 유형 또는 조합을 포함할 수 있다. 예를 들어, 호스트 디바이스들(102)의 휘발성 메모리는 다양한 유형들의 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 정적 RAM(SRAM) 등을 포함할 수 있다. 비휘발성 메모리는 ROM(read-only memory), EEPROM(electronically erasable programable ROM) 또는 플래시 메모리(예를 들어, NOR 플래시 또는 NAND 플래시)를 포함할 수 있다. 이들 메모리는, 개별적으로 또는 조합하여, 애플리케이션들, 테넌트들, 워크로드들, 개시자들, 가상 머신들 및/또는 호스트 디바이스(102)의 운영 시스템과 관련된 데이터를 저장할 수 있다.
이 예에서, 호스트 디바이스(102)는 스토리지 미디어 스위치(122) 및 스토리지 미디어(124)를 포함하고, 이들은 스토리지 미디어 스위치(122)를 통해 액세스될 수 있다. 호스트 디바이스(102)와 결합된 것으로 도시되어 있지만, 스토리지 미디어 스위치(122) 및/또는 스토리지 미디어(124)는 호스트 디바이스(102)와 별도로 또는 원격으로 구현될 수 있다. 호스트 디바이스(102)의 저장 미디어(124)는 스토리지 디바이스, 스토리지 드라이브, 스토리지 어레이, 스토리지 볼륨 등과 같은 임의의 적합한 유형의 데이터 스토리지 미디어로서 구성될 수 있다. 호스트 디바이스(102)를 참조하여 서술되었지만, 저장 미디어(124)는 또한 독립형 디바이스로서 또는 데이터 센터, 서버 팜 또는 가상화된 저장 시스템(예를 들어, 클라우드 기반 스토리지 또는 서비스들을 위한 가상화된 저장 시스템)과 같은 더 큰 스토리지 집합의 일부로서 개별적으로 구현될 수 있다. 스토리지 미디어(124)의 예는 하드 디스크 드라이브(HDD, 도시되지 않음), 광 디스크 드라이브(도시되지 않음), 솔리드 스테이트 드라이브(126)(SSD 126) 또는 m+1SSD들(126-0 내지 126-m)의 어레이를 포함한다.
SSD들(126) 각각은 호스트 디바이스(102) 또는 다른 소스들의 데이터 또는 정보가 저장되는 비휘발성 메모리 디바이스들을 포함하거나 또는 비휘발성 메모리로부터 형성된다. 비휘발성 메모리 디바이스들은 플래시, 낸드 플래시, 낸드 메모리, RAM, DRAM(예를 들어, 캐싱용), SRAM 등과 같은 임의의 유형 또는 솔리드-스테이트 메모리 미디어의 조합으로 구현될 수 있다. 일부 경우들에서, 비휘발성 메모리 디바이스들에 저장된 데이터는 SSD들(126)에 저장된 그리고 호스트 디바이스(102) 또는 호스트 디바이스의 테넌트들, 워크로드들 또는 개시자에 의해 액세스되는 데이터 파일들(예를 들어, 콘텐츠) 또는 데이터 객체들 구성될 수 있다. 파일들의 유형들, 크기들 또는 형식들은 파일과 관련된 각 소스, 사용 또는 애플리케이션에 따라 달라질 수 있다. 예를 들어, SSD들(126)에 저장된 파일들은 오디오 파일들, 비디오 파일들, 텍스트 파일들, 이미지 파일들, 멀티미디어 파일들, 스프레드 시트들 등을 포함할 수 있다.
이 예에서, 호스트 디바이스(102)의 스토리지 미디어 스위치(122)(스위치 (122))는 가상화를 지원하고, 가상 인터페이스를 통한 QoS를 제공하며, 스토리지 미디어(124)와 관련된 가상 기능들을 구현할 수 있다. 일부 양태들에서, 스토리지 미디어 스위치(122)는 가상 기능(VF) 어드레스 엔진(128), VF 맵핑들(130), QoS(Quality of Service) 관리자(132), 및 QoS 파라미터들(134)을 포함하고, 이들 각각은 가상화를 지원하고, QoS를 제공하며, 그리고 스토리지 미디어(124)와 관련된 가상 기능들을 가능하게 하기 위한 각각의 동작들 또는 기능들을 수행하도록 구현될 수 있다. 이들 엔티티들의 구현들 및 사용들은 다양하고 그리고 본 발명 전체에서 서술된다.
일반적으로, VF 어드레스 엔진(128)은 본질적으로 SR-IOV 가능하지 않은 스토리지 미디어 및 이미 가상 기능들을 지원하는 스토리지 미디어에 대한 가상 기능 지원을 가능하게 할 수 있다. VF 어드레스 엔진 (128)은 호스트 명령들을 처리하여 호스트 명령들을 적절한 가상 기능들에 자동으로 매핑한다. VF 어드레스 엔진(128)은 일부 예들에서 호스트 명령으로부터 가상 기능 식별자를 추출할 수 있다. 다른 예들에서, 스토리지 미디어(124)가 본질적으로 SR-IOV를 지원하는 경우, VF 어드레스 엔진(128)은 VF 맵핑들(130) 내에서 스토리지 미디어(124)와 연관된 라우팅 식별자를 검색함으로써 가상 기능 식별자를 결정할 수 있다. VF 맵핑들(130)을 사용하여, VF 어드레스 엔진(128)은 가상 기능 식별자와 관련된 가상 기능을 결정할 수 있다. 가상 기능 식별자를 이용하여, VF 어드레스 엔진(128)은 호스트 명령을 실행하기 위해 스토리지 미디어(124)의 가상 기능을 선택할 수 있다. 호스토 명령을 구현하기 위한 트랜잭션들을 실행하도록 스토리지 미디어(124)에 지시하는 것에 응답하여, VF 어드레스 엔진(128)은 호스트 인터페이스를 통해 호스트 명령에 응답할 수 있다.
다양한 양태들에서, QoS 관리자(132)는 호스트 명령들의 실행이 특정 애플리케이션, 클라이언트, 호스트, 호스트의 가상 머신, 호스트의 테넌트 등과 관련된 서비스 품질 레벨로 관리되는 것을 보장할 수 있다. 예를 들어, QoS 관리자(132)는 호스트 디바이스(102) 상에서 실행되는 가상 머신에 대한 QoS를 결정하고, 결정된 레벨 QoS를 달성하기 위해 호스트 디바이스(102)와 스토리지 미디어(124) 사이의 I/O 명령들 및 데이터 액세스 트랜잭션들을 보장할 수 있다. 대안적으로 또는 부가적으로, QoS 관리자(132)는 호스트 명령에 응답할 때 QoS 관리자(132)가 사용하는 QoS 파라미터들(134)의 값들을 측정하고 유지할 수 있다.
호스트 디비이스(102)는 또한 I/O 포트들(136), 그래픽 프로세싱 유닛(138)(GPU) 및 데이터 인터페이스들(140)을 포함할 수 있다. 일반적으로, I/O 포트들(136)은 호스트 디바이스(102)가 다른 장치, 주변 장치 또는 사용자와 상호 작용할 수 있게 한다. 예를 들어, I/O 포트들(136)은 범용 직렬 버스, 휴먼 인터페이스 디바이스들, 오디오 입력들, 오디오 출력들 등을 포함하거나 이와 연결될 수 있다. GPU(138)는 운영 체제, 애플리케이션들 등의 사용자 인터페이스 요소와 같은 호스트 디바이스(102)에 대한 그래픽 관련 데이터를 처리하고 렌더링한다. 일부 경우들에서, GPU(138)는 그래픽들을 렌더링하기 위해 로컬 메모리의 일부에 액세스하거나 호스트 디바이스(102)의 그래픽들(예를 들어, 비디오 RAM)을 렌더링하기 위한 전용 메모리를 포함한다.
호스트 디바이스(102)의 데이터 인터페이스들(140)은 하나 이상의 네트워크들 및 이들 네트워크들에 연결된 다른 디바이스들에 대한 연결성을 제공한다. 데이터 인터페이스들(140)은 로컬 네트워크, 인트라넷 또는 인터넷을 통해 통신하기 위한 이더넷 또는 광섬유 인터페이스들과 같은 유선 인터페이스들을 포함할 수 있다. 대안적으로 또는 부가적으로, 데이터 인터페이스들(140)은 무선 LAN들, 광역 무선 네트워크들(예를 들어, 셀룰러 네트워크들) 및/또는 무선 개인 영역 네트워크 (WPAN)들과 같은 무선 네트워크들을 통한 통신을 용이하게 하는 무선 인터페이스들을 포함할 수 있다. I/O 포트들(136) 또는 데이터 인터페이스들(140)을 통해 통신된 임의의 데이터는 본 발명의 하나 이상의 양태들에 따라 호스트 디바이스(102)의 스토리지 미디어(124)에 기록되거나 스토리지 미디어(124)로부터 판독될 수 있다.
데이터 인터페이스(140)는 스토리지 미디어 스위치(122)의 호스트 인터페이스 및 스토리지 미디어 스위치(122)의 스토리지 미디어 인터페이스를 지원할 수 있다. 예를 들어, 스토리지 미디어 스위치(122)는 호스트 명령들을 수신하고 그리고 호스트 인터페이스로부터의 호스트 명령들에 응답할 수 있다. 스토리지 미디어 스위치(122)는 스토리지 미디어(124)가 호스트 명령들을 실행하도록 스토리지 미디어 인터페이스를 통한 트랜잭션들을 지시할 수 있다.
도 2는 도 1에 도시된 스토리지 미디어 스위치(122) 및 SSD들(126)의 예시적인 구성을 도시한다. 이 예에서, 스토리지 미디어 스위치(122)는 가상화 영역들, 파티션들 또는 스토리지 세그먼트들(예를 들어, 격리된 스토리지의 영역들)이 제공되는 SSD들(126-0 내지 126-n)(통칭하여 "SSD들(126)")과 호스트(202) 사이에서 동작 가능하게 연결된다. 스토리지 미디어 스위치는 NVMe 프로토콜(예를 들어, NVMe rev 1.3)에 따라 통신할 수 있는 하나 이상의 각각의 PCIe 인터페이스들(도시되지 않음)를 통해 호스트(202) 및/또는 SSD들에 연결될 수 있다. 이 예에서, 호스트 (202)(예를 들어, 호스트 디바이스(102))는 호스트의 컴퓨팅 리소스들(204) 상에서 실행되는 다수의 가상 머신들(120)을 포함한다. 일반적으로, 호스트(202)의 컴퓨팅 리소스들(204)는 호스트(202)와 관련된 스토리지에 액세스하는 애플리케이션들, 가상 머신들, 테넌트들 또는 개시자들을 구현하는데 사용되는 프로세싱 리소스들 및 호스트(202)의 시스템 메모리의 조합들을 포함할 수 있다.
스토리지 미디어 스위치(122)는 하나 이상의 양태들에 따라 스토리지 미디어 상의 가상 기능들을 가능하게 하고 그리고/또는 솔리드 스테이트 스토리지를 위한 가상 기능들에 대한 QoS를 제공할 수 있다. 이 예에서, 스토리지 미디어 스위치(122) 또는 스토리지 미디어 스위치의 컨트롤러(도시되지 않음)는 VF들(206-0 내지 206-w)(통칭하여 "가상 기능들(206)")을 통해 스위치와 연관된 스토리지 미디어에 대한 액세스를 가능하게 한다. 일반적으로, 가상 기능들(206)은 주로 호스트(202)의 VM들(120)과 SSD들(126)에 의해 제공된 스토리지 사이의 데이터 이동에 초점을 맞추고 그리고 각각 물리적 기능(208)과 관련된다. 물리적 기능(208)의 하나의 예가 도시되어 있지만, 스토리지 미디어 스위치(122)는 임의의 수의 물리적 기능들 및 가상 기능들 및/또는 물리적 기능들 및 가상 기능들의 조합으로 구현될 수 있다. 도 2의 물리적 기능(208)은 전형적인 PCIe 물리적 기능 디바이스의 PCI 하나 이상의 기능들과 동등할 수 있다. 일부 경우들에서, 물리적 기능(208)은, 네트워킹의 경우 VM들(120)에 의해 사용되는 링크 속도 또는 네트워크 주소와 같은 정책 결정과 관련된 중재, 및 스토리지 미디어 스위치(122)와 VM들(120) 및 SSD들(126) 사이의 다양한 입력 및 출력 트랜잭션들을 처리하는 것을 담당한다.
일반적으로, VM들(120)의 테넌트들 또는 개시자들, 또는 호스트(202)는 SSD들(126)에 저장된 데이터에 액세스한다. 일부 구현들에서, 스토리지 미디어 스위치(122)는 SSD들(126)와 같은 집합 스토리지 미디어를 가상 디스크 또는 스토리지 볼륨으로서 호스트(202) 또는 호스트의 VM들(120)에 제공한다. NVMe와 관련하여, 이 가상 디스크는 네임 스페이스를 통해 액세스되는 사잉한 영역들로 분할되거나 나눠질 수 있다. 즉, 가상 디스크 또는 SSD들(126)에 대한 데이터 액세스는 가상 디스크 또는 스토리지 미디어의 세그먼트들 또는 스트라이프들에 대응하는 하나 이상의 네임 스페이스들을 통해 소비될 수 있다. 도 2에 도시된 바와 같이, SSD 들(126) 각각은 NAND 채널들(212-1 내지 212-4)에 액세스할 수 있는 SSD 컨트롤러(210-0 내지 210-n)로 구현될 수 있다. NAND의 각 채널(212)(예를 들어, 채널 A 또는 NAND 채널(212))은 다수의 NAND 디바이스들을 포함하며, 이는 각각의 NAND 채널을 통해 액세스 가능하거나 어드레스 가능한 SSD(126)의 개별 NAND 디바이스들 또는 NAND 다이들로서 구현될 수 있다.
일부 양태들에서, 스토리지 미디어 스위치(122)는 가상 기능들(206)에 대한 액세스를 관리한다. 예를 들어, 스토리지 미디어 스위치(122)는 SSD들(126)과 호스트 메모리 사이의 데이터 액세스를 용이하게 하는 것과 같이 호스트 명령을 포함하는 정보를 호스트(202)와 교환할 수 있다. 일부 경우들에서, 스토리지 미디어 스위치(122)는 호스트 명령들과 관련된 가상 기능 식별자들을 결정하고, 그리고 가상 기능 식별자들에 기초하여 가상 기능들(206)을 자동으로 선택한다. 대안적으로, 스위치는, 예를 들어, SSD들(126)의 요청 식별자를 구동하기 위해 가상 기능(206)을 매칭시킴으로써 호스트 명령들에 지정된 가상 기능들(206)에 기초하여 가상 기능들(206)을 선택한다.
저장 매체 스위치(122) 또는 스위치(122)의 프로세서(도시되지 않음)는 가상 기능들(206)의 호스트 명령들을 실행할 수도 있고, 그리고 실행 후에, 각각의 호스트 명령들에 응답할 수도 있다. 이러한 방식으로 가상 기능들(206)을 자동으로 매핑함으로써, 스토리지 미디어 스위치(122)는 가상 기능들 또는 SR-IOV 기반 특징들에 대한 고유한 지원이 결여된 SSD들(126)을 포함하여 임의의 SSD들(126) 상에서 또는 SSD들(126)에 대해 SR-IOV를 가능하게 한다.
도 3은 일반적으로 300에서 호스트 및 다수의 솔리드 스테이트 드라이브와 관련된 스토리지 미디어 스위치(122)(스위치(122))의 예시적인 구성을 도시하고, 이는 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS를 제공하는 하나 이상의 양태들에 따라 구현된다. 이 예에서, 스위치(122)는, 호스트(202)(도시되지 않음)와 8개의 수평 스트라이프 네임 스페이스들(NS0 내지 NS31)로 각각 분할된 SSD들(126)의 어레이 사이에서 동작 가능하게 연결된다. SSD들(126) 각각은 x4, x8 또는 x16 PCIe 인터페이스를 통해 구현된 NVMe 인터페이스와 같은 NVMe 인터페이스를 통해 스위치(122)에 연결될 수 있다. 대안적으로 또는 추가적으로, 호스트(202)는 스위치(122)를 통해 SSD들(126) 또는 다른 스토리지로의 데이터 트랜잭션을 가능하게 하기 위해 NVMe 인터페이스에 의해 스위치에 연결될 수 있다.
일반적으로, NVMe 사양 또는 프로토콜은 이 예에서 스토리지 미디어 또는 SSD들의 네임 스페이스 기반 액세스를 지원한다. QoS를 제공하는 양태들에서, 스위치(122)의 가상 기능은 가상 디스크의 세그먼트 또는 파티션을 위한 네임 스페이스에 매핑된다. 그렇게 함으로써, 네임 스페이스를 사용하여 QoS를 활성화하고 관리할 수 있으며, VM들 또는 테넌트들은 스토리지 미디어의 네임 스페이스 기반 액세스를 통해 관리되는 스토리지 액세스를 위한 서비스 레벨에 가입할 수 있다. 즉, 클라이언트 또는 고객은 미리 정의된 양의 대역폭에 가입하고 그리고 호스트 상의 가상 기능에 연결되거나 또는 호스트에 의해 가상 기능에 연결된다. 스위치(122) 내의 네임 스페이스에 매핑되는 이 가상 기능은, 예를 들어, 특정 서비스 레벨에서 데이터 액세스에 대한 가입에 따라, 네임 스페이스에 할당된 임계값 또는 할당량에 기초하여 스토리지 미디어에 대한 액세스 또는 할당된 대역폭이다. 스위치(122)의 NVMe 서브 시스템 내에서, PCIe에 대한 SR-IOV를 통해 제공되는 가상 기능들의 사용을 통해 다수의 격리된 도메인들이 지원될 수 있다. 이렇게 하면, 호스트의 관리자가 테넌트들을 상이한 주소 도메인들(예를 들어, VM들)에 연결할 수 있고, 그리고 스토리지에 대한 격리되고 그리고 명백한 액세스를 제공하며, 이러한 스토리지의 액세스 및 소비는 네임 스페이스들의 형식을 통해 이뤄어진다.
도 3으로 돌아가면, 호스트(202)는 각각의 NVMe 명령 큐에 액세스하는 임의의 적절한 수의 가상 머신들 또는 테넌트를 갖는 다중 테넌트 호스트로서 구현될 수 있다. 이 예에서, 호스트(202)는 스위치(122)의 각각의 가상 기능들(304)(VF0-VF31, VF 304-0 내지 VF 304로 그룹화 됨)에 매핑되는 NVMe 큐들(302-0 내지 302-31)의 세트들을 각각 갖는 32개의 VM들(미도시)을 포함한다. 이들 NVMe 큐들(302-0 내지 302-31)은 호스트 메모리에서 구현될 수 있고 그리고 호스트에 의해 임의의 적절한 수의 관리 큐들(관리 큐들) 또는 I/O 명령 큐들이 되도록 구성될 수 있다. 여기에서, 각 VM에는 4개의 큐들이 할당되며, 이중 하나는 관리 큐로 구성되고, 3 개는 I/O 명령 큐들로 구성된다.
일부 양태들에서, 스위치(122)의 하드웨어 계층의 인바운드 및 아웃 바운드 큐 엔진들은, 최대 128개의 NVMe 호스트 제출 큐들(SQ) 및 호스트 완료(CQ) 큐 쌍들을 지원할 수 있다. 이러한 큐들 각각은 스토리지 미디어 스위치(122)에 의해 제공되는 임의의 PCIe 물리적 기능들 또는 가상 기능들에 개별적으로 매핑될 수 있다. VM들을 구현하는 호스트 디바이스 또는 서버는 각각의 호스트 VM을 스위치 (122)내의 각각의 VF(304)에 연관시킬 수 있다. VM은 VM과 연관된 NVMe 큐들을 스위치(122) 내의 각각의 VF(304)에 매핑할 수 있고 그리고/또는 NVMe 큐를 스위치(122)에 의해 제공되는 SQ 또는 CQ 큐들 중 임의의 것에 바인딩할 수 있다. 즉, 호스트(예를 들어, 서버) 상에서 실행되는 VM 관리자는 각각의 호스트 VM을 각각의 VF와 연관시킬 수 있다. 그 후, VM 자체는 그 공간의 NVMe 큐들을 그 VF와 매핑할 수 있고, 이에 의해 NVMe 큐가 스위치(122)에 의해 제공되는 임의의 SQ들 또는 CQ들에 바인딩되게 한다.
우선 순위와 관련하여, VM 내의 제출 큐들은 큐마다 기초하여 이용 가능하거나 구성 가능한 NVMe 기반 중재 정책(고정 또는 가중치 라운드 로빈)을 통해 동일하거나 더 높거나 또는 더 낮은 우선 순위로 할당될 수 있다. 이는 하나 이상의 VM이 여러 제출 큐들 중 서로 다른 VM을 사용하여 특정 애플리케이션들 또는 작업 부하들과 관련된 특정 명령들의 우선 순위를 지정할 때 유용할 수 있다. 이 구성에서 VF 작업들에 대한 오류들 및 예외들도 VF 기반 별로 분리되어 검출된다. 따라서, 스위치(122)의 하나의 VF에서 발생하는 에러들은 스위치의 다른 VF들의 I/O 명령 흐름을 방해하지 않는다. 대안적으로 또는 부가적으로, 기능 레벨 리셋들 등과 같은 특정 VF들에 대한 상태들의 선택적 리셋들이 가능하다.
명령 흐름을 참조하여, 스위치(122)에 대한 이 예시적인 구현에서 VF(304) 마다 4개의 범용 명령 전달(UCD) 인바운드 큐가 맵핑된다. 대안적으로, 스위치(122)의 아키텍처는 VF들의 총 큐 분배가 스위치(122)에 의해 지원되는 총 큐 수(예를 들어, 128 큐들)을 초과하지 않는 한 VF 당 더 많거나 더 적은 수의 큐들을 할당할 수있는 유연성을 갖는다. 일반적으로, 호스트 VM들은 관리 명령들 또는 I/O 명령들을 각 제출 큐(SQ)들에 제출하고 해당 큐에 해당하는 UCD 도어벨을 울릴 것이다. 범용 명령 전달 블록(UCD 블록(306))은, 도어벨에 응답하여, 스위치(122)의 미리 구성된 중재 방식에 기초하여 SQ 요소들을 페치할 수 있다. 예를 들어, 모든 I/O SQ들이 동일한 우선 순위로 설정되면, UCD 블록(306)은 이러한 인바운드 큐들을 라운드 로빈 방식으로 서비스할 것이다. UCD 블록(306) 또는 UCD 인바운드 큐로부터, 스위치(122)는 페치된 요소들(예를 들어, 관리자 또는 I/O 명령)을 명령 분류기 프로세서(CCP 또는 명령 프로세서(308))에 제출한다. 페치된 요소들은, 명령 프로세서(308)를 포함하거나 명령 프로세서(308)와 연관된 명령 프로세싱 서브시스템(312)(서브 시스템(312))의 I/O 큐 블록(310)의 목적지 자유 리스트(DFL)를 사용하여 제출될 수 있다. 일반적으로, UCD 블록(306)은 I/O 명령들(314) 및 관리 명령들(316)을 서브 시스템(312)의 대응하는 큐들 또는 블록들로 분류 및 분배할 것이고, 이 예에서는, 또한 관리 큐 블록(318) 및 물리 영역 페이지(PRP) 리스트 작업 큐 블록(320)을 포함한다.
예로서, 명령 처리 서브시스템(312)의 예시적인 구성이 일반적으로 400으로 도시된 도 4를 고려한다. 여기서, UCD 블록(306)은 페치되고 있는 큐에 할당된 목적지 자유 리스트(DFL)를 사용하여 명령 프로세서(308)에 명령들을 제출할 수 있다. DFL은 큐에 할당된 중재 우선 순위에 기초하여 명령 프로세서(308)에 대한 인바운드 완료 큐 요소(IB_CQ)를 생성한다. 일반적으로, 명령 프로세서(308) 또는 QoS 관리자(132)는 새로운 요소들에 대한 인바운드 완료 큐를 모니터링하고, 그리고 요소를 수신하면 명령 처리 동작들을 시작한다.
일부 양태들에서, PRP 리스트 작업 큐는 스위치(122)의 VF들(304)을 통한 액세스를 가능하게 한다. 예를 들어, VF들은 스위치(122) 내에서의 적절한 라우팅을 위해 프로세서 또는 VF 어드레스 엔진에 의해 삽입된 가상 함수(VF) 식별자를 상위 주소 비트들 내에 포함하는 PRP 데이터 포인터들을 사용할 수 있다. 명령 라우팅과 관련하여, 물리 영역 페이지(PRP) 리스트 페치(예를 들어, 8Kb 미만의 I/O 명령들)를 포함하지 않거나 의존하지 않는 I/O 명령은 명령 프로세서(308)에 의해 처리될 것이고, 따라서, 따라서 I/O 명령에 내장된 PRP 데이터 포인터들은 SSD 디바이스 큐에 제출하기 전에 처리될 수 있다. 대안적으로, PRP 리스트 페치를 포함하거나 의존하는 I/O 명령(예를 들어, 8Kb보다 큰 I/O 명령)은, PRP 리스트 작업 큐를 통해, 관리 및 실행 프로세서(322)(MEP 또는 관리 프로세서(322))로 라우팅되어, SSD 디바이스 큐에 명령을 제출하기 전에 PRP 리스트가 처리될 수 있다.
QoS를 제공하는 일부 양태들에서, 명령 프로세서(308) 또는 QoS 관리자(132)의 펌웨어는 미리 정의된 기간동안 네임 스페이스당 사용된 대역폭을 추적한다. 일부 경우들에서, QoS 관리자(132)는 명령이 명령 프로세서(308)에 의해 처리될 때 네임 스페이스마다 I/O 당 논리 블록 어드레스(LBA) 카운트를 추가한다. LBA 수가 특정 네임 스페이스에 대해 사전 정의된 임계값 또는 할당량을 초과하면, 해당 네임 스페이스에 대한 추가 명령들은 각 네임 스페이스에 대한 각 스테이징 큐(NSm_STAGE_Q)에서 지연되거나 보류된다.
적어도 일정 시간 지연된 후, 스테이징 큐에 저장된 명령들은 SSD 디바이스 제출 큐(DEVn_SQ)로의 제출을 위해 재평가될 것이다. 경우에 따라, 네임 스페이스 큐를 서비스하거나 인바운드 명령 요소들을 페치하기 위해 새로운 타이밍 위도우가 시작되면 명령들이 재평가된다. 대안으로, 재평가는, 명령 프로세서에 대한 인바운드 큐(IBn_CQ) 또는 비어있는 상태에 도달하는 디바이스 제출 큐(DEVn_SQ)에 응답하여 개시될 것이다. 일부 경우들에서, 전자는 현재 타이밍 윈도우 동안, 평가를 필요로하는 UCD 블록(306)에 의해 페치된 새로운 요소들이 없다는 표시이다.
I/O 명령들 또는 요소들을 스토리지 디바이스의 제출 큐로 해제 또는 제출하기 위해, 명령 프로세서(308)는 다음 순서: 디바이스 제출 큐(DEVn_SQ)에 해당하는 네임 스페이스 준비 큐(NSm_STAGE_Q), 그 다음에 관리 프로세서(322)의 완료 큐 (MEP_CQ), 그리고 마지막으로 I/O 큐 블록 또는 DFL 큐들의 인바운드 완료 큐 (IBn_CQ)의 순서로 다양한 작업 큐들을 평가해야 한다. 이 순서의 큐 우선순위는 필요에 따라 또는 스위치(122)를 통해 QoS를 제공하는 대안적인 구현들을 지원하기 위해 명령 프로세서(308)에 의해 재구성될 수 있다.
도 5는 하나 이상의 양태들에 따라 QoS를 구현하는데 유용한 QoS 파라미터들 (134)의 500개의 예시적인 구성들을 도시한다. 이 예에서, QoS 파라미터(134)는 네임 스페이스들(502-0 내지 502-31)를 참조하여 구성되며, 이는 도 3에서 참조된 SSD들(126)에 대한 스트라이프 네임 스페이스에 대응할 수 있다. 일반적으로, QoS 파라미터들(134)은 데이터 량 및 지속 시간과 같은 네임 스페이스에 제공되는 액세스 대역폭을 정의하거나 정량화하는데 유용한 값을 포함한다. 이 예에서, QoS 파라미터들(134)은 LBA 카운트(504), 타임 스탬프(506) 및 호스트 제출 큐 소비자 인덱스(508)를 포함한다. 대안적으로 또는 추가적으로, QoS 파라미터들은, I/O 명령의 물리적 영역 페이지(PRP) 목록(예를 들어, 여러 LBA들 또는 IOP들의 경우), I/O 명령의 분산 수집 목록(예를 들어, 여러 LBA들 또는 IOP들의 경우), I/O 명령과 관련된 여러 I/O 동작들 또는 I/O 명령의 논리 블록 주소(LBA) 수를 포함하거나 또는 참조할 수 있다.
가상 인터페이스를 통해 QoS를 제공하기 위한 기술
다음은 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS를 제공하는 기술에 대한 설명으로서, 이 기술은 스토리지 격리, 대역폭 제어 및 파티션 기능들을 호스트, 테넌트들 또는 호스트에서 실행되는 VM들에 제공할 수 있다. 이들 기술들은 VF 어드레스 엔진(128), VF 매핑들(130), QoS 관리자(132), 또는 QoS 파라미터들(134)과 같은 본 명세서에 서술된 임의의 환경들 및 엔티티들을 사용하여 구현될 수 있다. 이들 기술은 도 6, 도 7a 및 7b 및/또는 도 9 내지 도 11에 도시된 방법들을 포함하고, 이들 각각은 하나 이상의 엔티티들에 의해 수행되는 동작들의 세트로서 도시된다.
이들 방법들은 반드시 관련 도면들에 도시된 동작들의 순서로 제한되는 것은 아니다. 오히려, 본 명세서에 서술된 다양한 양태들을 구현하기 위해 임의의 동작들이 반복, 스킵, 대체 또는 재정렬될 수 있다. 또한, 이들 방법은 동일한 엔티티, 별개의 엔티티, 또는 이들의 임의의 조합에 의해 수행되는지에 상관없이, 전체적으로 또는 부분적으로 서로와 함께 사용될 수 있다. 예를 들어, 스토리지 미디어의 가상화된 격리 영역들을 노출하면서 호스트 상호 작용이나 개입없이 웨어 레벨링,로드 밸런싱 또는 데이터 마이그레이션을 투명하게 제공하기 위해 이 방법들은 결합될 수 있다. 다음의 논의의 일부들에서, 예로서, 도 1의 운영 환경(100) 및 도 2, 도 3 ,도 4 및/또는 도 5의 엔티티들이 참조될 것이다. 이러한 참조는 서술된 양태들을 운영 환경(100), 엔티티들 또는 구성들로 제한하는 것이 아니라 다양한 예들 중 하나를 예시하는 것으로 간주되어야 한다. 대안적으로 또는 추가적으로, 방법들의 동작들은 또한 도 12의 시스템-온-칩 및/또는 도 13의 스토리지 미디어 스위치 컨트롤러를 참조하여 서술된 엔티티들에 의해 또는 엔티티들로 구현될 수 있다.
도 6은 호스트 명령들을 스토리지 미디어 상의 가상 기능들에 자동 맵핑하기 위한 예시적인 방법(600)을 도시한다. 방법(600)의 동작들은 VF 어드레스 엔진(128)을 포함하고 VF 맵핑들(130)을 사용하여 스토리지 미디어 스위치(122)에 의해 또는 스토리지 미디어 스위치(122)로 수행될 수 있다.
602에서, 스토리지 미디어 스위치(122)는, 스토리지 미디어 스위치(122)의 호스트 인터페이스를 통해, 호스트로부터 호스트 명령을 수신한다. 예를 들어, 스토리지 미디어 스위치(122)의 VF 어드레스 엔진(128)은 가상 머신 VM-0에서 실행되는 호스트 소프트웨어 애플리케이션으로부터 획득된 새로운 호스트 명령의 표시를 수신할 수 있다.
604에서, 호스트 명령의 수신에 응답하여, 스토리지 미디어 스위치(122)는 호스트 명령과 관련된 가상 기능 식별자를 결정한다. 예를 들어, 호스트 명령의 가상 주소 필드의 미사용 부분은 가상 어드레스 필드 내에 포함된 어드레스의 부호 확장된 정식 부분으로 채워질 수 있다. 어드레스 필드의 사용되지 않은 부분 전체를 어드레스의 부호 확장된 정식 부분으로 취급하지 않고, 스토리지 미디어 스위치(122)는 가상 어드레스 필드의 미사용 부분으로부터 가상 기능 식별자를 추론하고 그리고 가상 기능 식별자를 사용하여 호스트 명령이 적절한 가상 기능에 의해 이행되도록 라우팅할 수 있다.
일 예로서, 가상 어드레스 필드의 일부, 예를 들어, 비트들 [48:0] 만이 호스트 명령의 가상 어스레스로서 사용될 수 있지만, 호스트 명령은 64 비트 가상 어드레스 필드, 예를 들어, 비트들 [63:0]를 포함할 수 있다. 가상 어드레스 필드의 일부는 호스트 명령을 어드레스하기 위해 스토리지 미디어 스위치(122)에 의해 사용되지 않을 수 있기 때문에, 가상 어드레스 필드의 미사용 부분, 예를 들어, 비트들 [63:49]는 스토리지 미디어 스위치(122)가 호스트 명령을 실행하기 위해 사용할 수 있는 가상 기능 식별자와 같은 호스트 명령과 관련된 다른 정보를 포함할 수 있다.
가상 어드레스 필드의 미사용 부분 중 일부는 가상 기능 식별자를 포함할 수 있다. 스토리지 미디어 스위치(122)는 호스트 명령 내에 포함된 가상 어드레스 필드의 제1 미사용 부분으로부터 호스트 명령과 관련된 가상 기능 식별자를 추출할 수 있다. 예를 들어, 비트들 [62:58]는 저장 미디어 스위치(122)가 명령과 관련된 특정 가상 기능을 식별하기 위해 사용하는 가상 기능 식별자를 포함할 수 있다.
606에서, 스토리지 미디어 스위치(122)는 가상 기능 식별자에 기초하여 호스트 명령을 실행하기 위해 스토리지 미디어(124)의 가상 기능을 선택한다. 예를 들어, VF 주소 엔진(128)은 호스트 식별자를 결정하기 위해 호스트 명령의 주소 필드의 태그된 부분들을 더 분리할 수 있다. 즉, 가상 어드레스 필드의 미사용 부분 중 일부는 호스트 식별자를 포함할 수 있고 그리고 스토리지 미디어 스위치(122)는 호스트 명령 내에 포함된 가상 어드레스 필드의 제2 미사용 부분으로부터 호스트 명령과 관련된 호스트 식별자를 추출할 수 있다. 예를 들어, 비트 [63]은, 스토리지 미디어 스위치(122)가 명령과 관련된 특정 호스트를 식별하기 위해 사용하는 호스트 식별자를 포함할 수 있다.
VF 맵핑들(130)은 가상 기능 식별자들과 각각의 가상 기능들 및 각각의 호스트들 사이의 연관들 또는 맵핑들을 유지한다. 예를 들어, VF 맵핑들(130)은 호스트 식별자들과 가상 기능 식별자들 사이의 호스트들 및 가상 기능들에 대한 맵핑을 유지할 수 있다. 호스트 명령 내에 포함된 가상 어드레스의 사용되지 않은 부분으로부터 또는 호스트 명령 내에 포함된 가상 어드레스의 부호 확장된 정식 부분으로부터 가상 기능 식별자 및 호스트 식별자를 결정하는 VF 주소 엔진(128)은, VF 맵핑들(130)을 사용하여 대응하는 가상 기능을 검색하기 위해 가상 기능 식별자 및 호스트 식별자를 사용한다.
VF 어드레스 엔진(128)은 VF 맵핑들(130)로부터 특정 호스트 식별자(예를 들어, 비트[63])를 조회하여 어느 호스트가 특정 호스트 식별자와 관련되는지를 판정할 수 있고, 그 결과, 어느 호스트가 호스트 명령의 시작자인지를 결정한다. VF 어드레스 엔진(128)은 VF 맵핑들(130)을 검색하여 특정 가상 기능 식별자(예를 들어, 비트들 [62:58])와 일치하는 호스트 명령에 대한 가상 기능을 결정할 수 있다.
608에서, 스토리지 미디어 스위치(122)는 스토리지 미디어(124)에 할당된 가상 기능을 사용하여 호스트 명령을 실행한다. 예를 들어, 호스트 식별자와 가상 기능 식별자를 사용하면, VF 어드레스 엔진(128)은 스토리지 미디어 스위치(122)의 스토리지 미디어 인터페이스에서 호스트 명령을 의도된 가상 기능으로 라우팅하기 위해 내부 인터페이스 선택 값을 생성한다. 스토리지 미디어 스위치(122)는 인터페이스 선택 값을 사용하여 최종적으로 라우팅하고 그리고 스토리지 미디어(124)가 호스트 명령을 만족시키기 위해 판독/기록 트랜잭션들을 실행하도록 할 수 있다.
610에서, 스토리지 미디어(124)에 할당된 가상 기능을 사용하여 호스트 명령을 만족시키기 위한 트랜잭션들을 실행하는 것에 응답하여, 스토리지 미디어 스위치(122)는 호스트 인터페이스를 통해 호스트 명령에 응답한다. 예를 들어, 스토리지 미디어(124)가 호스트 명령을 만족시키기 위해 트랜잭션들을 실행하도록 지시하는 것에 응답하여, 스토리지 미디어 스위치(122)는 호스트 명령에 대한 원래의 어드레스를 결정함으로써 호스트 명령에 대한 응답을 준비한다. VF 어드레스 엔진(128)은 호스트 명령에 대한 원래 어드레스를 결정하기 위해 내부 라우팅 어드레스의 일부만을 (예를 들어, 인터페이스 선택 값 없이) 사용할 수 있다. VF 어드레스 엔진(128)은 라우팅 어드레스로부터 인터페이스 선택 값을 포함하는 비트들을 제거하고 나머지 비트들을 원래 어드레스로서 사용할 수 있다. 예를 들어, 원래 어드레스는 원래 가상 어드레스의 비트들 [48:0]에 대응하는 비트들 [48:0] 및 호스트 선호 미리정의된 값 또는 원래의 가상 어드레스의 정식 부호 확장 값에 대응하는 비트들 [63:49]을 갖는 비트들 [63:0]을 포함할 수 있다.
스토리지 미디어 스위치(122)는 가상 기능 태깅 없이 호스트 명령이 원래의 어드레스를 사용하여 호스트 인터페이스를 종료하게 한다. 즉, 상기 동작들은 스토리지 미디어 스위치(122)가 호스트 명령과 연관된 원래의 어드레스를 결정하여 호스트에 응답할 수 있음을 보여준다. 스토리지 미디어 스위치(122)는, 호스트 명령 내에 포함된 가상 어드레스에 태그된 가상 기능 식별자를 제거하고, 가상 함수 식별자를 호스트 선호 사전 정의 값 또는 나머지 가상 어드레스의 부호 확장된 정식 부분으로 대체함으로써 원래 어드레스를 결정한다.
도 7a는, 호스트 명령 내에 인코딩된 가상 기능 식별자에 기초하여, 호스트 명령을 실행하기 위해 스토리지 미디어의 가상 기능을 선택하는 예시적인 방법 (700A)을 도시한다. 방법(700A)은, 호스트 명령들을 스토리지 상의 가상 기능들에 자동으로 매핑하기 위한 방법(600)으로부터 단계(606)를 실행할 때 스토리지 미디어 스위치(122)에 의해 수행되는 동작들의 예이다. 방법(700A)의 동작들은, VF 어드레스 엔진(128)을 포함하고 그리고 VF 맵핑들(130)을 사용하여 스토리지 미디어 스위치(122)에 의해 또는 스토리지 미디어 스위치(122)로 수행될 수 있다.
606에서, 스토리지 미디어 스위치(122)는, 가상 기능 식별자에 기초하여, 호스트 명령을 실행하기 위한 스토리지 미디어(124)의 가상 기능을 선택한다. 예를 들어, VF 어드레스 엔진(128)은 호스트 식별자 및 가상 기능 식별자를 결정하기 위해 호스트 명령의 어드레스 필드의 태그된 부분들을 분리 할 수 있다.
702에서, 스토리지 미디어 스위치(122)는, 호스트 명령과 관련된 가상 기능 식별자에 기초하여 호스트를 식별한다. VF 맵핑들(130)은 가상 기능 식별자들과 각각의 가상 기능들 및 각각의 호스트들 간의 연관 또는 맵핑을 유지한다. 예를 들어, VF 맵핑들(130)은 호스트 식별자들과 가상 기능 식별자들 사이의 맵핑들을 호스트 및 가상 기능에 대해 유지할 수 있다. VF 어드레스 엔진(128)은 호스트 명령 내에 포함된 가상 어드레스의 미사용 부분으로부터 가상 기능 식별자 및 호스트 식별자를 결정할 수 있다. VF 어드레스 엔진(128)은 호스트 명령 내에 포함된 가상 어드레스의 부호 확장된 정식 부분으로부터 가상 기능 식별자 및 호스트 식별자를 결정할 수 있다.
예를 들어, VF 어드레스 엔진(128)은 VF 맵핑들(130)로부터 특정 호스트 식별자(예를 들어, 호스트 명령의 어드레스 필드의 비트[63])를 검색할 수 있어 가상 머신 VM-0에서 실행되는 소프트웨어 애플리케이션이 특정 호스트 식별자와 연관된 호스트이고 따라서 호스트 명령의 발신자인 것으로 결정한다. VF 어드레스 엔진(128)은 VF 맵핑들(130)을 검색하여 특정 가상 기능 식별자 (예를 들어, 호스트 명령의 어드레스 필드의 비트들 [62:58])와 매칭하는 호스트 명령에 대한 가상 기능을 결정할 수 있다.
704에서, 스토리지 미디어 스위치(122)는, 호스트 및 가상 기능 식별자에 기초하여, 호스트 명령을 실행하기 위해 스토리지 미디어 스위치(122)의 스토리지 미디어 인터페이스에 할당된 가상 기능을 선택한다. 예를 들어, 호스트 식별자 및 가상 기능 식별자를 VF 맵핑들(130)에 입력함으로써, VF 어드레스 엔진(128)은 적절한 가상 기능을 관여시키도록 사용하기 위해 미리 정의된 내부 인터페이스 라우팅 값을 획득할 수 있다.
706에서, 스토리지 미디어 스위치(122)는 호스트 명령 내에 포함된 데이터 위치 주소를 수정함으로써 라우팅 어드레스를 결정한다. 예를 들어, VF 주소 엔진(128)은 호스트 명령 내에 포함된 가상 어드레스에 가상 기능에 할당된 인터페이스 선택 값을 추가하기 위해 호스트 명령 내에 포함된 가상 어드레스를 수정할 수 있다. VF 주소 엔진(128)은 호스트 명령의 가상 어드레스 필드에 포함된 가상 어드레스의 전면에 인터페이스 라우팅 값을 추가하여 라우팅 주소("수정된 가상 주소(modified virtual address)"라고도 함)를 형성할 수 있다. 라우팅 어드레스는 호스트 명령의 어드레스 필드로부터 추출된 원래 가상 어드레스와 상이한 크기일 수 있다. 예를 들어, 라우팅 어드레스는 라우팅 값인 비트들 [71:64] 및 호스트 명령의 어드레스 필드에 포함된 원래 가상 주소인 비트들 [63:0]을 갖는 72비트 값일 수 있다.
일부 경우들에서, VF 어드레스 엔진(128)은 라우팅 어드레스의 임의의 태그 또는 인코딩된 부분들을 미리 정의된 값 또는 부호 확장된 정식 포맷으로 대체한다. 예를 들어, 라우팅 어드레스는, 라우팅 값인 비트들 [71:64] 및 가상 기능 또는 호스트 식별자들을 지정하는 미사용 비트들의 태깅 또는 인코딩없이 호스트 명령의 어드레스 필드에 포함된 가상 어드레스인 비트들 [63:0]을 갖는 72 비트 값일 수 있다. VF 어드레스 엔진(128)은 호스트 명령과 관련된 판독/기록 트랜잭션들을 실행하는 데 사용하기 위한 라우팅 어드레스를 유도하기 위해 가상 어드레스에 원래 포함된 태깅 또는 인코딩 없이 가상 어드레스의 일부와 라우팅 값을 교환할 수 있다. 예를 들어, 라우팅 어드레스는, 임의의 태깅없이 호스트 명령의 어드레스 필드에 포함된 가상 어드레스의 첫 8 비트들인 비트들 [71:63], 인터페이스 선택 값인 다음 8 비트들 [62:55], 및 임의의 태깅없이 호스트 명령의 어드레스 필드에 포함된 나머지 가상 어드레스인 비트들 [54:0]을 갖는 72 비트 값일 수 있다. 스토리지 미디어 스위치(122)는 내부 라우팅 어드레스를 사용하여 호스트 명령을 만족시키기 위한 트랜잭션들을 실행하도록 스토리지 미디어(124)에 명령한다.
710에서, 스토리지 미디어 스위치(122)는 후속 검색을 위해 메모리에 라우팅 주소를 유지할 수 있고 그리고 호스트 명령을 이행하기 위한 트랜잭션들을 실행한 후에 사용할 수 있다.
단계 710에서, 스토리지 미디어 스위치(122)는 단계 608로 진행하여 선택된 가상 기능을 효과적으로 사용하기 위해 라우팅 어드레스에 기초하여 호스트 명령을 실행할 수 있다. 예를 들어, 스토리지 미디어 스위치는 앞에서 결정된 라우팅 어드레스에 맵핑되는 동작들 또는 트랜잭션들을 수행할 수 있다.
도 7b는 호스트 명령에 응답하기 위한 예시적인 방법(700B)을 도시한다. 방법(700B)은 호스트 명령들을 스토리지 미디어 상의 가상 기능들에 자동으로 맵핑하기 위한 방법(600)으로부터 단계(610)를 실행할 때 스토리지 미디어 스위치(122)에 의해 수행되는 동작들의 예이다. 방법(700B)의 동작들은, VF 어드레스 엔진(128)을 포함하고 그리고 VF 맵핑(130)을 사용하여 스토리지 미디어 스위치(122)에 의해 또는 스토리지 미디어 스위치(122)로 수행될 수 있다. 호스트 명령을 만족시키기 위해 스토리지 미디어(124)가 트랜잭션들을 실행하도록 지시하는 것에 응답하여, 스토리지 미디어 스위치(122)는 호스트 명령에 대한 원래 어드레스를 결정함으로써 호스트 명령에 대한 응답을 준비한다. 712에서, 스토리지 미디어 스위치(122)는 메모리에 유지되는 라우팅 어드레스로부터 인터페이스 선택 값을 제거한다. 예를 들어, VF 어드레스 엔진(128)은 호스트 명령에 대한 응답을 위한 원래 어드레스로서 72 비트 내부 라우팅 어드레스의 일부만을 (예를 들어, 인터페이스 선택 값 없이) 사용할 수 있다. VF 어드레스 엔진(128)은 메모리에 유지된 라우팅 어드레스로부터 인터페이스 선택 값을 포함하는 비트들(예를 들어, 비트들 [62:55])을 제거할 수 있다.
714에서, 스토리지 미디어 스위치(122)는 원래 주소를 결정하기 위해 인터페이스 선택 값이 제거된 상태에서 라우팅 주소의 나머지 부분들을 연결한다. 예를 들어, 스토리지 미디어 스위치(122)는 라우팅 어드레스의 제2 나머지 부분(예를 들어, 비트들 [54:0])과 연결된 라우팅 주소의 제1 나머지 부분(예를 들어, 비트들 [71:63])을 사용하여 64 비트 원래 어드레스를 생성할 수 있다. 라우팅 어드레스에서 인터페이스 선택 값(예를 들어, 비트들 [62:55])을 제거함으로써, 원래 어드레스(예를 들어, 64 비트들)는 라우팅 어드레스의 비트들 [71:63]에 대응하는 비트들 [63:56] 및 라우팅 어드레스의 비트들 [54:0]에 대응하는 비트들 [55:0]을 유지한다.
716에서, 스토리지 미디어 스위치(122)는 임의의 가상 기능 태깅없이 원래 어드레스를 갖는 호스트 명령을 출력한다. 스토리지 미디어 스위치(122)는 호스트 인터페이스를 통해 그리고 호스트 명령을 응답하는 부분으로서 호스트에 원래의 어드레스를 제공할 수 있다.
방법(700B)을 수행함으로써, 스토리지 미디어 스위치(122)는, 호스트 명령에 응답하는 데 사용하기 위한 호스트 명령과 연관된 원래 어드레스를 결정할 수 있다. 저장 스토리지 스위치(122)는 호스트 명령 내에 포함된 가상 주소로부터 임의의 가상 기능 태깅을 제거하고, 그리고 가상 기능 태깅을 호스트 선호 사전 정의 값 또는 나머지 가상 어드레스의 부호 확장된 정식 부분으로 대체함으로써 원래의 어드레스를 결정한다.
도 8은 호스트 명령이 스토리지 미디어 상의 가상 기능들에 매핑될 때 호스트 명령의 어드레스 필드의 조작들을 나타내는 개념도이다. 도 8은 예시적인 어드레스 필드(800A 내지 800E)를 포함한다. 어드레스 필드들(800A 내지 800E) 각각은 호스트 명령(802)과 관련된다.
도 8은 스토리지 미디어 스위치(122)가 어드레스 필드(800A)를 포함하는 호스트 명령(802)을 수신할 수 있음을 도시한다. 어드레스 필드(800A)는 미사용 어드레스 부분(804A)(예를 들어, 비트들 [63:49]) 및 사용된 어드레스 부분(806)(예를 들어, 비트들 [48:0])을 포함한다.
스토리지 미디어 스위치(122)는, 어드레스 필드(800A)의 전면에 인터페이스 선택 값(808)을 부가하여 호스트 명령(802)을 수정함으로써 주소 필드(800B)를 생성할 수 있다. 어드레스 필드(800B)는, 인터페이스 선택 값(808)(예를 들어, 비트들 [71:64]), 미사용된 어드레스 부분(804A)(예를 들어, 비트들 [63:49]), 및 사용된 어드레스 부분(806)(예를 들어, 비트들 [48:0])을 포함한다. 인터페이스 선택 값(808)의 추가로 인해, 어드레스 필드(800B)는 어드레스 필드(800A)(예를 들어, 64 비트들)보다 더 큰 크기(예를 들어, 72 비트들)을 갖는 것으로 도시된다.
스토리지 미디어 스위치(122)는 어드레스 필드(800C)를 생성하기 위해 임의의 인코딩 또는 태깅을 제거하기 위해 어드레스 필드(800B)의 미사용 어드레스 부분(804A)을 수정할 수 있다. 예를 들어, 어드레스 필드(800C)는 미사용 어드레스 부분(804A)이 미사용 어드레스 부분(804B)과 상이한 정보를 포함하는 것을 제외하고는 어드레스 필드(800B)에 대응한다. 예를 들어, 스토리지 미디어 스위치(122)는 임의의 인코딩 또는 태깅을 제거할 수 있고 그리고 인코딩 또는 태깅을 미리 정의된 호스트 지정 값으로 대체할 수 있거나, 또는 (예를 들어, 비트 [48]의 값을 비트들 [63:49] 각각에 복제함으로써) 사용된 어드레스 부분(806)과 관련된 표준값을 부호 확장할 수 있다.
스토리지 미디어 스위치(122)는, 인터페이스 선택 값(808)의 위치를 사용되지 않은 어드레스 부분(804B)의 위치와 교환함으로써, 라우팅 어드레스(800D)라 언급되는 어드레스 필드(800D)를 생성할 수 있다. 예를 들어, 어드레스 필드(800D)는, 미사용 어드레스 부분(804B)이 비트들 [71:64]에 있고 그리고 인터페이스 선택 값(808)이 비트들 [63:49]에 있는 것을 제외하고는 어드레스 필드(800C)에 대응한다.
스토리지 미디어 스위치(122)는 라우팅 어드레스 (800D)를 사용하여 스토리지 미디어(124)가 호스트 명령을 수행하기 위한 트랜잭션들을 실행하도록 지시할 수 있다. 트랜잭션들이 완료되면, 스토리지 미디어 스위치(122)는 어드레스 필드(800E)에 포함된 원래 어드레스를 포함하는 응답을 출력함으로써 호스트 명령에 응답할 수 있다.
스토리지 미디어 스위치(122)는 어드레스 필드(800D)로부터 인터페이스 선택 값(808)을 제거하고 그리고 태깅되지 않고 사용되지 않은 어드레스 부분(804B)을 사용된 어드레스 부분(806)과 연결하여 새로운 원래 주소를 형성함으로써 어드레스 필드(800E)를 생성할 수 있다. 어드레스 필드(800E)는, 태그되지 않은 미사용 어드레스 부분(804B)에 대응하는 비트들 [63:49] 및 어드레스 부분(806)에 대응하는 비트들 [48:0]을 갖는, 64 비트들을 포함한다.
도 6 내지 도 8의 예에서, 스토리지 미디어(124)는 SR-IOV와 호환되지 않을 수 있다. 즉, 스토리지 미디어(124)는 전술한 바와 같이 스토리지 미디어(124)에 가상 기능을 맵핑하기 위해 스토리지 미디어 스위치(122)에 의존할 수 있다. 그러나, 일부 예들에서, 스토리지 미디어(124)는 기본적으로 SR-IOV를 지원할 수 있고, 그리고 이미 가상 기능들을 지원하도록 구성될 수 있다. 스토리지 미디어(124)가 이미 SR-IOV를 지원하는 경우, 스토리지 미디어 스위치(122)는 가상 기능들에 자동으로 맵핑하기 위해 네이티브 SR-IOV 지원에 의존할 수 있다.
예를 들어, 스토리지 미디어 스위치(122)는 호스트 명령과 관련된 라우팅 식별자(RID)를 결정할 수 있다. RID는 스토리지 미디어(124)에 할당된 버스 번호, 디바이스 번호 또는 기능 번호 값일 수 있다. VF 어드레스 엔진(128)은 VF 맵핑들 (130)에서 RID를 조회하여 호스트 식별자 및 관련 가상 기능 식별자를 결정할 수 있다.
이후, 스토리지 미디어 스위치(122)는 단계들(606 내지 610)를 실행하여 임의의 필요한 판독 또는 기입 트랜잭션들을 실행한 후 호스트 명령에 응답할 수 있다. 예를 들어, 호스트 식별자 및 가상 기능 식별자를 이용하여, 스토리지 미디어 스위치(122)는 VF 맵핑들(130)으로부터 인터페이스 선택 값을 결정할 수 있다. VF 주소 엔진(128)은 라우팅 어드레스를 형성하기 위해 인코딩되지 않거나 태그가 없는 호스트 명령으로부터 도출된 어드레스에 인터페이스 선택 값을 부가할 수 있다. VF 어드레스 엔진(128)은 인터페이스 선택 비트들(예를 들어, 비트들 [71:64])을 어드레스의 일부(예를 들어, 비트들 [63:56])와 교환할 수 있어 스토리지 미디어 스위치(122)가 호스트 명령 트랜잭션들을 실행하기 위해 사용하는 라우팅 어드레스를 생성한다. 호스트 명령 트랜잭션들이 완료되면, 스토리지 미디어 스위치(122)는, 호스트 명령과 함께 제공되는 원래 어드레스(예를 들어, 64 비트)를 생성하기 위해 라우팅 어드레스로부터 인터페이스 선택 비트들(예를 들어, 비트들 [63:56])을 생략함으로써 결정된 원래 어드레스를 출력함으로써 호스토 명령에 응답한다.
도 9는 네임 스페이스를 통해 액세스되는 솔리드 스테이트 스토리지를 위한 QoS를 제공하기 위한 예시적인 방법(900)을 도시한다. 방법(900)의 동작들은 QoS 관리자(132)를 포함하거나 QoS 파라미터들(132)을 사용하여 스토리지 미디어 스위치(122)에 의해 또는 스토리지 미디어 스위치(122)로 수행될 수 있다.
902에서, 스토리지 미디어 스위치는, 호스트 인터페이스를 통해, 호스트 디바이스로부터의 데이터 액세스를 위한 I/O 명령을 수신한다. I/O 명령에는 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임 스페이스와 연관된 가상 인터페이스에 대한 식별자가 포함된다. 일부 경우들에서, I/O 명령은 I/O 명령들의 VM 제출 큐와 같이 호스트 디바이스에서 수신한 인바운드 명령 요소들의 제1 큐를 통해 수신된다. 네임 스페이스와 연관된 가상 인터페이스는 SR-IOV PCIe 인터페이스 또는 SR-IOV PCIe 인터페이스를 통해 제공되는 가상 기능(VF)을 포함할 수 있다. 그러한 경우, 네임 스페이스와 관련된 제1 큐 세트가 VF에 매핑될 수 있다. 대안적으로 또는 추가적으로, 호스트에 의해 실행되는 VM과 연관된 제2 큐 세트는 제1 큐 세트를 제2 큐 세트에 바인딩하여 효과적으로 VF에 맵핑될 수 있다.
904에서, QoS 관리자는, I/O 명령에 기초하여, I/O 명령이 네임 스페이스를 통해 액세스할 솔리드 스테이트 스토리지의 데이터 량을 결정한다. 일부 경우들에서, 데이터의 양이, I/O 명령의 PRP 리스트, I/O 명령의 스캐터 수집 리스트, I/O 명령과 연관된 여러 I/O 동작들 또는 I/O 명령의 LBA 수 중 하나에 기초하여 결정된다.
906에서, QoS 관리자는, 네임 스페이스를 통해 I/O 명령이 액세스할 데이터의 양이 시간 간격에 걸쳐 네임 스페이스를 통해 데이터 액세스를 위한 사전 정의 된 임계 값을 초과하는지 여부를 결정한다. 예를 들어, QoS 관리자는 네임 스페이스를 통해 액세스된 다수의 LBA들과 그 네임 스페이스에 대한 LBA 할당량을 비교할 수 있다.
선택적으로, 908에서, QoS 관리자는 데이터의 양이 미리 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, I/O 명령을 솔리드 스테이트 스토리지에 해제한다. 대안적으로, 910에서, QoS 관리자는 데이터의 양이 미리 정의된 임계 값을 만족하거나 초과한다는 결정에 응답하여 솔리드 스테이트 스토리지에 대한 I/O 명령의 해제를 지연시킨다. 그렇게 함으로써, 스위치는 네임 스페이스의 액세스 파라미터에 기초하여 가상으로 액세스된 솔리드 스테이트 스토리지에 대한 QoS를 제공할 수 있다.
도 10은 네임 스페이스에 대한 대역폭 할당량에 기초하여 I/O 명령들을 솔리드 스테이트 스토리지 디바이스에 제출하기 위한 예시적인 방법(1000)을 도시한다. 방법(1000)의 동작들은, QoS 관리자(132)를 포함하거나 QoS 파라미터(132)를 사용하여 스토리지 미디어 스위치(122)에 의해 또는 스토리지 미디어 스위치(122)로 수행될 수 있다.
1002에서, 스토리지 미디어 스위치는 스토리지 미디어 스위치의 가상 기능에 맵핑되는 가상 머신의 제출 큐로부터 I/O 명령을 페치한다. 스토리지 미디어 스위치는 NVMe 기반 스토리지 미디어 스위치와 동작 가능하게 연결된 솔리드 스테이트 스토리지의 네임 스페이스와 가상 기능 사이의 맵핑들을 가능하게 하는 NVMe 기반 스토리지 미디어 스위치일 수 있다. 네임 스페이스와 연관된 가상 인터페이스는 SR-IOVPCIe 인터페이스 또는 SR-IOV PCIe 인터페이스를 통해 제공되는 가상 기능 (VF)을 포함할 수 있다.
1004에서, QoS 관리자는, I/O 명령에 기초하여, I/O 명령이 액세스할 데이터의 양 및 가상 기능이 맵핑될 스토리지 네임 스페이스를 결정한다. 데이터의 양은, I/O 명령의 PRP 리스트, I/O 명령의 스캐터 수집 리스트, I/O 명령과 연관된 여러 I/O 동작들 또는 I/O 명령의 LBA 수 중 하나에 기초하여 결정된다.
1006에서, QoS 관리자는, I/O 명령이 액세스할 데이터의 양을 스토리지 네임 스페이스에 대한 사전 구성된 대역폭 할당량과 비교한다. 예를 들어, QoS 관리자는 대역폭 측정을 구현하기 위해 특정 시간 동안 네임 스페이스에 대해 정의된 LBA 임계 값과 LBA 카운트를 비교할 수 있다.
선택적으로 1008에서, QoS 관리자는 I/O 명령을 스토리지 네임 스페이스에 대응하는 솔리드 스테이트 스토리지 디바이스의 큐에 제출한다. 대안적으로, 1010에서, QoS 관리자는 I/O 명령의 해제를 솔리드 스테이트 스토리지로 지연시키는 데 효과적인 스테이징 큐에 I/O 명령을 저장한다.
단계 1010에서, 방법(1000)은 단계 1012, 1014 및/또는 단계 1016으로 진행할 수 있다. 1012에서, QoS 관리자는 새로운 타이밍 윈도우가 될 때까지 I/O 명령의 해제를 지연시킨다. 일반적으로, 스테이징 큐에 저장된 임의의 I / O 명령들은 새로운 타이밍 윈도우가 시작될 때마다 스토리지 디바이스들 중 하나의 제출 큐에 제출하기 위해 재평가될 수 있다. 1014에서, QoS 관리자는, QoS 관리자에 대한 인바운드 큐가 비어있는 상태에 도달할 때까지 I/O 명령의 해제를 지연시킨다. 일부 경우들에서, 인바운드 큐는 현재 타이밍 윈도우동안 비어있는 상태에 도달하고, 이는 인바운드 엔진에 의해 페치된, 해제를 위해 평가할 필요가 없는 새로운 요소들이 존재하지 않음을 나타낸다. 1016에서, QoS 관리자는, 솔리드 스테이트 스토리지 디바이스의 큐가 비어있는 상태에 도달할 때까지 I/O 명령의 해제를 지연시킨다. 임의의 동작으로부터, 방법(1000)은 동작(1006)으로 복귀하여 솔리드 스테이트 스토리지 디바이스로의 해제를 위한 I/O 명령을 재평가할 수 있다.
도 11은 솔리드 스테이트 스토리지의 네임 스페이스를 통해 가상 머신에 의한 데이터 액세스를 관리하기위한 예시적인 방법(1100)을 도시한다. 방법(1100)의 동작들은, QoS 관리자(132)를 포함하거나 QoS 파라미터들 (132)을 사용하여, 호스트 디바이스(102), 스토리지 미디어 스위치(122)에 의해 또는 호스트 디바이스(102), 스토리지 미디어 스위치(122)로 수행될 수 있다.
1102에서, 호스트는 가상 머신의 NVMe 큐들을 솔리드 스테이트 스토리지의 세그먼트에 액세스할 수 있는 네임 스페이스에 맵핑된 가상 기능에 연관시킨다.
1104에서, QoS 관리자는 가상 머신이 실행되는 호스트로부터 가상 머신에 제공될 데이터 액세스 QoS에 대한 파라미터들을 수신한다. 일부 경우들에서, QoS 관리자는 네임 스페이스를 통해 솔리드-스테이트 스토리지의 데이터 액세스를 측정하거나 관리할 수 있는 파라미터를 수신한다. 그러한 경우에, QoS 관리자는 파라미터에 기초하여, 시간 기간 동안 네임 스페이스를 통한 데이터 액세스를 위한 미리 정의된 임계 값을 결정할 수 있다.
1106에서, QoS는, 네임 스페이스에 대해 그리고 QoS에 대한 파라미터에 기초하여, 데이터 량 및 지속 시간을 포함하는 네임 스페이스에 대한 대역폭 할당량을 정의한다. 1108에서, QoS 관리자는, 대역폭 할당량에 기초하여, 가상 기능이 맵핑되는 네임 스페이스를 통해 가상 머신에 의한 솔리드 스테이트 스토리지에 대한 데이터 액세스를 측정한다.
시스템 온 칩
도 12는, NVMe 인터페이스를 통해 또는 SR-IOV가 제공하는 가상 기능을 통해 액세스 가능한 미디어와 같은 솔리드 스테이트 미디어를 위한 가상 인터페이스를 통해 QoS를 제공하는 다양한 양태들을 구현할 수 있는 예시적인 SoC(System-on-Chip)(1200)를 도시한다. SoC 1200은 컴퓨팅 디바이스, 호스트 디바이스, 스토리지 미디어 스위치, 네트워크 연결 저장 장치, 스마트 기기, 프린터, 셋톱 박스, 서버, 데이터 센터, SSD(Solid-State Drive), 스토리지 드라이브 어레이, 메모리 모듈, 자동차 컴퓨팅 시스템, 서버, 서버 블레이드, 스토리지 블레이드, 스토리지 백플레인, 스토리지 미디어 확장 디바이스, 스토리지 미디어 카드, 스토리지 미디어 어댑터, 네트워크 연결 스토리지, 패브릭 기반 스토리지 대상, NVMe 기반 스토리지 컨트롤러, 또는 임의의 다른 적합한 유형의 디바이스(예를 들어, 여기에 기술된 다른 것)와 같은 임의의 적절한 디바이스로 구현될 수 있다. SoC와 관련하여 설명되었지만, 도 12의 엔티티들은, 또한, ASIC(application-specific integrated-circuit), 스토리지 컨트롤러 카드, 스토리지 백플레인, 스토리지 컨트롤러, 통신 컨트롤러, ASP (application-specific standard product), DSP(digital signal processor), PSoC (programmable SoC), SiP(System-in-package) 또는 FPGA(Field-Programmable Gate Array)와 같은 다른 유형들의 집적 회로들 또는 내장 시스템들로 구현될 수 있다.
SoC(1200)는, 여기에 기술된 임의의 디바이스들 또는 컴포넌트들(예를 들어, 스토리지 드라이브 또는 스토리지 어레이)와 같은 호스트 디바이스 또는 스토리지 시스템의 기능들을 제공하는데 유용한 전자 회로, 마이크로 프로세서, 메모리, 입력-출력(I/O) 제어 로직, 통신 인터페이스들, 펌웨어 및/또는 소프트웨어와 통합될 수 있다. SoC(1200)는 또한 컴포넌트들 간 데이터 통신 또는 라우팅을 위해 SoC의 다양한 컴포넌트들을 결합하는 통합된 데이터 버스 또는 상호연결 패브릭(도시되지 않음)을 포함할 수 있다. SoC 1200의 통합 데이터 버스, 상호연결 패브릭 또는 기타 컴포넌트들은 외부 포트, 병렬 데이터 인터페이스, 직렬 데이터 인터페이스, 주변 장치 컴포넌트 인터페이스 또는 기타 적합한 데이터 인터페이스를 통해 노출되거나 액세스될 수 있다. 예를 들어, SoC 1200의 컴포넌트들은 외부 인터페이스 또는 오프-칩 데이터 인터페이스를 통해 외부 스토리지 미디어에 액세스하거나 또는 외부 스토리지 미디어를 제어할 수 있다.
이 예에서, SoC(1200)는 입력-출력(I/O) 제어 로직(1202) 및 하드웨어 기반 프로세서(1204)(프로세서 (1204)), 예를 들어, 마이크로프로세서, 프로세서 코어, 애플리케이션 프로세서, DSP 등(예를 들어, 호스트 x86 프로세서와 별개인 처리 리소스)과 같은 다양한 컴포넌트들을 포함한다. SoC(1200)는 또한 메모리(1206)를 포함하고, 이 메모리(1206)는 RAM, SRAM, DRAM, 비휘발성 메모리, ROM, 일회용 프로그래밍 가능(OTP) 메모리, 다중 프로그래밍 가능(MTP) 메모리, 플래시 메모리 및/또는 기타 적합한 전자 데이터 스토리지의 임의의 유형 및/또는 조합을 포함할 수 있다. 일부 양태들에서, 프로세서(1204) 및 메모리(1206) 상에 저장된 코드는 솔리드 스테이트 스토리지를 위한 가상 인터페이스들을 통한 QoS를 제공하는 것과 관련된 다양한 기능들을 제공하기 위해 스토리지 미디어 스위치 또는 스위치 가능 스토리지 어그리게이터로서 구현된다. 본 발명의 맥락에서, 메모리(1206)는 비 일시적 신호들을 통해 데이터, 코드, 명령어들 또는 다른 정보를 저장하고, 그리고 반송파들 또는 일시적 신호들을 포함하지 않는다. 대안적으로 또는 부가적으로, SoC(1200)는 자기 메모리 또는 솔리드 스테이트 메모리(예를 들어, 플래시 또는 NAND 메모리)와 같은 추가 또는 확장 가능한 오프-칩 스토리지 미디어에 액세스하기 위한 데이터 인터페이스(도시되지 않음)를 포함할 수 있다.
SoC(1200)는 또한 펌웨어(1208), 애플리케이션들, 프로그램들, 소프트웨어 및/또는 운영 시스템들을 포함할 수 있고, 이는 SoC(1200)의 기능들을 구현하기 위해 프로세서(1204)에 의한 실행을 위한 메모리(1206) 상에 유지되는 프로세서 실행 가능 명령어들로서 구현될 수 있다. SoC(1200)는 또한 로컬 온 칩(도시되지 않음) 또는 오프 칩 통신 트랜시버의 구성 요소를 제어하거나 통신하기 위한 트랜시버 인터페이스와 같은 다른 통신 인터페이스들을 포함할 수 있다. 대안적으로 또는 추가로, 트랜시버 인터페이스는, 또한, SoC 1200에 연결된 트랜시버들, 물리 계층 트랜시버(PHY)들, 또는 미디어 액세스 컨트롤러(MAC)들을 통한 유선 또는 무선 통신을 용이하게 하도록 무선 주파수(RF), 중간 주파수(IF) 또는 베이스밴드 주파수 신호 오프-칩을 통신하기 위해 신호 인터페이스를 포함하거나 구현할 수 있다. 예를 들어, SoC(1200)는, 예를 들어, 가상화된 스토리지 격리 피처들을 갖춘 NAS(Network Attached Storage) 볼륨을 제공하기 위해 유선 또는 무선 네트워크를 통한 스토리지를 가능하게 하도록 구성된 트랜시버 인터페이스를 포함할 수 있다.
SoC(1200)는 또한 VF 어드레스 엔진(128), VF 맵핑들(130), QoS 관리자(132) 및 QoS 파라미터들(134)을 갖는 저장 미디어 스위치(126)(스위치(126))의 인스턴스를 포함하고, 이는 도시되거나 또는 스토리지 컴포넌트나 데이터 인터페이스와 결합한 것처럼 개별적으로 구현될 수 있다. 솔리드-스테이트 스토리지를 위해 가상 인터페이스를 통한 QoS를 제공하는 다양한 양태들에 따라, 스위치(126)는 네임 스페이스의 대역폭을 호스트의 테넌트들 또는 개시자들에게 계량하거나 할당할 수 있다. 대안적으로 또는 부가적으로, VF 맵핑들(130) 또는 QoS 파라미터들(134)은 SoC (1200)의 메모리(1206) 또는 SoC(1200)와 동작 가능하게 결합되고 스위치(126)에 액세스 가능한 메모리에 저장될 수 있다.
이들 엔티티들 중 임의의 것은 여기에 제시된 다양한 양태들을 참조하여 서술된 바와 같이 개별 컴포넌트 또는 조합된 컴포넌트들로서 구현될 수 있다. 이들 컴포넌트들 및/또는 엔티티들, 또는 대응하는 기능의 예들은, 도 1의 환경(100)의 각각의 컴포넌트들 또는 엔티티들 또는 도 2, 도 3, 도 4 및/또는 도 5에 도시된 각각의 구성들을 참조하여 서술된다. 스위치(126)는, 전체적으로 또는 부분적으로, 솔리드 스테이트 스토리지를 위해 가상 인터페이스를 통해 QoS를 제공하는 다양한 양태들 및/또는 피처들을 구현하기 위해 메모리(1206)에 의해 유지되고 그리고 프로세서(1204)에 의해 실행되는 프로세서 실행가능 명령어들로서 구현될 수 있다.
스위치(126), VF 어드레스 엔진(128) 및/또는 QoS 관리자(132)는 여기에서 서술된 양태들을 구현하기 위해 독립적으로 또는 임의의 적절한 컴포넌트 또는 회로와 조합하여 구현될 수 있다. 예를 들어, VF 어드레스 엔진(128) 및/또는 QoS 관리자(132)는 DSP, 프로세서/스토리지 브리지, I/O 브리지, 그래픽 프로세싱 유닛, 메모리 컨트롤러, 스토리지 컨트롤러, 산술 논리 유닛(ALU) 등의 일부로서 구현될 수 있다. VF 어드레스 엔진(128) 및/또는 QoS 관리자(132)는 또한 SoC(1200)의 프로세서(1204), 메모리(1206), 호스트 인터페이스, 스토리지 미디어 인터페이스 또는 펌웨어(1208)와 통합된 SoC(1200)의 다른 엔티티들과 일체로 제공될 수 있다. 대안적으로 또는 추가로, 스위치(126), VF 어드레스 엔진(128), VF 맵핑들(130), QoS 관리자(132) 및/또는 QoS 파라미터들(134) 및/또는 SoC(1200)의 다른 컴포넌트들은 하드웨어, 펌웨어, 고정 논리 회로 또는 이들의 임의의 조합으로 구현될 수 있다.
다른 예로서, 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 QoS를 제공하는 하나 이상의 양태들에 따른 예시적인 스토리지 미디어 스위치 컨트롤러(1300)(스위치 컨트롤러(1300))를 도시하는 도 13을 고려한다. 다양한 양태들에서, 스위치 제어기(1300) 또는 이들의 컴포넌트들의 임의의 조합은 스토리지 드라이브 컨트롤러, 스토리지 미디어 스위치, 스토리지 미디어 컨트롤러, NAS 컨트롤러, NVMe 개시자, NVMe 타겟, 또는 솔리드 스테이트 스토리지를 위한 스토리지 어그리게이션 컨트롤러로서 구현될 수 있다. 일부 경우들에서, 스위치 컨트롤러(1300)는 도 12를 참조하여 설명된 바와 같이 SoC(1200)의 컴포넌트들과 유사하거나 그와 함께 구현된다. 즉, SoC(1200)의 인스턴스는, 솔리드 스테이트 스토리지를 위한 가상 인터페이스들을 통한 QoS를 제공하고 관리하기 위해 스위치 컨트롤러(1300)와 같은 스토리지 미디어 스위치 제어기로서 구성될 수 있다.
이 예에서, 스위치 제어기(1300)는 입력/출력(I/O) 제어 로직(1302) 및 프로세서(1304), 예를 들어, 마이크로 프로세서, 프로세서 코어, 애플리케이션 프로세서, DSP 등을 포함한다. 일부 양태들에서, 스토리지 미디어 스위치(1300)의 프로세서(1304) 및 펌웨어는, 방법들(600, 700A, 700B, 900, 1000, 및/또는 1100)을 참조하여 서술된 것과 같은 솔리드 스테이트 스토리지를 위한 가상 인터페이스들을 통한 QoS 제공과 관련된 다양한 기능들을 제공하도록 구현될 수 있다. 스위치 제어기는 또한 스토리지 미디어 인터페이스(1306) 및 호스트 인터페이스(1308)를 포함하며, 이는 스토리지 미디어 및 호스트 시스템에 각각 액세스할 수 있게 한다. 스토리지 미디어 인터페이스(1306)는, PPA(Physical Page Addressing) 인터페이스, PCI(Peripheral Component Interconnect Express) 인터페이스, NVMe(Non-Volatile Memory Express) 인터페이스, NVM-OF(NVM over Fabric) 인터페이스, NVMHCIS(NVM Host Controller Interface Specification) 호환 인터페이스 등을 포함할 수 있다. 대안적으로 또는 추가로, 호스트 인터페이스는 PCIe 인터페이스, SATA 기반 인터페이스, NVMe 인터페이스, NVM-OF 인터페이스, NVMHCIS 호환 인터페이스, 패브릭 가능 스토리지 인터페이스 등을 포함할 수 있다.
스위치 제어기(1300)는 또한 VF 어드레스 엔진(128), VF 맵핑들(130), QoS 관리자(132) 및 QoS 파라미터들(134)의 인스턴스들을 포함한다. 이들 중 일부 또는 전부가, 스위치 컨트롤러에 도시된 바와 같이 또는 프로세서(1304), 스토리지 미디어 인터페이스(1306), 호스트 인터페이스(1308), 또는 플래시 변환 계층(도시되지 않음)과 결합되어 개별적으로 구현될 수 있다. 이러한 컴포넌트들 및/또는 엔티티들의 예들 또는 해당 기능은, 도 1의 환경(100)의 각각의 컴포넌트들 또는 엔티티들 또는 도 2, 도 3, 도 4 및/또는 도 5에 도시된 각각의 구성을 참조하여 서술된다. 스위치 제어기(1300)는, 전체적으로 또는 부분적으로, 솔리드-스테이지 스토리지를 위해 가상 인터페이스들 통한 QoS를 제공하는 것에 대한 다양한 양태들 및/또는 피처들을 구현하도록 스위치의 메모리(도시되지 않음)에 의해 유지되고 그리고 프로세서(1304)에 의해 실행되는 프로세서 실행 가능 명령어들로서 구현될 수 있다.
주제는 구조적 피처들 및/또는 방법론적 동작들에 특정한 언어로 서술되었지만, 첨부된 청구 범위에 정의된 주제는 그들이 수행되는 순서들을 포함하여 여기에서 서술된 특정 예들, 피처들 또는 동작들로 반드시 제한되는 것은 아니라는 것을 이해해야 한다.

Claims (20)

  1. 솔리드 스테이트 스토리지(solid-state storage)를 위한 가상 인터페이스를 통해 QoS(Quality of Service)를 제공하는 방법으로서,
    호스트 인터페이스를 통해 그리고 호스트 디바이스로부터, 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임스페이스(namespace)와 연관된 가상 인터페이스의 식별자와 관련된 데이터 액세스를 위한 입력/출력(I/O) 명령을 수신하는 단계와;
    상기 I/O 명령에 기초하여, 상기 I/O 명령이 상기 네임스페이스를 통해 액세스할 상기 솔리드 스테이트 스토리지의 데이터 량을 결정하는 단계와;
    상기 I/O 명령이 상기 네임스페이스를 통해 액세스할 데이터의 양이 지속 시간 동안 상기 네임스페이스를 통한 데이터 액세스에 대한 미리 정의된 임계 값을 초과하는지를 결정하는 단계와; 그리고
    스토리지 미디어 인터페이스를 통해 그리고 상기 네임스페이스를 기초하여, 상기 I/O 명령이 액세스할 데이터의 양이 상기 네임스페이스를 통한 데이터 액세스에 대한 미리 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, 상기 솔리드 스테이트 스토리지에 상기 I/O 명령을 해제하는 단계를 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  2. 제1항에 있어서,
    상기 I/O 명령이 액세스할 데이터의 양이 상기 네임스페이스를 통한 데이터 액세스에 대한 미리 정의된 임계 값을 만족하거나 초과한다는 결정에 응답하여, 상기 솔리드 스테이트 스토리지로의 상기 I/O 명령의 해제를 지연시키는 단계를 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  3. 제1항에 있어서,
    상기 I/O 명령은 상기 호스트 디바이스로부터 수신된 제1 인바운드 명령 요소들의 큐를 통해 수신되고; 그리고
    상기 I/O 명령의 해제를 지연시키는 단계는, 상기 솔리드 스테이트 스토리지로의 해제를 위한 재평가를 위해 스테이징된 명령 요소들에 대한 제2 큐에 상기 I/O 명령을 저장하는 단계를 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  4. 제1항에 있어서,
    상기 I/O 명령이 액세스할 데이터의 양을 결정하는 단계는, 상기 I/O 명령의 물리적 영역 페이지(PRP) 리스트, 상기 I/O 명령의 스캐터 수집 리스트, 상기 I/O 명령과 연관된 다수의 I/O 동작들 또는 상기 I/O 명령의 논리 블록 어드레스(LBA) 수 중 하나에 기초하여 데이터의 양을 결정하는 단계를 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  5. 제1항에 있어서,
    상기 네임스페이스를 통해 상기 솔리드 스테이트 스토리지의 데이터 액세스를 계량(meter) 또는 관리하기 위한 파라미터를, 상기 호스트 디바이스로부터 수신하는 단계와; 그리고
    상기 파라미터에 기초하여, 상기 지속 시간에 걸쳐 상기 네임스페이스를 통한 데이터 액세스를 위해 상기 미리 정의된 임계 값을 결정하는 단계를 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  6. 제1항에 있어서,
    상기 네임스페이스와 관련된 상기 가상 인터페이스는, SR-IOV(Single Root I/O Virtualization) PCIe(Peripheral Component Interconnect Express) 인터페이스 또는 SR-IOV PCIe 인터페이스를 통해 제공되는 가상 기능(VF)을 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  7. 제6항에 있어서,
    상기 I/O 명령은 상기 호스트 디바이스에 의해 실행되는 가상 머신(VM)으로부터 수신되고; 그리고
    상기 호스트 디바이스에서 실행되는 VM은 상기 SR-IOV PCIe 인터페이스를 통해 제공되는 상기 VF에 맵핑되는 것을 특징으로 하는
    QoS를 제공하는 방법.
  8. 제7항에 있어서,
    상기 네임스페이스와 연관된 제1 큐들의 세트는 상기 VF에 맵핑되고; 그리고
    상기 호스트에 의해 실행되는 VM과 연관되는 제2 큐들의 세트는 상기 제1 큐들의 세트를 상기 제2 큐들의 세트에 바인딩하기 위해 유효하게 상기 VF에 맵핑되는 것을 특징으로 하는
    QoS를 제공하는 방법.
  9. 제1항에 있어서,
    상기 호스트 디바이스에 대한 상기 호스트 인터페이스는 비휘발성 메모리 표현(NVMe) 프로토콜이 구현되는 제1 PCIe 인터페이스를 포함하거나, 또는
    상기 솔리드 스테이트 스토리지에 대한 상기 스토리지 미디어 인터페이스는 NVMe 프로토콜이 구현되는 제2 PCIe 인터페이스를 포함하는 것을 특징으로 하는
    QoS를 제공하는 방법.
  10. 장치로서,
    하드웨어-기반 프로세서와;
    상기 프로세서에 결합되고, 그리고 실행에 응답하여 상기 장치상에서 애플리케이션을 구현하는 프로세서가 실행가능한 명령어들을 유지하도록 구성되는 메모리와;
    상기 애플리케이션이 상기 장치에 동작가능하게 결합된 솔리드-스테이트 스토리지 내의 데이터에 액세스할 수 있도록 구성되는 호스트 인터페이스와; 그리고
    스토리지 미디어 인터페이스와 QoS 관리자를 제공하는 스토리지 미디어 스위치를 포함하고,
    상기 QoS 관리자는:
    상기 호스트 인터페이스를 통해 그리고 상기 애플리케이션으로부터, 상기 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임스페이스와 연관된 가상 인터페이스의 식별자와 관련된 데이터 액세스를 위한 입력/출력(I/O) 명령을 수신하고;
    상기 I/O 명령에 기초하여, 상기 I/O 명령이 상기 네임스페이스를 통해 액세스할 상기 솔리드 스테이트 스토리지의 데이터 량을 결정하고;
    상기 I/O 명령이 상기 네임스페이스를 통해 액세스할 데이터의 양이 지속 시간 동안 상기 네임스페이스를 통한 데이터 액세스에 대한 미리 정의된 임계 값을 초과하는지를 결정하고; 그리고
    상기 스토리지 미디어 인터페이스를 통해, 상기 I/O 명령이 액세스할 데이터의 양이 상기 미리 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, 상기 솔리드 스테이트 스토리지에 상기 I/O 명령을 해제하는 것을 특징으로 하는
    장치.
  11. 제10항에 있어서,
    상기 QoS 관리자는, 상기 I/O 명령이 액세스할 데이터의 양이 상기 미리 정의된 임계 값을 만족하거나 초과한다는 결정에 응답하여, 상기 솔리드 스테이트 스토리지로의 상기 I/O 명령의 해제를 지연시키도록 또한 구현되는 것을 특징으로 하는
    장치.
  12. 제10항에 있어서,
    상기 QoS 관리자는, 상기 I/O 명령의 물리적 영역 페이지(PRP) 리스트, 상기 I/O 명령의 스캐터 수집 리스트, 상기 I/O 명령과 연관된 다수의 I/O 동작들 또는 상기 I/O 명령의 논리 블록 어드레스(LBA) 수 중 하나에 기초하여 데이터의 양을 결정하도록 또한 구현되는 것을 특징으로 하는
    장치.
  13. 제10항에 있어서,
    상기 네임스페이스와 관련된 상기 가상 인터페이스는, SR-IOV(Single Root I/O Virtualization) PCIe(Peripheral Component Interconnect Express) 인터페이스 또는 SR-IOV PCIe 인터페이스를 통해 제공되는 가상 기능(VF)을 포함하는 것을 특징으로 하는
    장치.
  14. 제10항에 있어서,
    상기 장치는 상기 스토리지 미디어 스위치의 스토리지 미디어 인터페이스에 동작 가능하게 결합된 상기 솔리드 스테이트 스토리지를 더 포함하는 것을 특징으로 하는
    장치.
  15. 시스템 온 칩(SoC)으로서,
    솔리드 스테이트 스토리지에 액세스할 수 있도록 구성된 스토리지 미디어 인터페이스와;
    호스트 디바이스와의 통신을 가능하게 하도록 구성된 호스트 인터페이스와;
    하드웨어 기반 프로세서와; 그리고
    상기 하드웨어 기반 프로세서에 의한 실행에 응답하여 QoS 관리자를 구현하도록 하는 프로세서 실행 가능 명령어들을 저장하도록 구성된 메모리를 포함하고,
    상기 QoS 관리자는:
    상기 호스트 인터페이스를 통해 그리고 상기 호스트 디바이스로부터, 상기 솔리드 스테이트 스토리지의 데이터에 액세스할 수 있는 네임스페이스와 연관된 가상 인터페이스의 식별자와 관련된 데이터 액세스를 위한 입력/출력(I/O) 명령을 수신하고;
    상기 I/O 명령에 기초하여, 상기 I/O 명령이 상기 네임스페이스를 통해 액세스할 상기 솔리드 스테이트 스토리지의 데이터 량을 결정하고;
    상기 I/O 명령이 상기 네임스페이스를 통해 액세스할 데이터의 양이 지속 시간 동안 상기 네임스페이스를 통한 데이터 액세스에 대한 미리 정의된 임계 값을 초과하는지를 결정하고; 그리고
    상기 스토리지 미디어 인터페이스를 통해, 상기 I/O 명령이 액세스할 데이터의 양이 상기 미리 정의된 임계 값을 초과하지 않는다는 결정에 응답하여, 상기 솔리드 스테이트 스토리지에 상기 I/O 명령을 해제하거나, 또는
    상기 I/O 명령이 액세스할 데이터의 양이 상기 미리 정의된 임계 값을 만족하거나 초과한다는 결정에 응답하여, 상기 솔리드 스테이트 스토리지로의 상기 I/O 명령의 해제를 지연하는 것을 특징으로 하는
    시스템 온 칩.
  16. 제15항에 있어서,
    상기 QoS 관리자는, 상기 솔리드 스테이트 스토리지로의 해제를 위한 재평가를 위해 스테이징된 명령 요소들에 대한 큐에 상기 I/O 명령을 저장함으로써 상기 I/O 명령의 해제를 지연시키도록 더 구현되는 것을 특징으로 하는
    시스템 온 칩.
  17. 제15항에 있어서,
    상기 QoS 관리자는, 상기 I/O 명령의 물리적 영역 페이지(PRP) 리스트, 상기 I/O 명령의 스캐터 수집 리스트, 상기 I/O 명령과 연관된 다수의 I/O 동작들 또는 상기 I/O 명령의 논리 블록 어드레스(LBA) 수 중 하나에 기초하여 데이터의 양을 결정하도록 또한 구현되는 것을 특징으로 하는
    시스템 온 칩.
  18. 제15항에 있어서,
    상기 네임스페이스와 관련된 상기 가상 인터페이스는, SR-IOV(Single Root I/O Virtualization) PCIe(Peripheral Component Interconnect Express) 인터페이스 또는 SR-IOV PCIe 인터페이스를 통해 제공되는 가상 기능(VF)을 포함하는 것을 특징으로 하는
    시스템 온 칩.
  19. 제15항에 있어서,
    상기 SoC의 상기 호스트 인터페이스는 비휘발성 메모리 표현(NVMe) 프로토콜이 구현되는 제1 PCIe 인터페이스로서 구성되거나, 또는
    상기 SoC의 상기 스토리지 미디어 인터페이스는 NVMe 프로토콜이 구현되는 제2 PCIe 인터페이스로서 구성되는 것을 특징으로 하는
    시스템 온 칩.
  20. 제15항에 있어서,
    상기 SoC는, 호스트 디바이스, 스토리지 미디어 스위치, 서버, 서버 블레이드, 스토리지 블레이드, 스토리지 백플레인, 스토리지 미디어 확장 디바이스, 스토리지 미디어 카드, 스토리지 미디어 어댑터, 네트워크 연결 스토리지, 또는 NVMe 기반 스토리지 컨트롤러 상에서 구현되거나, 또는 호스트 디바이스, 스토리지 미디어 스위치, 서버, 서버 블레이드, 스토리지 블레이드, 스토리지 백플레인, 스토리지 미디어 확장 디바이스, 스토리지 미디어 카드, 스토리지 미디어 어댑터, 네트워크 연결 스토리지, 또는 NVMe 기반 스토리지 컨트롤러의 일부로서 구현되는 것을 특징으로 하는
    시스템 온 칩.
KR1020190096063A 2018-08-07 2019-08-07 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 서비스의 품질을 제공하기 위한 장치 및 방법 KR20200016810A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862715706P 2018-08-07 2018-08-07
US62/715,706 2018-08-07
US201862716278P 2018-08-08 2018-08-08
US62/716,278 2018-08-08

Publications (1)

Publication Number Publication Date
KR20200016810A true KR20200016810A (ko) 2020-02-17

Family

ID=67658533

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190096064A KR20200016811A (ko) 2018-08-07 2019-08-07 저장 매체 상의 가상 기능들의 가능화
KR1020190096063A KR20200016810A (ko) 2018-08-07 2019-08-07 솔리드 스테이트 스토리지를 위한 가상 인터페이스를 통해 서비스의 품질을 제공하기 위한 장치 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020190096064A KR20200016811A (ko) 2018-08-07 2019-08-07 저장 매체 상의 가상 기능들의 가능화

Country Status (4)

Country Link
US (3) US11372580B2 (ko)
EP (2) EP3608770A1 (ko)
KR (2) KR20200016811A (ko)
CN (2) CN110851075A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220130518A (ko) * 2021-03-18 2022-09-27 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US11841819B2 (en) 2021-03-23 2023-12-12 SK Hynix Inc. Peripheral component interconnect express interface device and method of operating the same

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US10963284B2 (en) 2019-01-31 2021-03-30 EMC IP Holding Company LLC Associating storage system performance objectives with virtual machines
US10963165B2 (en) * 2019-01-31 2021-03-30 EMC IP Holding Company LLC Applying virtual machine performance objectives on a storage system
US11762798B2 (en) 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11768613B2 (en) 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11579910B2 (en) * 2019-09-20 2023-02-14 Netapp, Inc. Policy enforcement and performance monitoring at sub-LUN granularity
US10901930B1 (en) * 2019-10-21 2021-01-26 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Shared virtual media in a composed system
US11262945B2 (en) * 2019-10-30 2022-03-01 EMC IP Holding Company, LLC Quality of service (QOS) system and method for non-volatile memory express devices
US11704059B2 (en) 2020-02-07 2023-07-18 Samsung Electronics Co., Ltd. Remote direct attached multiple storage function storage device
US11765235B2 (en) * 2020-03-12 2023-09-19 Samsung Electronics Co., Ltd. System and method of disk sharing for cloud content storage
US11782833B2 (en) 2020-03-12 2023-10-10 Samsung Electronics Co., Ltd. System and method of determining available bandwidth in disaggregated tiered cache for cloud content storage
US20210311897A1 (en) 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
CN111737176B (zh) * 2020-05-11 2022-07-15 瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
KR20210143611A (ko) * 2020-05-20 2021-11-29 삼성전자주식회사 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
US11762680B2 (en) * 2020-10-20 2023-09-19 Alilbaba Group Holding Limited Method and system of host resource utilization reduction
CN114528032A (zh) * 2020-10-30 2022-05-24 华为云计算技术有限公司 一种服务器系统以及数据处理的方法
US11409439B2 (en) 2020-11-10 2022-08-09 Samsung Electronics Co., Ltd. Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device
CN114817121A (zh) * 2021-01-22 2022-07-29 伊姆西Ip控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
CN113312143B (zh) * 2021-03-03 2024-01-23 阿里巴巴新加坡控股有限公司 云计算系统、命令处理方法及虚拟化仿真装置
US20220342689A1 (en) * 2021-04-23 2022-10-27 Samsung Electronics Co., Ltd. Mechanism for distributed resource-based i/o scheduling over storage device
CN113722248B (zh) * 2021-07-28 2023-08-22 湖南国科微电子股份有限公司 命令处理方法及命令处理装置
US20230051553A1 (en) * 2021-08-12 2023-02-16 Samsung Electronics Co., Ltd. Multi-function flexible computational storage device
US11972125B2 (en) * 2021-09-03 2024-04-30 Micron Technology, Inc. Memory sub-system dynamic QOS pool
US20230153031A1 (en) * 2021-11-16 2023-05-18 Samsung Electronics Co., Ltd. Storage device supporting multi-host and operation method thereof
US11928336B2 (en) 2022-03-03 2024-03-12 Samsung Electronics Co., Ltd. Systems and methods for heterogeneous storage systems
US11899984B1 (en) 2022-07-26 2024-02-13 Beijing Tenafe Electronic Technology Co., Ltd. Virtual queue for messages
US11907147B1 (en) 2022-07-28 2024-02-20 Beijing Tenafe Electronic Technology Co., Ltd. Programmable message inspection engine implemented in hardware that generates an output message using a content modification plan and a destination control plan
CN117519910B (zh) * 2023-12-29 2024-03-22 苏州元脑智能科技有限公司 用于虚拟机的计算快速链接内存确定方法和装置

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US7433948B2 (en) * 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US7406598B2 (en) 2004-02-17 2008-07-29 Vixs Systems Inc. Method and system for secure content distribution
WO2006002086A1 (en) 2004-06-15 2006-01-05 Dentsply International Inc. Low shrinkage and low stress dental compositions
US7502908B2 (en) 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US20080100636A1 (en) 2006-10-31 2008-05-01 Jiin Lai Systems and Methods for Low-Power Computer Operation
US7783858B2 (en) * 2007-01-20 2010-08-24 International Business Machines Corporation Reducing memory overhead of a page table in a dynamic logical partitioning environment
US7861036B2 (en) 2007-09-18 2010-12-28 Agere Systems Inc. Double degraded array protection in an integrated network attached storage device
US8571745B2 (en) 2008-04-10 2013-10-29 Robert Todd Pack Advanced behavior engine
JP5186982B2 (ja) * 2008-04-02 2013-04-24 富士通株式会社 データ管理方法及びスイッチ装置
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
JP5660053B2 (ja) * 2010-01-20 2015-01-28 日本電気株式会社 ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体
WO2012037666A1 (en) * 2010-09-24 2012-03-29 Pravala Inc. Accessing local network resources in a multi-interface system
US8495274B2 (en) * 2010-12-08 2013-07-23 International Business Machines Corporation Address translation table to enable access to virtual functions
US8521941B2 (en) * 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US8726276B2 (en) * 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter
US8504780B2 (en) * 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
US8751713B2 (en) * 2011-05-06 2014-06-10 International Business Machines Corporation Executing virtual functions using memory-based data in a PCI express SR-IOV and MR-IOV environment
JP5682782B2 (ja) * 2011-07-11 2015-03-11 村田機械株式会社 中継サーバ及び中継通信システム
US9395920B2 (en) * 2011-11-17 2016-07-19 Mirosoft Technology Licensing, LLC Throttle disk I/O using disk drive simulation model
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8713562B2 (en) 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
US9015351B1 (en) * 2012-03-02 2015-04-21 Marvell International Ltd. Address translation for SR-IOV virtual function apertures
US9098805B2 (en) 2012-03-06 2015-08-04 Koodbee, Llc Prediction processing system and method of use and method of doing business
WO2013134433A2 (en) 2012-03-06 2013-09-12 Koodbee, Llc Prediction processing system and method of use and method of doing business
US9836316B2 (en) 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9134779B2 (en) 2012-11-21 2015-09-15 International Business Machines Corporation Power distribution management in a system on a chip
US9424219B2 (en) 2013-03-12 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge
US9720717B2 (en) * 2013-03-14 2017-08-01 Sandisk Technologies Llc Virtualization support for storage devices
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
CN104111800B (zh) * 2013-04-18 2018-02-23 阿里巴巴集团控股有限公司 一种虚拟磁盘的io口调度方法及其调度装置
US9734096B2 (en) * 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US10397105B2 (en) * 2014-03-26 2019-08-27 Oracle International Corporation System and method for scalable multi-homed routing for vSwitch based HCA virtualization
US9501245B2 (en) 2014-05-02 2016-11-22 Cavium, Inc. Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
CN104461958B (zh) * 2014-10-31 2018-08-21 华为技术有限公司 支持sr-iov的存储资源访问方法、存储控制器及存储设备
KR102336443B1 (ko) * 2015-02-04 2021-12-08 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
US9378049B1 (en) * 2015-02-12 2016-06-28 Amazon Technologies, Inc. Servicing I/O requests in an I/O adapter device
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US10114675B2 (en) * 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
KR102309798B1 (ko) * 2015-04-16 2021-10-06 삼성전자주식회사 Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법
US10025747B2 (en) 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9639280B2 (en) 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
US9823849B2 (en) * 2015-06-26 2017-11-21 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
US20170032245A1 (en) 2015-07-01 2017-02-02 The Board Of Trustees Of The Leland Stanford Junior University Systems and Methods for Providing Reinforcement Learning in a Deep Learning System
KR102371916B1 (ko) * 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
KR102519663B1 (ko) 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
US9948556B2 (en) * 2015-08-25 2018-04-17 Google Llc Systems and methods for externalizing network functions via packet trunking
US9929750B2 (en) 2015-09-08 2018-03-27 Toshiba Memory Corporation Memory system
US9959138B1 (en) 2015-09-11 2018-05-01 Cohesity, Inc. Adaptive self-maintenance scheduler
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
US10586158B2 (en) 2015-10-28 2020-03-10 The Climate Corporation Computer-implemented calculation of corn harvest recommendations
US10204006B2 (en) 2015-10-28 2019-02-12 Avago Technologies International Sales Pte. Limited Systems and methods for side data based soft data flash memory access
US10764242B2 (en) * 2015-11-24 2020-09-01 At&T Intellectual Property I, L.P. Providing network address translation in a software defined networking environment
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
CN105808167B (zh) * 2016-03-10 2018-12-21 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
US10216575B2 (en) 2016-03-17 2019-02-26 Sandisk Technologies Llc Data coding
US10635499B2 (en) * 2016-03-23 2020-04-28 Unisys Corporation Multifunction option virtualization for single root I/O virtualization
US20180032249A1 (en) 2016-07-26 2018-02-01 Microsoft Technology Licensing, Llc Hardware to make remote storage access appear as local in a virtualized environment
US10423437B2 (en) * 2016-08-17 2019-09-24 Red Hat Israel, Ltd. Hot-plugging of virtual functions in a virtualized environment
US10318162B2 (en) 2016-09-28 2019-06-11 Amazon Technologies, Inc. Peripheral device providing virtualized non-volatile storage
CN107885456B (zh) * 2016-09-29 2022-09-16 北京忆恒创源科技股份有限公司 减少io命令访问nvm的冲突
CN107894913B (zh) * 2016-09-30 2022-05-13 超聚变数字技术有限公司 一种计算机系统和存储访问装置
US9747039B1 (en) * 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10254966B2 (en) 2016-12-28 2019-04-09 Western Digital Technologies, Inc. Data management based on I/O traffic profiling
US10228874B2 (en) * 2016-12-29 2019-03-12 Intel Corporation Persistent storage device with a virtual function controller
US10956346B1 (en) 2017-01-13 2021-03-23 Lightbits Labs Ltd. Storage system having an in-line hardware accelerator
US10339068B2 (en) * 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10379765B2 (en) 2017-06-27 2019-08-13 Western Digital Technologies, Inc. Geometry-aware command scheduling
US10908998B2 (en) * 2017-08-08 2021-02-02 Toshiba Memory Corporation Managing function level reset in an IO virtualization-enabled storage device
US10996888B2 (en) 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory
US10866825B2 (en) 2017-11-10 2020-12-15 Microsoft Technology Licensing, Llc Deployment of partially provisioned virtual machines
US10509753B2 (en) * 2018-02-26 2019-12-17 Micron Technology, Inc. Dynamic allocation of resources of a storage system utilizing single root input/output virtualization
US10698709B2 (en) 2018-03-07 2020-06-30 Microsoft Technology Licensing, Llc Prediction of virtual machine demand
US10901910B2 (en) * 2018-04-05 2021-01-26 International Business Machines Corporation Memory access based I/O operations
US20190354599A1 (en) 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Ai model canvas
CN108959127B (zh) * 2018-05-31 2021-02-09 华为技术有限公司 地址转换方法、装置及系统
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
JP7384900B2 (ja) * 2018-08-03 2023-11-21 エヌビディア コーポレーション 仮想マシン・メモリの安全なアクセス
US11372580B2 (en) 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US10866740B2 (en) * 2018-10-01 2020-12-15 Western Digital Technologies, Inc. System and method for performance-based multiple namespace resource allocation in a memory
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11132131B2 (en) * 2019-02-28 2021-09-28 Oracle International Corporation Consistently enforcing I/O resource constraints for workloads on parallel-access storage devices
US11133067B2 (en) 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11055232B2 (en) * 2019-03-29 2021-07-06 Intel Corporation Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS
US11372586B2 (en) * 2020-05-19 2022-06-28 Hewlett Packard Enterprise Development Lp System and method for regulating NVMe-oF command requests and data flow across a network with mismatched rates
US20230045617A1 (en) 2021-08-03 2023-02-09 Samsung Electronics Co., Ltd. Method and electronic device for managing a boost time required for an application launch

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220130518A (ko) * 2021-03-18 2022-09-27 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US11741039B2 (en) 2021-03-18 2023-08-29 SK Hynix Inc. Peripheral component interconnect express device and method of operating the same
US11841819B2 (en) 2021-03-23 2023-12-12 SK Hynix Inc. Peripheral component interconnect express interface device and method of operating the same

Also Published As

Publication number Publication date
US11372580B2 (en) 2022-06-28
US20200050470A1 (en) 2020-02-13
EP3608770A1 (en) 2020-02-12
KR20200016811A (ko) 2020-02-17
CN110851075A (zh) 2020-02-28
EP3608769B1 (en) 2024-02-21
EP3608769A1 (en) 2020-02-12
US11693601B2 (en) 2023-07-04
US11074013B2 (en) 2021-07-27
CN110830392A (zh) 2020-02-21
CN110830392B (zh) 2023-08-08
US20220334770A1 (en) 2022-10-20
US20200050403A1 (en) 2020-02-13

Similar Documents

Publication Publication Date Title
EP3608769B1 (en) Apparatus and method for providing quality of service over a virtual interface for solid-state storage
US11656775B2 (en) Virtualizing isolation areas of solid-state storage media
US20200133909A1 (en) Writes to multiple memory destinations
KR20210024195A (ko) 구성 가능한 스토리지를 이용한 NVMe 직접 가상화
CN111880750A (zh) 磁盘读写资源的分配方法、装置、设备及存储介质
US9092366B2 (en) Splitting direct memory access windows
US11016817B2 (en) Multi root I/O virtualization system
TW201331763A (zh) 設置隔離虛擬空間的方法與裝置
CN111722786A (zh) 基于NVMe设备的存储系统
US10664415B2 (en) Quality of service enforcement and data security for containers accessing storage
US11307802B2 (en) NVMe queue management multi-tier storage systems
US10216423B1 (en) Streams across multiple controllers to improve solid state drive performance
US11416396B2 (en) Volume tiering in storage systems
US11704160B2 (en) Redistribution of processing groups between server nodes based on hardware resource utilization
US11256577B2 (en) Selective snapshot creation using source tagging of input-output operations
US10437495B1 (en) Storage system with binding of host non-volatile memory to one or more storage devices
US20220318050A1 (en) Migrating Data of Sequential Workloads to Zoned Storage Devices
US11237981B1 (en) Memory scanner to accelerate page classification
US11928492B2 (en) Enforcing quality of service in a virtualized storage environment
US20220317922A1 (en) Provisioning Zoned Storage Devices to Sequential Workloads
US20230403236A1 (en) Techniques to shape network traffic for server-based computational storage

Legal Events

Date Code Title Description
A201 Request for examination