KR20230011871A - Virtualization device including storage device and computational device, and method of operating the same - Google Patents

Virtualization device including storage device and computational device, and method of operating the same Download PDF

Info

Publication number
KR20230011871A
KR20230011871A KR1020220082341A KR20220082341A KR20230011871A KR 20230011871 A KR20230011871 A KR 20230011871A KR 1020220082341 A KR1020220082341 A KR 1020220082341A KR 20220082341 A KR20220082341 A KR 20220082341A KR 20230011871 A KR20230011871 A KR 20230011871A
Authority
KR
South Korea
Prior art keywords
address
request
csv
computing device
storage
Prior art date
Application number
KR1020220082341A
Other languages
Korean (ko)
Other versions
KR102532100B1 (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/863,614 priority Critical patent/US20230016692A1/en
Priority to CN202210829658.8A priority patent/CN115617448A/en
Publication of KR20230011871A publication Critical patent/KR20230011871A/en
Application granted granted Critical
Publication of KR102532100B1 publication Critical patent/KR102532100B1/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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

According to an embodiment of the present disclosure, a virtualization device communicates with a host device executing a virtual machine, and includes a computational storage virtualization (CSV) device, a storage device, and a computation device. An operating method of a virtualization device includes the steps of: receiving, from a host device, a first address of a virtual machine, a second address of a storage device, and a first request indicating a read operation; obtaining a third address of a real machine corresponding to the virtual machine and a fourth address of a computation device based on the first request; providing, to the storage device, a second request indicating the second address, the fourth address, and a redirection; providing, to the computation device, raw data based on the second request; providing, to the computation device, a third request indicating the third address, the fourth address, and a processing operation; generating processed data based on the third request and the raw data; and providing, to the host device, the processed data. According to the embodiment of the present disclosure, a resource burden of the host device can be reduced by providing an operation resource through a hardware accelerator.

Description

스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법{VIRTUALIZATION DEVICE INCLUDING STORAGE DEVICE AND COMPUTATIONAL DEVICE, AND METHOD OF OPERATING THE SAME}Virtualization device including a storage device and a computing device, and method of operating the same

본 개시는 가상화 장치에 관한 것으로, 좀 더 상세하게는 스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법에 관한 것이다.The present disclosure relates to a virtualization device, and more particularly, to a virtualization device including a storage device and a computing device, and a method for operating the same.

스토리지 가상화 기술은 가상 머신에게 실제 스토리지 장치의 리소스를 제공한다. 가상 머신은 소프트웨어로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다. 가상 머신은 읽기 요청에 따라 실제 스토리지 장치에 저장된 데이터를 읽을 수 있거나, 또는 쓰기 요청에 따라 실제 스토리지 장치에 데이터를 저장할 수 있다.Storage virtualization technology provides virtual machines with the resources of real storage devices. 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 machine may read data stored in the real storage device according to a read request or store data in the real storage device according to a write request.

대용량 데이터의 효율적인 관리 및 보안 향상을 위해, 스토리지 장치는 가상 머신으로부터 수신된 데이터를 그대로 저장하는 대신에, 호스트 장치의 프로세서 또는 별도의 연산 장치에 의해 압축되거나 암호화된 데이터를 저장할 수 있다. 가상 머신을 위한 연산 기술이 소프트웨어로 구현되면, 호스트 장치의 리소스 부담이 증가하고 데이터 처리속도가 저하될 수 있다. 호스트 장치의 리소스 부담을 감소시키고, 장치들 사이의 고속 데이터 통신을 보장하면서, 가상 머신에게 연산 리소스 및 스토리지 리소스를 제공하는 방법이 요구될 수 있다.In order to efficiently manage large amounts of data and improve security, the storage device may store compressed or encrypted data by a processor of a host device or a separate computing device instead of storing data received from a virtual machine as it is. When an operation technology for a virtual machine is implemented as software, a burden on resources of a host device may increase and data processing speed may decrease. There may be a need for a method of providing computational and storage resources to virtual machines while reducing the resource burden of host devices and ensuring high-speed data communication between devices.

본 개시의 일 실시 예에 따르면, 스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법이 제공된다.According to one embodiment of the present disclosure, a virtualization device including a storage device and a computing device, and a method for operating the virtualization device are provided.

본 개시의 일 실시 예에 따르면, 가상화 장치는 가상 머신을 실행하는 호스트 장치와 통신하고, 그리고 CSV(Computational Storage Virtualization) 장치, 스토리지 장치, 및 연산 장치를 포함한다. 상기 가상화 장치의 동작하는 방법은, 상기 CSV 장치에 의해, 상기 호스트 장치로부터, 상기 가상 머신의 제1 어드레스, 상기 스토리지 장치의 제2 어드레스, 및 읽기 동작을 가리키는 제1 요청을 수신하는 단계, 상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 실제 머신의 제3 어드레스 및 상기 연산 장치의 제4 어드레스를 획득하는 단계, 상기 CSV 장치에 의해, 상기 스토리지 장치에게, 상기 제2 어드레스, 상기 제4 어드레스, 및 리디렉션을 가리키는 제2 요청을 제공하는 단계, 상기 스토리지 장치에 의해, 상기 연산 장치에게, 상기 제2 요청에 기초하여 원시 데이터를 제공하는 단계, 상기 CSV 장치에 의해, 상기 연산 장치에게, 상기 제3 어드레스, 상기 제4 어드레스, 및 처리 동작을 가리키는 제3 요청을 제공하는 단계, 상기 연산 장치에 의해, 상기 제3 요청 및 상기 원시 데이터에 기초하여 처리된 데이터를 생성하는 단계, 및 상기 연산 장치에 의해, 상기 호스트 장치에게, 상기 처리된 데이터를 제공하는 단계를 포함한다.According to an embodiment of the present disclosure, a virtualization device communicates with a host device running a virtual machine, and includes a Computational Storage Virtualization (CSV) device, a storage device, and a computing device. The method of operating the virtualization device may include receiving, by the CSV device, a first request indicating a first address of the virtual machine, a second address of the storage device, and a read operation from the host device; Acquiring, by a CSV device, a third address of a real machine corresponding to the virtual machine and a fourth address of the computing device based on the first request; 2 addresses, the fourth address, and providing a second request indicating redirection, by the storage device, providing raw data to the computing device based on the second request, by the CSV device , providing, to the computing device, a third request indicating the third address, the fourth address, and a processing operation, by the computing device, processing data based on the third request and the raw data; generating, and providing, by the computing device, the processed data to the host device.

본 개시의 일 실시 예에 따르면, 가상화 장치는 가상 머신을 실행하는 호스트 장치와 통신하고, 그리고 CSV(Computational Storage Virtualization) 장치, 스토리지 장치, 및 연산 장치를 포함한다. 상기 가상화 장치의 동작하는 방법은, 상기 CSV 장치에 의해, 상기 호스트 장치로부터, 상기 가상 머신의 제1 어드레스, 상기 스토리지 장치의 제2 어드레스, 및 쓰기 동작을 가리키는 제1 요청을 수신하는 단계, 상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 실제 머신의 제3 어드레스 및 상기 연산 장치의 제4 어드레스를 획득하는 단계, 상기 CSV 장치에 의해, 상기 연산 장치에게, 상기 제3 어드레스, 상기 제4 어드레스, 및 처리 동작을 가리키는 제2 요청을 제공하는 단계, 상기 연산 장치에 의해, 상기 호스트 장치로부터, 상기 제2 요청에 기초하여 원시 데이터를 수신하는 단계, 상기 연산 장치에 의해, 상기 제2 요청 및 상기 원시 데이터에 기초하여 처리된 데이터를 생성하는 단계, 상기 CSV 장치에 의해, 상기 스토리지 장치에게, 상기 제2 어드레스, 상기 제4 어드레스, 및 저장 동작을 가리키는 제3 요청을 제공하는 단계, 상기 스토리지 장치에 의해, 상기 연산 장치로부터, 상기 제3 요청에 기초하여 상기 처리된 데이터를 수신하는 단계, 및 상기 스토리지 장치에 의해, 상기 처리된 데이터를 저장하는 단계를 포함한다.According to an embodiment of the present disclosure, a virtualization device communicates with a host device running a virtual machine, and includes a Computational Storage Virtualization (CSV) device, a storage device, and a computing device. The method of operating the virtualization device may include receiving, by the CSV device, a first request indicating a first address of the virtual machine, a second address of the storage device, and a write operation from the host device; Acquiring, by the CSV device, a third address of a real machine corresponding to the virtual machine and a fourth address of the computing device based on the first request; 3 providing a second request indicating an address, the fourth address, and a processing operation; receiving, by the computing device, from the host device, raw data based on the second request; generating processed data based on the second request and the raw data, and a third request indicating, by the CSV device, to the storage device, the second address, the fourth address, and a store operation. providing, receiving, by the storage device, the processed data from the computing device based on the third request, and storing the processed data by the storage device. .

본 개시의 일 실시 예에 따르면, 가상화 장치는, 제1 데이터를 저장하도록 구성된 스토리지 장치, 상기 제1 데이터를 처리하고, 그리고 호스트 장치에 의해 실행되는 가상 머신의 제2 데이터를 처리하도록 구성된 연산 장치, CSV(Computational Storage Virtualization) 장치, 및 상기 스토리지 장치, 상기 연산 장치, 상기 CSV 장치, 및 상기 호스트 장치와 연결된 PCIe(Peripheral Component Interconnect express) 회로를 포함한다. 상기 CSV 장치는, 상기 호스트 장치로부터 상기 가상 머신의 제1 어드레스 및 상기 스토리지 장치의 제2 어드레스를 포함하는 제1 요청을 수신하고, 상기 가상 머신에 대응하는 실제 머신의 제3 어드레스 및 상기 연산 장치의 제4 어드레스를 획득하고, 상기 제1 요청이 읽기 동작 또는 쓰기 동작을 가리키는지 여부를 결정하고, 상기 제1 요청이 상기 읽기 동작을 가리키는 것으로 결정하면, 상기 제2 어드레스, 상기 제4 어드레스, 및 리디렉션을 가리키는 제2 요청을 상기 스토리지 장치에게 제공하고, 그리고 상기 제3 어드레스, 상기 제4 어드레스, 및 상기 제1 데이터의 제1 처리 동작을 가리키는 제3 요청을 상기 연산 장치에게 제공하고, 그리고 상기 제1 요청이 상기 쓰기 동작을 가리키는 것으로 결정하면, 상기 제3 어드레스, 상기 제4 어드레스, 및 상기 제2 데이터의 제2 처리 동작을 가리키는 제4 요청을 상기 연산 장치에게 제공하고, 그리고 상기 제2 어드레스, 상기 제4 어드레스, 및 저장 동작을 가리키는 제5 요청을 상기 스토리지 장치에게 제공하도록 구성된다.According to an embodiment of the present disclosure, a virtualization device includes a storage device configured to store first data, a computing device configured to process the first data, and process second data of a virtual machine executed by a host device. , a Computational Storage Virtualization (CSV) device, and a Peripheral Component Interconnect express (PCIe) circuit connected to the storage device, the calculation device, the CSV device, and the host device. The CSV device receives a first request including a first address of the virtual machine and a second address of the storage device from the host device, and a third address of a real machine corresponding to the virtual machine and the computing device obtains a fourth address of, determines whether the first request indicates a read operation or a write operation, and if it is determined that the first request indicates the read operation, the second address, the fourth address, provide a second request to the storage device indicating redirection, and provide a third request to the computing device indicating a first processing operation of the third address, the fourth address, and the first data; and if it is determined that the first request points to the write operation, providing the computing device with a fourth request pointing to the third address, the fourth address, and a second processing operation of the second data; and 2 address, the fourth address, and a fifth request indicating a storage operation to the storage device.

본 개시의 일 실시 예에 따르면, 스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법이 제공된다.According to one embodiment of the present disclosure, a virtualization device including a storage device and a computing device, and a method for operating the virtualization device are provided.

또한, 하드웨어 가속기를 통해 연산 리소스를 제공함으로써 호스트 장치의 리소스 부담이 감소하고, 가상 머신에 대응하는 실제 머신의 어드레스 및 연산 장치의 어드레스에 기초하여 서로 다른 장치들 사이의 직접적인 통신이 보장되고, 그리고 스토리지 리소스 및 연산 리소스를 유연하게 관리하는 가상화 장치 및 이의 동작하는 방법이 제공된다.In addition, by providing computational resources through a hardware accelerator, the resource burden of the host device is reduced, direct communication between different devices is ensured based on the address of the computing device and the address of the real machine corresponding to the virtual machine, and A virtualization device that flexibly manages storage resources and computational resources and a method for operating the same are provided.

도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 시스템을 설명하는 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 시스템을 설명하는 블록도이다.
도 4는 본 개시의 일부 실시 예들에 따른 커맨드 포맷을 설명하는 도면이다.
도 5는 본 개시의 일부 실시 예들에 따라 도 4의 리저브드 필드를 설명하는 도면이다.
도 6은 본 개시의 일부 실시 예들에 따른 가상화 장치의 동작하는 방법을 설명하는 순서도이다.
도 7은 본 개시의 일부 실시 예들에 따라 스토리지 시스템의 읽기 동작을 설명하는 도면이다.
도 8은 본 개시의 일부 실시 예들에 따라 스토리지 시스템의 쓰기 동작을 설명하는 도면이다.
도 9는 본 개시의 일부 실시 예들에 따라 스토리지 시스템의 장치들 사이의 직접적인 통신을 설명하는 도면이다.
도 10은 본 개시의 일부 실시 예들에 따른 유연한 확장성을 갖는 스토리지 시스템을 설명하는 블록도이다.
도 11은 본 개시의 일부 실시 예들에 따른 스토리지 시스템을 설명하는 블록도이다.
도 12는 본 개시의 일부 실시 예들에 따른 스토리지 시스템을 설명하는 블록도이다.
도 13은 본 개시의 일부 실시 예들에 따라 가상화 장치의 읽기 동작을 설명하는 순서도이다.
도 14는 본 개시의 일부 실시 예들에 따라 가상화 장치의 쓰기 동작을 설명하는 순서도이다.
1 is a block diagram of a storage system according to an embodiment of the present disclosure.
2 is a block diagram illustrating the storage system of FIG. 1 according to some embodiments of the present disclosure.
3 is a block diagram illustrating the storage system of FIG. 1 according to some embodiments of the present disclosure.
4 is a diagram illustrating a command format according to some embodiments of the present disclosure.
5 is a diagram illustrating the reserved field of FIG. 4 according to some embodiments of the present disclosure.
6 is a flowchart illustrating a method of operating a virtualization device according to some embodiments of the present disclosure.
7 is a diagram illustrating a read operation of a storage system according to some embodiments of the present disclosure.
8 is a diagram illustrating a write operation of a storage system according to some embodiments of the present disclosure.
9 is a diagram illustrating direct communication between devices of a storage system according to some embodiments of the present disclosure.
10 is a block diagram illustrating a storage system having flexible scalability according to some embodiments of the present disclosure.
11 is a block diagram illustrating a storage system according to some embodiments of the present disclosure.
12 is a block diagram illustrating a storage system according to some embodiments of the present disclosure.
13 is a flowchart illustrating a read operation of a virtualization device according to some embodiments of the present disclosure.
14 is a flowchart illustrating a write operation of a virtualization device 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), CSV(Computational Storage Virtualization) 장치(120), 스토리지 장치(130), 연산 장치(140), I/O(Input/Output) 메모리 관리 유닛(150), 및 PCIe(Peripheral Component Interconnect express) 회로(160)를 포함할 수 있다.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 includes a host device 110, a computational storage virtualization (CSV) device 120, a storage device 130, a computing device 140, and input/output (I/O) memory. It may include a management unit 150 and a Peripheral Component Interconnect express (PCIe) circuit 160 .

스토리지 시스템(100)은 가상 머신(VM; Virtual Machine)을 제공할 수 있다. 가상 머신(VM)은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신(VM) 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다. 일부 실시 예들에서, 스토리지 시스템(100)은 서버 장치일 수 있다. 예를 들어, 스토리지 시스템(100)은 사용자를 위한 가상 머신(VM)을 포함하는 클라우드 컴퓨팅 환경을 제공하는 서버 장치일 수 있다.The storage system 100 may provide a virtual machine (VM). 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). In some embodiments, the storage system 100 may be a server device. For example, the storage system 100 may be a server device that provides a cloud computing environment including a virtual machine (VM) for users.

호스트 장치(110)는 프로세서 및 호스트 메모리를 포함할 수 있다. 호스트 장치(110)의 프로세서는 호스트 메모리에 저장된 명령어를 실행함으로써, 가상 머신(VM)을 실행할 수 있다. 예를 들어, 호스트 장치(110)의 프로세서는 가상 머신(VM) 상에서 실행되는 운영 체제(OS; operating system) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. The host device 110 may include a processor and host memory. The processor of the host device 110 may execute a virtual machine (VM) by executing a command stored in the host memory. For example, the processor of the host device 110 may actually perform operations for an operating system (OS) and applications executed on a virtual machine (VM).

호스트 장치(110)의 프로세서는 가상 머신(VM)의 데이터 처리를 위한 요청들(예를 들어, 읽기 요청, 쓰기 요청 등)을 관리할 수 있다. 호스트 메모리는 가상 머신(VM)의 쓰기 요청에 따라 스토리지 장치(130)에 제공될 데이터 및 스토리지 장치(130)로부터 읽기 요청에 따라 수신될 데이터를 관리할 수 있다.The processor of the host device 110 may manage data processing requests (eg, read requests, write requests, etc.) of the virtual machine (VM). The host memory may manage data to be provided to the storage device 130 according to a write request from a virtual machine (VM) and data to be received according to a read request from the storage device 130 .

CSV 장치(120)는 가상 머신(VM)에 따른 가상화 환경을 스토리지 장치(130) 및 연산 장치(140)에 제공할 수 있다. CSV 장치(120)는 호스트 장치(110)의 리소스 관리 부담 없이, 가상 머신(VM)에게 스토리지 리소스 및 연산 리소스를 제공할 수 있다.The CSV device 120 may provide a virtualization environment according to a virtual machine (VM) to the storage device 130 and the computing device 140 . The CSV device 120 may provide storage resources and computational resources to a virtual machine (VM) without the resource management burden of the host device 110 .

