KR102532099B1 - Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same - Google Patents

Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same Download PDF

Info

Publication number
KR102532099B1
KR102532099B1 KR1020210092789A KR20210092789A KR102532099B1 KR 102532099 B1 KR102532099 B1 KR 102532099B1 KR 1020210092789 A KR1020210092789 A KR 1020210092789A KR 20210092789 A KR20210092789 A KR 20210092789A KR 102532099 B1 KR102532099 B1 KR 102532099B1
Authority
KR
South Korea
Prior art keywords
storage
virtual machine
command
completion
vsq
Prior art date
Application number
KR1020210092789A
Other languages
Korean (ko)
Other versions
KR20220059906A (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 US17/504,849 priority Critical patent/US20220137998A1/en
Priority to CN202111260805.6A priority patent/CN114443209A/en
Publication of KR20220059906A publication Critical patent/KR20220059906A/en
Application granted granted Critical
Publication of KR102532099B1 publication Critical patent/KR102532099B1/en

Links

Images

Classifications

    • 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
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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

Abstract

본 개시의 일 실시 예에 따른 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하고, 그리고 호스트 장치에 의해 실행되는 제1 가상 머신을 지원한다. 스토리지 가상화 장치의 동작 방법은, 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치하는 단계, 페치된 제1 커맨드를 제1 SQ로 분배하는 단계, 제1 SQ의 제1 커맨드를 스토리지 장치 세트로 제공하는 단계, 스토리지 장치 세트로부터 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하는 단계로서, 제1 컴플리션은 제1 CQ에 기입되는 것, 제1 CQ의 제1 컴플리션을 가상화 계층에 분배하는 단계, 및 분배된 제1 컴플리션을 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.A storage virtualization device according to an embodiment of the present disclosure communicates with a host device and a set of storage devices, includes a first submission queue (SQ) and a first completion queue (CQ), and includes a first execution by the host device. Virtual machine support. The operating method of the storage virtualization device may include fetching a first command of a first virtual submission queue (VSQ) of a first virtual machine, distributing the fetched first command to a first SQ, and a first command of the first SQ. providing a command to a set of storage devices, receiving a first completion from the set of storage devices indicating that the first command has been processed, the first completion being written to a first CQ; distributing a first completion of to a virtualization layer, and writing the distributed first completion to a first virtual completion queue (VCQ) of a first virtual machine.

Figure R1020210092789
Figure R1020210092789

Description

가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법{STORAGE VIRTUALIZATION DEVICE SUPPORTING A VIRTUAL MACHINE, OPERATION METHOD THEREOF, AND OPERATION METHOD OF SYSTEM HAVING THE SAME}Storage virtualization device supporting a virtual machine, method of operation thereof, and method of operation of a system including the same

본 개시는 가상화된 스토리지 장치의 관리에 관한 것으로, 좀 더 상세하게는 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법에 관한 것이다.The present disclosure relates to management of a virtualized storage device, and more particularly, to a storage virtualization device supporting a virtual machine, an operating method thereof, and a method of operating a system including the same.

스토리지 가상화 기술은 가상 머신에게 가상 스토리지 장치를 제공할 수 있다. 가상 머신은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다. 가상 스토리지 장치는 물리적 스토리지 장치(예를 들어, 실제 스토리지 장치)와 매핑(mapping)될 수 있고, 물리적 스토리지 장치는 가상 머신로부터의 읽기 커맨드나 쓰기 커맨드 등과 같은 요청을 처리하기 위한 데이터를 물리적으로 저장할 수 있다.Storage virtualization technology may provide a virtual storage device to a virtual machine. A virtual machine may be a software-implemented computing environment, and an operating system or application may be installed and executed on the virtual machine. The virtual storage device may be mapped with a physical storage device (eg, a real storage device), and the physical storage device physically stores data for processing a request such as a read command or a write command from a virtual machine. can

가상 머신에게 가상 스토리지 장치를 제공하기 위해, 스토리지 가상화 기술은 가상화 계층을 지원할 수 있다. 가상화 계층은 물리적 스토리지 장치 및 가상 머신 사이의 리소스 관리 기능(예를 들어, 데이터 속도, 대역폭 등을 제어)을 제공할 수 있다. 일반적으로, 소프트웨어 기반의 가상 스토리지 기술은 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공할 수 있지만, CPU(central processing unit)의 리소스가 많이 소모되어 데이터 속도가 저하될 수 있다. 하드웨어 기반의 가상 스토리지 기술은 CPU의 리소스가 절약되고 데이터 속도가 증가할 수 있지만, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공하지 못할 수 있다.To provide virtual storage devices to virtual machines, storage virtualization technology may support a virtualization layer. The virtualization layer may provide resource management functions (eg, control data rate, bandwidth, etc.) between physical storage devices and virtual machines. In general, a software-based virtual storage technology may provide a flexible resource management function and a flexible virtual machine management function, but a lot of resources of a central processing unit (CPU) may be consumed and data speed may be reduced. Hardware-based virtual storage technologies may save CPU resources and increase data rates, but may not provide flexible resource management capabilities and flexible virtual machine management capabilities.

본 개시의 일 실시 예에 따르면, 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.According to an embodiment of the present disclosure, a storage virtualization device supporting a virtual machine, an operating method thereof, and a method of operating a system including the same are provided.

본 개시의 일 실시 예에 따르면, 호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하고, 그리고 상기 호스트 장치에 의해 실행되는 제1 가상 머신을 지원하는 스토리지 가상화 장치의 동작 방법이 제공된다. 상기 방법은, 상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하는 단계, 상기 페치된 제1 커맨드를 상기 제1 SQ로 분배하는 단계, 상기 제1 SQ의 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하는 단계, 상기 스토리지 장치 세트로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하는 단계로서, 상기 제1 컴플리션은 상기 제1 CQ에 기입되는 것, 상기 제1 CQ의 상기 제1 컴플리션을 가상화 계층에 분배하는 단계, 및 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.According to an embodiment of the present disclosure, a first virtual machine communicates with a host device and a set of storage devices, includes a first submission queue (SQ) and a first completion queue (CQ), and is executed by the host device. A method of operating a storage virtualization device that supports is provided. The method may include fetching a first command from a first virtual submission queue (VSQ) of the first virtual machine, distributing the fetched first command to the first SQ, and distributing the fetched first command to the first SQ. providing the first command of to the storage device set; receiving a first completion indicating that the first command has been processed from the storage device set; writing to a CQ, distributing the first completion of the first CQ to a virtualization layer, and sending the distributed first completion to a first virtual completion queue (VCQ) of the first virtual machine. It includes the step of entering

본 개시의 일 실시 예에 따르면, 호스트 장치 및 스토리지 장치 세트와 통신하고, 상기 호스트 장치에 의해 실행되는 제1 가상 머신을 지원하는 스토리지 가상화 장치가 제공된다. 상기 스토리지 가상화 장치는, 상기 호스트 장치와 통신하고, 상기 제1 가상 머신과의 인터페이스를 제공하도록 구성된 SR-IOV(single root input/output virtualization) 어댑터, 상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하도록 구성된 제1 스토리지 가상화 코어, 상기 제1 가상 머신 및 상기 스토리지 장치 세트 사이의 매핑 정보를 포함하는 개재(interposition) 계층, 및 상기 스토리지 장치 세트와 통신하도록 구성되고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하는 스토리지 인터페이스 회로를 포함한다. 상기 스토리지 인터페이스 회로는, 상기 제1 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제1 SQ로 분배된 상기 제1 커맨드를 상기 스토리지 장치 세트로 제공하고, 상기 스토리지 장치 세트로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하고, 상기 제1 컴플리션은 상기 제1 CQ에 기입되고, 그리고 상기 개재 계층을 통해 상기 제1 CQ의 제1 컴플리션을 가상화 계층에 분배하도록 더 구성된다. 그리고, 상기 제1 스토리지 가상화 코어는 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하도록 더 구성된다.According to one embodiment of the present disclosure, a storage virtualization device that communicates with a set of a host device and a storage device and supports a first virtual machine executed by the host device is provided. The storage virtualization device may include: a single root input/output virtualization (SR-IOV) adapter configured to communicate with the host device and provide an interface with the first virtual machine; a first virtual submission (VSQ) adapter of the first virtual machine; To communicate with a first storage virtualization core configured to fetch a first command of a queue, an interposition layer including mapping information between the first virtual machine and the set of storage devices, and the set of storage devices. and a storage interface circuit including a first submission queue (SQ) and a first completion queue (CQ). The storage interface circuit provides the first command distributed from the first storage virtualization core to the first SQ through the intervening layer to the storage device set, and processes the first command from the storage device set. receive a first completion indicating that the first completion is written to the first CQ, and distribute the first completion of the first CQ to a virtualization layer through the intervening layer. do. And, the first storage virtualization core is further configured to write the distributed first completion to a first virtual completion queue (VCQ) of the first virtual machine.

본 개시의 일 실시 예에 따르면, 가상 머신을 실행하는 호스트 장치, 상기 가상 머신을 지원하고 그리고 SQ(submission queue) 및 CQ(completion queue)를 포함하는 스토리지 가상화 장치, 및 상기 스토리지 가상화 장치와 통신하는 스토리지 장치 세트를 포함하는 스토리지 시스템의 동작 방법이 제공된다. 상기 방법은, 상기 호스트 장치에 의해, 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 제1 SQ로 분배하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 제1 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계, 상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계, 상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계, 상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계, 및 상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.According to an embodiment of the present disclosure, a host device that runs a virtual machine, a storage virtualization device that supports the virtual machine and includes a submission queue (SQ) and a completion queue (CQ), and a storage virtualization device that communicates with the storage virtualization device. A method of operating a storage system including a set of storage devices is provided. The method may include generating, by the host device, a doorbell indicating that a command is written in a virtual submission queue (VSQ) of a virtual machine; receiving, by the storage virtualization device, the command of the VSQ of the virtual machine fetching, distributing, by the storage virtualization device, the fetched command to the first SQ; providing, by the storage virtualization device, the command of the first SQ to the set of storage devices; processing the command by the storage device set and the host device; writing a completion indicating that the command has been processed to the CQ by the storage device set; Distributing the completion of the CQ to a virtualization layer, and writing the distributed completion to a virtual completion queue (VCQ) of the virtual machine by the storage virtualization device.

본 개시의 일 실시 예에 따르면, 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.According to an embodiment of the present disclosure, a storage virtualization device supporting a virtual machine, an operating method thereof, and a method of operating a system including the same are provided.

또한, 가상 머신을 위한 가상화 계층을 지원함으로써, CPU의 리소스가 절약되고, 데이터 속도가 향상되고, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법이 제공된다.In addition, by supporting a virtualization layer for virtual machines, CPU resources are saved, data rates are improved, storage virtualization devices that provide flexible resource management functions and flexible virtual machine management functions, an operation method thereof, and the same A method of operating the system is provided.

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 도면이다.
도 4는 본 개시의 일부 실시 예들에 따른 가상 머신의 블록도이다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다.
도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들의 리소스 할당을 설명하는 도면들이다.
도 7a, 도 7b, 및 도 7c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 리소스 할당을 설명하는 도면들이다.
도 8은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다.
1 is a block diagram of a storage system according to an embodiment of the present disclosure.
2 is a block diagram of a storage system according to some embodiments of the present disclosure.
3 is a diagram illustrating an operating method of a storage virtualization apparatus according to some embodiments of the present disclosure.
4 is a block diagram of a virtual machine according to some embodiments of the present disclosure.
5 is a flowchart illustrating a method of operating a storage system according to some embodiments of the present disclosure.
6A, 6B, and 6C are diagrams illustrating resource allocation of a plurality of virtual machines according to some embodiments of the present disclosure.
7A, 7B, and 7C are diagrams illustrating resource allocation between a plurality of virtual machines and a plurality of storage devices according to some embodiments of the present disclosure.
8 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure.
9 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure.

이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present disclosure will be described clearly and in detail to the extent that those skilled in the art can easily practice the embodiments of the present disclosure.

상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 계층(layer) 등의 용어를 참조하여 설명되는 구성 요소들 및 도면에 도시된 기능 블록들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.Components described with reference to terms such as unit, unit, module, layer, etc. used in the detailed description and functional blocks shown in the drawings are software, hardware, or a combination thereof. can be implemented in the form For example, software can be machine code, firmware, embedded code, and application software. For example, the hardware may include an electrical circuit, an electronic circuit, a processor, a computer, an integrated circuit, integrated circuit cores, a pressure sensor, an inertial sensor, a microelectromechanical system (MEMS), a passive component, or a combination thereof. .

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트 장치(110), 스토리지 가상화 장치(120), 및 스토리지 장치 세트(130)를 포함할 수 있다. 스토리지 시스템(100)은 복수의 가상 머신(VM)들을 제공할 수 있다. 가상 머신(VM)은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신(VM) 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다.1 is a block diagram of a storage system according to an embodiment of the present disclosure. Referring to FIG. 1 , a storage system 100 may include a host device 110 , a storage virtualization device 120 , and a storage device set 130 . The storage system 100 may provide a plurality of virtual machines (VMs). A virtual machine (VM) may be a software-implemented computing environment, and an operating system or application may be installed and executed on the virtual machine (VM).

일부 실시 예들에서, 스토리지 시스템(100)은 서버 장치일 수 있다. 예를 들어, 스토리지 시스템(100)은 복수의 사용자들을 위한 복수의 가상 머신(VM)들을 포함하는 클라우드 컴퓨팅 환경을 제공하는 서버 장치일 수 있다. In some embodiments, the storage system 100 may be a server device. For example, the storage system 100 may be a server device providing a cloud computing environment including a plurality of virtual machines (VMs) for a plurality of users.

복수의 가상 머신(VM)들은 물리적 스토리지 장치들(예를 들어, 스토리지 장치 세트(130)와 같은 실제 스토리지 장치들)를 공유하므로, 적은 개수의 스토리지 장치들로 여러 가상 머신(VM)들을 지원할 수 있다. 또한, 가상 머신(VM)의 위치나 동작이 물리적 스토리지 장치들(예를 들어, 스토리지 장치 세트(130))에 제한되지 않을 수 있다. 예를 들어, 제1 스토리지 장치(131)에 대응하는 가상 머신(VM)을 제2 스토리지 장치(132)에 대응하도록 변경할 수 있다.Since the plurality of virtual machines (VMs) share physical storage devices (eg, actual storage devices such as the storage device set 130), multiple virtual machines (VMs) can be supported with a small number of storage devices. there is. Also, the location or operation of the virtual machine (VM) may not be limited to physical storage devices (eg, the storage device set 130). For example, a virtual machine (VM) corresponding to the first storage device 131 may be changed to correspond to the second storage device 132 .

호스트 장치(110)는 가상 머신(VM)을 실행할 수 있다. 예를 들어, 호스트 장치(110)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS; operating system) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. 호스트 장치(110)는 가상 머신(VM)의 데이터 처리를 위한 요청들(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)을 관리할 수 있다.The host device 110 may execute a virtual machine (VM). For example, the host device 110 may actually perform operations for an operating system (OS) and applications executed on a virtual machine (VM). The host device 110 may manage requests (eg, read commands, write commands, etc.) for data processing of the virtual machine (VM).

스토리지 가상화 장치(120)는 가상 머신(VM) 관리를 지원할 수 있다. 스토리지 가상화 장치(120)는 호스트 장치(110) 및 스토리지 장치 세트(130)와 통신할 수 있다. 스토리지 가상화 장치(120)는 가상 머신(VM)으로부터의 요청(예를 들어, 호스트 장치(110)로부터 수신됨)을 스토리지 장치 세트(130)와 같은 실제 스토리지 장치들이 처리할 수 있도록 변경할 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)로부터 수신된 응답을 가상 머신(VM)에서 처리할 수 있도록 변경할 수 있다.The storage virtualization device 120 may support virtual machine (VM) management. The storage virtualization device 120 may communicate with the host device 110 and the storage device set 130 . The storage virtualization device 120 may change a request from a virtual machine (VM) (eg, received from the host device 110 ) so that actual storage devices such as the storage device set 130 can process it. The storage virtualization device 120 may change the response received from the storage device set 130 so that the virtual machine (VM) can process it.

