tehnika · 5 min · 20.07.2026

Atvērtā koda 80386 kodols z386 kļūst par 39 % ātrāku Doom testā un apsteidz ao486

z386 — atvērtā koda Intel 80386 kodols programmējamā loģikā (FPGA) — Doom oriģinālajā testā ar maksimālu detalizāciju tagad izspēlē 23,0 kadrus sekundē. Iepriekš tie bija 16,6. Tas ir aptuveni 39 % pieaugums, ko projekta autors nand2mario panāca ar vairākām atmiņas cauruļvada izmaiņām, nemainot takts frekvenci.

Ar šo rezultātu z386 pirmoreiz apsteidz ao486 — vecāko un plaši lietoto FPGA 486 kodolu, kas tajā pašā testā dod 21,0 kadru. Doom kadru ātrums retro aparatūras kopienā ir izplatīts salīdzināšanas mērs, un pāriešana ao486 priekšā z386 līdz šim nebija izdevusies. Blakus tam 16 bitu 3DBench tests arī tagad ir mazliet virs ao486.

ao486 ir jau ilgus gadus lietots atvērtā koda 486 kodols, ko izmanto uz MiSTer FPGA platformas vecu DOS mašīnu atdarināšanai. Salīdzinājums ar to ir tā iemesla dēļ jēgpilns: ao486 ir references punkts, pēc kura retro kopiena mēra, cik ātrs ir jauns x86 kodols. z386 to pārspēj, būdams 386, nevis 486 klases dizains.

Kas ir z386

z386 ir Intel 80386 implementācija, kas uzbūvēta ap procesora oriģinālo mikrokodu, tāpat kā tā paša autora agrākais z8086 kodols. Projektu nand2mario pirmoreiz izziņoja 2026. gada maijā kā pirmo 32 bitu x86 procesoru, kas atkārtoti uzbūvēts FPGA.

Šodien z386 boot DOS 6 un DOS 7, palaiž aizsargātā režīma programmas caur DOS/4GW un DOS/32A, un spēlē Doom un Cannon Fodder. Autora izmēģinājumos kodols darbojas uz DE10-Nano plates ar aptuveni 75 MHz taktu. Windows tas vēl neboot — autors atzīst, ka x86 ir sarežģīts. Pēc uzvedības z386 ir līdzīgs ātram ķešotam 386 ar aptuveni 70 MHz vai zemākas klases 486: takts ir daudz augstāka nekā vēsturiskajiem 386 čipiem, bet uz vienu instrukciju patērēto ciklu skaits ir sliktāks.

Early Start — Intel triks no 1986. gada

Lielākā daļa pieauguma nāk no viena mehānisma, ko Intel iebūvēja oriģinālajā 386 un ko z386 līdz šim nebija atkārtojis. Tas ir Early Start: atmiņas piekļuves adreses aprēķinu procesors sāk iepriekšējās instrukcijas pēdējā ciklā, nevis gaida, līdz instrukcija sasniedz savu atmiņas mikrooperāciju.

Praksē tas nozīmē, ka efektīvās adreses rēķināšana, segmenta pārvietošana un kopnes cikls sāk pārklāties ar iepriekšējās instrukcijas rezultāta ierakstīšanu. Intel pati šo triku novērtēja aptuveni 9 % apmērā no kopējās veiktspējas, un z386 mērījumi to apstiprina.

Doom (oriģinālais, maksimāla detalizācija) pieauga par aptuveni 39 % — no 16,6 uz 23,0 kadriem — un pārspēja ao486 rādītos 21,0.

Store queue un zaru aprēķins

Otra izmaiņu grupa skāra atmiņas rakstīšanas rindu (store queue). Tās pārrakstīšana ļāva izgriezt vienu ciklu no rakstīšanas procesa. Bez wait cikliem z386 tagad glabāšanu (store) un reģistra push izpilda 2 ciklos, bet load un pop — 4 ciklos.

Trešā izmaiņa attiecas uz zariem, kas ir kritiski koda ātrumam. z386 tagad aprēķina zara adreses lēcienu vairākus ciklus agrāk nekā oriģinālais 386. Rezultātā viena lēciena cikls saruka no 9,25 līdz 6 cikliem. Tā kā spēles un DOS programmas veic daudz zaru, šī izmaiņa taustāmi ietekmē kadru ātrumu.

Keši un adreses tulkošana

Zem šīm optimizācijām ir kešu slānis. z386 lieto 16 KB instrukciju un 16 KB datu L1 kešus, nevis paļaujas uz adreses cauruļošanu (address pipelining), kā to darīja fiziskais 386 ar ārēju 82385 kešu. Autora tehniskajā aprakstā segmenta pārvietošana un limitu pārbaude notiek paralēli atsevišķos aritmētiskos ceļos, nevis viena pēc otras, un deskriptoru keši ļauj neatkārtot segmentu meklējumus katrā atmiņas atsaucē.

Mērķis, ko autors izvirza, nāk no Intel 1986. gada ICCD raksta: adreses tulkošanai vajadzētu aizņemt aptuveni 1,5 taktus. Limitu pārbaude izmanto “limits mīnus nobīde” aprēķinu ar seklu loģiku, nevis virkni salīdzinājumu, tāpēc tā iekļaujas budžetā. Kešs pievieno vēl 30–40 % ātruma salīdzinājumā ar variantu bez tā.

Ko tas dod

z386 joprojām ir nepabeigts projekts, un praktiska Windows palaišana paliek nākotnē. Bet tā ir viena no retajām FPGA 386 implementācijām, kas nāk no oriģinālā mikrokoda, nevis no jauna uzbūvētas loģikas, un tagad tā konkrētā Doom testā ir ātrāka par ilggadējo ao486.

Pieaugums arī parāda, cik daudz veiktspējas slēpjas cauruļvada detaļās. Neviena no trim izmaiņām — Early Start, store queue pārrakstīšana, agrāks zaru aprēķins — nepaaugstināja takts frekvenci. Visu pieaugumu deva mazāks ciklu skaits uz to pašu darbu. Kodols un tehniskie apraksti ir publiski pieejami nand2mario blogā, tāpēc citi FPGA entuziasti var atkārtot mērījumus uz savām DE10-Nano platēm.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no tehnikasaistītie