GUIDA La Cpu Spiegata Ad Un Nabbo

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Si, le GPU sono processori specializzati.

La CPU è progettata per usi generici (General Purpose), quindi fa bene un pò tutto, ma nulla PARTICOLARMENTE bene.

Una GPU è un processore estremamente specializzato e strutturato per un particolare compito, che esegue in maniera estremamente efficiente, ma se lo impieghi in usi diversi dal suo specifico, potrebbe fare abbastanza schifo come prestazioni.
 
Bene! Vi ho sollecitato a fare qualche domanda per mettere bene a fuoco gli argomenti, ma vedo che non ce ne sonmo state, quindi deduco che è stato capito tutto fino all'ultimo bit! :D

no, è che la sto ancora leggendo e rileggendo bene :D non capisco per esempio quando parli di "piedini" cosa intendi ed il fatto dei bit che siano 4/8/16, ecc da cosa dipenda... lezione 2 per esempio quando parli di operazioni logiche e fai riferimento a esempi da 2 bit, cioè 2 "piedini" ... posso intuire che bit equivale a piedini ok, ma non capisco la differenza tra ingresso ed uscita, A+B=F per esempio... poi dentro la ALU in base a cosa si decide quanti schemi di operazioni logiche ci sono e il loro numero come diversificano una alu dall'altra? :shock:

perche hanno deciso che un byte fossero 8 bit e non 4 bit? ha un senso?... cioè pensavo ad (4bit)1111 = 1 B = F = 15

ps. sto pensando che con piedini poi intenderai pin e che quindi che ora ad esempio abbiamo i socket tipo am3+ da 941pin ma usati 938 nelle cpu am3+ o intel addirittura arriva fino a 2011 con gli extreme per via del quad-channel, ecc sapevo io...
invece lga 1155 sono comunque più del am3+ da 940 e qualcosa vorrà dire...
 
Ultima modifica da un moderatore:
I pin (piedini) sono i collegamenti fisici in metallo che portano i segnali all'interno della CPU.

integrato28pin.webp

Questa è una CPU alla rovescia. Quelli dorati sono i PIN. Si usa l'oro (la doratura) perchè è il miglior conduttore di elettricità esistente.

PGA-Pin_grid_array_bottom_chip_package_photo.webp

Questo invece è uno zoccolo (dove si inseriscono i pin della CPU) a 8 pin per lato.

zoccolo-dil-8-pin-basso-profilo~47215985.webp

Ovviamente un ingresso è un pin, un processore a 8 bit ha almeno 8 piedini per questi 8 ingressi (immagina le dita di una mano devono essere dieci per contare fino a 10!).

I Bit li decide il costruttore di un integrato o di una CPU.

Ci sono CPU a 4 bit (ci fai ben poco)
CPU a 8 Bit (usati nelle macchinette del caffe), che devono fare poche, semplici operazioni
CPU a 16 bit utilizzati per applicazioni industriali, macchine a controllo numerico, bracci robotizzati
CPU a 32 bit come i processori PC di qualche anno fa per Windows 95-98 o XP
CPU a 64 bit come i processori attuali per Windows 7 a 64 bit
CPU a 128 bit per potentissime applicazioni scientifiche o militari (simulazioni di processi chimici o nucleari)

Il numero dei bit indica ANCHE la complessità di una CPU.

Un esempio poco sensato ma forse illuminante: una CPU a 16 bit può fare calcoli di numeri molto lunghi e complessi, ma deve dividere il numero in pezzetti lunghi 16 bit (di più non riesce a contare, come noi con le 10 dita, che per contare 11 devi ripartire da zero) e questo richiede più cicli di clock, più tempo.
Un processore a 64 bit ci mette un solo ciclo per trattare quel numero così grande.

Esempio:
127765463339 x 49376811113

16 bit = bam....bam....bam....bam....bam....bam....risultato
64 bit = BAM! risultato

Esistono processori un pò per tutti gli usi. Se devo far lampeggiare 2 led, non uso un Processore RISC da 128 bit! Ne basta uno a 4 bit. Se devo simulare come si fondono i nuclei di ferro durante l'esplosione nucleare del core di una stella supergigante azzurra, magari 4 bit... non bastano!

