Degree programme
Programme Structure
Show/Search Programme
Course Details
Save Document
Degree Programme
Read Degree Programme
Quantitative data
International context
Customized Schedule
Your customized time schedule has been disabled
Search a Professor
Search a Course
Search a Course (system prior D.M. n. 509)
Search Lessons taught in English

Semester (Sem)
1First Semester
2Second Semester
AAnnual course
Course completely offered in italian
Course completely offered in english
--Not available
Innovative teaching
The credits shown next to this symbol indicate the part of the course CFUs provided with Innovative teaching.
These CFUs include:
  • Subject taught jointly with companies or organizations
  • Blended Learning & Flipped Classroom
  • Massive Open Online Courses (MOOC)
  • Soft Skills
Course Details
Academic Year 2017/2018
School School of Industrial and Information Engineering
Name (Master of Science degree)(ord. 270) - MI (481) Computer Science and Engineering
Programme Year 1

Course Details
ID Code 051899
Course Type Mono-Disciplinary Course
Credits (CFU / ECTS) 5.0
Semester --
Course Description The course introduces students to the concept of Heterogeneous System Architectures, an increasingly adopted architectural paradigm in the entire computing spectrum (from embedded and mobile systems to high performance computing) by discussing their overall architecture and main opportunities and challenges in resources' programmability and management. Nowadays, trends in technology, fabrication processes and computing architectures are leading to the design and development of computing systems constituted by a relevant number of independent, heterogeneous processing resources, such as possibly-asymmetric multiprocessor CPUs, GPUs and (programmable) hardware modules. Indeed, the aim is to exploit the specific peculiarities of the various types of resources to achieve high-performance while leveraging power/energy consumption or other system-level aspects. However, system heterogeneity implies a relevant complexity in the usage of such a system to run a given workload, in terms of programmability (how to code an application to run on different resources) and runtime resource management (how to decide at runtime which processing unit to use for the application execution and how to tune architectural/execution parameters). To identify an optimal solution, system architects need to take into account the efficiency of systems' processing units, as well as the current workload and the working conditions. This course introduces students to the concept of Heterogeneous System Architectures (HSAs). First hardware and architectural aspects will be discussed, by presenting the overall architecture of an HSA and of the contained processing resources; in particular, we will give an overview of the organization of modern CPUs, GPUs and hardware accelerators (in particular FPGAs), and of the communication and memory infrastructure by discussing relevant aspects, such as memory hierarchies, cache coherency and virtual memory issues. Then, we will cover the software stack by discussing its main opportunities and challenges in resources' programmability and management. We will present the OpenCL programming paradigm and then provide some hints on the holistic solution for resource programmability and runtime management proposed by the HSA Foundation. Finally, an overview industrial and academic solutions for runtime resource management will be introduced; we will present the overall resource management framework and will discuss some state-of-the-art adaptation policies aimed at addressing different kinds of trade-off between application performance requirements and system's ones, in terms of energy/power consumption, resource utilization, temperature or lifetime reliability.

Schedule, add and removeAlphabetical groupProfessorLanguageCourse details
From (included)To (excluded)
--AZZZZMiele Antonio Rosario
manifesti v. 3.3.7 / 3.3.7
Area Servizi ICT