Architettura di un calcolatore
Transcript
Architettura di un calcolatore
Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 2. Architettura di un calcolatore Ing. Michele Ruta 1 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Sommario • Architettura di base: il modello della macchina di Von Neumann: – – – – Memoria CPU Bus Interfacce • Esempio: – Dall’algoritmo al programma – Fasi di esecuzione di un’istruzione 2 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Macchina di Von Neumann Unità di Elaborazione (CPU - Central Processing Unit): insieme di microchip per acquisire interpretare ed eseguire le istruzioni di un programma. Memoria centrale (RAM- Random Access Memory): contiene informazioni necessarie all’esecuzione di un programma (istruzioni e dati). Bus di sistema: opera il collegamento tra gli elementi funzionali Interfacce: forniscono il collegamento verso le periferiche che permettono lo scambio di informazioni tra elaboratore e mondo esterno (I/O) 3 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Macchina di Von Neumann Collegamento Bus di sistema Unità di Elaborazione (CPU) Esecuzione istruzioni 4 di 31 Memoria Centrale (MM) Interfaccia Periferica P1 Memoria di lavoro Architettura di un calcolatore Interfaccia Periferica P2 Memoria di massa, stampante, terminale… M. Ruta Fondamenti di Informatica A.A. 2009-10 Macchina di Von Neumann Componenti e ruoli La CPU estrae, decodifica ed esegue istruzioni (elaborazione o trasferimento di informazione) della memoria. Il bus di sistema effettua il collegamento logico/fisico tra gli elementi funzionali in base al trasferimento da attuare. Le fasi di elaborazione si susseguono in modo sincrono rispetto alla scansione temporale imposta da un clock di sistema. L’unità di controllo della CPU coordina durante ogni intervallo di tempo l’esecuzione delle funzioni da svolgere all’interno della CPU o presso gli altri elementi funzionali. LIMITE: esecuzione in sequenza 5 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Codifica di dati e istruzioni Tutti i dati e le istruzioni di programma vengono codificati in forma binaria ossia come sequenze finite di 0 e 1 Si parla di bit (binary digit, b): più piccola unità di informazione memorizzabile o elaborabile corrisponde allo stato di un dispositivo fisico … e di byte (B): 8 bit Codifica dati: cfr. “Codifica binaria dell’informazione” Codifica istruzioni (elaborazione o trasferimento): codice operativo: specifica la tipologia di operazione da compiere operandi: specifica la locazione dei dati da elaborare o trasferire. 6 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Memoria centrale – MM Accoglie dati e programmi necessari al lavoro di un elaboratore E’ un “passaggio obbligato” per l’informazione da e verso la periferia (le operazioni comportano I/O) E’ volatile e non permanente (come invece è la memoria di massa) Concettualmente: sequenza di celle di memoria, ciascuna contenente una parola: sequenza di byte di dimensione variabile a seconda del calcolatore (>=4 byte) Tecnologicamente: dispositivi a semiconduttore; “struttura matriciale” ove le righe rappresentano le word e le colonne, in numero pari alla lunghezza della parola, ciascun bit di memoria informazione memorizzata come stato di tensione (1 alto – 0 basso) nelle posizioni di memoria agli incroci tra righe e colonne 7 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica Memoria centrale – MM A.A. 2009-10 Operazioni sulla memoria (controllate dalla CPU con l’uso del bus): Indirizzamento della MM (selezione di una particolare cella): Indirizzo: posizione relativa rispetto alla prima cella (posizione 0) Uso di un apposito registro indirizzi (AR) Lettura dalla MM: Carica (load) il registro dati (DR) con la parola di memoria contenuta nella cella indirizzata Scrittura in MM: Deposita (store) il contenuto del registro dati (DR) nella parola di memoria indirizzata REGISTRO = banco di memorizzazione interno al chip della CPU Caratteristiche: Altissima velocità di accesso Bassissima capienza 8 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Memoria centrale (MM) h = 16 bit Dati e istruzioni 0 1 Address Register (AR) store k = 10 bit load 9 di 31 Data Register (DR) h = 16 bit Dato da leggere/scrivere Indirizzo cella Spazio di indirizzamento 210=1024 Parola (word) 1023 Architettura di un calcolatore M. Ruta Fondamenti di Informatica RAM e ROM A.A. 2009-10 RAM (Random Access Memory): memoria ad accesso casuale: indirizzabile alla word per operazioni di lettura e scrittura ROM (Read Only Memory): aree di memoria a sola lettura, inizializzate dal costruttore con dati e programmi che servono al funzionamento del sistema (contenuto protetto) contenuto persistente (usate nei microcontrollori presenti all’interno di dispositivi come centraline, autoradio) 10 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 ROM Classificazione in base alla modalità di scrittura in fabbrica: EROM (Erasable ROM): cancellabile con fasci di raggi ultravioletti e riutilizzabili PROM (Programmable ROM): non scritte in fase di costruzione, ma successivamente, con i cosiddetti programmatori di ROM EPROM (Erasable Programmable ROM) Il software ospitato nelle ROM prende il nome di FIRMWARE per la sua natura intermedia tra hardware (non modificabilità durante l’esecuzione) e software (programmabilità) 11 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Unità di elaborazione (CPU) Esegue i programmi in memoria centrale prelevando, decodificando ed eseguendo una dopo l’altra le istruzioni Contiene gli elementi circuitali che regolano il funzionamento dell’elaboratore: unità di controllo: prelievo e decodifica di istruzioni invio segnali di controllo che provocano i trasferimenti o le elaborazioni necessari per l’esecuzione dell’istruzione decodificata orologio di sistema (clock): sincronizza le operazioni rispetto ad una data frequenza unità aritmetico-logica (ALU, Arithmetic Logic Unit): realizza le operazioni aritmetiche e logiche eventualmente richieste per l’esecuzione dell’istruzione 12 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Registri della CPU Registro: supporto di memoria interno alla CPU, utilizzabile per memorizzare risultati parziali o informazioni di controllo Registro dati (DR): lungo quanto una parola (h bit) Registro Indirizzi (AR) : lungo k bit Registro Istruzione Corrente (IR, Instruction Register): lungo h bit, contiene, istante per istante, l’istruzione in esecuzione Contatore di programma (PC, Program Counter): lungo k bit, contiene l’indirizzo della successiva istruzione da eseguire Registro interruzioni (IntR, Interrupt Register): contiene informazioni per la gestione di eventuali eventi anomali (interruzioni) Registri per operandi e risultati delle elaborazioni aritmetico-logiche svolte dall’ALU (in numero di due tipicamente indicati con A e B) Registri di lavoro: in numero sufficientemente elevato, contengono dati e istruzioni di uso frequente o risultati intermedi, leggibili e scrivibili velocemente, senza operazioni di load e store 13 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 ALU Capace anche di operazioni molto complesse (per semplicità negli esempi si citeranno solo le 4 operazioni fondamentali) Attivata dall’unità di controllo mediante un apposito codice operativo Adopera i registri operandi (A e B) caricati con i dati prima dell’esecuzione dell’operazione Il registro A è caricato con il risultato dell’operazione dopo un certo intervallo necessario all’esecuzione della stessa, misurato dall’orologio di sistema nel caso di divisione intera il resto viene messo in B; per altre operazioni il contenuto di B resta indefinito 14 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 ALU - Registro di stato SR (State Register): riporta indicazioni relative al risultato delle operazioni svolte dalla ALU in alcuni suoi bit: 1. Bit di carry, indica la presenza di un riporto (carry over) 2. Bit zero, indica la presenza di un valore nullo in A 3. Bit di segno, riporta il segno del risultato dell’operazione aritmetica 4. Bit di overflow, rileva la condizione di overflow (se il risultato dell’ultima operazione supera il valore 2h, massimo valore rappresentabile in A, se A è lungo h bit) 15 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Clock di sistema Tempificatore, sincronizza le operazioni della macchina: – L’esecuzione di una singola istruzione di macchina può prevedere più cicli di clock – Il clock è tarato in modo che in un intervallo di sincronizzazione si possa effettuare un’operazione ma non quella successiva: Il trasferimento dell’informazione avviene mediante il transito continuo di segnali elettrici verso i dispositivi Ogni dispositivo è caratterizzato da una porta indirizzabile (afferente ad un controller) normalmente chiusa (circuito aperto), in modo tale da non consentire l’ingresso di dati e la sovrascrittura di quelli già contenuti Un segnale di controllo proveniente dall’unità di controllo apre la porta del dispositivo (chiusura del circuito) su cui si deve effettuare un’operazione; un altro segnale la richiude dopo che l’operazione viene eseguita 16 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Unità di elaborazione (CPU) Stato CPU Flag: C, Z, S, V Indirizzo istruzione successiva Registro contatore di programma (PC) Registro di stato (SR) Operazioni aritmetiche e logiche Unità aritmetico logicaoperandi Registri (ALU) A Registro interruzioni (IntR) B Registri generali Registro istruzione corrente (IR) Unità di controllo (CU) Istruzione in elaborazione Clock Parola letta/da scrivere in MM Sincronizzazione Registro dati (DR) 17 di 31 Indirizzo cella MM Registro indirizzi (AR) Architettura di un calcolatore Controllo: -Prelievo -Decodifica -Esecuzione M. Ruta Fondamenti di Informatica A.A. 2009-10 Bus di sistema Insieme di connessioni elementari lungo cui viene trasferita l’informazione (trasferendo valori di tensione) Collegamento aperto (non limitato ad un estremo) su cui si interfacciano le varie unità funzionali In ogni istante di tempo collega un’unità funzionale trasmittente ed una ricevente dati (CPU con memoria o CPU con interfaccia periferica mediante controller) Sotto il controllo della CPU, che seleziona l’interfaccia da attivare (porta) e indica l’operazione da compiere: la CPU ha il ruolo di master, le altre unità funzionali di slave 18 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Bus di sistema Classificazione delle linee in base al tipo di informazione trasportata: Bus dati: trasferisce dati dall’unità master alla slave e viceversa trasferimento in parallelo grazie alla presenza di molte linee trasferisce tutti i bit di una parola contemporaneamente, dedicando una linea a ciascuno di essi (se il numero di linee del bus dati non è inferiore a quello dei bit della parola) Bus indirizzi: trasferisce indirizzi (per esempio l’indirizzo contenuto nel registro indirizzi alla memoria centrale per l’indirizzamento) Bus controlli: trasferisce dall’unità master alla slave un codice corrispondente all’istruzione da eseguire e dall’unità slave alla master informazioni sull’espletamento dell’operazione 19 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica Bus di sistema A.A. 2009-10 CPU Registro di stato (SR) Registro contatore di programma (PC) A Registro interruzioni (IntR) B Unità aritmetico logica Registro istruzione corrente (IR) Unità di controllo (CU) Clock Registro indirizzi (AR) Registro dati (DR) Master/slave Bus dati, Bus indirizzi, Bus controlli Bus di sistema 20 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Sequenza di lettura 0 SR PC IntR A ALU B 123 IR CU Passo 3 42 Passo 1 Ck Passo 24 Passo DR 42 AR 123 1023 READ OK indirizzi dati controlli 21 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Sequenza di scrittura 0 SR PC IntR A ALU B 123 123 IR CU Passo 2 Passo 1 Ck DR 70 70 42 Passo 5 3 AR 123 Passo 4 1023 WRITE OK indirizzi dati controlli 22 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 • • • • Interfacce delle periferiche Costituiscono gli elementi circuitali per il collegamento dell’elaboratore alla periferia Molto diverse a seconda del tipo di periferica (alcune sono “intelligenti”, ossia dotate di proprie unità di controllo per convertire ed elaborare dati al posto della CPU), si parla di controller Contengono registri e memorie tampone (buffer) per ospitare i comandi da inviare alla periferica, scambiare dati con essa e controllarne il funzionamento Componenti delle interfacce: – Registro dati della periferica (PDR, Peripheral Data Register): consente lo scambio bidirezionale di dati con la periferica; collegato al bus dati – Registro comandi della periferica (PCR, Peripheral Command Register): contiene il comando che la periferica dovrà eseguire; collegato al bus controlli – Registro di stato della periferica (PSR, Peripheral Status Register): contiene informazioni sullo stato della periferica • Esse sono trasferite alla CPU tramite il bus oppure se il registro è direttamente collegato alla CPU con circuiti elettrici speciali, l’informazione concorre a riempire l’IntR 23 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Interfacce delle periferiche Interfaccia periferica 1 Peripheral Data Register (PDR) Interfaccia periferica 2 Peripheral Data Dato da leggere/scrivere Register (PDR) Peripheral Command Register (PCR) Comando daPeripheral eseguireCommand Peripheral State Register (PSR) Stato della periferica Register (PSR) Register (PCR) Peripheral State Bus di sistema 24 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 Esempio Supponiamo di voler calcolare il valore dell’espressione: z = (a+b)·(c+d) leggendo i valori delle variabili a, b, c, d dal dispositivo di input e scrivendo il risultato sul dispositivo di output 1. 2. 3. 4. 5. Leggi dal dispositivo di input il valore delle variabili a, b, c, d Somma il valore di a al valore di b Salva il risultato parziale ottenuto Somma il valore di c al valore di d Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato 6. Scrivi sul dispositivo di output il risultato della valutazione complessiva 7. Termina l’esecuzione del programma. 25 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 1. 2. 3. 4. 5. 6. 7. Esempio Scrivi nella cella di memoria centrale riservata al valore della variabile a il valore letto dal dispositivo di input (disponibile nel registro dati della periferica). Ripeti per b, c, d Somma il valore di a al valore di b – Copia il contenuto della cella di memoria riservata ad a nel registro A – Copia il contenuto della cella di memoria riservata a b nel registro B – Somma il contenuto dei registri A e B Salva il risultato parziale, contenuto nel registro A, in una cella di memoria predisposta per il risultato (z) Somma il valore di c al valore di d – Copia il contenuto della cella di memoria riservata a c nel registro A – Copia il contenuto della cella di memoria riservata a d nel registro B – Somma il contenuto dei registri A e B Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato – Copia il contenuto della cella riservata a z nel registro B (z e B contengono ora a+b, mentre A contiene c+d) – Moltiplica il contenuto dei registri A e B Scrivi sul dispositivo di output il risultato della valutazione complessiva – Memorizza il risultato appena calcolato (e disponibile nel registro A) nella cella di memoria riservata a z – Copia il contenuto della cella di memoria riservata a z nel registro dati della periferica di uscita Termina l’esecuzione del programma. 26 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica A.A. 2009-10 0100000000010000 0100000000010001 0100000000010010 0100000000010011 0000000000010000 0001000000010001 0110000000000000 0010000000010100 0000000000010010 0001000000010011 0110000000000000 0001000000010011 1000000000000000 0010000000010100 0101000000010100 1101000000000000 27 di 31 Forma binaria Leggi un valore dall’input e mettilo nella cella 16 (a) Leggi un valore dall’input e mettilo nella cella 17 (b) Leggi un valore dall’input e mettilo nella cella 18 (c) Leggi un valore dall’input e mettilo nella cella 19 (d) Carica il contenuto della cella 16 (a) nel registro A Carica il contenuto della cella 17 (b) nel registro B Somma i registri A e B Scarica il contenuto di A nella cella 20 (z) (ris.parziale) Carica il contenuto della cella 18 (c) nel registro A Carica il contenuto della cella 19 (d) nel registro B Somma i registri A e B Carica il contenuto della cella 20 (z) (ris. parziale) in B Moltiplica i registri A e B Scarica il contenuto di A nella cella 20 (z) (ris. totale) Scrivi il contenuto della cella 20 (z) (ris. totale) in output Halt Architettura di un calcolatore M. Ruta Fondamenti di Informatica Stato della memoria A.A. 2009-10 28 di 31 Cella 0 0100000000010000 1 0100000000010001 2 0100000000010010 3 0100000000010011 4 0000000000010000 5 0001000000010001 6 0110000000000000 7 0010000000010100 8 0000000000010010 9 0001000000010011 10 0110000000000000 11 0001000000010011 12 1000000000000000 13 0010000000010100 14 0101000000010100 15 1101000000000000 Spazio riservato per a 16 Spazio riservato per b 17 Spazio riservato per c 18 Spazio riservato per d 19 Spazio riservato per z 20 Architettura di un calcolatore M. Ruta Fondamenti di Informatica Fetch 1a istruzione A.A. 2009-10 Memoria centrale (MM) Passo 1 0 PC 0100000000010000 Passo 2 0000000001 0000000000 Passo 4 AR 0000000000 1023 DR 0100000000010000 Passo 3 IR 29 di 31 Architettura di un calcolatore 0100000000010000 M. Ruta Fondamenti di Informatica A.A. 2009-10 IR Interpretazione 1a istruzione 0100000000010000 Codice operativo 0100 = leggi da input 30 di 31 Architettura di un calcolatore M. Ruta Fondamenti di Informatica Esecuzione 1a istruzione A.A. 2009-10 Memoria centrale (MM) 0 Indirizzo operando 00000010000 = cella 16 IR 0100000000010000 16 Passo 3 0001000000011111 Passo 1 AR 0000010000 1023 DR 0001000000011111 Passo 2 Valore di a letto dall’input (es. 4127) 31 di 31 Architettura di un calcolatore PDR 0001000000011111 M. Ruta