introduzione alla programmazione - math.unipd.itaceccato/lezione-19-gennaio-2011.pdf ·...

170
Anno accademico 2010-2011 Anno accademico 2010-2011 1 Introduzione alla programmazione Introduzione alla programmazione

Upload: hoanghanh

Post on 15-Feb-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Anno accademico 2010-2011Anno accademico 2010-201111

Introduzione alla programmazioneIntroduzione alla programmazione

22Anno accademico 2010-2011Anno accademico 2010-2011

22

Introduzione alla ProgrammazioneIntroduzione alla Programmazione

• Docente: Alessia CeccatoDocente: Alessia Ceccato• Mail: Mail: [email protected]@interfree.it• Ricevimento: a fine lezione o su Ricevimento: a fine lezione o su

appuntamentoappuntamento

33Anno accademico 2010-2011Anno accademico 2010-2011

33

Introduzione alla ProgrammazioneIntroduzione 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 Paolottidel Paolotti

44Anno accademico 2010-2011Anno accademico 2010-2011

44

Programma del corso:Programma del corso:

• La struttura del calcolatoreLa struttura del calcolatore L’architettura a BUSL’architettura a BUS La CPULa CPU La gerarchia di memorieLa gerarchia di memorie

La memoria centraleLa memoria centraleLa memoria secondariaLa memoria secondaria

I dispositivi di I/OI dispositivi di I/O

• Circuiti logici e sistema binarioCircuiti logici e sistema binario• La rappresentazione dell'informazioneLa rappresentazione dell'informazione

55Anno accademico 2010-2011Anno accademico 2010-2011

55

Programma del corso:Programma del corso:• Il linguaggio macchina e assemblerIl linguaggio macchina e assembler

• Esempi di programmi in assemblerEsempi di programmi in assembler

• Il sistema operativoIl sistema operativo

• Un esempio di SO: LinuxUn esempio di SO: Linux

• Le retiLe reti

• Cenni sul linguaggio di programmazione CCenni sul linguaggio di programmazione C

• Esempi di programmi in CEsempi di programmi in C

66Anno accademico 2010-2011Anno accademico 2010-2011

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/~aceccatohttp://www.math.unipd.it/~aceccato

77Anno accademico 2010-2011Anno accademico 2010-2011

Modalità di esame

• La prova d'esame verrà svolta in La prova d'esame verrà svolta in laboratoriolaboratorio

• Divisa in due parti:Divisa in due parti:– Una parte teorica con domande a risposta Una parte teorica con domande a risposta

apertaaperta– Una parte pratica di creazione di un Una parte pratica di creazione di un

semplice programma in assembler e in Csemplice programma in assembler e in C

88Anno accademico 2010-2011Anno accademico 2010-2011

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!!!

99Anno accademico 2010-2011Anno accademico 2010-2011

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 laboratorioAl terzo piamo del Paolotti.

1010Anno accademico 2010-2011Anno accademico 2010-2011

Come richiedere l'accountOgni 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, nomematricola 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.

1111Anno accademico 2010-2011Anno accademico 2010-2011

Cose da sapere per usare i PCOgni 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 escegliere shutdown). L'uso dei PC, oltre ad essere consentito solo quando non ci sono lezioni in corso, è anche vincolatodal 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 settimanaliDeroghe a tali limitazioni possono essere richieste solo in casi speciali (es. studenti in tesi e previa richiesta del relatore).

1212Anno accademico 2010-2011Anno accademico 2010-2011

1313

• InformaticaInformatica fusione delle parole informazioneinformazione e automaticaautomatica 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’informazionedell’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

1313Anno accademico 2010-2011Anno accademico 2010-2011

1414

• L’informatica non è la scienza dei calcolatori elettronici: il calcolatore è lo strumento che la rende “operativa”

• L’elaboratoreelaboratore (computer, calcolatore) è un’apparecchiatura digitaledigitale, elettronicaelettronica ed automaticaautomatica capace di effettuare trasformazioni sui dati: Digitale:Digitale: i dati sono rappresentati mediante un alfabeto finito,

costituito da cifre, digitdigit, che ne permette il trattamento mediante regole matematiche

Elettronica: Elettronica: realizzazione tramite tecnologie di tipo elettronico Automatica: Automatica: capacità di eseguire una successione di

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

1414Anno accademico 2010-2011Anno accademico 2010-2011

1515

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

• NotaNota

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

1515Anno accademico 2010-2011Anno accademico 2010-2011

1616

• 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 programmazioneanalisi 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 algoritmoalgoritmo Scopo della programmazione Scopo della programmazione definire un programmaprogramma

Analisi e programmazione Analisi e programmazione −− 1 1

1616Anno accademico 2010-2011Anno accademico 2010-2011

1717

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’elaboratoredall’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

1717Anno accademico 2010-2011Anno accademico 2010-2011

1818RisultatiRisultati

ProblemaProblema

ANALISIANALISI

ELABORAZIONEELABORAZIONE DatiDati

PROGRAMMAZIONEPROGRAMMAZIONE

AlgoritmoAlgoritmo

ProgrammaProgramma

Le fasi del procedimento di Le fasi del procedimento di analisi e programmazioneanalisi e programmazione

1818Anno accademico 2010-2011Anno accademico 2010-2011

1919

Gli algoritmiGli algoritmi

1919Anno accademico 2010-2011Anno accademico 2010-2011

2020

• AlgoritmoAlgoritmo deriva dal nome del matematico uzbeco Mohammed ibnMohammed ibn−−Musa AlMusa Al−−KhuwarizmiKhuwarizmi, vissuto nel IX secolo d.C. (dalla cui opera è nata l’algebra moderna), e significa procedimento di calcoloprocedimento di calcolo

• Un algoritmo è una successione di istruzioniistruzioni o passipassi che definiscono le operazioni da eseguire sui dati per ottenere i risultati; un algoritmo fornisce la soluzione ad una classe di classe di problemiproblemi

• Lo schema di esecuzioneschema 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

2020Anno accademico 2010-2011Anno accademico 2010-2011

Cominciamo con l'analisi della struttura di un Cominciamo con l'analisi della struttura di un calcolatore...calcolatore...

Anno accademico 2010-2011Anno accademico 2010-20112222

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

Anno accademico 2010-2011Anno accademico 2010-20112323

• 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 2Gottfried Leibnitz (1646-1716) Gottfried Leibnitz (1646-1716) Blaise Pascal (1623-1662) Blaise Pascal (1623-1662)

Macchina computazionale (G. Leibnitz) Macchina computazionale (G. Leibnitz)

Macchina addizionatrice Macchina addizionatrice −− la Pascalina (B. Pascal) la Pascalina (B. Pascal)

Anno accademico 2010-2011Anno accademico 2010-20112424

• 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 analiticamacchina 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 3Charles 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

Anno accademico 2010-2011Anno accademico 2010-20112525

• 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 4Herman Hollerith (1860-1929) Herman Hollerith (1860-1929)

Census Tabulator (1890) Census Tabulator (1890)

Anno accademico 2010-2011Anno accademico 2010-20112626

• 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 CompanyTabulating Recording Company che, nel 1923, divenne l’International Business International Business MachineMachine, 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 5Konrad Zuse (1910-1995) Konrad Zuse (1910-1995)

Il calcolatore Z1 (1939) Il calcolatore Z1 (1939)

Anno accademico 2010-2011Anno accademico 2010-20112727

• Durante la seconda guerra mondiale, fioriscono i progetti di elaboratori da utilizzarsi per scopi bellici

La macchina EnigmaLa macchina Enigma

Cenni storici Cenni storici −− 6 6Alan Turing (1912-1954) Alan Turing (1912-1954)

EnigmaEnigma, realizzata dai tedeschi (A. Scherbius) per codificare le comunicazioni militari

Red PurpleRed Purple, di costruzione giapponese Computer ColossusComputer Colossus, costruito dagli inglesi

per la decifrazione dei messaggi tedeschi, alla cui progettazione e realizzazione collaborò Alan TuringAlan Turing, permise la vittoria anglo−americana sull’Atlantico

Anno accademico 2010-2011Anno accademico 2010-20112828

• 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

Anno accademico 2010-2011Anno accademico 2010-20112929

• 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 (EDSACEDSAC, WhirlwindWhirlwind, IASIAS, UNIVACUNIVAC)

Per la prima volta, vige il principio di unitarietà di rappresentazione di unitarietà di rappresentazione di dati e istruzionidati 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 8John Von Neumann (1903-1957) John Von Neumann (1903-1957)

Anno accademico 2010-2011Anno accademico 2010-20113030

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

Anno accademico 2010-2011Anno accademico 2010-20113131

• 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 microprocessoremicroprocessore è 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

