Simulatorên pergalên komputerê: simulatorek tev-platformê ya naskirî û li gorî demjimêr û şopên nenas

Di beşa duyemîn a gotarê de di derbarê simulatorên pergalên komputerê de, ez ê bi rengek hêsan a destpêkê di derbarê simulatorên kompîturê de bipeyivim, ango li ser simulasyona tev-platformê, ku bikarhênerê navîn pir caran pê re rû bi rû dimîne, û her weha di derbarê demjimêrê de. -Modela demjimêr û şopên ku di derdorên pêşdebiran de gelemperî ne.

Simulatorên pergalên komputerê: simulatorek tev-platformê ya naskirî û li gorî demjimêr û şopên nenas

В beşa yekem Min behsa çi simulatoran bi gelemperî, û hem jî li ser astên simulasyonê kir. Naha, li ser bingeha wê zanînê, ez pêşniyar dikim ku ez hinekî kûr biçim û li ser simulasyona tev-platformê, meriv çawa şopan berhev bike, paşê bi wan re çi bike, û hem jî li ser emûlasyona mîkroarchitectural demjimêr-bi-saetê biaxivim.

Simulatora tevahî platformê, an "Tenê li zeviyê ne şervan e"

Ger hûn dixwazin xebata yek amûrek taybetî bixwînin, mînakî, qerta torê, an firmware an ajokerek ji bo vê cîhazê binivîsin, wê hingê amûrek wusa dikare ji hev cuda were simul kirin. Lêbelê, karanîna wê ji binesaziya mayî veqetandî ne pir hêsan e. Ji bo xebitandina ajokera têkildar, hûn ê hewceyê pêvajoyek navendî, bîranîn, gihîştina otobusek daneyê, hwd. Digel vê yekê, ajokar pêdivî bi pergalek xebitandinê (OS) û stûnek torê heye ku kar bike. Wekî din, dibe ku hilberînerek pakêtê û serverek bersivê ya cihêreng hewce bike.

Simulatorek tev-platform hawîrdorek ji bo xebitandina stûnek nermalavê ya bêkêmasî diafirîne, ku her tiştî ji BIOS û bootloader bigire heya OS bixwe û bine pergalên wê yên cihêreng, wek heman stûna torê, ajokar, û sepanên asta bikarhêner vedihewîne. Ji bo vê yekê, ew modelên nermalavê yên piraniya amûrên komputerê bicîh tîne: pêvajo û bîranîn, dîsk, cîhazên têketin/derketinê (klavye, mişk, dîmen), û her weha heman qerta torê.

Li jêr diyagramek blokê ya chipset x58 ji Intel heye. Simulatorek kompîturê ya tev-platformê ya li ser vê çîpê pêdivî bi pêkanîna piraniya cîhazên navnîşkirî hewce dike, di nav de yên di hundurê IOH (Navenda Ketin/Derketin) û ICH (Nava Kontrolkerê Ketin/Derketinê), yên ku bi hûrgulî li ser bloka blokê nayên xuyang kirin. . Her çend, wekî ku pratîk destnîşan dike, ne gelek amûrên ku ji hêla nermalava ku em ê bimeşînin ve nayên bikar anîn hene. Modelên amûrên weha ne hewce ne ku bêne afirandin.

Simulatorên pergalên komputerê: simulatorek tev-platformê ya naskirî û li gorî demjimêr û şopên nenas

Bi gelemperî, simulatorên tev-platformê di asta rêwerziya pêvajoyê de têne bicîh kirin (ISA, li jêr binêrin). gotara berê). Ev dihêle hûn simulatorê xwe bi nisbeten zû û erzan biafirînin. Asta ISA jî baş e ji ber ku ew kêm-zêde domdar dimîne, berevajî, mînakî, asta API / ABI, ku pir caran diguhezîne. Wekî din, pêkanîn di asta rêwerzan de dihêle hûn bi vî rengî nermalava binary ya neguhêrbar bimeşînin, ango, koda ku jixwe hatî berhev kirin bêyî ti guhartinan bimeşînin, tam wekî ku ew li ser hardware rast tê bikar anîn. Bi gotinek din, hûn dikarin kopiyek ("dump") ji dîska xweya hişk çêbikin, wê wekî wêneyek ji bo modelek di simulatorek tev-platformê de destnîşan bikin, û voila! - OS û bernameyên din bêyî kiryarên zêde di simulatorê de têne barkirin.

