Современные технологии позволяют проектировать устройства, содержащие до 100 миллионов вентилей. Схема процессора, в среднем, состоит из 25 тысяч вентилей. В связи с этим возникает потребность разрабатывать устройства с использованием множества процессоров. Разработка таких систем невозможна без применения средств проектирования, моделирования, отладки, исследования и верификации программного обеспечения мультипроцессорных комплексов.
Распространенные на данный момент программные средства (ProView32 фирмы FSI, MPLab фирмы Microchip Technology, AVR Studio фирмы Atmel Corporation, UVision фирмы Keil Software, Code Composer Studio фирмы Texas Instruments, IAR Embedded Workbench фирмы IAR Systems и т.д.) в основном ориентированны на разработку ПО для однопроцессорных систем. В связи с этим возникает необходимость в создании метода и средств моделирования, исследования и разработки программного обеспечения мультипроцессорных систем.
Для решения поставленных задач был разработан программный комплекс, включающий в себя:
Система отличается высокой скоростью моделирования (до 10 миллионов инструкций в секунду на Pentium III 1GHz). Позволяет моделировать не только процессоры, но и сложную внешнюю периферию. С помощью специального редактора, можно указать какие контакты процессора соединены с контактами другого процессора или периферийного устройства. Моделирование внешней периферии повышает адекватность и облегчает работу программиста по отладке и проектированию.
Интегрированный отладчик позволяет выполнять программу по шагам, устанавливать точки останова (как простые, так и условные). Вести контроль исполнения программы можно с помощью специализированных окон, включающих в себя:
Эти окна отображают текущие состояния ресурсов процессора и позволяют их изменять.
Для облегчения отладки программ на языках высокого уровня (например, Си) имеется специальное окно, в котором не только можно просматривать и изменять значения переменных сложного типа (например, структуры и массивы), но и указать выражение с использованием арифметических и логических операций. Значение выражения будет посчитано и так же отображено в этом окне.
Менеджер проекта отображает список исходных файлов в виде дерева и позволяет создавать виртуальные папки, в которые могут быть перемещены файлы. Причем место расположения самих файлов не меняется. Это позволяет лучше ориентироваться в проекте, состоящем из большого количества исходных файлов. В этом же дереве отображается зависимость одних исходных файлов от других. Менеджер проекта отслеживает изменение файлов и при начале очередного сеанса моделирования перекомпилирует зависимые файлы.
Для проверки работоспособности программ используется подсистема интерактивного тестирования, с помощью специального редактора можно указать начальные значения и выходные данные. После изменения программы можно запустить тестирование и получить окно с результатами прохождения тестов.
Для проверки адекватности моделей процессоров используется пакетное тестирование. В этом режиме программный комплекс загружает по очереди небольшие тестовые файлы на языке ассемблера. В этих файлах с помощью "теневых" команд тестируются выполнение инструкций процессора.
"Теневой" командой называется специальным образом оформленный комментарий в тексте программы, начинающийся с символа '$'. "Теневые" команды не влияют на полученный машинный код, но на основе их трансляторы, поддерживающие эту технологию, генерируют информацию, которая в дальнейшем используется средой моделирования.
Механизм действия "теневых" команд следующий: перед исполнением строки программы, для которой указана одна или несколько "теневых" команд, эти команды интерпретируются и производятся необходимые действия, затем выполняется машинный код соответствующий текущей строке программы.
Для осуществления полного тестирования моделей процессоров, разработан следующий набор "теневых" команд:
Команды ERR и OK используются при тестировании инструкций переходов и циклов.
Разработанный комплекс был внедрен в учебный процесс и в производство (имеются акты о внедрении). С помощью данного комплекса разработаны управляющие программы для: