Pagina 1 di 8

Introduzione al funzionamento dei processori!

MessaggioInviato: 09 gen 2004, 16:40
di thrantir
Sfruttando l'occasione ke ci hanno dato jaber e nico (come potete leggere in questo topic http://forum.amdplanet.it/viewtopic.php ... e31584ac37) mi sto lanciando nel raccontarvi qualcosa sul funzionamento del nostro amico/nemico in scatola... il mio proposito è di spiegare a ki magari nn ha mai avuto occasione o tempo o stimolo di saperlo i principi secondo i quali funziona un calcolatore. Siccome tutto quello ke scriverò non ha nè l'intenzione nè la pretesa di essere un trattato tecnico cerkerò di esporre il tutto in modo tale ke ki nn ha conoscenze di elettronica e informatica a livello makkina possa seguire il discorso e magari trovare lo stimolo di approfondirlo. Neanke io d'altronde sono un vero esperto e tutto quello ke so deriva dai miei studi universitari e dalle mie esperienze e letture. Colgo l'occasione quindi x ringraziare il mio docente di Architettura degli elaboratori Marco Vanneschi (se cercate un po su google scoprirete ke lui è una delle ?menti? italiane del settore) e tutto quello ke scriverò è praticamente una veduta panoramica delle sue dispense e lezioni.
Ma passiamo al dunque!
Allora, per prima cosa, quanti di voi sanno secondo quale principio lavora un processore? E cosa se ne fa della cache? E xkè la cache nei primi processori nn c'era? Quando aprite cpuz e leggete ke il vostro procio ha una cache di primo livello divisa in due parti, una x i dati e una x le istruzioni ke vuol dire? E cosa sono le famose pipeline di cui si parla sia x le cpu sia x le gpu? E l'interazione con la memoria come avviene? E xkè quasi tutte le skede e le periferike ke avete installato necessitano di un driver?
Queste sono alcune delle domande a cui spero di dare una risposta!
Siccome xò nn vorrei annoiare nessuno (tranne ovviamente quelli ke già sanno queste cose e magari meglio di me!) scriverò le cose mano mano kiedendovi come vi sembra proceda il mio discorso!
Adesso mi metto a scrivere le prime cose, a tra poco!

MessaggioInviato: 09 gen 2004, 16:43
di nico64
siamo tutti in aula seduti: zitti, zitti arriva il maestro!! :D

cmq, bando alla ciance, nn vedo l'ora di leggere i tuoi scritti!!!
a presto!! :wink:

MessaggioInviato: 09 gen 2004, 16:46
di azarius
bella thrantir.... vai in onda...
ti sto seguendo :D :D :D

MessaggioInviato: 09 gen 2004, 17:08
di thrantir
Ecco il primo parto della mia mente malata!

Allora, facciamo il primo passo per capire meglio quel quadratino montato sulla nostra mobo ke kiamiamo confidenzialmente processore. I processori attuali sono molto complessi e hanno accumulato nel tempo molte ottimizzazioni quindi per comprenderli bisogna tornare un po indietro nel tempo, a quelli ke possiamo kiamare processori convenzionali...

I processori convenzionali (ke tuttora sarebbero in grado di fare tutto, certo moooolto + lentamente!), sono l'implementazione (termine oscuro ke x i nn addetti si può tradurre in "messa in pratica") della makkina pensata da un tale kiamato John Von Neumann ke a sua volta ha rielaborato il modello astratto di Turing. X capire il funzionamento abbiamo bisogno di alcune cose:

1)Un set di istruzioni... ecco ke il discorso un po si complica, ma niente paura! Il fatto è ke un processore, proprio come ognuno di noi, ha bisogno di comunicare con un linguaggio a lui noto e questo linguaggio è proprio il set di istruzioni... se aprite qualsiasi programmino ke vi analizza la cpu scoprirete ke il vostro procio "conosce" diversi set di istruzioni (MMX, 3D Now! ecc...). Questi set di istruzioni altro non sono ke una raccolta di "parole" ke il nostro procio comprende e può usare per procedere nelle sue operazioni (in gergo si dice processare).

2)Delle risorse di calcolo. Queste risorse sono delle piccole unità ke stanno dentro al processore ke sono in grado di svolgere alcune operazioni basilari come la somma tra due numeri interi, alcune operazioni logike (se nn sapete cosa sono nn importa!). Infatti anke se nn ci avete mai pensato il processore nn fa molto + ke leggere, scrivere e far di conto! Anke l'internet explorer con cui ora state leggendo questo alla fine nn è molto + ke questo!

3)Una memoria centrale. Ecco ke siamo arrivati a uno degli altri componenti indispensabili, quello ke tutti noi kiamiamo normalmente RAM. Pensateci un attimo, in realtà nn è molto corretto questo termine nel contesto in cui di solito è usato, infatti nn descrive il ruolo della memoria ma la tecnologia con cui è fatta, infatti RAM sta x Random Access Memory (memoria ad accesso casuale), in realtà quella è proprio la memoria centrale del sistema!

