Компьютердик системалардын симуляторлору: тааныш толук платформа симулятор жана саат жебеси боюнча белгисиз жана издер

Компьютердик системанын симуляторлору жөнүндө макаланын экинчи бөлүгүндө мен компьютердик симуляторлор жөнүндө, тактап айтканда, жөнөкөй колдонуучу көп жолуккан толук платформа симуляциясы жөнүндө, ошондой эле сааттын ылдамдыгы жөнүндө сүйлөшүүнү улантам. -иштеп чыгуучулардын чөйрөлөрүндө кеңири таралган саат модели жана издери.

Компьютердик системалардын симуляторлору: тааныш толук платформа симулятор жана саат жебеси боюнча белгисиз жана издер

В биринчи бөлүгү Мен жалпысынан симуляторлор деген эмне, ошондой эле симуляциянын деңгээли жөнүндө айттым. Эми, ошол билимдин негизинде, мен бир аз тереңирээк сүңгүп, толук платформа симуляциясы, издерди кантип чогултуу, кийинчерээк алар менен эмне кылуу керек, ошондой эле саат сайын микроархитектуралык эмуляция жөнүндө сүйлөшүүнү сунуштайм.

Толук платформа симулятору, же "Талаада жалгыз жоокер эмес"

Эгер сиз белгилүү бир түзүлүштүн иштешин изилдегиңиз келсе, мисалы, тармактык карта же бул аппараттын микропрограммасын же драйверин жазгыңыз келсе, анда мындай түзүлүштү өзүнчө окшоштурууга болот. Бирок аны инфраструктуранын калган бөлүгүнөн обочолонуп колдонуу өтө ыңгайлуу эмес. Тиешелүү драйверди иштетүү үчүн сизге борбордук процессор, эстутум, маалымат автобусуна кирүү ж.б.у.с. Мындан тышкары, драйвер иштеши үчүн операциялык системаны (OS) жана тармактык стекти талап кылат. Мындан тышкары, өзүнчө пакет генератору жана жооп сервери талап кылынышы мүмкүн.

Толук платформа симулятору толук программалык стекти иштетүү үчүн чөйрөнү түзөт, анын курамына BIOS жана жүктөгүчтөн баштап ОСтун өзүнө жана анын ар түрдүү подсистемаларына чейин, мисалы, ошол эле тармактык стек, драйверлер жана колдонуучу деңгээлиндеги тиркемелер камтылган. Бул үчүн ал көпчүлүк компьютердик түзүлүштөрдүн программалык моделдерин ишке ашырат: процессор жана эс тутум, диск, киргизүү/чыгаруу түзүлүштөрү (клавиатура, чычкан, дисплей), ошондой эле ошол эле тармактык карта.

Төмөндө Intel компаниясынан x58 чипсетинин блок диаграммасы келтирилген. Бул чипсеттеги толук платформалуу компьютердик симулятор тизмеленген түзүлүштөрдүн көбүн, анын ичинде блок диаграммасында деталдаштырылбаган IOH (Input/Output Hub) жана ICH (Input/Output Controller Hub) ичиндегилерди ишке ашырууну талап кылат. . Практика көрсөткөндөй, биз иштете турган программалык камсыздоодо колдонулбаган көптөгөн түзмөктөр жок. Мындай түзүлүштөрдүн моделдерин түзүүнүн кереги жок.

Компьютердик системалардын симуляторлору: тааныш толук платформа симулятор жана саат жебеси боюнча белгисиз жана издер