예를 들어, CSV 장치(120)는 가상 머신(VM)을 실행하는 호스트 장치(110)와 통신할 수 있다. CSV 장치(120)는 스토리지 장치(130) 및 연산 장치(140)와 통신할 수 있다. CSV 장치(120)는 가상 머신(VM)의 요청을 스토리지 장치(130) 및 연산 장치(140)에 의해 수행될 수 있는 요청들로 변경할 수 있다. 스토리지 장치(130) 및 연산 장치(140)는 CSV 장치(120)의 보조에 따라, 호스트 장치(110)의 리소스 관리 부담 없이 가상 머신(VM)의 요청을 처리할 수 있다.For example, the CSV device 120 may communicate with a host device 110 running a virtual machine (VM). The CSV device 120 may communicate with the storage device 130 and the computing device 140 . The CSV device 120 may change a request of a virtual machine (VM) into requests that can be performed by the storage device 130 and the computing device 140 . The storage device 130 and the computing device 140 may process a request of a virtual machine (VM) without the resource management burden of the host device 110 according to the assistance of the CSV device 120 .

일부 실시 예들에서, CSV 장치(120)는 서로 다른 장치들 사이의 직접적인 통신을 보장할 수 있다. 예를 들어, CSV 장치(120)는 PCIe 회로(160)를 통해서, 호스트 장치(110) 및 스토리지 장치(130)가 직접적으로 데이터를 통신하는 것, 호스트 장치(110) 및 연산 장치(140)가 직접적으로 데이터를 통신하는 것, 그리고 스토리지 장치(130) 및 연산 장치(140)가 직접적으로 데이터를 통신하는 것을 보조할 수 있다. 직접적으로 데이터를 통신하는 것은 DMA(Direct Memory Access) 통신으로도 지칭될 수 있다.In some embodiments, CSV device 120 may ensure direct communication between different devices. For example, the CSV device 120 directly communicates data between the host device 110 and the storage device 130 through the PCIe circuit 160, and the host device 110 and the computing device 140 It may assist in directly communicating data, and in direct communication of data between the storage device 130 and the computing device 140 . Communicating data directly may also be referred to as Direct Memory Access (DMA) communication.

일부 실시 예들에서, CSV 장치(120)는 하드웨어 가속기로 구현될 수 있다. 예를 들어, CSV 장치(120)는 FPGA(Field Programmable Gate Array)로 구현될 수 있다. FPGA는 가상 머신(VM)을 위한 스토리지 리소스 및 연산 리소스를 관리하는 하드웨어일 수 있다.In some embodiments, CSV device 120 may be implemented as a hardware accelerator. For example, the CSV device 120 may be implemented as a Field Programmable Gate Array (FPGA). FPGAs can be hardware that manages storage and computational resources for virtual machines (VMs).

일부 실시 예들에서, CSV 장치(120)는 스토리지 리소스 및 연산 리소스를 유연하게 관리할 수 있다. 예를 들어, CSV 장치(120)는 호스트 장치(110)의 리소스 관리 부담 없이, 복수의 가상 머신(VM)들로부터의 요청들을 처리하기 위해, 복수의 스토리지 장치들 및 복수의 연산 장치들에게 리소스를 할당할 수 있다. 이에 대한 보다 상세한 설명은 도 10과 함께 후술될 것이다.In some embodiments, the CSV device 120 may flexibly manage storage resources and computational resources. For example, the CSV device 120 provides resources to a plurality of storage devices and a plurality of computing devices in order to process requests from a plurality of virtual machines (VMs) without the resource management burden of the host device 110. can be assigned. A more detailed description of this will be described later along with FIG. 10 .

스토리지 장치(130)는 데이터를 저장할 수 있다. 예를 들어, 스토리지 장치(130)는 가상 머신(VM)의 읽기 요청에 따라 데이터를 제공할 수 있거나, 또는 가상 머신(VM)의 쓰기 요청에 따라 데이터를 저장할 수 있다. 스토리지 장치(130)는 연산 장치(140)에 의해 처리된 데이터를 저장할 수 있다. The storage device 130 may store data. For example, the storage device 130 may provide data according to a read request of the virtual machine (VM) or store data according to a write request of the virtual machine (VM). The storage device 130 may store data processed by the arithmetic device 140 .

연산 장치(140)는 스토리지 장치(130) 또는 호스트 장치(110)로부터 제공된 데이터를 처리할 수 있다. 예를 들어, 가상 머신(VM)으로부터 읽기 요청이 발행되는 경우, CSV 장치(120)의 관리에 따라, 스토리지 장치(130)는 저장된 원시 데이터를 연산 장치(140)로 제공하고, 연산 장치(140)는 원시 데이터를 처리하고, 연산 장치(140)는 처리된 데이터를 호스트 장치(110)로 제공할 수 있다. The computing device 140 may process data provided from the storage device 130 or the host device 110 . For example, when a read request is issued from a virtual machine (VM), according to management of the CSV device 120, the storage device 130 provides stored raw data to the computing device 140, and the computing device 140 ) processes the raw data, and the processing device 140 may provide the processed data to the host device 110 .

또 다른 예로서, 가상 머신(VM)으로부터 쓰기 요청이 발행되는 경우, CSV 장치의 관리에 따라, 연산 장치(140)는 호스트 장치(110)로부터 원시 데이터를 수신하고, 연산 장치(140)는 원시 데이터를 처리하고, 스토리지 장치(130)는 연산 장치(140)에 의해 처리된 데이터를 저장할 수 있다.As another example, when a write request is issued from a virtual machine (VM), according to the management of the CSV device, the processing device 140 receives raw data from the host device 110, and the processing device 140 receives the raw data. Data is processed, and the storage device 130 may store the data processed by the arithmetic device 140 .

일부 실시 예들에서, 연산 장치(140)는 데이터의 압축 또는 암호화를 수행할 수 있다. 예를 들어, 가상 머신(VM)으로부터 읽기 요청이 발행되는 경우, 연산 장치(140)는 스토리지 장치(130)로부터 읽기 요청에 대응하는 원시 데이터를 수신하고, 원시 데이터를 압축해제 또는 복호화하고, 압축해제된 또는 복호화된 데이터를 호스트 장치(110)에 제공할 수 있다.In some embodiments, computing device 140 may perform compression or encryption of data. For example, when a read request is issued from a virtual machine (VM), the computing device 140 receives raw data corresponding to the read request from the storage device 130, decompresses or decrypts the raw data, and compresses the raw data. The released or decrypted data may be provided to the host device 110 .

또 다른 예로서, 가상 머신(VM)으로부터 쓰기 요청이 발행되는 경우, 연산 장치(140)는 호스트 장치(110)로부터 쓰기 요청에 대응하는 원시 데이터를 수신하고, 원시 데이터를 압축 또는 암호화하고, 압축된 또는 암호화된 데이터를 스토리지 장치(130)에 제공할 수 있다.As another example, when a write request is issued from a virtual machine (VM), the processing device 140 receives raw data corresponding to the write request from the host device 110, compresses or encrypts the raw data, and compresses the raw data. Encrypted or encrypted data may be provided to the storage device 130 .

일부 실시 예들에서, 연산 장치(140)는 하드웨어 가속기로 구현될 수 있다. 예를 들어, 연산 장치(140)는 FPGA로 구현될 수 있다. FPGA는 연산 리소스를 제공하는 하드웨어일 수 있다.In some embodiments, computing device 140 may be implemented as a hardware accelerator. For example, the computing device 140 may be implemented as an FPGA. An FPGA can be hardware that provides computational resources.

I/O 메모리 관리 유닛(150)은 가상 머신(VM)의 가상 어드레스 및 가상 머신(VM)에 대응하는 실제 머신(즉, 호스트 장치(110))의 실제 어드레스의 매핑 관계를 관리할 수 있다. 예를 들어, 가상 머신(VM)은 호스트 장치(110)의 프로세서에 의해 실행된 소프트웨어로 구현될 수 있고, 가상 머신(VM)이 관리하는 데이터에 대한 가상 어드레스는 호스트 장치(110)의 호스트 메모리에 저장된 데이터에 대한 실제 어드레스에 대응할 수 있다. I/O 메모리 관리 유닛(150)은 가상 어드레스를 대응하는 물리적 어드레스로 변환하거나, 또는 물리적 어드레스를 대응하는 가상 어드레스로 변환할 수 있다.The I/O memory management unit 150 may manage a mapping relationship between a virtual address of a virtual machine (VM) and a real address of a real machine (ie, the host device 110 ) corresponding to the virtual machine (VM). For example, the virtual machine (VM) may be implemented as software executed by a processor of the host device 110, and a virtual address for data managed by the virtual machine (VM) is a host memory of the host device 110. may correspond to a real address for data stored in . The I/O memory management unit 150 may translate a virtual address into a corresponding physical address, or a physical address into a corresponding virtual address.

일부 실시 예들에서, CSV 장치(120)가 가상 어드레스 및 실제 어드레스의 매핑 관계를 관리하는 어드레스 변환 테이블을 포함하는 경우, I/O 메모리 관리 유닛(150)은 생략될 수 있다. 또는, CSV 장치(120) 내의 어드레스 관리 테이블 및 I/O 메모리 관리 유닛(150)이 가상 어드레스 및 실제 어드레스의 관리를 위해 함께 사용될 수 있다.In some embodiments, when the CSV device 120 includes an address conversion table that manages a mapping relationship between virtual addresses and real addresses, the I/O memory management unit 150 may be omitted. Alternatively, the address management table and the I/O memory management unit 150 in the CSV device 120 may be used together for management of virtual addresses and real addresses.

PCIe 회로(160)는 호스트 장치(110), CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)과 연결될 수 있다. PCIe 회로(160)는 CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150) 중 임의의 조합에 대해 직접적인 인터페이스 환경을 제공할 수 있다. 예를 들어, 스토리지 장치(130)는 PCIe 회로(160)를 통해 연산 장치(140)와 직접적으로 데이터를 통신할 수 있다.The PCIe circuit 160 may be connected to the host device 110 , the CSV device 120 , the storage device 130 , the computing device 140 , and the I/O memory management unit 150 . PCIe circuitry 160 may provide a direct interface environment to any combination of CSV device 120, storage device 130, computing device 140, and I/O memory management unit 150. For example, the storage device 130 may directly communicate data with the computing device 140 through the PCIe circuitry 160 .

상술된 바와 같이, 본 개시에 따르면, CSV 장치(120)는 스토리지 장치(130) 및 연산 장치(140)에게 가상화 환경을 제공한다. CSV 장치(120)는 소프트웨어 모듈이 아니라, 별도의 하드웨어로서 구현되므로, 호스트 장치(110)의 리소스 관리 부담을 감소시킬 수 있다. CSV 장치(120)는 가상 머신(VM)으로부터의 요청을 변환함으로써, 호스트 장치(110), 스토리지 장치(130), 및 연산 장치(140) 중 임의의 조합에 대한 직접적인 통신을 보장할 수 있다.As described above, according to the present disclosure, the CSV device 120 provides a virtualization environment to the storage device 130 and the computing device 140 . Since the CSV device 120 is implemented as separate hardware rather than a software module, the resource management burden of the host device 110 can be reduced. The CSV device 120 may ensure direct communication with any combination of the host device 110 , the storage device 130 , and the computing device 140 by converting a request from a virtual machine (VM).

도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 시스템을 설명하는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 시스템(100)은 호스트 측 및 스토리지 측으로 구별될 수 있다. 스토리지 측은 가상화 장치(VD)로도 지칭될 수 있다.2 is a block diagram illustrating the storage system of FIG. 1 according to some embodiments of the present disclosure. Referring to FIGS. 1 and 2 , the storage system 100 may be divided into a host side and a storage side. The storage side may also be referred to as a virtualization device (VD).

호스트 측은 호스트 장치(110) 및 호스트 장치(110)에 의해 실행되는 가상 머신(VM)을 포함할 수 있다. 호스트 장치는 CSV 드라이버를 포함할 수 있다. CSV 드라이버는 CSV 장치(120)와의 통신에 필요한 정보를 저장하는 소프트웨어일 수 있다. 호스트 장치(110)는 CSV 드라이버를 실행함으로써, CSV 장치(120)와 통신할 수 있다.The host side may include a host device 110 and a virtual machine (VM) executed by the host device 110 . A host device may include a CSV driver. The CSV driver may be software that stores information required for communication with the CSV device 120. The host device 110 can communicate with the CSV device 120 by executing the CSV driver.

스토리지 측은 CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)을 포함할 수 있다.The storage side may include a CSV device 120 , a storage device 130 , an arithmetic device 140 , and an I/O memory management unit 150 .

CSV 장치(120)는 호스트 장치(110)와 직접적으로 통신할 수 있거나, 또는 I/O 메모리 관리 유닛(150)을 통해 통신할 수 있다. CSV 장치(120)는 SR-IOV(single root input/output virtualization) 어댑터(121) 및 장치 오케스트라(122)를 포함할 수 있다.The CSV device 120 may communicate with the host device 110 directly or through the I/O memory management unit 150 . The CSV device 120 may include a single root input/output virtualization (SR-IOV) adapter 121 and a device orchestra 122 .

SR-IOV 어댑터(121)는 가상 머신(VM)과의 인터페이스를 제공할 수 있다. SR-IOV 어댑터(121)는 가상 머신(VM)이 별도의 소프트웨어 계층을 거치지 않고, 스토리지 장치(130) 또는 연산 장치(140)로의 액세스를 가능하게 할 수 있다.The SR-IOV adapter 121 may provide an interface with a virtual machine (VM). The SR-IOV adapter 121 enables a virtual machine (VM) to access the storage device 130 or the computing device 140 without going through a separate software layer.

장치 오케스트라(122)는 SR-IOV 어댑터(121)를 통해 가상 머신(VM)을 식별할 수 있다. 장치 오케스트라(122)는 스토리지 장치(130) 및 연산 장치(140)를 식별할 수 있다. 장치 오케스트라(122)는 가상 머신(VM)에 대한 스토리지 장치(130)의 스토리지 리소스 및 연산 장치(140)의 연산 리소스를 할당할 수 있다. The device orchestra 122 may identify a virtual machine (VM) through the SR-IOV adapter 121 . Device orchestra 122 can identify storage device 130 and computing device 140 . The device orchestra 122 may allocate storage resources of the storage device 130 and computational resources of the computing device 140 to virtual machines (VMs).

장치 오케스트라(122)는 가상 머신(VM)으로부터 제공된 읽기 요청에 기초하여, 스토리지 장치(130)로 제공될 리디렉션 요청 및 연산 장치(140)로 제공될 처리 요청을 생성할 수 있다. 예를 들어, 리디렉션 요청은 가상 머신(VM)으로부터 제공된 읽기 요청의 목적지 어드레스를 스토리지 장치(130) 대신 연산 장치(140)로 변경함으로써 구현될 수 있다. 장치 오케스트라(122)는 가상 머신(VM)으로부터 제공된 쓰기 요청에 기초하여, 연산 장치(140)에 제공될 처리 요청 및 스토리지 장치(130)에 제공될 저장 요청을 생성할 수 있다.The device orchestra 122 may generate a redirection request to be provided to the storage device 130 and a processing request to be provided to the computing device 140 based on the read request provided from the virtual machine (VM). For example, the redirection request may be implemented by changing the destination address of the read request provided from the virtual machine (VM) to the computing device 140 instead of the storage device 130 . The device orchestra 122 may generate a processing request to be provided to the computing device 140 and a storage request to be provided to the storage device 130 based on the write request provided from the virtual machine (VM).

스토리지 장치(130)는 CSV 장치(120) 및 연산 장치(140)와 통신할 수 있다. 스토리지 장치(130)는 CSV 장치(120)로부터의 요청에 따라, PCIe 회로(160)를 통해서, 연산 장치(140)에 데이터를 직접적으로 제공하거나, 또는 연산 장치(140)로부터 처리된 데이터를 직접적으로 수신할 수 있다.The storage device 130 may communicate with the CSV device 120 and the computing device 140 . According to a request from the CSV device 120, the storage device 130 directly provides data to the computing device 140 through the PCIe circuit 160 or directly transmits data processed by the computing device 140. can be received as

연산 장치(140)는 CSV 장치(120) 및 스토리지 장치(130)와 통신할 수 있다. 연산 장치(140)는 CSV 장치(120)로부터의 요청에 따라, PCIe 회로(160)를 통해서, 스토리지 장치(130)에 처리된 데이터를 직접적으로 제공하거나, 또는 스토리지 장치(130)로부터 데이터를 직접적으로 수신할 수 있다.The computing device 140 may communicate with the CSV device 120 and the storage device 130 . According to a request from the CSV device 120, the arithmetic device 140 directly provides processed data to the storage device 130 through the PCIe circuit 160 or directly transmits data from the storage device 130. can be received as

도 3은 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 시스템을 설명하는 블록도이다. 도 1 및 도 3을 참조하면, 스토리지 시스템(100)은 호스트 장치(110), CSV 장치(120), 스토리지 장치(130), 연산 장치(140), I/O 메모리 관리 유닛(150), 및 PCIe 회로(160)를 포함할 수 있다.3 is a block diagram illustrating the storage system of FIG. 1 according to some embodiments of the present disclosure. 1 and 3, the storage system 100 includes a host device 110, a CSV device 120, a storage device 130, an arithmetic device 140, an I/O memory management unit 150, and PCIe circuitry 160 may be included.

스토리지 시스템(100)은 복수의 가상 머신들 중 타겟 가상 머신으로서 가상 머신(VM)을 식별할 수 있다. 스토리지 시스템(100)은 복수의 스토리지 장치들 중 타겟 스토리지 장치로서 스토리지 장치(130)를 식별할 수 있다. 스토리지 시스템(100)은 복수의 연산 장치들 중 타겟 연산 장치로서 연산 장치(140)를 식별할 수 있다. The storage system 100 may identify a virtual machine (VM) as a target virtual machine among a plurality of virtual machines. The storage system 100 may identify the storage device 130 as a target storage device among a plurality of storage devices. The storage system 100 may identify the computational device 140 as a target computational device among a plurality of computational devices.

스토리지 시스템(100)은 복수의 가상 머신들로부터의 요청들을 처리하기 위해, 복수의 스토리지 장치들의 스토리지 리소스들을 유연하게 할당하고 그리고 복수의 연산 장치들의 연산 리소스들을 유연하게 할당할 수 있다. 가상 머신들의 개수, 스토리지 장치들의 개수, 및 연산 장치들의 개수의 각각이 증가 또는 감소하면, 스토리지 시스템(100)은 변경된 가상 환경에 대해 스토리지 리소스 및 연산 리소스를 재할당할 수 있다.The storage system 100 may flexibly allocate storage resources of a plurality of storage devices and compute resources of a plurality of computing devices in order to process requests from a plurality of virtual machines. When the number of virtual machines, the number of storage devices, and the number of computing devices increase or decrease, respectively, the storage system 100 may reallocate storage resources and computational resources for the changed virtual environment.

