Simulators ya mifumo ya kompyuta: simulator inayojulikana ya jukwaa kamili na haijulikani saa na athari

Katika sehemu ya pili ya kifungu kuhusu simulators za mfumo wa kompyuta, nitaendelea kuzungumza kwa njia rahisi ya utangulizi juu ya simulators za kompyuta, ambayo ni juu ya simulation ya jukwaa kamili, ambayo mtumiaji wa kawaida hukutana mara nyingi, na pia kuhusu saa-na. -saa mfano na athari, ambayo ni ya kawaida zaidi katika miduara ya wasanidi programu.

Simulators ya mifumo ya kompyuta: simulator inayojulikana ya jukwaa kamili na haijulikani saa na athari

Π’ sehemu ya kwanza Nilizungumza juu ya simulators ni kwa ujumla, na pia juu ya viwango vya simulation. Sasa, kwa kuzingatia ujuzi huo, ninapendekeza kupiga mbizi zaidi na kuzungumza juu ya simulation ya jukwaa kamili, jinsi ya kukusanya athari, nini cha kufanya nao baadaye, na pia kuhusu uigaji wa usanifu wa saa-saa.

Kiigaji cha jukwaa kamili, au "Peke yako uwanjani sio shujaa"

Ikiwa unataka kujifunza uendeshaji wa kifaa kimoja maalum, kwa mfano, kadi ya mtandao, au kuandika firmware au dereva kwa kifaa hiki, basi kifaa hicho kinaweza kuiga tofauti. Walakini, kuitumia kwa kutengwa na miundombinu mingine sio rahisi sana. Ili kuendesha dereva sambamba, utahitaji processor ya kati, kumbukumbu, upatikanaji wa basi ya data, nk. Kwa kuongeza, dereva anahitaji mfumo wa uendeshaji (OS) na stack ya mtandao kufanya kazi. Kwa kuongeza, jenereta tofauti ya pakiti na seva ya majibu inaweza kuhitajika.

Mwigizaji wa jukwaa kamili huunda mazingira ya kuendesha mrundikano kamili wa programu, unaojumuisha kila kitu kutoka BIOS na bootloader hadi OS yenyewe na mifumo yake midogo midogo, kama vile rundo la mtandao sawa, viendeshaji, na programu za kiwango cha mtumiaji. Ili kufanya hivyo, hutumia mifano ya programu ya vifaa vingi vya kompyuta: processor na kumbukumbu, disk, vifaa vya pembejeo / pato (kibodi, panya, maonyesho), pamoja na kadi ya mtandao sawa.

Chini ni mchoro wa block ya chipset ya x58 kutoka Intel. Kiigaji cha mfumo kamili wa kompyuta kwenye chipset hiki kinahitaji utekelezaji wa vifaa vingi vilivyoorodheshwa, ikiwa ni pamoja na vile vilivyo ndani ya IOH (Input/Output Hub) na ICH (Kituo cha Kidhibiti cha Kuingiza/Kutoka), ambavyo havijaonyeshwa kwa kina kwenye mchoro wa block. . Ingawa, kama inavyoonyesha mazoezi, hakuna vifaa vingi ambavyo havitumiwi na programu ambayo tutaendesha. Mifano ya vifaa vile hazihitaji kuundwa.

Simulators ya mifumo ya kompyuta: simulator inayojulikana ya jukwaa kamili na haijulikani saa na athari

