Interpreti e compilatori La macchina di Von Neumann



Похожие документы
Architettura del calcolatore

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

CPU. Maurizio Palesi

Architettura hardware

Lezione 3: Architettura del calcolatore

Il Processore: i registri

C. P. U. MEMORIA CENTRALE

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Architettura di un computer

Parte II.2 Elaboratore

Struttura del calcolatore

Laboratorio di Informatica

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

Architettura dei calcolatori I parte Introduzione, CPU

Introduzione all'architettura dei Calcolatori

La macchina programmata Instruction Set Architecture (1)

ARCHITETTURA DELL ELABORATORE

Il processore - CPU (CENTRAL PROCESSING UNIT)

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

Memoria Secondaria o di Massa

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Il processore - CPU. PDF created with pdffactory trial version

Architettura di un calcolatore

Fondamenti di informatica: un po di storia

Architettura dei computer

Unità di Misura Corso di Abilità Informatiche Laurea in Fisica. prof. Corrado Santoro

Il computer: primi elementi

Funzionalità di un calcolatore

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Contenuti. Visione macroscopica Hardware Software. 1 Introduzione. 2 Rappresentazione dell informazione. 3 Architettura del calcolatore

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Corso: Informatica+ Andrea Cremonini. Lezione del 20/10/2014

Architettura di un calcolatore: introduzione

Sistema operativo: Gestione della memoria

L architettura del calcolatore (Prima parte)

Vari tipi di computer

Appunti di Sistemi e Automazione

Struttura del Corso. Corso Integrato di Informatica e Sistemi di Elaborazione delle Informazioni. Sistemi di Elaborazione delle Informazioni.

IL COMPUTER. Nel 1500 Leonardo Da Vinci progettò una macchina sui pignoni dentati in grado di svolgere semplici calcoli. Nel 1642 Blase Pascal

Calcolatore: Elaborare: Input: Output: John von Neumann: Device: Embedded: Sistemi programmabili:

Architettura dei calcolatori

Componenti di base di un computer

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Corsi Speciali Abilitanti Indirizzo 2: Fisico-Matematico Modulo Didattico: Elementi di Informatica Classi: 48/A TEST D INGRESSO

MODULO Il personal computer. ISIS STRINGHER Corso Serale Anno scolastico 2010/11 Classe 1 Commerciale

Informazione analogica e digitale

Calcolo numerico e programmazione Architettura dei calcolatori

In un modello a strati il SO si pone come un guscio (shell) tra la macchina reale (HW) e le applicazioni 1 :

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Esame di INFORMATICA

RETI E SISTEMI INFORMATIVI

Informatica di base. Hardware: CPU SCHEDA MADRE. Informatica Hardware di un PC Prof. Corrado Lai

La Macchina Virtuale

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Dispensa di Fondamenti di Informatica. Architettura di un calcolatore

COME È FATTO IL COMPUTER

I componenti di un Sistema di elaborazione. CPU (central process unit)

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

MODULO 01. Come è fatto un computer

ARCHITETTURA DI UN PERSONAL COMPUTER

Fasi di creazione di un programma

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Informatica - A.A. 2010/11

Software di base. Corso di Fondamenti di Informatica

UNITÀ DI ELABORAZIONE (CPU) UNITÀ DI ELABORAZIONE (CPU) Opcode OpCode Operazione

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Introduzione all uso del Personal Computer

CONCETTI BASE dell'informatica Cose che non si possono non sapere!

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

IL COMPUTER APPUNTI PER LEZIONI NELLE 3 CLASSI LA MACCHINA DELLA 3 RIVOLUZIONE INDUSTRIALE. A CURA DEL Prof. Giuseppe Capuano

Richiami di informatica e programmazione

Anatomia e fisiologia del computer: l architettura del calcolatore

Tecnologia dell Informazione

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Il memory manager. Gestione della memoria centrale

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Architettura hardware

Come funziona un sistema di elaborazione

Elaborazione dei dati

Il Software. Il software del PC. Il BIOS

Unità Periferiche. Rete Di Controllo

Транскрипт:

Interpreti e compilatori La macchina di Von Neumann Informatica@Matematica Simone Martini a.a. 2014-2015 1 / 38

Parte I Interpreti e compilatori 2 / 38

Macchine astratte Una macchina astratta è un esecutore per un calcolo Ha associato un proprio linguaggio macchina Se la macchina è sufficientemente potente: un linguaggio di programmazione La macchina realizza un interprete per il proprio linguaggio 3 / 38

