In elettronica e informatica larchitettura MIPS (acronimo dell'inglese microprocessor without interlocked pipeline stages) è un'architettura informatica per microprocessori RISC sviluppata dalla MIPS Computer Systems Inc. (oggi MIPS Technologies Inc.). Il disegno dell'architettura e del set di istruzioni è semplice e lineare, spesso utilizzato come caso di studio nei corsi universitari indirizzati allo studio delle architetture dei processori; tale architettura ha influenzato le architetture di molti altri processori RISC tra i quali si segnala la famiglia DEC Alpha: è stata utilizzata ad es. nel campo dei computer SGI, ed ha trovato grande diffusione nell'ambito dei sistemi embedded, dei device di Windows CE e nei router di Cisco e anche le console Nintendo 64, Sony PlayStation, PlayStation 2 e PlayStation Portable utilizzavano processori MIPS.

Storia

Nel 1981 il professore John L. Hennessy dell'Università di Stanford avviò un gruppo di ricerca sulle architetture RISC. Le ricerche del team di sviluppo portarono allo sviluppo della prima generazione di processori MIPS. Allora era noto che per incrementare le prestazioni dei processori si sarebbe potuto utilizzare la tecnica delle pipeline. Questa tecnica sebbene fosse semplice da ideare non era semplice da implementare. Le pipeline per funzionare correttamente richiedono che le varie unità siano sincronizzate e che i dati delle varie istruzioni non si sovrappongano, quindi all'interno delle pipeline vengono posti dei blocchi (interblocco) che sorvegliano il completamento delle varie istruzioni e fanno procedere la pipeline solamente quando tutti gli stadi sono pronti. Questo meccanismo garantisce la corretta esecuzione del programma ma introduce spesso stalli nella CPU che deprimono le prestazioni.

La caratteristica distintiva del progetto MIPS è che tutte le istruzioni dovevano essere completate dagli stadi della pipeline in un solo ciclo di clock in modo da non introdurre ritardi e stalli nella pipeline. Questo permetteva di rimuovere anche molta dell'elettronica legata alla sincronizzazione degli stadi, semplificando il progetto. Questa scelta portò a semplificare e velocizzare il progetto ma portò anche degli svantaggi molto evidenti come l'eliminazione di istruzioni utili come la moltiplicazione e la divisione. Alcuni osservatori segnalarono che il progetto MIPS (e più in generale la filosofia RISC) imponevano al programmatore di sostituire le moltiplicazioni e le divisioni con una serie di operazioni più semplici e che quindi il miglioramento di prestazioni veniva eliminato o notevolmente ridimensionato. Questi osservatori non comprendevano che il miglioramento derivato dalla struttura a pipeline senza stalli compensava ampiamente le moltiplicazioni e le divisioni lente.

Nel 1984 Hennessy si convinse delle potenzialità commerciali del progetto e abbandonò temporaneamente l'università per fondare la MIPS Computer Systems. La società presentò lR2000 nel 1985 e il successore R3000 nel 1988. Questi processori, basati su un'architettura a 32 bit, furono la base di molti sistemi commerciali, tra i maggiori utilizzatori delle CPU si distinse la Silicon Graphics che utilizzò le CPU nelle sue workstation. Il progetto commerciale delle CPU MIPS si differenziava dal progetto accademico per la presenza delle istruzioni di moltiplicazione e di divisione e di conseguenza per la presenza di unità di Interlock tra gli stadi che contraddiceva il nome stesso della microarchitettura. Nel 1991 MIPS presentò il suo primo processore a 64 bit, lR4000. La MIPS in quel periodo affrontava una seria crisi finanziaria e quindi SGI decise di acquisire la società per assicurarsi la commercializzazione del processore a 64 bit dato che era fondamentale per le sue workstation. Come sussidiaria della SGI, la società cambiò nome in MIPS Technologies.

Agli inizi degli anni '90 la MIPS iniziò a concedere in licenza i suoi processori a fornitori terzi. Questa scelta era ragionevole considerando la semplicità e la potenza del progetto. I processori MIPS iniziarono a sostituire i processori CISC in molte applicazioni embedded, va ricordato che il prezzo di un processore è legato al numero di transistor e al numero di piedini del processore, quindi i processori MIPS risultavano avvantaggiati per il loro basso uso di transistor. Sun Microsystems cercò di replicare il successo dei processori MIPS fornendo in licenza i suoi processori SPARC. Il progetto di Sun non ebbe successo e i processori SPARC non si diffusero nel settore embedded. I processori MIPS durante gli anni novanta acquisirono elevate quote di mercato nel segmento embedded e nel 1997 la società festeggiò il quarantottesimo milione di processori venduti, rendendo il MIPS il primo processore RISC a superare la famosa famiglia Motorola 68000. Nel 1998 la SGI si separò dalla MIPS Technologies e in quegli anni più della metà dei guadagni della società dipendevano dalle licenze vendute mentre i rimanenti guadagni derivavano dallo sviluppo di processori per compratori esterni che venivano poi prodotti da fornitori esterni.

Nel 1999 MIPS annunciò la possibilità di acquistare la licenza per due processori base. Il processore MIPS32 a 32 bit e il processore MIPS64 a 64 bit. NEC, Toshiba e SiByte (in seguito acquisita da Broadcom) ottennero la licenza del MIPS64 appena questa fu annunciata. Philips, LSI Logic e IDT acquisirono la licenza in seguito. I processori MIPS divennero quelli più utilizzati per applicazioni ad alta potenza di calcolo ma che richiedevano dissipazioni di calorecontenute tipo PDA, Set-top box ecc. Un chiaro indicatore della bontà del progetto la si ha dalla scelta di Freescale (società spin-off di Motorola) di utilizzare il core MIPS per i suoi processori invece del core PowerPC di sua proprietà.

La possibilità di utilizzare sotto licenza il core MIPS ha spinto molte persone a fondare società che producessero versioni personalizzate del processore. Una delle prime società fu la Quantum Effect Devices. Alcuni progettisti MIPS che progettarono il processore R4300 abbandonarono la MIPS per fondare la società SandCraft e sviluppare lR5432 per la NEC che in seguito ha sviluppato lR7100, uno dei primi processori per applicazioni embedded in grado di eseguire istruzioni fuori ordine. I progettisti del primo StrongARM si divisero in due gruppi e fondarono due società che svilupparono processori basati su core MIPS. Il primo gruppo fondò la SiByte e sviluppò lSB-1250 uno dei primi processori systems-on-a-chip (SOC) ad alte prestazioni su architettura MIPS. Il secondo gruppo fondò la Alchemy Semiconductor (in seguito acquisita da AMD) che produsse lAu-1000, un processore SOC) per applicazioni a basso consumo. Lexra utilizzò un core tipo MIPS e vi aggiunse estensioni DSP per il trattamento di dati audio e estensioni multithreading per la gestione delle reti locali. MIPS intentò contro Lexra due cause legali per violazioni delle sue proprietà intellettuali. La prima si risolse rapidamente quando Lexra promise di non pubblicizzare i suoi processori come MIPS compatibili. La seconda causa fu molto più lunga e danneggiò gli affari di entrambe le società; si concluse con MIPS Technologies che forniva a Lextra una licenza gratuita e un ingente risarcimento economico.

