[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Question about using qemu with multiple, different CPUs (or alternat
Re: Question about using qemu with multiple, different CPUs (or alternatives)
Fri, 28 Aug 2020 10:00:52 +0100
On Fri, 28 Aug 2020 at 00:03, Gabriel Marcano <firstname.lastname@example.org> wrote:
> The 3DS has actually 3 different CPUs in it-- an ARM7, and ARM9 (arm946
> I think), and an ARM11 (mpcore) CPU, each having access to slightly
> different parts of the hardware, and each CPU has different capabilities
> and speeds (e.g. the ARM9 has an MPU and not an MMU, while the ARM11
> does have an MMU). On hardware, the way the CPUs communicate with each
> other is over a small FIFO queue with interrupt support, and some memory
> is shared while other is not, and each CPU has their own map of memory
> (so really, it's like 3 computers in one, sharing some peripherals).
> My question is, is it possible use qemu to emulate this mess of a
> system? I looked into maybe using shared memory, but that exposes the
> shared memory across multiple instances of qemu as a PCI device...
QEMU can support multiple different kinds of CPUs in one system as
long as they are all the same basic architecture (in this case Arm).
What it can't do is handle multiple different architectures
in a single system (eg a PPC main CPU and an Arm system controller).
That said, bear in mind that QEMU's emulation does not try for
any kind of timing accuracy -- we aim to emulate "correct" guest
code quickly. So if you're writing your own guest programs you
can make sure they don't have any kind of race conditions or
assumptions that code running on the secondary CPUs is running
exactly in parallel with that on the main CPU, but usually for
games platforms I think code that was written to run on the real
hardware will make that kind of timing assumption, whether
accidentally (because only ever tested on the h/w) or deliberately
(for performance reasons). So QEMU may not be the best platform to
base a games-console emulator on.