СТРАТЕГИИ ОПТИМИЗАЦИИ СТРУКТУР ДАННЫХ ВО ВСТРАИВАЕМЫХ СИСТЕМАХ С ГАРВАРДСКОЙ АРХИТЕКТУРОЙ В УСЛОВИЯХ ДЕФИЦИТА ОПЕРАТИВНОЙ ПАМЯТИ
Журнал: Научный журнал «Студенческий форум» выпуск №22(373)
Рубрика: Технические науки

Научный журнал «Студенческий форум» выпуск №22(373)
СТРАТЕГИИ ОПТИМИЗАЦИИ СТРУКТУР ДАННЫХ ВО ВСТРАИВАЕМЫХ СИСТЕМАХ С ГАРВАРДСКОЙ АРХИТЕКТУРОЙ В УСЛОВИЯХ ДЕФИЦИТА ОПЕРАТИВНОЙ ПАМЯТИ
В условиях развития концепции интернета вещей повышение качества практической подготовки инженерных кадров приобретает первостепенное значение. Программирование встраиваемых систем сопряжено с жесткими аппаратными ограничениями, главным из которых является критический дефицит вычислительных ресурсов. В учебном процессе в качестве базовой платформы часто применяются восьмибитные микроконтроллеры AVR, в частности ATmega328P, построенный на базе Гарвардской архитектуры с физическим разделением шин памяти команд и данных. Микросхема располагает 32 КБ флеш-памяти программ и всего 2 КБ статической оперативной памяти, что представляет собой серьезный инженерный вызов при проектировании систем с графическим интерфейсом.
При реализации игровой логики неопытные разработчики часто применяют динамическое выделение памяти. Однако в условиях отсутствия MMU это неизбежно приводит к фрагментации кучи и её столкновению со стеком вызовов, что вызывает аппаратный сбой и циклическую перезагрузку микроконтроллера [1, с. 142]. Для обеспечения отказоустойчивой работы необходимо полностью исключить динамическое распределение памяти, перейдя к статическому выделению и глубокой оптимизации хранимых типов данных [2, с. 58].
Первая стратегия оптимизации применяется при проектировании динамически изменяемых массивов известного размера. При реализации игрового ядра хранится двумерный массив игрового поля (10×20 ячеек). Вместо стандартных логических флагов массив хранит непосредственно 16-битные цветовые коды блоков в формате RGB565, занимая строго фиксированные 400 байт. Такой подход дополнительно исключает ресурсоёмкие операции конвертации цветов при растеризации кадра.
Вторая стратегия требуется для хранения константных структур данных — многомерных матриц геометрии объектов. Используется семь типов фигур, каждая с четырьмя фазами вращения, описываемыми матрицей 4×4. Стандартное объявление такого четырёхмерного массива потребует 448 байт оперативной памяти — почти четверть всех ресурсов. В совокупности с прочими буферами это гарантированно приведёт к переполнению ОЗУ. Решение — использование директивы компилятора, специфичной для Гарвардской архитектуры, которая вытесняет константный массив из ОЗУ в сегмент флеш-памяти программ. Структура хранения представлена на рисунке 1.

Рисунок 1. Структура хранения геометрии игровых фигур в виде четырёхмерного константного массива
Поскольку процессорное ядро AVR не позволяет напрямую использовать данные из флеш-памяти в вычислительных функциях [3, с. 215], внедрён механизм побайтового чтения: специализированный макрос считывает геометрию выбранной фигуры в компактный 16-байтный рабочий буфер в ОЗУ, с которым взаимодействует вся логика коллизий и графический конвейер. Для верификации решений проведено нагрузочное тестирование с мониторингом свободного пространства между кучей и указателем стека [4, с. 110]. Результаты показали, что резерв ОЗУ стабильно превышал 450 байт на протяжении всей сессии без единого аппаратного сбоя.
Таким образом, грамотное распределение массивов между памятью программ и памятью данных является фундаментальным навыком при проектировании встраиваемых систем. Реализованные стратегии оптимизации позволили уместить сложную логику аркадных алгоритмов и графический конвейер в рамки 2 КБ оперативной памяти, что обладает высокой образовательной ценностью для студентов, изучающих низкоуровневую оптимизацию ПО.

