가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
STORAGE VIRTUALIZATION DEVICE SUPPORTING A VIRTUAL MACHINE, OPERATION METHOD THEREOF, AND OPERATION METHOD OF SYSTEM HAVING THE SAME
특허 요약
본 개시의 일 실시 예에 따른 스토리지 가상화 장치는 호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)를 포함하고, 그리고 호스트 장치에 의해 실행되는 제1 가상 머신을 지원한다. 스토리지 가상화 장치의 동작 방법은, 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치하는 단계, 페치된 제1 커맨드를 제1 SQ로 분배하는 단계, 제1 SQ의 제1 커맨드를 스토리지 장치 세트로 제공하는 단계, 스토리지 장치 세트로부터 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션을 수신하는 단계로서, 제1 컴플리션은 제1 CQ에 기입되는 것, 제1 CQ의 제1 컴플리션을 가상화 계층에 분배하는 단계, 및 분배된 제1 컴플리션을 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하는 단계를 포함한다.
청구항
번호청구항
15

제 1 항에 있어서,상기 스토리지 가상화 장치는 FPGA(field programmable gate array)로 구현되는 방법.

1

호스트 장치 및 스토리지 장치 세트와 통신하고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)와 제2 SQ 및 제2 CQ를 포함하고, 그리고 상기 호스트 장치에 의해 실행되는 제1 가상 머신 및 제2 가상 머신을 지원하는 스토리지 가상화 장치의 동작 방법에 있어서:상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하거나 상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 패치하는 단계;페치된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 제1 SQ 및 상기 제2 SQ 중 적어도 하나로 분배하는 단계;상기 제1 SQ 또는 상기 제2 SQ의 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트의 제1 스토리지 장치 및 제2 스토리지 장치 중 하나로 제공하는 단계;상기 제1 스토리지 장치 및 상기 제2 스토리지 장치 중 하나로부터 상기 제1 커맨드 또는 상기 제2 커맨드가 처리된 것을 가리키는 제1 컴플리션 또는 제2 컴플리션을 수신하여 상기 제1 CQ 또는 상기 제2 CQ에 기입하는 단계;상기 제1 CQ 또는 상기 제2 CQ의 상기 제1 컴플리션 또는 상기 제2 컴플리션을 가상화 계층에 분배하는 단계; 및상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하거나 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하는 단계를 포함하고, 상기 제1 SQ 및 상기 제1 CQ는 상기 제1 스토리지 장치에 대응되고, 상기 제2 SQ 및 상기 제2 CQ는 상기 제2 스토리지 장치에 대응되는 방법.

2

삭제

3

제 1 항에 있어서,상기 제1 SQ 및 상기 제1 CQ은 적어도 둘 이상의 쌍으로 구비되고, 상기 제2 SQ 및 상기 제2 CQ는 적어도 둘 이상의 쌍으로 구비되는 방법.

4

제 3 항에 있어서,적어도 둘 이상의 상기 제1 SQ 및 상기 제1 CQ의 쌍 중 적어도 한 쌍의 제1 SQ 및 제1 CQ는 상기 제1 가상 머신에 대응되고, 적어도 다른 한 쌍의 제1 SQ 및 제1 CQ는 상기 제1 가상 머신 및 상기 제2 가상 머신에 공통되어 대응되는 방법.

5

제 4 항에 있어서,적어도 둘 이상의 상기 제2 SQ 및 상기 제2 CQ 쌍 중 적어도 한 쌍의 제2 SQ 및 제2 CQ는 상기 제2 가상 머신에 대응되는 방법.

6

제 4 항에 있어서,적어도 둘 이상의 상기 제2 SQ 및 상기 제2 CQ 쌍 중 적어도 한 쌍의 제2 SQ 및 제2 CQ는 상기 제2 가상 머신에 대응되고, 적어도 다른 한 쌍의 제2 SQ 및 제2 CQ는 상기 제1 가상 머신 및 상기 제2 가상 머신에 공통되어 대응되는 방법.

7

삭제

8

제 1 항에 있어서,상기 제1 가상 머신의 제1 VSQ의 제1 커맨드 및 상기 제2 가상 머신의 제1 VSQ의 제2 커맨드 중 적어도 하나를 페치하는 단계는:상기 호스트 장치로부터 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 가리키는 제1 도어벨(doorbell)을 수신하는 단계;상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계; 및상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.

9

