Architetture dei Calcolatori Architetture e gli altri corsi di Informatica

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
Prof. 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
Register
0
Read
Addr
2
Address
Read Data
1Data
1 Addr 0
Write
1 Read
(Instr. or Data)
4 1 ALU
Write
0Data
File
2
2 Data 3
Write Data Instr[15-0]
00
SignShift
ALU
Instr[5-0]
Extend
left
32 2
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

Accetta in ingresso informazioni codificate in
forma digitale
2. Le elabora attraverso un programma memorizzato
3. Produce informazioni in uscita
1.
General Purpose:
Purpose: puo’
puo’ svolgere qualsiasi elaborazione di
cui sia noto un algoritmo risolutivo
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
9 Esempio 10000110010100000 istruisce il calcolatore di
effettuare una somma
‰
Programma eseguibile:
eseguibile: un algoritmo espresso in
Introduzione
linguaggio macchina
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
Dispositivi
di output
Unità di
elaborazione
dati
Monitor
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
Dispositivi
di I/O
Dispositivi
di I/O
Interfaccia
di I/O
Interfaccia
di I/O
Memoria
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
‰ Ciclo di Esecuzione
‰
Processore e’
e’ composto da due sottosistemi:
1. Unità
Unità di Controllo (Control) – Parte di Controllo
‰
1.
2.
3.
‰
Prelievo Istruzione dalla Memoria
Decodifica Istruzione
Esecuzione Istruzione

2.
Ogni Processore e’ caratterizzato da un proprio
linguaggio macchina
Controlla il sequenziamento e l’l’esecuzione delle istruzioni
generando i segnali di controllo
Unita’
Unita’ di Elaborazione (Datapath
(Datapath)) – Parte
Operativa


Esegue le istruzioni
ALU
9 Esegue operazioni logico aritmetiche sui dati

Banco di Registri (Register
(Register File)
9 Memoria interna CPU
9 Program Counter (PC)
– Indirizzo Prossima Istruzione
9 Instruction Register (IR)
– Codice Istruzione da eseguire
Introduzione
9
Processore - Central Processor Unit (CPU)
Introduzione
Il Bus
‰
La struttura di interconnessione più
più comune

Bus Controllo
Bus Indirizzi
Bus Interno CPU
ALU
PC
IR
Bus Dati

Unità di Elaborazione Registri
10

percorsi di comunicazione tra due o più
più dispositivi
mezzo di trasmissione condiviso
Usualmente di tipo broadcast
9 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:



Tre tipi di linee



Unità di
controllo


Dispositivi di
I/O
Dispositivi di
I/O
Interfaccia di
I/O
Interfaccia di
I/O

‰
Memoria Secondaria:
Secondaria: Dischi,
Dischi, CD, etc..

Bus
Veloce (~10(~10-100ns) Costosa
Dimensioni contenute (fino a qualche Gigabyte)
E’ organizzata come una gerarchia di memorie
9 Cache di primo e secondo livello…
livello…
Memoria
Unità di
elaborazione dati
Volatile
RAM – Random Access Memory
9 Memoria ad accesso casuale
– Tempo di accesso costante
9 SRAM, DRAM, etc.
Linee dati: Bus dati
Linee indirizzo: Bus indirizzi
Linee di controllo: Bus controllo
Processore
Contiene istruzioni/dati dei programmi in esecuzione
9 …in formato binario
9 è conduttore elettrico (traccia in rame)
9 Può trasmettere segnali che rappresentano 0 o 1, un bit
‰
Memoria Primaria:
Primaria: Memoria Centrale
dati
indirizzi
controllo

Introduzione
Memoria di lungo periodo - non volatile
Tempo di accesso maggiori (~ms e piu’
piu’), economica
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


Cella elementare di memoria può memorizzare solo
due valori:
valori: 0 o 1, cifra binaria (binary digit -> bit)
Tipicamente cella=byte
cella=byte (8 bit)
byte M-1
byte M-2
‰ Ogni locazione e’ associata ad un indirizzo
nell’
nell’intervallo [0,1,…
[0,1,…,M,M-1]


M dimensione della memoria
La memoria e’ vista come un vettore di byte
Memoria
Testina
Motore per la rotazione dei dischi
‰ La CPU (ma non solo) accede alle informazioni in
scrittura/lettura tramite indirizzo della cella

Indirizzi a m bit: spazio di indirizzamento 2m
9 Non necessariamente M= 2m
‰ Operazioni:
Operazioni: Lettura/Scrittura


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
‰ Costituito da un insieme di piatti rotanti (da 1 a 15)
‰ Piatti rivestiti di una superficie magnetica
Byte 1
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
000000
000000
100011
100011
101011
101011
000000
Input del Codice/Dati
P la tte rs
T ra c k s
00000
00100
00010
00010
00010
00010
11111
00101
00010
01111
10000
10000
01111
00000
0001000010000000
0001000000100000
0000000000000000
0000000000000100
0000000000000000
0000000000000100
0000000000001000
P la tte r
S e c to rs
Processor
Devices
T ra c k
Control
‰
‰
Suddivisione della superficie del disco in anelli concentrici, detti
detti tracce
Registrazione seriale su tracce concentriche

‰
‰
Datapath
Output
10001000-5000 tracce
Tracce adiacenti separate da spazi
Ciascuna traccia è divisa in settori


‰
Input
Memory
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)
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
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
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
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
‰
A completamento del programma, i risultati vengono
salvati/inviati su un dispositivo di output
Processor
Control
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
00000000101000010000000000011000
10101100111100100000000000000000
00000000100000100001000000100001
10101100011000100000000000000100
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;
9 Variabili, tipizzazione dei dati
9 Procedure, funzioni
9 Programmazione ad oggetti
9 Gestione di eccezioni


‰
}
Programma in linguaggio
ad alto livello
Aumenta la produttività
produttività del programmatore
Permette al programma di essere indipendente dal
computer sul quale viene sviluppato

‰
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000

10101100011000100000000000000100
29
Introduzione
00000011111000000000000000001000
30
Il Compilatore
‰
Il programma che effettua la traduzione prende il nome
di compilatore
Il programma risultante puo’
puo’ essere eseguito
direttamente sul calcolatore
31
Compilatore
C/Assembler
Il programma risultante PL0
equivalente a PL1 ma scritto
nel linguaggio L0
9 Se L0 e’
e’ il linguaggio
macchina binario LM, PL0
puo’
puo’ essere direttamente
eseguito
9 Altrimenti puo’
puo’ essere
ulteriormente compilato,
compilato,
oppure interpretato
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
Il Compilatore sostituisce a ogni istruzione del
programma PL1, scritto nel linguaggio L1, una
sequenza di istruzioni scritte nel linguaggio L0 di
piu’
piu’ basso livello
ProgrammaC
ProgrammaLM

L’interpretazione e’ un processo di esecuzione
indiretta di un programma ad opera di un
programma detto interprete

assemblatore
00000000100011100001100000100001
La compilazione e’ un processo di traduzione che,
che, a
partire da un programma scritto in linguaggio
simbolico,
simbolico, ne genera una versione equivalente in
assembler/linguaggio
assembler/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
Compilazione ed Interpretazione

Programma in
linguaggio assembler
(MIPS)
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
Introduzione
‰
compilatore
Programma in linguaggio
macchina binario (MIPS)
Programma compilatore

swap:
Computer
Dati
ProgrammaLM
Risultati
Computer
Introduzione
32
L’interprete
‰
Interpretazione o compilazione?
Per eseguire PL1, scritto in L1, l’interprete,
interprete, scritto
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
‰
Ogni linguaggio puo’
puo’ essere sia interpretato che
compilato

‰
L’interpretazione e’ piu’
piu’ lenta dell’
dell’esecuzione
diretta


Programma C
Dati
Migliore diagnostica
Maggiore portabilita’
portabilita’
9 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
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
9 Approccio utilizzato per l’esecuzione dei programmi in Java
Introduzione
33
Diversi Livelli di Astrazione
swap(int v[], int
k)
Diversi Livelli di Astrazione
compilatore
Programma in
linguaggio assembler
(MIPS)
}
Programma in linguaggio
ad alto livello
Programma in linguaggio
macchina binario (MIPS)
temp = v[k];
…
Programma in linguaggio
Assembler (e.g., MIPS)
lw
lw
sw
sw
$15,
$16,
$16,
$15,
0($2)
4($2)
0($2)
4($2)
Assemblatore
Programma in linguaggio
macchina (MIPS) Software
MicroInterpretazione
Hardware
Relazioni di Trasferimento
del Datapath (RTL)
00000000100011100001100000100001
10001100011000100000000000000000
Realizzazione Hardware
10001100111100100000000000000100
10101100111100100000000000000000
Macchina
10101100011000100000000000000100
Hardware
Introduzione
v[k+1] = temp;
Compilatore
assemblatore
00000011111000000000000000001000
v[k] = v[k+1];
Programma in un linguaggio
di alto livello (e.g., C)
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
?
34
…
swap:
{
int temp;
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
Introduzione
35
0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
IR ← Imem[PC]; PC ← PC + 4
ALUOP[0:3] ⇐InstReg[9:11] & MASK
Processore
Unit
à di
contr
ollo di
Unità
elaborazi
one dati
Bus
dati
indirizzi
controllo
Memoria
Disposi
tivi di
I/O
Disposi
tivi di
I/O
Interf
accia
di I/O
Interf
accia
di I/O
Introduzione
36
Calcolatore come insieme gerarchico di livelli o
Macchine Virtuali {MV0, MV1,…
MV1,…,MVn}
MVn}

