Architettura MIPS
Da Wikipedia, l'enciclopedia libera.
MIPS è l'acronimo di Microprocessor without Interlocked Pipeline Stages, è un processore di architettura RISC sviluppato da MIPS Computer Systems Inc. (in seguito nota come MIPS Technologies, Inc).
Il MIPS è utilizzato nel campo dei computer SGI, e hanno trovato grossa diffusione nell'ambito dei sistemi embedded, dei devices di Windows CE e nei routers di Cisco . Le console Nintendo 64, Sony PlayStation, Sony PlayStation 2 e Sony PlayStation Portable utilizzano processori MIPS.
Le prime architetture MIPS erano realizzate a 32-bit (generalmente 32-bit per registri e data paths), mentre le ultime versioni sono a 64-bit. Esistono cinque revisioni del MIPS instruction set, chiamate MIPS I, MIPS II, MIPS III, MIPS IV, e MIPS 32/64. L'ultima di queste, MIPS 32/64 Release 2, definisce un insieme di registri di controllo come l'instruction set. Molte estensioni "add-on" sono anche disponibili, incluso MIPS-3D che è un semplice insieme di istruzioni dedicate SIMD in floating-point per applicazioni 3D , MDMX che è un'istruzione SIMD molto costosa su interi che usa registri floating-point a 64-bit, MIPS16 che aggiunge compressione alle istruzioni che creano un programma riducendo lo spazio occupato (una tecnologia simile alla tecnologia Thumb implementata dall'architettura ARM), e il più recente MIPS MT, una nuova aggiunta multithreading per i sistemi simili all'HyperThreading implementato da Intel nei processori Pentium 4.
Il disegno dell'architettura e del set di istruzioni è semplice e lineare e viene spesso utilizzato come caso di studio nei corsi universitari indirizzati allo studio delle architetture dei processori. L'architettura dei processori MIPS ha influenzata le architetture di multi altri processori RISC tra i quali si segnala la famiglia DEC Alpha.
Indice |
[modifica] Storia
Nel 1981 il professore John L. Hennessy della Stanford University 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 richiede 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 (Interlock) 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 deprime le prestazioni.
La caratteristica distintiva del progetto MIPS e 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 porto a semplificare e velocizzare il progetto ma portò anche degli svantaggi molto evidenti come l'eliminazione di istruzioni utili come le moltiplicazione e le 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 abbandono temporaneamente l'università per fondare la MIPS Computer Systems. La società presento l'R2000 nel 1985 e il successore R3000 nel 1988. Questi processori erano 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 utilizzo le CPU nelle sue workstation. Il progetto commerciale delle CPU MIPS si differenziavano 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 presento il suo primo processore a 64 bit l'R4000. Purtroppo la MIPS in quel periodo affrontava una serie 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 licenziare i puoi 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 dli anni novanta acquisirono elevate quote di mercato nel segmento embedded e nel 1997 la società festeggiò il quarantottessimo milione di processore venduto rendendo i MIPS il primo processore RISC superare la famosa famiglia Motorola 68000. Nel 1998 la SGI si separò dalla MIPS Technologies e attualmente più della metà dei guadagni della società dipendono dalle licenze vendute mentre i rimanenti guadagni derivano dallo sviluppo di processori per compratori esterni che verranno prodotti da fonderie esterne.
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 annuncaita. Philips, LSI Logic e IDT acquisirono al licenza in seguito. Successo dopo successo attualmente i processori MIPS sono tra i processori più utilizzati per applicazioni ad alta potenza di calcolo ma che richiedono dissipazioni contenute tipo PDA, Set-top box etc. 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 delle società che producessero versioni personalizzare 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 l'R5432 per la NEC e in seguito ha sviluppato l'R7100, 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 sviluppo l'SB-1250 uno dei primi processori systems-on-a-chip (SOC) ad alte prestazioni su architettura MIPS. Il secondo gruppo fondò la Alchemy Semiconductor (in seguitò acquisita da AMD) che produsse l'Au-1000, un processore SOC) per applicazioni a basso consumo. Lexra utilizzò un core tipo MIPS e vi aggiunse estensioni DPS per il trattamento di dati audio e estensioni multithreading per la gestione delle reti locali. MIPS intento 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 entrambi le società e si concluse con MIPS Technologies che forniva a Lextra una licenza gratuita e una ingente risarcimento economico.
[modifica] Famiglie MIPS
Il primo MIPS commerciale di l'R2000 che venne presentato nel 1985. Questo processore rispetto alla versione sviluppata all'università aggiungeva instruzioni per la moltiplicazione e la divisione che venivano trattate in modo indipendente dal processore. Nuove istruzioin 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, 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 che potevano essere utilizzati come 16 registri a 64 bit per la doppia precisione.
L'R3000 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 una versione a 40 Megahertz. Come l'R2000 anche l'R3000 poteva essere affiancato da un coprocessore matematico, l'R3010. Pacemips produsse l'R3400 e IDT produsse l'R3500, 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.
L'R4000 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 l'R4400 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 sviluppo il processore a basso costo R4200 e in seguito l'R4300, 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[1]
Quantum Effect Devices (QED), era una compagnia nata dall'abbandono della MIPS di alcuni progettisti, la compagnia sviluppo 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.
Nel 1994 venne presentato l'R8000 il primo MIPS superscalare. Il processore era dotato di due ALU ed era in grado di eseguire due operazioni per ciclo di clock. Il progetto del processore venne diviso su sei integrati. Un integrato conteneva le unità di esecuzione per gli interi (con una cache da 16 KB per i dati e da 16KB per le istruzioni). Un secondo integrato conteneva l'unita FPU, due integrati contenevano una cache di secondo livello e un integrato arbitrava il bus della cache. L'ultimo integrato era un controller della cache ASIC. Il progetto era basato su due pipeline complete con unità di moltiplicazione e di somma a doppia precisione. le pipeline venivano alimentate dalla cache di secondo livello da 4 Mbyte. L'R8000 venne utilizzato dai server SGI Power Challenge inizialmente e dai server Power Indigo2 in seguito. Le ridotte prestazioni nel calcolo sugli interi e il suo elevato costo scoraggio molti acquirenti sebbene le prestazioni nel calcolo in virgola mobile furono apprezzate dagli enti scientifici. L'R8000 rimase sul mercato per solo un anno e quindi è un processore MIPS abbastanza raro.
Nel 1995 venne presentato l'R10000. Il processore era basato su un disegno a singolo integrato e era progettato per essere molto più veloce dell'R8000. Era dotato di una cache primaria da 32 KB per i dati e le istruzioni. Il processore era superscalare e gestiva l'esecuzione fuori ordine delle istruzioni. Sebbene fosse dotato di una sola FPU e di una solo bus verso la memoria, le prestazioni elevate nel calcolo sugli interi, il basso costo e la alta densità resero l'R10000 la scelta preferita dalla maggior parte dei clienti.
Progetti successivi vennero basati sull'architettura dell'R10000. L'R12000 era una versione miniaturizzata dell'R10000 per poter innalzare la frequenza operativa. Il processore R14000 era una versione a frequenza maggiore con in aggiunta il supporto per le memorie DDR SDRAM per la cache di secondo livello. Inoltre il processore era dotato di un bus esterno a 200 Mhz per aumentare le prestazioni. La versione successiva chiamata R16000 e R16000A era dotata di una frequenza di funzionamento maggiore, una cache di primo livello maggiore e una dimensione minore grazie alla nuova tecnologia di produzione.
Specifiche microprocessori MIPS | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Modello | Frequenza [MHz] | Anno | Processo [µm] | Transistor [milioni] | Die size [mm²] | IO Pin | Potenza [W] | Voltaggio | Dcache [k] | Icache [k] | Scache [k] | |||
R2000 | 8-16.7 | 1985 | 2.0 | 0.11 | -- | -- | -- | -- | 32 | 64 | none | |||
R3000 | 20-40 | 1988 | 1.2 | 0.11 | 66.12 | 145 | 4 | -- | 64 | 64 | none | |||
R4000 | 100 | 1991 | 0.8 | 1.35 | 213 | 179 | 15 | 5 | 8 | 8 | 1024 | |||
R4400 | 100-250 | 1992 | 0.6 | 2.3 | 186 | 179 | 15 | 5 | 16 | 16 | 1024 | |||
R4600 | 100-133 | 1994 | 0.64 | 2.2 | 77 | 179 | 4.6 | 5 | 16 | 16 | 512 | |||
R5000 | 150-200 | 1996 | 0.35 | 3.7 | 84 | 223 | 10 | 3.3 | 32 | 32 | 1024 | |||
R8000 | 75-90 | 1994 | 0.5 | 2.6 | 299 | 591 | 30 | 3.3 | 16 | 16 | 1024 | |||
R10000 | 150-250 | 1995 | 0.35 | 6.8 | 299 | 599 | 30 | 3.3 | 32 | 32 | 512 | |||
R12000 | 270-400 | 1998 | 0.18–0.25 | 6.9 | 204 | 600 | 20 | 4 | 32 | 32 | 1024 | |||
R14000 | 500-600 | 2001 | 0.13 | 7.2 | 204 | 527 | 17 | -- | 32 | 32 | 2048 | |||
R16000 | 700-800 | 2002 | 0.11 | -- | -- | -- | 20 | -- | 64 | 64 | 4096 |
Nota: Le specifiche indicate sono le più comuni ma esistono delle varianti soprattutto per la cache di secondo livello.
[modifica] Applicazioni
Molti produttori di workstation hanno utilizzato processori MIPS. Tra i vari segnaliamo la SGI, MIPS Computer Systems Inc., Olivetti, Siemens-Nixdorf, Acer, Digital Equipment Corporation, NEC, e DeskStation. Molti sistemi operativi sono stati portati per le architetture basate su processori MIPS. I più famosi sono l'IRIX prodotto da SGI Microsoft Windows NT (sebben il supporto per processori MIPS sia terminato con Windows NT 4.0), Windows CE, Linux, BSD, UNIX System V, SINIX, MIPS Computer Systems RISC/os e altri.
Tuttavia l'utilizzo dei processori MIPS all'interno di computer e workstation è in declino costante. SGI ha annunciato la dismissione delle macchine basate su architettura MIPS preferendosi concentrare su macchine basate su processori Intel IA-64.
Comunque l'uso dei processori MIPS nelle macchine embedded è ancora comune. i processori sono a basso consumo, e offrono buone prestazioni quindi sono spesso scelti per macchine portatili. Inoltre l'architettura MIPS è diffusa quindi esistono molti tool di sviluppo e programmatori esperti della piattaforma.
[modifica] Altri modelli e sviluppi futuri
La famiglia MIPS include anche l'R6000, una implementazione ECL dell'architettura MIPS prodotto da Bipolar Integrated Technology. L'R6000 introdusse il set di istruzioni MIPS II. Il TLB e l'architettura della cache era diversa da quella degli altri membri della famiglia MIPS. R6000 non aveva le prestazioni che i progettisti speravano e dopo un breve utilizzo da parte di Control Data Corporation venne abbandonato. L'RM7000 era una versione dell'R5000 con 256 KB di cache di secondo livello e un controller per una cache di terzo livello opzionale. Il suo mercato primario erano i dispositivi embedded e i dispositivi di rete, difatti venne utilizzato estesamente da Cisco System. Il nome R9000 non è stato mai utilizzato.
In quel periodo SGI decise di abbandonare la piattaforma MIPS a favore dei processori Intel Itanium e quindi fermò lo sviluppo dei processori successivi all'R10000. I tempi di passaggio alla piattaforma Itanium furono più lunghi del previsto e intanto le macchine basate su MIPS venivano migliorate. Nel 1999 comunque era chiaro che lo sviluppo dei processori di fascia alta era stato abbandonato troppo rapidamente e quindi vennero presentati i processori R14000 e R16000 che nonostante il nome non erano molto dissimili dall'R10000. SGI cercò di portare la potente FPU della serie R8000 in altri processori MIPS e di sviluppare una versione dual core ma problemi finanziari bloccarono il progetto. Inoltre SGI decise di utilizzare la tecnologia QuickTransit per permettere alle macchine basate su Itanium di utilizzare i programmi compilati per MIPS e quindi pose la parola fine allo sviluppo dei processori MIPS per piattaforma IRIX.
[modifica] Core
Negli ultimi anni molti core MIPS sono stati rilasciati in tecnologia IP core per permettere una progettazione di sistemi embedded su misura. Core a 32 e 64 bit sono stati immessi sul mercato con i nomi 4K e 5K e sono stati venduti tramite licenza, come anni prima fu fatto per i progetti MIPS32 e MIPS64. I core possono essere collegati ad altre unità come unità FPU, sistemi SIMD e altri dispositivi di input/output, etc.
I core MIPS sono stati un successo commerciale e sono utilizzati da molte industrie per realizzare i loro prodotti. Per esempio Cisco e Linksys utilizzano i core per i propri router e modem. I core sono all'interno di molte stampanti laser, lettori di smartcard, set top box, robot, computer portatili, console come la Sony PlayStation 2 e la PlayStation Portable. In dispositivi come i telefoni e i PDA tendenzialmente vengono utilizzati processori ARM che sono principali concorrenti dei processori MIPS nel settore embedded.
[modifica] Programmazione e emulatori
Esiste un emulatore gratuito del processori R2000/R3000 chiamato SPIM che funziona su molti sistemi operativi (Unix, Linux, Mac OS X, MS Windows 95/98/NT/2000/XP e MS DOS) che fornisce un buon ambiente per imparare l'assemby MIPS e per impratichirsi con la programmazione di macchine RISC [1].
GXemu invece è un emulatore molto potente (conosciuto precedentemente come mips64emul project) che non emula solamente i processori (dall'R4000 all'R10000) ma può emulare le macchine complete. Per esempio si può utilizzare GXemu per simulare il funzionamento di una macchina DECstation con MIPS R4400 o una macchina SGI O2 con MIPS R10000 e un discreto numero di periferiche come controller SCSI, schede grafiche, etc.
[modifica] Curiosità
Nel videogioco Super Mario 64, il coniglio si chiama Mips, in omaggio la processore MIPS del Nintendo 64.
[modifica] Note
[modifica] Bibliografia
- Patterson and Hennessy: Computer Organization and Design. The Hardware/Software Interface. Morgan Kaufmann Publishers. ISBN 1-55860-604-1
- Dominic Sweetman: See MIPS Run. Morgan Kaufmann Publishers. ISBN 1-55860-410-3