• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
109
0
0

Testo completo

(1)

Fondamenti di Informatica

Dati, Informazione ed Elaborazione dell’Informazione

Prof. Christian Esposito

Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18

(2)

Il termine “Informatica”:

Etimologia

Deriva dal francese informatique

Coniato negli anni ‘60 da Philippe Dreyfus

Ottenuto come contrazione dei termini “information” e

“automatique”

Usato per indicare la disciplina tecnico-scientifica che si occupa della progettazione e costruzione di macchine in grado di trattare (o elaborare) in modo automatico l’informazione

(3)

Trattamento dell’Informazione

• In generale, il trattamento dell’informazione riguarda la sua elaborazione in qualunque modo rilevabile da un osservatore

• Riguarda tutto ciò che possiamo fare con i nostri dispositivi digitali

Stampa di un file di testo da parte di un sistema informatico

Eseguire operazioni aritmetiche

Archiviare foto digitali

Ricerca su Google

Scrivere un post sulla bacheca di Facebook

E molto altro ancora…

(4)

Information & Communication Technology

In alternativa al termine “informatica” viene spesso utilizzato il termine

“tecnologia dell’informazione”

Dall’inglese Information Technology o IT

Negli ultimi decenni le capacità dei singoli calcolatori sono

notevolmente aumentate grazie alla loro interconnessione in rete

I computer sono diventati degli strumenti di comunicazione

La convergenza tra la tecnologia dell’informazione e le

telecomunicazioni ha dato vita ad una disciplina che prende il nome di Information & Communication Technology (ICT)

(5)

Il termine “Informazione” – 1/2

• Nei nostri discorsi

Mezzi di informazione

Società dell’informazione

Tecnologie dell’informazione

Potere dell’informazione

Monopolio dell’informazione

• Nell’ambito dell’informatica, il significato del termine

“informazione” è messo spesso in relazione con quello di

“dato” e di “conoscenza”

(6)

Il termine “Informazione” – 2/2

DATI

INFORMAZIONI CONOSCENZA

LIVELLO DI ASTRAZIONE

39,5

La temperatura

corporea di Tizio è 39,5 misurata in gradi

centigradi

La temperatura

corporea di 39,5 di Tizio viene considerata un segnale d’allarme

(7)

Dati, Informazioni e Conoscenza

Dati

Insieme di simboli tracciati su un supporto fisico, che rappresentano una proprietà di un oggetto nel mondo reale, ma non contengono alcun riferimento alla proprietà a cui si riferiscono

Informazioni

Dati messi in relazione con la proprietà a cui essi si riferiscono

Conoscenza

Regole che permettono di trarre vantaggio dalle informazioni

(8)

Ancora sui Dati

• Rappresentano la materia prima del trattamento dell’informazione

• Possono essere classificati in

Dati semplici, come i numeri, i caratteri, etc.

Dati complessi, come i film, i suoni, le immagini, etc.

La gestione di questo tipo di dati è resa possibile dall’incredibile potenza raggiunta dagli elaboratori nell’ultimo decennio

(9)

Dato

(10)

Informazione

La Cupola di Santa Maria del Fiore a Firenze, alta 116 metri

(11)

Conoscenza

La Cupola di Santa Maria del Fiore è la costruzione più alta di Firenze

(12)

La Realizzazione (parziale) di un Sogno

Disporre di elaboratori automatici

Macchine in grado di compiere autonomamente attività di elaborazione dell’informazione

Garantire dei benefici rispetto all’elaborazione condotta

dall’uomo

Riduzione dei tempi

Maggiore affidabilità

Incombenze “noiose”

Esecuzione automatica di operazioni che richiedono competenze poco comuni

(13)

Elaborazione dell’Informazione

Input Elaborazione Output

• Il calcolo automatico consiste nella trasformazione di una series di dati iniziali (o input) in dei dati finali (o output) per mezzo di una o più apposite regole di elaborazione.

Y = F(X)

•Un algoritmo è l’insieme delle regole (o procedimento matematico) per risolvere un problema di elaborazione.

(14)

Elaborazione dell’Informazione

Input Elaborazione Output

Esempio

Input: due numeri interi

Elaborazione: effettuane la moltiplicazione Output: prodotto

(15)

Gli Elaboratori (o Calcolatori) Elettronici – 1/2

Svolgono un lavoro che per l’uomo è naturale, ma

Lo fanno rapidamente

Sono infaticabili

Riescono a gestire enormi quantità di dati

