Открыть сервис

Гарвардская архитектура

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

История

Концепция гарвардской архитектуры была впервые реализована в электромеханическом вычислителе Harvard Mark I, разработанном в 1937–1944 годах под руководством Говарда Эйкена в Гарвардском университете при поддержке компании IBM. В машине Mark I команды (программа) хранились на перфоленте, а данные — на отдельных перфокартах или в механических регистрах. Физическое разделение носителей информации и стало ключевой особенностью, впоследствии названной «гарвардской архитектурой».

Термин был введён позднее, в 1940–1950-х годах, чтобы отличить этот подход от более распространённой архитектуры фон Неймана, где программа и данные хранятся в единой памяти. В течение нескольких десятилетий гарвардская архитектура считалась устаревшей для универсальных компьютеров, так как требовала больше аппаратных ресурсов и усложняла программирование. Однако с развитием микроконтроллеров и цифровых сигнальных процессоров (DSP) в 1970–1980-х годах она пережила возрождение. Например, процессоры семейства PIC (Microchip Technology) и AVR (Atmel, ныне Microchip) используют модифицированную гарвардскую архитектуру, что позволяет им эффективно работать с ограниченными ресурсами памяти и тактовой частоты.

Принцип работы

В классической гарвардской архитектуре память команд и память данных представляют собой два независимых модуля. Каждый из них имеет собственную шину адреса и шину данных. Процессор содержит отдельные блоки управления для выборки команд и для доступа к данным. Это позволяет выполнять следующие операции параллельно:

  1. Выборка команды — процессор считывает следующую инструкцию из памяти команд по адресу, указанному в счётчике команд.
  2. Доступ к данным — одновременно с выборкой команды процессор может читать или записывать данные в память данных, используя адреса, указанные в текущей выполняемой команде.

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

Модифицированная гарвардская архитектура

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

  • Память команд может быть доступна для чтения данных (например, таблицы констант хранятся в памяти команд).
  • Память данных может быть доступна для хранения кода (например, загрузка программ из внешнего хранилища в ОЗУ).
  • Используется кэш-память, которая может быть единой (как в фон-неймановской архитектуре) или разделённой на кэш команд и кэш данных (как в большинстве современных микропроцессоров, например, Intel Core и AMD Ryzen).

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

Сравнение с архитектурой фон Неймана

ХарактеристикаГарвардская архитектураАрхитектура фон Неймана
ПамятьРаздельные блоки для команд и данныхЕдиная память для команд и данных
ШиныДве независимые шины (адреса и данных для команд и для данных)Одна общая шина для команд и данных
ПараллелизмВозможна одновременная выборка команды и доступа к даннымПоследовательный доступ: сначала команда, потом данные (фон-неймановское узкое место)
ПроизводительностьВыше при интенсивной работе с данными (например, в DSP)Ниже при частых обращениях к памяти, но проще в реализации
ГибкостьНиже: сложнее изменять программу во время выполнения (требуется специальная поддержка)Выше: программа и данные могут перераспределяться динамически
Сложность аппаратурыВыше (два контроллера памяти, две шины)Ниже (один контроллер памяти, одна шина)
ПримерыМикроконтроллеры (PIC, AVR), DSP (TMS320), ранние мейнфреймыБольшинство универсальных процессоров (x86, ARM, RISC-V)

Применение

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

Микроконтроллеры

Большинство современных микроконтроллеров (например, семейства PIC, AVR, STM32 (ARM Cortex-M)) используют модифицированную гарвардскую архитектуру. Это позволяет:

  • Хранить программу в энергонезависимой памяти (Flash-память), а данные — в оперативной памяти (SRAM).
  • Выполнять выборку следующей команды одновременно с обработкой текущих данных.
  • Обеспечивать детерминированное время выполнения инструкций (без задержек из-за конфликтов шины).

Цифровые сигнальные процессоры (DSP)

DSP, такие как семейства TMS320 (Texas Instruments) и ADSP (Analog Devices), активно используют гарвардскую архитектуру для параллельного выполнения операций умножения с накоплением (MAC). В типичном цикле DSP:

  • Выбирается команда из памяти программ.
  • Из памяти данных считываются два операнда (например, коэффициенты фильтра и отсчёты сигнала).
  • Результат записывается обратно в память данных.

Это позволяет выполнять одну MAC-операцию за один такт, что критично для обработки аудио, видео и радиосигналов.

Встраиваемые системы реального времени

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

Современные универсальные процессоры

Хотя процессоры общего назначения (x86, ARM) формально относятся к фон-неймановской архитектуре, на уровне кэш-памяти они часто реализуют гарвардский принцип: кэш команд и кэш данных разделены. Это позволяет одновременно загружать команды и данные из кэша, повышая производительность. Однако на уровне основной памяти и системной шины используется единое адресное пространство, что характерно для фон-неймановской архитектуры.

Преимущества и недостатки

Преимущества

  • Повышенная производительность за счёт параллельного доступа к командам и данным.
  • Безопасность: разделение памяти команд и данных предотвращает случайное или злонамеренное изменение программы (например, при переполнении буфера).
  • Предсказуемость: отсутствие конфликтов шины упрощает анализ времени выполнения.
  • Энергоэффективность: в микроконтроллерах можно использовать разные технологии памяти (Flash для команд, SRAM для данных), оптимизируя энергопотребление.

Недостатки

  • Сложность аппаратуры: требуется два независимых контроллера памяти и две шины, что увеличивает площадь кристалла и стоимость.
  • Ограниченная гибкость: программу сложно модифицировать во время выполнения (например, для самообновления или динамической загрузки кода).
  • Фрагментация памяти: адресные пространства команд и данных не пересекаются, что может привести к неэффективному использованию памяти.

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

  • Harvard Mark I (1944) — электромеханический компьютер с раздельными носителями (перфолента для команд, перфокарты для данных).
  • PIC16F84 (Microchip) — 8-битный микроконтроллер с раздельной памятью команд (Flash, 1K слов) и данных (SRAM, 68 байт).
  • ATmega328P (Microchip) — 8-битный микроконтроллер, используемый в Arduino Uno, с модифицированной гарвардской архитектурой.
  • TMS320C64x (Texas Instruments) — DSP с восемью независимыми шинами для параллельного доступа к командам и данным.
  • ARM Cortex-M3 (ARM Holdings) — 32-битный микроконтроллер с модифицированной гарвардской архитектурой (раздельные шины для команд и данных, единое адресное пространство).

Интересные факты

  • Термин «гарвардская архитектура» был предложен не самими разработчиками Mark I, а позднее, в контексте сравнения с архитектурой фон Неймана.
  • В ранних компьютерах (например, ENIAC) использовалась гарвардская архитектура, но с ручным переключением программ (перенастройка штекеров).
  • Современные FPGA (программируемые логические интегральные схемы) часто реализуют гибридные архитектуры, где часть памяти может быть сконфигурирована как гарвардская, а часть — как фон-неймановская.

Источники

  • Patterson, D. A., Hennessy, J. L. «Computer Organization and Design: The Hardware/Software Interface». — Morgan Kaufmann, 2017.
  • Tanenbaum, A. S., Austin, T. «Structured Computer Organization». — Pearson, 2012.
  • Stallings, W. «Computer Organization and Architecture: Designing for Performance». — Pearson, 2019.
  • Документация Microchip Technology: «PIC16F84A Data Sheet» (DS35007B).
  • Документация ARM: «Cortex-M3 Technical Reference Manual» (DDI 0337G).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →