Cosa e` un calcolatore? - Computer Engineering Group

Architetture e gli altri corsi di Informatica
Fondamenti 1 e 2, …etc
swap(int v[], int k)
{
Architetture dei Calcolatori
intSistemi
temp;Operativi
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
(Lettere A-I)
Introduzione
swap:
}
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
Ing.
Ing. Francesco Lo Presti
Architetture dei
Reti
Logiche
Calcolatori
ALUout
A
B
MDR IR
PC
Cosa e’ un calcolatore?
Instr[31-26]
PCWriteCond
Control
PCWrite
PCSource
IorD
ALUOp
MemRead
ALUSrcB
MemWrite
ALUSrcA
MemtoReg
RegWrite
PC[31-28]
IRWriteRegDst
Instr[25-0]Shift 282
left 2 0
1
0
0 Memory
Read Addr 11zero
1
Read
0Register
Read Addr 2
Address
Read Data
1Data
1 Addr 0
Write
1 Read
ALU
(Instr. or Data)
4
1
Write
File
0Data
2
2 Data 3
Write Data Instr[15-0]
00
SignShift
ALU
Instr[5-0]
32 2
Extend
left
control
Introduzione
2
Introduzione
4
Cosa e’ un calcolatore?
“A device that computes, especially a
programmable electronic machine that performs
highhigh-speed mathematical or logical operations or
that assembles, stores, correlates, or otherwise
processes information”
information”
-- The American Heritage Dictionary of the
English Language, 4th Edition, 2000
Introduzione
3
Calcolatore Elettronico
Calcolatore Elettronico
Macchina per l’
l’esecuzione automatica di algoritmi
❍ General Purpose:
Purpose: puo’
puo’ svolgere qualsiasi elaborazione di
cui sia noto un algoritmo risolutivo
Accetta in ingresso informazioni codificate in
forma digitale
2. Le elabora attraverso un programma memorizzato
3. Produce informazioni in uscita
1.
Programma e’ un algoritmo espresso in un
linguaggio di programmazione
Linguaggio macchina binario:
binario: il linguaggio
direttamente eseguibile dal calcolatore
Istruzione Macchina
❍
❍
Dati
operazione logico/aritmetica su dati o di trasferimento
dati
codificata in binario
Programma
memorizzato in
esecuzione
Risultati
Computer
Esempio 10000110010100000 istruisce il calcolatore di
effettuare una somma
Programma eseguibile:
eseguibile: un algoritmo espresso in
linguaggio macchina
Introduzione
5
Introduzione
6
… e loro interconnessione
Componenti principali di un calcolatore
Processore
Processore
Unità di
controllo
Unità di
elaborazione
dati
Dispositivi
di input
Memoria
Tastiera
Unità di
controllo
Mouse
Disco
Unità di
elaborazione
dati
Monitor
Dispositivi
di output
Dispositivi
di I/O
Dispositivi
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Memoria
Stampante
Processore o unità
unità centrale di elaborazione (Central
(Central Processing Unit
– CPU)
Memoria principale (Main
(Main Memory – MM)
Dispositivi di Input/Output (I/O) e loro interfacce
Introduzione
Bus
7
dati
indirizzi
controllo
Bus di sistema: collega i componenti principali di un calcolatore
calcolatore
(linee dati, indirizzo, controllo)
Introduzione
8
Processore - Central Processing Unit (CPU)
Processore - Central Processing Unit (CPU)
Provvede all’
all’esecuzione delle istruzioni macchina
Processore e’
e’ composto da due sottosistemi:
Ciclo di Esecuzione
1. Prelievo Istruzione dalla Memoria
2. Decodifica Istruzione
3. Esecuzione Istruzione
1.
Unità
Unità di Controllo (Control) – Parte di Controllo
❍
Controlla il sequenziamento e l’l’esecuzione delle istruzioni
generando i segnali di controllo
2. Unita’
Unita’ di Elaborazione (Datapath
(Datapath)) – Parte
Operativa
Ogni Processore e’ caratterizzato da un proprio
❍
Esegue le istruzioni
ALU
❍
Banco di Registri (Register
(Register File)
❍
linguaggio macchina
Esegue operazioni logico aritmetiche sui dati
Memoria interna CPU
Program Counter (PC)
– Indirizzo Prossima Istruzione
Instruction Register (IR)
– Codice Istruzione da eseguire
Introduzione
9
PC
IR
Bus Dati
Registri
10
Il Bus
La struttura di interconnessione più
più comune
❍ percorsi di comunicazione tra due o più
più dispositivi
❍ mezzo di trasmissione condiviso
❍ Usualmente di tipo broadcast
Bus Controllo
ALU
Bus Interno CPU
Unità di Elaborazione
Bus Indirizzi
Processore - Central Processor Unit (CPU)
Introduzione
I dati sono visibili da tutte le unità
unità connesse
Processore
Unità di
controllo
Unità di Controllo
Unità di
elaborazione dati
Dispositivi di
I/O
Dispositivi di
I/O
Interfaccia di
I/O
Interfaccia di
I/O
Memoria
Segnali di Controllo
Bus
Introduzione
11
dati
indirizzi
controllo
Introduzione
12
Il Bus
La Memoria
Composto da più
più linee.
❍ Ogni linea:
Memoria Primaria:
Primaria: Memoria Centrale
❍ Contiene istruzioni/dati dei programmi in esecuzione
…in formato binario
è conduttore elettrico (traccia in rame)
Può trasmettere segnali che rappresentano 0 o 1, un bit
❍
❍
Tre tipi di linee
❍ Linee dati: Bus dati
❍ Linee indirizzo: Bus indirizzi
❍ Linee di controllo: Bus controllo
Memoria ad accesso casuale
– Tempo di accesso costante
SRAM, DRAM, etc.
❍
❍
Processore
Unità di
controllo
Bus
Dispositivi di
I/O
Dispositivi di
I/O
Interfaccia di
I/O
Interfaccia di
I/O
❍
Veloce (~10(~10-100ns) Costosa
Dimensioni contenute (fino a qualche Gigabyte)
E’ organizzata come una gerarchia di memorie
Cache di primo e secondo livello…
livello…
Memoria
Unità di
elaborazione dati
Volatile
RAM – Random Access Memory
Memoria Secondaria:
Secondaria: Dischi,
Dischi, CD, etc..
❍ Memoria di lungo periodo - non volatile
❍ Tempo di accesso maggiori (~ms e piu’
piu’), economica
dati
indirizzi
controllo
Introduzione
13
La Memoria Centrale
Introduzione
14
Disco rigido
Composta di celle,
celle, o locazioni,
locazioni, a loro volta
composte da un numero fisso di bit
❍
Tipicamente cella=byte
cella=byte (8 bit)
Ogni locazione e’ associata ad un indirizzo
byte M-1
byte M-2
nell’
nell’intervallo [0,1,…
[0,1,…,M,M-1]
❍
❍
M dimensione della memoria
La memoria e’ vista come un vettore di byte
La CPU (ma non solo) accede alle informazioni in
Memoria
Testina
Motore per la rotazione dei dischi
scrittura/lettura tramite indirizzo della cella
❍
Non necessariamente M= 2m
Operazioni:
Operazioni: Lettura/Scrittura
❍
❍
Costituito da un insieme di piatti rotanti (da 1 a 15)
Indirizzi a m bit: spazio di indirizzamento 2m
Per ragioni di efficienza le operazioni di
lettura/scrittura vengono effettuate per gruppi di
byte detti parola (word)
1 parola=
parola= 1,2,4,8 byte
Byte 1
Piatti rivestiti di una superficie magnetica
Byte 0
Esiste una testina (bobina) per ogni faccia
❍
8 bit
Generalmente piatti a doppia faccia
Le testine di facce diverse sono collegate tra di loro e si muovono
muovono
contemporaneamente
Velocità
Velocità di rotazione costante (ad es. 7200 RPM)
Introduzione
15
Introduzione
16
Esecuzione di un Programma
L’organizzazione dei dati sul disco
tracce
Input del Codice/Dati
settori
Processor
traccia
Control
Suddivisione della superficie del disco in anelli concentrici, detti
detti tracce
Registrazione seriale su tracce concentriche
❍
000000
000000
100011
100011
101011
101011
000000
10001000-5000 tracce
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Devices
Input
Memory
Datapath
Output
Tracce adiacenti separate da spazi
Ciascuna traccia è divisa in settori
❍
❍
❍
Il settore è la più
più piccola unità
unità che può essere trasferita (scritta o letta)
Centinaia di settori per traccia, generalmente di lunghezza fissa
fissa (ad es., 512 byte)
Il settore contiene, tra l’l’altro, un ID del settore, i dati e un codice di correzione
di errore: la capacità
capacità formattata scende del 15%
La stessa traccia su piatti diversi forma un cilindro
Introduzione
17
Esecuzione di un Programma
Control
Datapath
Il Processore preleva
un’istruzione
Memory
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
18
Esecuzione di un Programma
Codice/Dati salvati in
memoria
Processor
Introduzione
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Control
Input
Datapath
Output
Introduzione
Memory
Processor
Devices
19
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Devices
Input
Output
Introduzione
20
Esecuzione di un Programma
L’unita’ di controllo del
processore decodifica l’istruzione
Esecuzione di un Programma
L’unita’ di esecuzione del processore esegue l’istruzione
(eventualmente prelevando operandi/salvando il risultato)
Che devo fare?
Processor
Processor
Devices
Control
000000 00100 00010 0001000000100000
Memory
000000 00100 00010 0001000000100000
Input
Datapath
Introduzione
contents Reg #4 ADD contents Reg #2
results put in Reg #2
21
Esecuzione di un Programma
Memory
Processor
Datapath
Memory
Input
Datapath
Output
Control
Devices
Control
000000
000000
100011
100011
101011
101011
000000
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
Output
Introduzione
22
Esecuzione di un Programma
A completamento del programma, i risultati vengono
salvati/inviati su un dispositivo di output
Devices
Input
Processor
Output
Memory
Control
Datapath
Devices
Input
00000100010100000000000000000000
00000000010011110000000000000100
00000011111000000000000000001000
Output
Fetch
Exec
Decode
Introduzione
23
Introduzione
24
Esecuzione di un Programma
Algoritmi e Programmi
Un programma e’ un algoritmo espresso in un
A completamento del programma, i risultati vengono
salvati/inviati su un dispositivo di output
Processor
Control
linguaggio di programmazione
Il linguaggio direttamente eseguibile dal
calcolatore e’ il suo linguaggio macchina binario
Un algoritmo espresso nel linguaggio macchina
binario prende il nome di programma eseguibile
Devices
Memory
Datapath
Input
00000000101000010000000000011000
Output
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
00000100010100000000000000000000
00000000010011110000000000000100
00000011111000000000000000001000
Introduzione
10101100011000100000000000000100
00000011111000000000000000001000
25
Dalle istruzioni in binario all’assembler
Introduzione
26
Un programma in assembler
swap:
Programmazione in linguaggio macchina binario
❍
Per semplificare e velocizzare e’
e’ preferibile impiegare una
rappesentazione simbolica delle istruzioni
Un esempio di traduzione
Da un programma in
Linguaggio assembler:
assembler: Linguaggio composto da istruzioni
assembler MIPS ad un
programma in linguaggio
macchina binario
simboliche che corrispondono a istruzioni binarie
❍
simbolico add A,B al posto di 1000110010100000
Programma assemblatore
(assembler):
(assembler):
❍
❍
Prende in ingresso un
programma scritto in
assembler
Genera il corrispondente
programma in linguaggio
macchina
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
00000000101000010000000000011000
00000000100011100001100000100001
assemblatore
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
00000000101000010000000000011000
10101100011000100000000000000100
00000000100000100001000000100001
10001100011000100000000000000000
00000011111000000000000000001000
10001100111100100000000000000100
10101100010100000000000000000000
10101100011000100000000000000100
Introduzione
27
00000011111000000000000000001000
Introduzione
28
Da un linguaggio di programmazione ad alto
livello all’assembler
Il processo di traduzione completo
swap(int v[], int
k)
Un linguaggio di programmazione ad alto livello
❍ Offre astrazioni notevoli
{
int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
Variabili, tipizzazione dei dati
Procedure, funzioni
Programmazione ad oggetti
Gestione di eccezioni
❍
❍
swap:
}
Programma in linguaggio
ad alto livello
Aumenta la produttività
produttività del programmatore
Permette al programma di essere indipendente dal
computer sul quale viene sviluppato
compilatore
Programma in
linguaggio assembler
(MIPS)
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
assemblatore
Programma in linguaggio
macchina binario (MIPS)
Programma compilatore
❍ traduce da un linguaggio di programmazione ad alto livello
al linguaggio assembler
❍ Talvolta traduce direttamente da linguaggio di
programmazione ad alto livello a linguaggio macchina
00000000101000010000000000011000
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
Introduzione
29
Introduzione
00000011111000000000000000001000
Compilazione ed Interpretazione
Il Compilatore
La compilazione e’ un processo di traduzione che,
che, a
Il Compilatore sostituisce a ogni istruzione del
partire da un programma scritto in linguaggio
simbolico,
simbolico, ne genera una versione equivalente in
assembler/linguaggio
assembler/linguaggio macchina
❍
❍
programma PL1, scritto nel linguaggio L1, una
sequenza di istruzioni scritte nel linguaggio L0 di
piu’
piu’ basso livello
ProgrammaC
ProgrammaLM
Il programma che effettua la traduzione prende il nome
di compilatore
Il programma risultante puo’
puo’ essere eseguito
direttamente sul calcolatore
❍
indiretta di un programma ad opera di un
programma detto interprete
❍
L’interprete legge il codice del programma da eseguire e
ne simula l’esecuzione,
esecuzione, generando i relativi risultati
L’interprete e’, in sostanza,
sostanza, un simulatore di un
calcolatore virtuale il cui linguaggio macchina e’ il
linguaggio interpretato
Introduzione
31
Compilatore
C/Assembler
Il programma risultante PL0
equivalente a PL1 ma scritto
nel linguaggio L0
Se L0 e’
e’ il linguaggio
macchina binario LM, PL0
puo’
puo’ essere direttamente
eseguito
Altrimenti puo’
puo’ essere
ulteriormente compilato,
compilato,
oppure interpretato
L’interpretazione e’ un processo di esecuzione
❍
30
Computer
Dati
Risultati
ProgrammaLM
Computer
Introduzione
32
L’interprete
Interpretazione o compilazione?
Per eseguire PL1, scritto in L1, l’interprete,
interprete, scritto
Ogni linguaggio puo’
puo’ essere sia interpretato che
compilato
in L0, analizza – passo passo - ogni istruzione da
eseguire di PL1 e ne realizza l’effetto,
effetto, eseguendo
una sequenza di istruzioni del linguaggio di L0 ad
essa equivalenti
❍
L’interpretazione e’ piu’
piu’ lenta dell’
dell’esecuzione
diretta
❍
❍
Programma C
Migliore diagnostica
Maggiore portabilita’
portabilita’
L’interprete,
interprete, se scritto in un linguaggio diffuso,
diffuso, puo’
puo’ essere
reso piu’
piu’ facilmente disponibile su un nuovo calcolatore
Risultati
Interprete C
Dati
Il C, C++ sono normalmente compilati
Talvolta,
Talvolta, compilazione ed interpretazione sono
combinate
❍
❍
Computer
Per combinare i vantaggi
Si compila in un linguaggio intermedio che poi e’
e’
interpretato
Approccio utilizzato per l’esecuzione dei programmi in Java
Introduzione
33
Diversi Livelli di Astrazione
swap(int v[], int
k)
int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
Diversi Livelli di Astrazione
compilatore
Programma in
linguaggio assembler
(MIPS)
}
Programma in linguaggio
ad alto livello
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
Compiler
0
1
B
0
1
FileAddr
Write
Read
1
Data
2
Write
Data
0
Sign
Shift
Instr[15-0]
Extend left 2
Instr[5-0] 32
MDR
Write Data
Read Addr 1
Read
Register
Read
Addr
Data
1 2
4
0
1
2
3
zero
Assembler
ALU
00
ALU
control
0000 1001
Programma in linguaggio
1010 1111
macchina (MIPS) Software 1100 0110
0101 1000
00000000101000010000000000011000
Hardware
microinterpreta
zione
10001100011000100000000000000000
Relazioni di Trasferimento
del Datapath (RTL)
10001100111100100000000000000100
10101100111100100000000000000000
00000011111000000000000000001000
0110
1000
1111
1001
1010
0000
0101
1100
1111
1001
1000
0110
0101
1100
0000
1010
1000
0110
1001
1111
IR ← Imem[PC]; PC ← PC + 4
RTL Code
ALUOP[0:3] ⇐ InstReg[9:11] & MASK
10101100011000100000000000000100
Introduzione
Assembly
code
Machine
code
0($2)
4($2)
0($2)
4($2)
1100
0101
1010
0000
C code
Machine Interpretation
00000000100011100001100000100001
2
0
1
lw $15,
lw $16,
sw $16,
sw $15,
Programma in linguaggio
Assembler (e.g., MIPS)
Programma in linguaggio
macchina binario (MIPS)
ALUout
A
IR
PC
Instr[31-26]
PCWriteCond
PCWrite Control
PCSource
IorD
ALUOp
MemRead
ALUSrcB
MemWrite
ALUSrcA
MemtoReg
RegWrite
IRWrite
RegDst
PC[31-28]
Shift
Instr[25-0]
left 2 28
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
Programma in un linguaggio
di alto livello (e.g., C)
assemblatore
Memory
Address
Read Data
(Instr. or Data)
34
swap:
{
0
1
Introduzione
35
Introduzione
36
Architettura a Livelli
Calcolatore come insieme gerarchico di livelli o
Livelli tipici di un calcolatore
Macchine Virtuali {MV0, MV1,…
MV1,…,MVn}
MVn}
MVi rappresenta un diverso livello di astrazione del
calcolatore
Macchina Virtuale a livello i
❍ Moduli che operano al livello i
Processore
Linguaggio Li per la
programmazione a livello i
Livello dei linguaggi orientati
alle applicazioni
M3Dispositivi
Dispositivi
di I/O
Unità di
controllo
e loro struttura d’interazione
❍
M2
di I/O
Livello del Linguaggio assembler
Memoria
M1
Unità di
elaborazione
dati
Struttura di
Interfaccia
interazione
di I/O
Livello del Sistema Operativo
Interfaccia
di I/O
M4
Software
Livello del Linguaggio Macchina –
Livello ISA
Elemento Caratterizzante
❍
❍
Risorse Ri visibili al livello i
(Li,Ri)
Li,Ri) l’architettura
del livello i
Bus
Hardware
M5
dati
indirizzi
controllo
M6
Emulazione
❍
Macchina Firmware - Microarchitettura
Macchina Hardware
Astrazione o Virtualizzazione
Architettura a Livelli
Aspetti visibili a chi programma
al livello i
Introduzione
37
Architettura a Livelli
Linguaggi ai vari livelli e loro relazioni
5.
Livello dei Linguaggi orientati alle appl.
appl. (C,C++, Java)
4.
Compilazione o Interpretazione (Java)
Assemblaggio (Assembler)
Livello 1: Macchina Firmware – Microarchitettura
❍ Interpreta ed esegue le istruzioni del linguaggio macchina
❍ E’ direttamente realizzato con i componenti della
macchina hardware
❍ Moduli - Unita’
Unita’ di Elaborazione:
Elaborazione: CPU, Memoria,
Memoria, Unita’
Unita’ di
I/O
❍ L1: Linguaggio di Microprogrammazione
❍ R1: Reti combinatorie e sequenziali
Livello del Sistema Operativo (Linguaggio
Macchina+Chiamate di Sistema)
Sistema)
Interpretazione parziale
2.
Software
Livello del linguaggio macchina – ISA (Linguaggio
(Linguaggio Macchina)
Macchina)
Hardware
Esecuzione diretta o microinterpretazione
1.
Macchina Firmware (Linguaggio
(Linguaggio di microprogrammazione)
microprogrammazione)
0.
Livello 0: Macchina Hardware
❍ Livello della logica digitale
❍ Moduli:
Moduli: Reti combinatorie e sequenziali
❍ L0: Algebra booleana binaria
❍ R0: Porte logiche
Livello del Linguaggio Assembler (Assembler)
3.
38
Architettura a Livelli
Introduzione
Realizzazione hardware
Macchina Hardware (Algebra booleana?)
booleana?)
Introduzione
39
Introduzione
40
Architettura a Livelli
Architettura a Livelli
Livello 2: Livello del Linguaggio Macchina (ISA)
❍ Macchina nuda come appare al programmatore di sistema.
sistema.
Le istruzioni del suo linguaggio sono interpretate ed
eseguite dai microprogrammi del processore
❍ Moduli:
Moduli: Programmi
❍ L2: Linguaggio macchina
❍ R2: Registri,
Registri, spazio di memoria
Livello 4: Livello del Linguaggio Assembler
❍ Livello piu’
piu’ basso utilizzabile dal programmatore di
applicazioni
❍ Moduli:
Moduli: Processi
❍ L4: linguaggio assembler
Livello 3: Livello del Sistema Operativo
❍ Gestisce le risorse del sistema nei confronti dei livelli
superiori
Livello 5: Livello dei Linguaggi orientati alle appl.
appl.
❍ Livello usato per sviluppare applicazioni
❍ Moduli:
Moduli: Processi
❍ L5: C, C++, Java, etc..
❍ E’ implementato tramite compilazione e/o interpretazione
Forma simbolica dei linguaggi L2, L3
❍
Processore (Multiprogrammazione),
Multiprogrammazione), Memoria Principale
(Memoria Virtuale),
Virtuale), Memoria Secondaria (File System)
❍
❍
❍
L3: Linguaggio macchina+Chiamate di sistema
R3: R2+spazi di memoria,
memoria, dispositivi di I/O, processori,
processori,…
Interpretazione parziale (per le chiamate di sistema)
sistema)
Introduzione
41
Architettura a Livelli
Linguaggi ai vari livelli e loro relazioni
5.
Livello dei Linguaggi orientati alle appl.
appl. (C,C++, Java)
4.
3.
Compilazione o Interpretazione (Java)
ISA - Cosa il calcolatore e’ capace di fare
Assemblaggio (Assembler)
❍
Livello del Sistema Operativo (Linguaggio
Macchina+Chiamate di Sistema)
Sistema)
2.
1.
Macchina Firmware (Linguaggio
(Linguaggio di microprogrammazione)
microprogrammazione)
0.
Quali istruzioni?
istruzioni?
MO - Come la macchina implementa ISA
Interpretazione parziale
Software
Livello del linguaggio macchina – ISA (Linguaggio
(Linguaggio Macchina)
Macchina)
Hardware
Esecuzione diretta o microinterpretazione
42
Instruction Set Architecture (ISA) + Machine
Organization (MO)
Livello del Linguaggio Assembler (Assembler)
Introduzione
Architettura dei Calcolatori
E’ implementato tramite “assemblaggio”
assemblaggio”
❍
Loro Implementazione Fisica
Realizzazione hardware
Macchina Hardware (Algebra booleana?)
booleana?)
Introduzione
43
Introduzione
44
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA)
“... the attributes of a [computing] system as seen by the
programmer, i.e. the conceptual structure and functional
behavior, as distinct from the organization of the data
flows and controls, the logic design, and the physical
implementation.”
implementation.”
— Amdahl, Blaaw,
Blaaw, and Brooks, 1964
ISAISA-Interfaccia tra Hardware e Software
Deve:
Deve:
❍ Fornire funzionalita’
funzionalita’ ai livelli piu’
piu’ alti
❍ Permettere un efficiente implementazione ai livelli piu’
piu’
bassi
❍ Insieme delle istruzioni
❍ Numero di bit che rappresentano tipi di dati
software
❍ Tecniche di indirizzamento della memoria, …
Instruction Set Architecture
hardware
Introduzione
45
Introduzione
Organizzazione del Calcolatore
MIPS R3000 ISA
Caratteristiche delle principali unita’
unita’ funzionali
❍ Registri,
Registri, ALU, etc.
Categorie di Istruzioni:
Istruzioni:
❍ Load/Store
❍ Computational
Strutture di Interconnessione
Registri
R0 - R31
Registri come operandi
Unita’
Unita’ di Elaborazione e Unita’
Unita’ di Controllo
❍
Organizzazione del sottosistema di Memoria
Descrizione tramite
46
❍
Register Transfer Level
Jump and Branch
Floating Point
PC
HI
coprocessor
(RTL)
❍
❍
Gestione della Memoria
Speciali
LO
3 formati istruzione: tutti a 32 bits
OP
rs
rt
OP
rs
rt
OP
Introduzione
47
rd
sa
immediate
jump target
funct
Formato R
Formato I
Formato J
Introduzione
48
Evoluzione delle ISA
Evoluzione delle ISA
Dai primi calcolatori (anni ’50)
❍ Semplici
❍ Pochi tipi di istruzioni e modi di indirizzamento
Accumulatore singolo
(EDSAC 1950)
Accumulatore+Registri indice
…ai CISC (Complex Instruction Set Computer)
(Manchester Mark I, IBM 700 1952)
(anni’
(anni’70)
Separazione del modello di programmazione
dall’implementazione
❍ ISA
Basati su linguaggi ad alto livello – Stack
Concetto di famiglia
(B5000 1963)
(IBM 360 1963)
e processori via via piu’
piu’ complessi
❍ Riduzione gap semantico tra linguaggi di alto livello e
linguaggi macchina
❍ Difficcili da ottimizzare
…ai RISC (Reduced Instruction Set Computer)
❍ ISA e processori semplici
❍ Facilita l’ottimizzazione
Macchine a registri generaili
CISC
Architetture Load-Store
(Vax, Intel, 1977-)
Software: Compilatori Ottimizzanti
Hardware: Processori veloci (impiego efficiente delle
tecniche di pipelining)
Introduzione
RISC
(MIPS, Sparc, HP-Pa, …)
Introduzione
49
Le Caratteristiche dei RISC
La famiglia dei Processori INTEL
Le architetture RISC sono caratterizzate da
8086:
8086: (1978, 29k transistor) – Processore a 16 bit,
poche proprieta’
proprieta’ chiave
❍
❍
base del PC IBM originale,
originale, dotato di MSMS-DOS
Numero elevato di registri generali
Pochi formati di istruzione
❍
❍
❍
Indirizzi a 20 bit (1024Kb indirizzabili)
indirizzabili)
80286:
80286: (1982, 134k transistor) – Processore a 16
Generalmente della stessa lunghezza
❍
50
bit, base dei PCPC-AT IBM, piattaforma originale per
MS Windows
i386:
i386: (1985, 275k transistor) – Processore a 32 bit
i486:
i486: (1989, 1.9M transistor) – Prestazioni
migliorare e floating point unit integrata
Pentium:
Pentium: (1993, 3.1M transistor) – Prestazioni
migliorate,
migliorate, qualche estensione del set di istruzioni
Numero limitato di codici operativi e di modi di
indirizzamento
Tutte le operazioni logico/aritmetiche hanno come
operandi i registri
Le sole operazioni che coinvolgono la memoria sono quelle
di load e store
Introduzione
51
Introduzione
52
La famiglia dei Processori INTEL
Un po’ di Storia
Pentium/MMX:
Pentium/MMX: (1997, 4.5M transistor) – Nuove
istruzioni per manipolare vettori d’interi (max
64bit)
Pentium II:
II: (1997, 7M transistor) – Piu’
Piu’ efficiente
implementazione del processore
Pentium III:
III: (1999, 8,2M transistor) – Nuove
istruzioni per manipolare vettori di interi e
floating point (max 128bit)
❍
Le ultime versioni raggiungono i 24M transistor a causa
dell’
dell’inclusione della cache L2 nel processore
Pentium 4:
4: (2001, 42M transistor) – 144 nuove
istruzioni per vettori interi e floating point
I processori Interl moderni sono CISC con un “cuore”
cuore”
RISC
Introduzione
Tabulating machine
(H. Hollerith, 1889)
Harvard Mark I
(IBM, H. Aiken, 1944)
53
ENIAC (Electronic Numerical Integrator and
Calculator)
Difference Engine
(C. Babbage, 1822)
Introduzione
54
Introduzione
56
ENIAC
Primo computer elettronico di tipo generalgeneral-purpose
(programmabile)
programmabile)
1943 John Mauchly e J. Presper Eckert Moore
School of Electrical Engineering University of
Pennsylvania
❍
❍
Calcoli balistici (WW2)
Completata nel 1946
25x2
.5metri
metri (a forma di U)
25x2.5
18.000 tubi a vuoto
30 tonnellate,
tonnellate, 140kW
20 1010-digit registri,
registri,
❍ ~60 cm a registro
1900 addizioni al secondo
Programmata manualmente tramite interruttori
Introduzione
55
Macchina di von Neumann/Turing
La Macchina di von Neumann
1946 EDVAC, Princeton Institute for Advanced
Studies
❍
Completata nel 1952
Concetto di programma memorizzato
Unità logicaaritmetica
Memoria principale per dati e istruzioni
❍ Dati ed istruzioni codificate in binario
Memoria
Principale
ALU opera su dati
Sistema di
I/O
Unità di
controllo di
programma
Unità
Unità di controllo che “interpreta”
interpreta” le istruzioni in
memoria e le esegue
I sistemi di input e output sono controllati
dall’
dall’unità
unità di controllo
CPU
Introduzione
57
Transistors
Introduzione
58
Primi Calcolatori Commerciali
1947 W. Shockley, J.
Bardeen,
Bardeen, W. Brattain nei
Bell Lab. in 1947
❍
❍
Minori dimensioni
Maggiore affidabilita’
affidabilita’
UNIVAC (Remington-Rand, 1951)
IBM 701 (IBM, 1952)
Introduzione
59
Introduzione
60
Integrated Circuit (IC)
Primo Microprocessore
1958 - Jack Kilby:
Kilby: integrazione di un transistor,
1971 Intel 4004
❍ 108 KHz, 0.06 MIPS
❍ 2300 transistors (10 microns)
❍ Larghezza del bus: 4 bits
❍ Memoria indirizzabile:
indirizzabile: 640
bytes
❍ Sviluppato per un calcolatore
della Busicom
resistenze e capacita’
capacita’ iun singolo chip a
semiconduttore
Introduzione
61
Introduzione
Primi Personal Computer
Primi Personal Computer
1977
1977-Apple II: Steve Jobs, Steve Wozniak
1981 IBM PC: Intel 8088, 4.77MHz,
4.77MHz, 16Kb RAM, 2
Motorola 6502 CPU, 48Kb RAM
62
160Kb floppy disks
Introduzione
63
Introduzione
64
Primi Personal Computer
Anni ‘80
1973: PC Alto Xerox PARC
❍ Mouse, Ethernet, grafica
bitbit-mapped, icone,
icone, menu,
WYSIWG editing
Da IC a VLSI
VLSI
Introduzione di una nuova architettura per i
processori:
processori: RISC (Reduced Instruction Set
Computer)
Laboratori Xerox:
❍ LocalLocal-area networking
❍ Laser printing
❍ …
❍
❍
❍
IBM: John Cocke
UC Berkeley: David Patterson
Stanford: John Hennessy
Commercializzazione Processori RISC nel 1985
❍ MIPS: MIPS, Sun: Sparc,
Sparc, IBM: Power RISC, HP: PAPARISC, DEC: Alpha
Competizione RISCRISC-CISC (complex instruction set
computer), principalmente processori Intel x86
Introduzione
65
Generazioni di Computer
Generazione
Data
Tecnologia
Introduzione
66
Evoluzione della potenza di calcolo (MIPS)
Prestazioni
per unita’
di costo
Tubi a
1
1950 - 1959
2
1960 - 1968 Transistor
3
1968 - 1977 IC
4
1978 - ?
vuoto
LSI/VLSI
1
35
900
2,400,000
(“The Cooler the Better: New Directions in the Nomadic Ages,” Computer, April 2001.)
Introduzione
67
Introduzione
68
Evoluzione del numero di transistor nelle CPU
Intel
Evoluzione della capacita’ delle memorie
DRAM (1 Chip DRAM)
anno dimensione
1980
64k
1983
256k
1986
1M
1989
4M
1992
16M
1996
64M
2000
256M
x2 transistors/chip
ogni 1.5 anni
Introduzione
69
Gap Processore-Memoria
1000
IC technology:
clock rate, potenza,
potenza, densita’
densita’
CPU
100
⇓ permettono
Miglioramenti nell’
nell’architettura dei calcolatori:
calcolatori:
Gap cresce del 50%
ogni anno
istruzioni per ciclo,
ciclo, pipeline, cache, MMX
10
⇓ Spinti da
DRAM
X2/10anni
DRAM
Mercato di massa:
massa:
vantaggio competitivo,
competitivo, applicazioni
2000
1995
1990
1985
1
1980
70
Fattori Determinanti
µProc
x2/1.5anni
Performance
Introduzione
Tempo
Introduzione
71
Introduzione
72
Fattori Determinanti
Calcolatori General Purpose
Applicazioni determinano i fattori
❍ Simulazioni numeriche:
numeriche: floatingfloating-point, banda di memoria
❍ Appl.
Appl. Transazionali:
Transazionali: I/O, matematica intera
❍ Appl.
Appl. Multimediali:
Multimediali: estensioni multimediali
Applicazioni:
Applicazioni: commerciali (int.), scientifiche (FP,
grafica),
grafica), home (int., audio, video, grafica)
grafica)
❍
❍
Applicazioni e le prestazioni
❍ Si potrebbe eseguire il tutto in meta’
meta’ tempo?
❍ La memoria richiesta dalle applicazioni cresce in
continuazione:
continuazione:
❍
SO impatta l’architettura del calcolatore
RISCRISC-based Unix workstation vs x86x86-based PC: (1) unita’
unita’
vendute sono in rapporto 100:1, (2) enfasi sulle prestazioni
– Impatto di Linux?
1.51.5-2 per annno
❍
Compatibilita’
Compatibilita’ del software
Rapida obsoloscenza
Importanza del Sistema Operativo
Linguaggi ad alto livello sostituiscono gli assembler
Importanza dei Compilatori
Importanza della compatibilita’
compatibilita’ e facilita’
facilita’ d’uso
Importanza della domanda/fetta di mercato
❍ E’ possibile ripagare gli investimenti in ricerca?
ricerca?
Introduzione
73
Calcolatori Embedded
Introduzione
74
Calcolatori Embedded
Tipicamente senza FP MMU
❍ Grande varieta’
varieta’ di architetture,
architetture, prestazioni,
prestazioni, periferiche
❍ Compatibilita’
Compatibilita’ non e’
e’ un problema.
problema. Piu’
Piu’ importante e’ il
consumo di potenza
Tempo di vita piu’
piu’ lungo:
lungo:
microprocessori a 44- or 88-bit ancora in uso
Grandi volumi (~miliardi
(~miliardi)) a prezzi bassi ($5($5-$40)
Trend: costi decrescenti,
decrescenti, crescente numero di
funzionalita’
funzionalita’
Introduzione
75
Introduzione
76