GUIDA La Cpu Spiegata Ad Un Nabbo

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

Reverser

Utente Attivo
Messaggi
347
Reazioni
253
Punteggio
56
Allora, visto che ciclicamente neofiti del computer chiedono lumi su questo componente, proviamo a darne una spiegazione il più elementare possibile, dando per scontato che il Nabbo in oggetto, probabilmente non capisce una mazza nemmeno di elettricità ed elettronica.

Disclaimer: il linguaggio estrremamente semplificato e goliardico è a scopo didattico, atto a generare figure mentali elementari che possano essere costruite-assimilate dal più vasto pubblico possibile, specie quello senza minime cognizion tecniche.

Il cuore di un Computer è la CPU (Central Processing Unity), anzi, spesso si identifica il Computer con la CPU stessa.

Prima di spiegare cosa è una CPU è assolutamente necessario assimilare i concetti di bit e numeri binari.

Il codice binario o numerazione binaria è stata inventata dal matematico Pascal nel XVII secolo, che fu anche il padre della prima macchina di calcolo. Questo sistema di enumerazione è stato visto sposarsi perfettamente con una macchina di natura elettrica, da cui deriva il Linguaggio macchina.

Questo perchè un apparato elettrico riconosce solo 2 stati possibili:

1) c'è la corrente
2) non c'è la corrente

Questi due stati possono essere chiamati in innumerevoli modi, ma sostanzialmente ci si riferisce allo stesso stato.

Così abbiamo:

1) c'è la corrente - 1 - High - stato logico alto - On - acceso
2) non c'è la corrente - 0 - Low - stato logico basso - Off - spento

che sono tutti sinomi usati, ora uno ora l'altro, a seconda del contesto.

Quindi abbiamo questi 2 soli stati possibili, con la presenza della corrente/tensione, oppure no.

La prima base del calcolo (la CPU è in effetti una unità di calcolo) è necessario avere un sistema di numerazione. Ora con due soli stati possibili, è necessario avere più elementi, più ingressi, più piedini, più entrate, che abbiano ciascuna un "peso" diverso, quindi dare tensione ad un ingresso rispetto ad unaltro, ha un significato numerale diverso. Vediamo meglio...

Ora posto la tabella di un sistema binario a 4 bit. Che significa 4 bit? significa che ci sono 4 "dita" che contano, 4 ingressi, 4 entrate che possono trovarsi a 1 o 0 (High o Low, Alto o Basso ecc. ecc.)

tabella-codice-binario.webp

Per ora concentratevi solo tra l'equivalenza tra il numero decimale e quello binario, l'esadecimale lo vedremo più avanti. Osservate, notate, memorizzzate la simmetria che esiste tra i numeri binari. Date un'occhiata all'insieme e notate come i numeri 1 e 0 si ripetono in maniera simmetrica e con precisi ritmi. Vedete che i numeri 1 e 0 non si susseguonoa caso ma con una precisa logica?

E' importante capire che un 1 messo in un ingresso è diverso che metterlo in un altro, così come nel sistema decimale un 1 non vale sempre 1, perchè se lo mettioamo prima di uno zero, assume valore delle decine (10), se lo mettiamo in terza posizione a partire da destra diventa 100 (centinaia) e così via.
Quindi 0010 è diverso da 0001...

La posizione del numero si chiama "Peso" e ogni posizione ha a che fare con il quadrato di 2 quindi (per comodità e per un motivo che poi vedremo, utilizzo sempre 4 cifre, anche se gli zeri a sinistra non valgono-servono ad un tubo)

0001 = 2 elevato alla 0, quindi = 1 (peso 1)
0010 = 2 elevato alla 1, quindi = 2 (peso 2)
0100 = 2 elevato alla 2, quindi = 4 (peso 4)
1000 = 2 elevato alla 3, quindi = 8 (peso 8)

poi vediamo le somme di questi danno il numero finale:

1001 = peso 8 + peso 1 = 9

Il primo numero possibile è lo 0, cioè 0000 (o anche 0, ma per comodità abbiamo detto che usiamo 4 cifre)
L'ultimo possibille, con 4 cifre, 4 dita, 4 digit (cifre in inglese), 4 bit, è 1111 (tutti 1= 15 cioè 1+2+4+80)

Con 4 cifre, che d'ora in poi chiameremo solo Bit, possiamo avere 16 combinazioni diverse, dallo 0 al 15 decimale, ovvero dallo 0000 al 1111 binario.

