AmigaChromeA new chapter for the Amiga
Featured · AC090 · 15 October 2026

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.

 680206806068040 (the AC090)
Floating pointNeeds a separate 68881 or 68882Built in, some operations trap to 68060.libraryBuilt in. The AC090 also runs the operations a real 68040 traps
MMUNeeds a separate 68851Built inBuilt in, for 68040.library and mmu.library
Older instructionsAll thereSeveral removed, emulated in softwareAll the integer instructions programs use, such as MOVEP and 64-bit multiply
Software built for itThe A1200 baselineUsually runs 68040 builds, with its library's helpA common target: our own real-hardware builds use -m68040
AmigaOS 3.2 supportYesYes, with 68060.libraryYes, with 68040.library
Floating point

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.

MMU

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.

Compatibility

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.

What we share

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.

Where we differ

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.

MeasurementResultWhen
SingleStepTests 68000 corpus, the interpreter813,541 of 813,542 scored tests pass30 Sep 2026
SysInfo 4.4, JIT as a 680407,308 MIPS, 650 MFLOPS30 Sep 2026
SysInfo 4.4, JIT as a 680207,609 MIPS30 Sep 2026
AmigaOS 3.2 with 68040.library and mmu.library on, ARexx loopabout 1,600 MIPS1 Oct 2026
The interpreter alone, a 68020 loop, Ryzen 5 2600X77.3 MIPS on the host30 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.

Not done yet
  • 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
Estimates, not measurements
  • 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.