Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Previously on Tecniche della Programmazione
1/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Previously on Tecniche della Programmazione
2/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Previously on Tecniche della Programmazione
3/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Previously on Tecniche della Programmazione
4/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
And now
- Software di Base e Software Applicativo
- Architettura del calcolatore (Macchina di Von Neumann)- MEMORIA CENTRALE- CPU (Central Processing Unit)- BUS- (Interfacce per le) PERIFERICHE
- Linguaggio Macchina- Esempio di linguaggio macchina- Programma scritto in linguaggio macchina- Esecuzione di un programma scritto in linguaggio
macchina5/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 6/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Livelli funzionali
ciascun LIVELLO offre un insieme di funzionaita'
ciascun LIVELLO realizza le proprie
funzionaita' usando le funzionalita' proprie e
quelle del livelloprecedente
le funzionalita' di ciascun LIVELLO sono realizzatemediante il linguaggio di quel livello, che permette di scrivere frasi in cui si chiamano ad essere eseguite
funzionalita' di quel livello (che possono anche chiamarequelle del livello sottostante)
7/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Architettura del CalcolatoreQUALI sono le componenti del sistema?
COME INTERAGISCONO fra loro?
8/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Macchina di Von NeumannUn modello di architettura: il modello semplificato chedenota il funzionamento del calcolatore e le relazionitra le sue componenti.
- Il calcolatore riceve dati in ingresso (DATI DI INPUT) e "li trasforma" in dati in uscita (DATI DI OUTPUT)
- I dati sono entita' numeriche memorizzate (cioe’ contenute, rappresentate) nella memoria (una delle componenti) del calcolatore.
(MEMENTO: l'INFORMAZIONE e' un dato o un gruppo di dati che hannouna semantica associata)
9/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Macchina di Von NeumannUn modello semplificato … che ancora vale …- Il calcolatore riceve dati in ingresso (DATI DI INPUT) e "li trasforma" in dati in uscita
(DATI DI OUTPUT)- I dati sono entita' numeriche rappresentate nella memoria (una delle componenti) del
calcolatore.(l'INFORMAZIONE e' un dato o un gruppo di dati che hanno unasemantica associata)
- La trasformazione (ELABORAZIONE) dei dati avviene mediantel'esecuzione di un programma.
Diversi programmi corrispondono a diverse elaborazioni …
(Anche i programmi risiedono nella memoria, quando devonoessere eseguiti)
10/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 11/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 12/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 13/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 14/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Memoria Centrale
- Operazione di MEMORIZZAZIONE: un dato/istruzione viene copiatoin un’area di memoria
- Operazione di ACCESSO: il valore contenuto in un’area di memoriaviene “acceduto”, ad esempio viene consultato per copiarlo altrove al fine di usarlo per qualche altra operazione
La chiamano RAM: Random Access Memory; non vuol dire che si accede a caso … vuol dire che le operazioni di accesso e memorizzazione sonopossibili ovunque, senza un ordine obbligatorio che imponga di visitareun’area prima di un’altra a priori. In altre parole, le aree della memoria(locazioni) hanno un indirizzo che permette di identificarle univocamente.
La CPU accede direttamente alla RAM, attraverso il BUS.
Consente di registrare (MEMORIZZARE …) dati/istruzioni in modo temporaneo: il contenutoscompare quando la memoria non e’ alimentata (la memoria e’ VOLATILE)
15/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Struttura semplificata della memoria centrale
AccessoMemorizzazione dato acceduto,
o da memorizzare
BUS dati
Cella selezionatain base all’indirizzo
gruppo di celle (LOCAZIONI DI MEMORIA); ciascuna (PAROLA) di 16/32/64 bit
BUS indirizzi
BUS di controllo
Indirizzidelle celle
bit
16/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 17/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Bah, la terminologia evolve … vedremo … per ora vale quanto scritto prima: kB 1024, etc … !!!!
18/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 19/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 20/86
Si', ma ... Cosa c'e' in unacella?
istr. macchina per operazione tra due registri
istr. macchina (load) da memoria a registro
0000000010 (add) R1 R2
000000000 (Load)
numero: un dato, che sicuramente rappresenta un'informazione ...; in questi casi un numeroreale rappresentato con segno, esponente e mantissa, oppure un intero rappresentato in complement a due su 32 bit, oppure un intero positivo su 16 bit, oppure due caratteri …
What the hell, instructions, numbers ...in a word DATA; in another word INFORMATION
codiceoperazione
IND REG
Codiceoperazione
Reg1 Reg2
10101001111100000000000000000000
1010100111110000
21/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 22/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Funzionamento di ACCESSO e MEMORIZZAZIONEIn ACCESSO, ilprocessore invia l’indirizzodella cella da visitare, attraverso il BUS INDIRIZZI. E il valore acceduto e’ resodisponibile attraverso ilBUS DATI.
In MEMORIZZAZIONE, ilprocessore invia il dato da copiare in memoria, attraverso il BUS DATI, e l’indirizzo della locazione in cui eseguire la copia, attraverso il BUS INDIRIZZI. E il valore viene copiatonella cella indicata.
Ciascun accesso avviene in un tempo INDIPENDENTE DALLA LOCAZIONE (cioe’ indipendente dall’indirizzo: … remember, Accesso Diretto: Random Access Memory)
23/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 24/86
Struttura della CPU
accedi / memorizza
25/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Elementi di una CPU
Unità di controllo
Unità aritmetico
logica (ALU)
Registri
CPUUnità di controllo Control Unit – CU)• Svolge funzioni di controllo, decide quali istruzioni
eseguire. Per ogni istruzione da eseguire, preparal'esecuzione, spostando i dati nei registri opportuni.
Unità aritmetico–logica (Arithmetic-Logic Unit – ALU)• esegue le operazioni aritmetico-logiche
(piu', meno, …, confronto).
Registri• memoria ad alta velocità usata per risultati
temporanei e informazioni di controllo;• il valore massimo memorizzabile in un registro è
determinato dalle dimensioni del registro;• esistono registri di uso generico e registri specifici:
26/86
Registri (1/2)
Esistono registri di uso generico eregistri specifici :• PC: contatore delle istruzioni (program counter)
• contiene l’indirizzo della prossima istruzione da eseguire
• IR: registro delle istruzioni (instruction register)• contiene l’istruzione che deve essere eseguita
• PSW: program status word• contiene informazioni, opportunamente codificate,
sull’esito dell’ultima istruzione che è stata eseguita
27/86
Registri (1/2)
Esistono registri di uso generico eregistri specifici :• PC: contatore delle istruzioni (program counter)
• contiene l’indirizzo della prossima istruzione da eseguire
• IR: registro delle istruzioni (instruction register)• contiene l’istruzione che deve essere eseguita
• PSW: program status word• contiene informazioni, opportunamente codificate,
sull’esito dell’ultima istruzione che è stata eseguita
28/86
Registri (2/2)
• MAR: registro indirizzi della memoria• indirizzo della cella di memoria che deve essere
acceduta o memorizzata
• MDR: registro dati della memoria• dato che è stato acceduto o che deve essere
memorizzato
• registri generali• per memorizzare gli operandi ed il risultato di una
operazione
29/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Registri (2/2)
• MAR: memory address register• indirizzo della cella di memoria che deve essere
acceduta o memorizzata
• MDR: memory data register• dato che è stato acceduto o che deve essere
memorizzato
• registri generali• per memorizzare gli operandi ed il risultato di una
operazione
30/86
Unità Aritmetico-LogicaL'Unità Aritmetico-Logica (ALU) ècostituita da un insieme di circuitiin grado di svolgere le operazionidi tipo aritmetico e logico
La ALU accede ai valori neiregistri, esegue operazioni traquei valori, memorizza risultatidelle operazioni in registri
31/86
ESEGUE Istruzioni MACCHINA per elaborazione dati• aritmetiche• logiche (AND, OR, NOT)• relazionali (maggiore, minore, uguale, ...)
ESEGUE Istr. MACCHINA per controllo flusso esecuz.• sequenza• selezione• ciclo• salto (Jump) ad una data istruzione
ESEGUE Istruzioni MACCHINA per trasferimento dati• dati ed istruzioni fra CPU e memoria• dati fra CPU e dispositivi di I/O (tramite interfacce)
si', ma che fa la CPU?(che fa la ALU in collaborazione con la CU?)
esegueleistruzionidelprogramma,chedeveesserescrittoinlinguaggiomacchina...
32/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
I circuiti della CPU collegano registri ed eseguono operazionidi accesso e memorizzazione sui medesimi.
Attraverso il BUS, e i registri, i circuiti possono interagire con la memoria e con le interfacce di I/O …Yawn …
Piu’ o meno ogni circuito corrisponde ad una delle operazioni(compiti, lavori, cose che possono essere fatte)
che la CPU puo’ eseguire usando e controllando le altrestrutture del calcolatore.
Yes! Queste sono le istruzioni eseguibili dalla CPU …
E Yes! Queste sono le istruzioni macchina …
Istruzioni macchina?
33/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
E queste sono le istruzioni macchina, nel senso che un programma scritto in linguaggio macchina, elenca la sequenzadi istruzioni macchina che devono essere eseguite per acquisire i dati di input, risolvere il problema, produrre datidi output .
Per essere eseguito, il programma va memorizzato (cioe’ messoin memoria).
Ogni istruzione va scritta in memoria specificandoil suo codice (codice operativo che identifica il circuito)
(per questo si parla di codice sorgente, codice di programma, “codifica” per “scrittura di un programma” …)
e quali registri sono coinvolti nell’operazione da eseguire, e se serve, anche quali indirizzi di RAM devono essere coinvoltinell’operazione.
Istruzioni macchina!
Continua con i Cenni sul linguaggio macchina34/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 35/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
La velocità con cui la CPU esegue le sue operazioni è la massima possibile in tutto il sistema di elaborazione.
Il BUS trasmette dati alla propria velocità, che e' minore.La memoria gestisce le proprie locazioni a velocità ancora minore.
Le operazioni che coinvolgono le periferiche (unità di I/O, memoria esterna ...) sono diversificate ma sempre (molto) più lente.
Così, in quest'immensità, può succedere che il processore debba fermarsi ad aspettare che altre componenti del calcolatore finiscano il loro lavoro.
Ad esempio se la CPU ha richiesto un dato alla RAM, la risposta arriverà un bel po' di clock dopo, lasciando la CPU inattiva per quel po' di tempo.
Per diminuire i "clock di inattività della CPU", la soluzione consiste nell'usare una memoria più veloce della RAM e far interagire questa con la CPU.
MA questa memoria è più costosa e quindi più piccola della RAM: non si può solo sostituire la RAM con questa memoria più veloce ...che si chiama CACHE.
Cosi' la CPU interagisce con una memoria ad alta velocità, invece che con la RAM.
Memoria Cache
Come funziona?Parti contigue della RAM vengono trasferite nella cache:
la CPU interagisce con quelle.Quando i dati che servono non si trovano in cache, altre parti di
RAM vengono messe in cache, al posto di quelle inutili.
36/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 37/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 38/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 39/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 40/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 41/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 42/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Cenni sul linguaggio macchinae sull’esecuzione di un programma scritto in linguaggio macchina
(ciclo di esecuzione delle istruzioni macchinada parte della CPU:
Fetch, Decode, Execute)
43/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Dati
Programma in
linguaggio macchina
RAM
IR
PC
CPUR0
.......
ALU
L’istruzione in IR, corrispondenteall’indirizzo in PC, viene riconosciuta(decodificata) e ilrelativo circuito vieneattivato
R1
CI
R1
CUCI
scrittocome?
CIcodiceistruzione
44/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Istruzioni di trasferimento: registri ⇔ RAM
0001
R0
R1R2
“Load”
001000110100
01010110
Codice 00000000: copia nel registro specificato il contenuto della locazione specificata
Codice registro Indirizzo locazione in RAM
00000000 0000 00000000000000000011
“Store” Codice 00000001: copia nella locazione specificata il contenuto del registro
00000001 0010 00000000000000000110
8 bit 4 bit 20 bit
45/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
eseguono somma, differenza, moltiplicazionee divisione usando i registri come operandi
ADD 00000010 SUB 00000100
MULT 00000110 DIV 00001000
MOD 00001010
Ri
RjCOp
Codice Reg-i -Reg-j
8 bit 4 bit Non usati4 bit
Istruzioni aritmetiche
46/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Istruzioni di I/O: unita’ I/O ⇔ RAM
0001
“write”
001000110100
01010110
Codice 00010001: trasferisce all’unita’ di output specificata il dato presente nella locazione specificata
Codice Unita’ Indirizzo locazione in RAM
00010000 0000 00000000000000000011
“read” Codice 00010000: legge un dato dall’unita’ di input specificata e lo copia nella locazione specificata
00010001 0001 00000000000000000110
8 bit 4 bit 20 bit
OUTPUT unit: 0001
INPUT unit: 0000
47/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
00100000 Reg-i -Reg-j
8 bit 4 bit Non usati4 bit
Istruzione di confronto
confrontano il contenuto di 2 registri Ri ed Rj:•se Ri < Rj viene messo -1 nel registro RC•se Ri == Rj (uguali) viene messo 0 in RC•se Ri > Rj … 1 in RC Ri
RjCCf
RC
COMP 00100000CCfesecuzione istruzionecorrispondente al codice
NB usiamo il simbolo == per significare "i valori sono uguali" 48/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
00100000 Reg-i Indirizzo locazione in RAMReg-j
8 bit 4 bit …4 bit
Istruzione di salto (branch, jump)
confrontano il contenuto di 2 registri Ri ed Rj:• se Ri == Rj l'indirizzo viene messo nel registro PC, per cui l'istruzione in quell'indirizzo sara' la prossima da eseguire.Senno', il PC rimane com'era.
Ri
RjCJ
PC
JMP 00100001CJesecuzione istruzionecorrispondente al codice 49/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
STOP
termina il programma
STOP 10000001Codice:
10000001
8 bit Non usati
50/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
esempio
scriviamo un programma macchina che:
•trasferisce il contenuto di 2 parole di indirizzo 64 e 68 della RAM nei registri R0 ed R1
•li somma
•trasferisce la somma nella parola di indirizzo 60 della RAM
51/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo•Si trasferisce il contenuto dellalocazione 1000000 (cioe' 64) nel registro R0 (ind. 0000);
•Si trasferisce il contenuto dellalocazione 1000100 (cioe' 68) nel registro R1 (ind. 0001);
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 (cioe' 60)
•E poi si termina
52/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
X
Y
•Si trasferisce il contenuto dellalocazione 1000000 (cioe' 64) nel registro R0 (ind. 0000);
•Si trasferisce il contenuto dellalocazione 1000100 (cioe' 68) nel registro R1 (ind. 0001);
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 (cioe' 60)
•E poi si termina
53/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
54/66
X
Y
•Si trasferisce il contenuto dellalocazione 1000000 (cioe' 64) nel registro R0 (ind. 0000);
•Si trasferisce il contenuto dellalocazione 1000100 (cioe' 68) nel registro R1 (ind. 0001);
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 (cioe' 60)
•E poi si termina
54/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
55/66
X
Y
•Si trasferisce il contenuto dellalocazione 1000000 (cioe' 64) nel registro R0 (ind. 0000);
•Si trasferisce il contenuto dellalocazione 1000100 (cioe' 68) nel registro R1 (ind. 0001);
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 (cioe' 60)
•E poi si termina
55/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
X
Y
X+Y•Si trasferisce il contenuto dellalocazione 1000000 (cioe' 64) nel registro R0 (ind. 0000);
•Si trasferisce il contenuto dellalocazione 1000100 (cioe' 68) nel registro R1 (ind. 0001);
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 (cioe' 60)
•E poi si termina
56/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
X
Y
X+Y
X+Y
•Si trasferisce il contenuto dellalocazione 1000000 (cioe' 64) nel registro R0 (ind. 0000);
•Si trasferisce il contenuto dellalocazione 1000100 (cioe' 68) nel registro R1 (ind. 0001);
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100 (cioe' 60)
•E poi si termina
57/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo•Si trasferisce il contenuto della locazione1000000 nel registro 0000;
•Si trasferisce il contenuto della locazione1000100 nel registro 0001;
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000010 0000 0001
00000001 0000 00000000000000111100
10000001 10000001000000000000000000000000
Programma in LM
58/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000010 0000 0001
00000001 0000 00000000000000111100
10000001 10000001000000000000000000000000
Load 64 in R0
•Si trasferisce il contenuto della locazione1000000 nel registro 0000;
•Si trasferisce il contenuto della locazione1000100 nel registro 0001;
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100Programma in LM
59/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000010 0000 0001
00000001 0000 00000000000000111100
10000001 10000001000000000000000000000000
Load 64 in R0
Load 68 in R1
•Si trasferisce il contenuto della locazione1000000 nel registro 0000;
•Si trasferisce il contenuto della locazione1000100 nel registro 0001;
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100Programma in LM
60/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000010 0000 0001
00000001 0000 00000000000000111100
10000001 10000001000000000000000000000000
Load 64 in R0
Load 68 in R1
Somma R0+R1 in R0
•Si trasferisce il contenuto della locazione1000000 nel registro 0000;
•Si trasferisce il contenuto della locazione1000100 nel registro 0001;
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100Programma in LM
61/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000010 0000 0001
00000001 0000 00000000000000111100
10000001 10000001000000000000000000000000
Load 64 in R0
Load 68 in R1
Somma R0+R1 in R0
Store R0 in ind.60
•Si trasferisce il contenuto della locazione1000000 nel registro 0000;
•Si trasferisce il contenuto della locazione1000100 nel registro 0001;
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100Programma in LM
62/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000010 0000 0001
00000001 0000 00000000000000111100
1000000100000000000000000000000010000001
Load 64 in R0
Load 68 in R1
Somma R0+R1 in R0
Store R0 in ind.60
Stop
•Si trasferisce il contenuto della locazione1000000 nel registro 0000;
•Si trasferisce il contenuto della locazione1000100 nel registro 0001;
•Si esegue la somma tra R0 ed R1 (avendo che il risultato viene memorizzato nel registro R0)
•Si trasferisce il contenuto del registro R0 nella locazione di indirizzo 00111100Programma in LM
63/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
…000000000000111100000000000000111101000000000000111110000000000000111111000000000001000000000000000001000001000000000001000010000000000001000011000000000001000100000000000001000101
…
000001000000000100
00000000000000000000000001000000 000001000000000111000001000000001000000001000000001001000001000000001010000001000000001011000001000000001100
00000000000100000000000000100100
0000000100000000000000000011110000000010000000010000000000000000
10000001000000000000000000000000
61
Programmain linguaggiomacchina …
X
Y
Indirizzi delleistruzioni
Per iniziare ad eseguire ilprogramma, l’indirizzodella prima istruzione vamesso nel PC della CPU. E’ questa l’operazione di “richiesta di esecuzionedel programma”, o “RUN”
64/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
…000000000000111100000000000000111101000000000000111110000000000000111111000000000001000000000000000001000001000000000001000010000000000001000011000000000001000100000000000001000101
…
000001000000000100
00000000000000000000000001000000 000001000000000111000001000000001000000001000000001001000001000000001010000001000000001011000001000000001100
00000000000100000000000000100100
0000000100000000000000000011110000000010000000010000000000000000
10000001000000000000000000000000
61
RUN000001000000000111 PC
FETCHISTR in PC IR
Il programma che inizia li’ viene eseguitoripetendo ciclicamente, una volta per ogni istruzione, le seguenti fasi:
DECODEAnalisi IR code
EXECUTECircuito code attivato
X
Y
Inizialzzazione dell’esecuzione
65/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
…000000000000111100000000000000111101000000000000111110000000000000111111000000000001000000000000000001000001000000000001000010000000000001000011000000000001000100000000000001000101
…
000001000000000100
00000000000000000000000001000000 000001000000000111000001000000001000000001000000001001000001000000001010000001000000001011000001000000001100
00000000000100000000000000100100
0000000100000000000000000011110000000010000000010000000000000000
10000001000000000000000000000000
61
X
000001000000001000 PC
FETCHISTR in PC IR
X e'memorizzato in R0; prima eseguita; ora
DECODEAnalisi IR code
EXECUTECircuito code attivato
X
Y
e poi, per eseguirla …
66/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
…000000000000111100000000000000111101000000000000111110000000000000111111000000000001000000000000000001000001000000000001000010000000000001000011000000000001000100000000000001000101
…
000001000000000100
00000000000000000000000001000000 000001000000000111000001000000001000000001000000001001000001000000001010000001000000001011000001000000001100
00000000000100000000000000100100
0000000100000000000000000011110000000010000000010000000000000000
10000001000000000000000000000000
61
X
Y
FETCHISTR in PC IR
DECODEAnalisi IR code
EXECUTECircuito code attivato
000001000000001001 PC
Y e'memorizzato in R1; seconda eseguita; ora
e poi, per eseguirla …
67/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
…000000000000111100000000000000111101000000000000111110000000000000111111000000000001000000000000000001000001000000000001000010000000000001000011000000000001000100000000000001000101
…
000001000000000100
00000000000000000000000001000000 000001000000000111000001000000001000000001000000001001000001000000001010000001000000001011000001000000001100
00000000000100000000000000100100
0000000100000000000000000011110000000010000000010000000000000000
10000001000000000000000000000000
61
X
Y
FETCHISTR in PC IR
DECODEAnalisi IR code
EXECUTECircuito code attivato
X+Y
000001000000001010 PC
X+Y e'memorizzato in R0; terza eseguita; ora
e poi, per eseguirla …
68/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
…000000000000111100000000000000111101000000000000111110000000000000111111000000000001000000000000000001000001000000000001000010000000000001000011000000000001000100000000000001000101
…
000001000000000100
00000000000000000000000001000000 000001000000000111000001000000001000000001000000001001000001000000001010000001000000001011000001000000001100
00000000000100000000000000100100
0000000100000000000000000011110000000010000000010000000000000000
10000001000000000000000000000000
61
X
Y
FETCHISTR in PC IR
DECODEAnalisi IR code
EXECUTECircuito code attivato e programma terminato
X+Y
000001000000001011 PC
risultato inviato in Output; quarta eseguita; ora
e poi, per eseguirla …
69/786
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Tre FASI, ripetute fino a quando si arriva a STOP (cioe’, in altreparole, ripetute fintantoche’ non si arriva a STOP)
- FETCH il processore “si procura” l’istruzione da eseguire (ne ha l’indirizzonel PC, chiede, e la mette nell’IR)
- DECODE l’istruzione in IR viene decodificata, cioe’ si decide che istruzione e’
- EXECUTE l’istruzione in IR viene eseguita, cioe’ si attiva il circuitocorrispondente (e qui puo’ essere che altre componenti del calcolatore vengano coinvolte)
Cosa succede?“Ciclo di esecuzione delle istruzioni”
70/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale- avviene lo Start dell'esecuzione, copiando l'indirizzo della
prima istruzione nel registro PC (Program Counter).Poi vengono eseguite ripetutamente le tre fasi ...
FETCH- la CU (Contro Unit) accede PC, così sa qual è l'indirizzo della prossima istruzione
da eseguire;- il contenuto di PC viene copiato in MAR (Memory Address Register)- la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il
bus controllo (questa locazione contiene l'istruzione da eseguire)- la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati,
copiandola nel registro MDR (Memory Data Register)- la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire- PC viene incrementato di 1, così ora punta a quella che dovrebbe essere la
prossima istruzione da eseguire
Si’, vabbe’, ma “in dettaglio?
71/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale- avviene lo START dell'esecuzione, copiando l'indirizzo della
prima istruzione nel registro PC (Program Counter).Poi vengono eseguite ripetutamente le tre fasi ...
FETCH- la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire;- il contenuto di PC viene copiato in MAR (Memory Address Register)- la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa
locazione contiene l'istruzione da eseguire)- la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR
(Memory Data Register)- la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire- PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire
DECODE- la CU analizza IR e capisce qual e' il codice dell'istruzione; di
conseguenza sa anche quali operandi aspettarsi (numero di registro, indirizzo in RAM ... nulla ...)
- la CU recupera gli operandi con altre richieste sul bus controllo, ricevendo risposta sul bus dati.
- I valori ricevuti vanno nei registri della ALU che sono coinvolti nell'operazione che sta per essere eseguita
Si’, vabbe’, ma “in dettaglio?
72/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale- avviene lo START dell'esecuzione, copiando l'indirizzo della
prima istruzione nel registro PC (Program Counter).Poi vengono eseguite ripetutamente le tre fasi ...
FETCH- la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire;- il contenuto di PC viene copiato in MAR (Memory Address Register)- la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa locazione contiene l'istruzione da
eseguire)- la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR (Memory Data Register)- la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire- PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire
DECODE- la CU analizza IR e capisce qual e' il codice dell'istruzione; di conseguenza sa anche quali operandi aspettarsi (numero di registro,
indirizzo in RAM ... nulla ...)- la CU recupera gli operandi con altre richieste sul bus controllo, ricevendo risposta sul bus dati. - I valori ricevuti vanno nei registri della ALU che sono coinvolti nell'operazione che sta per essere eseguita
EXECUTE- la CU coordina l'esecuzione, coinvolgendo le parti necessarie (le periferiche di I/O per le operazioni di lettura/scrittura, la ALU per le operazioni di competenza, bus e memoria per gli accessi e memorizzazioni eventuali- l'esito dell'operazione viene registrato nella PSW (Program Status Word).
I bit della PSW dicono, ad esempio, se l'ultima operazione aritmetica ha restituito 0, se c'è stato un riporto, se c'è stato un errore, se c'è
un'interrupt (sospensione del programma)
Si’, vabbe’, ma “in dettaglio?
73/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
esercizio
scriviamo un programma macchina che:
• legge da input i dati di un triangolo
• produce in output l'area del triangolo letto
e poi eseguirlo in modo simulato come abbiamo fatto per l'esempio visto a lezionehint: 2 e' gia' memorizzato in 0…0111101, oppure lo si legge da input
74/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nellalocazione 1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina75/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone ilvalore nella locazione 1000000;• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
76/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione 1000000;
• leggere l'altezza e trasferirla nella locazione1000100;• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
5
77/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
5
12
5
78/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
5
605
79/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
5
602
80/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
5
2
30
81/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100• mandare in output (STAMPARE) la locazione 00111100
• E poi si termina
12
5
230
30
82/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Algoritmo• ricevere dall'unita' di INPUT (LEGGERE, READ) la base del triangolo, Trasferendone il valore nella locazione1000000;
• leggere l'altezza e trasferirla nella locazione 1000100;
• trasferire il contenuto delle locazioni 1000000 e 1000100, rispettivamente nei registri R0 e R1 (risp. ind. 0000 e 0001);
• Eseguire prodotto tra R0 ed R1 (ris. memorizzato nel registro R0)
2
• trasferire il contenuto di 0111101 in R1
• Eseguire divisione (ris. in R0)
• trasferire R0 nella locazione 00111100
• mandare in output (STAMPARE) la locazione 00111100• E poi si termina
12
5
30
83/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Programma (in LM)… sulla carta
00000000 0000 00000000000001000000
00000000 0001 00000000000001000100
00000110 0000 0001
00000001 0000 00000000000000111100
1000000100000000000000000000000010000001
Load da ind. 64 in R0
Load da ind. 68 in R1
Prodotto R0 R1 in R0
Store R0 in ind.60
Stop
00010000 0000 00000000000001000000 Read in 64
00010000 0000 00000000000001000100 Read in 68
00000000 0001 00000000000000111101 Load ind. 61 1in R1 (il 2)
00001000 0000 0001 divisione R0 R1 in R0
00010000 0001 00000000000000111100 Write da ind. 60
84/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Programma (in LM) … in memoriaIndirizzi delle istruzioni
Per iniziare ad eseguire il programma, l’indirizzodella prima istruzione va messo nel PC della CPU. E’ questa l’operazione di “richiesta di esecuzione del programma”, o “RUN”
00010000000000000000000001000000
00010000000000000000000001000100
00000000000000000000000001000000
00000000 0001 00000000000001000100
00000110 0000 00010000000001000000
00000000000100000000000000111101
000001000000000100
000001000000000111
000001000000001000
000001000000001001
000001000000001010
000001000000001011
000001000000001100
00001000000000010000000001000000
00000001000000000000000000111101
00010000000100000000000000111101
1000000101010001001000100011111185/86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore
Quando il programma viene mandato in esecuzione, - avviene il caricamento (Loading) in memoria centrale- avviene lo START dell'esecuzione, copiando l'indirizzo della
prima istruzione nel registro PC (Program Counter).Poi vengono eseguite ripetutamente le tre fasi ...
FETCH- la CU (Contro Unit) accede PC, cosi' sa qual e' l'indirizzo della prossima istruzione da eseguire;- il contenuto di PC viene copiato in MAR (Memory Address Register)- la CU chiede l'accesso alla locazione cha ha indirizzo dato da MAR, attraverso il bus controllo (questa locazione contiene
l'istruzione da eseguire)- la memoria invia il contenuto della locazione (l'istruzione) tramite il bus dati, copiandola nel registro MDR (Memory Data
Register)- la CU copia MDR in IR: adesso IR contiene l'istruzione da eseguire- PC viene incrementato di 1, cosi' ora punta a quella che dovrebbe essere la prossima istruzione da eseguire
DECODE- la CU analizza IR e capisce qual e' il codice dell'istruzione; di conseguenza sa anche quali operandi aspettarsi (numero di
registro, indirizzo in RAM ... nulla ...)- la CU recupera gli operandi con altre richieste sul bus controllo, ricevendo risposta sul bus dati. - I valori ricevuti vanno nei registri della ALU che sono coinvolti nell'operazione che sta per essere eseguitaEXECUTE- - la CU coordina l'esecuzione, coinvolgendo le parti necessarie (le periferiche di I/O per le operazioni di lettura/scrittura,
la ALU per le operazioni di competenza, bus e memoria per gli accessi e memorizzazioni eventuali- - l'esito dell'operazione viene registrato nella PSW (Program Status Word). I bit della PSW dicono, ad esempio, se l'ultima
operazione aritmetica ha restituito 0, se c'è stato un riporto, se c'è stato un errore, se c'è un'interrupt (sospensione del programma)
E ora eseguire il programmacome farebbe la CPU
86/86
Top Related