Premesso che solo io posso essere così pazzo da postare a quest'ora ma vabbè...
Spesso sento dire dalle persone "Wow io ho un super mega ultra computer con processore a 7 core e velocità 4.3 GHz, l'ho pagato solo 3000 euro!!" (<-- ironia)
Bè io di solito quando sento queste cose rispondo "O sei un idiota o mangi sassi".
Prima di spiegare il perchè faccio una sintesi veloce sui componenti di un processore.
Il processore è composto principalmente da:
-ALU (unità che si occupa dei calcoli quali addizione, moltiplicazione, divisione)
-FPU (affiancata alla ALU, fa calcoli in virgola mobile (float))
-Registro istruzioni (tiene memoria le istruzioni da eseguire, è composto da 2 parti, ma non voglio andare troppo nello specifico)
-Decoder istruzioni (da in pasto le istruzioni alla ALU)
-Program counter (diciamo chè è come una lista della spesa delle cose da fare)
-Stack pointer (discorso davvero molto ampio, vi basta sapere che ci finiscono le istruzioni in "attesa", detto proprio banalmente)
-Le memorie (dati e programmi)
-I flag (di solito sono 16, o almeno, ora dovrebbero essere 16, poi può cambiare da processore a processore, svolgono vari funzioni, in linea di massima memorizzano qualcosa che è di "supporto" a un altro componente)
Tutto ciò è collegato dai vari bus (dati, indirizzi, controllo).
Ora, i core cosa sono? Cosa si intende quando si dice che un computer ha 5 core?
Vi siete mai chiesti un processore quante cose alla volta sa fare? 1. E perchè? Perchè la ALU (cuore del processore) è una sola e sa fare solo una cosa alla volta.
Ora però abbiamo processori a 2,3,5,7,8,12,16 core e così via, ma quante cose sanno fare alla volta?
Detto banalmente: 1 core = 1 ALU | 2 core = 2 ALU ... etc.
Ma quindi un computer con 7 core a rigor di logica dovrebbe fare 7 cose alla volta e quindi andare 7 volte più veloce, ma di fatto non è così. E perchè?
Semplice, tutto ciò che ho detto fin'ora è legato all'hardware e quindi alla parte fisica. Dipende tutto da come si fanno collaborare le varie parti a livello software.
Prima un programma in asm veniva scritto come noi siamo abituati a vedere scritto un qualsiasi programma. Una istruzione per volta. E adesso? Adesso che io al programma gli posso far far 2 o 3 o 4 o 7 o 16 e così via cose per volta, è cambiato qualcosa nel modo di programmare? La risposta è NO.
Ed è QUA il problema! Il problema è che bisogna iniziare a usare tecniche di programmazione più avanzate, non siamo più allo Z80 che sapeva fare solo somma e sottrazione da solo!
Quella che si dovrebbe usare oggi è la cosiddetta "programmazione parallela". Cioè i processori dovrebbero lavorare insieme, collaborando e non indipendentemente. Solo così sfrutterei a pieno le potenzialità del mio processore.
E questa è una cosa molto importante secondo me da sottolineare, diffondere, ma soprattutto, da applicare.
Altra cosa su cui volevo far chiarezza è la velocità dei processori.
Secondo voi un processore con potenza a 4.3 GHz, va davvero a 4.3 GHz?
No. E il motivo è molto semplice. Il processore lavora a stretto contatto con la RAM, la GPU e tutti gli altri componenti del computer.
Memoria Standard Clock Frequenza I/O
DDR2 667 PC2-5300 166 MHz 333 MHz
DDR2 800 PC2-6400 200 MHz 400 MHz
DDR3 800 PC3-6400 100 MHz 400 MHz
DDR2 1066 PC2-8500 266 MHz 533 MHz
DDR3 1066 PC3-8500 133 MHz 533 MHz
DDR3 1333 PC3-10600 166 MHz 667 MHz
DDR3 1600 PC3-12800 200 MHz 800 MHz
Queste sono el velocità delle RAM riportate su wikipedia, le ultime sono le DDR3. Ora ditemi, secondo voi può il processore lavorare realmente a 4 GHz se la volocità della RAM è 4 volte inferiore?
Lascio a voi le conclusioni.
Per qualsiasi domanda o chiarimento, chiedete pure.
Scusate eventuali errori, sono pur sempre le 2 e 30!!
Spesso sento dire dalle persone "Wow io ho un super mega ultra computer con processore a 7 core e velocità 4.3 GHz, l'ho pagato solo 3000 euro!!" (<-- ironia)
Bè io di solito quando sento queste cose rispondo "O sei un idiota o mangi sassi".
Prima di spiegare il perchè faccio una sintesi veloce sui componenti di un processore.
Il processore è composto principalmente da:
-ALU (unità che si occupa dei calcoli quali addizione, moltiplicazione, divisione)
-FPU (affiancata alla ALU, fa calcoli in virgola mobile (float))
-Registro istruzioni (tiene memoria le istruzioni da eseguire, è composto da 2 parti, ma non voglio andare troppo nello specifico)
-Decoder istruzioni (da in pasto le istruzioni alla ALU)
-Program counter (diciamo chè è come una lista della spesa delle cose da fare)
-Stack pointer (discorso davvero molto ampio, vi basta sapere che ci finiscono le istruzioni in "attesa", detto proprio banalmente)
-Le memorie (dati e programmi)
-I flag (di solito sono 16, o almeno, ora dovrebbero essere 16, poi può cambiare da processore a processore, svolgono vari funzioni, in linea di massima memorizzano qualcosa che è di "supporto" a un altro componente)
Tutto ciò è collegato dai vari bus (dati, indirizzi, controllo).
Ora, i core cosa sono? Cosa si intende quando si dice che un computer ha 5 core?
Vi siete mai chiesti un processore quante cose alla volta sa fare? 1. E perchè? Perchè la ALU (cuore del processore) è una sola e sa fare solo una cosa alla volta.
Ora però abbiamo processori a 2,3,5,7,8,12,16 core e così via, ma quante cose sanno fare alla volta?
Detto banalmente: 1 core = 1 ALU | 2 core = 2 ALU ... etc.
Ma quindi un computer con 7 core a rigor di logica dovrebbe fare 7 cose alla volta e quindi andare 7 volte più veloce, ma di fatto non è così. E perchè?
Semplice, tutto ciò che ho detto fin'ora è legato all'hardware e quindi alla parte fisica. Dipende tutto da come si fanno collaborare le varie parti a livello software.
Prima un programma in asm veniva scritto come noi siamo abituati a vedere scritto un qualsiasi programma. Una istruzione per volta. E adesso? Adesso che io al programma gli posso far far 2 o 3 o 4 o 7 o 16 e così via cose per volta, è cambiato qualcosa nel modo di programmare? La risposta è NO.
Ed è QUA il problema! Il problema è che bisogna iniziare a usare tecniche di programmazione più avanzate, non siamo più allo Z80 che sapeva fare solo somma e sottrazione da solo!
Quella che si dovrebbe usare oggi è la cosiddetta "programmazione parallela". Cioè i processori dovrebbero lavorare insieme, collaborando e non indipendentemente. Solo così sfrutterei a pieno le potenzialità del mio processore.
E questa è una cosa molto importante secondo me da sottolineare, diffondere, ma soprattutto, da applicare.
Altra cosa su cui volevo far chiarezza è la velocità dei processori.
Secondo voi un processore con potenza a 4.3 GHz, va davvero a 4.3 GHz?
No. E il motivo è molto semplice. Il processore lavora a stretto contatto con la RAM, la GPU e tutti gli altri componenti del computer.
Memoria Standard Clock Frequenza I/O
DDR2 667 PC2-5300 166 MHz 333 MHz
DDR2 800 PC2-6400 200 MHz 400 MHz
DDR3 800 PC3-6400 100 MHz 400 MHz
DDR2 1066 PC2-8500 266 MHz 533 MHz
DDR3 1066 PC3-8500 133 MHz 533 MHz
DDR3 1333 PC3-10600 166 MHz 667 MHz
DDR3 1600 PC3-12800 200 MHz 800 MHz
Queste sono el velocità delle RAM riportate su wikipedia, le ultime sono le DDR3. Ora ditemi, secondo voi può il processore lavorare realmente a 4 GHz se la volocità della RAM è 4 volte inferiore?
Lascio a voi le conclusioni.
Per qualsiasi domanda o chiarimento, chiedete pure.
Scusate eventuali errori, sono pur sempre le 2 e 30!!