Architettura degli Elaboratori

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Architettura degli Elaboratori"

Transcript

1 Architettura degli Elaboratori Ciclo di, classificazione e livelli delle architetture di calcolatore Lezioni del Corso di Laurea Triennale in Informatica Per gentilezza del Prof. Sebastiano Pizzutilo (Dipartimento di Informatica) Il Computer Elabora e memorizza ti, rappresentati in un formato digitale binario, sulla base di istruzioni in esso memorizzate. Informazioni = ti e/o istruzioni L INFORMATICA quindi non è riducibile al solo calcolatore (la macchina per effettuare i calcoli) ma attiene alla tecnologia della macchina, al suo modo di operare, di calcolare e di conservare le informazioni La COMPUTER SCIENCE tratta di tecnologia per conservare informazioni (ti ed istruzioni), di metodi per la formalizzazione del processo di calcolo, di modelli di computazione, di modelli per la conservazione dei ti (strutture ti), di modelli di comunicazione digitale,. Il Computer quindi : - legge informazioni di ingresso (ti di input), - elabora tali informazioni in base ad un insieme di istruzioni (programma), - restituisce le informazioni così trasformate (ti di output). Programmare un computer Inserire programma e ti nel computer ALGORITMO Insieme di regole (o operazioni o istruzioni) che, se eseguite in un ordine prestabilito, permettono di trovare il risultato del problema a partire i ti in ingresso. PROGRAMMA Algoritmo tradotto in un linguaggio comprensibile al computer S.O. Il modello di Von Neumann Caratteristiche della macchina di Von Neumann : Separazione Controllo-Calcolo Proceduralità: possibilità di eseguire differenti programmi memorizzati Sequenzialità: regola della selezione della eseguire rigimente fissata Connessione tra le unità funzionali con singolo flusso di informazione tra memoria e processore Input bootstrap in ROM Control Unit IR PC MAR IR : Instruction register MAR : Memory address register ALU : Aritmetic Logic Unit S.O. : Sistema Operativo MBR Cache memory programma ti ALU ACC MDR PC : Program counter MBR : Memory Buffer register ACC: Accumulator MDR: Memory Data register Central Processing Unit Output Central Memory 1

2 1. La CU preleva (fetch) una lla memoria centrale, utilizzando l indirizzo conservato nel PC, e la trasferisce in un suo registro (IR); 2. Il PC viene incrementato : (PC) (PC)+1; 3. L viene decodificata nell IR: si determina cioè il tipo di e si indirizza il circuito o il microprogramma che la esegue; 4. e 5. Se l usa operandi, si determina la loro posizione (indirizzo) e, se necessario, vengono trasferiti in registri della ALU (fetch degli operandi); 6. L viene eseguita; in presenza di operatori aritmetico/logici, gli operandi vengono inviati alla ALU per eseguire l operazione; 7. e 8. I risultati vengono trasferiti in memoria centrale (store); 9. Si torna al punto 1 e inizia a processare l successiva puntata l PC. Ciclo di Calcola indirizzo della (2) prossima Decodifica (3) l Calcola l indirizzo (4) dell operando Esegui (6) Calcola l indirizzo (7) del risultato Fetch (1) Fetch (5) operando Operandi multipli Memorizza (8) il risultato Istruzione completata, estrai la prossima fetch decod e execute Schema sequenziale del ciclo di Fasi : K 1 =1 K 2 =2 K 3 =3 K 4 =4 Tempo di clock: T 1 T 2 T 3 T 4 FETCH DECODE FETCH operandi N volte per quante sono le istruzioni del programma EXECUTE Tempo totale di CPU per l esecuzione di un programma di N istruzioni => T CPU = N x K x T i Ciclo di clock di ogni fase Num di istruzioni Num. di fasi Ad esempio, supponendo di avere N=100 istruzioni, in un processore con K=4 fasi del ciclo, con ciclo di clock di ciascuna fase T i =2 nanosecondi di CPU, il Tempo totale di esecuzione (di CPU) delle 100 istruzioni sarà pari a: T CPU = 100 x 4 x 2 nsec = 800 nsec Ipotesi molto restrittiva (ma esemplificativa) = clock uguale per ogni fase!! Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE Firmware, software memorizzato su chip di silicio Sistema Operativo (o di Sistema) venduto con l, comprende vari programmi di gestione del sistema Applicativo, insieme di programmi che permette di svolgere specifici lavori (elaborazioni testi, fogli elettronici, ecc). Programma e Linguaggio Programma: Descrizione della procedura di elaborazione, Sequenza di istruzioni espresse in un linguaggio comprensibile lla macchina. L insieme delle istruzioni primitive di un elaboratore definiscono il linguaggio del sistema. Distanza notevole fra il linguaggio umano e il linguaggio (comprensibile lla ) macchina = Gap semantico tra uomo e macchina: Necessità di introdurre un insieme di istruzioni e componenti più semplici utilizzare rispetto alle istruzioni primitive, Introduzione di una MACCHINA VIRTUALE sul livello di macchina reale (HW). I circuiti logici e fisici di una macchina sono in grado di riconoscere ed eseguire un numero limitato di istruzioni (operazioni elementari) in un LINGUAGGIO MACCHINA formato parole costruite sulla base di un alfabeto formato solo i caratteri elementari 0 e 1 o assenza e presenza di elettroni. 2

