Architettura dei calcolatori - fieromatre.files.wordpress.com · da una lezione del prof. Luca...
Transcript of Architettura dei calcolatori - fieromatre.files.wordpress.com · da una lezione del prof. Luca...
Architettura dei calcolatorida una lezione del prof. Luca Cabibbo
1
Applicazioni 1/2
Aspetti rilevanti di un’applicazione (o programma applicativo o programma)
• gestisce informazioni
• offre operazioni per la manipolazione di queste informazioni
• consente di perseguire un qualche scopo
2
Il gioco Solitario
• qual è lo scopo? quali le informazioni? quali le operazioni?
• informazioni: • carte• mazzo (in alto a sinistra) • pile di carte (sono 4, in alto a destra) • colonne di carte (sono 7, in basso)
3
Ulteriori commenti
• In un’applicazione • di solito le operazioni possono essere eseguite in modo interattivo
• non è sempre così
• l’utente può perseguirne lo scopo utilizzando solo le operazioni fornite dall’applicazione
• Componenti software che possono essere (ri)usati nello sviluppo di nuovo software hanno le stesse caratteristiche
4
Applicazioni 2/2
Esistono moltissime tipologie di applicazioni
Le applicazioni dei computer hanno in genere caratteristiche simili a quelle del gioco Solitario
• un’applicazione permette ai suoi utenti di perseguire un particolare scopo
• un’applicazione gestisce un insieme di dati e informazioni
• un’applicazione consente l’elaborazione delle informazioni che gestisce mediante delle operazioni
• ciascuna operazione può essere eseguita solo se sono soddisfatte le condizioni che ne abilitano l’esecuzione
• ciascuna operazione va richiesta con la sua modalità
• l’utente interagisce con l’applicazione eseguita dal computer richiedendo l’esecuzione di una sequenza di operazioni, un’operazione alla volta
5
Applicazioni e risoluzione di problemi
La possibilità di poter eseguire su un medesimo computer una varietà di applicazioni diverse rende il computer una macchina che può essere utilizzata da un utente, in modo versatile, per la risoluzione di problemi
• l’utente deve possedere un’applicazione in grado di risolvere un suo problema
• inoltre, l’utente deve fornire all’applicazione delle “istruzioni” dettagliate su come risolvere il problema
• ciascuna “istruzione” corrisponde alla richiesta di eseguire una delle operazioni fornite dall’applicazione
• ciascuna applicazione è infatti caratterizzata • dalla tipologia di informazioni che permette di gestire
• dall’insieme delle operazioni che fornisce
• per usare un’applicazione, l’utente deve conoscere l’insieme delle operazioni che l’applicazione fornisce, comprenderne il significato e saperne richiedere l’esecuzione
6
Alcuni esempi di applicazioni
7
Word processor
Un word processor è un’applicazione per l’elaborazione di testi che consente la scrittura e stampa di documenti
8
Browser web
Un browser web consente l’accesso a documenti (chiamati pagine) sul World Wide Web e la loro visualizzazione
9
Applicazione web
Un’applicazione web è un’applicazione sul World Wide Web che viene eseguita tramite un browser web
10
Intelligenza
• Intelligenza:• “the capacity to learn and solve problems” (Websters dictionary)
• In particolare:• the ability to solve novel problems
• the ability to act rationally
• the ability to act like humans
• Intelligenza Artificiale• costruire e capire entità o agenti intelligenti
• 2 approcci principali: “engineering” versus “cognitive modeling”
Applicazioni e interfacce
• Un’applicazione viene utilizzata tramite la sua interfaccia utente
• L’interfaccia di un’applicazione è il mezzo di interazione tra l’utente (utente dell’applicazione) e il computer (esecutore dell’applicazione)
• Tre tipi principali di interfacce utente • interfacce grafiche (GUI)
• interfacce a caratteri (stdin / stdout)
• interfacce digitali (es., arduino)
12
Interfacce grafiche
Le interfacce grafiche hanno di solito le seguenti caratteristiche• visualizzano sullo schermo del calcolatore delle finestre
• operazioni e informazioni sono rappresentate da opportuni elementi• desktop (scrivania), finestre, menu, pulsanti e icone, finestre di dialogo, …
• tecnologia WYSIWYG (what you see is what you get)
• permettono l’esecuzione di operazioni mediante l’interazione con la tastiera e il mouse
13
Architettura dei calcolatori
Che cos’è un computer (o calcolatore)? Come funziona un computer?
Un computer è un sistema programmabile• un computer è un sistema
• un sistema è un oggetto costituito da molte parti (componenti) che interagiscono, cooperando, al fine di ottenere un certo comportamento
• un computer è programmabile• è in grado di eseguire programmi
Studiare l’architettura di un sistema• individuare ciascun componente del sistema
• comprendere i principi di funzionamento di ciascun componente
• comprendere come i vari componenti interagiscono tra di loro
14
Hardware e software
La prima decomposizione di un computer • hardware
• la struttura fisica del computer, costituita da componenti elettronici ed elettromeccanici
• software• l’insieme dei programmi che consentono all’hardware di svolgere dei compiti utili
• software di base e software applicativo
15
software applicativo
software di base
hardware
Software e macchine virtuali
Il software virtualizza il computer• il software mostra ai suoi utenti il computer come una macchina virtuale più
semplice da usare rispetto all’hardware
• macchina virtuale – una macchina che fisicamente non esiste nella realtà, ma di cui si può avere la sensazione dell’esistenza
Ad esempio • usando l’applicazione Solitario abbiamo l’impressione di avere davanti a noi
delle carte, e di poterle muovere
• in realtà, davanti a noi non c’è nessuna carta – ma solo una loro rappresentazione virtuale
16
Categorie di software
Due categorie principali di software • software applicativo – ad esempio, Word – il computer è una macchina
virtuale che può essere utilizzata per la risoluzione di problemi
• software di base – ad esempio, il sistema operativo – il computer è una macchina virtuale più semplice da gestire e programmare – rispetto all’hardware utilizzato
17
Organizzazione a livelli e linguaggio macchina
Nell’organizzazione a livelli, l’hardware è l’unica macchina reale, mentre gli strati software corrispondono a macchine virtuali
• il repertorio di operazioni (chiamate istruzioni) che l’hardware sa eseguire direttamente è chiamato linguaggio macchina del computer
• istruzioni estremamente elementari – che il computer sa eseguire in modo molto efficiente
• le diverse macchine virtuali e i relativi insiemi di operazioni sono via via più astratti
• il significato di ciascuna operazione è sempre più vicino alla logica dell’utente e più lontano dalla logica del computer come dispositivo elettronico
• le “macchine virtuali” sono via via più semplici da usare
• le diverse macchine sono comunque ugualmente espressive
Andiamo a studiare il funzionamento della “macchina computer” reale
18
Macchina di Von Neumann
L’architettura dell’hardware di un computer reale è molto complessa • la macchina di Von Neumann è un modello semplificato ma effettivo dei
computer moderni
• John Von Neumann è stato il progettista (intorno al 1945) del primo computer in cui i programmi potevano essere memorizzati nel computer –anziché codificati mediante cavi e interruttori
19
Architettura della macchina di Von Neumann
20
CPU unità centrale
di elaborazione
bus
interfacciai/o
<memoria
secondaria
interfacciai/o
schermo
interfacciai/o
8mouse
interfacciai/o
7tastiera
macchina di Von Neumann
memoria
centrale
Funzionalità nella macchina di Von Neumann
Il funzionamento del computer viene descritto in termini di poche funzionalità e di poche componenti (macro-unità) funzionali
21
trasferimento
controlloelaborazione memorizzazione
scambio di dati con l’utente
Periferiche e interfacce di ingresso-uscita
Lo scambio di dati con l’utente avviene mediante diversi dispositivi di ingresso e/o uscita (chiamati periferiche) collegati al computer
• ad es., tastiera, mouse, schermo, stampante, modem
• anche le memorie di massa (ad esempio, le unità disco e il lettore di CD-ROM) sono considerati periferiche
Nella macchina di Von Neumann, le periferiche non fanno parte del computer
• ogni periferica viene controllata mediante un’opportuna interfaccia
• un’interfaccia ha il compito di tradurre i segnali interni del computer in un formato comprensibile alla periferica stessa, e viceversa
22
Trasferimento
Il bus è il componente del computer dedicato al trasferimento dei dati e delle informazioni di controllo tra le varie parti del computer
• il bus è un insieme dei collegamenti
• il bus favorisce la modularità e l’espandibilità del computer
23
Unità centrale di elaborazione
L’unità centrale di elaborazione (o processore o CPU) è composta dall’unità di controllo e dall’unità aritmetico-logica
• l’unità centrale di elaborazione controlla l’esecuzione di un programma (memorizzato in memoria centrale sotto forma di una sequenza di istruzioni del linguaggio macchina) eseguendo ordinatamente le istruzioni del programma
L’esecuzione di un programma è basata sull’esecuzione ripetuta, controllata dal processore, di tre passi
Ciclo fetch-decode-execute• fetch – il processore legge dalla memoria la prossima istruzione da eseguire • decode – il processore si prepara ad eseguire la prossima istruzione • execute – il processore esegue l’istruzione, svolgendo un certo numero di
micro-operazioni
24
Controllo
Il coordinamento (controllo) tra le varie parti del computer è svolto dall’unità di controllo
• l’unità di controllo è un altro componente dell’unità centrale di elaborazione
• ogni componente dal computer esegue solo le azioni che gli sono richieste dall’unità di controllo
L’attività di controllo svolta dall’unità di controllo • coordinamento dell’esecuzione temporale delle funzioni che devono essere
svolte sia internamente all’unità di elaborazione che negli altri elementi funzionali
• avviene in modo sincrono rispetto alla scansione temporale imposta dall’orologio di sistema (clock)
25
Elaborazione
Le istruzioni del linguaggio macchina di un computer per la manipolazione dei dati corrispondono ad operazioni elementari
• operazioni aritmetiche
• operazioni relazionali (confronto tra dati)
• operazioni su caratteri e valori di verità
• altre operazioni numeriche
Un computer sa svolgere poche tipologie di operazioni elementari• ma le sa eseguire in modo molto efficiente
• un computer può eseguire centinaia di milioni di istruzioni del linguaggio macchina al secondo
L’elaborazione dei dati viene svolta dall’unità aritmetico-logica (ALU)• l’ALU è un componente dell’unità centrale di elaborazione
26
Struttura di una unità centrale di elaborazione
27
unità di controlloPC
IR PSW
registro
registro
...
registro
ALU
unità centrale di elaborazione
memoria
centrale
o
periferiche
scrivi
leggi
bus
controllo
bus
dati
bus
indirizzi
operazione
esegui
stato
MAR
MDR
Microprocessore
L’unità centrale di elaborazione è solitamente realizzata fisicamente sotto forma di microprocessore
• i microprocessori sono dispositivi elettronici estremamente complessi
28
Caratteristiche dei microprocessori
Principali caratteristiche tecnologiche di un microprocessore • repertorio di istruzioni (linguaggio macchina)
• velocità (misurata come frequenza del clock)
• ampiezza del bus
• co-processore
• cache
• numero di core
• consumo energetico
29
Esempio di repertorio di istruzioni
read x• legge il dato dal registro della periferica di I/O e lo scrive nella cella di
memoria di indirizzo x
write x• scrive nel registro della periferica di I/O il dato contenuto nella cella di
memoria di indirizzo x
loadA x (loadB x)• scrive nel registro A (B) il contenuto della cella di memoria di indirizzo X
sumAB (multAB)• esegue la somma (il prodotto) dei dati nei registri A e B, e scrive il risultato nel
registro A
storeA x• scrive il contenuto del registro A nella cella di memoria di indirizzo x
halt• termina l’esecuzione
…
30
Es.: Programma per la somma di due numeri
31
1 …
2 loadA 11
3 loadB 12
4 sumAB
5 storeA 13
6 …
7
8
9
10
11 35
12 7
13
14
programma
dati
xy
z = x+y
Memorizzazione
Un computer ha la necessità di memorizzare, in modo temporaneo o permanente, dei dati – l’unità responsabile della memorizzazione dei dati è la memoria
• la memoria è organizzata in celle• indirizzo• memorizzazione di un valore
Un’unità di memoria fornisce due sole operazioni • memorizzazione di un valore in una cella (scrittura) • accesso al valore memorizzato in una cella (lettura)
che sono rappresentate da ulteriori istruzioni del linguaggio macchina
La memoria viene usata per memorizzare• le informazioni di interesse • i programmi per l’elaborazione delle informazioni di interesse
32
Memoria centrale
La memoria è il componente del computer in cui vengono immagazzinati e da cui vengono acceduti i dati e i programmi
• la memoria centrale (o principale) è la memoria che può essere acceduta direttamente dal processore
33
Memoria centrale
Una memoria • si compone di celle (o locazioni) di memoria
• ogni cella di memoria è in grado di memorizzare una parola di memoria (ovvero, un sequenza di bit di lunghezza fissata)
• ogni cella è caratterizzata da • un indirizzo (univoco)
• un valore
• fornisce le operazioni di lettura e scrittura
34
Caratteristiche delle memorie centrali
Le caratteristiche principali di una memoria centrale • capacità
• 1Kbyte indica 210 byte = 1024 byte ≈ 103 byte
• 1Mbyte indica 220 byte = 1024 Kbyte = 1 048 576 byte ≈ 106 byte
• 1Gbyte indica 230 byte = 1024 Mbyte ≈ 109 byte
• velocità di accesso
• volatilità • memorie RAM (random access memory)
• memorie ROM (read only memory) e loro varianti
35
Rappresentazione di informazioni
Scopo fondamentale di un computer è consentire l’elaborazione di informazioni
• informazioni rappresentate sotto forma di dati • un dato è un’informazione elementare
• i computer sanno rappresentare ed elaborare direttamente solo dati molto semplici
• numeri interi
• numeri reali (razionali)
• caratteri
• valori di verità (vero/falso)
36
Codifica dei dati
In un computer, i dati (e le istruzioni) sono codificati in forma binaria, ovvero mediante delle sequenze finite di cifre 0 e 1
• il bit (cifra binaria) la più piccola unità di informazione in un computer• un bit può avere valore 0 oppure 1
• ciascun bit è memorizzato da una cella elementare di memoria • un dispositivo (ad es., elettronico, magnetico o ottico) in cui sono chiaramente
distinguibili due stati
Un bit è un’unità di informazione troppo piccola per essere usata individualmente
• dati codificati sotto forma di sequenze di bit
• problema dell’interpretazione delle sequenze di bit
37
Sequenze di bit e loro interpretazione
Ad esempio, un byte è una sequenza di 8 bit
Le possibili combinazioni degli 8 bit in un byte sono 28 = 256• un byte può essere utilizzato per rappresentare un valore tra 256 diversi
possibili valori • ad esempio, un piccolo numero intero, o un carattere in un alfabeto che contiene al più
256 caratteri, ...
• solitamente sono possibili diverse scelte sull’insieme dei valori possibili • ad esempio, con un byte si può rappresentare un numero naturale compreso
nell’intervallo da 0 a 255, oppure un numero intero relativo nell’intervallo da -128 a 127
• necessario un meccanismo per poter interpretare correttamente ciascun byte
• nella programmazione, vengono usati dei meccanismi di tipizzazione, immersi nei programmi
38
Tipi di dato
Alcuni tipi di dato in un computer • numeri naturali (ovvero, senza segno) a 8 bit
• per valori compresi tra 0 e +255
• interi relativi (ovvero, con segno) a 8 bit • per valori compresi tra -128 e +127
• interi relativi (ovvero, con segno) a 32 bit • per valori compresi tra -2147483648 e +2147483647
• caratteri dell’alfabeto ASCII (8 bit)
• caratteri dell’alfabeto Unicode (16 bit)
• numeri reali (razionali) in virgola mobile a 64 bit • mantissa con 18 cifre significative ed esponente tra -324 e +308
• numeri reali (razionali) in virgola mobile a 32 bit • 9 cifre significative ed esponente tra -45 e +38
• valori logici (vero o falso)
39
Struttura di una memoria centrale
40
1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0
1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
128 celle di memoria
di 16 bit ciascuna
indirizzo
della cella
00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
01111000
01111001
01111010
01111011
01111100
01111101
01111110
01111111
........
........
........
........
parola letta
o da scrivere
bus dati
bus
indirizzi
cella selezionata
bus di
controllo
0 1 1 1 1 0 1 0
leggi/scrivi
Potenze di 2 e potenze di 10
• 1K (kilo) = 210 = 1024 ≈ 103
• 1M (mega) = 220 = 1 048 576 ≈ 106
• 1G (giga) = 230 ≈ 109
• 1T (tera) = 240 ≈ 1012
• 1P (peta) = 250 ≈ 1015
• 1m (milli) = 10-3
• 1μ (micro) = 10-6
• 1n (nano) = 10-9
41
Memorie secondarie
Le memorie secondarie hanno le seguenti caratteristiche specifiche, che le differenziano dalle memorie centrali
• non volatilità
• grande capacità
• bassi costi
• bassa velocità di accesso
42
Memorie secondarie
I dati di una memoria secondaria, per essere acceduti dal processore, devono comunque transitare nella memoria centrale
• la memoria secondaria memorizza tutti i programmi e i dati del computer
• la memoria centrale memorizza i programmi in esecuzione e i dati necessari per la loro esecuzione
43
Velocità a confronto
Alcuni indicatori di prestazioni di computer commerciali attuali • processore: 3GHz
• lavora per micro-operazioni da 0,33 ns (1 ns = 10-9 s)
• 2 core
• bus a 64 bit
• memoria RAM: 1333MHz • tempo di accesso di 0,75 ns
• disco rigido: 7200 rpm = 120 rps• tempo medio di accesso 4 ms per un intero settore di 4kB
(1 ms = 10-3 s)
• ma circa 1 μs per byte (1 μs = 10-6 s)
44
Il sistema operativo
Il sistema operativo è il principale componente del software di base, che ha le seguenti funzionalità
• è responsabile della gestione delle risorse del computer, e in particolare di come le risorse vengono allocate alle applicazioni e dell’ottimizzazione del loro uso
• fornisce all’utente un’interfaccia per usare e gestire il computer in modo semplice
Ad esempio • come fa un utente ad avviare l’esecuzione di un programma?
• che succede quando l’utente avvia l’esecuzione di un programma?
45
Architettura di un sistema operativo
46
gestore
della
memoria
hardware
gestore
delle
periferiche
gestore
dei
file
interprete comandi
nucleo
programmi applicativi
sis
tem
a o
pe
rativo
programmi
di
utilità
Sistema operativo e macchine virtuali
Le diverse componenti di un sistema operativo hanno, tra l’altro, lo scopo di gestire e virtualizzare le diverse risorse del computer, ovvero di renderle più semplici da utilizzare da parte dei suoi utenti
• utenti • utenti finali – interagiscono attraverso l’interprete comandi
• programmi in esecuzione
• risorse • processori, memoria principale, periferiche, memorie secondarie, interfaccia utente
47
Nucleo
Il nucleo del sistema operativo (o kernel) è il componente del sistema operativo più complesso, che in particolare è responsabile della gestione della risorsa unità di elaborazione (processore) e dei processi(un processo è un programma in esecuzione)
• un solo processore reale (o comunque pochi)
• tanti processori virtuali, uno per ciascun processo • ciascun processo in esecuzione ha l’impressione di essere l’unico processo eseguito dal
computer
• il nucleo ripartisce la capacità di elaborazione dell’unico processore reale (o dei pochi) tra i tanti processori virtuali
Il nucleo fornisce anche un insieme di servizi di base di supporto agli altri componenti del sistema operativo
48
Gestore della memoria
Il gestore della memoria è responsabile dell’allocazione dinamica della memoria centrale ai programmi in esecuzione
• per ciascun processo viene allocata un’area di memoria virtuale sufficiente per la sua esecuzione
• gestione della corrispondenza tra le memorie virtuali e l’unica memoria reale
• la dimensione della memoria virtuale può essere maggiore di quella reale
49
Gestore delle periferiche
Il gestore delle periferiche adatta la modalità d’uso delle singole periferiche (che possono essere estremamente diverse) a quello di poche tipologie di periferiche virtuali
• ad esempio, un programma può usare una stampante senza conoscere i dettagli precisi di funzionamento della stampante fisicamente disponibile
• un driver è un adattatore di dati dal formato virtuale (generico) usato dai programmi applicativi a quello reale della periferica effettivamente in uso
50
Gestore dei file
Il gestore dei file (o file system) è dedicato alla gestione della memoria secondaria (dischi)
• i dischi sono fisicamente organizzati in superfici, cilindri e settori
• il gestore dei file consente l’uso della memoria secondaria mediante una organizzazione logica in volumi, cartelle e file
• un file è una sequenza di dati di dimensioni variabili, con accesso sequenziale oppure casuale
• una cartella (o direttorio) è un contenitore di un insieme di file e cartelle
• un volume è un contenitore di file e cartelle, solitamente corrispondente ad una unità a disco
• gestione delle corrispondenze tra file e settori
Il gestore dei file permette inoltre di mostrare anche le periferiche come dei file, da cui è possibile leggere e/o su cui è possibile scrivere sequenze di dati
51
Interprete comandi
L’interprete comandi è l’interfaccia utente del sistema operativo • definisce le operazioni che possono essere utilizzate direttamente dall’utente
finale, chiamate comandi
• esempi di comandi sono • esegui un’applicazione
• apri un documento (eseguendo l’applicazione responsabile della manipolazione di quel tipo di documento)
L’interprete comandi può essere basato su una • interfaccia a caratteri
• interfaccia grafica
52
Programmi di utilità
Il sistema operativo è corredato da un insieme di programmi di utilità, per la configurazione, l’ottimizzazione e la gestione ordinaria del sistema
• gestione degli utenti
• gestione delle periferiche
• gestione delle applicazioni
• altri accessori
53
Programmi
Un programma è una descrizione• di un insieme di operazioni che possono essere eseguite da un computer
• dei dati necessari all’esecuzione delle operazioni
La programmazione è l’attività di scrittura dei programmi • svolta dai programmatori
Per evitare ambiguità, chiamiamo • applicazione, un programma dal punto di vista dell’utente
• programma, la descrizione di un’applicazione
54
Linguaggi di programmazione
Un programma è la descrizione di un’applicazione• in pratica, un programma è un insieme di frasi
• le frasi descrivono le operazioni e le tipologie di dati di interesse
• le frasi sono scritte in un qualche linguaggio specializzato per la definizione di programmi
Un linguaggio di programmazione è un linguaggio specializzato per la definizione di programmi
• ad esempio, Pascal, C, C#, Java, Perl, Visual Basic, Prolog, ML, Python, Ruby, …
• in questo corso faremo riferimento a Java
55
Compilatori
Un computer è in grado di eseguire solo le istruzioni elementari del proprio linguaggio macchina
• in teoria i programmi vanno scritti in linguaggio macchina
• in pratica, i programmi vengono scritti usando linguaggi di programmazione di alto livello
• i linguaggi di programmazione di alto livello sono più semplici da usare del linguaggio macchina
• i compilatori sono applicazioni per tradurre programmi scritti in un linguaggio di programmazione in programmi equivalenti scritti nel linguaggio macchina di un computer
56