Famiglie MIPS Il primo MIPS commerciale fu lR2000 che venne presentato nel 1985. Questo processore rispetto alla versione sviluppata all'università aggiungeva istruzioni per la moltiplicazione e la divisione che venivano trattate in modo indipendente dal processore. Nuove istruzioni furono aggiunte per recuperare i risultati prodotti dalle moltiplicazioni e dalle divisioni. Ironicamente queste istruzioni erano bloccanti (utilizzavano l'interlock) e quindi contraddicevano il nome stesso del processore pur migliorando la densità del codice.

L'R2000 poteva utilizzare la codifica big-endian o little-endian. Era dotato di 32 registri a 32 bit di uso generale, ma non utilizzava la tecnica della register window dato che era considerata un potenziale collo di bottiglia. La register window invece era utilizzata da processori come l'AMD 29000 e il DEC Alpha. Inoltre il program counter non era direttamente accessibile. L'R2000 poteva gestire fino a quattro coprocessori, di cui uno era integrato all'interno del processore e veniva utilizzato per gestire le eccezioni e le trap mentre gli altri tre erano disponibili per altri usi. Uno poteva essere il processore opzionale R2010, un coprocessore che implementava una FPU con trentadue registri a 32bit, i quali potevano essere utilizzati come 16 registri a 64 bit per la doppia precisione.