Interprete? Interprete: parte della MA che effettivamente realizza il calcolo Sfruttando un altra MA! IDLE fornisce lo stesso linguaggio Ma è realizzato su macchine Windows, Linux, Mac OSX E ogni SO è realizzato su hw diversi... 4 / 38

Interprete? Interprete: parte della MA che effettivamente realizza il calcolo Sfruttando un altra MA! IDLE fornisce lo stesso linguaggio Ma è realizzato su macchine Windows, Linux, Mac OSX E ogni SO è realizzato su hw diversi... 5 / 38

Interprete? Interprete: parte della MA che effettivamente realizza il calcolo Sfruttando un altra MA! IDLE fornisce lo stesso linguaggio Ma è realizzato su macchine Windows, Linux, Mac OSX E ogni SO è realizzato su hw diversi... 6 / 38

Interprete? Interprete: parte della MA che effettivamente realizza il calcolo Sfruttando un altra MA! IDLE fornisce lo stesso linguaggio Ma è realizzato su macchine Windows, Linux, Mac OSX E ogni SO è realizzato su hw diversi... 7 / 38

Interprete? Interprete: parte della MA che effettivamente realizza il calcolo Sfruttando un altra MA! IDLE fornisce lo stesso linguaggio Ma è realizzato su macchine Windows, Linux, Mac OSX E ogni SO è realizzato su hw diversi... 8 / 38

Gerarchia di MA La macchina M i : usa il linguaggio L Mi 1 è scritta in L Mi 1 per realizzare (implementare) il proprio linguaggio L i nasconde (entro certi limiti) la macchina M i 1 Al livello i non sappiamo (e non serve sapere!) quale sia il livello 0 (hw) 9 / 38

In un altro contesto: protocolli di comunicazione 10 / 38

Protocolli gerarchici 11 / 38

La gerarchia ISO/OSI 12 / 38

L interpretazione Per eseguire un linguaggio L su una macchina MO diversa dalla propria lo possiamo interpretare: realizziamo la macchina di L, usando (il linguaggio di) MO: Programma scritto in L Dati in Input Interprete per L scritto in LO Esecuzione su MO Dati di output MO 13 / 38

La compilazione Per eseguire un linguaggio L su una macchina MO diversa dalla propria lo possiamo compilare: traduciamo L in LO, ed eseguiamo il risultato su MO: Dati di Input Programma scritto in L Compilatore da L a LO Programma scritto in LO Dati di Output Esecuzione su MA Esecuzione su MO Macchina astratta MA Macchina ospite MO 14 / 38

Il compilatore Un compilatore C da L a Lo: traduce un programma in L in uno equivalente in Lo è a sua volta un programma scritto in un (altro?) linguaggio Il ciclo di produzione: 1 Scrivo P 2 Compilo P, ottenendo P o 3 Collego (faccio il linking) di P o con le librerie 4 Mando in esecuzione P o 15 / 38

Interprete o compilatore? Interprete: minor efficienza flessibilità e portabilità facilità di interazione a run-time (es. debugging) Compilatore: maggior efficienza scarsa flessibilità e portabilità perdita di info sulla struttura del programma sorgente 16 / 38

Interprete o compilatore? Ogni linguaggio può essere interpretato Ogni linguaggio può essere compilato Si dice che Python è interpretato o che C è compilato... Significa che: L implementazione usuale di Python è via interprete; L implementazione usuale di C è via compilatore. Ci sono compilatori di Python Ci sono interpreti di C 17 / 38

Interprete o compilatore? Ogni linguaggio può essere interpretato Ogni linguaggio può essere compilato Si dice che Python è interpretato o che C è compilato... Significa che: L implementazione usuale di Python è via interprete; L implementazione usuale di C è via compilatore. Ci sono compilatori di Python Ci sono interpreti di C 18 / 38

Interprete *e* compilatore! Nella realtà le due tecniche coesistono sempre: Dati di Input Programma scritto in L Compilatore da L a Li Programma scritto in Li Interprete di Li scritto in Lo oppure SRT Dati di Output Programma scritto in L Compilatore da L a Li Compilazione su MA Programma scritto in Li Esecuzione su MO MA MO 19 / 38

Parte II Architettura di Von Neumann 20 / 38

La macchina di Von Neumann La memoria contiene dati e programmi. Il processore (CPU) controlla anche il bus. Le velocità relative delle operazioni elementari sono molto diverse: 1 ciclo memoria almeno 10 cicli CPU (spesso 100 o più); 1 accesso disco può richiedere 10 6 cicli CPU. 21 / 38

La memoria Sequenza ordinata di celle, ciascuna capace di memorizzare un certo numero di bit (parola) e identificata univocamente da un indirizzo. 8 bit = 1 byte. Parola = multiplo di byte (1,2,4,8). Volatile. Non c è modo a priori di sapere se una cella contiene dati, o programmi, o valori non significativi. 22 / 38

