Lezione 3: Architettura del calcolatore Architettura di Von Neumann BUS, CPU e Memoria centrale Ciclo di esecuzione delle istruzioni Introduzione all'Informatica - corso E Architettura del calcolatore Introduzione all'Informatica - corso E Il calcolatore è: uno strumento programmabile per rappresentare, memorizzare ed elaborare informazioni un sistema, costituito da molte componenti Studiare l’architettura di un sistema significa: individuare ciascun componente del sistema comprendere i principi generali di funzionamento di ciascun componente comprendere come le varie componenti interagiscono 2 Introduzione all'Informatica - corso E Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software 3 Hardware: architettura Introduzione all'Informatica - corso E L’architettura dell’hardware di un calcolatore reale è molto complessa La macchina di Von Neumann è un modello semplificato dei calcolatori moderni Von Neumann progettò, verso il 1945, il primo calcolatore con programmi memorizzabili anziché codificati mediante cavi e interruttori 4 Macchina di Von Neumann Introduzione all'Informatica - corso E La macchina di Von Neumann è composta da 4 tipi di componenti funzionali: unità centrale di elaborazione (CPU – Central Processing Unit) esegue istruzioni per l’elaborazione dei dati svolge anche funzioni di controllo memoria centrale memorizza e fornisce l’accesso a dati e programmi in esecuzione interfacce di ingresso e uscita componenti di collegamento con le periferiche del calcolatore bus svolge funzioni di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali 5 Macchina di Von Neumann Introduzione all'Informatica - corso E Ogni componente è specializzata nello svolgimento di una tipologia omogenea di funzionalità: Eccezione: l’unità centrale di elaborazione svolge sia funzionalità di elaborazione sia di controllo 6 Introduzione all'Informatica - corso E Trasferimento Obiettivo: permettere lo scambio di informazioni tra le varie componenti funzionali del calcolatore trasferimento dei dati e delle informazioni di controllo Due possibili soluzioni collegare ciascun componente con ogni altro componente collegare tutti i componenti a un unico canale (bus) L’utilizzo di un bus favorisce la modularità e l’espandibilità del calcolatore 7 Introduzione all'Informatica - corso E Periferiche e interfacce di ingresso-uscita (I/O) Un calcolatore può essere collegato a vari dispositivi di ingresso e/o uscita (periferiche) esempi: tastiera, mouse, schermo, stampanti, modem anche le memorie di massa (es., unità disco e lettore di CDROM) sono considerate periferiche Nella macchina di Von Neumann, le periferiche non fanno parte del calcolatore ogni periferica è controllata con un’opportuna interfaccia una interfaccia ha il compito di tradurre i segnali interni del calcolatore in un formato comprensibile alla periferica stessa, e viceversa 8 Memorizzazione Introduzione all'Informatica - corso E Un calcolatore memorizza i dati, che rappresentano informazioni di interesse i programmi per l’elaborazione dei dati Unità responsabile della memorizzazione: memoria 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 o una singola istruzione Un’unità di memoria fornisce due sole operazioni memorizzazione di un valore in una cella (scrittura) accesso al valore memorizzato in una cella (lettura) 9 Introduzione all'Informatica - corso E CPU L’unità centrale di elaborazione (CPU) o processore presiede all’esecuzione di un programma il programma è memorizzato in memoria centrale come sequenza di istruzioni del linguaggio macchina Linguaggio macchina o assembly è il linguaggio per cui la CPU si comporta da esecutore La CPU è composta da unità di controllo unità aritmetico-logica 10 Introduzione all'Informatica - corso E Controllo Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di controllo è un componente dell’unità centrale di elaborazione ogni componente del calcolatore esegue solo le azioni che gli vengono richieste dall’unità di controllo il controllo consiste nel coordinamento dell’esecuzione temporale delle operazioni sia internamente all’unità di elaborazione sia negli altri elementi funzionali il controllo avviene in modo sincrono rispetto alla scansione temporale imposta dall’orologio di sistema (clock) 11 Introduzione all'Informatica - corso E Elaborazione L’elaborazione è svolta dall’unità aritmetico-logica, che è un componente dell’unità centrale di elaborazione Le istruzioni del linguaggio macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche operazioni relazionali (confronto tra dati) operazioni su caratteri e valori di verità altre operazioni numeriche Un calcolatore sa svolgere poche tipologie di operazioni elementari ma in modo molto efficiente un calcolatore può eseguire decine o centinaia di milioni di istruzioni del linguaggio macchina al secondo 12 Componenti e funzionamento del calcolatore BUS di sistema Introduzione all'Informatica - corso E Caratteristiche del collegamento a BUS Semplicità Introduzione all'Informatica - corso E un’unica linea di connessione Æ costi ridotti di produzione Estendibilità aggiunta di nuovi dispositivi molto semplice Standardizzabilità regole per la comunicazione da parte di dispositivi diversi Lentezza utilizzo in mutua esclusione del bus Limitatà capacità al crescere del numero di dispositivi collegati Sovraccarico del processore (CPU) perchè funge da master sul controllo del bus 14 Bus di sistema Interconnette le componenti interne del calcolatore Introduzione all'Informatica - corso E CPU, memoria ed interfacce a periferiche (I/O, memoria di massa, ...) Collega due unità funzionali alla volta una trasmette e l’altra riceve Funzionamento master/slave la CPU (master) seleziona la connessione da attivare e ordina il trasferimento dei dati 15 Bus di sistema Introduzione all'Informatica - corso E Il bus trasporta dati, indirizzi e comandi Componenti del bus (sottogruppi di linee): Bus dati (data bus) Bus indirizzi (address bus) Bus comandi (command bus) Bus dati (data bus) Serve per trasferire dati tra: memoria centrale e registro dati (MDR) della CPU periferiche e CPU (o memoria centrale) Bidirezionale 16 Bus di sistema Bus indirizzi (address bus) Introduzione all'Informatica - corso E Serve per trasmettere il contenuto del registro indirizzi (MAR) alla memoria (o a una periferica) si seleziona una cella per successive operazioni di lettura o scrittura Unidirezionale Bus comandi (command bus) Serve per inviare comandi verso la memoria (es: lettura o scrittura) o verso una periferica (es.: stampa) Unidirezionale 17 Componenti e funzionamento del calcolatore CPU Introduzione all'Informatica - corso E Introduzione all'Informatica - corso E Unità centrale di elaborazione L’unità centrale di elaborazione è realizzata fisicamente sotto forma di microprocessore i microprocessori sono dispositivi elettronici molto complessi Es: un Pentium II è composto da oltre 7 milioni di transistor in un singolo circuito integrato (chip) L’unità centrale di elaborazione è costituita da Unità di controllo Unità Aritmetico-Logica Registri 19 Introduzione all'Informatica - corso E Struttura del microprocessore 20 Elementi di una CPU Introduzione all'Informatica - corso E CPU Unità di controllo Unità aritmetico logica (ALU) Registri Unità di controllo Svolge funzioni di controllo, decide quali istruzioni eseguire. Unità aritmetico–logica esegue le operazioni aritmetico-logiche (+,-,ecc. , confronto). Registri memoria ad alta velocità usata per risultati temporanei e informazioni di controllo; il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro; esistono registri di uso generico e registri specifici: 21 Introduzione all'Informatica - corso E Registri Esistono registri di uso generico e registri specifici : PC: contatore delle istruzioni (program counter) IR: registro delle istruzioni (instruction register) contiene l’indirizzo della prossima istruzione da eseguire contiene l’istruzione che deve essere eseguita PSW: parola di stato del processore contiene informazioni, opportunamente codificate, sull’esito dell’ultima istruzione che è stata eseguita 22 Registri MAR: registro indirizzi della memoria Introduzione all'Informatica - corso E MDR: registro dati della memoria indirizzo della cella di memoria che deve essere acceduta o memorizzata dato che è stato acceduto o che deve essere memorizzato registri generali per memorizzare gli operandi ed il risultato di una operazione 23 Introduzione all'Informatica - corso E Unità Aritmetico-Logica L'Unità Aritmetico-Logica (ALU) è costituita da un insieme di circuiti in grado di svolgere le operazioni di tipo aritmetico e logico La ALU legge i valori presenti in alcuni registri, esegue le operazioni e memorizza il risultato in un altro registro 24 Introduzione all'Informatica - corso E Struttura del microprocessore 25 Introduzione all'Informatica - corso E Ciclo di esecuzione delle istruzioni La CPU esegue un’istruzione mediante le tre seguenti operazioni di base: Fetch (lettura) Decode (decodifica) Execute (esecuzione) Un programma è eseguito applicando ad ogni istruzione la sequenza fetch-decode-execute ciclo di esecuzione dell’istruzione o ciclo macchina o ciclo fetch-decode-execute 26 Ciclo fetch-decode-execute 1) FETCH: Introduzione all'Informatica - corso E si accede alla prossima istruzione, riferita dal registro contatore dell’istruzione (PC) si porta tale istruzione dalla memoria centrale al Registro Istruzioni (IR) 27 Ciclo fetch-decode-execute 2) DECODE: decodifica dell’istruzione Introduzione all'Informatica - corso E si individua il tipo dell’operazione e gli operandi (dati) usati si trasferiscono i dati nei registri opportuni 3) EXECUTE: esecuzione dell’istruzione si incrementa il registro contatore dell’istruzione (PC) ciascuna azione viene richiesta al componente opportuno 28 Istruzioni del linguaggio macchina Istruzioni per l’elaborazione dei dati Introduzione all'Informatica - corso E aritmetiche logiche (AND, OR, NOT) relazionali (maggiore, minore, uguale, ...) Istruzioni per il controllo del flusso di esecuzione sequenza selezione ciclo salto (Jump) ad una data istruzione Istruzioni per il trasferimento di informazioni dati ed istruzioni fra CPU e memoria dati fra CPU e dispositivi di I/O (tramite interfacce) 29 Introduzione all'Informatica - corso E Clock L’orologio interno (clock) del microprocessore emette un segnale di sincronizzazione per tutto il sistema si misura in cicli/secondo [Hz] 400 MHz = 400 x 106 Hz = 4 x 108 Hz ⇒ ciclo è eseguito in 2.5 x 10-9 s = 2.5ns Ad ogni impulso di clock si esegue un ciclo macchina la velocità di un microprocessore dipende dalla frequenza del suo clock, ma non solo poiché l’esecuzione di un’istruzione può richiedere più cicli 30 Caratteristiche dei microprocessori Repertorio di istruzioni Introduzione all'Informatica - corso E L’insieme delle istruzioni che costituiscono il linguaggio macchina del processore (CISC, RISC, C-RISC) Frequenza di clock Ampiezza del bus numero di bit nel bus interno del processore Co-processori processori specializzati per operazioni complesse (es: co-processore matematico) Memoria cache memoria veloce interna al processore, che consente di accedere più velocemente ai dati da elaborare 31 Introduzione all'Informatica - corso E Evoluzione dei microprocessori 32 Componenti e funzionamento del calcolatore Memoria centrale Introduzione all'Informatica - corso E Introduzione all'Informatica - corso E Memoria centrale La memoria centrale (o principale) è la componente in cui si immagazzinano e da cui si accedono dati e programmi È l’unico tipo di memoria che può essere acceduto direttamente dal processore è costituita da celle (o locazioni) ogni cella può contenere una quantità fissata di memoria (numero di bit), detta parola 34 Memoria centrale Introduzione all'Informatica - corso E Ogni cella è caratterizzata da indirizzo, un numero che identifica la cella e ne consente l’accesso valore, la sequenza di bit memorizzata in essa La memoria fornisce le operazioni di: lettura: consultazione del valore di una cella con un dato indirizzo scrittura: modifica del valore di una cella con un dato indirizzo 35 Memoria centrale Introduzione all'Informatica - corso E Le operazioni avvengono sotto il controllo della CPU La CPU seleziona una particolare cella di memoria ponendone l’indirizzo nel Registro Indirizzi (MAR) Se il Registro Indirizzi (MAR) è costituito da N bit, si possono indirizzare 2N celle di memoria, da 0 a 2N –1 Nei PC attuali il MAR è almeno di 32 bit Operazione di lettura: copia nel Registro Dati (MDR) il contenuto della cella di memoria indirizzata dal Registro Indirizzi (MAR) Operazione di scrittura (store) copia il contenuto del Registro Dati (MDR) nella cella di memoria indirizzata dal Registro Indirizzi (MAR) 36 Introduzione all'Informatica - corso E Memoria centrale Load 0 1 2 1 R2 cod. op.mem. Ind1/Reg1 Ind2/Reg2 ... istr. lettura (load)/scrittura (store) in memoriaregistri add R1 cod. op. reg. Reg1 R2 Reg2 istr. per operazione tra due registri ... + -2 00003752 k numero rappr.con segno, esponente e mantissa 37 Esempio di esecuzione di un programma in linguaggio macchina Introduzione all'Informatica - corso E Registri CPU 1000 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 1000 R1 R2 30 PC 3568 44 1000 IR MAR MDR 38 Esecuzione istruzione 1000: fetch Introduzione all'Informatica - corso E Registri CPU 1000 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 1000 R1 R2 30 PC 3568 44 1000 IR MAR 1000 MDR Load 3568 R1 39 Esecuzione istruzione 1000 (2): fetch Introduzione all'Informatica - corso E Registri CPU 1000 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 1000 3568 44 R1 R2 30 PC 1000 IR Load MAR 1000 MDR Load 3568 R1 3568 R1 40 Esecuzione istruzione 1000 (3): decode + execute Introduzione all'Informatica - corso E Registri CPU 1000 Load 1001 Add 1002 Store R1 1003 Jump 1000 3568 3568 R1 R1 R2 44 R1 44 R2 30 3568 PC 1001 IR Load MAR 1000 MDR Load 3568 R1 3568 R1 41 Esecuzione istruzione 1001 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 1000 Introduzione all'Informatica - corso E 1000 R1 74 44 R1 74 R2 30 R2 30 NB.: E’ stata attivata la ALU 3568 44 R1 = 44+30 = 74 42 Introduzione all'Informatica - corso E Esecuzione istruzione 1002 1000 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 1000 3568 R1 74 R2 30 74 74 43 Introduzione all'Informatica - corso E Esecuzione istruzione 1003 1000 Load 3568 R1 1001 Add R1 R2 1002 Store R1 3568 1003 Jump 1000 3568 R1 R2 74 30 74 44 Introduzione all'Informatica - corso E Struttura semplificata della memoria centrale 45 Memorie RAM e memorie ROM Le memorie RAM (random access memory) Introduzione all'Informatica - corso E possono essere accedute sia in lettura che in scrittura sono volatili i dati memorizzati vengono persi allo spegnimento del calcolatore La memorie ROM (read only memory) sono persistenti mantengono il contenuto anche senza alimentazione permettono solo la lettura dei dati (o programmi) memorizzano alcuni programmi di sistema (firmware) Evoluzioni delle memorie ROM: PROM (scritte una sola volta) EPROM (scritte più volte) 46 Memoria cache Memoria “intermedia” fra registri e RAM Introduzione all'Informatica - corso E La RAM ha tempi di accesso molto alti rispetto alla velocità dei microprocessori e ne ritarda l’elaborazione Memorizza il contenuto di celle della RAM che potrebbero essere acceduti nuovamente dalla CPU sfrutta la località dei programmi (90%-10%) Strategia di utilizzo: la prima volta che la CPU carica dati dalla memoria centrale, questi sono caricati anche sulla cache le volte successive, i dati possono essere letti dalla cache invece che dalla memoria centrale (più lenta) Tipi di memoria cache: cache di I° livello: contenuta nel microprocessore cache di II° livello: aggiungibile successivamente 47