In alcuni casi permettono di superare vincoli temporali e spaziali

• A differenza degli elettrodomestici sono programmabili e possono essere adattati a risolvere molti tipi di problemi

A patto che questi possano tradursi in un numero finito di operazioni

(16)

Gli Elaboratori (o Calcolatori) Elettronici – 2/2

L’informazione che ha attirato l’attenzione dell’uomo verso la

realizzazione di elaboratori è quella espressa in forma quantitativa

In particolare numerica

Per tale motivo si è diffuso il termine “calcolatore” (in inglese computer) che viene usato spesso in alternativa a “elaboratore”

In inglese, computer science è la traduzione del nostro termine

“informatica”

(17)

Il Computer

Il Computer è un elaboratore elettronico digitale

Elaboratore: macchina in grado di rappresentare ed elaborare dati in base ad una serie di istruzioni

Formulate e memorizzate in modo tale da poter essere eseguite automaticamente

Elettronico: indica che il computer utilizza componenti elettronici

Digitale: indica che il computer elabora e memorizza informazioni rappresentate mediante due simboli: 0 e 1

Con queste due cifre, usate in combinazioni diverse, si possono rappresentare tutti i dati (parole, numeri, immagini, filmati, etc.)

(18)

Computer ante litteram (1/4)

• La macchina di Anticitera (in greco antico: ὁ μηχανισμός τῶν Ἀντικυθήρων), è il più antico calcolatore meccanico conosciuto, databile intorno al 150-100 a.C.

• Si tratta di un sofisticato planetario, mosso da ruote dentate, per calcolare il sorgere del sole, le fasi lunari, i movimenti dei cinque pianeti allora conosciuti, gli equinozi, i mesi, i giorni della settimana e le date dei giochi olimpici.

(19)

Computer ante litteram (2/4)

• Nel XVII secolo Nepero, con le teorizzazioni sui logaritmi, permette nel 1632 al matematico inglese William Oughtred di realizzare il regolo calcolatore, con il quale si resero immediate molte operazioni matematiche.

• Intorno al 1642 il filosofo francese Blaise Pascal realizzò la sua celebre Pascalina, ottimizzata per operazioni di somma e sottrazione; sulla base di questa, non tardò Leibniz (1673) a realizzare una macchina capace di moltiplicare e dividere.

(20)

Computer ante litteram (3/4)

• Nell'Ottocento si svilupparono i rudimenti dell'elaborazione basata sul sistema numerico binario (0,1) e le schede perforate, e ne nacquero le prime applicazioni.

• Negli anni Trenta nel Novecento, nasce il progetto Memex, un sistema meccanico di archiviazione e consul- tazione dati.

(21)

Computer ante litteram (4/4)

• Nel 1939 Konrad Zuse costruì lo Z1, primo di una innovativa serie di calcolatori elettromeccanici basati sul sistema binario e programmabili, funzionanti prima a memorie elettro- meccaniche e poi a relè.

• Abbiamo poi Colossus, costruito nel 1944 da Alan Turing, che è stato il primo computer elettronico programmabile.

(22)

Modelli dell’informatica (1/8)

• Alla base dei moderni calcolatori troviamo una serie di modelli formali, o oggetti matematici, che ne descrivono il comportamento in termini di funzioni effettuate, informazioni che possono essere processate, e la sua evoluzione temporale rappresentata da apposite formule, equazioni e procedimenti matematici.

Uno dei modelli fondamentali dell’informatica è l’automa a stati finiti, che rappresenta una prima astrazione di una macchina che esegue algoritmi, e possiede uno stato o particolare condizione di funzionamento.

(23)

Modelli dell’informatica (2/8)

• Un automa a stati finiti si compone della quintupla (Q, I, U, t, w), dove:

Q è l’insieme finito dei suoi stati interni;

I è l’insieme finito dei suoi ingressi;

U è l’insieme finito delle sue uscite;

t è la funzione di transizione di stato dato un ingresso ed effettua il mapping degli elementi del prodotto cartesiano QxI in Q:

𝑡: 𝑄×𝐼 ⟶ 𝑄

w è la funzione di uscita, che determina l’uscita in base allo stato e all’ingresso ricevuto, ed effettua un mapping degli elementi del prodotto cartesiano QxI in U:

w: 𝑄×𝐼 ⟶ 𝑈

(24)

Modelli dell’informatica (3/8)

• Esiste un modello concettuale con due componenti:

