• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
73
0
0

Testo completo

(1)

Fondamenti di Informatica

(2)

Architettura di Von Neumann

(3)

Architettura di Von Neumann:

l’Unità di Elaborazione

(4)

L’Unità di Elaborazione

L’unità di elaborazione (CPU) contiene gli elementi

circuitali che regolano il funzionamento dell’elaboratore.

Funzione della CPU:

Eseguire i programmi contenuti nella memoria centrale

prelevando, decodificando ed eseguendo una dopo l’altra

le istruzioni che li costituiscono

(5)

L’Unità di Elaborazione:

principali elementi circuitali

Orologio di sistema (Clock)

Unità aritmetico-logica (ALU)

Registri (R)

(6)

La CPU: Clock – 1/2

La CPU è un dispositivo sincrono

Viene regolato da un “orologio” (o clock)

Sincronizza le operazioni rispetto ad una data frequenza: le varie

attività della CPU hanno inizio in corrispondenza di tempi ben

precisi stabiliti del clock (impulsi di clock)

Stabilisce quante istruzioni al secondo possono essere eseguite

dalla CPU

Una CPU attuale lavora a N GHz

Segue un ritmo di N miliardi di impulsi al secondo

• Ad esempio: una CPU che lavora 3 GHz riceve 3 miliardi di impulsi al secondo

(7)

La CPU: Clock – 2/2

La frequenza di clock determina la velocità di elaborazione

del computer

Più alta è la frequenza di clock, maggiore è la velocità di elaborazione

La velocità e la potenza di un computer dipendono anche

dalla larghezza del bus

Quantità di "dati" che il processore è in grado di ricevere ed

elaborare simultaneamente (dimensione dei registri: tipicamente 32

o 64 bit → «architetture a 32 o 64 bit»)

(8)

Schema logico della CPU

ALU CU Registri PC IR

CPU

(9)

Unità Aritmetico-Logica (ALU)

(10)

La ALU (Arithmetic-Logic Unit), detta anche Unità Aritmetico-Logica, si

occupa di eseguire operazioni aritmetiche e logiche su 2 operandi

Oltre al risultato dell’operazione stessa, la ALU può produrre ulteriori

informazioni (segnali di stato)

A L U R e sult a

b

A L U op eration

La CPU: ALU

CPU e Linguaggio Macchina

(11)

Unità Aritmetico-Logica (ALU)

Registri

(12)

I registri sono dispositivi di memorizzazione che consentono un

accesso molto veloce ai dati contenuti

• Hanno dimensioni prefissate

Alcuni registri hanno funzioni specifiche

La CPU: Registri

(13)

I registri sono dispositivi di memorizzazione che consentono un

accesso molto veloce ai dati contenuti

• Hanno dimensioni prefissate

Alcuni registri hanno funzioni specifiche

Il registro PC (Program Counter) → individua (tramite indirizzo) la prossima

istruzione da eseguire

(14)

I registri sono dispositivi di memorizzazione che consentono un

accesso molto veloce ai dati contenuti

• Hanno dimensioni prefissate

Alcuni registri hanno funzioni specifiche

Il registro PC (Program Counter) → individua (tramite indirizzo) la prossima

istruzione da eseguire

Il registro IR (Instruction Register) → contiene l’istruzione da eseguire

La CPU: Registri

(15)

I registri sono dispositivi di memorizzazione che consentono un

accesso molto veloce ai dati contenuti

• Hanno dimensioni prefissate

Alcuni registri hanno funzioni specifiche

Il registro PC (Program Counter) → individua (tramite indirizzo) la prossima

istruzione da eseguire

Il registro IR (Instruction Register) → contiene l’istruzione da eseguire

La CPU: Registri

(16)

Lo

stato della CPU

è rappresentato dalle informazioni

memorizzate negli opportuni registri

Dati da elaborare

Contenuti nei Registri Dati (DR)

Istruzione da eseguire

Contenuta nel registro IR (Instruction Register)

Indirizzo in memoria della prossima istruzione da eseguire

