Dettaglio insegnamento

ARCHITETTURA DEGLI ELABORATORI

MF0199

Insegnamento
ARCHITETTURA DEGLI ELABORATORI
Codice
MF0199
Anno Accademico
2023/2024
Anno regolamento
2023/2024
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
12
Ore di lezione
96
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB - Obbligatoria
Anno
1
Periodo
Primo Semestre, Secondo Semestre
Sede
VERCELLI
Lingua insegnamento
Italiano
Contenuti
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione, delle sue principali componenti hardware e della sua interfaccia verso i livelli software eseguiti su tale hardware. Questo è il primo di due moduli integrati in un unico corso. Esso pone le basi introducendo: la rappresentazione binaria di tutti i tipi di dati (numeri, testo, immagini, grandezze analogiche), i componenti base dell’hardware di un calcolatore e in particolare la struttura interna del processore, l’interazione tra il processore e la memoria centrale e tra il processore e i dispositivi di input/output

---------------------------------
Proseguimento dello studio iniziato nel modulo I dell'architettura di un moderno sistema di elaborazione, strutturato come un insieme di macchine virtuali sovrapposte.
In particolare, in questo modulo si approfondisce la struttura del processore micro-programmato (non reale ma verosimile, introdotto nel modulo I) MIC1, analizzando come realizzare un micro-interprete per il linguaggio macchina IJVM, una semplificazione del byte-code della Java Virtual Machine. Saranno, quindi, illustrate diverse versioni della microarchitettura con prestazioni via via migliori, tramite l’introduzione di varie tecniche di ottimizzazione delle prestazioni dei processori (pipeline, meccanismi di predizione salti, esecuzione fuori ordine, memorie cache).
Segue una panoramica generale sul livello della Instruction Set Architecture (ISA), con lo studio delle caratteristiche dei linguaggi macchina, con un approfondimento sull’ISA dei processori di tipo load/store.
Inoltre, il modulo introduce il concetto di memoria virtuale (proprio del livello del sistema operativo) inquadrandolo nel discorso generale della gerarchia delle memorie e sottolineando similitudini e differenze rispetto ai principi e meccanismi di funzionamento della cache.
Infine, presenta una panoramica sulle architetture parallele, con un approfondimento degli argomenti relative alla coerenza delle memorie cache nei multiprocessori.
Testi di riferimento
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
-----------------------------------------
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
Obiettivi formativi
Il primo obiettivo del corso è far conoscere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini e le basi dell’elaborazione di dati codificati in binario attraverso funzioni logiche, definite per mezzo dell’algebra di Boole, e realizzabili concretamente sotto forma di circuiti logici.
Un altro obiettivo è quello di far conoscere i principali componenti di un sistema di calcolo, far comprendere i principi di base del loro funzionamento e delle interazioni, sottolineando come il rapido sviluppo di nuove tecnologie abbia influito sull’evoluzione dell’organizzazione dei sistemi di calcolo. Ciò contribuisce a sviluppare l’abilità di confrontare le caratteristiche di diverse organizzazioni di sistemi di calcolo (o di componenti di un sistema di calcolo) e valutarne le differenze in termini di costo e prestazioni.
Un altro importante concetto introdotto nel corso è la strutturazione stratificata dei sistemi di calcolo: si vuole sottolineare che tale struttura deriva dall’applicazione del metodo di scomposizione di un problema complesso in sotto-problemi più semplici. Per far comprendere in termini più concreti tale concetto, esso viene esemplificato attraverso l’architettura di un semplice processore (il MIC1, non reale ma realistico): le semplici operazioni che l’architettura di base è in grado di eseguire permettono di realizzare un linguaggio macchina più evoluto (IJVM) tramite la microprogrammazione, questo secondo argomento viene affrontato nel secondo modulo.

