A z386 projekt nyílt forrású, 80386-osztályú FPGA-processzormagot épít az eredeti Intel 386 mikrokód rekonstruált változatára támaszkodva. A fejlesztés már eljutott odáig, hogy képes DOS rendszer indítására, védett módban futó programokat kezel, és klasszikus játékokat is futtat, köztük a Doomot, a Doom II-t és a Cannon Foddert. A projekt nem egyszerű szoftveres emulátorként működik, hanem hardverleíró nyelven próbálja újraalkotni azokat a processzorrészeket, amelyekre az eredeti vezérlő-ROM épült.

Az Intel 80386 1985-ben jelent meg, és az x86 világ első 32 bites processzoraként meghatározó szerepet játszott a PC architektúra fejlődésében. A védett mód, a lapozás, a virtuális memória és a nagyobb címtér olyan képességekkel ruházta fel az architektúrát, amelyekre a későbbi DOS extenderek, a Windows 3.x, a 386BSD és a korai Linux rendszerek is építkeztek. A z386 nem utasításonkénti RTL-szintű emulációval valósítja ezt meg, hanem az Intel 80386 visszanyert mikrokódjának futtatásához szükséges hardverelemek rekonstruálásával.
A SystemVerilogban írt processzormag 37 bites mikroinstrukciókkal, 2560 bejegyzéses mikrokód-ROM-mal dolgozik. A megvalósítás tartalmazza az utasítás-előbetöltést, a dekódolást, a mikrokód-szekvencert, a szegmentálást, a lapozást, a védelmi ellenőrzéseket, a TLB-kezelést, az ALU-t, vagyis az aritmetikai-logikai egységet, a biteltolási műveletekért felelős shifter egységet, valamint a memória- és gyorsítótárútvonalakat. Az FPGA-s célkörnyezet miatt a projekt néhány korszerűsített megoldást is alkalmaz, például DSP-blokkokat a szorzási műveletekhez és egy egységes L1 gyorsítótárat.
A jelenlegi z386-verzió DOS 6 és DOS 7 rendszereket képes indítani, és futtatja a DOS/4GW vagy DOS/32A jellegű DOS extenderekkel működő védett módú programokat. A kompatibilitási tesztek között szerepel a FreeDOS, a HIMEM, az EMM386, a SeaBIOS, valamint több klasszikus játék és segédprogram. A fejlesztő mérései szerint a z386 teljesítménye egy gyors, gyorsítótárazott 386-os géphez vagy egy belépőszintű 486-oshoz közelít. DE10-Nano FPGA-lapon 85 MHz-en fut, a Doom pedig maximális grafikai beállításokkal 16,5 képkocka/másodperces eredményt ért el. Összehasonlításképpen az ao486 90 MHz-en ugyanezen mérésben 21 képkocka/másodperces eredményt produkált.
A projekt fejlesztője szerint a z386 a mérete és erőforrásigénye miatt is figyelemre méltó. A kódbázis nagyjából 8000 sorból áll, szemben az ao486 körülbelül 17 600 sorával, a szerző mérései alapján kevesebb FPGA-erőforrást használ. A kompaktabb felépítés ellenére a z386 több, a 386-os védett módhoz tartozó processzorfunkciót is megvalósít, köztük a szegmentálást, a lapozást, a szelektor-ellenőrzést, a descriptor cache állapotkezelését, a TLB-műveleteket, a laptáblák bejárását, az accessed és dirty bitek frissítését, valamint a laphibák kezelését.
A z386 projekt alapjait az Intel 80386 mikrokód-ROM-jának friss visszafejtése adja. A mikrokódot nagy felbontású lapkaképekből nyerték ki, majd képfeldolgozással, neurális hálózatokkal és kézi elemzéssel állították elő a használható disassemblyt. Ez a visszanyert vezérlőprogram irányítja a z386 működését, ami a projektet rendkívül érdekessé teszi a retrohardveres és számítógép-architektúrával foglalkozó közösség számára is.
Az eredeti 80386 még nem tartalmazott lapkára integrált L1 gyorsítótárat, a z386 viszont 16 KB-os, egységes L1 cache-t kapott, hogy az FPGA-ra épülő memóriaalrendszer jobban hasonlítson a korszak gyorsítótárazott 386-os gépeihez. A gyorsítótár négyutas csoportasszociatív felépítésű, 16 bájtos sorokkal dolgozik, és csökkenti az utasítás-előbetöltés, valamint az adatolvasások közötti ütközéseket. A projekt ugyanakkor még nem tekinthető teljes 386-kompatibilis megoldásnak, mivel a Windows támogatása nem készült el, és a protected mode lefedettsége sem teljes.
A teljes mikrokód a projekt github oldalán tölthető le, a technikai részletek eredeti nyelven pedig az alábbi blogbejegyzésben olvashatók.
