Efelychwyr systemau cyfrifiadurol: efelychydd platfform llawn cyfarwydd ac olion clocwedd anhysbys

Yn ail ran yr erthygl am efelychwyr system gyfrifiadurol, byddaf yn parhau i siarad mewn ffurf ragarweiniol syml am efelychwyr cyfrifiadurol, sef am yr efelychiad platfform llawn, y mae'r defnyddiwr cyffredin yn dod ar ei draws amlaf, yn ogystal ag am y cloc-wrth. -cloc model ac olion, sy'n fwy cyffredin mewn cylchoedd datblygwyr.

Efelychwyr systemau cyfrifiadurol: efelychydd platfform llawn cyfarwydd ac olion clocwedd anhysbys

В y rhan gyntaf Siaradais am beth yw efelychwyr yn gyffredinol, yn ogystal ag am y lefelau o efelychu. Nawr, yn seiliedig ar y wybodaeth honno, rwy'n bwriadu plymio ychydig yn ddyfnach a siarad am efelychu platfform llawn, sut i gasglu olion, beth i'w wneud â nhw yn nes ymlaen, yn ogystal ag am efelychu micro-bensaernïol cloc-wrth-cloc.

Efelychydd platfform llawn, neu “Nid yw ei ben ei hun yn y maes yn rhyfelwr”

Os ydych chi am astudio gweithrediad un ddyfais benodol, er enghraifft, cerdyn rhwydwaith, neu ysgrifennu firmware neu yrrwr ar gyfer y ddyfais hon, yna gellir efelychu dyfais o'r fath ar wahân. Fodd bynnag, nid yw ei ddefnyddio ar wahân i weddill y seilwaith yn gyfleus iawn. I redeg y gyrrwr cyfatebol, bydd angen prosesydd canolog, cof, mynediad i fws data, ac ati. Yn ogystal, mae angen system weithredu (OS) a stac rhwydwaith ar y gyrrwr i weithredu. Yn ogystal, efallai y bydd angen generadur pecyn a gweinydd ymateb ar wahân.

Mae efelychydd platfform llawn yn creu amgylchedd ar gyfer rhedeg pentwr meddalwedd cyflawn, sy'n cynnwys popeth o'r BIOS a'r cychwynnwr i'r OS ei hun a'i is-systemau amrywiol, megis yr un pentwr rhwydwaith, gyrwyr, a chymwysiadau lefel defnyddiwr. I wneud hyn, mae'n gweithredu modelau meddalwedd y rhan fwyaf o ddyfeisiau cyfrifiadurol: prosesydd a chof, disg, dyfeisiau mewnbwn/allbwn (bysellfwrdd, llygoden, sgrin), yn ogystal â'r un cerdyn rhwydwaith.

Isod mae diagram bloc o'r chipset x58 gan Intel. Mae efelychydd cyfrifiadurol llwyfan llawn ar y chipset hwn yn gofyn am weithredu'r rhan fwyaf o'r dyfeisiau rhestredig, gan gynnwys y rhai y tu mewn i'r IOH (Hwb Mewnbwn / Allbwn) ac ICH (Hwb Rheolydd Mewnbwn / Allbwn), nad ydynt wedi'u darlunio'n fanwl ar y diagram bloc . Er, fel y dengys arfer, nid oes llawer o ddyfeisiau nad ydynt yn cael eu defnyddio gan y feddalwedd yr ydym yn mynd i'w rhedeg. Nid oes angen creu modelau o ddyfeisiau o'r fath.

Efelychwyr systemau cyfrifiadurol: efelychydd platfform llawn cyfarwydd ac olion clocwedd anhysbys

Yn fwyaf aml, gweithredir efelychwyr platfform llawn ar lefel cyfarwyddyd prosesydd (ISA, gweler isod). erthygl flaenorol). Mae hyn yn caniatáu ichi greu'r efelychydd ei hun yn gymharol gyflym ac yn rhad. Mae lefel yr ISA hefyd yn dda oherwydd ei fod yn parhau'n gyson fwy neu lai, yn wahanol, er enghraifft, i'r lefel API/ABI, sy'n newid yn amlach. Yn ogystal, mae gweithredu ar y lefel cyfarwyddyd yn caniatáu ichi redeg meddalwedd deuaidd heb ei addasu fel y'i gelwir, hynny yw, rhedeg cod a luniwyd eisoes heb unrhyw newidiadau, yn union fel y'i defnyddir ar galedwedd go iawn. Mewn geiriau eraill, gallwch wneud copi (“dympio”) o'ch gyriant caled, ei nodi fel delwedd ar gyfer model mewn efelychydd platfform llawn, a voila! - Mae'r OS a rhaglenni eraill yn cael eu llwytho yn yr efelychydd heb unrhyw gamau gweithredu ychwanegol.