uno che computa le funzioni t e w;

un altro (memoria) ripropone in ingresso il nuovo stato appena determinato.

Questo modello è detto di Mealy, mentre un altro è quello di Moore con uscite dipendenti solo dallo stato: w’: 𝑄 ⟶ 𝑈.

È stata dimostrata l’equivalenza dei due modelli, e le trasformazioni per passare da un modello all’altro.

t,w Q

I U

(25)

Modelli dell’informatica (4/8)

• Un modello di automa è rappresentabile sia per mezzo di una tabella di stato dove le righe corrispondono agli stati correnti, mentre le colonne agli ingressi ed ogni cella indica lo stato successivo e l’uscita.

• Una rappresentazione più immediata visiva è quella fornita dal cosiddetto diagramma degli stati, dove

ogni stato è rappresentato da un nodo

le transizioni tra stati da archi direzionati nel verso dello stato di partenza a quello di arrivo

sugli archi è indicato l’ingresso che ha fatto scattare la transizione e l’uscita ottenibile, separati da ‘/’.

(26)

Modelli dell’informatica (5/8)

Esempio di automa di Mealy: Distributore di bibite

• Ipotizziamo la progettazione dell’intelligenza di un distributore di bibite composto da:

una gettoniera che accetti due tipologie di monete (10 e 20 centesimi) e generi un codice binario che rappresenti gli input;

un dispositivo che, su comando dell’automa, sganci la bibita;

un dispositivo che, su comando dell’automa, sganci il resto.

(27)

Modelli dell’informatica (6/8)

• L’ingresso dell’automa è l’insieme I i cui elementi sono l’inserimento di 10 €cent, di 20 €cent e di nessuna moneta, ed è rappresentabile con due bit.

•I comandi per lo sgancio, invece, richiedono un bit ciascuno, perché ognuno di loro prevede solo due condizioni (sganciare o non sganciare).

• Gli stati corrispondono alla somma accumulata con l’introduzione delle monete: 0 €cent, 10

€cent, 20 €cent, 30 €cent.

(28)

Modelli dell’informatica (7/8)

Tabella degli stati

Tabella delle uscite

(29)

Modelli dell’informatica (7/8)

Rispetto all’automa di Mealy, è stato necessario aggiungere qualche stato in più.

(30)

Modelli dell’informatica (7/8)

Tabella degli stati Tabella delle

uscite

(31)

Modelli dell’informatica (7/8)

Dopo I due stati finali, essendosi chiuso il ciclo per l’acquisizione del prodotto, il sistema si riporta nello stato di riposo. Nei due stati finali, gli ingressi rappresentano condizioni di indifferenza (don’t care) e questo giustifica la X sulle evoluzioni finali che portano allo stato di riposo.

Dopo I due stati finali, essendosi chiuso il ciclo per l’acquisizione del prodotto, il sistema si riporta nello stato di riposo. Nei due stati finali, gli ingressi rappresentano condizioni di indifferenza (don’t care) e questo giustifica la X sulle evoluzioni finali che portano allo stato di riposo.

(32)

Modelli dell’informatica (8/8)

• Lo stato degli automi rappresenta la memorizzazione di eventi già accaduti nel processo in esame e che influiscono sul comportamento futuro dell’automa.

• Oggetto dell’informatica è studiare e realizzare appositi dispositivi per la conversazione dello stato detti registri.

• Un registro è un dispositivo fisico k- stabile, atto a memorizzare k stati distinti messi in relazione a k numeri distinti. Un registro è composto da un insieme di elementi fisici bistabili (detti flip-flop), ciascuno capace di contenere un’informazione a due valori detta bit.

(33)

Macchina di Turing (1/5)

• Il modello di automa fornisce il concetto di elaborazione come sequenze di azioni e di stato memorizzato in un registro, ma non aiuta a capire bene il concetto di algoritmo perché generico e non dettaglia le possibili azioni elaborative.

• Il modello di macchina di Turing è un modello fondamentale per lo studio degli algoritmi, definirne la calcolabilità e complessità, e determinarne l’equivalenza.

• Questa macchina è un particolare automa per cui sono definiti degli ingressi e delle uscite come insiemi di simboli, e ha un meccanismo di lettura (input) e scrittura (output) con una testina su un nastro.

(34)

Macchina di Turing (2/5)

•Una memoria come un nastro ideale, successione di caselle vuote o contenenti un simbolo di un alfabeto.