Contenuto nel registro PC (Program Counter)

Eventuali anomalie o eventi verificatisi durante l’elaborazione

Contenuti nei Registri di Stato o flag

La CPU: Registri

(17)

Approfondimento: Registro

indirizzi vs Registro dati – 1/4

Ciascuna cella di memoria può essere indirizzata:

capacità di un elaboratore di selezionare una particolare cella

di memoria.

L’indirizzo di una cella di memoria è semplicemente la sua

posizione relativa (o numero d’ordine) rispetto alla prima cella

di memoria, cui viene normalmente attribuita la posizione

zero.

L’indirizzamento della memoria avviene tramite registri di

indirizzi che si trovano nell’unità di elaborazione.

(18)

Approfondimento: Registro

indirizzi vs Registro dati – 2/4

N.B. Se il registro indirizzi ha k bit, si possono

indirizzare fino a 2^k celle di memoria, i cui indirizzi

varieranno fra 0 e 2^k-1.

Es.: se il registro indirizzi è lungo 10 bit, vengono

indirizzate 2^10 = 1024 celle.

(19)

Approfondimento: Registro

indirizzi vs Registro dati – 3/4

Le operazioni di lettura dalla memoria e la scrittura in

memoria utilizzano registri di dati.

L’operazione di lettura provoca la copia del contenuto

della cella di memoria nel registro dati: essa carica (in

inglese, Load) il registro dati in una cella di memoria.

L’operazione di scrittura copia il contenuto del registro

dati in una cella di memoria: essa deposita (in inglese,

Store) il contenuto del registro dati in una parola di

memoria.

N.B. Un registro dati è lungo come una parola di

memoria.

(20)

Approfondimento: Registro

indirizzi vs Registro dati – 4/4

Registro dati (lungo h bit);

Registro indirizzi (lungo k bit);

→ Memoria con 2^k celle (ciascuna di h bit)

(21)

Unità Aritmetico-Logica (ALU)

Registri

Unità di Controllo (CU)

(22)

Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di

controllo (CU)

• È una componente dell’unità centrale di elaborazione

• Ogni componente del calcolatore esegue solo le azioni che gli vengono richieste dall’unità di controllo

Il controllo consiste nel coordinamento dell’esecuzione temporale delle

operazioni

• Sia internamente alla CPU sia negli altri elementi funzionali

La CPU: Unità di Controllo

(23)

Istruzioni Base della CPU – 1/2

1.

Istruzioni di base eseguite dalla ALU

Somma (da cui sottrazione)

Scorrimento (shift)

Operazioni logiche

Operazioni di confronto

Tramite le operazioni di somma e shift è possibile ricavare le operazioni di

(24)

Istruzioni Base della CPU – 2/2

2.

Operazioni di accesso alla memoria (non

eseguite dalla ALU)

Trasferimento di un dato da una locazione di memoria ad

un’altra

Trasferimento da

Memoria → Registro della CPU

Registro della CPU → Memoria

(25)

Dati e Istruzioni in Memoria Centrale

Esecuzione dei programmi

Per essere eseguito dalla macchina di Von Neumann,

un programma, che è costituito da una sequenza di

istruzioni e dai dati, deve essere presente nella

memoria centrale, in forma di sequenze di bit allocate

in parole successive di memoria.

Per esempio, supponendo che il caricamento avvenga a

partire dalla locazione di indirizzo 0:

0 010000000010000 1 010000000010001 2 010000000010010 3 010000000010011 4 000000000010000 ……… ……… 15 110100000000000 halt 16 000000000010001 17 000000000010010 18 000000000010000 ……… ………

La parte istruzioni e la parte dati sono nell’esempio

Istruzioni

Dati Memoria

(26)

Dati e Istruzioni

Dati e istruzioni di un programma sono codificati in

forma binaria, cioè mediante sequenze finite di bit

Un’istruzione codificata si compone di due parti

Codice Operativo (CO)

Uno o più operandi (Op. i)

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 5

Dati e istruzioni di programma sono codificate in