호스트 장치(110)는 가상 머신(VM)을 실행할 수 있다. 가상 머신(VM)은 VSQ(Virtual Submission Queue) 및 VCQ(Virtual Completion Queue)를 포함할 수 있다. VSQ는 가상 머신(VM)에 의해 요청된 커맨드가 기입될 메모리일 수 있다. VCQ는 대응하는 VSQ에 기입되었던 커맨드의 처리 완료를 가리키는 컴플리션을 수신하는 메모리일 수 있다. VSQ 및 VCQ는 서로 대응 관계를 가질 수 있다. VSQ 및 VCQ의 가상 어드레스들은 호스트 장치(110)의 호스트 메모리의 일부에 대응할 수 있다.The host device 110 may execute a virtual machine (VM). A virtual machine (VM) may include a Virtual Submission Queue (VSQ) and a Virtual Completion Queue (VCQ). VSQ may be a memory in which a command requested by a virtual machine (VM) is written. A VCQ may be a memory that receives a completion indicating completion of processing of a command written to a corresponding VSQ. VSQ and VCQ may have a correspondence relationship with each other. Virtual addresses of VSQ and VCQ may correspond to portions of the host memory of the host device 110 .

호스트 장치(110)는 호스트 메모리를 포함할 수 있다. 스토리지 장치(130)는 버퍼 메모리를 포함할 수 있다. 연산 장치(140)는 버퍼 메모리를 포함할 수 있다. 호스트 장치(110)의 호스트 메모리, 스토리지 장치(130)의 버퍼 메모리, 및 연산 장치(140)의 버퍼 메모리 중 임의의 조합은 PCIe 회로(160)를 통해 직접적으로 데이터를 통신할 수 있다.The host device 110 may include a host memory. The storage device 130 may include a buffer memory. The computing device 140 may include a buffer memory. Any combination of the host memory of the host device 110 , the buffer memory of the storage device 130 , and the buffer memory of the computing device 140 may communicate data directly through the PCIe circuit 160 .

I/O 메모리 관리 유닛(150)은 호스트 장치(110) 및 CSV 장치(120)와 통신할 수 있다. I/O 메모리 관리 유닛(150)은 호스트 장치(110)로부터 제공된 가상 어드레스를 실제 어드레스로 변환하고, 실제 어드레스를 CSV 장치(120)에 제공할 수 있다. I/O 메모리 관리 유닛(150)은 CSV 장치(120)로부터 제공된 실제 어드레스를 가상 어드레스로 변환하고, 가상 어드레스를 호스트 장치(110)에 제공할 수 있다. 일부 실시 예들에서, CSV 장치(120)가 가상 어드레스 및 실제 어드레스의 매핑 관계를 관리하는 어드레스 변환 테이블을 포함하는 경우, I/O 메모리 관리 유닛(150)은 생략될 수 있다.The I/O memory management unit 150 may communicate with the host device 110 and the CSV device 120 . The I/O memory management unit 150 may convert a virtual address provided from the host device 110 into a real address and provide the real address to the CSV device 120 . The I/O memory management unit 150 may convert a real address provided from the CSV device 120 into a virtual address and provide the virtual address to the host device 110 . In some embodiments, when the CSV device 120 includes an address conversion table that manages a mapping relationship between virtual addresses and real addresses, the I/O memory management unit 150 may be omitted.

CSV 장치(120)는 SR-IOV 어댑터(121) 및 장치 오케스트라(122)를 포함할 수 있다.The CSV device 120 may include an SR-IOV adapter 121 and a device orchestra 122 .

SR-IOV 어댑터(121)는 호스트 장치(110) 및 장치 오케스트라(122)와 통신할 수 있다. SR-IOV 어댑터(121)는 복수의 VF(Virtual Function)들을 포함할 수 있다. 복수의 VF들 각각은 복수의 가상 머신(VM)들에 대응할 수 있다. 복수의 VF들 각각은 대응하는 가상 머신(VM)과의 인터페이스를 제공할 수 있다. VF는 대응하는 가상 머신(VM)이 소프트웨어 계층을 거치지 않고, 장치 오케스트라(122)를 통해 스토리지 장치(130) 및 연산 장치(140)로의 액세스를 가능하게 할 수 있다. SR-IOV 어댑터(121) 내에서 복수의 VF들 각각은 독립적인 장치처럼 동작할 수 있다. VF는 대응하는 가상 머신(VM)에게 스토리지 리소스 및 연산 리소스가 할당되는 것을 지원할 수 있다.SR-IOV adapter 121 may communicate with host device 110 and device orchestra 122 . 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 virtual machines (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 130 and the computing device 140 through the device orchestra 122 without going through a software layer. Each of the plurality of VFs within the SR-IOV adapter 121 may operate like an independent device. A VF may support allocation of storage resources and computational resources to corresponding virtual machines (VMs).

장치 오케스트라(122)는 SR-IOV 어댑터(121), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)과 통신할 수 있다. 장치 오케스트라(122)는 스토리지 인터페이스 회로, 연산 장치 인터페이스 회로, 및 리소스 관리자를 포함할 수 있다.Device orchestra 122 may communicate with SR-IOV adapter 121 , storage device 130 , computing device 140 , and I/O memory management unit 150 . Device orchestra 122 may include storage interface circuitry, computing device interface circuitry, and a resource manager.

스토리지 인터페이스 회로는 리소스 관리자 및 스토리지 장치(130) 사이의 인터페이스를 제공할 수 있다. 스토리지 인터페이스 회로는 SQ(Submission Queue) 및 CQ(Completion Queue)를 포함할 수 있다. SQ는 VSQ에 기입되었던 커맨드에 대응하고 스토리지 장치(130)로 제공될 커맨드가 기입될 메모리일 수 있다. CQ는 대응하는 SQ에 기입되었던 커맨드의 처리 완료를 가리키는 컴플리션을 수신하는 메모리일 수 있다. SQ 및 CQ는 서로 대응 관계를 가질 수 있다.The storage interface circuitry may provide an interface between the resource manager and the storage device 130 . The storage interface circuit may include a Submission Queue (SQ) and a Completion Queue (CQ). SQ corresponds to a command written in VSQ and may be a memory in which a command to be provided to the storage device 130 is written. CQ may be a memory that receives a completion indicating completion of processing of a command written to a corresponding SQ. SQ and CQ may have a correspondence relationship with each other.

연산 장치 인터페이스 회로는 리소스 관리자 및 연산 장치(140) 사이의 인터페이스를 제공할 수 있다.The computing device interface circuitry may provide an interface between the resource manager and the computing device 140 .

리소스 관리자는 SR-IOV 어댑터(121)를 통해 가상 머신(VM)으로부터의 요청을 수신할 수 있다. 리소스 관리자는 스토리지 인터페이스를 통해 스토리지 장치(130)와 통신할 수 있다. 리소스 관리자는 연산 장치 인터페이스 회로를 통해 연산 장치(140)와 통신할 수 있다.The resource manager may receive a request from a virtual machine (VM) through the SR-IOV adapter 121 . The resource manager may communicate with the storage device 130 through a storage interface. The resource manager may communicate with the computing device 140 through a computing device interface circuit.

리소스 관리자는 가상 머신(VM)으로부터의 요청의 일부 필드를 변경하여 스토리지 장치(130) 또는 연산 장치(140)에 제공할 수 있다. 변경되는 필드에 대한 보다 상세한 설명은 도 4 및 도 5와 함께 후술될 것이다.The resource manager may change some fields of a request from a virtual machine (VM) and provide them to the storage device 130 or the computing device 140 . A more detailed description of the changed field will be described later along with FIGS. 4 and 5 .

리소스 관리자는 복수의 가상 머신(VM)들, 복수의 스토리지 장치들, 및 복수의 연산 장치들을 관리할 수 있다. 예를 들어, 리소스 관리자는 복수의 스토리지 장치들의 인덱스들을 참조하여, 복수의 스토리지 장치들 중 타겟 스토리지 장치를 식별할 수 있다. 리소스 관리자는 복수의 연산 장치들의 인덱스들을 참조하여, 복수의 연산 장치들 중 타겟 연산 장치를 식별할 수 있다. 리소스 관리자는 식별된 스토리지 장치의 스토리지 리소스 및 식별된 연산 장치의 연산 리소스를 가상 머신(VM)에 할당할 수 있다.A resource manager may manage a plurality of virtual machines (VMs), a plurality of storage devices, and a plurality of computing devices. For example, the resource manager may identify a target storage device among a plurality of storage devices by referring to indices of the plurality of storage devices. The resource manager may identify a target computing device among the plurality of computing devices by referring to indices of the plurality of computing devices. The resource manager may allocate storage resources of the identified storage device and computational resources of the identified computing device to virtual machines (VMs).

리소스 관리자는 가상 머신(VM) 및 스토리지 장치(130) 사이의 매핑을 관리할 수 있다. 예를 들어, 가상 머신(VM)의 VSQ 및 VCQ는 스토리지 인터페이스 회로의 SQ 및 CQ에 각각 대응할 수 있다. VSQ에 기입될 커맨드의 레이어는 SQ에 기입될 커맨드의 레이어와 다를 수 있다. CQ에 기입될 컴플리션의 레이어는 VCQ에 기입될 컴플리션의 레이어와 다를 수 있다. 리소스 관리자는 VSQ에 기입된 커맨드를 페치하고, 페치된 커맨드의 레이어를 변경하고, 레이어가 변경된 커맨드를 SQ에 기입할 수 있다. 리소스 관리자는 CQ에 기입된 컴플리션을 페치하고, 페치된 컴플리션의 레이어를 변경하고, 레이어가 변경된 컴플리션을 VCQ에 기입할 수 있다.A resource manager may manage mapping between a virtual machine (VM) and the storage device 130 . For example, VSQ and VCQ of a virtual machine (VM) may correspond to SQ and CQ of a storage interface circuit, respectively. A layer of commands to be written to VSQ may be different from a layer of commands to be written to SQ. A layer of completion to be written in CQ may be different from a layer of completion to be written in VCQ. The resource manager may fetch a command written to the VSQ, change a layer of the fetched command, and write the layer-changed command to the SQ. The resource manager may fetch the completion written in the CQ, change the layer of the fetched completion, and write the completion whose layer is changed in the VCQ.

일부 실시 예들에서, 리소스 관리자는 NVMe(Non-Volatile Memory express) 표준을 따를 수 있다. 예를 들어, 리소스 관리자는 호스트 장치(110)로부터 VSQ에 커맨드가 기입된 것을 알리는 도어벨을 수신할 수 있다. 리소스 관리자는 VSQ에 기입된 커맨드를 페치할 수 있다. 리소스 관리자는 페치된 커맨드에 기초하여, SQ에 레이어가 변경된 커맨드를 기입할 수 있다. 리소스 관리자는 도어벨을 스토리지 장치(130)에 제공할 수 있다. 스토리지 장치(130)는 SQ의 레이어가 변경된 커맨드를 페치할 수 있다. 스토리지 장치(130)는 연산 장치(140)와 통신하여 커맨드를 처리할 수 있다.In some embodiments, the resource manager may follow the Non-Volatile Memory express (NVMe) standard. For example, the resource manager may receive a doorbell from the host device 110 notifying that a command has been written to the VSQ. The resource manager can fetch commands written to the VSQ. The resource manager may write a layer-changed command in SQ based on the fetched command. The resource manager may provide the doorbell to the storage device 130 . The storage device 130 may fetch a command whose SQ layer is changed. The storage device 130 may communicate with the arithmetic device 140 to process commands.

커맨드를 처리한 후, 스토리지 장치(130)는 CQ에 컴플리션을 기입할 수 있다. 스토리지 장치(130)는 인터럽트를 리소스 관리자에 제공할 수 있다. 리소스 관리자는 CQ에 기입된 컴플리션을 페치하고, 페치된 컴플리션에 기초하여 레이어가 변경된 컴플리션을 VCQ에 기입할 수 있다. 리소스 관리자는 도어벨을 스토리지 장치(130)에 제공할 수 있다. 리소스 관리자는 인터럽트를 호스트 장치(110)에 제공할 수 있다. 호스트 장치(110)는 VCQ에 기입된 컴플리션을 처리할 수 있다. 호스트 장치(110)는 도어벨을 리소스 관리자에게 제공할 수 있다.After processing the command, the storage device 130 may write completion to CQ. The storage device 130 may provide an interrupt to the resource manager. The resource manager may fetch the completion written in the CQ and write the completion whose layer is changed in the VCQ based on the fetched completion. The resource manager may provide the doorbell to the storage device 130 . The resource manager may provide interrupts to the host device 110 . The host device 110 may process the completion written in the VCQ. The host device 110 may provide a doorbell to a resource manager.

일부 실시 예들에서, 리소스 관리자는 어드레스 변환 테이블을 포함할 수 있다. 어드레스 변환 테이블은 가상 어드레스 및 실제 어드레스의 매핑 관계를 관리할 수 있다. 리소스 관리자는 어드레스 변환 테이블을 참조하여, 가상 어드레스를 실제 어드레스로 변환하거나, 또는 실제 어드레스를 가상 어드레스로 변환할 수 있다. 이 경우, I/O 메모리 관리 유닛(150)은 생략될 수 있거나, 또는 어드레스 변환 테이블 및 I/O 메모리 관리 유닛(150)이 함께 사용될 수 있다.In some embodiments, a resource manager may include an address translation table. The address conversion table may manage a mapping relationship between virtual addresses and real addresses. The resource manager may convert a virtual address into a real address or a real address into a virtual address by referring to the address translation table. In this case, the I/O memory management unit 150 may be omitted, or the address conversion table and the I/O memory management unit 150 may be used together.

일부 실시 예들에서, 리소스 관리자는 내부-연산 장치(inner-computational device)를 포함할 수 있다. 내부-연산 장치는 스토리지 장치(130)로부터 수신된 데이터를 처리하거나, 또는 호스트 장치(110)로부터 수신된 데이터를 처리할 수 있다. 내부-연산 장치는 연산 장치(140)와 유사한 기능을 수행할 수 있다. 이 경우, 연산 장치(140)가 생략될 수 있거나, 또는 내부-연산 장치 및 연산 장치(140)가 함께 사용될 수 있다. 내부-연산 장치에 대한 보다 상세한 설명은 도 11 및 도 12와 함께 후술될 것이다.In some embodiments, the resource manager may include an inner-computational device. The inter-computing device may process data received from the storage device 130 or process data received from the host device 110 . The inter-computing unit may perform functions similar to arithmetic unit 140 . In this case, the arithmetic unit 140 may be omitted, or the inter- arithmetic unit and the arithmetic unit 140 may be used together. A more detailed description of the inter-computing device will be given later in conjunction with FIGS. 11 and 12 .

도 4는 본 개시의 일부 실시 예들에 따른 커맨드 포맷을 설명하는 도면이다. 도 1 및 도 4를 참조하면, 호스트 장치(110)로부터 수신된 커맨드의 커맨드 포맷이 설명된다.4 is a diagram illustrating a command format according to some embodiments of the present disclosure. Referring to FIGS. 1 and 4 , a command format of a command received from the host device 110 will be described.

일부 실시 예들에서, 커맨드 포맷은 NVMe 표준을 따를 수 있다. 예를 들어, 커맨드 포맷은 'Op', '플래그들(Flags)', 'CID', '네임스페이스 식별자', '리저브드 필드', '메타데이터', 'PRP1', 'PRP2', 'SLBA', '길이(length)', '제어(Control)', 'Dsmgmt', 'Appmask', 및 'Apptag'를 포함할 수 있다.In some embodiments, the command format may follow the NVMe standard. For example, the command format is 'Op', 'Flags', 'CID', 'Namespace Identifier', 'Reserved Field', 'Metadata', 'PRP1', 'PRP2', 'SLBA' ', 'length', 'Control', 'Dsmgmt', 'Appmask', and 'Apptag'.

'Op'는 오피코드(opcode) 또는 동작 코드(operation code)를 가리킬 수 있다. 예를 들어, 'Op'는 커맨드에 의해 처리될 동작이 읽기 동작인지 또는 쓰기 동작인지 등을 가리킬 수 있다.'Op' may indicate an opcode or an operation code. For example, 'Op' may indicate whether an operation to be processed by a command is a read operation or a write operation.

'플래그들'은 영구 메모리 영역(persistent memory region)에 대한 플레그 값들을 관리할 수 있다.'Flags' can manage flag values for a persistent memory region.

'CID'는 커맨드 식별자(command identifier)를 가리킬 수 있다. 커맨드 식별자는 커맨드를 다른 커맨드와 구별하는데 사용될 수 있다.'CID' may indicate a command identifier. A command identifier can be used to distinguish a command from other commands.

'네임스페이스 식별자'는 네임스페이스를 다른 네임스페이스와 구별하는데 사용될 수 있다. 네임스페이스는 파일 시스템의 파일에 네임을 할당하는 공간일 수 있다.A 'namespace identifier' can be used to distinguish a namespace from other namespaces. A namespace may be a space for allocating names to files in a file system.

'리저브드 필드'는 설계에 따라 변경될 수 있는 영역들을 가리킬 수 있다.A 'reserved field' may refer to areas that may be changed according to design.

'메타데이터'는 커맨드에 따라 처리될 데이터를 설명하거나 또는 이와 연관된 정보를 가리킬 수 있다.'Metadata' may describe data to be processed according to a command or indicate information related thereto.

'PRP1'는 제1 물리적 영역 페이지(first physical region page)를 가리킬 수 있다. 'PRP2'는 제2 물리적 영역 페이지를 가리킬 수 있다. 제1 및 제2 물리적 영역 페이지들은 DMA 통신에 사용되는 메모리의 주소를 가리킬 수 있다.'PRP1' may indicate a first physical region page. 'PRP2' may indicate a second physical area page. The first and second physical area pages may indicate memory addresses used for DMA communication.

