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

Slides:



Advertisements
Podobné prezentace
Mikroprocesory Intel Obr. 1.
Advertisements

Tato prezentace byla vytvořena
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.
Úvod. Základní úrovně: hardwarová (procesory, jádra) programová (procesy, vlákna) algoritmická (uf... ) Motivace: zvýšení výkonu redundance jiné cíle,
Sběrnice.
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čů Interpretované jazyky Jakub Yaghob.
Principy překladačů Vysokoúrovňové optimalizace Jakub Yaghob.
Principy překladačů Architektury procesorů Jakub Yaghob.
Informatika 1_6 6. Týden 11. A 12. hodina.
Blokové schéma PC a jeho hardwarová realizace
PROCESORY Základní přehled.
Václav Bartoněk, 6. G MěVG Klobouky u Brna
Procesor.
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)
Počítač, jeho komponenty a periferní zařízení
= 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.
Procesory.
Informatika / …o počítači (základní pojmy, jednoduché představy) 2006.
Přehled a vývoj mikroprocesorů
Tato prezentace byla vytvořena
Zuzana Máslová Zuzana Máslová GIO Semily GIO Semily Nad Špejcharem Semily Nad Špejcharem Semily / /2008 Informace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Začátky mikroprocesorů
Autor:Jiří Gregor Předmět/vzdělávací oblast: Digitální technika Tematická oblast:Digitální technika Téma:Statické paměti RWM – RAM 1. část Ročník:3. Datum.
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.
1. ELEKTRICKÝ SIGNÁL VSTUPUJE DO uPROCESORU 2.VYMAŽE DATA KTERÁ ZŮSTALA V REGISTRECH VNITŘNÍ PAMĚTI 3. NASTAVÍ REGISTR CPU – ČÍTAČ INSTRUKCÍ NA F000 ADRESA.
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 Optimalizace © Milan Keršláger
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
1. ročník oboru Mechanik opravář motorových vozidel
Výukový materiál zpracován v rámci projektu
Operační systémy 1. Základní pojmy
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 7. Optimalizace © Milan Keršlágerhttp:// Obsah: ● typy optimalizací ● optimalizace toku dat, cyklů ● zřetězení, superskalarita ● víceprocesorové systémy ● CISC, RISC

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

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 –...

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)

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

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

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

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

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

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

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

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

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í

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“

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)

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,...

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

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

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