Dettaglio insegnamento

ARCHITETTURA DEGLI ELABORATORI 1

MF0789

Insegnamento
ARCHITETTURA DEGLI ELABORATORI 1
Codice
MF0789
Anno Accademico
2026/2027
Anno regolamento
2026/2027
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
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
Primo Semestre
Sede
ALESSANDRIA
Lingua insegnamento
Italiano
Contenuti
Il corso fornisce le basi per comprendere l'architettura dei calcolatori moderni e come questa possa influenzare le prestazioni del software. Viene analizzata l'impressionante crescita delle prestazioni e la contemporanea riduzione dei costi dei computer, offrendo anche una breve prospettiva storica di questa evoluzione.
Durante il corso, si affrontano concetti chiave come i vari livelli di astrazione utilizzati per analizzare un calcolatore, i compromessi che guidano la scelta delle istruzioni elementari di un processore e l'importanza fondamentale dell'esecuzione parallela a diversi livelli per migliorare le performance. Si comprende anche il ruolo all’interno di un sistema delle memorie, che variano per dimensione, velocità e costo.
Si approfondisce poi la codifica binaria di numeri interi e in virgola mobile e le relative operazioni aritmetiche.
Si introducono l'algebra di Boole, le porte logiche e i circuiti logici sia combinatori che sequenziali.
Infine, il corso mostra come, assemblando questi circuiti, sia possibile creare parte del cammino dei dati di un moderno processore, prendendo come riferimento l'architettura open source RISC-V. L'architettura completa del RISC-V è trattata in un corso successivo.

