INFORMATICA (modulo di Calcolatori Elettronici)

INFORMATICA (modulo di Calcolatori Elettronici)
Ing. Giuseppe Coldani
e-mail: [email protected]
[email protected]
orario delle lezioni: martedì 8.30-12.30
orario di ricevimento: su appuntamento
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
1
Calendario delle lezioni e degli esami
• Periodi di lezione
1) 29/2 ÷ 23/3
2) 4/4 ÷ 16/4
3) 21/4 ÷ 1/6
• Prova intermedia
18/4 ÷ 20/4
• Sessione d’esame
2 appelli nel periodo 13/6 – 30/7
1 appello nel periodo 22/8 – 17/9
2 appelli a gennaio/febbraio 2017
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
2
Esame (1)
• Prova scritta di valutazione di argomenti teorici
• Prova di programmazione
Prove degli appelli d’esame
Prova scritta di teoria + prova di programmazione nel linguaggio MIPS2000.
L’esame viene superato se è stata conseguita una valutazione sufficiente in
entrambe le prove. In caso di esito non sufficiente, anche in una sola prova, il
candidato dovrà ripetere l’intero esame. E’ prevista una prova orale facoltativa con
due finalità differenti:
1. nel caso in cui la prova scritta di teoria e la prova di programmazione siano
sufficienti, per permettere la modifica della valutazione globale risultante;
2. nel caso in cui una delle due prove suddette sia valutata insufficiente, ma almeno
8/15, per raggiungere una valutazione sufficiente.
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
3
Esame (2)
Prove in itinere
1a prova: argomenti trattati nel corso delle lezioni dei periodi 1 e 2
2a prova: argomenti trattati nel periodo 3 + prova di programmazione nel
linguaggio MIPS2000, da sostenere negli appelli della sessione estiva.
L’accesso a questa prova è vincolato dal superamento della prima prova in
itinere.
La valutazione globale è la media pesata delle tre prove sostenute, con il
vincolo che tutte siano sufficienti.
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
4
Esame (3)
Prove in itinere (2)
In caso di esito non sufficiente nella seconda prova in itinere, il candidato può
ripetere la prova suddetta nell’ultimo appello della sessione di luglio.
In caso di esito non sufficiente nella prima prova in itinere, il candidato dovrà
sostenere l’esame intero nelle rimanenti sessioni.
La valutazione conseguita nelle prove in itinere cessa la sua validità al
termine della sessione di luglio.
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
5
Materiale didattico (1)
•
Testi consigliati:
David A. Patterson, John L. Hennessy,
Computer Organization & Design. The hardware/software interface (third
edition)
Morgan Kaufmann Publishers.
David A. Patterson, John L. Hennessy,
Struttura e progetto dei calcolatori. L’interfaccia hardware-software
seconda edizione Zanichelli condotta sulla terza edizione americana
Zanichelli, 2006, Bologna.
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
6
Materiale didattico (2)
•
Testi consultabili:
David A. Patterson, John L. Hennessy,
Computer Organization & Design. The hardware/software interface (second
edition)
Morgan Kaufmann Publishers.
David A. Patterson, John L. Hennessy,
Struttura, organizzazione e progetto dei calcolatori
Jackson libri, 1999, Milano.
•
Documentazione varia è reperibile ai siti:
http://www.elsevierdirect.com/index.jsp
http://www.unibg.it
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
7
Argomenti del corso
•1. Architettura dei calcolatori
•2. Architettura di una CPU
•3. Linguaggio assemblativo
•4. L’aritmetica dei calcolatori
•5. L’ambiente di sviluppo dei progetti
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
8
Architettura di un computer
Application
Operating
System
Compiler
Firmware
Instr. Set Proc. I/O system
Instruction Set
Datapath & Control
Digital Design
Circuit Design
Layout
Diversi livelli di astrazione
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
9
Rappresentazione delle istruzioni
Linguaggio ad alto
livello (HLL)
temp = v[k];
v[k] = v[k+1];
Compilatore
v[k+1] = temp;
lw $15,
lw $16,
sw $16,
sw $15,
Linguaggio Assembly
Assemblatore
Linguaggio Macchina
0000
1010
1100
0101
1001
1111
0110
1000
1100
0101
1010
0000
0($2)
4($2)
0($2)
4($2)
0110
1000
1111
1001
1010
0000
0101
1100
1111
1001
1000
0110
0101
1100
0000
1010
1000
0110
1001
1111
Interpretazione macchina
Segnali di controllo
°
°
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
10
Struttura del software (1)
•
I linguaggi HLL permettono
– progettazione in linguaggio ~ a quello naturale
– una maggior concisione rispetto al linguaggio macchina
– indipendenza dal calcolatore
•
Riutilizzo routine frequentemente impiegate
•
Un programma separato che supervisiona l’utilizzo della macchina da parte
dei programmi utente
sistema operativo
•
Software di sistema= insieme di programmi che forniscono servizi (Sistema
Operativo, compilatori, assemblatori)
•
Software applicativo=programmi utente o mirati all’utente (editors,
spreadsheet)
librerie di subroutine
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
11
Struttura del software (2)
Sw applicativo
SOFTWARE
Software appl.
Software sistema
HW
Word
Sw sistema
Compilatori
Memoria
virtuale
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
Sist. Op.
File
System
Assembl.
I/O
drivers
12
Architettura del Set di Istruzioni
Un importante livello di astrazione
– interfaccia fra hardware e software di basso livello
– standardizza il formato delle istruzioni e i pattern di bit a livello di
linguaggio macchina
– vantaggi: differenti implementazioni della stessa architettura
– svantaggi: talora impossibilità di avvalersi di innovazioni tecnologiche
Architetture moderne di set di istruzioni
– Digital Alpha
(v1, v3)
– HP PA-RISC
(v1.1, v2.0)
– Sun Sparc
(v8, v9)
– SGI MIPS
(MIPS I, II, III, IV, V)
– Intel
(8086,80286,80386,
80486, Pentium, MMX, ...)
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
1992-97
1986-96
1987-95
1986-96
1978-96
13
Di cosa ci occuperemo
•Le istruzioni: il linguaggio dei calcolatori
•L’aritmetica dei calcolatori
•Il processore: unità aritmetica ed unità di controllo
•Assemblatori, linker ed il simulatore SPIM
•Fondamenti sulla progettazione di reti logiche
•Realizzazione dell’unità di controllo
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
14
Architettura della macchina di Von Neumann
Unità di ingresso
Programmi e
dati
Memoria
Unità di uscita
ALU
Risultati
Unità di
controllo
CPU
Unità centrale
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
15
Unità Centrale
A
D
ALU
D
S
S
B
B
U
U
S
S
D
controllo
A
T
MAR
B
U
A
Unità di
R
E
C
O
N
T
R
O
L
CPU
MBR
Memoria ROM
MBR
MAR
Memoria RAM
S
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
16
Microprocessori e Bus
•
I microprocessori sono dispositivi elettronici che implementano in un
unico circuito integrato le funzioni di una intera CPU. I microprocessori
attuali hanno bus dati a 8, 16, 32, 64 bit.
•
Il bus dati (data bus) esprime la capacità di elaborazione del processore
(quanti bit possono essere elaborati in parallelo)
•
Il bus indirizzi (address bus) esprime la capacità di memorizzazione del
processore (2m celle di memoria, se m è il numero dei bit del bus)
•
La capacità di indirizzamento indica il numero di celle diverse cui si può
accedere:
210 Byte = 1024 byte = 1 KByte
220 Byte = 1048576 byte = 1 Mbyte
230 Byte = 1073741824 byte = 1 GByte
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
17
Un Esempio
•
Variazione nella precisione di misura di 1 Kg. in un sistema di pesatura
basato su microprocessori con diversa dimensione del bus dati
Numero di bit bus dati
4
8
16
Dati rappresentabili
24=16
28= 256
216= 65536
Precisione relativa
6.25%
~3.9 ‰
~0.015‰
Precisione max.
62.5 gr
~3.9 gr
~0.015 gr
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
18
Osservazioni
•
I microprocessori a 8 bit di dato hanno tipicamente bus indirizzi a 16 bit
con capacità di indirizzamento di 64 KB
•
I microprocessori a 16 bit di dato hanno tipicamente bus indirizzi a 20-24
bit con capacità di indirizzamento di 1-16 MB
•
I microprocessori a 64 bit di dato hanno bus indirizzi a 64 bit con capacità
di indirizzamento fino a circa 1019 byte
•
I microprocessori Single Chip riuniscono in un unico circuito integrato più
di uno dei blocchi costituenti un microcalcolatore (eventualmente tutti).
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
19
Architettura di una CPU
BUS DATI ESTERNO
BUS DATI INTERNO
ACC
SP
PC
R
R
F
…. e
g
g
L
e
0
N
A
G
ALU
C
D
I
O
E
N
N
C
S
T
O
T.
R.
D.
R
E
BUS INDIRIZZI INTERNO
BUS IND. ESTERNO
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
G.
20
Ciclo di esecuzione di un’istruzione
•FETCH (prelevamento dell’istruzione)
•DECODIFICA
•ESECUZIONE
La memoria (ROM e RAM) contiene il programma e i dati sui quali opera la
CPU. Il Program Counter (PC) contiene l’indirizzo della cella di memoria con la
prossima istruzione da eseguire.
FORMATO DELLE ISTRUZIONI
Codice Operativo
Campo che caratterizza
le varie istruzioni
Operando 1
Operando 2
Gli operandi possono
essere 0, 1, 2
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
21
Sequenza di operazioni elementari per
l’esecuzione di ogni singola istruzione
•FETCH: vengono letti i campi che costituiscono l’istruzione:
1)
(PC)→MAR
2)
((MAR)) →MBR; (PC)+1 →PC
3)
(MBR) →IR
I passi 1, 2, 3 permettono di caricare in IR (instruction register) il codice
operativo (OPCode) dell’istruzione corrente. Passi analoghi permettono di
caricare in opportuni registri della CPU gli operandi presenti nell’istruzione. In
tal caso, nel passo 3 la destinazione del dato proveniente dalla memoria non è
più IR, ma opportuni registri.
•DECODE: viene identificata l’istruzione corrente sulla base dell’OPCode
•EXECUTE: è diversa a seconda del tipo di istruzione. In pratica consiste
nell’inviare comandi e dati alle unità interessate.
•MAR= Memory Address Register; MBR: Memory Buffer Register
•Notazione: (X) →Y significa: “Il contenuto del registro X viene trasferito nel
registro Y
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
22
Formato delle istruzioni
•
•
•
•
•
Le istruzioni sono codificate da stringhe di bit.
Una volta caricata nell’IR, un’istruzione deve essere decodificata ed
eseguita. A tal scopo l’unità di controllo deve conoscere:
codice operativo
sorgente: dati su cui operare
destinatario: dove porre il risultato e, se sorgente e destinazione sono in
memoria, la modalità di indirizzamento
Codice Operativo
Sorgente
Destinazione Mod. indirizzamento
Esempio 1: Somma tra il contenuto del registro R2 e il contenuto
dell’accumulatore. Il risultato va nell’accumulatore
FORMATO
codice operativo
FETCH
come in precedenza
ESECUZIONE
(R2)+(ACC)→ACC
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
23
Esempio di esecuzione di istruzioni complete
Esempio 2: somma tra il contenuto della cella di memoria il cui indirizzo è
specificato nell’istruzione ed il contenuto dell’accumulatore; il risultato va
nell’accumulatore
•FORMATO: codice operativo+operando
•FETCH:
1) (PC)→MAR
2) ((MAR)) →MBR; (PC)+1 →PC
3) (MBR) →IR
4) (PC)→MAR
5) ((MAR)) →MBR; (PC)+1 →PC
6) (MBR) →Rn
•EXECUTE:
1) (Rn) →MAR
2) ((MAR)) →MBR
3) (MBR) →Rn
4) (Rn)+(ACC) →ACC
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
24
Esempio di esecuzione di istruzioni complete
Esempio 3: saltare all’istruzione che è memorizzata nella cella il cui indirizzo
è specificato all’interno dell’istruzione corrente
•FORMATO: codice operativo+operando
•FETCH:
1) (PC)→MAR
2) ((MAR)) →MBR; (PC)+1 →PC
3) (MBR) →IR
4) (PC)→MAR
5) ((MAR)) →MBR; (PC)+1 →PC
6) (MBR) →Rn
•EXECUTE:
1) (Rn) →PC
Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2015/2016
25