PDA

View Full Version : Come funzionano i processori???


pietrob911
06-05-2009, 18:34
Ciao a tutti. Guardando su Wikipedia, provando a informarmi su come funzionasse un processore, non ci ho capito molto, quindi vorrei che qualcuno mi spiegasse tutto con parole semplici. Mi interesserebbe sapere anche cosa sono e quanto influiscono sulle prestazioni cose come il Bus, il Front Side Bus, la memoria cache, ecc. E siccome a breve cambierò pc, vorrei sapere cosa guardare oltre al numero di cores e di Ghz per stabilire la velocità di un processore.

calabar
06-05-2009, 18:46
L'architettura dei processori è cosa piuttosto complessa, ed è quasi impossibile valutare un processore in base a quei dati, dato che non possono essere valutati singolarmente e non sono sufficienti per determinare la bontà di un processore.

La cosa migliore è che tu chieda (magari nella sezione delle configurazioni complete, se devi rinnovare tutto il PC) quale processore possa essere più adatto alle tue esigenze (sia in termini di utilizzo che di costi).

Per le prestazioni, puoi comunque farti un'idea guardando le numerose recensioni e comparative che si trovano in rete (e, naturalmente, su questo sito).

checo
07-05-2009, 11:04
Ciao a tutti. Guardando su Wikipedia, provando a informarmi su come funzionasse un processore, non ci ho capito molto, quindi vorrei che qualcuno mi spiegasse tutto con parole semplici. Mi interesserebbe sapere anche cosa sono e quanto influiscono sulle prestazioni cose come il Bus, il Front Side Bus, la memoria cache, ecc. E siccome a breve cambierò pc, vorrei sapere cosa guardare oltre al numero di cores e di Ghz per stabilire la velocità di un processore.

se vuoi imparare per cultura devi partire da una cpu semplice tipo 286 massimo e te la studi su qualche libro di sistemi delle superiori e da li leggendo articoli su internet arrivi ai giorni nostri e hai capito come funziona una cpu, non certo se la cpu x è migliore della y.

se è per prendere il pc nuovo guardati i bench e amen

franklar
07-05-2009, 11:44
Partiamo da dove tutto è iniziato... http://www.4004.com

buon divertimento :cool:

pietrob911
07-05-2009, 14:09
Ok, grazie

