• Non ci sono risultati.

Introduzione alla programmazione Introduzione alla programmazione

N/A
N/A
Protected

Academic year: 2022

Condividi "Introduzione alla programmazione Introduzione alla programmazione"

Copied!
170
0
0

Testo completo

(1)

11

Introduzione alla programmazione

Introduzione alla programmazione

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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.

(10)

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.

(11)

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

(12)

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

(13)

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

(14)

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…

(15)

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

(16)

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

(17)

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

(18)

18181919

Gli algoritmi

Gli algoritmi

(19)

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

(20)

2020

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

calcolatore...

calcolatore...

(21)

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 18001600 a.C.

Macchina moltiplicatrice (1624) Macchina moltiplicatrice (1624)

Wilhelm Schickard (1592-1635)Wilhelm Schickard (1592-1635)

(22)

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)

(23)

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

(24)

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)

(25)

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)

(26)

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

(27)

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

(28)

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)

(29)

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

(30)

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 microonde

Computer di bordo e ABS

...

Cenni storici

Cenni storici − − 10 10

(31)

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

(32)

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

(33)

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…

(34)

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

(35)

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

(36)

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 32KB256KB256KB 225.000$

225.000$

IBM S/360 Mod 50 (1964) IBM S/360 Mod 50 (1964) 2.0 MHz 128KB

2.0 MHz 128KB−256KB256KB 550.000$

550.000$

IBM S/360 Mod 65 (1964) IBM S/360 Mod 65 (1964)

5.0 MHz 256KB

5.0 MHz 256KB−1MB1MB 1.200.000$

1.200.000$

(37)

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

(38)

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

(39)

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

(40)

4040

L'architettura di Von Neumann

CPU RAM Memoria

secondaria I/O

BUS

(41)

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

(42)

4242

L'architettura di Von Neumann

CPU RAM Memoria

secondaria I/O

BUS

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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

(50)

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

(51)

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

(52)

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

(53)

5353

ALU RAM

BUS c

ALU ALU

SCHEMA DELLA CPU

....

C

I

1

C

I

2

C

I

k

R0

Rn RC

....

IR PC

(54)

5454

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’istruzioneIncremento del contatore programma

Decodifica dell’istruzione (decode):

Trova gli operandi a seconda del codice operativoModifica contatore programma se istruzione di salto

Esecuzione dell’istruzione (execute):

Attiva i circuiti necessari

(55)

5555

ALU RAM

BUS c

ALU ALU

ACCESS

....

C

I

1

C

I

2

C

I

k

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.

(56)

5656

ALU RAM

BUS c

ALU ALU

DECODE

....

C

I

1

C

I

2

C

I

k

R0

Rn RC

....

IR PC

La ALU riconosce l’istruzione come una delle istruzioni

macchina I1, ..., Ik

possibili

(57)

5757

ALU RAM

BUS c

ALU ALU

EXECUTE

....

C

I

1

C

I

2

C

I

k

R0

Rn RC

....

IR PC

La ALU attiva la corrispondente componente (ad esempio

C

I2

che esegue

l’istruzione richiesta)

(58)

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

(59)

5959

L'architettura di Von Neumann

CPU RAM Memoria

secondaria I/O

BUS

(60)

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

(61)

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

(62)

Gerarchia di memorie Gerarchia di memorie

Tbyte Gbyte

(63)

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

(64)

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

(65)

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

(66)

6666

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

1 KiloByte (KB) = 2

10

byte = 1.024 byte;

circa 1.000 byte

1 MegaByte (MB) = 2

20

byte = 1.024 KB;

circa 1.000.000 byte

1 GigaByte (GB) = 2

30

byte = 1.024 MB; circa 1.000.000.000 byte

1 TeraByte (TB) = 2

40

byte = 1.024

GB; circa 1.000.000.000.000 byte

(67)

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

(68)

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

(69)

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

(70)

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

(71)

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

(72)

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

(73)

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

(74)

7474

L'architettura di Von Neumann

CPU RAM Memoria

secondaria I/O

BUS

(75)

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

(76)

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

(77)

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

(78)

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

(79)

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

(80)

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

(81)

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

(82)

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

(83)

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

(84)

8484

L'architettura di Von Neumann

CPU RAM Memoria

secondaria I/O

BUS

Riferimenti

Documenti correlati

- istruzioni elementari : sono operazioni più o meno riconducibili a operazioni dirette sull’hardware della macchina quali operazioni di input/output, lettura di dati dalla

üTheir current estimate for active general purpose programming languages is between 500 and 2,000. üTheir current estimate for all active computer languages is between 5,000

For Debian based systems, like Ubuntu you should just have to install a few things using these commands:.. $ sudo apt

üFile scope: If you declare an identifier outside all blocks and parameter lists (functions), then it has file scope.

that is, it specifies the type of the function’s return value, and may also specify the types of all the parameters that are passed to the function when it is

The problem of exceeding the target type’s value range can also occur when a value is converted from an integer type, whether signed or unsigned, to a signed

If on the other hand condition does yield 0 (i.e., false), then only the third operand, expression 2, is evaluated, and the entire operation yields the value of expression 2.. TYPE

A switch statement causes the flow of program execution to jump to one of several statements according to the value of an integer expression:. switch ( expression

If you define a character array without an explicit length and initialize it with a string literal, the array created is one element longer than the string length..

If the program reaches a return statement or the closing brace } of the function block, execution of the function ends, and the program jumps back to the

If you use a single equal sign to check equality, your program will instead assign the value on the right side of the expression to the variable on the left hand side, and the

Subtracting one pointer from another yields an integer value with the type ptrdiff_t. The value is the number of objects that fit between the two

üIf the entire program is built around some central data and if access to that data is needed in nearly every function and particularly if that is a large data structure, then

The pointer’s value is the address of the first byte in the memory block allocated, or a null pointer if the memory requested is not available.. When a program assigns the

The members of a structure may have any desired complete type, including previously defined structure types. They must not be

Local variables are memorized in the stack: it contains variables with automatic storage duration. üTheir duration in memory begins when their definition is encountered and ends

Of course if we need to have add-or-remove from head and add-or-remove from tail, pLast needs to be updated also in add-or-remove from head (as pFirst in previous

Static: a function identifier declared with the specifier static has internal linkage. Such an identifier cannot be used in another translation unit to access the function. An

Before submitting the source code to the actual compiler, the preprocessor remove comments, executes directives and expands macros in the source files.. GCC ordinarily leaves

L’esecuzione di un’istruzione altera lo stato della Macchina astratta perch` e modifica almeno l’indicatore della prossima istruzione da eseguire... Macchina

L’esecuzione di un’istruzione altera lo stato della Macchina astratta perch` e modifica almeno l’indicatore della prossima istruzione da eseguire... Macchina

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una

Se le operazioni avvengono tra valori dello stesso tipo, restituiscono un valore sempre di quel tipo... Operazioni tra valori di