Reduced instruction set computer: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Il contesto prima dell'introduzione: Aggiunto il collegamento a "Registri hardware" |
m →Le prime evoluzioni: Ingrandito l'immagine relativa all'esecuzione delle istruzioni in un microprocessore con pipeline |
||
(11 versioni intermedie di 4 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]]]]
I più comuni processori RISC sono [[Atmel AVR|AVR]], [[PIC (microcontrollore)|PIC]], [[Architettura ARM|ARM]], [[DEC Alpha]], [[PA-RISC]], [[SPARC]], [[Architettura MIPS|MIPS]], [[RISC-V]], [[POWER]] e [[PowerPC]].
Line 12 ⟶ 14:
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 22 ⟶ 24:
[[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 70]], ricercatori dell'[[IBM]] e di progetti analoghi dimostrarono che la maggior parte dei modi di indirizzamento non veniva utilizzato nei programmi. Questo era dovuto alla diffusione dei compilatori che, sostituendosi all'ottimizzazione a basso livello applicata dai programmatori, ignoravano i modi di indirizzamento più potenti per concentrarsi su quelli semplici. I compilatori di allora erano in grado di gestire solo le caratteristiche più semplici dei processori anche perché, all'epoca, la teoria dei compilatori era solo agli inizi. Comunque il mercato si stava muovendo con rapidità verso l'utilizzo sempre più massiccio dei compilatori, dato che i linguaggi ad alto livello permettevano di realizzare programmi con rapidità riusando il codice in modo efficiente.
Line 40 ⟶ 43:
=== Le prime evoluzioni ===
Nel frattempo, gli ingegneri trovarono alcuni metodi e tecnologie migliori per incrementare la capacità dei processori senza aumentare la frequenza. All'inizio degli [[anni 1980]] era diffusa l'idea che l'architettura avesse raggiunto il suo limite teorico di velocità. Si riteneva che nuovi incrementi di prestazioni si sarebbero ottenuti solamente grazie ai miglioramenti nei materiali semiconduttori o all'aumento di frequenza. Permettendo transistori più compatti, avrebbero permesso di innalzare la frequenza di funzionamento. Molti sforzi furono rivolti verso il [[calcolo parallelo]] e verso metodi di collegamento rapidi. Inoltre, 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.
[[File:Fivestagespipeline.
▲[[File:Fivestagespipeline.png|thumb|upright=1.2|Esecuzione delle istruzioni in un microprocessore con pipeline]]
Le prime novità si registrarono nella progettazione di nuove [[pipeline dati]]. In una pipeline l'istruzione viene suddivisa in sotto operazioni elementari, che vengono svolte in sequenza 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.
Altra strategia per incrementare le prestazioni era la creazione di più unità funzionali che lavorassero in parallelo. Per esempio un processore con due unità aritmetiche può lavorare in parallelo su due istruzioni di somma raddoppiando le prestazioni. Questa replicazione delle unità funzionali combinate con le pipeline portò alla realizzazione di processori [[superscalare|superscalari]] in grado di eseguire più di un'operazione per ciclo di clock. Queste nuove idee avevano lo svantaggio di richiedere molti transistor per essere implementate.
I RISC furono inizialmente avvantaggiati dalla semplicità di progetto, e il parco dei transistor lasciava molto spazio libero nel processore per poter implementare queste tecniche. I CISC, invece, con la loro architettura più complessa, si trovarono ad implementare con maggior difficoltà queste idee, anche perché il loro ampio set di istruzioni, e i molti modi di indirizzamento rendevano più complesso implementare una pipeline rispetto a un classico processore RISC. I primi RISC avevano prestazioni inferiori agli equivalenti CISC, ma i processori RISC colmarono presto il divario e all'inizio degli [[anni 1990|anni 90]] superavano i processori CISC praticamente in ogni campo. Oltre a considerazioni di carattere prestazionale, il fatto di dedicare pochi transistor al core vero e proprio del processore permetteva al progettista di un processore RISC un approccio molto flessibile.
Con i molti transistor liberi si poteva per esempio:
* Aumentare il numero di registri presenti
* Incrementare il parallelismo interno del processore
Line 56 ⟶ 58:
* Offrire processori a basso consumo per applicazioni portabili.
* 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 viste dalla cache del processore. Questo impedisce al [[codice automodificante]] di funzionare su questi processori.
Line 97 ⟶ 98:
L'architettura CISC prevede un set esteso di istruzioni con metodi di indirizzamento complessi. Una definizione semplicistica dei microprocessori RISC parla di microprocessori con un set di istruzioni ridotto (semplificato) rispetto a quello dei classici processori CISC. La definizione attualmente più diffusa in ambito informatico parla di architettura load-store dato che le architetture RISC permettono di accedere alla [[memoria (informatica)|memoria]] unicamente tramite delle istruzioni specifiche (''load'' e ''store'') che provvedono a leggere e scrivere i dati nei [[registro (informatica)|registri]] del microprocessore, mentre tutte le altre istruzioni manipolano i dati contenuti all'interno dei microprocessori. Nei microprocessori CISC è l'esatto opposto, praticamente tutte le istruzioni possono accedere ai registri o alla memoria utilizzando [[Metodo di indirizzamento|metodi di accesso]] anche molto sofisticati.
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).
Line 106 ⟶ 108:
== Diffusione, utilizzo ed implementazione ==
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]], dalla [[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 [[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 [[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 e 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]] e [[Apple A6]].
== Note ==
<references
== Voci correlate ==
Line 126 ⟶ 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/
* {{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}}
|