ING-INF/05 (SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI)
DIPARTIMENTO DI INGEGNERIA INDUSTRIALE E DELL'INFORMAZIONE
Corso di studio
Primo Semestre (30/09/2019 - 20/01/2020)
54 ore di attività frontale
SCRITTO E ORALE CONGIUNTI
Basic understanding of computer architecture and assembly language. The C-language is required for the programming lab and associated project.
The course describes the architecture of modern processors and multi-processors and introduces the principles of parallel programming. The student will understand the principle of operation of current processors and will be able to assess the distinctive features of general purpose vs embedded microprocessors vs special purpose accelerators (GPUs & tensor flow processors). The emerging multi-core paradigm and the associated shared-memory architecture will be discussed and will be the basis for a parallel programming project following the OpenMP standard.
The Google Cloud platform will be used for instantiating VMs with enough cores to effectively test the parallel project.
Programma e contenuti
The course is split into two major areas: a description of the architetures and a laboratory on parallel programming. Part I -The processor. This part of the course introduces the basic concepts underlining the design of modern processors.The Instruction Set Architecture (ISA). A Taxonomy for ISAs: CISC, RISC, general purpose, embedded, multimedia, thread & tensors. Basic pipelining: control, hazards, exceptions. Superscalar pipelines: static multiple issue, the VLIW approach. Dinamic scheduling, speculative execution. Compiler support and software optimization. Caches and memory hierarchy: locality. Structure and organization: direct mapping, associativity. Pipelined and multi-level caches. Part II - Multi-processors. A review of multi-processors and parallel architectures, with emphasis on multi-core processors. Parallel processing: SIMD, MIMD, data parallelism, thread parallelism, coarse-grain parallelism. Parallel architectures: shared-memory, distributed memory, clusters. GPU and tensors flow architectures. Part III - Parallel programming. An introduction to parallel processing, with hands-on lab on OpenMP. The available paradigms: SMP, MPI, graphics and CUDA. The OpenMp standard
Lectures (hours/year in lecture theatre): 32. Practical class (hours/year in lecture theatre): 22. Practicals / Workshops (hours/year in lecture theatre): 0 Lectures are delivered through presentations posted on the course web site.
Testi di riferimento
1) Ferretti, D. Gunetti. Course charts (in pdf). available for download form the course website
2) J. L. Hennessy & D. A. Patterson. Computer Architecture: A Quantitative Approach, 3rd - 4rth and 5th editions. Elsevier - Morgan Kaufmann. See detailed instructions on the course website for editions and chapters to be used.
3) D. A. Patterson & J. L. Hennessey. Computer Organization and Design: The Hardware/Software Interface, Revised 4th Edition. Morgan Kauffman. See deteiled instruction in the Course website for chapters to be used.
Modalità verifica apprendimento
The final assessment is composed of a parallel programming project, of a discussion of the project and of a written test (oral examination is optional).
Free access for a limited amount of computing reources on the Google Cloud Platform will be made available to registered students to develop the final project.
Obiettivi Agenda 2030 per lo sviluppo sostenibile