We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Does anyone have details of the current situation in this area? For example, has ARM recently announced any related product(s)? What products are available for the Cortex -A17, for example? In particular, what are the non-proprietary options, if any?
Hi Mike,
The ARM Cortex-A17 supports hardware virtualisation (what I understand by your mention of "full") which was introduced since the ARM Cortex-A15 CPU.
On the open source front, you can look at Xen and KVM.
I know some ARM employees contribute to at least KVM!
Xen ARM with Virtualization Extensions - Xen
And for again more details :
Category:XenARM - Xen
Alban (and Jerome)
Thank you for your responses, BUT what we little people out here are struggling with is the confusion of terminologies in this area. Suppliers such as VMWare, for example, use the terms
. Full Virtualisation (hence my original question)
. Para virtualisation, and
. Hardware-ASSISTED virtualisation, whereas you, Alban, weigh in with just "Hardware Virtualisation".
Is there any ARM documentation which can help clear the fog ?
These aren't ARM terms, which makes it difficult for ARM to actually define what they mean on behalf of partners like VMware.
Additionally, support for those features depends on more than just the processor IP - there are significant portions of virtualization software which may rely on certain fabric technologies such as the interrupt controller or a system MMU. It is up to our partners implementing silicon to choose what they put in their System-on-Chip devices and therefore each one may have varying support for virtualization as a whole, and varying performance for the different virtualization strategies.
Virtualization itself isn't some new technology - it was defined pretty much back in the late 60's/early 70's. There is a nice academic paper (usually referred to as "Popek and Goldberg") which is referenced by http://en.wikipedia.org/wiki/Hypervisor) which defines two types of "Hypervisor" software, Type 1 and Type 2. It is much harder to define the line between "full" or "hardware" or "hardware-assisted" virtualization as these don't really mean anything specific.
The support for the two "types" of Hypervisor is a little easier to define, although it is still a relatively vague distinction - ARM architecture with the virtualization extensions (and, optionally, appropriate use of the GIC (v2 onwards) architecture and SMMU architecture components) natively supports all the features required by a Type 1 Hypervisor, but is less functionally able to support Type 2 Hypervisors. That is not to say that it is not possible, since Linux KVM is technically a Type 2 Hypervisor, but at the current time the virtualization extensions lack a few features that virtualization software providers like to have.
Paravirtualization is simply virtualization where a Guest OS/machine has some knowledge that it is being virtualized. This is, of course, possible but the actual features are defined by the Hypervisor software and how it is implemented. ARM don't have any mandate on exactly how to do this, or what you or our partners do with it. KVM supports paravirtualization, as does Xen - with different driver models and different functionality.
In terms of products available to use those features, ARM does devolve the responsibility of developing and announcing them to our partners. We produce processor and system IP, but we are not really a "software company" - if you want to know what products VMware (for example) has that support ARM, then we would have to suggest you contact VMware and ask them.
Thanks,
Matt Sealey
Thank you, Matt! A lot of the confusion here stems from the fact that the vast majority of Internet sites are obsessed with this Intel-centric view (NOT what we ARMaholics want to see!). So, at present, ARM is hiding its light under a bushel; can I put in a plea for the inclusion of stuff like yours (accompanied, perhaps, by a couple of diagrams) in the likes of Technical/Architecture Reference Manuals?
And which components/capabilities were added, as Alban says, with the Cortex -A15? What does that give the -A15 that is not available on the dear old ARM1176JZF-S?
Mike Clark wrote:
ARM has a many-thousand page set of architecture specifications which define the capabilities already - granted, they are very hard to read as a treatise on virtualization capability as the information is scattered around the architectures (in plural, ARM, GIC, SMMU and others). You could check out the Cortex-A Series Programmer's Guide - chapter 22 covers Virtualization from the point of view of the Cortex-A7, Cortex-A15 & Cortex-A17 (i.e. ARMv7VE cores). It is not a full list of features but it goes quite a good way to describe the capabilities in some depth, in a very readable manner.
The main differences from ARM1176 et al. is the Hyp mode which gives the core an extra level of privilege to virtualize a Guest OS. Note that it is not impossible to implement virtualization on ARM without Virtualization Extensions - the Security Extensions (TrustZone) contains SOME of the features (although with a different purpose) which allow some level of virtualization to be implemented. It would also be possible to implement a virtualized operating system in User mode on ARM1176 - using SVC mode to trap "privileged" accesses. However this subverts several other features of the Architecture and makes There would need to be far, far more support code implemented in the Privileged modes (SVC) or Secure environment (Mon, Secure SVC) to support the Guest OS than on cores with the Virtualization Extensions - and some of the security-oriented features TrustZone is used for in the field can actually be implemented using Virtualization Extensions. The key is that higher privilege level, but the functionality within those higher privilege levels is what really defines how successful (and performant) your Hypervisor would be.
Ta,
Matt
Thanks again, Matt. The Programmers Guide is an absolute Treasure Trove! I'm off for a process of total immersion. I can't help wondering, though, if there are any plans to start a "Virtualisation" Community; at the moment, the subject has gravitated toward "Arm Processors", but it is equally relevant to IoT, Embedded, and Wearables, among others. How do new Communities get started?