ARMvisor @ COSCUP2012
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,531
On Slideshare
1,531
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
24
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ARMvisor: ARM架構上系統虛擬機的實作 Peter Chang @ SSLab, Dept. of CS, NTHU phchang@sslab.cs.nthu.edu.tw This side is licensed under CC-BY-NC-SA 姓名標示─非商業性─相同方式分享(http://creativecommons.org/licenses/by-nc-sa/3.0/tw/legalcode)
  • 2. What is ARMvisor?
  • 3. ARM
  • 4. ARM
  • 5. ARM
  • 6. What is KVM?
  • 7. What is KVM?A.k.a. Kernel-based Virtual Machine
  • 8. What is KVM?A.k.a. Kernel-based Virtual MachineType-II Virtual Machine Monitor
  • 9. What is KVM?A.k.a. Kernel-based Virtual MachineType-II Virtual Machine MonitorA module of Linux kernel
  • 10. What is KVM?
  • 11. What is KVM?Officially support x86/x64, PowerPC, S390
  • 12. What is KVM?Officially support x86/x64, PowerPC, S390 No official support for ARM architecture
  • 13. What is ARMvisor?
  • 14. What is ARMvisor?ARM架構上的KVM
  • 15. What is ARMvisor?ARM架構上的KVMPara-virtualization
  • 16. What is ARMvisor?ARM架構上的KVMPara-virtualizationTrap & Emulation
  • 17. What is ARMvisor?ARM架構上的KVMPara-virtualizationTrap & EmulationDynamic Memory Allocation
  • 18. What is ARMvisor?ARM架構上的KVMPara-virtualizationTrap & EmulationDynamic Memory Allocationvirtio & IRQchip-in-kernel
  • 19. Hardware: ARM Cortex-A8
  • 20. Host OS: Linux 2.6.38Hardware: ARM Cortex-A8
  • 21. ARMvisor Host OS: Linux 2.6.38Hardware: ARM Cortex-A8
  • 22. Driver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 23. QEMU 0.14Driver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 24. QEMU 0.14 DeviceDriver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 25. QEMU 0.14 DeviceDriver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 26. Guest OS: Linux 2.6.35 QEMU 0.14 DeviceDriver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 27. Guest OS: Linux 2.6.35 QEMU 0.14 DeviceDriver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 28. Guest OS: Linux 2.6.35 Driver QEMU 0.14 DeviceDriver ARMvisor Host OS: Linux 2.6.38 Hardware: ARM Cortex-A8
  • 29. Who are developers? @
  • 30. 2012 20112010 2009
  • 31. 2012 20112010 2009
  • 32. 2012 2011 2010Starting Point 2009
  • 33. 2012 2011 2010Starting Point 2009
  • 34. 2012 2011 ARMvisor Prototype 2010Starting Point 2009
  • 35. 2012 2011 ARMvisor Prototype 2010Starting Point 2009
  • 36. 2012CPU Opt & Mem Opt 2011 ARMvisor Prototype 2010 Starting Point 2009
  • 37. 2012CPU Opt & Mem Opt 2011 ARMvisor Prototype 2010 Starting Point 2009
  • 38. I/O Opt 2012CPU Opt & Mem Opt 2011 ARMvisor Prototype 2010 Starting Point 2009
  • 39. Current achievement
  • 40. Supported Hardware
  • 41. Supported HardwareSupported Software
  • 42. Supported HardwareSupported SoftwareDemo
  • 43. Supported Hardware ARM Realview-eb ARM11 ARMv6 ISA
  • 44. Supported Hardware TI BeagleBoard Cortex-A8 ARMv7 ISA
  • 45. Supported Hardware QEMU emulator Emulating Vexpress-a9QEMU Cortex-A9 ARMv7 ISA
  • 46. Supported SoftwarePatched Host OS: Linaro Linux 2.6.38Host Root Filesystem Ubuntu/Debian RFS (CLI or GUI)QEMU 0.14
  • 47. Supported SoftwarePatched Guest OS: Linux 2.6.35 (running on ARMv6 ISA)Guest Root Filesystem: Ubuntu/Debian RFS (CLI or GUI)
  • 48. Video demo
  • 49. System model of ARMvisor
  • 50. CPU virtualizationARM is non-virtualizable CPU Patch guest OS“Trap and emulation”
  • 51. Sensitive instructions Sensitive Instructions Non-Sensitive Instructions
  • 52. Privileged instructions Privileged instructions Non-Privileged instructions
  • 53. Virtualizable CPU
  • 54. Virtualizable CPU SensitiveInstructions
  • 55. Virtualizable CPU Sensitive PrivilegedInstructions instructions
  • 56. Virtualizable CPU SensitiveInstructions = Privileged instructions
  • 57. Virtualizable CPU SensitiveInstructions = Privileged instructionsNon-Sensitive Instructions
  • 58. Virtualizable CPU SensitiveInstructions = Privileged instructionsNon-Sensitive Non-Privileged Instructions instructions
  • 59. Virtualizable CPU SensitiveInstructions = Privileged instructionsNon-Sensitive Instructions = Non-Privileged instructions
  • 60. Non-virtualizable CPU SensitiveInstructions = Privileged instructions Non-Privileged instructionsNon-Sensitive Instructions
  • 61. Critical Instructions
  • 62. Critical Instructions SP NP NS
  • 63. Critical Instructions S S&PP NP NS
  • 64. Critical Instructions S S&P S&NPP NP NS
  • 65. Critical Instructions S S&P S&NPP NP NS&P NS
  • 66. Critical Instructions S S&P S&NPP NP NS&P NS&NP NS
  • 67. Critical Instructions S S&P S&NPP NP NS
  • 68. Critical Instructions S Privilege S&NPP NP NS
  • 69. Critical Instructions S Privilege CriticalP NP NS
  • 70. “Trap & emulation” Guest%OS User%space% trap %Kernel%space VMM
  • 71. Memory virtualizationStatic Partition
  • 72. Memory virtualization
  • 73. Memory virtualizationStatic PartitionShadow Page Table
  • 74. I/O virtualizationvirtioIRQ chip in kernel
  • 75. virtio Vir$o&Driver GuestVir$o&PCI&Controller Vring TransportVir$o&PCI&Controller QEMU Vir$o&Device
  • 76. irq_chip in kernel Guest Deliver7 GIC QEMU IRQ7 Control7 GIC7Device Device Device IOCTL7 ARMvisor
  • 77. irq_chip in kernel Guest Deliver$ IRQ$ QEMUDevice Device Device Control$ GIC$ GIC$in$Kernel KVM
  • 78. Future Works
  • 79. Future Works
  • 80. Future WorksSupport for ARM’s Virtualization extension
  • 81. Future WorksSupport for ARM’s Virtualization extension Cortex-A15 and beyond
  • 82. Future WorksSupport for ARM’s Virtualization extension Cortex-A15 and beyondSMP for host and guest
  • 83. Future WorksSupport for ARM’s Virtualization extension Cortex-A15 and beyondSMP for host and guestAArch64 Support
  • 84. Future WorksSupport for ARM’s Virtualization extension Cortex-A15 and beyondSMP for host and guestAArch64 Support ARMv8
  • 85. By the way, ...
  • 86. OpenSource
  • 87. OpenSourceWe are going to opensource in late August,2012.
  • 88. OpenSourceWe are going to opensource in late August,2012.GNU GPLv2
  • 89. OpenSourceWe are going to opensource in late August,2012.GNU GPLv2Source code of Host and Guest OS
  • 90. OpenSourceWe are going to opensource in late August,2012.GNU GPLv2Source code of Host and Guest OSUser Guide
  • 91. OpenSourceWe are going to opensource in late August,2012.GNU GPLv2Source code of Host and Guest OSUser GuideWelcome to try and feedback to us :)
  • 92. OpenSource
  • 93. Q&A