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à

Non sono previste propedeuticità

Prerequisiti

Per il proficuo raggiungimento degli obiettivi formativi del corso, è auspicabile che lo studente possieda alcune conoscenze pregresse relative ai fondamenti dell'informatica e della programmazione, nonché ai principi base del ragionamento logico e ipotetico-deduttivo, che costituiscono prerequisiti essenziali per la comprensione e l'applicazione consapevole dei contenuti trattati.

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

Da concordare con il docente inviando una email a: antonino.longominnolo@uniroma5.it

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