일반적으로 아래의 Wiki를 보면 알겠지만, Hypervisor의 구성에 대한 자세한 설명이 되어 있다.
Hypervisor의 기능을 간단히 설명을 하면 가상의 CPU기능을 제공하여 다양한 OS 사용할 수 있는 선택기능을 제공해주며,
이와 더불어 이 다양한 OS와 통신이 가능한 Interface를 만들어주는 interface를 제공을 해주고 있다. (물론 전가상화 보다는 반가상화를 이용하여 제공)
그래서 가상화를 이용한다면 더불어 발생하는 것이 CPU의 종속이 아니라 이식성이 높은 장점을 가지게 되어질 것이다.
현재 부각이 되는 이유는 점점 CPU 성능이 좋아지기 때문에, 남는 자원을 Hypervisor를 이용하여 다른 별도의 OS로 사용하고 이와 더불어 통신을 하고 사용하는 기술이 대두되고 있다.
- Hypervisor 의 기본사용 Model 종류
https://en.wikipedia.org/wiki/Hypervisor |
- TYPE-1 (native or bare-metal Hyperviors)
물론 더불어 이들 OS간에 통신도 Hypervisior 를 통해 가능해야 완벽하겠다.
이런 구성은 아직 잘 보지를 못해 뭐라고 말을 못하겠다.
- TYPE-2 (Hosted Hypervisors)
대표적인 동작 방식이 Window에서 동작하는 VirtualBox or VMware가 있을 것이다.
현재 이와 관련된 Hypervisor는 많기 때문에 아래의 Link에서도 다 확인이 가능하며 무료 Version 인 Virtual box를 설치해보면 알 것이다.
현재 이와 관련된 Hypervisor는 많기 때문에 아래의 Link에서도 다 확인이 가능하며 무료 Version 인 Virtual box를 설치해보면 알 것이다.
Hypervisor 관련자료 및 가상화
https://en.wikipedia.org/wiki/Hypervisor
https://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4%EC%A0%80
https://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4%EC%A0%80
1.1 가상화와 종류(Virtualization)
Hypervisor에서는 제공하는 가상화라는 의미를 좀 자세히 알아보도록 하자.
Hypervisor or VMM(Virtual Machine Monitor)일단 가상의 CPU를 만들어야 하며 이와 더불하드웨어의 어느 정도까지를 어떻게 만들 것인지 정해야한다.
이를 Hypervisor에서 말하고 있는 가상화이다.
이를 두고 가상화하는 방식을 두가지 방법으로 나누고 있다.
- 전가상화(Full virtualization)
- 반가상화(Paravirtualization)
https://en.wikipedia.org/wiki/Virtualization
https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81%ED%99%94
https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81%ED%99%94
- 전가상화(Full virtualization)
하지만 문제발생이 되는 부분이 있다고하며, Hardware 구성변경이 될 경우 이에 대한 문제가 발생이 되는 것이다.
- 반가상화(Paravirtualization)
왜냐하면 CPU는 동일할 수 있지만 관련 환경 Hardware device들은 다르기 때문이다.
이와 같은 기능을 제공하기에 이식성이 높고 다양한 Hardware를 제공하는 것이 장점일수는 있지만,
상위 OS와 Hypervisor는 가상화가 되지 않는 부분을 어떻게 해야하며, 다른 OS와 통신하는 방법이 관것일 것이다.
TYPE-1 모델일 경우 봐도 구조상 반가상화하는 것이 맞을 듯 싶다.
2. Hypervisor TYPE1과 Embedded 솔루션 비교
기존에는 Intel 칩기반으로 많은 가상화 기능이 존재하지만 이는 여기서는 생략하기로 하고
TYPE-1 모델일 경우 봐도 구조상 반가상화하는 것이 맞을 듯 싶다.
2. Hypervisor TYPE1과 Embedded 솔루션 비교
기존에는 Intel 칩기반으로 많은 가상화 기능이 존재하지만 이는 여기서는 생략하기로 하고
현재 Embedded 환경에서 사용되어지는 Hypervisor 의 TYPE-1 모델이 사용이 되는가 하는 생각으로 각 부분을 간단히 조사했다.
2.1 Hypervisor의 TYPE-1 모델
상위 Hypervisor의 TYPE-1 모델을 다시 생각해 볼 필요성이 최근들어 Embedded에서 발생하는 것 같다.
Main ARM Core, 즉 Multi Core가 SMP(symmetric multiprocessing) 대칭형 다중처리 방식으로 점점 변경되어 가고 있으며,
2.1 Hypervisor의 TYPE-1 모델
상위 Hypervisor의 TYPE-1 모델을 다시 생각해 볼 필요성이 최근들어 Embedded에서 발생하는 것 같다.
Main ARM Core, 즉 Multi Core가 SMP(symmetric multiprocessing) 대칭형 다중처리 방식으로 점점 변경되어 가고 있으며,
특히 Embedded AP에서 Linux에서 SMP를 자주 볼 수 있다.
(SMP는 한개의 커널과 다중코어)
최근 보면 성능좋은 CPU/AP를 이용하여 서로 다른 두 개의 OS를 이용하여 통신하는 구조로 사용되는 이유를 보면 두 개 Platform 사용 같다.
최근 보면 성능좋은 CPU/AP를 이용하여 서로 다른 두 개의 OS를 이용하여 통신하는 구조로 사용되는 이유를 보면 두 개 Platform 사용 같다.
Embedded 에서는 Second OS를 RTOS의 이용하여 빠른 Latency 받고 이를 Linux에서 각 적용하는 구조인 것으로 보인다.
상위 구성을 두 개의 CPU로도 쉽게 구성할 수 있겠지만, HW적으로 분할되기 때문에 상위 모델로 쉽게 사용하는 것으로 보인다.
물론 CPU/AP 위에 성능이 좋은 OS 1개를 사용하는 방식이 가장 최선일 지는 모르겠지만
외부에 빠른 처리 와 빠른 Latency가 필요할 경우가 있을 것 같다.
Hypervisor의 TYPE-1 모델위에 별도의 두개의 OS를 사용하면서 통신하고 주고 받는 것이다.
기본 OS는 Linux/Android/WinCE 일 것이며, Second OS는 RTOS이다.
Hypervisor의 TYPE-1 모델위에 별도의 두개의 OS를 사용하면서 통신하고 주고 받는 것이다.
기본 OS는 Linux/Android/WinCE 일 것이며, Second OS는 RTOS이다.
- SMP/MPP 관련내용
MPP(Massively Parallel Computer)
https://en.wikipedia.org/wiki/Symmetric_multiprocessing
https://ko.wikipedia.org/wiki/%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC
https://ko.wikipedia.org/wiki/%EB%8C%80%EA%B7%9C%EB%AA%A8_%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%84%B0
2.2 SoC와 DSP 솔루션
TI의 경우 DSP만 출시하여, DSP 독자적으로 사용하거나, ARM Core와 HPI/PCI Interface로 연결하여 사용하여 DSP의 사용확장을 하였다.
유저가 DSP를 항상 ARM Core와 함께 사용하니, TI에서 Davinci Series를 출시되면서 다음과 같이 ARM과 DSP를 함께 내장하고 이를 통신하는 구조로 변경되어짐
즉 ARM(CPU)와 DSP 혹은 ARM-M3는 존재하여, 각각의 별도의 OS 사용하고 통신을 위해서,
https://en.wikipedia.org/wiki/Symmetric_multiprocessing
https://ko.wikipedia.org/wiki/%EB%8C%80%EC%B9%AD%ED%98%95_%EB%8B%A4%EC%A4%91_%EC%B2%98%EB%A6%AC
https://ko.wikipedia.org/wiki/%EB%8C%80%EA%B7%9C%EB%AA%A8_%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%84%B0
2.2 SoC와 DSP 솔루션
TI의 경우 DSP만 출시하여, DSP 독자적으로 사용하거나, ARM Core와 HPI/PCI Interface로 연결하여 사용하여 DSP의 사용확장을 하였다.
유저가 DSP를 항상 ARM Core와 함께 사용하니, TI에서 Davinci Series를 출시되면서 다음과 같이 ARM과 DSP를 함께 내장하고 이를 통신하는 구조로 변경되어짐
즉 ARM(CPU)와 DSP 혹은 ARM-M3는 존재하여, 각각의 별도의 OS 사용하고 통신을 위해서,
Memory Map IO 방식으로 동일한 주소접근하고 ARM과 DSP 는 Shared Memory 사용함.
DSP는 BIOS라는 RTOS를 이용하여 멀티미디어 관련부분을 담당하고, ARM(CPU)는 Linux/Android와 같은 OS를 이용하는 구조.
TI에서 제공되는 SoC의 경우가 DSP를 내장하거나, ARM-M3(ARM Core)를 내장하여 이를 이용한다.
OMAP 역시 점점 발전함에 따라 점점 DSP의 역할이 점점 줄어들어들고, Graphic 부분는 증가하고 위와 동일한 솔루션을 제공하며,
OMAP 역시 점점 발전함에 따라 점점 DSP의 역할이 점점 줄어들어들고, Graphic 부분는 증가하고 위와 동일한 솔루션을 제공하며,
GPU 및 더욱 좋아진 Power Management 제공함에 따라 BSP가 복잡해질 뿐이다.
하지만 최근 출시되어지는 AM34xx or AM43 Series는 위와 같은 방식과는 다르다.
물론 TI만 DSP를 출시하는 것이 아니므로, Qualcomm Chip은 아직 사용해본적이 없기에 TI에만 이야기 하지만 얼추 다 비슷하리나 본다..
2.3 ARM에서 Hypervisor 이용
이는 최근에 Vendor들이 출시되는 Chip Solution을 보면 ARM의 Hypervisor 기술은 이 중요한 모델인 것 같다.
물론 TI와 비교해서 어느 모델이 더 성능이 나올지는 궁금하지만 현재 이런 솔루션들이 나오고 있으며, 이를 사용하고 있다.
아래의 동작 모델은 ARM 기반의 Hypervisor를 이용하여 통신을하는 방식이며 기존의 TI와는 방식과는 다르다.
3. ARM Hypervisor TYPE-1 솔루션들
현재 Automotive쪽을 구조들을 보면, RTOS하면 QNX로 가는 추세인 것 같다.
Automotive 사용되는 OS는 Linux or Android등 일반 OS와 함께 사용되어지며, 신뢰성이 보장이되는 RTOS를 두어 위와 같이 구성을 하는 것이 점점 추세로 변경이 되어가는 것 같다.
물론 모든 ARM이 지원이 되는 것은 아니며, ARMv7 이상이 되어야 하며, 다중코어를 사용해야 의미가 있을 것이다.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABIBAED.html
3.1 QNX Hypervisor TYPE-1
https://www.slideshare.net/xen_com_mgr/xen-on-arm-xen-summit-2013-v2
https://www.slideshare.net/MrCracker/xen-and-art-of-virtualization-xen-architecture
https://issuu.com/xcelljournal/docs/xcell_journal_issue_93/36
https://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OdroidXU
https://forum.odroid.com/viewtopic.php?f=98&t=6643
3.3 기타 TYPE-2 모델
Linux에서 KVM 기반으로 하면 Type-2가 될 것 같으며, 이는 상위에서 언급된 Virtual Box 비슷할 거라고 생각되어진다.
KVM (Kernel Based Virtual Machine)
https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
하지만 최근 출시되어지는 AM34xx or AM43 Series는 위와 같은 방식과는 다르다.
물론 TI만 DSP를 출시하는 것이 아니므로, Qualcomm Chip은 아직 사용해본적이 없기에 TI에만 이야기 하지만 얼추 다 비슷하리나 본다..
2.3 ARM에서 Hypervisor 이용
이는 최근에 Vendor들이 출시되는 Chip Solution을 보면 ARM의 Hypervisor 기술은 이 중요한 모델인 것 같다.
물론 TI와 비교해서 어느 모델이 더 성능이 나올지는 궁금하지만 현재 이런 솔루션들이 나오고 있으며, 이를 사용하고 있다.
아래의 동작 모델은 ARM 기반의 Hypervisor를 이용하여 통신을하는 방식이며 기존의 TI와는 방식과는 다르다.
3. ARM Hypervisor TYPE-1 솔루션들
현재 Automotive쪽을 구조들을 보면, RTOS하면 QNX로 가는 추세인 것 같다.
Automotive 사용되는 OS는 Linux or Android등 일반 OS와 함께 사용되어지며, 신뢰성이 보장이되는 RTOS를 두어 위와 같이 구성을 하는 것이 점점 추세로 변경이 되어가는 것 같다.
물론 모든 ARM이 지원이 되는 것은 아니며, ARMv7 이상이 되어야 하며, 다중코어를 사용해야 의미가 있을 것이다.
- ARMv8 ARM-A 의 57/53의 구조
ARM은 다중코어를 지원하며 4개 단위로 Cluster로 하여 Big.Little System(8개 코어사용)을 제공해주고 있다.
Big Cluster는 아래의 ARM-A의 57이며, Little Cluster는 ARM-A의 53일 것이다.
Big Cluster는 아래의 ARM-A의 57이며, Little Cluster는 ARM-A의 53일 것이다.
- ARMv8 Cache
더불어 아래와 같이 L3 Cache를 제공하여 Cluster 가 공유가 가능한 Cache를 가지고 있다.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/BABDBFEA.html
Blackberry가 인수한 QNX는 상용 microkernel로 된 RTOS의 한 종류이며 hypervisor 기능을 제공해주고 있다.
QNX에 대해 좀 더 알고 싶다면 아래의 Wiki를 읽어보도록 하자
이부분은 본인이 만약 QNX를 사용을 해볼 기회가 있다면 좀 더 자세히 알아보겠지만,
현재 아래와 같이 Block도로만 구성을 이해할수 밖에 없다.
- QNX의 Hypervisor TYPE-1 모델 구성
http://blackberry.qnx.com/en/products/hypervisor/index
https://www.qnx.com/content/dam/qnx/products/hypervisor/hypervisor-product-brief.pdf
https://www.qualcomm.com/solutions/automotive/infotainment
3.2 Xen Hypervisor 기반으로 한 TYPE-1
Xen은 opensource로 반가상화를 제공해주고 있는 Hypervisor Type 1이며, 위의 QNX 모델과 같이TYPE-1 솔루션들을 제공을 해주고 있다.
우선 아래의 Xen Project의 기본 구조을 살펴보자
Xen Project (Open source)
https://wiki.xen.org/wiki/Xen_Project_Software_Overview
https://www.slideshare.net/MrCracker/xen-and-art-of-virtualization-xen-architecture
Xen 위에 올라가는 Domain 이라는 가상화 기능이 제공되는 Dom0은 Domain 0을 의미하며, Host Domain이라고 한다.
DomU는 unprivileged domain의 약자로 Dom0의 반대쪽을 의미하고, Dom0보다 우선순위가 낮은 것 같다.
https://wiki.xen.org/wiki/DomU
https://en.wikipedia.org/wiki/Xen
https://www.qnx.com/content/dam/qnx/products/hypervisor/hypervisor-product-brief.pdf
- QNX의 ADAS 모델
다양한 Chip Vendor들의 Chip에서 제공해주고 있으며, TI 및 Qualcomm도 포함된다.
하지만, 이것을 사용하는 것은 아마 사용자의 몫일 것 같다.
- QNX의 BIOS 위에 QNX 연결
3.2 Xen Hypervisor 기반으로 한 TYPE-1
Xen은 opensource로 반가상화를 제공해주고 있는 Hypervisor Type 1이며, 위의 QNX 모델과 같이TYPE-1 솔루션들을 제공을 해주고 있다.
우선 아래의 Xen Project의 기본 구조을 살펴보자
Xen Project (Open source)
https://wiki.xen.org/wiki/Xen_Project_Software_Overview
https://www.slideshare.net/MrCracker/xen-and-art-of-virtualization-xen-architecture
- ARM과 X86의 비교 사항
- PV: Paravirtualized (반가상화)
- VS: Software Virtualized (QEMU, DevOps에서도 배포할 경우 이용되는 에뮬레이터)
- VH: Hardware Virtualized (Interrupt와 Timers 만 가상화)
- HA: Hardware Accelerated ( Page Table로 봐서는 MMU 포함?)
Xen 위에 올라가는 Domain 이라는 가상화 기능이 제공되는 Dom0은 Domain 0을 의미하며, Host Domain이라고 한다.
DomU는 unprivileged domain의 약자로 Dom0의 반대쪽을 의미하고, Dom0보다 우선순위가 낮은 것 같다.
- Xen 의 Dom0/1 (Guest OS 동작)
https://wiki.xen.org/wiki/DomU
https://en.wikipedia.org/wiki/Xen
- Xen Project 관련내용 및 Guest OS
https://www.slideshare.net/xen_com_mgr/xen-on-arm-xen-summit-2013-v2
https://www.slideshare.net/MrCracker/xen-and-art-of-virtualization-xen-architecture
- PV 반가상화 Driver의 Roadmap Xen
- AUTOMOTIVE Xen
- TI-AUTOMOTIVE Xen
- ZYNQ
https://issuu.com/xcelljournal/docs/xcell_journal_issue_93/36
- ODROID
https://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/OdroidXU
https://forum.odroid.com/viewtopic.php?f=98&t=6643
3.3 기타 TYPE-2 모델
Linux에서 KVM 기반으로 하면 Type-2가 될 것 같으며, 이는 상위에서 언급된 Virtual Box 비슷할 거라고 생각되어진다.
KVM (Kernel Based Virtual Machine)
https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine