Back   Top 

Realizzazione delle Macchine Astratte

Affinchè i programmi scritti in un dato linguaggio di programmazione L possano essere eseguiti, è necessario che la corrispondente macchina astratta venga implementata. Fondamentalmente è possibile adoperare tre tecniche:

  • realizzazione hardware
  • interpretazione (emulazione)
  • traduzione (compilazione)

Realizzazione hardware

Con questa tecnica si realizzano in hardware tutte le componenti della macchina. In linea di principio tale tecnica e' sempre possibile. E comprensibile pero' che venga utilizzata solo macchina astratte relativamente semplici, a causa di considerazioni di carattere pratico, quali la scarsa flessibilita' della realizzazione in hardware e l'elevato costo di progettazione e realizzazione in harwdare di componenti dalle funzionalita' molto complesse.
Ovviamente l'evoluzione delle tecniche di integrazione dei circuiti ha reso possibile (e rendera' possibile sempre piu' in futuro) la realizzazione hardware di macchine sempre di maggior complessita'.

Realizzazione interpretativa

A differenza della precedente, questa seconda tecnica, come anche la terza, richiede l'esistenza di una macchina gia' realizzata (macchina ospite). La tecnica interpretativa consiste nel realizzare tutte le componenti della macchina (cioe' tutti gli algoritmi e le strutture dati che li definiscono) mediante programmi e strutture dati del linguaggio della macchina ospite.

Di questo tipo di realizzazione ne esistono in realta' due tipi:
- emulazione via firmware
- emulazione via software
In linea di principio queste sono entrambi emulazioni software, la differenza consiste nel tipo della macchina ospite (microprogrammata nel primo caso) e nella realizzazione fisica della memoria che contiene i programmi che realizzano la le strutture dati e gli algoritmi della macchina.
Nel primo caso la macchina ospite e' realizzata in harware e la parte programmi della memoria di tale macchina e' una memoria ad alta velocita', solitamente di sola lettura, realizzata sullo stesso chip che contiene le altre componenti della macchina. Una tale macchina ospite e' detta microprogrammata ed e' estremamente semplice (le operazioni non sono altro che semplici operazioni su registri). I programmi di tale macchina ospite che realizzano gli algoritmi e le strutture dati della macchina che si vuole realizzare vengon chiamati microprogrammi.
Nel secondo caso invece non c'e' alcun vincolo su come sia realizzata la macchina ospite (e in particolare la sua memoria).

Le due tecniche di emulazione differiscono sostanzialmente nelle prestazioni della macchina astratta emulata, in particolare rispetto alla velocita' di esecuzione, che nel caso firmware e' paragonabile a quella della realizzazione in hardware puro. Ovviamente la realizzazione nel caso firmware offre minore flessibilita' in caso di future modifiche o estensioni della macchina realizata.

E' bene sottolineare che la realizzazione tramite firmware, molto in voga fino a non molti anni fa, sta lentamente tramontando, o si limita a porzioni sempre piu' piccole della macchina da realizzare. Questo a causa dell'affermarsi dei principi che sono alla base delle architetture RISC.

Quando parliamo di realizzazione interpretativa e' bene fare sempre attenzione, quando parliamo di interprete, a quale macchina facciamo riferimento: la componente interprete della macchina che vogliamo ottenere e' realizzata da un programma scritto nel linguaggio della macchina ospite la cui esecuzione e' affidata alla componente interprete della macchina ospite.

Realizzazione compilativa

La tecnica compilativa si basa sulla idea di tradurre un avolta per tutte l'intero programma scritto in L in un programma funzionalmente equivalente scritto nel linguaggio della macchina ospite. Il compito di eseguire tale traduzione e' eseguito da un programma detto compilatore.
In una realizzazione compilativa, uno si chiede: "si, ma dove sono le componenti della macchina che realizziamo?". In realta' e' come se ci fossero, perche' noi dall'esterno vediamo esattamente gli effetti di una macchina realizzata.

 Back   Top