Microprocessor without Interlocked Pipeline Stage (MIPS) este o arhitectură de procesor care utilizează setul de instrucțiuniRISC simplificată și foarte scalabilă dezvoltată de MIPS Computer Systems în 1985. Procesoarele MIPS au o linie de instrucțiuni în 5 etape pentru a executa mai multe instrucțiuni în același timp. Ideea de bază este de a executa instrucțiuni în linia de instrucțiuni, fără pauze. Pe instrucțiuni executate trebuie să fie necesară doar o frecvență de ceas.
În 1992, MIPS Computer Systems a fost preluat de Silicon Graphics, sub numele de MIPS Technologies. Aceasta a fost achiziționată la 17 decembrie 2012, de către Imagination Technologies, continuând să dezvolte arhitectura MIPS.[2]
Primul procesor MIPS R2000 pe 32-bit, a fost dezvoltat în 1984, elementele de bază fiind deja create în1981 la Universitatea Stanford. Acesta era un procesor underpipelined bazat pe arhitectura setului de instrucțiuni RISC și cu un sistem de codare fix. În 1988, a fost introdusă o versiune îmbunătățită, R2000A la 12,5 și 16,67 MHz din IC-urile R2000A și R2010A. A fost utilizat pe scară largă în sisteme înglobate, cum ar fi controlere de imprimantă. R2000 a fost urmat de R3000, utilizând un design general similar al sistemului, cu implementare mai rapidă a cipurilor.
Există mai multe versiuni de microprocesoare MIPS: MIPS I, II, III și IV, precum și versiuni de MIPS32/64. Versiunile MIPS V H1 Beast și H2 Captain au fost doar planificate. Primele arhitecturi MIPS I și MIPS II erau pe 32 de biți. Începând cu aprilie 2018, versiunea actuală este MIPS64 vers. 6 cu microprocesorul I7200. [3][4]
MIPS I
R2000 (1985): 8,3…16,7 MHz
R2000A (1988): 12,5…16,7 MHz
R3000 (1988): 20…33 MHz
R3000A (1989): 25…40 MHz
MIPS II
R6000
MIPS III
R4000 (1991): 100 MHz
R4400 (1992): 150…250 MHz
R4200 (1993): 80 MHz
R4600 (1994): 133 MHz
R4650 (1994): 133...180 MHz
R4700 (1996): 100...200 MHz
MIPS IV
R8000 (1994): 75…90 MHz
R10000 (1995): 150…270 MHz
R5000 (1996): 150…200 MHz
R12000 (1998): 300…400 MHz
R12000A (2000): 180...400 MHz
R7000 (2000): 250…600 MHz
R14000 (2001): 500…600 MHz
R14000A (2002): 130...600 MHz
R16000 (2003): 700 MHz
R16000A (2004): 800…1000 MHz
MIPS32
4K (1999): 167 MHz
24K (2003): 400 MHz, 750 MHz, 1468 MHz
34K (2006): 500 MHz, 1454 MHz
74K (2007): 1110 MHz
1004K (2008): 1100 MHz
M14K (2009): 200 MHz
1074K (2010): 1500 MHz
MIPS64
5K (1999)
20K (2000)
Warrior IP Cores: serie de microprocesoare produse de Imagination Technologies din octombrie 2013, bazate pe MIPS32 release 5 și MIPS64 release 6. Acestea au fost produse în trei clase de performanță și caracteristici:
Warrior M-class (M5100, M5150 și seria microAptiv M6200 și M6250)
Registrul 31 ($ ra) corespunde adresei de returnare.
Instrucțiuni
Există trei tipuri de formate de instrucțiuni MIPS: R, I și J. Fiecare instrucțiune începe cu un cod opțional de 6 biți:
Formatul R (registru): corespunde instrucțiunilor aritmetice și logice având ca operanzi trei registre, un câmp de montare cu schimbare și un câmp funcțional.
op: codul instrucțiunii (opcode), 6 biți
rs: primul operand sursă, 5 biți
rt: al doilea operand sursă, 5 biți
rd: operandul destinație, 5 biți
shamt: shift amount, 5 biți
funct: funcția operației (selectează varianta specifică de operație pentru un anumit opcode), 6 biți.
Formatul I (instrucțiune): dispune doar de patru câmpuri, două registre și o valoare imediată de 16 biți. Este folosit de două categorii de instrucțiuni: instrucțiunile load-store (de acces la memorie) și instrucțiunile de salt condiționat.
op: opcode, 6 biți
rs: primul operand sau registru bază, 5 biți
rt: al doilea operand sau registru destinație, 5 biți
adresă: adresă de memorie sau de salt, 16 biți.
Formatul J (jump): corespunde instrucțiunilor de salt necondiționat (jump) și conține doar două câmpuri.
op: opcode, 6 biți
adresă: adresa care este adăugată la PC+4 pentru a forma adresa de salt necondiționat, 26 biți. [5][6]
Nivele
Microprocesoarele MIPS prezintă 5 nivele tipice:
Nivelul IF (instruction fetch): se calculează adresa instrucțiunii ce trebuie citită din cache-ul de instrucțiuni sau din memoria principală și se aduce instrucțiunea.
Nivelul ID (instruction decode) - se decodifică instrucțiunea adusă și se citesc operanzii din setul de regiștri generali. În cazul instrucțiunilor de salt, pe parcursul acestei faze se calculează adresa de salt.
Nivelul ALU (execute address) - se execută operația ALU asupra operanzilor selectați în cazul instrucțiunilor aritmetico-logice; se calculează adresa de acces la memoria de date pentru instrucțiunile LOAD / STORE.
Nivelul MEM (memory acccess) - se accesează memoria cache de date sau memoria principală, numai pentru instrucțiunile LOAD/STORE. Acest nivel pe funcția de citire poate pune probleme datorate neconcordanței între rata de procesare și timpul de acces la memoria principală.
Nivelul WB (write back) - se scrie rezultatul ALU sau data citită din memorie (în cazul unei instrucțiuni LOAD) în registrul destinație din setul de regiștri generali al microprocesorului.
NanoMIPS este o arhitectură de seturi de instrucțiuni cu lungimi variabile concepută special pentru sisteme înglobate, care oferă performanțe ridicate într-o dimensiune a codului substanțial redusă.
nanoMIPS este acceptat în versiunea 6 a arhitecturii MIPS. Este inclusă în MIPS64 vers. 6 și implementată în noua serie de procesoare multi-core multi-thread MIPS I7200. Suportul pentru compilator este inclus în instrumentele de dezvoltare bazate pe MIPS GNU.[7]
Concepută pentru microcontrolere și alte sisteme înglobate cu amprentă mică, microMIPS este o arhitectură de set de instrucțiuni de compresie a codului care oferă performanță pe 32 de biți cu dimensiune de cod pe 16 biți pentru majoritatea instrucțiunilor. Păstrează 98% din performanța MIPS32, reducând în același timp dimensiunea codului cu până la 25%, ceea ce se traduce printr-o reducere semnificativă a costurilor cu siliciu. Datorită accesului redus la memorie și utilizarea eficientă a cache-ului de instrucțiuni, conduce de asemenea la reducerea consumului de energie al sistemului. microMIPS este inclusă în versiunile r3, r5 și r6 ale arhitecturii MIPS și sste implementată în microprocesoarele M14K, M5100 și M6200.[8]