DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Marco D. Santambrogio – [email protected] Ver. aggiornata al 7 Marzo 2012 1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Modello concettuale, funzionale e architetturale di un calcolatore • Codifica delle istruzioni e dei dati per l’esecuzione automatica • Architettura dei calcolatori • Struttura e principi di funzionamento ▶ della CPU ▶ della memoria centrale 2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 3 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Flessibilità nel calcolo, ▶ architettura non specializzata per un solo tipo di utilizzo ma adatta a svolgere diversi compiti; • Modularità della struttura ▶ a ogni componente viene demandato lo svolgimento di una funzione specifica del sistema complessivo; • Scalabilità dei componenti ▶ ognuno dei quali può essere sostituito con uno funzionalmente equivalente ma in grado di fornire prestazioni migliori; • Standardizzazione dei componenti ▶ per facilitarne la sostituzione in caso di malfunzionamenti; • Abbattimento dei costi ▶ grazie alla produzione su vasta scala dei componenti; • Semplicità di installazione e di esercizio del sistema • Disponibilità di applicazioni a basso prezzo di vendita 4 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1. Elaborazione 2. Memorizzazione Interconnessione 3. Comunicazione (interfaccia) 5 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1. Elaborazione Unità Centrale di Elaborazione Collegamenti (BUS/Cavi) 2. Memoria Memorizzazione Memoria Elettronica Magnetica Interconnessione 3. Comunicazione (interfaccia) Periferiche 6 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Memoria di massa PC Video/tastiera (terminale) ALU Registri CPU Memoria Interfaccia di I/O Interfaccia di I/O dati BUS indirizzi controllo 7 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Connettori per schede di I/O aggiuntive Socket per la CPU Connettori per la memoria Connettori per dischi fissi 8 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Semplicità ▶ 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 9 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE RAM CPU Scheda madre (motherboard) Bus dati Bus indirizzi Bus di controllo Interfacce di I/O Interfaccia di I/O Tastiera e mouse Altoparlanti Interfacce di I/O Memoria di massa Schermo 10 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Partecipa al progetto ENIAC • Due intuizioni fondamentali: ▶ memorizzare i programmi in forma digitale nella stessa memoria dei dati per rendere più semplice la programmazione (rispetto all’utilizzo di cavi e interruttori) ▶ utilizzare l’aritmetica binaria invece di quella decimale (due valvole per bit invece di dieci per cifra) • Il suo progetto (macchina di von Neumann) è ancora oggi alla base di quasi tutti i calcolatori digitali 11 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Inventato ai Bell Labs nel 1948 da John Bardeen, Walter Brattain e William Shockley: ▶ nel giro di 10 anni rivoluziona la ricerca sui calcolatori; ▶ alla fine degli anni ’50 i calcolatori a valvole sono già obsoleti. • Digital Equipment Corporation (DEC) ▶ fondata nel 1957 da Kenneth Olsen; ▶ nel 1961 realizza il PDP–1, il primo minicalcolatore. • Sviluppo della tecnologia d’integrazione: ▶ decine (SSI), centinaia (MSI) e migliaia (LSI) di transistor sono integrati sullo stesso pezzo di silicio (chip); ▶ possibilità di realizzare calcolatori più piccoli, più veloci e meno costosi dei loro predecessori. • Due famiglie di calcolatori rappresentative: ▶ 360 di IBM ▶ PDP-11 di DEC 12 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 105–107 transistor integrati per chip. • Passaggio dai minicalcolatori, alle workstation, ai Personal Computer (PC): ▶ usati per applicazioni fortemente interattive (elaborazione testi, fogli elettronici, …); ▶ in origine proposti come kit da assemblare, senza software; ▶ due architetture principali: Apple (basato su CPU Motorola e PowerPC) primo PC, progettato da Steve Jobs e Steve Wozniak nel ’78, architettura proprietaria! IBM e compatibili (CPU Intel e SW Microsoft – “Wintel”) realizzato utilizzando componenti “off the shelf”, architettura di dominio pubblico, quindi replicabile da altri (cloni)! 13 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 14 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Algoritmo ▶ descrizione della soluzione di problema scritta in modo da poter essere eseguita da un esecutore (eventualmente diverso dall’autore dell’algoritmo) ▶ sequenza di istruzioni che operano su dati. • Programma ▶ algoritmo scritto in modo da poter essere eseguito da un calcolatore (esecutore automatico) • Per scrivere un programma è necessario rappresentare istruzioni e dati in un formato tale che l’esecutore automatico sia capace di memorizzare e manipolare. 15 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Alfabeto dei simboli ▶ cifre “0”, “1”, …, “9”, separatore decimale (“,”), separatore delle migliaia (“.”) e segni positivo (“+”) o negativo (“–”). • Regole di composizione (sintassi), che definiscono le successioni “ben formate” ▶ “1.234,5” è la rappresentazione di un numero; ▶ “1,23,45” non lo è. • Codice (semantica) ▶ “1.234,5” = 1×103 + 2×102 + 3×101 + 4×100 + 5×10–1 ▶ “1,23,45” = ?? • Lo stesso alfabeto può essere utilizzato con codici diversi: ▶ “123,456” = 1×102 + 2×101 + 3×100 + 4×10–1 + 5×10–2 + 6×10–3, [IT] ▶ “123,456” = 1×105 + 2×104 + 3×103 + 4×102 + 5×101 + 6×100, [UK] 16 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Chi ha “inventato” il bit? Claude Shannon nel 1948 nel paper: “A Mathematical Theory of Communication” 17 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Alfabeto binario: usiamo dispositivi con solo due stati • Problema: assegnare un codice univoco a tutti gli oggetti compresi in un insieme predefinito (e.g. studenti) • Quanti oggetti posso codificare con k bit: ▶ ▶ ▶ ▶ ▶ 1 bit 2 stati (0, 1) 2 oggetti (e.g. Vero/Falso) 2 bit 4 stati (00, 01, 10, 11) 4 oggetti 3 bit 8 stati (000, 001, …, 111) 8 oggetti … k bit 2k stati 2k oggetti • Quanti bit mi servono per codificare N oggetti: ▶ N ≤ 2k k ≥ log2N k = log2N (intero superiore) • Attenzione: ipotesi implicita che i codici abbiano tutti la stessa lunghezza 18 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Problema: assegnare un codice binario univoco a tutti i giorni della settimana • Giorni della settimana: N = 7 k ≥ log27 k = 3 • Con 3 bit possiamo ottenere 8 diverse configurazioni: ▶ Ne servono 7, quali utilizziamo? ▶ Quale configurazione associamo a quale giorno? • Attenzione: ipotesi che i codici abbiano tutti la stessa lunghezza 19 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lunedì Lunedì Martedì Domenica Sabato Venerdì Mercoledì Lunedì Giovedì Mercoledì Martedì Sabato Domenica Martedì Lunedì Giovedì Mercoledì Sabato Venerdì Martedì Mercoledì Giovedì Venerdì Sabato Venerdì Giovedì Domenica 1 bit 2 “gruppi” 2 bit 4 “gruppi” Domenica 3 bit 8 “gruppi” 20 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lunedì Martedì Domenica Giovedì Giovedì Giovedì Sabato Sabato Martedì Sabato Martedì Venerdì Domenica Mercoledì Giovedì Mercoledì Sabato Domenica Mercoledì Martedì Domenica Mercoledì Venerdì Venerdì Lunedì Venerdì Lunedì Lunedì 1 bit 2 “gruppi” 2 bit 4 “gruppi” 3 bit 8 “gruppi” 21 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Quanti sono gli oggetti compresi nell’insieme? ▶ 26 lettere maiuscole + 26 minuscole 52 ▶ 10 cifre ▶ Circa 30 segni d’interpunzione ▶ Circa 30 caratteri di controllo (EOF, CR, LF, …) circa 120 oggetti complessivi k = log2120 = 7 • Codice ASCII: utilizza 7 bit e quindi può rappresentare al massimo 27=128 caratteri ▶ Con 8 bit (= byte) rappresento 256 caratteri (ASCII esteso) ▶ Si stanno diffondendo codici più estesi (e.g. UNICODE) per rappresentare anche i caratteri delle lingue orientali 22 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 010 sp 011 0 100 @ 101 P 110 ` 111 p ! 1 A Q a q " 2 B R b r # 3 C S c s $ 4 D T d t % 5 E U e u & 6 F V f v ' 7 G W g w ( 8 H X h x ) 9 I Y I Y * : J Z j z + ; K [ k { , < L \ l | = M ] m } . / > ? N O ^ _ n o ~ canc 1111 0000 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 23 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE bit = solo due stati, “0” oppure “1”. Byte = 8 bit, quindi 28 = 256 stati KiloByte [KB] = 210 Byte = 1024 Byte ~ 103 Byte MegaByte [MB] = 220 Byte = 1'048'576 Byte ~ 106 Byte GigaByte [GB] = 230 Byte ~ 109 Byte TeraByte [TB] = 240 Byte ~ 1012 Byte PetaByte [PB] = 250 Byte ~ 1015 Byte ExaByte [EB] = 260 Byte ~ 1018 Byte 24 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si segue lo schema presentato per i caratteri alfanumerici: ▶ quali e quante sono le istruzioni da codificare? ▶ qual è la lunghezza delle successioni di bit da utilizzare ? ▶ qual è la corrispondenza tra istruzioni e successioni di bit ? Istruzione Codice Istruzione Codice Istruzione Codice ADD 0111 1100 LOAD 1110 1000 IF_EQ 0100 1001 SUB 0111 1101 STORE 1111 1000 GOTO 0100 1000 AND 0111 1110 ……… ……… RETURN 0100 1100 ……… ……… ……… ……… ……… ……… Istruzioni aritmetico-logiche Istruzioni per il trasferimento dati Istruzioni di controllo 25 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • … è necessario far riferimento ai dati necessari per completare l’esecuzione dell’istruzione, ▶ e.g. addizione: è necessario che sia specificato (anche implicitamente) dove leggere i due operandi da sommare e dove scrivere il risultato; • il numero dei dati da specificare è variabile, in funzione delle istruzioni. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 Codice Operativo Destinazione Sorgente 1 Codice Operativo Destinazione Sorgente 1 Codice Operativo 5 6 7 8 9 0 1 Sorgente 2 2 3 4 5 6 7 8 9 0 1 Estensione del codice operativo Operando (immediato) Operando (immediato) 26 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 27 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Supporto alla CPU: deve fornire alla CPU dati e istruzioni il più rapidamente possibile • Archivio: deve consentire di archiviare dati e programmi garantendone la conservazione e la reperibilità anche dopo elevati periodi di tempo • Diverse esigenze: ▶ velocità per il supporto alla CPU ▶ non volatilità ed elevate dimensioni per l’archivio • Diverse tecnologie ▶ elettronica: veloce, ma costosa e volatile ▶ magnetica e ottica: non volatile ed economica, ma molto lenta 28 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Velocità ▶ tempo di accesso (access time) (quanto passa tra una richiesta e la relativa risposta) ▶ velocità di trasferimento (transfer rate) (quanti byte al secondo si possono trasferire) • Volatilità ▶ cosa succede quando la memoria non è alimentata? ▶ per quanto tempo i dati vi rimangono immagazzinati? • Capacità ▶ quanti byte può contenere? qual è la dimensione massima? • Costo (per bit) • Modalità di accesso ▶ ▶ ▶ ▶ diretta (o casuale): il tempo di accesso è indipendente dalla posizione sequenziale: il tempo di accesso dipende dalla posizione mista: combinazione dei due casi precedenti associativa: indicato il dato, la memoria risponde indicando l’eventuale posizione che il dato occupa in memoria. 29 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 30 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Mantiene al proprio interno i dati e le istruzioni dei programmi in esecuzione • Memoria ad accesso “casuale” • Tecnologia elettronica ▶ veloce ma volatile e costosa • Due “eccezioni” ▶ ROM: elettronica ma permanente e di sola lettura ▶ Flash: elettronica ma non volatile e riscrivibile 31 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • I bit nelle memorie sono raggruppati in celle: ▶ tutte le celle sono formate dallo stesso numero di bit; ▶ una cella composta da k bit, è in grado di contenere una qualunque tra le 2k combinazioni diverse di bit. • Ogni cella ha un indirizzo: ▶ serve come accesso all’informazione; ▶ in una memoria con N celle gli indirizzi vanno da 0 a N–1. • La cella è l’unità indirizzabile più piccola. In quasi tutti i calcolatori è di 8 bit (un byte). • I byte vengono raggruppati in parole (che oggi sono di 32/64 bit), su cui la CPU esegue le operazioni. 32 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Anche gli indirizzi della memoria sono rappresentati come numeri binari: ▶ un indirizzo di M bit consente di indirizzare 2M celle; ▶ per 6 o 8 celle bastano 3 bit, per 12 celle ne servono 4; ▶ il numero di bit nell’indirizzo determina il numero massimo di celle indirizzabili nella memoria ed è indipendente dal numero di bit per cella (una memoria con 212 celle richiede sempre 12 bit di indirizzo, quale che sia la dimensione di una cella). • Una memoria può essere organizzata in diversi modi: ▶ per esempio, con 96 bit possiamo avere 6 celle di 16 bit (6*16=96), 8 celle di 12 bit (8*12=96) 12 celle di 8 bit (12*8=96). ▶ In genere si considerano celle di 8 bit (1 byte). 33 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 7 7 8 parole da 12 bit 8 6 parole da 16 bit 9 10 12 parole da 8 bit 11 34 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE linee di selezione parola indirizzo 0110due • il contenuto è 01101100; • l’operazione è di lettura (load) o di scrittura (store) a seconda dei comandi presenti sul bus di controllo 0110 Bus indirizzi DECODIFICATORE • Viene selezionata la parola di linea 0 0 linea 1 0 linea 2 0 linea 3 0 linea 4 0 linea 5 0 linea 6 1 linea 7 0 linea 8 0 linea 9 0 linea 10 0 linea 11 0 linea 12 0 linea 13 0 linea 14 0 linea 15 0 16 celle di memoria di 8 bit ciascuna 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 parola selezionata leggi/scrivi Bus di controllo Dato (letto o da scrivere) Bus dati 35 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Le CPU sono sempre state più veloci delle memorie ▶ l’aumento di integrazione ha consentito di realizzare CPU pipeline e super scalari, molto efficienti e veloci; ▶ nelle memorie è aumentata la capacità più che la velocità. • L’accesso alla memoria passa attraverso il bus ▶ la frequenza di funzionamento del bus è molto più bassa di quella della CPU; ▶ il bus può essere impegnato ad effettuare trasferimenti controllati da dispositivi di I/O “autonomi” (e.g. DMA). • È difficile riordinare le istruzioni in modo da poter sfruttare i tempi di attesa della memoria. • È possibile fare memorie molto veloci se stanno nel chip della CPU, ma sono piccole e costose. 36 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Memorie di gran capacità, relativamente lente, economiche ed accessibili tramite il bus: ▶ MGL ovvero Memoria Grossa e Lenta; ▶ dimensioni pari a circa 10 unità; ▶ tempo di accesso (TA) di circa 10 unità. • Memorie veloci, integrate nello stesso chip della CPU, ma costose: ▶ MPV ovvero Memoria Piccola e Veloce; ▶ dimensioni pari a circa 1 unità; ▶ tempo di accesso pari a circa 1 unità. • Obiettivo: realizzare una memoria grossa e veloce ▶ dimensioni pari a circa quelle della memoria grossa; ▶ prestazioni pari a circa quelle della memoria veloce. 37 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sistema di memoria CPU Memoria piccola e veloce Livello 1 Trasferimento di dati Livello 2 Memoria grande e lenta 38 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Località spaziale: quando si accede all’indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A. ▶ le istruzioni del codice vengono in genere lette da locazioni consecutive della 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. 39 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Tecnologia elettronica (veloce ma volatile) • Gerarchia di memoria: ai livelli più alti corrispondono le tecnologie più veloci ma anche più costose ▶ cache interna (Static RAM – SRAM) ▶ cache esterna (SRAM) ▶ memoria RAM (Dynamic RAM – DRAM e sue varianti) ▶ area di swap su memoria di massa 40 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ottenuta per “generalizzazione” dell’applicazione del principio di località e tipicamente costituita da 1. 2. 3. 4. 5. registri contenuti nella CPU (qualche KB) cache (da circa 32KB a circa 4096KB) memoria principale (da circa 512MB a qualche GB) dischi fissi (da qualche centinaio di GB a qualche TB) nastri magnetici e dischi ottici (da qualche centinaio di GB a qualche TB per ogni supporto) Man mano che ci si sposta verso il basso nella gerarchia aumenta il valore dei parametri fondamentali: ▶ ▶ ▶ aumenta il tempo di accesso; aumenta la capacità di memorizzazione; ma diminuisce il costo per bit. 41 RAM Supporti esterni tecnologia tecnologia magnetica ottica (HD esterni) (CD, DVD) tecnologia elettronica (flash disk) Involucro esterno del calcolatore (case) Cache II liv Scheda madre (motherboard) Cache I liv Circuito Integrato (chip) Registri CPU DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Disco fisso (hard disk) tecnologia magnetica 42 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Livello Capacità Tempo di accesso Transfer rate (GB/s) Registri ~ 1 KB ~ 0.2 ns (1 ciclo di clock) – Cache I livello ~ 32 KB ~ 0.4 ns (2/4 cicli di clock) – Cache II livello ~ 1/2 MB ~ 1/2 ns (5/10 cicli di clock) ~ 100 Cache III livello ~ 2/8 MB ~ 5 ns ~ 50 Memoria centrale ~ 2/8 GB ~ 50 ns (1ª parola richiesta) ~ 10 ns (parole successive) ~ 5/10 Dischi interni > 300 GB ~ 10 ms 0.15/0.6 Dischi esterni > 300 GB ~ 10 ms ~ 0.05 43 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Unità Centrale di Elaborazione 44 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 45 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Un calcolatore basato sull’architettura di Von Neumann esegue un programma sulla base dei seguenti principi: ▶ dati e istruzioni sono memorizzati in una memoria unica che permette sia la scrittura che la lettura; ▶ i contenuti della memoria sono indirizzati in base alla loro posizione, indipendentemente dal tipo di dato o istruzione contenuto; ▶ le istruzioni vengono eseguite in modo sequenziale. • Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina. Le istruzioni scritte in linguaggio macchina sono piuttosto rudimentali: ▶ il concetto di tipo di dato è quasi assente, ▶ il numero di operandi è limitato (in genere non più di due), ▶ il numero di operazioni previste è ridotto. Struttura istruzione codice operativo dest src1 src2 Linguaggio assemblatore add R01 R02 R03 Linguaggio macchina 21/12/2015 000000 00000 100000 00001 00010 00011 Informatica e cultura dell’informazione – capitolo 1 – Il sistema di elaborazione 46 46 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fetch Decode Execute 47 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tempo Istruzione 1 Lettura Istruzione 2 Istruzione 3 Decodifica Esecuzione Lettura Decodifica Esecuzione Lettura Decodifica Esecuzione Ordine di esecuzione delle istruzioni 48 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Data path (o percorso dei dati) ▶ è la parte che si occupa dell’effettiva elaborazione dei dati; ▶ comprende dispositivi diversi una o più unità aritmetico-logiche, dette ALU (Arithmetic Logic Unit); alcune unità di memorizzazione temporanea, i 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). • Unità di controllo ▶ coordina le operazioni di tutto il processore (anche quelle del data path!); ▶ regola il flusso dei dati e indica quali registri debbano essere collegati agli ingressi e all’uscita dell’ALU; ▶ invia all’ALU il codice dell’operazione da eseguire; ▶ riceve indicazioni sull’esito dell’operazione appena eseguita dall’ALU e gestisce opportunamente queste informazioni; ▶ comprende alcuni registri di uso specifico Program Counter (PC) – qual è l’istruzione successiva; Instruction Register (IR) – istruzione in corso d’esecuzione; Program Status Word (PSW) … 49 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Istruzione (e.g. add) Registri R00 R01 R02 X R03 Y … … … … Registri ingresso ALU Registro uscita ALU X A L U X + Y esito X + Y Y 50 Bus indirizzi Data path Unità di controllo Bus dati CPU Bus controllo DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Collegamenti per il trasferimento dati PSW Collegamenti per il trasferimento istruzioni ALU IR Registri PC Memoria Collegamenti di controllo 51 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Ipotizziamo che ▶ si debba eseguire l’istruzione A ⟵ A + B + C (assegna alla variabile A la somma del contenuto delle variabili A, B e C); ▶ le corrispondenti istruzioni in linguaggio macchina si trovino all’indirizzo 789, 790, 791, … (come riportato nella tabella sottostante); ▶ le variabili A, B e C si trovino rispettivamente nelle celle di memoria 4000 (A), 4004 (B) e 4008 (C). Num Istruzione Commento … … … … 789 load R02,4000 trasferisce il contenuto della cella 4000 (A) nel registro R02 790 load R03,4004 trasferisce il contenuto della cella 4004 (B) nel registro R03 791 add R01,R02,R03 somma il contenuto dei registri R02 e R03 e scrive il risultato in R01 792 load R02,4008 trasferisce il contenuto della cella 4008 (C) nel registro R02 793 add R01,R01,R02 somma il contenuto dei registri R01 e R02 e scrive il risultato in R01 794 store R01,4000 … trasferisce il contenuto del registro R01 nella cella 4000 (A) … … … 52 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 R02 4004 1918 R01 4008 2006 … … … … … ALU PSW Registri IR … Istruzioni Memoria CPU R05 R03 0789 Bus indirizzi Collegamenti per il trasferimento istruzioni Bus dati Collegamenti per il trasferimento dati Bus controllo R00 Dati PC R04 Collegamenti di controllo 53 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo … … … … … 0789 load R02,4000 R02,4000 load 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 R02 4004 1918 R01 4008 2006 … … … … … lettura ALU Registri PSW IR … Istruzioni Memoria CPU R05 R03 PC 0789 +1 0790 Bus indirizzi Bus dati Bus controllo R00 Dati R04 54 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 1492 R02 4004 1918 R01 4008 2006 … … … … … lettura ALU PSW Registri … IR load R02,4000 4000 Istruzioni Memoria CPU R05 R03 0790 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 55 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Memoria Data path Unità di controllo lettura ALU PSW Registri … IR load R02,4000 … … … … … 0789 load 0790 load R03,4004 R03,4004 load 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … R02,4000 Istruzioni CPU R05 R03 R02 0790 0791 +1 1492 R01 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 56 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo lettura ALU PSW Registri … IR load R03,4004 4004 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 R02 0791 1492 R01 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 57 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo lettura ALU PSW Registri … IR load R03,4004 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 addadd R01,R02,R03 R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 R02 1918 0792 0791 +1 1492 R01 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 58 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo esito 3410 ALU Registri … PSW add IR add R01,R02,R03 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 R02 1918 0792 1492 R01 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 59 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo lettura ALU Registri … PSW IR add R01,R02,R03 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 R02,4008 load 0793 add 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … R01,R01,R02 Istruzioni Memoria CPU R05 R03 1918 1492 R02 R01 0793 0792 +1 3410 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 60 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo lettura ALU PSW Registri … IR load R02,4008 4008 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 2006 … … … … … Istruzioni Memoria CPU R05 R03 1918 1492 R02 R01 0793 3410 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 61 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo lettura ALU PSW Registri … IR load R02,4008 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 R01,R01,R02 addadd R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 1918 2006 R02 R01 0793 +1 0794 3410 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 62 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path 5416 Unità di controllo esito ALU Registri … PSW add IR add R01,R01,R02 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 1918 2006 R02 R01 0794 3410 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 63 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo lettura ALU Registri … PSW IR add R01,R01,R02 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 R01,4000 store … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 1918 2006 R02 R01 0795 0794 +1 5416 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 64 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Unità di controllo scrittura ALU PSW Registri … IR store R01,4000 4000 … … … … … 0789 load R02,4000 0790 load R03,4004 0791 add R01,R02,R03 0792 load R02,4008 0793 add R01,R01,R02 0794 store R01,4000 … … … … … … … … … … 4000 1492 4004 1918 4008 2006 … … … … … Istruzioni Memoria CPU R05 R03 1918 2006 R02 R01 0795 5416 5416 Bus indirizzi Bus dati Bus controllo R00 Dati PC R04 65 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Famiglia di CPU Anno Frequenza CPU (MHz) Registri/bus dati (bit) Frequenza bus (MT/s) Numero di transistor 8086 1978 4.77 12 8/16 4 12 29 000 80286 1982 8 16 16/16 8 16 134 000 80386 1986 16 33 32/32 16 33 275 000 80486 1989 16 50 32/32 16 33 1 200 000 Pentium 1993 60 200 32/64 60 66 3 100 000 Pentium II 1997 233 400 32/64 66 100 7 500 000 Pentium III 1999 450 1133 32/64 100 133 24 000 000 (Willamette) 2000 1300 2000 32/64 400 533 42 000 000 (Northwood) 2002 2000 3400 32/64 400 533 55 000 000 (Prescott) 2004 2800 3800 32/64 533 800 125 000 000 (Smithfield) 2005 2800 3200 64/64 533 800 230 000 000 (Presler) 2006 2800 3600 64/64 800 1066 376 000 000 (Conroe) 2006 2400 3200 64/64 1066 291 000 000 (Merom) 2006 1666 2333 64/64 667 291 000 000 Pentium 4 Pentium D Core 2 Duo 66 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Osservazione fatta da Gordon Moore nel 1965: il numero dei transistor per cm2 raddoppia ogni X mesi In origine X era 12/18. Correzioni successive hanno portato a fissare X=18/24. Questo vuol dire che c’è un incremento di circa il 40/60% all’anno. 67 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numero di transistor integrati 1'000'000'000 100'000'000 10'000'000 1'000'000 Andamento previsto dalla legge di Moore: il numero di transistor integrati in un chip raddoppia ogni 24 mesi 100'000 Anno 10'000 1978 1982 1986 1990 1994 1998 2002 2006 68 • SISD: Single Instruction Single Data DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • MISD: Multiple Instruction Single Data • SIMD: Single Instruction Multiple Data • MIMD: Multiple Instruction Multiple Data 69 69 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE N Cores #Cores 1000 cores 64 cores 32 Sun IBM Cell Larrabee 8-24 cores Intel 4 Quad core 2 Il mondo dell’informatica è pronto per una rivoluzione Dual core 1 2005 70 2006 2007 2014 Time 70 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Il progresso della tecnologia provoca un aumento del numero di • • • • transistor per cm2 e quindi per chip. Un maggior numero di transistor per chip permette di produrre prodotti migliori (sia in termini di prestazioni che di funzionalità) a prezzi ridotti. I prezzi bassi stimolano la nascita di nuove applicazioni (e.g. non si fanno video game per computer da milioni di €). Nuove applicazioni aprono nuovi mercati e fanno nascere nuove aziende. L’esistenza di tante aziende fa crescere la competitività che, a sua volta, stimola il progresso della tecnologia e lo sviluppo di nuove tecnologie. 71 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Fonti per lo studio ▶ Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 2 ▶ Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill Capitolo 1, 2, 5 ▶ The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley Capitolo 2 • Approfondimenti ▶ Struttura e progetto dei calcolatori, D. A. Patterson, J. Hennessy, 3a Ed, Zanichelli Capitolo 1, 2 • Credits ▶ Prof. G. Buonanno e D. Sciuto, LIUC 72