제 8 항에 있어서,상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고, 상기 제1 도어벨에 기초하여 상기 제1 VSQ의 상기 제1 커맨드의 제1 요청을 상기 호스트 장치로 출력하는 단계는:상기 I/O 메모리 관리 유닛을 통해, 상기 제1 VSQ의 상기 제1 커맨드의 상기 제1 요청에 대응하는 제1 가상 어드레스가 제1 물리적 어드레스로 변환되고, 상기 변환된 제1 물리적 어드레스 및 상기 제1 도어벨에 기초하여, 상기 제1 VSQ의 상기 제1 커맨드의 상기 제1 요청을 상기 호스트 장치로 출력하는 단계를 포함하고, 그리고상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계는:상기 I/O 메모리 관리 유닛에 의한 어드레스 변환 없이, 상기 호스트 장치로부터 상기 제1 가상 머신의 상기 제1 VSQ의 상기 제1 커맨드를 페치하는 단계를 포함하는 방법.

10

제 1 항에 있어서,상기 스토리지 가상화 장치는 I/O(input/output) 메모리 관리 유닛과 더 통신하고, 그리고상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하거나 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 상기 제2 VCQ에 기입하는 단계는:상기 I/O 메모리 관리 유닛을 통해, 상기 분배된 제1 컴플리션에 대응하는 제2 가상 어드레스가 제2 물리적 어드레스로 변환되고, 상기 변환된 제2 물리적 어드레스에 기초하여, 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 상기 제1 VCQ에 기입하는 단계를 포함하는 방법.

11

제 1 항에 있어서,페치된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 제1 SQ 및 상기 제2 SQ 중 적어도 하나로 분배하는 단계는:상기 페치된 제1 커맨드에 포함된, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 제3 가상 어드레스를 제3 물리적 어드레스로 변환하는 단계를 포함하는 방법.

12

제 1 항에 있어서,상기 제1 SQ 또는 상기 제2 SQ의 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트로 제공하는 단계는:상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 SQ에 상기 제1 커맨드가 기입된 것을 가리키는 제2 도어벨을 출력하는 단계;상기 제1 스토리지 장치로부터 상기 제1 SQ의 상기 제1 커맨드의 제2 요청을 수신하는 단계; 및상기 제2 요청에 기초하여 상기 제1 SQ의 상기 제1 커맨드를 포함하는 응답을 상기 제1 스토리지 장치로 출력하는 단계를 포함하는 방법.

13

제 1 항에 있어서,상기 호스트 장치로부터 상기 제1 VCQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제3 도어벨을 수신하는 단계를 더 포함하는 방법.

14

제 13 항에 있어서,상기 제3 도어벨에 기초하여, 상기 스토리지 장치 세트의 제1 스토리지 장치의 도어벨 레지스터로, 상기 제1 CQ에 기입된 상기 제1 컴플리션이 처리된 것을 가리키는 제4 도어벨을 출력하는 단계를 더 포함하는 방법.

16

호스트 장치 및 스토리지 장치 세트와 통신하고, 상기 호스트 장치에 의해 실행되는 제1 가상 머신 및 제2 가상 머신을 지원하는 스토리지 가상화 장치에 있어서:상기 호스트 장치와 통신하고, 상기 제1 가상 머신 및 상기 제2 가상 머신과의 인터페이스를 제공하도록 구성된 SR-IOV(single root input/output virtualization) 어댑터;상기 제1 가상 머신의 제1 VSQ(virtual submission queue)의 제1 커맨드를 페치(fetch)하도록 구성된 제1 스토리지 가상화 코어 및 상기 제2 가상 머신의 제2 VSQ의 제2 커맨드를 페치하도록 구성된 제2 스토리지 가상화 코어;상기 제1 가상 머신 또는 상기 제2 가상 머신과 상기 스토리지 장치 세트 사이의 매핑 정보를 포함하는 개재(interposition) 계층; 및상기 스토리지 장치 세트와 통신하도록 구성되고, 제1 SQ(submission queue) 및 제1 CQ(completion queue)와 제2 SQ 및 제2 CQ를 포함하는 스토리지 인터페이스 회로를 포함하되,상기 스토리지 인터페이스 회로는:상기 제1 스토리지 가상화 코어 또는 상기 제2 스토리지 가상화 코어로부터 상기 개재 계층을 통해 상기 제1 SQ 또는 상기 제2 SQ로 분배된 상기 제1 커맨드 또는 상기 제2 커맨드를 상기 스토리지 장치 세트의 제1 스토리지 장치 및 제2 스토리지 장치 중 하나로 제공하고;상기 제1 스토리지 장치 및 상기 제2 스토리지 장치 중 하나로부터 상기 제1 커맨드가 처리된 것을 가리키는 제1 컴플리션 또는 상기 제2 커맨드가 처리된 것을 가리키는 제2 컴플리션을 수신하여, 상기 제1 CQ 또는 상기 제2 CQ에 기입하고; 그리고상기 개재 계층을 통해 상기 제1 CQ 또는 상기 제2 CQ의 상기 제1 컴플리션또는 상기 제2 컴플리션을 가상화 계층에 분배하도록 더 구성되고, 그리고상기 제1 스토리지 가상화 코어는 상기 분배된 제1 컴플리션을 상기 제1 가상 머신의 제1 VCQ(virtual completion queue)에 기입하고 상기 제2 스토리지 가상화 코어는 상기 분배된 제2 컴플리션을 상기 제2 가상 머신의 제2 VCQ에 기입하도록 더 구성된 스토리지 가상화 장치.

