S.U.N. INGEGNERIA MECCANICA/AEROSPAZIALE ELEMENTI DI ... · di base data da cinque componenti...

Post on 16-Feb-2019

217 views 0 download

Transcript of S.U.N. INGEGNERIA MECCANICA/AEROSPAZIALE ELEMENTI DI ... · di base data da cinque componenti...

1

S.U.N. – INGEGNERIA MECCANICA/AEROSPAZIALE

ELEMENTI DI PROGRAMMAZIONE, a.a. 2015/16

prof. Andrea Prevete

IL MODELLO

di

VON NEUMANN

2

NOTE STORICHEL’architettura a programma memorizzato (program-stored) è a tutt’oggi il riferimento concettuale per il progetto e la realizzazione dei computer.

Le idee che ne sono a fondamento si sviluppano subito dopo la seconda guerra mondiale grazie a studiosi/progettisti come

- Eckert e Mauchley (ENIAC, Electronic Numerival Integrator e Computer – EDVAC, Electronic Discrete Variable Automatic Computer)

- Wilkes (EDSAC, Electronic Delay Storage Automatic Calculator)

- von Neumann e Goldstine (IAS, presso l’ Institute of Advanced Study di Princeton).

La suddetta architettura è fondata essenzialmente su di una struttura di base data da cinque componenti (un’unità logico-aritmetica, una memoria, un’unità di controllo, un’unità di uscita, un’unità di ingresso) e sulla dematerializzazione delle istruzioni, non cablate ma codificate in memoria come i dati su cui operano.

La lucida formalizzazione di questi concetti da parte di J. von Neumann ha fatto sì che ci si riferisca spesso all’architettura program-stored come architettura di von Neumann.

3

Il modello di von Neumann

MEMORY

CONTROL UNIT

MAR MDR

IR

PROCESSING UNIT

ALU TEMP

PC

OUTPUT

Monitor

Printer

LED

Disk

INPUTKeyboard

Mouse

Scanner

Disk

4

LA MEMORIA

Possiamo pensarla come un insieme ordinato,

un elenco di 2k x m bit

INDIRIZZI

• Interi positivi (k-bit) per identificare la

posizione dei contenuti

CONTENUTI

• Parole di m-bit memorizzate ad un certo

indirizzo

OPERAZIONI DI BASE:

LOAD

• legge un dato memorizzato in una

locazione di memoria

STORE

• conserva un dato in una locazione di

memoria

•••

0000000100100011010001010110

110111101111

00101101

10100010

5

INTERFACCE PER LA MEMORIA

Come vengono gestiti i dati da e per la

memoria?

MAR: Memory Address Register

MDR: Memory Data Register

Per LOAD da una locazione (A):

1. Write l’indirizzo (A) nel MAR.

2. Send un segnale “read” alla memoria.

3. Read il dato dal MDR.

Per STORE un dato (X) in una locazione (A):

1. Write il dato (X) nel MDR.

2. Write l’indirizzo (A) nel MAR.

3. Send un segnale “write” alla memoria.

MEMORY

MAR MDR

6

Unità di Processo

Unità operative

• ALU = Arithmetic and Logic Unit

• Puo’ avere molte sottounità.

Alcune special-purpose

(multiply, square root, …).

Registri TEMP

• Memorizzazione temporanea di dati

• Operandi e risultati delle unità

operative

Dimensione della Parola (Word Size)

• Il numero di bit normalmente

processato dalla ALU nel corso di

un’istruzione

• Corrisponde all’ampiezza dei registri

PROCESSING UNIT

ALU TEMP

7

MODULI di Input and Output

Dispositivi per effettuare l’ingresso o l’uscita di dati dalla memoria

Ogni dispositivo ha la sua propria interfaccia,usualmente un set di registricome MAR e MDR per la memoria

Qualche dispositivo può essere considerato sia d’input che d’output

• disk, network

Un programma che gestisce l’accesso ad un dispositivo è usualmente detto un driver.

INPUT

Keyboard

Mouse

Scanner

Disk

OUTPUT

Monitor

Printer

LED

Disk

8

Unità di Controllo

Dirige l’esecuzione di un programma, così come un

Direttore l’Orchestra!

L’ Instruction Register (IR) contiene l’istruzione corrente.

Il Program Counter (PC) contiene l’indirizzo della

prossima istruzione da eseguire.

L’Unità di Controllo:

• Legge un’istruzione dalla memoria all’indirizzo contenuto da IR

• Interpreta l’istruzione generando la sequenza di segnali atta a

pilotare gli altri componenti

(un’ istruzione può richiedere vari cicli macchina per terminare!)

CONTROL UNIT

IRPC

9

Ciclo di Esecuzione di un’Istruzione

Decodifica l’istruzione

Valuta gli indirizzi

Carica gli operandi dalla memoria

Esegui l’operazione

Memorizza il risultato

Carica l’istruzione dalla memoria

10

Le Istruzioni

Un’ istruzione è l’atomo della struttura operativa di un computer.

Essa è specificata da:

• Un opcode: l’operazione che deve essere eseguita

• Uno o più operandi : dati/indirizzi che devono essere utilizzati per

eseguire l’operazione

Un’ istruzione è codificata come una sequenza di bit.

(Esattamente come per i dati!)

• Spesso, ma non sempre, le istruzioni hanno una lunghezza

prefissata, per esempio 16 o 32 bit.

• L’Unità di Controllo interpreta, quindi genera sequenze di segnali

di controllo per implementare le varie operazioni.

• Un’operazione è eseguita completamente o per niente.

