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
Altro
Modalità di accertamento dei risultati di apprendimento acquisiti dallo studente
L'acquisizione dei risultati di apprendimento previsti viene accertata attraverso la verifica del completamento delle attività di autovalutazione presenti alla fine di ogni sezione dell'insegnamento e attraverso la prova di esame.
I test di autovalutazione permettono allo studente di monitorare la propria comprensione degli argomenti somministrati e, nel caso ci siano delle difficoltà, di attivarsi per colmare le lacune o chiedere ulteriori spiegazioni al docente tramite incontri di didattica interattiva.
Tutti i contenuti trattati nell'ambito dell'insegnamento costituiscono oggetto di valutazione.
La valutazione delle competenze acquisite dallo studente avverrà in forma scritta nelle date d'appello previste dall'Ateneo e pubblicate in piattaforma.
La valutazione prevede l'identificazione del raggiungimento degli obiettivi previsti ed in particolare, per ogni argomento, saranno valutati:
- Il grado di acquisizione della conoscenza degli argomenti trattati (50% del punteggio).
- La capacità di sintesi e correlazione tra i vari argomenti, oltre a una corretta terminologia (25% del punteggio).
- La comprensione e la capacità di interpretazione dei programmi Assembly, dei circuiti e delle soluzioni implementate (25% del punteggio).
Modalità di esame
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 interattiva (DI), 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 DI 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 interattiva (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 DI, per ciascun modulo, sarà organizzata coerentemente con gli obiettivi formativi specifici dell'insegnamento.
Ricevimento studenti
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