Please enable JavaScript.
Coggle requires JavaScript to display documents.
FONDAMENTI DI INFORMATICA (:fire: ARCHITETTURA DEGLI ELABORATORI (STACK…
FONDAMENTI DI INFORMATICA
CODIFICA BINARIA
sistemi di numerazione
conversione di base
operazioni binarie
aritmetica dei calcolatori
precisione finita e predeterminata per la macchina
insieme finito dei numeri rappresentabili
operazioni in binario
insieme dei numeri NON CHIUSO rispetto a somma, sottrazione e moltiplicazione
:fire: RAPPRESENTAZIONE
modulo e segno
risolve il problema del valore assoluto tenendo il bit più significativo per il segno
1=negativo
0=positivo
:no_entry: PROBLEMA
due rappresentazioni diverse per zero
operazioni algebriche rallentate per confronto segni
2^n valori rappresentabili
2^(n-1) positivi e altrettanti negativi
2 valori per lo zero
complemento alla base
:no_entry: PROBLEMA
overflow per somma di valori dello stesso segno (escono dalla linea dei valori rappresentabili)
risolve i problemi del modulo e segno.
inversione delle cifre +1
b^n combinazioni di numeri rappresentabili
b=base, n=nº di bit
0 —> ((b^n)/2)-1 per positivi
(b^n)/2 —> b^n -1 per negativi
notazione ad eccesso
virgola fissa
virgola mobile
problemi
operazioni
standard IEEE 754
valore assoluto
2^n valori rappresentabili
n=nº di bit
:no_entry: PROBLEMA
numeri negativi non rappresentabili
complemento a 1
inverte ogni singola cifra del numero in binario, mantenendo per il bit più significativo il sistema del modulo e segno, per cui 0=pos e 1= neg
:no_entry: PROBLEMA
presenta gli stessi problemi del modulo e segno
codici binari ridondanti vs. non ridondanti
:fire: ARCHITETTURA DEGLI ELABORATORI
BUS DEI DATI
BUS DEGLI INDIRIZZI
STACK POINTER
registro che punta all’ultima cella di memoria dello stack riempita
STACK
area di memoria gestita con logica LIFO (=last in first out) nella quale vengono salvati gli indirizzi di ritorno
se viene inserito un indirizzo nello stack, lo stack pointer decrementa di 1 (=PUSH), al contrario incrementa di 1quando viene prelevato (=POP)
REGISTRI
organi di memoria per salvare sequenze di bit (dati, indirizzi di memoria, istruzioni di programma)
:red_flag:PRO
usati per garantire l’efficienza della CPU perché le memorie non possono essere veloci quanto il processore
FLAG
registro formato da un insieme di indicatori che comunicano lo stato di diverse operazioni e condizioni.
dal tipo di flag si può anche perfezionare il calcolo
ACC
registro “accumulatore” nel quale viene salvato il risultato dell’ultima operazione eseguita dall’ALU, che può poi essere riutilizzato e/o salvato in un generico registro
ALU
è l’unità logico-aritmetica che si occupa proprio di svolgere queste operazioni
preleva gli operandi dai registri generici, mentre il tipo di operazione da eseguire dal CONTROLLER e deposita il risultato nell'ACC
CONTROLLER
circuiteria che coordina l’esecuzione dell’istruzione basandosi sul codice operativo decodificato, cioè
coordina l’elaborazione dei dati
DECODER
circuiteria che decodifica il codice operativo all’interno dell’ INSTRUCTION REGISTER
IR
registro in cui viene salvato il codice operativo dell'istruzione
PROGRAM COUNTER
registro che punta alla successiva istruzione da eseguire
MEMORIE
metodi di indirizzamento della memoria
(=modi di specificare l’indirizzo in memoria)
diretti
immediato
: valore dell’operando specificato come costante
assoluto
: indirizzo della cella di memoria
diretto con registro
: registro che contiene l'operando
implicito
: il codice operativo sottintende l’uso di registri
esempio:
indiretti
relativo
: valore costante da sommare nel PC per ottenere l’indirizzo della cella di memoria che punta all'operando
indiretto con registro
: registro che contiene l’indirizzo della cella di memoria dove si trova l'operando
con autoincremento
: come per l’indiretto con registro, solo che poi il registro viene incrementato della dimensione dell'operando
con autodecremento
: simmetrico rispetto all'autoincremento
con spiazzamento
: l’istruzione specifica un valore in complemento a 2 da sommare al valore contenuto nel registro specificato, così da trovare l’indirizzo della cella di memoria dell'operando
indiretto con registro e spiazzamento
:
con registri indice
:
con lo stack pointer
:
ISTRUZIONI
codice operativo + operando 1 + operando 2
:fire: FASI DI ESECUZIONE
FETCH
lettura dei campi che compongono l’istruzione prelevata dalla memoria
caricamento dei dati negli opportuni registri
DECODE
decodifica del codice operativo contenuto nell’INSTRUCTION REGISTER
EXECUTE
invio dei comandi e dei dati alle unità opportune, ergo, viene eseguita l’istruzione del codice operativo
:fire: PIPELINE
metodo che permette di sovrapporre le tre fasi di esecuzione di un’istruzione mediante la
PARALLELIZZAZIONE
dei flussi di operazione della CPU
richiede:
istruzioni eseguite in sequenza
uso di risorse diverse tra le diverse fasi, ergo, risorse mutualmente esclusive
le fasi devono essere di pari durata
:no_entry:
PROBLEMI
alcune operazioni possono dipendere da altre operazioni (=collo di bottiglia)
presenza di istruzioni di salto (=perdita del beneficio che si ottiene dalla pipeline)
tipi di istruzioni
trasferimento dati
tra memoria e registri (e viceversa), registri e registri, registri e unità esterna (e viceversa)
ld (=load) <destinazione>, <provenienza>
st (=store) <provenienza>, <destinazione>
mov (=move/copy) <provenienza>, <destinazione>
inp (=input) <unità di input>, <destinazione>
out (=output) <provenienza>, <unità di output>
aritmetiche
add (=addition) <registro (=addendo 1)>, <destinazione (=addendo 2)>
sub (=subtraction) <destinazione (=sottraendo)>, <registro (=minuendo)>
adc (=add with carry)
sbc (=subtraction with carry)
eseguite dall’ALU che, oltre a caricare il risultato in ACC, produce un vettore di bit per il registro di FLAG con il “log” dell’operazione eseguita, contente informazioni aggiuntive importanti sul risultato che ne aiuta alla corretta interpretazione:
C (=carry)
W (=overflow)
Z (=zero)
N (=negative)
logiche
and <destinazione>, <provenienza>
or <destinazione>, <provenienza>
xor <destinazione>, <provenienza>
not <operando>
rotazione e shift
sra (=arithmetic shift to the right) <operando>, <contatore> shift verso destra di n posizioni con eccesso nel carry
rr (=rotation to the right) <operando>, <contatore> ruota in modo che i bit meno significativi risultino poi più significativi
controllo programma
jp (=jump) <indirizzo di destinazione> salto incondizionato senza ritorno
jr (=jump to register) <indirizzo di destinazione>
jal (=jump and link) <indirizzo di destinazione> salto incondizionato con ritorno all’istruzione successiva (salvata sul registro di RETURN ADDRESS)
beq (=branch on equal) <operando 1>, <operando 2>, <indirizo di destinazione> salto condizionato al confronto dei due operandi
controllo macchina
nop (=no operation)
reset azzera lo stato della CPU e riavvia la macchina
LOGICA DEL PROCESSORE
ALGEBRA BOOLEANA