Reduced instruction set computer: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Etichette: Modifica da mobile Modifica da web per mobile |
m →Le prime evoluzioni: Ingrandito l'immagine relativa all'esecuzione delle istruzioni in un microprocessore con pipeline |
||
(40 versioni intermedie di 17 utenti non mostrate) | |||
Riga 1:
{{Nota disambigua||RISC (disambigua)|RISC}}
{{F|informatica|maggio 2023}}
[[File:DEC Alpha 21-35023-13 J40793-28 top.jpg|thumb|Processore RISC DEC Alpha 21064 il primo esponente della famiglia [[DEC Alpha]]]]
'''Reduced Instruction Set Computer''' (in [[acronimo]] '''RISC'''), nell'[[elettronica digitale]], indica un'idea di [[progettazione]] di architetture per [[microprocessore|microprocessori]] che predilige lo sviluppo di un'architettura semplice e lineare. Questa semplicità di progettazione permette di realizzare microprocessori in grado di eseguire il [[set di istruzioni]] in tempi minori rispetto a una architettura [[CISC]].▼
▲'''Reduced Instruction Set Computer''' (
I più comuni processori RISC sono: [[Atmel AVR|AVR]], [[PIC (microcontrollore)|PIC]], [[Architettura ARM|ARM]], [[DEC Alpha]], [[PA-RISC]], [[SPARC]], [[Architettura MIPS|MIPS]], [[POWER]] e [[PowerPC]].▼
▲I più comuni processori RISC sono
== Evoluzione storica ==
All'inizio dell'industria dell'informatica i [[Compilatore|compilatori]] non esistevano ed i programmatori scrivevano direttamente in codice macchina o in [[assembly]]. Per facilitare il lavoro dei programmatori, i progettisti dei processori decisero di inserire nel [[set di istruzioni]] dei processori delle istruzioni anche molto complesse in modo da simulare le funzioni ad alto livello dei linguaggi di programmazione direttamente nei processori. Sempre al fine di facilitare lo sviluppo dei programmi, il set di istruzioni dei microprocessori permetteva dei metodi di indirizzamento dei dati complessi che consentivano di manipolare direttamente i dati in memoria, senza passare dai registri dei microprocessori. Questo non era in realtà possibile dato che il processore può elaborare solo dati contenuti nei registri (il [[Texas Instruments TMS9900]] è un'eccezione), e quando il programmatore utilizzava questi metodi di accesso alla memoria il processore provvedeva a copiare il dato in un registro (a volte un registro riservato) per eseguire l'operazione e successivamente salvare il dato in memoria.▼
=== Il contesto prima dell'introduzione ===
▲All'inizio dell'industria dell'informatica i [[Compilatore|compilatori]] non esistevano ed i programmatori scrivevano direttamente in codice macchina o in [[assembly]]. Per facilitare il lavoro dei [[Programmatore informatico|programmatori]], i progettisti dei processori decisero di inserire nel [[set di istruzioni]] dei processori delle istruzioni anche molto complesse in modo da simulare le [[Funzione (informatica)|funzioni]] ad alto livello dei [[Linguaggio di programmazione|linguaggi di programmazione]] direttamente nei processori. Sempre al fine di facilitare lo sviluppo dei programmi, il set di istruzioni dei microprocessori permetteva dei metodi di indirizzamento dei dati complessi che consentivano di manipolare direttamente i dati in memoria, senza passare dai [[Registri hardware|registri]] dei microprocessori. Questo non era in realtà possibile dato che il processore può elaborare solo dati contenuti nei registri (il [[Texas Instruments TMS9900]] è un'eccezione), e quando il programmatore utilizzava questi metodi di accesso alla memoria il processore provvedeva a copiare il dato in un registro (a volte un registro riservato) per eseguire l'operazione e successivamente salvare il dato in memoria.
Un altro vantaggio dell'avere un set di istruzioni molto complesso è l'occupazione di memoria. Istruzioni molto complesse consentono di realizzare programmi compatti e all'inizio dell'informatica la memoria era una risorsa molto costosa. Ecco perché i processori avevano molte istruzioni e utilizzavano codifiche a lunghezza variabile di bit per definire le istruzioni in modo da massimizzare la densità di istruzioni.
Le CPU erano dotate di pochi [[registro (informatica)|registri]] per due motivi fondamentali:
* Realizzare i registri nei processori era molto costoso, in quanto i [[bit]] all'interno di un processore costano molto più dei bit memorizzati dalla memoria principale; realizzare molti registri avrebbe richiesto molti [[transistor]] e questo avrebbe richiesto di sacrificare le altre unità funzionali del processore.
* Molti registri richiedono molti bit per essere indirizzati, quindi richiedono più memoria per l'immagazzinamento delle istruzioni.
Questi motivi spinsero i progettisti a realizzare istruzioni con metodi di accesso alla memoria molto complesse, per esempio erano comuni istruzioni in grado di caricare due dati, sommarli e poi salvare il risultato in memoria tutto utilizzando una sola istruzione. Un'altra versione della stessa istruzione caricherebbe i dati dalla memoria, li sommerebbe e salverebbe il dato in un registro per esempio. Una terza variante caricherebbe i dati dalla memoria e da un registro, eseguirebbe la somma e salverebbe i dati in un registro. I processori dotati di molte istruzioni di questo tipo vengono definiti processori CISC.
Line 19 ⟶ 21:
L'obiettivo principale di allora era realizzare processori che fossero in grado di eseguire operazioni con ogni possibile modo di indirizzamento. La possibilità di utilizzare memorie e registri come ingresso o uscita con le varie combinazioni era chiamata ortogonalità delle istruzioni. Sebbene questo complicasse la realizzazione dei processori si riteneva che velocizzasse i programmi dato che il programmatore poteva di volta in volta utilizzare il comando migliore a seconda del programma che stava scrivendo.
===
[[File:PowerPC G4e.png|thumb|Architettura PowerPC G4 (RISC)]]
[[File:Architettura Pentium 4.png|thumb|Architettura Pentium 4 (CISC), notare la complessità di questa architettura rispetto a quella RISC del PowerPC G4]]
Verso la fine degli [[anni 1970|anni
Gli studi dimostrarono che molte istruzioni esotiche venivano utilizzate molto raramente e a volte erano più lente del codice scritto con le istruzioni generiche. L'esempio classico era l'istruzione <code>INDEX</code> dei [[VAX]]: questa istruzione era più lenta di un loop implementato con le istruzioni comuni.
In quel periodo la velocità delle CPU e delle memorie era simile, ma era evidente l'incremento di velocità
Studi effettuati da informatici come [[Andrew S. Tanenbaum|Andrew Tanenbaum]] dimostrarono che le CPU prodotte allora erano molto sovradimensionate rispetto alle reali esigenze dei programmi. Tanenbaum dimostrò che il 98% delle costanti in un programma poteva essere memorizzato con [[Parola (informatica)|parole]] di 13 bit sebbene la maggior parte delle CPU utilizzasse parole a multipli di 8 bit (8
Dato che nelle applicazioni reali la maggior parte del tempo viene dedicata all'esecuzione di operazioni molto semplici, i ricercatori si concentrarono su queste operazioni comuni cercando di rendere la loro esecuzione il più veloce possibile. Visto che la massima velocità di funzionamento delle unità era limitata dal tempo necessario ad eseguire le istruzioni più lente e i modi di indirizzamento più esotici, si decise di eliminare le istruzioni e i modi di indirizzamento poco usati in modo da ottenere un set di istruzioni più snello contenente solo quelle istruzioni che effettivamente venivano richieste e che potevano essere ottimizzate per essere eseguite rapidamente, spesso in un solo ciclo di clock.<ref>[http://www.ercb.com/ddj/1990/ddj.9009.html Microprocessors From the Programmer's Perspective Review by Andrew Schulman Copyright (C) Dr. Dobb's Journal, Settembre 1990]</ref>
L'obiettivo di ridurre le istruzioni portò alla creazione del nome ''Reduced Instruction Set Computing'' (elaborazione con set di istruzioni ridotto): un numero ridotto di istruzioni con metodi di accesso semplici e lineari che permetteva l'utilizzo di soluzioni di tipo [[pipeline dati|pipeline]]. L'utilizzo di pipeline permette di realizzare microprocessori in grado di eseguire la maggior parte delle istruzioni in un ciclo di clock. In un'architettura CISC è molto più difficile includere una pipeline dato che i molteplici metodi di indirizzamento complicano nettamente il funzionamento dell'unità e perciò a parità di potenza di calcolo, un'architettura CISC a pipeline richiede molti più transistor di una architettura RISC a pipeline.▼
▲L'obiettivo di ridurre le istruzioni portò
L'acronimo RISC ha portato spesso dei fraintendimenti. Molti leggendo "set di istruzioni ridotti" pensarono a un set di istruzioni menomato, inadeguato a eseguire con semplicità programmi complessi. Invece i processori RISC moderni sono spesso dotati di un set di istruzioni molto completo, ma non forniscono metodi di indirizzamento esotici o istruzioni utilizzate raramente. Ispirati dalla filosofia RISC, sono state sviluppate macchine basate su set di istruzioni minimali come le [[Minimal instruction set computer|MISC]], le [[One instruction set computer|OISC]] e le [[Transport Triggered Architectures]], mentre alcune ricerche si sono mosse verso il [[Turing tarpit]].▼
▲L'acronimo RISC ha portato spesso dei fraintendimenti. Molti, leggendo
L'approccio RISC ha il grande vantaggio della velocità ma il suo principale svantaggio è l'occupazione di memoria da parte del codice. Essendo presenti solo istruzioni relativamente semplici, il codice scritto per macchine RISC tende ad essere più grande del codice scritto per macchine CISC.
===
Nel frattempo, gli ingegneri trovarono alcuni metodi e tecnologie migliori per incrementare la capacità dei processori senza aumentare la frequenza. All'inizio degli [[anni
[[File:Fivestagespipeline.
▲All'inizio degli anni '80 si era diffusa l'idea che l'architettura dei processori avesse raggiunto il suo limite teorico di velocità. Si riteneva che nuovi incrementi di prestazioni si sarebbero ottenuti solamente grazie alle migliorie dei semiconduttori che, permettendo transistor più compatti, avrebbero permesso di innalzare la frequenza di funzionamento. Molti sforzi furono rivolti verso il [[calcolo parallelo]] e verso la realizzazione di metodi di collegamento rapidi. Tuttavia i timori iniziali vennero fugati dallo sviluppo di alcune nuove tecnologie che innalzarono le prestazioni dei processori senza innalzarne la frequenza.
▲[[File:Fivestagespipeline.png|thumb|upright=1.2|Esecuzione delle istruzioni in un microprocessore con pipeline]]
▲L'idea che migliorò maggiormente le prestazioni fu sicuramente quella che portò allo sviluppo delle [[pipeline dati|pipeline]]. In una pipeline l'istruzione viene divisa in sotto operazioni che vengono svolte in modo sequenziale dalle unità funzionali disposte come una catena di montaggio. Un normale processore ha una singola unità generica che preleva un'istruzione, la decodifica, carica gli operandi, esegue l'operazione vera e propria e salva il risultato. Queste fasi vengono svolte in modo sequenziale da un processore classico; un processore dotato di pipeline esegue invece queste operazioni in parallelo, dato che, come in una catena di montaggio, possiede più unità specialistiche, ognuna delle quali esegue una singola fase, incrementando in misura notevole le prestazioni.
* Aumentare il numero di registri presenti
* Incrementare il parallelismo interno del processore
Line 58 ⟶ 59:
* Realizzare i processori in fabbriche con tecnologie antiquate contenendo i costi.
I progetti RISC quasi sempre sviluppano i processori seguendo l'[[architettura Harvard]]. In questa architettura i flussi dei dati e i flussi delle istruzioni sono separati in modo da consentire al processore di funzionare senza interruzione e permettono al processore una gestione più rapida ed efficiente della cache. Questo vuol dire che, se il processore è dotato di cache, il programma non può modificare dinamicamente il suo codice, dato che le modifiche non verrebbero
Normalmente un processore RISC è dotato di alcune caratteristiche distintive; le principali sono:▼
* Codifica delle istruzioni di lunghezza fissa. Questo spreca spazio in memoria ma permette di realizzare una decodifica delle istruzioni rapida e semplice.▼
* Gestione omogenea dei registri. Questi sono accessibili a tutte le operazioni senza distinzione in modo da semplificare la realizzazione dei compilatori (sebbene spesso i processori siano divisi tra quelli per interi e quelli per le operazioni a virgola mobile).▼
* Metodi di indirizzamento semplici. I metodi di indirizzamento complessi possono essere emulati con semplici operazioni aritmetiche.▼
* Pochi tipi gestiti nativamente. Alcuni processori CISC, per esempio, possono gestire nativamente polinomi e numeri complessi, ma ben difficilmente questi tipi saranno gestiti da un processore RISC.▼
Alcuni dei primi RISC
▲I progetti RISC quasi sempre sviluppano i processori seguendo l'[[architettura Harvard]]. In questa architettura i flussi dei dati e i flussi delle istruzioni sono separati in modo da consentire al processore di funzionare senza interruzione e permettono al processore una gestione più rapida ed efficiente della cache. Questo vuol dire che, se il processore è dotato di cache, il programma non può modificare dinamicamente il suo codice, dato che le modifiche non verrebbero ''viste'' dalla cache del processore. Questo impedisce al [[codice automodificante]] di funzionare su questi processori.
=== I primi prodotti immessi sul mercato ===
▲Alcuni dei primi RISC ''pipelined'' erano dotati di alcune peculiarità non desiderate, la più famosa è la [[branch delay slot]]. La branch delay slot indica il fatto che ogni volta che il processore incontrava una condizione di salto eseguiva comunque l'istruzione successiva al salto anche se questa istruzione non doveva essere eseguita. Questo è un effetto indesiderato delle pipeline e ad oggi i processori moderni utilizzano particolari accorgimenti (durante i quali il processore è detto essere in ''stallo'') per evitare l'esecuzione dell'istruzione se questa non è realmente necessaria.
Il primo sistema al mondo che si può ritenere aderire alla filosofia RISC fu il [[supercomputer]] [[CDC 6600]] sviluppato nel 1964 da Jim Thornton e [[Seymour Cray]]. Thornton e Cray progettarono una CPU specializzata per eseguire calcoli (dotata di 74 opcode, un numero nemmeno paragonabile alle 400 opcode dell'[[Intel 8086]]) e 10 processori periferici dedicati alla gestione dell'I/O. Il CDC 6600 è dotato di un'architettura load/store con solo due metodi di accesso. Il computer aveva 10 unità funzionali aritmetiche/logiche più cinque unità dedicate al caricamento e al salvataggio dei dati. La memoria era suddivisa in più banchi in modo da consentire alle unità load/store di funzionare in parallelo. Il clock del processore era dieci volte il clock della memoria.▼
Un'altra delle prime macchine load/store fu il minicomputer [[Data General Nova]] sviluppato nel 1968. I progetti che portarono alle prime architetture che esplicitarono il concetto di processore RISC, comunque, furono svolti in seno alle università statunitensi che, utilizzando i fondi forniti dal [[DARPA]] per il programma [[VLSI]], svilupparono molte innovazioni nel campo dell'elettronica e della miniaturizzazione.▼
▲Thornton e Cray progettarono una CPU specializzata per eseguire calcoli (dotata di 74 opcode, un numero nemmeno paragonabile alle 400 opcode dell'[[Intel 8086]]) e 10 processori periferici dedicati alla gestione dell'I/O. Il CDC 6600 è dotato di un'architettura load/store con solo due metodi di accesso. Il computer aveva 10 unità funzionali aritmetiche/logiche più cinque unità dedicate al caricamento e al salvataggio dei dati. La memoria era suddivisa in più banchi in modo da consentire alle unità load/store di funzionare in parallelo. Il clock del processore era dieci volte il clock della memoria.
▲I progetti che portarono alle prime architetture che esplicitarono il concetto di processore RISC, comunque, furono svolti in seno alle università statunitensi che, utilizzando i fondi forniti dal [[DARPA]] per il programma [[VLSI]], svilupparono molte innovazioni nel campo dell'elettronica e della miniaturizzazione.
Il progetto [[Berkeley RISC]] iniziò nel [[1980]] sotto la direzione di [[David A. Patterson|David Patterson]]. Il progetto mirava ad ottenere elevate prestazioni tramite l'uso di pipeline e di molti registri gestiti con la tecnica della [[register window]]. In una normale CPU vi erano un numero ridotto di registri (8 o 16 era un numero comune) che erano accessibili a tutto il programma. Nella CPU progettata dal gruppo di Patterson i registri erano 128, ma il programma poteva accedere in ogni momento solamente a 8 di questi. Questa organizzazione permetteva di realizzare delle chiamate di sistema o dei cambi di contesto molto rapidi. In una CPU classica una chiamata di sistema imponeva al processore di salvare i registri in memoria per permettere alla procedura di avere i registri liberi; nella CPU di Patterson basta spostare l'indice della finestra per ottenere dei registri liberi senza salvare niente in memoria velocizzando notevolmente il tutto.
Il progetto RISC sviluppò il processore RISC-I nel 1982. Il processore era formato da
[[File:
Nello stesso periodo [[John L. Hennessy]] iniziò un progetto simile chiamato [[Architettura MIPS|MIPS]] alla [[Stanford University]] nel 1981. Il progetto MIPS si concentrava sul realizzare un processore ove la pipeline fosse sempre operativa. La pipeline era già in uso allora su alcuni processori, ma il progetto MIPS sviluppò molte soluzioni che sono diventate di uso comune. Per ottenere una pipeline sempre piena era necessario garantire che le operazioni fossero sempre completate in un solo ciclo di clock da tutte le unità funzionali, quindi i progettisti decisero di eliminare dal processore tutte le istruzioni troppo lente anche se utili. Ad esempio il processore MIPS non prevedeva operazioni di moltiplicazione o divisione.▼
▲Nello stesso periodo, [[John L. Hennessy]] iniziò un progetto simile chiamato [[Architettura MIPS|MIPS]] alla [[Stanford University]] nel 1981. Il progetto MIPS si concentrava sul realizzare un processore ove la pipeline fosse sempre operativa. La pipeline era già in uso allora su alcuni processori, ma il progetto MIPS sviluppò molte soluzioni che sono diventate di uso comune. Per ottenere una pipeline sempre piena era necessario garantire che le operazioni fossero sempre completate in un solo ciclo di clock da tutte le unità funzionali, quindi i progettisti decisero di eliminare dal processore tutte le istruzioni troppo lente anche se utili. Ad esempio il processore MIPS non prevedeva operazioni di moltiplicazione o divisione.
Il primo progetto di produrre una CPU su un singolo chip lo si deve all'IBM, che nel 1975 iniziò un progetto che fu di ispirazione per i gruppi successivi. Il progetto di ricerca ha portato allo sviluppo del processore [[IBM 801]]. L'801 venne prodotto su singolo chip nel 1981 con il nome di '''ROMP''', un acronimo che indica ''Research (Office Products Division) Mini Processor''. Come dice il nome, la CPU era progettata per svolgere compiti d'ufficio; nel 1986 l'IBM presentò l'[[IBM RT]] che non ebbe successo per le prestazioni non all'altezza delle aspettative. Nonostante tutto il progetto 801 ispirò molti altri progetti di ricerca, incluso il progetto [[POWER]] della stessa IBM.▼
▲Il primo progetto di produrre una CPU su un singolo chip lo si deve all'IBM, che nel 1975 iniziò un progetto che fu di ispirazione per i gruppi successivi. Il progetto di ricerca ha portato allo sviluppo del processore [[IBM 801]]. L'801 venne prodotto su singolo chip nel 1981 con il nome di
Durante quegli anni i lavori sulle architetture RISC erano molto diffusi all'interno dei centri di ricerca. Il progetto svolto a Berkeley era talmente importante che spesso veniva utilizzato come sinonimo dell'intero paradigma RISC. Molte aziende erano inizialmente restie a investire sull'architettura RISC, dato che in un prodotto commerciale la ridotta efficienza della memoria avrebbe potuto compromettere le prestazioni dei processori. Comunque, nonostante alcune difficoltà iniziali, nel 1986 tutti i progetti RISC erano diventati prodotti commerciali e non si può negare che tutti i moderni processori RISC debbano molto al progetto del RISC-II.
===
La ricerca svolta a Berkeley non portò direttamente allo sviluppo di prodotti commerciali ma il progetto del RISC-II venne utilizzato dalla [[Sun Microsystems]] per sviluppare i processori [[SPARC]], dalla [[Pyramid Technology]] per sviluppare la sua linea di macchine multiprocessore e da praticamente ogni altra società che lavorò in questo settore. Le macchine della Sun dimostrarono che il progetto RISC era valido, che i benefici erano reali e permisero alla società di dominare il settore delle [[workstation]].
John Hennessy abbandonò (temporaneamente) Stanford per commercializzare il progetto MIPS e fondò la [[MIPS Computer Systems]]. Il primo progetto della società fu l'[[R2000]], un processore MIPS di seconda generazione. I processori MIPS sono diventati tra i processori RISC più utilizzati: difatti sono integrati all'interno di console come la [[PlayStation]] e la [[Nintendo 64]] e sono usati nella maggioranza dei [[
IBM, reduce dal fallimento del progetto RT-PC, imparò dai suoi errori e sviluppò la piattaforma RS/6000 basata su architettura POWER. La società spostò i suoi server [[AS/400]] sulla nuova architettura e gli ingegneri riuscirono a realizzare anche chip con istruzioni molto complesse ma anche molto veloci. Questi progetti portarono allo sviluppo della linea [[iSeries]]. Il POWER subì un processo di semplificazione che portò allo sviluppo dei processori [[PowerPC]], processori più semplici, non dotati delle istruzioni peculiari dei prodotti IBM e realizzabili su singolo chip per contenerne i costi. I processori PowerPC sono molto utilizzati in applicazioni legate all'automazione e alle automobili. Esistono alcune macchine dotate di più di 10 processori PowerPC. La CPU è stata utilizzata per anni da Apple per i suoi computer, sebbene ultimamente la società abbia deciso di passare ai processori [[Core Duo|Intel Core]].
Line 96 ⟶ 89:
Molti altri progetti sono sorti rapidamente. Dal Regno Unito ricerche simili hanno portato alla creazione di processori come l'[[INMOS Transputer]] e l'[[architettura ARM]]. L'architettura ARM ha avuto un'enorme diffusione nel settore dei dispositivi embedded e mobili. [[Intel]] ha prodotto i processori [[i880]] e [[Intel i960|i960]] alla fine degli anni '80, sebbene questi abbiano avuto poco seguito commerciale. [[Motorola]] ha prodotto il [[Motorola 88000]], un processore che non ha mai avuto molto successo e che è stato abbandonato quando Motorola si è consociata con IBM per produrre i processori PowerPC. [[Advanced Micro Devices|AMD]] ha realizzato l'[[AMD 29000]], un processore molto utilizzato nelle stampanti laser e nelle macchine per l'ufficio.
Attualmente la maggior parte delle CPU prodotte seguono un approccio RISC. La filosofia RISC offre potenza con costi ridotti e consumi parchi, difatti domina il settore dei dispositivi embedded. Telefoni cellulari, palmari, automobili, videogiochi portatili e altri si affidano a processori RISC. I processori RISC, inoltre, diventarono i dominatori incontrastati dei server ad alte prestazioni durante gli anni
Nonostante i molti successi dei processori RISC, attualmente la piattaforma di riferimento per i computer da tavolo è l'architettura [[x86]] prodotta da Intel; il fatto è che Intel e il suo contendente diretto AMD dominano il mercato dei personal computer con macchine ad architettura CISC, in quanto gli utenti preferiscono mantenere la compatibilità con le loro applicazioni piuttosto che ricercare prestazioni più elevate utilizzando architetture più moderne. Difatti nessuna architettura RISC ha una base utenti talmente ampia da poter competere con quella dell'architettura x86. Inoltre Intel, avendo enormi guadagni dai suoi processori, può investire immense cifre di denaro in ricerca per produrre processori che, pur rispettando i vincoli dell'architettura x86, offrano ottime prestazioni. Comunque, dall'avvento del processore [[Pentium Pro]] in poi, i processori Intel prelevano le istruzioni x86 di tipo CISC dalla memoria e le traducono internamente in rapide istruzioni RISC che poi il processore elabora come un RISC classico. Tali famiglie di processori, pur comportandosi da processori CISC, in realtà funzionano internamente come processori RISC.
I consumatori sono interessati alle prestazioni dei processori, al loro costo e alla loro compatibilità con i programmi; non sono interessati a sapere quanto spendono le società per sviluppare i processori. Questo ha generato un fenomeno curioso: lo sviluppo di nuovi processori diventa un affare sempre più costoso e complesso, i costi di sviluppo sono esplosi negli ultimi anni e anche i costi per approntare nuove fonderie di silicio è costantemente in aumento. Questo ha portato fuori mercato tutti i produttori RISC ad alte prestazioni tranne IBM con l'[[architettura Power]]. Le architetture MIPS e SPARC vengono sviluppate a ritmi ridotti e sempre per settori specializzati mentre altre architetture, come la [[PA-RISC]] e la [[DEC Alpha]], sono state abbandonate all'inizio degli anni 2000. Attualmente i processori più veloci nei calcoli interi sono basati su architetture [[x86]] mentre nei calcoli in virgola mobile le soluzioni RISC di IBM sopravvivono per via della inefficiente gestione dei numeri in virgola mobile dell'architettura x86.
Comunque le soluzioni RISC hanno portato ad alcuni prodotti di grande successo come:▼
*[[Architettura MIPS|MIPS]] utilizzato inizialmente da [[Silicon Graphics]] per i suoi computer e in seguito alla base di [[PlayStation]], [[PlayStation 2]], [[PlayStation Portable]] e [[Nintendo 64]]▼
*[[POWER]], utilizzato nelle sue mille varianti da [[Apple|Apple Inc.]] per anni nei suoi computer prima del passaggio all'architettura X86 e da [[IBM]] per i suoi sistemi, compresi i supercomputer più veloci del pianeta. Il processore viene utilizzato anche dal [[Nintendo GameCube]], da [[Wii]], dalla [[Xbox 360]] e dalla [[PlayStation 3]]. ▼
*[[SPARC]] e UltraSPARC, utilizzato nei server Sun Microsystem.▼
*[[PA-RISC]] utilizzato per anni da Hewlett-Packard per alcuni suoi server.▼
*[[DEC Alpha]] prodotto da [[Digital Equipment Corporation|DEC]] e utilizzato su server e workstation.▼
*[[Architettura ARM|ARM]], utilizzato in PDA come l'[[Apple Newton]] e altri. Le sue varianti sono incluse in moltissimi prodotti di consumo come il [[Game Boy Advance]], il [[Nintendo DS]], l'[[iPod]] e in molti telefoni cellulari, come alcuni [[IPhone]], [[High Tech Computer Corporation|HTC]], [[Sony Ericsson]], (in particolate la serie Smartphone "P", "M" e alcuni "W") e [[Nokia]].▼
*Bisogna inoltre ricordare come la grande espansione del mercato di smartphone e tablet avvenuta negli anni compresi tra il 2010 ed il 2014 abbia contribuito a rilanciare la domanda di processori ad [[architettura ARM]], nonché ad una rinnovata spinta della ricerca in questo settore, con la realizzazione di processori ARM della serie [[ARM Cortex-A8|Cortex A8]], [[ARM Cortex-A9 MPCore|Cortex-A9]] o dei [[System-on-a-chip|SOC]] [[Apple A5]] ed [[Apple A6]]▼
== Descrizione ==
L'architettura
L'idea che ha ispirato questa architettura è la constatazione che i progettisti hardware impiegavano molte risorse e molto tempo per realizzare metodi di accesso molto potenti che i programmatori in realtà ignoravano. Gli sviluppatori e i compilatori infatti tendevano a utilizzare le istruzioni e i metodi di indirizzamento più semplici ignorando tutti gli altri metodi e le istruzioni specializzate
▲Normalmente un processore RISC è dotato di alcune caratteristiche distintive; le principali sono:
▲* Codifica delle istruzioni di lunghezza fissa. Questo spreca spazio in memoria ma permette di realizzare una decodifica delle istruzioni rapida e semplice.
▲* Gestione omogenea dei registri. Questi sono accessibili a tutte le operazioni senza distinzione in modo da semplificare la realizzazione dei compilatori (sebbene spesso i processori siano divisi tra quelli per interi e quelli per le operazioni a virgola mobile).
▲* Metodi di indirizzamento semplici. I metodi di indirizzamento complessi possono essere emulati con semplici operazioni aritmetiche.
▲* Pochi tipi gestiti nativamente. Alcuni processori CISC, per esempio, possono gestire nativamente polinomi e numeri complessi, ma ben difficilmente questi tipi saranno gestiti da un processore RISC.
== Diffusione, utilizzo ed implementazione ==
▲* [[Architettura MIPS|MIPS]] utilizzato inizialmente da [[Silicon Graphics]] per i suoi computer e in seguito alla base di [[PlayStation]], [[PlayStation 2]], [[PlayStation Portable]] e [[Nintendo 64]]
▲* [[POWER]], utilizzato nelle sue mille varianti da [[Apple|Apple Inc.]] per anni nei suoi computer prima del passaggio all'architettura
▲* [[SPARC]] e UltraSPARC, utilizzato nei server Sun Microsystem.
▲* [[PA-RISC]] utilizzato per anni da Hewlett-Packard per alcuni suoi server.
▲* [[DEC Alpha]] prodotto da [[Digital Equipment Corporation|DEC]] e utilizzato su server e workstation.
▲* [[Architettura ARM|ARM]], utilizzato in [[Computer palmare|PDA]] come l'[[Apple Newton]] e altri. Le sue varianti sono incluse in moltissimi prodotti di consumo come il [[Game Boy Advance]], il [[Nintendo DS]], l'[[iPod]] e in molti telefoni cellulari, come alcuni [[
▲
▲L'idea che ha ispirato questa architettura è la constatazione che i progettisti hardware impiegavano molte risorse e molto tempo per realizzare metodi di accesso molto potenti che i programmatori in realtà ignoravano. Gli sviluppatori e i compilatori infatti tendevano a utilizzare le istruzioni e i metodi di indirizzamento più semplici ignorando tutti gli altri metodi e le istruzioni specializzate. Inoltre negli [[Anni 1980|anni ottanta]] il divario tra la velocità dei processori e delle memorie aumentava, perciò i progettisti iniziarono a studiare tecnologie che riducessero gli accessi alla memoria e aumentassero la velocità dei processori; tuttavia queste tecnologie erano molto difficili da implementare con metodi di accesso alla memoria complessi.
== Note ==
<references
== Voci correlate ==
Line 127 ⟶ 128:
* [[Architettura ARM]]
== Altri progetti ==
{{interprogetto|wikt=RISC|wikt_etichetta=RISC}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
* {{cita web|1=http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000-01/risc/risccisc/|2=RISC vs. CISC|lingua=en|accesso=6 ottobre 2010|dataarchivio=29 maggio 2010|urlarchivio=https://web.archive.org/web/20100529181055/http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000-01/risc/risccisc/|urlmorto=sì}}
* {{cita web|1=http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000-01/risc/whatis/index.html|2=What is RISC|lingua=en|accesso=6 ottobre 2010|dataarchivio=18 maggio 2010|urlarchivio=https://web.archive.org/web/20100518200926/http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000-01/risc/whatis/index.html|urlmorto=sì}}
{{Multimedia extensions}}
|