Detail předmětu
Architektura procesorů
ACH Ak. rok 2018/2019 zimní semestr 5 kreditů
Předmět pokrývá architekturu univerzálních i specializovaných procesorů. Paralelismus na úrovni instrukcí (ILP) je studován na procesorech skalárních, superskalárních a VLIW. Dále jsou probrány procesory s vláknovým paralelismem (TLP). Datový paralelismus je ilustrován na SIMDových instrukcích a na grafických procesorech (SIMT). Probírají se základní techniky paralelizace výpočtů na GPU (CUDA). Jsou vysvětleny i techniky nízkopříkonových procesorů.
Garant předmětu
Jazyk výuky
Zakončení
Rozsah
- 26 hod. přednášky
- 10 hod. pc laboratoře
- 16 hod. projekty
Bodové hodnocení
- 60 bodů závěrečná zkouška (písemná část)
- 10 bodů půlsemestrální test (9 bodů písemná část, 1 bodů testová část)
- 30 bodů projekty
Zajišťuje ústav
Přednášející
Cvičící
Získané dovednosti, znalosti a kompetence z předmětu
Přehled mikroarchitektury procesorů a jejich trendů, dovednost porovnat procesory a simulovat vhodnými nástroji vliv změn v jejich architektuře. Osvojit si měření výkonnosti procesorů. Znalosti o architektuře a obvodové podpoře paralelního zpracování na grafických procesorech bezprostředně využitelné pro akceleraci výpočtů.
Cíle předmětu
Seznámit se s architekturou nejnovějších procesorů pracujících s paralelismem na úrovni instrukcí, vláken a dat. Ujasnit si úlohu překladače a jeho spolupráci s procesorem. Získat schopnost orientovat se v nabídce mikroprocesorů, dovést je hodnotit a porovnávat. Dále se seznámit s architekturou grafických procesorů a jejich použitím pro akceleraci výpočtů (GPGPU) a s technikami použitými u nízkopříkonových procesorů pro mobilní aplikace.
Proč je předmět vyučován
Existuje spousta problémů a programovacích jazyků, kde na výkonu aplikace, použitém procesoru nebo spotřebě elektrické energie nezáleží. Pokud programuji v Java nebo Pythonu, pak mě použitý procesor v podstatě nezajímá. Co ale dělat v případě, kdy pracuji na složitém úkolu a výkon aplikace, či příkon systému je věc naprosto kritická? Odpověď je jednoduchá, musím program uzpůsobit použitému procesoru!
Smyslem kurzu ACH je detailně rozebrat architekturu současných superskalárních procesů a grafických karet s jediným cílem: "Vyrazit ze systému maximální výkon v dané aplikace".
Naučíte se tedy, jak procesor pracuje se složitými proudy instrukcí, jak spekulativně provádí různé části kódu nebo jak efektivně přednačítá data z paměti. Velký důraz klademe na vektorizaci smyček, což jeden z hlavních trendů navyšování výkonu procesorů a naprosto klíčová technologie pro akceleraci programů pomocí grafických karet.
Požadované prerekvizitní znalosti a dovednosti
Architektura počítače typu von Neumann, hierarchická organizace paměťového systému, programování v JSI, činnost a funkce kompilátoru
Technické vybavení
komerční
- Intel Compilatory a tooly, Superpočítač Anselm a Salomon, Allinea debugger
volně dostupné- Překladače C++ a CUDA 8.0
Literatura studijní
- current PPT slides for lectures
- http://inst.eecs.berkeley.edu/~cs152/sp13/
- https://www.anandtech.com
- Agner Fog: Software optimization resources
- Intel Architecture Optimization Manual
- Nvidia CUDA SDK Manual
- Baer, J.L.: Microprocessor Architecture. Cambridge University Press, 2010, 367 s., ISBN 978-0-521-76992-1
- Hennessy, J.L., Patterson, D.A.: Computer Architecture - A Quantitative Approach. 5. vydání, Morgan Kaufman Publishers, Inc., 2012, 493 s., ISBN: 978-0-12-383872-8
- Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2010, s. 256, ISBN: 978-0-12-381472-2
- Jeffers, J., and Reinders, J.: Intel Xeon Phi Coprocessor High Performance Programming, 2013, Morgan Kaufmann, p. 432), ISBN: 978-0-124-10414-3
Osnova přednášek
- Skalární procesory: zřetězené zpracování, asistence kompilátoru.
- Superskalární CPU, dynamické plánování instrukcí, predikce skoků.
- Optimalizace toku dat přes registry a přes paměť, hierarchie pamětí cache.
- Optimalizace načítání instrukcí a dat. Příklady superskalárních procesorů.
- Procesory s podporou datového paralelismu, SIMDová a vektorizace.
- Procesory s podporou vláken.
- Architektura grafických jednotek GPU a zpracování SIMT.
- Programovací jazyk CUDA, model vláken a paměťový model.
- Synchronizace a redukce na GPU, návrh a optimalizace algoritmů pro GPU.
- Víceproudové zpracování, multi-GPU systémy, knihovny pro programování na GPU.
- Architektura akcelerátorů s mnoha jádry (MIC, Xeon Phi) a jejich programování.
- Procesory s velmi dlouhým instrukčním slovem (VLIW). SW řetězení, predikace, binární překlad.
- Techniky nízkopříkonových procesorů.
Osnova počítačových cvičení
- Měření výkonnosti sekvenčního kódu.
- Vektorizace kódu pomocí OpenMP 4.0.
- CUDA: Paměťové přenosy, jednoduché kernely.
- CUDA: Práce se sdílenou pamětí.
- CUDA: Práce s texturní a konstantní pamětí, operace redukce.
Osnova ostatní - projekty, práce
- Měření výkonnosti a optimalizace procesorového kódu pomocí OpenMP 4.0
- Akcelerace výpočetní úlohy pomocí CUDA 8.0
Průběžná kontrola studia
Vyhodnocení dvou projektů v celkovém rozsahu 13 hodin, bodovaná počítačová cvičení, půlsemestrální písemka.
Podmínky zápočtu:
Získání 20 ze 40 bodů za projekty a půlsemestrální písemku.
Kontrolovaná výuka
- Zameškaná cvičení je možné nahradit v alternativní termín (pondělí nebo pátek)
- V poslední týdnu semestru budou probíhat náhradní civčení
Podmínky zápočtu
Získání 20 ze 40 bodů za projekty a půlsemestrální písemku.
Zařazení předmětu ve studijních plánech
- Program IT-MGR-2, obor MBI, MIN, MIS, MMM, libovolný ročník, volitelný
- Program IT-MGR-2, obor MBS, libovolný ročník, povinně volitelný skupina C
- Program IT-MGR-2, obor MGM, 2. ročník, volitelný
- Program IT-MGR-2, obor MPV, 2. ročník, povinný
- Program IT-MGR-2, obor MSK, 2. ročník, povinně volitelný skupina C