Performansa simulatorê

Simulatorên pergalên komputerê: simulatorek tev-platformê ya naskirî û li gorî demjimêr û şopên nenas

Wekî ku li jor hate behs kirin, pêvajoya simulasyona tevahî pergalê, ango hemî cîhazên wê, karekî pir hêdî ye. Ger hûn vê yekê jî di astek pir berfireh de bicîh bikin, mînakî mîkroarchitectural an mentiqî, wê hingê darvekirin dê pir hêdî bibe. Lê asta rêwerzan bijarek maqûl e û dihêle ku OS û bernameyan bi lez û bez biqede ku bikarhêner bi rehetî bi wan re têkilî daynin.

Li vir guncan e ku meriv li ser mijara performansa simulatorê bisekine. Ew bi gelemperî di IPS-ê de (talîmatên per saniyeyê), bi rastî bi MIPS (bi mîlyonan IPS) tê pîvandin, ango hejmara rêwerzên pêvajoyê ku ji hêla simulatorê ve di yek saniyeyê de têne darve kirin. Di heman demê de, leza simulasyonê jî bi performansa pergala ku simulasyon bixwe dimeşe ve girêdayî ye. Ji ber vê yekê, dibe ku rasttir be ku meriv li ser "hêdîbûna" simulatorê li gorî pergala orjînal biaxive.

Simulatorên tev-platforma herî gelemperî li sûkê, wek QEMU, VirtualBox an VmWare Workstation, xwedan performansa baş in. Dibe ku ji bikarhênerê re ne diyar be ku kar di simulatorê de diqewime. Ev bi saya kapasîteyên virtualîzasyona taybetî yên ku di pêvajokeran, algorîtmayên wergerandina binary û tiştên din ên balkêş de têne bicîh kirin pêk tê. Ev hemî mijarek ji bo gotarek cihêreng e, lê bi kurtî, virtualbûn taybetmendiyek hardware ya pêvajoyên nûjen e ku destûrê dide simulatoran ne ku talîmatan simul bikin, lê wan ji bo darvekirinê rasterast ji pêvajoyek rastîn re bişînin, heke, bê guman, mîmariya simulator û çêker dişibin hev. Wergera binary wergerandina koda makîneya mêvan li koda mêvandar û dûv re li ser pêvajoyek rastîn tê darvekirin. Wekî encamek, simulasyon tenê hinekî hêdîtir e, 5-10 carî, û pir caran jî bi heman leza pergala rastîn dimeşe. Her çend ev ji hêla gelek faktoran ve tê bandor kirin. Mînakî, heke em bixwazin pergalek bi dehan pêvajoyan simule bikin, wê gavê leza van çend deh caran dakeve. Ji hêla din ve, simulatorên mîna Simics di guhertoyên herî paşîn de hardware mêvandar a pirpêvajoyê piştgirî dikin û bi bandor korikên simulasyonê li ser korikên pêvajoyek rastîn paralel dikin.

Ger em li ser leza simulasyona mîkroarchitectural biaxivin, wê hingê ew bi gelemperî çend rêzikên mezinahiyê ye, bi qasî 1000-10000 carî hêdîtir ji darvekirina li ser komputerek birêkûpêk, bêyî simulasyonê. Û pêkanînên di asta hêmanên mentiqî de bi çend rêzikên mezinbûnê hêdîtir in. Ji ber vê yekê, FPGA di vê astê de wekî emulatorek tê bikar anîn, ku dikare bi girîngî performansê zêde bike.

Grafika jêrîn pêwendiyek texmînî ya leza simulasyonê bi hûrguliya modelê nîşan dide.

