Conoscenza e capacità di comprensione: acquisire conoscenza e capacità di comprensione dei concetti fondamentali delle principali architetture hardware dei sistemi di calcolo e dei principi metodologici che ne ispirano lo sviluppo, nella prospettiva storica della loro evoluzione.
Capacità di applicare conoscenza e comprensione: acquisire capacità di risolvere problemi di progettazione di sistemi di calcolo, cimentandosi con esercizi proposti a tal fine, e di adoperare, progettare e realizzare strumenti software, quali simulatori ed interpreti, per macchine astratte relative ai livelli più bassi della organizzazione dei sistemi di calcolo.
Autonomia di giudizio: essere in grado di confrontare e valutare la qualità di soluzioni a problemi di progetto di sistemi di calcolo.
Abilità comunicative: acquisire abilità comunicativa e proprietà di linguaggio utili alla comunicazione di problematiche inerenti il funzionamento, la progettazione, la realizzazione e la valutazione di sistemi di calcolo.
Capacità di apprendimento: sviluppare la capacita di capire le caratteristiche innovative e migliorative dell'hardware futuro.
Lezioni frontali, esempi e esercizi svolti in aula.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Nessun prerequisito richiesto.
Per una piena comprensione degli argomenti del corso e delle tecniche presentate, la frequenza delle lezioni e delle esercitazioni è fortemente consigliata.
C. Hamacher, Z. Vranesic, S. Zaky & N. Manjikian : Introduzione all'architettura dei calcolatori. Terza edizione, McGraw-Hill Education (Italy), 2013
Argomenti | Riferimenti testi | |
---|---|---|
1 | Finalità e organizzazione dello studio. Macchine da calcolo: cenni storici. | C. 1 |
2 | Macchine da calcolo: unità funzionali, architetture | C. 1 |
3 | Strutture algebriche, algebre di Boole. | C. 2 |
4 | Realizzazione di porte logiche, circuiti sequenziali, flip-flop. | A |
5 | Architetture RISC e CISC, modi d'indirizzamento | C. 2 |
6 | Tipi e formati di istruzioni, esempi di linguaggi assemblativi | C.2 |
7 | Operazioni di I/O, controllo e servizio delle interruzioni. | C. 3 |
8 | Software di supporto, linguaggi assemblativi e C, sistema operativo | C. 4 |
9 | Struttura di base del processore, microarchitetture RISC e CISC | C. 5 |
10 | Processori ad alte prestazioni, tecniche predittive, processori superscalari | C. 6 |
11 | Dispositivi di memoria principale, DMA, gerarchia delle memorie, cache | C. 8 |
12 | Circuiti efficienti per l'aritmetica binaria | C. 9 |
La valutazione consiste di una prova scritta e un colloquio orale. La prova scritta si svolge alle ore 9:00 del giorno dell'appello, salvo comunicazioni diverse. La prova scritta dura un'ora e consiste di vari quesiti a risposte multiple e due domande aperte che prevedono l'implementazione di codice e il disegno di diagrammi. Il superamento della prova scritta permette di presentarsi alla parte 'orale dell'esame, nei giorni successivi allo scritto, che verranno comunicati.
Una ottima valutazione dello scritto sarà attribuita quando il numero di risposte corrette per i quesiti a risposte multiple è vicino al numero di domande totali e quando le risposte alle domande aperte sono corrette e precise.
L'esame sarà valutato in modo ottimo se si mostrerà di aver acquisito profonda conoscenza dei concetti del corso e precisione nella loro esposizione. Un voto intermedio sarà dato nel caso in cui l'esame mostra una comprensione parziale degli argomenti. Uno voto appena sufficiente sarà dato quando pur conoscendo parzialmente gli argomenti, questi vengono esposti in modo superficiale.
Opzionale lo svolgimento e la presentazione di un progetto.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Conversioni di numeri in basi decimale, binario e esadecimale
Sintesi di funzioni logiche
Tabelle di verità di porte logiche
Istruzioni assembly, e programmi elementari
Esecuzione di istruzioni assembly tramite percorso dati
Organizzazione della memoria cache
Esecuzione in pipeline e problematiche