4)Un'interfaccia per accedere alla memoria. Qui nascosta abilmente ci sta uno dei termini fondamentali dell'informatica: interfaccia! Ora nn mi soffermerò a parlare di interfacce, ce ne sarà l'occasione nel futuro, basti x ora sapere ke x interfaccia si intende un qualcosa ke riesce a mettere in comunicazione due entità, nel nostro caso specifico il processore e la memoria.

Beh, le cose fondamentali ora ce le abbiamo, se vi sembra ke me ne sia dimenticato qualcuna ditemelo! Cmq è probabile ke qualke elemento venga aggiunto via via ke proseguiamo nel discorso. Per ora mi fermo qui (non è ke mi sia stancato, è ke vado a farmi fare qualke preventivo x aggiornarmi il sistema 8) 8) 8) 8) 8) !) ma nn vi preoccupate, tornerò presto a pompervi le scatole! :wink:

MessaggioInviato: 10 gen 2004, 02:11
di jaber
Vai Thrantir,aspettiamo il seguito. zzzZZZZzzZZzzzzzZzzzzzZZZzzZ
Scherzo naturalmente :lol:

MessaggioInviato: 10 gen 2004, 03:23
di thrantir
Scusatemi se nn ho postato la seconda parte, oggi nn ce l'ho fatta e sto crepando di sonno, domani mattina promesso troverete il seguito!

MessaggioInviato: 10 gen 2004, 12:17
di sku
thrantir ha scritto:se vi sembra ke me ne sia dimenticato qualcuna ditemelo!


ahem....lo so che sono un rompiballe di vocazione....ma sono affezzionato all'I/O e qua lo vedo bistrattato!! :cry: :cry:

MessaggioInviato: 10 gen 2004, 12:23
di azarius
prof. posso andare in bagno!!!!!!! :D :D :D

hihihihihiih... skerzo cmq vorrei capire di + sulle pipe line...
continua cosi che vai benissimo...

MessaggioInviato: 10 gen 2004, 13:10
di thrantir
alle pipeline arriveremo :wink:

Come promesso rieccomi (alla fine diventerò + antipatico di maria de filippi!).
Visto ke abbiamo i pezzi necessari montiamo il tutto scoprendo come funziona il processore. Nel post precedente si parlato di set di istruzioni (x gli intimi parliamo di Assembler) come unico linguaggio comprensibile dal processore, quindi ne possiamo dedurre ke qualsiasi programma ke noi vogliamo dare in pasto al nostro processore deve essere scritto in questo linguaggio che lui comprende ed è in grado di eseguire. Per motivi di semplicità ci ridurremo a istruzioni di tipo standard ke sono tutte lunghe uguale; la lunghezza delle istruzioni sarà uguale alla lunghezza di una "parola". Adesso vi starete kiedendo cosa è una "parola" e nn sapete ke inconsapevolmente ne state parlando da mesi e mesi: dovete sapere ke il processore per la sua natura deve seguire rigide regole matematike ke impongono alcuni limiti... uno di questi è la necessità ke la lunghezza delle "parole" del linguaggio compreso dal processore debba essere sempre la stessa. Questo vuol dire ke quando il processore "parla" la memoria (ma anke con la skeda audio, la skeda di rete ecc.) le informazioni scambiate sono composte da tanti pezzettini di lunghezza uguale ke vengono detti "parole"... adesso nn stupitevi se vi dico ke la tecnologia attuale prevede parole di 32bit e stiamo vivendo il passaggio generazionale a parole lunghe 64bit... cominciate a seguirmi? Forse ora è + kiaro ke cosa vuol dire tecnologia a 64bit, in pratica vuol dire ke il processore è + intelligente (di uno a 32bit!!) xkè capisce parole + lunghe e di conseguenza può avere un linguaggio moooolto + ricco! Ora noi ipotizzeremo ke il nostro processore sia a 32bit e quindi comprenda ed esegua istruzioni ke siano lunghe 32bit. In realtà non è così semplice xkè le istruzioni possono essere divise in + parole, di questo parleremo poi. Se voi ora immaginate questi 32bit in fila (come 32 quadratini di un quaderno) potete immaginarli divisi in 4 gruppi da 8bit l'uno... xkè? Siccome abbiamo fissato il formato delle istruzioni comprese dal processore bisogna ke capire come queste istruzioni sono strutturate! Ora vi sparo il primo colpo... il primo gruppo di 8bit individua l'istruzione (BUM!)... cosa vul dire? Vuol dire ke se noi abbiamo un po di istruzioni nel nostro set ad ogni istruzione viene associato un numero (in gergo "codice operativo") ke deve essere rappresentabile su 8bit, se avete un minimo di pratica con i numeri binari capirete quindi ke con 8bit noi possiamo avere fino a 2 elevato alla 8 istruzioni, quindi 256 istruzioni. Siccome nn vogliamo complicarci la vita prendiamo un set di poke istruzioni, mettiamo un'addizione, una sottrazione, una divisione, una moltiplicazione... ne aggiungeremo altre dopo. Ora fissiamo il codice operativo di ciascuna istruzione:

addizione -> codice op 0 -> in binario 00000000
sottrazione -> codice op 1 -> in binario 00000001
divisione -> codice op 2 -> in binario 00000010
moltiplica -> codice op 3 -> in binario 00000011

