• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
88
0
0

Testo completo

(1)

Fondamenti di Informatica

Dati, Informazione e Conoscenza

I Sistemi di Elaborazione

(2)

Il termine “Informatica”:

Definizione

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)

Informatica: di che si tratta?

Scienza che riguarda la rappresentazione e l’elaborazione dell’informazione

Studia le caratteristiche dell’informazione e i modi di usarla, immagazzinarla, trasportarla e manipolarla in modo automatico

Due aree principali

• I calcolatori elettronici e i sistemi che li utilizzano

• I metodi per la soluzione di problemi e la gestione delle informazioni

(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 Concetto di Informazione

Informazione: un valore all’interno di un insieme di elementi

Tipo dell'informazione: insieme degli elementi

Valore: elemento

Attributo: definisce il significato dell’informazione, ossia serve a capire di cosa si tratta e ad identificarla (distinguerla da altre)

Esempio di informazione

• Di che colore è la luce del semaforo?

• Possibili valori: Rosso, Giallo, Verde

(6)

Informazione: Altri esempi

La soluzione dell’equazione è 3,5

Il cliente è il Sig. Giovanni

(7)

Dato, Informazione e Conoscenza

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”

(8)

Dati

Sono la materia prima del trattamento dell’informazione

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

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)

Informazioni e Conoscenza

Informazioni

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

Conoscenza

• Regole che permettono di trarre vantaggio dalle informazioni

(10)

Dati e Informazioni

Dato

(11)

Dati e Informazioni

Informazione

(12)

Dati e Informazioni

Informazione

(13)

Dati e Informazioni

Il 30% (dato)

È stato registrato il 30% di assenze degli studenti di ingegneria chimica nel giorno 13/09/2016 (informazione)

L’aumento che avrai nella tua busta paga a partire dal mese di marzo è pari al 30% del tuo precedente salario

12 ottobre 1492 (dato)

Il 12 ottobre 1492 è la data della scoperta dell’America (informazione)

(14)

Dati, Informazioni e Conoscenza -

DATIDATI

INFORMAZIONI INFORMAZIONI CONOSCENZA 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

(15)

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

(16)

Elaborazione

dell’Informazione

Input Elaborazione Output

Esempio

Input: due numeri interi

Elaborazione: effettuane la moltiplicazione Output: risultato (il prodotto)

(17)

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 qualsiasi tipo di problema

• A patto che questo possa tradursi in un numero finito di operazioni

(18)

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”

(19)

Il Computer

Definizione: 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 i due simboli (digit) della numerazione binaria:

0 e 1

(20)

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

(21)

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

(22)

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

Separazione netta tra dispositivo di memorizzazione e dispositivo di

elaborazione

(23)

Architettura di Von Neumann:

Caratteristiche Essenziali – 2/2

Proceduralità: possibilità di eseguire differenti programmi memorizzati

Il modello è basato sul paradigma di programmazione procedurale

Il programma indica la sequenza di istruzioni da eseguire per ottenere la soluzione ad una data classe di problemi

Sequenzialità: regola della selezione dell’istruzione da eseguire rigidamente fissata

• Connessione tra le unità funzionali con singolo flusso di informazione tra memoria e processore

Architettura a BUS

(24)

Architettura di Von

Neumann: Componenti

L’architettura di Von Neumann è costituita da quattro componenti principali

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

Svolge la funzionalità di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali

(25)

Architettura di Von

Neumann

(26)

Architettura di Von

Neumann in Concreto

BUS di sistema

CPU

tastiera mouse memoria di

massa monitor Memoria centrale

Periferiche

(27)

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 ciascun componente con ogni altro componente

Collegare tutti i componenti a un unico canale (bus)

L’utilizzo di un bus favorisce la modularità e l’espandibilità del

calcolatore

(28)

Architettura di Von

Neumann

(29)

BUS – 1/3

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

• Tutti i trasferimenti di dati avvengono attraverso il bus

Il bus mette in collegamento logico i due elementi coinvolti nel trasferimento, in funzione dell’operazione da eseguire, mentre il collegamento fisico è sempre presente

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

• Unità di controllo contenuta dentro la CPU che durante ogni intervallo di tempo coordina le attività che vengono svolte dentro la stessa CPU o negli

