Эпоха ARMv4: фундамент мобильных вычислений

Иван Корнев·05.05.2026·6 мин

ARMv4 — это четвертая версия архитектуры набора команд (ISA) компании ARM, выпущенная в 1996 году. Она стала первой полноценной 32-битной архитектурой ARM, отказавшейся от обязательной поддержки 26-битного адресного пространства предыдущих версий. Именно на базе ARMv4 были созданы легендарные процессоры ARM7TDMI и StrongARM, которые обеспечили революцию в портативной электронике, включая первые смартфоны, плееры iPod Classic и игровые консоли Game Boy Advance.

Главное отличие ARMv4 от современных архитектур (ARMv8/ARMv9) заключается в отсутствии нативной 64-битной поддержки, менее эффективной конвейеризации и отсутствии расширений для работы с плавающей точкой и векторными операциями в базовом ядре. Сегодня ARMv4 не используется в новых потребительских устройствах, но остается важной частью истории вычислительной техники и встречается в узкоспециализированных устаревших промышленных контроллерах.

Что такое ARMv4 и её ключевые особенности

Архитектура ARMv4 появилась как ответ на потребность в более мощных, но энергоэффективных процессорах для встраиваемых систем. До неё доминировала ARMv3, которая всё ещё несла груз совместимости с 26-битными системами ранних чипов Acorn. ARMv4 окончательно закрепила 32-битную модель адресации памяти, что позволило обращаться к 4 ГБ оперативной памяти — огромная цифра для середины 90-х.

Ключевые технические характеристики ARMv4:

  • 32-битная шина адреса и данных: Полноценная работа с 32-битными регистрами общего назначения.
  • Режимы Thumb и ARM: Введение 16-битного набора команд Thumb (в подварианте ARMv4T) позволило значительно уменьшить размер кода, что было критично для устройств с дорогой и медленной памятью того времени.
  • Отсутствие аппаратного умножения с накоплением (в базовой версии): Базовое ядро ARM7TDMI выполняло умножение за несколько тактов, что было медленно по современным меркам, но достаточно для аудиодекодеров и простой графики.
  • Гарвардская или модифицированная гарвардская архитектура: Разделение кэшей инструкций и данных (в более продвинутых реализациях, таких как ARM9TDMI, который часто относят к переходным моделям, но базирующимся на принципах, заложенных в эпоху v4/v5).

Важное уточнение: Часто возникает путаница между ядром процессора (например, ARM7) и версией архитектуры (ARMv4). Ядро ARM7TDMI реализует архитектуру ARMv4T. Буква «T» означает поддержку набора команд Thumb.

Где встречалась архитектура ARMv4

Пик популярности устройств на базе ARMv4 пришелся на период с 1996 по 2005 год. Эта архитектура стала «рабочей лошадкой» для целого класса устройств, которые сформировали современный рынок гаджетов.

Легендарные устройства на ARMv4

  1. Game Boy Advance (GBA): Использовал процессор ARM7TDMI с тактовой частотой 16,78 МГц. Огромная библиотека игр для GBA написана именно под эту архитектуру.
  2. Apple iPod (Classic, первых поколений): Первые версии iPod использовали процессор PortalPlayer PP5002, основанный на ядре ARM7TDMI. Это доказало способность архитектуры обрабатывать декодирование MP3 в реальном времени при минимальном энергопотреблении.
  3. Смартфоны Nokia и BlackBerry: Ранние модели коммуникаторов и смартфонов (например, Nokia 9210 Communicator) использовали процессоры на базе ARMv4 для управления интерфейсом и связи.
  4. Маршрутизаторы и принтеры: Многие сетевые устройства начального уровня конца 90-х – начала 00-х годов использовали чипы ARM7 из-за их дешевизны и надежности.

Промышленное наследие

Даже сегодня можно встретить микроконтроллеры, совместимые с ARMv4, в промышленном оборудовании, медицинском приборостроении и автомобильной электронике выпуска до 2010 года. Из-за долгих циклов сертификации такие устройства могут эксплуатироваться десятилетиями, хотя новые разработки на этой архитектуре уже не ведутся.

Сравнение ARMv4 с современными архитектурами (ARMv8/ARMv9)

Разрыв между ARMv4 и актуальными стандартами (ARMv8-A, ARMv9-A) колоссален. Современные процессорируют миллиарды транзисторов, тогда как ARM7TDMI содержал их около 33 тысяч.