Mara nyingi, simulators za jukwaa kamili hutekelezwa katika kiwango cha maagizo ya processor (ISA, tazama hapa chini). makala iliyopita) Hii hukuruhusu kuunda simulator yenyewe haraka na kwa bei nafuu. Kiwango cha ISA pia ni nzuri kwa sababu inabakia zaidi au chini ya mara kwa mara, tofauti, kwa mfano, kiwango cha API/ABI, ambacho hubadilika mara nyingi zaidi. Kwa kuongezea, utekelezaji katika kiwango cha maagizo hukuruhusu kuendesha kinachojulikana kama programu ya binary isiyobadilishwa, ambayo ni, endesha nambari iliyokusanywa tayari bila mabadiliko yoyote, haswa kama inavyotumika kwenye vifaa halisi. Kwa maneno mengine, unaweza kutengeneza nakala ("tupa") ya diski yako ngumu, ibainishe kama picha ya kielelezo kwenye kiigaji cha jukwaa kamili, na voila! - Mfumo wa uendeshaji na programu zingine hupakiwa kwenye simulator bila vitendo vyovyote vya ziada.

Utendaji wa simulator

Simulators ya mifumo ya kompyuta: simulator inayojulikana ya jukwaa kamili na haijulikani saa na athari

Kama ilivyoelezwa hapo juu, mchakato wa kuiga mfumo mzima, yaani, vifaa vyake vyote, ni kazi ya polepole. Ikiwa pia utatekeleza haya yote kwa kiwango cha kina sana, kwa mfano, usanifu mdogo au wa kimantiki, basi utekelezaji utakuwa polepole sana. Lakini kiwango cha maagizo ni chaguo sahihi na inaruhusu OS na programu kutekeleza kwa kasi ya kutosha kwa mtumiaji kuingiliana nao kwa raha.

Hapa itakuwa sahihi kugusa mada ya utendaji wa simulator. Kawaida hupimwa katika IPS (maagizo kwa sekunde), kwa usahihi zaidi katika MIPS (mamilioni ya IPS), yaani, idadi ya maelekezo ya processor kutekelezwa na simulator katika sekunde moja. Wakati huo huo, kasi ya simulation pia inategemea utendaji wa mfumo ambao simulation yenyewe inaendesha. Kwa hiyo, inaweza kuwa sahihi zaidi kuzungumza juu ya "kupungua" kwa simulator ikilinganishwa na mfumo wa awali.

Viigaji vya jukwaa kamili vilivyo kawaida kwenye soko, kama vile QEMU, VirtualBox au VmWare Workstation, vina utendaji mzuri. Huenda hata isitambulike kwa mtumiaji kuwa kazi inaendelea kwenye kiigaji. Hii hutokea kutokana na uwezo maalum wa virtualization kutekelezwa katika wasindikaji, algorithms tafsiri binary na mambo mengine ya kuvutia. Hii yote ni mada ya kifungu tofauti, lakini kwa kifupi, uvumbuzi ni kipengele cha vifaa vya wasindikaji wa kisasa ambayo inaruhusu simulators si kuiga maelekezo, lakini kuwatuma kwa utekelezaji moja kwa moja kwa processor halisi, ikiwa, bila shaka, usanifu wa simulator na processor ni sawa. Tafsiri ya jozi ni tafsiri ya msimbo wa mashine ya mgeni kuwa msimbo wa mwenyeji na utekelezaji unaofuata kwenye kichakataji halisi. Kama matokeo, simulation ni polepole kidogo, mara 5-10, na mara nyingi hata huendesha kwa kasi sawa na mfumo halisi. Ingawa hii inaathiriwa na mambo mengi. Kwa mfano, ikiwa tunataka kuiga mfumo na wasindikaji kadhaa kadhaa, basi kasi itashuka mara moja kwa mara hizi kadhaa. Kwa upande mwingine, viigizaji kama vile Simics katika matoleo ya hivi punde vinaauni maunzi mwenyeji wa vichakataji vingi na kusawazisha kwa usahihi cores zilizoigwa kwenye viini vya kichakataji halisi.

Ikiwa tunazungumzia juu ya kasi ya simulation ya microarchitectural, basi ni kawaida maagizo kadhaa ya ukubwa, kuhusu mara 1000-10000 polepole kuliko utekelezaji kwenye kompyuta ya kawaida, bila simulation. Na utekelezaji katika ngazi ya vipengele vya mantiki ni polepole kwa amri kadhaa za ukubwa. Kwa hivyo, FPGA inatumika kama emulator katika kiwango hiki, ambayo inaweza kuongeza utendaji kwa kiasi kikubwa.

