11
Introduzione alla programmazione
Introduzione alla programmazione
222 2
Introduzione alla Programmazione Introduzione alla Programmazione
• Docente: Alessia Ceccato Docente: Alessia Ceccato
• Mail: alessiaceccato@interfree.it Mail: alessiaceccato@interfree.it
• Ricevimento: a fine lezione o su Ricevimento: a fine lezione o su appuntamento
appuntamento
333 3
Introduzione alla Programmazione Introduzione alla Programmazione
• Orario lezioni: Orario lezioni:
• Martedì dalle 14:00 alle 17:00 Martedì dalle 14:00 alle 17:00
presso il laboratorio di informatica P140 presso il laboratorio di informatica P140
del Paolotti
del Paolotti
444 4
Programma del corso:
Programma del corso:
• La struttura del calcolatore La struttura del calcolatore
L’architettura a BUS L’architettura a BUS
La CPU La CPU
La gerarchia di memorie La gerarchia di memorie
La memoria centrale La memoria centrale
La memoria secondaria La memoria secondaria
I dispositivi di I/O I dispositivi di I/O
• Circuiti logici e sistema binario Circuiti logici e sistema binario
• La rappresentazione dell'informazione La rappresentazione dell'informazione
555 5
Programma del corso:
Programma del corso:
• Il linguaggio macchina e assembler Il linguaggio macchina e assembler
• Esempi di programmi in assembler Esempi di programmi in assembler
• Il sistema operativo Il sistema operativo
• Un esempio di SO: Linux Un esempio di SO: Linux
• Le reti Le reti
• Cenni sul linguaggio di programmazione C Cenni sul linguaggio di programmazione C
• Esempi di programmi in C Esempi di programmi in C
66
Materiale del corso:
Materiale del corso:
• Fondamenti di Informatica Fondamenti di Informatica (lib progetto- Filé,Colussi,Rossi) (lib progetto- Filé,Colussi,Rossi)
• Dispense del corso scaricabili dalla pagina: Dispense del corso scaricabili dalla pagina:
http://www.math.unipd.it/~aceccato
http://www.math.unipd.it/~aceccato
77
Modalità di esame
• La prova d'esame verrà svolta in La prova d'esame verrà svolta in laboratorio
laboratorio
• Divisa in due parti: Divisa in due parti:
– Una parte teorica con domande a risposta Una parte teorica con domande a risposta aperta
aperta
– Una parte pratica di creazione di un Una parte pratica di creazione di un
semplice programma in assembler e in C
semplice programma in assembler e in C
88
Modalità di esame
Valutazione:
Valutazione:
• Per ottenere l'idoneità entrambe le parti Per ottenere l'idoneità entrambe le parti dell'elaborato dovranno essere
dell'elaborato dovranno essere sufficienti!!!
sufficienti!!!
99
Il laboratorio informatico è diviso in più aule; una tabella che mostra l'occupazione di ogni aula viene aggiornata periodicamente ed affissa sulla porta di ciascuna aula.
Infatti l'accesso agli studenti è libero durante l'orario di apertura a condizione che l'aula non sia occupata per una lezione.
Per accedere ai PC delle aule bisogna essere in possesso di un account valido, cioè di un nome utente (login) e password.
Dov'è il laboratorio
Al terzo piamo del Paolotti.
1010
Come richiedere l'account
Ogni studente iscritto ad uno dei corsi di laurea in informatica o in matematica può richiede un account per accedere al laboratorio informatico. Ci sono due modi per fare questa richiesta:
1) utilizzando un PC dedicato presente in laboratorio (seguire le indicazioni presenti nell'atrio del laboratorio)
2) accedendo con un qualsiasi computer collegato ad internet al sito http://iscrizioni.math.unipd.it In entrambi i casi viene richiesto di
compilare un modulo in cui specificare cognome, nome
matricola e corso di studi; seguire attentamente le istruzioni riportate prima di iniziare la compilazione.
Nota: gli studenti Erasmus o in trasferimento, sprovvisti del numero di matricola, devono scegliere come corso di studi Erasmus oppure In Trasferimento e lasciare vuoto il campo matricola.
Dopo due o tre giorni dall'inoltro della richiesta di account, lo studente
deve passare presso l'ufficio del laboratorio informatico provvisto di
LIBRETTO DI ISCRIZIONE (NON BASTA IL SOLO BADGE!) per
ritirate i dati del proprio account.
1111
Cose da sapere per usare i PC
Ogni PC ha installati i sistemi operativi Linux e Windows 2000. La scelta di quale sistema usare viene proposta all'avvio del computer (attenzione: ci sono pochi secondi per fare la scelta!).
IMPORTANTE: per riavviare un computer NON USARE IL PULSANTE DI SPEGNIMENTO ma usare la procedura propria di ogni sistema
operativo (es. su Linux: cliccare il menù applicazioni e
scegliere shutdown). L'uso dei PC, oltre ad essere consentito solo quando non ci sono lezioni in corso, è anche vincolato
dal fatto che ogni studente ha a disposizione una quota, cioè:
– uno spazio disco limitato
– un tempo settimanale fissato per utilizzare i PC – un numero limitato di stampe settimanali
Deroghe a tali limitazioni possono essere richieste solo in casi speciali
(es. studenti in tesi e previa richiesta del relatore).
12121313
•
Informatica Informatica fusione delle parole informazione informazione e automatica
automatica l’insieme delle discipline che studiano gli strumenti per l’elaborazione automatica dell’informazione e i metodi per un loro uso corretto ed efficace
•
L’informatica è la scienza della rappresentazione e L’informatica è la scienza della rappresentazione e dell’elaborazione dell’informazione
dell’elaborazione dell’informazione
L’accento sull’ “informazione” fornisce una spiegazione del perché l’informatica sia ormai parte integrante di molte attività umane: laddove deve essere gestita dell’informazione, l’informatica è un valido strumento di supporto
Il termine “scienza” sottolinea il fatto che, nell’informatica, l’elaborazione dell’informazione avviene in maniera sistematica e rigorosa, e pertanto può essere automatizzata
Che cos’è l’informatica
Che cos’è l’informatica − − 1 1
13131414
•
L’informatica non è la scienza dei calcolatori elettronici: il calcolatore è lo strumento che la rende “operativa”
•
L’ elaboratore elaboratore (computer, calcolatore) è un’apparecchiatura digitale
digitale, elettronica elettronica ed automatica automatica capace di effettuare trasformazioni sui dati:
Digitale: i dati sono rappresentati mediante un alfabeto finito, Digitale:
costituito da cifre, digit, che ne permette il trattamento digit mediante regole matematiche
Elettronica: realizzazione tramite tecnologie di tipo elettronicoElettronica:
Automatica: capacità di eseguire una successione di Automatica:
operazioni senza interventi esterni
•
“La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.” (Isaac Asimov)
Che cos’è l’informatica
Che cos’è l’informatica − − 2 2
14141515
•
L’informatica è lo studio sistematico degli algoritmi che L’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione (ACM, Association analisi, progetto, efficienza, realizzazione (ACM, Association
for Computing Machinery) for Computing Machinery)
•
Nota Nota
È possibile svolgere concettualmente un’attività di tipo informatico senza l’ausilio del calcolatore, per esempio nel progettare ed applicare regole precise per svolgere operazioni aritmetiche con carta e penna; l’elaboratore, tuttavia, è uno strumento di calcolo potente, che permette la gestione di quantità di informazione altrimenti intrattabili
Ancora sull’informatica…
Ancora sull’informatica…
15151616
•
Tramite un elaboratore si possono risolvere problemi di varia natura: emissione di certificati anagrafici, gestione dei c/c di un istituto di credito, prenotazioni aeree…
•
Il problema deve essere formulato in modo opportuno, perché sia possibile utilizzare un elaboratore per la sua soluzione
•
Per analisi e programmazione analisi e programmazione si intende l’insieme delle attività preliminari atte a risolvere problemi utilizzando un elaboratore, dalla formulazione del problema fino alla predisposizione dell’elaboratore
Scopo dell’analisi Scopo dell’analisi definire un algoritmo algoritmo
Scopo della programmazione Scopo della programmazione definire un programma programma
Analisi e programmazione
Analisi e programmazione − − 1 1
16161717
Analisi e programmazione
Analisi e programmazione − − 2 2
• Algoritmo: Algoritmo: elenco finito di istruzioni, che specificano le operazioni eseguendo le quali si risolve una classe di problemi
Un particolare problema della classe viene risolto tramite l’apposito algoritmo sui dati che lo caratterizzano
Un algoritmo non può essere eseguito direttamente Un algoritmo non può essere eseguito direttamente dall’elaboratore
dall’elaboratore
• Programma: Programma: ricetta che traduce l’algoritmo ed è direttamente comprensibile, pertanto eseguibile, da parte di un elaboratore
• Linguaggio di programmazione: Linguaggio di programmazione: linguaggio rigoroso che
permette la formalizzazione di un algoritmo in un
programma
17171818
Risultati Risultati Problema Problema
ANALISI ANALISI
ELABORAZIONE ELABORAZIONE DatiDati PROGRAMMAZIONE
PROGRAMMAZIONE Algoritmo
Algoritmo
Programma Programma
Le fasi del procedimento di Le fasi del procedimento di
analisi e programmazione
analisi e programmazione
18181919
Gli algoritmi
Gli algoritmi
19192020
•
Algoritmo Algoritmo deriva dal nome del matematico uzbeco Mohammed ibn
Mohammed ibn − − Musa Al Musa Al − − Khuwarizmi Khuwarizmi , vissuto nel IX secolo d.C. (dalla cui opera è nata l’algebra moderna), e significa procedimento di calcolo
procedimento di calcolo
•
Un algoritmo è una successione di istruzioni istruzioni o passi passi che definiscono le operazioni da eseguire sui dati per ottenere i risultati; un algoritmo fornisce la soluzione ad una classe di classe di problemi
problemi
•
Lo schema di esecuzione schema di esecuzione di un algoritmo specifica che i passi devono essere eseguiti in sequenza, salvo diversa ed esplicita indicazione
Definizione di algoritmo
Definizione di algoritmo − − 1 1
2020
Cominciamo con l'analisi della struttura di un Cominciamo con l'analisi della struttura di un
calcolatore...
calcolatore...
2222
• Il sogno di costruire macchine capaci di effettuare calcoli automatici affonda le radici nel pensiero filosofico del ‘600:
Wilhelm Schickard introdusse la prima macchina moltiplicatrice dotata di accumulatori cilindrici
Cenni storici
Cenni storici − − 1 1
• La presenza “invasiva” dell’informatica nella vita di tutti i giorni è un fenomeno relativamente recente; non recente è invece la necessità di avere a disposizione strumenti e metodi per contare rapidamente, elaborare dati, “calcolare”
Le prime testimonianze di strumenti per contare risalgono a 30.000 anni fa
I primi esempi di algoritmi procedure di calcolo “automatico” sono stati scoperti in Mesopotamia su tavolette babilonesi risalenti al 1800−1600 a.C.
Macchina moltiplicatrice (1624) Macchina moltiplicatrice (1624)
Wilhelm Schickard (1592-1635)Wilhelm Schickard (1592-1635)
2323
• Pascal e Leibnitz non solo affrontarono il problema, già studiato da Cartesio, di automatizzare il ragionamento logico−matematico, ma si cimentarono anche nella realizzazione di semplici macchine per calcolare (capaci di effettuare somme e sottrazioni)
Cenni storici
Cenni storici − − 2 2
Blaise Pascal (1623-1662) Blaise Pascal (1623-1662) Gottfried Leibnitz (1646-1716) Gottfried Leibnitz (1646-1716)Macchina computazionale (G. Leibnitz) Macchina computazionale (G. Leibnitz) Macchina addizionatrice
Macchina addizionatrice −− la Pascalina (B. Pascal) la Pascalina (B. Pascal)
2424
• La macchina alle differenzemacchina alle differenze, concepita da Babbage nel 1833, rappresenta il primo esempio di macchina programmabile di utilità generale
• In seguito, lo stesso Babbage progetta la macchina analitica
macchina analitica (mai realizzata, troppo complessa e critica la sua costruzione per le tecnologie meccaniche dell’epoca)
La prima programmatrice nella storia dell’informatica è Ada Augusta Byron, contessa di Lovelace
Cenni storici
Cenni storici − − 3 3
Charles Babbage (1791-1871) Charles Babbage (1791-1871)Macchina alle differenze: modello Macchina alle differenze: modello ricostruito presso il Museo della Scienza ricostruito presso il Museo della Scienza di Londra seguendo il progetto del 1849 di Londra seguendo il progetto del 1849
2525
• Fu Herman Hollerith, nel 1890, a sviluppare la macchina a schede perforatemacchina a schede perforate, per compiere le statistiche del censimento decennale degli Stati Uniti
I dati venivano immessi su schede di cartone opportunamente perforate, le stesse schede che sono state usate fino a due decenni or sono
Le schede venivano successivamente
“contate” da una sorta di pantografo che permetteva diversi tipi di elaborazioni (totali, medie, statistiche, etc.)
Si impiegarono due anni e mezzo ad analizzare i dati (contro i sette anni del censimento del 1880), nonostante l’incremento di popolazione da 50 a 63 milioni
Cenni storici
Cenni storici − − 4 4
Herman Hollerith (1860-1929) Herman Hollerith (1860-1929)Census Tabulator (1890) Census Tabulator (1890)
2626
• Successivamente la macchina a schede perforate venne utilizzata con successo per i censimenti in Austria, Norvegia e Russia, tanto che Hollerith decise di fondare una società: la Computing Computing Tabulating Recording Company
Tabulating Recording Company che, nel 1923, divenne l’International Business International Business Machine
Machine, o IBMIBM
• Nel 1932, il tedesco Konrad Zuse realizza una macchina elettromeccanica in grado di eseguire calcoli con controllo programmato, ed introduce il sistema di numerazione binario (la cui algebra era stata definita da Leibnitz e da Boole)
Cenni storici
Cenni storici − − 5 5
Konrad Zuse (1910-1995) Konrad Zuse (1910-1995)Il calcolatore Z1 (1939) Il calcolatore Z1 (1939)
2727
• Durante la seconda guerra mondiale, fioriscono i progetti di elaboratori da utilizzarsi per scopi bellici
La macchina Enigma La macchina Enigma
Cenni storici
Cenni storici − − 6 6
Alan Turing (1912-1954) Alan Turing (1912-1954) Enigma, realizzata dai tedeschi (A. Enigma Scherbius) per codificare le comunicazioni militari
Red Purple, di costruzione giapponeseRed Purple
Computer Colossus, costruito dagli inglesi Computer Colossus per la decifrazione dei messaggi tedeschi, alla cui progettazione e realizzazione collaborò Alan TuringAlan Turing, permise la vittoria anglo−americana sull’Atlantico
2828
• Con l’invenzione del tubo a vuototubo a vuoto (1904), del transistortransistor (1947) e, infine, dei circuiti integraticircuiti integrati (1969), l’evoluzione dei computer divenne inarrestabile
• Finora la potenza di calcolo degli elaboratori si è decuplicata ogni 5−6 anni (…ma non può durare, almeno con le tecnologie in uso)
Cenni storici
Cenni storici − − 7 7
2929
• La costruzione dei primi calcolatori risale all’inizio degli anni ‘40, grazie alla tecnologia elettronica; i primi esemplari venivano programmati mediante connessioni elettriche e commutatori (ENIACENIAC, Mark I Mark I)
• Il nome di Von Neumann è legato invece ai primi calcolatori a programma memorizzato realizzati alla fine degli anni ‘40 (EDSAC, EDSAC
Whirlwind
Whirlwind, IASIAS, UNIVACUNIVAC)
Per la prima volta, vige il principio di unitarietà di rappresentazione di unitarietà di rappresentazione di dati e istruzioni
dati e istruzioni, che vengono codificati, all’interno dell’elaboratore, in maniera indistinguibile
• La diffusione dei calcolatori a livello mondiale è avvenuta nei decenni ‘60 e ‘70
Cenni storici
Cenni storici − − 8 8
John Von Neumann (1903-1957) John Von Neumann (1903-1957)3030
EDSAC (1949) EDSAC (1949) ENIAC (1946)
ENIAC (1946) Mark I (1948)Mark I (1948)
UNIVAC (1952) UNIVAC (1952) Whirlwind (1949)
Whirlwind (1949) IAS (1952)IAS (1952)
Cenni storici
Cenni storici − − 9 9
3131
• Tuttavia, l’esplosione dell’informatica come fenomeno di massa è datata 1981, anno in cui l’IBM introdusse un tipo particolare di elaboratore: il Personal ComputerPersonal Computer (PC)
• La particolarità dei PC consisteva nell’essere “assemblati” con componenti facilmente reperibili sul mercato (e quindi a basso costo)
Possibilità per qualsiasi casa produttrice di costruire “cloni”
• Attualmente i PC, o meglio il loro componente fondamentale il microprocessore
microprocessore è utilizzato in tutti i settori applicativi (non solo per elaborare dati):
Telefoni cellulari, ricevitori satellitari digitali, GPS
Bancomat e carte di credito
Lavatrici e forni a micro−onde
Computer di bordo e ABS
...
Cenni storici
Cenni storici − − 10 10
3232
• L’esigenza di realizzare sistemi di elaborazione dotati di più processori operanti in parallelo è stata sentita fin dalla preistoria dell’informatica
In una relazione dello scienziato, generale e uomo politico italiano Luigi Menabrea, datata 1842, sulla macchina analitica di Babbage, si fa riferimento alla possibilità di usare più macchine dello stesso tipo in parallelo, per accelerare calcoli lunghi e ripetitivi
• Solo la riduzione dei costi dell’hardware ha consentito, verso la fine degli anni ‘60, l’effettiva costruzione dei primi supercalcolatori, come le macchine CDC6600CDC6600 e IlliacIlliac e, successivamente, il CrayCray e le macchine vettoriali
• A partire dagli anni ‘90, gli ulteriori sviluppi della microelettronica hanno permesso la realizzazione di calcolatori a parallelismo massiccio, caratterizzati dall’interconnessione di decine di migliaia di unità di elaborazione elementari: le reti neuralireti neurali, capaci di
“simulare” il comportamento del cervello umano, sulla base degli studi di McCulloch e Pitts (1943)
Cenni storici
Cenni storici − − 11 11
3333
CDC 6600 (1963) CDC 6600 (1963) Illiac (1955)
Illiac (1955)
PC IBM (1981) PC IBM (1981)
Cray 1 (1976)
Cray 1 (1976) Cray XE6 (2010)Cray XE6 (2010)
Portatile e Palmare (oggi) Portatile e Palmare (oggi)
Cenni storici
Cenni storici − − 12 12
33333333
• “Penso che ci sia mercato nel mondo per non più di cinque computer.” (Thomas Watson, Presidente di IBM, 1943)
• “Ho girato in lungo e in largo questo paese e ho parlato con le migliori menti e posso assicurarvi che questa moda dell’elaborazione automatica è un capriccio che non vedrà la fine dell’anno.” (Editor di libri scientifici di Prentice Hall, 1947)
• “Una unità di calcolo sull’ENIAC è dotata di 18.000 tubi elettronici a vuoto e pesa 30 tonnellate, ma è possibile che in futuro i computer abbiano soltanto 1000 tubi e pesino soltanto una tonnellata e mezzo.” (Popular Mechanics, 1949)
• “Abbiamo un computer qui a Cambridge, ce n’è uno a Manchester e uno al laboratorio nazionale di fisica. Immagino che sarebbe giusto averne uno anche in Scozia, ma non di più.” (Douglas Hartree, fisico inglese, 1951)
• “Ma... a che serve?” (Un ingegnere della Advanced Computing Systems, Divisione dell’IBM, commentando il microchip, 1965).
• Nel 1976, il New York Times pubblicò un libro dal titolo New York Times La scienza nel ventesimo secolo,La scienza nel ventesimo secolo nel quale il calcolatore veniva menzionato una sola volta e indirettamente, in relazione al calcolo delle orbite dei pianeti
• “Non c’è ragione perché qualcuno possa volere un computer a casa sua.” (Ken Olson, fondatore di Digital, 1977)
• “640 Kbytes should be enough for anybody.” (Bill Gates, 1981)
Frasi celebri ed altro…
Frasi celebri ed altro…
34343434
•
La capacità dell’elaboratore di eseguire successioni di operazioni in modo automatico è determinata dalla presenza di un dispositivo di memoria memoria
Nella memoria sono registrati i datidati e...
...le operazioni da eseguire su di essi (nell’ordine secondo cui devono essere eseguite): il programmaprogramma, la “ricetta” usata dall’elaboratore per svolgere il proprio compito
•
Il programma viene interpretato dall’unità di controllo unità di controllo
Modello di Von Neumann Modello di Von Neumann
L’architettura di Von Neumann
L’architettura di Von Neumann
35353535
•
Programma: Programma: sequenza di operazioni atte a predisporre l’elaboratore alla soluzione di una determinata classe di problemi
Il programma è la descrizione di un algoritmo in una forma algoritmo comprensibile all’elaboratore
•
Algoritmo: Algoritmo: sequenza finita di istruzioni attraverso le quali un operatore umano è capace di risolvere ogni problema di una data classe; non è direttamente eseguibile dall’elaboratore
•
L’elaboratore è una macchina universale macchina universale: cambiando il programma residente in memoria, è in grado di risolvere problemi di natura diversa (una classe di problemi per ogni programma)
La macchina universale
La macchina universale
36363636
La struttura del calcolatore La struttura del calcolatore
IBM S/360 Mod 40 (1964) IBM S/360 Mod 40 (1964) 1.6 MHz 32KB
1.6 MHz 32KB−−256KB256KB 225.000$
225.000$
IBM S/360 Mod 50 (1964) IBM S/360 Mod 50 (1964) 2.0 MHz 128KB
2.0 MHz 128KB−256KB−256KB 550.000$
550.000$
IBM S/360 Mod 65 (1964) IBM S/360 Mod 65 (1964)
5.0 MHz 256KB
5.0 MHz 256KB−1MB−1MB 1.200.000$
1.200.000$
37373737
• Si possono considerare diversi livelli di astrazione:
Circuiti elettronici (hardware)
Architettura e linguaggio macchina
Sistema operativo (software di sistema)
Linguaggi di programmazione
Programmi applicativi
Il calcolatore è basato su circuiti elettronici digitali, ovvero modellabili con l’algebra di Boole; i circuiti elettronici implementano le funzioni logiche AND, OR, NOT, permettono di memorizzare il valore di variabili booleane, di effettuare calcoli, etc.
Silicon Graphics Silicon Graphics
La struttura del calcolatore
La struttura del calcolatore
38383838
• Tutti i calcolatori attuali si rifanno all’architettura di Von Neumann, costituita dalle quattro componenti:
CPU (Central Processing Unit)CPU (Central Processing Unit)
Memoria centraleMemoria centrale
Bus di sistemaBus di sistema
PeriferichePeriferiche
BUS di sistema BUS di sistema
CPUCPU
tastiera
tastiera mousemouse memoria dimemoria di massa
massa monitormonitor Memoria Memoria
centrale centrale
Periferiche
La macchina di Von Neumann
La macchina di Von Neumann − − 1 1
39393939
La macchina di Von Neumann
La macchina di Von Neumann − − 2 2
• Carratteristiche del modello di Von Neumann Carratteristiche del modello di Von Neumann
Proceduralità: 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à: 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 BUSarchitettura a BUS
4040
L'architettura di Von Neumann
CPU RAM Memoria
secondaria I/O
BUS
41414141
• L’architettura più consolidata per il calcolatore prevede quindi unità funzionali fra loro collegate attraverso un unico canale di comunicazione, il busbus
• Il bus è fisicamente realizzato mediante un insieme di connettori elettrici
Memoria principale
CPU I/O I/O I/O
BUS
Indirizzi Dati
Controllo
Dispositivi di Input/Output
Architettura a BUS
Architettura a BUS
4242
L'architettura di Von Neumann
CPU RAM Memoria
secondaria I/O
BUS
43434242
l’ orologio del sistema orologio del sistema che fornisce al computer un battito regolare
•
La CPU lavora a N GHz: segue un ritmo di N miliardi di impulsi al secondo (es., una CPU con un clock a 3 GHz è temporizzata da tre miliardi di impulsi al secondo)
Intel Pentium Intel Pentium
• La Central Processing Unit Central Processing Unit è l’unità centrale di elaborazione: esegue le istruzioni dei programmi e ne regola il flusso, esegue i calcoli
• La CPU è un dispositivo sincrono sincrono , cioè può cambiare stato solo quando riceve un impulso di clock clock ,
La CPU
La CPU − − 1 1
44444343
• 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 e di elaborare simultaneamente
Attualmente, i processori sono in grado di elaborare dati rappresentati con 64 bit
La CPU
La CPU − − 2 2
45454444
•
La CPU è costituita da tre elementi fondamentali:
Unità AritmeticoUnità Aritmetico−Logica (ALU)−Logica (ALU)
RegistriRegistri
Unità di Controllo (CU)Unità di Controllo (CU)
EU
Execution Unit
}
ALUALU CUCU
PCPC
IRIR registri
registri
Contatore di programma (Program CounterProgram Counter) <P>
Registro Istruzione (Instruction Register) <IP>Instruction Register
BUSBUS
BIU
Bus Interface Unit
La CPU
La CPU − − 3 3
46464545
•
A livello “macroscopico”, ad ogni impulso di 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
la corrispondente tabella di verità avrebbe un numero enorme di righe (miliardi di miliardi)
La CPU
La CPU − − 4 4
47474646
•
Lo stato della CPU è costituito da informazioni (memorizzate negli opportuni registri) su:
dati da elaborare (contenuti nei registri dati registri dati )
istruzione da eseguire (nel registro istruzioni registro istruzioni )
indirizzo in memoria della prossima istruzione da eseguire (nel program counter program counter )
eventuali anomalie o eventi verificatisi durante l’elaborazione (nei registri flag registri flag )
La CPU
La CPU − − 5 5
48484747
•
Set di istruzioni di base:
somma (da cui sottrazione)
scorrimento (shift)
operazioni logiche
operazioni di accesso alla memoria
trasferimento di un dato da una locazione di memoria ad un’altra
trasferimento da memoria a un registro della CPU
trasferimento da un registro della CPU a memoria
operazioni di confronto
• Le operazioni (eccetto quelle di accesso alla memoria) sono eseguite all’interno della ALU e “coordinate” dall’unità di controllo
}
(da cui moltiplicazione e divisione)La CPU
La CPU − − 6 6
49494848
• Il tipo di operazione selezionata, in un dato istante, dipende dallo stato di alcune linee di controllo provenienti dalla CU
• Le operazioni logiche (es. AND) vengono eseguite bit a bit fra i due operandi
• Esiste una unità specializzata per le operazioni in virgola mobile (FPUFPU)
• L’ALUALU (ArithmeticArithmetic−−Logic Unit) è un circuito Logic Unit in grado di eseguire operazioni aritmetiche e logiche su 2 operandi, rappresentati su
n
bit (es. 32/64 bit); oltre al risultato dell’operazione può produrre informazioni ulteriori su linee specifiche (il risultato è zero, si è verificato un overflow, etc.)
L’Unità Aritmetico
L’Unità Aritmetico − − Logica Logica
ALU Result
Z ero O verflo w a
b
ALU operation
C arryO ut
50504949
• I registri sono dispositivi di memorizzazione che consentono un accesso molto veloce ai dati che contengono; hanno dimensioni prefissate (es. 32/64 bit)
• Alcuni registri hanno funzioni specifiche (es. contatore di programma)
• Nella maggior parte delle architetture, le operazioni della ALU si possono effettuare solo fra dati presenti nei registri ed anche il risultato viene momentaneamente memorizzato in un registro
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 GS
0 31
GPR 0 EAX
GPR 3 EBX
GPR 1 ECX
GPR 2 EDX
GPR 6 ESI
GPR 7 EDI
GPR 5 EBP
GPR 4 ESP
Name Use
Registri del Pentium Registri del Pentium
I registri
I registri
51515050
• Esegue le istruzioni prelevandole dalla memoria nella fase di accessaccess
• La prossima istruzione da eseguire è individuata dall’indirizzo presente nel registro contatore di programma
registro contatore di programma (PC)
• L’istruzione in esecuzione è memorizzata nel registro istruzioneregistro istruzione (IR)
• L’istruzione è un codice binario che deve essere decodificato dalla CU; decodificato specifica il tipo di operazione, gli eventuali operandi, etc.
• Normalmente le istruzioni sono eseguite in sequenza: dopo l'access, il PC PC viene incrementato
viene incrementato, per fare riferimento all’istruzione successiva CU
IR PC
memoria BUS
Istruzione 1 Istruzione 2 Istruzione 3
02AD77F2
02AD77F2
Segnali di controllo (ALU, Registri, etc.)
L’unità di controllo
L’unità di controllo
52525151
•
Il processore esegue le istruzioni di un programma una una alla volta
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 ciclo di istruzione
istruzione o ciclo macchina ciclo macchina
Estrazione di una istruzione: fase di access fase di access Decodifica di una istruzione: fase di decode fase di decode
Esecuzione dell’istruzione: fase di execute fase di execute
Come si eseguono i programmi
Come si eseguono i programmi − − 1 1
5353
ALU RAM
BUS c
ALU ALU
SCHEMA DELLA CPU
....
C
I1
C
I2
C
Ik
R0
Rn RC
....
IR PC
5454
Ciclo ADE della CPU (10-
9sec)
• Reperimento dell’istruzione (access):
– lettura della cella di RAM il cui indirizzo e’ contenuto nel contatore di programma
– caricamento del registro istruzione con l’istruzione – Incremento del contatore programma
• Decodifica dell’istruzione (decode):
– Trova gli operandi a seconda del codice operativo – Modifica contatore programma se istruzione di salto
• Esecuzione dell’istruzione (execute):
– Attiva i circuiti necessari
5555
ALU RAM
BUS c
ALU ALU
ACCESS
....
C
I1
C
I2
C
Ik
R0
Rn RC
....
IR PC
In IR viene messa l’istruzione da eseguire (contenuta nella RAM all’indirizzo specificato all’inteno del registro PC)
In P Cviene messo l’indirizzo della RAM dove è contenuta la
prossima istruzione da eseguire.
5656
ALU RAM
BUS c
ALU ALU
DECODE
....
C
I1
C
I2
C
Ik
R0
Rn RC
....
IR PC
La ALU riconosce l’istruzione come una delle istruzioni
macchina I1, ..., Ik
possibili
5757
ALU RAM
BUS c
ALU ALU
EXECUTE
....
C
I1
C
I2
C
Ik
R0
Rn RC
....
IR PC
La ALU attiva la corrispondente componente (ad esempio
C
I2che esegue
l’istruzione richiesta)
5858
Esempio di esecuzione di istruzioni
1. Carica nel registro R3 il contenuto della cella di memoria 10
2. Carica nel registro R4 il contenuto della cella di memoria 11
3. Somma di interi sul contenuto dei registri R3 e R4, risultato nel registro R0
4. Trasferisci il contenuto del registro R0 nella cella 12
5. STOP
5959
L'architettura di Von Neumann
CPU RAM Memoria
secondaria I/O
BUS
60605959
•
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: Registri: contengono informazioni necessarie alla elaborazione della singola istruzione
Memoria centrale: Memoria centrale: contiene dati e istruzioni attualmente elaborati dal processore
Memorie di massa: Memorie di massa: contengono dati e programmi che non sono oggetto di elaborazione immediata
Le memorie
Le memorie − − 1 1
61616060
•
I parametri fondamentali che definiscono una memoria sono:
Dimensione della parola Dimensione della parola (locazione di memoria)
Modalità di accessoModalità di accesso (diretto o sequenziale)
Permanenza o volatilità dei datiPermanenza o volatilità dei dati
CapacitàCapacità (numero di locazioni disponibili), espressa in KB, MB, GB, etc.
Tempo di accesso, necessario per accedere ad una locazione di Tempo di accesso 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)
Le memorie
Le memorie − − 2 2
Gerarchia di memorie Gerarchia di memorie
Tbyte Gbyte
6363
•
La memoria centrale o memoria principale, detta anche RAM RAM ( Random Access Memory Random Access Memory , ovvero memoria ad accesso casuale, perché qualsiasi cella può essere letta/scritta in un tempo, mediamente, costante), è la memoria in linea con il processore, che contiene i dati e i programmi che sono attualmente utilizzati/in esecuzione
•
Un programma, quando non è oggetto di elaborazione, è memorizzato su memoria di massa (dischi)
•
Quando deve essere eseguito, viene caricato tutto o in parte, in memoria centrale (memoria virtuale)
La memoria centrale
La memoria centrale − − 1 1
64646363
•
Le caratteristiche fondamentali della memoria centrale sono:
accesso diretto alle informazioni accesso diretto alle informazioni
velocità elevata velocità elevata
volatilità: quando il computer viene spento, i dati e i volatilità programmi presenti in memoria vengono cancellati
•
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 e viene rappresentato con le cifre binarie 0/1
La memoria centrale
La memoria centrale − − 2 2
65656464
•
La memoria principale è un insieme di locazioni o celle
•
L’unità di memorizzazione, la dimensione della singola cella, è il byte (sequenza di 8 bit)
•
Ciascun byte nella memoria è individuato da un indirizzo
indirizzo che lo distingue da tutti gli altri, costituito da un numero variabile da 0 a 2
N− 1, dove N è la dimensione in bit dell’indirizzo (es. numero di bit/fili sul bus indirizzi)
La memoria centrale
La memoria centrale − − 3 3
6666
Unità di misura della RAM (e della memoria in generale)
1 KiloByte (KB) = 2
10byte = 1.024 byte;
circa 1.000 byte
1 MegaByte (MB) = 2
20byte = 1.024 KB;
circa 1.000.000 byte
1 GigaByte (GB) = 2
30byte = 1.024 MB; circa 1.000.000.000 byte
1 TeraByte (TB) = 2
40byte = 1.024
GB; circa 1.000.000.000.000 byte
6767
Indirizzi di memoria Indirizzo Byte
Ind. parola Ind. decimale Indirizzo binario 0 0 000000 00
0 1 000000 01 0 2 000000 10 0 3 000000 11 1 4 000001 00 1 5 000001 01 1 6 000001 10 1 7 000001 11 2 8 000010 00 2 9 000010 01 2 10 000010 10
68686868
•
La connessione tra memoria e processore rappresenta un limite degli elaboratori di Von Neumann
Limite architetturale: il bus permette l’accesso ad una sola informazione per volta (“collo di bottiglia”)
Limite tecnologico: la velocità con cui il processore ottiene le informazioni dalla memoria centrale (velocità di accesso della RAM) è inferiore alla velocità con cui è in grado di elaborarle
•
Soluzioni Soluzioni
Allargamento del bus dati, in modo da poter estrarre più istruzioni e/o dati per volta
Superamento del limite tecnologico mediante introduzione di introduzione di una memoria intermedia tra memoria centrale e processore una memoria intermedia tra memoria centrale e processore che approssimi la velocità del processore
che approssimi la velocità del processore
Processore e RAM
Processore e RAM
69696969
•
Piccola RAM molto veloce, interposta tra CPU e memoria principale, per migliorare le prestazioni del sistema
Quando viene indirizzata una parola, quella parola e alcune di quelle vicine vengono trasferite dalla lenta memoria centrale nella più piccola e veloce memoria cache, in modo che la parola successiva sia accessibile più velocemente (principio di principio di località spazio
località spazio−−temporale del software)temporale del software
La memoria cache
La memoria cache
70707070
•
Una parte della memoria centrale è la ROM ( ROM Read Only Read Only Memory
Memory
), una memoria a sola lettura, destinata a contenere informazioni non variabili
•
Caratteristiche delle memorie ROM:
accesso casuale alle informazioni accesso casuale alle informazioni
velocità elevata (inferiore alle RAM) velocità elevata
•
La ROM viene scritta in modo permanente in fase costruttiva: le celle della ROM possono essere successivamente lette, ma mai riscritte
•
Viene usata per memorizzare programmi di sistema
La memoria ROM
La memoria ROM
71717171
• La ROM contiene il software e i dati necessari ad inizializzare il computer ed a far funzionare i dispositivi periferici
• Il nucleo del software della ROM è costituito dalle routine di avviamento
routine di avviamento che comprendono il caricatore di caricatore di boot boot − − strap ed il strap ROM BIOS ROM BIOS
• Le routine di avviamento realizzano l’inizializzazione del routine di avviamento calcolatore:
Ne effettuano un rapido controllo di affidabilità, per accertare che tutte le componenti hardware siano perfettamente funzionanti
Caricano il sistema operativo dal disco (caricatore di boot − strap)
Il software della ROM
Il software della ROM − − 1 1
72727272
Il software della ROM
Il software della ROM − − 2 2
• Il caricatore di boot caricatore di boot − − strap ha la funzione di leggere un strap programma di lancio dal disco, detto bootstrap bootstrap , e di trasferire ad esso il controllo: il boostrap carica il nucleo del sistema operativo e lo manda in esecuzione
• Il ROM BIOS ROM BIOS Binary Input Binary Input −Output System − Output System è la parte della ROM attiva quando il computer è al lavoro:
il suo ruolo è quello di fornire un insieme di servizi di
base richiesti per il funzionamento delle periferiche
73737373
•
Le operazioni che si effettuano sulla memoria sono operazioni di lettura lettura e scrittura scrittura
•
Entrambe presuppongono l’utilizzo di un indirizzo che identifica univocamente la cella interessata all’operazione
•
L’operazione di scrittura è distruttiva, cioè cancella distruttiva l’informazione precedentemente contenuta nella cella
•
L’operazione di lettura preserva il contenuto della cella indirizzata: all’esterno della memoria centrale viene trasferita copia dell’informazione
Operazioni sulla memoria centrale
Operazioni sulla memoria centrale
7474
L'architettura di Von Neumann
CPU RAM Memoria
secondaria I/O
BUS
75757575
Il disco fisso è costituito da uno o più piatti metallici ricoperti di materiale magnetico su entrambe le facce
Ciascuna superficie è associata ad una o più testine di lettura/scrittura che si muovono radialmente per leggere/
scrivere l’informazione organizzata in tracce concentriche
Dischi magnetici Dischi magnetici
• Esistono diversi dispositivi di memoria secondaria: dischi magnetici (hard disk), dischi ottici (CD, DVD), dispositivi USB, memorie flash
• Memoria non volatile ad alta capacità
La memoria secondaria
La memoria secondaria
76767676
• I dischi magnetici dischi magnetici rappresentano il mezzo fondamentale per la memorizzazione di massa
I dischi ruotano ad una velocità (costante) compresa tra i 60 e i 200 giri al secondo
I dischi magnetici
I dischi magnetici − − 1 1
77777777
•
L’informazione è disposta sul disco in tracce tracce, ovvero in cerchi concentrici
•
La densità dei bit decresce dalle tracce interne alle più esterne per mantenere costante la quantità di dati che passano sotto le testine nell’unità di tempo
• Le tracce sono divise in settori settori
• La capacità di memorizzazione dei dischi cresce in conseguenza allo sviluppo tecnologico
Platter
Track Platters
Sectors Tracks
I dischi magnetici
I dischi magnetici − − 2 2
78787878
•
Il numero di bit contenuti in una traccia è dell’ordine delle centinaia di migliaia (512/4096 byte a settore)
•
Centinaia di settori (512/1024 per traccia)
•
Decine di migliaia di cilindri (tracce concentriche disposte sulle diverse facce dei diversi dischi)
•
Per leggere (o scrivere) sul disco, la testina si deve posizionare sulla traccia che contiene il dato ed attendere che il dato passi sotto di essa
Le operazioni di lettura/scrittura si basano sulla proprietà del campo magnetico di indurre/essere indotto il/dal passaggio di corrente in una bobina
I dischi magnetici
I dischi magnetici − − 3 3
7979
•
La magnetizzazione avviene infatti mediante la testina testina magnetica
magnetica (una piccola bobina racchiusa in un involucro di metallo dotato di una minuscola fessura, il traferro) traferro
•
Facendo passare corrente nella bobina si induce un campo magnetico nel traferro (invertendo la corrente si inverte anche il campo)
•
Quando si fa passare corrente attraverso la testina alternandone la direzione, le aree del disco al di sotto della testina si magnetizzano in una delle due direzioni:
questo procedimento rappresenta la scrittura su disco scrittura su disco
I dischi magnetici
I dischi magnetici − − 4 4
8080
•
I I dati binari che l’unità scrive sul disco sono tradotti in dati binari che l’unità scrive sul disco sono tradotti in un formato costituito da una serie di aree magnetizzate un formato costituito da una serie di aree magnetizzate in un senso o nell'altro
in un senso o nell'altro
•
Lettura da disco: poiché le particelle magnetizzate sono Lettura da disco circondate da un campo magnetico, quando il traferro passa sul disco le variazioni del campo inducono sulla testina una corrente che si manifesta con variazioni di voltaggio alle estremità della bobina; i circuiti di lettura decodificano le variazioni nell’andamento dell’intensità di corrente riconducendole a 0/1
I dischi magnetici
I dischi magnetici − − 5 5
8181
•
Il tempo medio di accesso all’informazione memorizzata su disco è dato da
tseek è il tempo di ricercatempo di ricerca, necessario per posizionare la testina sulla traccia che contiene l’informazione; dipende dall’ampiezza dello spostamento
tlat è il tempo di latenzatempo di latenza, necessario perché l’informazione ricercata passi sotto la testina; dipende dalla velocità di rotazione dei dischi
ttr è il tempo di trasferimentotempo di trasferimento ; dipende dalla velocità di rotazione, dalla densità di registrazione e dalla quantità di informazione da trasferire
T = tseek + tlat + ttr
Accesso al disco
Accesso al disco
82828282
•
Sui dischi ottici dischi ottici si utilizza la tecnologia laser per realizzare le operazioni di lettura/scrittura
•
Densità dei bit uniforme
Un’unica traccia elicoidale o…
…tracce più lontane dal centro del disco sono più lunghe e contengono un maggior numero di settori (fino al 40% in più rispetto alle tracce vicine al centro di rotazione)
I dischi ottici
I dischi ottici − − 1 1
83838383
•
Sui dischi di lettura/scrittura i dati possono essere modificati più e più volte (dischi a cambio di fase dischi a cambio di fase)
•
I dischi WORM, WORM Write Once Write Once − − Read Many Read Many , si possono scrivere una sola volta
•
La tecnologia originale per dischi WORM consiste nell’inserire una pellicola di alluminio tra due piatti di plastica o di vetro (o un pigmento polimerico)
•
Per scrivere un bit, l’unità usa un raggio laser per praticare un piccolo foro nell’alluminio (o opacizzare il pigmento): l’informazione può venir distrutta ma non alterata
I dischi ottici
I dischi ottici − − 2 2
8484
L'architettura di Von Neumann
CPU RAM Memoria
secondaria I/O
BUS