•Una testina di lettura e scrittura della posizione corrente sul nastro, spostabile di una posizione a destra o a sinistra.

• Un dispositivo di controllo, con un insieme finito di stati, e capace di cambiare stato ed effettuare un’operazione elabo- rativa data la coppia stato corrente e simbolo letto.

(35)

Macchina di Turing (3/5)

Esempio Macchina di Turing: Una macchina per la somma di due numeri interi

• Ipotizziamo di voler realizzare una macchina di Turing per la somma di due interi. Il primo passo è la codifica dei due numeri in input:

un numero naturale x sia rappresentato da x+1 simboli ‘1’;

i due numeri interi siano inizialmente presenti sul nastro uno di seguito all’altro e separati dal simbolo ‘;’;

I due numeri sono delimitati sul nastro dal simbolo ‘@’ posto inizialmente e alla fine dell’input.

@ 1 1 1 1 ; 1 1 1 @

(36)

Macchina di Turing (4/5)

• Il dispositivo di controllo è il seguente automa a stati finiti:

Attraversa la stringa in input fino a raggiungere il primo ‘;’ alla sua destra:

sostituisce tale simbolo con 1;

Si muove verso sinistra fino a trovare il primo ‘@ e cancella i due simboli ‘1 alla sua destra (che sicuramente esistono).

Posiziona la testina sul primo simbolo ‘1’.

(37)

Macchina di Turing (4 /5)

• Il dispositivo di controllo è il seguente automa a stati finiti:

Attraversa la stringa in input fino a raggiungere il primo ‘;’ alla sua destra:

sostituisce tale simbolo con 1;

Si muove verso sinistra fino a trovare il primo ‘@ e cancella i due simboli ‘1 alla sua destra (che sicuramente esistono).

Posiziona la testina sul primo simbolo ‘1’.

Stato iniziale della macchina.

Stato finale della macchina.

Transizione di stato: ad ogni transizione è associata un’etichetta formata da una lista di triple <σ,τ,m>, dove σ è il simbolo letto sul nastro, τ è quello scritto, e m è il movimento della testina, 1 per spostamento a destra, -1 per quello a sinistra e 0 per fermo.

(38)

Macchina di Turing (4/5)

@ 1 1 1 1 ; 1 1 1 @

T

Operazione: 3+2

(39)

Macchina di Turing (4/5)

@ 1 1 1 1 ; 1 1 1 @

T T

(40)

Macchina di Turing (4/5)

@ 1 1 1 1 ; 1 1 1 @

T

(41)

Macchina di Turing (4/5)

@ 1 1 1 1 ; 1 1 1 @

T

(42)

Macchina di Turing (4/5)

@ 1 1 1 1 1 1 1 1 @ T T

(43)

Macchina di Turing (4/5)

@ 1 1 1 1 1 1 1 1 @

T

(44)

Macchina di Turing (4/5)

@ 1 1 1 1 1 1 1 1 @

T T

(45)

Macchina di Turing (4/5)

@ @ 1 1 1 1 1 1 1 @

T T

(46)

Macchina di Turing (4/5)

@ @ @ 1 1 1 1 1 1 @

T T

Risultato: 5

(47)

Macchina di Turing (5/5)

• Esistono macchine di Turing che terminano le loro attività arrestandosi, e macchine che operano senza mai raggiungere la loro terminazione.

• Una macchina di Turing che si arresti e trasformi un nastro t in uno t’ rappresenta un algoritmo per l’elaborazione Y=F(X), dove X e Y sono codificati in t e t’. Un algoritmo è tutto ciò che può essere realizzato con una macchina di Turing.

• TESI di CHURCH: Non esiste un formalismo né una macchina concreta che possa calcolare una funzione non calcolabile secondo Turing.

(48)

Architettura di Von Neumann : Cenni Storici

• L’architettura di un calcolatore reale (computer) è molto complessa.

L’architettura di von Neumann è un modello semplificato dei calcolatori moderni.

• John von Neumann, matematico ungherese, progettò, verso il 1945, il primo calcolatore con programmi memorizzabili anziché codificati mediante cavi e interruttori

L’architettura definita prese il nome di Architettura di Von Neumann e divenne il riferimento per la quasi totalità dei calcolatori costruiti da allora ad oggi

(49)

Architettura di Von Neumann

• Nota anche come macchina di Von Neumann o modello di Von Neumann

Modello concettuale di un’architettura di computer che permette di rappresentare, memorizzare ed elaborare le informazioni