ranmamez
08-05-2009, 03:22
Senza entrare troppo nello specifico, ma andando a grandi linee per capire cos'è e come funziona una cpu, si potrebbe dire che è una sorta di calcolatrice, molto MOLTO avanzata e complessa, miniaturizzata e rinchiusa in un contenitore relativamente piccolo.
L'acronimo CPU significa Central Processing Unit, e come suggerisce l'acronimo stesso, è l'unità di elaborazione centrale, il cuore vero e proprio del computer. Tutte o quasi tutte le operazioni vengono eseguite da questo "microcervello" (definito così per estensione e comodità, infatti non ha praticamente niente in comune con un qualsiasi cervello biologico).
Una CPU è fisicamente costituita da migliaia (una volta) o milioni (attualmente, ma ancora per poco :D) di transistors, miniaturizzati ovviamente, ma anche condensatori, resistenze e componenti simili a quelli dell'elettronica industriale, tutti rigorosamente miniaturizzati, che vengono interconnessi in circuiti, miniaturizzati, disposti su un wafer di silicio (naturalmente ho semplificato moltissimo, la realtà è molto più complessa).
Tralasciando molte cose, una CPU è costituita, al giorno d'oggi, da una unità di calcolo di numeri interi (ALU se non ricordo male) e da una unità di calcolo in virgola mobile (FPU). Ho specificato "al giorno d'oggi" perché fino all'avvento del processore Intel 80486 (o i486 come denominato ufficialmente), l'unità in virgola mobile non era integrata nella CPU, ma era separata in un chip apposito, detto Coprocessore Matematico. Tale coprocessore era opzionale, in quanto che non molte applicazioni fino ad allora necessitavano di effettuare calcoli con elevata precisione, cosa che solo l'unità in virgola mobile permetteva. (A dire il vero non ricordo da che generazione di processori fu creato il coprocessore matematico, andando a naso dovrebbe essere dai 286 ma potrei sbagliarmi. Di sicuro con i 386 c'erano).
L'integrazione nella cpu ha permesso un incremento prestazionale elevato, perché il percorso che i dati dovevano fare dall'unità centrale all'unità coprocessore era praticamente azzerato, ovvero l'elemento latenza, che influisce sulle prestazioni, era notevolmente ridotto, per cui le prestazioni erano decisamente superiori ad un'accoppiata equivalente CPU + FPU separata.
Altra caratteristica che fu integrata ad un certo punto all'interno del microprocessore (termine italiano per indicare una cpu), è la cache, ovvero una quantità di RAM (per cui volatile) ridotta ma estremamente più veloce della RAM di sistema: da quando fu adottata la cache esterna (credo più o meno con i 486 stessi), fino ai pentium 1, si è notato che molte applicazioni (che riescono a sfruttarla) ne traggono un sostanziale vantaggio prestazionale. Integrarla nella cpu ha ottenuto lo stesso effetto dell'integrazione della FPU di cui sopra.
Nel corso degli anni come possiamo quindi notare, molte caratteristiche e funzioni che prima erano esterne alla cpu, vengono integrate nella stessa per aumentare l'efficienza e/o le prestazioni.
L'ultimo trend di integrazione nella cpu è il controller della memoria, che prima era esterno ed integrato nel chipset (nel northbridge per l'esattezza), mentre ora, a partire dagli AMD Athlon 64, è appunto integrato nella cpu. (Nota, Intel ha integrato il controller solo con i Core I7, il Core 2 non lo integra!).
Ma non ci sono solo integrazioni di caratteristiche per aumentare le prestazioni, ci sono anche vari altri elementi.
Per es. fino a non troppi anni fa, erano in voga specialmente in ambito professionale e server, sistemi a doppia CPU, che permettevano di ottenere determinati vantaggi: la potenza di calcolo non diventava doppia di colpo come si potrebbe immaginare, ma di sicuro aumentava, inoltre si potevano distribuire determinati compiti, dividendoli tra le due cpu. Ora invece abbiamo processori che integrano due (o più) cores, che praticamente sarebbe come avere 2 (o più) cpu nel proprio computer. E quindi questo non è più limitato solo all'ambito professionale o server, ma è disponibile per l'ambito più comune, ovvero consumer, o più comunemente detto desktop.
Una tecnologia che "emulava" una doppia cpu (o doppio core se vogliamo) è stata implementata ad un certo punto nei Pentium 4: si tratta dell'Hyper Threading. I P4 HT avevano una circuiteria che permetteva di simulare la presenza di due core fisici (i core dei p4 ht sono stati definiti poi "core logici"), permettendo di ottenere un certo miglioramento sulle applicazioni che sfruttano il multithreading. Tale tecnologia non ha avuto molto successo all'epoca, perché le applicazioni che la sfruttavano erano veramente poche se non quasi nulle: le cpu desktop fino ad allora erano sempre state monocore, per cui tutte le applicazioni erano sviluppate per quel tipo di cpu. Solo di recente, con l'arrivo delle cpu multicore, si sono cominciate a vedere programmi (o anche videogiochi) che sfruttano più di un'unità di elaborazione, ma quella tecnologia è stata abbandonata... fino all'arrivo dell'attuale Core i7 di Intel. In questo attualissimo e superprestante processore (naturalmente in questo periodo storico :D), oltre a implementare 4 core fisici, è tornata la tecnologia HT, cosicché abbiamo 8 core logici (ma sempre 4 fisici) che, speculando un po', permettono di mettersi al riparo da eventuali applicazioni (o giochi) future consuma-cpu. In altre parole: saranno sicuramente sfruttati molto di più in futuro, con l'uscita di software multithread ottimizzato.
Altra caratteristica di funzionamento di una cpu è la frequenza: cos'è questa onnipresente frequenza che leggiamo in ogni specifica tecnica di una cpu?
Non è semplicissimo spiegare a cosa serve la frequenza in una cpu: in termini veramente molto semplicistici, è la velocità in cui i transistor al suo interno possono cambiare dallo stato logico "0" allo stato logico "1". Per una descrizione un po' più approfondita, il rimando a wikipedia, sia italiana che inglese è praticamente d'obbligo:
http://it.wikipedia.org/wiki/Velocit%C3%A0_di_clock
http://en.wikipedia.org/wiki/Clock_rate
Generalmente, quindi, una CPU con frequenza più alta è più performante di una con frequenza più bassa, ma questo non è sempre vero: è vero per CPU della stessa classe, anzi proprio della stessa architettura, ma non tra CPU con architettura diversa.
Per fare un esempio, una CPU dual core Intel Core 2 (architettura "Core" se non mi ricordo male) a 2000 MHz è più performante di una CPU dual core Pentium D (architettura "Netburst", precedente a "Core") a 3000 MHz. La frequenza è più alta in quest'ultimo, ma l'architettura più avanzata e notevolmente più efficiente nel Core 2, permette di ottenere prestazioni più elevate, perché riesce a fare più operazioni ad ogni ciclo di clock (ovvero ogni transizione da "0" ad "1").

