Corso di Informatica (B) (Scienze e Tecniche Psicologiche) a.a. 2009/2010 Organizzazione di un computer Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 185 – I Torino baldoni[at]di[dot]unito[dot]it
Livelli come astrazioni Un computer è una macchina programmabile, tuttavia esso non è direttamente utilizzabile da parte degli utenti poiché richiederebbe la conoscenza sull’organizzazione fisica della specifica macchina e del suo linguaggio macchina Ogni machina avrebbe le sue differenti caratteristiche Il linguaggio macchina è estremamente complicato e non di facile gestione Linguaggio Macchina Utente ? ??
Livelli come astrazioni In altre parole desideriamo astrarci dai dettagli fisici della macchina in oggetto e dal suo specifico linguaggio macchina L’idea è quella di realizzare al di sopra della macchina reale una macchina virtuale astratta che abbia le funzionalità desiderate e che sia facile da utilizzare per l’utente L’utente interagisce con la macchina virtuale, ogni comando viene poi tradotto nei corrispondenti comandi sulla macchina fisica La macchina virtuale è realizzata mediante software (programmi) traduzione in LM Software Macchina Virtuale Utente Linguaggio Macchina
Livelli come astrazioni La macchina virtuale viene realizzata in genere mediante il software di base: Sistema Operativo: file system, memoria, cpu, risorse ausiliarie, comunicazione Linguaggi e ambienti di programmazione ad alto livello: interpreti e compilatori Non vi sono limiti al numero e al tipo di macchine virtuali che possono essere realizzate In genere nelle macchine moderne sono strutturate su più livelli (struttura a cipolla) traduzione in LM Software Macchina Virtuale Utente Linguaggio Macchina traduzione Software Macchina Virtuale
Livelli come astrazioni In termini un po’ più astratti, detto: I h l’insieme delle istruzioni che costituiscono il linguaggio LM della macchina virtuale del livello h M h l’insieme delle istruzioni utilizzabili al livello h, ma mascherate nei confronti dei livelli superiori C h l’insieme dei comandi implementati a livello h utilizzando il linguaggio macchina I h Il linguaggio macchina I h+1 della macchina virtuale di livello h+1 puo’ essere definito nel modo seguente: I h +1 = I h + C h - M h traduzione in LM Software Macchina Virtuale Utente Linguaggio Macchina traduzione Software Macchina Virtuale h=1 h=0
Livelli come astrazioni Un browser è un programma Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo Per la visualizzazione delle pagine un browser che per farlo si appoggia al software di base Il software di base si appoggia alla macchina fisica per realizzare effettivamente il “rendering” della pagina su video traduzione in LM Software Macchina Virtuale Utente Linguaggio Macchina traduzione BROWSER Macchina Virtuale
Interpretazione Interprete (JavaScript, Scheme, Prolog, php, asp): Interazione. Più facile modificare un programma durante l'esecuzione Sparc/Solaris Apple Codice Sorgente Interprete Sparc/Solaris Interprete MacOS Interprete Intel/GNU-Linux Intel/Windows
Interpretazione Affinché le due persone di lingua diversa possano dialogare tra di loro (nel caso nessuna delle due conosca la lingua dell’altro) è necessario che qualcuno interpreti (traduca sul momento) quanto dice una persona nella propria lingua nella lingua di chi ascolta Si interpreta quando è necessario una stretta interazione, quando si desidera dialogare e non solo trasmettere un messaggio
Traduzione o compilazione Compilazione (Pascal, C, Ada, C++): Efficienza di esecuzione. Il codice generato dal compilatore può essere ottimizzato, perché la compilazione è fatta una sola volta Compilatore Sparc/Solaris Compilatore MacOS Compilatore Intel/GNU-Linux binario Intel/GNU- Linux Intel/Wind Apple Sparc/Solaris Codice Sorgente
Traduzione o compilazione La traduzione è adatta per comunicare messaggio, come ad esempio una lettera Anche per effettuare una traduzione è necessario l’intervento di qualcuno che sia in grado di comprendere le frasi di un linguaggio e riportarle in un altro ma questo può operare in tempi separati rispetto la scrittura del messaggio e la sua lettura La lettura è più rapida e semplice, il traduttore ha senz’altro avuto tempo per meglio adattare il testo ma si penalizza l’interattività
Architettura e organizzazione L'insieme di tipi di dati, operazioni e caratteristiche di ogni livello si chiama architetura Lo studio dei come progettare le parti di un sistema che sono visibili ai programmatori si chiama architettura dei calcolatori Organizzazione, relazioni strutturali tra le unità funzionali di una data architettura (non visibile al programmatore) Spesso il termine organizzazione è usato come sinonimo di architettura
Livelli come astrazioni In termini un po’ più astratti, detto: I h l’insieme delle istruzioni che costituiscono il linguaggio LM della macchina virtuale del livello h M h l’insieme delle istruzioni utilizzabili al livello h, ma mascherate nei confronti dei livelli superiori C h l’insieme dei comandi implementati a livello h utilizzando il linguaggio macchina I h Il linguaggio macchina I h+1 della macchina virtuale di livello h+1 puo’ essere definito nel modo seguente: I h +1 = I h + C h - M h traduzione in LM Software Macchina Virtuale Utente Linguaggio Macchina traduzione Software Macchina Virtuale h=1 h=0
Livelli come astrazioni Ogni livello nasconde i dettagli non necessari e costituisce l'insieme di astrazioni rilevnti per il livello superiore Ogni livello è costituito da un insieme di componenti e da un insieme di modi per combinare i componenti in strutture Le strutture così costruite rappresentano l'astrazione realizzata dal livello e costituiscono le entità su cui si opera a livello superiore Questo, a sua volta, le aggrega in modo da formare entità ancora più astratte per il livello soprastante. traduzione in LM Software Macchina Virtuale Utente Linguaggio Macchina traduzione Software Macchina Virtuale h=1 h=0
Livelli di macchine HARDWARE E SOFTWARE SONO LOGICAMENTE EQUIVALENTI
Hardware ≡ Software Potremmo anche simulare l'hardware di un intero computer via software Un esempio è la 'vmware workstation' prodotta da “VMWARE and EMC company” Una virtual machine che simula l'hardware di un PC!
Hardware ≡ Software Tale software permette di installare un sistema operativo senza nessuna differenza con una installazione su un vero computer per mezzo della realizzazione di una “Virtual Infrastructure” GNU/Linux RedHat Windows 2000
Le idee ed i pionieri Babbage Turing von Neuman Il computer è un calcolatore digitale programmabile dotato di memoria dati e programmi risiedono in memoria
Macchina di von Neumann Von Neumann collaboro` prima all'ENIAC (lenta aritmentica decimale), quindi alla macchina IAS (aritmetica binaria) Cinque parti principali: memoria, ALU, unita` di controllo e dispositivi di I/O Registro accumulatore E` alla base di quasi tutti i calcolatori digitali (dal 1949!)
Software vs hardware Programming in hardware: il programma e` codificato da una sequenza di funzioni aritmetiche e logiche implementate nell'hardware Programming in software: le istruzioni servono a configurare l'hardware (general purpose) per calcolare la funzione desiderata in quel momento Von Neumann: dati e istruzioni possono essere memorizzati nella stessa memoria Programming in hardware Dati Output Istruzioni Dati Output Segnali di controllo Programming in software Instruction interpreter General purpose artihmetic and logic functions Sequence of artihmetic and logic functions
Unità funzionali Unità di elaborazione e controllo (CPU): interpretazione ed esecuzione delle istruzioni. Unità operativa (ALU) e di controllo responsabile del coordinamento di tutte le attività. Registri: memoria temporanea ad alta velocità Memoria: contenitore di istruzioni e dati (in forma binaria). L'interpretazione dà luogo all'esecuzione dello specifico codice di istruzione. Dati e istruzioni sono di per sé indistinguibili ma dipende dal modo in cui si leggono e interpretano i bit
Unità funzionali L'unità di controllo legge le istruzioni della memoria centrale e ne determina il tipo Sistema di ingresso e uscita: l'insieme dei dispositivi per comunicare con il modo esterno e con l'utente. L'informazione in ingresso e uscito è sempre in forma codificata Un sistema di interconnessione per collegare le varie unità funzionali
Componenti principali Video/display Periferiche di input/output Stampante (secondarie) Memorie di massa Processore Memoria (centrale) Bus principale Controller
Organizzazione fisica attuale Periferiche per l’output Unità centrale e memorie Periferiche per l’input CPU + HD, CD, Floppy Tastiera e mouse Scanner
Organizzazione fisica attuale Hard Disk RAM CPU Lettore CD Floppy Disk
Architettura dei computer Le varie componenti comunicano attraverso uno o più insiemi di collegamenti detti bus Nei computer moderni: c’e’ un collegamento dedicato detto bus di sistema per la comunicazione tra cpu e memoria principale ci sono collegamenti per le altre periferiche detti bus locali con i loro adattatori (memorie secondarie, dispositivi di I/O e di rete)
La memoria principale Fornisce la capacità di “memorizzare” le informazioni (i dati e i programmi) Può essere vista come una lunga sequenza di componenti elementari, ognuna delle quali può contenere un’unità di informazione (un bit) Le componenti elementari della memoria sono aggregate tra di loro e formano strutture complesse dette celle che possono contenere otto bit (un byte) La memoria può essere vista come una sequenza di celle
La memoria principale Ciascuna cella è caratterizzata da un indirizzo Gli indirizzi corrispondono all’ordinamento delle celle nella sequenza Gli indirizzi sono numeri interi (partono da 0) Gli indirizzi non sono scritti da nessuna parte, sono determinati N
La memoria principale Un altro nome con cui viene indicata la memoria principale è memoria RAM (Random Access Memory) Questa definizione indica che il tempo di accesso ad una cella è lo stesso indipendentemente dalla posizione della cella Le operazioni che un Processore può effettuare sulla memoria sono le operazioni di lettura e scrittura di informazioni nelle celle
La memoria principale L’ indirizzo di una cella è un numero intero e quindi lo si può codificare in binario Il numero di celle di memoria determina il numero di bit necessari a rappresentare l’indirizzo Viceversa il numero di bit destinati all’indirizzo determina il numero di celle indirizzabili questo numero viene chiamato Spazio di indirizzamento
Dimensione della memoria Le dimensioni della memoria principale variano a seconda del tipo di computer Nei computer attuali le dimensioni tipiche della memoria principale vanno da 128MB a 2GB (1MB = 2 20 byte ~ byte, 1GB = 2 30 byte ~ byte)
Spazio di indirizzamento Nei computer attuali lo spazio di indirizzamento è di almeno 32 bit, con cui si possono indirizzare 2 32 byte = 4GB Lo spazio di indirizzamento è maggiore della memoria esistente
Parola di memoria Una parola di memoria è, a seconda del tipo di computer, un aggregato di (due) quattro o otto byte, sul quale si può operare (leggere e scrivere) come su un blocco unico Per eseguire le operazioni di lettura e scrittura sulla memoria, si deve specificare l’indirizzo della parola su cui si vuole operare Gli indirizzi delle parole devono essere multipli del numero di celle (byte) che le compongono
Indirizzamento La cella è l’unità minima di memoria indirizzabile, non sono indirizzabili i singoli bit La parola è l’unità massima di memoria che è possibile leggere e scrivere in un colpo solo (mediante un’unica istruzione)
Accesso alla memoria La memoria è caratterizzata dal tempo di accesso (tempo necessario per leggere o scrivere un’informazione in una parola) Le memorie principali dei computer attuali sono molto veloci e i loro tempi di accesso sono di pochi nanosecondi (1 nanosecondo= sec, un miliardesimo di secondo) Le memorie principali sono relativamente costose, (128MB costano qualche decina di euro) La memoria principale perde ogni suo contenuto quando si interrompe l’alimentazione elettrica. Questa caratteristica viene chiamata volatilità È quindi necessario per conservare le informazioni (programmi e dati) avere altri tipi di memoria (memoria secondaria) che conservano il contenuto anche senza alimentazione elettrica
Tipi di RAM DRAM (Dynamic RAM): il tipo più diffuso, economica, tempo di accesso ns SRAM (Static RAM): molto più veloce e costosa della DRAM, viene utilizzata per realizzare la memoria cache, tempo di accesso < 10ns VRAM (Video RAM): ha caratteristiche particolari ed e’ utilizzata per la gestione delle immagini Moduli di memoria RAM: DIMM (chip di memoria montati su due lati) SIMM (chip di memoria montati su un lato solo)
Memoria Cache Memoria molto veloce intermedia tra RAM e CPU i dati di uso piu’ frequente sono mantenuti nella memoria Cache per minimizzare i trasferimenti tra RAM e CPU Principio di Localita’ alla base dell’architettura con cache: Localita’ spaziale: il processore utilizza con alta probabilita’ dati che risiedono in locazioni di memoria contigue Localita’ temporale: se il processore utilizza un dato in memoria, e’ altamente probabile che lo riutilizzi nuovamente in breve tempo
Memoria Cache Ci sono due tipi di Cache: interna al processore (~256KB) esterna al processore (~2MB) realizzata con chip di memoria SRAM
Memoria RAM-ROM Tutti i computer contengono un chip di memoria elettronica permanente non modificabile (ROM=Read Only Memory) Il più comune è chiamato EPROM Contiene un programma (detto Basic Input Output System) per l’avviamento del computer e per altre operazioni fondamentali
Riassunto La memoria RAM è: veloce (accesso nell’ordine dei nanosecondi) relativamente costosa ha dimensioni limitate è volatile (non può mantenere dati permanenti è ad accesso diretto (si può accedere a qualsiasi cella senza accedere alle altre)