‰
Moduli che operano al livello i
9 e loro struttura d’interazione

Linguaggio Li per la
programmazione a livello i
9 Elemento Caratterizzante


Livelli tipici di un calcolatore
MVi rappresenta un diverso livello di astrazione del
calcolatore
Macchina Virtuale a livello i

‰
Risorse Ri visibili al livello i
(Li,Ri)
Li,Ri) l’architettura
del livello i
Processore
M2
Unità di
controllo
M1
Unità di
elaborazione
dati
Bus
Dispositivi
di I/O
Livello dei linguaggi orientati
alle applicazioni
M3
Dispositivi
di I/O
Livello del Linguaggio assembler
Memoria
Struttura di
Interfaccia
interazione
di I/O
Livello del Sistema Operativo
M4
Software
Interfaccia
di I/O
Livello del Linguaggio Macchina –
Livello ISA
Hardware
M5
dati
indirizzi
controllo
M6
Emulazione
‰
Architettura a Livelli
Macchina Firmware - Microarchitettura
Macchina Hardware
Astrazione o Virtualizzazione
Architettura a Livelli
9 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)
È
3.
1.
Livello 0: Macchina Hardware


Compilazione o Interpretazione (Java)


Assemblaggio (Assembler)
‰
Livello del Sistema Operativo (Linguaggio
Macchina+Chiamate di Sistema)
Sistema)
Interpretazione parziale


Macchina Firmware (Linguaggio
(Linguaggio di microprogrammazione)
microprogrammazione)
È
Realizzazione hardware

0. Macchina Hardware (Algebra booleana)
booleana)

Introduzione
39
Livello della logica digitale
Moduli:
Moduli: Reti combinatorie e sequenziali
L0: Algebra booleana binaria
R0: Porte logiche
Livello 1: Macchina Firmware – Microarchitettura

Software
Livello del linguaggio macchina – ISA (Linguaggio
(Linguaggio Macchina)
Macchina)
Hardware
È Esecuzione diretta o microinterpretazione
È
2.
‰
Livello del Linguaggio Assembler (Assembler)
È
38
Architettura a Livelli
‰
4.
Introduzione
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
Introduzione
40
Architettura a Livelli
‰
Livello 2: Livello del Linguaggio Macchina (ISA)