Un'ultima cosa prima di parlare di CPU: i "Pesi" dei valori binari vengono associati alle lettere dell'alfabeto ABCD, o meglio, DBCA, dove A è la cifra meno significativa (1 uno in tutti i sensi) e la D è l'ultima cifra binaria, quella che se c'è 1, vuol dire che vale 8 (decimale).

DCBA Numero decimale (calcolo)
0000 0 (vale 0)
0001 1 (vale 1)
0010 2 (vale 2)
0011 3 (2+1)
0100 4 (vale 4)
0101 5 (4+1)
0110 6 (4+2)
0111 7 (4+2+1)
1000 8 (vale 8)
1001 9 (8+1)
1010 10 (8+2)
1011 11 (8+2+1)
1100 12 (8+4)
1101 13 (8+4+1)
1110 14 (8+4+2)
1111 15 (8+4+2+1)

Rammentiamoci bene questi ABCD che sono i fondamenti delle CPU a 4 bit.

Eccola qua: questa CPU è un cadavere da 4 bit, il nonno dei nonni dell'Intel I7 3970X che avete dentro il vostro PC (vi piacerebbe eh??!!)

intel-8008.webp

Ora facciamo un pò di pratica, quindi richiedo al Nabbo di turno che sta leggendo un discreto sforzo neuronale per capire lo schema qua sotto:

05318.webp

Ora, senza entrare troppo nel dettaglio tecnico, dovreste avere elementi per comprendere il principio dello schema qua sopra. In pratica si tratta di un chip di decodifica che converte un valore binario di 4 bit in una cifra esadecimale.
Osservate gli interruttori a sinistra. Identificano il "least significant byte" che è il bit meno significativo, quello che vale 1 (0001) chiamato anche ingresso A, fino al MSB, cioè il "most significant bit", il bit più significativo, quello che vale di più ed è quello chiamato D, e che vale 8 (1000).

Se chiudiamo quegli interruttori, portiamo la tensione degli ingressi al valore logico 1, mentre se l'interruttore rimane aperto (come un ponte levatoio sollevato) al piedino "di là" non arriva la tensione, quindi rimane a 0. Giocando con gli interruttori possiamo fare le varie combinazioni e vedere sul display i vari numeri da 0 a.... 9? Siete sicuri?
Ecco una nuova informazione: i numeri oltre il 9, su una sola cifra, vengono visualizzati dalle lettere dell'alfabeto fino alla F.

Vediamo come:

DCBA il display visualizza:
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Questo è il codice esadecimale, ovvero un codice d 16 numeri composti da 10 cifre numerali (da 0 a 9) e 6 lettere dell'alfabeto (dalla A alla F). Insieme formano il codeice Esadecimale, o anche DCBA.
Se io vi dico 15 in decimale, voi mi dovete rispondere F in esadecimale. Ok?

Una CPU a 8 bit ha semplicemente 8 ingressi, 8 interruttori all'ingresso che possono essere on-off, 1 o 0 ecc.
Con 8 bit ci contiamo fino a 255, ovvero 256 valori da 0 compreso (è un numero importante anche lui) fino al numero 255.

Perchè 8 bit contano fino a 255?

[TABLE="class: ccm"]
[TR]
[TH="align: left"]Numero binario[/TH]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TH="align: left"]Pesi[/TH]
[TD]2[SUP]7[/SUP] = 128[/TD]
[TD]2[SUP]6[/SUP] = 64[/TD]
[TD]2[SUP]5[/SUP] = 32[/TD]
[TD]2[SUP]4[/SUP] = 16[/TD]
[TD]2[SUP]3[/SUP] = 8[/TD]
[TD]2[SUP]2[/SUP] = 4[/TD]
[TD]2[SUP]1[/SUP] = 2[/TD]
[TD]2[SUP]0[/SUP] = 1
[/TD]
[/TR]
[/TABLE]

Se voi sommate tutti i pesi (che ricordo ogni peso vale il doppio di quello precedente) degli 8 bit abbiamo:

128+64+32+16+8+4+2+1 = 255, cioè 1111111, quindi possiamo contare da 00000000 fino a 11111111, passando da tutte le altre combinazioni possibili

E con un processore a 16 bit, 16 dita, 16 cifre, 16 piedini di ingresso?

Stesso procedimento:

32768+16384+8192+4096+2048+1024+512+256+128+64+32+16+8+4+2+1= 65535 cioè 16 numeri 1 = 1111111111111111

