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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 42
- 238000012545 processing Methods 0.000 claims abstract description 77
- 230000008569 process Effects 0.000 claims description 24
- ZYXYTGQFPZEUFX-UHFFFAOYSA-N benzpyrimoxan Chemical compound O1C(OCCC1)C=1C(=NC=NC=1)OCC1=CC=C(C=C1)C(F)(F)F ZYXYTGQFPZEUFX-UHFFFAOYSA-N 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 238000011017 operating method Methods 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 22
- 102100034004 Gamma-adducin Human genes 0.000 description 19
- 101000799011 Homo sapiens Gamma-adducin Proteins 0.000 description 19
- 102100034033 Alpha-adducin Human genes 0.000 description 16
- 101000799076 Homo sapiens Alpha-adducin Proteins 0.000 description 16
- 101000629598 Rattus norvegicus Sterol regulatory element-binding protein 1 Proteins 0.000 description 16
- 238000004891 communication Methods 0.000 description 16
- 102100024348 Beta-adducin Human genes 0.000 description 15
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 15
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000006837 decompression Effects 0.000 description 7
- 230000007423 decrease Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 101000907912 Homo sapiens Pre-mRNA-splicing factor ATP-dependent RNA helicase DHX16 Proteins 0.000 description 2
- 101000798532 Homo sapiens Transmembrane protein 171 Proteins 0.000 description 2
- 101150101414 PRP1 gene Proteins 0.000 description 2
- 102100023390 Pre-mRNA-splicing factor ATP-dependent RNA helicase DHX16 Human genes 0.000 description 2
- 101100368710 Rattus norvegicus Tacstd2 gene Proteins 0.000 description 2
- 101100342406 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PRS1 gene Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
Description
본 개시는 가상화 장치에 관한 것으로, 좀 더 상세하게는 스토리지 장치 및 연산 장치를 포함하는 가상화 장치, 및 이의 동작하는 방법에 관한 것이다.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
스토리지 시스템(100)은 가상 머신(VM; Virtual Machine)을 제공할 수 있다. 가상 머신(VM)은 소프트웨어적으로 구현된 컴퓨팅 환경일 수 있고, 이러한 가상 머신(VM) 상에서 운영 체제 또는 애플리케이션이 설치되고 실행될 수 있다. 일부 실시 예들에서, 스토리지 시스템(100)은 서버 장치일 수 있다. 예를 들어, 스토리지 시스템(100)은 사용자를 위한 가상 머신(VM)을 포함하는 클라우드 컴퓨팅 환경을 제공하는 서버 장치일 수 있다.The
호스트 장치(110)는 프로세서 및 호스트 메모리를 포함할 수 있다. 호스트 장치(110)의 프로세서는 호스트 메모리에 저장된 명령어를 실행함으로써, 가상 머신(VM)을 실행할 수 있다. 예를 들어, 호스트 장치(110)의 프로세서는 가상 머신(VM) 상에서 실행되는 운영 체제(OS; operating system) 및 애플리케이션 등을 위한 연산들을 실제로 수행할 수 있다. The
호스트 장치(110)의 프로세서는 가상 머신(VM)의 데이터 처리를 위한 요청들(예를 들어, 읽기 요청, 쓰기 요청 등)을 관리할 수 있다. 호스트 메모리는 가상 머신(VM)의 쓰기 요청에 따라 스토리지 장치(130)에 제공될 데이터 및 스토리지 장치(130)로부터 읽기 요청에 따라 수신될 데이터를 관리할 수 있다.The processor of the
CSV 장치(120)는 가상 머신(VM)에 따른 가상화 환경을 스토리지 장치(130) 및 연산 장치(140)에 제공할 수 있다. CSV 장치(120)는 호스트 장치(110)의 리소스 관리 부담 없이, 가상 머신(VM)에게 스토리지 리소스 및 연산 리소스를 제공할 수 있다.The
예를 들어, CSV 장치(120)는 가상 머신(VM)을 실행하는 호스트 장치(110)와 통신할 수 있다. CSV 장치(120)는 스토리지 장치(130) 및 연산 장치(140)와 통신할 수 있다. CSV 장치(120)는 가상 머신(VM)의 요청을 스토리지 장치(130) 및 연산 장치(140)에 의해 수행될 수 있는 요청들로 변경할 수 있다. 스토리지 장치(130) 및 연산 장치(140)는 CSV 장치(120)의 보조에 따라, 호스트 장치(110)의 리소스 관리 부담 없이 가상 머신(VM)의 요청을 처리할 수 있다.For example, the
일부 실시 예들에서, CSV 장치(120)는 서로 다른 장치들 사이의 직접적인 통신을 보장할 수 있다. 예를 들어, CSV 장치(120)는 PCIe 회로(160)를 통해서, 호스트 장치(110) 및 스토리지 장치(130)가 직접적으로 데이터를 통신하는 것, 호스트 장치(110) 및 연산 장치(140)가 직접적으로 데이터를 통신하는 것, 그리고 스토리지 장치(130) 및 연산 장치(140)가 직접적으로 데이터를 통신하는 것을 보조할 수 있다. 직접적으로 데이터를 통신하는 것은 DMA(Direct Memory Access) 통신으로도 지칭될 수 있다.In some embodiments,
일부 실시 예들에서, CSV 장치(120)는 하드웨어 가속기로 구현될 수 있다. 예를 들어, CSV 장치(120)는 FPGA(Field Programmable Gate Array)로 구현될 수 있다. FPGA는 가상 머신(VM)을 위한 스토리지 리소스 및 연산 리소스를 관리하는 하드웨어일 수 있다.In some embodiments,
일부 실시 예들에서, CSV 장치(120)는 스토리지 리소스 및 연산 리소스를 유연하게 관리할 수 있다. 예를 들어, CSV 장치(120)는 호스트 장치(110)의 리소스 관리 부담 없이, 복수의 가상 머신(VM)들로부터의 요청들을 처리하기 위해, 복수의 스토리지 장치들 및 복수의 연산 장치들에게 리소스를 할당할 수 있다. 이에 대한 보다 상세한 설명은 도 10과 함께 후술될 것이다.In some embodiments, the
스토리지 장치(130)는 데이터를 저장할 수 있다. 예를 들어, 스토리지 장치(130)는 가상 머신(VM)의 읽기 요청에 따라 데이터를 제공할 수 있거나, 또는 가상 머신(VM)의 쓰기 요청에 따라 데이터를 저장할 수 있다. 스토리지 장치(130)는 연산 장치(140)에 의해 처리된 데이터를 저장할 수 있다. The
연산 장치(140)는 스토리지 장치(130) 또는 호스트 장치(110)로부터 제공된 데이터를 처리할 수 있다. 예를 들어, 가상 머신(VM)으로부터 읽기 요청이 발행되는 경우, CSV 장치(120)의 관리에 따라, 스토리지 장치(130)는 저장된 원시 데이터를 연산 장치(140)로 제공하고, 연산 장치(140)는 원시 데이터를 처리하고, 연산 장치(140)는 처리된 데이터를 호스트 장치(110)로 제공할 수 있다. The
또 다른 예로서, 가상 머신(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
일부 실시 예들에서, 연산 장치(140)는 데이터의 압축 또는 암호화를 수행할 수 있다. 예를 들어, 가상 머신(VM)으로부터 읽기 요청이 발행되는 경우, 연산 장치(140)는 스토리지 장치(130)로부터 읽기 요청에 대응하는 원시 데이터를 수신하고, 원시 데이터를 압축해제 또는 복호화하고, 압축해제된 또는 복호화된 데이터를 호스트 장치(110)에 제공할 수 있다.In some embodiments,
또 다른 예로서, 가상 머신(VM)으로부터 쓰기 요청이 발행되는 경우, 연산 장치(140)는 호스트 장치(110)로부터 쓰기 요청에 대응하는 원시 데이터를 수신하고, 원시 데이터를 압축 또는 암호화하고, 압축된 또는 암호화된 데이터를 스토리지 장치(130)에 제공할 수 있다.As another example, when a write request is issued from a virtual machine (VM), the
일부 실시 예들에서, 연산 장치(140)는 하드웨어 가속기로 구현될 수 있다. 예를 들어, 연산 장치(140)는 FPGA로 구현될 수 있다. FPGA는 연산 리소스를 제공하는 하드웨어일 수 있다.In some embodiments,
I/O 메모리 관리 유닛(150)은 가상 머신(VM)의 가상 어드레스 및 가상 머신(VM)에 대응하는 실제 머신(즉, 호스트 장치(110))의 실제 어드레스의 매핑 관계를 관리할 수 있다. 예를 들어, 가상 머신(VM)은 호스트 장치(110)의 프로세서에 의해 실행된 소프트웨어로 구현될 수 있고, 가상 머신(VM)이 관리하는 데이터에 대한 가상 어드레스는 호스트 장치(110)의 호스트 메모리에 저장된 데이터에 대한 실제 어드레스에 대응할 수 있다. I/O 메모리 관리 유닛(150)은 가상 어드레스를 대응하는 물리적 어드레스로 변환하거나, 또는 물리적 어드레스를 대응하는 가상 어드레스로 변환할 수 있다.The I/O
일부 실시 예들에서, CSV 장치(120)가 가상 어드레스 및 실제 어드레스의 매핑 관계를 관리하는 어드레스 변환 테이블을 포함하는 경우, I/O 메모리 관리 유닛(150)은 생략될 수 있다. 또는, CSV 장치(120) 내의 어드레스 관리 테이블 및 I/O 메모리 관리 유닛(150)이 가상 어드레스 및 실제 어드레스의 관리를 위해 함께 사용될 수 있다.In some embodiments, when the
PCIe 회로(160)는 호스트 장치(110), CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)과 연결될 수 있다. PCIe 회로(160)는 CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150) 중 임의의 조합에 대해 직접적인 인터페이스 환경을 제공할 수 있다. 예를 들어, 스토리지 장치(130)는 PCIe 회로(160)를 통해 연산 장치(140)와 직접적으로 데이터를 통신할 수 있다.The
상술된 바와 같이, 본 개시에 따르면, CSV 장치(120)는 스토리지 장치(130) 및 연산 장치(140)에게 가상화 환경을 제공한다. CSV 장치(120)는 소프트웨어 모듈이 아니라, 별도의 하드웨어로서 구현되므로, 호스트 장치(110)의 리소스 관리 부담을 감소시킬 수 있다. CSV 장치(120)는 가상 머신(VM)으로부터의 요청을 변환함으로써, 호스트 장치(110), 스토리지 장치(130), 및 연산 장치(140) 중 임의의 조합에 대한 직접적인 통신을 보장할 수 있다.As described above, according to the present disclosure, the
도 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
호스트 측은 호스트 장치(110) 및 호스트 장치(110)에 의해 실행되는 가상 머신(VM)을 포함할 수 있다. 호스트 장치는 CSV 드라이버를 포함할 수 있다. CSV 드라이버는 CSV 장치(120)와의 통신에 필요한 정보를 저장하는 소프트웨어일 수 있다. 호스트 장치(110)는 CSV 드라이버를 실행함으로써, CSV 장치(120)와 통신할 수 있다.The host side may include a
스토리지 측은 CSV 장치(120), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)을 포함할 수 있다.The storage side may include a
CSV 장치(120)는 호스트 장치(110)와 직접적으로 통신할 수 있거나, 또는 I/O 메모리 관리 유닛(150)을 통해 통신할 수 있다. CSV 장치(120)는 SR-IOV(single root input/output virtualization) 어댑터(121) 및 장치 오케스트라(122)를 포함할 수 있다.The
SR-IOV 어댑터(121)는 가상 머신(VM)과의 인터페이스를 제공할 수 있다. SR-IOV 어댑터(121)는 가상 머신(VM)이 별도의 소프트웨어 계층을 거치지 않고, 스토리지 장치(130) 또는 연산 장치(140)로의 액세스를 가능하게 할 수 있다.The SR-
장치 오케스트라(122)는 SR-IOV 어댑터(121)를 통해 가상 머신(VM)을 식별할 수 있다. 장치 오케스트라(122)는 스토리지 장치(130) 및 연산 장치(140)를 식별할 수 있다. 장치 오케스트라(122)는 가상 머신(VM)에 대한 스토리지 장치(130)의 스토리지 리소스 및 연산 장치(140)의 연산 리소스를 할당할 수 있다. The
장치 오케스트라(122)는 가상 머신(VM)으로부터 제공된 읽기 요청에 기초하여, 스토리지 장치(130)로 제공될 리디렉션 요청 및 연산 장치(140)로 제공될 처리 요청을 생성할 수 있다. 예를 들어, 리디렉션 요청은 가상 머신(VM)으로부터 제공된 읽기 요청의 목적지 어드레스를 스토리지 장치(130) 대신 연산 장치(140)로 변경함으로써 구현될 수 있다. 장치 오케스트라(122)는 가상 머신(VM)으로부터 제공된 쓰기 요청에 기초하여, 연산 장치(140)에 제공될 처리 요청 및 스토리지 장치(130)에 제공될 저장 요청을 생성할 수 있다.The
스토리지 장치(130)는 CSV 장치(120) 및 연산 장치(140)와 통신할 수 있다. 스토리지 장치(130)는 CSV 장치(120)로부터의 요청에 따라, PCIe 회로(160)를 통해서, 연산 장치(140)에 데이터를 직접적으로 제공하거나, 또는 연산 장치(140)로부터 처리된 데이터를 직접적으로 수신할 수 있다.The
연산 장치(140)는 CSV 장치(120) 및 스토리지 장치(130)와 통신할 수 있다. 연산 장치(140)는 CSV 장치(120)로부터의 요청에 따라, PCIe 회로(160)를 통해서, 스토리지 장치(130)에 처리된 데이터를 직접적으로 제공하거나, 또는 스토리지 장치(130)로부터 데이터를 직접적으로 수신할 수 있다.The
도 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
스토리지 시스템(100)은 복수의 가상 머신들 중 타겟 가상 머신으로서 가상 머신(VM)을 식별할 수 있다. 스토리지 시스템(100)은 복수의 스토리지 장치들 중 타겟 스토리지 장치로서 스토리지 장치(130)를 식별할 수 있다. 스토리지 시스템(100)은 복수의 연산 장치들 중 타겟 연산 장치로서 연산 장치(140)를 식별할 수 있다. The
스토리지 시스템(100)은 복수의 가상 머신들로부터의 요청들을 처리하기 위해, 복수의 스토리지 장치들의 스토리지 리소스들을 유연하게 할당하고 그리고 복수의 연산 장치들의 연산 리소스들을 유연하게 할당할 수 있다. 가상 머신들의 개수, 스토리지 장치들의 개수, 및 연산 장치들의 개수의 각각이 증가 또는 감소하면, 스토리지 시스템(100)은 변경된 가상 환경에 대해 스토리지 리소스 및 연산 리소스를 재할당할 수 있다.The
호스트 장치(110)는 가상 머신(VM)을 실행할 수 있다. 가상 머신(VM)은 VSQ(Virtual Submission Queue) 및 VCQ(Virtual Completion Queue)를 포함할 수 있다. VSQ는 가상 머신(VM)에 의해 요청된 커맨드가 기입될 메모리일 수 있다. VCQ는 대응하는 VSQ에 기입되었던 커맨드의 처리 완료를 가리키는 컴플리션을 수신하는 메모리일 수 있다. VSQ 및 VCQ는 서로 대응 관계를 가질 수 있다. VSQ 및 VCQ의 가상 어드레스들은 호스트 장치(110)의 호스트 메모리의 일부에 대응할 수 있다.The
호스트 장치(110)는 호스트 메모리를 포함할 수 있다. 스토리지 장치(130)는 버퍼 메모리를 포함할 수 있다. 연산 장치(140)는 버퍼 메모리를 포함할 수 있다. 호스트 장치(110)의 호스트 메모리, 스토리지 장치(130)의 버퍼 메모리, 및 연산 장치(140)의 버퍼 메모리 중 임의의 조합은 PCIe 회로(160)를 통해 직접적으로 데이터를 통신할 수 있다.The
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
CSV 장치(120)는 SR-IOV 어댑터(121) 및 장치 오케스트라(122)를 포함할 수 있다.The
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-
장치 오케스트라(122)는 SR-IOV 어댑터(121), 스토리지 장치(130), 연산 장치(140), 및 I/O 메모리 관리 유닛(150)과 통신할 수 있다. 장치 오케스트라(122)는 스토리지 인터페이스 회로, 연산 장치 인터페이스 회로, 및 리소스 관리자를 포함할 수 있다.
스토리지 인터페이스 회로는 리소스 관리자 및 스토리지 장치(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
연산 장치 인터페이스 회로는 리소스 관리자 및 연산 장치(140) 사이의 인터페이스를 제공할 수 있다.The computing device interface circuitry may provide an interface between the resource manager and the
리소스 관리자는 SR-IOV 어댑터(121)를 통해 가상 머신(VM)으로부터의 요청을 수신할 수 있다. 리소스 관리자는 스토리지 인터페이스를 통해 스토리지 장치(130)와 통신할 수 있다. 리소스 관리자는 연산 장치 인터페이스 회로를 통해 연산 장치(140)와 통신할 수 있다.The resource manager may receive a request from a virtual machine (VM) through the SR-
리소스 관리자는 가상 머신(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
리소스 관리자는 복수의 가상 머신(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
일부 실시 예들에서, 리소스 관리자는 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
커맨드를 처리한 후, 스토리지 장치(130)는 CQ에 컴플리션을 기입할 수 있다. 스토리지 장치(130)는 인터럽트를 리소스 관리자에 제공할 수 있다. 리소스 관리자는 CQ에 기입된 컴플리션을 페치하고, 페치된 컴플리션에 기초하여 레이어가 변경된 컴플리션을 VCQ에 기입할 수 있다. 리소스 관리자는 도어벨을 스토리지 장치(130)에 제공할 수 있다. 리소스 관리자는 인터럽트를 호스트 장치(110)에 제공할 수 있다. 호스트 장치(110)는 VCQ에 기입된 컴플리션을 처리할 수 있다. 호스트 장치(110)는 도어벨을 리소스 관리자에게 제공할 수 있다.After processing the command, the
일부 실시 예들에서, 리소스 관리자는 어드레스 변환 테이블을 포함할 수 있다. 어드레스 변환 테이블은 가상 어드레스 및 실제 어드레스의 매핑 관계를 관리할 수 있다. 리소스 관리자는 어드레스 변환 테이블을 참조하여, 가상 어드레스를 실제 어드레스로 변환하거나, 또는 실제 어드레스를 가상 어드레스로 변환할 수 있다. 이 경우, 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
일부 실시 예들에서, 리소스 관리자는 내부-연산 장치(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
도 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
일부 실시 예들에서, 커맨드 포맷은 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
본 개시의 일부 실시 예들에 따르면, CSV 장치(120)는 커맨드의 리저브드 필드를 변경함으로써, 스토리지 장치(130) 또는 연산 장치(140)에 의해 처리 가능한 요청을 생성할 수 있다. 리저브드 필드는 본 개시의 실시 예에 따라 제안된 CSV 커맨드를 포함할 수 있다. 리저브드 필드에 대한 보다 상세한 설명은 도 5와 함께 후술될 것이다.According to some embodiments of the present disclosure, the
도 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
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
소스 어드레스는 처리된 데이터를 요청하는 소스의 위치를 가리킬 수 있다. 목적지 어드레스는 처리된 데이터를 수신하는 목적지의 위치를 가리킬 수 있다.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
또 다른 예로서, 가상 머신(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
일부 실시 예들에서, 스토리지 장치(130)의 버퍼 메모리의 위치는 도 4의 커맨드의 SLBA에 의해 관리될 수 있다. 예를 들어, 가상 머신(VM)으로부터 읽기 요청 또는 쓰기 요청이 발행되는 경우, 도 4의 호스트 장치(110)의 커맨드의 SLBA는 스토리지 장치(130)의 버퍼 메모리를 가리킬 수 있다.In some embodiments, the location of the buffer memory of the
소스 사이즈는 소스 어드레스에 따라 전송될 데이터의 크기를 가리킬 수 있다.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
물리적 장치 식별자는 스토리지 장치(130)의 인덱스 및 연산 장치(140)의 인덱스를 가리킬 수 있다. 예를 들어, 스토리지 시스템(100)은 복수의 스토리지 장치들 및 복수의 연산 장치들을 포함할 수 있다. 스토리지 시스템(100)은 물리적 장치 식별자에 기재된 인덱스들을 참조하여, 복수의 스토리지 장치들 중 타겟 스토리지 장치로서 스토리지 장치(130)를 식별할 수 있고, 그리고 복수의 연산 장치들 중 타겟 연산 장치로서 연산 장치(140)를 식별할 수 있다.The physical device identifier may indicate an index of the
타입은 스토리지 장치(130)로의 액세스가 필요한지 여부를 가리킬 수 있다.The type may indicate whether access to the
직접 파라미터는 연산 장치의 처리 동작에 사용되는 정보가 저장된 호스트 장치(110)의 호스트 메모리 내의 위치를 가리킬 수 있다. 예를 들어, 직접 파라미터는 압축, 압축 해제, 암호화, 복호화 등의 처리 동작에 사용되는 함수, 알고리즘, 해시 함수, 키-값 등과 같은 파라미터가 저장된 호스트 메모리의 위치를 가리킬 수 있다.The direct parameter may indicate a location in the host memory of the
파일 파라미터는 연산 장치의 처리 동작에 사용되는 복사된 정보가 저장된 스토리지 장치(130) 내의 위치를 가리킬 수 있다. 예를 들어, 파일 파라미터는 압축, 압축 해제, 암호화, 복호화 등의 처리 동작에 사용되는 함수, 알고리즘, 해시 함수, 키-값 등과 같은 파라미터가 복사된 스토리지 장치(130) 내의 위치를 가리킬 수 있다.The file parameter may indicate a location in the
직접 파라미터 포인터는 직접 파라미터의 전송에 사용되는 포인터를 저장하는 필드일 수 있다.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
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
일부 실시 예들에서, 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
S151 단계에서, 가상화 장치(VD)의 CSV 장치(120)는 읽기 데이터의 처리 요청을 연산 장치(140)에게 제공할 수 있다. 이 때, 읽기 데이터의 처리 요청은 연산 장치(140)가 스토리지 장치(130)로부터 수신된 읽기 데이터를 처리하는 것 그리고 연산 장치(140)가 처리된 읽기 데이터를 호스트 장치(110)에게 제공하는 것을 가리킬 수 있다.In step S151 , the
다시 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
S161 단계에서, 가상화 장치(VD)의 CSV 장치(120)는 처리된 쓰기 데이터의 저장 요청을 스토리지 장치(130)에게 제공할 수 있다. 이 때, 저장 요청은 스토리지 장치(130)가 연산 장치(140)로부터 처리된 쓰기 데이터를 수신하는 것 그리고 스토리지 장치(130)가 처리된 쓰기 데이터를 저장하는 것을 가리킬 수 있다.In step S161 , the
다시 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
도 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
본 개시의 일부 실시 예들에 따르면, 스토리지 시스템(100)은 가상 머신(VM)으로부터의 요청에 따른 읽기 동작을 수행할 수 있다. 읽기 동작은 제1 내지 제7 동작들(①~⑦)을 포함할 수 있다.According to some embodiments of the present disclosure, the
제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
제2 동작(②)에서, CSV 장치(120)는 제1 요청(RQ1)에 기초하여 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)를 획득할 수 있다. 제3 어드레스(ADD3)는 가상 머신(VM)에 대응하는 실제 머신의 위치(즉, 호스트 장치(110)의 호스트 메모리 내의 위치)를 가리킬 수 있다. 제4 어드레스(ADD4)는 스토리지 장치(130)의 원시 데이터(RDT)를 처리할 연산 장치(140)의 버퍼 메모리 내의 위치를 가리킬 수 있다.In the second operation (②), the
제3 동작(③)에서, CSV 장치(120)는 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 리디렉션을 가리키는 제2 요청(RQ2)을 스토리지 장치(130)에게 제공할 수 있다. 리디렉션은 스토리지 장치(130)에 저장된 데이터를 PCIe 회로(160)를 통해 연산 장치(140)에 제공하는 것을 가리킬 수 있다.In the third operation (③), the
제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
제5 동작(⑤)에서, CSV 장치(120)는 제3 어드레스(ADD3), 제4 어드레스(ADD4), 및 처리 동작을 가리키는 제3 요청(RQ3)을 연산 장치(140)에게 제공할 수 있다. 처리 동작은 연산 장치(140)가 원시 데이터(RDT)를 처리(예를 들어, 압축 해제, 복호화 등)하는 것을 가리킬 수 있다.In the fifth operation (⑤), the
제6 동작(⑥)에서, 연산 장치(140)는 제3 요청(RQ3)에 기초하여 원시 데이터(RDT)를 처리함으로써, 처리된 데이터(PDT)를 생성할 수 있다. 처리된 데이터(PDT)는 압축 해제된 데이터 또는 복호화된 데이터일 수 있다.In the sixth operation (⑥), the
제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
도 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
본 개시의 일부 실시 예들에 따르면, 스토리지 시스템(100)은 가상 머신(VM)으로부터의 요청에 따른 쓰기 동작을 수행할 수 있다. 쓰기 동작은 제1 내지 제8 동작들(①~⑧)을 포함할 수 있다.According to some embodiments of the present disclosure, the
제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
제2 동작(②)에서, CSV 장치(120)는 제1 요청(RQ1)에 기초하여 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)를 획득할 수 있다. 제3 어드레스(ADD3)는 가상 머신(VM)에 대응하는 실제 머신의 위치(즉, 호스트 장치(110)의 호스트 메모리 내의 위치)를 가리킬 수 있다. 제4 어드레스(ADD4)는 가상 머신(VM)의 원시 데이터(RDT)를 처리할 연산 장치(140)의 버퍼 메모리 내의 위치를 가리킬 수 있다.In the second operation (②), the
제3 동작(③)에서, CSV 장치(120)는 제3 어드레스(ADD3), 제4 어드레스(ADD4), 및 처리 동작을 가리키는 제2 요청(RQ2)을 연산 장치(140)에게 제공할 수 있다. 처리 동작은 연산 장치(140)가 호스트 장치(110)로부터 원시 데이터(RDT)를 수신하는 것 그리고 연산 장치(140)가 원시 데이터(RDT)를 처리(예를 들어, 압축, 암호화 등)하는 것을 가리킬 수 있다.In the
제4 동작(④)에서, 연산 장치(140)는 제2 요청(RQ2)에 기초하여, 호스트 장치(110)로부터 원시 데이터(RDT)를 수신할 수 있다. 예를 들어, 연산 장치(140)는 제2 요청(RQ2)의 제3 어드레스(ADD3) 및 제4 어드레스(ADD4)에 기초하여, PCIe 회로(160)를 통해서 호스트 장치(110)에 대한 DMA 통신을 수행할 수 있다.In the
제5 동작(⑤)에서, 연산 장치(140)는 제2 요청(RQ2)에 기초하여 원시 데이터(RDT)를 처리함으로써, 처리된 데이터(PDT)를 생성할 수 있다. 처리된 데이터(PDT)는 압축된 데이터 또는 암호화된 데이터일 수 있다. 연산 장치(140)는 처리된 데이터(PDT)를 생성한 후, 완료 알림을 CSV 장치(120)에게 제공할 수 있다.In a fifth operation (⑤), the
제6 동작(⑥)에서, CSV 장치(120)는 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 저장 동작을 가리키는 제3 요청(RQ3)을 스토리지 장치(130)에게 제공할 수 있다. 저장 동작은 스토리지 장치(130)가 연산 장치(140)로부터 처리된 데이터(PDT)를 수신하는 것 그리고 스토리지 장치(130)가 처리된 데이터(PDT)를 저장하는 것을 가리킬 수 있다.In a sixth operation (⑥), the
제7 동작(⑦)에서, 스토리지 장치(130)는 제3 요청(RQ3)에 기초하여, 연산 장치(140)로부터 처리된 데이터(PDT)를 수신할 수 있다. 예를 들어, 스토리지 장치(130)는 제3 요청(RQ3)의 제2 어드레스(ADD2) 및 제4 어드레스(ADD4)에 기초하여, PCIe 회로(160)를 통해서 연산 장치(140)에 대한 DMA 통신을 수행할 수 있다.In a seventh operation ( ⑦ ), the
제8 동작(⑧)에서, 스토리지 장치(130)는 제3 요청(RQ3)에 기초하여 처리된 데이터(PDT)를 저장할 수 있다. 스토리지 장치(130)는 처리된 데이터(PDT)를 저장한 후, 컴플리션을 CSV 장치(120)에게 제공할 수 있다. CSV 장치(120)는 스토리지 장치(130)로부터 수신된 컴플리션에 기초하여, 가상 머신(VM)에게 컴플리션을 제공할 수 있다.In an eighth operation (⑧), the
도 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
호스트 장치(110), 스토리지 장치(130), 및 연산 장치(140) 중 임의의 조합은 PCIe 통신을 통해서, 직접적으로 데이터를 통신(즉, DMA 통신을 수행)할 수 있다. 본 개시의 이해를 돕기 위해, 도 9는 연산 장치(140)가 소스로서 호스트 장치(110) 또는 스토리지 장치(130)에게 처리된 데이터(PDT)를 제공하는 동작이 설명되지만, 호스트 장치(110) 및 스토리지 장치(130)도 후술되는 것과 유사하게 소스로서 동작할 수 있다.Any combination of the
CSV 장치(120)는 연산 장치(140)에게 소스 어드레스 및 목적지 어드레스를 제공할 수 있다. 소스 어드레스는 연산 장치(140)의 버퍼 메모리의 위치를 가리키는 제4 어드레스(ADD4)일 수 있다. 목적지 어드레스는 연산 장치(140)와 PCIe 회로(160)를 통해 통신할 수 있는 호스트 장치(110) 또는 스토리지 장치(130)를 가리킬 수 있다.The
예를 들어, 범위 '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
또 다른 예로서, 범위 '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
도 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
스토리지 시스템(100)은 가상 머신 세트, 스토리지 장치 세트, 연산 장치 세트, SR-IOV 어댑터(121), 및 장치 오케스트라(122)를 포함할 수 있다.The
가상 머신 세트는 제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-
스토리지 인터페이스 회로는 스토리지 장치 세트와 통신할 수 있다. 스토리지 인터페이스 회로는 제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
도 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
스토리지 시스템(200)은 가상 머신(VM)으로부터의 요청을 관리할 수 있다. 스토리지 시스템(200)은 호스트 장치(210), CSV 장치(220), 스토리지 장치(230), 및 I/O 메모리 관리 유닛(250)을 포함할 수 있다. CSV 장치(220)는 SR-IOV 어댑터(221) 및 장치 오케스트라(222)를 포함할 수 있다. The
가상 머신(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
장치 오케스트라(222)는 리소스 관리자, 스토리지 인터페이스 회로, 및 내부-연산 장치를 포함할 수 있다. 내부-연산 장치는 가속기 및 버퍼 메모리를 포함할 수 있다. 가속기는 연산 리소스를 제공할 수 있다. 예를 들어, 가속기는 압축, 압축 해제, 암호화, 및 복호화 등과 같은 연산들을 수행할 수 있다. 내부-연산 장치의 버퍼 메모리는 PCIe 회로를 통해 스토리지 장치(230)의 버퍼 메모리 및 호스트 장치(210)의 호스트 메모리와 직접적으로 통신할 수 있다. 리소스 관리자는 가상 머신(VM)에게 스토리지 장치(230)의 스토리지 리소스 및 내부-연산 장치의 연산 리소스를 할당할 수 있다. 즉, 내부-연산 장치는 도 3의 연산 장치(140)와 유사한 기능을 수행할 수 있다.
일부 실시 예들에서, CSV 장치(220)는 하드웨어 가속기로 구현될 수 있다. 예를 들어, CSV 장치(220)는 FPGA로 구현될 수 있다. FPGA는 연산 리소스를 제공하고 그리고 가상 머신(VM)을 위한 스토리지 리소스 및 연산 리소스를 관리하는 하드웨어일 수 있다.In some embodiments,
도 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
가상 머신(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),
장치 오케스트라(322)는 리소스 관리자, 내부-연산 장치, 스토리지 인터페이스 회로, 및 연산 장치 인터페이스 회로를 포함할 수 있다.
내부-연산 장치는 가속기 및 버퍼 메모리를 포함할 수 있다. 가속기는 연산 리소스를 제공할 수 있다. 연산 장치(340)는 연산 리소스를 제공할 수 있다. 리소스 관리자는 내부-연산 장치 및 연산 장치(340)를 종합적으로 관리하여, 가상 머신(VM)에게 연산 리소스를 할당할 수 있다.The inter-computing unit may include an accelerator and a buffer memory. Accelerators may provide computational resources. The
도 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
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
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
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
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
S240 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 제2 요청(RQ2)에 기초하여 원시 데이터를 연산 장치(140)에게 제공할 수 있다. 원시 데이터는 압축된 데이터 또는 암호화된 데이터일 수 있다.In operation S240 , the virtualization device VD may provide raw data to the
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
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
S260 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 원시 데이터를 처리할 수 있다. 예를 들어, 연산 장치(140)는 원시 데이터를 압축 해제하거나 또는 복호화 함으로써 처리된 데이터를 생성할 수 있다. 처리된 데이터는 압축 해제된 데이터 또는 복호화된 데이터일 수 있다.In step S260 , the virtualization device VD may process raw data by the
S270 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 제3 요청(RQ3)에 기초하여 처리된 데이터를 호스트 장치(110)에게 제공할 수 있다.In step S270 , the virtualization device VD may provide data processed by the
S280 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 완료 알림을 CSV 장치(120)에게 제공할 수 있다.In step S280 , the virtualization device (VD) may provide a completion notification to the
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
도 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
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
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
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
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
S340 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 제2 요청(RQ2)에 기초하여 호스트 장치(110)로부터 원시 데이터를 수신할 수 있다. 원시 데이터는 압축되지 않은 데이터 또는 암호화되지 않은 데이터일 수 있다.In step S340 , the virtualization device VD may receive raw data from the
S350 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 원시 데이터를 처리할 수 있다. 예를 들어, 연산 장치(140)는 원시 데이터를 압축하거나 또는 암호화함으로써 처리된 데이터를 생성할 수 있다. 처리된 데이터는 압축된 데이터 또는 암호화된 데이터일 수 있다.In step S350 , the virtualization device VD may process raw data by the
S351 단계에서, 가상화 장치(VD)는 연산 장치(140)에 의해, 완료 알림을 CSV 장치(120)에게 제공할 수 있다.In step S351 , the virtualization device (VD) may provide a completion notification to the
S360 단계에서, 가상화 장치(VD)는 CSV 장치(120)에 의해, 완료 알림에 응답하여, 제2 어드레스(ADD2), 제4 어드레스(ADD4), 및 저장 동작을 가리키는 제3 요청(RQ3)을 스토리지 장치(130)에게 제공할 수 있다.In step S360, the virtualization device VD sends, by the
S370 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 제3 요청(RQ3)에 기초하여 연산 장치(140)로부터 처리된 데이터를 수신할 수 있다.In operation S370 , the virtualization device VD may receive data processed by the
S380 단계에서, 가상화 장치(VD)는 스토리지 장치(130)에 의해, 처리된 데이터를 저장할 수 있다.In step S380 , the virtualization device VD may store data processed by the
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
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
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.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 장치에 의해, 상기 호스트 장치로부터, 상기 가상 머신의 제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.
상기 가상화 장치는 상기 호스트 장치, 상기 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 요청, 상기 제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.
상기 리저브드 필드는:
상기 연산 장치의 상기 처리 동작의 종류를 가리키는 연산자 체인 식별자(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.
상기 스토리지 장치 내의 상기 원시 데이터는 압축된 데이터 또는 암호화된 데이터이고, 그리고
상기 연산 장치에 의한 상기 처리된 데이터는 압축해제된 데이터 또는 복호화된 데이터인 방법.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.
상기 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.
상기 스토리지 장치에 의해, 상기 연산 장치에게, 상기 제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.
상기 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.
상기 가상화 장치는 상기 호스트 장치 및 상기 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.
상기 가상화 장치는 복수의 가상 머신들 중 타겟 가상 머신으로서 상기 가상 머신을 식별하고, 복수의 스토리지 장치들 중 타겟 스토리지 장치로서 상기 스토리지 장치를 식별하고, 그리고 복수의 연산 장치들 중 타겟 연산 장치로서 상기 연산 장치를 식별하도록 구성된 방법.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.
상기 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.
상기 연산 장치는 상기 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 장치에 의해, 상기 호스트 장치로부터, 상기 가상 머신의 제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.
상기 가상화 장치는 상기 호스트 장치, 상기 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.
상기 제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.
상기 리저브드 필드는:
상기 연산 장치의 상기 처리 동작의 종류를 가리키는 연산자 체인 식별자(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.
상기 호스트 장치의 원시 데이터는 압축되지 않은 데이터 또는 암호화되지 않은 데이터이고, 그리고
상기 연산 장치에 의한 상기 처리된 데이터는 압축된 데이터 또는 암호화된 데이터인 방법.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.
상기 연산 장치에 의해, 상기 제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 데이터를 처리하고, 그리고 호스트 장치에 의해 실행되는 가상 머신의 제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.
상기 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.
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)
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 |
-
2022
- 2022-07-05 KR KR1020220082341A patent/KR102532100B1/en active IP Right Grant
Patent Citations (3)
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)
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 |