Grafu hapa chini inaonyesha utegemezi wa takriban wa kasi ya uigaji kwenye maelezo ya mfano.

Simulators ya mifumo ya kompyuta: simulator inayojulikana ya jukwaa kamili na haijulikani saa na athari

Uigaji wa mpigo kwa mpigo

Licha ya kasi yao ya chini ya utekelezaji, simulators ndogo za usanifu ni kawaida sana. Uigaji wa vizuizi vya ndani vya processor ni muhimu ili kuiga kwa usahihi wakati wa utekelezaji wa kila maagizo. Kutokuelewana kunaweza kutokea hapa - baada ya yote, inaonekana, kwa nini usipange tu wakati wa utekelezaji kwa kila maagizo. Lakini simulator kama hiyo itakuwa sahihi sana, kwani wakati wa utekelezaji wa maagizo sawa unaweza kutofautiana na wito wa kupiga simu.

Mfano rahisi zaidi ni maagizo ya ufikiaji wa kumbukumbu. Ikiwa eneo la kumbukumbu lililoombwa linapatikana kwenye kashe, basi wakati wa utekelezaji utakuwa mdogo. Ikiwa habari hii haiko kwenye kashe ("cache miss"), basi hii itaongeza sana wakati wa utekelezaji wa maagizo. Kwa hivyo, mfano wa cache unahitajika kwa simulation sahihi. Walakini, jambo hilo sio mdogo kwa mfano wa kache. Kichakataji hakitasubiri tu data kurejeshwa kutoka kwa kumbukumbu wakati haipo kwenye kache. Badala yake, itaanza kutekeleza maagizo yanayofuata, kuchagua yale ambayo hayategemei matokeo ya kusoma kutoka kwa kumbukumbu. Huu ndio unaoitwa "nje ya utaratibu" utekelezaji (OOO, nje ya utaratibu wa utekelezaji), muhimu ili kupunguza muda wa processor bila kufanya kazi. Kuiga vizuizi vinavyolingana vya processor itasaidia kuzingatia haya yote wakati wa kuhesabu wakati wa utekelezaji wa maagizo. Miongoni mwa maagizo haya, kutekelezwa wakati matokeo ya kusoma kutoka kwa kumbukumbu yanasubiriwa, operesheni ya kuruka masharti inaweza kutokea. Ikiwa matokeo ya hali haijulikani kwa sasa, basi tena processor haina kuacha utekelezaji, lakini hufanya "nadhani", hufanya tawi linalofaa na inaendelea kutekeleza maagizo kutoka kwa hatua ya mpito. Kizuizi kama hicho, kinachoitwa kitabiri cha tawi, lazima pia kitekelezwe katika simulator ya usanifu mdogo.

Picha hapa chini inaonyesha vitalu kuu vya processor, si lazima kuijua, inaonyeshwa tu kuonyesha utata wa utekelezaji wa microarchitectural.

Simulators ya mifumo ya kompyuta: simulator inayojulikana ya jukwaa kamili na haijulikani saa na athari

Uendeshaji wa vitalu hivi vyote katika processor halisi hupatanishwa na ishara maalum za saa, na sawa hutokea katika mfano. Simulator kama hiyo ya usanifu ndogo inaitwa mzunguko sahihi. Kusudi lake kuu ni kutabiri kwa usahihi utendaji wa processor inayotengenezwa na/au kuhesabu muda wa utekelezaji wa programu maalum, kwa mfano, alama. Ikiwa maadili ni ya chini kuliko inavyotakiwa, basi itakuwa muhimu kurekebisha algorithms na vizuizi vya processor au kuboresha programu.

