La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta.

Presentazioni simili


Presentazione sul tema: "1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta."— Transcript della presentazione:

1 1 Informatica Generale Marzia Buscemi buscemi@di.unipi.it Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: http://www.di.unipi.it/~buscemi/IG07.htm (sommario delle lezioni in fondo alla pagina)

2 2 Finora abbiamo visto... Algoritmo Codifica in un linguaggio di programmazione (C, Java, etc) Programma Compilatore Eseguibile

3 3 Oggi vedremo... Algoritmo Programma traduttore Input : programma Output : rappresentazione comprensibile alla macchina Eseguibile

4 4 Traduzione I traduttori sono programmi particolari che provvedono a convertire il codice di programmi scritti in un dato linguaggio di programmazione (sorgenti) nella corrispondente rappresentazione in linguaggio macchina (programmi oggetto o eseguibili)

5 5 Traduzione 2 traduttore x = y +2 00010100 11001011 00010110 00000010 00010111 11001111 indirizzo di y indirizzo di x codice sorgente (scritto in qualche linguaggio di alto livello) codice oggetto (“eseguibile”)

6 6 Due tipi di traduttori Interpreti traducono ed eseguono direttamente ciascuna istruzione del programma sorgente, istruzione per istruzione Compilatori accettano in input l’intero programma e producono in output la rappresentazione dell’intero programma in linguaggio macchina programma valore interprete programma compilatore

7 7 Due tipi di traduttori 2 Interpreti la traduzione avviene tante volte quante sono le istruzioni del programma; ad ogni attivazione dell’interprete su una particolare istruzione, segue l’esecuzione dell’istruzione Compilatori per ogni programma, la traduzione avviene una sola volta prima dell’esecuzione

8 8 Esempio L’istruzione while E do C è interpretata così: 1. l’espressione E in codice macchina viena valutata 2. Se E è falsa, il comando termina e si prosegue dall’istruzione successiva 3. Se E è vera si interpreta l’istruzione C (si traduce e si esegue ogni sottoistruzione) 4. Alla fine si ritorna a 1. PS. L’output di un interprete è il risultato dell’esecuzione del programma e non un programma da eseguire

9 9 Interprete vs compilatore Quale tra le due soluzioni è la migliore? compilazione: migliori prestazioni (la traduzione viene effettuata una volta sola) processi di ottimizzazione (compilazione sull’intero programma) interprete: in caso di modifiche, consente di eseguire il programma non appena il codice sorgente sia stata aggiornato

10 10 Processo di compilazione programma sorgente analisi lessicale alberi sintattici analisi sintattica pre-processing codice “pre-processato” elementi sintattici analisi semantica alberi sintattici “annotati” generazione codice macchina codice oggetto

11 11 Esempio // la seguente istruzione calcola il valore di una certa espressione aritmetica x := a*2 + b*(x*3) 1. La linea di codice sopra è riconducibile a una categoria sintattica? (sì, è un assegnamento) 2. il codice è valido o presenta degli errori? 3. determinare il significato, cioè quali operazioni deve eseguire l’elaboratore Dapprima si divide la linea in elementi sintattici (token), poi si trasformano questi elementi in istruzioni del linguaggio e si effettuano i controlli “semantici”, infine si traducono le istruzioni in linguaggio macchina

12 12 Esempio: pre-processing // la seguente istruzione calcola il valore di una certa espressione aritmetica x := a*2 + b*(x*3) i commenti al codice vengono rimossi

13 13 Esempio: analisi lessicale x := a*2 + b*(x*3) x assign a mult 2 plus b mult lpar x mult 3 rpar i caratteri vengono raccolti in elementi sintattici

14 14 Esempio: analisi sintattica x assign a mult 2 plus b mult lpar x mult 3 rpar x assign plus a 2 mult b x 3 gli elementi sintattici vengono organizzati in una struttura ad albero che descrive l’ordine in cui devono essere eseguite le operazioni (dal basso verso l’alto)

15 15 Esempio: analisi semantica x assign plus a 2 mult b x 3 x:int assign:int,int plus:int,int a: int 2 mult: int,int b:int mult:int,int x:int 3 Gli elementi dell’albero sintattico vengono etichettati con i tipi corrispondenti alle operazioni e agli operandi e si effettuano dei controlli di compatibilità su questi tipi

16 16 Processo di traduzione in Java codice byte-code (.class) compilatore programma sorgente (.java) Java Virtual Machine codice oggetto Es. Gli applet contengono codice byte-code e non risiedono permanentemente su un calcolatore, ma vengono tradotti e interpretati dalla JVM della macchina su cui sono copiati specifica per ciascun calcolatore

17 17 Linking e esecuzione Librerie: raccolte di programmi-oggetto che forniscono particolari funzionalità (funzioni matematiche, etc.) Linking: collega i diversi file-oggetto (librerie + programmi oggetto generati dai sorgenti scritti dal programmatore) in un unico programma eseguibile librerie programmi sorgenti compila- tore codici oggetto programma eseguibile linker

