Architettura dei Calcolatori Introduzione Che cos’è un calcolatore? Come funziona un calcolatore? è possibile rispondere a queste domande in molti modi, ciascuno relativo a un diverso punto di vista in questo corso, il punto di vista prevalente è quello del calcolatore come macchina programmabile, ovvero in grado di eseguire programmi Ing. L.Testa - Fondamenti di Informatica Che cos’è un calcolatore? “il calcolatore è un esecutore di programmi” punto di vista degli utenti finali viene considerato l’uso del calcolatore “il calcolatore è un sistema” punto di vista funzionale viene considerato il suo funzionamento e la sua architettura “il calcolatore è una macchina programmabile” punto di vista della programmazione Ing. L.Testa - Fondamenti di Informatica Calcolatori e applicazioni Che cos’è un calcolatore? un calcolatore è una macchina programmabile, ovvero in grado di eseguire programmi Questa definizione descrive, in parte, il punto di vista degli utenti dei calcolatori l’utente di un calcolatore interagisce con il calcolatore attraverso una o più applicazioni una applicazione (o programma applicativo o programma) consente di far svolgere al calcolatore una molteplicità di operazioni ciascuna operazione di una applicazione costituisce uno strumento per l’utente dell’applicazione, da utilizzare per perseguire un certo scopo Ing. L.Testa - Fondamenti di Informatica Tipologie di applicazioni informatiche Esistono moltissime tipologie di applicazioni per i calcolatori dai giochi alla gestione della telefonia dalla gestione di immagini e documenti alla possibilità di comunicare con altre persone e calcolatori dalla gestione alla simulazione di sistemi complessi dal supporto delle attività individuali alla gestione dei sistemi informativi di grandi organizzazioni Ing. L.Testa - Fondamenti di Informatica Applicazioni e risoluzione di problemi La possibilità di poter eseguire su un medesimo calcolatore applicazioni diverse rende il calcolatore una macchina che può essere utilizzata da un utente per la risoluzione di problemi un utente può risolvere un problema usando una applicazione e un calcolatore se è in grado di fornire all’applicazione eseguita dal calcolatore le istruzioni dettagliate di come il problema possa essere risolto Dal punto di vista dell’utente, con riferimento all’esecuzione di una applicazione le istruzioni che è possibile richiedere al calcolatore di eseguire sono quelle corrispondenti alle richieste di esecuzione delle operazioni fornite dall’applicazione ciascuna applicazione può essere caratterizzata dall’insieme delle operazioni che fornisce (e dalle regole per usarle) dalla tipologia di informazioni che permette di gestire Fondamenti di Informatica 6 Uso di applicazioni Per usare una applicazione, l’utente deve conoscere l’insieme delle operazioni che l’applicazione fornisce, comprenderne il significato e saperne richiedere l’esecuzione la capacità di comprendere e usare una applicazione è abbastanza indipendente dalla comprensione del funzionamento del calcolatore è utile comprendere i principi e i meccanismi su cui è basata l’interazione con il calcolatore, e in particolare l’organizzazione e l’uso delle interfacce grafiche Fondamenti di Informatica 7 Applicazioni e interfacce Una applicazione viene utilizzata tramite la sua interfaccia utente l’interfaccia di una applicazione è il mezzo di interazione tra l’utente (utente dell’applicazione) e il calcolatore (esecutore dell’applicazione) in generale, le applicazioni moderne dispongono di interfacce utente grafiche (GUI) l’interazione con una GUI avviene ad esempio selezionando menu e bottoni con il mouse alcune applicazioni sono basate su una interfaccia a caratteri in questo caso, l’interazione può avvenire mediante la digitazione di una sequenza di comandi Fondamenti di Informatica 8 Interazione con una applicazione L’uso di una applicazione richiede la comprensione delle operazioni che l’applicazione permette di eseguire della corrispondenza tra gli elementi dell’interfaccia dell’applicazione e i dati e le operazioni della modalità di richiesta dell’esecuzione di ciascuna operazione Fondamenti di Informatica 9 Architettura dei calcolatori Che cos’è un calcolatore? Come funziona un calcolatore? un calcolatore è un sistema un sistema è un oggetto costituito da molte parti (componenti) che interagiscono, cooperando, al fine di ottenere un certo comportamento Studiare l’architettura di un sistema vuol dire individuare ciascun componente del sistema comprendere i principi generali di funzionamento di ciascun componente comprendere come i vari componenti interagiscono tra di loro Fondamenti di Informatica 10 Hardware e software La prima decomposizione di un calcolatore è relativa alle seguenti macro-componenti: hardware la struttura fisica del calcolatore, costituita da componenti elettronici ed elettromeccanici software l’insieme dei programmi che consentono all’hardware di svolgere dei compiti utili il software comprende il software di base (tra cui il sistema operativo) e il software applicativo Fondamenti di Informatica 11 Organizzazione a livelli Hardware e software sono organizzati a livelli (o strati) ciascun livello corrisponde a una macchina (reale o virtuale) in grado di eseguire un proprio insieme di operazioni ciascun livello fornisce un insieme di operazioni più semplici da utilizzare rispetto a quelle del livello sottostante ciascun livello è realizzato in termini dell’insieme di operazioni fornite dal livello immediatamente sottostante Fondamenti di Informatica Software applicativo Software di base Hardware 12 Software e macchine virtuali In generale, il software ha lo scopo di mostrare ai suoi utenti il calcolatore come una macchina virtuale più semplice da usare rispetto all’hardware che viene effettivamente utilizzato per macchina virtuale si intende una macchina che fisicamente non esiste nella realtà, ma di cui si può avere la sensazione dell’esistenza il software di base ha lo scopo di mostrare all’utente il calcolatore come una macchina virtuale più semplice da gestire e programmare rispetto all’hardware utilizzato il software applicativo mostra all’utente il calcolatore come una macchina virtuale che può essere utilizzata per la risoluzione di problemi il software applicativo viene realizzato in termini della macchina virtuale mostrata dal software di base, e dipende solo parzialmente dall’hardware utilizzato Fondamenti di Informatica 13 Organizzazione a livelli Nell’organizzazione a livelli, l’hardware è l’unica macchina reale, mentre gli strati software corrispondono a macchine virtuali il repertorio di operazioni (chiamate istruzioni) che l’hardware sa eseguire direttamente è chiamato linguaggio macchina del calcolatore le diverse macchine e i relativi insiemi di operazioni sono via via più astratti il linguaggio macchina è composto da istruzioni estremamente elementari, ma che il calcolatore sa eseguire in modo molto efficiente nel senso che il significato di ciascuna operazione è sempre più vicino alla logica dell’utente e più lontano dalla logica del calcolatore come dispositivo elettronico è per questo motivo che sono via via più semplici da usare le diverse macchine sono comunque ugualmente espressive alla fin fine, l’unico responsabile dell’esecuzione del software è comunque l’hardware disponibile Fondamenti di Informatica 14 Tipologie di calcolatori Esistono diversi tipi di calcolatori: Personal computer Notebook (portatile) Dotati di monitor e tastiera separati dall’unità centrale Dotati di diversi dispositivi di memoria di massa interni o esterni all’unità centrale Versione portatile del personal computer Usualmente dotata di caratteristiche (leggermente) inferiori in termini di potenza di calcolo e memorizzazione In alcuni casi la differenza è solo in espandibilità vs portabilità Handheld computer / PDA / SmartPhone Di dimensioni limitate Usualmente privi di memorie di massa tradizionali Sensori intelligenti Oggi la tendenza è di avere sistemi sempre più piccoli e integrati Fondamenti di Informatica 15 Tipologie di calcolatori Workstation Versione “potente” del personal computer Orientate alle applicazioni grafiche o CAD Spesso condivise da più utenti Mainframe e minicomputer In passato denotavano calcolatori di elevata potenza di calcolo e memorizzazione Orientati all’elaborazione dati per l’intera azienda Condivisibili da più utenti (anche contemporaneamente) Cluster Sistemi di calcolo basati sull’aggregazione di più macchine Utilizzati per applicazioni computazionalmente pesanti Calcolo numerico, simulazioni, etc Fondamenti di Informatica 16 Architettura del calcolatore: il modello di Von Neumann Data la diversità di dispositivi e la complessità dell’architettura hardware di un calcolatore reale, serve un modello comune: Tutte le diverse tipologie di calcolatori sono accomunate dalla medesima architettura logica Macchina di Von Neumann: modello semplificato dei calcolatori moderni Von Neumann è stato il progettista (intorno al 1945) del primo calcolatore in cui i programmi potevano essere memorizzati anziché codificati mediante cavi e interruttori Fondamenti di Informatica 17 La macchina di Von Neumann La macchina di Von Neumann è composta da quattro tipologie di componenti funzionali fondamentali: unità centrale di elaborazione (CPU) componente in grado di eseguire istruzioni per l’elaborazione dei dati svolge anche funzioni di controllo (ovvero, di coordinamento) delle altre componenti funzionali memoria centrale memorizza e fornisce l’accesso a dati e programmi interfacce di ingresso e uscita (I/O) componenti di collegamento con le periferiche del calcolatore le periferiche sono dispositivi (esterni al calcolatore) che consentono lo scambio di dati tra calcolatore e utente bus svolge la funzionalità di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali Fondamenti di Informatica 18 La macchina di Von Neumann Fondamenti di Informatica 19 Funzionalità nella macchina di Von Neumann Il funzionamento di un calcolatore può essere quindi descritto in termini di poche componenti (macro-unità) funzionali ciascuna macro-unità è specializzata nello svolgimento di una tipologia omogenea di funzionalità, ad eccezione dell’unità centrale di elaborazione, che svolge sia funzionalità di elaborazione che di controllo Fondamenti di Informatica 20 Funzionamento (in sintesi) della macchina di Von Neumann Il processore estrae le istruzioni dalla memoria e le esegue Oppure operazioni di trasferimento dei dati I trasferimenti di dati attraverso elementi funzionali diversi avvengono attraverso il bus di sistema Le fasi di elaborazione si susseguono in modo sincrono rispetto ad un orologio di sistema detto clock Le istruzioni possono comportare operazioni di manipolazione dei dati Durante ogni intervallo di tempo l’unità di controllo (parte del processore) stabilisce la funzione da svolgere L’intera macchina opera in maniera sequenziale Fondamenti di Informatica 21 Rappresentazione delle informazioni Lo scopo fondamentale di un calcolatore è di permettere l’elaborazione di informazioni le informazioni sono rappresentate sotto forma di dati un dato è una informazione elementare I dati che un calcolatore sa rappresentare ed elaborare direttamente sono molto semplici i dati vengono rappresentati nel calcolatore mediante delle codifiche binarie (che studieremo in seguito) Fondamenti di Informatica 22 Elaborazione Le istruzioni del linguaggio macchina di un calcolatore corrispondono ad operazioni elementari di manipolazione dei dati operazioni aritmetiche somma, prodotto, ... operazioni relazionali (confronto tra dati) operazioni su caratteri e valori di verità altre operazioni numeriche calcolo di logaritmi, funzioni trigonometriche, ... Un calcolatore sa dunque svolgere poche tipologie di operazioni elementari ma le sa eseguire in modo molto efficiente un calcolatore può eseguire decine o centinaia di milioni di istruzioni del linguaggio macchina al secondo L’elaborazione dei dati viene svolta dall’unità aritmetico-logica (ALU), che è un componente dell’unità centrale di elaborazione Fondamenti di Informatica 23 Memorizzazione Un calcolatore ha la necessità di memorizzare, in modo temporaneo o permanente, i dati per la rappresentazione delle informazioni di interesse e i programmi per la loro elaborazione La memoria è l’unità responsabile della memorizzazione dei dati una unità di memoria è organizzata in celle a ciascuna cella è associato un indirizzo, che la identifica ciascuna cella è in grado di memorizzare un singolo dato Una unità di memoria fornisce due sole operazioni memorizzazione di un valore in una cella (scrittura) dato un valore da memorizzare e l’indirizzo di una cella, memorizza il valore nella cella, modificando pertanto lo stato della memoria accesso al valore memorizzato in una cella (lettura) dato l’indirizzo di una cella, restituisce il valore memorizzato nella cella Fondamenti di Informatica 24 Trasferimento Il bus è il componente del calcolatore dedicato al trasferimento dei dati e delle informazioni di controllo tra le varie parti del calcolatore il bus è l’insieme dei collegamenti su cui vengono trasferiti i dati e i segnali di controllo in un calcolatore L’idea alla base del bus è la seguente nel calcolatore è necessario collegare tutti i componenti tra di loro (per permettere lo scambio di dati tra componenti) ci sono due modalità per collegare un insieme di componenti collegare ciascun componente con ogni altro componente collegare tutti i componenti a un unico insieme di linee (il bus, appunto) l’uso del bus favorisce la modularità e l’espandibilità del calcolatore Fondamenti di Informatica 25 Controllo Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di controllo l’unità di controllo è un altro componente dell’unità centrale di elaborazione ogni componente dal calcolatore esegue solo le azioni che gli vengono richieste dall’unità di controllo Caratteristiche dell’attività di controllo svolta dall’unità di controllo il controllo avviene in modo sincrono rispetto alla scansione temporale imposta dall’orologio di sistema (clock) il controllo consiste nel coordinamento dell’esecuzione temporale delle funzioni che devono essere svolte sia internamente all’unità di elaborazione che negli altri elementi funzionali Fondamenti di Informatica 26 Unità centrale di elaborazione (CPU) L’unità centrale di elaborazione (o processore) è composta dall’unità di controllo e dall’unità aritmeticologica l’unità centrale di elaborazione controlla l’esecuzione di un programma (memorizzato in memoria centrale sotto forma di una sequenza di istruzioni del linguaggio macchina) eseguendo ordinatamente le istruzioni del programma Fondamenti di Informatica 27 Periferiche e interfacce di ingresso-uscita Un calcolatore può essere collegato a diversi dispositivi di ingresso e/o uscita (chiamati periferiche) ad esempio, la tastiera, il mouse, lo schermo, le stampanti, il modem anche le memorie di massa (ad esempio, le unità disco e il lettore di CD-ROM) sono considerati periferiche Nella macchina di Von Neumann, le periferiche non fanno parte del calcolatore ogni periferica viene controllata mediante un’opportuna interfaccia una interfaccia ha il compito di tradurre i segnali interni del calcolatore in un formato comprensibile alla periferica stessa, e viceversa Fondamenti di Informatica 28 Tecnologia dei calcolatori La conoscenza dell’architettura della macchina di Von Neumann ci consente di studiare alcuni aspetti tecnologici relativi all’hardware dei calcolatori Vengono ora introdotti alcuni principi di funzionamento e alcune caratteristiche tecnologiche dei componenti effettivamente utilizzati nei calcolatori Fondamenti di Informatica 29 Codifica dei dati In un calcolatore, i dati (e le istruzioni) sono codificati in forma binaria, ovvero mediante delle sequenze finite di cifre 0 e 1 il bit la più piccola unità di informazione in un calcolatore un bit può avere valore 0 oppure 1 la parola “bit” è una forma contratta per binary digit (cifra binaria) ciascun bit è memorizzato da una cella elementare di memoria, fisicamente realizzata da un dispositivo elettronico in cui sono chiaramente distinguibili due stati questi due stati vengono fatti corrispondere allo 0 e all’1 Un bit è una unità di informazione troppo piccola per essere usata individualmente i dati vengono codificati sotto forma di sequenze di bit ciascuna sequenza di bit può essere interpretata come un dato solo se viene opportunamente decodificata Fondamenti di Informatica 30 Unità centrale di elaborazione (CPU): il microprocessore L’unità centrale di elaborazione è solitamente realizzata fisicamente sotto forma di microprocessore i microprocessori sono dispositivi elettronici estremamente complessi Fondamenti di Informatica 31 Unità centrale di elaborazione (CPU): il microprocessore – qualche esempio… Processore Anno Frequenza (Hz) N. Transistors Tecnologia (micron) 8086 1978 5-10 MHz 29.000 3 80486 1989 25-100 MHz 1.200.000 1.600.000 1 0.6 Pentium 1993 60-200 MHz 3.100.000 3.300.000 0.8 0.35 Pentium II 1997 233-533 MHz 7.500.000 19.000.000 0.35 0.25 Pentium III 1999 450 MHz 1,4 GHz 9.500.000 44.000.000 0.25 0.13 Pentium 4 2001 1,4 GHz 3,73 GHz 42.000.000 169.000.000 0.18 90 nm Fondamenti di Informatica 32 Unità centrale di elaborazione (CPU): Schema architetturale (semplificato) Fondamenti di Informatica 33 Unità centrale di elaborazione (CPU): Componenti Unità di controllo (UC) Unità aritmetico-logica (ALU) Bus interno Registri PC program counter IR instruction register dato che è stato acceduto o che deve essere memorizzato Registro di stato (o dei flag) indirizzo della cella di memoria che deve essere acceduta o memorizzata MDR registro dati di memoria contiene l’istruzione che deve essere eseguita MAR registro di indirizzamento memoria Contiene l’indirizzo della prossima istruzione da eseguire contiene informazioni sull’esito delle operazioni eseguite Registri generici per la memorizzazione degli operandi o del risultato di una operazione Fondamenti di Informatica 34 Unità centrale di elaborazione (CPU): Funzionamento L’unità di centrale di elaborazione esegue una istruzione svolgendo le seguenti tre operazioni di base (lettura) fetch (decodifica) decode legge dalla memoria la prossima istruzione da eseguire Determina (decodifica) il tipo di istruzione che deve essere eseguito (esecuzione) execute richiede lo svolgimento di tutte le azioni necessarie per l’esecuzione dell’istruzione (compreso l’incremento automatico del registro contatore delle istruzioni) — ciascuna azione viene richiesta al componente opportuno L’esecuzione di un programma avviene eseguendo ordinatamente le istruzioni del programma, svolgendo ripetutamente il ciclo fetch-decode-execute Fondamenti di Informatica 35 Unità centrale di elaborazione (CPU): Funzionamento - 1 L’esecuzione di un programma ha inizio con il caricamento della locazione della prima istruzione nel PC La UC manda un segnale di controllo affinché il contenuto del PC sia spostato nel MAR Viene inviato un segnale di controllo (read) alla memoria per effettuare la lettura del dato posto all’indirizzo specificato nel MAR In conseguenza del passo precedente il dato viene reso disponibile nel MDR (la UC attende fino all’arrivo del segnale MFC - memory function completed) Fondamenti di Informatica 36 Unità centrale di elaborazione (CPU): Funzionamento - 2 La UC manda un segnale di controllo affinché il contenuto del MDR (registro dati) sia spostato nel IR (registro istruzione corrente) La UC decodifica l’istruzione corrente La UC genera la sequenza di segnali di controllo necessari ad eseguire l’istruzione (vedi esempio slide successiva) Il PC viene incrementato al fine di puntare alla prossima istruzione Fondamenti di Informatica 37 Unità centrale di elaborazione (CPU): Funzionamento – 3 (esempio) La UC genera la sequenza di segnali di controllo necessari ad eseguire l’istruzione Esempio: caricamento di un dato presente in memoria nel registro A Il valore del PC incrementato di 1 viene spostato nel IR (registro indirizzi) Viene inviato un segnale di controllo (read) alla memoria per effettuare la lettura del dato posto all’indirizzo specificato nel IR In conseguenza del passo precedente il dato viene reso disponibile nel registro dati MDR (la UC attende il segnale MFC) La UC manda un segnale di controllo affinché il contenuto del registro dati MDR sia spostato nel registro A Fondamenti di Informatica 38 Unità centrale di elaborazione (CPU): Tipologia di istruzioni eseguibili Le istruzioni eseguite dal processore possono essere classificate in tre categorie principali: Istruzioni aritmetiche/logiche Istruzioni di salto Somme, sottrazioni, moltiplicazioni, divisioni, etc. And, or, minore, maggiore (... condizionale, chiamate a sottoprogramma) Istruzioni di trasferimento dei dati Da un registro all’altro Da uno dei registri alla memoria o viceversa Fondamenti di Informatica 39 Esempio: Fase di fetch Passo 1 Memoria centrale (MM) 0 0100000000010000 Passo 2 PC 0000000001 0000000000 Passo 4 MAR 0000000000 1023 MDR 0100000000010000 Passo 3 IR 0100000000010000 Fondamenti di Informatica 40 Esempio: Fase di decode IR 0100000000010000 Codice operativo 0100 = scrivi il registro B in memoria Fondamenti di Informatica 41 Esempio: Fase di esecuzione Memoria centrale (MM) Indirizzo operando 00000010000 = cella 16 IR 0100000000010000 0 Passo 3 16 0001000000011111 Passo 1 MAR 0000010000 1023 MDR 0001000000011111 Passo 2 Valore del registro B (es. 4127) Fondamenti di Informatica B 0001000000011111 42 Unità centrale di elaborazione (CPU): le interruzioni (interrupt) Al fine di gestire richieste provenienti dalle periferiche può essere necessario interrompere la normale esecuzione di un programma La periferica segnala sue particolari necessità attraverso una interruzione (interrupt) Ad ogni passo di esecuzione la UC verifica lo stato del registro delle interruzioni Se si è verificata una interruzione: Lo stato del processore (registri) viene salvato in memoria Viene attivata una speciale procedura di gestione delle interruzioni Quando la procedura di gestione delle interruzioni termina lo stato del processore viene ripristinato ed il programma viene ripreso Fondamenti di Informatica 43 Unità centrale di elaborazione (CPU): caratteristiche dei microprocessori Caratteristiche principali di un microprocessore repertorio di istruzioni velocità (misurata come frequenza del clock) numero di bit nel bus interno del processore co-processore la frequenza del clock misura la durata del ciclo macchina, che è l’unità di tempo all’interno del processore va osservato che l’esecuzione di ciascuna istruzione richiede solitamente più cicli macchina ampiezza del bus le istruzioni del linguaggio macchina del processore i moderni processori sono integrati a co-processori specializzati (ad esempio, il co-processore matematico) cache una memoria veloce locale al processore, che consente una accelerazione nell’esecuzione dei programmi Fondamenti di Informatica 44 Il bus di sistema Il bus di sistema collega tra loro i vari elementi del calcolatore In ogni istante il bus è dedicato a collegare due unità, una trasmette ed una riceve Il processore seleziona la connessione da attivare e indica l’operazione da svolgere Approccio master-slave CPU = master Periferiche = slave Fondamenti di Informatica 45 Il bus di sistema Il bus è suddiviso in tre insiemi di linee: Bus dati Bus indirizzi utilizzato per trasferire dati (es. fra memoria e CPU, fra CPU e interfacce di I/O) identifica la posizione delle celle di memoria un cui la CPU va a scrivere o leggere Bus di controllo in cui transitano i segnali di controllo che consentono di selezionare le unità coinvolte in un trasferimento dati (sorgente e destinazione), di definire la direzione dello scambio (scrittura o lettura), informazioni di temporizzazione Fondamenti di Informatica 46 Il bus di sistema: vantaggi e svantaggi Semplicità: 1 sola linea di connessione per qualunque # di dispositivi Estendibilità: nuovi dispositivi possono essere aggiunti tramite un’interfaccia al bus senza influenzare l’HW preesistente Standardizzabilità: definizione di normative che consentono a periferiche di costruttori diversi di interagire correttamente Lentezza: l’uso in mutua esclusione del bus inibisce almeno parzialmente la parallelizzazione delle operazioni di trasferimento di dati tra dispositivi Limitata capacità: al crescere del numero di dispositivi la presenza di una sola linea comporta un limite alla capacità di trasferire dati Sovraccarico della CPU: l’unità centrale viene coinvolta in tutte le operazioni di trasferimento di dati Fondamenti di Informatica 47 La memoria centrale La memoria centrale (o principale) è la componente del calcolatore in cui vengono immagazzinati e da cui vengono acceduti i dati e i programmi Una memoria: si compone di una sequenza di celle (o locazioni) ogni cella di memoria è in grado di memorizzare una parola di memoria (ovvero, un sequenza di bit di lunghezza fissata) la lunghezza di una parola dipende dalla macchina ogni cella è caratterizzata da un indirizzo, che è un numero che identifica la cella e ne consente l’accesso un valore, che è la sequenza di bit memorizzata dalla cella fornisce le operazioni di lettura e scrittura Fondamenti di Informatica 48 La memoria centrale: schema semplificato Fondamenti di Informatica 49 La memoria centrale: caratteristiche Caratteristiche principali: capacità il numero di bit che possono essere memorizzati, misurati in byte (e multipli del byte) velocità di accesso misura la velocità di esecuzione delle operazioni di lettura/scrittura organizzazione/lunghezza parola volatilità Indica la capacità o meno di mantenere le informazioni memorizzate in mancanza di alimentazione elettrica (RAM, ROM) Fondamenti di Informatica 50 La memoria centrale: RAM e ROM Spesso ci si riferisce alla memoria centrale come memoria RAM RAM Random Access Memory (memoria ad accesso casuale) Viene cosi detta una memoria il cui tempo di accesso sia indipendente dall’indirizzo della parola alla quale si vuole accedere Si tratta di una memoria volatile I dati possono essere sia letti che scritti Altri tipi di memoria presenti in un calcolatore sono le memorie ROM ROM Read Only Memory Hanno caratteristiche generali simili alle RAM Un tempo di accesso notevolmente maggiore Si tratta di memorie permanenti I dati possono essere solamente letti Sono tipicamente utilizzate per memorizzare quei dati e programmi che servono al momento dell’accensione dell’elaboratore, prima del caricamento del S.O. Fondamenti di Informatica 51 Memoria vs CPU Le CPU sono sempre state più veloci delle memorie L’accesso alla memoria passa attraverso il bus L’aumento di integrazione ha consentito di progettare CPU pipelined, superscalari, molto veloci Nelle memorie è aumentata più la capacità che la velocità La frequenza di funzionamento del bus è molto più bassa di quella della CPU Gran parte delle istruzioni eseguite sono di accesso alla memoria Esempio: Il tempo di accesso alla RAM è di ~30-70 ns Un processore con clock ad 1Ghz esegue in media 1 istruzione ogni ns Se un processore deve accedere alla memoria, si blocca per molto tempo in attesa dei dati La velocità effettiva del sistema computer è quella della memoria, non quella della CPU La memoria è un “collo di bottiglia” per le prestazioni del sistema computer Migliorare la velocità di accesso alla memoria significa migliorare notevolmente le prestazioni d’insieme Fondamenti di Informatica 52 Gerarchie di memorie Memorie di gran capacità, relativamente lente, economiche ed accessibili tramite il bus Memorie veloci integrate nello stesso chip della CPU ma costose MGL ovvero Memoria Grossa e Lenta MPV ovvero Memoria Piccola e Veloce Obiettivo: Realizzare una memoria grossa e veloce Dimensioni: pari a circa quelle della memoria grossa Prestazioni: pari a circa quelle della memoria veloce E’ possibile realizzare questo obiettivo? Fondamenti di Informatica 53 Gerarchie di memorie Memoria formata da una MPV e da una MGL La MPV contiene una copia di alcune celle della MGL Quando la CPU chiede una particolare cella di memoria la richiesta va ad entrambe le memorie Se il dato si trova nella MPV viene passato direttamente alla CPU Se il dato si trova nella MGL viene anche caricato nella MPV Fondamenti di Informatica 54 Principio di località Località spaziale Quando si accede ad un indirizzo A è molto probabile che gli accessi successivi richiedono celle vicine ad A Le istruzioni del codice vengono in genere lette da locazioni consecutive in memoria Gli accessi ad array o a strutture dati sono “vicini” Località temporale Quando si accede all’indirizzo A, è molto probabile negli accessi successivi si richieda di nuovo la cella A Cicli di istruzioni accedono ripetutamente alle stesse locazioni di memoria Istruzioni vicine tendono ad utilizzare le stesse variabili Fondamenti di Informatica 55 Memoria cache velocità CPU registri capacità Costo (€/bit) alta bassa alto bassa alta basso Memoria cache di livello 1 (L1) Memoria cache di livello 2 (L2) Memoria centrale RAM Memoria di massa Hard disk Fondamenti di Informatica 56 Memoria cache Denominazione Capacità Tempo di accesso Registri Cache di livello 1 Cache di livello 2 Memoria centrale Hard Disk < 1 KB 2 KB – 64 KB 256 KB – 2 MB 256 MB – 2 GB 40 GB –300 GB < 1 ns 1 ns 2 ns 10 ns 10 ms Fondamenti di Informatica 57 Memoria cache La presenza di una memoria cache efficiente (che, cioè, risponde “al posto della RAM” nel 95-98% dei casi) è fondamentale per le prestazioni del sistema computer La presenza della cache complica notevolmente l’architettura di un sistema di elaborazione Problema del rimpiazzo Problema della scrittura (coerenza dei dati) Fondamenti di Informatica 58 L’interfaccia delle periferiche Concettualmente si occupa della gestione dello scambio di dati tra processore e periferiche In generale contiene: Un registro dati della periferica (RDP) Un registro di comando della periferica (RCP) Un registro di stato Talvolta collegato al registro delle interruzioni del processore A seconda del processore, i registri delle periferiche possono: Condividere lo spazio di indirizzi della memoria (memory mapped I/O) Adottare uno spazio di indirizzi distinti Fondamenti di Informatica 59 L’interfaccia delle periferiche: schema Bus indirizzi Bus dati Bus di controllo Decodificatore degli indirizzi Circuiti di controllo Registri dei dati e di stato Interfaccia di I/O Periferica Fondamenti di Informatica 60 L’interfaccia delle periferiche: standardizzazione E’ possibile avere una interfaccia diversa per ogni periferica ma è più logico avere delle interfacce standard per periferiche simili Esempi di interfacce standard: Interfaccia seriale RS-232-C Interfaccia PS2 Interfaccia USB (Universal Serial Bus) Interfaccia parallela Centronix Interfaccia ISA Interfaccia SCSI Interfaccia EIDE Fondamenti di Informatica 61 Gestione delle periferiche I moderni processori operano a velocità notevolmente maggiori di ogni altra periferica sorge la necessità di sincronizzare le operazioni di processore e periferiche Due approcci possibili: a controllo di programma (polling) o mediante interrupt La gestione a polling: un esempio di lettura da memoria di massa Il processore invia sul bus il comando di lettura e si pone in attesa che il dato sia disponibile sul registro dati della periferica Durante l’attesa il processore esegue un ciclo verificando il valore del registro di stato della periferica Appena il dato è pronto il processore lo trasferisce dal registro dati della periferica in uno dei suoi registri interni e da qui in memoria Fondamenti di Informatica 62 Gestione delle periferiche Difetti dell’approccio a polling Il processore resta impegnato in un ciclo in attesa del dato La gestione a interrupt: un esempio di lettura da memoria di massa Il processore invia sul bus il comando di lettura e procede nelle sue operazioni Quando il dato è disponibile la periferica “solleva” un interruzione Il processore interrompe le sue operazioni, salva il proprio stato ed esegue una opportuna routine di gestione delle interruzioni (parte del S.O.) La routine di gestione delle interruzioni verifica che un dato è disponibile sulla periferica e lo trasferisce dal registro dati della periferica in uno dei registri interni del processore e da qui in memoria Fondamenti di Informatica 63 Tipologie di periferiche Memorie secondarie (di massa) Periferiche di input Floppy disk, hard disk, CD, DVD, Nastri magnetici Tastiera, mouse Periferiche di output Monitor, speaker, stampanti Periferiche di comunicazione Interfaccia di rete, modem Varie Scanner, webcam, microfoni, etc Fondamenti di Informatica 64 Memorie secondarie (o di massa) Con il termine memoria di massa ci si riferisce ad un dispositivo di memorizzazione permanente capace di contenere grosse quantità di dati Caratteristiche specifiche (che la differenziano dalla memoria centrale): non volatilità i dati memorizzati non vengono persi allo spegnimento del calcolatore (perché memorizzati in forma magnetica o ottica anziché elettronica) grande capacità una unità di memoria secondaria ha capacità maggiore (anche di diversi ordini di grandezza) rispetto alla memoria centrale bassi costi il costo per bit di una memoria secondaria è minore (di diversi ordini di grandezza) rispetto alla memoria centrale bassa velocità di accesso i tempi di accesso a una memoria secondaria sono maggiori (di qualche ordine di grandezza) rispetto alla memoria principale Fondamenti di Informatica 65 Memorie secondarie (o di massa) Esiste un numero grandissimo di dispositivi di tale tipo Possibili categorizzazioni Dispositivi ad accesso sequenziale o casuale Dispositivi in sola lettura (RO), in lettura e scrittura (RW) o WORM (Write Once Read Many) Dispositivi magnetici, ottici o magneto-ottici Dimensioni tipiche delle principali memorie di massa odierne FDD: 1.44 MB CD: 650 MB DVD: 4 GB Hard-Disk: 80+ GB Nastri: QIC80: 350 MB, DAT 4¸20+ GB Fondamenti di Informatica 66 Memorie secondarie In pratica, i dati di una memoria secondaria per essere acceduti dal processore devono comunque transitare nella memoria centrale la memoria secondaria memorizza tutti i programmi e i dati del calcolatore la memoria centrale memorizza i programmi in esecuzione e i dati necessari per la loro esecuzione Fondamenti di Informatica 67 Hard disk Un disco magnetico (disco fisso) è composto da uno o più piatti di alluminio rotanti ricoperti di materiale magnetico e da un gruppo di testine una testina permette la scrittura e lettura di bit su un disco, memorizzati sotto forma di stati di polarizzazione (positiva e negativa) Fondamenti di Informatica 68 Hard disk In un disco magnetico ciascun piatto è composto da due superfici (facce) ciascuna faccia è suddivisa in tracce (circolari) e settori (a spicchio) i settori sono le unità logiche di memorizzazione un cilindro è l’insieme delle tracce in una data posizione radiale la capacità di un settore è tipicamente di 512 byte l’indirizzo di un settore è dato dalle seguenti informazioni: cilindro, superficie, settore Fondamenti di Informatica 69 Hard disk: caratteristiche prestazionali Caratteristiche prestazionali di un HD Tempo di posizionamento (seek time): il tempo necessario a posizionare le testine sulla traccia richiesta Tempo di latenza o di rotazione (latency time): il tempo affinché il settore richiesto “passi” sotto la testina (dipende dalla velocità di rotazione del disco) Nell’ordine di 2-4 ms Tempo di trasferimento: il tempo per trasferire i dati dal disco alla memoria Nell’ordine di 8-10 ms In genere trascurabile Tempo di accesso (la somma dei tre tempi precedenti) Fondamenti di Informatica 70 Hard disk: esempi Il disco WD Caviar SE16 (SATA) Caratteristiche costruttive Number of Heads (Physical) 6 Capacity 250 GB Number of Platters 3 Bytes Per Sector 512 Caratteristiche prestazionali Rotational Speed 7,200 RPM Average Latency4.20 ms Seek Times Read Seek Time 8.9 ms Write Seek Time 10.9 ms (average) Track-To-Track Seek Time 2.0 ms (average) Transfer Rates Buffer To Host (Serial ATA) 300 MB/s (Max) Buffer To Disk 748 Mbits/s (Max) Fondamenti di Informatica 71