Anno accademico 2010-2011Anno accademico 2010-20113232

• 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

Anno accademico 2010-2011Anno accademico 2010-20113333

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

3333Anno accademico 2010-2011Anno accademico 2010-2011

3333

• “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 New York Times pubblicò un libro dal titolo La scienza nel ventesimo secoloLa 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…

3434Anno accademico 2010-2011Anno accademico 2010-2011

3434

• La capacità dell’elaboratore di eseguire successioni di operazioni in modo automatico è determinata dalla presenza di un dispositivo di memoriamemoria 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 controllounità di controllo

Modello di Von NeumannModello di Von Neumann

L’architettura di Von NeumannL’architettura di Von Neumann

3535Anno accademico 2010-2011Anno accademico 2010-2011

3535

• Programma:Programma: sequenza di operazioni atte a predisporre l’elaboratore alla soluzione di una determinata classe di problemi Il programma è la descrizione di un algoritmoalgoritmo in una forma

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 universalemacchina universale: cambiando il programma residente in memoria, è in grado di risolvere problemi di natura diversa (una classe di problemi per ogni programma)

La macchina universaleLa macchina universale

3636Anno accademico 2010-2011Anno accademico 2010-2011

3636

La struttura del calcolatoreLa struttura del calcolatoreIBM S/360 Mod 40 (1964) IBM S/360 Mod 40 (1964) 1.6 MHz 32KB1.6 MHz 32KB−−256KB256KB225.000$225.000$

IBM S/360 Mod 50 (1964)IBM S/360 Mod 50 (1964)2.0 MHz 128KB2.0 MHz 128KB−−256KB256KB550.000$550.000$

IBM S/360 Mod 65 (1964)IBM S/360 Mod 65 (1964)5.0 MHz 256KB5.0 MHz 256KB−−1MB1MB1.200.000$1.200.000$

3737Anno accademico 2010-2011Anno accademico 2010-2011

3737

• 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 GraphicsSilicon Graphics

La struttura del calcolatoreLa struttura del calcolatore

3838Anno accademico 2010-2011Anno accademico 2010-2011

3838

• 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 sistemaBUS di sistema

CPUCPU

tastieratastiera mousemouse memoria dimemoria dimassamassa monitormonitor

Memoria Memoria centralecentrale

PeriferichePeriferiche

La macchina di Von Neumann La macchina di Von Neumann −− 1 1

3939Anno accademico 2010-2011Anno accademico 2010-2011

3939

La macchina di Von Neumann La macchina di Von Neumann −− 2 2

• Carratteristiche del modello di Von NeumannCarratteristiche 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

4040Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

4141Anno accademico 2010-2011Anno accademico 2010-2011

4141

• 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

MemoriaprincipaleCPU I/O I/OI/O

BUSIndirizziDatiControllo

Dispositivi di Input/Output

Architettura a BUSArchitettura a BUS

4242Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

4343Anno accademico 2010-2011Anno accademico 2010-2011

4242

l’orologio del sistemaorologio 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 PentiumIntel Pentium

• La Central Processing UnitCentral Processing Unit è l’unità centrale di elaborazione: esegue le istruzioni dei programmi e ne regola il flusso, esegue i calcoli

• La CPU è un dispositivo sincronosincrono, cioè può cambiare stato solo quando riceve un impulso di clockclock,

La CPU La CPU −− 1 1

4444Anno accademico 2010-2011Anno accademico 2010-2011

4343

• 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

4545Anno accademico 2010-2011Anno accademico 2010-2011

4444

• La CPU è costituita da tre elementi fondamentali: Unità AritmeticoUnità Aritmetico−−Logica (ALU)Logica (ALU) RegistriRegistri Unità di Controllo (CU)Unità di Controllo (CU)

EUExecution Unit}

ALUALU CUCU

PCPC

IRIR

registriregistriContatore di programma(Program CounterProgram Counter) <P>

Registro Istruzione(Instruction RegisterInstruction Register) <IP>BUSBUS

BIUBus Interface Unit

La CPU La CPU −− 3 3

4646Anno accademico 2010-2011Anno accademico 2010-2011

4545

• 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

4747Anno accademico 2010-2011Anno accademico 2010-2011

4646

• Lo stato della CPU è costituito da informazioni (memorizzate negli opportuni registri) su:

dati da elaborare (contenuti nei registri datiregistri dati) istruzione da eseguire (nel registro istruzioniregistro istruzioni) indirizzo in memoria della prossima istruzione da eseguire

