MIPS (сокращение от названия соответствующего проекта Стэнфордского университета ) — система команд и микропроцессорных архитектур, разработанных компанией MIPS Computer Systems (в 2018 году приобретена корпорацией Wave Computing) в соответствии с концепцией проектирования процессоров RISC (то есть для процессоров с упрощённым набором команд). Ранние модели процессора имели 32-битное машинное слово, позднее появились его 64-битные версии. Существует множество модификаций процессора, включая MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 и MIPS64, из них действующими являются MIPS32 (для 32-битной реализации) и MIPS64 (для 64-битной реализации). MIPS32 и MIPS64 определяют как набор регистров управления, так и набор команд.
Существует несколько наборов команд: MIPS32, MIPS64, microMIPS и nanoMIPS. Помимо этого, доступны дополненные наборы инструкций и модели процессоров, например, MIPS-3D, включающий в себя набор SIMD-команд для обработки чисел с плавающей запятой, предназначенный для решения простых 3D-задач, MDMX (MaDMaX) — с ещё более широкими возможностями — набором SIMD-команд и использующий 64-битные регистры с плавающей запятой для работы с целыми числами, MIPS16e, который сжимает поток команд, чтобы уменьшить объём памяти, занимаемый программами, а также MIPS MT, обеспечивающий многопотоковый режим обработки.
Архитектуру MIPS часто изучают в программе курса «Компьютерная архитектура» в университетах и технических лицеях. Эти процессоры значительно повлияли на более поздние RISC-архитектуры, в частности на Alpha.
Различные реализации MIPS используются в основном во встроенных системах, например, в смартфонах, маршрутизаторах, шлюзах, а также до 2010-х годов в игровых консолях, таких, как Sony PlayStation 1, Sony PlayStation 2 и Sony PlayStation Portable. До конца 2006 года они применялись и в компьютерах SGI. К концу 1980-х и в 1990-х годах эта архитектура широко использовалась многими компаниями, среди них Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf и Tandem Computers. С середины до конца 1990-х годов каждым третьим микропроцессором на рынке был процессор MIPS.
В декабре 2018 года корпорация Wave Computing запустила инициативу MIPS Open, в рамках которой бесплатно предоставляла лицензию на разработку ядер MIPS. Инициатива существовала чуть менее года и была закрыта в ноябре 2019 года.
История
Основоположник RISC В 1981 году коллектив под руководством Джона Хеннесси из Университета Стэнфорда начал работу над проектом, который получил название MIPS. Главной идеей было увеличить производительность процессора, используя удлинённый конвейер. Концепция применения конвейера в качестве основной технологии была известна ещё задолго до этого (например, в IBM 801), но она не использовала весь свой потенциал. Центральный процессор включает в себя несколько специальных субблоков, таких, как декодеры команд, целочисленное АЛУ (арифметико-логическое устройство), блоки загрузки/хранения (работа с памятью) и т. д. В традиционной не оптимизированной реализации отдельная команда в программе должна быть (почти всегда) завершена, прежде, чем запустится другая; в то время как в конвейерной архитектуре последовательные команды могут выполняться параллельно. Например, когда математическая инструкция вносится в блок с плавающей запятой, блок загрузки/хранения памяти может в этот же момент вызвать следующую команду.
Одним из главных препятствий в использовании конвейера был тот факт, что некоторые команды, такие, как деление, выполняются намного дольше, и, вследствие этого, центральному процессору приходится ждать, прежде, чем передать на конвейер следующую команду. Единственное решение этой проблемы — использовать серию блокировок, позволяющих определённым стадиям конвейера показать, что они заняты и, в этом случае, приостанавливать вышестоящие в потоке команды. Группа Хеннеси рассматривала эти блокировки как огромный барьер в увеличении производительности, поскольку было необходимо обращаться ко всем модулям центрального процессора, что занимает лишнее время и ограничивает тактовую частоту. Главным аспектом устройства MIPS было согласовать каждую подфазу каждой команды, в том числе кэширование, в один цикл, таким образом избегая необходимости в блокировках и пропуская на конвейер только один цикл.
Хотя такая реализация и исключала бы некоторые очень полезные операции, такие, как умножение и деление, очевидно, что предельная производительность системы значительно увеличилась бы, так как микросхемы смогли бы работать с более высокой тактовой частотой. Достижение высокой скорости с использованием блокировок было бы затруднительным, так как время, требуемое для установки блокировок, пропорционально тактовой частоте, в свою очередь, зависящей от размера кристалла. Вот почему исключение вышеупомянутых операций стало спорным вопросом.
Другое отличие архитектуры MIPS от конкурирующих с ним Berkeley-архитектур — внедрённая в Berkeley-RISC возможность обработки вызова подпрограмм. Чтобы увеличить производительность столь общей задачи, в Berkeley-RISC была использована технология, называемая регистровым окном, которая, тем не менее, ограничивала максимальную глубину многоуровневых вызовов. Каждый вызов подпрограммы требовал своего набора регистров, что делало необходимым увеличение их количества, тогда как аппаратная реализация данного механизма занимала дополнительное пространство в кристалле ЦП. Но Хеннесси полагал, что более «тщательный» компилятор мог бы найти свободные регистры для передачи параметров функции и что всего лишь увеличение числа регистров могло бы не только упростить эту задачу, но и увеличить производительность всех операций. Поэтому было принято решение отказаться от данной технологии в MIPS.
Архитектура MIPS была, в некотором отношении, наиболее типичной для RISC. Чтобы сэкономить биты в коде команды, в RISC было уменьшено количество инструкций для кодирования. В MIPS из 32 битов слова всего 6 используются для основного кода, а остальные могут содержать либо единственный 26-битный адрес перехода, либо до 5 полей, устанавливающих от 1 до 3 регистров + длина сдвига регистра. Существует и ряд других форматов, например, когда 2 регистра задаются непосредственно выделенным 16-битным полем и т. д. Такое распределение позволило процессору загружать команду и необходимые ей данные за один машинный такт, в то время как в более старых архитектурах (не являвшихся RISC), например, таких, как MOS Technology 6502, требовались отдельные такты для загрузки основного кода и данных.
Это было одним из главных усовершенствований, наращивающих производительность, предлагаемых RISC. Однако другие архитектуры всё же достигли подобной скорости, но другими средствами (такими, как очереди в ЦП).
Первая аппаратная реализация В 1984 году, убеждённый в коммерческом спросе на свою разработку, Хеннесси покинул Стэнфорд и основал компанию MIPS Computer Systems. В 1985 году вышла первая коммерческая реализация микропроцессора MIPS — R2000, доработанная в 1988 году и получившая название R3000. Эти 32-битные процессоры легли в основу продуктовой линейки компании в 1980-х и использовались преимущественно в SG-сериях рабочих станций. Новые коммерческие проекты не соответствовали Стэнфордским научным исследованиям, так как практически все блокировки выполнялись на аппаратном уровне, к тому же операции умножения и деления были полностью реализованы.
В 1991 году впервые был представлен как 64-битный микропроцессор MIPS — модель R4000. R4000 имеет расширенный TLB, в котором запись содержит не только виртуальный адрес, но и виртуальный идентификатор адресного пространства. Такой буфер устраняет основные проблемы производительности микроядра, достаточно медлительного в конкурирующих архитектурах (Pentium, PowerPC, Alpha) из-за необходимости сбрасывать TLB во время частого переключения контекста.
Тем не менее, у MIPS возникали финансовые трудности в связи с поставкой процессоров на рынок. Проект был настолько важен для SGI (в то время являвшихся одними из немногих основных покупателей MIPS), что в 1992 году SGI выкупили права на компанию с условием гарантии, что конструкция микропроцессоров не изменится. Став дочерней компанией, MIPS Computer Systems получили название MIPS Technologies.
Лицензируемая архитектура В начале 1990 года MIPS начали лицензирование своих разработок для сторонних производителей. Идее сопутствовала удача из-за простоты ядра, которое находило множество применений, где ранее использовались намного менее эффективные CISC-архитектуры, с тем же количеством и той же ценой схем (2 этих критерия тесно связаны: цена ЦП, как правило, зависит от количества схем и контактов). Компания Sun Microsystems сделала аналогичную попытку лицензировать SPARC-ядра, но Sun подобная удача не сопутствовала. К концу 1990-х MIPS стали наиболее важной компанией в производстве встроенных процессоров, и в 1997 году 48-миллионные поставки процессоров на MIPS-ядрах позволили RISC-архитектурам вытеснить популярное семейство процессоров 68k. MIPS были настолько популярны, что в 1998 году SGI передали часть активов MIPS Technologies. На сегодняшний день половину доходов MIPS даёт лицензирование разработок, а большую часть другой половины — контракты на разработку ядер для производства сторонними производителями.
В 1999 году MIPS формализовали свои системы лицензирования вокруг двух основных конструкций — 32-разрядной MIPS32 (на базе MIPS II с некоторыми дополнительными функциями MIPS III, IV MIPS и MIPS V) и 64-разрядных MIPS64 (на базе MIPS V). Лицензия на MIPS64 была приобретена каждой из компаний NEC, Toshiba и SiByte (впоследствии приобретённая Broadcom) сразу же после объявления о её выпуске. Вскоре к ним присоединились Philips, LSI Logic и IDT. Успех следовал за успехом, и сегодня процессоры MIPS являются одним из наиболее востребованных товаров на рынке устройств компьютерного типа (карманных компьютеров, приставок и т. п.) наряду с другими разработчиками, тщетно пытающимися их вытеснить.
Через несколько лет после того, как MIPS-архитектура стала лицензируемой, она начала привлекать все больше и больше новых компаний по разработке процессоров. Первой такой компанией была Quantum Effect Devices (см. следующий раздел). Команда разработчиков, собравших MIPS R4300i, основала компанию SandCraft, предоставившую компании NEC новый процессор R5432, а немного позднее смоделировавшую R71000 — один из первых нестандартных процессоров для рынка встраиваемых систем. Команда основателей компании DEC StrongARM в конце концов разделилась на две новых компании по разработке процессоров, в основу которых лёг MIPS: SiByte, производившая SB-1250 — одну из первых чиповых систем с высокой производительностью, основанных на MIPS (SOC) и Alchemy Semiconductor (позднее приобретённая AMD), производившая Au-1000 SOC для маломощных приложений. Компания Lexra использовала архитектуру, подобную MIPS, добавив к ней DSP для рынка аудиомикросхем, а также поддержку многопотокового режима для сетевого рынка. Так как Lexra не покупала лицензию на MIPS, вскоре между двумя компаниями разгорелись судебные процессы. Первый был довольно быстро погашен уже после того, как Lexra пообещала не продвигать свои процессоры как сходные с MIPS. Второй процесс (о патенте MIPS 4814976 на обработку инструкции невыровненного (unaligned) доступа к памяти) был более затяжным и негативно отразился на бизнесе обеих компаний, а по его завершении MIPS Technologies выдали Lexra бесплатную лицензию и выплатили денежную компенсацию в крупном размере.