Kama inavyoonyeshwa hapo juu, simulation ya saa-saa ni polepole sana, kwa hivyo hutumiwa tu wakati wa kusoma wakati fulani wa operesheni ya programu, ambapo inahitajika kujua kasi halisi ya utekelezaji wa programu na kutathmini utendaji wa siku zijazo wa kifaa ambacho mfano unaigwa.

Katika kesi hii, simulator inayofanya kazi hutumiwa kuiga wakati uliobaki wa programu. Mchanganyiko huu wa matumizi hutokeaje katika hali halisi? Kwanza, simulator ya kazi imezinduliwa, ambayo OS na kila kitu muhimu ili kuendesha programu chini ya utafiti ni kubeba. Baada ya yote, hatuna nia ya OS yenyewe, wala katika hatua za awali za kuzindua programu, usanidi wake, nk. Walakini, sisi pia hatuwezi kuruka sehemu hizi na kuendelea mara moja kutekeleza programu kutoka katikati. Kwa hiyo, hatua hizi zote za awali zinaendeshwa kwenye simulator ya kazi. Baada ya programu kutekelezwa kwa wakati wa kupendeza kwetu, chaguzi mbili zinawezekana. Unaweza kuchukua nafasi ya mfano na mfano wa saa kwa mzunguko na kuendelea na utekelezaji. Njia ya kuiga inayotumia msimbo unaoweza kutekelezeka (yaani, faili za programu zilizokusanywa mara kwa mara) inaitwa simulizi inayoendeshwa na utekelezaji. Hii ndiyo chaguo la kawaida la kuiga. Njia nyingine pia inawezekana - fuata simulation inayoendeshwa.

Uigaji unaotegemea ufuatiliaji

Inajumuisha hatua mbili. Kutumia simulator ya kazi au kwenye mfumo halisi, logi ya vitendo vya programu hukusanywa na kuandikwa kwa faili. Logi hii inaitwa kuwaeleza. Kulingana na kile kinachochunguzwa, ufuatiliaji unaweza kujumuisha maagizo ya kutekelezeka, anwani za kumbukumbu, nambari za bandari na kukatiza habari.

Hatua inayofuata ni "kucheza" kufuatilia, wakati simulator ya saa-saa inasoma ufuatiliaji na kutekeleza maagizo yote yaliyoandikwa ndani yake. Mwishoni, tunapata muda wa utekelezaji wa kipande hiki cha programu, pamoja na sifa mbalimbali za mchakato huu, kwa mfano, asilimia ya hits katika cache.

Kipengele muhimu cha kufanya kazi na athari ni uamuzi, yaani, kwa kuendesha simulation kwa njia iliyoelezwa hapo juu, mara kwa mara tunazalisha mlolongo sawa wa vitendo. Hii inafanya uwezekano, kwa kubadilisha vigezo vya mfano (cache, bafa na saizi za foleni) na kutumia algoriti tofauti za ndani au kuzirekebisha, kusoma jinsi kigezo fulani kinavyoathiri utendaji wa mfumo na ni chaguo gani hutoa matokeo bora. Haya yote yanaweza kufanywa na modeli ya kifaa cha mfano kabla ya kuunda mfano halisi wa vifaa.

Ugumu wa mbinu hii upo katika hitaji la kuendesha programu kwanza na kukusanya athari, pamoja na saizi kubwa ya faili ya ufuatiliaji. Faida ni pamoja na ukweli kwamba inatosha kuiga tu sehemu ya kifaa au jukwaa la riba, wakati simulation kwa utekelezaji kawaida inahitaji mfano kamili.

Kwa hiyo, katika makala hii tuliangalia vipengele vya simulation kamili ya jukwaa, ilizungumza juu ya kasi ya utekelezaji katika viwango tofauti, simulation ya saa kwa mzunguko na athari. Katika makala inayofuata nitaelezea hali kuu za kutumia simulators, kwa madhumuni ya kibinafsi na kutoka kwa mtazamo wa maendeleo katika makampuni makubwa.

Chanzo: mapenzi.com

Kuongeza maoni