L’architettura MIPS e i processori Silicon Graphics (SGI) Storia dell'architettura MIPS e dei processori utilizzati all'interno delle workstation Silicon Graphics e delle console PlayStation, PS2, PSP e Nintendo 64

L'architettura MIPS e i processori Silicon Graphics (SGI)

Questo articolo è il primo di una serie di approfondimenti sull’architettura dei calcolatori, nei quali andremo a introdurre i concetti di base dell’architettura hardware e firmware dei sistemi di elaborazione, ed è dedicato all’architettura MIPS: una pagina di storia dell’information technology nata da un progetto di ricerca del professor John LeRoy Hennessy dell’università di Stanford che ha contribuito a gettare le basi delle moderne CPU prodotte da brand come INTEL e AMD.

Introduzione

Con il termine MIPS (acronimo di Microprocessor without Interlocked Pipeline Stages) si intende un’architettura informatica per microprocessori RISC sviluppata dalla MIPS Computer Systems Inc. (oggi MIPS Technologies Inc.) a partire dalla prima metà degli anni ’80. Tale architettura ha giocato un ruolo fondamentale nello sviluppo dei moderni microprocessori, influenzando le architetture di molte altre famiglie di processori RISC tra cui la DEC Alpha; sono stati utilizzati all’interno di numerosi computer, come ad esempio le workstation della “storica” Silicon Graphics Inc., nota anche come SGI (che acquisì la MIPS nel 1992, per poi fallire nel 2006), e molte altre workstation prodotte da Olivetti, Siemens-Nixdorf, Acer, Digital Equipment Corporation, NEC, e DeskStation; trovarono inoltre un buon campo di applicazione anche all’interno di periferiche di rete (es. router) e nelle gaming console (Nintendo 64, Sony PlayStation, Playstation 2 e PlayStation Portable).

Caratteristiche

Tra le caratteristiche principali introdotte dall’architettura MIPS vi fu un’importante innovazione legata all’utilizzo della pipeline di dati, una tecnologia ideata negli anni ’70 per incrementare il throughput, ovvero la quantità di istruzioni eseguite in una data quantità di tempo, parallelizzando i flussi di elaborazione di più istruzioni, ma che soltanto con i processori RISC e MIPS ha trovato un’implementazione economicamente vantaggiosa: in particolare, la caratteristica distintiva dei processori MIPS era legata al fatto che tutte le istruzioni dovevano essere completate dagli stadi della pipeline in un solo ciclo di clock, così da non introdurre ritardi e stalli nella pipeline. Questo accorgimento permetteva di rimuovere molta dell’elettronica legata alla sincronizzazione degli stadi, semplificando il progetto e rendendo il processore più veloce e più efficiente.

Sfortunatamente, questa scelta portò anche alcuni svantaggi, come la necessaria eliminazione di istruzioni utili tra cui la moltiplicazione e la divisione: questo inconveniente fu superato sostituendo tali calcoli con operazioni più semplici, provocando un piccolo rallentamento che veniva ampiamente compensato dalle performance nettamente superiori legate alla struttura a pipeline senza stalli.

Principali famiglie