(nel program counterprogram counter) eventuali anomalie o eventi verificatisi durante

l’elaborazione (nei registri flagregistri flag)

La CPU La CPU −− 5 5

4848Anno accademico 2010-2011Anno accademico 2010-2011

4747

• 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

4949Anno accademico 2010-2011Anno accademico 2010-2011

4848

• 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 UnitLogic Unit) è un circuito 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à AritmeticoL’Unità Aritmetico−−LogicaLogica

ALU ResultZero

Overflow

a

b

ALU operation

CarryOut

5050Anno accademico 2010-2011Anno accademico 2010-2011

4949

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

Stack segment pointer (top of stack)SS

Data segment pointer 0DS

Data segment pointer 1ES

Data segment pointer 2FS

Data segment pointer 3GS

031

GPR 0EAX

GPR 3EBX

GPR 1ECX

GPR 2EDX

GPR 6ESI

GPR 7EDI

GPR 5EBP

GPR 4ESP

Name Use

Registri del PentiumRegistri del Pentium

I registriI registri

5151Anno accademico 2010-2011Anno accademico 2010-2011

5050

• Esegue le istruzioni prelevandole dalla memoria nella fase di accessaccess• La prossima istruzione da eseguire è individuata dall’indirizzo presente nel

registro contatore di programmaregistro contatore di programma (PC)• L’istruzione in esecuzione è memorizzata nel registro istruzioneregistro istruzione (IR)• L’istruzione è un codice binario che deve essere decodificatodecodificato dalla CU;

specifica il tipo di operazione, gli eventuali operandi, etc.• Normalmente le istruzioni sono eseguite in sequenza: dopo l'access, il PC PC

viene incrementatoviene incrementato, per fare riferimento all’istruzione successiva

CU

IR

PC

memoriaBUS

Istruzione 1Istruzione 2Istruzione 3

02AD77F2

02AD77F2

Segnali di controllo(ALU, Registri, etc.)

L’unità di controlloL’unità di controllo

5252Anno accademico 2010-2011Anno accademico 2010-2011

5151

• Il processore esegue le istruzioni di un programma una una alla voltaalla 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 istruzioneistruzione o ciclo macchinaciclo macchina Estrazione di una istruzione: fase di accessfase di access

Decodifica di una istruzione: fase di decodefase di decode Esecuzione dell’istruzione: fase di executefase di execute

Come si eseguono i programmi Come si eseguono i programmi −− 1 1

5353Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

SCHEMA DELLA CPU

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

5454Anno accademico 2010-2011Anno accademico 2010-2011

Ciclo ADE della CPU (10-9 sec)

• 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

5555Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

ACCESS

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

In IR viene messa l’istruzione da eseguire (contenuta nellaRAM all’indirizzo specificato all’inteno del registro PC)

In P Cviene messo l’indirizzo della RAM dove è contenuta laprossima istruzione da eseguire.

5656Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

DECODE

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

La ALU riconosce l’istruzione come una delle istruzionimacchina I1, ..., Ik possibili

5757Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

EXECUTE

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

La ALU attiva la corrispondente componente (ad esempioCI2 che esegue l’istruzione richiesta)

5858Anno accademico 2010-2011Anno accademico 2010-2011

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

5959Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

6060Anno accademico 2010-2011Anno accademico 2010-2011

5959

• 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

6161Anno accademico 2010-2011Anno accademico 2010-2011

6060

• I parametri fondamentali che definiscono una memoria sono: Dimensione della parolaDimensione 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 accessoTempo 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)

Le memorie Le memorie −− 2 2

Anno accademico 2010-2011Anno accademico 2010-2011

Gerarchia di memorieGerarchia di memorie

Tbyte

Gbyte

6363Anno accademico 2010-2011Anno accademico 2010-2011