------------------------------------------------------------
Scopo del modulo è quello di acquisire conoscenze sull’architettura interna di un processore, le tecniche di ottimizzazione (quali pipeline, meccanismi di predizione salti, esecuzione fuori ordine, memorie cache), comprendendo le differenze delle architetture micro-programmate rispetto a quelle che eseguono direttamente in hardware il linguaggio macchina.
Un secondo obiettivo formativo del modulo è apprendere le caratteristiche generali di un linguaggio macchina (tra cui tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e saper analizzare motivazioni, vantaggi e svantaggi delle diverse scelte.
Inoltre, il modulo ha lo scopo di fornire le conoscenze per comprendere la tecnica della memoria virtuale collocandola nel quadro della gerarchia delle memorie e studiando la sua realizzazione con la tecnica della paginazione
Infine, il modulo ha l’obiettivo di fornire conoscenze di base sulle principali tipologie di architetture parallele, comprendendo le problematiche relative alla gestione della memoria e gli impatti sulla programmazione.
Prerequisiti
nessuno
---------------------------------
Conoscenza dei concetti studiati nel primo modulo del corso.
Metodi didattici
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio (allo scopo di osservare la rappresentazione in memoria di diversi tipi di dato, di disegnare e simulare circuiti logici combinatori e sequenziali, di sperimentare l’esecuzione di semplici programmi in linguaggio macchina tramite un emulatore).
Durante le lezioni viene usato uno strumento (Wooclap) che permette di interagire con gli studenti tramite quiz anonimi e interattivi accessibili tramite smartphone. In questo modo è possibile stimolare la riflessione e rilevare eventuali criticità nel processo di apprendimento.
Per ogni argomento trattato vengono proposti esercizi o quiz formativi. Vengono inoltre proposti incontri a piccoli gruppi alla presenza di un tutor, per svolgere e discutere esercizi (simili a quelli proposti nelle prove scritte).

---------------------------------------------------------
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali.
Alcune tematiche (es. le caratteristiche e la programmazione IJVM, il funzionamento del micro-interprete IJVM su MIC1) sono esemplificate per mezzo di esercitazioni utilizzando un emulatore dell’architettura MIC1 e del relativo micro-interprete di IJVM.
Durante il corso sono proposti esercizi che gli studenti dovranno sviluppare in autonomia per verificare il loro livello di apprendimento e per stimolare lo spirito critico, tramite l’elaborazione di soluzioni originale e/o alternative.
Il corso è integrato da un tutoraggio in cui saranno sviluppate alcune esercitazioni di gruppo.
Altre informazioni
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, esempi di testi d’esame, quiz di autovalutazione, informazioni generali sul corso e avvisi relativi allo svolgimento del corso e sugli esami.
Tramite un forum specifico del corso vengono pubblicate informazioni generali sul corso, avvisi relativi allo svolgimento del corso e informazioni riguardanti gli esami. Inoltre sono attivi forum dove gli studenti possono porre domande sugli argomenti del corso e sugli esercizi proposti, e rispondere a domande pubblicate da altri studenti.

------------------------------------
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, una selezione dei testi d’esame, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi, informazioni generali sul corso ed avvisi relativi allo svolgimento del corso e sugli esami.
Modalità di verifica dell'apprendimento
L’esame può essere scritto oppure orale (di norma è scritto nella prima sessione d’esame dopo lo svolgimento del corso, orale nelle altre sessioni con un basso numero di iscritti). Nel caso il compito sia scritto può essere richiesta una integrazione orale (per esempio nel caso di compito quasi sufficiente per raggiungere la sufficienza piena). Possono essere proposte prove in itinere (come supporto al superamento dell’esame finale) che possono anche assumere la forma di esercizi da svolgere in laboratorio. La prova comprende da quattro a sei domande che possono essere articolate in sottopunti e comprendono anche esercizi di applicazione delle nozioni apprese ad esempi concreti. La prova è superata se si raggiunge un punteggio di almeno il 60% dei punti totalizzabili sull’insieme di domande.
Ciascuno dei due moduli del corso integrato ha un suo esame ed è necessario conseguire un esito sufficiente in ciascun modulo per superare l’esame complessivo. Il voto finale è stabilito in modo collegiale dai docenti dei due moduli, tenuto conto dell’esito ottenuto in ciascun modulo.
---------------------------------------
La verifica dell’apprendimento è svolta in forma scritta; è possibile richiedere una integrazione orale, ad esempio nel caso in cui il voto sia quasi sufficiente.
Il compito include da quattro a sei domande ciascuna delle quali può essere strutturata in più punti. Le domande possono anche assumere la forma di esercizi per valutare la capacità di applicare ad esempi pratici i concetti teorici appresi nel corso.
Ad ogni domanda è assegnato un voto massimo (in genere da 5 a 7). La valutazione tiene conto della correttezza della risposta e del livello di completezza. La sufficienza si ottiene se lo studente dimostra di avere appreso e di sapere applicare gli elementi chiave indirizzati dalla domanda.
Il voto complessivo per la valutazione dell’apprendimento degli argomenti di questo modulo è la somma dei voti ottenuti in ogni domanda.
Programma esteso
Breve panoramica sulla evoluzione storica dei sistemi di calcolo (dalla Macchina Analitica di Charles Babbage ai giorni nostri). Codifica dell’informazione: codifica binaria dei numeri interi con e senza segno. Trasformazione dalla rappresentazione binaria alla rappresentazione ottale ed esadecimale e viceversa. Operazioni aritmetiche con numeri binari. Codifica dei numeri frazionari: virgola fissa e virgola mobile (standard IEEE 754). Operazioni aritmetiche con numeri in virgola mobile. Codifica del testo (ASCII, UNICODE, UTF-8). Codici ridondanti per rilevazione e correzione di errori. Codifica delle immagini (mappa di bit, profondità e risoluzione). Algebra di Boole. Porte logiche AND, OR, NOT, NAND e NOR. Dalle funzioni logiche ai circuiti combinatori (tavole di verità, espressioni in forma normale Somma di Prodotti e Prodotto di Somme, semplificazione applicando le leggi dell’algebra o tramite mappe di Karnaugh). Esempi di circuiti: Decoder, Multiplexer, Half Adder, Full Adder, ALU, ecc. Circuiti sequenziali: Latch, Flip-Flop, registri e memorie. Principali componenti di un calcolatore (CPU, Memoria RAM, Dischi magnetici, RAID, Dischi ottici, BUS, e varie periferiche. Cenni sui principi di funzionamento. CPU: ciclo di fetch-decode-execute. Processori CISC e RISC. CPU con struttura a pipeline (cenni). Introduzione all’architettura MIC1 (si veda il libro di testo).
---------------------------------------------------
Approfondimento della architettura a livelli introdotta nel modulo I: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione Assembler.
Studio di un esempio di architettura micro-programmata che realizza IJVM, una semplificazione del byte-code della Java Virtual Machine, sull’architettura MIC1 introdotta nel primo modulo, mediante lo sviluppo di un micro-interprete implementato nel linguaggio MAL.
Esercitazioni di sviluppo ed esecuzione di programmi in IJVM con un emulatore di MIC1.
Studio delle tecniche per migliorare le prestazioni degli elaboratori, mediante l’introduzione di una unità di prelievo e della pipeline: analisi della loro introduzione nelle architetture MIC2, MIC3 e MIC4.
Tecniche di ottimizzazione delle prestazioni degli elaboratori: memorie cache, predizione dei salti, esecuzione fuori ordine.
Analisi delle caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento, la gestione delle chiamate a procedura. Caratteristiche dell’ISA dei processori di tipo load/store. Studio delle tecniche per l’interazione tra il processore ed i dispositivi di Input/Output.
Analisi e comparazione di architetture e linguaggi macchina di processori reali.
Introduzione della tecnica della memoria virtuale, collocandola nel quadro della gerarchia delle memorie: confronto con la cache ed approfondimento della tecnica di paginazione.
Descrizione di alcuni tipi di architetture parallele, ed analisi della problematica della coerenza delle memorie cache nei multiprocessori.
Risultati di apprendimento attesi
Descrivere l’evoluzione storica dei sistemi di calcolo sottolineando il legame tra evoluzione tecnologica ed evoluzione dell’organizzazione di tali sistemi. Spiegare la rappresentazione posizionale in base r di un numero (intero o frazionario). Descrivere e saper applicare il procedimento per la trasformazione di un numero frazionario senza segno da base 10 a base 2, 8 o 16 e viceversa, e il procedimento per ottenere la codifica binaria in modulo e segno o in complemento a due di un numero intero con segno. Saper eseguire operazioni aritmetiche con numeri binari. Descrivere e saper applicare il procedimento per la trasformazione di un numero frazionario nella sua rappresentazione in virgola mobile secondo lo standard IEEE 754. Enunciare e spiegare le principali leggi dell’algebra di Boole. Saper rappresentare una funzione booleana in varie forme (forme normali SP e PS e semplificate tramite operazioni algebriche o con le mappe di Karnaugh). Saper ricavare un circuito combinatorio corrispondente ad una data espressione booleana. Saper descrivere quale funzione booleana realizza un dato circuito. Saper riconoscere alcuni circuiti logici combinatori e sequenziali di base e descrivere la funzione che realizzano. Descrivere i principali componenti di un sistema di calcolo, indicarne le caratteristiche salienti, i meccanismi di funzionamento e le modalità di interazione. In particolare descrivere le componenti della CPU e il ciclo fetch-decode-execute, la differenza tra architetture CISC e RISC e l’idea alla base delle architetture a pipeline. Descrivere il linguaggio delle microistruzioni del processore MIC1 (istruzioni sia in forma mnemonica che in forma binaria) realizzare alcuni semplici microprogrammi e simularne l’esecuzione.
Acquisire la capacità di aggiornarsi su aspetti specifici e temi più avanzati dell’architettura dei sistemi di calcolo, in particolare facendo ricorso a risorse disponibili on-line.
--------------------------------------------------------------
Sapere spiegare l’organizzazione di un microprocessore e le sue principali
unità funzionali.
Sapere descrivere come è eseguita un’istruzione in questo tipo di
macchina e sapere analizzare le diverse tecniche per l’aumento delle
prestazioni.
Essere in grado di realizzare la conversione dalla rappresentazione
simbolica di istruzioni di linguaggio macchina a livello simbolico, orientato
al programmatore, al formato binario interno alla macchina.
Essere in grado di scrivere brevi programmi in linguaggio macchina (MAL
and IJVM) e di estendere il micro-interprete introducendo nuove istruzioni
Conoscere le caratteristiche generali di un linguaggio macchina (tra cui
tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento).
Comprendere le caratteristiche e le differenze degli ISA nelle architetture
CISC, RISC e load/sore.
Acquisire le competenze necessarie per analizzare e confrontare i
linguaggi macchina esistenti.
Sapere descrivere l’uso della gerarchia delle memorie, comprendendo
l’importanza del principio della località spaziale e temporale. Essere in
grado di applicare le tecniche della cache tra CPU e RAM e della memoria
virtuale tra RAM e memoria secondaria. Comprendere la differenza tra
spazio degli indirizzi (virtuali) e locazioni di memoria (fisica) e le relative
tecniche di corrispondenza.

Moduli

Anno corso 1
Codice MF0200
Insegnamento ARCHITETTURA 1
Docenti Alessio Sacco
SSD INF/01
Sede VERCELLI
Curriculum CORSO GENERICO
CFU 6
Anno corso 1
Codice MF0201
Insegnamento ARCHITETTURA 2
Docenti MIRKO LAI
SSD INF/01
Sede VERCELLI
Curriculum CORSO GENERICO
CFU 6
Ultimo aggiornamento:09-09-2026 00:14:31