L’insieme delle istruzioni di un computer ed il loro formato

costituiscono il cosiddetto Instruction Set Architecture (ISA).

11

ESEMPIO: ADD

In un ipotetico computer ad 8 registri (R0 – R7) le

istruzioni a 16 bit potrebbero avere il seguente formato:

“Addiziona il contenuto di R2 al contenuto of R6,

e immagazzina il risultato in R6.”

12

ESEMPIO: LDR

Vediamo un altro esempio:

“Addiziona il valore 6 al contenuto di R3 per formare

un indirizzo di memoria. Quindi carica il contenuto

di quell’indirizzo di memoria in R2.”

13

FETCH

Carica la prossima istruzione dalla memoria

(indirizzo memorizzato nel PC)

nel Registro Istruzioni (IR).

• Copia il contenuto del PC in MAR.

• Invia un segnale “read” alla memoria.

• Copia il contenuto di MDR in IR.

Quindi incrementa PC, così da farlo puntare

all’istruzione che segue.

• PC diventa PC+1.

EA

OP

EX

S

F

D

14

DECODE

Identifica l’ opcode.• Nel nostro esempio i primi 4 bit

dell’istruzione.

• Un’ opportuna macchina combinatoria, un decoder 4-to-16, attiva la linea di controllo corrispondente all’opcode identificato.

In base all’opcode identificato, restano fissati gli operandi.

• Nel nostro esempio:

per LDR, gli ultimi 6 bit definiscono l’offset

per ADD, gli ultimi 3 bit definiscono il secondo operando

EA

OP

EX

S

F

D

15

EVALUATE ADDRESS

Per le istruzioni che richiedono

accesso in memoria,

calcola l’indirizzo usato per

l’accesso.

Esempi:

• Addizionare l’offset al registro base

(come in LDR)

• Addizionare l’offset al PC

EA

OP

EX

S

F

D

16

FETCH OPERANDS

Vengono prelevati gli operandi

sorgente necessari all’esecuzione

dell’operazione.

Esempi:

• Carica i dati dalla memoria (LDR)

• Leggi i dati dal registro file (ADD)

EA

OP

EX

S

F

D

17

EXECUTE

Viene eseguita l’operazione,

usando gli operandi sorgente.

Esempi:

• Vengono inviati gli operandi all’ ALU e

attivato il segnale ADD

• NOP (cioè, per istruzioni come load e

store)

EA

OP

EX

S

F

D

18

STORE RESULT

I risultati vengono memorizzati a destinazione.

(un registro o la memoria)

Esempi:

• Il risultato di un ADD è memorizzato nel registro di

destinazione

• Il risultato di un MEMORY LOAD è memorizzato nel

registro destinazione

• Per istruzioni di tipo STORE, il dato è

immagazzinato in memoria

L’indirizzo è scritto in MAR, i dati in MDR

Quindi è attivato un segnale WRITE per la

memoria

EA

OP

EX

S

F

D

19

CAMBIARE LA SEQUENZA DELLE ISTRUZIONI

Nella fase FETCH,

il Program Counter viene incrementato di 1.

Cosa fare nel caso in cui non si voglia far eseguire tutte

le istruzioni in sequenza?

Necessitiamo di istruzioni speciali che cambiano il

contenuto del PC.

Queste sono chiamate istruzioni di controllo.

• I jumps sono incondizionati – cambiano comunque ed in modo

predeterminato il PC

• I branches sono condizionati – cambiano il PC solo se una certa

condizione è verificata (ad esempio, il risultato di un ADD è 0)

20

Esempio: Istruzione JMP

Memorizza nel PC il valore contenuto in un registro. Questo diventa

l’indirizzo della prossima istruzione da prelevare (FETCH).

“Carica il contenuto del registro R3 nel PC.”

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0JMP Base

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0

21

Esempio: Istruzioni BR/BRn/BRz/BRp

Memorizza in PC il suo valore attuale sommato a PCoffeset9, se

l’esito dell’ultima operazione svolta è stato negativo, nullo o positivo

– così come indicato dai bit di selezione n/z/p . Questo diventa

l’indirizzo della prossima istruzione da prelevare (FETCH).

“Carica PC con il nuovo valore PC+75, se l’ultima

istruzione eseguita ha dato in esito un risultato nullo.”

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

n z pBR PCoffset9

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1

22

RIASSUMENDO

Tre tipi di istruzioni di base:

• Istruzioni operative (ADD, AND, …)

• Istruzioni per spostare dati (LD, ST, …)

• Istruzioni di controllo (JMP, BRnz, …)

Sei fasi essenziali per l’esecuzione di un’istruzione:

F D EA OP EX S

• Non tutte le istruzioni hanno bisogno delle sei fasi!

• Le fasi possono richiedere un numero variabile di cicli macchina

23

DIAGRAMMA A STATI DELL’ UNITÀ DI CONTROLLO

L’Unità di Controllo è una macchina a stati. Di seguito ne

riportiamo un diagramma semplificato:

24

PAUSARIUS

Tutte le moderne macchine digitali sono macchine sincrone.

Ciò significa che ogni singolo componente può modificare il

proprio stato solo in corrispondenza di istanti di tempo

scanditi da un segnale regolare detto clock (generalmente

generato da un oscillatore ad alta frequenza facente uso di

cristalli).

Come il capovogatore (pausarius) di una nave romana, il clock

sincronizza e regola il compartamento coordinato dei vari

componenti della macchina.F

ron

te d

i sa

lita

Un periodo di clocktempo

Fro

nte

di d

isce

sa

DAI MEGA AI GIGA

25

26

THE END