(30)

BUS – 2/3

L’architettura più consolidata per il calcolatore prevede quindi unità funzionali collegate fra loro attraverso un unico canale di

comunicazione, il bus

Il bus è fisicamente realizzato mediante un insieme di connettori elettrici

Memoria principale

CPU I/O I/O I/O

BUS Indirizzi

Dispositivi di Input/Output

(31)

BUS – 3/3

Il bus è utilizzato per trasferire dati fra le unità funzionali

• 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)

• l dato da trasferire è reso disponibile sul bus dati e viene ricopiato nel dispositivo destinatario

(32)

Architettura di Von

Neumann

(33)

La Memoria Centrale – 1/3

La memoria centrale consiste in un insieme di unità

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

La dimensione della singola cella è di solito pari ad 8 bit (1 byte)

La tecnologia utilizzata per la memoria centrale è quella

dei dispositivi a semiconduttori, che la fanno apparire

come una matrice di bit

(34)

La Memoria Centrale – 1/3

La memoria centrale consiste in un insieme di unità

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

• La dimensione della singola cella è di solito pari ad 8 bit (1 byte)

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

Un indirizzo è rappresentato da un numero un

numero binario che varia da 0 a 2

N

-1

(35)

La Memoria Centrale – 2/3

Centrale: indica l’importante ruolo che essa svolge nell’ambito dell’Architettura di Von Neumann

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

Memoria ad Accesso Diretto

• È la memoria collegata alla CPU tramite bus, che contiene

dati e programmi attualmente utilizzati/in esecuzione

(36)

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 e 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)

(37)

Architettura di Von

Neumann

(38)

Elaborazione – 1/2

L’elaborazione nella macchina di Von Neumann è svolto 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

(39)

Elaborazione – 2/2

Un calcolatore basato sull’architettura di Von Neumann esegue un programma sulla base dei seguenti principi

• Dati e istruzioni sono memorizzati in una memoria unica

È permessa sia scrittura che lettura sulla memoria

• I contenuti della memoria sono indirizzati in base alla loro posizione

In modo indipendentemente contenuto (dato o istruzione)

• Le istruzioni vengono eseguite in modo sequenziale

Un calcolatore sa svolgere poche tipologie di operazioni elementari ma in modo molto efficiente

• Può eseguire decine o centinaia di milioni di istruzioni al secondo

(40)

La CPU – 1/4

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,

Cambia stato solo quando riceve un impulso di clock

Orologio del sistema che fornisce all’elaboratore una sorta di “battito regolare”

La CPU lavora a N GHz

Segue un ritmo di N miliardi di impulsi al secondo

3 GHz  3 miliardi di impulsi al secondo

(41)

La CPU – 2/4

• 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 però anche dalla larghezza del bus, ovvero dal numero di bit (ampiezza del singolo dato) che il processore è in grado di ricevere ed elaborare simultaneamente

(42)

La CPU – 3/4

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

(43)

La CPU – 3/4

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)

BIU

Bus Interface Unit

(44)

La CPU – 3/4

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

(45)

La CPU – 3/4

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)

BIU

Bus Interface Unit

(46)

La CPU – 3/4

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)

(47)

La CPU – 4/4

• Ad ogni clock la CPU:

Legge il suo stato interno (determinato dal contenuto dei registri di stato) e la sequenza di ingresso (determinata dal contenuto dei registri istruzione e dati)

Produce un nuovo stato “dipendente” dallo stato in cui si trovava originariamente

• In pratica, la CPU realizza una complessa funzione

logica, con decine di ingressi e di uscite

(48)

I Registri – 1/2

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

• Hanno dimensioni prefissate (ad es. 32/64 bit)

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

ALU CU

PC IR registri

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

BUS

BIU

Bus Interface Unit

(49)

I Registri – 2/2

Generalmente le operazioni della ALU si possono effettuare solo fra dati presenti nei registri ed anche il risultato viene momentaneamente memorizzato in un registro

Alcuni registri di una CPU Intel® Pentium®

EIP Instruction pointer (PC)

EFLAGS Condition codes

Code segment pointer CS

Stack segment pointer (top of stack) SS

Data segment pointer 0 DS

Data segment pointer 1 ES

Data segment pointer 2 FS

Data segment pointer 3 0

31

GPR 0 EAX

GPR 3 EBX

GPR 1 ECX

GPR 2 EDX

GPR 5 EBP

GPR 4 ESP

Name Use

Registri del Pentium

(50)

I Registri - Le Tipologie

Registro dati

Contiene dati copiati/da copiare dalla/nella RAM

Registro indirizzi

Contiene l’indirizzo della cella della RAM

Registro istruzione corrente

Contiene l’indirizzo della cella della RAM contenente l’istruzione che deve essere eseguita

Contatore di programma (Program Counter / PC)

Contiene l’indirizzo della cella della RAM contenente la prossima istruzione da eseguire

Registri operandi

Contengono gli eventuali operandi ed il risultato dell’istruzione dopo la sua esecuzione

Registro di stato

(51)

Lo Stato della CPU

• Lo stato della CPU è costituito da 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)

(52)

Set di istruzioni di base CPU – 1/2

Istruzioni di base eseguite dalla ALU

Somma (da cui sottrazione)

Scorrimento (shift)

Operazioni logiche

Operazioni di confronto (sufficiente confronto con zero)

(da cui moltiplicazione e divisione)

(53)

Set di istruzioni di base 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

(54)

ALU – 1/2

L’ALU (Arithmetic-Logic Unit), detta anche Unità Aritmetico-Logica, si occupa di eseguire operazioni aritmetiche e logiche su 2 operandi

Gli operandi sono rappresentati mediante N bit

Ad esempio, 32/64 bit

• Oltre al risultato dell’operazione stessa può produrre ulteriori informazioni

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

ALU Result

Z ero O verflow a

b

ALU operation

(55)

ALU – 2/2

Il tipo di operazione selezionata in un dato istante dipende

• Dallo stato di alcune linee di controllo provenienti dalla CU

Le operazioni logiche vengono eseguite bit a bit fra i due operandi

Esiste un’unità specializzata per le operazioni in virgola mobile

Floating Point Unit (FPU)

ALU Result

Z ero a

ALU operation

(56)

Unità di Controllo (CU)

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

È un 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

(57)

Come si Eseguono i Programmi

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

• Estrae le istruzioni dalla memoria,

• Le interpreta e

• Le esegue una dopo l’altra

• Un programma indica la sequenza di istruzioni da eseguire per ottenere la soluzione ad un data classe di problemi

Il processore esegue ogni istruzione mediante una sequenza ben definita di operazioni detta ciclo di istruzione o ciclo macchina

Estrazione di una istruzione: fase di fetch

(58)

Ciclo Fetch-Decode-Execute – 1/3

Fetch

Decode

Execute

(59)

Ciclo Fetch-Decode-Execute – 2/3

La CPU è in grado di eseguire solo istruzioni codificate in linguaggio macchina

Lo fa 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 dei dati presenti in memoria, determinane la posizione

Carica le parole corrispondenti a tali dati, se necessario, in registri della CPU

3. Esegui l’istruzione (execute)

4. Torna al punto 1 e inizia a eseguire l’istruzione successiva

P CU memoria BUS C

Istruzione 1 02AD77F2

Segnali di controllo (ALU, Registri, etc.)

Fase di fetch

(60)

Ciclo Fetch-Decode-Execute –

3/3

(61)

Flusso di Elaborazione delle Informazioni

RAM

Memoria secondaria

programma

programma

copia il programma in RAM

CPU

(62)

Linguaggio (o Codice) Macchina

Definizione

Insieme di istruzioni eseguite direttamente dalla CPU

Ogni istruzione svolge un compito specifico

Le istruzioni sono piuttosto rudimentali e sono 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 (40/100) 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

(63)

Il Linguaggio Macchina

• Un programma in esecuzione è memorizzato 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

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000

PC

(64)

Il Set di Istruzioni Macchina

• L’insieme delle istruzioni eseguibili, e la relativa codifica, sono generalmente diverse per modelli diversi di processore

• Le istruzioni possono essere codificate con un numero variabile di bit (ad es.

Pentium) o con un numero fisso (es. MIPS-32 bit)

• Le categorie di istruzioni normalmente disponibili sono

Trasferimento dati

Spostano dati (byte, word) 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

(65)

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)

(66)

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)

