Architetture degli Elaboratori
Corso di Corso di
Architettura degli Elaboratori Architettura degli Elaboratori
a.a. 2005/2006 a.a. 2005/2006
Linguaggi, livelli, macchine virtuali e struttura del calcolatore moderno
Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 185 – I-10149 Torino baldoni[at]di[dot]unito[dot]it
Architetture degli Elaboratori
Livelli come astrazioni Livelli come astrazioni
Un computer è una macchina programmabile, tuttavia esso non è direttamente utilizzabile da parte degli utenti poiché richiederebbe la conoscenza sull’organizzazione fisica della specifica macchina e del suo linguaggio macchina
Ogni machina avrebbe le sue differenti caratteristiche
Il linguaggio macchina è estremamente complicato e non di facile gestione
Linguaggio Macchina
Utente
?
? ?
Architetture degli Elaboratori
Livelli come astrazioni Livelli come astrazioni
In altre parole desideriamo astrarci dai dettagli fisici della macchina in oggetto e dal suo specifico linguaggio macchina
L’idea è quella di realizzare al di sopra della macchina reale una macchina virtuale astratta che abbia le funzionalità desiderate e che sia facile da utilizzare per l’utente
L’utente interagisce con la macchina virtuale, ogni comando viene poi tradotto nei
corrispondenti comandi sulla macchina fisica
La macchina virtuale è realizzata mediante software (programmi)
traduzione in LM Software
Macchina Virtuale
Utente
Linguaggio Macchina
Architetture degli Elaboratori
Livelli come astrazioni Livelli come astrazioni
La macchina virtuale viene realizzata in genere mediante il software di base:
Sistema Operativo: file system, memoria, cpu, risorse ausiliarie, comunicazione
Linguaggi e ambienti di programmazione ad alto livello:
interpreti e compilatori
Non vi sono limiti al numero e al tipo di macchine virtuali che possono essere realizzate
In genere nelle macchine moderne sono strutturate su più livelli (struttura a cipolla)
traduzione in LM Software
Macchina Virtuale
Utente
Linguaggio Macchina traduzione
Software
Macchina Virtuale
Architetture degli Elaboratori
Livelli come astrazioni Livelli come astrazioni
In termini un po’ più astratti, detto:
Ih l’insieme delle istruzioni che costituiscono il linguaggio LM della macchina virtuale del livello h
Mh l’insieme delle istruzioni utilizzabili al livello h, ma mascherate nei confronti dei livelli superiori
Ch l’insieme dei comandi implementati a livello h utilizzando il linguaggio macchina Ih
Il linguaggio macchina Ih+1 della macchina virtuale di livello h+1 puo’ essere definito nel modo seguente:
Ih+1 = Ih + Ch - Mh
traduzione in LM Software
Macchina Virtuale
Utente
Linguaggio Macchina traduzione
Software
Macchina Virtuale
h=1
h=0
Architetture degli Elaboratori
Livelli come astrazioni Livelli come astrazioni
Un browser è un programma
Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo
Per la visualizzazione delle pagine un browser che per farlo si appoggia al software di base
Il software di base si appoggia alla macchina fisica per realizzare effettivamente il “rendering” della pagina su video
traduzione in LM Software
Macchina Virtuale
Utente
Linguaggio Macchina traduzione
BROWSER
Macchina Virtuale
Architetture degli Elaboratori
Interpretazione Interpretazione
Interprete (JavaScript, Scheme, Prolog, php, asp):
Interazione. Più facile modificare un programma durante l'esecuzione
Sparc/Solaris
Apple Codice Sorgente
Interprete Sparc/Solaris
Interprete MacOS
Interprete Intel/GNU-Linux
Intel/GNU-Linux Intel/Windows
Architetture degli Elaboratori
Interpretazione Interpretazione
Affinché le due persone di lingua diversa possano dialogare tra di loro (nel caso nessuna delle due conosca la lingua dell’altro) è necessario che qualcuno interpreti (traduca sul momento) quanto dice una persona nella propria lingua nella lingua di chi ascolta
Si interpreta quando è necessario una stretta interazione, quando si desidera dialogare e non solo trasmettere un messaggio
Architetture degli Elaboratori
Traduzione o compilazione Traduzione o compilazione
Compilazione (Pascal, C, Ada, C++):Efficienza di esecuzione. Il codice generato dal
compilatore può essere ottimizzato, perché la compilazione è fatta una sola volta
Compilatore Sparc/Solaris
Compilatore MacOS
Compilatore Intel/GNU-Linux
binario binario
binario
Intel/GNU-Linux Intel/Wind
Apple Sparc/Solaris Codice Sorgente
Architetture degli Elaboratori
Traduzione o compilazione Traduzione o compilazione
La traduzione è adatta per comunicare messaggio, come ad esempio una lettera
Anche per effettuare una traduzione è necessario l’intervento di qualcuno che sia in grado di comprendere le frasi di un linguaggio e riportarle in un altro ma questo può operare in tempi separati rispetto la scrittura del messaggio e la sua lettura
La lettura è più rapida e semplice, il traduttore ha senz’altro avuto tempo per meglio adattare il testo
ma si penalizza l’interattività
Architetture degli Elaboratori
Soluzione mista: Java Soluzione mista: Java
Soluzione mista (Java):Portabilità. Per eseguire un programma su macchine diverse è sufficiente implementare l'interprete del linguaggio intermedio, e non tutto il compilatore
Palm Compilatore
Java
bytecode
Interprete Java/Solaris
Interprete Java/MacOS
Interprete Java/GNU-Linux
Interprete
Java/PalmOS Intel/GNU-Linux
Intel/Wind Apple Sparc/Solaris
Codice Sorgente
Architetture degli Elaboratori
Panoramica del corso Panoramica del corso
Organizzazione strutturata del calcolatore
Studieremo i livelli 0, 1, 2
Nel secondo anno studierete il livello 3 e 4
Nel primo e secondo trimestre avete
incominciato a studiare il
livello 5
Architetture degli Elaboratori
Panoramica del corso Panoramica del corso
Livello 0: Logico-Digitale
porte
registri
memoria
Livello 1: Microarchitettura
Arithmetic Logic Unit (ALU)
Data Path
microprogramma
Livello 2: Instruction set (ISA)
Linguaggio Macchina
Supporti architetturali
Architetture degli Elaboratori
Architettura e organizzazione Architettura e organizzazione
L'insieme di tipi di dati, operazioni e caratteristiche di ogni livello si chiama architettura
Lo studio dei come progettare le parti di un sistema che sono visibili ai programmatori si chiama architettura dei calcolatori
Organizzazione, relazioni strutturali tra le unità funzionali di una data architettura (non visibile al programmatore)
Spesso il termine organizzazione è usato come sinonimo di architettura
Architetture degli Elaboratori
Livelli come astrazioni Livelli come astrazioni
Ogni livello nasconde i dettagli non necessari e costituisce l'insieme di astrazioni rilevnti per il livello superiore
Ogni livello è costituito da un insieme di componenti e da un insieme di modi per combinare i componenti in strutture
Le strutture così costruite rappresentano l'astrazione realizzata dal livello e costituiscono le entità su cui si opera a livello superiore
Questo, a sua volta, le aggrega in modo da formare entità ancora più astratte per il livello soprastante.
traduzione in LM Software
Macchina Virtuale
Utente
Linguaggio Macchina traduzione
Software
Macchina Virtuale
h=1
h=0
Architetture degli Elaboratori
Livelli di macchine Livelli di macchine
HARDWARE E SOFTWARE SONO
LOGICAMENTE
EQUIVALENTI
Architetture degli Elaboratori
Hardware
Hardware
Software Software
Potremmo anche simulare
l'hardware di un intero computer via software
Un esempio è la 'vmware workstation' prodotta da
“VMWARE and EMC company”
Una virtual machine che simula l'hardware di un PC!
Architetture degli Elaboratori
Hardware
Hardware
Software Software
Tale software permette di installare un sistema operativo senza nessuna differenza con una installazione su un vero computer per mezzo della realizzazione di una “Virtual Infrastructure”
GNU/Linux RedHat Windows 2000
Architetture degli Elaboratori
Cos'è l'informatica?
Cos'è l'informatica?
L'informatica non è l'MP3 o il DivX
L'informatica non è Windows e Office
L'informatica non è il cellulare
L'informatica non è internet o WWW
L'informatica non è il computer
L'informatica non è l'ICT (Information & Communication Technology)
??? ma allora cos'è ???
Architetture degli Elaboratori
Cos'è l'informatica?
Cos'è l'informatica?
L'informatica è la scienza del calcolo:
“la determinazione con metodo sia ipotetico-deduttivo che sperimentale, nonchè l'analisi e la definizione di protocolli e motodologie di verifica valide per la costruzione di prototipi e applicazioni ingegnerizzate riguardo a tutto cio' in cui consiste la definizione di dati di ingresso e la costruzioni di soluzioni che comportino la definizione di dati di uscita”
[ACM, Association for Computing Machinery,
Syllabus dei corsi universitari di Informatica]
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
Dati
Sequence ofOutput
artihmetic and logic functions
!
L'informatica come la scienza della rappresentazione, organizzazione, elaborazione, trasformazione, comunicazione dell'informazione
Informatica
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
Dati
Sequence ofOutput
artihmetic and logic functions
!
L'informatica è indipendente ed antecedente rispetto alla costruzione di calcolatori elettronici
!
Ovviamente, l'informatica ha ricevuto una spinta in avanti dall'elettronica (ed internet) ma è stata anche guida per l'elettronica (ed internet)
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
Dati
Sequence ofOutput
artihmetic and logic functions
X dati iniziali
Y dati finali
F è la regola di trasformazione
Y = F ( X )
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
Dati
Sequence ofOutput
artihmetic and logic functions
L'informatica è la scienza che studia le “F” effettivamente calcolabili”: un procedimento effettivo, concretamente eseguibile, che, in un numero finito di passi, ci dia la soluzione che cerchiamo
Processi, intuitivamente, meccanici (algoritmo: una procedura finitamente descrivibile)
Y = F ( X )
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
!
C. Babbage [1837]: “Di quali operazioni deve essere dotata una machina per effettuare tutti i calcoli che un essere umano può teoricamente effettuare?”
!
Anni ‘30: A. Church, K.
Gödel, E. Post, A. Tarski, A.
Turing proposero, nel giro di pochi anni, un gran numero di possibili definizioni, ciascuna basata su di un particolare aspetto della nozione di funzione calcolabile, ciascuno con le sue caratteristiche
C. Babbage
A. Church
K. Gödel
A. Turing
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
A. Church, A. Turing: “Le funzioni ricorsive (parziali) sono esattamente le funzioni calcolabili” (tesi di Church)
Le sole funzioni per cui esistono algoritmi (programmi) sono le funzioni ricorsive.
Quindi esistono decine di problemi per cui non è possibile trovare soluzioni ricorsive (es. non esiste un algoritmo per calcolare le soluzioni di qualunque equazone di grado n)
Le funzioni calcolabili sono calcolabili mediante computer!
C. Babbage
A. Church
K. Gödel
A. Turing
Architetture degli Elaboratori
L'informatica è la scienza del calcolo L'informatica è la scienza del calcolo
Altro problema “impossibile” da risolvere: “Decidere se un computer si ferma (e ottiene dunque un valore) quando calcola seguendo le istruzioni di un dato programma per un dato argomento”. (Decidere se una funzione ricorsiva parziale è definita per un dato argomento)
“Se un programma che fornisce risposte a domande riguardanti la fermata di dati programmi per dati argomenti non mente mai, esso non può fornire tutte le risposte.”
“Un sistema di assiomi e regole che sia definibile mediante un programma e che non menta mai non può fornire risposte a ogni domanda riguardo i numeri”
(teorema di Gödel)
C. Babbage
A. Church
K. Gödel
A. Turing
Architetture degli Elaboratori
Algoritmo Algoritmo
Un algoritmo è una sequenza di passi che sono necessari per risolvere un determinato problema: una successione finita di istruzioni che definiscono le operazioni da eseguire sui dati assegnati, per produrre risultati.
Ogni operazione definisce una azione compiuta sui dati d’ingresso per produrre dati in uscita
Marco Giovanni Alberto
Luisa Matteo
Carlo Cristina
Alberto Carlo Cristina Giovanni Luisa Matteo Marco Algoritmo di Ordinamento
Dati di Input Risultato
Architetture degli Elaboratori
Algoritmo Algoritmo
"
Le parole chiave di un algoritmo sono:
#
Sequenzialita` (di azioni)
#
Numero finito di passi elementari
#
Determinismo
#
Automatismo
Architetture degli Elaboratori
Codifica delle informazioni Codifica delle informazioni
Dati
Sequence ofOutput
artihmetic and logic functions
Processi, intuitivamente, meccanici (algoritmo: una procedura finitamente descrivibile)
E` necessaria una rappresentazione effettivamente maneggiabile, trattabile “meccanicamente” delle informazioni: codifica delle informazioni
Y = F ( X )
Architetture degli Elaboratori
Evoluzione storica Evoluzione storica
Due sorgenti interessanti di informazione
Commemorazione del 50- esimo anniversario del calcolo moderno
http://www.computer.org/c omputer/timeline
Museo virtuale
http://www.scuola.prato.it/
dagomari/museo/htm/ingr esso.htm
Architetture degli Elaboratori
http://www.dagomari.prato.it/museo/htm/ingresso.htm
http://www.dagomari.prato.it/museo/htm/ingresso.htm
Architetture degli Elaboratori
http://www.dagomari.prato.it/museo/htm/ingresso.htm http://www.dagomari.prato.it/museo/htm/ingresso.htm
Architetture degli Elaboratori
Vale la pena di leggere Vale la pena di leggere
La storia dell'Olivetti ELEA e del P101: quante occasioni mancate :-(
ELEA 6001
ELEA 9003
M24 P101
35 Architetture degli Elaboratori
Macchina di von Neumann Macchina di von Neumann
!
Von Neumann collaboro`
prima all'ENIAC (lenta aritmentica decimale), quindi alla macchina IAS (aritmetica binaria)
!
Cinque parti principali:
memoria, ALU, unita` di controllo e dispositivi di I/O
!
Registro accumulatore
!
E` alla base di quasi tutti i calcolatori digitali (dal 1949!)
36 Architetture degli Elaboratori
Software vs hardware Software vs hardware
!
Programming in hardware: il programma e` codificato da una sequenza di funzioni aritmetiche e logiche implementate nell'hardware
!
Programming in software: le istruzioni servono a configurare l'hardware (general purpose) per calcolare la funzione desiderata in quel momento
!
Von Neumann: dati e istruzioni possono essere memorizzati nella stessa memoria
Programming in hardware
Dati Output
Istruzioni
Dati Output
Segnali di controllo Programming
in software
Instruction interpreter
General purpose artihmetic and logic functions
Sequence of artihmetic and logic functions
Architetture degli Elaboratori 37
Unità funzionali Unità funzionali
Unità di elaborazione e controllo (CPU):
interpretazione ed esecuzione delle istruzioni. Unità operativa (ALU) e di controllo
responsabile del coordinamento di tutte le attività. Registri: memoria temporanea ad alta velocità
Memoria: contenitore di istruzioni e dati (in forma binaria). L'interpretazione dà luogo all'esecuzione dello specifico codice di istruzione.
Dati e istruzioni sono di per sé indistinguibili ma dipende dal modo in cui si leggono e
interpretano i bit Architetture degli Elaboratori 38
Unità funzionali Unità funzionali
L'unità di controllo legge le istruzioni della memoria centrale e ne determina il tipo
Sistema di ingresso e uscita:
l'insieme dei dispositivi per comunicare con il modo esterno e con l'utente.
L'informazione in ingresso e uscito è sempre in forma codificata
Un sistema di interconnessione per collegare le varie unità funzionali
39 Architetture degli Elaboratori
PDP-8: introduzione del bus PDP-8: introduzione del bus
1995-1965: seconda generazione, transistor
PDP-8 della DEC introduce per la prima volta un bus singolo, un insieme di fili usato per collegare i componenti di un calcolatore
40 Architetture degli Elaboratori
Sotto-bus Sotto-bus
Aumentare l'efficenza:
Bus degli indirizzi (dalla CPU verso la memoria)
Bus dei dati (dalla CPU dalla memoria e viceversa)
Bus dei controlli (comandi in genere provenienti dalla
CPU)
Architetture degli Elaboratori 41
Organizzazione dei primi PC ('80) Organizzazione dei primi PC ('80)
IBM '81
Industry Standard Architecture (ISA), 16 bit dati e 24 bit indirizzi
Architetture degli Elaboratori 42
Organizzazione recente dei PC Organizzazione recente dei PC
Gerarchia di bus collegati tra di loro da bridge per soddisfare diverse necessità di velocità di trasferimento e compatibilità con gli standard
North bridge e South bridge (bridge PCI-ISA)
AGP (accelerated graphics port), PCI (peripheral componet interconnect, periferiche ad alta velocità), EIDE (enhanced integrated device electronics), USB (universal serial bus)