corso di calcolatori elettronici introduzione -...
TRANSCRIPT
Descrizione del corso
• Essenzialmente lezioni teoriche• In aggiunta, qualche “esercitazione” sugli
aspetti del corso che lo consentono (aritmetica, reti logiche, linguaggio assembler)
• 48 ore di didattica frontale• Gli argomenti trattati trovano un loro naturale
complemento nel corso di Elettronica digitale (tenuto dal Prof. Passerone)
Modalità di esame
• Non sono previste per difficoltà organizzative prove intermedie,
• L’esame si compone di una prova scritta composta da quesiti a risposta multipla
• Durante il corso, esercizi su argomenti che incontrerete all’esame.
Modalità di esame• 12 domande a risposta multipla
● 5 risposte per domanda• Per ottenere 18:
● 6 risposte corrette● Nessuna risposta sbagliata
• Per ottenere 30 e lode:● 12 risposte corrette
• Ogni risposta sbagliata toglie 1/5 dei punti dati da una risposta giusta
Calcolatori
• I calcolatori elettronici sono il prodotto di una tecnologia estremamente vitale
• Produce il 10% del PiL degli Stati Uniti e pervade le nostre vite
• ....e tutto cominciò da.....
ENIAC
• Nel1943 il dipartimento della difesa degli Stati Uniti commissionò una macchina per il calcolo delle traiettorie dei proiettili di artiglieria
• Nel Febbraio 1946 l’Università della Pensylvania mise in funzione ENIAC Occupava una stanza di 9X30 Metri Consumava così tanta energia che alla prima
accensione genero’ un blackout
Una profezia pessimistica
“Mentre...L’ENIAC e’ dotato di 18000 valvole e pesa 30 tonnellate, i calcolatori del futuro potranno avere solo 1000 valvole e pesare solo una tonnellata e mezzo”,Popular mechanics 1949
La rivoluzione dei calcolatori
• I calcolatori hanno creato la terza rivoluzione della nostra società portandoci nel mondo post industriale
• Solo pochi anni fa le seguenti applicazioni erano considerate fantascienza Calcolatori negli automobili Telefoni cellulari Mappatura del genoma umana World Wide Web Motori di ricerca
Calcolatore o calcolatori?
• I calcolatori che operano nelle applicazioni che abbiamo introdotto condividono la stessa idea di base....
• Ma le soluzioni usate per ciascuna tipologia di applicazione possono essere piuttosto diverse
• Per questo parliamo di vari tipi di calcolatori
Vari tipi di calcolatori
• PC (Desktop o Laptop) Buone prestazioni a costo ridotto Eseguono software di terze parti
• Server Pensati per grandi carichi di lavoro
● poche applicazioni molto complesse (caclolatori scientifici)● tantissime applicazioni molto semplici (web server)
• Embedded Vasto spettro di applicazioni (mobile, automotive, avionica, play
stations) Applicazioni spesso “dedicate”, operano in stretto contatto con
l’hardware Requisiti non funzionali essenziali (consumi, rispetto di vincoli
temporali, costo)
Perché studiarli?
• Prestazioni del software: importanti nel determinarne il successo● Un programma che esegue più velocemente o che
ha minori requisiti hardware ha maggiori probabilità di soddisfare le aspettative del cliente
● In passato, prestazioni dominate dalla disponibilità di memoria
● Oggi questo è un problema solo per le applicazioni embedded
Prestazioni
• Per scrivere un programma con buone prestazioni il programmatore moderno deve: comprendere la gerarchia di memoria fare l’uso piu’ efficiente del parallelismo
• Più semplicemente: deve conoscere l’organizzazione del calcolatore come un calcolatore esegue i programmi come accede alla memoria...
Obbiettivi del corso
• Alla fine del corso, sapremo: Quali sono le componenti di base che permettono a un
calcolatore di operare? Come vengono tradotti i programmi in modo che il
calcolatore possa eseguirli? Qual’e’ l’interfaccia HW/SW utilizzabile per far fare
all’HW cio’ che richiede? Cosa influenza le prestazioni di un programma e come e'
possibile migliorarle? Cosa puo’ fare il progettista HW per migliorare le
prestazione e perche’ ricorre sempre di piu’ al multicore?
Linguaggio Macchina
• Il componente base di un calcolatore sono le porte logiche, che corrispondono a interruttori
• Unita’ base di informazione: bit. Vale 1 se acceso e 0 se spento
• Anche un’istruzione di linguaggio macchina deve dunque essere codificata come una sequenza di bit
• Ad esempio
1000110010100000
Programmazione Assembly
• Programmare tramite sequenze di bit e’ estremamente difficile
• Linguaggio mnemonico (assembly) che viene tradotto in sequenze di bit da un traduttore (assembler)
• Ad esempio.....
Il programmatore scrive
questa istruzione (somma A a B)
add A, B 00000000000010001000100001000000L’assemblatore traduce l’istruzione
in una sequenza di bit
Prestazioni
Componente HW/SW
Perche’ influenza Dove e’ trattato?
Algoritmi Determina il numero di istruzioni di alto livello e di
operazioni di IO
Altri corsi
Linguaggi di programmazione,
compilatori e architetture
Determina il numero di istruzioni macchina per ogni
istruzione di alto livello
Cap. 2, 3
Processore e sistema di memoria
Determinano quanto velocemente e’ possibile
eseguire ciascuna istruzione
Cap. 4, 5 e 6
Sistema di I/O (HW e sistema operative)
Determina quanto velocemente possono essere eseguite le operazioni di I/O
Cap. 4, 5 e 6
Componenti delCalcolatore
I dispositivi di input (tastiera, mouse, ...)e quelli di output(video, stampanti, ...)Permettono di scambiareinformazioni con l’esterno
Le elaborazioni deidati sono effettuatedal Processore (diviso in una parte operativa e una di controllo)
I dati vengono memorizza-ti nelle unita’ di memoria
Dentro il PC
La scheda madre e’ una piastrasu cui sono montati i vari circuitiintegrati (chip)
La memoria volatilee’ costituita da varibanchi di (tipicamente) 8chip di RAM dinamica
La memoria permanentee’ costituita da hard-diske CD/DVD ROM
Il processore
• Processore: parte attiva del calcolatoreDatapath: esegue le operazioni aritmetiche sui datiParte di controllo: indica al datapath, alla memoria, e
alle componenti di IO cosa fare sulla base di quanto stabilito nel programma
Interfacce HW/SW
• Astrazioni: permettono di gestire un progetto di grande complessita’ nascondendo i dettagli
• Dettagli del processore “nascosti” esportando come interfaccia l’insieme delle istruzioni macchina che il processore offre (Instruction Set Architecture)
• Insieme all’interfaccia del sistema operativo, l’ISA costituisce l’interfaccia binaria delle applicazioni ● (Application Binary Interface)
• Una volta definita una ABI, lo sviluppatore e’ svincolato da come queste cose sono implementate.
La memoria
• La memoria si distingue in due tipi: volatile (dominata dalle DRAM)non volatile (esempio: dischi rigidi)
• Memoria volatile: usata per memorizzare dati e programmi mentre questi vengono eseguiti. Per questo motivo viene detta memoria principaleAllo spegnimento i dati vengono persi
• Memoria non volatile (o persistente): usata per memorizzare dati e programmi tra esecuzioni diverse. Vista la quantita’ enorme di dati memorizzati si parla di
memoria di massa
Memorie di massa
• Attualmente abbiamo essenzialmente tre tipi di memorie di massaMemorie FlashDischi rigidiCD/DVD
• Memorie Flash: molto simili a memorie RAM. Dati memorizzati intrappolando una carica elettrica. Il fenomeno fisico usato dalle Flash consente alla carica di essere intrappolata in maniera permanente
Valutare le Prestazioni
• La complessita’ di un moderno calcolatore rende la valutazione delle prestazioni tutt’altro che banale
• Quando si parla di prestazioni, e’ importante capire:Di quali prestazioni parliamoCome si misurano
Definizione di Prestazioni
Consideriamo i seguenti aereoplani
•
Supponiamo che la metrica di interesse sia la velocita’.
Definizione di Prestazioni
• Cosa intendiamo per velocita’?• Possibili definizioni:• Trasportare un singolo passegero da un luogo a un altro nel
minor tempo possibile (Vincitore Concorde) Trasportare 450 passegeri nel minor tempo possibile (Vincitore Boeing 747)
Definizione di Prestazioni
• Analogamente per un calcolatore desktop possiamo avere due tipi di prestazioni.Per il singolo utente interessa sapere quanto e’ il tempo
medio di risposta (tempo che intercorre tra avvio e terminazione di un task)
Per il gestore di un centro di calcolo, interessa di piu’ il throughput, cioe’ quanti task sono in grado di completare nell’unita’ di tempo
Esempio
• Se scelgo un processore piu’ veloce miglioro il throughput o il tempo di risposta?
•Se uso un multiprocessore miglioro il throughput o il tempo di risposta?
Entrambi
Il throughputalmeno a
parita’ di processore
Tuttavia, se il sistema e’ molto carico,
diminuisco il tempo di attesa, e quindi
il tempo di risposta
Tempo di Esecuzione
• In questo corso, definiremo le prestazioni sopratutto in termini di tempo di esecuzione
• Per un calcolatore X
•Quindi, dati due calcolatori diremo:
Tempo di Esecuzione
Analogamente diremo che il calcolatore X e’ n volte superiore (piu’ veloce) del calcolatore Y se e solo se:
Ma cosa si intende per tempo di esecuzione?Il tempo di esecuzione di un
programma e’ il suo tempo di risposta:cioe’ quanto tempo occorre per il
completamento di un task (mettendoinsieme esecuzione, IO, latenze di sistema
operativo, ecc. )
Tempo di Esecuzione
• In una macchina multiprogrammata il tempo di risposta dipende anche dagli altri task attivi e dalle loro priorita’
• Il tempo di esecuzione della CPU tiene conto solo del tempo effettivamente speso per il task
• Tale tempo e’ in parte dedicato al programma utente e in parte al sistema operativo
Tempo di RispostaTempo di esecuzionedella CPU
Interferenza dovutaAgli altri task Tempo di CPU
Utente
Tempo di CPUSistema
Capire le Prestazini
• Moderni processori: costruiti usando un segnale periodico che ne sincronizza le operazioni
• Il ciclo di clock: intervallo di tempo che intercorre tra due colpi di clock● Misurato in secondi (o in frazioni di secondo)● Frequenza misurata in Hertz
• Esempio: un clock che va a un Gigahertz (10^9 Hertz) equivale a un periodo di clock pari a 10^-9 secondi (un miliardesimo di secondo)
Calcolo del Tempo di CPU
• Il tempo di calcolo di un programma puo’ essere espresso nella seguente maniera
Esempio
Il nostro programma esegue in 10s sul calcolatoreA che e’ dotato di un clock che funziona a 2GhZ. Un progettista vuole proporci una nuova architetturache puo’ operare a frequenze significativamentepiu’ alte. Propone una modifica al processore che porterebbe ad aumentare di un fattore 1.2 i ciclimacchina necessari a eseguire le varie istruzioni.A che frequenza dovrebbe operare la macchina perportare il nostro programma a eseguire in 6s?
Numero di cicli
• Il numero di cicli richiesto da un programma e’ influenzato dal numero di istruzioni che compongono il programma
• Tale numero viene moltiplicato per il numero di cicli medio richiesto da ciascuna istruzione
•Il numero medio di cicli per istruzione viene denotato da CPI
Esempio
Siano date due diverse implementazioni della stessaISA. La prima (A) ha un ciclo di clock di 250ps, la
seconda (B) di 500ps. Nel programma di riferimento che ha numero di istruzioni I
il CPI e’ pari a 2.0 per A e a 1.2 per B. Quale delle duearchitetture esegue piu’ rapidamente il nostro
programma?
Esempio di Uso• Un progettista di compilatori deve scegliere tra due
sequenze di codice per implementare un certo tipo di programma
Istr / CPI
A B C
1 2 3
CPI per tipo di Istruzione
Sequenza A B C
Seq. 1 2 1 2
Seq. 2 4 1 1
Istruzioni di ciascun tipo
Soluzione• Possiamo calcolare il numero di cicli richieste da
ciascuna sequenza usando la formula:
•Quindi conviene l’architettura 2
Tirando un po’ di somme...
• Modo migliore per valutare le prestazioni di una computer: misurare il tempo necessario per l’esecuzione di un programma
• Tale tempo e’ il risultato di tre fattori:Numero istruzioniCPI Frequenza di clock
Componenti delle prestazioni
• Nessuna delle tre componenti puo’ essere trascurataNon ha nessun senso dire che un processore e’ piu’ veloce
di un altro perche’ ha un clockrate piu’ alto• Ha dunque senso cercare di capire come i diversi
componenti e gli strumenti usati nello sviluppo abbiano impatto sulle prestazioni (in particolare su ciascuna dei tre fattori)
Algoritmo
• L’algoritmo adottato certamente influenza il numero di istruzioni ed eventualmente il CPI
• Perche’?Un algoritmo piu’ efficiente puo’ essere strutturato in
modo da risparmiare istruzioniUn algoritmo ben pensato (per una particolare
architettura) andra’ ad usare le istruzioni pi’ efficienti (quelle con un basso CPI)
Linguaggio di programmazione
• Il linguaggio di programmazione influenza il numero di istruzioni e il CPI
• Perche’? I costrutti ad alto livello vengono tradotti in sequenze di
istruzioni macchina Un linguaggio con molte chiamate indirette (es. Java) ha in
generale un valore di CPI piu’ alto
Compilatore
• Il compilatore sicuramente influenza sia il numero di istruzioni che il CPI
• Perche’?Un compilatore piu’ o meno efficiente genera un numero
di istruzioni macchina diverso per ogni istruzioneUn compilatore ottimizzante puo’ tenere conto di una
serie di effetti piuttosto complessi per ridurre il CPI
ISA
• Architettura del set di istruzioni (ISA): ”interfaccia” macchina / software
• Ha impatto sul numero di istruzioni, sulla frequenza di clock e sul CPINumero di istruzioni: l’ISA puo’ fornire istruzioni di alto o
basso livello (quindi piu’ o meno istruzioni per eseguire un’operazione)
CPI: il modo in cui un’ISA e’ progettata influenza il numero di cicli per eseguire ciascuna istruzione
Un’ISA ben disegnata permette di avere frequenze piu’ spinte
Frequenza del processore
La barriera dell'energia
• Processore: costituito di moltissimi interruttori che dissipano energia quando sono in fase di conduzione (commutazioni tra zero e uno)
• Limite alla capacita’ di estrarre la potenza prodotta tramite ventole o radiatori (diciamo intorno ai 100W)
• Superato questo limite la refigerazione diventa molto costosa e non e’ attuabile in un normale desktop (per non parlare del laptop)
• La potenza e’ data da:
La barriera dell’energia
• Frequenza di commutazione: legata alla frequenza di clock ... • Negli scorsi anni, piccolo miracolo: aumentare in 20 anni la
frequenza di 1000 volte a spese di un aumento di consumi di un fattore 30
Come hanno fatto?
• “Trucco”: abbassare la tensione di alimentazione che agisce in maniera quadratica
• In venti anni, da tensioni di alimentazione di 5V ai circa 1.2V attuali
• Questo ha permesso di incrementare la frequenza con impatti limitati sui consumi
• Sfortunatamente non ci si puo’ spingere oltre lungo questa direzione perche’ se si abbassa la tensione sotto il Volt ci sono dei fenomeni di scarica in condizioni statiche che aumentano la dissipazione anche lontani dalle fasi di commutazione
Una nuova strada
• Impossibilita’ di riuscire a drenare una grossa quantita’ di calore: saturazione delle prestazioni del processore
• Nuova strada: aumentare il parallelismo (architetture multicore)
• Difficolta’ al programmatore: correttezza: e’ molto piu’ difficiule fare un programma che
operi in maniera sequnziale rispetto a uno che opera in maniera “parallela”
Effficienza:occore che il carico di lavoro sulle CPU si mantenga bilanciato
Pitfall 1• Errori nell’analisi delle performance• Primo errore: “Aumentando le prestazioni di un
componente si riesce ad ottenere un aumento corrispondente delle prestazioni” Consideriamo un programma che impiega 80s per operazioni di
moltiplicazione e 20s in altre operazioni Di quanto si deve migliorare la moltiplicazione per ridurre a 1/5
il tempo di calcolo?
Non si PUO’. Dovremmo scendere sotto i 20s ma 20s sono dovuti ad altre
operazioni
Pitfall 2
• Errore “non tenere conto di tutti i termini dell’equazione delle
prestazioni”• Spesso viene usato il MIPS (Mega Instructions Per
Second) per valutare le prestazioni
•Conclusione: un calcolatore e’ piu’ veloce di un altro perche’ esegue piu’ istruzioni al secondo.
Pitfall 2• SBAGLIATO!• MIPS non tiene conto della complessita’ delle istruzioniPuo’ darsi che un’architettura esegua piu’ istruzioni al
secondo di un’altra ma che queste ultime siano piu’ potenti Il MIPS varia molto con il programma
Il CPI puo’ variare anche diun Ordine di grandezzaper i vari benchmark.
Cosi’ il MIPS