17

제 16 항에 있어서,상기 호스트 장치로부터 상기 SR-IOV 어댑터를 통해 상기 제1 커맨드에 대응하는 제1 도어벨을 수신하고, 그리고 상기 제1 VSQ에 상기 제1 커맨드가 기입된 것을 상기 제1 스토리지 가상화 코어에게 알리도록 구성된 도어벨 레지스터;상기 제1 스토리지 가상화 코어와 통신하고, 상기 제1 가상 머신의 DMA(direct memory access) 버퍼의 가상 어드레스 및 상기 호스트 장치에 대응하는 물리적 어드레스 간의 매핑 정보를 포함하는 테이블; 및상기 호스트 장치 및 상기 스토리지 장치 세트 사이의 상기 제1 커맨드의 처리를 지원하는 DMA 엔진을 더 포함하는 스토리지 가상화 장치.

18

삭제

19

복수의 가상 머신을 실행하는 호스트 장치, 각각 상기 복수의 가상 머신 중 대응되는 가상 머신을 지원하고 그리고 SQ(submission queue) 및 CQ(completion queue)를 포함하는 복수의 스토리지 가상화 장치, 및 상기 스토리지 가상화 장치와 통신하는 스토리지 장치 세트를 포함하는 스토리지 시스템의 동작 방법에 있어서:상기 호스트 장치에 의해, 상기 가상 머신의 VSQ(virtual submission queue)에 커맨드가 기입된 것을 가리키는 도어벨을 생성하는 단계;상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계;상기 스토리지 가상화 장치에 의해, 상기 페치된 커맨드를 상기 SQ로 분배하는 단계;상기 스토리지 가상화 장치에 의해, 상기 SQ의 상기 커맨드를 상기 스토리지 장치 세트로 제공하는 단계;상기 스토리지 장치 세트 및 상기 호스트 장치에 의해, 상기 커맨드를 처리하는 단계;상기 스토리지 장치 세트에 의해, 상기 커맨드가 처리된 것을 가리키는 컴플리션을 상기 CQ에 기입하는 단계;상기 스토리지 가상화 장치에 의해, 상기 CQ의 상기 컴플리션을 가상화 계층에 분배하는 단계; 및상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 VCQ(virtual completion queue)에 기입하는 단계를 포함하고, 상기 SQ 및 상기 CQ는, 상기 스토리지 장치 세트의 복수의 스토리지 장치 중 하나에 대응되는 방법.

20

제 19 항에 있어서,상기 스토리지 시스템은 상기 호스트 장치 및 상기 스토리지 가상화 장치와 통신하는 I/O(input/output) 메모리 관리 유닛을 더 포함하고,상기 스토리지 가상화 장치에 의해, 상기 가상 머신의 상기 VSQ의 상기 커맨드를 페치하는 단계는:상기 스토리지 가상화 장치에 의해, 상기 도어벨에 기초하여 상기 VSQ의 상기 커맨드의 요청을 생성하는 단계;상기 I/O 메모리 관리 유닛에 의해, 상기 커맨드의 상기 요청에 대응하는 제1 가상 어드레스를 제1 물리적 어드레스로 변환하는 단계; 및상기 호스트 장치에 의해, 상기 제1 물리적 어드레스 및 상기 요청에 기초하여, 상기 VSQ의 상기 커맨드를 상기 스토리지 가상화 장치로 제공하는 단계를 포함하고, 그리고상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 가상 머신의 상기 VCQ에 기입하는 단계는:상기 스토리지 가상화 장치에 의해, 상기 분배된 컴플리션을 상기 I/O 메모리 관리 유닛으로 제공하는 단계;상기 I/O 메모리 관리 유닛에 의해, 상기 분배된 컴플리션에 대응하는 제2 가상 어드레스를 제2 물리적 어드레스로 변환하는 단계; 및상기 호스트 장치에 의해, 상기 제2 물리적 어드레스에 기초하여 상기 분배된 컴플리션을 상기 VCQ에 저장하는 단계를 포함하는 방법.