일부 실시 예들에서, 스토리지 가상화 장치(120)는 별도의 하드웨어 장치로 제공될 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 호스트 장치(110) 및 스토리지 장치 세트(130)와 독립적으로, 스토리지 시스템(100)에 설치되거나, 제거되거나, 교체되거나, 또는 동작할 수 있다.In some embodiments, the storage virtualization device 120 may be provided as a separate hardware device. For example, the storage virtualization device 120 may be installed in, removed from, replaced with, or operated in the storage system 100 independently of the host device 110 and the storage device set 130 .

일부 실시 예들에서, 스토리지 가상화 장치(120)는 FPGA(field programmable gate array)로 구현될 수 있다. 그러나, 본 개시의 범위는 이에 제한되지 않으며, 스토리지 가상화 장치(120)는 FPGA 이외에도, 호스트 장치(110) 및 스토리지 장치 세트(130)와 통신하는 다양한 종류의 하드웨어 장치로 구현될 수 있다.In some embodiments, the storage virtualization device 120 may be implemented as a field programmable gate array (FPGA). However, the scope of the present disclosure is not limited thereto, and the storage virtualization device 120 may be implemented with various types of hardware devices communicating with the host device 110 and the storage device set 130 in addition to the FPGA.

스토리지 장치 세트(130)는 제1 내지 제N 스토리지 장치들(131~13N)을 포함할 수 있다. N은 임의의 자연수이다. 제1 내지 제N 스토리지 장치들(131~13N) 각각은 데이터를 저장하는 장치일 수 있다. 예를 들어, 제1 스토리지 장치(131)는 솔리드 스테이트 드라이브(SSD; solid state drive)와 같은 플래시 메모리일 수 있으나, 본 개시는 이에 제한되지 않으며, 제1 스토리지 장치(131)는 쓰기 커맨드에 따라 데이터를 저장하고, 읽기 커맨드에 따라 저장된 데이터를 제공하는 임의의 스토리지 매체일 수 있다.The storage device set 130 may include first to Nth storage devices 131 to 13N. N is any natural number. Each of the first to Nth storage devices 131 to 13N may be a device for storing data. For example, the first storage device 131 may be a flash memory such as a solid state drive (SSD), but the present disclosure is not limited thereto, and the first storage device 131 responds to a write command. It may be any storage medium that stores data and provides the stored data according to a read command.

일부 실시 예들에서, 스토리지 가상화 장치(120)는 서브미션 큐(SQ; submission queue) 및 컴플리션 큐(CQ; completion queue)를 포함할 수 있다. SQ는 읽기 커맨드, 쓰기 커맨드 등과 같은 가상 머신(VM)의 데이터 처리를 위한 요청 및 요청을 위한 물리적 어드레스를 저장하는 버퍼일 수 있다. CQ는 SQ의 요청에 대응하는 응답(예를 들어, 요청에 따른 데이터가 처리된 것을 가리키는 컴플리션)을 저장하는 버퍼일 수 있다.In some embodiments, the storage virtualization device 120 may include a submission queue (SQ) and a completion queue (CQ). SQ may be a buffer for storing a request for data processing of a virtual machine (VM), such as a read command, a write command, and the like, and a physical address for the request. CQ may be a buffer that stores a response corresponding to a request of SQ (eg, completion indicating that data according to the request has been processed).

예를 들어, 스토리지 가상화 장치(120)는 제1 내지 제N SQ들(SQ1~SQN) 및 제1 내지 제N CQ들(CQ1~CQN)을 포함할 수 있다. 제1 SQ(SQ1) 및 제1 CQ(CQ1)는 제1 스토리지 장치(131)에 대응할 수 있다. 제2 SQ(SQ2) 및 제2 CQ(CQ2)는 제2 스토리지 장치(132)에 대응할 수 있다. 제N SQ(SQN) 및 제N CQ(CQN)는 제N 스토리지 장치(13N)에 대응할 수 있다. 도면의 간략함을 위해, 스토리지 장치는 한 쌍의 SQ 및 CQ에 대응하는 것으로 도시되나, 본 개시의 범위는 이에 제한되지 않으며, 스토리지 장치는 여러 쌍들의 SQ 및 CQ에 대응할 수 있고, 이에 대한 설명은 도 6a, 6b, 6c, 7a, 7b, 및 7c를 참조하여 후술될 것이다.For example, the storage virtualization device 120 may include first to Nth SQs SQ1 to SQN and first to Nth CQs CQ1 to CQN. The first SQ (SQ1) and the first CQ (CQ1) may correspond to the first storage device 131. The second SQ (SQ2) and the second CQ (CQ2) may correspond to the second storage device 132. The Nth SQ(SQN) and the Nth CQ(CQN) may correspond to the Nth storage device 13N. For brevity of the drawing, the storage device is shown as corresponding to a pair of SQ and CQ, but the scope of the present disclosure is not limited thereto, and the storage device may correspond to several pairs of SQ and CQ, and description thereof will be described later with reference to FIGS. 6a, 6b, 6c, 7a, 7b, and 7c.

일부 실시 예들에서, 스토리지 가상화 장치(120)는 가상 머신(VM) 및 스토리지 장치의 매핑을 제공할 수 있다. 예를 들어, 가상 머신(VM)은 가상 서브미션 큐(VSQ; virtual submission queue) 및 가상 컴플리션 큐(VCQ; virtual completion queue)를 포함할 수 있다. VSQ는 가상 머신(VM)의 데이터 처리를 위한 요청 및 요청을 위한 가상 어드레스를 저장하는 버퍼일 수 있다. VCQ는 VSQ의 요청에 대응하는 응답(예를 들어, 요청에 따른 데이터가 처리된 것을 가리키는 컴플리션)을 저장하는 버퍼일 수 있다. VSQ 및 VCQ는 물리적으로 호스트 장치(110)의 메모리에 저장될 수 있다. 가상 머신(VM)이 제1 스토리지 장치(131)에 대응하는 경우, 스토리지 가상화 장치(120)는 제1 SQ(SQ1) 및 VSQ의 매핑, 그리고 제1 CQ(CQ1) 및 VCQ의 매핑을 제공할 수 있다.In some embodiments, the storage virtualization device 120 may provide mapping of virtual machines (VMs) and storage devices. For example, a virtual machine (VM) may include a virtual submission queue (VSQ) and a virtual completion queue (VCQ). The VSQ may be a buffer for storing a request for data processing of a virtual machine (VM) and a virtual address for the request. The VCQ may be a buffer that stores a response corresponding to a VSQ request (eg, completion indicating that data according to the request has been processed). VSQ and VCQ may be physically stored in the memory of the host device 110 . When the virtual machine (VM) corresponds to the first storage device 131, the storage virtualization device 120 provides mapping of the first SQ (SQ1) and VSQ, and mapping of the first CQ (CQ1) and VCQ. can

상술된 바와 같이, 본 개시에 따르면, 가상 머신(VM) 관리를 지원하는 스토리지 가상화 장치(120)를 포함하는 스토리지 시스템(100)이 제공된다. 스토리지 가상화 장치(120)가 호스트 장치(110)에 의해 실행되는 소프트웨어가 아닌 별도의 하드웨어로 제공됨으로써, 호스트 장치(110)의 리소스가 절약되고, 데이터 속도가 향상될 수 있다. 스토리지 가상화 장치(120)가 가상 머신(VM) 및 스토리지 장치 세트(130) 간의 매핑을 제공함으로써, 유연한 리소스 관리 기능 및 유연한 가상 머신 관리 기능을 제공할 수 있다.As described above, according to the present disclosure, a storage system 100 including a storage virtualization device 120 supporting virtual machine (VM) management is provided. Since the storage virtualization device 120 is provided as separate hardware rather than software executed by the host device 110, resources of the host device 110 can be saved and data rates can be improved. The storage virtualization device 120 may provide a flexible resource management function and a flexible virtual machine management function by providing mapping between the virtual machine (VM) and the storage device set 130 .

도 2는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록도이다. 도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), I/O(input/output) 메모리 관리 유닛(140), 및 통신 인터페이스(150)를 포함할 수 있다. 스토리지 시스템(100)은 복수의 가상 머신(VM)들을 제공할 수 있다. 2 is a block diagram of a storage system according to some embodiments of the present disclosure. Referring to FIG. 2 , the storage system 100 includes a host device 110, a storage virtualization device 120, a storage device set 130, an input/output (I/O) memory management unit 140, and a communication interface. (150) may be included. The storage system 100 may provide a plurality of virtual machines (VMs).

가상 머신(VM)은 VSQ 및 VCQ를 포함할 수 있다. 일부 실시 예들에서, VSQ 및 VCQ는 각각 스토리지 가상화 장치(120)의 SQ 및 CQ에 대응할 수 있다.A virtual machine (VM) may include VSQ and VCQ. In some embodiments, VSQ and VCQ may correspond to SQ and CQ of the storage virtualization device 120, respectively.

호스트 장치(110)는 CPU(central processing unit)(111) 및 메모리 장치(112)를 포함할 수 있다. CPU(111)는 가상 머신(VM)을 실행할 수 있다. 예를 들어, CPU(111)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. CPU(111)는 가상 머신(VM)의 데이터 처리를 위한 요청들을 관리할 수 있다. CPU(111)는 가상 머신(VM)의 VSQ에 커맨드를 기입(write)할 수 있다. CPU(111)는 가상 머신(VM)의 VCQ에 기입된 컴플리션을 읽을 수 있다.The host device 110 may include a central processing unit (CPU) 111 and a memory device 112 . The CPU 111 may execute a virtual machine (VM). For example, the CPU 111 may actually perform operations for an operating system (OS) and applications executed on a virtual machine (VM). The CPU 111 may manage requests for data processing of a virtual machine (VM). The CPU 111 may write a command to the VSQ of the virtual machine (VM). The CPU 111 can read the completion written in the VCQ of the virtual machine (VM).

메모리 장치(112)는 가상 머신(VM)을 구현하기 위한 데이터를 저장할 수 있다. 예를 들어, 메모리 장치(112)는 가상 머신(VM) 상에서 실행되는 운영 체제(OS) 및 애플리케이션 등과 같은 데이터를 저장할 수 있다. 메모리 장치(112)는 가상 머신(VM)의 VSQ 및 VCQ에 대응하는 물리적인 저장 공간들을 제공할 수 있다. The memory device 112 may store data for implementing a virtual machine (VM). For example, the memory device 112 may store data such as an operating system (OS) and applications executed on a virtual machine (VM). The memory device 112 may provide physical storage spaces corresponding to the VSQ and VCQ of the virtual machine (VM).

스토리지 가상화 장치(120)는 SQ 및 CQ를 포함할 수 있다. 스토리지 가상화 장치(120)는 복수의 가상 머신(VM)들 및 스토리지 장치 세트(130) 간의 매핑을 제공할 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 가상 머신(VM)의 VSQ에 기입된 커맨드를 스토리지 장치 세트(130)에서 처리될 수 있도록 변경하고, 변경된 커맨드를 SQ에 저장할 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에 의해 CQ에 기입된 컴플리션을 가상 머신(VM)에 의해 처리될 수 있도록 변경하고, 변경된 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다.The storage virtualization device 120 may include SQ and CQ. The storage virtualization device 120 may provide mapping between a plurality of virtual machines (VMs) and the storage device set 130 . For example, the storage virtualization device 120 may change a command written in the VSQ of the virtual machine (VM) so that it can be processed by the storage device set 130 and store the changed command in the SQ. The storage virtualization device 120 changes the completion written to the CQ by the storage device set 130 so that it can be processed by the virtual machine (VM), and stores the changed completion in the VCQ of the virtual machine (VM). can be entered.

스토리지 장치 세트(130)는 제1 내지 제N 스토리지 장치들(131~13N)을 포함할 수 있다. 제1 내지 제N 스토리지 장치들(131~13N) 각각은 가상 머신(VM)의 요청(예를 들어, 읽기 커맨드, 쓰기 커맨드 등)에 따른 데이터를 저장하거나, 또는 저장된 데이터를 제공할 수 있다. 도면의 간략함을 위해, 스토리지 가상화 장치(120)는 한 쌍의 SQ 및 CQ를 포함하는 것으로 도시되나, 스토리지 가상화 장치(120)는 제1 내지 제N 스토리지 장치들(131~13N) 각각에 대응하는 SQ 및 CQ의 쌍들을 제공할 수 있다.The storage device set 130 may include first to Nth storage devices 131 to 13N. Each of the first to Nth storage devices 131 to 13N may store data or provide stored data according to a request (eg, a read command, a write command, etc.) of the virtual machine (VM). For simplicity of drawing, the storage virtualization device 120 is shown as including a pair of SQ and CQ, but the storage virtualization device 120 corresponds to each of the first to N th storage devices 131 to 13N. It is possible to provide pairs of SQ and CQ that

I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 가상 어드레스 및 호스트 장치(110)의 메모리 장치(112)의 물리적 어드레스 사이의 변환을 관리할 수 있다. 예를 들어, 가상 머신(VM)은 CPU(111)에 의해 실행된 소프트웨어일 수 있고, 가상 머신(VM) 상의 데이터를 위한 가상 어드레스는 메모리 장치(112)의 실제 데이터를 위한 물리적 어드레스에 대응할 수 있다. I/O 메모리 관리 유닛(140)은 가상 어드레스를 대응하는 물리적 어드레스로 변환하거나, 또는 물리적 어드레스를 대응하는 가상 어드레스로 변환할 수 있다.The I/O memory management unit 140 may manage translation between a virtual address of the virtual machine (VM) and a physical address of the memory device 112 of the host device 110 . For example, the virtual machine (VM) may be software executed by the CPU 111, and a virtual address for data on the virtual machine (VM) may correspond to a physical address for real data in the memory device 112. there is. The I/O memory management unit 140 may translate a virtual address into a corresponding physical address, or a physical address into a corresponding virtual address.

가상 머신(VM)의 VSQ에 커맨드가 기입되면, 스토리지 가상화 장치(120)는 가상 머신(VM)의 VSQ에 기입된 커맨드를 직접 읽기 어려울 수 있다. I/O 메모리 관리 유닛(140)은, 스토리지 가상화 장치(120)로부터 VSQ의 커맨드의 요청(예를 들어, VSQ의 커맨드를 페치(fetch)하기 위한 요청)이 수신되면, 가상 머신(VM)의 가상 어드레스를 메모리 장치(112)의 물리적 어드레스로 변환할 수 있다. I/O 메모리 관리 유닛(140)은 변환된 물리적 어드레스를 포함하는 요청을 호스트 장치(110)로 제공할 수 있다. 스토리지 가상화 장치(120)는 메모리 장치(112)의 실제 데이터를 수신할 수 있고, 실제 데이터는 가상 머신(VM)의 VSQ에 기입된 커맨드와 동일할 수 있다.When a command is written in the VSQ of the virtual machine (VM), the storage virtualization device 120 may have difficulty directly reading the command written in the VSQ of the virtual machine (VM). When the I/O memory management unit 140 receives a VSQ command request (eg, a request to fetch a VSQ command) from the storage virtualization device 120, the virtual machine (VM) A virtual address may be converted to a physical address of the memory device 112 . The I/O memory management unit 140 may provide a request including the translated physical address to the host device 110 . The storage virtualization device 120 may receive actual data of the memory device 112 , and the actual data may be the same as a command written in VSQ of the virtual machine (VM).

일부 실시 예들에서, I/O 메모리 관리 유닛(140)은 생략될 수 있다. I/O 메모리 관리 유닛(140)이 생략되는 경우, 스토리지 가상화 장치(120)는 가상 머신(VM)의 가상 어드레스 및 메모리 장치(112)의 물리적 어드레스의 매핑 정보를 관리할 수 있다.In some embodiments, I/O memory management unit 140 may be omitted. When the I/O memory management unit 140 is omitted, the storage virtualization device 120 may manage mapping information of a virtual address of a virtual machine (VM) and a physical address of the memory device 112 .

