Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. ·...

86
Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore Previously on Tecniche della Programmazione 1/86

Transcript of Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. ·...

Page 1: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore

Previously on Tecniche della Programmazione

1/86

Page 2: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore

Previously on Tecniche della Programmazione

2/86

Page 3: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore

Previously on Tecniche della Programmazione

3/86

Page 4: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore

Previously on Tecniche della Programmazione

4/86

Page 5: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 6: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 6/86

Page 7: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 8: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore

Architettura del CalcolatoreQUALI sono le componenti del sistema?

COME INTERAGISCONO fra loro?

8/86

Page 9: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 10: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 11: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 11/86

Page 12: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 12/86

Page 13: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 13/86

Page 14: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 14/86

Page 15: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 16: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 17: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 17/86

Page 18: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 19: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 19/86

Page 20: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 20/86

Page 21: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 22: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 22/86

Page 23: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 24: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 24/86

Page 25: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Struttura della CPU

accedi / memorizza

25/86

Page 26: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 27: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 28: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 29: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 30: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 31: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 32: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 33: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 34: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 35: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 35/86

Page 36: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 37: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 37/86

Page 38: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 38/86

Page 39: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 39/86

Page 40: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 40/86

Page 41: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 41/86

Page 42: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore 42/86

Page 43: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 44: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 45: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 46: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 47: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 48: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 49: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 50: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore

STOP

termina il programma

STOP 10000001Codice:

10000001

8 bit Non usati

50/86

Page 51: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 52: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 53: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 54: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 55: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 56: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 57: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 58: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 59: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 60: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 61: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 62: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 63: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 64: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 65: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 66: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 67: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 68: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 69: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 70: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 71: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 72: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 73: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 74: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 75: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 76: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 77: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 78: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 79: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 80: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 81: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 82: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 83: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 84: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 85: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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

Page 86: Previously on Tecniche della Programmazionemarte/homepage/didattica/tdp... · 2020. 10. 18. · Tecniche della Programmazione, M.Temperini, 2020-2021 – Architettura del calcolatore.

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