Osservate come ogni "peso" a sinistra assuma un valore doppio di quello precedente, e notate come questi siano numeri molto ricorrenti nel mondo dei computer, per esempio nellle espansioni di memoria, che sono sempre potenza di 2: 2GB, 4GB, 8GB, e così via.

Per il momento rimaniamo sui 4 bit, se no diventate più NaBBi di quanto già non lo siate.

(continua)
 
Ultima modifica:
A me non piace per niente: la trovo orrenda e priva di significato. :sisi:
Scherzo: ottimo lavoro! :luxhello: Soprattutto perchè è terribilmente semplice. :D
 
Lezione 2: Ho imparato a contare in binario e ora?


Cominciamo ad entrare dentro una CPU. Cosa c'è lì dentro?

Dentro una CPU ci possono essere decine di sottosistemi, magari li possiamo vedere anche tutti, ma per ora ci limitiamo a quelli prinmcipali.

Innanzitutto una CPU deve contare! Mi pare ovvio no? Quindi deve esistere un sistema che scandisce l'operazione di conteggio, un metronomo:
3378476-metronomo.webp
che dia un tempo a tutte le operazioni e che sincronizzi insieme tutti i sottosistemi.

Insomma, anche voi Nabbi per contare dovete fare: u-no----du-e----tre-e----qua-tro e così via. Va da se che se siete bravi e veloci potete contare velocemente: uno-due-tre-quattro, o ancora più veloce: unoduetrequattro.

Ugualmente per fare delle somme: uno----(+)----due----(=)----tre, ma anche: uno+due=tre

Questo metronomo in elettronica si chiama CLOCK, o in italiano Orologio.

Parlando bovinamente, un clock di un battito al secondo ci può consentire un conteggio al secondo, mentre un clock di 1 milione di battiti al secondo, chiamati in gergo tecnico 1milione di Hertz (Hertz= numerio di cicli al secondo) ci può consentire di fare un milione (1 MegaHertz) di conteggi al secondo. Un miliardo di cicli = un miliardo di conteggi (1 GigaHertz) e così via.

In un circuito elettronico il clock viene generato da un quarzo, sfruttando la sua risonanza specifica legata al suo spessore (più è sottile più risuona velocemente).

Questo è un circuito di clock:

programmare_picmicro_schema_base_clock.gif

Q1 è il cristallo risonante (il quarzo) e i due C sono due condensatori che aiutano ad innescare l'oscillazione. Il rettangolo a destra è una CPU. Il quadrato è il simbolo elettrico di un generico circuito integrato o Microprocessore o CPU.

Un quarzo di 1 Megahertz, genera una frequenza di un MHz, che può essere divisa da dei divisori a suoi multipli: 100.000Hz, 10.000 Hz, 1.000Hz ecc.

Ok, ora abbiamo visto cosa è il clock e come si genera. Naturalmente ci si può scrivere un libro su cosa comporta un Clock ai vari livelli, ma voi siete Nabbi per cui basta sapere questo.

Ricapitolando:
- Una CPU capisce SOLO il binario
- Una CPU ha un circuito di clock che scandise il ritmo delle sue operazioni
- Una CPU deve contare

Ok, ma non è che contare sia qualcosa di così impressionante! Cosa fa di altro una CPU?

Come minimo deve eseguire operazioni su dei numeri e queste operazioni si dividono in operazioni matematiche e operazioni logiche.

Vediamo quelle aritmetiche che sono le più facili. Queste sono:

1) Somma
2) Moltiplicazione
3) Divisione
4) Sottrazione

che perfino il Gran Visir di tutti i Nabbi, dovrebbe conoscere!

In realtà una CPU non è in grado di fare direttamente le operazioni 2,3 e 4, ma sa solo fare delle somme. Per la moltiplicazione quindi opera tante volte una somma: per fare 2x8, esegue la somma di 2+2 7 volte, in modo da arrivare a 16. Per la sottrazione e la divisione opera delle "furberie" che sono troppo complicate per il Nabbo medio.

Quindi dentro una CPU c'è ALMENO una unità di calcolo per delle somme. Naturalmente queste somme sono tutte fatte in binario, quindi per fare 8+5 fa così:

1000 + (8)
0101 (5)
-----------
1101 (13)

Una CPU a 4 bit ha 4 piedini che fanno, in tempi diversi, da entrate (per i numeri da sommare) e da uscite (per buttare fuori il risultato. Sono cioè piedinbi di I/O (Input/Output).

Il secondo tipo di operazioni che esegue una CPU sono le operazioni logiche, sempre sui numeri binari ovviamente.

Queste sono le operazioni logiche:

1) AND
2) OR
3) NAND
4) NOR
5) NOT
6) XOR
7) XNOR

