Sistema informatikoen simulagailuak: plataforma osoko simulagailu ezaguna eta erlojuaren orratzen noranzko eta arrasto ezezaguna

Sistema informatikoen simulagailuei buruzko artikuluaren bigarren zatian, ordenagailuko simulagailuei buruzko sarrera erraz batean hitz egiten jarraituko dut, hots, plataforma osoko simulazioari buruz, erabiltzaile arruntak gehien topatzen duenaz, baita erlojuaren aurrerapenaz ere. -erlojuaren eredua eta arrastoak, garatzaileen zirkuluetan ohikoagoak direnak.

Sistema informatikoen simulagailuak: plataforma osoko simulagailu ezaguna eta erlojuaren orratzen noranzko eta arrasto ezezaguna

Π’ Lehenengo zatia Simulagailuak orokorrean zer diren hitz egin nuen, baita simulazio mailei buruz ere. Orain, ezagutza horretatik abiatuta, apur bat sakontzea proposatzen dut eta plataforma osoko simulazioaz hitz egitea, aztarnak nola bildu, gero haiekin zer egin, baita erlojuz erloju mikroarkitekturaren emulazioaz ere.

Plataforma osoa simulagailua, edo "Bakarrik eremuan ez da gudaria"

Gailu zehatz baten funtzionamendua aztertu nahi baduzu, adibidez, sare-txartel bat, edo gailu honetarako firmwarea edo kontrolatzailea idatzi nahi baduzu, gailu hori bereizita simulatu daiteke. Hala ere, gainerako azpiegituretatik isolatuta erabiltzea ez da oso erosoa. Dagokion kontrolatzailea exekutatzeko, prozesadore zentrala, memoria, datu-buserako sarbidea eta abar beharko dituzu. Gainera, kontrolatzaileak sistema eragile bat (OS) eta sare pila bat behar ditu funtzionatzeko. Horrez gain, pakete-sorgailu eta erantzun-zerbitzari bereizi bat behar da.

Plataforma osoko simulagailu batek software-pila oso bat exekutatzeko ingurune bat sortzen du, BIOS eta abio-kargagailutik hasi eta OS bera eta bere azpisistema ezberdinetaraino, hala nola sare-pila bera, kontrolatzaileak eta erabiltzaile-mailako aplikazioak. Horretarako, gailu informatiko gehienen software-ereduak ezartzen ditu: prozesadorea eta memoria, diskoa, sarrera/irteera gailuak (teklatua, sagua, pantaila), baita sare-txartel bera ere.

Jarraian, Intel-en x58 chipset-aren bloke-diagrama dago. Chipset honetako plataforma osoko ordenagailu-simulagailuak zerrendatutako gailu gehienak inplementatzea eskatzen du, bloke-diagraman zehatz-mehatz azaltzen ez diren IOH (Input/Output Hub) eta ICH (Input/Output Controller Hub) barne daudenak barne. . Nahiz eta, praktikak erakusten duen moduan, exekutatu behar dugun softwareak erabiltzen ez dituen gailu asko ez daude. Horrelako gailuen ereduak ez dira sortu behar.

Sistema informatikoen simulagailuak: plataforma osoko simulagailu ezaguna eta erlojuaren orratzen noranzko eta arrasto ezezaguna

Gehienetan, plataforma osoko simulagailuak prozesadorearen instrukzio mailan ezartzen dira (ISA, ikus behean). aurreko artikulua). Honek simulagailua bera nahiko azkar eta merke sortzeko aukera ematen du. ISA maila ere ona da, gutxi gorabehera konstante mantentzen delako, API/ABI maila ez bezala, adibidez, maizago aldatzen baita. Horrez gain, instrukzio mailan inplementatzeari esker, aldatu gabeko software bitar deritzona exekutatu dezakezu, hau da, dagoeneko konpilatutako kodea exekutatu behar da inolako aldaketarik gabe, hardware errealean erabiltzen den bezalaxe. Beste era batera esanda, zure disko gogorraren kopia ("iraulketa") egin dezakezu, eredu baten irudi gisa zehaztu plataforma osoko simulagailu batean, eta listo! – OS eta beste programa batzuk simulagailuan kargatzen dira ekintza gehigarririk gabe.

Simulagailuaren errendimendua

Sistema informatikoen simulagailuak: plataforma osoko simulagailu ezaguna eta erlojuaren orratzen noranzko eta arrasto ezezaguna

Goian aipatu dugun bezala, sistema osoa, hau da, bere gailu guztiak simulatzeko prozesua nahiko motela da. Hau guztia maila oso zehatzean ezartzen baduzu, adibidez, mikroarkitekturan edo logikoan, orduan exekuzioa oso motela izango da. Baina instrukzio-maila aukera egokia da eta sistema eragilea eta programak nahikoa abiaduran exekutatzeko aukera ematen du erabiltzaileak haiekin eroso elkarreragiteko.

