Esercizi sulle Macchine Astratte




Esercizio 1


Ho un sistema di calcolo in cui il livello superiore implementa una macchina astratta il cui linguaggio e' il linguaggio JAVA. Voglio implementare sopra questo livello la macchina astratta corrispondente al linguaggio di microprogrammazione Mic-1. Posso farlo? Se si, perche' cio' e' possibile ed in che modo posso realizzarlo? Se no, perche' non e' possibile e quali sono le caratteristiche del Mic-1 che impediscono tale implementazione?

  • Soluzione.



    Esercizio 2

    La componente "memoria" di una Macchina Astratta deve necessariamente essere realizzata in hardware? Perche'?

  • Soluzione.



    Esercizio 3
    (Anni Precedenti)
    HASKELL e' un linguaggio di programmazione funzionale, basato cioe' su un modello computazionale differente da quello che e' alla base dei linguaggi di programmazione imperativi.
    La nozione di Macchina Astratta per linguaggi di programmazione come HASKELL (MAF, Macchina Astratta Funzionale) e' simile a quella descritta nel corso?
    Una MAF ha le stesse componenti di una MA ?
    se si, le componenti di una MAF hanno funzioni differenti dalle relative componenti di una MA?
    oppure una MAF e' essenzialmente diversa da una MA?
    se si, descriverla.


    Esercizio 4

    Si consideri il linguaggio di programmazione che abbia programmi definiti dalla seguente grammatica:
    Programma ::=  Istr | Istr;Programma
    Istr ::=  m[x]<-0 | m[x]<-1 | m[x]<-m[y] | if B then Istr 
    B ::= m[x]=0 | m[x]=1 | m[x]=m[y]
    
    dove il significato delle istruzioni e' il seguente:
    m[x] <- 0     (nella cella di memoria di indirizzo x poni 0)
    m[x] <- 1     (nella cella di memoria di indirizzo x poni 1)
    m[x] <- m[y]  (nella cella di memoria di indirizzo x poni il contenuto della
                   cella di indirizzo y)
    if B then I   (se B e' vera allora esegui I)
    
    Inoltre x e y possono avere come valori solo 0, 1, 2, 3. Questo significa che la memoria per i dati associata al nostro linguaggio ha solo quattro celle. Inoltre queste celle della parte di memoria riservata ai dati sono formate da un unico bit (possiamo memorizzarci solo 0 oppure 1).
    Ovviamente questo linguaggio non e' universale (non ha la potenza computazionale per descrivere qualsiasi algoritmo).

    Dire, motivando dettagliatamente la risposta, perche' la Macchina Astratta associata al linguaggio descritto puo' essere realizzata SOLAMENTE in Hardware.

  • Soluzione.


    Esercizio 5

    E' possibile vedere un circuito combinatorio come una Macchina Astratta?

  • Soluzione. (By C. Bosco)


    Esercizio 6

    (a) Descrivere la componente Interprete delle Macchine Astratte.

    (b) Potrebbe accadere che nell'implementazione della MA del livello 5 di un sistema di calcolo la componente memoria sia esattamente la componente memoria del livello 3 ?


  • Soluzione.



    Esercizio 7

    (a) E' possibile avere delle macchine astratte senza la componente Interprete?
    Motivare brevemente la risposta.
    (b) Dire perche' e' indispensabile che in un sistema di calcolo organizzato a livelli esista un livello microprogrammato.

  • Soluzione.



    Esercizio 8


    (a) E' possibile avere un sistema di calcolo organizzato a livelli in cui esistano tre livelli corrispondenti alla macchina astratta del linguaggio Java?
    Motivare brevemente la risposta.
    (b) Dire perche' e' indispensabile che in un sistema di calcolo organizzato a livelli esista il livello 6.

  • Soluzione.




    Esercizio 9

    Nel testo sono descritte due possibili tipi di implementazione per IJVM: realizzazione (parziale) in HW con PicojavaII e realizzazione per interpretazione com Mic-1.
    Sarebbe possibile pensare ad una realizzazione compilativa per IJVM?
    Perche' si o perche' no?



    Esercizio 10

    Indicate quali livelli sono in esecuzione quando fate girare sulla vostra macchina il simulatore per IJVM.
  • Soluzione (by E. Papotto & M. Morgano)



    Esercizio 11

    Sul testo, piu' o meno esplicitamente, si assume che il livello del linguaggio Assembly venga realizzato per traduzione. E' possibile pensare, in teoria, di realizzarlo per interpretazione?


    Esercizio 12

    (a) Avete cinque righe a disposizione (scritte normali e non una di piu') per dirmi perche' e' conveniente organizzare a livelli i sistemi di calcolo.
    (b) Dire perche' in un sistema di calcolo organizzato a livelli almeno un livello deve essere necessariamente realizzato per compilazione (traduzione).
  • Soluzione.



    Esercizio 13

    (a) Qual'e' il numero teorico massimo di livelli in un sistema di calcolo? Perche'?
    (b) Se come parametro di valutazione abbiamo la velocita' di esecuzione dei programmi, e' meglio una realizzazione interpretativa o compilativa di un linguaggio ad alto livello? Perche'?
  • Soluzione.



    Esercizio 14

    Con riferimento ai livelli di macchina virtuale, barrare quelle giuste tra le seguenti asserzioni. Una macchina virtuale e' caratterizzata: (a) dalla velocita' di esecuzione tipica del livello; (b) dal linguaggio di programmazione che accetta; (c) dal metodo usato per simularla a partire da una macchina piu' semplice; (d) dal fatto che il suo linguaggio e' necessariamente piu' complesso di quella su cui viene simulata; (e) dal fatto che il suo linguaggio e' necessariamente piu' semplice di quella su cui viene simulata.
  • Soluzione.


    Esercizio 15

    (a) Supponendo che ormai chiunque sappia piu' o meno quali sono le funzionalita' medie di un telefono cellulare: e' possibile vedere un cellulare come una macchina astratta? In caso negativo motivare la risposta. In caso positivo descrivere brevemente le componenti di tale macchina astratta.

    (b) Se la risposta al punto (a) e' affermativa, sarebbe possibile utilizzare il linguaggio della macchina astratta telefonino per implementare per interpretazione un altro linguaggio? Fate un esempio (anche fantasioso, ma concretamente realizzabile) di una possibile istruzione di tale linguaggio.

  • Soluzione.


    Esercizio 16

    Identificare nella macchina Mic-1 quali sono le parti che corrispondono alla componente Controllo di Sequenza.
    Soluzione
    Esercizio 17

    Fornire un esempio di Macchina Astratta tratto dalla vita comune (del tipo della MA Ristorante descritto nella pagina http://www.dipmat.unict.it/~barba/Architetture.html/MATERIALE-IN-RETE/MA/4.htm.

    Esercizio 18

    Perche' in un sistema di calcolo strutturato a livelli non puo' esserci piu' di un livello realizzato per traduzione?
  • Soluzione.



    Esercizio 19


    (a) Volendo fornire una definizione di Macchina Astratta parallela, questa deve avere una o piu' componenti "Interprete", una o piu' componenti "Memoria"? Discutere.

    (b) Considerate il livello ISA corrispondente al linguaggio IJVM realizzato nel testo del Tananbaum sopra il livello microprogrammato Mic-1. Ci sono componenti della macchina astratta IJVM realizzate per interpretazione? ce ne sono di realizzate direttamente Hardware? ce ne sono altre che sono parte del livello sottostante?
  • Soluzione.




    Esercizio 20

    Spiegare perche' in una macchina astratta realizzata al livello 1 di un sistema di calcolo, la componente "gestione della memoria" e' praticamente inesistente.
  • Soluzione.


    Esercizio 21

    (a) In quali casi e' possibile avere un sistema di calcolo organizzato a livelli in cui tutti i livelli sono realizzati in hardware?

    (b) In un sistema di calcolo organizzato a livelli, cosa si intende quando si dice che "un livello non e' completamente coperto da quello superiore"? Fornire un possibile esempio.
  • Soluzione.


    Esercizio 22

    (a) Identificare nella macchina Mic-1 quali sono le parti che corrispondono alla componente Controllo di Sequenza.

    (b) Discutere brevemente come un impianto Hi-Fi puo' venire visto come una macchina astratta, identificando le varie componenti (che in qualche caso possono essere praticamente inesistenti).
  • Soluzione.


    Esercizio 23

    (a) Riguardo molti microprocessori si parla di backward compatibility (compatibilita'). Visto che un microprocessore puo' esser visto come la realizzazione hardware (di parte) di una macchina astratta, qual e', secondo voi, il significato di backward compatibility in termini di macchine astratte? in altre parole, cosa significa che una macchina astratta e' backward compatible?

    (b) La Macchina di Turing e' alla base della nostra definizione di Macchina Astratta. Quindi una Macchina di Turing potrebbe esser vista anche come una semplicissima macchina astratta. Dire brevemente cosa fa l'interprete di una macchina di Turing.
    In una macchina di Turing universale ci sono sempre due interpreti, uno, per modo di dire, "hardware", e l'altro "software". E' vero? Perche'?

  • Soluzione.


    Esercizio 24

    (a) E' possibile realizzare la macchina astratta IJVM per traduzione su quella Mic-1? Motivare la risposta.
    (b) Cos'e' una Macchina di Turing? Perche' il modello della Macchina di Turing e' alla base delle architetture di tipo Von Neumann?
  • Soluzione.


    Esercizio 25

    (a) Prendete in considerazione l'implementazione descritta nel testo (Tanenbaum) della macchina astratta IJVM. Quali componenti della macchina astratta vengono realizzate (totalmente o parzialmente) dallo Stack?
    (b) Una cucina dotata di tutto, compresa una persona che sta cucinando, puo' esser vista come la realizzazione hardware di una macchina astratta? Se si, identificarne la varie componenti. Se no, spiegarne il motivo.
  • Soluzione.


    Esercizio 26
    (a) Prendete in considerazione la macchina astratta Mic-1. Quali parti della sua realizzazione hardware descritta nel testo (Tanenbaum) corrispondono alla componente Controllo di Sequenza?

    (b) E' possibile che una macchina astratta che tipicamente sarebbe realizzata in hardware venga realizzata per traduzione o compilazione su una macchina astratta corrispondente ad un linguaggio ad alto livello come Java o C?
    Ne abbiamo esempi nella pagina web del corso?
  • Soluzione.


    Esercizio 27
    (a) Si consideri la struttura a livelli di un calcolatore.
  • Si motivi l'introduzione di tale struttura.
  • Si spieghi cos'e' il semantic gap.
  • Possibile soluzione. (by Camillo Bosco)

    (b) Si veda un'impresa di costruzioni come un sistema di calcolo che realizza edifici abitabili. Si descrivano almeno 2 dei suoi livelli di macchina astratta (uno puo' essere il livello "muratore").
  • Possibile soluzione. (by Camillo Bosco)


    Esercizio 28
    E' possibile realizzare IJVM per compilazione (traduzione) su Mic-1? Discutere brevemente.
  • Possibile soluzione.

    Esercizio 29

    Cosa si intende per "realizzazione" di una Macchina Astratta per interpretazione? e per compilazione (traduzione)?

    Esercizio 30

    * Delle varie fasi del ciclo di un interprete in una macchina astratta, qual e' quella piu' lenta a venire eseguita? Perche'?

  • Possibile soluzione.

    Esercizio 31

    Si descriva (brevemente!) il Modello Computazionale di Turing e si discuta la definizione di Computazione in tale modello attraverso un esempio plausibile.

    Esercizio 32
    Qual e' la relazione tra macchina di Turing, macchina (architettura) di von Neumann e definizione di macchina astratta imperativa? Perche' non e' possibile definire macchine astratte che non siano imperative?
  • Possibile soluzione.

    Esercizio 33
    E' possibile avere un sistema di calcolo organizzato a livelli in cui esistano tre livelli corrispondenti alla macchina astratta del linguaggio Java? Motivare brevemente la risposta.
    Dire poi perche' in un sistema di calcolo organizzato a livelli almeno un livello deve essere necessariamente realizzato per compilazione (traduzione).
  • Soluzione.

    Esercizio 34
    Cosa significa, in un sistema di calcolo a livelli, che "un livello che realizza una macchina astratta non copre del tutto il livello sottostante"?
    E' possibile realizzare la macchina astratta Mic-3 sopra il livello della macchina astratta Mic-2 supponendo che quest'ultima sia realizzata in hardware?

    Esercizio 35
    Descrivere le componenti Interprete e Controllo Sequenza di una generica macchina astratta.

    Esercizio 36
    Cos'e' l'Interprete in una macchina astratta?
    Identificare nella macchina Mic-1 quali sono le parti che corrispondono alla componente Memoria.

    Esercizio 37
    Si consideri la seguente frase presa dalle note del corso:
    "La gerarchia di macchine astratte di un sistema di calcolo
    non termina necessariamente con l'implementazione di un linguaggio di programmazione HLL L."
    Commentarla, spiegandone il significato.

    Esercizio 38
    Si descriva la componente Gestione Trasferimento Dati nella macchine astratte Mic-1 e IJVM.

    Esercizio 39
    Commentare e chiarire il senso della seguente frase: " da notare che nella pratica non raro che un livello realizzi una macchina astratta che non copre del tutto il livello sottostante ma ne potenzia alcune delle caratteristiche, lasciandone trasparire del tutto altre."

    Esercizio 40
    Si consideri un sistema a livelli contenente i livelli L1, L2 ed L3.
    L1 e' realizzato in hardware e tale che il tempo di esecuzione di un'istruzione di L1 e' di K secondi.
    I livelli L2 ed L3 sono invece interpretati. Ogni istruzione di L2 viene realizzata con n istruzioni di L1. Ogni istruzione di L3 viene realizzata con n istruzioni di L2.
    Il linguaggio L3 e' m volte piu' potente del linguaggio L2 (per ogni cosa che fa un'istruzione di L3, ce ne vogliono m di L2 per fare la stessa cosa. In breve, lo stesso algoritmo si realizza in L2 con un programma m volte piu' lungo di uno equivalente in L3).
    Siano P3 e P2 due programmi semanticamente equivalenti scritti, rispettivamente, in L3 e L2 (semanticamente equivalenti significa che calcolano la stessa cosa).
    Fornire delle espressioni che esprimano il tempo di esecuzione di P3 e di P2 in modo da poter confrontare tali tempi tra loro e poter decidere (fissati n ed m) se, dal punto di vista della velocita' di esecuzione, convenga eseguire P3 sul livello 3 oppure P2 sul livello 2.
    Giustificare brevemente la soluzione proposta.
  • Soluzione.

    Esercizio 41
    Descrivere brevemente cosa si intende per "struttura a livelli dei sistemi di calcolo".

    Esercizio 42
    Si consideri la seguente frase presa dalle note del corso:
    Una programmazione consapevole ed adeguata per una particolare realizzazione di una macchina astratta e' possibile solo se l'utente conosce non solo la struttura della macchina astratta, ma anche quali componenti sono stati realizzati direttamente in hardware, quali emulati, quali interpretati. Infatti, scegliere un modo piuttosto che un altro di realizzare un algoritmo puo' risolversi in un guadagno di prestazioni, dovuto alla maggiore efficienza della realizzazione di alcune componenti della macchina astratta rispetto ad altri.
    E' un'affermazione condivisibile? Giustificare brevemente la risposta.

    Esercizio 43

    Si consideri il linguaggio di programmazione, che chiameremo VSL (Veeery Simple Language), che ha i programmi definiti dalla seguente grammatica:
    Programma ::=  Istr; | Istr;Programma
    Istr ::=  m[x]<-0 | m[x]<-1 | m[x]<-m[y] | m[x]<-m[y]ANDm[z] | m[x]<-m[y]ORm[z] |  if B then Istr
    B ::= m[x]=0 | m[x]=1 | m[x]=m[y]
    
    dove il significato delle istruzioni e' il seguente:
    m[x] <- 0     (nella cella di memoria di indirizzo x poni 0)
    m[x] <- 1     (nella cella di memoria di indirizzo x poni 1)
    m[x] <- m[y]  (nella cella di memoria di indirizzo x poni il contenuto della
                   cella di indirizzo y)
    m[x] <- m[y]ANDm[z]  (nella cella di memoria di indirizzo x poni l'OR del contenuto della
                   cella di indirizzo y con quello della cella z)
    m[x] <- m[y]ORm[z]  (nella cella di memoria di indirizzo x poni l'OR del contenuto della
                   cella di indirizzo y con quello della cella z)
    	       
    Inoltre x, y e z possono avere come valori solo 0, 1, 2, 3. Questo significa che la memoria per i dati associata al nostro linguaggio ha solo quattro celle. Inoltre queste celle della parte di memoria riservata ai dati sono formate da un unico bit (possiamo memorizza rci solo 0 oppure 1).
    Ovviamente questo linguaggio non e' universale (non ha la potenza computazionale per descrivere qualsiasi algoritmo).

    Realizzare via software (in modo interpretativo cioe'), la macchina astratta VSL sopra la macchina astratta JAVA.

  • Realizzazione compilativa, by Danilo Vaccalluzzo.

    Esercizio 44

    Che relazione esiste tra le Macchine di Turing ed il concetto di Macchina Astratta Imperativa? Ogni macchina astratta e' comunque imperativa, o possono esserci altre nozioni di macchina astratta? Giustificare.

    Esercizio 45

    Identificare nella macchina Mic-2 quali sono le parti che corrispondono alla componente Controllo di Sequenza. Fornire breve giustificazione.
  • Soluzione.

    Esercizio 46
    In un sistema di calcolo organizzato a livelli cosa si intende per livello di microprog rammazione?

    Esercizio 47
    Cos'e' una Macchina Astratta? Quali sono le componenti di una Macchina Astratta? Identificare nell'Hardware Mic-1 le varie componenti della macchina astratta che tale Hardwarre realizza.

    Esercizio 48
    Fornire la definizione di "livello di Microprogrammazione" all'interno di un sistema di calcolo organizzato a livelli.
    Esiste sempre tale livello? perche'?

    Esercizio 49
    Fornire la definizione di Realizzazione Interpretativa di una macchina astratta.
    Descrivere la differenza tra realizzazione interpretativa via firmware o via software. Dire perche', nello stesso sistema organizzato a livelli, non ci possono essere due macchine astratte entrambe realizzate in modo interpretativo.

    Esercizio 50
    Descrivere le componenenti della macchina astratta IJVM e la loro implementazione all'interno del sistema a livelli studiato nel corso.