Course Details

Computer architecture 1

MF0791

Course
Computer architecture 1
Code
MF0791
Academic Year
2025/2026
Curriculum Year
2025/2026
Degree Programme
CHEMICAL SCIENCES
Curriculum
000 - CORSO GENERICO
Course coordinator
-
Lecturers
Credits
6
Lecture Hours
48
Scientific Disciplinary Sector (SSD)
INF/01 - Computer Science
Course Type
Single-subject learning activity
Course Delivery
OBB - Obbligatoria
Year
1
Teaching period
Primo Semestre
Campus
VERCELLI
Teaching language
Italian
Course Contents
The course provides the foundation for understanding the architecture of modern computers and how it can influence software performance. It analyzes the impressive growth in performance and the simultaneous reduction in computer costs, also offering a brief historical perspective of this evolution.
During the course, key concepts are addressed, such as the various levels of abstraction used to analyze a computer, the trade-offs that guide the choice of a processor's elementary instructions, and the fundamental importance of parallel execution at various levels to improve performance. The role of memories—which vary in size, speed, and cost—within a system is also covered.
The course then introduces the binary encoding of integers and floating-point numbers and their respective arithmetic operations.
Boolean algebra, logic gates, and both combinational and sequential logic circuits are introduced.
Finally, the course demonstrates how, by assembling these circuits, it is possible to create part of the data path of a modern processor, taking the open-source RISC-V architecture as a reference. The complete RISC-V architecture is covered in a subsequent course.
Reference Texts
D.A. Patterson, J.L. Hennessy. Struttura e Progetto dei Calcolatori. Progettare con RISC-V. Seconda Edizione Italiana. Zanichelli 2023
Learning Outcomes
In this course, the basic principles guiding computer design will be introduced: defining different levels of abstraction, designing with a focus on performance, for example by exploiting parallelism and efficiently organizing memories. The differences between high-level programming languages and low-level languages (assembler and machine language) will be analyzed, along with the motivation for requiring both levels, and the methods for transitioning from the first type of language to the second.
The main stages in the history of computers from the mid-20th century to today will be reviewed (introducing the Von Neumann architecture), observing how the development of technology has affected the size, cost, speed, and reliability of computers.
The basic elements of digital data representation will be defined, and subsequently, the digital representation of numbers (signed and unsigned, integer and fractional—the latter using fixed-point and floating-point), and of text will be formally illustrated and explained with examples. Algorithms for encoding and decoding the different types of data will be provided.
Another objective is to show how Boolean algebra can be used to define (in the form of algebraic expressions) the basic functions performed by the processor or other system components. We'll then explain the connection between Boolean operators and logic gates, and between Boolean expressions and combinational logic circuits, also applying the definitions to exercises. Following this, some simple sequential circuits (with memory) will be illustrated, showing first the elementary components and then their combination to create registers or memories.
Once the basic circuits are learned, we will develop some simplified examples of more involved circuits that implement the data path of a processor. These circuits will be capable of executing certain types of instructions (mainly arithmetic-logic) under the control of appropriate signals. This will lay the basis for introducing part of the RISC-V processor structure, which will be explored in depth in a subsequent course.
Various types of memory will then be introduced and placed into different categories, each having distinct characteristics in terms of cost, speed, and size. The role of each memory type within a computer's architecture will be highlighted, also considering aspects related to performance.
Prerequisites
None
Teaching Methods
The topics of the course are mainly presented through class lectures. During the lectures an interactive tool (Wooclap) is used to get a feedback from the students through anonymous quizzes that can be answered using the smartphone. This way the students are stimulated to reflect; moreover this activity allows an early detection of the possible critical aspects in the learning process.
After presenting each topic the students are challenged with exercises and formative quizzes. Tutored meetings in small groups are proposed, to develop and discuss exercises (similar to those included in the written exam).
Additional Information
It is possible to download electronic copy of all slides of the lectures, perform self-assessment tests, read general information on the course and news about the lectures and the exam organization on the e-learning platform DIR .
General information on the organization of the course and of the exams are published through a forum. Specific forums can be used by students to ask questions on course topics or exercises, or to provide answers posted by other students.
Students with physical disabilities, Learning Disabilities or Special Education Needs can request specific services and tools via the Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti, consulting the University webpage: https://www.uniupo.it/en/services/services-students-physical-or-learning-disabilities Students with disabilities, learning disabilities or special education needs, once they have contacted the University Staff, can refer to the teacher in charge of the course to define the examination modalities, concerning academic aspects.
Assessment Methods
The examination consists of a written test, however it is possible to ask for an oral exam. Moreover an oral integration may be required (by the teacher) to clarify some unclear parts of the answers in the written test. Intermediate tests may be organized (as a facilitation to pass the exam right after the end of the course) that may be in the form of lab exercises. The test includes four to six questions each of which possibly structured into several points. The questions may also take the form of an exercise testing the ability to apply the learned concepts to practical examples. The threshold to pass the exam is the 60% of the global sum of points assigned to the questions.
Detailed Syllabus
The topics covered in the course are primarily selected from the textbook (specific sections of the first four chapters and one appendix). Additional study materials are provided for some topics.
1) Computer Architecture and Design Principles
Types of computers and their characteristics. Design principles of computer architectures: Using abstractions to simplify the design; Making the most frequent operations fast; Improving performance through parallelism, pipelining, and prediction; Exploiting the memory hierarchy.
From high-level languages to machine language.
Main components of a computer, particularly the processor. Influence of technological development on the characteristics of electronic computers. Notes on the historical evolution of computers. The Von Neumann machine and modern computers.
Definition and measurement of processor performance indices.
[Digital Data Representation]
Digital data representation: bit, byte, and multiples. Representation of signed and unsigned integers and arithmetic operations on binary numbers. Text representation: ASCII and Unicode codes. Floating-point numbers: The IEEE 754 standard.
2) Logic Circuits and Processor Implementation
Boolean Algebra: Boolean variables, Boolean functions of multiple variables, Boolean expressions, and the main laws of Boolean algebra. Logic gates. From Boolean expressions to combinational logic circuits. Some useful combinational circuits for implementing an Arithmetic Logic Unit (ALU). Latch and Flip Flop: sequential circuits and memories.
A simple implementation scheme for a first processor inspired by RISC-V.
3) Memory Hierarchy
The memory hierarchy: volatile memories (Registers, Cache, RAM) and non-volatile memories (magnetic disks, SSDs, optical disks). Speed, capacity and cost of memories.
Expected Learning Outcomes
Taking part in this course will enable the participants to: Describe the characteristics of the main types of computers. Describe the underlying principles in computer design: abstractions; achieving better performance by optimizing frequent cases, exploiting parallelism, executing operations in a pipeline, anticipating operations through predictions; the impact of memories on computer performance; and how to make systems more reliable through redundancy. Understand the characteristics of programming languages at different levels and explain how to translate from high-level languages to machine language (through interpreters and compilers). Explain how technological evolution has influenced the size, cost, and performance of computers, also leading to their widespread diffusion. Define how computer performance can be measured. List the main stages in the history of computers, from the mid-20th century to today.
Understand the basics of digital data representation (in particular, signed and unsigned integers, fixed- and floating-point fractions, and text according to main standards). Define bit, byte, and their multiples (Kilo, Mega, Giga, Tera). Describe the characteristics of positional notation for the representation of integers (unsigned), and be able to apply the definition with different bases (especially for bases 10, 2, 8, and 16). Recall and apply the algorithms for number conversion between bases. Define the sign-magnitude and two's complement representations for signed integers. Define the representation of fractional numbers in floating-point according to the IEEE 754 standard. Perform arithmetic operations on binary numbers. Understand and exemplify the consequences of data representation on a finite number of bits: overflow and underflow. Describe the ASCII (base and extended) and Unicode standards for text encoding, and the methods for representing Unicode codepoints (UCS-2, UTF-8, UTF-16). Apply the different encodings to short texts in various languages by performing encoding and decoding exercises. Explain the two methods for storing multi-byte encoded data: Little Endian and Big Endian.
Define Boolean Algebra: variables, operators, Boolean expressions, and state the main the laws of algebra. Perform simplification exercises to Boolean expressions by applying these laws. Describe Boolean functions of n variables through truth tables and Boolean expressions; apply methods for deriving Boolean expressions in Sum-of-Products or Product-of-Sums canonical form from the truth table. Define minimal sets of operators necessary to describe any Boolean function; demonstrate that each of these minimal sets allows for the creation of circuits equivalent to all other operators. Define the logic gates that implement Boolean operators. Derive the combinational logic circuit implementing a Boolean expression and vice versa. Describe some basic combinational circuits for CPU implementation: multiplexer, decoder, adders, ALU (Arithmetic Logic Unit). Describe circuits with memory: latch, flip-flop; explain their operation (driven by a clock) and describe how to combine them to obtain registers or memories.
Describe how, by connecting basic combinational circuits and setting appropriate control signals in a coordinated manner, a first prototype of a "data path" capable of executing some fundamental instructions belonging to machine language can be obtained.
Describe the different levels of the "memory hierarchy," explaining the characteristics of the different types of memory (speed, capacity, volatility). Describe some technologies used to implement memories at different levels of the hierarchy.
Last update:09-09-2026 00:14:31