Hemen egokia litzateke simulagailuaren errendimenduaren gaia ukitzea. Normalean IPStan (segunduko instrukzioak) neurtzen da, zehatzago MIPSetan (milioi IPS), hau da, simulagailuak segundo batean exekutatutako prozesadorearen instrukzioen kopurua. Aldi berean, simulazioaren abiadura simulazioa bera exekutatzen den sistemaren errendimenduaren araberakoa da. Hori dela eta, zuzenagoa izan daiteke simulagailuaren "moteltzeari buruz" hitz egitea jatorrizko sistemarekin alderatuta.

Merkatuan dauden plataforma osoko simulagailu ohikoenek, hala nola QEMU, VirtualBox edo VmWare Workstation, errendimendu ona dute. Baliteke erabiltzaileari ez zaiola nabarituko simulagailuan lana egiten ari denik. Prozesadoreetan, itzulpen algoritmo bitarretan eta beste gauza interesgarri batzuetan inplementatutako birtualizazio gaitasun bereziei esker gertatzen da. Hau guztia artikulu bereizi baterako gaia da, baina, laburbilduz, birtualizazioa prozesadore modernoen hardware-ezaugarri bat da, simuladoreei argibideak ez simulatzeko aukera ematen diena, baizik eta zuzen-zuzenean exekutatzeko benetako prozesadore batera bidaltzeko, baldin eta, noski, arkitekturak. simulagailua eta prozesadorea antzekoak dira. Itzulpen bitarra makina gonbidatuaren kodea ostalari-kodera itzultzea da eta ondorengo prozesadore erreal batean exekutatzen da. Ondorioz, simulazioa apur bat motelagoa da, 5-10 aldiz, eta askotan sistema errealaren abiadura berean exekutatzen da. Faktore askok eragina izan arren. Adibidez, hainbat dozena prozesadore dituen sistema bat simulatu nahi badugu, orduan abiadura berehala jaitsiko da hainbat dozena aldiz. Bestalde, azken bertsioetako Simics bezalako simulagailuek prozesadore anitzeko ostalari hardwarea onartzen dute eta simulatutako nukleoak modu eraginkorrean paralelizatzen dituzte benetako prozesadore baten nukleoetan.

Simulazio mikroarkitektonikoaren abiaduraz hitz egiten badugu, orduan hainbat magnitude ordena izan ohi da, ordenagailu arrunt batean exekuzioa baino 1000-10000 aldiz motelagoa, simulaziorik gabe. Eta elementu logikoen mailan inplementazioak motelagoak dira hainbat magnitude ordenatan. Hori dela eta, FPGA bat emuladore gisa erabiltzen da maila honetan, eta horrek errendimendua nabarmen handitu dezake.

Beheko grafikoan simulazio-abiadurak ereduaren xehetasunekiko gutxi gorabeherako mendekotasuna erakusten du.

Sistema informatikoen simulagailuak: plataforma osoko simulagailu ezaguna eta erlojuaren orratzen noranzko eta arrasto ezezaguna

Taupadaz taupada simulazioa

Exekuzio-abiadura txikia izan arren, mikroarkitektura-simulagailuak nahiko ohikoak dira. Prozesadorearen barne blokeen simulazioa beharrezkoa da instrukzio bakoitzaren exekuzio denbora zehaztasunez simulatzeko. Gaizki-ulertzea sor daiteke hemen; azken finean, badirudi zergatik ez programatu besterik gabe instrukzio bakoitzaren exekuzio-denbora. Baina horrelako simulagailu bat oso zehaztugabea izango da, instrukzio beraren exekuzio-denbora desberdina izan baitaiteke dei batetik bestera.

Adibiderik errazena memoria sartzeko instrukzioa da. Eskatutako memoria-kokapena cachean eskuragarri badago, exekuzio-denbora minimoa izango da. Informazio hau cachean ez badago ("cache falta"), orduan asko handituko da instrukzioaren exekuzio-denbora. Beraz, simulazio zehatza egiteko cache eredua behar da. Hala ere, kontua ez da cache eredura mugatzen. Prozesadoreak ez du memoriatik datuak berreskuratu arte itxarongo, cachean ez dagoenean. Horren ordez, hurrengo argibideak exekutatzen hasiko da, memoriatik irakurtzearen emaitzaren araberakoak ez direnak aukeratuz. "Ordenatik kanpo" exekuzioa (OOO, ordenarik gabe exekuzioa) deritzona da, prozesadorearen inaktibo denbora gutxitzeko beharrezkoa. Dagozkion prozesadore-blokeen modelizazioak hori guztia kontuan hartzen lagunduko du instrukzioen exekuzio-denbora kalkulatzerakoan. Instrukzio horien artean, memoriako irakurketaren emaitza itxaroten den bitartean exekutatuta, baldintzapeko salto-eragiketa bat gerta daiteke. Baldintzaren emaitza momentuz ezezaguna bada, berriro prozesadoreak ez du exekuzioa gelditzen, baina "asmatzen" du, egokia den adar bat egiten du eta trantsizio puntutik argibideak modu proaktiboan exekutatzen jarraitzen du. Horrelako bloke bat, adar-iragarlea izenekoa, mikroarkitekturako simulagailuan ere inplementatu behar da.