3 Linguaggio ad alto livello vs. linguaggio macchina uomo a+b => c 1 => n se cond = vero allora c x n => d incrementa n altrimenti... programmatore c = somma(a,b) n = 1 while cond = vero { d = moltiplica(c,n) n++. } macchina ? PROBLEMA: ridurre la distanza tra questi livelli! Soluzione: organizzare il calcolatore come una serie di MACCHINE ASTRATTE (structured computer organization) LA SOLUZIONE DEL GAP SEMANTICO di interfaccia di Sistema applicativo di Sistema HW IERI OGGI Livelli di Astrazione I sistemi di elaborazione sono sistemi gerarchici con diversi livelli di astrazione. Ogni livello costituisce un sottosistema a sé, caratterizzato suoi componenti HW/ SW e un suo linguaggio. Esiste una relazione ben definita fra i singoli livelli (tra un singolo livello e il livello sovrastante e sottostante) Ogni livello fornisce servizi al livello superiore Ogni livello utilizza il livello inferiore Il livello è il livello di base che permette il funzionamento di tutti i livelli superiori. reale M 0 L 0 virtuale M 1 L 1 M 0 L 0 virtuale M 2 virtuale M 1 L 2 L 1 M 0 L 0 Macchine virtuali Così come ad una macchina reale corrisponde un linguaggio (L 0 ), ad ogni Virtuale corrisponde un linguaggio (L i ) costituito tutte le istruzioni che quella macchina può eseguire. Il set di istruzioni comprensibili lla macchina virtuale costituisce un nuovo linguaggio (L 1 ) orientato alla rappresentazione più efficace della macchina e del problema computazionale che si vuole risolvere. Realizzare una macchina reale capace di comprendere L 1 sarebbe troppo costoso e/o poco efficiente. Non e detto che M 1 sia la soluzione desiderata (potrebbe essere ancora troppo distante l livello umano). E quindi necessario aggiungere altri livelli di astrazione per ridurre il gap semantico tra utente e macchina. Iterando si possono definire ulteriori macchine virtuali M 3 - M 4 -, M n fino a raggiungere il livello di usabilità desiderato l tipo di utente. Ogni in un linguaggio L i deve essere sostituita (tradotta) una sequenza di istruzioni in linguaggio L i-1 fino ad L 0 3

4 Esecutori e Linguaggi Il calcolatore (la macchina reale) capisce solo le istruzioni che fanno parte del linguaggio macchina (L 0 ) L obiettivo principale è definire un L 1 più facile utilizzare per l uomo rispetto a L 0 : - utilizzare le istruzioni di L 0 come operazioni di L 1 ; - definire l insieme delle istruzioni che fanno parte di L 1. Per la traduzione e la esecuzione dei programmi scritti in L 2 esistono due possibilità: 1) tradurli in L 1 ed eseguirli con M 1 per effettuare poi una ulteriore traduzione L 1 ad L 0 2) tradurli direttamente in L 0 ed eseguirli con M 0 La traduzione delle istruzioni espresse in linguaggio L n in istruzioni espresse in linguaggio L n-1 può avvenire in diversi modi: Interpretazione Compilazione Misto Interpretazione Un Interprete opera in modo che ogni in linguaggio L n sulla macchina M n venga esaminata, decodificata (tradotta) e poi eseguita immediatamente in una sequenza di istruzioni in linguaggio L n-1 : Compilazione Un Compilatore e` un programma che traduce un programma scritto in linguaggio L n in un programma scritto in linguaggio L n-1, che quindi può essere eseguito una o più volte lla macchina M n Programma sorgente (L n ) Compilatore Programma oggetto (L n-1 ) Programma in L n Interprete Errori sintattici e semantici ad esempio, su un circuito integrato i programmi vengono interpretati. Errori sintattici esecuzione L elaboratore esegue tutto il programma in L n-1, dopo che il compilatore ha tradotto il programma in L n-1 ed ha rilevato tutti gli errori sintattici, consentendone la correzione. ad esempio, un programma scritto in linguaggio Pascal deve essere compilato, cioè prima deve essere tradotto in linguaggio macchina e solo dopo può essere eseguito n volte. 4

5 Approccio Misto Definizione di un linguaggio intermedio Linguaggio Alto Livello Linguaggio Intermedio Linguaggio di Compilazione Interpretazione Confronto tra le differenti tecniche: Controllo errori sintattici: interprete: sempre compilatore: solo nella prima fase (nella traduzione PL n a PL n-1 ) Efficienza e velocità di esecuzione: Bassa per i linguaggi interpretati Alta per i linguaggi compilati Facilità di messa a punto dei programmi: Alta per i linguaggi interpretati Bassa per i linguaggi compilati quindi tranne che per la pura interpretazione, un programma su calcolatore subisce almeno 2 fasi: fase di compilazione (compile-time): è interessata alle proprietà statiche del programma e viene effettuata una volta; fase di esecuzione (run-time); è interessata alle proprietà dinamiche del programma e viene effettuata più volte. 5