Computer Architecture

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2020/2021
Year: 
1
Academic year in which the course will be held: 
2020/2021
Course type: 
Basic compulsory subjects
Seat of the course: 
Varese - Università degli Studi dell'Insubria
Credits: 
9
Period: 
First Semester
Standard lectures hours: 
80
Requirements: 

No specific technical or scientific knowledge is required. It is only suggested a good basic knowledge of mathematical and physical concepts coming from high school courses.
Comprehending written English is useful to get access the huge amount of available documentation.

The main objective of the final exam is to verify the knowledge, abilities, and skills described in the Course Objectives section, by evaluating the knowledge level and the practical abilities of each student in solving real problems.
The learning is verified by 2 hours written test dispensed in traditional rooms, without the help of books, slides or notes. The written test includes 4 or 5 exercises: 3 or 4 exercises require design skills, and 1 test verifies the acquired knowledge. Every exercise refers clearly to one specific argument and learning objective. An oral exam is carried out only upon request by the teacher, when the written test does not allow for a proper evaluation. As a result of the oral, the grade can change of up to 3 points.
Students can have a look at their corrected tests before the final grade is awarded.
No lab test is required, because lab activities are tested in the Interdisciplinary lab course.
Partial written tests are planned in adjunction to the general exams.
The final mark is expressed in a 0 to 30 scale.

Assessment: 
Voto Finale

The course provides the minimum knowledge and skills that are necessary to design electronic computer components. All the topics for the course are selected starting from a consolidated tradition in teaching computer architectures, where the computing machine is seen as a hierarchy of layers, involving abstract and/or concrete machines.
In detail, the course aims at providing the following competencies:
1. fundamentals of logic electronic circuits and the related design skills;
2. the knowledge of the basic computer hardware organization;
3. the basic understanding of the functionality provided by hardware and used by operating systems and application programs at the memory level;
4. the basic knowledge of a real machine, namely the MIPS CPU;
5. assembly programming skills.
Hence, the student acquires knowledge and ability to understand, with reference to:
• building principles and characteristics of memory circuits commonly used in electronic computers;
• building principles and characteristics of cache memory circuits;
• building principles of elaboration units (datapaths) and control units;
• knowledge of engineering control units by means of Microprogramming;
• building principles and working characteristics of buses;
• knowledge of the structure and functionality of I/O devices.

The skills and applied knowledge acquired by the student at the end of the course are the following:
• ability to analyze, design and optimize combinatorial circuits, both using Boolean algebra and using library components;
• ability to evaluate the performance of simple circuits;
• skills in analyzing, designing and optimizing sequential circuits, possibly using library components;
• elementary ability to performance analysis of cache memories;
• skills in assembly programming (including dynamic record allocation and recursion);
• ability to evaluate trade-off concerning design issues involving cost of design, cost of components and performance.
The ability to relate techniques, methods and tools to the characteristics of computer organization and components –developed throughout the course– enable students to understand and learn new techniques, methods and tools, as well as to adapt and refine their knowledge and skills.
Moreover, the student will be able to use properly the circuit and computer component description notations, and he/she will adopt the correct computer design English terminology and slang.

The following topics will be addressed:
• Layered computer architecture (Lesson: 14h + Exercise: 4h – Objective 1)
o Main concepts and components for a computer
o Binary representation of characters and other types of information
o Boolean algebra. Equivalence of Boolean operators and logic ports
• Combinatorial and Sequential circuits (Lesson: 18h + Exercise: 6h – Objective 2)
o Synthesis, normal forms, Karnaugh maps
o Combinatorial library circuits; ALU; synthesis of combinatorial circuits via library components
o Flip-flop, sequential library components. Design of sequential circuits
• Memories and building memories (Lesson: 8h + Exercise: 4h – Objective 3)
o Memory hierarchy and main principles (Cache memory)
o Virtual memory and Paging
• Building a data path (Lesson: 8h + Exercise: 2h – Objective 4)
o Single-cycle CPU
o Multiple-cycle CPU
o Hardwired and microprogrammed Control Unit. Microprogramming
o Introduction to pipeline architectures
o Introduction to I/O techniques (programmed, interrupt based, DMA) and Buses
• Machine language and Instruction Set Architecture (Lesson: 8h + Exercise: 8h – Objective 5)
o MIPS Instructions Set;
o Assembly programming: procedures; usage of the stack; activation record; recursion.

The following books can be consulted:
o Patterson & Hennessy, “Computer organization and design – The hardware/software interface”, Elsevier
o Bolchini & Sciuto, “Informatica 2 sistemi digitali”, Progetto Leonardo, Soc. Editrice Esculapio Bologna (or any other book dealing with circuit design)
The slides shown during lessons are available from the university e-learning site as .pdf files.
Moreover, on the university e-learning site, the texts of past exams are also available, together with the proposed solutions.

The course is composed of lessons (56 hours) and exercise sessions (24 hours) in traditional rooms, as illustrated in the Course Content section of this syllabus.
Lessons provide the students with all the theoretical skills to understand and solve real problems in building computer architectures. Exercise sessions provide the students with practical application of theoretical topics in real contexts. Students autonomy will be the main key during exercise sessions.
During exercise sessions, both general purpose tools (e.g., spreadsheets) and specific tools (e.g., Knarnaugh map solvers, data path simulators, etc.) are used. Assembly programming is supported by a tool that simulates the MIPS machine. Such tool will also be used by students in “Laboratorio interdisciplinare” (Interdisciplinary lab).
The student is expected to work autonomously according to the equivalence 1 CFU = 25 hours.

Professor Office hours: by appointment.
Send an e-email to pietro.colombo@uninsubria.it from students’ official uninsubria e-mail.

Professors

Parent course