Infine, non c'è bisogno di sapere molto sulle cpu per sapere cosa acquistare, però qualche informazione *DI BASE* come ho qui elencato in questo papiro :sofico:, possono essere comunque utili.
Per orientarsi grosso modo nel mercato delle cpu, è necessario stabilire cosa si ha bisogno di fare con il proprio computer. Successivamente, è di sicuro aiuto chiedere in giro in qualche forum specifico, come questo, specificando per l'appunto le proprie esigenze. Poi se si ha tempo si può dare un'occhiata a recensioni ed eventuali benchmark, cercando quelli relativi alle applicazioni che interessano.
Poi, come criterio generico, si può dire a grandi linee che se devi fare poco, è meglio spendere poco, e viceversa: per es. per applicazioni base, come web browsing, emailing, uso di applicativi da ufficio più comuni (word processor e foglio di calcolo), eventualmente p2p e un po' di multimedialità (vedersi qualche volta un film e ascoltare musica, anche spesso), è inutile prendere una cpu che costa svariati biglietti da 100 euro, con relativa spesa per il resto del sistema: in questo caso basta una cpu entry level, e il resto ovviamente relazionato, magari per quanto riguarda la memoria RAM, visto che ora costa poco, è meglio non scendere sotto i 2 Gb totali, dividendola in 2 banchi da 1 Gb, che consente di tenere le prestazioni alte pur rimanendo con costi bassi. Oltre a spendere poco, o per meglio dire il giusto, consente anche un risparmio energetico, perché di sicuro una cpu entry level consuma molto meno di una top di gamma.
Viceversa per uso pesante, come video editing e/o encoding, gaming, rendering 3d (amatoriale o professionale), e varie altre applicazioni high-level che ora non mi sovvengono, ci si può orientare su cpu di alto livello (e costo), naturalmente basandosi sulla propria disponibilità finanziaria. In genere si consiglia un sistema equilibrato, ma nessuno ci vieta di sbilanciare la spesa verso un componente piuttosto che verso un altro, a seconda della propria esigenza. Per dire, se uno prevede che giocherà parecchio, meglio spendere un po' di più su una scheda video ad altissime prestazioni che su una cpu superpotente. Se invece si prevede un uso più professionale che non comprende il rendering 3d, spendere di più per la cpu è praticamente d'obbligo.
E tutto questo senza considerare l'ambito overclocking, di cui non ne parlo altrimenti divento prolisso (cosa? è già un papiro questo? :read: ehm, be' in effetti... :Prrr:)

mrburns33
08-05-2009, 16:29
Bellissima spiegazione Ranma :)

schumifun
09-05-2009, 00:10
bisogna spiegare anche il problema di avere un sistema sbilanciato, io però te lo spiego cosi:
scheda video ultra potente, processore scadente
scheda video: allora mo dobbiamo fare sti calcoli, scheda madre? ci sei?
Scheda madre; si dimmi...
Scheda video: dici al processore che si devono fare ste cose qua
Scheda madre: ok, processore..... processoreeeeee
Cpu: che c'è sto dormendo!!!!
Scheda madre: COSA!?!
cpu: dimmi forza...
SM: fai qua
Cpu: ok............
SM: fatto?
CPU::ronf:
:Prrr:

