Sei sulla pagina 1di 24

Marco Tarini - Università dell'Insubria A.A.

2017/18

Università degli Studi dell’Insubria


Dipartimento di Scienze Teoriche e Applicate

Astrazione e Macchine Virtuali

parte 1: in generale

Architettura degli elaboratori

Il concetto di astrazione

Astrazione = ignorare (nascondere) dettagli (anche rilevanti) per semplificare


il problema
Utile (anzi necessario) per affrontare sistemi complessi
per la loro analisi e loro sintesi
Approccio riduzionista
tipico di scienza e ingegneria
(contrario: «olistico»)
Esempi:
Motore visto come elemento che eroga potenza – astraggo da dettagli
costruttivi
Database: sistema in grado di memorizzare dati persistenti, gestendo
accessi concorrenti, sicurezza, ecc.
Sistema biologico: organismo – organo – tessuto – cellula – organelli –
molecole – atomi – …

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 1


Marco Tarini - Università dell'Insubria A.A. 2017/18

Architettura di Von Neumann

Architettura degli elaboratori

L’astrazione e il calcolatore

Il calcolatore può essere compreso (analisi) e costruito (sintesi) come una


gerarchia di macchine astratte (virtuali)
Ogni livello maschera (nasconde) i dettagli dei livelli sottostanti
Utile per la descrizione: mi interessa capire il funzionamento del livello in
esame, non dei sottostanti (ed essere in grado di progettarlo).

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 2


Marco Tarini - Università dell'Insubria A.A. 2017/18

L’astrazione e il calcolatore

L’astrazione è utile anche in fase di costruzione (sintesi).


Ad es. costruire una ‘macchina powerpoint’ direttamente con transistor
sarebbe di complessità proibitiva …
Soluzione:
1. Costruiamo una prima macchina (l’elaboratore) in grado di eseguire
istruzioni elementari.
2. Utilizziamo queste istruzioni elementari per scrivere un programma (il
Sistema Operativo) in grado di eseguire comandi più complessi
Il programmatore del S.O. non conosce i dettagli relativi alla tecnologia
realizzativa del microprocessore
3. Scriviamo programmi che si basano sulle funzioni messe a disposizione
dal S.O.
il programmatore di powerpoint non conosce i dettagli costruttivi del S.O.
In questo corso non arriveremo mai al livello del transistor, né tantomeno dei
livelli sottostanti.

Architettura degli elaboratori

Istruzioni e operazioni

Un esecutore è definito in base a tre elementi:


l’insieme delle operazioni che è capace di compiere;
l’insieme delle istruzioni che capisce (sintassi)
quali operazioni associa ad ogni istruzione che riconosce
(semantica)
Ad es. un elaboratore è in grado di eseguire un insieme di istruzioni
Per ogni istruzione esegue diverse operazioni:
1. Preleva da memoria l’istruzione da eseguire Operazioni fisse (le stesse
2. Esamina l’istruzione e capisce cosa deve fare per ogni istruzione)
3. Esegue l’istruzione (cioè esegue le operazioni elementari
corrispondenti al significato dell’istruzione).

Operazioni diverse per


ogni istruzione

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 3


Marco Tarini - Università dell'Insubria A.A. 2017/18

Differenza tra istruzione e operazione

Istruzione (comando): “Vammi a prendere un caffé”


Operazioni:
Mi alzo
Mi dirigo verso la porta
Apro la porta
Raggiungo la macchina del caffé

Ci deve essere un elemento che interpreta il comando convertendolo nella
serie opportuna di operazioni.

Architettura degli elaboratori

Linguaggio: definizione

Il linguaggio è l’insieme delle istruzioni (comandi) che un esecutore è in


grado di comprendere ed eseguire.
NB: nel descrivere un linguaggio non è rilevante sapere come viene eseguita
l’istruzione (cioè ad es. a quale sequenza di operazioni l’esecutore ricorre)

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 4


Marco Tarini - Università dell'Insubria A.A. 2017/18

Il linguaggio macchina

Il linguaggio macchina è il linguaggio compreso dal processore


Esistono tanti linguaggi macchina quanti sono i processori: Zilog Z80,
DEC Alpha, Intel 8080, 80386, Pentium IV, ecc.
Un’interessante eccezione: la compatibilità
Caratteristiche del linguaggio macchina:
Binario: le istruzioni sono delle sequenze di 0 e 1
Di basso livello: ogni istruzione ha un effetto molto elementare. Ad es.:
Copia il contenuto di un registro in un altro registro
Trasferisci il contenuto di una data cella di memoria in un registro
Somma i contenuti di due registri e metti il risultato in un terzo registro

Scrivere programmi complessi con istruzioni di questo genere è
praticamente impossibile
lungo, tedioso e passibile di errori anche banali.

Architettura degli elaboratori

Il dilemma

La macchina “semplice” costruita con i transistor mi fornisce un linguaggio


inadeguato alla programmazione di programmi complessi e sofisticati.
Costruire direttamente con i transistor una macchina in grado di supportare la
programmazione di alto livello è un’impresa di costo e complessità enormi.

Che fare?

Teniamo la nostra macchina di basso livello, ma ci “costruiamo sopra” una


macchina di più alto livello (cioè più potente e facile da programmare)

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 5


Marco Tarini - Università dell'Insubria A.A. 2017/18

Esecutori e linguaggi

Il calcolatore “capisce” le istruzioni che fanno parte del linguaggio macchina


(che indichiamo con L0).
L’obiettivo è definire una macchina che capisca un linguaggio L1 più potente
e facile da utilizzare rispetto al linguaggio macchina L0:
definire l’insieme delle istruzioni che fanno parte di L1;
utilizzare le istruzioni di L0 come operazioni di L1;
definire quali operazioni vengono associate a quali istruzioni.

Architettura degli elaboratori

Definizione di una machina di più alto livello

La macchina M0 capisce il linguaggio L0, che comprende le istruzioni I0, I1, I2


L0 = {I0, I1, I2}
M0 è data e non ci interessa come funziona internamente.
Definiamo una macchina M1 che capisce un linguaggio L1, che comprende le
istruzioni J0, J1, J2, J3
L1 = {J0, J1, J2, J3}
M1 è tipicamente una macchina di più alto livello rispetto a M0, cioè le sue
istruzioni sono più potenti e facili da usare.
Tutte le istruzioni di L1 saranno definite in termini di istruzioni di L0.
Cioè ogni istruzione Jk corrisponde a una sequenza di istruzioni della
macchina M0 ad es.
J0= I0; I1; I1; I2.
J1= I1; I2. Sulla carta la definizione
J2= I2 ; I0; I1. è immediata, ma come si
realizza in pratica?
J3= I2 ; I2; I0

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 6


Marco Tarini - Università dell'Insubria A.A. 2017/18

Come realizzare M1?

Una soluzione consiste nell’incorporare M0 in M1.


Ogni volta che si deve eseguire una istruzione di L1, si richiede a M0 di
eseguire le corrispondenti istruzioni L0.
Esempio: per eseguire J2 si richiederà a di eseguire la sequenza di
istruzioni corrispondente, cioè I2; I0; I1

M1 J2
I2
I0
M0 Problema: chi decide che J2
I1 si trasforma nella sequenza I2
I 0 I 1?
Deve essere tutto
automatico!

Architettura degli elaboratori

Come passare da L1 a L0

Traduzione (o compilazione)
Un apposito programma (compilatore) traduce il programma PL1, scritto
in linguaggio L1, in un programma PL0, scritto in linguaggio L0;
il nuovo programma PL0 viene quindi eseguito.

M1
---------
---------
---------
I2
M0 I0
Traduttore J2
---------
I1 ---------
---------

Programma Programma
equivalente scritto in L1
scritto in L0
Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 7


Marco Tarini - Università dell'Insubria A.A. 2017/18

Come passare da L1 a L0

Interpretazione
Un apposito programma (interprete) esamina il programma PL1, scritto in
linguaggio L1, e, istruzione per istruzione, lo traduce nel linguaggio L0 e
lo esegue.

M1
I2 J2
Interprete
I0
M0
I1

Architettura degli elaboratori

Interpretazione

Il controllo è sempre nelle mani dell’interprete


Dati dell’interprete
Programma PL1 scritto nel linguaggio L1
Dati del programma PL1
 Versatile e comodo in fase di debugging
• Se si identifica un errore si può cambiare il codice e proseguire senza
dover ripartire da zero
 Prestazioni ridotte
• Ogni istruzione viene tradotta ogni volta che viene eseguita
Di solito è scritto in L0 e fa parte integrante della macchina M1.

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 8


Marco Tarini - Università dell'Insubria A.A. 2017/18

Compilazione

Il compilatore mantiene il controllo solo nella prima fase (traduzione da PL1 a


PL0).
Una volta fatta la traduzione non serve più (finché non si cambia il
programma).
Dati del compilatore:
programma PL1 scritto nel linguaggio L1 (input);
programma PL0 scritto nel linguaggio L0 (output).
 Buone prestazioni:
• si esegue PL0 scritto in linguaggio L0;
• durante la traduzione si può ottimizzare il codice.
 In caso di modifica del codice (e.g. debugging) è necessario ricompilare il
programma modificato.

Architettura degli elaboratori

Costruzione di un compilatore

Problema: come scrivere il primo complilatore da L1 a L0 ?


Scriverlo direttamente in L0? di solito, difficile
Si può scriverlo in L1, e poi tradurlo a mano in L0.
Alternativa: in un linguaggio Lx, disponendo già di un comp da Lx a L0

Al giorno d’oggi:
Design e implementazione di compilatori (da un linguaggio dato):
disciplina matura
Esistono molti strumenti software per semplificare il task.
 è facile definire nuovi linguaggi ad-hoc, ad alto livello, pensati per
gestire contesti specifici, e dotarsi di compilatori per tali linguaggi
(o interpreti – in questo caso si parla spesso di «linguaggi di scripting»)
Nota: i buoni compilatori ottimizzano il codice che producono

La scrittura di compilatori esula dagli obiettivi di questo corso


Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 9


Marco Tarini - Università dell'Insubria A.A. 2017/18

Macchina virtuale M1

Il calcolatore reale (macchina M0) riconosce programmi scritti nel linguaggio


L0
realizzare una macchina reale capace di comprendere il linguaggio L1
sarebbe troppo costoso e/o poco efficiente
La compilazione o l’interpretazione permettono di realizzare una macchina
virtuale M1 capace di comprendere il linguaggio L1.
Problema:
per rendere comoda ed efficiente la traduzione, la distanza tra L1 e L0 (e
quindi tra M1 e M0) non può essere elevata;
non è detto che M1 sia la soluzione desiderata (potrebbe essere ancora
troppo distante dal livello “umano”).

Architettura degli elaboratori

Macchina virtuale M2

È possibile ripetere lo stesso procedimento ipotizzando che M1 sia il punto di


partenza (invece di M0) per definire una macchina virtuale M2 capace di
eseguire programmi scritti in un linguaggio L2.
Per la traduzione dei programmi scritti nel linguaggio L2 esistono due
possibilità:
tradurli in L1 per eseguirli con la macchina virtuale M1;
tradurli direttamente in L0 in modo che possano essere eseguiti dalla
macchina reale M0.
Iterando si possono definire ulteriori macchine virtuali M3, M4, ... MN fino a
raggiungere il livello di “usabilità” desiderato.

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 10


Marco Tarini - Università dell'Insubria A.A. 2017/18

Macchina a più livelli

Programmi tradotti in uno dei


linguaggio di livello inferiore in modo
che possano essere eseguiti da una
delle macchine di livello inferiore

Livello n Mn (Ln)
Programmi tradotti in L1 o in L0
.... in modo che possano essere
eseguiti da M1 o da M0
Livello 2 M2 (L2)
Programmi tradotti in L0 in
modo che possano essere
Livello 1 M1 (L1) eseguiti da M0

Programmi eseguiti
Livello 0 M0 (L0) direttamente dal calcolatore
(macchina reale)

Architettura degli elaboratori

Astrazione per realizzare l’indipendenza dalla


macchina
Avendo costruito una macchina Mn che “capisce” il linguaggio Ln, dobbiamo
disporre della capacità di tradurre Ln in Ln-1.
Possono esistere più macchine virtuali che mettono a disposizione dei
linguaggi in grado di fungere da Ln-1.
Esempio: stesso S.O. su HW diversi, stessa applicazione su S.O. diversi,
ecc.
La figura precedente ammette ramificazioni!

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 11


Marco Tarini - Università dell'Insubria A.A. 2017/18

Relazione tra una macchina e il relativo


linguaggio macchina
La macchina definisce il linguaggio.
Una macchina (reale o virtuale) permette di definire il linguaggio macchina ad
essa associato come l’insieme di tutte le istruzioni che la macchina stessa è
in grado di eseguire.
Il linguaggio definisce la macchina.
Un linguaggio permette di definire la macchina (reale o virtuale) ad esso
associata come l’esecutore capace di comprendere tutti i programmi scritti in
quel linguaggio.

Architettura degli elaboratori

Calcolatore a n livelli

Per scrivere i programmi per il livello n non è necessario conoscere come viene
effettuata la traduzione e quindi l’esecuzione.
I programmi possono essere
eseguiti direttamente dalla macchina reale;
tradotti direttamente nel linguaggio L0;
interpretati da un interprete che viene a sua volta interpretato da un altro
interprete ...;
...
La conoscenza dei livelli intermedi è importante per chi voglia capire
come funziona un calcolatore (analisi);
come si progetta una macchina virtuale (sintesi).

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 12


Marco Tarini - Università dell'Insubria A.A. 2017/18

Riassunto dei concetti visti (so far)

Analisi VS Sintesi


(Riduzionismo VS Olismo)
Livelli di Astrazione (gerarchia di)
Architettura di Von Neumann
(dati + programmi in memoria)
Linguaggio
Sintassi VS Semantica
Istruzioni (o comandi) VS Operazioni
Macchina (astratta) ↔ Linguaggio (di quella Macchina Astratta)
Macchina (fisica) ↔ Linguaggio Macchina
Linguaggio ↔ Insieme delle Istruzioni («Instruction Set»)
Gerarchia di linguaggi
Alto livello VS Basso livello
Compilazione VS Interpretazione

Architettura degli elaboratori

Università degli Studi dell’Insubria


Dipartimento di Scienze Teoriche e Applicate

Astrazione e Macchine Virtuali

parte 2: in un tipico calcolatore

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 13


Marco Tarini - Università dell'Insubria A.A. 2017/18

I livelli nei moderni calcolatori

6. … Livello delle applicazioni specifiche


5. Livello dei linguaggi applicativi
4. Livello del linguaggio assemblatore
3. Livello del sistema operativo
2. Livello dell’Instruction Set (ISA)
1. Livello della microarchitettura
0. Livello logico
-1. ... Livello dei dispositivi ...
-2. ... (fisica dello stato solido) ...
Architettura degli elaboratori

Livello dei dispositivi

Transistor che formano i circuiti elettronici di cui è composto un calcolatore.


Raggiunge un livello di dettaglio che viene in genere trascurato nella
progettazione dei calcolatori.
A un livello ancor più basso ci si occupa della fisica dello stato solido
(es silicio drogato, come semiconduttore)

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 14


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 0: la logica digitale

La macchina è formata da porte logiche.


Ogni porta riceve in ingresso dei segnali binari (cioè segnali che possono
essere 0 o 1) e calcola una semplice funzione (AND, OR, ...).
Alcune porte, collegate opportunamente, possono formare una memoria di
un bit (bistabile).
Combinando N memorie di un bit si può formare un registro capace di
memorizzare un numero binario (non più grande di 2N-1).
Combinando le porte si realizzano i circuiti che eseguono task come
fare operazioni aritmetiche fra numeri
leggere dalla memoria
etc

Architettura degli elaboratori

Livello 1: la microarchitettura

Livello 1 Microarchitettura
Esecuzione
diretta
(Hardware)
Livello 0 Logica digitale

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 15


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 1: la microarchitettura

Elaborazione – Data Path


registri general purpose come memoria locale;
Arithmetic Logic Unit (ALU) capace di eseguire semplici operazioni
aritmetico-logiche;
Elementi di connessione tra registri e ALU.
Controllo
registri dedicati al controllo (PC, IR, ...);
Unità di controllo – Control Unit
che può microprogrammata o cablata.

