Architektura MIPS to zestaw instrukcji dla komputerów, który został opracowany na Uniwersytecie Stanforda w 1981 roku. Na początku MIPS był skrótem od Microprocessor without Interlocked Pipeline Stages. Idea ta wpisywała się w filozofię RISC — prostego, szybkiego zestawu instrukcji, w którym większość operacji ma stałą długość i ustawiona jest na wydajne przetwarzanie w potokach (pipeline). Dzięki temu projektowanie mikroprocesora jest prostsze, a cykle taktowania mogą być krótsze. MIPS to typowa architektura typu load–store: operacje arytmetyczne działają na rejestrach, a dostęp do pamięci realizowany jest przez osobne instrukcje ładowania/zapisu. W klasycznych implementacjach występuje 32 ogólne rejestry całkowitoliczbowe, zestaw rejestrów dla jednostki zmiennoprzecinkowej oraz mechanizmy systemowe (np. koprocesor CP0 do obsługi przerwań i pamięci wirtualnej). Wczesne projekty MIPS wykorzystywały magistralę 32‑bitową; od początku lat 90. powstały też wersje 64‑bitowe (MIPS64), które rozszerzyły możliwości adresowania i operacje na większych słowach.
Główne cechy techniczne
- Stała długość instrukcji: zwykle 32 bity, co upraszcza dekodowanie i projekty potoków.
- Load–store (architektura pamięć–rejestr): operacje na danych wykonuje się w rejestrach; dostęp do pamięci tylko przez instrukcje load/store.
- Potokowanie: typowa implementacja ma pięć etapów (IF, ID, EX, MEM, WB); oryginalny akronim MIPS odnosił się do projektów bez mechanizmów interlocków między etapami potoku.
- Delay slot: w klasycznych implementacjach występował "slot opóźniony" po instrukcjach skoku, co wpływało na optymalizację i kompilatory.
- Obsługa zmiennoprzecinkowa i koprocesorów: zwykle obecny jest oddzielny zestaw instrukcji FP (COP1) oraz mechanizmy systemowe w CP0.
- Elastyczność endianności: wiele implementacji MIPS potrafi działać w trybie big‑endian lub little‑endian.
Warianty i rozwój ISA
Instrukcyjny interfejs MIPS ewoluował przez kolejne rewizje (MIPS I–V i dalej), a w praktyce popularne stały się znormalizowane profile: MIPS32 (32‑bitowy) i MIPS64 (64‑bitowy). Pojawiły się także rozszerzenia i alternatywne tryby kodu, takie jak microMIPS i MIPS16e (techniki kompresji instrukcji zmniejszające rozmiar kodu), oraz zestawy instrukcji specjalizowane do DSP i SIMD. Różne firmy implementowały własne rozszerzenia i jednostki koprocesorowe, dostosowując rdzenie do zastosowań sieciowych, multimedialnych czy telekomunikacyjnych.
Zastosowania i ekosystem
W praktyce implementacje MIPS były i są wykorzystywane szeroko w systemach wbudowanych ze względu na prostotę i efektywność energetyczną. Już w latach 90. i na początku XXI wieku pojawiały się w routerach, modemach, dekoderach telewizyjnych, drukarkach i układach SoC. W 2015 roku implementacje MIPS były wykorzystywane głównie w systemach wbudowanych, takich jak urządzenia Windows CE, routery, bramy domowe i konsole do gier wideo, takie jak Sony Playstation, PlayStation 2 i PlayStation Portable. Do końca 2006 roku były one również wykorzystywane w wielu produktach komputerowych SGI. Pod koniec lat 80. i 90. ubiegłego wieku z wdrożeń MIPS korzystały również firmy Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf, Tandem Computers i inne. W połowie i pod koniec lat dziewięćdziesiątych oszacowano, że co trzeci wyprodukowany mikroprocesor RISC był wdrożeniem MIPS.
Ekosystem programistyczny obejmuje wsparcie kompilatorów (m.in. GCC, LLVM), systemów operacyjnych (Linux, różne dystrybucje BSD i inne systemy RTOS) oraz emulatorów i narzędzi symulacyjnych (np. QEMU). Dzięki temu MIPS był popularny zarówno w zastosowaniach przemysłowych, jak i w edukacji — oryginalne prace ze Stanforda stały się istotnym elementem nauczania architektur RISC.
Dlaczego wybierać MIPS?
- Prostota architektury ułatwia projektowanie i weryfikację rdzeni.
- Dobra efektywność energetyczna i możliwości optymalizacji kodu (np. dzięki potokowaniu i kompaktowym trybom instrukcji).
- Szerokie wsparcie narzędziowe oraz długa historia zastosowań przemysłowych.
Podsumowanie
MIPS to wpływowa rodzina zestawów instrukcji typu RISC, która wpłynęła na projektowanie procesorów i rozwój komputerów w latach 80. i 90. XX wieku. Choć z czasem jej popularność w sektorze serwerów i stacji roboczych zmalała, nadal pozostaje ważnym rozwiązaniem w świecie systemów wbudowanych i dedykowanych układów, oferując kompromis między prostotą, wydajnością i elastycznością implementacji.