Simulator sistem komputer: simulator full-platform anu akrab sareng saarah jarum jam sareng jejak anu teu dipikanyaho

Dina bagian kadua artikel ngeunaan simulators sistem komputer, kuring bakal neruskeun ngobrol dina formulir bubuka basajan ngeunaan simulators komputer, nyaéta ngeunaan simulasi full-platform, nu pamaké rata-rata paling mindeng papanggih, kitu ogé ngeunaan jam-demi. -model jam na ngambah, nu leuwih umum di kalangan pamekar.

Simulator sistem komputer: simulator full-platform anu akrab sareng saarah jarum jam sareng jejak anu teu dipikanyaho

В bagian kahiji Kuring ngobrol ngeunaan naon simulators sacara umum, kitu ogé ngeunaan tingkat simulasi. Ayeuna, dumasar kana pangaweruh éta, kuring ngajukeun pikeun teuleum sakedik langkung jero sareng ngobrol ngeunaan simulasi platform pinuh, kumaha carana ngumpulkeun jejak, naon anu kudu dilakukeun sareng aranjeunna engké, ogé ngeunaan émulasi microarchitectural jam-demi-jam.

Simulator platform pinuh, atanapi "Nyalira di lapangan sanés pejuang"

Upami anjeun hoyong diajar operasi hiji alat khusus, contona, kartu jaringan, atanapi nyerat firmware atanapi supir pikeun alat ieu, maka alat sapertos kitu tiasa disimulasi nyalira. Sanajan kitu, ngagunakeun eta dina isolasi tina sesa infrastruktur teu pisan merenah. Pikeun ngajalankeun supir anu saluyu, anjeun peryogi prosesor sentral, mémori, aksés ka beus data, jsb. Salaku tambahan, supir butuh sistem operasi (OS) sareng tumpukan jaringan pikeun fungsina. Salaku tambahan, generator pakét sareng server réspon anu misah tiasa diperyogikeun.

Simulator full-platform nyiptakeun lingkungan pikeun ngajalankeun tumpukan parangkat lunak lengkep, anu kalebet sadayana ti BIOS sareng bootloader ka OS sorangan sareng sababaraha subsistemna, sapertos tumpukan jaringan anu sami, supir, sareng aplikasi tingkat pangguna. Jang ngalampahkeun ieu, éta nerapkeun modél parangkat lunak kalolobaan alat komputer: prosésor sareng mémori, disk, alat input / kaluaran (keyboard, mouse, tampilan), ogé kartu jaringan anu sami.

Di handap ieu diagram blok tina chipset x58 ti Intel. Simulator komputer full-platform dina chipset ieu merlukeun palaksanaan lolobana alat nu didaptarkeun, kaasup nu aya di jero IOH (Input / Output Hub) jeung ICH (Input / Output Controller Hub), nu teu digambarkeun di jéntré dina diagram blok. . Sanajan, sakumaha prakték nempokeun, aya teu loba alat nu teu dipaké ku software nu urang bade ngajalankeun. Model alat sapertos kitu henteu kedah didamel.

Simulator sistem komputer: simulator full-platform anu akrab sareng saarah jarum jam sareng jejak anu teu dipikanyaho

Paling sering, simulators full-platform dilaksanakeun dina tingkat instruksi processor (ISA, tingali di handap). artikel saméméhna). Ieu ngidinan Anjeun pikeun nyieun simulator sorangan rélatif gancang jeung inexpensively. Tingkat ISA oge alus sabab tetep leuwih atawa kurang konstan, kawas, contona, API / tingkat ABI, nu robah leuwih sering. Sajaba ti éta, palaksanaan di tingkat instruksi ngidinan Anjeun pikeun ngajalankeun disebut unmodified software binér, nyaeta, ngajalankeun kode geus disusun tanpa parobahan, persis sakumaha dipaké dina hardware nyata. Dina basa sejen, Anjeun bisa nyieun salinan ("dump") tina hard drive Anjeun, tangtukeun salaku gambar pikeun modél dina simulator full-platform, sarta voila! - OS sareng program sanésna dimuat dina simulator tanpa tindakan tambahan.

kinerja simulator

Simulator sistem komputer: simulator full-platform anu akrab sareng saarah jarum jam sareng jejak anu teu dipikanyaho

Sakumaha didadarkeun di luhur, prosés simulating sakabéh sistem, nyaeta, sadaya alat na, rada slow. Upami anjeun ogé ngalaksanakeun sadayana ieu dina tingkat anu lengkep, contona, microarchitectural atanapi logis, maka palaksanaan bakal laun pisan. Tapi tingkat instruksi mangrupikeun pilihan anu pas sareng ngamungkinkeun OS sareng program dieksekusi dina kecepatan anu cekap pikeun pangguna berinteraksi sareng aranjeunna kalayan nyaman.