통신 인터페이스(150)는 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140) 간의 통신을 위한 인터페이스를 제공할 수 있다. 일부 실시 예들에서, 통신 인터페이스(150)는 PCIe(peripheral component interconnect express) 인터페이스로 구현될 수 있다. 예를 들어, 통신 인터페이스(150)는 PCIe 스위치(미도시)를 포함할 수 있다. PCIe 스위치는 호스트 장치(110)의 개입 없이 스토리지 가상화 장치(120) 및 스토리지 장치 세트(130) 사이의 통신을 지원할 수 있다.The communication interface 150 may provide an interface for communication between the host device 110 , the storage virtualization device 120 , the storage device set 130 , and the I/O memory management unit 140 . In some embodiments, the communication interface 150 may be implemented as a peripheral component interconnect express (PCIe) interface. For example, the communication interface 150 may include a PCIe switch (not shown). The PCIe switch may support communication between the storage virtualization device 120 and the storage device set 130 without intervention of the host device 110 .

도 3은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 도면이다. 도 3을 참조하면, 스토리지 가상화 장치(120)는 가상 머신(VM), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다. 스토리지 가상화 장치(120)가 가상 머신(VM)과 통신하는 것은 가상 머신(VM)을 실행하는 호스트 장치(110)와 물리적으로 통신하는 것을 가리킬 수 있다.3 is a diagram illustrating an operating method of a storage virtualization apparatus according to some embodiments of the present disclosure. Referring to FIG. 3 , the storage virtualization device 120 may communicate with a virtual machine (VM), a storage device set 130 , and an I/O memory management unit 140 . Communication between the storage virtualization device 120 and the virtual machine (VM) may refer to physical communication with the host device 110 executing the virtual machine (VM).

스토리지 가상화 장치(120)는 SR-IOV(single root input/output virtualization) 어댑터(121), 도어벨 레지스터(122), 스토리지 가상화 코어(123), gPA-to-hPA(guest physical address to host physical address) 테이블(124), DMA(direct memory access) 엔진(125), 개재(interposition) 계층(126), 및 스토리지 인터페이스 회로(127)를 포함할 수 있다.The storage virtualization device 120 includes a single root input/output virtualization (SR-IOV) adapter 121, a doorbell register 122, a storage virtualization core 123, a guest physical address to host physical address (gPA-to-hPA) ) table 124, a direct memory access (DMA) engine 125, an interposition layer 126, and a storage interface circuit 127.

SR-IOV 어댑터(121)는 가상 머신(VM)을 실행하는 호스트 장치와 통신하고, 가상 머신(VM)과의 인터페이스를 제공할 수 있다. SR-IOV 어댑터(121)는 복수의 VF(Virtual Function)들을 포함할 수 있다. 복수의 VF들 각각은 복수의 VM들에 대응할 수 있다. 복수의 VF들 각각은 대응하는 가상 머신(VM)과의 인터페이스를 제공할 수 있다. VF는 대응하는 가상 머신(VM)이 소프트웨어 계층을 거치지 않고 스토리지 장치 세트(130)로의 액세스를 가능하게 할 수 있다. SR-IOV 어댑터(121) 내에서 복수의 VF들 각각은 독립적인 스토리지 장치처럼 동작할 수 있다. SR-IOV 어댑터(121)는 복수의 가상 머신(VM)들이 하나의 물리적인 장치(예를 들어, 제1 스토리지 장치(131))를 공유하는 것을 지원할 수 있다.The SR-IOV adapter 121 may communicate with a host device running a virtual machine (VM) and provide an interface with the virtual machine (VM). The SR-IOV adapter 121 may include a plurality of Virtual Functions (VFs). Each of the plurality of VFs may correspond to a plurality of VMs. Each of the plurality of VFs may provide an interface with a corresponding virtual machine (VM). The VF may allow a corresponding virtual machine (VM) to access the storage device set 130 without going through a software layer. Each of the plurality of VFs within the SR-IOV adapter 121 may operate like an independent storage device. The SR-IOV adapter 121 may support a plurality of virtual machines (VMs) sharing one physical device (eg, the first storage device 131).

도어벨 레지스터(122)는 SR-IOV 어댑터(121) 및 스토리지 가상화 코어(123)와 통신할 수 있다. 도어벨 레지스터(122)는 가상 머신(VM)을 실행하는 호스트 장치(110)로부터 SR-IOV 어댑터(121)를 통해 도어벨을 수신할 수 있다. 도어벨은 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 가리키는 신호일 수 있다. 도어벨 레지스터(122)는 스토리지 가상화 코어(123)의 SQ 폴링(polling)을 통해, 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 스토리지 가상화 코어(123)에 알릴 수 있다.The doorbell register 122 may communicate with the SR-IOV adapter 121 and the storage virtualization core 123 . The doorbell register 122 may receive a doorbell from the host device 110 running a virtual machine (VM) through the SR-IOV adapter 121 . The doorbell may be a signal indicating that a command is written in the VSQ of the virtual machine (VM). The doorbell register 122 may notify the storage virtualization core 123 that a command is written in the VSQ of the virtual machine (VM) through SQ polling of the storage virtualization core 123 .

스토리지 가상화 코어(123)는 도어벨 레지스터(122), gPA-to-hPA 테이블(124), DMA 엔진(125), 개재 계층(126), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다.Storage virtualization core 123 may communicate with doorbell register 122, gPA-to-hPA table 124, DMA engine 125, intervening layer 126, and I/O memory management unit 140. there is.

일부 실시 예들에서, 스토리지 가상화 장치(120)는 복수의 스토리지 가상화 코어(123)들을 포함할 수 있다. 예를 들어, 복수의 스토리지 가상화 코어(123)들은 복수의 가상 머신(VM)들에 각각 대응할 수 있다. 하나의 스토리지 가상화 코어(123)는 하나의 가상 머신(VM)에 대응할 수 있다.In some embodiments, the storage virtualization device 120 may include a plurality of storage virtualization cores 123 . For example, the plurality of storage virtualization cores 123 may each correspond to a plurality of virtual machines (VMs). One storage virtualization core 123 may correspond to one virtual machine (VM).

그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니고, 본 개시가 속한 기술 분야에서의 통상의 기술자에 의해, 하나의 스토리지 가상화 코어(123)가 복수의 가상 머신(VM)들에 대응하거나, 또는 복수의 스토리지 가상화 코어(123)들이 하나의 가상 머신(VM)에 대응하도록 변경될 수 있다.However, the scope of the present disclosure is not necessarily limited thereto, and by a person skilled in the art to which the present disclosure belongs, one storage virtualization core 123 corresponds to a plurality of virtual machines (VMs), or A plurality of storage virtualization cores 123 may be changed to correspond to one virtual machine (VM).

스토리지 가상화 코어(123)는 SQ 폴링, CQ 핸들링, 어드레스 변환, 및 인터럽트 생성을 수행할 수 있다. SQ 폴링은 도어벨 레지스터(122)에 도어벨이 저장되었는지 여부를 주기적으로 확인하는 동작을 가리킬 수 있다. CQ 핸들링은 스토리지 인터페이스 회로(127)의 CQ에 기입된 컴플리션을 가상화 계층으로 분배하고 관리하는 동작을 가리킬 수 있다. 어드레스 변환은 gPA-to-hPA 테이블(124)을 참조하여 가상 머신(VM)의 가상 어드레스 및 가상 머신(VM)을 실행하는 호스트 장치(110)의 물리적 어드레스 사이의 변환을 가리킬 수 있다. 인터럽트 생성은 가상 머신(VM)을 실행하는 호스트 장치(110)로 제공될 인터럽트를 생성하는 것을 가리킬 수 있다. 인터럽트는 가상 머신(VM)의 VCQ에 기입된 컴플리션의 처리를 요청하는 신호일 수 있다.The storage virtualization core 123 may perform SQ polling, CQ handling, address translation, and interrupt generation. SQ polling may refer to an operation of periodically checking whether a doorbell is stored in the doorbell register 122 . CQ handling may refer to an operation of distributing and managing the completion written in the CQ of the storage interface circuit 127 to a virtualization layer. Address translation may indicate translation between a virtual address of a virtual machine (VM) and a physical address of a host device 110 executing the virtual machine (VM) by referring to the gPA-to-hPA table 124 . Interrupt generation may refer to generating an interrupt to be provided to the host device 110 executing a virtual machine (VM). The interrupt may be a signal requesting processing of the completion written in the VCQ of the virtual machine (VM).

일부 실시 예들에서, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 저장된 도어벨을 처리할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 도어벨이 저장된 것을 확인하고, I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VSQ의 커맨드를 페치하고, 그리고 페치된 커맨드를 개재 계층(126)으로 제공할 수 있다.In some embodiments, the storage virtualization core 123 may process the doorbell stored in the doorbell register 122 . For example, the storage virtualization core 123 confirms that the doorbell is stored in the doorbell register 122, fetches a VSQ command of the virtual machine (VM) through the I/O memory management unit 140, And it can provide the fetched command to the intervening layer 126 .

일부 실시 예들에서, 스토리지 가상화 코어(123)는 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 스토리지 인터페이스 회로(127)로부터 개재 계층(126)을 통해 컴플리션을 수신하고, 그리고 I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다.In some embodiments, the storage virtualization core 123 may write the completion to the VCQ of the virtual machine (VM). For example, the storage virtualization core 123 receives the completion from the storage interface circuit 127 through the intervening layer 126, and the I/O memory management unit 140 of the virtual machine (VM). Completion may be written on the VCQ.

gPA-to-hPA 테이블(124)은 게스트 물리적 어드레스 및 호스트 물리적 어드레스의 매핑을 관리할 수 있다. 게스트 물리적 어드레스는 가상 머신(VM)의 가상 어드레스를 의미할 수 있다. 호스트 물리적 어드레스는 가상 머신(VM)을 실행하는 호스트 장치(110)의 물리적 어드레스를 의미할 수 있다. 게스트 물리적 어드레스 및 호스트 물리적 어드레스는 모두 가상 머신(VM)의 DMA 버퍼의 어드레스에 대응할 수 있다. gPA-to-hPA 테이블(124)의 매핑 정보는 스토리지 가상화 코어(123)의 어드레스 변환을 위해 사용될 수 있다.The gPA-to-hPA table 124 may manage the mapping of guest physical addresses and host physical addresses. The guest physical address may refer to a virtual address of a virtual machine (VM). The host physical address may refer to a physical address of the host device 110 executing a virtual machine (VM). Both the guest physical address and the host physical address may correspond to the address of the DMA buffer of the virtual machine (VM). Mapping information of the gPA-to-hPA table 124 may be used for address translation of the storage virtualization core 123 .

DMA 엔진(125)은 가상 머신(VM) 및 스토리지 장치 세트(130) 간의 DMA 동작을 지원할 수 있다. DMA 동작은 VSQ에 기입된 커맨드를 처리하는 것일 수 있다. DMA 동작은 어드레스 변환 없이 수행될 수 있다. 도면의 복잡함을 피하기 위해 도 3에서 명시적으로 표현되지는 않았으나, DMA 엔진(125)은 가상 머신(VM)의 VSQ의 커맨드를 페치하는 것 그리고 가상 머신(VM)의 VCQ에 컴플리션을 기입하는 것을 보조할 수 있다.The DMA engine 125 may support a DMA operation between a virtual machine (VM) and the storage device set 130 . A DMA operation may be processing a command written to VSQ. DMA operations can be performed without address translation. Although not explicitly expressed in FIG. 3 to avoid complexity of the drawing, the DMA engine 125 fetches the command of the VSQ of the virtual machine (VM) and writes the completion to the VCQ of the virtual machine (VM). can help you do it.

개재 계층(126)은 스토리지 가상화 코어(123) 및 스토리지 인터페이스 회로(127)와 통신할 수 있다. 개재 계층(126)은 장치 매핑 정보를 포함할 수 있다. 장치 매핑 정보는 복수의 가상 머신(VM)들 및 스토리지 장치 세트(130)간의 대응 관계를 포함할 수 있다. The intervening layer 126 may communicate with the storage virtualization core 123 and the storage interface circuitry 127 . Intervening layer 126 may include device mapping information. The device mapping information may include a correspondence between a plurality of virtual machines (VMs) and the storage device set 130 .

일부 실시 예들에서, 가상 머신(VM)을 위한 VSQ 및 VCQ는 스토리지 장치를 위한 SQ 및 CQ와 대응 관계를 가질 수 있다. 예를 들어, 장치 매핑 정보는 가상 머신(VM)의 VSQ 및 VCQ는 제1 스토리지 장치(131)를 위한 SQ 및 CQ에 각각 대응한다는 정보를 포함할 수 있다.In some embodiments, VSQ and VCQ for a virtual machine (VM) may have a corresponding relationship with SQ and CQ for a storage device. For example, the device mapping information may include information indicating that VSQ and VCQ of the virtual machine (VM) respectively correspond to SQ and CQ for the first storage device 131 .

일부 실시 예들에서, 개재 계층(126)은 VSQ 및 SQ 사이의 매핑을 관리할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 가상 머신(VM)의 VSQ의 커맨드를 페치할 수 있다. 개재 계층(126)은 스토리지 가상화 코어(123)로부터 페치된 커맨드를 수신할 수 있다. 개재 계층(126)은 수신된 커맨드를 스토리지 인터페이스 회로(127)의 SQ에 분배할 수 있다.In some embodiments, intervening layer 126 may manage the mapping between VSQ and SQ. For example, the storage virtualization core 123 may fetch a VSQ command of a virtual machine (VM). The intervening layer 126 may receive a command fetched from the storage virtualization core 123 . The intervening layer 126 may distribute the received command to the SQ of the storage interface circuit 127 .

일부 실시 예들에서, 개재 계층(126)은 VCQ 및 CQ 사이의 매핑을 관리할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입될 수 있다. 개재 계층(126)은 스토리지 인터페이스 회로(127)의 CQ에 기입된 컴플리션을 가상화 계층에 분배할 수 있다. 개재 계층(126)은 가상화 계층에 분배된 컴플리션을 스토리지 가상화 코어(123)로 제공할 수 있다.In some embodiments, intervening layer 126 may manage the mapping between VCQ and CQ. For example, completion may be written to CQ of the storage interface circuit 127 . The intervening layer 126 may distribute the completion written in the CQ of the storage interface circuit 127 to the virtualization layer. The intervening layer 126 may provide the storage virtualization core 123 with the completion distributed to the virtualization layer.

스토리지 인터페이스 회로(127)는 개재 계층(126) 및 스토리지 장치 세트(130)와 통신할 수 있다.The storage interface circuitry 127 may communicate with the intervening layer 126 and the storage device set 130 .

일부 실시 예들에서, 스토리지 가상화 장치(120)는 복수의 스토리지 인터페이스 회로(127)를 포함할 수 있다. 예를 들어, 복수의 스토리지 인터페이스 회로(127)들은 스토리지 장치 세트(130)에 포함된 복수의 스토리지 장치들에 각각 대응할 수 있다. 제1 스토리지 장치(131)는 스토리지 인터페이스 회로(127)에 대응할 수 있다.In some embodiments, the storage virtualization device 120 may include a plurality of storage interface circuits 127 . For example, the plurality of storage interface circuits 127 may respectively correspond to a plurality of storage devices included in the storage device set 130 . The first storage device 131 may correspond to the storage interface circuit 127 .

그러나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니고, 본 개시가 속한 기술 분야에서의 통상의 기술자에 의해, 하나의 스토리지 인터페이스 회로(127)가 복수의 스토리지 장치들에 대응하거나, 또는 제1 스토리지 장치(131)가 복수의 스토리지 인터페이스 회로(127)들에 대응하도록 변경될 수 있다. 다만, 개재 계층(126)은 한 쌍의 SQ 및 CQ가 한 쌍의 VSQ 및 VCQ에 대응하도록 매핑 정보를 관리할 수 있다.However, the scope of the present disclosure is not necessarily limited thereto, and by a person skilled in the art to which the present disclosure belongs, one storage interface circuit 127 may correspond to a plurality of storage devices, or a first storage device. The device 131 may be modified to correspond to the plurality of storage interface circuits 127 . However, the intervening layer 126 may manage mapping information so that a pair of SQ and CQ corresponds to a pair of VSQ and VCQ.

