domenica 17 novembre 2013

CPU


La CPU( Central Processing Unit) o processore o microprocessore  è una tipologia di processore digitale general purpose ( cioè che non è dedicato ad un solo possibile utilizzo) la quale si contraddistingue per sovrintendere a tutte le funzionalità del computer basato sull'architettura di von Neumann.

È detta unità centrale di elaborazione perché coordina in maniera centralizzata tutte le altre unità di elaborazione presenti nel computer ovvero i chip di elaborazione delle varie periferiche interne (scheda audio, scheda video, scheda di rete, ecc).


 Attualmente la CPU è tipicamente implementata come microprocessore monolitico, viene montata sulla scheda madre, ed è collegata alle altre periferiche interne attraverso il chipset e le sue relative interfacce di collegamento.


Esistono diversi tipi di microprocessori, cioè:


  • microprocessore monolitico; è costituito da un unico circuito integrato.Questo importante traguardo è stato raggiunto nei primi anni settanta del secolo scorso grazie ai notevoli e sorprendenti passi avanti compiuti dalla microelettronica: soltanto due decenni prima non era neanche immaginato un processore interamente contenuto in un unico componente elettronico in grado di occupare lo spazio di pochi centimetri cubi. Attualmente la tendenza è di inserire, nel medesimo circuito integrato, molteplici CPU tutte identiche (tale circuito integrato è chiamato "processore multicore", con il termine Core si intende il "nucleo elaborativo" di un microprocessore. Questo infatti è costituito in realtà da 2 componenti principali: il core e il package che lo contiene).
  • microprocessore general purpose; è un microprocessore progettato per essere utilizzato nelle elaborazioni dati più varie. È quindi utilizzato come CPU nei computer general purpose, ma anche in altri compiti. Ad esempio, le periferiche che necessitano di grande potenza di calcolo, possono essere dotate di un proprio processore al fine di non gravare sul processore centrale. E spesso per tali periferiche vengono utilizzati microprocessori general purpose. Un esempio di periferiche in cui vengono utilizzati microprocessori general purpose sono le stampanti.
  • microprocessore special purpose; Un microprocessore special purpose è un microprocessore progettato per essere utilizzato in particolari elaborazioni dati. Un esempio di microprocessore special purpose è il microcontrollore. Molti microprocessori special purpose sono dotati di limitate possibilità di programmazione o non sono completamente programmabili. L'RCA 1802 era un microprocessore specializzato non perché fosse limitato nella programmazione, bensì perché era progettato per applicazioni spaziali e quindi aveva delle particolari caratteristiche. Il sistema venne definito a progetto statico dato che poteva variare la frequenza di funzionamento in modo arbitrario fino a raggiungere gli 0 Hz in modo da andare in stop totale.

                                                        

STRUTTURA



 La CPU nacque a seguito dell'unione di due processori che precedentemente erano sempre stati separti:

  • l' ALU (Arithmetic Logic Unit), è una tipologia di processore digitale che svolge operazioni di tipo aritmetico e logico. Presente sia nell'architettura di von Neumann che nella meno diffusa architettura Harvard l'ALU è tipicamente implementata come parte di un microprocessore monolitico. Le moderne CPU sono dotate di ALU molto sofisticate e un singolo microprocessore può contenere anche più ALU.
  • la CU (Control Unit), ha il compito di coordinare tutte le azioni necessarie per l'esecuzione di una istruzione o di insiemi di istruzioni. Inoltre è il componente che dà la possibilità al microprocessore di eseguire istruzioni diverse. Le azioni che coordinano i vari settori della CPU vengono dette micro-operazioni o micro-istruzioni. Un insieme di micro-istruzioni viene detto micro-programma.    
Inoltre, al suo interno troviamo anche:
  •  i registri Sono speciali locazioni di memoria interne alla CPU a cui è possibile accedere molto più rapidamente che alla memoria.  I registri sempre presenti sono: 
  1. il registro IP (Instruction Pointer) o PC (Program Counter), che contiene l'indirizzo in memoria della prossima istruzione da eseguire;
  2. il registro dei flag (una variabile booleana che può assumere solo due stati e che segnala se un dato evento si è verificato oppure no): questo registro contiene un insieme di bit, detti appunto flag, che segnalano stati particolari della CPU e alcune informazioni sul risultato dell'ultima operazione eseguita, ad esempio il flag "Overflow" indica se il risultato dell'operazione precedente era troppo grande per il campo risultato: 0 assenza di overflow, 1 overflow.

  •  I Bus, che sono canali di comunicazioni che collegano e permettono il "dialogo" tra i vari componenti della CPU. Essi a loro volta si dividono in:     
  1.  Bus Dati; è utilizzato per lo scambio di informazioni tra i vari dispositivi. È bidirezionale in quanto l' invio dei dati non è di sola appartenenza alla CPU.  
  2. Bus Indirizzi; è il bus unidirezionale attraverso il quale la CPU decide in quale indirizzo andare a scrivere o a leggere informazioni: sia le celle di memoria che le periferiche di Input/Output sono infatti divise in zone, ognuna delle quali ha un dato indirizzo. Dopo aver comunicato l'indirizzo tramite questo bus, la scrittura o lettura avviene poi tramite il bus dati. 
  3. Bus Di Controllo;  è un insieme di collegamenti il cui scopo è coordinare le attività del sistema. tramite esso, la CPU può decidere quale componente deve scrivere sul bus dati, quale indirizzo leggere sul bus indirizzi, quali celle di memoria devono scrivere e quali invece leggere, etc. La memoria e tutti gli altri componenti comunicano con la CPU attraverso un unico bus condiviso; questo significa che senza un controllo da parte della CPU si verrebbero a creare delle collisioni.




