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