Il Linguaggio Macchina I N F O R M A T I C A CdL Magistrale in Odontoiatria e Protesi Dentaria...
-
Upload
giacinta-mele -
Category
Documents
-
view
221 -
download
2
Transcript of Il Linguaggio Macchina I N F O R M A T I C A CdL Magistrale in Odontoiatria e Protesi Dentaria...
Il Il Linguaggio Linguaggio
MacchinaMacchina
I N F O R M A T I C AI N F O R M A T I C A
CdL Magistrale in Odontoiatria CdL Magistrale in Odontoiatria e Protesi Dentariae Protesi Dentaria
Università degli Studi di Università degli Studi di CataniaCatania
Prof. Mario PavoneProf. Mario [email protected]://www.dmi.unict.it/mpavone/AA. 2012/2013
Linguaggio Macchina
Insieme delle istruzioni decodificate ed eseguite dall’unità di elaborazione
Istruzioni possono essere operazioni: elaborazione dell’informazioneelaborazione dell’informazione trasferimento dell’informazionetrasferimento dell’informazione
Istruzioni linguaggio macchina: Istruzioni aritmetico-logicheIstruzioni aritmetico-logiche Istruzioni di trasferimento datiIstruzioni di trasferimento dati Istruzioni di controlloIstruzioni di controllo
Tipologia delle operazioni svolte
Operazioni di manipolazione/elaborazione Somma Moltiplicazione
Operazioni di trasferimento Da periferica-input a MM Da MM a CPU Da CPU a MM Da MM a periferica-output
Es.: valutazione di espressione
Vogliamo calcolare il valore dell’espressione:
(a+b) x (c+d)leggendo i valori delle variabili a, b, c, d dal dispositivo di ingresso e scrivendo il risultato della valutazione sul dispositivo di uscita.
Un algoritmo generale
Leggi dal dispositivo di ingresso il valore delle variabili a, b, c, da, b, c, d
Somma il valore di aa al valore di bb Salva il risultato parziale ottenuto Somma il valore di cc al valore di dd Moltiplica il risultato parziale appena ottenuto con
quello precedentemente salvato Scrivi sul dispositivo di uscita il risultato della
valutazione complessiva Termina l’esecuzione del programma.
L’algoritmo (1) Scrivi nella cella di memoria centrale riservata al
valore della variabile aa il valore letto dal dispositivo di ingresso (disponibile nel registro dati della periferica). Fai la stessa cosa per b, c, db, c, d
Somma il valore di aa al valore di bb Copia il contenuto della cella di memoria riservata ad
aa nel registro A Copia il contenuto della cella di memoria riservata a
b nel registro B Somma il contenuto dei registri A e B
Salva il risultato parziale, contenuto nel registro A, in una cella di memoria predisposta per il risultato (zz)
L’algoritmo (2)
Somma il valore di cc al valore di dd Copia il contenuto della cella di memoria riservata a
cc nel registro A Copia il contenuto della cella di memoria riservata a
bb nel registro B Somma il contenuto dei registri A e B
Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato Copia il contenuto della cella riservata a zz nel
registro B (z e B contengono ora a+b, mentre A contiene c+d)
Moltiplica il contenuto dei registri A e B.
L’algoritmo (3)
Scrivi sul dispositivo di uscita il risultato della valutazione complessiva Memorizza il risultato appena calcolato (e
disponibile nel registro A) nella cella di memoria riservata a zz
Copia il contenuto della cella di memoria riservata a z nel registro dati della periferica di uscita
Termina l’esecuzione del programma
Codifica delle istruzioni
Sono codificate mediante stringhe binarie di bit Un’istruzione è suddivisa in
codice operativo: operazione da eseguire (opcodeopcode)
operandi: dove reperire i dati dove scrivere il risultato
Il codice operativo e gli operandi sono anch’essi codificati in forma binariaforma binaria
Es: esecuzione di programmi
codifica di codifica di un’istruzioneun’istruzione
campo codice operativocampo codice operativo: : operazione elementare richiesta.operazione elementare richiesta.
campo operandocampo operando: forniscono : forniscono informazioni dettagliate informazioni dettagliate
sull’operazione richiesta.sull’operazione richiesta.
No.No. istruzioneistruzione descrizionedescrizione
11 1 RXY1 RXYCarica (LOAD) nel registro R la configurazione di bit trovata nella cella di memoria il cui indirizzo è XY
22 2 RXY2 RXY Carica (LOAD) nel registro R la configurazione di bit XY
33 3 RXY3 RXYMemorizza (STORE) nella cella di memoria di indirizzo XY il contenuto del registro R
44 4 0RS4 0RS Sposta (SHIFT) la configurazione di bit del registro S e copiala nel registro R
55 5 RST5 RSTSomma (ADD) le configurazioni di bit dei registri S e T e pone il risultato nel registro R (rappr. in comlemento a due)
66 6 RST6 RSTSomma (ADD) le configurazioni di bit dei registri S e T e pone il risultato nel registro R (rappr. in virgola mobile)
77 7 RST7 RSTApplica l’operatore OR alle configurazione di bit dei registri S e T e memorizza il risultato nel registro R
88 8 RST8 RSTApplica l’operatore AND alle configurazione di bit dei registri S e T e memorizza il risultato nel registro R
99 9 RST9 RSTApplica l’operatore XOR alle configurazione di bit dei registri S e T e memorizza il risultato nel registro R
1010 A R0XA R0XRuota (ROTATE) di un bit a destra X volte la configurazione di bit memorizzata nel registro R
1111 B RXYB RXYSalta (JUMP) all’istruzione nella cella di memoria XY se il contenuto del registro R è uguale a quello del registro 0
1212 C 000C 000 Termina (HALT) l’esecuzione
Es: decodifica istruzione
Decodifica dell’istruzione 35A7: Decodifica dell’istruzione 35A7: memorizza nella cella memorizza nella cella di memoria A7 il contenuto del registro 5di memoria A7 il contenuto del registro 5
Il Ciclo Macchina
Fasi di esecuzione
L’unità di controllo svolge le sue attività ripetendo ciclicamente un algoritmo in un processo detto ciclo ciclo della macchinadella macchina, costituito da tre fasi:
ReperimentoReperimento (fetchfetch); DecodificaDecodifica (decodedecode); EsecuzioneEsecuzione (executeexecute).
Ciclo della macchinaReperisce
l’istruzione successiva dalla memoria (come
indicato dal contatore di
programma) e poi incrementa il
contatore di programma
Decodifica la configurazione di bit
nel registro delle istruzioni
Esegui l’operazione indicata dall’istruzione nel registro delle
istruzioni
Tempi del ciclo della macchina
Istruzione 1
Istruzione 2
Istruzione 3
Ordine di esecuzione delle
istruzioni
Tempo
Lettura
Lettura
Lettura Decodifica
Decodifica
Esecuzione
Esecuzione
Decodifica Esecuzione
Componenti fondamentali della CPU
Componenti fondamentali della CPU
Unità di controlloUnità di controllo: gestione dei collegamenti tra registri e ALU coordina le operazioni di tutto il processore (anche
quelle del data path!); regola il flusso dei dati e indica quali registri debbano
essere collegati agli ingressi e all’uscita dell’ALU; invia all’ALU il codice dell’operazione da eseguire; riceve indicazioni sull’esito dell’operazione appena
eseguita dall’ALU e gestisce opportunamente queste informazioni;
comprende alcuni registri di uso specifico Program Counter (PC) – qual è l’istruzione successiva; Instruction Register (IR) – istruzione in corso d’esecuzione; …
Data path
Registriingresso ALUR00 R01 R02 R03 … … … …
Registri
ALU
Registro uscita ALUXX
YY
XX++YY
Istruzione(e.g. add) esito
XX YY
XX++YY
XX YY
si consideri l’istruzione A A + B + C
(assegna alla variabile A la somma del contenuto delle variabili A, B e C);
le variabili A, B e C si trovino rispettivamente nelle celle di memoria 4000 (A)4000 (A), 4004 (B)4004 (B) e 4008 (C)4008 (C)
Esempio:
Esempio (contd):Esempio (contd):
Num
Istruzione Commento
... ... ... ...789 load R02,4000 trasferisce il contenuto della cella 4000 (A) nel registro
R02
790 load R03,4004 trasferisce il contenuto della cella 4004 (B) nel registro R03
791 add R01,R02,R03
somma il contenuto dei registri R02 e R03 e scrive il risultato in R01
792 load R02,4008 trasferisce il contenuto della cella 4008 (C) nel registro R02
793 add R01,R01,R02
somma il contenuto dei registri R01 e R02 e scrive il risultato in R01
794 store R01,4000 trasferisce il contenuto del registro R01 nella cella 4000 (A)
... ... ... ...
0789
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
Collegamenti di controllo
Collegamenti per il trasferimento dati
Collegamenti per il trasferimento istruzioni
0789
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
load R02,4000
+1
letturalettura
0790
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
load R02,4000
4000
1492
lettura
07900790
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
+ 1
load R02,4000
1492
lettura
load R03,4004
0791
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
load R03,4004
4004
1918
lettura
1492
0791
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
+ 1
load R03,4004
1492
lettura
1918
add R01,R02,R03
0792
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
add R01,R02,R03
1492
1918
add
esito
3410
0792
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
+ 1
add R01,R02,R03
1492
lettura
1918
3410
load R02,4008
0793
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
load R02,4008
4008
lettura
1492
1918
3410
2006
0793
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
+ 1
load R02,4008
2006
lettura
1918
3410
add R01,R01,R02
0794
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
add R01,R01,R02
19182006
add
esito
34105416
0794
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
+ 1
add R01,R01,R02
2006
lettura
1918
5416
store R01,4000
… … … … …
4000 1492
4004 1918
4008 2006
… … … … …
0795
… … … … …0789 load R02,40000790 load R03,40040791 add
R01,R02,R030792 load R02,40080793 add
R01,R01,R020794 store R01,4000… … … … …
PSW
Data pathData path Unità di controlloUnità di controllo
CPU
RegistriRegistri
ALUALU
IR
PC
R00R01R02R03R04R05…
Memoria
store R01,4000
4000
scrittura
2006
1918
5416
X X 5416
THATTHAT’’S ALL !!S ALL !!
(for today)(for today)