Conoscenza e capacità di comprensione: acquisire conoscenza e capacità di comprensione dei concetti fondamentali di architettura 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 progetto 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, anche con interlocutori non esperti.
Capacità di apprendimento: sviluppare capacita di adattamento delle proprie conoscenze alla rapida evoluzione della disciplina e di aggiomamento mediante la consultazione di fonti specialistiche del settore.
Conoscenza e capacità di comprensione: acquisire conoscenza e capacità di comprensione dei concetti fondamentali di architettura 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 progetto 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, anche con interlocutori non esperti.
Capacità di apprendimento: sviluppare capacita di adattamento delle proprie conoscenze alla rapida evoluzione della disciplina e di aggiomamento mediante la consultazione di fonti specialistiche del settore.
Lezioni frontali e laboratorio con esercizi on-line su server Moodle dipartimentale ad accesso riservato.
Lezioni frontali e laboratorio con esercizi on-line su server Moodle dipartimentale ad accesso riservato.
Nessun prerequisito è richiesto.
Nessun prerequisito è richiesto.
Per una piena comprensione degli argomenti del corso e delle tecniche presentate, la frequenza delle lezioni e delle esercitazioni è fortemente consigliata.
Per una piena comprensione degli argomenti del corso e delle tecniche presentate, la frequenza delle lezioni e delle esercitazioni è fortemente consigliata.
Il modulo si articola in 12 lezioni (36 ore). Ecome i contenuti dettagliati:
Il modulo si articola in 12 esercitazioni orientate al laboratorio (36 ore). Eccone i contenuti:
Si accede al materiale didattico attraverso la Guida rapida all'insegnamento. Il materiale didattico consta di:
Il materiale didattico è pubblicato, durante lo sviluppo dell'insegnamento, in parte attraverso collegamenti nella Guida rapida dell'insegnamento, forniti nelle suddette pagine del programma delle lezioni e delle esercitazioni, e per la parte restante nell'area di esercitazione e di consultazione e discussione dei materiali didattici, realizzata nel servizio dipartimentale Moodle, ad accesso riservato ai partecipanti all'insegnamento (ciò è necessario perché buona parte del materiale è protetto da copyright, con permesso di distribuzione limitata agli studenti dell'insegnamento).
Si accede al materiale didattico attraverso la Guida rapida all'insegnamento. Il materiale didattico consta di:
Il materiale didattico è pubblicato, durante lo sviluppo dell'insegnamento, in parte attraverso collegamenti nella Guida rapida dell'insegnamento, forniti nelle suddette pagine del programma delle lezioni e delle esercitazioni, e per la parte restante nell'area di esercitazione e di consultazione e discussione dei materiali didattici, realizzata nel servizio dipartimentale Moodle, ad accesso riservato ai partecipanti all'insegnamento (ciò è necessario perché buona parte del materiale è protetto da copyright, con permesso di distribuzione limitata agli studenti dell'insegnamento).
| ARCHITETTURA DEGLI ELABORATORI | ||
| Argomenti | Riferimenti testi | |
| 1 | L01. Finalità e organizzazione dello studio. Macchine da calcolo: cenni storici. | 1: 1.7 |
| 2 | L02. Macchine da calcolo: unità funzionali, architetture. | 1: 1.0-3, 1.6 |
| 3 | L03. Strutture algebriche, algebre di Boole. | 2: 2 |
| 4 | L04. Realizzazione di porte logiche, circuiti sequenziali, flip-flop. | 1: A.5-6 |
| 5 | L05. Architetture RISC e CISC, modi d'indirizzamento, esempi di ISA reali. | 1: 2.0-4, A2.1-2 |
| 6 | L06. Tipi e formati di istruzioni, esempi di linguaggi assemblativi reali. | 1: 2.8, 2.10.2, A2.4-5 |
| 7 | L07. Operazioni di I/O, controllo e servizio delle interruzioni. | 1: 3.0-2.5, A3.1 |
| 8 | L08. Software di supporto, linguaggi assemblativi e C, sistema operativo. | 1: 4.0-9.2 |
| 9 | L09. Struttura di base del processore, microarchitetture RISC e CISC. | 1: 5.0-4 |
| 10 | L10. Processori ad alte prestazioni, tecniche predittive, processori superscalari. | 1: 6.6-10 |
| 11 | L11. Dispositivi di memoria principale, DMA, gerarchia delle memorie. | 1: 8.0-5 |
| 12 | L12. Circuiti efficienti per l'aritmetica binaria. | 1: 9.2-4, 9.6 |
| LABORATORIO | ||
| Argomenti | Riferimenti testi | |
| 1 | E01. Aritmetica Maya, sull'abaco e con simulatori. | 2: 1 |
| 2 | E02. Rappresentazione binaria dei numeri e dell'informazione. | 1: 1.4-5, A1.1-3 |
| 3 | E03. Logica della commutazione, porte logiche, sintesi di funzioni logiche. | 1: A.0-4 |
| 4 | E04. Registri, componenti di chip di memoria e del processore, PLA, FPGA, ALU. | 1: A.7-11, 9.1 |
| 5 | E05. Linguaggio assemblativo, direttive di assemblatore, pile e sottoprogrammi. | 1: 2.5-7, A2.3 |
| 6 | E06. Modi di indirizzamento complessi, esempi di programmi assemblativi. | 1: 2.9-10.1, 2.11-13, A2.6 |
| 7 | E07. Gestione di interruzioni ed eccezioni in architetture reali. | 1: 3.2.6, A3.2-3 |
| 8 | E08. Esempi di programmi con integrazione di linguaggi C e assemblativi. | 2: 3 |
| 9 | E09. Progetto di microarchitetture, microprogrammazione, pipelining. | 1: 5.5-7, 6.0-5 |
| 10 | E10. Bus e circuiti d'interfaccia, standard d'interconnessione (cenni). | 1: 7.0-4 (7.5) |
| 11 | E11. Memorie cache, miglioramento delle prestazioni, memoria secondaria. | 1: 8.6-7, 8.10 |
| 12 | E12. Moltiplicazione veloce, aritmetica binaria in virgola mobile (IEEE 754). | 1: 9.5, 9.7-8 |
Moltiplicare ciascuna delle seguenti coppie di numeri interi con segno in complemento a due usando l'algoritmo di Booth. Assumere in ciascun caso che A sia il moltiplicando e B il moltiplicatore.
(a) A = 010111, B = 110110
(b) A = 110011, B = 101100
(c) A = 001111, B = 001111
Un calcolatore indirizzabile a byte ha una piccola cache di dati capace di tenere otto parole da 32 bit. Ciascun blocco della cache consiste di una parola da 32 bit. Quando un certo programma viene eseguito, il processore legge i dati sequenzialmente dai seguenti indirizzi esadecimali:
200, 204, 208, 20C, 2F4, 2F0, 200, 204, 218, 21C, 24C, 2F4
Questa sequenza di letture è ripetuta in quattro iterazioni di un ciclo. Si assuma che la cache sia inizialmente vuota. Mostrare i contenuti della cache alla fine di ciascuna iterazione del ciclo, e calcolare il tasso di successo, nell'ipotesi di cache a corrispondenza diretta.