UNITA’ DI MISURA DI BASE IN INFORMATICA
L’unità informatica di base è il BIT, che rappresenta una variabile di tipo BOOLEANO, ovvero una
variabile che può assumere due soli valori: 0 o 1 (vero o falso, acceso o spento); questo perché i
circuiti e i componenti hardware “ragionano” in termini binari. Ad es, il numero 16, in binario si scrive
10000 , mentre il numero 10 in binario diventa 1010.
L’algebra di base dei sistemi informatici è detta ALGEBRA DI BOOLE e si basa su tre operazioni di
base:
-AND: ritorna VERO se entrambi i valori sono VERI
- OR: ritorna VERO se uno dei valori è VERO
- NOT: ritorna l’opposto del valore immesso
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
NOT 0 = 1
NOT 1 = 0
UNITA’ DI MISURA DI BASE IN INFORMATICA
Nel campo della programmazione, i bit vengono elaborati in gruppi di 8, che rappresentano l’unità di
valore più utilizzata in assoluto in informatica, ovvero il BYTE (BYnary TErm).
Un byte è quindi formato da un gruppo di 8 bit, ognuno con valore 0 o 1,
e può rappresentare valori numerici da 00000000 (0) a 11111111 (255)
Per amor di precisione, va detto che non tutti i sistemi informatici utilizzano byte formati da 8 bit;
quindi sarebbe più preciso definire come ottetto un gruppo di 8 bit.
Ma siccome i sistemi che usano byte di dimensioni diverse da 8 bit sono molto rari e in genere desueti,
l’assioma 1 byte = 8 bit, seppure non preciso, è generalmente e universalmente accettato.
I multipli del byte più utilizzati sono:
Kilobyte (kB) : 1024 byte
Megabyte (MB): 1024 kB
Gigabyte (GB): 1024 MB
Terabyte (TB): 1024 GB
Petabyte (PB): 1024 GB
RAPPRESENTAZIONE DEI NUMERI
In informatica, per la rappresentazione dei numeri, si usa spesso la NOTAZIONE POSIZIONALE.
Nel sistema DECIMALE, il numero 1024 si può rappresentare come 1*10^3 + 0*10^2 + 2*10^1 +
4*10^0
Nel sistema BINARIO, il numero 1024 si scrive 10000000000 e si può rappresentare come 1*2^10 +
0*2^9 + … + 0 * 2^0.
Nel caso dei NUMERI INTERI, avendo a disposizione un numero n di bit, il nostro numero potrà
assumere un valore massimo pari a 2^n (unsigned). Nel caso in cui si tenga conto anche del segno
(signed, quindi il nostro numero può assumere valori anche negativi) avremo a disposizione un bit in
meno (riservato al segno), per cui il valore massimo rappresentabile sarà pari a +/- 2^(n-1).
Se il numero da rappresentare è maggiore di quello massimo rappresentabile dai nostri n bit, si genera
un errore di OVERFLOW.
Nel caso dei NUMERI REALI, si usano due diverse rappresentazioni:
•IN VIRGOLA FISSA
•IN VIRGOLA MOBILE
RAPPRESENTAZIONE DEI NUMERI
VIRGOLA FISSA: un bit viene riservato al segno, mentre per la porzione intera e quella frazionaria
vengono riservati i restanti bit.
segno
Parte intera
Parte Frazionaria
VIRGOLA MOBILE: il numero viene rappresentato come una MANTISSA moltiplicata per una
BASE elevata ad un ESPONENTE. Nuovamente, un bit è riservato al segno.
A=M*b
E
Ad esempio, il numero 134,56 può essere rappresentato come 1,3456 * 10^2, che equivale a spostare
di due posti la virgola del numero.
Si ricordi che in informatica, b è quasi sempre 2.
RAPPRESENTAZIONE DEL TESTO
In informatica, il testo si rappresenta
nuovamente utilizzando i bit. Viene
quindi CODIFICATO secondo vari
standard, nei quali ad ogni numero viene
associato un simbolo.
Lo standard più semplice per la
rappresentazione del testo è la codifica
ASCII (American Standard Code for
Information Interchange), dove ad ogni
simbolo è associato un preciso numero.
La codifica ASCII prevede 128 siboli (7
bit), ma più spesso si utilizza la Extended
ASCII, dove si usa 1 byte (8 bit) per la
codifica dei caratteri, portando il numero
totale di simboli a 256.
RAPPRESENTAZIONE DEL TESTO
Attualmente, il sistema di codifica più utilizzato è l’UNICODE, in cui ogni simbolo
viene rappresentato con 2 byte, con potenzialità di rappresentazione pari a 65536
simboli.
Nei sistemi ipertestuali, il testo può anche essere FORMATTATO, spesso tramite
l’utilizzo di TAGS, come accade nel linguaggio HTML, dove la formattazione avviene
appunto racchiudendo porzioni di testo tra tags di formattazione.
Ad esempio la porzione di testo formattato il cielo è blu in HTML si ottiene in questo
modo:
il <b>cielo</b> è <u>blu</u>.
RAPPRESENTAZIONE DELLE IMMAGINI
In informatica, le immagini vengono rappresentate come MATRICI di PIXEL.
A seconda della codifica di colore, ogni
PIXEL può essere rappresentato da 1 o più
bits.
Nella codifica BITMAP (bianco e nero),
ogni pixel può essere o bianco o nero, per
cui 1 bit è sufficiente a rappresentarlo.
Nella codifica RGB, ogni pixel può
assumere un valore da 0 a 255 (2^8) per
ognuno dei 3 colori (Red, Green, Blue).
Per cui ogni pixel richiede un minimo di
24 bit (32 per il formato ARGB, in cui 1
byte serve per la trasparenza).
HARDWARE - SOFTWARE
La parte “rigida” del computer, ossia la parte “fisica”.
Comprende tutto ciò che nel PC ha entità materiale.
La parte “soffice” del computer, ossia la parte che comprende i
programmi, i dati ecc.
La maggior parte dei computer moderni si basa sulla
ARCHITETTURA DI VON NEUMANN
Si tratta di una schematizzazione teorica ma tutt’ora valida che prende il nome dal matematico
ungherese John von Neumann (1903 – 1957), basata sui seguenti componenti:
- CPU, contenente un’unità aritmetico logica (ALU) ed un’unità di controllo
- Memoria (RAM)
- Unità di input, che riceve i dati dall’esterno
- Unità di output, che restituisce i dati elaborati dalla macchina
- BUS, un canale di interconnessione che permette il flusso dei dati all’interno della macchina.
Memoria
Unità di
controllo
ALU
accumulator
Input
Output
L’Hardware di un computer comprende l’UNITA’ CENTRALE e le
PERIFERICHE.
L’unità centrale è costituita da 3 parti principali:
- processore: il nucleo di elaborazione che si occupa di interpretare le informazioni
- memoria volatile: è la memoria in cui il computer immagazzina temporaneamente le
informazioni in fase di elaborazione (RAM)
- memoria di massa: memorie di grande capacità in cui i dati vengono immagazzinati e
conservati al termine delle elaborazioni (Hard Disk, Floppy, ZIP Disk, CD-ROM).
IL PROCESSORE o CENTRAL PROCESSING UNIT (CPU)
Si occupa di leggere le istruzioni e i dati dalla memoria ed eseguire le istruzioni.
All’interno di qualsiasi CPU vi sono almeno le seguenti sottounità:
- ALU (Unità Aritmetico-Logica) che si occupa di eseguire le operazioni logiche e aritmetiche;
- Unità di Controllo che legge dalla memoria le istruzioni, se occorre legge anche i dati per
l'istruzione letta, esegue l'istruzione e memorizza il risultato se c'è, scrivendolo in memoria o in un
registro della CPU.
- Registri che consistono in piccole e veloci memorie in cui vengono “parcheggiati” temporaneamente
i dati. I due principali sono:
• Program Counter (PC): memorizza la successiva istruzione da eseguire
in una sequenza di istruzioni
• Instruction Register (IR): registra l’operazione attualmente in corso di
esecuzione.
IL PROCESSORE o CENTRAL PROCESSING UNIT (CPU)
Oltre a queste possono esserne presenti altre, per esempio:
- FPU (Floating Point Unit): si occupa di eseguire calcoli in virgola mobile;
- MMU (Memory Management Unit):si occupa di tradurre gli indirizzi di memoria logici in indirizzi
fisici, supportando la protezione della memoria e/o uno o più meccanismi di memoria virtuale.
NB: numero in virgola mobile.
Il numero in virgola mobile (floating point) è la rappresentazione dei numeri razionali
usata dai processori per compiere operazioni matematiche.
Un numero in virgola mobile è costituito da una mantissa ed un esponente, associati
spesso ad un segno.
Indicando con b la base utilizzata, un numero in virgola mobile a risulta espresso da:
a = M x bE
Es: 3,4512 * 10 5
4
34,512 * 10
Nei calcolatori quasi sempre b = 2.
IL PROCESSORE o CENTRAL PROCESSING UNIT (CPU)
CICLO DEL PROCESSORE
BOOTSTRAP
FETCH
Operazioni eseguite all’avvio del processo, quindi non propriamente parte del ciclo
Carica dal Program Counter la prossima istruzione da eseguire
DECODE
Decodifica l’istruzione e ne prepara l’esecuzione
EXECUTE
Esegue l’istruzione e salva il risultato nei registri
IL PROCESSORE o CENTRAL PROCESSING UNIT (CPU)
ISTRUZIONI
Ad ogni modello di processore sono associate delle precise ISTRUZIONI BINARIE,
ognuna delle quali corrisponde ad un’operazione elementare che il processore è in grado
di fare.
L’insieme delle istruzioni costituisce SET DI ISTRUZIONI (instruction set) della CPU.
Tali istruzioni sono scritte in LINGUAGGIO MACCHINA.
Il linguaggio di programmazione più vicino al linguaggio del
processore è l’ASSEMBLY (a.k.a ASSEMBLER), un
linguaggio di programmazione a BASSO LIVELLO il cui
scopo è astrarre le istruzioni binarie del processore in una serie
di comandi.
IL PROCESSORE o CENTRAL PROCESSING UNIT (CPU)
UNITA’ DI MISURA PER LA VELOCITA’ DEI PROCESSORI
Velocità (o frequenza) di clock: indica il numero di operazioni eseguite al secondo.
Si misura in cicli al secondo (o hertz).
Un processore (nb: single core) a 3 gHz può eseguire oltre 3 miliardi di operazioni al
secondo.
FLOPS: indica il numero di operazioni in virgola mobile eseguite al secondo.
Si ipotizza che il cervello umano abbia una capacità di calcolo (stimata) approssimabile ad 1
teraflop.
BENCHMARK: software per l’analisi delle prestazioni di un componente
hardware.
IL PROCESSORE o CENTRAL PROCESSING UNIT (CPU)
WORD (PAROLA)
Il termine WORD o PAROLA indica semplicemente un gruppo di bit che funge da unità di
misura fondamentale per il tipo di dati usati da un determinato computer.
A seconda delle architetture, i computer possono gestire parole di differenti lunghezze ( i
processori recenti hanno per lo più parole di 32 o 64 bit).
I registri dei microprocessori sono quasi sempre costituiti parole.
Per questo motivo, un’architettura a 32 bit può indirizzare al massimo 4 Gb di RAM.
2^32 = 4.294.967.296 byte / 1024 = 4.194.304 kB / 1024 = 4.096 MB / 1024 = 4 GB
RANDOM ACCESS MEMORY (RAM)
La RAM è un tipo di memoria volatile ad accesso casuale:
- per “volatile” si intende che i dati in essa contenuti vengono persi nel momento in cui la
RAM non è più alimentata;
- per “accesso casuale” si intende che in essa è possibile leggere e scrivere dati senza dover
rispettare una precisa sequenza di accesso, come invece avverrebbe, ad esempio, in un
supporto a nastro magnetico;
Esistono due tipi principali di RAM:
-SRAM (Static Random Access Memory): molto veloce, non necessita di costante refresh, ma
molto costosa, utilizzata principalmente come memoria cache
-DRAM (Dynamic Random Access Memory): Un blocco di DRAM è costituito teoricamente
da molte migliaia di condensatori associati a transistor, anche se nella pratica si utilizzano le
proprietà dei semiconduttori al posto di veri e propri condensatori. Poiché i “condensatori”
perdono costantemente la loro carica elettrica, è necessario operare continuamente con un
“refresh” dei dati presenti.
RANDOM ACCESS MEMORY (RAM)
La RAM è organizzata FISICAMENTE come una griglia di
condensatori organizzati in una matrice formata da x righe per y
colonne: il numero che esprime la posizione della locazione nella
griglia è definito “indirizzo” di memoria della cella (o più
precisamente “locazione di memoria”).
Per localizzare una cella di RAM, è necessario che
vengano reperiti gli indirizzi della RIGA (istruzione
RAS) e della COLONNA (istruzione CAS); il tempo
necessario per reperire le coordinate riga-colonna,
ovvero per eseguire le istruzioni RAS e CAS, si
definisce TEMPO DI LATENZA della RAM.
RAS: Row Access Strobe
CAS: Column Access Strobe
RANDOM ACCESS MEMORY (RAM)
La memoria RAM è una memoria AD ACCESSO DIRETTO. Ovvero
è possibile accedere direttamente ad ogni singola locazione.
L’indirizzamento della RAM avviene tramite un singolo
numero, che esprime la posizione della cella di
memoria, la cui lunghezza massima dipende
dall’architettura in uso.
Ad esempio, in un’architettura a 32 bit, il massimo
indirizzo di memoria registrabile è 2^32 =
4.294.967.296 = 4 gb.
Qualora fossero disponibili celle di memoria con
indirizzo superiore a 2^32, queste non sarebbero
indirizzabili e quindi risulterebbero inutilizzabili.
RANDOM ACCESS MEMORY (RAM)
Le RAM dei PC moderni sono di tipo SDRAM (Synchronous Dynamic Random Access
Memory), che si differenziano dalle precedenti DRAM per l’accesso di tipo sincrono.
Infatti, le operazioni avvengono in sincronia con i cicli di clock del processore, rendendole
molto veloci.
In più, sono di tipo DDR (Double Data Rate), essendo organizzate in due banchi separati,
uno contenente le posizioni pari, l’altro le dispari. Per ogni ciclo di clock, è possibile
effettuare due accessi alla memoria, contro il singolo accesso delle memorie non DDR,
ottenendo un raddoppio (teorico) delle prestazioni.
Tipicamente, i moduli di RAM contengono un meccanismo di controllo degli errori (ECC
Error Correction Code), ad es. tramite l’uso di bit di parità.
RANDOM ACCESS MEMORY (RAM)
BIT DI PARITA’
E’ il più semplice sistema di controllo degli errori presente nelle RAM.
Prevede l’aggiunta di un ulteriore bit aggiunto ad ogni singola byte trasmesso.
-Se nel byte il numero di bit a 1 è pari, il bit di parità sarà 0
-Se nel byte il numero di bit a 1 è dispari, il bit di parità avrà valore pari a 1
110000110
111000111
110000111
ERRORE
Se si verificano contemporaneamente due errori di trasmissione, può accadere che il bit di parità non
rilevi l’errore, per cui esistono anche sistemi di rilevamento degli errori più sofisticati, come la
distanza di Hamming
RANDOM ACCESS MEMORY (RAM)
DISTANZA DI HAMMING: indica il numero di bit corrispondenti come posizone ma
differenti come valore presenti tra due byte o due parole.
11000011
11110011
Distanza di Hamming = 2
11000011
11111111
Distanza di Hamming = 4
RANDOM ACCESS MEMORY (RAM)
Banchi di memoria: si tratta di schede stampate contenenti normalmente da 8 a 16 chip di
memoria RAM.
SIMM: acronimo di Single In-line Memory Module, è caratterizzata dalla presenza dei
contatti (fino a 72) su un solo lato della scheda.
DIMM: acronimo di Dual In-line Memory Module, è caratterizzata dalla presenza dei
contatti su entrambi i lati della scheda, in genere 84 per ciascuna faccia dello stampato.
SO-DIMM: acronimo di Small Outline Dual In-line Memory Module, sono banchi di
memoria di tipo DIMM, ma caratterizzati da dimensioni all’incirca dimezzate; molto
utilizzate nei portatili.
MEMORIA CACHE
Si tratta di un tipo di memoria, generalmente molto veloce (SRAM) ma di dimensioni
ridotte rispetto alla memoria totale di sistema, che funge da “parcheggio” temporaneo dei
dati correntemente in uso.
Un esempio tipico di memoria cache è quella che si trova spesso interposta tra il processore
e la memoria RAM di un PC.
CPU
cache
RAM
-La CPU richiede i dati alla cache
-Dato presente: viene caricato subito
-Dato non presente: viene richiesto alla
RAM e caricato nella cache, che lo
reindirizza al processore
MEMORIE DI MASSA: HARD DISK
Si tratta di un sistema di archiviazione dei dati su supporto elettromeccanico.
E’ costituito da:
- uno o più dischi di alluminio o vetro rivestiti da materiale ferromagnetico ed in grado di
ruotare ad alta velocità.
- due testine per ciascun disco (una per lato), che si muovono a distanza estremamente
ridotta dalla superficie dei dischi (pochi nanometri) sostenute dal cuscino d’aria creato dalla
rapida rotazione dei piatti, effettuando le operazioni di lettura e/o scrittura.
HARD DISK – Divisione logica
Piatto: ciascuna superficie di un singolo disco dell’hard disk
HARD DISK – Divisione logica
Tracce: serie di anelli concentrici in cui ciascun piatto è diviso
HARD DISK – Divisione logica
CILINDRO
Cilindro: insieme di tracce equidistanti dal centro presenti su tutti i
piatti
HARD DISK – Divisione logica
Settore: serie di “spicchi” in cui ogni piatto viene suddiviso
HARD DISK – Divisione logica
Blocco: intersezione tra un settore ed una traccia di un piatto; ogni
blocco si identifica con le coordinate CHS (Cylinder/Head/Sector).
HARD DISK – Divisione logica
Cluster: insieme di blocchi contigui
MEMORIE DI MASSA: HARD DISK
Le principali caratteristiche sono:
- Capacità (in multipli del byte)
- Tempo di accesso (in millisecondi)
- Velocità di trasferimento (in multipli del byte al secondo)
HARD DISK – CAPACITA’
La capacità del tipico hard disk moderno si misura in gigabyte (GB).
Teoricamente: 1 GB = 1024 MB = 1024*1024 KB = 1.073.741.824 byte
Nel caso della capacità dichiarata degli HD i produttori applicano un differente criterio,
dove 1 GB = 1.000.000.000 byte.
Si applica quindi un fattore di correzione dato da (1000/1024)^3 = 0,93
Un HD da 60 GB (60.000.000.000 di
bytes), ha una capacità reale di 55,8 GB
Un HD da 250 GB ha una capacità reale di
232,5 GB.
HARD DISK – TEMPO DI ACCESSO
Tempo medio necessario per reperire un dato presente in un punto a caso del disco.
Dipende da:
- Velocità di movimento delle testine (seek time)
- Velocità di rotazione del disco (latency time)
HARD DISK – VELOCITA’ DI TRASFERIMENTO
Quantità di dati trasferiti in una unità di tempo.
Dipende da:
- Densità di memorizzazione dei dati
- Velocità di rotazione del disco
MEMORIE DI MASSA: CD-ROM
Costituito da un disco di policarbonato trasparente, ricoperto da resina termoplastica, sul
quale i dati sono organizzati tramite un sistema di “lands” e “pits” in una spirale continua
che parte dal centro del disco.
Capienza compresa tra 650 e 700 MB (870 per i CD da 100 min), dipendente dalla densità delle
lands/pits sulla spirale
MEMORIE DI MASSA: DVD
Evoluzione del CD, il DVD è caratterizzato da capienze e velocità di trasferimento
dei dati molto superiori.
Capienza compresa tra 4,7 e 17 GB.
• DVD-5: 4.7 GB Singolo lato e singolo strato
• DVD-9: 8.5 GB Singolo lato e doppio strato
• DVD-10: 9.4 GB Doppio lato e singolo strato
• DVD-18: 17 GB Doppio lato e doppio strato
Velocità di trasferimento:
DVD 1x = 1350 kB/sec
CD 1x = 150 kB/sec
MEMORIE DI MASSA: BLU-RAY
Evoluzione del DVD, grazie all’uso di laser a luce blu (405 nm contro i 605 della
luce rossa), può attualmente contenere fino a 50 GB di dati su due strati.
In fase di studio vi sono BLU RAY a 8 strati, con una capienza teorica di oltre 200
GB (limite teorico del Blu-Ray: 500 GB).
La velocità di trasferimento a 1x è di circa 4,5 MB/sec.
Il 19/2/2008 ha definitivamente vinto la gara con il formato HD-DVD e si è affermato come
(futuro) successore del DVD.
MEMORIE DI MASSA: PEN DRIVE
Memoria di massa dalle dimensioni molto ridotte che si connette ad un computer
tramite l’interfaccia USB.
Utilizza un protocollo generico chiamato USB Mass Storage Protocol, incluso nel
File System di tutti i sistemi operativi moderni.
E’ costituita da un connettore USB ed una memoria di tipo FLASH, connessi da
una circuiteria che si occupa della comunicazione tra i due componenti.
Essendo un tipo di memoria di massa priva di componenti mobili, è
particolarmente indicata al trasporto, in quanto molto resistente al danneggiamento
e all’usura.
USB 1.1 → 12 Mbit/sec ≈ 1,5 MB/sec
USB 1.2 → 480 Mbit/sec ≈ 60 MB/sec
SCHEDA MADRE
Circuito stampato di grandi dimensioni che raccoglie tutta la
circuiteria elettrica tramite la quale è possibile la comunicazione tra
i componenti di un computer.
SCHEDA MADRE
CPU SOCKET: alloggiamento della CPU.
ROM: contiene il BIOS, un firmware (programma contenuto direttamente in un
componente elettronico) che si occupa della gestione a basso livello dell’hardware del PC.
NORTHBRIDGE: interfaccia il processore con la RAM ed i bus di espansione (PCI, PCIE, AGP) e con i connettori ATA/SATA.
SOUTHBRIDGE: interfaccia il Northbridge con le interfacce a bassa velocità (seriali,
parallele, PS2, USB, Ethernet).
Slot di memoria: alloggiamenti per i blocchi di memoria RAM.
Bus di espansione: slot dedicati all’alloggiamento delle schede di espansione (PCI, PCI-E,
AGP).
Interfacce: seriali, parallele, PS/2, USB, Firewire, ATA, SATA, SCSI.
Le Periferiche di un computer sono dispositivi di INPUT/OUTPUT
collegati al computer per la comunicazione con l’esterno.
Le più comuni periferiche sono:
- Tastiera
- Mouse
- Monitor
- Modem
- Stampante
- Altre