forma binaria, cioè mediante sequenze finite di bit.

Una istruzione codificata si compone di due parti: il

codice oper ativo e uno o più oper andi:

Funzionamento della macchina di

Von Neumann

CO

Op. 1

Op. n

Il codice operativo specifica, secondo una convenzione

dipendente dalla specifica macchina, l’istruzione da

eseguire. Per ogni macchina esistono tanti codici

operativi differenti quante sono le istruzioni presenti

nell’insieme (set) delle istruzioni che la macchina è in

grado di interpretare ed eseguire.

Gli operandi contengono, ancora in una forma codificata

dipendente dalla specifica macchina, le informazioni

necessarie a reperire i dati sui quali l’istruzione deve

operare.

Il linguaggio macchina è quindi strettamente legato alla

architettura della macchina.

Istruzione →

(27)

Dati e Istruzioni

Dati e istruzioni di un programma sono codificati in

forma binaria, cioè mediante sequenze finite di bit

Un’istruzione codificata si compone di due parti

Codice Operativo (CO)

Uno o più operandi (Op. i)

Dati e istruzioni di programma sono codificate in

forma binaria, cioè mediante sequenze finite di bit.

Una istruzione codificata si compone di due parti: il

codice oper ativo e uno o più oper andi:

Funzionamento della macchina di

Von Neumann

CO

Op. 1

Op. n

Il codice operativo specifica, secondo una convenzione

dipendente dalla specifica macchina, l’istruzione da

eseguire. Per ogni macchina esistono tanti codici

operativi differenti quante sono le istruzioni presenti

nell’insieme (set) delle istruzioni che la macchina è in

grado di interpretare ed eseguire.

Gli operandi contengono, ancora in una forma codificata

dipendente dalla specifica macchina, le informazioni

necessarie a reperire i dati sui quali l’istruzione deve

operare.

Il codice operativo specifica l’istruzione da eseguire.

In ogni architettura è definito un certo insieme di

istruzioni (set di istruzioni) con gli associati CO.

Istruzione →

(28)

Dati e Istruzioni

Dati e istruzioni di un programma sono codificati in

forma binaria, cioè mediante sequenze finite di bit

Un’istruzione codificata si compone di due parti

Codice Operativo (CO)

Uno o più operandi (Op. i)

E. Ardizzone & I. Infantino - Appunti per il corso di Fondamenti di Informatica 5

Dati e istruzioni di programma sono codificate in

forma binaria, cioè mediante sequenze finite di bit.

Una istruzione codificata si compone di due parti: il

codice oper ativo e uno o più oper andi:

Funzionamento della macchina di

Von Neumann

CO

Op. 1

Op. n

Il codice operativo specifica, secondo una convenzione

dipendente dalla specifica macchina, l’istruzione da

eseguire. Per ogni macchina esistono tanti codici

operativi differenti quante sono le istruzioni presenti

nell’insieme (set) delle istruzioni che la macchina è in

grado di interpretare ed eseguire.

Gli operandi contengono, ancora in una forma codificata

dipendente dalla specifica macchina, le informazioni

necessarie a reperire i dati sui quali l’istruzione deve

operare.

Il linguaggio macchina è quindi strettamente legato alla

architettura della macchina.

Gli operandi contengono le informazioni

necessarie a reperire i dati sui quali

l’istruzione deve operare.

CPU e Linguaggio Macchina

(29)

Dati e Istruzioni

Dati e istruzioni di un programma sono codificati in

forma binaria, cioè mediante sequenze finite di bit

Un’istruzione codificata si compone di due parti

Codice Operativo (CO)

Uno o più operandi (Op. i)

Dati e istruzioni di programma sono codificate in

forma binaria, cioè mediante sequenze finite di bit.

Una istruzione codificata si compone di due parti: il

codice oper ativo e uno o più oper andi:

Funzionamento della macchina di

Von Neumann

CO

Op. 1

Op. n

Il codice operativo specifica, secondo una convenzione

dipendente dalla specifica macchina, l’istruzione da