Perfformiad efelychydd

Efelychwyr systemau cyfrifiadurol: efelychydd platfform llawn cyfarwydd ac olion clocwedd anhysbys

Fel y soniwyd ychydig uchod, mae'r broses o efelychu'r system gyfan, hynny yw, ei holl ddyfeisiau, yn dasg eithaf araf. Os ydych chi hefyd yn gweithredu hyn i gyd ar lefel fanwl iawn, er enghraifft, micro-bensaernïol neu resymegol, yna bydd gweithredu'n dod yn hynod o araf. Ond mae lefel y cyfarwyddyd yn ddewis priodol ac yn caniatáu i'r OS a rhaglenni weithredu ar gyflymder sy'n ddigonol i'r defnyddiwr ryngweithio â nhw'n gyfforddus.

Yma byddai'n briodol cyffwrdd â phwnc perfformiad efelychydd. Fe'i mesurir fel arfer mewn IPS (cyfarwyddiadau yr eiliad), yn fwy manwl gywir yn MIPS (miliynau o IPS), hynny yw, nifer y cyfarwyddiadau prosesydd a weithredir gan yr efelychydd mewn un eiliad. Ar yr un pryd, mae cyflymder yr efelychiad hefyd yn dibynnu ar berfformiad y system y mae'r efelychiad ei hun yn rhedeg arni. Felly, efallai y byddai'n fwy cywir siarad am "arafu" yr efelychydd o'i gymharu â'r system wreiddiol.

Mae gan yr efelychwyr platfform llawn mwyaf cyffredin ar y farchnad, megis QEMU, VirtualBox neu VmWare Workstation, berfformiad da. Efallai na fydd hyd yn oed yn amlwg i'r defnyddiwr bod gwaith yn digwydd yn yr efelychydd. Mae hyn yn digwydd diolch i'r galluoedd rhithwiroli arbennig a weithredir mewn proseswyr, algorithmau cyfieithu deuaidd a phethau diddorol eraill. Mae hyn i gyd yn bwnc ar gyfer erthygl ar wahân, ond yn fyr, mae rhithwiroli yn nodwedd caledwedd o broseswyr modern sy'n caniatáu i efelychwyr beidio ag efelychu cyfarwyddiadau, ond i'w hanfon i'w gweithredu'n uniongyrchol at brosesydd go iawn, os, wrth gwrs, mae saernïaeth mae'r efelychydd a'r prosesydd yn debyg. Cyfieithiad deuaidd yw trosi cod peiriant gwestai yn god gwesteiwr a gweithrediad dilynol ar brosesydd go iawn. O ganlyniad, dim ond ychydig yn arafach yw'r efelychiad, 5-10 gwaith, ac yn aml mae hyd yn oed yn rhedeg ar yr un cyflymder â'r system go iawn. Er bod hyn yn cael ei ddylanwadu gan lawer o ffactorau. Er enghraifft, os ydym am efelychu system gyda sawl dwsin o broseswyr, yna bydd y cyflymder yn gostwng ar unwaith gan y dwsin o weithiau hyn. Ar y llaw arall, mae efelychwyr fel Simics yn y fersiynau diweddaraf yn cefnogi caledwedd gwesteiwr amlbrosesydd ac yn cyfateb yn effeithiol i'r creiddiau efelychiedig i greiddiau prosesydd go iawn.

Os byddwn yn siarad am gyflymder efelychiad microarchitectural, yna fel arfer mae nifer o orchmynion maint, tua 1000-10000 gwaith yn arafach na gweithredu ar gyfrifiadur rheolaidd, heb efelychiad. Ac mae gweithrediadau ar lefel elfennau rhesymegol yn arafach yn ôl nifer o orchmynion maint. Felly, defnyddir FPGA fel efelychydd ar y lefel hon, a all gynyddu perfformiad yn sylweddol.