ora posto questo, poi continuo la storia

MessaggioInviato: 10 gen 2004, 13:42
di thrantir
Ecco il seguito. Allora, delle nostre parole da 32bit ne abbiamo usato un quarto per far capire al processore di ke istruzione si tratta, ci rimangono ben 24 bit, ke cosa ce ne facciamo? Forse avete sentito qualke volta parlare dei registri generali del processore, ebbene, questi registri sono risorse indispensabili per l'esecuzione delle istruzioni da parte del processore... Ora scusatemi se sarò un po lungo ma l'argomento penso lo meriti... sto x svelarvi il segreto nascosto all'interno della parola clock!!! Il processore, come tutte le altre componenti, ha bisogno di alcune risorse dove salvare i dati su cui sta lavorando, queste risorse sono appunto i registri! Ogni registro è composto da una serie di "celle" ke sono la più piccola unità utilizzata x immagazzinare informazione. Ogni celletta contiene un bit, i registri hanno una dimensione in bit pari al numero di celle ke contengono (noi per rimanere sul semplice supporremo ke i registri nel processore siano tutti da 32bit). Ma ke c'entra tutto questo con il clock? Bene, supponete ke si voglia fare la somma di due numeri e la si voglia salvare in un registro... succede ke i due numeri da sommare, ke viaggiano sotto forma di bit attraverso dei collegamenti metallici (come le piste ke vedete sualla skeda madre solo ke nel processore sono parekkio + piccoli), passano attraverso delle strutture fatte apposta dove vengono trasformati nella loro somma. Affinke avvenga questa trasformazione è necessario un po di tempo, in gergo si dice ke il segnale si deve stabilizzare. Fino a quendo il segnale nn è stabile la nuova informazione nn va scritta sul registro, ci deve essere xciò un qualke meccanismo ke dica al registro quando deve scrivere il nuovo valore al proprio interno... signori e signore nn ve lo aspetterete ma questo è proprio il clock!!! Il meccanismo usato infatti è l'invio a tempi regolari di un impulso (si parla infatti di registri "impulsati") e l'intervallo tra un impulso e l'altro viene definito "ciclo di clock"... in genere il clock è dato in frequenza e nn in tempo a è presto fatto visto ke sono uno l'inverso dell'altro... mi spiego, se l'impulso è dato ogni secondo si ha la frequenza di 1Hz, ogni millisecondo di 1Khz, ogni microsecondo di 1Mhz, ogni nanosecondo di 1Ghz ecc. Perchè il clock è così importante? Perchè scandisce il tempo ke passa tra l'elaborazione di due istruzioni, se pensate di dover fare delle somme mettendo il risultato nello stesso registro cosa fate... fate la prima addizione, appena arriva l'impulso di clock scrivete il risultato nel registro e siete pronti x fare la prossima! Vedete quindi ke se il clock aumenta di frequenza voi riuscite a fare le stesse operazioni + velocemente!
Mi sto rendendo conto ke il discorso in questo punto si è un po complicato, quindi ditemi se riuscite a seguirmi, cosa vi sembra oscuro e ovviamente si ho scritto qualke idiozia fatemelo notare!

MessaggioInviato: 10 gen 2004, 14:02
di azarius
posso fare un esempio sul clock....(come mi ha detto il mio prof. di fisica)

il computer è un orologio e le istuzioni e parole che noi diamo sono un pendolo....quando il pendolo parte e oscilla e ritorna nel punto di partenza ha effettuato un clock.... si può paragonare a quello che hai detto tu in base al registro...

MessaggioInviato: 10 gen 2004, 14:11
di thrantir
bello l'esempio, mi piace!

az ma tu ke studi?

MessaggioInviato: 10 gen 2004, 14:16
di azarius
io faccio il 3° liceo scientifico...

MessaggioInviato: 10 gen 2004, 14:30
di thrantir
ok, quindi diciamo ke nn hai una preparazione scolastica riguardo all'argomento di cui stiamo parlando, quindi ti kiederei, come ti sembra ke sta andando il discorso? E' troppo semplice o invece sono sceso troppo nel tecnico? Sono considerazioni preziose ke mi aiuterebbero a capire meglio come strutturare il discorso... naturalmente lo kiedo anke a tutti gli altri!

MessaggioInviato: 10 gen 2004, 14:41
di azarius
guarda io ti riesco a seguire perfettamente e penso che per capire le cose bisogna saperle immaginare perciò come stai andando tu va quasi perfettamente.... quasi perchè ci sono persone che nn riescono a immaginare le cose e sono ferme li.... forse dovresti aggiungere qualche esempio come quello che ti ho proposto per far immaginare le persone che cosa sia... ora ti dico il mio prof di fisica all'apparenza è un CRETINO... ma se lo vedi in laboratorio è un mago.... perchè tutte le cose ce li ha nella sua mente.... anche tu nella tua mente sai di più di quello che stai dicendo... sai quelle cosa che non si possono esprimere ma solo immaginare.... perciò prova a collegare qualche esempio ogni tanto...