eseguire. Per ogni macchina esistono tanti codici

operativi differenti quante sono le istruzioni presenti

nell’insieme (set) delle istruzioni che la macchina è in

grado di interpretare ed eseguire.

Gli operandi contengono, ancora in una forma codificata

dipendente dalla specifica macchina, le informazioni

necessarie a reperire i dati sui quali l’istruzione deve

operare.

Un’istruzione è strettamente legata

all’architettura della macchina.

CPU e Linguaggio Macchina

(30)

Linguaggio (o Codice) Macchina

Definizione

• Insieme di istruzioni eseguite direttamente dalla CPU

Ogni istruzione svolge un compito specifico

Istruzioni piuttosto rudimentali, codificate in binario

• Il numero di operandi è limitato (in genere non più di due)

• Il numero di operazioni previste è ridotto

• Ogni tipo di processore è in grado di eseguire un numero limitato di istruzioni

Combinando in modo diverso sequenze anche molto lunghe di

istruzioni (i programmi) si può istruire l’elaboratore a fare

tantissime cose, anche completamente diverse tra loro

(31)

Il Linguaggio Macchina

Un programma in esecuzione risiede nella memoria

centrale

È rappresentato da una serie di numeri binari che codificano le

istruzioni eseguibili dalla CPU

Osservando esclusivamente il contenuto della memoria, il

programma non è distinguibile dai dati

Le istruzioni sono individuate dai valori assunti dal registro PC

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 PC

(32)

Il Set di Istruzioni Macchina

L’insieme delle istruzioni eseguibili e la relativa codifica

sono generalmente diverse per modelli diversi di processore

Le categorie di istruzioni normalmente disponibili sono

Trasferimento dati

• Spostano dati tra registri, memoria principale e dispositivi di ingresso/uscita (I/O)

Aritmetico-logiche

• Eseguono i calcoli nella ALU

Salti (condizionati e incondizionati)

• Prendono decisioni e alterano la normale esecuzione sequenziale delle istruzioni

(33)

Esempio di Programma

in Linguaggio Macchina

0100000000010000 leggi un valore in ingresso e ponilo nella cella numero 16 (variabile x) 0100000000010001 leggi un valore e ponilo nella cella numero 17 (variabile y)

0100000000010010 leggi un valore e ponilo nella cella numero 18 (variabile z) 0100000000010011 leggi un valore e ponilo nella cella numero 19 (variabile r) 0000000000010000 carica il registro A con il contenuto della cella 16

0001000000010001 carica il registro B con il contenuto della cella 17 0110000000000000 somma i contenuti dei dei registri A e B

0010000000010100 copia il contenuto del registro A nella cella 20 (risultato, variabile s) 0000000000010010 carica il registro A con il contenuto della cella 18

0001000000010011 carica il registro B con il contenuto della cella 19 0110000000000000 somma i contenuti dei registi A e B

0001000000010100 carica il registro B con il contenuto della cella 20 1000000000000000 moltiplica i contenuti dei registri A e B

0010000000010100 copia il contenuto del registro A nella cella numero 20 0101000000010100 scrivi in output il contenuto della cella numero 20 1101000000000000 arresta l’esecuzione (HALT)

(34)

Approfondimento: Assembler

Per facilitare la programmazione è stato definito il linguaggio Assembly

L’assembly impiega una notazione simbolica che è in stretta relazione

con i codici in linguaggio macchina

Il programma scritto in assembly è convertito automaticamente in

linguaggio macchina per mezzo del programma traduttore, detto

Assembler

LOAD R1, MEM1 CMP R1, R2 BREQ RISZERO STORE R1, MEM1 RISZERO: LOAD R2, MEM2 Assembler 10001000110110101101010101010100 01001000100100000000000000000000 11000000000000000000000000001000 10011000110110101101010101010100 10001001010110101101001000001100 OPCODE (LOAD) registro indirizzo di memoria

(35)

Approfondimento: Assembler

vs Linguaggi di Alto Livello

Il programma in Assembly…

LOAD REG1, a