Көбүнчө, толук платформа симуляторлору процессордун нускама деңгээлинде ишке ашырылат (ISA, төмөндө караңыз). мурунку макала). Бул симулятордун өзүн салыштырмалуу тез жана арзан түзүүгө мүмкүндүк берет. ISA деңгээли да жакшы, анткени ал аздыр-көптүр туруктуу бойдон калууда, мисалы, API/ABI деңгээлинен айырмаланып, тез-тез өзгөрүп турат. Мындан тышкары, нускама деңгээлинде ишке ашыруу модификацияланбаган экилик программалык камсыздоону иштетүүгө мүмкүндүк берет, башкача айтканда, буга чейин түзүлгөн кодду эч кандай өзгөрүүсүз иштетүүгө мүмкүндүк берет, ал чыныгы жабдыкта колдонулгандай. Башкача айтканда, сиз катуу дискиңиздин көчүрмөсүн («тамп») жасап, аны толук платформа симуляторундагы моделдин сүрөтү катары көрсөтсөңүз болот жана voila! – ОС жана башка программалар симулятордо эч кандай кошумча аракеттерсиз жүктөлөт.

Симулятордун иштеши

Компьютердик системалардын симуляторлору: тааныш толук платформа симулятор жана саат жебеси боюнча белгисиз жана издер

Жогоруда айтылгандай, бүт системаны, башкача айтканда, анын бардык түзүлүштөрүн симуляциялоо процесси өтө жай иш. Эгер сиз мунун бардыгын өтө кылдат деңгээлде ишке ашырсаңыз, мисалы, микроархитектуралык же логикалык, анда аткаруу өтө жай болуп калат. Бирок нускама деңгээли ылайыктуу тандоо болуп саналат жана ОС менен программаларды колдонуучу алар менен ыңгайлуу иштеши үчүн жетиштүү ылдамдыкта аткарууга мүмкүндүк берет.

Бул жерде симулятордун иштеши темасына токтоло кетүү туура болот. Ал адатта IPS (секундадагы нускамалар), тагыраагы MIPS (миллиондогон IPS) менен өлчөнөт, башкача айтканда, симулятор тарабынан бир секундда аткарылган процессордук көрсөтмөлөрдүн саны. Ошол эле учурда симуляциянын ылдамдыгы симуляция өзү иштеген системанын иштешинен да көз каранды. Демек, баштапкы системага салыштырмалуу симулятордун "жайлоосу" жөнүндө айтуу туурараак болушу мүмкүн.

Базардагы QEMU, VirtualBox же VmWare Workstation сыяктуу кеңири таралган толук платформа симуляторлору жакшы көрсөткүчкө ээ. Симулятордо иш жүрүп жатканы колдонуучуга да байкалбашы мүмкүн. Бул процессорлордо ишке ашырылган атайын виртуалдаштыруу мүмкүнчүлүктөрүнүн, экилик котормо алгоритмдеринин жана башка кызыктуу нерселердин аркасында болот. Мунун баары өзүнчө макаланын темасы, бирок кыскача айтканда, виртуалдаштыруу заманбап процессорлордун аппараттык өзгөчөлүгү болуп саналат, ал симуляторлорго көрсөтмөлөрдү имитациялоого эмес, аларды түздөн-түз реалдуу процессорго аткарууга жөнөтүүгө мүмкүндүк берет, эгерде, албетте, архитектура симулятор менен процессор окшош. Бинардык котормо - коноктун машина кодун хост кодуна которуу жана андан кийин анык процессордо аткаруу. Натыйжада, симуляция бир аз жайыраак, 5-10 эсе, ал тургай, көп учурда реалдуу система менен бирдей ылдамдыкта иштейт. Буга көптөгөн факторлор таасир этсе да. Мисалы, бир нече ондогон процессорлордон турган системаны окшоштургубуз келсе, анда ылдамдык ошол замат бир нече ондогон эсеге төмөндөйт. Башка жагынан алганда, акыркы версиялардагы Simics сыяктуу симуляторлор мультипроцессордук хост аппаратын колдойт жана симуляцияланган өзөктөрдү чыныгы процессордун өзөктөрүнө эффективдүү параллелдештирет.

