Berkeley RISC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →RISC I |
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 |
||
(25 versioni intermedie di 16 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]]
== 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.
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
Il successo del processore inoltre va valutato nel contesto tecnologico dell'epoca. Se anche il RISC I fosse stato più lento del VAX sarebbe stato comunque un successo. Era un processore RISC a 32 bit reali che era stato prodotto da una fonderia con processi produttivi antiquati. In un disegno tradizionale buona parte del chip
==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
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
==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
Con il passare degli anni il paradigma RISC si diffuse sempre più anche architetture classicamente CISC come la [[x86]] dell'Intel internamente oramai lavora come un processore RISC. Gli ultimi processori x86 ricevono le istruzioni CISC, le convertono in istruzioni RISC e le elaborano internamente come classici processori RISC. L'area dedicata a questa conversione è ridotta rispetto all'area totale del processore e quindi il processo di conversione è conveniente. Con l'avvento di questi processori la distinzione tra processori CISC e processori RISC si è fatta molto labile e sfumata.
==Bibliografia==
* {{
* {{
{{Portale|informatica}}
[[Categoria:
|