Perché cifre binarie? Motivi tecnologici Intermezzo Circuiti bi-stabili più semplici, economici e affidabili Multipli e potenze di 2; logaritmi in base 2 bit = 1 cifra binaria byte = 8 bit K (kilo) = prefisso per 2 10 = 1024, dell ordine di 10 3 M (mega) = prefisso per 2 20, dell ordine di 10 6 G (giga) = prefisso per 2 30, dell ordine di 10 9 T (tera) = prefisso per 2 40, dell ordine di 10 12 P (peta) = prefisso per 2 50, dell ordine di 10 15 23 / 38

Il ciclo fondamentale Ciclo fetch, decode, execute. Processo sincrono, scandito dal clock di sistema. Ciascuna fase richiede in genere più cicli di clock. 24 / 38

Il bus di sistema Controllato dalla CPU. Ad ogni ciclo di clock collega due unità: una invia, una riceve. Bus dati: dati da CPU ad altra unità o viceversa. Bus indirizzi: indirizzo della cella richiesta, da CPU a memoria (linea continua grigia). Bus controllo: codice della operazione da eseguire da CPU a unità; codice del risultato dell operazione da unità a CPU. 25 / 38

La CPU 26 / 38

La CPU, 2 Controllo: gestisce il ciclo fondamentale; invia segnali al resto della CPU ALU: operazioni aritmetiche e logiche, in un ciclo di clock. P.e. due operandi (A) e (B), risultato in A. Registri interni: RI Registro Indirizzo memoria (anche: MAR) RD Registro Dati memoria (anche: MDR) PC Program Counter RIC Registro Istruzione Corrente (anche: IR) RS Registro di Stato (anche: SR, CCR, PSW, etc.) Registri operandi: qui solo due (A e B); possono essere decine; memorizzano temporaneamente operandi e risultati, per evitarne il trasporto in/da memoria 27 / 38

Variazioni sul tema Su questa struttura di base: Memorie veloci interne al processore (cache per i dati, e/o per le istruzioni) Gerarchie di cache: L1, L2, L3 Più processori su uno stesso circuito, che condividono l accesso al bus (multicore) Più processori indipendenti (multiprocessor, o multi-cpu) Processori indipendenti per elaborazione grafica (GPU), talvolta con propria memoria (dedicated)... 28 / 38

Leggiamo un offerta di un PC: PC Desktop con processore Intel Core i7-2600 (3,4GHz, 8MB di cache L3), 8GB RAM, 2TB Hard Disk, scheda video Ati Radeon HD 6450 2GB memoria dedicata, masterizzatore DVD dual layer, card reader multi in 1, HDMI, 6 USB e sistema operativo Windows 7; tastiera e mouse. La frequenza del clock del processore: 3,4GHz (1Hz = 1sec 1 ; 3,4GHz = 3.4 10 9 cicli al secondo) La presenza e dimensione di una cache: 8MB (di livello 3, quindi ci sono anche cache più piccole L2 e L1) La dimensione della memoria centrale: 8 Giga Byte (1 GB = 2 30 Byte, dell ordine di 10 9 ) La dimensione della memoria esterna: 2 Tera Byte (1 TB = 2 40 Byte, dell ordine di 10 12 ) La presenza di una GPU, con memoria dedicata di 2GB La presenza di una serie di porte per la connessione di periferiche (1 HDMI, 6 USB) La presenza di una serie di periferiche: DVD, card reader, tastiera, mouse Un sistema operativo (Windows 7) compreso nel prezzo 29 / 38

Leggiamo un offerta di un PC: PC Desktop con processore Intel Core i7-2600 (3,4GHz, 8MB di cache L3), 8GB RAM, 2TB Hard Disk, scheda video Ati Radeon HD 6450 2GB memoria dedicata, masterizzatore DVD dual layer, card reader multi in 1, HDMI, 6 USB e sistema operativo Windows 7; tastiera e mouse. La frequenza del clock del processore: 3,4GHz (1Hz = 1sec 1 ; 3,4GHz = 3.4 10 9 cicli al secondo) La presenza e dimensione di una cache: 8MB (di livello 3, quindi ci sono anche cache più piccole L2 e L1) La dimensione della memoria centrale: 8 Giga Byte (1 GB = 2 30 Byte, dell ordine di 10 9 ) La dimensione della memoria esterna: 2 Tera Byte (1 TB = 2 40 Byte, dell ordine di 10 12 ) La presenza di una GPU, con memoria dedicata di 2GB La presenza di una serie di porte per la connessione di periferiche (1 HDMI, 6 USB) La presenza di una serie di periferiche: DVD, card reader, tastiera, mouse Un sistema operativo (Windows 7) compreso nel prezzo 30 / 38

