Abilità Informatiche A.A. 2010/2011 Lezione 2: Architettura del Calcolatore Facoltà di Lingue e Letterature Straniere Dal problema al risultato: il ruolo del computer PROBLEMA ALGORITMO SVILUPPO DELLA SOLUZIONE { CONOSCENZA SUL DOMINIO DEL PROBLEMA ANALISTA PROGRAMMATORE PROGRAMMA CONOSCENZA LINGUAGGIO DI PROGRAMMAZIONE programma ESECUZIONE DEL PROGRAMMA 2 { UTENTE dati soluzione COMPUTER Architettura del calcolatore 3 La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L’architettura dell’hardware di un calcolatore reale è molto complessa La macchina di von Neumann è un modello semplificato dei calcolatori moderni, composta da Unità di calcolo Una memoria che contiene programmi e dati dei programmi Le istruzioni da eseguire stanno in memoria, vengono prelevate, decodificate ed eseguite. John von Neumann, matematico ungherese, progettò, verso il 1945, il primo calcolatore con programmi memorizzabili anziché codificati mediante cavi e interruttori 4 Macchina di Von Neumann E’ composta da 4 tipologie di componenti funzionali: unità centrale di elaborazione (CPU) memoria centrale memorizza e fornisce l’accesso a dati e programmi interfacce di ingresso e uscita esegue istruzioni per l’elaborazione dei dati svolge anche funzioni di controllo componenti di collegamento con le periferiche del calcolatore bus 5 svolge la funzionalità di trasferimento di dati e di informazioni di controllo tra le varie componenti funzionali Modello di Von Neumann (1) Controllo istruzioni La CPU (Central Processing Unit) spesso integra due distinte unità: L’Unità di controllo si occupa di controllare tutte le operazioni del calcolatore, interpretare le istruzioni prelevate dalla memoria e inviare alle altre unità i segnali per l'esecuzione delle operazioni L’Unità aritmetico-logica, detta ALU (Arithmetic & Logic Unit), fornisce la capacità di effettuare operazioni di tipo aritmetico/logico di base. Si occupa di eseguire le operazioni : somme, confronti… A volte e’ affiancata da un co-processore matematico ALU dati CPU MEMORIA Ingresso Uscita BUS PERIFERICHE Le componenti fondamentali di un moderno calcolatore elettronico 6 Modello di Von Neumann (2) La Memoria centrale ha lo scopo di conservare le istruzioni e i dati da elaborare e i risultati ottenuti dalle elaborazioni; Le Interfacce collegano alle Unità di ingresso (Input) che immette le informazioni nel calcolatore per farle elaborare; Unità di uscita (Output) che riceve le informazioni dalla memoria del calcolatore per renderle pronte all’uso; le unità di ingresso e uscita sono anche dette periferiche Il Bus, vero e proprio canale di comunicazione che consente ai dati di transitare fra diversi componenti del calcolatore. 7 Controllo istruzioni ALU dati CPU MEMORIA Ingresso Uscita BUS PERIFERICHE Le componenti fondamentali di un moderno calcolatore elettronico Modello di Von Neumann (3) Per ogni istruzione del programma: la CPU, tramite la sua parte Controllo, ordina il prelevamento di una istruzione dalla Memoria; la decodifica, cioè la interpreta capendo quali azioni comporta; la esegue utilizzando le opportune unità coinvolte durante l’esecuzione può: 8 usare la ALU effettuare altri accessi in memoria per leggere o scrivere dati effettuare operazioni di ingresso (per es. leggi un dato dalla tastiera) o di uscita (per es. visualizza il risultato sul video). Controllo ALU CPU istruzioni dati MEMORIA Ingresso Segnali di controllo Uscita PERIFERICHE Spostamento dati e/o istruzioni Macchina di Von Neumann, uno schema 9 Macchina di Von Neumann (1) Il funzionamento di un calcolatore è descrivibile in termini di poche componenti (macro-unità) funzionali ogni macro-unità è specializzata nello svolgimento di una tipologia omogenea di funzionalità Eccezione: l’unità centrale di elaborazione, che svolge sia funzionalità di elaborazione che di controllo 10 Macchina di Von Neumann (2) 11 Memorizzazione Un calcolatore memorizza i dati, che rappresentano informazioni di interesse i programmi per l’elaborazione dei dati La memoria è l’unità responsabile della memorizzazione dei dati Una unità di memoria fornisce due sole operazioni memorizzazione di un valore (scrittura) accesso al valore memorizzato (lettura) 12 Elaborazione (1) Le istruzioni di un programma corrispondono ad operazioni elementari di elaborazione 13 operazioni aritmetiche operazioni relazionali (confronto tra dati) operazioni su caratteri e valori di verità altre operazioni numeriche Elaborazione (2) 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 al secondo L’elaborazione dei dati viene svolta dall’unità aritmetico-logica (ALU), che è un componente dell’unità centrale di elaborazione 14 Trasferimento Obiettivo: permettere lo scambio di informazioni tra le varie componenti funzionali del calcolatore 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 15 trasferimento dei dati e delle informazioni di controllo Controllo Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di controllo è un componente dell’unità centrale di elaborazione ogni componente dal 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 16 Il computer „moderno‟ segue il modello di Von Neumann, con diversi tipi di memoria Unità di elaborazione, processore, CPU (Central Processing Unit) Memoria centrale, RAM (Random Access Memory) Memoria secondaria, memoria di massa Bus di sistema (collega tutti gli altri componenti) Periferiche di I/O (mouse, tastiera, terminali, stampanti, ecc.) 17 Periferiche e memorie esterne PC scanner stampante Input Output mouse tastiera Disks – flash cards – DVD - … 18 Memorie di massa video All‟interno: struttura di un PC La comunicazione fra le varie componenti avviene attraverso il bus di sistema. Tramite il bus la CPU legge\scrive dati e istruzioni in memoria, trasferisce da\a la memoria ai dispositivi di I/O, … 19 Componenti HW: Bus Il bus 20 Linea a cui sono contemporaneamente connessi tutti i dispositivi hardware del calcolatore. Analogo alla colonna spinale. Controllato dalla CPU Consente il trasferimento di dati tra le unità hardware Velocità misurata in megahertz (come la CPU), ma di solito più lento... E’ il collo di bottiglia per molti PC. Bus: le caratteristiche Vantaggi Semplicità: unica linea di connessione implica costi ridotti Estendibilità: aggiunta di nuovi dispositivi molto semplice Standardizzabilità: regole precise di comunicazione tra dispositivi diversi Svantaggi Lentezza: il bus è utilizzabile solo in mutua esclusione Limitata capacità: al crescere del n. di dispositivi collegati Sovraccarico del processore: la CPU funge infatti da master sul controllo del bus 21 Componenti HW: motherboard (scheda madre) Piastra ricavata da un sandwich di strati di vetronite e rame: generalmente ha da quattro a sei strati di rame; Ha integrato il bus di sistema, composto da 50 a 100 fili in rame incisi su di essa Dotata di connettori separati ad intervalli regolari per l’innesto dei moduli di memoria e di I/O. Si tratta di una serie di connessioni elettriche ognuna delle quali può trasmettere cifre binarie (0 o 1) in successione, Vi sono montate le componenti del computer (CPU, RAM, hard disk, etc.) zoccoli o slot per le schede zoccolo per il processore zoccolo per la memoria 22 Motherboard: componenti principali Alloggiamento per la CPU: Socket, (es. zoccolo ZIF, Zero Insertion Force) o SLOT1; gli slot per l'installazione delle RAM; la RAM CMOS, alimentata in permanenza da una pila o una piccola batteria che memorizza i parametri di configurazione del BIOS; Controller e Slot di espansione: PCI (schede video, audio, scheda rete, modem, sintonizzatore TV, controller firewire, USB…) AGP, PCI Express (schede video); Controller e slot IDE/ATA, SATA e/o SCSI per la gestione delle unità disco (Hard Disk, CD e DVD), floppy; Porte: parallela, seriale, USB, PS2,… In molte Mainboard, specie se compatte, molte schede di espansione possono trovarsi già integrate (es. la scheda video, la scheda audio, interfacce di rete LAN o Ethernet e porte Firewire) 23 Componenti HW: la memoria 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: 24 Velocità per il supporto alla CPU Non volatilità ed elevate dimensioni per l’archivio Le memorie: diversi tipi Cosa può fare la tecnologia ? Memorie elettroniche relativamente piccole e veloci, volatili, a costo medio alto Memorie magnetiche e ottiche, grandi, molto capienti, persistenti e lente 25 RAM : lettura e scrittura nell’ordine delle decine di nanosecondi per parola Dischi rigidi : lettura e scrittura nell’ordine di alcuni millisecondi per blocco CD ROM, DVD Le memorie: diversi usi I computer usano supporti di memorizzazione di più tipi : una memoria centrale, RAM : contiene i programmi durante la loro esecuzione ed i dati relativi 26 altrimenti il processore sarebbe per la maggior parte del tempo fermo in attesa di dati da/per la memoria una o più memorie di massa (dischi etc.) : che mantengono tutti i dati ed i programmi in attesa di essere eseguiti in modo persistente, anche dopo lo spegnimento del calcolatore Memoria centrale: RAM RAM: Random Access Memory Memorizza: I programmi in esecuzione I dati dei programmi in esecuzione Viene cancellata ogni volta che si spegne il computer. 27 Notazione binaria Tutte le informazioni vengono rappresentate mediante sequenze di 0 e di 1 bit: BInary digiT Per esigenze logico-costruttive, i bit tra RAM e CPU fluiscono a gruppi di 8. Altra unità di misura utilizzata: byte (sequenza di otto bit) Un byte é la più piccola unità accessibilie singolarmente. 28 RAM: struttura I bit nella memoria sono raggruppati in celle (o registri) Tutte le celle sono formate dallo stesso numero di bit Le celle sono numerate in sequenza: il numero di ogni cella costituisce il suo indirizzo L’indirizzo serve per accedere all’informazione contenuta nella cella Specificando l’indirizzo di una cella, la CPU e’ in grado di leggere e/o modificare il valore dei bit memorizzato in quella cella La cella è l’unità indirizzabile più piccola 29 Perchè si chiama RAM (Random Access Memory)? Si può accedere direttamente alle varie celle, una volta noto il loro indirizzo Il tempo necessario per accedere ad una cella è lo stesso, indipendentemente dalla posizione della cella nella sequenza Il termine “random” (casuale) indica proprio il fatto che non vi sono differenze nell’accesso alle varie celle della memoria 30 RAM: principali proprietà Veloce: per leggere/scrivere una cella ci vuole un tempo di accesso dell’ordine di poche decine di nanosecondi (millesimi di milionesimi di secondo = 10-9 sec.) Volatile: è fatta di componenti elettronici, togliendo l’alimentazione si perde tutto (Relativamente) costosa Tutte le celle hanno uguale dimensione: 8, 16, 32, o 64 bit Le operazioni che si eseguono sulla memoria sono operazioni di lettura e scrittura Una cella può contenere un dato o un’istruzione 31 Operazioni sulla memoria Si possono eseguire solo due operazioni: lettura e scrittura Lettura: con questa operazione si accede al contenuto di una cella di memoria che viene trasferito, senza essere modificato, alla CPU. Scrittura: con questa operazione il contenuto di una cella di memoria viene modificato, e viene sostituito con dati provenienti dalla CPU. 32 Componenti HW: CPU - Central Processing Unit Programmi e dati risiedono in file memorizzati in memoria secondaria. Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella memoria primaria. Il processore, CPU, è in grado di eseguire le istruzioni di cui sono composti i programmi I programmi che la CPU è in grado di eseguire sono scritti in linguaggio macchina 33 CPU: funzionamento copia il programma in RAM programma programma CPU RAM HARD DISK 34 esegui le istruzioni del programma Il set di istruzioni macchina Ogni tipo di processore e’ in grado di eseguire un numero limitato (40/100) di istruzioni Combinando in modo diverso sequenze anche molto lunghe di istruzioni (i programmi) si possono far fare al computer tantissime cose completamente diverse 35 Legge di Moore Osservazione fatta da Gordon Moore nel 1965: il numero dei transistor per cm2 raddoppia ogni X mesi In origine X era 12. Correzioni successive hanno portato a fissare X=18. Questo vuol dire che c’è un incremento di circa il 60% all’anno. # Transistor [CPU Intel] 100 000 000 10 000 000 1 000 000 100 000 1989 1991 1993 1995 1997 1999 Legge di Moore e progresso 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. Componenti HW: altre memorie Memoria di sola lettura (ROM) Memoria cache Buffer 39 Memoria di sola lettura (ROM) ROM = Read Only Memory Memoria permanente e di sola lettura Non può essere modificata A differenza della RAM non è volatile Veloce quasi come la RAM Contiene le informazioni di inizializzazione usate ogni volta che si accende l’elaboratore (bootstrap) 40 Memoria cache L’accesso alla RAM è comunque più lento rispetto alla velocità della CPU. Si utilizza quindi una memoria che consenta accessi estremamente veloci su istruzioni e dati utilizzati di recente. Questa memoria è la cache memory: veloce, ma molto più costosa della RAM quindi piccola. La cache rappresenta un livello di memoria intermedio tra i registri del processore e la RAM 41 Memorizza i dati usati più spesso senza doverli recuperare tutte le volte dalla RAM (che è più lenta) Influisce moltissimo sulle prestazioni e sul costo della CPU (e quindi del computer) Buffer Piccole parti di RAM con funzioni di memoria temporanea Usati per il passaggio delle informazioni da un programma o dispositivo ad un altro In Windows si parla di Clipboard, memoria temporanea usata per esempio per le operazioni di Copia e Incolla 1 2 3 4 5 Foglio elettronico 42 Clipboard (buffer) Programma di videoscrittura Componenti HW: memorie secondarie o di massa Caratteristiche principali: Le memorie secondarie o di massa sono basate principalmente su tecnologie magnetiche e ottiche. non volatilità: mantengono le informazioni anche a computer spento grande capacità ES. Hard disk, floppy disk, CDROM, DVD, etc. I dati sono organizzati in file e gestiti dal file system 43 Le memorie di massa 44 Hard disk 45 È costituito da una serie di dischi magnetici rigidi (piatti) sovrapposti e ruotanti su un asse verticale. La superficie è divisa in aree di memoria, sui cui scrive e legge una testina. Le testine sono il doppio dei piatti. CD rom e DVD 46 Il disco ottico è fatto di tre strati, di cui uno in vetro temperato che produce un sostrato rigido. Poi una superficie di registrazione in lega metallica e infine un involucro di plastica trasparente. Memorie Flash Funzioni: Tecnologia elettronica non volatile bassi consumi piccole dimensioni capacità dai 256MB ai 32GB File system come per i dischi 47 trasferimento dati; archiviazione dati “sensibili”. Il sistema operativo gestisce l’accesso come se fossero dischi; Nastri Magnetici e unità DAT Capacità di diversi GigaByte Spazio tra record (inter record gap) Record fisico Traccia 1 Traccia 2 ……… Traccia 8 Traccia 9 Accesso sequenziale Molto lenti Utili solo per operazioni di backup Gerarchia delle memorie Dimensioni CPU Registri Velocità Costo/bit min max max max min min Cache Memoria centrale Dischi magnetici / ottici Nastri magnetici 49 Componenti HW: porte di comunicazione Porte seriali: trasportano 1 bit per volta, hanno velocità massima = 115 KB/sec e si usano per periferiche lente, come mouse e modem esterni, non sopportano cablaggi superiori a 300 metri Porte parallele: trasmettono 8 bit alla volta in parallelo, sono più veloci delle seriali ma non sopportano cablaggi superiori a 30 metri, adatte a collegare stampanti, o altri dispositivi di immagazzinamento esterno delle informazioni. Hanno velocità massima = 150 KB/sec. Porte SCSI (small computer system interface) permettono la connessione di molti dispositivi in cascata, e sono usate per scanner CD-ROM, ... USB (Universal Serial BUS): seriali ad alta velocità 50 velocità = 12 Mbit/sec collegano fino a 127 periferiche in cascata alimentano direttamente periferiche a basso consumo (tastiere, mouse) e sono completamente plug & play la USB 2.0 del 1999 arrivano fino a 480 Mbps. Quanto “potente” è il mio PC? Parametri da considerare: Frequenza del processore Dimensione della RAM Dimensione della memoria di massa Velocità di accesso (bus) Grandezza della cache Numero e tipo di porte 51 Tassonomia dei calcolatori /1 Quantità vs. qualità: Cambiare di un ordine di grandezza la quantità significa cambiare anche la qualità: un’auto in grado di raggiungere una velocità di 1000 km/h nel deserto del Nevada è una macchina fondamentalmente diversa da un’auto che fa 100 km/h sull’autostrada; un grattacielo di 100 piani non è solo un edificio di 10 piani un po’ più grande. Nei computer le differenze sono di diversi ordini di grandezza. I miglioramenti procurati dalla legge di Moore possono essere utilizzati in modi diversi: costruire calcolatori sempre più potenti a prezzo costante; costruire lo stesso calcolatore a prezzi ogni anno più convenienti. Tassonomia dei calcolatori Tipo Prezzo (€) Calcolatore monouso 1 Calcolatore dedicato 10 Calcolatore per videogiochi 100 Calcolatore per PC 1K Server 10 K Reti di workstation 100 K dipartimentale Mainframe 1M Supercalcolatore 10 M /2 Applicazione tipica Biglietti di auguri Orologi, automobili, … Videogiochi personali PC da tavolo o portatile Server di rete Centro di calc. Database di una banca Previsioni del tempo I prezzi sono solo indicativi. Tassonomia dei calcolatori Calcolatori monouso: chip singoli incollati all’interno dei biglietti di auguri; si tratta in pratica di calcolatori usa e getta. Sistemi embedded (calcolatori dedicati): /3 calcolatori che si trovano in telefoni, televisori, forni, auto, … questi calcolatori contengono un processore, meno di un megabyte di memoria e qualche funzione di I/O. Videogame normali calcolatori con particolari capacità grafiche, ma software limitato e poche possibilità di estensione; fanno parte di questa categoria anche i PDA; contengono un processore, alcuni megabyte di memoria, un tipo di schermo (anche un televisore) e poco di più. Tassonomia dei calcolatori Personal computer (PC) o workstation: /4 dotati di alcune decine di megabyte di memoria, di un disco fisso contenente alcuni gigabyte di dati, drive CD–ROM, modem, scheda audio e altre periferiche; dotati di sistemi operativi elaborati, molte opzioni di espansione e una vasta gamma di software disponibile. Server di rete si tratta di PC o workstation potenziati utilizzati come server di rete sia per le reti locali che per Internet; esistono sia in configurazione con processore unico che con più processori, hanno alcuni gigabyte di memoria, molti gigabyte di spazio sul disco fisso e interfacce di rete ad alta velocità. Tassonomia dei calcolatori /5 NOW (Networks of Workstations) o COW (Cluster of Workstations) composti da PC o workstation normali collegate con reti ad elevate prestazioni (qualche gigabit/sec) e funzionanti con software speciale, che permette a tutte le macchine di lavorare insieme su un unico problema; architetture sono facilmente scalabili (da alcune macchine ad alcune migliaia) e sono paragonabili a minisupercomputer. Mainframe calcolatori grandi come una stanza, in uso fin dagli anni ’60; non sono più veloci di server potenti, ma solitamente hanno più capacità di I/O e sono dotate di grandi insiemi di dischi sono macchine estremamente costose, che vengono spesso mantenute per via dell’ingente investimento esistente in termini di software, dati, procedure operative e personale. Tassonomia dei calcolatori /6 Supercomputer hanno CPU velocissime, molti gigabyte di memoria centrale, dischi e reti molto veloci. Recentemente molti supercomputer sono diventati macchine altamente parallele non molto diverse dai COW, ma con componenti più veloci e più numerosi. I supercomputer vengono utilizzati per risolvere problemi di calcolo molto complicati in campi scientifici e ingegneristici: simulazione di uno scontro fra galassie, sintesi di nuovi farmaci, modelli del comportamento dell’aria attorno alle ali di un aereo. Il concetto di macchina astratta Alla base di un moderno computer c’è l’idea di rappresentare i programmi in forma digitale. L'elaboratore diviene una macchina “universale” in grado di eseguire qualsiasi compito “calcolabile”, semplicemente inserendo un nuovo programma. Il progettista hw definisce il set di istruzioni dell’elaboratore, ovvero un linguaggio minimo (L1) mediante il quale l’elaboratore può essere programmato A sua volta, anche L1 può essere limitato e difficile da usare, ma si può usare per realizzare un nuovo linguaggio, L2, che consente di eseguire operazioni più sofisticate di L1, e quindi semplifica la programmazione dell’elaboratore 58 … come una cipolla 59 Mettendo assieme le cose… I programmi che non sono in esecuzione sono memorizzati nella memoria secondaria Cache CPU RAM Disk App Bus 60 SO Software: SO (Sistema Operativo) Il sistema operativo è caricato dalla memoria secondaria in memoria principale quando viene acceso il computer, e vi rimane finché non viene spento. Cache CPU RAM SO App SO Bus Il SO agisce come “manager” del sistema, garantendo che ogni dispositivo hw dialoghi correttamente con gli altri dispositivi. Offre l’interfaccia perché l’utente interagisca con il computer. Esempi: MacOS, WindowsXP, UNIX, Linux, Solaris, ... 61 Lanciare un programma Quando si lancia un programma il sistema operativo controlla la CPU e carica il programma dalla memoria secondaria alla RAM. SO Bus 62 Disk RAM SO App Cache CPU App SO Esecuzione Quando il programma è in esecuzione, carica ad ogni passo una nuova istruzione (dalla memoria o dalla cache), la esegue, e memorizza il risultato nella memoria. App Bus 63 Disk RAM SO App Cache CPU App SO