'SLBA'는 시작 논리적 블록 어드레스(start logical block address)를 가리킬 수 있다. 여러 가상 머신들이 하나의 스토리지 장치를 공유하는 경우, 여러 가상 머신들에 의해 사용되는 어드레스들이 겹치지 않도록, 'SLBA'를 통해서 여러 가상 머신들 각각에 서로 다른 오프셋 값을 제공할 수 있다. 여러 가상 머신들 각각은 오프셋 값이 더해진 어드레스를 참조할 수 있다.'SLBA' may indicate a start logical block address. When multiple virtual machines share one storage device, different offset values may be provided to each of the multiple virtual machines through 'SLBA' so that addresses used by the multiple virtual machines do not overlap. Each of several virtual machines may refer to an address to which an offset value is added.

'길이'는 데이터 블록의 바이트들의 길이를 가리킬 수 있다. '제어'는 데이터 전송을 제어하는데 사용될 수 있다. Dsmgmt', 'Appmask', 및 'Apptag'는 가상 머신(VM) 또는 호스트 장치(110)의 운영 체제나 파일 시스템에 의해 관리되는 필드들일 수 있다.'Length' may indicate the length of bytes of a data block. 'Control' can be used to control data transmission. Dsmgmt', 'Appmask', and 'Apptag' may be fields managed by an operating system or file system of a virtual machine (VM) or host device 110 .

본 개시의 일부 실시 예들에 따르면, CSV 장치(120)는 커맨드의 리저브드 필드를 변경함으로써, 스토리지 장치(130) 또는 연산 장치(140)에 의해 처리 가능한 요청을 생성할 수 있다. 리저브드 필드는 본 개시의 실시 예에 따라 제안된 CSV 커맨드를 포함할 수 있다. 리저브드 필드에 대한 보다 상세한 설명은 도 5와 함께 후술될 것이다.According to some embodiments of the present disclosure, the CSV device 120 may generate a request that can be processed by the storage device 130 or the computing device 140 by changing a reserved field of a command. The reserved field may include a CSV command suggested according to an embodiment of the present disclosure. A more detailed description of the reserved field will be described later along with FIG. 5 .

도 5는 본 개시의 일부 실시 예들에 따라 도 4의 리저브드 필드를 설명하는 도면이다. 도 1, 도 4, 및 도 5를 참조하면, 호스트 장치(110)로부터 수신된 커맨드의 리저브드 필드는 CSV 커맨드가 저장된 위치(예를 들어, 호스트 장치(110) 내의 CSV 커맨드에 대응하는 필드들이 저장된 위치)를 가리킬 수 있다.5 is a diagram illustrating the reserved field of FIG. 4 according to some embodiments of the present disclosure. 1, 4, and 5, the reserved field of the command received from the host device 110 is the location where the CSV command is stored (eg, fields corresponding to the CSV command in the host device 110). stored location).

CSV 커맨드는 연산자 체인 식별자, 소스 어드레스, 목적지 어드레스, 소스 사이즈, 목적지 사이즈, 요청 식별자, 물리적 장치 식별자, 타입, 직접 파라미터, 파일 파라미터, 직접 파라미터 포인터, 및 파일 파라미터 포인터 중 적어도 하나를 포함할 수 있다.The CSV command may include at least one of an operator chain identifier, a source address, a destination address, a source size, a destination size, a request identifier, a physical device identifier, a type, a direct parameter, a file parameter, a direct parameter pointer, and a file parameter pointer. .

연산자 체인 식별자는 연산 장치(140)에 의해 처리될 동작의 종류를 가리킬 수 있다. 예를 들어, 연산자 체인 식별자는 연산 장치(140)에 의해 처리될 동작으로서, 암호화 동작, 압축 동작, 또는 암호화 및 압축 동작을 가리킬 수 있다. 또는, 연산자 체인 식별자는 연산 장치(140)에 의해 처리될 동작으로서, 복호화 동작, 압축 해제 동작, 또는 복호화 및 압축 해제 동작을 가리킬 수 있다.The operator chain identifier may indicate the type of operation to be processed by the computing device 140 . For example, the operator chain identifier may indicate an encryption operation, a compression operation, or an encryption and compression operation as an operation to be processed by the operation unit 140 . Alternatively, the operator chain identifier may indicate a decryption operation, a decompression operation, or a decryption and decompression operation as an operation to be processed by the operation unit 140 .

소스 어드레스는 처리된 데이터를 요청하는 소스의 위치를 가리킬 수 있다. 목적지 어드레스는 처리된 데이터를 수신하는 목적지의 위치를 가리킬 수 있다.The source address may indicate the location of a source requesting processed data. The destination address may indicate the location of a destination to receive the processed data.

예를 들어, 가상 머신(VM)으로부터 읽기 요청이 발행된 경우, 소스 어드레스는 스토리지 장치(130)의 원시 데이터를 연산 장치(140)로 리디렉션한 후, 연산 장치(140) 내의 버퍼 메모리를 가리킬 수 있다. 목적지 어드레스는 연산 장치(140)에 의해 처리된 데이터를 가상 머신(VM)에 제공하기 위해, 가상 머신(VM)을 실행하는 호스트 장치(110)의 호스트 메모리를 가리킬 수 있다.For example, when a read request is issued from a virtual machine (VM), the source address may point to a buffer memory in the computing device 140 after redirecting raw data of the storage device 130 to the computing device 140. there is. The destination address may indicate a host memory of the host device 110 executing the virtual machine (VM) in order to provide data processed by the computing device 140 to the virtual machine (VM).

또 다른 예로서, 가상 머신(VM)으로부터 쓰기 요청이 발행된 경우, 소스 어드레스는 연산 장치(140)가 처리된 데이터를 생성하기 전에 연산 장치(140)가 호스트 장치(110)로부터 원시 데이터를 수신하기 위해, 가상 머신(VM)을 실행하는 호스트 장치(110)의 호스트 메모리를 가리킬 수 있다. 목적지 어드레스는 스토리지 장치(130)에 데이터를 저장하기 전에 연산 장치(140)에 의해 원시 데이터를 처리하기 위해, 연산 장치(140)의 버퍼 메모리를 가리킬 수 있다.As another example, when a write request is issued from a virtual machine (VM), the source address is such that the processing unit 140 receives the raw data from the host device 110 before the processing unit 140 generates the processed data. To do this, it may refer to the host memory of the host device 110 executing the virtual machine (VM). The destination address may point to a buffer memory of the arithmetic device 140 to process the raw data by the arithmetic device 140 before storing the data in the storage device 130 .

일부 실시 예들에서, 스토리지 장치(130)의 버퍼 메모리의 위치는 도 4의 커맨드의 SLBA에 의해 관리될 수 있다. 예를 들어, 가상 머신(VM)으로부터 읽기 요청 또는 쓰기 요청이 발행되는 경우, 도 4의 호스트 장치(110)의 커맨드의 SLBA는 스토리지 장치(130)의 버퍼 메모리를 가리킬 수 있다.In some embodiments, the location of the buffer memory of the storage device 130 may be managed by the SLBA of the command of FIG. 4 . For example, when a read request or a write request is issued from a virtual machine (VM), the SLBA of the command of the host device 110 of FIG. 4 may indicate the buffer memory of the storage device 130 .

소스 사이즈는 소스 어드레스에 따라 전송될 데이터의 크기를 가리킬 수 있다.The source size may indicate the size of data to be transmitted according to the source address.

목적지 사이즈는 목적지 어드레스에 따라 전송될 데이터의 크기를 가리킬 수 있다.The destination size may indicate the size of data to be transmitted according to the destination address.

요청 식별자는 요청에 의해 지시되는 동작을 가리킬 수 있다. 예를 들어, 요청 식별자는 요청에 의해 지시되는 동작으로서, 읽기 동작, 쓰기 동작, 처리 동작, 리디렉션 동작, 저장 동작 등과 같은 동작들 중 하나를 가리킬 수 있다. 요청 식별자는 서로 다른 요청들 사이의 의존성(dependency)을 관리할 수 있다. 예를 들어, 스토리지 시스템(100)은 현재 요청의 요청 식별자 및 이전 요청의 요청 식별자가 동일하면, 이전 요청의 처리가 완료되기 전까지 현재 요청의 실행을 보류할 수 있다.A request identifier may indicate an action indicated by the request. For example, the request identifier is an operation indicated by the request and may indicate one of operations such as a read operation, a write operation, a processing operation, a redirection operation, and a storage operation. A request identifier can manage dependencies between different requests. For example, if the request ID of the current request and the request ID of the previous request are the same, the storage system 100 may suspend execution of the current request until processing of the previous request is completed.

물리적 장치 식별자는 스토리지 장치(130)의 인덱스 및 연산 장치(140)의 인덱스를 가리킬 수 있다. 예를 들어, 스토리지 시스템(100)은 복수의 스토리지 장치들 및 복수의 연산 장치들을 포함할 수 있다. 스토리지 시스템(100)은 물리적 장치 식별자에 기재된 인덱스들을 참조하여, 복수의 스토리지 장치들 중 타겟 스토리지 장치로서 스토리지 장치(130)를 식별할 수 있고, 그리고 복수의 연산 장치들 중 타겟 연산 장치로서 연산 장치(140)를 식별할 수 있다.The physical device identifier may indicate an index of the storage device 130 and an index of the computing device 140 . For example, the storage system 100 may include a plurality of storage devices and a plurality of computing devices. The storage system 100 may identify the storage device 130 as a target storage device among a plurality of storage devices by referring to the indices written in the physical device identifiers, and the processing device as a target processing device among the plurality of processing devices. (140) can be identified.

타입은 스토리지 장치(130)로의 액세스가 필요한지 여부를 가리킬 수 있다.The type may indicate whether access to the storage device 130 is required.

직접 파라미터는 연산 장치의 처리 동작에 사용되는 정보가 저장된 호스트 장치(110)의 호스트 메모리 내의 위치를 가리킬 수 있다. 예를 들어, 직접 파라미터는 압축, 압축 해제, 암호화, 복호화 등의 처리 동작에 사용되는 함수, 알고리즘, 해시 함수, 키-값 등과 같은 파라미터가 저장된 호스트 메모리의 위치를 가리킬 수 있다.The direct parameter may indicate a location in the host memory of the host device 110 where information used for a processing operation of the computing device is stored. For example, the direct parameter may indicate a location in the host memory where parameters such as functions, algorithms, hash functions, key-values, etc. used in processing operations such as compression, decompression, encryption, and decryption are stored.

파일 파라미터는 연산 장치의 처리 동작에 사용되는 복사된 정보가 저장된 스토리지 장치(130) 내의 위치를 가리킬 수 있다. 예를 들어, 파일 파라미터는 압축, 압축 해제, 암호화, 복호화 등의 처리 동작에 사용되는 함수, 알고리즘, 해시 함수, 키-값 등과 같은 파라미터가 복사된 스토리지 장치(130) 내의 위치를 가리킬 수 있다.The file parameter may indicate a location in the storage device 130 where copied information used for a processing operation of the computing device is stored. For example, the file parameter may indicate a location in the storage device 130 where parameters such as functions, algorithms, hash functions, key-values, etc. used for processing operations such as compression, decompression, encryption, and decryption are copied.

직접 파라미터 포인터는 직접 파라미터의 전송에 사용되는 포인터를 저장하는 필드일 수 있다.The direct parameter pointer may be a field for storing a pointer used for direct parameter transmission.

파일 파라미터 포인터는 파일 파라미터의 전송에 사용되는 포인터를 저장하는 필드일 수 있다.The file parameter pointer may be a field for storing a pointer used to transmit file parameters.

도 6은 본 개시의 일부 실시 예들에 따른 가상화 장치의 동작하는 방법을 설명하는 순서도이다. 도 2 및 도 6을 참조하면, 가상화 장치(VD)의 동작하는 방법이 설명된다.6 is a flowchart illustrating a method of operating a virtualization device according to some embodiments of the present disclosure. Referring to FIGS. 2 and 6 , a method of operating the virtualization device (VD) will be described.

S110 단계에서, 가상화 장치(VD)는 가상 머신(VM)을 실행하는 호스트 장치(110)로부터 요청을 수신할 수 있다.In step S110, the virtualization device (VD) may receive a request from the host device 110 executing the virtual machine (VM).

S120 단계에서, 가상화 장치(VD)는 S110 단계의 요청이 연산 스토리지 동작을 가리키는지 여부를 결정할 수 있다. 예를 들어, 가상화 장치(VD)는 요청의 리저브드 필드가 존재하면 연산 스토리지 동작을 가리키는 것으로 결정하고, 요청의 리저브드 필드가 널(Null)이면 연산 스토리지 동작을 가리키지 않는 것으로 결정할 수 있다. 요청이 연산 스토리지 동작을 가리키는 것으로 결정하면, 가상화 장치(VD)는 S130 단계를 수행할 수 있다. 요청이 연산 스토리지 동작을 가리키지 않는 것으로 결정하면, 가상화 장치(VD)는 S170 단계를 수행할 수 있다.In step S120, the virtualization device (VD) may determine whether the request in step S110 indicates a computational storage operation. For example, the virtualization device (VD) may determine that the reserved field of the request indicates a computational storage operation if it exists, and may determine that it does not indicate a computational storage operation if the reserved field of the request is null. Upon determining that the request points to a computational storage operation, the virtualization device (VD) may perform step S130. Upon determining that the request does not indicate a computational storage operation, the virtualization device (VD) may perform step S170.

S130 단계에서, 가상화 장치(VD)는 가상 머신(VM)에 대응하는 실제 머신의 어드레스 및 연산 장치(140)의 어드레스를 획득할 수 있다. 가상 머신(VM)에 대응하는 실제 머신은 호스트 장치(110)를 가리킬 수 있다.In step S130 , the virtualization device VD may acquire the address of the real machine corresponding to the virtual machine VM and the address of the computing device 140 . A real machine corresponding to a virtual machine (VM) may refer to the host device 110 .

일부 실시 예들에서, S130 단계에서, 가상화 장치(VD)는 요청의 리저브드 필드의 직접 파라미터 또는 파일 파라미터가 존재하는지 여부를 체크하고, 직접 파라미터 또는 파일 파라미터가 존재하면, 직접 파라미터 또는 파일 파라미터를 읽을 수 있다.In some embodiments, in step S130, the virtualization device (VD) checks whether a direct parameter or file parameter of the reserved field of the request exists, and if the direct parameter or file parameter exists, the direct parameter or file parameter is read. can

S140 단계에서, 가상화 장치(VD)는 S110 단계의 요청이 읽기 동작을 가리키는지 여부를 결정할 수 있다. 요청이 읽기 동작을 가리키는 것으로 결정하면, 가상화 장치(VD)는 S150 단계를 수행할 수 있다. 요청이 읽기 동작을 가리키지 않는 것으로 결정하면, 가상화 장치(VD)는 S160 단계를 수행할 수 있다.In step S140, the virtualization device (VD) may determine whether the request in step S110 indicates a read operation. When determining that the request indicates a read operation, the virtualization device VD may perform step S150. If it is determined that the request does not indicate a read operation, the virtualization device (VD) may perform step S160.

S150 단계에서, 가상화 장치(VD)의 CSV 장치(120)는 읽기 데이터의 리디렉션 요청을 스토리지 장치(130)에게 제공할 수 있다. 이 때, 리디렉션 요청은 스토리지 장치(130)에 저장된 원시 데이터를 연산 장치(140)로 제공하는 것을 가리킬 수 있다.In step S150 , the CSV device 120 of the virtualization device (VD) may provide a read data redirection request to the storage device 130 . In this case, the redirection request may refer to providing raw data stored in the storage device 130 to the computing device 140 .

S151 단계에서, 가상화 장치(VD)의 CSV 장치(120)는 읽기 데이터의 처리 요청을 연산 장치(140)에게 제공할 수 있다. 이 때, 읽기 데이터의 처리 요청은 연산 장치(140)가 스토리지 장치(130)로부터 수신된 읽기 데이터를 처리하는 것 그리고 연산 장치(140)가 처리된 읽기 데이터를 호스트 장치(110)에게 제공하는 것을 가리킬 수 있다.In step S151 , the CSV device 120 of the virtualization device VD may provide the processing device 140 with a request to process read data. At this time, the read data processing request means that the processing device 140 processes the read data received from the storage device 130 and the processing device 140 provides the processed read data to the host device 110. can point

다시 S140 단계로 돌아가면, S140 단계에서 요청이 읽기 동작을 가리키지 않는 것으로 결정하면, 가상화 장치는 S160 단계를 수행할 수 있다.Returning to step S140 again, if it is determined in step S140 that the request does not indicate a read operation, the virtualization device may perform step S160.

S160 단계에서, 가상화 장치(VD)의 CSV 장치(120)는 쓰기 데이터의 처리 요청을 연산 장치(140)에게 제공할 수 있다. 이 때, 쓰기 데이터의 처리 요청은 연산 장치(140)가 호스트 장치(110)로부터 쓰기 데이터를 수신하는 것 그리고 연산 장치(140)가 쓰기 데이터를 처리하는 것을 가리킬 수 있다.In step S160 , the CSV device 120 of the virtualization device VD may provide the processing device 140 with a request to process write data. At this time, the write data processing request may indicate that the processing device 140 receives the write data from the host device 110 and that the processing device 140 processes the write data.

S161 단계에서, 가상화 장치(VD)의 CSV 장치(120)는 처리된 쓰기 데이터의 저장 요청을 스토리지 장치(130)에게 제공할 수 있다. 이 때, 저장 요청은 스토리지 장치(130)가 연산 장치(140)로부터 처리된 쓰기 데이터를 수신하는 것 그리고 스토리지 장치(130)가 처리된 쓰기 데이터를 저장하는 것을 가리킬 수 있다.In step S161 , the CSV device 120 of the virtualization device VD may provide the storage device 130 with a request to store the processed write data. In this case, the storage request may indicate that the storage device 130 receives processed write data from the computing device 140 and that the storage device 130 stores the processed write data.

다시 S120 단계로 돌아가면, S120 단계에서 요청이 연산 스토리지 동작을 가리키지 않는 것으로 결정하면, 가상화 장치(VD)는 S170 단계를 수행할 수 있다.Returning to step S120 again, if it is determined in step S120 that the request does not indicate a computational storage operation, the virtualization device (VD) may perform step S170.

S170 단계에서, 가상화 장치(VD)는 노멀 스토리지 동작을 수행할 수 있다. 노멀 스토리지 동작은 연산 장치(140) 또는 CSV 장치(120) 내의 내부-연산 장치에 의한 압축, 압축 해제, 암호화, 복호화 등의 처리 동작이 수반되지 않는, 일반적인 읽기 동작 또는 일반적인 쓰기 동작을 가리킬 수 있다.In step S170, the virtualization device (VD) may perform a normal storage operation. A normal storage operation may refer to a general read operation or a general write operation without processing operations such as compression, decompression, encryption, and decryption by an internal-computing unit in the calculation device 140 or the CSV device 120. .

