Překladače 7. Optimalizace

Slides:



Advertisements
Podobné prezentace
:-) Asymptotická složitost algoritmů Autor: Antonín DANĚK Semestrální projekt 1 – Y14TED.
Advertisements

Petr Krčmář Virtualizace (především linuxová) InstallFest 2011.
Překladače 7. Optimalizace © Milan Keršlágerhttp:// Obsah: ● typy optimalizací.
Překladače Optimalizace © Milan Keršláger
Počítačové sítě 8. Využití sítí © Milan Keršlágerhttp:// Obsah: ● sdílení v sítích.
Využití informačních technologií při řízení obchodního řetězce Interspar © Ing. Jan Weiser.
Informatika pro 5. ročník Úvod do světa počítačů - Hardware.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Maticové počítače. Při operacích s maticí se větší počet prvků matice zpracovává současně a to při stejné operaci. Proto se pro tyto operace hodí nejlépe.
Název školyZákladní škola praktická Rožnov pod Radhoštěm Číslo projektuCZ / / Číslo materiáluVY_32_INOVACE_225 AutorMgr. Romana Rybiařová.
1.3 Sběrnice (bus). sběrnice  sběrnice = skupina vodičů  slouží pro propojení a komunikaci jednotlivých obvodů a přídavných karet  činnost na sběrnicích.
Technologie počítačů 4. Sběrnice © Milan Keršlágerhttp:// Obsah: ● ISA, EISA, VL-BUS,
Výukový materiál zpracovaný v rámci projektu EU peníze školám Registrační číslo projektu:CZ.1.07/1.4.00/ Šablona:III/2 Inovace a zkvalitnění výuky.
PAMĚTI Paměť počítače je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměť počítače je zařízení, které slouží k ukládání.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Vnitřní paměti.
Architektura operačních systémů
Rozhraní a porty Jsou to prvky, které vytvářejí rozhraní mezi počítačem a periférním zařízením.
Nadpis prezentace Zdeněk Tišl
Základy automatického řízení 1
Počítačové systémy 1. Stavba počítače
Počítačové sítě 16. IPv6 Obsah: původ IPv6, IPv6 adresa a její zápis
Proudové zpracování informace
Technické vybavení počítače - Počítač PC
Operační systémy Hardwarové prostředky využívané počítačem
Výukový materiál zpracován v rámci projektu
Matematika 3 – Statistika Kapitola 4: Diskrétní náhodná veličina
Správa paměti - úvod 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: 
Výukový materiál zpracován v rámci projektu
Obrázky Ram Rom Nástupci ROM Počítačová pamět Obrázky Paměti Ram rom
Hardware číslicové techniky
Výukový materiál zpracován v rámci projektu
MIKROPROCESOROVÁ TECHNIKA
Digitální učební materiál zpracovaný v rámci projektu
Výukový materiál zpracován v rámci projektu
Jednočipové počítače – aplikace I2C sběrnice
Řadič Orbis pictus 21. století
Programovací jazyky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Workshop projektu systémová podpora sociální práce v obcích na téma:
Mikroprocesor.
Financováno z ESF a státního rozpočtu ČR.
Souběh 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: 
METODICKÝ LIST PRO ZŠ Pro zpracování vzdělávacích materiálů (VM)v rámci projektu EU peníze školám Operační program Vzdělávání pro konkurenceschopnost   
Proxy server a Firewall
Stránkování 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: 
ZÁKLADNÍ ŠKOLA, JIČÍN, HUSOVA 170 Číslo projektu
1. ročník oboru Mechanik opravář motorových vozidel
Plánování procesů 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: 
Elektromagnetická slučitelnost
Výukový materiál zpracován v rámci projektu
Katastr nemovitostí (KNEM)
jednočipových počítačů I
Výukový materiál zpracován v rámci projektu
Stavební fakulta ČVUT, B407
Číslicové měřící přístroje
Číslicové měřící přístroje
Jak postupovat při měření?
Hardware číslicové techniky
Technické vybavení počítačů v kostce
Instalace OS Linux 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: 
Programovatelné automaty (Programmable logic controllers – PLC)
Centralizované rozvojové projekty 2017
Materiál byl vytvořen v rámci projektu
Remote login.
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Přednášky z Distribuovaných systémů
Teorie chyb a vyrovnávací počet 2
Procesy – základní pojmy
Algoritmizace a datové struktury (14ASD)
Diagnostika dítěte předškolního věku
Union neboli sjednocení Bitová pole
Transkript prezentace:

Překladače 7. Optimalizace Obsah: typy optimalizací optimalizace toku dat, cyklů zřetězení, superskalarita víceprocesorové systémy CISC, RISC © Milan Keršláger http://www.pslib.cz/ke/slajdy 10. 4. 2013 http://creativecommons.org/licenses/by-nc-nd/3.0/

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: při návrhu programu volba algoritmu úloha člověka (programátor) jako součást kompilace ručně (úprava algoritmu či jeho zápisu) automaticky (strojová úprava kódu) za běhu programu speciální JIT kompilátory (Just In Time) profilování (sledování a analýza běhu programu)

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 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 SETI@Home, 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 Registry ALU Řadič paměti Prováděcí jednotka Řídící Dekodér instrukcí

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 zpracování více instrukcí najednou zvýšení výkonu procesoru (není ale více procesorů) CPU typově MIMD (Multiple Instruction, Multiple Data) výpočet je stále prováděn v jednom vlákně v jednom taktu může být dokončeno více strojových instrukcí některé vnitřní části CPU jsou duplikované aritmeticko-logická jednotka (ALU) celočíselná násobička, jednotka pro bitové posuny jednotka pro zpracování čísel s plovoucí čárkou (FPU) problém závislosti instrukce na výsledku předchozí problém atomicity → musí se emulovat

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 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) problém návrhu jádra OS v době návrhu existovaly jen v PC jen UP (1 CPU) zamykáním (souběhem) se nikdo nezabýval pak to bylo potřeba do jádra „došít“ BIGLOCK (BKL) → jeden velký zámek nejjednodušší řešení, ale blokuje všechny ostatní CPU jeho odstranění: Windows 7 (skoro), Linux (plně 2011-5)

ASMP asymetrický multiprocesing máme více CPU, ale jádro OS jen pro UP řešení dovolíme jádru běžet jen na CPU#0 zavolá-li proces jádro z CPU#1, musí syscall čekat na přidělení prvního jádra procesoru (CPU#0) → problém zamykání řešíme serializací provádění kódu jádra → tím pádem nejsou potřeba zámky je to nejsnadnější přizpůsobení UP jádra pro (A)SMP ale spoustu času pročekáme na jádro CPU#0 příklad ASMP OS: Novell Netware 4.x byl to fileserver (sdílení disků v LAN), pomohlo to je možné, že některé činnosti jádra i na jiných CPU

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ů) big endian Motorola 68000, SPARC pomůcka: „big end first“ číslo 0x1234 v paměti postupně po bajtech: 12, 34 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 80486 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í instrukcí 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