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

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

Informatica Generale Susanna Pelagatti
La struttura fisica e logica di un elaboratore
Dalla scrittura all’esecuzione
Introduzione allarchitettura dei calcolatori 2/ed Carl Hamacher, Zvonko Vranesic, Safwat Zaky Copyright © 2007 – The McGraw-Hill Companies srl Versione.
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Informatica Generale Susanna Pelagatti
Informatica Generale Susanna Pelagatti
La struttura hardware.
Architettura di un sistema informatico Hardware
Il Linguaggio Macchina
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Il livello Microarchitetturale
Il Linguaggio Macchina
Com’è fatto un elaboratore?
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
EVOLUZIONE DEL PC Legge di Moore: La potenza dei calcolatori raddoppia ogni 18 mesi Metà anni 80 (Personal Computer IBM AT) Architettura 16 bit interna,
Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per lambiente e il territorio Il calcolatore Stefano Cagnoni e Monica Mordonini Dipartimento.
La macchina di von Neumann
Architettura dell’elaboratore
Informatica: il trattamento automatico dell’informazione
Il Calcolatore Elettronico
ELETTRONICA DIGITALE (II Parte)
STRUTTURA GENERALE DI UN ELABORATORE
L' ARCHITETTURA DI VON NEUMANN
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
ARCHITETTURA DI UN ELABORATORE
Unità centrale di processo
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Architettura del calcolatore
Informatica A.A. 2009/2010 Parte 2 L’Elaboratore Corso A: Prof. Stefano Berardi Corso B: Prof. Ugo de’ Liguoro
Calcolatori Elettronici Il Processore
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corsi di Laurea in Biotecnologie
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
Il calcolatore Stefano Cagnoni e Monica Mordonini
Il software Claudia Raibulet
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Informatica Lezione 4 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
STRUTTURA DELL’ELABORATORE
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 20 Maggio.
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Dalla macchina di Von Neumann …
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
Il modello di Von Neumann
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Architettura degli elaboratori
Transcript della presentazione:

1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: (sommario delle lezioni in fondo alla pagina)

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

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

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 Traduzione 2 traduttore x = y indirizzo di y indirizzo di x codice sorgente (scritto in qualche linguaggio di alto livello) codice oggetto (“eseguibile”)

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 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 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 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 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 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 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 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 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 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 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 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 La struttura hardware

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 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 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 indirizzi Sequenza di parole (un array …)

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 indirizzi Sequenza di parole (un array …) Valore da trasferire Dove trasferirlo Direzione di trasferimento, unità coinvolte etc.

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 Esecuzione: esempio Esempio: come si realizza l’operazione x=y+2 : LOAD Y, R1 ADD 2, R1 STORE R1, X 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 Esecuzione: esempio 2 Esempio x=y+2 LOAD Y, R1 ADD 2, R1 STORE R1, X 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 Esecuzione: esempio 3 Esempio x=y+2 (assembler) LOAD Y, R1 ADD 2, R1 STORE R1, X 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 Esecuzione: esempio 4 Esempio x=y+2 LOAD Y, R1 ADD 2, R1 STORE R1, X Y X Situazione finale della memoria 36 R1 memoria

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 memoria Y X

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

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 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 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 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 Esecuzione: linguaggio macchina 7 Codifica binaria di LOAD 01101, R1 ADD 2, R1 STORE R1, Codice operativoModo1Op1Modo2Op2 MODI 00 registro 01 memoria 10 immediato CODICI OPERATIVI ADD 0001 LOAD 0110 STORE bit 4bit 12bit load add store

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 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 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 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 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 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 memoria Indirizzo della istruzione codifica PC

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 memoria Indirizzo della istruzione codifica PC 40 MAR Leggi!

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

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

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

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

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

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