LR3000 successore dell'R2000 venne presentato nel 1988, aggiunse una cache da 32 KB per istruzioni e dati (in seguito venne espansa a 64 KB) che supportava la coerenza delle cache per facilitare lo sviluppo di sistemi multiprocessore. Sebbene il supporto del multiprocesso fosse parzialmente fallato l'R3000 venne utilizzato da molti sistemi multiprocessore. L'R3000 includeva una MMU, una caratteristica comune per i processori di quell'epoca. L'R3000 fu il primo processore MIPS a vendere più di un milione di processori. Il processore R3000A venne utilizzato nella console PlayStation della Sony ed era una versione a 40 Megahertz. Come l'R2000 anche l'R3000 poteva essere affiancato da un coprocessore matematico, lR3010. Pacemips produsse lR3400 e IDT produsse lR3500, che non era altro che un R3000 e R3010 in un solo chip. Il Toshiba R3900 è virtualmente il primo SoC per i primi palmari basati su Windows CE.

LR4000 venne presentato nel 1991 ed estese il set di istruzioni MIPS portandolo a 64 bit. La FPU venne integrata nel processore per creare un singolo chip molto veloce (venne presentato con una frequenza di 100 MHz). Tuttavia per ottenere una frequenza elevata i progettisti ridussero la cache a 8 KB e ogni accesso richiedeva comunque 3 cicli. L'elevata frequenza venne ottenuta creando una pipeline profonda (chiamata super pipeline dalla società). Dopo la presentazione dell'R4000 molte altre versioni vennero presentate. Tra le varie versioni è da segnalare lR4400 presentato nel 1993. Il processore era dotato di 16 KB di cache, un'architettura a 64 bit e un controller per una cache esterna di secondo livello da 1 megabyte.

Dopo essere diventata divisione della SGI, la MIPS sviluppò il processore a basso costo R4200 e in seguito lR4300, un R4200 con bus esterno a 32 bit. Il Nintendo 64 utilizzò il processore VR4300 prodotto dalla NEC che era una versione a basso costo del MIPS R4300i

Quantum Effect Devices (QED) era una compagnia nata dall'abbandono della MIPS di alcuni progettisti che sviluppò i processori R4600, R4700, R4650 e R5000. I progettisti della QED erano rimasti contrariati dalla scelta della famiglia R4000 di sacrificare la cache per ottenere delle frequenze di funzionamento elevate. I progettisti invece enfatizzarono la presenza di una ampia cache ad accesso rapido (due cicli di clock per accedervi) e fecero un uso efficiente del silicio. L'R4600 e l'R4700 vennero utilizzati da SGI per le sue macchine a basso costo SGI Indy. Furono i primi processori di tipo MIPS ad essere utilizzati da Cisco per i suoi router. L'R4650 venne utilizzato per il set-top box WebTV. La FPU dell'R5000 era più efficiente della FPU dell'R4000, difatti gli SGI Indy basati su R5000 fornivano prestazioni notevolmente migliori nel settore grafico rispetto alle macchine SGI Indy basate su R4000. In seguito la QED presentò i processori RM7000 e RM9000 per applicazioni embedded come dispositivi di rete e stampanti laser. QED venne acquisita da PMC-Sierra nell'agosto del 2000.