C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -1- C2115 Praktický úvod do superpočítání Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno XII. lekce / Modul 1 Revize 1 C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -2- Reprezentace číselných hodnot C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -3Typické schéma počítače CPU severní můstek severní můstek jižní můstek jižní můstek USB myš, klávesnice hodiny reálného času řadiče SATA pevné disky BIOS grafický systém paměť řadič paměti periferie s rychlým přístupem přes PCI Express síť (ethernet)zvuk PCI sběrnice řadič paměti se stává součástí nejnovějších procesorů GPGPU C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -4- CPU Procesor též CPU (anglicky Central Processing Unit) je základní součástí počítače; jde o velmi složitý sekvenční obvod, který vykonává strojový kód uložený v operační paměti počítače. Strojový kód je složen z jednotlivých strojových instrukcí počítačových programů nahraných do operační paměti. www.wikipedia.org CPU řadič ALU ALU (arithmetic and logic unit), vykonává aritmetické operace, vyhodnocuje podmínky načítá strojové instrukce a data a připravuje jejich zpracování v ALU sekvenční zpracovávání strojových instrukcí je řízeno vnitřním hodinovým taktem Jakým způsobem CPU (ALU) pracuje s číselnými hodnotami? C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -5Celá čísla Nejmenší jednotkou informace v číslicové technice je jeden bit. Z bitů se skládají slova. Nejmenším slovem je byte, který obsahuje 8 bitů. Jeden byte může popsat celá čísla s rozsahem od 0 do 255. 128 64 32 16 8 4 2 1 0 1 0 1 0 1 1 1 = 87 Lze vyjádřit i celá čísla se znaménkem. V tomto případě je jeden bit vyhrazen pro znaménko, zbývající bity pro číslo. Existuje několik možností implementace. Intel architektura využívá dvojkový doplněk, který vede k rozsahu od -128 do 127. 128 64 32 16 8 4 2 1 0 1 1 1 1 1 1 1 = 127 0 1 0 1 0 1 1 1 = 87 0 0 0 0 0 0 0 1 = 1 0 0 0 0 0 0 0 0 = 0 1 1 1 1 1 1 1 1 = -1 1 0 1 0 1 0 0 1 = -87 1 0 0 0 0 0 0 0 = -128 bit vyhrazený pro znaménko C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -6Celá čísla, II Celé čísla s větším dynamickým rozsahem lze vyjádřit pomocí větších slov typicky složených ze čtyř bajtů (32 bitové slovo) nebo osmi bajtů (64 bitové slovo). Při práci s celými čísly je nutné brát v potaz, že s nimi nelze vyjádřit libovolně velké číslo a je nutné se důsledně vyvarovat možnosti podtečení nebo přetečení hodnoty. 32 bitové celé číslo bez znaménka: 0 až 4.294.967.295 32 bitové celé číslo se znaménkem: −2.147.483.648 až 2.147.483.647 64 bitové celé číslo bez znaménka: 0 až 18.446.744.073.709.551.615 64 bitové celé číslo se znaménkem: −9.223.372.036.854.775.808 až 9.223.372.036.854.775.807 C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -7Reálná čísla Reálná čísla se vyjadřují v následujícím formátu (formát s pohyblivou čárkou, angl. floating point): mantisa exponent V číslicové technice se reálná čísla nejčastěji vyjadřují ve formátu definovaném standardem IEEE 754. typ šířka mantisa exponent jednoduchá přesnost (single precision) 32 23 8 dvojnásobná přesnost (double precision) 64 52 11 ... 2 1 2 1 2 1 2 1 44332211 mmmmQ +++= m1,m2,m3 jsou bity mantisy C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -8Reálná čísla, II typ rozsah přesnost jednoduchá přesnost (single precision) ±1,18×10−38 až ±3, 4×1038 přibližně 7 desetinných míst dvojnásobná přesnost (double precision) ±2,23×10−308 až ±1,80×10308 přibližně 15 desetinných míst Speciální kombinací hodnoty mantisy a exponentu, lze vyjádřit následující speciální hodnoty: 0 kladná nula -0 záporná nula NaN not a number, např. výsledek dělení nulou +Inf kladné nekonečno (číslo je příliš velké pro vyjádření) -Inf záporné nekonečno (číslo je příliš velké pro vyjádření) Při práci s reálnými čísly je nutné dbát ohled na šíření zaokrouhlovacích chyb, v logických porovnáváních není vhodné používat operátory rovná se a nerovná se, kromě situace porovnávání s nulou. C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -9Cvičení M1.1 1. Proměnná typu signed char (bajt se znaménkem) obsahuje číslo 127. Jakou hodnotu bude mít proměnná pokud ji zvýšíme o jedničku? 2. Proměnná typu unsigned char (bajt bez znaménka) obsahuje číslo 88. Jak se číselná hodnota změní, pokud se provede posunutí bitové reprezentace čísla o jednu pozici doprava nebo doleva? Jaký matematický význam má daná operace. 3. Jaký bude výsledek součtu reálných čísel reprezentovaných v dvojnásobné přesnosti a majících hodnotu: 0,1346978.10-12 1,2312657.106 4. Co je to big-endian a little-endian? Uvedťe architektury, které daný typ endianity používají. Jaký vliv má endianita na přenos binárních dat? Společné cvičení: převod číselných hodnot z dekadické do dvojkové a hexadecimální soustavy C2115 Praktický úvod do superpočítání XII. lekce / Modul 1 -10- Závěr ➢ CPU (či jiné výpočetní jednotky, např. GPGPU) pracují s určitou numerickou přesností. ➢ V numerických výpočtech může docházet ke vzniku chyb (zaokrouhlovací chyby), které ve výsledku mohou vést k nesprávným výsledkům (předpovědím). ➢ Při návrhu výpočetních programů je proto nutné použit takové algoritmy, které buď nejsou citlivé na zaokrouhlovací chyby nebo jejich vliv značně omezují.