prof. Nunzio Brugaletta | PC inside |
Le prime CPU avevano una architettura semplice. Mano a mano che le esigenze elaborative aumentavano, si richiedevano esigenze di calcolo superiore e si cercò, e si cerca tuttora, di studiare il modo come aumentare la potenza dei nuovi processori.
In linea generale si può dire che l'evoluzione dei processori si è sviluppata su tre direttive:
RISC e CISC. Il tentativo di realizzare CPU sempre più potenti ha portato, inizialmente, a implementare istruzioni sempre più complesse che avvicinassero il linguaggio macchina a un linguaggio ad alto livello. Per esempio per tradurre più semplicemente una istruzione del tipo a=b+c, si mise a disposizione un op-code che era in grado, in un unica istruzione, di effettuare un operazione simile, fornendo gli indirizzi delle locazioni di memoria corrispondenti alle variabili specificate. Questa operazione era poi, dall'hardware, scomposta in altre più elementari che portavano nei registri i dati, effettuavano la somma e riportavano in memoria il risultato. Le istruzioni diventavano più complesse e si allungavano i cicli di clock necessari per eseguire l'istruzione. Un gruppo di ricercatori propose un approccio diverso: dotare i processori di istruzioni semplici che potessero essere eseguite in un unico ciclo di clock. Il programma sarebbe stato più lungo ma sarebbe stato eseguito più velocemente: nacquero i processori ad architettura RISC (Reduced Instruction Set Computer) in contrapposizione all'altro tipo di architettura che prese il nome CISC (Complex Instruction Set Computer).
L'esecuzione di una operazione di somma, in linguaggio macchina, nei due tipi di architettura, usando un linguaggio simbolico, supponendo che alla variabile a corrisponda l'indirizzo di memoria 1000 e che alla variabile b corrisponda 1001, si potrebbe esprimere:
Operazione |
CISC |
RISC |
---|---|---|
a = a + b |
Somma 1000 1001 |
|
L'approccio di tipo CISC tende a demandare all'hardware la risoluzione delle operazioni più semplici, include operazioni complesse multi-clock, tende a far risparmiare memoria.
L'approccio di tipo RISC sottolinea l'aspetto software, include operazioni semplici da svolgere in un unico ciclo di clock, produce codice più lungo.
Per un po' di tempo ci fu una contrapposizione netta fra i due approcci finché Intel pose fine alla disputa utilizzando, dal 486, un approccio diverso: le CPU contengono un piccolo processore RISC per l'esecuzione delle istruzioni più comuni e semplici; quelle meno comuni vengono interpretate nel modo CISC.
Pipelining. Un modo per accelerare il funzionamento dei processori è quello di aumentare la velocità del clock, ma c'è un limite tecnologico oltre al quale non si può andare. Pertanto i ricercatori si rivolsero alla ricerca di altre soluzioni. La soluzione adottata consiste nel parallelismo: fare eseguire dal processore più operazioni contemporaneamente. Si tratta, in breve, di scindere il ciclo fetch-decode-execute in piccole parti sovrapponibili: quando una parte esegue il primo stadio di una istruzione e passa al secondo, ci sarà un'altra parte che comincia l'esecuzione del primo stadio dell'istruzione successiva. In questo modo se, per esempio, si suddivide il ciclo in 3 stadi (fetch, decode, execute), a partire dal terzo stadio si avrà il completamento di una istruzione per ogni stadio.
Le CPU moderne utilizzano molti più stadi dei 3 dell'esempio precedente: il Pentium 4 ne utilizza da 20 a 30.
Multi Core. Un altro modo utilizzato per aumentare le prestazioni di un processore, quando l'aumento della velocità del clock diventa complicato da realizzare, è quello di portare il parallelismo anche a livello hardware: due CPU indipendenti vengono assemblate assieme in un unico pacchetto in modo da lavorare assieme, eseguendo istruzioni diverse, all'esecuzione dello stesso programma. Si tratta dei cosiddetti processori dual core cioè processori con due nuclei (due core). Oltre ai dual core, stanno cominciando a fare sentire la loro presenza anche processori quad core: due dual core che lavorano assieme.
http://ennebi.solira.org | ennebi@solira.org |