Segue un elenco sommario delle principali famiglie di processori MIPS che riuscirono ad affermarsi sul percato nel periodo compreso tra il 1985 e l’inizio degli anni 2000, comprensiva delle principali evoluzioni tecniche introdotte dai vari modelli.

  • R2000. Il primo MIPS commerciale, presentato nel 1985 a ridosso della fondazione dell’azienda omonima. 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 utilizzavano l’interlock, contraddicendo quindi contraddicevano il nome stesso del processore. Il processore R2000 poteva utilizzare la codifica big-endian o little-endian ed era dotato di 32 registri a 32 bit di uso generale, ma non utilizzava la tecnica della register window a dispetto dei suoi principali competitor (l’AMD 29000 e il DEC Alpha); inoltre, il program counter non era direttamente accessibile, limitazione che ne limitava le performance a livello di programmazione. Poteva gestire fino a quattro coprocessori, di cui uno integrato all’interno del processore e utilizzato per gestire le eccezioni e le trap.
  • R3000. Il successore dell’R2000, presentato nel 1988: rispetto al modello precedente poteva vantare una cache da 32 KB per istruzioni e dati, che in seguito venne espansa fino a 64 KB e che supportava controlli di coerenza volti a facilitare lo sviluppo di sistemi multiprocessore. Includeva inoltre una Memory Management Unit (MMU) per gestire le richieste di accesso alla memoria generate dalla CPU, caratteristica comune per i processori di quell’epoca; infine, come già l’R2000, anche l’R3000 poteva essere affiancato da un coprocessore matematico, l’R3010. L’R3000 ebbe un grande successo commerciale, raggiungendo oltre un milione di unità vendute; a facilitare la sua diffusione fu l’utilizzo di una sua variante (R3000A a 40Mhz) all’interno della console Sony PlayStation, che all’epoca si impose come una delle console più acquistate di tutti i tempi.
  • R4000. Il successore dell’R3000 venne presentato nel 1991 e fu il primo processore MIPS ad estendere il set di istruzioni 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, le modifiche architetturali volte a raggiungere una frequenza così elevata – caratteristica molto importante per il mercato di riferimento e ottenuta creando una super pipeline – costrinsero i progettisti a ridurre la cache a 8 KB per i primi anni di distribuzione: la famiglia R4000 riuscirà a raggiungere i 16KB di cache solo nel 1993, con il modello R4400.
  • R4300. Evoluzione dell’R4000 e del successivo (e poco fortunato) R4200, che vantava la presenza di un bus esterno a 32 bit. Una versione più economica di questo processore, prodotta dalla NEC (VR4300), venne utilizzata all’interno della console Nintendo 64 (1996-2002).
  • QED R4600, R4700, R4650 e R5000. La scelta della MIPS di sacrificare la cache per ottenere delle frequenze di funzionamento elevate provocò una scissione dei progettisti; alcuni dei quali, abbandonata la casa madre, fondarono la Quantum Effect Devices (QED), una compagnia che sviluppò i processori R4600, R4700, R4650 e R5000. Questi nuovi modelli, in controtendenza rispetto alla famiglia R4000, erano tutti caratterizzati dalla presenza di una ampia cache ad accesso rapido (due cicli di clock per accedervi anziché tre). L’R4600 e l’R4700 furono i primi processori di tipo MIPS ad essere utilizzati da Cisco per i suoi router, mentre l’R4650 venne utilizzato per il set-top box WebTV. Menzione particolare merita l’R5000, che venne utilizzato – nella variante superscalare R5900 – all’interno della console Sony Playstation 2.
  • RM7000 e RM9000. Poco prima di essere acquisita da PMC-Sierra (agosto 2000) la QED presentò quelli che sarebbero stati i suoi ultimi due processori MIPS, l’RM7000 e RM9000, appositamente pensati per l’utilizzo embedded all’interno di dispositivi di rete e stampanti laser.
  • R8000. Mentre la QED sviluppava la sotto-famiglia RM, la MIPS continuava a presentare i suoi processori: l’R8000, prodotto nella metà degli anni 90, fu il primo processore MIPS superscalare, ovvero capace di effettuare calcoli paralleli su un singolo chip, con prestazioni molto superiori a parità di frequenza di clock: l’architettura superscalare pose le basi per lo sviluppo di tutti i microprocessori prodotti a partire dalla seconda metà degli anni ’90 e contribuì a fare la fortuna di brand come INTEL e AMD. L’R8000 venne utilizzato dai server SGI Power Challenge e Power Indigo2, ma le ridotte prestazioni nel calcolo sugli interi e (soprattutto) il costo elevato scoraggiò molti acquirenti, provocando il suo ritiro dal mercato dopo poco più di un anno di commercializzazione.
  • R10000. Il successore dell’R8000, prodotto a partire dal 1995 e basato su un disegno a singolo integrato: progettato per essere molto più veloce dell’R8000, il R10000 era dotato di una cache primaria da 32 KB per i dati e le 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.
  • R12000, R14000, R16000. Serie di progetti successivi, tutti basati sull’architettura dell’R10000. L’R12000 era una versione miniaturizzata volta a innalzare la frequenza operativa; il R14000 era una versione a frequenza maggiore con in aggiunta il supporto per le memorie DDR SDRAM per la cache di secondo livello e 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.

Il tramonto dei processori MIPS

L’utilizzo dei processori MIPS all’interno di computer e workstation è in declino costante, stante la presenza di alternative architetturali più efficienti ed economiche che hanno portato SGI prima ad annunciare la dismissione delle macchine basate su architettura MIPS  in favore di quelle basate su processori Intel IA-64, quindi al fallimento nel 2006. Nonostante questo, i processori MIPS sono ancora presenti in alcune macchine embedded per via dei vantaggi connessi al loro basso consumo, cosa che li rende ideali per apparati di piccole dimensioni. La quasi totalità dei router prodotti nei primi anni 2000 erano basati su architettura MIPS e su un sistema operativo Linux, spesso in versione OpenWrt o DD-WRT, ad esclusione di rari ARM. Anche la sonda spaziale New Horizons, sviluppata dalla NASA nella prima metà degli anni 2000 e lanciata nel 2006, è equipaggiata con un processore MIPS R3000.

Conclusioni

La nostra panoramica sui processori MIPS è terminata: ci auguriamo che l’approfondimento sia stato di vostro interesse. Per approfondire altri aspetti legati al funzionamento dei microprocessori e delle varie componenti dei computer vi consigliamo di leggere la nostra serie di approfondimenti dedicata all’architettura dei calcolatori.

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.