Concetti Introduttivi Architettura del Computer http://www.dia.uniroma3.it/~roselli/ [email protected] Credits • Materiale a cura del Prof. Franco Milicchio 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 computer • Il software, effettivamente, specifica operazioni che vengono eseguite dall’hardware Architettura Dispositivi di uscita (audio, video, ...) Dispositivi di ingresso (mouse, tastiera, ...) Memoria di massa (DVD, penne USB, ...) Architettura Memoria RAM Memoria di massa (hard disk, SSD, ...) Processore (detto anche CPU) Dispositivi ausiliari (batterie, ...) Architettura Memoria RAM Dispositivi di ingresso Memoria di massa Processore Dispositivi ausiliari (batterie, ...) Architettura di Von Neumann • Architettura Interna • Architettura dei componenti dell’unità centrale • Architettura di “Von Neumann” ideata dal matematico e fisico John Von Neumann • L’architettura di tutti i calcolatori moderni (dagli anni ’50 ad oggi) • Tre componenti fondamentali: processore, memoria RAM, e interfacce delle periferiche Architettura di Von Neumann Bus di sistema RAM CPU Output Input Processore • CPU (Central Processing Unit) • È il circuito elettronico integrato che effettua calcoli • Responsabile di tutte le operazioni • Legge e scrive dati dalla memoria RAM • Effettua operazioni aritmetiche • È in grado di pilotare le periferiche Intel Core2 Duo @ 2.13 GHz Interfacce verso Periferiche • Circuiti a cui sono connesse le periferiche • Memorie di massa • Dispositivi di ingresso/uscita • Il processore comanda l’interfaccia attraverso il bus di sistema • L’interfaccia si occupa di gestire la comunicazione con la periferica Via Technologies Southbridge Memoria RAM • Random Access Memory • Memoria di lavoro per la CPU • Circuito elettronico capace di mantenere uno stato (i.e., dati) in presenza di alimentazione • Memorizza lo stato di segnali elettrici • Volatile: perde lo stato in assenza di tensione • Attenzione: le elaborazioni del processore avvengono esclusivamente su dati nella RAM Architettura di Von Neumann • La CPU acquisisce dati dalle periferiche (e.g., di ingresso, 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 Architettura di Von Neumann: Esempio • Esempio: elaborazione di un documento • Il documento è salvato su disco • Viene aperto il file e caricato nella RAM • Vengono effettuate modifiche • Il contenuto della RAM e quello del disco sono ora disallineati • Al termine delle modifiche è necessario salvare la nuova versione sul disco Memoria RAM: Funzionamento • Composta di numerosi circuiti (a celle) • Ogni cella è capace di memorizzare un bit di informazione • Bit (“Binary Digit”) • unità di memorizzazione per il calcolatore • può valere 1, oppure 0 • facilmente rappresentabile con un segnale elettrico Rappresentazione Binaria • Con un bit • due valori (0 e 1) • Con due bit • quattro valori (00, 01, 10, 11) • Con tre bit • otto valori (000, 001, 010, ..., 110, 111) • Con n bit 2n valori (e.g., 16 bit rappresenta al massimo 65536 valori: 0…216-1) Unità di Misura • Bit, valore 0, 1 • Byte: 8 bit (unità convenzionale di riferimento) • KiloByte: 1024 byte (1024 byte) • 1024 ∙ 8 bit = 8192 bit • MegaByte: 1024 KiloByte (1 milione di byte ca.) • circa 8 milioni di bit • GigaByte: 1024 MegaByte (1 miliardo di byte ca.) Struttura della RAM • Bit organizzati in registri • Registro è a 16, 32 o 64 bit bit 0 bit 31 0 1 2 ... ... ... • Ogni registro ha un suo indirizzo • Esempio: ... • 64MByte di RAM • ca. 64 milioni di byte 2^24-1 • ca.16 milioni di registri da 32 bit (224 registri) ... Rappresentazione delle Informazioni • Tutte le informazioni sono rappresentate attraverso sequenze di bit • Numero -57 su 16 bit è 1111111111000111 • Carattere ‘A’ su 8 bit è 10000001 • Opportune codifiche per rappresentare strutture dati più complesse Rappresentazione delle Informazioni • Una codifica (o codice) è un insieme di regole per rappresentare oggetti con altri oggetti • In questo caso: lettere, numeri, immagini, attraverso sequenze di bit • Interazione con il calcolatore • L’utente ha l’impressione di lavorare con oggetti familiari (e.g., parole, cifre) • Rappresentazione interna in forma di bit Rappresentazione dei Numeri • Rappresentazione dei numeri interi positivi • Rappresentazione posizionale in base 2 • Semplice (simile a quella dei numeri decimali): ogni bit è una cifra • Rappresentazione dei numeri interi relativi • Codifica in “complemento a 2” • Regole complesse Rappresentazione dei Numeri • 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 = 1 ∙ 211 = 1/2 ∙ 212 • 2048 viene rappresentato mettendo assieme la rappresentazione di 1/2, ovvero (0.1)2, e la rappresentazione di 12, ovvero (1100)2 Considerazioni • Numeri di tipo diverso vengono rappresentati in modo completamente diverso • La rappresentazione in virgola mobile è esponenziale (i valori crescono rapidamente) • La maggioranza dei numeri reali non possono essere rappresentati in modo esatto • La precisione dei numeri reali rappresentati è maggiore per numeri piccoli, e bassa per numeri (in valore assoluto) grandi Rappresentazione dei Caratteri • Codice ASCII (American Standard Code for Information Interchange) a 7 bit • Ad ogni carattere è associato un numero tra 0 e 27-1=> 128 valori • Nota bene: le cifre (0, 1, ..., 9) ed i caratteri speciali (es: +) sono caratteri Carattere Valore numerico Valore in binario A 65 1000001 0 48 0011000 Rappresentazione dei Caratteri • Limiti del codice ASCII a 7 bit • Numero di caratteri rappresentabili molto basso (non include lettere accentate) • Codice ASCII a 8 bit, o Extended ASCII • Ad ogni carattere è associato un numero tra 0 e 255 • Caratteri rappresentabili degli alfabeti occidentali • Al giorno d’oggi codice UNICODE (16 bit o superiore) prevede alfabeti non occidentali, e.g., arabo, giapponese, devanagari, cirillico, etc. Extended ASCII Memorie • La RAM è volatile, non mantiene i dati in assenza di tensione elettrica • La dimensione è ridotta, nell’ordine dei GB (1-20 GB) • La memoria di massa, al contrario, è persistente • La dimensione è notevolmente superiore, arrivando ai TB (200 GB-2000 GB) • La RAM è molto veloce (nanosecondi) • La memoria di massa è lenta (millisecondi) Hardware & Software • Il software è un insieme di programmi eseguiti dal sistema hardware • Software di base (sistema operativo, e.g., Windows, MacOS X, Linux) • Software applicativo (e.g., Word, un browser, i programmi da voi scritti) Software Applicativo Software di Base Hardware