Architettura MIPS: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m clean up, replaced: L'''' → L{{'}}''' (4), l'''' → l{{'}}''' (16)
m refusi, wikilink
Riga 4:
== Storia ==
[[File:MIPS Architecture (Pipelined).svg|thumb|upright=1.8|Classica pipeline MIPS a 5 stadi]]
Nel [[1981]] il professore [[John L. Hennessy]] della dell'[[StanfordUniversità Universitydi 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 dati|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 ([[Interlock (informatica)|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.
Riga 36:
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 MB. 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 scoraggiò molti acquirenti sebbene le prestazioni nel calcolo in virgola mobile furono apprezzate dagli enti scientifici. L'R8000 rimase sul mercato per solo un anno quindi è un processore MIPS abbastanza raro.
 
Nel [[1995]] venne presentato l{{'}}'''R10000'''. Il processore era basato su un disegno a singolo integrato ed 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 unaun 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.
 
{| class="wikitable"
Riga 105:
 
=== 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'assembyassembly MIPS e per impratichirsi con la programmazione di macchine RISC<ref>[http://www.cs.wisc.edu/~larus/spim.html SPIM MIPS Simulator]</ref>.
 
[[GXemul]] 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 GXemul 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 [[Small Computer System Interface|SCSI]], schede grafiche, ecc.