Překladače Optimalizace © Milan Keršláger 27.9.2016

Slides:



Advertisements
Podobné prezentace
Mikroprocesory Intel Obr. 1.
Advertisements

Mikroprocesory Procesory. Procesor je synchronní zařízení provádí operace s daty je programovatelný pomocí mikroinstrukcí je více rodin procesorů (jednočipy.
Otázky k absolutoriu HW 1 - 5
Procesory Filip Skulník.
ZÁKLADNÍ DESKA.
Úvod. Základní úrovně: hardwarová (procesory, jádra) programová (procesy, vlákna) algoritmická (uf... ) Motivace: zvýšení výkonu redundance jiné cíle,
Zpracování programu programovatelným automatem. Zpracování programu na PA se vykonává v periodicky se opakujícím uzavřeném cyklu, tzv. scanu. Nejprve.
Třídění PA. Kompaktní PA (KPA) -menší - měly původně pevně danou konfiguraci integrovaných modulů a byly uzavřeny v jednom pouzdře. -Pouzdro se montuje.
Principy překladačů Vysokoúrovňové optimalizace Jakub Yaghob.
Principy překladačů Architektury procesorů Jakub Yaghob.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Václav Bartoněk, 6. G MěVG Klobouky u Brna
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_02A13 Autor Ing. Jiří Kalousek Období vytvoření duben 2014.
Základy mikroprocesorové techniky
Paměťové obvody a vývoj mikroprocesoru
Tato prezentace byla vytvořena
Výrok „Počítač je pouze tak inteligentní jako jeho uživatel.“ (Radek Lochman, dnes)
Jak pracuje počítač vstupní a výstupní zařízení počítače
= monolitický integrovaný obvod obsahující kompletní mikropočítač
Procesory. Co je procesor?  Procesor je jedna ze základních součástí počítače (laicky nazýván mozkem počítače). Probíhají v něm všechny hlavní operace.
Neuronové sítě na grafických akcelerátorech Ondřej Zicha, Jiří Formánek.
Procesory.
Přehled a vývoj mikroprocesorů
Tato prezentace byla vytvořena
Pokročilé architektury počítačů (PAP_04.ppt) Karel Vlček, katedra Informatiky, FEI VŠB Technická Univerzita Ostrava.
Začátky mikroprocesorů
CZ.1.07/1.4.00/ VY_32_INOVACE_152_IT7 Výukový materiál zpracovaný v rámci projektu Vzdělávací oblast: Informační a komunikační technologie Předmět:Informatika.
Karel Vlček, Modelování a simulace Karel Vlček,
Marek Malík a František Černý, ME4A, 2012
Architektura počítače
Vnitřní (operační paměť)
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Univerzita třetího věku kurz Znalci Hardware 1.
Mikroprocesor.
Kontakty slajdy: ftp://ulita.ms.mff.cuni.cz/predn/POS.
Procesory.
Digitální signálový procesor (DSP) Digitální signálový kontrolér (DSC) Blokové schéma mikroprocesroru.
Číslo projektu CZ.1.07/1.5.00/ Název školy Gymnázium Česká a Olympijských nadějí, České Budějovice, Česká 64 Název materiálu VY_32_INOVACE_IVT_1_KOT_04_PROCESOR.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Technika počítačů 3. Mikroprocesory © Milan Keršlágerhttp:// Obsah: ●
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Blokové schéma počítače.
Operační systémy Základní pojmy © Milan Keršláger Obsah: základní.
John von Neumannova koncepce. John von Neumann  Narozen 28. prosince 1903 Budapešť Rakousko-Uhersko  Zemřel 8. února 1957 Spojené státy americké.
Překladače 7. Optimalizace © Milan Keršlágerhttp:// Obsah: ● typy optimalizací.
Rozdělení počítačů. Počítače rozdělujeme podle mnoha kritérií z nichž některé dále probereme. Nejčastější rozdělení je na počítače typu :  CISC (Complex.
ZŠ Brno, Řehořova 3 S počítačem snadno a rychle Informatika 7. ročník III
Překladače Operační paměť © Milan Keršláger
Vývoj architektur mikroprocesorů Od 4 bitů k superskalárnímu RISC Vývoj architektur mikroprocesorů Od 4 bitů k superskalárnímu RISC Pavel Píša
Základní desky Marek Kougl 1.L.
Stránkování MATĚJ JURIČIČ 2015/2016 EP1 SPŠ A VOŠ JANA PALACHA KLADNO.
PC základní jednotka.
Výukový materiál zpracován v rámci projektu
ALU Aritmeticko-logická jednotka
Překladače 7. Optimalizace
Procesor Procesor (CPU – Central Processing Unit) je ústřední výkonnou jednotkou počítače, která čte z paměti instrukce a na jejich základě vykonává program.
Výukový materiál zpracován v rámci projektu
Petr Fodor.
1. ročník oboru Mechanik opravář motorových vozidel
1. ročník oboru Mechanik opravář motorových vozidel
Výukový materiál zpracován v rámci projektu
Hardware číslicové techniky
Operační systémy 9. Spolupráce mezi procesy
Operační systémy 1. Základní pojmy
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Správa paměti.
Centrální procesorová jednotka
1. ročník oboru Mechanik opravář motorových vozidel
Segmentace Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Informatika / …o počítači
Paměť.
Transkript prezentace:

Překladače Optimalizace © Milan Keršláger

Optimalizace ● první část zadní části překladače ● závislá na cílové platformě ● vstup i výstup: typicky intermediální kód ● vhodnější forma pro optimalizace ● chyby optimalizace ● někdy je nutné optimalizaci vyloučit – časově kritické operace – záměrná forma kódu

Co je optimalizace ● modifikace programu (typicky strojová) ● beze změny funkce programu ● cílem vyšší efektivita – rychlost výpočtu, rychlejší start, méně systémových prostředků, menší kód,... ● při návrhu programu – volba algoritmu ● jako součást kompilace – ručně, automaticky ● za běhu programu – JIT, profilování

Rozsah optimalizace ● lokální ● v rámci bloku programu ● typicky malé lineární části kódu ● nemusí znát kontext programu ● globální ● v rámci podprogramů – reorganizace kódu, zánik nepoužívaných částí,... ● v rámci celého programu – související kód blízko sebe

Typy optimalizací ● optimalizace toku dat ● způsob zpracování výrazů ● volba metody zpracování a vyhodnocení výrazu ● optimalizace cyklů ● reorganizace běhu programu ● hledání lepšího zápisu algoritmu ● optimalizace generování cílového kódu ● zaměření na použitou platformu, mikroprocesor ● závislé na hardware

Optimalizace toku dat ● eliminace společných podvýrazů ● (a+b)*(a+b) – zbytečný stejný výpočet ● výpočet konstantních podvýrazů ● (3+5)*x – výpočet již při kompilaci ● analýza ukazatelů ● identifikace společných ukazatelů, stejných dat

Optimalizace cyklů ● slučování cyklů ● stejný rozsah řídící proměnné ● rozdělování cyklů ● optimalizace zpracování dat (cache) ● zaměňování cyklů ● vnitřní a vnější → lepší využití cache ● konstantní výrazy ● výraz má při průchodech stále stejnou hodnotu

Optimalizace cyklů ● rozvinutí cyklu ● pro pevný počet opakování je kód duplikován ● ušetří se vyhodnocování, skoky (režie) ● unswitching ● vysunutí podmínky vně cyklu + duplikování cyklu ● indukční proměnné ● v každém cyklu se mění stejně (výpočet → součet) ● automatická paralelizace ● paralelizace nebo vektorizace výpočtu

Hardwarově závislé ● optimalizace cílená na platformu, procesor ● nejen CPU, ale i zbytek počítače (sběrnice, I/O) ● nutná detailní dokumentace ● zveřejňuje výrobce hardware ● Intel vlastní kompilátor, podílí se na optimalizacích – sponzorování vývoje GCC apod. ● nástroje pro simulace chování procesoru ● hardware zveřejňuje interní údaje – využití cache (miss, hit, vylévání) – měření počtu tiků hodin a podobně

Schéma procesoru ALU Registry Řadič paměti Řídící jednotka Dekodér instrukcí Prováděcí jednotka

Popis částí procesoru ● řídící jednotka ● organizace činnosti částí procesoru, hodiny ● dekodér instrukcí ● načítání a dekódování následující instrukce ● řadič paměti (+ cache) ● stránkování, segmentace → získání fyzické adresy ● ALU, prováděcí jednotka ● vlastní vykonávání instrukcí ● registry → uchovávání dat

Zřetězení (pipelining) ● jednotlivé části procesoru pracují postupně ● dle pokynů řídící jednotky ● postup provedení instrukce ● načtení, dekódování, provedení, uložení výsledku ● nečinné části lze zaměstnat ● po dekódování instrukce lze dekódovat další ● v jednom okamžiku různě rozpracované instrukce ● potíže se skokem (podmíněným) ● nutno zahodit rozpracované instrukce

Superskalarita ● některé části procesoru duplikovány ● více ALU, FPU ● ale ne duplikace celého procesoru (viz multicore) ● paralelní zpracování instrukcí ● pouze pokud se navzájem neovlivňují ● v jednom taktu více instrukcí najednou ● Intel → hyperthreading ● dvě řídící jednotky, ale ne celá jádra ● někdy se musí čekat na uvolnění neduplik. části

Víceprocesorové systémy ● více procesorů sdílí stejnou operační paměť ● procesor musí žádat o přístup do paměti (zápis) ● → procesor čeká na uvolnění přístupu ● stejný problém s datovými strukturami ● → souběh → zamykání ● NUMA ● každý procesor „svůj region paměti“ ● omezení vzájemné blokace – žádost o přístup jen při přístupu do paměti jiného CPU

SMP vs. ASMP ● jde o systém využití více procesorů ● návrh jádra operačního systému ● symetrický multiprocesing → nejrozšířenější ● všechny procesory jsou si rovny ● datové struktury se důsledně zamykají ● při zamykání vzniká problém uváznutí (deadlock) ● asymetrický multiprocesing ● procesory pro různé činnosti (IRQ, I/O, jádro OS...) ● ASMP OS (Novell Netware) – jen jeden procesor vykonává kód jádra → jednoduché

Cache ● rychlá vyrovnávací paměť ● odděluje různě rychlé komponenty (CPU × RAM) ● ideálně obsahuje data, ke kterým se přistupuje – zrychlení opakovaného přístupu – naplnění širší sběrnicí (okolní obsah RAM) – problém vhodné strategie ● různé způsoby zápisu do RAM ● writeback → zápis do RAM až později – vznik nekonzistencí, nucený zápis při vylití cache ● pass-through → zachycení dat při zápisu

CISC vs. RISC ● RISC → ARM, MIPS, SPARC,... ● redukovaná instrukční sada – jednoduché, stejně dlouhé instrukce, provedení v 1 taktu ● jednodušší konstrukce procesoru – jednodušší logika, lze větší cache, menší spotřeba,... ● CISC → Intel x86 a kompatibilní ● rozšířená instrukční sada ● specializované instrukce (násobení) ● komplikuje návrh procesoru ● dnes již nemá význam (používáme překladače)

Optimalizace cílového kódu ● alokace registrů ● umístění proměnných do registrů → grafy, barvení ● výběr instrukcí ● lepší varianta (zejména u CISC procesorů) ● využití pipeline ● překrývání zpracování strojových instrukcí ● využití superskalarity ● paralelní zpracování strojových instrukcí ● optimalizace cache ● jak pro data, tak pro instrukce