Course Details

Computer architecture 1

MF0789

Course
Computer architecture 1
Code
MF0789
Academic Year
2026/2027
Curriculum Year
2026/2027
Degree Programme
CHEMISTRY
Curriculum
000 - CORSO GENERICO
Credits
6
Lecture Hours
48
Scientific Disciplinary Sector (SSD)
INFO-01/A - Informatics
Course Type
Single-subject learning activity
Course Delivery
OBB - Obbligatoria
Year
1
Teaching period
Primo Semestre
Campus
ALESSANDRIA
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
The course introduces a set of basic concepts concerning the physical architecture (hardware) of computers, and it concentrates on the Central Processing Unit (CPU) and the memory system. Such concepts also recur at other levels in the structure of computing systems, for this reason it is important that they be assimilated in introductory courses. One objective is to recognize the existence of different levels of abstraction and to understand how simple components (for example, logic gates built from transistors) can be combined to construct systems that provide more advanced functionalities, corresponding to increasingly complex instruction sets.
The different ways in which basic elements can be combined to achieve the desired functionalities may result in systems with different levels of performance. Metrics are therefore introduced to enable comparisons between the performance of different architectures that implement the same or similar instruction sets. Considerations regarding the evolution of the technology underlying digital systems and its impact on cost, performance, and reliability help explain the remarkable development and widespread adoption of such systems. It is particularly interesting to observe how combining higher-performance but more expensive technologies with lower-performance but less expensive ones make it possible to build systems that provide satisfactory performance at sustainable cost: the memory hierarchy is one example of this approach.
The binary code processed by digital systems can be used to represent different types of data in a form that can be processed and stored by the physical components described in the course. The encoding of basic data types (integer and fractional numbers, text, and images) is introduced, highlighting the relationship between the size (in bits) of a representation and the range of values that can be represented and/or the precision of the representation. Understanding procedures for encoding, decoding, and processing data in binary representation makes it possible to gain practical experience of how such data can be stored in memory and processed by the CPU.
Furthermore, the correspondence between Boolean algebra expressions and logic circuits allows one to understand how functions operating on binary variables can be translated into the physical components that make up CPUs and memories, and how the laws of Boolean algebra can be applied to design optimized circuits.
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 final test is normally written, although students may request an oral examination. In addition, after the written examination, the teacher may propose an oral supplementary assessment when clarification of specific points in the written answers is required. Midterm assessments may also be offered to support students in successfully completing the final examination.
The written examination comprises four to six questions, which may be articulated into sub-questions and may also include exercises requiring students to apply the concepts learned to concrete examples. The questions are designed to assess the extent to which the learning objectives have been achieved.
To obtain a passing grade (18–21), students must be able to state the fundamental definitions, demonstrate their ability to apply simple procedures for encoding and decoding data in binary form, and recognize basic combinational and sequential circuits and describe their functions.
To obtain a good grade (22–25), students must also demonstrate knowledge of methods for encoding and decoding more complex data and an understanding of the relationship between the number of bits used in a representation and the range of representable values or the precision of the representation. In addition, students must demonstrate knowledge of performance metrics and be able to compare the performance of different types of processors or different memory organizations.
To obtain a very good grade (26–29), students must additionally be able to apply the laws of Boolean algebra to simplify a Boolean function and the rules for translating it into a logic circuit. They must also demonstrate knowledge of the components of the simplified CPU introduced in the course and explain how these components interact during the execution of an assembly language (RISC-V) instruction.
An excellent grade (30–30 with honors) is awarded to students who demonstrate a thorough understanding and assimilation of the fundamental concepts, appropriate use of technical terminology, accuracy in solving exercises with a detailed presentation of the individual steps, and complete mastery of the subject matter. This mastery should be reflected in an appropriate level of depth in all answers, as well as, where relevant, in observations concerning critical issues and possible methods for addressing them.
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