G. Mecca – Università della Basilicata – [email protected] Programmazione Procedurale in...

27
G. Mecca – Università della Basilicata – G. Mecca – Università della Basilicata – [email protected] [email protected] Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Transcript of G. Mecca – Università della Basilicata – [email protected] Programmazione Procedurale in...

Page 1: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

G. Mecca – Università della Basilicata – [email protected] G. Mecca – Università della Basilicata – [email protected]

Programmazione Procedurale in Linguaggio C++

Concetti Introduttivi

Parte 1

Architettura del Calcolatore

versione 2.0Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

Page 2: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

2G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Sommario

Introduzione Architettura del Calcolatore

Architettura di Von Neumann Memoria RAM Rappresentazione delle Informazioni

Rappresentazione dei numeriCodice ASCII

Concetti Introduttivi: Architettura >> Sommario

Page 3: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

3G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Introduzione

Obiettivolo studio della programmazione dei

calcolatori elettroniciovvero scrivere programmi per risolvere

problemi di calcolo Prerequisiti

architettura del calcolatorerappresentazione delle informazioni

Concetti Introduttivi: Architettura >> Introduzione

Page 4: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

4G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Introduzione

In questo corso ci occuperemo di“software”, ovvero applicazioni

E’ necessario però avere un’idea dell’“hardware”, ovvero dei dispositivi fisici che

compongono il calcolatore Infatti

il software specifica operazioni che vengono eseguiti dall’hardware

Concetti Introduttivi: Architettura >> Introduzione

Page 5: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

5G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Architettura del Calcolatore

Architettura Esterna (Hardware)

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Unità Centrale-Processore-Memoria di lavoro (memoria RAM)

Dispositivi di Uscita-Schermo-Audio-Stampanti

Dispositivi di Ingresso-Tastiera-Mouse

Memorie di Massa-Disco Rigido-Dischi Floppy-CD/DVD

Page 6: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

6G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Architettura del Calcolatore

Architettura Internaarchitettura dei componenti dell’unità

centrale Architettura di “Von Neumann”

l’architettura di tutti i calcolatori moderni (dagli anni ’50 ad oggi)

tre componenti fondamentali: processore, memoria RAM e interfacce delle periferiche

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Page 7: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

7G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Architettura di Von Neumann

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Bus di Sistema

Processore (CPU)Memoria RAM Interfacce delleperiferiche

dischi

Page 8: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

8G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Processore

CPU (“Central Processing Unit”)è il circuito integrato che effettua i calcoliresponsabile di tutte le operazionies: Pentium IV (a 1.8 MegaHertz)

In sostanzalegge e scrive dati dalla memoria RAMeffettua operazioni aritmeticheè in grado di pilotare le periferiche

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Page 9: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

9G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Interfacce verso le Periferiche

Circuiti a cui sono connesse le periferichememorie di massadispositivi di ingresso/uscita

Funzionamentoil processore comanda l’interfaccia

attraverso il bus di sistemal’interfaccia si occupa di gestire la

comunicazione con la periferica

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Page 10: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

10G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Memoria RAM

“Random Access Memory”memoria di lavoro per la CPUcircuito elettronico capace di mantenere uno

stato in presenza di alimentazionememorizza lo stato di segnali elettricivolatile: perde lo stato in assenza di tensione

Attenzionele elaborazioni del processore avvengono

esclusivamente su dati nella RAM

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Page 11: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

11G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Architettura di Von Neumann

Schema di funzionamentoil processore acquisisce dati dalle periferiche

di ingresso o da una mem. di massali memorizza nella memoria RAMaccede alla RAM ed effettua operazioniscrive i risultati nella RAMinvia i risultati alle periferiche di uscitatrasferisce i dati permanentemente sulle

memorie di massa

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Page 12: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

12G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Architettura di Von Neumann

Esempio: elaborazione di un documentoil documento è salvato su discoviene “aperto” e caricato nella RAMvengono effettuate modificheil contenuto della RAM e quello del disco

sono disallineatial termine delle modifiche è necessario

“salvare” la nuova versione sul disco

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Page 13: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

13G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Memoria RAM

Organizzazione della RAMcomposta di numerosi circuiti (celle)ciascuno capaci di memorizzare un bit di

informazione Bit (“Binary Digit”)

unità di memorizzazione per il calcolatorepuò valere 1 oppure 0facilmente rappresentabile con un segnale

elettrico

Concetti Introduttivi: Architettura >> Memoria RAM

t

V

1 00.2V

3V

Page 14: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

14G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentare Informazione con i Bit Con un bit

due numeri (0 e 1) Con due bit

