Nyílt forrású z386: új életre kel az Intel 80386 mikrokódja

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A z386 egy nyílt forráskódú FPGA CPU core, amely az egykor legendás Intel 80386-os (i386) processzort kelti új életre a visszanyert eredeti mikrokód felhasználásával. Már eljutott oda, hogy elindítja a DOS-t, futtat védett módú programokat, és olyan klasszikus játékokat is visz, mint a Doom vagy a Cannon Fodder.

Az Intel 80386-ot, vagyis az i386-ot 1985-ben mutatták be, ez volt az Intel első 32 bites x86 processzora. Megalapozta a modern 32 bites PC operációs rendszereket: bevezette a védett módot, a lapozást, a virtuális memória támogatását, és jóval nagyobb címtartományt kínált, mint a korábbi 16 bites CPU-k.

A 80386-ot leginkább a DOS korszak végével, a korai Windows 3.x rendszerekkel, a DOS extender technológiával, a 386BSD-vel, a korai Linuxszal és a 16 bitesről 32 bitesre váltás időszakával szokás összekapcsolni. Térjünk vissza a témához.

A z386 SystemVerilog nyelven íródott, és nem utasításonként emulál RTL szinten. Inkább annyira építi újra az eredeti 386-os hardvert, hogy a visszanyert Intel 80386 vezérlő ROM át tudja venni a végrehajtás irányítását.

A core egy 37 bites szélességű, 2560 bejegyzéses mikrokód ROM-ot használ, és megőrzi a 80386 fontosabb egységeit: az utasítás-előolvasást, a dekódolást, a mikrokód-szekvenszert, a szegmentálást, a lapozást, a védelmi ellenőrzéseket, a TLB-t, az ALU-t, a shiftert és a memória/cache útvonalat. Emellett FPGA-barát optimalizációkat is alkalmaz, például DSP blokkokat a szorzáshoz és egy kompakt, egységes L1 cache-t.

A jelenlegi megvalósítás képes elindítani a DOS 6-ot és DOS 7-et, futtat védett módú programokat DOS extenderrel (például DOS/4GW, DOS/32A), és támogat több legendás játékot és szoftvert, köztük a Doomot, a Doom II-t, a Cannon Foddert, a FreeDOS-t, a HIMEM-et, az EMM386-ot, a SeaBIOS-t, valamint más kompatibilitási és integrációs teszteket.

A projekt szerzője szerint a mostani z386 build-ek nagyjából egy gyors, cache-elt, 70 MHz körüli 386-os gép vagy egy alsó kategóriás 486 teljesítményét hozzák. DE10-Nano boardon a z386 85 MHz-en fut, és Doom alatt, maximális részletességgel 16,5 FPS-t ér el. Összehasonlításképp az ao486 90 MHz-en fut, és ugyanebben a tesztben 21 FPS-t produkál.

Teljesítményen túl a z386 jóval kompaktabb: körülbelül 8000 sornyi kódból áll az ao486 17 600 sorával szemben, és a szerző szerint kevesebb FPGA erőforrást is igényel.

A projekt alapját az Intel 80386 mikrokód ROM-jának friss visszafejtése adja. A mikrokódot nagy felbontású chipfotókról nyerték vissza, majd képfeldolgozással, neurális hálózatokkal és kézi elemzéssel fejtették ki és disassemblálták. Így jött létre egy használható disassembly, amely ma a z386 fő vezérlőprogramjaként szolgál.

A projekt emellett megvalósítja a 386-specifikus védett módú funkciókat is, többek között a szegmentálást, a lapozást, a szelektorok ellenőrzését, a leíró-cache állapotát, a TLB kezelését, a lapbejárásokat, a hivatkozott és módosított bitek frissítését, valamint a lapozási hibákat.

További újdonság, hogy bár az eredeti 80386 nem tartalmazott beépített L1 cache-t, a z386 egy 16 KB méretű, egységes L1 cache-t kapott, hogy az FPGA memóriarendszer inkább a korszak gyors, cache-elt 386-os gépeire hasonlítson. A cache 4 utas társítású, 16 bájtos cache-vonalakat használ, és csökkenti az ütközést az utasítás-előolvasás és az adatolvasások között.

A szerző megjegyzi, hogy a Windows támogatása még hiányzik, és a védett módú funkciók lefedettsége sem teljes.

További részletekért látogasd meg a projekt GitHub oldalát, vagy olvasd el ezt a bejegyzést.