• La memoria centrale o memoria principale, detta anche RAMRAM (Random Access MemoryRandom 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

6464Anno accademico 2010-2011Anno accademico 2010-2011

6363

• Le caratteristiche fondamentali della memoria centrale sono: accesso diretto alle informazioniaccesso diretto alle informazioni velocità elevatavelocità elevata volatilitàvolatilità: quando il computer viene spento, i dati e i

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 tensionee viene rappresentato con le cifre binarie 0/1

La memoria centrale La memoria centrale −− 2 2

6565Anno accademico 2010-2011Anno accademico 2010-2011

6464

• 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

indirizzoindirizzo che lo distingue da tutti gli altri, costituito da un numero variabile da 0 a 2N−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

6666Anno accademico 2010-2011Anno accademico 2010-2011

Unità di misura della RAM(e della memoria in generale)

1 KiloByte (KB) = 210 byte = 1.024 byte; circa 1.000 byte

1 MegaByte (MB) = 220 byte = 1.024 KB; circa 1.000.000 byte

1 GigaByte (GB) = 230 byte = 1.024 MB; circa 1.000.000.000 byte

1 TeraByte (TB) = 240 byte = 1.024 GB; circa 1.000.000.000.000 byte

6767Anno accademico 2010-2011Anno accademico 2010-2011

Indirizzi di memoriaIndirizzo ByteInd. 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

2 11 000010 11

6868Anno accademico 2010-2011Anno accademico 2010-2011

6868

• 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

• SoluzioniSoluzioni 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 processoreche approssimi la velocità del processore

Processore e RAMProcessore e RAM

6969Anno accademico 2010-2011Anno accademico 2010-2011

6969

• 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à spaziolocalità spazio−−temporale del softwaretemporale del software)

La memoria cacheLa memoria cache

7070Anno accademico 2010-2011Anno accademico 2010-2011

7070

• Una parte della memoria centrale è la ROMROM (Read Only Read Only MemoryMemory ), una memoria a sola lettura, destinata a contenere informazioni non variabili

• Caratteristiche delle memorie ROM: accesso casuale alle informazioniaccesso casuale alle informazioni velocità elevata velocità elevata (inferiore alle RAM)

• 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 ROMLa memoria ROM

7171Anno accademico 2010-2011Anno accademico 2010-2011

7171

• 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 avviamentoroutine di avviamento che comprendono il caricatore di caricatore di bootboot−−strapstrap ed il ROM BIOSROM BIOS

• Le routine di avviamento routine di avviamento realizzano l’inizializzazione del 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

7272Anno accademico 2010-2011Anno accademico 2010-2011

7272

Il software della ROM Il software della ROM −− 2 2

• Il caricatore di bootcaricatore di boot−−strap strap ha la funzione di leggere un programma di lancio dal disco, detto bootstrapbootstrap, 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 InputBinary 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

7373Anno accademico 2010-2011Anno accademico 2010-2011

7373

• Le operazioni che si effettuano sulla memoria sono operazioni di letturalettura e scritturascrittura

• Entrambe presuppongono l’utilizzo di un indirizzo che identifica univocamente la cella interessata all’operazione

• L’operazione di scrittura è distruttivadistruttiva, cioè cancella 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 centraleOperazioni sulla memoria centrale

7474Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

7575Anno accademico 2010-2011Anno accademico 2010-2011

7575

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 magneticiDischi 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 secondariaLa memoria secondaria

7676Anno accademico 2010-2011Anno accademico 2010-2011

7676

• 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

7777Anno accademico 2010-2011Anno accademico 2010-2011

7777

• L’informazione è disposta sul disco in traccetracce, 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 settorisettori• 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

7878Anno accademico 2010-2011Anno accademico 2010-2011

7878

• 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

7979Anno accademico 2010-2011Anno accademico 2010-2011

• La magnetizzazione avviene infatti mediante la testina testina magneticamagnetica (una piccola bobina racchiusa in un involucro di metallo dotato di una minuscola fessura, il traferrotraferro)

• 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

8080Anno accademico 2010-2011Anno accademico 2010-2011

• II 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'altroin un senso o nell'altro

• Lettura da discoLettura da disco: poiché le particelle magnetizzate sono 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

8181Anno accademico 2010-2011Anno accademico 2010-2011

• 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 discoAccesso al disco

8282Anno accademico 2010-2011Anno accademico 2010-2011

8282

• 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

8383Anno accademico 2010-2011Anno accademico 2010-2011

8383

• Sui dischi di lettura/scrittura i dati possono essere modificati più e più volte (dischi a cambio di fasedischi a cambio di fase)

• I dischi WORMWORM, Write OnceWrite Once−−Read ManyRead 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

8484Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

8585Anno accademico 2010-2011Anno accademico 2010-2011

Comportamento:Comportamento: Input (read once), output (write only), memoria (rilettura/riscrittura)

Partner:Partner: uomo o macchina Velocità del flusso dei dati:Velocità del flusso dei dati: quantità di dati trasferiti nell’unità

di tempo da o verso la CPU o la memoria centrale

