Università degli Studi di Messina
Dipartimento di Ingegneria Elettronica, Chimica e Ingegneria Industriale
Corso di Laurea
Ingegneria Elettronica e Informatica
Anno Accademico 2013/2014
Calcolatori
Introduzione al corso
Dario Bruneo
1
Logistica
Docente: Orario delle lezioni:
Dario Bruneo lunedì
09:00 - 11:30
Studio: venerdì
09:00 - 11:30
Dipartimento DICIEAMA - Blocco Dipartimenti 2 -
7° piano (scala C)
Aula
e-mail:
325
dbruneo@[Link]
tel:
Orario di Ricevimento:
090 397 7343
martedì dalle 15:00 alle 17:00
(nel mio studio)
Calcolatori a.a. 13/14 Dario Bruneo
2
Pre-requisiti
Sono richieste conoscenze di:
Sistemi numerici posizionali
Informatica di base
Programmazione procedurale
Un linguaggio di programmazione ad alto livello (ad es. il linguaggio C)
Precedenze consigliate:
Fondamenti di Informatica
Calcolatori a.a. 13/14 Dario Bruneo
3
Materiale didattico
Libri di testo:
Mano, Kime
“Reti Logiche”
Addison-Wesley
ISBN:88-7192-142-9
Patterson, Hennessy
“Struttura e progetto dei calcolatori. L'interfaccia hardware-software”
Zanichelli
ISBN: 8808091457
Libri per la consultazione:
Katz, Borriello
“Contemporary Logic Design”
Pearson Education
ISBN:0-13-127830-4
Bolchini, Brandolese, Salice, Sciuto
“Reti Logiche”
Apogeo
ISBN:88-503-2229-1
Tanenbaum
“Architettura dei calcolatori, un approccio strutturale”
Pearson Education Italia
ISBN:88-7192-271-9
Stallings
“Architettura ed organizzazione dei calcolatori”
Pearson Education Italia
ISBN:88-7192-201-8
Calcolatori a.a. 13/14 Dario Bruneo
4
Sito internet
[Link]
Slide presentate a lezione
Dispense aggiuntive
Esercizi
Compiti passati
Necessaria la registrazione !!!
Forum
Iscrizione esami
Risultati esami
Comunicazioni
...
Calcolatori a.a. 13/14 Dario Bruneo
5
Programma di massima del corso
Obiettivo:
L'obiettivo principale del corso è l’insegnamento delle conoscenze di base relative alle metodologie per l'analisi ed il progetto dei
circuiti logici e lo studio degli elementi fondamentali di architettura dei sistemi di calcolo.
Argomenti principali (possono subire lievi modifiche)
0000)
La rappresentazione delle informazioni 0101)
Il linguaggio assembler MIPS32
0001)
Algebra di boole e dei circuiti di commutazione 0110)
Il processore MIPS32
0010)
Circuiti logici combinatori 0111)
La memoria
0011)
Circuiti logici sequenziali 1110)
Il sistema I/O
0100)
Architettura dei calcolatori 0110)
I sistemi multicore
Modalità d’esame:
prova scritta + prova orale
Calcolatori a.a. 13/14 Dario Bruneo
6
Calcolatori elettronici
Sistema elettronico digitale programmabile in grado di elaborare informazioni
Struttura semplice
Macchina di Von Neumann (anni ’50)
Computer
Control
Input
Memory
Datapath
Output
Processor
Calcolatori a.a. 13/14 Dario Bruneo
7
Calcolatori elettronici (cont.)
Nonostante la semplicità della struttura di base di un calcolatore, i calcolatori moderni raggiungono un
grado di complessità molto elevato per le numerose tecnologie coinvolte nella loro progettazione
Applicazioni
Compilatori
Sistemi Operativi
Assemblatori
Memoria Processore Sistema di I/O
Reti Logiche (datapath e controllo)
Progettazione chip
Circuiti (elettronica digitale)
Microelettronica
Calcolatori a.a. 13/14 Dario Bruneo
8
Linguaggi e macchine virtuali
I calcolatori sono in grado di eseguire istruzioni in “linguaggio macchina”, un linguaggio poco espressivo ed
abbastanza difficile da comprendere:
10001101001010000000010010110000
linguaggio macchina del processore MIPS32 00000010010010000100000000
100000
10101101001010000000010010110000
Il linguaggio assembler rende la vita “un pò più semplice” ai programmatori
linguaggio assembler MIPS32 lw
$t0, 1200($t1)
add
$t0, $s2, $t0
sw
$t0, 1200($t1)
I linguaggi ad alto livello raggiungono un livello espressivo elevato
linguaggio C
A[300] = h + A[300];
Calcolatori a.a. 13/14 Dario Bruneo
9
Linguaggi e macchine virtuali (cont.)
Com’è possibile eseguire un programma scritto in un linguaggio L1 diverso dal linguaggio L0 “parlato” dal
calcolatore?
Esistono due metodi principali: traduzione e interpretazione
Il primo metodo si basa sulla sostituzione, in una fase iniziale, di ogni istruzione del programma in linguaggio L1 in un insieme di
istruzioni nel linguaggio L0
Il secondo metodo consiste nello scrivere un programma in linguaggio L0 (interprete) che preso in ingresso un programma in linguaggio
L1 lo esegue esaminando un’istruzione alla volta e sostituendola con il corrispondente insieme di istruzioni in L0
Si può estendere questo concetto considerando l’esistenza di un ipotetico calcolatore M1 (macchina
virtuale) il cui linguaggio macchina sia il linguaggio L1.
M0 sarà la macchina virtuale corrispondente al linguaggio L0
Se la macchina M1 potesse essere costruita in modo economico, non ci sarebbe bisogno del linguaggio L0 nè della macchina M0 capace
di eseguire programmi scritti in L0.
Calcolatori a.a. 13/14 Dario Bruneo
10
Linguaggi e macchine virtuali (cont.)
Per rendere efficienti la traduzione e/o Utilizzando tale approccio a livelli si possono
l’interpretazione i due linguaggi L0 e L1 non costruire macchine virtuali sempre più vicine al
devono essere troppo differenti linguaggio orientato agli utenti
Il linguaggio L1 potrebbe risultare ancora lontano
I programmi in Ln sono interpretati
dal linguaggio desiderato Macchina virtuale Mn, da un interprete eseguito da una
macchina inferiore oppure sono
con linguaggio macchina Ln tradotti nel linguaggio macchina di
una macchina inferiore
Si potrebbe allora inventare un nuovo linguaggio
L2 ed una nuova macchina virtuale M2
I programmi in L2 sono interpretati
Macchina virtuale M2, da un interprete eseguito da M1 o
con linguaggio macchina L2 direttamente da M0 oppure sono
I programmi scritti in L2 saranno eseguiti dalla macchina tradotti in L1 o in L0
M2 che li tradurrà o li interpreterà nel linguaggio L1 che a
sua volta verrà eseguito dalla macchina M1 fino ad Macchina virtuale M1, I programmi in L1 sono interpretati
da un interprete eseguito da M0
arrivare alla macchina M0 con linguaggio macchina L1 oppure sono tradotti in L0
Calcolatore reale M0, I programmi in L0 possono essere
eseguiti direttamente dai circuiti
con linguaggio macchina L0 digitali
Calcolatori a.a. 13/14 Dario Bruneo
11
Attuali calcolatori multilivello
Linguaggio: linguaggi ad alto livello C, Java, ecc.
Una macchina il cui linguaggio sia il C o Java
Livello del linguaggio orientato al tipo di problema
sarebbe realizzabile con la tecnologia moderna
sebbene economicamente non conveniente Linguaggio: assembler Traduzione (compilatore)
Livello del linguaggio assemblativo
Lo studio dei calcolatori elettronici moderni può
Linguaggio: chiamate di sistema Traduzione (assemblatore)
essere affrontato mediante un approccio a livelli
Livello del Sistema Operativo
Ogni livello fornisce servizi al livello superiore astraendo i
Linguaggio: linguaggio macchina Interpretazione parziale
dettagli dei livelli più bassi
Livello di architettura dell’insieme di istruzioni (ISA)
Concetti di architettura e organizzazione
Interpretazione (microprogramma)
Linguaggio: datapath, control unit
o esecuzione diretta (hardware)
Il confine tra hardware e software è molto sottile!
Livello di microarchitettura
Nonostante l’indipendenza tra i livelli, è Linguaggio: porte logiche, registri, ... progettazione hardware
necessaria la conoscenza globale del sistema per Livello logico digitale
aumentarne le prestazioni Linguaggio: elettronica, transistor, ... progettazione chip
Livello dei dispositivi
Calcolatori a.a. 13/14 Dario Bruneo
12
Organizzazione del corso
Nella prima parte del corso si inizierà con:
studio delle reti logiche (2 lezioni a settimana)
Livello del linguaggio orientato al tipo di problema
studio della programmazione assembler
(1 lezione a settimana)
Livello del linguaggio assemblativo
Nella seconda parte del corso i due
argomenti confluiranno: Livello del Sistema Operativo
Modulo B
Modulo A
studio dell’architettura del processore
(datapath, unità di controllo)
Livello di architettura dell’insieme di istruzioni (ISA)
Livello di microarchitettura
Esercitazioni verranno svolte
periodicamente durante il corso
Livello logico digitale
Calcolatori a.a. 13/14 Dario Bruneo
13