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

MIPS32/64 Release 2

MIPS32/64 Release 2 — это архитектура набора команд (ISA) для микропроцессоров, разработанная компанией MIPS Technologies (в 2018 году приобретена Wave Computing, в 2021 году права перешли к Imagination Technologies) как эволюционное развитие архитектур MIPS32 и MIPS64. Второй выпуск (Release 2) был представлен в 2003 году и стал значительным обновлением, направленным на повышение производительности, эффективности компиляции и поддержку современных вычислительных задач, при сохранении полной обратной совместимости с предыдущими версиями MIPS.

История и предпосылки создания

Архитектура MIPS (Microprocessor without Interlocked Pipeline Stages) была разработана в 1980-х годах в Стэнфордском университете под руководством Джона Хеннесси. Первые коммерческие реализации (R2000, R3000) стали популярны в рабочих станциях и серверах, но к началу 2000-х годов рынок сместился в сторону встраиваемых систем, где требовалась высокая производительность при низком энергопотреблении. MIPS Technologies, выделившаяся из Silicon Graphics, сосредоточилась на лицензировании архитектуры для производителей чипов (Broadcom, Cavium, Atheros, MediaTek, Qualcomm — до перехода на ARM).

К 2003 году архитектура MIPS32 (32-битная) и MIPS64 (64-битная) первого выпуска (Release 1) уже широко использовались в сетевых устройствах, принтерах, цифровых телевизорах и игровых приставках (например, PlayStation Portable). Однако конкуренция со стороны ARM (особенно ядер ARM9 и ARM11) и необходимость поддержки более сложных операционных систем (Linux, VxWorks, Windows CE) потребовали расширения функциональности. Release 2 стал ответом на эти вызовы, добавив ряд критически важных инструкций и механизмов.

Основные нововведения MIPS32/64 Release 2

Расширение набора инструкций

Release 2 ввёл несколько новых инструкций, которые существенно улучшили производительность и снизили размер кода:

  • Инструкции для работы с битами: CLZ (Count Leading Zeros), CLO (Count Leading Ones), DSBH (Double Swap Bytes Within Halfwords), DSHD (Double Swap Halfwords Within Doublewords). Эти инструкции позволили эффективно реализовывать алгоритмы, требующие подсчёта битов (например, в криптографии, кодировании, сетевых протоколах).
  • Инструкции для условного перемещения: MOVN (Move Conditional on Not Zero), MOVZ (Move Conditional on Zero). Они позволили избежать дорогостоящих условных переходов в циклах и при обработке данных, что повысило эффективность конвейера.
  • Инструкции для работы с памятью: PREF (Prefetch) — инструкция предвыборки данных в кэш, что снижало задержки при доступе к памяти. SYNC (Synchronize) — инструкция для обеспечения согласованности памяти в многопроцессорных системах.
  • Инструкции для работы с регистрами: RDHWR (Read Hardware Register) — чтение аппаратных регистров (например, счётчика тактов, идентификатора процессора) из пользовательского режима, что было полезно для профилирования и оптимизации.

Улучшение механизма исключений и прерываний

Release 2 ввёл новую систему обработки исключений (Exception Handling), которая позволила:

  • Использовать векторизованные прерывания (Vectored Interrupts) — каждому прерыванию назначался свой вектор, что ускоряло обработку.
  • Добавить поддержку вложенных прерываний (Nested Interrupts) — возможность прерывать обработку одного прерывания другим, с сохранением контекста.
  • Ввести новые коды исключений для более точной диагностики ошибок (например, нарушение выравнивания, ошибка кэша).

Поддержка виртуализации

Release 2 заложил основы для аппаратной поддержки виртуализации, которая была полностью реализована в последующих версиях (Release 3, 2005). В частности, были добавлены:

  • Режим супервизора (Supervisor Mode) — промежуточный уровень привилегий между пользовательским и ядром, позволяющий реализовывать гостевые операционные системы.
  • Инструкции для управления памятью: TLBWR (Write Random TLB Entry) и TLBWI (Write Indexed TLB Entry) — для более гибкого управления таблицами страниц.

Улучшение работы с кэшем

Release 2 ввёл кэш-инструкции, которые позволяли программно управлять кэшем: очищать, инвалидировать, предварительно загружать данные. Это было критически важно для встраиваемых систем с ограниченной памятью и для систем реального времени.

Поддержка многопроцессорности

Для многопроцессорных систем (SMP) были добавлены:

  • Атомарные инструкции: LL (Load Linked) и SC (Store Conditional) — для реализации блокировок и семафоров без использования прерываний.
  • Инструкции синхронизации: SYNC и SYNC_ACQUIRE/SYNC_RELEASE — для обеспечения порядка операций с памятью.

Классификация и реализации

32-битная версия (MIPS32 Release 2)

