Dettaglio insegnamento

ARCHITETTURA DEGLI ELABORATORI

S1363

Insegnamento
ARCHITETTURA DEGLI ELABORATORI
Codice
S1363
Anno Accademico
2024/2025
Anno regolamento
2024/2025
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
Secondo Semestre, Primo Semestre
Sede
ALESSANDRIA
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.
Il corso si articola in due moduli: il primo 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 i principali dispositivi di input/output.
Il secondo analizza più dettagliatamente la struttura interna di uno specifico processore, semplice ma realistico, il suo linguaggio macchina e la relativa implementazione tramite microinterprete; vengono discusse possibili varianti di tale processore, via via più efficienti; viene inoltre presentato il meccanismo di funzionamento della memoria cache e in generale tutta la gerarchia delle memorie di un sistema di calcolo; infine segue un’analisi generale sul livello della Instruction Set Architecture (ISA), con lo studio delle caratteristiche dei linguaggi macchina e dei modi alternativi di realizzare l’interazione tra il processore e i dispositivi di I/O.
Testi di riferimento
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
Obiettivi formativi
Un obiettivo del corso è far conoscere i principali componenti di un sistema di calcolo ed aiutare a comprendere i principi di base del loro funzionamento e delle loro interazioni, che si basano sulla codifica binaria di tutti i tipi di dato elaborati e memorizzati. Un importante concetto introdotto in questo corso è quello di architettura stratificata: lo scopo è far comprendere come essa permetta di realizzare funzioni complesse componendo funzioni più semplici realizzate tramite hardware o tramite software (applicando il metodo di scomposizione di un problema complesso in sottoproblemi più semplici).
Un altro importante obiettivo è far comprendere l’impatto delle conquiste tecnologiche sull’evoluzione dell’organizzazione dei sistemi di calcolo; la riflessione su questi temi serve anche a sviluppare l’abilità di confrontare le caratteristiche di organizzazioni alternative di sistemi di calcolo (o di singoli componenti) e valutarne le differenze in termini di costo e prestazioni.
Entrando un po’ più nei dettagli, si intende mostrare l’architettura interna di un processore, le tecniche di ottimizzazione, le principali caratteristiche dei linguaggi macchina, ed il funzionamento della gerarchia delle memorie, senza trascurare le principali tipologie di architetture parallele (che sollevano nuove problematiche relative alla gestione della memoria e alla programmazione).
Infine il corso intende stimolare lo sviluppo della capacità di aggiornarsi autonomamente su aspetti specifici e temi più avanzati dell’architettura dei sistemi di calcolo.
Prerequisiti
Il corso è introduttivo, quindi non ci sono specifici requisiti. I contenuti del primo modulo sono propedeutici a quelli del secondo, quindi è necessario studiare i due moduli in sequenza.
Metodi didattici
Gli argomenti trattati nel corso sono esposti tramite lezioni frontali ed integrate con esercitazioni pratiche basate sull’uso di vari strumenti software allo scopo di far osservare tramite esempi concreti quanto esposto a lezione. 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, esercizi o quiz on-line utili ai fini dell’autovalutazione, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi. 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.
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 prevede due prove parziali, una per ciascuno dei due moduli. Di norma la prova parziale è in forma di compito scritto, ma può essere proposta 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.
Ciascuno dei due moduli 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.
Programma esteso
Questo corso non prevede conoscenze preliminari, quindi nel primo modulo viene tracciata in breve l’evoluzione storica dei calcolatori sottolineando l’impatto della tecnologia nei passaggi da una generazione alla successiva; in seguito viene introdotte la terminologia di base necessaria per poter affrontare più in dettaglio la descrizione dell’organizzazione interna dei moderni calcolatori, ponendo in risalto la struttura stratificata; in particolare vengono descritti ad alto livello il processore (CPU – Central Processing Unit), la memoria centrale e i dispositivi di I/O. Viene definita la codifica binaria di numeri naturali, numeri interi e frazionari, di testi, di immagini e di grandezze analogiche. Vengono poi introdotti i circuiti logici combinatori e sequenziali dopo aver presentato l’algebra di Boole e aver mostrato la corrispondenza tra espressioni booleane e circuiti composti da porte logiche. Vengono illustrati esempi di circuiti comuni e il loro impiego all’interno di un processore. Vengono anche discusse le modalità di interazione tra i componenti di un calcolatore (cenni sui protocolli dei bus).
Su queste basi prosegue il secondo modulo che approfondisce la struttura del processore (i cui componenti di base sono stati studiati nel primo modulo) sviluppando un esempio completo di processore microprogrammato mostrando come il suo linguaggio macchina possa essere realizzato tramite un microinterprete a partire da un’architettura relativamente semplice ma realistica. Vengono poi discusse versioni successive del processore di esempio che introducono miglioramenti nelle prestazioni, secondo un percorso evolutivo che riflette l’evoluzione dei moderni processori. Con questo approccio vengono presentate le architetture basate su pipeline, e si accenna a ulteriori evoluzioni (come la predizione dei salti, l’esecuzione speculativa e fuori ordine). Vengono anche affrontate le problematiche della differenza di prestazioni tra CPU e memoria centrale, introducendo la cache (nelle sue diverse declinazioni) e discutendone l’efficacia attraverso i concetti di località spaziale e temporale. Segue una panoramica sulle caratteristiche del “linguaggio macchina” (Instruction Set Architecture) approfondendo i linguaggi CISC, RISC, load/store. Viene, quindi, introdotta la tecnica della memoria virtuale, collocandola nel quadro della gerarchia delle memorie. Il modulo si chiude con la descrizione di alcuni tipi di architetture parallele, ed analisi della problematica della coerenza delle memorie cache nei multiprocessori.
Risultati di apprendimento attesi
Modulo 1: Saper descrivere l’evoluzione storica dei calcolatori indicando i principali fattori tecnologici abilitanti. Saper definire la notazione posizionale di numeri interi e frazionari in base r qualsiasi. Descrivere e saper applicare gli algoritmi di trasformazione di numeri interi e frazionari tra basi. Saper distinguere e saper ricavare le diverse codifiche binarie dei numeri interi con segno. Conoscere e saper ricavare la rappresentazione dei numeri frazionari 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 normali SP e PS e semplificare tali forme tramite operazioni algebriche o con le mappe di Karnaugh. Saper definire la tavola di verità delle principali porte logiche. 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 e in particolare della CPU, 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 l’architettura e il linguaggio delle microistruzioni del processore MIC1, realizzare alcune semplici sequenze di microistruzioni e spiegare quale cambiamento di stato causano.
Modulo 2:
Sapere descrivere come è eseguita un’istruzione su MIC1 e sapere analizzare le diverse tecniche per l’aumento delle prestazioni.
Essere in grado di scrivere brevi programmi in linguaggio macchina (IJVM) e di estendere il micro-interprete.
Conoscere le caratteristiche generali dei linguaggi macchina (es. tipi di istruzioni, modalità d’indirizzamento), nelle architetture CISC, RISC e load/store.
Sapere descrivere l’uso della gerarchia delle memorie, comprendendo l’importanza del principio della località spaziale e temporale. Essere in grado di spiegare ed applicare le tecniche di funzionamento della cache e della memoria virtuale tra memoria centrale e memoria secondaria. Comprendere la differenza fra indirizzi virtuali e indirizzi fisici e le tecniche per la traduzione dai primi ai secondi.
Acquisire la capacità di aggiornarsi sulle principali soluzioni di architetture parallele.

Moduli

Anno corso 1
Codice S1365
Insegnamento ARCHITETTURA 2
Docenti MIRKO LAI
SSD INF/01
Sede ALESSANDRIA
Curriculum CORSO GENERICO
CFU 6
Anno corso 1
Codice S1364
Insegnamento ARCHITETTURA 1
SSD INF/01
Sede ALESSANDRIA
Curriculum CORSO GENERICO
CFU 6
Ultimo aggiornamento:09-09-2026 00:14:31