Di dieu bakal cocog pikeun nyabak kana topik kinerja simulator. Biasana diukur dina IPS (parentah per detik), langkung tepatna dina MIPS (jutaan IPS), nyaéta, jumlah paréntah prosesor anu dilaksanakeun ku simulator dina sadetik. Dina waktos anu sami, laju simulasi ogé gumantung kana kinerja sistem dimana simulasi sorangan dijalankeun. Ku alatan éta, bisa jadi leuwih bener ngobrol ngeunaan "slowdown" tina simulator dibandingkeun sistem aslina.

Simulator full-platform anu paling umum di pasar, sapertos QEMU, VirtualBox atanapi VmWare Workstation, gaduh kinerja anu saé. Ieu malah moal jadi noticeable ka pamaké nu gawé keur jalan di simulator nu. Ieu kajadian berkat kamampuan virtualisasi khusus anu dilaksanakeun dina prosesor, algoritma tarjamah binér sareng hal-hal anu pikaresepeun. Ieu sadayana topik pikeun artikel anu misah, tapi singgetan, virtualisasi mangrupikeun fitur hardware tina prosesor modern anu ngamungkinkeun simulators henteu simulate paréntah, tapi ngirimkeunana pikeun dieksekusi langsung ka prosesor nyata, upami, tangtosna, arsitéktur tina. simulator jeung processor sarua. Tarjamahan binér nyaéta tarjamahan kode mesin tamu kana kode host sareng palaksanaan salajengna dina prosésor nyata. Hasilna, simulasi ngan rada laun, 5-10 kali, sarta mindeng malah dijalankeun dina speed sarua salaku sistem nyata. Sanajan ieu dipangaruhan ku loba faktor. Salaku conto, upami urang hoyong simulasi sistem sareng sababaraha belasan prosesor, maka lajuna bakal langsung turun ku sababaraha belasan kali ieu. Di sisi séjén, simulators kawas Simics dina versi panganyarna ngarojong hardware host multiprocessor tur éféktif parallelize nu cores simulated kana cores processor nyata.

Lamun urang ngobrol ngeunaan laju simulasi microarchitectural, éta biasana sababaraha ordo gedena, ngeunaan 1000-10000 kali leuwih laun ti palaksanaan dina komputer biasa, tanpa simulasi. Sareng palaksanaan dina tingkat unsur logis langkung laun ku sababaraha ordo gedéna. Ku alatan éta, FPGA dipaké salaku émulator dina tingkat ieu, nu bisa nyata ngaronjatkeun kinerja.

Grafik di handap nembongkeun gumantungna perkiraan speed simulasi on detil model.

Simulator sistem komputer: simulator full-platform anu akrab sareng saarah jarum jam sareng jejak anu teu dipikanyaho

Simulasi keok-demi-ketukan

Sanajan speed palaksanaan low maranéhanana, simulators microarchitectural cukup umum. Simulasi tina blok internal tina prosésor diperlukeun guna akurat simulate waktu palaksanaan unggal instruksi. Salah paham tiasa timbul di dieu - saatosna, sigana, naha henteu ngan ukur program waktos palaksanaan pikeun tiap instruksi. Tapi simulator ieu bakal pisan taliti, sabab waktu palaksanaan instruksi sarua bisa jadi béda ti panggero pikeun nelepon.

Conto pangbasajanna nyaéta instruksi aksés memori. Upami lokasi mémori anu dipénta sayogi dina cache, maka waktos palaksanaan bakal minimal. Upami inpormasi ieu henteu aya dina cache ("cache miss"), maka ieu bakal ningkatkeun waktos palaksanaan instruksi. Ku kituna, model cache diperlukeun pikeun simulasi akurat. Nanging, masalahna henteu dugi ka modél cache. Prosesor moal ngan saukur ngadagoan data dicandak tina mémori nalika henteu aya dina cache. Sabalikna, éta bakal ngamimitian ngalaksanakeun paréntah salajengna, milih anu henteu gumantung kana hasil maca tina mémori. Ieu nu disebut "kaluar tina urutan" palaksanaan (OOO, kaluar tina urutan palaksanaan), diperlukeun pikeun ngaleutikan waktu processor dianggurkeun. Modeling blok prosésor anu saluyu bakal ngabantosan sadayana ieu nalika ngitung waktos palaksanaan paréntah. Diantara parentah ieu, dieksekusi bari nungguan hasil maca tina memori, operasi luncat kondisional bisa lumangsung. Upami hasil tina kaayaan teu dipikanyaho ayeuna, teras deui prosésor henteu ngeureunkeun palaksanaan, tapi ngadamel "tebak", ngalaksanakeun cabang anu pas sareng terus ngalaksanakeun paréntah sacara proaktif ti titik transisi. Blok sapertos kitu, anu disebut prediktor cabang, ogé kedah dilaksanakeun dina simulator microarchitectural.