Poi l'ALU è una sola, e da sola fa un sacco di operazioni. Tutte quelle matematiche e tutte quelle logiche. Chi lo decide? LE ISTRUZIONI!

Ogni gruppo di bit che ENTRANO dentro la CPU sono dei DATI o delle ISTRUZIONI, quindi sono le ISTRUZIONI che decidono cosa fare sui dati, da parte della ALU.

Ci sono istruzioni di SOMMA, di AND, di OR, di SOTTRAZION, ecc. Per saperle devi prenderti il manuale dall CPU dove ci sono scritte tutte le istruzioni del suo linguaggio Assembler.

Quanto a quei cosi che hanno 2 ingressi e un'uscita, sono porte logiche, che fanno operazioni logiche su quei dati in ingresso (A e B).

Forse così lo capisci meglio:

full adder 4 bit.webp

Questo è un sommatore a 4 bit (4 celle ad 1 Bit)

Somma 2 numeri a 4 bit. A0,A1,A2 e A3 è il primo numero a 4 bit. B0, B1, B2 e B3 è il secondo numero a 4 bit.

S0, S1, S2, S3 è il numero a 4 bit in uscita, ovvero il risultato di A0123 + B0123.

Quindi hai due gruppi in ingresso e 1 solo gruppo in uscita, il risultato dei due gruppi.

Ora vediamolo applicato ad una ALU:

280px-ALU_symbol.svg.webp
Questa è una Alu. In alto vedi gli ingressi, che possono essere di quanti bit vuoi, ma se sono 8 per A e Per B, saranno 8 anche per l'uscita R.

alu.gif

Cosa accade se sommando due numeri a 8 bit, il numero è molto grande e sfora diventando da 9 bit? Niente, in uscita abbiamo il risultato parziale a 8 bit, PIU' una flag (una bandierina), un piedino, che si porterà a 1. Questo piedino è il carry out, il riporto, come quando fai una somma su un foglietto che devi mettere il riporto davanti. Uguale uguiale.

Poi, per numeri molto grandi, magari da 12 bit, puoi mettere due ALU in cascata, avendo l'accortezza di collegare il piedino CARRY OUT al pieduino CARRY IN (riporto in ingresso, così l'ALU sa che è il riporto di un numero grande) dell'ALU che viene dopo. Si chiama collegamento in cascata.

Capito??
 
Ultima modifica:
...cut...
Capito??
si ho capito meglio ad esempio che una ALU a 8 bit avrà 8 porte logiche e cosi via e che si possono mettere a cascata cosi come le porte logiche e in CO/CI anche le ALU, e soprattutto ho capito perchè dicono che le istruzioni a 64bit renderebbero meglio dei 32 bit! :D ...perchè dopo 10 anni dall'introduzione dei 64bit continuano a programmare al massimo in 32bit? sapevo che si SO è a 64bit ma i software e i giochi sono ancora a 32bit...
...forse rileggendo meglio la lezione 4 (quella di programmazione e penso sia la più difficile da comprendere) riuscirei a comprendere ancora meglio, solo che non capisco come fa la cpu a riconoscere la parte logica/ALU o FPU da utilizzare in base al dato/istruzione che gli arriva... c'è qualcosa prima che riconosce in ingresso?

ps. il fatto che 1 Byte sia 8 bit e non 4 bit da cosa è dovuto, come mai hanno fatto questa scelta? siccome era semplice fare si che fosse 1111(binario in bit) = 1(binario in Byte) = F(esadecimale) = 15(decimale)

