MIPS — RISC архитектура (32/64-бит): история, характеристики и приложения
Архитектурата MIPS е набор от инструкции за компютри, разработен в Станфордския университет в началото на 80-те (проектът стартира през 1981 г.). Името MIPS е акроним на Microprocessor without Interlocked Pipeline Stages (Микропроцесор без блокирани конвейерни стъпала) — ключова идея при дизайна беше минимизирането на хардуерните interlocks, като някои зависимости се разрешават от компилатора, за да се опрости и ускори конвейерното изпълнение. Архитектурата се основава на принципите на RISC, като в „чиста“ RISC реализация повечето инструкции имат еднаква дължина, което улеснява декодирането и позволява по-високи тактови честоти. Първоначално MIPS използва 32-битова адресна и данни шина, а от 1991 г. е въведена и 64-битова версия (MIPS64), която разширява адресното пространство и някои регистрови/инструкционни възможности.
История и разпространение
Проектът MIPS прераства в търговски продукти: реализациите са внедрени в работни станции, сървъри и по-късно масово в вградени системи. През 80-те и 90-те години MIPS процесори са използвани от множество производители като Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf, Tandem Computers и други; SGI е един от големите потребители и интегратори на MIPS процесори в работните си станции и сървъри. Към средата и края на 90-те се смяташе, че значителна част от произведените RISC процесори са базирани на MIPS дизайн.
В по-късни години MIPS остава широко използван в ембеднати продукти: устройства с Windows CE, маршрутизатори, жилищни шлюзове и игрови конзоли (например Sony Playstation, PlayStation 2 и PlayStation Portable). До 2006 г. MIPS решения все още се срещат в много продукти на SGI. В съвременни продукти MIPS често присъства в специализирани микроконтролери и мрежово оборудване.
Основни технически характеристики
- Философия: RISC — малък брой прости инструкции, повечето операции са регистър-към-регистър; паметта се достъпва само с инструкции за зареждане/съхранение (load/store).
- Дължина на инструкциите: класически 32-битови фиксирани инструкции (в някои по-късни варииации са добавени компресирани формати като MIPS16e и microMIPS).
- Формати на инструкциите: стандартно R-тип (регистри), I-тип (немедлени и дълги адреси) и J-тип (скокове), които правят декодирането просто и бързо.
- Регистров файл: 32 общи целеви 32/64-битови регистъра (в зависимост от MIPS32/MIPS64), специални регистри HI/LO за операции умножение/деление и отделен набор FP регистри при поддръжка на плаваща запетая (coprocessor 1).
- Копроцесори: CP0 (системен контрол — изключения, MMU), CP1 (FPU), възможност за други coprocessor интерфейси.
- Endian: поддържа се и little-endian, и big-endian (bi-endian реализации).
- Пайплайн: класически 5-степенен конвейер (IF, ID, EX, MEM, WB) при базовите реализации; по-напреднали ядра използват по-дълги и по-сложни конвейери, суперскаларност и out-of-order изпълнение в високопроизводителни варианти.
Инструкции и формати
MIPS е характерен с фикс-дължината на инструкциите и трите основни формата (R, I, J), което опростява хардуерното декодиране. Типични особености:
- Load/store архитектура — всички операции над паметта се извършват чрез инструкции за зареждане и съхранение.
- Отделяне на целочислена и плаваща аритметика чрез coprocessor интерфейс (CP1 за FPU), който позволява независимо управление и оптимизация.
- Някои ранни версии използват delayed branches (закъснели скокове), изискващи специална обработка в компилатора; по-късните дизайни намаляват или премахват тази семантика.
- Съвременни разширения включват 16-битови/компактни кодове (MIPS16e) и microMIPS, които намаляват размерa на кода и са полезни за ембедед приложения.
Регистри и ABI
Общоприетите конвенции за регистрите в MIPS ABI включват имена и роли като:
- $zero — стойност 0;
- $at — резервиран за асемблера (assembler temporary);
- $v0–$v1 — стойности за връщане от функции;
- $a0–$a3 — аргументи на функции;
- $t0–$t9 — временни регистри (не запазвани през повикване);
- $s0–$s7 — запазвани регистри (callee-saved).
ABI спецификациите дефинират и правилата за стек, връщане от функции, както и използване на плаващо-точни регистри и система за поддръжка на 64-битови стойности при MIPS64.
Пайплайн и изпълнителни техники
Класическият MIPS дизайн е оптимизиран за бърз конвейер — с редукция на контролните и данни зависимости чрез прости инструкции и компилаторни оптимизации. По-новите ядра добавят функции като суперскаларност, out-of-order изпълнение, спекулативно изпълнение и разширени кешове за постигане на по-висока производителност в съревнование с други процесорни архитектури.
Приложения
MIPS процесорите и техните кристални реализации са популярни в широк спектър от приложения:
- Вградени устройства и real-time системи (маршрутизатори, шлюзове, мрежови чипове);
- Джобни и мобилни устройства (например платформи с Windows CE);
- Игрални конзоли — исторически в продукти като Sony Playstation, PlayStation 2 и PlayStation Portable;
- Работни станции и сървъри (в миналото, например много продукти на SGI. В тези сегменти MIPS е конкурирал други RISC архитектури);
- Специализирани DSP/мрежови процесори и контролери.
Лицензиране и съвременно състояние
MIPS традиционно се използва чрез лицензионен модел: дизайнът на ISA (инструкционния набор) и ядрата могат да бъдат лицензирани на производители, които реализират собствени чипове. Това допринася за широкото разнообразие от имплементации — от прости, енергийно ефективни ядра за ембедед, до високопроизводителни многоядрени процесори.
В обобщение, MIPS е важна и влиятелна RISC архитектура с чист дизайн и много имплементации в индустрията, особено в ембедед и мрежовия сегмент. Нейната простота и фокус върху ефективния конвейерен дизайн я правят подходяща за широка гама приложения, където съотношението производителност/енергия и компактност на кода са важни фактори.
Въпроси и отговори
В: Какво представлява архитектурата MIPS?
О: Архитектурата MIPS е набор от инструкции за компютри, който е разработен в Станфордския университет през 1981 г.
В: Какво означава MIPS?
О: Първоначално MIPS е акроним на Microprocessor without Interlocked Pipeline Stages (Микропроцесор без блокирани стъпала).
В: Какво е RISC в архитектурата MIPS?
О: По-голямата част от архитектурата на MIPS е направена в RISC. RISC е съкращение от Reduced Instruction Set Computing (изчисления с намален набор от инструкции).
В: Какво е предимството на използването на RISC в архитектурата MIPS?
О: В архитектурата RISC всички команди са с еднаква дължина. Това опростява конструкцията на микрочипа и позволява използването на бързи тактове.
В: Каква е архитектурата на шината, използвана в първоначалните версии на архитектурата MIPS?
О: В началото архитектурата използваше 32-битова шина.
Въпрос: Кога беше използвана 64-битовата архитектура в архитектурата MIPS?
О: От 1991 г. се използва 64-битова архитектура.
Въпрос: В кои системи се използват предимно реализациите на MIPS?
О: През 2015 г. реализациите на MIPS се използват предимно във вградени системи, като например устройства с Windows CE, маршрутизатори, жилищни шлюзове и конзоли за видеоигри, като Sony Playstation, PlayStation 2 и PlayStation Portable.