Ключевые различия

ХарактеристикаARMv4 (на примере ARM7TDMI)Современные ARM (ARMv8/ARMv9)
РазрядностьТолько 32 бита64 бита (AArch64) + поддержка 32 бит
Конвейер3 стадии (Fetch, Decode, Execute)Глубокий суперскалярный (10+ стадий), внеочередное исполнение
Плавающая точка (FPU)Отсутствует (эмуляция софтом) или опционально VFPv2Интегрированный NEON, сложные векторные расширения
ВиртуализацияОтсутствуетАппаратная поддержка виртуализации на уровне CPU
БезопасностьБазовые привилегии (User/System)TrustZone, MTE (Memory Tagging Extension), шифрование памяти
ЭнергоэффективностьВысокая для простых задачДинамическое управление частотой, гетерогенные ядра (big.LITTLE)

Почему код от ARMv4 не работает на современных чипах напрямую?

Хотя современные процессоры ARM сохраняют обратную совместимость на уровне бинарного кода 32-битных приложений (в режиме AArch32), прямое перенесение низкоуровневого кода или ОС невозможно без изменений.

  1. Управление памятью: ARMv4 использовал простые блоки памяти или ранние версии MMU. Современные системы требуют сложных таблиц страниц и механизмов изоляции.
  2. Прерывания: Модель обработки прерываний в ARMv4 была простой и синхронной. В современных ядрах используются контроллеры прерываний (GIC), требующие иной настройки.
  3. Отсутствие атомарных операций: В ARMv4 не было современных инструкций для безопасной многопоточности (как LDREX/STREX в более поздних версиях или их аналогов в v8), что делает портирование многопоточного кода сложным.

Предупреждение для разработчиков: Если вы пытаетесь запустить старое ПО для GBA или iPod на современном эмуляторе или железе, помните, что тайминги и поведение периферии в ARMv4 были жестко привязаны к тактовой частоте. Современные эмуляторы должны программно имитировать эти задержки, иначе программа может работать слишком быстро или вызывать ошибки синхронизации.

Частые ошибки и заблуждения

При изучении темы ARMv4 часто возникают следующие неточности:

  • «ARMv4 поддерживает 64 бита»: Нет. Поддержка 64-битных вычислений появилась только в архитектуре ARMv8 (2011 год).
  • «Все старые процессоры ARM одинаковы»: Архитектура ARMv5 добавила важные инструкции для улучшения производительности компиляторов, а ARMv6 добавила медиа-инструкции SIMD. Код, оптимизированный под ARMv6, не будет эффективно работать (или вообще не запустится) на чистом ARMv4.
  • «ARM7 — это 7-е поколение»: Нумерация ядер (ARM7, ARM9, ARM11) не совпадает с нумерацией архитектур (ARMv4, ARMv5, ARMv6). Ядро ARM7 относится к архитектуре ARMv4, а ARM11 — к ARMv6.

FAQ

Можно ли сегодня купить новый чип на базе ARMv4? Нет. Компания ARM Holdings прекратила лицензирование ядер семейства ARM7 (базирующихся на v4) более 15 лет назад. Новые чипы производятся только на базе архитектур ARMv8 и ARMv9. Однако старые запасы микроконтроллеров могут встречаться у поставщиков электронных компонентов.

Почему ARMv4 считалась такой энергоэффективной? Из-за простоты. Отсутствие сложных блоков предсказания ветвлений, глубоких конвейеров и кэшей большого объема означало, что транзисторы переключались реже, а утечки тока были минимальными. Для задач вроде воспроизведения MP3 или отображения текста этого было достаточно.

Имеет ли смысл изучать ассемблер ARMv4 сейчас? Только в образовательных целях или для реверс-инжиниринга старых игр и устройств. Для современной разработки встроенных систем следует изучать ARMv7-M (для микроконтроллеров Cortex-M) или ARMv8-A (для приложений на Linux/Android/iOS).

Что такое Thumb в контексте ARMv4? Thumb — это подмножество 16-битных инструкций, введенное в ARMv4T. Оно позволяло упаковывать код плотнее, экономя драгоценную память в устройствах 90-х годов. Процессор мог переключаться между 32-битным режимом ARM (высокая производительность) и 16-битным Thumb (высокая плотность кода) на лету.