[TABLE="class: prettytable"]
[TR]
[TD]Binario[/TD]
[TD]Esadecimale[/TD]
[TD]Decimale[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]1[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]10[/TD]
[TD]2[/TD]
[TD]2[/TD]
[/TR]
[TR]
[TD]11[/TD]
[TD]3[/TD]
[TD]3[/TD]
[/TR]
[TR]
[TD]100[/TD]
[TD]4[/TD]
[TD]4[/TD]
[/TR]
[TR]
[TD]101[/TD]
[TD]5[/TD]
[TD]5[/TD]
[/TR]
[TR]
[TD]110[/TD]
[TD]6[/TD]
[TD]6[/TD]
[/TR]
[TR]
[TD]111[/TD]
[TD]7[/TD]
[TD]7[/TD]
[/TR]
[TR]
[TD]1000[/TD]
[TD]8[/TD]
[TD]8[/TD]
[/TR]
[TR]
[TD]1001[/TD]
[TD]9[/TD]
[TD]9[/TD]
[/TR]
[TR]
[TD]1010[/TD]
[TD]A[/TD]
[TD]10[/TD]
[/TR]
[TR]
[TD]1011[/TD]
[TD]B[/TD]
[TD]11[/TD]
[/TR]
[TR]
[TD]1100[/TD]
[TD]C[/TD]
[TD]12[/TD]
[/TR]
[TR]
[TD]1101[/TD]
[TD]D[/TD]
[TD]13[/TD]
[/TR]
[TR]
[TD]1110[/TD]
[TD]E[/TD]
[TD]14[/TD]
[/TR]
[TR]
[TD]1111[/TD]
[TD]F[/TD]
[TD]15[/TD]
[/TR]
[/TABLE]

pps come mai questa ALU ha molte parti logiche al suo interno eppure è definita solo a 2bit?
http://upload.wikimedia.org/wikipedia/commons/0/0f/2-bit_ALU.svg
vedo che come ingresso ha solo A01 + B01 ma poi ha una serie di parti logiche che sembrano eccessive per una ALU a 2 bit... :look:
 
Ultima modifica da un moderatore:
Complimenti perchè sei sveglio! Sei NaBBo ma cerchi di capire veramente.

Il punto è che per rendere comprensibile anche alle pietre (i NaBBi più NaBBi) questioni così complesse, ho dovuto semplificare allo stremo, quindi sono giuste le tue considerazioni, perchè mancano "dei pezzi".

Dentro alla CPU c'è un Modulo che si chiama INSTRUTION DECODER, che lavora di concerto con un Registro apposito dedicato alle Istruzioni.

Quindi c'è un modulo che si occupa di riconoscere e decodificare le istruzioni x86

Eccolo lì, in alto tutto a sinistra. C'è il REGISTRO ISTRUZIONI e il DECODER ISTRUZIONI

fig214.gif

Qua uno schema a blocchi di una CPU più recente, guarda come il Modulo DECODER passa i dati al Modulo per numeri interi o al Modulo per numeri in virgola mobile:



Hot_Chips_Steamroller_arch.webp

Queste sono architetture che si chiamano Von Neuman, ma esistono altri tipi di architetture di CPU.

Questo è un elenco di Istruzioni X86, matematiche e logiche. Come vedi sono innumerevoli, ma ciascuna ha il suo senso, anche se molte sono simili e il Programmatore può usare una piuttosto che l'altra. Tutti i "cosi" con X sono Registri (Es. CX, EAX ecc.)

Tabella u108.19. Operazioni aritmetiche.
[TABLE="class: table, width: 939"]
[TR]
[TD="class: border"]Nome

[TD="class: border"]Operandi:
dst, org1, org2[/TD]
[TD="class: border"]Descrizione[/TD]
[TD="class: border"]Indicatori[/TD]

