2. Strojová instrukce, adresování, adresní prostory. Měření výkonu počítačů. Obsah 2. Strojová instrukce, adresování, adresní prostory. Měření výkonu počítačů. ........................ 1 2. Strojová instrukce, adresování, adresní prostory. .......................................................... 2 2.1 Základní pojmy. ................................................................................................................ 2 2.1.1 Bit, šířka toku dat, slabika a slovo. ........................................................................................................ 2 2.1.2 Řadič. ..................................................................................................................................................... 2 2.1.3 Doba, fáze, strojový a instrukční cyklus, stavy WAIT a HOLD. ........................................................... 3 2.1.4 Mikrooperace, mikroinstrukce, mikroprogram a mikroprogramování. ................................................ 3 2.1.5 Strojová instrukce, pseudoinstrukce a makroinstrukce. ......................................................................... 4 2.1.6 Podprogramy otevřené a uzavřené. ....................................................................................................... 5
2.2 Adresy a adresování. ........................................................................................................ 5 2.2.1 Implicitní adresování a adresy v operačním znaku................................................................................ 5 2.2.2 Přímý operand a přímá adresa. ............................................................................................................. 6 2.2.3 Nepřímé adresy a nepřímé registrové adresování. ................................................................................ 6 2.2.4 Adresování ukazateli. ............................................................................................................................. 7 2.2.5 Adresy relativní, autorelativní, segmentové a indexové. ........................................................................ 7
2.7. Hodnocení výkonnosti počítačů ...................................................................................... 8 2.7.1 Metody měření výkonnosti ..................................................................................................................... 8 2.7.2 Instrukční mixy ....................................................................................................................................... 9 2.7.3 Zkušební úlohy ..................................................................................................................................... 11 2.7.4 Zpracování transakcí ........................................................................................................................... 15 2.7.5 Ukázka výsledků hodnocení výkonnosti ............................................................................................... 16 2.7.6 Monitorování výkonnosti počítačů ....................................................................................................... 17
2.8. Závěr.............................................................................................................................. 19 2.9. Literatura ...................................................................................................................... 19 Klíčová slova ........................................................................................................................ 19 Slovník .................................................................................................................................. 19
1
Časová náročnost kapitoly: 310 minut
2.
Strojová instrukce, adresování, adresní prostory.
Dále se pokusím vás seznámit se základními pojmy, jako jsou: Bit, šířka toku dat, slabika a slovo, řadič, doba, fáze, strojový a instrukční cyklus, stavy WAIT a HOLD. Z hlediska programování si nadefinujeme pojmy jako např. mikrooperace, mikroinstrukce, mikroprogram, mikroprogramování, strojová instrukce a další pojmy související s mikroprogramováním a adresováním. Na závěr této kapitoly si ukážeme ukázky pokročilých architektur počítačů.
2.1 Základní pojmy. Časová náročnost kapitoly: 60 minut
2.1.1 Bit, šířka toku dat, slabika a slovo. Časová náročnost kapitoly: 10 minut
-
-
Bit (binary digit) je označení pro dvojkovou číslici, která nabývá hodnot 0 nebo 1. -Šířka toku dat (šířka sběrnice) je počet bitů,které se po datové sběrnici přenášejí současně.Některé mikroprocesory pracují s různými šířkami toku dat uvnitř a navenek. Příklad. Mikroprocesor 8088 má vnitřní datovou sběrnici 16bitovou, ale s vnějším prostředím komunikuje sériově paralelně po 8 bitech. Slabika (byte) je skupina obvykle 8bitů. Slovo (word) je skupina slabik, která se v počítači zpracovává jako celek.
2.1.2 Řadič. Časová náročnost kapitoly: 10 minut
Řadič (contoller, contol unit), část procesoru, která řídí vykonávání operace a chod celého procesoru podle instrukce programu. Řadič procesoru obsahuje několik částí. Registr instrukcí-uchovává operační znak instrukce po dobu jejího vykonávání, dále dekodér instrukcí, který obsah dekóduje a generuje řídící signály pro procesor.
2
Řadiče procesorů se budují podle dvou koncepcí. 1. Koncepce - řadič je stavěn jako speciální sekvenční automat,který má obvykle pro každou skupinu podobných operací zvláštní čítač a dekóder. Je drahý a hodí se pro velmi rychlé procesory. 2. Koncepce - pro dekódování operačního znaku se používá tzv. řídící paměť, ve které jsou uloženy mikroprogramy pro řízení operací.
2.1.3 Doba, fáze, strojový a instrukční cyklus, stavy WAIT a HOLD. Časová náročnost kapitoly: 10 minut
-
Mikroprocesory pracují synchronně, jejich činnost je řízena tzv. hodinovým signálem. Doba (time period) nazýváme časový úsek mezi stejnolehlými body dvou po sobě následujících hodinových impulsů. Fáze (beat) je označení pro jeden ze stavů řadiče, kterými prochází při uskutečňování strojové instrukce. Strojový cyklus (machine cykle) představuje jednu dobu nebo častěji několik dob. Čekací stav WAIT spočívá v tom, že mikroprocesor dočasně odkládá pokračování ve strojovém cyklu (převzetí dat nebo předání dat na datovou sběrnici). Neutrální stav HOLD je odezvou mikroprocesoru na vnější požadavek, aby mikroprocesor převedl vývody datové i adresové sběrnice i některých řídících vývodů do tzv. neutrálního stavu.
2.1.4 Mikrooperace, mikroinstrukce, mikroprogram a mikroprogramování. Časová náročnost kapitoly: 10 minut
-
Mikrooperace je činnost procesoru nebo jeho logicky ohraničené části během jedné fáze (beat). Příklad. Posun dat mezi registry. - Mikroinstrukce je kódovaný příkaz pro uskutečňování mikrooperace procesorem. - Mikroinstrukce má obvykle dvě části: mikrooperační znak a adresu další mikroinstrukce. - Mikroprogramování je sestavování mikroprogramu z mikroinstrukcí podle algoritmu požadované operace.
3
2.1.5 Strojová instrukce, pseudoinstrukce a makroinstrukce. Časová náročnost kapitoly: 10 minut
-
Strojová instrukce je kódovaný příkaz k vykonání strojové operace. Úplný soubor strojových instrukcí tvoří tzv. strojový jazyk nebo strojový kód. Programování ve strojovém kódu je namáhavé a vzniklé programy jsou nepřehledné. Proto se častěji programuje v jazyce symbolických adres (assembly language). - Pseudoinstrukce (direktiva) je příkaz symbolického programovacího jazyku, který se nepřekládá do cílového programu, ale ovlivňuje překladač. - Makroinstrukce je pokyn pro překladač, aby do cílového programu zařadil předem definovanou posloupnost instrukcí, tzv. rozvoj makroinstrukce, což je vlastně otevřený podprogram.
4
2.1.6 Podprogramy otevřené a uzavřené. Časová náročnost kapitoly: 10 minut
Podprogram (subrotine) je část většího programu. Rozlišujeme dva druhy: - Otevřený podprogram je posloupnost instrukcí, která se do programu opakovaně vkládá všude, kde se požaduje vykonání příslušných operací. - Uzavřený podprogram je v programu zapsán jen jednou a řízení výpočtu se mu podle potřeby předává instrukcí volání (call). Často používané podprogramy obecného významu se označují názvy standardní podprogram nebo rutina a bývají k dispozici v knihovnách podprogramu.
2.2 Adresy a adresování. Časová náročnost kapitoly: 50 minut
-
Adresa je označení místa uložení adresovaného slova nebo jeho části. Adresy dat dělíme na: Adresy zdrojové (source), které určují místo, odkud instrukce odebírá data, určená ke zpracování nebo přesunu. Adresy cílové (destination), na které instrukce ukládá výsledky operací nebo data alespoň přesouvá.
2.2.1 Implicitní adresování a adresy v operačním znaku. Časová náročnost kapitoly: 10 minut
Pod implicitním adresováním máme na mysli takové označení místa, které buď není obsaženo v adresové části instrukce, nebo není v instrukci vůbec a vyplývá jen z typu instrukce. Teď si uvedeme tři pojetí implicitního adresování: a) V instrukci není explicitně uvedena adresa místa, o které jde. 5
b) Příklad. U mikroprocesoru 8080A instrukce ADI D8 přičítá číslo D8 k obsahu střádače. Předpokládá se, že jeden z operandů je ve střádači (1. implicitní adresa), výsledek součtu zůstane tamtéž (2. implicitní adresa), a že adresa další instrukce je uložena v čítači instrukce (3. implicitní adresa) c) Formát instrukce připouští explicitní adresu, ale v případě, že se neuvede, mikroprocesor předpokládá využití tzv. default adresy předem definované. d) Cílové nebo zdrojové místo se identifikuje čísly umístěnými v operačním znaku. Příklad. Některé instrukce se skládají z operačního znaku a přesto číselně určují místa operandu. MOV r2,r1 Přesouvá operand z registru r1 do registru r2.
2.2.2 Přímý operand a přímá adresa. Časová náročnost kapitoly: 10 minut
-
Přímý operand, nebo adresa nultého řádu je sám operand obsažený v instrukci. Příklad. ADI D8 D8 je přímý operand umístěný v instrukci. - Přímá adresa (absolutní adresa nebo adresa prvního řádu), je pořadové číslo buňky hlavní paměti. Příklad. LDA A16 - přesune do střádače obsah buňky z hlavní paměti s adresou A16. OUT A8 - předá obsah střádače na výstup s s adresou A8.
2.2.3 Nepřímé adresy a nepřímé registrové adresování. Časová náročnost kapitoly: 10 minut
-
Nepřímá adresa, nebo adresa druhého řádu je adresa, na které teprve najdeme adresu přímou.
6
-
Nepřímé registrové adresování. Instrukce s tímto adresováním obsahuje ve svém operačním znaku příznak registru či skupiny registrů, v nichž je uložena adresa přímá nebo další nepřímá adresa operandu.
2.2.4 Adresování ukazateli. Časová náročnost kapitoly: 10 minut
-
Každý procesor obsahuje speciální registry, které slouží k adresování v hlavní paměti. Jejich obsah "ukazuje" na příslušné místo, a proto se označuje ukazatel (pointer). -Prvním z nich je čítač instrukcí PC, resp. ukazatel instrukcí IP. -Druhým je ukazatel zásobníkové paměti SP.
Vedle ukazatelů-registrů se užívají i ukazatelé v paměti. Jsou to konstanty nebo proměnné uložené na definovaných místech.
2.2.5 Adresy relativní, autorelativní, segmentové a indexové. Časová náročnost kapitoly: 10 minut
-
Relativní adresa umístěna v adresové části instrukce představuje tzv. posunutí (offset, displacement), tj. údaj o relativní poloze operandu vzhledem k určitému vztažnému paměťovému místu. Adresa vztažného místa se nazývá báze nebo bázová adresa a je uložena v bázovém registru. - Autorelativní adresování. V tomto případě je bázovou adresou adresa právě vykonávané instrukce a úlohu bázového registru hraje čítač instrukcí. Autorelativní adresování se nejčastěji používá u skokových instrukcí. - Segmentové adresování. U mikroprocesoru 8086 se setkáváme s pojmem segment. Segmenty jsou souvislé, funkčně samostatné úseky programů nebo polí dat, které uchováváme ve vnější velkokapacitní paměti a jen podle potřeby je přesunujeme do hlavní paměti. Segmentací sledujeme: 1. úsporu hlavní paměti, 2. možnost dynamického přemístění jednotlivých částí programu nebo dat nezávisle na druhých.
7
-
Indexové adresování. Je to velmi užitečná modifikace relativního adresování. Je založeno na použití tzv. indexového registru, což je bázový registr upravený tak, že se po použití automaticky inkrementuje nebo dekrementuje.
-
2.7. Hodnocení výkonnosti počítačů Časová náročnost kapitoly: 110 minut
Mezi charakteristikami počítačů v jednotlivých generací uváděny též hodnoty udávající výkonnost. S těmito údaji se při popisu počítačů setkáváme velmi často, proto bude vhodné doplnit několik slov na vysvětlenou. Jako základní údaj o výkonnosti počítače se obvykle uvádí počet operací provedených za sekundu. U současných počítačů se většinou jedná o milióny operací za sekundu - ve zkratce MIPS (z angl. mega instructions per second), u starších modelů též o tisíce operací za sekundu - ve zkratce KIPS (kilo instructions per second). Místo 1000 MIPS se někdy používá GIPS (giga instructions per second) nebo v americké literatuře též BIPS (billion instructions per second), což souvisí s pro nás poněkud neobvyklým americkým názvem pro miliardu. Tyto údaje vyjadřují většinou výkonnost v oblasti operací s pevnou řádovou čárkou, což nelze zobecňovat na jiný typ operací. Pro počítače určené k výpočtům s pohyblivou řádovou čárkou se proto používá jiná jednotka výkonnosti, označovaná flops nebo FLOPS (floating-point operations per second), tj. počet operací s pohyblivou řádovou čárkou za sekundu. Obvyklými příponami se z ní pak odvozují zkratky kiloflops nebo KFLOPS (=103), megaflops nebo MFLOPS (=106), případně gigaflops nebo GFLOPS (=109 operací s pohyblivou řádovou čárkou za sekundu). V některých projektech se již začíná objevovat jednotka teraflops nebo TFLOPS (1012 operací s pohyblivou řádovou čárkou za sekundu). Vzhledem k tomu, že operace v pevné a pohyblivé řádové čárce se provádějí v různých aritmetických jednotkách (někdy dokonce v různých procesorech), jsou hodnoty výkonnosti dosahované pro pevnou a pro pohyblivou řádovou čárku obecně nezávislé, takže výkonnost pro operace s pevnou řádovou čárkou může být číselně větší nebo menší než výkonnost téhož systému pro operace s pohyblivou řádovou čárkou.
2.7.1 Metody měření výkonnosti Časová náročnost kapitoly: 20 minut
Základním požadavkem kladeným na počítačový systém je schopnost provádět zpracování informací. Míru této schopnosti označujeme jako výkonnost počítače. Metody hodnocení výkonnosti počítačů určených pro různé oblasti
8
použití se navzájem liší, protože v každé oblasti jsou na výkonnost počítače kladeny jiné požadavky. Z toho vyplývá, že výkonnost počítače nelze zhodnotit jediným číslem. Mnohem objektivnější je vyjadřovat výkonnost tzv. vektorem výkonnosti, jehož struktura se stále vyvíjí v souvislosti s měnícím se chápáním pojmu výkonnost. Jeho typické složky jsou propustnost systému, doba odezvy, stupeň využití systému, apod. Propustnost systému udává počet úloh, které je systém schopen zpracovat za jednotku času. Přesto, že takto formulovaná definice je velmi jednoduchá, je stanovení propustnosti v reálném prostředí značně obtížné, což souvisí s rozsáhlostí, rozmanitostí a časovou proměnlivostí pracovní zátěže. Nejstarší způsob hodnocení propustnosti číslicových systémů je založen na využití tzv. instrukčních mixů, což jsou seznamy nejfrekventovanějších instrukcí ohodnocených pravděpodobnostmi jejich výskytu v rámci daného typu zátěže. Instrukční mixy byly velmi populární v 60. a 70. letech, avšak postupně byly vytlačovány zkušebními úlohami, které podávají mnohem úplnější informace o schopnostech počítačů z hlediska uživatele. Přesto se o nich v dalším textu v zájmu úplnosti zmíníme. Výzkum metod měření propustnosti se soustřeďuje především na hledání takových úloh, které by byly dostatečně reprezentativní a vystihovaly pokud možno co nejpřesněji vlastnosti skutečné zátěže, jíž jsou systémy v praxi vystaveny. Takové úlohy, obvykle označované jako zkušební, nám pak dávají možnost opakovaně provádět experimenty hodnotící výkonnost různých systémů za srovnatelných podmínek a ze získaných hodnot vyvozovat závěry. Má-li na hodnocení výkonnosti navázat optimalizace provozu počítače, je účelné zjišťovat i stupeň využití jeho jednotlivých částí. V takovém případě je třeba používat tzv. monitory, které programovými nebo obvodovými prostředky sledují činnost funkčních jednotek systému a zjištěné hodnoty statisticky vyhodnocují.
2.7.2 Instrukční mixy Časová náročnost kapitoly: 20 minut
Jednou z nejstarších metod pro vyjádření výkonnosti počítače je stanovení průměrné doby pro provedení jedné instrukce. Z této průměrné doby se pak určuje průměrný počet instrukcí provedených za sekundu. Výkonnost P tedy bude dána vztahem: 1 P=
[MIPS]
Tp kde: Tp - je čas potřebný pro provedení jedné průměrné strojové instrukce v µs. Při stanovování průměrné doby provedení instrukce je třeba nejprve sestavit tabulku četnosti výskytu jednotlivých instrukcí při "běžném provozu" počítače. V této tabulce, která obvykle obsahuje jen malý počet (20 až 30) nejčastěji používaných 9
instrukcí, dostane každá instrukce přiřazenu svoji váhu ai. Tato váha vyjadřuje, s jakou pravděpodobností bude daná instrukce použita během provádění typického programu. Získaná tabulka četností instrukcí, která simuluje reálné zatížení počítače, je nazývána instrukční mix. Z vah instrukcí lze zjistit průměrný čas potřebný pro provedení jedné instrukce podle vzorce: n ∑ a it i i=1 Tp =
[s] n ∑ ai i=1
kde:
ti - je doba provádění i-té instrukce ai - je váha i-té instrukce n - je počet instrukcí zařazených do mixu.
Takto zavedené instrukční mixy mají celou řadu nevýhod. Tabulky vah instrukcí ai jsou totiž zpravidla sestavovány pro konkrétní instrukční soubor a na procesoru s odlišnou architekturou je lze implementovat jen dosti obtížně. Dále nesmíme při měření opomenout celou řadu systematických chyb vzniklých tím, že frekvence použití jednotlivých instrukcí závisí subjektivně na jednotlivých programátorech a na druhu zpracovávaných úloh. Navíc je třeba vzít v úvahu, že většina mixů byla stanovena měřením aktivity základní jednotky. Stanovené váhy se tedy budou lišit nejen podle aplikační oblasti, ale i podle souborů vstupních dat, období ve kterém byla aktivita sledována atd. Dalšími chybami, které zatěžují výpočet instrukčních mixů, jsou chybné, nepřesné nebo špatně definované prováděcí doby instrukcí. Na údaje výrobců zpravidla nelze příliš spoléhat a vlastní měření může být značně obtížné (odstínění vlivu operačního systému) nebo zatížené chybami vlivem prostředí (např. přítomností vyrovnávací paměti). Používáme-li četnost výskytu instrukcí, musíme rozlišovat mezi statickou a dynamickou četností. Statická četnost reprezentuje výskyt jednotlivých instrukcí v programu (tak jak je uložen v paměti počítače), takže ji lze poměrně snadno získat analýzou programu. Z praktického hlediska hodnocení výkonnosti nemá velký význam, neboť nemusí přesně vystihovat, kolik a jakých instrukcí procesor skutečně provedl. Dynamická četnost je frekvence instrukcí tak, jak je vykonává základní jednotka. Rozdíl mezi statickou a dynamickou četností je dán zejména existencí příkazu skoku (a s tím souvisejícími cykly a větvení programu). Rozdíl mezi statickou a dynamickou četností instrukcí můžeme posoudit na základě tab. 1.3, kde je uvedeno 8 nejfrekventovanějších instrukcí nalezených v programech pro IBM System/360. I když kromě čtení z paměti si žádná instrukce nezachovala své místo při přechodu ze statického na dynamické měření, nejsou rozdíly v naměřených hodnotách velké. Chyba způsobená použitím snadnějšího statického měření nemusí tedy ovlivnit výsledky významným způsobem. Tab. Srovnání statické a dynamické četnosti strojových instrukcí počítačů řady IBM System/360 10
Statická četnost L (čtení z paměti) ST (uložení do paměti) BC (podmíněný skok) LA (zápis adresy do reg.) SR (odečtení obsahu reg.) BAL(skok do podprogramu) SLL(log.posuv vlevo) IC (vložení znaku)
% 28,6 15,6 10,0 7,0 5,8 5,3 3,6 3,2
Dynamická četnost L BC ST C (srovnání) LA SR IC A (přičtení slova)
% 27,3 13,7 9,8 6,2 6,1 4,5 4,1 3,7
Gibsonovy mixy: Nejznámější a ve své době nejpoužívanější je tzv. Gibson mix. V roce 1965 provedl J.C. Gibson na počítači IBM 7090 měření četnosti instrukcí prováděných procesorem při vykonávání programů určených pro vědeckotechnické výpočty. Tím vznikl instrukční mix označovaný jako Gibson I, který obsahoval 29 nejpoužívanějších operací. S příchodem systémů třetí generace se změnil operační kód počítačů i způsob programování, takže bylo třeba nově sestavit i mix. Výsledkem sledování četnosti instrukcí na počítačích řady IBM System/360 byl mix Gibson III. Vzhledem k tomu, že jsou možné různé délky operandů (32 b, případně 64 b), existují dvě verze tohoto mixu: pro operandy jednoduché délky (Gibson III E) a pro operandy dvojnásobné délky (Gibson III D). Výpočet se provádí dvakrát, pro každou verzi samostatně, přičemž váhy instrukcí jsou obou případech stejné, ale liší se doby provádění instrukcí (ti). Mix GPO: V oblasti hodnocení počítačů pro hromadné zpracování dat je nejznámější mix GPOWU II (General Post Office - Work Unit II). Test byl původně vyvinut pro potřeby britského ministerstva pošt, ale časem vešel v obecnější známost. Do výpočtů výkonnosti počítače byly zahrnuty i periferní jednotky (magnetické pásky, tiskárny), instrukce celočíselného sčítání a ukládání do paměti a čtení z ní. U nás byla pro hodnocení výkonnosti počítačů zavedena norma ČSN 36 9306, která používá pro počítače v oblasti vědeckotechnických výpočtů mix Gibson III a pro plánovací a ekonomické úlohy mix GPO-WU II.
2.7.3 Zkušební úlohy Časová náročnost kapitoly: 20 minut
Zkušební úloha (anglicky benchmark), je vzorek zátěže, který má ověřit propustnost počítače v rámci určité aplikační oblasti. Hlavní výhodou zkušebních úloh je jejich komplexnost, což znamená, že se na jejich běhu nepodílí jen procesor jako u většiny instrukčních mixů, ale svůj vliv uplatní i operační systém, překladač, případně i podsystém vstupů a výstupů. Všechny tyto prvky jsou totiž velice důležité i při subjektivním vnímání výkonu. Uživatele 11
zpravidla příliš nezajímá, že má k dispozici vysoce výkonný procesor, když větší část jeho výkonu pohltí operační systém a neefektivní překladač. Zkušební úlohy lze podle způsobu jejich vzniku rozdělit v podstatě do tří základních skupin: − přirozené zkušební úlohy jsou programy převzaté z běžného provozu počítače bez jakýchkoliv úprav. Teprve dodatečně jsou použity jako zkušební úlohy. − jádra představují části programů převzatých z řešení složitějších problémů. Vznikly úpravou (zpravidla zkrácením) přirozených zkušebních úloh. − umělé zkušební úlohy vznikly pouze za účelem zjišťování výkonnosti počítačového systému. V současné době se používají převážně umělé zkušební úlohy. Whetstone: Whetstone je umělá zkušební úloha která využívá celočíselné výpočty, výpočty v pohyblivé řádové čárce (dále jen FP), transcendentní funkce, podmíněné skoky, volání procedur a indexování polí. Neodráží rysy modernějších jazyků vyšší úrovně (nepoužívá např. typ záznam nebo ukazatel). Program byl vytvořen v roce 1976 na Oxfordské univerzitě s použitím jednoho z prvních překladačů jazyka ALGOL 60 sestaveného v anglickém městě Whetstone odtud název. Byl původně zapsán v jazyku ALGOL, později i v jazycích FORTRAN a C, a je určen k měření propustnosti v oblasti vědeckotechnických výpočtů. Výsledky jsou udávány ve Whetstonech za sekundu nebo prostě jen Whetstonech (někdy zkracováno jako Whips - Whetstone instructions per second). Whetstonská zkušební úloha vycházela z analýzy 949 programů zapsaných v jazyku ALGOL, u nichž se zkoumala četnost výskytu tzv. whetstonských instrukcí. V překladači byl totiž každý zdrojový program z jazyka ALGOL nejprve převeden do mezikódu (tzv. whetstonského kódu), který pak byl prováděn interpretačním programem. Četnost těchto instrukcí byla změřena a sestavena do mixu whetstonských instrukcí. Whetstonská zkušební úloha je vytvořena tak, aby představovala asi 1 milion (přesně 963 tisíc) whetstonských instrukcí. Whetstone lze krátce charakterizovat takto: − používá velké množství FP dat a operací nad nimi. Použita je i menší část celočíselných výpočtů − lokálních proměnných je velice málo. Proto ani umístění lokálních proměnných do registrů nemá valný vliv na zjištěnou výkonnost − většina proměnných je globální, jsou to většinou skalární proměnné nebo jednorozměrná pole. Zde by mohlo být jejich umístění do registrů velmi významné − výsledný kód Whetstone (a zvláště jednotlivé cykly) je poměrně malý a mohl by se celý vejít do vyrovnávací paměti procesoru (cache). Vzhledem k tomu, že se jedná o výpočty v FP, jsou zpravidla k dispozici dvě varianty programu Whetstone: výpočty prováděné s jednoduchou a dvojitou přesností (32 b, 64 b). Celá whetstonská zkušební úloha je rozdělena do 11 programových modulů. Pomocným optimalizačním programem nastavili autoři pro každý modul takovou váhu (počet opakování), aby četnost výskytu každé whetstonské instrukce odpovídala hodnotě podle mixu whetstonských instukcí. Jako základ matematických operací byl vzat vztah:
12
X1:=(X1+X2+X3-X4)*0.5, dále transcendentní funkce typu: X:=T*arctan(2.0*sin(X)*cos(X)/(cos(X+Y)+cos(X-Y)-1.0)) a některé standardní funkce: X:=sqrt(exp(ln(x)/5.0025)) Další moduly obsahují podmíněné skoky a celočíselnou aritmetiku. Dhrystone Název zkušební úlohy Dhrystone je volen jako protiklad k programu Whetstone a je v podstatě slovní hříčkou. Program byl vytvořen v USA v roce 1984 v jazyce ADA, později byl přepsán i do jazyků C a PASCAL. Je založen na provádění "typické" sady celočíselných výpočtů, které zahrnují manipulaci s datovými typy integer, string, array a pointer. Výkon je udáván v Dhrystonech za sekundu nebo prostě v Dhrystonech. Mezi hlavní charakteristické rysy programu Dhrystone patří: − neobsahuje žádné FP operace − velké procento času je spotřebováno na operace s daty typu string a na přiřazování celých datových struktur (záznamů) − základní datové typy: integer, string, record, pointer, array − cykly obsažené v úloze Dhrystone, na rozdíl od Whetstone, mají zpravidla počet opakování pouze rovný jedné. Vliv vyrovnávací paměti procesoru by tedy měl být menší − malý výskyt globálních proměnných, většina proměnných je lokální − odráží typické programovací styly, takže by měl být překladačem optimalizovatelný obdobně jako většina běžných programů Dhrystone se soustřeďuje na oblast systémového programování a nesnaží se hodnotit počítače z hlediska numerických výpočtů nebo obchodních aplikací. Příkazů přiřazení je v programu celkem 52, z čehož 22 je přiřazení typu V1:=V2 nebo V1:=const. Průměrný počet parametrů v proceduře nebo funkci je 1,8. Nejvíce operací je prováděno s prvky typu integer (54.4%), character (19.5%) a výčtový typ (12.4%). Lokálních proměnných je 48.5%, globálních 7.9% a parametrů v procedurách 18.7%. LINPACK Nejdůležitější metodou měření výkonnosti počítačů v oblasti výpočtů s pohyblivou řádovou čárkou je zkušební úloha LINPACK, která vychází ze souboru podprogramů pro řešení soustav lineárních rovnic (odtud název). Podstatná část programu je zapsána ve FORTRANu, zjištěná výkonnost počítače se udává v jednotkách Linpack MFLOPS. Hlavními rysy úlohy LINPACK, jejímž jádrem je řešení soustavy 100 lineárních rovnic, jsou: − vysoké procento FP operací, z nichž je však užito jen několik typů. Program například nepoužívá FP dělení, a oproti Whetstone nepoužívá ani další matematické funkce jako např. exp(x).
13
− největší část doby provádění je spotřebována na opakované provádění poměrně jednoduché funkce Y[i]=Y[i]+A*X[i] . To může vést k silnému vlivu i malé instrukční vyrovnávací paměti procesoru. − zatímco jádro výpočtu je omezeno na několik instrukcí, data jsou rozprostřená ve velkém prostoru (matice 100x100) − Pro porovnávání výsledků je důležité vědět, která verze LINPACK byla použita: − single/double - výpočet je prováděn v jednoduché nebo dvojnásobné přesnosti. − rolled/unrolled (nerozvinutý/rozvinutý tvar cyklů). Rozvinutá verze obsahuje uvnitř cyklů několik příkazů (např. pro indexy i, i+1, i+2, i+3 a řídící proměnná cyklu je pak zvyšována po 4). Nerozvinutá verze má uvnitř cyklu příkaz jediný. Toto rozvinutí má vliv na výkonnost u vektorově orientovaných architektur. Norton Index Většina časopisů s tématikou osobních počítačů se zabývá i hodnocením novinek z této oblasti. Mezi nejčastěji používané ukazatele patří tzv. Norton Index (NI). Jádro zkušební úlohy má tento tvar: for j:=0 to 99 do begin a:=77; b:=a DIV 3; a:=b MUL 1234; end; kde všechny použité proměnné jsou typu integer a jsou v proceduře lokální. Z doby odezvy jádra je určen index výkonu. Charakteristické rysy programu NI jsou: − výrazná orientace na výkonnost procesoru − nejdůležitější je délka trvání instrukce DIV a MUL − není prakticky zahrnut vliv operačního systému. SPECMARK Autorům programů SPEC (System Performance Evaluation Cooperative) se většina zkušebních úloh zdála zastaralá a proto navrhli vlastní aplikační programy, které mohou být použity jako zkušební úlohy. V říjnu 1989 obsahoval soubor SPEC 10 programů v jazyce C a FORTRAN - dohromady kolem 150 000 řádků programu. Výsledky jsou udávány relativně k počítači VAX 11/780 s použitím překladače pod operačním systémem VMS. Celkový výsledek hodnocení pomocí SPEC je vypočten jako geometrický průměr 10-ti relativních výkonů. Zmíněných 10 programů lze v krátkosti popsat takto (v závorkách je uveden programovací jazyk a orientace výpočtů): − ověření rychlosti překladače jazyka C (integer) − simulátor pole PLA (C, integer) − simulátor analogového obvodu ( FORTRAN, FP) − simulace metodou Monte Carlo (FORTRAN, FP) − soubor několika numerických "jader" programů (FORTRAN, FP) − test interpretu Lisp (integer) − algoritmy řazení (C, integer) − několik algoritmů pro násobení matic (FORTRAN, FP) − řešení Maxwellových rovnic (FORTRAN, FP) − síťová analýza (možnost vektorizovat výpočet) (FORTRAN, FP) 14
2.7.4 Zpracování transakcí Časová náročnost kapitoly: 20 minut
Chceme-li hodnotit propustnost systémů pro zpracování transakcí v reálném čase (OLTP - OnLine Transaction Processing), musíme mít k dispozici metody poněkud odlišné od běžných postupů popsaných v předcházejících odstavcích. Výrobci zpravidla udávají výkon svých systémů pro zpracování transakcí v jednotkách "transakce za sekundu" (TPS). Přitom transakce je obecně jakýsi zásah do dat, uložených v paměťovém systému, na základě požadavku vloženého z terminálu. Z hlediska hodnocení výkonnosti však není definována standardní transakce a proto je třeba porovnávat údaje v TPS velice opatrně. Výkonnost systému pro zpracování transakcí silně závisí na architektuře systému, na typu vstupů a výstupů, na rychlosti komunikačního spoje a kvalitě systémového programového vybavení. Tradiční způsoby měření počítačové výkonnosti (jako Whetstone, Dhrystone či LINPACK) prakticky nelze použít, neboť se soustřeďují především na výkonnost základní jednotky. Z těchto důvodů se pokusila skupina uživatelů a obchodníků sestavit úlohu pro hodnocení výkonnosti systémů pro zpracování transakcí. Celé měření je založeno na simulaci reálného provozu bankovního systému, jednotlivé funkce pak vycházejí z běžných operací nad databází banky. Tato úloha se skládá ze tří funkcí, což jsou: 1. jednoduchá interakční transakce, která zjišťuje výkon systému pracujícího v reálném čase. 2. minidávková transakce, která aktualizuje malou skupinu záznamů a měří tak výkon vstupů a výstupů dostupný programátorům prostřednictvím jazyka COBOL 3. pomocný program, který provádí velké přesuny dat a hodnotí tak výkon, který může očekávat od systému běžný programátor. Jednotlivé funkce lze popsat takto: 1. Má dáti - dal (Debit-Credit). Bankovní terminál je propojen rozhraním X.25 s bankovním počítačem. Požadavky na zpracování jsou vstupem pro program napsaný v COBOLu, který zpracovává v databázovém systému bankovní účty a výsledek zpracování oznámí na terminálu. Ze všech transakcí musí 95% proběhnout s dobou odezvy nejvýše 1 sec. Aby byla eliminována komunikační rychlost a zpoždění, je čas odezvy definován jako interval mezi příchodem posledního bitu z komunikační linky a výstupem prvního bitu do komunikační linky. 2. Prohlížení (Scan). Minidávková transakce v COBOLu sekvenčně prochází a aktualizuje 1000 záznamů, což je typická činnost v OLTP systémech na konci každého pracovního dne. Aktualizovaný soubor je sekvenční a je složen ze 100slabikových záznamů. Protože se soubor nachází v terminálové síti, nemůže mít Scan výhradní právo přístupu do souboru. Během zpracování proto musí být použito blokování přístupu pouze k menším částem souboru. Pro možnost opravy chyb je automaticky udržován záznam o změnách ve zvláštním souboru. Scan může být napsán v COBOLu, PL/1 nebo jiném vhodném uživatelském prostředí, ale musí užívat standardní knihovny vstupu a výstupu.
15
3. Řazení (Sort) spočívá v seřazení 1 000 000 záznamů na disku. Vstupní i výstupní soubor je sekvenční, prvních 10 B každého záznamu jsou klíče, které jsou ve vstupním souboru uspořádány náhodně. Výstupem je soubor seřazený podle klíčů. Sort může použít tolik pracovních disků a tolik paměti, kolik je k dispozici a měří výkonnost systému dosažitelnou pro nejlepší programátory s použitím všech možných triků. Prověřována je architektura vstupů a výstupů počítače a jeho operační systém. Testy Scan a Sort mohou být během několika málo hodin přeneseny na jiný počítačový systém, naproti tomu Debit-Credit je obtížně vytvořitelný a ještě hůře přenositelný. Aby byly úlohy přenositelné, jsou definovány jen některé podrobnosti jako rozhraní sítě (X.25) a vlastnosti prezentační vrstvy. Databáze obsahuje 4 typy záznamů, záznamy o historii jsou 50ti slabikové, ostatní 100slabikové. Všechny datové soubory musí být možno po částech blokovat proti přístupu a změny v souborech se musejí ukládat do souboru změn. Dále se předpokládá, že každý uživatel požaduje průměrně 1 transakci za 100 sekund.
2.7.5 Ukázka výsledků hodnocení výkonnosti Časová náročnost kapitoly: 10 minut
V tabulce je uveden příklad výsledků hodnocení výkonnosti mikroprocesorových systémů pomocí tří úloh (Whetstone, Dhrystone a Norton Index) provedeného na katedře počítačů FEL ČVUT [BIN91]. Procesory jsou přitom seřazeny podle výkonu ve sloupci Dhrystone. Do tabulky byl navíc pro srovnání zařazen systém IBM 3090 model 120E, který pracuje ve Výpočetním centru ČVUT v Praze. V tabulce jsou udávány nejlepší hodnoty, které byl překladač schopen poskytnout. Všechny zkušební úlohy byly použity v jazyku PASCAL, mimo programů pro transputer T414, které byly v jazyku C. Hodnoty měřené v terminálové síti IBM 3090 udávají skutečnou výkonnost základní jednotky podle hlášení operačního systému o spotřebovaném čase. Na základě srovnání výsledků dosažených v jednotlivých sloupcích můžeme odvodit řadu informací o vlastnostech architektur použitých počítačů. K těmto závěrům se vrátíme znovu v kapitole věnované architektuře mikroprocesorových systémů. Tab. Výkonnost vybraných počítačů ve zvolených oblastech (WS=wait states, ZJ=základní jednotka) Počítač Dhry Norton Whetstone *10-3 frekv/wait single double stone index 8088 5.9 5.5 312 1.0 4.77MHz/0WS 8088+8087 113.3 100.9 312 1.0 4.77MHz/0WS 8086 13.1 634 1.8 8MHz/0WS . . . . . . . . . . . . . . . 16
80486 33MHz/1WS IBM 3090
4723.3 6451.6
6299.2
13953
615.0
16880
77.3
2.7.6 Monitorování výkonnosti počítačů Časová náročnost kapitoly: 20 minut
Cílem monitorování je zjištění skutečného chování počítače v čase prostřednictvím hodnot několika předem zvolených stavových proměnných, které se rozhodneme sledovat. Typické stavové proměnné jsou např.: stav určité funkční jednotky (procesoru, hlavní paměti, kanálu), stav spojovacího prostředku (sběrnice, telekomunikačního spoje) nebo chování uživatele (vkládá dotaz, čeká na odpověď) apod. Tyto stavy zjišťujeme pomocí tzv. monitorů. Podle způsobu realizace rozlišujeme monitory programové, obvodové a kombinované. Programový monitor je program, který z předem stanovených míst v hlavní paměti vybírá hodnoty stavových proměnných a vyhodnocuje je. Ukládání těchto hodnot na potřebná místa v paměti musí probíhat během normální činnosti počítače, tedy během provádění uživatelských programů i během funkce operačního systému. Ukládají se obvykle údaje o čase, kdy dochází k nějaké významné změně stavu, což může být např. přechod do stavu supervizoru, začátek čekání, okamžik přidělení určitého prostředku, apod. Podklady pro programový monitor lze získávat též tak, že se počítač v pravidelných intervalech zastavuje a vypisují se důležité stavové informace. Získané informace se vyhodnocují po skončení uživatelského programu. Výhodou programového monitoru je jeho snadná realizace, protože nevyžaduje žádné změny v technickém vybavení počítače. Zjevnou nevýhodou je to, že zdržuje vlastní činnost počítače a tím podává o jeho využití poněkud zkreslené informace. Navíc i sám monitor odčerpává část paměťové kapacity. Obvodový monitor je samostatný funkční blok, který je připojen k počítači a z hlediska vlastní funkce počítače představuje zcela cizí jednotku, která počítač vůbec neovlivní. Monitor se s počítačem spojuje sondami, které se připojují na signály, které chceme monitorovat. Typicky se jedná o řídicí signály sběrnic (žádost o přidělení, přiděleno), o stavové signály jednotek (aktivní, čeká), a o některé další signály určené pro styk s okolím. Zjištěné změny hodnot sledovaných signálů se obvykle zapisují do čítačů a hodnoty, které se do nich zapíší, vyhodnocuje samostatný počítač, který řídí celý monitor. Tento počítač zapisuje zjištěné hodnoty do datového souboru ve své vnitřní paměti a na daný povel je zpracovává programem. Výsledky tohoto zpracování předává obsluze prostřednictvím svých periferních zařízení. Alternativně je možno připojit monitor k počítači též jako jeho periferní zařízení, takže počítač sám může vyžádat zjištěné výsledky a zapsat je do svých vnitřních souborů, případně sdělit obsluze prostřednictvím svých periferních zařízení. Hlavní výhodou technického monitoru je jeho nezávislost na počítači, která umožňuje sledovat počítač v jeho přirozené funkci, bez jakéhokoliv vnějšího
17
ovlivňování. při klesajících cenách počítačů toto řešení zdaleka nelze považovat za nákladné. Programové řízení zajišťuje též dostatečnou přizpůsobivost měnícím se požadavkům zadavatele. Jako obvodový monitor lze použít též logický analyzátor, který naprogramujeme do režimu čítání událostí na vstupu. Jako sledované události pak vyjmenujeme přechody do důležitých stavů, kódy instrukcí, jejichž četnost chceme zjišťovat, apod. Kombinované monitory využívají pro získávání a vyhodnocování informací o provozu počítače programové a technické vybavení v takové kombinaci, která nejlépe vyhovuje povaze shromažďovaných dat. To znamená, že ty proměnné, které lze bez dodatečného zpoždění najít v paměti, shromažďuje programový monitor, zatímco informace, které lze snadněji získat z řídicích signálů počítače, snímá obvodový monitor. Měření prováděná monitorem lze shrnout do těchto tří hlavních skupin: − měření na konfiguraci − měření sledující činnost operačního systému − měření sledující činnost uživatele. Na konfiguraci počítačového systému se provádějí měření, která mají za úkol především poskytnout informaci o tom, do jaké míry je konfigurace vyvážená. To znamená, že bychom měli získat podklady pro rozhodnutí, která jednotka má být nahrazena výkonnější jednotkou, případně rozšířena, nebo která jednotka je naopak přebytečná a může být nahrazena méně výkonnou a tedy levnější jednotkou nebo vyřazena. Pro takovouto analýzu se měří např. průměrná doba obsazení jednotky některým z úkolů, doby přidělení funkční jednotky jednotlivým úkolům, čekání jednotky na obsluhu (např. na přidělení určitého prostředku), apod. U jednotlivých typů funkčních jednotek se pak tyto základní údaje doplňují některými dalšími hodnotami specifickými pro typ jednotky, např. u periferních zařízení je to specifikace doby přenosu dat a čekání, u vnějších pamětí počty otevírání a zavírání souborů apod. Měření na operačním systému poskytnou podklady pro hodnocení jednotlivých složek operačního systému. Proto se měří zejména účinnost plánovacího algoritmu, účinnost stránkovacího mechanismu, efektivnost přidělování systémových prostředků, poměr dob provádění systémových programů a uživatelských programů apod. Měření umožňující hodnotit činnost uživatelů zahrnují především sledování skladby požadavků ze strany uživatelů (počet požadavků, jejich typ a vzájemná časová shoda), doby odezvy na požadavky, míry využití systémových prostředků jednotlivými uživateli. Výsledky zpracování hodnot získaných monitorem se zobrazují buď v tabulkové podobě, nebo v zájmu přehlednosti v grafickém tvaru. Závěrem podkapitoly věnované problémům hodnocení výkonnosti počítačů je třeba znovu důrazně připomenout, že všechny dosud známé metody hodnocení jsou velmi přibližné a žádná z nich nmůže charakterizovat počítač ve všech oblastech jeho použití. Získané hodnoty lze obvykle interpretovat různými způsoby, což výrobci a zejména jejich reklamní agenti s oblibou činí. Jediným spolehlivým testem výkonnosti počítače v určitém aplikačním prostředí je proto jeho použití při řešení skutečné úlohy nebo skupiny úloh.
18
2.8. Závěr Po prostudování tohoto textu a doporučené literatury z oblastí technologií výroby polovodičových součástek, integrovaných obvodů, dále základních pojmů a pokročilých architektur počítačů byste měli uspokojivě vyřešit následující úlohy: 1. Definici a vysvětlení základních pojmů vyskytujících se ve výpočetní technice. 2. Popis jednotlivých způsobů adresace a uveďte příklady jejích použití. 3. Návrh základny konfiguraci běžného PC. 4. Porovnejte princip a význam jednotlivých instr. mixů a zkušební úlohy 5. Monitorování výkonnosti počítačů
2.9. Literatura 1. 2. 3. 4. 5. 6. 7.
Přednáška Internet Ličev L.: Architektura počítačů, skriptum FEI VŠB TUO, 1996. Ličev L.: Architektura počítačů I, skriptum FEI VŠB TUO, 1999. Ličev L.: Architektura počítačů II, skriptum FEI VŠB TUO, 1999. Ličev L., Morkes D.: Procesory - architektura, funkce, použití, Computer press, Praha, 1999. Valášek: Monolitické mikroprocesory a mikropočítače, SNTL, Praha 1989
Klíčová slova adresa bipolární bit makroinstrukce mikroinstrukce mikrooperace mikroprogram monitorování mix operand podprogram pseudoinstrukce přesahování slabika sběrnic slovo transakce řadič řetězení ukazatel Von Neuman úlohy výkonnosti zkušební
Slovník
19