Статья:

СТРАТЕГИИ ОПТИМИЗАЦИИ СТРУКТУР ДАННЫХ ВО ВСТРАИВАЕМЫХ СИСТЕМАХ С ГАРВАРДСКОЙ АРХИТЕКТУРОЙ В УСЛОВИЯХ ДЕФИЦИТА ОПЕРАТИВНОЙ ПАМЯТИ

Журнал: Научный журнал «Студенческий форум» выпуск №22(373)

Рубрика: Технические науки

Выходные данные
Потапов А.В. СТРАТЕГИИ ОПТИМИЗАЦИИ СТРУКТУР ДАННЫХ ВО ВСТРАИВАЕМЫХ СИСТЕМАХ С ГАРВАРДСКОЙ АРХИТЕКТУРОЙ В УСЛОВИЯХ ДЕФИЦИТА ОПЕРАТИВНОЙ ПАМЯТИ // Студенческий форум: электрон. научн. журн. 2026. № 22(373). URL: https://nauchforum.ru/journal/stud/373/188589 (дата обращения: 06.07.2026).
Журнал опубликован
Мне нравится
на печатьскачать .pdfподелиться

СТРАТЕГИИ ОПТИМИЗАЦИИ СТРУКТУР ДАННЫХ ВО ВСТРАИВАЕМЫХ СИСТЕМАХ С ГАРВАРДСКОЙ АРХИТЕКТУРОЙ В УСЛОВИЯХ ДЕФИЦИТА ОПЕРАТИВНОЙ ПАМЯТИ

Потапов Андрей Витальевич
студент, Гомельский государственный технический университет имени П.О. Сухого, Беларусь, г. Гомель
Савельев Вадим Алексеевич
научный руководитель, канд. техн. наук, доц., Гомельский государственный технический университет имени П.О. Сухого, Беларусь, г. Гомель

 

В условиях развития концепции интернета вещей повышение качества практической подготовки инженерных кадров приобретает первостепенное значение. Программирование встраиваемых систем сопряжено с жесткими аппаратными ограничениями, главным из которых является критический дефицит вычислительных ресурсов. В учебном процессе в качестве базовой платформы часто применяются восьмибитные микроконтроллеры 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 КБ оперативной памяти, что обладает высокой образовательной ценностью для студентов, изучающих низкоуровневую оптимизацию ПО.

 

Список литературы:
1. Белов, А. В. Программирование микроконтроллеров для начинающих и не только / А. В. Белов. – Санкт-Петербург : Наука и Техника, 2020. – 352 с.
2. Соммер, У. Программирование микроконтроллерных плат / У. Соммер. – Санкт-Петербург : БХВ-Петербург, 2021. – 288 с.
3. Харрис, Д. Цифровая схемотехника и архитектура компьютера / Д. Харрис, С. Харрис. – Москва : ДМК Пресс, 2018. – 792 с.
4. Шпак, Ю. А. Программирование на языке С для AVR и PIC микроконтроллеров / Ю. А. Шпак. – Москва : МК-Пресс, 2019. – 400 с.