Testi di riferimento
D.A. Patterson, J.L. Hennessy. Struttura e Progetto dei Calcolatori. Progettare con RISC-V. Seconda Edizione Italiana. Zanichelli 2023
Obiettivi formativi
Il corso introduce alcuni concetti di base che riguardano l’architettura fisica (hardware) dei calcolatori e in particolare dei processori e del sistema delle memorie. Tali concetti si ripropongono anche ad altri livelli nella struttura dei sistemi di calcolo, quindi è importante che siano assimilati nei corsi di base: un obiettivo è riconoscere la presenza di diversi livelli di astrazione e comprendere come a partire da componenti semplici (per esempio le porte logiche, costruite a partire dai transistor) si possano costruire sistemi dotati di funzionalità più evolute, che corrispondono ad insiemi di istruzioni via via più complesse. I diversi modi di comporre gli elementi di base per ottenere le funzionalità desiderate possono condurre a sistemi con prestazioni diverse: vengono quindi introdotte metriche che consentono di confrontare le prestazioni di architetture diverse, ma dotate dello stesso insieme di istruzioni. Considerazioni sull’evoluzione della tecnologia alla base dei sistemi digitali e il suo impatto su costi, prestazioni e affidabilità permettono di comprendere l’impressionante sviluppo e diffusione pervasiva di tali sistemi; è interessante osservare come combinando tecnologie più performanti ma più costose ed altre meno performanti ma meno costose si possano realizzare sistemi con prestazioni soddisfacenti a costi sostenibili: la gerarchia delle memorie ne è un esempio.
Il codice binario trattato dai sistemi digitali può essere utilizzato per rappresentare dati di natura diversa, in una forma che può essere elaborata e memorizzata dai componenti fisici descritti nel corso: viene introdotta la codifica di tipi di dati base (numeri interi e frazionari, testo, immagini), mettendo in relazione la dimensione (in bit) di una rappresentazione e l’ampiezza dell’insieme di valori rappresentabili e/o la precisione della rappresentazione. La comprensione di procedure di codifica, decodifica e di elaborazione dei dati nella rappresentazione binaria consentono di sperimentare operativamente come tali dati possano essere immagazzinati nelle memorie ed elaborati dal processore. Inoltre, la corrispondenza tra espressioni dell’algebra di Boole e i circuiti logici permette di comprendere come tradurre funzioni che operano su variabili binarie nei componenti fisici che compongono i processori e le memorie, e come applicare le leggi di tale algebra per costruire circuiti ottimizzati.
Prerequisiti
Nessuno
Metodi didattici
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali. 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).
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 sul DIR 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 partecipanti.
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-studenti- disabili-e-dsa. Le studentesse e gli studenti con disabilità, DSA, BES, una volta preso contatto con lo Staff di Ateneo, possono contattare la/il docente titolare dell’insegnamento in relazione alla declinazione delle modalità di esame, in merito agli aspetti didattici.
Modalità di verifica dell'apprendimento
L’esame di norma è scritto ma è possibile richiedere l’orale; inoltre una integrazione orale può essere proposta (dopo lo scritto) dalla docente quando sia necessario chiarire qualche punto oscuro dello scritto. Possono essere proposte prove in itinere come supporto al superamento dell’esame finale. 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. Le domande hanno lo scopo di verificare il grado di raggiungimento degli obiettivi formativi. Per raggiungere la sufficienza (18-21) è necessario saper enunciare le definizioni fondamentali, dimostrare di saper applicare alcune semplici procedure di codifica/decodifica di dati in binario, e saper riconoscere i circuiti combinatori o sequenziali di base e indicare le loro funzioni. Per raggiungere una buona valutazione (22-25) occorre anche dimostrare di conoscere metodi di codifica e decodifica di dati più complessi, e di aver compreso la relazione tra numero di bit di una rappresentazione e range di valori rappresentabili o precisione della rappresentazione, inoltre occorre dimostrare di conoscere le metriche relative alle prestazioni e saper confrontare le prestazioni di diversi tipi di processori o di diverse organizzazioni di memorie. Per raggiungere una valutazione ottima (26-29) in aggiunta è necessario saper applicare le leggi dell’algebra di Boole per semplificare una funzione booleana e le regole per trasformarla in un circuito logico, inoltre si deve dimostrare di conoscere i componenti della CPU semplificata introdotta nel corso e spiegare come questi interagiscono durante l’esecuzione di una istruzione in linguaggio assembler (RISC-V). La valutazione eccellente (30-30 e lode) si raggiunge dimostrando una completa assimilazione dei concetti di base, linguaggio tecnico appropriato, precisione nell’esecuzione degli esercizi con dettaglio dei passaggi, completa padronanza della materia dimostrata da un livello di approfondimento adeguato in tutte le risposte e da eventuali osservazioni su criticità e metodi per superarle.
Programma esteso
Gli argomenti trattati nel corso sono principalmente tratti dal libro di testo (specifiche sezioni dei primi 4 capitoli e una appendice). Per alcuni argomenti sono forniti materiali aggiuntivi di aiuto allo studio.
1) Architettura degli elaboratori e principi di progettazione
Tipi di calcolatori e loro caratteristiche. Principi di progettazione delle architetture degli elaboratori: Utilizzo delle astrazioni per semplificare il progetto; Rendere veloci le operazioni più frequenti; Migliorare le prestazioni tramite il parallelismo, la pipeline e la predizione; sfruttare la gerarchia delle memorie.
Dai linguaggi di alto livello al linguaggio macchina.
Principali componenti di un calcolatore e in particolare del processore. Influenza dello sviluppo tecnologico sulle caratteristiche dei calcolatori elettronici. Cenni sull’evoluzione storica dei calcolatori. La macchina di von Neumann e i calcolatori moderni.
Definizione e misura degli indici di prestazione dei processori.
[Rappresentazione digitale dei dati]
Rappresentazione digitale dei dati: bit, byte e multipli. Rappresentazione di interi con e senza segno e operazioni aritmetiche sui numeri binari. Rappresentazione del testo: codici ASCII e Unicode. Numeri in virgola mobile: lo standard IEEE 754.
2) Circuiti logici e Implementazione di un processore
Algebra di Boole: variabili booleane, funzioni booleane di più variabili, espressioni booleane e principali leggi dell’algebra booleana. Le porte logiche. Dalle espressioni booleane ai circuiti logici combinatori. Alcuni circuiti combinatori utili per realizzare una Unità Aritmetico Logica (ALU). Latch e Flip Flop: i circuiti sequenziali e le memorie.
Uno schema semplice di implementazione di un primo processore ispirato al RISC-V.
3) La Gerarchia delle Memorie
La gerarchia delle memorie: le memorie volatili (Registri, Cache, RAM) e non volatili (dischi magnetici e SSD, dischi ottici). Velocità, dimensioni e costo delle memorie.
Risultati di apprendimento attesi
Al termine del corso si sarà in grado di:
Descrivere le caratteristiche dei principali tipi di calcolatori. Descrivere i principi ricorrenti nel progetto dei calcolatori: astrazioni; migliorare le prestazioni ottimizzando le situazioni più frequenti, sfruttando il parallelismo, eseguendo le operazioni in pipeline, anticipando le operazioni attraverso predizioni; impatto delle memorie nelle prestazioni di un calcolatore; come rendere più affidabili i sistemi attraverso la ridondanza. Comprendere le caratteristiche dei linguaggi di programmazione a diversi livelli e come avviene la traduzione da linguaggi di alto livello al linguaggio macchina (con interpreti e compilatori). Spiegare come l’evoluzione tecnologica ha influito su dimensione, costo e prestazioni dei calcolatori, determinando anche la diffusione capillare dei calcolatori. Definire come si possono misurare le prestazioni dei calcolatori. Elencare le principali tappe nella storia dei calcolatori, dalla metà del ‘900 ad oggi.
Comprendere le basi della rappresentazione digitale dei dati (in particolare dei numeri interi con e senza segno, frazionari con virgola fissa o mobile, del testo secondo i principali standard). Definizione di bit, byte, e dei multipli (Kilo, Mega, Giga, Tera). Descrivere le caratteristiche della notazione posizionale per la rappresentazione dei numeri interi (senza segno), saper applicare la definizione con diverse basi (in particolare per le basi 10, 2, 8 e 16). Ricordare gli algoritmi di conversione dei numeri tra basi e saperli applicare. Definire la rappresentazione in modulo e segno e in complemento a due dei numeri interi con segno. Definire la rappresentazione dei numeri frazionari in virgola mobile secondo lo standard IEEE 754. Eseguire operazioni aritmetiche su numeri binari. Comprendere ed esemplificare le conseguenze della rappresentazione dei dati su un numero finito di bit: overflow e underflow. Descrivere gli standard ASCII (base ed esteso) e Unicode di codifica del testo, e i metodi di rappresentazione dei codepoint Unicode (UCS-2, UTF-8, UTF-16). Applicare le diverse codifiche a brevi testi in varie lingue eseguendo esercizi di codifica e di decodifica. Spiegare i metodi Little Endiand e Big Endian di memorizzazione di dati codificati su più byte.
Definire l’Algebra di Boole: variabili, operatori, espressioni booleane, enunciare le principali leggi dell’algebra. Eseguire esercizi di semplificazione di espressioni booleane applicando tali leggi. Descrivere funzioni booleane di n variabili attraverso tavole di verità ed espressioni booleane; applicare i metodi di derivazione delle espressioni booleane in forma normale somma di prodotto o prodotto di somme dalla tavola di verità. Definire insiemi minimi di operatori necessari per descrivere una qualsiasi funzione booleana: dimostrare che ciascuno di tali insiemi minimi permettono di realizzare circuiti equivalenti a tutti gli altri operatori. Definizione delle porte logiche che realizzano gli operatori booleani. Saper ricavare da una espressione booleana il corrispondente circuito logico combinatorio e viceversa. Descrivere alcuni circuiti combinatori base per l’implementazione di CPU: multiplexer, decoder, sommatori, ALU. Descrivere i circuiti con memoria: latch, flip flop; spiegare il loro funzionamento (diretto da un clock) e descrivere come combinarli per ottenere registri o memorie.
Descrivere come collegando circuiti combinatori base e impostando opportuni segnali di controllo in modo coordinato, si possa ottenere un primo prototipi di “cammino dei dati” (data path) capace di eseguire alcune istruzioni fondamentali appartenenti al linguaggio macchina.
Descrivere i diversi livelli della “gerarchia delle memorie”, spiegando le caratteristiche dei diversi tipi di memorie (velocità, capacità, volatilità). Descrivere alcune tecnologie utilizzate per implementare memorie ai diversi livelli della gerarchia.
Ultimo aggiornamento:09-09-2026 00:14:31