According to official QEMU documentation:
When used as a virtualizer, QEMU achieves near native performance by executing the guest code directly on the host CPU.
My question is how is this behavior different from the programs we call hypervisors (e.g. VirtualBox, KVM etc); don't they also run the "guest code" on the "host CPU"? where else would they run it on?
If the image below (source) is correct, then it turns out that QEMU runs applications (and not entire OSs like hypervisors) but performs translations between different architecture types (e.g. a program written for ARM can run on x86)
Given the above, is the case that for one to run:
a) an entire operating system for a specific architecture (e.g ARM)
b) on a host with a different architecture (e.g amd64)
a co existence is needed of both
QEMU (to perform the cross-architecture mapping)
KVM (to act as hardware hypervisor)