• È il modello secondo il quale è organizzata la maggior parte dei moderni elaboratori

Architettura di Von Neumann

Sottosistema di

interfaccia Sottosistema di

memorizzazione Sottosistema di elaborazione Connessione/comunicazione

(50)

Architettura di Von Neumann:

Caratteristiche Essenziali – 1/2

Obiettivo:

Realizzazione di un calcolatore universale (general purpose)

• Presenza di un dispositivo di memorizzazione in cui è possibile rappresentare sia dati che istruzioni

• Utilizzo dell’aritmetica binaria invece che quella decimale (maggiori dettagli nelle lezioni successive)

• Separazione netta tra dispositivo di

memorizzazione e dispositivo di elaborazione

(51)

Architettura di Von Neumann:

Caratteristiche Essenziali – 2/2

Proceduralità: possibilità di eseguire differenti programmi memorizzati

Programma: sequenza di istruzioni da eseguire per ottenere la soluzione ad una data classe di problemi

Sequenzialità: istruzioni eseguite in modo

strettamente sequenziale

(52)

Architettura di Von Neumann:

Componenti

• L’architettura di Von Neumann è costituita da quattro componenti principali (o funzionali)

Memoria Centrale

Memorizza e fornisce l’accesso a dati e programmi

Unità Centrale di Elaborazione (CPU)

Esegue istruzioni per l’elaborazione dei dati

Svolge anche funzioni di controllo

Interfacce di Ingresso e Uscita (o periferiche)

Componenti di collegamento con le periferiche del calcolatore

Bus

Trasferisce dati ed informazioni di controllo tra le componenti suddette

(53)

Architettura di Von Neumann

(54)

Architettura di Von Neumann in Concreto

BUS di sistema

CPU

tastiera mouse memoria di

massa monitor Memoria centrale

Periferiche

(55)

Trasferimento

Obiettivo: permettere lo scambio di informazioni tra le varie componenti funzionali del calcolatore

• Trasferimento dei dati e delle informazioni di controllo

• Due possibili soluzioni

• Collegare ciascuna componente con ogni altra componente

Collegare tutte le componenti a un unico canale (bus)

L’utilizzo di un bus favorisce la modularità e

l’espandibilità del calcolatore

(56)

Architettura di Von Neumann

(57)

BUS – 1/2

Il bus di sistema assicura l’interconnessione tra gli elementi della macchina di Von Neumann

Tutti i trasferimenti avvengono attraverso il bus

Il bus mette in collegamento logico i due elementi coinvolti nel trasferimento, in funzione dell’operazione da eseguire

Le operazioni si succedono in modo sincrono rispetto alla cadenza imposta da un orologio di sistema (clock)

Maggiori dettagli in seguito…

(58)

BUS – 2/2

1. L’unità che inizia il trasferimento (in genere la CPU) fornisce

l’indirizzo, che individua univocamente il dato, sulle linee del bus indirizzi, e configura le linee del bus di controllo, inviando un comando al dispositivo che contiene il dato (ad es. READ, alla memoria principale)

2. Il dato da trasferire è reso disponibile sul bus dati e viene ricopiato nel dispositivo destinatario

(59)

Architettura di Von Neumann

(60)

La Memoria Centrale – 1/3

La memoria centrale consiste in un insieme di unità

elementari di memorizzazione, dette locazioni o celle (o anche word)

La tecnologia utilizzata per la memoria centrale è quella dei dispositivi a semiconduttori, che la fanno apparire come

una matrice di bit (simboli 0 e 1)

Ogni bit è presente come stato (alto o basso) di tensione

(61)

La Memoria Centrale – 1/3

La memoria centrale consiste in un insieme di unità

elementari di memorizzazione, dette locazioni o celle (o anche word)

La tecnologia utilizzata per la memoria centrale è quella dei dispositivi a semiconduttori, che la fanno apparire come

una matrice di bit

Ogni bit è presente come stato (alto o basso) di tensione

Ciascuna cella nella memoria è individuata da un indirizzo

(62)

La Memoria Centrale – 2/3

Centrale

Indica l’importante ruolo che essa svolge nell’ambito dell’Architettura di Von Neumann

• È la memoria collegata alla CPU tramite bus, che contiene dati e programmi attualmente utilizzati o in esecuzione

La CPU legge e scrive dati ed istruzioni dalla/sulla memoria centrale

È detta memoria ad accesso casuale o Random Access Memory (RAM) perché qualsiasi cella può essere letta/scritta in un tempo mediamente costante