Simulatorên pergalên komputerê: simulatorek tev-platformê ya naskirî û li gorî demjimêr û şopên nenas

Beat-by-beat simulation

Tevî leza pêkanîna wan kêm, simulatorên mîkroarchitectural pir gelemperî ne. Simulasyona blokên hundurîn ên pêvajoyê hewce ye ku ji bo ku dema pêkanîna her talîmatê rast were simulasyona rast. Dibe ku li vir têgihiştinek çêbibe - berevajî, wusa dixuye, çima ne tenê dema darvekirinê ji bo her fermanê bername neke. Lê simulatorek wusa dê pir nerast be, ji ber ku dema pêkanîna heman fermanê dibe ku ji bangê heya bangê cûda bibe.

Mînaka herî hêsan rêwerzek gihîştina bîranînê ye. Ger cîhê bîranîna daxwazkirî di cache de peyda bibe, wê hingê dema darvekirinê dê hindik be. Ger ev agahdarî ne di cache de be ("winda cache"), wê hingê ev ê wextê pêkanîna fermanê pir zêde bike. Ji ber vê yekê, modelek cache ji bo simulasyona rast hewce ye. Lêbelê, mijar tenê bi modela cache-ê re sînorkirî ne. Dema ku ew ne di cache de be, pêvajo bi tenê li bendê nemîne ku dane ji bîranînê were derxistin. Di şûna wê de, ew ê dest bi cîbicîkirina rêwerzên din bike, yên ku bi encama xwendina ji bîrê ve girêdayî ne hilbijêrin. Ev bi navê darvekirina "ji rêzê" ye (OOO, darvekirina ji rêzê), ji bo kêmkirina dema bêkar a pêvajoyê pêdivî ye. Modelkirina blokên pêvajoyê yên têkildar dê bibe alîkar ku hûn van hemî gava ku dema pêkanîna rêwerzan têne hesibandin were hesibandin. Di nav van rêwerzan de, dema ku li benda encama xwendina ji bîrê ye, têne darve kirin, dibe ku operasyonek bazdanê ya şertî çêbibe. Ger encama rewşê di vê gavê de nenas e, wê hingê dîsa pêvajoker darvekirinê namîne, lê "texmînek" dike, şaxek guncan pêk tîne û ji nuqteya veguheztinê bi proaktîf pêkanîna talîmatan didomîne. Blokek wusa, ku jê re pêşgotinek şax tê gotin, divê di simulatora mîkroarchitectural de jî were bicîh kirin.

Wêneya jêrîn blokên sereke yên pêvajoyê nîşan dide, ne hewce ye ku wê zanibe, ew tenê tê destnîşan kirin ku tevliheviya pêkanîna mîkroarchitectural nîşan bide.

Simulatorên pergalên komputerê: simulatorek tev-platformê ya naskirî û li gorî demjimêr û şopên nenas

Xebata van hemî blokan di pêvajoyek rastîn de ji hêla nîşanên demjimêra taybetî ve têne hevdem kirin, û heman tişt di modelê de jî çêdibe. Simulatorek mîkroarchitectural wusa wekî çerxa rastîn tê gotin. Armanca wê ya sereke ew e ku bi rastî pêşbîniya performansa pêvajoya ku hatî pêşve xistin û/an hesabkirina dema darvekirinê ya bernameyek taybetî ye, mînakî, pîvanek. Ger nirx ji hewcedariyê kêmtir bin, wê hingê pêdivî ye ku algorîtma û blokên pêvajoyê biguhezînin an bernameyê xweşbîn bikin.

Wekî ku li jor hatî destnîşan kirin, simulasyona demjimêr-bi-saetê pir hêdî ye, ji ber vê yekê ew tenê di dema xwendina hin kêliyên xebata bernameyê de tê bikar anîn, li cihê ku pêdivî ye ku meriv leza rastîn a darvekirina bernameyê bibîne û performansa pêşerojê ya cîhaza ku jê re were nirxandin. prototîp tê simulasyon kirin.