스토리지 인터페이스 회로(127)는 SQ 및 CQ를 포함할 수 있다. 스토리지 인터페이스 회로(127)는 CQ 폴링 및 SQ 핸들링을 수행할 수 있다. CQ 폴링은 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입되었는지 여부를 주기적으로 확인하는 동작을 가리킬 수 있다. SQ 핸들링은 개재 계층(126)을 통해 SQ로 분배된 커맨드를 관리하는 동작을 가리킬 수 있다.The storage interface circuit 127 may include SQ and CQ. The storage interface circuit 127 may perform CQ polling and SQ handling. CQ polling may refer to an operation of periodically checking whether completion is written in the CQ of the storage interface circuit 127 . SQ handling may refer to the operation of managing commands distributed to the SQ through the intervening layer 126.

일부 실시 예들에서, 스토리지 인터페이스 회로(127)는 스토리지 장치 세트(130)로 SQ에 저장된 커맨드를 제공할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)는 SQ에 커맨드가 기입된 것을 알리는 도어벨을 제1 스토리지 장치(131)로 출력할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터에 저장된 도어벨에 기초하여, SQ에 기입된 커맨드를 페치할 수 있다.In some embodiments, the storage interface circuit 127 may provide a command stored in the SQ to the storage device set 130 . For example, the storage interface circuit 127 may output a doorbell indicating that a command is written in SQ to the first storage device 131 . The first storage device 131 may fetch a command written in the SQ based on the doorbell stored in the doorbell register.

일부 실시 예들에서, 스토리지 인터페이스 회로(127)는 스토리지 장치 세트(130)로부터 컴플리션을 수신할 수 있다. 예를 들어, 제1 스토리지 장치(131)는 SQ의 커맨드를 페치할 수 있다. 제1 스토리지 장치(131)는 페치된 커맨드를 처리할 수 있다. 제1 스토리지 장치(131)는 커맨드가 처리된 것을 가리키는 컴플리션을 스토리지 인터페이스 회로(127)의 CQ에 기입할 수 있다.In some embodiments, the storage interface circuit 127 may receive a completion from the storage device set 130 . For example, the first storage device 131 may fetch a command of SQ. The first storage device 131 may process the fetched command. The first storage device 131 may write completion indicating that the command has been processed in the CQ of the storage interface circuit 127 .

스토리지 가상화 장치(120)는 복수의 가상 머신(VM)들과 통신할 수 있다. 가상 머신(VM)은 VSQ, VCQ, 및 DMA 버퍼를 포함할 수 있다. VSQ는 스토리지 장치 세트(130)에서 처리될 커맨드를 저장할 수 있다. 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 스토리지 가상화 장치(120)에게 알릴 수 있고, 스토리지 가상화 장치(120)는 I/O 메모리 관리 유닛(140)을 통해 VSQ의 커맨드를 페치할 수 있다. The storage virtualization device 120 may communicate with a plurality of virtual machines (VMs). A virtual machine (VM) may include VSQ, VCQ, and DMA buffers. The VSQ may store commands to be processed in the storage device set 130 . The virtual machine (VM) may inform the storage virtualization device 120 that a command is written in the VSQ, and the storage virtualization device 120 may fetch the command of the VSQ through the I/O memory management unit 140. .

VCQ는 VSQ의 커맨드가 처리된 것을 가리키는 컴플리션을 저장할 수 있다. 스토리지 가상화 장치(120)는 스토리지 인터페이스 회로(127)의 CQ에 컴플리션이 기입되면, I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 가상 머신(VM)은 VCQ에 컴플리션이 기입된 것을 확인하고, 컴플리션을 처리할 수 있다. 가상 머신(VM)은 스토리지 가상화 장치(120)에게 VCQ의 컴플리션이 처리된 것을 알릴 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에게 컴플리션이 처리된 것을 알릴 수 있다.The VCQ may store a completion indicating that the command of the VSQ has been processed. When the storage virtualization device 120 writes the completion to the CQ of the storage interface circuit 127, the I/O memory management unit 140 may write the completion to the VCQ of the virtual machine (VM). . The virtual machine (VM) may confirm that the completion is written in the VCQ and process the completion. The virtual machine (VM) may notify the storage virtualization device 120 that the completion of the VCQ has been processed. The storage virtualization device 120 may inform the storage device set 130 that completion has been processed.

DMA 버퍼는 스토리지 장치 세트(130)와 통신할 수 있다. DMA 버퍼는 DMA 동작(예를 들어, DMA 읽기 동작, DMA 쓰기 동작 등)을 통해 스토리지 장치 세트(130)와 데이터를 교환할 수 있다. DMA 버퍼 및 스토리지 장치 세트(130) 사이에서 DMA 동작에 따라 데이터를 교환하는 것은 SQ에 기입된 커맨드를 처리하는 것을 의미할 수 있다. 스토리지 가상화 장치(120)의 DMA 엔진(125)은 DMA 버퍼의 DMA 동작을 보조할 수 있다. 예를 들어, DMA 엔진(125)은 DMA 버퍼를 포함하는 가상 머신(VM)이 실행되는 호스트 메모리 및 스트리지 장치 세트(130)의 제1 스토리지 장치(131) 사이의 데이터 전송을 보조하거나 또는 관리할 수 있다.The DMA buffer may communicate with the storage device set 130 . The DMA buffer may exchange data with the storage device set 130 through a DMA operation (eg, a DMA read operation, a DMA write operation, etc.). Exchanging data according to the DMA operation between the DMA buffer and the storage device set 130 may mean processing a command written to the SQ. The DMA engine 125 of the storage virtualization device 120 may assist the DMA operation of the DMA buffer. For example, the DMA engine 125 assists or manages data transfer between the first storage device 131 of the storage device set 130 and a host memory in which a virtual machine (VM) including a DMA buffer is running. can do.

이 때, 스토리지 가상화 장치(120)는 gPA-to-hPA 테이블(124)을 참조하여 가상 머신(VM)의 가상 어드레스(예를 들어, 게스트 물리적 어드레스)를 호스트 장치(110)에서의 물리적 어드레스(예를 들어, 호스트 물리적 어드레스)로 변경하여 스토리지 장치 세트(130)로 제공하므로, 가상 머신(VM)의 DMA 버퍼 및 스토리지 장치 세트(130) 사이의 DMA 동작은 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 수행될 수 있다.At this time, the storage virtualization device 120 refers to the gPA-to-hPA table 124 to convert a virtual address (eg, guest physical address) of a virtual machine (VM) to a physical address (eg, a guest physical address) in the host device 110 ( For example, host physical address) and provided to the storage device set 130, the DMA operation between the DMA buffer of the virtual machine (VM) and the storage device set 130 is performed by the I/O memory management unit 140 It can be performed without address conversion by

스토리지 장치 세트(130)는 복수의 스토리지 장치들을 포함할 수 있다. 복수의 스토리지 장치들 각각은 도어벨 레지스터를 포함할 수 있다. 예를 들어, 스토리지 장치 세트(130)는 제1 스토리지 장치(131)를 포함할 수 있다. 제1 스토리지 장치(131)는 스토리지 인터페이스 회로(127)의 SQ 및 CQ의 쌍과 대응할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터를 포함할 수 있다. 도어벨 레지스터는 스토리지 인터페이스 회로(127)의 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 저장할 수 있다. 제1 스토리지 장치(131)는 도어벨 레지스터에 저장된 도어벨에 기초하여 스토리지 인터페이스 회로(127)의 SQ의 커맨드를 페치할 수 있다. 제1 스토리지 장치(131)는 가상 머신(VM)과 통신하여 커맨드를 처리(예를 들어, DMA 동작을 수행)할 수 있다.The storage device set 130 may include a plurality of storage devices. Each of the plurality of storage devices may include a doorbell register. For example, the storage device set 130 may include a first storage device 131 . The first storage device 131 may correspond to a pair of SQ and CQ of the storage interface circuit 127 . The first storage device 131 may include a doorbell register. The doorbell register may store a doorbell indicating that a command has been written to SQ of the storage interface circuit 127 . The first storage device 131 may fetch the SQ command of the storage interface circuit 127 based on the doorbell stored in the doorbell register. The first storage device 131 may process a command (eg, perform a DMA operation) by communicating with a virtual machine (VM).

I/O 메모리 관리 유닛(140)은 가상 머신(VM)을 실행하는 호스트 장치(110)의 입력 및 출력을 관리할 수 있다. I/O 메모리 관리 유닛(140)은 가상 어드레스 및 물리적 어드레스 사이의 어드레스 변환을 수행함으로써, 스토리지 가상화 장치(120) 및 가상 머신(VM) 사이의 통신을 보조할 수 있다. The I/O memory management unit 140 may manage input and output of the host device 110 running a virtual machine (VM). The I/O memory management unit 140 may assist communication between the storage virtualization device 120 and a virtual machine (VM) by performing address conversion between a virtual address and a physical address.

예를 들어, 스토리지 가상화 장치(120)로부터 VSQ의 커맨드를 페치하기 위한 요청이 있으면, 이러한 요청의 VSQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에서 데이터를 읽음으로써, VSQ의 커맨드를 페치할 수 있다.For example, if there is a request to fetch a VSQ command from the storage virtualization device 120 , a virtual address corresponding to the VSQ of the request may be converted into a physical address of the host device 110 . The storage virtualization device 120 may fetch the VSQ command by reading data from the converted physical address.

예를 들어, 스토리지 가상화 장치(120)로부터 VCQ에 컴플리션을 기입하기 위한 요청이 있으면, 이러한 요청의 VCQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에서 데이터를 기입함으로써, VCQ에 컴플리션을 기입할 수 있다.For example, when there is a request to write a completion in the VCQ from the storage virtualization device 120 , a virtual address corresponding to the VCQ of the request may be converted into a physical address of the host device 110 . The storage virtualization device 120 may write completion to the VCQ by writing data at the converted physical address.

일부 실시 예들에서, I/O 메모리 관리 유닛(140)은 선택적으로 사용될 수 있다. 스토리지 가상화 코어(123)에 의해 가상 어드레스 및 물리적 어드레스 사이의 어드레스 변환이 수행된 경우, I/O 메모리 관리 유닛(140)은 생략될 수 있다.In some embodiments, I/O memory management unit 140 may optionally be used. When address translation between a virtual address and a physical address is performed by the storage virtualization core 123, the I/O memory management unit 140 may be omitted.

상술된 바와 같이, 도 3을 참조하여 가상 머신(VM), 가상 머신(VM)을 실행하는 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)의 구조 및 기능 등이 설명되었다. As described above, referring to FIG. 3 , a virtual machine (VM), a host device 110 running the virtual machine (VM), a storage virtualization device 120, a set of storage devices 130, and I/O memory management The structure and function of the unit 140 have been described.

본 개시의 일부 실시 예들에 따르면, 스토리지 가상화 장치(120)는 일련의 동작들을 수행하여 가상 머신(VM) 및 스토리지 장치 세트(130) 사이의 통신을 지원할 수 있다. 예를 들어, 스토리지 가상화 장치(120)의 동작 방법은 제1 내지 제9 동작들(①~⑨)을 포함할 수 있다.According to some embodiments of the present disclosure, the storage virtualization device 120 may support communication between a virtual machine (VM) and the storage device set 130 by performing a series of operations. For example, the operating method of the storage virtualization device 120 may include first to ninth operations ① to ⑨.

제1 동작(①)에서, 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 알릴 수 있다. 예를 들어, 복수의 가상 머신(VM)들은 SR-IOV 어댑터(121)의 복수의 VF들(예를 들어, 가상 머신(VM)과의 인터페이스를 제공하는 모듈들)에 각각 대응할 수 있다. VF가 제공하는 인터페이스를 통해, 가상 머신(VM)은 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 출력할 수 있다. SR-IOV 어댑터(121)는 가상 머신(VM)으로부터 수신된 도어벨을 도어벨 레지스터(122)로 전송할 수 있다.In a first operation (①), the virtual machine (VM) may inform VSQ that a command is written. For example, a plurality of virtual machines (VMs) may each correspond to a plurality of VFs (eg, modules providing interfaces with virtual machines (VMs)) of the SR-IOV adapter 121 . Through the interface provided by the VF, the virtual machine (VM) may output a doorbell indicating that a command is written in the VSQ. The SR-IOV adapter 121 may transmit the doorbell received from the virtual machine (VM) to the doorbell register 122 .

제2 동작(②)에서, 스토리지 가상화 장치(120)는 VSQ에 커맨드가 기입된 것을 확인하고, VSQ의 커맨드를 페치할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 도어벨 레지스터(122)에 SQ 폴링을 수행하여 도어벨이 저장된 것을 확인할 수 있다. 스토리지 가상화 코어(123)는 VSQ의 커맨드를 요청할 수 있고, 요청에 대한 응답으로 VSQ의 커맨드를 수신할 수 있다.In the second operation (②), the storage virtualization device 120 may check that a command is written in the VSQ and fetch the command of the VSQ. For example, the storage virtualization core 123 may perform SQ polling on the doorbell register 122 to confirm that the doorbell is stored. The storage virtualization core 123 may request a VSQ command and receive a VSQ command as a response to the request.

일부 실시 예들에서, 스토리지 가상화 코어(123)는 I/O 메모리 관리 유닛(140)을 통해 VSQ의 커맨드를 요청할 수 있다. 예를 들어, VSQ의 커맨드를 페치하는 것은 호스트 장치(110)에서 실제 데이터를 읽는 것을 의미할 수 있다. I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 VSQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 변환된 물리적 어드레스에 기초하여, 스토리지 가상화 코어(123)는 VSQ의 커맨드를 페치할 수 있다.In some embodiments, the storage virtualization core 123 may request a VSQ command through the I/O memory management unit 140 . For example, fetching a VSQ command may mean reading actual data from the host device 110 . The I/O memory management unit 140 may convert a virtual address corresponding to VSQ of the virtual machine (VM) into a physical address of the host device 110 . Based on the converted physical address, the storage virtualization core 123 may fetch the VSQ command.

제3 동작(③)에서, 스토리지 가상화 장치(120)는 페치된 VSQ의 커맨드를 스토리지 인터페이스 회로(127)의 SQ로 분배할 수 있다. 예를 들어, 스토리지 가상화 코어(123)는 페치된 커맨드에 포함된 DMA 버퍼의 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환하고, 변환된 물리적 어드레스를 포함하는 커맨드를 스토리지 인터페이스 회로(127)의 SQ로 전송할 수 있다.In the third operation (③), the storage virtualization device 120 may distribute the command of the fetched VSQ to the SQ of the storage interface circuit 127 . For example, the storage virtualization core 123 converts the virtual address of the DMA buffer included in the fetched command into the physical address of the host device 110, and sends the command including the converted physical address to the storage interface circuit 127. can be transmitted to the SQ of

제4 동작(④)에서, 스토리지 가상화 장치(120)는 SQ의 커맨드를 스토리지 장치 세트(130)로 제공할 수 있다. 예를 들어, 스토리지 인터페이스 회로(127)는 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 제1 스토리지 장치(131)의 도어벨 레지스터로 출력할 수 있다. 제1 스토리지 장치(131)는 SQ의 커멘드를 페치하기 위한 요청을 스토리지 인터페이스 회로(127)로 출력할 수 있다. 스토리지 인터페이스 회로(127)는 요청에 대한 응답으로 SQ의 커맨드를 제1 스토리지 장치(131)로 출력할 수 있다.In a fourth operation (④), the storage virtualization device 120 may provide the SQ command to the storage device set 130 . For example, the storage interface circuit 127 may output a doorbell indicating that a command is written in SQ to the doorbell register of the first storage device 131 . The first storage device 131 may output a request for fetching the command of SQ to the storage interface circuit 127 . The storage interface circuit 127 may output an SQ command to the first storage device 131 in response to the request.

제5 동작(⑤)에서, 스토리지 장치 세트(130)는 페치된 커맨드를 처리할 수 있다. 예를 들어, 제1 스토리지 장치(131)가 커맨드를 페치한 경우, 제1 스토리지 장치(131)는 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드를 처리할 수 있다. 이 때, 스토리지 가상화 코어(123)에 의해 가상 어드레스가 이미 물리적 어드레스로 변환되었으므로, 제1 스토리지 장치(131)는 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드를 처리할 수 있다. 스토리지 가상화 장치(120)의 DMA 엔진(125)은 제1 스토리지 장치(131)의 커맨드 처리를 보조할 수 있다.In a fifth operation (⑤), the storage device set 130 may process the fetched command. For example, when the first storage device 131 fetches a command, the first storage device 131 may process the command by communicating with a DMA buffer of the virtual machine (VM). At this time, since the virtual address has already been converted to a physical address by the storage virtualization core 123, the first storage device 131 converts the DMA of the virtual machine (VM) without address conversion by the I/O memory management unit 140. It can communicate with the buffer to process commands. The DMA engine 125 of the storage virtualization device 120 may assist the first storage device 131 in processing commands.