Ora vediamo di che si tratta.

Per semplificare ulteriormente ai Nabbi più nabbi, useremo esempi a soli 2 bit, due cifre, due ingressi, due piedini.

porte_log.webp

Ogni porta logica o elemento logico (che esegue un'operazione logica appunto) ha una sua tabella della verità,che consiste nel risultato in uscita in base a cosa si presenta ai suoi ingressi.

LEGANERD_042281.webp

I 3 elementi più importanti da capire sono l'AND, l'OR e il NOT (gli altri sono consequenzialmente legati a questi).

L'AND esegue un'operazione che porta ad 1 la sua uscita SOLO se tutti e due i suoi ingressi SONO A 1. In tutte le altre condizioni rimarrà a zero. Da cui: ci vuole 1 in un ingresso AND (e) 1 anche nell'altro per avere 1 in uscita, altrimenti niente, zero.

Ingressi Uscita dell'AND
AB................U

00................0
01................0
10................0
11................1


L'OR, come dice la parola, funziona diversamente, ovvero basta avere un 1 in uno qualsiasi degli ingressi per avere 1 in uscita.
Quindi uno in un ingresso OR (o) nell'altro, per avere l'uscita a 1. Anche se tutti e due gli ingressi sono a 1, ci sarà sempre 1 in uscita.

Tabella della verità:

Ingressi Uscita dell'OR
AB................U
00................0
11................1
10................1
11................1

Il NOT è una semplice inversione:
se entra 1, esce 0 (in uscita avremo 0)
se entra 0, esce 1 (in uscita avremo 1)

Con gli XOR e i NXOR si fanno delle operazioni da fantascienza cxhe il Nabbo non potrà mai capire! :D

Le operazioni matematiche e le operazioni logiche dentro una CPU vengono eseguite dal MODULO ALU (Aritmethic-Logic Unity), uno dei tanti moduli che sono dentro una CPU. Quindi ora conoscete il modulo CLOCK e il modulo ALU.

Un modulo ALU con relativo schema:

250px-CPU_block_diagram.svg.webp
Il simbolo di ALU è un cubetto a forma di A. In questo schema è indirizzata verso il basso quindi appare come una V.

E per i NaBBi avanzati anche uno schema interno di come è costituita un semplice modulo ALU:

1993.webp

I più attenti avranno notato che esistono dei piedini specifici che sono il CARRY OUT, ovvero il riporto, cioè come nella matematica decimale, se il risultato esce fuori dalle cifre disponibili, si usa il riporto. Questo esiste anche in ingresso, CARRY IN, così più unita logiche (ALU) possono essere messe in cascata, dove il riporto in uscita di un ALU entra nel riporto di ingresso di quella successiva per continuare l'addizione se i numeri sono molto grandi.
C'è anche il piedino di OVERFLOW, ovvero sovraflusso, cioè quando i numeri sono talmente grandi che "intasano" la ALU, quindi il piedino di OVERFLOW si porta a 1, ad indicarci che la CPU sta dando i numeri (sbagliati!)

IMPORTANTE: una CPU ha molti piedini accessori, che ci indicano appunto funzioni accessorie come il riporto in uscita, l'overflow ed altre cose che possono capitare. Si indicano anche come FLAG, ovvero bandierine. Immaginatevi un ominmo che ogni volta che succede qualcosa di cui tenere conto, alza una bandierina per richiamare l'attenzione vostra (del programmatore), o di qualche altro modulo interno.

Aggiorniamo il NaBBometro:

- Una CPU capisce SOLO il binario
- Una CPU deve contare
- Una CPU ha un Modulo di clock che scandise il ritmo delle sue operazioni
- Una CPU esegue operazioni aritmetiche e logiche con il Modulo ALU
- Una CPU ha dei piedini, detti anche di FLAG, che indicano che è successo qualcosa di cui tenere conto

(continua)

- - - Updated - - -

A me non piace per niente: la trovo orrenda e priva di significato. :sisi:
Scherzo: ottimo lavoro! :luxhello: Soprattutto perchè è terribilmente semplice. :D

E' per Nabbi, quindi tu pussa via!
 
Ultima modifica:
bravissimo:luxhello:

- - - Updated - - -

con calma me la leggo e approfondisco le mie appena discrete conoscenze di elettronica:)
 
E' per Nabbi, quindi tu pussa via!