D a t i e i s t r u z i o n i d i p r o g r a m m a s o n o c o d i f i c a t e i n f o r m a b i n a r i a , c i o è m e d i a n t e s e q u e n z e fin i t e d i b i t .

U n a i s t r u z i o n e c o d i f i c a t a s i c o m p o n e d i d u e p a r t i : i l c o d i c e o p e r a t i v o e u n o o p i ù o p e r a n d i :

F u n z i o n a m e n t o d e l l a m a c c h i n a d i V o n N e u m a n n

C O O p . 1 O p . n

I l c o d i c e o p e r a t i v o s p e c i f i c a , s e c o n d o u n a c o n v e n z i o n e d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l ’ i s t r u z i o n e d a e s e g u i r e . P e r o g n i m a c c h i n a e s i s t o n o t a n t i c o d i c i

o p e r a t i v i d i f f e r e n t i q u a n t e s o n o l e i s t r u z i o n i p r e s e n t i n e l l ’ i n s i e m e ( s e t ) d e l l e i s t r u z i o n i c h e l a m a c c h i n a è i n g r a d o d i i n t e r p r e t a r e e d e s e g u i r e .

G l i o p e r a n d i c o n t e n g o n o , a n c o r a i n u n a f o r m a c o d i f i c a t a d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l e i n f o r m a z i o n i

n e c e s s a r i e a r e p e r i r e i d a t i s u i q u a l i l ’ i s t r u z i o n e d e v e o p e r a r e .

Istruzione 

Dati, Informazione ed Elaborazione dell’Informazione

(67)

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)

D a t i e i s t r u z i o n i d i p r o g r a m m a s o n o c o d i f i c a t e i n f o r m a b i n a r i a , c i o è m e d i a n t e s e q u e n z e fin i t e d i b i t .

U n a i s t r u z i o n e c o d i f i c a t a s i c o m p o n e d i d u e p a r t i : i l c o d i c e o p e r a t i v o e u n o o p i ù o p e r a n d i :

F u n z i o n a m e n t o d e l l a m a c c h i n a d i V o n N e u m a n n

C O O p . 1 O p . n

I l c o d i c e o p e r a t i v o s p e c i f i c a , s e c o n d o u n a c o n v e n z i o n e d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l ’ i s t r u z i o n e d a e s e g u i r e . P e r o g n i m a c c h i n a e s i s t o n o t a n t i c o d i c i

o p e r a t i v i d i f f e r e n t i q u a n t e s o n o l e i s t r u z i o n i p r e s e n t i n e l l ’ i n s i e m e ( s e t ) d e l l e i s t r u z i o n i c h e l a m a c c h i n a è i n g r a d o d i i n t e r p r e t a r e e d e s e g u i r e .

G l i o p e r a n d i c o n t e n g o n o , a n c o r a i n u n a f o r m a c o d i f i c a t a d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l e i n f o r m a z i o n i

n e c e s s a r i e a r e p e r i r e i d a t i s u i q u a l i l ’ i s t r u z i o n e d e v e o p e r a r e .

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

(68)

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)

D a t i e i s t r u z i o n i d i p r o g r a m m a s o n o c o d i f i c a t e i n f o r m a b i n a r i a , c i o è m e d i a n t e s e q u e n z e fin i t e d i b i t .

U n a i s t r u z i o n e c o d i f i c a t a s i c o m p o n e d i d u e p a r t i : i l c o d i c e o p e r a t i v o e u n o o p i ù o p e r a n d i :

F u n z i o n a m e n t o d e l l a m a c c h i n a d i V o n N e u m a n n

C O O p . 1 O p . n

I l c o d i c e o p e r a t i v o s p e c i f i c a , s e c o n d o u n a c o n v e n z i o n e d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l ’ i s t r u z i o n e d a e s e g u i r e . P e r o g n i m a c c h i n a e s i s t o n o t a n t i c o d i c i

o p e r a t i v i d i f f e r e n t i q u a n t e s o n o l e i s t r u z i o n i p r e s e n t i n e l l ’ i n s i e m e ( s e t ) d e l l e i s t r u z i o n i c h e l a m a c c h i n a è i n g r a d o d i i n t e r p r e t a r e e d e s e g u i r e .