Architettura degli elaboratori

Control Unit:
cablata o microprogrammata?
Control Unit Microprogrammata
il funzionamento del Data Path viene controllato da un programma
chiamato microprogramma;
si tratta di un interprete delle istruzioni di livello 2;
era la soluzione più diffusa in passato, tanto che il termine µ-
programmazione era a volte sinonimo di µ-architettura.
Control Unit Cablata
il funzionamento del Data Path viene controllato direttamente tramite
dispositivi hardware;
la sequenza di operazioni associate alle istruzioni di livello 2 non viene
generata da un interprete ma viene gestita direttamente via hardware.

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 16


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 2: Instruction Set Architecture

Livello 2 Instruction Set Interpretazione


(microprogramma)
o
esecuzione diretta
(hardware)
Livello 1 Microarchitettura

Livello 0 Logica digitale

Architettura degli elaboratori

Livello 2: Instruction Set Architecture

Insieme delle istruzioni che possono essere comprese dalla µ-architettura


(la µ-architettura agisce da interprete dell’Instruction Set).
È il livello cui si fa riferimento quando si descrive il “linguaggio macchina” di
un calcolatore.
la sintassi di ciascuna di queste istruzioni è costituita da sequenze di 0 e 1
(codifica binaria)

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 17


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 3: il sistema operativo

Livello 3 Sistema operativo

Interpretazione
Livello 2 Instruction Set parziale

Livello 1 Microarchitettura

Livello 0 Logica digitale

Architettura degli elaboratori

Livello 3: il sistema operativo

Il linguaggio di questo livello:


comprende molte istruzioni che si trovano già al livello 2;
comprende anche un insieme di istruzioni aggiuntive;
ha una diversa organizzazione della memoria;
esegue più programmi contemporaneamente.
La traduzione è ibrida
Le nuove funzionalità sono eseguite da un interprete
che viene definito “Sistema operativo”.
Le istruzioni identiche a quelle del livello 2 vengono eseguite direttamente
dalla microarchitettura.

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 18


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livelli bassi (1, 2, 3) vs livelli alti (4, 5)

I livelli bassi supportano il funzionamento dei compilatori e degli interpreti


utilizzati ai livelli alti:
Livelli bassi  programmazione di sistema
Livelli alti  programmazione di applicazioni
Per migliorare le prestazioni:
i livelli 2 e 3 vengono sempre interpretati;
i livelli 4 e 5 vengono spesso compilati.
Per questioni di efficienza e di “usabilità”:
i linguaggi dei livelli 2 e 3 sono in codifica binaria;
i linguaggi dei livelli 4 e 5 sono testuali (simbolici) cioè composti da
parole hanno un senso per l’uomo.

Architettura degli elaboratori

Livello 4: il linguaggio assemblatore

Livello 4 Linguaggio assemblatore


Traduzione
(assemblatore)

Livello 3 Sistema operativo

Livello 2 Instruction Set

Livello 1 Microarchitettura

Livello 0 Logica digitale


Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 19


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 4: il linguaggio assemblatore

Rappresentazione simbolica di uno dei livelli sottostanti.


I linguaggi binari dei livelli “bassi” sono difficili da usare per un
programmatore (... errori di “trascrizione” ...).
A ogni istruzione del linguaggio assemblatore corrisponde una istruzione
del linguaggio macchina.
I programmi in linguaggio assemblatore vengono tradotti in un linguaggio di
livello inferiore e poi eseguiti. Il programma che esegue la traduzione si
chiama assemblatore.

Architettura degli elaboratori

Livello 5: i linguaggi applicativi

Livello 5 Linguaggi applicativi


Traduzione
Livello 4 Linguaggio assemblatore (compilatore)

Livello 3 Sistema operativo

Livello 2 Instruction Set

Livello 1 Microarchitettura

Livello 0 Logica digitale


Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 20


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 5: i linguaggi applicativi

Linguaggi di alto livello come C, C++, Java, Ada, LISP, Prolog, ...
Sono utilizzati per la realizzazione di programmi applicativi.
Il più delle volte la traduzione è affidata a un compilatore, mentre in alcuni
casi si usa un interprete (e.g. Java)

