Architettura MIPS: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 3:
 
Il disegno dell'architettura e del [[set di istruzioni]] è semplice e lineare ed è 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]]. E' utilizzato nel campo dei computer [[Silicon Graphics|SGI]], ed ha trovato grossa diffusione nell'ambito dei [[Sistema embedded|sistemi embedded]], dei device di [[Windows CE]] e nei [[router]] di [[Cisco Systems|Cisco]] e anche le console [[Nintendo 64]], [[Sony]] [[PlayStation]], [[PlayStation 2]] e [[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 <code>MIPS I</code>, <code>MIPS II</code>, <code>MIPS III</code>, <code>MIPS IV</code>, e <code>MIPS 32/64</code>. L'ultima di queste, <code>MIPS 32/64</code> Release 2, definisce un insieme di registri di controllo come l'instruction set. Molte estensioni "add-on" sono anche disponibili, incluso <code>MIPS-3D</code> che è un semplice insieme di istruzioni dedicate [[SIMD]] in floating-point per applicazioni 3D, <code>MDMX</code> che è un'istruzione [[SIMD]] molto costosa su interi che usa registri floating-point a 64-bit, <code>MIPS16</code> 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 <code>MIPS MT</code>, una nuova aggiunta [[multithreading]] per i sistemi simili all'[[HyperThreading]] implementato da [[Intel]] nei processori [[Pentium 4]].
 
== Storia ==
Riga 92 ⟶ 90:
|}
Nota: Le specifiche indicate sono le più comuni ma esistono delle varianti soprattutto per la cache di secondo livello.
 
== Descrizione ==
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 <code>MIPS I</code>, <code>MIPS II</code>, <code>MIPS III</code>, <code>MIPS IV</code>, e <code>MIPS 32/64</code>. L'ultima di queste, <code>MIPS 32/64</code> Release 2, definisce un insieme di registri di controllo come l'instruction set. Molte estensioni "add-on" sono anche disponibili, incluso <code>MIPS-3D</code> che è un semplice insieme di istruzioni dedicate [[SIMD]] in floating-point per applicazioni 3D, <code>MDMX</code> che è un'istruzione [[SIMD]] molto costosa su interi che usa registri floating-point a 64-bit, <code>MIPS16</code> 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 <code>MIPS MT</code>, una nuova aggiunta [[multithreading]] per i sistemi simili all'[[HyperThreading]] implementato da [[Intel]] nei processori [[Pentium 4]].
 
== Applicazioni ==
Riga 100 ⟶ 101:
La quasi totalità dei [[router]] sono ormai basati su MIPS su sistema operativo [[Linux]], spesso in versione [[OpenWrt]] o [[DD-WRT]], ad esclusione di rari [[Architettura ARM|ARM]], come ad esempio l'Alice Gate Enterprise che monta un ARM940. La sonda spaziale [[New Horizons]], sviluppata dalla [[NASA]] per l'esplorazione di [[Plutone (astronomia)|Plutone]] e del suo satellite [[Caronte (astronomia)|Caronte]] lanciata nel 2006, è equipaggiata con un processore MIPS R3000.
 
=== Core ===
== Altri modelli e sviluppi futuri ==
La famiglia MIPS include anche l''''R6000''', una implementazione [[Emitter-coupled logic|ECL]] dell'architettura MIPS prodotto da [[Bipolar Integrated Technology]]. L'R6000 introdusse il set di istruzioni <code>MIPS II</code>. Il [[Translation Lookaside Buffer|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.
 
Una versione semplificata della gestione della pipeline è la [[DLX (informatica)|pipeline DLX]], possibile grazie alla [[rinominazione dei registri|rinominazione dei registri esplicita]]<ref>{{cita web|titolo=Dynamic Scheduling Techniques|url=http://web.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/dynamSchedTech.html|accesso=24 gennaio 2016}}</ref>.
 
== Core ==
Negli ultimi anni molti core MIPS sono stati messi in commercio con 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, ecc.
 
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 [[architettura ARM|ARM]] che sono principali concorrenti dei processori MIPS nel settore embedded. In questo settore [[Microchip Technology]], uno dei maggiori produttori mondiali di microcontrollori, ha utilizzato il core MIPS 4K per il suo modello di punta PIC32.
 
=== 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<ref>[http://www.cs.wisc.edu/~larus/spim.html SPIM MIPS Simulator]</ref>.
 
Riga 118 ⟶ 112:
 
[[Qemu]] è un ben noto emulatore opensource e multipiattaforma. Sebbene sia usato principalmente per emulare un processore x86, permette anche di emulare una piattaforma virtuale MIPS based, simulando un processore MIPS32 4Kc. MARS, infine, è un emulatore e IDE molto potente, scritto in [[Java (linguaggio di programmazione)|Java]] e sviluppato da un gruppo della Missouri State University, con al suo interno vari strumenti ed una finestra di aiuto molto dettagliata.
 
=== Altri modelli e sviluppi futuri ===
La famiglia MIPS include anche l''''R6000''', una implementazione [[Emitter-coupled logic|ECL]] dell'architettura MIPS prodotto da [[Bipolar Integrated Technology]]. L'R6000 introdusse il set di istruzioni <code>MIPS II</code>. Il [[Translation Lookaside Buffer|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.
 
Una versione semplificata della gestione della pipeline è la [[DLX (informatica)|pipeline DLX]], possibile grazie alla [[rinominazione dei registri|rinominazione dei registri esplicita]]<ref>{{cita web|titolo=Dynamic Scheduling Techniques|url=http://web.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/dynamSchedTech.html|accesso=24 gennaio 2016}}</ref>.
 
== Note ==