[TD="class: border"]
NEG[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
negation
Inverte il segno di un numero, attraverso il complemento a due.​
operand := -operand[/TD]
[TD="class: border"]
cpazstido
##·##···#[/TD]

[TD="class: border"]
ADD[/TD]
[TD="class: border"]reg, reg
reg, mem
reg, imm
mem, reg
mem, imm[/TD]
[TD="class: border"]
addition
Somma di interi, con o senza segno, ignorando il riporto precedente. Se i valori si intendono con segno, è importante l'esito dell'indicatore di traboccamento (overflow), se invece i valori sono da intendersi senza segno, è importante l'esito dell'indicatore di riporto (carry).​
dst := org + dst[/TD]
[TD="class: border"]
cpazstido
##·##···#[/TD]

[TD="class: border"]
SUB[/TD]
[TD="class: border"]reg, reg
reg, mem
reg, imm
mem, reg
mem, imm[/TD]
[TD="class: border"]
subtraction
Sottrazione di interi con o senza segno, ignorando il riporto precedente.​
dst := org - dst[/TD]
[TD="class: border"]
cpazstido
##·##···#[/TD]

[TD="class: border"]
ADC[/TD]
[TD="class: border"]reg, reg
reg, mem
reg, imm
mem, reg
mem, imm[/TD]
[TD="class: border"]
addition with carry
Somma di interi, con o senza segno, aggiungendo anche il riporto precedente (l'indicatore carry).​
dst := org + dst + c[/TD]
[TD="class: border"]
cpazstido
t········
##·##···#[/TD]

[TD="class: border"]
SBB[/TD]
[TD="class: border"]reg, reg
reg, mem
reg, imm
mem, reg
mem, imm[/TD]
[TD="class: border"]
subtraction with borrow
Sottrazione di interi, con o senza segno, tenendo conto del «prestito» precedente (l'indicatore carry).​
dst := org + dst - c[/TD]
[TD="class: border"]
cpazstido
t········
##·##···#[/TD]

[TD="class: border"]
INC[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
increment
Incrementa di una unità un intero.​
operand++[/TD]
[TD="class: border"]
cpazstido
·#·##···#[/TD]

[TD="class: border"]
DEC[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
decrement
Decrementa di una unità un valore intero.​
operand--[/TD]
[TD="class: border"]
cpazstido
·#·##···#[/TD]

[TD="class: border"]
MUL[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
multiply
Moltiplicazione intera senza segno. L'operando è il moltiplicatore, mentre il moltiplicando è costituito da registri prestabiliti.​
AX := AL*operand
DX:AX := AX*operand[/TD]
[TD="class: border"]
cpazstido
#?·??···#[/TD]

[TD="class: border"]
DIV[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
division
Divisione intera senza segno. L'operando è il divisore, mentre il dividendo è costituito da registri prestabiliti.​
AL := AX/operand
AH := AX%operand
AX := (DX:AX)/operand
DX := (DX:AX)%operand[/TD]
[TD="class: border"]
cpazstido
??·??···?[/TD]

[TD="class: border"]
IMUL[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
signed multiply
Moltiplicazione intera con segno. In questo caso l'operando è il moltiplicatore, mentre il moltiplicando è costituito da registri prestabiliti.​
AX := AL*operand
(DX:AX) := AX*operand[/TD]
[TD="class: border"]
cpazstido
#?·??···#[/TD]

[TD="class: border"]
IDIV[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
signed division
Divisione intera con segno. L'operando è il divisore, mentre il dividendo è costituito da registri prestabiliti.​
AL := AX/operand
AH := AX%operand
AX := (DX:AX)/operand
DX := (DX:AX)%operand[/TD]
[TD="class: border"]
cpazstido
??·??···?[/TD]

[/TD]
[/TR]
[/TABLE]
Tabella u108.20. Operazioni logiche.
[TABLE="class: table, width: 939"]
[TR]
[TD="class: border"]Nome

[TD="class: border"]Operandi:
dst, org1, org2[/TD]
[TD="class: border"]Descrizione[/TD]
[TD="class: border"]Indicatori[/TD]

[TD="class: border"]
NOT[/TD]
[TD="class: border"]reg
mem[/TD]
[TD="class: border"]
NOT di tutti i bit dell'operando.​
dst := NOT dst[/TD]
[TD="class: border"]
cpazstido
·········[/TD]

[TD="class: border"]
AND
OR
XOR[/TD]
[TD="class: border"]reg, reg
reg, mem
reg, imm
mem, reg
mem, imm[/TD]
[TD="class: border"]
AND, OR, o XOR, tra tutti i bit dei due operandi.​
dst := org AND dst
dst := org OR dst
dst := org XOR dst[/TD]
[TD="class: border"]
cpazstido
0#·##···0[/TD]

[/TD]
[/TR]
[/TABLE]
Tabella u108.21. Scorrimenti e rotazioni.
[TABLE="class: table, width: 939"]
[TR]
[TD="class: border"]Nome

[TD="class: border"]Operandi:
dst, org1, org2[/TD]
[TD="class: border"]Descrizione[/TD]
[TD="class: border"]Indicatori[/TD]

[TD="class: border"]
SHL
SHR[/TD]
[TD="class: border"]reg, 1
mem, 1
reg
mem[/TD]
[TD="class: border"]
shift left
shift right
Fa scorrere i bit, rispettivamente verso sinistra o verso destra (l'ultima cifra perduta finisce nell'indicatore del riporto). Se appare un solo operando, la rotazione viene eseguita CL volte. Se il valore immediato è maggiore di uno, è il compilatore che ripete l'istruzione per più volte.​
[/TD]
[TD="class: border"]
cpazstido
#·······#[/TD]

[TD="class: border"]
SAL
SAR[/TD]
[TD="class: border"]reg, 1
mem, 1
reg
mem[/TD]
[TD="class: border"]
shift arithmetically left
shift arithmetically right
Fa scorrere i bit, rispettivamente verso sinistra o verso destra (l'ultima cifra perduta finisce nell'indicatore del riporto), mantenendo il segno originale (logicamenteSAL è identico a SHL). Se appare un solo operando, la rotazione viene eseguita CL volte. Se il valore immediato è maggiore di uno, è il compilatore che ripete l'istruzione per più volte.​
[/TD]
[TD="class: border"]
cpazstido
#········[/TD]

[TD="class: border"]
RCL
RCR[/TD]
[TD="class: border"]reg, 1
mem, 1
reg
mem[/TD]
[TD="class: border"]
rotate left with carry
rotate right with carry
Ruota i bit, rispettivamente verso sinistra o verso destra, utilizzando anche l'indicatore di riporto (carry). Se appare un solo operando, la rotazione viene eseguita CLvolte. Se il valore immediato è maggiore di uno, è il compilatore che ripete l'istruzione per più volte.​
[/TD]
[TD="class: border"]
cpazstido
t········
#·······#[/TD]

[TD="class: border"]
ROL
ROR[/TD]
[TD="class: border"]reg, 1
mem, 1
reg
mem[/TD]
[TD="class: border"]
rotate left
rotate right
Ruota i bit, rispettivamente verso sinistra o verso destra. Se appare un solo operando, la rotazione viene eseguitaCL volte. Se il valore immediato è maggiore di uno, è il compilatore che ripete l'istruzione per più volte.​
[/TD]
[TD="class: border"]
cpazstido
#·······#[/TD]

[/TD]
[/TR]
[/TABLE]
Tabella u108.22. Chiamate e gestione della pila.
 
Ultima modifica:
Complimenti perchè sei sveglio! Sei NaBBo ma cerchi di capire veramente.

Il punto è che per rendere comprensibile anche alle pietre (i NaBBi più NaBBi) questioni così complesse, ho dovuto semplificare allo stremo, quindi sono giuste le tue considerazioni, perchè mancano "dei pezzi".

Dentro alla CPU c'è un Modulo che si chiama INSTRUTION DECODER, che lavora di concerto con un Registro apposito dedicato alle Istruzioni.

Quindi c'è un modulo che si occupa di riconoscere e decodificare le istruzioni x86

Eccolo lì, in alto tutto a sinistra. C'è il REGISTRO ISTRUZIONI e il DECODER ISTRUZIONI

Visualizza allegato 41449

Qua uno schema a blocchi di una CPU più recente, guarda come il Modulo DECODER passa i dati al Modulo per numeri interi o al Modulo per numeri in virgola mobile:



Visualizza allegato 41453

Queste sono architetture che si chiamano Von Neuman, ma esistono altri tipi di architetture di CPU.

Questo è un elenco NON esaustivo di Istruzioni X86, Come vedi sono innumerevoli, ma ciascuna ha il suo senso, anche se molte sono simili e il Programmatore può usare una piuttosto che l'altra. Tutti i "cosi" con X sono Registri (Es. CX, EAX ecc.)
...cut...

ok ok non voglio bruciare le tappe e comunque andare troppo a fondo sarebbe anche troppo dispendioso, lavorando e facendo una vita sociale e sportiva impegnativa ho poco tempo e stasera ho rubato del tempo al gioco su pc per cercare di carpire il più possibile :) è un evento che non mi metta a giocare quando sono a casa da solo senza fidanzata! :shock:

si AMD con il suo BD (e le sue evoluzioni) ho notato che hanno apportato uno stravolgimento nell'architettura riprendendo lo schema CMT sviluppato 10/15 anni fa da non ricordo chi, se non dico una caxxata, e poi accantonato... oltre ad avere tanti moduli specializzati e condivisi come anche il FETCH per esempio o l'attuale DECODER (che si dica essere sottostimato) o altro, si parlava appunto del fatto che utilizzano una FLEX-FPU (sovradimensionata rispetto una FPU classica) per modulo invece che quella classica di prima del K10/Stars ed era uno dei motivi di altalenamento nelle prestazioni...
parere personale tutti hanno detto che è stato un flop con la prima incarnazione, ma se pensiamo che intel col suo SMT appena uscita faceva pena e lo ha evoluto nel tempo, il CMT è appena nato e comunque spalleggia con gli i5 e sta poco dietro gli i7 più spinti, ma il 2600k è sempre dietro a parità di nm(32) anche se uno Bulk e l'altro SOI (mal cacato :D)

diciamo che a grandi linee se vedo uno schema tipo o a blocchi come quello postato da te di SR riesco anche a intuire la logica che, ma il suo funzionamento proprio no e per questo sono molto interessato a ciò che spieghi :)

...va beh, non voglio farti perdere ancora tempo con le mie domande :D e i miei fuori pista,
vai pure avanti nella tabella di marcia che avevi prefissato per noi NaBBi :D
 
Ultima modifica da un moderatore:
non restisto, domanda nabba :lol: non ho dormito per questo ahahhh! :annoiato: no, non è vero... :D
ma quando si parla di "programmare una cpu", cosa si intende in senso lato? cioè a parte "scrivere" col tastierino o l'assembler, ma fisicamente nella cpu cosa succede e cosa si fa? ok ora siamo a 30 anni avanti e sarebbe troppo complicato capire con sti nanotransistor, ma tipo con il cadavere 8008 da 4 bit o anche con lo Z80 da 8 bit?
...cioè quei grafici e schemi che hai mostrato cosa sono poi fisicamente e la cpu come fa a ricordare le istruzioni e i vari compiti aritmetici interi o in virgola o i compiti logici che dovrà saper fare in qualsiasi momento?
...tipo come fai fisicamente a rappresentare un AND oppure un OR un NOT, ad esempio?... :boh:
 
Ultima modifica da un moderatore:
sarebbe bello se continuassi con una guida di programmazione per l'8086 (che è il più semplice)... non ho mai imparato a programmarlo in maniera decente...
 
non restisto, domanda nabba :lol: non ho dormito per questo ahahhh! :annoiato: no, non è vero... :D
ma quando si parla di "programmare una cpu", cosa si intende in senso lato? cioè a parte "scrivere" col tastierino o l'assembler, ma fisicamente nella cpu cosa succede e cosa si fa? ok ora siamo a 30 anni avanti e sarebbe troppo complicato capire con sti nanotransistor, ma tipo con il cadavere 8008 da 4 bit o anche con lo Z80 da 8 bit?
...cioè quei grafici e schemi che hai mostrato cosa sono poi fisicamente e la cpu come fa a ricordare le istruzioni e i vari compiti aritmetici interi o in virgola o i compiti logici che dovrà saper fare in qualsiasi momento?
...tipo come fai fisicamente a rappresentare un AND oppure un OR un NOT, ad esempio?... :boh:

La risposta è complicata, perchè sarebbero necessarie conoscenze di elettronica. Cmq dentro la CPU immaginati degli "scambi", dei ponti levatoi, dove passa o nmo la corrente. Tutto qua.

Questo è un circuito equivalente ad un OR, è la stessa cosa:

algebra_di_Boole_clip_image004.webp

La tabella della verità è che la lampada si accende basta che uno qualsiasi (ma anche entrambi) degli interruttori, siano chiusi, cioè a 1. La corrente passa ed accende la lampada.

algebra_di_Boole_clip_image002.webp Y
A
B
Y
1​
1​
1​
1​
1​
1​
1​

Questo invece è l'equivalente dell'AND.
algebra_di_Boole_clip_image008.webp

Non basta che un interruttore sia premuto (a 1), perchè la corrente non passa. E' necessario che siano antrambi chiusi (a 1) affinchè la corrente arrivi alla lampada, cioè si porti nella condizione di "acceso" o 1.

algebra_di_Boole_clip_image006.webp Y
A
B
Y
1​
1​
1​
1​
1​


Cmq questo è un AND analizzato elettronicamente:

Lo schema interno di un chip che fa solo funzione di un AND a 2 ingressi (4 porte a 2 ingressi):

DM7409-pinout.webpSN74F08-pinout.webp200px-7400.webp

e questo è come è costituita elettronicamente una singola di queste porte, ma spiegare il minimo dettaglio di funzionamento esula dal Corso per NaBBo.

200px-7400_Circuit.svg.webp

Come detto, imaginati un corso d'acqua (la corrente), che passa o meno attraverso delle chiuse. Questi scambi elettronici di chiuse (rubinettoni) che fanno passare o meno la corrente d'acqua, determina il risultato in uscita (un mulino ad acqua che gira o meno)

- - - Updated - - -

sarebbe bello se continuassi con una guida di programmazione per l'8086 (che è il più semplice)... non ho mai imparato a programmarlo in maniera decente...

Qua non si tratta più di NaBBI. Sarebbe impossibile fare un corso per NaBBI che abbia senso.

- - - Updated - - -

---------------------------------------------------------------------------------------
s
ps. il fatto che 1 Byte sia 8 bit e non 4 bit da cosa è dovuto, come mai hanno fatto questa scelta? siccome era semplice fare si che fosse 1111(binario in bit) = 1(binario in Byte) = F(esadecimale) = 15(decimale)

pps come mai questa ALU ha molte parti logiche al suo interno eppure è definita solo a 2bit?
http://upload.wikimedia.org/wikipedia/commons/0/0f/2-bit_ALU.svg
vedo che come ingresso ha solo A01 + B01 ma poi ha una serie di parti logiche che sembrano eccessive per una ALU a 2 bit... :look:

Un BYTE sono 8 bit. E' una convenzione. Le cose si stavano facendo complicate con l'aumentare dei bit, quindi qualcuno si è svegliato la mattina e ha gridato:

4 bit sono chiamati MEZZO BYTE e più raramente NIBBLE
8 bit sono UN BYTE
16 bit sono una WORD (parola)
32 bit sono una DWORD (double word - doppia parola)
64 bit sono una QWORD (quad word - quadrupla parola)

Capito?

Quanto all'unità logica nel link che hai postato, SI, è a 2 bit. Devi ricordarti che una singola ALU fa almeno 10 tipi di operazioni diverse, le 4 principali matematiche + tutte quelle logiche. E' normale che sia composta da un sacco di porte logiche di tutti i tipi!

2-bit_ALU.svg.htm_20121219185038.webp
 

Allegati

  • !CEgfGDgBWk~$(KGrHqEOKiEE0j6vHY!UBNSG(6GPCw~~_35.webp
    !CEgfGDgBWk~$(KGrHqEOKiEE0j6vHY!UBNSG(6GPCw~~_35.webp
    6.9 KB · Visualizzazioni: 254
Ultima modifica:
certo mi hai chiarito un po le idee :)
si quella del nibble e dei word e multipli ora che l'ho riletto è tornata alla luce dai meandri della mia materia grigia :D come nella calcolatrice di winzoz che se metti su programmazione ti chiede se byte/word/qword/dword (8/16/32/64 bit)
forse per la scelta dei 1B=8bit è stata fatto perche pur essendo il 4004 il primo microprocessore della storia loro intendono che con 8008 hanno gettato le basi più durature per poi evolverlo nel famoso 8086, o magari sono mie fantasie...
...forse non capivo bene perchè io intendevo che i pin che collegano la cpu al socket fossero sempre quelli anche all'interno come percorsi possibili dei vari bus ram dati ecc, e invece dentro si diramano e si sviluppano il quel che poi si traduce nel moltiplicarsi dei transistor esistenti e cosi via, esempio banale appunto quella ALU a 2 bit che poi al suo interno si dirama in tanti altri piccoli collegamenti possibili tra parti logiche ed aritmetiche, ecc...
http://flylogic.net/knohl/i4004/i4004.jpg questo è il 4004 (jpeg 8mb) e ho trovato anche un 4004 (jpeg 45mb) di file scaricabile :D

ho detto caxxate al 50%? :D
 
No, tutto giusto. Cmq anche lo sparare cazzate è un metodo didattico: a furia di spararle si azzecca anche le cose giuste!
biggrin.gif.pagespeed.ce.U7oG6bbks3.gif
 
Si, oramai la CPU in senso stretto può essere un discorso concluso. Un NaBBo più di questo non ha bisogno.
 
Si, oramai la CPU in senso stretto può essere un discorso concluso. Un NaBBo più di questo non ha bisogno.

ok ok, ultima domanda prima del prossimo step :D
...ma come si fanno a controllare tutti questi "rubinetti" interni se i pin del socket che ricevano il sagnale elettrico sono 40 (nel caso del 8086) ma all'interno ci sono n^ porte per operazioni matematiche e logiche, o decidere se tenere in memoria o meno un bit/byte,ecc... delle varie componenti interne della cpu?
cos'è fisicamente un transistor e a cosa serve il pin "ground" della messa a terra nella cpu e come agisce il clk? :shock: sono profondamente incolto... esempio qui http://www.tomshw.it/forum/attachme...710149-la-cpu-spiegata-ad-un-nabbo-pinz80.png
presumo che per transistor si intendano tutti gli interrutori presenti? e i vari collegamenti tra uno e l'altro si chiamano sempre bus?
 
Ultima modifica da un moderatore:
ok ok, ultima domanda prima del prossimo step :D
...ma come si fanno a controllare tutti questi "rubinetti" interni se i pin del socket che ricevano il sagnale elettrico sono 40 (nel caso del 8086) ma all'interno ci sono n^ porte per operazioni matematiche e logiche, o decidere se tenere in memoria o meno un bit/byte,ecc... delle varie componenti interne della cpu?
cos'è fisicamente un transistor e a cosa serve il pin "ground" della messa a terra nella cpu e come agisce il clk? :shock: sono profondamente incolto... esempio qui http://www.tomshw.it/forum/attachme...710149-la-cpu-spiegata-ad-un-nabbo-pinz80.png
presumo che per transistor si intendano tutti gli interrutori presenti? e i vari collegamenti tra uno e l'altro si chiamano sempre bus?
ù


Un transistor può essere paragonato ad un interruttore elettronico.

Questo è un transistor:

trans_npn_generico.webp

In questo circuito, se dai corrente alla base, chiudi in contatto tra emettitore e collettore e la lampada si accende (quello a destra è un tester).

I transistor Il transistor come amplificatore di segnale Il transistor nel controllo di potenza .gif

In pratica, dare corrente alla base equivale a spingere con il dito un pulsante che chiude il circuito tra emettitore e collettore.

Poi una porta, al suo interno, è costituita da decine, centinaia di transistor. Ma questo è roba da Ingenieri, non da NaBBi.

image008.gif

Fisicamente poi, un transistor, è un insieme di piastrine di semi-conduttore messi in serie, chiamate giunzioni. Di solito sottilissime lastre di silicio al cui interno sono inseriti dei materiali detti di "Drogaggio" che fanno diventare il materiale, normalmente isolante, un semi-conduttore.

Transistor_BJT.webptransistor-schema.webp

Il piedino (o i piedini) di GND sono sempicemente il meno di alimentazione: +5V è il posivo (polo + di una batteria) il GND e il negativo (polo - di una batteria) Tutto qua!

Il clock invece è un passare da 1 a 0 (da 5V a zero) in continuazione, e dà un segnale che attiva o meno alcuni transistor dentro la CPU. Di solito è collegato ad una porta logica, per esempio AND, che passa il dato solo quando uno dei suoi pioedini di ingresso collegato al CLOCK passa a 1, quinse se il clock è a 0, si deve aspettare che passi a 1 per avere il risultato in uscita.
Tante porte collegate così, sincronizzano i loro risultati con il CLOCK.

Capito?
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top