Inoltre bisogna dire che una CPU è un circuito digitale sincrono: vale a dire che il suo stato cambia ogni volta che riceve un impulso da un segnale di sincronismo detto clock, che ne determina di conseguenza la velocità operativa, detta velocità di clock: quindi il tempo di esecuzione di una istruzione si misura in cicli di clock, cioè in quanti impulsi di clock sono necessari perché la CPU la completi.

SET D'ISTRUZIONI 


Le istruzioni di una CPU (instruction set) sono semplicemente dei numeri, detti opcode o codici operativi: in base al loro valore l'unità di controllo intraprende delle azioni predefinite, come per esempio leggere la successiva locazione di memoria per caricare un dato, oppure attivare la ALU per eseguire un calcolo ecc. Per una persona, stendere programmi scrivendo direttamente gli opcode è estremamente noioso e incline all'errore; per questo motivo si utilizza l'assembly, che associa un simbolo mnemonico ad ogni istruzione della CPU e introduce una sintassi che permette di esprimere i vari metodi di indirizzamento in modo più intuitivo.
Una caratteristica importante dell'insieme delle istruzioni di una CPU è la sua ortogonalità: cioè il fatto che ogni istruzione che usi i registri possa usarli tutti indifferentemente (tranne quelli "speciali" come l'IP) e che nessun registro sia in qualche modo "privilegiato" cioè su di esso non si possono compiere operazioni particolari rispetto agli altri.  È stato dimostrato anche che, a parità di condizioni, un set di istruzioni ortogonali è più efficiente rispetto a uno non ortogonale.

 

CICLO DEL PROCESSORE


Tipicamente la CPU è l'Interprete del linguaggio macchina. Come tutti gli interpreti, si basa sul seguente ciclo:
  1. Acquisizione dell'istruzione (Instruction Fetch): il processore preleva l'istruzione dalla memoria, presente nell'indirizzo (tipicamente logico) specificato da un registro "speciale" ("speciale" opposto di "generico"), il PC.
  2. Decodifica (Operand Assembly): una volta che la word è stata prelevata, viene determinata quale operazione debba essere eseguita e come ottenere gli operandi, in base ad una funzione il cui dominio è costituito dai codici operativi (tipicamente i bit alti delle word) ed il codominio, consistente nei brani di microprogramma da eseguire.
  3. Esecuzione (Execute): viene eseguita la computazione desiderata. Nell'ultimo passo dell'esecuzione viene incrementato il PC: tipicamente di uno se l'istruzione non era un salto condizionale, altrimenti l'incremento dipende dall'istruzione e dall'esito di questa.
Questo ciclo elementare può essere migliorato in vari modi: per esempio, la decodifica di una istruzione può essere fatta contemporaneamente all'esecuzione della precedente e alla lettura dalla memoria della prossima (instruction prefetch) e lo stesso può essere fatto con i dati che si prevede saranno necessari alle istruzioni (data prefetch). La stessa esecuzione delle istruzioni può essere suddivisa in passi più semplici, da eseguire in stadi successivi, organizzando la unità di controllo e la ALU in stadi consecutivi, come delle catene di montaggio (pipeline). La pipeline più specificatamente è una tecnologia utilizzata nell'architettura hardware dei microprocessori per incrementare il throughput, ovvero la quantità di istruzioni eseguite in una data quantità di tempo, parallelizzando i flussi di elaborazione di più istruzioni. In questo modo più istruzioni possono essere eseguite "quasi contemporaneamente", ciascuna occupando ad un certo istante uno stadio diverso della pipeline.
Il problema di questo approccio sono le istruzioni di salto condizionato: la CPU non può sapere a priori se dovrà eseguire o no il salto prima di aver eseguito quelle precedenti, così deve decidere se impostare la pipeline tenendo conto del salto o no: e in caso di previsione errata la pipeline va svuotata completamente e le istruzioni in corso di decodifica rilette da capo, perdendo un numero di cicli di clock direttamente proporzionale al numero di stadi della pipeline. Per evitare questo i processori moderni hanno unità interne (“Branch prediction unit”) il cui scopo è tentare di prevedere se, data una istruzione di salto condizionato e quelle eseguite in precedenza, il salto dovrà essere eseguito o no.
Inoltre i processori possono implementare al loro interno più unità di esecuzione per eseguire più operazioni contemporaneamente. Questo approccio incrementa le prestazioni delle CPU ma ne complica notevolmente l'esecuzione, dato che per poter eseguire in modo efficiente più operazioni in parallelo la CPU deve poter organizzare le istruzioni in modo diverso da come sono organizzate dal programmatore.

