His
В E S E A R >: II
ТЕХНОЛОГИИ ИНФОРМАЦИОННОГО ОБЩЕСТВА
Использование эмуляторов вычислительных устройств в образовательном процессе
и их особенности
Описаны способы эмулирования цифровых систем и особенности эмуляторов для учебных целей. Проанализированы особенности эмулятора микропроцессора КР580ВМ80А.
Ключевые слова: микропроцессор, эмулятор, КР580ВМ80А, ассемблер, учебный процесс.
Иванов М.А., Чикалов А.Н.,
Северо-Кавказский филиал Московского технического университета связи и информатики
В настоящее время самые разнообразные компьютерные и информационные технологии находят применение в области образования. Без компьютерных систем невозможно представить себе процесс подготовки современного специалиста в любой области. Использование компьютерных технологий в образовательном процессе в условиях профессионального учебного заведения предоставляет обучающимся современные средства, которые позволяют ускорить процессы интеллектуального развития, а также способствуют формированию профессиональных навыков.
Эмуляторы вычислительных устройств являются незаменимым инструментом в образовательном процессе. Эмуля?ция (англ. emulation) воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств. Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе), отличной, или в некоторых случаях идентичной той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения. В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.
Эмуляторы используются достаточно часто в самьх различных целях. Например, при разработке новых вычислительных систем, сначала создается эмулятор, выполняющий программы, разрабатываемые для еще несуществующих компьютеров. Это позволяет оценить систему команд и наработать базовое программ-
ное обеспечение еще до того, как будет создано соответствующее оборудование. Так же использование эмулятора позволяет исследовать различные ситуации, которые трудно воспроизвести на реальной аппаратуре.
В свое время была доказана принципиальная эквивалентность определения понятия вычислимости функции или алгоритма, реализуемого для абстрактных вычислительных машин (например, машин Тьюринга, Маркова, Поста и т.д.). Таким образом, было открыто широкое поле для реализации программных эмуляторов, которые, на основе системы команд и архитектуры одной вычислительной машины, позволяли имитировать работу другого вычислителя. Таким образом, стало возможным изучать вопросы эффективности реализации алгоритмов на машинах разной архитектуры.
Важное преимущество эмуляторов возможность многократного воспроизведения рабочих ситуаций. Если надо понять, почему участок программы работает некорректно, можно повторять этот участок снова и снова до тех пор, пока ошибка не будет обнаружена.
Также, загрузка программы в эмулятор чаще происходит быстрее, чем в реальное "железо", что очень удобно при написании программного обеспечения, при отладке.
В тоже время, эмуляция очень ресурсоёмкая задача, и может требовать от компьютера намного большей производительности (скорости процессора, объёма памяти), чем производительность эмулируемой системы. Чем сложнее система и выше точность эмуляции - тем большая производительность для неё требуется.
Создание эмулятора - очень сложная задача, требующая большого опыта программи-
Use of emulators of computing devices in educational process and their feature
Ivanov M.A., Chikalov A.N.,
North-Caucasian branch of the Moscow technical university relationship and informatics
Abstract
The ways of emulation of digital systems and features of emulators for the educational purposes are described. The features of the emulator of the microprocessor KP580BM80A are analyzed.
Keywords: microprocessor, emulator, КР580ВМ80А, assembler, educational process.
Наукоёмкие технологии в космических исследованиях Земли № 2-2012
INFORMATION SOCIETY TECHNOLOGIES
рования, теоретических знаний, точной информации об устройстве эмулируемой системы. Поэтому эмуляторы одной и той же системы могут различаться как в достоверности эмуляции, так и в требованиях к компьютеру.
Существует по крайней мере два основных подхода к эмуляции.
Первый является полностью программным, то есть весь эмулируемый код разбирается и выполняется процедурами эмулятора.
Данный подход самый безопасный, т.к. в независимости от того, какой вредоносный код загрузят в эмулятор, он всё равно не сможет воздействовать на настоящий процессор. Также этим методом можно эмулировать произвольные архитектуры процессоров. Так, например, на персональном компьютере с 32-битным процессором можно эмулировать 64-битный процессор или вообще процессор мобильного телефона или игровой приставки. Однако этот подход также самый трудоёмкий и медленный по скорости исполнения эмулируемого кода. Трудоёмкость заключается в необходимости реализовывать в процедурах каждую инструкцию процессора. Медленный же он потому, что исполнить инструкцию на настоящем процессоре намного быстрее чем исполнить подпрограмму, эмулирующую эту инструкцию и состоящую из множества команд.
Учитывая эти основные минусы, самым большим из которых является скорость исполнения, был разработан метод частичного исполнения эмулируемого кода на настоящем процессоре. Суть его том, что в эмулируемом коде выбирается блок безопасного кода и передаётся на исполнение реальному процессору, после чего управление снова переходит на программу эмулятора. Безопасен код в том смысле, что он не сможет навсегда перехватить управление или обрушить программу, например, попытавшись записать данные из недоступной для записи области памяти.
Этот подход, несмотря на заметно более высокую скорость исполнения, также имеет свои минусы. Первый из них сложность реализации. Эмулируемый код нужно выбирать или модифицировать таким образом, чтобы после передачи его реальному процессору не возникало ошибок и после исполнения можно было вернуться обратно в эмулятор. Второй - по причине частичного исполнения на реальном процессоре эмулируемый код должен быть напи-
сан под ту же архитектуру, что и эмулятор.
Эмуляторы редко используют прямой доступ к оборудованию. Достаточно обеспечить некоторый уровень совместимости, обеспечивающий трансляцию системных вызовов эмулируемой системы в вызовы работающей системы.
Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:
- эмулятора или симулятора центрального процессора;
- модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ;
- модуля или модулей эмуляции различных устройств ввода/вывода.
Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.
Для решения учебных задач требования к эмулятору могут быть изменены. Бесспорно, они зависят от конкретных изучаемых вопросов, но на этапе первичного изучения вычислительной техники основными требованиями являются наглядность, доступность для понимания, наличие регулируемой детализации рассматриваемых процессов, но вместе с тем, и
His
В Е S Е A R С II
возможность демонстрации работы устройства в условиях решения задач реальной практической сложности. Эти требования противоречивы, часто не удается найти золотую середину, и принимаются решения, корни которых лежат в желании максимально продемонстрировать все преимущества устройства. При этом значительный урон наносится методическим возможностям эмулятора, что для учебного процесса недопустимо и часто сопровождается просто отказом от его использования.
В этом смысле значительный интерес представляет эмулятор микропроцессорной системы КР580 (разработка МИРЭА http://www.zic-homepage.narod.ru). Его нельзя в настоящее время назвать современным, но его структура и система команд является классической, в значительной степени повторяет апробированные технические решения больших ЭВМ, достаточно логически мощная и гибкая. Это делает понятными основные группы команд, обеспечивая при этом достаточно широкие возможности для демонстрации типовых приемов программирования и адресации операндов. Поэтому для начального обучения микропроцессорной технике отказываться от этого эмулятора было бы неправильно.
Данный эмулятор предполагает: написание программ на языке ассемблера, используя си-
High technologies in Earth space research № 2-2012
His
В E S E A R >: II
ТЕХНОЛОГИИ ИНФОРМАЦИОННОГО ОБЩЕСТВА
стему команд МП КР580ВМ80А, их отладку и выполнение в тактовом, командном и сквозном режимах. На нем можно изучать принципы и порядок выполнения команд; приобрести навыки работы с внешними устройствами МП-системы; получить представления об организации внешней и внутренней (регистровой) памяти и стековой области.
Программа обладает дружественным и лаконичным интерфейсом (см. рис) удобна в использовании и имеет функции сохранения, экспорта и печати данных. В ней предусмотрена контекстная справка по командам, реализованы типовые приемы работы, к которым обучаемые уже приучены благодаря офисным пакетам (работа с меню, приемы перетаскивания команд в окно выполнения, работа со справкой, экспорт данных и т.д.). Всё это позволяет легко и быстро освоить приемы работы с эмулятором, получить необходимые навыки управления микропроцессором и работы с внешними устройствами.
Также, эмулятор может быть полезен и для опытных пользователей, к примеру, в качестве визуализированного помощника в программировании разрабатываемой ими МП-системы на базе КР580ВМ80 (¡8080).
В возможности эмулятора входит: работа с 5-ю внешними устройствами, такими, как монитор, НГМД, НЖМД, сетевой адаптер и принтер; отладка и выполнение программ в тактовом, командном и сквозном режимах; работа со всем спектром системы команд данного МП; сохранение, загрузка и печать данных и результатов; ручной ввод и редактирование дан-
ных в ОЗУ и регистры общего назначения.
В этом эмуляторе удачно сочетаются демонстрация аппаратных особенностей работы процессора и широкие возможности по изучению технологии выполнения программных продуктов. Способ визуализации содержимого ОЗУ позволяет, с одной стороны, увидеть содержимое каждой ячейки памяти, а с другой -требует понимания смысла того кода, который наблюдает обучаемый. В этом можно найти даже некоторый скрытый смысл, который можно использовать в учебных целях. В частности, такие особенности требуют глубокого понимания принципов организации различных типов команд, механизмов работы трансляторов и т.д.
Вместе с тем понятно, что такое отображение ОЗУ диктуется сложными техническими причинами. Гораздо проще дешифрировать каждый байт (как будто он является кодом операции команды), отобразив его мнемоникой и алгоритмически обработать последующие байты, соответствующие длине команды.
Альтернативой такому решению должно было стать написание программы для эмулятора в реальных мнемокодах ассемблера и размещение данных в ОЗУ для выполнения. Однако такое решение связано с написанием реального компилятора, а это задача на несколько порядков более сложная. Для эмулятора, который используется при изучении аппаратной части микропроцессора и принципов его программирования решать ее нецелесообразно. Следует отдать должное авторам программы, которые сумели принять такое удачное решение. Они упростили задачу, но при этом сохра-
нили все необходимые свойства эмулятора для образовательного процесса.
К сожалению, эмулятор не свободен от ряда ошибок. Например, нарушена динамика работы с указателем стека, не устанавливается признак переноса при выполнении команд CMP и CPI, команда JNC не проверяет на равенство. При изучении отдельных команд из этого можно даже извлечь пользу, но при отладке сложных программ ведет к большим потерям времени.
Этот эмулятор использовался для разработки и отладки многих программ, применяющихся в реальных программных системах. Показал свою высокую эффективность и как средство отладки и как инструмент повышения эффективности образовательного процесса.
Литература
1. Легков К.Е. Процедуры и временные характеристики оперативного управления трафиком в транспортной сети специального назначения пакетной коммутации // T-Comm: Телекоммуникации и транспорт, 2012. - №6. - С. 22-26.
2. Бабошин ВА, Сиротенко Ф.Ф., Легков К.Е. Предложения по построению аппаратно-программного комплекса резервирования информации телекоммуникационной сети специального назначения // Труды Северо-Кавказского филиала Московского технического университета связи и информатики. - Ростов-на-Дону: СКФ МТУСИ, 2011. -С. 175-178.
Наукоёмкие технологии в космических исследованиях Земли
16 № 2-2012