Io credo di essere sotto il livello di nabbaggine'... quindi mi è utile. :asd:
Diciamo che ero fermo hai numeri binari e ai Bit (imparati leggendo il libro di matematica durante le interrogazioni :D).
 
Ultima modifica:
Lezione 3: Ora so tutto... no, non so una mazza: i FLIP-FLOP

Uno degli elementi più importanti dell'Elettronica digitale è il concetto di memoria, ovvero un circuito che sia in grado di ritenere un dato, almeno finchè non viene tolta l'alimentazione/tensione.

Il circuito più elementare di memoria è il FLIP-FLOP, ovvero un incrocio strano di porte logiche. In questa maniera, inserito un livello logico all'ingresso (uno 0 o un 1), questo rimane in memoria in uscita anche se il dato in ingresso sparisce.

Guardatelo bene e capitelo perchè questo è il circuito più elementare di memoria che possiate vedere. Memorizza, ovviamente, solo un bit, ma con miliardi di questi semplici circuiti ci fate le RAM da 16 GByte del vostro sistema!

43653.gif

In genere a noi interessa solo un ingresso e solo una uscita, quindi considerate solo l'ingresso R e l'uscita Q (Q negato, con la barretta sopra, è semplicemente l'inverso di quello che c'è sull'uscita Q).

Di flip-flop ne esistono di diversi tipi, ma sostanzialmente fanno la stessa cosa; memorizzano un dato posto all'ingresso.

Questo è un flip-flop fatto con porte NAND (magari avete sentito parlare delle memorie a celle NAND degli Hard Disk SSD, ecco, sono fatte così):

ff2.gif

Applicazione:
flip_flop_led.webp


Vabbè... faccio finta che siete Nabbi avanzati e vi faccio vedere come sono veramente le celle Nand degli HD SSD, però se vi sembra complicato fate riferimento alla figura sopra.

eh1900_f18.gif

La differenza in questa configurazione più complessa è che il dato viene memorizzato in sincronismo con il clock, e non in un tempo a caso.
In pratica voi mettete il dato in ingresso, e quando arriva il clock (a livello 1) il dato viene memorizzato e conservato, e voi potete levarlo dall'ingresso.

Altro modo per indicare un flip flop (un quadrato):

fig3.gif

Dentro una CPU ci sono milioni di questi Flip-Flop che, messi in cascata, formano i registri.

Ecco un registro a 4 Bit:

l0_seq_Dreg4.gif

Grazie a questi registri possiamo caricare dei dati e memorizzarli. Vi faccio un esempio:

Abbiamo 4 ingressi in una CPU a 4 bit.
Dobbiamo fare una somma
Prima infiliamo il primo numero da sommare
Poi il secondo
ma...
il primo numero dove è finito mentre infilavamo l'altro?

Ecco, è stato memorizzato nel registro a 4 bit di cui c'è la figura più sopra.

Anche il risultato finale sarà memorizzato in un registro (ce ne sono innumerevoli dentro una CPU) utilizzato come elementare memoria per conservare un dato.

Ecco i registri sopra la ALU:

cpu.webp

Aggiorniamo il Nabbometro:

- Una CPU capisce SOLO il binario
- Una CPU deve contare
- Una CPU ha un Modulo di clock che scandise il ritmo delle sue operazioni
- Una CPU esegue operazioni aritmetiche e logiche con il Modulo ALU
- Una CPU ha dei piedini, detti anche di FLAG, che indicano che è successo qualcosa di cui tenere conto
- Una CPU ha un numero elevato di Moduli Registri, che memorizzano i dati in attesa di passarli all'ALU o verso le Uscite

(continua)
 
grandissimo! hai spiegato in una pagina di forum quello che la mia prof aveva spiegato in un anno! xD
 
guida rilevata ;)

p.s. se possibile, inserisci nel primo post, alla fine, una legenda in cui metterai i link ai post in cui spieghi le cose dal momento che con i post degli utenti, si perderebbero i tuoi ;)

mi sono spiegato? se non l'ho fatto dimmelo xd
 
I NaBBissimi che vogliono passare al grado di NaBBo avanzato possono provare a fare questo esercizio che ho preparato per loro, e vedere cosa succede:

Test.webp
 
WOW Grandissimo, io sono super Nabbo di elettronica e del hardware PC ne so ancora meno, quindi le tue guide sono per me un'enorme fonte di sapere, Grazie ;)
 
Bellissima guida! Utilissima! Io non ne capisco niente di elettronica ma grazie a questa guida ho capito finalmente qualcosina, grazie! :)
Guardate cosa sono riuscito a fare:
353a71y.png
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top