Upload
phungdan
View
232
Download
0
Embed Size (px)
Citation preview
1Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
INFORMATICA (modulo di Calcolatori Elettronici)
Ing. Giuseppe Coldani
e-mail: [email protected]
orario delle lezioni: martedì 8.30-12.30
orario di ricevimento: su appuntamento
2Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Calendario delle lezioni e degli esami
• Periodi di lezione
1) 27/2 ÷ 11/4
2) 26/4 ÷ 1/6
• Prova intermedia
19/4 ÷ 22/4
• Sessione d’esame
2 appelli nel periodo 15/6 – 29/7
1 appello nel periodo 21/8 – 16/9
2 appelli a gennaio/febbraio 2018
3Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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.
4Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Esame (2)
Prove in itinere
1a prova: argomenti trattati nel corso delle lezioni del periodo 1
2a prova: argomenti trattati nel periodo 2 + 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.
5Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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.
6Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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.
7Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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
8Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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
9Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Architettura di un computer
Diversi livelli di astrazione
I/O systemInstr. Set Proc.
Compiler
OperatingSystem
Application
Digital Design
Circuit Design
Firmware
Datapath & Control
Layout
Instruction Set
10Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Linguaggio ad alto livello (HLL)
Linguaggio Assembly
Linguaggio Macchina
Segnali di controllo
Compilatore
Assemblatore
Interpretazione macchina
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
lw $15, 0($2)lw $16, 4($2)sw $16, 0($2)sw $15, 4($2)
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
°
°
Rappresentazione delle istruzioni
11Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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 ⇒ librerie di subroutine
• 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)
12Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Struttura del software (2)
HW
Sw sistema
Sw applicativoSOFTWARE
Software appl. Software sistema
Word Compilatori Sist. Op. Assembl.
Memoria File I/Ovirtuale System drivers
13Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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) 1992-97
– HP PA-RISC (v1.1, v2.0) 1986-96
– Sun Sparc (v8, v9) 1987-95
– SGI MIPS (MIPS I, II, III, IV, V) 1986-96
– Intel (8086,80286,80386, 1978-96
80486, Pentium, MMX, ...)
14Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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
15Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Architettura della macchina di Von Neumann
Memoria
ALU
Unità di
controllo
CPU
Unità di ingresso Unità di uscita
Programmi e
dati
Risultati
Unità centrale
16Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
D
A
T
A
B
U
S
Unità Centrale
ALU
CPU
Unità di
controllo
MARMemoria ROM
MBR
MARMemoria RAM
MBR
C
O
N
T
R
O
L
B
U
S
A
D
D
R
E
S
S
B
U
S
17Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Microprocessori e Bus
• I microprocessori sono dispositivi elettronici che implementano in ununico circuito integrato le funzioni di una intera CPU. I microprocessoriattuali 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 delprocessore (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
18Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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
19Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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).
20Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
Architettura di una CPU
SP PC R
e
g
0
R
e
g
N
F
L
A
G
ACCC
O
N
T
R.
D
E
C
O
D.
I
N
S
T.
R
E
G.
BUS DATI INTERNO
….
BUS INDIRIZZI INTERNO BUS IND. ESTERNO
ALU
BUS DATI ESTERNO
21Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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 Operando 1 Operando 2
Campo che caratterizza le varie istruzioni Gli operandi possono
essere 0, 1, 2
22Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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 codiceoperativo (OPCode) dell’istruzione corrente. Passi analoghi permettono dicaricare in opportuni registri della CPU gli operandi presenti nell’istruzione. Intal 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 consistenell’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 nelregistro Y
23Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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
24Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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 4) (PC)→MAR
2) ((MAR)) →MBR; (PC)+1 →PC 5) ((MAR)) →MBR; (PC)+1 →PC
3) (MBR) →IR 6) (MBR) →Rn
•EXECUTE:
1) (Rn) →MAR 3) (MBR) →Rn
2) ((MAR)) →MBR 4) (Rn)+(ACC) →ACC
25Università degli Studi di Bergamo - corso di Informatica (modulo di Calcolatori Elettronici) – a.a. 2016/2017
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 4) (PC)→MAR
2) ((MAR)) →MBR; (PC)+1 →PC 5) ((MAR)) →MBR; (PC)+1 →PC
3) (MBR) →IR 6) (MBR) →Rn
•EXECUTE:
1) (Rn) →PC