Di vê rewşê de, simulatorek fonksiyonel ji bo simulasyona dema xebitandina bernameyê ya mayî tê bikar anîn. Di rastiyê de ev tevliheviya karanînê çawa dibe? Pêşîn, simulatora fonksiyonel tê destpêkirin, ku li ser wê OS û her tiştê ku ji bo meşandina bernameya lêkolînê hewce ye tê barkirin. Beriya her tiştî, em ne bi OS-ê bixwe re eleqedar in, ne jî di qonaxên destpêkê yên destpêkirina bernameyê, veavakirina wê û hwd. Lêbelê, em nekarin van beşan jî derbas bikin û tavilê bernameyê ji navîn ve bimeşînin. Ji ber vê yekê, hemî van gavên pêşîn li ser simulatorek fonksiyonel têne meşandin. Piştî ku bername heya kêliya ku ji me re eleqedar e hate darve kirin, du vebijark gengaz in. Hûn dikarin modelê bi modela demjimêr-bi-cycle veguherînin û darvekirinê bidomînin. Moda simulasyonê ya ku koda îcrakar bi kar tîne (ango pelên bernameyê yên bi rêkûpêk berhevkirî) jê re tê gotin simulasyona ajotinê ya darvekirinê. Ev vebijarka simulasyonê ya herî gelemperî ye. Nêzîktêdayînek din jî gengaz e - simulasyona şopandinê.

simulation-based Trace

Ji du gavan pêk tê. Bi karanîna simulatorek fonksiyonel an li ser pergalek rastîn, têketinek çalakiyên bernameyê têne berhev kirin û li pelek tê nivîsandin. Ji vê têketinê re şop tê gotin. Bi tiştê ku tê vekolîn ve girêdayî ye, dibe ku şop rêwerzên îcrakar, navnîşanên bîranînê, hejmarên portê, û agahdariya qutbûnê bihewîne.

Gava paşîn "lîstina" şopê ye, dema ku simulatora demjimêr-bi-saetê şopê dixwîne û hemî rêwerzên ku tê de hatine nivîsandin bicîh tîne. Di dawiyê de, em dema darvekirina vê beşê bernameyê, û hem jî taybetmendiyên cihêreng ên vê pêvajoyê digirin, ji bo nimûne, rêjeya lêdanên di cache de.

Taybetmendiyek girîng a xebata bi şopan re determînîzm e, ango bi meşandina simulasyonê bi awayê ku li jor hatî destnîşan kirin, em dîsa û dîsa heman rêzika çalakiyan dubare dikin. Ev yek dihêle, bi guheztina pîvanên modelê (qebareyên cache, tampon û dorê) û bi karanîna algorîtmayên navxweyî yên cihêreng an birêkûpêkkirina wan, lêkolîn bikin ka pîvanek taybetî çawa bandorê li performansa pergalê dike û kîjan vebijark encamên çêtirîn dide. Hemî ev dikare bi modela cîhaza prototîpê ve were kirin berî ku prototîpek hardware ya rastîn were afirandin.

Tevliheviya vê nêzîkatiyê di hewcedariya pêşî de ye ku serîlêdanê bimeşîne û şopê berhev bike, û her weha mezinahiya mezin a pelê şopê. Feydeyan vê yekê vedihewîne ku bes e ku meriv tenê beşek cîhazê an platforma balkêş simule bike, dema ku simulasyona bi darvekirinê bi gelemperî modelek bêkêmasî hewce dike.

Ji ber vê yekê, di vê gotarê de me li taybetmendiyên simulasyona tev-platformê nihêrî, li ser leza pêkanînên di astên cihêreng, simulasyona demjimêr-bi-cycle û şopan de axivî. Di gotara din de ez ê senaryoyên sereke yên ji bo karanîna simulatoran, hem ji bo mebestên kesane û hem jî ji hêla pêşveçûnê ve di pargîdaniyên mezin de vebêjim.

Source: www.habr.com

Add a comment