Mga simulator sa mga sistema sa kompyuter: usa ka pamilyar nga full-platform simulator ug wala mailhi nga sunud-sunod nga orasan ug mga pagsubay

Sa ikaduha nga bahin sa artikulo bahin sa mga simulator sa sistema sa kompyuter, magpadayon ako sa paghisgot sa usa ka yano nga pasiuna nga porma bahin sa mga simulator sa kompyuter, nga mao ang bahin sa simulation sa tibuuk nga platform, nga kanunay nga nahibal-an sa kasagaran nga tiggamit, ingon man bahin sa orasan. -modelo sa orasan ug mga pagsubay, nga mas komon sa mga lingin sa developer.

Mga simulator sa mga sistema sa kompyuter: usa ka pamilyar nga full-platform simulator ug wala mailhi nga sunud-sunod nga orasan ug mga pagsubay

Π’ ang una nga bahin Gihisgutan nako kung unsa ang mga simulator sa kinatibuk-an, ingon man ang bahin sa lebel sa simulation. Karon, pinasukad sa kana nga kahibalo, nagsugyot ako nga mag-dive og gamay ug maghisgot bahin sa full-platform nga simulation, kung giunsa ang pagkolekta sa mga pagsubay, kung unsa ang buhaton niini sa ulahi, ingon man ang bahin sa microarchitectural emulation sa orasan.

Ang bug-os nga platform simulator, o "Ang nag-inusara sa uma dili usa ka manggugubat"

Kung gusto nimong tun-an ang operasyon sa usa ka piho nga aparato, pananglitan, usa ka network card, o isulat ang firmware o usa ka drayber alang sa kini nga aparato, nan ang ingon nga aparato mahimong i-simulate nga gilain. Bisan pa, ang paggamit niini sa pagkalain gikan sa nahabilin nga imprastraktura dili kaayo kombenyente. Aron makadagan ang katugbang nga drayber, kinahanglan nimo ang usa ka sentral nga processor, memorya, pag-access sa usa ka data bus, ug uban pa. Dugang pa, ang drayber nanginahanglan usa ka operating system (OS) ug usa ka stack sa network aron molihok. Dugang pa, mahimong gikinahanglan ang usa ka separado nga packet generator ug response server.

Ang usa ka full-platform simulator nagmugna og usa ka palibot alang sa pagpadagan sa usa ka kompleto nga software stack, nga naglakip sa tanan gikan sa BIOS ug bootloader ngadto sa OS mismo ug sa lain-laing mga subsystem niini, sama sa sama nga network stack, mga drayber, ug user-level nga mga aplikasyon. Aron mahimo kini, kini nagpatuman sa mga modelo sa software sa kadaghanan nga mga gamit sa kompyuter: processor ug memorya, disk, input/output device (keyboard, mouse, display), ingon man ang parehas nga network card.

Sa ubos usa ka block diagram sa x58 chipset gikan sa Intel. Ang usa ka full-platform nga computer simulator niini nga chipset nagkinahanglan sa pagpatuman sa kadaghanan sa mga nalista nga mga himan, lakip na ang sulod sa IOH (Input/Output Hub) ug ICH (Input/Output Controller Hub), nga wala gihulagway sa detalye sa block diagram. . Bisan pa, ingon sa gipakita sa praktis, wala’y daghang mga aparato nga wala gigamit sa software nga among padaganon. Ang mga modelo sa maong mga himan dili kinahanglan nga himoon.

Mga simulator sa mga sistema sa kompyuter: usa ka pamilyar nga full-platform simulator ug wala mailhi nga sunud-sunod nga orasan ug mga pagsubay

Kasagaran, ang mga full-platform nga simulator gipatuman sa lebel sa panudlo sa processor (ISA, tan-awa sa ubos). miaging artikulo). Kini nagtugot kanimo sa paghimo sa simulator mismo nga medyo dali ug dili mahal. Ang lebel sa ISA maayo usab tungod kay kini nagpabilin nga mas o dili kaayo makanunayon, dili sama, pananglitan, ang lebel sa API / ABI, nga kanunay nga nagbag-o. Dugang pa, ang pagpatuman sa lebel sa instruksyon nagtugot kanimo sa pagdagan sa gitawag nga unmodified binary software, nga mao, pagdagan na nga gihugpong nga code nga walay bisan unsang mga pagbag-o, sama gayud nga kini gigamit sa tinuod nga hardware. Sa laing pagkasulti, makahimo ka og kopya ("dump") sa imong hard drive, ipiho kini isip usa ka hulagway alang sa usa ka modelo sa usa ka full-platform simulator, ug voila! - Ang OS ug uban pang mga programa gikarga sa simulator nga wala’y dugang nga mga aksyon.