Un linguaggio per una macchina di VN Ogni specifica macchina ha un suo linguaggio! Un semplice esempio: RAM con parola di 7 bit, con indirizzi su 4 bit Indirizzi possibili: da 0 a 2 4 1 = 15 Istruzione: tre bit per il codice, restanti 4 per indirizzo operando 31 / 38

Il linguaggio: Un linguaggio per una macchina di VN, 2 codice mnemonico semantica 001 load copia in A la cella indirizzata 010 store copia A nella cella indirizzata 011 add copia in B la cella indirizzata; poi A A+B 100 subtr copia in B la cella indirizzata; poi A A-B 101 jump copia nel PC l indirizzo dell operando 110 jumpne se A 0, copia nel PC l indirizzo dell operando 111 halt termina l esecuzione Esempi: 0010010 copia in A la cella ad indirizzo 2 0111001 aggiungi ad A il valore contenuto ad indirizzo 9 1100101 la prossima istruzione è quella contenuta a indirizzo 5 32 / 38

Il linguaggio: Un linguaggio per una macchina di VN, 2 codice mnemonico semantica 001 load copia in A la cella indirizzata 010 store copia A nella cella indirizzata 011 add copia in B la cella indirizzata; poi A A+B 100 subtr copia in B la cella indirizzata; poi A A-B 101 jump copia nel PC l indirizzo dell operando 110 jumpne se A 0, copia nel PC l indirizzo dell operando 111 halt termina l esecuzione Esempi: 0010010 copia in A la cella ad indirizzo 2 0111001 aggiungi ad A il valore contenuto ad indirizzo 9 1100101 la prossima istruzione è quella contenuta a indirizzo 5 33 / 38

Un programma ind. mnemonico numero 0 load, 10 26 1 jumpne, 3 99 2 halt 112 3 subtr, 9 73 4 store, 10 42 5 load, 11 27 6 add, 12 60 7 store, 12 44 8 jump, 0 80 9 nessun codice 1 10 nessun codice 2 11 load, 1 17 12 nessun codice 0 13 jump, 3 83 14 load, 5 21 15 store, 11 43 34 / 38

in. mnem. n. 0 load, 10 26 1 jumpne, 3 99 2 halt 112 3 subtr, 9 73 4 store, 10 42 5 load, 11 27 6 add, 12 60 7 store, 12 44 8 jump, 0 80 9 no code 1 10 no code 2 11 load, 1 17 12 no code 0 13 jump, 3 83 14 load, 5 21 15 store, 11 43 La sua esecuzione istr A ind val load, 10 2 jumpne, 3 subtr, 9 1 store, 10 10 1 load, 11 17 add, 12 17 store, 12 12 17 jump, 0 load, 10 1 jumpne, 3 subtr, 9 0 store, 10 10 0 load, 11 17 add, 12 34 store, 12 12 34 jump, 0 load, 10 0 jumpne, 3 halt 35 / 38

Commenti In rosso le parole eseguite come istruzioni In blu le parole usate come dati Calcola per somme successive: cont(12) cont(10) + cont(11) Un programma potrebbe modificare istruzioni, o usare dati come istruzioni Non vi sono nomi simbolici: indirizzi in memoria Ristretto insieme di operazioni primitive Un solo tipo di dato: sequenze di bit, lunghezza di una parola 36 / 38

Risalendo la gerarchia delle macchine/linguaggi 1 Binario assoluto 2 Binario rilocabile 3 Assembly (mnemonico con ristretto insieme di nomi) 4 Linguaggi ad alto livello: p.e., C 5 Implementazioni interpretative di linguaggi ad alto livello: p.e., Python Implementazioni canoniche: da 4 a 1: compilazione (diretta o in cascata). 5: interpretato su 4; Oppure: compilato su Ling-Intermedio, a sua volta interpretato su 4. 37 / 38

Risalendo la gerarchia delle macchine/linguaggi 1 Binario assoluto 2 Binario rilocabile 3 Assembly (mnemonico con ristretto insieme di nomi) 4 Linguaggi ad alto livello: p.e., C 5 Implementazioni interpretative di linguaggi ad alto livello: p.e., Python Implementazioni canoniche: da 4 a 1: compilazione (diretta o in cascata). 5: interpretato su 4; Oppure: compilato su Ling-Intermedio, a sua volta interpretato su 4. 38 / 38