Эгерде микроархитектуралык симуляциянын ылдамдыгы жөнүндө сөз кыла турган болсок, анда ал, адатта, симуляциясы жок, кадимки компьютерде аткарууга караганда болжол менен 1000-10000 эсе жайыраак, бир нече даражага ээ. Жана логикалык элементтердин деңгээлинде ишке ашыруу бир нече даражага жайыраак. Ошондуктан, FPGA бул деңгээлде эмулятор катары колдонулат, ал өндүрүмдүүлүгүн кыйла жогорулата алат.

Төмөнкү график моделдин деталдарынан моделдөө ылдамдыгынын болжолдуу көз карандылыгын көрсөтөт.

Компьютердик системалардын симуляторлору: тааныш толук платформа симулятор жана саат жебеси боюнча белгисиз жана издер

Бит-согуу симуляциясы

Алардын аткаруу ылдамдыгы төмөн болгонуна карабастан, микроархитектуралык симуляторлор кеңири таралган. Процессордун ички блокторун симуляциялоо ар бир инструкциянын аткарылуу убактысын так имитациялоо үчүн зарыл. Бул жерде түшүнбөстүктөр келип чыгышы мүмкүн - ар бир нускама үчүн аткаруу убактысын жөн гана программалоого болбойт окшойт. Бирок мындай симулятор өтө так эмес болот, анткени бир эле инструкцияны аткаруу убактысы чалуудан чалууга ар кандай болушу мүмкүн.

Эң жөнөкөй мисал - эстутумга кирүү инструкциясы. Суралган эстутум орду кэште бар болсо, анда аткаруу убактысы минималдуу болот. Эгерде бул маалымат кэште болбосо ("кэш сагынуу"), анда бул нускаманы аткаруу убактысын бир топ көбөйтөт. Ошентип, так моделдөө үчүн кэш модели талап кылынат. Бирок, маселе кэш модели менен эле чектелбейт. Процессор маалымат кэште жок болгондо эстутумдан алынышын күтпөйт. Анын ордуна, ал эстутумдан окуунун натыйжасынан көз каранды болбогондорду тандап, кийинки көрсөтмөлөрдү аткара баштайт. Бул процессордун бош туруп калуу убактысын азайтуу үчүн зарыл болгон "заказдан тышкары" аткаруу (OOO, out of order execution) деп аталган. Тиешелүү процессор блокторун моделдөө нускамаларды аткаруу убактысын эсептөөдө мунун баарын эске алууга жардам берет. Бул инструкциялардын ичинен эстутумдан окуунун натыйжасы күтүлүп жатканда аткарылган шарттуу секирүү операциясы болушу мүмкүн. Эгерде шарттын натыйжасы учурда белгисиз болсо, анда кайра процессор аткарууну токтотпой, "болжолдоо" жасайт, тиешелүү бутакты аткарат жана өтүү пунктунан баштап инструкцияларды активдүү түрдө аткарууну улантат. Тармактык болжолдоочу деп аталган мындай блок микроархитектуралык симулятордо да ишке ашырылышы керек.

Төмөндөгү сүрөттө процессордун негизги блоктору көрсөтүлгөн, аны билүүнүн кажети жок, ал микроархитектуралык ишке ашыруунун татаалдыгын көрсөтүү үчүн гана көрсөтүлгөн.

Компьютердик системалардын симуляторлору: тааныш толук платформа симулятор жана саат жебеси боюнча белгисиз жана издер

Чыныгы процессордогу бардык бул блоктордун иштеши атайын саат сигналдары менен синхрондолуп, моделде да ушундай болот. Мындай микроархитектуралык симулятор цикл так деп аталат. Анын негизги максаты - иштелип жаткан процессордун иштешин так болжолдоо жана/же конкреттүү программанын, мисалы, эталондун аткарылуу убактысын эсептөө. Эгерде баалуулуктар талап кылынгандан төмөн болсо, анда алгоритмдерди жана процессор блокторун өзгөртүү же программаны оптималдаштыруу керек болот.

Жогоруда көрсөтүлгөндөй, саат боюнча моделдөө өтө жай жүрөт, ошондуктан ал программанын иштөөсүнүн айрым моменттерин изилдөөдө гана колдонулат, мында программанын аткарылышынын реалдуу ылдамдыгын аныктоо жана аппараттын келечектеги ишин баалоо зарыл. прототиби симуляцияланууда.

