ARMvisor @ COSCUP2012

1,332 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,332
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ARMvisor @ COSCUP2012

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

×