Learning outcomes of the course unit
The purpose of the course to illustrate the basic mechanisms of operation of computing systems and in particular the interaction between the modules (CPU, memory, I / O) of a computer.
The student will acquire the ability to understand the basic functioning of modern CPUs.
Students completing the course will be able to write simple programs in assembler.
Course contents summary
The purpose of the course is to give the students the basic concepts of the modern CPU architectures and computer systems. The course comprises the fundamental knowledge of the programming in language assembly. The concepts are exposed in a general way; when necessary it is made directed reference the architecture of the INTEL CPU family.
* Advanced Computer architecture
Introduction to the architecture of the modern CPUs.
CISC and RISC approaches.
Pipeline and superscalar architectures.
I/O subsystem: interrupt and DMA
* The Memories:
Memory systems hierarchy
Electronic and magnetic technologies. Memory technologies such as DRAM, EPROM.
Main memory organization: characteristics and performance
Latency, cycle time, bandwidth, and interleaving
Cache memories (address mapping, line size, replacement and write-back policies)
Virtual memory systems.
* Distributed and parallel architectures
Taxonomies: parallel machine models (SIMD, MIMD, SISD, MISD): Flynn’s taxonomy. Amdahl law and performance parameters.
Multiprocessors and multi-computers: topology, tightly coupled and loosely coupled architectures
Introduction to clusters.
* The Architecture of the CPU x86
Registers and register files
Instruction types and addressing modes
Subroutine call and return mechanisms
Programming in assembly language
I/O techniques and interrupts
G.Bucci, Architettura e organizzazione dei calcolatori elettronici – Strutture avanzate, McGraw-Hill, 2006.
Randall Hyde, “The art of Assembly Programming”; an online handbook on assembly language: http://www.ce.unipr.it/didattica/calcolatori/docs/aoa.pdf.
The course includes 60 hours of traditional classroom lectures and 12 hours of training in the laboratory.
Assessment methods and criteria
The course includes a written test on the topics of the course and a practical test of programming in assembler.