Reduced Instruction Set Computer (RISC) è un tipo o categoria di processore, o Instruction Set Architecture (ISA). Parlando in generale, una ISA è un mezzo con cui un processore comunica con il programmatore umano (anche se ci sono diversi altri strati formalmente identificati tra il processore e il programmatore). Un’istruzione è un comando dato al processore per eseguire un’azione. Un set di istruzioni è l’intera collezione di istruzioni per un dato processore, e il termine architettura implica un modo particolare di costruire il sistema che realizza il processore.
RISC si riferisce generalmente a una versione semplificata del suo predecessore, il Complex Instruction Set Computer (CISC). Agli albori dei processori, non esisteva un’identificazione formale conosciuta come CISC, ma il termine è stato coniato da allora per identificarli come diversi dall’architettura RISC. Alcuni esempi di architetture di set di istruzioni (ISA) di microprocessori CISC includono il Motorola 68000 (68K), il DEC VAX, il PDP-11, diverse generazioni dell’Intel x86, e l’8051.
Esempi di processori con architettura RISC includono MIPS, PowerPC, l’AVR di Atmel, i processori PIC di Microchip, i processori Arm, RISC-V, e tutti i microprocessori moderni hanno almeno alcuni elementi di RISC. La progressione dalle architetture a 8 e 16 bit a quelle a 32 bit ha essenzialmente forzato la necessità di architetture RISC. Tuttavia, ci volle un decennio prima che le architetture RISC iniziassero a prendere piede, principalmente a causa della mancanza di software che girasse sulle architetture RISC. Anche Intel ha avuto un impatto, dato che aveva i mezzi per continuare ad usare l’architettura CISC e non ha trovato la necessità di riprogettare da zero. L’architettura MIPS è stata una delle prime ISA RISC ed è stata ampiamente utilizzata per insegnare l’architettura RISC.
Un po’ di storia
Il primo chip integrato fu progettato nel 1958 da Jack Kilby. I microprocessori sono stati introdotti negli anni ’70, il primo commerciale è arrivato da Intel Corporation. All’inizio degli anni ’80 fu introdotta l’architettura RISC. Il design RISC è nato come una riprogettazione totale perché l’architettura CISC stava diventando più complessa. Molti attribuiscono a John Cocke di IBM il merito di aver ideato il concetto RISC. La storia ci dice che per ottenere un computer più veloce, ci furono alcuni importanti cambiamenti nell’architettura del microprocessore che divenne RISC, incluso un formato uniforme per le istruzioni e istruzioni facilmente pipelineabili. (Pipelining significa che il processore inizia ad eseguire l’istruzione successiva prima che l’istruzione attuale sia completata). Negli anni ’70, la memoria era costosa, quindi i programmi più piccoli erano un obiettivo.
Quali sono le differenze tra RISC e CISC?
La risposta breve è che il RISC è percepito da molti come un miglioramento rispetto al CISC. Non esiste un’architettura migliore, poiché architetture diverse possono semplicemente essere migliori in alcuni scenari ma meno ideali in altri. Le macchine basate su RISC eseguono un’istruzione per ciclo di clock. Le macchine CISC possono avere istruzioni speciali così come istruzioni che richiedono più di un ciclo per essere eseguite. Questo significa che la stessa istruzione eseguita su un’architettura CISC potrebbe richiedere diverse istruzioni per essere eseguita su una macchina RISC. L’architettura RISC avrà bisogno di più memoria di lavoro (RAM) rispetto alla CISC per mantenere i valori mentre carica ogni istruzione, agisce su di essa, poi carica quella successiva.
L’architettura CISC può eseguire un’istruzione, anche se più complessa, che fa le stesse operazioni, tutte in una volta, direttamente sulla memoria. Così, l’architettura RISC richiede più RAM ma esegue sempre un’istruzione per ciclo di clock per un’elaborazione prevedibile, il che è buono per il pipelining. Una delle principali differenze tra RISC e CISC è che RISC enfatizza l’efficienza in cicli per istruzione e CISC enfatizza l’efficienza in istruzioni per programma. Un processore veloce dipende da quanto tempo ci vuole per eseguire ogni ciclo di clock, da quanti cicli ci vogliono per eseguire le istruzioni e dal numero di istruzioni che ci sono in ogni programma. Il RISC ha un’enfasi sulle maggiori dimensioni del codice del programma (a causa di un set di istruzioni più piccolo, quindi più passi fatti in successione possono equivalere a un passo in CISC).
L’ISA RISC enfatizza il software sull’hardware. Il set di istruzioni RISC richiede di scrivere un software più efficiente (ad esempio, compilatori o codice) con meno istruzioni. Le ISA CISC usano più transistor nell’hardware per implementare più istruzioni e anche istruzioni più complesse.
RISC ha bisogno di più RAM, mentre CISC ha un’enfasi sulla dimensione minore del codice e usa meno RAM in generale rispetto a RISC. Molti microprocessori oggi possiedono un mix di attributi di tipo RISC e CISC, tuttavia, come ad esempio un’ISA di tipo CISC che tratta le istruzioni come se fossero una stringa di istruzioni di tipo RISC.
Alcune importanti differenze tra le architetture CISC e RISC sono elencate nella Tabella 1.