Raksta par datorsistÄmu simulatoriem otrajÄ daÄ¼Ä turpinÄÅ”u vienkÄrÅ”Ä ievadformÄ runÄt par datorsimulatoriem, proti, par pilnas platformas simulÄciju, ar kuru visbiežÄk saskaras vidusmÄra lietotÄjs, kÄ arÄ« par pulksteÅa laiku. -pulksteÅa modelis un pÄdas, kas biežÄk sastopamas izstrÄdÄtÄju aprindÄs.
Š
Pilnas platformas simulators jeb āViens pats uz lauka nav karotÄjsā
Ja vÄlaties izpÄtÄ«t vienas konkrÄtas ierÄ«ces, piemÄram, tÄ«kla kartes, darbÄ«bu vai rakstÄ«t programmaparatÅ«ru vai draiveri Å”ai ierÄ«cei, tad Å”Ädu ierÄ«ci var simulÄt atseviŔķi. TomÄr to izmantot atseviŔķi no pÄrÄjÄs infrastruktÅ«ras nav Ä«paÅ”i Ärti. Lai palaistu atbilstoÅ”o draiveri, jums bÅ«s nepiecieÅ”ams centrÄlais procesors, atmiÅa, piekļuve datu kopnei utt. TurklÄt, lai draiveris darbotos, ir nepiecieÅ”ama operÄtÄjsistÄma (OS) un tÄ«kla steks. TurklÄt var bÅ«t nepiecieÅ”ams atseviŔķs pakeÅ”u Ä£enerators un atbildes serveris.
Pilnas platformas simulators rada vidi pilnÄ«gas programmatÅ«ras steka darbinÄÅ”anai, kas ietver visu, sÄkot no BIOS un bootloader lÄ«dz paÅ”ai OS un tÄs dažÄdajÄm apakÅ”sistÄmÄm, piemÄram, viena un tÄ pati tÄ«kla steka, draiveri un lietotÄja lÄ«meÅa lietojumprogrammas. Lai to izdarÄ«tu, tas ievieÅ” programmatÅ«ras modeļus lielÄkajai daļai datoru ierÄ«Äu: procesoru un atmiÅu, disku, ievades/izvades ierÄ«ces (tastatÅ«ru, peli, displeju), kÄ arÄ« to paÅ”u tÄ«kla karti.
TÄlÄk ir parÄdÄ«ta Intel x58 mikroshÄmojuma blokshÄma. Pilnas platformas datora simulatoram Å”ajÄ mikroshÄmojumÄ ir jÄievieÅ” lielÄkÄ daļa no uzskaitÄ«tajÄm ierÄ«cÄm, tostarp tÄs, kas atrodas IOH (ievades/izvades centrmezglÄ) un ICH (ievades/izvades kontrollera centrmezglÄ), kas nav detalizÄti attÄlotas blokshÄmÄ. . Lai gan, kÄ liecina prakse, nav daudz ierÄ«Äu, kuras neizmantotu programmatÅ«ra, kuru mÄs gatavojamies palaist. Å Ädu ierÄ«Äu modeļi nav jÄizveido.
VisbiežÄk pilnas platformas simulatori tiek ieviesti procesora instrukciju lÄ«menÄ« (ISA, skatÄ«t zemÄk).
Simulatora veiktspÄja
KÄ jau tika minÄts iepriekÅ”, visas sistÄmas, tas ir, visu tÄs ierÄ«Äu, simulÄcijas process ir diezgan lÄns pasÄkums. Ja to visu arÄ« ieviesÄ«si ļoti detalizÄtÄ lÄ«menÄ«, piemÄram, mikroarhitektoniskÄ vai loÄ£iskÄ, tad izpilde kļūs ÄrkÄrtÄ«gi lÄna. TaÄu instrukciju lÄ«menis ir pareizÄ izvÄle, un tas ļauj operÄtÄjsistÄmai un programmÄm darboties ar Ätrumu, kas ir pietiekams, lai lietotÄjs varÄtu ar tÄm Ärti mijiedarboties.
Å eit bÅ«tu lietderÄ«gi pieskarties simulatora darbÄ«bas tÄmai. To parasti mÄra IPS (instrukcijas sekundÄ), precÄ«zÄk MIPS (miljonos IPS), tas ir, simulatora izpildÄ«to procesora instrukciju skaits vienÄ sekundÄ. TajÄ paÅ”Ä laikÄ simulÄcijas Ätrums ir atkarÄ«gs arÄ« no tÄs sistÄmas veiktspÄjas, kurÄ darbojas pati simulÄcija. TÄpÄc varÄtu bÅ«t pareizÄk runÄt par simulatora āpalÄninÄÅ”anosā, salÄ«dzinot ar sÄkotnÄjo sistÄmu.
TirgÅ« izplatÄ«tÄkajiem pilnas platformas simulatoriem, piemÄram, QEMU, VirtualBox vai VmWare Workstation, ir laba veiktspÄja. LietotÄjs var pat nepamanÄ«t, ka simulatorÄ notiek darbs. Tas notiek, pateicoties Ä«paÅ”ajÄm virtualizÄcijas iespÄjÄm, kas ieviestas procesoros, binÄrajiem tulkoÅ”anas algoritmiem un citÄm interesantÄm lietÄm. Tas viss ir atseviŔķa raksta tÄma, bet Ä«si sakot, virtualizÄcija ir mÅ«sdienu procesoru aparatÅ«ras funkcija, kas ļauj simulatoriem nevis simulÄt instrukcijas, bet gan nosÅ«tÄ«t tÄs izpildei tieÅ”i uz reÄlu procesoru, ja, protams, tiek izmantotas simulators un procesors ir lÄ«dzÄ«gi. BinÄrÄ tulkoÅ”ana ir viesu maŔīnas koda tulkoÅ”ana resursdatora kodÄ un sekojoÅ”a izpilde reÄlÄ procesorÄ. RezultÄtÄ simulÄcija ir tikai nedaudz lÄnÄka, 5-10 reizes, un bieži vien pat darbojas ar tÄdu paÅ”u Ätrumu kÄ reÄlÄ sistÄma. Lai gan to ietekmÄ daudzi faktori. PiemÄram, ja mÄs vÄlamies simulÄt sistÄmu ar vairÄkiem desmitiem procesoru, tad Ätrums uzreiz samazinÄsies par Å”iem vairÄkiem desmitiem reižu. No otras puses, simulatori, piemÄram, Simics jaunÄkajÄs versijÄs, atbalsta daudzprocesoru resursdatora aparatÅ«ru un efektÄ«vi paralÄli simulÄtos kodolus reÄla procesora kodoliem.
Ja runÄjam par mikroarhitektÅ«ras simulÄcijas Ätrumu, tad tas parasti ir vairÄkas kÄrtas, aptuveni 1000-10000 reižu lÄnÄks nekÄ izpilde parastajÄ datorÄ, bez simulÄcijas. Un ievieÅ”ana loÄ£isko elementu lÄ«menÄ« ir par vairÄkÄm kÄrtÄm lÄnÄka. TÄpÄc Å”ajÄ lÄ«menÄ« kÄ emulators tiek izmantots FPGA, kas var ievÄrojami palielinÄt veiktspÄju.
TÄlÄk redzamajÄ grafikÄ parÄdÄ«ta aptuvenÄ simulÄcijas Ätruma atkarÄ«ba no modeļa detaļÄm.
SimulÄcija pÄc sitiena
Neskatoties uz to zemo izpildes Ätrumu, mikroarhitektÅ«ras simulatori ir diezgan izplatÄ«ti. Procesora iekÅ”Äjo bloku simulÄcija ir nepiecieÅ”ama, lai precÄ«zi simulÄtu katras instrukcijas izpildes laiku. Å eit var rasties pÄrpratumi - galu galÄ, Ŕķiet, kÄpÄc gan vienkÄrÅ”i neieprogrammÄt katras instrukcijas izpildes laiku. Bet Å”Äds simulators bÅ«s ļoti neprecÄ«zs, jo vienas un tÄs paÅ”as instrukcijas izpildes laiks var atŔķirties atkarÄ«bÄ no zvana.
VienkÄrÅ”Äkais piemÄrs ir atmiÅas piekļuves instrukcija. Ja pieprasÄ«tÄ atmiÅas vieta ir pieejama keÅ”atmiÅÄ, tad izpildes laiks bÅ«s minimÄls. Ja Ŕī informÄcija nav keÅ”atmiÅÄ (ācache missā), tas ievÄrojami palielinÄs instrukcijas izpildes laiku. TÄdÄjÄdi precÄ«zai simulÄcijai ir nepiecieÅ”ams keÅ”atmiÅas modelis. TomÄr jautÄjums neaprobežojas tikai ar keÅ”atmiÅas modeli. Procesors vienkÄrÅ”i negaidÄ«s, lÄ«dz dati tiks izgÅ«ti no atmiÅas, kad tie nav keÅ”atmiÅÄ. TÄ vietÄ tas sÄks izpildÄ«t nÄkamos norÄdÄ«jumus, izvÄloties tos, kas nav atkarÄ«gi no nolasÄ«Å”anas no atmiÅas rezultÄta. Å Ä« ir tÄ sauktÄ āÄrpus kÄrtÄ«basā izpilde (OOO, out of order execution), kas nepiecieÅ”ama, lai samazinÄtu procesora dÄ«kstÄves laiku. AtbilstoÅ”o procesora bloku modelÄÅ”ana palÄ«dzÄs to visu Åemt vÄrÄ, aprÄÄ·inot instrukciju izpildes laiku. Starp Å”iem norÄdÄ«jumiem, kas tiek izpildÄ«ti, kamÄr tiek gaidÄ«ts nolasÄ«Å”anas rezultÄts no atmiÅas, var notikt nosacÄ«ta lÄciena darbÄ«ba. Ja nosacÄ«juma rezultÄts Å”obrÄ«d nav zinÄms, tad atkal procesors neaptur izpildi, bet izdara āminÄjumuā, izpilda atbilstoÅ”o atzaru un turpina proaktÄ«vi izpildÄ«t instrukcijas no pÄrejas punkta. Å Äds bloks, ko sauc par zaru prognozÄtÄju, ir jÄievieÅ” arÄ« mikroarhitektÅ«ras simulatorÄ.
ZemÄk esoÅ”ajÄ attÄlÄ redzami procesora galvenie bloki, tas nav jÄzina, tas ir parÄdÄ«ts tikai, lai parÄdÄ«tu mikroarhitektÅ«ras realizÄcijas sarežģītÄ«bu.
Visu Å”o bloku darbÄ«ba reÄlÄ procesorÄ tiek sinhronizÄta ar Ä«paÅ”iem pulksteÅa signÄliem, un tas pats notiek modelÄ«. Å Ädu mikroarhitektÅ«ras simulatoru sauc par cikla precÄ«zu. TÄs galvenais mÄrÄ·is ir precÄ«zi paredzÄt izstrÄdÄjamÄ procesora veiktspÄju un/vai aprÄÄ·inÄt konkrÄtas programmas, piemÄram, etalona, āāizpildes laiku. Ja vÄrtÄ«bas ir zemÄkas par nepiecieÅ”amo, tad bÅ«s nepiecieÅ”ams modificÄt algoritmus un procesora blokus vai optimizÄt programmu.
KÄ redzams iepriekÅ”, pulksteÅa pÄc pulksteÅa simulÄcija ir ļoti lÄna, tÄpÄc tiek izmantota tikai pÄtot noteiktus programmas darbÄ«bas momentus, kur nepiecieÅ”ams noskaidrot reÄlo programmas izpildes Ätrumu un novÄrtÄt tÄs ierÄ«ces turpmÄko veiktspÄju, kura prototips tiek simulÄts.
Å ajÄ gadÄ«jumÄ tiek izmantots funkcionÄls simulators, lai simulÄtu atlikuÅ”o programmas darbÄ«bas laiku. KÄ Å”Ä« izmantoÅ”anas kombinÄcija notiek patiesÄ«bÄ? PirmkÄrt, tiek palaists funkcionÄlais simulators, kurÄ tiek ielÄdÄta OS un viss nepiecieÅ”amais pÄtÄmÄs programmas palaiÅ”anai. Galu galÄ mÅ«s neinteresÄ ne pati OS, ne programmas palaiÅ”anas sÄkumposmi, tÄs konfigurÄcija utt. TomÄr mÄs arÄ« nevaram izlaist Ŕīs daļas un nekavÄjoties pÄriet uz programmas izpildi no vidus. TÄpÄc visas Ŕīs sÄkotnÄjÄs darbÄ«bas tiek veiktas funkcionÄlÄ simulatorÄ. PÄc tam, kad programma ir izpildÄ«ta lÄ«dz mÅ«s interesÄjoÅ”am brÄ«dim, ir iespÄjami divi varianti. Varat aizstÄt modeli ar pulksteÅa cikla modeli un turpinÄt izpildi. SimulÄcijas režīmu, kurÄ tiek izmantots izpildÄms kods (tas ir, regulÄri kompilÄti programmu faili), sauc par izpildes simulÄciju. Å Ä« ir visizplatÄ«tÄkÄ simulÄcijas iespÄja. IespÄjama arÄ« cita pieeja ā izsekot vadÄ«ta simulÄcija.
Uz izsekoÅ”anu balstÄ«ta simulÄcija
Tas sastÄv no diviem posmiem. Izmantojot funkcionÄlu simulatoru vai reÄlÄ sistÄmÄ, programmas darbÄ«bu žurnÄls tiek savÄkts un ierakstÄ«ts failÄ. Å o žurnÄlu sauc par izsekoÅ”anu. AtkarÄ«bÄ no tÄ, kas tiek pÄrbaudÄ«ts, izsekoÅ”ana var ietvert izpildÄmas instrukcijas, atmiÅas adreses, portu numurus un pÄrtraukuma informÄciju.
NÄkamais solis ir trases āatskaÅoÅ”anaā, kad pulksteÅa simulators nolasa trasÄjumu un izpilda visus tajÄ rakstÄ«tos norÄdÄ«jumus. BeigÄs mÄs iegÅ«stam Ŕīs programmas daļas izpildes laiku, kÄ arÄ« dažÄdus Ŕī procesa raksturlielumus, piemÄram, trÄpÄ«jumu procentuÄlo daudzumu keÅ”atmiÅÄ.
SvarÄ«ga iezÄ«me darbÄ ar pÄdÄm ir determinisms, tas ir, veicot simulÄciju iepriekÅ” aprakstÄ«tajÄ veidÄ, mÄs atkal un atkal atkÄrtojam vienu un to paÅ”u darbÄ«bu secÄ«bu. Tas ļauj, mainot modeļa parametrus (keÅ”atmiÅas, bufera un rindu izmÄrus) un izmantojot dažÄdus iekÅ”Äjos algoritmus vai tos regulÄjot, izpÄtÄ«t, kÄ konkrÄts parametrs ietekmÄ sistÄmas veiktspÄju un kura opcija dod vislabÄkos rezultÄtus. To visu var izdarÄ«t ar ierÄ«ces modeļa prototipu, pirms tiek izveidots faktiskais aparatÅ«ras prototips.
Å Ä«s pieejas sarežģītÄ«ba ir saistÄ«ta ar nepiecieÅ”amÄ«bu vispirms palaist lietojumprogrammu un apkopot izsekojumu, kÄ arÄ« lielajÄ izsekoÅ”anas faila izmÄrÄ. PriekÅ”rocÄ«bas ietver to, ka pietiek tikai simulÄt interesÄjoÅ”o ierÄ«ces vai platformas daļu, savukÄrt simulÄcijai ar izpildi parasti ir nepiecieÅ”ams pilns modelis.
TÄtad, Å”ajÄ rakstÄ mÄs apskatÄ«jÄm pilnas platformas simulÄcijas iespÄjas, runÄjÄm par ievieÅ”anas Ätrumu dažÄdos lÄ«meÅos, simulÄciju pÄc pulksteÅa un izsekoÅ”anas. NÄkamajÄ rakstÄ aprakstÄ«Å”u galvenos simulatoru izmantoÅ”anas scenÄrijus gan personÄ«giem mÄrÄ·iem, gan no attÄ«stÄ«bas viedokļa lielos uzÅÄmumos.
Avots: www.habr.com