Sei sulla pagina 1di 17

Facoltà di Ingegneria

FONDAMENTI DI INFORMATICA 1
Architettura dei calcolatori
a.a. 2019 - 2020

Prof. Italo Epicoco - italo.epicoco@unisalento.it


Informatica

Scienza dell’elaborazione dell’informazione


attraverso elaboratori elettronici

• Rappresentazione dell’informazione
• Descrizione del processo di elaborazione
• Costruzione di un elaboratore elettronico in grado
di eseguire il processo di elaborazione

2
Elaboratore Elettronico
Dispositivo elettronico in grado di eseguire un processo di
trasformazione/elaborazione dell’informazione

•Dispositivi embedded: il dispositivo è costruito per


eseguire un determinato processo di elaborazione
– Calcolatrice
– Centralina elettronica di un autovettura
– Sistemi per la domotica

•Dispositivi programmabili: il dispositivo è in grado di


eseguire un processo di elaborazione definito dall’utente
– Personal Computer
– Tablet
– Smartphone

3
Breve storia degli elaboratori
• 1642: Pascalina
– In grado di eseguire meccanicamente addizioni e sottrazioni
• 1671: macchina di Leibniz
– Perfeziona la pascalina con la moltiplicazione
• 1871: Macchina analitica di Babbage
– Primo esempio di macchina programmabile
– Oltre agli operandi la macchina è in grado di ricevere in input
la sequenza di operazioni da svolgere attraverso schede
perforate
– Mai portata a termine sia a causa dei costi
sia per la tecnologia meccanica inadeguata
• 1946: ENIAC
– Primo calcolatore digitale elettronico
programmabile
– Segue l’architettura di Von Neumann

4
Architettura di Von Neumann

• Elaboratore costituito da:


– Unità centrale di elaborazione CPU
• Unità aritmetico logica
• Unità di controllo
• Registri
– Memoria centrale
– Dispositivi di Input e Output
– Bus di interconnessione

5
Architettura di Von Neumann
• I moderni calcolatori ricalcano ancor oggi l’architettura
di Von Neumann
• L’insieme delle unità funzionali costituiscono l’hardware

6
Algoritmo

• Un calcolatore elettronico programmabile è progettato


per eseguire un insieme di istruzioni di base
(instruction set)
• L’elaborazione di un problema complesso richiede la
scomposizione del problema in una sequenza di
istruzioni incluse nell’instruction set
• L’algoritmo costituisce la sequenza di operazioni base
da seguire per risolvere il problema di partenza
• Dato un problema complesso ci sono molteplici
algoritmi
– L’efficienza di un algoritmo dipende da
• Capacità di scomporre il problema di partenza nelle operazioni
base
• “Espressività” delle operazioni base messe a disposizione
dall’elaboratore

7
Linguaggio
• Nella programmazione di un elaboratore elettronico è
necessario utilizzare un linguaggio con espressioni
non ambigue
– “Luca, vai al supermercato a compare un litro di latte, se ci
sono le uova comprane 6”
– Luca tornò a casa con 6 litri di latte avendo visto che al
supermercato c’erano le uova

• Il linguaggio della macchina di von Neumann


– Un’istruzione è costituita da un campo codice operativo (CO)
e da un (eventuale) campo operando
– Il CO indica alla macchina quale operazione deve eseguire
– L’operando indica il valore al quale applicare l’operazione

8
Istruzioni
• Istruzioni di Trasferimento
– READ: legge da input
– WRITE: scrive in output
– LOAD xxx: legge dall’indirizzo xxx della memoria e copia
nell’accumulatore
– STORE xxx: copia il valore nell’accumulatore all’interno
della cella di memoria xxx
• Istruzioni aritmetiche
– ADD xxx
somma/sottrae/moltiplica/divide il valore
– SUB xxx
dell’accumulatore con il valore nella cella xxx
– MULT xxx
della memoria, il risultato è nell’accumulatore
– DIV xxx

9
Esempio programma
• Somma di numeri interi presenti sul dispositivo di input

– READ Legge il primo valore dall’input e lo copia nell’ acc.


– STORE 10 copia il valore dell’acc. nella cella 10 della mem.
– READ Legge il secondo valore e lo copia in acc.
– ADD 10 Somma il valore dell’acc con il valore della cella 10
il risultato è nell’acc.
– WRITE Scrive il valore dell’acc. in output

10
Macchina Astratta
• L’insieme di strutture dati e delle istruzioni
costituiscono una Macchina Astratta
• Dato un algoritmo A che si vuole eseguire sulla
macchina M è necessario descrivere A utilizzando il
linguaggio LM della macchina M
• Una macchina astratta può essere realizzata in
– Hardware
• Soluzione poco flessibile
• Per macchine complesse i costi possono essere molto onerosi
• Molto efficiente
– Simulazione Software
• Meno efficiente
• Costi ridotti

11
Macchina Astratta
• Si abbia a disposizione la macchina M0 con linguaggio L0
• La macchina astratta M1 con linguaggio L1 può essere
realizzata utilizzando M0 attraverso un software che possa
trasformare i programmi scritti in linguaggio L1 nel
linguaggio L0
• Interpretazione: durante l’esecuzione del programma
scritto in L1 viene effettuata l’interpretazione di ogni
istruzione in una o più istruzioni in L0
– L’interprete introduce inefficienza in esecuzione
– L’interpretazione avviene ad ogni esecuzione
• Compilazione: prima dell’esecuzione il programma viene
tradotto da L1 a L0
– La traduzione avviene solo una volta
– Una volta tradotto si ottiene il programma in linguaggio L0
eseguibile sulla macchina M0

12
Esempio Macchina astratta
• Linguaggio L0
– Consente una sola operazione aritmetica alla volta
– Gli operandi sono solo accumulatore e elemento presente in un
indirizzo di memoria

• somma tra due numeri presenti in memoria agli indirizzi IND1 e IND2

13
Esempio Macchina astratta
• Linguaggio L1
– Consente una sola operazione aritmetica alla volta
– Gli operandi devono essere presenti solo nei registri
– Si usa la notazione infissa
– Si usano nomi simbolici per gli operandi non indirizzi di memoria

calcolo il risultato dell’espressione


b2 – 4ac

14
Esempio Macchina astratta
• Linguaggio L2
– Consente l’uso di espressioni aritmetiche

calcolo il risultato dell’espressione

15
Esempio Macchina astratta
• Linguaggio L3
• Aumenta il livello di astrazione
• Per risolvere equazioni di secondo grado

• X[] <- SOLVE (A,B,C)

16
Esempio Macchina astratta
• Problema: risolvere un’equazione di secondo grado

17

Potrebbero piacerti anche