Macchine Astratte (anche dette Macchine Virtuali)

Slides:



Advertisements
Presentazioni simili
…da von Neumann al computer quantistico
Advertisements

Traduzione ed Interpretazione
Informatica Generale Marzia Buscemi
Il Software.
Definizione e tipi di implementazione
Linguaggi di programmazione
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Massa Laura Mela Enrica
Generalità Linguaggio e Macchina Astratta
DAL MICROPROCESSORE AI SISTEMI EMBEDDED Informatica per lAutomazione II (Informatica B o II) Anno accademico 2008/2009 Prof. Giuseppe Mastronardi Ing.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
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)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Corso di Informatica Applicata - Lezione 3 - © 2005 Saverio De Vito Corso di Informatica Applicata Lezione 3 Università degli studi di Cassino Corso di.
Struttura dei sistemi operativi (panoramica)
Modelli simulativi per le Scienze Cognitive
Il Linguaggio Macchina
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Unità Didattica 2 I Linguaggi di Programmazione
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
2) Trattamento dell'informazione. Lab.Calc. I AA 2002/03 - cap.22 Esempio Supponiamo di volere calcolare X, per uno o più possibili valori di Y, in base.
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
Strutture di controllo in C -- Flow Chart --
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
La macchina di von Neumann
La macchina di von Neumann
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Elementi di Informatica di base
Algoritmi e Programmazione strutturata
ELETTRONICA DIGITALE (II Parte)
L' ARCHITETTURA DI VON NEUMANN
Architettura del calcolatore
Macchine astratte, linguaggi, interpretazione, compilazione
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
Unità centrale di processo
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
STRUTTURA DI UN COMPUTER
Architettura del calcolatore
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Architettura di un calcolatore e linguaggio macchina.
Corso di Architetetture degli Elaboratori, A.A. 2004/ Architettura degli Elaboratori Elisa B.P. Tiezzi Orario ricevimento: Giovedì, ( Il materiale.
L’esecuzione dei programmi
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Il software Claudia Raibulet
Informatica e Informatica di Base
Io ho voluto dimostrarlo attraverso una delle mie passioni:
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
Transcript della presentazione:

Macchine Astratte (anche dette Macchine Virtuali) Corso: Architettura degli Elaboratori Docente: Franco Barbanera Lucidi by G.Bella (modificati by F.Barbanera) Differenze dalla 2.2 : eliminazione alcune parti e piccole modifiche per adattarle al corso di 6 crediti UNIVERSITA’ DI CATANIA Dip. di Matematica e Informatica

Cosa significa “computare”? computazione 3+5 8 F. Barbanera, G. Bella 2 Macchine Astratte v.2.2

Genericamente: output input procedimento effettivo Computazione e’ una trasformazione di informazione da una forma implicita ad una esplicita, mediante una sequenza di passi computazionali unitari. Buono, ma troppo generico F. Barbanera, G. Bella 3 Macchine Astratte v.2.2

Modello Computazionale Un modello computazionale fornisce una formalizzazione delle nozioni di informazione passo computazionale unitario Un modello computazionale e’ quindi una definizione piu’ concreta di computazione. F. Barbanera, G. Bella 4 Macchine Astratte v.2.2

Alcuni modelli computazionali nome dell’inventore Alcuni modelli computazionali Gödel, basato sulla logica Church, basato sul calcolo di funzioni Post, basato sulla manipolazione di stringhe di caratteri Turing, basato su una macchina con un nastro e una testina … F. Barbanera, G. Bella 5 Macchine Astratte v.2.2

Il modello computazionale di Alan Turing (1936): La Macchina di Turing (TM) composta da un nastro infinito, suddiviso in celle, ciascuna capace di contenere un qualunque simbolo di un alfabeto una testina movibile, capace di leggere e/o scrivere un simbolo in una cella un controllo finito, che memorizza lo stato corrente un insieme di quintuple Una quintupla (istruzione) descrive cosa deve scrivere la testina e dove spostarsi (dx o sx) quando la testina legge un certo simbolo e si è in un certo stato corrente . F. Barbanera, G. Bella 6 Macchine Astratte v.2.2

Modello Computazionale di Turing informazione rappresentata da una lista di simboli (contenuti nel nastro) passo unitario di computazione come “esecuzione” di una quintupla. F. Barbanera, G. Bella 7 Macchine Astratte v.2.2

TM alla base della programmazione imperativa La Macchina di Turing introduce gli elementi essenziali della moderna programmazione imperativa: locazione – assegnamento – memoria – stato – iterazione – F. Barbanera, G. Bella 8 Macchine Astratte v.2.2

Church: Il Lambda-calcolo Il lambda calcolo è un altro modello computazionale, basato sui concetti di Variabile (in senso matematico) Applicazione Astrazione funzionale Ricorsione E’ alla base della Programmazione Funzionale (Lisp, Haskell, ML) F. Barbanera, G. Bella 9 Macchine Astratte v.2.2

Verso una definizione di macchina basata sui concetti introdotti dalle TM, ma non eccessivamente essenziale. F. Barbanera, G. Bella 10 Macchine Astratte v.2.2

Macchina Astratta (Imperativa) E’ un insieme di algoritmi e strutture dati in grado di memorizzare ed eseguire programmi. memoria operazioni primitive operazioni e strutture dati per gestire il trasferimento dati, ossia leggere gli operandi e memorizzare i risultati delle istruzioni operazioni e strutture dati per gestire il controllo di sequenza, ossia l’ordine di esecuzione delle operazioni del programma interprete per l’esecuzione del programma F. Barbanera, G. Bella 11 Macchine Astratte v.2.2

Osservazioni Precisa corrispondenza fra macchine astratte (imperative) e linguaggi di programmazione (imperativi). IMPORTANTE!!! Modelli computazionali diversi conducono a nozioni diverse di macchine astratte La maggioranza delle architetture concrete sono realizzazioni di macchine astratte imperative (per ragioni tecnologiche) F. Barbanera, G. Bella 12 Macchine Astratte v.2.2

Struttura di una Macchina Astratta F. Barbanera, G. Bella 13 Macchine Astratte v.2.2

Architettura di Van Neumann E’ la struttura delle realizzazioni fisiche di Macchine astratte imperative La CPU (Central Processing Unit) interpreta il Programma e legge i Dati dalla RAM (Random Access Memory). F. Barbanera, G. Bella 14 Macchine Astratte v.2.2

L’ Interprete E’ preposto all’esecuzione dei programmi Coordina il funzionamento delle altre componenti, allo scopo di eseguire un ciclo FETCH/EXECUTE continuamente fino all’esecuzione dell’istruzione primitiva HALT F. Barbanera, G. Bella 15 Macchine Astratte v.2.2

L’algoritmo Interprete mediante operazioni e strutture dati per gestire il controllo di sequenza si acquisisce dalla memoria mediante operazioni e strutture dati per gestire il trasferimento dati operazioni primitive L’algoritmo Interprete F. Barbanera, G. Bella 16 Macchine Astratte v.2.2

Esempio di Macchina Astratta - macchina tradizionale - memoria: vettore indicizzato di stringhe binarie operazioni primitive: aritmetico-logiche su stringhe di bit trasferimento dati: modalita’ per indirizzare la memoria controllo di sequenza: registro contatore istruzioni (PC) ecc. F. Barbanera, G. Bella 17 Macchine Astratte v.2.2

Esempi di macchine astratte lavatrice calcolatrice JVM (Java Virtual Machine) ristorante … F. Barbanera, G. Bella 18 Macchine Astratte v.2.2

Esempio di Macchina Astratta - ristorante - memoria: taccuini dei camerieri (input), dispensa (dati), tavole imbandite (output) operazioni primitive: varie capacita’ culinarie dell’insieme dei cuochi trasferimento dati: regole per trasferimento ingredienti dalla dispensa ai cuochi controllo di sequenza: ordine di arrivo delle ordinazioni ai cuochi, ordine di utilizzo degli ingredienti di una ricetta interprete: camerieri F. Barbanera, G. Bella 19 Macchine Astratte v.2.2

E l’ Input/Output ? Fra le componenti di una Macchina Astratta, non abbiamo incluso le strutture dati e gli algoritmi per la gestione dell’ Input/Output. Difficilmente esse possono essere generalizzate, ma volendo, si potrebbe. F. Barbanera, G. Bella 20 Macchine Astratte v.2.2

Il Linguaggio Macchina Si consideri una Macchina Astratta M LM, il linguaggio macchina di M, e’ il linguaggio in cui si esprimono tutti i programmi eseguibili da M LMEST, il linguaggio macchina esteso di M, e’ un linguaggio di stringhe di caratteri direttamente traducibili in LM Esempio: un programma in LM e’ una sequenza di vari livelli di tensione per i bit di una memoria fisica; l’equivalente in LMEST e’ un insieme di stringhe di 0 e di 1. F. Barbanera, G. Bella 21 Macchine Astratte v.2.2

Il Linguaggio Macchina LM e’ il linguaggio in cui i programmi eseguibili da M vengono rappresentati internamente LMEST e’ il linguaggio in cui i programmi eseguibili da M vengono rappresentati esternamente Il medesimo oggetto programma astratto puo’ essere rappresentato in ambedue i linguaggi. Quindi non faremo differenza fra i due linguaggi. Il LOADER carica un programma in LMEST, lo tra- duce in LM e lo carica nella memoria della macchina. F. Barbanera, G. Bella 22 Macchine Astratte v.2.2

Un binomio inscindibile Data una macchina astratta, resta definito il linguaggio di programmazione che e’ il suo linguaggio macchina Dato un linguaggio di programmazione, resta definita la macchina astratta che lo abbia come suo linguaggio macchina Macchina astratta M Linguaggio LM spaghetti, insalata, … cuoco lavabiancheria delicato, colori,forte… F. Barbanera, G. Bella 23 Macchine Astratte v.2.2

Complessita’ In virtu’ del binomio visto, si puo’ affermare che la complessita’ di una macchina dipende dalla complessita’ del suo linguaggio, e viceversa. Esempio 1. Si supponga che LM preveda il tipo astratto LISTA. Allora, M deve contenere operazioni elementari per realizzare Head, Tail, Length, … ed algoritmi per l’allocazione dinamica della memoria per le liste. Esempio 2. Si pensi a un moderno HLL (high-level language) F. Barbanera, G. Bella 24 Macchine Astratte v.2.2

L’hardware: la realizzazione fisica di una MA Oggi, e’ tecnicamente possibile realizzare una macchina astratta associata ad un linguaggio di alto livello. Due degli inconvenienti derivanti sarebbero: costi della realizzazione scarsa flessibilita’ della macchina ottenuta Quindi, in pratica, solo macchine astratte piuttosto semplici vengono realizzate in hardware. F. Barbanera, G. Bella 25 Macchine Astratte v.2.2

Alternative? In generale, come implementare una Macchina Astratta M ? Esistono 3 realizzazioni: hardware : realizzare M fisicamente interpretativa : emulare M mediante una macchina gia’ realizzata compilativa : tradurre il linguaggio di M in quello di una macchina gia’ realizzata gia’ trattato F. Barbanera, G. Bella 26 Macchine Astratte v.2.2

Realizzazione Interpretativa Sia M la Macchina Astratta da realizzare. Sia M’ una MA gia’ realizzata. (M’ e’ detta macchina ospite) Si realizzano tutti gli algoritmi e le strutture dati che definiscono le componenti di M mediante programmi e strutture dati di LM’. Se questi ultimi sono memorizzati in una memoria ad alta velocita’, di sola lettura, sullo stesso chip contenente le altre componenti di M’, si parla di interpretazione via firmware. F. Barbanera, G. Bella 27 Macchine Astratte v.2.2

Realizzazione Compilativa Come nel caso precedente, sia M la Macchina Astratta da realizzare, e sia M’ la macchina ospite. Si traduce l’intero programma scritto in LM in un programma funzionalmente equivalente scritto in LM’. Tale traduzione e’ eseguita dal compilatore. Le componenti di M in realta’ non vengono realizzate, ma l’utente ugualmente godra’ delle funzionalita’ di M. F. Barbanera, G. Bella 28 Macchine Astratte v.2.2

Nasce un problema… Come calcolare 3+5 mentre si dispone di una macchina fisica che puo’ solo incrementare un numero binario? C’e’ una differenza di potenza espressiva fra le due macchine (tra i due linguaggi). In generale, la differenza di potenza espressiva fra la Macchina Astratta da realizzare e la macchina ospite esistente, e’ detta semantic gap. F. Barbanera, G. Bella 29 Macchine Astratte v.2.2

Efficienza della realizzazione Spesso il semantic gap e’ cosi’ ampio che sia l’interpretazione che la compilazione potrebbero risultare inefficienti (M sarebbe lenta). Con l’interpretazione, l’interprete di M e’ realizzato da un programma in LM’, eseguito dall’interprete di M’ Con la compilazione, il programma in LM’ potrebbe avere dimensioni enormi, e quindi essere lento; il compilatore stesso e’ molto complicato se LM ed LM’ sono molto diversi Pertanto, si e’ pensato a delle macchine intermedie… F. Barbanera, G. Bella 30 Macchine Astratte v.2.2

Singola macchina intermedia macchina che vogliamo realizzare macchina gia’ realizzata macchina intermedia programma in LM M programma in LMi Mi interpretazione compilazione programma in LM’ M’ Mi va progettata in modo da massimizzare compattezza del codice in LMi prodotto velocita d’interpretazione di Mi su M’ F. Barbanera, G. Bella 31 Macchine Astratte v.2.2

Esperienze pratiche Mi e’ tipicamente solo un’estensione di M’ poiche’ ne usa il medesimo interprete, potenziato con un insieme di routine dedicate dette run-time system Java si basa sullo schema appena visto: Mi e’ la JVM (Java Virtual Machine); LMi e’ detto Bytecode; il run-time system e’ detto Java RunTime Environment Tutte le combinazioni compilazione/interpretazione sono possibili!!! La singola macchina viene generalizzata a piu’ macchine intermedie all’uopo di maggior flessibilita’ del sistema F. Barbanera, G. Bella 32 Macchine Astratte v.2.2

Una gerarchia di macchine per esempio, un HLL computer reale F. Barbanera, G. Bella 33 Macchine Astratte v.2.2

Osservazione Alcune componenti di una macchina possono essere identiche ad altrettante della macchina ospite. Esempio. Si immagini di poter utilizzare in C alcune routine per l’aritmetica binaria. Esempio schematico. Ciascun linguaggio ha componenti precipue (interpretate o compilate nei livelli inferiori) ed altre ereditate immutate. F. Barbanera, G. Bella 34 Macchine Astratte v.2.2

Tipica gerarchia di macchine in un moderno calcolatore Il passaggio a ciascun livello intermedio colma una parte del semantic gap. F. Barbanera, G. Bella 35 Macchine Astratte v.2.2

Livello 0 – logica digitale Componenti fondamentali sono le porte logiche (GATES ). Le porte logiche sono dispositivi analogici, ma fanno da tramite verso quelli binari (e quindi digitali) perche’ realizzano funzionalita’ (Not, And, Or, …) formalizzabili mediante una teoria binaria detta Algebra di Boole. Combinando variamente le porte logiche, si otterranno i registri, le memorie, le ALU. F. Barbanera, G. Bella 36 Macchine Astratte v.2.2

Livello 1 - microprogrammazione Componenti fondamentali sono registri e circuiti digitali che realizzano varie funzionalita’ aritmetico-logiche. Troviamo anche il datapath, le memorie, l’IFU (Instruction-Fetch Unit). Nasce il concetto di flusso di informazione poiche’ sequenze di bit viaggiano da una componente all’altra della Macchina Astratta di questo livello, venendo eventualmente elaborate. F. Barbanera, G. Bella 37 Macchine Astratte v.2.2

Livello 2 – istruzioni macchina Livello cui ci si riferisce quando si parla di linguaggio macchina. Istruzioni tipiche sono: ADD, MOVE, SUB, etc… Tale livello e’ direttamente implementato in hardware nel caso delle architetture RISC, mentre e’ realizzato mediante interpretazione firmware nelle architetture CISC. F. Barbanera, G. Bella 38 Macchine Astratte v.2.2

Livello 3 – sistema operativo programmare fino a questo livello e’ per sistemisti Esso non copre del tutto il livello sottostante. Molte istruzioni del 2 sono disponibili insieme a nuove, piu’ evolute funzionalita’: FILE e FILE SYSTEM – la prima organizzazione strutturata e gerarchica delle informazioni MEMORIA VIRTUALE – la macchina offre un’enorme quantita’ di memoria in piu’ rispetto a quella fisica PROCESSI e MULTITASKING – piu’ pezzi di programma in esecuzione indipendente e pseudo-parallela F. Barbanera, G. Bella 39 Macchine Astratte v.2.2

Livello 4 – assembly E’ il primo a presentare alcune caratteristiche elementari di un linguaggio di programmazione (etichette, variabili globali, procedure,…) E’ realizzato mediante compilazione. Il compilatore si chiama assembler. L’assembler e’ tipicamente scritto in istruzioni macchina (di livello 2). F. Barbanera, G. Bella 40 Macchine Astratte v.2.2

Livello 5 – HLL I moderni linguaggi di programmazione si posizionano a questo livello. Esistono varianti sia interpretative che compilate di certe macchine di questo livello. (Ad esempio, quella il cui linguaggio e’ il BASIC) Osservazione 1. La JVM si sta consolidando fra i livelli 4 e 5. Osservazione 2. I livelli descritti sono solo una possibile strutturazione gerarchica di un sistema. F. Barbanera, G. Bella 41 Macchine Astratte v.2.2

Al di sotto della logica digitale Possiamo individuare almeno 2 livelli: livello -1 – elettronica circuitale; si combinano i dispositivi di base (transistor, diodi, etc…) per ottenere le porte logiche livello -2 – fisica dello stato solido; si sfrutta la struttura fisica dei solidi e le proprieta’ dei semiconduttori per realizzare dispositivi di base Servono da tramite fra i fenomeni fisici e le tecniche per l’automazione del calcolo. Immaginare delle Macchine Astratte a tali livelli sarebbe pura speculazione. F. Barbanera, G. Bella 42 Macchine Astratte v.2.2

Programmazione e livelli di astrazione Un programma scritto in un HLL aggiunge un livello alla gerarchia. Esso estende la Macchina Astratta associata all’HLL con nuove strutture dati e nuove operazioni. Quindi, la potenza di un HLL si puo’ misurare coi meccanismi di astrazione che esso offre. Nessun linguaggio al momento estende il controllo di sequenza, del trasferimento dei dati, o la gestione della memoria. F. Barbanera, G. Bella 43 Macchine Astratte v.2.2

ATTENZIONE!!! In un sistema di calcolo non c’e’ limite ai livelli di MA presenti. Non tutti i sistemi di calcolo hanno il livello microprogrammato (CISC con, RISC senza) F. Barbanera, G. Bella 44 Macchine Astratte v.2.2