LA STRUTTURA DEL COMPUTER Enrico Terrone A. S: 2011/2012 Modello di Tanenbaum In questa parte ci occuperemo di capire come è strutturato e come funziona l hardware, e quindi in che modo esso esegue i programmi in linguaggio macchina. Applicazioni Linguaggio di alto livello Assembly Sistema operativo Linguaggio macchina Hardware
Macchina di Von Neumann La macchina di Von Neumann schematizza l hardware: adesso vogliamo passare da questo schema astratto alla sua realizzazione concreta. Memoria centrale Input Output CPU (CU + ALU) Il modello a bus Il collegamento fra CPU, memoria centrale e periferiche avviene tramite linee di connessione dette bus (li possiamo pensare come fili, anche se sono piste di silicio realizzate sulla scheda madre). I bus sono di tre tipi: Data bus (DB): per il trasferimento dei dati Address bus (AB): per trasferimento degli indirizzi Control bus (CB): per trasferimento dei comandi Le operazioni che possono essere fatte attraverso i bus sono la lettura e la scrittura: il soggetto di queste operazioni è la CPU, l oggetto può essere la memoria centrale (Memory Read, Memory Write) oppure una periferica (I/O-Read, I/O-Write).
Modello a bus DB AB CB CPU (CU + ALU) P1 P2 P3 Memoria centrale I principi fondamentali L esecuzione effettiva di un programma nell hardware si basa su due principi fondamentali: 1) Per poter essere eseguito, un programma deve essere caricato (load) in memoria centrale, prendendolo dalla memoria secondaria dove si trova salvato. 2) Una volta che il programma è in memoria centrale, il programma viene eseguito un istruzione alla volta: la singola istruzione, per poter essere eseguita, deve essere prelevata (fetch) e portata nella CPU, prendendola dalla memoria centrale dove si trova caricata.
Il ciclo fetch-decode-execute Il programma, una volta caricato in memoria centrale, viene quindi eseguito dalla CPU, che per ogni istruzione da eseguire ripete tre fasi fondamentali: 1. Fetch: l istruzione viene prelevata in memoria centrale e portata nella memoria interna della CPU (registri). 2. Decode: l istruzione viene decodificata, cioè la CU individua le operazioni da compiere per eseguirla. 3. Execute: le operazioni individuate vengono compiute e quindi l istruzione viene effettivamente eseguita. La memoria centrale Per capire come viene seguito un programma dobbiamo quindi innanzitutto capire come sono fatte, come funzionano e come comunicano la CPU e la memoria centrale. La memoria centrale è formata da una serie di celle numerate con valori detti indirizzi. Ogni cella è formata da 8 dispositivi, ciascuno dei quali può memorizzare un bit (0/1); la sequenza di 8 bit che compone una cella si chiama byte. Ogni cella può essere letta (MR) oppure scritta (MW) da parte della CPU, indicando il suo indirizzo tramite i bus a un dispositivo di controllo interno alla memoria che si chiama MMU (Memory Management Unit).
La memoria centrale 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 2 3 4 5 6 7 8 9 La memoria centrale Le celle che compongono la memoria centrale sono di due tipi: RAM (Random Access Memory) e ROM (Read Only Memory).. Le celle RAM occupano la maggior parte degli indirizzi di memoria e possono essere lette e scritte ma sono volatili, cioè perdono il contenuto quando il computer viene spento. Le celle ROM, che occupano una piccola parte dello spazio di indirizzamento, hanno il pregio di non essere volatili ma hanno il difetto che possono essere soltanto lette e non scritte. La ROM serve per poter eseguire un programma (BIOS: Basic Input Output System) quando s accende il computer e la RAM è vuota.
La gerarchia delle memorie La CPU La CPU ha due componenti fondamentali: la CU (Control Unit) e la ALU (Arithmetic Logic Unit). La CU governa il ciclo fetch-decode-execute, mentre la ALU esegue operazioni di calcolo quando necessario. Alla CU e alla ALU si aggiungono i registri, che sono piccole memorie (qualche byte ciascuno) dove la CU mette i dati relativi alla singola istruzione.
I registri I principali registri sono: IP (Instruction Pointer): contiene l indirizzo di memoria della prossima istruzione da eseguire; quando si fa partire un programma, IP contiene l indirizzo della sua prima istruzione in memoria centrale. IR (Instruction Register): contiene il codice operativo dell istruzione da eseguire AX (accumulatore): contiene i dati dell istruzione da eseguire PSW (Processor Status Word): contiene singoli bit che descrivono l esito delle operazioni svolte dalla ALU (p. es. c è un bit che dice se il risultato è positivo, un bit che dice se c è stato overflow ecc.). I registri La fase di fetch ha come input il valore del registro IP e come output il valore del registro IR. IR funziona invece come input nelle fasi di decode e di execute. Al termine del fetch, IP viene aumentato di un unità (ammesso che ci sia un istruzione per cella) in modo da fare riferimento all istruzione successiva, in vista della nuova fase di fetch.
DB AB CB IP IR AX CU ALU 4 i j i=6; j = i+2; cout<<j; 0 1 2 3 4 5 6 7 8 9 int i, j; i=6; j=i+2; cout<<j; Le unità di misura Le due unità di misura fondamentali dell hardware sono: i Byte per le dimensioni della memoria gli Hertz (Hz) per le prestazioni (velocità) della CPU I valori in Byte e Hertz possono essere indicati ricorrendo ai simboli: k (kilo), M (mega), G (giga), T (tera) Nel caso dei Byte (grandezza informatiche) questi simboli indicano le potenze di due, nel caso degli Hertz (grandezza fisica) essi indicano le potenze di dieci. I valori delle potenze di dieci si possono considerare come approssimazioni per difetto delle potenze di due.
Le unità di misura Simbolo Informatica Fisica k (kilo) 2 10 (= 1024) 10 3 (= mille) M (mega) 2 20 10 6 (= un milione) G (giga) 2 30 10 9 (= un miliardo) T (tera) 2 40 10 12 (= mille miliardi) Le dimensioni della memoria Le memorie RAM degli attuali computer hanno dimensioni di uno o più GByte. Il che significa che sono formate da più di un miliardo di celle di memoria. L hard disk ha invece dimensioni di qualche centinaio di GByte o addirittura di un TByte. Altre dimensioni tipiche sono qualche GByte per le chiavette USB, 700 MByte per i CD e 4,7 GByte per i DVD. I vecchi floppy avevano dimensioni di 1,44 MByte.
Le prestazioni della CPU La velocità della CPU è determinata da un circuito che si chiama clock (orologio); questo circuito che invia regolarmente degli impulsi alla CPU; ogni impulso è interpretato dalla CPU come il segnale che è possibile eseguire una nuova operazione. In questo senso il clock è come un metronomo che batte il tempo della CPU. Pertanto la frequenza di clock, cioè il numero di impulsi che il clock manda in un secondo, determina la velocità della CPU. Naturalmente la frequenza di clock non può essere aumentata a piacere, ma va tarata in base alla capacità della CPU di tenere il ritmo senza surriscaldarsi. Le prestazioni della CPU Nei computer attuali la frequenza di clock ha un valore che si situa fra 1 Ghz e 4 GHz. Questo significa che la CPU è in grado di svolgere qualche miliardo di operazioni al secondo. Si noti che la frequenza di clock non corrisponde alle istruzioni al secondo bensì alle operazioni al secondo. Esempi di operazioni sono la Memory Write oppure un calcolo svolto dalla ALU. Per fare un istruzione del linguaggio macchina come abbiamo visto occorre di solito un certo numero di operazioni.
Le prestazioni della CPU La velocità del computer si può anche misurare in MIPS (Millioni di Istruzioni Per Secondo): in questo caso bisogna dividere la frequenza di clock per il numero medio di operazioni che compongono un istruzione. Le CPU tradizionali sono di tipo CISC (Complex Instruction Set Computer): l istruzione in IR viene decodificata (cioè scomposta in operazioni) in base a una tabella di corrispondenza detta microprogramma che si trova in una piccola Rom interna alla CPU (nulla a che vedere col BIOS). Esistono anche CPU di tipo RISC (Reduced Instruction Set Computer) nelle quali le istruzioni coincidono con le operazioni e non serve il microprogramma: le prestazioni possono essere migliori ma il linguaggio macchina è molto più difficile. Le dimensioni dei bus Un altro parametro fondamentale per le prestazioni di un computer sono le dimensioni dei bus DB e AB. La dimensione del bus dei dati viene detta word, e corrisponde di solito alla dimensione dei registri. La word rappresenta il numero di bit che possono essere trasferiti simultaneamente in un operazione di lettura o scrittura. Nell esempio che abbiamo visto la word era da 1 Byte (8 bit), mentre nei computer attuali si hanno word da 4 Byte (32 bit) o più spesso 8 Byte (64 bit). Con una word da 32 bit si possono leggere/scrivere 4 celle di memoria in una sola operazione, con una word da 64 ben 8 celle di memoria insieme.
Le dimensioni dei bus La dimensione del bus di indirizzi è invece decisiva per quanto riguarda l utilizzo della memoria: se l address bus è troppo piccolo, non si possono sfruttare tutte le celle della memoria centrale. Infatti se il bus degli indirizzi ha n bit, si possono rappresentare soltanto 2 n indirizzi diversi. Ad esempio con un bus degli indirizzi a 20 bit potremmo usare soltanto 1MByte di RAM. Nei computer attuali si hanno address bus a 32 bit (indirizzabili fino a 4GByte di memoria) o a 64 bit (indirizzabili fino 16 milioni di TeraByte). Il bus di controllo invece non pone problemi: nel nostro esempio bastavano 2 bit, in realtà ne servono pochi di più. Breve storia del processore Intel Nome Anno Clock Word AB RAM (max) Note 8086 1978 4 MHz 16 bit 20 bit 1 MB 80286 1982 6-25 MHz 16 bit 24 bit 16 MB 80386 1986 16-40 MHz 32 bit 32 bit 4 GB 80486 80586 (Pentium) 1989 1993 16-133 MHz 60-300 MHz 32 bit 32/64 bit 32 bit 32/64 bit 4GB 4GB Cache e FPU (coprocessore) Pentium D 2005 2,6-3,6 GHz 64 bit 64 bit 2 64 B Dual Core
Richiami sulle periferiche Si definiscono periferiche di comunicazione i dispositivi che permettono di svolgere le operazioni di input (tastiera, mouse) e di output (schermo, stampante). Il modem è una periferica di comunicazione che serve a comunicare con un altro computer anziché con l utente Si definiscono periferiche di memorizzazione (memorie secondarie o di massa) i dispositivi (harddisk, chiavette, CD, DVD) che permettono di sopperire alle dimensioni limitate e alla natura volatile della parte principale (RAM) della memoria centrale. La parte non volatile della memoria centrale si chiama ROM e serve nella fase di accensione del computer (bootstrap). Periferiche di comunicazione Le principali periferiche di input: tastiera e mouse. Altre periferiche di input: scanner, trackball, tavoletta grafica, macchina fotografica, scheda audio + microfono, videocamera. Le principali periferiche di output: monitor (CRT/LCD) e stampante (getto di inchiostro / laser). Altre periferiche di output: scheda audio + casse, plotter. Periferiche di input/output che servono per la comunicazione fra due computer: il modem e la scheda di rete.
Periferiche di memorizzazione Basate su supporti magnetici (0/1 = superficie magnetizzata/smagnetizzata): hard disk, floppy disk, nastro Basate su supporti ottici (0/1 = superficie che riflette / non riflette il laser): cd-rom, dvd Basate su supporti elettronici (0/1 = circuito dove passa/ non passa corrente): memorie flash (chiavette USB, lettori mp3,i-pod). La scheda madre La scheda madre (motherboard) è la base della realizzazione concreta del modello di Von Neumann: su di essa vengono tracciati i bus e vengono inseriti i dispositivi principali: la CPU, il clock, la RAM, la ROM. Gli altri dispositivi, cioè le periferiche, non possono essere inserite direttamente sulla scheda madre ma devono essere comunque collegate a essa. Per farlo, si usa una catena formata dai seguenti elementi: slot / scheda di interfaccia / porta / cavo /controller. La scheda madre è poi inserita nel contenitore detto case.
Il collegamento delle periiferiche Lo slot è una fessura nella scheda madre, che garantisce il collegamento ai bus La scheda di interfaccia è un circuito elettronico che, se inserita nello slot, è in grado di mettere in comunicazione la periferica con i bus La porta è l uscita verso l esterno della scheda di interfaccia; ce ne sono di tre tipi: seriale, parallela, USB (seriale ad alta velocità) Il cavo si inserisce nella porta e conduce alla periferica Il controller è un dispositivo elettronico inserito all interno della periferica e in grado di gestire la comunicazione con la scheda di interfaccia e attraverso questa col sistema centrale (CPU + RAM).