(63)

La Memoria Centrale – 3/3

• Le caratteristiche fondamentali della memoria centrale sono

Accesso diretto alle informazioni

Velocità elevata

Volatilità: quando il computer viene spento, i dati ed i programmi presenti in memoria vengono cancellati

Altri tipi di memorie sono dette persistenti (memorie di massa o secondarie)

Mantengono i dati anche senza l’alimentazione elettrica

Maggiori dettagli in seguito…

(64)

Architettura di Von Neumann

(65)

Elaborazione

• L’elaborazione nella macchina di Von Neumann è svolta dalla Central Processing Unit (CPU)

Detta anche Processore

Le istruzioni di un programma corrispondono ad operazioni elementari di elaborazione

• Ad esempio

Operazioni aritmetiche

Operazioni relazionali (confronto tra dati)

Operazioni su caratteri e valori di verità

Altre operazioni numeriche

(66)

La CPU – 1/2

La Central Processing Unit (o CPU) è l’unità centrale di elaborazione

Esegue le istruzioni dei programmi e ne regola il flusso

Esegue i calcoli

La CPU è un dispositivo sincrono, regolato da una sorta di

“orologio” (o clock), che stabilisce quante istruzioni al secondo essa può eseguire

Alla ricezione di un impulso di clock è eseguita una nuova istruzione

La CPU lavora a N GHz

Segue un ritmo di N miliardi di impulsi al secondo

Ad es. 3 GHz à 3 miliardi di impulsi al secondo

(67)

La CPU – 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

(68)

La CPU – ALU

La CPU è costituita da tre elementi fondamentali

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

(69)

La CPU – ALU

La CPU è costituita da tre elementi fondamentali

Unità Aritmetico-Logica (ALU)

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

(70)

La CPU – ALU

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

Il risultato è Zero, si è verificato un Overflow, etc.

ALU R esult Z ero O verflow a

b

ALU operation

C arryO ut

(71)

La CPU – Registri

La CPU è costituita da tre elementi fondamentali

Unità Aritmetico-Logica (ALU)

Registri

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

(72)

La CPU – Registri

I registri sono dispositivi di memorizzazione che consentono un accesso molto veloce ai dati contenuti

Hanno dimensioni prefissate

Alcuni registri hanno funzioni specifiche (Program Counter - PC o contatore di programma)

Indica la prossima istruzione da eseguire

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

(73)

La CPU – Registri

I registri sono dispositivi di memorizzazione che consentono un accesso molto veloce ai dati contenuti

Hanno dimensioni prefissate

Alcuni registri hanno funzioni specifiche (Program Counter - PC o

contatore di programma; Instruction Register – IR o registro istruzione)

Immagazzina l'istruzione in fase di elaborazione

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

(74)

La CPU – Registri

• Lo stato della CPU è rappresentato dalle informazioni memorizzate negli opportuni registri

Dati da elaborare (contenuti nei registri dati)

Istruzione da eseguire (nel registro istruzioni)

Indirizzo in memoria della prossima istruzione da eseguire (nel program counter)

Eventuali anomalie o eventi verificatisi durante l’elaborazione (nei registri di stato o flag)

(75)

La CPU – Unità di Controllo

La CPU è costituita da tre elementi fondamentali

Unità Aritmetico-Logica (ALU)

Registri

Unità di Controllo (CU)

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

(76)

La CPU – Unità di Controllo

Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di controllo (CU)

È una componente dell’unità centrale di elaborazione

Ogni componente dal 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 all’unità di elaborazione sia negli altri elementi funzionali

(77)

La CPU – Unità di Esecuzione

La CPU è costituita da tre elementi fondamentali

Unità Aritmetico-Logica (ALU)

Registri

Unità di Controllo (CU)

ALU CU

PC IR registri

Contatore di programma (Program Counter) Registro Istruzione (Instruction Register)

BUS

BIU

Bus Interface Unit

Unità di Esecuzione (EU)

(78)

Istruzioni Base della CPU – 1/2

Istruzioni di base eseguite dalla ALU

Somma (da cui sottrazione)

Scorrimento (shift)

Operazioni logiche

Operazioni di confronto

(da cui moltiplicazione e divisione)

(79)

Istruzioni Base della CPU – 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

(80)

Come si Eseguono i Programmi?

Programma: sequenza di istruzioni da eseguire per ottenere la soluzione ad una data classe di problemi