Pagpasundayag sa simulator

Mga simulator sa mga sistema sa kompyuter: usa ka pamilyar nga full-platform simulator ug wala mailhi nga sunud-sunod nga orasan ug mga pagsubay

Sama sa nahisgotan na sa ibabaw, ang proseso sa pagsundog sa tibuuk nga sistema, nga mao, ang tanan nga mga aparato niini, usa ka hinay nga buluhaton. Kung ipatuman usab nimo kining tanan sa usa ka detalyado nga lebel, pananglitan, microarchitectural o lohikal, nan ang pagpatay mahimong labi ka hinay. Apan ang lebel sa panudlo mao ang angay nga kapilian ug gitugotan ang OS ug mga programa nga ipatuman sa katulin nga igo alang sa tiggamit nga makig-uban kanila nga komportable.

Dinhi kini angay nga hisgutan ang hilisgutan sa pasundayag sa simulator. Kasagaran kini gisukod sa IPS (instruksyon kada segundo), mas tukma sa MIPS (milyon nga IPS), nga mao, ang gidaghanon sa mga instruksyon sa processor nga gipatuman sa simulator sa usa ka segundo. Sa samang higayon, ang gikusgon sa simulation nagdepende usab sa performance sa sistema diin ang simulation mismo midagan. Busa, mahimong mas husto ang paghisgot mahitungod sa "paghinay" sa simulator kon itandi sa orihinal nga sistema.

Ang labing komon nga full-platform simulators sa merkado, sama sa QEMU, VirtualBox o VmWare Workstation, adunay maayo nga performance. Mahimong dili gani mamatikdan sa tiggamit nga ang trabaho nagpadayon sa simulator. Nahitabo kini salamat sa espesyal nga kapabilidad sa virtualization nga gipatuman sa mga processor, binary translation algorithm ug uban pang makapaikag nga mga butang. Kining tanan usa ka hilisgutan alang sa usa ka bulag nga artikulo, apan sa laktud, ang virtualization usa ka bahin sa hardware sa modernong mga processor nga nagtugot sa mga simulator nga dili magsundog sa mga instruksyon, apan ipadala kini alang sa pagpatay direkta ngadto sa tinuod nga processor, kung, siyempre, ang mga arkitektura sa parehas ang simulator ug ang processor. Ang binary nga paghubad mao ang paghubad sa guest machine code ngadto sa host code ug sunod nga pagpatuman sa tinuod nga processor. Ingon usa ka sangputanan, ang simulation gamay ra nga hinay, 5-10 ka beses, ug kanunay nga nagdagan sa parehas nga katulin sa tinuud nga sistema. Bisan kung kini naimpluwensyahan sa daghang mga hinungdan. Pananglitan, kung gusto namon nga i-simulate ang usa ka sistema nga adunay daghang dosena nga mga processor, nan ang katulin moubos dayon sa kini nga daghang dosena ka beses. Sa laing bahin, ang mga simulator sama sa Simics sa pinakabag-o nga mga bersyon nagsuporta sa multiprocessor host hardware ug epektibo nga pagparis sa simulated cores ngadto sa cores sa tinuod nga processor.

Kung maghisgot kita bahin sa katulin sa microarchitectural simulation, nan kini kasagaran daghang mga order sa magnitude, mga 1000-10000 ka beses nga mas hinay kaysa pagpatay sa usa ka regular nga kompyuter, nga wala’y simulation. Ug ang mga pagpatuman sa lebel sa lohikal nga mga elemento mas hinay sa daghang mga order sa kadako. Busa, ang usa ka FPGA gigamit ingon usa ka emulator sa kini nga lebel, nga mahimo’g madugangan ang pasundayag.

