Jump to content

Симулятор набора команд

Симулятор набора команд ( ISS ) — это имитационная модель , обычно закодированная на языке программирования высокого уровня , которая имитирует поведение мэйнфрейма или микропроцессора процессора путем «чтения» инструкций и поддержания внутренних переменных, которые представляют регистры .

Моделирование инструкций — это методология, используемая по одной из нескольких возможных причин:

  • Смоделировать архитектуру набора команд (ISA) будущего процессора, чтобы обеспечить возможность разработки и тестирования программного обеспечения, не дожидаясь завершения разработки и производства аппаратного обеспечения. В области разработки аппаратного обеспечения это часто называют «сдвигом влево» или «до-кремниевой поддержкой». Полный системный симулятор или виртуальная платформа для будущего оборудования обычно включает в себя один или несколько симуляторов набора команд.
  • Для моделирования машинного кода другого аппаратного устройства или всего компьютера для обеспечения совместимости снизу вверх .
Например, IBM 1401 был смоделирован на более поздней модели IBM/360 с помощью микрокода эмуляции .

Выполнение

[ редактировать ]

Симуляторы с набором инструкций могут быть реализованы с использованием трех основных методов:

  • Интерпретация, при которой каждая инструкция выполняется непосредственно МКС.
  • Компиляция «точно в срок» (JIT), при которой исполняемый код сначала транслируется в набор команд главного компьютера. Обычно это примерно в десять раз быстрее, чем хорошо оптимизированный интерпретатор.
  • Виртуализация, при которой расширения процессора для виртуальных машин используются для выполнения инструкций в МКС. Это работает только для моделирования одного и того же набора команд, например запуска симуляторов x86 на хостах x86 или симуляторов ARM на хостах ARM.

ISS часто снабжена (или сама является) отладчиком , чтобы инженер-программист / программист мог отладить программу до получения целевого оборудования. GDB — это отладчик со встроенным ISS. Иногда его интегрируют с моделируемыми периферийными схемами, такими как таймеры , прерывания , последовательные порты , общие порты ввода-вывода и т. д., чтобы имитировать поведение микроконтроллера .

Базовый метод моделирования команд одинаков, независимо от цели: сначала выполняется программа мониторинга, передавая имя целевой программы в качестве дополнительного входного параметра.

Затем целевая программа загружается в память, но управление никогда не передается коду. Вместо этого точка входа вычисляется слово состояния псевдопрограммы в загруженную программу, и в этом месте устанавливается (PSW). Слово состояния программы (PSW) состоит из регистра состояния и счетчика программ , последний из которых указывает следующую команду, которая будет выполнена. [1] Следовательно, этому месту присвоен именно программный счетчик. Набор псевдорегистров устанавливается на то, что они содержали бы, если бы программе было передано управление напрямую.

Возможно, потребуется изменить некоторые из них, чтобы указать на другие псевдо «блоки управления» в зависимости от аппаратного обеспечения и операционной системы. Также может потребоваться сбросить исходный список параметров, чтобы «удалить» ранее добавленный параметр имени программы.

Далее выполнение происходит следующим образом:

  1. Определите длину инструкции в псевдо-адресе PSW (первоначально первая инструкция в целевой программе). Если это смещение инструкций внутри программы соответствует набору ранее заданных точек «паузы», установите причину «Паузы» и перейдите к шагу 7.
  2. «Извлеките» инструкцию из исходного места (при необходимости) в память монитора. Если «трассировка» доступна и включена, сохраните имя программы, смещение инструкции и любые другие значения.
  3. В зависимости от типа инструкции выполните проверки перед выполнением и выполните. Если инструкция не может быть продолжена по какой-либо причине (неверная инструкция, неправильный режим и т. д.), перейдите к шагу 7. Если инструкция собирается изменить память, проверьте, существует ли место назначения памяти (для этого потока ) и достаточно ли оно велико. Если все в порядке, загрузите соответствующие псевдорегистры во временные реальные регистры, выполните эквивалентное перемещение с реальными регистрами, сохраните адрес и длину измененной памяти, если трассировка включена, и перейдите к шагу 4. Если инструкция является «регистр-регистр» загрузить псевдорегистры в реальные регистры монитора, выполнить операцию, сохранить обратно в соответствующие псевдорегистры, перейти к шагу 4. Если инструкция является условным переходом, определить, удовлетворено ли условие: если нет, перейти к шагу 4, если условие выполнено, вычислить переход по адресу, определить, является ли он действительным (если нет, установить ошибку = « Дикая ветвь » и перейти к шагу 7.) Если все в порядке, перейти к шагу 5. Если инструкция является вызовом операционной системы, выполните реальный вызов из программы мониторинга путем «фальсификации» адреса для возврата управления программе мониторинга и последующего сброса псевдорегистров для отражения вызова; перейти к 4.
  4. Добавьте длину инструкции к текущему значению псевдоPSW.
  5. Сохраните следующий адрес в псевдоPSW.
  6. Перейти к 1.
  7. Остановить выполнение.