quattro numeri (00, 01, 10, 11) Con tre bit

otto numeri (000, 001, 010, ..., 110, 111) Per rappresentare 1.000.000 di numeri

servono 20 bit

Concetti Introduttivi: Architettura >> Memoria RAM

Page 15: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

15G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Unità di Misura della Memoria

Bit: 0/1 Byte: 8 bit unità convenzionale di riferim. KiloByte: 210 byte (1024 byte)

1024x8 bit = 8192 bit MegaByte: 220 byte (1 milione di byte ca.)

circa 8 milioni di bit GigaByte: 230 byte (1 miliardo di byte ca.)

circa 8 miliardi di bit

Concetti Introduttivi: Architettura >> Memoria RAM

NOTA: si usano anche per i dischi

Page 16: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

16G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Memoria RAM

Struttura della RAMorganizzata in registri

Registro16, 32 o 64 bitogni registro ha un

suo indirizzo Es: 64M RAM

ca. 64 milioni di byteca.16 milioni di registri

da 32 bit

Concetti Introduttivi: Architettura >> Memoria RAM

...

...

...

...

...

...

...

#0

#1

#2

#3

#224-1

bit 0 bit 1 bit 31

Page 17: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

17G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione delle Informazioni Tutte le informazioni sono rappresentate

attraverso sequenze di bit Esempio:

numero -57 su 16 bit1111111111000111

carattere ‘A’ su 8 bit10000001

Opportune “codifiche”

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Page 18: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

18G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione delle Informazioni Codifica (o Codice)

insieme di regole per rappresentare oggetti con altri oggetti

in questo caso: lettere, numeri, immagini ecc. attraverso sequenze di bit

Interazione con il calcolatorel’utente ha l’impressione di lavorare con

oggetti familiari (parole, cifre, ecc.)rappresentazione interna in forma di bit

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Page 19: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

19G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione dei Numeri

Rappresentazione dei num. interi positivirappresentazione posizionale in base 2semplice (simile ai num. decimali): ogni bit è

una cifra Rappresentazione dei num. interi relativi

codifica in “complemento a 2”regole complesse

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Page 20: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

20G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione dei Numeri

Rappresentazione dei numeri realicodifica in “virgola mobile”il numero viene rappresentato attraverso due

altri numeri mantissa ed esponenteN = m 2e, con 1/2 <= m < 1es: 2048 = 1x211 = 1/2x212

2048 viene rappresentato mettendo assieme la rappresentazione di 1/2, ovvero (0.1)2, e la rappresentazione di 12, ovvero (1100)2

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

NOTA

Page 21: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

21G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Alcune Interessanti Considerazioni

I Considerazionenumeri di tipo diverso vengono rappresentati

in modo completamente diverso II Considerazione

la rappresentazione in virgola mobile è esponenziale

II Considerazionei numeri interi sono rappres. in modo esattoquesto non vale per i numeri reali

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Page 22: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

22G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione dei Numeri

In particolarela rappresentazione in virgola mobile

consente di rappresentare solo numeri razionali

i numeri irrazionali (es: 1/3) devono essere approssimati con un numero razionale

questo introduce errori nella rappresentazione e quindi nei calcoli

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Page 23: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

23G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione dei Caratteri

Codice ASCII a 7 bital carattere è associato un num. tra 0 e 127la rappr. del carattere coincide con quella del

numeronota: vale anche per le cifre (0-9) ed i

caratteri speciali (es: +)

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

‘A’ 65 0100001

‘0’ 48 0011000NOTA: differenza tra il carattere ‘2’ e il numero 2

Page 24: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

24G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Rappresentazione dei Caratteri

Limiti del codice ASCII a 7 bitnumero di caratteri rappresentabili molto

basso (non include lettere accentate) Codice ASCII a 8 bit (“Extended ASCII”)

al carattere è associato un num. tra 0 e 255maggior numero di caratteri rappresentabili

Al giorno d’oggicodice UNICODE (16 bit o superiore)

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Page 25: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

25G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Tab

ella

dei

Cod

ici A

SC

II E

stes

i

Page 26: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

26G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Riassumendo

Architettura di Von NeumannRapporto tra processore, RAM e periferiche

Memoria RAMBit, byte e multipli, registri

Rappresentazione delle InformazioniRappresentazione dei numeriParticolarità nella rappresentazioneCodice ASCII

Concetti Introduttivi: Architettura >> Sommario

Page 27: G. Mecca – Università della Basilicata – mecca@unibas.it Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 1 Architettura del Calcolatore.

27G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Termini della Licenza

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Termini della Licenza

Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.