8086 In Breve

 

L'8086 è il capostipite della famiglia dei microprocessori Intel con sigla x86 che successivamente si evolveranno con l'80286, 80386, 80486 ed il Pentium (P5), mantenendone la compatibilità. L'8086 è un microprocessore a 16 bit che può operar e anche su parole ad 8 bit, è contenuto in un package di 40 piedini, ad ognuno dei quali fa capo un determinato segnale. Le sue caratteristiche sono:
  •  bus Dati a 16 bit;
  • bus Indirizzi a 20 bit;
  • 14 registri a 16 bit di cui 4 utilizzabili come coppie ad 8 bit.;
  • può essere programmato con linguaggi ad alto livello, può effettuare aritmetica binaria;
  • alimentato a +5 Volt;
  • package di 40 piedini; 
  • set di 70 istruzioni di base. 
Esso è formato dalla BIU( Unità di interfaccia con il Bus) e dalla EU( Unità di esecuzione).
La BIU, il quale scopo è creare l'interfaccia tra il processore e il mondo esterno, si serve di:
  • 4 registri di segmento (CS, DS, SS, ES);
  •  un Program counter;
  • una coda di istruzione che permette il prefetching;
  • un sommatore di indirizzi;
  • un controllore del bus esterno;
  • un puntatore di istruzione (IP).
L'EU è responsabile della decodifica e dell'esecuzione di tutte le istruzioni ed è formata da:
  • 8 registri operativi (AX, BX, CX, DX, SI, DI, SP, BP);
  • 2 registri temporanei non accessibili al programmatore;
  • un registro di stato;
  • una A.L.U.; 
  • una unità di controllo.

FAMIGLIE DI CPU


Le CPU variano a seconda dell'architettura usata.

  • architettura di von Neumann e architettura Harvard:

nell'architettura di von Neumann i dati e le istruzioni risiedono nella stessa memoria (è dunque possibile avere codice automodificante). Questa architettura è la più comune, perché è molto semplice e flessibile.
nell' architettura Harvard i dati e le istruzioni risiedono in due memorie separate. Questa architettura può garantire prestazioni migliori poiché le due memorie possono lavorare in parallelo riducendo le alee strutturali, ma è ovviamente molto più complessa da gestire.
Entrambe le architetture sono architetture basate sui registri generali.


  • Architettura CISC e architettura RISC:

CISC è l'acronimo di Complex Instruction Set Computer. Tipicamente un processore di questo tipo implementa un numero relativamente scarso (una decina) di registri di uso generale, ed ha una unità di controllo microprogrammata: la logica del programma è memorizzata in una memoria veloce situata nella parte di controllo.Il set di istruzioni associato a CPU di tipo CISC è molto esteso e composto in genere di alcune centinaia di codici operativi diversi che svolgono funzioni anche molto complesse, fra cui sono caratteristici i trasferimenti memoria-memoria, assenti nei RISC; le istruzioni hanno lunghezza variabile e possono presentarsi in formati diversi, e sono necessari due o più cicli di clock per completare un'istruzione; il ridotto numero di registri interni obbliga questi processori a scrivere in memoria ogni volta che si verifica una chiamata di funzione, un context switch(cambiamento del processo correntemente in esecuzione) o che viene salvato un registro nello stack.
 RISC è l'acronimo di Reduced Instruction Set Computer. Il tipico set di istruzioni RISC è molto piccolo, circa sessanta o settanta istruzioni molto elementari (logiche, aritmetiche e istruzioni di trasferimento memoria-registro e registro-registro): hanno tutte lo stesso formato e la stessa lunghezza, e molte vengono eseguite in un solo ciclo di clock. La diretta conseguenza di tale scelta progettuale è che i processori RISC posseggono una unità di controllo semplice e a bassa latenza, riservando invece molto spazio per i registri interni: una CPU RISC ha di solito da un minimo di un centinaio ad alcune migliaia di registri interni generici, organizzati in un file di registri. Il fatto di avere un formato unico di istruzione permette di strutturare l'unità di controllo come una pipeline, cioè una catena di montaggio a più stadi.

Hyper-Threading