В целях тестирования и отладки программа мониторинга может предоставлять средства для просмотра и изменения регистров, памяти и места перезапуска, получения мини- дампа ядра или печати символических имен программ с текущими значениями данных. Это может разрешить новые места условных «пауз», удалить нежелательные паузы и тому подобное.

Моделирование инструкций дает возможность обнаружить ошибки ДО их выполнения, что означает, что условия остаются такими же, какими они были, и не разрушаются ошибкой. Очень хорошим примером из мира IBM S/360 является следующая последовательность команд, которая может вызвать трудности при отладке без монитора моделирования команд.

     LM    R14,R12,12(R13)   where r13 incorrectly points to string of X"00"s
     BR    R14              causes PSW to contain X"0000002" with program check "Operation Exception"
*                           all registers on error contain nulls.

Последствия

[ редактировать ]

Накладные расходы

[ редактировать ]

Количество инструкций для выполнения описанного выше базового «цикла» (выборка/выполнение/вычисление нового адреса) зависит от аппаратного обеспечения, но это можно выполнить на IBM S/360 машинах /370/390/ES9000 примерно за 12 или 13 инструкций для множество типов инструкций. Проверка допустимых ячеек памяти или условных «пауз» значительно увеличивает накладные расходы, но методы оптимизации могут снизить их до приемлемого уровня. Для целей тестирования это обычно вполне приемлемо, поскольку предоставляются мощные возможности отладки, включая пошаговые инструкции , трассировку и намеренный переход к процедуре проверки ошибок (при отсутствии фактической ошибки). Кроме того, полная трассировка инструкций может использоваться для проверки фактического (исполняемого) покрытия кода .

Дополнительные преимущества

[ редактировать ]

Иногда мониторинг выполнения целевой программы может помочь выявить случайные ошибки, которые появляются (или иногда исчезают) во время мониторинга, но не при реальном выполнении. Это может произойти, если целевая программа загружается в другое место, чем обычно, из-за физического присутствия программы мониторинга в том же адресном пространстве.

Если целевая программа получает значение из «случайного» места в памяти (того, которое обычно ей не принадлежит), оно может, например, быть нулевым (X"00") почти в каждой нормальной ситуации, и программа работает нормально. . Если программа мониторинга смещает точку нагрузки, она может принять, скажем, X"FF", и логика приведет к другим результатам во время операции сравнения. В качестве альтернативы, если программа мониторинга теперь занимает пространство, откуда «подхватывается» значение, могут возникнуть аналогичные результаты.

Ошибки повторного входа: случайное использование статических переменных вместо «динамической» памяти потока может вызвать проблемы повторного входа во многих ситуациях. Использование программы мониторинга может обнаружить их даже без ключа защиты хранилища .

Незаконные операции: некоторые операционные системы (или оборудование) требуют, чтобы прикладная программа находилась в правильном «режиме» для определенных вызовов операционной системы. Моделирование инструкций может обнаружить эти условия перед выполнением.

Анализ горячих точек и использование инструкций путем подсчета инструкций, выполненных во время моделирования (которые будут соответствовать числу, выполненному на реальном процессоре или неконтролируемом выполнении), симулятор может обеспечить как измерение относительной производительности между различными версиями алгоритма, так и использоваться для обнаружения «горячие точки», где оптимизацию программист может затем нацелиться на . В этой роли это можно рассматривать как форму анализа производительности , поскольку нелегко получить эту статистику при нормальном выполнении, и это особенно верно для программ на языке высокого уровня, которые эффективно «маскируют» объем инструкций машинного кода по своей природе.

