Calcolatori Elettronici
Anno Accademico 2022/2023
Informazioni generali
Il corso si terrà in presenza.
Verrà utilizzata la piattaforma Teams per interagire con gli studenti, fornire il materiale didattico ed informazioni sul corso (utilizzare questo link per accedere).
Sono previste delle esercitazioni a casa durante il corso, che verranno comunicate sempre su Teams. È necessaria l'iscrizione al corso su Delphi per consentire il corretto svolgimento delle esercitazioni a casa. Le esercitazioni a casa verranno valutate con un possibile bonus sul voto finale dell'esame.
Le lezioni si terranno in questi orari:
- Lunedì ore 14.00, aula C1
- Martedì ore 11.30, aula 3
- Venerdì, ore 11.30, aula 1.
Regole d’esame
L’esame si compone di:
- Prova scritta di teoria: verte sugli argomenti dell’intero corso e prevede domande a risposta aperta ed esercizi.
- Prova scritta progettuale: richiede la progettazione di una o più interfacce hardware e dello sviluppo (su carta) del codice assembly dei driver dei dispositivi e di eventuali programmi per pilotare l’esecuzione del sistema.
- Prova di laboratorio (programmazione in C): la prova mira a verificare le conoscenze e la capacità di realizzazione di programmi in linguaggio C.
Tali prove si terranno nelle regolari sessioni di esame, se possibile nello stesso giorno. Le tre prove devono essere sostenute nella stessa sessione di esami. È necessario ottenere la sufficienza a tutte le prove per superare l’esame. In caso di insufficienza molto grave al primo appello di una sessione di esame (voto finale <= 10), non sarà possibile partecipare al secondo appello della stessa sessione.
La partecipazione ad un sessione d’esame (anche in caso di ritiro dalla prova) comporta la rinuncia automatica ad un voto sufficiente conseguito in una prova scritta precedente.
Su richiesta del docente è possibile dover sostenere anche una prova orale aggiuntiva.
Libri di testo consigliati
- A. Pellegrini e B. Ciciani
Computer Architecture: A Bottom Up Approach
(verranno forniti i riferimenti al testo all’inizio del corso)
Per la parte di programmazione in C:
- Brian W. Kernighan, Dennis M. Ritchie
The C Programming Language (2nd edition)
Prentice Hall
ISBN: 978-0131103627 - Zed A. Shaw
Learn C the Hard Way
Addison-Wesley Professional
ISBN: 978-0321884923
Programma del corso (preliminare)
- Sistemi numerici e codici. Richiami di sistemi di numerazione (numeri relativi, reali), operazioni aritmetiche (addizione, sottrazione, moltiplicazione), codici (codifica e decodifica, codici irridondanti e ridondanti).
- Algebra di commutazione. Algebra di Boole, funzioni di commutazione, semplificazione di funzioni, operatori universali, porte logiche.
- Reti combinatorie e sequenziali. Sintesi di reti combinatorie, reti standard e iterative (decodificatori, addizionatori, comparatori, shifter, moltiplicatori), macchine sequenziali e loro rappresentazioni, elementi di memorizzazione, reti sequenziali sincronizzate Level Level Clocked, sistemi digitali complessi e loro organizzazione.
- Organizzazione di un processore multiciclo. Macchina di von Neumann, set delle istruzioni e metodi di indirizzamento in memoria, implementazione del sottosistema di calcolo (registri, bus, ALU), interconnessione con memoria e dispositivi di I/O, implementazione del sottosistema di controllo (fetch, decode, execute), interfaccia tra processore e periferiche (tipologie di bus, protocolli di comunicazione, gestione degli eventi asincroni).
- Programmazione di un processore in C e Assembly. Linguaggio assembly (compatibile x86), C (versione stardard C11).
- Gestione della memoria. Memorie RAM statiche e dinamiche, gerarchia di memoria, memoria cache, dischi ed architetture RAID.
- Architettura pipeline. Vantaggi dell’organizzazione pipeline, organizzazione di un processore in pipeline (set istruzioni, formato istruzioni, organizzazione della CU), svantaggi dell’implementazione (conflitti e loro gestione, gestione delle eccezioni). Prestazioni delle architetture pipeline. Cenni di architetture superpipeline e superscalari.
- Accenno ai sistemi multicore. Concetti di base sui sistemi multicore e loro programmazione (ordine di programma e di memoria), sistemi multi-cache (protocolli di coerenza e consistenza), accenni alla programmazione parallela.