• Non ci sono risultati.

Concetti Introduttivi Parte 1

N/A
N/A
Protected

Academic year: 2021

Condividi "Concetti Introduttivi Parte 1"

Copied!
14
0
0

Testo completo

(1)

G. Mecca – Università della Basilicata – mecca@unibas.it

Programmazione Procedurale in Linguaggio C++

Concetti Introduttivi Parte 1

Architettura del Calcolatore

versione 2.2

Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Sommario

m

Introduzione

m

Architettura del Calcolatore

ðArchitettura di Von Neumann

m

Memoria RAM

m

Rappresentazione delle Informazioni

ðRappresentazione dei numeri

ðRappresentazione dei caratteri

Concetti Introduttivi: Architettura >> Sommario

(2)

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

Introduzione

m

Obiettivo

ðlo studio della programmazione dei calcolatori elettronici

ðovvero scrivere programmi per risolvere problemi di calcolo

m

Prerequisiti

ðarchitettura del calcolatore

ðrappresentazione delle informazioni

Concetti Introduttivi: Architettura >> Introduzione

4

Introduzione

m

In questo corso ci occuperemo di

ð“software”, ovvero applicazioni

m

E’ necessario però avere un’idea dell’

ð“hardware”, ovvero dei dispositivi fisici che compongono il calcolatore

m

Infatti

ðil software specifica operazioni che vengono eseguiti dall’hardware

Concetti Introduttivi: Architettura >> Introduzione

(3)

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

Architettura del Calcolatore

m 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

Architettura di Von Neumann

m

Architettura Interna

ðarchitettura dei componenti dell’unità centrale

m

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

(4)

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

Architettura di Von Neumann

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Bus di Sistema

Processore (CPU)

Memoria RAM Interfacce delle

periferiche

dischi

8

Processore

m

CPU (“Central Processing Unit”)

ðè il circuito integrato che effettua i calcoli ðresponsabile di tutte le operazioni

ðes: Pentium IV (a 1.8 GigaHertz)

m

In sostanza

ðlegge e scrive dati dalla memoria RAM ðeffettua operazioni aritmetiche

ðè in grado di pilotare le periferiche

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

(5)

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

Interfacce verso le Periferiche

m

Circuiti a cui sono connesse le periferiche

ðmemorie di massa

ðdispositivi di ingresso/uscita

m

Funzionamento

ðil processore comanda l’interfaccia attraverso il bus di sistema

ðl’interfaccia si occupa di gestire la comunicazione con la periferica

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

Memoria RAM

m

“Random Access Memory”

ðmemoria di lavoro per la CPU

ðcircuito elettronico capace di mantenere uno stato in presenza di alimentazione

ðmemorizza lo stato di segnali elettrici

ðvolatile: perde lo stato in assenza di tensione

m

Attenzione

ðle elaborazioni del processore avvengono esclusivamente su dati nella RAM

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

ATTENZIONE al funzionamento della memoria RAM

(6)

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

Architettura di Von Neumann

m

Schema di funzionamento

ðil processore acquisisce dati dalle periferiche di ingresso o da una memoria di massa

ðli memorizza nella memoria RAM

ðaccede alla RAM ed effettua operazioni ðscrive i risultati nella RAM

ðinvia i risultati alle periferiche di uscita ðtrasferisce i dati permanentemente sulle

memorie di massa

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

12

Architettura di Von Neumann

m

Esempio: elaborazione di un documento

ðil documento è salvato su disco

ðviene “aperto” e caricato nella RAM ðvengono effettuate modifiche

ðil contenuto della RAM e quello del disco sono disallineati

ðal termine delle modifiche è necessario

“salvare” la nuova versione sul disco

Concetti Introduttivi: Architettura >> Architettura del Calcolatore

(7)

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

Memoria RAM

m

Organizzazione della RAM

ðcomposta di numerosi circuiti (celle)

ðciascuno capaci di memorizzare un bit di informazione

m

Bit (“Binary Digit”)

ðunità di memorizzazione per il calcolatore ðpuò valere 1 oppure 0

ðfacilmente rappresentabile con un segnale elettrico

Concetti Introduttivi: Architettura >> Memoria RAM

t V

1 0

0.2V 3V

Rappresentare Informazione con i Bit

m

Con un bit

ðdue numeri (0 e 1)

m

Con due bit

ðquattro numeri (00, 01, 10, 11)

m

Con tre bit

ðotto numeri (000, 001, 010, ..., 110, 111)

m

Per rappresentare 1.000.000 di numeri

ðservono 20 bit

Concetti Introduttivi: Architettura >> Memoria RAM

(8)

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

Unità di Misura della Memoria

m

Bit: 0/1

m

Byte: 8 bit unità convenzionale di riferim.

m

KiloByte: 2

10

byte (1024 byte)

ð1024x8 bit = 8192 bit

m

MegaByte: 2

20

byte (1 milione di byte ca.)

ðcirca 8 milioni di bit

m

GigaByte: 2

30

byte (1 miliardo di byte ca.)

ðcirca 8 miliardi di bit

Concetti Introduttivi: Architettura >> Memoria RAM

NOTA: si usano anche per i dischi

