- Oggetto:
- Oggetto:
Architettura degli Elaboratori
- Oggetto:
Computer Architecture
- Oggetto:
Anno accademico 2022/2023
- Codice dell'attività didattica
- MFN0586
- Docenti
- Rossano Gaeta (Corso A + Corso A Turno 1 + Corso B)
Michele Garetto (Corso A Turno 2 + Corso B Turno 2)
Daniele Paolo Radicioni (Corso B Turno 1)
Maurizio Lucenteforte (Corso C Turno 1)
Claudio Schifanella (Corso C + Corso C Turno 2)
Idilio Drago (Corso B) - Corso di studi
- [008707] Laurea in Informatica
- Anno
- 1° anno
- Periodo didattico
- Secondo semestre
- Tipologia
- Di base
- Crediti/Valenza
- 9 CFU - Numero di ore - Number of hours: 48 (in aula) + 30 (in laboratorio)
- SSD dell'attività didattica
- INF/01 - informatica
- Modalità di erogazione
- Tradizionale
- Lingua di insegnamento
- Italiano
- Modalità di frequenza
- Facoltativa
- Tipologia d'esame
- Scritto più orale obbligatorio
- Prerequisiti
-
Conoscenza di base di programmazione imperativa, capacità di progettare semplici algoritmi
Insegnamenti propedeutici (forniscono le competenze attese in ingresso):- Programmazione I e Laboratorio (I semestre)
- Matematica Discreta e Logica (I semestre)
Knowledge of basic programming concepts, some coding attitude
Preparatory Courses (providing the expected entry skills): Knowledge of the content of courses:- Programmazione I e Laboratorio (first semester)
- Matematica Discreta e Logica (first semester).
- Oggetto:
Sommario insegnamento
- Oggetto:
Obiettivi formativi
L’insegnamento si propone di fornire alle studentesse e agli studenti:
- la conoscenza delle tecniche di codifica dell’informazione all’interno dei calcolatori
- la conoscenza dell’organizzazione hardware degli elaboratori, attraverso la nozione di gerarchie di macchine virtuali
- la comprensione delle funzioni svolte dall’hardware e utilizzate dai sistemi operativi
- le nozioni di base per la comprensione del processo di traduzione da linguaggi ad alto livello a linguaggio macchina
L'insegnamento è supportato da un laboratorio, finalizzato alla programmazione utilizzando un linguaggio assemblativo composto da un insieme di istruzioni appartenente allo standard RISC-V.
Insegnare le architetture degli elaboratori fa parte degli obiettivi formativi specifici del CdS in Informatica (L31), in particolare è tra quelli relativi all'area informatica di base.
The course aims to provide the student with the knowledge of the:
- information coding techniques for digital computers
- the hardware organization of digital computers
- functions realized by hardware and exploited by opertating systems
- basic ideas supporting the translation of high-level programming languages to machine-level languages
The course includes a laboratory in which students are presented with assembly-level programming techniques. Programming exercises are performed using a subset of the instruction set architecture specified in the RISC-V standard.
Learning computer architectures is part of the learning objectives of the Computer Science course (L31), in particular composing the basic computer science topics.
- Oggetto:
Risultati dell'apprendimento attesi
Al termine dell’insegnamento le studentesse e gli studenti sarano in grado di:
- Conoscere le technique per codificare e decodificare numeri con e senza segno, interi, frazionari, numeri in virgola mobile e stringhe.
- Conoscere le relazioni tra linguaggi ad alto livello (e.g., C e Java) ed il linguaggio macchina
- Conoscere le tecniche di traduzione in linguaggio macchina e del collegamento (linking/loading)
- Conoscere e analizzare i circuiti logici elementari
- Analizzare i componenti digitali che sono alla base dell’architettura dei moderni calcolatori
- Sviluppare piccoli programmi in un linguaggio assemblativo
At the end of the course, the students will be able to:
- Understand how to encode and decode signed and unsigned numbers, integers, fractions, floating-point and strings
- Understand the relationship between high-level languages (e.g., C and Java) and the machine-level language
- Understand the techniques used for translating programs into machine language and for linking/loading programs
- Understand and analyze elementary logic circuits
- Analyze the digital components that underlie modern computer architectures
- Develop small programs in assembly language
- Oggetto:
Modalità di insegnamento
L’insegnamento è diviso in una parte di teoria e una di laboratorio. Per la parte di teoria sono previste 48 ore di lezioni frontali, integrate da esempi e da esercitazioni. Per la parte di laboratorio sono previste 30 ore di attività in laboratorio in cui si svolgono esercizi e approfondimenti sugli argomenti del corso, in particolare sulla programmazione in linguaggio assemblativo. La frequenza è facoltativa, consigliata, e la prova finale sarà uguale per frequentanti e non.
The teaching is divided into theory and laboratory. For the theory part, 48 hours of lectures are scheduled, integrated with examples and exercises. For the laboratory part, 30 hours of activities are scheduled, in which exercises on the topics of the course are carried out, particularly on assembly language programming. Attendance is optional but recommended, and the final exam will be the same for all students.
- Oggetto:
Modalità di verifica dell'apprendimento
L’esame consiste di prove scritte e una prova orale con voto finale espresso in trentesimi (con possibilità di lode). Le prove sono articolate in più parti:
- una prova di ammissione (8 punti) finalizzata a verificare l’acquisizione delle competenze elementari
- due prove relative agli argomenti di teoria (14 punti) e di laboratorio (10 punti)
Tutte le parti dell’esame devono essere superate e contribuiscono a determinare il voto finale. Le domande della prova di ammissione, che possono essere a risposta aperta oppure a risposta chiusa, sono verificabili in modo automatico.
Le domande di laboratorio vertono sugli argomenti trattati nelle lezioni di laboratorio, in particolare la programmazione nel linguaggio assemblativo del processore RISC-V, e sono svolte (e verificate) con l'assistenza di compilatori e simulatori usati in laboratorio. Le studentesse e gli studenti devono dimostrare la capacità di sviluppare codice assembly corretto, sia dal punto di vista grammaticale che algoritmico.
Le domande di teoria (esame scritto e/o orale) possono essere a risposta aperta oppure a risposta chiusa. Le domande a risposta aperta possono richiedere l’enunciazione e la descrizione di proprietà o di tecniche viste a lezione. Possono altresì richiedere l’applicazione della teoria a particolari esempi. Con queste domande si intende valutare la comprensione dei principi visti a lezione, la capacità di enunciarli con l’uso appropriato di un linguaggio scientifico e la capacità di applicarli a casi pratici.
Tutte le prove si svolgeranno in presenza nelle aule e nei laboratori didattici dell'Università.
The exam consists of written and oral tests with max score equals to 30 (with the possibility of honors). The tests are divided into several parts:
- an admission test (8 points) aimed at verifying the acquisition of basic skills
- two tests on the topics of theory (14 points) and laboratory (10 points)
All parts of the exam must be passed and contribute to determining the final grade. The questions in the admission test are automatically verified.
The laboratory questions focus on the topics covered in the laboratory lessons, particularly on programming in the assembly language of the RISC-V, and are carried out (and verified) with the assistance of compilers and simulators used in the laboratory. Students must demonstrate the ability to develop correct assembly code, both grammatically and algorithmically.
The theory questions (written and/or oral) can be open-ended or multiple-choice. Open-ended questions may require the enunciation and the description of properties or techniques covered in the lessons. They may also require the application of theory to specific examples. These questions are intended to assess the understanding of the principles covered in the lessons, the ability to enunciate them with the appropriate use of scientific language, and the ability to apply them to practical cases.
All tests will take place in the classrooms and teaching laboratories of the University.
- Oggetto:
Programma
Teoria (6 CFU - 48 ore)
- Calcolatori: astrazioni e tecnologia
- Le istruzioni e la rappresentazione dell'informazione
- RISC-V ISA
- Bit, byte, parola, operandi dell'hardware e gli indirizzi
- Rappresentazione numerica, numeri con e senza segno, complemento a due
- Rappresentazione delle istruzioni nel calcolatore
- La rappresentazione di informazione non numerica (e.g., le stringhe)
- Traduzione e avvio di un programma (assembler, linker, loader)
- L'aritmetica dei calcolatori e i numeri in virgola mobile
- Sistemi digitali
- Porte logiche, tabella di verità e espressioni Booleane
- Circuiti combinatori
- Unità aritmetica e logica
- Clocks
- Memoria: Flip-Flops, Latches, e registri
- Memoria: SRAMs and DRAMs
- Automa a stati finiti
- Il processore RISC-V
- Introduzione di base del RISC-V
- Metodologia di temporizzazione
- Realizzazione di un'unità di elaborazione
- Uno schema semplice di implementazione
- Bus e I/O
- I tipi di bus e l'arbitraggio
- I/O programmato con busy waiting (pooling)
- I/O controllato dall'interrupt
- Direct Memory Access
- Il meccanismo di interruzione del RISC-V
- Gerarchia delle memorie
- Organizzazione delle memorie, località temporale e spaziale
- Tecnologie delle memorie
- Principi base e prestazioni delle memorie cache
Laboratorio (3 CFU - 30 ore)
- Rappresentazione numerica
- RISC-V ISA e linguaggio assemblativo
- Operandi allocati in memoria, indirizzi e registri
- Operazioni logiche
- Istruzioni condizionali - if-then-else e cicli
- Supporto hardware alle procedure - registri, stack e heap
- Compilazione e traduzione dei programmi
- Circuiti combinatori e sequenziali
Lectures (6 CFU - 48 hours)
- Introduction to computer abstractions and technology
- Information representation and Instruction sets
- The RISC-V ISA
- Operands of the RISC-V ISA, bits, bytes, words, memory operations and addresses
- Numeric data representation and number bases, signed and two's-complement representations
- Representing instructions
- Representation of non-numeric data (e.g, strings)
- Language translation and execution (assembler, linker, loader)
- Fixed- and floating-point systems and operations
- Digital logic and digital systems
- Gates, truth tables, and logic equations
- Combinational logic
- Arithmetic logic unit
- Clocks
- Memory elements: Flip-Flops, Latches, and Registers
- Memory elements: SRAMs and DRAMs
- Finite-state machines
- RISC-V processors
- Introduction to RISC-V
- Timing methodology
- Building a datapath
- A simple implementation scheme
- Bus and I/O
- Bus types and the arbiters
- Programmed I/O, busy-wait, pooling
- Interrupts
- Direct Memory Access
- RISC-V exception mechanisms
- Memory hierarchy
- Main memory organization, temporal and spatial locality
- Memory technologies
- Cache memories and performance
Laboratory (3 CFU - 30 hours)
- Numeric data representation and number bases
- RISC-V ISA and assembly programming
- Operands: Memory addresses, memory content and registers
- Logical operations
- Instructions for making decisions - if-then-else and loops
- Subroutine call and return - procedures and registers, stack and heap
- Compilation and translation of programs
- Digital circuits
Testi consigliati e bibliografia
- Oggetto:
- Libro
- Titolo:
- Struttura e progetto dei calcolatori - Progettare con RISC-V
- Anno pubblicazione:
- 2019
- Editore:
- Zanichelli
- Autore:
- David A Patterson e John L Hennessy
- Note testo:
- Edizione italiana a cura di Alberto Borghese
- Obbligatorio:
- Si
- Oggetto: