డాక్యుమెంటేషన్ లేకపోవడం వల్ల "బ్లాక్ బాక్స్"గా పరిగణించబడిన ఇంటెల్ 80386 ప్రాసెసర్ యొక్క మైక్రోకోడ్ను ఔత్సాహికులు విజయవంతంగా వెలికితీసి, విడదీశారు. డై యొక్క అధిక-రిజల్యూషన్ ఫోటోగ్రాఫ్ల నుండి AIని ఉపయోగించి మైక్రోకోడ్ యొక్క బైనరీ ఇమేజ్ పునఃసృష్టించబడింది మరియు ఆన్-డై వైరింగ్ను ఉపయోగించి లాజిక్ డీకోడ్ చేయబడింది. మైక్రో-ఆప్స్ నిర్మాణం, ఫీల్డ్లు, ఎగ్జిక్యూషన్ ఆర్డర్ మరియు ఎండ్-ఆఫ్-ఇన్స్ట్రక్షన్ మార్కర్లు క్రమంగా నిర్ధారించబడ్డాయి. ఈ ప్రాజెక్ట్ యొక్క ఫలితాలు గిట్హబ్లో పబ్లిక్ డొమైన్గా ప్రచురించబడ్డాయి.

80386 CPUలో ప్రతి ఇన్స్ట్రక్షన్ పూర్తిగా మైక్రోకోడ్ ద్వారా అమలు చేయబడుతుందని, అయితే 8086 మరియు ఆధునిక ప్రాసెసర్లలో కొన్ని ఇన్స్ట్రక్షన్లు నేరుగా ప్రాసెస్ చేయబడతాయని కనుగొనబడింది. అంతేకాకుండా, 8086 ప్రాసెసర్లకు భిన్నంగా, 80386లోని మైక్రోకోడ్ అల్గారిథమ్లను నేరుగా అమలు చేయదు, కానీ ప్రాథమికంగా హార్డ్వేర్ యాక్సిలరేటర్లను (మల్టిప్లయర్, డివైడర్, ఫాస్ట్ షిఫ్టర్, PTU (ప్రొటెక్షన్ టెస్ట్ యూనిట్)) కాన్ఫిగర్ చేస్తుంది.
ఈ అధ్యయనం IO అనుమతి బిట్మ్యాప్ నిర్వహణలో ఒక సంభావ్య భద్రతా సమస్యను కూడా వెల్లడించింది: 4-బైట్ పోర్ట్లను యాక్సెస్ చేస్తున్నప్పుడు, మొదటి 3 బైట్ల అనుమతి బిట్లు మాత్రమే తనిఖీ చేయబడ్డాయి, మరియు 4వ బైట్కు యాక్సెస్ తనిఖీ చేయబడలేదు. దీనివల్ల, సిద్ధాంతపరంగా యాక్సెస్ చేయకూడని హార్డ్వేర్ రిజిస్టర్లను యాక్సెస్ చేయడానికి వీలు కలిగింది.
ప్రచురించబడిన మైక్రోకోడ్ ఆధారంగా, సిస్టమ్వెరిలాగ్లో అమలు చేయబడి, ఒక FPGA పై పనిచేసే ఓపెన్-సోర్స్ z386 CPU అభివృద్ధి చేయబడింది. ప్రతి ఇన్స్ట్రక్షన్ను ఒక ప్రత్యేక RTL (రిజిస్టర్-ట్రాన్స్ఫర్ లేయర్)గా అమలు చేయడానికి బదులుగా, z386 అసలైన మైక్రోకోడ్ ద్వారా నియంత్రించబడే హార్డ్వేర్ నిర్మాణాలను అమలు చేస్తుంది. ఫలితంగా వచ్చిన ఈ ఇంప్లిమెంటేషన్ పనితీరు, వేగవంతమైన 386 PC (~70 MHz) పనితీరుకు సరిపోలుతుంది. z386, DOS 6/7, DOS/4GW, DOS/32A లను మరియు డూమ్, కానన్ ఫాడర్ వంటి గేమ్లను విజయవంతంగా నడిపింది.
మూలం: opennet.ru