도 7은 본 개시의 일부 실시 예들에 따라 스토리지 시스템의 읽기 동작을 설명하는 도면이다. 도 1 및 도 7을 참조하면, 스토리지 시스템(100)은 가상 머신(VM)을 실행하는 호스트 장치(110), CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 PCIe 회로(160)를 포함할 수 있다. 7 is a diagram illustrating a read operation of a storage system according to some embodiments of the present disclosure. 1 and 7 , the storage system 100 includes a host device 110 running a virtual machine (VM), a CSV device 120, a storage device 130, an arithmetic device 140, and a PCIe circuit. (160).

본 개시의 일부 실시 예들에 따르면, 스토리지 시스템(100)은 가상 머신(VM)으로부터의 요청에 따른 읽기 동작을 수행할 수 있다. 읽기 동작은 제1 내지 제7 동작들(①~⑦)을 포함할 수 있다.According to some embodiments of the present disclosure, the storage system 100 may perform a read operation according to a request from a virtual machine (VM). The read operation may include the first to seventh operations (① to ⑦).

제1 동작(①)에서, 가상 머신(VM)을 실행하는 호스트 장치(110)는 제1 어드레스(ADD1), 제2 어드레스(ADD2), 및 읽기 동작을 가리키는 제1 요청(RQ1)을 CSV 장치(120)에게 제공할 수 있다. 읽기 동작은 스토리지 장치(130)에 저장된 원시 데이터(RDT)를 읽는 것을 가리킬 수 있다. 제1 어드레스(ADD1)는 가상 머신(VM)의 가상 어드레스를 가리킬 수 있다. 제2 어드레스(ADD2)는 스토리지 장치(130) 내에 원시 데이터(RDT)가 저장된 위치를 가리킬 수 있다.In a first operation (①), the host device 110 executing the virtual machine (VM) sends a first address ADD1, a second address ADD2, and a first request RQ1 indicating a read operation to the CSV device. (120) can be provided. The read operation may refer to reading raw data RDT stored in the storage device 130 . The first address ADD1 may indicate a virtual address of the virtual machine VM. The second address ADD2 may indicate a location where raw data RDT is stored in the storage device 130 .

제2 동작(②)에서, CSV 장치(120)는 제1 요청(RQ1)에 기초하여 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)를 획득할 수 있다. 제3 어드레스(ADD3)는 가상 머신(VM)에 대응하는 실제 머신의 위치(즉, 호스트 장치(110)의 호스트 메모리 내의 위치)를 가리킬 수 있다. 제4 어드레스(ADD4)는 스토리지 장치(130)의 원시 데이터(RDT)를 처리할 연산 장치(140)의 버퍼 메모리 내의 위치를 가리킬 수 있다.In the second operation (②), the CSV device 120 may obtain the third address ADD3 and the fourth address ADD4 based on the first request RQ1. The third address ADD3 may indicate a location of a real machine corresponding to the virtual machine VM (ie, a location in the host memory of the host device 110). The fourth address ADD4 may indicate a location in the buffer memory of the processing device 140 to process the raw data RDT of the storage device 130 .

제3 동작(③)에서, CSV 장치(120)는 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 리디렉션을 가리키는 제2 요청(RQ2)을 스토리지 장치(130)에게 제공할 수 있다. 리디렉션은 스토리지 장치(130)에 저장된 데이터를 PCIe 회로(160)를 통해 연산 장치(140)에 제공하는 것을 가리킬 수 있다.In the third operation (③), the CSV device 120 may provide the second address ADD2, the fourth address ADD4, and the second request RQ2 indicating redirection to the storage device 130. Redirection may refer to providing data stored in the storage device 130 to the computing device 140 through the PCIe circuit 160 .

제4 동작(④)에서, 스토리지 장치(130)는 제2 요청(RQ2)에 기초하여, 원시 데이터(RDT)를 연산 장치(140)에 제공할 수 있다. 예를 들어, 스토리지 장치(130)는 제2 요청(RQ2)의 제2 어드레스(ADD2) 및 제4 어드레스(ADD4)에 기초하여, PCIe 회로(160)를 통해서 연산 장치(140)에 대한 DMA 통신을 수행할 수 있다. 스토리지 장치(130)는 원시 데이터(RDT)를 연산 장치(140)에 제공한 후, 컴플리션을 CSV 장치(120)에게 제공함으로써, CSV 장치(120)에게 제2 요청(RQ2)이 처리된 것을 알릴 수 있다.In a fourth operation ④, the storage device 130 may provide the raw data RDT to the calculation device 140 based on the second request RQ2. For example, the storage device 130 performs DMA communication with the computing device 140 through the PCIe circuit 160 based on the second address ADD2 and the fourth address ADD4 of the second request RQ2. can be performed. The storage device 130 provides the raw data RDT to the calculation device 140 and then provides completion to the CSV device 120, so that the CSV device 120 processes the second request RQ2. can inform

제5 동작(⑤)에서, CSV 장치(120)는 제3 어드레스(ADD3), 제4 어드레스(ADD4), 및 처리 동작을 가리키는 제3 요청(RQ3)을 연산 장치(140)에게 제공할 수 있다. 처리 동작은 연산 장치(140)가 원시 데이터(RDT)를 처리(예를 들어, 압축 해제, 복호화 등)하는 것을 가리킬 수 있다.In the fifth operation (⑤), the CSV device 120 may provide the third address ADD3, the fourth address ADD4, and the third request RQ3 indicating the processing operation to the calculating device 140. . The processing operation may refer to processing (eg, decompression, decoding, etc.) of the raw data RDT by the arithmetic device 140 .

제6 동작(⑥)에서, 연산 장치(140)는 제3 요청(RQ3)에 기초하여 원시 데이터(RDT)를 처리함으로써, 처리된 데이터(PDT)를 생성할 수 있다. 처리된 데이터(PDT)는 압축 해제된 데이터 또는 복호화된 데이터일 수 있다.In the sixth operation (⑥), the processing device 140 may generate the processed data PDT by processing the raw data RDT based on the third request RQ3. The processed data PDT may be decompressed data or decrypted data.

제7 동작(⑦)에서, 연산 장치(140)는 제3 요청(RQ3)에 기초하여, 처리된 데이터(PDT)를 호스트 장치(110)에 제공할 수 있다. 예를 들어, 연산 장치(140)는 제3 요청(RQ3)의 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)에 기초하여, PCIe 회로(160)를 통해서 호스트 장치(110)에 대한 DMA 통신을 수행할 수 있다. 연산 장치(140)는 처리된 데이터(PDT)를 호스트 장치(110)에 제공한 후, 완료 알림(done notification)을 CSV 장치(120)에 제공할 수 있다. CSV 장치(120)는 완료 알림에 응답하여, 가상 머신(VM)을 위한 컴플리션을 발행할 수 있다.In a seventh operation (⑦), the processing device 140 may provide the processed data PDT to the host device 110 based on the third request RQ3. For example, the arithmetic device 140 performs DMA communication with the host device 110 through the PCIe circuit 160 based on the third address ADD3 and the fourth address ADD4 of the third request RQ3. can be performed. After providing the processed data (PDT) to the host device 110, the computing device 140 may provide a done notification to the CSV device 120. The CSV device 120 may issue a completion for the virtual machine (VM) in response to the completion notification.

도 8은 본 개시의 일부 실시 예들에 따라 스토리지 시스템의 쓰기 동작을 설명하는 도면이다. 도 1 및 도 8을 참조하면, 스토리지 시스템(100)은 가상 머신(VM)을 실행하는 호스트 장치(110), CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 PCIe 회로(160)를 포함할 수 있다. 8 is a diagram illustrating a write operation of a storage system according to some embodiments of the present disclosure. 1 and 8 , the storage system 100 includes a host device 110 running a virtual machine (VM), a CSV device 120, a storage device 130, an arithmetic device 140, and a PCIe circuit. (160).

본 개시의 일부 실시 예들에 따르면, 스토리지 시스템(100)은 가상 머신(VM)으로부터의 요청에 따른 쓰기 동작을 수행할 수 있다. 쓰기 동작은 제1 내지 제8 동작들(①~⑧)을 포함할 수 있다.According to some embodiments of the present disclosure, the storage system 100 may perform a write operation according to a request from a virtual machine (VM). The write operation may include the first to eighth operations ① to ⑧.

제1 동작(①)에서, 가상 머신(VM)을 실행하는 호스트 장치(110)는 제1 어드레스(ADD1), 제2 어드레스(ADD2), 및 쓰기 동작을 가리키는 제1 요청(RQ1)을 CSV 장치(120)에게 제공할 수 있다. 쓰기 동작은 가상 머신(VM)의 가상 어드레스에 대응하는 원시 데이터(RDT)를 스토리지 장치(130)에 쓰는 것을 가리킬 수 있다. 제1 어드레스(ADD1)는 가상 머신(VM)의 가상 어드레스를 가리킬 수 있다. 제2 어드레스(ADD2)는 스토리지 장치(130) 내에 원시 데이터(RDT)에 대응하는 처리된 데이터(PDT)가 저장될 위치를 가리킬 수 있다.In a first operation (①), the host device 110 executing the virtual machine (VM) sends a first address ADD1, a second address ADD2, and a first request RQ1 indicating a write operation to the CSV device. (120) can be provided. The write operation may refer to writing raw data RDT corresponding to a virtual address of the virtual machine VM to the storage device 130 . The first address ADD1 may indicate a virtual address of the virtual machine VM. The second address ADD2 may indicate a location in the storage device 130 where the processed data PDT corresponding to the raw data RDT is stored.

제2 동작(②)에서, CSV 장치(120)는 제1 요청(RQ1)에 기초하여 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)를 획득할 수 있다. 제3 어드레스(ADD3)는 가상 머신(VM)에 대응하는 실제 머신의 위치(즉, 호스트 장치(110)의 호스트 메모리 내의 위치)를 가리킬 수 있다. 제4 어드레스(ADD4)는 가상 머신(VM)의 원시 데이터(RDT)를 처리할 연산 장치(140)의 버퍼 메모리 내의 위치를 가리킬 수 있다.In the second operation (②), the CSV device 120 may obtain the third address ADD3 and the fourth address ADD4 based on the first request RQ1. The third address ADD3 may indicate a location of a real machine corresponding to the virtual machine VM (ie, a location in the host memory of the host device 110). The fourth address ADD4 may indicate a location in the buffer memory of the computing device 140 to process the raw data RDT of the virtual machine VM.

제3 동작(③)에서, CSV 장치(120)는 제3 어드레스(ADD3), 제4 어드레스(ADD4), 및 처리 동작을 가리키는 제2 요청(RQ2)을 연산 장치(140)에게 제공할 수 있다. 처리 동작은 연산 장치(140)가 호스트 장치(110)로부터 원시 데이터(RDT)를 수신하는 것 그리고 연산 장치(140)가 원시 데이터(RDT)를 처리(예를 들어, 압축, 암호화 등)하는 것을 가리킬 수 있다.In the third operation ③, the CSV device 120 may provide the third address ADD3, the fourth address ADD4, and the second request RQ2 indicating the processing operation to the calculation device 140. . The processing operation involves the processing device 140 receiving raw data RDT from the host device 110 and the processing device 140 processing (eg, compressing, encrypting, etc.) the raw data RDT. can point

제4 동작(④)에서, 연산 장치(140)는 제2 요청(RQ2)에 기초하여, 호스트 장치(110)로부터 원시 데이터(RDT)를 수신할 수 있다. 예를 들어, 연산 장치(140)는 제2 요청(RQ2)의 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)에 기초하여, PCIe 회로(160)를 통해서 호스트 장치(110)에 대한 DMA 통신을 수행할 수 있다.In the fourth operation ④, the processing device 140 may receive the raw data RDT from the host device 110 based on the second request RQ2. For example, the arithmetic device 140 performs DMA communication with the host device 110 through the PCIe circuit 160 based on the third address ADD3 and the fourth address ADD4 of the second request RQ2. can be performed.

제5 동작(⑤)에서, 연산 장치(140)는 제2 요청(RQ2)에 기초하여 원시 데이터(RDT)를 처리함으로써, 처리된 데이터(PDT)를 생성할 수 있다. 처리된 데이터(PDT)는 압축된 데이터 또는 암호화된 데이터일 수 있다. 연산 장치(140)는 처리된 데이터(PDT)를 생성한 후, 완료 알림을 CSV 장치(120)에게 제공할 수 있다.In a fifth operation (⑤), the processing device 140 may generate the processed data PDT by processing the raw data RDT based on the second request RQ2. The processed data PDT may be compressed data or encrypted data. After generating the processed data PDT, the computing device 140 may provide a completion notification to the CSV device 120 .

제6 동작(⑥)에서, CSV 장치(120)는 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 저장 동작을 가리키는 제3 요청(RQ3)을 스토리지 장치(130)에게 제공할 수 있다. 저장 동작은 스토리지 장치(130)가 연산 장치(140)로부터 처리된 데이터(PDT)를 수신하는 것 그리고 스토리지 장치(130)가 처리된 데이터(PDT)를 저장하는 것을 가리킬 수 있다.In a sixth operation (⑥), the CSV device 120 may provide the second address ADD2, the fourth address ADD4, and the third request RQ3 indicating a storage operation to the storage device 130. . The storage operation may indicate that the storage device 130 receives the processed data PDT from the computing device 140 and that the storage device 130 stores the processed data PDT.

제7 동작(⑦)에서, 스토리지 장치(130)는 제3 요청(RQ3)에 기초하여, 연산 장치(140)로부터 처리된 데이터(PDT)를 수신할 수 있다. 예를 들어, 스토리지 장치(130)는 제3 요청(RQ3)의 제2 어드레스(ADD2) 및 제4 어드레스(ADD4)에 기초하여, PCIe 회로(160)를 통해서 연산 장치(140)에 대한 DMA 통신을 수행할 수 있다.In a seventh operation ( ⑦ ), the storage device 130 may receive the processed data PDT from the processing device 140 based on the third request RQ3 . For example, the storage device 130 performs DMA communication with the computing device 140 through the PCIe circuit 160 based on the second address ADD2 and the fourth address ADD4 of the third request RQ3. can be performed.

제8 동작(⑧)에서, 스토리지 장치(130)는 제3 요청(RQ3)에 기초하여 처리된 데이터(PDT)를 저장할 수 있다. 스토리지 장치(130)는 처리된 데이터(PDT)를 저장한 후, 컴플리션을 CSV 장치(120)에게 제공할 수 있다. CSV 장치(120)는 스토리지 장치(130)로부터 수신된 컴플리션에 기초하여, 가상 머신(VM)에게 컴플리션을 제공할 수 있다.In an eighth operation (⑧), the storage device 130 may store the processed data PDT based on the third request RQ3. The storage device 130 may store the processed data PDT and then provide completion to the CSV device 120 . The CSV device 120 may provide the completion to the virtual machine (VM) based on the completion received from the storage device 130 .

도 9는 본 개시의 일부 실시 예들에 따라 스토리지 시스템의 장치들 사이의 직접적인 통신을 설명하는 도면이다. 도 9를 참조하면, 스토리지 시스템(100)은 호스트 장치(110), CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 PCIe 회로(160)를 포함할 수 있다.9 is a diagram illustrating direct communication between devices of a storage system according to some embodiments of the present disclosure. Referring to FIG. 9 , the storage system 100 may include a host device 110 , a CSV device 120 , a storage device 130 , an arithmetic device 140 , and a PCIe circuit 160 .

호스트 장치(110), 스토리지 장치(130), 및 연산 장치(140) 중 임의의 조합은 PCIe 통신을 통해서, 직접적으로 데이터를 통신(즉, DMA 통신을 수행)할 수 있다. 본 개시의 이해를 돕기 위해, 도 9는 연산 장치(140)가 소스로서 호스트 장치(110) 또는 스토리지 장치(130)에게 처리된 데이터(PDT)를 제공하는 동작이 설명되지만, 호스트 장치(110) 및 스토리지 장치(130)도 후술되는 것과 유사하게 소스로서 동작할 수 있다.Any combination of the host device 110 , the storage device 130 , and the computing device 140 may directly communicate data (ie, perform DMA communication) through PCIe communication. 9 illustrates an operation in which the processing device 140 provides the processed data PDT to the host device 110 or the storage device 130 as a source, but the host device 110 And the storage device 130 may also act as a source similar to what will be described later.

CSV 장치(120)는 연산 장치(140)에게 소스 어드레스 및 목적지 어드레스를 제공할 수 있다. 소스 어드레스는 연산 장치(140)의 버퍼 메모리의 위치를 가리키는 제4 어드레스(ADD4)일 수 있다. 목적지 어드레스는 연산 장치(140)와 PCIe 회로(160)를 통해 통신할 수 있는 호스트 장치(110) 또는 스토리지 장치(130)를 가리킬 수 있다.The CSV device 120 may provide a source address and a destination address to the computing device 140 . The source address may be a fourth address ADD4 indicating a location of the buffer memory of the computing device 140 . The destination address may indicate the host device 110 or the storage device 130 capable of communicating with the computing device 140 through the PCIe circuit 160 .

예를 들어, 범위 '0~1023'의 어드레스는 호스트 장치(110)에 대응하는 제3 어드레스(ADD3)일 수 있다. CSV 장치(120)가 범위 '0~1023'의 어드레스를 목적지 어드레스로서 연산 장치(140)에게 제공하는 경우, 연산 장치(140)는 목적지 어드레스를 참조하여, PCIe 회로(160)를 통해 호스트 장치(110)에게 처리된 데이터(PDT)를 직접적으로 제공할 수 있다.For example, an address in the range '0 to 1023' may be the third address ADD3 corresponding to the host device 110 . When the CSV device 120 provides an address in the range of '0 to 1023' to the arithmetic device 140 as a destination address, the arithmetic device 140 refers to the destination address and via the PCIe circuit 160 the host device ( 110) can be directly provided with the processed data PDT.