MIPS32 Release 2 предназначалась для встраиваемых систем с ограниченными ресурсами. Основные реализации:

  • MIPS32 4Kc — ядро с 5-ступенчатым конвейером, кэшем L1 до 16 КБ, поддержкой MMU. Использовалось в сетевых маршрутизаторах, принтерах, цифровых телевизорах.
  • MIPS32 4KEc — улучшенная версия с поддержкой DSP-инструкций (Digital Signal Processing) и более быстрым кэшем.
  • MIPS32 24Kc — ядро с 8-ступенчатым конвейером, поддержкой многопоточности (MIPS MT), кэшем L1 до 32 КБ. Использовалось в высокопроизводительных встраиваемых системах (например, в беспроводных маршрутизаторах Broadcom).

64-битная версия (MIPS64 Release 2)

MIPS64 Release 2 предназначалась для систем, требующих больших адресных пространств и высокой производительности. Основные реализации:

  • MIPS64 5Kc — ядро с 64-битной шиной данных, 5-ступенчатым конвейером, кэшем L1 до 32 КБ. Использовалось в серверах и сетевых устройствах.
  • MIPS64 20Kc — суперскалярное ядро с 4-ступенчатым конвейером, поддержкой спекулятивного выполнения, кэшем L1 до 64 КБ. Использовалось в высокопроизводительных маршрутизаторах и коммутаторах.
  • MIPS64 74Kc — ядро с 8-ступенчатым конвейером, поддержкой DSP-инструкций, многопоточности и кэша L2. Использовалось в системах на кристалле (SoC) для цифровых телевизоров и мультимедийных устройств.

Применение

MIPS32/64 Release 2 нашла широкое применение в следующих областях:

  • Сетевое оборудование: маршрутизаторы, коммутаторы, точки доступа (например, чипы Broadcom BCM4704, Atheros AR2315).
  • Цифровые телевизоры и мультимедиа: процессоры MIPS в телевизорах Sony, Philips, Samsung (например, MIPS32 4KEc в SoC MediaTek MT8227).
  • Принтеры и МФУ: процессоры MIPS в принтерах HP, Canon, Epson.
  • Автомобильная электроника: системы управления двигателем, информационно-развлекательные системы (например, MIPS32 24Kc в чипах Freescale (ныне NXP) MPC5xxx).
  • Промышленные контроллеры: системы управления, робототехника, автоматизация.
  • Игровые приставки: PlayStation Portable (MIPS32 R4000-подобное ядро), PlayStation 2 (MIPS64 R5900, но с собственными расширениями).

Сравнение с конкурентами

По сравнению с архитектурой ARM (например, ARMv5TE, ARMv6), MIPS32/64 Release 2 предлагала:

  • Более простую структуру конвейера — меньшее количество стадий, что снижало задержки и энергопотребление.
  • Меньший размер кода — благодаря фиксированной длине инструкций (32 бита) и оптимизированным инструкциям.
  • Лучшую поддержку многопроцессорности — встроенные атомарные инструкции и механизмы синхронизации.
  • Меньшую стоимость лицензирования — MIPS Technologies предлагала более гибкие условия, чем ARM.

Однако ARM имела преимущество в виде более широкой экосистемы, большего количества готовых ядер и более активной поддержки со стороны производителей SoC.

Критика

Несмотря на успехи, MIPS32/64 Release 2 подвергалась критике за:

  • Отсутствие поддержки векторных инструкций (SIMD) — в отличие от ARM NEON (появившегося позже) или Intel SSE.
  • Сложность реализации виртуализации — хотя Release 2 заложил основы, полноценная поддержка появилась только в Release 3.
  • Ограниченную поддержку 64-битных приложений — многие встраиваемые системы продолжали использовать 32-битный режим, что снижало преимущества MIPS64.

Влияние и наследие

MIPS32/64 Release 2 стала одной из самых успешных версий архитектуры MIPS. Она использовалась в миллиардах устройств по всему миру, особенно в сетевом оборудовании и цифровых телевизорах. Многие идеи, заложенные в Release 2 (векторизованные прерывания, аппаратная поддержка многопоточности, инструкции для работы с битами), были позже заимствованы другими архитектурами, включая ARM и RISC-V.

В 2010-х годах популярность MIPS начала снижаться из-за конкуренции с ARM и появления открытой архитектуры RISC-V. Однако MIPS32/64 Release 2 остаётся важной вехой в истории микропроцессорной техники, демонстрируя, как эволюционное развитие ISA может значительно повысить производительность и функциональность без нарушения обратной совместимости.

Источники

  • MIPS32® Architecture For Programmers Volume I: Introduction to the MIPS32® Architecture. MIPS Technologies, 2003.
  • MIPS64® Architecture For Programmers Volume I: Introduction to the MIPS64® Architecture. MIPS Technologies, 2003.
  • MIPS32® 4Kc™ Processor Core Datasheet. MIPS Technologies, 2004.
  • MIPS64® 20Kc™ Processor Core Datasheet. MIPS Technologies, 2005.
  • MIPS32® 24Kc™ Processor Core Datasheet. MIPS Technologies, 2006.
  • MIPS32® 74Kc™ Processor Core Datasheet. MIPS Technologies, 2007.
  • Паттерсон, Д., Хеннесси, Дж. Архитектура компьютера и проектирование компьютерных систем. 4-е издание, 2009.
  • Столлман, Р. «MIPS: The Rise and Fall of a RISC Architecture». IEEE Micro, 2018.

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

На главную BFOmetr →