18 18 La struttura hardware

19 19 Ritorniamo alla …. struttura generale di un calcolatore Il calcolatore di Von Neumann Memoria (RAM,dischi, etc) Mantiene Dati e Programmi Processore (CPU) E’ un esecutore capace di interpretare i singoli passi richiesti dai programmi (istruzioni elementari) Sottosistema di Interfaccia Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, micr., stampante, schermo, )

20 20 Struttura di un calcolatore 2 RAM (memoria centrale) Processore bus Linee dati, indirizzi e controllo Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O schermo dischi mouse modem

21 21 Struttura di un calcolatore 3 RAM (memoria centrale) Processore bus Linee dati, indirizzi e controllo Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O schermo dischi mouse modem...... 0123401234 indirizzi Sequenza di parole (un array …)

22 22 Struttura di un calcolatore 4 RAM (memoria centrale) Processore bus Linee dati, indirizzi e controllo Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O schermo dischi mouse modem...... 0123401234 indirizzi Sequenza di parole (un array …) Valore da trasferire Dove trasferirlo Direzione di trasferimento, unità coinvolte etc.

23 23 Struttura di un calcolatore 5 RAM (memoria centrale) Processore bus Linee dati, indirizzi e controllo Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O Interfaccia di I/O schermo dischi mouse modem

24 24 Esecuzione: esempio Esempio: come si realizza l’operazione x=y+2 : LOAD Y, R1 ADD 2, R1 STORE R1, X 34 222 Y X Indirizzi di due parole di memoria che rappresentano le variabili intere x e y 17 R1 Registro interno del processore (variabile temporanea su cui lavorare) Legge il valore in Y e lo scrive in R1 memoria assembler

25 25 Esecuzione: esempio 2 Esempio x=y+2 LOAD Y, R1 ADD 2, R1 STORE R1, X 34 222 Y X Indirizzi di due parole di memoria che rappresentano interi 34 R1 Registro interno del processore (variabile temporanea su cui lavorare) Aggiunge 2 a R1 memoria assembler

26 26 Esecuzione: esempio 3 Esempio x=y+2 (assembler) LOAD Y, R1 ADD 2, R1 STORE R1, X 34 222 Y X Indirizzi binari di due parole di memoria che rappresentano interi 36 R1 Registro interno del processore (variabile temporanea su cui lavorare) Scrive il contenuto di R1 nella parola di indirizzo X memoria assembler

27 27 Esecuzione: esempio 4 Esempio x=y+2 LOAD Y, R1 ADD 2, R1 STORE R1, X 34 36 Y X Situazione finale della memoria 36 R1 memoria

28 28 Esecuzione: linguaggio macchina Traduzione binaria (in linguaggio macchina) di LOAD Y, R1 ADD 2, R1 STORE R1, X Prima di tutto dobbiamo decidere quale è il vero indirizzo di X e Y 01101 11100 memoria Y X

29 29 Esecuzione: linguaggio macchina 2 Codifica binaria di LOAD 01101, R1 ADD 2, R1 STORE R1, 11100 Ogni operazione si codifica secondo un formato stabilito da chi costruisce l’hw un formato semplificato è Codice operativoModo 1Op1Modo 2Op2

30 30 Esecuzione: linguaggio macchina 3 Vediamo i vari campi del formato : Codice operativoModo1Op1Modo2Op2 è la codifica dell’operazione da eseguire es: ADD 0001 LOAD 0110 STORE 0111

31 31 Esecuzione: linguaggio macchina 4 Vediamo i vari campi del formato : Codice operativoModo1Op1Modo2Op2 è la codifica primo operando dice a cosa si riferisce OP1 es: se MODO1 = 00 l’operando è nel registro interno del processore (e OP1 è il numero del registro) se MODO1 = 01 l’operando è in memoria (e OP1 è l’indirizzo) se MODO1 = 10 l’operando è immediato, cioè OP1 è direttamente il valore dell’operando Lo stesso vale per il secondo operando!

32 32 Esecuzione: linguaggio macchina 5 Tipicamente la codifica di una istruzione è lunga come una parola (word) o multipli della parola per poterla leggere dalla memoria in modo più efficiente : es : con parole di 4 byte (32 bit) Codice operativoModo1Op1Modo2Op2 2bit 4bit 12bit

33 33 Esecuzione: linguaggio macchina 6 Problema ….. es : con 12 bit posso indirizzare ‘solo’ 2 12 parole di memoria centrale (RAM) ! Cioè posso avere al massimo una RAM di 4K parole … se ne ho di più (oggi si arriva a 128M e siamo sempre in aumento …) devo inventarmi codifiche diverse…. Codice operativoModo1Op1Modo2Op2 2bit 4bit 12bit