Бул учурда программанын калган иштөө убактысын имитациялоо үчүн функционалдык симулятор колдонулат. Бул колдонуунун айкалышы чындыгында кантип пайда болот? Биринчиден, функционалдык симулятор ишке киргизилет, ага ОС жана изилденип жаткан программаны иштетүү үчүн зарыл болгон нерселердин баары жүктөлөт. Анткени, бизди ОСтун өзүнө да, программаны ишке киргизүүнүн баштапкы этаптарына, анын конфигурациясына ж.б. кызыктырбайбыз. Бирок, биз да бул бөлүктөрүн өткөрүп жиберип, дароо программаны ортосунан аткарууга өтө албайбыз. Ошондуктан, бардык бул алдын ала кадамдар функционалдык симулятордо ишке ашырылат. Программа бизди кызыктырган учурга чейин аткарылгандан кийин, эки вариант болушу мүмкүн. Моделди сааттын циклине алмаштырып, аткарууну уланта аласыз. Аткарылуучу кодду (б.а. кадимки компиляцияланган программа файлдарын) колдонгон симуляция режими аткарууга негизделген симуляция деп аталат. Бул эң кеңири таралган симуляция варианты. Дагы бир ыкма дагы мүмкүн - трекке негизделген симуляция.

Изге негизделген симуляция

Ал эки кадамдан турат. Функционалдык симулятордун жардамы менен же реалдуу системада программалык аракеттердин журналы чогултулуп, файлга жазылат. Бул журнал из деп аталат. Каралып жаткан нерсеге жараша, изи аткарылуучу инструкцияларды, эстутум даректерин, порт номерлерин жана үзгүлтүккө байланыштуу маалыматты камтышы мүмкүн.

Кийинки кадам тректи "ойнотуу", саат сайын тренажер изи окуп, анда жазылган бардык көрсөтмөлөрдү аткарганда. Аягында биз программанын бул бөлүгүнүн аткарылуу убактысын, ошондой эле бул процесстин ар кандай мүнөздөмөлөрүн, мисалы, кэштеги хиттердин пайызын алабыз.

Издер менен иштөөнүн маанилүү өзгөчөлүгү – детерминизм, башкача айтканда, симуляцияны жогоруда сүрөттөлгөн ыкма менен жүргүзүү менен биз бир эле аракеттердин ырааттуулугун кайра-кайра кайталайбыз. Бул моделдин параметрлерин (кэш, буфер жана кезектин өлчөмдөрү) өзгөртүү жана ар кандай ички алгоритмдерди колдонуу же аларды жөндөө аркылуу белгилүү бир параметр системанын иштешине кандай таасир этээрин жана кайсы вариант эң жакшы натыйжаларды берерин изилдөөгө мүмкүндүк берет. Мунун баары иш жүзүндө аппараттык прототибин түзүү алдында прототиби түзмөк модели менен жүргүзүлүшү мүмкүн.

Бул ыкманын татаалдыгы алгач тиркемени иштетүү жана изи чогултуу зарылчылыгында, ошондой эле трек файлынын чоң көлөмүндө. Артыкчылыктарга түзмөктүн же платформанын бир бөлүгүн гана симуляциялоо жетиштүү, ал эми аткаруу жолу менен моделдөө үчүн адатта толук модел талап кылынат.

Ошентип, бул макалада биз толук платформа симуляциясынын өзгөчөлүктөрүн карап чыктык, ар кандай деңгээлдеги ишке ашыруунун ылдамдыгы, саат боюнча симуляция жана издер жөнүндө сүйлөштүк. Кийинки макалада мен тренажерлорду жеке максаттарда жана ири компанияларда өнүгүү көз карашында колдонуунун негизги сценарийлерин сүрөттөп берем.

Source: www.habr.com

Комментарий кошуу