Lo studente acquisirà conoscenze in merito ai principi e alle tecniche di progettazione di un calcolatore. In particolare, imparerà a progettare, studiare e valutare l'architettura dell'insieme di istruzioni di un calcolatore e la sua implementazione e supporto a livello di logica digitale del processore e di gerarchia delle memorie. Nel secondo modulo di laboratorio si introduce lo standard de-facto dei sistemi operativi moderni (UNIX) con un taglio pratico. Si intende spiegare come i vari sottosistemi visti nel primo modulo sono resi disponibili e usabili attraverso astrazioni di più alto livello tipiche del sistema operativo stesso. Questo secondo modulo non è pensato per essere un corso di sistemi operativi (gia’ trattati ad alto livello nel corso del primo anno di Fondamenti di Informatica e Calcolatori) ma piuttosto un corso pratico di programmazione su piattaforma UNIX.
Students will acquire knowledge about the principles and the techniques for desgining the architecture of modern computers. In detail, they will learn to design, investigate, and evaluate the istruction set architecure (ISA) of a computr, and its implementation and support based on the digital logic of the processor and of the memory hierarchy.
La verifica delle conoscenze acquisite sarà oggetto di valutazione mediante prova orale con discussione prevista all'inizio di ogni sessione d'esame.
Academic progress with repect to the acquired knowldge will be monitored and verified via an oral exam with discussion, at the beginning of each exam session.
Lo studente sarà in grado di comprendere la struttura ed i meccanismi base del funzionamento di un calcolatore digitale e delle sue componenti principali (es, processore e memorie). Sarà altresì in grado di valutare le prestazioni di un calcolatore e di scrivere/tradurre simplici programmi in linguaggio Assembler. Inoltre, riguardo alla programmazione in ambiente UNIX, le domande a cui gli studenti sapranno rispondere sono: 1) come un sistema operativo abilita l’interazione dei sottosistemi visti nel primo modulo? 2) come si interagisce e si gestiscono processi? 3) quali sono le tecniche che abilitano la comunicazione tra processi sulla stessa piattaforma? 4) come si abilita la comunicazione tra piattaforme diverse? 5) come si realizzano e ottimizzano sistemi client-server?
Students will be able to understand the strutrue and the mechanisms that regulate the operation and the performance of modern computers, as well as those of their core components (e.g., processor and memories). Furthemore, they will to able to evaluate and compare the performance of different computer architectures and to write/translate simple programs in Assembler.
La verifica delle capacità acquisite sarà oggetto di valutazione mediante prova orale con discussione prevista all'inizio di ogni sessione d'esame.
Academic progress with repect to the acquired skills will be monitored and verified via an oral exam with discussion, at the beginning of each exam session.
Lo studente svilupperà le sue capacità ingegneristiche e di progettazione, imparando a valutare e confrontare differenti soluzioni sulla base dei requisiti di progetto.
Students will improve their engineering skills and their capacity to design working and efficient systems. They will learn to evaluate, compare and chose different solutions, depending on the project requirements.
La verifica dei comportamenti sviluppati sarà oggetto di valutazione mediante prova orale con discussione prevista all'inizio di ogni sessione d'esame.
Academic progress with repect to the acquired behaviors will be monitored and verified via an oral exam with discussion, at the beginning of each exam session.
Basi di programmazione in C/C++.
Il corso si svolgerà mediante lezioni frontali effettuate con l'ausilio di slides, del testo di riferimento e di ulteriore materiale didattico prodotto e fornito dal docente. Gli studenti avranno accesso a risorse e funzionalità aggiuntive mediante un portale Web di ateneo, dal quale sarà possibile scaricare materiali didattici, gestire eventuali lezioni a distanza e le comunicazioni docente-studenti. Le interazioni tra docente e studenti avverranno mediante ricevimenti e tramite l'uso di posta elettronica e programmi di messaggistica. Il corso si svolgerà in Italiano ed Inglese.
The course will be articulated in a series of lectures supported by the use of slides, of the reference book and of additional teaching and training material that will be made available by the teacher. Students will benefit from the resources and functionalities offered by a university Web portal, through which they will be able to download training material, to view and/or participate to remote lessons, and to communicate with each other and with the teacher. Interactions between students and the teacher will occur by means of a combination of in-person and remote meetings, emails and messaging apps. The course will feature a combination of Italian and English languages.
Classi di calcolatori, principi di progettazione, livelli del software, livelli dell'hardware, memorie, prestazioni di un calcolatore, equazioni per il calcolo delle prestazioni, energia, sistemi multiprocessore, istruzioni aritmetiche, registri del processore, istruzioni di trasferimento dati, rappresentazione dei numeri, numeri in complemento a 2, rappresentazione delle istruzioni, istruzioni logiche, istruzioni di controllo, salti condizionati, salti incondizionati, supporto alle procedure, lo stack e lo heap, procedure annidate, rappresentazione dei caratteri e delle stringhe, costanti a 32 bit, modalità di indirizzamento, traduzione e avvio dei programmi, aritmetica dei calcolatori, somme e sottrazioni, moltiplicazione, numeri in virgola mobile, somma in virgola mobile, istruzioni floating point, parallelismo a livello di parola, cenni di logica digitale, processore a ciclo singolo, implementazione unità di elaborazione (datapath), implementazione unità di controllo, la pipeline, hazard nelle pipeline, datapath con pipeline, unità di controllo della pipeline, predittore dinamico dei salti, eccezioni e interruzioni, introduzione alla gerarchia delle memorie, tecnologie delle memorie, cache a mappatura diretta, gestione dei miss, gestione delle scritture, misurazione e miglioramento delle prestazioni con cache, memorie cache completamente associative e set-associative, politiche di rimpiazzamento, cache multilivello, introduzione alla memoria virtuale, traduzione degli indirizzi, tabella delle pagine, translation lookaside buffer (TLB), interazione tra TLB - tabella delle pagine - cache.
Relativamente al modulo di laboratorio, il programma vede un'introduzione al sistema operativo. Finalità di un sistema operativo. Diagramma a livelli concentrici. Strutturazione di un sistema operativo moderno: UNIX. Introduzione all'interprete dei comandi. Basi di programmazione in C: compilazione, editing e esecuzione tramite shell UNIX. Buffered e Unbuffered I/O. System e Library call. Efficienza e dimensionamento buffer di I/O in memoria secondaria. File system UNIX. Standard I/O library del C. Processi. Creazione/Gestione/Terminazione. Segnali. Interprocess Communications in UNIX e socket.
Classes of computers and their performance, equations for evaluating computer performance, arithmetic instructions, registers, data transfer instructions, numbers representation, instructions repesentation, logical instructions, branches, jumps, procedures, memory organization (stack and heap), nested procedures, representation of characters and strings, computer arithmetics, addition and subtraction, mutiplication, floating point numbers, floating point operations, floating point instructions, processor's datapath and control unit, pipelining, hazards, datapath and control unit with pipelining, bypassing, branch prediction, interrupts, memory hierarchy, direct mapped cache, handling misses and writes, associative and set-associative caches, replacement policies, multilevel caches, virtual memory, address translation, page table, translation lookaside buffer.
David A Patterson, John L Hennessy. "Struttura e progetto dei calcolatori", 4a ed. Zanichelli.
Richard Stevens, Stephen Rago. "Advanced Programming in the UNIX Environment", 3rd ed. Addison-Wesley.
David A Patterson, John L Hennessy. "Struttura e progetto dei calcolatori", 4a ed. Zanichelli.
La verifica delle conoscenze acquisite sarà oggetto di valutazione mediante prova orale con discussione prevista all'inizio di ogni sessione d'esame.
Academic progress with repect to the acquired knowledges and skills will be monitored and verified via an oral exam with discussion, at the beginning of each exam session.