제6 동작(⑥)에서, 스토리지 장치 세트(130)는 커맨드가 처리된 것을 가리키는 컴플리션을 스토리지 인터페이스 회로(127)의 CQ에 기입할 수 있다. 예를 들어, 제1 스토리지 장치(131)는 가상 머신(VM)의 DMA 버퍼와 통신하여 커맨드의 처리를 마친 후, 스토리지 인터페이스 회로(127)의 CQ에 컴플리션을 기입할 수 있다.In the sixth operation (⑥), the storage device set 130 may write completion indicating that the command has been processed to the CQ of the storage interface circuit 127 . For example, the first storage device 131 may communicate with the DMA buffer of the virtual machine (VM) to process the command, and then write completion to the CQ of the storage interface circuit 127 .

제7 동작(⑦)에서, 스토리지 인터페이스 회로(127)는 개재 계층(126)을 통해 CQ의 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 인터페이스 회로(127)의 CQ는 가상 머신(VM)의 VCQ와 매핑될 수 있다.In the seventh operation (⑦), the storage interface circuit 127 may distribute the CQ completion to the virtualization layer through the intervening layer 126 . The CQ of the storage interface circuit 127 may be mapped with the VCQ of the virtual machine (VM).

제8 동작(⑧)에서, 스토리지 가상화 코어(123)는 가상화 계층에 분배된 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다. 일부 실시 예들에서, 스토리지 가상화 코어(123)는 I/O 메모리 관리 유닛(140)을 통해 가상 머신(VM)의 VCQ에 컴플리션을 기입할 수 있다. 예를 들어, 컴플리션을 가상 머신(VM)의 VCQ에 기입하는 것은 호스트 장치(110)에 실제 데이터를 저장하는 것을 의미할 수 있다. I/O 메모리 관리 유닛(140)은 가상 머신(VM)의 VCQ에 대응하는 가상 어드레스를 호스트 장치(110)의 물리적 어드레스로 변환할 수 있다. 변환된 물리적 어드레스에 기초하여, 스토리지 가상화 코어(123)는 VCQ에 컴플리션을 기입할 수 있다.In an eighth operation (⑧), the storage virtualization core 123 may write the completion distributed to the virtualization layer to the VCQ of the virtual machine (VM). In some embodiments, the storage virtualization core 123 may write the completion to the VCQ of the virtual machine (VM) through the I/O memory management unit 140 . For example, writing the completion to the VCQ of the virtual machine (VM) may mean storing actual data in the host device 110 . The I/O memory management unit 140 may convert a virtual address corresponding to the VCQ of the virtual machine (VM) into a physical address of the host device 110 . Based on the converted physical address, the storage virtualization core 123 may write a completion to the VCQ.

제9 동작(⑨)에서, 가상 머신(VM)은 VCQ에 기입된 컴플리션을 처리하고, 스토리지 가상화 장치(120)에게 컴플리션이 처리된 것을 알릴 수 있다. 스토리지 가상화 장치(120)는 스토리지 장치 세트(130)에게 컴플리션이 처리된 것을 알리고, CQ를 해제(release)할 수 있다.In a ninth operation (⑨), the virtual machine (VM) may process the completion written in the VCQ and notify the storage virtualization device 120 that the completion has been processed. The storage virtualization device 120 may notify the storage device set 130 that completion has been processed and release the CQ.

도 4는 본 개시의 일부 실시 예들에 따른 가상 머신의 블록도이다. 도 4를 참조하면, 가상 머신(VM)이 도시된다. 가상 머신(VM)은 도 1 내지 도 3에서 설명된 복수의 가상 머신(VM)들 각각에 대응할 수 있다. 가상 머신(VM)은 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)과 통신할 수 있다.4 is a block diagram of a virtual machine according to some embodiments of the present disclosure. Referring to Figure 4, a virtual machine (VM) is shown. The virtual machine (VM) may correspond to each of the plurality of virtual machines (VM) described in FIGS. 1 to 3 . A virtual machine (VM) may communicate with the storage virtualization device 120 , the storage device set 130 , and the I/O memory management unit 140 .

가상 머신은 스토리지 장치 드라이버, SVD(storage virtualization device) 엔진 드라이버, VSQ, VCQ, 및 DMA 버퍼를 포함할 수 있다. VSQ, VCQ, 및 DMA 버퍼의 특징들은 도 3에서 설명된 VSQ, VCQ, 및 DMA 버퍼의 특징들과 유사하므로, 이에 대한 상세한 설명은 생략된다.A virtual machine may include a storage device driver, a storage virtualization device (SVD) engine driver, VSQ, VCQ, and DMA buffers. Since features of the VSQ, VCQ, and DMA buffers are similar to those of the VSQ, VCQ, and DMA buffers described in FIG. 3, detailed descriptions thereof are omitted.

스토리지 장치 드라이버는 SVD 엔진 드라이버, VSQ, 및 VCQ와 통신할 수 있다. 스토리지 장치 드라이버는 커맨드를 VSQ에 기입할 수 있다. VSQ에 기입된 커맨드는 I/O 메모리 관리 유닛(140)을 통해 스토리지 가상화 장치(120)로 제공될 수 있다. 스토리지 장치 드라이버는 VCQ에 기입된 컴플리션을 처리할 수 있다. VCQ의 컴플리션은 I/O 메모리 관리 유닛(140)을 통해 스토리지 가상화 장치(120)에 의해 기입될 수 있다.The storage device driver can communicate with the SVD engine driver, VSQ, and VCQ. The storage device driver can write commands to the VSQ. A command written to the VSQ may be provided to the storage virtualization device 120 through the I/O memory management unit 140 . The storage device driver may process the completion written to the VCQ. Completion of the VCQ may be written by the storage virtualization device 120 through the I/O memory management unit 140 .

SVD 엔진 드라이버는 스토리지 장치 드라이버 및 스토리지 가상화 장치(120)와 통신할 수 있다. SVD 엔진 드라이버는 스토리지 장치 드라이버가 VSQ로 제공하는 커맨드를 인터셉트(intercept)하고, VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다. SVD 엔진 드라이버는 스토리지 장치 드라이버가 VCQ로 제공하는 컴플리션을 인터셉트하고, VCQ에 컴플리션이 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다.The SVD engine driver may communicate with the storage device driver and the storage virtualization device 120 . The SVD engine driver may intercept a command provided to the VSQ by the storage device driver and output a doorbell indicating that the command is written in the VSQ to the storage virtualization device 120 . The SVD engine driver may intercept the completion provided by the storage device driver as VCQ and output a doorbell indicating that the completion is written in the VCQ to the storage virtualization device 120 .

도 5는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작 방법을 설명하는 순서도이다. 도 5를 참조하면, 스토리지 시스템의 동작 방법이 설명된다. 스토리지 시스템은 도 1 및 도 2의 스토리지 시스템(100)에 대응할 수 있다. 스토리지 시스템은 호스트 장치(110), 스토리지 가상화 장치(120), 스토리지 장치 세트(130), 및 I/O 메모리 관리 유닛(140)을 포함할 수 있다. 호스트 장치(110)는 CPU(111) 및 메모리 장치(112)를 포함할 수 있다.5 is a flowchart illustrating a method of operating a storage system according to some embodiments of the present disclosure. Referring to FIG. 5 , a method of operating the storage system will be described. The storage system may correspond to the storage system 100 of FIGS. 1 and 2 . The storage system may include a host device 110 , a storage virtualization device 120 , a storage device set 130 , and an I/O memory management unit 140 . The host device 110 may include a CPU 111 and a memory device 112 .

S110 단계에서, CPU(111)는 가상 머신(VM)을 실행할 수 있다. 가상 머신(VM), 가상 머신(VM) 상에서 실행되는 운영 체제, 애플리케이션 등은 메모리 장치(112)에 저장될 수 있다. 예를 들어, 가상 머신(VM)의 VSQ 및 VCQ는 물리적으로 호스트 장치(110)의 메모리 장치(112)에 구현될 수 있다.In step S110, the CPU 111 may execute a virtual machine (VM). A virtual machine (VM), an operating system running on the virtual machine (VM), applications, and the like may be stored in the memory device 112 . For example, VSQ and VCQ of a virtual machine (VM) may be physically implemented in the memory device 112 of the host device 110 .

S121 단계에서, CPU(111)는 메모리 장치(112)의 VSQ에 커맨드를 기입할 수 있다. 예를 들어, 커맨드는 읽기 커맨드, 쓰기 커맨드 등과 같은 가상 머신(VM)의 데이터 처리를 위한 커맨드일 수 있다. In step S121 , the CPU 111 may write a command to the VSQ of the memory device 112 . For example, the command may be a command for data processing of a virtual machine (VM), such as a read command or a write command.

S122 단계에서, CPU(111)는 스토리지 가상화 장치(120)에게 VSQ의 커맨드를 알릴 수 있다. 예를 들어, CPU(111)는 가상 머신(VM)의 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 가상화 장치(120)로 출력할 수 있다.In step S122, the CPU 111 may inform the storage virtualization device 120 of a VSQ command. For example, the CPU 111 may output a doorbell indicating that a command is written in VSQ of the virtual machine (VM) to the storage virtualization device 120 .

S131 단계에서, 스토리지 가상화 장치(120)는 VSQ의 커맨드를 요청할 수 있다. 가상 머신(VM)의 VSQ의 커맨드를 읽는 것은 물리적으로 메모리 장치(112)의 데이터를 읽는 것일 수 있다. I/O 메모리 관리 유닛(140)은 VSQ에 대응하는 가상 어드레스를 메모리 장치(112)에 대응하는 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에 기초하여 메모리 장치(112)로 액세스함으로써, VSQ의 커맨드를 요청할 수 있다.In step S131, the storage virtualization device 120 may request a VSQ command. Reading a VSQ command of a virtual machine (VM) may be physically reading data of the memory device 112 . The I/O memory management unit 140 may convert a virtual address corresponding to the VSQ into a physical address corresponding to the memory device 112 . The storage virtualization device 120 may request a VSQ command by accessing the memory device 112 based on the converted physical address.

S132 단계에서, 스토리지 가상화 장치(120)는 메모리 장치(112)로의 액세스에 기초하여, VSQ의 커맨드를 페치할 수 있다. VSQ의 커맨드를 페치하는 것은 S131 단계의 요청에 대응하는 응답을 메모리 장치(112)로부터 수신하는 것일 수 있다. 일부 실시 예들에서, S132 단계는 I/O 메모리 관리 유닛(140)의 관여 없이 수행될 수 있다. 예를 들어, S132 단계의 응답은 S131 단계의 요청에 대한 데이터만 포함할 뿐, 가상 머신(VM)의 어드레스를 포함하지 않을 수 있다. 스토리지 가상화 장치(120)는 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 메모리 장치(112)로부터 VSQ의 커맨드를 수신할 수 있다.In step S132 , the storage virtualization device 120 may fetch a VSQ command based on access to the memory device 112 . Fetching the VSQ command may be receiving a response corresponding to the request of step S131 from the memory device 112 . In some embodiments, step S132 may be performed without involvement of the I/O memory management unit 140. For example, the response of step S132 may include only data for the request of step S131 and may not include the address of the virtual machine (VM). The storage virtualization device 120 may receive the VSQ command from the memory device 112 without address conversion by the I/O memory management unit 140 .

S133 단계에서, 스토리지 가상화 장치(120)는 커맨드를 SQ로 분배할 수 있다. SQ는 가상 머신(VM)의 VSQ와 매핑될 수 있다. 스토리지 가상화 장치(120)는 SQ 및 VSQ의 매핑을 관리할 수 있다.In step S133, the storage virtualization device 120 may distribute a command to SQ. SQ may be mapped with VSQ of a virtual machine (VM). The storage virtualization device 120 may manage mapping of SQ and VSQ.

일부 실시 예들에서, S133 단계는 가상 머신(VM)의 DMA 버퍼의 가상 어드레스(예를 들어, 페치된 커맨드에 포함된 어드레스)를 메모리 장치(112)의 물리적 어드레스로 변환하는 것을 포함할 수 있다.In some embodiments, operation S133 may include converting a virtual address (eg, an address included in a fetched command) of a DMA buffer of a virtual machine (VM) into a physical address of the memory device 112 .

S134 단계에서, 스토리지 가상화 장치(120)는 SQ에 커맨드가 기입된 것을 스토리지 장치 세트(130)에게 알릴 수 있다. 예를 들어, 스토리지 가상화 장치(120)는 SQ에 커맨드가 기입된 것을 가리키는 도어벨을 스토리지 장치 세트(130)로 출력할 수 있다.In step S134 , the storage virtualization device 120 may inform the storage device set 130 that a command is written in the SQ. For example, the storage virtualization device 120 may output a doorbell indicating that a command is written in SQ to the storage device set 130 .

S141 단계에서, 스토리지 장치 세트(130)는 SQ의 커맨드를 요청할 수 있다. S142 단계에서, 스토리지 장치 세트(130)는 SQ의 커맨드를 페치할 수 있다. SQ의 커맨드를 페치하는 것은 S141 단계의 요청에 대한 응답을 수신하는 것일 수 있다.In step S141, the storage device set 130 may request an SQ command. In step S142, the storage device set 130 may fetch the command of SQ. Fetching the command of SQ may be receiving a response to the request of step S141.

S150 단계에서, 스토리지 장치 세트(130)는 커맨드를 처리할 수 있다. 예를 들어, 커맨드는 DMA 읽기 동작 또는 DMA 쓰기 동작일 수 있다. 스토리지 장치 세트(130)는 메모리 장치(112)와 통신하여 커맨드를 처리할 수 있다. 이 때, 상술된 바와 같이, S133 단계의 분배를 통해 가상 머신(VM)의 가상 어드레스가 메모리 장치(112)의 물리적 어드레스로 변환되었으므로, 스토리지 장치 세트(130) 및 메모리 장치(112) 사이의 통신은 I/O 메모리 관리 유닛(140)에 의한 어드레스 변환 없이 수행될 수 있다.In step S150, the storage device set 130 may process a command. For example, the command may be a DMA read operation or a DMA write operation. The storage device set 130 may communicate with the memory device 112 to process commands. At this time, as described above, since the virtual address of the virtual machine (VM) is converted to the physical address of the memory device 112 through the distribution in step S133, communication between the storage device set 130 and the memory device 112 can be performed without address translation by the I/O memory management unit 140.

S161 단계에서, 스토리지 장치 세트(130)는 스토리지 가상화 장치(120)의 CQ에 컴플리션을 기입할 수 있다. 컴플리션은 커맨드가 처리된 것(즉, S150 단계가 완료된 것)을 가리킬 수 있다.In step S161 , the storage device set 130 may write the completion in the CQ of the storage virtualization device 120 . Completion may indicate that the command has been processed (ie, that step S150 has been completed).

S162 단계에서, 스토리지 가상화 장치(120)는 CQ의 컴플리션을 가상화 계층에 분배할 수 있다. CQ는 가상 머신(VM)의 VCQ와 매핑될 수 있다. 스토리지 가상화 장치(120)는 CQ 및 VCQ의 매핑을 관리할 수 있다.In step S162, the storage virtualization device 120 may distribute the CQ completion to the virtualization layer. CQ may be mapped with VCQ of a virtual machine (VM). The storage virtualization device 120 may manage mapping of CQ and VCQ.

S163 단계에서, 스토리지 가상화 장치(120)는 컴플리션을 가상 머신(VM)의 VCQ에 기입할 수 있다. 가상 머신(VM)의 VCQ에 컴플리션을 기입하는 것은 물리적으로 메모리 장치(112)에 데이터를 기입하는 것일 수 있다. I/O 메모리 관리 유닛(140)은 VCQ에 대응하는 가상 어드레스를 메모리 장치(112)에 대응하는 물리적 어드레스로 변환할 수 있다. 스토리지 가상화 장치(120)는 변환된 물리적 어드레스에 기초하여 메모리 장치(112)로 액세스함으로써, VCQ에 컴플리션을 기입할 수 있다.In step S163, the storage virtualization device 120 may write the completion into the VCQ of the virtual machine (VM). Writing the completion to the VCQ of the virtual machine (VM) may be physically writing data to the memory device 112 . The I/O memory management unit 140 may convert a virtual address corresponding to the VCQ into a physical address corresponding to the memory device 112 . The storage virtualization device 120 may write the completion in the VCQ by accessing the memory device 112 based on the converted physical address.

