Էնտուզիաստները հաջողությամբ արդյունահանեցին և ապամոնտաժեցին Intel 80386 պրոցեսորի միկրոկոդը, որը փաստաթղթերի բացակայության պատճառով համարվում էր «սև արկղ»։ Միկրոկոդի երկուական պատկերը վերստեղծվեց արհեստական բանականության միջոցով՝ օգտագործելով մատրիցայի բարձր թույլտվությամբ լուսանկարները, և տրամաբանությունը վերծանվեց մատրիցայի վրա տեղադրված միացման միջոցով։ Միկրոգործողությունների կառուցվածքը, դաշտերը, կատարման հերթականությունը և հրահանգների ավարտի նշիչները աստիճանաբար որոշվեցին։ Նախագծի արդյունքները հրապարակված են GitHub-ում՝ որպես հանրային սեփականություն։

Պարզվեց, որ 80386 պրոցեսորում յուրաքանչյուր հրահանգ կատարվում է ամբողջությամբ միկրոկոդի միջոցով, մինչդեռ 8086-ում և ժամանակակից պրոցեսորներում որոշ հրահանգներ մշակվում են անմիջապես։ Ավելին, ի տարբերություն 8086 պրոցեսորների, 80386-ի միկրոկոդը անմիջապես չի իրականացնում ալգորիթմներ, այլ հիմնականում կարգավորում է ապարատային արագացուցիչները (բազմապատկիչ, բաժանիչ, արագ փոխարկիչ, PTU (պաշտպանության թեստային միավոր)):
Ուսումնասիրությունը նաև բացահայտեց IO թույլտվության բիթմապի մշակման հետ կապված հնարավոր անվտանգության խնդիր. 4-բայթանոց պորտերին մուտք գործելիս ստուգվում էին միայն առաջին 3 բայթերի թույլտվության բիթերը, իսկ 4-րդ բայթի մուտքը չէր ստուգվում, ինչը տեսականորեն թույլ էր տալիս մուտք գործել այնպիսի սարքային գրանցամատյաններ, որոնք չպետք է հասանելի լինեին։
Հրապարակված միկրոկոդի հիման վրա մշակվել է բաց կոդով z386 պրոցեսոր, որը ներդրվել է SystemVerilog-ում և աշխատում է FPGA-ի վրա: Յուրաքանչյուր հրահանգը որպես առանձին RTL (Register-Transfer Layer) իրականացնելու փոխարեն, z386-ը իրականացնում է սկզբնական միկրոկոդի կողմից կառավարվող ապարատային կառուցվածքներ: Արդյունքում ստացված իրականացման արդյունավետությունը համապատասխանում է արագ 386 համակարգչի (~70 ՄՀց) արդյունավետությանը: z386-ը հաջողությամբ աշխատեց DOS 6/7, DOS/4GW, DOS/32A և այնպիսի խաղեր, ինչպիսիք են Doom-ը և Cannon Fodder-ը:
Source: opennet.ru