‰
Architettura a Livelli
‰
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


9 Forma simbolica dei linguaggi L2, L3
‰
Gestisce le risorse del sistema nei confronti dei livelli
superiori


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
Livello 5: Livello dei Linguaggi orientati alle appl.
appl.
5.



41
4.
3.
2.
1.
Compilazione o Interpretazione (Java)
‰ISA
Livello del Linguaggio Assembler (Assembler)
Assemblaggio (Assembler)

Livello del Sistema Operativo (Linguaggio
Macchina+Chiamate di Sistema)
Sistema)
Interpretazione parziale

- Cosa il calcolatore e’ capace di fare
Quali istruzioni?
istruzioni?
‰MO
Software
Livello del linguaggio macchina – ISA (Linguaggio
(Linguaggio Macchina)
Macchina)
Hardware
È Esecuzione diretta o microinterpretazione
È
42
Instruction Set Architecture (ISA) + Machine
Organization (MO)
Livello dei Linguaggi orientati alle appl.
appl. (C,C++, Java)
È
Introduzione
Architettura dei Calcolatori
Linguaggi ai vari livelli e loro relazioni
È
Livello usato per sviluppare applicazioni
Moduli:
Moduli: Processi
L5: C, C++, Java, etc..
E’ implementato tramite compilazione e/o interpretazione

Architettura a Livelli
‰
E’ implementato tramite “assemblaggio”
assemblaggio”

9 Processore (Multiprogrammazione),
Multiprogrammazione), Memoria Principale
(Memoria Virtuale),
Virtuale), Memoria Secondaria (File System)

Livello piu’
piu’ basso utilizzabile dal programmatore di
applicazioni
Moduli:
Moduli: Processi
L4: linguaggio assembler

Livello 3: Livello del Sistema Operativo

Livello 4: Livello del Linguaggio Assembler
- Come la macchina implementa ISA
Loro Implementazione Fisica
Macchina Firmware (Linguaggio
(Linguaggio di microprogrammazione)
microprogrammazione)
È
Realizzazione hardware
0. 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
Organizzazione del Calcolatore
‰
46
Evoluzione delle ISA
Caratteristiche delle principali unita’
unita’ funzionali

Introduzione
‰Dai primi calcolatori (anni ’50)
 Semplici
 Pochi tipi di istruzioni e modi di indirizzamento
Registri,
Registri, ALU, etc.
Strutture di Interconnessione
‰ Unita’
Unita’ di Elaborazione e Unita’
Unita’ di Controllo
‰ Organizzazione del sottosistema di Memoria
‰ Descrizione tramite Register Transfer Level
(RTL)
‰
‰…ai
CISC (Complex Instruction Set Computer)
(anni’
(anni’70)
 ISA
e processori via via piu’
piu’ complessi
 Riduzione gap semantico tra linguaggi di alto livello e
linguaggi macchina
 Difficili da ottimizzare
‰…ai RISC (Reduced Instruction
 ISA e processori semplici
 Facilita l’ottimizzazione
Introduzione
47
Set Computer)
9 Software: Compilatori Ottimizzanti
9 Hardware: Processori veloci (impiego efficiente delle
tecniche di pipelining)
Introduzione
48
Le Caratteristiche dei RISC
‰
MIPS R3000 ISA
Le architetture RISC sono caratterizzate da
poche proprieta’
proprieta’ chiave


‰

Numero elevato di registri generali
Pochi formati di istruzione



Load/Store
Computational
R0 - R31
9 Registri come operandi
9 Generalmente della stessa lunghezza

Registri
Categorie di Istruzioni:
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

Jump and Branch
Floating Point


Gestione della Memoria
Speciali
LO
3 formati istruzione: tutti a 32 bits
OP
rs
rt
OP
rs
rt
OP
Introduzione
PC
HI
9 coprocessor
49
rd
sa
immediate
jump target
funct
Formato R
Formato I
Formato J
Introduzione
50