Ang graph sa ubos nagpakita sa usa ka gibanabana nga pagsalig sa katulin sa simulation sa detalye sa modelo.

Mga simulator sa mga sistema sa kompyuter: usa ka pamilyar nga full-platform simulator ug wala mailhi nga sunud-sunod nga orasan ug mga pagsubay

Beat-by-beat simulation

Bisan pa sa ilang ubos nga katulin sa pagpatuman, ang mga microarchitectural simulators komon kaayo. Ang simulation sa internal nga mga bloke sa processor gikinahanglan aron sa tukma nga pagsundog sa oras sa pagpatuman sa matag instruksiyon. Ang dili pagsinabtanay mahimo’g motungha dinhi - pagkahuman, ingon og, ngano nga dili na lang i-program ang oras sa pagpatuman alang sa matag panudlo. Apan ang ingon nga usa ka simulator mahimong dili tukma, tungod kay ang oras sa pagpatuman sa parehas nga panudlo mahimong magkalainlain gikan sa pagtawag sa pagtawag.

Ang pinakasimple nga pananglitan mao ang pagtudlo sa pag-access sa memorya. Kung ang gihangyo nga lokasyon sa panumduman anaa sa cache, nan ang oras sa pagpatuman gamay ra. Kung kini nga kasayuran wala sa cache ("cache miss"), nan kini makadugang pag-ayo sa oras sa pagpatuman sa panudlo. Busa, gikinahanglan ang usa ka modelo sa cache alang sa tukma nga simulation. Bisan pa, ang butang dili limitado sa modelo sa cache. Ang processor dili lang maghulat alang sa data nga makuha gikan sa memorya kung wala kini sa cache. Hinunoa, magsugod kini sa pagpatuman sa sunod nga mga instruksyon, pagpili niadtong wala magdepende sa resulta sa pagbasa gikan sa memorya. Mao kini ang gitawag nga "out of order" execution (OOO, out of order execution), gikinahanglan aron mamenosan ang oras sa pag-idle sa processor. Ang pag-modelo sa katugbang nga mga bloke sa processor makatabang sa pagkonsiderar niining tanan kung gikalkula ang oras sa pagpatuman sa mga panudlo. Taliwala niini nga mga instruksyon, nga gipatuman samtang ang resulta sa pagbasa gikan sa memorya gipaabot, ang usa ka conditional jump operation mahimong mahitabo. Kung ang resulta sa kondisyon wala mahibal-an sa pagkakaron, nan ang processor dili mohunong sa pagpatuman, apan naghimo sa usa ka "tag-an", naghimo sa angay nga sanga ug nagpadayon sa aktibo nga pagpatuman sa mga instruksyon gikan sa punto sa transisyon. Ang ingon nga block, nga gitawag nga branch predictor, kinahanglan usab nga ipatuman sa microarchitectural simulator.

Ang hulagway sa ubos nagpakita sa mga nag-unang mga bloke sa processor, dili kinahanglan nga mahibal-an kini, kini gipakita lamang aron ipakita ang pagkakomplikado sa pagpatuman sa microarchitectural.

Mga simulator sa mga sistema sa kompyuter: usa ka pamilyar nga full-platform simulator ug wala mailhi nga sunud-sunod nga orasan ug mga pagsubay

Ang operasyon sa tanan nga kini nga mga bloke sa usa ka tinuud nga processor gi-synchronize sa mga espesyal nga signal sa orasan, ug parehas ang mahitabo sa modelo. Ang ingon nga microarchitectural simulator gitawag nga cycle nga tukma. Ang panguna nga katuyoan niini mao ang tukma nga pagtagna sa pasundayag sa processor nga gipalambo ug / o pagkalkulo sa oras sa pagpatuman sa usa ka piho nga programa, pananglitan, usa ka benchmark. Kung ang mga kantidad mas ubos kaysa gikinahanglan, nan kinahanglan nga usbon ang mga algorithm ug mga bloke sa processor o i-optimize ang programa.

Sama sa gipakita sa ibabaw, ang clock-by-clock simulation hinay kaayo, mao nga gigamit lamang kini sa pagtuon sa pipila ka mga gutlo sa operasyon sa usa ka programa, diin gikinahanglan nga mahibal-an ang tinuod nga katulin sa pagpatuman sa programa ug pagtimbang-timbang sa umaabot nga performance sa device kansang Ang prototype gi-simulate.