Hyper-Threading è il nome commerciale dato da Intel alla sua prima implementazione della tecnologia Simultaneous Multi-Threading utilizzata per migliorare le prestazioni dei propri processori. Essa venne utilizzata attivamente dalla società negli anni a cavallo tra il 2003 e il 2006. l'idea alla base era quella di migliorare le prestazioni dei processori sfruttando alcune tecniche di calcolo parallelo grazie alla duplicazione di alcune unità interne dei chip.

La tecnologia Hyper-Threading è stata presentata da Intel in un momento in cui i processori dual core non potevano ancora venire prodotti a prezzi ragionevoli in ragione sia dell'avanzamento tecnologico, sia del processo produttivo che nel 2003 era ancora quello a 130 nm, che non permetteva "fisicamente" la presenza di 2 core all'interno di un unico package.
l'idea alla base della tecnologia Hyper-Threading era quella di duplicare alcune unità di elaborazione all'interno dei microprocessori al fine di poter eseguire simultaneamente alcune operazioni, grazie a tecniche di multithreading. Si trattava, in un certo senso, di un tentativo di creare un processore di transizione tra i tradizionali single core e i successivi dual core, non inserendo 2 interi core all'interno di un unico package, ma duplicando solo alcune aree "sensibili" del singolo core.
Grazie all'Hyper-Threading un singolo core era comunque in grado di gestire più thread in contemporanea, quando le istruzioni di un thread rimanevano bloccate nella pipeline il processore procedeva ad elaborare un secondo thread al fine di mantenere le unità di elaborazione sempre attive.

VARI TIPI DI CPU


INTEL CORE I7



Modello         Core i7-2600 3.4 GHz

Tipo / Fattore
di forma             Intel Core i7 2600

Tecnologia
Multi-Core      Quad-Core

Calcolo a
64 bit               Sì

processori      1

Frequenza
di clock           3.4 GHz

Velocità Max    3.8 GHz

Socket
processore      LGA1155 Socket
compatibile    

Processo
di produzione   32 nm

Thermal
Design Power    95 W

Specifica
termica              72.6 °C

Scheda          Intel HD Graphics
grafica           with Dynamic Frequency
Integrata    

Frequenza
base               850 MHz

Slot                1 x processore -
compatibili     LGA1155 Socket

Prezzo          311,45 €


INTEL CORE I3



Modello                    Core i3-560 3.33 GHz

Tipo / Fattore
di forma                   Intel Core i3 560

Tecnologia
Multi-Core                 Dual-Core

Calcolo a 64 bit           Sì

Quantità processori        1

Frequenza di clock      3.33 GHz

Socket processore
compatibile                LGA1156 Socket

Processo di
produzione                 32 nm

Thermal Design
Power                      73 W

Slot compatibili           1 x processore -
                                   LGA1156 Socket

Prezzo                     141,25 €


INTEL CORE I5


modello                  Core i5-2400
                              3.1 GHz


Tipo / Fattore           Intel Core
di forma                   i5 2400

Tecnologia
Multi-Core               Quad-Core

Calcolo a
 64 bit                      Sì

Quantità
processori               1

Frequenza
di clock                   3.1 GHz


Socket processore
compatibile                 LGA1155 Socket

Processo
di produzione              32 nm

Thermal Design
Power                       95 W


Scheda grafica
integrata  Intel             HD Graphics

Frequenza base           850 MHz


Slot compatibili         1 x processore -
                                 LGA1155 Socket

Prezzo                   208,86 €



AMD PHENOM II X4 955



modello              Phenom II X4 955 3.2
                          GHz Black Edition

Tipo / Fattore
di forma                  AMD Phenom II X4 955

Tecnologia
Multi-Core              Quad-Core

Calcolo a 64 bit        Sì

Quantità
processori                1

Frequenza di clock   3.2 GHz

Socket processore
compatibile             Socket AM3

Processo di
produzione             45 nm

Thermal Design
Power                    125 W

Specifica
termica                   62 °C

Prezzo                  € 128,90


AMD A-Series APU


Modello                 AMD A-Series APU

Tipo/Fattore 
di forma                 AMD A8

Processo 
di produzione          32 nm

Calcolo a 
64 bit                      Sì

Quantità di 
processori              1

Frequenza 
di Clock                  3.6 GHz

Socket 
processore 
compatibile             FM2

Tecnologia 
Multi-Core            4

Scheda grafica     AMD Radeon
integrata               HD 7560D

Thermal Design
Power                   100 W


Prezzo                 € 82.60

2 commenti:

  1. dovresti fare una lista di cpu attualmente in commercio e relative caratteristiche tecniche

    RispondiElimina
    Risposte
    1. si prof ora volevo fare a livello generale... finito le archittetture CISC e RISC entro nei particolari delle varie CPU..

      Elimina