Il processore esegue le istruzioni di un programma una alla volta, in sequenza

Estrae le istruzioni dalla memoria

Le interpreta

Le esegue una dopo l’altra

Il processore esegue ogni 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

(81)

Ciclo Fetch-Decode-Execute – 1/3

(82)

Ciclo Fetch-Decode-Execute – 2/3

La CPU eseguire 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 punto 1 ed inizia a eseguire l’istruzione successiva

CU

IR P

memoria BUS C

Istruzione 1 Istruzione 2 Istruzione 3

02AD77F2

Segnali di controllo (ALU, Registri, etc.)

Fase di fetch

(83)

Ciclo Fetch-Decode-Execute – 3/3

Quando si applica la corrente elettrica al calcolatore viene attivata una fase di bootstrap, dove il ciclo viene inizializzato.

Viene avviata l’esecu-zione di un programma iniziale in ROM (non volatile) assegnando un valore iniziale opportuno a PC.

(84)

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 concetto di tipo di dato è quasi assente

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, completamente diverse

(85)

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

• Il programma non è quindi distinguibile dai dati osservando il contenuto della memoria

Le istruzioni sono individuate dai valori assunti dal registro PC durante l’esecuzione del programma

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000

PC

(86)

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

(87)

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)

……… spazio per la variabile x (cella 16)

……… spazio per la variabile y (cella 17)

……… spazio per la variabile z (cella 18)

……… spazio per la variabile r (cella 19)

……… spazio per la variabile s (cella 20)

(88)

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)

Istruzione à

Dati, Informazione ed Elaborazione dell’Informazione 87/108

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 operativo e uno o più operandi:

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

(89)

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 operativo e uno o più operandi:

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

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)

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 à

Dati, Informazione ed Elaborazione dell’Informazione 88/108

(90)

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 operativo e uno o più operandi:

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

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)

Gli operandi contengono le informazioni necessarie a reperire i dati sui quali l’istruzione deve operare

Istruzione à

Dati, Informazione ed Elaborazione dell’Informazione 89/108

(91)

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)

Un’istruzione è strettamente legata all’architettura della macchina

Istruzione à

Dati, Informazione ed Elaborazione dell’Informazione 90/108

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 operativo e uno o più operandi:

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

(92)

Architettura di Von Neumann

(93)

Interfacce di I/O

Le periferiche sono i dispositivi che consentono

all’elaboratore di scambiare informazioni con il mondo esterno

Vengono considerate appartenenti alla macchina di Von Neumann solo le interfacce di collegamento verso le periferiche, mentre le periferiche sono considerate componenti separate

(94)

Memorizzazione – 1/2

• Un calcolatore memorizza

I dati, che rappresentano informazioni di interesse

I programmi per l’elaborazione dei dati

La memoria centrale è l’unità responsabile della memorizzazione dei dati

• Un’unità di memoria fornisce due sole operazioni

Memorizzazione di un valore (scrittura)

Accesso al valore memorizzato (lettura)

(95)

Memorizzazione – 2/2

• Le memorie sono dispositivi per “lo stoccaggio” delle informazioni

• In ogni elaboratore vi sono tre tipi di memorie

Registri: contengono informazioni necessarie all’elaborazione della singola istruzione

Memoria centrale: contiene dati e istruzioni attualmente elaborati dal processore

Memorie di massa: contengono dati e programmi che non sono oggetto di elaborazione immediata

(96)

Caratteristiche della Memoria

I parametri fondamentali che caratterizzano una memoria sono

Modalità di accesso

Permanenza o volatilità dei dati

Capacità

Velocità necessaria per accedere ad una locazione di memoria durante un’operazione di lettura o scrittura

Espressa in nanosec, millisec, sec

In base agli ultimi due parametri le memorie si collocano a diversi livelli di una gerarchia, che va da memorie più capienti ma più lente

(memorie di massa) a memorie piccole e veloci (registri)

(97)

Tipologie di Accesso alle Memorie

Accesso sequenziale

Prima di leggere una cella è necessario leggere tutte quelle che la precedono

Accesso diretto

Dato l’indirizzo di una cella ne è possibile l’accesso immediato

Accesso misto

Le celle sono organizzate in blocchi costituiti da più celle, per cui si ha accesso diretto ai blocchi ed accesso sequenziale alle celle all’interno dei blocchi

(98)

Gerarchie di Memoria

Registri della CPU

Cache di primo, secondo e terzo livello Memoria Centrale (RAM)

