Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

3.4. Микропрограммы. Эмуляция. Микропрограммная поддержка.

Микропрограмма (англ. firmware) — системное программное обеспечение, встроенное («зашитое») в аппаратное устройство, и хранящееся в его энергонезависимой памяти.

Под микропрограммой понимается следующее:

Компьютерная программа, записанная на интегральной микросхеме ПЗУ и управляющая работой аппаратного обеспечения.

Программа, записанная на той же микросхеме, что и процессор, и превращающая его в специализированный для управления аппаратным обеспечением (микроконтроллер).

Программа по тактам управляющая ресурсами вычислительного устройства (ALU, сдвигатели, мультиплексоры и др.). Обычно в командном слове выделяются отдельные биты для управления необходимым устройством.

Программа конфигурирования различных ПЛИС (FPGA, CPLD, PAL и т. п.).

Зачастую различные по возможностям и цене приборы отличаются лишь версиями микропрограммы. Для обозначения версии микропрограммы используется номер партии аппаратного обеспечения или другие специализированные идентификаторы. Часто смена «прошивки» производится изготовителем без уведомления потребителя.

Применение

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

Примеры реализации

Широко известным примером является BIOS, поставляемая вместе с материнской платой компьютера и обеспечивающая начальную подготовку компьютера к запуску операционной системы.

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

Так, для небольших устройств иногда используется FreeRTOS. В последнее время, в связи с удешевлением памяти, достаточно часто применяется GNU/Linux.

Для написания исходных текстов программ используются ассемблеры, язык Си, языки типа Verilog для микросхем с программируемой логикой (ПЛИС).

Эмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств.

Цели

Создание нового микропроцессора/микроконтроллера. В этом случае при помощи эмулятора (программы или устройства) выполняются команды этого процессора.

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

Тестирование программ, написанных для различных систем.

Программная эмуляция

Эмуляция позволяет выполнять компьютерную программу на платформе (компьютерной архитектуре и/или операционной системе), отличной, или в некоторых случаях идентичной той, для которой она была написана в оригинале. Эмуляцией также называют сам процесс этого выполнения.[источник не указан 1037 дней] В отличие от симуляции, которая лишь воспроизводит поведение программы, при эмуляции ставится цель точного моделирования состояния имитируемой системы, для выполнения оригинального машинного кода.

При использовании языков высокого уровня, иногда в целях сохранения быстродействия исполняемой программы, вместо эмуляции делают портирование программ в новую среду. В этом случае производится переписывание заново аппаратно-зависимых участков кода.

Одно из популярных применений эмуляции — выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.

Теоретически, согласно тезису Чёрча — Тьюринга, любая операционная среда может быть эмулирована в любой другой среде. На практике, однако, встречается ряд трудностей; в частности, точное поведение эмулируемой системы часто не документированно (или скрывается под грифом коммерческой тайны) и должно быть исследовано и определено с помощью обратной разработки.

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, ZX-Spectrum, программное обеспечение которых сильно зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр, а также энтузиастами демосцены. Такие программы достаточно часто бывают основаны на недокументированных возможностях процессора или операционной системы.

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

Обычно, эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:

эмулятора или симулятора [источник не указан 1037 дней] центрального процессора;

модуля подсистемы памяти, эмулирующего ОЗУ и ПЗУ;

модуля или модулей эмуляции различных устройств ввода/вывода.

Системная шина обычно не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулю памяти.