I linguaggi ad alto livello non fanno parte degli scopi di questo corso.

Architettura degli elaboratori

Livello 6: le applicazioni

Livello 6 Applicazioni specifiche


Design e
sviluppo
Livello 5 Linguaggi applicativi

Livello 4 Linguaggio assemblatore

Livello 3 Sistema operativo

Livello 2 Instruction Set

Livello 1 Microarchitettura

Livello 0 Logica digitale


Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 21


Marco Tarini - Università dell'Insubria A.A. 2017/18

Livello 6 e oltre: applicazioni specifiche

Es:
adobe photoshop, microsoft word, microsoft powerpoint,
libreoffice calc, google chorme, final cut pro,
blender, unity, etc, etc, etc

Spesso attraverso molti livelli intermedi:


librerie, SDK, drivers…

(niente di questo fa parte degli scopi di questo corso)

Architettura degli elaboratori

I livelli: uno schema riassuntivo

Livello 5 Linguaggi Applicativi


Traduzione
(compilatore)
Livello 4 Linguaggio Assemblatore
Traduzione
(assemblatore)
Livello 3 Sistema operativo
Interpretazione parziale
(sistema operativo)
Livello 2 Instruction Set Interpretazione
(microprogramma)
o esecuzione diretta
Livello 1 Microarchitettura (hardware)

Esecuzione diretta
Livello 0 Logica digitale (Hardware)

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 22


Marco Tarini - Università dell'Insubria A.A. 2017/18

I livelli: sommario

I calcolatori sono progettati come una serie di livelli ognuno dei quali si
basa sul livello precedente.
Ogni livello rappresenta una diversa astrazione con strutture dati e
funzionalità diverse.
L’insieme di tipi di dati, operazioni e caratteristiche di ogni livello prende il
nome di ARCHITETTURA.
La descrizione dell’architettura di un livello presenta l’insieme delle
caratteristiche visibili all’utente di quel livello (e.g. ad un programmatore di
applicazioni interessa sapere quanta è la memoria disponibile)

Architettura degli elaboratori

I livelli: alcuni Principi generali

Livelli alti:
linguaggi potenti ed espressivi
linguaggi più «vicini all’uomo»
sintassi delle istruzioni: intuitiva
macchine virtuali
più cross platform (cross.browser, cross OS, …)
Livelli bassi:
linguaggi dai comandi semplici
linguaggi più «a misura di macchina»
pochi tipi di istruzione base
sintassi delle istruzioni: spesso non intuitiva (non è fatta per noi umani)
semantica delle istruzioni: molto semplice
(quindi serviranno più istruzioni per fare le stesse cose)
Livello più basso: esecutore hardware (macchina fisica)

Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 23


Marco Tarini - Università dell'Insubria A.A. 2017/18

Nota: Hardware vs. Software

Hardware: oggetti tangibili che compongono un calcolatore (circuiti elettronici,


memoria, dispositivi di I/O, ...).
Software: programmi, indipendentemente dal supporto su cui sono memorizzati
(HD, RAM, CD, ...).
Hardware e software sono logicamente equivalenti
qualsiasi operazione effettuata dal software può essere inglobata
nell’hardware (“hardware = software pietrificato”);
qualsiasi istruzione eseguita dall’hardware può essere simulata dal
software;
la decisione di realizzare una funzione in hardware o in software dipende
da parametri quali il costo, la velocità, l’affidabilità, la frequenza di
variazione, ...

Architettura degli elaboratori

Nelle parole di un famoso web-comic…

Un processore x64 sta sfrecciando a miloni di


cicli al secondo per eseguire il kerneL XNU, che
gira freneticamente su tutti I livelli di astrazione
specificati da Posix per creare il Darwin system
su cui poggia os X, che a sua volta si spinge al
limite per eseguire firefox e il suo renderer
gecko, che crea un oggetto flAsh che visualizza
dozzine di fotogrammi video al secondo

perche’ ho voluto vedere un gatto


che salta in una scatola e si ribalta

sono dio

https://xkcd.com/676/
Architettura degli elaboratori

Architettura degli elaboratori - Astrazione e Macchine Virtuali 24

Potrebbero piacerti anche