Dischi interni

Dischi esterni

Capacità, Velocità d’Accesso, Costo

(99)

Architettura di Von Neumann

(100)

Le Memorie Secondarie (o di Massa)

Il calcolatore è dotato di dispositivi di memorizzazione chiamati memorie secondarie (o memorie di massa)

La loro funzione principale è garantire la persistenza dei dati

Possono essere fisse (Hard Disk) o rimovibili (pen drive USB)

Nel modello di Von Neumann le memorie di massa sono incluse tra le periferiche, poiché funzionalmente analoghe a quest’ultime dal punto di vista dell’interazione con l’elaboratore

Pro: capacità più elevate, costo per byte inferiore

Contro: tempi di accesso più lunghi delle memorie centrali

(101)

Riassumendo – 1/2

• Programmi e dati risiedono in file memorizzati in memoria secondaria

• Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella memoria primaria (RAM)

• La CPU è in grado di eseguire le istruzioni di cui sono composti i programmi

(102)

Riassumendo – 2/2

Memoria secondaria (Hard Disk)

programma

programma

Copia il programma ed eventuali dati in RAM

Esegui le istruzioni del programma

CPU

dati dati

Memoria centrale (RAM)

(103)

Hardware & Software – 1/5

• Un calcolatore di solito è suddiviso in

Hardware (Livello Fisico)

Software (Livello Logico)

(104)

Hardware & Software – 2/5

• Un calcolatore di solito è suddiviso in

Hardware (Livello Fisico)

Il termine hardware indica la struttura fisica dei dispositivi, costituita da componenti elettronici ed elettromeccanici che svolgono

specifiche funzioni nel trattamento e nella trasmissione delle informazioni

Software (Livello Logico)

Il termine software indica il livello logico (in contrapposizione con quello fisico dell’hardware), cioè l’insieme delle istruzioni che consentono all’hardware di svolgere i propri compiti

(105)

Hardware & Software – 3/5

“L’hardware è la parte del computer che puoi prendere a calci; il software quella contro cui

puoi solo imprecare.”

“L’hardware è un attore ed il software una sceneggiatura: l’hardware esegue operazioni diverse a seconda del tipo di software usato.”

(106)

Hardware & Software – 4/5

• Hardware

Elaborazione

• Software

(107)

Hardware & Software – 5/5

(108)

In sintesi

Cosa abbiamo visto

Gli elaboratori sono strumenti per risolvere (o aiutare a risolvere) problemi basati sulle

informazioni

Cosa vedremo

Tuttavia

1. Devono essere opportunamente codificati dati ed informazioni

2. Devono essere impartite, in maniera opportuna, le istruzioni per risolvere correttamente i problemi

(109)

Riferimenti

Libro di testo

Capitolo 1

Paragrafo 1

Capitolo 2

Paragrafo 1

Capitolo 6

Paragrafi 1 [NO Approfondimento], 2 [NO 6.2.2, 6.2.3], 3, 3.1, 3.2, 4 [NO dettagli], 5 [NO dettagli] e 6 [NO dettagli]

Riferimenti

Documenti correlati

• il computer legge dal file fisico una quantità di dati tale da riempire il buffer (oppure legge tutti i dati del file se questi sono in quantità inferiore alla lunghezza del

Qui uso il metodo che costruisce l’espressione booleana in forma di OR (simbolo +) di tanti termini quante sono le combinazioni dei valori degli ingressi in

● Fare riferimento alla pagina del corso per sapere di volta in volta quale è il proprio turno.. Per evitare i disagi che si sono verificati negli anni precedenti non saranno

Come si vede, oltre ad utilizzare un vettore di elementi di tipo tipobaseQueue, vengono utilizzate due variabili, front e rear, che indicano rispettivamente la posizione del

In questa implementazione viene memorizzato, oltre al puntatore al primo elemento (testa della lista) anche il puntatore all’ultimo elemento della lista (coda della

In questa implementazione viene memorizzato, oltre al puntatore al primo elemento (testa della lista) anche il puntatore all’ultimo elemento della lista (coda della lista) e il

• Il metodo di classe static void stampaIntersezione (Intervallo interv1, Intervallo interv2), che visualizza sullo standard output tutti numeri compresi nell’intersezione tra

● Ad esempio ogni immagine e’ composta da pixel, se usassi 1 solo bit per ogni pixel potrei avere solo.. immagini in bianco e nero (1 pixel nero , 0 pixel