S171 단계에서, CPU(111)는 메모리 장치(112)의 VCQ를 폴링할 수 있다. 예를 들어, CPU(111)는 메모리 장치(112)의 VCQ에 컴플리션이 기입되었는지 여부를 주기적으로 확인할 수 있다. CPU(111)는 폴링을 통해서 가상 머신(VM)의 VCQ에 컴플리션이 기입되었다고 결정할 수 있다. 만약, CPU(111)에서 폴링을 수행하지 않는 경우, 스토리지 가상화 장치(120)는 VCQ에 컴플리션이 기입된 것을 CPU(111)에게 알리기 위해, 인터럽트를 CPU(111)로 출력할 수 있다. CPU(111)는 VCQ에 기입된 컴플리션을 처리할 수 있다.In step S171, the CPU 111 may poll the VCQ of the memory device 112. For example, the CPU 111 may periodically check whether completion is written in the VCQ of the memory device 112 . The CPU 111 may determine that completion is written in the VCQ of the virtual machine (VM) through polling. If the CPU 111 does not perform polling, the storage virtualization device 120 may output an interrupt to the CPU 111 to inform the CPU 111 that completion is written in the VCQ. The CPU 111 can process the completion written to the VCQ.

S172 단계에서, CPU(111)는 VCQ의 컴플리션이 처리된 것을 스토리지 가상화 장치(120)에게 알릴 수 있다. 이 후, S173 단계에서, 스토리지 가상화 장치(120)는 CQ를 해제할 수 있고, 컴플리션이 처리된 것을 스토리지 장치 세트(130)에게 알릴 수 있다.In step S172, the CPU 111 may notify the storage virtualization device 120 that the completion of the VCQ has been processed. Thereafter, in step S173 , the storage virtualization device 120 may release the CQ and notify the storage device set 130 that completion has been processed.

도 6a, 도 6b, 및 도 6c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들의 리소스 할당을 설명하는 도면들이다. 도 6a, 도 6b, 및 도 6c를 참조하면, 제1 가상 머신(VM1)은 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)을 포함할 수 있다. 제2 가상 머신(VM2)은 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)을 포함할 수 있다. 스토리지 가상화 장치(120)는 제1 스토리지 인터페이스 회로를 포함할 수 있다. 제1 스토리지 인터페이스 회로는 큐들(SQ1a, CQ1a, SQ1b, CQ1b)을 포함할 수 있다. 제1 스토리지 인터페이스 회로는 제1 스토리지 장치(131)에 대응할 수 있다.6A, 6B, and 6C are diagrams illustrating resource allocation of a plurality of virtual machines according to some embodiments of the present disclosure. Referring to FIGS. 6A, 6B, and 6C, the first virtual machine VM1 may include queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b. The second virtual machine VM2 may include queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b. The storage virtualization device 120 may include a first storage interface circuit. The first storage interface circuit may include queues SQ1a, CQ1a, SQ1b, and CQ1b. The first storage interface circuit may correspond to the first storage device 131 .

일부 실시 예들에서, 도 6a에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 가상 머신(VM1)은 복수의 큐들을 포함할 수 있고, 제1 스토리지 인터페이스 회로는 복수의 큐들을 포함할 수 있고, 가상 머신의 복수의 큐들 및 스토리지 인터페이스 회로의 큐들은 대응 관계를 가질 수 있다.In some embodiments, as shown in FIG. 6A , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond That is, the first virtual machine VM1 may include a plurality of queues, the first storage interface circuit may include a plurality of queues, and the plurality of queues of the virtual machine and the queues of the storage interface circuit may have a corresponding relationship. can have

도 6a에서, 제2 가상 머신(VM2)은 사용되지 않는 가상 머신일 수 있다. 예를 들어, 제2 가상 머신(VM2)은 도 2의 호스트 장치(110)의 CPU(111)에 의해 생성되고 실행되었지만, 스토리지 장치(예를 들어, 도 2의 스토리지 장치 세트(130)에 포함된 복수의 스토리지 장치들 중 적어도 하나)를 사용하지 않을 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)은 스토리지 가상화 장치(120)에 의해 리소스 할당이 해제(예를 들어, 스토리지 인터페이스 회로와의 매핑 해제)될 수 있다. 다시 제2 가상 머신(VM2)을 사용할 필요가 있는 경우, 스토리지 가상화 장치(120)는 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)을 다시 리소스를 할당할 수 있다.In FIG. 6A , the second virtual machine VM2 may be an unused virtual machine. For example, the second virtual machine VM2 is created and executed by the CPU 111 of the host device 110 of FIG. 2 , but is included in a storage device (eg, the storage device set 130 of FIG. 2 ). at least one of a plurality of storage devices) may not be used. Resource allocation of the queues VSQ2a , VCQ2a , VSQ2b , and VCQ2b of the second virtual machine VM2 may be released (eg, unmapped from the storage interface circuit) by the storage virtualization device 120 . If it is necessary to use the second virtual machine VM2 again, the storage virtualization device 120 may allocate resources again to the queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b of the second virtual machine VM2.

일부 실시 예들에서, 도 6b에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 스토리지 인터페이스 회로는 복수의 가상 머신들(VM1, VM2)을 지원할 수 있다.In some embodiments, as shown in FIG. 6B , the queues VSQ1a and VCQ1a of the first virtual machine VM1 may correspond to the queues SQ1a and CQ1a of the first storage interface circuit, respectively. The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. That is, the first storage interface circuit may support a plurality of virtual machines VM1 and VM2.

일부 실시 예들에서, 도 6c에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 즉, 제1 스토리지 인터페이스 회로의 큐(SQ1b)는 복수의 큐들(VSQ1b, VSQ2a)을 지원할 수 있다. 제1 스토리지 인터페이스 회로의 큐(CQ1b)는 복수의 큐들(VCQ1b, VCQ2a)을 지원할 수 있다.In some embodiments, as shown in FIG. 6C , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. That is, the queue SQ1b of the first storage interface circuit may support a plurality of queues VSQ1b and VSQ2a. The queue CQ1b of the first storage interface circuit may support a plurality of queues VCQ1b and VCQ2a.

상술된 바와 같이, 도 6a, 도 6b, 및 도 6c를 참조하여, 가상 머신들의 리소스 할당이 설명되었다. 본 개시의 실시 예들에 따르면, 스토리지 가상화 장치(120)는 스토리지 장치 및 복수의 가상 머신들 사이의 유연한 매핑을 제공할 수 있다. 스토리지 가상화 장치(120)는 복수의 가상 머신들을 관리하기 위해, 복수의 가상 머신들의 큐들을 위한 어드레스들을 저장하고 관리할 수 있다. 스토리지 가상화 장치(120)는 사용하지 않는 가상 머신의 큐들을 위한 리소스 할당을 해제할 수 있고, 가상 머신을 다시 사용할 필요가 있는 경우 대응하는 가상 머신의 큐들을 위한 리소스를 다시 할당할 수 있다.As described above, resource allocation of virtual machines has been described with reference to FIGS. 6A, 6B, and 6C. According to embodiments of the present disclosure, the storage virtualization device 120 may provide flexible mapping between a storage device and a plurality of virtual machines. The storage virtualization apparatus 120 may store and manage addresses for queues of a plurality of virtual machines in order to manage the plurality of virtual machines. The storage virtualization device 120 may release resource allocation for queues of virtual machines that are not in use, and may reallocate resources for queues of corresponding virtual machines when a virtual machine needs to be used again.

도 7a, 도 7b, 및 도 7c는 본 개시의 일부 실시 예들에 따라 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 리소스 할당을 설명하는 도면들이다. 도 7a, 도 7b, 및 도 7c를 참조하면, 제1 가상 머신(VM1)은 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)을 포함할 수 있다. 제2 가상 머신(VM2)은 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)을 포함할 수 있다. 스토리지 가상화 장치(120)는 제1 및 제2 스토리지 인터페이스 회로들을 포함할 수 있다. 제1 스토리지 인터페이스 회로는 큐들(SQ1a, CQ1a, SQ1b, CQ1b)을 포함할 수 있다. 제1 스토리지 인터페이스 회로는 제1 스토리지 장치(131)에 대응할 수 있다. 제2 스토리지 인터페이스 회로는 큐들(SQ2a, CQ2a, SQ2b, CQ2b)을 포함할 수 있다. 제2 스토리지 인터페이스 회로는 제2 스토리지 장치(132)에 대응할 수 있다.7A, 7B, and 7C are diagrams illustrating resource allocation between a plurality of virtual machines and a plurality of storage devices according to some embodiments of the present disclosure. Referring to FIGS. 7A, 7B, and 7C , the first virtual machine VM1 may include queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b. The second virtual machine VM2 may include queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b. The storage virtualization device 120 may include first and second storage interface circuits. The first storage interface circuit may include queues SQ1a, CQ1a, SQ1b, and CQ1b. The first storage interface circuit may correspond to the first storage device 131 . The second storage interface circuit may include queues SQ2a, CQ2a, SQ2b, and CQ2b. The second storage interface circuit may correspond to the second storage device 132 .

일부 실시 예들에서, 도 7a에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a, VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2a, CQ2a, SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 매핑을 제공할 수 있다.In some embodiments, as shown in FIG. 7A , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond The queues VSQ2a, VCQ2a, VSQ2b, and VCQ2b of the second virtual machine VM2 may correspond to the queues SQ2a, CQ2a, SQ2b, and CQ2b of the second storage interface circuit, respectively. That is, the storage virtualization device 120 may provide mapping between a plurality of virtual machines and a plurality of storage devices.

일부 실시 예들에서, 도 7b에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a)에 대응할 수 있다. 제1 가상 머신(VM1)의 큐들(VSQ1b, CQ1b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2a, CQ2a)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다.In some embodiments, as shown in FIG. 7B , the queues VSQ1a and VCQ1a of the first virtual machine VM1 may correspond to the queues SQ1a and CQ1a of the first storage interface circuit, respectively. The queues VSQ1b and CQ1b of the first virtual machine VM1 may correspond to the queues SQ2a and CQ2a of the second storage interface circuit, respectively. The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. The queues VSQ2b and VCQ2b of the second virtual machine VM2 may correspond to the queues SQ2b and CQ2b of the second storage interface circuit, respectively. That is, the storage virtualization device 120 may provide flexible mapping between a plurality of virtual machines and a plurality of storage devices.

일부 실시 예들에서, 도 7c에서 도시된 바와 같이, 제1 가상 머신(VM1)의 큐들(VSQ1a, VCQ1a, VSQ1b, VCQ1b)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1a, CQ1a, SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2a, VCQ2a)은 각각 제1 스토리지 인터페이스 회로의 큐들(SQ1b, CQ1b)에 대응할 수 있다. 제2 가상 머신(VM2)의 큐들(VSQ2b, VCQ2b)은 각각 제2 스토리지 인터페이스 회로의 큐들(SQ2b, CQ2b)에 대응할 수 있다. 즉, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다.In some embodiments, as shown in FIG. 7C , the queues VSQ1a, VCQ1a, VSQ1b, and VCQ1b of the first virtual machine VM1 correspond to the queues SQ1a, CQ1a, SQ1b, and CQ1b of the first storage interface circuit, respectively. can respond The queues VSQ2a and VCQ2a of the second virtual machine VM2 may correspond to the queues SQ1b and CQ1b of the first storage interface circuit, respectively. The queues VSQ2b and VCQ2b of the second virtual machine VM2 may correspond to the queues SQ2b and CQ2b of the second storage interface circuit, respectively. That is, the storage virtualization device 120 may provide flexible mapping between a plurality of virtual machines and a plurality of storage devices.

상술된 바와 같이, 도 7a, 도 7b, 및 도 7c를 참조하여, 가상 머신들 및 스토리지 장치들 사이의 리소스 할당이 설명되었다. 본 개시의 실시 예들에 따르면, 스토리지 가상화 장치(120)는 복수의 가상 머신들 및 복수의 스토리지 장치들 사이의 유연한 매핑을 제공할 수 있다. 스토리지 가상화 장치(120)는 동일한 가상 머신에서의 커맨드(예를 들어, 읽기 커맨드, 쓰기 커맨드)를 서로 다른 스토리지 장치들로 전송할 수 있다. 스토리지 가상화 장치(120)는 동일한 스토리지 장치로부터의 컴플리션을 서로 다른 가상 머신들로 전송할 수 있다. 새로운 스토리지 장치가 추가되는 경우, 스토리지 가상화 장치(120)는 기존 스토리지 장치 및 추가된 스토리지 장치에 대해 유연하게 리소스를 할당하거나, 또는 유연하게 리소스 할당을 해제할 수 있다.As described above, resource allocation between virtual machines and storage devices has been described with reference to FIGS. 7A, 7B, and 7C. According to embodiments of the present disclosure, the storage virtualization device 120 may provide flexible mapping between a plurality of virtual machines and a plurality of storage devices. The storage virtualization device 120 may transmit commands (eg, read commands and write commands) from the same virtual machine to different storage devices. The storage virtualization device 120 may transfer completions from the same storage device to different virtual machines. When a new storage device is added, the storage virtualization device 120 may flexibly allocate or release resources for the existing storage device and the added storage device.

도 8은 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다. 도 8을 참조하면, 스토리지 가상화 장치의 동작 방법이 설명된다. 스토리지 가상화 장치는 도 1, 도 2, 도 3, 도 5, 도 6a, 도 6b, 도 6c, 도 7a, 도 7b, 및 도 7c의 스토리지 가상화 장치(120)에 대응할 수 있다. 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신할 수 있다. 스토리지 가상화 장치는 SQ 및 CQ를 포함할 수 있다. 스토리지 가상화 장치는 호스트 장치에 의해 실행되는 가상 머신을 지원할 수 있다. 가상 머신은 VSQ 및 VCQ를 포함할 수 있다.8 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure. Referring to FIG. 8 , a method of operating a storage virtualization device will be described. The storage virtualization device may correspond to the storage virtualization device 120 of FIGS. 1, 2, 3, 5, 6a, 6b, 6c, 7a, 7b, and 7c. A storage virtualization device can communicate with a set of host devices and storage devices. The storage virtualization device may include SQ and CQ. A storage virtualization device may support a virtual machine executed by a host device. A virtual machine can include VSQ and VCQ.

S210 단계에서, 스토리지 가상화 장치는 가상 머신의 VSQ의 커맨드를 페치할 수 있다. 일부 실시 예들에서, S210 단계는, 호스트 장치로부터 VSQ에 커맨드가 기입된 것을 가리키는 도어벨을 수신하는 것, 도어벨에 응답하여 VSQ의 커맨드를 호스트 장치에게 요청하는 것, 그리고 호스트 장치로부터 요청에 대한 응답으로 VSQ의 커맨드를 수신하는 것을 포함할 수 있다.In step S210, the storage virtualization device may fetch a VSQ command of the virtual machine. In some embodiments, step S210 includes receiving a doorbell indicating that a command has been written to the VSQ from the host device, requesting a VSQ command to the host device in response to the doorbell, and responding to the request from the host device. It may include receiving a command of the VSQ in response.

S220 단계에서, 스토리지 가상화 장치는 페치된 커맨드를 SQ로 분배할 수 있다. 가상 머신의 VSQ 및 스토리지 가상화 장치의 SQ는 매핑될 수 있다. 스토리지 가상화 장치는 VSQ 및 SQ의 매핑을 관리할 수 있다. 일부 실시 예들에서, S220 단계는, SQ의 커맨드에 포함된, 가상 머신의 가상 어드레스를 호스트 장치의 물리적 어드레스로 변환하는 것을 포함할 수 있다.In step S220, the storage virtualization device may distribute the fetched command to SQ. The VSQ of the virtual machine and the SQ of the storage virtualization device may be mapped. The storage virtualization device can manage the mapping of VSQ and SQ. In some embodiments, step S220 may include converting a virtual address of the virtual machine included in the SQ command into a physical address of the host device.