ranmamez
09-05-2009, 05:31
bisogna spiegare anche il problema di avere un sistema sbilanciato, io però te lo spiego cosi:
[cut]
CPU::ronf:
:Prrr:
:rotfl:
Si, hai ragione anche te, ma naturalmente intendevo *leggermente* sbilanciato verso uno o l'altro componente, altrimenti si è cpu o gpu limited nei casi che servono/sono in esame ;)

CaFFeiNe
09-05-2009, 13:10
ATTENZIONE QUESTE INFORMAZIONI SONO NETTAMENTE SUPERIORI ALL'UTILIZZO "sapere cosa acquistare"

se vuoi sapere veramente come funziona un processore, non posso che consigliarti il mio libro del corso di architettura, che poi è quello piu' conosciuto al mondo
patterson & hennessy
struttura, organizzazione e progetto dei calcolatori

l'architettura studiata è quella MIPS (per intenderci l'architettura usata per processori fino alla playstation 2)
--------------------------------------------

Informazioni piu' pratiche sui processori

purtroppo non esiste un fattore determinante per la potenza di un processore
"solitamente" il numero di core e di frequenza A PARITA' DI ARCHITETTURA(non intesa come architettura x86, ma come architettura costruttiva), sono determinanti....
non si puo' invece paragonare ad esempio
un processore amd 4 core e xxxx di frequenza con un intel con 4 core e xxxx di frequenza...
per dirti, fino ai phenom1 di amd intel con i core2 aveva un IPC (instructions per clock, cioe' quante istruzioni per ciclo di clock[frequenza] il processore riesce ad elaborare) molto superiore a quello di amd, ora invece sono praticamente pari con i miglioramenti di phenomII... (dato che parliamo di IPC, la frequenza non ci interessa come metro)

poi c'è la cache ad esempio che è la memoria che il processore usa "all'istante" e mentre nel primo livello sono conservate i registri, il secondo viene utilizzato come memoria di immagazzinamento istantaneo... quest'ultima è molto piu' veloce della ram, quindi di solito una quantita' maggiore, da vantaggi visibili, ma questo non è sempre vero... gli athlon64 in alcuni casi avevano meno cache dei pentium4 e dei pentiumD eppure andavano meglio.... è quindi un valore determinante, sempre A PARITA' di ARCHITETTURA, e non è neanche detto, dipende infatti anche da come e programmato il software... diciamo che in un 40-50% dei casi di oggi, puo' portare benefici....

l'fsb (termine scorretto, essendo fsb il termine che intel usa per chiamare IL SUO bus[e non piu' nei processori core]) non è altro che "l'autostrada" che collega il processore e il chipset(e la memoria quindi e anche il resto)...
cosi' come il pci-ex è la strada che collega scheda video(o qualunque cosa usi il pci-x) e scheda madre, e cosi' via.... questi si chiamano BUS, per dirti anche l'USB è un bus...
http://it.wikipedia.org/wiki/Bus_(informatica) qui trovi buone informazioni
questo, raramente è un fattore determinante delle prestazioni generiche... solitamente il bus di quel processore è piu' che sufficiente(spesso molto piu') a far transitare tutti i calcoli di quel processore, ci sono pero' situazioni in cui a parita' di architettura si trae un certo vantaggio da un bus piu' alto, ma si parla di casi inferiori al 30%

