| CALCOLATORI ELETTRONICI
(obiettivi)
OBIETTIVI FORMATIVI:
Un utilizzo efficiente e sicuro dei moderni sistemi informatici richiede che i professionisti di ciascuna area delle tecnologie dell'informazione abbiano una vasta comprensione del funzionamento dell'hardware, del software e della loro interazione. In questo modo è possibile comprendere quali siano le modalità con cui viene supportato il calcolo computerizzato, quali sono i possibili colli di bottiglia prestazionali, così come quali sono i possibili rischi da un punto di vista di sicurezza nello sviluppo delle applicazioni. All'interno del corso di Calcolatori Elettronici verranno progettati da un punto di vista circuitale alcune varianti di un semplice processore che verrà poi utilizzato per sviluppare alcune applicazioni utilizzando il suo linguaggio assembly. Verranno inoltre realizzate semplici interfacce hardware/software per consentire la connessione di periferiche all'architettura realizzata durante il corso. Allo stesso tempo, lo studio del linguaggio C mostrerà quali sono le implicazioni, spesso legate ai compilatori, nella generazione del codice macchina che viene eseguito dai processori. In questo modo verranno esplorati vari livelli di astrazione che permettono l'esecuzione delle applicazioni sui moderni elaboratori e ne verranno discusse le implicazioni sulla sicurezza.
Con riferimento alle linee guida riportate nel documento "ACM/IEEE- CS- Computer Science (Curricula 2013)" (www.acm.org/education/CS203-final-report.pdf), il corso contribuisce a coprire le seguenti aree e relativi obiettivi: - AR (Architecture and Organization): Logica Digitale e sistemi Digitali; Rappresentazione dei dati a Livello Macchina; Organizzazione della Macchina a livello hardware; Architettura ed Organizzazione del sottosistema di Memoria; Sottosistema di ingresso/uscita ed interfacce di comunicazione; Organizzazione Funzionale; Miglioramento della performance (predizione dei salti e limitazione dei conflitti). - PL (Programming Languages): Tipi di sistemi di base; Elementi di metodologie di traduzione dei programmi da alto livello a linguaggio macchina; - SF (System Fundamentals): Concetto di Stato e macchine a Stati;
CONOSCENZA E CAPACITÀ DI COMPRENSIONE:
Al termine del corso lo studente avrà acquisito i concetti fondamentali sull'architettura dei calcolatori basata sul Modello di Von Neumann. In particolare: introduzione alle reti logiche; architettura di base di un calcolatore ed interfaccia hardware-software; programmazione in assembly e in C; unità di elaborazione a singolo ciclo, multiciclo e pipeline; gerarchia di memoria; introduzione ai processori multicore; introduzione alla programmazione parallela. I concetti introdotti all'interno del corso risultano propedeutiche anche per applicazioni legate ai sistemi embedded e sistemi operativi.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE:
Al termine del corso lo studente avrà acquisito le metodologie proprie dell'analisi, progettazione e valutazione di un sistema di calcolo. Particolare enfasi viene data alla progettazione di un processore, alla definizione di un linguaggio macchina/assembly per la programmazione del processore, all'interfaccia hardware-software, alla soluzione di problemi tramite la programmazione (in assembly e in C).
AUTONOMIA DI GIUDIZIO:
Al termine del corso lo studente sarà in grado di valutare i relativi vantaggi e svantaggi di una architettura di calcolo e della relativa interfaccia hardware-software e scegliere, fra le diverse alternative, la soluzione adeguata alle proprie esigenze in base al problema sotto esame. Allo stesso tempo, lo studente sarà in grado di riconoscere possibili rischi dal punto di vista della sicurezza informatica che si manifestano nella scrittura di codice con linguaggi di più alto livello.
ABILITÀ COMUNICATIVE:
Al termine del corso lo studente avrà acquisito padronanza della terminologia relativa all'architettura dei sistemi di calcolo e della programmazione in assembly, sarà in grado di descrivere i concetti fondamentali con termini e linguaggio tecnico appropriato e, in fase progettuale, di argomentare circa le varie alternative a livello harware e software.
CAPACITÀ DI APPRENDIMENTO:
Al termine del corso lo studente avrà acquisito la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti inerenti alle architetture dei calcolatori e di utilizzare le conoscenze e metodologie imparate per affrontare problemi nuovi.
|
|
Codice
|
8037594 |
|
Lingua
|
ITA |
|
Tipo di attestato
|
Attestato di profitto |
|
Crediti
|
9
|
|
Settore scientifico disciplinare
|
ING-INF/05
|
|
Ore Aula
|
90
|
|
Ore Studio
|
-
|
|
Attività formativa
|
Attività formative di base
|
Canale Unico
|
Docente
|
PELLEGRINI ALESSANDRO
(programma)
1. Sistemi numerici e codici - Richiami di sistemi di numerazione * Rappresentazione dei numeri relativi * Rappresentazione dei numeri in virgola mobile - Operazioni aritmetiche (Addizione, Sottrazione, Moltiplicazione) - Codici * Codifica-decodifica * Codici binari irridondanti: BCD, ASCII * Codici binari ridondanti: parità, di Hamming
2. Algebra di commutazione - Algebra di Boole * Operatori fondamentali - Funzioni di commutazione * Tabelle di verità - Forme canoniche, mintermini, maxtermini - Forme semplificate di una espressione * Mappe di Karnaugh - Rappresentazione di una funzione - Semplificazione di una espressione - Funzioni parzialmente specificate * Operatori Universali (NAND, NOR) * Porte logiche e loro simboli grafici
3. Elementi di reti combinatorie - Sintesi di reti combinatorie - Reti combinatorie standard: moltiplicatori, decodificatori, addizionatori, comparatori * Sintesi di reti combinatorie con ROM e PLA * Reti combinatorie iterative: addizionatori, comparatori
4. Elementi di reti sequenziali - Macchine sequenziali e loro rappresentazioni - Reti sequenziali - Elementi di memorizzazione: flip/flop, registri, banco di registri, memoria RAM - Reti sequenziali sincronizzate Level Level Clocked (LLC) * Interconnessione di reti LLC * Strutture pipeline e tecniche di sincronizzazione * Sistemi digitali complessi e loro organizzazione: - Sottosistema di Calcolo - Sottosistema di Controllo (microprogrammazione) * Interazione asincrona tra due sistemi digitali complessi
5. Organizzazione e programmazione dello z64 - Macchina di Von Neumann - Set delle istruzioni e metodi di indirizzamento della memoria - Implementazione del Sottosistema di Calcolo * Organizzazione a blocchi: registri, bus, shifter, ALU * Organizzazione della memoria * Bus di comunicazione z64-memoria * Organizzazione delle porte di I/O * Bus di comunicazione x64-dispositivi di I/O - Implementazione del Sottosistema di Controllo * Passi elementari dell’esecuzione di una istruzione - Fetch dell’istruzione - Decodifica ed esecuzione dell’istruzione * Architettura del Sottosistema di Controllo
6. Interfaccia tra processore e periferiche - Tipi e caratteristiche delle periferiche - Bus * Tipi di bus: processore-memora, di I/O, generici * Bus sincroni e asincroni * Arbitraggio del bus - Tecniche di interfacciamento dei processori con le unità esterne * Busy waiting * Polling * Gestione dell’I/O dello z64 con due bus - Istruzioni di I/O * Gestione eventi asincroni - Gestione dell’interrupt - Gestione dell’hold * Tecnica di trasferimento dei dati tra memoria e periferiche di tipo Direct Memory Access * Temporizzazioni
7. Gestione della memoria - Memorie RAM statiche - La gerarchia di memoria - Memoria cache - Dischi ed architetture RAID 8. Architettura pipeline di processori di tipo RISC/CISC - Concetti di base per le soluzioni con pipeline - Vantaggi dell’organizzazione pipeline - Processore z64 con pipeline * Set delle istruzioni * Formato delle istruzioni * Organizzazione del SCO - Svantaggi della pipeline: * Conflitti di dati e loro controllo * Come limitare i conflitti di dati * Conflitti di salto condizionato e loro controllo * Gestione delle eccezioni - Prestazioni delle architetture pipeline - Cenni di architetture superpipeline e superscalari.
10. Accenno ai processori multicore - Concetti di base sui sistemi multicore - Sistemi multicache
11. Programmazione in C - Introduzione al linguaggio C - Strutture di controllo e tipi di dato - Memoria dinamica - Input e output - Il preprocessore - Accenni alla programmazione parallela
 1. A. Pellegrini, B. Ciciani: "Computer Architecture: A Bottom Up Approach".
2. Brian W. Kernighan, Dennis M. Ritchie: "The C Programming Language" (2nd edition). Prentice Hall.ISBN: 978-0131103627 oppure 2. Zed A. Shaw: "Learn C the Hard Way". Addison-Wesley Professional. ISBN: 978-0321884923
|
|
Date di inizio e termine delle attività didattiche
|
- |
|
Modalità di erogazione
|
Tradizionale
|
|
Modalità di frequenza
|
Non obbligatoria
|
|
Metodi di valutazione
|
Prova scritta
|
|
|