Berkeley RISC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m ortografia |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile Attività per i nuovi utenti Suggerito: aggiungi collegamenti |
||
(13 versioni intermedie di 12 utenti non mostrate) | |||
Riga 1:
{{F|microprocessori|marzo 2013}}
'''Berkeley RISC''' è il nome dato a uno dei due progetti di ricerca sulle architetture [[Reduced instruction set computer|RISC]] finanziato dal progetto [[VLSI project]] dell'[[Defense Advanced Research Projects Agency|ARPA]]. Il progetto venne gestito da [[David Patterson]] della [[Berkeley University]] tra il 1980 e il 1984. Nello stesso periodo alla [[Stanford University]] si svolgeva l'altro progetto, che, tra il 1981 e il 1984, portò allo sviluppo dei processori [[Architettura MIPS|MIPS]]. Comunque il progetto Berkeley RISC è il progetto che più ha influenzato lo sviluppo dei processori RISC e le scoperte di questo gruppo sono state utilizzate da praticamente tutti i progettisti di [[CPU]] RISC. Il progetto portò allo sviluppo dell'architettura [[SPARC]].
== L'idea RISC ==
{{Vedi anche|Reduced instruction set computer}}
Gli scienziati del progetto [[Reduced instruction set computer|RISC]] e [[Architettura MIPS|MIPS]] sono partiti dalla constatazione che la maggior parte dei programmi non sfruttasse tutte le istruzioni dei processori, ma che in realtà ne utilizzasse solo un piccolo sottoinsieme. Si è notato che l'intero [[sistema operativo]] [[UNIX]], una volta compilato, utilizzava solamente il 30% delle istruzioni messe a disposizione dal [[Motorola 68000]]. Quindi il processore aveva un elevato numero di transistor preposti a decodificare e ad eseguire istruzioni che in realtà non vengono mai chiamate. L'idea dei processori RISC è di implementare solamente quelle istruzioni che vengono realmente utilizzate dai programmi e di utilizzare gli altri transistor per velocizzare i processori.
I processori RISC si concentrarono sull'aggiunta di molti [[registro (informatica)|registri]], che il programma poteva utilizzare per memorizzare i valori intermedi dei dati, in modo da evitare accessi alla lenta memoria centrale. Un buon [[compilatore]] era in grado di generare del codice che sfruttasse intensamente i registri, riducendo di molto gli accessi alla memoria e innalzando quindi le prestazioni. A parità di transistor un processore RISC era molto più veloce di un classico processore CISC.
I processori [[Reduced instruction set computer|RISC]] inoltre eliminarono molti modi di indirizzamento e consentirono solamente il trattamento di dati memorizzati nei registri. Solamente le istruzioni di <code>load</code> e di <code>store</code> potevano accedere alla memoria. In un processore classico l'istruzione <code>ADD</code> poteva accettare come parametro dati in memoria. Nel caso di un'elaborazione di dati dalla memoria il processore avrebbe dovuto caricare i dati in alcuni registri nascosti, eseguire l'elaborazione vera e propria e poi salvare i dati nuovamente in memoria. Quindi il processore doveva avere una complessa unità decodifica e dei registri nascosti. Un processore RISC eliminando questa modalità di accesso rende l'unità di decodifica più semplice e non necessita di registri nascosti. Il rovescio della medaglia è che i programmi devono sempre prevedere esplicitamente il caricamento e il salvataggio dei dati dai registri e quindi sono mediamente più grandi.
Quando venne sviluppato il progetto RISC la memoria era un componente molto costoso e quindi ridurre la densità di istruzioni memorizzate nella memoria poteva avere un reale effetto economico sulle macchine. Per ridurre questo effetto si decise di utilizzare parole di [[32 bit]] una parola molto lunga per l'epoca. Una parola così grande permetteva di memorizzare direttamente delle piccole costanti all'interno dell'istruzione in modo da ridurre gli accessi alla memoria. Inoltre spesso i programmi utilizzavano con elevata frequenza gli stessi dati e quindi invece di salvare i dati in memoria il processore li memorizzava in un registro per averlo subito pronto durante il successivo uso, questo rendeva il processore molto più rapido in teoria. Per esempio una funzione matematica poteva caricare dalla memoria i dati e poi lavorare solo sui registri rendendo il programma molto rapido.
Comunque ad un osservatore esterno non era evidente se il paradigma RISC avrebbe realmente migliorato le prestazioni. L'unico modo per verificarlo era eseguire delle simulazioni e le simulazioni mostravano che il processore aveva delle prestazioni molto elevate.
Il progetto RISC e MIPS differivano notevolmente da come gestivano i registri. Il progetto MIPS aggiunse una serie di registri e li rese disponibili alle istruzioni mentre il progetto RISC seguì un approccio diverso. Il progetto RISC utilizzava il concetto di [[register window]]. Il processore aveva molti registri ma ne rendeva disponibili al programma solo un numero limitato. Quando il programma effettuava una [[chiamata di sistema]] il processore muoveva la register window verso un blocco libero di registri, questo evitava il salvataggio dei registri usati in memoria riducendo gli accessi alla memoria. Questa tecnica aveva lo svantaggio che se una procedura aveva molte variabili locali il processore si sarebbe trovato presto a corto di registri e quindi avrebbe dovuto salvare alcuni dati in memoria pur avendo altri registri ma che essendo fuori dalla finestra dei registri non risultano visibili. I ricercatori di Stanford ignorarono il concetto di finestra dei registri ritenendo che un compilatore intelligente avrebbe potuto far uso migliore dei registri rispetto a una gestione fissa come quella di Berkeley.
==RISC I==
Riga 21 ⟶ 23:
RISC I per incrementare le prestazioni utilizzava una [[pipeline dati|pipeline]] a due stadi ma senza un riordino delle istruzioni come fanno le moderne CPU. Il processore aveva problemi a gestire i salti condizionati dato che comunque eseguiva l'istruzione subito dopo il salto indipendentemente dal risultato del salto. Il compilatore doveva mettere dopo il salto un'istruzione indipendente dal salto e spesso per semplicità metteva una <code>NOP</code>.
Dopo un mese passato a validare ed eliminare i bug del progetto, i progettisti il 22 giugno 1981 si rivolsero alla fonderia [[MOSIS]] per produrre il processore con una tecnologia a 2
Quando il progetto funzionò a piena velocità le prestazioni si dimostrarono eccellenti. Simulazioni basate su una serie di piccoli programmi eseguiti sul RISC I a 4 Megahertz, sul VAX 11/780 a 5 Megahertz e sul processore a 16 bit [[Zilog Z8000]] a 5 Megahertz furono chiarificanti. I programmi erano circa il 30% più grande degli equivalenti programmi VAX e grande quasi quanto quelli dello Z8000. Quindi la temuta esplosione di dimensione del codice non si verificava mentre il RISC I si dimostrava due volte più rapido del VAX e quattro volte più rapido dello Z8000. Era molto interessante notare che il processore effettuava all'incirca lo stesso numero di accessi di un processore CISC, questo era merito dell'ampio numero di registri che limitavano gli accessi alla memoria.
Riga 28 ⟶ 30:
==RISC II==
Mentre il progetto RISC I procedeva verso la sua realizzazione i ricercatori di Berkeley iniziarono a svilupparne la nuova versione che prese il [[nome in codice]] di '''Blue'''. I lavori su Blue
La differenza chiave tra i processori era che il nuovo progetto eliminava una delle tre linee dedite alla gestione della cache riducendo notevolmente la dimensione del gestore dei registri. Questo cambiamento richiedeva uno stretto accorpamento con il bus di sistema ma era un piccolo prezzo da pagare per ottenere un sistema molto più veloce e quindi delle prestazioni più elevate.
Il nuovo progetto era molto più parco del precedente. Mentre Gold conteneva 78 registri e sei finestre, Blue aveva 138 registri divisi in 7 finestre da 32 registri e 10 registri globali. La presenza di più registri in ogni finestra aumentava la possibilità di avere i dati direttamente nei registri senza dover accedere alla memoria. Inoltre il nuovo progetto era talmente efficiente che, pur avendo quasi il doppio dei registri del progetto
Un'altra caratteristica importante del processore era che includeva un formato di istruzioni che permetteva di espanderne alcune. Alcune istruzioni che utilizzavano solo un operatore o che non ne utilizzano nessuno (come la <code>NOP</code>) venivano memorizzate in un formato compatto a [[16 bit]] che poi veniva espanso in istruzioni a 32 bit in modo trasparente all'interno del processore prima di arrivare all'[[Arithmetic Logic Unit|ALU]]. Questo stratagemma permise di ridurre la dimensione del codice del 30% migliorando la densità del codice inoltre un programma funzionava più rapidamente su Blue rispetto a Gold per via dei minori accessi alla memoria.
RISC II venne prodotto dalla fonderia in modo corretto e le sue prestazioni furono molto interessanti. Il prestazioni del processore dipendevano dai programmi in esecuzione ma il processore forniva rispetto al VAX prestazioni comprese tra l'85% e il 256%. Quindi il RISC II riusciva a superare il VAX più di due volte in alcuni programmi. Il team confrontò il processore con il [[Motorola 68000]] il migliore processore allora in commercio. Il RISC II superò sempre il 68000 e fornì prestazioni comprese tra il 140% e il 420%.
==Sviluppi==
Il progetto RISC terminò con la realizzazione del RISC II ma i suoi risultati sopravvissero al progetto. Il core fu riutilizzato per il progetto '''SOAP''' del 1984 che in sostanza utilizzava il core RISC per far funzionare codice [[Smalltalk]] e in seguito nel progetto '''VLSI-BAM''' che realizzò un processore in grado di far funzionare programmi in [[Prolog
Il progetto RISC è meno famoso di altri progetti ma fu la base del processore commerciale [[SPARC]] processore sviluppato dalla [[Sun Microsystems]]. Fu la Sun con la prima [[SPARCstation]] a dimostrare la netta superiorità del progetto RISC sugli altri progetti, la sua macchina era superiore a quella di qualsiasi altro produttore. I produttori di praticamente ogni macchina basata su [[UNIX]] si convertirono a processori RISC che portarono allo sviluppo dei processori [[DEC Alpha]] e dei [[PA RISC]]. La [[Silicon Graphics|SGI]] invece acquisì la [[MIPS Computer Systems]]. Dal 1986 i maggiori produttori mondiali di semiconduttori crearono processori RISC come il [[Motorola 88000]], il [[Architettura Clipper|Fairchild Clipper]], l'[[AMD 29000]] l'[[Intel i880]] e il [[PowerPC]]
Riga 46 ⟶ 48:
==Bibliografia==
* {{
* {{
{{Portale|informatica}}
[[Categoria:
|