Кіріспе

Бағдарламалық қамтамасыз етуді сынау құралы

Нұсқаулар жиынтығын симуляциялау (ISS) – жоғары деңгейдегі бағдарламалау тілінде кодталған симуляциялық модель, ол процессордың регистрлерін көрсететін ішкі айнымалыларды "оқу" және сақтау арқылы мейнфрейм немесе микропроцессордың әрекетін еліктейді. Нұсқауларды симуляциялау – бірнеше себептің бірі үшін қолданылатын әдістеме:
Болашақ процессордың нұсқаулар жиынтығы архитектурасын (ISA) симуляциялау, аппараттық құралды әзірлеу мен өндіру аяқталмай тұрып-ақ бағдарламалық жасақтаманы әзірлеуге және сынауға мүмкіндік беру. Бұл аппараттық даму саласында "солға жылжу" немесе "силицийге дейін қолдау" деп белгілі. Болашақ аппараттық құрал үшін толық жүйелік симулятор немесе виртуалды платформа әдетте бір немесе бірнеше нұсқаулар жиынтығы симуляторларын қамтиды. Басқа аппараттық құрылғының немесе толық компьютердің машиналық кодын жоғары деңгейдегі үйлесімділік үшін симуляциялау. Мысалы, IBM 1401 кейінгі IBM/360-та микрокодты эмуляциялау арқылы симуляцияланды. Сынау және түзету мақсатында машиналық код нұсқауларын (бірақ кіріс ағыны ретінде қарастырылады) бақылау және орындау, мысалы, жадты қорғаумен (бейкөлік немесе қасақана буфер асып кетуіне қарсы қорғау). Процессордың өзі тексерілетін элементтердің бірі емес процессорлық ядроны қамтитын симуляциялардың жылдамдығын арттыру; Verilog пайдаланылатын аппараттық сипаттама тілінің дизайнында, онда ISS сияқты құралдармен симуляция "PLI" арқылы жылдамдатылуы мүмкін (PL/1-мен шатастырмау керек, ол бағдарламалау тілі).

Жоғары

Жоғарыда аталған негізгі "циклды" (Fetch/Execute/calculate new address) орындау үшін қажетті нұсқаулар саны аппараттық құралға байланысты, бірақ IBM S/360/370/390/ES9000 машинасының түрінде көптеген нұсқаулар үшін шамамен 12 немесе 13 нұсқаумен орындауға болады. Жады мекенжайларының дұрыстығын тексеру немесе шартты "тоқтатулар" жүктемеге қосымша шығын әкеледі, бірақ оңтайландыру техникалары оны қабылданатын деңгейге дейін төмендетуге мүмкіндік береді. Тестілеу мақсатында бұл әдетте жеткілікті, себебі қуатты түзету мүмкіндіктері бар, соның ішінде нұсқау бойынша қадамдық өту, із кесу және қателіктерді тексеру үшін қасақана түрде қателіктерді іздеу ретіне секіру (нақты қателік болмаған жағдайда) қарастырылған. Бұған қоса, толық нұсқаулар ізтаспасын нақты (орындалған) кодты тексеру үшін пайдалануға болады.

Қосымша артықшылықтар

Кейде мақсатты бағдарламаның орындалуын бақылау, бақылау кезінде пайда болатын (немесе кейде жоғалып кететін) кездейсоқ қателерді анықтауға көмектеседі, бірақ нақты орындалу кезінде олар байқалмайды. Мұндай жағдай, мақсатты бағдарлама бақылау бағдарламасының бірдей адрестік кеңістікте физикалық түрде орналасуына байланысты, әдеттегіден өзгеше жад мекенжайына жүктелген кезде туындауы мүмкін. Егер мақсатты бағдарлама жадтың "кездейсоқ" орнынан (әдетте оған тиесілі емес орнынан) мән алса, мысалы, көп жағдайда ол нөлдер (X"00") болуы мүмкін және бағдарлама қалыпты жұмыс істейді. Егер бақылау бағдарламасы жүктеу нүктесін өзгертетін болса, ол X"FF" мәнін алуы мүмкін, бұл салыстыру операциясы кезінде басқа нәтижелерге әкеледі. Сонымен қатар, егер бақылау бағдарламасы мән "алынатын" жад орнын иеленетін болса, ұқсас нәтижелер пайда болуы мүмкін. Қайта кіру қателері: статикалық айнымалыларды "динамикалық" жіптік жадтың орнына кездейсоқ пайдалану көптеген жағдайларда қайта кіру мәселелерін тудыруы мүмкін. Бақылау бағдарламасын пайдалану, сақтау қорғаныш кілтісіз де оларды анықтауға мүмкіндік береді. Рұқсатсыз операциялар: кейбір операциялық жүйелер (немесе аппараттық құралдар) операциялық жүйеге жасалатын белгілі бір шақырулар үшін қолданба бағдарламасының дұрыс "режимде" болуын талап етеді. Нұсқаулықты модельдеу осы шарттарды орындалу алдында анықтауға мүмкіндік береді. Ыстық нүктелерді талдау және нұсқауларды пайдалану: симуляция кезінде орындалған нұсқауларды санау арқылы (бұл нақты процессорда немесе бақыланбаған орындалуда орындалған нұсқаулар санымен сәйкес келеді), симулятор алгоритмнің әртүрлі нұсқалары арасындағы салыстырмалы өнімділікті өлшеуге және бағдарламашының оптимизациялауға бағытталатын "ыстық нүктелерді" анықтауға мүмкіндік береді. Осы рөлде, оны орындауды талдаудың бір түрі деп қарастыруға болады, себебі мұндай статистиканы қалыпты орындау кезінде алу қиын, әсіресе жоғары деңгейдегі тіл бағдарламалары үшін, олар өз табиғаты бойынша машиналық кодтың нұсқауларының көлемін жасырады.

Білім беру мақсаттары

Кейбір бағдарламалық симуляторлар әлі де ассемблер тілін және нұсқаулар жиынтығы архитектурасын оқыту құралы ретінде қолданылады, ал кейбіреулері бірнеше симуляциялық қабаттарды және ISA-дан ISA-ға симуляциялауды қолдана отырып, тіпті ISA-ларды жобалауға және оларды симуляциялауға мүмкіндік беретіндей етіп әзірленген.

Сын

Дональд Кнут "Компьютерлік бағдарламалау өнері" атты кітабының бірінші томында былай деп жазды: "Автордың пікірінше, бағдарламашылардың тым көп уақыты мұндай [машина тілі] симуляторларын жасауға жұмсалды, ал компьютер уақыты оларды пайдалануға тым көп кетті". Бірақ, келесі бөлімде автор осындай симуляторлардың қателерді жою мақсатында із кесу немесе бақылау бағдарламалары ретінде пайдалы екендігіне мысалдар келтіреді.