Dettaglio modulo

ARCHITETTURA 2

MF0201

Insegnamento
ARCHITETTURA 2
Codice
MF0201
Anno Accademico
2024/2025
Anno regolamento
2024/2025
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
Docenti
CFU
6
Ore di lezione
48
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Lingua insegnamento
Italiano
Contenuti
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 descrive come usare le componenti hardware studiate nel modulo I per progettare il processore micro-programmato (non reale, ma verosimile) MIC1 e del suo linguaggio MAL.
Inoltre, si analizza come realizzare il linguaggio macchina IJVM, una semplificazione del byte-code della Java Virtual Machine, sull’architettura MIC1, utilizzando un micro-interprete scritto in MAL. Sono, quindi, illustrate diverse versioni della architettura MIC1/IJVM 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 anche 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.
Testi di riferimento
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
Obiettivi formativi
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.
Infine, 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
Prerequisiti
Conoscenza dei concetti studiati nel primo modulo del corso.
Metodi didattici
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali.
Alcune tematiche (es. le caratteristiche e la programmazione MAL, 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 da sviluppare in autonomia per verificare il proprio livello di apprendimento e per stimolare il proprio spirito critico, tramite l’elaborazione di soluzioni originale e/o alternative.
Il corso è completato 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, una selezione dei testi d’esame, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi in MAL e IJVM, informazioni generali sul corso ed avvisi relativi allo svolgimento del corso e sugli esami.
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
La verifica dell’apprendimento è svolta in forma scritta.
Il compito include sette 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 3 a 5). La valutazione tiene conto della correttezza della risposta e del livello di completezza. La sufficienza si ottiene se si 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
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.
Analisi di MIC1 e del suo linguaggio di programmazione MAL, visto come un esempio di architettura micro-programmata
Descrizione della realizzazione di IJVM, una semplificazione del byte-code della Java Virtual Machine, sull’architettura MIC1, mediante lo sviluppo di un micro-interprete implementato nel linguaggio MAL.
Esercitazioni di sviluppo ed esecuzione di programmi in MAL ed 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.
Risultati di apprendimento attesi
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.
Ultimo aggiornamento:09-09-2026 00:14:31