MIPS-arhitektuur on Stanfordi Ülikoolis 1981. aastal välja töötatud arvutite käsukomplekt. Algupärane nimetus MIPS on akronüüm Microprocessor without Interlocked Pipeline Stages, mis rõhutab arhitektuuri eesmärki lihtsustada torujuhtme (pipeline) disaini ja vähendada keerulisi riistvaralisi sõltuvuste (interlock) lahendusi. MIPS on kavandatud peamiselt RISC-süsteemis töötamiseks: käsud on üldjuhul fikseeritud pikkusega, mis lihtsustab dekodeerimist ja võimaldab efektiivset torujuhtme täitmist. Alguses kasutati arhitektuuris 32-bitist bussi, kuid alates 1991. aastast hakati laialdasemalt kasutama ka 64-bitist arhitektuuri (MIPS64).
Ajalugu ja levik
MIPS arhitektuuri töötati välja akadeemilisest ideest kommertsiaalseks tooteks: 1980. aastate jooksul moodustusid erinevad MIPS-põhised mikroprotsessorid ja ettevõtted. 1980.–1990. aastatel levis MIPS laialdaselt töökodades ja tööjaamades ning seda kasutasid mitmed suured tootjad. Näiteks kuni 2006. aasta lõpuni kasutati MIPS-i rakendusi paljudes SGI arvutitoodetes. 1980ndate lõpus ja 1990ndatel kasutati MIPS-i ka firmades nagu Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf ja Tandem Computers. Hinnanguliselt oli 1990. aastate keskel ja lõpus iga kolmas toodetud RISC-mikroprotsessor MIPS-i implementatsioon.
Arhitektuuri põhijooned
- Fikseeritud käsupikkus: enamik MIPS-käske on 32-bitised, mis lihtsustab dekodeerimist.
- RISC-põhimõtted: vähe käske, lihtsad aadressimisrežimid, kiire torujuhtme täitmine.
- Registreid: tüüpiliselt 32 üldotstarbelist registrit (GPR), millest $zero on alati null; eraldi registrid korrutuse/jagamise tulemite (hi/lo) hoidmiseks.
- Instruktsioonivormingud: R-, I- ja J-tüüpi formaadid, mis on lihtsad ja kiirelt dekodeeritavad.
- Pipelining ja delay-slot: MIPS-i varasemates versioonides on kasutusel haru delay-slot ehk üks käsk täidetakse alati pärast haruinstruktsiooni, mida kompilaator või assembler tavaliselt arvestab.
- Endian-variant: MIPS võib toetada nii little- kui big-endian-andmete esitamist, sõltuvalt süsteemi konfiguratsioonist.
Instruktsioonid, ABI ja versioonid
MIPS-il on lihtne ja hästi struktureeritud käsukomplekt. MIPS-ist on erinevaid standardversioone (nt MIPS I–V) ning kaasaegsed toodangud toetavad MIPS32 ja MIPS64 arhitektuurihulku. Samuti on olemas erinevad ABI-d (nt o32, n32, n64) määramaks registrite kasutust, virna- ja kutsesüntaksit. Paljud implementeerimised lisavad ka vektori- või DSP-jõudlust parandavaid laiendusi.
Peamised kasutusalad
2015. aastal ja ka hiljem on MIPS-i rakendused olnud laialt levinud manussüsteemides ja tööstuslikes seadmetes. Levinumad kasutusvaldkonnad on:
- Windows CE ja teised mobiilsed/embedditud operatsioonisüsteemid;
- ruuterites, lülitites ja teistes võrgu seadmetes;
- koduväravates (gateway) ja modemi- ning ruuteripõhistes seadmetes;
- videomängukonsoolides — tuntud näited on Sony konsoolid nagu PlayStation, PlayStation 2 ja PlayStation Portable;
- multimeedia seadmed, set-top-box’id, kodused meediaserverid ja mõned tööstuslikud kontrollseadmed.
Lisaks on MIPS olnud populaarne õppetööks ja arendusplatvormina, kuna arhitektuuri struktuur on selge ning hea näide RISC-idee rakendamisest.
Eelised ja piirangud
Eelised: lihtne ja ennustatav käsuhaldus, hea torujuhtme efektiivsus, fikseeritud käsupikkus ja tugev dokumentatsioon. MIPS on olnud atraktiivne ka tinglikult madala energiatarbega sissekannete tõttu embedded-seadmetes.
Põhiraskused: konkurents ARM-iga, turu nišistumine ning vajadus kaasaegsete laienduste järele (nt kõrgema jõudluse vektorijuhendid). Mõned MIPS-i omadused nagu delay-slot nõuavad kompilaatoripoolset kohandamist või erinevat programmeerimismudelit.
Tänapäevane seisu
Tänapäeval on MIPS endiselt kasutusel teatud tööstusharudes, eelkõige võrgu- ja manussüsteemides, kuid mobiilseadmete turul on see pigem kokku tõmbunud ARM-i ja teiste arhitektuuride surve tõttu. Samas jätkavad kommerts- ja avatud lähtekoodiga implmentatsioonid MIPS-i arendamist, sh spetsiaalsed lõivlahendused embedded-turule. Akadeemiliselt jääb MIPS väärtuslikuks õppetöö ja arhitektuuriõpetuse näiteks.
Kui soovite, võin lisada tehnilisema ülevaate MIPS-i käsuformaadist, registrikonventsioonidest või näiteks näiteid MIPS-asm koodi kohta.