Емулатор

Из Википедије, слободне енциклопедије
Ed NL icon.png
Овај чланак је део пројекта семинарских радова на Високој школи електротехнике и рачунарства струковних студија у Београду.
Датум уноса: март—мај 2016.
Википедијанци: Ова група студената ће уређивати у ГИП-у и молимо вас да не пребацујете овај чланак у друге именске просторе Википедије.
Позивамо вас да помогнете студентима при уређивању и допринесете да њихови уноси буду што квалитетнији.


Emulator je softver koji omogućava da se određeni program ili proces izvršava na platformi (računarskoj arhitekturi ili operativnom sistemu) drugačijoj od one za koju je predviđen. Praktično dozvoljava sistemu domaćina da pokreće programe i periferne uređaje sistema gosta, imitirajući njegove karakteristike.

Dijagram arhitekture emulatora


Emulacija u računarstvu[уреди]

Emulacija predstavlja sposobnost računarskog programa da se ugleda (imitira) drugi program ili uređaj. Ova tehnika se koristi kod mnogih računarskih uređaja kako bi se izbegao proces programiranja za svaku noviju verziju iste vrste uređaja. Na primer većina štampača koristi softver za HP štampače, i ako nisu od istog proizvođača, imitirajući njegov softver u emulaciji.

Emulacija adresira prirodno okruženje digitalnog objekta I rekreira je na željenoj platformi. Što znači da emulator dozvoljava pristup bilo kom programu na bilo kojoj platformi, dok softver radi u svom prirodnom okruženju.[1]


Džeferi Rotenberg, raniji zagovornik emulacije, tvrdi da Idealni pristup bi se dobio jedinstvenim proširenjem platformi, dugoročno rešenje koje bi bilo dizajnirano jednom za svagda I bilo instalirano automatski I sinhronizovano za svaku vrstu datoteke I medija. Dalje je instraživao I načine kako da ,ne samo zastarele, već I buduće sisteme uskladi sa trenutnim softverom.[2]


Tehnika emulacije se najčešće koristi tokom projektovanja I razvoja novih operativnih sistema. Ona olakšava proces razvoja pružajući mogućnost otkrivanja I popravke nedostataka u dizajnu I pre nego što se sistem izgradi. Posebnu svrhu ima u dizajniranju multi-jezgarnih sistema, gde se greške jako teško uočavaju I popravljaju bez posedovanja virtuelnog hardvera. Ova tehnika omogućava razvoj softvera I pre nego što se njegova platforma izgradi.

Struktura emulatora[уреди]

Emulator je podeljen po modulima koji striktno odgovaraju emulisanom podsistemu računara. Najčešće, struktura se sastoji od sledećih modula:

Memorija podsistema[уреди]

Moguće je sniziti memoriju podsistema na samo par elemenata čija veličina nije znatno veća od emulirane reči. Međutim, ovaj model vrlo lako propada, čim pronađe jednu lokaciju u logičkoj memoriji kojoj ne odgovara fizička memorija. Ovaj slučaj se dešava kad emulirani hardver dozvoli napredno upravljanje memorijom. U tom slučaju, MMU logika može da se ugradi u memoriju emulatora, napravi svoj modul I integriše se u CPU simulatora. Čak I ako kompjuter nema MMU logiku, postoje I drugi faktori koji narušavaju balans između logičke I fizičke memorije.

Kao rezultat toga, većina emulatora sprovodi najmanje dve procedure za pisanje I čitanje logičke memorije, zadatak ovih procedura jeste mapiranje objekata I njihov ispravan pristup lokacji.[3]

CPU simulator[уреди]

Simulator procesora je najkomplikovaniji deo emulatora. Mnogi emulatori su napisani koriščenjem prethodno pripremljenih simulatora, kako bi se usredsredili na dobru I efikasnu emulaciju same mašine. Najjednostavniji oblik ovakvih simulatora jeste prevodilac, kompjuterski program koji prati izvršni kod emulacije I izvršava svaku operaciju koja semantički odgovara originalnim uputstvima. Ovo je omogućeno dodeljivanjem promenljive za svaki registar simuliranog procesora. Logika simuliranog procesora se tada direktno prevodi na softverski algoritam, stvarajući re-implementaciju koja u osnovi kopira originalni hardver. Prevodioci su veoma popularni kao kompjuterski simulatori, jer su mnogo jednostavniji I praktičniji nego druga alternativna rešenja. Međutim, do greške u tumačenju može doći kada emulirani računar ima brzinu procesora istog reda veličine kao I domaćin mašina. Do skoro se ovakva emulacija smatrala nepraktičnom I nemogućom prema mnogima. Ono što je omogućilo napredak jeste dinamička tehnika rekompajliranja.[3]

I/O uređaji[уреди]

Većina emulatora ne oponaša glavnu sistemsku magistralu. Zato se svaki I/O uređaj tretira kao poseban slučaj, a ne u skladu sa interfejsom za virtuelne periferije. Ovo dovodi do prednosti u performansama, jer je svaki I/O uređaj prilagođen karakteristikama emuliranog uređaja.