S230 단계에서, 스토리지 가상화 장치는 SQ의 커맨드를 스토리지 장치 세트로 제공할 수 있다. 스토리지 장치 세트는 SQ의 커맨드를 처리할 수 있다. 예를 들어, 스토리지 장치 세트는 가상 머신의 DMA 버퍼와 데이터를 통신함으로써 SQ의 커맨드를 처리할 수 있다.In step S230, the storage virtualization device may provide the SQ command to the storage device set. A set of storage devices may process the commands of SQ. For example, a set of storage devices may process commands from the SQ by communicating data with a DMA buffer of a virtual machine.

S240 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 컴플리션을 수신할 수 있다. 컴플리션은 스토리지 가상화 장치의 CQ에 기입될 수 있다. 컴플리션은 S230 단계의 SQ의 커맨드가 처리된 것을 가리킬 수 있다.In step S240, the storage virtualization device may receive a completion from the storage device set. Completion may be written to the CQ of the storage virtualization device. Completion may indicate that the SQ command of step S230 has been processed.

S250 단계에서, 스토리지 가상화 장치는 CQ의 커맨드를 가상화 계층으로 분배할 수 있다. 가상 머신의 VCQ 및 스토리지 가상화 장치의 CQ는 매핑될 수 있다. 스토리지 가상화 장치는 VCQ 및 CQ의 매핑을 관리할 수 있다.In step S250, the storage virtualization device may distribute the CQ command to the virtualization layer. The VCQ of the virtual machine and the CQ of the storage virtualization device may be mapped. The storage virtualization device may manage the mapping of VCQ and CQ.

S260 단계에서, 스토리지 가상화 장치는 분배된 컴플리션을 가상 머신의 VCQ에 기입할 수 있다. 일부 실시 예들에서, S260 단계는, 호스트 장치로부터 VCQ에 기입된 컴플리션이 처리된 것을 가리키는 제1 도어벨을 수신하는 것, 그리고 제1 도어벨에 기초하여, CQ에 기입된 컴플리션이 처리된 것을 가리키는 제2 도어벨을 스토리지 장치 세트로 출력하는 것을 더 포함할 수 있다.In step S260, the storage virtualization device may write the distributed completion into the VCQ of the virtual machine. In some embodiments, step S260 includes receiving a first doorbell indicating that the completion written in the VCQ has been processed from the host device, and based on the first doorbell, the completion written in the CQ is It may further include outputting a second doorbell indicating the processed one to the set of storage devices.

도 9는 본 개시의 일부 실시 예들에 따른 스토리지 가상화 장치의 동작 방법을 설명하는 순서도이다. 도 9를 참조하면, 스토리지 가상화 장치의 동작 방법이 설명된다. 스토리지 가상화 장치는 도 1, 도 2, 도 3, 도 5, 도 6a, 도 6b, 도 6c, 도 7a, 도 7b, 및 도 7c의 스토리지 가상화 장치(120)에 대응할 수 있다. 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신할 수 있다. 스토리지 가상화 장치는 제1 SQ(SQ1), 제1 CQ(CQ1), 제2 SQ(SQ2), 및 제2 CQ(CQ2)를 포함할 수 있다. 스토리지 가상화 장치는 호스트 장치에 의해 실행되는 복수의 가상 머신들을 지원할 수 있다. 복수의 가상 머신들은 제1 VSQ(VSQ1), 제1 VCQ(VCQ1), 제2 VSQ(VSQ2), 및 제2 VCQ(VCQ2)를 포함할 수 있다.9 is a flowchart illustrating a method of operating a storage virtualization apparatus according to some embodiments of the present disclosure. Referring to FIG. 9 , a method of operating a storage virtualization device will be described. The storage virtualization device may correspond to the storage virtualization device 120 of FIGS. 1, 2, 3, 5, 6a, 6b, 6c, 7a, 7b, and 7c. A storage virtualization device can communicate with a set of host devices and storage devices. The storage virtualization device may include a first SQ (SQ1), a first CQ (CQ1), a second SQ (SQ2), and a second CQ (CQ2). A storage virtualization device may support a plurality of virtual machines executed by a host device. The plurality of virtual machines may include a first VSQ (VSQ1), a first VCQ (VCQ1), a second VSQ (VSQ2), and a second VCQ (VCQ2).

S311 단계에서, 스토리지 가상화 장치는 제1 VSQ(VSQ1)의 제1 커맨드를 페치할 수 있다. S312 단계에서, 스토리지 가상화 장치는 페치된 제1 커맨드를 제1 SQ(SQ1)로 분배하고, 그리고 제1 SQ(SQ1)의 제1 커맨드를 스토리지 장치 세트로 제공할 수 있다. In step S311, the storage virtualization device may fetch a first command of a first VSQ (VSQ1). In step S312 , the storage virtualization device may distribute the fetched first command to the first SQ (SQ1) and provide the first command of the first SQ (SQ1) to the storage device set.

S313 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 제1 컴플리션을 수신할 수 있다. 제1 컴플리션은 스토리지 가상화 장치의 제1 CQ(CQ1)에 기입될 수 있다. 제1 컴플리션은 S312 단계의 제1 SQ(SQ1)의 커맨드가 처리된 것을 가리킬 수 있다. 스토리지 가상화 장치는 제1 CQ(CQ1)의 제1 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 가상화 장치는 분배된 제1 컴플리션을 제1 VCQ(VCQ1)에 기입할 수 있다.In step S313, the storage virtualization device may receive a first completion from the storage device set. The first completion may be written in the first CQ (CQ1) of the storage virtualization device. The first completion may indicate that the command of the first SQ (SQ1) of step S312 has been processed. The storage virtualization apparatus may distribute the first completion of the first CQ (CQ1) to the virtualization layer. The storage virtualization device may write the distributed first completion into the first VCQ (VCQ1).

S321 단계에서, 스토리지 가상화 장치는 제2 VSQ(VSQ2)의 제2 커맨드를 페치할 수 있다. S322 단계에서, 스토리지 가상화 장치는 페치된 제2 커맨드를 제2 SQ(SQ2)로 분배하고, 그리고 제2 SQ(SQ2)의 제2 커맨드를 스토리지 장치 세트로 제공할 수 있다.In step S321, the storage virtualization device may fetch a second command of a second VSQ (VSQ2). In step S322 , the storage virtualization device may distribute the fetched second command to the second SQ (SQ2) and provide the second command of the second SQ (SQ2) to the storage device set.

S323 단계에서, 스토리지 가상화 장치는 스토리지 장치 세트로부터 제2 컴플리션을 수신할 수 있다. 제2 컴플리션은 스토리지 가상화 장치의 제2 CQ(CQ2)에 기입될 수 있다. 제2 컴플리션은 S322 단계의 제2 SQ(SQ2)의 커맨드가 처리된 것을 가리킬 수 있다. 스토리지 가상화 장치는 제2 CQ(CQ2)의 제2 컴플리션을 가상화 계층에 분배할 수 있다. 스토리지 가상화 장치는 분배된 제2 컴플리션을 제2 VCQ(VCQ2)에 기입할 수 있다.In step S323, the storage virtualization device may receive a second completion from the storage device set. The second completion may be written to the second CQ (CQ2) of the storage virtualization device. The second completion may indicate that the command of the second SQ (SQ2) of step S322 has been processed. The storage virtualization apparatus may distribute the second completion of the second CQ (CQ2) to the virtualization layer. The storage virtualization device may write the distributed second completion into the second VCQ (VCQ2).

일부 실시 예들에서, 스토리지 가상화 장치는 하나의 가상 머신 및 하나의 스토리지 장치에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1, VSQ2, VCQ2)은 복수의 가상 머신들 중 동일한 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1, SQ2, CQ2)은 스토리지 장치 세트 내의 동일한 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization device may provide multiple mappings for one virtual machine and one storage device. For example, the queues VSQ1 , VCQ1 , VSQ2 , and VCQ2 may be included in the same virtual machine among a plurality of virtual machines. The queues SQ1 , CQ1 , SQ2 , and CQ2 may correspond to the same storage device in the set of storage devices.

일부 실시 예들에서, 스토리지 가상화 장치는 하나의 가상 머신 및 복수의 스토리지 장치들에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1, VSQ2, VCQ2)은 복수의 가상 머신들 중 동일한 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1)은 스토리지 장치 세트 내의 제1 스토리지 장치에 대응할 수 있다. 큐들(SQ2, CQ2)은 스토리지 장치 세트 내의 제2 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization device may provide multiple mappings for one virtual machine and multiple storage devices. For example, the queues VSQ1 , VCQ1 , VSQ2 , and VCQ2 may be included in the same virtual machine among a plurality of virtual machines. The queues SQ1 and CQ1 may correspond to a first storage device in the storage device set. The queues SQ2 and CQ2 may correspond to a second storage device in the storage device set.

일부 실시 예들에서, 스토리지 가상화 장치는 복수의 가상 머신들 및 하나의 스토리지 장치에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1)은 복수의 가상 머신들 중 제1 가상 머신에 포함될 수 있다. 큐들(VSQ2, VCQ2)은 복수의 가상 머신들 중 제2 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1, SQ2, CQ2)은 스토리지 장치 세트 내의 동일한 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization device may provide multiple mappings for multiple virtual machines and one storage device. For example, the queues VSQ1 and VCQ1 may be included in a first virtual machine among a plurality of virtual machines. The queues VSQ2 and VCQ2 may be included in a second virtual machine among a plurality of virtual machines. The queues SQ1 , CQ1 , SQ2 , and CQ2 may correspond to the same storage device in the set of storage devices.

일부 실시 예들에서, 스토리지 가상화 장치는 복수의 가상 머신들 및 복수의 스토리지 장치들에 대한 복수의 매핑들을 제공할 수 있다. 예를 들어, 큐들(VSQ1, VCQ1)은 복수의 가상 머신들 중 제1 가상 머신에 포함될 수 있다. 큐들(VSQ2, VCQ2)은 복수의 가상 머신들 중 제2 가상 머신에 포함될 수 있다. 큐들(SQ1, CQ1)은 스토리지 장치 세트 내의 제1 스토리지 장치에 대응할 수 있다. 큐들(SQ2, CQ2)은 스토리지 장치 세트 내의 제2 스토리지 장치에 대응할 수 있다.In some embodiments, the storage virtualization apparatus may provide a plurality of mappings for a plurality of virtual machines and a plurality of storage devices. For example, the queues VSQ1 and VCQ1 may be included in a first virtual machine among a plurality of virtual machines. The queues VSQ2 and VCQ2 may be included in a second virtual machine among a plurality of virtual machines. The queues SQ1 and CQ1 may correspond to a first storage device in the storage device set. The queues SQ2 and CQ2 may correspond to a second storage device in the storage device set.

상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific embodiments for carrying out the present invention. The present invention will include not only the above-described embodiments, but also embodiments that can be simply or easily changed in design. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments and should not be defined by the following claims as well as those equivalent to the claims of this invention.

Claims (20)