la frequenza... gia' ti ha detto anche ranma cosa indica, e te l'ho rispiegato prima(i cicli di clock etc)... solitamente la frequenza viene calcolata dal bus base moltiplicato dal moltiplicatore, non ti spiego tutto, ma ti basti sapere che ad esempio 3,0ghz sono composti ad esempio da un bus di 300 moltiplicato x10 dal moltiplicatore, il 300 è il bus di cui ti parlavo prima (che poi puo' essere quad pumped etc, ma non ci interessa)



quindi cosa ne concludiamo?
che l'unico modo per valutare quale processore conviene al proprio uso rispetto ad un'altro, sono le prove pratiche... ma non avendo miliardi da spendere, dobbiamo ringraziare che esista internet...
perchè non esiste un fattore TOTALE che indichi le prestazioni....

un esempio classico sono i dual core VS i quad core
questi ultimi di solito viaggiano a frequenza meno elevata dei dual (cosa ormai non piu' vera), quindi sono meno avvantaggiati nelle applicazioni che non sfruttano i 4 core... e costano solitamente di piu'
dall'altro lato, se ad esempio tu facessi uso massiccio di video encoding, trarresti vantaggi SOSTANZIALI dal raddoppio dei core, eseguendo questo tipo di programmi, calcoli che si adattano molto bene alla parallelizzazione...

ad esempio nei giochi odierni, è quasi inutile, perchè i calcoli piu' pesanti, sono gia' parallelizzati per i tanti microcore integrati nelle schede grafiche... pero' si spera che in futuro anche i calcoli di intelligenza artificiale, e gli stessi calcoli che ora vengono effettuati dal singolo core, si riescano a distribuire piu' uniformemente tra i vari core.... al giorno d'oggi sono pochissimi i giochi in cui si notano differenze tra 2,3 o 4 core
ovviamente a pari frequenza, un quad core e un dual, avranno pari prestazioni nei software ottimizzati fino allo sfruttamente di due core... dai due in su, non c'è storia... il quad vince, ma non sempre (per farti un esempio, l'amd 720 x3(tricore), ha una frequenza maggiore dell'intel q6600 che ha 4 core, e in alcune applicazioni che usano i quad core, riesce a stare pari o battere il q6600, grazie a 400mhz in piu' su ogni core)

per semplificarti tutto...
a meno che non vuoi farne uno studio, o una passione vera, in caso di bisogno di informazioni, accontentati di informarti in via privata, tramite test e benchmark, sul processore piu' adatto alle tue situazioni (ad esempio se fai uso di video encoding, vedi in questi test, quale processore per cio' che vuoi spendere se la cava meglio, se fai un uso generale, vedi quanti piu' test etc etc)


spero di aver completato le gia' ottime informazioni di ranma,aggiungendo un appendice ad ogni valore ;) e di averti chiarito qualunque altro eventuale dubbio potessi avere

Matrixbob
09-05-2009, 13:16
Un bel libro di architettura degli elaboratori come quello di Andrew S. Tanenbaum o un/due corsi universitari al riguardo, IMHO è l'unico modo per capire pienamente.

Li potrai vedere esercizi che ti dimostreranno che le cose vanno bene dimensionate e che non sempre + cache o cache di dimensioni più grandi equivalgono a prestazioni migliori.

al3x_.1992
09-05-2009, 13:18
bisogna spiegare anche il problema di avere un sistema sbilanciato, io però te lo spiego cosi:
scheda video ultra potente, processore scadente
scheda video: allora mo dobbiamo fare sti calcoli, scheda madre? ci sei?
Scheda madre; si dimmi...
Scheda video: dici al processore che si devono fare ste cose qua
Scheda madre: ok, processore..... processoreeeeee
Cpu: che c'è sto dormendo!!!!
Scheda madre: COSA!?!
cpu: dimmi forza...
SM: fai qua
Cpu: ok............
SM: fatto?
CPU::ronf:
:Prrr:

:rotfl: :rotfl: :rotfl: :rotfl:

CaFFeiNe
09-05-2009, 13:30
Un bel libro di architettura degli elaboratori come quello di Andrew S. Tanenbaum o un/due corsi universitari al riguardo, IMHO è l'unico modo per capire pienamente.

Li potrai vedere esercizi che ti dimostreranno che le cose vanno bene dimensionate e che non sempre + cache o cache di dimensioni più grandi equivalgono a prestazioni migliori.

beh io gliel'ho detto che sarebbe bene....
ma non è l'unico modo ;) dato che non ha chiesto di progettare una cpu, o di sapere cosa sia una macchina a stadi o la differenza tra control unit ed alu ;)
penso che dalle nostre spiegazioni abbia capito che non esistono metri di valutazione totale ;)