G l i o p e r a n d i c o n t e n g o n o , a n c o r a i n u n a f o r m a c o d i f i c a t a d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l e i n f o r m a z i o n i

n e c e s s a r i e a r e p e r i r e i d a t i s u i q u a l i l ’ i s t r u z i o n e d e v e o p e r a r e .

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

Istruzione 

Dati, Informazione ed Elaborazione dell’Informazione

(69)

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)

D a t i e i s t r u z i o n i d i p r o g r a m m a s o n o c o d i f i c a t e i n f o r m a b i n a r i a , c i o è m e d i a n t e s e q u e n z e fin i t e d i b i t .

U n a i s t r u z i o n e c o d i f i c a t a s i c o m p o n e d i d u e p a r t i : i l c o d i c e o p e r a t i v o e u n o o p i ù o p e r a n d i :

F u n z i o n a m e n t o d e l l a m a c c h i n a d i V o n N e u m a n n

C O O p . 1 O p . n

I l c o d i c e o p e r a t i v o s p e c i f i c a , s e c o n d o u n a c o n v e n z i o n e d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l ’ i s t r u z i o n e d a e s e g u i r e . P e r o g n i m a c c h i n a e s i s t o n o t a n t i c o d i c i

o p e r a t i v i d i f f e r e n t i q u a n t e s o n o l e i s t r u z i o n i p r e s e n t i n e l l ’ i n s i e m e ( s e t ) d e l l e i s t r u z i o n i c h e l a m a c c h i n a è i n g r a d o d i i n t e r p r e t a r e e d e s e g u i r e .

G l i o p e r a n d i c o n t e n g o n o , a n c o r a i n u n a f o r m a c o d i f i c a t a d i p e n d e n t e d a l l a s p e c i f i c a m a c c h i n a , l e i n f o r m a z i o n i

n e c e s s a r i e a r e p e r i r e i d a t i s u i q u a l i l ’ i s t r u z i o n e d e v e o p e r a r e .

Una istruzione (e i suoi operandi e codice operativo) è strettamente legata alla architettura della macchina

Istruzione 

Dati, Informazione ed Elaborazione dell’Informazione

(70)

Dati e Istruzioni in Memoria Centrale (sketch)

E s e c u z i o n e d e i p r o g r a m m i

P e r e s s e r e e s e g u i t o d a l l a m a c c h i n a d i V o n N e u m a n n , u n p r o g r a m m a , c h e è c o s t i t u i t o d a u n a s e q u e n z a d i i s t r u z i o n i e d a i d a t i , d e v e e s s e r e p r e s e n t e n e l l a

m e m o r i a c e n t r a l e , i n f o r m a d i s e q u e n z e d i b i t a l l o c a t e i n p a r o l e s u c c e s s i v e d i m e m o r i a .

P e r e s e m p i o , s u p p o n e n d o c h e i l c a r i c a m e n t o a v v e n g a a p a r t i r e d a l l a l o c a z i o n e d i i n d i r i z z o 0 :

0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 3 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 4 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0

… … … …

… … … …

1 5 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 h a l t 1 6 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1

1 7 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 8 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0

… … … …

… … … …

L a p a r t e i s t r u z i o n i e l a p a r t e d a t i s o n o n e l l ’ e s e m p i o s e p a r a t e d a l l a i s t r u z i o n e d i

h a l t , u n a i s t r u z i o n e

I s t r u z i o n i

D a t i Memoria

Indirizzi

Dati, Informazione ed Elaborazione dell’Informazione

(71)

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:

Assembler

10001000110110101101010101010100 01001000100100000000000000000000 11000000000000000000000000001000 10011000110110101101010101010100

registro indirizzo di memoria

(72)

Assembler e 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 STORE REG1, e

e(ab)(cd);

…corrisponde all’unica

istruzione MATLAB

(73)

Architettura di Von

Neumann

(74)

Scambio di Dati con l’Utente

Le periferiche sono le apparecchiature che consentono all’elaboratore di scambiare informazioni con il mondo esterno, mediante operazioni di ingresso (verso l’elaboratore) e uscita (verso l’esterno)

• Vengono in realtà considerate appartenenti alla macchina di Von Neumann solo le interfacce di collegamento verso le periferiche (bus), mentre le periferiche sono considerate componenti separate

