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 →