또 다른 예로서, 범위 '1024~2047'의 어드레스는 스토리지 장치(130)에 대응하는 제2 어드레스(ADD2)일 수 있다. CSV 장치(120)가 범위 '1024~2047'의 어드레스를 목적지 어드레스로서 연산 장치(140)에게 제공하는 경우, 연산 장치(140)는 목적지 어드레스를 참조하여, PCIe 회로(160)를 통해 스토리지 장치(130)에게 처리된 데이터(PDT)를 직접적으로 제공할 수 있다.As another example, an address in the range '1024 to 2047' may be the second address ADD2 corresponding to the storage device 130 . When the CSV device 120 provides an address in the range '1024 to 2047' as a destination address to the calculation device 140, the calculation device 140 refers to the destination address, and via the PCIe circuit 160, the storage device ( 130) may be directly provided with the processed data PDT.

도 10은 본 개시의 일부 실시 예들에 따른 유연한 확장성을 갖는 스토리지 시스템을 설명하는 블록도이다. 도 10을 참조하면, 스토리지 시스템(100)은 복수의 가상 머신들, 복수의 스토리지 장치들, 및 복수의 연산 장치들 사이의 리소스 할당을 관리할 수 있다.10 is a block diagram illustrating a storage system having flexible scalability according to some embodiments of the present disclosure. Referring to FIG. 10 , the storage system 100 may manage resource allocation among a plurality of virtual machines, a plurality of storage devices, and a plurality of computing devices.

스토리지 시스템(100)은 가상 머신 세트, 스토리지 장치 세트, 연산 장치 세트, SR-IOV 어댑터(121), 및 장치 오케스트라(122)를 포함할 수 있다.The storage system 100 may include a set of virtual machines, a set of storage devices, a set of computing devices, an SR-IOV adapter 121 , and a device orchestra 122 .

가상 머신 세트는 제1 내지 제N 가상 머신들(VM_1~VM_N)을 포함할 수 있다. 스토리지 장치 세트는 제1 내지 제M 스토리지 장치들(130_1~130_M)을 포함할 수 있다. 연산 장치 세트는 제1 내지 제L 연산 장치들(140_1~140_L)을 포함할 수 있다. 여기서, N, M, 및 L은 임의의 자연수이다.The virtual machine set may include first to Nth virtual machines VM_1 to VM_N. The storage device set may include first to M th storage devices 130_1 to 130_M. The arithmetic device set may include first to Lth arithmetic devices 140_1 to 140_L. Here, N, M, and L are arbitrary natural numbers.

SR-IOV 어댑터(121)는 가상 머신 세트와 통신할 수 있다. SR-IOV 어댑터(121)는 복수의 VF들을 포함할 수 있다. 복수의 VF들은 제1 내지 제N 가상 머신들(VM_1~VM_N) 및 리소스 관리자 사이의 인터페이스를 제공할 수 있다.SR-IOV adapter 121 may communicate with a set of virtual machines. The SR-IOV adapter 121 may include a plurality of VFs. The plurality of VFs may provide interfaces between the first to Nth virtual machines VM_1 to VM_N and the resource manager.

스토리지 인터페이스 회로는 스토리지 장치 세트와 통신할 수 있다. 스토리지 인터페이스 회로는 제1 내지 제M 스토리지 장치들(130_1~130_M) 및 리소스 관리자 사이의 인터페이스를 제공할 수 있다.The storage interface circuitry may communicate with a set of storage devices. The storage interface circuit may provide an interface between the first to M th storage devices 130_1 to 130_M and the resource manager.

연산 장치 인터페이스 회로는 연산 장치 세트와 통신할 수 있다. 연산 장치 인터페이스 회로는 제1 내지 제L 연산 장치들(140_1~140_L) 및 리소스 관리자 사이의 인터페이스를 제공할 수 있다.The computing device interface circuit can communicate with a set of computing devices. The computing device interface circuit may provide an interface between the first to Lth computing devices 140_1 to 140_L and the resource manager.

리소스 관리자는 가상 머신 세트, 스토리지 장치 세트, 및 연산 장치 세트 사이의 리소스 할당을 관리할 수 있다. 예를 들어, 리소스 관리자는 제1 가상 머신(VM_1)에게 제1 스토리지 장치(130_1) 및 제1 연산 장치(140_1)를 할당할 수 있다. 또는, 리소스 관리자는 제1 가상 머신(VM_1)에게 제1 및 제2 스토리지 장치들(130_1, 130_2) 그리고 제1 및 제2 연산 장치들(140_1, 140_2)을 할당할 수 있다.A resource manager may manage resource allocation among a set of virtual machines, a set of storage devices, and a set of computing devices. For example, the resource manager may allocate the first storage device 130_1 and the first computing device 140_1 to the first virtual machine VM_1. Alternatively, the resource manager may allocate the first and second storage devices 130_1 and 130_2 and the first and second processing devices 140_1 and 140_2 to the first virtual machine VM_1.

리소스 관리자는 가상 머신들의 개수가 증가하거나 감소하는 경우, 스토리지 장치들의 개수가 증가하거나 감소하는 경우, 또는 연산 장치들의 개수가 증가하거나 감소하는 경우, 변경된 가상화 환경에 따라 가상 머신에게 스토리지 리소스 및 연산 리소스를 유연하게 할당할 수 있다.When the number of virtual machines increases or decreases, when the number of storage devices increases or decreases, or when the number of computing devices increases or decreases, the resource manager provides storage resources and computational resources to virtual machines according to the changed virtualization environment. can be allocated flexibly.

스토리지 리소스 또는 연산 리소스가 부족한 경우, 도 1의 PCIe 회로(160)에 다른 스토리지 장치 또는 다른 연산 장치를 추가함으로써, 스토리지 리소스 또는 연산 리소스를 유연하게 확장할 수 있다.When storage resources or computational resources are insufficient, storage resources or computational resources may be flexibly expanded by adding another storage device or another computational device to the PCIe circuit 160 of FIG. 1 .

도 11은 본 개시의 일부 실시 예들에 따른 스토리지 시스템을 설명하는 블록도이다. 도 11을 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템(200)이 설명된다.11 is a block diagram illustrating a storage system according to some embodiments of the present disclosure. Referring to FIG. 11 , a storage system 200 according to some embodiments of the present disclosure is described.

스토리지 시스템(200)은 가상 머신(VM)으로부터의 요청을 관리할 수 있다. 스토리지 시스템(200)은 호스트 장치(210), CSV 장치(220), 스토리지 장치(230), 및 I/O 메모리 관리 유닛(250)을 포함할 수 있다. CSV 장치(220)는 SR-IOV 어댑터(221) 및 장치 오케스트라(222)를 포함할 수 있다. The storage system 200 may manage requests from a virtual machine (VM). The storage system 200 may include a host device 210 , a CSV device 220 , a storage device 230 , and an I/O memory management unit 250 . The CSV device 220 may include an SR-IOV adapter 221 and a device orchestra 222 .

가상 머신(VM), 호스트 장치(210), SR-IOV 어댑터(221), 스토리지 장치(230), 및 I/O 메모리 관리 유닛(250)의 특징들은 도 3의 가상 머신(VM), 호스트 장치(110), SR-IOV 어댑터(121), 스토리지 장치(130), 및 I/O 메모리 관리 유닛(150)의 특징들과 유사하므로, 이에 대한 상세한 설명은 생략된다.Features of the virtual machine (VM), the host device 210, the SR-IOV adapter 221, the storage device 230, and the I/O memory management unit 250 are similar to those of the virtual machine (VM) of FIG. 3, the host device 110 , the SR-IOV adapter 121 , the storage device 130 , and the I/O memory management unit 150 have similar features, so detailed description thereof is omitted.

장치 오케스트라(222)는 리소스 관리자, 스토리지 인터페이스 회로, 및 내부-연산 장치를 포함할 수 있다. 내부-연산 장치는 가속기 및 버퍼 메모리를 포함할 수 있다. 가속기는 연산 리소스를 제공할 수 있다. 예를 들어, 가속기는 압축, 압축 해제, 암호화, 및 복호화 등과 같은 연산들을 수행할 수 있다. 내부-연산 장치의 버퍼 메모리는 PCIe 회로를 통해 스토리지 장치(230)의 버퍼 메모리 및 호스트 장치(210)의 호스트 메모리와 직접적으로 통신할 수 있다. 리소스 관리자는 가상 머신(VM)에게 스토리지 장치(230)의 스토리지 리소스 및 내부-연산 장치의 연산 리소스를 할당할 수 있다. 즉, 내부-연산 장치는 도 3의 연산 장치(140)와 유사한 기능을 수행할 수 있다.Device orchestra 222 may include a resource manager, storage interface circuitry, and an inter-computing device. The inter-computing unit may include an accelerator and a buffer memory. Accelerators may provide computational resources. For example, an accelerator may perform operations such as compression, decompression, encryption, and decryption. The buffer memory of the inter-computing device may directly communicate with the buffer memory of the storage device 230 and the host memory of the host device 210 through a PCIe circuit. The resource manager may allocate storage resources of the storage device 230 and computational resources of the internal-computing device to the virtual machine (VM). That is, the inter-computing unit may perform a function similar to that of the arithmetic unit 140 of FIG. 3 .

일부 실시 예들에서, CSV 장치(220)는 하드웨어 가속기로 구현될 수 있다. 예를 들어, CSV 장치(220)는 FPGA로 구현될 수 있다. FPGA는 연산 리소스를 제공하고 그리고 가상 머신(VM)을 위한 스토리지 리소스 및 연산 리소스를 관리하는 하드웨어일 수 있다.In some embodiments, CSV device 220 may be implemented as a hardware accelerator. For example, the CSV device 220 may be implemented as an FPGA. An FPGA can be hardware that provides computational resources and manages computational resources and storage resources for virtual machines (VMs).

도 12는 본 개시의 일부 실시 예들에 따른 스토리지 시스템을 설명하는 블록도이다. 도 12를 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템(300)이 설명된다. 스토리지 시스템(300)은 가상 머신(VM)으로부터의 요청을 관리할 수 있다. 스토리지 시스템(300)은 호스트 장치(310), CSV 장치(320), 스토리지 장치(330), 연산 장치(340), 및 I/O 메모리 관리 유닛(350)을 포함할 수 있다. CSV 장치(320)는 SR-IOV 어댑터(321) 및 장치 오케스트라(322)를 포함할 수 있다.12 is a block diagram illustrating a storage system according to some embodiments of the present disclosure. Referring to FIG. 12 , a storage system 300 according to some embodiments of the present disclosure is described. The storage system 300 may manage requests from a virtual machine (VM). The storage system 300 may include a host device 310 , a CSV device 320 , a storage device 330 , an arithmetic device 340 , and an I/O memory management unit 350 . The CSV device 320 may include an SR-IOV adapter 321 and a device orchestra 322 .

가상 머신(VM), 호스트 장치(310), SR-IOV 어댑터(321), 스토리지 장치(330), 연산 장치(340), 및 I/O 메모리 관리 유닛(350)의 특징들은 도 3의 가상 머신(VM), 호스트 장치(110), SR-IOV 어댑터(121), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)의 특징들과 유사하므로, 이에 대한 상세한 설명은 생략된다.Features of a virtual machine (VM), host device 310, SR-IOV adapter 321, storage device 330, computing device 340, and I/O memory management unit 350 are similar to those of the virtual machine in FIG. (VM), the host device 110, the SR-IOV adapter 121, the storage device 130, the computing device 140, and the I / O memory management unit 150, since the features are similar, detailed Descriptions are omitted.

장치 오케스트라(322)는 리소스 관리자, 내부-연산 장치, 스토리지 인터페이스 회로, 및 연산 장치 인터페이스 회로를 포함할 수 있다.Device orchestra 322 may include resource managers, inter-computing devices, storage interface circuitry, and computing device interface circuitry.

내부-연산 장치는 가속기 및 버퍼 메모리를 포함할 수 있다. 가속기는 연산 리소스를 제공할 수 있다. 연산 장치(340)는 연산 리소스를 제공할 수 있다. 리소스 관리자는 내부-연산 장치 및 연산 장치(340)를 종합적으로 관리하여, 가상 머신(VM)에게 연산 리소스를 할당할 수 있다.The inter-computing unit may include an accelerator and a buffer memory. Accelerators may provide computational resources. The computing device 340 may provide computing resources. The resource manager may comprehensively manage the internal-computing device and the computing device 340 to allocate computing resources to virtual machines (VMs).

도 13은 본 개시의 일부 실시 예들에 따라 가상화 장치의 읽기 동작을 설명하는 순서도이다. 도 13을 참조하면, 가상화 장치(VD)의 읽기 동작이 설명된다. 가상화 장치(VD)는 가상 머신을 실행하는 호스트 장치(110)와 통신할 수 있다. 가상화 장치(VD)는 CSV 장치(120), 스토리지 장치(130), 및 연산 장치(140)를 포함할 수 있다.13 is a flowchart illustrating a read operation of a virtualization device according to some embodiments of the present disclosure. Referring to FIG. 13 , a read operation of the virtualization device VD will be described. The virtualization device (VD) may communicate with the host device 110 running the virtual machine. The virtualization device (VD) may include a CSV device 120 , a storage device 130 , and an arithmetic device 140 .

S210 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 호스트 장치(110)로부터 제1 어드레스(ADD1), 제2 어드레스(ADD2), 및 읽기 동작을 가리키는 제1 요청(RQ1)을 수신할 수 있다. 제1 어드레스(ADD1)는 호스트 장치(110)에 의해 실행되는 가상 머신의 가상 어드레스를 가리킬 수 있다. 제2 어드레스(ADD2)는 읽기 동작에 대응하는 원시 데이터가 저장된 스토리지 장치(130) 내의 위치를 가리킬 수 있다.In step S210, the virtualization device VD receives a first address ADD1, a second address ADD2, and a first request RQ1 indicating a read operation from the host device 110 by the CSV device 120. can receive The first address ADD1 may indicate a virtual address of a virtual machine executed by the host device 110 . The second address ADD2 may indicate a location in the storage device 130 where raw data corresponding to a read operation is stored.

S220 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 제1 어드레스(ADD1)로부터 제3 어드레스(ADD3)를 획득할 수 있다. 제1 어드레스(ADD1)는 가상 머신의 가상 어드레스일 수 있다. 제3 어드레스(ADD3)는 가상 머신에 대응하는 실제 머신(즉, 호스트 장치(110))의 어드레스일 수 있다. CSV 장치(120)는 내장된 어드레스 변환 테이블을 참조하여, 제1 어드레스(ADD1)로부터 제3 어드레스(ADD3)를 획득할 수 있다. 또는, 가상화 장치(VD)는 I/O 메모리 관리 유닛을 더 포함할 수 있고, CSV 장치(120)는 I/O 메모리 관리 유닛으로부터 제1 어드레스(ADD1)에 대응하는 제3 어드레스(ADD3)를 수신할 수 있다.In operation S220 , the virtualization device VD may acquire the third address ADD3 from the first address ADD1 by the CSV device 120 . The first address ADD1 may be a virtual address of a virtual machine. The third address ADD3 may be an address of a real machine (ie, the host device 110) corresponding to the virtual machine. The CSV device 120 may obtain the third address ADD3 from the first address ADD1 by referring to the built-in address conversion table. Alternatively, the virtualization device VD may further include an I/O memory management unit, and the CSV device 120 receives the third address ADD3 corresponding to the first address ADD1 from the I/O memory management unit. can receive

S221 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 연산 장치(140)의 버퍼 메모리의 위치를 가리키는 제4 어드레스(ADD4)를 지정(designate)할 수 있다. 예를 들어, CSV 장치(120)는 연산 장치(140)를 식별하고, 연산 장치(140)의 연산 리소스를 가상 머신(VM)에 할당할 수 있다.In step S221 , the virtualization device VD may designate a fourth address ADD4 indicating the location of the buffer memory of the computing device 140 by the CSV device 120 . For example, the CSV device 120 may identify the computing device 140 and allocate computing resources of the computing device 140 to a virtual machine (VM).

S230 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 리디렉션을 가리키는 제2 요청(RQ2)을 스토리지 장치(130)에게 제공할 수 있다. 리디렉션은 스토리지 장치(130)가 원시 데이터를 연산 장치(140)에게 제공하는 것을 가리킬 수 있다.In step S230, the virtualization device VD provides the second address ADD2, the fourth address ADD4, and the second request RQ2 indicating redirection to the storage device 130 by the CSV device 120. can do. Redirection may refer to storage device 130 providing raw data to computing device 140 .

S240 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 제2 요청(RQ2)에 기초하여 원시 데이터를 연산 장치(140)에게 제공할 수 있다. 원시 데이터는 압축된 데이터 또는 암호화된 데이터일 수 있다.In operation S240 , the virtualization device VD may provide raw data to the computing device 140 based on the second request RQ2 by the storage device 130 . Raw data may be compressed data or encrypted data.

S241 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 원시 데이터를 처리한 후에 제1 컴플리션(COMP1)을 CSV 장치(120)에 제공할 수 있다. 제1 컴플리션은 CSV 장치(120)의 CQ에 기입될 수 있다.In step S241 , the virtualization device (VD) may provide the first completion (COMP1) to the CSV device 120 after processing the raw data by the storage device 130 . The first completion may be written to the CQ of the CSV device 120.

S250 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 제1 컴플리션(COMP1)에 응답하여 제3 어드레스(ADD3), 제4 어드레스(ADD4), 및 처리 동작을 가리키는 제3 요청(RQ3)을 연산 장치(140)에게 제공할 수 있다. 처리 동작은 연산 장치(140)가 원시 데이터를 처리하는 것 그리고 연산 장치(140)가 처리된 데이터를 호스트 장치(110)에게 제공하는 것을 가리킬 수 있다.In step S250, the virtualization device VD, by the CSV device 120, responds to the first completion COMP1 by indicating the third address ADD3, the fourth address ADD4, and a processing operation. Request RQ3 may be provided to computing device 140 . The processing operation may indicate that the processing device 140 processes raw data and the processing device 140 provides the processed data to the host device 110 .

S260 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 원시 데이터를 처리할 수 있다. 예를 들어, 연산 장치(140)는 원시 데이터를 압축 해제하거나 또는 복호화 함으로써 처리된 데이터를 생성할 수 있다. 처리된 데이터는 압축 해제된 데이터 또는 복호화된 데이터일 수 있다.In step S260 , the virtualization device VD may process raw data by the computing device 140 . For example, the processing unit 140 may generate processed data by decompressing or decoding raw data. The processed data may be decompressed data or decrypted data.

S270 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 제3 요청(RQ3)에 기초하여 처리된 데이터를 호스트 장치(110)에게 제공할 수 있다.In step S270 , the virtualization device VD may provide data processed by the computing device 140 based on the third request RQ3 to the host device 110 .