LOAD REG2, b

ADD REG1, REG2

LOAD REG3, c

LOAD REG4, d

ADD REG3, REG4

MULT REG1, REG3

e=(a+b)(c+d);

…corrisponde all’unica

istruzione MATLAB

(36)

Come si Eseguono i Programmi?

Programma: sequenza di istruzioni da eseguire per ottenere la

soluzione ad una data classe di problemi

Il processore esegue ciascuna istruzione mediante la

seguente sequenza di operazioni, detta ciclo di istruzione o

ciclo macchina

1.

Estrazione di un’istruzione:

fase di fetch

2.

Interpretazione di un’istruzione:

fase di decode

3.

Esecuzione dell’istruzione:

fase di execute

(37)
(38)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

(39)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

(40)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR P C Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

(41)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR P C Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 NOTA

Schema logico del sottoinsieme della CPU

coinvolto nel ciclo Fetch-Decode-Execute

(42)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR 0 0 0 … 0 0 0 Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

Indirizzi: 000…000 000…001 000…010 P C

(43)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU PC → Registro Program Counter 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(44)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(45)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 Il PC individua l’Istruzione 1 (contiene l’indirizzo dell’Istruzione 1) 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(46)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(47)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(48)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

Utilizziamo il BUS P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(49)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(50)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(51)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(52)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(53)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010

Utilizziamo ancora il BUS

0 0 0 … 0 0 0

(54)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU IR Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(55)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(56)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

Adesso l’IR conterrà l’Istruzione 1

(57)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(58)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(59)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 Il PC individuava l’Istruzione 1 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 0

(60)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 Il PC verrà incrementato e punterà all’Istruzione 2

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010

(61)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111 P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 1

(62)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111

Il PC individua la prossima istruzione da eseguire (ovvero, l’indirizzo dell’Istruzione 2)

CPU e Linguaggio Macchina

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 1

(63)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

CU Memoria Istruzione 1 Istruzione 2 Istruzione 3 CPU 010110…010001 010110…010001 IR 011100…010101 110100…010111

Il PC individua la prossima istruzione da eseguire (ovvero, l’indirizzo dell’Istruzione 2)

L’IR contiene l’istruzione da eseguire (ovvero, l’Istruzione 1)

P C Indirizzi: 000…000 000…001 000…010 0 0 0 … 0 0 1

(64)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

FASE DI FETCH

(65)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

(66)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire

L’istruzione da eseguire si trova nel registro IR

(67)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

(68)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire (decode)

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

• Carica tali dati nei registri della CPU

FASE DI DECODE

(69)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire (decode)

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

• Carica tali dati nei registri della CPU

(70)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC).

Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire (decode)

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

• Carica tali dati nei registri della CPU

3. Esegui l’istruzione (execute)

FASE DI EXECUTE

(71)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire (decode)

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

• Carica tali dati nei registri della CPU

3. Esegui l’istruzione (execute)

(72)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire (decode)

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

• Carica tali dati nei registri della CPU

3. Esegui l’istruzione (execute)

4. Torna al punto1. ed inizia ad elaborare l’istruzione successiva

(73)

Ciclo Fetch-Decode-Execute – 2/2

La CPU esegue solo

istruzioni codificate

in

linguaggio macchina

,

mediante il

ciclo Fetch-Decode-Execute

1. Prendi l’istruzione corrente dalla memoria (individuata dal contenuto del PC). Salvala nell’IR (Instruction Register) e contemporaneamente incrementa il PC in modo che contenga l’indirizzo dell’istruzione successiva (fetch)

2. Determina il tipo di istruzione da eseguire (decode)

• Se l’istruzione usa dati presenti in memoria, determinane la posizione

• Carica tali dati nei registri della CPU

3. Esegui l’istruzione (execute)

4. Torna al punto1. ed inizia ad elaborare l’istruzione successiva

Mediante il passo 4., i passi precedenti vengono eseguiti ciclicamente (ciclo Fetch-Decode-Execute)

Riferimenti

Documenti correlati