34 34 Esecuzione: linguaggio macchina 7 Codifica binaria di LOAD 01101, R1 ADD 2, R1 STORE R1, 11100 Codice operativoModo1Op1Modo2Op2 MODI 00 registro 01 memoria 10 immediato CODICI OPERATIVI ADD 0001 LOAD 0110 STORE 0111 2bit 4bit 12bit 0110 01 01101 00 00001 load 0001 10 00010 01 00001 add 0111 00 00001 01 11100 store

35 35 Il processore Adesso vediamo come è strutturato il processore per riuscire ad eseguire i programmi in linguaggio macchina che abbiamo appena visto Dati e programmi sono codificati in binario e risiedono in Memoria Centrale (RAM) ad opportuni indirizzi

36 36 Il processore: struttura base Processore Unità di controllo PC IR R0 R1 R2... R16 Registri generali ALU Operazione Esegui Esito MARMAR MDRMDR MemoriacentraleMemoriacentrale Bus dati Bus indirizzo Bus controllo Registro/i coinvolti clock

37 37 Il processore: struttura base 2 I registri sono celle di memoria: PC (program counter) indica l’indirizzo di memoria della prossima istruzione da eseguire IR (instruction register) contiene copia della codifica dell’istruzione da eseguire MAR, MDR (Memory Address Register, Memory Data Register) contengono l’indirizzo della cella di memoria che vogliamo leggere/scrivere (MAR) ed i dati da/per la memoria (MDR) R0,R1... sono registri generali che servono per memorizzare valori durante i calcoli

38 38 Il processore: struttura base 3 CU (Unità di controllo): gestisce la successione delle operazioni da svolgere, sincronizzando le attività ALU (Unità aritmetico logica): effettua operazioni di tipo aritmetico e logico- booleano (+,-,and,or …) Clock: è un segnale periodico fatto di uni e zero che viene distribuito a tutti i circuiti sincroni del processore (vedi dopo)

39 39 Il processore Esegue il seguente ciclo ininterrottamente : 1. (fetch) legge una nuova istruzione da eseguire dalla memoria centrale 2. (decode) risale alla operazione richiesta decodificando la rappresentazione binaria 3. (execute) porta a termine l’operazione richiesta

40 40 Un esempio : ADD 2, R1 (fetch) 1 Processore Parte controllo 40 IR R0 R1 R2... R16 Registri generali ALU Operazione Esegui Esito MARMAR MDRMDR Bus dati Bus indirizzo Bus controllo Registro/i coinvolti 000..01 40 memoria Indirizzo della istruzione codifica PC

41 41 Un esempio : ADD 2, R1 (fetch) 2 Processore Parte controllo 41 IR R0 R1 R2... R16 Registri generali ALU Operazione Esegui Esito MDRMDR Bus dati Bus indirizzo Registro/i coinvolti 000..01 40 memoria Indirizzo della istruzione codifica PC 40 MAR Leggi!

42 42 Un esempio : ADD 2, R1 (fetch) 3 Processore Parte controllo 41 000110000100100001 R0 R1 R2... R16 Registri generali ALU Operazione Esegui Esito Bus dati Bus indirizzo Registro/i coinvolti 000..01 40 memoria PC MAR MDR IR

43 43 Un esempio : ADD 2, R1 (dec) Processore Parte controllo 41 000110000100100001 R0 R1 R2... R16 Registri generali ALU add Esegui Esito Bus dati Bus indirizzo Registro/i coinvolti 000..01 40 memoria PC MAR MDR IR

44 44 Un esempio : ADD 2, R1 (exe) 1 Processore Parte controllo 41 000110000100100001 00010 R1 R2... R16 Registri generali ALU add Esegui Esito Bus dati Bus indirizzo Registro/i coinvolti 000..01 40 memoria PC MAR MDR IR

45 45 Un esempio : ADD 2, R1 (exe) 2 Processore Parte controllo 41 000110000100100001 00010 34 R2... R16 Registri generali ALU add Esegui Esito Bus dati Bus indirizzo Registro/i coinvolti 000..01 40 memoria PC MAR MDR IR

46 46 Un esempio : ADD 2, R1 (exe) 3 Processore Parte controllo 41 000110000100100001 00010 36 R2... R16 Registri generali ALU Esito Bus dati Bus indirizzo Registro/i coinvolti 000..01 40 memoria PC MAR MDR IR

47 47 Il clock: periodo e frequenza L’esecuzione è sincrona, cioè esiste un segnale di ‘inizio della sottooperazione’ (detto impulso o tick, in quanto generato dal clock) distribuito a tutti i circuiti sequenziali sincroni. Il periodo di clock è l’intervallo di tempo tra due successivi impulsi. La frequenza con cui viene inviato il tick è misurata in ‘numero di impulsi al secondo’ (Hz) [1 GHz = un milione di impulsi al secondo] Importante: il tempo di esecuzione di una istruzione si misura in cicli di clock, cioè in quanti impulsi di clock sono necessari perché la CPU la completi. Quindi: maggiore frequenza  maggiore velocità di CPU


Scaricare ppt "1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta."

Presentazioni simili


Annunci Google