Why our CPU is a 68040.
The AC090 is the Amiga CPU we wrote ourselves. Out of the box it is a 68040 with its FPU and MMU, and it runs your 68k software more than a thousand times faster than the 68EC020 in a stock A1200. Here is why we picked the 68040 over the 68020 the A1200 shipped with, or the 68060 that came after it.
The AC090 is our own core, written in C. It has an accurate interpreter that every other part is checked against, and a JIT that translates 68k code into x86-64 or ARM64 as it runs. It is not a Motorola part and it is not an Apollo core. Musashi's and WinUAE's opcode tables were what we checked it against, and we studied how WinUAE's and Emu68's JITs work before we wrote ours.
Three chips, one sweet spot.
Any 68k CPU we built had to look like a chip Amiga software already knows. That left three real candidates, and the 68040 is the one that asks the least of you and of your software.
| 68020 | 68060 | 68040 (the AC090) | |
|---|---|---|---|
| Floating point | Needs a separate 68881 or 68882 | Built in, some operations trap to 68060.library | Built in. The AC090 also runs the operations a real 68040 traps |
| MMU | Needs a separate 68851 | Built in | Built in, for 68040.library and mmu.library |
| Older instructions | All there | Several removed, emulated in software | All the integer instructions programs use, such as MOVEP and 64-bit multiply |
| Software built for it | The A1200 baseline | Usually runs 68040 builds, with its library's help | A common target: our own real-hardware builds use -m68040 |
| AmigaOS 3.2 support | Yes | Yes, with 68060.library | Yes, with 68040.library |
Maths without a card
A 68020 has no FPU of its own, and a lot of the best Amiga software wants one: ray tracers, LightWave and plenty of demos and games. The AC090's FPU covers the whole 68881 and 68882 instruction set, including the transcendental operations a real 68040 hands to software, and the JIT turns common FPU instructions straight into host instructions.
The OS finds what it expects
AmigaOS 3.2 loads 68040.library and mmu.library on a 68040 and builds its page tables. The AC090 walks those tables like a real 68040, with its translation cache and restartable faults. So the operating system sets itself up the way it does on a real 68040 card, and our JIT keeps translating under it instead of falling back to the interpreter.
Why not the 68060?
The 68060 is faster on real silicon, but speed is our job, not the chip's. In exchange it dropped instructions that older programs use, which then have to be caught and emulated by 68060.library. A JIT gets no benefit from the 68060's superscalar pipeline, so we would take its compatibility cost and get nothing back.
Emu68 got there first.
We are not the first to make this call, and we are glad of it. Emu68, written by Michal Schulz, is the JIT that turns a Raspberry Pi on a PiStorm board into a very fast 68k accelerator for real Amigas. It translates 68k code to ARM as it runs, on the bare metal of the Pi, with no operating system underneath.
Emu68 also presents itself to AmigaOS as a 68040 with an FPU, and brings its own 68040.library. A great many PiStorm owners have now run their software on an Amiga that says "68040", and it works. That is the best evidence we could ask for that the 68040 is the right face for a fast modern 68k CPU.
The same answer, two hosts
Both CPUs translate blocks of 68k code to native code and present a 68040 to the system. Emu68 targets ARM inside a real Amiga; the AC090 targets x86-64 and ARM64, inside our own A1200 board on a PC, on a Pi or in Cradle.
An MMU that is really there
Emu68 does not emulate the 68040's MMU, which, as its author has pointed out, most Amigas never had. We model it, because AmigaOS 3.2 and MMU tools expect it on a 68040 and we want the operating system to see exactly that. Our PiStorm work follows the PiStorm32-lite bus driver in Emu68, which is MIT licensed, and our credits name its authors.
The numbers, measured and labelled.
Everything in this table we measured ourselves, on one of our development PCs, on the date shown. SysInfo is a synthetic benchmark, so treat its figures as a measure of the CPU on its own, not of a whole program.
| Measurement | Result | When |
|---|---|---|
| SingleStepTests 68000 corpus, the interpreter | 813,541 of 813,542 scored tests pass | 30 Sep 2026 |
| SysInfo 4.4, JIT as a 68040 | 7,308 MIPS, 650 MFLOPS | 30 Sep 2026 |
| SysInfo 4.4, JIT as a 68020 | 7,609 MIPS | 30 Sep 2026 |
| AmigaOS 3.2 with 68040.library and mmu.library on, ARexx loop | about 1,600 MIPS | 1 Oct 2026 |
| The interpreter alone, a 68020 loop, Ryzen 5 2600X | 77.3 MIPS on the host | 30 Sep 2026 |
The one corpus test that fails is a divide by zero where the corpus and Motorola's manual disagree on the address the CPU stacks. We left it failing rather than explain it away. Figures for Emu68 on a Pi 4 have been reported by others at around 1,600 to 2,000 SysInfo MIPS; we have not measured those ourselves, and different hosts make the comparison rough.
- FPU exceptions are not raised yet, so programs that rely on catching them will not see them
- An OS that keeps two MMU address spaces, as some MMU tools do, still drops to the interpreter
- The ARM64 JIT has been checked under QEMU; Raspberry Pi timings are next
- We expect the two-address-space MMU work to bring those setups back to full JIT speed
- The AC090 is still a prototype. Every number here will be measured again before release
And if you really, really want a 68020.
We know. Somewhere out there is an A1200 owner who has just read the word "68040" and put their tea down very carefully. The 68020 is the chip you grew up with, and the A1200 shipped with one, and we would never ask you to give it up. So if enough of you write in, we will make you an AC090-lite: a 68020, no FPU to be smug about, every bit as quick at integer work, and polite enough to leave a 68882 shaped hole for you to fill in your imagination.
We have a small confession. It is mostly built already. The AC090 has run as a 68020 from the start, because our timing-accurate A1200 uses the same core as a 68EC020 for reference, and on the AmigaChrome Pi appliance a setting already asks for one. On a PC it is a switch we have not put in the menus. So the AC090-lite is less a new chip than a new sticker, and stickers are cheap. Write in.