Jedinstvena I/O API je bolje osmišljena I ima tu prednost da automatski obezbeđuje dodatni servis koji je nezavistan od virtuelnog uređaja, a koristi se u emulatoru. Čak I u ovakvim uređajima, u osnovi postoji zajednička infrastruktura za upravljanje prekidima koja procesoru dozvoljava da piše I čita iz fizičke memorije.[3]

Tipovi emulatora[уреди]

Većina emulatora oponaša samo hardversku arhitekturu, ali ako određeni softver zahteva specifični operativni sistem ili firmvajer, onda se i oni moraju prilagoditi. I operativni sistem i softver će tada biti interpretirani od strane emulatora, neće sami biti dodeljeni rodnom hardveru. Pored ovog prevodioca za binarni jezik i ostale komponente, kao što su ulazne i izlazne, moraju biti definisane u virtualnom obliku takođe.

Emulacija bi mogla da se dovede do tog stepena da virtuelno stvori svoj izvor energije iz stvarnog strujnog kola, na ovom neobičnom rešenju se radi godina ali je za sada samo revolucionalna ideja. Razvoj emulatora se zaustavio na simulaciji hardverskih specifikacija i digitalne logike. Emulacija novih platformi zahteva izuzetnu preciznost, do nivoa emulacije pojedinačnih generatora takta, nepredviđenih analognih elemenata i implementiranih grešaka.[4]

Prevodioci mašinskih kodova[уреди]

Ova vrsta emulatora tumači mašinski kod kao binarne brojeve i tako obrađuje podatke. Ova vrsta emulatora se koristi prilikom testiranja firmvajera ili prilikom pravljena programa za drugačiju platformu od one na kojoj se radi. Interfejs sa realizacijom može i ne mora da postoji, ako postoji onda je u formi električnog interfejsa.

[5]

Prevodioci kompajlera[уреди]

Ova vrsta emulatora tumači nekompajlirane kompjuterske programe ili skripte, radi na podacima sa zadatkom da vrati informaciju nazad do realizacije. Ovi emulatori se koriste za proveru implementacije i za definisanje anomalija u kodu, kako bi se osigurala mašina.[5]

Virtualna realnost[уреди]

Ovaj tip emulatora imitira ponašanje fizičkog subjekta, tako što prima podatke iz njegove implementacije i zatim šalje nazad informacije u realizaciju koja utiče na promene u originalnom okruženju. Interfejs ovih emulatora može da sadrži poruke u različitim medijima (serijske saobraćajnice), logičke kontrolore i druge komponente za prilagođavanje. [6]

Virtualna realnost sa fizičkim komponentama[уреди]

Ova vrsta emulatora sadrži drugi nivo emulacije sa određenim fizičkim komponentama, kao pomagala za dobijanje povratne informacije i poboljšanje virtualne realnosti. Najpoznatiji slučaj jeste emulacije aviona, tj njegovih komandi i fizičke pregibne kabine zajedno sa kompletnom simulacijom leta i turbulencija. Ovi emulatori se koriste pri interakciji ljudi i mašina.


Konzolni emulatori[уреди]

Emulatori konzola za video igre su programi koji omogućavaju računaru ili konzoli da pokrenu igru koja originalno nije dizajnirana za tu platformu. Najčešće se koriste za starije igrice čiju je konzolu nemoguće kupiti danas, ali isto tako I za prevođenje, dopunjavanje I menjanje postojeće igre.

Najteže je postići željenu brzinu frejmova po sekundi, jer dizajneri starijih igrica nisu predvideli današnje performanse. Igra kreirana za računar sa 30 Mhz će računaru sa 300 Mhz pružiti isti utisak. Neki programi, kao što su DOS programi, se neće čak ni pokrenuti na bržim računarima. Posebno pri emulaciji kompjutera koji su tipa zatvorena kutija, kod kojih izmena središnjeg sistema nije moguća, softver koristi specifične tehnike kod kojih je od velike važnosti brzina procesora.

Kod i podaci igre se obično isporučuju na emulator u obliku ROM fajla (kopija igre u obliku patrona) ili ISO fajla (za sisteme koji koriste optičke medije). Većina igrica u naslovu sadrži autorska prava, koja imaju svoju cenu i nakon mnogo urađenih kopija i narušene popularnosti, pa igrači ne žele validno da kupe igru koju mogu da skinu sa interneta besplatno i igraju je na svom računaru čak i bez zahtevajuće konzole. Internet je neograničeno pomogao razvoju konzolnih emulatora, pa je tako u poslednjih par godina dizajnirano više vrsta emulatora za istu konzolu.[7]

Emulator za Plejstejšn 1 na računaru

Sega[уреди]

OpenEmu, Genesis Plus, NullDC, Demul, Provenance [8]

Nintendo[уреди]

EmiNes, VisualBoyAdvance, Nester, Project64, Dolphin [8]

Playstation[уреди]

ePSXe, Xebra, PCSX2, Mednafen, Nucleus [8]

Xbox[уреди]

Xenia, Xbox One, Xeon [8]

Spoljašnje veze[уреди]

Reference[уреди]