Il computer Architettura i precursori 1600 - Pascal realizza la prima macchina programmata meccanicamente per eseguire addizioni e sottrazioni. E’ la Pascalina. 1671 – Leibniz realizza una macchina per eseguire le quattro operazioni e la radice quadrata. 1804 – Joseph Jacquard realizza un telaio controllato da schede perforate. 1833 Charlers Babbage progetta la “Analytical Engine”. I dati erano immessi in memoria tramite schede perforate. 1945 - A Princeton von Neuman sviluppa un calcolatore “a memoria programmata”. La macchina immagazzina nella memoria non solo i dati da elaborare ma anche le istruzioni del programma. L’ architettura di von Neuman e’ quella usata ancora oggi. Architettura di Von Neuman Dati Unità Memoria Aritmetica B U S Stato Istruzioni di Unità Controllo Indirizzi Istruzioni Interfaccia periferica Unità funzionali UNITA’ CENTRALE il processore (CPU) la ALU la memoria principale (RAM) Le interfacce verso i dispositivi di input/output Le varie componenti comunicano attraverso collegamenti, detti bus, con porte bidirezionali per utilizzare lo stesso filo per collegare, in istanti diversi, vari componenti Nei PC: un collegamento dedicato - bus di sistema - per la comunicazione tra cpu e memoria principale collegamenti per le periferiche - bus locali9 CPU (Central Processing Unit) Contiene Dati ingresso c l o c k UO comandi istruzioni Dati uscita condizioni UC comandi Unità di controllo e Unità operativa La UC comanda la UO a compiere operazioni UC interpreta il codice operativo e produce comandi per UO Componente essenziale della UO è la ALU Nella UO ci sono diversi registri ALU Registro accumulatore Dalle Registro dati comandi tabelle di verità delle funzioni aritmetiche, alla rete logica che le realizza Circuiti che fanno le operazioni aritmetiche, la complementazione, lo shift, il controllo con lo zero, … Talvolta contiene la FPU (Floating Point unit) Schema memoria CPU clock Logica di controllo RIC RD ALU PC A RIM dati indirizzi comandi I registri Registro = un insieme di n identici elementi di memoria (flip-flop) tutti comandati dallo stesso clock RIC = Registro Istruzione Corrente, RD= Registro Dato, RIM = Registro Indirizzamento Memoria, PC = Program Counter, A = Accumulatore Alcuni registri hanno funzioni aggiuntive (ad esempio lo scorrimento) 00000100 = 4 shiftando verso destra di un bit 00000010 = 2 (divisione per 2) schiftando verso sinistra di un bit 00001000 = 8 (moltiplicazione per 2) RAM – memoria di lavoro la memoria principale è detta RAM (Random Access Memory) significa che il tempo di accesso ad una cella è lo stesso indipendentemente dalla posizione della cella La RAM è usata per la memoria di lavoro e per la memoria cache. È volatile Le operazioni che un Processore può effettuare sulla memoria sono lettura scrittura di informazioni nelle celle 0 1 2 3 4 n La memoria Ciascuna cella è caratterizzata da un indirizzo Gli indirizzi corrispondono all’ordinamento delle celle nella sequenza Gli indirizzi sono interi positivi Gli indirizzi non sono scritti da nessuna parte, sono solo determinati dall’ordinamento consecutivo delle parole Memoria indirizzabile Se RI è di n bits, 2n sono le parole di memoria direttamente indirizzabili. il numero di bit destinati all’indirizzo determina il numero di celle indirizzabili = spazio di indirizzamento Se n=10, 1024 byte sono indizzabili (1 KB). Se n=20, 1048576 byte sono indizzabili (1 MB) Se n= 32, 232 byte = 4GB Nei computer attuali le dimensioni vanno da 32MB a 4GB (1GB della memoria principale = 230 byte ~ 1.000.000.000 byte) Quindi sono disponibili indirizzabili anche più bytes di quelli fisicamente Parola di memoria Una parola di memoria di solito contiene due, quattro o otto byte, su cui si può operare (leggere e scrivere) come su un blocco unico Per eseguire le operazioni di lettura e scrittura sulla memoria, si deve specificare l’indirizzo della parola su cui si vuole operare Gli indirizzi delle parole devono essere multipli del numero di byte che le compongono Altre caratteristiche La parola è l’unità massima di memoria che è possibile leggere e scrivere mediante un’unica istruzione La memoria è caratterizzata dal tempo di accesso (per leggere o scrivere un’informazione) pochi nanosecondi secondo) (= 10-9 sec, un miliardesimo di Le memorie principali sono relativamente costose La memoria principale perde ogni contenuto quando si interrompe l’alimentazione elettrica - volatilità È quindi necessario conservare le informazioni (programmi e dati) su altri tipi di memoria (memoria secondaria o di massa) che conservano il contenuto anche senza alimentazione Memoria Cache Memoria molto veloce intermedia tra RAM e CPU i dati di uso piu’ frequente sono mantenuti nella memoria Cache per minimizzare i trasferimenti tra RAM e CPU interna al processore (~256KB) esterna al processore (~2MB) Memoria ROM Tutti i computer contengono un chip di memoria elettronica permanente non modificabile (ROM=Read Only Memory) EPROM erasable ROM, se riscrivibile Contiene un programma (detto Basic Input Output System) per l’avviamento del computer e per altre operazioni fondamentali Il bus di sistema Il bus consente modularità del sistema (schede diverse per CPU e memoria) ed estendibilità (attaccare diverse periferiche) Oggi il bus di sistema si compone di 3 livelli gerarchici: in alto il bus che collega CPU e memoria (bus host), poi quello per le periferiche veloci (bus locale), poi quello per le periferiche lente (bus di espansione). Diversi standard per i vari livelli Collegamento su bus aperto DATA BUS ADDRESS BUS CONTROL BUS • I/O memoria ROM CPU Interfaccia verso periferiche Nell’interfaccia ci sono registri per dati, comandi alla periferica, stato Ogni registro ha un indirizzo (come la memoria) per essere Registro dati Registro stato Registro comandi letto e scritto Dispositivo IO Le periferiche sono gestite a “controllo di programma”, a “interrupt”, a “DMA” Interfacce di I/O Interfacce classiche Porta seriale: modem, mouse, ecc... Porta parallela: stampante PS/2 mouse, tastiera Interfacce attuali USB (Universal Serial Bus) Firewire USB e firewire USB (Universal Serial Bus); trasmissione seriale ad alta velocità e permette di connettere in cascata fino a 127 periferiche. Per dispositivi portatili micro-USB e mini-USB Interfaccia seriale per PC per trasferimento in tempo reale Supporta hot-plugging (cioè si può connettere e disconnettere il dispositivo a PC acceso) Audio/Video, Lettori MP3 (iPod), Hard disk esterni Memoria di massa La memoria di massa è: Hard disk Dischi rimovibili Penna …. E’ permanente E’ di grandi capacita’ E’ più lenta della RAM Scheda madre di un PC Tecnologia e integrazione Anni Tecnologia Densita`=Num. comp./unita`vol. 1959-60 Valvole 3 1960-70 Transistors 3 1970-80 LSI–LargeScale 53 Integration 1980-90 VLSI–VeryLargeScale Integration 83 1comp./10cm 1-10comp./cm 10comp./cm 10comp./cm Due approcci per la UC UC e' una rete sequenziale sincrona avente come uscite i segnali di controllo e come ingressi i segnali utilizzati come condizioni nella sequenza di controllo. cablata = la sequenza di controllo e' rappresentata dalla struttura del circuito. microprogrammata = la sequenza di controllo e' memorizzata in una memoria (memoria di controllo) ed i segnali di controllo sono prodotti eseguendo il microprogramma. E’ difficile definire il confine fra hardware (le componenti fisiche) e software (programmi che realizzano le varie funzionalita’). Velocità e prestazioni MIPS (Milioni istruzioni per secondo)= #istruzioni/(tempo_esecuzione x 106) MIPS dipende dal repertorio istruzioni CPU, da programma… MFLOPS )Milioni di istruzioni floating point per secondo), che usa invece #istruzioni floating point Velocita` di elaborazione dei PC - qualche centinaio di MFLOPS LA PROGETTAZIONE DI COMPUTER RISC RISC (Reduced Instruction Set Computer) in opposizione a CISC (Complete Instruction Set Computer). E' caratterizzata da una architettura semplificata - poche istruzioni (meno di 100) - pochi modi di indirizzamento (max 4) -accesso alla memoria solo da parte di poche istruzioni; esistono invece molti registri generali nella CPU in modo che la maggior parte delle istruzioni opera tra registri. La progettazione RISC e' sorta per facilitare l'integrazione a larga scala per la realizzazione di CPU su un unico chip