Dettaglio insegnamento

ARCHITETTURA DEGLI ELABORATORI 2

MF0792

Insegnamento
ARCHITETTURA DEGLI ELABORATORI 2
Codice
MF0792
Anno Accademico
2026/2027
Anno regolamento
2026/2027
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
Docenti
CFU
6
Ore di lezione
48
Settore Scientifico Disciplinare (SSD)
INFO-01/A - Informatica
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Lingua insegnamento
Italiano
Contenuti
Il corso approfondisce lo studio dell'architettura dei calcolatori moderni, concentrandosi sull'organizzazione della microarchitettura e sul linguaggio macchina, con particolare riferimento all'Instruction Set Architecture (ISA) RISC-V.Gli argomenti d'insegnamento possono essere raggruppati nei seguenti macro moduli:Approccio strutturale e livelli di astrazione: Il concetto di macchina virtuale e la gerarchia dei livelli convenzionali del calcolatore (da L0 a L5). Analisi del divario semantico (semantic gap) tra linguaggi ad alto livello e hardware hardware-cablato. Tecniche di esecuzione inter-livello: traduzione e interpretazione.L'Instruction Set Architecture (ISA) RISC-V: Filosofia e tassonomia delle architetture RISC. Studio sistematico del set di istruzioni base a 32-bit (RV32I) e delle estensioni per il calcolo matematico avanzato (RV32IM). Analisi strutturale dei formati delle istruzioni (R, I, S, B, U, J).Programmazione Assembly e convenzioni ABI: Sintassi e semantica delle istruzioni aritmetico-logiche, di trasferimento dati (load/store) e di controllo del flusso (salti condizionati e incondizionati). Gestione delle procedure e delle funzioni: regole dell'Application Binary Interface (ABI) per l'uso dei registri, invocazione di routine, allocazione e de-allocazione nello stack frame. Introduzione all'interfacciamento con periferiche di Input/Output mediante simulatori software.Organizzazione del processore a ciclo singolo: Modellazione strutturale del datapath logico e dell'Unità di Controllo per l'esecuzione di un sub-set di istruzioni native. Analisi dei cammini critici, dei tempi di esecuzione e dei limiti intrinseci di scalabilità prestazionale dell'approccio a ciclo singolo.Microarchitettura e Pipeline: Il concetto di parallelismo temporale applicato a una pipeline standard a 5 stadi (IF, ID, EX, MEM, WB). Identificazione e tassonomia dei conflitti (Hazard): hazard strutturali, hazard sui dati e hazard sul controllo. Strategie hardware di mitigazione: stalli della pipeline (stalling), reti di propagazione diretta (forwarding/bypassing) e tecniche di predizione dei salti (branch prediction statica e dinamica a 1 e 2 bit).
Testi di riferimento
Testo principale consigliato:David A. Patterson, John L. Hennessy. Struttura e progetto dei calcolatori. Progettare con RISC-V. Zanichelli. Materiale didattico fornito dal docente: Costituiscono parte integrante e fondamentale per la preparazione all'esame tutti i materiali di supporto utilizzati a lezione. Nello specifico:Slide delle lezioni e dispense di approfondimento.Eserciziari e simulazioni di programmazione Assembly RISC-V.Documentazione tecnica integrativa.Tutto il materiale sarà reso tempestivamente disponibile e costantemente aggiornato tramite la piattaforma e-learning di Ateneo (DIR) e all'interno della cartella Google Drive condivisa istituzionalmente con tutti gli account studenti.
Obiettivi formativi
L'insegnamento si inserisce nell'area formativa dei fondamenti tecnologici e infrastrutturali dell'informatica. L'obiettivo principale è fornire alle studentesse e agli studenti una comprensione rigorosa e profonda dell'organizzazione interna dei moderni sistemi di elaborazione, colmando il divario semantico (semantic gap) che separa i linguaggi di programmazione ad alto livello dallo strato hardware-cablato sottostante.Attraverso lo studio dettagliato dell'architettura Instruction Set Architecture (ISA) open-source RISC-V, l'insegnamento mira a far acquisire la sensibilità metodologica necessaria per valutare l'impatto delle scelte di progettazione hardware sulle prestazioni del software.In particolare, il percorso formativo è orientato al raggiungimento dei seguenti traguardi:Comprensione dell'Astrazione: Consolidare la visione del calcolatore come una gerarchia di macchine virtuali e livelli convenzionali, analizzando i meccanismi di traduzione e interpretazione inter-livello.Padronanza del livello ISA e Assembly: Sviluppare la capacità di analizzare, codificare e implementare programmi a basso livello, applicando rigorosamente le convenzioni ABI (Application Binary Interface) per la gestione dei registri, delle procedure e dello stack frame.Analisi della Microarchitettura: Comprendere l'organizzazione interna del processore, analizzando criticamente i limiti strutturali del modello a ciclo singolo e i vantaggi prestazionali derivanti dall'introduzione del parallelismo temporale tramite la tecnica della Pipeline.Ottimizzazione e Risoluzione dei Conflitti: Sviluppare la capacità di identificare i conflitti strutturali, sui dati e sul controllo (Hazard) all'interno di una pipeline a 5 stadi, comprendendo e valutando quantitativamente l'efficacia delle soluzioni hardware e software di mitigazione (stalli, reti di forwarding e predizione dei salti).Al termine dell'insegnamento, le studentesse e gli studenti avranno sviluppato una solida forma mentis ingegneristica e computazionale, essenziale non solo per la comprensione dei moderni processori, ma anche per la progettazione di software ottimizzato, la comprensione dei sistemi operativi e l'interfacciamento con i sistemi embedded.
Prerequisiti
Per poter frequentare l'insegnamento con profitto, viene richiesto alle studentesse e agli studenti il possesso di precise nozioni e competenze matematico-informatiche di base, acquisite preferibilmente nei corsi del primo anno.
In particolare, sono considerate conoscenze preliminari fondamentali:
• Fondamenti di Architettura degli Elaboratori I :
◦ Comprensione dei sistemi di numerazione posizionale (binario, ottale, esadecimale) e delle relative tecniche di conversione aritmetica.
◦ Rappresentazione dei dati in memoria (notazione in complemento a due per i numeri interi relativi, standard IEEE 754 per i numeri in virgola mobile, codifica dei caratteri).
◦ Conoscenza dell'algebra booleana e delle reti logiche fondamentali (porte logiche, circuiti combinatori come multiplexer e decodificatori, e circuiti sequenziali di base come flip-flop e registri).
• Programmazione I:
◦ Padronanza della logica di programmazione strutturata e dei costrutti di controllo del flusso (sequenza, selezione/condizione, iterazione/cicli).
◦ Familiarità con i concetti di variabile, allocazione di memoria, puntatori, strutture dati elementari (array) e modularizzazione del codice (definizione e chiamata di funzioni o procedure).
◦ È fortemente consigliata la conoscenza pregressa di un linguaggio di programmazione ad alto livello orientato alla gestione della memoria (es. Linguaggio C), poiché facilita l'apprendimento delle logiche di mappatura delle variabili e dei registri nello strato Assembly.
Non sono richiesti prerequisiti formali di elettronica, in quanto il processore verrà analizzato esclusivamente dal punto di vista della sua architettura logica e funzionale.
Metodi didattici
L'insegnamento adotta una metodologia didattica integrata che affianca alla trattazione teorica rigorosa una forte componente applicativa, con l'obiettivo fondamentale di stimolare un ruolo attivo e critico delle studentesse e degli studenti nel processo di apprendimento.Il corso si articola nelle seguenti tipologie di attività:Lezioni frontali interattive: Verranno presentati i fondamenti teorici dell'architettura dei calcolatori (ISA RISC-V, datapath, microarchitettura a pipeline, gestione degli hazard). La didattica frontale, supportata da presentazioni multimediali (slide), non sarà unidirezionale: verrà costantemente incoraggiata la partecipazione dell'aula tramite domande, discussioni aperte e l'analisi congiunta di specifiche scelte progettuali hardware.Esercitazioni pratiche e Problem Solving: Ampio spazio sarà dedicato a sessioni pratiche guidate, focalizzate sulla traduzione e scrittura di codice a basso livello (Assembly RISC-V) e sull'applicazione delle convenzioni ABI. Durante queste sessioni, le studentesse e gli studenti saranno chiamati a risolvere problemi di ottimizzazione e di calcolo delle prestazioni (es. gestione dei cicli di clock e stalli nella pipeline), lavorando sia individualmente che in piccoli gruppi per favorire il peer-learning.Utilizzo di simulatori: Per tradurre i concetti teorici in competenze operative, le esercitazioni prevedono l'impiego di simulatori software (architettura RV32) che permetteranno di testare e validare empiricamente il codice Assembly sviluppato, osservando in tempo reale il comportamento dei registri, della memoria e dei dispositivi di I/O.Supporto e-learning e interazione asincrona: La piattaforma di Ateneo (DIR) e la cartella Google Drive condivisa istituzionalmente saranno utilizzate non solo come archivio (repository) per slide, eserciziari e dispense, ma come veri e propri ambienti di apprendimento. Le studentesse e gli studenti (inclusi i non frequentanti) potranno inserire commenti ai documenti condivisi per richiedere approfondimenti, segnalare dubbi o avviare discussioni, garantendo un canale di confronto continuo con il docente.
Altre informazioni
Ricevimento studentesse e studenti: Il docente è costantemente disponibile per chiarimenti sugli argomenti del corso, revisione degli esercizi e chiarimenti sugli elaborati d'esame. Il ricevimento si svolge su appuntamento, da concordare preventivamente via e-mail (scrivendo a: mirko.lai@uniupo.it). Per garantire una rapida gestione delle richieste, le studentesse e gli studenti sono invitati a utilizzare rigorosamente il proprio indirizzo istituzionale e a specificare il seguente oggetto nell'e-mail:ARCHITETTURA DEGLI ELABORATORI 2 25/26 [SEDE DI ALESSANDRIA / VERCELLI] (indicando la propria sede di afferenza). Il colloquio potrà svolgersi in presenza presso lo studio del docente oppure in modalità telematica.Supporto a studentesse e studenti con disabilità o DSA: Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studentesse-e-studenti-condizione-di-disabilit%C3%A0-e-dsa. Gli/Le studenti/esse con disabilità, DSA, BES, una volta preso contatto con lo Staff di Ateneo, possono contattare il docente titolare dell'insegnamento in relazione alla declinazione delle modalità di esame ed in merito agli aspetti didattici.Collaborazione attiva e segnalazione refusi: Il materiale didattico caricato sulla cartella Google Drive istituzionale è configurato per permettere l'inserimento di commenti. Le studentesse e gli studenti (sia frequentanti che non frequentanti) sono caldamente incoraggiati a utilizzare questa funzionalità per richiedere approfondimenti direttamente sui testi o per segnalare eventuali refusi nelle slide o negli eserciziari, contribuendo attivamente al miglioramento continuo del materiale del corso.Integrazione del Corso: Si ricorda che l'insegnamento è strettamente integrato con il modulo di Architettura degli Elaboratori 1. Sebbene i due moduli possano essere frequentati e superati in ordine indipendente, si consiglia fortemente di affrontare i contenuti di Architettura 2 solo dopo aver consolidato i concetti relativi alle reti logiche e alla rappresentazione delle informazioni appresi nel primo modulo.
Modalità di verifica dell'apprendimento
L'esame è finalizzato a verificare il raggiungimento degli obiettivi formativi e dei risultati di apprendimento previsti dall'insegnamento. Le modalità di verifica sono identiche per le studentesse e gli studenti frequentanti e non frequentanti.1. Prova scritta (obbligatoria)La valutazione dell'apprendimento si basa principalmente su una prova scritta espressa in trentesimi. La prova consente di conseguire un punteggio massimo di 26/30; per ottenere una valutazione superiore è necessario sostenere la prova orale facoltativa.La prova scritta si considera superata con una votazione di almeno 18/30 ed è articolata in due parti.Prima parte – Quiz a risposta multipla (18–21 punti)La prima parte consiste in un test di 22 domande a risposta multipla sull'intero programma del corso.Ogni risposta corretta vale 1,1 punti.Le risposte errate o non date valgono 0 punti (non è prevista penalizzazione).Per superare questa parte è necessario rispondere correttamente ad almeno 16 domande.Il punteggio massimo conseguibile è 21 punti.Seconda parte – Domande di teoria ed esercizi (22–26 punti)Le studentesse e gli studenti che superano la prima parte con almeno 19 risposte corrette, accedono alla seconda, composta da 5 quesiti, costituiti da domande aperte, domande a risposta chiusa e/o esercizi. Tale sezione è finalizzata a verificare la comprensione dei contenuti teorici, la capacità di applicare le conoscenze acquisite e le competenze di analisi e problem solving. Il punteggio massimo conseguibile nella prova scritta è 26/30.2. Prova orale integrativa (facoltativa)Le studentesse e gli studenti che conseguono una votazione di 25/30 o 26/30 nella prova scritta possono scegliere di sostenere una prova orale integrativa.L'orale consiste in due domande di ragionamento e/o esercizi, progettati per valutare la capacità di applicare i concetti appresi a situazioni nuove, richiedendo di dedurre la soluzione sulla base delle conoscenze acquisite, anche in contesti non affrontati esplicitamente durante le lezioni.L'esito della prova orale può comportare una variazione del voto finale fino a ±5 punti. Pertanto, il voto conseguito nella prova scritta può essere sia incrementato (fino al conseguimento del 30 e lode, ove ne ricorrano i presupposti) sia ridotto; in quest'ultimo caso, la votazione finale non potrà comunque essere inferiore a 21/30.
Programma esteso
L'insegnamento prevede un'analisi dettagliata e approfondita dei seguenti argomenti, suddivisi per macro moduli tematici:Modulo 1: L'approccio strutturale e i livelli di astrazioneIl concetto di macchina virtuale e di astrazione hardware.La gerarchia dei livelli convenzionali nei moderni sistemi di calcolo: dal livello logico digitale (L0) al livello applicativo (L5).Il divario semantico (semantic gap) tra linguaggi ad alto livello e circuiti hardware.Tecniche di esecuzione dei programmi tra livelli: processi di traduzione (compilazione) e processi di interpretazione. Il ciclo di fetch-decode-execute.Modulo 2: L'Instruction Set Architecture (ISA) RISC-VFilosofia di progettazione delle architetture RISC (Reduced Instruction Set Computer) rispetto a CISC.Il set di istruzioni base a 32-bit di RISC-V: l'architettura RV32I (registri general-purpose x0-x31, program counter).Introduzione alle estensioni per il calcolo matematico hardware (RV32IM): istruzioni di moltiplicazione e divisione.Studio sistematico e strutturale dei formati delle istruzioni native: Tipo R (Aritmetico/Logiche), Tipo I (Immediati e Load), Tipo S (Store), Tipo B (Salti condizionati), Tipo U (Immediati superiori), Tipo J (Salti incondizionati).Tecniche di codifica e decodifica delle istruzioni in formato binario ed esadecimale (linguaggio macchina).Modulo 3: Programmazione in Linguaggio Assembly e convenzioni ABISintassi, semantica e modalità di indirizzamento delle istruzioni Assembly RISC-V:Operazioni aritmetico-logiche (add, sub, and, or, xor, slt e varianti con immediato).Operazioni di trasferimento dati con la memoria centrale (lw, lh, lb, sw, sh, sb).Operazioni di controllo del flusso: salti incondizionati (jal, jalr) e salti condizionati (beq, bne, blt, bge).L'Application Binary Interface (ABI) di RISC-V: regole e convenzioni per l'utilizzo e la preservazione dei registri (argomenti e valori di ritorno a0-a7, registri temporanei t0-t6, registri salvati s0-s11).Gestione hardware/software delle procedure (funzioni): il ruolo del Return Address (ra) e dello Stack Pointer (sp).Allocazione, utilizzo e deallocazione dello Stack Frame per le chiamate a funzione annidate e ricorsive.Mappatura dei costrutti dei linguaggi ad alto livello (if-else, cicli while/for, array e puntatori) in linguaggio Assembly.Modulo 4: Organizzazione della CPU: Il Processore a Ciclo SingoloPrincipio di funzionamento di un processore: i blocchi costruttivi del Datapath (Memoria Istruzioni, Register File, ALU, Memoria Dati, unità di estensione del segno).Analisi della logica dell'Unità di Controllo: generazione dei segnali di controllo globali e locali in base all'Opcode e ai campi Funct3/Funct7 dell'istruzione.Tracciamento del cammino dei dati (datapath) per le singole classi di istruzioni (R-type, Load, Store, Branch).Analisi delle prestazioni: il cammino critico (critical path), il calcolo del tempo di ciclo di clock e i limiti intrinseci di scalabilità dell'architettura a ciclo singolo.Modulo 5: Microarchitettura Avanzata: La Pipeline e la gestione degli HazardIl concetto di parallelismo temporale: introduzione alla struttura della pipeline a 5 stadi (IF: Fetch, ID: Decode, EX: Execute, MEM: Memory, WB: Write-Back).I registri di pipeline inter-stadio (IF/ID, ID/EX, EX/MEM, MEM/WB) e la propagazione dei segnali di controllo.Analisi prestazionale della pipeline: throughput, latenza e calcolo del fattore di accelerazione (speedup).La problematica dei conflitti nella pipeline: tassonomia degli Hazard:Hazard Strutturali: cause e tecniche di risoluzione hardware (separazione delle memorie istruzioni/dati).Hazard sui Dati: dipendenze di tipo RAW (Read After Write). Tecniche di mitigazione: l'inserimento di stalli (stalling/bubble) tramite l'Hazard Detection Unit; la progettazione di reti di propagazione diretta (forwarding/bypassing) tramite la Forwarding Unit. Il caso critico della Load-use data hazard e lo stallo obbligatorio.Hazard sul Controllo: l'impatto delle istruzioni di salto condizionato sulla pipeline. L'operazione di svuotamento (flush) dei registri.Ottimizzazioni hardware per i salti: anticipazione della decisione sul salto allo stadio ID (test di uguaglianza veloce e calcolo dell'indirizzo di branch) e relative ripercussioni sugli hazard sui dati.Predizione dei Salti (Branch Prediction): tecniche statiche (salto preso/non preso) e tecniche dinamiche. Struttura e logica di funzionamento della Branch History Table (BHT): predittori a 1 bit (limiti nei cicli) e predittori saturanti a 2 bit. Cenni sui predittori correlati.Gestione hardware delle eccezioni e delle interruzioni: differenze concettuali e operative tra Interrupt (asincroni) e Trap (sincroni). Meccanismi di salvataggio dello stato della CPU e trasferimento del controllo all'Handler.
Risultati di apprendimento attesi
I risultati di apprendimento sono definiti secondo i Descrittori di Dublino e descrivono le competenze che studenti e studentesse devono acquisire al termine dell’insegnamento.In particolare, il corso mira a sviluppare:Conoscenze e comprensione: capacità di descrivere l’architettura dei calcolatori, l’ISA RISC-V, il funzionamento della CPU (datapath e unità di controllo), le pipeline a 5 stadi e i relativi hazard, distinguendo anche trap e interrupt.Capacità applicative: abilità nel tradurre programmi in Assembly RISC-V, gestire le istruzioni a livello macchina, analizzare il datapath e le prestazioni della CPU, e risolvere problemi legati a pipeline e hazard con calcoli e diagrammi.Autonomia di giudizio: capacità di valutare i compromessi tra diverse architetture, ottimizzare codice Assembly e confrontare strategie di branch prediction in base al comportamento del software.Abilità comunicative: uso corretto e rigoroso della terminologia tecnica e capacità di descrivere in modo chiaro il funzionamento del processore e le sue interazioni con il software.Capacità di apprendimento: sviluppo di un metodo autonomo per studiare architetture moderne (come ARM e x86) e per collegare le conoscenze acquisite ai corsi successivi, in particolare sistemi operativi e sistemi embedded.
Ultimo aggiornamento:09-09-2026 00:14:31