Mae'r graff isod yn dangos dibyniaeth cyflymder efelychiad bras ar fanylion y model.

Efelychwyr systemau cyfrifiadurol: efelychydd platfform llawn cyfarwydd ac olion clocwedd anhysbys

Efelychiad curiad-wrth-guro

Er gwaethaf eu cyflymder gweithredu isel, mae efelychwyr micro-bensaernïol yn eithaf cyffredin. Mae angen efelychu blociau mewnol y prosesydd er mwyn efelychu amser gweithredu pob cyfarwyddyd yn gywir. Gall camddealltwriaeth godi yma - wedi'r cyfan, mae'n ymddangos, beth am raglennu'r amser gweithredu ar gyfer pob cyfarwyddyd. Ond bydd efelychydd o'r fath yn anghywir iawn, oherwydd gall amser gweithredu'r un cyfarwyddyd fod yn wahanol o alwad i alwad.

Yr enghraifft symlaf yw cyfarwyddyd mynediad cof. Os yw'r lleoliad cof y gofynnwyd amdano ar gael yn y storfa, yna bydd yr amser gweithredu yn fach iawn. Os nad yw'r wybodaeth hon yn y storfa (“cache miss”), yna bydd hyn yn cynyddu amser gweithredu'r cyfarwyddyd yn fawr. Felly, mae angen model cache ar gyfer efelychiad cywir. Fodd bynnag, nid yw'r mater yn gyfyngedig i'r model cache. Ni fydd y prosesydd yn aros i ddata gael ei adfer o'r cof pan nad yw yn y storfa. Yn lle hynny, bydd yn dechrau gweithredu'r cyfarwyddiadau nesaf, gan ddewis y rhai nad ydynt yn dibynnu ar ganlyniad darllen o'r cof. Dyma'r hyn a elwir yn gyflawniad “allan o drefn” (OOO, cyflawni allan o drefn), sy'n angenrheidiol i leihau amser segur prosesydd. Bydd modelu'r blociau prosesydd cyfatebol yn helpu i gymryd hyn i gyd i ystyriaeth wrth gyfrifo amser gweithredu cyfarwyddiadau. Ymhlith y cyfarwyddiadau hyn, a weithredir tra disgwylir canlyniad darllen o'r cof, gall llawdriniaeth naid amodol ddigwydd. Os nad yw canlyniad y cyflwr yn hysbys ar hyn o bryd, yna eto nid yw'r prosesydd yn rhoi'r gorau i weithredu, ond yn gwneud "dyfalu", yn perfformio'r gangen briodol ac yn parhau i weithredu cyfarwyddiadau yn rhagweithiol o'r pwynt trosglwyddo. Rhaid gweithredu bloc o'r fath, a elwir yn rhagfynegydd cangen, hefyd yn yr efelychydd microarchitectural.

Mae'r llun isod yn dangos prif flociau y prosesydd, nid oes angen ei wybod, fe'i dangosir yn unig i ddangos cymhlethdod y gweithrediad microarchitectural.

Efelychwyr systemau cyfrifiadurol: efelychydd platfform llawn cyfarwydd ac olion clocwedd anhysbys

Mae gweithrediad yr holl flociau hyn mewn prosesydd go iawn yn cael ei gydamseru gan signalau cloc arbennig, ac mae'r un peth yn digwydd yn y model. Gelwir efelychydd microarchitectural o'r fath yn gylchred gywir. Ei brif bwrpas yw rhagfynegi'n gywir berfformiad y prosesydd sy'n cael ei ddatblygu a/neu gyfrifo amser gweithredu rhaglen benodol, er enghraifft, meincnod. Os yw'r gwerthoedd yn is na'r hyn sy'n ofynnol, yna bydd angen addasu'r algorithmau a'r blociau prosesydd neu wneud y gorau o'r rhaglen.

Fel y dangosir uchod, mae efelychu cloc-wrth-cloc yn araf iawn, felly dim ond wrth astudio eiliadau penodol o weithrediad rhaglen y caiff ei ddefnyddio, lle mae angen darganfod gwir gyflymder gweithredu'r rhaglen a gwerthuso perfformiad y ddyfais yn y dyfodol. prototeip yn cael ei efelychu.