• Insieme di dispositivi che consentono l’acquisizione di dati (inputinput), la loro archiviazione (storagestorage) e la loro presentazione verso il mondo esterno (outputoutput)

• Si possono classificare in base a tre diverse caratteristiche:

TastieraTastiera inputinput uomo uomo

MouseMouse inputinput uomo uomo

ReteRete input/outputinput/output macchina macchina Hard DiskHard Disk storagestorage macchinamacchina

velo

cità

velo

cità

++

−−

≈≈101044 KB/s KB/s

≈≈1010−−22 KB/s KB/s

I dispositivi di InputI dispositivi di Input−−OutputOutput

11

22

33

2020Anno accademico 2010-2011Anno accademico 2010-2011

Cominciamo con l'analisi della struttura di un Cominciamo con l'analisi della struttura di un calcolatore...calcolatore...

2121Anno accademico 2010-2011Anno accademico 2010-2011

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)

2222Anno accademico 2010-2011Anno accademico 2010-2011

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 2Gottfried Leibnitz (1646-1716) Gottfried Leibnitz (1646-1716) Blaise Pascal (1623-1662) Blaise Pascal (1623-1662)

Macchina computazionale (G. Leibnitz) Macchina computazionale (G. Leibnitz)

Macchina addizionatrice Macchina addizionatrice −− la Pascalina (B. Pascal) la Pascalina (B. Pascal)

2323

2424

2525Anno accademico 2010-2011Anno accademico 2010-2011

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 CompanyTabulating Recording Company che, nel 1923, divenne l’International Business International Business MachineMachine, 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 5Konrad Zuse (1910-1995) Konrad Zuse (1910-1995)

Il calcolatore Z1 (1939) Il calcolatore Z1 (1939)

2626Anno accademico 2010-2011Anno accademico 2010-2011

2727

• Durante la seconda guerra mondiale, fioriscono i progetti di elaboratori da utilizzarsi per scopi bellici

La macchina EnigmaLa macchina Enigma

Cenni storici Cenni storici −− 6 6Alan Turing (1912-1954) Alan Turing (1912-1954)

EnigmaEnigma, realizzata dai tedeschi (A. Scherbius) per codificare le comunicazioni militari

Red PurpleRed Purple, di costruzione giapponese Computer ColossusComputer Colossus, costruito dagli inglesi

per la decifrazione dei messaggi tedeschi, alla cui progettazione e realizzazione collaborò Alan TuringAlan Turing, permise la vittoria anglo−americana sull’Atlantico

2727Anno accademico 2010-2011Anno accademico 2010-2011

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

2828Anno accademico 2010-2011Anno accademico 2010-2011

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 (EDSACEDSAC, WhirlwindWhirlwind, IASIAS, UNIVACUNIVAC)

Per la prima volta, vige il principio di unitarietà di rappresentazione di unitarietà di rappresentazione di dati e istruzionidati 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 8John Von Neumann (1903-1957) John Von Neumann (1903-1957)

2929Anno accademico 2010-2011Anno accademico 2010-2011

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

3030Anno accademico 2010-2011Anno accademico 2010-2011

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 microprocessoremicroprocessore è 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

3131Anno accademico 2010-2011Anno accademico 2010-2011

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

3232Anno accademico 2010-2011Anno accademico 2010-2011

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

3838

3939

4040Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

4242Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

5353Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

SCHEMA DELLA CPU

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

54

5555Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

ACCESS

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

In IR viene messa l’istruzione da eseguire (contenuta nellaRAM all’indirizzo specificato all’inteno del registro PC)

In P Cviene messo l’indirizzo della RAM dove è contenuta laprossima istruzione da eseguire.

5656Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

DECODE

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

La ALU riconosce l’istruzione come una delle istruzionimacchina I1, ..., Ik possibili

5757Anno accademico 2010-2011Anno accademico 2010-2011

ALU RAM

BUS

c

ALUALU

EXECUTE

....CI1

CI2

CIk

R0

Rn

RC

....IR

PC

La ALU attiva la corrispondente componente (ad esempioCI2 che esegue l’istruzione richiesta)

58

5959Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

66

6767Anno accademico 2010-2011Anno accademico 2010-2011

Indirizzi di memoriaIndirizzo ByteInd. 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

2 11 000010 11

7474Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS

77

8484Anno accademico 2010-2011Anno accademico 2010-2011

L'architettura di Von Neumann

CPU RAM Memoria secondaria I/O

BUS