Gambar di handap ieu nunjukkeun blok utama prosésor, henteu kedah terang, éta ngan ukur nunjukkeun pajeulitna palaksanaan microarchitectural.

Simulator sistem komputer: simulator full-platform anu akrab sareng saarah jarum jam sareng jejak anu teu dipikanyaho

Operasi sadaya blok ieu dina prosésor nyata disingkronkeun ku sinyal jam husus, sarta hal anu sarua kajadian dina modél. Simulator microarchitectural sapertos disebut siklus akurat. Tujuan utamina nyaéta pikeun akurat ngaduga kinerja prosésor anu dikembangkeun sareng / atanapi ngitung waktos palaksanaan program khusus, contona, patokan. Upami nilaina langkung handap tina anu diperyogikeun, maka éta kedah ngarobih algoritma sareng blok prosesor atanapi ngaoptimalkeun program.

Sapertos anu dipidangkeun di luhur, simulasi jam-demi-jam pisan laun, janten ngan ukur dianggo nalika ngulik momen-momen anu tangtu tina operasi program, dimana anjeun kedah terang laju nyata palaksanaan program sareng ngevaluasi kinerja alat anu bakal datang. prototipe keur simulated.

Dina hal ieu, hiji simulator fungsional dipaké pikeun simulate sésana waktos ngajalankeun program. Kumaha kombinasi pamakéan ieu lumangsung kanyataanana? Mimiti, simulator fungsional diluncurkeun, dimana OS sareng sadaya anu dipikabutuh pikeun ngajalankeun program anu ditalungtik dimuat. Barina ogé, urang teu kabetot dina OS sorangan, atawa dina tahap awal launching program, konfigurasi na, jsb. Nanging, urang ogé teu tiasa ngalangkungan bagian-bagian ieu sareng langsung ngaléngkah ngalaksanakeun program ti tengah. Ku alatan éta, sadaya léngkah awal ieu dijalankeun dina simulator fungsional. Sanggeus program geus dieksekusi ka momen dipikaresep ku urang, dua pilihan mungkin. Anjeun tiasa ngagentos modél ku modél jam-demi-siklus sareng teraskeun palaksanaan. Modeu simulasi anu ngagunakeun kode anu tiasa dieksekusi (nyaéta, file program anu disusun biasa) disebut simulasi anu didorong ku palaksanaan. Ieu mangrupikeun pilihan simulasi anu paling umum. pendekatan sejen oge mungkin - ngabasmi disetir simulasi.

simulasi dumasar-trace

Ieu diwangun ku dua hambalan. Nganggo simulator fungsional atanapi dina sistem nyata, log tindakan program dikumpulkeun sareng diserat kana file. log ieu disebut renik. Gumantung kana naon anu ditalungtik, jejak tiasa kalebet paréntah anu tiasa dieksekusi, alamat mémori, nomer port, sareng inpormasi interupsi.

Lengkah saterusna nyaeta "maén" renik, nalika simulator jam-demi-jam maca renik jeung executes sagala parentah ditulis dina eta. Tungtungna, urang nampi waktos palaksanaan sapotong program ieu, kitu ogé rupa-rupa ciri tina prosés ieu, contona, persentase hits dina cache.

Hiji fitur penting tina gawé bareng ngambah nyaeta determinism, nyaeta, ku ngajalankeun simulasi dina ragam ditétélakeun di luhur, leuwih sarta leuwih deui urang baranahan runtuyan sarua lampah. Hal ieu ngamungkinkeun, ku cara ngarobah parameter model (cache, panyangga jeung antrian ukuran) sarta ngagunakeun algoritma internal béda atawa tuning aranjeunna, diajar kumaha hiji parameter tinangtu mangaruhan kinerja sistem jeung pilihan nu mere hasil pangalusna. Sadaya ieu tiasa dilakukeun ku modél alat prototipe sateuacan nyiptakeun prototipe hardware anu saleresna.

Pajeulitna pendekatan ieu perenahna di kabutuhan mimiti ngajalankeun aplikasi tur ngumpulkeun renik, kitu ogé ukuran badag tina file renik. Kaunggulan kaasup kanyataan yén éta cukup pikeun simulate ukur bagian tina alat atawa platform dipikaresep, sedengkeun simulasi ku palaksanaan biasana merlukeun model lengkep.

Janten, dina tulisan ieu kami ningali fitur simulasi platform pinuh, nyarioskeun ngeunaan laju palaksanaan dina tingkat anu béda, simulasi jam-demi-siklus sareng jejak. Dina artikel salajengna kuring bakal ngajelaskeun skénario utama pikeun ngagunakeun simulator, boh pikeun tujuan pribadi sareng tina sudut pandang pamekaran di perusahaan ageung.

sumber: www.habr.com

Tambahkeun komentar