16

Memoria RAM

m Struttura della RAM

ðbit organizzati in registri

m Registro

ð16, 32 o 64 bit

ðogni registro ha un suo indirizzo

m Es: 64MByte di RAM

ðca. 64 milioni di byte ðca.16 milioni di registri

da 32 bit (224registri)

Concetti Introduttivi: Architettura >> Memoria RAM

...

...

...

...

...

...

#0 ...

#1

#2

#3

#224-1

bit 0 bit 1 bit 31

ATTENZIONE al concetto di registro della RAM

(9)

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

Rappresentazione delle Informazioni

m

Tutte le informazioni sono rappresentate attraverso sequenze di bit

m

Esempio:

ðnumero -57 su 16 bit 1111111111000111 ðcarattere ‘A’ su 8 bit

10000001

m

Opportune “codifiche”

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Rappresentazione delle Informazioni

m

Codifica (o Codice)

ðinsieme di regole per rappresentare oggetti con altri oggetti

ðin questo caso: lettere, numeri, immagini ecc.

attraverso sequenze di bit

m

Interazione con il calcolatore

ðl’utente ha l’impressione di lavorare con oggetti familiari (parole, cifre, ecc.)

ðrappresentazione interna in forma di bit

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

(10)

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

Rappresentazione dei Numeri

m

Rappresentazione dei num. interi positivi

ðrappresentazione posizionale in base 2 ðsemplice (simile a quella dei numeri

decimali): ogni bit è una cifra

m

Rappresentazione dei num. interi relativi

ðcodifica in “complemento a 2”

ðregole complesse

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

20

Rappresentazione dei Numeri

m

Rappresentazione dei numeri reali

ðcodifica in “virgola mobile”

ðil numero viene rappresentato attraverso due altri numeri mantissa ed esponente

ðN = m 2e, con 1/2 <= m < 1 ðes: 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

(11)

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

Alcune Interessanti Considerazioni

m

I Considerazione

ðnumeri di tipo diverso vengono rappresentati in modo completamente diverso

m

II Considerazione

ðla rappresentazione in virgola mobile è

esponenziale (i valori crescono rapidamente)

m

II Considerazione

ðalcuni numeri reali non possono essere rappresentati in modo esatto

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Rappresentazione dei Numeri

m

In particolare

ðla rappresentazione in virgola mobile

consente di rappresentare solo un numero fissato di cifre decimali

ðalcuni numeri (es: 1/3) devono essere approssimati “troncando” le cifre decimali ðquesto introduce errori nella

rappresentazione e quindi nei calcoli

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

(12)

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

Rappresentazione dei Caratteri

m

Codice ASCII a 7 bit

ðal carattere è associato un num. tra 0 e 127 ðla rappr. del carattere coincide con quella del

numero

ðnota: vale anche per le cifre (0-9) ed i caratteri speciali (es: +)

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

‘A’ 65 1000001

‘0’ 48 0011000

NOTA: differenza tra il carattere ‘2’ e il numero 2

24

Rappresentazione dei Caratteri

m

Limiti del codice ASCII a 7 bit

ðnumero di caratteri rappresentabili molto basso (non include lettere accentate)

m

Codice ASCII a 8 bit (“Extended ASCII”)

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

m

Al giorno d’oggi

ðcodice UNICODE (16 bit o superiore)

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

(13)

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

Concetti Introduttivi: Architettura >> Rappresentazione delle Informazioni

Tabella dei Codici ASCII Estesi

Riassumendo

m

Architettura di Von Neumann

ðRapporto tra processore, RAM e periferiche

m

Memoria RAM

ðBit, byte e multipli, registri

m

Rappresentazione delle Informazioni

ðRappresentazione dei numeri

ðParticolarità nella rappresentazione ðCodice ASCII

Concetti Introduttivi: Architettura >> Sommario

(14)

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

Termini della Licenza

m 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

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

Riferimenti

Documenti correlati

Concetti Introduttivi: Linguaggi &gt;&gt; Ciclo di Vita di un Programma.. Mecca - Programmazione Procedurale in Linguaggio

ðDefinizione di Funzioni ðDefinizione di Procedure ðChiamata di Funzioni ðChiamata di Procedure ðPassaggio dei Parametri ðProgrammazione Modulare. Termini

Strutture di Dati: Lista &gt;&gt; Rappresentazione con Record e Array. ATTENZIONE ai

 Simile alla struttura a microkernel ma più efficiente perchè i moduli non richiedono l’invio di messaggi per la comunicazione.. I moduli caricabili di

 Simile alla struttura a microkernel ma più efficiente perchè i moduli non richiedono l’invio di messaggi per la comunicazione. I moduli caricabili di

a) la verifica della compatibilità tra misure diverse dello stesso parametro b) la misura indiretta di una grandezza con misurazioni su altri parametri c) la misura di

In tal senso sarà sufficiente cliccare due volte con il tasto sinistro del mouse sull’icona che rappresenta il database di Microsoft Access (file con estensione

Ogni elemento di tale lista rappresenta una variabile statistica, per cui length() restituisce il numero delle variabili, mentre names() i rispettivi nomi; `e anche