Yn yr achos hwn, defnyddir efelychydd swyddogaethol i efelychu amser rhedeg y rhaglen sy'n weddill. Sut mae'r cyfuniad hwn o ddefnydd yn digwydd mewn gwirionedd? Yn gyntaf, mae'r efelychydd swyddogaethol yn cael ei lansio, lle mae'r OS a phopeth sy'n angenrheidiol i redeg y rhaglen dan sylw yn cael eu llwytho. Wedi'r cyfan, nid oes gennym ddiddordeb yn yr OS ei hun, nac yn y camau cychwynnol o lansio'r rhaglen, ei ffurfweddiad, ac ati. Fodd bynnag, ni allwn hefyd hepgor y rhannau hyn a symud ymlaen ar unwaith i weithredu'r rhaglen o'r canol. Felly, mae'r holl gamau rhagarweiniol hyn yn cael eu rhedeg ar efelychydd swyddogaethol. Ar ôl i'r rhaglen gael ei gweithredu i'r eiliad sydd o ddiddordeb i ni, mae dau opsiwn yn bosibl. Gallwch ddisodli'r model gyda model cloc-wrth-gylch a pharhau i'w weithredu. Gelwir y modd efelychu sy'n defnyddio cod gweithredadwy (hynny yw, ffeiliau rhaglen a luniwyd yn rheolaidd) yn efelychiad a yrrir gan gyflawni. Dyma'r opsiwn efelychu mwyaf cyffredin. Mae dull arall hefyd yn bosibl - efelychiad a yrrir gan olion.

Efelychiad yn seiliedig ar olrhain

Mae'n cynnwys dau gam. Gan ddefnyddio efelychydd swyddogaethol neu ar system go iawn, mae log o gamau gweithredu rhaglen yn cael ei gasglu a'i ysgrifennu i ffeil. Gelwir y log hwn yn olrhain. Yn dibynnu ar yr hyn sy'n cael ei archwilio, gall yr olrhain gynnwys cyfarwyddiadau gweithredadwy, cyfeiriadau cof, rhifau porthladdoedd, a gwybodaeth ymyrraeth.

Y cam nesaf yw “chwarae” yr olrhain, pan fydd yr efelychydd cloc-wrth-cloc yn darllen yr olrhain ac yn gweithredu'r holl gyfarwyddiadau sydd wedi'u hysgrifennu ynddo. Ar y diwedd, rydym yn cael amser gweithredu'r darn hwn o'r rhaglen, yn ogystal â nodweddion amrywiol y broses hon, er enghraifft, canran y trawiadau yn y storfa.

Nodwedd bwysig o weithio gydag olion yw penderfyniaeth, hynny yw, trwy redeg yr efelychiad yn y modd a ddisgrifir uchod, dro ar ôl tro rydym yn atgynhyrchu'r un dilyniant o weithredoedd. Mae hyn yn ei gwneud hi'n bosibl, trwy newid paramedrau model (cache, byffer a meintiau ciw) a defnyddio algorithmau mewnol gwahanol neu eu tiwnio, i astudio sut mae paramedr penodol yn effeithio ar berfformiad system a pha opsiwn sy'n rhoi'r canlyniadau gorau. Gellir gwneud hyn i gyd gyda model dyfais prototeip cyn creu prototeip caledwedd gwirioneddol.

Mae cymhlethdod y dull hwn yn gorwedd yn yr angen i redeg y cais yn gyntaf a chasglu'r olrhain, yn ogystal â maint enfawr y ffeil olrhain. Mae'r manteision yn cynnwys y ffaith ei bod yn ddigon i efelychu'r rhan o'r ddyfais neu'r llwyfan o ddiddordeb yn unig, tra bod efelychu trwy weithredu fel arfer yn gofyn am fodel cyflawn.

Felly, yn yr erthygl hon fe wnaethom edrych ar nodweddion efelychiad platfform llawn, siarad am gyflymder gweithrediadau ar wahanol lefelau, efelychiad cloc-wrth-gylch ac olion. Yn yr erthygl nesaf byddaf yn disgrifio'r prif senarios ar gyfer defnyddio efelychwyr, at ddibenion personol ac o safbwynt datblygu mewn cwmnïau mawr.

Ffynhonnell: hab.com

Ychwanegu sylw