Образовательные цели

[ редактировать ]

Некоторые из этих программных симуляторов по-прежнему будут использоваться в качестве инструментов для обучения языку ассемблера и архитектуре набора команд, а некоторые специально разработаны с использованием нескольких уровней моделирования и моделирования ISA-ISA, с возможностью даже разрабатывать ISA и моделировать их. [2]

В первом томе « Искусства компьютерного программирования » Дональд Кнут писал: «По мнению автора, слишком много времени программистов было потрачено на написание таких симуляторов [машинного языка] и слишком много компьютерного времени было потрачено впустую на их использование. ." [3] Однако в следующем разделе автор приводит примеры того, как такие симуляторы могут быть полезны в качестве процедур трассировки или мониторинга в целях отладки.

Типичный результат моделирования с помощью программы мониторинга, используемой для тестирования и отладки:

Program        offset         instruction            Dis-assembled             register/ storage (after execution)
TEST001        000000         X'05C0'                BALR   R12,0              R12=002CE00A
               000002         X'47F0C00E'            BC    15,X'00C'(R12)    
               00000E         X'98ECD00C'            STM   R14,R12,X'00C'(R13)   X'002E0008' ==> X'00004CE,002CE008,..etc....'
               000012         X'45E0C122'            BAL   R14,X'122'(R12)     R14=002C0016
SUB1           000124         X'50E0C28A'            ST    R14,X'28A'(R12)       X'002CE294' ==> X'002C0016'
etc...

См. также

[ редактировать ]

Симуляторы

  • ARMulator — симуляторы ЦП для архитектуры ARM , предоставляемые самой ARM как эталонное средство и средство разработки программного обеспечения.
  • Симулятор компьютерной архитектуры
  • CPU Sim - программа на основе Java, которая позволяет пользователю проектировать и создавать набор инструкций, а затем запускать программы инструкций из набора посредством моделирования.
  • Gpsim микроконтроллера PIC симулятор
  • INTERP/8 — Intel 8008 и INTERP/80 для Intel 8080.
  • Компьютер маленького человека — простой пример симулятора набора команд на основе Java.
  • MikroSim - симулятор ЦП, позволяющий определять набор команд на уровне микрокода для использования в образовательных целях.
  • VIP - симулятор ЦП, позволяющий определять набор команд на уровне микрокода для использования в образовательных целях.
  • OVPsim — симулятор процессора и полной системы, предоставляющий более 170 точных моделей процессоров. Позволяет определять пользовательские наборы команд.
  • Saturn+ , усовершенствованный процессор Saturn и системный симулятор для запуска RPL на новых графических калькуляторах HP с процессорами на базе ARM в период с 2003 по 2015 гг.
  • Simics — платформа симулятора ЦП и всей системы, позволяющая создавать полные модели сложного современного оборудования.
  • Симх — моделирование более 50 исторических компьютеров, включая полные системы PDP-11 с вводом-выводом, разрабатываемые с 1960-х годов.
  • Симулятор CPU-OS — интегрированные образовательные симуляторы ЦП RISC-типа и многопоточной операционной системы.

Другой

  1. ^ Хейс, Джон П. (1978). Компьютерная архитектура и организация . Международная книжная компания McGRAW-HILL. п. 51. ИСБН  0-07-027363-4 .
  2. ^ Алмасри, И., Абанда, Г., Шхаде, А., Шахрур, А. (2011, декабрь). Универсальный симулятор ISA с программной реализацией процессора FPGA. В книге «Прикладная электротехника и вычислительные технологии» (AEECT), конференция IEEE в Иордании, 2011 г. (стр. 1–6). IEEE.
  3. ^ «Искусство компьютерного программирования», Дональд Кнут , 1997, Том 1, 3-е издание, Страница 202.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 98e8b488bd3f11f48da5c55475ccfab4__1719186960
URL1:https://arc.ask3.ru/arc/aa/98/b4/98e8b488bd3f11f48da5c55475ccfab4.html
Заголовок, (Title) документа по адресу, URL1:
Instruction set simulator - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)