postilla al post precendente:
quello che ti è stato spiegato è solo in ambito hardware ;)
il tempo di esecuzione dell'algoritmo è forse un valore molto piu' iumportante, dato che puo' essere molto piu' veloce un algoritmo fatto bene su una macchina piu' lenta, che uno fatto male su una piu' veloce
(un classico esempio è la differenza tra i prodotti "embedded" cioe' chiusi, e quelli "aperti".... dato che nei prodotti embedded c'è un enorme ottimizzazione degli algoritmi a sfruttare tutte le potenzialita' di quella macchina, essendo sempre lo stesso hardware ;) )

Mercuri0
09-05-2009, 20:10
E siccome a breve cambierò pc, vorrei sapere cosa guardare oltre al numero di cores e di Ghz per stabilire la velocità di un processore.
Invece di guardare numero di core e ghz, basta guardare le recensioni in giro per la rete ;)

Inoltre, se anziché guardare solo i grafici le leggi pure, alcuni siti evidenziano anche le differenze di prestazioni in relazione agli aspetti tecnici che hai citato, quando questi sono rilevanti ai fini della review. Che di solito sono quello che interessa all'utente.

franklar
09-05-2009, 20:54
Architetture dei calcolatori. Metodi di valutazione e di progetto [Hennesssy - Pattersson]

Libro vecchiotto ma sicuramente aiuta a capire molte cose, e non è complicatissimo.

CaFFeiNe
09-05-2009, 21:33
Architetture dei calcolatori. Metodi di valutazione e di progetto [Hennesssy - Pattersson]

Libro vecchiotto ma sicuramente aiuta a capire molte cose, e non è complicatissimo.


che poi è fondamentalmente se non ricordo male la versione piu' teorica di quello che uso io ;)

cmq penso che la mips sia una delle piu' "pratiche" per imparare ;)

ranmamez
10-05-2009, 04:26
spero di aver completato le gia' ottime informazioni di ranma,aggiungendo un appendice ad ogni valore ;) e di averti chiarito qualunque altro eventuale dubbio potessi avere
Grazie CaFFeiNe, mi fai onore :ave: :cincin:

Edit: ho appena scoperto che i coprocessori matematici esistevano sin dal 8086, infatti venivano denominati con la stessa sigla del processore d'appartenenza ma con l'ultima cifra cambiata in 7: 8087, 80187, 80287 e 80387.
Esistono inoltre gli 80487 per le versioni di 486 senza coprocessore: si tratta delle versioni -sx ed -sl, e, stando a questa (http://www.cpu-world.com/CPUs/80487/index.html) pagina, disabilita completamente il 486 sx (o sl) in quanto che il 487 non è altro che un 486 con coprocessore integrato.

serbring
11-05-2009, 00:43
....

la frequenza... gia' ti ha detto anche ranma cosa indica, e te l'ho rispiegato prima(i cicli di clock etc)... solitamente la frequenza viene calcolata dal bus base moltiplicato dal moltiplicatore, non ti spiego tutto, ma ti basti sapere che ad esempio 3,0ghz sono composti ad esempio da un bus di 300 moltiplicato x10 dal moltiplicatore, il 300 è il bus di cui ti parlavo prima (che poi puo' essere quad pumped etc, ma non ci interessa)



mi potresti spiegare in pratica il perchè la frequenza moltiplicata per il valore del moltiplicatore? Cosa fà nello specifico il moltiplicatore?

CaFFeiNe
11-05-2009, 01:08
mi potresti spiegare in pratica il perchè la frequenza moltiplicata per il valore del moltiplicatore? Cosa fà nello specifico il moltiplicatore?

il moltiplicatore nello specifico, moltiplica la frequenza di clock interna del processore verso l'esterno....non saprei spiegartelo in parole piu' semplici....


edit: ho dato un occhiata in giro, wikipedia inglese estende un po' meglio il mio concetto, ma neanche tanto...
http://en.wikipedia.org/wiki/Clock_multiplier

gabi.2437
11-05-2009, 16:21
Uhm un conto è studiare come funzionano i processori

Un conto è "mi compro il pc nuovo, qual è il processore migliore?"