Anno accademico 2023-2024

ARCHITETTURA DEGLI ELABORATORI E LABORATORIO

Docenti

Federico Fontana
Andrea Gulli
Ettore Ritacco
Anno di corso
1
Totale crediti
12
Periodo didattico
Primo Periodo
Tipologia
Base
Prerequisiti. Per seguire il corso non sono necessari particolari prerequisiti.
Metodi didattici. Lezioni frontali, esercitazioni, attività di laboratorio.
Modalità di verifica. L’esame si compone di una prova scritta che prevede la risposta a una serie di domande (tipicamente 10 o 14, a seconda del corso di studi)

ispirate agli esercizi e all’attività di laboratorio sostenuta durante il corso.

Eccezionalmente agli studenti può essere chiesto di sostenere una prova orale supplementare oppure sostitutiva.

I criteri di assegnazione del voto sono reperibili in https://www.uniud.it/it/didattica/corsi/area-scientifica/scienze-matematiche-informatiche-multimediali-fisiche/laurea/informatica/studiare/criteri.pdf

Altre informazioni. La preparazione non può prescindere da una conoscenza approfondita dei

lucidi presentati a lezione e dal completamento degli esercizi proposti in classe, entrambi reperibili nel web e-learning di ateneo. Video delle lezioni vengono riprese e rese accessibili attraverso la piattaforma MS Teams.

Obiettivi formativi
Scopo del corso è descrivere la struttura e il funzionamento dei calcolatori nelle loro diverse componenti, illustrando le principali tecnologie utilizzate. Il percorso didattico inizia con lo studio delle parti

elementari che costituiscono un computer e considera componenti sempre più complesse fino ad arrivare allo studio di architetture complete di calcolatori.

Argomenti trattati sono: la progettazione di semplici circuiti logici, le codifiche ì hardware dell’informazione, la struttura del processore, il

collegamento e la comunicazione tra periferiche e processore, il tema della memoria (cache, centrale, di massa, virtuale), la programmazione in

linguaggio assembly.

Il corso è accompagnato da una parte di laboratorio in cui lo studente si esercita nella

progettazione di circuiti logici e nella programmazione in linguaggio macchina.

Capacità relative alle discipline

1.1 Conoscenza e capacità di comprensione: dopo

aver superato l’esame si ritiene che lo studente sia in grado di comprendere il funzionamento

dell’hardware e conoscere i fattori che influenzano le prestazioni dei calcolatori.

1.2 Conoscenza e capacità di comprensione applicate: l’attività di laboratorio permette allo studente di impratichirsi con la progettazione a basso livello, sia di semplici sistemi digitali, che di programmi scritti in linguaggio macchina, ossia

eseguibili direttamente dal calcolatore.

Capacità trasversali/soft skills

2.1 Autonomia di giudizio: lo studente acquisisce gli strumenti per poter valutare e scegliere in maniera ponderata l’architettura hardware da

utilizzare.

2.2 Abilità comunicative: lo studente impara l’esatto significato dei vari termini usati per descrivere le caratteristiche e le specifiche di un calcolatore ed usarle in maniera appropriata.

2.3 Capacità di apprendimento: il corso mira a

fornire allo studente un quadro concettuale sufficientemente rigoroso completo da permettergli di affrontare con sicurezza lo studio dettagliato delle varie componenti di un

calcolatore.

Contenuti
– Introduzione: breve storia delle architetture degli elaboratori, concetti base, livelli d’astrazione nell’analisi di un’architettura.

– Reti logiche: porte logiche elementari, algebre booleane, circuiti combinatori d’uso frequente, progettazione circuiti sequenziali, chip di

memoria.

– Rappresentazione delle informazioni: sistema di numerazione binario,

conversione tra basi, rappresentazione di numeri interi e reali, rappresentazione di caratteri, codici di rilevamento errori.

– Processore: ciclo di fetch-decode-execute, data path, unità di controllo, pipeline, processori superscalari, predizione di salto, esecuzione fuori ordine, cenni su meta-processore MIC, Intel Core e AMD ARM.

– Linguaggio Macchina: evoluzione dei linguaggi macchina, tipi di dati,

indirizzamento, tipi d’istruzioni, formati istruzioni.

– Input/Output: I/O programmato, interruzioni, accesso diretto alla memoria, dispositivi periferici, collegamenti mediante bus, meccanismi

d’arbitraggio e incronizzazione del bus, architettura di un tipico PC, bus PCI, SCSI, USB.

– Gerarchie di Memoria: meccanismi di funzionamento della memoria cache e della memoria virtuale, paginazione e segmentazione, MMU.

– Programmazione assembly. Architettura ARM. Istruzioni ARM: assegnamento, salto, aritmetiche-logiche. Modalità d’indirizzamento, chiamate di funzione, direttive all’assemblatore.

– L’architettura della scheda Arduino e la sua programmazione in

Assemply per applicazioni IoT,

Attività di Laboratorio.

Durante il corso verranno svolte 24 ore di laboratorio distribuite su 12 lezioni, dove verrà approfondita la progettazione di circuiti digitali e la programmazione in linguaggio assembly, adoperando i software Logisim e ARMsim.

Programma di laboratorio:

– L1: Introduzione al laboratorio e installazione applicazioni

– L2: Circuiti combinatori in Logisim

– L3: Decoder e multiplexer

– L4: Adder

– L5: Progettazione di circuiti sequenziali 1

– L6: Progettazione di circuiti sequenziali 2

– L7: Progettazione di circuiti sequenziali 3

– L8: Assembly ARM: introduzione ad ARMSim, esempi di aritmetica

– L9 Assembly ARM: array

– L10: Assembly ARM: chiamata di procedure

– L11: Assembly ARM: accesso a file

– L12: Assembly ARM: creazione e gestione di semplici liste.

Testi di riferimento
Andrew S. Tanenbaum; Todd Austin. Computer Architectures (recent editions). Pearson.