Entuziastiem veiksmÄ«gi izdevÄs izgÅ«t un izjaukt Intel 80386 procesora mikrokodu, kas dokumentÄcijas trÅ«kuma dÄļ tika uzskatÄ«ts par "melno kasti". Izmantojot mÄkslÄ«go intelektu no augstas izŔķirtspÄjas mikroshÄmas fotogrÄfijÄm, tika atjaunots mikrokoda binÄrais attÄls, un loÄ£ika tika atÅ”ifrÄta, izmantojot mikroshÄmÄ iebÅ«vÄto vadu savienojumu. PakÄpeniski tika noteikta mikrooperÄciju struktÅ«ra, lauki, izpildes secÄ«ba un instrukcijas beigu marÄ·ieri. Projekta rezultÄti ir publicÄti vietnÄ GitHub kÄ publiski pieejami.

Tika atklÄts, ka 80386 centrÄlajÄ procesorÄ katra instrukcija tiek izpildÄ«ta pilnÄ«bÄ, izmantojot mikrokodu, savukÄrt 8086 un mÅ«sdienu procesoros dažas instrukcijas tiek apstrÄdÄtas tieÅ”i. TurklÄt, atŔķirÄ«bÄ no 8086 procesoriem, 80386 mikrokods tieÅ”i neievieÅ” algoritmus, bet galvenokÄrt konfigurÄ aparatÅ«ras paÄtrinÄtÄjus (reizinÄtÄju, dalÄ«tÄju, Ätro pÄrslÄdzÄju, PTU (aizsardzÄ«bas testa bloku)).
PÄtÄ«jumÄ tika atklÄta arÄ« potenciÄla droŔības problÄma IO atļauju bitkartes apstrÄdÄ: piekļūstot 4 baitu portiem, tika pÄrbaudÄ«ti tikai pirmo 3 baitu atļauju biti, un piekļuve 4. baitam netika pÄrbaudÄ«ta, kas teorÄtiski ļÄva piekļūt aparatÅ«ras reÄ£istriem, kuriem nevajadzÄtu bÅ«t pieejamiem.
Pamatojoties uz publicÄto mikrokodu, tika izstrÄdÄts atvÄrtÄ koda z386 centrÄlais procesors, kas tika ieviests SystemVerilog valodÄ un darbojas uz FPGA. TÄ vietÄ, lai katru instrukciju ieviestu kÄ atseviŔķu RTL (reÄ£istra pÄrsÅ«tīŔanas slÄni), z386 ievieÅ” aparatÅ«ras struktÅ«ras, kuras kontrolÄ sÄkotnÄjais mikrokods. IegÅ«tÄs ievieÅ”anas veiktspÄja atbilst Ätra 386 datora veiktspÄjai (~70 MHz). z386 veiksmÄ«gi darbinÄja DOS 6/7, DOS/4GW, DOS/32A un tÄdas spÄles kÄ Doom un Cannon Fodder.
Avots: opennet.ru