Beheko irudiak prozesadorearen bloke nagusiak erakusten ditu, ez da beharrezkoa ezagutzea, mikroarkitekturaren ezarpenaren konplexutasuna erakusteko bakarrik erakusten da.

Sistema informatikoen simulagailuak: plataforma osoko simulagailu ezaguna eta erlojuaren orratzen noranzko eta arrasto ezezaguna

Bloke horien guztien funtzionamendua benetako prozesadore batean sinkronizatzen da erloju-seinale berezien bidez, eta gauza bera gertatzen da ereduan. Horrelako mikroarkitekturako simulatzaile bati ziklo zehatza deritzo. Bere helburu nagusia garatzen ari den prozesadorearen errendimendua zehaztasunez aurreikustea eta/edo programa zehatz baten exekuzio-denbora kalkulatzea da, adibidez, erreferente bat. Balioak behar baino baxuagoak badira, orduan beharrezkoa izango da algoritmoak eta prozesadore blokeak aldatzea edo programa optimizatzea.

Goian erakusten den bezala, erlojuz erloju simulazioa oso motela da, beraz, programa baten funtzionamenduaren une jakin batzuk aztertzen direnean soilik erabiltzen da, non beharrezkoa den programaren exekuzioaren benetako abiadura zein den jakiteko eta gailuaren etorkizuneko errendimendua ebaluatzeko. prototipoa simulatzen ari da.

Kasu honetan, simulagailu funtzional bat erabiltzen da programaren gainerako exekuzio-denbora simulatzeko. Nola gertatzen da erabilera konbinazio hori errealitatean? Lehenik eta behin, simulagailu funtzionala abiarazten da, eta bertan kargatzen dira OS eta aztergai dugun programa exekutatzeko beharrezkoa den guztia. Azken finean, ez zaigu OS bera interesatzen, ezta programa abiarazteko hasierako faseak, bere konfigurazioa, etab. Hala ere, ezin ditugu zati hauek saltatu eta berehala programa erditik exekutatzen hasi. Hori dela eta, aurretiazko urrats hauek guztiak simulagailu funtzional batean exekutatzen dira. Programa interesatzen zaigun unera exekutatu ondoren, bi aukera daude posible. Eredua erlojuz zikloko eredu batekin ordezkatu eta exekutatzen jarraitu dezakezu. Kode exekutagarria (hau da, konpilatutako programa-fitxategi arruntak) erabiltzen duen simulazio moduari exekuzio gidatutako simulazioa deritzo. Hau da simulazio-aukera ohikoena. Beste ikuspegi bat ere posible da: traza gidatutako simulazioa.

Aztarnetan oinarritutako simulazioa

Bi urratsez osatuta dago. Simulatzaile funtzional bat erabiliz edo sistema erreal batean, programaren ekintzen erregistroa bildu eta fitxategi batean idazten da. Erregistro honi traza deitzen zaio. Aztertzen denaren arabera, arrastoak jarraibide exekutagarriak, memoria helbideak, ataka-zenbakiak eta eten-informazioa izan ditzake.

Hurrengo urratsa arrastoa "erreproduzitzea" da, erlojuz erloju-simulatzaileak arrastoa irakurtzen duenean eta bertan idatzitako jarraibide guztiak exekutatzen dituenean. Bukaeran, programaren zati honen exekuzio-denbora jasotzen dugu, baita prozesu honen hainbat ezaugarri ere, adibidez, cachean dauden hits ehunekoa.

Arrastoekin lan egitearen ezaugarri garrantzitsu bat determinismoa da, hau da, simulazioa goian deskribatutako eran exekutatuta, behin eta berriz ekintza-segida bera erreproduzitzen dugu. Horri esker, ereduaren parametroak aldatuz (cache, buffer eta ilararen tamainak) eta barne-algoritmo desberdinak erabiliz edo sintonizatuz, parametro jakin batek sistemaren errendimenduan nola eragiten duen eta zein aukera ematen duen emaitzarik onenak aztertzea posible da. Hau guztia gailu prototipoaren eredu batekin egin daiteke benetako hardware prototipo bat sortu aurretik.

Ikuspegi honen konplexutasuna lehenik aplikazioa exekutatu eta arrastoa biltzeko beharran datza, baita traza fitxategiaren tamaina izugarrian ere. Abantailen artean dago nahikoa dela interesa duen gailuaren edo plataformaren zatia soilik simulatzea, eta exekuzio bidezko simulazioak normalean eredu oso bat eskatzen du.

Beraz, artikulu honetan plataforma osoko simulazioaren ezaugarriak aztertu ditugu, maila ezberdinetako inplementazioen abiaduraz, erlojuz zikloko simulazioaz eta arrastoez hitz egin dugu. Hurrengo artikuluan simulagailuak erabiltzeko eszenatoki nagusiak deskribatuko ditut, bai helburu pertsonaletarako, bai enpresa handietako garapenaren ikuspuntutik.

Iturria: www.habr.com

Gehitu iruzkin berria