Ingegneria Informatica e Intelligenza artificiale L-8
Reti di calcolatori
| Settore scientifico disciplinare | Numero crediti formativi (CFU) | Docente |
| ING-INF/03 (IINF-03/A) | 9 | Antonino Longo Minnolo |
Obiettivi Formativi
L'insegnamento si propone di fornire agli studenti le nozioni fondamentali dell'architettura dei calcolatori e delle reti, partendo dalla rappresentazione dell'informazione e dalla programmazione in linguaggio Assembly MIPS, per arrivare alla progettazione delle reti logiche e dell'unità di elaborazione (CPU) e ai concetti di base delle reti di calcolatori.
Vengono trattati la rappresentazione dei dati e l'aritmetica del calcolatore, il linguaggio Assembly MIPS con i relativi formati e modalità di indirizzamento, la traduzione dei costrutti di alto livello, l'algebra di Boole e le reti combinatorie e sequenziali, la progettazione dell'ALU e della CPU MIPS a ciclo singolo con la relativa unità di controllo, i dispositivi di memorizzazione e la gerarchia di memorie. Nella parte conclusiva si affrontano i concetti fondamentali delle reti di calcolatori: ritardi e throughput, incapsulamento nella suite TCP/IP e sicurezza in Internet.
Al termine del corso lo studente avrà acquisito:
- Comprensione della rappresentazione dell'informazione e dell'aritmetica del calcolatore: capacità di operare con le diverse notazioni numeriche e di codifica.
- Padronanza del linguaggio Assembly MIPS: capacità di scrivere e tradurre programmi utilizzando istruzioni, formati e modalità di indirizzamento.
- Conoscenza della progettazione hardware e dei fondamenti di rete: comprensione delle reti logiche, dell'architettura della CPU, della gerarchia di memorie e dei concetti di base delle reti di calcolatori.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione
Lo studente dovrà aver acquisito conoscenza e capacità di comprensione:
- dei sistemi di rappresentazione dell'informazione (notazione posizionale, complemento a 2, virgola mobile IEEE 754, codifiche dei caratteri) e dell'aritmetica del calcolatore.
- del linguaggio Assembly MIPS, dei suoi formati (Tipo R e Tipo I), delle modalità di indirizzamento e della traduzione dei costrutti di alto livello e delle chiamate di procedura.
- dei principi di progettazione delle reti logiche combinatorie e sequenziali, dell'ALU, della CPU MIPS a ciclo singolo, della gerarchia di memorie e dei concetti fondamentali delle reti di calcolatori.
Capacità di applicare conoscenza e comprensione
Lo studente dovrà sviluppare la capacità di applicare le conoscenze acquisite, con particolare riferimento:
- alla conversione tra le diverse notazioni numeriche e alla gestione dei tipi di dato primitivi, degli array e delle stringhe.
- alla scrittura e alla traduzione di programmi in Assembly MIPS, incluse strutture di controllo, cicli e chiamate di procedura.
- all'analisi e alla sintesi di reti combinatorie e sequenziali e all'interpretazione del funzionamento della CPU e della gerarchia di memorie, nonché al calcolo di ritardi e throughput nelle reti di calcolatori.
Abilità di giudizio
Lo studente dovrà aver sviluppato capacità di giudizio critico nell'analisi e nell'applicazione dei concetti affrontati. In particolare, dovrà essere in grado di:
- valutare la correttezza delle soluzioni adottate nella scrittura di un programma Assembly o nella progettazione di una rete logica, identificando eventuali errori e proponendo alternative più appropriate.
- interpretare criticamente il comportamento dell'hardware e i risultati dell'esecuzione delle istruzioni, verificandone la coerenza con le specifiche dell'architettura.
- scegliere le rappresentazioni, le tecniche e le soluzioni progettuali più idonee in funzione delle caratteristiche del problema.
Abilità di comunicare
Lo studente svilupperà, anche attraverso l'interazione con i docenti, la capacità di:
- esprimere in modo chiaro e rigoroso concetti e procedure relativi all'architettura dei calcolatori e alle reti, utilizzando la terminologia tecnica appropriata.
- redigere documentazione tecnica su esercitazioni, progetti e analisi di programmi e circuiti, presentando codice e risultati in forma comprensibile e strutturata.
- comunicare efficacemente con interlocutori tecnici e non tecnici, spiegando i principi fondamentali e le applicazioni pratiche dell'architettura dei calcolatori e delle reti.
- utilizzare strumenti informatici e di simulazione per rappresentare architetture hardware e scenari di rete, facilitando la comprensione dei fenomeni studiati.
Capacità di apprendimento
Lo studente dovrà aver acquisito le basi necessarie per:
- saper individuare autonomamente fonti di approfondimento (libri, articoli, documentazione ufficiale, risorse digitali) per consolidare e ampliare le conoscenze di architettura dei calcolatori e reti.
- essere in grado di aggiornare le proprie competenze in relazione all'evoluzione delle architetture, dei linguaggi e delle tecnologie di rete.
- applicare metodi di studio e di problem solving per affrontare nuovi problemi legati alla programmazione a basso livello e alla progettazione hardware.
- collegare le conoscenze acquisite con altre discipline informatiche, favorendo un apprendimento interdisciplinare e continuo.
Programma del Corso
Modulo 1 – Rappresentazione dell'informazione e aritmetica del calcolatore
- Notazione posizionale pesata, sequenze binarie e metodi di conversione di base.
- Notazione in modulo e segno e notazione in complemento a 2: regole, addizione, intervallo dei valori e proprietà (opposto, sottrazione, overflow, estensione del segno).
- Codifica dei caratteri (ASCII e Unicode) e tipi di dato carattere e stringa.
- Notazioni in virgola fissa e virgola mobile; lo standard IEEE 754 in singola e doppia precisione.
- Notazioni ottale ed esadecimale.
Modulo 2 – Il linguaggio Assembly MIPS
- Sintassi dell'Assembly MIPS e architettura dei registri.
- Istruzioni aritmetiche (add, addi, sub) e istruzioni logiche e di shift (and, or, sll, srl).
- Formato di Tipo R e indirizzamento tramite registro; Formato di Tipo I e indirizzamento immediato.
- Istruzioni di trasferimento dati (lw, sw) e indirizzamento tramite base e offset; gestione degli array.
- Istruzioni di salto condizionato (beq, bne) e incondizionato (j); indirizzamento relativo al PC e pseudodiretto.
- Istruzioni di confronto (slt, slti) e interi unsigned (addu, subu, sltu); operandi immediati e costanti a 32 bit.
Modulo 3 – Programmazione in Assembly MIPS
- Traduzione dell'istruzione if-else e dei cicli for e while.
- Gestione della chiamata di procedura con le istruzioni jal e jr; annidamento e call-stack.
- Istruzioni Load e Store per byte e half word; tipi di dato primitivi per gli interi.
- Gestione dell'elemento di un array con indice variabile e delle stringhe come array di caratteri.
- Esercizi sulla gestione di array e stringhe in Assembly MIPS.
- Istruzioni MIPS in virgola mobile per i tipi float e double.
- Compilatori e Assembler, Linker e Loader, Bytecode e Java Virtual Machine.
Modulo 4 – Algebra di Boole e reti combinatorie
- Algebra di Boole e porte logiche.
- Espressioni e funzioni booleane; forme canoniche ed espressione somma di prodotti.
- Reti combinatorie: analisi (dalla rete alla funzione) e sintesi (dalla funzione alla rete) con tecniche di minimizzazione.
- Multiplexer e decodificatore.
Modulo 5 – Progettazione dell'ALU
- Sommatore completo a un bit e ALU a un bit per AND, OR, ADD.
- ALU a 32 bit per AND, OR, NOR, ADD, SUB e la pseudoistruzione NOT.
- ALU a 32 bit per BEQ e segnale di overflow; simbolo grafico dell'ALU.
Modulo 6 – Reti sequenziali e progettazione della CPU MIPS
- Reti sequenziali, segnale di clock e cenni sulla realizzazione.
- Introduzione all'implementazione della CPU MIPS: la CPU come rete sequenziale e implementazione a ciclo singolo.
- Prelievo dell'istruzione, aggiornamento del Program Counter e lettura dei registri.
- Esecuzione e segnali di controllo per le istruzioni di Tipo R, di trasferimento dati (lw, sw) e di salto condizionato (BEQ).
- Unità di controllo MIPS a ciclo singolo: segnali e implementazione.
Modulo 7 – Dispositivi di memorizzazione e gerarchia di memorie
- Dispositivi di memorizzazione: latch SR, flip-flop SR e flip-flop D.
- Implementazione dei registri del processore: circuiti di lettura e scrittura; rilevazione e correzione di errori.
- Miglioramento delle prestazioni: gerarchia di memorie, tempo di hit e penalità di miss, memoria virtuale.
Modulo 8 – Fondamenti di reti di calcolatori
- Ritardi nelle reti a commutazione di pacchetto: ritardo di nodo, elaborazione, accodamento, trasmissione e propagazione; perdita di pacchetti.
Testi consigliati
Struttura e progetto dei calcolatori Patterson
Hennessy Reti di calcolatori e Internet Kurose & Ross
Modalità di accertamento dei risultati di apprendimento acquisiti dallo studente
L'acquisizione dei risultati di apprendimento previsti viene accertata attraverso: le attività di autovalutazione associate ad ogni video-lezione, i test associati alla didattica sincrona, la prova intermedia online e la prova finale in presenza.
Test di autovalutazione: i test di autovalutazione permettono allo studente di monitorare la comprensione degli argomenti somministrati ed eventualmente di attivarsi per colmare le lacune.
Test post-didattica sincrona: I test successivi alla didattica sincrona verificano l’applicazione delle conoscenze in situazione guidata e la capacità di apprendimento autonomo. Consentono di osservare l’uso operativo dei saperi e la capacità di trasferimento.
La prova intermedia online e la prova finale in presenza: consente una verifica sistematica e standardizzata delle conoscenze disciplinari e della comprensione concettuale e permette di valutare l’autonomia di giudizio, ovvero la capacità di formulare valutazioni motivate e sostenere argomentazioni critiche.
Modalità di esame
La valutazione finale avverrà nelle date d’appello previste dall’Ateneo e pubblicate in piattaforma, in modalità scritta online, scritta strutturata in presenza e/o orale.
Propedeuticità
Prerequisiti
Organizzazione didattica
Modalità di erogazione del corso
Sono comprese videolezioni e attività di didattica interattiva.
I contenuti delle videolezioni sono parte integrante del programma d'esame, ma per numerosi argomenti sono necessari ulteriori approfondimenti ed è raccomandata la consultazione dei libri di testo indicati dai docenti.
Attività didattiche previste
Le attività di didattica, suddivise tra didattica erogativa (DE) e didattica sincrona (DS), saranno costituite da 7 ore per CFU e ripartite secondo una struttura di almeno 2,5 ore di DE (5 ore, tenuta in considerazione la necessità di riascolto) e di 2 ore di DS per ciascun CFU.
Attività didattica erogativa (45 ore)
- 45 lezioni frontali, videoregistrate, della durata di circa 30 minuti ciascuna, sempre disponibili in piattaforma didattica (ogni videolezione corrisponde a 1 ora di didattica erogativa considerando la necessità di riascolto).
Attività didattica sincrona (18 ore)
- Le 18 ore in forma di esercitazioni interattive in aula virtuale, svolte in modalità sincrona, organizzate in date e orari concordati e su tematiche specifiche del programma per gli studenti che preparano l'esame.
- Forum di approfondimento tematici: ha lo scopo di approfondire gli argomenti del corso che risultano di difficile comprensione per gli studenti o che interessano maggiormente. Si tratta di uno strumento che dà a ciascun studente la possibilità di aggiungere un argomento di discussione che verrà successivamente approfondito insieme al docente.
Attività di autoapprendimento
- Test di autovalutazione con domande a scelta multipla, alla fine di ogni lezione.
- Materiale di studio ed esempi di codice inerenti ai contenuti del corso sono disponibili in piattaforma per l'approfondimento degli argomenti trattati da parte degli studenti.
L'articolazione tra DE e DS, per ciascun modulo, sarà organizzata coerentemente con gli obiettivi formativi specifici dell'insegnamento.
Ricevimento studenti
Calendario
Lezioni
Le Istruzioni Aritmetiche dell'Assembly MIPS
Notazione posizionale pesata
Notazione in complemento a 2
Proprietà della Notazione in complemento a 2
Formato di Tipo R per add e sub e Indirizzamento tramite registro
Le istruzioni Logiche e di Shift
Formato di Tipo I per addi e Indirizzamento immediato
Istruzioni lw e sw Assembly MIPS e Indirizzamento tramite Base e Offset
Formato di Tipo I per lw e sw e gestione del Tipo di dato Array
Istruzioni di salto condizionato su uguaglianza e disuguaglianza
Istruzione di salto incondizionato
Traduzione in Assembly MIPS della istruzione if-else e dei cicli for e while
Gestione della chiamata di procedura con le istruzioni jal e jr
Istruzioni di confronto e interi unsigned
Operandi immediati e costanti a 32 bit
Codifica dei caratteri e Tipi di dato carattere e stringa
Istruzioni Load e Store per Byte e half word, e Tipi di dato interi
Gestione dell'elemento di un Array con indice variabile
Esercizi sulla gestione degli Array e delle stringhe in Assembly MIPS
Notazioni in virgola fissa e virgola mobile
Standard IEEE 754 per la virgola mobile in singola e doppia precisione
Istruzioni MIPS in virgola mobile e Notazioni ottale e esadecimale
Compilatori e Java Virtual Machine
Algebra di Boole e porte logiche
Espressioni e funzioni Booleane
Rete Combinatoria e funzione calcolata
Sintesi di una Rete Combinatoria
Multiplexer e Decodificatore
Sommatore completo e ALU a un bit per AND, OR, ADD
ALU a 32 bit per AND, OR, NOR, ADD, SUB
ALU a 32 bit per BEQ e segnale di Overflow
Rete Sequenziale e temporizzazione
Introduzione alla implementazione della CPU dell'Architettura MIPS
CPU MIPS: Prelievo dell'istruzione e lettura dei registri
CPU MIPS: istruzioni Aritmetico-Logiche di Tipo R
CPU MIPS: istruzioni di trasferimento dati lw e sw
CPU MIPS: istruzione di salto condizionato su uguaglianza BEQ
Unità di Controllo MIPS a ciclo singolo
Dispositivi di memorizzazione: Latch e Flip-Flop
Implementazione dei Registri del processore
Ritardi nelle Reti a commutazione di pacchetto
Throughput nelle reti di calcolatori
Incapsulamento nella suite dei protocolli Internet
Sicurezza in Internet
Miglioramento delle prestazioni di un computer: gerarchia di memorie