Si noti che nel modello di Von Neumann anche le memorie di massa sono incluse tra le periferiche, poiché funzionalmente analoghe a queste ultime dal punto di vista dell’interazione con l’elaboratore

(75)

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)

(76)

Memorizzazione – 2/2

Le memorie sono dispositivi per “lo stoccaggio” delle informazioni

Ogni memoria è costituita da celle, a cui si accede tramite un indirizzo

In ogni elaboratore vi sono tre tipi di memorie

Registri: contengono informazioni necessarie alla 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

(77)

Caratteristiche della Memoria

I parametri fondamentali che caratterizzano una memoria sono

Dimensione della parola (locazione di memoria)

Modalità di accesso (diretto o sequenziale)

Permanenza o volatilità dei dati

Capacità (numero di locazioni disponibili), espressa in KB, MB, GB, etc.

Tempo di accesso, necessario per accedere ad una locazione di memoria per un’operazione di lettura o scrittura, espresso 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ù capaci ma più lente

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

(78)

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

Accesso associativo

• L’accesso ad una cella non è guidato dal suo indirizzo ma dal suo contenuto

(79)

Gerarchie di Memoria

Registri della CPU Registri della CPU

Cache di primo, secondo e terzo livello Cache di primo, secondo e terzo livello

Memoria Centrale (RAM) Memoria Centrale (RAM)

Dischi interni Dischi interni

Capacità, Velocità d’Accesso, Costo

(80)

Architettura di Von

Neumann

(81)

Le Memorie di Massa (o Secondarie)

La Memoria Centrale (RAM)

Pro: particolarmente adatta a supportare l’esecuzione dei programmi, dati i suoi ridotti tempi d’accesso

Contro: non è adatta per archiviare dati su orizzonti temporali più lunghi data la sua volatilità

Il calcolatore è dotato di altri dispositivi di memorizzazione chiamati Memorie di Massa (Memorie Secondarie)

La loro funzione principale è di garantire la persistenza dei dati

• Capacità più elevate, costo per byte inferiore, tempi di accesso più lunghi delle memorie centrali

(82)

Le Memorie di Massa:

Tecnologie Utilizzate

Le tecnologie più utilizzate per la realizzazione di memorie di massa sono

• Dispositivi Magnetici

• Dispositivi Ottici

• Memorie Flash

(83)

Riassumendo…

Programmi e dati risiedono in file memorizzati in memoria secondaria

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

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

programmi

(84)

Hardware & Software – 1/3

Un calcolatore di solito è suddiviso in

Hardware (Livello Fisico)

Il termine hardware indica la struttura fisica dei dispositivi (o macchine

informatiche), costituita da componenti elettronici ed elettromeccanici (computer, monitor, stampante, cavi telefonici, antenne, etc.) che svolgono specifiche funzioni nel trattamento e nella trasmissione delle informazioni

Parti fisiche da cui è composto il calcolatore

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

(85)

Hardware & Software –

2/3

(86)

Hardware & Software – 3/3

“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.”

(87)

Hardware & Software: i due Livelli delle Tecnologie Informatiche

• Hardware

Elaborazione

• Software

(88)

In sintesi

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

Ma come ciò avviene?

1.

Abbiamo bisogno di codificare e memorizzare opportunamente dati e informazioni

2.

Abbiamo bisogno di impartire le giuste istruzioni per risolvere

correttamente problemi

Riferimenti

Documenti correlati

● 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

(descri- zione codicologica ibid., pp. - L'edizione critica è stata curata da Henri Quentin in collaborazione con Hippolyte Delehaye: Acta Sanctorum Novembris. Collecta,

Così ad esempio, alla metà degli anni '90 del secolo scorso, due antropologi di rilievo come Marc Augè e Clifford Geertz, con un background culturale differente,

This paper reviews the major (Calcium, Phosphorus, Potassium, Sodium, Chlorine, Sulphur, Magnesium) and the trace elements (Iron, Copper, Cobalt, Iodine, Manganese, Zync,

Available Open Access on Cadmus, European University Institute Research Repository.... European

Fig.. ste aree della Sardegna le cavità minerarie e le grotte di miniera sono di primaria importanza per molte specie di pipistrelli che trovano rifu- gio nel loro interno. La

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