S280 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 완료 알림을 CSV 장치(120)에게 제공할 수 있다.In step S280 , the virtualization device (VD) may provide a completion notification to the CSV device 120 through the computing device 140 .

S281 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 완료 알림에 응답하여 제2 컴플리션(COMP2)을 호스트 장치(110)에게 제공할 수 있다. 제2 컴플리션(COMP2)은 가상 머신(VM)의 VCQ에 기입될 수 있다.In step S281 , the virtualization device VD may provide the second completion COMP2 to the host device 110 by the CSV device 120 in response to the completion notification. The second completion COMP2 may be written to the VCQ of the virtual machine VM.

도 14는 본 개시의 일부 실시 예들에 따라 가상화 장치의 쓰기 동작을 설명하는 순서도이다. 도 14를 참조하면, 가상화 장치(VD)의 쓰기 동작이 설명된다. 가상화 장치(VD)는 가상 머신을 실행하는 호스트 장치(110)와 통신할 수 있다. 가상화 장치(VD)는 CSV 장치(120), 스토리지 장치(130), 및 연산 장치(140)를 포함할 수 있다.14 is a flowchart illustrating a write operation of a virtualization device according to some embodiments of the present disclosure. Referring to FIG. 14 , a write operation of the virtualization device VD will be described. The virtualization device (VD) may communicate with the host device 110 running the virtual machine. The virtualization device (VD) may include a CSV device 120 , a storage device 130 , and an arithmetic device 140 .

S310 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 호스트 장치(110)로부터 제1 어드레스(ADD1), 제2 어드레스(ADD2), 및 쓰기 동작을 가리키는 제1 요청(RQ1)을 수신할 수 있다. 제1 어드레스(ADD1)는 호스트 장치(110)에 의해 실행되는 가상 머신의 가상 어드레스를 가리킬 수 있다. 제2 어드레스(ADD2)는 쓰기 동작에 대응하는 원시 데이터를 처리한 후에, 처리된 데이터가 저장될 스토리지 장치(130) 내의 위치를 가리킬 수 있다.In step S310, the virtualization device VD receives a first address ADD1, a second address ADD2, and a first request RQ1 indicating a write operation from the host device 110 by the CSV device 120. can receive The first address ADD1 may indicate a virtual address of a virtual machine executed by the host device 110 . The second address ADD2 may indicate a location in the storage device 130 where processed data is to be stored after raw data corresponding to a write operation is processed.

S320 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 제1 어드레스(ADD1)로부터 제3 어드레스(ADD3)를 획득할 수 있다. 제1 어드레스(ADD1)는 가상 머신의 가상 어드레스일 수 있다. 제3 어드레스(ADD3)는 가상 머신에 대응하는 실제 머신(즉, 호스트 장치(110))의 어드레스일 수 있다. CSV 장치(120)는 내장된 어드레스 변환 테이블을 참조하여, 제1 어드레스(ADD1)로부터 제3 어드레스(ADD3)를 획득할 수 있다. 또는, 가상화 장치(VD)는 I/O 메모리 관리 유닛을 더 포함할 수 있고, CSV 장치(120)는 I/O 메모리 관리 유닛으로부터 제1 어드레스(ADD1)에 대응하는 제3 어드레스(ADD3)를 수신할 수 있다.In step S320 , the virtualization device VD may acquire the third address ADD3 from the first address ADD1 by the CSV device 120 . The first address ADD1 may be a virtual address of a virtual machine. The third address ADD3 may be an address of a real machine (ie, the host device 110) corresponding to the virtual machine. The CSV device 120 may obtain the third address ADD3 from the first address ADD1 by referring to the built-in address conversion table. Alternatively, the virtualization device VD may further include an I/O memory management unit, and the CSV device 120 receives the third address ADD3 corresponding to the first address ADD1 from the I/O memory management unit. can receive

S321 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 연산 장치(140)의 버퍼 메모리의 위치를 가리키는 제4 어드레스(ADD4)를 지정할 수 있다. 예를 들어, CSV 장치(120)는 연산 장치(140)를 식별하고, 연산 장치(140)의 연산 리소스를 가상 머신(VM)에 할당할 수 있다.In step S321 , the virtualization device VD may designate a fourth address ADD4 indicating the location of the buffer memory of the computing device 140 through the CSV device 120 . For example, the CSV device 120 may identify the computing device 140 and allocate computing resources of the computing device 140 to a virtual machine (VM).

S330 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 제3 어드레스(ADD3), 제4 어드레스(ADD4), 및 처리 동작을 가리키는 제2 요청(RQ2)을 연산 장치(140)에게 제공할 수 있다. 처리 동작은 연산 장치(140)가 호스트 장치(110)로부터 원시 데이터를 수신하는 것 그리고 연산 장치(140)가 원시 데이터를 처리하는 것을 가리킬 수 있다.In step S330, the virtualization device VD sends the third address ADD3, the fourth address ADD4, and the second request RQ2 indicating a processing operation to the calculation device 140 by the CSV device 120. can provide The processing operation may refer to the processing device 140 receiving raw data from the host device 110 and processing the raw data by the processing device 140 .

S340 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 제2 요청(RQ2)에 기초하여 호스트 장치(110)로부터 원시 데이터를 수신할 수 있다. 원시 데이터는 압축되지 않은 데이터 또는 암호화되지 않은 데이터일 수 있다.In step S340 , the virtualization device VD may receive raw data from the host device 110 based on the second request RQ2 by the computing device 140 . Raw data may be uncompressed data or unencrypted data.

S350 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 원시 데이터를 처리할 수 있다. 예를 들어, 연산 장치(140)는 원시 데이터를 압축하거나 또는 암호화함으로써 처리된 데이터를 생성할 수 있다. 처리된 데이터는 압축된 데이터 또는 암호화된 데이터일 수 있다.In step S350 , the virtualization device VD may process raw data by the computing device 140 . For example, computing device 140 may generate processed data by compressing or encrypting raw data. The processed data may be compressed data or encrypted data.

S351 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 완료 알림을 CSV 장치(120)에게 제공할 수 있다.In step S351 , the virtualization device (VD) may provide a completion notification to the CSV device 120 through the computing device 140 .

S360 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 완료 알림에 응답하여, 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 저장 동작을 가리키는 제3 요청(RQ3)을 스토리지 장치(130)에게 제공할 수 있다.In step S360, the virtualization device VD sends, by the CSV device 120, the second address ADD2, the fourth address ADD4, and the third request RQ3 indicating the storage operation in response to the completion notification. It may be provided to the storage device 130 .

S370 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 제3 요청(RQ3)에 기초하여 연산 장치(140)로부터 처리된 데이터를 수신할 수 있다.In operation S370 , the virtualization device VD may receive data processed by the storage device 130 from the calculation device 140 based on the third request RQ3 .

S380 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 처리된 데이터를 저장할 수 있다.In step S380 , the virtualization device VD may store data processed by the storage device 130 .

S390 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 처리된 데이터를 저장한 후 제1 컴플리션(COMP1)을 CSV 장치(120)에게 제공할 수 있다. 제1 컴플리션은 CSV 장치(120)의 CQ에 기입될 수 있다.In step S390 , the virtualization device VD may store the processed data by the storage device 130 and then provide the first completion COMP1 to the CSV device 120 . The first completion may be written to the CQ of the CSV device 120.

S391 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 제1 컴플리션(COMP1)에 응답하여 제2 컴플리션(COMP2)을 호스트 장치(110)에게 제공할 수 있다. 제2 컴플리션(COMP2)은 가상 머신(VM)의 VCQ에 기입될 수 있다.In step S391 , the virtualization device VD may provide a second completion COMP2 to the host device 110 through the CSV device 120 in response to the first completion COMP1 . The second completion COMP2 may be written to the VCQ of the virtual machine VM.

상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.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)

