Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Překladače 7. Optimalizace © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● typy optimalizací.

Podobné prezentace


Prezentace na téma: "Překladače 7. Optimalizace © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● typy optimalizací."— Transkript prezentace:

1 Překladače 7. Optimalizace © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● typy optimalizací ● optimalizace toku dat, cyklů ● zřetězení, superskalarita ● víceprocesorové systémy ● CISC, RISC

2 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 (ovladač zřízení) – aby zůstala záměrná forma kódu – ladění pomocí debuggeru

3 Co je optimalizace ● modifikace programu (typicky strojová) ● beze změny funkce programu ● cílem vyšší efektivita, např: – rychlost výpočtu – rychlejší start – méně systémových prostředků – menší kód –...

4 Kdy se optimalizace provádí ● provádění při: 1) při návrhu programu – volba algoritmu – úloha člověka (programátor) 2) jako součást kompilace – ručně (úprava algoritmu či jeho zápisu) – automaticky (strojová úprava kódu) 3) za běhu programu – speciální JIT kompilátory (Just In Time) – profilování (sledování a analýza běhu programu)

5 Rozsah optimalizace 1) lokální ● v rámci bloku programu ● typicky malé lineární části kódu ● nemusí znát kontext programu 2) 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

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

7 Optimalizace toku dat 1 ● 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ů ● identifikace stejných dat

8 Optimalizace toku dat 2 ● sdružování úklidových operací ● hromadné rušení obsahu zásobníku – např. mnohanásobné návraty z funkcí – obsahuje lokální proměnné, parametry ● eliminace nepotřebných výrazů ● výpočet, který není dále použit ● odstraňování nedosažitelného kódu ● jak pro smyčky, tak pro podmínky

9 Optimalizace cyklů 1 ● 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

10 Optimalizace cyklů 2 ● 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

11 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ě

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

13 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

14 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

15 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

16 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

17 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é

18 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 ● umístění cache: ● na procesoru (L1) ● mezi procesorem a pamětí (L2, L3) ● v RAM (při čtení z disku)

19 Cache na procesoru ● typicky označována jako L1 ● instrukční cache – snaha, aby se instrukce (ve smyčce) vešly do cache ● cache pro data – strategické rozmístění dat v RAM ● analýza využití cache ● simulátor procesoru (poskytuje výrobce) ● statistická data od procesoru – za běhu procesoru

20 Cache pro RAM ● nastavení v setupu BIOSu ● BIOS při startu nastavuje chipset ● dvě možnosti: ● writeback → zápis do RAM až později – vznik nekonzistencí, nucený zápis při vylití cache – při zápisu cache okamžitě data přijme – minimalizace doby trvání zápisu z CPU do RAM ● pass-through → zachycení dat při zápisu – procesor čeká, až se data zapíší do RAM – během zápisu cache procházející data zachytí

21 Zarovnání paměti ● RAM připojena k CPU sběrnicí FSB ● tzv. Front-side bus – v současnosti typicky 64 bitů (Intel, AMD) ● paměť na stejné frekvenci, jako FSB – procesor běží rychleji (podle zvoleného násobku) ● RAM do matice podle šířky FSB – čtení sousedních bajtů musí být někdy nadvakrát – data umisťována tak, aby stačilo jedno čtení ● tj. při ukládání dat se nevyplatí „šetřit“

22 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)

23 Endianita ● způsob ukládání větších čísel (pořadí bajtů) 1) big endian – Motorola 68000, SPARC – pomůcka: „big end first“ – číslo 0x1234 v paměti postupně po bajtech: 12, 34 2) little endian – Intel, DEC VAX – pomůcka: „little end first“ – číslo 0x1234 v paměti postupně po bajtech: 34, 12 ● problém při komunikaci mezi systémy ● musí být určen např. zápis portu, IP adresy,...

24 Koprocesor ● doplňující procesor v počítači (coprocesor) ● pro operace v plovoucí řádové čárce → FPU – Floating Point Unit (od součást CPU) ● pro grafiku → GPU – Graphical Processor Unit – tzv. offloading (delegování výpočtu na GPU) ● šifrovací procesory – rychlé provádění transformací dat ● signálové procesory – Digital Signal Processing (DSP) – Analog signal processing (filtry, mixér, zpoždění...) – Discrete signal processing

25 Optimalizace cílového kódu 1 ● alokace registrů ● rozhodnutí, jaké proměnné a kdy v registrech – registrů je málo – používají se grafy, barvení grafů ● výběr instrukcí ● lepší varianta (varianty u CISC, rozšíření MMX...) ● využití koprocesoru ● maximalizace využití zřetězení ● překrývání zpracování strojových instrukcí ● vhodné přerovnání instrukcí beze změny smyslu

26 Optimalizace cílového kódu 2 ● maximalizace využití superskalarity ● paralelní zpracování strojových instrukcí ● opět vhodné přerovnání instarukcí ● optimalizace cache ● v CPU jak pro data, tak pro instrukce ● rozložení kódu v binárním souboru (cache v RAM) ● zarovnání paměti ● eliminace dvojího čtení z paměti


Stáhnout ppt "Překladače 7. Optimalizace © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● typy optimalizací."

Podobné prezentace


Reklamy Google