Sa kini nga kaso, ang usa ka praktikal nga simulator gigamit aron i-simulate ang nahabilin nga oras sa pagdagan sa programa. Sa unsang paagi kini nga kombinasyon sa paggamit mahitabo sa tinuod? Una, gilansad ang functional simulator, diin ang OS ug ang tanan nga gikinahanglan aron mapadagan ang programa nga gitun-an gikarga. Pagkahuman, dili kami interesado sa OS mismo, ni sa mga inisyal nga yugto sa paglansad sa programa, pag-configure niini, ug uban pa. Bisan pa, dili usab naton malaktawan kini nga mga bahin ug magpadayon dayon sa pagpatuman sa programa gikan sa tunga. Busa, kining tanan nga pasiuna nga mga lakang gipadagan sa usa ka functional simulator. Human mapatuman ang programa sa panahon sa interes namo, posible ang duha ka opsyon. Mahimo nimong ilisan ang modelo sa usa ka modelo sa orasan sa matag siklo ug ipadayon ang pagpatuman. Ang simulation mode nga naggamit sa executable code (nga mao, regular compiled program files) gitawag nga execution driven simulation. Kini ang labing kasagaran nga kapilian sa simulation. Posible usab ang laing paagi - pagsubay sa gimaneho nga simulation.

Pagsubay nga gibase sa simulation

Kini naglangkob sa duha ka mga lakang. Gamit ang usa ka functional simulator o sa usa ka tinuod nga sistema, usa ka log sa mga aksyon sa programa ang nakolekta ug gisulat sa usa ka file. Kini nga log gitawag nga usa ka pagsubay. Depende sa kung unsa ang gisusi, ang pagsubay mahimong maglakip sa mga executable nga instruksyon, mga adres sa memorya, mga numero sa pantalan, ug impormasyon sa interrupt.

Ang sunod nga lakang mao ang "pagdula" sa pagsubay, kung ang orasan-por-orasan nga simulator nagbasa sa pagsubay ug nagpatuman sa tanan nga mga panudlo nga gisulat niini. Sa katapusan, makuha namon ang oras sa pagpatuman sa kini nga piraso sa programa, ingon man ang lainlaing mga kinaiya sa kini nga proseso, pananglitan, ang porsyento sa mga hit sa cache.

Ang usa ka importante nga bahin sa pagtrabaho uban sa mga pagsubay mao ang determinismo, nga mao, pinaagi sa pagpadagan sa simulation sa paagi nga gihulagway sa ibabaw, sa balik-balik nga kita reproduce sa sama nga han-ay sa mga aksyon. Kini nagpaposible, pinaagi sa pag-usab sa mga parameter sa modelo (cache, buffer ug queue nga mga gidak-on) ug paggamit sa lain-laing internal nga mga algorithm o pag-tune niini, aron tun-an kon sa unsang paagi ang usa ka partikular nga parameter makaapekto sa performance sa sistema ug unsa nga opsyon ang naghatag sa pinakamaayo nga resulta. Mahimo kining tanan gamit ang modelo sa prototype device sa dili pa maghimo ug aktuwal nga prototype sa hardware.

Ang pagkakomplikado niini nga pamaagi anaa sa panginahanglan nga unahon ang aplikasyon ug kolektahon ang pagsubay, ingon man ang dako nga gidak-on sa trace file. Ang mga bentaha naglakip sa kamatuoran nga igo na ang pagsundog lamang sa bahin sa device o plataporma sa interes, samtang ang simulation pinaagi sa pagpatuman kasagaran nagkinahanglan og kompleto nga modelo.

Busa, niini nga artikulo atong gitan-aw ang mga bahin sa bug-os nga plataporma simulation, naghisgot bahin sa katulin sa pagpatuman sa lain-laing mga lebel, clock-by-cycle simulation ug mga pagsubay. Sa sunod nga artikulo akong ihulagway ang mga nag-unang mga senaryo sa paggamit sa mga simulator, alang sa personal nga katuyoan ug gikan sa punto sa pag-uswag sa mga dagkong kompanya.

Source: www.habr.com

Idugang sa usa ka comment