호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)와 제2 SQ 및 제2 CQ를 포함하고, 그리고 상기 호스트 장치에 의해 실행되는 제1 가상 머신 및 제2 가상 머신을 지원하는 스토리지 가상화 장치의 동작 방법에 있어서:
상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하거나 상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 패치하는 단계;
페치된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 제1 SQ 및 상기 제2 SQ 중 적어도 하나로 분배하는 단계;
상기 제1 SQ 또는 상기 제2 SQ의 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트의 제1 스토리지 장치 및 제2 스토리지 장치 중 하나로 제공하는 단계;
상기 제1 스토리지 장치 및 상기 제2 스토리지 장치 중 하나로부터 상기 제1 커맨드 또는 상기 제2 커맨드가 처리된 것을 가리키는 제1 컴플리션 또는 제2 컴플리션을 수신하여 상기 제1 CQ 또는 상기 제2 CQ에 기입하는 단계;
상기 제1 CQ 또는 상기 제2 CQ의 상기 제1 컴플리션 또는 상기 제2 컴플리션을 가상화 계층에 분배하는 단계; 및
상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하거나 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하는 단계를 포함하고,
상기 제1 SQ 및 상기 제1 CQ는 상기 제1 스토리지 장치에 대응되고, 상기 제2 SQ 및 상기 제2 CQ는 상기 제2 스토리지 장치에 대응되는 방법.
a first virtual machine that communicates with a host device and a set of storage devices, includes a first submission queue (SQ) and a first completion queue (CQ) and a second SQ and a second CQ, and is executed by the host device; and In the operating method of a storage virtualization device supporting a second virtual machine:
fetching a first command of a first virtual submission queue (VSQ) of the first virtual machine or fetching a second command of a second VSQ of the second virtual machine;
distributing the fetched first command or the second command to at least one of the first SQ and the second SQ;
providing the first command or the second command of the first SQ or the second SQ to one of a first storage device and a second storage device of the set of storage devices;
The first CQ or the second completion is received from one of the first storage device and the second storage device, indicating that the first command or the second command has been processed. writing CQ;
distributing the first completion or the second completion of the first CQ or the second CQ to a virtualization layer; and
Writing the distributed first completion into a first virtual completion queue (VCQ) of the first virtual machine or writing the distributed second completion into a second VCQ of the second virtual machine do,
The first SQ and the first CQ correspond to the first storage device, and the second SQ and the second CQ correspond to the second storage device.
삭제delete 제 1 항에 있어서,
상기 제1 SQ 및 상기 제1 CQ은 적어도 둘 이상의 쌍으로 구비되고,
상기 제2 SQ 및 상기 제2 CQ는 적어도 둘 이상의 쌍으로 구비되는 방법.
According to claim 1,
The first SQ and the first CQ are provided in pairs of at least two,
The second SQ and the second CQ are provided in pairs of at least two or more.
제 3 항에 있어서,
적어도 둘 이상의 상기 제1 SQ 및 상기 제1 CQ의 쌍 중 적어도 한 쌍의 제1 SQ 및 제1 CQ는 상기 제1 가상 머신에 대응되고, 적어도 다른 한 쌍의 제1 SQ 및 제1 CQ는 상기 제1 가상 머신 및 상기 제2 가상 머신에 공통되어 대응되는 방법.
According to claim 3,
At least one pair of 1st SQ and 1st CQ among at least two pairs of 1st SQ and 1st CQ corresponds to the first virtual machine, and at least another pair of 1st SQ and 1st CQ corresponds to the first virtual machine. A method common to and corresponding to the first virtual machine and the second virtual machine.
제 4 항에 있어서,
적어도 둘 이상의 상기 제2 SQ 및 상기 제2 CQ 쌍 중 적어도 한 쌍의 제2 SQ 및 제2 CQ는 상기 제2 가상 머신에 대응되는 방법.
According to claim 4,
At least one pair of second SQ and second CQ among at least two pairs of second SQ and second CQ corresponds to the second virtual machine.
제 4 항에 있어서,
적어도 둘 이상의 상기 제2 SQ 및 상기 제2 CQ 쌍 중 적어도 한 쌍의 제2 SQ 및 제2 CQ는 상기 제2 가상 머신에 대응되고, 적어도 다른 한 쌍의 제2 SQ 및 제2 CQ는 상기 제1 가상 머신 및 상기 제2 가상 머신에 공통되어 대응되는 방법.
According to claim 4,
At least one pair of second SQ and second CQ among at least two pairs of second SQ and second CQ corresponds to the second virtual machine, and at least another pair of second SQ and second CQ corresponds to the second virtual machine. A method common to and corresponding to the first virtual machine and the second virtual machine.
삭제delete 제 1 항에 있어서,
상기 제1 가상 머신의 제1 VSQ의 제1 커맨드 및 상기 제2 가상 머신의 제1 VSQ의 제2 커맨드 중 적어도 하나를 페치하는 단계는:
상기 호스트 장치로부터 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 가리키는 제1 도어벨(doorbell)을 수신하는 단계;
상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계; 및
상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.
According to claim 1,
Fetching at least one of a first command of a first VSQ of the first virtual machine and a second command of a first VSQ of the second virtual machine may include:
receiving a first doorbell indicating that the first command is written in the first VSQ from the host device;
outputting a first request of the first command of the first VSQ to the host device based on the first doorbell; and
fetching the first command of the first VSQ of the first virtual machine from the host device.
제 8 항에 있어서,
상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고,
상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계는:
상기 I/O 메모리 관리 유닛을 통해, 상기 제1 VSQ의 상기 제1 커맨드의 상기 제1 요청에 대응하는 제1 가상 어드레스가 제1 물리적 어드레스로 변환되고, 상기 변환된 제1 물리적 어드레스 및 상기 제1 도어벨에 기초하여, 상기 제1 VSQ의 상기 제1 커맨드의 상기 제1 요청을 상기 호스트 장치로 출력하는 단계를 포함하고, 그리고
상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계는:
상기 I/O 메모리 관리 유닛에 의한 어드레스 변환 없이, 상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.
According to claim 8,
The storage virtualization device further communicates with an input/output (I/O) memory management unit;
The step of outputting a first request of the first command of the first VSQ to the host device based on the first doorbell:
Through the I/O memory management unit, a first virtual address corresponding to the first request of the first command of the first VSQ is converted into a first physical address, and the converted first physical address and the first outputting the first request of the first command of the first VSQ to the host device based on one doorbell; and
Fetching the first command of the first VSQ of the first virtual machine from the host device comprises:
and fetching the first command of the first VSQ of the first virtual machine from the host device without address translation by the I/O memory management unit.
제 1 항에 있어서,
상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고, 그리고
상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하거나 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 상기 제2 VCQ에 기입하는 단계는:
상기 I/O 메모리 관리 유닛을 통해, 상기 분배된 제1 컴플리션에 대응하는 제2 가상 어드레스가 제2 물리적 어드레스로 변환되고, 상기 변환된 제2 물리적 어드레스에 기초하여, 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하는 단계를 포함하는 방법.
According to claim 1,
The storage virtualization device further communicates with an input/output (I/O) memory management unit, and
Writing the distributed first completion to the first VCQ of the first virtual machine or writing the distributed second completion to the second VCQ of the second virtual machine comprises:
Through the I/O memory management unit, a second virtual address corresponding to the distributed first completion is converted into a second physical address, and based on the converted second physical address, the distributed first completion and writing a completion to the first VCQ of the first virtual machine.
제 1 항에 있어서,
페치된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 제1 SQ 및 상기 제2 SQ 중 적어도 하나로 분배하는 단계는:
상기 페치된 제1 커맨드에 포함된, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 제3 가상 어드레스를 제3 물리적 어드레스로 변환하는 단계를 포함하는 방법.
According to claim 1,
Distributing the fetched first command or the second command to at least one of the first SQ and the second SQ includes:
and converting a third virtual address of a direct memory access (DMA) buffer of the first virtual machine, included in the fetched first command, into a third physical address.
제 1 항에 있어서,
상기 제1 SQ 또는 상기 제2 SQ의 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트로 제공하는 단계는:
상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 SQ에 상기 제1 커맨드가 기입된 것을 가리키는 제2 도어벨을 출력하는 단계;
상기 제1 스토리지 장치로부터 상기 제1 SQ의 상기 제1 커맨드의 제2 요청을 수신하는 단계; 및
상기 제2 요청에 기초하여 상기 제1 SQ의 상기 제1 커맨드를 포함하는 응답을 상기 제1 스토리지 장치로 출력하는 단계를 포함하는 방법.
According to claim 1,
Providing the first command or the second command of the first SQ or the second SQ to the storage device set includes:
outputting a second doorbell indicating that the first command is written in the first SQ to a doorbell register of a first storage device of the set of storage devices;
receiving a second request for the first command of the first SQ from the first storage device; and
and outputting a response including the first command of the first SQ to the first storage device based on the second request.
제 1 항에 있어서,
상기 호스트 장치로부터 상기 제1 VCQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제3 도어벨을 수신하는 단계를 더 포함하는 방법.
According to claim 1,
and receiving, from the host device, a third doorbell indicating that the first completion written in the first VCQ has been processed.
제 13 항에 있어서,
상기 제3 도어벨에 기초하여, 상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 CQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제4 도어벨을 출력하는 단계를 더 포함하는 방법.
According to claim 13,
outputting a fourth doorbell indicating that the first completion written in the first CQ has been processed, to a doorbell register of a first storage device of the storage device set, based on the third doorbell; How to include more.
제 1 항에 있어서,
상기 스토리지 가상화 장치는 FPGA(field programmable gate array)로 구현되는 방법.
According to claim 1,
The storage virtualization device is implemented as a field programmable gate array (FPGA).
호스트 장치 및 스토리지 장치 세트와 통신하고, 상기 호스트 장치에 의해 실행되는 제1 가상 머신 및 제2 가상 머신을 지원하는 스토리지 가상화 장치에 있어서:
상기 호스트 장치와 통신하고, 상기 제1 가상 머신 및 상기 제2 가상 머신과의 인터페이스를 제공하도록 구성된 SR-IOV(single root input/output virtualization) 어댑터;
상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하도록 구성된 제1 스토리지 가상화 코어 및 상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 페치하도록 구성된 제2 스토리지 가상화 코어;
상기 제1 가상 머신 또는 상기 제2 가상 머신과 상기 스토리지 장치 세트 사이의 매핑 정보를 포함하는 개재(interposition) 계층; 및
상기 스토리지 장치 세트와 통신하도록 구성되고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)와 제2 SQ 및 제2 CQ를 포함하는 스토리지 인터페이스 회로를 포함하되,
상기 스토리지 인터페이스 회로는:
상기 제1 스토리지 가상화 코어 또는 상기 제2 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제1 SQ 또는 상기 제2 SQ로 분배된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트의 제1 스토리지 장치 및 제2 스토리지 장치 중 하나로 제공하고;
상기 제1 스토리지 장치 및 상기 제2 스토리지 장치 중 하나로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션 또는 상기 제2 커맨드가 처리된 것을 가리키는 제2 컴플리션을 수신하여, 상기 제1 CQ 또는 상기 제2 CQ에 기입하고; 그리고
상기 개재 계층을 통해 상기 제1 CQ 또는 상기 제2 CQ의 상기 제1 컴플리션또는 상기 제2 컴플리션을 가상화 계층에 분배하도록 더 구성되고, 그리고
상기 제1 스토리지 가상화 코어는 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하고 상기 제2 스토리지 가상화 코어는 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하도록 더 구성된 스토리지 가상화 장치.
A storage virtualization device that communicates with a host device and a set of storage devices and supports a first virtual machine and a second virtual machine executed by the host device, comprising:
a single root input/output virtualization (SR-IOV) adapter configured to communicate with the host device and provide an interface with the first virtual machine and the second virtual machine;
A first storage virtualization core configured to fetch a first command of a first virtual submission queue (VSQ) of the first virtual machine and a second storage virtualization core configured to fetch a second command of a second VSQ of the second virtual machine. storage virtualization core;
an interposition layer including mapping information between the first virtual machine or the second virtual machine and the storage device set; and
a storage interface circuit configured to communicate with the set of storage devices and including a first submission queue (SQ) and a first completion queue (CQ) and a second SQ and a second CQ;
The storage interface circuitry:
The first command or the second command distributed from the first storage virtualization core or the second storage virtualization core to the first SQ or the second SQ through the intervening layer is transmitted to a first storage device of the storage device set. and a second storage device;
A first completion indicating that the first command has been processed or a second completion indicating that the second command has been processed is received from one of the first storage device and the second storage device, write in CQ or the second CQ; and
and distribute the first completion or the second completion of the first CQ or the second CQ to a virtualization layer through the intervening layer, and
The first storage virtualization core writes the distributed first completion to a first virtual completion queue (VCQ) of the first virtual machine, and the second storage virtualization core writes the distributed second completion to the first virtual machine. A storage virtualization apparatus further configured to write to a second VCQ of a second virtual machine.
제 16 항에 있어서,
상기 호스트 장치로부터 상기 SR-IOV 어댑터를 통해 상기 제1 커맨드에 대응하는 제1 도어벨을 수신하고, 그리고 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 상기 제1 스토리지 가상화 코어에게 알리도록 구성된 도어벨 레지스터;
상기 제1 스토리지 가상화 코어와 통신하고, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 가상 어드레스 및 상기 호스트 장치에 대응하는 물리적 어드레스 간의 매핑 정보를 포함하는 테이블; 및
상기 호스트 장치 및 상기 스토리지 장치 세트 사이의 상기 제1 커맨드의 처리를 지원하는 DMA 엔진을 더 포함하는 스토리지 가상화 장치.
17. The method of claim 16,
Receive a first doorbell corresponding to the first command from the host device through the SR-IOV adapter, and inform the first storage virtualization core that the first command is written in the first VSQ. doorbell register;
a table communicating with the first storage virtualization core and including mapping information between a virtual address of a direct memory access (DMA) buffer of the first virtual machine and a physical address corresponding to the host device; and
The storage virtualization apparatus further comprising a DMA engine supporting processing of the first command between the host device and the set of storage devices.
삭제delete 복수의 가상 머신을 실행하는 호스트 장치, 각각 상기 복수의 가상 머신 중 대응되는 가상 머신을 지원하고 그리고 SQ(submission queue) 및 CQ(completion queue)를 포함하는 복수의 스토리지 가상화 장치, 및 상기 스토리지 가상화 장치와 통신하는 스토리지 장치 세트를 포함하는 스토리지 시스템의 동작 방법에 있어서:
상기 호스트 장치에 의해, 상기 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 SQ로 분배하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;
상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계;
상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계;
상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계; 및
상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함하고,
상기 SQ 및 상기 CQ는,
상기 스토리지 장치 세트의 복수의 스토리지 장치 중 하나에 대응되는 방법.
A host device running a plurality of virtual machines, a plurality of storage virtualization devices each supporting a corresponding virtual machine among the plurality of virtual machines and including a submission queue (SQ) and a completion queue (CQ), and the storage virtualization device A method of operating a storage system comprising a set of storage devices in communication with:
generating, by the host device, a doorbell indicating that a command has been written to a virtual submission queue (VSQ) of the virtual machine;
fetching, by the storage virtualization device, the command of the VSQ of the virtual machine;
distributing the fetched command to the SQ by the storage virtualization device;
providing, by the storage virtualization device, the command of the SQ to the set of storage devices;
processing the command by the set of storage devices and the host device;
writing, by the set of storage devices, to the CQ a completion indicating that the command has been processed;
distributing, by the storage virtualization device, the completion of the CQ to a virtualization layer; and
writing the distributed completion to a virtual completion queue (VCQ) of the virtual machine, by the storage virtualization device;
The SQ and the CQ are,
A method corresponding to one of a plurality of storage devices of the set of storage devices.
제 19 항에 있어서,
상기 스토리지 시스템은 상기 호스트 장치 및 상기 스토리지 가상화 장치와 통신하는 I/O(input/output) 메모리 관리 유닛을 더 포함하고,
상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계는:
상기 스토리지 가상화 장치에 의해, 상기 도어벨에 기초하여 상기 VSQ의 상기 커맨드의 요청을 생성하는 단계;
상기 I/O 메모리 관리 유닛에 의해, 상기 커맨드의 상기 요청에 대응하는 제1 가상 어드레스를 제1 물리적 어드레스로 변환하는 단계; 및
상기 호스트 장치에 의해, 상기 제1 물리적 어드레스 및 상기 요청에 기초하여, 상기 VSQ의 상기 커맨드를 상기 스토리지 가상화 장치로 제공하는 단계를 포함하고, 그리고
상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 상기 VCQ에 기입하는 단계는:
상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 I/O 메모리 관리 유닛으로 제공하는 단계;
상기 I/O 메모리 관리 유닛에 의해, 상기 분배된 컴플리션에 대응하는 제2 가상 어드레스를 제2 물리적 어드레스로 변환하는 단계; 및
상기 호스트 장치에 의해, 상기 제2 물리적 어드레스에 기초하여 상기 분배된 컴플리션을 상기 VCQ에 저장하는 단계를 포함하는 방법.
According to claim 19,
The storage system further includes an input/output (I/O) memory management unit communicating with the host device and the storage virtualization device;
Fetching, by the storage virtualization device, the command of the VSQ of the virtual machine:
generating, by the storage virtualization device, a request for the command of the VSQ based on the doorbell;
converting, by the I/O memory management unit, a first virtual address corresponding to the request of the command into a first physical address; and
providing, by the host device, the command of the VSQ to the storage virtualization device based on the first physical address and the request; and
Writing, by the storage virtualization device, the distributed completion to the VCQ of the virtual machine:
providing the distributed completion to the I/O memory management unit by the storage virtualization device;
converting, by the I/O memory management unit, a second virtual address corresponding to the distributed completion into a second physical address; and
and storing, by the host device, the distributed completion in the VCQ based on the second physical address.
KR1020210092789A 2020-11-03 2021-07-15 Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same KR102532099B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/504,849 US20220137998A1 (en) 2020-11-03 2021-10-19 Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
CN202111260805.6A CN114443209A (en) 2020-11-03 2021-10-28 Storage virtualization apparatus, operation method thereof, and operation method of system having the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200145193 2020-11-03
KR20200145193 2020-11-03

Publications (2)

Publication Number Publication Date
KR20220059906A KR20220059906A (en) 2022-05-10
KR102532099B1 true KR102532099B1 (en) 2023-05-12

Family

ID=81591687

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210092789A KR102532099B1 (en) 2020-11-03 2021-07-15 Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same

Country Status (1)

Country Link
KR (1) KR102532099B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008152783A (en) * 2006-12-19 2008-07-03 Internatl Business Mach Corp <Ibm> Method, program, and system for communicating between first host system and second host system in data processing system (system and method for communication between host systems using transaction protocol and shared memory)
JP2020091554A (en) * 2018-12-04 2020-06-11 株式会社日立製作所 Multi-node storage system and queue control method of multi-node storage system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102308782B1 (en) * 2014-08-19 2021-10-05 삼성전자주식회사 Memory controller, storage device, server virtualization system, and storage device identification in server virtualization system
KR102336443B1 (en) * 2015-02-04 2021-12-08 삼성전자주식회사 Storage device and user device supporting virtualization function

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008152783A (en) * 2006-12-19 2008-07-03 Internatl Business Mach Corp <Ibm> Method, program, and system for communicating between first host system and second host system in data processing system (system and method for communication between host systems using transaction protocol and shared memory)
JP2020091554A (en) * 2018-12-04 2020-06-11 株式会社日立製作所 Multi-node storage system and queue control method of multi-node storage system

Also Published As

Publication number Publication date
KR20220059906A (en) 2022-05-10

Similar Documents

Publication Publication Date Title
US11947991B2 (en) Methods and apparatus to process commands from virtual machines
CN107209681B (en) Storage device access method, device and system
CN105993009B (en) The method and apparatus that MSI-X is interrupted are transmitted by computing resource of the non-transparent bridge into PCIe cluster
JP5608243B2 (en) Method and apparatus for performing I / O processing in a virtual environment
JP6004608B2 (en) Method, apparatus, and computer program for virtualizing host USB adapter (virtualization of host USB adapter)
US20140164666A1 (en) Server and method for sharing peripheral component interconnect express interface
JP6040101B2 (en) Storage device control method, storage device, and information processing device
US11194735B2 (en) Technologies for flexible virtual function queue assignment
US20200142848A1 (en) Management controller including virtual usb host controller
CN104636076A (en) Distributed block device driving method and system for cloud storage
CN115495389B (en) Memory controller, calculation memory device, and operation method of calculation memory device
EP4053706A1 (en) Cross address-space bridging
WO2020135504A1 (en) Virtualization method and apparatus
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
KR102529761B1 (en) PCIe DEVICE AND OPERATING METHOD THEREOF
US11150928B2 (en) Hypervisor translation bypass
KR20220061983A (en) Provides interrupts from the I/O memory management unit to the guest operating system
KR102532099B1 (en) Storage virtualization device supporting a virtual machine, operation method thereof, and operation method of system having the same
TWI797022B (en) Storage controller, computational storage device, and operational method of computational storage device
US20230052808A1 (en) Hardware Interconnect With Memory Coherence
US20220335109A1 (en) On-demand paging support for confidential computing
EP3671472B1 (en) Data access method and device
CN115454902A (en) NVME communication system and method based on PCIE interface
Zhang et al. NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same

Legal Events

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