가상 머신을 실행하는 호스트 장치와 통신하고, 그리고 CSV(Computational Storage Virtualization) 장치, 스토리지 장치, 및 연산 장치를 포함하는 가상화 장치의 동작하는 방법에 있어서:
상기 CSV 장치에 의해, 상기 호스트 장치로부터, 상기 가상 머신의 제1 어드레스, 상기 스토리지 장치의 제2 어드레스, 및 읽기 동작을 가리키는 제1 요청을 수신하는 단계;
상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 실제 머신의 제3 어드레스 및 상기 연산 장치의 제4 어드레스를 획득하는 단계;
상기 CSV 장치에 의해, 상기 스토리지 장치에게, 상기 제2 어드레스, 상기 제4 어드레스, 및 리디렉션을 가리키는 제2 요청을 제공하는 단계;
상기 스토리지 장치에 의해, 상기 연산 장치에게, 상기 제2 요청에 기초하여 원시 데이터를 제공하는 단계;
상기 CSV 장치에 의해, 상기 연산 장치에게, 상기 제3 어드레스, 상기 제4 어드레스, 및 처리 동작을 가리키는 제3 요청을 제공하는 단계;
상기 연산 장치에 의해, 상기 제3 요청 및 상기 원시 데이터에 기초하여 처리된 데이터를 생성하는 단계; 및
상기 연산 장치에 의해, 상기 호스트 장치에게, 상기 처리된 데이터를 제공하는 단계를 포함하는 방법.
A method of operating a virtualization device that communicates with a host device running a virtual machine and includes a Computational Storage Virtualization (CSV) device, a storage device, and a computing device:
receiving, by the CSV device, a first request indicating a first address of the virtual machine, a second address of the storage device, and a read operation from the host device;
obtaining, by the CSV device, a third address of a real machine corresponding to the virtual machine and a fourth address of the computing device based on the first request;
providing, by the CSV device, a second request indicating the second address, the fourth address, and redirection to the storage device;
providing, by the storage device, raw data to the computing device based on the second request;
providing, by the CSV device, a third request indicating the third address, the fourth address, and a processing operation to the computing device;
generating, by the computing device, processed data based on the third request and the raw data; and
and providing, by the computing device, the processed data to the host device.
제 1 항에 있어서,
상기 가상화 장치는 상기 호스트 장치, 상기 CSV 장치, 상기 스토리지 장치, 및 상기 연산 장치와 연결된 PCIe(Peripheral Component Interconnect express) 회로를 더 포함하고,
상기 스토리지 장치에 의해, 상기 연산 장치에게, 상기 제2 요청에 기초하여 상기 원시 데이터를 제공하는 단계는:
상기 스토리지 장치에 의해, 상기 PCIe 회로를 통해 상기 연산 장치에게, 상기 제2 요청의 상기 제4 어드레스에 기초하여 상기 원시 데이터를 직접적으로 제공하는 단계를 포함하고, 그리고
상기 연산 장치에 의해, 상기 호스트 장치에게, 상기 처리된 데이터를 제공하는 단계는:
상기 연산 장치에 의해, 상기 PCIe 회로를 통해 상기 호스트 장치에게, 상기 제3 요청의 상기 제3 어드레스에 기초하여 상기 처리된 데이터를 직접적으로 제공하는 단계를 포함하는 방법.
According to claim 1,
The virtualization device further includes a Peripheral Component Interconnect express (PCIe) circuit connected to the host device, the CSV device, the storage device, and the computing device;
Providing, by the storage device, the raw data to the computing device based on the second request comprises:
directly providing, by the storage device, the raw data based on the fourth address of the second request to the computing device via the PCIe circuit; and
The step of providing, by the computing device, the processed data to the host device:
and directly providing, by the computing device, the processed data based on the third address of the third request to the host device via the PCIe circuit.
제 1 항에 있어서,
상기 제1 요청, 상기 제2 요청, 및 상기 제3 요청의 각각은 NVMe(Non-Volatile Memory Express) 표준의 커맨드 포맷의 리저브드 필드를 변경함으로써 구현되는 방법.
According to claim 1,
Each of the first request, the second request, and the third request is implemented by changing a reserved field of a command format of a Non-Volatile Memory Express (NVMe) standard.
제 3 항에 있어서,
상기 리저브드 필드는:
상기 연산 장치의 상기 처리 동작의 종류를 가리키는 연산자 체인 식별자(Operator Chain Identifier);
상기 처리된 데이터를 요청하는 소스의 위치를 가리키는 소스 어드레스;
상기 처리된 데이터를 수신하는 목적지의 위치를 가리키는 목적지 어드레스;
상기 소스 어드레스에 따라 전송될 데이터의 크기를 가리키는 소스 사이즈;
상기 목적지 어드레스에 따라 전송될 데이터의 크기를 가리키는 목적지 사이즈;
동일한 종류의 동작들을 가리키는 서로 다른 요청들 사이의 의존성(dependency)을 관리하는 요청 식별자;
상기 스토리지 장치의 인덱스 및 상기 연산 장치의 인덱스를 가리키는 물리적 장치 식별자;
상기 스토리지 장치로의 액세스가 필요한지 여부를 가리키는 타입;
상기 연산 장치의 상기 처리 동작에 사용되는 정보가 저장된 상기 호스트 장치 내의 위치를 가리키는 직접 파라미터;
상기 연산 장치의 상기 처리 동작에 사용되는 복사된 정보가 저장된 상기 스토리지 장치 내의 위치를 가리키는 파일 파라미터;
상기 직접 파라미터의 전송에 사용되는 직접 파라미터 포인터; 및
상기 파일 파라미터의 전송에 사용되는 파일 파라미터 포인터 중 적어도 하나를 가리키는 방법.
According to claim 3,
The Reserved Field is:
an Operator Chain Identifier indicating a type of the processing operation of the computing device;
a source address indicating a location of a source requesting the processed data;
a destination address indicating a location of a destination receiving the processed data;
a source size indicating the size of data to be transmitted according to the source address;
destination size indicating the size of data to be transmitted according to the destination address;
a request identifier that manages dependencies between different requests pointing to the same kind of operations;
a physical device identifier indicating an index of the storage device and an index of the computing device;
a type indicating whether access to the storage device is required;
a direct parameter indicating a location in the host device where information used in the processing operation of the computing device is stored;
a file parameter indicating a location in the storage device where copied information used in the processing operation of the computing device is stored;
a direct parameter pointer used to transmit the direct parameters; and
A method of pointing to at least one of the file parameter pointers used to transmit the file parameter.
제 1 항에 있어서,
상기 스토리지 장치 내의 상기 원시 데이터는 압축된 데이터 또는 암호화된 데이터이고, 그리고
상기 연산 장치에 의한 상기 처리된 데이터는 압축해제된 데이터 또는 복호화된 데이터인 방법.
According to claim 1,
the raw data in the storage device is compressed data or encrypted data; and
The processed data by the computing device is decompressed data or decrypted data.
제 1 항에 있어서,
상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 상기 실제 머신의 상기 제3 어드레스 및 상기 연산 장치의 상기 제4 어드레스를 획득하는 단계는:
상기 CSV 장치에 의해, 상기 제1 요청의 리저브드 필드를 참조하여 상기 제1 요청이 연산 스토리지 동작을 가리키는지 여부를 결정하는 단계; 및
상기 CSV 장치에 의해, 상기 제1 요청이 상기 연산 스토리지 동작을 가리키는 것으로 결정하면, 상기 제3 어드레스 및 상기 제4 어드레스를 획득하는 단계를 포함하는 방법.
According to claim 1,
Acquiring, by the CSV device, the third address of the real machine corresponding to the virtual machine and the fourth address of the computing device based on the first request:
determining, by the CSV device, whether the first request indicates a computational storage operation by referring to a reserved field of the first request; and
and if the CSV device determines that the first request points to the computational storage operation, obtaining the third address and the fourth address.
제 1 항에 있어서,
상기 스토리지 장치에 의해, 상기 연산 장치에게, 상기 제2 요청에 기초하여 상기 원시 데이터를 제공하는 단계는:
상기 스토리지 장치에 의해, 상기 원시 데이터를 제공한 후, 상기 CSV 장치에게 제1 컴플리션을 제공하는 단계를 포함하고,
상기 CSV 장치에 의해, 상기 연산 장치에게, 상기 제3 어드레스, 상기 제4 어드레스, 및 상기 처리 동작을 가리키는 상기 제3 요청을 제공하는 단계는:
상기 CSV 장치에 의해, 상기 제1 컴플리션에 응답하여, 상기 연산 장치에게 상기 제3 요청을 제공하는 단계를 포함하고, 그리고
상기 연산 장치에 의해, 상기 호스트 장치에게, 상기 처리된 데이터를 제공하는 단계는:
상기 연산 장치에 의해, 상기 처리된 데이터를 제공한 후, 상기 CSV 장치에게 완료 알림(done notification)을 제공하는 단계; 및
상기 CSV 장치에 의해, 상기 완료 알림에 응답하여, 상기 호스트 장치에게 제2 컴플리션을 제공하는 단계를 포함하는 방법.
According to claim 1,
Providing, by the storage device, the raw data to the computing device based on the second request comprises:
providing, by the storage device, a first completion to the CSV device after providing the raw data;
Providing, by the CSV device, to the computing device the third request indicating the third address, the fourth address, and the processing operation comprises:
providing, by the CSV device, the third request to the computing device in response to the first completion; and
The step of providing, by the computing device, the processed data to the host device:
providing, by the computing device, a done notification to the CSV device after providing the processed data; and
and providing, by the CSV device, a second completion to the host device in response to the completion notification.
제 1 항에 있어서,
상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 상기 실제 머신의 상기 제3 어드레스 및 상기 연산 장치의 상기 제4 어드레스를 획득하는 단계는:
상기 CSV 장치에 의해, 상기 CSV 장치 내의 어드레스 변환 테이블을 참조하여, 상기 제1 어드레스에 기초하여 상기 제3 어드레스를 획득하는 단계를 포함하는 방법.
According to claim 1,
Acquiring, by the CSV device, the third address of the real machine corresponding to the virtual machine and the fourth address of the computing device based on the first request:
and obtaining, by the CSV device, the third address based on the first address by referring to an address conversion table in the CSV device.
제 1 항에 있어서,
상기 가상화 장치는 상기 호스트 장치 및 상기 CSV 장치와 통신하는 I/O(input/output) 메모리 관리 유닛을 더 포함하고, 그리고
상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 상기 실제 머신의 상기 제3 어드레스 및 상기 연산 장치의 상기 제4 어드레스를 획득하는 단계는:
상기 I/O 메모리 관리 유닛에 의해, 상기 제1 요청에 기초하여 상기 제1 어드레스를 상기 제3 어드레스로 변환하는 단계; 및
상기 CSV 장치에 의해, 상기 I/O 메모리 관리 유닛으로부터 상기 제3 어드레스를 수신하는 단계를 포함하는 방법.
According to claim 1,
The virtualization device further includes an input/output (I/O) memory management unit communicating with the host device and the CSV device, and
Acquiring, by the CSV device, the third address of the real machine corresponding to the virtual machine and the fourth address of the computing device based on the first request:
converting, by the I/O memory management unit, the first address to the third address based on the first request; and
and receiving, by the CSV device, the third address from the I/O memory management unit.
제 1 항에 있어서,
상기 가상화 장치는 복수의 가상 머신들 중 타겟 가상 머신으로서 상기 가상 머신을 식별하고, 복수의 스토리지 장치들 중 타겟 스토리지 장치로서 상기 스토리지 장치를 식별하고, 그리고 복수의 연산 장치들 중 타겟 연산 장치로서 상기 연산 장치를 식별하도록 구성된 방법.
According to claim 1,
The virtualization device identifies the virtual machine as a target virtual machine among a plurality of virtual machines, identifies the storage device as a target storage device among a plurality of storage devices, and identifies the storage device as a target computing device among a plurality of storage devices. A method configured to identify a computing device.
제 1 항에 있어서,
상기 CSV 장치는 제1 FPGA(Field Programmable Gate Array)로 구현되고, 그리고
상기 연산 장치는 제2 FPGA로 구현되는 방법.
According to claim 1,
The CSV device is implemented with a first Field Programmable Gate Array (FPGA), and
The computing device is implemented as a second FPGA.
제 1 항에 있어서,
상기 연산 장치는 상기 CSV 장치의 내부-연산 장치로 구현되는 방법.
According to claim 1,
The method of claim 1 , wherein the computing unit is implemented as an inter-computing unit of the CSV device.
가상 머신을 실행하는 호스트 장치와 통신하고, 그리고 CSV(Computational Storage Virtualization) 장치, 스토리지 장치, 및 연산 장치를 포함하는 가상화 장치의 동작하는 방법에 있어서:
상기 CSV 장치에 의해, 상기 호스트 장치로부터, 상기 가상 머신의 제1 어드레스, 상기 스토리지 장치의 제2 어드레스, 및 쓰기 동작을 가리키는 제1 요청을 수신하는 단계;
상기 CSV 장치에 의해, 상기 제1 요청에 기초하여 상기 가상 머신에 대응하는 실제 머신의 제3 어드레스 및 상기 연산 장치의 제4 어드레스를 획득하는 단계;
상기 CSV 장치에 의해, 상기 연산 장치에게, 상기 제3 어드레스, 상기 제4 어드레스, 및 처리 동작을 가리키는 제2 요청을 제공하는 단계;
상기 연산 장치에 의해, 상기 호스트 장치로부터, 상기 제2 요청에 기초하여 원시 데이터를 수신하는 단계;
상기 연산 장치에 의해, 상기 제2 요청 및 상기 원시 데이터에 기초하여 처리된 데이터를 생성하는 단계;
상기 CSV 장치에 의해, 상기 스토리지 장치에게, 상기 제2 어드레스, 상기 제4 어드레스, 및 저장 동작을 가리키는 제3 요청을 제공하는 단계;
상기 스토리지 장치에 의해, 상기 연산 장치로부터, 상기 제3 요청에 기초하여 상기 처리된 데이터를 수신하는 단계; 및
상기 스토리지 장치에 의해, 상기 처리된 데이터를 저장하는 단계를 포함하는 방법.
A method of operating a virtualization device that communicates with a host device running a virtual machine and includes a Computational Storage Virtualization (CSV) device, a storage device, and a computing device:
receiving, by the CSV device, a first request indicating a first address of the virtual machine, a second address of the storage device, and a write operation from the host device;
obtaining, by the CSV device, a third address of a real machine corresponding to the virtual machine and a fourth address of the computing device based on the first request;
providing, by the CSV device, to the computing device a second request indicating the third address, the fourth address, and a processing operation;
receiving, by the computing device, raw data from the host device based on the second request;
generating, by the computing device, processed data based on the second request and the raw data;
providing, by the CSV device, to the storage device a third request indicating the second address, the fourth address, and a store operation;
receiving, by the storage device, the processed data from the computing device based on the third request; and
and storing the processed data by the storage device.
제 13 항에 있어서,
상기 가상화 장치는 상기 호스트 장치, 상기 CSV 장치, 상기 스토리지 장치, 및 상기 연산 장치와 연결된 PCIe(Peripheral Component Interconnect express) 회로를 더 포함하고,
상기 연산 장치에 의해, 상기 호스트 장치로부터, 상기 제2 요청에 기초하여 상기 원시 데이터를 수신하는 단계는:
상기 연산 장치에 의해, 상기 PCIe 회로를 통해 상기 호스트 장치로부터, 상기 제2 요청의 상기 제3 어드레스에 기초하여 상기 원시 데이터를 직접적으로 수신하는 단계를 포함하고, 그리고
상기 스토리지 장치에 의해, 상기 연산 장치로부터, 상기 제3 요청에 기초하여 상기 처리된 데이터를 수신하는 단계는:
상기 스토리지 장치에 의해, 상기 PCIe 회로를 통해 상기 연산 장치로부터, 상기 제3 요청의 상기 제4 어드레스에 기초하여 상기 처리된 데이터를 직접적으로 수신하는 단계를 포함하는 방법.
According to claim 13,
The virtualization device further includes a Peripheral Component Interconnect express (PCIe) circuit connected to the host device, the CSV device, the storage device, and the computing device;
Receiving, by the computing device, the raw data from the host device based on the second request comprises:
directly receiving, by the computing device, the raw data based on the third address of the second request from the host device via the PCIe circuit; and
Receiving, by the storage device, the processed data from the computing device based on the third request comprises:
and directly receiving, by the storage device, the processed data based on the fourth address of the third request from the computing device via the PCIe circuit.
제 13 항에 있어서,
상기 제1 요청, 상기 제2 요청, 및 상기 제3 요청의 각각은 NVMe(Non-Volatile Memory Express) 표준의 커맨드 포맷의 리저브드 필드를 변경함으로써 구현되는 방법.
According to claim 13,
Each of the first request, the second request, and the third request is implemented by changing a reserved field of a command format of a Non-Volatile Memory Express (NVMe) standard.
제 15 항에 있어서,
상기 리저브드 필드는:
상기 연산 장치의 상기 처리 동작의 종류를 가리키는 연산자 체인 식별자(Operator Chain Identifier);
상기 처리된 데이터를 요청하는 소스의 위치를 가리키는 소스 어드레스;
상기 처리된 데이터를 수신하는 목적지의 위치를 가리키는 목적지 어드레스;
상기 소스 어드레스에 따라 전송될 데이터의 크기를 가리키는 소스 사이즈;
상기 목적지 어드레스에 따라 전송될 데이터의 크기를 가리키는 목적지 사이즈;
동일한 종류의 동작들을 가리키는 서로 다른 요청들 사이의 의존성(dependency)을 관리하는 요청 식별자;
상기 CSV 장치의 인덱스, 상기 스토리지 장치의 인덱스, 및 상기 연산 장치의 인덱스를 가리키는 물리적 장치 식별자;
상기 스토리지 장치로의 액세스가 필요한지 여부를 가리키는 타입;
상기 연산 장치의 상기 처리 동작에 사용되는 정보가 저장된 상기 호스트 장치 내의 위치를 가리키는 직접 파라미터;
상기 연산 장치의 상기 처리 동작에 사용되는 복사된 정보가 저장된 상기 스토리지 장치 내의 위치를 가리키는 파일 파라미터;
상기 직접 파라미터의 전송에 사용되는 직접 파라미터 포인터; 및
상기 파일 파라미터의 전송에 사용되는 파일 파라미터 포인터 중 적어도 하나를 가리키는 방법.
According to claim 15,
The Reserved Field is:
an Operator Chain Identifier indicating a type of the processing operation of the computing device;
a source address indicating a location of a source requesting the processed data;
a destination address indicating a location of a destination receiving the processed data;
a source size indicating the size of data to be transmitted according to the source address;
a destination size indicating the size of data to be transmitted according to the destination address;
a request identifier that manages dependencies between different requests pointing to the same kind of operations;
a physical device identifier indicating the index of the CSV device, the index of the storage device, and the index of the computing device;
a type indicating whether access to the storage device is required;
a direct parameter indicating a location in the host device where information used in the processing operation of the computing device is stored;
a file parameter indicating a location in the storage device where copied information used in the processing operation of the computing device is stored;
a direct parameter pointer used to transmit the direct parameters; and
A method of pointing to at least one of the file parameter pointers used to transmit the file parameter.
제 13 항에 있어서,
상기 호스트 장치의 원시 데이터는 압축되지 않은 데이터 또는 암호화되지 않은 데이터이고, 그리고
상기 연산 장치에 의한 상기 처리된 데이터는 압축된 데이터 또는 암호화된 데이터인 방법.
According to claim 13,
The raw data of the host device is uncompressed data or unencrypted data, and
wherein the processed data by the computing device is compressed data or encrypted data.
제 13 항에 있어서,
상기 연산 장치에 의해, 상기 제2 요청 및 상기 원시 데이터에 기초하여 상기 처리된 데이터를 생성하는 단계는:
상기 연산 장치에 의해, 상기 처리된 데이터를 생성한 후, 상기 CSV 장치에게 완료 알림(done notification)을 제공하는 단계를 포함하고,
상기 CSV 장치에 의해, 상기 스토리지 장치에게, 상기 제2 어드레스, 상기 제4 어드레스, 및 상기 저장 동작을 가리키는 상기 제3 요청을 제공하는 단계는:
상기 CSV 장치에 의해, 상기 완료 알림에 응답하여, 상기 스토리지 장치에게 상기 제3 요청을 제공하는 단계를 포함하고, 그리고
상기 스토리지 장치에 의해, 상기 처리된 데이터를 저장하는 단계는:
상기 스토리지 장치에 의해, 상기 처리된 데이터를 저장한 후, 상기 CSV 장치에게 제1 컴플리션을 제공하는 단계; 및
상기 CSV 장치에 의해, 상기 제1 컴플리션에 응답하여, 상기 호스트 장치에게 제2 컴플리션을 제공하는 단계를 포함하는 방법.
According to claim 13,
Generating, by the computing device, the processed data based on the second request and the raw data comprises:
providing, by the computing device, a done notification to the CSV device after generating the processed data;
Providing, by the CSV device, the third request indicating the second address, the fourth address, and the store operation to the storage device comprises:
providing, by the CSV device, the third request to the storage device in response to the completion notification; and
Storing, by the storage device, the processed data includes:
providing, by the storage device, a first completion to the CSV device after storing the processed data; and
and providing, by the CSV device, a second completion to the host device in response to the first completion.
제1 데이터를 저장하도록 구성된 스토리지 장치;
상기 제1 데이터를 처리하고, 그리고 호스트 장치에 의해 실행되는 가상 머신의 제2 데이터를 처리하도록 구성된 연산 장치;
CSV(Computational Storage Virtualization) 장치; 및
상기 스토리지 장치, 상기 연산 장치, 상기 CSV 장치, 및 상기 호스트 장치와 연결된 PCIe(Peripheral Component Interconnect express) 회로를 포함하되,
상기 CSV 장치는:
상기 호스트 장치로부터 상기 가상 머신의 제1 어드레스 및 상기 스토리지 장치의 제2 어드레스를 포함하는 제1 요청을 수신하고;
상기 가상 머신에 대응하는 실제 머신의 제3 어드레스 및 상기 연산 장치의 제4 어드레스를 획득하고;
상기 제1 요청이 읽기 동작 또는 쓰기 동작을 가리키는지 여부를 결정하고;
상기 제1 요청이 상기 읽기 동작을 가리키는 것으로 결정하면, 상기 제2 어드레스, 상기 제4 어드레스, 및 리디렉션을 가리키는 제2 요청을 상기 스토리지 장치에게 제공하고, 그리고 상기 제3 어드레스, 상기 제4 어드레스, 및 상기 제1 데이터의 제1 처리 동작을 가리키는 제3 요청을 상기 연산 장치에게 제공하고; 그리고
상기 제1 요청이 상기 쓰기 동작을 가리키는 것으로 결정하면, 상기 제3 어드레스, 상기 제4 어드레스, 및 상기 제2 데이터의 제2 처리 동작을 가리키는 제4 요청을 상기 연산 장치에게 제공하고, 그리고 상기 제2 어드레스, 상기 제4 어드레스, 및 저장 동작을 가리키는 제5 요청을 상기 스토리지 장치에게 제공하도록 구성된 가상화 장치.
a storage device configured to store first data;
an arithmetic device configured to process the first data and to process second data of a virtual machine executed by a host device;
Computational Storage Virtualization (CSV) devices; and
Including a Peripheral Component Interconnect express (PCIe) circuit connected to the storage device, the calculation device, the CSV device, and the host device,
The CSV device:
receive a first request including a first address of the virtual machine and a second address of the storage device from the host device;
obtain a third address of a real machine corresponding to the virtual machine and a fourth address of the computing device;
determine whether the first request indicates a read operation or a write operation;
If it is determined that the first request indicates the read operation, the second address, the fourth address, and a second request indicating redirection are provided to the storage device, and the third address, the fourth address, and providing a third request to the computing device indicating a first processing operation of the first data; And
if it is determined that the first request points to the write operation, providing the computing device with a fourth request pointing to the third address, the fourth address, and a second processing operation of the second data; and 2 address, the fourth address, and a fifth request indicating a storage operation to the storage device.
제 19 항에 있어서,
상기 CSV 장치는:
상기 가상 머신과의 인터페이스를 제공하는 VF(Virtual Function)를 포함하는 SR-IOV(single root input/output virtualization) 어댑터; 및
상기 VF를 통해 상기 가상 머신을 식별하고, 상기 가상 머신에 대한 상기 스토리지 장치의 리소스 및 상기 연산 장치의 리소스를 할당하고, 상기 제1 요청에 기초하여 상기 제3 어드레스 및 상기 제4 어드레스를 획득하고, 그리고 상기 제1 요청에 기초하여 상기 제2 요청 및 상기 제3 요청을 생성하거나 또는 상기 제1 요청에 기초하여 상기 제4 요청 및 상기 제5 요청을 생성하도록 구성된 장치 오케스트라를 포함하는 가상화 장치.
According to claim 19,
The CSV device:
a single root input/output virtualization (SR-IOV) adapter including a virtual function (VF) providing an interface with the virtual machine; and
identifying the virtual machine through the VF, allocating a resource of the storage device and a resource of the computing device to the virtual machine, and acquiring the third address and the fourth address based on the first request; and a device orchestra configured to generate the second request and the third request based on the first request or generate the fourth request and the fifth request based on the first request.
KR1020220082341A 2021-07-14 2022-07-05 Virtualization device including storage device and computational device, and method of operating the same KR102532100B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/863,614 US20230016692A1 (en) 2021-07-14 2022-07-13 Virtualization device including storage device and computational device, and method of operating the same
CN202210829658.8A CN115617448A (en) 2021-07-14 2022-07-14 Virtualization device including storage device and computing device and operation method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210092432 2021-07-14
KR20210092432 2021-07-14

Publications (2)

Publication Number Publication Date
KR20230011871A true KR20230011871A (en) 2023-01-25
KR102532100B1 KR102532100B1 (en) 2023-05-12

Family

ID=85109726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220082341A KR102532100B1 (en) 2021-07-14 2022-07-05 Virtualization device including storage device and computational device, and method of operating the same

Country Status (1)

Country Link
KR (1) KR102532100B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150143134A1 (en) * 2013-11-15 2015-05-21 Kabushiki Kaisha Toshiba Secure data encryption in shared storage using namespaces
KR20160096279A (en) * 2015-02-04 2016-08-16 삼성전자주식회사 Storage device and user device supporting virtualization function
KR20200129863A (en) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 Controller, memory system and operating method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150143134A1 (en) * 2013-11-15 2015-05-21 Kabushiki Kaisha Toshiba Secure data encryption in shared storage using namespaces
KR20160096279A (en) * 2015-02-04 2016-08-16 삼성전자주식회사 Storage device and user device supporting virtualization function
KR20200129863A (en) * 2019-05-10 2020-11-18 에스케이하이닉스 주식회사 Controller, memory system and operating method thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Dongup Kwon 외 3명. FVM: FPGA-assisted Virtual Device Emulation for Fast, Scalable, and Flexible Storage Virtualization. 2020년 *

Also Published As

Publication number Publication date
KR102532100B1 (en) 2023-05-12

Similar Documents

Publication Publication Date Title
US9195623B2 (en) Multiple address spaces per adapter with address translation
KR101455011B1 (en) Converting a message signaled interruption into an i/o adapter event notification
US8478922B2 (en) Controlling a rate at which adapter interruption requests are processed
US9134911B2 (en) Store peripheral component interconnect (PCI) function controls instruction
US8458387B2 (en) Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8504754B2 (en) Identification of types of sources of adapter interruptions
US9213661B2 (en) Enable/disable adapters of a computing environment
KR102321913B1 (en) Non-volatile memory device, and memory system having the same
US8893153B2 (en) Inter-thread data communications in a computer processor
US10860380B1 (en) Peripheral device for accelerating virtual computing resource deployment
KR20140004788A (en) Executing a start operator message command
US20230016692A1 (en) Virtualization device including storage device and computational device, and method of operating the same
US11281602B1 (en) System and method to pipeline, compound, and chain multiple data transfer and offload operations in a smart data accelerator interface device
KR20220130518A (en) PCIe DEVICE AND OPERATING METHOD THEREOF
KR102532100B1 (en) Virtualization device including storage device and computational device, and method of operating the same
WO2023009641A1 (en) Data streaming accelerator
KR20230000941A (en) Circuitry and methods for supporting encrypted remote direct memory access (erdma) for live migration of a virtual machine
WO2020255760A1 (en) Vehicular control device
CN114647858A (en) Storage encryption using an aggregated cryptographic engine
Zhang et al. NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs
CN117349870B (en) Transparent encryption and decryption computing system, method, equipment and medium based on heterogeneous computing
US11966335B2 (en) Hardware interconnect with memory coherence
US20230052808A1 (en) Hardware Interconnect With Memory Coherence
KR20240025020A (en) System and method for transferring data from non-volatile memory to process accelerator
KR20230006363A (en) Computing device and storage card

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